summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartmists <martmists@gmail.com>2020-04-22 13:57:09 +0200
committerMartmists <martmists@gmail.com>2020-04-22 13:57:09 +0200
commit9b3107c478c9f39c17ef4171c9c5330adcb1385a (patch)
treee63d60215b5ba9405d7aeb3322873d26c5f03cc1
parentdcdf58739922de3b3bbc828f46e36b83f53c52a0 (diff)
parent5ee605688aaea7fe6b4573dc2ce5ce24cd671855 (diff)
Merge branch 'master' into os_lib
-rw-r--r--.gitignore9
-rw-r--r--.travis.yml19
-rw-r--r--CMakeLists.txt3
-rw-r--r--INSTALL.md50
-rw-r--r--Makefile121
-rw-r--r--asm/FUN_020C9C0C.s13766
-rw-r--r--asm/arm7_rom.s143
-rw-r--r--asm/arm9overlay.s5
-rw-r--r--asm/crt0.s (renamed from asm/entry.s)166
-rw-r--r--asm/filenametable.s4
-rw-r--r--asm/filesystem.s648
-rw-r--r--asm/gap1.s4
-rw-r--r--asm/gap2.s4
-rw-r--r--asm/macros/function.inc9
-rw-r--r--asm/main.s9
-rw-r--r--asm/rom1.5.s7
-rw-r--r--asm/rom2.s155
-rw-r--r--asm/rom2_2.s762
-rw-r--r--asm/rom3.s5
-rw-r--r--asm/rom_header.s44
-rw-r--r--asm/scrcmd.s24605
-rw-r--r--asm/secure.s18
-rw-r--r--asm/unk_02000E0C.s2758
-rw-r--r--asm/unk_020023C0.s8340
-rw-r--r--asm/unk_02006864.s109321
-rw-r--r--asm/unk_02038C78.s1744
-rw-r--r--asm/unk_02046030.s142185
-rw-r--r--asm/unk_10b724.s4
-rw-r--r--data/fat.s359
-rw-r--r--data/filenametable.s1160
-rw-r--r--data/icon.s6
-rw-r--r--data/title.s16
-rw-r--r--data/title/title.txtbin0 -> 50 bytes
-rw-r--r--files/FILE_102EC00_poke_shadow.narc.s29
-rw-r--r--files/FILE_102F000_poke_shadow_ofx.narc.s29
-rw-r--r--files/FILE_102F400_poke_yofs.narc.s29
-rw-r--r--files/FILE_102F800_pokegra.narc.s2992
-rw-r--r--files/FILE_10C400.s4
-rw-r--r--files/FILE_10C600.s4
-rw-r--r--files/FILE_10C800.s4
-rw-r--r--files/FILE_10CA00.s4
-rw-r--r--files/FILE_10CC00.s4
-rw-r--r--files/FILE_145400.s4
-rw-r--r--files/FILE_16B600.s4
-rw-r--r--files/FILE_184400.s4
-rw-r--r--files/FILE_187800.s4
-rw-r--r--files/FILE_1A3000.s4
-rw-r--r--files/FILE_1AD200.s4
-rw-r--r--files/FILE_1AD400.s4
-rw-r--r--files/FILE_1B6B400_trbgra.narc.s44
-rw-r--r--files/FILE_1B78200_trfgra.narc.s224
-rw-r--r--files/FILE_1C14A00_personal.narc.s529
-rw-r--r--files/FILE_1C1B000_evo.narc.s529
-rw-r--r--files/FILE_1C21600_growtbl.narc.s36
-rw-r--r--files/FILE_1C22400_pms.narc.s4
-rw-r--r--files/FILE_1C22800_wotbl.narc.s529
-rw-r--r--files/FILE_1C27200_trdata.narc.s878
-rw-r--r--files/FILE_1C2D000_trpoke.narc.s878
-rw-r--r--files/FILE_1C32600_trtbl.narc.s29
-rw-r--r--files/FILE_1C34C00_trtblofs.narc.s29
-rw-r--r--files/FILE_1C35400_b_bag_gra.narc.s32
-rw-r--r--files/FILE_1C3A400_b_plist_gra.narc.s56
-rw-r--r--files/FILE_1C4C800_batt_bg.narc.s285
-rw-r--r--files/FILE_1CE8E00_batt_obj.narc.s307
-rw-r--r--files/FILE_1D09200_vs_demo_gra.narc.s37
-rw-r--r--files/FILE_1D0E400_we.arc.s4
-rw-r--r--files/FILE_1D4C600_we_sub.narc.s78
-rw-r--r--files/FILE_1D4F800_be_seq.narc.s305
-rw-r--r--files/FILE_1D53A00_sub_seq.narc.s321
-rw-r--r--files/FILE_1D60200_waza_seq.narc.s529
-rw-r--r--files/FILE_1D61C00_wecell.narc.s65
-rw-r--r--files/FILE_1D63200_wecellanm.narc.s65
-rw-r--r--files/FILE_1D64600_wechar.narc.s65
-rw-r--r--files/FILE_1D6C800_wepltt.narc.s67
-rw-r--r--files/FILE_1D6DA00_waza_tbl.narc.s499
-rw-r--r--files/FILE_1D70800_scr_seq_release.narc.s1079
-rw-r--r--files/FILE_1DA6200_bag_gra.narc.s67
-rw-r--r--files/FILE_1DC0000_box.narc.s149
-rw-r--r--files/FILE_1DDBC00_btower.narc.s37
-rw-r--r--files/FILE_1DDFE00_config_gra.narc.s31
-rw-r--r--files/FILE_1DE0200_demo_trade.narc.s56
-rw-r--r--files/FILE_1DE7E00_dendou_demo.narc.s33
-rw-r--r--files/FILE_1DE8600_dendou_pc.narc.s31
-rw-r--r--files/FILE_1DE8A00_ending.narc.s95
-rw-r--r--files/FILE_1DFE00.s4
-rw-r--r--files/FILE_1E3A200_ev_pokeselect.narc.s46
-rw-r--r--files/FILE_1E5C800_f_note_gra.narc.s34
-rw-r--r--files/FILE_1E5F200_field_board.narc.s80
-rw-r--r--files/FILE_1E69C00_field_encounteffect.narc.s54
-rw-r--r--files/FILE_1E73400_fld_comact.narc.s32
-rw-r--r--files/FILE_1E73800_font.narc.s36
-rw-r--r--files/FILE_1E94800_fontoam.narc.s40
-rw-r--r--files/FILE_1E94E00_hiden_effect.narc.s43
-rw-r--r--files/FILE_1E9CE00_imageclip.narc.s264
-rw-r--r--files/FILE_1EDB600_mail_gra.narc.s65
-rw-r--r--files/FILE_1EF5800_menu_gra.narc.s39
-rw-r--r--files/FILE_1EFA400_mysign.narc.s38
-rw-r--r--files/FILE_1EFB600_mystery.narc.s70
-rw-r--r--files/FILE_1F03000_ntag_gra.narc.s162
-rw-r--r--files/FILE_1F30000_nutmixer.narc.s76
-rw-r--r--files/FILE_1F5C400_oekaki.narc.s37
-rw-r--r--files/FILE_1F5DA00_opening.narc.s49
-rw-r--r--files/FILE_1F64600_plist_gra.narc.s52
-rw-r--r--files/FILE_1F6E400_pmsi.narc.s54
-rw-r--r--files/FILE_1F71600_poketch.narc.s154
-rw-r--r--files/FILE_1F7FC00_poru_gra.narc.s40
-rw-r--r--files/FILE_1F86600_poruact.narc.s60
-rw-r--r--files/FILE_1F87C00_porudemo.narc.s34
-rw-r--r--files/FILE_1F8A000_pst_gra.narc.s165
-rw-r--r--files/FILE_1F9200.s4
-rw-r--r--files/FILE_1FA9200_ranking.narc.s32
-rw-r--r--files/FILE_1FAA800_record.narc.s43
-rw-r--r--files/FILE_1FB0200_shop_gra.narc.s39
-rw-r--r--files/FILE_1FB2A00_tmap_gra.narc.s58
-rw-r--r--files/FILE_1FC7A00_touch_subwindow.narc.s38
-rw-r--r--files/FILE_1FC8400_trainer_case.narc.s87
-rw-r--r--files/FILE_2000000_unionroom.narc.s36
-rw-r--r--files/FILE_2001400_waza_oshie_gra.narc.s41
-rw-r--r--files/FILE_2004400_winframe.narc.s78
-rw-r--r--files/FILE_200CE00_worldtrade.narc.s66
-rw-r--r--files/FILE_2018600_item_data.narc.s470
-rw-r--r--files/FILE_201D400_item_icon.narc.s731
-rw-r--r--files/FILE_207DE00_nuts_data.narc.s92
-rw-r--r--files/FILE_207E400_poke_icon.narc.s568
-rw-r--r--files/FILE_210B600_pokefoot.narc.s525
-rw-r--r--files/FILE_2119C00_mmodel.narc.s442
-rw-r--r--files/FILE_2242200_fldeff.narc.s157
-rw-r--r--files/FILE_225E200_ball_particle.narc.s145
-rw-r--r--files/FILE_227E00.s4
-rw-r--r--files/FILE_22ACC00_waza_particle.narc.s513
-rw-r--r--files/FILE_237400.s4
-rw-r--r--files/FILE_23BC00.s4
-rw-r--r--files/FILE_24F2600_debug_particle.narc.s30
-rw-r--r--files/FILE_24F3200_zone_event_release.narc.s540
-rw-r--r--files/FILE_2515600_d_enc_data.narc.s211
-rw-r--r--files/FILE_2528C00_p_enc_data.narc.s211
-rw-r--r--files/FILE_253C200_build_model.narc.s563
-rw-r--r--files/FILE_264200.s4
-rw-r--r--files/FILE_26B200.s4
-rw-r--r--files/FILE_2710800_build_model_matshp.dat.s4
-rw-r--r--files/FILE_2712000_map_matrix.narc.s273
-rw-r--r--files/FILE_2715000_area_data.narc.s87
-rw-r--r--files/FILE_2715400_area_build.narc.s83
-rw-r--r--files/FILE_2716800_areabm_texset.narc.s83
-rw-r--r--files/FILE_283000.s4
-rw-r--r--files/FILE_283200.s4
-rw-r--r--files/FILE_283BE00_map_tex_set.narc.s86
-rw-r--r--files/FILE_285600.s4
-rw-r--r--files/FILE_285C00.s4
-rw-r--r--files/FILE_286C00.s4
-rw-r--r--files/FILE_288600.s4
-rw-r--r--files/FILE_289000.s4
-rw-r--r--files/FILE_289600.s4
-rw-r--r--files/FILE_289E00.s4
-rw-r--r--files/FILE_28AA00.s4
-rw-r--r--files/FILE_28C200.s4
-rw-r--r--files/FILE_28CC00.s4
-rw-r--r--files/FILE_28D200.s4
-rw-r--r--files/FILE_28D800.s4
-rw-r--r--files/FILE_28DE00.s4
-rw-r--r--files/FILE_28E200.s4
-rw-r--r--files/FILE_28E800.s4
-rw-r--r--files/FILE_28F200.s4
-rw-r--r--files/FILE_290000.s4
-rw-r--r--files/FILE_290600.s4
-rw-r--r--files/FILE_291200.s4
-rw-r--r--files/FILE_292000.s4
-rw-r--r--files/FILE_292E00.s4
-rw-r--r--files/FILE_294000.s4
-rw-r--r--files/FILE_294A00.s4
-rw-r--r--files/FILE_295400.s4
-rw-r--r--files/FILE_295A00.s4
-rw-r--r--files/FILE_296400.s4
-rw-r--r--files/FILE_296800.s4
-rw-r--r--files/FILE_296EC00_move_model_list.narc.s87
-rw-r--r--files/FILE_296F200_land_data_release.narc.s606
-rw-r--r--files/FILE_297600.s4
-rw-r--r--files/FILE_298000.s4
-rw-r--r--files/FILE_298600.s4
-rw-r--r--files/FILE_298A00.s4
-rw-r--r--files/FILE_299A00.s4
-rw-r--r--files/FILE_299E00.s4
-rw-r--r--files/FILE_29C400.s4
-rw-r--r--files/FILE_29E800.s4
-rw-r--r--files/FILE_2A1A00.s4
-rw-r--r--files/FILE_2A6200.s4
-rw-r--r--files/FILE_2A8800.s4
-rw-r--r--files/FILE_2A9E00.s4
-rw-r--r--files/FILE_2ACC00.s4
-rw-r--r--files/FILE_2ADA00.s4
-rw-r--r--files/FILE_2AEC00.s4
-rw-r--r--files/FILE_2B2A00.s4
-rw-r--r--files/FILE_2B7600.s4
-rw-r--r--files/FILE_2B9400.s4
-rw-r--r--files/FILE_2BC400.s4
-rw-r--r--files/FILE_2BEC00.s4
-rw-r--r--files/FILE_2C1200.s4
-rw-r--r--files/FILE_2C2800.s4
-rw-r--r--files/FILE_2C4C00.s4
-rw-r--r--files/FILE_2C5C00.s4
-rw-r--r--files/FILE_2C9C00.s4
-rw-r--r--files/FILE_2C9E00.s4
-rw-r--r--files/FILE_2CEA00.s4
-rw-r--r--files/FILE_2CFE00.s4
-rw-r--r--files/FILE_2D5C00.s4
-rw-r--r--files/FILE_2D7C00.s4
-rw-r--r--files/FILE_2D9800.s4
-rw-r--r--files/FILE_2D9E00.s4
-rw-r--r--files/FILE_2DF200.s4
-rw-r--r--files/FILE_2E9A00.s4
-rw-r--r--files/FILE_2EF000.s4
-rw-r--r--files/FILE_2F1600.s4
-rw-r--r--files/FILE_2FFA00.s4
-rw-r--r--files/FILE_303400.s4
-rw-r--r--files/FILE_30C600.s4
-rw-r--r--files/FILE_339000_UTF16.dat.s4
-rw-r--r--files/FILE_339200_area00light.txt151
-rw-r--r--files/FILE_339200_area00light.txt.s4
-rw-r--r--files/FILE_339C00_area01light.txt151
-rw-r--r--files/FILE_339C00_area01light.txt.s4
-rw-r--r--files/FILE_33A400_area02light.txt151
-rw-r--r--files/FILE_33A400_area02light.txt.s4
-rw-r--r--files/FILE_33AE00_battle_win.NSCR.s4
-rw-r--r--files/FILE_33B800_btower_canm.resdat.s4
-rw-r--r--files/FILE_33BA00_btower_celact.cldat.s4
-rw-r--r--files/FILE_33BC00_btower_cell.resdat.s4
-rw-r--r--files/FILE_33BE00_btower_chr.resdat.s4
-rw-r--r--files/FILE_33C000_btower_pal.resdat.s4
-rw-r--r--files/FILE_33C200_cell0.NCGR.s4
-rw-r--r--files/FILE_33E400_cell0.NCLR.s4
-rw-r--r--files/FILE_33E800_clact_default.NANR.s4
-rw-r--r--files/FILE_33EA00_crystal.nsbmd.s4
-rw-r--r--files/FILE_33F800_demo_climax.narc.s48
-rw-r--r--files/FILE_3787200_contest_bg.narc.s68
-rw-r--r--files/FILE_379AE00_contest_obj.narc.s125
-rw-r--r--files/FILE_37A0C00_contest_data.narc.s43
-rw-r--r--files/FILE_37A4400_particledata.narc.s34
-rw-r--r--files/FILE_37ACA00_zukan_data.narc.s86
-rw-r--r--files/FILE_37B2400_wifi_earth.narc.s36
-rw-r--r--files/FILE_37D7800_wifi_earth_place.narc.s47
-rw-r--r--files/FILE_37D8600_titledemo.narc.s48
-rw-r--r--files/FILE_3810200_cb_data.narc.s323
-rw-r--r--files/FILE_381F000_egg_data.narc.s39
-rw-r--r--files/FILE_3821C00_egg_demo_particle.narc.s30
-rw-r--r--files/FILE_3824200_move_model_list.narc.s44
-rw-r--r--files/FILE_3824600_poke_anm.narc.s162
-rw-r--r--files/FILE_382AA00_tr_ai_seq.narc.s29
-rw-r--r--files/FILE_3835000_bm_anime.narc.s92
-rw-r--r--files/FILE_383E200_bm_anime_list.narc.s563
-rw-r--r--files/FILE_3841E00_encdata_ex.narc.s40
-rw-r--r--files/FILE_3842600_ppark.narc.s29
-rw-r--r--files/FILE_3843200_ship_demo.narc.s48
-rw-r--r--files/FILE_385A600_tv.narc.s31
-rw-r--r--files/FILE_385AA00_mapname.bin.s4
-rw-r--r--files/FILE_385CE00_pokezukan.narc.s29
-rw-r--r--files/FILE_385D400_shinzukan.narc.s29
-rw-r--r--files/FILE_385D600_pokeanm.narc.s29
-rw-r--r--files/FILE_3860E00_fld_trade.narc.s32
-rw-r--r--files/FILE_3861000_shinka_demo_particle.narc.s30
-rw-r--r--files/FILE_3863600_intro.narc.s76
-rw-r--r--files/FILE_387EA00_intro_tv.narc.s35
-rw-r--r--files/FILE_388CA00_op_demo.narc.s102
-rw-r--r--files/FILE_3923C00_syoujyou.narc.s40
-rw-r--r--files/FILE_392A200_btdpm.narc.s979
-rw-r--r--files/FILE_392FC00_btdtr.narc.s335
-rw-r--r--files/FILE_3938000_zukan_enc_diamond.narc.s4982
-rw-r--r--files/FILE_3949800_zukan_enc_pearl.narc.s4982
-rw-r--r--files/FILE_395B000_trial.narc.s36
-rw-r--r--files/FILE_3968C00_zukan.narc.s158
-rw-r--r--files/FILE_397AA00_utility.bin.s4
-rw-r--r--files/FILE_3B3000_dp_areawindow.NCGR.s4
-rw-r--r--files/FILE_3B3200_dp_areawindow.NCLR.s4
-rw-r--r--files/FILE_3B3600_dt_test_celact.txt2
-rw-r--r--files/FILE_3B3600_dt_test_celact.txt.s4
-rw-r--r--files/FILE_3B3800_dt_test_res_cell.txt3
-rw-r--r--files/FILE_3B3800_dt_test_res_cell.txt.s4
-rw-r--r--files/FILE_3B3A00_dt_test_res_cellanm.txt3
-rw-r--r--files/FILE_3B3A00_dt_test_res_cellanm.txt.s4
-rw-r--r--files/FILE_3B3C00_dt_test_res_char.txt3
-rw-r--r--files/FILE_3B3C00_dt_test_res_char.txt.s4
-rw-r--r--files/FILE_3B3E00_dt_test_res_multi.txt2
-rw-r--r--files/FILE_3B3E00_dt_test_res_multi.txt.s4
-rw-r--r--files/FILE_3B4000_dt_test_res_multianm.txt2
-rw-r--r--files/FILE_3B4000_dt_test_res_multianm.txt.s4
-rw-r--r--files/FILE_3B4200_dt_test_res_pltt.txt3
-rw-r--r--files/FILE_3B4200_dt_test_res_pltt.txt.s4
-rw-r--r--files/FILE_3B4400_dun_sea.nsbtx.s4
-rw-r--r--files/FILE_3B4A00_eoo.dat.s4
-rw-r--r--files/FILE_3FAA00_exdata.dat.s4
-rw-r--r--files/FILE_3FAC00_field_cutin.narc.s47
-rw-r--r--files/FILE_408000_fld_anime0.bin.s4
-rw-r--r--files/FILE_408200_fld_anime1.bin.s4
-rw-r--r--files/FILE_408400_fld_anime10.bin.s4
-rw-r--r--files/FILE_408600_fld_anime2.bin.s4
-rw-r--r--files/FILE_408800_fld_anime3.bin.s4
-rw-r--r--files/FILE_408A00_fld_anime4.bin.s4
-rw-r--r--files/FILE_408C00_fld_anime5.bin.s4
-rw-r--r--files/FILE_408E00_fld_anime6.bin.s4
-rw-r--r--files/FILE_409000_fld_anime7.bin.s4
-rw-r--r--files/FILE_409200_fld_anime8.bin.s4
-rw-r--r--files/FILE_409400_fld_anime9.bin.s4
-rw-r--r--files/FILE_409600_fs_kanban.nsbca.s4
-rw-r--r--files/FILE_409E00_ground0.NCGR.s4
-rw-r--r--files/FILE_412000_ground0.NCLR.s4
-rw-r--r--files/FILE_412400_ground0.NSCR.s4
-rw-r--r--files/FILE_412E00_kemu_itpconv.dat.s4
-rw-r--r--files/FILE_413000_lake_anim.nsbtx.s4
-rw-r--r--files/FILE_414200_miniasahamabe.nsbtx.s4
-rw-r--r--files/FILE_415400_miniasasea.nsbtx.s4
-rw-r--r--files/FILE_415A00_minihamabe.nsbtx.s4
-rw-r--r--files/FILE_416C00_minimum.nsbtx.s4
-rw-r--r--files/FILE_417200_minirhana.nsbtx.s4
-rw-r--r--files/FILE_417600_namein.narc.s47
-rw-r--r--files/FILE_41B600_nfont.NCGR.s4
-rw-r--r--files/FILE_423800_nfont.NCLR.s4
-rw-r--r--files/FILE_423C00_pc.nsbca.s4
-rw-r--r--files/FILE_423E00_plist_canm.resdat.s4
-rw-r--r--files/FILE_424000_plist_cell.resdat.s4
-rw-r--r--files/FILE_424200_plist_chr.resdat.s4
-rw-r--r--files/FILE_424400_plist_h.cldat.s4
-rw-r--r--files/FILE_424600_plist_pal.resdat.s4
-rw-r--r--files/FILE_424800_porucase_canm.resdat.s4
-rw-r--r--files/FILE_424A00_porucase_celact.cldat.s4
-rw-r--r--files/FILE_424C00_porucase_cell.resdat.s4
-rw-r--r--files/FILE_424E00_porucase_chr.resdat.s4
-rw-r--r--files/FILE_425000_porucase_pal.resdat.s4
-rw-r--r--files/FILE_425200_pst_canm.resdat.s4
-rw-r--r--files/FILE_425400_pst_cell.resdat.s4
-rw-r--r--files/FILE_425600_pst_chr.resdat.s4
-rw-r--r--files/FILE_425C00_pst_h.cldat.s4
-rw-r--r--files/FILE_426200_pst_pal.resdat.s4
-rw-r--r--files/FILE_426400_shop_canm.resdat.s4
-rw-r--r--files/FILE_426600_shop_cell.resdat.s4
-rw-r--r--files/FILE_426800_shop_chr.resdat.s4
-rw-r--r--files/FILE_426A00_shop_h.cldat.s4
-rw-r--r--files/FILE_426C00_shop_pal.resdat.s4
-rw-r--r--files/FILE_426E00_slot.narc.s105
-rw-r--r--files/FILE_43C800_smptm_koori.NANR.s4
-rw-r--r--files/FILE_43CA00_smptm_koori.NCER.s4
-rw-r--r--files/FILE_43CC00_smptm_koori.NCGR.s4
-rw-r--r--files/FILE_43DA00_smptm_koori.NCLR.s4
-rw-r--r--files/FILE_43DE00_smptm_nemuri.NANR.s4
-rw-r--r--files/FILE_43E000_smptm_nemuri.NCER.s4
-rw-r--r--files/FILE_43E200_smptm_nemuri.NCGR.s4
-rw-r--r--files/FILE_43E600_smptm_nemuri.NCLR.s4
-rw-r--r--files/FILE_43EA00_t3_fl_b.nsbtx.s4
-rw-r--r--files/FILE_43EE00_t3_fl_p.nsbtx.s4
-rw-r--r--files/FILE_43F200_t3_fl_r.nsbtx.s4
-rw-r--r--files/FILE_43F600_t3_fl_y.nsbtx.s4
-rw-r--r--files/FILE_43FA00_test.atr.s4
-rw-r--r--files/FILE_440200_tmap_block.dat.s4
-rw-r--r--files/FILE_441400_tmap_flags.dat.s4
-rw-r--r--files/FILE_441800_tmapn_canm.resdat.s4
-rw-r--r--files/FILE_441A00_tmapn_celact.cldat.s4
-rw-r--r--files/FILE_441C00_tmapn_celact.txt8
-rw-r--r--files/FILE_441C00_tmapn_celact.txt.s4
-rw-r--r--files/FILE_441E00_tmapn_cell.resdat.s4
-rw-r--r--files/FILE_442000_tmapn_chr.resdat.s4
-rw-r--r--files/FILE_442200_tmapn_pal.resdat.s4
-rw-r--r--files/FILE_442400_tmapn_res_canm.txt9
-rw-r--r--files/FILE_442400_tmapn_res_canm.txt.s4
-rw-r--r--files/FILE_442600_tmapn_res_cell.txt10
-rw-r--r--files/FILE_442600_tmapn_res_cell.txt.s4
-rw-r--r--files/FILE_442800_tmapn_res_chr.txt9
-rw-r--r--files/FILE_442800_tmapn_res_chr.txt.s4
-rw-r--r--files/FILE_442A00_tmapn_res_pal.txt6
-rw-r--r--files/FILE_442A00_tmapn_res_pal.txt.s4
-rw-r--r--files/FILE_442C00_tradelist.narc.s41
-rw-r--r--files/FILE_445800_trapmark.narc.s29
-rw-r--r--files/FILE_445C00_ug_anim.narc.s36
-rw-r--r--files/FILE_44BA00_ug_base_cur.nsbmd.s4
-rw-r--r--files/FILE_44C200_ug_boygirl.NCGR.s4
-rw-r--r--files/FILE_44D600_ug_boygirl.NCLR.s4
-rw-r--r--files/FILE_44DA00_ug_fossil.narc.s31
-rw-r--r--files/FILE_451A00_ug_hero.NANR.s4
-rw-r--r--files/FILE_451C00_ug_hero.NCER.s4
-rw-r--r--files/FILE_451E00_ug_hole.NANR.s4
-rw-r--r--files/FILE_452000_ug_hole.NCER.s4
-rw-r--r--files/FILE_452200_ug_hole.NCGR.s4
-rw-r--r--files/FILE_452800_ug_parts.narc.s144
-rw-r--r--files/FILE_473000_ug_radar.narc.s35
-rw-r--r--files/FILE_476A00_ug_trap.narc.s81
-rw-r--r--files/FILE_494600_ugeffect_obj_graphic.narc.s37
-rw-r--r--files/FILE_499400_uground_cell.resdat.s4
-rw-r--r--files/FILE_499600_uground_cellanm.resdat.s4
-rw-r--r--files/FILE_499800_uground_char.resdat.s4
-rw-r--r--files/FILE_499A00_uground_char2.resdat.s4
-rw-r--r--files/FILE_499C00_uground_clact.cldat.s4
-rw-r--r--files/FILE_499E00_uground_pltt.resdat.s4
-rw-r--r--files/FILE_49A000_uground_pltt2.resdat.s4
-rw-r--r--files/FILE_49A200_underg_radar.narc.s35
-rw-r--r--files/FILE_4A4600_utility.bin.s4
-rw-r--r--files/FILE_57FC00_weather_sys.narc.s87
-rw-r--r--files/FILE_58F600_wifi.ncgr.s4
-rw-r--r--files/FILE_58FA00_wifinote.narc.s40
-rw-r--r--files/FILE_593400_wifip2pmatch.narc.s39
-rw-r--r--files/FILE_597400_wm.ncgr.s4
-rw-r--r--files/FILE_597800_wm.nclr.s4
-rw-r--r--files/FILE_597C00_sound_data.sdat.s4
-rw-r--r--files/FILE_CBB200_msg.narc.s652
-rw-r--r--files/FILE_F4D400_scr_msg.narc.s44
-rw-r--r--files/FILE_F4F000_height.narc.s2004
-rw-r--r--files/FILE_F54C00_height_o.narc.s164
-rw-r--r--files/FILE_F55400_otherpoke.narc.s241
-rw-r--r--global.inc3245
-rw-r--r--graphics/icon.pngbin0 -> 377 bytes
-rw-r--r--include/global.h6
-rw-r--r--include/main.h40
-rw-r--r--include/map.h (renamed from structs/map.h)0
-rw-r--r--include/nitro/consts.h (renamed from nitro/consts.h)0
-rw-r--r--include/nitro/mmap.h (renamed from nitro/mmap.h)0
-rw-r--r--include/nitro/nitro.h (renamed from nitro/nitro.h)0
-rw-r--r--include/nitro/os.c (renamed from nitro/os.c)0
-rw-r--r--include/nitro/os.h (renamed from nitro/os.h)0
-rw-r--r--include/nitro/types.h (renamed from nitro/types.h)0
-rw-r--r--include/pokemon.h (renamed from structs/pokemon.h)0
-rw-r--r--include/script.h27
-rw-r--r--include/structs.h (renamed from structs/structs.h)0
-rw-r--r--ld_script.txt68
-rw-r--r--main.c7
-rw-r--r--pokediamond.lcf1493
-rw-r--r--src/FUN_02000DF4.c12
-rw-r--r--src/main.c110
-rw-r--r--src/script.c163
-rw-r--r--src/string_util.c153
-rw-r--r--src/sub_02000DF4.c24
-rw-r--r--tools/jsonproc/.gitignore1
-rw-r--r--tools/jsonproc/Makefile20
-rw-r--r--tools/jsonproc/inja.hpp3529
-rw-r--r--tools/jsonproc/jsonproc.cpp116
-rw-r--r--tools/jsonproc/jsonproc.h32
-rw-r--r--tools/jsonproc/nlohmann/json.hpp20842
-rw-r--r--tools/mwasmarm_patcher/.gitignore1
-rw-r--r--tools/mwasmarm_patcher/Makefile14
-rw-r--r--tools/mwasmarm_patcher/mwasmarm_patcher.c224
-rw-r--r--tools/nitrogfx/.gitignore1
-rw-r--r--tools/nitrogfx/LICENSE19
-rw-r--r--tools/nitrogfx/Makefile21
-rw-r--r--tools/nitrogfx/convert_png.c254
-rw-r--r--tools/nitrogfx/convert_png.h12
-rw-r--r--tools/nitrogfx/font.c326
-rw-r--r--tools/nitrogfx/font.h16
-rw-r--r--tools/nitrogfx/gfx.c344
-rw-r--r--tools/nitrogfx/gfx.h36
-rw-r--r--tools/nitrogfx/global.h31
-rw-r--r--tools/nitrogfx/huff.c398
-rw-r--r--tools/nitrogfx/huff.h38
-rw-r--r--tools/nitrogfx/jasc_pal.c172
-rw-r--r--tools/nitrogfx/jasc_pal.h9
-rw-r--r--tools/nitrogfx/lz.c153
-rw-r--r--tools/nitrogfx/lz.h9
-rw-r--r--tools/nitrogfx/main.c537
-rw-r--r--tools/nitrogfx/options.h24
-rw-r--r--tools/nitrogfx/rl.c149
-rw-r--r--tools/nitrogfx/rl.h9
-rw-r--r--tools/nitrogfx/util.c124
-rw-r--r--tools/nitrogfx/util.h14
-rw-r--r--undefined_syms.txt819
458 files changed, 378814 insertions, 218 deletions
diff --git a/.gitignore b/.gitignore
index f35ecba0..b6cffd40 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,5 +12,12 @@ build/**
cmake-build-debug/
# ROM
-*.nds
*.srl
+
+# Tool executables
+*.exe
+
+# Generated files
+*.4bpp
+*.lz
+*.gbapal
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 00000000..867a5198
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,19 @@
+dist: xenial
+
+language: c
+
+install:
+ - sudo apt update
+ - sudo apt install binutils-arm-none-eabi wine
+ # These files are only accessible from Travis CI IP Addresses to prevent piracy.
+ - wget http://private.martmists.com/mwccarm.zip
+ - wget http://private.martmists.com/baserom.nds
+ - unzip mwccarm.zip
+ - mv mwccarm tools
+
+script:
+ - export LM_LICENSE_FILE="$(pwd)/tools/mwccarm/license.dat"
+ - make
+
+notifications:
+ email: false
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a3b6a82e..ef9276a4 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -7,4 +7,5 @@ enable_language(ASM)
file(GLOB_RECURSE SOURCES RELATIVE ${CMAKE_SOURCE_DIR} "*.c")
-add_executable(PokeDiamond ${SOURCES}) \ No newline at end of file
+add_executable(PokeDiamond ${SOURCES})
+target_include_directories(PokeDiamond PRIVATE include)
diff --git a/INSTALL.md b/INSTALL.md
index 05073d81..1ffc5c59 100644
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -1,13 +1,53 @@
-#### 1. Copy baserom(s) into root folder
+### 1. Copy baserom(s) into root folder
-Put a clean copy of Pokemon Diamond (US) nds rom at `./baserom.us.nds`.
+Put a clean copy of Pokemon Diamond (US) nds rom at `./baserom.nds`.
-#### 2. Install MWCC compiler
+### 2. Install MWCC compiler
The build system requires the use of the Metrowerk C Compiler 2.0/base to compile matching files. We cannot distribute the correct compiler here so join the PRET discord and download the pinned mwccarm.zip zip in #pokediamond and extract it to tools/. Run each of the executables so they ask for a license.dat and provide the one in the rar (it may also ask for it when compiling). This only needs to be done once.
In the future, a GCC option will be available so MWCC is not required to build, however it is required for a matching ROM.
-#### 3. Build ROM
+### 3. Dependencies
-Run `make` to build the ROM. \ No newline at end of file
+#### Linux
+
+Building the ROM requires the following packages:
+
+* make
+* git
+* build-essentials
+* binutils-arm-none-eabi
+* wine (to run the mwcc executables)
+
+NOTE: If you are using Arch/Manjaro or Void you will only need base-devel instead of build-essentials or make or git. You will still need wine.
+
+Also, if you are using WSL on Windows, please pass NOWINE=1 when compiling, and wine is not necessary for a WSL environment.
+
+#### Windows
+
+Before following the respective guides, please install devkitARM and ensure the DEVKITPRO and DEVKITARM variables are added to bashrc such that:
+
+Msys2:
+export DEVKITPRO=C:/devkitPro
+export DEVKITARM=${DEVKITPRO}/devkitARM
+
+Cygwin:
+export DEVKITPRO=/cygdrive/c/devkitPro
+export DEVKITARM=${DEVKITPRO}/devkitARM
+
+You will still require the following packages:
+
+* make
+* git
+* build-essentials
+
+Install them using either the Cygwin package manager or using pacman on Msys2.
+
+### 4. Build ROM
+
+Run `make` to build the ROM.
+
+Windows Users:
+
+If you get an error in saving configuration settings when specifying the license file, you need to add a system environment variable called LM_LICENSE_FILE and point it to the license.dat file.
diff --git a/Makefile b/Makefile
index cb5149ba..763dd714 100644
--- a/Makefile
+++ b/Makefile
@@ -1,9 +1,38 @@
# Makefile to build Pokemon Diamond image
+.PHONY: clean tidy all default patch_mwasmarm
+
+# Try to include devkitarm if installed
+TOOLCHAIN := $(DEVKITARM)
+
+ifneq (,$(wildcard $(TOOLCHAIN)/base_tools))
+include $(TOOLCHAIN)/base_tools
+endif
+
### Default target ###
default: all
+# If you are using WSL, it is recommended you build with NOWINE=1.
+WSLENV ?= no
+ifeq ($(WSLENV),)
+NOWINE = 1
+else
+NOWINE = 0
+endif
+
+ifeq ($(OS),Windows_NT)
+EXE := .exe
+WINE :=
+else
+EXE :=
+WINE := wine
+endif
+
+ifeq ($(NOWINE),1)
+WINE :=
+endif
+
################ Target Executable and Sources ###############
BUILD_DIR := build
@@ -12,11 +41,11 @@ TARGET := pokediamond.us
ROM := $(BUILD_DIR)/$(TARGET).nds
ELF := $(BUILD_DIR)/$(TARGET).elf
-LD_SCRIPT := ld_script.txt
+LD_SCRIPT := pokediamond.lcf
# Directories containing source files
SRC_DIRS := src
-ASM_DIRS := asm
+ASM_DIRS := asm data files
C_FILES := $(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.c))
S_FILES := $(foreach dir,$(ASM_DIRS),$(wildcard $(dir)/*.s))
@@ -29,54 +58,118 @@ O_FILES := $(foreach file,$(C_FILES),$(BUILD_DIR)/$(file:.c=.o)) \
MWCCVERSION := 2.0/base
-CROSS := arm-linux-gnueabi-
+CROSS := arm-none-eabi-
-MWCCARM := tools/mwccarm/$(MWCCVERSION)/mwccarm.exe
+MWCCARM := tools/mwccarm/$(MWCCVERSION)/mwccarm.exe
+# Argh... due to EABI version shenanigans, we can't use GNU LD to link together
+# MWCC built objects and GNU built ones. mwldarm, however, doesn't care, so we
+# have to use mwldarm for now.
+# TODO: Is there a hack workaround to let us go back to GNU LD? Ideally, the
+# only dependency should be MWCCARM.
+MWLDARM := tools/mwccarm/$(MWCCVERSION)/mwldarm.exe
+MWASMARM := tools/mwccarm/$(MWCCVERSION)/mwasmarm.exe
-AS := $(CROSS)as
-CC := $(MWCCARM)
+AS := $(WINE) $(MWASMARM)
+CC := $(WINE) $(MWCCARM)
CPP := cpp -P
-LD := $(CROSS)ld
+LD := $(WINE) $(MWLDARM)
AR := $(CROSS)ar
OBJDUMP := $(CROSS)objdump
OBJCOPY := $(CROSS)objcopy
-CFLAGS = -O4,p -proc arm946e -thumb -fp soft -lang c -Cpp_exceptions off
+# ./tools/mwccarm/2.0/base/mwasmarm.exe -proc arm5te asm/arm9_thumb.s -o arm9.o
+ASFLAGS = -proc arm5te
+CFLAGS = -O4,p -proc v5te -thumb -fp soft -lang c99 -Cpp_exceptions off -ir include
+LDFLAGS = -map -nodead -w off -proc v5te -interworking -map -symtab -m _start
####################### Other Tools #########################
# DS TOOLS
TOOLS_DIR = tools
SHA1SUM = sha1sum
+JSONPROC = $(TOOLS_DIR)/jsonproc/jsonproc
+GFX = $(TOOLS_DIR)/nitrogfx/nitrogfx
+MWASMARM_PATCHER = $(TOOLS_DIR)/mwasmarm_patcher/mwasmarm_patcher$(EXE)
+
+TOOLDIRS = $(filter-out $(TOOLS_DIR)/mwccarm,$(wildcard $(TOOLS_DIR)/*))
+TOOLBASE = $(TOOLDIRS:$(TOOLS_DIR)/%=%)
+TOOLS = $(foreach tool,$(TOOLBASE),$(TOOLS_DIR)/$(tool)/$(tool)$(EXE))
######################### Targets ###########################
+infoshell = $(foreach line, $(shell $1 | sed "s/ /__SPACE__/g"), $(info $(subst __SPACE__, ,$(line))))
+
+# Build tools when building the rom
+# Disable dependency scanning for clean/tidy/tools
+ifeq (,$(filter-out all,$(MAKECMDGOALS)))
+$(call infoshell, $(MAKE) tools patch_mwasmarm)
+else
+NODEP := 1
+endif
+
+.PHONY: all clean mostlyclean tidy tools $(TOOLDIRS) patch_mwasmarm
+
+MAKEFLAGS += --no-print-directory
+
all: $(ROM)
@$(SHA1SUM) -c $(TARGET).sha1
-clean:
+clean: mostlyclean
+ make -C tools/mwasmarm_patcher clean
+
+mostlyclean: tidy
+ find . \( -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' \) -exec $(RM) {} +
+
+tidy:
$(RM) -r $(BUILD_DIR)
+tools: $(TOOLDIRS)
+
+$(TOOLDIRS):
+ @$(MAKE) -C $@
+
+$(MWASMARM): patch_mwasmarm
+
+patch_mwasmarm:
+ $(MWASMARM_PATCHER) $(MWASMARM)
+
ALL_DIRS := $(BUILD_DIR) $(addprefix $(BUILD_DIR)/,$(SRC_DIRS) $(ASM_DIRS))
$(BUILD_DIR)/%.o: %.c
$(CC) -c $(CFLAGS) -o $@ $<
$(BUILD_DIR)/%.o: %.s
- $(AS) $(ASFLAGS) -MD $(BUILD_DIR)/$*.d -o $@ $<
+ $(AS) $(ASFLAGS) $< -o $@
-$(BUILD_DIR)/$(LD_SCRIPT): $(LD_SCRIPT)
+$(BUILD_DIR)/$(LD_SCRIPT): $(LD_SCRIPT) undefined_syms.txt
$(CPP) $(VERSION_CFLAGS) -MMD -MP -MT $@ -MF $@.d -I include/ -I . -DBUILD_DIR=$(BUILD_DIR) -o $@ $<
-$(ELF): $(O_FILES) $(BUILD_DIR)/$(LD_SCRIPT) undefined_syms.txt
- $(LD) -T undefined_syms.txt -T $(BUILD_DIR)/$(LD_SCRIPT) -o $(ELF) -Map $(BUILD_DIR)/$(TARGET).map
+$(ELF): $(O_FILES) $(BUILD_DIR)/$(LD_SCRIPT)
+ $(LD) $(LDFLAGS) $(BUILD_DIR)/$(LD_SCRIPT) -o $(ELF) $(O_FILES)
$(ROM): $(ELF)
- $(OBJCOPY) -O binary $< $@
+ $(OBJCOPY) -O binary --gap-fill=0xFF --pad-to=0x04000000 $< $@
# Make sure build directory exists before compiling anything
DUMMY != mkdir -p $(ALL_DIRS)
+%.4bpp: %.png
+ $(GFX) $< $@
+
+%.gbapal: %.png
+ $(GFX) $< $@
+
+%.gbapal: %.pal
+ $(GFX) $< $@
+
+%.lz: %
+ $(GFX) $< $@
+
+%.png: ;
+%.pal: ;
+
+$(BUILD_DIR)/data/icon.o: graphics/icon.4bpp graphics/icon.gbapal
+
### Debug Print ###
print-% : ; $(info $* is a $(flavor $*) variable set to [$($*)]) @true
diff --git a/asm/FUN_020C9C0C.s b/asm/FUN_020C9C0C.s
new file mode 100644
index 00000000..b103a702
--- /dev/null
+++ b/asm/FUN_020C9C0C.s
@@ -0,0 +1,13766 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+
+
+ arm_func_start OS_WaitIrq
+OS_WaitIrq:
+ stmdb sp!, {r4-r6,lr}
+ mov r5, r0
+ mov r4, r1
+ bl OS_DisableInterrupts
+ cmp r5, #0x0
+ beq _020C9C3C
+ ldr r1, _020C9C80 ; =0x027E0000
+ mvn r2, r4
+ add r1, r1, #0x3000
+ ldr r3, [r1, #0xff8]
+ and r2, r3, r2
+ str r2, [r1, #0xff8]
+_020C9C3C:
+ bl OS_RestoreInterrupts
+ ldr r1, _020C9C80 ; =0x027E0000
+ add r0, r1, #0x3000
+ ldr r0, [r0, #0xff8]
+ ands r0, r4, r0
+ ldmneia sp!, {r4-r6,lr}
+ bxne lr
+ ldr r0, _020C9C84 ; =0x00003FF8
+ add r6, r1, r0
+ ldr r5, _020C9C88 ; =0x027E0060
+_020C9C64:
+ mov r0, r5
+ bl OS_SleepThread
+ ldr r0, [r6, #0x0]
+ ands r0, r4, r0
+ beq _020C9C64
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+ .balign 4
+_020C9C80: .word 0x027E0000
+_020C9C84: .word 0x00003FF8
+_020C9C88: .word 0x027E0060
+
+ arm_func_start OSi_IrqTimer3
+OSi_IrqTimer3: ; 0x020C9C8C
+ ldr ip, _020C9C98 ; =OSi_IrqCallback
+ mov r0, #0x7
+ bx r12
+ .balign 4
+_020C9C98: .word OSi_IrqCallback
+
+ arm_func_start OSi_IrqTimer2
+OSi_IrqTimer2: ; 0x020C9C9C
+ ldr ip, _020C9CA8 ; =OSi_IrqCallback
+ mov r0, #0x6
+ bx r12
+ .balign 4
+_020C9CA8: .word OSi_IrqCallback
+
+ arm_func_start OSi_IrqTimer1
+OSi_IrqTimer1: ; 0x020C9CAC
+ ldr ip, _020C9CB8 ; =OSi_IrqCallback
+ mov r0, #0x5
+ bx r12
+ .balign 4
+_020C9CB8: .word OSi_IrqCallback
+
+ arm_func_start OSi_IrqTimer0
+OSi_IrqTimer0: ; 0x020C9CBC
+ ldr ip, _020C9CC8 ; =OSi_IrqCallback
+ mov r0, #0x4
+ bx r12
+ .balign 4
+_020C9CC8: .word OSi_IrqCallback
+
+ arm_func_start OSi_IrqDma3
+OSi_IrqDma3: ; 0x020C9CCC
+ ldr ip, _020C9CD8 ; =OSi_IrqCallback
+ mov r0, #0x3
+ bx r12
+ .balign 4
+_020C9CD8: .word OSi_IrqCallback
+
+ arm_func_start OSi_IrqDma2
+OSi_IrqDma2: ; 0x020C9CDC
+ ldr ip, _020C9CE8 ; =OSi_IrqCallback
+ mov r0, #0x2
+ bx r12
+ .balign 4
+_020C9CE8: .word OSi_IrqCallback
+
+ arm_func_start OSi_IrqDma1
+OSi_IrqDma1: ; 0x020C9CEC
+ ldr ip, _020C9CF8 ; =OSi_IrqCallback
+ mov r0, #0x1
+ bx r12
+ .balign 4
+_020C9CF8: .word OSi_IrqCallback
+
+ arm_func_start OSi_IrqDma0
+OSi_IrqDma0: ; 0x020C9CFC
+ ldr ip, _020C9D08 ; =OSi_IrqCallback
+ mov r0, #0x0
+ bx r12
+ .balign 4
+_020C9D08: .word OSi_IrqCallback
+
+ arm_func_start OSi_IrqCallback
+OSi_IrqCallback: ; 0x020C9D0C
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r1, #0xc
+ mul r4, r0, r1
+ ldr r2, _020C9D94 ; =0x021D341C
+ ldr r3, _020C9D98 ; =0x02106818
+ mov r0, r0, lsl #0x1
+ ldr r1, [r2, r4]
+ ldrh r3, [r3, r0]
+ mov r5, #0x1
+ mov r0, #0x0
+ str r0, [r2, r4]
+ cmp r1, #0x0
+ mov r5, r5, lsl r3
+ beq _020C9D54
+ ldr r0, _020C9D9C ; =0x021D3424
+ ldr r0, [r0, r4]
+ blx r1
+_020C9D54:
+ ldr r0, _020C9DA0 ; =0x027E0000
+ ldr r1, _020C9DA4 ; =0x021D3420
+ add r0, r0, #0x3000
+ ldr r2, [r0, #0xff8]
+ orr r2, r2, r5
+ str r2, [r0, #0xff8]
+ ldr r0, [r1, r4]
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {r4-r5,lr}
+ bxne lr
+ mov r0, r5
+ bl OS_DisableIrqMask
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020C9D94: .word 0x021D341C
+_020C9D98: .word 0x02106818
+_020C9D9C: .word 0x021D3424
+_020C9DA0: .word 0x027E0000
+_020C9DA4: .word 0x021D3420
+
+ arm_func_start OS_IrqDummy
+OS_IrqDummy: ; 0x020C9DA8
+ bx lr
+
+ arm_func_start OS_SetIrqStackChecker
+OS_SetIrqStackChecker: ; 0x020C9DAC
+ ldr ip, _020C9DD0 ; =0x027E0000
+ ldr r3, _020C9DD4 ; =0xFDDB597D
+ add r0, r12, #0x3000
+ ldr r2, _020C9DD8 ; =0x7BF9DD5B
+ ldr r1, _020C9DDC ; =0x00000400
+ str r3, [r0, #0xf7c]
+ add r0, r12, #0x3f80
+ str r2, [r0, -r1]
+ bx lr
+ .balign 4
+_020C9DD0: .word 0x027E0000
+_020C9DD4: .word 0xFDDB597D
+_020C9DD8: .word 0x7BF9DD5B
+_020C9DDC: .word 0x00000400
+
+ arm_func_start OS_ResetRequestIrqMask
+OS_ResetRequestIrqMask: ; 0x020C9DE0
+ ldr ip, _020C9E0C ; =0x04000208
+ mov r1, #0x0
+ ldrh r3, [r12, #0x0]
+ ldr r2, _020C9E10 ; =0x04000214
+ strh r1, [r12, #0x0]
+ ldr r1, [r2, #0x0]
+ str r0, [r2, #0x0]
+ ldrh r0, [r12, #0x0]
+ mov r0, r1
+ strh r3, [r12, #0x0]
+ bx lr
+ .balign 4
+_020C9E0C: .word 0x04000208
+_020C9E10: .word 0x04000214
+
+ arm_func_start OS_DisableIrqMask
+OS_DisableIrqMask: ; 0x020C9E14
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr lr, _020C9E54 ; =0x04000208
+ mov r3, #0x0
+ ldrh r12, [lr, #0x0]
+ ldr r2, _020C9E58 ; =0x04000210
+ mvn r1, r0
+ strh r3, [lr, #0x0]
+ ldr r0, [r2, #0x0]
+ and r1, r0, r1
+ str r1, [r2, #0x0]
+ ldrh r1, [lr, #0x0]
+ strh r12, [lr, #0x0]
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020C9E54: .word 0x04000208
+_020C9E58: .word 0x04000210
+
+ arm_func_start OS_EnableIrqMask
+OS_EnableIrqMask: ; 0x020C9E5C
+ ldr ip, _020C9E8C ; =0x04000208
+ mov r1, #0x0
+ ldrh r3, [r12, #0x0]
+ ldr r2, _020C9E90 ; =0x04000210
+ strh r1, [r12, #0x0]
+ ldr r1, [r2, #0x0]
+ orr r0, r1, r0
+ str r0, [r2, #0x0]
+ ldrh r0, [r12, #0x0]
+ mov r0, r1
+ strh r3, [r12, #0x0]
+ bx lr
+ .balign 4
+_020C9E8C: .word 0x04000208
+_020C9E90: .word 0x04000210
+
+ arm_func_start OS_SetIrqMask
+OS_SetIrqMask: ; 0x020C9E94
+ ldr ip, _020C9EC0 ; =0x04000208
+ mov r1, #0x0
+ ldrh r3, [r12, #0x0]
+ ldr r2, _020C9EC4 ; =0x04000210
+ strh r1, [r12, #0x0]
+ ldr r1, [r2, #0x0]
+ str r0, [r2, #0x0]
+ ldrh r0, [r12, #0x0]
+ mov r0, r1
+ strh r3, [r12, #0x0]
+ bx lr
+ .balign 4
+_020C9EC0: .word 0x04000208
+_020C9EC4: .word 0x04000210
+
+ arm_func_start OSi_EnterTimerCallback
+OSi_EnterTimerCallback: ; 0x020C9EC8
+ stmdb sp!, {r4,lr}
+ mov r3, #0xc
+ mul r4, r0, r3
+ ldr ip, _020C9F08 ; =0x021D344C
+ add r0, r0, #0x3
+ mov r3, #0x1
+ mov r0, r3, lsl r0
+ ldr r3, _020C9F0C ; =0x021D3454
+ str r1, [r12, r4]
+ str r2, [r3, r4]
+ bl OS_EnableIrqMask
+ ldr r0, _020C9F10 ; =0x021D3450
+ mov r1, #0x1
+ str r1, [r0, r4]
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020C9F08: .word 0x021D344C
+_020C9F0C: .word 0x021D3454
+_020C9F10: .word 0x021D3450
+
+ arm_func_start OSi_EnterDmaCallback
+OSi_EnterDmaCallback: ; 0x020C9F14
+ stmdb sp!, {r4-r6,lr}
+ mov r3, #0xc
+ mul r6, r0, r3
+ ldr ip, _020C9F54 ; =0x021D341C
+ add r4, r0, #0x8
+ mov r5, #0x1
+ mov r0, r5, lsl r4
+ ldr r3, _020C9F58 ; =0x021D3424
+ str r1, [r12, r6]
+ str r2, [r3, r6]
+ bl OS_EnableIrqMask
+ and r1, r0, r5, lsl r4
+ ldr r0, _020C9F5C ; =0x021D3420
+ str r1, [r0, r6]
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+ .balign 4
+_020C9F54: .word 0x021D341C
+_020C9F58: .word 0x021D3424
+_020C9F5C: .word 0x021D3420
+
+ arm_func_start OS_GetIrqFunction
+OS_GetIrqFunction: ; 0x020C9F60
+ ldr r2, _020C9FE4 ; =0x027E0000
+ mov r3, #0x0
+_020C9F68:
+ ands r1, r0, #0x1
+ beq _020C9FC8
+ cmp r3, #0x8
+ blt _020C9F98
+ cmp r3, #0xb
+ bgt _020C9F98
+ sub r1, r3, #0x8
+ mov r0, #0xc
+ mul r2, r1, r0
+ ldr r0, _020C9FE8 ; =0x021D341C
+ ldr r0, [r0, r2]
+ bx lr
+_020C9F98:
+ cmp r3, #0x3
+ blt _020C9FC0
+ cmp r3, #0x6
+ bgt _020C9FC0
+ add r1, r3, #0x1
+ mov r0, #0xc
+ mul r2, r1, r0
+ ldr r0, _020C9FE8 ; =0x021D341C
+ ldr r0, [r0, r2]
+ bx lr
+_020C9FC0:
+ ldr r0, [r2, #0x0]
+ bx lr
+_020C9FC8:
+ add r3, r3, #0x1
+ cmp r3, #0x16
+ mov r0, r0, lsr #0x1
+ add r2, r2, #0x4
+ blt _020C9F68
+ mov r0, #0x0
+ bx lr
+ .balign 4
+_020C9FE4: .word 0x027E0000
+_020C9FE8: .word 0x021D341C
+
+ arm_func_start OS_SetIrqFunction
+OS_SetIrqFunction: ; 0x020C9FEC
+ stmdb sp!, {r4-r8,lr}
+ mov r8, #0x0
+ ldr lr, _020CA074 ; =0x027E0000
+ ldr r5, _020CA078 ; =0x021D341C
+ mov r6, r8
+ mov r12, r8
+ mov r3, #0x1
+ mov r2, #0xc
+_020CA00C:
+ ands r4, r0, #0x1
+ beq _020CA05C
+ mov r7, r6
+ cmp r8, #0x8
+ blt _020CA030
+ cmp r8, #0xb
+ suble r4, r8, #0x8
+ mlale r7, r4, r2, r5
+ ble _020CA04C
+_020CA030:
+ cmp r8, #0x3
+ blt _020CA048
+ cmp r8, #0x6
+ addle r4, r8, #0x1
+ mlale r7, r4, r2, r5
+ ble _020CA04C
+_020CA048:
+ str r1, [lr, r8, lsl #0x2]
+_020CA04C:
+ cmp r7, #0x0
+ strne r1, [r7, #0x0]
+ strne r12, [r7, #0x8]
+ strne r3, [r7, #0x4]
+_020CA05C:
+ add r8, r8, #0x1
+ cmp r8, #0x16
+ mov r0, r0, lsr #0x1
+ blt _020CA00C
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+ .balign 4
+_020CA074: .word 0x027E0000
+_020CA078: .word 0x021D341C
+
+ arm_func_start OS_InitIrqTable
+OS_InitIrqTable: ; 0x020CA07C
+ ldr r0, _020CA090 ; =0x027E0060
+ mov r1, #0x0
+ str r1, [r0, #0x4]
+ str r1, [r0, #0x0]
+ bx lr
+ .balign 4
+_020CA090: .word 0x027E0060
+
+ arm_func_start OS_UnlockCartridge
+OS_UnlockCartridge: ; 0x020CA094
+ ldr r1, _020CA09C ; =OS_UnlockCartridge2
+ bx r1
+ .balign 4
+_020CA09C: .word OS_UnlockCartridge2
+
+ arm_func_start OS_GetLockID
+OS_GetLockID: ; 0x020CA0A0
+ ldr r3, _020CA0F0 ; =0x027FFFB0
+ ldr r1, [r3, #0x0]
+ clz r2, r1
+ cmp r2, #0x20
+ movne r0, #0x40
+ bne _020CA0D4
+ add r3, r3, #0x4
+ ldr r1, [r3, #0x0]
+ clz r2, r1
+ cmp r2, #0x20
+ ldr r0, _020CA0F4 ; =0xFFFFFFFD
+ bxeq lr
+ mov r0, #0x60
+_020CA0D4:
+ add r0, r0, r2
+ mov r1, #0x80000000
+ mov r1, r1, lsr r2
+ ldr r2, [r3, #0x0]
+ bic r2, r2, r1
+ str r2, [r3, #0x0]
+ bx lr
+ .balign 4
+_020CA0F0: .word 0x027FFFB0
+_020CA0F4: .word 0xFFFFFFFD
+
+ arm_func_start OS_ReleaseLockID
+OS_ReleaseLockID: ; 0x020CA0F8
+ ldr r3, _020CA124 ; =0x027FFFB0
+ cmp r0, #0x60
+ addpl r3, r3, #0x4
+ subpl r0, r0, #0x60
+ submi r0, r0, #0x40
+ mov r1, #0x80000000
+ mov r1, r1, lsr r0
+ ldr r2, [r3, #0x0]
+ orr r2, r2, r1
+ str r2, [r3, #0x0]
+ bx lr
+ .balign 4
+_020CA124: .word 0x027FFFB0
+
+ arm_func_start OS_ReadOwnerOfLockWord
+OS_ReadOwnerOfLockWord: ; 0x020CA128
+ ldrh r0, [r0, #0x4]
+ bx lr
+
+ arm_func_start OSi_FreeCardBus
+OSi_FreeCardBus: ; 0x020CA130
+ ldr r1, _020CA144 ; =0x04000204
+ ldrh r0, [r1, #0x0]
+ orr r0, r0, #0x800
+ strh r0, [r1, #0x0]
+ bx lr
+ .balign 4
+_020CA144: .word 0x04000204
+
+ arm_func_start OSi_AllocateCardBus
+OSi_AllocateCardBus: ; 0x020CA148
+ ldr r1, _020CA15C ; =0x04000204
+ ldrh r0, [r1, #0x0]
+ bic r0, r0, #0x800
+ strh r0, [r1, #0x0]
+ bx lr
+ .balign 4
+_020CA15C: .word 0x04000204
+
+ arm_func_start OS_UnlockCard
+OS_UnlockCard: ; 0x020CA160
+ ldr ip, _020CA170 ; =OS_UnlockByWord
+ ldr r1, _020CA174 ; =0x027FFFE0
+ ldr r2, _020CA178 ; =OSi_FreeCardBus
+ bx r12
+ .balign 4
+_020CA170: .word OS_UnlockByWord
+_020CA174: .word 0x027FFFE0
+_020CA178: .word OSi_FreeCardBus
+
+ arm_func_start OS_TryLockCard
+OS_TryLockCard: ; 0x020CA17C
+ ldr ip, _020CA18C ; =OS_TryLockByWord
+ ldr r1, _020CA190 ; =0x027FFFE0
+ ldr r2, _020CA194 ; =OSi_AllocateCardBus
+ bx r12
+ .balign 4
+_020CA18C: .word OS_TryLockByWord
+_020CA190: .word 0x027FFFE0
+_020CA194: .word OSi_AllocateCardBus
+
+ arm_func_start OSi_FreeCartridgeBus
+OSi_FreeCartridgeBus: ; 0x020CA198
+ ldr r1, _020CA1AC ; =0x04000204
+ ldrh r0, [r1, #0x0]
+ orr r0, r0, #0x80
+ strh r0, [r1, #0x0]
+ bx lr
+ .balign 4
+_020CA1AC: .word 0x04000204
+
+ arm_func_start OSi_AllocateCartridgeBus
+OSi_AllocateCartridgeBus: ; 0x020CA1B0
+ ldr r1, _020CA1C4 ; =0x04000204
+ ldrh r0, [r1, #0x0]
+ bic r0, r0, #0x80
+ strh r0, [r1, #0x0]
+ bx lr
+ .balign 4
+_020CA1C4: .word 0x04000204
+
+ arm_func_start OS_TryLockCartridge
+OS_TryLockCartridge: ; 0x020CA1C8
+ ldr ip, _020CA1DC ; =OSi_DoTryLockByWord
+ ldr r1, _020CA1E0 ; =0x027FFFE8
+ ldr r2, _020CA1E4 ; =OSi_AllocateCartridgeBus
+ mov r3, #0x1
+ bx r12
+ .balign 4
+_020CA1DC: .word OSi_DoTryLockByWord
+_020CA1E0: .word 0x027FFFE8
+_020CA1E4: .word OSi_AllocateCartridgeBus
+
+ arm_func_start OS_UnlockCartridge2
+OS_UnlockCartridge2: ; 0x020CA1E8
+ ldr ip, _020CA1FC ; =FUN_020CA2B8
+ ldr r1, _020CA200 ; =0x027FFFE8
+ ldr r2, _020CA204 ; =OSi_FreeCartridgeBus
+ mov r3, #0x1
+ bx r12
+ .balign 4
+_020CA1FC: .word FUN_020CA2B8
+_020CA200: .word 0x027FFFE8
+_020CA204: .word OSi_FreeCartridgeBus
+
+ arm_func_start OS_LockCartridge
+OS_LockCartridge: ; 0x020CA208
+ ldr ip, _020CA21C ; =FUN_020CA358
+ ldr r1, _020CA220 ; =0x027FFFE8
+ ldr r2, _020CA224 ; =OSi_AllocateCartridgeBus
+ mov r3, #0x1
+ bx r12
+ .balign 4
+_020CA21C: .word FUN_020CA358
+_020CA220: .word 0x027FFFE8
+_020CA224: .word OSi_AllocateCartridgeBus
+
+ arm_func_start OSi_DoTryLockByWord
+OSi_DoTryLockByWord:
+ stmdb sp!, {r4-r9,lr}
+ sub sp, sp, #0x4
+ movs r6, r3
+ mov r9, r0
+ mov r8, r1
+ mov r7, r2
+ beq _020CA250
+ bl OS_DisableInterrupts_IrqAndFiq
+ mov r5, r0
+ b _020CA258
+_020CA250:
+ bl OS_DisableInterrupts
+ mov r5, r0
+_020CA258:
+ mov r0, r9
+ mov r1, r8
+ bl MI_SwapWord
+ movs r4, r0
+ bne _020CA27C
+ cmp r7, #0x0
+ beq _020CA278
+ blx r7
+_020CA278:
+ strh r9, [r8, #0x4]
+_020CA27C:
+ cmp r6, #0x0
+ beq _020CA290
+ mov r0, r5
+ bl OS_RestoreInterrupts_IrqAndFiq
+ b _020CA298
+_020CA290:
+ mov r0, r5
+ bl OS_RestoreInterrupts
+_020CA298:
+ mov r0, r4
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r9,lr}
+ bx lr
+
+ arm_func_start OS_UnlockByWord
+OS_UnlockByWord: ; 0x020CA2A8
+ ldr ip, _020CA2B4 ; =FUN_020CA2B8
+ mov r3, #0x0
+ bx r12
+ .balign 4
+_020CA2B4: .word FUN_020CA2B8
+
+ arm_func_start FUN_020CA2B8
+FUN_020CA2B8: ; 0x020CA2B8
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r7, r1
+ ldrh r1, [r7, #0x4]
+ mov r6, r2
+ mov r5, r3
+ cmp r0, r1
+ addne sp, sp, #0x4
+ mvnne r0, #0x1
+ ldmneia sp!, {r4-r7,lr}
+ bxne lr
+ cmp r5, #0x0
+ beq _020CA2F8
+ bl OS_DisableInterrupts_IrqAndFiq
+ mov r4, r0
+ b _020CA300
+_020CA2F8:
+ bl OS_DisableInterrupts
+ mov r4, r0
+_020CA300:
+ mov r0, #0x0
+ strh r0, [r7, #0x4]
+ cmp r6, #0x0
+ beq _020CA314
+ blx r6
+_020CA314:
+ mov r0, #0x0
+ str r0, [r7, #0x0]
+ cmp r5, #0x0
+ beq _020CA330
+ mov r0, r4
+ bl OS_RestoreInterrupts_IrqAndFiq
+ b _020CA338
+_020CA330:
+ mov r0, r4
+ bl OS_RestoreInterrupts
+_020CA338:
+ mov r0, #0x0
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+
+ arm_func_start OS_TryLockByWord
+OS_TryLockByWord: ; 0x020CA348
+ ldr ip, _020CA354 ; =FUN_020CA358
+ mov r3, #0x0
+ bx r12
+ .balign 4
+_020CA354: .word FUN_020CA358
+
+ arm_func_start FUN_020CA358
+FUN_020CA358: ; 0x020CA358
+ stmdb sp!, {r4-r8,lr}
+ mov r8, r0
+ mov r7, r1
+ mov r6, r2
+ mov r5, r3
+ bl OSi_DoTryLockByWord
+ cmp r0, #0x0
+ ldmleia sp!, {r4-r8,lr}
+ bxle lr
+ mov r4, #0x400
+_020CA380:
+ mov r0, r4
+ blx FUN_020005F2
+ mov r0, r8
+ mov r1, r7
+ mov r2, r6
+ mov r3, r5
+ bl OSi_DoTryLockByWord
+ cmp r0, #0x0
+ bgt _020CA380
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+
+ arm_func_start OS_InitLock
+OS_InitLock: ; 0x020CA3AC
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ ldr r0, _020CA484 ; =0x021D347C
+ ldr r1, [r0, #0x0]
+ cmp r1, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {r4-r5,lr}
+ bxne lr
+ mov r2, #0x1
+ ldr r1, _020CA488 ; =0x027FFFF0
+ str r2, [r0, #0x0]
+ mov r2, #0x0
+ mov r0, #0x7e
+ str r2, [r1, #0x0]
+ bl OS_TryLockByWord
+ ldr r5, _020CA488 ; =0x027FFFF0
+ ldrh r0, [r5, #0x6]
+ cmp r0, #0x0
+ beq _020CA410
+ mov r4, #0x400
+_020CA3FC:
+ mov r0, r4
+ blx FUN_020005F2
+ ldrh r0, [r5, #0x6]
+ cmp r0, #0x0
+ bne _020CA3FC
+_020CA410:
+ ldr r2, _020CA48C ; =0x027FFFB0
+ mvn r12, #0x0
+ mov r0, #0x10000
+ ldr r3, _020CA490 ; =0x027FFFB4
+ ldr r1, _020CA494 ; =0x027FFFC0
+ str r12, [r2, #0x0]
+ rsb r12, r0, #0x0
+ mov r0, #0x0
+ mov r2, #0x28
+ str r12, [r3, #0x0]
+ bl MIi_CpuClear32
+ ldr ip, _020CA498 ; =0x04000204
+ ldr r1, _020CA488 ; =0x027FFFF0
+ ldrh r3, [r12, #0x0]
+ mov r0, #0x7e
+ mov r2, #0x0
+ orr r3, r3, #0x800
+ strh r3, [r12, #0x0]
+ ldrh r3, [r12, #0x0]
+ orr r3, r3, #0x80
+ strh r3, [r12, #0x0]
+ bl OS_UnlockByWord
+ ldr r1, _020CA488 ; =0x027FFFF0
+ mov r0, #0x7f
+ mov r2, #0x0
+ bl OS_TryLockByWord
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020CA484: .word 0x021D347C
+_020CA488: .word 0x027FFFF0
+_020CA48C: .word 0x027FFFB0
+_020CA490: .word 0x027FFFB4
+_020CA494: .word 0x027FFFC0
+_020CA498: .word 0x04000204
+
+ arm_func_start OS_VSNPrintf
+OS_VSNPrintf: ; 0x020CA49C
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x64
+ mov r9, r2
+ str r1, [sp, #0x54]
+ str r0, [sp, #0x5c]
+ str r0, [sp, #0x58]
+ ldrsb r0, [r9, #0x0]
+ str r1, [sp, #0x0]
+ mov r11, r3
+ cmp r0, #0x0
+ beq _020CAD18
+ mov r0, #0xa
+ str r0, [sp, #0xc]
+ mov r0, #0x0
+ str r0, [sp, #0x4]
+ mov r0, #0x20
+ str r0, [sp, #0x1c]
+ mov r0, #0x30
+ str r0, [sp, #0x20]
+ mvn r0, #0x0
+ str r0, [sp, #0x8]
+ mov r0, #0x57
+ str r0, [sp, #0x10]
+ mov r0, #0x8
+ str r0, [sp, #0x14]
+ mov r0, #0x37
+ str r0, [sp, #0x18]
+ mov r0, #0x10
+ str r0, [sp, #0x24]
+ mov r0, #0x1
+ str r0, [sp, #0x28]
+ mov r0, #0x2b
+ str r0, [sp, #0x34]
+ mov r0, #0x2d
+ str r0, [sp, #0x30]
+ mov r0, #0x2
+ str r0, [sp, #0x2c]
+_020CA530:
+ ldrsb r1, [r9, #0x0]
+ and r0, r1, #0xff
+ eor r0, r0, #0x20
+ sub r0, r0, #0xa1
+ cmp r0, #0x3c
+ bhs _020CA56C
+ add r0, sp, #0x54
+ bl string_put_char
+ ldrsb r1, [r9, #0x1]!
+ cmp r1, #0x0
+ beq _020CAD0C
+ add r0, sp, #0x54
+ add r9, r9, #0x1
+ bl string_put_char
+ b _020CAD0C
+_020CA56C:
+ cmp r1, #0x25
+ beq _020CA584
+ add r0, sp, #0x54
+ add r9, r9, #0x1
+ bl string_put_char
+ b _020CAD0C
+_020CA584:
+ ldr r6, [sp, #0x4]
+ ldr r5, [sp, #0x8]
+ ldr r2, [sp, #0xc]
+ ldr r0, [sp, #0x10]
+ mov r10, r6
+ mov r3, r9
+_020CA59C:
+ ldrsb r4, [r9, #0x1]!
+ cmp r4, #0x20
+ bgt _020CA5B4
+ cmp r4, #0x20
+ beq _020CA5F4
+ b _020CA60C
+_020CA5B4:
+ cmp r4, #0x30
+ bgt _020CA60C
+ cmp r4, #0x2b
+ blt _020CA60C
+ cmp r4, #0x2b
+ beq _020CA5E0
+ cmp r4, #0x2d
+ beq _020CA5FC
+ cmp r4, #0x30
+ beq _020CA604
+ b _020CA60C
+_020CA5E0:
+ ldrsb r1, [r9, #-0x1]
+ cmp r1, #0x20
+ bne _020CA60C
+ orr r6, r6, #0x2
+ b _020CA59C
+_020CA5F4:
+ orr r6, r6, #0x1
+ b _020CA59C
+_020CA5FC:
+ orr r6, r6, #0x8
+ b _020CA59C
+_020CA604:
+ orr r6, r6, #0x10
+ b _020CA59C
+_020CA60C:
+ cmp r4, #0x2a
+ bne _020CA640
+ add r11, r11, #0x4
+ ldr r10, [r11, #-0x4]
+ add r9, r9, #0x1
+ cmp r10, #0x0
+ rsblt r10, r10, #0x0
+ orrlt r6, r6, #0x8
+ b _020CA654
+_020CA630:
+ ldrsb r4, [r9], #0x1
+ mov r1, #0xa
+ mla r1, r10, r1, r4
+ sub r10, r1, #0x30
+_020CA640:
+ ldrsb r1, [r9, #0x0]
+ cmp r1, #0x30
+ blt _020CA654
+ cmp r1, #0x39
+ ble _020CA630
+_020CA654:
+ ldrsb r1, [r9, #0x0]
+ cmp r1, #0x2e
+ bne _020CA6AC
+ ldrsb r1, [r9, #0x1]!
+ ldr r5, [sp, #0x4]
+ cmp r1, #0x2a
+ bne _020CA698
+ add r11, r11, #0x4
+ ldr r5, [r11, #-0x4]
+ add r9, r9, #0x1
+ cmp r5, #0x0
+ ldrlt r5, [sp, #0x8]
+ b _020CA6AC
+_020CA688:
+ ldrsb r4, [r9], #0x1
+ mov r1, #0xa
+ mla r1, r5, r1, r4
+ sub r5, r1, #0x30
+_020CA698:
+ ldrsb r1, [r9, #0x0]
+ cmp r1, #0x30
+ blt _020CA6AC
+ cmp r1, #0x39
+ ble _020CA688
+_020CA6AC:
+ ldrsb r1, [r9, #0x0]
+ cmp r1, #0x68
+ beq _020CA6C4
+ cmp r1, #0x6c
+ beq _020CA6DC
+ b _020CA6F0
+_020CA6C4:
+ ldrsb r1, [r9, #0x1]!
+ cmp r1, #0x68
+ orrne r6, r6, #0x40
+ addeq r9, r9, #0x1
+ orreq r6, r6, #0x100
+ b _020CA6F0
+_020CA6DC:
+ ldrsb r1, [r9, #0x1]!
+ cmp r1, #0x6c
+ orrne r6, r6, #0x20
+ addeq r9, r9, #0x1
+ orreq r6, r6, #0x80
+_020CA6F0:
+ ldrsb r1, [r9, #0x0]
+ cmp r1, #0x69
+ bgt _020CA740
+ cmp r1, #0x63
+ blt _020CA720
+ cmp r1, #0x63
+ beq _020CA7B4
+ cmp r1, #0x64
+ beq _020CA96C
+ cmp r1, #0x69
+ beq _020CA96C
+ b _020CA950
+_020CA720:
+ cmp r1, #0x25
+ bgt _020CA734
+ cmp r1, #0x25
+ beq _020CA934
+ b _020CA950
+_020CA734:
+ cmp r1, #0x58
+ beq _020CA7A0
+ b _020CA950
+_020CA740:
+ cmp r1, #0x6e
+ bgt _020CA754
+ cmp r1, #0x6e
+ beq _020CA8DC
+ b _020CA950
+_020CA754:
+ sub r1, r1, #0x6f
+ cmp r1, #0x9
+ addls pc, pc, r1, lsl #0x2
+ b _020CA950
+_020CA764:
+ b _020CA78C
+ b _020CA7A8
+ b _020CA950
+ b _020CA950
+ b _020CA828
+ b _020CA950
+ b _020CA798
+ b _020CA950
+ b _020CA950
+ b _020CA964
+_020CA78C:
+ ldr r2, [sp, #0x14]
+ orr r6, r6, #0x1000
+ b _020CA96C
+_020CA798:
+ orr r6, r6, #0x1000
+ b _020CA96C
+_020CA7A0:
+ ldr r0, [sp, #0x18]
+ b _020CA964
+_020CA7A8:
+ orr r6, r6, #0x4
+ ldr r5, [sp, #0x14]
+ b _020CA964
+_020CA7B4:
+ cmp r5, #0x0
+ bge _020CA950
+ ands r0, r6, #0x8
+ add r11, r11, #0x4
+ ldr r4, [r11, #-0x4]
+ beq _020CA7F0
+ mov r0, r4, lsl #0x18
+ mov r1, r0, asr #0x18
+ add r0, sp, #0x54
+ bl string_put_char
+ ldr r1, [sp, #0x1c]
+ sub r2, r10, #0x1
+ add r0, sp, #0x54
+ bl string_fill_char
+ b _020CA820
+_020CA7F0:
+ ands r0, r6, #0x10
+ ldrne r0, [sp, #0x20]
+ sub r2, r10, #0x1
+ ldreq r0, [sp, #0x1c]
+ mov r0, r0, lsl #0x18
+ mov r1, r0, asr #0x18
+ add r0, sp, #0x54
+ bl string_fill_char
+ mov r0, r4, lsl #0x18
+ mov r1, r0, asr #0x18
+ add r0, sp, #0x54
+ bl string_put_char
+_020CA820:
+ add r9, r9, #0x1
+ b _020CAD0C
+_020CA828:
+ add fp, fp, #0x4
+ cmp r5, #0x0
+ ldr r7, [sp, #0x4]
+ ldr r4, [fp, #-0x4]
+ bge _020CA860
+ ldrsb r0, [r4]
+ cmp r0, #0x0
+ beq _020CA874
+_020CA848:
+ add r7, r7, #0x1
+ ldrsb r0, [r4, r7]
+ cmp r0, #0x0
+ bne _020CA848
+ b _020CA874
+_020CA85C:
+ add r7, r7, #0x1
+_020CA860:
+ cmp r7, r5
+ bge _020CA874
+ ldrsb r0, [r4, r7]
+ cmp r0, #0x0
+ bne _020CA85C
+_020CA874:
+ ands r0, r6, #0x8
+ sub sl, sl, r7
+ beq _020CA8A4
+ mov r1, r4
+ mov r2, r7
+ add r0, sp, #0x54
+ bl string_put_string
+ ldr r1, [sp, #0x1C]
+ mov r2, sl
+ add r0, sp, #0x54
+ bl string_fill_char
+ b _020CA8D4
+_020CA8A4:
+ ands r0, r6, #0x10
+ ldrne r0, [sp, #0x20]
+ mov r2, sl
+ ldreq r0, [sp, #0x1C]
+ mov r0, r0, lsl #0x18
+ mov r1, r0, asr #0x18
+ add r0, sp, #0x54
+ bl string_fill_char
+ mov r1, r4
+ mov r2, r7
+ add r0, sp, #0x54
+ bl string_put_string
+_020CA8D4:
+ add r9, r9, #0x1
+ b _020CAD0C
+_020CA8DC:
+ ands r0, r6, #0x100
+ ldr r1, [sp, #0x58]
+ ldr r0, [sp, #0x5c]
+ sub r2, r1, r0
+ bne _020CA92C
+ ands r0, r6, #0x40
+ addne r11, r11, #0x4
+ ldrne r0, [r11, #-0x4]
+ strneh r2, [r0, #0x0]
+ bne _020CA92C
+ ands r0, r6, #0x80
+ addeq r11, r11, #0x4
+ ldreq r0, [r11, #-0x4]
+ streq r2, [r0, #0x0]
+ beq _020CA92C
+ add r11, r11, #0x4
+ ldr r0, [r11, #-0x4]
+ mov r1, r2, asr #0x1f
+ str r2, [r0, #0x0]
+ str r1, [r0, #0x4]
+_020CA92C:
+ add r9, r9, #0x1
+ b _020CAD0C
+_020CA934:
+ add r0, r3, #0x1
+ cmp r0, r9
+ bne _020CA950
+ add r0, sp, #0x54
+ add r9, r9, #0x1
+ bl string_put_char
+ b _020CAD0C
+_020CA950:
+ add r0, sp, #0x54
+ mov r1, r3
+ sub r2, r9, r3
+ bl string_put_string
+ b _020CAD0C
+_020CA964:
+ ldr r2, [sp, #0x24]
+ orr r6, r6, #0x1000
+_020CA96C:
+ ands r1, r6, #0x8
+ bicne r6, r6, #0x10
+ cmp r5, #0x0
+ bicge r6, r6, #0x10
+ ldrlt r5, [sp, #0x28]
+ ldr r7, [sp, #0x4]
+ ands r1, r6, #0x1000
+ beq _020CAA20
+ ands r1, r6, #0x100
+ addne r11, r11, #0x4
+ ldrneb r4, [r11, #-0x4]
+ movne r1, #0x0
+ bne _020CA9D0
+ ands r1, r6, #0x40
+ addne r11, r11, #0x4
+ ldrneh r4, [r11, #-0x4]
+ movne r1, #0x0
+ bne _020CA9D0
+ ands r1, r6, #0x80
+ addne r11, r11, #0x8
+ ldrne r1, [r11, #-0x4]
+ ldrne r4, [r11, #-0x8]
+ addeq r11, r11, #0x4
+ ldreq r4, [r11, #-0x4]
+ moveq r1, #0x0
+_020CA9D0:
+ bic r6, r6, #0x3
+ ands r3, r6, #0x4
+ beq _020CAAD8
+ cmp r2, #0x10
+ bne _020CAA0C
+ mov r3, #0x0
+ cmp r1, r3
+ cmpeq r4, r3
+ beq _020CAAD8
+ ldr r3, [sp, #0x20]
+ ldr r7, [sp, #0x2c]
+ strb r3, [sp, #0x39]
+ add r3, r0, #0x21
+ strb r3, [sp, #0x38]
+ b _020CAAD8
+_020CAA0C:
+ cmp r2, #0x8
+ ldreq r3, [sp, #0x20]
+ ldreq r7, [sp, #0x28]
+ streqb r3, [sp, #0x38]
+ b _020CAAD8
+_020CAA20:
+ ands r1, r6, #0x100
+ addne r11, r11, #0x4
+ ldrnesb r4, [r11, #-0x4]
+ movne r1, r4, asr #0x1f
+ bne _020CAA64
+ ands r1, r6, #0x40
+ addne r11, r11, #0x4
+ ldrnesh r4, [r11, #-0x4]
+ movne r1, r4, asr #0x1f
+ bne _020CAA64
+ ands r1, r6, #0x80
+ addne r11, r11, #0x8
+ ldrne r4, [r11, #-0x8]
+ ldrne r1, [r11, #-0x4]
+ addeq r11, r11, #0x4
+ ldreq r4, [r11, #-0x4]
+ moveq r1, r4, asr #0x1f
+_020CAA64:
+ mov r3, #0x0
+ and r8, r3, #0x0
+ cmp r8, r3
+ and r8, r1, #0x80000000
+ cmpeq r8, r3
+ beq _020CAAA0
+ ldr r7, [sp, #0x30]
+ mvn r4, r4
+ strb r7, [sp, #0x38]
+ mvn r7, r1
+ mov r1, #0x1
+ adds r4, r4, r1
+ adc r1, r7, r3
+ ldr r7, [sp, #0x28]
+ b _020CAAD8
+_020CAAA0:
+ cmp r1, r3
+ cmpeq r4, r3
+ bne _020CAAB4
+ cmp r5, #0x0
+ beq _020CAAD8
+_020CAAB4:
+ ands r3, r6, #0x2
+ ldrne r3, [sp, #0x34]
+ ldrne r7, [sp, #0x28]
+ strneb r3, [sp, #0x38]
+ bne _020CAAD8
+ ands r3, r6, #0x1
+ ldrne r3, [sp, #0x1c]
+ ldrne r7, [sp, #0x28]
+ strneb r3, [sp, #0x38]
+_020CAAD8:
+ cmp r2, #0x8
+ ldr r8, [sp, #0x4]
+ beq _020CAAF8
+ cmp r2, #0xa
+ beq _020CAB40
+ cmp r2, #0x10
+ beq _020CABDC
+ b _020CAC28
+_020CAAF8:
+ mov r0, #0x0
+ cmp r1, r0
+ cmpeq r4, r0
+ beq _020CAC28
+_020CAB08:
+ and r0, r4, #0x7
+ add r3, r0, #0x30
+ add r0, sp, #0x3a
+ strb r3, [r0, r8]
+ mov r4, r4, lsr #0x3
+ mov r2, #0x0
+ mov r0, r1, lsr #0x3
+ orr r4, r4, r1, lsl #0x1d
+ cmp r0, r2
+ cmpeq r4, r2
+ mov r1, r0
+ add r8, r8, #0x1
+ bne _020CAB08
+ b _020CAC28
+_020CAB40:
+ mov r0, #0x0
+ cmp r0, r0
+ cmpeq r1, r0
+ bne _020CAB8C
+ cmp r4, #0x0
+ beq _020CAC28
+_020CAB58:
+ ldr r0, _020CAD60 ; =0xCCCCCCCD
+ umull r1, r0, r4, r0
+ movs r0, r0, lsr #0x3
+ mov r1, #0xa
+ mul r1, r0, r1
+ sub r1, r4, r1
+ mov r4, r0
+ add r1, r1, #0x30
+ add r0, sp, #0x3a
+ strb r1, [r0, r8]
+ add r8, r8, #0x1
+ bne _020CAB58
+ b _020CAC28
+_020CAB8C:
+ cmp r1, r0
+ cmpeq r4, r0
+ beq _020CAC28
+_020CAB98:
+ ldr r2, [sp, #0xc]
+ ldr r3, [sp, #0x4]
+ mov r0, r4
+ bl _ll_udiv
+ mov r3, #0xa
+ umull r3, r12, r0, r3
+ subs r3, r4, r3
+ mov r2, #0x0
+ add r4, r3, #0x30
+ add r3, sp, #0x3a
+ strb r4, [r3, r8]
+ cmp r1, r2
+ cmpeq r0, r2
+ mov r4, r0
+ add r8, r8, #0x1
+ bne _020CAB98
+ b _020CAC28
+_020CABDC:
+ mov r2, #0x0
+ cmp r1, r2
+ cmpeq r4, r2
+ beq _020CAC28
+_020CABEC:
+ and r3, r4, #0xf
+ cmp r3, #0xa
+ mov r4, r4, lsr #0x4
+ addlt r3, r3, #0x30
+ mov r2, r1, lsr #0x4
+ orr r4, r4, r1, lsl #0x1c
+ mov r1, r2
+ addge r3, r3, r0
+ add r2, sp, #0x3a
+ strb r3, [r2, r8]
+ mov r2, #0x0
+ cmp r1, r2
+ add r8, r8, #0x1
+ cmpeq r4, r2
+ bne _020CABEC
+_020CAC28:
+ cmp r7, #0x0
+ ble _020CAC4C
+ ldrsb r0, [sp, #0x38]
+ cmp r0, #0x30
+ ldreq r1, [sp, #0x20]
+ addeq r0, sp, #0x3a
+ streqb r1, [r0, r8]
+ ldreq r7, [sp, #0x4]
+ addeq r8, r8, #0x1
+_020CAC4C:
+ sub r5, r5, r8
+ ands r0, r6, #0x10
+ beq _020CAC68
+ sub r0, r10, r8
+ sub r0, r0, r7
+ cmp r5, r0
+ movlt r5, r0
+_020CAC68:
+ cmp r5, #0x0
+ subgt r10, r10, r5
+ add r0, r7, r8
+ ands r6, r6, #0x8
+ sub r10, r10, r0
+ bne _020CAC90
+ ldr r1, [sp, #0x1c]
+ add r0, sp, #0x54
+ mov r2, r10
+ bl string_fill_char
+_020CAC90:
+ cmp r7, #0x0
+ ble _020CACB8
+ add r0, sp, #0x38
+ add r4, r0, r7
+_020CACA0:
+ ldrsb r1, [r4, #-0x1]!
+ sub r7, r7, #0x1
+ add r0, sp, #0x54
+ bl string_put_char
+_020CACB0:
+ cmp r7, #0x0
+ bgt _020CACA0
+_020CACB8:
+ ldr r1, [sp, #0x20]
+ mov r2, r5
+ add r0, sp, #0x54
+ bl string_fill_char
+_020CACC8:
+ cmp r8, #0x0
+ ble _020CACF0
+ add r0, sp, #0x3A
+ add r4, r0, r8
+_020CACD8:
+ ldrsb r1, [r4, #-0x1]!
+ sub r8, r8, #0x1
+ add r0, sp, #0x54
+ bl string_put_char
+ cmp r8, #0x0
+ bgt _020CACD8
+_020CACF0:
+ cmp r6, #0x0
+ beq _020CAD08
+ ldr r1, [sp, #0x1C]
+ mov r2, sl
+ add r0, sp, #0x54
+ bl string_fill_char
+_020CAD08:
+ add r9, r9, #0x1
+_020CAD0C:
+ ldrsb r0, [r9, #0x0]
+ cmp r0, #0x0
+ bne _020CA530
+_020CAD18:
+ ldr r0, [sp, #0x54]
+ cmp r0, #0x0
+ ldrne r0, [sp, #0x58]
+ movne r1, #0x0
+ strneb r1, [r0, #0x0]
+ bne _020CAD48
+ ldr r0, [sp, #0x0]
+ cmp r0, #0x0
+ ldrne r1, [sp, #0x5c]
+ movne r2, #0x0
+ addne r0, r1, r0
+ strneb r2, [r0, #-0x1]
+_020CAD48:
+ ldr r1, [sp, #0x58]
+ ldr r0, [sp, #0x5c]
+ sub r0, r1, r0
+ add sp, sp, #0x64
+ ldmia sp!, {r4-r11,lr}
+ bx lr
+ .balign 4
+_020CAD60: .word 0xCCCCCCCD
+
+ arm_func_start OS_SNPrintf
+OS_SNPrintf: ; 0x020CAD64
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ add r3, sp, #0x10
+ bic r3, r3, #0x3
+ ldr r2, [sp, #0x10]
+ add r3, r3, #0x4
+ bl OS_VSNPrintf
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ add sp, sp, #0x10
+ bx lr
+
+ arm_func_start OS_VSPrintf
+OS_VSPrintf: ; 0x020CAD94
+ ldr ip, _020CADA8 ; =OS_VSNPrintf
+ mov r3, r2
+ mov r2, r1
+ mvn r1, #0x80000000
+ bx r12
+ .balign 4
+_020CADA8: .word OS_VSNPrintf
+
+ arm_func_start OS_SPrintf
+OS_SPrintf: ; 0x020CADAC
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ add r2, sp, #0xc
+ bic r2, r2, #0x3
+ ldr r1, [sp, #0xc]
+ add r2, r2, #0x4
+ bl OS_VSPrintf
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ add sp, sp, #0x10
+ bx lr
+
+ arm_func_start string_put_string
+string_put_string: ; 0x020CADDC
+ stmdb sp!, {r4,lr}
+ cmp r2, #0x0
+ ldmleia sp!, {r4,lr}
+ bxle lr
+ ldr lr, [r0, #0x0]
+ mov r4, #0x0
+ cmp lr, r2
+ movhi lr, r2
+ cmp lr, #0x0
+ bls _020CAE1C
+_020CAE04:
+ ldrsb r12, [r1, r4]
+ ldr r3, [r0, #0x4]
+ strb r12, [r3, r4]
+ add r4, r4, #0x1
+ cmp r4, lr
+ blo _020CAE04
+_020CAE1C:
+ ldr r1, [r0, #0x0]
+ sub r1, r1, lr
+ str r1, [r0, #0x0]
+ ldr r1, [r0, #0x4]
+ add r1, r1, r2
+ str r1, [r0, #0x4]
+ ldmia sp!, {r4,lr}
+ bx lr
+
+ arm_func_start string_fill_char
+string_fill_char:
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ cmp r2, #0x0
+ addle sp, sp, #0x4
+ ldmleia sp!, {lr}
+ bxle lr
+ ldr r12, [r0, #0x0]
+ mov lr, #0x0
+ cmp r12, r2
+ movhi r12, r2
+ cmp r12, #0x0
+ bls _020CAE80
+_020CAE6C:
+ ldr r3, [r0, #0x4]
+ strb r1, [r3, lr]
+ add lr, lr, #0x1
+ cmp lr, r12
+ blo _020CAE6C
+_020CAE80:
+ ldr r1, [r0, #0x0]
+ sub r1, r1, r12
+ str r1, [r0, #0x0]
+ ldr r1, [r0, #0x4]
+ add r1, r1, r2
+ str r1, [r0, #0x4]
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start string_put_char
+string_put_char:
+ ldr r2, [r0, #0x0]
+ cmp r2, #0x0
+ ldrne r2, [r0, #0x4]
+ strneb r1, [r2, #0x0]
+ ldrne r1, [r0, #0x0]
+ subne r1, r1, #0x1
+ strne r1, [r0, #0x0]
+ ldr r1, [r0, #0x4]
+ add r1, r1, #0x1
+ str r1, [r0, #0x4]
+ bx lr
+
+ arm_func_start FUN_020CAED0
+FUN_020CAED0: ; 0x020CAED0
+ ldr r0, _020CAEDC ; =0x021D3494
+ ldr r0, [r0, #0x0]
+ bx lr
+ .balign 4
+_020CAEDC: .word 0x021D3494
+
+ arm_func_start OS_SetThreadDestructor
+OS_SetThreadDestructor:
+ str r1, [r0, #0xb4]
+ bx lr
+
+ arm_func_start OS_EnableScheduler
+OS_EnableScheduler: ; 0x020CAEE8
+ stmdb sp!, {r4,lr}
+ bl OS_DisableInterrupts
+ ldr r1, _020CAF1C ; =0x021D3484
+ mov r4, #0x0
+ ldr r3, [r1, #0x0]
+ cmp r3, #0x0
+ subne r2, r3, #0x1
+ movne r4, r3
+ strne r2, [r1, #0x0]
+ bl OS_RestoreInterrupts
+ mov r0, r4
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020CAF1C: .word 0x021D3484
+
+ arm_func_start OS_DisableScheduler
+OS_DisableScheduler: ; 0x020CAF20
+ stmdb sp!, {r4,lr}
+ bl OS_DisableInterrupts
+ ldr r2, _020CAF54 ; =0x021D3484
+ mvn r1, #0x0
+ ldr r3, [r2, #0x0]
+ cmp r3, r1
+ addcc r1, r3, #0x1
+ movcc r4, r3
+ strcc r1, [r2, #0x0]
+ bl OS_RestoreInterrupts
+ mov r0, r4
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020CAF54: .word 0x021D3484
+
+ arm_func_start OSi_IdleThreadProc
+OSi_IdleThreadProc: ; 0x020CAF58
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ bl OS_EnableInterrupts
+_020CAF64:
+ bl OS_Halt
+ b _020CAF64
+
+ arm_func_start OS_SetSwitchThreadCallback
+OS_SetSwitchThreadCallback: ; 0x020CAF6C
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ bl OS_DisableInterrupts
+ ldr r1, _020CAF9C ; =0x021D3498
+ ldr r4, [r1, #0xc]
+ str r5, [r1, #0xc]
+ bl OS_RestoreInterrupts
+ mov r0, r4
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020CAF9C: .word 0x021D3498
+
+ arm_func_start OSi_SleepAlarmCallback
+OSi_SleepAlarmCallback: ; 0x020CAFA0
+ ldr r2, [r0, #0x0]
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+ ldr ip, _020CAFBC ; =OS_WakeupThreadDirect
+ mov r0, r2
+ str r1, [r2, #0xb0]
+ bx r12
+ .balign 4
+_020CAFBC: .word OS_WakeupThreadDirect
+
+ arm_func_start OS_Sleep
+OS_Sleep: ; 0x020CAFC0
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x34
+ mov r4, r0
+ add r0, sp, #0x8
+ bl OS_CreateAlarm
+ ldr r0, _020CB060 ; =0x021D3490
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x0]
+ str r0, [sp, #0x4]
+ bl OS_DisableInterrupts
+ ldr r1, _020CB064 ; =0x000082EA
+ mov r2, #0x0
+ umull r5, r3, r4, r1
+ mla r3, r4, r2, r3
+ mla r3, r2, r1, r3
+ mov r1, r5, lsr #0x6
+ mov r4, r0
+ ldr r5, [sp, #0x4]
+ add r0, sp, #0x8
+ add r2, sp, #0x4
+ str r0, [r5, #0xb0]
+ str r2, [sp, #0x0]
+ mov r2, r3, lsr #0x6
+ orr r1, r1, r3, lsl #0x1a
+ ldr r3, _020CB068 ; =OSi_SleepAlarmCallback
+ bl OS_SetAlarm
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ beq _020CB04C
+ mov r5, #0x0
+_020CB038:
+ mov r0, r5
+ bl OS_SleepThread
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ bne _020CB038
+_020CB04C:
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x34
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020CB060: .word 0x021D3490
+_020CB064: .word 0x000082EA
+_020CB068: .word OSi_SleepAlarmCallback
+
+ arm_func_start OS_GetThreadPriority
+OS_GetThreadPriority: ; 0x020CB06C
+ ldr r0, [r0, #0x70]
+ bx lr
+
+ arm_func_start OS_SetThreadPriority
+OS_SetThreadPriority: ; 0x020CB074
+ stmdb sp!, {r4-r8,lr}
+ ldr r2, _020CB120 ; =0x021D3498
+ mov r6, r0
+ mov r5, r1
+ ldr r8, [r2, #0x8]
+ mov r7, #0x0
+ bl OS_DisableInterrupts
+ mov r4, r0
+ b _020CB0A0
+_020CB098:
+ mov r7, r8
+ ldr r8, [r8, #0x68]
+_020CB0A0:
+ cmp r8, #0x0
+ beq _020CB0B0
+ cmp r8, r6
+ bne _020CB098
+_020CB0B0:
+ cmp r8, #0x0
+ beq _020CB0C4
+ ldr r0, _020CB124 ; =0x021D34A8
+ cmp r8, r0
+ bne _020CB0D8
+_020CB0C4:
+ mov r0, r4
+ bl OS_RestoreInterrupts
+_020CB0CC:
+ mov r0, #0x0
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+_020CB0D8:
+ ldr r0, [r8, #0x70]
+ cmp r0, r5
+ beq _020CB10C
+ cmp r7, #0x0
+ ldreq r1, [r6, #0x68]
+ ldreq r0, _020CB120 ; =0x021D3498
+ streq r1, [r0, #0x8]
+ ldrne r0, [r6, #0x68]
+ strne r0, [r7, #0x68]
+ mov r0, r6
+ str r5, [r6, #0x70]
+ bl OSi_InsertThreadToList
+ bl OSi_RescheduleThread
+_020CB10C:
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ mov r0, #0x1
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+ .balign 4
+_020CB120: .word 0x021D3498
+_020CB124: .word 0x021D34A8
+
+ arm_func_start OS_YieldThread
+OS_YieldThread: ; 0x020CB128
+ stmdb sp!, {r4-r8,lr}
+ ldr r0, _020CB1E0 ; =0x021D3498
+ mov r7, #0x0
+ mov r6, r7
+ mov r5, r7
+ ldr r8, [r0, #0x4]
+ bl OS_DisableInterrupts
+ ldr r1, _020CB1E0 ; =0x021D3498
+ mov r4, r0
+ ldr r2, [r1, #0x8]
+ mov r0, r7
+ cmp r2, #0x0
+ beq _020CB188
+ ldr r1, [r8, #0x70]
+_020CB160:
+ cmp r2, r8
+ moveq r7, r0
+ ldr r0, [r2, #0x70]
+ cmp r1, r0
+ moveq r6, r2
+ mov r0, r2
+ ldr r2, [r2, #0x68]
+ addeq r5, r5, #0x1
+ cmp r2, #0x0
+ bne _020CB160
+_020CB188:
+ cmp r5, #0x1
+ ble _020CB198
+ cmp r6, r8
+ bne _020CB1A8
+_020CB198:
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+_020CB1A8:
+ cmp r7, #0x0
+ ldreq r1, [r8, #0x68]
+ ldreq r0, _020CB1E0 ; =0x021D3498
+ streq r1, [r0, #0x8]
+ ldrne r0, [r8, #0x68]
+ strne r0, [r7, #0x68]
+ ldr r0, [r6, #0x68]
+ str r0, [r8, #0x68]
+ str r8, [r6, #0x68]
+ bl OSi_RescheduleThread
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+ .balign 4
+_020CB1E0: .word 0x021D3498
+
+ arm_func_start OS_RescheduleThread
+OS_RescheduleThread: ; 0x020CB1E4
+ stmdb sp!, {r4,lr}
+ bl OS_DisableInterrupts
+ mov r4, r0
+ bl OSi_RescheduleThread
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ ldmia sp!, {r4,lr}
+ bx lr
+
+ arm_func_start OS_SelectThread
+OS_SelectThread: ; 0x020CB204
+ ldr r0, _020CB22C ; =0x021D3498
+ ldr r0, [r0, #0x8]
+ b _020CB214
+_020CB210:
+ ldr r0, [r0, #0x68]
+_020CB214:
+ cmp r0, #0x0
+ bxeq lr
+ ldr r1, [r0, #0x64]
+ cmp r1, #0x1
+ bne _020CB210
+ bx lr
+ .balign 4
+_020CB22C: .word 0x021D3498
+
+ arm_func_start OS_WakeupThreadDirect
+OS_WakeupThreadDirect: ; 0x020CB230
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ bl OS_DisableInterrupts
+ mov r1, #0x1
+ mov r4, r0
+ str r1, [r5, #0x64]
+ bl OSi_RescheduleThread
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+
+ arm_func_start OS_WakeupThread
+OS_WakeupThread: ; 0x020CB264
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ bl OS_DisableInterrupts
+ ldr r1, [r5, #0x0]
+ mov r4, r0
+ cmp r1, #0x0
+ beq _020CB2D0
+ cmp r1, #0x0
+ beq _020CB2BC
+ mov r7, #0x1
+ mov r6, #0x0
+_020CB294:
+ mov r0, r5
+ bl OSi_RemoveLinkFromQueue
+ str r7, [r0, #0x64]
+ str r6, [r0, #0x78]
+ str r6, [r0, #0x80]
+ ldr r1, [r0, #0x80]
+ str r1, [r0, #0x7c]
+ ldr r0, [r5, #0x0]
+ cmp r0, #0x0
+ bne _020CB294
+_020CB2BC:
+ mov r0, #0x0
+ str r0, [r5, #0x4]
+ ldr r0, [r5, #0x4]
+ str r0, [r5, #0x0]
+ bl OSi_RescheduleThread
+_020CB2D0:
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+
+ arm_func_start OS_SleepThread
+OS_SleepThread:
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0
+ bl OS_DisableInterrupts
+ ldr r1, _020CB334 ; =0x021D3490
+ mov r5, r0
+ ldr r0, [r1, #0x0]
+ cmp r6, #0x0
+ ldr r4, [r0, #0x0]
+ beq _020CB318
+ mov r0, r6
+ mov r1, r4
+ str r6, [r4, #0x78]
+ bl OSi_InsertLinkToQueue
+_020CB318:
+ mov r0, #0x0
+ str r0, [r4, #0x64]
+ bl OSi_RescheduleThread
+ mov r0, r5
+ bl OS_RestoreInterrupts
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+ .balign 4
+_020CB334: .word 0x021D3490
+
+ arm_func_start OS_IsThreadTerminated
+OS_IsThreadTerminated: ; 0x020CB338
+ ldr r0, [r0, #0x64]
+ cmp r0, #0x2
+ moveq r0, #0x1
+ movne r0, #0x0
+ bx lr
+
+ arm_func_start OS_JoinThread
+OS_JoinThread: ; 0x020CB34C
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ bl OS_DisableInterrupts
+ ldr r1, [r5, #0x64]
+ mov r4, r0
+ cmp r1, #0x2
+ beq _020CB374
+ add r0, r5, #0x9c
+ bl OS_SleepThread
+_020CB374:
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+
+ arm_func_start OSi_CancelThreadAlarmForSleep
+OSi_CancelThreadAlarmForSleep: ; 0x020CB388
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r0, [r0, #0xb0]
+ cmp r0, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {lr}
+ bxeq lr
+ bl OS_CancelAlarm
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start OS_DestroyThread
+OS_DestroyThread: ; 0x020CB3B4
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ bl OS_DisableInterrupts
+ ldr r1, _020CB438 ; =0x021D3498
+ mov r4, r0
+ ldr r0, [r1, #0x4]
+ cmp r0, r5
+ bne _020CB3DC
+ bl OSi_ExitThread_Destroy
+_020CB3DC:
+ bl OS_DisableScheduler
+ mov r0, r5
+ bl OSi_UnlockAllMutex
+ mov r0, r5
+ bl OSi_CancelThreadAlarmForSleep
+ ldr r0, [r5, #0x78]
+ cmp r0, #0x0
+ beq _020CB404
+ mov r1, r5
+ bl OSi_RemoveSpecifiedLinkFromQueue
+_020CB404:
+ mov r0, r5
+ bl OSi_RemoveThreadFromList
+ mov r1, #0x2
+ add r0, r5, #0x9c
+ str r1, [r5, #0x64]
+ bl OS_WakeupThread
+ bl OS_EnableScheduler
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ bl OS_RescheduleThread
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020CB438: .word 0x021D3498
+
+ arm_func_start OSi_ExitThread_Destroy
+OSi_ExitThread_Destroy: ; 0x020CB43C
+ stmdb sp!, {r4,lr}
+ ldr r0, _020CB498 ; =0x021D3490
+ ldr r0, [r0, #0x0]
+ ldr r4, [r0, #0x0]
+ bl OS_DisableScheduler
+ mov r0, r4
+ bl OSi_UnlockAllMutex
+ ldr r0, [r4, #0x78]
+ cmp r0, #0x0
+ beq _020CB46C
+ mov r1, r4
+ bl OSi_RemoveSpecifiedLinkFromQueue
+_020CB46C:
+ mov r0, r4
+ bl OSi_RemoveThreadFromList
+ mov r1, #0x2
+ add r0, r4, #0x9c
+ str r1, [r4, #0x64]
+ bl OS_WakeupThread
+ bl OS_EnableScheduler
+ bl OS_RescheduleThread
+ bl OS_Terminate
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020CB498: .word 0x021D3490
+
+ arm_func_start OSi_ExitThread_Destroy2
+OSi_ExitThread_Destroy2: ; 0x020CB49C
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r1, _020CB4DC ; =0x021D3490
+ ldr r1, [r1, #0x0]
+ ldr r3, [r1, #0x0]
+ ldr r2, [r3, #0xb4]
+ cmp r2, #0x0
+ beq _020CB4CC
+ mov r1, #0x0
+ str r1, [r3, #0xb4]
+ blx r2
+ bl OS_DisableInterrupts
+_020CB4CC:
+ bl OSi_ExitThread_Destroy
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020CB4DC: .word 0x021D3490
+
+ arm_func_start OSi_ExitThread_ArgSpecified
+OSi_ExitThread_ArgSpecified: ; 0x020CB4E0
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ ldr r2, _020CB548 ; =0x021D3480
+ mov r5, r0
+ ldr r2, [r2, #0x0]
+ mov r4, r1
+ cmp r2, #0x0
+ beq _020CB534
+ ldr r1, _020CB54C ; =OSi_ExitThread_Destroy2
+ bl OS_InitContext
+ str r4, [r5, #0x4]
+ ldr r1, [r5, #0x0]
+ mov r0, r5
+ orr r1, r1, #0x80
+ str r1, [r5, #0x0]
+ mov r1, #0x1
+ str r1, [r5, #0x64]
+ bl OS_LoadContext
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+_020CB534:
+ mov r0, r4
+ bl OSi_ExitThread_Destroy2
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020CB548: .word 0x021D3480
+_020CB54C: .word OSi_ExitThread_Destroy2
+
+ arm_func_start OS_ExitThread
+OS_ExitThread: ; 0x020CB550
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ bl OS_DisableInterrupts
+ ldr r0, _020CB578 ; =0x021D3498
+ mov r1, #0x0
+ ldr r0, [r0, #0x4]
+ bl OSi_ExitThread_ArgSpecified
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020CB578: .word 0x021D3498
+
+ arm_func_start OS_CreateThread
+OS_CreateThread: ; 0x020CB57C
+ stmdb sp!, {r4-r8,lr}
+ mov r8, r0
+ mov r5, r1
+ mov r7, r2
+ mov r6, r3
+ bl OS_DisableInterrupts
+ mov r4, r0
+ bl OSi_GetUnusedThreadId
+ ldr r2, [sp, #0x1c]
+ mov r1, #0x0
+ str r2, [r8, #0x70]
+ str r0, [r8, #0x6c]
+ str r1, [r8, #0x64]
+ str r1, [r8, #0x74]
+ mov r0, r8
+ bl OSi_InsertThreadToList
+ mov r1, r5
+ str r6, [r8, #0x94]
+ ldr r0, [sp, #0x18]
+ mov r12, #0x0
+ sub r5, r6, r0
+ sub r2, r6, #0x4
+ str r5, [r8, #0x90]
+ str r12, [r8, #0x98]
+ ldr r3, _020CB678 ; =0xFDDB597D
+ ldr r0, [r8, #0x94]
+ ldr r6, _020CB67C ; =0x7BF9DD5B
+ str r3, [r0, #-0x4]
+ ldr r3, [r8, #0x90]
+ mov r0, r8
+ str r6, [r3, #0x0]
+ str r12, [r8, #0xa0]
+ ldr r3, [r8, #0xa0]
+ str r3, [r8, #0x9c]
+ bl OS_InitContext
+ str r7, [r8, #0x4]
+ add r1, r5, #0x4
+ ldr r2, _020CB680 ; =OS_ExitThread
+ mov r0, #0x0
+ str r2, [r8, #0x3c]
+ ldr r2, [sp, #0x18]
+ sub r2, r2, #0x8
+ bl MIi_CpuClear32
+ mov r1, #0x0
+ str r1, [r8, #0x84]
+ str r1, [r8, #0x88]
+ str r1, [r8, #0x8c]
+ mov r0, r8
+ bl OS_SetThreadDestructor
+_020CB640:
+ mov r0, #0x0
+ str r0, [r8, #0x78]
+ str r0, [r8, #0x80]
+ ldr r2, [r8, #0x80]
+ add r1, r8, #0xA4
+ str r2, [r8, #0x7C]
+ mov r2, #0xC
+ bl MIi_CpuClear32
+ mov r0, r4
+ mov r1, #0x0
+ str r1, [r8, #0xB0]
+ bl OS_RestoreInterrupts
+ ldmia sp!, {r4-r8, lr}
+ bx lr
+_020CB678: .word 0xFDDB597D
+_020CB67C: .word 0x7BF9DD5B
+_020CB680: .word OS_ExitThread
+
+ arm_func_start OS_InitThread
+OS_InitThread: ; 0x020CB684
+ stmdb sp!, {r4-r6,lr}
+ sub sp, sp, #0x8
+ ldr r3, _020CB7A4 ; =0x021D3494
+ ldr r0, [r3, #0x0]
+ cmp r0, #0x0
+ addne sp, sp, #0x8
+ ldmneia sp!, {r4-r6,lr}
+ bxne lr
+ ldr ip, _020CB7A8 ; =0x00000000
+ ldr r1, _020CB7AC ; =0x021D3568
+ mov lr, #0x0
+ ldr r0, _020CB7B0 ; =0x021D3498
+ mov r6, #0x1
+ mov r4, #0x10
+ str r1, [r0, #0x8]
+ str r1, [r0, #0x4]
+ cmp r12, #0x0
+ ldrle r0, _020CB7B4 ; =0x027E0080
+ str r4, [r1, #0x70]
+ suble r4, r0, r12
+ str lr, [r1, #0x6c]
+ str r6, [r1, #0x64]
+ str lr, [r1, #0x68]
+ str lr, [r1, #0x74]
+ ldrgt r1, _020CB7B8 ; =0x027E0000
+ ldrgt r0, _020CB7BC ; =0x00000400
+ addgt r1, r1, #0x3f80
+ subgt r0, r1, r0
+ subgt r4, r0, r12
+ ldr r1, _020CB7B8 ; =0x027E0000
+ ldr r5, _020CB7C0 ; =0x021D349C
+ ldr r2, _020CB7C4 ; =0x021D3490
+ ldr r0, _020CB7BC ; =0x00000400
+ str r5, [r2, #0x0]
+ ldr r2, _020CB7AC ; =0x021D3568
+ add r1, r1, #0x3f80
+ str r6, [r3, #0x0]
+ sub r3, r1, r0
+ mov r0, #0x0
+ ldr r1, _020CB7C8 ; =0xFDDB597D
+ str r3, [r2, #0x94]
+ str r4, [r2, #0x90]
+ str r0, [r2, #0x98]
+ str r1, [r3, #-0x4]
+ ldr r3, [r2, #0x90]
+ ldr ip, _020CB7CC ; =0x7BF9DD5B
+ ldr r1, _020CB7B0 ; =0x021D3498
+ str r12, [r3, #0x0]
+ ldr r3, _020CB7D0 ; =0x027FFFA0
+ str r0, [r2, #0xa0]
+ str r0, [r2, #0x9c]
+ strh r0, [r1, #0x0]
+ strh r0, [r1, #0x2]
+ str r1, [r3, #0x0]
+ bl OS_SetSwitchThreadCallback
+ mov r2, #0xc8
+ str r2, [sp, #0x0]
+ mov r12, #0x1f
+ ldr r0, _020CB7D4 ; =0x021D34A8
+ ldr r1, _020CB7D8 ; =OSi_IdleThreadProc
+ ldr r3, _020CB7DC ; =0x021D36F0
+ mov r2, #0x0
+ str r12, [sp, #0x4]
+ bl OS_CreateThread
+ ldr r0, _020CB7D4 ; =0x021D34A8
+ mov r2, #0x20
+ mov r1, #0x1
+ str r2, [r0, #0x70]
+ str r1, [r0, #0x64]
+ add sp, sp, #0x8
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+ .balign 4
+_020CB7A4: .word 0x021D3494
+_020CB7A8: .word 0x00000000
+_020CB7AC: .word 0x021D3568
+_020CB7B0: .word 0x021D3498
+_020CB7B4: .word 0x027E0080
+_020CB7B8: .word 0x027E0000
+_020CB7BC: .word 0x00000400
+_020CB7C0: .word 0x021D349C
+_020CB7C4: .word 0x021D3490
+_020CB7C8: .word 0xFDDB597D
+_020CB7CC: .word 0x7BF9DD5B
+_020CB7D0: .word 0x027FFFA0
+_020CB7D4: .word 0x021D34A8
+_020CB7D8: .word OSi_IdleThreadProc
+_020CB7DC: .word 0x021D36F0
+
+ arm_func_start OSi_RescheduleThread
+OSi_RescheduleThread: ; 0x020CB7E0
+ stmdb sp!, {r4-r6,lr}
+ ldr r0, _020CB8BC ; =0x021D3484
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ ldmneia sp!, {r4-r6,lr}
+ bxne lr
+ ldr r4, _020CB8C0 ; =0x021D3498
+ ldrh r0, [r4, #0x2]
+ cmp r0, #0x0
+ bne _020CB814
+ bl OS_GetProcMode
+ cmp r0, #0x12
+ bne _020CB824
+_020CB814:
+ mov r0, #0x1
+ strh r0, [r4, #0x0]
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020CB824:
+ ldr r0, _020CB8C4 ; =0x021D3490
+ ldr r0, [r0, #0x0]
+ ldr r6, [r0, #0x0]
+ bl OS_SelectThread
+ mov r5, r0
+ cmp r6, r5
+ ldmeqia sp!, {r4-r6,lr}
+ bxeq lr
+ cmp r5, #0x0
+ ldmeqia sp!, {r4-r6,lr}
+ bxeq lr
+ ldr r0, [r6, #0x64]
+ cmp r0, #0x2
+ beq _020CB870
+ mov r0, r6
+ bl OS_SaveContext
+_020CB864:
+ cmp r0, #0x0
+ ldmneia sp!, {r4-r6,lr}
+ bxne lr
+_020CB870:
+ ldr r0, _020CB8C8 ; =0x021D348C
+ ldr r2, [r0, #0x0]
+ cmp r2, #0x0
+ beq _020CB88C
+ mov r0, r6
+ mov r1, r5
+ blx r2
+_020CB88C:
+ ldr r2, [r4, #0xc]
+ cmp r2, #0x0
+ beq _020CB8A4
+ mov r0, r6
+ mov r1, r5
+ blx r2
+_020CB8A4:
+ ldr r1, _020CB8C0 ; =0x021D3498
+ mov r0, r5
+ str r5, [r1, #0x4]
+ bl OS_LoadContext
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+ .balign 4
+_020CB8BC: .word 0x021D3484
+_020CB8C0: .word 0x021D3498
+_020CB8C4: .word 0x021D3490
+_020CB8C8: .word 0x021D348C
+
+ arm_func_start OSi_RemoveThreadFromList
+OSi_RemoveThreadFromList: ; 0x020CB8CC
+ ldr r1, _020CB910 ; =0x021D3498
+ mov r2, #0x0
+ ldr r1, [r1, #0x8]
+ b _020CB8E4
+_020CB8DC:
+ mov r2, r1
+ ldr r1, [r1, #0x68]
+_020CB8E4:
+ cmp r1, #0x0
+ beq _020CB8F4
+ cmp r1, r0
+ bne _020CB8DC
+_020CB8F4:
+ cmp r2, #0x0
+ ldreq r1, [r0, #0x68]
+ ldreq r0, _020CB910 ; =0x021D3498
+ streq r1, [r0, #0x8]
+ ldrne r0, [r0, #0x68]
+ strne r0, [r2, #0x68]
+ bx lr
+ .balign 4
+_020CB910: .word 0x021D3498
+
+ arm_func_start OSi_InsertThreadToList
+OSi_InsertThreadToList: ; 0x020CB914
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r1, _020CB978 ; =0x021D3498
+ mov r12, #0x0
+ ldr r3, [r1, #0x8]
+ mov lr, r3
+ b _020CB938
+_020CB930:
+ mov r12, lr
+ ldr lr, [lr, #0x68]
+_020CB938:
+ cmp lr, #0x0
+ beq _020CB950
+ ldr r2, [lr, #0x70]
+ ldr r1, [r0, #0x70]
+ cmp r2, r1
+ blo _020CB930
+_020CB950:
+ cmp r12, #0x0
+ ldreq r1, _020CB978 ; =0x021D3498
+ streq r3, [r0, #0x68]
+ streq r0, [r1, #0x8]
+ ldrne r1, [r12, #0x68]
+ strne r1, [r0, #0x68]
+ strne r0, [r12, #0x68]
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020CB978: .word 0x021D3498
+
+ arm_func_start OSi_RemoveMutexLinkFromQueue
+OSi_RemoveMutexLinkFromQueue: ; 0x020CB97C
+ ldr r2, [r0, #0x0]
+ cmp r2, #0x0
+ beq _020CB9A4
+ ldr r1, [r2, #0x10]
+ str r1, [r0, #0x0]
+ cmp r1, #0x0
+ movne r0, #0x0
+ strne r0, [r1, #0x14]
+ moveq r1, #0x0
+ streq r1, [r0, #0x4]
+_020CB9A4:
+ mov r0, r2
+ bx lr
+
+ arm_func_start OSi_RemoveSpecifiedLinkFromQueue
+OSi_RemoveSpecifiedLinkFromQueue: ; 0x020CB9AC
+ ldr r2, [r0, #0x0]
+ mov r12, r2
+ cmp r2, #0x0
+ beq _020CB9F8
+_020CB9BC:
+ cmp r12, r1
+ ldr r3, [r12, #0x80]
+ bne _020CB9EC
+ cmp r2, r12
+ ldr r2, [r12, #0x7c]
+ streq r3, [r0, #0x0]
+ strne r3, [r2, #0x80]
+ ldr r1, [r0, #0x4]
+ cmp r1, r12
+ streq r2, [r0, #0x4]
+ strne r2, [r3, #0x7c]
+ b _020CB9F8
+_020CB9EC:
+ mov r12, r3
+ cmp r3, #0x0
+ bne _020CB9BC
+_020CB9F8:
+ mov r0, r12
+ bx lr
+
+ arm_func_start OSi_RemoveLinkFromQueue
+OSi_RemoveLinkFromQueue: ; 0x020CBA00
+ ldr r2, [r0, #0x0]
+ cmp r2, #0x0
+ beq _020CBA2C
+ ldr r1, [r2, #0x80]
+ str r1, [r0, #0x0]
+ cmp r1, #0x0
+ movne r0, #0x0
+ strne r0, [r1, #0x7c]
+ moveq r1, #0x0
+ streq r1, [r0, #0x4]
+ streq r1, [r2, #0x78]
+_020CBA2C:
+ mov r0, r2
+ bx lr
+
+ arm_func_start OSi_InsertLinkToQueue
+OSi_InsertLinkToQueue:
+ ldr r12, [r0, #0x0]
+ b _020CBA48
+_020CBA3C:
+ cmp r12, r1
+ bxeq lr
+ ldr r12, [r12, #0x80]
+_020CBA48:
+ cmp r12, #0x0
+ beq _020CBA60
+ ldr r3, [r12, #0x70]
+ ldr r2, [r1, #0x70]
+ cmp r3, r2
+ bls _020CBA3C
+_020CBA60:
+ cmp r12, #0x0
+ bne _020CBA8C
+ ldr r2, [r0, #0x4]
+ cmp r2, #0x0
+ streq r1, [r0, #0x0]
+ strne r1, [r2, #0x80]
+ str r2, [r1, #0x7c]
+ mov r2, #0x0
+ str r2, [r1, #0x80]
+ str r1, [r0, #0x4]
+ bx lr
+_020CBA8C:
+ ldr r2, [r12, #0x7c]
+ cmp r2, #0x0
+ streq r1, [r0, #0x0]
+ strne r1, [r2, #0x80]
+ str r2, [r1, #0x7c]
+ str r12, [r1, #0x80]
+ str r1, [r12, #0x7c]
+ bx lr
+
+ arm_func_start OSi_GetUnusedThreadId
+OSi_GetUnusedThreadId: ; 0x020CBAAC
+ ldr r1, _020CBAC0 ; =0x021D3488
+ ldr r0, [r1, #0x0]
+ add r0, r0, #0x1
+ str r0, [r1, #0x0]
+ bx lr
+ .balign 4
+_020CBAC0: .word 0x021D3488
+
+ arm_func_start OS_InitContext
+OS_InitContext: ; 0x020CBAC4
+ add r1, r1, #0x4
+ str r1, [r0, #0x40]
+ str r2, [r0, #0x44]
+ sub r2, r2, #0x40
+ tst r2, #0x4
+ subne r2, r2, #0x4
+ str r2, [r0, #0x38]
+ ands r1, r1, #0x1
+ movne r1, #0x3f
+ moveq r1, #0x1f
+ str r1, [r0, #0x0]
+ mov r1, #0x0
+ str r1, [r0, #0x4]
+ str r1, [r0, #0x8]
+ str r1, [r0, #0xc]
+ str r1, [r0, #0x10]
+ str r1, [r0, #0x14]
+ str r1, [r0, #0x18]
+ str r1, [r0, #0x1c]
+ str r1, [r0, #0x20]
+ str r1, [r0, #0x24]
+ str r1, [r0, #0x28]
+ str r1, [r0, #0x2c]
+ str r1, [r0, #0x30]
+ str r1, [r0, #0x34]
+ str r1, [r0, #0x3c]
+ bx lr
+
+ arm_func_start OS_SaveContext
+OS_SaveContext:
+ stmdb sp!, {r0,lr}
+ add r0, r0, #0x48
+ ldr r1, _020CBB78 ; =CP_SaveContext
+ blx r1
+ ldmia sp!, {r0,lr}
+ add r1, r0, #0x0
+ mrs r2, cpsr
+ str r2, [r1], #0x4
+ mov r0, #0xd3
+ msr cpsr_c, r0
+ str sp, [r1, #0x40]
+ msr cpsr_c, r2
+ mov r0, #0x1
+ stmia r1, {r0-lr}
+ add r0, pc, #0x8 ; =_020CBB78
+ str r0, [r1, #0x3c]
+ mov r0, #0x0
+ bx lr
+ .balign 4
+_020CBB78: .word CP_SaveContext
+
+ arm_func_start OS_LoadContext
+OS_LoadContext: ; 0x020CBB7C
+ stmdb sp!, {r0,lr}
+ add r0, r0, #0x48
+ ldr r1, _020CBBBC ; =CP_RestoreContext
+ blx r1
+ ldmia sp!, {r0,lr}
+ mrs r1, cpsr
+ bic r1, r1, #0x1f
+ orr r1, r1, #0xd3
+ msr cpsr_c, r1
+ ldr r1, [r0], #0x4
+ msr spsr_fsxc, r1
+ ldr sp, [r0, #0x40]
+ ldr lr, [r0, #0x3c]
+ ldmia r0, {r0-lr}^
+ mov r0, r0
+ subs pc, lr, #0x4
+ .balign 4
+_020CBBBC: .word CP_RestoreContext
+
+ arm_func_start OS_GetConsoleType
+OS_GetConsoleType: ; 0x020CBBC0
+ ldr r0, _020CBBD0 ; =0x82000001
+ ldr r1, _020CBBD4 ; =0x02106828
+ str r0, [r1, #0x0]
+ bx lr
+ .balign 4
+_020CBBD0: .word 0x82000001
+_020CBBD4: .word 0x02106828
+
+ arm_func_start OS_IsRunOnEmulator
+OS_IsRunOnEmulator:
+ mov r0, #0x0
+ bx lr
+
+ arm_func_start OS_ReadMessage
+OS_ReadMessage: ; 0x020CBBE0
+ stmdb sp!, {r4-r8,lr}
+ mov r6, r0
+ mov r5, r1
+ mov r7, r2
+ bl OS_DisableInterrupts
+ ldr r1, [r6, #0x1c]
+ mov r4, r0
+ cmp r1, #0x0
+ bne _020CBC3C
+ and r8, r7, #0x1
+ add r7, r6, #0x8
+_020CBC0C:
+ cmp r8, #0x0
+ bne _020CBC28
+ mov r0, r4
+ bl OS_RestoreInterrupts
+_020CBC1C:
+ mov r0, #0x0
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+_020CBC28:
+ mov r0, r7
+ bl OS_SleepThread
+ ldr r0, [r6, #0x1c]
+ cmp r0, #0x0
+ beq _020CBC0C
+_020CBC3C:
+ cmp r5, #0x0
+ ldrne r1, [r6, #0x10]
+ ldrne r0, [r6, #0x18]
+ ldrne r0, [r1, r0, lsl #0x2]
+ strne r0, [r5, #0x0]
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ mov r0, #0x1
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+
+ arm_func_start OS_JamMessage
+OS_JamMessage: ; 0x020CBC64
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r6, r0
+ mov r5, r1
+ mov r7, r2
+ bl OS_DisableInterrupts
+ ldr r1, [r6, #0x14]
+ ldr r2, [r6, #0x1c]
+ mov r4, r0
+ cmp r1, r2
+ bgt _020CBCCC
+ and r7, r7, #0x1
+_020CBC94:
+ cmp r7, #0x0
+ bne _020CBCB4
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ mov r0, #0x0
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020CBCB4:
+ mov r0, r6
+ bl OS_SleepThread
+ ldr r1, [r6, #0x14]
+ ldr r0, [r6, #0x1c]
+ cmp r1, r0
+ ble _020CBC94
+_020CBCCC:
+ ldr r0, [r6, #0x18]
+ add r0, r0, r1
+ sub r0, r0, #0x1
+ bl _s32_div_f
+ str r1, [r6, #0x18]
+ ldr r2, [r6, #0x10]
+ ldr r1, [r6, #0x18]
+ add r0, r6, #0x8
+ str r5, [r2, r1, lsl #0x2]
+ ldr r1, [r6, #0x1c]
+ add r1, r1, #0x1
+ str r1, [r6, #0x1c]
+ bl OS_WakeupThread
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ mov r0, #0x1
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+
+ arm_func_start OS_ReceiveMessage
+OS_ReceiveMessage: ; 0x020CBD18
+ stmdb sp!, {r4-r8,lr}
+ mov r6, r0
+ mov r5, r1
+ mov r7, r2
+ bl OS_DisableInterrupts
+ ldr r1, [r6, #0x1c]
+ mov r4, r0
+ cmp r1, #0x0
+ bne _020CBD74
+ and r8, r7, #0x1
+ add r7, r6, #0x8
+_020CBD44:
+ cmp r8, #0x0
+ bne _020CBD60
+ mov r0, r4
+ bl OS_RestoreInterrupts
+_020CBD54:
+ mov r0, #0x0
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+_020CBD60:
+ mov r0, r7
+ bl OS_SleepThread
+ ldr r0, [r6, #0x1c]
+ cmp r0, #0x0
+ beq _020CBD44
+_020CBD74:
+ cmp r5, #0x0
+ ldrne r1, [r6, #0x10]
+ ldrne r0, [r6, #0x18]
+ ldrne r0, [r1, r0, lsl #0x2]
+ strne r0, [r5, #0x0]
+ ldr r0, [r6, #0x18]
+ ldr r1, [r6, #0x14]
+ add r0, r0, #0x1
+ bl _s32_div_f
+ str r1, [r6, #0x18]
+ ldr r1, [r6, #0x1c]
+ mov r0, r6
+ sub r1, r1, #0x1
+ str r1, [r6, #0x1c]
+ bl OS_WakeupThread
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ mov r0, #0x1
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+
+ arm_func_start OS_SendMessage
+OS_SendMessage: ; 0x020CBDC4
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r6, r0
+ mov r5, r1
+ mov r7, r2
+ bl OS_DisableInterrupts
+ ldr r2, [r6, #0x1c]
+ ldr r1, [r6, #0x14]
+ mov r4, r0
+ cmp r1, r2
+ bgt _020CBE2C
+ and r7, r7, #0x1
+_020CBDF4:
+ cmp r7, #0x0
+ bne _020CBE14
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ mov r0, #0x0
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020CBE14:
+ mov r0, r6
+ bl OS_SleepThread
+ ldr r2, [r6, #0x1c]
+ ldr r1, [r6, #0x14]
+ cmp r1, r2
+ ble _020CBDF4
+_020CBE2C:
+ ldr r0, [r6, #0x18]
+ add r0, r0, r2
+ bl _s32_div_f
+ ldr r2, [r6, #0x10]
+ add r0, r6, #0x8
+ str r5, [r2, r1, lsl #0x2]
+ ldr r1, [r6, #0x1c]
+ add r1, r1, #0x1
+ str r1, [r6, #0x1c]
+ bl OS_WakeupThread
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ mov r0, #0x1
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+
+ arm_func_start OS_InitMessageQueue
+OS_InitMessageQueue: ; 0x020CBE6C
+ mov r12, #0x0
+ str r12, [r0, #0x4]
+ ldr r3, [r0, #0x4]
+ str r3, [r0, #0x0]
+ str r12, [r0, #0xc]
+ ldr r3, [r0, #0xc]
+ str r3, [r0, #0x8]
+ str r1, [r0, #0x10]
+ str r2, [r0, #0x14]
+ str r12, [r0, #0x18]
+ str r12, [r0, #0x1c]
+ bx lr
+
+ arm_func_start OSi_DequeueItem
+OSi_DequeueItem: ; 0x020CBE9C
+ ldr r2, [r1, #0x10]
+ ldr r1, [r1, #0x14]
+ cmp r2, #0x0
+ streq r1, [r0, #0x8c]
+ strne r1, [r2, #0x14]
+ cmp r1, #0x0
+ streq r2, [r0, #0x88]
+ strne r2, [r1, #0x10]
+ bx lr
+
+ arm_func_start OSi_EnqueueTail
+OSi_EnqueueTail: ; 0x020CBEC0
+ ldr r2, [r0, #0x8c]
+ cmp r2, #0x0
+ streq r1, [r0, #0x88]
+ strne r1, [r2, #0x10]
+ str r2, [r1, #0x14]
+ mov r2, #0x0
+ str r2, [r1, #0x10]
+ str r1, [r0, #0x8c]
+ bx lr
+
+ arm_func_start OS_TryLockMutex
+OS_TryLockMutex: ; 0x020CBEE4
+ stmdb sp!, {r4-r6,lr}
+ mov r5, r0
+ bl OS_DisableInterrupts
+ ldr r2, [r5, #0x8]
+ ldr r1, _020CBF54 ; =0x021D3498
+ mov r4, r0
+ cmp r2, #0x0
+ ldr r0, [r1, #0x4]
+ bne _020CBF28
+ str r0, [r5, #0x8]
+ ldr r2, [r5, #0xc]
+ mov r1, r5
+ add r2, r2, #0x1
+ str r2, [r5, #0xc]
+ bl OSi_EnqueueTail
+ mov r6, #0x1
+ b _020CBF40
+_020CBF28:
+ cmp r2, r0
+ ldreq r0, [r5, #0xc]
+ moveq r6, #0x1
+ addeq r0, r0, #0x1
+ streq r0, [r5, #0xc]
+ movne r6, #0x0
+_020CBF40:
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ mov r0, r6
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+ .balign 4
+_020CBF54: .word 0x021D3498
+
+ arm_func_start OSi_UnlockAllMutex
+OSi_UnlockAllMutex: ; 0x020CBF58
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0
+ ldr r0, [r6, #0x88]
+ cmp r0, #0x0
+ ldmeqia sp!, {r4-r6,lr}
+ bxeq lr
+ add r5, r6, #0x88
+ mov r4, #0x0
+_020CBF78:
+ mov r0, r5
+ bl OSi_RemoveMutexLinkFromQueue
+ str r4, [r0, #0xc]
+ str r4, [r0, #0x8]
+ bl OS_WakeupThread
+ ldr r0, [r6, #0x88]
+ cmp r0, #0x0
+ bne _020CBF78
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+
+ arm_func_start OS_UnlockMutex
+OS_UnlockMutex: ; 0x020CBFA0
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ bl OS_DisableInterrupts
+ ldr r1, _020CC00C ; =0x021D3498
+ mov r4, r0
+ ldr r0, [r1, #0x4]
+ ldr r1, [r5, #0x8]
+ cmp r1, r0
+ bne _020CBFF8
+ ldr r1, [r5, #0xc]
+ sub r1, r1, #0x1
+ str r1, [r5, #0xc]
+ ldr r1, [r5, #0xc]
+ cmp r1, #0x0
+ bne _020CBFF8
+ mov r1, r5
+ bl OSi_DequeueItem
+ mov r1, #0x0
+ mov r0, r5
+ str r1, [r5, #0x8]
+ bl OS_WakeupThread
+_020CBFF8:
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020CC00C: .word 0x021D3498
+
+ arm_func_start OS_LockMutex
+OS_LockMutex: ; 0x020CC010
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ bl OS_DisableInterrupts
+ ldr r1, _020CC098 ; =0x021D3498
+ mov r4, r0
+ ldr r7, [r1, #0x4]
+ mov r6, #0x0
+_020CC030:
+ ldr r0, [r5, #0x8]
+ cmp r0, #0x0
+ bne _020CC05C
+ str r7, [r5, #0x8]
+ ldr r1, [r5, #0xc]
+ mov r0, r7
+ add r2, r1, #0x1
+ mov r1, r5
+ str r2, [r5, #0xc]
+ bl OSi_EnqueueTail
+ b _020CC084
+_020CC05C:
+ cmp r0, r7
+ ldreq r0, [r5, #0xc]
+ addeq r0, r0, #0x1
+ streq r0, [r5, #0xc]
+ beq _020CC084
+ mov r0, r5
+ str r5, [r7, #0x84]
+ bl OS_SleepThread
+ str r6, [r7, #0x84]
+ b _020CC030
+_020CC084:
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+ .balign 4
+_020CC098: .word 0x021D3498
+
+ arm_func_start OS_InitMutex
+OS_InitMutex: ; 0x020CC09C
+ mov r2, #0x0
+ str r2, [r0, #0x4]
+ ldr r1, [r0, #0x4]
+ str r1, [r0, #0x0]
+ str r2, [r0, #0x8]
+ str r2, [r0, #0xc]
+ bx lr
+
+ arm_func_start DC_InvalidateAll
+DC_InvalidateAll: ; 0x020CC0B8
+ mov r0, #0x0
+ mcr p15, 0x0, r0, c7, c6, 0x0
+ bx lr
+
+ arm_func_start DC_StoreAll
+DC_StoreAll: ; 0x020CC0C4
+ mov r1, #0x0
+_020CC0C8:
+ mov r0, #0x0
+_020CC0CC:
+ orr r2, r1, r0
+ mcr p15, 0x0, r2, c7, c10, 0x2
+ add r0, r0, #0x20
+ cmp r0, #0x400
+ blt _020CC0CC
+ add r1, r1, #0x40000000
+ cmp r1, #0x0
+ bne _020CC0C8
+ bx lr
+
+ arm_func_start DC_FlushAll
+DC_FlushAll: ; 0x020CC0F0
+ mov r12, #0x0
+ mov r1, #0x0
+_020CC0F8:
+ mov r0, #0x0
+_020CC0FC:
+ orr r2, r1, r0
+ mcr p15, 0x0, r12, c7, c10, 0x4
+ mcr p15, 0x0, r2, c7, c14, 0x2
+ add r0, r0, #0x20
+ cmp r0, #0x400
+ blt _020CC0FC
+ add r1, r1, #0x40000000
+ cmp r1, #0x0
+ bne _020CC0F8
+ bx lr
+
+ arm_func_start DC_InvalidateRange
+DC_InvalidateRange: ; 0x020CC124
+ add r1, r1, r0
+ bic r0, r0, #0x1f
+_020CC12C:
+ mcr p15, 0x0, r0, c7, c6, 0x1
+ add r0, r0, #0x20
+ cmp r0, r1
+ blt _020CC12C
+ bx lr
+
+ arm_func_start DC_StoreRange
+DC_StoreRange: ; 0x020CC140
+ add r1, r1, r0
+ bic r0, r0, #0x1f
+_020CC148:
+ mcr p15, 0x0, r0, c7, c10, 0x1
+ add r0, r0, #0x20
+ cmp r0, r1
+ blt _020CC148
+ bx lr
+
+ arm_func_start DC_FlushRange
+DC_FlushRange: ; 0x020CC15C
+ mov r12, #0x0
+ add r1, r1, r0
+ bic r0, r0, #0x1f
+_020CC168:
+ mcr p15, 0x0, r12, c7, c10, 0x4
+ mcr p15, 0x0, r0, c7, c14, 0x1
+ add r0, r0, #0x20
+ cmp r0, r1
+ blt _020CC168
+ bx lr
+
+ arm_func_start DC_WaitWriteBufferEmpty
+DC_WaitWriteBufferEmpty: ; 0x020CC180
+ mov r0, #0x0
+ mcr p15, 0x0, r0, c7, c10, 0x4
+ bx lr
+
+ arm_func_start IC_InvalidateAll
+IC_InvalidateAll: ; 0x020CC18C
+ mov r0, #0x0
+ mcr p15, 0x0, r0, c7, c5, 0x0
+ bx lr
+
+ arm_func_start IC_InvalidateRange
+IC_InvalidateRange:
+ add r1, r1, r0
+ bic r0, r0, #0x1f
+_020CC1A0:
+ mcr p15, 0x0, r0, c7, c5, 0x1
+ add r0, r0, #0x20
+ cmp r0, r1
+ blt _020CC1A0
+ bx lr
+
+ arm_func_start OS_Init
+OS_Init: ; 0x020CC1B4
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ bl OS_InitArena
+ bl PXI_Init
+ bl OS_InitLock
+ bl OS_InitArenaEx
+ bl OS_InitIrqTable
+ bl OS_SetIrqStackChecker
+ bl OS_InitException
+ bl MI_Init
+ bl OS_InitVAlarm
+ bl OSi_InitVramExclusive
+ bl OS_InitThread
+ bl OS_InitReset
+ bl CTRDG_Init
+ bl CARD_Init
+ bl PM_Init
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start OS_AllocFromArenaHi
+OS_AllocFromArenaHi: ; 0x020CC204
+ stmdb sp!, {r4-r6,lr}
+ mov r4, r0
+ mov r6, r1
+ mov r5, r2
+ bl OS_GetArenaHi
+_020CC218:
+ cmp r0, #0x0
+ moveq r0, #0x0
+ ldmeqia sp!, {r4-r6,lr}
+ bxeq lr
+ sub r1, r5, #0x1
+ mvn r2, r1
+ and r0, r0, r2
+ sub r1, r0, r6
+ mov r0, r4
+ and r5, r1, r2
+ bl OS_GetArenaLo
+ cmp r5, r0
+ movcc r0, #0x0
+ ldmccia sp!, {r4-r6, lr}
+ bxcc lr
+ mov r0, r4
+ mov r1, r5
+ bl OS_SetArenaHi
+ mov r0, r5
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+
+ arm_func_start OS_AllocFromArenaLo
+OS_AllocFromArenaLo: ; 0x020CC26C
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r7, r0
+ mov r6, r1
+ mov r5, r2
+ bl OS_GetArenaLo
+_020CC284:
+ cmp r0, #0x0
+ addeq sp, sp, #0x4
+ moveq r0, #0x0
+ ldmeqia sp!, {r4-r7, lr}
+ bxeq lr
+ add r0, r0, r5
+ sub r1, r5, #0x1
+ mvn r2, r1
+ sub r0, r0, #0x1
+ and r4, r2, r0
+ add r0, r4, r6
+ add r0, r0, r5
+ sub r1, r0, #0x1
+ mov r0, r7
+ and r5, r2, r1
+ bl OS_GetArenaHi
+ cmp r5, r0
+ addhi sp, sp, #0x4
+ movhi r0, #0x0
+ ldmhiia sp!, {r4-r7, lr}
+ bxhi lr
+ mov r0, r7
+ mov r1, r5
+ bl OS_SetArenaLo
+ mov r0, r4
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7, lr}
+ bx lr
+
+ arm_func_start OS_SetArenaLo
+OS_SetArenaLo: ; 0x020CC2F4
+ mov r0, r0, lsl #0x2
+ add r0, r0, #0x2700000
+ add r0, r0, #0xff000
+ str r1, [r0, #0xda0]
+ bx lr
+
+ arm_func_start OS_SetArenaHi
+OS_SetArenaHi:
+ mov r0, r0, lsl #0x2
+ add r0, r0, #0x2700000
+ add r0, r0, #0xff000
+ str r1, [r0, #0xdc4]
+ bx lr
+
+ arm_func_start OS_GetInitArenaLo
+OS_GetInitArenaLo: ; 0x020CC31C
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ cmp r0, #0x6
+ addls pc, pc, r0, lsl #0x2
+ b _020CC3DC
+_020CC330:
+ b _020CC34C
+ b _020CC3DC
+ b _020CC35C
+ b _020CC39C
+ b _020CC3AC
+ b _020CC3BC
+ b _020CC3CC
+_020CC34C:
+ add sp, sp, #0x4
+ ldr r0, _020CC3EC ; =0x0225FFA0
+ ldmfd sp!, {lr}
+ bx lr
+_020CC35C:
+ ldr r0, _020CC3F0 ; =0x021D36F4
+ ldr r0, [r0]
+ cmp r0, #0x0
+ beq _020CC37C
+ bl OS_GetConsoleType
+ and r0, r0, #0x3
+ cmp r0, #0x1
+ bne _020CC38C
+_020CC37C:
+ add sp, sp, #0x4
+ mov r0, #0x0
+ ldmfd sp!, {lr}
+ bx lr
+_020CC38C:
+ add sp, sp, #0x4
+ ldr r0, _020CC3F4 ; =0x023E0000
+ ldmfd sp!, {lr}
+ bx lr
+_020CC39C:
+ add sp, sp, #0x4
+ ldr r0, _020CC3F8 ; =0x01FF8720
+ ldmfd sp!, {lr}
+ bx lr
+_020CC3AC:
+ add sp, sp, #0x4
+ ldr r0, _020CC3FC ; =0x027E0080
+ ldmfd sp!, {lr}
+ bx lr
+_020CC3BC:
+ add sp, sp, #0x4
+ ldr r0, _020CC400 ; =0x027FF000
+ ldmfd sp!, {lr}
+ bx lr
+_020CC3CC:
+ add sp, sp, #0x4
+ ldr r0, _020CC404 ; =0x037F8000
+ ldmfd sp!, {lr}
+ bx lr
+_020CC3DC:
+ mov r0, #0x0
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+_020CC3EC: .word 0x0225FFA0
+_020CC3F0: .word 0x021D36F4
+_020CC3F4: .word 0x023E0000
+_020CC3F8: .word 0x01FF8720
+_020CC3FC: .word 0x027E0080
+_020CC400: .word 0x027FF000
+_020CC404: .word 0x037F8000
+
+ arm_func_start OS_GetInitArenaHi
+OS_GetInitArenaHi: ; 0x020CC408
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ cmp r0, #0x6
+ addls pc, pc, r0, lsl #0x2
+ b _020CC508
+_020CC41C:
+ b _020CC438
+ b _020CC508
+ b _020CC448
+ b _020CC488
+ b _020CC498
+ b _020CC4E8
+ b _020CC4F8
+_020CC438:
+ add sp, sp, #0x4
+ ldr r0, _020CC518 ; =0x023E0000
+ ldmfd sp!, {lr}
+ bx lr
+_020CC448:
+ ldr r0, _020CC51C ; =0x021D36F4
+ ldr r0, [r0]
+ cmp r0, #0x0
+ beq _020CC468
+ bl OS_GetConsoleType
+ and r0, r0, #0x3
+ cmp r0, #0x1
+ bne _020CC478
+_020CC468:
+ add sp, sp, #0x4
+ mov r0, #0x0
+ ldmfd sp!, {lr}
+ bx lr
+_020CC478:
+ add sp, sp, #0x4
+ mov r0, #0x2700000
+ ldmfd sp!, {lr}
+ bx lr
+_020CC488:
+ add sp, sp, #0x4
+ mov r0, #0x2000000
+ ldmfd sp!, {lr}
+ bx lr
+_020CC498:
+ ldr r0, _020CC520 ; =0x027E0000
+ ldr r1, _020CC524 ; =0x00000000
+ ldr r2, _020CC528 ; =0x00000400
+ add r3, r0, #0x3f80
+ cmp r1, #0x0
+ sub r2, r3, r2
+ bne _020CC4CC
+ ldr r1, _020CC52C ; =0x027E0080
+ add sp, sp, #0x4
+ cmp r0, r1
+ movcc r0, r1
+ ldmfd sp!, {lr}
+ bx lr
+_020CC4CC:
+ cmp r1, #0x0
+ ldrlt r0, _020CC52C ; =0x027E0080
+ add sp, sp, #0x4
+ sublt r0, r0, r1
+ subge r0, r2, r1
+ ldmfd sp!, {lr}
+ bx lr
+_020CC4E8:
+ add sp, sp, #0x4
+ ldr r0, _020CC530 ; =0x027FF680
+ ldmfd sp!, {lr}
+ bx lr
+_020CC4F8:
+ add sp, sp, #0x4
+ ldr r0, _020CC534 ; =0x037F8000
+ ldmfd sp!, {lr}
+ bx lr
+_020CC508:
+ mov r0, #0x0
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+_020CC518: .word 0x023E0000
+_020CC51C: .word 0x021D36F4
+_020CC520: .word 0x027E0000
+_020CC524: .word 0x00000000
+_020CC528: .word 0x00000400
+_020CC52C: .word 0x027E0080
+_020CC530: .word 0x027FF680
+_020CC534: .word 0x037F8000
+
+ arm_func_start OS_GetArenaLo
+OS_GetArenaLo:
+ mov r0, r0, lsl #0x2
+ add r0, r0, #0x2700000
+ add r0, r0, #0xff000
+ ldr r0, [r0, #0xda0]
+ bx lr
+
+ arm_func_start OS_GetArenaHi
+OS_GetArenaHi:
+ mov r0, r0, lsl #0x2
+ add r0, r0, #0x2700000
+ add r0, r0, #0xff000
+ ldr r0, [r0, #0xdc4]
+ bx lr
+
+ arm_func_start OS_InitArenaEx
+OS_InitArenaEx: ; 0x020CC560
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r0, #0x2
+ bl OS_GetInitArenaHi
+ mov r1, r0
+ mov r0, #0x2
+ bl OS_SetArenaHi
+ mov r0, #0x2
+ bl OS_GetInitArenaLo
+ mov r1, r0
+ mov r0, #0x2
+ bl OS_SetArenaLo
+ ldr r0, _020CC5D4 ; =0x021D36F4
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _020CC5B8
+ bl OS_GetConsoleType
+ and r0, r0, #0x3
+ cmp r0, #0x1
+ addne sp, sp, #0x4
+ ldmneia sp!, {lr}
+ bxne lr
+_020CC5B8:
+ ldr r0, _020CC5D8 ; =0x0200002B
+ bl OS_SetProtectionRegion1
+ ldr r0, _020CC5DC ; =0x023E0021
+ bl OS_SetProtectionRegion2
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020CC5D4: .word 0x021D36F4
+_020CC5D8: .word 0x0200002B
+_020CC5DC: .word 0x023E0021
+
+ arm_func_start OS_InitArena
+OS_InitArena: ; 0x020CC5E0
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r1, _020CC6F4 ; =0x021D36F0
+ ldr r0, [r1, #0x0]
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {lr}
+ bxne lr
+ mov r2, #0x1
+ mov r0, #0x0
+ str r2, [r1, #0x0]
+ bl OS_GetInitArenaHi
+ mov r1, r0
+ mov r0, #0x0
+ bl OS_SetArenaHi
+_020CC61C:
+ mov r0, #0x0
+ bl OS_GetInitArenaLo
+ mov r1, r0
+ mov r0, #0x0
+ bl OS_SetArenaLo
+ mov r0, #0x2
+ mov r1, #0x0
+ bl OS_SetArenaLo
+ mov r0, #0x2
+ mov r1, #0x0
+ bl OS_SetArenaHi
+ mov r0, #0x3
+ bl OS_GetInitArenaHi
+ mov r1, r0
+ mov r0, #0x3
+ bl OS_SetArenaHi
+ mov r0, #0x3
+ bl OS_GetInitArenaLo
+ mov r1, r0
+ mov r0, #0x3
+ bl OS_SetArenaLo
+ mov r0, #0x4
+ bl OS_GetInitArenaHi
+ mov r1, r0
+ mov r0, #0x4
+ bl OS_SetArenaHi
+ mov r0, #0x4
+ bl OS_GetInitArenaLo
+ mov r1, r0
+ mov r0, #0x4
+ bl OS_SetArenaLo
+ mov r0, #0x5
+ bl OS_GetInitArenaHi
+ mov r1, r0
+ mov r0, #0x5
+ bl OS_SetArenaHi
+ mov r0, #0x5
+ bl OS_GetInitArenaLo
+ mov r1, r0
+ mov r0, #0x5
+ bl OS_SetArenaLo
+ mov r0, #0x6
+ bl OS_GetInitArenaHi
+ mov r1, r0
+ mov r0, #0x6
+ bl OS_SetArenaHi
+ mov r0, #0x6
+ bl OS_GetInitArenaLo
+ mov r1, r0
+ mov r0, #0x6
+ bl OS_SetArenaLo
+ add sp, sp, #0x4
+ ldmfd sp!, {lr}
+ bx lr
+_020CC6F4: .word 0x021D36F0
+
+ arm_func_start OS_FreeToHeap
+OS_FreeToHeap: ; 0x020CC6F8
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r7, r0
+ mov r5, r1
+ mov r4, r2
+ bl OS_DisableInterrupts
+ ldr r1, _020CC768 ; =0x021D36F8
+ mov r6, r0
+ ldr r0, [r1, r7, lsl #0x2]
+ cmp r5, #0x0
+ ldrlt r5, [r0, #0x0]
+ ldr r1, [r0, #0x10]
+ mov r0, #0xc
+ mla r7, r5, r0, r1
+ sub r4, r4, #0x20
+ ldr r0, [r7, #0x8]
+ mov r1, r4
+ bl DLExtract
+ str r0, [r7, #0x8]
+ ldr r0, [r7, #0x4]
+ mov r1, r4
+ bl DLInsert
+ str r0, [r7, #0x4]
+ mov r0, r6
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+ .balign 4
+_020CC768: .word 0x021D36F8
+
+ arm_func_start OS_AllocFromHeap
+OS_AllocFromHeap: ; 0x020CC76C
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r6, r0
+ mov r5, r1
+ mov r7, r2
+ bl OS_DisableInterrupts
+ ldr r1, _020CC894 ; =0x021D36F8
+ mov r4, r0
+ ldr r1, [r1, r6, lsl #0x2]
+ cmp r1, #0x0
+ bne _020CC7AC
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ mov r0, #0x0
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020CC7AC:
+ cmp r5, #0x0
+ ldrlt r5, [r1, #0x0]
+ ldr r1, [r1, #0x10]
+ mov r0, #0xc
+ mla r6, r5, r0, r1
+ ldr r0, [r6, #0x4]
+ add r1, r7, #0x20
+ add r1, r1, #0x1f
+ mov r5, r0
+ cmp r0, #0x0
+ bic r7, r1, #0x1f
+ beq _020CC7F4
+_020CC7DC:
+ ldr r1, [r5, #0x8]
+ cmp r7, r1
+ ble _020CC7F4
+ ldr r5, [r5, #0x4]
+ cmp r5, #0x0
+ bne _020CC7DC
+_020CC7F4:
+ cmp r5, #0x0
+ bne _020CC814
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ mov r0, #0x0
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020CC814:
+ ldr r1, [r5, #0x8]
+ sub r1, r1, r7
+ cmp r1, #0x40
+ bhs _020CC834
+ mov r1, r5
+ bl DLExtract
+ str r0, [r6, #0x4]
+ b _020CC86C
+_020CC834:
+ str r7, [r5, #0x8]
+ add r2, r5, r7
+ str r1, [r2, #0x8]
+ ldr r0, [r5, #0x0]
+ str r0, [r5, r7]
+ ldr r0, [r5, #0x4]
+ str r0, [r2, #0x4]
+ ldr r0, [r2, #0x4]
+ cmp r0, #0x0
+ strne r2, [r0, #0x0]
+ ldr r0, [r2, #0x0]
+ cmp r0, #0x0
+ strne r2, [r0, #0x4]
+ streq r2, [r6, #0x4]
+_020CC86C:
+ ldr r0, [r6, #0x8]
+ mov r1, r5
+ bl DLAddFront
+ str r0, [r6, #0x8]
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ add r0, r5, #0x20
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+ .balign 4
+_020CC894: .word 0x021D36F8
+
+ arm_func_start DLInsert
+DLInsert: ; 0x020CC898
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r12, r0
+ cmp r0, #0x0
+ mov lr, #0x0
+ beq _020CC8C8
+_020CC8B0:
+ cmp r1, r12
+ bls _020CC8C8
+ mov lr, r12
+ ldr r12, [r12, #0x4]
+ cmp r12, #0x0
+ bne _020CC8B0
+_020CC8C8:
+ str r12, [r1, #0x4]
+ str lr, [r1, #0x0]
+ cmp r12, #0x0
+ beq _020CC908
+ str r1, [r12, #0x0]
+ ldr r3, [r1, #0x8]
+ add r2, r1, r3
+ cmp r2, r12
+ bne _020CC908
+ ldr r2, [r12, #0x8]
+ add r2, r3, r2
+ str r2, [r1, #0x8]
+ ldr r12, [r12, #0x4]
+ str r12, [r1, #0x4]
+ cmp r12, #0x0
+ strne r1, [r12, #0x0]
+_020CC908:
+ cmp lr, #0x0
+ beq _020CC950
+ str r1, [lr, #0x4]
+ ldr r2, [lr, #0x8]
+ add r3, lr, r2
+ cmp r3, r1
+ addne sp, sp, #0x4
+ ldmneia sp!, {lr}
+ bxne lr
+ ldr r1, [r1, #0x8]
+ add sp, sp, #0x4
+ add r1, r2, r1
+ str r1, [lr, #0x8]
+ str r12, [lr, #0x4]
+ cmp r12, #0x0
+ strne lr, [r12, #0x0]
+ ldmia sp!, {lr}
+ bx lr
+_020CC950:
+ mov r0, r1
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start DLExtract
+DLExtract: ; 0x020CC960
+ ldr r3, [r1, #0x4]
+ cmp r3, #0x0
+ ldrne r2, [r1, #0x0]
+ strne r2, [r3, #0x0]
+ ldr r2, [r1, #0x0]
+ cmp r2, #0x0
+ ldreq r0, [r1, #0x4]
+ ldrne r1, [r1, #0x4]
+ strne r1, [r2, #0x4]
+ bx lr
+
+ arm_func_start DLAddFront
+DLAddFront: ; 0x020CC988
+ str r0, [r1, #0x4]
+ mov r2, #0x0
+ str r2, [r1, #0x0]
+ cmp r0, #0x0
+ strne r1, [r0, #0x0]
+ mov r0, r1
+ bx lr
+
+ arm_func_start OS_GetDTCMAddress
+OS_GetDTCMAddress: ; 0x020CC9A4
+ mrc p15, 0x0, r0, c9, c1, 0x0
+ ldr r1, _020CC9B4 ; =0xFFFFF000
+ and r0, r0, r1
+ bx lr
+ .balign 4
+_020CC9B4: .word 0xFFFFF000
+
+ arm_func_start OS_EnableProtectionUnit
+OS_EnableProtectionUnit: ; 0x020CC9B8
+ mrc p15, 0x0, r0, c1, c0, 0x0
+ orr r0, r0, #0x1
+ mcr p15, 0x0, r0, c1, c0, 0x0
+ bx lr
+
+ arm_func_start OS_DisableProtectionUnit
+OS_DisableProtectionUnit: ; 0x020CC9C8
+ mrc p15, 0x0, r0, c1, c0, 0x0
+ bic r0, r0, #0x1
+ mcr p15, 0x0, r0, c1, c0, 0x0
+ bx lr
+
+ arm_func_start OS_SetDPermissionsForProtectionRegion
+OS_SetDPermissionsForProtectionRegion: ; 0x020CC9D8
+ mrc p15, 0x0, r2, c5, c0, 0x2
+ bic r2, r2, r0
+ orr r2, r2, r1
+ mcr p15, 0x0, r2, c5, c0, 0x2
+ bx lr
+
+ arm_func_start OS_SetProtectionRegion1
+OS_SetProtectionRegion1: ; 0x020CC9EC
+ mcr p15, 0x0, r0, c6, c1, 0x0
+ bx lr
+
+ arm_func_start OS_SetProtectionRegion2
+OS_SetProtectionRegion2: ; 0x020CC9F4
+ mcr p15, 0x0, r0, c6, c2, 0x0
+ bx lr
+
+ arm_func_start OSi_ExceptionHandler
+OSi_ExceptionHandler: ; 0x020CC9FC
+ ldr ip, _020CCA68 ; =0x021D3724
+ ldr r12, [r12, #0x0]
+ cmp r12, #0x0
+ movne lr, pc
+ bxne r12
+ ldr ip, _020CCA6C ; =0x02000000
+ stmdb r12!, {r0-r3,sp-lr}
+ and r0, sp, #0x1
+ mov sp, r12
+ mrs r1, cpsr
+ and r1, r1, #0x1f
+ teq r1, #0x17
+ bne _020CCA38
+ bl OSi_GetAndDisplayContext
+ b _020CCA44
+_020CCA38:
+ teq r1, #0x1b
+ bne _020CCA44
+ bl OSi_GetAndDisplayContext
+_020CCA44:
+ ldr ip, _020CCA68 ; =0x021D3724
+ ldr r12, [r12, #0x0]
+ cmp r12, #0x0
+_020CCA50:
+ beq _020CCA50
+_020CCA54:
+ mov r0, r0
+ b _020CCA54
+_020CCA5C:
+ ldmia sp!, {r0-r3,ip,lr}
+ mov sp, ip
+ bx lr
+_020CCA68: .word 0x021D3724
+_020CCA6C: .word 0x02000000
+
+ arm_func_start OSi_GetAndDisplayContext
+OSi_GetAndDisplayContext: ; 0x020CCA70
+ stmdb sp!, {r0,lr}
+ bl OSi_SetExContext
+ bl OSi_DisplayExContext
+ ldmia sp!, {r0,lr}
+ bx lr
+
+ arm_func_start OSi_SetExContext
+OSi_SetExContext: ; 0x020CCA84
+ ldr r1, _020CCB10 ; =0x021D3728
+ mrs r2, cpsr
+ str r2, [r1, #0x74]
+ str r0, [r1, #0x6c]
+ ldr r0, [r12, #0x0]
+ str r0, [r1, #0x4]
+ ldr r0, [r12, #0x4]
+ str r0, [r1, #0x8]
+ ldr r0, [r12, #0x8]
+ str r0, [r1, #0xc]
+ ldr r0, [r12, #0xc]
+ str r0, [r1, #0x10]
+ ldr r2, [r12, #0x10]
+ bic r2, r2, #0x1
+ add r0, r1, #0x14
+ stmia r0, {r4-r11}
+ str r12, [r1, #0x70]
+ ldr r0, [r2, #0x0]
+ str r0, [r1, #0x64]
+ ldr r3, [r2, #0x4]
+ str r3, [r1, #0x0]
+ ldr r0, [r2, #0x8]
+ str r0, [r1, #0x34]
+ ldr r0, [r2, #0xc]
+ str r0, [r1, #0x40]
+ mrs r0, cpsr
+ orr r3, r3, #0x80
+ bic r3, r3, #0x20
+ msr cpsr_fsxc, r3
+ str sp, [r1, #0x38]
+ str lr, [r1, #0x3c]
+ mrs r2, spsr
+ str r2, [r1, #0x7c]
+ msr cpsr_fsxc, r0
+ bx lr
+ .balign 4
+_020CCB10: .word 0x021D3728
+
+ arm_func_start OSi_DisplayExContext
+OSi_DisplayExContext: ; 0x020CCB14
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r0, _020CCB70 ; =0x021D371C
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {lr}
+ bxeq lr
+ mov r0, sp
+ ldr r1, _020CCB74 ; =0x0000009F
+ msr cpsr_fsxc, r1
+ mov sp, r0
+ bl OS_EnableProtectionUnit
+ ldr r1, _020CCB78 ; =0x021D3720
+ ldr r0, _020CCB70 ; =0x021D371C
+ ldr r1, [r1, #0x0]
+ ldr r2, [r0, #0x0]
+ ldr r0, _020CCB7C ; =0x021D3728
+ blx r2
+ bl OS_DisableProtectionUnit
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020CCB70: .word 0x021D371C
+_020CCB74: .word 0x0000009F
+_020CCB78: .word 0x021D3720
+_020CCB7C: .word 0x021D3728
+
+ arm_func_start OS_InitException
+OS_InitException: ; 0x020CCB80
+ ldr r0, _020CCBDC ; =0x027FFD9C
+ ldr r1, [r0, #0x0]
+ cmp r1, #0x2600000
+ blo _020CCBA0
+ cmp r1, #0x2800000
+ ldrlo r0, _020CCBE0 ; =0x021D3724
+ strcc r1, [r0, #0x0]
+ blo _020CCBAC
+_020CCBA0:
+ ldr r0, _020CCBE0 ; =0x021D3724
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+_020CCBAC:
+ ldr r0, _020CCBE0 ; =0x021D3724
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ ldreq r2, _020CCBE4 ; =OSi_ExceptionHandler
+ ldreq r1, _020CCBDC ; =0x027FFD9C
+ ldreq r0, _020CCBE8 ; =0x027E3000
+ streq r2, [r1, #0x0]
+ streq r2, [r0, #0xfdc]
+ ldr r0, _020CCBEC ; =0x021D371C
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+ bx lr
+ .balign 4
+_020CCBDC: .word 0x027FFD9C
+_020CCBE0: .word 0x021D3724
+_020CCBE4: .word OSi_ExceptionHandler
+_020CCBE8: .word 0x027E3000
+_020CCBEC: .word 0x021D371C
+
+ arm_func_start OSi_SetTimerReserved
+OSi_SetTimerReserved: ; 0x020CCBF0
+ ldr r1, _020CCC08 ; =0x021D37A8
+ mov r2, #0x1
+ ldrh r3, [r1, #0x0]
+ orr r0, r3, r2, lsl r0
+ strh r0, [r1, #0x0]
+ bx lr
+ .balign 4
+_020CCC08: .word 0x021D37A8
+
+ arm_func_start OS_GetTickLo
+OS_GetTickLo: ; 0x020CCC0C
+ ldr r0, _020CCC18 ; =0x04000100
+ ldrh r0, [r0, #0x0]
+ bx lr
+ .balign 4
+_020CCC18: .word 0x04000100
+
+ arm_func_start OS_GetTick
+OS_GetTick: ; 0x020CCC1C
+ stmdb sp!, {lr}
+ sub sp, sp, #0xc
+ bl OS_DisableInterrupts
+ ldr r1, _020CCCBC ; =0x04000100
+ ldr r3, _020CCCC0 ; =0x021D37B4
+ ldrh r12, [r1, #0x0]
+ ldr r2, _020CCCC4 ; =0x0000FFFF
+ mvn r1, #0x0
+ strh r12, [sp, #0x0]
+ ldr r12, [r3, #0x0]
+ ldr r3, [r3, #0x4]
+ and r1, r12, r1
+ and r2, r3, r2
+ str r1, [sp, #0x4]
+ ldr r1, _020CCCC8 ; =0x04000214
+ str r2, [sp, #0x8]
+ ldr r1, [r1, #0x0]
+ ands r1, r1, #0x8
+ beq _020CCC90
+ ldrh r1, [sp, #0x0]
+ ands r1, r1, #0x8000
+ bne _020CCC90
+ ldr r3, [sp, #0x4]
+ mov r1, #0x1
+ ldr r2, [sp, #0x8]
+ adds r3, r3, r1
+ adc r1, r2, #0x0
+ str r3, [sp, #0x4]
+ str r1, [sp, #0x8]
+_020CCC90:
+ bl OS_RestoreInterrupts
+ ldr r2, [sp, #0x4]
+ ldr r1, [sp, #0x8]
+ ldrh r0, [sp, #0x0]
+ mov r1, r1, lsl #0x10
+ orr r1, r1, r2, lsr #0x10
+ orr r1, r1, r0, asr #0x1f
+ orr r0, r0, r2, lsl #0x10
+ add sp, sp, #0xc
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020CCCBC: .word 0x04000100
+_020CCCC0: .word 0x021D37B4
+_020CCCC4: .word 0x0000FFFF
+_020CCCC8: .word 0x04000214
+
+ arm_func_start OSi_CountUpTick
+OSi_CountUpTick: ; 0x020CCCCC
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r2, _020CCD40 ; =0x021D37B4
+ ldr r1, _020CCD44 ; =0x021D37B0
+ ldr r12, [r2, #0x0]
+ mov r0, #0x1
+ ldr r3, [r2, #0x4]
+ adds r12, r12, r0
+ ldr r0, [r1, #0x0]
+ adc r3, r3, #0x0
+ str r12, [r2, #0x0]
+ str r3, [r2, #0x4]
+ cmp r0, #0x0
+ mov r3, #0x0
+ beq _020CCD24
+ ldr r2, _020CCD48 ; =0x04000102
+ ldr r0, _020CCD4C ; =0x04000100
+ strh r3, [r2, #0x0]
+ strh r3, [r0, #0x0]
+ mov r0, #0xc1
+ strh r0, [r2, #0x0]
+ str r3, [r1, #0x0]
+_020CCD24:
+ mov r0, #0x0
+ ldr r1, _020CCD50 ; =OSi_CountUpTick
+ mov r2, r0
+ bl OSi_EnterTimerCallback
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020CCD40: .word 0x021D37B4
+_020CCD44: .word 0x021D37B0
+_020CCD48: .word 0x04000102
+_020CCD4C: .word 0x04000100
+_020CCD50: .word OSi_CountUpTick
+
+ arm_func_start OS_IsTickAvailable
+OS_IsTickAvailable: ; 0x020CCD54
+ ldr r0, _020CCD60 ; =0x021D37AC
+ ldrh r0, [r0, #0x0]
+ bx lr
+ .balign 4
+_020CCD60: .word 0x021D37AC
+
+ arm_func_start OS_InitTick
+OS_InitTick: ; 0x020CCD64
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r1, _020CCDE8 ; =0x021D37AC
+ ldrh r0, [r1, #0x0]
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {lr}
+ bxne lr
+ mov r2, #0x1
+ mov r0, #0x0
+ strh r2, [r1, #0x0]
+ bl OSi_SetTimerReserved
+ ldr r0, _020CCDEC ; =0x021D37B4
+ mov r2, #0x0
+ str r2, [r0, #0x0]
+ ldr r3, _020CCDF0 ; =0x04000102
+ str r2, [r0, #0x4]
+ ldr r0, _020CCDF4 ; =0x04000100
+ strh r2, [r3, #0x0]
+ ldr r1, _020CCDF8 ; =OSi_CountUpTick
+ strh r2, [r0, #0x0]
+ mov r2, #0xc1
+ mov r0, #0x8
+ strh r2, [r3, #0x0]
+ bl OS_SetIrqFunction
+ mov r0, #0x8
+ bl OS_EnableIrqMask
+ ldr r0, _020CCDFC ; =0x021D37B0
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020CCDE8: .word 0x021D37AC
+_020CCDEC: .word 0x021D37B4
+_020CCDF0: .word 0x04000102
+_020CCDF4: .word 0x04000100
+_020CCDF8: .word OSi_CountUpTick
+_020CCDFC: .word 0x021D37B0
+
+ arm_func_start OSi_AlarmHandler
+OSi_AlarmHandler: ; 0x020CCE00
+ stmdb sp!, {r0,lr}
+ bl OSi_ArrangeTimer
+ ldmia sp!, {r0,lr}
+ bx lr
+
+ arm_func_start OSi_ArrangeTimer
+OSi_ArrangeTimer: ; 0x020CCE10
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ ldr r1, _020CCF1C ; =0x04000106
+ mov r2, #0x0
+ mov r0, #0x10
+ strh r2, [r1, #0x0]
+ bl OS_DisableIrqMask
+ ldr r0, _020CCF20 ; =0x027E0000
+ add r0, r0, #0x3000
+ ldr r1, [r0, #0xff8]
+ orr r1, r1, #0x10
+ str r1, [r0, #0xff8]
+ bl OS_GetTick
+ ldr r2, _020CCF24 ; =0x021D37C0
+ ldr r4, [r2, #0x0]
+ cmp r4, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r5,lr}
+ bxeq lr
+ ldr r3, [r4, #0x10]
+ ldr r12, [r4, #0xc]
+ cmp r1, r3
+ cmpeq r0, r12
+ bhs _020CCE84
+ mov r0, r4
+ bl OSi_SetTimer
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+_020CCE84:
+ ldr r1, [r4, #0x18]
+ cmp r1, #0x0
+ moveq r0, #0x0
+ streq r0, [r2, #0x4]
+ str r1, [r2, #0x0]
+ movne r0, #0x0
+ strne r0, [r1, #0x14]
+ ldr r2, [r4, #0x1c]
+ ldr r1, [r4, #0x20]
+ mov r0, #0x0
+ cmp r1, r0
+ ldr r5, [r4, #0x0]
+ cmpeq r2, r0
+ streq r0, [r4, #0x0]
+ cmp r5, #0x0
+ beq _020CCECC
+ ldr r0, [r4, #0x4]
+ blx r5
+_020CCECC:
+ ldr r2, [r4, #0x1c]
+ ldr r0, [r4, #0x20]
+ mov r1, #0x0
+ cmp r0, r1
+ cmpeq r2, r1
+ beq _020CCEF4
+ mov r0, r4
+ mov r2, r1
+ str r5, [r4, #0x0]
+ bl OSi_InsertAlarm
+_020CCEF4:
+ ldr r0, _020CCF24 ; =0x021D37C0
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r5,lr}
+ bxeq lr
+ bl OSi_SetTimer
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020CCF1C: .word 0x04000106
+_020CCF20: .word 0x027E0000
+_020CCF24: .word 0x021D37C0
+
+ arm_func_start OS_CancelAlarm
+OS_CancelAlarm: ; 0x020CCF28
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ bl OS_DisableInterrupts
+ ldr r1, [r5, #0x0]
+ mov r4, r0
+ cmp r1, #0x0
+ bne _020CCF58
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+_020CCF58:
+ ldr r0, [r5, #0x18]
+ cmp r0, #0x0
+ ldreq r2, [r5, #0x14]
+ ldreq r1, _020CCFBC ; =0x021D37C0
+ streq r2, [r1, #0x4]
+ ldrne r1, [r5, #0x14]
+ strne r1, [r0, #0x14]
+ ldr r1, [r5, #0x14]
+ cmp r1, #0x0
+ strne r0, [r1, #0x18]
+ bne _020CCF98
+ ldr r1, _020CCFBC ; =0x021D37C0
+ cmp r0, #0x0
+ str r0, [r1, #0x0]
+ beq _020CCF98
+ bl OSi_SetTimer
+_020CCF98:
+ mov r1, #0x0
+ str r1, [r5, #0x0]
+ str r1, [r5, #0x1c]
+ mov r0, r4
+ str r1, [r5, #0x20]
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020CCFBC: .word 0x021D37C0
+
+ arm_func_start OS_SetAlarm
+OS_SetAlarm: ; 0x020CCFC0
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ movs r6, r0
+ mov r5, r1
+ mov r4, r2
+ mov r7, r3
+ beq _020CCFE8
+ ldr r0, [r6, #0x0]
+ cmp r0, #0x0
+ beq _020CCFEC
+_020CCFE8:
+ bl OS_Terminate
+_020CCFEC:
+ bl OS_DisableInterrupts
+ mov r1, #0x0
+ str r1, [r6, #0x1c]
+ str r1, [r6, #0x20]
+ str r7, [r6, #0x0]
+ ldr r1, [sp, #0x18]
+ mov r7, r0
+ str r1, [r6, #0x4]
+ bl OS_GetTick
+ adds r3, r5, r0
+ adc r2, r4, r1
+ mov r0, r6
+ mov r1, r3
+ bl OSi_InsertAlarm
+ mov r0, r7
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+
+ arm_func_start OSi_InsertAlarm
+OSi_InsertAlarm: ; 0x020CD038
+ stmdb sp!, {r4-r8,lr}
+ mov r8, r0
+ ldr r4, [r8, #0x1c]
+ ldr r3, [r8, #0x20]
+ mov r0, #0x0
+ cmp r3, r0
+ mov r7, r1
+ mov r6, r2
+ cmpeq r4, r0
+ beq _020CD0B4
+ bl OS_GetTick
+ ldr r6, [r8, #0x28]
+ ldr r7, [r8, #0x24]
+ cmp r6, r1
+ cmpeq r7, r0
+ bhs _020CD0B4
+ ldr r5, [r8, #0x1c]
+ ldr r4, [r8, #0x20]
+ subs r0, r0, r7
+ mov r2, r5
+ mov r3, r4
+ sbc r1, r1, r6
+ bl _ll_udiv
+ mov r2, #0x1
+ adds r2, r0, r2
+ adc r0, r1, #0x0
+ umull r3, r1, r5, r2
+ mla r1, r5, r0, r1
+ mla r1, r4, r2, r1
+ adds r7, r7, r3
+ adc r6, r6, r1
+_020CD0B4:
+ str r7, [r8, #0xc]
+ ldr r0, _020CD174 ; =0x021D37C0
+ str r6, [r8, #0x10]
+ ldr r4, [r0, #0x0]
+ cmp r4, #0x0
+ beq _020CD134
+ mov r1, #0x0
+_020CD0D0:
+ ldr r2, [r4, #0xc]
+ ldr r0, [r4, #0x10]
+ subs r3, r7, r2
+ sbc r2, r6, r0
+ subs r0, r3, r1
+ sbcs r0, r2, r1
+ bge _020CD128
+ ldr r0, [r4, #0x14]
+ str r0, [r8, #0x14]
+ str r8, [r4, #0x14]
+ str r4, [r8, #0x18]
+ ldr r0, [r8, #0x14]
+ cmp r0, #0x0
+ strne r8, [r0, #0x18]
+ ldmneia sp!, {r4-r8,lr}
+ bxne lr
+ ldr r1, _020CD174 ; =0x021D37C0
+ mov r0, r8
+ str r8, [r1, #0x0]
+ bl OSi_SetTimer
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+_020CD128:
+ ldr r4, [r4, #0x18]
+ cmp r4, #0x0
+ bne _020CD0D0
+_020CD134:
+ ldr r1, _020CD174 ; =0x021D37C0
+ mov r0, #0x0
+ str r0, [r8, #0x18]
+ ldr r0, [r1, #0x4]
+ str r8, [r1, #0x4]
+ str r0, [r8, #0x14]
+ cmp r0, #0x0
+ strne r8, [r0, #0x18]
+ ldmneia sp!, {r4-r8,lr}
+ bxne lr
+ mov r0, r8
+ str r8, [r1, #0x4]
+ str r8, [r1, #0x0]
+ bl OSi_SetTimer
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+ .balign 4
+_020CD174: .word 0x021D37C0
+
+ arm_func_start OS_CreateAlarm
+OS_CreateAlarm: ; 0x020CD178
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+ str r1, [r0, #0x8]
+ bx lr
+
+ arm_func_start OS_IsAlarmAvailable
+OS_IsAlarmAvailable: ; 0x020CD188
+ ldr r0, _020CD194 ; =0x021D37BC
+ ldrh r0, [r0, #0x0]
+ bx lr
+ .balign 4
+_020CD194: .word 0x021D37BC
+
+ arm_func_start OS_InitAlarm
+OS_InitAlarm: ; 0x020CD198
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r1, _020CD1E8 ; =0x021D37BC
+ ldrh r0, [r1, #0x0]
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {lr}
+ bxne lr
+ mov r0, #0x1
+ strh r0, [r1, #0x0]
+ bl OSi_SetTimerReserved
+ ldr r1, _020CD1EC ; =0x021D37C0
+ mov r2, #0x0
+ mov r0, #0x10
+ str r2, [r1, #0x0]
+ str r2, [r1, #0x4]
+ bl OS_DisableIrqMask
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020CD1E8: .word 0x021D37BC
+_020CD1EC: .word 0x021D37C0
+
+ arm_func_start OSi_SetTimer
+OSi_SetTimer: ; 0x020CD1F0
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r4, r0
+ bl OS_GetTick
+ ldr r3, _020CD27C ; =0x04000106
+ mov r2, #0x0
+ strh r2, [r3, #0x0]
+ ldr r12, [r4, #0xc]
+ ldr r3, [r4, #0x10]
+ subs r5, r12, r0
+ sbc r4, r3, r1
+ ldr r1, _020CD280 ; =OSi_AlarmHandler
+ mov r0, #0x1
+ bl OSi_EnterTimerCallback
+ mov r2, #0x0
+ subs r0, r5, r2
+ sbcs r0, r4, r2
+ ldrlt r2, _020CD284 ; =0x0000FFFE
+ blt _020CD254
+ mov r0, #0x10000
+ subs r0, r5, r0
+ sbcs r0, r4, r2
+ mvnlt r0, r5
+ movlt r0, r0, lsl #0x10
+ movlt r2, r0, lsr #0x10
+_020CD254:
+ ldr r0, _020CD288 ; =0x04000104
+ ldr r1, _020CD27C ; =0x04000106
+ strh r2, [r0, #0x0]
+ mov r2, #0xc1
+ mov r0, #0x10
+ strh r2, [r1, #0x0]
+ bl OS_EnableIrqMask
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020CD27C: .word 0x04000106
+_020CD280: .word OSi_AlarmHandler
+_020CD284: .word 0x0000FFFE
+_020CD288: .word 0x04000104
+
+ arm_func_start OS_InitVAlarm
+OS_InitVAlarm: ; 0x020CD28C
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r2, _020CD2EC ; =0x021D37C8
+ ldrh r0, [r2, #0x0]
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {lr}
+ bxne lr
+ ldr r1, _020CD2F0 ; =0x021D37D4
+ mov r3, #0x0
+ mov r12, #0x1
+ mov r0, #0x4
+ strh r12, [r2, #0x0]
+ str r3, [r1, #0x0]
+ str r3, [r1, #0x4]
+ bl OS_DisableIrqMask
+ ldr r1, _020CD2F4 ; =0x021D37D0
+ mov r2, #0x0
+ ldr r0, _020CD2F8 ; =0x021D37CC
+ str r2, [r1, #0x0]
+ str r2, [r0, #0x0]
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020CD2EC: .word 0x021D37C8
+_020CD2F0: .word 0x021D37D4
+_020CD2F4: .word 0x021D37D0
+_020CD2F8: .word 0x021D37CC
+
+ arm_func_start OS_EnableInterrupts
+OS_EnableInterrupts: ; 0x020CD2FC
+ mrs r0, cpsr
+ bic r1, r0, #0x80
+ msr cpsr_c, r1
+ and r0, r0, #0x80
+ bx lr
+
+ arm_func_start OS_DisableInterrupts
+OS_DisableInterrupts:
+ mrs r0, cpsr
+ orr r1, r0, #0x80
+ msr cpsr_c, r1
+ and r0, r0, #0x80
+ bx lr
+
+ arm_func_start OS_RestoreInterrupts
+OS_RestoreInterrupts:
+ mrs r1, cpsr
+ bic r2, r1, #0x80
+ orr r2, r2, r0
+ msr cpsr_c, r2
+ and r0, r1, #0x80
+ bx lr
+
+ arm_func_start OS_DisableInterrupts_IrqAndFiq
+OS_DisableInterrupts_IrqAndFiq: ; 0x020CD33C
+ mrs r0, cpsr
+ orr r1, r0, #0xc0
+ msr cpsr_c, r1
+ and r0, r0, #0xc0
+ bx lr
+
+ arm_func_start OS_RestoreInterrupts_IrqAndFiq
+OS_RestoreInterrupts_IrqAndFiq: ; 0x020CD350
+ mrs r1, cpsr
+ bic r2, r1, #0xc0
+ orr r2, r2, r0
+ msr cpsr_c, r2
+ and r0, r1, #0xc0
+ bx lr
+
+ arm_func_start OS_GetCpsrIrq
+OS_GetCpsrIrq: ; 0x020CD368
+ mrs r0, cpsr
+ and r0, r0, #0x80
+ bx lr
+
+ arm_func_start OS_GetProcMode
+OS_GetProcMode: ; 0x020CD374
+ mrs r0, cpsr
+ and r0, r0, #0x1f
+ bx lr
+_020CD380:
+ subs r0, r0, #0x4
+ bhs _020CD380
+ bx lr
+
+ arm_func_start OS_WaitVBlankIntr
+OS_WaitVBlankIntr: ; 0x020CD38C
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r0, #0x1
+ blx FUN_020005F2
+ mov r0, #0x1
+ mov r1, r0
+ bl OS_WaitIrq
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start OS_ResetSystem
+OS_ResetSystem: ; 0x020CD3B4
+ stmdb sp!, {r4,lr}
+ ldr r1, _020CD42C ; =0x027FFC40
+ mov r4, r0
+ ldrh r0, [r1, #0x0]
+ cmp r0, #0x2
+ bne _020CD3D0
+ bl OS_Terminate
+_020CD3D0:
+ bl OS_GetLockID
+ mov r0, r0, lsl #0x10
+ mov r0, r0, lsr #0x10
+ bl CARD_LockRom
+_020CD3E0:
+ mov r0, #0x0
+ bl MI_StopDma
+ mov r0, #0x1
+ bl MI_StopDma
+ mov r0, #0x2
+ bl MI_StopDma
+ mov r0, #0x3
+ bl MI_StopDma
+ mov r0, #0x40000
+ bl OS_SetIrqMask
+ mvn r0, #0x0
+ bl OS_ResetRequestIrqMask
+ ldr r1, _020CD430
+ mov r0, #0x10
+ str r4, [r1]
+ bl OSi_SendToPxi
+ bl FUN_01FF84A4
+ ldmia sp!, {r4, lr}
+ bx lr
+_020CD42C: .word 0x027FFC40
+_020CD430: .word 0x027FFC20
+
+ arm_func_start OSi_SendToPxi
+OSi_SendToPxi: ; 0x020CD434
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0, lsl #0x8
+ mov r5, #0xc
+ mov r4, #0x0
+_020CD444:
+ mov r0, r5
+ mov r1, r6
+ mov r2, r4
+ bl PXI_SendWordByFifo
+_020CD454:
+ cmp r0, #0x0
+ bne _020CD444
+ ldmia sp!, {r4-r6, lr}
+ bx lr
+
+ arm_func_start OSi_CommonCallback
+OSi_CommonCallback: ; 0x020CD464
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ and r0, r1, #0x7f00
+ mov r0, r0, lsl #0x8
+ mov r0, r0, lsr #0x10
+ cmp r0, #0x10
+ ldreq r0, _020CD4A4 ; =0x021D37E0
+ moveq r1, #0x1
+ streqh r1, [r0, #0x0]
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {lr}
+ bxeq lr
+ bl OS_Terminate
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020CD4A4: .word 0x021D37E0
+
+ arm_func_start OS_InitReset
+OS_InitReset: ; 0x020CD4A8
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ ldr r0, _020CD508 ; =0x021D37DC
+ ldrh r1, [r0, #0x0]
+ cmp r1, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {r4-r5,lr}
+ bxne lr
+ mov r1, #0x1
+ strh r1, [r0, #0x0]
+ bl PXI_Init
+ mov r5, #0xc
+ mov r4, #0x1
+_020CD4DC:
+ mov r0, r5
+ mov r1, r4
+ bl PXI_IsCallbackReady
+_020CD4E8:
+ cmp r0, #0x0
+ beq _020CD4DC
+ ldr r1, _020CD50C
+ mov r0, #0xC
+ bl PXI_SetFifoRecvCallback
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5, lr}
+ bx lr
+_020CD508: .word 0x021D37DC
+_020CD50C: .word 0x020CD464
+
+ arm_func_start OS_GetOwnerRtcOffset
+OS_GetOwnerRtcOffset: ; 0x020CD510
+ ldr r1, _020CD520 ; =0x027FFC80
+ ldr r0, [r1, #0x68]
+ ldr r1, [r1, #0x6c]
+ bx lr
+ .balign 4
+_020CD520: .word 0x027FFC80
+
+ arm_func_start OS_GetOwnerInfo
+OS_GetOwnerInfo: ; 0x020CD524
+ stmdb sp!, {r4,lr}
+ ldr ip, _020CD59C ; =0x027FFC80
+ mov r4, r0
+ ldrh r2, [r12, #0x64]
+ add r0, r12, #0x6
+ add r1, r4, #0x4
+ mov r2, r2, lsl #0x1d
+ mov r2, r2, lsr #0x1d
+ strb r2, [r4, #0x0]
+ ldrb r3, [r12, #0x2]
+ mov r2, #0x14
+ mov r3, r3, lsl #0x1c
+ mov r3, r3, lsr #0x1c
+ strb r3, [r4, #0x1]
+ ldrb r3, [r12, #0x3]
+ strb r3, [r4, #0x2]
+ ldrb r3, [r12, #0x4]
+ strb r3, [r4, #0x3]
+ ldrb r3, [r12, #0x1a]
+ strh r3, [r4, #0x18]
+ ldrb r3, [r12, #0x50]
+ strh r3, [r4, #0x4e]
+ bl MIi_CpuCopy16
+ ldr r0, _020CD59C ; =0x027FFC80
+ add r1, r4, #0x1a
+ add r0, r0, #0x1c
+ mov r2, #0x34
+ bl MIi_CpuCopy16
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020CD59C: .word 0x027FFC80
+
+ arm_func_start OS_GetMacAddress
+OS_GetMacAddress: ; 0x020CD5A0
+ ldr ip, _020CD5B4 ; =MI_CpuCopy8
+ mov r1, r0
+ ldr r0, _020CD5B8 ; =0x027FFCF4
+ mov r2, #0x6
+ bx r12
+ .balign 4
+_020CD5B4: .word MI_CpuCopy8
+_020CD5B8: .word 0x027FFCF4
+
+ arm_func_start OsCountZeroBits
+OsCountZeroBits: ; 0x020CD5BC
+ clz r0, r0
+ bx lr
+
+ arm_func_start OSi_UnlockVram
+OSi_UnlockVram: ; 0x020CD5C4
+ stmdb sp!, {r4-r10,lr}
+ mov r5, r0
+ mov r10, r1
+ bl OS_DisableInterrupts
+ ldr r4, _020CD640 ; =0x021D37E4
+ ldr r1, _020CD644 ; =0x000001FF
+ ldr r2, [r4, #0x0]
+ mov r8, r0
+ and r0, r5, r2
+ and r9, r0, r1
+ ldr r6, _020CD648 ; =0x021D37E8
+ mov r7, #0x1
+ mov r5, #0x0
+_020CD5F8:
+ mov r0, r9
+ bl OsCountZeroBits
+ rsbs r2, r0, #0x1f
+ bmi _020CD630
+ mov r1, r2, lsl #0x1
+ ldrh r0, [r6, r1]
+ mvn r2, r7, lsl r2
+ cmp r10, r0
+ ldreq r0, [r4, #0x0]
+ and r9, r9, r2
+ andeq r0, r0, r2
+ streqh r5, [r6, r1]
+ streq r0, [r4, #0x0]
+ b _020CD5F8
+_020CD630:
+ mov r0, r8
+ bl OS_RestoreInterrupts
+ ldmia sp!, {r4-r10,lr}
+ bx lr
+ .balign 4
+_020CD640: .word 0x021D37E4
+_020CD644: .word 0x000001FF
+_020CD648: .word 0x021D37E8
+
+ arm_func_start OSi_TryLockVram
+OSi_TryLockVram: ; 0x020CD64C
+ stmdb sp!, {r4-r9,lr}
+ sub sp, sp, #0x4
+ mov r6, r0
+ mov r8, r1
+ bl OS_DisableInterrupts
+ ldr r1, _020CD714 ; =0x021D37E4
+ mov r7, r0
+ ldr r0, [r1, #0x0]
+ and r5, r6, r0
+ ldr sb, _020CD718 ; =0x021D37E8
+ mov r4, #0x1
+_020CD678:
+ mov r0, r5
+ bl OsCountZeroBits
+ rsbs r1, r0, #0x1f
+ bmi _020CD6B8
+ mov r0, r1, lsl #0x1
+ ldrh r0, [r9, r0]
+ mvn r1, r4, lsl r1
+ cmp r8, r0
+ and r5, r5, r1
+ beq _020CD678
+ mov r0, r7
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ mov r0, #0x0
+ ldmia sp!, {r4-r9,lr}
+ bx lr
+_020CD6B8:
+ ldr r0, _020CD71C ; =0x000001FF
+ and r6, r6, r0
+ ldr r4, _020CD718 ; =0x021D37E8
+ ldr sb, _020CD714 ; =0x021D37E4
+ mov r5, #0x1
+_020CD6CC:
+ mov r0, r6
+ bl OsCountZeroBits
+ rsbs r1, r0, #0x1f
+ bmi _020CD6FC
+ ldr r0, [r9, #0x0]
+ mvn r2, r5, lsl r1
+ orr r0, r0, r5, lsl r1
+ mov r1, r1, lsl #0x1
+ strh r8, [r4, r1]
+ str r0, [r9, #0x0]
+ and r6, r6, r2
+ b _020CD6CC
+_020CD6FC:
+ mov r0, r7
+ bl OS_RestoreInterrupts
+ mov r0, #0x1
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r9,lr}
+ bx lr
+ .balign 4
+_020CD714: .word 0x021D37E4
+_020CD718: .word 0x021D37E8
+_020CD71C: .word 0x000001FF
+
+ arm_func_start OSi_InitVramExclusive
+OSi_InitVramExclusive: ; 0x020CD720
+ ldr r0, _020CD74C ; =0x021D37E4
+ mov r3, #0x0
+ str r3, [r0, #0x0]
+ ldr r0, _020CD750 ; =0x021D37E8
+ mov r2, r3
+_020CD734:
+ mov r1, r3, lsl #0x1
+ add r3, r3, #0x1
+ strh r2, [r0, r1]
+ cmp r3, #0x9
+ blt _020CD734
+ bx lr
+ .balign 4
+_020CD74C: .word 0x021D37E4
+_020CD750: .word 0x021D37E8
+
+ arm_func_start OS_GetLowEntropyData
+OS_GetLowEntropyData: ; 0x020CD754
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ ldr r1, _020CD82C ; =0x04000006
+ ldr r2, _020CD830 ; =0x027FFC00
+ ldrh r7, [r1, #0x0]
+ add r4, r2, #0x80
+ mov r6, r0
+ add r5, r4, #0x74
+ bl OS_GetTickLo
+ orr r0, r0, r7, lsl #0x10
+ str r0, [r6, #0x0]
+ ldr r1, _020CD834 ; =0x021D37B4
+ ldr r0, _020CD830 ; =0x027FFC00
+ ldr r3, [r1, #0x0]
+ ldrh r5, [r5, #0x4]
+ ldr r2, [r1, #0x4]
+ ldr r2, _020CD838 ; =0x04000600
+ eor r3, r3, r5, lsl #0x10
+ str r3, [r6, #0x4]
+ ldr r3, [r1, #0x0]
+ ldr r3, [r1, #0x4]
+ ldr r1, [r4, #0x74]
+ ldr r4, [r0, #0x3c]
+ eor r1, r3, r1
+ eor r1, r4, r1
+ str r1, [r6, #0x8]
+ ldr r3, [r6, #0x8]
+ ldr r2, [r2, #0x0]
+ add r1, r0, #0x300
+ eor r2, r3, r2
+ str r2, [r6, #0x8]
+ ldr r2, [r0, #0x1e8]
+ ldr r3, _020CD83C ; =0x04000130
+ str r2, [r6, #0xc]
+ ldr r4, [r0, #0x1ec]
+ ldr r2, _020CD840 ; =0x027FFFA8
+ str r4, [r6, #0x10]
+ ldrh r4, [r1, #0x94]
+ ldr r0, [r0, #0x390]
+ eor r0, r0, r4, lsl #0x10
+ str r0, [r6, #0x14]
+ ldrh r4, [r1, #0xaa]
+ ldrh r0, [r1, #0xac]
+ orr r0, r0, r4, lsl #0x10
+ str r0, [r6, #0x18]
+ ldrh r3, [r3, #0x0]
+ ldrh r0, [r2, #0x0]
+ ldrh r1, [r1, #0x98]
+ orr r0, r3, r0
+ orr r0, r0, r1, lsl #0x10
+ str r0, [r6, #0x1c]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+ .balign 4
+_020CD82C: .word 0x04000006
+_020CD830: .word 0x027FFC00
+_020CD834: .word 0x021D37B4
+_020CD838: .word 0x04000600
+_020CD83C: .word 0x04000130
+_020CD840: .word 0x027FFFA8
+
+ arm_func_start OS_Halt
+OS_Halt: ; 0x020CD844
+ mov r0, #0x0
+ mcr p15, 0x0, r0, c7, c0, 0x4
+ bx lr
+
+ arm_func_start OS_Terminate
+OS_Terminate: ; 0x020CD850
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+_020CD858:
+ bl OS_DisableInterrupts
+ bl OS_Halt
+ b _020CD858
+
+ arm_func_start MI_SetWramBank
+MI_SetWramBank:
+ ldr r1, _020CD870 ; =0x04000247
+ strb r0, [r1, #0x0]
+ bx lr
+ .balign 4
+_020CD870: .word 0x04000247
+
+ arm_func_start MIi_CheckDma0SourceAddress
+MIi_CheckDma0SourceAddress:
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {lr}
+ bxne lr
+ cmp r3, #0x0
+ and r0, r1, #0xff000000
+ beq _020CD8A4
+ cmp r3, #0x800000
+ subeq r1, r1, r2
+ b _020CD8A8
+_020CD8A4:
+ add r1, r1, r2
+_020CD8A8:
+ cmp r0, #0x4000000
+ beq _020CD8D4
+ cmp r0, #0x8000000
+ bhs _020CD8D4
+ and r0, r1, #0xff000000
+ cmp r0, #0x4000000
+ beq _020CD8D4
+ cmp r0, #0x8000000
+ addcc sp, sp, #0x4
+ ldmccia sp!, {lr}
+ bxcc lr
+_020CD8D4:
+ bl OS_Terminate
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start MIi_CheckAnotherAutoDMA
+MIi_CheckAnotherAutoDMA: ; 0x020CD8E4
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ ldr r4, _020CD994 ; =0x040000B8
+ mov r7, r0
+ mov r6, r1
+ mov r5, #0x0
+_020CD8FC:
+ cmp r5, r7
+ beq _020CD978
+ ldr r1, [r4, #0x0]
+ ands r0, r1, #0x80000000
+ beq _020CD978
+ and r0, r1, #0x38000000
+ cmp r0, r6
+ beq _020CD978
+ cmp r0, #0x8000000
+ bne _020CD92C
+ cmp r6, #0x10000000
+ beq _020CD978
+_020CD92C:
+ cmp r0, #0x10000000
+ bne _020CD93C
+ cmp r6, #0x8000000
+ beq _020CD978
+_020CD93C:
+ cmp r0, #0x18000000
+ beq _020CD974
+ cmp r0, #0x20000000
+ beq _020CD974
+ cmp r0, #0x28000000
+ beq _020CD974
+ cmp r0, #0x30000000
+ beq _020CD974
+ cmp r0, #0x38000000
+ beq _020CD974
+ cmp r0, #0x8000000
+ beq _020CD974
+ cmp r0, #0x10000000
+ bne _020CD978
+_020CD974:
+ bl OS_Terminate
+_020CD978:
+ add r5, r5, #0x1
+ cmp r5, #0x3
+ add r4, r4, #0xc
+ blt _020CD8FC
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+ .balign 4
+_020CD994: .word 0x040000B8
+
+ arm_func_start MI_StopDma
+MI_StopDma: ; 0x020CD998
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ bl OS_DisableInterrupts
+ mov r1, #0x6
+ mul r1, r4, r1
+ add r1, r1, #0x5
+ mov r1, r1, lsl #0x1
+ add r1, r1, #0x4000000
+ ldrh r2, [r1, #0xb0]
+ cmp r4, #0x0
+ bic r2, r2, #0x3a00
+ strh r2, [r1, #0xb0]
+ ldrh r2, [r1, #0xb0]
+ bic r2, r2, #0x8000
+ strh r2, [r1, #0xb0]
+ ldrh r2, [r1, #0xb0]
+ ldrh r1, [r1, #0xb0]
+ bne _020CDA08
+ mov r1, #0xc
+ mul r12, r4, r1
+ ldr r1, _020CDA14 ; =0x040000B0
+ add r2, r12, #0x4000000
+ mov r3, #0x0
+ str r3, [r2, #0xb0]
+ add r2, r12, r1
+ ldr r1, _020CDA18 ; =0x81400001
+ str r3, [r2, #0x4]
+ str r1, [r2, #0x8]
+_020CDA08:
+ bl OS_RestoreInterrupts
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020CDA14: .word 0x040000B0
+_020CDA18: .word 0x81400001
+
+ arm_func_start MI_WaitDma
+MI_WaitDma:
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ bl OS_DisableInterrupts
+ mov r1, #0x3
+ mul r2, r4, r1
+ ldr r1, _020CDA84 ; =0x040000B0
+ add r2, r2, #0x2
+ add r2, r1, r2, lsl #0x2
+_020CDA3C:
+ ldr r1, [r2, #0x0]
+ ands r1, r1, #0x80000000
+ bne _020CDA3C
+ cmp r4, #0x0
+ bne _020CDA78
+ mov r1, #0xc
+ mul r12, r4, r1
+ ldr r1, _020CDA84 ; =0x040000B0
+ add r2, r12, #0x4000000
+ mov r3, #0x0
+ str r3, [r2, #0xb0]
+ add r2, r12, r1
+ ldr r1, _020CDA88 ; =0x81400001
+ str r3, [r2, #0x4]
+ str r1, [r2, #0x8]
+_020CDA78:
+ bl OS_RestoreInterrupts
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020CDA84: .word 0x040000B0
+_020CDA88: .word 0x81400001
+
+ arm_func_start MI_DmaCopy32Async
+MI_DmaCopy32Async: ; 0x020CDA8C
+ stmdb sp!, {r4-r8,lr}
+ mov r5, r3
+ mov r6, r2
+ mov r2, r5
+ mov r3, #0x0
+ mov r8, r0
+ mov r7, r1
+ ldr r4, [sp, #0x18]
+ bl MIi_CheckDma0SourceAddress
+_020CDAB0:
+ cmp r5, #0x0
+ bne _020CDAD4
+ cmp r4, #0x0
+ ldmeqia sp!, {r4-r8, lr}
+ bxeq lr
+ ldr r0, [sp, #0x1C]
+ blx r4
+ ldmia sp!, {r4-r8, lr}
+ bx lr
+_020CDAD4:
+ mov r0, r8
+ bl MI_WaitDma
+ cmp r4, #0x0
+ beq _020CDB14
+ ldr r2, [sp, #0x1C]
+ mov r0, r8
+ mov r1, r4
+ bl OSi_EnterDmaCallback
+ mov r3, r5, lsr #0x2
+ mov r0, r8
+ mov r1, r7
+ mov r2, r6
+ orr r3, r3, #0xc4000000
+ bl FUN_01FF85F0
+ ldmia sp!, {r4-r8, lr}
+ bx lr
+_020CDB14:
+ mov r3, r5, lsr #0x2
+ mov r0, r8
+ mov r1, r7
+ mov r2, r6
+ orr r3, r3, #0x84000000
+ bl FUN_01FF85F0
+ ldmia sp!, {r4-r8, lr}
+ bx lr
+
+ arm_func_start MI_DmaFill32Async
+MI_DmaFill32Async: ; 0x020CDB34
+ stmdb sp!, {r4-r8,lr}
+ movs r4, r3
+ mov r7, r0
+ mov r6, r1
+ mov r5, r2
+ ldr r8, [sp, #0x18]
+ bne _020CDB6C
+ cmp r8, #0x0
+ ldmeqia sp!, {r4-r8,lr}
+ bxeq lr
+ ldr r0, [sp, #0x1c]
+ blx r8
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+_020CDB6C:
+ bl MI_WaitDma
+_020CDB70:
+ cmp r8, #0x0
+ beq _020CDBC8
+ ldr r2, [sp, #0x1C]
+ mov r0, r7
+ mov r1, r8
+ bl OSi_EnterDmaCallback
+ bl OS_DisableInterrupts
+ mov r3, r4, lsr #2
+ ldr r1, _20CDC08
+ mov r2, r7, lsl #2
+ add r2, r2, #0x4000000
+ str r5, [r2, #0xE0]
+ mov r4, r0
+ add r1, r1, r7, lsl #0x2
+ mov r0, r7
+ mov r2, r6
+ orr r3, r3, #0xc5000000
+ bl FUN_01FF8544
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+_020CDBC8:
+ bl OS_DisableInterrupts
+ ldr r1, _20CDC08
+ mov r2, r7, lsl #0x2
+ mov r3, r4, lsr #0x2
+ mov r4, r0
+ add ip, r2, #0x4000000
+ mov r0, r7
+ mov r2, r6
+ add r1, r1, r7, lsl #0x2
+ orr r3, r3, #0x85000000
+ str r5, [ip, #0xE0]
+ bl FUN_01FF8544
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+_20CDC08: .word 0x040000E0
+
+ arm_func_start MI_DmaCopy16
+MI_DmaCopy16: ; 0x020CDC0C
+ stmdb sp!, {r4-r8,lr}
+ movs r5, r3
+ mov r8, r0
+ mov r7, r1
+ mov r6, r2
+ ldmeqia sp!, {r4-r8,lr}
+ bxeq lr
+ mov r2, r5
+ mov r3, #0x0
+ bl MIi_CheckDma0SourceAddress
+ mov r0, #0x3
+ mul r1, r8, r0
+ ldr r0, _020CDC80 ; =0x040000B0
+ add r1, r1, #0x2
+ add r4, r0, r1, lsl #0x2
+_020CDC48:
+ ldr r0, [r4, #0x0]
+ ands r0, r0, #0x80000000
+ bne _020CDC48
+ mov r3, r5, lsr #0x1
+ mov r0, r8
+ mov r1, r7
+ mov r2, r6
+ orr r3, r3, #0x80000000
+ bl FUN_01FF857C
+_020CDC6C:
+ ldr r0, [r4]
+ ands r0, r0, #0x80000000
+ bne _020CDC6C
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+_020CDC80: .word 0x040000B0
+
+ arm_func_start MI_DmaCopy32
+MI_DmaCopy32: ; 0x020CDC84
+ stmdb sp!, {r4-r8,lr}
+ mov r5, r3
+ mov r6, r2
+ mov r2, r5
+ mov r3, #0x0
+ mov r8, r0
+ mov r7, r1
+ bl MIi_CheckDma0SourceAddress
+_020CDCA4:
+ cmp r5, #0x0
+ ldmeqia sp!, {r4-r8,lr}
+ bxeq lr
+ mov r0, #0x3
+ mul r1, r8, r0
+ ldr r0, _020CDCFC
+ add r1, r1, #0x2
+ add r4, r0, r1, lsl #0x2
+_020CDCC4:
+ ldr r0, [r4]
+ ands r0, r0, #0x80000000
+ bne _020CDCC4
+ mov r3, r5, lsr #0x2
+ mov r0, r8
+ mov r1, r7
+ mov r2, r6
+ orr r3, r3, #0x84000000
+ bl FUN_01FF857C
+_020CDCE8:
+ ldr r0, [r4]
+ ands r0, r0, #0x80000000
+ bne _020CDCE8
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+_020CDCFC: .word 0x040000B0
+
+ arm_func_start MI_DmaFill32
+MI_DmaFill32: ; 0x020CDD00
+ stmdb sp!, {r4-r8,lr}
+ movs r4, r3
+ mov r8, r0
+ mov r7, r1
+ mov r6, r2
+ ldmeqia sp!, {r4-r8,lr}
+ bxeq lr
+ mov r0, #0x3
+ mul r1, r8, r0
+ ldr r0, _020CDD88 ; =0x040000B0
+ add r1, r1, #0x2
+ add r5, r0, r1, lsl #0x2
+_020CDD30:
+ ldr r0, [r5, #0x0]
+ ands r0, r0, #0x80000000
+ bne _020CDD30
+ bl OS_DisableInterrupts
+ ldr r1, _020CDD8C ; =0x040000E0
+ mov r2, r8, lsl #0x2
+ mov r3, r4, lsr #0x2
+ mov r4, r0
+ add r12, r2, #0x4000000
+ mov r0, r8
+ mov r2, r7
+ add r1, r1, r8, lsl #0x2
+ orr r3, r3, #0x85000000
+ str r6, [r12, #0xe0]
+ bl FUN_01FF84E4
+ mov r0, r4
+ bl OS_RestoreInterrupts
+_020CDD74:
+ ldr r0, [r5]
+ ands r0, r0, #0x80000000
+ bne _020CDD74
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+_020CDD88: .word 0x040000B0
+_020CDD8C: .word 0x040000E0
+
+ arm_func_start MI_HBlankDmaCopy16
+MI_HBlankDmaCopy16: ; 0x020CDD90
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r6, r1
+ mov r7, r0
+ mov r4, r3
+ mov r1, #0x10000000
+ mov r5, r2
+ bl MIi_CheckAnotherAutoDMA
+ mov r0, r7
+ mov r1, r6
+ mov r2, r4
+ mov r3, #0x0
+ bl MIi_CheckDma0SourceAddress
+_020CDDC4:
+ cmp r4, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r7, lr}
+ bxeq lr
+ mov r0, r7
+ bl MI_WaitDma
+ ldr r3, _020CDE00
+ mov r0, r7
+ mov r1, r6
+ mov r2, r5
+ orr r3, r3, r4, lsr #0x1
+ bl FUN_01FF85F0
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020CDE00: .word 0x92600000
+
+ arm_func_start MI_HBlankDmaCopy32
+MI_HBlankDmaCopy32: ; 0x020CDE04
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r6, r1
+ mov r7, r0
+ mov r4, r3
+ mov r1, #0x10000000
+ mov r5, r2
+ bl MIi_CheckAnotherAutoDMA
+ mov r0, r7
+ mov r1, r6
+ mov r2, r4
+ mov r3, #0x0
+ bl MIi_CheckDma0SourceAddress
+_020CDE38:
+ cmp r4, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r7,lr}
+ bxeq lr
+ mov r0, r7
+ bl MI_WaitDma
+ ldr r3, _020CDE74
+ mov r0, r7
+ mov r1, r6
+ mov r2, r5
+ orr r3, r3, r4, lsr #0x2
+ bl FUN_01FF85F0
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020CDE74: .word 0x96600000
+
+ arm_func_start MIi_DMAFastCallback
+MIi_DMAFastCallback: ; 0x020CDE78
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r0, _020CDEB4 ; =0x021D37FC
+ mov r2, #0x0
+ ldr r1, [r0, #0x10]
+ str r2, [r0, #0x0]
+ cmp r1, #0x0
+ addeq sp, sp, #0x4
+ ldr r0, [r0, #0x14]
+ ldmeqia sp!, {lr}
+ bxeq lr
+ blx r1
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020CDEB4: .word 0x021D37FC
+
+ arm_func_start MI_SendGXCommandAsyncFast
+MI_SendGXCommandAsyncFast: ; 0x020CDEB8
+ stmdb sp!, {r4-r6,lr}
+ movs r4, r2
+ mov r6, r0
+ mov r5, r1
+ bne _020CDEE8
+ cmp r3, #0x0
+ ldmeqia sp!, {r4-r6,lr}
+ bxeq lr
+ ldr r0, [sp, #0x10]
+ blx r3
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020CDEE8:
+ ldr r2, _020CDF6C ; =0x021D37FC
+ ldr r0, [r2, #0x0]
+ cmp r0, #0x0
+ bne _020CDEE8
+ ldr r12, [sp, #0x10]
+ mov lr, #0x1
+ mov r0, r6
+ mov r1, #0x38000000
+ str lr, [r2, #0x0]
+ str r6, [r2, #0x4]
+ str r3, [r2, #0x10]
+ str r12, [r2, #0x14]
+ bl MIi_CheckAnotherAutoDMA
+ mov r0, r6
+ mov r1, r5
+ mov r2, r4
+ mov r3, #0x0
+ bl MIi_CheckDma0SourceAddress
+ mov r0, r6
+ bl MI_WaitDma
+ mov r0, r6
+ ldr r1, _020CDF70 ; =MIi_DMAFastCallback
+ mov r2, #0x0
+ bl OSi_EnterDmaCallback
+ mov r0, r6
+ mov r1, r5
+ ldr r2, _020CDF74 ; =0x04000400
+ mov r3, #0x3c00000
+ rsb r3, r3, #0x0
+ orr r3, r3, r4, lsr #0x2
+ bl FUN_01FF85F0
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+ .balign 4
+_020CDF6C: .word 0x021D37FC
+_020CDF70: .word MIi_DMAFastCallback
+_020CDF74: .word 0x04000400
+
+ arm_func_start MIi_DMACallback
+MIi_DMACallback: ; 0x020CDF78
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r0, #0x200000
+ bl OS_DisableIrqMask
+ ldr r2, _020CDFE4 ; =0x04000600
+ ldr r0, _020CDFE8 ; =0x021D37FC
+ ldr r1, [r2, #0x0]
+ ldr r3, [r0, #0x18]
+ bic r1, r1, #0xc0000000
+ orr r1, r1, r3, lsl #0x1e
+ str r1, [r2, #0x0]
+ ldr r1, [r0, #0x1c]
+ mov r0, #0x200000
+ bl OS_SetIrqFunction
+ ldr r0, _020CDFE8 ; =0x021D37FC
+ mov r2, #0x0
+ ldr r1, [r0, #0x10]
+ str r2, [r0, #0x0]
+ cmp r1, #0x0
+ addeq sp, sp, #0x4
+ ldr r0, [r0, #0x14]
+ ldmeqia sp!, {lr}
+ bxeq lr
+ blx r1
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020CDFE4: .word 0x04000600
+_020CDFE8: .word 0x021D37FC
+
+ arm_func_start MIi_FIFOCallback
+MIi_FIFOCallback: ; 0x020CDFEC
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ ldr r0, _020CE0A4 ; =0x021D37FC
+ ldr r4, [r0, #0xc]
+ cmp r4, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r5,lr}
+ bxeq lr
+ ldr r0, _020CE0A4 ; =0x021D37FC
+ cmp r4, #0x1d8
+ ldr r5, [r0, #0x8]
+ movcs r4, #0x1d8
+ ldr r2, [r0, #0xc]
+ add r1, r5, r4
+ subs r2, r2, r4
+ str r2, [r0, #0xc]
+ str r1, [r0, #0x8]
+ bne _020CE078
+ ldr r0, [r0, #0x4]
+ ldr r1, _020CE0A8 ; =MIi_DMACallback
+ mov r2, #0x0
+ bl OSi_EnterDmaCallback
+ mov r0, #0x3bc00000
+ rsb r3, r0, #0x0
+ ldr r1, _020CE0A4 ; =0x021D37FC
+ ldr r2, _020CE0AC ; =0x04000400
+ ldr r0, [r1, #0x4]
+ mov r1, r5
+ orr r3, r3, r4, lsr #0x2
+ bl FUN_01FF85F0
+ mov r0, #0x200000
+ bl OS_ResetRequestIrqMask
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+_020CE078:
+ ldr r3, _020CE0B0 ; =0x84400000
+ ldr r0, [r0, #0x4]
+ ldr r2, _020CE0AC ; =0x04000400
+ mov r1, r5
+ orr r3, r3, r4, lsr #0x2
+ bl FUN_01FF85F0
+ mov r0, #0x200000
+ bl OS_ResetRequestIrqMask
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020CE0A4: .word 0x021D37FC
+_020CE0A8: .word MIi_DMACallback
+_020CE0AC: .word 0x04000400
+_020CE0B0: .word 0x84400000
+
+ arm_func_start MI_SendGXCommandAsync
+MI_SendGXCommandAsync: ; 0x020CE0B4
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r4, r0
+ cmp r2, #0x0
+ bne _020CE0EC
+ cmp r3, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r5,lr}
+ bxeq lr
+ ldr r0, [sp, #0x10]
+ blx r3
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+_020CE0EC:
+ ldr r0, _020CE1BC ; =0x021D37FC
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _020CE0EC
+ ldr r5, _020CE1C0 ; =0x04000600
+_020CE100:
+ ldr r0, [r5, #0x0]
+ and r0, r0, #0x7000000
+ mov r0, r0, lsr #0x18
+ ands r0, r0, #0x2
+ beq _020CE100
+ ldr ip, _020CE1BC ; =0x021D37FC
+ ldr lr, [sp, #0x10]
+ str r3, [r12, #0x10]
+ mov r5, #0x1
+ mov r0, r4
+ mov r3, #0x0
+ str r5, [r12, #0x0]
+ str r4, [r12, #0x4]
+ str r1, [r12, #0x8]
+ str r2, [r12, #0xc]
+ str lr, [r12, #0x14]
+ bl MIi_CheckDma0SourceAddress
+ mov r0, r4
+ bl MI_WaitDma
+ bl OS_DisableInterrupts
+ ldr r1, _020CE1C0 ; =0x04000600
+ mov r4, r0
+ ldr r0, [r1, #0x0]
+ ldr r1, _020CE1BC ; =0x021D37FC
+ and r0, r0, #0xc0000000
+ mov r2, r0, lsr #0x1e
+ mov r0, #0x200000
+ str r2, [r1, #0x18]
+ bl OS_GetIrqFunction
+ ldr r1, _020CE1BC ; =0x021D37FC
+ ldr r2, _020CE1C0 ; =0x04000600
+ str r0, [r1, #0x1c]
+ ldr r0, [r2, #0x0]
+ ldr r1, _020CE1C4 ; =MIi_FIFOCallback
+ bic r0, r0, #0xc0000000
+ orr r3, r0, #0x40000000
+ mov r0, #0x200000
+ str r3, [r2, #0x0]
+ bl OS_SetIrqFunction
+ mov r0, #0x200000
+ bl OS_EnableIrqMask
+ bl MIi_FIFOCallback
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020CE1BC: .word 0x021D37FC
+_020CE1C0: .word 0x04000600
+_020CE1C4: .word MIi_FIFOCallback
+
+ arm_func_start MIi_CpuClear16
+MIi_CpuClear16: ; 0x020CE1C8
+ mov r3, #0x0
+_020CE1CC:
+ cmp r3, r2
+ strlth r0, [r1, r3]
+ addlt r3, r3, #0x2
+ blt _020CE1CC
+ bx lr
+
+ arm_func_start MIi_CpuCopy16
+MIi_CpuCopy16: ; 0x020CE1E0
+ mov r12, #0x0
+_020CE1E4:
+ cmp r12, r2
+ ldrlth r3, [r0, r12]
+ strlth r3, [r1, r12]
+ addlt r12, r12, #0x2
+ blt _020CE1E4
+ bx lr
+
+ arm_func_start MIi_CpuClear32
+MIi_CpuClear32: ; 0x020CE1FC
+ add r12, r1, r2
+_020CE200:
+ cmp r1, r12
+ stmltia r1!, {r0}
+ blt _020CE200
+ bx lr
+
+ arm_func_start MIi_CpuCopy32
+MIi_CpuCopy32: ; 0x020CE210
+ add r12, r1, r2
+_020CE214:
+ cmp r1, r12
+ ldmltia r0!, {r2}
+ stmltia r1!, {r2}
+ blt _020CE214
+ bx lr
+
+ arm_func_start MIi_CpuSend32
+MIi_CpuSend32: ; 0x020CE228
+ add r12, r0, r2
+_020CE22C:
+ cmp r0, r12
+ ldmltia r0!, {r2}
+ strlt r2, [r1, #0x0]
+ blt _020CE22C
+ bx lr
+
+ arm_func_start MIi_CpuClearFast
+MIi_CpuClearFast: ; 0x020CE240
+ stmdb sp!, {r4-r9}
+ add r9, r1, r2
+ mov r12, r2, lsr #0x5
+ add r12, r1, r12, lsl #0x5
+ mov r2, r0
+ mov r3, r2
+ mov r4, r2
+ mov r5, r2
+ mov r6, r2
+ mov r7, r2
+ mov r8, r2
+_020CE26C:
+ cmp r1, r12
+ stmltia r1!, {r0,r2-r8}
+ blt _020CE26C
+_020CE278:
+ cmp r1, r9
+ stmltia r1!, {r0}
+ blt _020CE278
+ ldmia sp!, {r4-r9}
+ bx lr
+
+ arm_func_start MIi_CpuCopyFast
+MIi_CpuCopyFast: ; 0x020CE28C
+ stmdb sp!, {r4-r10}
+ add r10, r1, r2
+ mov r12, r2, lsr #0x5
+ add r12, r1, r12, lsl #0x5
+_020CE29C:
+ cmp r1, r12
+ ldmltia r0!, {r2-r9}
+ stmltia r1!, {r2-r9}
+ blt _020CE29C
+_020CE2AC:
+ cmp r1, r10
+ ldmltia r0!, {r2}
+ stmltia r1!, {r2}
+ blt _020CE2AC
+ ldmia sp!, {r4-r10}
+ bx lr
+
+ arm_func_start FUN_020CE2C4
+FUN_020CE2C4:
+ ldmia r0!, {r2, r3, ip}
+ stmia r1!, {r2, r3, ip}
+ ldmia r0!, {r2, r3, ip}
+ stmia r1!, {r2, r3, ip}
+ ldmia r0!, {r2, r3}
+ stmia r1!, {r2, r3}
+ bx lr
+
+ arm_func_start MI_Copy36B
+MI_Copy36B: ; 0x020CE2E0
+ ldmia r0!, {r2-r3,r12}
+ stmia r1!, {r2-r3,r12}
+ ldmia r0!, {r2-r3,r12}
+ stmia r1!, {r2-r3,r12}
+ ldmia r0!, {r2-r3,r12}
+ stmia r1!, {r2-r3,r12}
+ bx lr
+
+ arm_func_start MI_Copy48B
+MI_Copy48B: ; 0x020CE2FC
+ ldmia r0!, {r2-r3,r12}
+ stmia r1!, {r2-r3,r12}
+ ldmia r0!, {r2-r3,r12}
+ stmia r1!, {r2-r3,r12}
+ ldmia r0!, {r2-r3,r12}
+ stmia r1!, {r2-r3,r12}
+ ldmia r0!, {r2-r3,r12}
+ stmia r1!, {r2-r3,r12}
+ bx lr
+
+ arm_func_start MI_Copy64B
+MI_Copy64B: ; 0x020CE320
+ ldmia r0!, {r2-r3,r12}
+ stmia r1!, {r2-r3,r12}
+ ldmia r0!, {r2-r3,r12}
+ stmia r1!, {r2-r3,r12}
+ ldmia r0!, {r2-r3,r12}
+ stmia r1!, {r2-r3,r12}
+ ldmia r0!, {r2-r3,r12}
+ stmia r1!, {r2-r3,r12}
+ ldmia r0, {r0,r2-r3,r12}
+ stmia r1!, {r0,r2-r3,r12}
+ bx lr
+
+ arm_func_start MI_CpuFill8
+MI_CpuFill8: ; 0x020CE34C
+ cmp r2, #0x0
+ bxeq lr
+ tst r0, #0x1
+ beq _020CE378
+ ldrh r12, [r0, #-0x1]
+ and r12, r12, #0xff
+ orr r3, r12, r1, lsl #0x8
+ strh r3, [r0, #-0x1]
+ add r0, r0, #0x1
+ subs r2, r2, #0x1
+ bxeq lr
+_020CE378:
+ cmp r2, #0x2
+ blo _020CE3C0
+ orr r1, r1, r1, lsl #0x8
+ tst r0, #0x2
+ beq _020CE398
+ strh r1, [r0], #0x2
+ subs r2, r2, #0x2
+ bxeq lr
+_020CE398:
+ orr r1, r1, r1, lsl #0x10
+ bics r3, r2, #0x3
+ beq _020CE3B8
+ sub r2, r2, r3
+ add r12, r3, r0
+_020CE3AC:
+ str r1, [r0], #0x4
+ cmp r0, r12
+ blo _020CE3AC
+_020CE3B8:
+ tst r2, #0x2
+ strneh r1, [r0], #0x2
+_020CE3C0:
+ tst r2, #0x1
+ bxeq lr
+ ldrh r3, [r0, #0x0]
+ and r3, r3, #0xff00
+ and r1, r1, #0xff
+ orr r1, r1, r3
+ strh r1, [r0, #0x0]
+ bx lr
+
+ arm_func_start MI_CpuCopy8
+MI_CpuCopy8:
+ cmp r2, #0x0
+ bxeq lr
+ tst r1, #0x1
+ beq _020CE420
+ ldrh r12, [r1, #-0x1]
+ and r12, r12, #0xff
+ tst r0, #0x1
+ ldrneh r3, [r0, #-0x1]
+ movne r3, r3, lsr #0x8
+ ldreqh r3, [r0, #0x0]
+ orr r3, r12, r3, lsl #0x8
+ strh r3, [r1, #-0x1]
+ add r0, r0, #0x1
+ add r1, r1, #0x1
+ subs r2, r2, #0x1
+ bxeq lr
+_020CE420:
+ eor r12, r1, r0
+ tst r12, #0x1
+ beq _020CE474
+ bic r0, r0, #0x1
+ ldrh r12, [r0], #0x2
+ mov r3, r12, lsr #0x8
+ subs r2, r2, #0x2
+ blo _020CE458
+_020CE440:
+ ldrh r12, [r0], #0x2
+ orr r12, r3, r12, lsl #0x8
+ strh r12, [r1], #0x2
+ mov r3, r12, lsr #0x10
+ subs r2, r2, #0x2
+ bhs _020CE440
+_020CE458:
+ tst r2, #0x1
+ bxeq lr
+ ldrh r12, [r1, #0x0]
+ and r12, r12, #0xff00
+ orr r12, r12, r3
+ strh r12, [r1, #0x0]
+ bx lr
+_020CE474:
+ tst r12, #0x2
+ beq _020CE4A0
+ bics r3, r2, #0x1
+ beq _020CE4EC
+ sub r2, r2, r3
+ add r12, r3, r1
+_020CE48C:
+ ldrh r3, [r0], #0x2
+ strh r3, [r1], #0x2
+ cmp r1, r12
+ blo _020CE48C
+ b _020CE4EC
+_020CE4A0:
+ cmp r2, #0x2
+ blo _020CE4EC
+ tst r1, #0x2
+ beq _020CE4C0
+ ldrh r3, [r0], #0x2
+ strh r3, [r1], #0x2
+ subs r2, r2, #0x2
+ bxeq lr
+_020CE4C0:
+ bics r3, r2, #0x3
+ beq _020CE4E0
+ sub r2, r2, r3
+ add r12, r3, r1
+_020CE4D0:
+ ldr r3, [r0], #0x4
+ str r3, [r1], #0x4
+ cmp r1, r12
+ blo _020CE4D0
+_020CE4E0:
+ tst r2, #0x2
+ ldrneh r3, [r0], #0x2
+ strneh r3, [r1], #0x2
+_020CE4EC:
+ tst r2, #0x1
+ bxeq lr
+ ldrh r2, [r1, #0x0]
+ ldrh r0, [r0, #0x0]
+ and r2, r2, #0xff00
+ and r0, r0, #0xff
+ orr r0, r2, r0
+ strh r0, [r1, #0x0]
+ bx lr
+
+ thumb_func_start MI_Zero36B
+MI_Zero36B: ; 0x020CE510
+ mov r1, #0x0
+ mov r2, #0x0
+ mov r3, #0x0
+ stmia r0!, {r1-r3}
+ stmia r0!, {r1-r3}
+ stmia r0!, {r1-r3}
+ bx lr
+
+ arm_func_start MI_SwapWord
+MI_SwapWord: ; 0x020CE520
+ swp r0, r0, [r1]
+ bx lr
+
+ arm_func_start MI_UncompressLZ8
+MI_UncompressLZ8: ; 0x020CE528
+ stmdb sp!, {r4-r6,lr}
+ ldr r5, [r0], #0x4
+ mov r2, r5, lsr #0x8
+_020CE534:
+ cmp r2, #0x0
+ ble _020CE5B4
+ ldrb lr, [r0], #0x1
+ mov r4, #0x8
+_020CE544:
+ subs r4, r4, #0x1
+ blt _020CE534
+ tst lr, #0x80
+ bne _020CE568
+ ldrb r6, [r0], #0x1
+ .word 0xE1416096
+ add r1, r1, #0x1
+ sub r2, r2, #0x1
+ b _020CE5A4
+_020CE568:
+ ldrb r5, [r0, #0x0]
+ mov r6, #0x3
+ add r3, r6, r5, asr #0x4
+ ldrb r6, [r0], #0x1
+ and r5, r6, #0xf
+ mov r12, r5, lsl #0x8
+ ldrb r6, [r0], #0x1
+ orr r5, r6, r12
+ add r12, r5, #0x1
+ sub r2, r2, r3
+_020CE590:
+ ldrb r5, [r1, -r12]
+ .word 0xE1415095
+ add r1, r1, #0x1
+ subs r3, r3, #0x1
+ bgt _020CE590
+_020CE5A4:
+ cmp r2, #0x0
+ movgt lr, lr, lsl #0x1
+ bgt _020CE544
+ b _020CE534
+_020CE5B4:
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+
+ arm_func_start MIi_CardDmaCopy32
+MIi_CardDmaCopy32: ; 0x020CE5BC
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r5, r1
+ mov r6, r0
+ mov r7, r3
+ mvn r1, #0x0
+ mov r4, r2
+ bl MIi_CheckAnotherAutoDMA
+ mov r0, r6
+ mov r1, r5
+ mov r2, r7
+ mov r3, #0x1000000
+ bl MIi_CheckDma0SourceAddress
+_020CE5F0:
+ cmp r7, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r7, lr}
+ bxeq lr
+ mov r0, #0x3
+ mul r1, r6, r0
+ ldr r0, _020CE640
+ add r1, r1, #0x2
+ add r1, r0, r1, lsl #0x2
+_020CE614:
+ ldr r0, [r1]
+ ands r0, r0, #0x80000000
+ bne _020CE614
+ ldr r3, _020CE644
+ mov r0, r6
+ mov r1, r5
+ mov r2, r4
+ bl FUN_01FF85F0
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7, lr}
+ bx lr
+_020CE640: .word 0x040000B0
+_020CE644: .word 0xAf000001
+
+ arm_func_start MI_Init
+MI_Init: ; 0x020CE648
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r0, #0x3
+ bl MI_SetWramBank
+ mov r0, #0x0
+ bl MI_StopDma
+ add sp, sp, #0x4
+ ldmfd sp!, {lr}
+ bx lr
+
+ arm_func_start PushCommand_impl
+PushCommand_impl: ; 0x020CE66C
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r7, r0
+ mov r0, #0x1
+ mov r6, r1
+ mov r5, r2
+ mov r4, r3
+ bl SND_AllocCommand
+_020CE68C:
+ cmp r0, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r7, lr}
+ bxeq lr
+ str r7, [r0, #0x4]
+ str r6, [r0, #0x8]
+ str r5, [r0, #0xc]
+ ldr r1, [sp, #0x18]
+ str r4, [r0, #0x10]
+ str r1, [r0, #0x14]
+ bl SND_PushCommand
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7, lr}
+ bx lr
+
+ arm_func_start SNDi_SetTrackParam
+SNDi_SetTrackParam: ; 0x020CE6C4
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r12, [sp, #0x8]
+ mov lr, r2
+ str r3, [sp, #0x0]
+ mov r2, r1
+ orr r1, r0, r12, lsl #0x18
+ mov r3, lr
+ mov r0, #0x7
+ bl PushCommand_impl
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start FUN_020CE6F8
+FUN_020CE6F8: ; 0x020CE6F8
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov lr, r1
+ mov r12, r2
+ str r3, [sp, #0x0]
+ mov r1, r0
+ mov r2, lr
+ mov r3, r12
+ mov r0, #0x6
+ bl PushCommand_impl
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start SND_ResetMasterPan
+SND_ResetMasterPan: ; 0x020CE72C
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r2, #0x0
+ mov r3, r2
+ mov r0, #0x18
+ mvn r1, #0x0
+ str r2, [sp, #0x0]
+ bl PushCommand_impl
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start SND_SetMasterPan
+SND_SetMasterPan: ; 0x020CE758
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r2, #0x0
+ mov r1, r0
+ mov r3, r2
+ mov r0, #0x18
+ str r2, [sp, #0x0]
+ bl PushCommand_impl
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start SND_SetOutputSelector
+SND_SetOutputSelector: ; 0x020CE784
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov lr, r1
+ mov r12, r2
+ str r3, [sp, #0x0]
+ mov r1, r0
+ mov r2, lr
+ mov r3, r12
+ mov r0, #0x19
+ bl PushCommand_impl
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start SND_InvalidateWaveData
+SND_InvalidateWaveData: ; 0x020CE7B8
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r2, r1
+ mov r3, #0x0
+ mov r1, r0
+ mov r0, #0x20
+ str r3, [sp, #0x0]
+ bl PushCommand_impl
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start SND_InvalidateBankData
+SND_InvalidateBankData: ; 0x020CE7E4
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r2, r1
+ mov r3, #0x0
+ mov r1, r0
+ mov r0, #0x1f
+ str r3, [sp, #0x0]
+ bl PushCommand_impl
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start SND_InvalidateSeqData
+SND_InvalidateSeqData: ; 0x020CE810
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r2, r1
+ mov r3, #0x0
+ mov r1, r0
+ mov r0, #0x1e
+ str r3, [sp, #0x0]
+ bl PushCommand_impl
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start SND_SetupChannelPcm
+SND_SetupChannelPcm: ; 0x020CE83C
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ ldr r12, [sp, #0x18]
+ mov r3, r3, lsl #0x1a
+ orr r4, r3, r1, lsl #0x18
+ ldr r5, [sp, #0x24]
+ mov r3, r12, lsl #0x18
+ ldr r1, [sp, #0x1c]
+ ldr r12, [sp, #0x10]
+ orr r4, r4, r5, lsl #0x10
+ orr r4, r12, r4
+ ldr lr, [sp, #0x20]
+ orr r3, r3, r1, lsl #0x16
+ ldr r12, [sp, #0x14]
+ orr r1, r0, lr, lsl #0x10
+ orr r3, r12, r3
+ mov r0, #0xe
+ str r4, [sp, #0x0]
+ bl PushCommand_impl
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+
+ arm_func_start SND_SetChannelPan
+SND_SetChannelPan: ; 0x020CE894
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r2, r1
+ mov r3, #0x0
+ mov r1, r0
+ mov r0, #0x15
+ str r3, [sp, #0x0]
+ bl PushCommand_impl
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start SND_SetChannelVolume
+SND_SetChannelVolume: ; 0x020CE8C0
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov lr, r1
+ mov r3, r2
+ mov r12, #0x0
+ mov r1, r0
+ mov r2, lr
+ mov r0, #0x14
+ str r12, [sp, #0x0]
+ bl PushCommand_impl
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start SND_SetChannelTimer
+SND_SetChannelTimer: ; 0x020CE8F4
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r2, r1
+ mov r3, #0x0
+ mov r1, r0
+ mov r0, #0x13
+ str r3, [sp, #0x0]
+ bl PushCommand_impl
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start SND_UnlockChannel
+SND_UnlockChannel: ; 0x020CE920
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r2, r1
+ mov r3, #0x0
+ mov r1, r0
+ mov r0, #0x1b
+ str r3, [sp, #0x0]
+ bl PushCommand_impl
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start SND_LockChannel
+SND_LockChannel: ; 0x020CE94C
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r2, r1
+ mov r3, #0x0
+ mov r1, r0
+ mov r0, #0x1a
+ str r3, [sp, #0x0]
+ bl PushCommand_impl
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start SND_SetupAlarm
+SND_SetupAlarm: ; 0x020CE978
+ stmdb sp!, {r4-r6,lr}
+ sub sp, sp, #0x8
+ mov r4, r2
+ mov r5, r1
+ ldr r2, [sp, #0x18]
+ mov r6, r0
+ mov r1, r3
+ bl SNDi_SetAlarmHandler
+_020CE998:
+ str r0, [sp]
+ mov r1, r6
+ mov r2, r5
+ mov r3, r4
+ mov r0, #0x12
+ bl PushCommand_impl
+ add sp, sp, #0x8
+ ldmia sp!, {r4-r6, lr}
+ bx lr
+
+ arm_func_start SND_SetupCapture
+SND_SetupCapture: ; 0x020CE9BC
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r0, r0, lsl #0x1f
+ orr r0, r0, r1, lsl #0x1e
+ ldr r12, [sp, #0x8]
+ mov r1, r2
+ orr r0, r0, r12, lsl #0x1d
+ ldr r2, [sp, #0xc]
+ mov lr, #0x0
+ orr r0, r0, r2, lsl #0x1c
+ ldr r12, [sp, #0x10]
+ mov r2, r3
+ orr r3, r0, r12, lsl #0x1b
+ mov r0, #0x11
+ str lr, [sp, #0x0]
+ bl PushCommand_impl
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start SND_StopTimer
+SND_StopTimer: ; 0x020CEA08
+ stmdb sp!, {r4-r9,lr}
+ sub sp, sp, #0x4
+ mov r7, r2
+ mov r9, r0
+ mov r8, r1
+ mov r6, r3
+ mov r4, r7
+ mov r5, #0x0
+ b _020CEA44
+_020CEA2C:
+ ands r0, r4, #0x1
+ beq _020CEA3C
+ mov r0, r5
+ bl SNDi_IncAlarmId
+_020CEA3C:
+ add r5, r5, #0x1
+ mov r4, r4, lsr #0x1
+_020CEA44:
+ cmp r5, #0x8
+ bge _020CEA54
+ cmp r4, #0x0
+ bne _020CEA2C
+_020CEA54:
+ mov r1, r9
+ mov r2, r8
+ mov r3, r7
+ mov r0, #0xd
+ str r6, [sp, #0x0]
+ bl PushCommand_impl
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r9,lr}
+ bx lr
+
+ arm_func_start SND_StartTimer
+SND_StartTimer: ; 0x020CEA78
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov lr, r1
+ mov r12, r2
+ str r3, [sp, #0x0]
+ mov r1, r0
+ mov r2, lr
+ mov r3, r12
+ mov r0, #0xc
+ bl PushCommand_impl
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start SND_SetTrackAllocatableChannel
+SND_SetTrackAllocatableChannel: ; 0x020CEAAC
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov lr, r1
+ mov r3, r2
+ mov r12, #0x0
+ mov r1, r0
+ mov r2, lr
+ mov r0, #0x9
+ str r12, [sp, #0x0]
+ bl PushCommand_impl
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start SND_SetTrackPan
+SND_SetTrackPan: ; 0x020CEAE0
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r3, r2
+ mov r12, #0x1
+ mov r2, #0x9
+ str r12, [sp, #0x0]
+ bl SNDi_SetTrackParam
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start SND_SetTrackPitch
+SND_SetTrackPitch: ; 0x020CEB08
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r3, r2
+ mov r12, #0x2
+ mov r2, #0xc
+ str r12, [sp, #0x0]
+ bl SNDi_SetTrackParam
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start SND_SetPlayerChannelPriority
+SND_SetPlayerChannelPriority: ; 0x020CEB30
+ ldr ip, _020CEB44 ; =FUN_020CE6F8
+ mov r2, r1
+ mov r1, #0x4
+ mov r3, #0x1
+ bx r12
+ .balign 4
+_020CEB44: .word FUN_020CE6F8
+
+ arm_func_start SND_SetPlayerVolume
+SND_SetPlayerVolume: ; 0x020CEB48
+ ldr ip, _020CEB5C ; =FUN_020CE6F8
+ mov r2, r1
+ mov r1, #0x6
+ mov r3, #0x2
+ bx r12
+ .balign 4
+_020CEB5C: .word FUN_020CE6F8
+
+ arm_func_start SND_PauseSeq
+SND_PauseSeq: ; 0x020CEB60
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r2, r1
+ mov r3, #0x0
+ mov r1, r0
+ mov r0, #0x4
+ str r3, [sp, #0x0]
+ bl PushCommand_impl
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start SND_StartPreparedSeq
+SND_StartPreparedSeq: ; 0x020CEB8C
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r2, #0x0
+ mov r1, r0
+ mov r3, r2
+ mov r0, #0x3
+ str r2, [sp, #0x0]
+ bl PushCommand_impl
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start SND_PrepareSeq
+SND_PrepareSeq: ; 0x020CEBB8
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov lr, r1
+ mov r12, r2
+ str r3, [sp, #0x0]
+ mov r1, r0
+ mov r2, lr
+ mov r3, r12
+ mov r0, #0x2
+ bl PushCommand_impl
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start SND_StopSeq
+SND_StopSeq: ; 0x020CEBEC
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r2, #0x0
+ mov r1, r0
+ mov r3, r2
+ mov r0, #0x1
+ str r2, [sp, #0x0]
+ bl PushCommand_impl
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start SNDi_UnlockMutex
+SNDi_UnlockMutex: ; 0x020CEC18
+ ldr ip, _020CEC24 ; =OS_UnlockMutex
+ ldr r0, _020CEC28 ; =0x021D3820
+ bx r12
+ .balign 4
+_020CEC24: .word OS_UnlockMutex
+_020CEC28: .word 0x021D3820
+
+ arm_func_start SNDi_LockMutex
+SNDi_LockMutex: ; 0x020CEC2C
+ ldr ip, _020CEC38 ; =OS_LockMutex
+ ldr r0, _020CEC3C ; =0x021D3820
+ bx r12
+ .balign 4
+_020CEC38: .word OS_LockMutex
+_020CEC3C: .word 0x021D3820
+
+ arm_func_start SND_Init
+SND_Init: ; 0x020CEC40
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r1, _020CEC84 ; =0x021D381C
+ ldr r0, [r1, #0x0]
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {lr}
+ bxne lr
+ ldr r0, _020CEC88 ; =0x021D3820
+ mov r2, #0x1
+ str r2, [r1, #0x0]
+ bl OS_InitMutex
+ bl SND_CommandInit
+ bl SND_AlarmInit
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020CEC84: .word 0x021D381C
+_020CEC88: .word 0x021D3820
+
+ arm_func_start IsCommandAvailable
+IsCommandAvailable:
+ stmdb sp!, {r4,lr}
+ bl OS_IsRunOnEmulator
+_020CEC94:
+ cmp r0, #0x0
+ moveq r0, #0x1
+ ldmeqia sp!, {r4, lr}
+ bxeq lr
+ bl OS_DisableInterrupts
+ ldr r1, _020CECD0
+ mov r2, #0x10
+ str r2, [r1]
+ ldr r4, [r1]
+ bl OS_RestoreInterrupts
+ cmp r4, #0x0
+ movne r0, #0x1
+ moveq r0, #0x0
+ ldmia sp!, {r4, lr}
+ bx lr
+_020CECD0: .word 0x04FFF200
+
+ arm_func_start AllocCommand
+AllocCommand: ; 0x020CECD4
+ stmdb sp!, {r4,lr}
+ bl OS_DisableInterrupts
+ ldr r1, _020CED24 ; =0x021D3838
+ ldr r4, [r1, #0x0]
+ cmp r4, #0x0
+ bne _020CECFC
+ bl OS_RestoreInterrupts
+_020CECF0:
+ mov r0, #0x0
+ ldmia sp!, {r4, lr}
+ bx lr
+_020CECFC:
+ ldr r2, [r4, #0x0]
+ str r2, [r1, #0x0]
+ cmp r2, #0x0
+ ldreq r1, _020CED28 ; =0x021D3848
+ moveq r2, #0x0
+ streq r2, [r1, #0x0]
+ bl OS_RestoreInterrupts
+ mov r0, r4
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020CED24: .word 0x021D3838
+_020CED28: .word 0x021D3848
+
+ arm_func_start RequestCommandProc
+RequestCommandProc: ; 0x020CED2C
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, #0x7
+ mov r4, #0x0
+_020CED3C:
+ mov r0, r5
+ mov r1, r4
+ mov r2, r4
+ bl PXI_SendWordByFifo
+_020CED4C:
+ cmp r0, #0
+ blt _020CED3C
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+
+ arm_func_start InitPXI
+InitPXI: ; 0x020CED60
+ stmdb sp!, {r4-r6,lr}
+ ldr r1, _020CEDC8 ; =PxiFifoCallback
+ mov r0, #0x7
+ bl PXI_SetFifoRecvCallback
+ bl IsCommandAvailable
+_020CED74:
+ cmp r0, #0x0
+ ldmeqia sp!, {r4-r6, lr}
+ bxeq lr
+ mov r0, #0x7
+ mov r1, #0x1
+ bl PXI_IsCallbackReady
+ cmp r0, #0x0
+ ldmneia sp!, {r4-r6, lr}
+ bxne lr
+ mov r6, #0x64
+ mov r5, #0x7
+ mov r4, #0x1
+_020CEDA4:
+ mov r0, r6
+ bl OS_SpinWait
+ mov r0, r5
+ mov r1, r4
+ bl PXI_IsCallbackReady
+ cmp r0, #0x0
+ beq _020CEDA4
+ ldmia sp!, {r4-r6, lr}
+ bx lr
+_020CEDC8: .word PxiFifoCallback
+
+ arm_func_start PxiFifoCallback
+PxiFifoCallback: ; 0x020CEDCC
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r1
+ bl OS_DisableInterrupts
+ mov r4, r0
+ mov r0, r5
+ bl SNDi_CallAlarmHandler
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+
+ arm_func_start SND_CountWaitingCommand
+SND_CountWaitingCommand: ; 0x020CEDFC
+ stmdb sp!, {r4,lr}
+ bl SND_CountFreeCommand
+ mov r4, r0
+ bl SND_CountReservedCommand
+ rsb r1, r4, #0x100
+ sub r0, r1, r0
+ ldmia sp!, {r4,lr}
+ bx lr
+
+ arm_func_start SND_CountReservedCommand
+SND_CountReservedCommand: ; 0x020CEE1C
+ stmdb sp!, {r4,lr}
+ bl OS_DisableInterrupts
+ ldr r1, _020CEE58 ; =0x021D3840
+ mov r4, #0x0
+ ldr r1, [r1, #0x0]
+ cmp r1, #0x0
+ beq _020CEE48
+_020CEE38:
+ ldr r1, [r1, #0x0]
+ add r4, r4, #0x1
+ cmp r1, #0x0
+ bne _020CEE38
+_020CEE48:
+ bl OS_RestoreInterrupts
+ mov r0, r4
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020CEE58: .word 0x021D3840
+
+ arm_func_start SND_CountFreeCommand
+SND_CountFreeCommand: ; 0x020CEE5C
+ stmdb sp!, {r4,lr}
+ bl OS_DisableInterrupts
+ ldr r1, _020CEE98 ; =0x021D3838
+ mov r4, #0x0
+ ldr r1, [r1, #0x0]
+ cmp r1, #0x0
+ beq _020CEE88
+_020CEE78:
+ ldr r1, [r1, #0x0]
+ add r4, r4, #0x1
+ cmp r1, #0x0
+ bne _020CEE78
+_020CEE88:
+ bl OS_RestoreInterrupts
+ mov r0, r4
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020CEE98: .word 0x021D3838
+
+ arm_func_start SND_IsFinishedCommandTag
+SND_IsFinishedCommandTag:
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ bl OS_DisableInterrupts
+ ldr r1, _020CEEEC ; =0x021D383C
+ ldr r1, [r1, #0x0]
+ cmp r4, r1
+ bls _020CEECC
+ sub r1, r4, r1
+ cmp r1, #0x80000000
+ movcc r4, #0x0
+ movcs r4, #0x1
+ b _020CEEDC
+_020CEECC:
+ sub r1, r1, r4
+ cmp r1, #0x80000000
+ movcc r4, #0x1
+ movcs r4, #0x0
+_020CEEDC:
+ bl OS_RestoreInterrupts
+ mov r0, r4
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020CEEEC: .word 0x021D383C
+
+ arm_func_start SND_GetCurrentCommandTag
+SND_GetCurrentCommandTag: ; 0x020CEEF0
+ stmdb sp!, {r4,lr}
+ bl OS_DisableInterrupts
+ ldr r1, _020CEF24 ; =0x021D3840
+ ldr r1, [r1, #0x0]
+ cmp r1, #0x0
+ ldreq r1, _020CEF28 ; =0x021D383C
+ ldreq r4, [r1, #0x0]
+ ldrne r1, _020CEF2C ; =0x021D3858
+ ldrne r4, [r1, #0x0]
+ bl OS_RestoreInterrupts
+ mov r0, r4
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020CEF24: .word 0x021D3840
+_020CEF28: .word 0x021D383C
+_020CEF2C: .word 0x021D3858
+
+ arm_func_start SND_WaitForCommandProc
+SND_WaitForCommandProc: ; 0x020CEF30
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ bl SND_IsFinishedCommandTag
+_020CEF40:
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {r4-r5, lr}
+ bxne lr
+ mov r4, #0x0
+_020CEF54:
+ mov r0, r4
+ bl SND_RecvCommandReply
+ cmp r0, #0x0
+ bne _020CEF54
+ mov r0, r5
+ bl SND_IsFinishedCommandTag
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {r4-r5, lr}
+ bxne lr
+ bl RequestCommandProc
+ mov r0, r5
+ bl SND_IsFinishedCommandTag
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {r4-r5, lr}
+ bxne lr
+ mov r4, #0x1
+_020CEF9C:
+ mov r0, r4
+ bl SND_RecvCommandReply
+ mov r0, r5
+ bl SND_IsFinishedCommandTag
+ cmp r0, #0x0
+ beq _020CEF9C
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5, lr}
+ bx lr
+
+ arm_func_start SND_FlushCommand
+SND_FlushCommand: ; 0x020CEFC0
+ stmdb sp!, {r4-r9,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ bl OS_DisableInterrupts
+ ldr r1, _020CF164 ; =0x021D3840
+ mov r4, r0
+ ldr r1, [r1, #0x0]
+ cmp r1, #0x0
+ bne _020CEFF8
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ mov r0, #0x1
+ ldmia sp!, {r4-r9,lr}
+ bx lr
+_020CEFF8:
+ ldr r1, _020CF168 ; =0x021D3854
+ ldr r1, [r1, #0x0]
+ cmp r1, #0x8
+ blt _020CF03C
+ ands r1, r5, #0x1
+ bne _020CF024
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ mov r0, #0x0
+ ldmia sp!, {r4-r9,lr}
+ bx lr
+_020CF024:
+ mov r0, #0x1
+ bl SND_RecvCommandReply
+ ldr r0, _020CF168 ; =0x021D3854
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x8
+ bge _020CF024
+_020CF03C:
+ ldr r0, _020CF16C ; =0x021D3B00
+ mov r1, #0x1800
+ bl DC_FlushRange
+ ldr r1, _020CF164 ; =0x021D3840
+ mov r0, #0x7
+ ldr r1, [r1, #0x0]
+ mov r2, #0x0
+ bl PXI_SendWordByFifo
+_020CF05C:
+ cmp r0, #0x0
+ bge _020CF0E0
+ ands r0, r5, #0x1
+ bne _020CF084
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ mov r0, #0x0
+ ldmia sp!, {r4-r9, lr}
+ bx lr
+_020CF084:
+ ldr r1, _020CF164
+ mov r0, #0x7
+ ldr r1, [r1]
+ mov r2, #0x0
+ bl PXI_SendWordByFifo
+ cmp r0, #0x0
+ bge _020CF0E0
+ ldr r6, _020CF164
+ mov r9, #0x64
+ mov r8, #0x7
+ mov r7, #0x0
+_020CF0B0:
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ mov r0, r9
+ bl OS_SpinWait
+ bl OS_DisableInterrupts
+ mov r4, r0
+ mov r0, r8
+ ldr r1, [r6]
+ mov r2, r7
+ bl PXI_SendWordByFifo
+ cmp r0, #0x0
+ blt _020CF0B0
+_020CF0E0:
+ ands r0, r5, #0x2
+ beq _020CF0EC
+ bl RequestCommandProc
+_020CF0EC:
+ ldr r0, _020CF170
+ ldr r1, _020CF164
+ ldr r3, [r0]
+ ldr r5, [r1]
+ add r1, r3, #0x1
+ ldr r2, _020CF174
+ str r1, [r0]
+ str r5, [r2, r3, lsl #2]
+ cmp r1, #0x8
+ movgt r1, #0x0
+ ldr r2, _020CF168
+ strgt r1, [r0]
+ ldr r1, _020CF178
+ ldr r3, [r2]
+ ldr r0, [r1]
+ add ip, r3, #0x1
+ add r6, r0, #0x1
+ ldr r5, _020CF164
+ mov lr, #0x0
+ ldr r3, _020CF17C
+ mov r0, r4
+ str lr, [r5]
+ str lr, [r3]
+ str ip, [r2]
+ str r6, [r1]
+ bl OS_RestoreInterrupts
+ mov r0, #0x1
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r9, lr}
+ bx lr
+_020CF164: .word 0x021D3840
+_020CF168: .word 0x021D3854
+_020CF16C: .word 0x021D3B00
+_020CF170: .word 0x021D3850
+_020CF174: .word 0x021D385C
+_020CF178: .word 0x021D3858
+_020CF17C: .word 0x021D3844
+
+ arm_func_start SND_PushCommand
+SND_PushCommand: ; 0x020CF180
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ bl OS_DisableInterrupts
+ ldr r2, _020CF1C0 ; =0x021D3844
+ ldr r1, [r2, #0x0]
+ cmp r1, #0x0
+ ldreq r1, _020CF1C4 ; =0x021D3840
+ streq r4, [r2, #0x0]
+ streq r4, [r1, #0x0]
+ strne r4, [r1, #0x0]
+ strne r4, [r2, #0x0]
+ mov r1, #0x0
+ str r1, [r4, #0x0]
+ bl OS_RestoreInterrupts
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020CF1C0: .word 0x021D3844
+_020CF1C4: .word 0x021D3840
+
+ arm_func_start SND_AllocCommand
+SND_AllocCommand:
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ bl IsCommandAvailable
+_020CF1D4:
+ cmp r0, #0x0
+ moveq r0, #0x0
+ ldmeqia sp!, {r4,lr}
+ bxeq lr
+ bl AllocCommand
+ cmp r0, #0x0
+ ldmneia sp!, {r4,lr}
+ bxne lr
+ ands r0, r4, #0x1
+ moveq r0, #0x0
+ ldmeqia sp!, {r4,lr}
+ bxeq lr
+ bl SND_CountWaitingCommand
+ cmp r0, #0x0
+ ble _020CF238
+ mov r4, #0x0
+_020CF214:
+ mov r0, r4
+ bl SND_RecvCommandReply
+ cmp r0, #0x0
+ bne _020CF214
+ bl AllocCommand
+ cmp r0, #0x0
+ beq _020CF240
+ ldmia sp!, {r4,lr}
+ bx lr
+_020CF238:
+ mov r0, #0x1
+ bl SND_FlushCommand
+_020CF240:
+ bl RequestCommandProc
+ mov r4, #0x1
+_020CF248:
+ mov r0, r4
+ bl SND_RecvCommandReply
+ bl AllocCommand
+ cmp r0, #0x0
+ beq _020CF248
+ ldmia sp!, {r4,lr}
+ bx lr
+
+ arm_func_start SND_RecvCommandReply
+SND_RecvCommandReply: ; 0x020CF264
+ stmdb sp!, {r4-r6,lr}
+ mov r4, r0
+ bl OS_DisableInterrupts
+ mov r5, r0
+ ands r0, r4, #0x1
+ beq _020CF2C0
+ bl SNDi_GetFinishedCommandTag
+ ldr r4, _020CF380 ; =0x021D383C
+ ldr r1, [r4, #0x0]
+ cmp r1, r0
+ bne _020CF2E8
+ mov r6, #0x64
+_020CF294:
+ mov r0, r5
+ bl OS_RestoreInterrupts
+ mov r0, r6
+ bl OS_SpinWait
+ bl OS_DisableInterrupts
+ mov r5, r0
+ bl SNDi_GetFinishedCommandTag
+ ldr r1, [r4, #0x0]
+ cmp r1, r0
+ beq _020CF294
+ b _020CF2E8
+_020CF2C0:
+ bl SNDi_GetFinishedCommandTag
+ ldr r1, _020CF380 ; =0x021D383C
+ ldr r1, [r1, #0x0]
+ cmp r1, r0
+ bne _020CF2E8
+ mov r0, r5
+ bl OS_RestoreInterrupts
+_020CF2DC:
+ mov r0, #0x0
+ ldmia sp!, {r4-r6, lr}
+ bx lr
+_020CF2E8:
+ ldr r0, _020CF384 ; =0x021D384C
+ ldr r2, _020CF388 ; =0x021D385C
+ ldr r3, [r0, #0x0]
+ add r1, r3, #0x1
+ ldr r4, [r2, r3, lsl #0x2]
+ str r1, [r0, #0x0]
+ cmp r1, #0x8
+ movgt r1, #0x0
+ strgt r1, [r0, #0x0]
+ ldr r0, [r4, #0x0]
+ mov r1, r4
+ cmp r0, #0x0
+ beq _020CF32C
+_020CF31C:
+ ldr r1, [r1, #0x0]
+ ldr r0, [r1, #0x0]
+ cmp r0, #0x0
+ bne _020CF31C
+_020CF32C:
+ ldr r0, _020CF38C ; =0x021D3848
+ ldr r3, _020CF390 ; =0x021D3854
+ ldr r0, [r0, #0x0]
+ ldr r2, _020CF380 ; =0x021D383C
+ cmp r0, #0x0
+ strne r4, [r0, #0x0]
+ ldreq r0, _020CF394 ; =0x021D3838
+ ldr lr, [r3, #0x0]
+ streq r4, [r0, #0x0]
+ ldr ip, _020CF38C ; =0x021D3848
+ sub r6, lr, #0x1
+ ldr r0, [r2, #0x0]
+ str r1, [r12, #0x0]
+ add lr, r0, #0x1
+ mov r0, r5
+ str r6, [r3, #0x0]
+ str lr, [r2, #0x0]
+ bl OS_RestoreInterrupts
+ mov r0, r4
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+ .balign 4
+_020CF380: .word 0x021D383C
+_020CF384: .word 0x021D384C
+_020CF388: .word 0x021D385C
+_020CF38C: .word 0x021D3848
+_020CF390: .word 0x021D3854
+_020CF394: .word 0x021D3838
+
+ arm_func_start SND_CommandInit
+SND_CommandInit: ; 0x020CF398
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x4
+ bl InitPXI
+ ldr r3, _020CF478 ; =0x021D3B00
+ ldr r0, _020CF47C ; =0x021D3838
+ mov r4, #0x0
+ str r3, [r0, #0x0]
+ mov r1, r3
+ mov r0, #0x18
+_020CF3BC:
+ add r4, r4, #0x1
+ mla r2, r4, r0, r1
+ cmp r4, #0xff
+ str r2, [r3], #0x18
+ blt _020CF3BC
+ ldr r7, _020CF480 ; =0x021D4B00
+ mov r10, #0x0
+ ldr r5, _020CF484 ; =0x021D3840
+ ldr r4, _020CF488 ; =0x021D3844
+ ldr lr, _020CF48C ; =0x021D3854
+ ldr ip, _020CF490 ; =0x021D384C
+ ldr r3, _020CF494 ; =0x021D3850
+ ldr r1, _020CF498 ; =0x021D383C
+ ldr sb, _020CF49C ; =0x021D52E8
+ ldr r6, _020CF4A0 ; =0x021D3848
+ ldr r2, _020CF4A4 ; =0x021D3858
+ mov r8, #0x1
+ ldr r0, _020CF4A8 ; =0x021D3880
+ ldr fp, _020CF4AC ; =0x021D5360
+ str r9, [r6, #0x0]
+ str r10, [r7, #0x7e8]
+ str r10, [r5, #0x0]
+ str r10, [r4, #0x0]
+ str r10, [lr, #0x0]
+ str r10, [r12, #0x0]
+ str r10, [r3, #0x0]
+ str r8, [r2, #0x0]
+ str r10, [r1, #0x0]
+ str r0, [r11, #0x0]
+ bl SNDi_InitSharedWork
+ mov r0, r8
+ bl SND_AllocCommand
+_020CF43C:
+ cmp r0, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r11, lr}
+ bxeq lr
+ mov r2, #0x1D
+ mov r1, fp
+ str r2, [r0, #0x4]
+ ldr r1, [r1]
+ str r1, [r0, #0x8]
+ bl SND_PushCommand
+ mov r0, r8
+ bl SND_FlushCommand
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r11, lr}
+ bx lr
+_020CF478: .word 0x021D3B00
+_020CF47C: .word 0x021D3838
+_020CF480: .word 0x021D4B00
+_020CF484: .word 0x021D3840
+_020CF488: .word 0x021D3844
+_020CF48C: .word 0x021D3854
+_020CF490: .word 0x021D384C
+_020CF494: .word 0x021D3850
+_020CF498: .word 0x021D383C
+_020CF49C: .word 0x021D52E8
+_020CF4A0: .word 0x021D3848
+_020CF4A4: .word 0x021D3858
+_020CF4A8: .word 0x021D3880
+_020CF4AC: .word 0x021D5360
+
+ arm_func_start SNDi_CallAlarmHandler
+SNDi_CallAlarmHandler: ; 0x020CF4B0
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r3, _020CF50C ; =0x021D5300
+ and r2, r0, #0xff
+ mov r1, #0xc
+ mla r3, r2, r1, r3
+ mov r1, r0, asr #0x8
+ ldrb r0, [r3, #0x8]
+ and r1, r1, #0xff
+ cmp r1, r0
+ addne sp, sp, #0x4
+ ldmneia sp!, {lr}
+ bxne lr
+ ldr r1, [r3, #0x0]
+ cmp r1, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {lr}
+ bxeq lr
+ ldr r0, [r3, #0x4]
+ blx r1
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020CF50C: .word 0x021D5300
+
+ arm_func_start SNDi_SetAlarmHandler
+SNDi_SetAlarmHandler:
+ mov r3, #0xc
+ mul r3, r0, r3
+ ldr r0, _020CF53C ; =0x021D5300
+ str r1, [r0, r3]
+ add r1, r0, r3
+ str r2, [r1, #0x4]
+ ldrb r0, [r1, #0x8]
+ add r0, r0, #0x1
+ strb r0, [r1, #0x8]
+ ldrb r0, [r1, #0x8]
+ bx lr
+ .balign 4
+_020CF53C: .word 0x021D5300
+
+ arm_func_start SNDi_IncAlarmId
+SNDi_IncAlarmId: ; 0x020CF540
+ ldr r2, _020CF55C ; =0x021D5300
+ mov r1, #0xc
+ mla r1, r0, r1, r2
+ ldrb r0, [r1, #0x8]
+ add r0, r0, #0x1
+ strb r0, [r1, #0x8]
+ bx lr
+ .balign 4
+_020CF55C: .word 0x021D5300
+
+ arm_func_start SND_AlarmInit
+SND_AlarmInit: ; 0x020CF560
+ ldr r1, _020CF58C ; =0x021D5300
+ mov r2, #0x0
+ mov r0, r2
+_020CF56C:
+ str r0, [r1, #0x0]
+ str r0, [r1, #0x4]
+ add r2, r2, #0x1
+ strb r0, [r1, #0x8]
+ cmp r2, #0x8
+ add r1, r1, #0xc
+ blt _020CF56C
+ bx lr
+ .balign 4
+_020CF58C: .word 0x021D5300
+
+ arm_func_start SNDi_InitSharedWork
+SNDi_InitSharedWork: ; 0x020CF590
+ stmdb sp!, {r4,lr}
+ mov r4, #0x0
+ str r4, [r0, #0x4]
+ strh r4, [r0, #0x8]
+ strh r4, [r0, #0xa]
+ mov r12, r0
+ str r4, [r0, #0x0]
+ mov r3, r4
+ mvn r2, #0x0
+_020CF5B4:
+ mov lr, r3
+ str r3, [r12, #0x40]
+_020CF5BC:
+ add r1, r12, lr, lsl #0x1
+ add lr, lr, #0x1
+ strh r2, [r1, #0x20]
+ cmp lr, #0x10
+ blt _020CF5BC
+ add r4, r4, #0x1
+ cmp r4, #0x10
+ add r12, r12, #0x24
+ blt _020CF5B4
+ mov r3, #0x0
+ mvn r2, #0x0
+_020CF5E8:
+ add r1, r0, r3, lsl #0x1
+ add r1, r1, #0x200
+ add r3, r3, #0x1
+ strh r2, [r1, #0x60]
+ cmp r3, #0x10
+ blt _020CF5E8
+ mov r1, #0x280
+ bl DC_FlushRange
+ ldmia sp!, {r4,lr}
+ bx lr
+
+ arm_func_start SNDi_GetFinishedCommandTag
+SNDi_GetFinishedCommandTag: ; 0x020CF610
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r0, _020CF640 ; =0x021D5360
+ mov r1, #0x4
+ ldr r0, [r0, #0x0]
+ bl DC_InvalidateRange
+ ldr r0, _020CF640 ; =0x021D5360
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x0]
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020CF640: .word 0x021D5360
+
+ arm_func_start SND_GetPlayerTickCounter
+SND_GetPlayerTickCounter: ; 0x020CF644
+ stmdb sp!, {r4,lr}
+ mov r1, #0x24
+ mul r4, r0, r1
+ ldr r0, _020CF680 ; =0x021D5360
+ mov r1, #0x4
+ ldr r0, [r0, #0x0]
+ add r0, r0, #0x40
+ add r0, r0, r4
+ bl DC_InvalidateRange
+ ldr r0, _020CF680 ; =0x021D5360
+ ldr r0, [r0, #0x0]
+ add r0, r0, r4
+ ldr r0, [r0, #0x40]
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020CF680: .word 0x021D5360
+
+ arm_func_start SND_GetChannelStatus
+SND_GetChannelStatus: ; 0x020CF684
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r0, _020CF6B8 ; =0x021D5360
+ mov r1, #0x2
+ ldr r0, [r0, #0x0]
+ add r0, r0, #0x8
+ bl DC_InvalidateRange
+ ldr r0, _020CF6B8 ; =0x021D5360
+ ldr r0, [r0, #0x0]
+ ldrh r0, [r0, #0x8]
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020CF6B8: .word 0x021D5360
+
+ arm_func_start SND_GetPlayerStatus
+SND_GetPlayerStatus: ; 0x020CF6BC
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r0, _020CF6F0 ; =0x021D5360
+ mov r1, #0x4
+ ldr r0, [r0, #0x0]
+ add r0, r0, #0x4
+ bl DC_InvalidateRange
+ ldr r0, _020CF6F0 ; =0x021D5360
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x4]
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020CF6F0: .word 0x021D5360
+
+ arm_func_start SND_CalcChannelVolume
+SND_CalcChannelVolume: ; 0x020CF6F4
+ ldr r1, _020CF75C ; =0xFFFFFD2D
+ cmp r0, r1
+ movlt r0, r1
+ blt _020CF70C
+ cmp r0, #0x0
+ movgt r0, #0x0
+_020CF70C:
+ ldr r1, _020CF760 ; =0x000002D3
+ ldr r2, _020CF764 ; =0x02103CAC
+ add r3, r0, r1
+ mvn r1, #0xef
+ cmp r0, r1
+ ldrb r2, [r2, r3]
+ movlt r0, #0x3
+ blt _020CF74C
+ mvn r1, #0x77
+ cmp r0, r1
+ movlt r0, #0x2
+ blt _020CF74C
+ mvn r1, #0x3b
+ cmp r0, r1
+ movlt r0, #0x1
+ movge r0, #0x0
+_020CF74C:
+ orr r0, r2, r0, lsl #0x8
+ mov r0, r0, lsl #0x10
+ mov r0, r0, lsr #0x10
+ bx lr
+ .balign 4
+_020CF75C: .word 0xFFFFFD2D
+_020CF760: .word 0x000002D3
+_020CF764: .word 0x02103CAC
+
+ arm_func_start SND_GetWaveDataAddress
+SND_GetWaveDataAddress: ; 0x020CF768
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ mov r4, r1
+ bl SNDi_LockMutex
+ add r0, r5, r4, lsl #0x2
+ ldr r4, [r0, #0x3c]
+ cmp r4, #0x0
+ beq _020CF798
+ cmp r4, #0x2000000
+ addcc r4, r5, r4
+ b _020CF79C
+_020CF798:
+ mov r4, #0x0
+_020CF79C:
+ bl SNDi_UnlockMutex
+ mov r0, r4
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+
+ arm_func_start SND_SetWaveDataAddress
+SND_SetWaveDataAddress: ; 0x020CF7B0
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0
+ mov r5, r1
+ mov r4, r2
+ bl SNDi_LockMutex
+ add r0, r6, #0x3c
+ add r2, r6, r5, lsl #0x2
+ add r0, r0, r5, lsl #0x2
+ mov r1, #0x4
+ str r4, [r2, #0x3c]
+ bl DC_StoreRange
+ bl SNDi_UnlockMutex
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+
+ arm_func_start SND_GetWaveDataCount
+SND_GetWaveDataCount: ; 0x020CF7E8
+ ldr r0, [r0, #0x38]
+ bx lr
+
+ arm_func_start SND_GetNextInstData
+SND_GetNextInstData: ; 0x020CF7F0
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ ldr r4, [r2, #0x0]
+ ldr r3, [r0, #0x38]
+ cmp r4, r3
+ bhs _020CF9B8
+ mov r12, #0x0
+_020CF80C:
+ add r3, r0, r4, lsl #0x2
+ ldr r4, [r3, #0x3c]
+ strb r4, [r1, #0x0]
+ ldrb r3, [r1, #0x0]
+ cmp r3, #0x10
+ bgt _020CF850
+ cmp r3, #0x10
+ bge _020CF8A8
+ cmp r3, #0x5
+ addls pc, pc, r3, lsl #0x2
+ b _020CF998
+_020CF838:
+ b _020CF998
+ b _020CF85C
+ b _020CF85C
+ b _020CF85C
+ b _020CF85C
+ b _020CF85C
+_020CF850:
+ cmp r3, #0x11
+ beq _020CF924
+ b _020CF998
+_020CF85C:
+ mov r3, r4, lsr #0x8
+ add r5, r0, r4, lsr #0x8
+ ldrh r4, [r0, r3]
+ ldrh r3, [r5, #0x2]
+ add sp, sp, #0x4
+ mov r0, #0x1
+ strh r4, [r1, #0x2]
+ strh r3, [r1, #0x4]
+ ldrh r4, [r5, #0x4]
+ ldrh r3, [r5, #0x6]
+ strh r4, [r1, #0x6]
+ strh r3, [r1, #0x8]
+ ldrh r3, [r5, #0x8]
+ strh r3, [r1, #0xA]
+ ldr r1, [r2]
+ add r1, r1, #0x1
+ str r1, [r2]
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+_020CF8A8:
+ add r5, r0, r4, lsr #0x8
+ b _020CF904
+_020CF8B0:
+ mov r0, #0xc
+ mla r12, lr, r0, r5
+ ldrh r4, [r12, #0x2]
+ ldrh r3, [r12, #0x4]
+ add sp, sp, #0x4
+ mov r0, #0x1
+ strh r4, [r1, #0x0]
+ strh r3, [r1, #0x2]
+ ldrh r4, [r12, #0x6]
+ ldrh r3, [r12, #0x8]
+ strh r4, [r1, #0x4]
+ strh r3, [r1, #0x6]
+ ldrh r4, [r12, #0xa]
+ ldrh r3, [r12, #0xc]
+ strh r4, [r1, #0x8]
+ strh r3, [r1, #0xa]
+ ldr r1, [r2, #0x4]
+ add r1, r1, #0x1
+ str r1, [r2, #0x4]
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+_020CF904:
+ ldrb r4, [r5, #0x1]
+ ldrb r3, [r5, #0x0]
+ ldr lr, [r2, #0x4]
+ sub r3, r4, r3
+ add r3, r3, #0x1
+ cmp lr, r3
+ blo _020CF8B0
+ b _020CF998
+_020CF924:
+ add r4, r0, r4, lsr #0x8
+ b _020CF98C
+_020CF92C:
+ ldrb lr, [r4, r3]
+ cmp lr, #0x0
+ beq _020CF998
+ mov r0, #0xc
+ mla lr, r3, r0, r4
+ ldrh r12, [lr, #0x8]
+ ldrh r3, [lr, #0xa]
+ add sp, sp, #0x4
+ mov r0, #0x1
+ strh r12, [r1, #0x0]
+ strh r3, [r1, #0x2]
+ ldrh r12, [lr, #0xc]
+ ldrh r3, [lr, #0xe]
+ strh r12, [r1, #0x4]
+ strh r3, [r1, #0x6]
+ ldrh r12, [lr, #0x10]
+ ldrh r3, [lr, #0x12]
+ strh r12, [r1, #0x8]
+ strh r3, [r1, #0xa]
+ ldr r1, [r2, #0x4]
+ add r1, r1, #0x1
+ str r1, [r2, #0x4]
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+_020CF98C:
+ ldr r3, [r2, #0x4]
+ cmp r3, #0x8
+ blo _020CF92C
+_020CF998:
+ ldr r3, [r2, #0x0]
+ add r3, r3, #0x1
+ str r3, [r2, #0x0]
+ str r12, [r2, #0x4]
+ ldr r4, [r2, #0x0]
+ ldr r3, [r0, #0x38]
+ cmp r4, r3
+ blo _020CF80C
+_020CF9B8:
+ mov r0, #0x0
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+
+ arm_func_start SND_GetFirstInstDataPos
+SND_GetFirstInstDataPos: ; 0x020CF9C8
+ sub sp, sp, #0x8
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ str r1, [sp, #0x4]
+ str r1, [r0, #0x0]
+ str r1, [r0, #0x4]
+ add sp, sp, #0x8
+ bx lr
+
+ arm_func_start SND_DestroyWaveArc
+SND_DestroyWaveArc: ; 0x020CF9E8
+ stmdb sp!, {r4-r6,lr}
+ mov r4, r0
+ bl SNDi_LockMutex
+ ldr r0, [r4, #0x18]
+ cmp r0, #0x0
+ beq _020CFA28
+ mov r5, #0x0
+ mov r4, #0x8
+_020CFA08:
+ ldr r6, [r0, #0x4]
+ mov r1, r4
+ str r5, [r0, #0x0]
+ str r5, [r0, #0x4]
+ bl DC_StoreRange
+ mov r0, r6
+ cmp r6, #0x0
+ bne _020CFA08
+_020CFA28:
+ bl SNDi_UnlockMutex
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+
+ arm_func_start SND_DestroyBank
+SND_DestroyBank: ; 0x020CFA34
+ stmdb sp!, {r4-r8,lr}
+ mov r7, r0
+ bl SNDi_LockMutex
+ add r5, r7, #0x18
+ mov r6, #0x0
+ mov r8, #0x8
+ mov r4, #0x3c
+_020CFA50:
+ add r1, r7, r6, lsl #0x3
+ ldr r0, [r1, #0x18]
+ cmp r0, #0x0
+ beq _020CFAB8
+ ldr r3, [r0, #0x18]
+ cmp r5, r3
+ bne _020CFA80
+ ldr r2, [r1, #0x1c]
+ mov r1, r4
+ str r2, [r0, #0x18]
+ bl DC_StoreRange
+ b _020CFAB8
+_020CFA80:
+ cmp r3, #0x0
+ beq _020CFAA0
+_020CFA88:
+ ldr r0, [r3, #0x4]
+ cmp r5, r0
+ beq _020CFAA0
+ mov r3, r0
+ cmp r0, #0x0
+ bne _020CFA88
+_020CFAA0:
+ add r0, r7, r6, lsl #0x3
+ ldr r2, [r0, #0x1c]
+ mov r0, r3
+ mov r1, r8
+ str r2, [r3, #0x4]
+ bl DC_StoreRange
+_020CFAB8:
+ add r6, r6, #0x1
+ cmp r6, #0x4
+ add r5, r5, #0x8
+ blt _020CFA50
+ bl SNDi_UnlockMutex
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+
+ arm_func_start SND_AssignWaveArc
+SND_AssignWaveArc: ; 0x020CFAD4
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0
+ mov r5, r1
+ mov r4, r2
+ bl SNDi_LockMutex
+ add r3, r6, r5, lsl #0x3
+ ldr r2, [r3, #0x18]
+ mov r12, r5, lsl #0x3
+ cmp r2, #0x0
+ beq _020CFB70
+ cmp r4, r2
+ bne _020CFB10
+ bl SNDi_UnlockMutex
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020CFB10:
+ add r1, r6, #0x18
+ ldr r0, [r2, #0x18]
+ add r12, r1, r12
+ cmp r12, r0
+ bne _020CFB3C
+ ldr r0, [r3, #0x1c]
+ mov r1, #0x3c
+ str r0, [r2, #0x18]
+ ldr r0, [r3, #0x18]
+ bl DC_StoreRange
+ b _020CFB70
+_020CFB3C:
+ cmp r0, #0x0
+ beq _020CFB5C
+_020CFB44:
+ ldr r1, [r0, #0x4]
+ cmp r12, r1
+ beq _020CFB5C
+ mov r0, r1
+ cmp r1, #0x0
+ bne _020CFB44
+_020CFB5C:
+ add r1, r6, r5, lsl #0x3
+ ldr r2, [r1, #0x1c]
+ mov r1, #0x8
+ str r2, [r0, #0x4]
+ bl DC_StoreRange
+_020CFB70:
+ add r0, r6, #0x18
+ ldr r1, [r4, #0x18]
+ add r0, r0, r5, lsl #0x3
+ str r0, [r4, #0x18]
+ add r0, r6, r5, lsl #0x3
+ str r1, [r0, #0x1c]
+ str r4, [r0, #0x18]
+ bl SNDi_UnlockMutex
+ mov r0, r6
+ mov r1, #0x3c
+ bl DC_StoreRange
+ mov r0, r4
+ mov r1, #0x3c
+ bl DC_StoreRange
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+
+ arm_func_start PXI_Init
+PXI_Init: ; 0x020CFBB0
+ ldr ip, _020CFBB8 ; =PXI_InitFifo
+ bx r12
+ .balign 4
+_020CFBB8: .word PXI_InitFifo
+
+ arm_func_start PXIi_HandlerRecvFifoNotEmpty
+PXIi_HandlerRecvFifoNotEmpty: ; 0x020CFBBC
+ stmdb sp!, {r4-r10,lr}
+ sub sp, sp, #0x8
+ ldr sl, _020CFCD4 ; =0x04000184
+ ldr r5, _020CFCD8 ; =0x021D5368
+ ldr r4, _020CFCDC ; =0x04000188
+ mov r7, #0x4100000
+ mov r6, #0x0
+ mvn r8, #0x3
+ mvn r9, #0x2
+_020CFBE0:
+ ldrh r0, [r10, #0x0]
+ ands r0, r0, #0x4000
+ ldrneh r0, [r10, #0x0]
+ movne r1, r9
+ orrne r0, r0, #0xc000
+ strneh r0, [r10, #0x0]
+ bne _020CFC28
+ bl OS_DisableInterrupts
+ ldrh r1, [r10, #0x0]
+ ands r1, r1, #0x100
+ beq _020CFC18
+ bl OS_RestoreInterrupts
+ mov r1, r8
+ b _020CFC28
+_020CFC18:
+ ldr r1, [r7, #0x0]
+ str r1, [sp, #0x0]
+ bl OS_RestoreInterrupts
+ mov r1, r6
+_020CFC28:
+ cmp r1, r8
+ addeq sp, sp, #0x8
+ ldmeqia sp!, {r4-r10,lr}
+ bxeq lr
+ mvn r0, #0x2
+ cmp r1, r0
+ beq _020CFBE0
+ ldr r1, [sp, #0x0]
+ mov r0, r1, lsl #0x1b
+ movs r0, r0, lsr #0x1b
+ beq _020CFBE0
+ ldr r3, [r5, r0, lsl #0x2]
+ cmp r3, #0x0
+ beq _020CFC74
+ mov r2, r1, lsl #0x1a
+ mov r1, r1, lsr #0x6
+ mov r2, r2, lsr #0x1f
+ blx r3
+ b _020CFBE0
+_020CFC74:
+ mov r0, r1, lsl #0x1a
+ movs r0, r0, lsr #0x1f
+ bne _020CFBE0
+ orr r0, r1, #0x20
+ str r0, [sp, #0x0]
+ ldrh r0, [r10, #0x0]
+ ands r0, r0, #0x4000
+ ldrneh r0, [r10, #0x0]
+ orrne r0, r0, #0xc000
+ strneh r0, [r10, #0x0]
+ bne _020CFBE0
+ bl OS_DisableInterrupts
+ ldrh r1, [r10, #0x0]
+ ands r1, r1, #0x2
+ beq _020CFCB8
+ bl OS_RestoreInterrupts
+ b _020CFBE0
+_020CFCB8:
+ ldr r1, [sp, #0x0]
+ str r1, [r4, #0x0]
+ bl OS_RestoreInterrupts
+ b _020CFBE0
+_020CFCC8:
+ add sp, sp, #0x8
+ ldmia sp!, {r4-r10, lr}
+ bx lr
+_020CFCD4: .word 0x04000184
+_020CFCD8: .word 0x021D5368
+_020CFCDC: .word 0x04000188
+
+ arm_func_start PXI_SendWordByFifo
+PXI_SendWordByFifo:
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r3, [sp, #0x0]
+ and r0, r0, #0x1f
+ bic r3, r3, #0x1f
+ orr r12, r3, r0
+ bic r3, r12, #0x20
+ and r0, r2, #0x1
+ orr r3, r3, r0, lsl #0x5
+ str r12, [sp, #0x0]
+ and r2, r3, #0x3f
+ bic r0, r1, #0xfc000000
+ orr r0, r2, r0, lsl #0x6
+ str r3, [sp, #0x0]
+ ldr r2, _020CFD8C ; =0x04000184
+ str r0, [sp, #0x0]
+ ldrh r0, [r2, #0x0]
+ ands r0, r0, #0x4000
+ ldrneh r1, [r2, #0x0]
+ addne sp, sp, #0x4
+ mvnne r0, #0x0
+ orrne r1, r1, #0xc000
+ strneh r1, [r2, #0x0]
+ ldmneia sp!, {lr}
+ bxne lr
+ bl OS_DisableInterrupts
+ ldr r1, _020CFD8C ; =0x04000184
+ ldrh r1, [r1, #0x0]
+ ands r1, r1, #0x2
+ beq _020CFD6C
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ mvn r0, #0x1
+ ldmia sp!, {lr}
+ bx lr
+_020CFD6C:
+ ldr r2, [sp, #0x0]
+ ldr r1, _020CFD90 ; =0x04000188
+ str r2, [r1, #0x0]
+ bl OS_RestoreInterrupts
+_020CFD7C:
+ mov r0, #0x0
+ add sp, sp, #0x4
+ ldmfd sp!, {lr}
+ bx lr
+_020CFD8C: .word 0x04000184
+_020CFD90: .word 0x04000188
+
+ arm_func_start PXI_IsCallbackReady
+PXI_IsCallbackReady:
+ ldr r2, _020CFDB8 ; =0x027FFC00
+ mov r3, #0x1
+ add r1, r2, r1, lsl #0x2
+ mov r2, r3, lsl r0
+ ldr r0, [r1, #0x388]
+ ands r0, r2, r0
+ moveq r3, #0x0
+ mov r0, r3
+ bx lr
+ .balign 4
+_020CFDB8: .word 0x027FFC00
+
+ arm_func_start PXI_SetFifoRecvCallback
+PXI_SetFifoRecvCallback: ; 0x020CFDBC
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r4, r0
+ mov r5, r1
+ bl OS_DisableInterrupts
+ ldr r1, _020CFE20 ; =0x021D5368
+ cmp r5, #0x0
+ str r5, [r1, r4, lsl #0x2]
+ beq _020CFDF8
+ ldr r3, _020CFE24 ; =0x027FFC00
+ mov r1, #0x1
+ ldr r2, [r3, #0x388]
+ orr r1, r2, r1, lsl r4
+ str r1, [r3, #0x388]
+ b _020CFE10
+_020CFDF8:
+ ldr r3, _020CFE24 ; =0x027FFC00
+ mov r1, #0x1
+ mvn r1, r1, lsl r4
+ ldr r2, [r3, #0x388]
+ and r1, r2, r1
+ str r1, [r3, #0x388]
+_020CFE10:
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020CFE20: .word 0x021D5368
+_020CFE24: .word 0x027FFC00
+
+ arm_func_start PXI_InitFifo
+PXI_InitFifo: ; 0x020CFE28
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ bl OS_DisableInterrupts
+ ldr r1, _020CFF18 ; =0x021D5364
+ mov r4, r0
+ ldrh r0, [r1, #0x0]
+ cmp r0, #0x0
+ bne _020CFF04
+ mov r2, #0x1
+ ldr r0, _020CFF1C ; =0x027FFC00
+ strh r2, [r1, #0x0]
+ mov r2, #0x0
+ str r2, [r0, #0x388]
+ ldr r0, _020CFF20 ; =0x021D5368
+ mov r1, r2
+_020CFE64:
+ str r1, [r0, r2, lsl #0x2]
+ add r2, r2, #0x1
+ cmp r2, #0x20
+ blt _020CFE64
+ ldr r2, _020CFF24 ; =0x0000C408
+ ldr r1, _020CFF28 ; =0x04000184
+ mov r0, #0x40000
+ strh r2, [r1, #0x0]
+ bl OS_ResetRequestIrqMask
+ ldr r1, _020CFF2C ; =PXIi_HandlerRecvFifoNotEmpty
+ mov r0, #0x40000
+ bl OS_SetIrqFunction
+ mov r0, #0x40000
+ bl OS_EnableIrqMask
+ mov r12, #0x0
+ ldr r3, _020CFF30 ; =0x04000180
+ mov r1, r12
+ mov r2, #0x3e8
+_020CFEAC:
+ ldrh r0, [r3, #0x0]
+ ands lr, r0, #0xf
+ mov r0, lr, lsl #0x8
+ strh r0, [r3, #0x0]
+ bne _020CFEC8
+ cmp r12, #0x4
+ bgt _020CFF04
+_020CFEC8:
+ ldrh r0, [r3, #0x0]
+ mov r5, r2
+ and r0, r0, #0xf
+ cmp r0, lr
+ bne _020CFEFC
+_020CFEDC:
+ cmp r5, #0x0
+ movle r12, r1
+ ble _020CFEFC
+ ldrh r0, [r3, #0x0]
+ sub r5, r5, #0x1
+ and r0, r0, #0xf
+ cmp r0, lr
+ beq _020CFEDC
+_020CFEFC:
+ add r12, r12, #0x1
+ b _020CFEAC
+_020CFF04:
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020CFF18: .word 0x021D5364
+_020CFF1C: .word 0x027FFC00
+_020CFF20: .word 0x021D5368
+_020CFF24: .word 0x0000C408
+_020CFF28: .word 0x04000184
+_020CFF2C: .word PXIi_HandlerRecvFifoNotEmpty
+_020CFF30: .word 0x04000180
+
+ arm_func_start FSi_TranslateCommand
+FSi_TranslateCommand:
+ stmdb sp!, {r4-r8,lr}
+ mov r8, r0
+ ldr r0, [r8, #0xc]
+ mov r7, r1
+ mov r1, #0x1
+ ldr r5, [r8, #0x8]
+ mov r4, r1, lsl r7
+ ands r0, r0, #0x4
+ moveq r1, #0x0
+ cmp r1, #0x0
+ ldrne r0, [r5, #0x1c]
+ orrne r0, r0, #0x200
+ strne r0, [r5, #0x1c]
+ ldreq r0, [r5, #0x1c]
+ orreq r0, r0, #0x100
+ streq r0, [r5, #0x1c]
+ ldr r0, [r5, #0x58]
+ ands r0, r0, r4
+ beq _020CFFE4
+ ldr r2, [r5, #0x54]
+ mov r0, r8
+ mov r1, r7
+ blx r2
+ mov r6, r0
+ cmp r6, #0x8
+ addls pc, pc, r6, lsl #0x2
+ b _020CFFE8
+_020CFFA0:
+ b _020CFFC4
+ b _020CFFC4
+ b _020CFFE8
+ b _020CFFE8
+ b _020CFFC4
+ b _020CFFE8
+ b _020CFFE8
+ b _020CFFE8
+ b _020CFFCC
+_020CFFC4:
+ str r6, [r8, #0x14]
+ b _020CFFE8
+_020CFFCC:
+ ldr r1, [r5, #0x58]
+ mvn r0, r4
+ and r0, r1, r0
+ str r0, [r5, #0x58]
+ mov r6, #0x7
+ b _020CFFE8
+_020CFFE4:
+ mov r6, #0x7
+_020CFFE8:
+ cmp r6, #0x7
+ bne _020D0004
+ ldr r1, _020D00AC ; =0x02103F80
+ mov r0, r8
+ ldr r1, [r1, r7, lsl #0x2]
+ blx r1
+ mov r6, r0
+_020D0004:
+ cmp r6, #0x6
+ bne _020D0060
+ ldr r0, [r8, #0xc]
+ ands r0, r0, #0x4
+ movne r0, #0x1
+ moveq r0, #0x0
+ cmp r0, #0x0
+ beq _020D00A0
+ bl OS_DisableInterrupts
+ ldr r1, [r5, #0x1c]
+ mov r4, r0
+ ands r0, r1, #0x200
+ beq _020D0050
+ add r6, r5, #0xc
+_020D003C:
+ mov r0, r6
+ bl OS_SleepThread
+ ldr r0, [r5, #0x1c]
+ ands r0, r0, #0x200
+ bne _020D003C
+_020D0050:
+ mov r0, r4
+ ldr r6, [r8, #0x14]
+ bl OS_RestoreInterrupts
+ b _020D00A0
+_020D0060:
+ ldr r0, [r8, #0xc]
+ ands r0, r0, #0x4
+ movne r0, #0x1
+ moveq r0, #0x0
+ cmp r0, #0x0
+ ldrne r0, [r5, #0x1c]
+ bicne r0, r0, #0x200
+ strne r0, [r5, #0x1c]
+ strne r6, [r8, #0x14]
+ bne _020D00A0
+ ldr r1, [r5, #0x1c]
+ mov r0, r8
+ bic r2, r1, #0x100
+ mov r1, r6
+ str r2, [r5, #0x1c]
+ bl FSi_ReleaseCommand
+_020D00A0:
+ mov r0, r6
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+ .balign 4
+_020D00AC: .word 0x02103F80
+
+ arm_func_start FSi_ReleaseCommand
+FSi_ReleaseCommand:
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0
+ mov r5, r1
+ bl OS_DisableInterrupts
+ ldr r1, [r6, #0x0]
+ mov r4, r0
+ ldr r0, [r6, #0x4]
+ cmp r1, #0x0
+ strne r0, [r1, #0x4]
+ cmp r0, #0x0
+ strne r1, [r0, #0x0]
+ mov r0, #0x0
+ str r0, [r6, #0x0]
+ ldr r1, [r6, #0x0]
+ add r0, r6, #0x18
+ str r1, [r6, #0x4]
+ ldr r1, [r6, #0xc]
+ bic r1, r1, #0x4f
+ str r1, [r6, #0xc]
+ str r5, [r6, #0x14]
+ bl OS_WakeupThread
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+
+ arm_func_start FSi_CloseFileCommand
+FSi_CloseFileCommand: ; 0x020D0114
+ mov r0, #0x0
+ bx lr
+
+ arm_func_start FSi_OpenFileDirectCommand
+FSi_OpenFileDirectCommand: ; 0x020D011C
+ ldr r1, [r0, #0x30]
+ str r1, [r0, #0x24]
+ ldr r1, [r0, #0x30]
+ str r1, [r0, #0x2c]
+ ldr r1, [r0, #0x34]
+ str r1, [r0, #0x28]
+ ldr r1, [r0, #0x38]
+ str r1, [r0, #0x20]
+ mov r0, #0x0
+ bx lr
+
+ arm_func_start FSi_OpenFileFastCommand
+FSi_OpenFileFastCommand: ; 0x020D0144
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x14
+ mov r5, r0
+ ldr r1, [r5, #0x8]
+ ldr r4, [r5, #0x34]
+ ldr r0, [r1, #0x30]
+ mov r2, r4, lsl #0x3
+ cmp r2, r0
+ addcs sp, sp, #0x14
+ movcs r0, #0x1
+ ldmcsia sp!, {r4-r5,lr}
+ bxcs lr
+ str r1, [sp, #0x8]
+ ldr r1, [r1, #0x2c]
+ add r0, sp, #0x8
+ add r3, r1, r2
+ add r1, sp, #0x0
+ mov r2, #0x8
+ str r3, [sp, #0xc]
+ bl FSi_ReadTable
+_020D0194:
+ cmp r0, #0
+ addne sp, sp, #0x14
+ ldmneia sp!, {r4-r5,lr}
+ bxne lr
+ ldr r1, [sp]
+ mov r0, r5
+ str r1, [r5, #0x30]
+ ldr r2, [sp, #0x4]
+ mov r1, #7
+ str r2, [r5, #0x34]
+ str r4, [r5, #0x38]
+ bl FSi_TranslateCommand
+ add sp, sp, #0x14
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+
+ arm_func_start FSi_GetPathCommand
+FSi_GetPathCommand: ; 0x020D01D0
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0xe4
+ mov r4, r0
+ ldr r1, [r4, #0x8]
+ add r0, sp, #0x98
+ add r11, r4, #0x30
+ str r1, [sp, #0x0]
+ bl FS_InitFile
+ ldr r0, [r4, #0x8]
+ str r0, [sp, #0xa0]
+ ldr r0, [r4, #0xc]
+ ands r0, r0, #0x20
+ movne r0, #0x1
+ moveq r0, #0x0
+ cmp r0, #0x0
+ ldrneh r5, [r4, #0x24]
+ movne r4, #0x10000
+ bne _020D02BC
+ ldrh r0, [r11, #0x8]
+ ldr r4, [r4, #0x20]
+ cmp r0, #0x0
+ ldrneh r5, [r11, #0xa]
+ bne _020D02BC
+ mov r10, #0x0
+ mov r9, r10
+ mov r5, #0x10000
+ add r8, sp, #0x98
+ mov r6, #0x3
+ mov r7, #0x1
+_020D0244:
+ mov r0, r8
+ mov r1, r10
+ bl FSi_SeekDirDirect
+ add r2, sp, #0x4
+ cmp r10, #0x0
+ mov r0, r8
+ mov r1, r6
+ ldreq r9, [sp, #0xc4]
+ str r2, [sp, #0xc8]
+ str r7, [sp, #0xcc]
+ bl FSi_TranslateCommand
+_020D0270:
+ cmp r0, #0x0
+ bne _020D02A8
+_020D0278:
+ ldr r0, [sp, #0x10]
+ cmp r0, #0x0
+ bne _020D0294
+ ldr r0, [sp, #0x8]
+ cmp r0, r4
+ ldreqh r5, [sp, #0xbc]
+ beq _020D02A8
+_020D0294:
+ mov r0, r8
+ mov r1, r6
+ bl FSi_TranslateCommand
+ cmp r0, #0x0
+ beq _020D0278
+_020D02A8:
+ cmp r5, #0x10000
+ bne _020D02BC
+ add sl, sl, #0x1
+ cmp sl, r9
+ bcc _020D0244
+_020D02BC:
+ cmp r5, #0x10000
+ moveq r0, #0x0
+ streqh r0, [r11, #0x8]
+ addeq sp, sp, #0xe4
+ moveq r0, #0x1
+ ldmeqia sp!, {r4-r11,lr}
+ bxeq lr
+ ldrh r0, [r11, #0x8]
+ cmp r0, #0x0
+ bne _020D03B8
+ ldr r0, [sp, #0x0]
+ mov r1, #0x0
+ ldr r0, [r0, #0x0]
+ cmp r0, #0xff
+ addls r9, r1, #0x1
+ bls _020D0308
+ cmp r0, #0xff00
+ addls r9, r1, #0x2
+ addhi r9, r1, #0x3
+_020D0308:
+ cmp r4, #0x10000
+ ldrne r0, [sp, #0x14]
+ add r9, r9, #0x2
+ addne r9, r9, r0
+ mov r10, r5
+ cmp r5, #0x0
+ beq _020D03AC
+ add r0, sp, #0x98
+ mov r1, r5
+ bl FSi_SeekDirDirect
+ add r8, sp, #0x98
+ mov r6, #0x3
+ mov r7, #0x1
+_020D033C:
+ ldr r1, [sp, #0xc4]
+ mov r0, r8
+ bl FSi_SeekDirDirect
+ add r2, sp, #0x4
+ mov r0, r8
+ mov r1, r6
+ str r2, [sp, #0xc8]
+ str r7, [sp, #0xcc]
+ bl FSi_TranslateCommand
+_020D0360:
+ cmp r0, #0x0
+ bne _020D03A0
+_020D0368:
+ ldr r0, [sp, #0x10]
+ cmp r0, #0x0
+ beq _020D038C
+ ldrh r0, [sp, #0x8]
+ cmp r0, sl
+ ldreq r0, [sp, #0x14]
+ addeq r0, r0, #0x1
+ addeq r9, r9, r0
+ beq _020D03A0
+_020D038C:
+ mov r0, r8
+ mov r1, r6
+ bl FSi_TranslateCommand
+ cmp r0, #0x0
+ beq _020D0368
+_020D03A0:
+ ldrh sl, [sp, #0xbc]
+ cmp sl, #0x0
+ bne _020D033C
+_020D03AC:
+ add r0, r9, #0x1
+ strh r0, [r11, #0x8]
+ strh r5, [r11, #0xa]
+_020D03B8:
+ ldr r7, [r11, #0x0]
+ cmp r7, #0x0
+ addeq sp, sp, #0xe4
+ moveq r0, #0x0
+ ldmeqia sp!, {r4-r11,lr}
+ bxeq lr
+ ldrh r6, [r11, #0x8]
+ ldr r0, [r11, #0x4]
+ cmp r0, r6
+ addcc sp, sp, #0xe4
+ movcc r0, #0x1
+ ldmccia sp!, {r4-r11,lr}
+ bxcc lr
+ ldr r0, [sp, #0x0]
+ mov r9, #0x0
+ ldr r0, [r0, #0x0]
+ cmp r0, #0xff
+ movls r8, #0x1
+ bls _020D0410
+ cmp r0, #0xff00
+ movls r8, #0x2
+ movhi r8, #0x3
+_020D0410:
+ ldr r0, [sp, #0x0]
+ mov r1, r7
+ mov r2, r8
+ bl MI_CpuCopy8
+ add r1, r9, r8
+ ldr r0, _020D058C ; =0x0210682C
+ add r1, r7, r1
+ mov r2, #0x2
+ bl MI_CpuCopy8
+ add r0, sp, #0x98
+ mov r1, r5
+ bl FSi_SeekDirDirect
+ cmp r4, #0x10000
+ beq _020D04C4
+ add r3, sp, #0x4
+ mov r2, #0x0
+ add r0, sp, #0x98
+ mov r1, #0x3
+ str r3, [sp, #0xc8]
+ str r2, [sp, #0xcc]
+ bl FSi_TranslateCommand
+_020D0464:
+ cmp r0, #0x0
+ bne _020D04A0
+ add r9, sp, #0x98
+ mov r8, #0x3
+_020D0474:
+ ldr r0, [sp, #0x10]
+ cmp r0, #0x0
+ bne _020D048C
+ ldr r0, [sp, #0x8]
+ cmp r0, r4
+ beq _020D04A0
+_020D048C:
+ mov r0, r9
+ mov r1, r8
+ bl FSi_TranslateCommand
+ cmp r0, #0x0
+ beq _020D0474
+_020D04A0:
+ ldr r0, [sp, #0x14]
+ add r1, r7, r6
+ add r4, r0, #0x1
+ add r0, sp, #0x18
+ mov r2, r4
+ sub r1, r1, r4
+ bl MI_CpuCopy8
+ sub r6, r6, r4
+ b _020D04D4
+_020D04C4:
+ add r0, r7, r6
+ mov r1, #0x0
+ strb r1, [r0, #-0x1]
+ sub r6, r6, #0x1
+_020D04D4:
+ cmp r5, #0x0
+ beq _020D057C
+ add r10, sp, #0x98
+ add r11, sp, #0x4
+ mov r4, #0x3
+ mov r9, #0x0
+ mov r8, #0x2f
+_020D04F0:
+ ldr r1, [sp, #0xc4]
+ mov r0, r10
+ bl FSi_SeekDirDirect
+ add r2, r7, r6
+ mov r0, r10
+ mov r1, r4
+ str r11, [sp, #0xc8]
+ str r9, [sp, #0xcc]
+ strb r8, [r2, #-0x1]
+ sub r6, r6, #0x1
+ bl FSi_TranslateCommand
+_020D051C:
+ cmp r0, #0x0
+ bne _020D0570
+_020D0524:
+ ldr r0, [sp, #0x10]
+ cmp r0, #0x0
+ beq _020D055C
+ ldrh r0, [sp, #0x8]
+ cmp r0, r5
+ bne _020D055C
+ ldr r5, [sp, #0x14]
+ add r1, r7, r6
+ add r0, sp, #0x18
+ mov r2, r5
+ sub r1, r1, r5
+ bl MI_CpuCopy8
+ sub r6, r6, r5
+ b _020D0570
+_020D055C:
+ mov r0, sl
+ mov r1, r4
+ bl FSi_TranslateCommand
+ cmp r0, #0x0
+ beq _020D0524
+_020D0570:
+ ldrh r5, [sp, #0xbc]
+ cmp r5, #0x0
+ bne _020D04F0
+_020D057C:
+ mov r0, #0x0
+ add sp, sp, #0xe4
+ ldmia sp!, {r4-r11,lr}
+ bx lr
+ .balign 4
+_020D058C: .word 0x0210682C
+
+ arm_func_start FSi_FindPathCommand
+FSi_FindPathCommand: ; 0x020D0590
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x9c
+ mov r10, r0
+ ldr r2, [r10, #0x40]
+ ldr r9, [r10, #0x3c]
+ mov r1, #0x2
+ str r2, [sp, #0x0]
+ bl FSi_TranslateCommand
+ ldrb r1, [r9, #0x0]
+ cmp r1, #0x0
+ beq _020D0780
+ mov r0, #0x2
+ add r11, sp, #0x1c
+ mov r4, #0x3
+ mov r5, #0x1
+ mov r6, #0x0
+ str r0, [sp, #0x4]
+_020D05D4:
+ mov r7, r6
+ b _020D05E0
+_020D05DC:
+ add r7, r7, #0x1
+_020D05E0:
+ ldrb r8, [r9, r7]
+ mov r0, r6
+ cmp r8, #0x0
+ beq _020D0600
+ cmp r8, #0x2f
+ beq _020D0600
+ cmp r8, #0x5c
+ movne r0, r5
+_020D0600:
+ cmp r0, #0x0
+ bne _020D05DC
+ cmp r8, #0x0
+ bne _020D061C
+ ldr r0, [sp, #0x0]
+ cmp r0, #0x0
+ beq _020D0620
+_020D061C:
+ mov r8, r5
+_020D0620:
+ cmp r7, #0x0
+ addeq sp, sp, #0x9c
+ moveq r0, #0x1
+ ldmeqia sp!, {r4-r11,lr}
+ bxeq lr
+ cmp r1, #0x2e
+ bne _020D068C
+ cmp r7, #0x1
+ addeq r9, r9, #0x1
+ beq _020D0764
+ ldrb r0, [r9, #0x1]
+ cmp r7, #0x2
+ moveq r1, r5
+ movne r1, r6
+ cmp r0, #0x2e
+ moveq r0, r5
+ movne r0, r6
+ ands r0, r1, r0
+ beq _020D068C
+ ldrh r0, [r10, #0x24]
+ cmp r0, #0x0
+ beq _020D0684
+ ldr r1, [r10, #0x2c]
+ mov r0, r10
+ bl FSi_SeekDirDirect
+_020D0684:
+ add r9, r9, #0x2
+ b _020D0764
+_020D068C:
+ cmp r7, #0x7f
+ addgt sp, sp, #0x9c
+ movgt r0, #0x1
+ ldmgtia sp!, {r4-r11,lr}
+ bxgt lr
+ add r0, sp, #0x8
+ str r0, [r10, #0x30]
+ str r6, [r10, #0x34]
+_020D06AC:
+ mov r0, r10
+ mov r1, r4
+ bl FSi_TranslateCommand
+_020D06B8:
+ cmp r0, #0x0
+ addne sp, sp, #0x9c
+ movne r0, #0x1
+ ldmneia sp!, {r4-r11,lr}
+ bxne lr
+ ldr r0, [sp, #0x14]
+ cmp r8, r0
+ bne _020D06AC
+ ldr r0, [sp, #0x18]
+ cmp r7, r0
+ bne _020D06AC
+ mov r0, r9
+ mov r1, fp
+ mov r2, r7
+ bl FSi_StrNICmp
+ cmp r0, #0x0
+ bne _020D06AC
+ cmp r8, #0x0
+ beq _020D0728
+ add r0, sp, #0x8
+ add r3, sl, #0x30
+ ldmia r0, {r0, r1, r2}
+ stmia r3, {r0, r1, r2}
+ ldr r1, [sp, #0x4]
+ mov r0, sl
+ add r9, r9, r7
+ bl FSi_TranslateCommand
+ b _020D0764
+_020D0728:
+ ldr r0, [sp]
+ cmp r0, #0x0
+ addne sp, sp, #0x9c
+ movne r0, #0x1
+ ldmneia sp!, {r4-r11,lr}
+ bxne lr
+ ldr r3, [sl, #0x44]
+ ldr r2, [sp, #0x8]
+ ldr r1, [sp, #0xC]
+ add sp, sp, #0x9c
+ str r2, [r3]
+ str r1, [r3, #0x4]
+ mov r0, #0x0
+ ldmia sp!, {r4-r11,lr}
+ bx lr
+_020D0764:
+ ldrb r0, [r9, #0x0]
+ cmp r0, #0x0
+ movne r0, r5
+ moveq r0, r6
+ ldrb r1, [r9, r0]!
+ cmp r1, #0x0
+ bne _020D05D4
+_020D0780:
+ ldr r0, [sp, #0x0]
+ cmp r0, #0x0
+ moveq r0, #0x1
+ addne r0, r10, #0x20
+ ldrne r3, [r10, #0x44]
+ ldmneia r0, {r0-r2}
+ stmneia r3, {r0-r2}
+ movne r0, #0x0
+ add sp, sp, #0x9c
+ ldmia sp!, {r4-r11,lr}
+ bx lr
+
+ arm_func_start FSi_ReadDirCommand
+FSi_ReadDirCommand: ; 0x020D07AC
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0xc
+ mov r5, r0
+ ldr r4, [r5, #0x30]
+ ldr r1, [r5, #0x8]
+ add r0, sp, #0x4
+ str r1, [sp, #0x4]
+ ldr r3, [r5, #0x28]
+ add r1, sp, #0x0
+ mov r2, #0x1
+ str r3, [sp, #0x8]
+ bl FSi_ReadTable
+_020D07DC:
+ cmp r0, #0x0
+ addne sp, sp, #0xC
+ ldmneia sp!, {r4-r5,lr}
+ bxne lr
+ ldrb r1, [sp]
+ and r2, r1, #0x7F
+ mov r1, r1, asr #0x7
+ str r2, [r4, #0x10]
+ and r1, r1, #0x1
+ str r1, [r4, #0xC]
+ ldr r2, [r4, #0x10]
+ cmp r2, #0x0
+ addeq sp, sp, #0xC
+ moveq r0, #0x1
+ ldmeqia sp!, {r4-r5,lr}
+ bxeq lr
+ ldr r1, [r5, #0x34]
+ cmp r1, #0x0
+ bne _020D0858
+ add r0, sp, #0x4
+ add r1, r4, #0x14
+ bl FSi_ReadTable
+ cmp r0, #0x0
+ addne sp, sp, #0xC
+ ldmneia sp!, {r4-r5,lr}
+ bxne lr
+ ldr r1, [r4, #0x10]
+ mov r2, #0x0
+ add r1, r4, r1
+ strb r2, [r1, #0x14]
+ b _020D0864
+_020D0858:
+ ldr r1, [sp, #0x8]
+ add r1, r1, r2
+ str r1, [sp, #0x8]
+_020D0864:
+ ldr r1, [r4, #0xC]
+ cmp r1, #0x0
+ beq _020D08B8
+ add r0, sp, #0x4
+ add r1, sp, #0x2
+ mov r2, #0x2
+ bl FSi_ReadTable
+ cmp r0, #0x0
+ addne sp, sp, #0xC
+ ldmneia sp!, {r4-r5,lr}
+ bxne lr
+ ldr r2, [r5, #0x8]
+ ldr r1, _020D08E8
+ str r2, [r4]
+ ldrh r3, [sp, #0x2]
+ mov r2, #0x0
+ and r1, r3, r1
+ strh r1, [r4, #0x4]
+ strh r2, [r4, #0x6]
+ str r2, [r4, #0x8]
+ b _020D08D4
+_020D08B8:
+ ldr r1, [r5, #0x8]
+ str r1, [r4]
+ ldrh r1, [r5, #0x26]
+ str r1, [r4, #0x4]
+ ldrh r1, [r5, #0x26]
+ add r1, r1, #0x1
+ strh r1, [r5, #0x26]
+_020D08D4:
+ ldr r1, [sp, #0x8]
+ str r1, [r5, #0x28]
+ add sp, sp, #0xC
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+_020D08E8: .word 0x00000FFF
+
+ arm_func_start FSi_SeekDirCommand
+FSi_SeekDirCommand: ; 0x020D08EC
+ stmdb sp!, {r4-r6,lr}
+ sub sp, sp, #0x10
+ mov r6, r0
+ ldr r5, [r6, #0x8]
+ add r4, r6, #0x30
+ str r5, [sp, #0x8]
+ ldrh r1, [r4, #0x4]
+ ldr r2, [r5, #0x34]
+ add r0, sp, #0x8
+ add r3, r2, r1, lsl #0x3
+ add r1, sp, #0x0
+ mov r2, #0x8
+ str r3, [sp, #0xc]
+ bl FSi_ReadTable
+ movs r3, r0
+ bne _020D0978
+ add r12, r6, #0x20
+ ldmia r4, {r0-r2}
+ stmia r12, {r0-r2}
+ ldrh r0, [r4, #0x6]
+ cmp r0, #0x0
+ bne _020D0968
+ ldr r0, [r4, #0x8]
+ cmp r0, #0x0
+ bne _020D0968
+ ldrh r0, [sp, #0x4]
+ strh r0, [r6, #0x26]
+ ldr r1, [r5, #0x34]
+ ldr r0, [sp, #0x0]
+ add r0, r1, r0
+ str r0, [r6, #0x28]
+_020D0968:
+ ldrh r1, [sp, #0x6]
+ ldr r0, _020D0988 ; =0x00000FFF
+ and r0, r1, r0
+ str r0, [r6, #0x2c]
+_020D0978:
+ mov r0, r3
+ add sp, sp, #0x10
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+ .balign 4
+_020D0988: .word 0x00000FFF
+
+ arm_func_start FSi_WriteFileCommand
+FSi_WriteFileCommand: ; 0x020D098C
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r2, [r0, #0x2c]
+ ldr r3, [r0, #0x38]
+ ldr lr, [r0, #0x8]
+ ldr r1, [r0, #0x30]
+ add r12, r2, r3
+ str r12, [r0, #0x2c]
+ ldr r12, [lr, #0x4c]
+ mov r0, lr
+ blx r12
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start FSi_ReadFileCommand
+FSi_ReadFileCommand: ; 0x020D09C4
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r2, [r0, #0x2c]
+ ldr r3, [r0, #0x38]
+ ldr lr, [r0, #0x8]
+ ldr r1, [r0, #0x30]
+ add r12, r2, r3
+ str r12, [r0, #0x2c]
+ ldr r12, [lr, #0x48]
+ mov r0, lr
+ blx r12
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start FSi_SeekDirDirect
+FSi_SeekDirDirect: ; 0x020D09FC
+ ldr r3, [r0, #0xc]
+ mov r2, #0x0
+ orr r3, r3, #0x4
+ str r3, [r0, #0xc]
+ ldr r3, [r0, #0x8]
+ ldr ip, _020D0A2C ; =FSi_TranslateCommand
+ str r3, [r0, #0x30]
+ str r2, [r0, #0x38]
+ strh r2, [r0, #0x36]
+ strh r1, [r0, #0x34]
+ mov r1, #0x2
+ bx r12
+ .balign 4
+_020D0A2C: .word FSi_TranslateCommand
+
+ arm_func_start FSi_ReadTable
+FSi_ReadTable:
+ stmdb sp!, {r4-r8,lr}
+ mov r7, r0
+ ldr r5, [r7, #0x0]
+ mov r6, r2
+ ldr r2, [r5, #0x1c]
+ mov r0, r5
+ orr r2, r2, #0x200
+ str r2, [r5, #0x1c]
+ ldr r2, [r7, #0x4]
+ ldr r4, [r5, #0x50]
+ mov r3, r6
+ blx r4
+ cmp r0, #0x0
+ beq _020D0A7C
+ cmp r0, #0x1
+ beq _020D0A7C
+ cmp r0, #0x6
+ beq _020D0A8C
+ b _020D0AC8
+_020D0A7C:
+ ldr r1, [r5, #0x1c]
+ bic r1, r1, #0x200
+ str r1, [r5, #0x1c]
+ b _020D0AC8
+_020D0A8C:
+ bl OS_DisableInterrupts
+ ldr r1, [r5, #0x1c]
+ mov r4, r0
+ ands r0, r1, #0x200
+ beq _020D0AB8
+ add r8, r5, #0xc
+_020D0AA4:
+ mov r0, r8
+ bl OS_SleepThread
+ ldr r0, [r5, #0x1c]
+ ands r0, r0, #0x200
+ bne _020D0AA4
+_020D0AB8:
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ ldr r0, [r5, #0x24]
+ ldr r0, [r0, #0x14]
+_020D0AC8:
+ ldr r1, [r7, #0x4]
+ add r1, r1, r6
+ str r1, [r7, #0x4]
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+
+ arm_func_start FSi_StrNICmp
+FSi_StrNICmp: ; 0x020D0ADC
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ cmp r2, #0x0
+ mov lr, #0x0
+ bls _020D0B30
+_020D0AF0:
+ ldrb r12, [r0, lr]
+ ldrb r3, [r1, lr]
+ sub r12, r12, #0x41
+ cmp r12, #0x19
+ sub r3, r3, #0x41
+ addls r12, r12, #0x20
+ cmp r3, #0x19
+ addls r3, r3, #0x20
+ cmp r12, r3
+ addne sp, sp, #0x4
+ subne r0, r12, r3
+ ldmneia sp!, {lr}
+ bxne lr
+ add lr, lr, #0x1
+ cmp lr, r2
+ blo _020D0AF0
+_020D0B30:
+ mov r0, #0x0
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start FS_NotifyArchiveAsyncEnd
+FS_NotifyArchiveAsyncEnd: ; 0x020D0B40
+ stmdb sp!, {r4-r6,lr}
+ mov r4, r0
+ ldr r0, [r4, #0x1c]
+ mov r6, r1
+ ands r0, r0, #0x100
+ beq _020D0B8C
+ ldr r2, [r4, #0x1c]
+ ldr r0, [r4, #0x24]
+ bic r2, r2, #0x100
+ str r2, [r4, #0x1c]
+ bl FSi_ReleaseCommand
+ mov r0, r4
+ bl FSi_NextCommand
+_020D0B74:
+ cmp r0, #0x0
+ ldmeqia sp!, {r4-r6,lr}
+ bxeq lr
+ bl FSi_ExecuteAsyncCommand
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020D0B8C:
+ ldr r5, [r4, #0x24]
+ bl OS_DisableInterrupts
+ str r6, [r5, #0x14]
+ ldr r1, [r4, #0x1c]
+ mov r5, r0
+ bic r1, r1, #0x200
+ add r0, r4, #0xc
+ str r1, [r4, #0x1c]
+ bl OS_WakeupThread
+ mov r0, r5
+ bl OS_RestoreInterrupts
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+
+ arm_func_start FS_SetArchiveProc
+FS_SetArchiveProc: ; 0x020D0BC0
+ cmp r2, #0x0
+ moveq r1, #0x0
+ beq _020D0BD4
+ cmp r1, #0x0
+ moveq r2, #0x0
+_020D0BD4:
+ str r1, [r0, #0x54]
+ str r2, [r0, #0x58]
+ bx lr
+
+ arm_func_start FS_ResumeArchive
+FS_ResumeArchive:
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r4, r0
+ mov r6, #0x0
+ bl OS_DisableInterrupts
+ ldr r1, [r4, #0x1c]
+ mov r5, r0
+ ands r0, r1, #0x8
+ movne r0, #0x1
+ moveq r0, r6
+ cmp r0, #0x0
+ moveq r7, #0x1
+ movne r7, #0x0
+ cmp r7, #0x0
+ bne _020D0C34
+ ldr r1, [r4, #0x1c]
+ mov r0, r4
+ bic r1, r1, #0x8
+ str r1, [r4, #0x1c]
+ bl FSi_NextCommand
+ mov r6, r0
+_020D0C34:
+ mov r0, r5
+ bl OS_RestoreInterrupts
+_020D0C3C:
+ cmp r6, #0x0
+ beq _020D0C4C
+ mov r0, r6
+ bl FSi_ExecuteAsyncCommand
+_020D0C4C:
+ mov r0, r7
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7, lr}
+ bx lr
+
+ arm_func_start FS_SuspendArchive
+FS_SuspendArchive: ; 0x020D0C5C
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r6, r0
+ bl OS_DisableInterrupts
+ ldr r1, [r6, #0x1c]
+ mov r4, r0
+ ands r0, r1, #0x8
+ movne r0, #0x1
+ moveq r0, #0x0
+ cmp r0, #0x0
+ moveq r5, #0x1
+ movne r5, #0x0
+ cmp r5, #0x0
+ beq _020D0CD4
+ ldr r0, [r6, #0x1c]
+ ands r0, r0, #0x10
+ beq _020D0CC8
+ ldr r0, [r6, #0x1c]
+ orr r0, r0, #0x40
+ str r0, [r6, #0x1c]
+ add r7, r6, #0x14
+_020D0CB0:
+ mov r0, r7
+ bl OS_SleepThread
+ ldr r0, [r6, #0x1c]
+ ands r0, r0, #0x40
+ bne _020D0CB0
+ b _020D0CD4
+_020D0CC8:
+ ldr r0, [r6, #0x1c]
+ orr r0, r0, #0x8
+ str r0, [r6, #0x1c]
+_020D0CD4:
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ mov r0, r5
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+
+ arm_func_start FS_UnloadArchiveTables
+FS_UnloadArchiveTables: ; 0x020D0CEC
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ ldr r0, [r5, #0x1c]
+ mov r4, #0x0
+ ands r0, r0, #0x2
+ movne r0, #0x1
+ moveq r0, r4
+ cmp r0, #0x0
+ beq _020D0D74
+ mov r0, r5
+ bl FS_SuspendArchive
+ ldr r1, [r5, #0x1c]
+ ands r1, r1, #0x4
+ movne r1, #0x1
+ moveq r1, #0x0
+ cmp r1, #0x0
+ beq _020D0D64
+ ldr r2, [r5, #0x1c]
+ mov r1, #0x0
+ bic r2, r2, #0x4
+ str r2, [r5, #0x1c]
+ ldr r4, [r5, #0x44]
+ str r1, [r5, #0x44]
+ ldr r1, [r5, #0x3c]
+ str r1, [r5, #0x2c]
+ ldr r1, [r5, #0x40]
+ str r1, [r5, #0x34]
+ ldr r1, [r5, #0x48]
+ str r1, [r5, #0x50]
+_020D0D64:
+ cmp r0, #0x0
+ beq _020D0D74
+ mov r0, r5
+ bl FS_ResumeArchive
+_020D0D74:
+ mov r0, r4
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+
+ arm_func_start FUN_020D0D84
+FUN_020D0D84: ; 0x020D0D84
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4c
+ mov r7, r0
+ ldr r3, [r7, #0x30]
+ ldr r0, [r7, #0x38]
+ mov r6, r1
+ add r0, r3, r0
+ add r0, r0, #0x20
+ add r0, r0, #0x1f
+ bic r5, r0, #0x1f
+ cmp r5, r2
+ bhi _020D0E9C
+ add r1, r6, #0x1f
+ add r0, sp, #0x4
+ bic r4, r1, #0x1f
+ bl FS_InitFile
+ ldr r2, [r7, #0x2c]
+ mvn r0, #0x0
+ str r0, [sp, #0x0]
+ ldr r3, [r7, #0x30]
+ add r0, sp, #0x4
+ mov r1, r7
+ add r3, r2, r3
+ bl FS_OpenFileDirect
+_020D0DE4:
+ cmp r0, #0x0
+ beq _020D0E1C
+ ldr r2, [r7, #0x30]
+ add r0, sp, #0x4
+ mov r1, r4
+ bl FS_ReadFile
+ cmp r0, #0x0
+ bge _020D0E14
+ ldr r2, [r7, #0x30]
+ mov r0, r4
+ mov r1, #0x0
+ bl MI_CpuFill8
+_020D0E14:
+ add r0, sp, #0x4
+ bl FS_CloseFile
+_020D0E1C:
+ str r4, [r7, #0x2C]
+ ldr ip, [r7, #0x30]
+ ldr r2, [r7, #0x34]
+ mvn r0, #0x0
+ str r0, [sp]
+ ldr r3, [r7, #0x38]
+ add r0, sp, #0x4
+ mov r1, r7
+ add r3, r2, r3
+ add r4, r4, ip
+ bl FS_OpenFileDirect
+ cmp r0, #0x0
+ beq _020D0E80
+ ldr r2, [r7, #0x38]
+ add r0, sp, #0x4
+ mov r1, r4
+ bl FS_ReadFile
+ cmp r0, #0x0
+ bge _020D0E78
+ ldr r2, [r7, #0x38]
+ mov r0, r4
+ mov r1, #0x0
+ bl MI_CpuFill8
+_020D0E78:
+ add r0, sp, #0x4
+ bl FS_CloseFile
+_020D0E80:
+ str r4, [r7, #0x34]
+ ldr r0, _020D0EAC
+ str r6, [r7, #0x44]
+ str r0, [r7, #0x50]
+ ldr r0, [r7, #0x1C]
+ orr r0, r0, #0x4
+ str r0, [r7, #0x1C]
+_020D0E9C:
+ mov r0, r5
+ add sp, sp, #0x4C
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020D0EAC:
+ .word FSi_ReadMemoryCore
+
+ arm_func_start FUN_020D0EB0
+FUN_020D0EB0: ; 0x020D0EB0
+ stmdb sp!, {r4-r8,lr}
+ mov r5, r0
+ bl OS_DisableInterrupts
+ ldr r1, [r5, #0x1c]
+ mov r4, r0
+ ands r0, r1, #0x2
+ movne r0, #0x1
+ moveq r0, #0x0
+ cmp r0, #0x0
+ beq _020D0F64
+ mov r0, r5
+ ldr r1, [r5, #0x1c]
+ bl FS_SuspendArchive
+ ldr r1, [r5, #0x1c]
+ mov r7, r0
+ orr r0, r1, #0x80
+ str r0, [r5, #0x1c]
+ ldr r0, [r5, #0x24]
+ cmp r0, #0x0
+ beq _020D0F1C
+ mov r6, #0x3
+_020D0F04:
+ ldr r8, [r0, #0x4]
+ mov r1, r6
+ bl FSi_ReleaseCommand
+ mov r0, r8
+ cmp r8, #0x0
+ bne _020D0F04
+_020D0F1C:
+ mov r0, #0x0
+ str r0, [r5, #0x24]
+ cmp r7, #0x0
+ beq _020D0F34
+ mov r0, r5
+ bl FS_ResumeArchive
+_020D0F34:
+ mov r0, #0x0
+ str r0, [r5, #0x28]
+ str r0, [r5, #0x2c]
+ str r0, [r5, #0x30]
+ str r0, [r5, #0x34]
+ str r0, [r5, #0x38]
+ str r0, [r5, #0x40]
+ ldr r0, [r5, #0x40]
+ str r0, [r5, #0x3c]
+ ldr r0, [r5, #0x1c]
+ bic r0, r0, #0xa2
+ str r0, [r5, #0x1c]
+_020D0F64:
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ mov r0, #0x1
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+
+ arm_func_start FS_LoadArchive
+FS_LoadArchive: ; 0x020D0F78
+ str r1, [r0, #0x28]
+ str r3, [r0, #0x30]
+ str r2, [r0, #0x3c]
+ ldr r1, [r0, #0x3c]
+ ldr r2, [sp, #0x4]
+ str r1, [r0, #0x2c]
+ str r2, [r0, #0x38]
+ ldr r1, [sp, #0x0]
+ ldr r2, [sp, #0x8]
+ str r1, [r0, #0x40]
+ ldr r1, [r0, #0x40]
+ cmp r2, #0x0
+ str r1, [r0, #0x34]
+ ldreq r2, _020D0FE8 ; =FSi_ReadMemCallback
+ ldr r1, [sp, #0xc]
+ str r2, [r0, #0x48]
+ cmp r1, #0x0
+ ldreq r1, _020D0FEC ; =FSi_WriteMemCallback
+ str r1, [r0, #0x4c]
+ ldr r2, [r0, #0x48]
+ mov r1, #0x0
+ str r2, [r0, #0x50]
+ str r1, [r0, #0x44]
+ ldr r1, [r0, #0x1c]
+ orr r1, r1, #0x2
+ str r1, [r0, #0x1c]
+ mov r0, #0x1
+ bx lr
+ .balign 4
+_020D0FE8: .word FSi_ReadMemCallback
+_020D0FEC: .word FSi_WriteMemCallback
+
+ arm_func_start FUN_020D0FF0
+FUN_020D0FF0: ; 0x020D0FF0
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ ldmeqia sp!, {r4,lr}
+ bxeq lr
+ bl OS_DisableInterrupts
+ ldr r2, [r4, #0x4]
+ mov r3, #0x0
+ cmp r2, #0x0
+ ldrne r1, [r4, #0x8]
+ strne r1, [r2, #0x8]
+ ldr r2, [r4, #0x8]
+ cmp r2, #0x0
+ ldrne r1, [r4, #0x4]
+ strne r1, [r2, #0x4]
+ str r3, [r4, #0x0]
+ str r3, [r4, #0x8]
+ ldr r1, [r4, #0x8]
+ ldr r2, _020D1080 ; =0x021D53EC
+ str r1, [r4, #0x4]
+ ldr r1, [r4, #0x1c]
+ bic r1, r1, #0x1
+ str r1, [r4, #0x1c]
+ ldr r1, [r2, #0x0]
+ cmp r1, r4
+ bne _020D1074
+ ldr r1, _020D1084 ; =0x021D53E8
+ str r3, [r2, #0x8]
+ ldr r1, [r1, #0x0]
+ strh r3, [r2, #0x6]
+ str r1, [r2, #0x0]
+ strh r3, [r2, #0x4]
+_020D1074:
+ bl OS_RestoreInterrupts
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020D1080: .word 0x021D53EC
+_020D1084: .word 0x021D53E8
+
+ arm_func_start FS_RegisterArchiveName
+FS_RegisterArchiveName: ; 0x020D1088
+ stmdb sp!, {r4-r8,lr}
+ mov r6, r1
+ mov r5, r2
+ mov r7, r0
+ mov r8, #0x0
+ bl OS_DisableInterrupts
+ mov r4, r0
+ mov r0, r6
+ mov r1, r5
+ bl FS_FindArchive
+_020D10B0:
+ cmp r0, #0x0
+ bne _020D112C
+ ldr r1, _020D1140
+ ldr r2, [r1]
+ cmp r2, #0x0
+ bne _020D10E8
+ ldr r0, _020D1144
+ mov r2, r8
+ str r7, [r1]
+ str r7, [r0]
+ str r2, [r0, #0x8]
+ strh r2, [r0, #0x6]
+ strh r2, [r0, #0x4]
+ b _020D110C
+_020D10E8:
+ ldr r0, [r2, #0x4]
+ cmp r0, #0x0
+ beq _020D1104
+_020D10F4:
+ mov r2, r0
+ ldr r0, [r0, #0x4]
+ cmp r0, #0x0
+ bne _020D10F4
+_020D1104:
+ str r7, [r2, #0x4]
+ str r2, [r7, #0x8]
+_020D110C:
+ mov r0, r6
+ mov r1, r5
+ bl FSi_GetPackedName
+ str r0, [r7]
+ ldr r0, [r7, #0x1C]
+ mov r8, #0x1
+ orr r0, r0, #0x1
+ str r0, [r7, #0x1C]
+_020D112C:
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ mov r0, r8
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+_020D1140: .word 0x021D53E8
+_020D1144: .word 0x021D53EC
+
+ arm_func_start FS_FindArchive
+FS_FindArchive:
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ bl FSi_GetPackedName
+ mov r5, r0
+ bl OS_DisableInterrupts
+ ldr r1, _020D1194 ; =0x021D53E8
+ ldr r4, [r1, #0x0]
+ b _020D116C
+_020D1168:
+ ldr r4, [r4, #0x4]
+_020D116C:
+ cmp r4, #0x0
+ beq _020D1180
+ ldr r1, [r4, #0x0]
+ cmp r1, r5
+ bne _020D1168
+_020D1180:
+ bl OS_RestoreInterrupts
+ mov r0, r4
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020D1194: .word 0x021D53E8
+
+ arm_func_start FS_InitArchive
+FS_InitArchive: ; 0x020D1198
+ stmdb sp!, {r4,lr}
+ mov r1, #0x0
+ mov r2, #0x5c
+ mov r4, r0
+ bl MI_CpuFill8
+ mov r1, #0x0
+ str r1, [r4, #0x10]
+ ldr r0, [r4, #0x10]
+ str r0, [r4, #0xc]
+ str r1, [r4, #0x18]
+ ldr r0, [r4, #0x18]
+ str r0, [r4, #0x14]
+ ldmia sp!, {r4,lr}
+ bx lr
+
+ arm_func_start FSi_SendCommand
+FSi_SendCommand:
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r7, r0
+ ldr r6, [r7, #0x8]
+ mov r2, #0x1
+ str r1, [r7, #0x10]
+ mov r0, #0x2
+ str r0, [r7, #0x14]
+ ldr r0, [r7, #0xc]
+ mov r5, r2, lsl r1
+ orr r0, r0, #0x1
+ str r0, [r7, #0xc]
+ bl OS_DisableInterrupts
+ ldr r1, [r6, #0x1c]
+ mov r4, r0
+ ands r0, r1, #0x80
+ beq _020D1238
+ mov r0, r7
+ mov r1, #0x3
+ bl FSi_ReleaseCommand
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ mov r0, #0x0
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020D1238:
+ ands r0, r5, #0x1fc
+ ldrne r0, [r7, #0xc]
+ add r2, r6, #0x20
+ orrne r0, r0, #0x4
+ strne r0, [r7, #0xc]
+ ldr r1, [r7, #0x0]
+ ldr r0, [r7, #0x4]
+ cmp r1, #0x0
+ strne r0, [r1, #0x4]
+ cmp r0, #0x0
+ strne r1, [r0, #0x0]
+ ldr r0, [r2, #0x4]
+ cmp r0, #0x0
+ beq _020D1280
+_020D1270:
+ mov r2, r0
+ ldr r0, [r0, #0x4]
+ cmp r0, #0x0
+ bne _020D1270
+_020D1280:
+ str r7, [r2, #0x4]
+ str r2, [r7, #0x0]
+ mov r1, #0x0
+ str r1, [r7, #0x4]
+ ldr r0, [r6, #0x1c]
+ ands r0, r0, #0x8
+ movne r1, #0x1
+ cmp r1, #0x0
+ bne _020D132C
+ ldr r0, [r6, #0x1c]
+ ands r0, r0, #0x10
+ bne _020D132C
+ ldr r1, [r6, #0x1c]
+ mov r0, r4
+ orr r1, r1, #0x10
+ str r1, [r6, #0x1c]
+ bl OS_RestoreInterrupts
+ ldr r0, [r6, #0x58]
+ ands r0, r0, #0x200
+ beq _020D12E0
+ ldr r2, [r6, #0x54]
+ mov r0, r7
+ mov r1, #0x9
+ blx r2
+_020D12E0:
+ bl OS_DisableInterrupts
+ ldr r1, [r7, #0xc]
+ orr r1, r1, #0x40
+ str r1, [r7, #0xc]
+ ldr r1, [r7, #0xc]
+ ands r1, r1, #0x4
+ movne r1, #0x1
+ moveq r1, #0x0
+ cmp r1, #0x0
+ bne _020D1324
+ bl OS_RestoreInterrupts
+ mov r0, r7
+ bl FSi_ExecuteAsyncCommand
+ add sp, sp, #0x4
+ mov r0, #0x1
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020D1324:
+ bl OS_RestoreInterrupts
+ b _020D1378
+_020D132C:
+ ldr r0, [r7, #0xc]
+ ands r0, r0, #0x4
+ movne r0, #0x1
+ moveq r0, #0x0
+ cmp r0, #0x0
+ bne _020D135C
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ mov r0, #0x1
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020D135C:
+ add r0, r7, #0x18
+ bl OS_SleepThread
+ ldr r0, [r7, #0xc]
+ ands r0, r0, #0x40
+ beq _020D135C
+ mov r0, r4
+ bl OS_RestoreInterrupts
+_020D1378:
+ mov r0, r7
+ bl FSi_ExecuteSyncCommand
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+
+ arm_func_start FSi_ExecuteSyncCommand
+FSi_ExecuteSyncCommand: ; 0x020D138C
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ ldr r1, [r4, #0x10]
+ bl FSi_TranslateCommand
+ mov r1, r0
+ mov r0, r4
+ bl FSi_ReleaseCommand
+ ldr r0, [r4, #0x8]
+ bl FSi_NextCommand
+_020D13B0:
+ cmp r0, #0x0
+ beq _020D13BC
+ bl FSi_ExecuteAsyncCommand
+_020D13BC:
+ ldr r0, [r4, #0x14]
+ cmp r0, #0x0
+ moveq r0, #0x1
+ movne r0, #0x0
+ ldmia sp!, {r4,lr}
+ bx lr
+
+ arm_func_start FSi_ExecuteAsyncCommand
+FSi_ExecuteAsyncCommand: ; 0x020D13D4
+ stmdb sp!, {r4-r8,lr}
+ movs r6, r0
+ ldr r5, [r6, #0x8]
+ ldmeqia sp!, {r4-r8,lr}
+ bxeq lr
+ mov r7, #0x0
+ mov r8, #0x1
+_020D13F0:
+ bl OS_DisableInterrupts
+ ldr r1, [r6, #0xc]
+ mov r4, r0
+ orr r0, r1, #0x40
+ str r0, [r6, #0xc]
+ ldr r0, [r6, #0xc]
+ ands r0, r0, #0x4
+ movne r0, r8
+ moveq r0, r7
+ cmp r0, #0x0
+ beq _020D1434
+ add r0, r6, #0x18
+ bl OS_WakeupThread
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+_020D1434:
+ ldr r1, [r6, #0xc]
+ mov r0, r4
+ orr r1, r1, #0x8
+ str r1, [r6, #0xc]
+ bl OS_RestoreInterrupts
+ ldr r1, [r6, #0x10]
+ mov r0, r6
+ bl FSi_TranslateCommand
+ cmp r0, #0x6
+ ldmeqia sp!, {r4-r8,lr}
+ bxeq lr
+ mov r0, r5
+ bl FSi_NextCommand
+ movs r6, r0
+ bne _020D13F0
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+
+ arm_func_start FSi_NextCommand
+FSi_NextCommand:
+ stmdb sp!, {r4-r9,lr}
+ sub sp, sp, #0x4c
+ mov r6, r0
+ bl OS_DisableInterrupts
+ ldr r1, [r6, #0x1c]
+ mov r5, r0
+ ands r0, r1, #0x20
+ beq _020D1500
+ ldr r0, [r6, #0x1c]
+ bic r0, r0, #0x20
+ str r0, [r6, #0x1c]
+ ldr r0, [r6, #0x24]
+ cmp r0, #0x0
+ beq _020D1500
+ mov r8, #0x0
+ mov r9, #0x1
+ mov r7, #0x3
+_020D14BC:
+ ldr r1, [r0, #0xc]
+ ldr r4, [r0, #0x4]
+ ands r1, r1, #0x2
+ movne r1, r9
+ moveq r1, r8
+ cmp r1, #0x0
+ beq _020D14F4
+ ldr r1, [r6, #0x24]
+ cmp r1, r0
+ mov r1, r7
+ streq r4, [r6, #0x24]
+ bl FSi_ReleaseCommand
+_020D14EC:
+ cmp r4, #0x0
+ ldreq r4, [r6, #0x24]
+_020D14F4:
+ mov r0, r4
+ cmp r4, #0x0
+ bne _020D14BC
+_020D1500:
+ ldr r0, [r6, #0x1c]
+ ands r0, r0, #0x40
+ bne _020D15EC
+ ldr r0, [r6, #0x1c]
+ ands r0, r0, #0x8
+ movne r0, #0x1
+ moveq r0, #0x0
+ cmp r0, #0x0
+ bne _020D15EC
+ ldr r4, [r6, #0x24]
+ cmp r4, #0x0
+ beq _020D15EC
+ ldr r0, [r6, #0x1c]
+ ands r0, r0, #0x10
+ movne r0, #0x1
+ moveq r0, #0x0
+ cmp r0, #0x0
+ moveq r7, #0x1
+ movne r7, #0x0
+ cmp r7, #0x0
+ ldrne r0, [r6, #0x1c]
+ orrne r0, r0, #0x10
+ strne r0, [r6, #0x1c]
+ mov r0, r5
+ bl OS_RestoreInterrupts
+_020D1564:
+ cmp r7, #0x0
+ beq _020D1588
+ ldr r0, [r6, #0x58]
+ ands r0, r0, #0x200
+ beq _020D1588
+ ldr r2, [r6, #0x54]
+ mov r0, r4
+ mov r1, #0x9
+ blx r2
+_020D1588:
+ bl OS_DisableInterrupts
+ ldr r1, [r4, #0xC]
+ mov r5, r0
+ orr r0, r1, #0x40
+ str r0, [r4, #0xC]
+ ldr r0, [r4, #0xC]
+ ands r0, r0, #0x4
+ movne r0, #0x1
+ moveq r0, #0x0
+ cmp r0, #0x0
+ beq _020D15D4
+ add r0, r4, #0x18
+ bl OS_WakeupThread
+ mov r0, r5
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4c
+ mov r0, #0x0
+ ldmia sp!, {r4-r9, lr}
+ bx lr
+_020D15D4:
+ mov r0, r5
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4c
+ mov r0, r4
+ ldmia sp!, {r4-r9, lr}
+ bx lr
+_020D15EC:
+ ldr r0, [r6, #0x1c]
+ ands r0, r0, #0x10
+ beq _020D162C
+ ldr r0, [r6, #0x1c]
+ bic r0, r0, #0x10
+ str r0, [r6, #0x1c]
+ ldr r0, [r6, #0x58]
+ ands r0, r0, #0x400
+ beq _020D162C
+ add r0, sp, #0x0
+ bl FS_InitFile
+ str r6, [sp, #0x8]
+ ldr r2, [r6, #0x54]
+ add r0, sp, #0x0
+ mov r1, #0xa
+ blx r2
+_020D162C:
+ ldr r0, [r6, #0x1c]
+ ands r0, r0, #0x40
+ beq _020D1658
+ ldr r1, [r6, #0x1c]
+ add r0, r6, #0x14
+ bic r1, r1, #0x40
+ str r1, [r6, #0x1c]
+ ldr r1, [r6, #0x1c]
+ orr r1, r1, #0x8
+ str r1, [r6, #0x1c]
+ bl OS_WakeupThread
+_020D1658:
+ mov r0, r5
+ bl OS_RestoreInterrupts
+_020D1660:
+ mov r0, #0x0
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r9, lr}
+ bx lr
+
+ arm_func_start FSi_ReadMemoryCore
+FSi_ReadMemoryCore: ; 0x020D1670
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r0, r2
+ mov r2, r3
+ bl MI_CpuCopy8
+_020D1684:
+ mov r0, #0x0
+ add sp, sp, #0x4
+ ldmfd sp!, {lr}
+ bx lr
+
+ arm_func_start FSi_WriteMemCallback
+FSi_WriteMemCallback: ; 0x020D1694
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r12, [r0, #0x28]
+ mov r0, r1
+ add r1, r12, r2
+ mov r2, r3
+ bl MI_CpuCopy8
+_020D16B0:
+ mov r0, #0x0
+ add sp, sp, #0x4
+ ldmfd sp!, {lr}
+ bx lr
+
+ arm_func_start FSi_ReadMemCallback
+FSi_ReadMemCallback: ; 0x020D16C0
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r0, [r0, #0x28]
+ add r0, r0, r2
+ mov r2, r3
+ bl MI_CpuCopy8
+_020D16D8:
+ mov r0, #0x0
+ add sp, sp, #0x4
+ ldmfd sp!, {lr}
+ bx lr
+
+ arm_func_start FSi_GetPackedName
+FSi_GetPackedName: ; 0x020D16E8
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ cmp r1, #0x3
+ mov lr, #0x0
+ bgt _020D173C
+ mov r12, lr
+ cmp r1, #0x0
+ ble _020D173C
+ mov r3, lr
+_020D170C:
+ ldrb r2, [r0, r12]
+ cmp r2, #0x0
+ beq _020D173C
+ sub r2, r2, #0x41
+ cmp r2, #0x19
+ addls r2, r2, #0x61
+ addhi r2, r2, #0x41
+ add r12, r12, #0x1
+ orr lr, lr, r2, lsl r3
+ cmp r12, r1
+ add r3, r3, #0x8
+ blt _020D170C
+_020D173C:
+ mov r0, lr
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start FS_ChangeDir
+FS_ChangeDir: ; 0x020D174C
+ stmdb sp!, {r4,lr}
+ sub sp, sp, #0x58
+ mov r4, r0
+ add r0, sp, #0xc
+ bl FS_InitFile
+ add r0, sp, #0xc
+ add r3, sp, #0x0
+ mov r1, r4
+ mov r2, #0x0
+ bl FSi_FindPath
+_020D1774:
+ cmp r0, #0x0
+ moveq r0, #0x0
+ addne r0, sp, #0x0
+ ldrne r3, _020D179C
+ ldmneia r0, {r0, r1, r2}
+ stmneia r3, {r0, r1, r2}
+ movne r0, #0x1
+ add sp, sp, #0x58
+ ldmia sp!, {r4, lr}
+ bx lr
+_020D179C: .word 0x021D53EC
+
+ arm_func_start FS_SeekFile
+FS_SeekFile: ; 0x020D17A0
+ cmp r2, #0x0
+ beq _020D17BC
+ cmp r2, #0x1
+ beq _020D17C8
+ cmp r2, #0x2
+ beq _020D17D4
+ b _020D17E0
+_020D17BC:
+ ldr r2, [r0, #0x24]
+ add r1, r1, r2
+ b _020D17E8
+_020D17C8:
+ ldr r2, [r0, #0x2c]
+ add r1, r1, r2
+ b _020D17E8
+_020D17D4:
+ ldr r2, [r0, #0x28]
+ add r1, r1, r2
+ b _020D17E8
+_020D17E0:
+ mov r0, #0x0
+ bx lr
+_020D17E8:
+ ldr r2, [r0, #0x24]
+ cmp r1, r2
+ movlt r1, r2
+ ldr r2, [r0, #0x28]
+ cmp r1, r2
+ movgt r1, r2
+ str r1, [r0, #0x2c]
+ mov r0, #0x1
+ bx lr
+
+ arm_func_start FS_ReadFile
+FS_ReadFile: ; 0x020D180C
+ ldr ip, _020D1818 ; =FUN_020D1AAC
+ mov r3, #0x0
+ bx r12
+ .balign 4
+_020D1818: .word FUN_020D1AAC
+
+ arm_func_start FS_ReadFileAsync
+FS_ReadFileAsync: ; 0x020D181C
+ ldr ip, _020D1828 ; =FUN_020D1AAC
+ mov r3, #0x1
+ bx r12
+ .balign 4
+_020D1828: .word FUN_020D1AAC
+
+ arm_func_start FS_WaitAsync
+FS_WaitAsync: ; 0x020D182C
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r6, r0
+ mov r5, #0x0
+ bl OS_DisableInterrupts
+ ldr r1, [r6, #0xc]
+ mov r4, r0
+ ands r0, r1, #0x1
+ movne r0, #0x1
+ moveq r0, r5
+ cmp r0, #0x0
+ beq _020D18BC
+ ldr r0, [r6, #0xc]
+ ands r0, r0, #0x44
+ moveq r5, #0x1
+ movne r5, #0x0
+ cmp r5, #0x0
+ beq _020D189C
+ ldr r0, [r6, #0xc]
+ orr r0, r0, #0x4
+ str r0, [r6, #0xc]
+ add r7, r6, #0x18
+_020D1884:
+ mov r0, r7
+ bl OS_SleepThread
+ ldr r0, [r6, #0xc]
+ ands r0, r0, #0x40
+ beq _020D1884
+ b _020D18BC
+_020D189C:
+ add r0, r6, #0x18
+ bl OS_SleepThread
+ ldr r0, [r6, #0xc]
+ ands r0, r0, #0x1
+ movne r0, #0x1
+ moveq r0, #0x0
+ cmp r0, #0x0
+ bne _020D189C
+_020D18BC:
+ mov r0, r4
+ bl OS_RestoreInterrupts
+_020D18C4:
+ cmp r5, #0x0
+ beq _020D18E0
+ mov r0, r6
+ bl FSi_ExecuteSyncCommand
+ add sp, sp, #4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020D18E0:
+ ldr r0, [r6, #0x14]
+ cmp r0, #0x0
+ moveq r0, #0x1
+ movne r0, #0x0
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+
+ arm_func_start FS_CloseFile
+FS_CloseFile: ; 0x020D18FC
+ stmdb sp!, {r4,lr}
+ mov r1, #0x8
+ mov r4, r0
+ bl FSi_SendCommand
+_020D190C:
+ cmp r0, #0x0
+ moveq r0, #0x0
+ ldmeqia sp!, {r4,lr}
+ bxeq lr
+ mov r0, #0x0
+ str r0, [r4, #0x8]
+ mov r0, #0xE
+ str r0, [r4, #0x10]
+ ldr r1, [r4, #0xC]
+ mov r0, #0x1
+ bic r1, r1, #0x30
+ str r1, [r4, #0xC]
+ ldmia sp!, {r4,lr}
+ bx lr
+
+ arm_func_start FS_OpenFile
+FS_OpenFile: ; 0x020D1944
+ stmdb sp!, {r4,lr}
+ sub sp, sp, #0x8
+ mov r4, r0
+ add r0, sp, #0x0
+ bl FS_ConvertPathToFileID
+_020D1958:
+ cmp r0, #0x0
+ beq _020D1984
+ add r1, sp, #0x0
+ mov r0, r4
+ ldmia r1, {r1, r2}
+ bl FS_OpenFileFast
+ cmp r0, #0x0
+ addne sp, sp, #0x8
+ movne r0, #0x1
+ ldmneia sp!, {r4, lr}
+ bxne lr
+_020D1984:
+ mov r0, #0x0
+ add sp, sp, #0x8
+ ldmia sp!, {r4, lr}
+ bx lr
+
+ arm_func_start FS_OpenFileFast
+FS_OpenFileFast:
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r4,lr}
+ ldr r1, [sp, #0xc]
+ mov r4, r0
+ cmp r1, #0x0
+ moveq r0, #0x0
+ ldmeqia sp!, {r4,lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+ str r1, [r4, #0x8]
+ ldr r3, [sp, #0xc]
+ ldr r2, [sp, #0x10]
+ mov r1, #0x6
+ str r3, [r4, #0x30]
+ str r2, [r4, #0x34]
+ bl FSi_SendCommand
+_020D19D4:
+ cmp r0, #0x0
+ moveq r0, #0x0
+ ldmeqia sp!, {r4, lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+ ldr r1, [r4, #0xC]
+ mov r0, #0x1
+ orr r1, r1, #0x10
+ str r1, [r4, #0xC]
+ ldr r1, [r4, #0xC]
+ bic r1, r1, #0x20
+ str r1, [r4, #0xC]
+ ldmia sp!, {r4, lr}
+ add sp, sp, #0x10
+ bx lr
+
+ arm_func_start FS_OpenFileDirect
+FS_OpenFileDirect:
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ str r1, [r4, #0x8]
+ ldr r12, [sp, #0x8]
+ mov r1, #0x7
+ str r12, [r4, #0x38]
+ str r2, [r4, #0x30]
+ str r3, [r4, #0x34]
+ bl FSi_SendCommand
+_020D1A34:
+ cmp r0, #0x0
+ moveq r0, #0x0
+ ldmeqia sp!, {r4, lr}
+ bxeq lr
+ ldr r1, [r4, #0xC]
+ mov r0, #0x1
+ orr r1, r1, #0x10
+ str r1, [r4, #0xC]
+ ldr r1, [r4, #0xC]
+ bic r1, r1, #0x20
+ str r1, [r4, #0xC]
+ ldmia sp!, {r4, lr}
+ bx lr
+
+ arm_func_start FS_ConvertPathToFileID
+FS_ConvertPathToFileID:
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4c
+ mov r5, r0
+ add r0, sp, #0x0
+ mov r4, r1
+ bl FS_InitFile
+_020D1A80:
+ add r0, sp, #0x0
+ mov r1, r4
+ mov r2, r5
+ mov r3, #0x0
+ bl FSi_FindPath
+ cmp r0, #0x0
+ movne r0, #0x1
+ moveq r0, #0x0
+ add sp, sp, #0x4C
+ ldmia sp!, {r4-r5, lr}
+ bx lr
+
+ arm_func_start FUN_020D1AAC
+FUN_020D1AAC: ; 0x020D1AAC
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r7, r0
+ ldr r4, [r7, #0x2c]
+ ldr r0, [r7, #0x28]
+ mov r6, r2
+ str r1, [r7, #0x30]
+ sub r0, r0, r4
+ cmp r6, r0
+ movgt r6, r0
+ cmp r6, #0x0
+ movlt r6, #0x0
+ str r2, [r7, #0x34]
+ mov r5, r3
+ str r6, [r7, #0x38]
+ cmp r5, #0x0
+ ldreq r0, [r7, #0xc]
+ mov r1, #0x0
+ orreq r0, r0, #0x4
+ streq r0, [r7, #0xc]
+ mov r0, r7
+ bl FSi_SendCommand
+_020D1B04:
+ cmp r5, #0x0
+ bne _020D1B24
+ mov r0, r7
+ bl FS_WaitAsync
+ cmp r0, #0x0
+ ldrne r0, [r7, #0x2C]
+ subne r6, r0, r4
+ mvneq r6, #0x0
+_020D1B24:
+ mov r0, r6
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7, lr}
+ bx lr
+
+ arm_func_start FSi_FindPath
+FSi_FindPath:
+ stmdb sp!, {r4-r8,lr}
+ sub sp, sp, #0x10
+ mov r7, r1
+ ldrb r1, [r7, #0x0]
+ mov r8, r0
+ mov r6, r2
+ mov r5, r3
+ cmp r1, #0x2f
+ beq _020D1B60
+ cmp r1, #0x5c
+ bne _020D1B84
+_020D1B60:
+ ldr r0, _020D1C90 ; =0x021D53EC
+ mov r1, #0x0
+ ldr r0, [r0, #0x0]
+ strh r1, [sp, #0x4]
+ str r0, [sp, #0x0]
+ str r1, [sp, #0x8]
+ strh r1, [sp, #0x6]
+ add r7, r7, #0x1
+ b _020D1C40
+_020D1B84:
+ ldr r0, _020D1C90 ; =0x021D53EC
+ add r3, sp, #0x0
+ ldmia r0, {r0-r2}
+ stmia r3, {r0-r2}
+ mov r4, #0x0
+_020D1B98:
+ ldrb r0, [r7, r4]
+ cmp r0, #0x0
+ beq _020D1C40
+ cmp r0, #0x2f
+ beq _020D1C40
+ cmp r0, #0x5c
+ beq _020D1C40
+ cmp r0, #0x3a
+ bne _020D1C34
+ mov r0, r7
+ mov r1, r4
+ bl FS_FindArchive
+_020D1BC8:
+ cmp r0, #0x0
+ addeq sp, sp, #0x10
+ moveq r0, #0x0
+ ldmeqia sp!, {r4-r8,lr}
+ bxeq lr
+ ldr r1, [r0, #0x1C]
+ ands r1, r1, #0x2
+ movne r1, #0x1
+ moveq r1, #0x0
+ cmp r1, #0x0
+ addeq sp, sp, #0x10
+ moveq r0, #0x0
+ ldmeqia sp!, {r4-r8,lr}
+ bxeq lr
+ mov r1, #0x0
+ str r0, [sp]
+ str r1, [sp, #0x8]
+ strh r1, [sp, #0x6]
+ strh r1, [sp, #0x4]
+ add r0, r4, #0x1
+ ldrb r0, [r7, r0]!
+ cmp r0, #0x2f
+ beq _020D1C2C
+ cmp r0, #0x5c
+ bne _020D1C40
+_020D1C2C:
+ add r7, r7, #0x1
+ b _020D1C40
+_020D1C34:
+ add r4, r4, #0x1
+ cmp r4, #0x3
+ ble _020D1B98
+_020D1C40:
+ ldr r1, [sp, #0x0]
+ add r0, sp, #0x0
+ str r1, [r8, #0x8]
+ str r7, [r8, #0x3c]
+ add r3, r8, #0x30
+ ldmia r0, {r0-r2}
+ stmia r3, {r0-r2}
+ cmp r5, #0x0
+ movne r0, #0x1
+ strne r0, [r8, #0x40]
+ strne r5, [r8, #0x44]
+ moveq r0, #0x0
+ streq r0, [r8, #0x40]
+ mov r0, r8
+ mov r1, #0x4
+ streq r6, [r8, #0x44]
+ bl FSi_SendCommand
+ add sp, sp, #0x10
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+ .balign 4
+_020D1C90: .word 0x021D53EC
+
+ arm_func_start FS_InitFile
+FS_InitFile:
+ mov r3, #0x0
+ str r3, [r0, #0x0]
+ ldr r2, [r0, #0x0]
+ mov r1, #0xe
+ str r2, [r0, #0x4]
+ str r3, [r0, #0x1c]
+ ldr r2, [r0, #0x1c]
+ str r2, [r0, #0x18]
+ str r3, [r0, #0x8]
+ str r1, [r0, #0x10]
+ str r3, [r0, #0xc]
+ bx lr
+
+ arm_func_start FS_IsAvailable
+FS_IsAvailable: ; 0x020D1CC4
+ ldr r0, _020D1CD0 ; =0x021D53F8
+ ldr r0, [r0, #0x0]
+ bx lr
+ .balign 4
+_020D1CD0: .word 0x021D53F8
+
+ arm_func_start FS_Init
+FS_Init: ; 0x020D1CD4
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r1, _020D1D0C ; =0x021D53F8
+ ldr r2, [r1, #0x0]
+ cmp r2, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {lr}
+ bxne lr
+ mov r2, #0x1
+ str r2, [r1, #0x0]
+ bl FSi_InitRom
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020D1D0C: .word 0x021D53F8
+
+ arm_func_start FS_TryLoadTable
+FS_TryLoadTable: ; 0x020D1D10
+ ldr ip, _020D1D28 ; =FUN_020D0D84
+ mov r3, r0
+ mov r2, r1
+ ldr r0, _020D1D2C ; =0x021D5414
+ mov r1, r3
+ bx r12
+ .balign 4
+_020D1D28: .word FUN_020D0D84
+_020D1D2C: .word 0x021D5414
+
+ arm_func_start FS_SetDefaultDMA
+FS_SetDefaultDMA: ; 0x020D1D30
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0
+ bl OS_DisableInterrupts
+ mov r5, r0
+ ldr r1, _020D1D7C ; =0x021D5400
+ ldr r0, _020D1D80 ; =0x021D5414
+ ldr r4, [r1, #0x0]
+ bl FS_SuspendArchive
+ ldr r1, _020D1D7C ; =0x021D5400
+ cmp r0, #0x0
+ str r6, [r1, #0x0]
+ beq _020D1D68
+ ldr r0, _020D1D80 ; =0x021D5414
+ bl FS_ResumeArchive
+_020D1D68:
+ mov r0, r5
+ bl OS_RestoreInterrupts
+ mov r0, r4
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+ .balign 4
+_020D1D7C: .word 0x021D5400
+_020D1D80: .word 0x021D5414
+
+ arm_func_start FSi_InitRom
+FSi_InitRom: ; 0x020D1D84
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x14
+ ldr r1, _020D1EE8 ; =0x021D5400
+ str r0, [r1, #0x0]
+ bl OS_GetLockID
+ ldr r3, _020D1EEC ; =0x021D53FC
+ ldr r2, _020D1EF0 ; =0x021D5404
+ mov r12, #0x0
+ ldr r1, _020D1EF4 ; =0x021D540C
+ str r0, [r3, #0x0]
+ str r12, [r2, #0x0]
+ str r12, [r2, #0x4]
+ str r12, [r1, #0x0]
+ str r12, [r1, #0x4]
+ bl CARD_Init
+ ldr r0, _020D1EF8 ; =0x021D5414
+ bl FS_InitArchive
+ ldr r0, _020D1EF8 ; =0x021D5414
+ ldr r1, _020D1EFC ; =0x02106830
+ mov r2, #0x3
+ bl FS_RegisterArchiveName
+ ldr r0, _020D1F00 ; =0x027FFC40
+ ldrh r0, [r0, #0x0]
+ cmp r0, #0x2
+ bne _020D1E4C
+ ldr ip, _020D1EF0 ; =0x021D5404
+ mvn r2, #0x0
+ ldr r3, _020D1EF4 ; =0x021D540C
+ mov lr, #0x0
+ ldr r0, _020D1EF8 ; =0x021D5414
+ ldr r1, _020D1F04 ; =FSi_EmptyArchiveProc
+ str r2, [r12, #0x0]
+ str lr, [r12, #0x4]
+ str r2, [r3, #0x0]
+ str lr, [r3, #0x4]
+ bl FS_SetArchiveProc
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ ldr r0, _020D1F08 ; =FSi_ReadDummyCallback
+ str r1, [sp, #0x4]
+ str r0, [sp, #0x8]
+ ldr ip, _020D1F0C ; =FSi_WriteDummyCallback
+ ldr r0, _020D1EF8 ; =0x021D5414
+ mov r2, r1
+ mov r3, r1
+ str r12, [sp, #0xc]
+ bl FS_LoadArchive
+ add sp, sp, #0x14
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+_020D1E4C:
+ ldr r5, _020D1F10 ; =0x027FFE40
+ ldr r0, _020D1EF8 ; =0x021D5414
+ ldr r1, _020D1F14 ; =FSi_RomArchiveProc
+ ldr r2, _020D1F18 ; =0x00000602
+ ldr r4, _020D1F1C ; =0x027FFE48
+ bl FS_SetArchiveProc
+ ldr r1, [r5, #0x0]
+ mvn r0, #0x0
+ cmp r1, r0
+ addeq sp, sp, #0x14
+ ldmeqia sp!, {r4-r5,lr}
+ bxeq lr
+ cmp r1, #0x0
+ addeq sp, sp, #0x14
+ ldmeqia sp!, {r4-r5,lr}
+ bxeq lr
+ ldr r2, [r4, #0x0]
+ cmp r2, r0
+ addeq sp, sp, #0x14
+ ldmeqia sp!, {r4-r5,lr}
+ bxeq lr
+ cmp r2, #0x0
+ addeq sp, sp, #0x14
+ ldmeqia sp!, {r4-r5,lr}
+ bxeq lr
+ str r1, [sp, #0x0]
+ ldr r0, [r5, #0x4]
+ ldr r1, _020D1F20 ; =FSi_ReadRomCallback
+ str r0, [sp, #0x4]
+ ldr r0, _020D1F0C ; =FSi_WriteDummyCallback
+ str r1, [sp, #0x8]
+ str r0, [sp, #0xc]
+ ldr r3, [r4, #0x4]
+ ldr r0, _020D1EF8 ; =0x021D5414
+ mov r1, #0x0
+ bl FS_LoadArchive
+ add sp, sp, #0x14
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020D1EE8: .word 0x021D5400
+_020D1EEC: .word 0x021D53FC
+_020D1EF0: .word 0x021D5404
+_020D1EF4: .word 0x021D540C
+_020D1EF8: .word 0x021D5414
+_020D1EFC: .word 0x02106830
+_020D1F00: .word 0x027FFC40
+_020D1F04: .word FSi_EmptyArchiveProc
+_020D1F08: .word FSi_ReadDummyCallback
+_020D1F0C: .word FSi_WriteDummyCallback
+_020D1F10: .word 0x027FFE40
+_020D1F14: .word FSi_RomArchiveProc
+_020D1F18: .word 0x00000602
+_020D1F1C: .word 0x027FFE48
+_020D1F20: .word FSi_ReadRomCallback
+
+ arm_func_start FSi_EmptyArchiveProc
+FSi_EmptyArchiveProc: ; 0x020D1F24
+ mov r0, #0x4
+ bx lr
+
+ arm_func_start FSi_ReadDummyCallback
+FSi_ReadDummyCallback: ; 0x020D1F2C
+ mov r0, #0x1
+ bx lr
+
+ arm_func_start FSi_RomArchiveProc
+FSi_RomArchiveProc: ; 0x020D1F34
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ cmp r1, #0x1
+ beq _020D1FA0
+ cmp r1, #0x9
+ beq _020D1F58
+ cmp r1, #0xa
+ beq _020D1F7C
+ b _020D1FB0
+_020D1F58:
+ ldr r0, _020D1FC0 ; =0x021D53FC
+ ldr r0, [r0, #0x0]
+ mov r0, r0, lsl #0x10
+ mov r0, r0, lsr #0x10
+ bl CARD_LockRom
+ add sp, sp, #0x4
+ mov r0, #0x0
+ ldmia sp!, {lr}
+ bx lr
+_020D1F7C:
+ ldr r0, _020D1FC0 ; =0x021D53FC
+ ldr r0, [r0, #0x0]
+ mov r0, r0, lsl #0x10
+ mov r0, r0, lsr #0x10
+ bl CARD_UnlockRom
+ add sp, sp, #0x4
+ mov r0, #0x0
+ ldmia sp!, {lr}
+ bx lr
+_020D1FA0:
+ add sp, sp, #0x4
+ mov r0, #0x4
+ ldmia sp!, {lr}
+ bx lr
+_020D1FB0:
+ mov r0, #0x8
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020D1FC0: .word 0x021D53FC
+
+ arm_func_start FSi_WriteDummyCallback
+FSi_WriteDummyCallback: ; 0x020D1FC4
+ mov r0, #0x1
+ bx lr
+
+ arm_func_start FSi_ReadRomCallback
+FSi_ReadRomCallback: ; 0x020D1FCC
+ stmdb sp!, {lr}
+ sub sp, sp, #0xc
+ ldr ip, _020D2010 ; =FSi_OnRomReadDone
+ mov lr, r1
+ str r12, [sp, #0x0]
+ str r0, [sp, #0x4]
+ mov r1, #0x1
+ ldr r0, _020D2014 ; =0x021D5400
+ str r1, [sp, #0x8]
+ mov r1, r2
+ ldr r0, [r0, #0x0]
+ mov r2, lr
+ bl CARDi_ReadRom
+ mov r0, #0x6
+ add sp, sp, #0xc
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020D2010: .word FSi_OnRomReadDone
+_020D2014: .word 0x021D5400
+
+ arm_func_start FSi_OnRomReadDone
+FSi_OnRomReadDone: ; 0x020D2018
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ bl CARD_IsPulledOut
+_020D2024:
+ cmp r0, #0x0
+ movne r1, #0x5
+ moveq r1, #0x0
+ mov r0, r4
+ bl FS_NotifyArchiveAsyncEnd
+ ldmia sp!, {r4,lr}
+ bx lr
+
+
+ arm_func_start FS_UnloadOverlay
+FS_UnloadOverlay: ; 0x020D2040
+ stmdb sp!, {lr}
+ sub sp, sp, #0x2c
+ mov r3, r0
+ mov r2, r1
+ add r0, sp, #0x0
+ mov r1, r3
+ bl FS_LoadOverlayInfo
+_020D205C:
+ cmp r0, #0x0
+ beq _020D2074
+ add r0, sp, #0x0
+ bl FS_UnloadOverlayImage
+ cmp r0, #0x0
+ bne _020D2084
+_020D2074:
+ add sp, sp, #0x2c
+ mov r0, #0x0
+ ldmfd sp!, {lr}
+ bx lr
+_020D2084:
+ mov r0, #0x1
+ add sp, sp, #0x2c
+ ldmfd sp!, {lr}
+ bx lr
+
+ arm_func_start FS_LoadOverlay
+FS_LoadOverlay: ; 0x020D2094
+ stmdb sp!, {lr}
+ sub sp, sp, #0x2c
+ mov r3, r0
+ mov r2, r1
+ add r0, sp, #0x0
+ mov r1, r3
+ bl FS_LoadOverlayInfo
+_020D20B0:
+ cmp r0, #0x0
+ beq _020D20C8
+ add r0, sp, #0x0
+ bl FS_LoadOverlayImage
+ cmp r0, #0x0
+ bne _020D20D8
+_020D20C8:
+ add sp, sp, #0x2c
+ mov r0, #0x0
+ ldmfd sp!, {lr}
+ bx lr
+_020D20D8:
+ add r0, sp, #0x0
+ bl FS_StartOverlay
+ mov r0, #0x1
+ add sp, sp, #0x2c
+ ldmfd sp!, {lr}
+ bx lr
+
+ arm_func_start FS_UnloadOverlayImage
+FS_UnloadOverlayImage: ; 0x020D20F0
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ bl FS_EndOverlay
+ mov r0, #0x1
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start FS_EndOverlay
+FS_EndOverlay: ; 0x020D210C
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x4
+ ldr r8, _020D220C ; =0x021D74C8
+ mov r11, r0
+ mov r9, #0x0
+_020D2120:
+ ldr r1, [r11, #0x8]
+ ldr r0, [r11, #0xc]
+ ldr r5, [r11, #0x4]
+ add r0, r1, r0
+ mov r7, r9
+ mov r6, r9
+ add r4, r5, r0
+ bl OS_DisableInterrupts
+ ldr lr, [r8, #0x0]
+ mov r10, r9
+ mov r12, lr
+ cmp lr, #0x0
+ beq _020D21C4
+_020D2154:
+ ldr r2, [r12, #0x8]
+ ldr r3, [r12, #0x0]
+ cmp r2, #0x0
+ ldr r1, [r12, #0x4]
+ bne _020D2178
+ cmp r1, r5
+ blo _020D2178
+ cmp r1, r4
+ blo _020D2188
+_020D2178:
+ cmp r2, r5
+ blo _020D21B4
+ cmp r2, r4
+ bhs _020D21B4
+_020D2188:
+ cmp r6, #0x0
+ strne r12, [r6, #0x0]
+ moveq r7, r12
+ cmp lr, r12
+ streq r3, [r8, #0x0]
+ moveq lr, r3
+ str r9, [r12, #0x0]
+ cmp r10, #0x0
+ mov r6, r12
+ strne r3, [r10, #0x0]
+ b _020D21B8
+_020D21B4:
+ mov r10, r12
+_020D21B8:
+ mov r12, r3
+ cmp r3, #0x0
+ bne _020D2154
+_020D21C4:
+ bl OS_RestoreInterrupts
+_020D21C8:
+ cmp r7, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r11, lr}
+ bxeq lr
+_020D21D8:
+ ldr r1, [r7, #0x4]
+ ldr r4, [r7]
+ cmp r1, #0x0
+ beq _020D21F0
+ ldr r0, [r7, #0x8]
+ blx r1
+_020D21F0:
+ mov r7, r4
+ cmp r4, #0x0
+ bne _020D21D8
+ b _020D2120
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r11, lr}
+ bx lr
+_020D220C: .word 0x021D74C8
+
+ arm_func_start FS_StartOverlay
+FS_StartOverlay: ; 0x020D2210
+ stmdb sp!, {r4-r6,lr}
+ mov r5, r0
+ bl FSi_GetOverlayBinarySize
+ ldr r1, _020D2300 ; =0x027FFC40
+ mov r4, r0
+ ldrh r0, [r1, #0x0]
+ cmp r0, #0x2
+ bne _020D22A4
+ ldrb r1, [r5, #0x1f]
+ mov r0, #0x0
+ ands r1, r1, #0x2
+ beq _020D2280
+ ldr r1, _020D2304 ; =0x02106F84
+ ldr r3, _020D2308 ; =0x02106F84
+ ldr r2, _020D230C ; =0x66666667
+ sub r12, r1, r3
+ smull r1, lr, r2, r12
+ mov lr, lr, asr #0x3
+ mov r1, r12, lsr #0x1f
+ ldr r2, [r5, #0x0]
+ add lr, r1, lr
+ cmp r2, lr
+ bhs _020D2280
+ mov r0, #0x14
+ mla r0, r2, r0, r3
+ ldr r1, [r5, #0x4]
+ mov r2, r4
+ bl FSi_CompareDigest
+_020D2280:
+ cmp r0, #0x0
+ bne _020D22A4
+ ldr r0, [r5, #0x4]
+ mov r2, r4
+ mov r1, #0x0
+ bl MI_CpuFill8
+ bl OS_Terminate
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020D22A4:
+ ldrb r0, [r5, #0x1f]
+ ands r0, r0, #0x1
+ beq _020D22BC
+ ldr r0, [r5, #0x4]
+ add r0, r0, r4
+ bl MIi_UncompressBackward
+_020D22BC:
+ ldr r0, [r5, #0x4]
+ ldr r1, [r5, #0x8]
+ bl DC_FlushRange
+ ldr r6, [r5, #0x10]
+ ldr r4, [r5, #0x14]
+ cmp r6, r4
+ ldmcsia sp!, {r4-r6,lr}
+ bxcs lr
+_020D22DC:
+ ldr r0, [r6, #0x0]
+ cmp r0, #0x0
+ beq _020D22EC
+ blx r0
+_020D22EC:
+ add r6, r6, #0x4
+ cmp r6, r4
+ blo _020D22DC
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+ .balign 4
+_020D2300: .word 0x027FFC40
+_020D2304: .word 0x02106F84
+_020D2308: .word 0x02106F84
+_020D230C: .word 0x66666667
+
+ arm_func_start FSi_CompareDigest
+FSi_CompareDigest:
+ stmdb sp!, {r4-r6,lr}
+ sub sp, sp, #0x58
+ mov r4, r0
+ mov r6, r1
+ mov r5, r2
+ add r0, sp, #0x4
+ mov r1, #0x0
+ mov r2, #0x14
+ bl MI_CpuFill8
+ ldr r0, _020D23AC ; =0x02106834
+ ldr r1, _020D23B0 ; =0x02106838
+ ldr r0, [r0, #0x0]
+ ldr r2, [r1, #0x0]
+ add r1, sp, #0x18
+ bl MI_CpuCopy8
+ ldr r3, _020D23B0 ; =0x02106838
+ mov r1, r6
+ ldr r12, [r3, #0x0]
+ mov r2, r5
+ add r0, sp, #0x4
+ add r3, sp, #0x18
+ str r12, [sp, #0x0]
+ bl MATH_CalcHMACSHA1
+ add r2, sp, #0x4
+ mov r3, #0x0
+_020D2374:
+ ldr r1, [r2, #0x0]
+ ldr r0, [r4, r3]
+ cmp r1, r0
+ bne _020D2394
+ add r3, r3, #0x4
+ cmp r3, #0x14
+ add r2, r2, #0x4
+ blo _020D2374
+_020D2394:
+ cmp r3, #0x14
+ moveq r0, #0x1
+ movne r0, #0x0
+ add sp, sp, #0x58
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+ .balign 4
+_020D23AC: .word 0x02106834
+_020D23B0: .word 0x02106838
+
+ arm_func_start FS_LoadOverlayImage
+FS_LoadOverlayImage: ; 0x020D23B4
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x54
+ mov r5, r0
+ add r0, sp, #0x8
+ bl FS_InitFile
+_020D23C8:
+ add r0, sp, #0x0
+ mov r1, r5
+ bl FS_GetOverlayFileID
+ add r1, sp, #0x0
+ add r0, sp, #0x8
+ ldmia r1, {r1, r2}
+ bl FS_OpenFileFast
+ cmp r0, #0x0
+ addeq sp, sp, #0x54
+ moveq r0, #0x0
+ ldmeqia sp!, {r4-r5, lr}
+ bxeq lr
+ mov r0, r5
+ bl FSi_GetOverlayBinarySize
+ mov r4, r0
+ mov r0, r5
+ bl FS_ClearOverlayImage
+ ldr r1, [r5, #0x4]
+ add r0, sp, #0x8
+ mov r2, r4
+ bl FS_ReadFile
+ cmp r4, r0
+ beq _020D243C
+ add r0, sp, #0x8
+ bl FS_CloseFile
+ add sp, sp, #0x54
+ mov r0, #0x0
+ ldmia sp!, {r4-r5, lr}
+ bx lr
+_020D243C:
+ add r0, sp, #0x8
+ bl FS_CloseFile
+ mov r0, #0x1
+ add sp, sp, #0x54
+ ldmia sp!, {r4-r5, lr}
+ bx lr
+
+ arm_func_start FS_LoadOverlayImageAsync
+FS_LoadOverlayImageAsync: ; 0x020D2454
+ stmdb sp!, {r4-r6,lr}
+ sub sp, sp, #0x8
+ mov r5, r1
+ mov r6, r0
+ mov r0, r5
+ bl FS_InitFile
+_020D246C:
+ add r0, sp, #0x0
+ mov r1, r6
+ bl FS_GetOverlayFileID
+ add r1, sp, #0x0
+ mov r0, r5
+ ldmia r1, {r1, r2}
+ bl FS_OpenFileFast
+ cmp r0, #0x0
+ addeq sp, sp, #0x8
+ moveq r0, #0x0
+ ldmeqia sp!, {r4-r6, lr}
+ bxeq lr
+ mov r0, r6
+ bl FSi_GetOverlayBinarySize
+ mov r4, r0
+ mov r0, r6
+ bl FS_ClearOverlayImage
+ ldr r1, [r6, #0x4]
+ mov r0, r5
+ mov r2, r4
+ bl FS_ReadFileAsync
+ cmp r4, r0
+ addeq sp, sp, #0x8
+ moveq r0, #0x1
+ ldmeqia sp!, {r4-r6, lr}
+ bxeq lr
+ mov r0, r5
+ bl FS_CloseFile
+ mov r0, #0x0
+ add sp, sp, #0x8
+ ldmia sp!, {r4-r6, lr}
+ bx lr
+
+ arm_func_start FS_LoadOverlayInfo
+FS_LoadOverlayInfo:
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x64
+ movs r4, r1
+ mov r5, r0
+ ldreq r0, _020D25EC ; =0x021D5404
+ ldrne r0, _020D25F0 ; =0x021D540C
+ ldr r3, [r0, #0x0]
+ cmp r3, #0x0
+ beq _020D25A8
+ ldr r0, [r0, #0x4]
+ mov r2, r2, lsl #0x5
+ cmp r2, r0
+ addcs sp, sp, #0x64
+ movcs r0, #0x0
+ ldmcsia sp!, {r4-r5,lr}
+ bxcs lr
+ add r0, r3, r2
+ mov r1, r5
+ mov r2, #0x20
+ bl MI_CpuCopy8
+ add r0, sp, #0x18
+ str r4, [r5, #0x20]
+ bl FS_InitFile
+ add r0, sp, #0x10
+ mov r1, r5
+ bl FS_GetOverlayFileID
+ add r1, sp, #0x10
+ add r0, sp, #0x18
+ ldmia r1, {r1-r2}
+ bl FS_OpenFileFast
+_020D2564:
+ cmp r0, #0x0
+ addeq sp, sp, #0x64
+ moveq r0, #0x0
+ ldmeqia sp!, {r4-r5,lr}
+ bxeq lr
+ ldr r1, [sp, #0x3c]
+ add r0, sp, #0x18
+ str r1, [r5, #0x24]
+ ldr r2, [sp, #0x40]
+ ldr r1, [sp, #0x3c]
+ sub r1, r2, r1
+ str r1, [r5, #0x28]
+ bl FS_CloseFile
+ add sp, sp, #0x64
+ mov r0, #0x1
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+_020D25A8:
+ ldr r1, _020D25F4 ; =0x027FFE50
+ ldr ip, _020D25F8 ; =0x027FFE58
+ ldr r0, [r1, #0x0]
+ ldr r3, _020D25FC ; =0x021D5414
+ str r0, [sp, #0x0]
+ ldr r1, [r1, #0x4]
+ mov r0, r5
+ str r1, [sp, #0x4]
+ ldr r5, [r12, #0x0]
+ mov r1, r4
+ str r5, [sp, #0x8]
+ ldr r4, [r12, #0x4]
+ str r4, [sp, #0xc]
+ bl FSi_LoadOverlayInfoCore
+ add sp, sp, #0x64
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020D25EC: .word 0x021D5404
+_020D25F0: .word 0x021D540C
+_020D25F4: .word 0x027FFE50
+_020D25F8: .word 0x027FFE58
+_020D25FC: .word 0x021D5414
+
+ arm_func_start FSi_LoadOverlayInfoCore
+FSi_LoadOverlayInfoCore: ; 0x020D2600
+ stmdb sp!, {r4-r9,lr}
+ sub sp, sp, #0x54
+ movs r9, r1
+ ldreq r5, [sp, #0x74]
+ ldreq r6, [sp, #0x70]
+ ldrne r5, [sp, #0x7c]
+ ldrne r6, [sp, #0x78]
+ mov r7, r2, lsl #0x5
+ cmp r7, r5
+ mov r4, r0
+ mov r8, r3
+ addcs sp, sp, #0x54
+ movcs r0, #0x0
+ ldmcsia sp!, {r4-r9,lr}
+ bxcs lr
+ add r0, sp, #0xc
+ bl FS_InitFile
+ mvn r12, #0x0
+ add r0, sp, #0xc
+ mov r1, r8
+ add r2, r6, r7
+ add r3, r6, r5
+ str r12, [sp, #0x0]
+ bl FS_OpenFileDirect
+_020D2660:
+ cmp r0, #0
+ addeq sp, sp, #0x54
+ moveq r0, #0
+ ldmeqia sp!, {r4-r9, lr}
+ bxeq lr
+ add r0, sp, #12
+ mov r1, r4
+ mov r2, #32
+ bl FS_ReadFile
+ cmp r0, #32
+ beq _020D26A4
+ add r0, sp, #12
+ bl FS_CloseFile
+ add sp, sp, #0x54
+ mov r0, #0x0
+ ldmia sp!, {r4-r9, lr}
+ bx lr
+_020D26A4:
+ add r0, sp, #0xC
+ bl FS_CloseFile
+ add r0, sp, #0x4
+ mov r1, r4
+ str r9, [r4, #0x20]
+ bl FS_GetOverlayFileID
+ add r1, sp, #0x4
+ add r0, sp, #0xC
+ ldmia r1, {r1, r2}
+ bl FS_OpenFileFast
+ cmp r0, #0x0
+ addeq sp, sp, #0x54
+ moveq r0, #0x0
+ ldmeqia sp!, {r4-r9, lr}
+ bxeq lr
+ ldr r1, [sp, #0x30]
+ add r0, sp, #0xC
+ str r1, [r4, #0x24]
+ ldr r2, [sp, #0x34]
+ ldr r1, [sp, #0x30]
+ sub r1, r2, r1
+ str r1, [r4, #0x28]
+ bl FS_CloseFile
+ mov r0, #0x1
+ add sp, sp, #0x54
+ ldmia sp!, {r4-r9, lr}
+ bx lr
+
+ arm_func_start FS_GetOverlayFileID
+FS_GetOverlayFileID: ; 0x020D2710
+ sub sp, sp, #0x8
+ ldr r2, _020D2734 ; =0x021D5414
+ str r2, [sp, #0x0]
+ ldr r1, [r1, #0x18]
+ str r1, [sp, #0x4]
+ str r2, [r0, #0x0]
+ str r1, [r0, #0x4]
+ add sp, sp, #0x8
+ bx lr
+ .balign 4
+_020D2734: .word 0x021D5414
+
+ arm_func_start FS_ClearOverlayImage
+FS_ClearOverlayImage: ; 0x020D2738
+ stmdb sp!, {r4-r6,lr}
+ ldr r5, [r0, #0x8]
+ ldr r1, [r0, #0xc]
+ ldr r6, [r0, #0x4]
+ add r4, r5, r1
+ mov r0, r6
+ mov r1, r4
+ bl IC_InvalidateRange
+ mov r0, r6
+ mov r1, r4
+ bl DC_InvalidateRange
+ add r0, r6, r5
+ sub r2, r4, r5
+ mov r1, #0x0
+ bl MI_CpuFill8
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+
+ arm_func_start FSi_GetOverlayBinarySize
+FSi_GetOverlayBinarySize: ; 0x020D277C
+ ldrb r1, [r0, #0x1f]
+ ands r1, r1, #0x1
+ ldrne r0, [r0, #0x1c]
+ movne r0, r0, lsl #0x8
+ movne r0, r0, lsr #0x8
+ ldreq r0, [r0, #0x8]
+ bx lr
+
+ arm_func_start ProcessBlock
+ProcessBlock: ; 0x020D2798
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x4
+ add r3, r0, #0x18
+ ldr r5, [r0, #0x0]
+ ldr r4, [r0, #0x4]
+ ldr lr, [r0, #0x8]
+ ldr r12, [r0, #0xc]
+ ldr r2, _020D2B78 ; =0x02106900
+ mov r8, r3
+ mov r7, #0x0
+_020D27C0:
+ mvn r1, r4
+ and r6, r4, lr
+ and r1, r1, r12
+ orr r1, r6, r1
+ ldr r6, [r8, #0x0]
+ add r1, r5, r1
+ ldr r5, [r2, #0x0]
+ add r1, r6, r1
+ add r5, r5, r1
+ mov r1, r5, lsl #0x7
+ orr r1, r1, r5, lsr #0x19
+ add r5, r4, r1
+ mvn r1, r5
+ and r6, r5, r4
+ and r1, r1, lr
+ orr r1, r6, r1
+ ldr r6, [r8, #0x4]
+ add r1, r12, r1
+ ldr r9, [r2, #0x4]
+ add r1, r6, r1
+ add r6, r9, r1
+ mov r1, r6, lsl #0xc
+ orr r1, r1, r6, lsr #0x14
+ add r12, r5, r1
+ mvn r1, r12
+ and r6, r12, r5
+ and r1, r1, r4
+ orr r6, r6, r1
+ add r1, r8, #0xc
+ ldr r9, [r8, #0x8]
+ add r6, lr, r6
+ add r6, r9, r6
+ ldr r9, [r2, #0x8]
+ ldr r1, [r1, #0x0]
+ add r10, r9, r6
+ add r6, r2, #0xc
+ ldr r6, [r6, #0x0]
+ mov r9, r10, lsl #0x11
+ orr r9, r9, r10, lsr #0xf
+ add lr, r12, r9
+ add r2, r2, #0x10
+ add r8, r8, #0x10
+ and r10, lr, r12
+ mvn r9, lr
+ and r9, r9, r5
+ orr r9, r10, r9
+ add r4, r4, r9
+ add r1, r1, r4
+ add r4, r6, r1
+ mov r1, r4, lsl #0x16
+ orr r1, r1, r4, lsr #0xa
+ add r4, lr, r1
+ add r7, r7, #0x1
+ cmp r7, #0x4
+ blt _020D27C0
+ ldr r6, _020D2B7C ; =0x02106840
+ mov r1, #0x0
+_020D28A4:
+ mvn r7, r12
+ ldr r9, [r6, #0x0]
+ and r8, r4, r12
+ and r7, lr, r7
+ orr r7, r8, r7
+ ldr r8, [r3, r9, lsl #0x2]
+ add r5, r5, r7
+ ldr r7, [r2, #0x0]
+ add r5, r8, r5
+ add r7, r7, r5
+ mov r5, r7, lsl #0x5
+ orr r5, r5, r7, lsr #0x1b
+ add r5, r4, r5
+ mvn r8, lr
+ ldr r7, [r6, #0x4]
+ and r9, r5, lr
+ and r8, r4, r8
+ orr r10, r9, r8
+ mvn r8, r4
+ ldr r9, [r6, #0x8]
+ ldr r11, [r3, r7, lsl #0x2]
+ add r7, r12, r10
+ add r10, r11, r7
+ add r7, r6, #0xc
+ ldr r9, [r3, r9, lsl #0x2]
+ and r8, r5, r8
+ ldr r7, [r7, #0x0]
+ ldr r11, [r2, #0x4]
+ ldr r7, [r3, r7, lsl #0x2]
+ add r11, r11, r10
+ mov r10, r11, lsl #0x9
+ orr r10, r10, r11, lsr #0x17
+ add r12, r5, r10
+ ldr r10, [r2, #0x8]
+ and r11, r12, r4
+ orr r8, r11, r8
+ add r8, lr, r8
+ add r8, r9, r8
+ add r10, r10, r8
+ add r8, r2, #0xc
+ ldr r8, [r8, #0x0]
+ mov r9, r10, lsl #0xe
+ orr r9, r9, r10, lsr #0x12
+ add lr, r12, r9
+ add r2, r2, #0x10
+ add r6, r6, #0x10
+ and r10, lr, r5
+ mvn r9, r5
+ and r9, r12, r9
+ orr r9, r10, r9
+ add r4, r4, r9
+ add r4, r7, r4
+ add r7, r8, r4
+ mov r4, r7, lsl #0x14
+ orr r4, r4, r7, lsr #0xc
+ add r4, lr, r4
+ add r1, r1, #0x1
+ cmp r1, #0x4
+ blt _020D28A4
+ mov r7, #0x0
+_020D2994:
+ ldr r8, [r6, #0x0]
+ eor r1, r4, lr
+ eor r1, r12, r1
+ add r1, r5, r1
+ ldr r8, [r3, r8, lsl #0x2]
+ ldr r5, [r2, #0x0]
+ add r1, r8, r1
+ add r5, r5, r1
+ mov r1, r5, lsl #0x4
+ orr r1, r1, r5, lsr #0x1c
+ add r5, r4, r1
+ ldr r8, [r6, #0x4]
+ eor r1, r5, r4
+ eor r1, lr, r1
+ ldr r8, [r3, r8, lsl #0x2]
+ add r1, r12, r1
+ ldr r9, [r6, #0x8]
+ ldr r10, [r2, #0x4]
+ add r1, r8, r1
+ add r8, r10, r1
+ mov r1, r8, lsl #0xb
+ orr r1, r1, r8, lsr #0x15
+ add r12, r5, r1
+ eor r8, r12, r5
+ eor r8, r4, r8
+ ldr r9, [r3, r9, lsl #0x2]
+ add r8, lr, r8
+ add r9, r9, r8
+ ldr r10, [r2, #0x8]
+ add r1, r2, #0xc
+ ldr r8, [r6, #0xc]
+ add r10, r10, r9
+ ldr r9, [r3, r8, lsl #0x2]
+ mov r8, r10, lsl #0x10
+ orr r8, r8, r10, lsr #0x10
+ add lr, r12, r8
+ eor r8, lr, r12
+ eor r8, r5, r8
+ add r4, r4, r8
+ add r7, r7, #0x1
+ ldr r1, [r1, #0x0]
+ add r4, r9, r4
+ add r4, r1, r4
+ mov r1, r4, lsl #0x17
+ orr r1, r1, r4, lsr #0x9
+ add r2, r2, #0x10
+ add r6, r6, #0x10
+ add r4, lr, r1
+ cmp r7, #0x4
+ blt _020D2994
+ mov r10, #0x0
+_020D2A60:
+ mvn r1, r12
+ ldr r7, [r6, #0x0]
+ orr r1, r4, r1
+ eor r1, lr, r1
+ ldr r7, [r3, r7, lsl #0x2]
+ add r1, r5, r1
+ ldr r5, [r2, #0x0]
+ add r1, r7, r1
+ add r5, r5, r1
+ mov r1, r5, lsl #0x6
+ orr r1, r1, r5, lsr #0x1a
+ add r5, r4, r1
+ mvn r1, lr
+ ldr r7, [r6, #0x4]
+ orr r1, r5, r1
+ eor r1, r4, r1
+ ldr r8, [r6, #0x8]
+ ldr r7, [r3, r7, lsl #0x2]
+ add r1, r12, r1
+ ldr r9, [r2, #0x4]
+ add r1, r7, r1
+ add r9, r9, r1
+ mov r7, r9, lsl #0xa
+ add r1, r6, #0xc
+ orr r9, r7, r9, lsr #0x16
+ ldr r1, [r1, #0x0]
+ add r7, r2, #0xc
+ add r12, r5, r9
+ ldr r8, [r3, r8, lsl #0x2]
+ ldr r7, [r7, #0x0]
+ ldr r1, [r3, r1, lsl #0x2]
+ ldr r9, [r2, #0x8]
+ mvn r11, r4
+ orr r11, r12, r11
+ eor r11, r5, r11
+ add r11, lr, r11
+ add r8, r8, r11
+ add r9, r9, r8
+ mov r8, r9, lsl #0xf
+ orr r8, r8, r9, lsr #0x11
+ add lr, r12, r8
+ add r2, r2, #0x10
+ add r6, r6, #0x10
+ mvn r8, r5
+ orr r8, lr, r8
+ eor r8, r12, r8
+ add r4, r4, r8
+ add r1, r1, r4
+ add r4, r7, r1
+ mov r1, r4, lsl #0x15
+ orr r1, r1, r4, lsr #0xb
+ add r4, lr, r1
+ add r10, r10, #0x1
+ cmp r10, #0x4
+ blt _020D2A60
+ ldr r1, [r0, #0x0]
+ add r1, r1, r5
+ str r1, [r0, #0x0]
+ ldr r1, [r0, #0x4]
+ add r1, r1, r4
+ str r1, [r0, #0x4]
+ ldr r1, [r0, #0x8]
+ add r1, r1, lr
+ str r1, [r0, #0x8]
+ ldr r1, [r0, #0xc]
+ add r1, r1, r12
+ str r1, [r0, #0xc]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r11,lr}
+ bx lr
+ .balign 4
+_020D2B78: .word 0x02106900
+_020D2B7C: .word 0x02106840
+
+ arm_func_start MATH_MD5GetHash
+MATH_MD5GetHash: ; 0x020D2B80
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r6, r1
+ ldr r1, [r6, #0x14]
+ ldr r3, [r6, #0x10]
+ mov r7, r0
+ mov r4, r1, lsl #0x3
+ ldr r1, _020D2C40 ; =0x0210683C
+ mov r0, r6
+ mov r2, #0x1
+ orr r4, r4, r3, lsr #0x1d
+ mov r5, r3, lsl #0x3
+ bl MATH_MD5Update
+ ldr r0, [r6, #0x10]
+ mov r1, #0x0
+ and r3, r0, #0x3f
+ rsb r2, r3, #0x40
+ cmp r2, #0x8
+ bhs _020D2BE8
+ add r0, r6, #0x18
+ add r0, r0, r3
+ bl MI_CpuFill8
+ mov r0, r6
+ bl ProcessBlock
+ mov r3, #0x0
+ mov r2, #0x40
+_020D2BE8:
+ cmp r2, #0x8
+ bls _020D2C04
+ add r0, r6, #0x18
+ add r0, r0, r3
+ sub r2, r2, #0x8
+ mov r1, #0x0
+ bl MI_CpuFill8
+_020D2C04:
+ str r5, [r6, #0x50]
+ mov r0, r6
+ str r4, [r6, #0x54]
+ bl ProcessBlock
+ mov r0, r6
+ mov r1, r7
+ mov r2, #0x10
+ bl MI_CpuCopy8
+ mov r0, r6
+ mov r1, #0x0
+ mov r2, #0x58
+ bl MI_CpuFill8
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+ .balign 4
+_020D2C40: .word 0x0210683C
+
+ arm_func_start MATH_MD5Update
+MATH_MD5Update: ; 0x020D2C44
+ stmdb sp!, {r4-r9,lr}
+ sub sp, sp, #0x4
+ mov r8, r0
+ add r12, r8, #0x10
+ ldr r4, [r8, #0x10]
+ mov r6, r2
+ and r3, r4, #0x3f
+ ldr r0, [r12, #0x4]
+ adds r4, r4, r6
+ str r4, [r8, #0x10]
+ adc r0, r0, #0x0
+ rsb r5, r3, #0x40
+ mov r7, r1
+ str r0, [r12, #0x4]
+ cmp r5, r6
+ bls _020D2CB0
+ cmp r6, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r9,lr}
+ bxeq lr
+ add r1, r8, #0x18
+ mov r0, r7
+ add r1, r1, r3
+ bl MI_CpuCopy8
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r9,lr}
+ bx lr
+_020D2CB0:
+ add r1, r8, #0x18
+ mov r0, r7
+ mov r2, r5
+ add r1, r1, r3
+ bl MI_CpuCopy8
+ mov r0, r8
+ bl ProcessBlock
+ sub r6, r6, r5
+ mov r4, r6, lsr #0x6
+ cmp r4, #0x0
+ add r9, r7, r5
+ ble _020D2D10
+ add r7, r8, #0x18
+ mov r5, #0x40
+_020D2CE8:
+ mov r0, r9
+ mov r1, r7
+ mov r2, r5
+ bl MI_CpuCopy8
+ mov r0, r8
+ add r9, r9, #0x40
+ bl ProcessBlock
+ sub r4, r4, #0x1
+ cmp r4, #0x0
+ bgt _020D2CE8
+_020D2D10:
+ ands r2, r6, #0x3f
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r9,lr}
+ bxeq lr
+ mov r0, r9
+ add r1, r8, #0x18
+ bl MI_CpuCopy8
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r9,lr}
+ bx lr
+
+ arm_func_start MATH_MD5Init
+MATH_MD5Init: ; 0x020D2D38
+ ldr r2, _020D2D68 ; =0x67452301
+ ldr r1, _020D2D6C ; =0xEFCDAB89
+ str r2, [r0, #0x0]
+ ldr r2, _020D2D70 ; =0x98BADCFE
+ str r1, [r0, #0x4]
+ ldr r1, _020D2D74 ; =0x10325476
+ str r2, [r0, #0x8]
+ str r1, [r0, #0xc]
+ mov r1, #0x0
+ str r1, [r0, #0x10]
+ str r1, [r0, #0x14]
+ bx lr
+ .balign 4
+_020D2D68: .word 0x67452301
+_020D2D6C: .word 0xEFCDAB89
+_020D2D70: .word 0x98BADCFE
+_020D2D74: .word 0x10325476
+
+ arm_func_start MATH_CalcHMACSHA1
+MATH_CalcHMACSHA1: ; 0x020D2D78
+ stmdb sp!, {r4-r8,lr}
+ sub sp, sp, #0xa0
+ ldr lr, _020D2E00 ; =0x02106A04
+ add r12, sp, #0x1c
+ mov r8, r0
+ mov r7, r1
+ mov r6, r2
+ mov r5, r3
+ mov r4, r12
+ ldmia lr!, {r0-r3}
+ stmia r12!, {r0-r3}
+ ldmia lr, {r0-r2}
+ stmia r12, {r0-r2}
+ add lr, sp, #0x38
+ add r12, sp, #0x8
+ str lr, [sp, #0x24]
+ ldr lr, _020D2E04 ; =MATH_SHA1Init
+ str r12, [sp, #0x28]
+ ldr ip, _020D2E08 ; =MATH_SHA1Update
+ str lr, [sp, #0x2c]
+ ldr lr, _020D2E0C ; =MATH_SHA1GetHash
+ str r12, [sp, #0x30]
+ ldr r12, [sp, #0xb8]
+ str lr, [sp, #0x34]
+ str r12, [sp, #0x0]
+ mov r3, r5
+ mov r0, r8
+ mov r1, r7
+ mov r2, r6
+ str r4, [sp, #0x4]
+ bl MATHi_CalcHMAC
+ add sp, sp, #0xa0
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+ .balign 4
+_020D2E00: .word 0x02106A04
+_020D2E04: .word MATH_SHA1Init
+_020D2E08: .word MATH_SHA1Update
+_020D2E0C: .word MATH_SHA1GetHash
+
+ arm_func_start MATH_SHA1GetHash
+MATH_SHA1GetHash: ; 0x020D2E10
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r4-r6,lr}
+ ldr r0, [sp, #0x10]
+ mov r6, r1
+ ldr r3, [r0, #0x1c]
+ add r5, r0, #0x20
+ ands r1, r3, #0x3
+ mov r0, r3, asr #0x2
+ moveq r1, #0x0
+ streq r1, [r5, r0, lsl #0x2]
+ ldr r2, [sp, #0x10]
+ mov r1, #0x80
+ add r4, r2, #0x20
+ strb r1, [r4, r3]
+ add r3, r3, #0x1
+ ands r1, r3, #0x3
+ beq _020D2E68
+ mov r2, #0x0
+_020D2E58:
+ strb r2, [r4, r3]
+ add r3, r3, #0x1
+ ands r1, r3, #0x3
+ bne _020D2E58
+_020D2E68:
+ ldr r1, [sp, #0x10]
+ add r0, r0, #0x1
+ ldr r1, [r1, #0x1c]
+ cmp r1, #0x38
+ blt _020D2EB4
+ cmp r0, #0x10
+ bge _020D2E98
+ mov r1, #0x0
+_020D2E88:
+ str r1, [r5, r0, lsl #0x2]
+ add r0, r0, #0x1
+ cmp r0, #0x10
+ blt _020D2E88
+_020D2E98:
+ ldr r1, _020D3008 ; =0x02106A00
+ ldr r0, [sp, #0x10]
+ ldr r3, [r1, #0x0]
+ mov r1, r5
+ mov r2, #0x40
+ blx r3
+ mov r0, #0x0
+_020D2EB4:
+ cmp r0, #0xe
+ bge _020D2ED0
+ mov r1, #0x0
+_020D2EC0:
+ str r1, [r5, r0, lsl #0x2]
+ add r0, r0, #0x1
+ cmp r0, #0xe
+ blt _020D2EC0
+_020D2ED0:
+ ldr r0, [sp, #0x10]
+ mov r1, r5
+ ldr r2, [r0, #0x14]
+ ldr r3, _020D3008 ; =0x02106A00
+ strb r2, [r4, #0x3f]
+ mov r0, r2, lsr #0x8
+ strb r0, [r4, #0x3e]
+ mov r0, r2, lsr #0x10
+ strb r0, [r4, #0x3d]
+ mov r0, r2, lsr #0x18
+ strb r0, [r4, #0x3c]
+ ldr r0, [sp, #0x10]
+ mov r2, #0x40
+ ldr r5, [r0, #0x18]
+ strb r5, [r4, #0x3b]
+ mov r0, r5, lsr #0x8
+ strb r0, [r4, #0x3a]
+ mov r0, r5, lsr #0x10
+ strb r0, [r4, #0x39]
+ mov r0, r5, lsr #0x18
+ strb r0, [r4, #0x38]
+ ldr r0, [sp, #0x10]
+ ldr r3, [r3, #0x0]
+ blx r3
+ ldr r0, [sp, #0x10]
+ add r1, sp, #0x10
+ ldr r3, [r0, #0x0]
+ mov r0, #0x0
+ mov r2, r3, lsr #0x18
+ strb r2, [r6, #0x0]
+ mov r2, r3, lsr #0x10
+ strb r2, [r6, #0x1]
+ mov r2, r3, lsr #0x8
+ strb r2, [r6, #0x2]
+ strb r3, [r6, #0x3]
+ ldr r3, [sp, #0x10]
+ mov r2, #0x4
+ ldr r4, [r3, #0x4]
+ mov r3, r4, lsr #0x18
+ strb r3, [r6, #0x4]
+ mov r3, r4, lsr #0x10
+ strb r3, [r6, #0x5]
+ mov r3, r4, lsr #0x8
+ strb r3, [r6, #0x6]
+ strb r4, [r6, #0x7]
+ ldr r3, [sp, #0x10]
+ ldr r4, [r3, #0x8]
+ mov r3, r4, lsr #0x18
+ strb r3, [r6, #0x8]
+ mov r3, r4, lsr #0x10
+ strb r3, [r6, #0x9]
+ mov r3, r4, lsr #0x8
+ strb r3, [r6, #0xa]
+ strb r4, [r6, #0xb]
+ ldr r3, [sp, #0x10]
+ ldr r4, [r3, #0xc]
+ mov r3, r4, lsr #0x18
+ strb r3, [r6, #0xc]
+ mov r3, r4, lsr #0x10
+ strb r3, [r6, #0xd]
+ mov r3, r4, lsr #0x8
+ strb r3, [r6, #0xe]
+ strb r4, [r6, #0xf]
+ ldr r3, [sp, #0x10]
+ ldr r4, [r3, #0x10]
+ mov r3, r4, lsr #0x18
+ strb r3, [r6, #0x10]
+ mov r3, r4, lsr #0x10
+ strb r3, [r6, #0x11]
+ mov r3, r4, lsr #0x8
+ strb r3, [r6, #0x12]
+ strb r4, [r6, #0x13]
+ ldr r3, [sp, #0x10]
+ str r0, [r3, #0x1c]
+ bl MIi_CpuClear32
+ ldmia sp!, {r4-r6,lr}
+ add sp, sp, #0x10
+ bx lr
+ .balign 4
+_020D3008: .word 0x02106A00
+
+ arm_func_start MATH_SHA1Update
+MATH_SHA1Update: ; 0x020D300C
+ stmdb sp!, {r4-r8,lr}
+ mov r8, r0
+ movs r6, r2
+ mov r7, r1
+ add r5, r8, #0x20
+ ldmeqia sp!, {r4-r8,lr}
+ bxeq lr
+ ldr r0, [r8, #0x14]
+ add r1, r0, r6, lsl #0x3
+ cmp r1, r0
+ ldrcc r0, [r8, #0x18]
+ addcc r0, r0, #0x1
+ strcc r0, [r8, #0x18]
+ ldr r0, [r8, #0x18]
+ add r0, r0, r6, lsr #0x1d
+ str r0, [r8, #0x18]
+ str r1, [r8, #0x14]
+ ldr r1, [r8, #0x1c]
+ cmp r1, #0x0
+ beq _020D30CC
+ add r0, r1, r6
+ cmp r0, #0x40
+ blo _020D30A8
+ rsb r4, r1, #0x40
+ mov r0, r7
+ mov r2, r4
+ add r1, r5, r1
+ bl MI_CpuCopy8
+ ldr r1, _020D3164 ; =0x02106A00
+ mov r0, r8
+ ldr r3, [r1, #0x0]
+ mov r1, r5
+ mov r2, #0x40
+ sub r6, r6, r4
+ add r7, r7, r4
+ blx r3
+ mov r0, #0x0
+ str r0, [r8, #0x1c]
+ b _020D30CC
+_020D30A8:
+ mov r0, r7
+ mov r2, r6
+ add r1, r5, r1
+ bl MI_CpuCopy8
+ ldr r0, [r8, #0x1c]
+ add r0, r0, r6
+ str r0, [r8, #0x1c]
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+_020D30CC:
+ cmp r6, #0x40
+ blo _020D313C
+ bic r4, r6, #0x3f
+ sub r6, r6, r4
+ ands r0, r7, #0x3
+ bne _020D3104
+ ldr r1, _020D3164 ; =0x02106A00
+ mov r0, r8
+ ldr r3, [r1, #0x0]
+ mov r1, r7
+ mov r2, r4
+ blx r3
+ add r7, r7, r4
+ b _020D313C
+_020D3104:
+ mov r0, r7
+ mov r1, r5
+ mov r2, #0x40
+ bl MI_CpuCopy8
+ ldr r1, _020D3164 ; =0x02106A00
+ mov r0, r8
+ ldr r3, [r1, #0x0]
+ mov r1, r5
+ mov r2, #0x40
+ add r7, r7, #0x40
+ blx r3
+ sub r4, r4, #0x40
+ cmp r4, #0x0
+ bgt _020D3104
+_020D313C:
+ str r6, [r8, #0x1c]
+ cmp r6, #0x0
+ ldmeqia sp!, {r4-r8,lr}
+ bxeq lr
+ mov r0, r7
+ mov r1, r5
+ mov r2, r6
+ bl MI_CpuCopy8
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+ .balign 4
+_020D3164: .word 0x02106A00
+
+ arm_func_start MATH_SHA1Init
+MATH_SHA1Init: ; 0x020D3168
+ ldr r1, _020D31A4 ; =0x67452301
+ ldr r2, _020D31A8 ; =0xEFCDAB89
+ str r1, [r0, #0x0]
+ ldr r1, _020D31AC ; =0x98BADCFE
+ str r2, [r0, #0x4]
+ ldr r2, _020D31B0 ; =0x10325476
+ str r1, [r0, #0x8]
+ ldr r1, _020D31B4 ; =0xC3D2E1F0
+ str r2, [r0, #0xc]
+ str r1, [r0, #0x10]
+ mov r1, #0x0
+ str r1, [r0, #0x14]
+ str r1, [r0, #0x18]
+ str r1, [r0, #0x1c]
+ bx lr
+ .balign 4
+_020D31A4: .word 0x67452301
+_020D31A8: .word 0xEFCDAB89
+_020D31AC: .word 0x98BADCFE
+_020D31B0: .word 0x10325476
+_020D31B4: .word 0xC3D2E1F0
+
+ arm_func_start MATHi_CalcHMAC
+MATHi_CalcHMAC: ; 0x020D31B8
+ stmdb sp!, {r4-r9,lr}
+ sub sp, sp, #0xc4
+ ldr r5, [sp, #0xe0]
+ ldr r4, [sp, #0xe4]
+ movs r9, r0
+ mov r8, r1
+ mov r7, r2
+ mov r6, r3
+ addeq sp, sp, #0xc4
+ ldmeqia sp!, {r4-r9,lr}
+ bxeq lr
+ cmp r8, #0x0
+ addeq sp, sp, #0xc4
+ ldmeqia sp!, {r4-r9,lr}
+ bxeq lr
+ cmp r7, #0x0
+ addeq sp, sp, #0xc4
+ ldmeqia sp!, {r4-r9,lr}
+ bxeq lr
+ cmp r6, #0x0
+ addeq sp, sp, #0xc4
+ ldmeqia sp!, {r4-r9,lr}
+ bxeq lr
+ cmp r5, #0x0
+ addeq sp, sp, #0xc4
+ ldmeqia sp!, {r4-r9,lr}
+ bxeq lr
+ cmp r4, #0x0
+ addeq sp, sp, #0xc4
+ ldmeqia sp!, {r4-r9,lr}
+ bxeq lr
+ ldr r0, [r4, #0x4]
+ cmp r5, r0
+ ble _020D3278
+ ldr r0, [r4, #0x8]
+ ldr r1, [r4, #0x10]
+ blx r1
+ ldr r0, [r4, #0x8]
+ ldr r3, [r4, #0x14]
+ mov r1, r6
+ mov r2, r5
+ blx r3
+ ldr r0, [r4, #0x8]
+ ldr r2, [r4, #0x18]
+ add r1, sp, #0x0
+ blx r2
+ ldr r5, [r4, #0x0]
+ add r6, sp, #0x0
+_020D3278:
+ cmp r5, #0x0
+ mov r0, #0x0
+ ble _020D32A0
+ add r2, sp, #0x40
+_020D3288:
+ ldrb r1, [r6, r0]
+ add r0, r0, #0x1
+ cmp r0, r5
+ eor r1, r1, #0x36
+ strb r1, [r2], #0x1
+ blt _020D3288
+_020D32A0:
+ ldr r1, [r4, #0x4]
+ cmp r0, r1
+ bge _020D32CC
+ add r1, sp, #0x40
+ add r3, r1, r0
+ mov r2, #0x36
+_020D32B8:
+ strb r2, [r3], #0x1
+ ldr r1, [r4, #0x4]
+ add r0, r0, #0x1
+ cmp r0, r1
+ blt _020D32B8
+_020D32CC:
+ ldr r0, [r4, #0x8]
+ ldr r1, [r4, #0x10]
+ blx r1
+ ldr r0, [r4, #0x8]
+ ldr r2, [r4, #0x4]
+ ldr r3, [r4, #0x14]
+ add r1, sp, #0x40
+ blx r3
+ ldr r0, [r4, #0x8]
+ ldr r3, [r4, #0x14]
+ mov r1, r8
+ mov r2, r7
+ blx r3
+ ldr r0, [r4, #0x8]
+ ldr r1, [r4, #0xc]
+ ldr r2, [r4, #0x18]
+ blx r2
+ cmp r5, #0x0
+ mov r2, #0x0
+ ble _020D3338
+ add r1, sp, #0x80
+_020D3320:
+ ldrb r0, [r6, r2]
+ add r2, r2, #0x1
+ cmp r2, r5
+ eor r0, r0, #0x5c
+ strb r0, [r1], #0x1
+ blt _020D3320
+_020D3338:
+ ldr r0, [r4, #0x4]
+ cmp r2, r0
+ bge _020D3364
+ add r0, sp, #0x80
+ add r3, r0, r2
+ mov r1, #0x5c
+_020D3350:
+ strb r1, [r3], #0x1
+ ldr r0, [r4, #0x4]
+ add r2, r2, #0x1
+ cmp r2, r0
+ blt _020D3350
+_020D3364:
+ ldr r0, [r4, #0x8]
+ ldr r1, [r4, #0x10]
+ blx r1
+ ldr r0, [r4, #0x8]
+ ldr r2, [r4, #0x4]
+ ldr r3, [r4, #0x14]
+ add r1, sp, #0x80
+ blx r3
+ ldr r0, [r4, #0x8]
+ ldr r1, [r4, #0xc]
+ ldr r2, [r4, #0x0]
+ ldr r3, [r4, #0x14]
+ blx r3
+ ldr r0, [r4, #0x8]
+ ldr r2, [r4, #0x18]
+ mov r1, r9
+ blx r2
+ add sp, sp, #0xc4
+ ldmia sp!, {r4-r9,lr}
+ bx lr
+ .balign 4
+_020D33B4: .word 0x00FF00FF
+_020D33B8: .word 0x5A827999
+_020D33BC: .word 0x6ED9EBA1
+_020D33C0: .word 0x8F1BBCDC
+_020D33C4: .word 0xCA62C1D6
+
+ arm_func_start MATHi_SHA1ProcessBlock
+MATHi_SHA1ProcessBlock: ; 0x020D33C8
+ stmdb sp!, {r4-r12,lr}
+ ldmia r0, {r3,r9-r12}
+ sub sp, sp, #0x84
+ str r2, [sp, #0x80]
+_020D33D8:
+ ldr r8, _020D33B8 ; =0x5A827999
+ ldr r7, _020D33B4 ; =0x00FF00FF
+ mov r6, sp
+ mov r5, #0x0
+_020D33E8:
+ ldr r4, [r1], #0x4
+ add r2, r8, r12
+ add r2, r2, r3, ror #0x1B
+ and lr, r4, r7
+ and r4, r7, r4, ror #0x18
+ orr r4, r4, lr, ror #0x8
+ str r4, [r6, #0x40]
+ str r4, [r6], #0x4
+ add r2, r2, r4
+ eor r4, r10, r11
+ and r4, r4, r9
+ eor r4, r4, r11
+ add r2, r2, r4
+ mov r9, r9, ror #0x2
+ mov r12, r11
+ mov r11, r10
+ mov r10, r9
+ mov r9, r3
+ mov r3, r2
+ add r5, r5, #0x4
+ cmp r5, #0x40
+ blt _020D33E8
+ mov r7, #0x0
+ mov r6, sp
+_020D3448:
+ ldr r2, [r6, #0x0]
+ ldr r5, [r6, #0x8]
+ ldr r4, [r6, #0x20]
+ ldr lr, [r6, #0x34]
+ eor r2, r2, r5
+ eor r4, r4, lr
+ eor r2, r2, r4
+ mov r2, r2, ror #0x1F
+ str r2, [r6, #0x40]
+ str r2, [r6], #0x4
+ add r2, r2, r12
+ add r2, r2, r8
+ add r2, r2, r3, ror #0x1B
+ eor r4, r10, r11
+ and r4, r4, r9
+ eor r4, r4, r11
+ add r2, r2, r4
+ mov r9, r9, ror #0x2
+ mov r12, r11
+ mov r11, r10
+ mov r10, r9
+ mov r9, r3
+ mov r3, r2
+ add r7, r7, #0x4
+ cmp r7, #0x10
+ blt _020D3448
+ ldr r8, _020D33BC ; =0x6ED9EBA1
+ mov r7, #0x0
+_020D34B8:
+ ldr r2, [r6, #0x0]
+ ldr r4, [r6, #0x8]
+ ldr lr, [r6, #0x20]
+ ldr r5, [r6, #0x34]
+ eor r2, r2, r4
+ eor lr, lr, r5
+ eor r2, r2, lr
+ mov r2, r2, ror #0x1F
+ str r2, [r6, #0x40]
+ str r2, [r6], #0x4
+ add r2, r2, r12
+ add r2, r2, r8
+ add r2, r2, r3, ror #0x1B
+ eor lr, r9, r10
+ eor lr, lr, r11
+ add r2, r2, lr
+ mov r9, r9, ror #0x2
+ mov r12, r11
+ mov r11, r10
+ mov r10, r9
+ mov r9, r3
+ mov r3, r2
+ add r7, r7, #0x1
+ cmp r7, #0xc
+ moveq r6, sp
+ cmp r7, #0x14
+ blt _020D34B8
+ ldr r8, _020D33C0 ; =0x8F1BBCDC
+ mov r7, #0x0
+_020D352C:
+ ldr r2, [r6, #0x0]
+ ldr lr, [r6, #0x8]
+ ldr r5, [r6, #0x20]
+ ldr r4, [r6, #0x34]
+ eor r2, r2, lr
+ eor r5, r5, r4
+ eor r2, r2, r5
+ mov r2, r2, ror #0x1F
+ str r2, [r6, #0x40]
+ str r2, [r6], #0x4
+ add r2, r2, r12
+ add r2, r2, r8
+ add r2, r2, r3, ror #0x1B
+ orr r5, r9, r10
+ and r5, r5, r11
+ and r4, r9, r10
+ orr r5, r5, r4
+ add r2, r2, r5
+ mov r9, r9, ror #0x2
+ mov r12, r11
+ mov r11, r10
+ mov r10, r9
+ mov r9, r3
+ mov r3, r2
+ add r7, r7, #0x1
+ cmp r7, #0x8
+ moveq r6, sp
+ cmp r7, #0x14
+ blt _020D352C
+ ldr r8, _020D33C4 ; =0xCA62C1D6
+ mov r7, #0x0
+_020D35A8:
+ ldr r2, [r6, #0x0]
+ ldr r5, [r6, #0x8]
+ ldr r4, [r6, #0x20]
+ ldr lr, [r6, #0x34]
+ eor r2, r2, r5
+ eor r4, r4, lr
+ eor r2, r2, r4
+ mov r2, r2, ror #0x1F
+ str r2, [r6, #0x40]
+ str r2, [r6], #0x4
+ add r2, r2, r12
+ add r2, r2, r8
+ add r2, r2, r3, ror #0x1B
+ eor r4, r9, r10
+ eor r4, r4, r11
+ add r2, r2, r4
+ mov r9, r9, ror #0x2
+ mov r12, r11
+ mov r11, r10
+ mov r10, r9
+ mov r9, r3
+ mov r3, r2
+ add r7, r7, #0x1
+ cmp r7, #0x4
+ moveq r6, sp
+ cmp r7, #0x14
+ blt _020D35A8
+ ldmia r0, {r2,r4,r6-r7,lr}
+ add r3, r3, r2
+ add r9, r9, r4
+ add r10, r10, r6
+ add r11, r11, r7
+ add r12, r12, lr
+ stmia r0, {r3,r9-r12}
+ ldr lr, [sp, #0x80]
+ subs lr, lr, #0x40
+ str lr, [sp, #0x80]
+ bgt _020D33D8
+ add sp, sp, #0x84
+ ldmia sp!, {r4-r12,pc}
+
+ arm_func_start CP_SaveContext
+CP_SaveContext: ; 0x020D3648
+ ldr r1, _020D3684 ; =0x04000290
+ stmdb sp!, {r4}
+ ldmia r1, {r2-r4,r12}
+ stmia r0!, {r2-r4,r12}
+ ldrh r12, [r1, #-0x10]
+ add r1, r1, #0x28
+ ldmia r1, {r2-r3}
+ stmia r0!, {r2-r3}
+ and r12, r12, #0x3
+ ldrh r2, [r1, #-0x8]
+ strh r12, [r0, #0x0]
+ and r2, r2, #0x1
+ strh r2, [r0, #0x2]
+ ldmia sp!, {r4}
+ bx lr
+ .balign 4
+_020D3684: .word 0x04000290
+
+ arm_func_start CP_RestoreContext
+CP_RestoreContext: ; 0x020D3688
+ stmdb sp!, {r4}
+ ldr r1, _020D36C0 ; =0x04000290
+ ldmia r0, {r2-r4,r12}
+ stmia r1, {r2-r4,r12}
+ ldrh r2, [r0, #0x18]
+ ldrh r3, [r0, #0x1a]
+ strh r2, [r1, #-0x10]
+ strh r3, [r1, #0x20]
+ add r0, r0, #0x10
+ add r1, r1, #0x28
+ ldmia r0, {r2-r3}
+ stmia r1, {r2-r3}
+ ldmia sp!, {r4}
+ bx lr
+ .balign 4
+_020D36C0: .word 0x04000290
+
+ arm_func_start TP_CheckError
+TP_CheckError: ; 0x020D36C4
+ ldr r1, _020D36D4 ; =0x021D5474
+ ldrh r1, [r1, #0x34]
+ and r0, r1, r0
+ bx lr
+ .balign 4
+_020D36D4: .word 0x021D5474
+
+ arm_func_start TP_WaitBusy
+TP_WaitBusy: ; 0x020D36D8
+ ldr r1, _020D36EC ; =0x021D5474
+_020D36DC:
+ ldrh r2, [r1, #0x36]
+ ands r2, r2, r0
+ bne _020D36DC
+ bx lr
+ .balign 4
+_020D36EC: .word 0x021D5474
+
+ arm_func_start TP_GetCalibratedPoint
+TP_GetCalibratedPoint: ; 0x020D36F0
+ stmdb sp!, {r4-r6,lr}
+ ldr r2, _020D3818 ; =0x021D5474
+ ldrh r2, [r2, #0x30]
+ cmp r2, #0x0
+ bne _020D372C
+ ldrh r3, [r1, #0x0]
+ ldrh r2, [r1, #0x2]
+ strh r3, [r0, #0x0]
+ strh r2, [r0, #0x2]
+ ldrh r2, [r1, #0x4]
+ ldrh r1, [r1, #0x6]
+ strh r2, [r0, #0x4]
+ strh r1, [r0, #0x6]
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020D372C:
+ ldrh r3, [r1, #0x4]
+ ldr r2, _020D381C ; =0x021D548C
+ strh r3, [r0, #0x4]
+ ldrh r3, [r1, #0x6]
+ strh r3, [r0, #0x6]
+ ldrh r3, [r1, #0x4]
+ cmp r3, #0x0
+ moveq r1, #0x0
+ streqh r1, [r0, #0x0]
+ streqh r1, [r0, #0x2]
+ ldmeqia sp!, {r4-r6,lr}
+ bxeq lr
+ ldrh r4, [r1, #0x0]
+ ldr r3, [r2, #0x0]
+ ldr lr, [r2, #0x8]
+ mov r12, r4, lsl #0x2
+ mov r4, r12, asr #0x1f
+ subs r12, r12, r3
+ sbc r3, r4, r3, asr #0x1f
+ umull r6, r5, lr, r12
+ mla r5, lr, r3, r5
+ mov r3, lr, asr #0x1f
+ mla r5, r3, r12, r5
+ mov r3, r6, lsr #0x16
+ orr r3, r3, r5, lsl #0xa
+ strh r3, [r0, #0x0]
+ ldrsh r3, [r0, #0x0]
+ cmp r3, #0x0
+ movlt r3, #0x0
+ strlth r3, [r0, #0x0]
+ blt _020D37B4
+ cmp r3, #0xff
+ movgt r3, #0xff
+ strgth r3, [r0, #0x0]
+_020D37B4:
+ ldrh r3, [r1, #0x2]
+ ldr r1, [r2, #0xc]
+ ldr r12, [r2, #0x14]
+ mov r3, r3, lsl #0x2
+ mov r2, r3, asr #0x1f
+ subs r3, r3, r1
+ sbc r1, r2, r1, asr #0x1f
+ umull r4, lr, r12, r3
+ mla lr, r12, r1, lr
+ mov r1, r12, asr #0x1f
+ mla lr, r1, r3, lr
+ mov r1, r4, lsr #0x16
+ orr r1, r1, lr, lsl #0xa
+ strh r1, [r0, #0x2]
+ ldrsh r1, [r0, #0x2]
+ cmp r1, #0x0
+ movlt r1, #0x0
+ strlth r1, [r0, #0x2]
+ ldmltia sp!, {r4-r6,lr}
+ bxlt lr
+ cmp r1, #0xbf
+ movgt r1, #0xbf
+ strgth r1, [r0, #0x2]
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+ .balign 4
+_020D3818: .word 0x021D5474
+_020D381C: .word 0x021D548C
+
+ arm_func_start TP_CalcCalibrateParam
+TP_CalcCalibrateParam:
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x4
+ mov r6, r1
+ mov r7, r0
+ mov r5, r2
+ mov r4, r3
+ cmp r6, #0x1000
+ bhs _020D3860
+ cmp r5, #0x1000
+ bhs _020D3860
+ ldrh r8, [sp, #0x2c]
+ cmp r8, #0x1000
+ bhs _020D3860
+ ldrh r3, [sp, #0x30]
+ cmp r3, #0x1000
+ blo _020D3870
+_020D3860:
+ add sp, sp, #0x4
+ mov r0, #0x1
+ ldmia sp!, {r4-r11,lr}
+ bx lr
+_020D3870:
+ cmp r4, #0x100
+ bhs _020D389C
+ ldrh r2, [sp, #0x34]
+ cmp r2, #0x100
+ bhs _020D389C
+ ldrh r1, [sp, #0x28]
+ cmp r1, #0xc0
+ bhs _020D389C
+ ldrh r0, [sp, #0x38]
+ cmp r0, #0xc0
+ blo _020D38AC
+_020D389C:
+ add sp, sp, #0x4
+ mov r0, #0x1
+ ldmia sp!, {r4-r11,lr}
+ bx lr
+_020D38AC:
+ cmp r4, r2
+ beq _020D38CC
+ cmp r1, r0
+ beq _020D38CC
+ cmp r6, r8
+ beq _020D38CC
+ cmp r5, r3
+ bne _020D38DC
+_020D38CC:
+ add sp, sp, #0x4
+ mov r0, #0x1
+ ldmia sp!, {r4-r11,lr}
+ bx lr
+_020D38DC:
+ bl OS_DisableInterrupts
+ ldrh r1, [sp, #0x2c]
+ ldr r3, _020D3A80 ; =0x04000280
+ ldr fp, _020D3A84 ; =0x04000290
+ str r1, [sp, #0x0]
+ ldr r2, [sp, #0x0]
+ ldrh r1, [sp, #0x34]
+ sub r9, r6, r2
+ mov r2, #0x0
+ mov r12, r9, lsl #0x8
+ strh r2, [r3, #0x0]
+ str r12, [r11, #0x0]
+ ldrh r8, [sp, #0x30]
+ ldrh r10, [sp, #0x38]
+ ldrh r9, [sp, #0x28]
+ ldr fp, _020D3A88 ; =0x04000298
+ sub r12, r4, r1
+ str r12, [r11, #0x0]
+ str r2, [r11, #0x4]
+ sub r11, r5, r8
+ sub r2, r9, r10
+_020D3930:
+ ldrh r12, [r3, #0x0]
+ ands r12, r12, #0x8000
+ bne _020D3930
+ ldr ip, _020D3A8C ; =0x040002A0
+ mov r11, r11, lsl #0x8
+ ldr lr, [r12, #0x0]
+ mov r12, #0x0
+ strh r12, [r3, #0x0]
+ ldr r3, _020D3A84 ; =0x04000290
+ cmp lr, #0x8000
+ str r11, [r3, #0x0]
+ ldr r3, _020D3A88 ; =0x04000298
+ str r2, [r3, #0x0]
+ mov r2, r3
+ str r12, [r2, #0x4]
+ bge _020D3980
+ mov r2, #0x8000
+ rsb r2, r2, #0x0
+ cmp lr, r2
+ bge _020D3994
+_020D3980:
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ mov r0, #0x1
+ ldmia sp!, {r4-r11,lr}
+ bx lr
+_020D3994:
+ strh lr, [r7, #0x4]
+ ldrsh r11, [r7, #0x4]
+ add r3, r4, r1
+ ldr r1, [sp, #0x0]
+ add r4, r6, r1
+ mul r1, r11, r3
+ mov r3, r4, lsl #0x8
+ sub r1, r3, r1
+ mov r1, r1, lsl #0x9
+ mov r1, r1, asr #0x10
+ cmp r1, #0x8000
+ bge _020D39CC
+ cmp r1, r2
+ bge _020D39E0
+_020D39CC:
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ mov r0, #0x1
+ ldmia sp!, {r4-r11,lr}
+ bx lr
+_020D39E0:
+ ldr r2, _020D3A80 ; =0x04000280
+ strh r1, [r7, #0x0]
+_020D39E8:
+ ldrh r1, [r2, #0x0]
+ ands r1, r1, #0x8000
+ bne _020D39E8
+ ldr r1, _020D3A8C ; =0x040002A0
+ ldr r4, [r1, #0x0]
+ bl OS_RestoreInterrupts
+ cmp r4, #0x8000
+ bge _020D3A18
+ mov r0, #0x8000
+ rsb r1, r0, #0x0
+ cmp r4, r1
+ bge _020D3A28
+_020D3A18:
+ add sp, sp, #0x4
+ mov r0, #0x1
+ ldmia sp!, {r4-r11,lr}
+ bx lr
+_020D3A28:
+ strh r4, [r7, #0x6]
+ ldrsh r2, [r7, #0x6]
+ add r0, r9, r10
+ add r3, r5, r8
+ mul r0, r2, r0
+ mov r2, r3, lsl #0x8
+ sub r0, r2, r0
+ mov r0, r0, lsl #0x9
+ mov r0, r0, asr #0x10
+ cmp r0, #0x8000
+ bge _020D3A5C
+ cmp r0, r1
+ bge _020D3A6C
+_020D3A5C:
+ add sp, sp, #0x4
+ mov r0, #0x1
+ ldmia sp!, {r4-r11,lr}
+ bx lr
+_020D3A6C:
+ strh r0, [r7, #0x2]
+ mov r0, #0x0
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r11,lr}
+ bx lr
+ .balign 4
+_020D3A80: .word 0x04000280
+_020D3A84: .word 0x04000290
+_020D3A88: .word 0x04000298
+_020D3A8C: .word 0x040002A0
+
+ arm_func_start TP_GetLatestIndexInAuto
+TP_GetLatestIndexInAuto: ; 0x020D3A90
+ ldr r0, _020D3A9C ; =0x021D5474
+ ldrh r0, [r0, #0xc]
+ bx lr
+ .balign 4
+_020D3A9C: .word 0x021D5474
+
+ arm_func_start TP_GetLatestRawPointInAuto
+TP_GetLatestRawPointInAuto: ; 0x020D3AA0
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r1, #0x3
+ ldr lr, _020D3C10 ; =0x021D5474
+ strh r1, [r0, #0x6]
+ ldrh r1, [lr, #0xe]
+ ldrh r3, [lr, #0xc]
+ cmp r1, #0x1
+ beq _020D3AD0
+ ldrh r1, [lr, #0x14]
+ cmp r1, #0x1
+ bne _020D3B0C
+_020D3AD0:
+ ldr r1, _020D3C10 ; =0x021D5474
+ mov r2, r3, lsl #0x3
+ ldr r1, [r1, #0x10]
+ add sp, sp, #0x4
+ add r3, r1, r3, lsl #0x3
+ ldrh r2, [r1, r2]
+ ldrh r1, [r3, #0x2]
+ strh r2, [r0, #0x0]
+ strh r1, [r0, #0x2]
+ ldrh r2, [r3, #0x4]
+ ldrh r1, [r3, #0x6]
+ strh r2, [r0, #0x4]
+ strh r1, [r0, #0x6]
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+_020D3B0C:
+ add r1, r0, #0x6
+ mov r12, #0x0
+ b _020D3BE0
+_020D3B18:
+ subs r5, r3, r12
+ ldr r2, [lr, #0x10]
+ addmi r5, r5, r4
+ add r2, r2, r5, lsl #0x3
+ ldrh r4, [r2, #0x4]
+ cmp r4, #0x0
+ bne _020D3B60
+ ldrh r3, [r2, #0x0]
+ ldrh r1, [r2, #0x2]
+ add sp, sp, #0x4
+ strh r3, [r0, #0x0]
+ strh r1, [r0, #0x2]
+ ldrh r3, [r2, #0x4]
+ ldrh r1, [r2, #0x6]
+ strh r3, [r0, #0x4]
+ strh r1, [r0, #0x6]
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+_020D3B60:
+ ldrh r4, [r0, #0x6]
+ ands r4, r4, #0x1
+ beq _020D3B90
+ ldrh r4, [r2, #0x6]
+ ands r4, r4, #0x1
+ bne _020D3B90
+ ldrh r4, [r2, #0x0]
+ cmp r12, #0x0
+ strh r4, [r0, #0x0]
+ ldrneh r4, [r1, #0x0]
+ bicne r4, r4, #0x1
+ strneh r4, [r1, #0x0]
+_020D3B90:
+ ldrh r4, [r0, #0x6]
+ ands r4, r4, #0x2
+ beq _020D3BC0
+ ldrh r4, [r2, #0x6]
+ ands r4, r4, #0x2
+ bne _020D3BC0
+ ldrh r2, [r2, #0x2]
+ cmp r12, #0x0
+ strh r2, [r0, #0x2]
+ ldrneh r2, [r1, #0x0]
+ bicne r2, r2, #0x2
+ strneh r2, [r1, #0x0]
+_020D3BC0:
+ ldrh r2, [r0, #0x6]
+ cmp r2, #0x0
+ moveq r1, #0x1
+ streqh r1, [r0, #0x4]
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r5,lr}
+ bxeq lr
+ add r12, r12, #0x1
+_020D3BE0:
+ ldrh r2, [lr, #0xe]
+ cmp r12, r2
+ bge _020D3BFC
+ ldrh r4, [lr, #0x14]
+ sub r2, r4, #0x1
+ cmp r12, r2
+ blt _020D3B18
+_020D3BFC:
+ mov r1, #0x1
+ strh r1, [r0, #0x4]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020D3C10: .word 0x021D5474
+
+ arm_func_start TP_RequestAutoSamplingStopAsync
+TP_RequestAutoSamplingStopAsync: ; 0x020D3C14
+ stmdb sp!, {r4,lr}
+ bl OS_DisableInterrupts
+ mov r4, r0
+ ldr r1, _020D3CB0 ; =0x03000200
+ mov r0, #0x6
+ mov r2, #0x0
+ bl PXI_SendWordByFifo
+_020D3C30:
+ cmp r0, #0x0
+ movge r0, #0x1
+ movlt r0, #0x0
+ cmp r0, #0x0
+ bne _020D3C84
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ ldr r0, _020D3CB4
+ ldrh r1, [r0, #0x34]
+ ldr r3, [r0]
+ orr r1, r1, #0x4
+ strh r1, [r0, #0x34]
+ cmp r3, #0x0
+ ldmeqia sp!, {r4, lr}
+ bxeq lr
+ mov r0, #0x2
+ mov r1, #0x4
+ mov r2, #0x0
+ blx r3
+ ldmia sp!, {r4, lr}
+ bx lr
+_020D3C84:
+ ldr r1, _020D3CB4
+ mov r0, r4
+ ldrh r2, [r1, #0x36]
+ orr r2, r2, #0x4
+ strh r2, [r1, #0x36]
+ ldrh r2, [r1, #0x34]
+ bic r2, r2, #0x4
+ strh r2, [r1, #0x34]
+ bl OS_RestoreInterrupts
+ ldmia sp!, {r4, lr}
+ bx lr
+_020D3CB0: .word 0x03000200
+_020D3CB4: .word 0x021D5474
+
+ arm_func_start TP_RequestAutoSamplingStartAsync
+TP_RequestAutoSamplingStartAsync: ; 0x020D3CB8
+ stmdb sp!, {r4-r6,lr}
+ ldr r4, _020D3DC0 ; =0x021D5474
+ mov r5, r1
+ mov r12, #0x0
+ mov r6, r0
+ str r2, [r4, #0x10]
+ strh r12, [r4, #0xc]
+ strh r5, [r4, #0xe]
+ strh r3, [r4, #0x14]
+ cmp r3, #0x0
+ bls _020D3D00
+ mov r1, r12
+_020D3CE8:
+ ldr r0, [r4, #0x10]
+ add r0, r0, r12, lsl #0x3
+ add r12, r12, #0x1
+ strh r1, [r0, #0x4]
+ cmp r12, r3
+ blo _020D3CE8
+_020D3D00:
+ bl OS_DisableInterrupts
+ mov r4, r0
+ ldr r0, _020D3DC4 ; =0x02000100
+ and r1, r5, #0xff
+ orr r1, r1, r0
+ mov r0, #0x6
+ mov r2, #0x0
+ bl PXI_SendWordByFifo
+_020D3D20:
+ cmp r0, #0x0
+ movlt r0, #0x0
+ blt _020D3D4C
+ ldr r1, _020D3DC8
+ mov r0, #0x6
+ orr r1, r6, r1
+ mov r2, #0x0
+ bl PXI_SendWordByFifo
+ cmp r0, #0x0
+ movlt r0, #0x0
+ movge r0, #0x1
+_020D3D4C:
+ ands r0, r0, #0xFF
+ bne _020D3D94
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ ldr r0, _020D3DC0
+ ldrh r1, [r0, #0x34]
+ ldr r3, [r0]
+ orr r1, r1, #0x2
+ strh r1, [r0, #0x34]
+ cmp r3, #0x0
+ ldmeqia sp!, {r4-r6, lr}
+ bxeq lr
+ mov r0, #0x1
+ mov r1, #0x4
+ mov r2, #0x0
+ blx r3
+ ldmia sp!, {r4-r6, lr}
+ bx lr
+_020D3D94:
+ ldr r1, _020D3DC0
+ mov r0, r4
+ ldrh r2, [r1, #0x36]
+ orr r2, r2, #0x2
+ strh r2, [r1, #0x36]
+ ldrh r2, [r1, #0x34]
+ bic r2, r2, #0x2
+ strh r2, [r1, #0x34]
+ bl OS_RestoreInterrupts
+ ldmia sp!, {r4-r6, lr}
+ bx lr
+_020D3DC0: .word 0x021D5474
+_020D3DC4: .word 0x02000100
+_020D3DC8: .word 0x01010000
+
+ arm_func_start TP_WaitRawResult
+TP_WaitRawResult: ; 0x020D3DCC
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ mov r0, #0x1
+ bl TP_WaitBusy
+ ldr r1, _020D3E20 ; =0x021D5474
+ ldrh r0, [r1, #0x34]
+ ands r0, r0, #0x1
+ movne r0, #0x1
+ ldmneia sp!, {r4,lr}
+ bxne lr
+ ldrh r3, [r1, #0x4]
+ ldrh r2, [r1, #0x6]
+ mov r0, #0x0
+ strh r3, [r4, #0x0]
+ strh r2, [r4, #0x2]
+ ldrh r2, [r1, #0x8]
+ ldrh r1, [r1, #0xa]
+ strh r2, [r4, #0x4]
+ strh r1, [r4, #0x6]
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020D3E20: .word 0x021D5474
+
+ arm_func_start TP_RequestSamplingAsync
+TP_RequestSamplingAsync: ; 0x020D3E24
+ stmdb sp!, {r4,lr}
+ bl OS_DisableInterrupts
+ mov r4, r0
+ mov r0, #0x6
+ mov r1, #0x3000000
+ mov r2, #0x0
+ bl PXI_SendWordByFifo
+_020D3E40:
+ cmp r0, #0x0
+ movge r0, #0x1
+ movlt r0, #0x0
+ cmp r0, #0x0
+ bne _020D3E94
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ ldr r0, _20D3EC0
+ ldrh r1, [r0, #0x34]
+ ldr r3, [r0]
+ orr r1, r1, #0x1
+ strh r1, [r0, #0x34]
+ cmp r3, #0x0
+ ldmeqia sp!, {r4, lr}
+ bxeq lr
+ mov r0, #0x0
+ mov r2, r0
+ mov r1, #0x4
+ blx r3
+ ldmia sp!, {r4, lr}
+ bx lr
+_020D3E94:
+ ldr r1, _20D3EC0
+ mov r0, r4
+ ldrh r2, [r1, #0x36]
+ orr r2, r2, #0x1
+ strh r2, [r1, #0x36]
+ ldrh r2, [r1, #0x34]
+ bic r2, r2, #0x1
+ strh r2, [r1, #0x34]
+ bl OS_RestoreInterrupts
+ ldmia sp!, {r4, lr}
+ bx lr
+_20D3EC0: .word 0x021D5474
+
+ arm_func_start TP_SetCalibrateParam
+TP_SetCalibrateParam: ; 0x020D3EC4
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ movs r4, r0
+ ldreq r0, _020D3FF8 ; =0x021D5474
+ moveq r1, #0x0
+ streqh r1, [r0, #0x30]
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r5,lr}
+ bxeq lr
+ bl OS_DisableInterrupts
+ ldrsh lr, [r4, #0x4]
+ cmp lr, #0x0
+ beq _020D3F50
+ ldr r5, _020D3FFC ; =0x04000280
+ mov r12, #0x0
+ ldr r2, _020D4000 ; =0x04000290
+ strh r12, [r5, #0x0]
+ mov r3, #0x10000000
+ ldr r1, _020D4004 ; =0x04000298
+ str r3, [r2, #0x0]
+ str lr, [r1, #0x0]
+ str r12, [r1, #0x4]
+ ldrsh r2, [r4, #0x0]
+ ldr r1, _020D3FF8 ; =0x021D5474
+ str r2, [r1, #0x18]
+ ldrsh r2, [r4, #0x4]
+ str r2, [r1, #0x1c]
+_020D3F30:
+ ldrh r1, [r5, #0x0]
+ ands r1, r1, #0x8000
+ bne _020D3F30
+ ldr r2, _020D4008 ; =0x040002A0
+ ldr r1, _020D3FF8 ; =0x021D5474
+ ldr r2, [r2, #0x0]
+ str r2, [r1, #0x20]
+ b _020D3F64
+_020D3F50:
+ ldr r1, _020D3FF8 ; =0x021D5474
+ mov r2, #0x0
+ str r2, [r1, #0x18]
+ str r2, [r1, #0x1c]
+ str r2, [r1, #0x20]
+_020D3F64:
+ ldrsh r5, [r4, #0x6]
+ cmp r5, #0x0
+ beq _020D3FC8
+ ldr ip, _020D3FFC ; =0x04000280
+ mov lr, #0x0
+ ldr r2, _020D4000 ; =0x04000290
+ strh lr, [r12, #0x0]
+ mov r3, #0x10000000
+ ldr r1, _020D4004 ; =0x04000298
+ str r3, [r2, #0x0]
+ str r5, [r1, #0x0]
+ str lr, [r1, #0x4]
+ ldrsh r2, [r4, #0x2]
+ ldr r1, _020D3FF8 ; =0x021D5474
+ str r2, [r1, #0x24]
+ ldrsh r2, [r4, #0x6]
+ str r2, [r1, #0x28]
+_020D3FA8:
+ ldrh r1, [r12, #0x0]
+ ands r1, r1, #0x8000
+ bne _020D3FA8
+ ldr r2, _020D4008 ; =0x040002A0
+ ldr r1, _020D3FF8 ; =0x021D5474
+ ldr r2, [r2, #0x0]
+ str r2, [r1, #0x2c]
+ b _020D3FDC
+_020D3FC8:
+ ldr r1, _020D3FF8 ; =0x021D5474
+ mov r2, #0x0
+ str r2, [r1, #0x24]
+ str r2, [r1, #0x28]
+ str r2, [r1, #0x2c]
+_020D3FDC:
+ bl OS_RestoreInterrupts
+ ldr r0, _020D3FF8 ; =0x021D5474
+ mov r1, #0x1
+ strh r1, [r0, #0x30]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020D3FF8: .word 0x021D5474
+_020D3FFC: .word 0x04000280
+_020D4000: .word 0x04000290
+_020D4004: .word 0x04000298
+_020D4008: .word 0x040002A0
+
+ arm_func_start TP_GetUserInfo
+TP_GetUserInfo: ; 0x020D400C
+ stmdb sp!, {r4-r6,lr}
+ sub sp, sp, #0x18
+ ldr ip, _020D40B4 ; =0x027FFC80
+ mov r4, r0
+ ldrh r1, [r12, #0x58]
+ ldrh r2, [r12, #0x5a]
+ ldrb r3, [r12, #0x5c]
+ cmp r1, #0x0
+ ldrb lr, [r12, #0x5d]
+ ldrh r6, [r12, #0x5e]
+ ldrh r5, [r12, #0x60]
+ ldrb r0, [r12, #0x62]
+ ldrb r12, [r12, #0x63]
+ bne _020D405C
+ cmp r6, #0x0
+ bne _020D405C
+ cmp r2, #0x0
+ bne _020D405C
+ cmp r5, #0x0
+ beq _020D4080
+_020D405C:
+ str lr, [sp, #0x0]
+ str r6, [sp, #0x4]
+ str r5, [sp, #0x8]
+ str r0, [sp, #0xc]
+ mov r0, r4
+ str r12, [sp, #0x10]
+ bl TP_CalcCalibrateParam
+_020D4078:
+ cmp r0, #0
+ beq _020D40A4
+_020D4080:
+ mov r0, #0x0
+ strh r0, [r4, #0x0]
+ strh r0, [r4, #0x2]
+ strh r0, [r4, #0x4]
+ strh r0, [r4, #0x6]
+ add sp, sp, #0x18
+ mov r0, #0x1
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020D40A4:
+ mov r0, #0x1
+ add sp, sp, #0x18
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020D40B4: .word 0x027FFC80
+
+ arm_func_start TP_Init
+TP_Init: ; 0x020D40B8
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ ldr r0, _020D413C ; =0x021D5470
+ ldrh r1, [r0, #0x0]
+ cmp r1, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {r4-r5,lr}
+ bxne lr
+ mov r1, #0x1
+ strh r1, [r0, #0x0]
+ bl PXI_Init
+ ldr r0, _020D4140 ; =0x021D5474
+ mov r1, #0x0
+ strh r1, [r0, #0x32]
+ strh r1, [r0, #0x36]
+ strh r1, [r0, #0xc]
+ str r1, [r0, #0x0]
+ str r1, [r0, #0x10]
+ strh r1, [r0, #0x30]
+ strh r1, [r0, #0x34]
+ mov r5, #0x6
+ mov r4, #0x1
+_020D4110:
+ mov r0, r5
+ mov r1, r4
+ bl PXI_IsCallbackReady
+_020D411C:
+ cmp r0, #0x0
+ beq _020D4110
+ ldr r1, _020D4144
+ mov r0, #0x6
+ bl PXI_SetFifoRecvCallback
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+_020D413C: .word 0x021D5470
+_020D4140: .word 0x021D5474
+_020D4144: .word FUN_020D4148
+
+ arm_func_start FUN_020D4148
+FUN_020D4148: ; 0x020D4148
+ stmdb sp!, {r4,lr}
+ sub sp, sp, #0x8
+ mov r0, r1, lsl #0x10
+ mov r3, r0, lsr #0x10
+ and r0, r3, #0x7f00
+ mov r0, r0, lsl #0x8
+ cmp r2, #0x0
+ mov r0, r0, lsr #0x10
+ beq _020D41AC
+ ldr r1, _020D43FC ; =0x021D5474
+ mov r2, #0x1
+ ldrh r4, [r1, #0x34]
+ ldr r3, [r1, #0x0]
+ orr r2, r4, r2, lsl r0
+ cmp r3, #0x0
+ strh r2, [r1, #0x34]
+ addeq sp, sp, #0x8
+ ldmeqia sp!, {r4,lr}
+ bxeq lr
+ mov r1, #0x4
+ mov r2, #0x0
+ blx r3
+ add sp, sp, #0x8
+ ldmia sp!, {r4,lr}
+ bx lr
+_020D41AC:
+ cmp r0, #0x10
+ bne _020D427C
+ ldr r1, _020D43FC ; =0x021D5474
+ ldrh r3, [r1, #0xc]
+ ldrh r2, [r1, #0x14]
+ add r3, r3, #0x1
+ strh r3, [r1, #0xc]
+ ldrh r3, [r1, #0xc]
+ cmp r3, r2
+ movcs r2, #0x0
+ strcsh r2, [r1, #0xc]
+ ldr r1, _020D4400 ; =0x027FFFAA
+ ldr r2, _020D43FC ; =0x021D5474
+ ldrh r3, [r1, #0x0]
+ ldr r1, _020D4404 ; =0x027FFFAC
+ ldrh r12, [r2, #0xc]
+ strh r3, [sp, #0x0]
+ ldrh r1, [r1, #0x0]
+ ldr r4, [r2, #0x10]
+ mov lr, r12, lsl #0x3
+ strh r1, [sp, #0x2]
+ ldr r3, [sp, #0x0]
+ add r1, r4, r12, lsl #0x3
+ mov r3, r3, lsl #0x14
+ mov r3, r3, lsr #0x14
+ strh r3, [r4, lr]
+ ldr r3, [sp, #0x0]
+ mov r3, r3, lsl #0x8
+ mov r3, r3, lsr #0x14
+ strh r3, [r1, #0x2]
+ ldr r3, [sp, #0x0]
+ mov r3, r3, lsl #0x7
+ mov r3, r3, lsr #0x1f
+ and r3, r3, #0xff
+ strh r3, [r1, #0x4]
+ ldr r3, [sp, #0x0]
+ mov r3, r3, lsl #0x5
+ mov r3, r3, lsr #0x1e
+ and r3, r3, #0xff
+ strh r3, [r1, #0x6]
+ ldr r3, [r2, #0x0]
+ cmp r3, #0x0
+ addeq sp, sp, #0x8
+ ldmeqia sp!, {r4,lr}
+ bxeq lr
+ ldrh r2, [r2, #0xc]
+ mov r1, #0x0
+ and r2, r2, #0xff
+ blx r3
+ add sp, sp, #0x8
+ ldmia sp!, {r4,lr}
+ bx lr
+_020D427C:
+ ands r1, r1, #0x1000000
+ addeq sp, sp, #0x8
+ ldmeqia sp!, {r4,lr}
+ bxeq lr
+ and r1, r3, #0xff
+ cmp r1, #0x4
+ addls pc, pc, r1, lsl #0x2
+ b _020D43EC
+_020D429C:
+ b _020D42B0
+ b _020D43EC
+ b _020D4390
+ b _020D4398
+ b _020D4388
+_020D42B0:
+ cmp r0, #0x0
+ beq _020D42D4
+ cmp r0, #0x1
+ beq _020D4338
+ cmp r0, #0x2
+ ldreq r1, _020D43FC
+ moveq r2, #0x0
+ streqh r2, [r1, #0x32]
+ b _020D4344
+_020D42D4:
+ ldr r1, _020D4400
+ ldr r3, _020D4404
+ ldrh ip, [r1]
+ ldr r1, _020D43FC
+ mov r2, #0x0
+ strh ip, [sp, #0x4]
+ ldrh r3, [r3]
+ strh r3, [sp, #0x6]
+ ldr ip, [sp, #0x4]
+ strh r2, [r1, #0x32]
+ mov r3, ip, lsl #0x7
+ mov r2, ip, lsl #0x5
+ mov lr, ip, lsl #0x14
+ mov ip, ip, lsl #0x8
+ mov r3, r3, lsr #0x1F
+ mov r2, r2, lsr #0x1E
+ mov lr, lr, lsr #0x14
+ mov ip, ip, lsr #0x14
+ and r3, r3, #0xFF
+ and r2, r2, #0xFF
+ strh lr, [r1, #0x4]
+ strh ip, [r1, #0x6]
+ strh r3, [r1, #0x8]
+ strh r2, [r1, #0xA]
+ b _020D4344
+_020D4338:
+ ldr r1, _020D43FC
+ mov r2, #0x2
+ strh r2, [r1, #0x32]
+_020D4344:
+ ldr r1, _020D43FC
+ mov r2, #0x1
+ ldrh ip, [r1, #0x36]
+ mvn r2, r2, lsl r0
+ ldr r3, [r1]
+ and r2, ip, r2
+ cmp r3, #0x0
+ strh r2, [r1, #0x36]
+ addeq sp, sp, #0x8
+ ldmeqia sp!, {r4, lr}
+ bxeq lr
+ mov r1, #0x0
+ mov r2, r1
+ blx r3
+ add sp, sp, #0x8
+ ldmia sp!, {r4, lr}
+ bx lr
+_020D4388:
+ mov r4, #0x3
+ b _020D439C
+_020D4390:
+ mov r4, #0x1
+ b _020D439C
+_020D4398:
+ mov r4, #0x2
+_020D439C:
+ ldr r1, _020D43FC
+ mov lr, #0x1
+ ldrh ip, [r1, #0x34]
+ ldr r3, [r1]
+ mvn r2, lr, lsl r0
+ orr ip, ip, lr, lsl r0
+ strh ip, [r1, #0x34]
+ ldrh ip, [r1, #0x36]
+ cmp r3, #0x0
+ addeq sp, sp, #0x8
+ and r2, ip, r2
+ strh r2, [r1, #0x36]
+ ldmeqia sp!, {r4, lr}
+ bxeq lr
+ and r1, r4, #0xff
+ mov r2, #0x0
+ blx r3
+ add sp, sp, #0x8
+ ldmia sp!, {r4, lr}
+ bx lr
+_020D43EC:
+ bl OS_Terminate
+ add sp, sp, #0x8
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020D43FC: .word 0x021D5474
+_020D4400: .word 0x027FFFAA
+_020D4404: .word 0x027FFFAC
+
+ arm_func_start MicWaitBusy
+MicWaitBusy: ; 0x020D4408
+ ldr ip, _020D441C ; =0x021D54B0
+_020D440C:
+ ldr r0, [r12, #0x0]
+ cmp r0, #0x1
+ beq _020D440C
+ bx lr
+ .balign 4
+_020D441C: .word 0x021D54B0
+
+ arm_func_start MicGetResultCallback
+MicGetResultCallback: ; 0x020D4420
+ ldr r1, _020D442C ; =0x021D54B0
+ str r0, [r1, #0xc]
+ bx lr
+ .balign 4
+_020D442C: .word 0x021D54B0
+
+ arm_func_start MicStopAutoSampling
+MicStopAutoSampling:
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r1, _020D4460 ; =0x03004200
+ mov r0, #0x9
+ mov r2, #0x0
+ bl PXI_SendWordByFifo
+_020D4448:
+ cmp r0, #0x0
+ movge r0, #0x1
+ movlt r0, #0x0
+ add sp, sp, #4
+ ldmfd sp!, {lr}
+ bx lr
+_020D4460: .word 0x03004200
+
+ arm_func_start MicStartAutoSampling
+MicStartAutoSampling: ; 0x020D4464
+ stmdb sp!, {r4-r6,lr}
+ ldr ip, _020D4584 ; =0x02004100
+ mov r6, r0
+ mov r5, r1
+ mov r4, r2
+ orr r1, r3, r12
+ mov r0, #0x9
+ mov r2, #0x0
+ bl PXI_SendWordByFifo
+_020D4488:
+ cmp r0, #0x0
+ movlt r0, #0x0
+ ldmltia sp!, {r4-r6, lr}
+ bxlt lr
+ mov r0, r6, lsr #0x10
+ orr r1, r0, #0x10000
+ mov r0, #0x9
+ mov r2, #0x0
+ bl PXI_SendWordByFifo
+ cmp r0, #0x0
+ movlt r0, #0x0
+ ldmltia sp!, {r4-r6, lr}
+ bxlt lr
+ ldr r1, _020D4588
+ mov r0, #0x9
+ and r1, r6, r1
+ orr r1, r1, #0x20000
+ mov r2, #0x0
+ bl PXI_SendWordByFifo
+ cmp r0, #0x0
+ movlt r0, #0x0
+ ldmltia sp!, {r4-r6, lr}
+ bxlt lr
+ mov r0, r5, lsr #0x10
+ orr r1, r0, #0x30000
+ mov r0, #0x9
+ mov r2, #0x0
+ bl PXI_SendWordByFifo
+ cmp r0, #0x0
+ movlt r0, #0x0
+ ldmltia sp!, {r4-r6, lr}
+ bxlt lr
+ ldr r1, _020D4588
+ mov r0, #0x9
+ and r1, r5, r1
+ orr r1, r1, #0x40000
+ mov r2, #0x0
+ bl PXI_SendWordByFifo
+ cmp r0, #0x0
+ movlt r0, #0x0
+ ldmltia sp!, {r4-r6, lr}
+ bxlt lr
+ mov r0, r4, lsr #0x10
+ orr r1, r0, #0x50000
+ mov r0, #0x9
+ mov r2, #0x0
+ bl PXI_SendWordByFifo
+ cmp r0, #0x0
+ movlt r0, #0x0
+ ldmltia sp!, {r4-r6, lr}
+ bxlt lr
+ ldr r0, _020D4588
+ ldr r1, _020D458C
+ and r0, r4, r0
+ orr r1, r0, r1
+ mov r0, #0x9
+ mov r2, #0x0
+ bl PXI_SendWordByFifo
+ cmp r0, #0x0
+ movge r0, #0x1
+ movlt r0, #0x0
+ ldmia sp!, {r4-r6, lr}
+ bx lr
+_020D4584: .word 0x02004100
+_020D4588: .word 0x0000FFFF
+_020D458C: .word 0x01060000
+
+ arm_func_start MicDoSampling
+MicDoSampling: ; 0x020D4590
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r1, _020D45C4 ; =0x03004000
+ mov r2, #0x0
+ orr r1, r0, r1
+ mov r0, #0x9
+ bl PXI_SendWordByFifo
+_020D45AC:
+ cmp r0, #0x0
+ movge r0, #0x1
+ movlt r0, #0x0
+ add sp, sp, #0x4
+ ldmfd sp!, {lr}
+ bx lr
+_020D45C4: .word 0x03004000
+
+ arm_func_start MicCommonCallback
+MicCommonCallback: ; 0x020D45C8
+ stmdb sp!, {r4,lr}
+ mov r4, r1
+ cmp r2, #0x0
+ beq _020D4610
+ ldr r0, _020D4700 ; =0x021D54B0
+ ldr r2, _020D4700 ; =0x021D54B0
+ ldr r1, [r0, #0x0]
+ ldr r12, [r2, #0x4]
+ cmp r1, #0x0
+ movne r1, #0x0
+ strne r1, [r0, #0x0]
+ cmp r12, #0x0
+ beq _020D4610
+ ldr r1, [r2, #0x8]
+ mov r3, #0x0
+ mov r0, #0x6
+ str r3, [r2, #0x4]
+ blx r12
+_020D4610:
+ and r0, r4, #0xff
+ mov r1, r0, lsl #0x10
+ and r2, r4, #0x7f00
+ mov r0, r2, lsl #0x8
+ mov r1, r1, lsr #0x10
+ cmp r1, #0x4
+ mov r2, r0, lsr #0x10
+ addls pc, pc, r1, lsl #0x2
+ b _020D4670
+_020D4634:
+ b _020D4648
+ b _020D4650
+ b _020D4658
+ b _020D4660
+ b _020D4668
+_020D4648:
+ mov r0, #0x0
+ b _020D4674
+_020D4650:
+ mov r0, #0x4
+ b _020D4674
+_020D4658:
+ mov r0, #0x2
+ b _020D4674
+_020D4660:
+ mov r0, #0x5
+ b _020D4674
+_020D4668:
+ mov r0, #0x1
+ b _020D4674
+_020D4670:
+ mov r0, #0x6
+_020D4674:
+ cmp r2, #0x51
+ bne _020D46A0
+ ldr r1, _020D4700 ; =0x021D54B0
+ ldr r2, [r1, #0x10]
+ cmp r2, #0x0
+ ldmeqia sp!, {r4,lr}
+ bxeq lr
+ ldr r1, [r1, #0x14]
+ blx r2
+ ldmia sp!, {r4,lr}
+ bx lr
+_020D46A0:
+ cmp r2, #0x40
+ bne _020D46C0
+ ldr r1, _020D4700 ; =0x021D54B0
+ ldr r2, [r1, #0x18]
+ cmp r2, #0x0
+ ldrne r1, _020D4704 ; =0x027FFF94
+ ldrneh r1, [r1, #0x0]
+ strneh r1, [r2, #0x0]
+_020D46C0:
+ ldr r1, _020D4700 ; =0x021D54B0
+ ldr r2, [r1, #0x0]
+ cmp r2, #0x0
+ movne r2, #0x0
+ strne r2, [r1, #0x0]
+ ldr r2, _020D4700 ; =0x021D54B0
+ ldr r4, [r2, #0x4]
+ cmp r4, #0x0
+ ldmeqia sp!, {r4,lr}
+ bxeq lr
+ ldr r1, [r2, #0x8]
+ mov r3, #0x0
+ str r3, [r2, #0x4]
+ blx r4
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020D4700: .word 0x021D54B0
+_020D4704: .word 0x027FFF94
+
+ arm_func_start MIC_GetLastSamplingAddress
+MIC_GetLastSamplingAddress: ; 0x020D4708
+ ldr r0, _020D4714 ; =0x027FFF90
+ ldr r0, [r0, #0x0]
+ bx lr
+ .balign 4
+_020D4714: .word 0x027FFF90
+
+ arm_func_start MIC_StopAutoSampling
+MIC_StopAutoSampling: ; 0x020D4718
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r0, _020D4754 ; =MicGetResultCallback
+ mov r1, #0x0
+ bl MIC_StopAutoSamplingAsync
+ ldr r1, _020D4758 ; =0x021D54B0
+ cmp r0, #0x0
+ str r0, [r1, #0xc]
+ bne _020D4740
+ bl MicWaitBusy
+_020D4740:
+ ldr r0, _020D4758 ; =0x021D54B0
+ ldr r0, [r0, #0xc]
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020D4754: .word MicGetResultCallback
+_020D4758: .word 0x021D54B0
+
+ arm_func_start MIC_StopAutoSamplingAsync
+MIC_StopAutoSamplingAsync: ; 0x020D475C
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ mov r4, r1
+ bl OS_DisableInterrupts
+ ldr r1, _020D47C8 ; =0x021D54B0
+ ldr r2, [r1, #0x0]
+ cmp r2, #0x0
+ beq _020D4794
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ mov r0, #0x1
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+_020D4794:
+ mov r2, #0x1
+ str r2, [r1, #0x0]
+ bl OS_RestoreInterrupts
+ ldr r0, _020D47C8 ; =0x021D54B0
+ str r5, [r0, #0x4]
+ str r4, [r0, #0x8]
+ bl MicStopAutoSampling
+_020D47B0:
+ cmp r0, #0x0
+ movne r0, #0x0
+ moveq r0, #0x3
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5, lr}
+ bx lr
+_020D47C8: .word 0x021D54B0
+
+ arm_func_start MIC_StartAutoSampling
+MIC_StartAutoSampling: ; 0x020D47CC
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r1, _020D4808 ; =MicGetResultCallback
+ mov r2, #0x0
+ bl MIC_StartAutoSamplingAsync
+ ldr r1, _020D480C ; =0x021D54B0
+ cmp r0, #0x0
+ str r0, [r1, #0xc]
+ bne _020D47F4
+ bl MicWaitBusy
+_020D47F4:
+ ldr r0, _020D480C ; =0x021D54B0
+ ldr r0, [r0, #0xc]
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020D4808: .word MicGetResultCallback
+_020D480C: .word 0x021D54B0
+
+ arm_func_start MIC_StartAutoSamplingAsync
+MIC_StartAutoSamplingAsync: ; 0x020D4810
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r7, r0
+ ldr r0, [r7, #0x4]
+ mov r6, r1
+ ands r0, r0, #0x1f
+ mov r5, r2
+ addne sp, sp, #0x4
+ movne r0, #0x2
+ ldmneia sp!, {r4-r7,lr}
+ bxne lr
+ ldr r1, [r7, #0x8]
+ ands r0, r1, #0x1f
+ addne sp, sp, #0x4
+ movne r0, #0x2
+ ldmneia sp!, {r4-r7,lr}
+ bxne lr
+ cmp r1, #0x0
+ addeq sp, sp, #0x4
+ moveq r0, #0x2
+ ldmeqia sp!, {r4-r7,lr}
+ bxeq lr
+ ldr r0, [r7, #0xc]
+ cmp r0, #0x400
+ addcc sp, sp, #0x4
+ movcc r0, #0x2
+ ldmccia sp!, {r4-r7,lr}
+ bxcc lr
+ ldr r0, [r7, #0x0]
+ cmp r0, #0x5
+ addls pc, pc, r0, lsl #0x2
+ b _020D48D8
+_020D4890:
+ b _020D48A8
+ b _020D48B0
+ b _020D48B8
+ b _020D48C0
+ b _020D48C8
+ b _020D48D0
+_020D48A8:
+ mov r1, #0x0
+ b _020D48E8
+_020D48B0:
+ mov r1, #0x1
+ b _020D48E8
+_020D48B8:
+ mov r1, #0x2
+ b _020D48E8
+_020D48C0:
+ mov r1, #0x3
+ b _020D48E8
+_020D48C8:
+ mov r1, #0x5
+ b _020D48E8
+_020D48D0:
+ mov r1, #0x7
+ b _020D48E8
+_020D48D8:
+ add sp, sp, #0x4
+ mov r0, #0x2
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020D48E8:
+ ldr r0, [r7, #0x10]
+ cmp r0, #0x0
+ orrne r0, r1, #0x10
+ andne r0, r0, #0xff
+ andeq r0, r1, #0xff
+ and r4, r0, #0xff
+ bl OS_DisableInterrupts
+ ldr r1, _020D497C
+ ldr r2, [r1]
+ cmp r2, #0x0
+ beq _020D4928
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ mov r0, #0x1
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020D4928:
+ mov r2, #0x1
+ str r2, [r1]
+ bl OS_RestoreInterrupts
+ ldr r0, _020D497C
+ mov r3, r4
+ str r6, [r0, #0x4]
+ str r5, [r0, #0x8]
+ ldr r1, [r7, #0x14]
+ str r1, [r0, #0x10]
+ ldr r1, [r7, #0x18]
+ str r1, [r0, #0x14]
+ ldr r0, [r7, #0x4]
+ ldr r1, [r7, #0x8]
+ ldr r2, [r7, #0xC]
+ bl MicStartAutoSampling
+ cmp r0, #0x0
+ movne r0, #0x0
+ moveq r0, #0x3
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020D497C: .word 0x021D54B0
+
+ arm_func_start MIC_DoSamplingAsync
+MIC_DoSamplingAsync: ; 0x020D4980
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ cmp r0, #0x6
+ mov r7, r1
+ mov r6, r2
+ mov r5, r3
+ addge sp, sp, #0x4
+ movge r0, #0x2
+ ldmgeia sp!, {r4-r7,lr}
+ bxge lr
+ cmp r0, #0x3
+ addls pc, pc, r0, lsl #0x2
+ b _020D49E4
+_020D49B4:
+ b _020D49C4
+ b _020D49CC
+ b _020D49D4
+ b _020D49DC
+_020D49C4:
+ mov r4, #0x0
+ b _020D49F4
+_020D49CC:
+ mov r4, #0x1
+ b _020D49F4
+_020D49D4:
+ mov r4, #0x2
+ b _020D49F4
+_020D49DC:
+ mov r4, #0x3
+ b _020D49F4
+_020D49E4:
+ add sp, sp, #0x4
+ mov r0, #0x2
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020D49F4:
+ bl OS_DisableInterrupts
+ ldr r1, _020D4A58
+ ldr r2, [r1]
+ cmp r2, #0x0
+ beq _020D4A1C
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ mov r0, #0x1
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020D4A1C:
+ mov r2, #0x1
+ str r2, [r1]
+ bl OS_RestoreInterrupts
+ ldr r1, _020D4A58
+ mov r0, r4
+ str r6, [r1, #0x4]
+ str r5, [r1, #0x8]
+ str r7, [r1, #0x18]
+ bl MicDoSampling
+ cmp r0, #0x0
+ movne r0, #0x0
+ moveq r0, #0x3
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020D4A58: .word 0x021D54B0
+
+ arm_func_start MIC_Init
+MIC_Init: ; 0x020D4A5C
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ ldr r1, _020D4AD8 ; =0x021D54AC
+ ldrh r0, [r1, #0x0]
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {r4-r5,lr}
+ bxne lr
+ ldr r0, _020D4ADC ; =0x021D54B0
+ mov r2, #0x0
+ mov r3, #0x1
+ strh r3, [r1, #0x0]
+ str r2, [r0, #0x0]
+ str r2, [r0, #0x4]
+ bl PXI_Init
+ mov r5, #0x9
+ mov r4, #0x1
+_020D4AA0:
+ mov r0, r5
+ mov r1, r4
+ bl PXI_IsCallbackReady
+_020D4AAC:
+ cmp r0, #0x0
+ beq _020D4AA0
+ ldr r2, _020D4AE0
+ mov r3, #0x0
+ ldr r1, _020D4AE4
+ mov r0, #0x9
+ str r3, [r2]
+ bl PXI_SetFifoRecvCallback
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5, lr}
+ bx lr
+_020D4AD8: .word 0x021D54AC
+_020D4ADC: .word 0x021D54B0
+_020D4AE0: .word 0x027FFF90
+_020D4AE4: .word MicCommonCallback
+
+ arm_func_start PM_DeletePostSleepCallback
+PM_DeletePostSleepCallback: ; 0x020D4AE8
+ ldr ip, _020D4AF8 ; =0x020D4B78
+ mov r1, r0
+ ldr r0, _020D4AFC ; =0x021D54E0
+ bx r12
+ .balign 4
+_020D4AF8: .word 0x020D4B78
+_020D4AFC: .word 0x021D54E0
+
+ arm_func_start PM_DeletePreSleepCallback
+PM_DeletePreSleepCallback: ; 0x020D4B00
+ ldr ip, _020D4B10 ; =0x020D4B78
+ mov r1, r0
+ ldr r0, _020D4B14 ; =0x021D54D8
+ bx r12
+ .balign 4
+_020D4B10: .word 0x020D4B78
+_020D4B14: .word 0x021D54D8
+
+ arm_func_start PM_AppendPostSleepCallback
+PM_AppendPostSleepCallback: ; 0x020D4B18
+ ldr ip, _020D4B28 ; =FUN_020D4BC4
+ mov r1, r0
+ ldr r0, _020D4B2C ; =0x021D54E0
+ bx r12
+ .balign 4
+_020D4B28: .word FUN_020D4BC4
+_020D4B2C: .word 0x021D54E0
+
+ arm_func_start PM_PrependPreSleepCallback
+PM_PrependPreSleepCallback: ; 0x020D4B30
+ ldr ip, _020D4B40 ; =FUN_020D4C0C
+ mov r1, r0
+ ldr r0, _020D4B44 ; =0x021D54D8
+ bx r12
+ .balign 4
+_020D4B40: .word FUN_020D4C0C
+_020D4B44: .word 0x021D54D8
+
+ arm_func_start PMi_ExecuteList
+PMi_ExecuteList: ; 0x020D4B48
+ stmdb sp!, {r4,lr}
+ movs r4, r0
+ ldmeqia sp!, {r4,lr}
+ bxeq lr
+_020D4B58:
+ ldr r0, [r4, #0x4]
+ ldr r1, [r4, #0x0]
+ blx r1
+ ldr r4, [r4, #0x8]
+ cmp r4, #0x0
+ bne _020D4B58
+ ldmia sp!, {r4,lr}
+ bx lr
+
+ arm_func_start FUN_020D4B78
+FUN_020D4B78:
+ cmp r0, #0x0
+ bxeq lr
+ ldr r3, [r0]
+ mov r2, r3
+ cmp r3, #0x0
+ bxeq lr
+_020D4B90:
+ cmp r3, r1
+ bne _020D4BB0
+ cmp r3, r2
+ ldreq r1, [r3, #0x8]
+ streq r1, [r0]
+ ldrne r0, [r3, #0x8]
+ strne r0, [r2, #0x8]
+ bx lr
+_020D4BB0:
+ mov r2, r3
+ ldr r3, [r3, #0x8]
+ cmp r3, #0x0
+ bne _020D4B90
+ bx lr
+
+ arm_func_start FUN_020D4BC4
+FUN_020D4BC4: ; 0x020D4BC4
+ cmp r0, #0x0
+ bxeq lr
+ ldr r2, [r0, #0x0]
+ cmp r2, #0x0
+ moveq r2, #0x0
+ streq r2, [r1, #0x8]
+ streq r1, [r0, #0x0]
+ bxeq lr
+ ldr r0, [r2, #0x8]
+ cmp r0, #0x0
+ beq _020D4C00
+_020D4BF0:
+ mov r2, r0
+ ldr r0, [r0, #0x8]
+ cmp r0, #0x0
+ bne _020D4BF0
+_020D4C00:
+ str r0, [r1, #0x8]
+ str r1, [r2, #0x8]
+ bx lr
+
+ arm_func_start FUN_020D4C0C
+FUN_020D4C0C: ; 0x020D4C0C
+ cmp r0, #0x0
+ ldrne r2, [r0, #0x0]
+ strne r2, [r1, #0x8]
+ strne r1, [r0, #0x0]
+ bx lr
+
+ arm_func_start PM_GetLEDPattern
+PM_GetLEDPattern: ; 0x020D4C20
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r1, _020D4C58 ; =0x020D587C
+ add r2, sp, #0x0
+ bl PM_GetLEDPatternAsync
+_020D4C34:
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmnefd sp!, {lr}
+ bxne lr
+ bl PMi_WaitBusy
+ ldr r0, [sp]
+ add sp, sp, #0x4
+ ldmfd sp!, {lr}
+ bx lr
+_020D4C58: .word 0x020D587C
+
+ arm_func_start PM_GetLEDPatternAsync
+PM_GetLEDPatternAsync:
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0
+ mov r5, r1
+ mov r4, r2
+ bl PMi_Lock
+_020D4C70:
+ cmp r0, #0x0
+ moveq r0, #0x1
+ ldmeqia sp!, {r4-r6,lr}
+ bxeq lr
+ ldr r1, _020D4CA4
+ ldr r0, _020D4CA8
+ str r5, [r1, #0x4]
+ str r4, [r1, #0x8]
+ str r6, [r1, #0xC]
+ bl PMi_SendPxiData
+ mov r0, #0x0
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020D4CA4: .word 0x021D54E4
+_020D4CA8: .word 0x03006700
+
+ arm_func_start PMi_SendLEDPatternCommand
+PMi_SendLEDPatternCommand: ; 0x020D4CAC
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r1, _020D4CE4 ; =0x020D587C
+ add r2, sp, #0x0
+ bl PMi_SendLEDPatternCommandAsync
+_020D4CC0:
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmnefd sp!, {lr}
+ bxne lr
+ bl PMi_WaitBusy
+ ldr r0, [sp]
+ add sp, sp, #0x4
+ ldmfd sp!, {lr}
+ bx lr
+_020D4CE4: .word 0x020D587C
+
+ arm_func_start PMi_SendLEDPatternCommandAsync
+PMi_SendLEDPatternCommandAsync:
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0
+ mov r5, r1
+ mov r4, r2
+ bl PMi_Lock
+_020D4CFC:
+ cmp r0, #0x0
+ moveq r0, #0x1
+ ldmeqia sp!, {r4-r6,lr}
+ bxeq lr
+ ldr r0, _020D4D34
+ ldr r1, _020D4D38
+ and r2, r6, #0xff
+ orr r0, r2, r0
+ str r5, [r1, #0x4]
+ str r4, [r1, #0x8]
+ bl PMi_SendPxiData
+ mov r0, #0x0
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020D4D34: .word 0x03006600
+_020D4D38: .word 0x021D54E4
+
+ arm_func_start PM_GetLCDPower
+PM_GetLCDPower: ; 0x020D4D3C
+ ldr r0, _020D4D54 ; =0x04000304
+ ldrh r0, [r0, #0x0]
+ ands r0, r0, #0x1
+ movne r0, #0x1
+ moveq r0, #0x0
+ bx lr
+ .balign 4
+_020D4D54: .word 0x04000304
+
+ arm_func_start PM_SetLCDPower
+PM_SetLCDPower: ; 0x020D4D58
+ ldr ip, _020D4D74 ; =PMi_SetLCDPower
+ mov r1, #0x0
+ cmp r0, #0x1
+ movne r0, #0x0
+ mov r2, r1
+ mov r3, #0x1
+ bx r12
+ .balign 4
+_020D4D74: .word PMi_SetLCDPower
+
+ arm_func_start PMi_SetLCDPower
+PMi_SetLCDPower: ; 0x020D4D78
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ cmp r0, #0x0
+ beq _020D4E00
+ cmp r0, #0x1
+ bne _020D4E4C
+ cmp r2, #0x0
+ bne _020D4DC0
+ ldr r2, _020D4E5C ; =0x027FFC3C
+ ldr r0, _020D4E60 ; =0x021D54DC
+ ldr r2, [r2, #0x0]
+ ldr r0, [r0, #0x0]
+ sub r0, r2, r0
+ cmp r0, #0x7
+ addls sp, sp, #0x4
+ movls r0, #0x0
+ ldmlsia sp!, {lr}
+ bxls lr
+_020D4DC0:
+ cmp r1, #0x0
+ beq _020D4DEC
+ cmp r3, #0x0
+ beq _020D4DDC
+ mov r0, r1
+ bl PMi_SetLED
+ b _020D4DEC
+_020D4DDC:
+ mov r0, r1
+ mov r1, #0x0
+ mov r2, r1
+ bl PMi_SetLEDAsync
+_020D4DEC:
+ ldr r1, _020D4E64 ; =0x04000304
+ ldrh r0, [r1, #0x0]
+ orr r0, r0, #0x1
+ strh r0, [r1, #0x0]
+ b _020D4E4C
+_020D4E00:
+ ldr lr, _020D4E64 ; =0x04000304
+ ldr r2, _020D4E5C ; =0x027FFC3C
+ ldrh r12, [lr, #0x0]
+ ldr r0, _020D4E60 ; =0x021D54DC
+ cmp r1, #0x0
+ bic r12, r12, #0x1
+ strh r12, [lr, #0x0]
+ ldr r2, [r2, #0x0]
+ str r2, [r0, #0x0]
+ beq _020D4E4C
+ cmp r3, #0x0
+ beq _020D4E3C
+ mov r0, r1
+ bl PMi_SetLED
+ b _020D4E4C
+_020D4E3C:
+ mov r0, r1
+ mov r1, #0x0
+ mov r2, r1
+ bl PMi_SetLEDAsync
+_020D4E4C:
+ mov r0, #0x1
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020D4E5C: .word 0x027FFC3C
+_020D4E60: .word 0x021D54DC
+_020D4E64: .word 0x04000304
+
+ arm_func_start PM_GoSleepMode
+PM_GoSleepMode: ; 0x020D4E68
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x1c
+ ldr r3, _020D5084 ; =0x021D54D8
+ mov r10, r0
+ ldr r0, [r3, #0x0]
+ mov r9, r1
+ mov r11, r2
+ mov r8, #0x0
+ bl PMi_ExecuteList
+ ldr r1, _020D5088 ; =0x04000208
+ mov r0, r8
+ ldrh r4, [r1, #0x0]
+ strh r0, [r1, #0x0]
+ bl OS_DisableInterrupts
+_020D4EA0:
+ str r0, [sp]
+ ldr r0, _020D508C
+ bl OS_DisableIrqMask
+ str r0, [sp, #0x4]
+ mov r0, #0x40000
+ bl OS_SetIrqMask
+ ldr r0, [sp]
+ bl OS_RestoreInterrupts
+ ldr r2, _020D5088
+ mov r1, #0x1
+ ldrh r0, [r2]
+ ands r0, sl, #0x8
+ strh r1, [r2]
+ beq _020D4EE8
+ ldr r0, _020D5090
+ ldrh r0, [r0]
+ cmp r0, #0x2
+ biceq sl, sl, #0x8
+_020D4EE8:
+ ands r0, sl, #0x10
+ beq _020D4EFC
+ bl CTRDG_IsExisting
+ cmp r0, #0x0
+ biceq sl, sl, #0x10
+_020D4EFC:
+ ldr r0, _020D5094
+ mov r1, #0x4000000
+ ldr r7, [r1]
+ ldr r6, [r0]
+ bl PM_GetLCDPower
+ str r0, [sp, #0x8]
+ add r0, sp, #0xC
+ add r1, sp, #0x10
+ bl PM_GetBackLight
+ mov r0, #0x2
+ mov r1, #0x0
+ bl FUN_020D526C
+ ldr r2, _020D5098
+ ldr r0, [r2]
+ str r0, [sp, #0x14]
+_020D4F38:
+ ldr r1, [r2]
+ ldr r0, [sp, #0x14]
+ cmp r0, r1
+ beq _020D4F38
+ ldr r0, [r2]
+ mov r2, #0x4000000
+ str r0, [sp, #0x14]
+ ldr r0, [r2]
+ ldr r1, _020D5094
+ bic r0, r0, #0x30000
+ str r0, [r2]
+ ldr r0, [r1]
+ bic r0, r0, #0x10000
+ str r0, [r1]
+ ldr r2, _020D5098
+_020D4F74:
+ ldr r1, [r2]
+ ldr r0, [sp, #0x14]
+ cmp r0, r1
+ beq _020D4F74
+ ldr r0, [r2]
+ str r0, [sp, #0x14]
+ ldr r2, _020D5098
+_020D4F90:
+ ldr r1, [r2]
+ ldr r0, [sp, #0x14]
+ cmp r0, r1
+ beq _020D4F90
+ ldr r0, [sp, #0xC]
+ ldr r1, [sp, #0x10]
+ orr r0, sl, r0, lsl #0x5
+ orr r0, r0, r1, lsl #0x6
+ mov r0, r0, lsl #0x10
+ mov r5, r0, lsr #0x10
+ orr r0, r9, fp
+ mov r0, r0, lsl #0x10
+ mov r9, r0, lsr #0x10
+_020D4FC4:
+ mov r0, r5
+ mov r1, r9
+ bl PMi_SendSleepStart
+ cmp r0, #0x0
+ bne _020D4FC4
+ bl OS_Halt
+ ldr r0, _020D509C
+ bl OS_SpinWait
+ ands r0, sl, #0x8
+ beq _020D4FFC
+ ldr r0, _020D50A0
+ ldr r0, [r0]
+ ands r0, r0, #0x100000
+ movne r8, #0x1
+_020D4FFC:
+ cmp r8, #0x0
+ bne _020D5040
+ ldr r0, [sp, #0x8]
+ cmp r0, #0x1
+ bne _020D5028
+ mov r0, #0x1
+ mov r1, r0
+ mov r2, r0
+ mov r3, #0x0
+ bl PMi_SetLCDPower
+ b _020D5030
+_020D5028:
+ mov r0, #0x1
+ bl PMi_SetLED
+_020D5030:
+ mov r1, #0x4000000
+ ldr r0, _020D5094
+ str r7, [r1]
+ str r6, [r0]
+_020D5040:
+ bl OS_DisableInterrupts
+ ldr r0, [sp, #0x4]
+ bl OS_SetIrqMask
+ ldr r0, [sp]
+ bl OS_RestoreInterrupts
+ ldr r1, _020D5088
+ cmp r8, #0x0
+ ldrh r0, [r1]
+ strh r4, [r1]
+ beq _020D506C
+ bl FUN_020D5180
+_020D506C:
+ ldr r0, _020D50A4
+ ldr r0, [r0]
+ bl PMi_ExecuteList
+ add sp, sp, #0x1C
+ ldmia sp!, {r4-r11, lr}
+ bx lr
+_020D5084: .word 0x021D54D8
+_020D5088: .word 0x04000208
+_020D508C: .word 0x003FFFFF
+_020D5090: .word 0x027FFC40
+_020D5094: .word 0x04001000
+_020D5098: .word 0x027FFC3C
+_020D509C: .word 0x00996A00
+_020D50A0: .word 0x04000214
+_020D50A4: .word 0x021D54E0
+
+
+ arm_func_start PMi_SendPxiData
+PMi_SendPxiData: ; 0x020D50A8
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0
+ mov r5, #0x8
+ mov r4, #0x0
+_020D50B8:
+ mov r0, r5
+ mov r1, r6
+ mov r2, r4
+ bl PXI_SendWordByFifo
+_020D50C8:
+ cmp r0, #0
+ bne _020D50B8
+ ldmia sp!, {r4-r6, lr}
+ bx lr
+
+ arm_func_start PM_GetBackLight
+PM_GetBackLight: ; 0x020D50D8
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r4, r1
+ mov r5, r0
+ add r1, sp, #0x0
+ mov r0, #0x0
+ bl PMi_ReadRegister
+_020D50F4:
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {r4-r5,lr}
+ bxne lr
+ cmp r5, #0x0
+ beq _020D5120
+ ldrh r1, [sp]
+ ands r1, r1, #0x8
+ movne r1, #0x1
+ moveq r1, #0x0
+ str r1, [r5]
+_020D5120:
+ cmp r4, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r5,lr}
+ bxeq lr
+ ldrh r1, [sp]
+ ands r1, r1, #0x4
+ movne r1, #0x1
+ moveq r1, #0x0
+ str r1, [r4]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
diff --git a/asm/arm7_rom.s b/asm/arm7_rom.s
index 1a02882d..a18e8565 100644
--- a/asm/arm7_rom.s
+++ b/asm/arm7_rom.s
@@ -1,6 +1,145 @@
/* arm7_rom.s TODO: Disassemble */
+ .include "asm/macros.inc"
+ .global ARM7AutoLoad
.section .text
- .global Entry_ARM7
+ arm_func_start Entry_ARM7
+
Entry_ARM7:
- .incbin "baserom.nds", 0x30D000, 0x2931C
+ mov ip, #67108864 ; 0x4000000
+ str ip, [ip, #520] ; 0x208
+ ldr r1, _23800cc
+ mov r0, #58720256 ; 0x3800000
+ cmp r0, r1
+ movpl r1, r0
+ ldr r2, _23800d0
+ mov r0, #0
+_02380020:
+ cmp r1, r2
+ stmltia r1!, {r0}
+ blt _02380020
+ mov r0, #19
+ msr CPSR_c, r0
+ ldr sp, _23800d4
+ mov r0, #18
+ msr CPSR_c, r0
+ ldr r0, _23800d8
+ mov sp, r0
+ ldr r1, _23800dc
+ sub r1, r0, r1
+ mov r0, #31
+ msr CPSR_fsxc, r0
+ sub sp, r1, #4
+ ldr r0, _23800e0
+ ldr r1, _23800e4
+ add r2, r1, #352 ; 0x160
+_02380068:
+ ldr r3, [r0], #4
+ str r3, [r1], #4
+ cmp r1, r2
+ bmi _02380068
+ ldr r0, _23800e8
+ add r2, r1, #32
+_02380080:
+ ldr r3, [r0], #4
+ str r3, [r1], #4
+ cmp r1, r2
+ bmi _02380080
+ bl FUN_2380100
+ ldr r0, _23800ec
+ ldr r1, [r0, #12]
+ ldr r2, [r0, #16]
+ mov r0, #0
+_023800a4:
+ cmp r1, r2
+ strcc r0, [r1], #4
+ bcc _023800a4
+ bl FUN_238015C
+ ldr r1, _23800f0
+ ldr r0, _23800f4
+ str r0, [r1]
+ ldr r1, _23800f8
+ ldr lr, _23800fc
+ bx r1
+_23800cc: .word UNK_23801B0
+_23800d0: .word 0x0380ff00
+_23800d4: .word 0x0380ffc0
+_23800d8: .word 0x0380ff80
+_23800dc: .word 0x00000400
+_23800e0: .word 0x023fe940
+_23800e4: .word 0x027ffa80
+_23800e8: .word 0x023fe904
+_23800ec: .word _2380198
+_23800f0: .word 0x0380fffc
+_23800f4: .word 0x037f853c
+_23800f8: .word 0x037f8468
+_23800fc: .word 0xffff0000
+ arm_func_end Entry_ARM7
+
+ arm_func_start FUN_2380100
+FUN_2380100:
+ ldr r0, _2380154
+ ldr r1, [r0]
+ ldr r2, [r0, #4]
+ ldr r3, [r0, #8]
+_02380110:
+ cmp r1, r2
+ beq _02380150
+ ldr r4, [r1], #4
+ ldr r5, [r1], #4
+ add r6, r4, r5
+_02380124:
+ cmp r4, r6
+ ldrmi r7, [r3], #4
+ strmi r7, [r4], #4
+ bmi _02380124
+ ldr r5, [r1], #4
+ add r6, r4, r5
+ mov r7, #0
+_02380140:
+ cmp r4, r6
+ strcc r7, [r4], #4
+ bcc _02380140
+ beq _02380110
+_02380150:
+ b ARM7AutoLoad
+_2380154: .word _2380198
+ARM7AutoLoad:
+ bx lr
+ arm_func_end FUN_2380100
+
+ arm_func_start FUN_238015C
+FUN_238015C:
+ mov r0, #1
+ mov r1, #0
+ ldr r2, _2380194
+ sub r3, r2, #4194304 ; 0x400000
+_0238016c:
+ strh r1, [r2]
+ ldrh ip, [r3]
+ cmp r1, ip
+ movne r0, #2
+ bne _0238018c
+ add r1, r1, #1
+ cmp r1, #2
+ bne _0238016c
+_0238018c:
+ strh r0, [r2]
+ bx lr
+_2380194: .word 0x027ffffa
+_2380198:
+ .word UNK_23A92F8
+ .word UNK_23A92FC
+ .word UNK_23801B0
+ .word UNK_23801B0
+ .word UNK_23801B0
+ .word 0x00000000
+ arm_func_end FUN_238015C
+
+UNK_23801B0:
+ .incbin "baserom.nds", 0x30D1B0, 0x29148
+
+UNK_23A92F8:
+ .incbin "baserom.nds", 0x3362F8, 0x24
+
+UNK_23A92FC:
diff --git a/asm/arm9overlay.s b/asm/arm9overlay.s
new file mode 100644
index 00000000..70356c52
--- /dev/null
+++ b/asm/arm9overlay.s
@@ -0,0 +1,5 @@
+ .text
+
+ .global ARM9Overlay
+ARM9Overlay:
+ .incbin "baserom.nds", 0x10B800, 0xAE0
diff --git a/asm/entry.s b/asm/crt0.s
index bd6ed223..cfbab5f0 100644
--- a/asm/entry.s
+++ b/asm/crt0.s
@@ -1,9 +1,11 @@
.include "asm/macros.inc"
+ .include "global.inc"
.text
+ .set SDK_IRQ_STACKSIZE, 0x400
- arm_func_start Entry
-Entry: @ 0x02000800
+ arm_func_start _start
+_start: ; 0x02000800
mov ip, #0x4000000
str ip, [ip, #0x208]
_02000808:
@@ -13,39 +15,39 @@ _02000808:
bl init_cp15
mov r0, #0x13
msr cpsr_c, r0
- ldr r0, _02000918 @ =0x027E0000
+ ldr r0, _02000918 ; =SDK_AUTOLOAD_DTCM_START
add r0, r0, #0x3fc0
mov sp, r0
mov r0, #0x12
msr cpsr_c, r0
- ldr r0, _02000918 @ =0x027E0000
+ ldr r0, _02000918 ; =SDK_AUTOLOAD_DTCM_START
add r0, r0, #0x3fc0
sub r0, r0, #0x40
sub sp, r0, #4
tst sp, #4
subeq sp, sp, #4
- ldr r1, _0200091C @ =0x00000400
+ ldr r1, _0200091C ; =0x00000400
sub r1, r0, r1
mov r0, #0x1f
msr cpsr_fsxc, r0
sub sp, r1, #4
mov r0, #0
- ldr r1, _02000918 @ =0x027E0000
+ ldr r1, _02000918 ; =SDK_AUTOLOAD_DTCM_START
mov r2, #0x4000
bl INITi_CpuClear32
mov r0, #0
- ldr r1, _02000920 @ =0x05000000
+ ldr r1, _02000920 ; =0x05000000
mov r2, #1024
bl INITi_CpuClear32
mov r0, #512
- ldr r1, _02000924 @ =0x07000000
+ ldr r1, _02000924 ; =0x07000000
mov r2, #1024
bl INITi_CpuClear32
- ldr r1, _02000928 @ =_02000B68
+ ldr r1, _02000928 ; =_start_ModuleParams
ldr r0, [r1, #20]
bl MIi_UncompressBackward
bl do_autoload
- ldr r0, _02000928 @ =_02000B68
+ ldr r0, _02000928 ; =_start_ModuleParams
ldr r1, [r0, #12]
ldr r2, [r0, #16]
mov r3, r1
@@ -56,44 +58,44 @@ _020008B4:
bcc _020008B4
bic r1, r3, #31
_020008C4:
- mcr p15, #0, r0, cr7, cr10, 4
- mcr p15, #0, r1, cr7, cr5, 1
- mcr p15, #0, r1, cr7, cr14, 1
- add r1, #32
+ mcr p15, 0x0, r0, cr7, cr10, 4
+ mcr p15, 0x0, r1, cr7, cr5, 1
+ mcr p15, 0x0, r1, cr7, cr14, 1
+ add r1, r1, #32
cmp r1, r2
blt _020008C4
- ldr r1, _0200092C @ =0x027FFF9C
+ ldr r1, _0200092C ; =0x027FFF9C
str r0, [r1]
- ldr r1, _02000918 @ =0x027E0000
+ ldr r1, _02000918 ; =SDK_AUTOLOAD_DTCM_START
add r1, r1, #16320
add r1, r1, #60
- ldr r0, _02000930 @ =0x01FF8000
+ ldr r0, _02000930 ; =OS_IrqHandler
str r0, [r1]
- bl sub_20EC5CC
- bl sub_2000B64_dummy
- bl sub_20EC694
- ldr r1, _02000934 @ =0x02000C55
- ldr lr, _02000938 @ =0xFFFF0000
+ bl _fp_init
+ bl NitroStartUp
+ bl __call_static_initializers
+ ldr r1, _02000934 ; =0x02000C55
+ ldr lr, _02000938 ; =0xFFFF0000
tst sp, #4
subne sp, sp, #4
bx r1
-_02000918: .4byte 0x027E0000
-_0200091C: .4byte 0x00000400
-_02000920: .4byte 0x05000000
-_02000924: .4byte 0x07000000
-_02000928: .4byte _02000B68
-_0200092C: .4byte 0x027FFF9C
-_02000930: .4byte 0x01FF8000
-_02000934: .4byte NitroMain+1
-_02000938: .4byte 0xFFFF0000
- arm_func_end Entry
+_02000918: .word SDK_AUTOLOAD_DTCM_START
+_0200091C: .word SDK_IRQ_STACKSIZE
+_02000920: .word 0x05000000
+_02000924: .word 0x07000000
+_02000928: .word _start_ModuleParams
+_0200092C: .word 0x027FFF9C
+_02000930: .word OS_IrqHandler
+_02000934: .word NitroMain
+_02000938: .word 0xFFFF0000
+ arm_func_end _start
arm_func_start INITi_CpuClear32
INITi_CpuClear32:
add ip, r1, r2
_02000940:
cmp r1, ip
- stmlt r1!, {r0}
+ stmltia r1!, {r0}
blt _02000940
bx lr
arm_func_end INITi_CpuClear32
@@ -102,7 +104,7 @@ _02000940:
MIi_UncompressBackward:
cmp r0, #0
beq _020009F8
- push {r4, r5, r6, r7}
+ stmdb sp!, {r4-r7}
ldmdb r0, {r1, r2}
add r2, r0, r2
sub r3, r0, r1, lsr #24
@@ -136,26 +138,26 @@ _020009B8:
bge _020009B8
_020009C8:
cmp r3, r1
- lsl r5, r5, #1
+ mov r5, r5, lsl #0x1
bgt _02000984
_020009D4:
mov r0, #0
bic r3, r1, #31
_020009DC:
- mcr p15, #0, r0, cr7, cr10, 4
- mcr p15, #0, r3, cr7, cr5, 1
- mcr p15, #0, r3, cr7, cr14, 1
+ mcr p15, 0x0, r0, cr7, cr10, 4
+ mcr p15, 0x0, r3, cr7, cr5, 1
+ mcr p15, 0x0, r3, cr7, cr14, 1
add r3, r3, #32
cmp r3, r4
blt _020009DC
- pop {r4, r5, r6, r7}
+ ldmia sp!, {r4-r7}
_020009F8:
bx lr
arm_func_end MIi_UncompressBackward
arm_func_start do_autoload
do_autoload:
- ldr r0, =_02000B68
+ ldr r0, =_start_ModuleParams
ldr r1, [r0]
ldr r2, [r0, #4]
ldr r3, [r0, #8]
@@ -180,86 +182,88 @@ _02000A40:
bcc _02000A40
bic r4, r5, #31
_02000A50:
- mcr p15, #0, r7, cr7, cr10, 4
- mcr p15, #0, r4, cr7, cr5, 1
- mcr p15, #0, r4, cr7, cr14, 1
+ mcr p15, 0x0, r7, cr7, cr10, 4
+ mcr p15, 0x0, r4, cr7, cr5, 1
+ mcr p15, 0x0, r4, cr7, cr14, 1
add r4, r4, #32
cmp r4, r6
blt _02000A50
b _02000A0C
_02000A6C:
- b _2000A74
+ b _start_AutoloadDoneCallback
.pool
-_2000A74:
+ .global _start_AutoloadDoneCallback
+_start_AutoloadDoneCallback:
bx lr
arm_func_end do_autoload
arm_func_start init_cp15
-init_cp15: @ 0x02000A78
- mrc p15, #0, r0, c1, c0, #0
+init_cp15: ; 0x02000A78
+ mrc p15, 0x0, r0, c1, c0, 0x0
ldr r1, =0x000F9005
bic r0, r0, r1
- mcr p15, #0, r0, c1, c0, #0
+ mcr p15, 0x0, r0, c1, c0, 0x0
mov r0, #0
- mcr p15, #0, r0, c7, c5, #0
- mcr p15, #0, r0, c7, c6, #0
- mcr p15, #0, r0, c7, c10, #4
+ mcr p15, 0x0, r0, c7, c5, 0x0
+ mcr p15, 0x0, r0, c7, c6, 0x0
+ mcr p15, 0x0, r0, c7, c10, 0x4
ldr r0, =0x04000033
- mcr p15, #0, r0, c6, c0, #0
+ mcr p15, 0x0, r0, c6, c0, 0x0
ldr r0, =0x0200002D
- mcr p15, #0, r0, c6, c1, #0
+ mcr p15, 0x0, r0, c6, c1, 0x0
ldr r0, =0x027E0021
- mcr p15, #0, r0, c6, c2, #0
+ mcr p15, 0x0, r0, c6, c2, 0x0
ldr r0, =0x08000035
- mcr p15, #0, r0, c6, c3, #0
- ldr r0, =0x027E0000
+ mcr p15, 0x0, r0, c6, c3, 0x0
+ ldr r0, =SDK_AUTOLOAD_DTCM_START
orr r0, r0, #0x1a
orr r0, r0, #1
- mcr p15, #0, r0, c6, c4, #0
+ mcr p15, 0x0, r0, c6, c4, 0x0
ldr r0, =0x0100002F
- mcr p15, #0, r0, c6, c5, #0
+ mcr p15, 0x0, r0, c6, c5, 0x0
ldr r0, =0xFFFF001D
- mcr p15, #0, r0, c6, c6, #0
+ mcr p15, 0x0, r0, c6, c6, 0x0
ldr r0, =0x027FF017
- mcr p15, #0, r0, c6, c7, #0
+ mcr p15, 0x0, r0, c6, c7, 0x0
mov r0, #0x20
- mcr p15, #0, r0, c9, c1, #1
- ldr r0, =0x027E0000
+ mcr p15, 0x0, r0, c9, c1, 0x1
+ ldr r0, =SDK_AUTOLOAD_DTCM_START
orr r0, r0, #0xa
- mcr p15, #0, r0, c9, c1, #0
+ mcr p15, 0x0, r0, c9, c1, 0x0
mov r0, #0x42
- mcr p15, #0, r0, c2, c0, #1
+ mcr p15, 0x0, r0, c2, c0, 0x1
mov r0, #0x42
- mcr p15, #0, r0, c2, c0, #0
+ mcr p15, 0x0, r0, c2, c0, 0x0
mov r0, #2
- mcr p15, #0, r0, c3, c0, #0
+ mcr p15, 0x0, r0, c3, c0, 0x0
ldr r0, =0x05100011
- mcr p15, #0, r0, c5, c0, #3
+ mcr p15, 0x0, r0, c5, c0, 0x3
ldr r0, =0x15111011
- mcr p15, #0, r0, c5, c0, #2
- mrc p15, #0, r0, c1, c0, #0
+ mcr p15, 0x0, r0, c5, c0, 0x2
+ mrc p15, 0x0, r0, c1, c0, 0x0
ldr r1, =0x0005707D
orr r0, r0, r1
- mcr p15, #0, r0, c1, c0, #0
+ mcr p15, 0x0, r0, c1, c0, 0x0
bx lr
.align 2, 0
.pool
- arm_func_start sub_2000B60_dummy
-sub_2000B60_dummy: @ 0x02000B60
+ arm_func_start OSi_ReferSymbol
+OSi_ReferSymbol: ; 0x02000B60
bx lr
- arm_func_start sub_2000B64_dummy
-sub_2000B64_dummy: @ 0x02000B64
+ arm_func_start NitroStartUp
+NitroStartUp: ; 0x02000B64
bx lr
-_02000B68:
- .word 0x02107700
- .word 0x02107724
- .word 0x02106FA0
- .word 0x02106FA0
- .word 0x021D74E0
- .word 0x00000000
+_start_ModuleParams:
+ .word SDK_AUTOLOAD_LIST
+ .word SDK_AUTOLOAD_LIST_END
+ .word SDK_AUTOLOAD_START
+ .word SDK_STATIC_BSS_START
+ .word SDK_STATIC_BSS_END
+
+ .word 0x00000000
.byte 0x31, 0x75, 0x02, 0x03, 0x21, 0x06, 0xC0, 0xDE, 0xDE, 0xC0, 0x06, 0x21
# strings
diff --git a/asm/filenametable.s b/asm/filenametable.s
deleted file mode 100644
index 0ebb43f8..00000000
--- a/asm/filenametable.s
+++ /dev/null
@@ -1,4 +0,0 @@
- .text
- .global FileNameTable
-FileNameTable:
- .incbin "baserom.nds", 0x336400, 0x3cc9c00 @0x157F
diff --git a/asm/filesystem.s b/asm/filesystem.s
new file mode 100644
index 00000000..75af021d
--- /dev/null
+++ b/asm/filesystem.s
@@ -0,0 +1,648 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ thumb_func_start ReadNARCFile
+ReadNARCFile: ; 0x02006314
+ push {r3-r7, lr}
+ sub sp, #0x60
+ add r4, r1, #0x0
+ mov r1, #0x0
+ str r0, [sp, #0x0]
+ str r1, [sp, #0x14]
+ str r1, [sp, #0x10]
+ str r1, [sp, #0xc]
+ add r0, sp, #0x8
+ strh r1, [r0, #0x0]
+ add r0, sp, #0x18
+ add r5, r2, #0x0
+ str r3, [sp, #0x4]
+ blx FS_InitFile
+ add r0, sp, #0x18
+ add r1, r4, #0x0
+ blx FS_OpenFile
+ add r0, sp, #0x18
+ mov r1, #0xc
+ mov r2, #0x0
+ blx FS_SeekFile
+ add r0, sp, #0x18
+ add r1, sp, #0x14
+ mov r2, #0x2
+ blx FS_ReadFile
+ ldr r4, [sp, #0x14]
+ add r0, sp, #0x18
+ add r1, r4, #0x4
+ mov r2, #0x0
+ blx FS_SeekFile
+ add r0, sp, #0x18
+ add r1, sp, #0x14
+ mov r2, #0x4
+ blx FS_ReadFile
+ add r0, sp, #0x18
+ add r1, sp, #0x8
+ mov r2, #0x2
+ blx FS_ReadFile
+ add r0, sp, #0x8
+ ldrh r0, [r0, #0x0]
+ cmp r0, r5
+ bgt _0200637A
+ bl ErrorHandling
+_0200637A:
+ ldr r0, [sp, #0x14]
+ mov r2, #0x0
+ add r6, r4, r0
+ add r0, sp, #0x18
+ add r1, r6, #0x4
+ blx FS_SeekFile
+ add r0, sp, #0x18
+ add r1, sp, #0x14
+ mov r2, #0x4
+ blx FS_ReadFile
+ add r4, #0xc
+ lsl r1, r5, #0x3
+ add r0, sp, #0x18
+ add r1, r4, r1
+ mov r2, #0x0
+ ldr r7, [sp, #0x14]
+ blx FS_SeekFile
+ add r0, sp, #0x18
+ add r1, sp, #0x10
+ mov r2, #0x4
+ blx FS_ReadFile
+ add r0, sp, #0x18
+ add r1, sp, #0xc
+ mov r2, #0x4
+ blx FS_ReadFile
+ add r2, r6, r7
+ ldr r1, [sp, #0x10]
+ add r2, #0x8
+ add r2, r2, r1
+ ldr r1, [sp, #0x4]
+ add r0, sp, #0x18
+ add r1, r1, r2
+ mov r2, #0x0
+ blx FS_SeekFile
+ ldr r0, [sp, #0x78]
+ cmp r0, #0x0
+ bne _020063D6
+ ldr r1, [sp, #0xc]
+ ldr r0, [sp, #0x10]
+ sub r0, r1, r0
+_020063D6:
+ str r0, [sp, #0x14]
+ cmp r0, #0x0
+ bne _020063E0
+ bl ErrorHandling
+_020063E0:
+ ldr r1, [sp, #0x0]
+ ldr r2, [sp, #0x14]
+ add r0, sp, #0x18
+ blx FS_ReadFile
+ add r0, sp, #0x18
+ blx FS_CloseFile
+ add sp, #0x60
+ pop {r3-r7, pc}
+
+ thumb_func_start LoadFileIntoMemory
+LoadFileIntoMemory: ; 0x020063F4
+ push {r3-r7, lr}
+ sub sp, #0x60
+ add r5, r1, #0x0
+ mov r1, #0x0
+ add r4, r0, #0x0
+ str r1, [sp, #0x14]
+ str r1, [sp, #0x10]
+ str r1, [sp, #0xc]
+ add r0, sp, #0x8
+ strh r1, [r0, #0x0]
+ add r0, sp, #0x18
+ str r2, [sp, #0x0]
+ str r3, [sp, #0x4]
+ blx FS_InitFile
+ add r0, sp, #0x18
+ add r1, r4, #0x0
+ blx FS_OpenFile
+ add r0, sp, #0x18
+ mov r1, #0xc
+ mov r2, #0x0
+ blx FS_SeekFile
+ add r0, sp, #0x18
+ add r1, sp, #0x14
+ mov r2, #0x2
+ blx FS_ReadFile
+ ldr r4, [sp, #0x14]
+ add r0, sp, #0x18
+ add r1, r4, #0x4
+ mov r2, #0x0
+ blx FS_SeekFile
+ add r0, sp, #0x18
+ add r1, sp, #0x14
+ mov r2, #0x4
+ blx FS_ReadFile
+ add r0, sp, #0x18
+ add r1, sp, #0x8
+ mov r2, #0x2
+ blx FS_ReadFile
+ add r0, sp, #0x8
+ ldrh r0, [r0, #0x0]
+ cmp r0, r5
+ bgt _0200645A
+ bl ErrorHandling
+_0200645A:
+ ldr r0, [sp, #0x14]
+ mov r2, #0x0
+ add r6, r4, r0
+ add r0, sp, #0x18
+ add r1, r6, #0x4
+ blx FS_SeekFile
+ add r0, sp, #0x18
+ add r1, sp, #0x14
+ mov r2, #0x4
+ blx FS_ReadFile
+ add r4, #0xc
+ lsl r1, r5, #0x3
+ add r0, sp, #0x18
+ add r1, r4, r1
+ mov r2, #0x0
+ ldr r7, [sp, #0x14]
+ blx FS_SeekFile
+ add r0, sp, #0x18
+ add r1, sp, #0x10
+ mov r2, #0x4
+ blx FS_ReadFile
+ add r0, sp, #0x18
+ add r1, sp, #0xc
+ mov r2, #0x4
+ blx FS_ReadFile
+ add r2, r6, r7
+ ldr r1, [sp, #0x10]
+ add r2, #0x8
+ add r2, r2, r1
+ ldr r1, [sp, #0x4]
+ add r0, sp, #0x18
+ add r1, r1, r2
+ mov r2, #0x0
+ blx FS_SeekFile
+ ldr r0, [sp, #0x78]
+ cmp r0, #0x0
+ bne _020064B6
+ ldr r1, [sp, #0xc]
+ ldr r0, [sp, #0x10]
+ sub r0, r1, r0
+_020064B6:
+ str r0, [sp, #0x14]
+ cmp r0, #0x0
+ bne _020064C0
+ bl ErrorHandling
+_020064C0:
+ ldr r0, [sp, #0x7c]
+ cmp r0, #0x0
+ bne _020064D0
+ ldr r0, [sp, #0x0]
+ ldr r1, [sp, #0x14]
+ bl FUN_02016998
+ b _020064D8
+_020064D0:
+ ldr r0, [sp, #0x0]
+ ldr r1, [sp, #0x14]
+ bl FUN_020169D8
+_020064D8:
+ add r4, r0, #0x0
+ ldr r2, [sp, #0x14]
+ add r0, sp, #0x18
+ add r1, r4, #0x0
+ blx FS_ReadFile
+ add r0, sp, #0x18
+ blx FS_CloseFile
+ add r0, r4, #0x0
+ add sp, #0x60
+ pop {r3-r7, pc}
+
+ thumb_func_start LoadFromNARC
+LoadFromNARC: ; 0x020064F0
+ push {r3-r4, lr}
+ sub sp, #0x4
+ mov r3, #0x0
+ lsl r4, r1, #0x2
+ ldr r1, _02006508 ; =0x021058A0
+ str r3, [sp, #0x0]
+ ldr r1, [r1, r4]
+ bl ReadNARCFile
+ add sp, #0x4
+ pop {r3-r4, pc}
+ nop
+_02006508: .word 0x021058A0
+
+ thumb_func_start LoadFromNarc_2
+LoadFromNarc_2: ; 0x0200650C
+ push {r4, lr}
+ sub sp, #0x8
+ mov r3, #0x0
+ str r3, [sp, #0x0]
+ lsl r4, r0, #0x2
+ ldr r0, _02006524 ; =0x021058A0
+ str r3, [sp, #0x4]
+ ldr r0, [r0, r4]
+ bl LoadFileIntoMemory
+ add sp, #0x8
+ pop {r4, pc}
+ .balign 4
+_02006524: .word 0x021058A0
+
+ thumb_func_start FUN_02006528
+FUN_02006528: ; 0x02006528
+ push {r4, lr}
+ sub sp, #0x8
+ mov r3, #0x0
+ str r3, [sp, #0x0]
+ mov r4, #0x1
+ str r4, [sp, #0x4]
+ lsl r4, r0, #0x2
+ ldr r0, _02006544 ; =0x021058A0
+ ldr r0, [r0, r4]
+ bl LoadFileIntoMemory
+ add sp, #0x8
+ pop {r4, pc}
+ nop
+_02006544: .word 0x021058A0
+
+ thumb_func_start FUN_02006548
+FUN_02006548: ; 0x02006548
+ push {r3-r4, lr}
+ sub sp, #0x4
+ ldr r4, [sp, #0x10]
+ str r4, [sp, #0x0]
+ lsl r4, r1, #0x2
+ ldr r1, _02006560 ; =0x021058A0
+ ldr r1, [r1, r4]
+ bl ReadNARCFile
+ add sp, #0x4
+ pop {r3-r4, pc}
+ nop
+_02006560: .word 0x021058A0
+
+ thumb_func_start FUN_02006564
+FUN_02006564: ; 0x02006564
+ push {r4, lr}
+ sub sp, #0x8
+ ldr r4, [sp, #0x10]
+ str r4, [sp, #0x0]
+ mov r4, #0x0
+ str r4, [sp, #0x4]
+ lsl r4, r0, #0x2
+ ldr r0, _02006580 ; =0x021058A0
+ ldr r0, [r0, r4]
+ bl LoadFileIntoMemory
+ add sp, #0x8
+ pop {r4, pc}
+ nop
+_02006580: .word 0x021058A0
+
+ thumb_func_start FUN_02006584
+FUN_02006584: ; 0x02006584
+ push {r4, lr}
+ sub sp, #0x8
+ ldr r4, [sp, #0x10]
+ str r4, [sp, #0x0]
+ mov r4, #0x1
+ str r4, [sp, #0x4]
+ lsl r4, r0, #0x2
+ ldr r0, _020065A0 ; =0x021058A0
+ ldr r0, [r0, r4]
+ bl LoadFileIntoMemory
+ add sp, #0x8
+ pop {r4, pc}
+ nop
+_020065A0: .word 0x021058A0
+
+ thumb_func_start LoadFromNARC_7
+LoadFromNARC_7: ; 0x020065A4
+ push {r3-r7, lr}
+ sub sp, #0x58
+ add r5, r1, #0x0
+ mov r1, #0x0
+ add r4, r0, #0x0
+ str r1, [sp, #0xc]
+ str r1, [sp, #0x8]
+ str r1, [sp, #0x4]
+ add r0, sp, #0x0
+ strh r1, [r0, #0x0]
+ add r0, sp, #0x10
+ blx FS_InitFile
+ ldr r1, _0200666C ; =0x021058A0
+ lsl r2, r4, #0x2
+ ldr r1, [r1, r2]
+ add r0, sp, #0x10
+ blx FS_OpenFile
+ add r0, sp, #0x10
+ mov r1, #0xc
+ mov r2, #0x0
+ blx FS_SeekFile
+ add r0, sp, #0x10
+ add r1, sp, #0xc
+ mov r2, #0x2
+ blx FS_ReadFile
+ ldr r4, [sp, #0xc]
+ add r0, sp, #0x10
+ add r1, r4, #0x4
+ mov r2, #0x0
+ blx FS_SeekFile
+ add r0, sp, #0x10
+ add r1, sp, #0xc
+ mov r2, #0x4
+ blx FS_ReadFile
+ add r0, sp, #0x10
+ add r1, sp, #0x0
+ mov r2, #0x2
+ blx FS_ReadFile
+ add r0, sp, #0x0
+ ldrh r0, [r0, #0x0]
+ cmp r0, r5
+ bgt _0200660A
+ bl ErrorHandling
+_0200660A:
+ ldr r0, [sp, #0xc]
+ mov r2, #0x0
+ add r6, r4, r0
+ add r0, sp, #0x10
+ add r1, r6, #0x4
+ blx FS_SeekFile
+ add r0, sp, #0x10
+ add r1, sp, #0xc
+ mov r2, #0x4
+ blx FS_ReadFile
+ add r4, #0xc
+ lsl r1, r5, #0x3
+ add r0, sp, #0x10
+ add r1, r4, r1
+ mov r2, #0x0
+ ldr r7, [sp, #0xc]
+ blx FS_SeekFile
+ add r0, sp, #0x10
+ add r1, sp, #0x8
+ mov r2, #0x4
+ blx FS_ReadFile
+ add r0, sp, #0x10
+ add r1, sp, #0x4
+ mov r2, #0x4
+ blx FS_ReadFile
+ add r2, r6, r7
+ ldr r1, [sp, #0x8]
+ add r2, #0x8
+ add r1, r2, r1
+ add r0, sp, #0x10
+ mov r2, #0x0
+ blx FS_SeekFile
+ ldr r1, [sp, #0x4]
+ ldr r0, [sp, #0x8]
+ sub r0, r1, r0
+ str r0, [sp, #0xc]
+ bne _02006664
+ bl ErrorHandling
+_02006664:
+ ldr r0, [sp, #0xc]
+ add sp, #0x58
+ pop {r3-r7, pc}
+ nop
+_0200666C: .word 0x021058A0
+
+ thumb_func_start FUN_02006670
+FUN_02006670: ; 0x02006670
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, r1, #0x0
+ mov r1, #0x54
+ bl FUN_02016998
+ add r4, r0, #0x0
+ beq _020066EC
+ mov r1, #0x0
+ str r1, [r4, #0x48]
+ blx FS_InitFile
+ ldr r1, _020066F0 ; =0x021058A0
+ lsl r2, r5, #0x2
+ ldr r1, [r1, r2]
+ add r0, r4, #0x0
+ blx FS_OpenFile
+ add r0, r4, #0x0
+ mov r1, #0xc
+ mov r2, #0x0
+ blx FS_SeekFile
+ add r1, r4, #0x0
+ add r0, r4, #0x0
+ add r1, #0x48
+ mov r2, #0x2
+ blx FS_ReadFile
+ ldr r1, [r4, #0x48]
+ add r0, r4, #0x0
+ add r1, r1, #0x4
+ mov r2, #0x0
+ blx FS_SeekFile
+ add r0, r4, #0x0
+ add r1, sp, #0x0
+ mov r2, #0x4
+ blx FS_ReadFile
+ add r1, r4, #0x0
+ add r0, r4, #0x0
+ add r1, #0x50
+ mov r2, #0x2
+ blx FS_ReadFile
+ ldr r1, [r4, #0x48]
+ ldr r0, [sp, #0x0]
+ mov r2, #0x0
+ add r5, r1, r0
+ add r0, r4, #0x0
+ add r1, r5, #0x4
+ blx FS_SeekFile
+ add r0, r4, #0x0
+ add r1, sp, #0x0
+ mov r2, #0x4
+ blx FS_ReadFile
+ ldr r0, [sp, #0x0]
+ add r0, r5, r0
+ str r0, [r4, #0x4c]
+_020066EC:
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+_020066F0: .word 0x021058A0
+
+ thumb_func_start FUN_020066F4
+FUN_020066F4: ; 0x020066F4
+ push {r4, lr}
+ add r4, r0, #0x0
+ blx FS_CloseFile
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r4, pc}
+
+ thumb_func_start FUN_02006704
+FUN_02006704: ; 0x02006704
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ add r0, #0x50
+ ldrh r0, [r0, #0x0]
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ cmp r0, r4
+ bhi _0200671A
+ bl ErrorHandling
+_0200671A:
+ ldr r2, [r5, #0x48]
+ lsl r1, r4, #0x3
+ add r2, #0xc
+ add r1, r2, r1
+ add r0, r5, #0x0
+ mov r2, #0x0
+ blx FS_SeekFile
+ add r0, r5, #0x0
+ add r1, sp, #0x4
+ mov r2, #0x4
+ blx FS_ReadFile
+ add r0, r5, #0x0
+ add r1, sp, #0x0
+ mov r2, #0x4
+ blx FS_ReadFile
+ ldr r2, [r5, #0x4c]
+ ldr r1, [sp, #0x4]
+ add r2, #0x8
+ add r1, r2, r1
+ add r0, r5, #0x0
+ mov r2, #0x0
+ blx FS_SeekFile
+ ldr r2, [sp, #0x0]
+ ldr r1, [sp, #0x4]
+ add r0, r6, #0x0
+ sub r1, r2, r1
+ bl FUN_02016998
+ add r4, r0, #0x0
+ beq _0200676C
+ ldr r3, [sp, #0x0]
+ ldr r2, [sp, #0x4]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ sub r2, r3, r2
+ blx FS_ReadFile
+_0200676C:
+ add r0, r4, #0x0
+ add sp, #0x8
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02006774
+FUN_02006774: ; 0x02006774
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ add r0, #0x50
+ ldrh r0, [r0, #0x0]
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ cmp r0, r4
+ bhi _0200678A
+ bl ErrorHandling
+_0200678A:
+ ldr r2, [r5, #0x48]
+ lsl r1, r4, #0x3
+ add r2, #0xc
+ add r1, r2, r1
+ add r0, r5, #0x0
+ mov r2, #0x0
+ blx FS_SeekFile
+ add r0, r5, #0x0
+ add r1, sp, #0x4
+ mov r2, #0x4
+ blx FS_ReadFile
+ add r0, r5, #0x0
+ add r1, sp, #0x0
+ mov r2, #0x4
+ blx FS_ReadFile
+ ldr r2, [r5, #0x4c]
+ ldr r1, [sp, #0x4]
+ add r2, #0x8
+ add r1, r2, r1
+ add r0, r5, #0x0
+ mov r2, #0x0
+ blx FS_SeekFile
+ ldr r3, [sp, #0x0]
+ ldr r2, [sp, #0x4]
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ sub r2, r3, r2
+ blx FS_ReadFile
+ add sp, #0x8
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_020067D0
+FUN_020067D0: ; 0x020067D0
+ push {r3-r5, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ add r0, #0x50
+ ldrh r0, [r0, #0x0]
+ add r4, r1, #0x0
+ cmp r0, r4
+ bhi _020067E4
+ bl ErrorHandling
+_020067E4:
+ ldr r2, [r5, #0x48]
+ lsl r1, r4, #0x3
+ add r2, #0xc
+ add r1, r2, r1
+ add r0, r5, #0x0
+ mov r2, #0x0
+ blx FS_SeekFile
+ add r0, r5, #0x0
+ add r1, sp, #0x4
+ mov r2, #0x4
+ blx FS_ReadFile
+ add r0, r5, #0x0
+ add r1, sp, #0x0
+ mov r2, #0x4
+ blx FS_ReadFile
+ ldr r1, [sp, #0x0]
+ ldr r0, [sp, #0x4]
+ sub r0, r1, r0
+ add sp, #0x8
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02006814
+FUN_02006814: ; 0x02006814
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r0, #0x50
+ ldrh r0, [r0, #0x0]
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ add r7, r3, #0x0
+ cmp r0, r4
+ bhi _0200682A
+ bl ErrorHandling
+_0200682A:
+ ldr r2, [r5, #0x48]
+ lsl r1, r4, #0x3
+ add r2, #0xc
+ add r1, r2, r1
+ add r0, r5, #0x0
+ mov r2, #0x0
+ blx FS_SeekFile
+ add r0, r5, #0x0
+ add r1, sp, #0x0
+ mov r2, #0x4
+ blx FS_ReadFile
+ ldr r2, [r5, #0x4c]
+ ldr r1, [sp, #0x0]
+ add r2, #0x8
+ add r1, r2, r1
+ add r0, r5, #0x0
+ add r1, r6, r1
+ mov r2, #0x0
+ blx FS_SeekFile
+ ldr r1, [sp, #0x18]
+ add r0, r5, #0x0
+ add r2, r7, #0x0
+ blx FS_ReadFile
+ pop {r3-r7, pc}
+ .balign 4
diff --git a/asm/gap1.s b/asm/gap1.s
deleted file mode 100644
index b71ccde3..00000000
--- a/asm/gap1.s
+++ /dev/null
@@ -1,4 +0,0 @@
- .section .text
- .rept 0x1E0
- .byte 0xFF
- .endr
diff --git a/asm/gap2.s b/asm/gap2.s
deleted file mode 100644
index 4af77b6d..00000000
--- a/asm/gap2.s
+++ /dev/null
@@ -1,4 +0,0 @@
- .text
- .rept 0x336400-0x33631c
- .byte 255
- .endr
diff --git a/asm/macros/function.inc b/asm/macros/function.inc
index 67fb373a..6b9e5f40 100644
--- a/asm/macros/function.inc
+++ b/asm/macros/function.inc
@@ -1,8 +1,7 @@
.macro arm_func_start name
- .align 2, 0
+ .balign 4, 0
.global \name
.arm
- .type \name, function
.endm
.macro arm_func_end name
@@ -10,18 +9,14 @@
.endm
.macro thumb_func_start name
- .align 2, 0
+ .balign 4, 0
.global \name
.thumb
- .thumb_func
- .type \name, function
.endm
.macro non_word_aligned_thumb_func_start name
.global \name
.thumb
- .thumb_func
- .type \name, function
.endm
.macro thumb_func_end name
diff --git a/asm/main.s b/asm/main.s
deleted file mode 100644
index 8e72e8e1..00000000
--- a/asm/main.s
+++ /dev/null
@@ -1,9 +0,0 @@
-/* main.s TODO: Disassemble */
- .include "asm/macros.inc"
-
- .section .text
-
- thumb_func_start NitroMain
-NitroMain:
- .incbin "baserom.nds", 0x4C54, 0x1A0
- thumb_func_end NitroMain
diff --git a/asm/rom1.5.s b/asm/rom1.5.s
new file mode 100644
index 00000000..fffa35a6
--- /dev/null
+++ b/asm/rom1.5.s
@@ -0,0 +1,7 @@
+/* rom1.5.s TODO: Disassemble */
+ .include "asm/macros.inc"
+ .section .text
+
+ arm_func_start FUN_0208AC14
+FUN_0208AC14:
+ .incbin "baserom.nds", 0x8EC14, 0x3EFF8
diff --git a/asm/rom2.s b/asm/rom2.s
index 26636dae..bcd66a51 100644
--- a/asm/rom2.s
+++ b/asm/rom2.s
@@ -1,13 +1,150 @@
-/* rom.s TODO: Disassemble */
+/* rom2.s TODO: Disassemble */
+ .include "asm/macros.inc"
-.section .text
+ .section .text
-.incbin "baserom.nds", 0x4E0C, 0xEB7C0
+ .incbin "baserom.nds", 0xD9150, 0x16AE0
- .global sub_20EC5CC
-sub_20EC5CC:
-.incbin "baserom.nds", 0xF05CC, 0xC8
+ arm_func_start _ll_mul
+_ll_mul: ; 0x020EBC30
+ stmdb sp!, {r4, r5, lr}
+ umull r5, r4, r0, r2
+ mla r4, r0, r3, r4
+ mla r4, r2, r1, r4
+ mov r1, r4
+ mov r0, r5
+ ldmia sp!, {r4, r5, lr}
+ bx lr
- .global sub_20EC694
-sub_20EC694:
-.incbin "baserom.nds", 0xF0694, 0x1b090
+ arm_func_start _ll_shl
+_ll_shl: ; 0x020EBC50
+ ands r2, r2, #0x3F
+ bxeq lr
+ subs r3, r2, #0x20
+ bge _020EBC74
+ rsb r3, r2, #0x20
+ mov r1, r1, lsl r2
+ orr r1, r1, r0, lsr r3
+ mov r0, r0, lsl r2
+ bx lr
+_020EBC74:
+ mov r1, r0, lsl r3
+ mov r0, #0x0
+ bx lr
+
+ arm_func_start _s32_div_f
+_s32_div_f: ; 0x20EBC80
+ ; Test whether the args have different signs
+ eor ip, r0, r1
+ and ip, ip, #0x80000000
+ ; Test the sign of the numerator, and make it positive
+ cmp r0, #0x0
+ rsblt r0, r0, #0x0
+ addlt ip, ip, #1
+ ; Make the denominator positive, also test for div0
+ cmp r1, #0x0
+ rsblt r1, r1, #0x0
+ beq _020EBE78
+ ; If the numerator is less than the denominator, return (0, numerator)
+ cmp r0, r1
+ movcc r1, r0
+ movcc r0, #0x0
+ bcc _020EBE78
+ ; Do the actual division
+ mov r2, #0x1c
+ mov r3, r0, lsr #0x4
+ cmp r1, r3, lsr #0xc
+ suble r2, r2, #0x10
+ movle r3, r3, lsr #0x10
+ cmp r1, r3, lsr #0x4
+ suble r2, r2, #0x8
+ movle r3, r3, lsr #0x8
+ cmp r1, r3
+ suble r2, r2, #0x4
+ movle r3, r3, lsr #0x4
+ mov r0, r0, lsl r2
+ rsb r1, r1, #0x0
+ adds r0, r0, r0
+ add r2, r2, r2, lsl #0x1
+ add pc, pc, r2, lsl #0x2
+ nop
+ .rept 32
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ .endr
+ mov r1, r3
+_020EBE78:
+ ; If the signs differed originally, negate quotient
+ ands r3, ip, #0x80000000
+ rsbne r0, r0, #0x0
+ ; If the numerator was negative, negate remainder
+ ands r3, ip, #0x1
+ rsbne r1, r1, #0x0
+ bx lr
+
+; required to make the linker happy :
+
+ arm_func_start _u32_div_f
+_u32_div_f: ; 0x020EBE8C
+ cmp r1, #0x0
+ bxeq lr ; About as wrong as we can be
+ cmp r0, r1
+ movcc r1, r0
+ movcc r0, #0x0
+ bxcc lr
+ mov r2, #0x1c
+ mov r3, r0, lsr #0x4
+ cmp r1, r3, lsr #0xc
+ suble r2, r2, #0x10
+ movle r3, r3, lsr #0x10
+ cmp r1, r3, lsr #0x4
+ suble r2, r2, #0x8
+ movle r3, r3, lsr #0x8
+ cmp r1, r3
+ suble r2, r2, #0x4
+ movle r3, r3, lsr #0x4
+ mov r0, r0, lsl r2
+ rsb r1, r1, #0x0
+ adds r0, r0, r0
+ add r2, r2, r2, lsl #0x1
+ add pc, pc, r2, lsl #0x2
+ nop
+ .rept 32
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ .endr
+ mov r1, r3
+ bx lr
+
+ .incbin "baserom.nds", 0xF0070, 0x55C
+
+ arm_func_start _fp_init
+_fp_init: ; 0x020EC5CC
+ bx lr
+
+ arm_func_start sys_writec
+sys_writec: ; 0x020EC5D0
+ str lr, [sp, #-4]!
+ mov r1, r0
+ mov r0, #0x3
+ swi 0x123456
+ ldr pc, [sp], #0x4
+
+ arm_func_start sys_readc
+sys_readc: ; 0x020EC5E4
+ str lr, [sp, #-4]!
+ mov r1, #0x0
+ mov r0, #0x7
+ swi 0x123456
+ ldr pc, [sp], #0x4
+
+ .incbin "baserom.nds", 0xF05F8, 0x9C
+
+ arm_func_start __call_static_initializers
+__call_static_initializers: ; 0x020EC694
+.incbin "baserom.nds", 0xF0694, 0x7C
+
+ .section .data
+.incbin "baserom.nds", 0xF0710, 0x3F8
diff --git a/asm/rom2_2.s b/asm/rom2_2.s
new file mode 100644
index 00000000..0682a6b0
--- /dev/null
+++ b/asm/rom2_2.s
@@ -0,0 +1,762 @@
+.include "asm/macros.inc"
+.include "global.inc"
+
+/* rom2.s TODO: Disassemble */
+
+.section .data
+
+.incbin "baserom.nds", 0xF0B50, 0x6A0C
+
+ .global gScriptCmdTable
+gScriptCmdTable: ; 0x020F355C
+ .word FUN_020399A0
+ .word FUN_020399A4
+ .word FUN_020399A8
+ .word FUN_020399B4
+ .word FUN_02039A28
+ .word FUN_02039A40
+ .word FUN_02039A5C
+ .word FUN_02039A78
+ .word FUN_02039A90
+ .word FUN_02039AAC
+ .word FUN_02039ACC
+ .word FUN_02039AF8
+ .word FUN_02039B28
+ .word FUN_02039B50
+ .word FUN_02039B78
+ .word FUN_02039BA0
+ .word FUN_02039BBC
+ .word FUN_02039BDC
+ .word FUN_02039C08
+ .word FUN_02039C40
+ .word FUN_02039C78
+ .word FUN_02039CE4
+ .word FUN_02039CF8
+ .word FUN_02039D10
+ .word FUN_02039D48
+ .word FUN_02039D78
+ .word FUN_02039DAC
+ .word FUN_02039DC4
+ .word FUN_02039DD0
+ .word FUN_02039E04
+ .word FUN_02039E38
+ .word FUN_02039E50
+ .word FUN_02039E68
+ .word FUN_02039E84
+ .word FUN_02039EC0
+ .word FUN_02039EE8
+ .word FUN_02039F0C
+ .word FUN_02039F30
+ .word FUN_02039F58
+ .word FUN_02039F88
+ .word FUN_02039FB8
+ .word FUN_02039FDC
+ .word FUN_0203A00C
+ .word FUN_0203A038
+ .word FUN_0203A2C4
+ .word FUN_0203A304
+ .word FUN_0203A388
+ .word FUN_0203A400
+ .word FUN_0203A45C
+ .word FUN_0203A4D0
+ .word FUN_0203A560
+ .word FUN_0203A590
+ .word FUN_0203A5D8
+ .word FUN_0203A608
+ .word FUN_0203A780
+ .word FUN_0203A830
+ .word FUN_0203A85C
+ .word FUN_0203A878
+ .word FUN_0203A8B8
+ .word FUN_0203A9F0
+ .word FUN_0203AA90
+ .word FUN_0203A630
+ .word FUN_0203AAA0
+ .word FUN_0203DEA8
+ .word FUN_0203AB8C
+ .word FUN_0203AC14
+ .word FUN_0203AC9C
+ .word FUN_0203AD08
+ .word FUN_0203ADC4
+ .word FUN_0203AE4C
+ .word FUN_0203AED4
+ .word FUN_0203AF34
+ .word FUN_0203AF58
+ .word FUN_020414E0
+ .word FUN_020414FC
+ .word FUN_02041518
+ .word FUN_02041558
+ .word FUN_02041588
+ .word FUN_020415AC
+ .word FUN_020415BC
+ .word FUN_020413E8
+ .word FUN_020413F8
+ .word FUN_0204140C
+ .word FUN_02041424
+ .word FUN_0204143C
+ .word FUN_02041478
+ .word FUN_0204149C
+ .word FUN_020414B8
+ .word FUN_020414CC
+ .word FUN_020415E0
+ .word FUN_02041618
+ .word FUN_02041644
+ .word FUN_02041650
+ .word FUN_02041664
+ .word FUN_0203AFC4
+ .word FUN_0203B148
+ .word FUN_0203B1F0
+ .word FUN_0203B3B0
+ .word FUN_0203B3C0
+ .word FUN_0203B3DC
+ .word FUN_0203B3F8
+ .word FUN_0203B440
+ .word FUN_0203B468
+ .word FUN_0203B500
+ .word FUN_0203B544
+ .word FUN_0203B574
+ .word FUN_0203B5B8
+ .word FUN_0203B640
+ .word FUN_0203B724
+ .word FUN_0203B758
+ .word FUN_0203B7D8
+ .word FUN_02043C6C
+ .word FUN_02043C90
+ .word FUN_02043CE4
+ .word FUN_02043D78
+ .word FUN_02043DC8
+ .word FUN_02043DE0
+ .word FUN_02043A44
+ .word FUN_02043A94
+ .word FUN_02043AAC
+ .word FUN_02043ACC
+ .word FUN_02043AFC
+ .word FUN_02043B28
+ .word FUN_02045784
+ .word FUN_020457DC
+ .word FUN_02045834
+ .word FUN_0204588C
+ .word FUN_020458E4
+ .word FUN_02045918
+ .word FUN_02045950
+ .word FUN_02045954
+ .word FUN_02045958
+ .word FUN_020459AC
+ .word FUN_020459E8
+ .word FUN_02045A3C
+ .word FUN_02045A78
+ .word FUN_02045ACC
+ .word FUN_02045B08
+ .word FUN_02045B44
+ .word FUN_02045B80
+ .word FUN_02045BC8
+ .word FUN_02045C04
+ .word FUN_02045C40
+ .word FUN_02045C7C
+ .word FUN_02045CD4
+ .word FUN_02045D10
+ .word FUN_02045D4C
+ .word FUN_0203B81C
+ .word FUN_0203B85C
+ .word FUN_0203B8A0
+ .word FUN_020442BC
+ .word FUN_02044414
+ .word FUN_0204449C
+ .word FUN_020444F4
+ .word FUN_02044598
+ .word FUN_0203BB34
+ .word FUN_0203BB80
+ .word FUN_0203BB84
+ .word FUN_0203BB88
+ .word FUN_0203BB8C
+ .word FUN_02045264
+ .word FUN_0203BC1C
+ .word FUN_0203BCBC
+ .word FUN_0203BCCC
+ .word FUN_0203BCD8
+ .word FUN_0203BF20
+ .word FUN_0203BF2C
+ .word FUN_0203BF84
+ .word FUN_0203BFEC
+ .word FUN_0203C118
+ .word FUN_0203C12C
+ .word FUN_0203C278
+ .word FUN_0203C2C4
+ .word FUN_0203C2E0
+ .word FUN_0203C2F0
+ .word FUN_0203C300
+ .word FUN_0203C32C
+ .word FUN_0203C33C
+ .word FUN_0203C368
+ .word FUN_0203C3C8
+ .word FUN_0203C3E8
+ .word FUN_0203C430
+ .word FUN_020416A8
+ .word FUN_02041770
+ .word FUN_020417E0
+ .word FUN_02041808
+ .word FUN_0203C4F0
+ .word FUN_0203C520
+ .word FUN_0203C6C4
+ .word FUN_0203C70C
+ .word FUN_0203C730
+ .word FUN_0203C844
+ .word FUN_0203C874
+ .word FUN_0203C8B4
+ .word FUN_0203C8E4
+ .word FUN_0203C930
+ .word FUN_0203C960
+ .word FUN_0203C990
+ .word FUN_0203CA20
+ .word FUN_0203CA2C
+ .word FUN_0203CA5C
+ .word FUN_0203CB08
+ .word FUN_0203CB20
+ .word FUN_0203CB48
+ .word FUN_0203CB60
+ .word FUN_020406CC
+ .word FUN_02040700
+ .word FUN_02040724
+ .word FUN_02040748
+ .word FUN_02040790
+ .word FUN_020407C8
+ .word FUN_02040800
+ .word FUN_0204083C
+ .word FUN_02040874
+ .word FUN_0204091C
+ .word FUN_020409C0
+ .word FUN_020409F8
+ .word FUN_02040A30
+ .word FUN_02040A7C
+ .word FUN_02040B0C
+ .word FUN_02040B5C
+ .word FUN_02040BAC
+ .word FUN_0203CBBC
+ .word FUN_02040BFC
+ .word FUN_02040C34
+ .word FUN_02040C6C
+ .word FUN_02040CA4
+ .word FUN_0203CB70
+ .word FUN_0204185C
+ .word FUN_0204188C
+ .word FUN_0203CBE8
+ .word FUN_02041970
+ .word FUN_020419F8
+ .word FUN_02041A80
+ .word FUN_02041AB4
+ .word FUN_02041AD4
+ .word FUN_02041AE0
+ .word FUN_02041B10
+ .word FUN_02041B70
+ .word FUN_02041B9C
+ .word FUN_02041BC4
+ .word FUN_02041BF0
+ .word FUN_0203CC88
+ .word FUN_0203CD20
+ .word FUN_0203CDB8
+ .word FUN_0203CDC4
+ .word FUN_0203CDD0
+ .word FUN_0203CE00
+ .word FUN_0203FE90
+ .word FUN_0203FEC0
+ .word FUN_0203FF10
+ .word FUN_02040028
+ .word FUN_02040074
+ .word FUN_020400C8
+ .word FUN_0204011C
+ .word FUN_02040170
+ .word FUN_020401CC
+ .word FUN_02040204
+ .word FUN_02040220
+ .word FUN_0204025C
+ .word FUN_02040298
+ .word FUN_020402D4
+ .word FUN_02040304
+ .word FUN_02040340
+ .word FUN_02040370
+ .word FUN_020403A0
+ .word FUN_020403D0
+ .word FUN_02040414
+ .word FUN_02040458
+ .word FUN_020404FC
+ .word FUN_0204052C
+ .word FUN_0204056C
+ .word FUN_02040488
+ .word FUN_020405CC
+ .word FUN_020405F8
+ .word FUN_02040638
+ .word FUN_0204064C
+ .word FUN_02040660
+ .word FUN_020406C0
+ .word FUN_0204059C
+ .word FUN_020405B4
+ .word FUN_02044CE0
+ .word FUN_02044D44
+ .word FUN_0203CE0C
+ .word FUN_0203CE8C
+ .word FUN_0203CEBC
+ .word FUN_0203CF04
+ .word FUN_0203CF34
+ .word FUN_0203CF64
+ .word FUN_0203CF94
+ .word FUN_0203CFC4
+ .word FUN_0203CFC8
+ .word FUN_0203D050
+ .word FUN_0203D0F8
+ .word FUN_0203D134
+ .word FUN_0203D140
+ .word FUN_0203D150
+ .word FUN_0203D178
+ .word FUN_0203D194
+ .word FUN_0203D1A4
+ .word FUN_0203D1C0
+ .word FUN_0203D214
+ .word FUN_0203C054
+ .word FUN_0203C090
+ .word FUN_0203C0CC
+ .word FUN_0203D23C
+ .word FUN_0203D248
+ .word FUN_0203D278
+ .word FUN_0203D2A4
+ .word FUN_0203D2E4
+ .word FUN_0203D330
+ .word FUN_0203D33C
+ .word FUN_0203D36C
+ .word FUN_0203D3A4
+ .word FUN_0203D60C
+ .word FUN_0203D61C
+ .word FUN_0203D3DC
+ .word FUN_0203D448
+ .word FUN_0203D458
+ .word FUN_0203D490
+ .word FUN_0203D528
+ .word FUN_0203D5B0
+ .word FUN_0203D5F8
+ .word FUN_0203D630
+ .word FUN_0203D66C
+ .word FUN_0203D6C4
+ .word FUN_0203D560
+ .word FUN_0203FCF4
+ .word FUN_0203FDBC
+ .word FUN_0203FE08
+ .word FUN_0203FE48
+ .word FUN_0203D868
+ .word FUN_0203D874
+ .word FUN_0203D8A0
+ .word FUN_0203D8D0
+ .word FUN_0203D8E8
+ .word FUN_0203D8EC
+ .word FUN_0203D938
+ .word FUN_0203D948
+ .word FUN_0203D728
+ .word FUN_0203D738
+ .word FUN_0203D774
+ .word FUN_0203D834
+ .word FUN_020453F4
+ .word FUN_02045424
+ .word FUN_02045438
+ .word FUN_02045468
+ .word FUN_02045484
+ .word FUN_020454CC
+ .word FUN_0204552C
+ .word FUN_02045500
+ .word FUN_0204557C
+ .word FUN_02045590
+ .word FUN_020455BC
+ .word FUN_020455D0
+ .word FUN_020455E4
+ .word FUN_02045610
+ .word FUN_02045624
+ .word FUN_02045638
+ .word FUN_02045664
+ .word FUN_0203DC00
+ .word FUN_0203DC58
+ .word FUN_0203DC70
+ .word FUN_0203DC88
+ .word FUN_0203DCA0
+ .word FUN_02043E00
+ .word FUN_02043E20
+ .word FUN_0203DCB8
+ .word FUN_0203DCC8
+ .word FUN_0203DCD8
+ .word FUN_0203DCE8
+ .word FUN_0203DCF8
+ .word FUN_0203DD08
+ .word FUN_0203DD18
+ .word FUN_0203DD34
+ .word FUN_02044B00
+ .word FUN_0203C460
+ .word FUN_0203C4B0
+ .word FUN_0203D958
+ .word FUN_02040D04
+ .word FUN_02040D7C
+ .word FUN_02042B0C
+ .word FUN_02042B40
+ .word FUN_02042B74
+ .word FUN_02042BA8
+ .word FUN_02042BDC
+ .word FUN_02042C10
+ .word FUN_02042C44
+ .word FUN_02042C8C
+ .word FUN_02042CBC
+ .word FUN_0203D998
+ .word FUN_0203D9E8
+ .word FUN_0203DA78
+ .word FUN_0203DAB0
+ .word FUN_0203DAE8
+ .word FUN_0203DB38
+ .word FUN_0203DB88
+ .word FUN_0203AB44
+ .word FUN_0203AB74
+ .word FUN_0203DBD4
+ .word FUN_0203A484
+ .word FUN_0203B8E4
+ .word FUN_0203B944
+ .word FUN_0203B968
+ .word FUN_0203B9B4
+ .word FUN_0203BA3C
+ .word FUN_0203BAB0
+ .word FUN_0203BAF4
+ .word FUN_0204434C
+ .word FUN_020443A8
+ .word FUN_02044B2C
+ .word FUN_02044B84
+ .word FUN_02044C0C
+ .word FUN_02044C88
+ .word FUN_0203DD60
+ .word FUN_0203DE00
+ .word FUN_0203DE4C
+ .word FUN_0203DE58
+ .word FUN_0203DE80
+ .word FUN_02043CB4
+ .word FUN_02043E9C
+ .word FUN_02044120
+ .word FUN_02044138
+ .word FUN_0204413C
+ .word FUN_02043E50
+ .word FUN_02043E68
+ .word FUN_02043EFC
+ .word FUN_02043D28
+ .word FUN_0203DD50
+ .word FUN_02044140
+ .word FUN_02043F50
+ .word FUN_02043FA0
+ .word FUN_02043FF4
+ .word FUN_0203DEC4
+ .word FUN_0203DEF8
+ .word FUN_0203DF2C
+ .word FUN_0203DF38
+ .word FUN_0203DF64
+ .word FUN_0203DF84
+ .word FUN_0203DFA8
+ .word FUN_0203DFE0
+ .word FUN_0204488C
+ .word FUN_020448D4
+ .word FUN_020449A4
+ .word FUN_02044034
+ .word FUN_0203B618
+ .word FUN_020440C0
+ .word FUN_020440F0
+ .word FUN_02044F58
+ .word FUN_0203E018
+ .word FUN_0203E054
+ .word FUN_0203E078
+ .word FUN_0203E0CC
+ .word FUN_0203E120
+ .word FUN_02045D88
+ .word FUN_02045DD0
+ .word FUN_02044D8C
+ .word FUN_02044E34
+ .word FUN_02044E78
+ .word FUN_02040E4C
+ .word FUN_0203E138
+ .word FUN_0203E168
+ .word FUN_0203E254
+ .word FUN_02045678
+ .word FUN_020456D4
+ .word FUN_0204572C
+ .word FUN_0203E258
+ .word FUN_0203E29C
+ .word FUN_0203E2F8
+ .word FUN_0203E35C
+ .word FUN_0203E38C
+ .word FUN_0203C174
+ .word FUN_0203C1AC
+ .word FUN_0203C200
+ .word FUN_02042354
+ .word FUN_02042364
+ .word FUN_02042394
+ .word FUN_020423B0
+ .word FUN_02042700
+ .word FUN_02042780
+ .word FUN_020427A8
+ .word FUN_020427D0
+ .word FUN_02042864
+ .word FUN_02042894
+ .word FUN_020428E0
+ .word FUN_0203E4F0
+ .word FUN_0203E510
+ .word FUN_0203E568
+ .word FUN_0203E3D0
+ .word FUN_0203E408
+ .word FUN_0203E440
+ .word FUN_0203E470
+ .word FUN_0203E4A0
+ .word FUN_0203E4B0
+ .word FUN_02044ED8
+ .word FUN_0203E4D8
+ .word FUN_02044F20
+ .word FUN_02045268
+ .word FUN_02045398
+ .word FUN_0204539C
+ .word FUN_020452B4
+ .word FUN_02045308
+ .word FUN_0204469C
+ .word FUN_02044658
+ .word FUN_0203BC2C
+ .word FUN_02039A10
+ .word FUN_0203A04C
+ .word FUN_0203A098
+ .word FUN_0203A0FC
+ .word FUN_0203A13C
+ .word FUN_0203A188
+ .word FUN_0203A210
+ .word FUN_0203C7F4
+ .word FUN_0203C820
+ .word FUN_0203E5DC
+ .word FUN_0203C788
+ .word FUN_0203C7E4
+ .word FUN_0203C0FC
+ .word FUN_0203E674
+ .word FUN_0203BD08
+ .word FUN_0203BD28
+ .word FUN_0203BE50
+ .word FUN_0203BECC
+ .word FUN_0203BF00
+ .word FUN_0203A3C4
+ .word FUN_0203E684
+ .word FUN_0203E6B4
+ .word FUN_0203E6C4
+ .word FUN_0203E6FC
+ .word FUN_0203E72C
+ .word FUN_0204478C
+ .word FUN_02044800
+ .word FUN_0203E744
+ .word FUN_02044158
+ .word FUN_0204416C
+ .word FUN_02044198
+ .word FUN_0203E774
+ .word FUN_0203E7F0
+ .word FUN_0203E81C
+ .word FUN_0203E848
+ .word FUN_0203E858
+ .word FUN_02041C38
+ .word FUN_02045E1C
+ .word FUN_02045E20
+ .word FUN_02045EE0
+ .word FUN_02045EE4
+ .word FUN_02045F84
+ .word FUN_02045F88
+ .word FUN_02045F24
+ .word FUN_02045FCC
+ .word FUN_0203E870
+ .word FUN_0203E894
+ .word FUN_0203E8C4
+ .word FUN_0203E8F4
+ .word FUN_0203E928
+ .word FUN_0203E940
+ .word FUN_0203E954
+ .word FUN_0203E968
+ .word FUN_02044FE8
+ .word FUN_0204505C
+ .word FUN_02045104
+ .word FUN_02045170
+ .word FUN_02040EB4
+ .word FUN_0203E9CC
+ .word FUN_0203EA68
+ .word FUN_02041E40
+ .word FUN_02041FDC
+ .word FUN_02042038
+ .word FUN_02042110
+ .word FUN_0203EA90
+ .word FUN_0203EAB0
+ .word FUN_0203EB20
+ .word FUN_0203EB48
+ .word FUN_0203EB88
+ .word FUN_02042D1C
+ .word FUN_02046010
+ .word FUN_0204601C
+ .word FUN_02046028
+ .word FUN_0204602C
+ .word FUN_0203C5BC
+ .word FUN_0203C614
+ .word FUN_0203C680
+ .word FUN_0203EBC8
+ .word FUN_02044A6C
+ .word FUN_02044A94
+ .word FUN_0203EBE4
+ .word FUN_0203ECAC
+ .word FUN_0203ECD8
+ .word FUN_0203ECF4
+ .word FUN_0203ED10
+ .word FUN_02041194
+ .word FUN_020411C4
+ .word FUN_02041340
+ .word FUN_02040964
+ .word FUN_0203ED70
+ .word FUN_0204387C
+ .word FUN_020438D0
+ .word FUN_02043918
+ .word FUN_020439B4
+ .word FUN_0203FE80
+ .word FUN_0203EDA4
+ .word FUN_0203EDC8
+ .word FUN_0203EDE0
+ .word FUN_0203EE08
+ .word FUN_0203EE18
+ .word FUN_0203EE28
+ .word FUN_0203EE58
+ .word FUN_0203EE68
+ .word FUN_0203EE78
+ .word FUN_02040DB4
+ .word FUN_0203EE98
+ .word FUN_0203EED8
+ .word FUN_0203EF58
+ .word FUN_0203F00C
+ .word FUN_0203F020
+ .word FUN_0203F034
+ .word FUN_0203F058
+ .word FUN_0203F07C
+ .word FUN_0203F110
+ .word FUN_0203F174
+ .word FUN_0203F19C
+ .word FUN_0203A288
+ .word FUN_0203F234
+ .word FUN_0203F254
+ .word FUN_0203F26C
+ .word FUN_0203C58C
+ .word FUN_02040DEC
+ .word FUN_0203F2AC
+ .word FUN_02043B84
+ .word FUN_0203F2E4
+ .word FUN_02043C28
+ .word FUN_0203F31C
+ .word FUN_02044730
+ .word FUN_0203F348
+ .word FUN_0203F38C
+ .word FUN_0203F39C
+ .word FUN_0204214C
+ .word FUN_0203F3AC
+ .word FUN_0203F44C
+ .word FUN_0203F418
+ .word FUN_020408BC
+ .word FUN_02044A0C
+ .word FUN_0203F484
+ .word FUN_02041674
+ .word FUN_0203F4D8
+ .word FUN_0203F508
+ .word FUN_0203F5D4
+ .word FUN_0203F604
+ .word FUN_0203F634
+ .word FUN_0203F664
+ .word FUN_0203F6E4
+ .word FUN_0203F720
+ .word FUN_0203BDB8
+ .word FUN_0203BE68
+ .word FUN_0203BE80
+ .word FUN_0203F760
+ .word FUN_0203F7C8
+ .word FUN_0203F80C
+ .word FUN_0203F880
+ .word FUN_0203F924
+ .word FUN_02042950
+ .word FUN_02042980
+ .word FUN_02042998
+ .word FUN_020429B8
+ .word FUN_020429E8
+ .word FUN_02042A18
+ .word FUN_02042A48
+ .word FUN_02042A98
+ .word FUN_0203D7DC
+ .word FUN_0203ACC4
+ .word FUN_0203F8C0
+ .word FUN_0203F954
+ .word FUN_0204190C
+ .word FUN_0203B024
+ .word FUN_0203F9DC
+ .word FUN_0203F988
+ .word FUN_0203F9B0
+ .word FUN_0203B914
+ .word FUN_020453A0
+ .word FUN_0203FA14
+ .word FUN_02043B54
+ .word FUN_02043BD0
+ .word FUN_0203FA58
+ .word FUN_0203B7F0
+ .word FUN_0203FB4C
+ .word FUN_0203B790
+ .word FUN_020413C0
+ .word FUN_0203FB64
+ .word FUN_0203FB94
+ .word FUN_0203FBA0
+ .word FUN_0203FBAC
+ .word FUN_02040EF8
+ .word FUN_0203B2E0
+ .word FUN_0203FBBC
+ .word FUN_0203FC1C
+ .word FUN_020451D0
+ .word FUN_02042000
+ .word FUN_0203AD54
+ .word FUN_0203D4E8
+ .word FUN_0203D920
+ .word FUN_02041B40
+ .word FUN_0203D0A4
+ .word FUN_0203FC58
+ .word FUN_0203CAE8
+ .word FUN_0203A340
+ .word FUN_0203FC80
+ .word FUN_0203FCB0
+ .word FUN_0203FCDC
+ .word FUN_02040F34
+ .word FUN_02040F6C
+ .word FUN_02040FA4
+ .word FUN_02040FDC
+ .word FUN_02041014
+ .word FUN_0204104C
+ .word FUN_02041094
+ .word FUN_020410C8
+ .word FUN_02041100
+ .word FUN_02041138
+ .word FUN_02041174
+ .word FUN_0203AF84
+ .word FUN_0203AFA4
+
+.incbin "baserom.nds", 0xF80A0, 0x12F00
+
+ ; Used in autoload
+ .global SDK_AUTOLOAD_START
+ .global SDK_STATIC_BSS_START
+SDK_AUTOLOAD_START:
+SDK_STATIC_BSS_START: ; 0x02106FA0
+.incbin "baserom.nds", 0x10AFA0, 0x700
+
+ .global UNK_021076A0
+UNK_021076A0:
+.incbin "baserom.nds", 0x10B6A0, 0x60
+
+ .global SDK_AUTOLOAD_LIST
+SDK_AUTOLOAD_LIST: ; 0x02107700
+ .word 0x01FF8000
+ .word 0x00000700
+ .word 0x00000000
+
+ .word 0x027e0000
+ .word 0x00000060
+ .word 0x00000020
+
+ .word 0x02400000
+ .word 0x00000000
+ .word 0x00000000
+
+ .global SDK_AUTOLOAD_LIST_END
+SDK_AUTOLOAD_LIST_END:
diff --git a/asm/rom3.s b/asm/rom3.s
deleted file mode 100644
index 9bbb7b7a..00000000
--- a/asm/rom3.s
+++ /dev/null
@@ -1,5 +0,0 @@
-/* rom3.s TODO: Disassemble */
-
- .section .text
-
- .incbin "baserom.nds", 0x10B724, 0x2016FC
diff --git a/asm/rom_header.s b/asm/rom_header.s
index 9b63d7e5..1fcc794f 100644
--- a/asm/rom_header.s
+++ b/asm/rom_header.s
@@ -37,52 +37,52 @@ RomVersion:
.global ARM9ROMOffset
ARM9ROMOffset:
- .word _arm9SegmentRomStart
+ .word 0x00004000
.global ARM9EntryAddress
ARM9EntryAddress:
- .word Entry
+ .word 0x02000800
.global ARM9RAMAddress
ARM9RAMAddress:
- .word _arm9SegmentStart
+ .word 0x02000000
.global ARM9CodeSize
ARM9CodeSize:
- .word _arm9SegmentSize
+ .word 0x00107724
.global ARM7ROMOffset
ARM7ROMOffset:
- .word _arm7SegmentRomStart
+ .word 0x0030D000
.global ARM7EntryAddress
ARM7EntryAddress:
- .word Entry_ARM7
+ .word 0x02380000
.global ARM7RAMAddress
ARM7RAMAddress:
- .word _arm7SegmentStart
+ .word 0x02380000
.global ARM7CodeSize
ARM7CodeSize:
- .word _arm7SegmentSize
+ .word 0x0002931C
.global FileNameTableOffset
FileNameTableOffset:
- .word _FileNameTableSegmentRomStart
+ .word 0x00336400
.global FileNameTableSize
FileNameTableSize:
- .word 0x0000157F
+ .word 0x157F
.global FATOffset
FATOffset:
- .word 0x00337A00
+ .word 0x337A00
.global FATSize
FATSize:
- .word 0x00000B20
+ .word 0xB20
.global ARM9OverlayOffset
ARM9OverlayOffset:
- .word 0x0010B800
+ .word 0x10B800
.global ARM9OverlaySize
ARM9OverlaySize:
- .word 0x00000AE0
+ .word 0xAE0
.global ARM7OverlayOffset
ARM7OverlayOffset:
- .word 0x00000000
+ .word 0
.global ARM7OverlaySize
ARM7OverlaySize:
- .word 0x00000000
+ .word 0
.global ROMControlInfo1
ROMControlInfo1:
.word 0x00416657
@@ -91,7 +91,7 @@ ROMControlInfo2:
.word 0x081808F8
.global IconTitleOffset
IconTitleOffset:
- .word 0x00338600
+ .word 0x338600
.global SecureAreaCC
SecureAreaCC:
.short 0x5931
@@ -100,10 +100,12 @@ ROMControlInfo3:
.short 0x0D7E
.global ARM9AutoLoadHook
ARM9AutoLoadHook:
- .word 0x02000A74
+ .extern _start_AutoloadDoneCallback
+ .word _start_AutoloadDoneCallback
.global ARM7AutoLoadHook
ARM7AutoLoadHook:
- .word 0x02380158
+ .extern ARM7AutoLoad
+ .word ARM7AutoLoad
.global SecureAreaDisable
SecureAreaDisable:
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
@@ -147,6 +149,4 @@ HeaderCRC:
.short 0xCA37
/* reserved */
- .global __startup
-__startup:
- .space 160 /* hack so it builds */
+.space 160 /* hack so it builds */
diff --git a/asm/scrcmd.s b/asm/scrcmd.s
new file mode 100644
index 00000000..8468f9f6
--- /dev/null
+++ b/asm/scrcmd.s
@@ -0,0 +1,24605 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ thumb_func_start FUN_020399A0
+FUN_020399A0: ; 0x020399A0
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_020399A4
+FUN_020399A4: ; 0x020399A4
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_020399A8
+FUN_020399A8: ; 0x020399A8
+ push {r3, lr}
+ bl StopScript
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_020399B4
+FUN_020399B4: ; 0x020399B4
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r1, r5, #0x0
+ add r1, #0x80
+ ldr r6, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ bl FUN_020394B8
+ strh r7, [r0, #0x0]
+ ldr r1, _020399E4 ; =FUN_020399E8
+ add r0, r5, #0x0
+ str r4, [r5, #0x64]
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r3-r7, pc}
+ .balign 4
+_020399E4: .word FUN_020399E8
+
+ thumb_func_start FUN_020399E8
+FUN_020399E8: ; 0x020399E8
+ push {r3, lr}
+ add r1, r0, #0x0
+ ldr r1, [r1, #0x64]
+ add r0, #0x80
+ lsl r1, r1, #0x10
+ ldr r0, [r0, #0x0]
+ lsr r1, r1, #0x10
+ bl FUN_020394B8
+ ldrh r1, [r0, #0x0]
+ sub r1, r1, #0x1
+ strh r1, [r0, #0x0]
+ ldrh r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _02039A0A
+ mov r0, #0x1
+ pop {r3, pc}
+_02039A0A:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02039A10
+FUN_02039A10: ; 0x02039A10
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394F0
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02039A28
+FUN_02039A28: ; 0x02039A28
+ ldr r1, [r0, #0x8]
+ add r2, r1, #0x1
+ str r2, [r0, #0x8]
+ ldrb r3, [r1, #0x0]
+ add r1, r2, #0x1
+ str r1, [r0, #0x8]
+ ldrb r2, [r2, #0x0]
+ lsl r1, r3, #0x2
+ add r0, r0, r1
+ str r2, [r0, #0x64]
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02039A40
+FUN_02039A40: ; 0x02039A40
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ ldr r2, [r4, #0x8]
+ add r1, r2, #0x1
+ str r1, [r4, #0x8]
+ ldrb r5, [r2, #0x0]
+ bl ScriptReadWord
+ lsl r1, r5, #0x2
+ add r1, r4, r1
+ str r0, [r1, #0x64]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02039A5C
+FUN_02039A5C: ; 0x02039A5C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r2, [r5, #0x8]
+ add r1, r2, #0x1
+ str r1, [r5, #0x8]
+ ldrb r4, [r2, #0x0]
+ bl ScriptReadWord
+ ldrb r1, [r0, #0x0]
+ lsl r0, r4, #0x2
+ add r0, r5, r0
+ str r1, [r0, #0x64]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02039A78
+FUN_02039A78: ; 0x02039A78
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl ScriptReadWord
+ ldr r2, [r4, #0x8]
+ add r1, r2, #0x1
+ str r1, [r4, #0x8]
+ ldrb r1, [r2, #0x0]
+ strb r1, [r0, #0x0]
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02039A90
+FUN_02039A90: ; 0x02039A90
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl ScriptReadWord
+ ldr r2, [r4, #0x8]
+ add r1, r2, #0x1
+ str r1, [r4, #0x8]
+ ldrb r1, [r2, #0x0]
+ lsl r1, r1, #0x2
+ add r1, r4, r1
+ ldr r1, [r1, #0x64]
+ strb r1, [r0, #0x0]
+ mov r0, #0x0
+ pop {r4, pc}
+
+ thumb_func_start FUN_02039AAC
+FUN_02039AAC: ; 0x02039AAC
+ ldr r1, [r0, #0x8]
+ add r2, r1, #0x1
+ str r2, [r0, #0x8]
+ ldrb r3, [r1, #0x0]
+ add r1, r2, #0x1
+ str r1, [r0, #0x8]
+ ldrb r1, [r2, #0x0]
+ lsl r1, r1, #0x2
+ add r1, r0, r1
+ ldr r2, [r1, #0x64]
+ lsl r1, r3, #0x2
+ add r0, r0, r1
+ str r2, [r0, #0x64]
+ mov r0, #0x0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02039ACC
+FUN_02039ACC: ; 0x02039ACC
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadWord
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadWord
+ ldrb r0, [r0, #0x0]
+ strb r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02039AE4
+FUN_02039AE4: ; 0x02039AE4
+ cmp r0, r1
+ bhs _02039AEC
+ mov r0, #0x0
+ bx lr
+_02039AEC:
+ cmp r0, r1
+ bne _02039AF4
+ mov r0, #0x1
+ bx lr
+_02039AF4:
+ mov r0, #0x2
+ bx lr
+
+ thumb_func_start FUN_02039AF8
+FUN_02039AF8: ; 0x02039AF8
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x8]
+ add r1, r0, #0x1
+ str r1, [r4, #0x8]
+ ldrb r0, [r0, #0x0]
+ add r2, r1, #0x1
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ ldr r0, [r0, #0x64]
+ str r2, [r4, #0x8]
+ ldrb r1, [r1, #0x0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ lsl r1, r1, #0x2
+ add r1, r4, r1
+ ldr r1, [r1, #0x64]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl FUN_02039AE4
+ strb r0, [r4, #0x2]
+ mov r0, #0x0
+ pop {r4, pc}
+
+ thumb_func_start FUN_02039B28
+FUN_02039B28: ; 0x02039B28
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x8]
+ add r1, r0, #0x1
+ str r1, [r4, #0x8]
+ ldrb r0, [r0, #0x0]
+ add r2, r1, #0x1
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ ldr r0, [r0, #0x64]
+ str r2, [r4, #0x8]
+ ldrb r1, [r1, #0x0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_02039AE4
+ strb r0, [r4, #0x2]
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02039B50
+FUN_02039B50: ; 0x02039B50
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ ldr r2, [r4, #0x8]
+ add r1, r2, #0x1
+ str r1, [r4, #0x8]
+ ldrb r1, [r2, #0x0]
+ lsl r1, r1, #0x2
+ add r1, r4, r1
+ ldr r1, [r1, #0x64]
+ lsl r1, r1, #0x18
+ lsr r5, r1, #0x18
+ bl ScriptReadWord
+ ldrb r1, [r0, #0x0]
+ add r0, r5, #0x0
+ bl FUN_02039AE4
+ strb r0, [r4, #0x2]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02039B78
+FUN_02039B78: ; 0x02039B78
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl ScriptReadWord
+ ldr r2, [r4, #0x8]
+ ldrb r0, [r0, #0x0]
+ add r1, r2, #0x1
+ str r1, [r4, #0x8]
+ ldrb r1, [r2, #0x0]
+ lsl r1, r1, #0x2
+ add r1, r4, r1
+ ldr r1, [r1, #0x64]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl FUN_02039AE4
+ strb r0, [r4, #0x2]
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02039BA0
+FUN_02039BA0: ; 0x02039BA0
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl ScriptReadWord
+ ldr r2, [r4, #0x8]
+ ldrb r0, [r0, #0x0]
+ add r1, r2, #0x1
+ str r1, [r4, #0x8]
+ ldrb r1, [r2, #0x0]
+ bl FUN_02039AE4
+ strb r0, [r4, #0x2]
+ mov r0, #0x0
+ pop {r4, pc}
+
+ thumb_func_start FUN_02039BBC
+FUN_02039BBC: ; 0x02039BBC
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadWord
+ ldrb r4, [r0, #0x0]
+ add r0, r5, #0x0
+ bl ScriptReadWord
+ ldrb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ bl FUN_02039AE4
+ strb r0, [r5, #0x2]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02039BDC
+FUN_02039BDC: ; 0x02039BDC
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ ldrh r5, [r0, #0x0]
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02039AE4
+ strb r0, [r4, #0x2]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02039C08
+FUN_02039C08: ; 0x02039C08
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r1, r0, #0x0
+ ldrh r0, [r4, #0x0]
+ ldrh r1, [r1, #0x0]
+ bl FUN_02039AE4
+ strb r0, [r5, #0x2]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02039C40
+FUN_02039C40: ; 0x02039C40
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ add r0, #0x80
+ ldr r5, [r0, #0x0]
+ mov r1, #0x7
+ add r0, r5, #0x0
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0xe
+ bl FUN_02039438
+ add r6, r0, #0x0
+ add r0, r7, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02038EB0
+ str r0, [r6, #0x0]
+ ldrb r0, [r4, #0x0]
+ add r0, r0, #0x1
+ strb r0, [r4, #0x0]
+ mov r0, #0x1
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02039C78
+FUN_02039C78: ; 0x02039C78
+ push {r3-r7, lr}
+ str r0, [sp, #0x0]
+ add r0, #0x80
+ ldr r5, [r0, #0x0]
+ mov r1, #0x5
+ add r0, r5, #0x0
+ bl FUN_02039438
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x7
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0xe
+ bl FUN_02039438
+ add r7, r0, #0x0
+ ldr r0, [sp, #0x0]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ mov r0, #0x1
+ strb r0, [r6, #0x0]
+ add r0, r5, #0x0
+ bl FUN_02038EB0
+ str r0, [r7, #0x0]
+ ldrb r0, [r4, #0x0]
+ ldr r1, _02039CC4 ; =FUN_02039CC8
+ add r0, r0, #0x1
+ strb r0, [r4, #0x0]
+ ldr r0, [sp, #0x0]
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r3-r7, pc}
+ .balign 4
+_02039CC4: .word FUN_02039CC8
+
+ thumb_func_start FUN_02039CC8
+FUN_02039CC8: ; 0x02039CC8
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x5
+ bl FUN_02039438
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _02039CDE
+ mov r0, #0x1
+ pop {r3, pc}
+_02039CDE:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02039CE4
+FUN_02039CE4: ; 0x02039CE4
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x5
+ bl FUN_02039438
+ mov r1, #0x0
+ strb r1, [r0, #0x0]
+ add r0, r1, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_02039CF8
+FUN_02039CF8: ; 0x02039CF8
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl ScriptReadWord
+ add r2, r0, #0x0
+ ldr r1, [r4, #0x8]
+ add r0, r4, #0x0
+ add r1, r1, r2
+ bl ScriptJump
+ mov r0, #0x0
+ pop {r4, pc}
+
+ thumb_func_start FUN_02039D10
+FUN_02039D10: ; 0x02039D10
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xa
+ bl FUN_02039438
+ ldr r1, [r5, #0x8]
+ add r6, r0, #0x0
+ add r0, r1, #0x1
+ str r0, [r5, #0x8]
+ add r0, r5, #0x0
+ ldrb r4, [r1, #0x0]
+ bl ScriptReadWord
+ add r7, r0, #0x0
+ ldr r0, [r6, #0x0]
+ bl FUN_02058448
+ cmp r4, r0
+ bne _02039D44
+ ldr r1, [r5, #0x8]
+ add r0, r5, #0x0
+ add r1, r1, r7
+ bl ScriptJump
+_02039D44:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02039D48
+FUN_02039D48: ; 0x02039D48
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x74]
+ bl FUN_02046534
+ ldr r1, [r5, #0x8]
+ add r6, r0, #0x0
+ add r0, r1, #0x1
+ str r0, [r5, #0x8]
+ ldrb r4, [r1, #0x0]
+ add r0, r5, #0x0
+ bl ScriptReadWord
+ add r2, r0, #0x0
+ cmp r6, r4
+ bne _02039D72
+ ldr r1, [r5, #0x8]
+ add r0, r5, #0x0
+ add r1, r1, r2
+ bl ScriptJump
+_02039D72:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02039D78
+FUN_02039D78: ; 0x02039D78
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x9
+ bl FUN_02039438
+ ldr r1, [r5, #0x8]
+ add r6, r0, #0x0
+ add r0, r1, #0x1
+ str r0, [r5, #0x8]
+ ldrb r4, [r1, #0x0]
+ add r0, r5, #0x0
+ bl ScriptReadWord
+ add r2, r0, #0x0
+ ldr r0, [r6, #0x0]
+ cmp r0, r4
+ bne _02039DA8
+ ldr r1, [r5, #0x8]
+ add r0, r5, #0x0
+ add r1, r1, r2
+ bl ScriptJump
+_02039DA8:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02039DAC
+FUN_02039DAC: ; 0x02039DAC
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl ScriptReadWord
+ add r2, r0, #0x0
+ ldr r1, [r4, #0x8]
+ add r0, r4, #0x0
+ add r1, r1, r2
+ bl ScriptCall
+ mov r0, #0x0
+ pop {r4, pc}
+
+ thumb_func_start FUN_02039DC4
+FUN_02039DC4: ; 0x02039DC4
+ push {r3, lr}
+ bl ScriptReturn
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02039DD0
+FUN_02039DD0: ; 0x02039DD0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r2, [r5, #0x8]
+ add r1, r2, #0x1
+ str r1, [r5, #0x8]
+ ldrb r4, [r2, #0x0]
+ bl ScriptReadWord
+ add r1, r0, #0x0
+ lsl r0, r4, #0x1
+ add r3, r4, r0
+ ldr r0, _02039E00 ; =0x020F34E8
+ ldrb r2, [r5, #0x2]
+ add r0, r0, r3
+ ldrb r0, [r2, r0]
+ cmp r0, #0x1
+ bne _02039DFC
+ ldr r2, [r5, #0x8]
+ add r0, r5, #0x0
+ add r1, r2, r1
+ bl ScriptJump
+_02039DFC:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+_02039E00: .word 0x020F34E8
+
+ thumb_func_start FUN_02039E04
+FUN_02039E04: ; 0x02039E04
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r2, [r5, #0x8]
+ add r1, r2, #0x1
+ str r1, [r5, #0x8]
+ ldrb r4, [r2, #0x0]
+ bl ScriptReadWord
+ add r1, r0, #0x0
+ lsl r0, r4, #0x1
+ add r3, r4, r0
+ ldr r0, _02039E34 ; =0x020F34E8
+ ldrb r2, [r5, #0x2]
+ add r0, r0, r3
+ ldrb r0, [r2, r0]
+ cmp r0, #0x1
+ bne _02039E30
+ ldr r2, [r5, #0x8]
+ add r0, r5, #0x0
+ add r1, r2, r1
+ bl ScriptCall
+_02039E30:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+_02039E34: .word 0x020F34E8
+
+ thumb_func_start FUN_02039E38
+FUN_02039E38: ; 0x02039E38
+ push {r4, lr}
+ add r1, r0, #0x0
+ add r1, #0x80
+ ldr r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0203953C
+ mov r0, #0x0
+ pop {r4, pc}
+
+ thumb_func_start FUN_02039E50
+FUN_02039E50: ; 0x02039E50
+ push {r4, lr}
+ add r1, r0, #0x0
+ add r1, #0x80
+ ldr r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02039550
+ mov r0, #0x0
+ pop {r4, pc}
+
+ thumb_func_start FUN_02039E68
+FUN_02039E68: ; 0x02039E68
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ add r1, r4, #0x0
+ add r1, #0x80
+ ldr r5, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02039528
+ strb r0, [r4, #0x2]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02039E84
+FUN_02039E84: ; 0x02039E84
+ push {r4-r6, lr}
+ add r4, r0, #0x0
+ add r1, r4, #0x0
+ add r1, #0x80
+ ldr r5, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ ldrh r1, [r6, #0x0]
+ add r0, r5, #0x0
+ bl FUN_02039528
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02039EC0
+FUN_02039EC0: ; 0x02039EC0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r1, r5, #0x0
+ add r1, #0x80
+ ldr r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r1, r0, #0x0
+ ldrh r1, [r1, #0x0]
+ add r0, r4, #0x0
+ bl FUN_0203953C
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02039EE8
+FUN_02039EE8: ; 0x02039EE8
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ add r1, r4, #0x0
+ add r1, #0x80
+ ldr r5, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394F0
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0203965C
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02039F0C
+FUN_02039F0C: ; 0x02039F0C
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ add r1, r4, #0x0
+ add r1, #0x80
+ ldr r5, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394F0
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02039678
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02039F30
+FUN_02039F30: ; 0x02039F30
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r1, r5, #0x0
+ add r1, #0x80
+ ldr r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02039640
+ strb r0, [r5, #0x2]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02039F58
+FUN_02039F58: ; 0x02039F58
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ ldrh r1, [r4, #0x0]
+ add r0, r1, r0
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02039F88
+FUN_02039F88: ; 0x02039F88
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ ldrh r1, [r4, #0x0]
+ sub r0, r1, r0
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02039FB8
+FUN_02039FB8: ; 0x02039FB8
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ strh r0, [r5, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02039FDC
+FUN_02039FDC: ; 0x02039FDC
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ ldrh r0, [r0, #0x0]
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203A00C
+FUN_0203A00C: ; 0x0203A00C
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394F0
+ strh r0, [r5, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0203A038
+FUN_0203A038: ; 0x0203A038
+ push {r3, lr}
+ ldr r2, [r0, #0x8]
+ add r1, r2, #0x1
+ str r1, [r0, #0x8]
+ ldrb r2, [r2, #0x0]
+ ldr r1, [r0, #0x78]
+ bl FUN_021E2C24
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_0203A04C
+FUN_0203A04C: ; 0x0203A04C
+ push {r4-r6, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ mov r0, #0x1
+ mov r1, #0x1a
+ add r2, r5, #0x0
+ mov r3, #0x20
+ bl FUN_0200A86C
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ add r2, r6, #0x0
+ bl FUN_021E2C24
+ add r0, r5, #0x0
+ bl FUN_0200A8B8
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0203A098
+FUN_0203A098: ; 0x0203A098
+ push {r3-r6, lr}
+ sub sp, #0x4
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ mov r0, #0x1
+ mov r1, #0x1a
+ add r2, r5, #0x0
+ mov r3, #0x20
+ bl FUN_0200A86C
+ add r5, r0, #0x0
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ add r2, r6, #0x0
+ mov r3, #0x1
+ bl FUN_021E2BD0
+ add r0, r5, #0x0
+ bl FUN_0200A8B8
+ ldr r1, _0203A0F8 ; =FUN_0203A2F0
+ add r0, r4, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ add sp, #0x4
+ pop {r3-r6, pc}
+ nop
+_0203A0F8: .word FUN_0203A2F0
+
+ thumb_func_start FUN_0203A0FC
+FUN_0203A0FC: ; 0x0203A0FC
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ str r0, [sp, #0x0]
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ add r3, r7, #0x0
+ bl FUN_021E2C58
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203A13C
+FUN_0203A13C: ; 0x0203A13C
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ add r3, r7, #0x0
+ bl FUN_021E2C58
+ ldr r1, _0203A184 ; =FUN_0203A2F0
+ add r0, r5, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ add sp, #0x8
+ pop {r3-r7, pc}
+ nop
+_0203A184: .word FUN_0203A2F0
+
+ thumb_func_start FUN_0203A188
+FUN_0203A188: ; 0x0203A188
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ ldr r2, [r5, #0x8]
+ add r1, r2, #0x1
+ str r1, [r5, #0x8]
+ add r1, r5, #0x0
+ add r1, #0x80
+ ldr r1, [r1, #0x0]
+ ldrb r3, [r2, #0x0]
+ add r1, #0xa8
+ ldr r2, [r1, #0x0]
+ cmp r2, #0x0
+ bne _0203A1AA
+ add sp, #0x8
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_0203A1AA:
+ lsl r1, r3, #0x4
+ add r1, r3, r1
+ add r2, #0x90
+ lsl r1, r1, #0x4
+ add r4, r2, r1
+ ldrh r1, [r2, r1]
+ ldr r2, _0203A204 ; =0x0000FFFF
+ cmp r1, r2
+ bne _0203A1E2
+ ldr r2, _0203A208 ; =0x0000022B
+ mov r0, #0x1
+ mov r1, #0x1a
+ mov r3, #0x20
+ bl FUN_0200A86C
+ add r6, r0, #0x0
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldrh r2, [r4, #0x2]
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ mov r3, #0x1
+ bl FUN_021E2BD0
+ add r0, r6, #0x0
+ bl FUN_0200A8B8
+ b _0203A1F4
+_0203A1E2:
+ mov r2, #0x6
+ ldrsh r2, [r4, r2]
+ str r2, [sp, #0x0]
+ mov r2, #0x1
+ str r2, [sp, #0x4]
+ ldrh r2, [r4, #0x2]
+ ldrh r3, [r4, #0x4]
+ bl FUN_021E2C58
+_0203A1F4:
+ ldr r1, _0203A20C ; =FUN_0203A2F0
+ add r0, r5, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ add sp, #0x8
+ pop {r4-r6, pc}
+ nop
+_0203A204: .word 0x0000FFFF
+_0203A208: .word 0x0000022B
+_0203A20C: .word FUN_0203A2F0
+
+ thumb_func_start FUN_0203A210
+FUN_0203A210: ; 0x0203A210
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ add r1, r5, #0x0
+ add r1, #0x80
+ ldr r2, [r5, #0x8]
+ ldr r6, [r1, #0x0]
+ add r1, r2, #0x1
+ str r1, [r5, #0x8]
+ ldrb r4, [r2, #0x0]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ ldr r1, [r5, #0x8]
+ add r2, r0, #0x0
+ add r0, r1, #0x1
+ str r0, [r5, #0x8]
+ ldrb r3, [r1, #0x0]
+ mov r1, #0x0
+ add r0, sp, #0x4
+ strb r1, [r0, #0x0]
+ add r0, sp, #0x4
+ str r0, [sp, #0x0]
+ ldr r0, [r6, #0xc]
+ add r1, r7, #0x0
+ bl FUN_02244210
+ add r6, r0, #0x0
+ add r2, sp, #0x4
+ ldrb r2, [r2, #0x0]
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r4, r2
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+ mov r3, #0x1
+ bl FUN_021E2CBC
+ add r0, r6, #0x0
+ bl FUN_0200AB18
+ ldr r1, _0203A284 ; =FUN_0203A2F0
+ add r0, r5, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ add sp, #0x8
+ pop {r3-r7, pc}
+ nop
+_0203A284: .word FUN_0203A2F0
+
+ thumb_func_start FUN_0203A288
+FUN_0203A288: ; 0x0203A288
+ push {r3-r5, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r4, r0, #0x0
+ add r0, sp, #0x4
+ add r1, r5, #0x0
+ bl FUN_021E2BB8
+ mov r1, #0x3
+ add r0, sp, #0x4
+ strb r1, [r0, #0x2]
+ add r0, sp, #0x4
+ str r0, [sp, #0x0]
+ ldr r1, [r5, #0x78]
+ add r0, r5, #0x0
+ add r2, r4, #0x0
+ mov r3, #0x0
+ bl FUN_021E2BD0
+ ldr r1, _0203A2C0 ; =FUN_0203A2F0
+ add r0, r5, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ add sp, #0x8
+ pop {r3-r5, pc}
+ .balign 4
+_0203A2C0: .word FUN_0203A2F0
+
+ thumb_func_start FUN_0203A2C4
+FUN_0203A2C4: ; 0x0203A2C4
+ push {r3-r4, lr}
+ sub sp, #0x4
+ add r4, r0, #0x0
+ ldr r2, [r4, #0x8]
+ mov r3, #0x1
+ add r1, r2, #0x1
+ str r1, [r4, #0x8]
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ ldrb r2, [r2, #0x0]
+ ldr r1, [r4, #0x78]
+ bl FUN_021E2BD0
+ ldr r1, _0203A2EC ; =FUN_0203A2F0
+ add r0, r4, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ add sp, #0x4
+ pop {r3-r4, pc}
+ .balign 4
+_0203A2EC: .word FUN_0203A2F0
+
+ thumb_func_start FUN_0203A2F0
+FUN_0203A2F0: ; 0x0203A2F0
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x3
+ bl FUN_02039438
+ ldrb r0, [r0, #0x0]
+ bl FUN_020546C8
+ pop {r3, pc}
+
+ thumb_func_start FUN_0203A304
+FUN_0203A304: ; 0x0203A304
+ push {r3-r4, lr}
+ sub sp, #0x4
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r2, r0, #0x0
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ lsl r2, r2, #0x18
+ ldr r1, [r4, #0x78]
+ add r0, r4, #0x0
+ lsr r2, r2, #0x18
+ mov r3, #0x1
+ bl FUN_021E2BD0
+ ldr r1, _0203A33C ; =FUN_0203A2F0
+ add r0, r4, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ add sp, #0x4
+ pop {r3-r4, pc}
+ .balign 4
+_0203A33C: .word FUN_0203A2F0
+
+ thumb_func_start FUN_0203A340
+FUN_0203A340: ; 0x0203A340
+ push {r3-r5, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r4, r0, #0x0
+ add r0, sp, #0x4
+ add r1, r5, #0x0
+ bl FUN_021E2BB8
+ lsl r2, r4, #0x18
+ mov r3, #0x1
+ add r0, sp, #0x4
+ strb r3, [r0, #0x1]
+ add r0, sp, #0x4
+ str r0, [sp, #0x0]
+ ldr r1, [r5, #0x78]
+ add r0, r5, #0x0
+ lsr r2, r2, #0x18
+ bl FUN_021E2BD0
+ ldr r1, _0203A384 ; =FUN_0203A2F0
+ add r0, r5, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ add sp, #0x8
+ pop {r3-r5, pc}
+ .balign 4
+_0203A384: .word FUN_0203A2F0
+
+ thumb_func_start FUN_0203A388
+FUN_0203A388: ; 0x0203A388
+ push {r3-r4, lr}
+ sub sp, #0x4
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r2, r0, #0x0
+ mov r3, #0x0
+ str r3, [sp, #0x0]
+ lsl r2, r2, #0x18
+ ldr r1, [r4, #0x78]
+ add r0, r4, #0x0
+ lsr r2, r2, #0x18
+ bl FUN_021E2BD0
+ ldr r1, _0203A3C0 ; =FUN_0203A2F0
+ add r0, r4, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ add sp, #0x4
+ pop {r3-r4, pc}
+ nop
+_0203A3C0: .word FUN_0203A2F0
+
+ thumb_func_start FUN_0203A3C4
+FUN_0203A3C4: ; 0x0203A3C4
+ push {r3-r4, lr}
+ sub sp, #0x4
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xa
+ bl FUN_02039438
+ ldr r0, [r0, #0x0]
+ bl FUN_02058488
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldr r1, [r4, #0x78]
+ add r0, r4, #0x0
+ mov r3, #0x1
+ bl FUN_021E2BD0
+ ldr r1, _0203A3FC ; =FUN_0203A2F0
+ add r0, r4, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ add sp, #0x4
+ pop {r3-r4, pc}
+ nop
+_0203A3FC: .word FUN_0203A2F0
+
+ thumb_func_start FUN_0203A400
+FUN_0203A400: ; 0x0203A400
+ push {r3-r5, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ ldr r1, [r5, #0x8]
+ add r0, r1, #0x1
+ str r0, [r5, #0x8]
+ ldrb r4, [r1, #0x0]
+ bl FUN_02030F40
+ cmp r0, #0x0
+ bne _0203A428
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldr r1, [r5, #0x78]
+ add r0, r5, #0x0
+ add r2, r4, #0x0
+ mov r3, #0x1
+ bl FUN_021E2BD0
+ b _0203A448
+_0203A428:
+ add r0, sp, #0x4
+ add r1, r5, #0x0
+ bl FUN_021E2BB8
+ mov r1, #0x1
+ add r0, sp, #0x4
+ strb r1, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ add r0, sp, #0x4
+ str r0, [sp, #0x0]
+ ldr r1, [r5, #0x78]
+ add r0, r5, #0x0
+ add r2, r4, #0x0
+ mov r3, #0x0
+ bl FUN_021E2BD0
+_0203A448:
+ ldr r1, _0203A458 ; =FUN_0203A2F0
+ add r0, r5, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ add sp, #0x8
+ pop {r3-r5, pc}
+ nop
+_0203A458: .word FUN_0203A2F0
+
+ thumb_func_start FUN_0203A45C
+FUN_0203A45C: ; 0x0203A45C
+ push {r3, lr}
+ ldr r1, _0203A468 ; =FUN_0203A46C
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+_0203A468: .word FUN_0203A46C
+
+ thumb_func_start FUN_0203A46C
+FUN_0203A46C: ; 0x0203A46C
+ ldr r0, _0203A480 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x3
+ tst r0, r1
+ beq _0203A47A
+ mov r0, #0x1
+ bx lr
+_0203A47A:
+ mov r0, #0x0
+ bx lr
+ nop
+_0203A480: .word 0x021C48B8
+
+ thumb_func_start FUN_0203A484
+FUN_0203A484: ; 0x0203A484
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ str r0, [r4, #0x64]
+ ldr r1, _0203A4A8 ; =FUN_0203A4AC
+ add r0, r4, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r4, pc}
+ nop
+_0203A4A8: .word FUN_0203A4AC
+
+ thumb_func_start FUN_0203A4AC
+FUN_0203A4AC: ; 0x0203A4AC
+ ldr r1, _0203A4CC ; =0x021C48B8
+ ldr r2, [r1, #0x48]
+ mov r1, #0x3
+ tst r1, r2
+ beq _0203A4BA
+ mov r0, #0x1
+ bx lr
+_0203A4BA:
+ ldr r1, [r0, #0x64]
+ sub r1, r1, #0x1
+ str r1, [r0, #0x64]
+ bne _0203A4C6
+ mov r0, #0x1
+ bx lr
+_0203A4C6:
+ mov r0, #0x0
+ bx lr
+ nop
+_0203A4CC: .word 0x021C48B8
+
+ thumb_func_start FUN_0203A4D0
+FUN_0203A4D0: ; 0x0203A4D0
+ push {r3, lr}
+ ldr r1, _0203A4DC ; =FUN_0203A4E0
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+_0203A4DC: .word FUN_0203A4E0
+
+ thumb_func_start FUN_0203A4E0
+FUN_0203A4E0: ; 0x0203A4E0
+ push {r4, lr}
+ ldr r1, _0203A55C ; =0x021C48B8
+ ldr r2, [r1, #0x48]
+ mov r1, #0x3
+ add r3, r2, #0x0
+ tst r3, r1
+ beq _0203A4F2
+ mov r0, #0x1
+ pop {r4, pc}
+_0203A4F2:
+ mov r3, #0x40
+ tst r3, r2
+ beq _0203A506
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x0
+ ldr r0, [r0, #0x38]
+ bl FUN_02055304
+ b _0203A556
+_0203A506:
+ mov r3, #0x80
+ tst r3, r2
+ beq _0203A51A
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x1
+ ldr r0, [r0, #0x38]
+ bl FUN_02055304
+ b _0203A556
+_0203A51A:
+ mov r3, #0x20
+ tst r3, r2
+ beq _0203A52E
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x2
+ ldr r0, [r0, #0x38]
+ bl FUN_02055304
+ b _0203A556
+_0203A52E:
+ mov r3, #0x10
+ add r4, r2, #0x0
+ tst r4, r3
+ beq _0203A542
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x38]
+ bl FUN_02055304
+ b _0203A556
+_0203A542:
+ lsl r1, r3, #0x6
+ tst r1, r2
+ beq _0203A552
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_02039460
+ b _0203A556
+_0203A552:
+ mov r0, #0x0
+ pop {r4, pc}
+_0203A556:
+ mov r0, #0x1
+ pop {r4, pc}
+ nop
+_0203A55C: .word 0x021C48B8
+
+ thumb_func_start FUN_0203A560
+FUN_0203A560: ; 0x0203A560
+ push {r3, lr}
+ ldr r1, _0203A56C ; =FUN_0203A570
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+_0203A56C: .word FUN_0203A570
+
+ thumb_func_start FUN_0203A570
+FUN_0203A570: ; 0x0203A570
+ ldr r0, _0203A58C ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x3
+ tst r0, r1
+ beq _0203A57E
+ mov r0, #0x1
+ bx lr
+_0203A57E:
+ mov r0, #0xf0
+ tst r0, r1
+ beq _0203A588
+ mov r0, #0x1
+ bx lr
+_0203A588:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+_0203A58C: .word 0x021C48B8
+
+ thumb_func_start FUN_0203A590
+FUN_0203A590: ; 0x0203A590
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r4, [r0, #0x0]
+ mov r1, #0x6
+ add r0, r4, #0x0
+ bl FUN_02039438
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_02039438
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x8]
+ mov r2, #0x3
+ bl FUN_020545B8
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_02039438
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl LoadPlayerDataAddress
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02054608
+ mov r0, #0x1
+ strb r0, [r6, #0x0]
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0203A5D8
+FUN_0203A5D8: ; 0x0203A5D8
+ push {r3-r5, lr}
+ add r0, #0x80
+ ldr r4, [r0, #0x0]
+ mov r1, #0x1
+ add r0, r4, #0x0
+ bl FUN_02039438
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x6
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_0200D0E0
+ add r0, r5, #0x0
+ bl FUN_02019178
+ mov r0, #0x0
+ strb r0, [r4, #0x0]
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203A608
+FUN_0203A608: ; 0x0203A608
+ push {r3-r5, lr}
+ add r0, #0x80
+ ldr r4, [r0, #0x0]
+ mov r1, #0x1
+ add r0, r4, #0x0
+ bl FUN_02039438
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x6
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02019178
+ mov r0, #0x0
+ strb r0, [r4, #0x0]
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203A630
+FUN_0203A630: ; 0x0203A630
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r4, [r0, #0x0]
+ mov r1, #0x31
+ add r0, r4, #0x0
+ bl FUN_02039438
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x2d
+ bl FUN_02039438
+ add r7, r0, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x32
+ bl FUN_02039438
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0x33
+ bl FUN_02039438
+ str r0, [sp, #0x4]
+ add r0, r4, #0x0
+ mov r1, #0x2e
+ bl FUN_02039438
+ str r0, [sp, #0x8]
+ add r0, r4, #0x0
+ mov r1, #0x34
+ bl FUN_02039438
+ ldr r2, [r5, #0x8]
+ add r1, r2, #0x1
+ str r1, [r5, #0x8]
+ ldrb r1, [r2, #0x0]
+ strh r1, [r6, #0x0]
+ ldr r2, [r5, #0x8]
+ add r1, r2, #0x1
+ str r1, [r5, #0x8]
+ ldrb r1, [r2, #0x0]
+ strh r1, [r7, #0x0]
+ ldr r2, [r5, #0x8]
+ add r1, r2, #0x1
+ str r1, [r5, #0x8]
+ ldrb r2, [r2, #0x0]
+ ldr r1, [sp, #0x0]
+ strh r2, [r1, #0x0]
+ ldr r2, [r5, #0x8]
+ add r1, r2, #0x1
+ str r1, [r5, #0x8]
+ ldrb r2, [r2, #0x0]
+ ldr r1, [sp, #0x4]
+ strh r2, [r1, #0x0]
+ ldr r2, [r5, #0x8]
+ add r1, r2, #0x1
+ str r1, [r5, #0x8]
+ ldrb r2, [r2, #0x0]
+ ldr r1, [sp, #0x8]
+ strh r2, [r1, #0x0]
+ ldr r2, [r5, #0x8]
+ add r1, r2, #0x1
+ str r1, [r5, #0x8]
+ ldrb r1, [r2, #0x0]
+ strh r1, [r0, #0x0]
+ ldr r1, _0203A6C4 ; =FUN_0203A6C8
+ add r0, r5, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+_0203A6C4: .word FUN_0203A6C8
+
+ thumb_func_start FUN_0203A6C8
+FUN_0203A6C8: ; 0x0203A6C8
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r0, #0x80
+ ldr r4, [r0, #0x0]
+ mov r1, #0x31
+ add r0, r4, #0x0
+ bl FUN_02039438
+ add r7, r0, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x32
+ bl FUN_02039438
+ str r0, [sp, #0x8]
+ add r0, r4, #0x0
+ mov r1, #0x33
+ bl FUN_02039438
+ str r0, [sp, #0x4]
+ add r0, r4, #0x0
+ mov r1, #0x34
+ bl FUN_02039438
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0x2d
+ bl FUN_02039438
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x2e
+ bl FUN_02039438
+ add r5, r0, #0x0
+ ldrh r0, [r6, #0x0]
+ cmp r0, #0x0
+ bne _0203A71E
+ ldrh r0, [r5, #0x0]
+ cmp r0, #0x0
+ bne _0203A71E
+ add sp, #0xc
+ mov r0, #0x1
+ pop {r4-r7, pc}
+_0203A71E:
+ ldrh r3, [r7, #0x0]
+ cmp r3, #0x0
+ beq _0203A740
+ ldr r0, [sp, #0x8]
+ ldrh r0, [r0, #0x0]
+ cmp r0, #0x0
+ ldr r0, [r4, #0x8]
+ bne _0203A738
+ mov r1, #0x3
+ mov r2, #0x1
+ bl FUN_020179E0
+ b _0203A740
+_0203A738:
+ mov r1, #0x3
+ mov r2, #0x2
+ bl FUN_020179E0
+_0203A740:
+ ldr r0, [sp, #0x4]
+ ldrh r3, [r0, #0x0]
+ cmp r3, #0x0
+ beq _0203A764
+ ldr r0, [sp, #0x0]
+ ldrh r0, [r0, #0x0]
+ cmp r0, #0x0
+ ldr r0, [r4, #0x8]
+ bne _0203A75C
+ mov r1, #0x3
+ mov r2, #0x4
+ bl FUN_020179E0
+ b _0203A764
+_0203A75C:
+ mov r1, #0x3
+ mov r2, #0x5
+ bl FUN_020179E0
+_0203A764:
+ ldrh r0, [r6, #0x0]
+ cmp r0, #0x0
+ beq _0203A76E
+ sub r0, r0, #0x1
+ strh r0, [r6, #0x0]
+_0203A76E:
+ ldrh r0, [r5, #0x0]
+ cmp r0, #0x0
+ beq _0203A778
+ sub r0, r0, #0x1
+ strh r0, [r5, #0x0]
+_0203A778:
+ mov r0, #0x0
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203A780
+FUN_0203A780: ; 0x0203A780
+ push {r4-r7, lr}
+ sub sp, #0x1c
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r4, [r0, #0x0]
+ mov r1, #0x11
+ add r0, r4, #0x0
+ bl FUN_02039438
+ str r0, [sp, #0x18]
+ add r0, r4, #0x0
+ mov r1, #0x10
+ bl FUN_02039438
+ add r7, r0, #0x0
+ add r0, r4, #0x0
+ mov r1, #0xf
+ bl FUN_02039438
+ str r0, [sp, #0x14]
+ ldr r0, [r5, #0x8]
+ add r1, r0, #0x1
+ str r1, [r5, #0x8]
+ ldrb r0, [r0, #0x0]
+ str r0, [sp, #0xc]
+ add r0, r1, #0x1
+ str r0, [r5, #0x8]
+ ldrb r0, [r1, #0x0]
+ str r0, [sp, #0x10]
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ cmp r6, #0x0
+ bne _0203A7E0
+ add r0, r4, #0x0
+ mov r1, #0xa
+ bl FUN_02039438
+ ldr r0, [r0, #0x0]
+ mov r1, #0x0
+ bl FUN_02058510
+ lsl r0, r0, #0x10
+ lsr r6, r0, #0x10
+_0203A7E0:
+ ldr r0, [r4, #0x60]
+ ldr r1, [sp, #0x10]
+ add r2, r6, #0x0
+ bl FUN_021E8128
+ ldr r0, [r4, #0x60]
+ mov r1, #0x1
+ bl FUN_021E8130
+ add r0, r4, #0x0
+ bl FUN_021E8158
+ ldr r2, [sp, #0x18]
+ ldr r0, [r5, #0x78]
+ ldr r1, [sp, #0xc]
+ ldr r2, [r2, #0x0]
+ bl FUN_0200A8E0
+ ldr r0, [sp, #0x14]
+ ldr r2, [sp, #0x18]
+ ldr r0, [r0, #0x0]
+ ldr r1, [r7, #0x0]
+ ldr r2, [r2, #0x0]
+ bl FUN_0200B7B8
+ ldr r0, [r4, #0x60]
+ bl FUN_021E8140
+ mov r3, #0x0
+ str r3, [sp, #0x0]
+ str r3, [sp, #0x4]
+ str r3, [sp, #0x8]
+ ldr r2, [r7, #0x0]
+ mov r1, #0x1
+ bl FUN_0201BD84
+ mov r0, #0x1
+ add sp, #0x1c
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203A830
+FUN_0203A830: ; 0x0203A830
+ push {r3-r5, lr}
+ add r1, r0, #0x0
+ add r1, #0x80
+ ldr r2, [r0, #0x8]
+ ldr r4, [r1, #0x0]
+ add r1, r2, #0x1
+ str r1, [r0, #0x8]
+ ldrb r5, [r2, #0x0]
+ bl ScriptReadHalfword
+ add r2, r0, #0x0
+ ldr r0, [r4, #0x60]
+ add r1, r5, #0x0
+ bl FUN_021E8128
+ ldr r0, [r4, #0x60]
+ mov r1, #0x1
+ bl FUN_021E8130
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203A85C
+FUN_0203A85C: ; 0x0203A85C
+ push {r3, lr}
+ add r1, r0, #0x0
+ add r1, #0x80
+ ldr r2, [r0, #0x8]
+ ldr r3, [r1, #0x0]
+ add r1, r2, #0x1
+ str r1, [r0, #0x8]
+ ldrb r1, [r2, #0x0]
+ ldr r0, [r3, #0x60]
+ bl FUN_021E8130
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203A878
+FUN_0203A878: ; 0x0203A878
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x60]
+ bl FUN_021E8148
+ cmp r0, #0x1
+ bne _0203A88E
+ mov r0, #0x0
+ pop {r4, pc}
+_0203A88E:
+ ldr r1, _0203A89C ; =FUN_0203A8A0
+ add r0, r4, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r4, pc}
+ nop
+_0203A89C: .word FUN_0203A8A0
+
+ thumb_func_start FUN_0203A8A0
+FUN_0203A8A0: ; 0x0203A8A0
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x60]
+ bl FUN_021E8148
+ cmp r0, #0x1
+ bne _0203A8B4
+ mov r0, #0x1
+ pop {r3, pc}
+_0203A8B4:
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_0203A8B8
+FUN_0203A8B8: ; 0x0203A8B8
+ push {r3-r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r4, [r0, #0x0]
+ mov r1, #0x3
+ add r0, r4, #0x0
+ bl FUN_02039438
+ str r0, [sp, #0x4]
+ add r0, r4, #0x0
+ mov r1, #0x11
+ bl FUN_02039438
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x10
+ bl FUN_02039438
+ add r7, r0, #0x0
+ add r0, r4, #0x0
+ mov r1, #0xf
+ bl FUN_02039438
+ ldr r1, [r5, #0x8]
+ str r0, [sp, #0x8]
+ add r0, r1, #0x1
+ str r0, [r5, #0x8]
+ ldrb r0, [r1, #0x0]
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x78]
+ ldr r1, [sp, #0x0]
+ ldr r2, [r6, #0x0]
+ bl FUN_0200A8E0
+ ldr r0, [sp, #0x8]
+ ldr r1, [r7, #0x0]
+ ldr r0, [r0, #0x0]
+ ldr r2, [r6, #0x0]
+ bl FUN_0200B7B8
+ ldr r0, [r4, #0x60]
+ bl FUN_021E8140
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl LoadPlayerDataAddress
+ add r2, r0, #0x0
+ ldr r1, [r7, #0x0]
+ add r0, r4, #0x0
+ mov r3, #0x1
+ bl FUN_02054658
+ ldr r1, [sp, #0x4]
+ strb r0, [r1, #0x0]
+ ldr r0, [sp, #0xc]
+ ldr r1, _0203A948 ; =FUN_0203A94C
+ str r0, [r5, #0x64]
+ add r0, r5, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ add sp, #0x10
+ pop {r3-r7, pc}
+ .balign 4
+_0203A948: .word FUN_0203A94C
+
+ thumb_func_start FUN_0203A94C
+FUN_0203A94C: ; 0x0203A94C
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ add r0, #0x80
+ ldr r5, [r0, #0x0]
+ mov r1, #0x3
+ add r0, r5, #0x0
+ bl FUN_02039438
+ ldr r1, [r7, #0x64]
+ add r6, r0, #0x0
+ lsl r1, r1, #0x10
+ add r0, r5, #0x0
+ lsr r1, r1, #0x10
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x60]
+ bl FUN_021E8144
+ ldrb r0, [r6, #0x0]
+ ldr r5, _0203A9E8 ; =0x0000FFFF
+ bl FUN_020546C8
+ cmp r0, #0x1
+ bne _0203A986
+ mov r0, #0x2
+ strh r0, [r4, #0x0]
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0203A986:
+ ldr r0, _0203A9EC ; =0x021C48B8
+ mov r1, #0x40
+ ldr r0, [r0, #0x48]
+ tst r1, r0
+ beq _0203A994
+ mov r5, #0x0
+ b _0203A9B0
+_0203A994:
+ mov r1, #0x80
+ tst r1, r0
+ beq _0203A99E
+ mov r5, #0x1
+ b _0203A9B0
+_0203A99E:
+ mov r1, #0x20
+ tst r1, r0
+ beq _0203A9A8
+ mov r5, #0x2
+ b _0203A9B0
+_0203A9A8:
+ mov r1, #0x10
+ tst r1, r0
+ beq _0203A9B0
+ mov r5, #0x3
+_0203A9B0:
+ ldr r1, _0203A9E8 ; =0x0000FFFF
+ cmp r5, r1
+ beq _0203A9D0
+ ldrb r0, [r6, #0x0]
+ bl FUN_0201BD7C
+ add r7, #0x80
+ ldr r0, [r7, #0x0]
+ add r1, r5, #0x0
+ ldr r0, [r0, #0x38]
+ bl FUN_02055304
+ mov r0, #0x0
+ strh r0, [r4, #0x0]
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0203A9D0:
+ mov r1, #0x1
+ lsl r1, r1, #0xa
+ tst r0, r1
+ beq _0203A9E4
+ ldrb r0, [r6, #0x0]
+ bl FUN_0201BD7C
+ mov r0, #0x1
+ strh r0, [r4, #0x0]
+ pop {r3-r7, pc}
+_0203A9E4:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+_0203A9E8: .word 0x0000FFFF
+_0203A9EC: .word 0x021C48B8
+
+ thumb_func_start FUN_0203A9F0
+FUN_0203A9F0: ; 0x0203A9F0
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ str r0, [r4, #0x64]
+ ldr r1, _0203AA08 ; =FUN_0203AA0C
+ add r0, r4, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r4, pc}
+ nop
+_0203AA08: .word FUN_0203AA0C
+
+ thumb_func_start FUN_0203AA0C
+FUN_0203AA0C: ; 0x0203AA0C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r1, [r5, #0x64]
+ add r0, #0x80
+ lsl r1, r1, #0x10
+ ldr r0, [r0, #0x0]
+ lsr r1, r1, #0x10
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ ldr r0, _0203AA88 ; =0x021C48B8
+ ldr r1, _0203AA8C ; =0x0000FFFF
+ ldr r2, [r0, #0x48]
+ mov r0, #0x3
+ add r3, r2, #0x0
+ tst r3, r0
+ beq _0203AA36
+ mov r0, #0x0
+ strh r0, [r4, #0x0]
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0203AA36:
+ mov r3, #0x40
+ tst r3, r2
+ beq _0203AA40
+ mov r1, #0x0
+ b _0203AA5C
+_0203AA40:
+ mov r3, #0x80
+ tst r3, r2
+ beq _0203AA4A
+ mov r1, #0x1
+ b _0203AA5C
+_0203AA4A:
+ mov r3, #0x20
+ tst r3, r2
+ beq _0203AA54
+ mov r1, #0x2
+ b _0203AA5C
+_0203AA54:
+ mov r3, #0x10
+ tst r3, r2
+ beq _0203AA5C
+ add r1, r0, #0x0
+_0203AA5C:
+ ldr r0, _0203AA8C ; =0x0000FFFF
+ cmp r1, r0
+ beq _0203AA74
+ add r5, #0x80
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0x38]
+ bl FUN_02055304
+ mov r0, #0x0
+ strh r0, [r4, #0x0]
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0203AA74:
+ mov r0, #0x1
+ lsl r0, r0, #0xa
+ tst r0, r2
+ beq _0203AA82
+ mov r0, #0x1
+ strh r0, [r4, #0x0]
+ pop {r3-r5, pc}
+_0203AA82:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ nop
+_0203AA88: .word 0x021C48B8
+_0203AA8C: .word 0x0000FFFF
+
+ thumb_func_start FUN_0203AA90
+FUN_0203AA90: ; 0x0203AA90
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_02039460
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203AAA0
+FUN_0203AAA0: ; 0x0203AAA0
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r4, [r0, #0x0]
+ mov r1, #0x2
+ add r0, r4, #0x0
+ bl FUN_02039438
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r7, r0, #0x0
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x4
+ str r0, [sp, #0x4]
+ ldr r0, [r4, #0x8]
+ ldr r2, _0203AAF4 ; =0x000003D9
+ mov r1, #0x3
+ mov r3, #0xb
+ bl FUN_0200CB00
+ mov r0, #0x4
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x8]
+ ldr r1, _0203AAF8 ; =0x020F34E0
+ ldr r2, _0203AAF4 ; =0x000003D9
+ mov r3, #0xb
+ bl FUN_02002198
+ str r0, [r6, #0x0]
+ ldr r1, _0203AAFC ; =FUN_0203AB00
+ add r0, r5, #0x0
+ str r7, [r5, #0x64]
+ bl SetupNativeScript
+ mov r0, #0x1
+ add sp, #0x8
+ pop {r3-r7, pc}
+ nop
+_0203AAF4: .word 0x000003D9
+_0203AAF8: .word 0x020F34E0
+_0203AAFC: .word FUN_0203AB00
+
+ thumb_func_start FUN_0203AB00
+FUN_0203AB00: ; 0x0203AB00
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r6, [r0, #0x0]
+ mov r1, #0x2
+ add r0, r6, #0x0
+ bl FUN_02039438
+ ldr r1, [r5, #0x64]
+ add r4, r0, #0x0
+ lsl r1, r1, #0x10
+ add r0, r6, #0x0
+ lsr r1, r1, #0x10
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ mov r1, #0x4
+ bl FUN_020021AC
+ mov r1, #0x0
+ mvn r1, r1
+ cmp r0, r1
+ bne _0203AB34
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_0203AB34:
+ cmp r0, #0x0
+ bne _0203AB3C
+ mov r0, #0x0
+ b _0203AB3E
+_0203AB3C:
+ mov r0, #0x1
+_0203AB3E:
+ strh r0, [r5, #0x0]
+ mov r0, #0x1
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0203AB44
+FUN_0203AB44: ; 0x0203AB44
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x1
+ bl FUN_02039438
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ mov r1, #0x12
+ bl FUN_02039438
+ add r5, r0, #0x0
+ ldr r1, _0203AB70 ; =0x000003E2
+ add r0, r4, #0x0
+ bl FUN_0200D858
+ str r0, [r5, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ nop
+_0203AB70: .word 0x000003E2
+
+ thumb_func_start FUN_0203AB74
+FUN_0203AB74: ; 0x0203AB74
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x12
+ bl FUN_02039438
+ ldr r0, [r0, #0x0]
+ bl FUN_0200DBFC
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203AB8C
+FUN_0203AB8C: ; 0x0203AB8C
+ push {r4-r7, lr}
+ sub sp, #0x2c
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r6, [r0, #0x0]
+ mov r1, #0x0
+ add r0, r6, #0x0
+ bl FUN_02039438
+ str r0, [sp, #0x1c]
+ add r0, r6, #0x0
+ mov r1, #0xf
+ bl FUN_02039438
+ str r0, [sp, #0x20]
+ ldr r0, [r5, #0x8]
+ add r1, r0, #0x1
+ str r1, [r5, #0x8]
+ ldrb r0, [r0, #0x0]
+ add r2, r1, #0x1
+ str r0, [sp, #0x18]
+ str r2, [r5, #0x8]
+ ldrb r0, [r1, #0x0]
+ add r1, r2, #0x1
+ str r0, [sp, #0x14]
+ str r1, [r5, #0x8]
+ ldrb r7, [r2, #0x0]
+ add r0, r1, #0x1
+ str r0, [r5, #0x8]
+ add r0, r5, #0x0
+ ldrb r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ str r0, [sp, #0x24]
+ ldr r1, [sp, #0x24]
+ add r0, r6, #0x0
+ bl FUN_020394B8
+ str r0, [sp, #0x28]
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x1
+ bl FUN_02039438
+ ldr r1, [sp, #0x28]
+ str r4, [sp, #0x0]
+ str r1, [sp, #0x4]
+ ldr r1, [sp, #0x20]
+ add r3, r7, #0x0
+ ldr r1, [r1, #0x0]
+ str r1, [sp, #0x8]
+ str r0, [sp, #0xc]
+ mov r0, #0x0
+ str r0, [sp, #0x10]
+ ldr r1, [sp, #0x18]
+ ldr r2, [sp, #0x14]
+ add r0, r6, #0x0
+ bl FUN_021E1BF8
+ ldr r1, [sp, #0x1c]
+ str r0, [r1, #0x0]
+ ldr r0, [sp, #0x24]
+ str r0, [r5, #0x64]
+ mov r0, #0x1
+ add sp, #0x2c
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203AC14
+FUN_0203AC14: ; 0x0203AC14
+ push {r4-r7, lr}
+ sub sp, #0x2c
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r6, [r0, #0x0]
+ mov r1, #0x0
+ add r0, r6, #0x0
+ bl FUN_02039438
+ str r0, [sp, #0x1c]
+ add r0, r6, #0x0
+ mov r1, #0xf
+ bl FUN_02039438
+ str r0, [sp, #0x20]
+ ldr r0, [r5, #0x8]
+ add r1, r0, #0x1
+ str r1, [r5, #0x8]
+ ldrb r0, [r0, #0x0]
+ add r2, r1, #0x1
+ str r0, [sp, #0x18]
+ str r2, [r5, #0x8]
+ ldrb r0, [r1, #0x0]
+ add r1, r2, #0x1
+ str r0, [sp, #0x14]
+ str r1, [r5, #0x8]
+ ldrb r7, [r2, #0x0]
+ add r0, r1, #0x1
+ str r0, [r5, #0x8]
+ add r0, r5, #0x0
+ ldrb r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ str r0, [sp, #0x24]
+ ldr r1, [sp, #0x24]
+ add r0, r6, #0x0
+ bl FUN_020394B8
+ str r0, [sp, #0x28]
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x1
+ bl FUN_02039438
+ ldr r1, [sp, #0x28]
+ str r4, [sp, #0x0]
+ str r1, [sp, #0x4]
+ ldr r1, [sp, #0x20]
+ add r3, r7, #0x0
+ ldr r1, [r1, #0x0]
+ str r1, [sp, #0x8]
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x78]
+ str r0, [sp, #0x10]
+ ldr r1, [sp, #0x18]
+ ldr r2, [sp, #0x14]
+ add r0, r6, #0x0
+ bl FUN_021E1BF8
+ ldr r1, [sp, #0x1c]
+ str r0, [r1, #0x0]
+ ldr r0, [sp, #0x24]
+ str r0, [r5, #0x64]
+ mov r0, #0x1
+ add sp, #0x2c
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203AC9C
+FUN_0203AC9C: ; 0x0203AC9C
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x0
+ bl FUN_02039438
+ ldr r1, [r4, #0x8]
+ add r3, r1, #0x1
+ str r3, [r4, #0x8]
+ ldrb r1, [r1, #0x0]
+ add r2, r3, #0x1
+ str r2, [r4, #0x8]
+ ldrb r2, [r3, #0x0]
+ ldr r0, [r0, #0x0]
+ bl FUN_021E1C4C
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203ACC4
+FUN_0203ACC4: ; 0x0203ACC4
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x0
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r2, r0, #0x0
+ ldr r0, [r4, #0x0]
+ add r1, r6, #0x0
+ bl FUN_021E1C4C
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203AD08
+FUN_0203AD08: ; 0x0203AD08
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x0
+ bl FUN_02039438
+ ldr r0, [r0, #0x0]
+ bl FUN_021E1C54
+ ldr r1, _0203AD28 ; =FUN_0203AD2C
+ add r0, r4, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r4, pc}
+ .balign 4
+_0203AD28: .word FUN_0203AD2C
+
+ thumb_func_start FUN_0203AD2C
+FUN_0203AD2C: ; 0x0203AD2C
+ push {r3, lr}
+ add r1, r0, #0x0
+ ldr r1, [r1, #0x64]
+ add r0, #0x80
+ lsl r1, r1, #0x10
+ ldr r0, [r0, #0x0]
+ lsr r1, r1, #0x10
+ bl FUN_020394B8
+ ldrh r1, [r0, #0x0]
+ ldr r0, _0203AD50 ; =0x0000EEEE
+ cmp r1, r0
+ beq _0203AD4A
+ mov r0, #0x1
+ pop {r3, pc}
+_0203AD4A:
+ mov r0, #0x0
+ pop {r3, pc}
+ nop
+_0203AD50: .word 0x0000EEEE
+
+ thumb_func_start FUN_0203AD54
+FUN_0203AD54: ; 0x0203AD54
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x0
+ bl FUN_02039438
+ ldr r0, [r0, #0x0]
+ bl FUN_021E1C54
+ ldr r1, _0203AD74 ; =FUN_0203AD78
+ add r0, r4, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r4, pc}
+ .balign 4
+_0203AD74: .word FUN_0203AD78
+
+ thumb_func_start FUN_0203AD78
+FUN_0203AD78: ; 0x0203AD78
+ push {r4-r6, lr}
+ add r1, r0, #0x0
+ add r0, #0x80
+ ldr r1, [r1, #0x64]
+ ldr r5, [r0, #0x0]
+ lsl r1, r1, #0x10
+ add r0, r5, #0x0
+ lsr r1, r1, #0x10
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_02039438
+ add r6, r0, #0x0
+ ldrh r1, [r4, #0x0]
+ ldr r0, _0203ADC0 ; =0x0000EEEE
+ cmp r1, r0
+ bne _0203ADBC
+ ldr r0, [r5, #0x78]
+ bl FUN_02052714
+ cmp r0, #0x0
+ beq _0203ADB8
+ mov r0, #0x8
+ strh r0, [r4, #0x0]
+ ldr r0, [r6, #0x0]
+ bl FUN_021E1ECC
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_0203ADB8:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_0203ADBC:
+ mov r0, #0x1
+ pop {r4-r6, pc}
+ .balign 4
+_0203ADC0: .word 0x0000EEEE
+
+ thumb_func_start FUN_0203ADC4
+FUN_0203ADC4: ; 0x0203ADC4
+ push {r4-r7, lr}
+ sub sp, #0x2c
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r6, [r0, #0x0]
+ mov r1, #0x0
+ add r0, r6, #0x0
+ bl FUN_02039438
+ str r0, [sp, #0x1c]
+ add r0, r6, #0x0
+ mov r1, #0xf
+ bl FUN_02039438
+ str r0, [sp, #0x20]
+ ldr r0, [r5, #0x8]
+ add r1, r0, #0x1
+ str r1, [r5, #0x8]
+ ldrb r0, [r0, #0x0]
+ add r2, r1, #0x1
+ str r0, [sp, #0x18]
+ str r2, [r5, #0x8]
+ ldrb r0, [r1, #0x0]
+ add r1, r2, #0x1
+ str r0, [sp, #0x14]
+ str r1, [r5, #0x8]
+ ldrb r7, [r2, #0x0]
+ add r0, r1, #0x1
+ str r0, [r5, #0x8]
+ add r0, r5, #0x0
+ ldrb r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ str r0, [sp, #0x24]
+ ldr r1, [sp, #0x24]
+ add r0, r6, #0x0
+ bl FUN_020394B8
+ str r0, [sp, #0x28]
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x1
+ bl FUN_02039438
+ ldr r1, [sp, #0x28]
+ str r4, [sp, #0x0]
+ str r1, [sp, #0x4]
+ ldr r1, [sp, #0x20]
+ add r3, r7, #0x0
+ ldr r1, [r1, #0x0]
+ str r1, [sp, #0x8]
+ str r0, [sp, #0xc]
+ mov r0, #0x0
+ str r0, [sp, #0x10]
+ ldr r1, [sp, #0x18]
+ ldr r2, [sp, #0x14]
+ add r0, r6, #0x0
+ bl FUN_021E1F34
+ ldr r1, [sp, #0x1c]
+ str r0, [r1, #0x0]
+ ldr r0, [sp, #0x24]
+ str r0, [r5, #0x64]
+ mov r0, #0x1
+ add sp, #0x2c
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203AE4C
+FUN_0203AE4C: ; 0x0203AE4C
+ push {r4-r7, lr}
+ sub sp, #0x2c
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r6, [r0, #0x0]
+ mov r1, #0x0
+ add r0, r6, #0x0
+ bl FUN_02039438
+ str r0, [sp, #0x1c]
+ add r0, r6, #0x0
+ mov r1, #0xf
+ bl FUN_02039438
+ str r0, [sp, #0x20]
+ ldr r0, [r5, #0x8]
+ add r1, r0, #0x1
+ str r1, [r5, #0x8]
+ ldrb r0, [r0, #0x0]
+ add r2, r1, #0x1
+ str r0, [sp, #0x18]
+ str r2, [r5, #0x8]
+ ldrb r0, [r1, #0x0]
+ add r1, r2, #0x1
+ str r0, [sp, #0x14]
+ str r1, [r5, #0x8]
+ ldrb r7, [r2, #0x0]
+ add r0, r1, #0x1
+ str r0, [r5, #0x8]
+ add r0, r5, #0x0
+ ldrb r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ str r0, [sp, #0x24]
+ ldr r1, [sp, #0x24]
+ add r0, r6, #0x0
+ bl FUN_020394B8
+ str r0, [sp, #0x28]
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x1
+ bl FUN_02039438
+ ldr r1, [sp, #0x28]
+ str r4, [sp, #0x0]
+ str r1, [sp, #0x4]
+ ldr r1, [sp, #0x20]
+ add r3, r7, #0x0
+ ldr r1, [r1, #0x0]
+ str r1, [sp, #0x8]
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x78]
+ str r0, [sp, #0x10]
+ ldr r1, [sp, #0x18]
+ ldr r2, [sp, #0x14]
+ add r0, r6, #0x0
+ bl FUN_021E1F34
+ ldr r1, [sp, #0x1c]
+ str r0, [r1, #0x0]
+ ldr r0, [sp, #0x24]
+ str r0, [r5, #0x64]
+ mov r0, #0x1
+ add sp, #0x2c
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203AED4
+FUN_0203AED4: ; 0x0203AED4
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x0
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r3, r0, #0x0
+ lsl r1, r6, #0x18
+ lsl r2, r7, #0x18
+ lsl r3, r3, #0x18
+ ldr r0, [r4, #0x0]
+ lsr r1, r1, #0x18
+ lsr r2, r2, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_021E1F58
+ mov r0, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0203AF34
+FUN_0203AF34: ; 0x0203AF34
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x0
+ bl FUN_02039438
+ ldr r0, [r0, #0x0]
+ bl FUN_021E1F60
+ ldr r1, _0203AF54 ; =FUN_0203AD2C
+ add r0, r4, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r4, pc}
+ .balign 4
+_0203AF54: .word FUN_0203AD2C
+
+ thumb_func_start FUN_0203AF58
+FUN_0203AF58: ; 0x0203AF58
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x0
+ bl FUN_02039438
+ ldr r2, [r4, #0x8]
+ add r1, r2, #0x1
+ str r1, [r4, #0x8]
+ ldrb r1, [r2, #0x0]
+ ldr r0, [r0, #0x0]
+ bl FUN_021E26CC
+ ldr r1, _0203AF80 ; =FUN_0203AD2C
+ add r0, r4, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r4, pc}
+ .balign 4
+_0203AF80: .word FUN_0203AD2C
+
+ thumb_func_start FUN_0203AF84
+FUN_0203AF84: ; 0x0203AF84
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x0
+ bl FUN_02039438
+ ldr r2, [r4, #0x8]
+ add r1, r2, #0x1
+ str r1, [r4, #0x8]
+ ldrb r1, [r2, #0x0]
+ ldr r0, [r0, #0x0]
+ bl FUN_021E2B80
+ mov r0, #0x1
+ pop {r4, pc}
+
+ thumb_func_start FUN_0203AFA4
+FUN_0203AFA4: ; 0x0203AFA4
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x0
+ bl FUN_02039438
+ ldr r2, [r4, #0x8]
+ add r1, r2, #0x1
+ str r1, [r4, #0x8]
+ ldrb r1, [r2, #0x0]
+ ldr r0, [r0, #0x0]
+ bl FUN_021E2B9C
+ mov r0, #0x1
+ pop {r4, pc}
+
+ thumb_func_start FUN_0203AFC4
+FUN_0203AFC4: ; 0x0203AFC4
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadWord
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ add r1, r6, #0x0
+ bl FUN_0203B120
+ add r6, r0, #0x0
+ bne _0203AFF6
+ bl ErrorHandling
+_0203AFF6:
+ ldr r1, [r5, #0x8]
+ add r0, r6, #0x0
+ add r1, r1, r4
+ bl FUN_0205AEA4
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x4
+ bl FUN_02039438
+ ldrb r1, [r0, #0x0]
+ add r5, #0x80
+ mov r2, #0x0
+ add r1, r1, #0x1
+ strb r1, [r0, #0x0]
+ ldr r0, [r5, #0x0]
+ add r1, r4, #0x0
+ bl FUN_0203B174
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0203B024
+FUN_0203B024: ; 0x0203B024
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ add r1, r4, #0x0
+ bl FUN_0203B120
+ str r0, [sp, #0x4]
+ cmp r0, #0x0
+ bne _0203B07A
+ bl ErrorHandling
+_0203B07A:
+ mov r0, #0x4
+ add r1, r0, #0x0
+ add r1, #0xfc
+ bl FUN_02016998
+ add r4, r0, #0x0
+ ldr r0, [sp, #0x4]
+ bl FUN_02058B2C
+ lsl r0, r0, #0x10
+ lsr r6, r0, #0x10
+ ldr r0, [sp, #0x4]
+ bl FUN_02058B4C
+ lsl r0, r0, #0x10
+ ldr r2, [sp, #0x0]
+ lsr r0, r0, #0x10
+ mov r1, #0x0
+ cmp r6, r2
+ bhs _0203B0B0
+ mov r2, #0xf
+ strh r2, [r4, #0x0]
+ ldr r2, [sp, #0x0]
+ add r1, r1, #0x1
+ sub r2, r2, r6
+ strh r2, [r4, #0x2]
+ b _0203B0C0
+_0203B0B0:
+ cmp r6, r2
+ bls _0203B0C0
+ mov r2, #0xe
+ strh r2, [r4, #0x0]
+ ldr r2, [sp, #0x0]
+ add r1, r1, #0x1
+ sub r2, r6, r2
+ strh r2, [r4, #0x2]
+_0203B0C0:
+ cmp r0, r7
+ bhs _0203B0D4
+ lsl r2, r1, #0x2
+ mov r3, #0xc
+ strh r3, [r4, r2]
+ sub r3, r7, r0
+ add r0, r4, r2
+ strh r3, [r0, #0x2]
+ add r1, r1, #0x1
+ b _0203B0E6
+_0203B0D4:
+ cmp r0, r7
+ bls _0203B0E6
+ lsl r2, r1, #0x2
+ mov r3, #0xd
+ strh r3, [r4, r2]
+ sub r3, r0, r7
+ add r0, r4, r2
+ strh r3, [r0, #0x2]
+ add r1, r1, #0x1
+_0203B0E6:
+ lsl r2, r1, #0x2
+ mov r0, #0xfe
+ strh r0, [r4, r2]
+ mov r1, #0x0
+ add r0, r4, r2
+ strh r1, [r0, #0x2]
+ ldr r0, [sp, #0x4]
+ add r1, r4, #0x0
+ bl FUN_0205AEA4
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x4
+ bl FUN_02039438
+ ldrb r1, [r0, #0x0]
+ add r5, #0x80
+ add r2, r4, #0x0
+ add r1, r1, #0x1
+ strb r1, [r0, #0x0]
+ ldr r0, [r5, #0x0]
+ add r1, r6, #0x0
+ bl FUN_0203B174
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0203B120
+FUN_0203B120: ; 0x0203B120
+ push {r3, lr}
+ cmp r1, #0xf2
+ bne _0203B130
+ ldr r0, [r0, #0x34]
+ mov r1, #0x30
+ bl FUN_020580B4
+ pop {r3, pc}
+_0203B130:
+ cmp r1, #0xf1
+ bne _0203B13E
+ mov r1, #0xb
+ bl FUN_02039438
+ ldr r0, [r0, #0x0]
+ pop {r3, pc}
+_0203B13E:
+ ldr r0, [r0, #0x34]
+ bl FUN_02058060
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203B148
+FUN_0203B148: ; 0x0203B148
+ push {r3, lr}
+ ldr r1, _0203B154 ; =FUN_0203B158
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+_0203B154: .word FUN_0203B158
+
+ thumb_func_start FUN_0203B158
+FUN_0203B158: ; 0x0203B158
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x4
+ bl FUN_02039438
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _0203B16E
+ mov r0, #0x1
+ pop {r3, pc}
+_0203B16E:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203B174
+FUN_0203B174: ; 0x0203B174
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ mov r0, #0x4
+ mov r1, #0x10
+ add r7, r2, #0x0
+ bl FUN_02016998
+ add r4, r0, #0x0
+ bne _0203B18E
+ bl ErrorHandling
+ pop {r3-r7, pc}
+_0203B18E:
+ str r5, [r4, #0xc]
+ str r6, [r4, #0x4]
+ ldr r0, _0203B1A4 ; =FUN_0203B1A8
+ add r1, r4, #0x0
+ mov r2, #0x0
+ str r7, [r4, #0x8]
+ bl FUN_0200CA44
+ str r0, [r4, #0x0]
+ pop {r3-r7, pc}
+ nop
+_0203B1A4: .word FUN_0203B1A8
+
+ thumb_func_start FUN_0203B1A8
+FUN_0203B1A8: ; 0x0203B1A8
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ ldr r0, [r5, #0xc]
+ mov r1, #0x4
+ bl FUN_02039438
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x4]
+ bl FUN_0205AEF0
+ cmp r0, #0x1
+ bne _0203B1EC
+ ldr r0, [r5, #0x4]
+ bl FUN_0205AEFC
+ ldr r0, [r5, #0x0]
+ bl FUN_0200CAB4
+ ldr r0, [r5, #0x8]
+ cmp r0, #0x0
+ beq _0203B1D6
+ bl FUN_02016A18
+_0203B1D6:
+ add r0, r5, #0x0
+ bl FUN_02016A18
+ ldrb r0, [r4, #0x0]
+ cmp r0, #0x0
+ bne _0203B1E8
+ bl ErrorHandling
+ pop {r3-r5, pc}
+_0203B1E8:
+ sub r0, r0, #0x1
+ strb r0, [r4, #0x0]
+_0203B1EC:
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203B1F0
+FUN_0203B1F0: ; 0x0203B1F0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r4, [r0, #0x0]
+ mov r1, #0xa
+ add r0, r4, #0x0
+ bl FUN_02039438
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _0203B20E
+ ldr r0, [r4, #0x34]
+ bl FUN_02058780
+ b _0203B214
+_0203B20E:
+ add r0, r5, #0x0
+ bl FUN_0203B2E0
+_0203B214:
+ mov r0, #0x1
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0203B218
+FUN_0203B218: ; 0x0203B218
+ push {r4-r6, lr}
+ add r0, #0x80
+ ldr r4, [r0, #0x0]
+ mov r1, #0xa
+ add r0, r4, #0x0
+ bl FUN_02039438
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x38]
+ bl FUN_020553A0
+ ldr r1, _0203B2DC ; =0x021C5A0C
+ add r6, r0, #0x0
+ ldrb r2, [r1, #0x0]
+ mov r1, #0x1
+ tst r1, r2
+ beq _0203B252
+ bl FUN_0205AE28
+ cmp r0, #0x1
+ bne _0203B252
+ add r0, r6, #0x0
+ bl FUN_02058908
+ ldr r1, _0203B2DC ; =0x021C5A0C
+ mov r0, #0xfe
+ ldrb r2, [r1, #0x0]
+ and r0, r2
+ strb r0, [r1, #0x0]
+_0203B252:
+ ldr r0, _0203B2DC ; =0x021C5A0C
+ ldrb r1, [r0, #0x0]
+ mov r0, #0x4
+ tst r0, r1
+ beq _0203B276
+ ldr r0, [r5, #0x0]
+ bl FUN_02058854
+ cmp r0, #0x0
+ bne _0203B276
+ ldr r0, [r5, #0x0]
+ bl FUN_02058908
+ ldr r1, _0203B2DC ; =0x021C5A0C
+ mov r0, #0xfb
+ ldrb r2, [r1, #0x0]
+ and r0, r2
+ strb r0, [r1, #0x0]
+_0203B276:
+ ldr r0, _0203B2DC ; =0x021C5A0C
+ ldrb r1, [r0, #0x0]
+ mov r0, #0x2
+ tst r0, r1
+ beq _0203B2A2
+ ldr r0, [r4, #0x34]
+ mov r1, #0x30
+ bl FUN_020580B4
+ add r4, r0, #0x0
+ bl FUN_02058854
+ cmp r0, #0x0
+ bne _0203B2A2
+ add r0, r4, #0x0
+ bl FUN_02058908
+ ldr r1, _0203B2DC ; =0x021C5A0C
+ mov r0, #0xfd
+ ldrb r2, [r1, #0x0]
+ and r0, r2
+ strb r0, [r1, #0x0]
+_0203B2A2:
+ ldr r0, _0203B2DC ; =0x021C5A0C
+ ldrb r1, [r0, #0x0]
+ mov r0, #0x8
+ tst r0, r1
+ beq _0203B2CC
+ ldr r0, [r5, #0x0]
+ bl FUN_0205E7C4
+ add r4, r0, #0x0
+ bl FUN_02058854
+ cmp r0, #0x0
+ bne _0203B2CC
+ add r0, r4, #0x0
+ bl FUN_02058908
+ ldr r1, _0203B2DC ; =0x021C5A0C
+ mov r0, #0xf7
+ ldrb r2, [r1, #0x0]
+ and r0, r2
+ strb r0, [r1, #0x0]
+_0203B2CC:
+ ldr r0, _0203B2DC ; =0x021C5A0C
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _0203B2D8
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_0203B2D8:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+_0203B2DC: .word 0x021C5A0C
+
+ thumb_func_start FUN_0203B2E0
+FUN_0203B2E0: ; 0x0203B2E0
+ push {r3-r7, lr}
+ sub sp, #0x8
+ str r0, [sp, #0x0]
+ add r0, #0x80
+ ldr r4, [r0, #0x0]
+ mov r1, #0xa
+ add r0, r4, #0x0
+ bl FUN_02039438
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x38]
+ bl FUN_020553A0
+ str r0, [sp, #0x4]
+ ldr r0, [r4, #0x34]
+ mov r1, #0x30
+ bl FUN_020580B4
+ add r7, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_0205E7C4
+ add r6, r0, #0x0
+ ldr r0, [r4, #0x34]
+ ldr r1, _0203B3A8 ; =0x021C5A0C
+ mov r2, #0x0
+ strb r2, [r1, #0x0]
+ bl FUN_02058780
+ ldr r0, [sp, #0x4]
+ bl FUN_0205AE28
+ cmp r0, #0x0
+ bne _0203B334
+ ldr r1, _0203B3A8 ; =0x021C5A0C
+ mov r0, #0x1
+ ldrb r2, [r1, #0x0]
+ orr r0, r2
+ strb r0, [r1, #0x0]
+ ldr r0, [sp, #0x4]
+ bl FUN_02058914
+_0203B334:
+ ldr r0, [r5, #0x0]
+ bl FUN_02058854
+ cmp r0, #0x0
+ beq _0203B34E
+ ldr r1, _0203B3A8 ; =0x021C5A0C
+ mov r0, #0x4
+ ldrb r2, [r1, #0x0]
+ orr r0, r2
+ strb r0, [r1, #0x0]
+ ldr r0, [r5, #0x0]
+ bl FUN_02058914
+_0203B34E:
+ cmp r7, #0x0
+ beq _0203B37A
+ ldr r0, [r4, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205ED3C
+ cmp r0, #0x1
+ bne _0203B37A
+ add r0, r7, #0x0
+ bl FUN_02058854
+ cmp r0, #0x0
+ beq _0203B37A
+ ldr r1, _0203B3A8 ; =0x021C5A0C
+ mov r0, #0x2
+ ldrb r2, [r1, #0x0]
+ orr r0, r2
+ strb r0, [r1, #0x0]
+ add r0, r7, #0x0
+ bl FUN_02058914
+_0203B37A:
+ cmp r6, #0x0
+ beq _0203B398
+ add r0, r6, #0x0
+ bl FUN_02058854
+ cmp r0, #0x0
+ beq _0203B398
+ ldr r1, _0203B3A8 ; =0x021C5A0C
+ mov r0, #0x8
+ ldrb r2, [r1, #0x0]
+ orr r0, r2
+ strb r0, [r1, #0x0]
+ add r0, r6, #0x0
+ bl FUN_02058914
+_0203B398:
+ ldr r0, [sp, #0x0]
+ ldr r1, _0203B3AC ; =FUN_0203B218
+ bl SetupNativeScript
+ mov r0, #0x1
+ add sp, #0x8
+ pop {r3-r7, pc}
+ nop
+_0203B3A8: .word 0x021C5A0C
+_0203B3AC: .word FUN_0203B218
+
+ thumb_func_start FUN_0203B3B0
+FUN_0203B3B0: ; 0x0203B3B0
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x34]
+ bl FUN_020587B0
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0203B3C0
+FUN_0203B3C0: ; 0x0203B3C0
+ push {r4, lr}
+ add r1, r0, #0x0
+ add r1, #0x80
+ ldr r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x34]
+ bl FUN_02058060
+ bl FUN_02058908
+ mov r0, #0x0
+ pop {r4, pc}
+
+ thumb_func_start FUN_0203B3DC
+FUN_0203B3DC: ; 0x0203B3DC
+ push {r4, lr}
+ add r1, r0, #0x0
+ add r1, #0x80
+ ldr r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x34]
+ bl FUN_02058060
+ bl FUN_02058914
+ mov r0, #0x0
+ pop {r4, pc}
+
+ thumb_func_start FUN_0203B3F8
+FUN_0203B3F8: ; 0x0203B3F8
+ push {r3-r6, lr}
+ sub sp, #0x4
+ add r4, r0, #0x0
+ add r1, r4, #0x0
+ add r1, #0x80
+ ldr r5, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394F0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02034B64
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02034B6C
+ str r0, [sp, #0x0]
+ ldr r3, [r5, #0x1c]
+ ldr r0, [r5, #0x34]
+ ldr r3, [r3, #0x0]
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_020575D4
+ cmp r0, #0x0
+ bne _0203B43A
+ bl ErrorHandling
+_0203B43A:
+ mov r0, #0x0
+ add sp, #0x4
+ pop {r3-r6, pc}
+
+ thumb_func_start FUN_0203B440
+FUN_0203B440: ; 0x0203B440
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ add r1, r4, #0x0
+ add r1, #0x80
+ ldr r5, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394F0
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x34]
+ bl FUN_02058060
+ bl FUN_02057688
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0203B468
+FUN_0203B468: ; 0x0203B468
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xb
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ mov r1, #0x2
+ ldr r0, [r0, #0x0]
+ lsl r1, r1, #0xc
+ str r1, [sp, #0x0]
+ mov r3, #0x0
+ str r3, [sp, #0x4]
+ ldr r1, [r0, #0x1c]
+ add r2, r7, #0x0
+ ldr r1, [r1, #0x0]
+ str r1, [sp, #0x8]
+ ldr r0, [r0, #0x34]
+ add r1, r6, #0x0
+ bl FUN_0205753C
+ str r0, [r4, #0x0]
+ bl FUN_02059D1C
+ ldr r0, [r4, #0x0]
+ mov r1, #0x1
+ bl FUN_0205889C
+ ldr r0, [r4, #0x0]
+ mov r1, #0x0
+ bl FUN_020588B8
+ ldr r0, [r4, #0x0]
+ bl FUN_02058B7C
+ add r1, r5, #0x0
+ add r1, #0x80
+ ldr r1, [r1, #0x0]
+ add r4, r0, #0x0
+ ldr r1, [r1, #0x24]
+ bl FUN_021EF5E0
+ add r5, #0x80
+ ldr r1, [r5, #0x0]
+ add r0, r4, #0x0
+ ldr r1, [r1, #0x20]
+ bl FUN_0201EC68
+ mov r0, #0x0
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203B500
+FUN_0203B500: ; 0x0203B500
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xb
+ bl FUN_02039438
+ ldr r0, [r0, #0x0]
+ bl FUN_02057654
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xff
+ ldr r0, [r0, #0x34]
+ bl FUN_02058060
+ bl FUN_02058B7C
+ add r1, r5, #0x0
+ add r1, #0x80
+ ldr r1, [r1, #0x0]
+ add r4, r0, #0x0
+ ldr r1, [r1, #0x24]
+ bl FUN_021EF5E0
+ add r5, #0x80
+ ldr r1, [r5, #0x0]
+ add r0, r4, #0x0
+ ldr r1, [r1, #0x20]
+ bl FUN_0201EC68
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0203B544
+FUN_0203B544: ; 0x0203B544
+ push {r3-r5, lr}
+ add r0, #0x80
+ ldr r5, [r0, #0x0]
+ ldr r0, [r5, #0x38]
+ bl FUN_020552F8
+ bl FUN_02059E74
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0xa
+ bl FUN_02039438
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _0203B568
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0203B568:
+ add r1, r4, #0x0
+ bl FUN_021F1EC0
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203B574
+FUN_0203B574: ; 0x0203B574
+ push {r4-r6, lr}
+ add r4, r0, #0x0
+ add r1, r4, #0x0
+ add r1, #0x80
+ ldr r5, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x38]
+ bl FUN_02055320
+ strh r0, [r6, #0x0]
+ ldr r0, [r5, #0x38]
+ bl FUN_0205532C
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203B5B8
+FUN_0203B5B8: ; 0x0203B5B8
+ push {r4-r6, lr}
+ add r4, r0, #0x0
+ add r1, r4, #0x0
+ add r1, #0x80
+ ldr r5, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x34]
+ bl FUN_02058060
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058B2C
+ strh r0, [r6, #0x0]
+ add r0, r5, #0x0
+ bl FUN_02058B4C
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203B618
+FUN_0203B618: ; 0x0203B618
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0x38]
+ bl FUN_020552F8
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203B640
+FUN_0203B640: ; 0x0203B640
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r4, r0, #0x0
+ cmp r7, #0x0
+ beq _0203B696
+ lsl r0, r7, #0xc
+ blx FUN_020EB534
+ add r1, r0, #0x0
+ mov r0, #0x3f
+ lsl r0, r0, #0x18
+ blx FUN_020EA980
+ b _0203B6A4
+_0203B696:
+ lsl r0, r7, #0xc
+ blx FUN_020EB534
+ mov r1, #0x3f
+ lsl r1, r1, #0x18
+ blx FUN_020EB7B0
+_0203B6A4:
+ blx FUN_020EB4C0
+ str r0, [sp, #0x0]
+ cmp r6, #0x0
+ beq _0203B6C0
+ lsl r0, r6, #0xc
+ blx FUN_020EB534
+ add r1, r0, #0x0
+ mov r0, #0x3f
+ lsl r0, r0, #0x18
+ blx FUN_020EA980
+ b _0203B6CE
+_0203B6C0:
+ lsl r0, r6, #0xc
+ blx FUN_020EB534
+ mov r1, #0x3f
+ lsl r1, r1, #0x18
+ blx FUN_020EB7B0
+_0203B6CE:
+ blx FUN_020EB4C0
+ str r0, [sp, #0x4]
+ cmp r4, #0x0
+ beq _0203B6EA
+ lsl r0, r4, #0xc
+ blx FUN_020EB534
+ add r1, r0, #0x0
+ mov r0, #0x3f
+ lsl r0, r0, #0x18
+ blx FUN_020EA980
+ b _0203B6F8
+_0203B6EA:
+ lsl r0, r4, #0xc
+ blx FUN_020EB534
+ mov r1, #0x3f
+ lsl r1, r1, #0x18
+ blx FUN_020EB7B0
+_0203B6F8:
+ blx FUN_020EB4C0
+ str r0, [sp, #0x8]
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x38]
+ bl FUN_020553A0
+ add r1, sp, #0x0
+ bl FUN_02058BB4
+ add r5, #0x80
+ ldr r1, [r5, #0x0]
+ add r0, sp, #0x0
+ ldr r1, [r1, #0x20]
+ bl FUN_0201EF70
+ mov r0, #0x0
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203B724
+FUN_0203B724: ; 0x0203B724
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x34]
+ bl FUN_02058060
+ ldr r2, [r4, #0x8]
+ add r1, r2, #0x1
+ str r1, [r4, #0x8]
+ ldrb r1, [r2, #0x0]
+ bl FUN_02058994
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203B758
+FUN_0203B758: ; 0x0203B758
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x34]
+ bl FUN_02058060
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058E90
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203B790
+FUN_0203B790: ; 0x0203B790
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ mov r0, #0x0
+ strh r0, [r4, #0x0]
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0x34]
+ bl FUN_02058060
+ cmp r0, #0x0
+ beq _0203B7D2
+ bl FUN_02058480
+ strh r0, [r4, #0x0]
+_0203B7D2:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203B7D8
+FUN_0203B7D8: ; 0x0203B7D8
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x30
+ ldr r0, [r0, #0x34]
+ bl FUN_020580B4
+ mov r1, #0xfe
+ bl FUN_02058EB0
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_0203B7F0
+FUN_0203B7F0: ; 0x0203B7F0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02029C80
+ bl FUN_02029E0C
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203B81C
+FUN_0203B81C: ; 0x0203B81C
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02029C80
+ add r1, r6, #0x0
+ bl FUN_02029E2C
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0203B85C
+FUN_0203B85C: ; 0x0203B85C
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02029C80
+ lsl r2, r4, #0x10
+ add r1, r6, #0x0
+ asr r2, r2, #0x10
+ bl FUN_02029D44
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203B8A0
+FUN_0203B8A0: ; 0x0203B8A0
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_0206BB1C
+ add r1, r6, #0x0
+ bl FUN_0206B9B0
+ bl FUN_020690CC
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0203B8E4
+FUN_0203B8E4: ; 0x0203B8E4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x13
+ bl FUN_02039438
+ add r1, r5, #0x0
+ add r1, #0x80
+ add r4, r0, #0x0
+ ldr r1, [r1, #0x0]
+ mov r0, #0x20
+ bl FUN_020379F8
+ str r0, [r4, #0x0]
+ ldr r1, _0203B910 ; =FUN_0203BC04
+ add r0, r5, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ nop
+_0203B910: .word FUN_0203BC04
+
+ thumb_func_start FUN_0203B914
+FUN_0203B914: ; 0x0203B914
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x13
+ bl FUN_02039438
+ add r1, r5, #0x0
+ add r1, #0x80
+ add r4, r0, #0x0
+ ldr r1, [r1, #0x0]
+ mov r0, #0x20
+ bl FUN_02037A1C
+ str r0, [r4, #0x0]
+ ldr r1, _0203B940 ; =FUN_0203BC04
+ add r0, r5, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ nop
+_0203B940: .word FUN_0203BC04
+
+ thumb_func_start FUN_0203B944
+FUN_0203B944: ; 0x0203B944
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x13
+ bl FUN_02039438
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ mov r1, #0x20
+ ldr r0, [r0, #0x10]
+ bl FUN_02037B44
+ str r0, [r4, #0x0]
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203B968
+FUN_0203B968: ; 0x0203B968
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r4, #0x80
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ mov r1, #0x13
+ bl FUN_02039438
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ bne _0203B994
+ bl ErrorHandling
+_0203B994:
+ ldr r0, [r4, #0x0]
+ bl FUN_02037A40
+ strh r0, [r5, #0x0]
+ ldrh r0, [r5, #0x0]
+ cmp r0, #0x7
+ bne _0203B9A6
+ mov r0, #0xff
+ strh r0, [r5, #0x0]
+_0203B9A6:
+ ldr r0, [r4, #0x0]
+ bl FUN_02016A18
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203B9B4
+FUN_0203B9B4: ; 0x0203B9B4
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x13
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ str r0, [sp, #0x8]
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ str r0, [sp, #0x0]
+ add r1, r5, #0x0
+ str r6, [sp, #0x4]
+ add r1, #0x80
+ ldr r1, [r1, #0x0]
+ ldr r2, [sp, #0x8]
+ mov r0, #0x20
+ add r3, r7, #0x0
+ bl FUN_02037BB0
+ str r0, [r4, #0x0]
+ ldr r1, _0203BA38 ; =FUN_0203BC04
+ add r0, r5, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+_0203BA38: .word FUN_0203BC04
+
+ thumb_func_start FUN_0203BA3C
+FUN_0203BA3C: ; 0x0203BA3C
+ push {r4-r6, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r4, #0x80
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ mov r1, #0x13
+ bl FUN_02039438
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ bne _0203BA7C
+ bl ErrorHandling
+_0203BA7C:
+ ldr r0, [r4, #0x0]
+ bl FUN_02037A40
+ strh r0, [r6, #0x0]
+ ldrh r0, [r6, #0x0]
+ cmp r0, #0x7
+ bne _0203BA8E
+ mov r0, #0xff
+ strh r0, [r6, #0x0]
+_0203BA8E:
+ ldr r0, [r4, #0x0]
+ bl FUN_02037A70
+ strh r0, [r5, #0x0]
+ ldrh r0, [r5, #0x0]
+ cmp r0, #0x1
+ bne _0203BAA0
+ mov r0, #0x1
+ b _0203BAA2
+_0203BAA0:
+ mov r0, #0x0
+_0203BAA2:
+ strh r0, [r5, #0x0]
+ ldr r0, [r4, #0x0]
+ bl FUN_02016A18
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0203BAB0
+FUN_0203BAB0: ; 0x0203BAB0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x13
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r1, r5, #0x0
+ add r1, #0x80
+ add r2, r0, #0x0
+ ldr r1, [r1, #0x0]
+ mov r0, #0x20
+ bl FUN_02037C00
+ str r0, [r4, #0x0]
+ ldr r1, _0203BAF0 ; =FUN_0203BC04
+ add r0, r5, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ nop
+_0203BAF0: .word FUN_0203BC04
+
+ thumb_func_start FUN_0203BAF4
+FUN_0203BAF4: ; 0x0203BAF4
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r4, #0x80
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ mov r1, #0x13
+ bl FUN_02039438
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ bne _0203BB20
+ bl ErrorHandling
+_0203BB20:
+ ldr r0, [r4, #0x0]
+ bl FUN_02037A78
+ strh r0, [r5, #0x0]
+ ldr r0, [r4, #0x0]
+ bl FUN_02016A18
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0203BB34
+FUN_0203BB34: ; 0x0203BB34
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xa
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, #0x80
+ add r6, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r1, [r4, #0x0]
+ add r2, r7, #0x0
+ bl FUN_021E1858
+ strh r0, [r6, #0x0]
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203BB80
+FUN_0203BB80: ; 0x0203BB80
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_0203BB84
+FUN_0203BB84: ; 0x0203BB84
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_0203BB88
+FUN_0203BB88: ; 0x0203BB88
+ mov r0, #0x1
+ bx lr
+
+ thumb_func_start FUN_0203BB8C
+FUN_0203BB8C: ; 0x0203BB8C
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_0203BB90
+FUN_0203BB90: ; 0x0203BB90
+ push {r3-r5, lr}
+ add r0, #0x80
+ ldr r5, [r0, #0x0]
+ mov r1, #0x13
+ add r0, r5, #0x0
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0204647C
+ cmp r0, #0x0
+ beq _0203BBAE
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0203BBAE:
+ ldr r0, [r4, #0x0]
+ bl FUN_02016A18
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+ mov r0, #0x1
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0203BBBC
+FUN_0203BBBC: ; 0x0203BBBC
+ push {r4-r6, lr}
+ add r0, #0x80
+ ldr r5, [r0, #0x0]
+ mov r1, #0x13
+ add r0, r5, #0x0
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ ldr r6, [r4, #0x0]
+ bl FUN_0204647C
+ cmp r0, #0x0
+ beq _0203BBDC
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_0203BBDC:
+ ldr r0, [r6, #0x8]
+ cmp r0, #0x1
+ bne _0203BBF4
+ mov r0, #0xb
+ bl FUN_02029048
+ add r5, #0x98
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ mov r2, #0x1
+ bl FUN_02028AD4
+_0203BBF4:
+ ldr r0, [r4, #0x0]
+ bl FUN_02016A18
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+ mov r0, #0x1
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203BC04
+FUN_0203BC04: ; 0x0203BC04
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_0204647C
+ cmp r0, #0x0
+ bne _0203BC16
+ mov r0, #0x1
+ pop {r3, pc}
+_0203BC16:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203BC1C
+FUN_0203BC1C: ; 0x0203BC1C
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x10]
+ bl FUN_0204AF84
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0203BC2C
+FUN_0203BC2C: ; 0x0203BC2C
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x10]
+ bl FUN_0204AF3C
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0203BC3C
+FUN_0203BC3C: ; 0x0203BC3C
+ push {r3-r5, lr}
+ ldr r0, [r0, #0xc]
+ add r5, r1, #0x0
+ add r4, r2, #0x0
+ bl FUN_02027E24
+ cmp r5, #0x0
+ bne _0203BC5A
+ add r1, r4, #0x0
+ bl FUN_02027098
+ cmp r0, #0x0
+ bne _0203BC68
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0203BC5A:
+ add r1, r4, #0x0
+ bl FUN_020270B4
+ cmp r0, #0x0
+ bne _0203BC68
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0203BC68:
+ mov r0, #0x1
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0203BC6C
+FUN_0203BC6C: ; 0x0203BC6C
+ push {r3-r7, lr}
+ add r5, r1, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [r5, #0xc]
+ add r4, r2, #0x0
+ add r6, r3, #0x0
+ bl FUN_02027E24
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_0203BC3C
+ cmp r0, #0x0
+ bne _0203BC90
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0203BC90:
+ ldr r0, [sp, #0x0]
+ mov r1, #0xc
+ bl FUN_02016998
+ mov r1, #0x0
+ strb r1, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ strb r1, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ strb r1, [r0, #0x4]
+ strb r1, [r0, #0x5]
+ strb r1, [r0, #0x6]
+ strb r1, [r0, #0x7]
+ strb r1, [r0, #0x8]
+ strb r1, [r0, #0x9]
+ strb r1, [r0, #0xa]
+ strb r1, [r0, #0xb]
+ str r7, [r0, #0x0]
+ str r4, [r0, #0x8]
+ str r6, [r0, #0x4]
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203BCBC
+FUN_0203BCBC: ; 0x0203BCBC
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_021F02C4
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203BCCC
+FUN_0203BCCC: ; 0x0203BCCC
+ push {r3, lr}
+ ldr r0, [r0, #0x74]
+ bl FUN_0206F3B8
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0203BCD8
+FUN_0203BCD8: ; 0x0203BCD8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x13
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ ldr r1, [r4, #0x0]
+ ldr r1, [r1, #0x4]
+ strh r1, [r0, #0x0]
+ ldr r0, [r4, #0x0]
+ bl FUN_02016A18
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0203BD08
+FUN_0203BD08: ; 0x0203BD08
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ bl FUN_02031190
+ strh r0, [r4, #0x0]
+ mov r0, #0x1
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203BD28
+FUN_0203BD28: ; 0x0203BD28
+ push {r4-r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x14
+ bl FUN_02039438
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x4
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r2, _0203BDB4 ; =0x000003D9
+ ldr r0, [r0, #0x8]
+ mov r1, #0x3
+ mov r3, #0xb
+ bl FUN_0200CB00
+ mov r0, #0xb
+ str r0, [sp, #0x0]
+ ldr r0, _0203BDB4 ; =0x000003D9
+ mov r1, #0x3
+ str r0, [sp, #0x4]
+ lsl r0, r7, #0x18
+ str r4, [sp, #0x8]
+ lsr r0, r0, #0x18
+ str r0, [sp, #0xc]
+ mov r0, #0x4
+ str r0, [sp, #0x10]
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r2, #0xa
+ ldr r0, [r0, #0x8]
+ mov r3, #0x5
+ bl FUN_0200DC4C
+ add r5, #0x80
+ str r0, [r6, #0x0]
+ ldr r0, [r5, #0x0]
+ add r1, r4, #0x0
+ bl FUN_0203ED2C
+ mov r0, #0x0
+ add sp, #0x14
+ pop {r4-r7, pc}
+ .balign 4
+_0203BDB4: .word 0x000003D9
+
+ thumb_func_start FUN_0203BDB8
+FUN_0203BDB8: ; 0x0203BDB8
+ push {r4-r6, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x14
+ bl FUN_02039438
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_0206BB1C
+ add r1, r4, #0x0
+ bl FUN_0206B9B0
+ add r4, r0, #0x0
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x4
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r2, _0203BE4C ; =0x000003D9
+ ldr r0, [r0, #0x8]
+ mov r1, #0x3
+ mov r3, #0xb
+ bl FUN_0200CB00
+ mov r0, #0xb
+ str r0, [sp, #0x0]
+ ldr r0, _0203BE4C ; =0x000003D9
+ mov r1, #0x3
+ str r0, [sp, #0x4]
+ str r4, [sp, #0x8]
+ mov r0, #0x4
+ str r0, [sp, #0xc]
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r2, #0xa
+ ldr r0, [r0, #0x8]
+ mov r3, #0x5
+ bl FUN_0200DCA4
+ str r0, [r6, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0x5
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r1, r0, #0x0
+ add r5, #0x80
+ lsl r1, r1, #0x10
+ ldr r0, [r5, #0x0]
+ lsr r1, r1, #0x10
+ bl FUN_0203ED2C
+ mov r0, #0x0
+ add sp, #0x10
+ pop {r4-r6, pc}
+ .balign 4
+_0203BE4C: .word 0x000003D9
+
+ thumb_func_start FUN_0203BE50
+FUN_0203BE50: ; 0x0203BE50
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x14
+ bl FUN_02039438
+ ldr r0, [r0, #0x0]
+ mov r1, #0x1
+ strb r1, [r0, #0x0]
+ add r0, r1, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203BE68
+FUN_0203BE68: ; 0x0203BE68
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x14
+ bl FUN_02039438
+ ldr r0, [r0, #0x0]
+ mov r1, #0x2
+ strb r1, [r0, #0x0]
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203BE80
+FUN_0203BE80: ; 0x0203BE80
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ str r0, [r4, #0x64]
+ ldr r1, _0203BE98 ; =FUN_0203BE9C
+ add r0, r4, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r4, pc}
+ nop
+_0203BE98: .word FUN_0203BE9C
+
+ thumb_func_start FUN_0203BE9C
+FUN_0203BE9C: ; 0x0203BE9C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x14
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ ldr r1, [r5, #0x64]
+ add r0, #0x80
+ lsl r1, r1, #0x10
+ ldr r0, [r0, #0x0]
+ lsr r1, r1, #0x10
+ bl FUN_020394B8
+ ldr r0, [r4, #0x0]
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x3
+ beq _0203BEC8
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0203BEC8:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0203BECC
+FUN_0203BECC: ; 0x0203BECC
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ add r1, r6, #0x0
+ bl FUN_020394B8
+ add r2, r0, #0x0
+ ldr r0, [r5, #0x74]
+ ldr r1, [r4, #0x0]
+ bl FUN_021E1374
+ mov r0, #0x1
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203BF00
+FUN_0203BF00: ; 0x0203BF00
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xa
+ bl FUN_02039438
+ ldr r1, [r0, #0x0]
+ cmp r1, #0x0
+ beq _0203BF1C
+ add r4, #0x80
+ ldr r0, [r4, #0x0]
+ bl FUN_021E1994
+_0203BF1C:
+ mov r0, #0x0
+ pop {r4, pc}
+
+ thumb_func_start FUN_0203BF20
+FUN_0203BF20: ; 0x0203BF20
+ push {r3, lr}
+ ldr r0, [r0, #0x74]
+ bl FUN_0208A338
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0203BF2C
+FUN_0203BF2C: ; 0x0203BF2C
+ push {r3-r6, lr}
+ sub sp, #0x4
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r5, #0x80
+ ldr r2, [r5, #0x0]
+ add r1, r6, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [r2, #0x10]
+ ldr r2, [r2, #0xc]
+ add r3, r4, #0x0
+ bl FUN_020380CC
+ mov r0, #0x1
+ add sp, #0x4
+ pop {r3-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203BF84
+FUN_0203BF84: ; 0x0203BF84
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x13
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r1, r5, #0x0
+ add r1, #0x80
+ add r6, r0, #0x0
+ ldr r1, [r1, #0x0]
+ mov r0, #0xb
+ mov r2, #0x0
+ add r3, r7, #0x0
+ bl FUN_0203BC6C
+ str r0, [r4, #0x0]
+ cmp r0, #0x0
+ bne _0203BFCC
+ mov r0, #0x1
+ strh r0, [r6, #0x0]
+ pop {r3-r7, pc}
+_0203BFCC:
+ mov r0, #0x0
+ strh r0, [r6, #0x0]
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r1, [r4, #0x0]
+ bl FUN_02038130
+ ldr r1, _0203BFE8 ; =FUN_0203BB90
+ add r0, r5, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r3-r7, pc}
+ .balign 4
+_0203BFE8: .word FUN_0203BB90
+
+ thumb_func_start FUN_0203BFEC
+FUN_0203BFEC: ; 0x0203BFEC
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x13
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r1, r5, #0x0
+ add r1, #0x80
+ add r6, r0, #0x0
+ ldr r1, [r1, #0x0]
+ mov r0, #0xb
+ mov r2, #0x1
+ add r3, r7, #0x0
+ bl FUN_0203BC6C
+ str r0, [r4, #0x0]
+ cmp r0, #0x0
+ bne _0203C034
+ mov r0, #0x1
+ strh r0, [r6, #0x0]
+ pop {r3-r7, pc}
+_0203C034:
+ mov r0, #0x0
+ strh r0, [r6, #0x0]
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r1, [r4, #0x0]
+ bl FUN_02038130
+ ldr r1, _0203C050 ; =FUN_0203BB90
+ add r0, r5, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r3-r7, pc}
+ .balign 4
+_0203C050: .word FUN_0203BB90
+
+ thumb_func_start FUN_0203C054
+FUN_0203C054: ; 0x0203C054
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ mov r1, #0x0
+ add r2, r6, #0x0
+ bl FUN_0203BC3C
+ cmp r0, #0x1
+ bne _0203C088
+ mov r0, #0x1
+ strh r0, [r4, #0x0]
+ pop {r4-r6, pc}
+_0203C088:
+ mov r0, #0x0
+ strh r0, [r4, #0x0]
+ mov r0, #0x1
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0203C090
+FUN_0203C090: ; 0x0203C090
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ mov r1, #0x1
+ add r2, r6, #0x0
+ bl FUN_0203BC3C
+ cmp r0, #0x1
+ bne _0203C0C4
+ mov r0, #0x1
+ strh r0, [r4, #0x0]
+ pop {r4-r6, pc}
+_0203C0C4:
+ mov r0, #0x0
+ strh r0, [r4, #0x0]
+ mov r0, #0x1
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0203C0CC
+FUN_0203C0CC: ; 0x0203C0CC
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02027E24
+ mov r1, #0x0
+ bl FUN_02027008
+ add r1, r4, #0x0
+ bl FUN_02027478
+ mov r0, #0x1
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0203C0FC
+FUN_0203C0FC: ; 0x0203C0FC
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_02038804
+ ldr r1, _0203C114 ; =FUN_0203BC04
+ add r0, r4, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r4, pc}
+ .balign 4
+_0203C114: .word FUN_0203BC04
+
+ thumb_func_start FUN_0203C118
+FUN_0203C118: ; 0x0203C118
+ push {r3, lr}
+ add r1, r0, #0x0
+ ldr r0, [r1, #0x74]
+ add r1, #0x80
+ ldr r1, [r1, #0x0]
+ ldr r1, [r1, #0xc]
+ bl FUN_02085F48
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0203C12C
+FUN_0203C12C: ; 0x0203C12C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x13
+ bl FUN_02039438
+ mov r1, #0x5
+ add r4, r0, #0x0
+ mov r0, #0xb
+ lsl r1, r1, #0x6
+ bl FUN_02016998
+ str r0, [r4, #0x0]
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r1, [r4, #0x0]
+ mov r2, #0x2
+ bl FUN_0205F7A0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r1, [r4, #0x0]
+ bl FUN_02037E90
+ ldr r1, _0203C170 ; =FUN_0203BB90
+ add r0, r5, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ nop
+_0203C170: .word FUN_0203BB90
+
+ thumb_func_start FUN_0203C174
+FUN_0203C174: ; 0x0203C174
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x13
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r2, #0xb
+ bl FUN_02088960
+ str r0, [r4, #0x0]
+ ldr r1, _0203C1A8 ; =FUN_0203BB90
+ add r0, r5, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ .balign 4
+_0203C1A8: .word FUN_0203BB90
+
+ thumb_func_start FUN_0203C1AC
+FUN_0203C1AC: ; 0x0203C1AC
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_0206F158
+ mov r1, #0x4
+ bl FUN_0206EE64
+ cmp r0, #0x0
+ bne _0203C1E0
+ mov r0, #0x1
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0203C1E0:
+ add r5, #0x80
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02028048
+ bl FUN_020281B8
+ cmp r0, #0x64
+ blo _0203C1FA
+ mov r0, #0x2
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0203C1FA:
+ mov r0, #0x0
+ strh r0, [r4, #0x0]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0203C200
+FUN_0203C200: ; 0x0203C200
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x13
+ bl FUN_02039438
+ add r6, r0, #0x0
+ mov r0, #0xb
+ mov r1, #0x8
+ bl FUN_02016998
+ mov r1, #0x0
+ mov r2, #0x8
+ str r0, [r6, #0x0]
+ add r4, r0, #0x0
+ blx MI_CpuFill8
+ ldr r0, [sp, #0x0]
+ strh r7, [r4, #0x4]
+ strh r0, [r4, #0x6]
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ str r0, [r4, #0x0]
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r1, [r6, #0x0]
+ bl FUN_02037FE4
+ ldr r1, _0203C274 ; =FUN_0203BB90
+ add r0, r5, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r3-r7, pc}
+ .balign 4
+_0203C274: .word FUN_0203BB90
+
+ thumb_func_start FUN_0203C278
+FUN_0203C278: ; 0x0203C278
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x13
+ bl FUN_02039438
+ add r4, r0, #0x0
+ mov r0, #0xb
+ mov r1, #0xc
+ bl FUN_02016998
+ add r1, r5, #0x0
+ add r1, #0x80
+ ldr r1, [r1, #0x0]
+ ldr r1, [r1, #0xc]
+ str r1, [r0, #0x0]
+ ldr r2, [r5, #0x8]
+ add r1, r2, #0x1
+ str r1, [r5, #0x8]
+ ldrb r1, [r2, #0x0]
+ str r1, [r0, #0x4]
+ str r0, [r4, #0x0]
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r1, [r4, #0x0]
+ bl FUN_02037D60
+ ldr r1, _0203C2C0 ; =FUN_0203BBBC
+ add r0, r5, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ nop
+_0203C2C0: .word FUN_0203BBBC
+
+ thumb_func_start FUN_0203C2C4
+FUN_0203C2C4: ; 0x0203C2C4
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020383F8
+ ldr r1, _0203C2DC ; =FUN_0203BC04
+ add r0, r4, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r4, pc}
+ .balign 4
+_0203C2DC: .word FUN_0203BC04
+
+ thumb_func_start FUN_0203C2E0
+FUN_0203C2E0: ; 0x0203C2E0
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_02065344
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203C2F0
+FUN_0203C2F0: ; 0x0203C2F0
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x10]
+ bl FUN_020383D8
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0203C300
+FUN_0203C300: ; 0x0203C300
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x13
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_0203842C
+ str r0, [r4, #0x0]
+ ldr r1, _0203C328 ; =FUN_0203BB90
+ add r0, r5, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ .balign 4
+_0203C328: .word FUN_0203BB90
+
+ thumb_func_start FUN_0203C32C
+FUN_0203C32C: ; 0x0203C32C
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x10]
+ bl FUN_02048694
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0203C33C
+FUN_0203C33C: ; 0x0203C33C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x13
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_02038824
+ str r0, [r4, #0x0]
+ ldr r1, _0203C364 ; =FUN_0203BB90
+ add r0, r5, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ .balign 4
+_0203C364: .word FUN_0203BB90
+
+ thumb_func_start FUN_0203C368
+FUN_0203C368: ; 0x0203C368
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_0203384C
+ cmp r0, #0x0
+ beq _0203C3BC
+ mov r0, #0x1
+ strh r0, [r4, #0x0]
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ add r1, r6, #0x0
+ bl FUN_020386E0
+ ldr r1, _0203C3C4 ; =FUN_0203BC04
+ add r0, r5, #0x0
+ bl SetupNativeScript
+ b _0203C3C0
+_0203C3BC:
+ mov r0, #0x0
+ strh r0, [r4, #0x0]
+_0203C3C0:
+ mov r0, #0x1
+ pop {r4-r6, pc}
+ .balign 4
+_0203C3C4: .word FUN_0203BC04
+
+ thumb_func_start FUN_0203C3C8
+FUN_0203C3C8: ; 0x0203C3C8
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x74]
+ bl FUN_0206F3D8
+ mov r0, #0x1
+ pop {r4, pc}
+
+ thumb_func_start FUN_0203C3E8
+FUN_0203C3E8: ; 0x0203C3E8
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x14
+ bl FUN_02039438
+ add r4, r0, #0x0
+ mov r0, #0xb
+ mov r1, #0x8
+ bl FUN_02016998
+ str r0, [r4, #0x0]
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl LoadPlayerDataAddress
+ str r0, [r6, #0x4]
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r1, [r4, #0x0]
+ bl FUN_020386A4
+ ldr r1, _0203C42C ; =FUN_0203BC04
+ add r0, r5, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r4-r6, pc}
+ nop
+_0203C42C: .word FUN_0203BC04
+
+ thumb_func_start FUN_0203C430
+FUN_0203C430: ; 0x0203C430
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x14
+ bl FUN_02039438
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ ldr r1, [r4, #0x0]
+ ldr r1, [r1, #0x0]
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ bl FUN_0205F378
+ ldr r0, [r4, #0x0]
+ bl FUN_02016A18
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0203C460
+FUN_0203C460: ; 0x0203C460
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r1, [r5, #0x8]
+ add r0, r1, #0x1
+ str r0, [r5, #0x8]
+ ldrb r0, [r1, #0x0]
+ cmp r0, #0x0
+ beq _0203C474
+ mov r0, #0x1
+ b _0203C476
+_0203C474:
+ mov r0, #0x0
+_0203C476:
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x13
+ bl FUN_02039438
+ add r6, r0, #0x0
+ ldr r0, [r6, #0x0]
+ cmp r0, #0x0
+ beq _0203C492
+ bl ErrorHandling
+_0203C492:
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ add r1, r4, #0x0
+ bl FUN_0203789C
+ str r0, [r6, #0x0]
+ ldr r1, _0203C4AC ; =FUN_0203BC04
+ add r0, r5, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r4-r6, pc}
+ .balign 4
+_0203C4AC: .word FUN_0203BC04
+
+ thumb_func_start FUN_0203C4B0
+FUN_0203C4B0: ; 0x0203C4B0
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r4, #0x80
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ mov r1, #0x13
+ bl FUN_02039438
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ bne _0203C4DC
+ bl ErrorHandling
+_0203C4DC:
+ ldr r0, [r4, #0x0]
+ bl FUN_020378FC
+ strh r0, [r5, #0x0]
+ ldr r0, [r4, #0x0]
+ bl FUN_02016A18
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0203C4F0
+FUN_0203C4F0: ; 0x0203C4F0
+ push {r3-r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ str r1, [sp, #0x4]
+ str r0, [sp, #0x8]
+ ldr r0, [r4, #0x74]
+ add r2, r1, #0x0
+ mov r3, #0x7
+ bl FUN_020385CC
+ mov r0, #0x1
+ add sp, #0xc
+ pop {r3-r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203C520
+FUN_0203C520: ; 0x0203C520
+ push {r4-r7, lr}
+ sub sp, #0x34
+ add r5, r0, #0x0
+ add r1, r5, #0x0
+ add r1, #0x80
+ ldr r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ ldr r0, [r4, #0xc]
+ bl FUN_0206BB1C
+ add r1, r6, #0x0
+ bl FUN_0206B9B0
+ mov r1, #0x74
+ add r2, sp, #0xc
+ add r7, r0, #0x0
+ bl FUN_020671BC
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ add r0, r7, #0x0
+ mov r1, #0x5
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r2, r0, #0x0
+ str r6, [sp, #0x0]
+ add r0, sp, #0xc
+ str r0, [sp, #0x4]
+ str r4, [sp, #0x8]
+ ldr r0, [r5, #0x74]
+ mov r1, #0x1
+ mov r3, #0xa
+ bl FUN_020385CC
+ mov r0, #0x1
+ add sp, #0x34
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_0203C58C
+FUN_0203C58C: ; 0x0203C58C
+ push {r3-r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ mov r2, #0x0
+ str r2, [sp, #0x0]
+ str r2, [sp, #0x4]
+ str r0, [sp, #0x8]
+ ldr r0, [r4, #0x74]
+ mov r1, #0x6
+ mov r3, #0xa
+ bl FUN_020385CC
+ mov r0, #0x1
+ add sp, #0xc
+ pop {r3-r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203C5BC
+FUN_0203C5BC: ; 0x0203C5BC
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r2, r0, #0x0
+ ldr r0, _0203C610 ; =0x0000FFFF
+ add r5, #0x80
+ strh r0, [r2, #0x0]
+ ldr r0, [r5, #0x0]
+ add r1, r4, #0x0
+ ldr r0, [r0, #0x10]
+ mov r3, #0x0
+ bl FUN_02037E18
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ nop
+_0203C610: .word 0x0000FFFF
+
+ thumb_func_start FUN_0203C614
+FUN_0203C614: ; 0x0203C614
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r3, r0, #0x0
+ ldr r0, _0203C67C ; =0x0000FFFF
+ add r5, #0x80
+ strh r0, [r4, #0x0]
+ strh r0, [r3, #0x0]
+ ldr r0, [r5, #0x0]
+ add r1, r6, #0x0
+ ldr r0, [r0, #0x10]
+ add r2, r4, #0x0
+ bl FUN_02037E18
+ mov r0, #0x1
+ pop {r4-r6, pc}
+ .balign 4
+_0203C67C: .word 0x0000FFFF
+
+ thumb_func_start FUN_0203C680
+FUN_0203C680: ; 0x0203C680
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r2, r0, #0x0
+ ldr r0, [r4, #0x0]
+ add r1, r6, #0x0
+ bl FUN_0200B518
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203C6C4
+FUN_0203C6C4: ; 0x0203C6C4
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ str r4, [sp, #0x0]
+ add r3, r0, #0x0
+ str r6, [sp, #0x4]
+ mov r0, #0x4
+ str r0, [sp, #0x8]
+ mov r0, #0x0
+ add r1, r7, #0x0
+ add r2, r7, #0x0
+ bl FUN_0200E1D0
+ mov r0, #0x0
+ bl FUN_0200E388
+ mov r0, #0x1
+ bl FUN_0200E388
+ mov r0, #0x0
+ add sp, #0xc
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_0203C70C
+FUN_0203C70C: ; 0x0203C70C
+ push {r3, lr}
+ ldr r1, _0203C718 ; =FUN_0203C71C
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+_0203C718: .word FUN_0203C71C
+
+ thumb_func_start FUN_0203C71C
+FUN_0203C71C: ; 0x0203C71C
+ push {r3, lr}
+ bl FUN_0200E308
+ cmp r0, #0x1
+ bne _0203C72A
+ mov r0, #0x1
+ pop {r3, pc}
+_0203C72A:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203C730
+FUN_0203C730: ; 0x0203C730
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ str r4, [sp, #0x0]
+ str r0, [sp, #0x4]
+ mov r2, #0x0
+ ldr r0, [r5, #0x74]
+ add r1, r6, #0x0
+ mvn r2, r2
+ add r3, r7, #0x0
+ bl FUN_02049240
+ mov r0, #0x1
+ add sp, #0x8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0203C788
+FUN_0203C788: ; 0x0203C788
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ str r4, [sp, #0x0]
+ mov r2, #0x0
+ add r5, #0x80
+ str r0, [sp, #0x4]
+ ldr r0, [r5, #0x0]
+ add r1, r6, #0x0
+ ldr r0, [r0, #0x10]
+ mvn r2, r2
+ add r3, r7, #0x0
+ bl FUN_02049F98
+ mov r0, #0x1
+ add sp, #0x8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0203C7E4
+FUN_0203C7E4: ; 0x0203C7E4
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x10]
+ bl FUN_02049FFC
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0203C7F4
+FUN_0203C7F4: ; 0x0203C7F4
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02034E30
+ bl FUN_02034DC8
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ ldr r1, [r5, #0x0]
+ strh r1, [r0, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0203C820
+FUN_0203C820: ; 0x0203C820
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r4, #0x80
+ ldr r1, [r4, #0x0]
+ ldr r1, [r1, #0x1c]
+ ldr r1, [r1, #0x0]
+ strh r1, [r0, #0x0]
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203C844
+FUN_0203C844: ; 0x0203C844
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x38]
+ bl FUN_020552F8
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x74]
+ add r2, r4, #0x0
+ bl FUN_021E6990
+ mov r0, #0x1
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0203C874
+FUN_0203C874: ; 0x0203C874
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ add r0, #0x90
+ ldr r0, [r0, #0x0]
+ bl FUN_0205DD40
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x38]
+ bl FUN_020552F8
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x74]
+ add r2, r4, #0x0
+ bl FUN_021E6410
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203C8B4
+FUN_0203C8B4: ; 0x0203C8B4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x38]
+ bl FUN_020552F8
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x74]
+ add r2, r4, #0x0
+ bl FUN_021E6BF4
+ mov r0, #0x1
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0203C8E4
+FUN_0203C8E4: ; 0x0203C8E4
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ str r0, [sp, #0x0]
+ mov r2, #0x1
+ str r2, [sp, #0x4]
+ add r5, #0x80
+ ldr r0, [r5, #0x0]
+ add r1, r4, #0x0
+ sub r2, r2, #0x2
+ add r3, r6, #0x0
+ bl FUN_02049274
+ mov r0, #0x1
+ add sp, #0x8
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0203C930
+FUN_0203C930: ; 0x0203C930
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02034E30
+ add r5, r0, #0x0
+ mov r1, #0x0
+ bl FUN_02034DF4
+ add r0, r5, #0x0
+ bl FUN_02034DEC
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ ldr r0, [r0, #0x4]
+ ldr r0, [r0, #0xc]
+ bl FUN_021DC174
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203C960
+FUN_0203C960: ; 0x0203C960
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02034E30
+ add r5, r0, #0x0
+ mov r1, #0x0
+ bl FUN_02034DF4
+ add r0, r5, #0x0
+ bl FUN_02034DEC
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ ldr r0, [r0, #0x4]
+ ldr r0, [r0, #0xc]
+ bl FUN_021DC174
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203C990
+FUN_0203C990: ; 0x0203C990
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x14
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_0206BB1C
+ add r1, r6, #0x0
+ bl FUN_0206B9B0
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x38]
+ bl FUN_020553E8
+ add r3, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x0
+ add r2, r6, #0x0
+ bl FUN_0224666C
+ str r0, [r4, #0x0]
+ ldr r1, _0203C9F4 ; =FUN_0203C9F8
+ add r0, r5, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r4-r6, pc}
+ nop
+_0203C9F4: .word FUN_0203C9F8
+
+ thumb_func_start FUN_0203C9F8
+FUN_0203C9F8: ; 0x0203C9F8
+ push {r4, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x14
+ bl FUN_02039438
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_022466A0
+ cmp r0, #0x1
+ bne _0203CA1A
+ ldr r0, [r4, #0x0]
+ bl FUN_022466AC
+ mov r0, #0x1
+ pop {r4, pc}
+_0203CA1A:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203CA20
+FUN_0203CA20: ; 0x0203CA20
+ push {r3, lr}
+ ldr r0, [r0, #0x74]
+ bl FUN_021E7030
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0203CA2C
+FUN_0203CA2C: ; 0x0203CA2C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0x38]
+ bl FUN_020553C4
+ cmp r0, #0x1
+ bne _0203CA54
+ mov r0, #0x1
+ b _0203CA56
+_0203CA54:
+ mov r0, #0x0
+_0203CA56:
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0203CA5C
+FUN_0203CA5C: ; 0x0203CA5C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x8]
+ add r0, r1, #0x1
+ str r0, [r4, #0x8]
+ ldrb r0, [r1, #0x0]
+ cmp r0, #0x1
+ bne _0203CAA4
+ add r0, r4, #0x0
+ add r0, #0x80
+ mov r1, #0x12
+ ldr r0, [r0, #0x0]
+ lsl r1, r1, #0x6
+ bl FUN_0204AB20
+ add r0, r4, #0x0
+ add r0, #0x80
+ mov r1, #0x12
+ ldr r0, [r0, #0x0]
+ lsl r1, r1, #0x6
+ mov r2, #0x1
+ bl FUN_0204ABDC
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x2
+ ldr r0, [r0, #0x38]
+ bl FUN_021E5FD8
+ add r4, #0x80
+ ldr r0, [r4, #0x0]
+ ldr r0, [r0, #0x38]
+ bl FUN_021E5FE0
+ b _0203CAE4
+_0203CAA4:
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x1
+ ldr r0, [r0, #0x38]
+ bl FUN_021E5FD8
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x38]
+ bl FUN_021E5FE0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x0
+ bl FUN_0204AB20
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r1, [r0, #0x1c]
+ ldr r1, [r1, #0x0]
+ bl FUN_0204AB58
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ mov r2, #0x1
+ bl FUN_0204ABDC
+_0203CAE4:
+ mov r0, #0x0
+ pop {r4, pc}
+
+ thumb_func_start FUN_0203CAE8
+FUN_0203CAE8: ; 0x0203CAE8
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x2
+ ldr r0, [r0, #0x38]
+ bl FUN_021E5FD8
+ add r4, #0x80
+ mov r1, #0x12
+ ldr r0, [r4, #0x0]
+ lsl r1, r1, #0x6
+ bl FUN_0204AB20
+ mov r0, #0x0
+ pop {r4, pc}
+
+ thumb_func_start FUN_0203CB08
+FUN_0203CB08: ; 0x0203CB08
+ push {r3, lr}
+ ldr r2, [r0, #0x8]
+ add r1, r2, #0x1
+ str r1, [r0, #0x8]
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldrb r1, [r2, #0x0]
+ ldr r0, [r0, #0x38]
+ bl FUN_02055720
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_0203CB20
+FUN_0203CB20: ; 0x0203CB20
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0x38]
+ bl FUN_020553C4
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203CB48
+FUN_0203CB48: ; 0x0203CB48
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ ldr r0, [r0, #0x38]
+ bl FUN_020553D4
+ mov r0, #0x1
+ pop {r4, pc}
+
+ thumb_func_start FUN_0203CB60
+FUN_0203CB60: ; 0x0203CB60
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x38]
+ bl FUN_021E5FE0
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_0203CB70
+FUN_0203CB70: ; 0x0203CB70
+ push {r4-r6, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_0202A9B0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x2
+ bl FUN_0202A990
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ bl FUN_02245910
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203CBBC
+FUN_0203CBBC: ; 0x0203CBBC
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205F388
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203CBE8
+FUN_0203CBE8: ; 0x0203CBE8
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r4, [r0, #0x0]
+ mov r1, #0x8
+ add r0, r4, #0x0
+ bl FUN_02039438
+ add r0, r4, #0x0
+ mov r1, #0x10
+ bl FUN_02039438
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x6
+ bl FUN_02039438
+ add r0, r4, #0x0
+ mov r1, #0x3
+ bl FUN_02039438
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r1, r0, #0x0
+ ldr r0, [sp, #0x0]
+ ldr r2, [r6, #0x0]
+ mov r3, #0xb
+ bl FUN_0206AD4C
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_02039438
+ mov r1, #0xf
+ bl FUN_02019620
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl LoadPlayerDataAddress
+ add r2, r0, #0x0
+ ldr r1, [r6, #0x0]
+ add r0, r4, #0x0
+ mov r3, #0x1
+ bl FUN_02054658
+ strb r0, [r7, #0x0]
+ ldr r1, _0203CC84 ; =FUN_0203A2F0
+ add r0, r5, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r3-r7, pc}
+ .balign 4
+_0203CC84: .word FUN_0203A2F0
+
+ thumb_func_start FUN_0203CC88
+FUN_0203CC88: ; 0x0203CC88
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ add r1, r5, #0x0
+ add r1, #0x80
+ ldr r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r6, r0, #0x0
+ ldr r2, [sp, #0x0]
+ ldr r3, [sp, #0x4]
+ add r0, r4, #0x0
+ add r1, r7, #0x0
+ bl FUN_02240790
+ ldr r1, _0203CCF4 ; =FUN_0203CCF8
+ add r0, r5, #0x0
+ str r6, [r5, #0x64]
+ bl SetupNativeScript
+ mov r0, #0x1
+ add sp, #0x8
+ pop {r3-r7, pc}
+ nop
+_0203CCF4: .word FUN_0203CCF8
+
+ thumb_func_start FUN_0203CCF8
+FUN_0203CCF8: ; 0x0203CCF8
+ push {r4, lr}
+ add r1, r0, #0x0
+ ldr r1, [r1, #0x64]
+ add r0, #0x80
+ lsl r1, r1, #0x10
+ ldr r0, [r0, #0x0]
+ lsr r1, r1, #0x10
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ bl FUN_022407DC
+ cmp r0, #0x0
+ bne _0203CD18
+ mov r0, #0x0
+ pop {r4, pc}
+_0203CD18:
+ strh r0, [r4, #0x0]
+ mov r0, #0x1
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203CD20
+FUN_0203CD20: ; 0x0203CD20
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ add r1, r5, #0x0
+ add r1, #0x80
+ ldr r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r6, r0, #0x0
+ ldr r2, [sp, #0x0]
+ ldr r3, [sp, #0x4]
+ add r0, r4, #0x0
+ add r1, r7, #0x0
+ bl FUN_022407F8
+ ldr r1, _0203CD8C ; =FUN_0203CD90
+ add r0, r5, #0x0
+ str r6, [r5, #0x64]
+ bl SetupNativeScript
+ mov r0, #0x1
+ add sp, #0x8
+ pop {r3-r7, pc}
+ nop
+_0203CD8C: .word FUN_0203CD90
+
+ thumb_func_start FUN_0203CD90
+FUN_0203CD90: ; 0x0203CD90
+ push {r4, lr}
+ add r1, r0, #0x0
+ ldr r1, [r1, #0x64]
+ add r0, #0x80
+ lsl r1, r1, #0x10
+ ldr r0, [r0, #0x0]
+ lsr r1, r1, #0x10
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ bl FUN_02240844
+ cmp r0, #0x0
+ bne _0203CDB0
+ mov r0, #0x0
+ pop {r4, pc}
+_0203CDB0:
+ strh r0, [r4, #0x0]
+ mov r0, #0x1
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203CDB8
+FUN_0203CDB8: ; 0x0203CDB8
+ push {r3, lr}
+ bl ScriptReadHalfword
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203CDC4
+FUN_0203CDC4: ; 0x0203CDC4
+ push {r3, lr}
+ bl ScriptReadHalfword
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203CDD0
+FUN_0203CDD0: ; 0x0203CDD0
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x13
+ bl FUN_02039438
+ add r6, r0, #0x0
+ add r5, #0x80
+ ldr r4, [r6, #0x0]
+ ldr r0, [r5, #0x0]
+ add r1, r4, #0x0
+ ldr r0, [r0, #0x10]
+ add r1, #0x2c
+ mov r2, #0x5
+ bl FUN_02047174
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0x0
+ str r0, [r6, #0x0]
+ mov r0, #0x1
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0203CE00
+FUN_0203CE00: ; 0x0203CE00
+ push {r3, lr}
+ ldr r0, [r0, #0x74]
+ bl FUN_02080C38
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0203CE0C
+FUN_0203CE0C: ; 0x0203CE0C
+ push {r3-r4, lr}
+ sub sp, #0x14
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ str r0, [sp, #0x4]
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ str r0, [sp, #0x8]
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ str r0, [sp, #0xc]
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r4, #0x80
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02034E30
+ add r1, sp, #0x0
+ bl FUN_02034DD4
+ mov r0, #0x0
+ add sp, #0x14
+ pop {r3-r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203CE8C
+FUN_0203CE8C: ; 0x0203CE8C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02034E30
+ bl FUN_02034DD0
+ ldr r0, [r0, #0x0]
+ bl FUN_021E2608
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0203CEBC
+FUN_0203CEBC: ; 0x0203CEBC
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ str r0, [sp, #0x4]
+ bl FUN_02039438
+ add r7, r0, #0x0
+ ldr r0, [r5, #0x8]
+ add r1, r0, #0x1
+ str r1, [r5, #0x8]
+ ldrb r6, [r0, #0x0]
+ add r0, r1, #0x1
+ str r0, [r5, #0x8]
+ add r0, r5, #0x0
+ ldrb r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r3, r0, #0x0
+ ldr r0, [r7, #0x0]
+ add r1, r6, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x4]
+ add r2, r4, #0x0
+ bl FUN_021E2464
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0203CF04
+FUN_0203CF04: ; 0x0203CF04
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02024DA0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_020244A4
+ strh r0, [r5, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203CF34
+FUN_0203CF34: ; 0x0203CF34
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02024DA0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0202445C
+ strh r0, [r5, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203CF64
+FUN_0203CF64: ; 0x0203CF64
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02024DA0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02024404
+ strh r0, [r5, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203CF94
+FUN_0203CF94: ; 0x0203CF94
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02024DA0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_020243C8
+ strh r0, [r5, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203CFC4
+FUN_0203CFC4: ; 0x0203CFC4
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_0203CFC8
+FUN_0203CFC8: ; 0x0203CFC8
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02024DA0
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020238F4
+ ldr r1, [r5, #0x8]
+ str r0, [sp, #0x0]
+ add r0, r1, #0x1
+ str r0, [r5, #0x8]
+ add r0, r5, #0x0
+ ldrb r6, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ cmp r6, #0x0
+ bne _0203D02E
+ add r0, r7, #0x0
+ bl FUN_02024550
+ add r5, #0x80
+ add r6, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ mov r1, #0x2
+ mov r2, #0xa
+ bl FUN_0205F2E4
+ add r1, r0, #0x0
+ lsl r1, r1, #0x10
+ add r0, r6, #0x0
+ lsr r1, r1, #0x10
+ bl FUN_02054CC8
+ b _0203D048
+_0203D02E:
+ add r0, r7, #0x0
+ bl FUN_02024518
+ add r5, r0, #0x0
+ ldr r0, [sp, #0x0]
+ bl FUN_020239CC
+ add r1, r0, #0x0
+ lsl r1, r1, #0x10
+ add r0, r5, #0x0
+ lsr r1, r1, #0x10
+ bl FUN_02054D1C
+_0203D048:
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203D050
+FUN_0203D050: ; 0x0203D050
+ push {r3-r6, lr}
+ sub sp, #0x4
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x17
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r2, r0, #0x0
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ lsl r2, r2, #0x18
+ ldr r0, [r5, #0x74]
+ add r1, r6, #0x0
+ lsr r2, r2, #0x18
+ add r3, r4, #0x0
+ bl FUN_02046E18
+ mov r0, #0x1
+ add sp, #0x4
+ pop {r3-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203D0A4
+FUN_0203D0A4: ; 0x0203D0A4
+ push {r3-r6, lr}
+ sub sp, #0x4
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x17
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r2, r0, #0x0
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ lsl r2, r2, #0x18
+ ldr r0, [r5, #0x74]
+ add r1, r6, #0x0
+ lsr r2, r2, #0x18
+ add r3, r4, #0x0
+ bl FUN_02046E18
+ mov r0, #0x1
+ add sp, #0x4
+ pop {r3-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203D0F8
+FUN_0203D0F8: ; 0x0203D0F8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r2, r0, #0x0
+ lsl r2, r2, #0x18
+ ldr r0, [r5, #0x74]
+ add r1, r4, #0x0
+ lsr r2, r2, #0x18
+ bl FUN_02046FA0
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203D134
+FUN_0203D134: ; 0x0203D134
+ push {r3, lr}
+ ldr r0, [r0, #0x74]
+ bl FUN_020470AC
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0203D140
+FUN_0203D140: ; 0x0203D140
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_021F4DC8
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203D150
+FUN_0203D150: ; 0x0203D150
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r1, r5, #0x0
+ add r1, #0x80
+ ldr r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_021F4D80
+ strh r0, [r5, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203D178
+FUN_0203D178: ; 0x0203D178
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x17
+ bl FUN_02039438
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x74]
+ bl FUN_02046DB4
+ mov r0, #0x1
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203D194
+FUN_0203D194: ; 0x0203D194
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_021F4E7C
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203D1A4
+FUN_0203D1A4: ; 0x0203D1A4
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020386B4
+ ldr r1, _0203D1BC ; =FUN_0203BC04
+ add r0, r4, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r4, pc}
+ .balign 4
+_0203D1BC: .word FUN_0203BC04
+
+ thumb_func_start FUN_0203D1C0
+FUN_0203D1C0: ; 0x0203D1C0
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ add r1, r4, #0x0
+ add r1, #0x80
+ ldr r1, [r1, #0x0]
+ ldr r5, [r1, #0xc]
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0202280C
+ cmp r0, #0x0
+ beq _0203D1EC
+ mov r0, #0x0
+ strh r0, [r4, #0x0]
+ b _0203D210
+_0203D1EC:
+ add r0, r5, #0x0
+ bl FUN_02022804
+ cmp r0, #0x0
+ bne _0203D1FC
+ mov r0, #0x1
+ strh r0, [r4, #0x0]
+ b _0203D210
+_0203D1FC:
+ add r0, r5, #0x0
+ bl FUN_0202282C
+ cmp r0, #0x0
+ beq _0203D20C
+ mov r0, #0x2
+ strh r0, [r4, #0x0]
+ b _0203D210
+_0203D20C:
+ mov r0, #0x3
+ strh r0, [r4, #0x0]
+_0203D210:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0203D214
+FUN_0203D214: ; 0x0203D214
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r1, r5, #0x0
+ add r1, #0x80
+ ldr r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_021E85FC
+ strh r0, [r5, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203D23C
+FUN_0203D23C: ; 0x0203D23C
+ push {r3, lr}
+ ldr r0, [r0, #0x74]
+ bl FUN_021E3424
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0203D248
+FUN_0203D248: ; 0x0203D248
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_0204C1A8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0204BEC8
+ strh r0, [r5, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203D278
+FUN_0203D278: ; 0x0203D278
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r1, r5, #0x0
+ add r1, #0x80
+ ldr r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r5, r0, #0x0
+ ldr r0, [r4, #0xc]
+ bl FUN_0204C1A8
+ add r1, r5, #0x0
+ bl FUN_0204BED8
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203D2A4
+FUN_0203D2A4: ; 0x0203D2A4
+ push {r4-r6, lr}
+ add r4, r0, #0x0
+ add r1, r4, #0x0
+ add r1, #0x80
+ ldr r5, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_0204C1A8
+ add r1, r6, #0x0
+ bl FUN_0204BED0
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0203D2E4
+FUN_0203D2E4: ; 0x0203D2E4
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ str r0, [r4, #0x64]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_02031588
+ ldr r1, _0203D310 ; =FUN_0203D314
+ add r0, r4, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r4, pc}
+ nop
+_0203D310: .word FUN_0203D314
+
+ thumb_func_start FUN_0203D314
+FUN_0203D314: ; 0x0203D314
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02030F20
+ cmp r0, #0x2
+ bge _0203D324
+ mov r0, #0x1
+ pop {r4, pc}
+_0203D324:
+ ldr r0, [r4, #0x64]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_020315D8
+ pop {r4, pc}
+
+ thumb_func_start FUN_0203D330
+FUN_0203D330: ; 0x0203D330
+ push {r3, lr}
+ bl FUN_0203168C
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203D33C
+FUN_0203D33C: ; 0x0203D33C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_0205296C
+ strh r0, [r5, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203D36C
+FUN_0203D36C: ; 0x0203D36C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ add r1, r0, #0x0
+ add r5, #0x80
+ ldr r0, [r5, #0x0]
+ ldr r1, [r1, #0x0]
+ ldr r0, [r0, #0x78]
+ bl FUN_02052C0C
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203D3A4
+FUN_0203D3A4: ; 0x0203D3A4
+ push {r4, lr}
+ bl ScriptReadHalfword
+ add r4, r0, #0x0
+ cmp r4, #0x5
+ beq _0203D3BC
+ cmp r4, #0x7
+ beq _0203D3BC
+ cmp r4, #0x9
+ beq _0203D3BC
+ cmp r4, #0x6
+ bne _0203D3C2
+_0203D3BC:
+ bl FUN_02031C54
+ b _0203D3CA
+_0203D3C2:
+ cmp r4, #0xb
+ bne _0203D3CA
+ bl FUN_02031C64
+_0203D3CA:
+ bl FUN_02031190
+ cmp r0, #0x0
+ bne _0203D3D8
+ add r0, r4, #0x0
+ bl FUN_02052B74
+_0203D3D8:
+ mov r0, #0x0
+ pop {r4, pc}
+
+ thumb_func_start FUN_0203D3DC
+FUN_0203D3DC: ; 0x0203D3DC
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xa
+ bl FUN_02039438
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020377AC
+ bl FUN_020238F4
+ add r5, #0x80
+ str r0, [sp, #0x4]
+ ldr r0, [r5, #0x0]
+ bl FUN_020377AC
+ bl FUN_02013B5C
+ add r5, r0, #0x0
+ cmp r4, #0x0
+ bne _0203D432
+ ldr r0, [r7, #0x0]
+ bl FUN_02058448
+ lsl r0, r0, #0x10
+ lsr r2, r0, #0x10
+ b _0203D434
+_0203D432:
+ mov r2, #0x0
+_0203D434:
+ str r5, [sp, #0x0]
+ ldr r0, [r6, #0x0]
+ ldr r3, [sp, #0x4]
+ add r1, r4, #0x0
+ bl FUN_02052D08
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203D448
+FUN_0203D448: ; 0x0203D448
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_0208881C
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203D458
+FUN_0203D458: ; 0x0203D458
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x7c]
+ bl FUN_02052F74
+ bl FUN_02031B50
+ ldr r1, _0203D478 ; =FUN_0203D47C
+ add r0, r4, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r4, pc}
+ nop
+_0203D478: .word FUN_0203D47C
+
+ thumb_func_start FUN_0203D47C
+FUN_0203D47C: ; 0x0203D47C
+ push {r3, lr}
+ bl FUN_02030F20
+ cmp r0, #0x2
+ bge _0203D48A
+ mov r0, #0x1
+ pop {r3, pc}
+_0203D48A:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203D490
+FUN_0203D490: ; 0x0203D490
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xa
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ add r7, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_02058448
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r2, [sp, #0x0]
+ ldr r0, [r0, #0x78]
+ ldr r3, [r7, #0x0]
+ bl FUN_02052A10
+ strh r0, [r6, #0x0]
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203D4E8
+FUN_0203D4E8: ; 0x0203D4E8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x78]
+ bl FUN_020527A8
+ strh r0, [r4, #0x0]
+ ldrh r0, [r4, #0x0]
+ cmp r0, #0x0
+ beq _0203D522
+ add r5, #0x80
+ ldr r0, [r5, #0x0]
+ mov r1, #0x13
+ bl FUN_02039438
+ ldr r0, [r0, #0x0]
+ bl FUN_02016A18
+_0203D522:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203D528
+FUN_0203D528: ; 0x0203D528
+ push {r4-r6, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r5, [r0, #0x0]
+ mov r1, #0xa
+ add r0, r5, #0x0
+ bl FUN_02039438
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ ldr r0, [r6, #0x0]
+ bl FUN_02058448
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x78]
+ bl FUN_020524CC
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0203D560
+FUN_0203D560: ; 0x0203D560
+ push {r3-r7, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r5, [r0, #0x0]
+ mov r1, #0xa
+ add r0, r5, #0x0
+ bl FUN_02039438
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ ldr r0, [r6, #0x0]
+ bl FUN_02058448
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x78]
+ add r2, r7, #0x0
+ bl FUN_02052544
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203D5B0
+FUN_0203D5B0: ; 0x0203D5B0
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ str r0, [r4, #0x64]
+ ldr r1, _0203D5C8 ; =FUN_0203D5CC
+ add r0, r4, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r4, pc}
+ nop
+_0203D5C8: .word FUN_0203D5CC
+
+ thumb_func_start FUN_0203D5CC
+FUN_0203D5CC: ; 0x0203D5CC
+ push {r4-r6, lr}
+ add r6, r0, #0x0
+ add r0, #0x80
+ ldr r5, [r0, #0x0]
+ ldr r0, [r5, #0x78]
+ bl FUN_02052604
+ ldr r1, [r6, #0x64]
+ add r4, r0, #0x0
+ lsl r1, r1, #0x10
+ add r0, r5, #0x0
+ lsr r1, r1, #0x10
+ bl FUN_020394B8
+ cmp r4, #0x0
+ bne _0203D5F0
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_0203D5F0:
+ strh r4, [r0, #0x0]
+ mov r0, #0x1
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203D5F8
+FUN_0203D5F8: ; 0x0203D5F8
+ push {r3, lr}
+ add r0, #0x80
+ ldr r1, [r0, #0x0]
+ ldr r0, [r1, #0x34]
+ ldr r1, [r1, #0x7c]
+ bl FUN_020534DC
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203D60C
+FUN_0203D60C: ; 0x0203D60C
+ push {r3, lr}
+ mov r0, #0x4
+ bl FUN_02052B74
+ bl FUN_02031C2C
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_0203D61C
+FUN_0203D61C: ; 0x0203D61C
+ push {r3, lr}
+ bl FUN_02031C64
+ bl FUN_02031B50
+ mov r0, #0x0
+ bl FUN_02052B74
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_0203D630
+FUN_0203D630: ; 0x0203D630
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r1, r5, #0x0
+ add r1, #0x80
+ ldr r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r2, r0, #0x0
+ ldr r0, [r4, #0x78]
+ add r1, r6, #0x0
+ bl FUN_0205265C
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203D66C
+FUN_0203D66C: ; 0x0203D66C
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ str r0, [r4, #0x64]
+ ldr r1, _0203D684 ; =FUN_0203D688
+ add r0, r4, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r4, pc}
+ nop
+_0203D684: .word FUN_0203D688
+
+ thumb_func_start FUN_0203D688
+FUN_0203D688: ; 0x0203D688
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r1, [r5, #0x64]
+ add r0, #0x80
+ lsl r1, r1, #0x10
+ ldr r0, [r0, #0x0]
+ lsr r1, r1, #0x10
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x78]
+ bl FUN_02052608
+ cmp r0, #0x1
+ blo _0203D6BC
+ add r5, #0x80
+ strh r0, [r4, #0x0]
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0x78]
+ bl FUN_02052E10
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0203D6BC:
+ mov r0, #0x0
+ strh r0, [r4, #0x0]
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203D6C4
+FUN_0203D6C4: ; 0x0203D6C4
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ str r0, [r4, #0x64]
+ ldr r1, _0203D6DC ; =FUN_0203D6E0
+ add r0, r4, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r4, pc}
+ nop
+_0203D6DC: .word FUN_0203D6E0
+
+ thumb_func_start FUN_0203D6E0
+FUN_0203D6E0: ; 0x0203D6E0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r1, [r5, #0x64]
+ add r0, #0x80
+ lsl r1, r1, #0x10
+ ldr r0, [r0, #0x0]
+ lsr r1, r1, #0x10
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x78]
+ bl FUN_02052648
+ ldr r1, _0203D724 ; =0x021C48B8
+ ldr r2, [r1, #0x48]
+ mov r1, #0x2
+ tst r1, r2
+ beq _0203D716
+ add r5, #0x80
+ ldr r0, [r5, #0x0]
+ mov r1, #0x8
+ ldr r0, [r0, #0x78]
+ bl FUN_02052718
+_0203D716:
+ cmp r0, #0x0
+ beq _0203D720
+ strh r0, [r4, #0x0]
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0203D720:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+_0203D724: .word 0x021C48B8
+
+ thumb_func_start FUN_0203D728
+FUN_0203D728: ; 0x0203D728
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x10]
+ bl FUN_02049EA4
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0203D738
+FUN_0203D738: ; 0x0203D738
+ push {r4-r6, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020377AC
+ bl FUN_020238F4
+ add r4, #0x80
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_020239BC
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_020239CC
+ add r1, r0, #0x0
+ ldr r2, [r4, #0x0]
+ add r0, r6, #0x0
+ bl FUN_0205363C
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203D774
+FUN_0203D774: ; 0x0203D774
+ push {r3-r7, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020377AC
+ bl FUN_020238F4
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_020239BC
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_020239CC
+ add r1, r0, #0x0
+ add r0, r6, #0x0
+ add r2, r7, #0x0
+ bl FUN_02053678
+ strh r0, [r4, #0x0]
+ add r0, r5, #0x0
+ bl FUN_020239CC
+ ldrh r1, [r4, #0x0]
+ mov r2, #0x2
+ bl FUN_020536D0
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203D7DC
+FUN_0203D7DC: ; 0x0203D7DC
+ push {r3-r7, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020377AC
+ bl FUN_020238F4
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_020239BC
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_020239CC
+ add r1, r0, #0x0
+ add r0, r6, #0x0
+ add r2, r7, #0x0
+ bl FUN_02053678
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203D834
+FUN_0203D834: ; 0x0203D834
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020377AC
+ bl FUN_020238F4
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r1, r0, #0x0
+ lsl r1, r1, #0x18
+ add r0, r4, #0x0
+ lsr r1, r1, #0x18
+ bl FUN_02023A2C
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203D868
+FUN_0203D868: ; 0x0203D868
+ push {r3, lr}
+ ldr r0, [r0, #0x74]
+ bl FUN_02048498
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0203D874
+FUN_0203D874: ; 0x0203D874
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02034E30
+ add r1, r4, #0x0
+ bl FUN_02034E04
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203D8A0
+FUN_0203D8A0: ; 0x0203D8A0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020377AC
+ bl FUN_020238F4
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_020239CC
+ strh r0, [r5, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0203D8D0
+FUN_0203D8D0: ; 0x0203D8D0
+ push {r3, lr}
+ ldr r0, [r0, #0x74]
+ bl FUN_02046528
+ ldr r0, [r0, #0xc]
+ bl FUN_0206BB1C
+ bl FUN_02085140
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203D8E8
+FUN_0203D8E8: ; 0x0203D8E8
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_0203D8EC
+FUN_0203D8EC: ; 0x0203D8EC
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02050024
+ ldr r1, _0203D900 ; =FUN_0203D904
+ add r0, r4, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r4, pc}
+ .balign 4
+_0203D900: .word FUN_0203D904
+
+ thumb_func_start FUN_0203D904
+FUN_0203D904: ; 0x0203D904
+ push {r3, lr}
+ bl FUN_02031810
+ cmp r0, #0x1
+ beq _0203D91A
+ bl FUN_0202EDF8
+ cmp r0, #0x1
+ beq _0203D91A
+ mov r0, #0x1
+ pop {r3, pc}
+_0203D91A:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203D920
+FUN_0203D920: ; 0x0203D920
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02050048
+ ldr r1, _0203D934 ; =FUN_0203D904
+ add r0, r4, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r4, pc}
+ .balign 4
+_0203D934: .word FUN_0203D904
+
+ thumb_func_start FUN_0203D938
+FUN_0203D938: ; 0x0203D938
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_0204FF5C
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203D948
+FUN_0203D948: ; 0x0203D948
+ push {r3, lr}
+ bl ScriptReadHalfword
+ bl FUN_0204F6DC
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203D958
+FUN_0203D958: ; 0x0203D958
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_0206F158
+ add r1, r6, #0x0
+ bl FUN_0206EE64
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0203D998
+FUN_0203D998: ; 0x0203D998
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r5, #0x80
+ add r3, r0, #0x0
+ ldr r0, [r5, #0x0]
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_02034B74
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203D9E8
+FUN_0203D9E8: ; 0x0203D9E8
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ str r0, [sp, #0x8]
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ add r1, r6, #0x0
+ ldr r0, [r0, #0x34]
+ bl FUN_02058060
+ ldr r2, [sp, #0x4]
+ ldr r3, [sp, #0x8]
+ add r5, r0, #0x0
+ add r1, r7, #0x0
+ str r4, [sp, #0x0]
+ bl FUN_02058E28
+ add r0, r5, #0x0
+ bl FUN_02059D1C
+ mov r0, #0x0
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203DA78
+FUN_0203DA78: ; 0x0203DA78
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r5, #0x80
+ add r2, r0, #0x0
+ ldr r0, [r5, #0x0]
+ add r1, r4, #0x0
+ bl FUN_02034BDC
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0203DAB0
+FUN_0203DAB0: ; 0x0203DAB0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r5, #0x80
+ add r2, r0, #0x0
+ ldr r0, [r5, #0x0]
+ add r1, r4, #0x0
+ bl FUN_02034BAC
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0203DAE8
+FUN_0203DAE8: ; 0x0203DAE8
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r5, #0x80
+ add r3, r0, #0x0
+ ldr r0, [r5, #0x0]
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_02034C0C
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203DB38
+FUN_0203DB38: ; 0x0203DB38
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r5, #0x80
+ add r3, r0, #0x0
+ ldr r0, [r5, #0x0]
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_02034C34
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203DB88
+FUN_0203DB88: ; 0x0203DB88
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ add r1, r6, #0x0
+ ldr r0, [r0, #0x34]
+ bl FUN_02058060
+ add r5, r0, #0x0
+ bne _0203DBC6
+ bl ErrorHandling
+_0203DBC6:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_021F1EC0
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203DBD4
+FUN_0203DBD4: ; 0x0203DBD4
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xc
+ bl FUN_02039438
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394F0
+ ldr r1, [r5, #0x0]
+ cmp r1, #0x0
+ beq _0203DBFC
+ strh r0, [r1, #0x0]
+_0203DBFC:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0203DC00
+FUN_0203DC00: ; 0x0203DC00
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ lsl r1, r4, #0x5
+ ldr r3, [r5, #0x8]
+ add r2, r0, #0x0
+ add r0, r3, #0x1
+ str r0, [r5, #0x8]
+ add r5, #0x80
+ lsl r4, r6, #0x5
+ ldrb r3, [r3, #0x0]
+ ldr r0, [r5, #0x0]
+ add r1, r7, r1
+ add r2, r2, r4
+ bl FUN_021DAE40
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203DC58
+FUN_0203DC58: ; 0x0203DC58
+ push {r3, lr}
+ ldr r2, [r0, #0x8]
+ add r1, r2, #0x1
+ str r1, [r0, #0x8]
+ add r0, #0x80
+ ldrb r1, [r2, #0x0]
+ ldr r0, [r0, #0x0]
+ bl FUN_021DAF78
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203DC70
+FUN_0203DC70: ; 0x0203DC70
+ push {r3, lr}
+ ldr r2, [r0, #0x8]
+ add r1, r2, #0x1
+ str r1, [r0, #0x8]
+ add r0, #0x80
+ ldrb r1, [r2, #0x0]
+ ldr r0, [r0, #0x0]
+ bl FUN_021DAF98
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203DC88
+FUN_0203DC88: ; 0x0203DC88
+ push {r3, lr}
+ ldr r2, [r0, #0x8]
+ add r1, r2, #0x1
+ str r1, [r0, #0x8]
+ add r0, #0x80
+ ldrb r1, [r2, #0x0]
+ ldr r0, [r0, #0x0]
+ bl FUN_021DAED4
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203DCA0
+FUN_0203DCA0: ; 0x0203DCA0
+ push {r3, lr}
+ ldr r2, [r0, #0x8]
+ add r1, r2, #0x1
+ str r1, [r0, #0x8]
+ add r0, #0x80
+ ldrb r1, [r2, #0x0]
+ ldr r0, [r0, #0x0]
+ bl FUN_021DAF28
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203DCB8
+FUN_0203DCB8: ; 0x0203DCB8
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_02064CA8
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203DCC8
+FUN_0203DCC8: ; 0x0203DCC8
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_02241230
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203DCD8
+FUN_0203DCD8: ; 0x0203DCD8
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_02064CC8
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203DCE8
+FUN_0203DCE8: ; 0x0203DCE8
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_02241914
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203DCF8
+FUN_0203DCF8: ; 0x0203DCF8
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_02064D10
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203DD08
+FUN_0203DD08: ; 0x0203DD08
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_02064D4C
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203DD18
+FUN_0203DD18: ; 0x0203DD18
+ push {r3, lr}
+ add r1, r0, #0x0
+ add r1, #0x80
+ ldr r2, [r0, #0x8]
+ ldr r3, [r1, #0x0]
+ add r1, r2, #0x1
+ str r1, [r0, #0x8]
+ ldrb r1, [r2, #0x0]
+ add r0, r3, #0x0
+ bl FUN_02064D88
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203DD34
+FUN_0203DD34: ; 0x0203DD34
+ push {r3, lr}
+ add r1, r0, #0x0
+ add r1, #0x80
+ ldr r2, [r0, #0x8]
+ ldr r3, [r1, #0x0]
+ add r1, r2, #0x1
+ str r1, [r0, #0x8]
+ ldrb r1, [r2, #0x0]
+ add r0, r3, #0x0
+ bl FUN_02242A38
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203DD50
+FUN_0203DD50: ; 0x0203DD50
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020388B4
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203DD60
+FUN_0203DD60: ; 0x0203DD60
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x14
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xa
+ bl FUN_02039438
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ str r0, [r5, #0x64]
+ ldr r0, [r6, #0x0]
+ bl FUN_02058448
+ add r1, r5, #0x0
+ add r1, #0x80
+ add r2, r0, #0x0
+ ldr r1, [r1, #0x0]
+ add r0, r7, #0x0
+ bl FUN_0224CA54
+ str r0, [r4, #0x0]
+ ldr r1, _0203DDBC ; =FUN_0203DDC0
+ add r0, r5, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r3-r7, pc}
+ .balign 4
+_0203DDBC: .word FUN_0203DDC0
+
+ thumb_func_start FUN_0203DDC0
+FUN_0203DDC0: ; 0x0203DDC0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x14
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ ldr r1, [r5, #0x64]
+ add r0, #0x80
+ lsl r1, r1, #0x10
+ ldr r0, [r0, #0x0]
+ lsr r1, r1, #0x10
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_0224CA2C
+ strh r0, [r5, #0x0]
+ ldrh r1, [r5, #0x0]
+ ldr r0, _0203DDFC ; =0x0000FFFE
+ cmp r1, r0
+ beq _0203DDF6
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0203DDF6:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ nop
+_0203DDFC: .word 0x0000FFFE
+
+ thumb_func_start FUN_0203DE00
+FUN_0203DE00: ; 0x0203DE00
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x3
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ bl FUN_0224CA58
+ strb r0, [r4, #0x0]
+ ldr r1, _0203DE34 ; =FUN_0203DE38
+ add r0, r5, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ .balign 4
+_0203DE34: .word FUN_0203DE38
+
+ thumb_func_start FUN_0203DE38
+FUN_0203DE38: ; 0x0203DE38
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x3
+ bl FUN_02039438
+ ldrb r0, [r0, #0x0]
+ bl FUN_020546C8
+ pop {r3, pc}
+
+ thumb_func_start FUN_0203DE4C
+FUN_0203DE4C: ; 0x0203DE4C
+ push {r3, lr}
+ bl FUN_0224CA94
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203DE58
+FUN_0203DE58: ; 0x0203DE58
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ ldr r2, [r4, #0x8]
+ add r1, r2, #0x1
+ str r1, [r4, #0x8]
+ ldrb r5, [r2, #0x0]
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394F0
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0224CAA0
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203DE80
+FUN_0203DE80: ; 0x0203DE80
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ ldr r2, [r4, #0x8]
+ add r1, r2, #0x1
+ str r1, [r4, #0x8]
+ ldrb r5, [r2, #0x0]
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394F0
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0224CAB4
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203DEA8
+FUN_0203DEA8: ; 0x0203DEA8
+ push {r3, lr}
+ sub sp, #0x8
+ mov r3, #0x0
+ str r3, [sp, #0x0]
+ str r3, [sp, #0x4]
+ mov r1, #0x1
+ ldr r0, [r0, #0x74]
+ add r2, r1, #0x0
+ bl FUN_02242BE0
+ mov r0, #0x1
+ add sp, #0x8
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203DEC4
+FUN_0203DEC4: ; 0x0203DEC4
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ add r1, r4, #0x0
+ add r1, #0x80
+ ldr r5, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394F0
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x34]
+ bl FUN_02058060
+ add r4, r0, #0x0
+ bne _0203DEEC
+ bl ErrorHandling
+_0203DEEC:
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_0205889C
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0203DEF8
+FUN_0203DEF8: ; 0x0203DEF8
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ add r1, r4, #0x0
+ add r1, #0x80
+ ldr r5, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394F0
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x34]
+ bl FUN_02058060
+ add r4, r0, #0x0
+ bne _0203DF20
+ bl ErrorHandling
+_0203DF20:
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_0205889C
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0203DF2C
+FUN_0203DF2C: ; 0x0203DF2C
+ push {r3, lr}
+ ldr r0, [r0, #0x74]
+ bl FUN_02066818
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0203DF38
+FUN_0203DF38: ; 0x0203DF38
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r1, r5, #0x0
+ add r1, #0x80
+ ldr r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ ldr r0, [r4, #0xc]
+ bl FUN_02025838
+ mov r1, #0x0
+ bl FUN_0202589C
+ strh r0, [r5, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0203DF64
+FUN_0203DF64: ; 0x0203DF64
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x74]
+ bl FUN_02063650
+ mov r0, #0x1
+ pop {r4, pc}
+
+ thumb_func_start FUN_0203DF84
+FUN_0203DF84: ; 0x0203DF84
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r4, #0x80
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_0204B2A4
+ strh r0, [r5, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0203DFA8
+FUN_0203DFA8: ; 0x0203DFA8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r5, r0, #0x0
+ bl FUN_0201B9EC
+ add r1, r5, #0x0
+ blx _s32_div_f
+ strh r1, [r4, #0x0]
+ mov r0, #0x1
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0203DFE0
+FUN_0203DFE0: ; 0x0203DFE0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r5, r0, #0x0
+ bl FUN_0201B9EC
+ add r1, r5, #0x0
+ blx _s32_div_f
+ strh r1, [r4, #0x0]
+ mov r0, #0x1
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0203E018
+FUN_0203E018: ; 0x0203E018
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r1, r5, #0x0
+ add r1, #0x80
+ ldr r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_021F3A18
+ strh r0, [r6, #0x0]
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203E054
+FUN_0203E054: ; 0x0203E054
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ add r1, r4, #0x0
+ add r1, #0x80
+ ldr r5, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394F0
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_021F3AB4
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0203E078
+FUN_0203E078: ; 0x0203E078
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r1, r5, #0x0
+ add r1, #0x80
+ ldr r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ lsl r1, r6, #0x18
+ lsl r2, r7, #0x18
+ add r3, r0, #0x0
+ add r0, r4, #0x0
+ lsr r1, r1, #0x18
+ lsr r2, r2, #0x18
+ bl FUN_021F3B7C
+ mov r0, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0203E0CC
+FUN_0203E0CC: ; 0x0203E0CC
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r1, r5, #0x0
+ add r1, #0x80
+ ldr r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ lsl r1, r6, #0x18
+ lsl r2, r7, #0x18
+ add r3, r0, #0x0
+ add r0, r4, #0x0
+ lsr r1, r1, #0x18
+ lsr r2, r2, #0x18
+ bl FUN_021F3B4C
+ mov r0, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0203E120
+FUN_0203E120: ; 0x0203E120
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ mov r1, #0x82
+ lsl r1, r1, #0x8
+ bl FUN_0205F3F8
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_0203E138
+FUN_0203E138: ; 0x0203E138
+ push {r4, lr}
+ add r0, #0x80
+ ldr r4, [r0, #0x0]
+ ldr r0, [r4, #0xc]
+ bl FUN_020462AC
+ mov r1, #0x1
+ bl FUN_0205F2D4
+ ldr r0, [r4, #0xc]
+ bl FUN_020289A4
+ mov r1, #0x1
+ bl FUN_020289B0
+ add r1, r4, #0x0
+ add r1, #0x98
+ str r0, [r1, #0x0]
+ add r0, r4, #0x0
+ bl FUN_02048C58
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203E168
+FUN_0203E168: ; 0x0203E168
+ push {r3-r7, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x14
+ bl FUN_02039438
+ add r5, r0, #0x0
+ add r0, r7, #0x0
+ sub r0, #0x10
+ cmp r0, #0xa
+ bhi _0203E23A
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0203E1EA: ; jump table (using 16-bit offset)
+ .short _0203E200 - _0203E1EA - 2; case 0
+ .short _0203E20C - _0203E1EA - 2; case 1
+ .short _0203E218 - _0203E1EA - 2; case 2
+ .short _0203E226 - _0203E1EA - 2; case 3
+ .short _0203E23A - _0203E1EA - 2; case 4
+ .short _0203E226 - _0203E1EA - 2; case 5
+ .short _0203E226 - _0203E1EA - 2; case 6
+ .short _0203E226 - _0203E1EA - 2; case 7
+ .short _0203E226 - _0203E1EA - 2; case 8
+ .short _0203E226 - _0203E1EA - 2; case 9
+ .short _0203E226 - _0203E1EA - 2; case 10
+_0203E200:
+ mov r0, #0x4
+ mov r6, #0x1
+ bl FUN_02029120
+ str r0, [r5, #0x0]
+ b _0203E23E
+_0203E20C:
+ mov r0, #0x4
+ mov r6, #0x1
+ bl FUN_0202912C
+ str r0, [r5, #0x0]
+ b _0203E23E
+_0203E218:
+ ldr r0, [sp, #0x0]
+ mov r1, #0x4
+ mov r6, #0x1
+ bl FUN_02029138
+ str r0, [r5, #0x0]
+ b _0203E23E
+_0203E226:
+ sub r7, #0x13
+ lsl r0, r7, #0x18
+ ldr r1, [sp, #0x0]
+ lsr r0, r0, #0x18
+ mov r2, #0x4
+ mov r6, #0x1
+ bl FUN_0202914C
+ str r0, [r5, #0x0]
+ b _0203E23E
+_0203E23A:
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0203E23E:
+ add r4, #0x80
+ ldr r0, [r4, #0x0]
+ ldr r1, [r5, #0x0]
+ add r0, #0x98
+ ldr r0, [r0, #0x0]
+ add r2, r6, #0x0
+ bl FUN_02028AD4
+ mov r0, #0x1
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203E254
+FUN_0203E254: ; 0x0203E254
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_0203E258
+FUN_0203E258: ; 0x0203E258
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r5, #0x80
+ add r6, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02027E24
+ bl FUN_0202708C
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_020271A4
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0203E29C
+FUN_0203E29C: ; 0x0203E29C
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02027E24
+ bl FUN_0202708C
+ add r1, r6, #0x0
+ add r2, r7, #0x0
+ bl FUN_020270D8
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203E2F8
+FUN_0203E2F8: ; 0x0203E2F8
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02027E24
+ bl FUN_0202708C
+ add r1, r7, #0x0
+ bl FUN_02027114
+ cmp r6, r0
+ bhi _0203E352
+ mov r0, #0x1
+ b _0203E354
+_0203E352:
+ mov r0, #0x0
+_0203E354:
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203E35C
+FUN_0203E35C: ; 0x0203E35C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02027E24
+ bl FUN_0202708C
+ add r1, r4, #0x0
+ bl FUN_02027264
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203E38C
+FUN_0203E38C: ; 0x0203E38C
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02027E24
+ bl FUN_0202708C
+ add r1, r6, #0x0
+ bl FUN_02027100
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0203E3D0
+FUN_0203E3D0: ; 0x0203E3D0
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02024DA0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ mov r0, #0x0
+ strh r0, [r4, #0x0]
+ add r0, r5, #0x0
+ bl FUN_02024504
+ cmp r0, #0x1
+ bne _0203E404
+ mov r0, #0x1
+ strh r0, [r4, #0x0]
+_0203E404:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0203E408
+FUN_0203E408: ; 0x0203E408
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02024DA0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ mov r0, #0x0
+ strh r0, [r4, #0x0]
+ add r0, r5, #0x0
+ bl FUN_020244EC
+ cmp r0, #0x1
+ bne _0203E43C
+ mov r0, #0x1
+ strh r0, [r4, #0x0]
+_0203E43C:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0203E440
+FUN_0203E440: ; 0x0203E440
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x13
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x20
+ mov r2, #0x0
+ bl FUN_02038AF4
+ str r0, [r4, #0x0]
+ ldr r1, _0203E46C ; =FUN_0203BB90
+ add r0, r5, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ .balign 4
+_0203E46C: .word FUN_0203BB90
+
+ thumb_func_start FUN_0203E470
+FUN_0203E470: ; 0x0203E470
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x13
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x20
+ mov r2, #0x1
+ bl FUN_02038AF4
+ str r0, [r4, #0x0]
+ ldr r1, _0203E49C ; =FUN_0203BB90
+ add r0, r5, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ .balign 4
+_0203E49C: .word FUN_0203BB90
+
+ thumb_func_start FUN_0203E4A0
+FUN_0203E4A0: ; 0x0203E4A0
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_0224CBB0
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_0203E4B0
+FUN_0203E4B0: ; 0x0203E4B0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_0224CC24
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203E4D8
+FUN_0203E4D8: ; 0x0203E4D8
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203E4F0
+FUN_0203E4F0: ; 0x0203E4F0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02029FC8
+ add r1, r4, #0x0
+ bl FUN_0202A0E8
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203E510
+FUN_0203E510: ; 0x0203E510
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ add r1, r4, #0x0
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ add r1, r6, #0x0
+ bl FUN_020394B8
+ add r5, #0x80
+ add r6, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02029FC8
+ add r1, r7, #0x0
+ bl FUN_0202A150
+ ldr r1, _0203E564 ; =0xFFFF0000
+ and r1, r0
+ lsr r1, r1, #0x10
+ strh r1, [r4, #0x0]
+ strh r0, [r6, #0x0]
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+_0203E564: .word 0xFFFF0000
+
+ thumb_func_start FUN_0203E568
+FUN_0203E568: ; 0x0203E568
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ ldr r1, [r5, #0x8]
+ add r2, r1, #0x1
+ str r2, [r5, #0x8]
+ lsl r2, r4, #0x10
+ add r4, r2, #0x0
+ orr r4, r0
+ ldrb r0, [r1, #0x0]
+ cmp r0, #0x0
+ beq _0203E59C
+ cmp r0, #0x1
+ beq _0203E5B0
+ cmp r0, #0x2
+ beq _0203E5C4
+ b _0203E5D6
+_0203E59C:
+ add r5, #0x80
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02029FC8
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ bl FUN_0202A11C
+ b _0203E5D6
+_0203E5B0:
+ add r5, #0x80
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02029FC8
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ bl FUN_0202A07C
+ b _0203E5D6
+_0203E5C4:
+ add r5, #0x80
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02029FC8
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ bl FUN_0202A0A8
+_0203E5D6:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203E5DC
+FUN_0203E5DC: ; 0x0203E5DC
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02034E30
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02022504
+ ldr r1, [r5, #0x8]
+ str r0, [sp, #0x4]
+ add r0, r1, #0x1
+ str r0, [r5, #0x8]
+ ldrb r4, [r1, #0x0]
+ add r0, r7, #0x0
+ bl FUN_02034E24
+ add r6, r0, #0x0
+ add r0, r7, #0x0
+ bl FUN_02034E28
+ add r7, r0, #0x0
+ cmp r4, #0x0
+ beq _0203E62C
+ cmp r4, #0x1
+ beq _0203E642
+ b _0203E66E
+_0203E62C:
+ ldr r0, [sp, #0x0]
+ bl FUN_0205F1F4
+ ldr r0, [sp, #0x4]
+ bl FUN_02060FD0
+ mov r0, #0x1e
+ strh r0, [r6, #0x0]
+ mov r0, #0x0
+ strh r0, [r7, #0x0]
+ b _0203E66E
+_0203E642:
+ ldr r0, [sp, #0x0]
+ bl FUN_0205F204
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_02061574
+ mov r0, #0x4
+ bl FUN_0202912C
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ mov r2, #0x1
+ add r0, #0x98
+ ldr r0, [r0, #0x0]
+ bl FUN_02028AD4
+ mov r0, #0x0
+ strh r0, [r6, #0x0]
+ strh r0, [r7, #0x0]
+_0203E66E:
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0203E674
+FUN_0203E674: ; 0x0203E674
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_0206015C
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203E684
+FUN_0203E684: ; 0x0203E684
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r2, [r5, #0x8]
+ add r1, r2, #0x1
+ str r1, [r5, #0x8]
+ ldrb r4, [r2, #0x0]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, #0x80
+ add r6, r0, #0x0
+ ldr r0, [r5, #0x0]
+ add r1, r4, #0x0
+ bl FUN_022456E8
+ strh r0, [r6, #0x0]
+ mov r0, #0x1
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203E6B4
+FUN_0203E6B4: ; 0x0203E6B4
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_02064E20
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203E6C4
+FUN_0203E6C4: ; 0x0203E6C4
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ mov r1, #0x0
+ add r6, r0, #0x0
+ mov r0, #0x41
+ add r2, r1, #0x0
+ bl FUN_0200433C
+ add r5, #0x80
+ ldrh r1, [r4, #0x0]
+ ldr r0, [r5, #0x0]
+ add r2, r6, #0x0
+ bl FUN_0224525C
+ mov r0, #0x1
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0203E6FC
+FUN_0203E6FC: ; 0x0203E6FC
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ add r1, r6, #0x0
+ bl FUN_02245340
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203E72C
+FUN_0203E72C: ; 0x0203E72C
+ push {r3, lr}
+ ldr r2, [r0, #0x8]
+ add r1, r2, #0x1
+ str r1, [r0, #0x8]
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldrb r1, [r2, #0x0]
+ ldr r0, [r0, #0x38]
+ bl FUN_02055560
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0203E744
+FUN_0203E744: ; 0x0203E744
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0205F688
+ strh r0, [r5, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203E774
+FUN_0203E774: ; 0x0203E774
+ push {r3-r7, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02024DA0
+ add r7, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ str r0, [sp, #0x0]
+ add r0, r7, #0x0
+ bl FUN_020244A4
+ add r4, r0, #0x0
+ bl FUN_0201B9EC
+ add r1, r4, #0x0
+ blx _s32_div_f
+ lsl r0, r1, #0x10
+ lsr r6, r0, #0x10
+ ldr r0, [sp, #0x0]
+ mov r1, #0x19
+ strh r1, [r0, #0x0]
+ mov r4, #0x1
+ mov r5, #0x0
+_0203E7B6:
+ add r0, r7, #0x0
+ add r1, r4, #0x0
+ bl FUN_020245F0
+ cmp r0, #0x1
+ bne _0203E7DC
+ add r0, r4, #0x0
+ bl FUN_02069B40
+ cmp r0, #0x0
+ beq _0203E7DC
+ cmp r5, r6
+ bne _0203E7D6
+ ldr r0, [sp, #0x0]
+ strh r4, [r0, #0x0]
+ b _0203E7E8
+_0203E7D6:
+ add r0, r5, #0x1
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+_0203E7DC:
+ add r0, r4, #0x1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ ldr r0, _0203E7EC ; =0x000001ED
+ cmp r4, r0
+ bls _0203E7B6
+_0203E7E8:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+_0203E7EC: .word 0x000001ED
+
+ thumb_func_start FUN_0203E7F0
+FUN_0203E7F0: ; 0x0203E7F0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ add r1, r4, #0x0
+ bl FUN_0205F5A4
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203E81C
+FUN_0203E81C: ; 0x0203E81C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205F594
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203E848
+FUN_0203E848: ; 0x0203E848
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_0202AA00
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_0203E858
+FUN_0203E858: ; 0x0203E858
+ push {r3, lr}
+ ldr r2, [r0, #0x8]
+ add r1, r2, #0x1
+ str r1, [r0, #0x8]
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldrb r1, [r2, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02060490
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_0203E870
+FUN_0203E870: ; 0x0203E870
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x14
+ bl FUN_02039438
+ ldr r1, [r5, #0x8]
+ add r4, r0, #0x0
+ add r0, r1, #0x1
+ str r0, [r5, #0x8]
+ ldrb r1, [r1, #0x0]
+ mov r0, #0xb
+ bl FUN_0224884C
+ str r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0203E894
+FUN_0203E894: ; 0x0203E894
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x14
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_022488EC
+ strh r0, [r5, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203E8C4
+FUN_0203E8C4: ; 0x0203E8C4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x14
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_022488F4
+ strh r0, [r5, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203E8F4
+FUN_0203E8F4: ; 0x0203E8F4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x14
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r2, r0, #0x0
+ ldr r0, [r5, #0x74]
+ ldr r1, [r4, #0x0]
+ mov r3, #0xb
+ bl FUN_02060790
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203E928
+FUN_0203E928: ; 0x0203E928
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x14
+ bl FUN_02039438
+ ldr r0, [r0, #0x0]
+ bl FUN_022488CC
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203E940
+FUN_0203E940: ; 0x0203E940
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02024DA0
+ bl FUN_02024D4C
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_0203E954
+FUN_0203E954: ; 0x0203E954
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02024DA0
+ bl FUN_02024CE0
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_0203E968
+FUN_0203E968: ; 0x0203E968
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r2, [r5, #0x8]
+ add r1, r2, #0x1
+ str r1, [r5, #0x8]
+ ldrb r4, [r2, #0x0]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r6, r0, #0x0
+ mov r0, #0x0
+ strh r0, [r6, #0x0]
+ cmp r4, #0x1
+ bne _0203E9AE
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02024DA0
+ bl FUN_02024C84
+ add r5, #0x80
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020238F4
+ bl FUN_02023A90
+ b _0203E9C8
+_0203E9AE:
+ cmp r4, #0x2
+ bne _0203E9C4
+ add r5, #0x80
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02024DA0
+ bl FUN_02024CA4
+ strh r0, [r6, #0x0]
+ b _0203E9C8
+_0203E9C4:
+ bl ErrorHandling
+_0203E9C8:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0203E9CC
+FUN_0203E9CC: ; 0x0203E9CC
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_0206BB1C
+ add r1, r4, #0x0
+ bl FUN_0206B9B0
+ add r5, r0, #0x0
+ mov r1, #0xd
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0xe
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0xf
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x10
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ mov r1, #0x11
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0x8]
+ add r0, r5, #0x0
+ mov r1, #0x12
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r1, r4, r6
+ add r2, r7, r1
+ ldr r1, [sp, #0x4]
+ add r2, r1, r2
+ ldr r1, [sp, #0x8]
+ add r1, r1, r2
+ add r1, r0, r1
+ ldr r0, [sp, #0x0]
+ strh r1, [r0, #0x0]
+ mov r0, #0x0
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203EA68
+FUN_0203EA68: ; 0x0203EA68
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ add r0, sp, #0x0
+ bl FUN_020126B4
+ ldr r0, [sp, #0xc]
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ add sp, #0x10
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203EA90
+FUN_0203EA90: ; 0x0203EA90
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x74]
+ bl FUN_022411F4
+ mov r0, #0x1
+ pop {r4, pc}
+
+ thumb_func_start FUN_0203EAB0
+FUN_0203EAB0: ; 0x0203EAB0
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r5, #0x80
+ add r7, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_0206BB1C
+ add r1, r7, #0x0
+ bl FUN_0206B9B0
+ mov r1, #0x5
+ mov r2, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ add r0, r5, #0x0
+ bl FUN_021F61E8
+ strh r0, [r4, #0x0]
+ add r0, r5, #0x0
+ bl FUN_021F61DC
+ strh r0, [r6, #0x0]
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203EB20
+FUN_0203EB20: ; 0x0203EB20
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r1, r0, #0x0
+ add r4, #0x80
+ lsl r1, r1, #0x18
+ ldr r0, [r4, #0x0]
+ lsr r1, r1, #0x18
+ bl FUN_0224C27C
+ mov r0, #0x1
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203EB48
+FUN_0203EB48: ; 0x0203EB48
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r2, r0, #0x0
+ add r5, #0x80
+ lsl r1, r4, #0x18
+ lsl r2, r2, #0x18
+ ldr r0, [r5, #0x0]
+ lsr r1, r1, #0x18
+ lsr r2, r2, #0x18
+ bl FUN_0224C520
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203EB88
+FUN_0203EB88: ; 0x0203EB88
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ ldr r1, [r5, #0x8]
+ add r2, r1, #0x1
+ str r2, [r5, #0x8]
+ ldrb r6, [r1, #0x0]
+ add r1, r2, #0x1
+ str r1, [r5, #0x8]
+ ldrb r4, [r2, #0x0]
+ bl ScriptReadHalfword
+ str r0, [sp, #0x8]
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ str r7, [sp, #0x0]
+ add r5, #0x80
+ str r0, [sp, #0x4]
+ ldr r0, [r5, #0x0]
+ ldr r3, [sp, #0x8]
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ bl FUN_020607D4
+ mov r0, #0x1
+ add sp, #0xc
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_0203EBC8
+FUN_0203EBC8: ; 0x0203EBC8
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ mov r1, #0xa
+ strh r1, [r0, #0x0]
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203EBE4
+FUN_0203EBE4: ; 0x0203EBE4
+ push {r3-r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r6, [r0, #0x0]
+ add r0, r6, #0x0
+ bl FUN_020377AC
+ bl FUN_020238F4
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ ldr r0, [r6, #0xc]
+ bl FUN_02022510
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ str r0, [sp, #0x8]
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ str r0, [sp, #0xc]
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x4]
+ ldr r2, [sp, #0x8]
+ ldr r3, [sp, #0xc]
+ add r1, r7, #0x0
+ bl FUN_0224D14C
+ add r5, r0, #0x0
+ mov r0, #0x0
+ mvn r0, r0
+ cmp r5, r0
+ beq _0203EC7E
+ cmp r5, #0x7
+ ble _0203EC88
+_0203EC7E:
+ mov r0, #0xff
+ strh r0, [r4, #0x0]
+ add sp, #0x10
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0203EC88:
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ bl FUN_0206B644
+ cmp r0, #0x0
+ beq _0203EC98
+ mov r0, #0x0
+ b _0203ECA2
+_0203EC98:
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ bl FUN_0206B620
+ add r0, r5, #0x1
+_0203ECA2:
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ add sp, #0x10
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203ECAC
+FUN_0203ECAC: ; 0x0203ECAC
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r1, r5, #0x0
+ add r1, #0x80
+ ldr r1, [r1, #0x0]
+ ldr r4, [r1, #0xc]
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02026CB4
+ bl FUN_020269CC
+ strh r0, [r5, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0203ECD8
+FUN_0203ECD8: ; 0x0203ECD8
+ push {r3, lr}
+ add r1, r0, #0x0
+ add r1, #0x80
+ ldr r2, [r0, #0x8]
+ ldr r3, [r1, #0x0]
+ add r1, r2, #0x1
+ str r1, [r0, #0x8]
+ ldrb r1, [r2, #0x0]
+ add r0, r3, #0x0
+ bl FUN_0224C678
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203ECF4
+FUN_0203ECF4: ; 0x0203ECF4
+ push {r3, lr}
+ add r1, r0, #0x0
+ add r1, #0x80
+ ldr r2, [r0, #0x8]
+ ldr r3, [r1, #0x0]
+ add r1, r2, #0x1
+ str r1, [r0, #0x8]
+ ldrb r1, [r2, #0x0]
+ add r0, r3, #0x0
+ bl FUN_0224C6E8
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203ED10
+FUN_0203ED10: ; 0x0203ED10
+ push {r3, lr}
+ add r1, r0, #0x0
+ add r1, #0x80
+ ldr r2, [r0, #0x8]
+ ldr r3, [r1, #0x0]
+ add r1, r2, #0x1
+ str r1, [r0, #0x8]
+ ldrb r1, [r2, #0x0]
+ add r0, r3, #0x0
+ bl FUN_0224C6F4
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203ED2C
+FUN_0203ED2C: ; 0x0203ED2C
+ push {r4-r6, lr}
+ sub sp, #0x10
+ ldr r0, [r0, #0xc]
+ add r5, r1, #0x0
+ bl FUN_02024DA0
+ add r6, r0, #0x0
+ mov r0, #0x20
+ bl FUN_020669C0
+ add r4, r0, #0x0
+ bl FUN_02066978
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ str r0, [sp, #0xc]
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ mov r2, #0x32
+ mov r3, #0x20
+ bl FUN_02066ACC
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ bl FUN_0202498C
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x10
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203ED70
+FUN_0203ED70: ; 0x0203ED70
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02022510
+ bl FUN_0206B3E4
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ mov r0, #0x87
+ lsl r0, r0, #0x2
+ sub r0, r0, r1
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0203EDA4
+FUN_0203EDA4: ; 0x0203EDA4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x16
+ bl FUN_02039438
+ add r4, r0, #0x0
+ mov r0, #0x0
+ add r5, #0x80
+ str r0, [r4, #0x0]
+ ldr r0, [r5, #0x0]
+ bl FUN_021E7184
+ str r0, [r4, #0x0]
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203EDC8
+FUN_0203EDC8: ; 0x0203EDC8
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x16
+ bl FUN_02039438
+ ldr r0, [r0, #0x0]
+ bl FUN_021E71E8
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203EDE0
+FUN_0203EDE0: ; 0x0203EDE0
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r1, r0, #0x0
+ add r4, #0x80
+ lsl r1, r1, #0x18
+ ldr r0, [r4, #0x0]
+ lsr r1, r1, #0x18
+ bl FUN_0224E554
+ mov r0, #0x1
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203EE08
+FUN_0203EE08: ; 0x0203EE08
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_0206486C
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203EE18
+FUN_0203EE18: ; 0x0203EE18
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020649D4
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203EE28
+FUN_0203EE28: ; 0x0203EE28
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020649B0
+ cmp r0, #0x0
+ beq _0203EE4E
+ mov r0, #0x1
+ b _0203EE50
+_0203EE4E:
+ mov r0, #0x0
+_0203EE50:
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203EE58
+FUN_0203EE58: ; 0x0203EE58
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_0224E764
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203EE68
+FUN_0203EE68: ; 0x0203EE68
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_0224E7C4
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203EE78
+FUN_0203EE78: ; 0x0203EE78
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02029FC8
+ add r1, r4, #0x0
+ bl FUN_0202A170
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203EE98
+FUN_0203EE98: ; 0x0203EE98
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_0206BB1C
+ add r1, r6, #0x0
+ bl FUN_0206BAE4
+ strh r0, [r4, #0x0]
+ mov r0, #0x1
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0203EED8
+FUN_0203EED8: ; 0x0203EED8
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r1, sp, #0x4
+ strh r0, [r1, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_0206BB1C
+ str r0, [sp, #0x0]
+ bl FUN_0206B9AC
+ add r4, #0x80
+ add r6, r0, #0x0
+ ldr r0, [r4, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02024DA0
+ add r7, r0, #0x0
+ mov r5, #0x0
+ cmp r6, #0x0
+ ble _0203EF4E
+_0203EF18:
+ ldr r0, [sp, #0x0]
+ add r1, r5, #0x0
+ bl FUN_0206B9B0
+ mov r1, #0x5
+ mov r2, #0x0
+ add r4, r0, #0x0
+ bl FUN_020671BC
+ ldr r1, _0203EF54 ; =0x00000182
+ cmp r0, r1
+ bne _0203EF48
+ add r0, r4, #0x0
+ mov r1, #0x70
+ add r2, sp, #0x4
+ bl FUN_02067830
+ add r0, r4, #0x0
+ bl FUN_02066ED8
+ add r0, r7, #0x0
+ add r1, r4, #0x0
+ bl FUN_02024AF0
+_0203EF48:
+ add r5, r5, #0x1
+ cmp r5, r6
+ blt _0203EF18
+_0203EF4E:
+ mov r0, #0x1
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+_0203EF54: .word 0x00000182
+
+ thumb_func_start FUN_0203EF58
+FUN_0203EF58: ; 0x0203EF58
+ push {r3-r7, lr}
+ sub sp, #0x30
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r4, #0x80
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_0206BB1C
+ str r0, [sp, #0xc]
+ bl FUN_0206B9AC
+ add r2, sp, #0x18
+ mov r4, #0x0
+ ldr r3, _0203F008 ; =0x020F34FC
+ str r0, [sp, #0x8]
+ add r7, r2, #0x0
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldr r0, [sp, #0x8]
+ str r4, [sp, #0x4]
+ cmp r0, #0x0
+ ble _0203EFFC
+ mov r5, #0x1
+ str r7, [sp, #0x14]
+_0203EFA2:
+ ldr r0, [sp, #0xc]
+ add r1, r4, #0x0
+ bl FUN_0206B9B0
+ add r6, r0, #0x0
+ mov r1, #0x5
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0x10]
+ add r0, r6, #0x0
+ mov r1, #0x70
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r3, r0, #0x0
+ mov r0, #0x67
+ ldr r1, [sp, #0x10]
+ lsl r0, r0, #0x2
+ cmp r1, r0
+ bne _0203EFF2
+ mov r2, #0x0
+ add r1, r2, #0x0
+ str r3, [r7, #0x0]
+ cmp r4, #0x0
+ ble _0203EFE8
+ ldr r6, [sp, #0x14]
+_0203EFD8:
+ ldr r0, [r6, #0x0]
+ cmp r3, r0
+ bne _0203EFE0
+ add r2, r5, #0x0
+_0203EFE0:
+ add r1, r1, #0x1
+ add r6, r6, #0x4
+ cmp r1, r4
+ blt _0203EFD8
+_0203EFE8:
+ cmp r2, #0x0
+ bne _0203EFF2
+ ldr r0, [sp, #0x4]
+ add r0, r0, #0x1
+ str r0, [sp, #0x4]
+_0203EFF2:
+ ldr r0, [sp, #0x8]
+ add r4, r4, #0x1
+ add r7, r7, #0x4
+ cmp r4, r0
+ blt _0203EFA2
+_0203EFFC:
+ ldr r1, [sp, #0x4]
+ ldr r0, [sp, #0x0]
+ strh r1, [r0, #0x0]
+ mov r0, #0x1
+ add sp, #0x30
+ pop {r3-r7, pc}
+ .balign 4
+_0203F008: .word 0x020F34FC
+
+ thumb_func_start FUN_0203F00C
+FUN_0203F00C: ; 0x0203F00C
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205F1C4
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_0203F020
+FUN_0203F020: ; 0x0203F020
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205F1D4
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_0203F034
+FUN_0203F034: ; 0x0203F034
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ ldr r0, [r0, #0x10]
+ bl FUN_020389CC
+ mov r0, #0x1
+ pop {r4, pc}
+
+ thumb_func_start FUN_0203F058
+FUN_0203F058: ; 0x0203F058
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r4, #0x80
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_0204B2D8
+ strh r0, [r5, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0203F07C
+FUN_0203F07C: ; 0x0203F07C
+ push {r3-r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ str r0, [sp, #0xc]
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ str r0, [sp, #0x8]
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ add r1, r7, #0x0
+ ldr r0, [r0, #0x34]
+ bl FUN_02058060
+ add r7, r0, #0x0
+ bne _0203F0FA
+ bl ErrorHandling
+_0203F0FA:
+ str r6, [sp, #0x0]
+ str r4, [sp, #0x4]
+ ldr r0, [r5, #0x74]
+ ldr r2, [sp, #0xc]
+ ldr r3, [sp, #0x8]
+ add r1, r7, #0x0
+ bl FUN_02054F50
+ mov r0, #0x1
+ add sp, #0x10
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0203F110
+FUN_0203F110: ; 0x0203F110
+ push {r3-r7, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ add r1, r5, #0x0
+ ldr r0, [r0, #0x34]
+ bl FUN_02058060
+ add r5, r0, #0x0
+ bne _0203F164
+ bl ErrorHandling
+_0203F164:
+ ldr r0, [r4, #0x74]
+ add r1, r5, #0x0
+ add r2, r7, #0x0
+ add r3, r6, #0x0
+ bl FUN_0205502C
+ mov r0, #0x1
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0203F174
+FUN_0203F174: ; 0x0203F174
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02054E30
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203F19C
+FUN_0203F19C: ; 0x0203F19C
+ push {r4-r7, lr}
+ sub sp, #0x24
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r4, #0x80
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02027E24
+ bl FUN_0202708C
+ mov r6, #0x0
+ add r7, r0, #0x0
+ add r4, r6, #0x0
+ add r5, sp, #0x4
+_0203F1CA:
+ add r1, r4, #0x0
+ add r0, r7, #0x0
+ add r1, #0x22
+ mov r2, #0x1
+ bl FUN_020270D8
+ cmp r0, #0x1
+ bne _0203F1E0
+ mov r0, #0x1
+ strh r0, [r5, #0x0]
+ add r6, r6, #0x1
+_0203F1E0:
+ add r4, r4, #0x1
+ add r5, r5, #0x2
+ cmp r4, #0x10
+ blt _0203F1CA
+ cmp r6, #0x0
+ bne _0203F1F8
+ ldr r0, [sp, #0x0]
+ ldr r1, _0203F230 ; =0x0000FFFF
+ add sp, #0x24
+ strh r1, [r0, #0x0]
+ mov r0, #0x0
+ pop {r4-r7, pc}
+_0203F1F8:
+ bl FUN_0201B9EC
+ add r1, r6, #0x0
+ blx _s32_div_f
+ mov r4, #0x0
+ add r2, sp, #0x4
+_0203F206:
+ ldrh r0, [r2, #0x0]
+ cmp r0, #0x1
+ bne _0203F212
+ cmp r1, #0x0
+ beq _0203F21A
+ sub r1, r1, #0x1
+_0203F212:
+ add r4, r4, #0x1
+ add r2, r2, #0x2
+ cmp r4, #0x10
+ blt _0203F206
+_0203F21A:
+ cmp r4, #0x10
+ blt _0203F222
+ bl ErrorHandling
+_0203F222:
+ ldr r0, [sp, #0x0]
+ add r4, #0x22
+ strh r4, [r0, #0x0]
+ mov r0, #0x0
+ add sp, #0x24
+ pop {r4-r7, pc}
+ nop
+_0203F230: .word 0x0000FFFF
+
+ thumb_func_start FUN_0203F234
+FUN_0203F234: ; 0x0203F234
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ ldr r1, _0203F250 ; =0x021C4918
+ ldrb r1, [r1, #0x6]
+ strh r1, [r0, #0x0]
+ mov r0, #0x1
+ pop {r4, pc}
+ .balign 4
+_0203F250: .word 0x021C4918
+
+ thumb_func_start FUN_0203F254
+FUN_0203F254: ; 0x0203F254
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ mov r1, #0x0
+ bl FUN_0205F698
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203F26C
+FUN_0203F26C: ; 0x0203F26C
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ ldr r1, [r5, #0x8]
+ add r6, r0, #0x0
+ add r0, r1, #0x1
+ str r0, [r5, #0x8]
+ add r5, #0x80
+ ldr r0, [r5, #0x0]
+ ldrb r4, [r1, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ cmp r4, #0x0
+ beq _0203F2A0
+ add r1, r6, #0x0
+ bl FUN_0205F4E4
+ b _0203F2A6
+_0203F2A0:
+ add r1, r6, #0x0
+ bl FUN_0205F50C
+_0203F2A6:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203F2AC
+FUN_0203F2AC: ; 0x0203F2AC
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ ldr r1, [r5, #0x8]
+ add r6, r0, #0x0
+ add r0, r1, #0x1
+ str r0, [r5, #0x8]
+ add r0, r5, #0x0
+ ldrb r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r2, r0, #0x0
+ ldr r0, [r6, #0x0]
+ add r1, r4, #0x0
+ bl FUN_0200B6D0
+ mov r0, #0x1
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203F2E4
+FUN_0203F2E4: ; 0x0203F2E4
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0205F6C8
+ cmp r0, #0xa
+ blo _0203F314
+ mov r0, #0x1
+ b _0203F316
+_0203F314:
+ mov r0, #0x0
+_0203F316:
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0203F31C
+FUN_0203F31C: ; 0x0203F31C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205F648
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203F348
+FUN_0203F348: ; 0x0203F348
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r5, #0x80
+ add r6, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02027E24
+ bl FUN_0202708C
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_02027210
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0203F38C
+FUN_0203F38C: ; 0x0203F38C
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_02046030
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203F39C
+FUN_0203F39C: ; 0x0203F39C
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_0205F668
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_0203F3AC
+FUN_0203F3AC: ; 0x0203F3AC
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ add r5, #0x80
+ add r6, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02013B5C
+ bl FUN_02013B74
+ cmp r0, #0x20
+ bne _0203F3FE
+ ldr r0, _0203F414 ; =0x0000FFFF
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0203F3FE:
+ strh r0, [r4, #0x0]
+ bl FUN_02013BE4
+ add r2, r0, #0x0
+ ldr r0, [r6, #0x0]
+ add r1, r7, #0x0
+ bl FUN_0200B518
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ nop
+_0203F414: .word 0x0000FFFF
+
+ thumb_func_start FUN_0203F418
+FUN_0203F418: ; 0x0203F418
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02013B5C
+ bl FUN_02013BC8
+ cmp r0, #0x1
+ bne _0203F444
+ mov r0, #0x1
+ b _0203F446
+_0203F444:
+ mov r0, #0x0
+_0203F446:
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0203F44C
+FUN_0203F44C: ; 0x0203F44C
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0205F710
+ cmp r0, #0x5
+ blo _0203F47C
+ mov r0, #0x1
+ b _0203F47E
+_0203F47C:
+ mov r0, #0x0
+_0203F47E:
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0203F484
+FUN_0203F484: ; 0x0203F484
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, #0x80
+ ldr r5, [r5, #0x0]
+ add r4, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_02023788
+ add r7, r0, #0x0
+ bl FUN_02023818
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0204B2B4
+ cmp r6, r0
+ bne _0203F4CE
+ add r0, r7, #0x0
+ bl FUN_0202381C
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0204B2C0
+ cmp r6, r0
+ bne _0203F4CE
+ mov r0, #0x1
+ strh r0, [r4, #0x0]
+ b _0203F4D2
+_0203F4CE:
+ mov r0, #0x0
+ strh r0, [r4, #0x0]
+_0203F4D2:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203F4D8
+FUN_0203F4D8: ; 0x0203F4D8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02024DA0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0202471C
+ strh r0, [r5, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203F508
+FUN_0203F508: ; 0x0203F508
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r6, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r6, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r6, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r1, r6, #0x0
+ add r1, #0x80
+ ldr r1, [r1, #0x0]
+ ldr r2, [r1, #0x1c]
+ ldr r1, [r2, #0x8]
+ lsl r1, r1, #0x10
+ lsr r5, r1, #0x10
+ ldr r1, [r2, #0xc]
+ lsl r1, r1, #0x10
+ lsr r4, r1, #0x10
+ cmp r7, #0x3
+ blo _0203F54C
+ ldr r7, _0203F5C8 ; =0x0000010E
+ b _0203F582
+_0203F54C:
+ cmp r0, #0x1e
+ blo _0203F556
+ mov r7, #0x43
+ lsl r7, r7, #0x2
+ b _0203F582
+_0203F556:
+ bl FUN_0201B9EC
+ mov r1, #0x64
+ blx _s32_div_f
+ cmp r1, #0x19
+ bge _0203F568
+ ldr r7, _0203F5CC ; =0x0000010D
+ b _0203F582
+_0203F568:
+ bl FUN_0201B9EC
+ mov r1, #0x6
+ blx _s32_div_f
+ lsl r0, r1, #0x10
+ lsr r1, r0, #0x10
+ mov r0, #0x6
+ mul r0, r7
+ add r0, r1, r0
+ lsl r1, r0, #0x1
+ ldr r0, _0203F5D0 ; =0x020F3538
+ ldrh r7, [r0, r1]
+_0203F582:
+ cmp r5, #0xb
+ bne _0203F59A
+ cmp r4, #0x1
+ bne _0203F58E
+ mov r4, #0x0
+ b _0203F5A4
+_0203F58E:
+ cmp r4, #0x14
+ bne _0203F596
+ mov r4, #0x2
+ b _0203F5A4
+_0203F596:
+ mov r4, #0x5
+ b _0203F5A4
+_0203F59A:
+ cmp r5, #0x14
+ bne _0203F5A2
+ mov r4, #0x1
+ b _0203F5A4
+_0203F5A2:
+ mov r4, #0x3
+_0203F5A4:
+ mov r5, #0x0
+_0203F5A6:
+ cmp r5, r4
+ beq _0203F5B8
+ add r0, r6, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ add r1, r5, #0x0
+ add r2, r7, #0x0
+ bl FUN_02034C24
+_0203F5B8:
+ add r0, r5, #0x1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #0x4
+ blo _0203F5A6
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ nop
+_0203F5C8: .word 0x0000010E
+_0203F5CC: .word 0x0000010D
+_0203F5D0: .word 0x020F3538
+
+ thumb_func_start FUN_0203F5D4
+FUN_0203F5D4: ; 0x0203F5D4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0205F720
+ strh r0, [r5, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203F604
+FUN_0203F604: ; 0x0203F604
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0205F740
+ strh r0, [r5, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203F634
+FUN_0203F634: ; 0x0203F634
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0205F760
+ strh r0, [r5, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203F664
+FUN_0203F664: ; 0x0203F664
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r2, #0x0
+ add r3, sp, #0x0
+ add r0, #0x8
+_0203F684:
+ ldr r6, [r0, #0x0]
+ ldr r1, [r5, #0x8]
+ add r6, r6, #0x1
+ str r6, [r0, #0x0]
+ ldrb r1, [r1, #0x0]
+ add r2, r2, #0x1
+ strb r1, [r3, #0x0]
+ add r3, r3, #0x1
+ cmp r2, #0x5
+ blt _0203F684
+ ldr r1, [r0, #0x0]
+ ldr r2, [r5, #0x8]
+ add r1, r1, #0x1
+ str r1, [r0, #0x0]
+ ldrb r6, [r2, #0x0]
+ mov r0, #0x4
+ bl FUN_02027E5C
+ add r1, sp, #0x0
+ add r2, r6, #0x0
+ mov r3, #0x0
+ add r7, r0, #0x0
+ bl FUN_02027F04
+ add r5, #0x80
+ add r6, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02028048
+ add r1, r7, #0x0
+ bl FUN_02028094
+ add r5, r0, #0x0
+ add r0, r7, #0x0
+ bl FUN_02016A18
+ ldr r0, _0203F6E0 ; =0x0000FFFF
+ cmp r5, r0
+ bne _0203F6D8
+ strh r0, [r4, #0x0]
+ b _0203F6DA
+_0203F6D8:
+ strh r6, [r4, #0x0]
+_0203F6DA:
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+_0203F6E0: .word 0x0000FFFF
+
+ thumb_func_start FUN_0203F6E4
+FUN_0203F6E4: ; 0x0203F6E4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02028048
+ bl FUN_02028074
+ ldr r1, _0203F71C ; =0x0000FFFF
+ cmp r0, r1
+ bne _0203F712
+ mov r0, #0x0
+ b _0203F714
+_0203F712:
+ mov r0, #0x1
+_0203F714:
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ nop
+_0203F71C: .word 0x0000FFFF
+
+ thumb_func_start FUN_0203F720
+FUN_0203F720: ; 0x0203F720
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r2, [r5, #0x8]
+ add r1, r2, #0x1
+ str r1, [r5, #0x8]
+ ldrb r4, [r2, #0x0]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, #0x80
+ add r6, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ add r5, r0, #0x0
+ cmp r4, #0x3
+ bls _0203F752
+ bl ErrorHandling
+_0203F752:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0205F4A0
+ strh r0, [r6, #0x0]
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0203F760
+FUN_0203F760: ; 0x0203F760
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r4, #0x80
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ mov r1, #0x20
+ ldr r0, [r0, #0xc]
+ add r2, sp, #0x0
+ bl FUN_02022534
+ ldr r1, [sp, #0x0]
+ add r4, r0, #0x0
+ cmp r1, #0x0
+ bne _0203F798
+ mov r1, #0x0
+ strh r1, [r5, #0x0]
+ bl FUN_02016A18
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0203F798:
+ cmp r1, #0x1
+ bne _0203F7AE
+ mov r1, #0x0
+ bl FUN_0202B21C
+ strh r0, [r5, #0x0]
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0203F7AE:
+ cmp r1, #0x2
+ bne _0203F7BE
+ mov r1, #0x0
+ strh r1, [r5, #0x0]
+ bl FUN_02016A18
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0203F7BE:
+ mov r0, #0x0
+ strh r0, [r5, #0x0]
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203F7C8
+FUN_0203F7C8: ; 0x0203F7C8
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x13
+ bl FUN_02039438
+ add r1, r5, #0x0
+ add r1, #0x80
+ add r4, r0, #0x0
+ ldr r1, [r1, #0x0]
+ mov r0, #0x20
+ add r2, r6, #0x0
+ bl FUN_02037A48
+ str r0, [r4, #0x0]
+ ldr r1, _0203F808 ; =FUN_0203BC04
+ add r0, r5, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r4-r6, pc}
+ .balign 4
+_0203F808: .word FUN_0203BC04
+
+ thumb_func_start FUN_0203F80C
+FUN_0203F80C: ; 0x0203F80C
+ push {r4-r6, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r4, #0x80
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ mov r1, #0x13
+ bl FUN_02039438
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ bne _0203F84C
+ bl ErrorHandling
+_0203F84C:
+ ldr r0, [r4, #0x0]
+ bl FUN_02037A40
+ strh r0, [r6, #0x0]
+ ldrh r0, [r6, #0x0]
+ cmp r0, #0x7
+ bne _0203F85E
+ mov r0, #0xff
+ strh r0, [r6, #0x0]
+_0203F85E:
+ ldr r0, [r4, #0x0]
+ bl FUN_02037A70
+ strh r0, [r5, #0x0]
+ ldrh r0, [r5, #0x0]
+ cmp r0, #0x1
+ bne _0203F870
+ mov r0, #0x1
+ b _0203F872
+_0203F870:
+ mov r0, #0x0
+_0203F872:
+ strh r0, [r5, #0x0]
+ ldr r0, [r4, #0x0]
+ bl FUN_02016A18
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0203F880
+FUN_0203F880: ; 0x0203F880
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r2, [r5, #0x8]
+ add r1, r2, #0x1
+ str r1, [r5, #0x8]
+ ldrb r4, [r2, #0x0]
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ cmp r4, #0x64
+ bls _0203F8A2
+ mov r4, #0x64
+_0203F8A2:
+ bl FUN_0201B9EC
+ mov r1, #0x65
+ blx _s32_div_f
+ lsl r0, r1, #0x10
+ lsr r0, r0, #0x10
+ cmp r0, r4
+ bgt _0203F8B8
+ mov r0, #0x1
+ b _0203F8BA
+_0203F8B8:
+ mov r0, #0x0
+_0203F8BA:
+ strh r0, [r5, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0203F8C0
+FUN_0203F8C0: ; 0x0203F8C0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ cmp r4, #0x0
+ beq _0203F8FC
+ cmp r4, #0x1
+ beq _0203F906
+ cmp r4, #0x2
+ beq _0203F910
+ b _0203F91A
+_0203F8FC:
+ mov r2, #0x0
+ mov r3, #0x20
+ bl FUN_0224F12C
+ b _0203F91E
+_0203F906:
+ mov r2, #0x1
+ mov r3, #0x20
+ bl FUN_0224F12C
+ b _0203F91E
+_0203F910:
+ mov r2, #0x2
+ mov r3, #0x20
+ bl FUN_0224F12C
+ b _0203F91E
+_0203F91A:
+ bl ErrorHandling
+_0203F91E:
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203F924
+FUN_0203F924: ; 0x0203F924
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0205F6A8
+ strh r0, [r5, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203F954
+FUN_0203F954: ; 0x0203F954
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ cmp r0, #0x0
+ bne _0203F978
+ add r4, #0x80
+ ldr r0, [r4, #0x0]
+ ldr r0, [r0, #0x10]
+ bl FUN_02239944
+ b _0203F982
+_0203F978:
+ add r4, #0x80
+ ldr r0, [r4, #0x0]
+ ldr r0, [r0, #0x10]
+ bl FUN_02239AAC
+_0203F982:
+ mov r0, #0x1
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203F988
+FUN_0203F988: ; 0x0203F988
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_0203384C
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203F9B0
+FUN_0203F9B0: ; 0x0203F9B0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020286EC
+ bl FUN_02028448
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203F9DC
+FUN_0203F9DC: ; 0x0203F9DC
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02026CC4
+ ldr r1, _0203FA10 ; =0x0000FF79
+ add r1, r4, r1
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ cmp r1, #0x1
+ bhi _0203FA0C
+ bl FUN_02025C30
+_0203FA0C:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+_0203FA10: .word 0x0000FF79
+
+ thumb_func_start FUN_0203FA14
+FUN_0203FA14: ; 0x0203FA14
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ mov r1, #0x0
+ strh r1, [r0, #0x0]
+ ldr r1, _0203FA54 ; =0x0000012A
+ cmp r4, r1
+ blo _0203FA4E
+ add r1, #0xf
+ cmp r4, r1
+ bhi _0203FA4E
+ mov r1, #0x1
+ strh r1, [r0, #0x0]
+_0203FA4E:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ nop
+_0203FA54: .word 0x0000012A
+
+ thumb_func_start FUN_0203FA58
+FUN_0203FA58: ; 0x0203FA58
+ push {r3-r7, lr}
+ sub sp, #0x10
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ str r0, [sp, #0x4]
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ str r0, [sp, #0x8]
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ str r0, [sp, #0xc]
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ mov r0, #0x20
+ bl FUN_0200AA80
+ add r4, r0, #0x0
+ ldr r2, _0203FB48 ; =0x00000147
+ mov r0, #0x0
+ mov r1, #0x1a
+ mov r3, #0x20
+ bl FUN_0200A86C
+ add r5, r0, #0x0
+ ldr r2, [sp, #0x4]
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_0200B518
+ ldr r2, [sp, #0x8]
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_0200B518
+ ldr r2, [sp, #0xc]
+ add r0, r4, #0x0
+ mov r1, #0x2
+ bl FUN_0200B518
+ add r0, r4, #0x0
+ mov r1, #0x3
+ add r2, r7, #0x0
+ bl FUN_0200B518
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ mov r2, #0x1
+ mov r3, #0x20
+ bl FUN_0200A9C4
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_0200A914
+ str r0, [sp, #0x0]
+ ldr r1, [sp, #0x0]
+ add r0, r7, #0x0
+ bl FUN_02021CE0
+ cmp r0, #0x0
+ bne _0203FB24
+ mov r0, #0x1
+ b _0203FB26
+_0203FB24:
+ mov r0, #0x0
+_0203FB26:
+ strh r0, [r6, #0x0]
+ add r0, r7, #0x0
+ bl FUN_02021A20
+ ldr r0, [sp, #0x0]
+ bl FUN_02021A20
+ add r0, r5, #0x0
+ bl FUN_0200A8B8
+ add r0, r4, #0x0
+ bl FUN_0200AB18
+ mov r0, #0x0
+ add sp, #0x10
+ pop {r3-r7, pc}
+ nop
+_0203FB48: .word 0x00000147
+
+ thumb_func_start FUN_0203FB4C
+FUN_0203FB4C: ; 0x0203FB4C
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02023788
+ mov r1, #0x1
+ bl FUN_02023828
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203FB64
+FUN_0203FB64: ; 0x0203FB64
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r1, r5, #0x0
+ add r1, #0x80
+ ldr r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ mov r1, #0xf
+ bl FUN_02039438
+ ldr r0, [r0, #0x0]
+ bl FUN_0205296C
+ strh r0, [r5, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203FB94
+FUN_0203FB94: ; 0x0203FB94
+ push {r3, lr}
+ bl FUN_02033E74
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203FBA0
+FUN_0203FBA0: ; 0x0203FBA0
+ push {r3, lr}
+ bl FUN_02033ED0
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203FBAC
+FUN_0203FBAC: ; 0x0203FBAC
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_02034E48
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203FBBC
+FUN_0203FBBC: ; 0x0203FBBC
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r5, #0x80
+ add r7, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02034E30
+ bl FUN_02034DCC
+ str r4, [r0, #0x0]
+ str r6, [r0, #0x8]
+ mov r1, #0x0
+ str r7, [r0, #0xc]
+ mvn r1, r1
+ str r1, [r0, #0x4]
+ mov r1, #0x1
+ str r1, [r0, #0x10]
+ mov r0, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0203FC1C
+FUN_0203FC1C: ; 0x0203FC1C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ ldr r2, [r5, #0x8]
+ add r1, r0, #0x0
+ add r0, r2, #0x1
+ str r0, [r5, #0x8]
+ add r5, #0x80
+ ldr r0, [r5, #0x0]
+ ldrb r4, [r2, #0x0]
+ ldr r0, [r0, #0x34]
+ bl FUN_02058060
+ add r5, r0, #0x0
+ bne _0203FC4C
+ bl ErrorHandling
+_0203FC4C:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_020588B8
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0203FC58
+FUN_0203FC58: ; 0x0203FC58
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r1, r5, #0x0
+ add r1, #0x80
+ ldr r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02065078
+ strh r0, [r5, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203FC80
+FUN_0203FC80: ; 0x0203FC80
+ push {r3-r5, lr}
+ add r0, #0x80
+ ldr r5, [r0, #0x0]
+ mov r1, #0x28
+ add r0, r5, #0x0
+ bl FUN_02039438
+ add r4, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_0202280C
+ cmp r0, #0x0
+ bne _0203FCAA
+ add r0, r5, #0x0
+ mov r1, #0x4
+ mov r2, #0x3
+ bl FUN_021E8588
+ str r0, [r4, #0x0]
+ bl FUN_021E84F4
+_0203FCAA:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203FCB0
+FUN_0203FCB0: ; 0x0203FCB0
+ push {r3-r5, lr}
+ add r0, #0x80
+ ldr r5, [r0, #0x0]
+ mov r1, #0x28
+ add r0, r5, #0x0
+ bl FUN_02039438
+ add r4, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_0202280C
+ cmp r0, #0x0
+ bne _0203FCD6
+ ldr r0, [r4, #0x0]
+ bl FUN_021E856C
+ ldr r0, [r4, #0x0]
+ bl FUN_021E85E4
+_0203FCD6:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203FCDC
+FUN_0203FCDC: ; 0x0203FCDC
+ push {r3, lr}
+ ldr r2, [r0, #0x8]
+ add r1, r2, #0x1
+ str r1, [r0, #0x8]
+ add r0, #0x80
+ ldrb r1, [r2, #0x0]
+ ldr r0, [r0, #0x0]
+ bl FUN_0206367C
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203FCF4
+FUN_0203FCF4: ; 0x0203FCF4
+ push {r4-r7, lr}
+ sub sp, #0x84
+ add r7, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r7, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ mov r4, #0x0
+ add r6, r4, #0x0
+ add r5, r4, #0x0
+_0203FD10:
+ add r0, r7, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020238F4
+ add r1, r5, #0x0
+ bl FUN_020239D0
+ cmp r0, #0x1
+ bne _0203FD2C
+ add r0, r6, #0x1
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+_0203FD2C:
+ add r0, r5, #0x1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #0x8
+ blo _0203FD10
+ cmp r6, #0x8
+ bhi _0203FD70
+ add r0, r6, r6
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0203FD46: ; jump table (using 16-bit offset)
+ .short _0203FD58 - _0203FD46 - 2; case 0
+ .short _0203FD5C - _0203FD46 - 2; case 1
+ .short _0203FD5C - _0203FD46 - 2; case 2
+ .short _0203FD60 - _0203FD46 - 2; case 3
+ .short _0203FD60 - _0203FD46 - 2; case 4
+ .short _0203FD64 - _0203FD46 - 2; case 5
+ .short _0203FD64 - _0203FD46 - 2; case 6
+ .short _0203FD68 - _0203FD46 - 2; case 7
+ .short _0203FD6C - _0203FD46 - 2; case 8
+_0203FD58:
+ mov r1, #0x1
+ b _0203FD72
+_0203FD5C:
+ mov r1, #0x2
+ b _0203FD72
+_0203FD60:
+ mov r1, #0x3
+ b _0203FD72
+_0203FD64:
+ mov r1, #0x4
+ b _0203FD72
+_0203FD68:
+ mov r1, #0x5
+ b _0203FD72
+_0203FD6C:
+ mov r1, #0x6
+ b _0203FD72
+_0203FD70:
+ mov r1, #0x1
+_0203FD72:
+ ldr r0, _0203FDB4 ; =0x020F4218
+ mov r2, #0x0
+ add r6, sp, #0x4
+_0203FD78:
+ lsl r3, r2, #0x2
+ add r5, r0, r3
+ ldrh r3, [r5, #0x2]
+ cmp r1, r3
+ blt _0203FD8E
+ ldrh r5, [r5, #0x0]
+ lsl r3, r4, #0x1
+ strh r5, [r6, r3]
+ add r3, r4, #0x1
+ lsl r3, r3, #0x18
+ lsr r4, r3, #0x18
+_0203FD8E:
+ add r2, r2, #0x1
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+ cmp r2, #0x13
+ blo _0203FD78
+ ldr r1, _0203FDB8 ; =0x0000FFFF
+ lsl r0, r4, #0x1
+ add r2, sp, #0x4
+ strh r1, [r2, r0]
+ mov r3, #0x0
+ str r3, [sp, #0x0]
+ ldr r0, [r7, #0x74]
+ add r7, #0x80
+ ldr r1, [r7, #0x0]
+ bl FUN_0223D3D0
+ mov r0, #0x1
+ add sp, #0x84
+ pop {r4-r7, pc}
+ .balign 4
+_0203FDB4: .word 0x020F4218
+_0203FDB8: .word 0x0000FFFF
+
+ thumb_func_start FUN_0203FDBC
+FUN_0203FDBC: ; 0x0203FDBC
+ push {r3-r4, lr}
+ sub sp, #0x4
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r2, r0, #0x0
+ ldr r0, _0203FE00 ; =0x0000FFF8
+ add r0, r2, r0
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ cmp r0, #0x5
+ bhi _0203FDE4
+ mov r0, #0x1
+ b _0203FDE6
+_0203FDE4:
+ mov r0, #0x0
+_0203FDE6:
+ lsl r3, r2, #0x2
+ str r0, [sp, #0x0]
+ ldr r2, _0203FE04 ; =0x02105E10
+ ldr r0, [r4, #0x74]
+ add r4, #0x80
+ ldr r2, [r2, r3]
+ ldr r1, [r4, #0x0]
+ mov r3, #0x0
+ bl FUN_0223D3D0
+ mov r0, #0x1
+ add sp, #0x4
+ pop {r3-r4, pc}
+ .balign 4
+_0203FE00: .word 0x0000FFF8
+_0203FE04: .word 0x02105E10
+
+ thumb_func_start FUN_0203FE08
+FUN_0203FE08: ; 0x0203FE08
+ push {r3-r4, lr}
+ sub sp, #0x4
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r2, r0, #0x0
+ cmp r2, #0x1
+ bhi _0203FE28
+ mov r0, #0x1
+ b _0203FE2A
+_0203FE28:
+ mov r0, #0x0
+_0203FE2A:
+ lsl r3, r2, #0x2
+ str r0, [sp, #0x0]
+ ldr r2, _0203FE44 ; =0x02105DEC
+ ldr r0, [r4, #0x74]
+ add r4, #0x80
+ ldr r2, [r2, r3]
+ ldr r1, [r4, #0x0]
+ mov r3, #0x1
+ bl FUN_0223D3D0
+ mov r0, #0x1
+ add sp, #0x4
+ pop {r3-r4, pc}
+ .balign 4
+_0203FE44: .word 0x02105DEC
+
+ thumb_func_start FUN_0203FE48
+FUN_0203FE48: ; 0x0203FE48
+ push {r3-r4, lr}
+ sub sp, #0x4
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r2, r0, #0x0
+ mov r0, #0x0
+ lsl r3, r2, #0x2
+ str r0, [sp, #0x0]
+ ldr r2, _0203FE7C ; =0x02105DF4
+ ldr r0, [r4, #0x74]
+ add r4, #0x80
+ ldr r2, [r2, r3]
+ ldr r1, [r4, #0x0]
+ mov r3, #0x2
+ bl FUN_0223D3D0
+ mov r0, #0x1
+ add sp, #0x4
+ pop {r3-r4, pc}
+ .balign 4
+_0203FE7C: .word 0x02105DF4
+
+ thumb_func_start FUN_0203FE80
+FUN_0203FE80: ; 0x0203FE80
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x10]
+ bl FUN_02038AD0
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0203FE90
+FUN_0203FE90: ; 0x0203FE90
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x14
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r1, r0, #0x0
+ lsl r1, r1, #0x18
+ ldr r0, [r4, #0x0]
+ lsr r1, r1, #0x18
+ bl FUN_02082140
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0203FEC0
+FUN_0203FEC0: ; 0x0203FEC0
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x14
+ bl FUN_02039438
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ str r0, [r4, #0x64]
+ ldr r1, _0203FEF0 ; =FUN_0203FEF4
+ add r0, r4, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r4, pc}
+ nop
+_0203FEF0: .word FUN_0203FEF4
+
+ thumb_func_start FUN_0203FEF4
+FUN_0203FEF4: ; 0x0203FEF4
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x14
+ bl FUN_02039438
+ ldr r1, [r4, #0x64]
+ ldr r0, [r0, #0x0]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl FUN_02082158
+ pop {r4, pc}
+
+ thumb_func_start FUN_0203FF10
+FUN_0203FF10: ; 0x0203FF10
+ push {r3-r7, lr}
+ sub sp, #0x38
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x14
+ bl FUN_02039438
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020377AC
+ bl FUN_020238F4
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ str r0, [sp, #0x8]
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ str r0, [sp, #0xc]
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_0206BB1C
+ add r1, r6, #0x0
+ bl FUN_0206B9B0
+ str r0, [sp, #0x10]
+ add r0, r4, #0x0
+ mov r1, #0x4
+ bl FUN_020239A0
+ add r7, r0, #0x0
+ ldr r1, [sp, #0x8]
+ add r0, sp, #0x14
+ strb r1, [r0, #0x0]
+ ldr r1, [sp, #0x4]
+ strb r1, [r0, #0x1]
+ ldr r1, [sp, #0xc]
+ strb r1, [r0, #0x2]
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205ED0C
+ add r1, sp, #0x14
+ strb r0, [r1, #0x3]
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02024DA0
+ bl FUN_02024CA4
+ add r1, sp, #0x14
+ strb r0, [r1, #0x4]
+ strb r6, [r1, #0x5]
+ ldr r0, [sp, #0x10]
+ str r7, [sp, #0x20]
+ str r0, [sp, #0x1c]
+ add r0, r5, #0x0
+ str r4, [sp, #0x24]
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02027E24
+ str r0, [sp, #0x28]
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl LoadPlayerDataAddress
+ str r0, [sp, #0x2c]
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ add r5, #0x80
+ ldr r0, [r0, #0xc]
+ str r0, [sp, #0x30]
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02029EF8
+ str r0, [sp, #0x34]
+ add r0, sp, #0x14
+ bl FUN_02081214
+ ldr r1, [sp, #0x0]
+ str r0, [r1, #0x0]
+ add r0, r7, #0x0
+ bl FUN_02021A20
+ mov r0, #0x0
+ add sp, #0x38
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02040028
+FUN_02040028: ; 0x02040028
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x14
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x1c]
+ ldr r0, [r0, #0x0]
+ bl FUN_02034824
+ add r5, #0x80
+ ldr r3, [r5, #0x0]
+ add r2, r0, #0x0
+ ldr r1, [r3, #0xc]
+ add r3, #0x98
+ ldr r0, [r4, #0x0]
+ ldr r3, [r3, #0x0]
+ bl FUN_02082630
+ ldr r0, [r4, #0x0]
+ bl FUN_020814E8
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02040074
+FUN_02040074: ; 0x02040074
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x14
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r3, r0, #0x0
+ ldr r0, [r4, #0x0]
+ ldr r2, [r6, #0x0]
+ add r1, r7, #0x0
+ bl FUN_0208201C
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020400C8
+FUN_020400C8: ; 0x020400C8
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x14
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r3, r0, #0x0
+ ldr r0, [r4, #0x0]
+ ldr r2, [r6, #0x0]
+ add r1, r7, #0x0
+ bl FUN_02082034
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204011C
+FUN_0204011C: ; 0x0204011C
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x14
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r3, r0, #0x0
+ ldr r0, [r4, #0x0]
+ ldr r2, [r6, #0x0]
+ add r1, r7, #0x0
+ bl FUN_0208206C
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02040170
+FUN_02040170: ; 0x02040170
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x14
+ bl FUN_02039438
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r1, r0, #0x0
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r3, #0x1
+ str r3, [sp, #0x4]
+ ldr r0, [r4, #0x0]
+ add r2, r6, #0x0
+ bl FUN_0200AD38
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_020401CC
+FUN_020401CC: ; 0x020401CC
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x14
+ bl FUN_02039438
+ ldr r0, [r0, #0x0]
+ bl FUN_02081DC4
+ ldr r1, _020401EC ; =FUN_020401F0
+ add r0, r4, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r4, pc}
+ .balign 4
+_020401EC: .word FUN_020401F0
+
+ thumb_func_start FUN_020401F0
+FUN_020401F0: ; 0x020401F0
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x14
+ bl FUN_02039438
+ ldr r0, [r0, #0x0]
+ bl FUN_02081EB8
+ pop {r3, pc}
+
+ thumb_func_start FUN_02040204
+FUN_02040204: ; 0x02040204
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x14
+ bl FUN_02039438
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x74]
+ ldr r1, [r1, #0x0]
+ bl FUN_02080E0C
+ mov r0, #0x1
+ pop {r4, pc}
+
+ thumb_func_start FUN_02040220
+FUN_02040220: ; 0x02040220
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x14
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r2, r0, #0x0
+ ldr r0, [r4, #0x0]
+ ldr r1, [r6, #0x0]
+ bl FUN_02082090
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0204025C
+FUN_0204025C: ; 0x0204025C
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x14
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r2, r0, #0x0
+ ldr r0, [r4, #0x0]
+ ldr r1, [r6, #0x0]
+ bl FUN_020820B8
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02040298
+FUN_02040298: ; 0x02040298
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x14
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r2, r0, #0x0
+ ldr r0, [r4, #0x0]
+ ldr r1, [r6, #0x0]
+ bl FUN_020820DC
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_020402D4
+FUN_020402D4: ; 0x020402D4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x14
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_0208213C
+ strh r0, [r5, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02040304
+FUN_02040304: ; 0x02040304
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x14
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r2, r0, #0x0
+ ldr r0, [r4, #0x0]
+ ldr r1, [r6, #0x0]
+ bl FUN_0208210C
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02040340
+FUN_02040340: ; 0x02040340
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x14
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_0208217C
+ strh r0, [r5, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02040370
+FUN_02040370: ; 0x02040370
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x14
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_02082190
+ strh r0, [r5, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020403A0
+FUN_020403A0: ; 0x020403A0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x14
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020821B4
+ strh r0, [r5, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020403D0
+FUN_020403D0: ; 0x020403D0
+ push {r4-r6, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x14
+ bl FUN_02039438
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ add r1, r6, #0x0
+ bl FUN_020821C4
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02040414
+FUN_02040414: ; 0x02040414
+ push {r4-r6, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x14
+ bl FUN_02039438
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ add r1, r6, #0x0
+ bl FUN_020821DC
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02040458
+FUN_02040458: ; 0x02040458
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x14
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020821F0
+ strh r0, [r5, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02040488
+FUN_02040488: ; 0x02040488
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x14
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x0]
+ ldr r3, [sp, #0x4]
+ add r1, r6, #0x0
+ add r2, r7, #0x0
+ bl FUN_02082214
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020404FC
+FUN_020404FC: ; 0x020404FC
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x14
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_02082254
+ strh r0, [r5, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204052C
+FUN_0204052C: ; 0x0204052C
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x14
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r2, r0, #0x0
+ ldr r0, [r4, #0x0]
+ ldr r1, [r6, #0x0]
+ mov r3, #0xb
+ bl FUN_02082284
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204056C
+FUN_0204056C: ; 0x0204056C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x14
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020822F0
+ strh r0, [r5, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204059C
+FUN_0204059C: ; 0x0204059C
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x14
+ bl FUN_02039438
+ ldr r0, [r0, #0x0]
+ bl FUN_0208223C
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_020405B4
+FUN_020405B4: ; 0x020405B4
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x14
+ bl FUN_02039438
+ ldr r0, [r0, #0x0]
+ bl FUN_0208224C
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_020405CC
+FUN_020405CC: ; 0x020405CC
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x14
+ bl FUN_02039438
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394F0
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_02082444
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_020405F8
+FUN_020405F8: ; 0x020405F8
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x14
+ bl FUN_02039438
+ ldr r1, _02040614 ; =FUN_02040618
+ add r0, r4, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r4, pc}
+ nop
+_02040614: .word FUN_02040618
+
+ thumb_func_start FUN_02040618
+FUN_02040618: ; 0x02040618
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x14
+ bl FUN_02039438
+ ldr r0, [r0, #0x0]
+ bl FUN_02082508
+ cmp r0, #0x1
+ bne _02040632
+ mov r0, #0x1
+ pop {r3, pc}
+_02040632:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02040638
+FUN_02040638: ; 0x02040638
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x4]
+ ldr r0, [r0, #0x1c]
+ bl FUN_021F4608
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204064C
+FUN_0204064C: ; 0x0204064C
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x4]
+ ldr r0, [r0, #0x1c]
+ bl FUN_021F45E8
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02040660
+FUN_02040660: ; 0x02040660
+ push {r4-r5, lr}
+ sub sp, #0x1c
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x14
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ add r0, sp, #0xc
+ str r0, [sp, #0x0]
+ add r0, sp, #0x8
+ str r0, [sp, #0x4]
+ ldr r0, [r4, #0x0]
+ add r1, sp, #0x18
+ add r2, sp, #0x14
+ add r3, sp, #0x10
+ bl FUN_020825A0
+ ldr r0, [sp, #0x14]
+ cmp r0, #0x1
+ beq _020406B0
+ ldr r0, [sp, #0x10]
+ cmp r0, #0x1
+ beq _020406B0
+ ldr r0, [sp, #0xc]
+ cmp r0, #0x1
+ beq _020406B0
+ ldr r0, [sp, #0x8]
+ cmp r0, #0x1
+ bne _020406B6
+_020406B0:
+ mov r0, #0x1
+ strh r0, [r5, #0x0]
+ b _020406BA
+_020406B6:
+ mov r0, #0x0
+ strh r0, [r5, #0x0]
+_020406BA:
+ mov r0, #0x0
+ add sp, #0x1c
+ pop {r4-r5, pc}
+
+ thumb_func_start FUN_020406C0
+FUN_020406C0: ; 0x020406C0
+ push {r3, lr}
+ ldr r0, [r0, #0x74]
+ bl FUN_0224D3E8
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_020406CC
+FUN_020406CC: ; 0x020406CC
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r6, [r0, #0x0]
+ mov r1, #0xf
+ add r0, r6, #0x0
+ bl FUN_02039438
+ ldr r1, [r5, #0x8]
+ add r4, r0, #0x0
+ add r0, r1, #0x1
+ str r0, [r5, #0x8]
+ ldrb r5, [r1, #0x0]
+ add r0, r6, #0x0
+ bl FUN_020377AC
+ bl FUN_020238F4
+ add r2, r0, #0x0
+ ldr r0, [r4, #0x0]
+ add r1, r5, #0x0
+ bl FUN_0200ABC0
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02040700
+FUN_02040700: ; 0x02040700
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r4, [r0, #0x0]
+ mov r1, #0xf
+ add r0, r4, #0x0
+ bl FUN_02039438
+ ldr r2, [r5, #0x8]
+ add r1, r2, #0x1
+ str r1, [r5, #0x8]
+ ldrb r1, [r2, #0x0]
+ ldr r0, [r0, #0x0]
+ ldr r2, [r4, #0xc]
+ bl FUN_0200ABE4
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02040724
+FUN_02040724: ; 0x02040724
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r4, [r0, #0x0]
+ mov r1, #0xf
+ add r0, r4, #0x0
+ bl FUN_02039438
+ ldr r2, [r5, #0x8]
+ add r1, r2, #0x1
+ str r1, [r5, #0x8]
+ ldrb r1, [r2, #0x0]
+ ldr r0, [r0, #0x0]
+ ldr r2, [r4, #0xc]
+ bl FUN_0200AC0C
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02040748
+FUN_02040748: ; 0x02040748
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r6, [r0, #0x0]
+ mov r1, #0xf
+ add r0, r6, #0x0
+ bl FUN_02039438
+ ldr r1, [r5, #0x8]
+ add r7, r0, #0x0
+ add r0, r1, #0x1
+ str r0, [r5, #0x8]
+ add r0, r5, #0x0
+ ldrb r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r5, r0, #0x0
+ ldr r0, [r6, #0xc]
+ bl FUN_0206BB1C
+ add r1, r5, #0x0
+ bl FUN_0206B9B0
+ add r2, r0, #0x0
+ ldr r0, [r7, #0x0]
+ add r1, r4, #0x0
+ bl FUN_0200AC60
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02040790
+FUN_02040790: ; 0x02040790
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ ldr r1, [r5, #0x8]
+ add r6, r0, #0x0
+ add r0, r1, #0x1
+ str r0, [r5, #0x8]
+ add r0, r5, #0x0
+ ldrb r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r2, r0, #0x0
+ ldr r0, [r6, #0x0]
+ add r1, r4, #0x0
+ bl FUN_0200AE38
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_020407C8
+FUN_020407C8: ; 0x020407C8
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ ldr r1, [r5, #0x8]
+ add r6, r0, #0x0
+ add r0, r1, #0x1
+ str r0, [r5, #0x8]
+ add r0, r5, #0x0
+ ldrb r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r2, r0, #0x0
+ ldr r0, [r6, #0x0]
+ add r1, r4, #0x0
+ bl FUN_0200AEE0
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02040800
+FUN_02040800: ; 0x02040800
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ ldr r1, [r5, #0x8]
+ add r6, r0, #0x0
+ add r0, r1, #0x1
+ str r0, [r5, #0x8]
+ add r0, r5, #0x0
+ ldrb r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ bl FUN_0206EA30
+ add r2, r0, #0x0
+ ldr r0, [r6, #0x0]
+ add r1, r4, #0x0
+ bl FUN_0200AD5C
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204083C
+FUN_0204083C: ; 0x0204083C
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ ldr r1, [r5, #0x8]
+ add r6, r0, #0x0
+ add r0, r1, #0x1
+ str r0, [r5, #0x8]
+ add r0, r5, #0x0
+ ldrb r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r2, r0, #0x0
+ ldr r0, [r6, #0x0]
+ add r1, r4, #0x0
+ bl FUN_0200AD5C
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02040874
+FUN_02040874: ; 0x02040874
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ ldr r1, [r5, #0x8]
+ add r6, r0, #0x0
+ add r0, r1, #0x1
+ str r0, [r5, #0x8]
+ add r0, r5, #0x0
+ ldrb r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r5, r0, #0x0
+ bl FUN_02054C14
+ add r3, r0, #0x0
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ str r0, [sp, #0x4]
+ ldr r0, [r6, #0x0]
+ add r1, r4, #0x0
+ add r2, r5, #0x0
+ bl FUN_0200AD38
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_020408BC
+FUN_020408BC: ; 0x020408BC
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ ldr r1, [r5, #0x8]
+ add r7, r0, #0x0
+ add r0, r1, #0x1
+ str r0, [r5, #0x8]
+ add r0, r5, #0x0
+ ldrb r6, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ str r0, [sp, #0x8]
+ ldr r1, [r5, #0x8]
+ add r2, r1, #0x1
+ str r2, [r5, #0x8]
+ ldrb r4, [r1, #0x0]
+ add r1, r2, #0x1
+ str r1, [r5, #0x8]
+ ldrb r3, [r2, #0x0]
+ cmp r4, #0x0
+ bne _02040904
+ bl FUN_02054C14
+ lsl r0, r0, #0x18
+ lsr r3, r0, #0x18
+_02040904:
+ str r4, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ ldr r0, [r7, #0x0]
+ ldr r2, [sp, #0x8]
+ add r1, r6, #0x0
+ bl FUN_0200AD38
+ mov r0, #0x0
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204091C
+FUN_0204091C: ; 0x0204091C
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r6, [r0, #0x0]
+ mov r1, #0xf
+ add r0, r6, #0x0
+ bl FUN_02039438
+ ldr r1, [r5, #0x8]
+ add r7, r0, #0x0
+ add r0, r1, #0x1
+ str r0, [r5, #0x8]
+ add r0, r5, #0x0
+ ldrb r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r5, r0, #0x0
+ ldr r0, [r6, #0xc]
+ bl FUN_0206BB1C
+ add r1, r5, #0x0
+ bl FUN_0206B9B0
+ add r2, r0, #0x0
+ ldr r0, [r7, #0x0]
+ add r1, r4, #0x0
+ bl FUN_0200ACF8
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02040964
+FUN_02040964: ; 0x02040964
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r4, [r0, #0x0]
+ ldr r0, [r4, #0xc]
+ bl FUN_02022510
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0xf
+ bl FUN_02039438
+ ldr r1, [r5, #0x8]
+ add r6, r0, #0x0
+ add r0, r1, #0x1
+ str r0, [r5, #0x8]
+ add r0, r5, #0x0
+ ldrb r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r5, r0, #0x0
+ mov r1, #0x1e
+ blx _s32_div_f
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x1e
+ blx _s32_div_f
+ add r2, r1, #0x0
+ ldr r0, [sp, #0x0]
+ add r1, r7, #0x0
+ bl FUN_0206B5E4
+ add r2, r0, #0x0
+ ldr r0, [r6, #0x0]
+ add r1, r4, #0x0
+ bl FUN_0200ACF8
+ mov r0, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_020409C0
+FUN_020409C0: ; 0x020409C0
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ ldr r1, [r5, #0x8]
+ add r6, r0, #0x0
+ add r0, r1, #0x1
+ str r0, [r5, #0x8]
+ add r0, r5, #0x0
+ ldrb r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r2, r0, #0x0
+ ldr r0, [r6, #0x0]
+ add r1, r4, #0x0
+ bl FUN_0200B02C
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_020409F8
+FUN_020409F8: ; 0x020409F8
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ ldr r1, [r5, #0x8]
+ add r6, r0, #0x0
+ add r0, r1, #0x1
+ str r0, [r5, #0x8]
+ add r0, r5, #0x0
+ ldrb r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r2, r0, #0x0
+ ldr r0, [r6, #0x0]
+ add r1, r4, #0x0
+ bl FUN_0200B064
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02040A30
+FUN_02040A30: ; 0x02040A30
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ add r0, #0x80
+ ldr r5, [r0, #0x0]
+ add r0, r5, #0x0
+ bl FUN_020377AC
+ bl FUN_020238F4
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0xf
+ bl FUN_02039438
+ ldr r1, [r7, #0x8]
+ add r6, r0, #0x0
+ add r0, r1, #0x1
+ str r0, [r7, #0x8]
+ add r0, r4, #0x0
+ ldrb r5, [r1, #0x0]
+ bl FUN_020239CC
+ add r7, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02023A28
+ add r1, r0, #0x0
+ add r0, r7, #0x0
+ mov r2, #0x2
+ bl FUN_020536D0
+ add r2, r0, #0x0
+ ldr r0, [r6, #0x0]
+ add r1, r5, #0x0
+ bl FUN_0200B09C
+ mov r0, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02040A7C
+FUN_02040A7C: ; 0x02040A7C
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ ldr r1, [r5, #0x8]
+ add r7, r0, #0x0
+ add r0, r1, #0x1
+ str r0, [r5, #0x8]
+ add r0, r5, #0x0
+ ldrb r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ ldr r1, [r5, #0x8]
+ str r0, [sp, #0x8]
+ add r0, r1, #0x1
+ str r0, [r5, #0x8]
+ ldrb r5, [r1, #0x0]
+ add r0, r6, #0x0
+ mov r1, #0x4
+ bl FUN_02040AE4
+ add r6, r0, #0x0
+ str r5, [sp, #0x0]
+ mov r0, #0x2
+ str r0, [sp, #0x4]
+ ldr r0, [r7, #0x0]
+ ldr r3, [sp, #0x8]
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_0200ABB4
+ add r0, r6, #0x0
+ bl FUN_02021A20
+ mov r0, #0x0
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02040AE4
+FUN_02040AE4: ; 0x02040AE4
+ push {r3-r5, lr}
+ ldr r2, _02040B08 ; =0x0000016A
+ add r4, r0, #0x0
+ add r3, r1, #0x0
+ mov r0, #0x1
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ add r5, r0, #0x0
+ add r1, r4, #0x0
+ bl FUN_0200A914
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0200A8B8
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+_02040B08: .word 0x0000016A
+
+ thumb_func_start FUN_02040B0C
+FUN_02040B0C: ; 0x02040B0C
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ ldr r1, [r4, #0x8]
+ add r6, r0, #0x0
+ add r0, r1, #0x1
+ str r0, [r4, #0x8]
+ add r4, #0x80
+ ldr r0, [r4, #0x0]
+ ldrb r5, [r1, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205F388
+ mov r1, #0x4
+ bl FUN_02040AE4
+ add r4, r0, #0x0
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ mov r0, #0x2
+ str r0, [sp, #0x4]
+ ldr r0, [r6, #0x0]
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200ABB4
+ add r0, r4, #0x0
+ bl FUN_02021A20
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02040B5C
+FUN_02040B5C: ; 0x02040B5C
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ ldr r1, [r4, #0x8]
+ add r6, r0, #0x0
+ add r0, r1, #0x1
+ str r0, [r4, #0x8]
+ add r4, #0x80
+ ldr r0, [r4, #0x0]
+ ldrb r5, [r1, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205F398
+ mov r1, #0x4
+ bl FUN_02040AE4
+ add r4, r0, #0x0
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ mov r0, #0x2
+ str r0, [sp, #0x4]
+ ldr r0, [r6, #0x0]
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200ABB4
+ add r0, r4, #0x0
+ bl FUN_02021A20
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02040BAC
+FUN_02040BAC: ; 0x02040BAC
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ ldr r1, [r4, #0x8]
+ add r6, r0, #0x0
+ add r0, r1, #0x1
+ str r0, [r4, #0x8]
+ add r4, #0x80
+ ldr r0, [r4, #0x0]
+ ldrb r5, [r1, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205F3C0
+ mov r1, #0x4
+ bl FUN_02040AE4
+ add r4, r0, #0x0
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ mov r0, #0x2
+ str r0, [sp, #0x4]
+ ldr r0, [r6, #0x0]
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200ABB4
+ add r0, r4, #0x0
+ bl FUN_02021A20
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02040BFC
+FUN_02040BFC: ; 0x02040BFC
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ ldr r1, [r5, #0x8]
+ add r6, r0, #0x0
+ add r0, r1, #0x1
+ str r0, [r5, #0x8]
+ add r0, r5, #0x0
+ ldrb r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r2, r0, #0x0
+ ldr r0, [r6, #0x0]
+ add r1, r4, #0x0
+ bl FUN_0200B350
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02040C34
+FUN_02040C34: ; 0x02040C34
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ ldr r1, [r5, #0x8]
+ add r6, r0, #0x0
+ add r0, r1, #0x1
+ str r0, [r5, #0x8]
+ add r0, r5, #0x0
+ ldrb r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r2, r0, #0x0
+ ldr r0, [r6, #0x0]
+ add r1, r4, #0x0
+ bl FUN_0200B1D4
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02040C6C
+FUN_02040C6C: ; 0x02040C6C
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ ldr r1, [r5, #0x8]
+ add r6, r0, #0x0
+ add r0, r1, #0x1
+ str r0, [r5, #0x8]
+ add r0, r5, #0x0
+ ldrb r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r2, r0, #0x0
+ ldr r0, [r6, #0x0]
+ add r1, r4, #0x0
+ bl FUN_0200B164
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02040CA4
+FUN_02040CA4: ; 0x02040CA4
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ mov r0, #0x16
+ mov r1, #0x4
+ bl FUN_020219F4
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ ldr r1, [r5, #0x8]
+ add r7, r0, #0x0
+ add r0, r1, #0x1
+ str r0, [r5, #0x8]
+ add r0, r5, #0x0
+ ldrb r6, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ mov r1, #0x4
+ add r2, r4, #0x0
+ bl FUN_02064E60
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ mov r0, #0x2
+ str r0, [sp, #0x4]
+ ldr r0, [r7, #0x0]
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200ABB4
+ add r0, r4, #0x0
+ bl FUN_02021A20
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02040D04
+FUN_02040D04: ; 0x02040D04
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ ldr r1, [r4, #0x8]
+ add r7, r0, #0x0
+ add r0, r1, #0x1
+ str r0, [r4, #0x8]
+ add r0, r4, #0x0
+ ldrb r6, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394F0
+ sub r5, #0x95
+ add r4, r0, #0x0
+ lsl r0, r5, #0x10
+ lsr r0, r0, #0x10
+ mov r1, #0x20
+ bl FUN_020852E8
+ add r5, r0, #0x0
+ cmp r4, #0x2
+ bhs _02040D5A
+ mov r0, #0x1
+ b _02040D5C
+_02040D5A:
+ mov r0, #0x0
+_02040D5C:
+ str r0, [sp, #0x0]
+ mov r0, #0x2
+ str r0, [sp, #0x4]
+ ldr r0, [r7, #0x0]
+ add r1, r6, #0x0
+ add r2, r5, #0x0
+ mov r3, #0x0
+ bl FUN_0200ABB4
+ add r0, r5, #0x0
+ bl FUN_02021A20
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02040D7C
+FUN_02040D7C: ; 0x02040D7C
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ ldr r1, [r5, #0x8]
+ add r6, r0, #0x0
+ add r0, r1, #0x1
+ str r0, [r5, #0x8]
+ add r0, r5, #0x0
+ ldrb r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r2, r0, #0x0
+ ldr r0, [r6, #0x0]
+ add r1, r4, #0x0
+ bl FUN_0200AE04
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02040DB4
+FUN_02040DB4: ; 0x02040DB4
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ ldr r1, [r5, #0x8]
+ add r6, r0, #0x0
+ add r0, r1, #0x1
+ str r0, [r5, #0x8]
+ add r0, r5, #0x0
+ ldrb r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r2, r0, #0x0
+ ldr r0, [r6, #0x0]
+ add r1, r4, #0x0
+ bl FUN_0200B660
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02040DEC
+FUN_02040DEC: ; 0x02040DEC
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ ldr r1, [r5, #0x8]
+ add r7, r0, #0x0
+ add r0, r1, #0x1
+ str r0, [r5, #0x8]
+ mov r0, #0xb
+ ldrb r6, [r1, #0x0]
+ add r1, r0, #0x0
+ bl FUN_020219F4
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02024EB4
+ bl FUN_02024F0C
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02021E28
+ ldr r0, _02040E48 ; =0x020ECAC4
+ mov r3, #0x0
+ ldrb r0, [r0, #0x0]
+ str r3, [sp, #0x0]
+ add r1, r6, #0x0
+ str r0, [sp, #0x4]
+ ldr r0, [r7, #0x0]
+ add r2, r4, #0x0
+ bl FUN_0200ABB4
+ add r0, r4, #0x0
+ bl FUN_02021A20
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r3-r7, pc}
+ nop
+_02040E48: .word 0x020ECAC4
+
+ thumb_func_start FUN_02040E4C
+FUN_02040E4C: ; 0x02040E4C
+ push {r3-r7, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r6, [r0, #0x0]
+ mov r1, #0xf
+ add r0, r6, #0x0
+ bl FUN_02039438
+ ldr r1, [r4, #0x8]
+ add r7, r0, #0x0
+ add r0, r1, #0x1
+ str r0, [r4, #0x8]
+ add r0, r4, #0x0
+ ldrb r5, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394F0
+ add r4, r0, #0x0
+ ldr r0, [r6, #0xc]
+ bl FUN_0206BB1C
+ ldr r1, [sp, #0x0]
+ bl FUN_0206B9B0
+ add r4, #0x36
+ add r1, r4, #0x0
+ mov r2, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x10
+ lsr r2, r0, #0x10
+ ldr r0, [r7, #0x0]
+ add r1, r5, #0x0
+ bl FUN_0200AD5C
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02040EB4
+FUN_02040EB4: ; 0x02040EB4
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ ldr r1, [r5, #0x8]
+ add r6, r0, #0x0
+ add r0, r1, #0x1
+ str r0, [r5, #0x8]
+ add r0, r5, #0x0
+ ldrb r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r1, #0x3
+ bl FUN_0207FC5C
+ lsl r0, r0, #0x10
+ lsr r2, r0, #0x10
+ ldr r0, [r6, #0x0]
+ add r1, r4, #0x0
+ bl FUN_0200AD94
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02040EF8
+FUN_02040EF8: ; 0x02040EF8
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ ldr r1, [r5, #0x8]
+ add r6, r0, #0x0
+ add r0, r1, #0x1
+ str r0, [r5, #0x8]
+ add r0, r5, #0x0
+ ldrb r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r2, r0, #0x0
+ sub r2, r2, #0x1
+ lsl r2, r2, #0x10
+ ldr r0, [r6, #0x0]
+ add r1, r4, #0x0
+ lsr r2, r2, #0x10
+ bl FUN_0200B534
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02040F34
+FUN_02040F34: ; 0x02040F34
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ ldr r1, [r5, #0x8]
+ add r6, r0, #0x0
+ add r0, r1, #0x1
+ str r0, [r5, #0x8]
+ add r0, r5, #0x0
+ ldrb r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r2, r0, #0x0
+ ldr r0, [r6, #0x0]
+ add r1, r4, #0x0
+ bl FUN_0200AE70
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02040F6C
+FUN_02040F6C: ; 0x02040F6C
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ ldr r1, [r5, #0x8]
+ add r6, r0, #0x0
+ add r0, r1, #0x1
+ str r0, [r5, #0x8]
+ add r0, r5, #0x0
+ ldrb r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r2, r0, #0x0
+ ldr r0, [r6, #0x0]
+ add r1, r4, #0x0
+ bl FUN_0200AEA8
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02040FA4
+FUN_02040FA4: ; 0x02040FA4
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ ldr r1, [r5, #0x8]
+ add r6, r0, #0x0
+ add r0, r1, #0x1
+ str r0, [r5, #0x8]
+ add r0, r5, #0x0
+ ldrb r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r2, r0, #0x0
+ ldr r0, [r6, #0x0]
+ add r1, r4, #0x0
+ bl FUN_0200B388
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02040FDC
+FUN_02040FDC: ; 0x02040FDC
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ ldr r1, [r5, #0x8]
+ add r6, r0, #0x0
+ add r0, r1, #0x1
+ str r0, [r5, #0x8]
+ add r0, r5, #0x0
+ ldrb r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r2, r0, #0x0
+ ldr r0, [r6, #0x0]
+ add r1, r4, #0x0
+ bl FUN_0200B20C
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02041014
+FUN_02041014: ; 0x02041014
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ ldr r1, [r5, #0x8]
+ add r6, r0, #0x0
+ add r0, r1, #0x1
+ str r0, [r5, #0x8]
+ add r0, r5, #0x0
+ ldrb r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r2, r0, #0x0
+ ldr r0, [r6, #0x0]
+ add r1, r4, #0x0
+ bl FUN_0200B19C
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204104C
+FUN_0204104C: ; 0x0204104C
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ ldr r1, [r5, #0x8]
+ add r6, r0, #0x0
+ add r0, r1, #0x1
+ str r0, [r5, #0x8]
+ add r0, r5, #0x0
+ ldrb r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ ldr r0, [r5, #0x8]
+ add r1, r4, #0x0
+ add r0, r0, #0x1
+ str r0, [r5, #0x8]
+ ldr r0, [r6, #0x0]
+ add r2, r7, #0x0
+ bl FUN_0200ACC0
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02041094
+FUN_02041094: ; 0x02041094
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ ldr r1, [r5, #0x8]
+ add r6, r0, #0x0
+ add r0, r1, #0x1
+ str r0, [r5, #0x8]
+ add r5, #0x80
+ ldr r0, [r5, #0x0]
+ ldrb r4, [r1, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205F3C0
+ add r2, r0, #0x0
+ ldr r0, [r6, #0x0]
+ add r1, r4, #0x0
+ bl FUN_0200ACC0
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_020410C8
+FUN_020410C8: ; 0x020410C8
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ ldr r1, [r5, #0x8]
+ add r6, r0, #0x0
+ add r0, r1, #0x1
+ str r0, [r5, #0x8]
+ add r0, r5, #0x0
+ ldrb r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r2, r0, #0x0
+ ldr r0, [r6, #0x0]
+ add r1, r4, #0x0
+ bl FUN_0200B698
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02041100
+FUN_02041100: ; 0x02041100
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ ldr r1, [r5, #0x8]
+ add r6, r0, #0x0
+ add r0, r1, #0x1
+ str r0, [r5, #0x8]
+ add r0, r5, #0x0
+ ldrb r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r2, r0, #0x0
+ ldr r0, [r6, #0x0]
+ add r1, r4, #0x0
+ bl FUN_0200B09C
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02041138
+FUN_02041138: ; 0x02041138
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ ldr r1, [r5, #0x8]
+ add r6, r0, #0x0
+ add r0, r1, #0x1
+ str r0, [r5, #0x8]
+ add r0, r5, #0x0
+ ldrb r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r2, r0, #0x0
+ sub r2, r2, #0x1
+ lsl r2, r2, #0x10
+ ldr r0, [r6, #0x0]
+ add r1, r4, #0x0
+ lsr r2, r2, #0x10
+ bl FUN_0200B568
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02041174
+FUN_02041174: ; 0x02041174
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ ldr r2, [r4, #0x8]
+ add r1, r2, #0x1
+ str r1, [r4, #0x8]
+ ldrb r1, [r2, #0x0]
+ ldr r0, [r0, #0x0]
+ bl FUN_0200B7A8
+ mov r0, #0x0
+ pop {r4, pc}
+
+ thumb_func_start FUN_02041194
+FUN_02041194: ; 0x02041194
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0205F5D8
+ strh r0, [r5, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020411C4
+FUN_020411C4: ; 0x020411C4
+ push {r4-r7, lr}
+ sub sp, #0x24
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r7, [r0, #0x0]
+ ldr r0, [r7, #0xc]
+ bl FUN_02022510
+ str r0, [sp, #0x20]
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ str r0, [sp, #0xc]
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ str r0, [sp, #0x8]
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ str r0, [sp, #0x4]
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394F0
+ str r0, [sp, #0x0]
+ ldr r0, [r7, #0xc]
+ bl FUN_0206BB1C
+ bl FUN_0206B9AC
+ lsl r0, r0, #0x10
+ lsr r6, r0, #0x10
+ ldr r0, _0204133C ; =0x00000000
+ str r0, [sp, #0x1c]
+ str r0, [sp, #0x18]
+ ldr r5, [sp, #0x1c]
+ beq _02041286
+_0204123C:
+ ldr r0, [r7, #0xc]
+ bl FUN_0206BB1C
+ add r1, r5, #0x0
+ bl FUN_0206B9B0
+ mov r1, #0x4c
+ mov r2, #0x0
+ add r4, r0, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ bne _0204127C
+ add r0, r4, #0x0
+ mov r1, #0x7
+ mov r2, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ lsl r1, r1, #0x10
+ ldr r0, [sp, #0x0]
+ lsr r1, r1, #0x10
+ bl FUN_02041354
+ cmp r0, #0x0
+ beq _0204127C
+ ldr r1, [sp, #0x1c]
+ cmp r1, r0
+ bge _0204127C
+ str r0, [sp, #0x1c]
+ str r5, [sp, #0x18]
+_0204127C:
+ add r0, r5, #0x1
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ cmp r5, r6
+ blo _0204123C
+_02041286:
+ mov r6, #0x0
+ str r6, [sp, #0x14]
+ str r6, [sp, #0x10]
+ add r7, r6, #0x0
+_0204128E:
+ mov r5, #0x0
+_02041290:
+ ldr r0, [sp, #0x20]
+ ldr r1, [sp, #0x10]
+ add r2, r5, #0x0
+ bl FUN_0206B5E4
+ mov r1, #0x5
+ mov r2, #0x0
+ add r4, r0, #0x0
+ bl FUN_020672BC
+ cmp r0, #0x0
+ beq _020412E0
+ add r0, r4, #0x0
+ mov r1, #0x4c
+ mov r2, #0x0
+ bl FUN_020672BC
+ cmp r0, #0x0
+ bne _020412E0
+ add r0, r4, #0x0
+ mov r1, #0x7
+ mov r2, #0x0
+ bl FUN_020672BC
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ lsl r1, r1, #0x10
+ ldr r0, [sp, #0x0]
+ lsr r1, r1, #0x10
+ bl FUN_02041354
+ cmp r0, #0x0
+ beq _020412E0
+ cmp r6, r0
+ bge _020412E0
+ add r6, r0, #0x0
+ add r0, r5, r7
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x14]
+_020412E0:
+ add r5, r5, #0x1
+ cmp r5, #0x1e
+ blo _02041290
+ ldr r0, [sp, #0x10]
+ add r7, #0x1e
+ add r0, r0, #0x1
+ str r0, [sp, #0x10]
+ cmp r0, #0x12
+ blo _0204128E
+ ldr r0, [sp, #0x1c]
+ cmp r0, #0x0
+ bne _0204130C
+ cmp r6, #0x0
+ bne _0204130C
+ ldr r0, [sp, #0xc]
+ mov r1, #0x0
+ strh r1, [r0, #0x0]
+ ldr r0, [sp, #0x8]
+ strh r1, [r0, #0x0]
+ ldr r0, [sp, #0x4]
+ strh r1, [r0, #0x0]
+ b _02041336
+_0204130C:
+ ldr r0, [sp, #0x1c]
+ cmp r0, r6
+ blo _02041326
+ ldr r1, [sp, #0x18]
+ ldr r0, [sp, #0xc]
+ strh r1, [r0, #0x0]
+ ldr r1, [sp, #0x1c]
+ ldr r0, [sp, #0x8]
+ strh r1, [r0, #0x0]
+ ldr r0, [sp, #0x4]
+ mov r1, #0x0
+ strh r1, [r0, #0x0]
+ b _02041336
+_02041326:
+ ldr r1, [sp, #0x14]
+ ldr r0, [sp, #0xc]
+ strh r1, [r0, #0x0]
+ ldr r0, [sp, #0x8]
+ mov r1, #0x1
+ strh r6, [r0, #0x0]
+ ldr r0, [sp, #0x4]
+ strh r1, [r0, #0x0]
+_02041336:
+ mov r0, #0x0
+ add sp, #0x24
+ pop {r4-r7, pc}
+ .balign 4
+_0204133C: .word 0x00000000
+
+ thumb_func_start FUN_02041340
+FUN_02041340: ; 0x02041340
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205F5FC
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_02041354
+FUN_02041354: ; 0x02041354
+ push {r4-r7, lr}
+ sub sp, #0xc
+ mov r6, #0x0
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r7, r6, #0x0
+_02041360:
+ add r0, r5, #0x0
+ mov r1, #0xa
+ blx _s32_div_f
+ lsl r0, r1, #0x10
+ lsr r0, r0, #0x10
+ str r1, [sp, #0x0]
+ str r0, [sp, #0x4]
+ add r0, r4, #0x0
+ mov r1, #0xa
+ blx _s32_div_f
+ lsl r0, r1, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x0]
+ cmp r0, r1
+ bne _020413AC
+ add r0, r5, #0x0
+ mov r1, #0xa
+ blx _s32_div_f
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ add r0, r4, #0x0
+ mov r1, #0xa
+ blx _s32_div_f
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ add r0, r6, #0x1
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ add r0, r7, #0x1
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+ cmp r7, #0x5
+ blo _02041360
+_020413AC:
+ ldr r1, _020413BC ; =0x021C5A10
+ ldr r0, [sp, #0x8]
+ strh r0, [r1, #0x2]
+ ldr r0, [sp, #0x4]
+ strh r0, [r1, #0x0]
+ add r0, r6, #0x0
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+_020413BC: .word 0x021C5A10
+
+ thumb_func_start FUN_020413C0
+FUN_020413C0: ; 0x020413C0
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02005410
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_020413E8
+FUN_020413E8: ; 0x020413E8
+ push {r3, lr}
+ bl ScriptReadHalfword
+ bl FUN_0200521C
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_020413F8
+FUN_020413F8: ; 0x020413F8
+ push {r3, lr}
+ bl ScriptReadHalfword
+ bl FUN_02004124
+ mov r1, #0x0
+ bl FUN_02005350
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_0204140C
+FUN_0204140C: ; 0x0204140C
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r1, [r0, #0x1c]
+ ldr r1, [r1, #0x0]
+ bl FUN_0204ABA8
+ bl FUN_0200521C
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02041424
+FUN_02041424: ; 0x02041424
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_0204AB20
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204143C
+FUN_0204143C: ; 0x0204143C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_020053CC
+ ldr r1, _02041460 ; =FUN_02041464
+ add r0, r5, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ .balign 4
+_02041460: .word FUN_02041464
+
+ thumb_func_start FUN_02041464
+FUN_02041464: ; 0x02041464
+ push {r3, lr}
+ bl FUN_02005404
+ cmp r0, #0x0
+ bne _02041472
+ mov r0, #0x1
+ pop {r3, pc}
+_02041472:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02041478
+FUN_02041478: ; 0x02041478
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ mov r0, #0x7f
+ mov r2, #0x0
+ bl FUN_0200538C
+ ldr r1, _02041498 ; =FUN_02041464
+ add r0, r4, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r4, pc}
+ nop
+_02041498: .word FUN_02041464
+
+ thumb_func_start FUN_0204149C
+FUN_0204149C: ; 0x0204149C
+ push {r3, lr}
+ ldr r1, [r0, #0x8]
+ add r3, r1, #0x1
+ str r3, [r0, #0x8]
+ ldrb r2, [r1, #0x0]
+ add r1, r3, #0x1
+ str r1, [r0, #0x8]
+ ldrb r1, [r3, #0x0]
+ add r0, r2, #0x0
+ bl FUN_020047C8
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_020414B8
+FUN_020414B8: ; 0x020414B8
+ push {r3, lr}
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ mov r0, #0x4
+ bl FUN_02005308
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_020414CC
+FUN_020414CC: ; 0x020414CC
+ push {r3, lr}
+ ldr r2, [r0, #0x8]
+ add r1, r2, #0x1
+ str r1, [r0, #0x8]
+ ldrb r0, [r2, #0x0]
+ bl FUN_020040F4
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_020414E0
+FUN_020414E0: ; 0x020414E0
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394F0
+ bl FUN_020054C8
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020414FC
+FUN_020414FC: ; 0x020414FC
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394F0
+ mov r1, #0x0
+ bl FUN_020054F0
+ mov r0, #0x0
+ pop {r4, pc}
+
+ thumb_func_start FUN_02041518
+FUN_02041518: ; 0x02041518
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ str r0, [r4, #0x64]
+ ldr r1, _0204153C ; =FUN_02041540
+ add r0, r4, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r4, pc}
+ nop
+_0204153C: .word FUN_02041540
+
+ thumb_func_start FUN_02041540
+FUN_02041540: ; 0x02041540
+ push {r3, lr}
+ ldr r0, [r0, #0x64]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_02005508
+ cmp r0, #0x0
+ bne _02041554
+ mov r0, #0x1
+ pop {r3, pc}
+_02041554:
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_02041558
+FUN_02041558: ; 0x02041558
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394F0
+ add r0, r5, #0x0
+ bl FUN_02005578
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02041588
+FUN_02041588: ; 0x02041588
+ push {r3, lr}
+ ldr r1, _02041594 ; =FUN_02041598
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+_02041594: .word FUN_02041598
+
+ thumb_func_start FUN_02041598
+FUN_02041598: ; 0x02041598
+ push {r3, lr}
+ bl FUN_02005670
+ cmp r0, #0x0
+ bne _020415A6
+ mov r0, #0x1
+ pop {r3, pc}
+_020415A6:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_020415AC
+FUN_020415AC: ; 0x020415AC
+ push {r3, lr}
+ bl ScriptReadHalfword
+ bl FUN_02005C28
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_020415BC
+FUN_020415BC: ; 0x020415BC
+ push {r3, lr}
+ ldr r1, _020415C8 ; =FUN_020415CC
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+_020415C8: .word FUN_020415CC
+
+ thumb_func_start FUN_020415CC
+FUN_020415CC: ; 0x020415CC
+ push {r3, lr}
+ bl FUN_02005CBC
+ cmp r0, #0x0
+ bne _020415DA
+ mov r0, #0x1
+ pop {r3, pc}
+_020415DA:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_020415E0
+FUN_020415E0: ; 0x020415E0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02029EF8
+ bl FUN_02005D20
+ cmp r0, #0x1
+ bne _02041610
+ mov r0, #0x1
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_02041610:
+ mov r0, #0x0
+ strh r0, [r4, #0x0]
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02041618
+FUN_02041618: ; 0x02041618
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ bl FUN_02005E28
+ cmp r0, #0x0
+ bne _0204163C
+ mov r0, #0x1
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r4, pc}
+_0204163C:
+ mov r0, #0x0
+ strh r0, [r4, #0x0]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02041644
+FUN_02041644: ; 0x02041644
+ push {r3, lr}
+ bl FUN_02005E64
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02041650
+FUN_02041650: ; 0x02041650
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02029EF8
+ bl FUN_02005E6C
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_02041664
+FUN_02041664: ; 0x02041664
+ push {r3, lr}
+ mov r1, #0x0
+ mov r0, #0x3f
+ add r2, r1, #0x0
+ bl FUN_0200433C
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_02041674
+FUN_02041674: ; 0x02041674
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394F0
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0200488C
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020416A8
+FUN_020416A8: ; 0x020416A8
+ push {r3-r7, lr}
+ sub sp, #0x18
+ add r5, r0, #0x0
+ add r1, r5, #0x0
+ add r1, #0x80
+ ldr r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r5, r0, #0x0
+ bne _02041708
+ add r0, r4, #0x0
+ mov r1, #0x18
+ bl FUN_02039438
+ str r0, [sp, #0x14]
+ add r0, r4, #0x0
+ mov r1, #0x19
+ bl FUN_02039438
+ str r0, [sp, #0xc]
+ add r0, r4, #0x0
+ mov r1, #0x1a
+ bl FUN_02039438
+ add r0, r4, #0x0
+ mov r1, #0x1b
+ bl FUN_02039438
+ add r0, r4, #0x0
+ mov r1, #0x1c
+ bl FUN_02039438
+ str r0, [sp, #0x10]
+ add r0, r4, #0x0
+ mov r1, #0x1d
+ bl FUN_02039438
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x1e
+ bl FUN_02039438
+ b _02041748
+_02041708:
+ add r0, r4, #0x0
+ mov r1, #0x1f
+ bl FUN_02039438
+ str r0, [sp, #0x14]
+ add r0, r4, #0x0
+ mov r1, #0x20
+ bl FUN_02039438
+ str r0, [sp, #0xc]
+ add r0, r4, #0x0
+ mov r1, #0x21
+ bl FUN_02039438
+ add r0, r4, #0x0
+ mov r1, #0x22
+ bl FUN_02039438
+ add r0, r4, #0x0
+ mov r1, #0x23
+ bl FUN_02039438
+ str r0, [sp, #0x10]
+ add r0, r4, #0x0
+ mov r1, #0x24
+ bl FUN_02039438
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x25
+ bl FUN_02039438
+_02041748:
+ add r7, r0, #0x0
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x10]
+ ldr r2, [sp, #0xc]
+ ldr r0, [r0, #0x0]
+ ldr r3, [sp, #0x14]
+ str r0, [sp, #0x4]
+ str r5, [sp, #0x8]
+ ldr r0, [r6, #0x0]
+ ldr r1, [r4, #0x38]
+ ldr r2, [r2, #0x0]
+ ldr r3, [r3, #0x0]
+ bl FUN_0205CA4C
+ str r0, [r7, #0x0]
+ mov r0, #0x0
+ add sp, #0x18
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02041770
+FUN_02041770: ; 0x02041770
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ mov r0, #0x0
+ strh r0, [r4, #0x0]
+ cmp r6, #0x0
+ bne _020417AE
+ add r5, #0x80
+ ldr r0, [r5, #0x0]
+ mov r1, #0x1e
+ bl FUN_02039438
+ b _020417B8
+_020417AE:
+ add r5, #0x80
+ ldr r0, [r5, #0x0]
+ mov r1, #0x25
+ bl FUN_02039438
+_020417B8:
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ cmp r0, #0x0
+ bne _020417C6
+ mov r0, #0x1
+ strh r0, [r4, #0x0]
+ pop {r4-r6, pc}
+_020417C6:
+ bl FUN_0205CA64
+ cmp r0, #0x1
+ bne _020417DC
+ ldr r0, [r5, #0x0]
+ bl FUN_0205CA78
+ mov r0, #0x0
+ str r0, [r5, #0x0]
+ mov r0, #0x1
+ strh r0, [r4, #0x0]
+_020417DC:
+ mov r0, #0x1
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_020417E0
+FUN_020417E0: ; 0x020417E0
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x1c
+ bl FUN_02039438
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ ldrh r1, [r5, #0x0]
+ strh r1, [r0, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02041808
+FUN_02041808: ; 0x02041808
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x1b
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x22
+ bl FUN_02039438
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ cmp r7, #0x0
+ bne _02041852
+ ldrh r1, [r4, #0x0]
+ b _02041854
+_02041852:
+ ldrh r1, [r6, #0x0]
+_02041854:
+ strh r1, [r0, #0x0]
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204185C
+FUN_0204185C: ; 0x0204185C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x8
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ ldrh r0, [r4, #0x0]
+ bl FUN_020395F4
+ strh r0, [r5, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204188C
+FUN_0204188C: ; 0x0204188C
+ push {r3-r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r4, [r0, #0x0]
+ mov r1, #0x8
+ add r0, r4, #0x0
+ bl FUN_02039438
+ add r0, r4, #0x0
+ mov r1, #0x17
+ bl FUN_02039438
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ str r0, [sp, #0xc]
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ str r0, [sp, #0x8]
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r6, #0x0
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205ED3C
+ cmp r0, #0x1
+ bne _020418F2
+ ldr r0, [r4, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205F368
+ add r6, r0, #0x0
+_020418F2:
+ mov r0, #0xb
+ str r0, [sp, #0x0]
+ str r7, [sp, #0x4]
+ ldr r0, [r5, #0x74]
+ ldr r1, [sp, #0xc]
+ ldr r2, [sp, #0x8]
+ add r3, r6, #0x0
+ bl FUN_020470E8
+ mov r0, #0x1
+ add sp, #0x10
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204190C
+FUN_0204190C: ; 0x0204190C
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x17
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r2, r0, #0x0
+ mov r0, #0xb
+ str r0, [sp, #0x0]
+ str r4, [sp, #0x4]
+ ldr r0, [r5, #0x74]
+ add r1, r7, #0x0
+ add r3, r6, #0x0
+ bl FUN_020470E8
+ mov r0, #0x1
+ add sp, #0x8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02041970
+FUN_02041970: ; 0x02041970
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x8
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ ldrh r0, [r4, #0x0]
+ bl FUN_020395F4
+ bl FUN_0203962C
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bne _020419D2
+ mov r0, #0x0
+ mov r1, #0x2
+ add r2, r0, #0x0
+ b _020419EC
+_020419D2:
+ ldrh r0, [r4, #0x0]
+ bl FUN_02039618
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bne _020419E6
+ mov r0, #0x3
+ mov r1, #0x5
+ mov r2, #0x6
+ b _020419EC
+_020419E6:
+ mov r0, #0x7
+ mov r1, #0x9
+ mov r2, #0xa
+_020419EC:
+ strh r0, [r7, #0x0]
+ strh r1, [r6, #0x0]
+ strh r2, [r5, #0x0]
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020419F8
+FUN_020419F8: ; 0x020419F8
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x8
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ ldrh r0, [r4, #0x0]
+ bl FUN_020395F4
+ bl FUN_0203962C
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bne _02041A5A
+ mov r1, #0x0
+ mov r0, #0x11
+ add r2, r1, #0x0
+ b _02041A74
+_02041A5A:
+ ldrh r0, [r4, #0x0]
+ bl FUN_02039618
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bne _02041A6E
+ mov r0, #0x12
+ mov r1, #0x0
+ mov r2, #0x6
+ b _02041A74
+_02041A6E:
+ mov r0, #0x13
+ mov r1, #0x0
+ mov r2, #0xa
+_02041A74:
+ strh r0, [r7, #0x0]
+ strh r1, [r6, #0x0]
+ strh r2, [r5, #0x0]
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02041A80
+FUN_02041A80: ; 0x02041A80
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x8
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ ldrh r0, [r4, #0x0]
+ bl FUN_020395F4
+ bl FUN_0203962C
+ strh r0, [r5, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02041AB4
+FUN_02041AB4: ; 0x02041AB4
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394F0
+ bl FUN_0204AD0C
+ bl FUN_02004724
+ mov r0, #0x1
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02041AD4
+FUN_02041AD4: ; 0x02041AD4
+ push {r3, lr}
+ ldr r0, [r0, #0x74]
+ bl FUN_02048498
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_02041AE0
+FUN_02041AE0: ; 0x02041AE0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x17
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020480B8
+ strh r0, [r5, #0x0]
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02041B10
+FUN_02041B10: ; 0x02041B10
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x17
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020480C8
+ strh r0, [r5, #0x0]
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02041B40
+FUN_02041B40: ; 0x02041B40
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x17
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020480D8
+ strh r0, [r5, #0x0]
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02041B70
+FUN_02041B70: ; 0x02041B70
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_0206BB1C
+ bl FUN_0204A248
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02041B9C
+FUN_02041B9C: ; 0x02041B9C
+ push {r4, lr}
+ sub sp, #0x8
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x17
+ bl FUN_02039438
+ mov r1, #0xb
+ str r1, [sp, #0x0]
+ str r0, [sp, #0x4]
+ mov r2, #0x0
+ ldr r0, [r4, #0x74]
+ mov r1, #0x1
+ add r3, r2, #0x0
+ bl FUN_020470E8
+ mov r0, #0x1
+ add sp, #0x8
+ pop {r4, pc}
+
+ thumb_func_start FUN_02041BC4
+FUN_02041BC4: ; 0x02041BC4
+ push {r3-r5, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xa
+ bl FUN_02039438
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_02058738
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_02058448
+ add r1, r0, #0x0
+ lsl r1, r1, #0x10
+ add r0, r4, #0x0
+ lsr r1, r1, #0x10
+ bl FUN_0203965C
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02041BF0
+FUN_02041BF0: ; 0x02041BF0
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xa
+ bl FUN_02039438
+ add r5, r0, #0x0
+ add r0, r6, #0x0
+ bl ScriptReadWord
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_02058738
+ add r7, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_02058448
+ add r1, r0, #0x0
+ lsl r1, r1, #0x10
+ add r0, r7, #0x0
+ lsr r1, r1, #0x10
+ bl FUN_02039640
+ cmp r0, #0x1
+ bne _02041C34
+ ldr r1, [r6, #0x8]
+ add r0, r6, #0x0
+ add r1, r1, r4
+ bl ScriptJump
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02041C34:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02041C38
+FUN_02041C38: ; 0x02041C38
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_0202881C
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r7, [r0, #0xc]
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ cmp r0, #0x6
+ bls _02041C6C
+ b _02041E38
+_02041C6C:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02041C78: ; jump table (using 16-bit offset)
+ .short _02041C86 - _02041C78 - 2; case 0
+ .short _02041CBC - _02041C78 - 2; case 1
+ .short _02041CF2 - _02041C78 - 2; case 2
+ .short _02041D28 - _02041C78 - 2; case 3
+ .short _02041D5E - _02041C78 - 2; case 4
+ .short _02041D94 - _02041C78 - 2; case 5
+ .short _02041DCE - _02041C78 - 2; case 6
+_02041C86:
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02028828
+ strh r0, [r4, #0x0]
+ add sp, #0xc
+ mov r0, #0x0
+ pop {r4-r7, pc}
+_02041CBC:
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02028840
+ strh r0, [r4, #0x0]
+ add sp, #0xc
+ mov r0, #0x0
+ pop {r4-r7, pc}
+_02041CF2:
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394F0
+ add r3, r0, #0x0
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [r6, #0x0]
+ add r1, r7, #0x0
+ add r2, r5, #0x0
+ bl FUN_0200B708
+ b _02041E38
+_02041D28:
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394F0
+ add r3, r0, #0x0
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ ldr r0, [r6, #0x0]
+ add r1, r7, #0x0
+ add r2, r5, #0x0
+ bl FUN_0200B708
+ b _02041E38
+_02041D5E:
+ mov r1, #0x0
+ add r0, r5, #0x0
+ add r2, r1, #0x0
+ bl FUN_020287A8
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ mov r2, #0x0
+ str r2, [sp, #0x0]
+ str r5, [sp, #0x4]
+ str r0, [sp, #0x8]
+ ldr r0, [r4, #0x74]
+ mov r1, #0x5
+ mov r3, #0x7
+ bl FUN_020385CC
+ add sp, #0xc
+ mov r0, #0x1
+ pop {r4-r7, pc}
+_02041D94:
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_02028828
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ mov r2, #0x1
+ bl FUN_02028700
+ cmp r6, #0x0
+ beq _02041DC8
+ add r4, #0x80
+ ldr r0, [r4, #0x0]
+ bl FUN_020612F8
+_02041DC8:
+ add sp, #0xc
+ mov r0, #0x0
+ pop {r4-r7, pc}
+_02041DCE:
+ mov r0, #0x40
+ mov r1, #0x20
+ bl FUN_020219F4
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020238F4
+ add r1, r6, #0x0
+ add r7, r0, #0x0
+ bl FUN_02023990
+ add r0, r5, #0x0
+ mov r1, #0x0
+ mov r2, #0x1
+ add r3, r6, #0x0
+ bl FUN_020287C0
+ add r0, r7, #0x0
+ bl FUN_020239CC
+ add r2, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_020287EC
+ add r0, r5, #0x0
+ mov r1, #0x0
+ mov r2, #0x2
+ bl FUN_02028810
+ bl FUN_0201BA60
+ add r2, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_02028788
+ add r0, r6, #0x0
+ bl FUN_02021A20
+ add r0, r5, #0x0
+ mov r1, #0x0
+ mov r2, #0x1
+ bl FUN_02028700
+ add r4, #0x80
+ ldr r0, [r4, #0x0]
+ bl FUN_020612EC
+_02041E38:
+ mov r0, #0x0
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02041E40
+FUN_02041E40: ; 0x02041E40
+ push {r3-r7, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ cmp r0, #0x6
+ bls _02041E4E
+ b _02041FD2
+_02041E4E:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02041E5A: ; jump table (using 16-bit offset)
+ .short _02041E68 - _02041E5A - 2; case 0
+ .short _02041E88 - _02041E5A - 2; case 1
+ .short _02041F24 - _02041E5A - 2; case 2
+ .short _02041ECA - _02041E5A - 2; case 3
+ .short _02041F2E - _02041E5A - 2; case 4
+ .short _02041F68 - _02041E5A - 2; case 5
+ .short _02041FB4 - _02041E5A - 2; case 6
+_02041E68:
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r4, #0x80
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_02248CD0
+ strh r0, [r5, #0x0]
+ b _02041FD2
+_02041E88:
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r7, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r6, r0, #0x0
+ ldr r0, _02041FD8 ; =0x00000233
+ add r4, #0x80
+ strh r0, [r5, #0x0]
+ ldr r0, [r4, #0x0]
+ add r1, r7, #0x0
+ bl FUN_02249038
+ strh r0, [r6, #0x0]
+ b _02041FD2
+_02041ECA:
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r7, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ str r0, [sp, #0x0]
+ add r4, #0x80
+ ldr r0, [r4, #0x0]
+ ldr r1, [r5, #0x0]
+ add r2, r6, #0x0
+ add r3, r7, #0x0
+ bl FUN_022490A0
+ b _02041FD2
+_02041F24:
+ add r4, #0x80
+ ldr r0, [r4, #0x0]
+ bl FUN_02248CC0
+ b _02041FD2
+_02041F2E:
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r6, r0, #0x0
+ mov r0, #0x8d
+ lsl r0, r0, #0x2
+ add r4, #0x80
+ strh r0, [r5, #0x0]
+ ldr r0, [r4, #0x0]
+ bl FUN_022491FC
+ strh r0, [r6, #0x0]
+ b _02041FD2
+_02041F68:
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r4, #0x80
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ add r1, r6, #0x0
+ add r2, r7, #0x0
+ bl FUN_02248F70
+ strh r0, [r5, #0x0]
+ b _02041FD2
+_02041FB4:
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r4, #0x80
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_02248FE0
+ strh r0, [r5, #0x0]
+_02041FD2:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ nop
+_02041FD8: .word 0x00000233
+
+ thumb_func_start FUN_02041FDC
+FUN_02041FDC: ; 0x02041FDC
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_02061374
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02042000
+FUN_02042000: ; 0x02042000
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_0206BB1C
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0206B9B0
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_02061460
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02042038
+FUN_02042038: ; 0x02042038
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ cmp r0, #0x0
+ beq _02042058
+ cmp r0, #0x1
+ beq _020420A8
+ b _02042106
+_02042058:
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r7, r0, #0x0
+ ldr r0, _0204210C ; =0x00000232
+ add r5, #0x80
+ strh r0, [r6, #0x0]
+ ldr r0, [sp, #0x0]
+ ldr r1, [r5, #0x0]
+ ldr r2, [r4, #0x0]
+ bl FUN_020421F0
+ strh r0, [r7, #0x0]
+ b _02042106
+_020420A8:
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02029FC8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r5, #0x80
+ add r3, r0, #0x0
+ ldr r0, [r5, #0x0]
+ add r1, r6, #0x0
+ add r2, r7, #0x0
+ bl FUN_020421D8
+ add r0, r4, #0x0
+ mov r1, #0x3
+ bl FUN_0202A170
+_02042106:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ nop
+_0204210C: .word 0x00000232
+
+ thumb_func_start FUN_02042110
+FUN_02042110: ; 0x02042110
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ add r1, r6, #0x0
+ bl FUN_02042214
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204214C
+FUN_0204214C: ; 0x0204214C
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02022504
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ cmp r0, #0x0
+ beq _02042170
+ cmp r0, #0x1
+ beq _020421A2
+ cmp r0, #0x2
+ beq _020421BC
+ b _020421D4
+_02042170:
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_0206BB1C
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r1, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_0206B9B0
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ mov r2, #0x4
+ bl FUN_02060F3C
+ b _020421D4
+_020421A2:
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02060F9C
+ b _020421D4
+_020421BC:
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02060F88
+_020421D4:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_020421D8
+FUN_020421D8: ; 0x020421D8
+ push {r3, lr}
+ sub r1, r1, #0x1
+ lsl r3, r1, #0x4
+ ldr r1, _020421EC ; =0x020F4264
+ ldr r3, [r1, r3]
+ cmp r3, #0x0
+ beq _020421EA
+ add r1, r2, #0x0
+ blx r3
+_020421EA:
+ pop {r3, pc}
+ .balign 4
+_020421EC: .word 0x020F4264
+
+ thumb_func_start FUN_020421F0
+FUN_020421F0: ; 0x020421F0
+ push {r4, lr}
+ sub r0, r0, #0x1
+ lsl r4, r0, #0x4
+ ldr r0, _0204220C ; =0x020F4268
+ ldr r3, [r0, r4]
+ cmp r3, #0x0
+ beq _02042204
+ add r0, r1, #0x0
+ add r1, r2, #0x0
+ blx r3
+_02042204:
+ ldr r0, _02042210 ; =0x020F4270
+ ldr r0, [r0, r4]
+ pop {r4, pc}
+ nop
+_0204220C: .word 0x020F4268
+_02042210: .word 0x020F4270
+
+ thumb_func_start FUN_02042214
+FUN_02042214: ; 0x02042214
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0xc]
+ add r5, r1, #0x0
+ bl FUN_02022504
+ mov r1, #0x1
+ add r2, r5, #0x0
+ bl FUN_0202B710
+ cmp r0, #0x0
+ bne _02042230
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_02042230:
+ sub r0, r5, #0x1
+ lsl r1, r0, #0x4
+ ldr r0, _02042248 ; =0x020F426C
+ ldr r1, [r0, r1]
+ cmp r1, #0x0
+ bne _02042240
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_02042240:
+ add r0, r4, #0x0
+ blx r1
+ pop {r3-r5, pc}
+ nop
+_02042248: .word 0x020F426C
+
+ thumb_func_start FUN_0204224C
+FUN_0204224C: ; 0x0204224C
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ add r7, r2, #0x0
+ mov r0, #0x40
+ mov r1, #0x4
+ str r3, [sp, #0x8]
+ bl FUN_020219F4
+ add r1, r7, #0x0
+ add r4, r0, #0x0
+ bl FUN_02021E28
+ ldr r0, [sp, #0x24]
+ ldr r3, [sp, #0x8]
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x20]
+ add r1, r6, #0x0
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_0200ABB4
+ add r0, r4, #0x0
+ bl FUN_02021A20
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02042288
+FUN_02042288: ; 0x02042288
+ push {r4, lr}
+ ldr r0, [r0, #0xc]
+ add r4, r1, #0x0
+ bl FUN_0206BB1C
+ bl FUN_0204A20C
+ bl FUN_020690E4
+ add r2, r0, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_0200AC60
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020422A8
+FUN_020422A8: ; 0x020422A8
+ push {r4, lr}
+ ldr r0, [r0, #0x4]
+ add r4, r1, #0x0
+ ldr r0, [r0, #0x14]
+ bl FUN_02252538
+ add r2, r0, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_0200B02C
+ pop {r4, pc}
+
+ thumb_func_start FUN_020422C0
+FUN_020422C0: ; 0x020422C0
+ push {r4, lr}
+ sub sp, #0x20
+ ldr r0, [r0, #0xc]
+ add r4, r1, #0x0
+ bl FUN_02022504
+ bl FUN_0202B844
+ ldrh r0, [r0, #0x2]
+ mov r1, #0x4
+ add r2, sp, #0x8
+ bl FUN_0200A99C
+ mov r0, #0x2
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ mov r1, #0x0
+ str r0, [sp, #0x4]
+ add r0, r4, #0x0
+ add r2, sp, #0x8
+ add r3, r1, #0x0
+ bl FUN_0204224C
+ add sp, #0x20
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020422F4
+FUN_020422F4: ; 0x020422F4
+ push {r3, lr}
+ ldr r0, [r0, #0xc]
+ bl FUN_02022504
+ bl FUN_0202B85C
+ ldrb r0, [r0, #0x0]
+ pop {r3, pc}
+
+ thumb_func_start FUN_02042304
+FUN_02042304: ; 0x02042304
+ push {r3, lr}
+ ldr r0, [r0, #0xc]
+ bl FUN_0204C1A8
+ bl FUN_0204BEC8
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02042314
+FUN_02042314: ; 0x02042314
+ push {r3, lr}
+ ldr r0, [r0, #0xc]
+ bl FUN_02022504
+ bl FUN_0202B838
+ ldrb r0, [r0, #0x0]
+ pop {r3, pc}
+
+ thumb_func_start FUN_02042324
+FUN_02042324: ; 0x02042324
+ push {r3, lr}
+ ldr r0, [r0, #0xc]
+ bl FUN_02027E24
+ mov r1, #0x0
+ bl FUN_02027098
+ pop {r3, pc}
+
+ thumb_func_start FUN_02042334
+FUN_02042334: ; 0x02042334
+ push {r3, lr}
+ ldr r0, [r0, #0xc]
+ bl FUN_02022504
+ bl FUN_0202B850
+ ldrb r0, [r0, #0x0]
+ pop {r3, pc}
+
+ thumb_func_start FUN_02042344
+FUN_02042344: ; 0x02042344
+ push {r3, lr}
+ ldr r0, [r0, #0xc]
+ bl FUN_02022504
+ bl FUN_0202B844
+ ldrb r0, [r0, #0x0]
+ pop {r3, pc}
+
+ thumb_func_start FUN_02042354
+FUN_02042354: ; 0x02042354
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ add r0, #0xa8
+ bl FUN_022434BC
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_02042364
+FUN_02042364: ; 0x02042364
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020377AC
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_022434D0
+ add r5, #0x80
+ ldr r1, [r5, #0x0]
+ add r1, #0xa8
+ str r0, [r1, #0x0]
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02042394
+FUN_02042394: ; 0x02042394
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ add r0, #0xa8
+ ldr r0, [r0, #0x0]
+ bl FUN_02243694
+ add r4, #0x80
+ ldr r1, [r4, #0x0]
+ mov r0, #0x0
+ add r1, #0xa8
+ str r0, [r1, #0x0]
+ pop {r4, pc}
+
+ thumb_func_start FUN_020423B0
+FUN_020423B0: ; 0x020423B0
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r7, r0, #0x0
+ bl ScriptReadHalfword
+ str r0, [sp, #0x0]
+ add r0, r7, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r7, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r7, #0x0
+ bl ScriptReadHalfword
+ str r0, [sp, #0x4]
+ add r0, r7, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r1, [sp, #0x4]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ add r0, r7, #0x0
+ add r0, #0x80
+ ldr r1, [r0, #0x0]
+ add r0, r1, #0x0
+ add r0, #0xa8
+ ldr r5, [r0, #0x0]
+ ldr r0, [sp, #0x0]
+ cmp r0, #0x64
+ bls _020423FA
+ b _020426F6
+_020423FA:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02042406: ; jump table (using 16-bit offset)
+ .short _020424D0 - _02042406 - 2; case 0
+ .short _020424DA - _02042406 - 2; case 1
+ .short _020424F6 - _02042406 - 2; case 2
+ .short _020424FC - _02042406 - 2; case 3
+ .short _02042508 - _02042406 - 2; case 4
+ .short _02042516 - _02042406 - 2; case 5
+ .short _0204251E - _02042406 - 2; case 6
+ .short _020426F6 - _02042406 - 2; case 7
+ .short _02042526 - _02042406 - 2; case 8
+ .short _02042532 - _02042406 - 2; case 9
+ .short _02042540 - _02042406 - 2; case 10
+ .short _0204254E - _02042406 - 2; case 11
+ .short _0204255A - _02042406 - 2; case 12
+ .short _020426F6 - _02042406 - 2; case 13
+ .short _02042564 - _02042406 - 2; case 14
+ .short _0204256E - _02042406 - 2; case 15
+ .short _02042578 - _02042406 - 2; case 16
+ .short _020426F6 - _02042406 - 2; case 17
+ .short _020426F6 - _02042406 - 2; case 18
+ .short _020426F6 - _02042406 - 2; case 19
+ .short _020426F6 - _02042406 - 2; case 20
+ .short _020426F6 - _02042406 - 2; case 21
+ .short _020426F6 - _02042406 - 2; case 22
+ .short _020426F6 - _02042406 - 2; case 23
+ .short _020426F6 - _02042406 - 2; case 24
+ .short _020426F6 - _02042406 - 2; case 25
+ .short _020426F6 - _02042406 - 2; case 26
+ .short _020426F6 - _02042406 - 2; case 27
+ .short _020426F6 - _02042406 - 2; case 28
+ .short _020426F6 - _02042406 - 2; case 29
+ .short _0204258A - _02042406 - 2; case 30
+ .short _020425A2 - _02042406 - 2; case 31
+ .short _020425BC - _02042406 - 2; case 32
+ .short _020425C8 - _02042406 - 2; case 33
+ .short _020425D2 - _02042406 - 2; case 34
+ .short _020425DC - _02042406 - 2; case 35
+ .short _020425E6 - _02042406 - 2; case 36
+ .short _020425F0 - _02042406 - 2; case 37
+ .short _020425F8 - _02042406 - 2; case 38
+ .short _02042600 - _02042406 - 2; case 39
+ .short _02042608 - _02042406 - 2; case 40
+ .short _0204261A - _02042406 - 2; case 41
+ .short _02042626 - _02042406 - 2; case 42
+ .short _02042642 - _02042406 - 2; case 43
+ .short _0204264C - _02042406 - 2; case 44
+ .short _02042656 - _02042406 - 2; case 45
+ .short _02042660 - _02042406 - 2; case 46
+ .short _0204266A - _02042406 - 2; case 47
+ .short _02042674 - _02042406 - 2; case 48
+ .short _02042680 - _02042406 - 2; case 49
+ .short _0204268C - _02042406 - 2; case 50
+ .short _020426A0 - _02042406 - 2; case 51
+ .short _020426AA - _02042406 - 2; case 52
+ .short _020426B4 - _02042406 - 2; case 53
+ .short _020426BE - _02042406 - 2; case 54
+ .short _020426CC - _02042406 - 2; case 55
+ .short _02042612 - _02042406 - 2; case 56
+ .short _020426DA - _02042406 - 2; case 57
+ .short _020426F6 - _02042406 - 2; case 58
+ .short _020426F6 - _02042406 - 2; case 59
+ .short _020426F6 - _02042406 - 2; case 60
+ .short _020426F6 - _02042406 - 2; case 61
+ .short _020426F6 - _02042406 - 2; case 62
+ .short _020426F6 - _02042406 - 2; case 63
+ .short _020426F6 - _02042406 - 2; case 64
+ .short _020426F6 - _02042406 - 2; case 65
+ .short _020426F6 - _02042406 - 2; case 66
+ .short _020426F6 - _02042406 - 2; case 67
+ .short _020426F6 - _02042406 - 2; case 68
+ .short _020426F6 - _02042406 - 2; case 69
+ .short _020426F6 - _02042406 - 2; case 70
+ .short _020426F6 - _02042406 - 2; case 71
+ .short _020426F6 - _02042406 - 2; case 72
+ .short _020426F6 - _02042406 - 2; case 73
+ .short _020426F6 - _02042406 - 2; case 74
+ .short _020426F6 - _02042406 - 2; case 75
+ .short _020426F6 - _02042406 - 2; case 76
+ .short _020426F6 - _02042406 - 2; case 77
+ .short _020426F6 - _02042406 - 2; case 78
+ .short _020426F6 - _02042406 - 2; case 79
+ .short _020426F6 - _02042406 - 2; case 80
+ .short _020426F6 - _02042406 - 2; case 81
+ .short _020426F6 - _02042406 - 2; case 82
+ .short _020426F6 - _02042406 - 2; case 83
+ .short _020426F6 - _02042406 - 2; case 84
+ .short _020426F6 - _02042406 - 2; case 85
+ .short _020426F6 - _02042406 - 2; case 86
+ .short _020426F6 - _02042406 - 2; case 87
+ .short _020426F6 - _02042406 - 2; case 88
+ .short _020426F6 - _02042406 - 2; case 89
+ .short _020426F6 - _02042406 - 2; case 90
+ .short _020426F6 - _02042406 - 2; case 91
+ .short _020426F6 - _02042406 - 2; case 92
+ .short _020426F6 - _02042406 - 2; case 93
+ .short _020426F6 - _02042406 - 2; case 94
+ .short _020426F6 - _02042406 - 2; case 95
+ .short _020426F6 - _02042406 - 2; case 96
+ .short _020426F6 - _02042406 - 2; case 97
+ .short _020426F6 - _02042406 - 2; case 98
+ .short _020426F6 - _02042406 - 2; case 99
+ .short _020426E6 - _02042406 - 2; case 100
+_020424D0:
+ add r0, r6, #0x0
+ bl FUN_0224312C
+ strh r0, [r4, #0x0]
+ b _020426FA
+_020424DA:
+ cmp r6, #0x0
+ bne _020424EA
+ ldrb r0, [r5, #0xe]
+ ldr r1, [r1, #0xc]
+ bl FUN_022432E4
+ strh r0, [r4, #0x0]
+ b _020426FA
+_020424EA:
+ ldr r1, [r1, #0xc]
+ add r0, r6, #0x0
+ bl FUN_022432E4
+ strh r0, [r4, #0x0]
+ b _020426FA
+_020424F6:
+ bl FUN_0224339C
+ b _020426FA
+_020424FC:
+ ldr r0, [r1, #0xc]
+ bl FUN_0202A8CC
+ bl FUN_022433A8
+ b _020426FA
+_02042508:
+ ldr r0, [r1, #0xc]
+ bl FUN_0202A8CC
+ bl FUN_022433B0
+ strh r0, [r4, #0x0]
+ b _020426FA
+_02042516:
+ add r0, r1, #0x0
+ bl FUN_022433B8
+ b _020426FA
+_0204251E:
+ add r0, r1, #0x0
+ bl FUN_022433F8
+ b _020426FA
+_02042526:
+ ldr r0, [r1, #0xc]
+ add r1, r6, #0x0
+ bl FUN_02243408
+ strh r0, [r4, #0x0]
+ b _020426FA
+_02042532:
+ ldr r1, [r1, #0xc]
+ mov r0, #0x0
+ mov r2, #0x2
+ bl FUN_02243E74
+ strh r0, [r4, #0x0]
+ b _020426FA
+_02042540:
+ mov r0, #0x0
+ ldr r1, [r1, #0xc]
+ add r2, r0, #0x0
+ bl FUN_02243E74
+ strh r0, [r4, #0x0]
+ b _020426FA
+_0204254E:
+ ldr r0, [r1, #0xc]
+ lsl r1, r6, #0x18
+ lsr r1, r1, #0x18
+ bl FUN_02243428
+ b _020426FA
+_0204255A:
+ ldr r0, [r1, #0xc]
+ bl FUN_02243448
+ strh r0, [r4, #0x0]
+ b _020426FA
+_02042564:
+ ldr r0, [r1, #0xc]
+ bl FUN_0224345C
+ strh r0, [r4, #0x0]
+ b _020426FA
+_0204256E:
+ ldr r0, [r1, #0xc]
+ bl FUN_022434AC
+ strh r0, [r4, #0x0]
+ b _020426FA
+_02042578:
+ ldrh r3, [r4, #0x0]
+ ldr r0, [r7, #0x74]
+ ldr r2, [sp, #0x4]
+ add r1, r6, #0x0
+ bl FUN_0205FD38
+ add sp, #0x8
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0204258A:
+ add r0, r1, #0x0
+ mov r1, #0x13
+ bl FUN_02039438
+ add r2, r0, #0x0
+ ldr r1, [r7, #0x74]
+ add r0, r5, #0x0
+ bl FUN_022436C8
+ add sp, #0x8
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_020425A2:
+ add r0, r1, #0x0
+ mov r1, #0x13
+ bl FUN_02039438
+ add r7, #0x80
+ ldr r2, [r7, #0x0]
+ add r1, r0, #0x0
+ ldr r2, [r2, #0xc]
+ add r0, r5, #0x0
+ bl FUN_022436E8
+ strh r0, [r4, #0x0]
+ b _020426FA
+_020425BC:
+ ldr r1, [r1, #0xc]
+ add r0, r5, #0x0
+ bl FUN_02243780
+ strh r0, [r4, #0x0]
+ b _020426FA
+_020425C8:
+ add r0, r5, #0x0
+ bl FUN_022438DC
+ strh r0, [r4, #0x0]
+ b _020426FA
+_020425D2:
+ add r0, r5, #0x0
+ bl FUN_022438E0
+ strh r0, [r4, #0x0]
+ b _020426FA
+_020425DC:
+ add r0, r5, #0x0
+ bl FUN_022438FC
+ strh r0, [r4, #0x0]
+ b _020426FA
+_020425E6:
+ add r0, r5, #0x0
+ bl FUN_02243920
+ strh r0, [r4, #0x0]
+ b _020426FA
+_020425F0:
+ add r0, r5, #0x0
+ bl FUN_022439F8
+ b _020426FA
+_020425F8:
+ add r0, r5, #0x0
+ bl FUN_02243AD8
+ b _020426FA
+_02042600:
+ add r0, r5, #0x0
+ bl FUN_02243BA8
+ b _020426FA
+_02042608:
+ ldr r1, [r1, #0xc]
+ add r0, r5, #0x0
+ bl FUN_02243C5C
+ b _020426FA
+_02042612:
+ add r0, r5, #0x0
+ bl FUN_02243D3C
+ b _020426FA
+_0204261A:
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02243DA0
+ strh r0, [r4, #0x0]
+ b _020426FA
+_02042626:
+ add r0, r1, #0x0
+ mov r1, #0x17
+ bl FUN_02039438
+ add r7, #0x80
+ add r2, r0, #0x0
+ ldr r0, [r7, #0x0]
+ add r1, r5, #0x0
+ ldr r0, [r0, #0x10]
+ bl FUN_02243DB8
+ add sp, #0x8
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02042642:
+ add r0, r5, #0x0
+ bl FUN_02243DC0
+ strh r0, [r4, #0x0]
+ b _020426FA
+_0204264C:
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02243DC4
+ b _020426FA
+_02042656:
+ add r0, r5, #0x0
+ bl FUN_02243DD8
+ strh r0, [r4, #0x0]
+ b _020426FA
+_02042660:
+ add r0, r5, #0x0
+ bl FUN_02243DE0
+ strh r0, [r4, #0x0]
+ b _020426FA
+_0204266A:
+ ldr r1, [r1, #0xc]
+ add r0, r5, #0x0
+ bl FUN_02243E34
+ b _020426FA
+_02042674:
+ ldr r1, [r1, #0xc]
+ add r0, r5, #0x0
+ bl FUN_02243F18
+ strh r0, [r4, #0x0]
+ b _020426FA
+_02042680:
+ ldr r1, [r1, #0xc]
+ add r0, r5, #0x0
+ bl FUN_02243F50
+ strh r0, [r4, #0x0]
+ b _020426FA
+_0204268C:
+ ldrb r1, [r5, #0x10]
+ mov r0, #0xe0
+ bic r1, r0
+ lsl r0, r6, #0x18
+ lsr r0, r0, #0x18
+ lsl r0, r0, #0x1d
+ lsr r0, r0, #0x18
+ orr r0, r1
+ strb r0, [r5, #0x10]
+ b _020426FA
+_020426A0:
+ ldrb r0, [r5, #0x10]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1d
+ strh r0, [r4, #0x0]
+ b _020426FA
+_020426AA:
+ ldr r1, [r1, #0xc]
+ add r0, r5, #0x0
+ bl FUN_02243838
+ b _020426FA
+_020426B4:
+ add r0, r5, r6
+ add r0, #0x2a
+ ldrb r0, [r0, #0x0]
+ strh r0, [r4, #0x0]
+ b _020426FA
+_020426BE:
+ ldr r1, [r1, #0xc]
+ add r0, r5, #0x0
+ mov r2, #0x1
+ bl FUN_02243E74
+ strh r0, [r4, #0x0]
+ b _020426FA
+_020426CC:
+ lsl r1, r6, #0x18
+ add r0, r5, #0x0
+ lsr r1, r1, #0x18
+ bl FUN_0204290C
+ strh r0, [r4, #0x0]
+ b _020426FA
+_020426DA:
+ ldr r1, [r1, #0xc]
+ add r0, r5, #0x0
+ bl FUN_02243F9C
+ strh r0, [r4, #0x0]
+ b _020426FA
+_020426E6:
+ cmp r5, #0x0
+ bne _020426F0
+ mov r0, #0x1
+ strh r0, [r4, #0x0]
+ b _020426FA
+_020426F0:
+ mov r0, #0x0
+ strh r0, [r4, #0x0]
+ b _020426FA
+_020426F6:
+ mov r0, #0x0
+ strh r0, [r4, #0x0]
+_020426FA:
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02042700
+FUN_02042700: ; 0x02042700
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r1, r5, #0x0
+ add r1, #0x80
+ ldr r1, [r1, #0x0]
+ add r1, #0xa8
+ ldr r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ lsl r2, r6, #0x4
+ add r2, r6, r2
+ mov r1, #0x38
+ lsl r2, r2, #0x4
+ mul r1, r7
+ add r2, r4, r2
+ add r3, r2, r1
+ mov r2, #0xb2
+ lsl r2, r2, #0x2
+ ldrh r1, [r3, r2]
+ lsl r1, r1, #0x15
+ lsr r4, r1, #0x15
+ ldr r1, [sp, #0x0]
+ strh r4, [r1, #0x0]
+ add r1, r2, #0x4
+ ldrh r1, [r3, r1]
+ strh r1, [r0, #0x0]
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02042780
+FUN_02042780: ; 0x02042780
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_0205FE10
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020427A8
+FUN_020427A8: ; 0x020427A8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_0205FF5C
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020427D0
+FUN_020427D0: ; 0x020427D0
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x0
+ add r0, #0xa8
+ ldr r6, [r0, #0x0]
+ ldr r0, _0204285C ; =0x00000884
+ mov r2, #0x46
+ add r0, r6, r0
+ blx MI_CpuFill8
+ cmp r4, #0x0
+ beq _0204281E
+ cmp r4, #0x1
+ beq _02042830
+ cmp r4, #0x2
+ beq _0204283E
+ b _0204284C
+_0204281E:
+ add r5, #0x80
+ ldr r1, [r5, #0x0]
+ add r0, r1, #0x0
+ add r0, #0xa8
+ ldr r0, [r0, #0x0]
+ ldr r1, [r1, #0xc]
+ bl FUN_022446FC
+ b _0204284C
+_02042830:
+ add r5, #0x80
+ ldr r0, [r5, #0x0]
+ add r0, #0xa8
+ ldr r0, [r0, #0x0]
+ bl FUN_02244758
+ b _0204284C
+_0204283E:
+ add r5, #0x80
+ ldr r0, [r5, #0x0]
+ add r1, r7, #0x0
+ add r0, #0xa8
+ ldr r0, [r0, #0x0]
+ bl FUN_02244770
+_0204284C:
+ bl FUN_02031190
+ ldr r1, _02042860 ; =0x0000083E
+ add r1, r6, r1
+ bl FUN_020316AC
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+_0204285C: .word 0x00000884
+_02042860: .word 0x0000083E
+
+ thumb_func_start FUN_02042864
+FUN_02042864: ; 0x02042864
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r2, r0, #0x0
+ ldr r0, [r5, #0x0]
+ add r1, r4, #0x0
+ ldr r0, [r0, #0x10]
+ bl FUN_0205FDDC
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02042894
+FUN_02042894: ; 0x02042894
+ push {r3-r6, lr}
+ sub sp, #0x4
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, #0x80
+ add r6, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_0202A8E4
+ add r1, sp, #0x0
+ bl FUN_0202A864
+ add r0, sp, #0x0
+ ldrb r1, [r0, #0x0]
+ strh r1, [r4, #0x0]
+ ldrb r0, [r0, #0x1]
+ strh r0, [r6, #0x0]
+ mov r0, #0x0
+ add sp, #0x4
+ pop {r3-r6, pc}
+
+ thumb_func_start FUN_020428E0
+FUN_020428E0: ; 0x020428E0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_0202A8E4
+ bl FUN_0202A74C
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204290C
+FUN_0204290C: ; 0x0204290C
+ cmp r1, #0x2
+ bne _02042918
+ ldrb r0, [r0, #0x10]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1d
+ bx lr
+_02042918:
+ cmp r1, #0x1
+ bne _0204293E
+ ldrb r1, [r0, #0xf]
+ cmp r1, #0x2
+ bne _02042930
+ ldrb r0, [r0, #0x10]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1d
+ lsl r1, r0, #0x1
+ ldr r0, _0204294C ; =0x020F4334
+ ldrh r0, [r0, r1]
+ bx lr
+_02042930:
+ ldrb r0, [r0, #0x12]
+ cmp r0, #0x0
+ beq _0204293A
+ mov r0, #0x61
+ bx lr
+_0204293A:
+ mov r0, #0x0
+ bx lr
+_0204293E:
+ ldrb r0, [r0, #0x11]
+ cmp r0, #0x0
+ beq _02042948
+ mov r0, #0x61
+ bx lr
+_02042948:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+_0204294C: .word 0x020F4334
+
+ thumb_func_start FUN_02042950
+FUN_02042950: ; 0x02042950
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r1, [r5, #0x8]
+ ldr r0, [r0, #0x0]
+ add r2, r1, #0x1
+ str r2, [r5, #0x8]
+ ldrb r6, [r1, #0x0]
+ add r1, r2, #0x1
+ str r1, [r5, #0x8]
+ ldrb r4, [r2, #0x0]
+ mov r1, #0x26
+ bl FUN_02039438
+ add r5, #0x80
+ add r7, r0, #0x0
+ ldr r0, [r5, #0x0]
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ bl FUN_021E2A70
+ str r0, [r7, #0x0]
+ mov r0, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02042980
+FUN_02042980: ; 0x02042980
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x26
+ bl FUN_02039438
+ ldr r0, [r0, #0x0]
+ bl FUN_021E29B4
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02042998
+FUN_02042998: ; 0x02042998
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x26
+ bl FUN_02039438
+ add r1, r0, #0x0
+ add r4, #0x80
+ ldr r0, [r4, #0x0]
+ ldr r1, [r1, #0x0]
+ bl FUN_021E2AD4
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020429B8
+FUN_020429B8: ; 0x020429B8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r1, r5, #0x0
+ add r1, #0x80
+ ldr r1, [r1, #0x0]
+ ldr r4, [r1, #0xc]
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0202A8D8
+ mov r1, #0x0
+ add r2, r1, #0x0
+ bl FUN_0202A3B4
+ strh r0, [r5, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_020429E8
+FUN_020429E8: ; 0x020429E8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r1, r5, #0x0
+ add r1, #0x80
+ ldr r1, [r1, #0x0]
+ ldr r4, [r1, #0xc]
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0202A8D8
+ add r1, r5, #0x0
+ mov r2, #0x5
+ bl FUN_0202A3B4
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02042A18
+FUN_02042A18: ; 0x02042A18
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r1, r5, #0x0
+ add r1, #0x80
+ ldr r1, [r1, #0x0]
+ ldr r4, [r1, #0xc]
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0202A8D8
+ add r1, r5, #0x0
+ mov r2, #0x6
+ bl FUN_0202A3B4
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02042A48
+FUN_02042A48: ; 0x02042A48
+ push {r4-r6, lr}
+ add r4, r0, #0x0
+ add r1, r4, #0x0
+ add r1, #0x80
+ ldr r1, [r1, #0x0]
+ ldr r5, [r1, #0xc]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0202A8D8
+ mov r1, #0x0
+ add r2, r1, #0x0
+ bl FUN_0202A3B4
+ cmp r0, r6
+ bhs _02042A8E
+ mov r0, #0x0
+ b _02042A90
+_02042A8E:
+ mov r0, #0x1
+_02042A90:
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02042A98
+FUN_02042A98: ; 0x02042A98
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ cmp r7, #0x1
+ bne _02042AEE
+ mov r1, #0x1a
+ b _02042AF0
+_02042AEE:
+ mov r1, #0x0
+_02042AF0:
+ add r1, r1, r6
+ lsl r2, r1, #0x2
+ ldr r1, _02042B04 ; =0x020F433E
+ ldrh r1, [r1, r2]
+ strh r1, [r4, #0x0]
+ ldr r1, _02042B08 ; =0x020F4340
+ ldrh r1, [r1, r2]
+ strh r1, [r0, #0x0]
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+_02042B04: .word 0x020F433E
+_02042B08: .word 0x020F4340
+
+ thumb_func_start FUN_02042B0C
+FUN_02042B0C: ; 0x02042B0C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xa
+ bl FUN_02039438
+ add r1, r0, #0x0
+ add r5, #0x80
+ ldr r0, [r5, #0x0]
+ ldr r1, [r1, #0x0]
+ bl FUN_0204B5FC
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02042B40
+FUN_02042B40: ; 0x02042B40
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xa
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, #0x80
+ add r6, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r1, [r4, #0x0]
+ bl FUN_0204B63C
+ strh r0, [r6, #0x0]
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02042B74
+FUN_02042B74: ; 0x02042B74
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xa
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, #0x80
+ add r6, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r1, [r4, #0x0]
+ bl FUN_0204B660
+ strh r0, [r6, #0x0]
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02042BA8
+FUN_02042BA8: ; 0x02042BA8
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xa
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, #0x80
+ add r6, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r1, [r4, #0x0]
+ bl FUN_0204B684
+ strh r0, [r6, #0x0]
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02042BDC
+FUN_02042BDC: ; 0x02042BDC
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xa
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, #0x80
+ add r6, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r1, [r4, #0x0]
+ bl FUN_0204B6A4
+ strh r0, [r6, #0x0]
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02042C10
+FUN_02042C10: ; 0x02042C10
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xa
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r5, #0x80
+ add r2, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r1, [r4, #0x0]
+ bl FUN_0204B57C
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02042C44
+FUN_02042C44: ; 0x02042C44
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xa
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02029FC8
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r5, #0x80
+ add r2, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r1, [r4, #0x0]
+ bl FUN_0204B5A8
+ add r0, r6, #0x0
+ mov r1, #0x3
+ bl FUN_0202A0E8
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02042C8C
+FUN_02042C8C: ; 0x02042C8C
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ cmp r0, #0x0
+ beq _02042C9E
+ cmp r0, #0x1
+ beq _02042CA8
+ b _02042CB2
+_02042C9E:
+ add r4, #0x80
+ ldr r0, [r4, #0x0]
+ bl FUN_0204B9A0
+ b _02042CB6
+_02042CA8:
+ add r4, #0x80
+ ldr r0, [r4, #0x0]
+ bl FUN_0204B9CC
+ b _02042CB6
+_02042CB2:
+ bl ErrorHandling
+_02042CB6:
+ mov r0, #0x1
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02042CBC
+FUN_02042CBC: ; 0x02042CBC
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02029FC8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xa
+ bl FUN_02039438
+ add r1, r0, #0x0
+ add r5, #0x80
+ ldr r0, [r5, #0x0]
+ ldr r1, [r1, #0x0]
+ bl FUN_0204B4FC
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_0202A170
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02042CF0
+FUN_02042CF0: ; 0x02042CF0
+ str r1, [r0, #0x0]
+ str r2, [r0, #0x4]
+ str r3, [r0, #0x8]
+ bx lr
+
+ thumb_func_start FUN_02042CF8
+FUN_02042CF8: ; 0x02042CF8
+ push {r3, lr}
+ bl FUN_0202AF9C
+ bl FUN_0202AFC0
+ pop {r3, pc}
+
+ thumb_func_start FUN_02042D04
+FUN_02042D04: ; 0x02042D04
+ push {r3, lr}
+ bl FUN_0202AF9C
+ bl FUN_0202AFFC
+ pop {r3, pc}
+
+ thumb_func_start FUN_02042D10
+FUN_02042D10: ; 0x02042D10
+ push {r3, lr}
+ bl FUN_0202AF9C
+ bl FUN_0202B020
+ pop {r3, pc}
+
+ thumb_func_start FUN_02042D1C
+FUN_02042D1C: ; 0x02042D1C
+ push {r3-r7, lr}
+ sub sp, #0x20
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ cmp r0, #0x8
+ bls _02042D2C
+ b _02042F04
+_02042D2C:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02042D38: ; jump table (using 16-bit offset)
+ .short _02042D4A - _02042D38 - 2; case 0
+ .short _02042D74 - _02042D38 - 2; case 1
+ .short _02042DA0 - _02042D38 - 2; case 2
+ .short _02042DC0 - _02042D38 - 2; case 3
+ .short _02042DFC - _02042D38 - 2; case 4
+ .short _02042E2E - _02042D38 - 2; case 5
+ .short _02042E9A - _02042D38 - 2; case 6
+ .short _02042D58 - _02042D38 - 2; case 7
+ .short _02042D66 - _02042D38 - 2; case 8
+_02042D4A:
+ add r4, #0x80
+ ldr r0, [r4, #0x0]
+ mov r1, #0x20
+ ldr r0, [r0, #0xc]
+ bl FUN_0202AF70
+ b _02042F04
+_02042D58:
+ add r4, #0x80
+ ldr r0, [r4, #0x0]
+ mov r1, #0x0
+ ldr r0, [r0, #0xc]
+ bl FUN_0202AF88
+ b _02042F04
+_02042D66:
+ add r4, #0x80
+ ldr r0, [r4, #0x0]
+ mov r1, #0x1
+ ldr r0, [r0, #0xc]
+ bl FUN_0202AF88
+ b _02042F04
+_02042D74:
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r4, #0x80
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_02042CF8
+ cmp r0, #0x0
+ beq _02042D9A
+ mov r0, #0x1
+ strh r0, [r5, #0x0]
+ b _02042F04
+_02042D9A:
+ mov r0, #0x0
+ strh r0, [r5, #0x0]
+ b _02042F04
+_02042DA0:
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r4, #0x80
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_02042CF8
+ strh r0, [r5, #0x0]
+ b _02042F04
+_02042DC0:
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_02042CF8
+ sub r0, r0, #0x1
+ lsl r5, r0, #0x4
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r7, _02042F0C ; =0x020F43E4
+ bl FUN_02042D04
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ ldr r2, [r7, r5]
+ blx r2
+ strh r0, [r6, #0x0]
+ b _02042F04
+_02042DFC:
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_02042CF8
+ sub r0, r0, #0x1
+ ldr r1, _02042F0C ; =0x020F43E4
+ lsl r0, r0, #0x4
+ add r5, r1, r0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_02042D04
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r2, [r5, #0x4]
+ blx r2
+ add r4, #0x80
+ ldr r0, [r4, #0x0]
+ bl FUN_02042D10
+ b _02042F04
+_02042E2E:
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_02042CF8
+ sub r0, r0, #0x1
+ ldr r1, _02042F0C ; =0x020F43E4
+ lsl r0, r0, #0x4
+ add r5, r1, r0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r7, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_02042D04
+ add r4, #0x80
+ add r3, r0, #0x0
+ ldr r1, [r4, #0x0]
+ ldr r2, [r6, #0x0]
+ add r0, sp, #0x14
+ bl FUN_02042CF0
+ ldr r2, [sp, #0x0]
+ ldr r3, [r5, #0x8]
+ add r0, sp, #0x14
+ add r1, r7, #0x0
+ blx r3
+ b _02042F04
+_02042E9A:
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_02042CF8
+ sub r0, r0, #0x1
+ ldr r1, _02042F0C ; =0x020F43E4
+ lsl r0, r0, #0x4
+ add r5, r1, r0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ bl FUN_02039438
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r7, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ str r0, [sp, #0x4]
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_02042D04
+ add r4, #0x80
+ add r3, r0, #0x0
+ ldr r1, [r4, #0x0]
+ ldr r2, [r6, #0x0]
+ add r0, sp, #0x8
+ bl FUN_02042CF0
+ ldr r2, [sp, #0x4]
+ ldr r3, [r5, #0xc]
+ add r0, sp, #0x8
+ add r1, r7, #0x0
+ blx r3
+_02042F04:
+ mov r0, #0x0
+ add sp, #0x20
+ pop {r3-r7, pc}
+ nop
+_02042F0C: .word 0x020F43E4
+
+ thumb_func_start FUN_02042F10
+FUN_02042F10: ; 0x02042F10
+ push {r3, lr}
+ ldr r0, [r0, #0xc]
+ bl FUN_0206BB1C
+ bl FUN_0206B9AC
+ cmp r0, #0x6
+ bge _02042F24
+ mov r0, #0x1
+ pop {r3, pc}
+_02042F24:
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_02042F28
+FUN_02042F28: ; 0x02042F28
+ push {r3, lr}
+ sub sp, #0x8
+ add r1, r0, #0x0
+ mov r0, #0x2
+ str r0, [sp, #0x0]
+ mov r3, #0x1
+ str r3, [sp, #0x4]
+ ldr r1, [r1, #0xc]
+ ldr r2, _02042F44 ; =0x000001EA
+ mov r0, #0x20
+ bl FUN_0204A0C8
+ add sp, #0x8
+ pop {r3, pc}
+ .balign 4
+_02042F44: .word 0x000001EA
+
+ thumb_func_start FUN_02042F48
+FUN_02042F48: ; 0x02042F48
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x53
+ lsl r0, r0, #0x2
+ strh r0, [r1, #0x0]
+ mov r0, #0xd
+ strh r0, [r2, #0x0]
+ ldr r0, [r4, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020238F4
+ add r2, r0, #0x0
+ ldr r0, [r4, #0x4]
+ mov r1, #0x0
+ bl FUN_0200ABC0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02042F6C
+FUN_02042F6C: ; 0x02042F6C
+ push {r3-r7, lr}
+ sub sp, #0x38
+ str r0, [sp, #0x4]
+ bl FUN_02042D04
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x4]
+ ldr r0, [r0, #0xc]
+ bl FUN_020238F4
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x10]
+ mov r7, #0x0
+ add r5, r0, #0x0
+ add r4, r0, #0x4
+ add r0, r4, #0x0
+ mov r1, #0x97
+ add r2, r7, #0x0
+ add r5, #0xf0
+ bl FUN_020671BC
+ add r1, r7, #0x0
+ str r0, [sp, #0x8]
+ add r0, r4, #0x0
+ add r2, r1, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0x14]
+ add r0, r4, #0x0
+ mov r1, #0x7
+ add r2, r7, #0x0
+ bl FUN_020671BC
+ add r6, r0, #0x0
+ blx OS_GetTick
+ bl FUN_0201BA10
+ add r1, r0, #0x0
+ ldr r0, [sp, #0x14]
+ str r1, [sp, #0x34]
+ cmp r0, #0x0
+ beq _02042FE8
+ cmp r0, #0x1
+ bne _02042FE6
+ add r0, r6, #0x0
+ bl FUN_02068AAC
+ cmp r0, #0x0
+ beq _02042FE8
+_02042FD0:
+ ldr r0, [sp, #0x34]
+ bl FUN_0201BA10
+ add r1, r0, #0x0
+ add r0, r6, #0x0
+ str r1, [sp, #0x34]
+ bl FUN_02068AAC
+ cmp r0, #0x0
+ bne _02042FD0
+ b _02042FE8
+_02042FE6:
+ str r0, [sp, #0x34]
+_02042FE8:
+ ldr r1, [sp, #0x34]
+ add r0, r4, #0x0
+ bl FUN_0206A23C
+ add r0, r4, #0x0
+ bl FUN_020689E0
+ str r0, [sp, #0x30]
+ add r0, r4, #0x0
+ mov r1, #0x6f
+ add r2, sp, #0x30
+ bl FUN_02067830
+ add r0, r4, #0x0
+ mov r1, #0x4b
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0x18]
+ add r0, r4, #0x0
+ mov r1, #0x4a
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0x1c]
+ add r0, r4, #0x0
+ mov r1, #0x49
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0x20]
+ add r0, r4, #0x0
+ mov r1, #0x48
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0x24]
+ add r0, r4, #0x0
+ mov r1, #0x46
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x47
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r1, r6, r0
+ ldr r0, [sp, #0x24]
+ add r1, r0, r1
+ ldr r0, [sp, #0x20]
+ add r1, r0, r1
+ ldr r0, [sp, #0x1c]
+ add r1, r0, r1
+ ldr r0, [sp, #0x18]
+ add r0, r0, r1
+ str r0, [sp, #0x30]
+ bne _020430DA
+ bl FUN_0201B9EC
+ add r6, r0, #0x0
+ mov r0, #0x1f
+ and r0, r6
+ str r0, [sp, #0x34]
+ add r0, r4, #0x0
+ mov r1, #0x46
+ add r2, sp, #0x34
+ bl FUN_02067830
+ mov r0, #0x3e
+ lsl r0, r0, #0x4
+ and r0, r6
+ lsr r0, r0, #0x5
+ str r0, [sp, #0x34]
+ add r0, r4, #0x0
+ mov r1, #0x47
+ add r2, sp, #0x34
+ bl FUN_02067830
+ mov r0, #0x1f
+ lsl r0, r0, #0xa
+ and r0, r6
+ lsr r0, r0, #0xa
+ str r0, [sp, #0x34]
+ add r0, r4, #0x0
+ mov r1, #0x48
+ add r2, sp, #0x34
+ bl FUN_02067830
+ bl FUN_0201B9EC
+ add r6, r0, #0x0
+ mov r0, #0x1f
+ and r0, r6
+ str r0, [sp, #0x34]
+ add r0, r4, #0x0
+ mov r1, #0x49
+ add r2, sp, #0x34
+ bl FUN_02067830
+ mov r0, #0x3e
+ lsl r0, r0, #0x4
+ and r0, r6
+ lsr r0, r0, #0x5
+ str r0, [sp, #0x34]
+ add r0, r4, #0x0
+ mov r1, #0x4a
+ add r2, sp, #0x34
+ bl FUN_02067830
+ mov r0, #0x1f
+ lsl r0, r0, #0xa
+ and r0, r6
+ lsr r0, r0, #0xa
+ str r0, [sp, #0x34]
+ add r0, r4, #0x0
+ mov r1, #0x4b
+ add r2, sp, #0x34
+ bl FUN_02067830
+_020430DA:
+ ldr r0, [sp, #0x4]
+ ldr r0, [r0, #0xc]
+ bl FUN_0202A918
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x2e
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ beq _020430FC
+ mov r0, #0x49
+ bl FUN_0207FCE0
+ ldrb r1, [r5, #0x0]
+ strb r1, [r6, r0]
+_020430FC:
+ add r0, r4, #0x0
+ mov r1, #0x2f
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ beq _02043114
+ mov r0, #0x4a
+ bl FUN_0207FCE0
+ ldrb r1, [r5, #0x1]
+ strb r1, [r6, r0]
+_02043114:
+ add r0, r4, #0x0
+ mov r1, #0x30
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ beq _0204312C
+ mov r0, #0x4b
+ bl FUN_0207FCE0
+ ldrb r1, [r5, #0x2]
+ strb r1, [r6, r0]
+_0204312C:
+ add r0, r4, #0x0
+ mov r1, #0x31
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ beq _02043144
+ mov r0, #0x4c
+ bl FUN_0207FCE0
+ ldrb r1, [r5, #0x3]
+ strb r1, [r6, r0]
+_02043144:
+ add r0, r4, #0x0
+ mov r1, #0x32
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ beq _0204315C
+ mov r0, #0x4d
+ bl FUN_0207FCE0
+ ldrb r1, [r5, #0x4]
+ strb r1, [r6, r0]
+_0204315C:
+ add r0, r4, #0x0
+ mov r1, #0x33
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ beq _02043174
+ mov r0, #0x4e
+ bl FUN_0207FCE0
+ ldrb r1, [r5, #0x5]
+ strb r1, [r6, r0]
+_02043174:
+ add r0, r4, #0x0
+ mov r1, #0x34
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ beq _0204318C
+ mov r0, #0x4f
+ bl FUN_0207FCE0
+ ldrb r1, [r5, #0x6]
+ strb r1, [r6, r0]
+_0204318C:
+ add r0, r4, #0x0
+ mov r1, #0x67
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ beq _020431A4
+ mov r0, #0x19
+ bl FUN_0207FCE0
+ ldrb r1, [r5, #0x7]
+ strb r1, [r6, r0]
+_020431A4:
+ add r0, r4, #0x0
+ mov r1, #0x68
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ beq _020431BC
+ mov r0, #0x1a
+ bl FUN_0207FCE0
+ ldrb r1, [r5, #0x8]
+ strb r1, [r6, r0]
+_020431BC:
+ add r0, r4, #0x0
+ mov r1, #0x69
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ beq _020431D4
+ mov r0, #0x1b
+ bl FUN_0207FCE0
+ ldrb r1, [r5, #0x9]
+ strb r1, [r6, r0]
+_020431D4:
+ ldr r0, [sp, #0x10]
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _0204322C
+ ldr r0, [sp, #0xc]
+ mov r1, #0x20
+ bl FUN_020239A0
+ add r5, r0, #0x0
+ ldr r0, [sp, #0xc]
+ bl FUN_020239BC
+ str r0, [sp, #0x2c]
+ ldr r0, [sp, #0xc]
+ bl FUN_020239CC
+ str r0, [sp, #0x28]
+ mov r0, #0x20
+ bl FUN_020669C0
+ add r7, r0, #0x0
+ add r0, r4, #0x0
+ add r1, r7, #0x0
+ bl FUN_02069B88
+ add r0, r7, #0x0
+ mov r1, #0x90
+ add r2, r5, #0x0
+ bl FUN_02067830
+ add r0, r7, #0x0
+ mov r1, #0x7
+ add r2, sp, #0x2c
+ bl FUN_02067830
+ add r0, r7, #0x0
+ mov r1, #0x9c
+ add r2, sp, #0x28
+ bl FUN_02067830
+ add r0, r5, #0x0
+ add r4, r7, #0x0
+ bl FUN_02021A20
+_0204322C:
+ ldr r1, [sp, #0x8]
+ mov r0, #0x2
+ bl FUN_02015CF8
+ add r3, r0, #0x0
+ mov r0, #0x20
+ str r0, [sp, #0x0]
+ ldr r1, [sp, #0xc]
+ add r0, r4, #0x0
+ mov r2, #0x4
+ bl FUN_0208089C
+ add r0, r4, #0x0
+ bl FUN_02066ED8
+ ldr r0, [sp, #0x4]
+ ldr r0, [r0, #0xc]
+ bl FUN_0206BB1C
+ add r1, r4, #0x0
+ bl FUN_0206B900
+ cmp r0, #0x0
+ beq _02043266
+ ldr r0, [sp, #0x4]
+ add r1, r4, #0x0
+ ldr r0, [r0, #0xc]
+ bl FUN_0202C144
+_02043266:
+ cmp r7, #0x0
+ beq _02043270
+ add r0, r7, #0x0
+ bl FUN_02016A18
+_02043270:
+ add sp, #0x38
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02043274
+FUN_02043274: ; 0x02043274
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_02042D04
+ add r7, r0, #0x0
+ mov r0, #0x53
+ lsl r0, r0, #0x2
+ strh r0, [r4, #0x0]
+ mov r0, #0x7
+ strh r0, [r6, #0x0]
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020238F4
+ add r2, r0, #0x0
+ ldr r0, [r5, #0x4]
+ mov r1, #0x0
+ bl FUN_0200ABC0
+ add r0, r7, #0x4
+ bl FUN_020690E4
+ add r2, r0, #0x0
+ ldr r0, [r5, #0x4]
+ mov r1, #0x1
+ bl FUN_0200ACA4
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020432B4
+FUN_020432B4: ; 0x020432B4
+ mov r0, #0x53
+ lsl r0, r0, #0x2
+ strh r0, [r1, #0x0]
+ mov r0, #0x4
+ strh r0, [r2, #0x0]
+ bx lr
+
+ thumb_func_start FUN_020432C0
+FUN_020432C0: ; 0x020432C0
+ ldr r3, _020432C4 ; =FUN_02042F6C
+ bx r3
+ .balign 4
+_020432C4: .word FUN_02042F6C
+
+ thumb_func_start FUN_020432C8
+FUN_020432C8: ; 0x020432C8
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_02042D04
+ add r7, r0, #0x0
+ mov r0, #0x53
+ lsl r0, r0, #0x2
+ strh r0, [r4, #0x0]
+ mov r0, #0x8
+ strh r0, [r6, #0x0]
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020238F4
+ add r2, r0, #0x0
+ ldr r0, [r5, #0x4]
+ mov r1, #0x0
+ bl FUN_0200ABC0
+ add r0, r7, #0x4
+ bl FUN_020690E4
+ add r2, r0, #0x0
+ ldr r0, [r5, #0x4]
+ mov r1, #0x1
+ bl FUN_0200AC60
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02043308
+FUN_02043308: ; 0x02043308
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_0206F158
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02042D04
+ add r1, r0, #0x0
+ ldr r1, [r1, #0x0]
+ add r0, r4, #0x0
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ mov r2, #0x1
+ mov r3, #0x20
+ bl FUN_0206ED24
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02043330
+FUN_02043330: ; 0x02043330
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_0206F158
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02042D04
+ add r1, r0, #0x0
+ ldr r1, [r1, #0x0]
+ add r0, r4, #0x0
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ mov r2, #0x1
+ mov r3, #0x20
+ bl FUN_0206ED38
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02043358
+FUN_02043358: ; 0x02043358
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_02042D04
+ ldr r0, [r0, #0x0]
+ lsl r0, r0, #0x10
+ lsr r7, r0, #0x10
+ mov r0, #0x53
+ lsl r0, r0, #0x2
+ strh r0, [r4, #0x0]
+ mov r0, #0x9
+ strh r0, [r6, #0x0]
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020238F4
+ add r2, r0, #0x0
+ ldr r0, [r5, #0x4]
+ mov r1, #0x0
+ bl FUN_0200ABC0
+ ldr r0, [r5, #0x4]
+ mov r1, #0x1
+ add r2, r7, #0x0
+ bl FUN_0200AE38
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02043394
+FUN_02043394: ; 0x02043394
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ add r4, r1, #0x0
+ ldr r0, [r0, #0xc]
+ add r6, r2, #0x0
+ bl FUN_0206F158
+ ldr r0, [r5, #0x0]
+ bl FUN_02042D04
+ ldr r0, [r0, #0x0]
+ mov r1, #0x0
+ lsl r0, r0, #0x10
+ lsr r2, r0, #0x10
+ mov r0, #0x53
+ lsl r0, r0, #0x2
+ strh r0, [r4, #0x0]
+ mov r0, #0x5
+ strh r0, [r6, #0x0]
+ ldr r0, [r5, #0x4]
+ bl FUN_0200AE38
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_020433C4
+FUN_020433C4: ; 0x020433C4
+ mov r0, #0x1
+ bx lr
+
+ thumb_func_start FUN_020433C8
+FUN_020433C8: ; 0x020433C8
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02042D04
+ add r1, r0, #0x0
+ ldr r0, [r4, #0xc]
+ bl FUN_02023BD4
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020433DC
+FUN_020433DC: ; 0x020433DC
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_02042D04
+ add r7, r0, #0x0
+ mov r0, #0x53
+ lsl r0, r0, #0x2
+ strh r0, [r4, #0x0]
+ mov r0, #0xa
+ strh r0, [r6, #0x0]
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020238F4
+ add r2, r0, #0x0
+ ldr r0, [r5, #0x4]
+ mov r1, #0x0
+ bl FUN_0200ABC0
+ add r0, r7, #0x0
+ mov r1, #0x20
+ bl FUN_02023AF4
+ add r4, r0, #0x0
+ mov r1, #0x1
+ str r1, [sp, #0x0]
+ mov r0, #0x2
+ str r0, [sp, #0x4]
+ ldr r0, [r5, #0x4]
+ add r2, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200ABB4
+ add r0, r4, #0x0
+ bl FUN_02021A20
+ add sp, #0x8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02043430
+FUN_02043430: ; 0x02043430
+ mov r0, #0x53
+ lsl r0, r0, #0x2
+ strh r0, [r1, #0x0]
+ mov r0, #0x6
+ strh r0, [r2, #0x0]
+ bx lr
+
+ thumb_func_start FUN_0204343C
+FUN_0204343C: ; 0x0204343C
+ push {r3, lr}
+ ldr r0, [r0, #0xc]
+ bl FUN_02026CC4
+ bl FUN_02025DB0
+ cmp r0, #0xc8
+ bge _02043450
+ mov r0, #0x1
+ pop {r3, pc}
+_02043450:
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_02043454
+FUN_02043454: ; 0x02043454
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_02042D04
+ add r4, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_02026CC4
+ ldr r1, [r4, #0x0]
+ bl FUN_02025D6C
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0204346C
+FUN_0204346C: ; 0x0204346C
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_02042D04
+ ldr r7, [r0, #0x0]
+ mov r0, #0x53
+ lsl r0, r0, #0x2
+ strh r0, [r4, #0x0]
+ mov r0, #0xb
+ strh r0, [r6, #0x0]
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020238F4
+ add r2, r0, #0x0
+ ldr r0, [r5, #0x4]
+ mov r1, #0x0
+ bl FUN_0200ABC0
+ ldr r0, [r5, #0x4]
+ mov r1, #0x1
+ add r2, r7, #0x0
+ bl FUN_0200B350
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_020434A4
+FUN_020434A4: ; 0x020434A4
+ mov r0, #0x53
+ lsl r0, r0, #0x2
+ strh r0, [r1, #0x0]
+ mov r0, #0x6
+ strh r0, [r2, #0x0]
+ bx lr
+
+ thumb_func_start FUN_020434B0
+FUN_020434B0: ; 0x020434B0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_02042D04
+ ldr r4, [r0, #0x4]
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x1
+ beq _020434CA
+ cmp r0, #0x2
+ beq _020434DA
+ cmp r0, #0x3
+ beq _020434DE
+ b _020434E2
+_020434CA:
+ ldr r0, [r5, #0xc]
+ bl FUN_02029C80
+ add r1, r4, #0x0
+ mov r2, #0x1
+ bl FUN_02029DD4
+ pop {r3-r5, pc}
+_020434DA:
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_020434DE:
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_020434E2:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020434E8
+FUN_020434E8: ; 0x020434E8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_02042D04
+ ldr r4, [r0, #0x4]
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x1
+ beq _02043502
+ cmp r0, #0x2
+ beq _02043512
+ cmp r0, #0x3
+ beq _02043526
+ pop {r3-r5, pc}
+_02043502:
+ ldr r0, [r5, #0xc]
+ bl FUN_02029C80
+ add r1, r4, #0x0
+ mov r2, #0x1
+ bl FUN_02029D44
+ pop {r3-r5, pc}
+_02043512:
+ ldr r0, [r5, #0xc]
+ bl FUN_02027E24
+ bl FUN_0202708C
+ add r1, r4, #0x0
+ mov r2, #0x1
+ bl FUN_020271A4
+ pop {r3-r5, pc}
+_02043526:
+ ldr r0, [r5, #0xc]
+ bl FUN_02027E24
+ bl FUN_0202708C
+ add r1, r4, #0x0
+ bl FUN_02027264
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02043538
+FUN_02043538: ; 0x02043538
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_02042D04
+ ldr r2, [r0, #0x4]
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x1
+ beq _02043558
+ cmp r0, #0x2
+ beq _02043562
+ cmp r0, #0x3
+ beq _0204356C
+ b _02043574
+_02043558:
+ ldr r0, [r5, #0x4]
+ mov r1, #0x1
+ bl FUN_0200B534
+ b _02043574
+_02043562:
+ ldr r0, [r5, #0x4]
+ mov r1, #0x1
+ bl FUN_0200B660
+ b _02043574
+_0204356C:
+ ldr r0, [r5, #0x4]
+ mov r1, #0x1
+ bl FUN_0200B6D0
+_02043574:
+ mov r0, #0x53
+ lsl r0, r0, #0x2
+ strh r0, [r4, #0x0]
+ mov r0, #0xc
+ strh r0, [r6, #0x0]
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020238F4
+ add r2, r0, #0x0
+ ldr r0, [r5, #0x4]
+ mov r1, #0x0
+ bl FUN_0200ABC0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02043594
+FUN_02043594: ; 0x02043594
+ mov r0, #0x53
+ lsl r0, r0, #0x2
+ strh r0, [r1, #0x0]
+ mov r0, #0x6
+ strh r0, [r2, #0x0]
+ bx lr
+
+ thumb_func_start FUN_020435A0
+FUN_020435A0: ; 0x020435A0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_0206F158
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02042D04
+ ldr r1, _020435C0 ; =0x000001C6
+ add r0, r4, #0x0
+ mov r2, #0x1
+ mov r3, #0x20
+ bl FUN_0206ED24
+ pop {r3-r5, pc}
+ .balign 4
+_020435C0: .word 0x000001C6
+
+ thumb_func_start FUN_020435C4
+FUN_020435C4: ; 0x020435C4
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0xc]
+ bl FUN_0206F158
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02042D04
+ ldr r0, [r4, #0xc]
+ bl FUN_020462AC
+ add r4, r0, #0x0
+ ldr r1, _020435F4 ; =0x000001C6
+ add r0, r5, #0x0
+ mov r2, #0x1
+ mov r3, #0x20
+ bl FUN_0206ED38
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_0205F478
+ pop {r3-r5, pc}
+ .balign 4
+_020435F4: .word 0x000001C6
+
+ thumb_func_start FUN_020435F8
+FUN_020435F8: ; 0x020435F8
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_02042D04
+ mov r0, #0x53
+ lsl r0, r0, #0x2
+ strh r0, [r4, #0x0]
+ mov r0, #0xe
+ strh r0, [r6, #0x0]
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020238F4
+ add r2, r0, #0x0
+ ldr r0, [r5, #0x4]
+ mov r1, #0x0
+ bl FUN_0200ABC0
+ ldr r0, [r5, #0x4]
+ ldr r2, _02043630 ; =0x000001C6
+ mov r1, #0x1
+ bl FUN_0200AE38
+ pop {r4-r6, pc}
+ nop
+_02043630: .word 0x000001C6
+
+ thumb_func_start FUN_02043634
+FUN_02043634: ; 0x02043634
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ add r4, r1, #0x0
+ ldr r0, [r0, #0xc]
+ add r6, r2, #0x0
+ bl FUN_0206F158
+ ldr r0, [r5, #0x0]
+ bl FUN_02042D04
+ mov r2, #0x53
+ lsl r2, r2, #0x2
+ strh r2, [r4, #0x0]
+ mov r0, #0x5
+ strh r0, [r6, #0x0]
+ ldr r0, [r5, #0x4]
+ mov r1, #0x0
+ add r2, #0x7a
+ bl FUN_0200AE38
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02043660
+FUN_02043660: ; 0x02043660
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_0206F158
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02042D04
+ mov r1, #0x71
+ add r0, r4, #0x0
+ lsl r1, r1, #0x2
+ mov r2, #0x1
+ mov r3, #0x20
+ bl FUN_0206ED24
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02043684
+FUN_02043684: ; 0x02043684
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0xc]
+ bl FUN_0206F158
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02042D04
+ ldr r0, [r4, #0xc]
+ bl FUN_020462AC
+ mov r1, #0x71
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ lsl r1, r1, #0x2
+ mov r2, #0x1
+ mov r3, #0x20
+ bl FUN_0206ED38
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_0205F478
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020436B8
+FUN_020436B8: ; 0x020436B8
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_02042D04
+ mov r0, #0x53
+ lsl r0, r0, #0x2
+ strh r0, [r4, #0x0]
+ mov r0, #0xf
+ strh r0, [r6, #0x0]
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020238F4
+ add r2, r0, #0x0
+ ldr r0, [r5, #0x4]
+ mov r1, #0x0
+ bl FUN_0200ABC0
+ mov r2, #0x71
+ ldr r0, [r5, #0x4]
+ mov r1, #0x1
+ lsl r2, r2, #0x2
+ bl FUN_0200AE38
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_020436F0
+FUN_020436F0: ; 0x020436F0
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ add r4, r1, #0x0
+ ldr r0, [r0, #0xc]
+ add r6, r2, #0x0
+ bl FUN_0206F158
+ ldr r0, [r5, #0x0]
+ bl FUN_02042D04
+ mov r2, #0x53
+ lsl r2, r2, #0x2
+ strh r2, [r4, #0x0]
+ mov r0, #0x5
+ strh r0, [r6, #0x0]
+ ldr r0, [r5, #0x4]
+ mov r1, #0x0
+ add r2, #0x78
+ bl FUN_0200AE38
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0204371C
+FUN_0204371C: ; 0x0204371C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_0206F158
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02042D04
+ ldr r1, _0204373C ; =0x000001C7
+ add r0, r4, #0x0
+ mov r2, #0x1
+ mov r3, #0x20
+ bl FUN_0206ED24
+ pop {r3-r5, pc}
+ .balign 4
+_0204373C: .word 0x000001C7
+
+ thumb_func_start FUN_02043740
+FUN_02043740: ; 0x02043740
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0xc]
+ bl FUN_0206F158
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02042D04
+ ldr r0, [r4, #0xc]
+ bl FUN_020462AC
+ add r4, r0, #0x0
+ ldr r1, _02043770 ; =0x000001C7
+ add r0, r5, #0x0
+ mov r2, #0x1
+ mov r3, #0x20
+ bl FUN_0206ED38
+ add r0, r4, #0x0
+ mov r1, #0x2
+ bl FUN_0205F478
+ pop {r3-r5, pc}
+ .balign 4
+_02043770: .word 0x000001C7
+
+ thumb_func_start FUN_02043774
+FUN_02043774: ; 0x02043774
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_02042D04
+ mov r0, #0x53
+ lsl r0, r0, #0x2
+ strh r0, [r4, #0x0]
+ mov r0, #0x10
+ strh r0, [r6, #0x0]
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020238F4
+ add r2, r0, #0x0
+ ldr r0, [r5, #0x4]
+ mov r1, #0x0
+ bl FUN_0200ABC0
+ ldr r0, [r5, #0x4]
+ ldr r2, _020437AC ; =0x000001C7
+ mov r1, #0x1
+ bl FUN_0200AE38
+ pop {r4-r6, pc}
+ nop
+_020437AC: .word 0x000001C7
+
+ thumb_func_start FUN_020437B0
+FUN_020437B0: ; 0x020437B0
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ add r4, r1, #0x0
+ ldr r0, [r0, #0xc]
+ add r6, r2, #0x0
+ bl FUN_0206F158
+ ldr r0, [r5, #0x0]
+ bl FUN_02042D04
+ mov r2, #0x53
+ lsl r2, r2, #0x2
+ strh r2, [r4, #0x0]
+ mov r0, #0x5
+ strh r0, [r6, #0x0]
+ ldr r0, [r5, #0x4]
+ mov r1, #0x0
+ add r2, #0x7b
+ bl FUN_0200AE38
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_020437DC
+FUN_020437DC: ; 0x020437DC
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_0204C1A8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02042D04
+ add r0, r4, #0x0
+ bl FUN_0204BEC8
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020437F8
+FUN_020437F8: ; 0x020437F8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_0204C1A8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02042D04
+ add r1, r0, #0x0
+ ldr r1, [r1, #0x0]
+ add r0, r4, #0x0
+ bl FUN_0204BED8
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02043818
+FUN_02043818: ; 0x02043818
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_02042D04
+ add r7, r0, #0x0
+ mov r0, #0x53
+ lsl r0, r0, #0x2
+ strh r0, [r4, #0x0]
+ mov r0, #0x12
+ strh r0, [r6, #0x0]
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020238F4
+ add r2, r0, #0x0
+ ldr r0, [r5, #0x4]
+ mov r1, #0x0
+ bl FUN_0200ABC0
+ ldr r0, [r5, #0x4]
+ ldr r2, [r7, #0x0]
+ mov r1, #0x1
+ bl FUN_0200B02C
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02043850
+FUN_02043850: ; 0x02043850
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_02042D04
+ mov r0, #0x53
+ lsl r0, r0, #0x2
+ strh r0, [r4, #0x0]
+ mov r0, #0x13
+ strh r0, [r6, #0x0]
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020238F4
+ add r2, r0, #0x0
+ ldr r0, [r5, #0x4]
+ mov r1, #0x0
+ bl FUN_0200ABC0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0204387C
+FUN_0204387C: ; 0x0204387C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ cmp r0, #0x0
+ bne _020438B2
+ add r0, r4, #0x0
+ bl FUN_0205F224
+ add r5, #0x80
+ ldr r0, [r5, #0x0]
+ bl FUN_0204B9EC
+ b _020438CA
+_020438B2:
+ cmp r0, #0x1
+ bne _020438C6
+ add r0, r4, #0x0
+ bl FUN_0205F234
+ add r5, #0x80
+ ldr r0, [r5, #0x0]
+ bl FUN_0204BA1C
+ b _020438CA
+_020438C6:
+ bl ErrorHandling
+_020438CA:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020438D0
+FUN_020438D0: ; 0x020438D0
+ push {r4-r6, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02022528
+ add r6, r0, #0x0
+ mov r0, #0x20
+ bl FUN_020669C0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_0202C000
+ cmp r0, #0x6
+ bne _02043908
+ mov r0, #0x1
+ b _0204390A
+_02043908:
+ mov r0, #0x0
+_0204390A:
+ strh r0, [r4, #0x0]
+ add r0, r5, #0x0
+ bl FUN_02016A18
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02043918
+FUN_02043918: ; 0x02043918
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r6, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02022528
+ add r7, r0, #0x0
+ add r0, r6, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02022510
+ str r0, [sp, #0x8]
+ mov r0, #0x20
+ bl FUN_020669C0
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020238F4
+ str r0, [sp, #0x4]
+ add r0, r6, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02024DA0
+ mov r5, #0x0
+_0204395C:
+ add r0, r7, #0x0
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_0202BFD8
+ mov r0, #0x20
+ str r0, [sp, #0x0]
+ ldr r1, [sp, #0x4]
+ add r0, r4, #0x0
+ mov r2, #0x2
+ mov r3, #0x0
+ bl FUN_0208089C
+ add r0, r4, #0x0
+ bl FUN_020690E4
+ add r1, r0, #0x0
+ ldr r0, [sp, #0x8]
+ bl FUN_0206B20C
+ cmp r0, #0x0
+ bne _0204398C
+ bl ErrorHandling
+_0204398C:
+ add r0, r6, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ add r1, r4, #0x0
+ ldr r0, [r0, #0xc]
+ bl FUN_0202C144
+ add r5, r5, #0x1
+ cmp r5, #0x6
+ blt _0204395C
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add r0, r7, #0x0
+ bl FUN_0202BEDC
+ mov r0, #0x0
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020439B4
+FUN_020439B4: ; 0x020439B4
+ push {r3-r7, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ cmp r6, #0x3
+ bhi _02043A40
+ add r0, r6, r6
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_020439EE: ; jump table (using 16-bit offset)
+ .short _020439F6 - _020439EE - 2; case 0
+ .short _02043A02 - _020439EE - 2; case 1
+ .short _02043A0E - _020439EE - 2; case 2
+ .short _02043A1A - _020439EE - 2; case 3
+_020439F6:
+ add r4, #0x80
+ ldr r0, [r4, #0x0]
+ bl FUN_0204BAC4
+ strh r0, [r5, #0x0]
+ b _02043A40
+_02043A02:
+ add r4, #0x80
+ ldr r0, [r4, #0x0]
+ bl FUN_0204BAD4
+ strh r0, [r5, #0x0]
+ b _02043A40
+_02043A0E:
+ add r4, #0x80
+ ldr r0, [r4, #0x0]
+ bl FUN_0204BAE4
+ strh r0, [r5, #0x0]
+ b _02043A40
+_02043A1A:
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_0204BAD4
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_0204BAC4
+ add r4, #0x80
+ add r7, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_0204BAE4
+ add r0, r7, r0
+ add r0, r6, r0
+ strh r0, [r5, #0x0]
+_02043A40:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02043A44
+FUN_02043A44: ; 0x02043A44
+ push {r3-r7, lr}
+ add r4, r0, #0x0
+ add r1, r4, #0x0
+ add r1, #0x80
+ ldr r5, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x26
+ bl FUN_02039438
+ lsl r1, r6, #0x18
+ lsl r2, r7, #0x18
+ add r4, #0x80
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ lsr r1, r1, #0x18
+ lsr r2, r2, #0x18
+ bl FUN_021E2950
+ str r0, [r5, #0x0]
+ mov r0, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02043A94
+FUN_02043A94: ; 0x02043A94
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x26
+ bl FUN_02039438
+ ldr r0, [r0, #0x0]
+ bl FUN_021E29B4
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02043AAC
+FUN_02043AAC: ; 0x02043AAC
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x26
+ bl FUN_02039438
+ add r1, r0, #0x0
+ add r4, #0x80
+ ldr r0, [r4, #0x0]
+ ldr r1, [r1, #0x0]
+ bl FUN_021E29C8
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02043ACC
+FUN_02043ACC: ; 0x02043ACC
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_0202390C
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02028930
+ strh r0, [r5, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02043AFC
+FUN_02043AFC: ; 0x02043AFC
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_0202390C
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394F0
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02028934
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02043B28
+FUN_02043B28: ; 0x02043B28
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_0202390C
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394F0
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0202896C
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02043B54
+FUN_02043B54: ; 0x02043B54
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_0202390C
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r1, r0, #0x0
+ ldrh r1, [r1, #0x0]
+ add r0, r4, #0x0
+ bl FUN_0202896C
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02043B84
+FUN_02043B84: ; 0x02043B84
+ push {r4-r6, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r5, [r0, #0x0]
+ add r0, r5, #0x0
+ bl FUN_020377AC
+ bl FUN_020238F4
+ ldr r0, [r5, #0xc]
+ bl FUN_0202390C
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadWord
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_02028930
+ cmp r0, r4
+ bhs _02043BC8
+ mov r0, #0x0
+ b _02043BCA
+_02043BC8:
+ mov r0, #0x1
+_02043BCA:
+ strh r0, [r5, #0x0]
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02043BD0
+FUN_02043BD0: ; 0x02043BD0
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r4, [r0, #0x0]
+ add r0, r4, #0x0
+ bl FUN_020377AC
+ bl FUN_020238F4
+ ldr r0, [r4, #0xc]
+ bl FUN_0202390C
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ ldrh r5, [r0, #0x0]
+ add r0, r6, #0x0
+ bl FUN_02028930
+ cmp r0, r5
+ bhs _02043C1E
+ mov r0, #0x0
+ b _02043C20
+_02043C1E:
+ mov r0, #0x1
+_02043C20:
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02043C28
+FUN_02043C28: ; 0x02043C28
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_0202390C
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r1, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_02028954
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02043C6C
+FUN_02043C6C: ; 0x02043C6C
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020377AC
+ bl FUN_020238F4
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadWord
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02023A30
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02043C90
+FUN_02043C90: ; 0x02043C90
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020377AC
+ bl FUN_020238F4
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadWord
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02023A54
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02043CB4
+FUN_02043CB4: ; 0x02043CB4
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020377AC
+ bl FUN_020238F4
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394F0
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02023A54
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02043CE4
+FUN_02043CE4: ; 0x02043CE4
+ push {r4-r6, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020377AC
+ bl FUN_020238F4
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadWord
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_02023A10
+ cmp r0, r4
+ bhs _02043D20
+ mov r0, #0x0
+ b _02043D22
+_02043D20:
+ mov r0, #0x1
+_02043D22:
+ strh r0, [r5, #0x0]
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02043D28
+FUN_02043D28: ; 0x02043D28
+ push {r4-r6, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020377AC
+ bl FUN_020238F4
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394F0
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_02023A10
+ cmp r0, r4
+ bhs _02043D6E
+ mov r0, #0x0
+ b _02043D70
+_02043D6E:
+ mov r0, #0x1
+_02043D70:
+ strh r0, [r5, #0x0]
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02043D78
+FUN_02043D78: ; 0x02043D78
+ push {r3-r7, lr}
+ add r4, r0, #0x0
+ add r1, r4, #0x0
+ add r1, #0x80
+ ldr r5, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x27
+ bl FUN_02039438
+ lsl r1, r6, #0x18
+ lsl r2, r7, #0x18
+ add r4, #0x80
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ lsr r1, r1, #0x18
+ lsr r2, r2, #0x18
+ bl FUN_021E27E8
+ str r0, [r5, #0x0]
+ mov r0, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02043DC8
+FUN_02043DC8: ; 0x02043DC8
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x27
+ bl FUN_02039438
+ ldr r0, [r0, #0x0]
+ bl FUN_021E288C
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02043DE0
+FUN_02043DE0: ; 0x02043DE0
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x27
+ bl FUN_02039438
+ add r1, r0, #0x0
+ add r4, #0x80
+ ldr r0, [r4, #0x0]
+ ldr r1, [r1, #0x0]
+ bl FUN_021E28A0
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02043E00
+FUN_02043E00: ; 0x02043E00
+ push {r3-r5, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ ldr r5, [r0, #0xc]
+ bl FUN_02039438
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02023D58
+ ldr r1, [r4, #0x0]
+ bl FUN_021ED4E0
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02043E20
+FUN_02043E20: ; 0x02043E20
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r1, r5, #0x0
+ add r1, #0x80
+ ldr r1, [r1, #0x0]
+ ldr r4, [r1, #0xc]
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x8
+ bl FUN_02022610
+ bl FUN_021ED5EC
+ strh r0, [r5, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02043E50
+FUN_02043E50: ; 0x02043E50
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x8
+ ldr r0, [r0, #0xc]
+ bl FUN_02022610
+ bl FUN_021ECD64
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02043E68
+FUN_02043E68: ; 0x02043E68
+ push {r4-r6, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r5, [r0, #0x0]
+ mov r1, #0x8
+ ldr r0, [r5, #0xc]
+ bl FUN_02022610
+ add r6, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_0206BB1C
+ add r4, #0x80
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020377AC
+ bl FUN_020238F4
+ add r2, r0, #0x0
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ bl FUN_021ED0CC
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02043E9C
+FUN_02043E9C: ; 0x02043E9C
+ push {r3-r7, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r5, [r0, #0x0]
+ mov r1, #0xf
+ add r0, r5, #0x0
+ bl FUN_02039438
+ add r7, r0, #0x0
+ add r0, r4, #0x0
+ ldr r6, [r5, #0xc]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394F0
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ mov r1, #0x8
+ bl FUN_02022610
+ add r6, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_0206BB1C
+ lsl r3, r4, #0x18
+ ldr r1, [r7, #0x0]
+ add r2, r6, #0x0
+ lsr r3, r3, #0x18
+ bl FUN_021EC71C
+ ldr r1, [sp, #0x0]
+ strh r0, [r1, #0x0]
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02043EFC
+FUN_02043EFC: ; 0x02043EFC
+ push {r3-r7, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r5, [r0, #0x0]
+ mov r1, #0xf
+ add r0, r5, #0x0
+ bl FUN_02039438
+ add r7, r0, #0x0
+ add r0, r4, #0x0
+ ldr r5, [r5, #0xc]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394F0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x8
+ bl FUN_02022610
+ lsl r1, r4, #0x18
+ ldr r2, [r7, #0x0]
+ lsr r1, r1, #0x18
+ bl FUN_021EC854
+ strh r0, [r6, #0x0]
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02043F50
+FUN_02043F50: ; 0x02043F50
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ ldr r4, [r0, #0xc]
+ bl FUN_02039438
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x8
+ bl FUN_02022610
+ ldr r2, [r6, #0x0]
+ add r1, r5, #0x0
+ bl FUN_021EC864
+ strh r0, [r7, #0x0]
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02043FA0
+FUN_02043FA0: ; 0x02043FA0
+ push {r3-r7, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r5, [r0, #0x0]
+ mov r1, #0xf
+ add r0, r5, #0x0
+ bl FUN_02039438
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_0206BB1C
+ ldr r2, [r6, #0x0]
+ add r1, r7, #0x0
+ bl FUN_021ED5C4
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02043FF4
+FUN_02043FF4: ; 0x02043FF4
+ push {r4-r6, lr}
+ add r6, r0, #0x0
+ add r1, r6, #0x0
+ add r1, #0x80
+ ldr r4, [r1, #0x0]
+ ldr r5, [r4, #0xc]
+ bl ScriptReadHalfword
+ add r6, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r6, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ ldr r0, [r4, #0xc]
+ bl FUN_0206BB1C
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x8
+ bl FUN_02022610
+ lsl r1, r6, #0x18
+ add r2, r0, #0x0
+ add r0, r4, #0x0
+ lsr r1, r1, #0x18
+ add r3, r5, #0x0
+ bl FUN_021EC57C
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02044034
+FUN_02044034: ; 0x02044034
+ push {r3-r7, lr}
+ sub sp, #0x10
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0xf
+ ldr r5, [r0, #0xc]
+ bl FUN_02039438
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ str r0, [sp, #0x8]
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ str r0, [sp, #0xc]
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394F0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02023D58
+ lsl r1, r4, #0x18
+ lsr r1, r1, #0x18
+ str r1, [sp, #0x0]
+ ldr r1, [r6, #0x0]
+ ldr r2, [sp, #0x8]
+ ldr r3, [sp, #0xc]
+ str r1, [sp, #0x4]
+ lsl r1, r7, #0x18
+ lsl r2, r2, #0x18
+ lsl r3, r3, #0x18
+ lsr r1, r1, #0x18
+ lsr r2, r2, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_021ED52C
+ mov r0, #0x0
+ add sp, #0x10
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_020440C0
+FUN_020440C0: ; 0x020440C0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r1, r5, #0x0
+ add r1, #0x80
+ ldr r1, [r1, #0x0]
+ ldr r4, [r1, #0xc]
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x8
+ bl FUN_02022610
+ bl FUN_021ED644
+ strh r0, [r5, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020440F0
+FUN_020440F0: ; 0x020440F0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r1, r5, #0x0
+ add r1, #0x80
+ ldr r1, [r1, #0x0]
+ ldr r4, [r1, #0xc]
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x8
+ bl FUN_02022610
+ bl FUN_02023C90
+ strh r0, [r5, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02044120
+FUN_02044120: ; 0x02044120
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02044138
+FUN_02044138: ; 0x02044138
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_0204413C
+FUN_0204413C: ; 0x0204413C
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02044140
+FUN_02044140: ; 0x02044140
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02044158
+FUN_02044158: ; 0x02044158
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205F54C
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_0204416C
+FUN_0204416C: ; 0x0204416C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205F55C
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02044198
+FUN_02044198: ; 0x02044198
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r5, r0, #0x0
+ bl FUN_0201B9EC
+ mov r1, #0x64
+ blx _s32_div_f
+ lsl r0, r1, #0x10
+ lsr r0, r0, #0x10
+ cmp r0, #0xf
+ bhs _020441D6
+ mov r0, #0x0
+ b _02044218
+_020441D6:
+ cmp r0, #0x1e
+ bhs _020441DE
+ mov r0, #0x1
+ b _02044218
+_020441DE:
+ cmp r0, #0x2d
+ bhs _020441E6
+ mov r0, #0x2
+ b _02044218
+_020441E6:
+ cmp r0, #0x3c
+ bhs _020441EE
+ mov r0, #0x3
+ b _02044218
+_020441EE:
+ cmp r0, #0x46
+ bhs _020441F6
+ mov r0, #0x4
+ b _02044218
+_020441F6:
+ cmp r0, #0x50
+ bhs _020441FE
+ mov r0, #0x5
+ b _02044218
+_020441FE:
+ cmp r0, #0x58
+ bhs _02044206
+ mov r0, #0x6
+ b _02044218
+_02044206:
+ cmp r0, #0x5d
+ bhs _0204420E
+ mov r0, #0x7
+ b _02044218
+_0204420E:
+ cmp r0, #0x62
+ bhs _02044216
+ mov r0, #0x8
+ b _02044218
+_02044216:
+ mov r0, #0x9
+_02044218:
+ ldr r2, _020442B4 ; =0x0000011D
+ cmp r5, r2
+ bgt _02044244
+ bge _02044290
+ cmp r5, #0x27
+ bgt _02044236
+ cmp r5, #0x23
+ blt _02044230
+ beq _02044284
+ cmp r5, #0x27
+ beq _02044290
+ b _0204429C
+_02044230:
+ cmp r5, #0x19
+ beq _02044294
+ b _0204429C
+_02044236:
+ cmp r5, #0x36
+ bgt _0204423E
+ beq _0204428C
+ b _0204429C
+_0204423E:
+ cmp r5, #0xff
+ beq _02044288
+ b _0204429C
+_02044244:
+ add r1, r2, #0x0
+ add r1, #0x8c
+ cmp r5, r1
+ bgt _0204426C
+ add r1, r2, #0x0
+ add r1, #0x8c
+ cmp r5, r1
+ bge _02044288
+ add r1, r2, #0x0
+ add r1, #0xf
+ cmp r5, r1
+ bgt _02044264
+ add r2, #0xf
+ cmp r5, r2
+ beq _02044284
+ b _0204429C
+_02044264:
+ add r2, #0x84
+ cmp r5, r2
+ beq _0204428C
+ b _0204429C
+_0204426C:
+ add r1, r2, #0x0
+ add r1, #0x8e
+ cmp r5, r1
+ bgt _0204427C
+ add r2, #0x8e
+ cmp r5, r2
+ beq _02044298
+ b _0204429C
+_0204427C:
+ add r2, #0x9b
+ cmp r5, r2
+ beq _02044298
+ b _0204429C
+_02044284:
+ mov r2, #0x0
+ b _0204429E
+_02044288:
+ mov r2, #0x1
+ b _0204429E
+_0204428C:
+ mov r2, #0x2
+ b _0204429E
+_02044290:
+ mov r2, #0x3
+ b _0204429E
+_02044294:
+ mov r2, #0x4
+ b _0204429E
+_02044298:
+ mov r2, #0x5
+ b _0204429E
+_0204429C:
+ mov r2, #0x0
+_0204429E:
+ add r3, r2, #0x0
+ mov r1, #0x14
+ mul r3, r1
+ ldr r2, _020442B8 ; =0x020F4494
+ lsl r1, r0, #0x1
+ add r0, r2, r3
+ ldrh r0, [r1, r0]
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ nop
+_020442B4: .word 0x0000011D
+_020442B8: .word 0x020F4494
+
+ thumb_func_start FUN_020442BC
+FUN_020442BC: ; 0x020442BC
+ push {r4-r7, lr}
+ sub sp, #0x14
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x1c]
+ ldr r0, [r0, #0x0]
+ bl FUN_02034824
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r5, [r0, #0x0]
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ str r0, [sp, #0xc]
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ str r0, [sp, #0x10]
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_0206BB1C
+ ldr r0, [sp, #0x10]
+ lsl r3, r7, #0x18
+ str r0, [sp, #0x0]
+ str r6, [sp, #0x4]
+ mov r0, #0xc
+ str r0, [sp, #0x8]
+ ldr r1, [r5, #0xc]
+ ldr r2, [sp, #0xc]
+ mov r0, #0xb
+ lsr r3, r3, #0x18
+ bl FUN_0204A048
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ add sp, #0x14
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204434C
+FUN_0204434C: ; 0x0204434C
+ push {r4-r6, lr}
+ add r4, r0, #0x0
+ add r1, r4, #0x0
+ add r1, #0x80
+ ldr r5, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_0206BB1C
+ ldrh r1, [r6, #0x0]
+ bl FUN_0206B9B0
+ mov r1, #0x4c
+ mov r2, #0x0
+ add r5, r0, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ bne _020443A0
+ add r0, r5, #0x0
+ mov r1, #0x5
+ mov r2, #0x0
+ bl FUN_020671BC
+ b _020443A2
+_020443A0:
+ mov r0, #0x0
+_020443A2:
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_020443A8
+FUN_020443A8: ; 0x020443A8
+ push {r3-r7, lr}
+ add r4, r0, #0x0
+ add r0, #0x80
+ ldr r5, [r0, #0x0]
+ add r0, r5, #0x0
+ bl FUN_020377AC
+ bl FUN_020238F4
+ add r7, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_0206BB1C
+ ldrh r1, [r6, #0x0]
+ bl FUN_0206B9B0
+ mov r1, #0x7
+ mov r2, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ add r0, r7, #0x0
+ bl FUN_020239BC
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ cmp r5, r0
+ bne _0204440C
+ mov r0, #0x0
+ b _0204440E
+_0204440C:
+ mov r0, #0x1
+_0204440E:
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02044414
+FUN_02044414: ; 0x02044414
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r4, [r0, #0x0]
+ ldr r0, [r4, #0xc]
+ bl FUN_020238F4
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ str r0, [sp, #0x8]
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r5, r0, #0x0
+ ldr r0, [r4, #0xc]
+ bl FUN_0206BB1C
+ add r6, r0, #0x0
+ bl FUN_0206B9AC
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x6
+ bhs _02044494
+ mov r0, #0xb
+ bl FUN_020669C0
+ add r4, r0, #0x0
+ bl FUN_02066978
+ mov r0, #0x1
+ add r1, r5, #0x0
+ bl FUN_02015CF8
+ mov r1, #0x3
+ str r1, [sp, #0x0]
+ str r0, [sp, #0x4]
+ ldr r1, [sp, #0x8]
+ add r0, r4, #0x0
+ mov r2, #0x1
+ add r3, r7, #0x0
+ bl FUN_021ECF14
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ bl FUN_0206B900
+ add r0, r4, #0x0
+ bl FUN_02016A18
+_02044494:
+ mov r0, #0x0
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204449C
+FUN_0204449C: ; 0x0204449C
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r5, #0x80
+ add r7, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_0206BB1C
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ add r3, r7, #0x0
+ bl FUN_0204A120
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020444F4
+FUN_020444F4: ; 0x020444F4
+ push {r3-r7, lr}
+ add r4, r0, #0x0
+ add r1, r4, #0x0
+ add r1, #0x80
+ ldr r7, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394F0
+ add r4, r0, #0x0
+ ldr r0, [r7, #0xc]
+ bl FUN_0206BB1C
+ add r1, r4, #0x0
+ bl FUN_0206B9B0
+ mov r2, #0x0
+ mov r1, #0x4c
+ add r4, r0, #0x0
+ strh r2, [r6, #0x0]
+ bl FUN_020671BC
+ cmp r0, #0x0
+ beq _02044556
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_02044556:
+ add r0, r4, #0x0
+ mov r1, #0x36
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r5, r0
+ beq _0204458E
+ add r0, r4, #0x0
+ mov r1, #0x37
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r5, r0
+ beq _0204458E
+ add r0, r4, #0x0
+ mov r1, #0x38
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r5, r0
+ beq _0204458E
+ add r0, r4, #0x0
+ mov r1, #0x39
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r5, r0
+ bne _02044592
+_0204458E:
+ mov r0, #0x1
+ strh r0, [r6, #0x0]
+_02044592:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02044598
+FUN_02044598: ; 0x02044598
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r4, r0, #0x0
+ add r1, r4, #0x0
+ add r1, #0x80
+ ldr r1, [r1, #0x0]
+ str r1, [sp, #0x4]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394F0
+ add r5, r0, #0x0
+ ldr r0, [sp, #0x4]
+ ldr r0, [r0, #0xc]
+ bl FUN_0206BB1C
+ bl FUN_0206B9AC
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+ ldr r1, _02044650 ; =0x00000006
+ ldr r0, [sp, #0x0]
+ ldr r6, _02044654 ; =0x00000000
+ strh r1, [r0, #0x0]
+ beq _02044648
+_020445E4:
+ ldr r0, [sp, #0x4]
+ ldr r0, [r0, #0xc]
+ bl FUN_0206BB1C
+ add r1, r6, #0x0
+ bl FUN_0206B9B0
+ mov r1, #0x4c
+ mov r2, #0x0
+ add r4, r0, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ bne _0204463E
+ add r0, r4, #0x0
+ mov r1, #0x36
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r5, r0
+ beq _02044638
+ add r0, r4, #0x0
+ mov r1, #0x37
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r5, r0
+ beq _02044638
+ add r0, r4, #0x0
+ mov r1, #0x38
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r5, r0
+ beq _02044638
+ add r0, r4, #0x0
+ mov r1, #0x39
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r5, r0
+ bne _0204463E
+_02044638:
+ ldr r0, [sp, #0x0]
+ strh r6, [r0, #0x0]
+ b _02044648
+_0204463E:
+ add r0, r6, #0x1
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ cmp r6, r7
+ blo _020445E4
+_02044648:
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r3-r7, pc}
+ nop
+_02044650: .word 0x00000006
+_02044654: .word 0x00000000
+
+ thumb_func_start FUN_02044658
+FUN_02044658: ; 0x02044658
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r5, #0x80
+ add r6, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_0206BB1C
+ add r1, r6, #0x0
+ bl FUN_0206B9B0
+ bl FUN_0204A32C
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0204469C
+FUN_0204469C: ; 0x0204469C
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r4, r0, #0x0
+ add r1, r4, #0x0
+ add r1, #0x80
+ ldr r7, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ str r0, [sp, #0x4]
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394F0
+ str r0, [sp, #0x0]
+ ldr r0, [r7, #0xc]
+ bl FUN_0206BB1C
+ bl FUN_0206B9AC
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x8]
+ mov r4, #0x0
+ ldr r0, [sp, #0x4]
+ add r5, r4, #0x0
+ strh r4, [r0, #0x0]
+ ldr r0, [sp, #0x8]
+ cmp r0, #0x0
+ bls _02044726
+_020446EA:
+ ldr r0, [r7, #0xc]
+ bl FUN_0206BB1C
+ add r1, r4, #0x0
+ bl FUN_0206B9B0
+ mov r1, #0x4c
+ mov r2, #0x0
+ add r6, r0, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ bne _0204471A
+ add r0, r6, #0x0
+ mov r1, #0xa0
+ mov r2, #0x0
+ bl FUN_020671BC
+ ldr r1, [sp, #0x0]
+ cmp r0, r1
+ bhi _0204471A
+ add r0, r5, #0x1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+_0204471A:
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ ldr r0, [sp, #0x8]
+ cmp r4, r0
+ blo _020446EA
+_02044726:
+ ldr r0, [sp, #0x4]
+ strh r5, [r0, #0x0]
+ mov r0, #0x0
+ add sp, #0xc
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_02044730
+FUN_02044730: ; 0x02044730
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r1, r5, #0x0
+ add r1, #0x80
+ ldr r6, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r5, r0, #0x0
+ ldr r0, [r6, #0xc]
+ bl FUN_0206BB1C
+ add r1, r5, #0x0
+ bl FUN_0206B9B0
+ mov r2, #0x0
+ mov r1, #0x4c
+ add r5, r0, #0x0
+ strh r2, [r4, #0x0]
+ bl FUN_020671BC
+ cmp r0, #0x0
+ bne _02044786
+ add r0, r5, #0x0
+ mov r1, #0xa0
+ mov r2, #0x0
+ bl FUN_020671BC
+ strh r0, [r4, #0x0]
+_02044786:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204478C
+FUN_0204478C: ; 0x0204478C
+ push {r4-r6, lr}
+ add r6, r0, #0x0
+ add r1, r6, #0x0
+ add r1, #0x80
+ ldr r5, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r6, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ bl ScriptReadHalfword
+ add r6, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r6, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_0206BB1C
+ bl FUN_0206B9AC
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r6, r0
+ blt _020447D2
+ mov r0, #0x0
+ strh r0, [r4, #0x0]
+ pop {r4-r6, pc}
+_020447D2:
+ ldr r0, [r5, #0xc]
+ bl FUN_0206BB1C
+ add r1, r6, #0x0
+ bl FUN_0206B9B0
+ mov r1, #0x4c
+ mov r2, #0x0
+ add r5, r0, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ beq _020447F2
+ mov r0, #0x0
+ strh r0, [r4, #0x0]
+ pop {r4-r6, pc}
+_020447F2:
+ add r0, r5, #0x0
+ bl FUN_02068854
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02044800
+FUN_02044800: ; 0x02044800
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r4, r0, #0x0
+ add r1, r4, #0x0
+ add r1, #0x80
+ ldr r7, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ str r0, [sp, #0x4]
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394F0
+ str r0, [sp, #0x0]
+ ldr r0, [r7, #0xc]
+ bl FUN_0206BB1C
+ bl FUN_0206B9AC
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ ldr r1, _02044884 ; =0x000000FF
+ ldr r0, [sp, #0x4]
+ ldr r5, _02044888 ; =0x00000000
+ strh r1, [r0, #0x0]
+ beq _0204487E
+_02044848:
+ ldr r0, [r7, #0xc]
+ bl FUN_0206BB1C
+ add r1, r5, #0x0
+ bl FUN_0206B9B0
+ mov r1, #0x4c
+ mov r2, #0x0
+ add r4, r0, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ bne _02044874
+ add r0, r4, #0x0
+ bl FUN_02068854
+ ldr r1, [sp, #0x0]
+ cmp r1, r0
+ bne _02044874
+ ldr r0, [sp, #0x4]
+ strh r5, [r0, #0x0]
+ b _0204487E
+_02044874:
+ add r0, r5, #0x1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, r6
+ blo _02044848
+_0204487E:
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+_02044884: .word 0x000000FF
+_02044888: .word 0x00000000
+
+ thumb_func_start FUN_0204488C
+FUN_0204488C: ; 0x0204488C
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r1, r5, #0x0
+ add r1, #0x80
+ ldr r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r5, r0, #0x0
+ ldr r0, [r4, #0xc]
+ bl FUN_0206BB1C
+ add r1, r5, #0x0
+ bl FUN_0206B9B0
+ mov r1, #0x9
+ mov r2, #0x0
+ bl FUN_020671BC
+ strh r0, [r6, #0x0]
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_020448D4
+FUN_020448D4: ; 0x020448D4
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ add r1, r5, #0x0
+ add r1, #0x80
+ ldr r6, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r5, #0x80
+ str r0, [sp, #0x0]
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0x1c]
+ ldr r0, [r0, #0x0]
+ bl FUN_02034824
+ add r7, r0, #0x0
+ ldr r0, [r6, #0xc]
+ bl FUN_0206BB1C
+ ldr r1, [sp, #0x0]
+ bl FUN_0206B9B0
+ mov r1, #0x9
+ mov r2, #0x0
+ add r5, r0, #0x0
+ bl FUN_020671BC
+ add r1, sp, #0x4
+ strh r0, [r1, #0x0]
+ cmp r4, #0x0
+ beq _02044982
+ add r0, r5, #0x0
+ mov r1, #0x6
+ mov r2, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ mov r1, #0x1
+ mov r2, #0xb
+ bl FUN_0206E7B8
+ cmp r0, #0x34
+ bne _0204495A
+ mov r0, #0x96
+ mul r0, r4
+ mov r1, #0x64
+ blx _s32_div_f
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+_0204495A:
+ add r0, r5, #0x0
+ mov r1, #0x9a
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0xb
+ bne _0204496E
+ add r0, r4, #0x1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+_0204496E:
+ add r0, r5, #0x0
+ mov r1, #0x97
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r7, r0
+ bne _02044982
+ add r0, r4, #0x1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+_02044982:
+ add r0, sp, #0x4
+ ldrh r1, [r0, #0x0]
+ add r1, r1, r4
+ strh r1, [r0, #0x0]
+ ldrh r1, [r0, #0x0]
+ cmp r1, #0xff
+ bls _02044994
+ mov r1, #0xff
+ strh r1, [r0, #0x0]
+_02044994:
+ add r0, r5, #0x0
+ mov r1, #0x9
+ add r2, sp, #0x4
+ bl FUN_02067830
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_020449A4
+FUN_020449A4: ; 0x020449A4
+ push {r3-r6, lr}
+ sub sp, #0x4
+ add r5, r0, #0x0
+ add r1, r5, #0x0
+ add r1, #0x80
+ ldr r6, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r5, r0, #0x0
+ ldr r0, [r6, #0xc]
+ bl FUN_0206BB1C
+ add r1, r5, #0x0
+ bl FUN_0206B9B0
+ mov r1, #0x9
+ mov r2, #0x0
+ add r5, r0, #0x0
+ bl FUN_020671BC
+ add r1, sp, #0x0
+ strh r0, [r1, #0x0]
+ ldrh r0, [r1, #0x0]
+ cmp r4, r0
+ bls _020449F8
+ mov r0, #0x0
+ b _020449FA
+_020449F8:
+ sub r0, r0, r4
+_020449FA:
+ strh r0, [r1, #0x0]
+ add r0, r5, #0x0
+ mov r1, #0x9
+ add r2, sp, #0x0
+ bl FUN_02067830
+ mov r0, #0x0
+ add sp, #0x4
+ pop {r3-r6, pc}
+
+ thumb_func_start FUN_02044A0C
+FUN_02044A0C: ; 0x02044A0C
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, #0x80
+ add r6, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_0206BB1C
+ add r1, r7, #0x0
+ bl FUN_0206B9B0
+ add r4, #0x13
+ add r1, r4, #0x0
+ mov r2, #0x0
+ bl FUN_020671BC
+ strh r0, [r6, #0x0]
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02044A6C
+FUN_02044A6C: ; 0x02044A6C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02054DEC
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02044A94
+FUN_02044A94: ; 0x02044A94
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r1, r5, #0x0
+ add r1, #0x80
+ ldr r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r5, r0, #0x0
+ ldr r0, [r4, #0xc]
+ bl FUN_0206BB1C
+ add r1, r5, #0x0
+ bl FUN_0206B9B0
+ add r4, r0, #0x0
+ mov r1, #0xb0
+ mov r2, #0x0
+ bl FUN_020671BC
+ strh r0, [r6, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0xb1
+ mov r2, #0x0
+ bl FUN_020671BC
+ strh r0, [r7, #0x0]
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02044B00
+FUN_02044B00: ; 0x02044B00
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r1, r5, #0x0
+ add r1, #0x80
+ ldr r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ ldr r0, [r4, #0xc]
+ bl FUN_0206BB1C
+ bl FUN_0206B9AC
+ strh r0, [r5, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02044B2C
+FUN_02044B2C: ; 0x02044B2C
+ push {r3-r7, lr}
+ add r4, r0, #0x0
+ add r1, r4, #0x0
+ add r1, #0x80
+ ldr r6, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ str r0, [sp, #0x0]
+ ldr r0, [r6, #0xc]
+ bl FUN_0206BB1C
+ bl FUN_0206B9AC
+ mov r5, #0x0
+ add r7, r0, #0x0
+ add r4, r5, #0x0
+ cmp r7, #0x0
+ ble _02044B7A
+_02044B5A:
+ ldr r0, [r6, #0xc]
+ bl FUN_0206BB1C
+ add r1, r5, #0x0
+ bl FUN_0206B9B0
+ mov r1, #0x4c
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ bne _02044B74
+ add r4, r4, #0x1
+_02044B74:
+ add r5, r5, #0x1
+ cmp r5, r7
+ blt _02044B5A
+_02044B7A:
+ ldr r0, [sp, #0x0]
+ strh r4, [r0, #0x0]
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02044B84
+FUN_02044B84: ; 0x02044B84
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r4, r0, #0x0
+ add r1, r4, #0x0
+ add r1, #0x80
+ ldr r7, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ str r0, [sp, #0x4]
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394F0
+ str r0, [sp, #0x0]
+ ldr r0, [r7, #0xc]
+ bl FUN_0206BB1C
+ bl FUN_0206B9AC
+ mov r5, #0x0
+ add r4, r5, #0x0
+ str r0, [sp, #0x8]
+ cmp r0, #0x0
+ ble _02044C00
+_02044BC8:
+ ldr r0, [sp, #0x0]
+ cmp r5, r0
+ beq _02044BF8
+ ldr r0, [r7, #0xc]
+ bl FUN_0206BB1C
+ add r1, r5, #0x0
+ bl FUN_0206B9B0
+ mov r1, #0x4c
+ mov r2, #0x0
+ add r6, r0, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ bne _02044BF8
+ add r0, r6, #0x0
+ mov r1, #0xa2
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ beq _02044BF8
+ add r4, r4, #0x1
+_02044BF8:
+ ldr r0, [sp, #0x8]
+ add r5, r5, #0x1
+ cmp r5, r0
+ blt _02044BC8
+_02044C00:
+ ldr r0, [sp, #0x4]
+ strh r4, [r0, #0x0]
+ mov r0, #0x0
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02044C0C
+FUN_02044C0C: ; 0x02044C0C
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r4, r0, #0x0
+ add r1, r4, #0x0
+ add r1, #0x80
+ ldr r7, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ str r0, [sp, #0x0]
+ ldr r0, [r7, #0xc]
+ bl FUN_02022510
+ str r0, [sp, #0x4]
+ ldr r0, [r7, #0xc]
+ bl FUN_0206BB1C
+ bl FUN_0206B9AC
+ mov r5, #0x0
+ add r4, r5, #0x0
+ str r0, [sp, #0x8]
+ cmp r0, #0x0
+ ble _02044C76
+_02044C44:
+ ldr r0, [r7, #0xc]
+ bl FUN_0206BB1C
+ add r1, r5, #0x0
+ bl FUN_0206B9B0
+ mov r1, #0x4c
+ mov r2, #0x0
+ add r6, r0, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ bne _02044C6E
+ add r0, r6, #0x0
+ mov r1, #0xa2
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ beq _02044C6E
+ add r4, r4, #0x1
+_02044C6E:
+ ldr r0, [sp, #0x8]
+ add r5, r5, #0x1
+ cmp r5, r0
+ blt _02044C44
+_02044C76:
+ ldr r0, [sp, #0x4]
+ bl FUN_0206B57C
+ add r1, r4, r0
+ ldr r0, [sp, #0x0]
+ strh r1, [r0, #0x0]
+ mov r0, #0x0
+ add sp, #0xc
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_02044C88
+FUN_02044C88: ; 0x02044C88
+ push {r3-r7, lr}
+ add r4, r0, #0x0
+ add r1, r4, #0x0
+ add r1, #0x80
+ ldr r6, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ str r0, [sp, #0x0]
+ ldr r0, [r6, #0xc]
+ bl FUN_0206BB1C
+ bl FUN_0206B9AC
+ mov r5, #0x0
+ add r7, r0, #0x0
+ add r4, r5, #0x0
+ cmp r7, #0x0
+ ble _02044CD6
+_02044CB6:
+ ldr r0, [r6, #0xc]
+ bl FUN_0206BB1C
+ add r1, r5, #0x0
+ bl FUN_0206B9B0
+ mov r1, #0x4c
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ beq _02044CD0
+ add r4, r4, #0x1
+_02044CD0:
+ add r5, r5, #0x1
+ cmp r5, r7
+ blt _02044CB6
+_02044CD6:
+ ldr r0, [sp, #0x0]
+ strh r4, [r0, #0x0]
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02044CE0
+FUN_02044CE0: ; 0x02044CE0
+ push {r3-r7, lr}
+ add r4, r0, #0x0
+ add r1, r4, #0x0
+ add r1, #0x80
+ ldr r5, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ str r0, [sp, #0x0]
+ ldr r0, [r5, #0xc]
+ bl FUN_0206BB1C
+ bl FUN_0206B9AC
+ lsl r0, r0, #0x10
+ lsr r6, r0, #0x10
+ ldr r4, _02044D40 ; =0x00000000
+ ldr r0, [sp, #0x0]
+ strh r4, [r0, #0x0]
+ beq _02044D3C
+ mov r7, #0x99
+_02044D12:
+ ldr r0, [r5, #0xc]
+ bl FUN_0206BB1C
+ add r1, r4, #0x0
+ bl FUN_0206B9B0
+ add r1, r7, #0x0
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ beq _02044D32
+ ldr r0, [sp, #0x0]
+ mov r1, #0x1
+ strh r1, [r0, #0x0]
+ b _02044D3C
+_02044D32:
+ add r0, r4, #0x1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, r6
+ blo _02044D12
+_02044D3C:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+_02044D40: .word 0x00000000
+
+ thumb_func_start FUN_02044D44
+FUN_02044D44: ; 0x02044D44
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_0206BB1C
+ add r1, r6, #0x0
+ bl FUN_0206B9B0
+ mov r1, #0x6f
+ mov r2, #0x0
+ bl FUN_020671BC
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02044D8C
+FUN_02044D8C: ; 0x02044D8C
+ push {r4-r6, lr}
+ add r4, r0, #0x0
+ add r1, r4, #0x0
+ add r1, #0x80
+ ldr r6, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394F0
+ add r4, r0, #0x0
+ ldr r0, [r6, #0xc]
+ bl FUN_0206BB1C
+ add r1, r4, #0x0
+ bl FUN_0206B9B0
+ mov r1, #0x4c
+ mov r2, #0x0
+ add r6, r0, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ beq _02044DDA
+ mov r0, #0x0
+ strh r0, [r5, #0x0]
+ pop {r4-r6, pc}
+_02044DDA:
+ mov r4, #0x0
+ add r0, r6, #0x0
+ mov r1, #0x36
+ add r2, r4, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ beq _02044DF0
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+_02044DF0:
+ add r0, r6, #0x0
+ mov r1, #0x37
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ beq _02044E04
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+_02044E04:
+ add r0, r6, #0x0
+ mov r1, #0x38
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ beq _02044E18
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+_02044E18:
+ add r0, r6, #0x0
+ mov r1, #0x39
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ beq _02044E2C
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+_02044E2C:
+ strh r4, [r5, #0x0]
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02044E34
+FUN_02044E34: ; 0x02044E34
+ push {r4-r6, lr}
+ add r4, r0, #0x0
+ add r1, r4, #0x0
+ add r1, #0x80
+ ldr r5, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394F0
+ add r4, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_0206BB1C
+ add r1, r6, #0x0
+ bl FUN_0206B9B0
+ add r1, r4, #0x0
+ bl FUN_020699A4
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02044E78
+FUN_02044E78: ; 0x02044E78
+ push {r3-r7, lr}
+ add r4, r0, #0x0
+ add r1, r4, #0x0
+ add r1, #0x80
+ ldr r5, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394F0
+ add r4, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_0206BB1C
+ add r1, r7, #0x0
+ bl FUN_0206B9B0
+ add r4, #0x36
+ add r1, r4, #0x0
+ mov r2, #0x0
+ bl FUN_020671BC
+ strh r0, [r6, #0x0]
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02044ED8
+FUN_02044ED8: ; 0x02044ED8
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r1, r5, #0x0
+ add r1, #0x80
+ ldr r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r5, r0, #0x0
+ ldr r0, [r4, #0xc]
+ bl FUN_0206BB1C
+ add r1, r5, #0x0
+ bl FUN_0206B9B0
+ mov r1, #0x6
+ mov r2, #0x0
+ bl FUN_020671BC
+ strh r0, [r6, #0x0]
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02044F20
+FUN_02044F20: ; 0x02044F20
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r1, r5, #0x0
+ add r1, #0x80
+ ldr r4, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ add r5, r0, #0x0
+ ldr r0, [r4, #0xc]
+ bl FUN_0206BB1C
+ add r1, r5, #0x0
+ bl FUN_0206B9B0
+ mov r2, #0x0
+ add r1, sp, #0x0
+ strh r2, [r1, #0x0]
+ mov r1, #0x6
+ add r2, sp, #0x0
+ bl FUN_02067830
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02044F58
+FUN_02044F58: ; 0x02044F58
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r4, r0, #0x0
+ add r1, r4, #0x0
+ add r1, #0x80
+ ldr r7, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ str r0, [sp, #0x4]
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394F0
+ str r0, [sp, #0x0]
+ ldr r0, [r7, #0xc]
+ bl FUN_0206BB1C
+ bl FUN_0206B9AC
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ ldr r5, _02044FE4 ; =0x00000000
+ ldr r0, [sp, #0x4]
+ strh r5, [r0, #0x0]
+ beq _02044FDE
+_02044F9E:
+ ldr r0, [r7, #0xc]
+ bl FUN_0206BB1C
+ add r1, r5, #0x0
+ bl FUN_0206B9B0
+ mov r1, #0x4c
+ mov r2, #0x0
+ add r4, r0, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ bne _02044FD4
+ add r0, r4, #0x0
+ mov r1, #0x5
+ mov r2, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ ldr r0, [sp, #0x0]
+ cmp r0, r1
+ bne _02044FD4
+ ldr r0, [sp, #0x4]
+ mov r1, #0x1
+ strh r1, [r0, #0x0]
+ b _02044FDE
+_02044FD4:
+ add r0, r5, #0x1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, r6
+ blo _02044F9E
+_02044FDE:
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+_02044FE4: .word 0x00000000
+
+ thumb_func_start FUN_02044FE8
+FUN_02044FE8: ; 0x02044FE8
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_0206BB1C
+ add r1, r4, #0x0
+ bl FUN_0206B9B0
+ mov r4, #0x0
+ add r6, r0, #0x0
+ add r5, r4, #0x0
+ add r7, r4, #0x0
+_0204502A:
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ add r1, r7, #0x0
+ bl FUN_0207FC5C
+ add r1, r0, #0x0
+ add r0, r6, #0x0
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ beq _02045048
+ add r0, r5, #0x1
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+_02045048:
+ add r0, r4, #0x1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #0x50
+ blo _0204502A
+ ldr r0, [sp, #0x0]
+ strh r5, [r0, #0x0]
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204505C
+FUN_0204505C: ; 0x0204505C
+ push {r3-r7, lr}
+ sub sp, #0x10
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_0206BB1C
+ bl FUN_0206B9AC
+ lsl r0, r0, #0x10
+ add r4, #0x80
+ lsr r6, r0, #0x10
+ ldr r0, [r4, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_0206BB1C
+ str r0, [sp, #0xc]
+ mov r0, #0x0
+ str r0, [sp, #0x8]
+ str r0, [sp, #0x4]
+_0204509A:
+ mov r5, #0x0
+ cmp r6, #0x0
+ bls _020450E8
+ ldr r0, [sp, #0x8]
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+_020450A6:
+ ldr r0, [sp, #0xc]
+ add r1, r5, #0x0
+ bl FUN_0206B9B0
+ mov r1, #0x4c
+ mov r2, #0x0
+ add r4, r0, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ bne _020450E8
+ add r0, r7, #0x0
+ mov r1, #0x0
+ bl FUN_0207FC5C
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ beq _020450DE
+ ldr r0, [sp, #0x4]
+ add r0, r0, #0x1
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x4]
+ b _020450E8
+_020450DE:
+ add r0, r5, #0x1
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ cmp r5, r6
+ blo _020450A6
+_020450E8:
+ ldr r0, [sp, #0x8]
+ add r0, r0, #0x1
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x8]
+ cmp r0, #0x50
+ blo _0204509A
+ ldr r1, [sp, #0x4]
+ ldr r0, [sp, #0x0]
+ strh r1, [r0, #0x0]
+ mov r0, #0x0
+ add sp, #0x10
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02045104
+FUN_02045104: ; 0x02045104
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r5, #0x80
+ add r6, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_0206BB1C
+ add r1, r7, #0x0
+ bl FUN_0206B9B0
+ add r5, r0, #0x0
+ lsl r0, r6, #0x18
+ lsr r0, r0, #0x18
+ mov r1, #0x0
+ bl FUN_0207FC5C
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ mov r2, #0x0
+ bl FUN_020671BC
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02045170
+FUN_02045170: ; 0x02045170
+ push {r3-r6, lr}
+ sub sp, #0x4
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r4, r0, #0x0
+ mov r1, #0x1
+ add r0, sp, #0x0
+ add r5, #0x80
+ strb r1, [r0, #0x0]
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_0206BB1C
+ add r1, r6, #0x0
+ bl FUN_0206B9B0
+ add r5, r0, #0x0
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ mov r1, #0x0
+ bl FUN_0207FC5C
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r2, sp, #0x0
+ bl FUN_02067830
+ mov r0, #0x0
+ add sp, #0x4
+ pop {r3-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_020451D0
+FUN_020451D0: ; 0x020451D0
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_0206BB1C
+ bl FUN_0206B9AC
+ lsl r0, r0, #0x10
+ add r4, #0x80
+ lsr r6, r0, #0x10
+ ldr r0, [r4, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_0206BB1C
+ add r7, r0, #0x0
+ mov r0, #0x0
+ str r0, [sp, #0x4]
+_0204520C:
+ mov r5, #0x0
+ cmp r6, #0x0
+ bls _0204524C
+_02045212:
+ add r0, r7, #0x0
+ add r1, r5, #0x0
+ bl FUN_0206B9B0
+ mov r1, #0x4c
+ mov r2, #0x0
+ add r4, r0, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ beq _02045242
+ add r0, r4, #0x0
+ mov r1, #0x3
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ beq _02045242
+ ldr r0, [sp, #0x0]
+ mov r1, #0x1
+ strh r1, [r0, #0x0]
+ add sp, #0x8
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_02045242:
+ add r0, r5, #0x1
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ cmp r5, r6
+ blo _02045212
+_0204524C:
+ ldr r0, [sp, #0x4]
+ add r0, r0, #0x1
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x4]
+ cmp r0, #0x50
+ blo _0204520C
+ ldr r1, [sp, #0x0]
+ mov r0, #0x0
+ strh r0, [r1, #0x0]
+ add sp, #0x8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02045264
+FUN_02045264: ; 0x02045264
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02045268
+FUN_02045268: ; 0x02045268
+ push {r3-r7, lr}
+ add r4, r0, #0x0
+ add r1, r4, #0x0
+ add r1, #0x80
+ ldr r6, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ mov r4, #0x0
+ ldr r7, _020452B0 ; =0x020F450C
+ str r0, [sp, #0x0]
+ add r5, r4, #0x0
+_02045288:
+ ldr r0, [r6, #0xc]
+ bl FUN_0206F158
+ lsl r1, r4, #0x2
+ ldrh r1, [r7, r1]
+ mov r2, #0x4
+ bl FUN_0206EEF8
+ add r0, r5, r0
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0x7
+ blo _02045288
+ ldr r0, [sp, #0x0]
+ strh r5, [r0, #0x0]
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+_020452B0: .word 0x020F450C
+
+ thumb_func_start FUN_020452B4
+FUN_020452B4: ; 0x020452B4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394F0
+ mov r5, #0x0
+ ldr r2, _02045300 ; =0x020F450C
+ strh r5, [r4, #0x0]
+_020452E0:
+ lsl r3, r5, #0x2
+ ldrh r1, [r2, r3]
+ cmp r0, r1
+ bne _020452F0
+ ldr r0, _02045304 ; =0x020F450E
+ ldrh r0, [r0, r3]
+ strh r0, [r4, #0x0]
+ b _020452FA
+_020452F0:
+ add r1, r5, #0x1
+ lsl r1, r1, #0x10
+ lsr r5, r1, #0x10
+ cmp r5, #0x7
+ blo _020452E0
+_020452FA:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ nop
+_02045300: .word 0x020F450C
+_02045304: .word 0x020F450E
+
+ thumb_func_start FUN_02045308
+FUN_02045308: ; 0x02045308
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r4, r0, #0x0
+ add r1, r4, #0x0
+ add r1, #0x80
+ ldr r7, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ str r0, [sp, #0x8]
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ str r0, [sp, #0x4]
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394F0
+ str r0, [sp, #0x0]
+ mov r4, #0x0
+ ldr r0, [sp, #0x8]
+ add r6, r4, #0x0
+ strh r4, [r0, #0x0]
+ ldr r0, [sp, #0x4]
+ strh r4, [r0, #0x0]
+_02045358:
+ ldr r0, [r7, #0xc]
+ lsl r5, r4, #0x2
+ bl FUN_0206F158
+ ldr r1, _02045394 ; =0x020F450C
+ mov r2, #0x4
+ ldrh r1, [r1, r5]
+ bl FUN_0206EEF8
+ add r0, r6, r0
+ lsl r0, r0, #0x10
+ lsr r6, r0, #0x10
+ ldr r0, [sp, #0x0]
+ cmp r6, r0
+ blo _02045384
+ ldr r0, _02045394 ; =0x020F450C
+ ldrh r1, [r0, r5]
+ ldr r0, [sp, #0x8]
+ strh r1, [r0, #0x0]
+ ldr r0, [sp, #0x4]
+ strh r4, [r0, #0x0]
+ b _0204538E
+_02045384:
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0x7
+ blo _02045358
+_0204538E:
+ mov r0, #0x0
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+_02045394: .word 0x020F450C
+
+ thumb_func_start FUN_02045398
+FUN_02045398: ; 0x02045398
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_0204539C
+FUN_0204539C: ; 0x0204539C
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_020453A0
+FUN_020453A0: ; 0x020453A0
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ ldr r1, _020453EC ; =0x020F4528
+ lsl r2, r4, #0x2
+ ldrh r1, [r1, r2]
+ strh r1, [r6, #0x0]
+ ldr r1, _020453F0 ; =0x020F452A
+ ldrh r1, [r1, r2]
+ strh r1, [r0, #0x0]
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+_020453EC: .word 0x020F4528
+_020453F0: .word 0x020F452A
+
+ thumb_func_start FUN_020453F4
+FUN_020453F4: ; 0x020453F4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02024DA0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02024D64
+ strh r0, [r5, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02045424
+FUN_02045424: ; 0x02045424
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02024DA0
+ bl FUN_02024D80
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_02045438
+FUN_02045438: ; 0x02045438
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02034E30
+ bl FUN_02034E20
+ bl FUN_02055474
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02045468
+FUN_02045468: ; 0x02045468
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02034E30
+ bl FUN_02034E20
+ mov r1, #0x1
+ bl FUN_02055488
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02045484
+FUN_02045484: ; 0x02045484
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r6, r0, #0x0
+ cmp r4, #0x8
+ blo _020454B6
+ bl ErrorHandling
+_020454B6:
+ add r5, #0x80
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020238F4
+ add r1, r4, #0x0
+ bl FUN_020239D0
+ strh r0, [r6, #0x0]
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_020454CC
+FUN_020454CC: ; 0x020454CC
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r4, r0, #0x0
+ cmp r4, #0x8
+ blo _020454EA
+ bl ErrorHandling
+_020454EA:
+ add r5, #0x80
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020238F4
+ add r1, r4, #0x0
+ bl FUN_020239E4
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02045500
+FUN_02045500: ; 0x02045500
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205ECE0
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204552C
+FUN_0204552C: ; 0x0204552C
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r6, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ mov r4, #0x0
+ ldr r7, _02045578 ; =0x020F4574
+ str r0, [sp, #0x0]
+ add r5, r4, #0x0
+_02045548:
+ add r0, r6, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020238F4
+ ldrb r1, [r7, r4]
+ bl FUN_020239D0
+ cmp r0, #0x1
+ bne _02045564
+ add r0, r5, #0x1
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+_02045564:
+ add r0, r4, #0x1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #0x8
+ blo _02045548
+ ldr r0, [sp, #0x0]
+ strh r5, [r0, #0x0]
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ nop
+_02045578: .word 0x020F4574
+
+ thumb_func_start FUN_0204557C
+FUN_0204557C: ; 0x0204557C
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205ECD4
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_02045590
+FUN_02045590: ; 0x02045590
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205ED3C
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020455BC
+FUN_020455BC: ; 0x020455BC
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205ED1C
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_020455D0
+FUN_020455D0: ; 0x020455D0
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205ED2C
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_020455E4
+FUN_020455E4: ; 0x020455E4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205ED6C
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02045610
+FUN_02045610: ; 0x02045610
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205ED4C
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_02045624
+FUN_02045624: ; 0x02045624
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205ED5C
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_02045638
+FUN_02045638: ; 0x02045638
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r5, #0x80
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205ED0C
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02045664
+FUN_02045664: ; 0x02045664
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205ECFC
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_02045678
+FUN_02045678: ; 0x02045678
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ ldr r2, [r5, #0x8]
+ add r4, r0, #0x0
+ add r1, r2, #0x1
+ str r1, [r5, #0x8]
+ ldrb r1, [r2, #0x0]
+ cmp r1, #0x0
+ beq _020456A6
+ cmp r1, #0x1
+ beq _0204569E
+ cmp r1, #0x2
+ beq _020456AE
+ b _020456CC
+_0204569E:
+ mov r1, #0x1
+ bl FUN_0205F264
+ b _020456D0
+_020456A6:
+ mov r1, #0x0
+ bl FUN_0205F264
+ b _020456D0
+_020456AE:
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x2
+ bl FUN_0205F264
+ strh r0, [r5, #0x0]
+ b _020456D0
+_020456CC:
+ bl ErrorHandling
+_020456D0:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_020456D4
+FUN_020456D4: ; 0x020456D4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ ldr r2, [r5, #0x8]
+ add r4, r0, #0x0
+ add r1, r2, #0x1
+ str r1, [r5, #0x8]
+ ldrb r1, [r2, #0x0]
+ cmp r1, #0x0
+ beq _02045700
+ cmp r1, #0x1
+ beq _020456FA
+ cmp r1, #0x2
+ beq _02045706
+ b _02045722
+_020456FA:
+ bl FUN_0205F274
+ b _02045726
+_02045700:
+ bl FUN_0205F284
+ b _02045726
+_02045706:
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0205F294
+ strh r0, [r5, #0x0]
+ b _02045726
+_02045722:
+ bl ErrorHandling
+_02045726:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204572C
+FUN_0204572C: ; 0x0204572C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ ldr r2, [r5, #0x8]
+ add r4, r0, #0x0
+ add r1, r2, #0x1
+ str r1, [r5, #0x8]
+ ldrb r1, [r2, #0x0]
+ cmp r1, #0x0
+ beq _02045758
+ cmp r1, #0x1
+ beq _02045752
+ cmp r1, #0x2
+ beq _0204575E
+ b _0204577A
+_02045752:
+ bl FUN_0205F2A4
+ b _0204577E
+_02045758:
+ bl FUN_0205F2B4
+ b _0204577E
+_0204575E:
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0205F2C4
+ strh r0, [r5, #0x0]
+ b _0204577E
+_0204577A:
+ bl ErrorHandling
+_0204577E:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02045784
+FUN_02045784: ; 0x02045784
+ push {r3-r7, lr}
+ add r4, r0, #0x0
+ add r1, r4, #0x0
+ add r1, #0x80
+ ldr r5, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_0206F158
+ add r1, r6, #0x0
+ add r2, r7, #0x0
+ mov r3, #0x4
+ bl FUN_0206ED38
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_020457DC
+FUN_020457DC: ; 0x020457DC
+ push {r3-r7, lr}
+ add r4, r0, #0x0
+ add r1, r4, #0x0
+ add r1, #0x80
+ ldr r5, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_0206F158
+ add r1, r6, #0x0
+ add r2, r7, #0x0
+ mov r3, #0x4
+ bl FUN_0206EDD4
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02045834
+FUN_02045834: ; 0x02045834
+ push {r3-r7, lr}
+ add r4, r0, #0x0
+ add r1, r4, #0x0
+ add r1, #0x80
+ ldr r5, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_0206F158
+ add r1, r6, #0x0
+ add r2, r7, #0x0
+ mov r3, #0x4
+ bl FUN_0206ED24
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0204588C
+FUN_0204588C: ; 0x0204588C
+ push {r3-r7, lr}
+ add r4, r0, #0x0
+ add r1, r4, #0x0
+ add r1, #0x80
+ ldr r5, [r1, #0x0]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_0206F158
+ add r1, r6, #0x0
+ add r2, r7, #0x0
+ mov r3, #0xb
+ bl FUN_0206EE50
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_020458E4
+FUN_020458E4: ; 0x020458E4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02054CB0
+ strh r0, [r5, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02045918
+FUN_02045918: ; 0x02045918
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x5
+ mov r2, #0xb
+ bl FUN_0206E7B8
+ strh r0, [r5, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02045950
+FUN_02045950: ; 0x02045950
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02045954
+FUN_02045954: ; 0x02045954
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02045958
+FUN_02045958: ; 0x02045958
+ push {r4-r6, lr}
+ add r4, r0, #0x0
+ add r1, r4, #0x0
+ add r1, #0x80
+ ldr r1, [r1, #0x0]
+ ldr r5, [r1, #0xc]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02026CC4
+ add r1, r6, #0x0
+ bl FUN_02025D6C
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_020459AC
+FUN_020459AC: ; 0x020459AC
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020459E8
+FUN_020459E8: ; 0x020459E8
+ push {r4-r6, lr}
+ add r4, r0, #0x0
+ add r1, r4, #0x0
+ add r1, #0x80
+ ldr r1, [r1, #0x0]
+ ldr r5, [r1, #0xc]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02026CC4
+ add r1, r6, #0x0
+ bl FUN_02025D94
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02045A3C
+FUN_02045A3C: ; 0x02045A3C
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02045A78
+FUN_02045A78: ; 0x02045A78
+ push {r4-r6, lr}
+ add r4, r0, #0x0
+ add r1, r4, #0x0
+ add r1, #0x80
+ ldr r1, [r1, #0x0]
+ ldr r5, [r1, #0xc]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02026CC4
+ add r1, r6, #0x0
+ bl FUN_02026298
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02045ACC
+FUN_02045ACC: ; 0x02045ACC
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02045B08
+FUN_02045B08: ; 0x02045B08
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02045B44
+FUN_02045B44: ; 0x02045B44
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02045B80
+FUN_02045B80: ; 0x02045B80
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r1, r5, #0x0
+ add r1, #0x80
+ ldr r1, [r1, #0x0]
+ ldr r4, [r1, #0xc]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r5, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_020394B8
+ add r0, r4, #0x0
+ bl FUN_02026CC4
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02045BC8
+FUN_02045BC8: ; 0x02045BC8
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02045C04
+FUN_02045C04: ; 0x02045C04
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02045C40
+FUN_02045C40: ; 0x02045C40
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02045C7C
+FUN_02045C7C: ; 0x02045C7C
+ push {r3-r7, lr}
+ add r4, r0, #0x0
+ add r1, r4, #0x0
+ add r1, #0x80
+ ldr r1, [r1, #0x0]
+ ldr r5, [r1, #0xc]
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02026CC4
+ add r1, r6, #0x0
+ add r2, r7, #0x0
+ bl FUN_020260C4
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02045CD4
+FUN_02045CD4: ; 0x02045CD4
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02045D10
+FUN_02045D10: ; 0x02045D10
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02045D4C
+FUN_02045D4C: ; 0x02045D4C
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r0, r4, #0x0
+ bl ScriptReadHalfword
+ add r4, #0x80
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_020394B8
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02045D88
+FUN_02045D88: ; 0x02045D88
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ mov r1, #0x13
+ bl FUN_02039438
+ add r1, r5, #0x0
+ add r1, #0x80
+ lsl r2, r4, #0x18
+ add r6, r0, #0x0
+ ldr r1, [r1, #0x0]
+ mov r0, #0x20
+ lsr r2, r2, #0x18
+ bl FUN_02037CF0
+ str r0, [r6, #0x0]
+ ldr r1, _02045DCC ; =FUN_0203BC04
+ add r0, r5, #0x0
+ bl SetupNativeScript
+ mov r0, #0x1
+ pop {r4-r6, pc}
+ nop
+_02045DCC: .word FUN_0203BC04
+
+ thumb_func_start FUN_02045DD0
+FUN_02045DD0: ; 0x02045DD0
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r4, #0x80
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ mov r1, #0x13
+ bl FUN_02039438
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ bne _02045DFC
+ bl ErrorHandling
+_02045DFC:
+ ldr r0, [r4, #0x0]
+ bl FUN_02037D5C
+ strh r0, [r5, #0x0]
+ ldrh r0, [r5, #0x0]
+ cmp r0, #0x4
+ bne _02045E0E
+ mov r0, #0xff
+ strh r0, [r5, #0x0]
+_02045E0E:
+ ldr r0, [r4, #0x0]
+ bl FUN_02016A18
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02045E1C
+FUN_02045E1C: ; 0x02045E1C
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02045E20
+FUN_02045E20: ; 0x02045E20
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r5, #0x80
+ add r6, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_0206BB1C
+ add r1, r6, #0x0
+ bl FUN_0206B9B0
+ mov r1, #0x20
+ bl FUN_02088DF8
+ add r5, r0, #0x0
+ bl FUN_02088EF8
+ strh r0, [r4, #0x0]
+ add r0, r5, #0x0
+ bl FUN_02016A18
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02045E74
+FUN_02045E74: ; 0x02045E74
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ add r0, #0x80
+ add r7, r1, #0x0
+ ldr r0, [r0, #0x0]
+ mov r1, #0x13
+ str r2, [sp, #0x0]
+ add r6, r3, #0x0
+ bl FUN_02039438
+ str r0, [sp, #0x4]
+ mov r0, #0x20
+ bl FUN_02088DD8
+ add r4, r0, #0x0
+ ldr r0, [sp, #0x4]
+ str r4, [r0, #0x0]
+ ldr r0, [sp, #0x0]
+ str r0, [r4, #0x0]
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020377AC
+ bl FUN_020238F4
+ str r0, [r4, #0x4]
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl LoadPlayerDataAddress
+ str r0, [r4, #0x8]
+ str r6, [r4, #0xc]
+ add r0, r5, #0x0
+ strb r7, [r4, #0x15]
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ add r1, r4, #0x0
+ bl FUN_02038864
+ ldr r1, _02045EDC ; =FUN_0203BC04
+ add r0, r5, #0x0
+ bl SetupNativeScript
+ add r0, r6, #0x0
+ bl FUN_02016A18
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+_02045EDC: .word FUN_0203BC04
+
+ thumb_func_start FUN_02045EE0
+FUN_02045EE0: ; 0x02045EE0
+ mov r0, #0x1
+ bx lr
+
+ thumb_func_start FUN_02045EE4
+FUN_02045EE4: ; 0x02045EE4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_0206BB1C
+ add r1, r4, #0x0
+ bl FUN_0206B9B0
+ add r4, r0, #0x0
+ mov r1, #0x20
+ bl FUN_02088DF8
+ add r3, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x1
+ add r2, r4, #0x0
+ bl FUN_02045E74
+ mov r0, #0x1
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02045F24
+FUN_02045F24: ; 0x02045F24
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394F0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_0206BB1C
+ add r1, r6, #0x0
+ bl FUN_0206B9B0
+ add r6, r0, #0x0
+ mov r0, #0x20
+ mov r1, #0x4
+ bl FUN_02016998
+ add r3, r0, #0x0
+ ldr r0, _02045F80 ; =0x0000FFFF
+ strh r4, [r3, #0x0]
+ strh r0, [r3, #0x2]
+ add r0, r5, #0x0
+ mov r1, #0x0
+ add r2, r6, #0x0
+ bl FUN_02045E74
+ mov r0, #0x1
+ pop {r4-r6, pc}
+ .balign 4
+_02045F80: .word 0x0000FFFF
+
+ thumb_func_start FUN_02045F84
+FUN_02045F84: ; 0x02045F84
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02045F88
+FUN_02045F88: ; 0x02045F88
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r4, #0x80
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ mov r1, #0x13
+ bl FUN_02039438
+ ldr r4, [r0, #0x0]
+ cmp r4, #0x0
+ bne _02045FB2
+ bl ErrorHandling
+_02045FB2:
+ ldrb r0, [r4, #0x16]
+ cmp r0, #0x0
+ bne _02045FBC
+ mov r0, #0x0
+ b _02045FBE
+_02045FBC:
+ mov r0, #0xff
+_02045FBE:
+ strh r0, [r5, #0x0]
+ add r0, r4, #0x0
+ bl FUN_02088DF0
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02045FCC
+FUN_02045FCC: ; 0x02045FCC
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B8
+ add r4, #0x80
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ mov r1, #0x13
+ bl FUN_02039438
+ ldr r4, [r0, #0x0]
+ cmp r4, #0x0
+ bne _02045FF6
+ bl ErrorHandling
+_02045FF6:
+ ldrb r0, [r4, #0x16]
+ cmp r0, #0x0
+ bne _02046000
+ mov r0, #0x0
+ b _02046002
+_02046000:
+ mov r0, #0xff
+_02046002:
+ strh r0, [r5, #0x0]
+ add r0, r4, #0x0
+ bl FUN_02088DF0
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02046010
+FUN_02046010: ; 0x02046010
+ push {r3, lr}
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204601C
+FUN_0204601C: ; 0x0204601C
+ push {r3, lr}
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02046028
+FUN_02046028: ; 0x02046028
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_0204602C
+FUN_0204602C: ; 0x0204602C
+ mov r0, #0x0
+ bx lr
diff --git a/asm/secure.s b/asm/secure.s
index 7f3a678c..18313c93 100644
--- a/asm/secure.s
+++ b/asm/secure.s
@@ -1,5 +1,21 @@
/* secure.s TODO: Disassemble */
+ .include "asm/macros.inc"
.section .text
-.incbin "baserom.nds", 0x4000, 0x800
+.incbin "baserom.nds", 0x4000, 0x19E
+
+ non_word_aligned_thumb_func_start FUN_0200019E
+FUN_0200019E: ; 0x0200019E
+ swi 13
+ bx lr
+ thumb_func_end FUN_0200019E
+
+.incbin "baserom.nds", 0x41A2, 0x450
+
+ non_word_aligned_thumb_func_start FUN_020005F2
+FUN_020005F2:
+ swi 3
+ bx lr
+
+.incbin "baserom.nds", 0x45F6, 0x20A
diff --git a/asm/unk_02000E0C.s b/asm/unk_02000E0C.s
new file mode 100644
index 00000000..506ff81a
--- /dev/null
+++ b/asm/unk_02000E0C.s
@@ -0,0 +1,2758 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ thumb_func_start FUN_02000E0C
+FUN_02000E0C: ; 0x02000E0C
+ push {r3, lr}
+ ldr r0, _02000E74 ; =0x02106FA0
+ ldr r1, [r0, #0xc]
+ cmp r1, #0x0
+ bne _02000E4A
+ ldr r1, [r0, #0x14]
+ cmp r1, #0x0
+ beq _02000E70
+ mov r1, #0x0
+ ldr r0, [r0, #0x10]
+ mvn r1, r1
+ cmp r0, r1
+ beq _02000E2C
+ mov r1, #0x0
+ bl FUN_02005FDC
+_02000E2C:
+ ldr r0, _02000E74 ; =0x02106FA0
+ mov r2, #0x0
+ ldr r1, [r0, #0x10]
+ str r1, [r0, #0x8]
+ ldr r0, [r0, #0x14]
+ ldr r1, _02000E78 ; =0x02106FB8
+ bl FUN_02006234
+ ldr r1, _02000E74 ; =0x02106FA0
+ str r0, [r1, #0xc]
+ mov r0, #0x0
+ mvn r0, r0
+ str r0, [r1, #0x10]
+ mov r0, #0x0
+ str r0, [r1, #0x14]
+_02000E4A:
+ ldr r0, _02000E74 ; =0x02106FA0
+ ldr r0, [r0, #0xc]
+ bl FUN_02006290
+ cmp r0, #0x0
+ beq _02000E70
+ ldr r0, _02000E74 ; =0x02106FA0
+ ldr r0, [r0, #0xc]
+ bl FUN_02006260
+ ldr r0, _02000E74 ; =0x02106FA0
+ mov r1, #0x0
+ str r1, [r0, #0xc]
+ ldr r0, [r0, #0x8]
+ sub r1, r1, #0x1
+ cmp r0, r1
+ beq _02000E70
+ bl FUN_02005F60
+_02000E70:
+ pop {r3, pc}
+ nop
+_02000E74: .word 0x02106FA0
+_02000E78: .word 0x02106FB8
+
+ thumb_func_start FUN_02000E7C
+FUN_02000E7C: ; 0x02000E7C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, _02000E98 ; =0x02106FA0
+ add r4, r1, #0x0
+ ldr r0, [r0, #0x14]
+ cmp r0, #0x0
+ beq _02000E8E
+ bl ErrorHandling
+_02000E8E:
+ ldr r0, _02000E98 ; =0x02106FA0
+ str r5, [r0, #0x10]
+ str r4, [r0, #0x14]
+ pop {r3-r5, pc}
+ nop
+_02000E98: .word 0x02106FA0
+
+ thumb_func_start FUN_02000E9C
+FUN_02000E9C: ; 0x02000E9C
+ push {r3, lr}
+ bl FUN_0202FB80
+ mov r0, #0x1
+ add r1, r0, #0x0
+ blx OS_WaitIrq
+ ldr r0, _02000EC4 ; =0x021C48B8
+ ldr r1, [r0, #0x2c]
+ add r1, r1, #0x1
+ str r1, [r0, #0x2c]
+ mov r1, #0x0
+ str r1, [r0, #0x30]
+ ldr r1, [r0, #0x0]
+ cmp r1, #0x0
+ beq _02000EC0
+ ldr r0, [r0, #0x4]
+ blx r1
+_02000EC0:
+ pop {r3, pc}
+ nop
+_02000EC4: .word 0x021C48B8
+
+ thumb_func_start FUN_02000EC8
+FUN_02000EC8: ; 0x02000EC8
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02033678
+ cmp r0, #0x0
+ beq _02000EE2
+ blx FUN_020D6DAC
+ cmp r0, #0x1
+ bne _02000EE2
+ add r0, r4, #0x0
+ blx OS_ResetSystem
+_02000EE2:
+ bl FUN_02000E9C
+ pop {r4, pc}
+
+ thumb_func_start FUN_02000EE8
+FUN_02000EE8: ; 0x02000EE8
+ push {r3, lr}
+ bl FUN_020335B8
+ add r1, r0, #0x0
+ cmp r1, #0x1
+ beq _02000EFE
+ cmp r1, #0x2
+ beq _02000F06
+ cmp r1, #0x3
+ beq _02000F0E
+ pop {r3, pc}
+_02000EFE:
+ mov r0, #0x1
+ bl FUN_02000F4C
+ pop {r3, pc}
+_02000F06:
+ mov r0, #0x0
+ bl FUN_02000F4C
+ pop {r3, pc}
+_02000F0E:
+ mov r0, #0x1
+ bl FUN_02000F4C
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02000F18
+FUN_02000F18: ; 0x02000F18
+ push {r4, lr}
+ ldr r1, _02000F48 ; =0x00007FFF
+ add r4, r0, #0x0
+ mov r0, #0x0
+ bl FUN_0200E3A0
+ ldr r1, _02000F48 ; =0x00007FFF
+ mov r0, #0x1
+ bl FUN_0200E3A0
+ bl FUN_02032DAC
+ cmp r0, #0x0
+ beq _02000F3C
+ bl FUN_020225F8
+ bl FUN_0202287C
+_02000F3C:
+ bl FUN_02000FE8
+ add r0, r4, #0x0
+ bl FUN_02000EC8
+ b _02000F3C
+ .balign 4
+_02000F48: .word 0x00007FFF
+
+ thumb_func_start FUN_02000F4C
+FUN_02000F4C: ; 0x02000F4C
+ push {r4-r6, lr}
+ add r6, r0, #0x0
+ cmp r1, #0x3
+ bne _02000F60
+ mov r0, #0x0
+ mov r1, #0x3
+ add r2, r0, #0x0
+ bl FUN_02033F70
+ b _02000F7A
+_02000F60:
+ cmp r6, #0x0
+ bne _02000F70
+ mov r0, #0x0
+ mov r1, #0x2
+ add r2, r0, #0x0
+ bl FUN_02033F70
+ b _02000F7A
+_02000F70:
+ mov r0, #0x0
+ add r1, r0, #0x0
+ add r2, r0, #0x0
+ bl FUN_02033F70
+_02000F7A:
+ bl FUN_02032DAC
+ ldr r5, _02000FA0 ; =0x021C48B8
+ mov r4, #0x1
+_02000F82:
+ bl FUN_02000FE8
+ bl FUN_02016464
+ ldr r0, [r5, #0x48]
+ tst r0, r4
+ bne _02000F96
+ bl FUN_02000E9C
+ b _02000F82
+_02000F96:
+ add r0, r6, #0x0
+ bl FUN_02000F18
+ pop {r4-r6, pc}
+ nop
+_02000FA0: .word 0x021C48B8
+
+ thumb_func_start FUN_02000FA4
+FUN_02000FA4: ; 0x02000FA4
+ push {r4-r5, lr}
+ sub sp, #0x1c
+ add r0, sp, #0xc
+ add r1, sp, #0x0
+ bl FUN_0201265C
+ ldr r0, _02000FE4 ; =0x021C48B8
+ ldr r3, [sp, #0x10]
+ ldr r4, [r0, #0x2c]
+ ldr r1, [sp, #0x4]
+ ldr r0, [sp, #0x8]
+ ldr r5, [sp, #0x14]
+ add r0, r1, r0
+ lsl r2, r0, #0x18
+ ldr r0, [sp, #0x0]
+ lsl r3, r3, #0x8
+ lsl r1, r0, #0x10
+ mul r3, r5
+ ldr r0, [sp, #0xc]
+ lsl r3, r3, #0x10
+ add r0, r0, r3
+ add r0, r1, r0
+ add r5, r2, r0
+ add r0, r4, r5
+ bl FUN_0201BA1C
+ add r0, r4, r5
+ bl FUN_0201B9E0
+ add sp, #0x1c
+ pop {r4-r5, pc}
+ nop
+_02000FE4: .word 0x021C48B8
+
+ thumb_func_start FUN_02000FE8
+FUN_02000FE8: ; 0x02000FE8
+ push {r3-r7, lr}
+ sub sp, #0x8
+ ldr r0, _0200109C ; =0x027FFFA8
+ ldrh r1, [r0, #0x0]
+ mov r0, #0x2
+ lsl r0, r0, #0xe
+ and r0, r1
+ asr r0, r0, #0xf
+ beq _0200107E
+ ldr r0, _020010A0 ; =0x021C4918
+ ldrb r0, [r0, #0x7]
+ cmp r0, #0x0
+ bne _02001064
+ bl FUN_0201CE04
+ blx FUN_020DB7A8
+ cmp r0, #0x1
+ bne _02001014
+ ldr r0, _020010A4 ; =0x02106FA0
+ mov r1, #0x1
+ str r1, [r0, #0x4]
+_02001014:
+ ldr r6, _020010A4 ; =0x02106FA0
+ mov r0, #0xc
+ ldr r1, [r6, #0x4]
+ ldr r4, _0200109C ; =0x027FFFA8
+ mov r2, #0x10
+ add r5, r0, #0x0
+ ldr r7, _020010A0 ; =0x021C4918
+ orr r5, r2
+_02001024:
+ ldrb r2, [r7, #0x6]
+ mov r0, #0xc
+ cmp r2, #0x0
+ beq _02001032
+ cmp r1, #0x0
+ bne _02001032
+ add r0, r5, #0x0
+_02001032:
+ mov r1, #0x0
+ add r2, r1, #0x0
+ blx PM_GoSleepMode
+ blx CARD_IsPulledOut
+ cmp r0, #0x0
+ beq _02001048
+ blx FUN_020D5180
+ b _0200105C
+_02001048:
+ ldrh r1, [r4, #0x0]
+ mov r0, #0x2
+ lsl r0, r0, #0xe
+ and r0, r1
+ asr r0, r0, #0xf
+ beq _0200105C
+ mov r0, #0x1
+ str r0, [r6, #0x4]
+ add r1, r0, #0x0
+ b _02001024
+_0200105C:
+ bl FUN_0201CDD0
+ add sp, #0x8
+ pop {r3-r7, pc}
+_02001064:
+ add r0, sp, #0x4
+ add r1, sp, #0x0
+ blx PM_GetBackLight
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x1
+ bne _02001096
+ mov r0, #0x2
+ mov r1, #0x0
+ blx FUN_020D526C
+ add sp, #0x8
+ pop {r3-r7, pc}
+_0200107E:
+ add r0, sp, #0x4
+ add r1, sp, #0x0
+ blx PM_GetBackLight
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ bne _02001096
+ ldr r1, _020010A4 ; =0x02106FA0
+ mov r0, #0x2
+ ldr r1, [r1, #0x0]
+ blx FUN_020D526C
+_02001096:
+ add sp, #0x8
+ pop {r3-r7, pc}
+ nop
+_0200109C: .word 0x027FFFA8
+_020010A0: .word 0x021C4918
+_020010A4: .word 0x02106FA0
+
+ thumb_func_start FUN_020010A8
+FUN_020010A8: ; 0x020010A8
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ add r0, r3, #0x0
+ mov r1, #0x38
+ add r7, r2, #0x0
+ str r3, [sp, #0x0]
+ bl FUN_02016998
+ add r4, r0, #0x0
+ add r3, r5, #0x0
+ add r2, r4, #0x0
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldr r0, [sp, #0x0]
+ bl FUN_02013690
+ str r0, [r4, #0x28]
+ strh r6, [r4, #0x2c]
+ add r1, r4, #0x0
+ strh r7, [r4, #0x2e]
+ mov r0, #0x0
+ add r1, #0x30
+ strb r0, [r1, #0x0]
+ add r1, r4, #0x0
+ add r1, #0x31
+ strb r0, [r1, #0x0]
+ add r1, r4, #0x0
+ mov r2, #0xff
+ add r1, #0x32
+ strb r2, [r1, #0x0]
+ add r1, r4, #0x0
+ add r1, #0x33
+ strb r0, [r1, #0x0]
+ add r1, r4, #0x0
+ ldr r0, [sp, #0x0]
+ add r1, #0x34
+ strb r0, [r1, #0x0]
+ add r0, r4, #0x0
+ ldrb r1, [r4, #0x17]
+ add r0, #0x20
+ ldrb r2, [r0, #0x0]
+ lsl r1, r1, #0x18
+ mov r0, #0xf
+ lsr r3, r1, #0x1c
+ mov r1, #0xf
+ bic r2, r0
+ and r3, r1
+ orr r3, r2
+ add r2, r4, #0x0
+ add r2, #0x20
+ strb r3, [r2, #0x0]
+ add r2, r4, #0x0
+ add r2, #0x20
+ ldrb r2, [r2, #0x0]
+ mov r3, #0xf0
+ bic r2, r3
+ ldrb r3, [r4, #0x18]
+ lsl r3, r3, #0x1c
+ lsr r3, r3, #0x1c
+ lsl r3, r3, #0x1c
+ lsr r3, r3, #0x18
+ orr r3, r2
+ add r2, r4, #0x0
+ add r2, #0x20
+ strb r3, [r2, #0x0]
+ add r2, r4, #0x0
+ add r2, #0x21
+ ldrb r2, [r2, #0x0]
+ bic r2, r0
+ ldrb r0, [r4, #0x18]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1c
+ and r0, r1
+ add r1, r2, #0x0
+ orr r1, r0
+ add r0, r4, #0x0
+ add r0, #0x21
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x22
+ ldrb r0, [r0, #0x0]
+ mov r1, #0x3f
+ bic r0, r1
+ ldrh r1, [r4, #0x1a]
+ lsl r1, r1, #0x1d
+ lsr r1, r1, #0x1d
+ lsl r1, r1, #0x18
+ lsr r2, r1, #0x18
+ mov r1, #0x3f
+ and r1, r2
+ orr r1, r0
+ add r0, r4, #0x0
+ add r0, #0x22
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x24
+ ldrb r0, [r0, #0x0]
+ mov r1, #0x7f
+ bic r0, r1
+ ldrh r1, [r4, #0x1a]
+ lsl r1, r1, #0x11
+ lsr r1, r1, #0x1a
+ lsl r1, r1, #0x18
+ lsr r2, r1, #0x18
+ mov r1, #0x7f
+ and r1, r2
+ orr r1, r0
+ add r0, r4, #0x0
+ add r0, #0x24
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x24
+ ldrb r1, [r0, #0x0]
+ mov r0, #0x80
+ bic r1, r0
+ add r0, r4, #0x0
+ add r0, #0x24
+ strb r1, [r0, #0x0]
+ ldrh r1, [r4, #0x10]
+ ldrh r0, [r4, #0x12]
+ cmp r1, r0
+ bhs _020011AC
+ strh r1, [r4, #0x12]
+_020011AC:
+ ldrb r2, [r4, #0x18]
+ ldr r0, [r4, #0x28]
+ lsl r1, r2, #0x1c
+ lsr r1, r1, #0x1c
+ lsl r1, r1, #0x18
+ lsr r3, r1, #0x18
+ ldrb r1, [r4, #0x17]
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x1c
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x1c
+ lsl r1, r1, #0x18
+ lsl r2, r2, #0x18
+ lsr r1, r1, #0x8
+ lsr r2, r2, #0x10
+ orr r1, r2
+ orr r1, r3
+ bl FUN_020136E0
+ ldrb r1, [r4, #0x18]
+ ldr r0, [r4, #0xc]
+ lsl r1, r1, #0x1c
+ lsr r1, r1, #0x1c
+ bl FUN_02019620
+ ldrh r1, [r4, #0x2c]
+ ldrh r3, [r4, #0x12]
+ add r0, r4, #0x0
+ mov r2, #0x0
+ bl FUN_02001714
+ add r0, r4, #0x0
+ bl FUN_020017AC
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_02001B64
+ ldr r0, [r5, #0xc]
+ bl FUN_020191D0
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02001204
+FUN_02001204: ; 0x02001204
+ push {r4-r6, lr}
+ add r4, r0, #0x0
+ add r1, r4, #0x0
+ ldr r6, _020012FC ; =0x021C48B8
+ mov r3, #0x0
+ add r1, #0x33
+ strb r3, [r1, #0x0]
+ ldr r1, [r6, #0x48]
+ mov r2, #0x1
+ add r5, r1, #0x0
+ tst r5, r2
+ beq _0200122C
+ ldrh r1, [r4, #0x2c]
+ ldrh r0, [r4, #0x2e]
+ ldr r2, [r4, #0x0]
+ add r0, r1, r0
+ lsl r0, r0, #0x3
+ add r0, r2, r0
+ ldr r0, [r0, #0x4]
+ pop {r4-r6, pc}
+_0200122C:
+ mov r5, #0x2
+ tst r1, r5
+ beq _02001236
+ sub r0, r5, #0x4
+ pop {r4-r6, pc}
+_02001236:
+ ldr r5, [r6, #0x4c]
+ mov r1, #0x40
+ tst r1, r5
+ beq _02001254
+ add r1, r2, #0x0
+ bl FUN_02001AA4
+ cmp r0, #0x0
+ bne _0200124E
+ mov r0, #0x1
+ add r4, #0x33
+ strb r0, [r4, #0x0]
+_0200124E:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4-r6, pc}
+_02001254:
+ mov r1, #0x80
+ add r3, r5, #0x0
+ tst r3, r1
+ beq _02001274
+ add r1, r2, #0x0
+ add r3, r2, #0x0
+ bl FUN_02001AA4
+ cmp r0, #0x0
+ bne _0200126E
+ mov r0, #0x2
+ add r4, #0x33
+ strb r0, [r4, #0x0]
+_0200126E:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4-r6, pc}
+_02001274:
+ ldrh r0, [r4, #0x1a]
+ lsl r0, r0, #0x17
+ lsr r0, r0, #0x1e
+ beq _02001284
+ cmp r0, #0x1
+ beq _0200128A
+ cmp r0, #0x2
+ beq _0200129C
+_02001284:
+ mov r0, #0x0
+ add r1, r0, #0x0
+ b _020012AC
+_0200128A:
+ mov r0, #0x20
+ mov r1, #0x10
+ and r0, r5
+ and r1, r5
+ lsl r0, r0, #0x10
+ lsl r1, r1, #0x10
+ lsr r0, r0, #0x10
+ lsr r1, r1, #0x10
+ b _020012AC
+_0200129C:
+ lsl r0, r1, #0x2
+ add r1, #0x80
+ and r0, r5
+ and r1, r5
+ lsl r0, r0, #0x10
+ lsl r1, r1, #0x10
+ lsr r0, r0, #0x10
+ lsr r1, r1, #0x10
+_020012AC:
+ cmp r0, #0x0
+ beq _020012D0
+ ldrh r2, [r4, #0x12]
+ add r0, r4, #0x0
+ mov r1, #0x1
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+ mov r3, #0x0
+ bl FUN_02001AA4
+ cmp r0, #0x0
+ bne _020012CA
+ mov r0, #0x3
+ add r4, #0x33
+ strb r0, [r4, #0x0]
+_020012CA:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4-r6, pc}
+_020012D0:
+ cmp r1, #0x0
+ beq _020012F4
+ ldrh r2, [r4, #0x12]
+ mov r1, #0x1
+ add r0, r4, #0x0
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+ add r3, r1, #0x0
+ bl FUN_02001AA4
+ cmp r0, #0x0
+ bne _020012EE
+ mov r0, #0x4
+ add r4, #0x33
+ strb r0, [r4, #0x0]
+_020012EE:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4-r6, pc}
+_020012F4:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4-r6, pc}
+ nop
+_020012FC: .word 0x021C48B8
+
+ thumb_func_start FUN_02001300
+FUN_02001300: ; 0x02001300
+ push {r4, lr}
+ add r4, r0, #0x0
+ cmp r1, #0x0
+ beq _0200130C
+ ldrh r0, [r4, #0x2c]
+ strh r0, [r1, #0x0]
+_0200130C:
+ cmp r2, #0x0
+ beq _02001314
+ ldrh r0, [r4, #0x2e]
+ strh r0, [r2, #0x0]
+_02001314:
+ ldr r0, [r4, #0x28]
+ bl FUN_020136C0
+ add r0, r4, #0x0
+ add r0, #0x34
+ ldrb r0, [r0, #0x0]
+ add r1, r4, #0x0
+ bl FUN_02016A8C
+ pop {r4, pc}
+
+ thumb_func_start FUN_02001328
+FUN_02001328: ; 0x02001328
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldrb r1, [r4, #0x18]
+ ldr r0, [r4, #0xc]
+ lsl r1, r1, #0x1c
+ lsr r1, r1, #0x1c
+ bl FUN_02019620
+ ldrh r1, [r4, #0x2c]
+ ldrh r3, [r4, #0x12]
+ add r0, r4, #0x0
+ mov r2, #0x0
+ bl FUN_02001714
+ add r0, r4, #0x0
+ bl FUN_020017AC
+ ldr r0, [r4, #0xc]
+ bl FUN_020191D0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02001354
+FUN_02001354: ; 0x02001354
+ push {r4-r6, lr}
+ add r4, r0, #0x0
+ add r6, r1, #0x0
+ beq _0200136E
+ add r5, r4, #0x0
+ ldmia r6!, {r0-r1}
+ stmia r5!, {r0-r1}
+ ldmia r6!, {r0-r1}
+ stmia r5!, {r0-r1}
+ ldmia r6!, {r0-r1}
+ stmia r5!, {r0-r1}
+ ldmia r6!, {r0-r1}
+ stmia r5!, {r0-r1}
+_0200136E:
+ strh r2, [r4, #0x2c]
+ add r0, r4, #0x0
+ strh r3, [r4, #0x2e]
+ mov r3, #0x0
+ add r0, #0x30
+ strb r3, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x31
+ add r1, sp, #0x0
+ strb r3, [r0, #0x0]
+ ldrh r0, [r1, #0x14]
+ cmp r0, #0x40
+ bne _02001398
+ ldrh r1, [r1, #0x10]
+ add r0, r4, #0x0
+ mov r2, #0x1
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl FUN_02001AA4
+ b _020013AC
+_02001398:
+ cmp r0, #0x80
+ bne _020013AC
+ ldrh r1, [r1, #0x10]
+ mov r2, #0x1
+ add r0, r4, #0x0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ add r3, r2, #0x0
+ bl FUN_02001AA4
+_020013AC:
+ ldr r1, [sp, #0x18]
+ cmp r1, #0x0
+ beq _020013B6
+ ldrh r0, [r4, #0x2c]
+ strh r0, [r1, #0x0]
+_020013B6:
+ ldr r1, [sp, #0x1c]
+ cmp r1, #0x0
+ beq _020013C0
+ ldrh r0, [r4, #0x2e]
+ strh r0, [r1, #0x0]
+_020013C0:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_020013C8
+FUN_020013C8: ; 0x020013C8
+ push {r4, lr}
+ sub sp, #0x10
+ mov r4, #0x0
+ str r4, [sp, #0x0]
+ add r4, sp, #0x8
+ ldrh r4, [r4, #0x10]
+ str r4, [sp, #0x4]
+ ldr r4, [sp, #0x1c]
+ str r4, [sp, #0x8]
+ ldr r4, [sp, #0x20]
+ str r4, [sp, #0xc]
+ bl FUN_02001354
+ add sp, #0x10
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020013E8
+FUN_020013E8: ; 0x020013E8
+ push {r3-r6}
+ add r4, r0, #0x0
+ add r4, #0x20
+ ldrb r6, [r4, #0x0]
+ mov r4, #0xf
+ mov r5, #0xf
+ bic r6, r4
+ and r1, r5
+ orr r6, r1
+ add r1, r0, #0x0
+ add r1, #0x20
+ strb r6, [r1, #0x0]
+ add r1, r0, #0x0
+ add r1, #0x20
+ lsl r2, r2, #0x1c
+ ldrb r1, [r1, #0x0]
+ mov r6, #0xf0
+ lsr r2, r2, #0x18
+ bic r1, r6
+ orr r2, r1
+ add r1, r0, #0x0
+ add r1, #0x20
+ strb r2, [r1, #0x0]
+ add r1, r0, #0x0
+ add r1, #0x21
+ ldrb r2, [r1, #0x0]
+ add r1, r3, #0x0
+ and r1, r5
+ bic r2, r4
+ orr r2, r1
+ add r1, r0, #0x0
+ add r1, #0x21
+ strb r2, [r1, #0x0]
+ add r1, r0, #0x0
+ add r1, #0x24
+ ldrb r2, [r1, #0x0]
+ mov r1, #0x80
+ add r0, #0x24
+ orr r1, r2
+ strb r1, [r0, #0x0]
+ pop {r3-r6}
+ bx lr
+
+ thumb_func_start FUN_0200143C
+FUN_0200143C: ; 0x0200143C
+ ldrh r2, [r0, #0x2c]
+ ldrh r0, [r0, #0x2e]
+ add r0, r2, r0
+ strh r0, [r1, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02001448
+FUN_02001448: ; 0x02001448
+ cmp r1, #0x0
+ beq _02001450
+ ldrh r3, [r0, #0x2c]
+ strh r3, [r1, #0x0]
+_02001450:
+ cmp r2, #0x0
+ beq _02001458
+ ldrh r0, [r0, #0x2e]
+ strh r0, [r2, #0x0]
+_02001458:
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0200145C
+FUN_0200145C: ; 0x0200145C
+ add r0, #0x33
+ ldrb r0, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02001464
+FUN_02001464: ; 0x02001464
+ ldr r2, [r0, #0x0]
+ lsl r0, r1, #0x3
+ add r0, r2, r0
+ ldr r0, [r0, #0x4]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02001470
+FUN_02001470: ; 0x02001470
+ push {r4, lr}
+ add r4, r0, #0x0
+ cmp r1, #0x13
+ bhi _02001532
+ add r0, r1, r1
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02001484: ; jump table (using 16-bit offset)
+ .short _020014AC - _02001484 - 2; case 0
+ .short _020014B0 - _02001484 - 2; case 1
+ .short _020014B4 - _02001484 - 2; case 2
+ .short _020014B8 - _02001484 - 2; case 3
+ .short _02001532 - _02001484 - 2; case 4
+ .short _020014BC - _02001484 - 2; case 5
+ .short _020014C0 - _02001484 - 2; case 6
+ .short _020014C4 - _02001484 - 2; case 7
+ .short _020014C8 - _02001484 - 2; case 8
+ .short _020014D0 - _02001484 - 2; case 9
+ .short _020014EA - _02001484 - 2; case 10
+ .short _020014F2 - _02001484 - 2; case 11
+ .short _020014FA - _02001484 - 2; case 12
+ .short _02001502 - _02001484 - 2; case 13
+ .short _0200150A - _02001484 - 2; case 14
+ .short _02001512 - _02001484 - 2; case 15
+ .short _0200151A - _02001484 - 2; case 16
+ .short _02001522 - _02001484 - 2; case 17
+ .short _0200152A - _02001484 - 2; case 18
+ .short _0200152E - _02001484 - 2; case 19
+_020014AC:
+ ldr r0, [r4, #0x4]
+ pop {r4, pc}
+_020014B0:
+ ldr r0, [r4, #0x8]
+ pop {r4, pc}
+_020014B4:
+ ldrh r0, [r4, #0x10]
+ pop {r4, pc}
+_020014B8:
+ ldrh r0, [r4, #0x12]
+ pop {r4, pc}
+_020014BC:
+ ldrb r0, [r4, #0x14]
+ pop {r4, pc}
+_020014C0:
+ ldrb r0, [r4, #0x15]
+ pop {r4, pc}
+_020014C4:
+ ldrb r0, [r4, #0x16]
+ pop {r4, pc}
+_020014C8:
+ ldrb r0, [r4, #0x17]
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1c
+ pop {r4, pc}
+_020014D0:
+ ldrh r0, [r4, #0x1a]
+ mov r1, #0x1
+ lsl r0, r0, #0x11
+ lsr r0, r0, #0x1a
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_02002E4C
+ ldrh r1, [r4, #0x1a]
+ lsl r1, r1, #0x19
+ lsr r1, r1, #0x1c
+ add r0, r1, r0
+ pop {r4, pc}
+_020014EA:
+ ldrb r0, [r4, #0x17]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1c
+ pop {r4, pc}
+_020014F2:
+ ldrb r0, [r4, #0x18]
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1c
+ pop {r4, pc}
+_020014FA:
+ ldrb r0, [r4, #0x18]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1c
+ pop {r4, pc}
+_02001502:
+ ldrh r0, [r4, #0x1a]
+ lsl r0, r0, #0x1d
+ lsr r0, r0, #0x1d
+ pop {r4, pc}
+_0200150A:
+ ldrh r0, [r4, #0x1a]
+ lsl r0, r0, #0x19
+ lsr r0, r0, #0x1c
+ pop {r4, pc}
+_02001512:
+ ldrh r0, [r4, #0x1a]
+ lsl r0, r0, #0x17
+ lsr r0, r0, #0x1e
+ pop {r4, pc}
+_0200151A:
+ ldrh r0, [r4, #0x1a]
+ lsl r0, r0, #0x11
+ lsr r0, r0, #0x1a
+ pop {r4, pc}
+_02001522:
+ ldrh r0, [r4, #0x1a]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x1f
+ pop {r4, pc}
+_0200152A:
+ ldr r0, [r4, #0xc]
+ pop {r4, pc}
+_0200152E:
+ ldr r0, [r4, #0x1c]
+ pop {r4, pc}
+_02001532:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4, pc}
+
+ thumb_func_start FUN_02001538
+FUN_02001538: ; 0x02001538
+ cmp r1, #0x13
+ bls _0200153E
+ b _02001648
+_0200153E:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0200154A: ; jump table (using 16-bit offset)
+ .short _02001572 - _0200154A - 2; case 0
+ .short _02001576 - _0200154A - 2; case 1
+ .short _0200157A - _0200154A - 2; case 2
+ .short _0200157E - _0200154A - 2; case 3
+ .short _02001648 - _0200154A - 2; case 4
+ .short _02001582 - _0200154A - 2; case 5
+ .short _02001586 - _0200154A - 2; case 6
+ .short _0200158A - _0200154A - 2; case 7
+ .short _0200158E - _0200154A - 2; case 8
+ .short _02001648 - _0200154A - 2; case 9
+ .short _020015A2 - _0200154A - 2; case 10
+ .short _020015B6 - _0200154A - 2; case 11
+ .short _020015CA - _0200154A - 2; case 12
+ .short _020015DE - _0200154A - 2; case 13
+ .short _020015F2 - _0200154A - 2; case 14
+ .short _02001606 - _0200154A - 2; case 15
+ .short _0200161A - _0200154A - 2; case 16
+ .short _0200162E - _0200154A - 2; case 17
+ .short _02001642 - _0200154A - 2; case 18
+ .short _02001646 - _0200154A - 2; case 19
+_02001572:
+ str r2, [r0, #0x4]
+ bx lr
+_02001576:
+ str r2, [r0, #0x8]
+ bx lr
+_0200157A:
+ strh r2, [r0, #0x10]
+ bx lr
+_0200157E:
+ strh r2, [r0, #0x12]
+ bx lr
+_02001582:
+ strb r2, [r0, #0x14]
+ bx lr
+_02001586:
+ strb r2, [r0, #0x15]
+ bx lr
+_0200158A:
+ strb r2, [r0, #0x16]
+ bx lr
+_0200158E:
+ ldrb r3, [r0, #0x17]
+ mov r1, #0xf
+ bic r3, r1
+ lsl r1, r2, #0x18
+ lsr r2, r1, #0x18
+ mov r1, #0xf
+ and r1, r2
+ orr r1, r3
+ strb r1, [r0, #0x17]
+ bx lr
+_020015A2:
+ ldrb r3, [r0, #0x17]
+ mov r1, #0xf0
+ bic r3, r1
+ lsl r1, r2, #0x18
+ lsr r1, r1, #0x18
+ lsl r1, r1, #0x1c
+ lsr r1, r1, #0x18
+ orr r1, r3
+ strb r1, [r0, #0x17]
+ bx lr
+_020015B6:
+ ldrb r3, [r0, #0x18]
+ mov r1, #0xf
+ bic r3, r1
+ lsl r1, r2, #0x18
+ lsr r2, r1, #0x18
+ mov r1, #0xf
+ and r1, r2
+ orr r1, r3
+ strb r1, [r0, #0x18]
+ bx lr
+_020015CA:
+ ldrb r3, [r0, #0x18]
+ mov r1, #0xf0
+ bic r3, r1
+ lsl r1, r2, #0x18
+ lsr r1, r1, #0x18
+ lsl r1, r1, #0x1c
+ lsr r1, r1, #0x18
+ orr r1, r3
+ strb r1, [r0, #0x18]
+ bx lr
+_020015DE:
+ ldrh r3, [r0, #0x1a]
+ mov r1, #0x7
+ bic r3, r1
+ lsl r1, r2, #0x18
+ lsr r2, r1, #0x18
+ mov r1, #0x7
+ and r1, r2
+ orr r1, r3
+ strh r1, [r0, #0x1a]
+ bx lr
+_020015F2:
+ ldrh r3, [r0, #0x1a]
+ mov r1, #0x78
+ bic r3, r1
+ lsl r1, r2, #0x18
+ lsr r1, r1, #0x18
+ lsl r1, r1, #0x1c
+ lsr r1, r1, #0x19
+ orr r1, r3
+ strh r1, [r0, #0x1a]
+ bx lr
+_02001606:
+ ldrh r3, [r0, #0x1a]
+ ldr r1, _0200164C ; =0xFFFFFE7F
+ and r3, r1
+ lsl r1, r2, #0x18
+ lsr r1, r1, #0x18
+ lsl r1, r1, #0x1e
+ lsr r1, r1, #0x17
+ orr r1, r3
+ strh r1, [r0, #0x1a]
+ bx lr
+_0200161A:
+ ldrh r3, [r0, #0x1a]
+ ldr r1, _02001650 ; =0xFFFF81FF
+ and r3, r1
+ lsl r1, r2, #0x18
+ lsr r1, r1, #0x18
+ lsl r1, r1, #0x1a
+ lsr r1, r1, #0x11
+ orr r1, r3
+ strh r1, [r0, #0x1a]
+ bx lr
+_0200162E:
+ ldrh r3, [r0, #0x1a]
+ ldr r1, _02001654 ; =0xFFFF7FFF
+ and r3, r1
+ lsl r1, r2, #0x18
+ lsr r1, r1, #0x18
+ lsl r1, r1, #0x1f
+ lsr r1, r1, #0x10
+ orr r1, r3
+ strh r1, [r0, #0x1a]
+ bx lr
+_02001642:
+ str r2, [r0, #0xc]
+ bx lr
+_02001646:
+ str r2, [r0, #0x1c]
+_02001648:
+ bx lr
+ nop
+_0200164C: .word 0xFFFFFE7F
+_02001650: .word 0xFFFF81FF
+_02001654: .word 0xFFFF7FFF
+
+ thumb_func_start FUN_02001658
+FUN_02001658: ; 0x02001658
+ str r1, [r0, #0x0]
+ bx lr
+
+ thumb_func_start FUN_0200165C
+FUN_0200165C: ; 0x0200165C
+ push {r4-r6, lr}
+ sub sp, #0x18
+ add r5, r1, #0x0
+ add r6, r0, #0x0
+ add r4, r2, #0x0
+ cmp r5, #0x0
+ beq _02001710
+ add r0, #0x24
+ ldrb r0, [r0, #0x0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1f
+ str r3, [sp, #0x0]
+ beq _020016CC
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ add r0, r6, #0x0
+ add r0, #0x20
+ ldrb r2, [r0, #0x0]
+ add r3, r4, #0x0
+ lsl r0, r2, #0x18
+ lsr r0, r0, #0x1c
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ lsl r0, r2, #0x1c
+ add r2, r6, #0x0
+ add r2, #0x21
+ ldrb r2, [r2, #0x0]
+ lsr r0, r0, #0x1c
+ lsl r0, r0, #0x18
+ lsl r2, r2, #0x1c
+ lsr r2, r2, #0x1c
+ lsl r2, r2, #0x18
+ lsr r0, r0, #0x8
+ lsr r2, r2, #0x10
+ orr r0, r2
+ orr r0, r1
+ str r0, [sp, #0x8]
+ add r0, r6, #0x0
+ add r0, #0x22
+ ldrb r0, [r0, #0x0]
+ add r2, r5, #0x0
+ lsl r0, r0, #0x1a
+ lsr r0, r0, #0x1a
+ str r0, [sp, #0xc]
+ mov r0, #0x0
+ str r0, [sp, #0x10]
+ str r0, [sp, #0x14]
+ ldr r0, [r6, #0xc]
+ add r6, #0x24
+ ldrb r1, [r6, #0x0]
+ lsl r1, r1, #0x19
+ lsr r1, r1, #0x19
+ bl FUN_0201BE3C
+ add sp, #0x18
+ pop {r4-r6, pc}
+_020016CC:
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ ldrb r1, [r6, #0x18]
+ add r3, r4, #0x0
+ lsl r0, r1, #0x1c
+ lsr r0, r0, #0x1c
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ ldrb r0, [r6, #0x17]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x1c
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1c
+ lsl r0, r0, #0x18
+ lsl r1, r1, #0x18
+ lsr r0, r0, #0x8
+ lsr r1, r1, #0x10
+ orr r0, r1
+ orr r0, r2
+ str r0, [sp, #0x8]
+ ldrh r0, [r6, #0x1a]
+ add r2, r5, #0x0
+ lsl r0, r0, #0x1d
+ lsr r0, r0, #0x1d
+ str r0, [sp, #0xc]
+ mov r0, #0x0
+ str r0, [sp, #0x10]
+ str r0, [sp, #0x14]
+ ldrh r1, [r6, #0x1a]
+ ldr r0, [r6, #0xc]
+ lsl r1, r1, #0x11
+ lsr r1, r1, #0x1a
+ bl FUN_0201BE3C
+_02001710:
+ add sp, #0x18
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02001714
+FUN_02001714: ; 0x02001714
+ push {r4-r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0x0
+ str r3, [sp, #0x0]
+ ldrh r0, [r5, #0x1a]
+ add r4, r1, #0x0
+ mov r1, #0x1
+ lsl r0, r0, #0x11
+ lsr r0, r0, #0x1a
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ add r6, r2, #0x0
+ bl FUN_02002E4C
+ ldrh r1, [r5, #0x1a]
+ lsl r1, r1, #0x19
+ lsr r1, r1, #0x1c
+ add r0, r1, r0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0xc]
+ mov r0, #0x0
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x0]
+ cmp r0, #0x0
+ ble _020017A6
+_02001748:
+ ldr r1, [r5, #0x0]
+ lsl r0, r4, #0x3
+ str r0, [sp, #0x8]
+ add r0, r1, r0
+ ldr r1, [r0, #0x4]
+ mov r0, #0x2
+ mvn r0, r0
+ cmp r1, r0
+ beq _02001760
+ ldrb r0, [r5, #0x15]
+ str r0, [sp, #0x4]
+ b _02001764
+_02001760:
+ ldrb r0, [r5, #0x14]
+ str r0, [sp, #0x4]
+_02001764:
+ ldrb r0, [r5, #0x17]
+ lsl r0, r0, #0x1c
+ lsr r3, r0, #0x1c
+ ldr r0, [sp, #0xc]
+ add r2, r0, #0x0
+ mul r2, r6
+ add r0, r3, r2
+ lsl r0, r0, #0x18
+ ldr r3, [r5, #0x8]
+ lsr r7, r0, #0x18
+ cmp r3, #0x0
+ beq _02001782
+ add r0, r5, #0x0
+ add r2, r7, #0x0
+ blx r3
+_02001782:
+ ldr r2, [r5, #0x0]
+ ldr r1, [sp, #0x8]
+ add r0, r5, #0x0
+ ldr r1, [r2, r1]
+ ldr r2, [sp, #0x4]
+ add r3, r7, #0x0
+ bl FUN_0200165C
+ add r0, r4, #0x1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ ldr r0, [sp, #0x10]
+ add r6, r6, #0x1
+ add r1, r0, #0x1
+ ldr r0, [sp, #0x0]
+ str r1, [sp, #0x10]
+ cmp r1, r0
+ blt _02001748
+_020017A6:
+ add sp, #0x14
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020017AC
+FUN_020017AC: ; 0x020017AC
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ ldrh r0, [r4, #0x1a]
+ mov r1, #0x1
+ lsl r0, r0, #0x11
+ lsr r0, r0, #0x1a
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_02002E4C
+ ldrh r1, [r4, #0x1a]
+ ldrh r5, [r4, #0x2e]
+ lsl r2, r1, #0x19
+ lsr r2, r2, #0x1c
+ add r0, r2, r0
+ lsl r0, r0, #0x18
+ lsr r3, r0, #0x18
+ ldrb r0, [r4, #0x17]
+ mul r3, r5
+ ldrb r2, [r4, #0x16]
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1c
+ add r0, r0, r3
+ lsl r0, r0, #0x18
+ lsr r3, r0, #0x18
+ lsl r0, r1, #0x10
+ lsr r0, r0, #0x1f
+ cmp r0, #0x3
+ bhi _02001802
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_020017F2: ; jump table (using 16-bit offset)
+ .short _020017FA - _020017F2 - 2; case 0
+ .short _02001802 - _020017F2 - 2; case 1
+ .short _02001802 - _020017F2 - 2; case 2
+ .short _02001802 - _020017F2 - 2; case 3
+_020017FA:
+ ldr r0, [r4, #0x28]
+ ldr r1, [r4, #0xc]
+ bl FUN_020136F8
+_02001802:
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02001804
+FUN_02001804: ; 0x02001804
+ push {r3-r5, lr}
+ sub sp, #0x8
+ add r4, r0, #0x0
+ ldrh r0, [r4, #0x1a]
+ add r5, r1, #0x0
+ lsl r1, r0, #0x10
+ lsr r1, r1, #0x1f
+ cmp r1, #0x3
+ bhi _02001868
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02001822: ; jump table (using 16-bit offset)
+ .short _0200182A - _02001822 - 2; case 0
+ .short _02001868 - _02001822 - 2; case 1
+ .short _02001868 - _02001822 - 2; case 2
+ .short _02001868 - _02001822 - 2; case 3
+_0200182A:
+ lsl r0, r0, #0x11
+ lsr r0, r0, #0x1a
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r1, #0x1
+ bl FUN_02002E4C
+ ldrh r1, [r4, #0x1a]
+ lsl r1, r1, #0x19
+ lsr r1, r1, #0x1c
+ add r0, r1, r0
+ lsl r0, r0, #0x18
+ lsr r3, r0, #0x18
+ mov r0, #0x8
+ str r0, [sp, #0x0]
+ mov r0, #0x10
+ str r0, [sp, #0x4]
+ ldrb r1, [r4, #0x18]
+ ldr r0, [r4, #0xc]
+ ldrb r2, [r4, #0x16]
+ ldrb r4, [r4, #0x17]
+ lsl r1, r1, #0x1c
+ mul r3, r5
+ lsl r4, r4, #0x1c
+ lsr r4, r4, #0x1c
+ add r3, r4, r3
+ lsl r3, r3, #0x10
+ lsr r1, r1, #0x1c
+ lsr r3, r3, #0x10
+ bl FUN_020196F4
+_02001868:
+ add sp, #0x8
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0200186C
+FUN_0200186C: ; 0x0200186C
+ push {r4-r7}
+ ldrh r4, [r0, #0x2e]
+ ldrh r3, [r0, #0x2c]
+ cmp r1, #0x0
+ ldrh r2, [r0, #0x12]
+ bne _020018FE
+ cmp r2, #0x1
+ bne _02001880
+ mov r1, #0x0
+ b _02001898
+_02001880:
+ lsr r7, r2, #0x1f
+ lsl r6, r2, #0x1f
+ sub r6, r6, r7
+ mov r5, #0x1f
+ ror r6, r5
+ lsr r1, r2, #0x1
+ add r5, r7, r6
+ add r1, r1, r5
+ sub r1, r2, r1
+ sub r1, r1, #0x1
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+_02001898:
+ cmp r3, #0x0
+ bne _020018CC
+ cmp r4, #0x0
+ beq _020018C6
+ ldr r2, [r0, #0x0]
+ lsl r1, r3, #0x3
+ mov r3, #0x2
+ add r1, r2, r1
+ mvn r3, r3
+_020018AA:
+ sub r2, r4, #0x1
+ lsl r2, r2, #0x10
+ lsr r4, r2, #0x10
+ lsl r2, r4, #0x3
+ add r2, r1, r2
+ ldr r2, [r2, #0x4]
+ cmp r2, r3
+ beq _020018C2
+ strh r4, [r0, #0x2e]
+ mov r0, #0x1
+ pop {r4-r7}
+ bx lr
+_020018C2:
+ cmp r4, #0x0
+ bne _020018AA
+_020018C6:
+ mov r0, #0x0
+ pop {r4-r7}
+ bx lr
+_020018CC:
+ cmp r4, r1
+ bls _020018F6
+ ldr r5, [r0, #0x0]
+ lsl r2, r3, #0x3
+ add r2, r5, r2
+ mov r5, #0x2
+ mvn r5, r5
+_020018DA:
+ sub r4, r4, #0x1
+ lsl r4, r4, #0x10
+ lsr r4, r4, #0x10
+ lsl r6, r4, #0x3
+ add r6, r2, r6
+ ldr r6, [r6, #0x4]
+ cmp r6, r5
+ beq _020018F2
+ strh r4, [r0, #0x2e]
+ mov r0, #0x1
+ pop {r4-r7}
+ bx lr
+_020018F2:
+ cmp r4, r1
+ bhi _020018DA
+_020018F6:
+ strh r1, [r0, #0x2e]
+ sub r1, r3, #0x1
+ strh r1, [r0, #0x2c]
+ b _02001984
+_020018FE:
+ cmp r2, #0x1
+ bne _02001906
+ mov r5, #0x0
+ b _0200191A
+_02001906:
+ lsr r7, r2, #0x1f
+ lsl r6, r2, #0x1f
+ sub r6, r6, r7
+ mov r5, #0x1f
+ ror r6, r5
+ lsr r1, r2, #0x1
+ add r5, r7, r6
+ add r1, r1, r5
+ lsl r1, r1, #0x10
+ lsr r5, r1, #0x10
+_0200191A:
+ ldrh r1, [r0, #0x10]
+ sub r1, r1, r2
+ cmp r3, r1
+ bne _02001954
+ sub r2, r2, #0x1
+ cmp r4, r2
+ bge _0200194E
+ ldr r5, [r0, #0x0]
+ lsl r1, r3, #0x3
+ add r1, r5, r1
+ mov r5, #0x2
+ mvn r5, r5
+_02001932:
+ add r3, r4, #0x1
+ lsl r3, r3, #0x10
+ lsr r4, r3, #0x10
+ lsl r3, r4, #0x3
+ add r3, r1, r3
+ ldr r3, [r3, #0x4]
+ cmp r3, r5
+ beq _0200194A
+ strh r4, [r0, #0x2e]
+ mov r0, #0x1
+ pop {r4-r7}
+ bx lr
+_0200194A:
+ cmp r4, r2
+ blt _02001932
+_0200194E:
+ mov r0, #0x0
+ pop {r4-r7}
+ bx lr
+_02001954:
+ cmp r4, r5
+ bhs _0200197E
+ ldr r2, [r0, #0x0]
+ lsl r1, r3, #0x3
+ mov r6, #0x2
+ add r1, r2, r1
+ mvn r6, r6
+_02001962:
+ add r2, r4, #0x1
+ lsl r2, r2, #0x10
+ lsr r4, r2, #0x10
+ lsl r2, r4, #0x3
+ add r2, r1, r2
+ ldr r2, [r2, #0x4]
+ cmp r2, r6
+ beq _0200197A
+ strh r4, [r0, #0x2e]
+ mov r0, #0x1
+ pop {r4-r7}
+ bx lr
+_0200197A:
+ cmp r4, r5
+ blo _02001962
+_0200197E:
+ strh r5, [r0, #0x2e]
+ add r1, r3, #0x1
+ strh r1, [r0, #0x2c]
+_02001984:
+ mov r0, #0x2
+ pop {r4-r7}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0200198C
+FUN_0200198C: ; 0x0200198C
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ ldrh r0, [r5, #0x12]
+ add r4, r1, #0x0
+ add r7, r2, #0x0
+ cmp r4, r0
+ blt _020019B8
+ ldrb r1, [r5, #0x18]
+ ldr r0, [r5, #0xc]
+ lsl r1, r1, #0x1c
+ lsr r1, r1, #0x1c
+ bl FUN_02019620
+ ldrh r1, [r5, #0x2c]
+ ldrh r3, [r5, #0x12]
+ add r0, r5, #0x0
+ mov r2, #0x0
+ bl FUN_02001714
+ add sp, #0x8
+ pop {r3-r7, pc}
+_020019B8:
+ ldrh r0, [r5, #0x1a]
+ mov r1, #0x1
+ lsl r0, r0, #0x11
+ lsr r0, r0, #0x1a
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_02002E4C
+ ldrh r1, [r5, #0x1a]
+ lsl r1, r1, #0x19
+ lsr r1, r1, #0x1c
+ add r0, r1, r0
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ cmp r7, #0x0
+ ldrb r0, [r5, #0x18]
+ bne _02001A46
+ lsl r0, r0, #0x1c
+ lsr r7, r0, #0x1c
+ add r2, r4, #0x0
+ lsl r3, r7, #0x4
+ mul r2, r6
+ orr r3, r7
+ lsl r2, r2, #0x18
+ lsl r3, r3, #0x18
+ ldr r0, [r5, #0xc]
+ mov r1, #0x1
+ lsr r2, r2, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_0201A8C8
+ ldrh r1, [r5, #0x2c]
+ add r0, r5, #0x0
+ mov r2, #0x0
+ add r3, r4, #0x0
+ bl FUN_02001714
+ ldrb r0, [r5, #0x17]
+ lsl r0, r0, #0x1c
+ lsr r2, r0, #0x1c
+ ldrh r0, [r5, #0x12]
+ add r1, r0, #0x0
+ mul r1, r6
+ add r0, r2, r1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ ldr r0, [r5, #0xc]
+ bl FUN_0201AB0C
+ add r6, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_0201AB10
+ lsl r0, r0, #0x3
+ lsl r1, r6, #0x13
+ sub r0, r0, r4
+ lsr r1, r1, #0x10
+ lsl r0, r0, #0x10
+ str r1, [sp, #0x0]
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x4]
+ ldrb r1, [r5, #0x18]
+ ldr r0, [r5, #0xc]
+ mov r2, #0x0
+ lsl r1, r1, #0x1c
+ lsr r1, r1, #0x1c
+ add r3, r4, #0x0
+ bl FUN_020196F4
+ add sp, #0x8
+ pop {r3-r7, pc}
+_02001A46:
+ lsl r0, r0, #0x1c
+ lsr r3, r0, #0x1c
+ add r2, r4, #0x0
+ mul r2, r6
+ lsl r6, r3, #0x4
+ orr r3, r6
+ lsl r2, r2, #0x18
+ lsl r3, r3, #0x18
+ ldr r0, [r5, #0xc]
+ mov r1, #0x0
+ lsr r2, r2, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_0201A8C8
+ ldrh r0, [r5, #0x12]
+ ldrh r1, [r5, #0x2c]
+ add r3, r4, #0x0
+ sub r2, r0, r4
+ add r1, r1, r2
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0x10
+ add r0, r5, #0x0
+ lsr r1, r1, #0x10
+ lsr r2, r2, #0x10
+ bl FUN_02001714
+ ldr r0, [r5, #0xc]
+ bl FUN_0201AB0C
+ lsl r0, r0, #0x13
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x0]
+ ldrb r0, [r5, #0x17]
+ mov r2, #0x0
+ add r3, r2, #0x0
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1c
+ str r0, [sp, #0x4]
+ ldrb r1, [r5, #0x18]
+ ldr r0, [r5, #0xc]
+ lsl r1, r1, #0x1c
+ lsr r1, r1, #0x1c
+ bl FUN_020196F4
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02001AA4
+FUN_02001AA4: ; 0x02001AA4
+ push {r3-r7, lr}
+ sub sp, #0x10
+ str r1, [sp, #0x0]
+ str r2, [sp, #0x4]
+ add r4, r0, #0x0
+ str r3, [sp, #0x8]
+ ldrh r0, [r4, #0x2e]
+ mov r6, #0x0
+ add r5, r6, #0x0
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x4]
+ add r7, r6, #0x0
+ cmp r0, #0x0
+ bls _02001AF6
+_02001AC0:
+ ldr r1, [sp, #0x8]
+ add r0, r4, #0x0
+ bl FUN_0200186C
+ orr r5, r0
+ cmp r0, #0x2
+ bne _02001AEA
+ add r0, r6, #0x1
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ ldrh r1, [r4, #0x2c]
+ ldrh r0, [r4, #0x2e]
+ ldr r2, [r4, #0x0]
+ add r0, r1, r0
+ lsl r0, r0, #0x3
+ add r0, r2, r0
+ ldr r1, [r0, #0x4]
+ mov r0, #0x2
+ mvn r0, r0
+ cmp r1, r0
+ beq _02001AC0
+_02001AEA:
+ add r0, r7, #0x1
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+ ldr r0, [sp, #0x4]
+ cmp r7, r0
+ blo _02001AC0
+_02001AF6:
+ ldr r0, [sp, #0x0]
+ cmp r0, #0x0
+ beq _02001B5E
+ cmp r5, #0x3
+ bhi _02001B14
+ add r0, r5, r5
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02001B0C: ; jump table (using 16-bit offset)
+ .short _02001B14 - _02001B0C - 2; case 0
+ .short _02001B1A - _02001B0C - 2; case 1
+ .short _02001B38 - _02001B0C - 2; case 2
+ .short _02001B38 - _02001B0C - 2; case 3
+_02001B14:
+ add sp, #0x10
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02001B1A:
+ ldr r1, [sp, #0xc]
+ add r0, r4, #0x0
+ bl FUN_02001804
+ add r0, r4, #0x0
+ bl FUN_020017AC
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_02001B64
+ ldr r0, [r4, #0xc]
+ bl FUN_020191D0
+ b _02001B5E
+_02001B38:
+ ldr r1, [sp, #0xc]
+ add r0, r4, #0x0
+ bl FUN_02001804
+ ldr r2, [sp, #0x8]
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ bl FUN_0200198C
+ add r0, r4, #0x0
+ bl FUN_020017AC
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_02001B64
+ ldr r0, [r4, #0xc]
+ bl FUN_020191D0
+_02001B5E:
+ mov r0, #0x0
+ add sp, #0x10
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02001B64
+FUN_02001B64: ; 0x02001B64
+ push {r3-r5, lr}
+ ldr r3, [r0, #0x4]
+ add r2, r1, #0x0
+ cmp r3, #0x0
+ beq _02001B7E
+ ldrh r5, [r0, #0x2c]
+ ldrh r4, [r0, #0x2e]
+ ldr r1, [r0, #0x0]
+ add r4, r5, r4
+ lsl r4, r4, #0x3
+ add r1, r1, r4
+ ldr r1, [r1, #0x4]
+ blx r3
+_02001B7E:
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02001B80
+FUN_02001B80: ; 0x02001B80
+ ldr r3, _02001B88 ; =FUN_020191D0
+ ldr r0, [r0, #0xc]
+ bx r3
+ nop
+_02001B88: .word FUN_020191D0
+
+ thumb_func_start FUN_02001B8C
+FUN_02001B8C: ; 0x02001B8C
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ str r3, [sp, #0x0]
+ add r0, sp, #0x10
+ ldrb r0, [r0, #0x10]
+ add r6, r1, #0x0
+ mov r1, #0x20
+ add r7, r2, #0x0
+ str r0, [sp, #0x4]
+ bl FUN_02016998
+ add r4, r0, #0x0
+ add r3, r5, #0x0
+ ldmia r3!, {r0-r1}
+ add r2, r4, #0x0
+ stmia r2!, {r0-r1}
+ ldr r0, [r3, #0x0]
+ str r0, [r2, #0x0]
+ ldr r0, [sp, #0x4]
+ bl FUN_02013690
+ str r0, [r4, #0xc]
+ ldr r0, [sp, #0x24]
+ str r0, [r4, #0x10]
+ ldr r0, [sp, #0x0]
+ strb r0, [r4, #0x15]
+ add r0, r4, #0x0
+ bl FUN_02001FB4
+ strb r0, [r4, #0x16]
+ add r0, sp, #0x10
+ ldrb r0, [r0, #0x10]
+ mov r1, #0x0
+ strb r0, [r4, #0x1c]
+ strb r6, [r4, #0x17]
+ strb r7, [r4, #0x18]
+ ldrb r0, [r5, #0x8]
+ bl FUN_02002E4C
+ add r6, r0, #0x0
+ ldrb r0, [r5, #0x8]
+ mov r1, #0x2
+ bl FUN_02002E4C
+ add r0, r6, r0
+ strb r0, [r4, #0x19]
+ ldrb r0, [r5, #0x8]
+ mov r1, #0x1
+ bl FUN_02002E4C
+ add r6, r0, #0x0
+ ldrb r0, [r5, #0x8]
+ mov r1, #0x3
+ bl FUN_02002E4C
+ add r0, r6, r0
+ strb r0, [r4, #0x1a]
+ add r0, r4, #0x0
+ bl FUN_02001FF4
+ add r0, r4, #0x0
+ bl FUN_02002080
+ add r0, r4, #0x0
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02001C14
+FUN_02001C14: ; 0x02001C14
+ push {r4, lr}
+ sub sp, #0x8
+ add r4, sp, #0x0
+ ldrb r4, [r4, #0x10]
+ str r4, [sp, #0x0]
+ ldr r4, [sp, #0x14]
+ str r4, [sp, #0x4]
+ bl FUN_02001B8C
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x4]
+ bl FUN_020191D0
+ add r0, r4, #0x0
+ add sp, #0x8
+ pop {r4, pc}
+
+ thumb_func_start FUN_02001C34
+FUN_02001C34: ; 0x02001C34
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ ldrb r0, [r5, #0x8]
+ add r6, r1, #0x0
+ add r4, r2, #0x0
+ mov r1, #0x0
+ bl FUN_02002E4C
+ add r1, r0, #0x0
+ str r4, [sp, #0x0]
+ mov r0, #0x2
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ mov r2, #0x0
+ add r3, r6, #0x0
+ bl FUN_02001C14
+ add sp, #0x8
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02001C5C
+FUN_02001C5C: ; 0x02001C5C
+ push {r4, lr}
+ add r4, r0, #0x0
+ cmp r1, #0x0
+ beq _02001C68
+ ldrb r0, [r4, #0x15]
+ strb r0, [r1, #0x0]
+_02001C68:
+ ldr r0, [r4, #0xc]
+ bl FUN_020136C0
+ ldrb r0, [r4, #0x1c]
+ add r1, r4, #0x0
+ bl FUN_02016A8C
+ pop {r4, pc}
+
+ thumb_func_start FUN_02001C78
+FUN_02001C78: ; 0x02001C78
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ mov r1, #0x0
+ ldr r2, _02001D24 ; =0x021C48B8
+ strb r1, [r4, #0x1b]
+ ldr r2, [r2, #0x48]
+ mov r5, #0x1
+ add r3, r2, #0x0
+ tst r3, r5
+ beq _02001C9E
+ ldr r0, _02001D28 ; =0x000005DC
+ bl FUN_020054C8
+ ldrb r0, [r4, #0x15]
+ ldr r1, [r4, #0x0]
+ lsl r0, r0, #0x3
+ add r0, r1, r0
+ ldr r0, [r0, #0x4]
+ pop {r3-r5, pc}
+_02001C9E:
+ ldr r3, [r4, #0x10]
+ tst r3, r2
+ beq _02001CAE
+ ldr r0, _02001D28 ; =0x000005DC
+ bl FUN_020054C8
+ sub r0, r5, #0x3
+ pop {r3-r5, pc}
+_02001CAE:
+ mov r3, #0x40
+ tst r3, r2
+ beq _02001CC8
+ ldr r2, _02001D28 ; =0x000005DC
+ bl FUN_02001E64
+ cmp r0, #0x1
+ bne _02001CC2
+ add r0, r5, #0x0
+ strb r0, [r4, #0x1b]
+_02001CC2:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r5, pc}
+_02001CC8:
+ mov r1, #0x80
+ tst r1, r2
+ beq _02001CE4
+ ldr r2, _02001D28 ; =0x000005DC
+ add r1, r5, #0x0
+ bl FUN_02001E64
+ cmp r0, #0x1
+ bne _02001CDE
+ mov r0, #0x2
+ strb r0, [r4, #0x1b]
+_02001CDE:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r5, pc}
+_02001CE4:
+ mov r1, #0x20
+ tst r1, r2
+ beq _02001D00
+ ldr r2, _02001D28 ; =0x000005DC
+ mov r1, #0x2
+ bl FUN_02001E64
+ cmp r0, #0x1
+ bne _02001CFA
+ mov r0, #0x3
+ strb r0, [r4, #0x1b]
+_02001CFA:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r5, pc}
+_02001D00:
+ mov r1, #0x10
+ tst r2, r1
+ beq _02001D1C
+ ldr r2, _02001D28 ; =0x000005DC
+ mov r1, #0x3
+ bl FUN_02001E64
+ cmp r0, #0x1
+ bne _02001D16
+ mov r0, #0x4
+ strb r0, [r4, #0x1b]
+_02001D16:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r5, pc}
+_02001D1C:
+ sub r1, #0x11
+ add r0, r1, #0x0
+ pop {r3-r5, pc}
+ nop
+_02001D24: .word 0x021C48B8
+_02001D28: .word 0x000005DC
+
+ thumb_func_start FUN_02001D2C
+FUN_02001D2C: ; 0x02001D2C
+ push {r4-r6, lr}
+ add r2, r1, #0x0
+ add r4, r0, #0x0
+ mov r1, #0x0
+ ldr r3, _02001DD4 ; =0x021C48B8
+ strb r1, [r4, #0x1b]
+ ldr r5, [r3, #0x48]
+ mov r3, #0x1
+ add r6, r5, #0x0
+ tst r6, r3
+ beq _02001D54
+ ldr r0, _02001DD8 ; =0x000005DC
+ bl FUN_020054C8
+ ldrb r0, [r4, #0x15]
+ ldr r1, [r4, #0x0]
+ lsl r0, r0, #0x3
+ add r0, r1, r0
+ ldr r0, [r0, #0x4]
+ pop {r4-r6, pc}
+_02001D54:
+ ldr r6, [r4, #0x10]
+ tst r6, r5
+ beq _02001D66
+ ldr r0, _02001DD8 ; =0x000005DC
+ bl FUN_020054C8
+ mov r0, #0x1
+ mvn r0, r0
+ pop {r4-r6, pc}
+_02001D66:
+ mov r6, #0x40
+ tst r6, r5
+ beq _02001D7E
+ bl FUN_02001E64
+ cmp r0, #0x1
+ bne _02001D78
+ mov r0, #0x1
+ strb r0, [r4, #0x1b]
+_02001D78:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4-r6, pc}
+_02001D7E:
+ mov r1, #0x80
+ tst r1, r5
+ beq _02001D98
+ add r1, r3, #0x0
+ bl FUN_02001E64
+ cmp r0, #0x1
+ bne _02001D92
+ mov r0, #0x2
+ strb r0, [r4, #0x1b]
+_02001D92:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4-r6, pc}
+_02001D98:
+ mov r1, #0x20
+ tst r1, r5
+ beq _02001DB2
+ mov r1, #0x2
+ bl FUN_02001E64
+ cmp r0, #0x1
+ bne _02001DAC
+ mov r0, #0x3
+ strb r0, [r4, #0x1b]
+_02001DAC:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4-r6, pc}
+_02001DB2:
+ mov r1, #0x10
+ add r3, r5, #0x0
+ tst r3, r1
+ beq _02001DCE
+ mov r1, #0x3
+ bl FUN_02001E64
+ cmp r0, #0x1
+ bne _02001DC8
+ mov r0, #0x4
+ strb r0, [r4, #0x1b]
+_02001DC8:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4-r6, pc}
+_02001DCE:
+ sub r1, #0x11
+ add r0, r1, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+_02001DD4: .word 0x021C48B8
+_02001DD8: .word 0x000005DC
+
+ thumb_func_start FUN_02001DDC
+FUN_02001DDC: ; 0x02001DDC
+ push {r4, lr}
+ add r4, r0, #0x0
+ cmp r1, #0x5
+ bhi _02001E52
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02001DF0: ; jump table (using 16-bit offset)
+ .short _02001DFC - _02001DF0 - 2; case 0
+ .short _02001E0E - _02001DF0 - 2; case 1
+ .short _02001E1A - _02001DF0 - 2; case 2
+ .short _02001E28 - _02001DF0 - 2; case 3
+ .short _02001E36 - _02001DF0 - 2; case 4
+ .short _02001E44 - _02001DF0 - 2; case 5
+_02001DFC:
+ ldr r0, _02001E58 ; =0x000005DC
+ bl FUN_020054C8
+ ldrb r0, [r4, #0x15]
+ ldr r1, [r4, #0x0]
+ lsl r0, r0, #0x3
+ add r0, r1, r0
+ ldr r0, [r0, #0x4]
+ pop {r4, pc}
+_02001E0E:
+ ldr r0, _02001E58 ; =0x000005DC
+ bl FUN_020054C8
+ mov r0, #0x1
+ mvn r0, r0
+ pop {r4, pc}
+_02001E1A:
+ ldr r2, _02001E58 ; =0x000005DC
+ mov r1, #0x0
+ bl FUN_02001E64
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4, pc}
+_02001E28:
+ ldr r2, _02001E58 ; =0x000005DC
+ mov r1, #0x1
+ bl FUN_02001E64
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4, pc}
+_02001E36:
+ ldr r2, _02001E58 ; =0x000005DC
+ mov r1, #0x2
+ bl FUN_02001E64
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4, pc}
+_02001E44:
+ ldr r2, _02001E58 ; =0x000005DC
+ mov r1, #0x3
+ bl FUN_02001E64
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4, pc}
+_02001E52:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4, pc}
+ .balign 4
+_02001E58: .word 0x000005DC
+
+ thumb_func_start FUN_02001E5C
+FUN_02001E5C: ; 0x02001E5C
+ ldrb r0, [r0, #0x15]
+ bx lr
+
+ thumb_func_start FUN_02001E60
+FUN_02001E60: ; 0x02001E60
+ ldrb r0, [r0, #0x1b]
+ bx lr
+
+ thumb_func_start FUN_02001E64
+FUN_02001E64: ; 0x02001E64
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ ldrb r4, [r5, #0x15]
+ bl FUN_02001EBC
+ cmp r0, #0x0
+ bne _02001E7C
+ add sp, #0xc
+ mov r0, #0x0
+ pop {r4-r7, pc}
+_02001E7C:
+ ldrb r0, [r5, #0x8]
+ mov r1, #0x6
+ bl FUN_02002E4C
+ add r1, sp, #0x8
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ add r1, #0x1
+ add r2, sp, #0x8
+ add r3, r4, #0x0
+ bl FUN_020020B0
+ mov r0, #0x8
+ str r0, [sp, #0x0]
+ ldrb r0, [r5, #0x1a]
+ add r3, sp, #0x8
+ add r1, r7, #0x0
+ str r0, [sp, #0x4]
+ ldrb r2, [r3, #0x1]
+ ldrb r3, [r3, #0x0]
+ ldr r0, [r5, #0x4]
+ bl FUN_020196F4
+ add r0, r5, #0x0
+ bl FUN_02002080
+ add r0, r6, #0x0
+ bl FUN_020054C8
+ mov r0, #0x1
+ add sp, #0xc
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_02001EBC
+FUN_02001EBC: ; 0x02001EBC
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ cmp r1, #0x0
+ bne _02001EFA
+ ldrb r6, [r5, #0xa]
+ cmp r6, #0x1
+ bhi _02001ECE
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_02001ECE:
+ ldrb r4, [r5, #0x15]
+ add r1, r6, #0x0
+ add r0, r4, #0x0
+ blx _s32_div_f
+ cmp r1, #0x0
+ bne _02001EF2
+ ldrb r0, [r5, #0xb]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1e
+ bne _02001EE8
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_02001EE8:
+ sub r0, r6, #0x1
+ add r0, r4, r0
+ lsl r0, r0, #0x18
+ asr r2, r0, #0x18
+ b _02001F9A
+_02001EF2:
+ sub r0, r4, #0x1
+ lsl r0, r0, #0x18
+ asr r2, r0, #0x18
+ b _02001F9A
+_02001EFA:
+ cmp r1, #0x1
+ bne _02001F32
+ ldrb r1, [r5, #0xa]
+ cmp r1, #0x1
+ bhi _02001F08
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_02001F08:
+ ldrb r6, [r5, #0x15]
+ sub r4, r1, #0x1
+ add r0, r6, #0x0
+ blx _s32_div_f
+ cmp r4, r1
+ bne _02001F2A
+ ldrb r0, [r5, #0xb]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1e
+ bne _02001F22
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_02001F22:
+ sub r0, r6, r4
+ lsl r0, r0, #0x18
+ asr r2, r0, #0x18
+ b _02001F9A
+_02001F2A:
+ add r0, r6, #0x1
+ lsl r0, r0, #0x18
+ asr r2, r0, #0x18
+ b _02001F9A
+_02001F32:
+ cmp r1, #0x2
+ bne _02001F68
+ ldrb r3, [r5, #0x9]
+ cmp r3, #0x1
+ bhi _02001F40
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_02001F40:
+ ldrb r2, [r5, #0xa]
+ ldrb r1, [r5, #0x15]
+ cmp r1, r2
+ bhs _02001F60
+ ldrb r0, [r5, #0xb]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1e
+ bne _02001F54
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_02001F54:
+ sub r0, r3, #0x1
+ mul r0, r2
+ add r0, r1, r0
+ lsl r0, r0, #0x18
+ asr r2, r0, #0x18
+ b _02001F9A
+_02001F60:
+ sub r0, r1, r2
+ lsl r0, r0, #0x18
+ asr r2, r0, #0x18
+ b _02001F9A
+_02001F68:
+ ldrb r2, [r5, #0x9]
+ cmp r2, #0x1
+ bhi _02001F72
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_02001F72:
+ ldrb r1, [r5, #0xa]
+ ldrb r0, [r5, #0x15]
+ sub r2, r2, #0x1
+ mul r2, r1
+ cmp r0, r2
+ blt _02001F94
+ ldrb r2, [r5, #0xb]
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x1e
+ bne _02001F8A
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_02001F8A:
+ blx _s32_div_f
+ lsl r0, r1, #0x18
+ asr r2, r0, #0x18
+ b _02001F9A
+_02001F94:
+ add r0, r0, r1
+ lsl r0, r0, #0x18
+ asr r2, r0, #0x18
+_02001F9A:
+ ldr r1, [r5, #0x0]
+ lsl r0, r2, #0x3
+ add r0, r1, r0
+ ldr r1, [r0, #0x4]
+ mov r0, #0x2
+ mvn r0, r0
+ cmp r1, r0
+ bne _02001FAE
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_02001FAE:
+ strb r2, [r5, #0x15]
+ mov r0, #0x1
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02001FB4
+FUN_02001FB4: ; 0x02001FB4
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldrb r1, [r5, #0x9]
+ ldrb r0, [r5, #0xa]
+ mov r6, #0x0
+ add r4, r6, #0x0
+ mul r0, r1
+ cmp r0, #0x0
+ ble _02001FF0
+ add r7, r6, #0x0
+_02001FC8:
+ ldr r2, [r5, #0x0]
+ lsl r1, r4, #0x3
+ ldr r1, [r2, r1]
+ ldrb r0, [r5, #0x8]
+ add r2, r7, #0x0
+ bl FUN_02002E14
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r6, r0
+ bhs _02001FE0
+ add r6, r0, #0x0
+_02001FE0:
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ ldrb r1, [r5, #0x9]
+ ldrb r0, [r5, #0xa]
+ mul r0, r1
+ cmp r4, r0
+ blt _02001FC8
+_02001FF0:
+ add r0, r6, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02001FF4
+FUN_02001FF4: ; 0x02001FF4
+ push {r3-r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ ldrb r0, [r5, #0x8]
+ mov r1, #0x6
+ bl FUN_02002E4C
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x4]
+ bl FUN_02019620
+ ldrb r0, [r5, #0x19]
+ ldrb r1, [r5, #0x16]
+ ldrb r7, [r5, #0x17]
+ lsl r0, r0, #0x1
+ add r0, r1, r0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0xc]
+ ldrb r0, [r5, #0x9]
+ mov r6, #0x0
+ cmp r0, #0x0
+ bls _0200207C
+_02002022:
+ ldrb r2, [r5, #0xa]
+ mov r4, #0x0
+ cmp r2, #0x0
+ bls _02002068
+_0200202A:
+ ldrb r3, [r5, #0xb]
+ mul r2, r6
+ ldrb r0, [r5, #0x1a]
+ lsl r3, r3, #0x1c
+ lsr r3, r3, #0x1c
+ add r0, r0, r3
+ ldrb r1, [r5, #0x18]
+ mul r0, r4
+ add r2, r4, r2
+ add r0, r1, r0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ str r0, [sp, #0x8]
+ ldr r3, [r5, #0x0]
+ lsl r2, r2, #0x3
+ ldr r2, [r3, r2]
+ ldrb r1, [r5, #0x8]
+ ldr r0, [r5, #0x4]
+ add r3, r7, #0x0
+ bl FUN_0201BD84
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ ldrb r2, [r5, #0xa]
+ lsr r4, r0, #0x18
+ cmp r4, r2
+ blo _0200202A
+_02002068:
+ ldr r0, [sp, #0xc]
+ add r0, r7, r0
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+ add r0, r6, #0x1
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ ldrb r0, [r5, #0x9]
+ cmp r6, r0
+ blo _02002022
+_0200207C:
+ add sp, #0x10
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02002080
+FUN_02002080: ; 0x02002080
+ push {r3-r4, lr}
+ sub sp, #0x4
+ add r4, r0, #0x0
+ ldrb r1, [r4, #0xb]
+ lsl r1, r1, #0x1a
+ lsr r1, r1, #0x1e
+ cmp r1, #0x1
+ beq _020020AA
+ ldrb r3, [r4, #0x15]
+ add r1, sp, #0x0
+ add r1, #0x1
+ add r2, sp, #0x0
+ bl FUN_020020B0
+ add r3, sp, #0x0
+ ldrb r2, [r3, #0x1]
+ ldrb r3, [r3, #0x0]
+ ldr r0, [r4, #0xc]
+ ldr r1, [r4, #0x4]
+ bl FUN_020136F8
+_020020AA:
+ add sp, #0x4
+ pop {r3-r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020020B0
+FUN_020020B0: ; 0x020020B0
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r7, r3, #0x0
+ ldrb r1, [r5, #0xa]
+ add r0, r7, #0x0
+ add r6, r2, #0x0
+ blx _s32_div_f
+ ldrb r2, [r5, #0x19]
+ ldrb r1, [r5, #0x16]
+ lsl r2, r2, #0x1
+ add r1, r1, r2
+ mul r1, r0
+ strb r1, [r4, #0x0]
+ ldrb r1, [r5, #0xa]
+ add r0, r7, #0x0
+ blx _s32_div_f
+ ldrb r2, [r5, #0xb]
+ ldrb r3, [r5, #0x1a]
+ ldrb r0, [r5, #0x18]
+ lsl r2, r2, #0x1c
+ lsr r2, r2, #0x1c
+ add r2, r3, r2
+ mul r2, r1
+ add r0, r0, r2
+ strb r0, [r6, #0x0]
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020020EC
+FUN_020020EC: ; 0x020020EC
+ push {r3-r7, lr}
+ sub sp, #0x20
+ ldr r5, [sp, #0x3c]
+ str r2, [sp, #0xc]
+ add r7, r0, #0x0
+ str r1, [sp, #0x8]
+ str r3, [sp, #0x10]
+ ldr r2, _02002194 ; =0x00000141
+ mov r0, #0x1
+ mov r1, #0x1a
+ add r3, r5, #0x0
+ bl FUN_0200A86C
+ add r4, r0, #0x0
+ mov r0, #0x2
+ add r1, r5, #0x0
+ bl FUN_02012838
+ add r1, r4, #0x0
+ mov r2, #0x29
+ mov r3, #0x0
+ add r6, r0, #0x0
+ bl FUN_02012880
+ mov r3, #0x2a
+ add r2, r3, #0x0
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ sub r3, #0x2c
+ bl FUN_02012880
+ add r0, r4, #0x0
+ bl FUN_0200A8B8
+ add r0, r5, #0x0
+ mov r1, #0x1
+ str r6, [sp, #0x14]
+ bl FUN_02018FF4
+ add r1, r0, #0x0
+ str r1, [sp, #0x18]
+ mov r0, #0x0
+ add r3, sp, #0x14
+ strb r0, [r3, #0x8]
+ mov r0, #0x1
+ strb r0, [r3, #0x9]
+ mov r0, #0x2
+ strb r0, [r3, #0xa]
+ ldrb r0, [r3, #0xb]
+ mov r2, #0xf
+ bic r0, r2
+ strb r0, [r3, #0xb]
+ ldrb r4, [r3, #0xb]
+ mov r0, #0x30
+ bic r4, r0
+ strb r4, [r3, #0xb]
+ ldrb r0, [r3, #0xb]
+ bic r0, r2
+ strb r0, [r3, #0xb]
+ ldr r2, [sp, #0x8]
+ add r0, r7, #0x0
+ bl FUN_02019150
+ ldr r0, [sp, #0x18]
+ ldr r2, [sp, #0xc]
+ ldr r3, [sp, #0x10]
+ mov r1, #0x1
+ bl FUN_0200CCA4
+ lsl r0, r5, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x2
+ str r0, [sp, #0x4]
+ add r3, sp, #0x28
+ ldrb r3, [r3, #0x10]
+ add r0, sp, #0x14
+ mov r1, #0x8
+ mov r2, #0x0
+ bl FUN_02001C14
+ add sp, #0x20
+ pop {r3-r7, pc}
+ nop
+_02002194: .word 0x00000141
+
+ thumb_func_start FUN_02002198
+FUN_02002198: ; 0x02002198
+ push {r4, lr}
+ sub sp, #0x8
+ mov r4, #0x0
+ str r4, [sp, #0x0]
+ ldr r4, [sp, #0x10]
+ str r4, [sp, #0x4]
+ bl FUN_020020EC
+ add sp, #0x8
+ pop {r4, pc}
+
+ thumb_func_start FUN_020021AC
+FUN_020021AC: ; 0x020021AC
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_02001C78
+ add r6, r0, #0x0
+ mov r0, #0x0
+ mvn r0, r0
+ cmp r6, r0
+ beq _020021C8
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_020021EC
+_020021C8:
+ add r0, r6, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_020021CC
+FUN_020021CC: ; 0x020021CC
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r2, #0x0
+ bl FUN_02001DDC
+ add r6, r0, #0x0
+ mov r0, #0x0
+ mvn r0, r0
+ cmp r6, r0
+ beq _020021E8
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_020021EC
+_020021E8:
+ add r0, r6, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_020021EC
+FUN_020021EC: ; 0x020021EC
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x4]
+ add r4, r1, #0x0
+ mov r1, #0x0
+ bl FUN_0200CCF8
+ ldr r0, [r5, #0x4]
+ bl FUN_02019178
+ ldr r1, [r5, #0x4]
+ add r0, r4, #0x0
+ bl FUN_02016A8C
+ ldr r0, [r5, #0x0]
+ bl FUN_02012870
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_02001C5C
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02002218
+FUN_02002218: ; 0x02002218
+ push {r4, lr}
+ sub sp, #0x18
+ mov r4, #0x8
+ lsl r1, r1, #0x10
+ str r4, [sp, #0x0]
+ mov r3, #0x10
+ str r3, [sp, #0x4]
+ lsr r1, r1, #0x10
+ str r1, [sp, #0x8]
+ lsl r1, r2, #0x10
+ lsr r1, r1, #0x10
+ str r1, [sp, #0xc]
+ str r4, [sp, #0x10]
+ ldr r1, _02002244 ; =0x020ECAC8
+ mov r2, #0x0
+ str r3, [sp, #0x14]
+ add r3, r2, #0x0
+ bl FUN_02019658
+ add sp, #0x18
+ pop {r4, pc}
+ nop
+_02002244: .word 0x020ECAC8
diff --git a/asm/unk_020023C0.s b/asm/unk_020023C0.s
new file mode 100644
index 00000000..ec0f13f1
--- /dev/null
+++ b/asm/unk_020023C0.s
@@ -0,0 +1,8340 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ thumb_func_start FUN_020023C0
+FUN_020023C0: ; 0x020023C0
+ push {r3-r6, lr}
+ sub sp, #0xc
+ add r4, r0, #0x0
+ add r1, r4, #0x0
+ add r1, #0x24
+ ldrb r1, [r1, #0x0]
+ add r6, r4, #0x0
+ add r6, #0x1c
+ cmp r1, #0x6
+ bls _020023D6
+ b _02002838
+_020023D6:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_020023E2: ; jump table (using 16-bit offset)
+ .short _020023F0 - _020023E2 - 2; case 0
+ .short _02002742 - _020023E2 - 2; case 1
+ .short _0200275C - _020023E2 - 2; case 2
+ .short _02002786 - _020023E2 - 2; case 3
+ .short _020027B6 - _020023E2 - 2; case 4
+ .short _0200280C - _020023E2 - 2; case 5
+ .short _02002818 - _020023E2 - 2; case 6
+_020023F0:
+ ldr r0, _02002658 ; =0x021C48B8
+ ldr r1, [r0, #0x44]
+ mov r0, #0x3
+ tst r0, r1
+ beq _02002402
+ ldrb r0, [r6, #0x0]
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x1f
+ bne _02002414
+_02002402:
+ ldr r0, _0200265C ; =0x021C48F8
+ ldrh r0, [r0, #0x22]
+ cmp r0, #0x0
+ beq _02002432
+ ldr r0, _02002660 ; =0x02106FC4
+ ldrb r0, [r0, #0x0]
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x1f
+ beq _02002432
+_02002414:
+ add r0, r4, #0x0
+ mov r1, #0x0
+ add r0, #0x26
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x25
+ ldrb r0, [r0, #0x0]
+ lsl r0, r0, #0x19
+ lsr r0, r0, #0x19
+ beq _02002432
+ ldr r1, _02002660 ; =0x02106FC4
+ mov r0, #0x40
+ ldrb r2, [r1, #0x0]
+ orr r0, r2
+ strb r0, [r1, #0x0]
+_02002432:
+ add r0, r4, #0x0
+ add r0, #0x26
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _0200248C
+ add r0, r4, #0x0
+ add r0, #0x25
+ ldrb r0, [r0, #0x0]
+ lsl r0, r0, #0x19
+ lsr r0, r0, #0x19
+ beq _0200248C
+ add r0, r4, #0x0
+ add r0, #0x26
+ ldrb r0, [r0, #0x0]
+ sub r1, r0, #0x1
+ add r0, r4, #0x0
+ add r0, #0x26
+ strb r1, [r0, #0x0]
+ ldr r0, _02002660 ; =0x02106FC4
+ ldrb r0, [r0, #0x0]
+ lsl r1, r0, #0x1f
+ lsr r1, r1, #0x1f
+ beq _02002486
+ ldr r1, _02002658 ; =0x021C48B8
+ ldr r2, [r1, #0x48]
+ mov r1, #0x3
+ tst r1, r2
+ bne _02002478
+ ldr r1, _0200265C ; =0x021C48F8
+ ldrh r1, [r1, #0x20]
+ cmp r1, #0x0
+ beq _02002486
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x1f
+ beq _02002486
+_02002478:
+ ldrb r1, [r6, #0x0]
+ mov r0, #0x10
+ add r4, #0x26
+ orr r0, r1
+ strb r0, [r6, #0x0]
+ mov r0, #0x0
+ strb r0, [r4, #0x0]
+_02002486:
+ add sp, #0xc
+ mov r0, #0x3
+ pop {r3-r6, pc}
+_0200248C:
+ add r0, r4, #0x0
+ add r0, #0x25
+ ldrb r0, [r0, #0x0]
+ lsl r0, r0, #0x19
+ lsr r1, r0, #0x19
+ add r0, r4, #0x0
+ add r0, #0x26
+ strb r1, [r0, #0x0]
+ ldr r0, [r4, #0x0]
+ ldrh r5, [r0, #0x0]
+ add r0, r0, #0x2
+ str r0, [r4, #0x0]
+ mov r0, #0xf1
+ lsl r0, r0, #0x8
+ cmp r5, r0
+ bne _020024B0
+ bl ErrorHandling
+_020024B0:
+ ldr r0, _02002664 ; =0x0000F0FD
+ cmp r5, r0
+ bgt _020024DA
+ bge _0200250E
+ ldr r1, _02002668 ; =0x000025BD
+ cmp r5, r1
+ bgt _020024D0
+ sub r0, r1, #0x1
+ cmp r5, r0
+ blt _020024CE
+ bne _020024C8
+ b _020026D8
+_020024C8:
+ cmp r5, r1
+ bne _020024CE
+ b _020026EC
+_020024CE:
+ b _02002700
+_020024D0:
+ mov r0, #0xe
+ lsl r0, r0, #0xc
+ cmp r5, r0
+ beq _020024F2
+ b _02002700
+_020024DA:
+ ldr r0, _0200266C ; =0x0000FFFE
+ cmp r5, r0
+ bgt _020024E4
+ beq _0200251A
+ b _02002700
+_020024E4:
+ add r0, r0, #0x1
+ cmp r5, r0
+ beq _020024EC
+ b _02002700
+_020024EC:
+ add sp, #0xc
+ mov r0, #0x1
+ pop {r3-r6, pc}
+_020024F2:
+ ldrb r0, [r4, #0xa]
+ mov r1, #0x1
+ strb r0, [r4, #0xc]
+ ldrb r0, [r4, #0x9]
+ bl FUN_02002E4C
+ ldrb r1, [r4, #0xf]
+ ldrb r2, [r4, #0xd]
+ add sp, #0xc
+ add r0, r1, r0
+ add r0, r2, r0
+ strb r0, [r4, #0xd]
+ mov r0, #0x2
+ pop {r3-r6, pc}
+_0200250E:
+ ldr r0, [r4, #0x0]
+ add sp, #0xc
+ add r0, r0, #0x2
+ str r0, [r4, #0x0]
+ mov r0, #0x2
+ pop {r3-r6, pc}
+_0200251A:
+ ldr r0, [r4, #0x0]
+ sub r0, r0, #0x2
+ str r0, [r4, #0x0]
+ bl FUN_0201B8E0
+ lsl r0, r0, #0x10
+ ldr r1, _02002670 ; =0x0000FE06
+ lsr r0, r0, #0x10
+ cmp r0, r1
+ bgt _02002552
+ blt _02002532
+ b _02002678
+_02002532:
+ mov r1, #0x2
+ lsl r1, r1, #0x8
+ sub r1, r0, r1
+ cmp r1, #0x4
+ bhi _0200255C
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02002548: ; jump table (using 16-bit offset)
+ .short _020025B4 - _02002548 - 2; case 0
+ .short _020025DE - _02002548 - 2; case 1
+ .short _02002600 - _02002548 - 2; case 2
+ .short _02002618 - _02002548 - 2; case 3
+ .short _02002624 - _02002548 - 2; case 4
+_02002552:
+ mov r1, #0xff
+ lsl r1, r1, #0x8
+ cmp r0, r1
+ bgt _0200255E
+ beq _02002566
+_0200255C:
+ b _020026CA
+_0200255E:
+ add r1, r1, #0x1
+ cmp r0, r1
+ beq _02002630
+ b _020026CA
+_02002566:
+ ldr r0, [r4, #0x0]
+ mov r1, #0x0
+ bl FUN_0201B914
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ cmp r0, #0xff
+ bne _02002596
+ ldrb r0, [r4, #0x11]
+ ldrb r2, [r4, #0x17]
+ sub r1, r0, #0x1
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r0, r0, #0x1
+ add r0, #0x64
+ strb r0, [r4, #0x17]
+ cmp r2, #0x64
+ blo _02002644
+ cmp r2, #0x6b
+ bhs _02002644
+ sub r2, #0x64
+ lsl r0, r2, #0x10
+ lsr r0, r0, #0x10
+ b _0200259E
+_02002596:
+ cmp r0, #0x64
+ blo _0200259E
+ strb r0, [r4, #0x17]
+ b _020026CA
+_0200259E:
+ lsl r1, r0, #0x1
+ add r0, r1, #0x1
+ strb r0, [r4, #0x11]
+ add r0, r1, #0x2
+ strb r0, [r4, #0x13]
+ ldrb r0, [r4, #0x11]
+ ldrb r1, [r4, #0x12]
+ ldrb r2, [r4, #0x13]
+ bl FUN_0201C05C
+ b _020026CA
+_020025B4:
+ ldr r0, [r4, #0x0]
+ mov r1, #0x0
+ bl FUN_0201B914
+ lsl r0, r0, #0x10
+ lsr r3, r0, #0x10
+ ldrb r1, [r4, #0xc]
+ ldrb r2, [r4, #0xd]
+ add r0, r4, #0x0
+ bl FUN_0201C1EC
+ add r0, r4, #0x0
+ add r0, #0x25
+ ldrb r0, [r0, #0x0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1f
+ beq _020026CA
+ ldr r0, [r4, #0x4]
+ bl FUN_020191D0
+ b _020026CA
+_020025DE:
+ ldr r0, [r4, #0x0]
+ mov r1, #0x0
+ bl FUN_0201B914
+ add r1, r4, #0x0
+ add r1, #0x26
+ strb r0, [r1, #0x0]
+ ldr r0, [r4, #0x0]
+ bl FUN_0201B8B8
+ str r0, [r4, #0x0]
+ mov r0, #0x6
+ add r4, #0x24
+ strb r0, [r4, #0x0]
+ add sp, #0xc
+ mov r0, #0x3
+ pop {r3-r6, pc}
+_02002600:
+ ldr r0, [r4, #0x0]
+ mov r1, #0x0
+ bl FUN_0201B914
+ strh r0, [r4, #0x2a]
+ ldr r0, [r4, #0x0]
+ bl FUN_0201B8B8
+ str r0, [r4, #0x0]
+ add sp, #0xc
+ mov r0, #0x3
+ pop {r3-r6, pc}
+_02002618:
+ ldr r0, [r4, #0x0]
+ mov r1, #0x0
+ bl FUN_0201B914
+ strb r0, [r4, #0xc]
+ b _020026CA
+_02002624:
+ ldr r0, [r4, #0x0]
+ mov r1, #0x0
+ bl FUN_0201B914
+ strb r0, [r4, #0xd]
+ b _020026CA
+_02002630:
+ ldr r0, [r4, #0x0]
+ mov r1, #0x0
+ bl FUN_0201B914
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ cmp r0, #0x64
+ beq _02002646
+ cmp r0, #0xc8
+ beq _0200264E
+_02002644:
+ b _020026CA
+_02002646:
+ mov r0, #0x0
+ strh r0, [r4, #0x14]
+ strb r0, [r4, #0x16]
+ b _020026CA
+_0200264E:
+ ldr r0, _02002674 ; =0x0000FFFC
+ strh r0, [r4, #0x14]
+ mov r0, #0x0
+ strb r0, [r4, #0x16]
+ b _020026CA
+ .balign 4
+_02002658: .word 0x021C48B8
+_0200265C: .word 0x021C48F8
+_02002660: .word 0x02106FC4
+_02002664: .word 0x0000F0FD
+_02002668: .word 0x000025BD
+_0200266C: .word 0x0000FFFE
+_02002670: .word 0x0000FE06
+_02002674: .word 0x0000FFFC
+_02002678:
+ ldr r0, [r4, #0x0]
+ mov r1, #0x0
+ bl FUN_0201B914
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ mov r0, #0xfe
+ lsl r0, r0, #0x8
+ cmp r1, r0
+ beq _020026AE
+ add r0, r0, #0x1
+ cmp r1, r0
+ bne _020026CA
+ add r0, r4, #0x0
+ mov r1, #0x2
+ add r0, #0x24
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ bl FUN_0200284C
+ ldr r0, [r4, #0x0]
+ bl FUN_0201B8B8
+ str r0, [r4, #0x0]
+ add sp, #0xc
+ mov r0, #0x3
+ pop {r3-r6, pc}
+_020026AE:
+ add r0, r4, #0x0
+ mov r1, #0x3
+ add r0, #0x24
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ bl FUN_0200284C
+ ldr r0, [r4, #0x0]
+ bl FUN_0201B8B8
+ str r0, [r4, #0x0]
+ add sp, #0xc
+ mov r0, #0x3
+ pop {r3-r6, pc}
+_020026CA:
+ ldr r0, [r4, #0x0]
+ bl FUN_0201B8B8
+ str r0, [r4, #0x0]
+ add sp, #0xc
+ mov r0, #0x2
+ pop {r3-r6, pc}
+_020026D8:
+ add r0, r4, #0x0
+ mov r1, #0x2
+ add r0, #0x24
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ bl FUN_0200284C
+ add sp, #0xc
+ mov r0, #0x3
+ pop {r3-r6, pc}
+_020026EC:
+ add r0, r4, #0x0
+ mov r1, #0x3
+ add r0, #0x24
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ bl FUN_0200284C
+ add sp, #0xc
+ mov r0, #0x3
+ pop {r3-r6, pc}
+_02002700:
+ ldrb r0, [r6, #0x0]
+ add r1, r5, #0x0
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1c
+ bl FUN_02002D94
+ add r5, r0, #0x0
+ ldrb r0, [r4, #0xc]
+ add r2, r5, #0x0
+ add r3, r5, #0x0
+ str r0, [sp, #0x0]
+ ldrb r0, [r4, #0xd]
+ add r2, #0x80
+ add r3, #0x81
+ str r0, [sp, #0x4]
+ ldrh r0, [r4, #0x14]
+ add r1, r5, #0x0
+ str r0, [sp, #0x8]
+ ldrb r2, [r2, #0x0]
+ ldrb r3, [r3, #0x0]
+ ldr r0, [r4, #0x4]
+ bl FUN_0201974C
+ add r5, #0x80
+ ldrb r1, [r5, #0x0]
+ ldrb r0, [r4, #0xe]
+ ldrb r2, [r4, #0xc]
+ add sp, #0xc
+ add r0, r1, r0
+ add r0, r2, r0
+ strb r0, [r4, #0xc]
+ mov r0, #0x0
+ pop {r3-r6, pc}
+_02002742:
+ bl FUN_02002B3C
+ cmp r0, #0x0
+ beq _02002756
+ add r0, r4, #0x0
+ bl FUN_02002A00
+ mov r0, #0x0
+ add r4, #0x24
+ strb r0, [r4, #0x0]
+_02002756:
+ add sp, #0xc
+ mov r0, #0x3
+ pop {r3-r6, pc}
+_0200275C:
+ bl FUN_02002B18
+ cmp r0, #0x0
+ beq _02002780
+ add r0, r4, #0x0
+ bl FUN_02002A00
+ ldrb r1, [r4, #0x12]
+ ldr r0, [r4, #0x4]
+ bl FUN_02019620
+ ldrb r0, [r4, #0xa]
+ strb r0, [r4, #0xc]
+ ldrb r0, [r4, #0xb]
+ strb r0, [r4, #0xd]
+ mov r0, #0x0
+ add r4, #0x24
+ strb r0, [r4, #0x0]
+_02002780:
+ add sp, #0xc
+ mov r0, #0x3
+ pop {r3-r6, pc}
+_02002786:
+ bl FUN_02002B18
+ cmp r0, #0x0
+ beq _020027B0
+ add r0, r4, #0x0
+ bl FUN_02002A00
+ ldrb r0, [r4, #0x9]
+ mov r1, #0x1
+ bl FUN_02002E4C
+ ldrb r1, [r4, #0xf]
+ add r1, r1, r0
+ add r0, r4, #0x0
+ add r0, #0x27
+ strb r1, [r0, #0x0]
+ ldrb r0, [r4, #0xa]
+ strb r0, [r4, #0xc]
+ mov r0, #0x4
+ add r4, #0x24
+ strb r0, [r4, #0x0]
+_020027B0:
+ add sp, #0xc
+ mov r0, #0x3
+ pop {r3-r6, pc}
+_020027B6:
+ add r0, #0x27
+ ldrb r2, [r0, #0x0]
+ cmp r2, #0x0
+ beq _02002800
+ cmp r2, #0x4
+ ldrb r5, [r4, #0x12]
+ bge _020027D8
+ lsl r3, r5, #0x4
+ orr r3, r5
+ lsl r3, r3, #0x18
+ ldr r0, [r4, #0x4]
+ mov r1, #0x0
+ lsr r3, r3, #0x18
+ bl FUN_0201A8C8
+ mov r1, #0x0
+ b _020027F2
+_020027D8:
+ lsl r3, r5, #0x4
+ orr r3, r5
+ lsl r3, r3, #0x18
+ ldr r0, [r4, #0x4]
+ mov r1, #0x0
+ mov r2, #0x4
+ lsr r3, r3, #0x18
+ bl FUN_0201A8C8
+ add r0, r4, #0x0
+ add r0, #0x27
+ ldrb r0, [r0, #0x0]
+ sub r1, r0, #0x4
+_020027F2:
+ add r0, r4, #0x0
+ add r0, #0x27
+ strb r1, [r0, #0x0]
+ ldr r0, [r4, #0x4]
+ bl FUN_020191D0
+ b _02002806
+_02002800:
+ mov r0, #0x0
+ add r4, #0x24
+ strb r0, [r4, #0x0]
+_02002806:
+ add sp, #0xc
+ mov r0, #0x3
+ pop {r3-r6, pc}
+_0200280C:
+ mov r0, #0x0
+ add r4, #0x24
+ strb r0, [r4, #0x0]
+ add sp, #0xc
+ mov r0, #0x3
+ pop {r3-r6, pc}
+_02002818:
+ add r0, #0x26
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _0200282C
+ add r0, r4, #0x0
+ add r0, #0x26
+ ldrb r0, [r0, #0x0]
+ add r4, #0x26
+ sub r0, r0, #0x1
+ b _02002830
+_0200282C:
+ mov r0, #0x0
+ add r4, #0x24
+_02002830:
+ add sp, #0xc
+ strb r0, [r4, #0x0]
+ mov r0, #0x3
+ pop {r3-r6, pc}
+_02002838:
+ mov r0, #0x1
+ add sp, #0xc
+ pop {r3-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02002840
+FUN_02002840: ; 0x02002840
+ ldr r1, _02002848 ; =0x02106FC4
+ strh r0, [r1, #0x2]
+ bx lr
+ nop
+_02002848: .word 0x02106FC4
+
+ thumb_func_start FUN_0200284C
+FUN_0200284C: ; 0x0200284C
+ ldr r1, _02002874 ; =0x02106FC4
+ add r0, #0x1c
+ ldrb r1, [r1, #0x0]
+ lsl r1, r1, #0x1d
+ lsr r1, r1, #0x1f
+ beq _02002862
+ ldrb r2, [r0, #0x2]
+ mov r1, #0xff
+ bic r2, r1
+ strb r2, [r0, #0x2]
+ bx lr
+_02002862:
+ ldrb r2, [r0, #0x1]
+ mov r1, #0x60
+ bic r2, r1
+ strb r2, [r0, #0x1]
+ ldrb r2, [r0, #0x1]
+ mov r1, #0x1f
+ bic r2, r1
+ strb r2, [r0, #0x1]
+ bx lr
+ .balign 4
+_02002874: .word 0x02106FC4
+
+ thumb_func_start FUN_02002878
+FUN_02002878: ; 0x02002878
+ push {r4-r7, lr}
+ sub sp, #0x2c
+ add r5, r0, #0x0
+ ldr r0, _020029F8 ; =0x02106FC4
+ add r4, r5, #0x0
+ ldrb r0, [r0, #0x0]
+ add r4, #0x1c
+ lsl r0, r0, #0x1d
+ lsr r0, r0, #0x1f
+ beq _0200288E
+ b _020029F4
+_0200288E:
+ ldrb r0, [r4, #0x1]
+ lsl r1, r0, #0x1b
+ lsr r2, r1, #0x1b
+ beq _020028AC
+ mov r1, #0x1f
+ add r2, #0xff
+ bic r0, r1
+ lsl r1, r2, #0x18
+ lsr r2, r1, #0x18
+ mov r1, #0x1f
+ and r1, r2
+ orr r0, r1
+ add sp, #0x2c
+ strb r0, [r4, #0x1]
+ pop {r4-r7, pc}
+_020028AC:
+ ldr r0, [r5, #0x4]
+ bl FUN_0201AB08
+ str r0, [sp, #0x20]
+ ldr r0, [r5, #0x4]
+ bl FUN_0201AB14
+ str r0, [sp, #0x24]
+ ldr r0, [r5, #0x4]
+ bl FUN_0201AB18
+ str r0, [sp, #0x28]
+ ldr r0, [r5, #0x4]
+ bl FUN_0201AB0C
+ ldr r1, _020029F8 ; =0x02106FC4
+ ldrh r6, [r1, #0x2]
+ ldr r1, [sp, #0x28]
+ add r7, r1, #0x2
+ ldr r1, [sp, #0x24]
+ add r2, r6, #0x0
+ add r0, r1, r0
+ str r0, [sp, #0x1c]
+ add r0, r0, #0x1
+ str r0, [sp, #0x18]
+ lsl r0, r7, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ mov r0, #0x10
+ str r0, [sp, #0xc]
+ add r2, #0x12
+ mov r12, r2
+ ldrb r2, [r4, #0x1]
+ ldr r0, [r5, #0x4]
+ ldr r1, [sp, #0x20]
+ lsl r2, r2, #0x19
+ lsr r3, r2, #0x1e
+ ldr r2, _020029FC ; =0x020ECB50
+ ldr r0, [r0, #0x0]
+ ldrb r2, [r2, r3]
+ mov r3, r12
+ lsl r2, r2, #0x2
+ add r2, r3, r2
+ ldr r3, [sp, #0x18]
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x18
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ ldr r0, [sp, #0x1c]
+ ldr r1, [sp, #0x20]
+ add r0, r0, #0x2
+ str r0, [sp, #0x10]
+ lsl r0, r7, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ mov r0, #0x10
+ str r0, [sp, #0xc]
+ ldrb r2, [r4, #0x1]
+ add r7, r6, #0x0
+ ldr r0, [r5, #0x4]
+ lsl r2, r2, #0x19
+ lsr r3, r2, #0x1e
+ ldr r2, _020029FC ; =0x020ECB50
+ add r7, #0x13
+ ldrb r2, [r2, r3]
+ ldr r3, [sp, #0x10]
+ ldr r0, [r0, #0x0]
+ lsl r2, r2, #0x2
+ add r2, r7, r2
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x18
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ ldr r0, [sp, #0x28]
+ add r7, r6, #0x0
+ add r0, r0, #0x3
+ str r0, [sp, #0x14]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ mov r0, #0x10
+ str r0, [sp, #0xc]
+ ldrb r2, [r4, #0x1]
+ ldr r0, [r5, #0x4]
+ add r7, #0x14
+ lsl r2, r2, #0x19
+ lsr r3, r2, #0x1e
+ ldr r2, _020029FC ; =0x020ECB50
+ ldr r0, [r0, #0x0]
+ ldrb r2, [r2, r3]
+ ldr r3, [sp, #0x18]
+ ldr r1, [sp, #0x20]
+ lsl r2, r2, #0x2
+ add r2, r7, r2
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x18
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ ldr r0, [sp, #0x14]
+ add r6, #0x15
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ mov r0, #0x10
+ str r0, [sp, #0xc]
+ ldrb r2, [r4, #0x1]
+ ldr r0, [r5, #0x4]
+ ldr r1, [sp, #0x20]
+ lsl r2, r2, #0x19
+ lsr r3, r2, #0x1e
+ ldr r2, _020029FC ; =0x020ECB50
+ ldr r0, [r0, #0x0]
+ ldrb r2, [r2, r3]
+ ldr r3, [sp, #0x10]
+ lsl r2, r2, #0x2
+ add r2, r6, r2
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x18
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ ldr r0, [r5, #0x4]
+ ldr r1, [sp, #0x20]
+ ldr r0, [r0, #0x0]
+ bl FUN_02017CD0
+ ldrb r1, [r4, #0x1]
+ mov r0, #0x1f
+ bic r1, r0
+ mov r0, #0x8
+ orr r0, r1
+ strb r0, [r4, #0x1]
+ ldrb r2, [r4, #0x1]
+ mov r1, #0x60
+ add r0, r2, #0x0
+ bic r0, r1
+ lsl r1, r2, #0x19
+ lsr r1, r1, #0x1e
+ add r1, r1, #0x1
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ lsl r1, r1, #0x1e
+ lsr r1, r1, #0x19
+ orr r0, r1
+ strb r0, [r4, #0x1]
+_020029F4:
+ add sp, #0x2c
+ pop {r4-r7, pc}
+ .balign 4
+_020029F8: .word 0x02106FC4
+_020029FC: .word 0x020ECB50
+
+ thumb_func_start FUN_02002A00
+FUN_02002A00: ; 0x02002A00
+ push {r3-r7, lr}
+ sub sp, #0x18
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x4]
+ bl FUN_0201AB08
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x4]
+ bl FUN_0201AB14
+ str r0, [sp, #0x14]
+ ldr r0, [r5, #0x4]
+ bl FUN_0201AB18
+ add r6, r0, #0x0
+ ldr r0, [r5, #0x4]
+ bl FUN_0201AB0C
+ ldr r1, _02002A90 ; =0x02106FC4
+ add r7, r6, #0x2
+ ldrh r4, [r1, #0x2]
+ ldr r1, [sp, #0x14]
+ add r6, r1, r0
+ lsl r0, r7, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ mov r0, #0x2
+ str r0, [sp, #0x8]
+ mov r0, #0x10
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x4]
+ add r2, r4, #0x0
+ add r2, #0xa
+ add r3, r6, #0x1
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x18
+ ldr r0, [r0, #0x0]
+ ldr r1, [sp, #0x10]
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ lsl r0, r7, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ mov r0, #0x2
+ str r0, [sp, #0x8]
+ mov r0, #0x10
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x4]
+ add r4, #0xb
+ add r3, r6, #0x2
+ lsl r2, r4, #0x10
+ lsl r3, r3, #0x18
+ ldr r0, [r0, #0x0]
+ ldr r1, [sp, #0x10]
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ ldr r0, [r5, #0x4]
+ ldr r1, [sp, #0x10]
+ ldr r0, [r0, #0x0]
+ bl FUN_02017CD0
+ add sp, #0x18
+ pop {r3-r7, pc}
+ nop
+_02002A90: .word 0x02106FC4
+
+ thumb_func_start FUN_02002A94
+FUN_02002A94: ; 0x02002A94
+ push {r3, lr}
+ ldr r0, _02002ACC ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x3
+ tst r0, r1
+ bne _02002AB2
+ ldr r0, _02002AD0 ; =0x021C48F8
+ ldrh r0, [r0, #0x20]
+ cmp r0, #0x0
+ beq _02002AC6
+ ldr r0, _02002AD4 ; =0x02106FC4
+ ldrb r0, [r0, #0x0]
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x1f
+ beq _02002AC6
+_02002AB2:
+ ldr r0, _02002AD8 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r1, _02002AD4 ; =0x02106FC4
+ mov r0, #0x80
+ ldrb r2, [r1, #0x0]
+ orr r0, r2
+ strb r0, [r1, #0x0]
+ mov r0, #0x1
+ pop {r3, pc}
+_02002AC6:
+ mov r0, #0x0
+ pop {r3, pc}
+ nop
+_02002ACC: .word 0x021C48B8
+_02002AD0: .word 0x021C48F8
+_02002AD4: .word 0x02106FC4
+_02002AD8: .word 0x000005DC
+
+ thumb_func_start FUN_02002ADC
+FUN_02002ADC: ; 0x02002ADC
+ push {r4, lr}
+ add r2, r0, #0x0
+ add r2, #0x1c
+ ldrb r1, [r2, #0x2]
+ add r4, r1, #0x0
+ cmp r4, #0x64
+ bne _02002AEE
+ mov r0, #0x1
+ pop {r4, pc}
+_02002AEE:
+ mov r3, #0xff
+ bic r1, r3
+ add r3, r4, #0x1
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x18
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x18
+ orr r1, r3
+ strb r1, [r2, #0x2]
+ ldr r1, _02002B14 ; =0x02106FC4
+ ldrb r1, [r1, #0x0]
+ lsl r1, r1, #0x1a
+ lsr r1, r1, #0x1f
+ beq _02002B10
+ bl FUN_02002A94
+ pop {r4, pc}
+_02002B10:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+_02002B14: .word 0x02106FC4
+
+ thumb_func_start FUN_02002B18
+FUN_02002B18: ; 0x02002B18
+ push {r4, lr}
+ ldr r1, _02002B38 ; =0x02106FC4
+ add r4, r0, #0x0
+ ldrb r1, [r1, #0x0]
+ lsl r1, r1, #0x1d
+ lsr r1, r1, #0x1f
+ beq _02002B2C
+ bl FUN_02002ADC
+ pop {r4, pc}
+_02002B2C:
+ bl FUN_02002878
+ add r0, r4, #0x0
+ bl FUN_02002A94
+ pop {r4, pc}
+ .balign 4
+_02002B38: .word 0x02106FC4
+
+ thumb_func_start FUN_02002B3C
+FUN_02002B3C: ; 0x02002B3C
+ push {r3, lr}
+ ldr r1, _02002B5C ; =0x02106FC4
+ ldrb r1, [r1, #0x0]
+ lsl r1, r1, #0x1d
+ lsr r1, r1, #0x1f
+ beq _02002B52
+ bl FUN_02002ADC
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ pop {r3, pc}
+_02002B52:
+ bl FUN_02002A94
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ pop {r3, pc}
+ .balign 4
+_02002B5C: .word 0x02106FC4
+
+ thumb_func_start FUN_02002B60
+FUN_02002B60: ; 0x02002B60
+ ldr r2, _02002B78 ; =0x02106FC4
+ mov r1, #0x1
+ ldrb r3, [r2, #0x0]
+ lsl r0, r0, #0x18
+ bic r3, r1
+ lsr r1, r0, #0x18
+ mov r0, #0x1
+ and r0, r1
+ orr r0, r3
+ strb r0, [r2, #0x0]
+ bx lr
+ nop
+_02002B78: .word 0x02106FC4
+
+ thumb_func_start FUN_02002B7C
+FUN_02002B7C: ; 0x02002B7C
+ push {r3-r4}
+ ldr r1, _02002BB4 ; =0x02106FC4
+ mov r3, #0x4
+ ldrb r2, [r1, #0x0]
+ mov r4, #0x1
+ bic r2, r3
+ add r3, r0, #0x0
+ and r3, r4
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x18
+ lsl r3, r3, #0x1f
+ lsr r3, r3, #0x1d
+ orr r2, r3
+ asr r0, r0, #0x1
+ and r0, r4
+ strb r2, [r1, #0x0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ lsl r0, r0, #0x1f
+ ldrb r2, [r1, #0x0]
+ mov r3, #0x20
+ lsr r0, r0, #0x1a
+ bic r2, r3
+ orr r0, r2
+ strb r0, [r1, #0x0]
+ pop {r3-r4}
+ bx lr
+ nop
+_02002BB4: .word 0x02106FC4
+
+ thumb_func_start FUN_02002BB8
+FUN_02002BB8: ; 0x02002BB8
+ ldr r2, _02002BD0 ; =0x02106FC4
+ lsl r0, r0, #0x18
+ ldrb r3, [r2, #0x0]
+ lsr r0, r0, #0x18
+ mov r1, #0x10
+ lsl r0, r0, #0x1f
+ bic r3, r1
+ lsr r0, r0, #0x1b
+ orr r0, r3
+ strb r0, [r2, #0x0]
+ bx lr
+ nop
+_02002BD0: .word 0x02106FC4
+
+ thumb_func_start FUN_02002BD4
+FUN_02002BD4: ; 0x02002BD4
+ ldr r0, _02002BE0 ; =0x02106FC4
+ ldrb r0, [r0, #0x0]
+ lsl r0, r0, #0x19
+ lsr r0, r0, #0x1f
+ bx lr
+ nop
+_02002BE0: .word 0x02106FC4
+
+ thumb_func_start FUN_02002BE4
+FUN_02002BE4: ; 0x02002BE4
+ ldr r1, _02002BF0 ; =0x02106FC4
+ mov r0, #0x40
+ ldrb r2, [r1, #0x0]
+ bic r2, r0
+ strb r2, [r1, #0x0]
+ bx lr
+ .balign 4
+_02002BF0: .word 0x02106FC4
+
+ thumb_func_start FUN_02002BF4
+FUN_02002BF4: ; 0x02002BF4
+ ldr r0, _02002C00 ; =0x02106FC4
+ ldrb r0, [r0, #0x0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1f
+ bx lr
+ nop
+_02002C00: .word 0x02106FC4
+
+ thumb_func_start FUN_02002C04
+FUN_02002C04: ; 0x02002C04
+ ldr r1, _02002C10 ; =0x02106FC4
+ mov r0, #0x80
+ ldrb r2, [r1, #0x0]
+ bic r2, r0
+ strb r2, [r1, #0x0]
+ bx lr
+ .balign 4
+_02002C10: .word 0x02106FC4
+
+ thumb_func_start FUN_02002C14
+FUN_02002C14: ; 0x02002C14
+ push {r4, lr}
+ ldr r0, _02002C44 ; =0x02106FCC
+ ldr r4, _02002C48 ; =0x02106FC8
+ mov r1, #0x0
+ str r0, [r4, #0x0]
+ add r2, r1, #0x0
+ add r0, r1, #0x0
+_02002C22:
+ ldr r3, [r4, #0x0]
+ add r1, r1, #0x1
+ add r3, r3, r2
+ add r3, #0x84
+ str r0, [r3, #0x0]
+ ldr r3, [r4, #0x0]
+ add r3, r3, r2
+ add r3, #0x94
+ add r2, r2, #0x4
+ str r0, [r3, #0x0]
+ cmp r1, #0x4
+ blo _02002C22
+ ldr r0, _02002C4C ; =0x020ECB64
+ bl FUN_0201BCBC
+ pop {r4, pc}
+ nop
+_02002C44: .word 0x02106FCC
+_02002C48: .word 0x02106FC8
+_02002C4C: .word 0x020ECB64
+
+ thumb_func_start FUN_02002C50
+FUN_02002C50: ; 0x02002C50
+ push {r3-r4, lr}
+ sub sp, #0x4
+ str r1, [sp, #0x0]
+ lsl r4, r0, #0x2
+ ldr r1, _02002C78 ; =0x020ECB54
+ ldr r3, _02002C7C ; =0x020ECB56
+ ldrh r1, [r1, r4]
+ ldrh r3, [r3, r4]
+ mov r0, #0xe
+ mov r2, #0x1
+ bl FUN_02021590
+ ldr r1, _02002C80 ; =0x02106FC8
+ ldr r1, [r1, #0x0]
+ add r1, r1, r4
+ add r1, #0x94
+ str r0, [r1, #0x0]
+ add sp, #0x4
+ pop {r3-r4, pc}
+ nop
+_02002C78: .word 0x020ECB54
+_02002C7C: .word 0x020ECB56
+_02002C80: .word 0x02106FC8
+
+ thumb_func_start FUN_02002C84
+FUN_02002C84: ; 0x02002C84
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ add r5, r1, #0x0
+ cmp r4, #0x4
+ blt _02002C92
+ bl ErrorHandling
+_02002C92:
+ ldr r0, _02002CBC ; =0x02106FC8
+ lsl r4, r4, #0x2
+ ldr r0, [r0, #0x0]
+ add r0, r0, r4
+ add r0, #0x94
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _02002CA6
+ bl ErrorHandling
+_02002CA6:
+ ldr r0, _02002CBC ; =0x02106FC8
+ mov r1, #0x0
+ ldr r0, [r0, #0x0]
+ add r2, r5, #0x0
+ add r0, r0, r4
+ add r0, #0x94
+ ldr r0, [r0, #0x0]
+ bl FUN_020215E0
+ pop {r3-r5, pc}
+ nop
+_02002CBC: .word 0x02106FC8
+
+ thumb_func_start FUN_02002CC0
+FUN_02002CC0: ; 0x02002CC0
+ push {r4, lr}
+ add r4, r0, #0x0
+ cmp r4, #0x4
+ blt _02002CCC
+ bl ErrorHandling
+_02002CCC:
+ ldr r0, _02002CF4 ; =0x02106FC8
+ lsl r4, r4, #0x2
+ ldr r0, [r0, #0x0]
+ add r0, r0, r4
+ add r0, #0x94
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _02002CE0
+ bl ErrorHandling
+_02002CE0:
+ ldr r0, _02002CF4 ; =0x02106FC8
+ mov r1, #0x1
+ ldr r0, [r0, #0x0]
+ mov r2, #0x0
+ add r0, r0, r4
+ add r0, #0x94
+ ldr r0, [r0, #0x0]
+ bl FUN_020215E0
+ pop {r4, pc}
+ .balign 4
+_02002CF4: .word 0x02106FC8
+
+ thumb_func_start FUN_02002CF8
+FUN_02002CF8: ; 0x02002CF8
+ push {r3-r7, lr}
+ add r4, r0, #0x0
+ cmp r4, #0x4
+ blt _02002D04
+ bl ErrorHandling
+_02002D04:
+ ldr r0, _02002D8C ; =0x02106FC8
+ lsl r6, r4, #0x2
+ ldr r7, [r0, #0x0]
+ add r0, r7, r6
+ add r0, #0x84
+ ldr r0, [r0, #0x0]
+ mov r12, r0
+ cmp r0, #0x0
+ beq _02002D68
+ ldr r2, _02002D90 ; =0x020ECB54
+ mov r1, #0x0
+ ldrh r0, [r2, r6]
+ add r3, r7, #0x0
+_02002D1E:
+ cmp r1, r4
+ beq _02002D3E
+ ldrh r5, [r2, #0x0]
+ cmp r5, r0
+ bne _02002D3E
+ add r5, r3, #0x0
+ add r5, #0x94
+ ldr r5, [r5, #0x0]
+ cmp r5, #0x0
+ beq _02002D3E
+ lsl r0, r1, #0x2
+ add r2, r7, r0
+ add r2, #0x84
+ mov r0, r12
+ str r0, [r2, #0x0]
+ b _02002D48
+_02002D3E:
+ add r1, r1, #0x1
+ add r2, r2, #0x4
+ add r3, r3, #0x4
+ cmp r1, #0x4
+ blo _02002D1E
+_02002D48:
+ cmp r1, #0x4
+ bne _02002D68
+ ldr r0, _02002D8C ; =0x02106FC8
+ lsl r5, r4, #0x2
+ ldr r0, [r0, #0x0]
+ add r0, r0, r5
+ add r0, #0x84
+ ldr r0, [r0, #0x0]
+ bl FUN_02016A18
+ ldr r0, _02002D8C ; =0x02106FC8
+ mov r1, #0x0
+ ldr r0, [r0, #0x0]
+ add r0, r0, r5
+ add r0, #0x84
+ str r1, [r0, #0x0]
+_02002D68:
+ ldr r0, _02002D8C ; =0x02106FC8
+ ldr r0, [r0, #0x0]
+ add r0, r0, r6
+ add r0, #0x94
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _02002D88
+ bl FUN_020215C8
+ ldr r0, _02002D8C ; =0x02106FC8
+ mov r2, #0x0
+ ldr r1, [r0, #0x0]
+ lsl r0, r4, #0x2
+ add r0, r1, r0
+ add r0, #0x94
+ str r2, [r0, #0x0]
+_02002D88:
+ pop {r3-r7, pc}
+ nop
+_02002D8C: .word 0x02106FC8
+_02002D90: .word 0x020ECB54
+
+ thumb_func_start FUN_02002D94
+FUN_02002D94: ; 0x02002D94
+ push {r3, lr}
+ ldr r2, _02002DAC ; =0x02106FC8
+ lsl r0, r0, #0x2
+ ldr r2, [r2, #0x0]
+ add r0, r2, r0
+ add r0, #0x94
+ ldr r0, [r0, #0x0]
+ bl FUN_02021750
+ ldr r0, _02002DAC ; =0x02106FC8
+ ldr r0, [r0, #0x0]
+ pop {r3, pc}
+ .balign 4
+_02002DAC: .word 0x02106FC8
+
+ thumb_func_start FUN_02002DB0
+FUN_02002DB0: ; 0x02002DB0
+ push {r4, lr}
+ add r3, r1, #0x0
+ add r3, #0x1c
+ ldrb r2, [r3, #0x1]
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x1f
+ bne _02002DD8
+ ldrb r2, [r3, #0x0]
+ mov r4, #0xf
+ lsl r0, r0, #0x18
+ bic r2, r4
+ lsr r4, r0, #0x18
+ mov r0, #0xf
+ and r0, r4
+ orr r0, r2
+ strb r0, [r3, #0x0]
+ ldrb r2, [r3, #0x1]
+ mov r0, #0x80
+ orr r0, r2
+ strb r0, [r3, #0x1]
+_02002DD8:
+ add r0, r1, #0x0
+ bl FUN_020023C0
+ pop {r4, pc}
+
+ thumb_func_start FUN_02002DE0
+FUN_02002DE0: ; 0x02002DE0
+ push {r4-r6, lr}
+ lsl r4, r0, #0x2
+ ldr r0, _02002E10 ; =0x02106FC8
+ add r5, r1, #0x0
+ ldr r0, [r0, #0x0]
+ add r6, r2, #0x0
+ add r0, r0, r4
+ add r0, #0x94
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _02002DFA
+ bl ErrorHandling
+_02002DFA:
+ ldr r0, _02002E10 ; =0x02106FC8
+ add r1, r5, #0x0
+ ldr r0, [r0, #0x0]
+ add r2, r6, #0x0
+ add r0, r0, r4
+ add r0, #0x94
+ ldr r0, [r0, #0x0]
+ bl FUN_020218D8
+ pop {r4-r6, pc}
+ nop
+_02002E10: .word 0x02106FC8
+
+ thumb_func_start FUN_02002E14
+FUN_02002E14: ; 0x02002E14
+ push {r4-r6, lr}
+ lsl r4, r0, #0x2
+ ldr r0, _02002E48 ; =0x02106FC8
+ add r5, r1, #0x0
+ ldr r0, [r0, #0x0]
+ add r6, r2, #0x0
+ add r0, r0, r4
+ add r0, #0x94
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _02002E2E
+ bl ErrorHandling
+_02002E2E:
+ add r0, r5, #0x0
+ bl FUN_02021F2C
+ add r1, r0, #0x0
+ ldr r0, _02002E48 ; =0x02106FC8
+ add r2, r6, #0x0
+ ldr r0, [r0, #0x0]
+ add r0, r0, r4
+ add r0, #0x94
+ ldr r0, [r0, #0x0]
+ bl FUN_020218D8
+ pop {r4-r6, pc}
+ .balign 4
+_02002E48: .word 0x02106FC8
+
+ thumb_func_start FUN_02002E4C
+FUN_02002E4C: ; 0x02002E4C
+ mov r2, #0x0
+ cmp r1, #0x7
+ bhi _02002EAC
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02002E5E: ; jump table (using 16-bit offset)
+ .short _02002E6E - _02002E5E - 2; case 0
+ .short _02002E76 - _02002E5E - 2; case 1
+ .short _02002E7E - _02002E5E - 2; case 2
+ .short _02002E86 - _02002E5E - 2; case 3
+ .short _02002E8E - _02002E5E - 2; case 4
+ .short _02002E96 - _02002E5E - 2; case 5
+ .short _02002E9E - _02002E5E - 2; case 6
+ .short _02002EA6 - _02002E5E - 2; case 7
+_02002E6E:
+ lsl r1, r0, #0x3
+ ldr r0, _02002EB0 ; =0x020ECB64
+ ldrb r2, [r0, r1]
+ b _02002EAC
+_02002E76:
+ lsl r1, r0, #0x3
+ ldr r0, _02002EB4 ; =0x020ECB65
+ ldrb r2, [r0, r1]
+ b _02002EAC
+_02002E7E:
+ lsl r1, r0, #0x3
+ ldr r0, _02002EB8 ; =0x020ECB66
+ ldrb r2, [r0, r1]
+ b _02002EAC
+_02002E86:
+ lsl r1, r0, #0x3
+ ldr r0, _02002EBC ; =0x020ECB67
+ ldrb r2, [r0, r1]
+ b _02002EAC
+_02002E8E:
+ lsl r1, r0, #0x3
+ ldr r0, _02002EC0 ; =0x020ECB68
+ ldrb r2, [r0, r1]
+ b _02002EAC
+_02002E96:
+ lsl r1, r0, #0x3
+ ldr r0, _02002EC4 ; =0x020ECB69
+ ldrb r2, [r0, r1]
+ b _02002EAC
+_02002E9E:
+ lsl r1, r0, #0x3
+ ldr r0, _02002EC8 ; =0x020ECB6A
+ ldrb r2, [r0, r1]
+ b _02002EAC
+_02002EA6:
+ lsl r1, r0, #0x3
+ ldr r0, _02002ECC ; =0x020ECB6B
+ ldrb r2, [r0, r1]
+_02002EAC:
+ add r0, r2, #0x0
+ bx lr
+ .balign 4
+_02002EB0: .word 0x020ECB64
+_02002EB4: .word 0x020ECB65
+_02002EB8: .word 0x020ECB66
+_02002EBC: .word 0x020ECB67
+_02002EC0: .word 0x020ECB68
+_02002EC4: .word 0x020ECB69
+_02002EC8: .word 0x020ECB6A
+_02002ECC: .word 0x020ECB6B
+
+ thumb_func_start FUN_02002ED0
+FUN_02002ED0: ; 0x02002ED0
+ push {r4, lr}
+ sub sp, #0x8
+ add r4, r0, #0x0
+ mov r0, #0x20
+ str r0, [sp, #0x0]
+ add r3, r1, #0x0
+ str r2, [sp, #0x4]
+ mov r0, #0xe
+ mov r1, #0x6
+ add r2, r4, #0x0
+ bl FUN_02006930
+ add sp, #0x8
+ pop {r4, pc}
+
+ thumb_func_start FUN_02002EEC
+FUN_02002EEC: ; 0x02002EEC
+ push {r4, lr}
+ sub sp, #0x8
+ add r4, r0, #0x0
+ mov r0, #0x20
+ str r0, [sp, #0x0]
+ add r3, r1, #0x0
+ str r2, [sp, #0x4]
+ mov r0, #0xe
+ mov r1, #0x7
+ add r2, r4, #0x0
+ bl FUN_02006930
+ add sp, #0x8
+ pop {r4, pc}
+
+ thumb_func_start FUN_02002F08
+FUN_02002F08: ; 0x02002F08
+ push {r4-r6, lr}
+ lsl r4, r0, #0x2
+ ldr r0, _02002F3C ; =0x02106FC8
+ add r5, r1, #0x0
+ ldr r0, [r0, #0x0]
+ add r6, r2, #0x0
+ add r0, r0, r4
+ add r0, #0x94
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _02002F22
+ bl ErrorHandling
+_02002F22:
+ add r0, r5, #0x0
+ bl FUN_02021F2C
+ add r1, r0, #0x0
+ ldr r0, _02002F3C ; =0x02106FC8
+ add r2, r6, #0x0
+ ldr r0, [r0, #0x0]
+ add r0, r0, r4
+ add r0, #0x94
+ ldr r0, [r0, #0x0]
+ bl FUN_02021934
+ pop {r4-r6, pc}
+ .balign 4
+_02002F3C: .word 0x02106FC8
+
+ thumb_func_start FUN_02002F40
+FUN_02002F40: ; 0x02002F40
+ push {r4, lr}
+ add r4, r3, #0x0
+ bl FUN_02002E14
+ cmp r0, r4
+ bhs _02002F52
+ sub r0, r4, r0
+ lsr r0, r0, #0x1
+ pop {r4, pc}
+_02002F52:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02002F58
+FUN_02002F58: ; 0x02002F58
+ push {r3-r7, lr}
+ ldrh r2, [r0, #0x0]
+ ldr r1, _02002F8C ; =0x0000FFFF
+ mov r5, #0x1
+ cmp r2, r1
+ beq _02002F88
+ mov r6, #0xe
+ lsl r6, r6, #0xc
+ add r7, r1, #0x0
+ sub r4, r1, #0x1
+_02002F6C:
+ cmp r2, r4
+ bne _02002F76
+ bl FUN_0201B8B8
+ b _02002F82
+_02002F76:
+ cmp r2, r6
+ bne _02002F80
+ add r5, r5, #0x1
+ add r0, r0, #0x2
+ b _02002F82
+_02002F80:
+ add r0, r0, #0x2
+_02002F82:
+ ldrh r2, [r0, #0x0]
+ cmp r2, r7
+ bne _02002F6C
+_02002F88:
+ add r0, r5, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+_02002F8C: .word 0x0000FFFF
+
+ thumb_func_start FUN_02002F90
+FUN_02002F90: ; 0x02002F90
+ push {r3, lr}
+ bl FUN_02021F2C
+ bl FUN_02002F58
+ pop {r3, pc}
+
+ thumb_func_start FUN_02002F9C
+FUN_02002F9C: ; 0x02002F9C
+ push {r3-r5, lr}
+ lsl r4, r0, #0x2
+ ldr r0, _02002FCC ; =0x02106FC8
+ add r5, r1, #0x0
+ ldr r0, [r0, #0x0]
+ add r0, r0, r4
+ add r0, #0x94
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _02002FB4
+ bl ErrorHandling
+_02002FB4:
+ add r0, r5, #0x0
+ bl FUN_02021F2C
+ add r1, r0, #0x0
+ ldr r0, _02002FCC ; =0x02106FC8
+ ldr r0, [r0, #0x0]
+ add r0, r0, r4
+ add r0, #0x94
+ ldr r0, [r0, #0x0]
+ bl FUN_0202199C
+ pop {r3-r5, pc}
+ .balign 4
+_02002FCC: .word 0x02106FC8
+
+ thumb_func_start FUN_02002FD0
+FUN_02002FD0: ; 0x02002FD0
+ push {r4, lr}
+ mov r1, #0x12
+ lsl r1, r1, #0x4
+ bl FUN_02016998
+ mov r2, #0x12
+ mov r1, #0x0
+ lsl r2, r2, #0x4
+ add r4, r0, #0x0
+ blx MI_CpuFill8
+ add r0, r4, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02002FEC
+FUN_02002FEC: ; 0x02002FEC
+ ldr r3, _02002FF0 ; =FUN_02016A18
+ bx r3
+ .balign 4
+_02002FF0: .word FUN_02016A18
+
+ thumb_func_start FUN_02002FF4
+FUN_02002FF4: ; 0x02002FF4
+ push {r3-r4}
+ mov r4, #0x14
+ mul r4, r1
+ str r2, [r0, r4]
+ add r1, r0, r4
+ ldr r0, [sp, #0x8]
+ str r3, [r1, #0x4]
+ str r0, [r1, #0x8]
+ pop {r3-r4}
+ bx lr
+
+ thumb_func_start FUN_02003008
+FUN_02003008: ; 0x02003008
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r4, r2, #0x0
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ str r3, [sp, #0x4]
+ add r0, r3, #0x0
+ add r1, r4, #0x0
+ bl FUN_02016998
+ add r7, r0, #0x0
+ ldr r0, [sp, #0x4]
+ add r1, r4, #0x0
+ bl FUN_02016998
+ add r3, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r7, #0x0
+ str r4, [sp, #0x0]
+ bl FUN_02002FF4
+ add sp, #0x8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02003038
+FUN_02003038: ; 0x02003038
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ mov r0, #0x14
+ add r5, r1, #0x0
+ mul r5, r0
+ ldr r0, [r4, r5]
+ bl FUN_02016A18
+ add r0, r4, r5
+ ldr r0, [r0, #0x4]
+ bl FUN_02016A18
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02003054
+FUN_02003054: ; 0x02003054
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r0, sp, #0x8
+ ldrh r7, [r0, #0x10]
+ add r6, r2, #0x0
+ mov r0, #0x14
+ mul r6, r0
+ str r1, [sp, #0x0]
+ add r0, r1, #0x0
+ ldr r1, [r5, r6]
+ lsl r4, r3, #0x1
+ add r1, r1, r4
+ add r2, r7, #0x0
+ blx MIi_CpuCopy16
+ add r1, r5, r6
+ ldr r1, [r1, #0x4]
+ ldr r0, [sp, #0x0]
+ add r1, r1, r4
+ add r2, r7, #0x0
+ blx MIi_CpuCopy16
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02003084
+FUN_02003084: ; 0x02003084
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ add r0, r1, #0x0
+ add r1, r2, #0x0
+ add r2, sp, #0x4
+ ldr r4, [sp, #0x1c]
+ bl FUN_02006C08
+ add r6, r0, #0x0
+ bne _0200309E
+ bl ErrorHandling
+_0200309E:
+ cmp r4, #0x0
+ bne _020030A6
+ ldr r0, [sp, #0x4]
+ ldr r4, [r0, #0x8]
+_020030A6:
+ add r0, sp, #0x8
+ ldrh r0, [r0, #0x18]
+ ldr r2, [sp, #0x18]
+ mov r1, #0x14
+ mul r1, r2
+ add r1, r5, r1
+ lsl r0, r0, #0x1
+ ldr r1, [r1, #0x8]
+ add r0, r4, r0
+ cmp r0, r1
+ bls _020030C0
+ bl ErrorHandling
+_020030C0:
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x0]
+ ldr r1, [sp, #0x4]
+ add r3, sp, #0x8
+ ldr r2, [r1, #0xc]
+ ldrh r1, [r3, #0x1c]
+ ldrh r3, [r3, #0x18]
+ add r0, r5, #0x0
+ lsl r1, r1, #0x1
+ add r1, r2, r1
+ ldr r2, [sp, #0x18]
+ bl FUN_02003054
+ add r0, r6, #0x0
+ bl FUN_02016A18
+ add sp, #0x8
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_020030E8
+FUN_020030E8: ; 0x020030E8
+ push {r4, lr}
+ sub sp, #0x10
+ ldr r4, [sp, #0x18]
+ str r4, [sp, #0x0]
+ ldr r4, [sp, #0x1c]
+ str r4, [sp, #0x4]
+ add r4, sp, #0x8
+ ldrh r4, [r4, #0x18]
+ str r4, [sp, #0x8]
+ mov r4, #0x0
+ str r4, [sp, #0xc]
+ bl FUN_02003084
+ add sp, #0x10
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02003108
+FUN_02003108: ; 0x02003108
+ push {r3-r7, lr}
+ add r4, r1, #0x0
+ mov r1, #0x14
+ add r6, r0, #0x0
+ mul r1, r4
+ add r5, r2, #0x0
+ add r1, r6, r1
+ add r7, r3, #0x0
+ lsl r0, r5, #0x1
+ ldr r1, [r1, #0x8]
+ add r0, r7, r0
+ cmp r0, r1
+ bls _02003126
+ bl ErrorHandling
+_02003126:
+ cmp r4, #0x3
+ bhi _0200315E
+ add r0, r4, r4
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02003136: ; jump table (using 16-bit offset)
+ .short _0200313E - _02003136 - 2; case 0
+ .short _02003146 - _02003136 - 2; case 1
+ .short _0200314E - _02003136 - 2; case 2
+ .short _02003156 - _02003136 - 2; case 3
+_0200313E:
+ bl FUN_020222E8
+ add r1, r0, #0x0
+ b _02003164
+_02003146:
+ bl FUN_020222F8
+ add r1, r0, #0x0
+ b _02003164
+_0200314E:
+ bl FUN_02022308
+ add r1, r0, #0x0
+ b _02003164
+_02003156:
+ bl FUN_02022310
+ add r1, r0, #0x0
+ b _02003164
+_0200315E:
+ bl ErrorHandling
+ pop {r3-r7, pc}
+_02003164:
+ lsl r0, r7, #0x10
+ lsr r0, r0, #0x10
+ lsl r2, r5, #0x1
+ str r0, [sp, #0x0]
+ add r1, r1, r2
+ add r0, r6, #0x0
+ add r2, r4, #0x0
+ add r3, r5, #0x0
+ bl FUN_02003054
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200317C
+FUN_0200317C: ; 0x0200317C
+ push {r3-r5, lr}
+ add r4, r2, #0x0
+ add r5, r3, #0x0
+ add r2, sp, #0x0
+ add r3, r4, #0x0
+ bl FUN_02006C08
+ add r4, r0, #0x0
+ bne _02003192
+ bl ErrorHandling
+_02003192:
+ cmp r5, #0x0
+ bne _0200319A
+ ldr r0, [sp, #0x0]
+ ldr r5, [r0, #0x8]
+_0200319A:
+ ldr r0, [sp, #0x0]
+ add r2, r5, #0x0
+ ldr r1, [r0, #0xc]
+ add r0, sp, #0x0
+ ldrh r0, [r0, #0x10]
+ lsl r0, r0, #0x1
+ add r0, r1, r0
+ ldr r1, [sp, #0x14]
+ blx MIi_CpuCopy16
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020031B8
+FUN_020031B8: ; 0x020031B8
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r4, sp, #0x10
+ add r5, r0, #0x0
+ add r0, r1, #0x0
+ ldrh r1, [r4, #0x14]
+ add r6, r3, #0x0
+ str r1, [sp, #0x0]
+ ldrh r1, [r4, #0x10]
+ lsl r4, r2, #0x1
+ ldr r2, [sp, #0x0]
+ lsl r7, r1, #0x1
+ mov r1, #0x14
+ mul r6, r1
+ mul r1, r0
+ ldr r0, [r5, r1]
+ str r1, [sp, #0x4]
+ ldr r1, [r5, r6]
+ add r0, r0, r4
+ add r1, r1, r7
+ blx MIi_CpuCopy16
+ ldr r0, [sp, #0x4]
+ add r1, r5, r6
+ ldr r0, [r5, r0]
+ ldr r1, [r1, #0x4]
+ ldr r2, [sp, #0x0]
+ add r0, r0, r4
+ add r1, r1, r7
+ blx MIi_CpuCopy16
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020031FC
+FUN_020031FC: ; 0x020031FC
+ mov r2, #0x14
+ mul r2, r1
+ ldr r0, [r0, r2]
+ bx lr
+
+ thumb_func_start FUN_02003204
+FUN_02003204: ; 0x02003204
+ mov r2, #0x14
+ mul r2, r1
+ add r0, r0, r2
+ ldr r0, [r0, #0x4]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02003210
+FUN_02003210: ; 0x02003210
+ push {r0-r3}
+ push {r3-r7, lr}
+ sub sp, #0x10
+ str r3, [sp, #0x8]
+ add r5, r0, #0x0
+ ldr r0, [sp, #0x38]
+ mov r6, #0x0
+ str r0, [sp, #0x38]
+ ldr r0, [sp, #0x3c]
+ add r7, r1, #0x0
+ str r0, [sp, #0x3c]
+ ldr r0, [sp, #0x40]
+ add r4, r6, #0x0
+ str r0, [sp, #0x40]
+ add r0, sp, #0x28
+ ldrh r0, [r0, #0x8]
+ str r0, [sp, #0xc]
+_02003232:
+ add r0, r7, #0x0
+ add r1, r4, #0x0
+ bl FUN_02003314
+ cmp r0, #0x1
+ bne _020032A6
+ mov r0, #0x46
+ lsl r0, r0, #0x2
+ ldrh r0, [r5, r0]
+ add r1, r4, #0x0
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x12
+ bl FUN_02003314
+ cmp r0, #0x0
+ bne _020032A6
+ mov r0, #0x14
+ add r6, r4, #0x0
+ mul r6, r0
+ add r0, r4, #0x0
+ add r1, r5, r6
+ add r2, sp, #0x30
+ bl FUN_02003368
+ ldr r0, [sp, #0x3c]
+ add r1, sp, #0x28
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x40]
+ str r0, [sp, #0x4]
+ add r0, r5, r6
+ ldrh r1, [r1, #0x8]
+ ldr r2, [sp, #0x8]
+ ldr r3, [sp, #0x38]
+ add r0, #0xc
+ bl FUN_020033A4
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02003328
+ cmp r4, #0x4
+ blo _02003294
+ mov r2, #0x1
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ lsl r2, r2, #0x8
+ bl FUN_0200359C
+ b _0200329E
+_02003294:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r2, #0x10
+ bl FUN_0200359C
+_0200329E:
+ ldr r1, [sp, #0xc]
+ add r0, sp, #0x28
+ strh r1, [r0, #0x8]
+ mov r6, #0x1
+_020032A6:
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0xe
+ blo _02003232
+ cmp r6, #0x1
+ bne _02003300
+ mov r0, #0x46
+ lsl r0, r0, #0x2
+ ldrh r2, [r5, r0]
+ ldr r1, _0200330C ; =0xFFFF0003
+ and r1, r2
+ lsl r2, r2, #0x10
+ lsr r2, r2, #0x12
+ orr r2, r7
+ lsl r2, r2, #0x12
+ lsr r2, r2, #0x10
+ orr r1, r2
+ strh r1, [r5, r0]
+ add r1, r0, #0x2
+ ldrh r1, [r5, r1]
+ lsl r1, r1, #0x11
+ lsr r1, r1, #0x1f
+ bne _02003300
+ add r1, r0, #0x2
+ ldrh r2, [r5, r1]
+ mov r1, #0x1
+ lsl r1, r1, #0xe
+ orr r2, r1
+ add r1, r0, #0x2
+ strh r2, [r5, r1]
+ ldrh r2, [r5, r0]
+ mov r1, #0x3
+ bic r2, r1
+ mov r1, #0x1
+ orr r1, r2
+ strh r1, [r5, r0]
+ mov r2, #0x0
+ add r0, r0, #0x4
+ strb r2, [r5, r0]
+ ldr r0, _02003310 ; =FUN_02003464
+ add r1, r5, #0x0
+ sub r2, r2, #0x2
+ bl FUN_0200CA44
+_02003300:
+ add r0, r6, #0x0
+ add sp, #0x10
+ pop {r3-r7}
+ pop {r3}
+ add sp, #0x10
+ bx r3
+ .balign 4
+_0200330C: .word 0xFFFF0003
+_02003310: .word FUN_02003464
+
+ thumb_func_start FUN_02003314
+FUN_02003314: ; 0x02003314
+ mov r3, #0x1
+ add r2, r3, #0x0
+ lsl r2, r1
+ tst r0, r2
+ bne _02003320
+ mov r3, #0x0
+_02003320:
+ lsl r0, r3, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02003328
+FUN_02003328: ; 0x02003328
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, _02003360 ; =0x0000011A
+ add r4, r1, #0x0
+ ldrh r0, [r5, r0]
+ lsl r0, r0, #0x12
+ lsr r0, r0, #0x12
+ bl FUN_02003314
+ cmp r0, #0x1
+ beq _0200335E
+ ldr r3, _02003360 ; =0x0000011A
+ ldr r1, _02003364 ; =0xFFFFC000
+ ldrh r2, [r5, r3]
+ add r0, r2, #0x0
+ lsl r2, r2, #0x12
+ lsr r6, r2, #0x12
+ mov r2, #0x1
+ lsl r2, r4
+ orr r2, r6
+ lsl r2, r2, #0x10
+ and r0, r1
+ lsr r2, r2, #0x10
+ lsr r1, r1, #0x12
+ and r1, r2
+ orr r0, r1
+ strh r0, [r5, r3]
+_0200335E:
+ pop {r4-r6, pc}
+ .balign 4
+_02003360: .word 0x0000011A
+_02003364: .word 0xFFFFC000
+
+ thumb_func_start FUN_02003368
+FUN_02003368: ; 0x02003368
+ push {r4-r5}
+ cmp r0, #0x4
+ ldr r0, [r1, #0x8]
+ bge _02003374
+ lsl r0, r0, #0x13
+ b _02003378
+_02003374:
+ lsr r0, r0, #0x9
+ lsl r0, r0, #0x18
+_02003378:
+ mov r4, #0x0
+ lsr r0, r0, #0x18
+ add r5, r4, #0x0
+ cmp r0, #0x0
+ bls _02003398
+ mov r3, #0x1
+_02003384:
+ add r1, r3, #0x0
+ lsl r1, r5
+ add r1, r4, r1
+ lsl r1, r1, #0x10
+ lsr r4, r1, #0x10
+ add r1, r5, #0x1
+ lsl r1, r1, #0x18
+ lsr r5, r1, #0x18
+ cmp r5, r0
+ blo _02003384
+_02003398:
+ ldrh r0, [r2, #0x0]
+ and r0, r4
+ strh r0, [r2, #0x0]
+ pop {r4-r5}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020033A4
+FUN_020033A4: ; 0x020033A4
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ add r4, r3, #0x0
+ cmp r2, #0x0
+ bge _020033D4
+ add r0, r2, #0x0
+ blx FUN_020DE3F0
+ add r0, r0, #0x2
+ ldrh r1, [r5, #0x6]
+ mov r2, #0xf
+ lsl r0, r0, #0x10
+ bic r1, r2
+ lsr r2, r0, #0x10
+ mov r0, #0xf
+ and r0, r2
+ orr r0, r1
+ strh r0, [r5, #0x6]
+ ldrh r1, [r5, #0x2]
+ mov r0, #0x3f
+ bic r1, r0
+ strh r1, [r5, #0x2]
+ b _020033F2
+_020033D4:
+ ldrh r1, [r5, #0x6]
+ mov r0, #0xf
+ bic r1, r0
+ mov r0, #0x2
+ orr r0, r1
+ strh r0, [r5, #0x6]
+ ldrh r0, [r5, #0x2]
+ mov r1, #0x3f
+ bic r0, r1
+ lsl r1, r2, #0x10
+ lsr r2, r1, #0x10
+ mov r1, #0x3f
+ and r1, r2
+ orr r0, r1
+ strh r0, [r5, #0x2]
+_020033F2:
+ strh r6, [r5, #0x0]
+ ldrh r1, [r5, #0x2]
+ ldr r0, _02003454 ; =0xFFFFF83F
+ add r3, sp, #0x0
+ and r1, r0
+ lsl r0, r4, #0x1b
+ lsr r0, r0, #0x15
+ orr r0, r1
+ strh r0, [r5, #0x2]
+ ldrh r1, [r5, #0x2]
+ ldr r0, _02003458 ; =0xFFFF07FF
+ add r2, r1, #0x0
+ ldrb r1, [r3, #0x10]
+ and r2, r0
+ lsl r0, r1, #0x1b
+ lsr r0, r0, #0x10
+ orr r0, r2
+ strh r0, [r5, #0x2]
+ ldrh r0, [r5, #0x4]
+ ldr r2, _0200345C ; =0xFFFF8000
+ ldrh r6, [r3, #0x14]
+ lsr r3, r2, #0x11
+ and r0, r2
+ and r3, r6
+ orr r0, r3
+ strh r0, [r5, #0x4]
+ ldrh r3, [r5, #0x6]
+ ldr r0, _02003460 ; =0xFFFFFC0F
+ and r0, r3
+ ldrh r3, [r5, #0x2]
+ lsl r3, r3, #0x1a
+ lsr r3, r3, #0x1a
+ lsl r3, r3, #0x1a
+ lsr r3, r3, #0x16
+ orr r0, r3
+ strh r0, [r5, #0x6]
+ cmp r4, r1
+ ldrh r1, [r5, #0x4]
+ bhs _02003448
+ sub r0, r2, #0x1
+ and r0, r1
+ strh r0, [r5, #0x4]
+ pop {r4-r6, pc}
+_02003448:
+ mov r0, #0x2
+ lsl r0, r0, #0xe
+ orr r0, r1
+ strh r0, [r5, #0x4]
+ pop {r4-r6, pc}
+ nop
+_02003454: .word 0xFFFFF83F
+_02003458: .word 0xFFFF07FF
+_0200345C: .word 0xFFFF8000
+_02003460: .word 0xFFFFFC0F
+
+ thumb_func_start FUN_02003464
+FUN_02003464: ; 0x02003464
+ push {r4-r6, lr}
+ add r4, r1, #0x0
+ mov r1, #0x47
+ lsl r1, r1, #0x2
+ ldrb r2, [r4, r1]
+ add r5, r0, #0x0
+ cmp r2, #0x1
+ bne _020034A4
+ mov r2, #0x0
+ strb r2, [r4, r1]
+ sub r2, r1, #0x2
+ ldrh r3, [r4, r2]
+ ldr r2, _020034F4 ; =0xFFFFC000
+ add r5, r3, #0x0
+ and r5, r2
+ sub r3, r1, #0x2
+ strh r5, [r4, r3]
+ sub r3, r1, #0x4
+ ldrh r5, [r4, r3]
+ ldr r3, _020034F8 ; =0xFFFF0003
+ sub r2, r2, #0x1
+ and r5, r3
+ sub r3, r1, #0x4
+ strh r5, [r4, r3]
+ sub r3, r1, #0x2
+ ldrh r3, [r4, r3]
+ sub r1, r1, #0x2
+ and r2, r3
+ strh r2, [r4, r1]
+ bl FUN_0200CAB4
+ pop {r4-r6, pc}
+_020034A4:
+ sub r0, r1, #0x4
+ ldrh r2, [r4, r0]
+ lsl r0, r2, #0x1e
+ lsr r0, r0, #0x1e
+ cmp r0, #0x1
+ bne _020034F0
+ sub r0, r1, #0x2
+ ldrh r0, [r4, r0]
+ ldr r3, _020034F4 ; =0xFFFFC000
+ lsl r2, r2, #0x10
+ lsr r6, r2, #0x12
+ lsr r2, r3, #0x12
+ and r0, r3
+ and r2, r6
+ orr r2, r0
+ sub r0, r1, #0x2
+ strh r2, [r4, r0]
+ add r0, r4, #0x0
+ bl FUN_02003500
+ add r0, r4, #0x0
+ bl FUN_02003520
+ mov r1, #0x46
+ lsl r1, r1, #0x2
+ ldrh r0, [r4, r1]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x12
+ bne _020034F0
+ add r0, r1, #0x2
+ ldrh r2, [r4, r0]
+ ldr r0, _020034FC ; =0xFFFFBFFF
+ and r2, r0
+ add r0, r1, #0x2
+ strh r2, [r4, r0]
+ add r0, r5, #0x0
+ bl FUN_0200CAB4
+_020034F0:
+ pop {r4-r6, pc}
+ nop
+_020034F4: .word 0xFFFFC000
+_020034F8: .word 0xFFFF0003
+_020034FC: .word 0xFFFFBFFF
+
+ thumb_func_start FUN_02003500
+FUN_02003500: ; 0x02003500
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ mov r4, #0x0
+ mov r6, #0x10
+_02003508:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_02003540
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0x4
+ blo _02003508
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02003520
+FUN_02003520: ; 0x02003520
+ push {r4-r6, lr}
+ mov r4, #0x4
+ add r6, r4, #0x0
+ add r5, r0, #0x0
+ add r6, #0xfc
+_0200352A:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_02003540
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0xe
+ blo _0200352A
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02003540
+FUN_02003540: ; 0x02003540
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ mov r0, #0x46
+ lsl r0, r0, #0x2
+ ldrh r0, [r5, r0]
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x12
+ bl FUN_02003314
+ cmp r0, #0x0
+ beq _02003594
+ mov r0, #0x14
+ mul r0, r4
+ add r2, r5, r0
+ ldrh r0, [r2, #0x12]
+ ldrh r3, [r2, #0xe]
+ lsl r1, r0, #0x16
+ lsl r3, r3, #0x1a
+ lsr r1, r1, #0x1a
+ lsr r3, r3, #0x1a
+ cmp r1, r3
+ bhs _02003584
+ ldr r3, _02003598 ; =0xFFFFFC0F
+ and r3, r0
+ add r0, r1, #0x1
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ lsl r0, r0, #0x1a
+ lsr r0, r0, #0x16
+ orr r0, r3
+ strh r0, [r2, #0x12]
+ pop {r4-r6, pc}
+_02003584:
+ ldr r1, _02003598 ; =0xFFFFFC0F
+ and r0, r1
+ strh r0, [r2, #0x12]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_0200359C
+_02003594:
+ pop {r4-r6, pc}
+ nop
+_02003598: .word 0xFFFFFC0F
+
+ thumb_func_start FUN_0200359C
+FUN_0200359C: ; 0x0200359C
+ push {r4-r7, lr}
+ sub sp, #0xc
+ str r1, [sp, #0x4]
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x4]
+ mov r1, #0x14
+ mul r1, r0
+ ldr r0, [sp, #0x0]
+ mov r6, #0x0
+ add r5, r0, r1
+ add r0, r5, #0x0
+ str r0, [sp, #0x8]
+ add r0, #0xc
+ add r7, r2, #0x0
+ add r4, r6, #0x0
+ str r0, [sp, #0x8]
+_020035BC:
+ ldrh r0, [r5, #0xc]
+ lsl r1, r6, #0x10
+ lsr r1, r1, #0x10
+ bl FUN_02003314
+ cmp r0, #0x0
+ beq _020035DC
+ ldr r0, [r5, #0x0]
+ lsl r1, r4, #0x1
+ ldr r2, [r5, #0x4]
+ add r0, r0, r1
+ add r1, r2, r1
+ ldr r2, [sp, #0x8]
+ add r3, r7, #0x0
+ bl FUN_020035F8
+_020035DC:
+ add r6, r6, #0x1
+ add r4, r4, r7
+ cmp r6, #0x10
+ blo _020035BC
+ ldr r1, [sp, #0x4]
+ add r5, #0xc
+ lsl r1, r1, #0x18
+ ldr r0, [sp, #0x0]
+ lsr r1, r1, #0x18
+ add r2, r5, #0x0
+ bl FUN_02003684
+ add sp, #0xc
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_020035F8
+FUN_020035F8: ; 0x020035F8
+ push {r3-r7, lr}
+ sub sp, #0x8
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ add r6, r1, #0x0
+ mov r12, r0
+ str r2, [sp, #0x0]
+ mov lr, r3
+ add r0, r3, #0x0
+ beq _02003680
+_0200360C:
+ ldr r0, [sp, #0x4]
+ mov r1, #0x1f
+ ldrh r0, [r0, #0x0]
+ asr r2, r0, #0x5
+ add r5, r2, #0x0
+ and r5, r1
+ ldr r1, [sp, #0x0]
+ asr r4, r0, #0xa
+ ldrh r1, [r1, #0x4]
+ lsl r1, r1, #0x11
+ lsr r3, r1, #0x11
+ ldr r1, [sp, #0x0]
+ ldrh r1, [r1, #0x2]
+ lsl r1, r1, #0x15
+ lsr r2, r1, #0x1b
+ mov r1, #0x1f
+ and r1, r4
+ mov r4, #0x1f
+ and r0, r4
+ and r4, r3
+ sub r4, r4, r0
+ mul r4, r2
+ asr r4, r4, #0x4
+ add r0, r0, r4
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+ asr r4, r3, #0xa
+ mov r0, #0x1f
+ and r0, r4
+ sub r0, r0, r1
+ mul r0, r2
+ asr r0, r0, #0x4
+ add r0, r1, r0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ asr r3, r3, #0x5
+ mov r1, #0x1f
+ and r1, r3
+ sub r1, r1, r5
+ mul r1, r2
+ asr r1, r1, #0x4
+ add r1, r5, r1
+ lsl r1, r1, #0x18
+ lsl r0, r0, #0xa
+ lsr r1, r1, #0x13
+ orr r0, r1
+ orr r0, r7
+ strh r0, [r6, #0x0]
+ ldr r0, [sp, #0x4]
+ add r6, r6, #0x2
+ add r0, r0, #0x2
+ str r0, [sp, #0x4]
+ mov r0, r12
+ add r1, r0, #0x1
+ mov r0, lr
+ mov r12, r1
+ cmp r1, r0
+ blo _0200360C
+_02003680:
+ add sp, #0x8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02003684
+FUN_02003684: ; 0x02003684
+ push {r4-r5}
+ ldrh r4, [r2, #0x2]
+ lsl r3, r4, #0x10
+ lsl r4, r4, #0x15
+ lsr r3, r3, #0x1b
+ lsr r4, r4, #0x1b
+ cmp r4, r3
+ bne _020036BE
+ mov r3, #0x46
+ lsl r3, r3, #0x2
+ ldrh r4, [r0, r3]
+ mov r2, #0x1
+ lsl r2, r1
+ lsl r1, r4, #0x10
+ lsr r5, r1, #0x12
+ add r1, r5, #0x0
+ tst r1, r2
+ beq _0200371E
+ eor r2, r5
+ lsl r2, r2, #0x10
+ ldr r1, _02003724 ; =0xFFFF0003
+ lsr r2, r2, #0x10
+ lsl r2, r2, #0x12
+ and r1, r4
+ lsr r2, r2, #0x10
+ orr r1, r2
+ strh r1, [r0, r3]
+ pop {r4-r5}
+ bx lr
+_020036BE:
+ ldrh r0, [r2, #0x4]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x1f
+ bne _020036F4
+ lsl r0, r4, #0x10
+ asr r1, r0, #0x10
+ ldrh r0, [r2, #0x6]
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1c
+ add r0, r1, r0
+ lsl r0, r0, #0x10
+ asr r4, r0, #0x10
+ cmp r4, r3
+ ble _020036DE
+ lsl r0, r3, #0x10
+ asr r4, r0, #0x10
+_020036DE:
+ ldrh r1, [r2, #0x2]
+ ldr r0, _02003728 ; =0xFFFFF83F
+ and r1, r0
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x15
+ orr r0, r1
+ strh r0, [r2, #0x2]
+ pop {r4-r5}
+ bx lr
+_020036F4:
+ lsl r0, r4, #0x10
+ asr r1, r0, #0x10
+ ldrh r0, [r2, #0x6]
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1c
+ sub r0, r1, r0
+ lsl r0, r0, #0x10
+ asr r4, r0, #0x10
+ cmp r4, r3
+ bge _0200370C
+ lsl r0, r3, #0x10
+ asr r4, r0, #0x10
+_0200370C:
+ ldrh r1, [r2, #0x2]
+ ldr r0, _02003728 ; =0xFFFFF83F
+ and r1, r0
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x15
+ orr r0, r1
+ strh r0, [r2, #0x2]
+_0200371E:
+ pop {r4-r5}
+ bx lr
+ nop
+_02003724: .word 0xFFFF0003
+_02003728: .word 0xFFFFF83F
+
+ thumb_func_start FUN_0200372C
+FUN_0200372C: ; 0x0200372C
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ ldr r0, _020038DC ; =0x0000011A
+ ldrh r1, [r6, r0]
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x1f
+ bne _02003748
+ sub r0, r0, #0x2
+ ldrh r0, [r6, r0]
+ lsl r0, r0, #0x1e
+ lsr r0, r0, #0x1e
+ cmp r0, #0x1
+ beq _02003748
+ b _020038DA
+_02003748:
+ mov r7, #0x2
+ mov r5, #0x0
+ add r4, r6, #0x0
+ lsl r7, r7, #0xc
+_02003750:
+ ldr r0, _020038DC ; =0x0000011A
+ ldrh r1, [r6, r0]
+ lsl r0, r1, #0x10
+ lsr r0, r0, #0x1f
+ bne _02003770
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x0
+ beq _0200377C
+ lsl r0, r1, #0x12
+ lsl r1, r5, #0x10
+ lsr r0, r0, #0x12
+ lsr r1, r1, #0x10
+ bl FUN_02003314
+ cmp r0, #0x0
+ beq _0200377C
+_02003770:
+ ldr r0, [r4, #0x4]
+ ldr r1, [r4, #0x8]
+ blx DC_FlushRange
+ cmp r5, #0xd
+ bls _0200377E
+_0200377C:
+ b _020038A4
+_0200377E:
+ add r0, r5, r5
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0200378A: ; jump table (using 16-bit offset)
+ .short _020037A6 - _0200378A - 2; case 0
+ .short _020037B2 - _0200378A - 2; case 1
+ .short _020037BE - _0200378A - 2; case 2
+ .short _020037CA - _0200378A - 2; case 3
+ .short _020037D6 - _0200378A - 2; case 4
+ .short _020037EA - _0200378A - 2; case 5
+ .short _020037FE - _0200378A - 2; case 6
+ .short _02003814 - _0200378A - 2; case 7
+ .short _0200382A - _0200378A - 2; case 8
+ .short _0200383E - _0200378A - 2; case 9
+ .short _02003852 - _0200378A - 2; case 10
+ .short _02003868 - _0200378A - 2; case 11
+ .short _0200387E - _0200378A - 2; case 12
+ .short _02003892 - _0200378A - 2; case 13
+_020037A6:
+ ldr r0, [r4, #0x4]
+ ldr r2, [r4, #0x8]
+ mov r1, #0x0
+ blx FUN_020C9550
+ b _020038A4
+_020037B2:
+ ldr r0, [r4, #0x4]
+ ldr r2, [r4, #0x8]
+ mov r1, #0x0
+ blx FUN_020C94E8
+ b _020038A4
+_020037BE:
+ ldr r0, [r4, #0x4]
+ ldr r2, [r4, #0x8]
+ mov r1, #0x0
+ blx FUN_020C9480
+ b _020038A4
+_020037CA:
+ ldr r0, [r4, #0x4]
+ ldr r2, [r4, #0x8]
+ mov r1, #0x0
+ blx FUN_020C9418
+ b _020038A4
+_020037D6:
+ blx FUN_020C8B10
+ ldr r0, [r4, #0x4]
+ ldr r2, [r4, #0x8]
+ mov r1, #0x0
+ blx FUN_020C8A90
+ blx FUN_020C8A2C
+ b _020038A4
+_020037EA:
+ blx FUN_020C8B10
+ ldr r0, [r4, #0x4]
+ ldr r2, [r4, #0x8]
+ add r1, r7, #0x0
+ blx FUN_020C8A90
+ blx FUN_020C8A2C
+ b _020038A4
+_020037FE:
+ blx FUN_020C8B10
+ mov r1, #0x1
+ ldr r0, [r4, #0x4]
+ ldr r2, [r4, #0x8]
+ lsl r1, r1, #0xe
+ blx FUN_020C8A90
+ blx FUN_020C8A2C
+ b _020038A4
+_02003814:
+ blx FUN_020C8B10
+ mov r1, #0x6
+ ldr r0, [r4, #0x4]
+ ldr r2, [r4, #0x8]
+ lsl r1, r1, #0xc
+ blx FUN_020C8A90
+ blx FUN_020C8A2C
+ b _020038A4
+_0200382A:
+ blx FUN_020C88CC
+ ldr r0, [r4, #0x4]
+ ldr r2, [r4, #0x8]
+ mov r1, #0x0
+ blx FUN_020C8858
+ blx FUN_020C880C
+ b _020038A4
+_0200383E:
+ blx FUN_020C88CC
+ ldr r0, [r4, #0x4]
+ ldr r2, [r4, #0x8]
+ add r1, r7, #0x0
+ blx FUN_020C8858
+ blx FUN_020C880C
+ b _020038A4
+_02003852:
+ blx FUN_020C88CC
+ mov r1, #0x1
+ ldr r0, [r4, #0x4]
+ ldr r2, [r4, #0x8]
+ lsl r1, r1, #0xe
+ blx FUN_020C8858
+ blx FUN_020C880C
+ b _020038A4
+_02003868:
+ blx FUN_020C88CC
+ mov r1, #0x6
+ ldr r0, [r4, #0x4]
+ ldr r2, [r4, #0x8]
+ lsl r1, r1, #0xc
+ blx FUN_020C8858
+ blx FUN_020C880C
+ b _020038A4
+_0200387E:
+ blx FUN_020C89BC
+ ldr r0, [r4, #0x4]
+ ldr r2, [r4, #0x8]
+ mov r1, #0x0
+ blx FUN_020C8948
+ blx FUN_020C88F0
+ b _020038A4
+_02003892:
+ blx FUN_020C87E8
+ ldr r0, [r4, #0x4]
+ ldr r2, [r4, #0x8]
+ mov r1, #0x0
+ blx FUN_020C8774
+ blx FUN_020C8728
+_020038A4:
+ add r5, r5, #0x1
+ add r4, #0x14
+ cmp r5, #0xe
+ bge _020038AE
+ b _02003750
+_020038AE:
+ ldr r3, _020038DC ; =0x0000011A
+ ldr r1, _020038E0 ; =0xFFFFC000
+ sub r2, r3, #0x2
+ ldrh r2, [r6, r2]
+ ldrh r0, [r6, r3]
+ lsl r2, r2, #0x10
+ and r0, r1
+ lsr r2, r2, #0x12
+ lsr r1, r1, #0x12
+ and r1, r2
+ orr r0, r1
+ strh r0, [r6, r3]
+ ldrh r0, [r6, r3]
+ lsl r0, r0, #0x12
+ lsr r0, r0, #0x12
+ bne _020038DA
+ sub r0, r3, #0x2
+ ldrh r1, [r6, r0]
+ mov r0, #0x3
+ bic r1, r0
+ sub r0, r3, #0x2
+ strh r1, [r6, r0]
+_020038DA:
+ pop {r3-r7, pc}
+ .balign 4
+_020038DC: .word 0x0000011A
+_020038E0: .word 0xFFFFC000
+
+ thumb_func_start FUN_020038E4
+FUN_020038E4: ; 0x020038E4
+ mov r1, #0x46
+ lsl r1, r1, #0x2
+ ldrh r0, [r0, r1]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x12
+ bx lr
+
+ thumb_func_start FUN_020038F0
+FUN_020038F0: ; 0x020038F0
+ push {r3-r4}
+ ldr r3, _0200390C ; =0x0000011A
+ lsl r1, r1, #0x10
+ ldrh r4, [r0, r3]
+ ldr r2, _02003910 ; =0xFFFF7FFF
+ lsr r1, r1, #0x10
+ lsl r1, r1, #0x1f
+ and r2, r4
+ lsr r1, r1, #0x10
+ orr r1, r2
+ strh r1, [r0, r3]
+ pop {r3-r4}
+ bx lr
+ nop
+_0200390C: .word 0x0000011A
+_02003910: .word 0xFFFF7FFF
+
+ thumb_func_start FUN_02003914
+FUN_02003914: ; 0x02003914
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r6, r0, #0x0
+ str r3, [sp, #0x0]
+ mov r0, #0x14
+ add r4, r1, #0x0
+ mul r4, r0
+ add r0, sp, #0x10
+ ldrh r0, [r0, #0x14]
+ add r7, r2, #0x0
+ ldr r5, [sp, #0x20]
+ str r0, [sp, #0x4]
+ lsl r1, r0, #0x1
+ add r0, r6, r4
+ ldr r0, [r0, #0x8]
+ cmp r1, r0
+ bls _0200393A
+ bl ErrorHandling
+_0200393A:
+ sub r0, r7, #0x1
+ cmp r0, #0x1
+ bhi _02003952
+ ldr r2, [r6, r4]
+ lsl r1, r5, #0x1
+ add r1, r2, r1
+ ldr r2, [sp, #0x4]
+ ldr r0, [sp, #0x0]
+ sub r2, r2, r5
+ lsl r2, r2, #0x1
+ blx MIi_CpuClear16
+_02003952:
+ cmp r7, #0x0
+ beq _0200395A
+ cmp r7, #0x2
+ bne _0200396E
+_0200395A:
+ add r1, r6, r4
+ ldr r2, [r1, #0x4]
+ lsl r1, r5, #0x1
+ add r1, r2, r1
+ ldr r2, [sp, #0x4]
+ ldr r0, [sp, #0x0]
+ sub r2, r2, r5
+ lsl r2, r2, #0x1
+ blx MIi_CpuClear16
+_0200396E:
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02003974
+FUN_02003974: ; 0x02003974
+ push {r4-r7, lr}
+ sub sp, #0xc
+ str r0, [sp, #0x0]
+ add r0, sp, #0x10
+ ldrh r0, [r0, #0x10]
+ str r1, [sp, #0x4]
+ add r7, r2, #0x0
+ lsl r1, r0, #0x1b
+ lsr r1, r1, #0x1b
+ mov r12, r1
+ lsl r1, r0, #0x16
+ lsl r0, r0, #0x11
+ lsr r1, r1, #0x1b
+ lsr r0, r0, #0x1b
+ mov r2, #0x0
+ mov lr, r1
+ str r0, [sp, #0x8]
+ cmp r7, #0x0
+ bls _020039E2
+_0200399A:
+ ldr r0, [sp, #0x0]
+ lsl r6, r2, #0x1
+ ldrh r4, [r0, r6]
+ lsl r0, r4, #0x1b
+ lsr r1, r0, #0x1b
+ lsl r0, r4, #0x16
+ lsl r4, r4, #0x11
+ lsr r5, r4, #0x1b
+ ldr r4, [sp, #0x8]
+ lsr r0, r0, #0x1b
+ sub r4, r4, r5
+ mul r4, r3
+ asr r4, r4, #0x4
+ add r4, r5, r4
+ lsl r5, r4, #0xa
+ mov r4, r12
+ sub r4, r4, r1
+ mul r4, r3
+ asr r4, r4, #0x4
+ add r1, r1, r4
+ mov r4, lr
+ sub r4, r4, r0
+ mul r4, r3
+ asr r4, r4, #0x4
+ add r0, r0, r4
+ lsl r0, r0, #0x5
+ orr r0, r1
+ add r1, r5, #0x0
+ orr r1, r0
+ ldr r0, [sp, #0x4]
+ strh r1, [r0, r6]
+ add r0, r2, #0x1
+ lsl r0, r0, #0x10
+ lsr r2, r0, #0x10
+ cmp r2, r7
+ blo _0200399A
+_020039E2:
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020039E8
+FUN_020039E8: ; 0x020039E8
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r7, r2, #0x0
+ add r5, r0, #0x0
+ mov r2, #0x14
+ add r6, r1, #0x0
+ mul r6, r2
+ str r3, [sp, #0x4]
+ ldr r1, [r5, r6]
+ mov r0, #0x0
+ add r4, r5, r6
+ cmp r1, #0x0
+ beq _02003A0A
+ ldr r1, [r4, #0x4]
+ cmp r1, #0x0
+ beq _02003A0A
+ mov r0, #0x1
+_02003A0A:
+ cmp r0, #0x0
+ bne _02003A12
+ bl ErrorHandling
+_02003A12:
+ add r3, sp, #0x10
+ ldrh r0, [r3, #0x14]
+ add r2, r5, r6
+ lsl r1, r7, #0x1
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x0]
+ ldr r2, [r2, #0x4]
+ add r0, r0, r1
+ add r1, r2, r1
+ ldrb r3, [r3, #0x10]
+ ldr r2, [sp, #0x4]
+ bl FUN_02003974
+ add sp, #0x8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02003A30
+FUN_02003A30: ; 0x02003A30
+ push {r3-r7, lr}
+ sub sp, #0x8
+ str r3, [sp, #0x4]
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ add r4, r2, #0x0
+ ldr r7, [sp, #0x20]
+ beq _02003A60
+_02003A40:
+ mov r0, #0x1
+ tst r0, r4
+ beq _02003A54
+ str r7, [sp, #0x0]
+ ldr r3, [sp, #0x4]
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ mov r2, #0x10
+ bl FUN_02003974
+_02003A54:
+ lsl r0, r4, #0xf
+ lsr r4, r0, #0x10
+ add r6, #0x20
+ add r5, #0x20
+ cmp r4, #0x0
+ bne _02003A40
+_02003A60:
+ add sp, #0x8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02003A64
+FUN_02003A64: ; 0x02003A64
+ push {r4-r7, lr}
+ sub sp, #0xc
+ str r3, [sp, #0x8]
+ add r6, r0, #0x0
+ add r7, r1, #0x0
+ ldr r0, [sp, #0x20]
+ add r5, r2, #0x0
+ mov r1, #0x14
+ add r2, r7, #0x0
+ str r0, [sp, #0x20]
+ mul r2, r1
+ mov r4, #0x0
+ ldr r1, [r6, r2]
+ add r0, r4, #0x0
+ cmp r1, #0x0
+ beq _02003A8E
+ add r1, r6, r2
+ ldr r1, [r1, #0x4]
+ cmp r1, #0x0
+ beq _02003A8E
+ mov r0, #0x1
+_02003A8E:
+ cmp r0, #0x0
+ bne _02003A96
+ bl ErrorHandling
+_02003A96:
+ cmp r5, #0x0
+ beq _02003AC0
+_02003A9A:
+ mov r0, #0x1
+ tst r0, r5
+ beq _02003AB6
+ ldr r0, [sp, #0x8]
+ lsl r2, r4, #0x10
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x20]
+ add r1, r7, #0x0
+ str r0, [sp, #0x4]
+ add r0, r6, #0x0
+ lsr r2, r2, #0x10
+ mov r3, #0x10
+ bl FUN_020039E8
+_02003AB6:
+ lsl r0, r5, #0xf
+ lsr r5, r0, #0x10
+ add r4, #0x10
+ cmp r5, #0x0
+ bne _02003A9A
+_02003AC0:
+ add sp, #0xc
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_02003AC4
+FUN_02003AC4: ; 0x02003AC4
+ push {r3-r7, lr}
+ mov lr, r1
+ mov r12, r2
+ add r7, r3, #0x0
+ mov r4, #0x0
+ cmp r1, #0x0
+ ble _02003B3C
+ ldr r6, [sp, #0x18]
+_02003AD4:
+ ldrh r3, [r0, #0x0]
+ mov r1, #0x1f
+ add r2, r3, #0x0
+ asr r5, r3, #0xa
+ and r2, r1
+ and r5, r1
+ mov r1, #0x1d
+ mul r1, r5
+ mov r5, #0x4c
+ mul r5, r2
+ asr r3, r3, #0x5
+ mov r2, #0x1f
+ and r3, r2
+ mov r2, #0x97
+ mul r2, r3
+ add r2, r5, r2
+ add r1, r1, r2
+ asr r3, r1, #0x8
+ mov r1, r12
+ add r2, r1, #0x0
+ mul r2, r3
+ lsl r1, r2, #0x10
+ lsr r1, r1, #0x10
+ asr r2, r1, #0x8
+ add r1, r7, #0x0
+ mul r1, r3
+ mul r3, r6
+ lsl r1, r1, #0x10
+ lsl r3, r3, #0x10
+ lsr r1, r1, #0x10
+ lsr r3, r3, #0x10
+ asr r1, r1, #0x8
+ asr r3, r3, #0x8
+ cmp r2, #0x1f
+ ble _02003B1C
+ mov r2, #0x1f
+_02003B1C:
+ cmp r1, #0x1f
+ ble _02003B22
+ mov r1, #0x1f
+_02003B22:
+ cmp r3, #0x1f
+ ble _02003B28
+ mov r3, #0x1f
+_02003B28:
+ lsl r3, r3, #0xa
+ lsl r1, r1, #0x5
+ orr r1, r3
+ orr r1, r2
+ strh r1, [r0, #0x0]
+ add r4, r4, #0x1
+ mov r1, lr
+ add r0, r0, #0x2
+ cmp r4, r1
+ blt _02003AD4
+_02003B3C:
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02003B40
+FUN_02003B40: ; 0x02003B40
+ push {r3-r5, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ add r0, r1, #0x0
+ add r1, r2, #0x0
+ add r2, sp, #0x4
+ bl FUN_02006C08
+ add r4, r0, #0x0
+ bne _02003B58
+ bl ErrorHandling
+_02003B58:
+ ldr r0, [sp, #0x1c]
+ cmp r0, #0x0
+ bne _02003B64
+ ldr r0, [sp, #0x4]
+ ldr r0, [r0, #0x8]
+ str r0, [sp, #0x1c]
+_02003B64:
+ ldr r0, [sp, #0x2c]
+ ldr r2, [sp, #0x24]
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x4]
+ ldr r3, [sp, #0x28]
+ ldr r0, [r0, #0xc]
+ mov r1, #0x10
+ bl FUN_02003AC4
+ ldr r0, [sp, #0x1c]
+ add r3, sp, #0x8
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x0]
+ ldr r1, [sp, #0x4]
+ ldrh r3, [r3, #0x18]
+ ldr r1, [r1, #0xc]
+ ldr r2, [sp, #0x18]
+ add r0, r5, #0x0
+ bl FUN_02003054
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x8
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02003B98
+FUN_02003B98: ; 0x02003B98
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ bl FUN_02003D30
+ add r4, r0, #0x0
+ blx FUN_020C01D0
+ bl FUN_020040C8
+ add r0, r4, #0x0
+ bl FUN_02004064
+ add r0, r4, #0x0
+ ldr r1, _02003C00 ; =0x000BBC00
+ add r0, #0x94
+ blx FUN_020C2A94
+ add r1, r4, #0x0
+ add r1, #0x90
+ str r0, [r1, #0x0]
+ add r2, r4, #0x0
+ add r2, #0x90
+ ldr r1, _02003C04 ; =0x02104780
+ ldr r2, [r2, #0x0]
+ add r0, r4, #0x0
+ mov r3, #0x0
+ blx FUN_020C26F8
+ add r0, r4, #0x0
+ add r0, #0x90
+ ldr r0, [r0, #0x0]
+ blx FUN_020C39CC
+ add r0, r4, #0x0
+ bl FUN_02004088
+ add r0, r4, #0x0
+ bl FUN_020040A4
+ ldr r0, _02003C08 ; =0x02107070
+ mov r1, #0x0
+ str r1, [r0, #0x4]
+ ldr r0, _02003C0C ; =0x000BCD4C
+ str r5, [r4, r0]
+ ldrh r0, [r6, #0x0]
+ lsl r0, r0, #0x1a
+ lsr r0, r0, #0x1e
+ bl FUN_02004D60
+ pop {r4-r6, pc}
+ nop
+_02003C00: .word 0x000BBC00
+_02003C04: .word 0x02104780
+_02003C08: .word 0x02107070
+_02003C0C: .word 0x000BCD4C
+
+ thumb_func_start FUN_02003C10
+FUN_02003C10: ; 0x02003C10
+ push {r4, lr}
+ bl FUN_02003D30
+ add r4, r0, #0x0
+ bl FUN_02003D04
+ cmp r0, #0x0
+ bne _02003C30
+ ldr r0, _02003C3C ; =0x000BCD00
+ ldr r1, [r4, r0]
+ cmp r1, #0x0
+ ble _02003C2C
+ sub r1, r1, #0x1
+ str r1, [r4, r0]
+_02003C2C:
+ bl FUN_02003C40
+_02003C30:
+ bl FUN_02005CFC
+ blx FUN_020C01A0
+ pop {r4, pc}
+ nop
+_02003C3C: .word 0x000BCD00
+
+ thumb_func_start FUN_02003C40
+FUN_02003C40: ; 0x02003C40
+ push {r4, lr}
+ bl FUN_02003D30
+ add r4, r0, #0x0
+ ldr r0, _02003CDC ; =0x02107070
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x6
+ bhi _02003CD8
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02003C5C: ; jump table (using 16-bit offset)
+ .short _02003CD8 - _02003C5C - 2; case 0
+ .short _02003C6A - _02003C5C - 2; case 1
+ .short _02003CD8 - _02003C5C - 2; case 2
+ .short _02003C72 - _02003C5C - 2; case 3
+ .short _02003C82 - _02003C5C - 2; case 4
+ .short _02003C92 - _02003C5C - 2; case 5
+ .short _02003CB0 - _02003C5C - 2; case 6
+_02003C6A:
+ mov r0, #0x2
+ bl FUN_02003CE8
+ pop {r4, pc}
+_02003C72:
+ bl FUN_02005404
+ cmp r0, #0x0
+ bne _02003CD8
+ mov r0, #0x2
+ bl FUN_02003CE8
+ pop {r4, pc}
+_02003C82:
+ bl FUN_02005404
+ cmp r0, #0x0
+ bne _02003CD8
+ mov r0, #0x2
+ bl FUN_02003CE8
+ pop {r4, pc}
+_02003C92:
+ bl FUN_02005404
+ cmp r0, #0x0
+ bne _02003CD8
+ bl FUN_02004D94
+ cmp r0, #0x0
+ bne _02003CD8
+ bl FUN_020040DC
+ ldr r0, _02003CE0 ; =0x000BCD0E
+ ldrh r0, [r4, r0]
+ bl FUN_0200521C
+ pop {r4, pc}
+_02003CB0:
+ bl FUN_02005404
+ cmp r0, #0x0
+ bne _02003CD8
+ bl FUN_02004D94
+ cmp r0, #0x0
+ bne _02003CD8
+ bl FUN_020040DC
+ ldr r0, _02003CE0 ; =0x000BCD0E
+ ldrh r0, [r4, r0]
+ bl FUN_0200521C
+ ldr r1, _02003CE4 ; =0x000BCD08
+ mov r0, #0x7f
+ ldr r1, [r4, r1]
+ mov r2, #0x0
+ bl FUN_0200538C
+_02003CD8:
+ pop {r4, pc}
+ nop
+_02003CDC: .word 0x02107070
+_02003CE0: .word 0x000BCD0E
+_02003CE4: .word 0x000BCD08
+
+ thumb_func_start FUN_02003CE8
+FUN_02003CE8: ; 0x02003CE8
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02003D30
+ ldr r1, _02003CFC ; =0x000BCCFC
+ mov r2, #0x0
+ strh r2, [r0, r1]
+ ldr r0, _02003D00 ; =0x02107070
+ str r4, [r0, #0x0]
+ pop {r4, pc}
+ .balign 4
+_02003CFC: .word 0x000BCCFC
+_02003D00: .word 0x02107070
+
+ thumb_func_start FUN_02003D04
+FUN_02003D04: ; 0x02003D04
+ push {r4, lr}
+ bl FUN_02003D30
+ add r4, r0, #0x0
+ mov r0, #0x2
+ bl FUN_020048BC
+ cmp r0, #0x0
+ beq _02003D1A
+ mov r0, #0x1
+ pop {r4, pc}
+_02003D1A:
+ ldr r0, _02003D2C ; =0x000BCD12
+ ldrh r0, [r4, r0]
+ cmp r0, #0x0
+ beq _02003D26
+ mov r0, #0x1
+ pop {r4, pc}
+_02003D26:
+ mov r0, #0x0
+ pop {r4, pc}
+ nop
+_02003D2C: .word 0x000BCD12
+
+ thumb_func_start FUN_02003D30
+FUN_02003D30: ; 0x02003D30
+ ldr r0, _02003D34 ; =0x02107078
+ bx lr
+ .balign 4
+_02003D34: .word 0x02107078
+
+ thumb_func_start FUN_02003D38
+FUN_02003D38: ; 0x02003D38
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02003D30
+ cmp r4, #0x27
+ bls _02003D46
+ b _02003E92
+_02003D46:
+ add r1, r4, r4
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02003D52: ; jump table (using 16-bit offset)
+ .short _02003DA8 - _02003D52 - 2; case 0
+ .short _02003DAE - _02003D52 - 2; case 1
+ .short _02003DB4 - _02003D52 - 2; case 2
+ .short _02003DBA - _02003D52 - 2; case 3
+ .short _02003DC0 - _02003D52 - 2; case 4
+ .short _02003DA2 - _02003D52 - 2; case 5
+ .short _02003DC6 - _02003D52 - 2; case 6
+ .short _02003DCC - _02003D52 - 2; case 7
+ .short _02003DD2 - _02003D52 - 2; case 8
+ .short _02003DD8 - _02003D52 - 2; case 9
+ .short _02003DDE - _02003D52 - 2; case 10
+ .short _02003DE4 - _02003D52 - 2; case 11
+ .short _02003DEA - _02003D52 - 2; case 12
+ .short _02003DF0 - _02003D52 - 2; case 13
+ .short _02003DF6 - _02003D52 - 2; case 14
+ .short _02003DFC - _02003D52 - 2; case 15
+ .short _02003E02 - _02003D52 - 2; case 16
+ .short _02003E08 - _02003D52 - 2; case 17
+ .short _02003E0E - _02003D52 - 2; case 18
+ .short _02003E14 - _02003D52 - 2; case 19
+ .short _02003E1A - _02003D52 - 2; case 20
+ .short _02003E20 - _02003D52 - 2; case 21
+ .short _02003E26 - _02003D52 - 2; case 22
+ .short _02003E2C - _02003D52 - 2; case 23
+ .short _02003E32 - _02003D52 - 2; case 24
+ .short _02003E38 - _02003D52 - 2; case 25
+ .short _02003E3E - _02003D52 - 2; case 26
+ .short _02003E44 - _02003D52 - 2; case 27
+ .short _02003E4A - _02003D52 - 2; case 28
+ .short _02003E50 - _02003D52 - 2; case 29
+ .short _02003E56 - _02003D52 - 2; case 30
+ .short _02003E5C - _02003D52 - 2; case 31
+ .short _02003E62 - _02003D52 - 2; case 32
+ .short _02003E68 - _02003D52 - 2; case 33
+ .short _02003E6E - _02003D52 - 2; case 34
+ .short _02003E74 - _02003D52 - 2; case 35
+ .short _02003E7A - _02003D52 - 2; case 36
+ .short _02003E80 - _02003D52 - 2; case 37
+ .short _02003E86 - _02003D52 - 2; case 38
+ .short _02003E8C - _02003D52 - 2; case 39
+_02003DA2:
+ ldr r1, _02003E9C ; =0x000BCCFE
+ add r0, r0, r1
+ pop {r4, pc}
+_02003DA8:
+ ldr r1, _02003EA0 ; =0x000BBCB8
+ add r0, r0, r1
+ pop {r4, pc}
+_02003DAE:
+ ldr r1, _02003EA4 ; =0x000BBCBC
+ add r0, r0, r1
+ pop {r4, pc}
+_02003DB4:
+ ldr r1, _02003EA8 ; =0x000BBCC0
+ add r0, r0, r1
+ pop {r4, pc}
+_02003DBA:
+ ldr r1, _02003EAC ; =0x000BBCE0
+ add r0, r0, r1
+ pop {r4, pc}
+_02003DC0:
+ ldr r1, _02003EB0 ; =0x000BCCE0
+ add r0, r0, r1
+ pop {r4, pc}
+_02003DC6:
+ ldr r1, _02003EB4 ; =0x000BCD00
+ add r0, r0, r1
+ pop {r4, pc}
+_02003DCC:
+ ldr r1, _02003EB8 ; =0x000BCD04
+ add r0, r0, r1
+ pop {r4, pc}
+_02003DD2:
+ ldr r1, _02003EBC ; =0x000BCD08
+ add r0, r0, r1
+ pop {r4, pc}
+_02003DD8:
+ ldr r1, _02003EC0 ; =0x000BCD0C
+ add r0, r0, r1
+ pop {r4, pc}
+_02003DDE:
+ ldr r1, _02003EC4 ; =0x000BCD0E
+ add r0, r0, r1
+ pop {r4, pc}
+_02003DE4:
+ ldr r1, _02003EC8 ; =0x000BCD10
+ add r0, r0, r1
+ pop {r4, pc}
+_02003DEA:
+ ldr r1, _02003ECC ; =0x000BCD11
+ add r0, r0, r1
+ pop {r4, pc}
+_02003DF0:
+ ldr r1, _02003ED0 ; =0x000BCD12
+ add r0, r0, r1
+ pop {r4, pc}
+_02003DF6:
+ ldr r1, _02003ED4 ; =0x000BCD14
+ add r0, r0, r1
+ pop {r4, pc}
+_02003DFC:
+ ldr r1, _02003ED8 ; =0x000BCD15
+ add r0, r0, r1
+ pop {r4, pc}
+_02003E02:
+ ldr r1, _02003EDC ; =0x000BCD16
+ add r0, r0, r1
+ pop {r4, pc}
+_02003E08:
+ ldr r1, _02003EE0 ; =0x000BCD17
+ add r0, r0, r1
+ pop {r4, pc}
+_02003E0E:
+ ldr r1, _02003EE4 ; =0x000BCD18
+ add r0, r0, r1
+ pop {r4, pc}
+_02003E14:
+ ldr r1, _02003EE8 ; =0x000BCD19
+ add r0, r0, r1
+ pop {r4, pc}
+_02003E1A:
+ ldr r1, _02003EEC ; =0x000BCD1A
+ add r0, r0, r1
+ pop {r4, pc}
+_02003E20:
+ ldr r1, _02003EF0 ; =0x000BCD1B
+ add r0, r0, r1
+ pop {r4, pc}
+_02003E26:
+ ldr r1, _02003EF4 ; =0x000BCD1C
+ add r0, r0, r1
+ pop {r4, pc}
+_02003E2C:
+ ldr r1, _02003EF8 ; =0x000BCD20
+ add r0, r0, r1
+ pop {r4, pc}
+_02003E32:
+ ldr r1, _02003EFC ; =0x000BCD24
+ add r0, r0, r1
+ pop {r4, pc}
+_02003E38:
+ ldr r1, _02003F00 ; =0x000BCD28
+ add r0, r0, r1
+ pop {r4, pc}
+_02003E3E:
+ ldr r1, _02003F04 ; =0x000BCD2C
+ add r0, r0, r1
+ pop {r4, pc}
+_02003E44:
+ ldr r1, _02003F08 ; =0x000BCD30
+ add r0, r0, r1
+ pop {r4, pc}
+_02003E4A:
+ ldr r1, _02003F0C ; =0x000BCD34
+ add r0, r0, r1
+ pop {r4, pc}
+_02003E50:
+ ldr r1, _02003F10 ; =0x000BCD38
+ add r0, r0, r1
+ pop {r4, pc}
+_02003E56:
+ ldr r1, _02003F14 ; =0x000BCD39
+ add r0, r0, r1
+ pop {r4, pc}
+_02003E5C:
+ ldr r1, _02003F18 ; =0x000BCD3A
+ add r0, r0, r1
+ pop {r4, pc}
+_02003E62:
+ ldr r1, _02003F1C ; =0x000BCD3C
+ add r0, r0, r1
+ pop {r4, pc}
+_02003E68:
+ ldr r1, _02003F20 ; =0x000BCD40
+ add r0, r0, r1
+ pop {r4, pc}
+_02003E6E:
+ ldr r1, _02003F24 ; =0x000BCD48
+ add r0, r0, r1
+ pop {r4, pc}
+_02003E74:
+ ldr r1, _02003F28 ; =0x000BCD4C
+ add r0, r0, r1
+ pop {r4, pc}
+_02003E7A:
+ ldr r1, _02003F2C ; =0x000BCD50
+ add r0, r0, r1
+ pop {r4, pc}
+_02003E80:
+ ldr r1, _02003F30 ; =0x000BCD54
+ add r0, r0, r1
+ pop {r4, pc}
+_02003E86:
+ ldr r1, _02003F34 ; =0x000BCD58
+ add r0, r0, r1
+ pop {r4, pc}
+_02003E8C:
+ ldr r1, _02003F38 ; =0x000BCD5C
+ add r0, r0, r1
+ pop {r4, pc}
+_02003E92:
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r4, pc}
+ nop
+_02003E9C: .word 0x000BCCFE
+_02003EA0: .word 0x000BBCB8
+_02003EA4: .word 0x000BBCBC
+_02003EA8: .word 0x000BBCC0
+_02003EAC: .word 0x000BBCE0
+_02003EB0: .word 0x000BCCE0
+_02003EB4: .word 0x000BCD00
+_02003EB8: .word 0x000BCD04
+_02003EBC: .word 0x000BCD08
+_02003EC0: .word 0x000BCD0C
+_02003EC4: .word 0x000BCD0E
+_02003EC8: .word 0x000BCD10
+_02003ECC: .word 0x000BCD11
+_02003ED0: .word 0x000BCD12
+_02003ED4: .word 0x000BCD14
+_02003ED8: .word 0x000BCD15
+_02003EDC: .word 0x000BCD16
+_02003EE0: .word 0x000BCD17
+_02003EE4: .word 0x000BCD18
+_02003EE8: .word 0x000BCD19
+_02003EEC: .word 0x000BCD1A
+_02003EF0: .word 0x000BCD1B
+_02003EF4: .word 0x000BCD1C
+_02003EF8: .word 0x000BCD20
+_02003EFC: .word 0x000BCD24
+_02003F00: .word 0x000BCD28
+_02003F04: .word 0x000BCD2C
+_02003F08: .word 0x000BCD30
+_02003F0C: .word 0x000BCD34
+_02003F10: .word 0x000BCD38
+_02003F14: .word 0x000BCD39
+_02003F18: .word 0x000BCD3A
+_02003F1C: .word 0x000BCD3C
+_02003F20: .word 0x000BCD40
+_02003F24: .word 0x000BCD48
+_02003F28: .word 0x000BCD4C
+_02003F2C: .word 0x000BCD50
+_02003F30: .word 0x000BCD54
+_02003F34: .word 0x000BCD58
+_02003F38: .word 0x000BCD5C
+
+ thumb_func_start FUN_02003F3C
+FUN_02003F3C: ; 0x02003F3C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_02003D30
+ add r0, #0x90
+ ldr r0, [r0, #0x0]
+ blx FUN_020C290C
+ add r4, r0, #0x0
+ mov r0, #0x0
+ mvn r0, r0
+ cmp r4, r0
+ bne _02003F5A
+ bl ErrorHandling
+_02003F5A:
+ cmp r5, #0x0
+ beq _02003F60
+ str r4, [r5, #0x0]
+_02003F60:
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02003F64
+FUN_02003F64: ; 0x02003F64
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02003D30
+ add r0, #0x90
+ ldr r0, [r0, #0x0]
+ add r1, r4, #0x0
+ blx FUN_020C2828
+ pop {r4, pc}
+
+ thumb_func_start FUN_02003F78
+FUN_02003F78: ; 0x02003F78
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02003D30
+ add r1, r0, #0x0
+ add r1, #0x90
+ ldr r1, [r1, #0x0]
+ add r0, r4, #0x0
+ blx FUN_020C36A8
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02003F90
+FUN_02003F90: ; 0x02003F90
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02003D30
+ add r1, r0, #0x0
+ add r1, #0x90
+ ldr r1, [r1, #0x0]
+ add r0, r4, #0x0
+ blx FUN_020C3674
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02003FA8
+FUN_02003FA8: ; 0x02003FA8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_02003D30
+ add r2, r0, #0x0
+ add r2, #0x90
+ ldr r2, [r2, #0x0]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ blx FUN_020C35E0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02003FC4
+FUN_02003FC4: ; 0x02003FC4
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02003D30
+ add r1, r0, #0x0
+ add r1, #0x90
+ ldr r1, [r1, #0x0]
+ add r0, r4, #0x0
+ blx FUN_020C360C
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02003FDC
+FUN_02003FDC: ; 0x02003FDC
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02003D30
+ add r1, r0, #0x0
+ add r1, #0x90
+ ldr r1, [r1, #0x0]
+ add r0, r4, #0x0
+ blx FUN_020C3640
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02003FF4
+FUN_02003FF4: ; 0x02003FF4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_02003D30
+ add r4, r0, #0x0
+ cmp r5, #0x9
+ blt _02004008
+ bl ErrorHandling
+ mov r5, #0x0
+_02004008:
+ ldr r0, _02004014 ; =0x000BBC94
+ add r1, r4, r0
+ lsl r0, r5, #0x2
+ add r0, r1, r0
+ pop {r3-r5, pc}
+ nop
+_02004014: .word 0x000BBC94
+
+ thumb_func_start FUN_02004018
+FUN_02004018: ; 0x02004018
+ push {r3, lr}
+ cmp r0, #0x7
+ bhi _0200405A
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0200402A: ; jump table (using 16-bit offset)
+ .short _0200403E - _0200402A - 2; case 0
+ .short _0200403A - _0200402A - 2; case 1
+ .short _02004042 - _0200402A - 2; case 2
+ .short _02004046 - _0200402A - 2; case 3
+ .short _0200404A - _0200402A - 2; case 4
+ .short _0200404E - _0200402A - 2; case 5
+ .short _02004052 - _0200402A - 2; case 6
+ .short _02004056 - _0200402A - 2; case 7
+_0200403A:
+ mov r0, #0x0
+ pop {r3, pc}
+_0200403E:
+ mov r0, #0x1
+ pop {r3, pc}
+_02004042:
+ mov r0, #0x2
+ pop {r3, pc}
+_02004046:
+ mov r0, #0x3
+ pop {r3, pc}
+_0200404A:
+ mov r0, #0x4
+ pop {r3, pc}
+_0200404E:
+ mov r0, #0x5
+ pop {r3, pc}
+_02004052:
+ mov r0, #0x6
+ pop {r3, pc}
+_02004056:
+ mov r0, #0x7
+ pop {r3, pc}
+_0200405A:
+ bl ErrorHandling
+ mov r0, #0x3
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02004064
+FUN_02004064: ; 0x02004064
+ push {r4, lr}
+ ldr r2, _02004080 ; =0x000BCD60
+ mov r1, #0x0
+ add r4, r0, #0x0
+ blx FUN_020DF4A4
+ ldr r0, _02004084 ; =0x000BCD1C
+ mov r1, #0x0
+_02004074:
+ add r1, r1, #0x1
+ str r1, [r4, r0]
+ add r4, r4, #0x4
+ cmp r1, #0x7
+ blt _02004074
+ pop {r4, pc}
+ .balign 4
+_02004080: .word 0x000BCD60
+_02004084: .word 0x000BCD1C
+
+ thumb_func_start FUN_02004088
+FUN_02004088: ; 0x02004088
+ push {r3-r5, lr}
+ ldr r1, _020040A0 ; =0x000BBC94
+ mov r4, #0x0
+ add r5, r0, r1
+_02004090:
+ add r0, r5, #0x0
+ blx FUN_020C0F80
+ add r4, r4, #0x1
+ add r5, r5, #0x4
+ cmp r4, #0x9
+ blt _02004090
+ pop {r3-r5, pc}
+ .balign 4
+_020040A0: .word 0x000BBC94
+
+ thumb_func_start FUN_020040A4
+FUN_020040A4: ; 0x020040A4
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _020040C0 ; =0x000BCD1C
+ add r0, r4, r0
+ bl FUN_02003F3C
+ mov r0, #0x0
+ bl FUN_02003F78
+ ldr r0, _020040C4 ; =0x000BCD20
+ add r0, r4, r0
+ bl FUN_02003F3C
+ pop {r4, pc}
+ .balign 4
+_020040C0: .word 0x000BCD1C
+_020040C4: .word 0x000BCD20
+
+ thumb_func_start FUN_020040C8
+FUN_020040C8: ; 0x020040C8
+ push {r3, lr}
+ blx MIC_Init
+ mov r0, #0x1
+ blx FUN_020D5168
+ mov r0, #0x2
+ blx FUN_020D5150
+ pop {r3, pc}
+
+ thumb_func_start FUN_020040DC
+FUN_020040DC: ; 0x020040DC
+ push {r3, lr}
+ mov r0, #0x7
+ mov r1, #0x0
+ blx FUN_020C1040
+ mov r0, #0x7
+ bl FUN_02003FF4
+ blx FUN_020C0F68
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_020040F4
+FUN_020040F4: ; 0x020040F4
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x5
+ bl FUN_02003D38
+ strb r4, [r0, #0x0]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02004104
+FUN_02004104: ; 0x02004104
+ push {r3, lr}
+ mov r0, #0x5
+ bl FUN_02003D38
+ ldrb r0, [r0, #0x0]
+ pop {r3, pc}
+
+ thumb_func_start FUN_02004110
+FUN_02004110: ; 0x02004110
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x9
+ bl FUN_02003D38
+ strh r4, [r0, #0x0]
+ mov r0, #0x0
+ bl FUN_02004130
+ pop {r4, pc}
+
+ thumb_func_start FUN_02004124
+FUN_02004124: ; 0x02004124
+ push {r3, lr}
+ mov r0, #0x9
+ bl FUN_02003D38
+ ldrh r0, [r0, #0x0]
+ pop {r3, pc}
+
+ thumb_func_start FUN_02004130
+FUN_02004130: ; 0x02004130
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0xa
+ bl FUN_02003D38
+ strh r4, [r0, #0x0]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02004140
+FUN_02004140: ; 0x02004140
+ push {r3, lr}
+ mov r0, #0xa
+ bl FUN_02003D38
+ ldrh r0, [r0, #0x0]
+ pop {r3, pc}
+
+ thumb_func_start FUN_0200414C
+FUN_0200414C: ; 0x0200414C
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x1f
+ bl FUN_02003D38
+ strh r4, [r0, #0x0]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200415C
+FUN_0200415C: ; 0x0200415C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r0, #0x14
+ bl FUN_02003D38
+ add r4, r0, #0x0
+ mov r0, #0x15
+ bl FUN_02003D38
+ cmp r5, #0x33
+ bhs _0200417A
+ strb r5, [r4, #0x0]
+ mov r1, #0x0
+ strb r1, [r0, #0x0]
+ pop {r3-r5, pc}
+_0200417A:
+ strb r5, [r0, #0x0]
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02004180
+FUN_02004180: ; 0x02004180
+ push {r3, lr}
+ cmp r0, #0x39
+ bgt _020041DE
+ blt _0200418A
+ b _020042C8
+_0200418A:
+ cmp r0, #0x35
+ bgt _020041CC
+ blt _02004192
+ b _0200429A
+_02004192:
+ cmp r0, #0x33
+ bgt _020041C6
+ bge _0200427C
+ cmp r0, #0xe
+ bhi _020041CA
+ add r2, r0, r0
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_020041A8: ; jump table (using 16-bit offset)
+ .short _0200432C - _020041A8 - 2; case 0
+ .short _02004222 - _020041A8 - 2; case 1
+ .short _0200422C - _020041A8 - 2; case 2
+ .short _02004236 - _020041A8 - 2; case 3
+ .short _02004240 - _020041A8 - 2; case 4
+ .short _0200424A - _020041A8 - 2; case 5
+ .short _0200425E - _020041A8 - 2; case 6
+ .short _0200429A - _020041A8 - 2; case 7
+ .short _02004268 - _020041A8 - 2; case 8
+ .short _02004222 - _020041A8 - 2; case 9
+ .short _02004222 - _020041A8 - 2; case 10
+ .short _02004254 - _020041A8 - 2; case 11
+ .short _02004272 - _020041A8 - 2; case 12
+ .short _0200422C - _020041A8 - 2; case 13
+ .short _02004222 - _020041A8 - 2; case 14
+_020041C6:
+ cmp r0, #0x34
+ beq _02004290
+_020041CA:
+ b _0200432C
+_020041CC:
+ cmp r0, #0x37
+ bgt _020041D8
+ bge _020042AE
+ cmp r0, #0x36
+ beq _020042A4
+ b _0200432C
+_020041D8:
+ cmp r0, #0x38
+ beq _020042BE
+ b _0200432C
+_020041DE:
+ cmp r0, #0x3d
+ bgt _020041F8
+ blt _020041E6
+ b _020042F0
+_020041E6:
+ cmp r0, #0x3b
+ bgt _020041F2
+ bge _020042DC
+ cmp r0, #0x3a
+ beq _020042D2
+ b _0200432C
+_020041F2:
+ cmp r0, #0x3c
+ beq _020042E6
+ b _0200432C
+_020041F8:
+ cmp r0, #0x3f
+ bgt _02004206
+ blt _02004200
+ b _02004304
+_02004200:
+ cmp r0, #0x3e
+ beq _020042FA
+ b _0200432C
+_02004206:
+ sub r0, #0x40
+ cmp r0, #0x3
+ bls _0200420E
+ b _0200432C
+_0200420E:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0200421A: ; jump table (using 16-bit offset)
+ .short _0200430E - _0200421A - 2; case 0
+ .short _0200431E - _0200421A - 2; case 1
+ .short _02004286 - _0200421A - 2; case 2
+ .short _020042AE - _0200421A - 2; case 3
+_02004222:
+ mov r0, #0x1
+ bl FUN_02003F78
+ add r1, r0, #0x0
+ b _0200432C
+_0200422C:
+ mov r0, #0x2
+ bl FUN_02003F78
+ add r1, r0, #0x0
+ b _0200432C
+_02004236:
+ mov r0, #0xd
+ bl FUN_02003F78
+ add r1, r0, #0x0
+ b _0200432C
+_02004240:
+ mov r0, #0x1
+ bl FUN_02003F78
+ add r1, r0, #0x0
+ b _0200432C
+_0200424A:
+ mov r0, #0x2
+ bl FUN_02003F78
+ add r1, r0, #0x0
+ b _0200432C
+_02004254:
+ mov r0, #0x1
+ bl FUN_02003F78
+ add r1, r0, #0x0
+ b _0200432C
+_0200425E:
+ mov r0, #0xb
+ bl FUN_02003F78
+ add r1, r0, #0x0
+ b _0200432C
+_02004268:
+ mov r0, #0x1
+ bl FUN_02003F78
+ add r1, r0, #0x0
+ b _0200432C
+_02004272:
+ mov r0, #0xe
+ bl FUN_02003F78
+ add r1, r0, #0x0
+ b _0200432C
+_0200427C:
+ mov r0, #0x3
+ bl FUN_02003F78
+ add r1, r0, #0x0
+ b _0200432C
+_02004286:
+ mov r0, #0x6
+ bl FUN_02003F78
+ add r1, r0, #0x0
+ b _0200432C
+_02004290:
+ mov r0, #0x5
+ bl FUN_02003F78
+ add r1, r0, #0x0
+ b _0200432C
+_0200429A:
+ mov r0, #0x9
+ bl FUN_02003F78
+ add r1, r0, #0x0
+ b _0200432C
+_020042A4:
+ mov r0, #0xa
+ bl FUN_02003F78
+ add r1, r0, #0x0
+ b _0200432C
+_020042AE:
+ ldr r0, _02004330 ; =0x000005E5
+ bl FUN_02003FDC
+ ldr r0, _02004330 ; =0x000005E5
+ bl FUN_02003FC4
+ add r1, r0, #0x0
+ b _0200432C
+_020042BE:
+ mov r0, #0xc
+ bl FUN_02003F78
+ add r1, r0, #0x0
+ b _0200432C
+_020042C8:
+ mov r0, #0x7
+ bl FUN_02003F78
+ add r1, r0, #0x0
+ b _0200432C
+_020042D2:
+ mov r0, #0x8
+ bl FUN_02003F78
+ add r1, r0, #0x0
+ b _0200432C
+_020042DC:
+ mov r0, #0xf
+ bl FUN_02003F78
+ add r1, r0, #0x0
+ b _0200432C
+_020042E6:
+ mov r0, #0x3
+ bl FUN_02003F78
+ add r1, r0, #0x0
+ b _0200432C
+_020042F0:
+ mov r0, #0x5
+ bl FUN_02003F78
+ add r1, r0, #0x0
+ b _0200432C
+_020042FA:
+ mov r0, #0xf
+ bl FUN_02003F78
+ add r1, r0, #0x0
+ b _0200432C
+_02004304:
+ mov r0, #0x4
+ bl FUN_02003F78
+ add r1, r0, #0x0
+ b _0200432C
+_0200430E:
+ ldr r0, _02004334 ; =0x000005ED
+ bl FUN_02003FDC
+ ldr r0, _02004334 ; =0x000005ED
+ bl FUN_02003FC4
+ add r1, r0, #0x0
+ b _0200432C
+_0200431E:
+ ldr r0, _02004338 ; =0x000005EC
+ bl FUN_02003FDC
+ ldr r0, _02004338 ; =0x000005EC
+ bl FUN_02003FC4
+ add r1, r0, #0x0
+_0200432C:
+ add r0, r1, #0x0
+ pop {r3, pc}
+ .balign 4
+_02004330: .word 0x000005E5
+_02004334: .word 0x000005ED
+_02004338: .word 0x000005EC
+
+ thumb_func_start FUN_0200433C
+FUN_0200433C: ; 0x0200433C
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r4, r0, #0x0
+ mov r0, #0x14
+ add r5, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_02003D38
+ str r0, [sp, #0x0]
+ mov r0, #0x15
+ bl FUN_02003D38
+ str r0, [sp, #0x4]
+ mov r0, #0xd
+ bl FUN_02003D38
+ add r7, r0, #0x0
+ cmp r4, #0x33
+ bhs _02004370
+ ldr r0, [sp, #0x0]
+ ldrb r0, [r0, #0x0]
+ cmp r0, r4
+ bne _0200437E
+ add sp, #0x8
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_02004370:
+ ldr r0, [sp, #0x4]
+ ldrb r0, [r0, #0x0]
+ cmp r0, r4
+ bne _0200437E
+ add sp, #0x8
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0200437E:
+ add r0, r4, #0x0
+ bl FUN_0200415C
+ cmp r4, #0x39
+ bgt _020043DC
+ bge _02004458
+ cmp r4, #0x35
+ bgt _020043CA
+ bge _02004458
+ cmp r4, #0x33
+ bgt _020043C4
+ bge _02004458
+ cmp r4, #0xe
+ bhi _020043C8
+ add r0, r4, r4
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_020043A6: ; jump table (using 16-bit offset)
+ .short _020044A0 - _020043A6 - 2; case 0
+ .short _02004460 - _020043A6 - 2; case 1
+ .short _02004484 - _020043A6 - 2; case 2
+ .short _02004496 - _020043A6 - 2; case 3
+ .short _0200441C - _020043A6 - 2; case 4
+ .short _02004430 - _020043A6 - 2; case 5
+ .short _02004444 - _020043A6 - 2; case 6
+ .short _0200444E - _020043A6 - 2; case 7
+ .short _02004496 - _020043A6 - 2; case 8
+ .short _02004496 - _020043A6 - 2; case 9
+ .short _02004496 - _020043A6 - 2; case 10
+ .short _0200443A - _020043A6 - 2; case 11
+ .short _02004496 - _020043A6 - 2; case 12
+ .short _02004496 - _020043A6 - 2; case 13
+ .short _02004472 - _020043A6 - 2; case 14
+_020043C4:
+ cmp r4, #0x34
+ beq _02004458
+_020043C8:
+ b _020044A0
+_020043CA:
+ cmp r4, #0x37
+ bgt _020043D6
+ bge _02004458
+ cmp r4, #0x36
+ beq _02004458
+ b _020044A0
+_020043D6:
+ cmp r4, #0x38
+ beq _02004458
+ b _020044A0
+_020043DC:
+ cmp r4, #0x3d
+ bgt _020043F4
+ bge _02004458
+ cmp r4, #0x3b
+ bgt _020043EE
+ bge _02004458
+ cmp r4, #0x3a
+ beq _02004458
+ b _020044A0
+_020043EE:
+ cmp r4, #0x3c
+ beq _02004458
+ b _020044A0
+_020043F4:
+ cmp r4, #0x3f
+ bgt _02004400
+ bge _02004458
+ cmp r4, #0x3e
+ beq _02004458
+ b _020044A0
+_02004400:
+ add r0, r4, #0x0
+ sub r0, #0x40
+ cmp r0, #0x3
+ bhi _020044A0
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02004414: ; jump table (using 16-bit offset)
+ .short _02004458 - _02004414 - 2; case 0
+ .short _02004458 - _02004414 - 2; case 1
+ .short _02004458 - _02004414 - 2; case 2
+ .short _02004458 - _02004414 - 2; case 3
+_0200441C:
+ mov r0, #0x0
+ bl FUN_0200516C
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_020044D4
+ mov r0, #0x0
+ strh r0, [r7, #0x0]
+ b _020044A0
+_02004430:
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02004648
+ b _020044A0
+_0200443A:
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02004680
+ b _020044A0
+_02004444:
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_020046A0
+ b _020044A0
+_0200444E:
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_020046C4
+ b _020044A0
+_02004458:
+ add r0, r4, #0x0
+ bl FUN_020046E8
+ b _020044A0
+_02004460:
+ mov r0, #0x1
+ bl FUN_0200516C
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ add r2, r6, #0x0
+ bl FUN_02004704
+ b _020044A0
+_02004472:
+ mov r0, #0x2
+ bl FUN_0200516C
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ add r2, r6, #0x0
+ bl FUN_02004704
+ b _020044A0
+_02004484:
+ mov r0, #0x0
+ bl FUN_0200516C
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ add r2, r6, #0x0
+ bl FUN_02004704
+ b _020044A0
+_02004496:
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ add r2, r6, #0x0
+ bl FUN_02004704
+_020044A0:
+ mov r0, #0x1
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020044A8
+FUN_020044A8: ; 0x020044A8
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x17
+ bl FUN_02003D38
+ ldr r0, [r0, #0x0]
+ bl FUN_02003F64
+ mov r0, #0x18
+ bl FUN_02003D38
+ bl FUN_02003F3C
+ add r0, r4, #0x0
+ bl FUN_02004180
+ mov r0, #0x19
+ bl FUN_02003D38
+ bl FUN_02003F3C
+ pop {r4, pc}
+
+ thumb_func_start FUN_020044D4
+FUN_020044D4: ; 0x020044D4
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ mov r0, #0xb
+ bl FUN_02003D38
+ add r6, r0, #0x0
+ mov r0, #0x17
+ bl FUN_02003D38
+ mov r0, #0x1f
+ bl FUN_02003D38
+ mov r0, #0x0
+ bl FUN_02003FF4
+ bl FUN_020048EC
+ add r4, r0, #0x0
+ ldrb r0, [r6, #0x0]
+ cmp r0, #0x0
+ bne _0200450E
+ cmp r4, r5
+ bne _0200450E
+ bl FUN_02004140
+ mov r1, #0x12
+ lsl r1, r1, #0x6
+ cmp r0, r1
+ bne _02004566
+_0200450E:
+ mov r0, #0x1
+ bl FUN_02004DBC
+ bl FUN_02005454
+ cmp r4, r5
+ beq _02004528
+ mov r0, #0x1
+ mov r1, #0x0
+ bl FUN_020047C8
+ bl FUN_0200541C
+_02004528:
+ ldrb r0, [r6, #0x0]
+ cmp r0, #0x1
+ bne _02004560
+ mov r0, #0x2
+ bl FUN_02004748
+ bl FUN_02003F64
+ mov r0, #0x4
+ bl FUN_02004180
+ mov r0, #0x19
+ bl FUN_02003D38
+ bl FUN_02003F3C
+ cmp r4, r5
+ beq _02004554
+ mov r0, #0x1
+ mov r1, #0x0
+ bl FUN_020047C8
+_02004554:
+ lsl r1, r4, #0x10
+ add r0, r5, #0x0
+ lsr r1, r1, #0x10
+ bl FUN_02004568
+ pop {r4-r6, pc}
+_02004560:
+ add r0, r5, #0x0
+ bl FUN_0200521C
+_02004566:
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02004568
+FUN_02004568: ; 0x02004568
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r0, #0x1f
+ bl FUN_02003D38
+ add r4, r0, #0x0
+ ldrh r0, [r4, #0x0]
+ bl FUN_02004900
+ ldr r1, _020045C0 ; =0x000003E9
+ cmp r0, r1
+ beq _02004594
+ add r1, r1, #0x2
+ cmp r0, r1
+ beq _02004594
+ add r0, r5, #0x0
+ mov r1, #0x4
+ bl FUN_02003FA8
+ bl ErrorHandling
+ b _0200459C
+_02004594:
+ ldrh r0, [r4, #0x0]
+ mov r1, #0x6
+ bl FUN_02003FA8
+_0200459C:
+ mov r0, #0x1a
+ bl FUN_02003D38
+ bl FUN_02003F3C
+ mov r0, #0x1
+ mov r1, #0x0
+ bl FUN_020047C8
+ mov r0, #0x7f
+ mov r1, #0x28
+ mov r2, #0x0
+ bl FUN_0200538C
+ mov r0, #0x0
+ bl FUN_02004DBC
+ pop {r3-r5, pc}
+ .balign 4
+_020045C0: .word 0x000003E9
+
+ thumb_func_start FUN_020045C4
+FUN_020045C4: ; 0x020045C4
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ mov r0, #0x12
+ add r5, r1, #0x0
+ bl FUN_02003D38
+ add r6, r0, #0x0
+ mov r0, #0x1f
+ bl FUN_02003D38
+ add r4, r0, #0x0
+ ldrb r0, [r6, #0x0]
+ cmp r0, #0x1
+ beq _020045E4
+ cmp r5, #0x0
+ bne _02004642
+_020045E4:
+ mov r0, #0x1
+ bl FUN_02004748
+ bl FUN_02003F64
+ ldrh r0, [r4, #0x0]
+ mov r1, #0x2
+ bl FUN_02003FA8
+ mov r0, #0x18
+ bl FUN_02003D38
+ bl FUN_02003F3C
+ mov r0, #0x4
+ bl FUN_02004180
+ mov r0, #0x19
+ bl FUN_02003D38
+ bl FUN_02003F3C
+ ldrh r0, [r4, #0x0]
+ bl FUN_02004900
+ ldr r1, _02004644 ; =0x000003E9
+ cmp r0, r1
+ beq _02004630
+ add r1, r1, #0x2
+ cmp r0, r1
+ beq _02004630
+ add r0, r7, #0x0
+ mov r1, #0x4
+ bl FUN_02003FA8
+ bl ErrorHandling
+ b _02004638
+_02004630:
+ ldrh r0, [r4, #0x0]
+ mov r1, #0x4
+ bl FUN_02003FA8
+_02004638:
+ mov r0, #0x1a
+ bl FUN_02003D38
+ bl FUN_02003F3C
+_02004642:
+ pop {r3-r7, pc}
+ .balign 4
+_02004644: .word 0x000003E9
+
+ thumb_func_start FUN_02004648
+FUN_02004648: ; 0x02004648
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x17
+ bl FUN_02003D38
+ bl FUN_020051AC
+ mov r0, #0x2
+ bl FUN_02004748
+ bl FUN_02003F64
+ mov r0, #0x5
+ bl FUN_02004180
+ mov r0, #0x19
+ bl FUN_02003D38
+ bl FUN_02003F3C
+ mov r0, #0x1
+ bl FUN_02004DBC
+ add r0, r4, #0x0
+ bl FUN_0200521C
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02004680
+FUN_02004680: ; 0x02004680
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x17
+ bl FUN_02003D38
+ bl FUN_0200541C
+ bl FUN_02004810
+ mov r0, #0x4
+ bl FUN_020044A8
+ add r0, r4, #0x0
+ bl FUN_0200521C
+ pop {r4, pc}
+
+ thumb_func_start FUN_020046A0
+FUN_020046A0: ; 0x020046A0
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x17
+ bl FUN_02003D38
+ bl FUN_0200541C
+ mov r0, #0x6
+ bl FUN_020044A8
+ mov r0, #0x1
+ bl FUN_02004DBC
+ add r0, r4, #0x0
+ bl FUN_0200521C
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020046C4
+FUN_020046C4: ; 0x020046C4
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x17
+ bl FUN_02003D38
+ bl FUN_0200541C
+ mov r0, #0x7
+ bl FUN_020044A8
+ mov r0, #0x1
+ bl FUN_02004DBC
+ add r0, r4, #0x0
+ bl FUN_0200521C
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020046E8
+FUN_020046E8: ; 0x020046E8
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02004738
+ add r0, r4, #0x0
+ bl FUN_02004180
+ mov r0, #0x1b
+ bl FUN_02003D38
+ bl FUN_02003F3C
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02004704
+FUN_02004704: ; 0x02004704
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r0, #0x17
+ add r4, r1, #0x0
+ bl FUN_02003D38
+ bl FUN_0200541C
+ add r0, r5, #0x0
+ bl FUN_020044A8
+ add r0, r4, #0x0
+ bl FUN_0200521C
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02004724
+FUN_02004724: ; 0x02004724
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02003D30
+ bl FUN_020051AC
+ add r0, r4, #0x0
+ bl FUN_0200521C
+ pop {r4, pc}
+
+ thumb_func_start FUN_02004738
+FUN_02004738: ; 0x02004738
+ push {r3, lr}
+ mov r0, #0x4
+ bl FUN_02004748
+ bl FUN_02003F64
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02004748
+FUN_02004748: ; 0x02004748
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl FUN_02003D30
+ cmp r4, #0x7
+ blt _02004762
+ bl ErrorHandling
+ mov r0, #0x1a
+ bl FUN_02003D38
+ ldr r0, [r0, #0x0]
+ pop {r3-r5, pc}
+_02004762:
+ cmp r4, #0x6
+ bhi _020047C4
+ add r0, r4, r4
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02004772: ; jump table (using 16-bit offset)
+ .short _02004780 - _02004772 - 2; case 0
+ .short _0200478A - _02004772 - 2; case 1
+ .short _02004794 - _02004772 - 2; case 2
+ .short _0200479E - _02004772 - 2; case 3
+ .short _020047A8 - _02004772 - 2; case 4
+ .short _020047B2 - _02004772 - 2; case 5
+ .short _020047BC - _02004772 - 2; case 6
+_02004780:
+ mov r0, #0x16
+ bl FUN_02003D38
+ add r5, r0, #0x0
+ b _020047C4
+_0200478A:
+ mov r0, #0x17
+ bl FUN_02003D38
+ add r5, r0, #0x0
+ b _020047C4
+_02004794:
+ mov r0, #0x18
+ bl FUN_02003D38
+ add r5, r0, #0x0
+ b _020047C4
+_0200479E:
+ mov r0, #0x19
+ bl FUN_02003D38
+ add r5, r0, #0x0
+ b _020047C4
+_020047A8:
+ mov r0, #0x1a
+ bl FUN_02003D38
+ add r5, r0, #0x0
+ b _020047C4
+_020047B2:
+ mov r0, #0x1b
+ bl FUN_02003D38
+ add r5, r0, #0x0
+ b _020047C4
+_020047BC:
+ mov r0, #0x1c
+ bl FUN_02003D38
+ add r5, r0, #0x0
+_020047C4:
+ ldr r0, [r5, #0x0]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_020047C8
+FUN_020047C8: ; 0x020047C8
+ push {r4-r6, lr}
+ add r5, r1, #0x0
+ cmp r0, #0x1
+ bne _020047DC
+ mov r0, #0xb
+ bl FUN_02003D38
+ add r6, r0, #0x0
+ mov r4, #0x0
+ b _020047EA
+_020047DC:
+ cmp r0, #0x7
+ bne _0200480E
+ mov r0, #0xc
+ bl FUN_02003D38
+ add r6, r0, #0x0
+ mov r4, #0x7
+_020047EA:
+ cmp r5, #0x0
+ bne _02004800
+ add r0, r4, #0x0
+ bl FUN_02003FF4
+ bl FUN_020048EC
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_02004110
+_02004800:
+ add r0, r4, #0x0
+ bl FUN_02003FF4
+ add r1, r5, #0x0
+ blx FUN_020C0F8C
+ strb r5, [r6, #0x0]
+_0200480E:
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02004810
+FUN_02004810: ; 0x02004810
+ push {r4, lr}
+ mov r0, #0xb
+ bl FUN_02003D38
+ add r4, r0, #0x0
+ mov r0, #0xc
+ bl FUN_02003D38
+ mov r1, #0x0
+ strb r1, [r4, #0x0]
+ strb r1, [r0, #0x0]
+ pop {r4, pc}
+
+ thumb_func_start FUN_02004828
+FUN_02004828: ; 0x02004828
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ add r4, r2, #0x0
+ bl FUN_02003FF4
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ blx FUN_020C0EF4
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0200483C
+FUN_0200483C: ; 0x0200483C
+ push {r4, lr}
+ add r4, r1, #0x0
+ bpl _02004844
+ mov r4, #0x0
+_02004844:
+ cmp r4, #0x7f
+ ble _0200484A
+ mov r4, #0x7f
+_0200484A:
+ bl FUN_02003FF4
+ add r1, r4, #0x0
+ blx FUN_020C0F30
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02004858
+FUN_02004858: ; 0x02004858
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ blx FUN_020C23FC
+ cmp r5, #0x1
+ beq _02004868
+ cmp r5, #0x8
+ bne _0200486C
+_02004868:
+ mov r4, #0x7f
+ b _02004872
+_0200486C:
+ cmp r0, #0x0
+ beq _0200488A
+ ldrb r4, [r0, #0x2]
+_02004872:
+ bl FUN_020313EC
+ cmp r0, #0x1
+ bne _0200488A
+ add r0, r4, #0x0
+ mov r1, #0x5
+ blx _s32_div_f
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0200483C
+_0200488A:
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0200488C
+FUN_0200488C: ; 0x0200488C
+ push {r4, lr}
+ add r4, r1, #0x0
+ bl FUN_020048D0
+ bl FUN_02004018
+ add r1, r4, #0x0
+ bl FUN_0200483C
+ pop {r4, pc}
+
+ thumb_func_start FUN_020048A0
+FUN_020048A0: ; 0x020048A0
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ add r4, r2, #0x0
+ bl FUN_02003FF4
+ mov r2, #0x0
+ mvn r2, r2
+ add r1, r5, #0x0
+ add r3, r2, #0x0
+ str r4, [sp, #0x0]
+ blx FUN_020C3910
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020048BC
+FUN_020048BC: ; 0x020048BC
+ push {r4, lr}
+ add r4, r0, #0x0
+ bpl _020048C6
+ bl ErrorHandling
+_020048C6:
+ add r0, r4, #0x0
+ blx FUN_020C0F50
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020048D0
+FUN_020048D0: ; 0x020048D0
+ push {r3, lr}
+ cmp r0, #0x0
+ bne _020048DA
+ mov r0, #0xff
+ pop {r3, pc}
+_020048DA:
+ blx FUN_020C23FC
+ cmp r0, #0x0
+ bne _020048E6
+ mov r0, #0xff
+ pop {r3, pc}
+_020048E6:
+ ldrb r0, [r0, #0x5]
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_020048EC
+FUN_020048EC: ; 0x020048EC
+ ldr r3, _020048F0 ; =FUN_020C0E14
+ bx r3
+ .balign 4
+_020048F0: .word FUN_020C0E14
+
+ thumb_func_start FUN_020048F4
+FUN_020048F4: ; 0x020048F4
+ push {r3, lr}
+ bl FUN_02004900
+ blx FUN_020C22D0
+ pop {r3, pc}
+
+ thumb_func_start FUN_02004900
+FUN_02004900: ; 0x02004900
+ push {r3, lr}
+ blx FUN_020C23FC
+ cmp r0, #0x0
+ bne _0200490E
+ mov r0, #0x0
+ pop {r3, pc}
+_0200490E:
+ ldrh r0, [r0, #0x0]
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02004914
+FUN_02004914: ; 0x02004914
+ ldr r3, _02004918 ; =MIC_StartAutoSampling
+ bx r3
+ .balign 4
+_02004918: .word MIC_StartAutoSampling
+
+ thumb_func_start FUN_0200491C
+FUN_0200491C: ; 0x0200491C
+ push {r3, lr}
+ bl FUN_02003D30
+ blx MIC_StopAutoSampling
+ pop {r3, pc}
+
+ thumb_func_start FUN_02004928
+FUN_02004928: ; 0x02004928
+ push {r3, lr}
+ blx MIC_DoSamplingAsync
+ pop {r3, pc}
+
+ thumb_func_start FUN_02004930
+FUN_02004930: ; 0x02004930
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl FUN_02003D30
+ mov r0, #0xf
+ bl FUN_02003D38
+ add r6, r0, #0x0
+ mov r0, #0x10
+ bl FUN_02003D38
+ add r4, r0, #0x0
+ cmp r5, #0xe
+ beq _02004954
+ cmp r5, #0xf
+ beq _02004954
+ bl ErrorHandling
+_02004954:
+ cmp r5, #0xe
+ bne _02004962
+ ldrb r0, [r6, #0x0]
+ cmp r0, #0x0
+ bne _02004962
+ bl ErrorHandling
+_02004962:
+ cmp r5, #0xf
+ bne _02004970
+ ldrb r0, [r4, #0x0]
+ cmp r0, #0x0
+ bne _02004970
+ bl ErrorHandling
+_02004970:
+ cmp r5, #0xe
+ bne _0200497C
+ mov r0, #0x0
+ bl FUN_02003D38
+ pop {r4-r6, pc}
+_0200497C:
+ mov r0, #0x1
+ bl FUN_02003D38
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02004984
+FUN_02004984: ; 0x02004984
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl FUN_02003D30
+ mov r0, #0xf
+ bl FUN_02003D38
+ add r6, r0, #0x0
+ mov r0, #0x10
+ bl FUN_02003D38
+ add r4, r0, #0x0
+ cmp r5, #0xe
+ beq _020049A8
+ cmp r5, #0xf
+ beq _020049A8
+ bl ErrorHandling
+_020049A8:
+ cmp r5, #0xe
+ bne _020049D6
+ ldrb r0, [r6, #0x0]
+ cmp r0, #0x0
+ bne _020049D0
+ mov r0, #0x0
+ bl FUN_02003D38
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ blx FUN_020C0688
+ str r0, [r4, #0x0]
+ cmp r0, #0x0
+ bne _020049CA
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_020049CA:
+ mov r0, #0x1
+ strb r0, [r6, #0x0]
+ b _020049FE
+_020049D0:
+ bl ErrorHandling
+ b _020049FE
+_020049D6:
+ ldrb r0, [r4, #0x0]
+ cmp r0, #0x0
+ bne _020049FA
+ mov r0, #0x1
+ bl FUN_02003D38
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ blx FUN_020C0688
+ str r0, [r6, #0x0]
+ cmp r0, #0x0
+ bne _020049F4
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_020049F4:
+ mov r0, #0x1
+ strb r0, [r4, #0x0]
+ b _020049FE
+_020049FA:
+ bl ErrorHandling
+_020049FE:
+ mov r0, #0x1
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02004A04
+FUN_02004A04: ; 0x02004A04
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl FUN_02003D30
+ mov r0, #0xf
+ bl FUN_02003D38
+ add r6, r0, #0x0
+ mov r0, #0x10
+ bl FUN_02003D38
+ add r4, r0, #0x0
+ cmp r5, #0xe
+ beq _02004A2A
+ cmp r5, #0xf
+ beq _02004A2A
+ bl ErrorHandling
+ pop {r4-r6, pc}
+_02004A2A:
+ cmp r5, #0xe
+ bne _02004A4C
+ ldrb r0, [r6, #0x0]
+ cmp r0, #0x1
+ bne _02004A46
+ add r0, r5, #0x0
+ bl FUN_02004930
+ ldr r0, [r0, #0x0]
+ blx FUN_020C0670
+ mov r0, #0x0
+ strb r0, [r6, #0x0]
+ pop {r4-r6, pc}
+_02004A46:
+ bl ErrorHandling
+ pop {r4-r6, pc}
+_02004A4C:
+ ldrb r0, [r4, #0x0]
+ cmp r0, #0x1
+ bne _02004A64
+ add r0, r5, #0x0
+ bl FUN_02004930
+ ldr r0, [r0, #0x0]
+ blx FUN_020C0670
+ mov r0, #0x0
+ strb r0, [r4, #0x0]
+ pop {r4-r6, pc}
+_02004A64:
+ bl ErrorHandling
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02004A6C
+FUN_02004A6C: ; 0x02004A6C
+ push {r3-r5, lr}
+ sub sp, #0x18
+ add r3, r0, #0x0
+ ldr r0, [r3, #0x10]
+ add r4, r1, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [r3, #0x14]
+ str r0, [sp, #0x4]
+ ldr r0, [r3, #0x18]
+ str r0, [sp, #0x8]
+ ldr r0, [r3, #0x1c]
+ str r0, [sp, #0xc]
+ ldr r0, [r3, #0x20]
+ str r0, [sp, #0x10]
+ ldr r0, [r3, #0x24]
+ str r0, [sp, #0x14]
+ ldr r0, [r3, #0x0]
+ ldr r1, [r3, #0x4]
+ ldr r2, [r3, #0x8]
+ ldr r0, [r0, #0x0]
+ ldr r3, [r3, #0xc]
+ blx FUN_020C054C
+ add r5, r0, #0x0
+ bne _02004AA4
+ add r0, r4, #0x0
+ bl FUN_02004A04
+_02004AA4:
+ add r0, r5, #0x0
+ add sp, #0x18
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02004AAC
+FUN_02004AAC: ; 0x02004AAC
+ push {r3, lr}
+ bl FUN_02004930
+ ldr r0, [r0, #0x0]
+ blx FUN_020C0510
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02004ABC
+FUN_02004ABC: ; 0x02004ABC
+ push {r3, lr}
+ bl FUN_02004930
+ ldr r0, [r0, #0x0]
+ blx FUN_020C03B8
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02004ACC
+FUN_02004ACC: ; 0x02004ACC
+ push {r4, lr}
+ add r4, r1, #0x0
+ cmp r4, #0x7f
+ bls _02004AD6
+ mov r4, #0x7f
+_02004AD6:
+ bl FUN_02004930
+ ldr r0, [r0, #0x0]
+ add r1, r4, #0x0
+ blx FUN_020C041C
+ pop {r4, pc}
+
+ thumb_func_start FUN_02004AE4
+FUN_02004AE4: ; 0x02004AE4
+ push {r4, lr}
+ add r4, r1, #0x0
+ bl FUN_02004930
+ ldr r0, [r0, #0x0]
+ add r1, r4, #0x0
+ blx FUN_020C044C
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02004AF8
+FUN_02004AF8: ; 0x02004AF8
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ add r5, r1, #0x0
+ bl FUN_020313EC
+ cmp r0, #0x1
+ bne _02004B20
+ add r0, r4, #0x0
+ bl FUN_02004930
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x5
+ blx _s32_div_f
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ blx FUN_020C04DC
+ pop {r3-r5, pc}
+_02004B20:
+ add r0, r4, #0x0
+ bl FUN_02004930
+ ldr r0, [r0, #0x0]
+ add r1, r5, #0x0
+ blx FUN_020C04DC
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02004B30
+FUN_02004B30: ; 0x02004B30
+ push {r3-r7, lr}
+ sub sp, #0x30
+ add r6, r0, #0x0
+ str r1, [sp, #0x0]
+ str r2, [sp, #0x4]
+ add r5, r3, #0x0
+ bl FUN_02003D30
+ mov r0, #0x21
+ bl FUN_02003D38
+ add r4, r0, #0x0
+ cmp r5, #0xe
+ beq _02004B54
+ cmp r5, #0xf
+ beq _02004B54
+ bl ErrorHandling
+_02004B54:
+ add r0, r6, #0x0
+ blx FUN_020C226C
+ add r7, r0, #0x0
+ bne _02004B68
+ bl ErrorHandling
+ add sp, #0x30
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_02004B68:
+ ldr r0, [r7, #0x0]
+ lsl r0, r0, #0x8
+ lsr r0, r0, #0x8
+ blx FUN_020C217C
+ add r6, r0, #0x0
+ bne _02004B80
+ bl ErrorHandling
+ add sp, #0x30
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_02004B80:
+ cmp r5, #0xe
+ bne _02004BCE
+ ldr r0, [sp, #0x48]
+ add r1, r6, #0x0
+ bl FUN_02016998
+ str r0, [r4, #0x0]
+ cmp r0, #0x0
+ bne _02004B9C
+ bl ErrorHandling
+ add sp, #0x30
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_02004B9C:
+ mov r1, #0x0
+ add r2, r6, #0x0
+ blx FUN_020DF4A4
+ ldr r0, [r7, #0x0]
+ ldr r1, [r4, #0x0]
+ lsl r0, r0, #0x8
+ lsr r0, r0, #0x8
+ add r2, r6, #0x0
+ mov r3, #0x0
+ blx FUN_020C2104
+ mov r1, #0x0
+ mvn r1, r1
+ cmp r0, r1
+ bne _02004BC6
+ bl ErrorHandling
+ add sp, #0x30
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_02004BC6:
+ ldr r0, [r4, #0x0]
+ add r1, r6, #0x0
+ bl FUN_02004C1C
+_02004BCE:
+ add r0, r5, #0x0
+ bl FUN_02004930
+ mov r1, #0x0
+ str r1, [sp, #0xc]
+ str r0, [sp, #0x8]
+ ldr r0, [r4, #0x0]
+ str r0, [sp, #0x10]
+ ldr r0, _02004C18 ; =0x00003443
+ str r1, [sp, #0x14]
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x0]
+ str r1, [sp, #0x18]
+ str r0, [sp, #0x24]
+ mov r0, #0x6
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x28]
+ ldr r0, [sp, #0x4]
+ add r1, r5, #0x0
+ str r0, [sp, #0x2c]
+ add r0, sp, #0x8
+ str r6, [sp, #0x1c]
+ bl FUN_02004A6C
+ add r4, r0, #0x0
+ ldr r1, [sp, #0x0]
+ add r0, r5, #0x0
+ bl FUN_02004AF8
+ mov r0, #0xe
+ bl FUN_02003D38
+ mov r1, #0x1
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add sp, #0x30
+ pop {r3-r7, pc}
+ .balign 4
+_02004C18: .word 0x00003443
+
+ thumb_func_start FUN_02004C1C
+FUN_02004C1C: ; 0x02004C1C
+ push {r3-r6}
+ mov r5, #0x0
+ lsr r6, r1, #0x1
+ beq _02004C36
+ sub r2, r1, #0x1
+_02004C26:
+ sub r3, r2, r5
+ ldrb r4, [r0, r5]
+ ldrb r1, [r0, r3]
+ strb r1, [r0, r5]
+ add r5, r5, #0x1
+ strb r4, [r0, r3]
+ cmp r5, r6
+ blo _02004C26
+_02004C36:
+ pop {r3-r6}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02004C3C
+FUN_02004C3C: ; 0x02004C3C
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl FUN_02003D30
+ mov r0, #0xe
+ bl FUN_02003D38
+ add r4, r0, #0x0
+ mov r0, #0x21
+ bl FUN_02003D38
+ add r6, r0, #0x0
+ cmp r5, #0xe
+ beq _02004C60
+ cmp r5, #0xf
+ beq _02004C60
+ bl ErrorHandling
+_02004C60:
+ add r0, r5, #0x0
+ bl FUN_02004AAC
+ ldrb r0, [r4, #0x0]
+ cmp r0, #0x1
+ bne _02004C76
+ mov r0, #0x0
+ strb r0, [r4, #0x0]
+ ldr r0, [r6, #0x0]
+ bl FUN_02016A18
+_02004C76:
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02004C78
+FUN_02004C78: ; 0x02004C78
+ ldr r3, _02004C7C ; =FUN_020C1E58
+ bx r3
+ .balign 4
+_02004C7C: .word FUN_020C1E58
+
+ thumb_func_start FUN_02004C80
+FUN_02004C80: ; 0x02004C80
+ push {r3-r4, lr}
+ sub sp, #0x4
+ add r4, r0, #0x0
+ bl FUN_02003D30
+ mov r0, #0x3
+ bl FUN_02003D38
+ mov r1, #0x1
+ mov r3, #0xfa
+ lsl r1, r1, #0xc
+ mov r2, #0x0
+ lsl r3, r3, #0x6
+ str r4, [sp, #0x0]
+ blx FUN_020C1FF0
+ add sp, #0x4
+ pop {r3-r4, pc}
+
+ thumb_func_start FUN_02004CA4
+FUN_02004CA4: ; 0x02004CA4
+ ldr r3, _02004CA8 ; =FUN_020C1F54
+ bx r3
+ .balign 4
+_02004CA8: .word FUN_020C1F54
+
+ thumb_func_start FUN_02004CAC
+FUN_02004CAC: ; 0x02004CAC
+ ldr r3, _02004CB0 ; =FUN_020C1FA4
+ bx r3
+ .balign 4
+_02004CB0: .word FUN_020C1FA4
+
+ thumb_func_start FUN_02004CB4
+FUN_02004CB4: ; 0x02004CB4
+ push {r3-r4, lr}
+ sub sp, #0xc
+ bl FUN_02003D30
+ mov r0, #0x4
+ bl FUN_02003D38
+ mov r1, #0x0
+ mov r2, #0x1c
+ blx MI_CpuFill8
+ mov r0, #0x3
+ bl FUN_02003D38
+ add r4, r0, #0x0
+ mov r0, #0x4
+ bl FUN_02003D38
+ mov r2, #0x2
+ ldr r1, _02004CF4 ; =FUN_02005068
+ str r2, [sp, #0x0]
+ str r1, [sp, #0x4]
+ str r0, [sp, #0x8]
+ lsl r1, r2, #0xb
+ ldr r3, _02004CF8 ; =0x000055F0
+ add r0, r4, #0x0
+ mov r2, #0x0
+ blx FUN_020C1EA4
+ add sp, #0xc
+ pop {r3-r4, pc}
+ nop
+_02004CF4: .word FUN_02005068
+_02004CF8: .word 0x000055F0
+
+ thumb_func_start FUN_02004CFC
+FUN_02004CFC: ; 0x02004CFC
+ ldr r3, _02004D00 ; =FUN_020C1E68
+ bx r3
+ .balign 4
+_02004D00: .word FUN_020C1E68
+
+ thumb_func_start FUN_02004D04
+FUN_02004D04: ; 0x02004D04
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x13
+ bl FUN_02003D38
+ cmp r4, #0x8
+ ble _02004D16
+ mov r4, #0x8
+ b _02004D1C
+_02004D16:
+ cmp r4, #0x0
+ bge _02004D1C
+ mov r4, #0x0
+_02004D1C:
+ strb r4, [r0, #0x0]
+ pop {r4, pc}
+
+ thumb_func_start FUN_02004D20
+FUN_02004D20: ; 0x02004D20
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ add r4, r2, #0x0
+ bl FUN_02003FF4
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ blx FUN_020C0EA4
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02004D34
+FUN_02004D34: ; 0x02004D34
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ add r4, r2, #0x0
+ bl FUN_020048D0
+ bl FUN_02004018
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_02004D20
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02004D4C
+FUN_02004D4C: ; 0x02004D4C
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ add r4, r2, #0x0
+ bl FUN_02003FF4
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ blx FUN_020C0E7C
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02004D60
+FUN_02004D60: ; 0x02004D60
+ push {r4, lr}
+ add r4, r0, #0x0
+ blx FUN_020C0174
+ ldr r0, _02004D70 ; =0x021C3DD8
+ str r4, [r0, #0x0]
+ pop {r4, pc}
+ nop
+_02004D70: .word 0x021C3DD8
+
+ thumb_func_start FUN_02004D74
+FUN_02004D74: ; 0x02004D74
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x6
+ bl FUN_02003D38
+ str r4, [r0, #0x0]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02004D84
+FUN_02004D84: ; 0x02004D84
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x7
+ bl FUN_02003D38
+ str r4, [r0, #0x0]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02004D94
+FUN_02004D94: ; 0x02004D94
+ push {r3, lr}
+ mov r0, #0x7
+ bl FUN_02003D38
+ ldrh r1, [r0, #0x0]
+ cmp r1, #0x0
+ bne _02004DAA
+ mov r1, #0x0
+ strh r1, [r0, #0x0]
+ add r0, r1, #0x0
+ pop {r3, pc}
+_02004DAA:
+ sub r1, r1, #0x1
+ strh r1, [r0, #0x0]
+ ldrh r0, [r0, #0x0]
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02004DB4
+FUN_02004DB4: ; 0x02004DB4
+ ldr r0, _02004DB8 ; =0x021C3DE0
+ bx lr
+ .balign 4
+_02004DB8: .word 0x021C3DE0
+
+ thumb_func_start FUN_02004DBC
+FUN_02004DBC: ; 0x02004DBC
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x12
+ bl FUN_02003D38
+ strb r4, [r0, #0x0]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02004DCC
+FUN_02004DCC: ; 0x02004DCC
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ mov r0, #0x15
+ add r6, r1, #0x0
+ add r7, r2, #0x0
+ str r3, [sp, #0x8]
+ bl FUN_02003D38
+ add r4, r0, #0x0
+ add r0, sp, #0x10
+ ldrb r0, [r0, #0x10]
+ ldr r3, [sp, #0x8]
+ add r1, r6, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x24]
+ add r2, r7, #0x0
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ bl FUN_02004E44
+ mov r0, #0x0
+ strb r0, [r4, #0x0]
+ mov r0, #0x5
+ bl FUN_02003CE8
+ mov r0, #0x1
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02004E08
+FUN_02004E08: ; 0x02004E08
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ mov r0, #0x8
+ add r6, r1, #0x0
+ add r7, r2, #0x0
+ str r3, [sp, #0x8]
+ bl FUN_02003D38
+ add r4, r0, #0x0
+ add r0, sp, #0x10
+ ldrb r0, [r0, #0x14]
+ ldr r3, [sp, #0x8]
+ add r1, r6, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x28]
+ add r2, r7, #0x0
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ bl FUN_02004E44
+ ldr r0, [sp, #0x20]
+ str r0, [r4, #0x0]
+ mov r0, #0x6
+ bl FUN_02003CE8
+ mov r0, #0x1
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02004E44
+FUN_02004E44: ; 0x02004E44
+ push {r3-r7, lr}
+ add r6, r2, #0x0
+ mov r0, #0x2
+ add r5, r1, #0x0
+ add r7, r3, #0x0
+ bl FUN_02003D38
+ add r4, r0, #0x0
+ mov r0, #0x0
+ add r1, r6, #0x0
+ bl FUN_020053CC
+ mov r0, #0x0
+ bl FUN_02004110
+ add r0, r5, #0x0
+ bl FUN_02004130
+ add r0, r7, #0x0
+ bl FUN_02004D84
+ add r0, r5, #0x0
+ bl FUN_020048F4
+ str r0, [r4, #0x0]
+ add r0, sp, #0x8
+ ldrb r0, [r0, #0x10]
+ bl FUN_02004DBC
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02004E80
+FUN_02004E80: ; 0x02004E80
+ cmp r0, #0x0
+ bne _02004E88
+ mov r0, #0x0
+ bx lr
+_02004E88:
+ add r0, #0xc
+ bx lr
+
+ thumb_func_start FUN_02004E8C
+FUN_02004E8C: ; 0x02004E8C
+ cmp r0, #0x0
+ bne _02004E94
+ mov r0, #0x0
+ bx lr
+_02004E94:
+ ldr r0, [r0, #0x8]
+ bx lr
+
+ thumb_func_start FUN_02004E98
+FUN_02004E98: ; 0x02004E98
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r0, #0x5
+ bl FUN_02004748
+ bl FUN_02003F64
+ lsl r0, r5, #0x10
+ lsr r4, r0, #0x10
+ ldr r0, _02004ECC ; =0x000001B9
+ cmp r4, r0
+ beq _02004EBC
+ add r0, #0x36
+ cmp r5, r0
+ bgt _02004EBA
+ cmp r5, #0x0
+ bne _02004EBC
+_02004EBA:
+ mov r4, #0x1
+_02004EBC:
+ add r0, r4, #0x0
+ bl FUN_02003FC4
+ add r0, r4, #0x0
+ bl FUN_02004ED0
+ pop {r3-r5, pc}
+ nop
+_02004ECC: .word 0x000001B9
+
+ thumb_func_start FUN_02004ED0
+FUN_02004ED0: ; 0x02004ED0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r0, #0x20
+ bl FUN_02003D38
+ add r4, r0, #0x0
+ lsl r0, r5, #0x10
+ ldr r1, _02004F24 ; =0x000001B9
+ lsr r0, r0, #0x10
+ cmp r0, r1
+ beq _02004EF2
+ add r1, #0x36
+ cmp r5, r1
+ bgt _02004EF0
+ cmp r5, #0x0
+ bne _02004EF2
+_02004EF0:
+ mov r0, #0x1
+_02004EF2:
+ blx FUN_020C226C
+ cmp r0, #0x0
+ bne _02004F02
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_02004F02:
+ ldr r0, [r0, #0x0]
+ lsl r0, r0, #0x8
+ lsr r0, r0, #0x8
+ blx FUN_020C20DC
+ cmp r0, #0x0
+ bne _02004F18
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_02004F18:
+ mov r1, #0x0
+ blx SND_GetWaveDataAddress
+ str r0, [r4, #0x0]
+ pop {r3-r5, pc}
+ nop
+_02004F24: .word 0x000001B9
+
+ thumb_func_start FUN_02004F28
+FUN_02004F28: ; 0x02004F28
+ push {r4-r6, lr}
+ mov r0, #0x1
+ add r5, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_02004F64
+ mov r1, #0x3
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ lsl r1, r1, #0x8
+ ldr r5, [r5, #0x8]
+ blx _s32_div_f
+ lsl r1, r0, #0x1
+ bpl _02004F50
+ mov r0, #0x20
+ blx _s32_div_f
+ neg r0, r0
+ b _02004F5A
+_02004F50:
+ cmp r1, #0x0
+ bne _02004F58
+ mov r0, #0x20
+ b _02004F5A
+_02004F58:
+ lsl r0, r1, #0x5
+_02004F5A:
+ mul r0, r4
+ cmp r0, r5
+ blo _02004F62
+ mov r0, #0x0
+_02004F62:
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02004F64
+FUN_02004F64: ; 0x02004F64
+ push {r3, lr}
+ bl FUN_02003FF4
+ blx FUN_020C0DD4
+ pop {r3, pc}
+
+ thumb_func_start FUN_02004F70
+FUN_02004F70: ; 0x02004F70
+ push {r3-r7, lr}
+ sub sp, #0x8
+ str r0, [sp, #0x0]
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ ldr r1, [sp, #0x0]
+ mov r0, #0x1
+ add r2, r3, #0x0
+ bl FUN_02004F28
+ add r1, r0, #0x0
+ mov r12, r0
+ sub r1, #0x64
+ bpl _02004F8E
+ mov r1, #0x0
+_02004F8E:
+ ldr r0, [sp, #0x0]
+ mov r3, #0x0
+ add r0, r0, r1
+ ldrb r0, [r0, #0xc]
+ add r7, r3, #0x0
+ cmp r0, #0x80
+ bhs _02004FA0
+ mov r0, #0x1
+ b _02004FA2
+_02004FA0:
+ sub r0, r3, #0x1
+_02004FA2:
+ lsl r0, r0, #0x18
+ asr r5, r0, #0x18
+ mov r0, r12
+ cmp r1, r0
+ bhs _02005022
+_02004FAC:
+ mov r0, #0x0
+ cmp r5, #0x0
+ ble _02004FC6
+ ldr r2, [sp, #0x0]
+ add r2, r2, r1
+ str r2, [sp, #0x4]
+ ldrb r2, [r2, #0xc]
+ cmp r2, #0x80
+ bls _02004FC2
+ mov r0, #0x1
+ b _02004FD8
+_02004FC2:
+ add r3, r3, #0x1
+ b _02004FD8
+_02004FC6:
+ ldr r2, [sp, #0x0]
+ add r2, r2, r1
+ str r2, [sp, #0x4]
+ ldrb r2, [r2, #0xc]
+ cmp r2, #0x80
+ bhs _02004FD6
+ mov r0, #0x1
+ b _02004FD8
+_02004FD6:
+ add r3, r3, #0x1
+_02004FD8:
+ cmp r0, #0x1
+ bne _0200501A
+ ldr r5, _02005064 ; =0x020ECB8C
+ mov r2, #0x0
+_02004FE0:
+ ldrb r0, [r5, #0x0]
+ cmp r3, r0
+ bge _02004FEA
+ add r7, r2, #0x0
+ b _02004FF2
+_02004FEA:
+ add r2, r2, #0x1
+ add r5, r5, #0x1
+ cmp r2, #0x9
+ blt _02004FE0
+_02004FF2:
+ cmp r7, r6
+ blt _02004FF8
+ sub r7, r6, #0x1
+_02004FF8:
+ cmp r3, #0x0
+ beq _02005006
+ sub r0, r6, #0x1
+ sub r0, r0, r7
+ ldrb r2, [r4, r0]
+ add r2, r2, #0x1
+ strb r2, [r4, r0]
+_02005006:
+ ldr r0, [sp, #0x4]
+ mov r3, #0x0
+ ldrb r0, [r0, #0xc]
+ cmp r0, #0x80
+ bhs _02005014
+ mov r0, #0x1
+ b _02005016
+_02005014:
+ sub r0, r3, #0x1
+_02005016:
+ lsl r0, r0, #0x18
+ asr r5, r0, #0x18
+_0200501A:
+ add r1, r1, #0x2
+ mov r0, r12
+ cmp r1, r0
+ blo _02004FAC
+_02005022:
+ mov r2, #0x0
+ cmp r6, #0x0
+ ble _02005038
+ mov r0, #0x9
+_0200502A:
+ ldrb r1, [r4, r2]
+ cmp r1, #0xa
+ blo _02005032
+ strb r0, [r4, r2]
+_02005032:
+ add r2, r2, #0x1
+ cmp r2, r6
+ blt _0200502A
+_02005038:
+ sub r2, r6, #0x1
+ mov r3, #0x0
+ cmp r2, #0x0
+ ble _02005060
+_02005040:
+ ldrb r0, [r4, r3]
+ add r1, r4, r3
+ cmp r0, #0x0
+ bne _0200505A
+ ldrb r0, [r1, #0x1]
+ cmp r0, #0x0
+ beq _0200505A
+ add r0, r3, #0x1
+ ldrb r0, [r4, r0]
+ add sp, #0x8
+ lsr r0, r0, #0x1
+ strb r0, [r1, #0x0]
+ pop {r3-r7, pc}
+_0200505A:
+ add r3, r3, #0x1
+ cmp r3, r2
+ blt _02005040
+_02005060:
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+_02005064: .word 0x020ECB8C
+
+ thumb_func_start FUN_02005068
+FUN_02005068: ; 0x02005068
+ push {r3-r7, lr}
+ sub sp, #0x30
+ add r5, r0, #0x0
+ ldr r0, [sp, #0x48]
+ add r6, r1, #0x0
+ str r0, [sp, #0xc]
+ mov r0, #0x13
+ str r2, [sp, #0x0]
+ add r4, r3, #0x0
+ bl FUN_02003D38
+ add r7, r0, #0x0
+ cmp r4, #0x1
+ beq _0200508A
+ ldr r0, [sp, #0x0]
+ lsr r0, r0, #0x1
+ str r0, [sp, #0x0]
+_0200508A:
+ ldrb r2, [r7, #0x0]
+ cmp r2, #0x0
+ beq _0200515A
+ mov r0, #0x0
+ cmp r2, #0x0
+ ble _020050BC
+ add r1, sp, #0x10
+_02005098:
+ ldr r3, [sp, #0x0]
+ sub r2, r3, r2
+ add r2, r0, r2
+ lsl r2, r2, #0x1
+ ldrsh r2, [r5, r2]
+ strh r2, [r1, #0x0]
+ ldrb r3, [r7, #0x0]
+ ldr r2, [sp, #0x0]
+ sub r2, r2, r3
+ add r2, r0, r2
+ lsl r2, r2, #0x1
+ ldrsh r2, [r6, r2]
+ add r0, r0, #0x1
+ strh r2, [r1, #0x2]
+ ldrb r2, [r7, #0x0]
+ add r1, r1, #0x4
+ cmp r0, r2
+ blt _02005098
+_020050BC:
+ ldr r0, [sp, #0x0]
+ sub r4, r0, #0x1
+ sub r0, r2, #0x1
+ cmp r4, r0
+ blt _02005126
+ lsl r1, r4, #0x1
+ add r0, r5, r1
+ str r0, [sp, #0x8]
+ add r0, r6, r1
+ str r0, [sp, #0x4]
+_020050D0:
+ mov r0, #0x0
+ add r1, r0, #0x0
+ cmp r2, #0x0
+ ble _020050E6
+_020050D8:
+ sub r3, r4, r1
+ lsl r3, r3, #0x1
+ ldrsh r3, [r5, r3]
+ add r1, r1, #0x1
+ add r0, r0, r3
+ cmp r1, r2
+ blt _020050D8
+_020050E6:
+ add r1, r2, #0x0
+ blx _s32_div_f
+ ldr r1, [sp, #0x8]
+ strh r0, [r1, #0x0]
+ mov r0, #0x0
+ ldrb r1, [r7, #0x0]
+ add r2, r0, #0x0
+ cmp r1, #0x0
+ ble _02005108
+_020050FA:
+ sub r3, r4, r2
+ lsl r3, r3, #0x1
+ ldrsh r3, [r6, r3]
+ add r2, r2, #0x1
+ add r0, r0, r3
+ cmp r2, r1
+ blt _020050FA
+_02005108:
+ blx _s32_div_f
+ ldr r1, [sp, #0x4]
+ sub r4, r4, #0x1
+ strh r0, [r1, #0x0]
+ ldr r0, [sp, #0x8]
+ ldrb r2, [r7, #0x0]
+ sub r0, r0, #0x2
+ str r0, [sp, #0x8]
+ add r0, r1, #0x0
+ sub r0, r0, #0x2
+ str r0, [sp, #0x4]
+ sub r0, r2, #0x1
+ cmp r4, r0
+ bge _020050D0
+_02005126:
+ mov r1, #0x0
+ cmp r2, #0x0
+ ble _0200514A
+ add r0, sp, #0x10
+ mov r4, #0x2
+_02005130:
+ mov r2, #0x0
+ ldrsh r3, [r0, r2]
+ ldr r2, [sp, #0xc]
+ add r1, r1, #0x1
+ strh r3, [r2, #0x0]
+ ldrsh r3, [r0, r4]
+ add r0, r0, #0x4
+ strh r3, [r2, #0x2]
+ add r2, r2, #0x4
+ str r2, [sp, #0xc]
+ ldrb r2, [r7, #0x0]
+ cmp r1, r2
+ blt _02005130
+_0200514A:
+ ldr r1, [sp, #0x0]
+ add r0, r5, #0x0
+ blx DC_FlushRange
+ ldr r1, [sp, #0x0]
+ add r0, r6, #0x0
+ blx DC_FlushRange
+_0200515A:
+ add sp, #0x30
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02005160
+FUN_02005160: ; 0x02005160
+ ldr r3, _02005168 ; =FUN_020C1148
+ add r1, r0, #0x0
+ mov r0, #0x7
+ bx r3
+ .balign 4
+_02005168: .word FUN_020C1148
+
+ thumb_func_start FUN_0200516C
+FUN_0200516C: ; 0x0200516C
+ push {r3, lr}
+ cmp r0, #0x0
+ bne _02005180
+ ldr r0, _020051A4 ; =0x000007FF
+ bl FUN_02005160
+ mov r0, #0x0
+ bl FUN_02004CA4
+ b _0200519C
+_02005180:
+ cmp r0, #0x1
+ ldr r0, _020051A8 ; =0x00007FFF
+ bne _02005192
+ bl FUN_02005160
+ mov r0, #0x1e
+ bl FUN_02004C80
+ b _0200519C
+_02005192:
+ bl FUN_02005160
+ mov r0, #0xf
+ bl FUN_02004C80
+_0200519C:
+ bl FUN_02004C78
+ pop {r3, pc}
+ nop
+_020051A4: .word 0x000007FF
+_020051A8: .word 0x00007FFF
+
+ thumb_func_start FUN_020051AC
+FUN_020051AC: ; 0x020051AC
+ push {r3, lr}
+ bl FUN_02005404
+ cmp r0, #0x0
+ bne _020051E0
+ mov r0, #0x0
+ bl FUN_02003FF4
+ bl FUN_020048EC
+ mov r1, #0x0
+ mvn r1, r1
+ cmp r0, r1
+ beq _020051E0
+ bl FUN_02004124
+ ldr r1, _020051E8 ; =0x0000047E
+ cmp r0, r1
+ beq _020051E0
+ bl FUN_02005454
+ mov r0, #0x1
+ add r1, r0, #0x0
+ bl FUN_020047C8
+ pop {r3, pc}
+_020051E0:
+ bl FUN_0200541C
+ pop {r3, pc}
+ nop
+_020051E8: .word 0x0000047E
+
+ thumb_func_start FUN_020051EC
+FUN_020051EC: ; 0x020051EC
+ ldr r3, _020051F0 ; =FUN_020C1180
+ bx r3
+ .balign 4
+_020051F0: .word FUN_020C1180
+
+ thumb_func_start FUN_020051F4
+FUN_020051F4: ; 0x020051F4
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl FUN_020048D0
+ bl FUN_02004018
+ add r4, r0, #0x0
+ bl FUN_02003FF4
+ add r1, r5, #0x0
+ blx FUN_020C3980
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0200526C
+ add r0, r6, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200521C
+FUN_0200521C: ; 0x0200521C
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl FUN_020048D0
+ add r4, r0, #0x0
+ bl FUN_02004018
+ add r6, r0, #0x0
+ cmp r4, #0x7
+ bne _0200523E
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_02005288
+ add r4, r0, #0x0
+ b _02005258
+_0200523E:
+ cmp r4, #0x1
+ bne _02005250
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_020052B8
+ add r4, r0, #0x0
+ b _02005258
+_02005250:
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_02005258:
+ mov r0, #0x0
+ bl FUN_02004DBC
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_0200526C
+ add r0, r4, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200526C
+FUN_0200526C: ; 0x0200526C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_02004110
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02004858
+ mov r0, #0x1
+ bl FUN_02003CE8
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02005288
+FUN_02005288: ; 0x02005288
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r0, #0x3
+ add r4, r2, #0x0
+ bl FUN_02004748
+ bl FUN_02003F64
+ add r0, r5, #0x0
+ bl FUN_02003F90
+ mov r0, #0x1a
+ bl FUN_02003D38
+ bl FUN_02003F3C
+ add r0, r4, #0x0
+ bl FUN_02003FF4
+ add r1, r5, #0x0
+ blx FUN_020C3980
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020052B8
+FUN_020052B8: ; 0x020052B8
+ push {r3-r6, lr}
+ sub sp, #0x4
+ add r5, r0, #0x0
+ mov r0, #0x12
+ add r6, r2, #0x0
+ bl FUN_02003D38
+ mov r0, #0x1f
+ bl FUN_02003D38
+ add r4, r0, #0x0
+ mov r0, #0x0
+ bl FUN_02003FF4
+ bl FUN_020048EC
+ bl FUN_02004900
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_020045C4
+ add r0, r6, #0x0
+ bl FUN_02003FF4
+ add r6, r0, #0x0
+ ldrh r0, [r4, #0x0]
+ bl FUN_02004900
+ mov r1, #0x0
+ mvn r1, r1
+ add r2, r0, #0x0
+ add r0, r6, #0x0
+ add r3, r1, #0x0
+ str r5, [sp, #0x0]
+ blx FUN_020C3910
+ add sp, #0x4
+ pop {r3-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02005308
+FUN_02005308: ; 0x02005308
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ cmp r0, #0x4
+ beq _02005318
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_02005318:
+ add r0, r5, #0x0
+ bl FUN_020048D0
+ cmp r0, #0x7
+ beq _0200532A
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0200532A:
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_02003FA8
+ mov r0, #0x7
+ bl FUN_02003FF4
+ add r1, r5, #0x0
+ blx FUN_020C3980
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02004110
+ mov r0, #0x1
+ bl FUN_02003CE8
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02005350
+FUN_02005350: ; 0x02005350
+ push {r4, lr}
+ add r4, r0, #0x0
+ blx FUN_020C0FDC
+ add r0, r4, #0x0
+ bl FUN_020048D0
+ cmp r0, #0xff
+ beq _0200536E
+ bl FUN_02004018
+ bl FUN_02003FF4
+ blx FUN_020C0F68
+_0200536E:
+ bl FUN_02005374
+ pop {r4, pc}
+
+ thumb_func_start FUN_02005374
+FUN_02005374: ; 0x02005374
+ push {r3, lr}
+ mov r0, #0x0
+ bl FUN_02004110
+ mov r0, #0x0
+ bl FUN_02004130
+ mov r0, #0x0
+ bl FUN_02003CE8
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200538C
+FUN_0200538C: ; 0x0200538C
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ add r5, r1, #0x0
+ add r4, r2, #0x0
+ bl FUN_02004124
+ bl FUN_020048D0
+ cmp r0, #0xff
+ beq _020053C8
+ bl FUN_02004018
+ add r7, r0, #0x0
+ cmp r4, #0x0
+ bne _020053B2
+ mov r1, #0x0
+ add r2, r1, #0x0
+ bl FUN_02004828
+_020053B2:
+ add r0, r7, #0x0
+ add r1, r6, #0x0
+ add r2, r5, #0x0
+ bl FUN_02004828
+ add r0, r5, #0x0
+ bl FUN_02004D74
+ mov r0, #0x3
+ bl FUN_02003CE8
+_020053C8:
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020053CC
+FUN_020053CC: ; 0x020053CC
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_02004124
+ bl FUN_020048D0
+ add r6, r0, #0x0
+ cmp r6, #0xff
+ beq _02005402
+ bl FUN_02005404
+ cmp r0, #0x0
+ bne _020053FC
+ add r0, r6, #0x0
+ bl FUN_02004018
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_02004828
+ add r0, r4, #0x0
+ bl FUN_02004D74
+_020053FC:
+ mov r0, #0x4
+ bl FUN_02003CE8
+_02005402:
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02005404
+FUN_02005404: ; 0x02005404
+ push {r3, lr}
+ mov r0, #0x6
+ bl FUN_02003D38
+ ldrh r0, [r0, #0x0]
+ pop {r3, pc}
+
+ thumb_func_start FUN_02005410
+FUN_02005410: ; 0x02005410
+ push {r3, lr}
+ bl FUN_020048D0
+ bl FUN_020048BC
+ pop {r3, pc}
+
+ thumb_func_start FUN_0200541C
+FUN_0200541C: ; 0x0200541C
+ push {r3-r5, lr}
+ mov r0, #0xf
+ bl FUN_02003D38
+ add r5, r0, #0x0
+ mov r0, #0x10
+ bl FUN_02003D38
+ add r4, r0, #0x0
+ mov r0, #0x0
+ blx FUN_020C0F9C
+ ldrb r0, [r5, #0x0]
+ cmp r0, #0x1
+ bne _02005440
+ mov r0, #0xe
+ bl FUN_02004AAC
+_02005440:
+ ldrb r0, [r4, #0x0]
+ cmp r0, #0x1
+ bne _0200544C
+ mov r0, #0xf
+ bl FUN_02004AAC
+_0200544C:
+ mov r0, #0x0
+ bl FUN_02003CE8
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02005454
+FUN_02005454: ; 0x02005454
+ push {r3-r7, lr}
+ mov r0, #0xf
+ bl FUN_02003D38
+ add r7, r0, #0x0
+ mov r0, #0x10
+ bl FUN_02003D38
+ add r6, r0, #0x0
+ mov r0, #0x7
+ bl FUN_02003FF4
+ mov r1, #0x0
+ blx FUN_020C10A4
+ bl FUN_02005374
+ mov r5, #0x0
+ add r4, r5, #0x0
+_0200547A:
+ add r0, r5, #0x3
+ add r1, r4, #0x0
+ bl FUN_020054F8
+ add r5, r5, #0x1
+ cmp r5, #0x4
+ blt _0200547A
+ mov r0, #0x0
+ bl FUN_02005614
+ ldrb r0, [r7, #0x0]
+ cmp r0, #0x1
+ bne _0200549A
+ mov r0, #0xe
+ bl FUN_02004AAC
+_0200549A:
+ ldrb r0, [r6, #0x0]
+ cmp r0, #0x1
+ bne _020054A6
+ mov r0, #0xf
+ bl FUN_02004AAC
+_020054A6:
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_020054A8
+FUN_020054A8: ; 0x020054A8
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_020054C8
+ add r6, r0, #0x0
+ ldr r1, _020054C4 ; =0x0000FFFF
+ add r0, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_02005530
+ add r0, r6, #0x0
+ pop {r4-r6, pc}
+ nop
+_020054C4: .word 0x0000FFFF
+
+ thumb_func_start FUN_020054C8
+FUN_020054C8: ; 0x020054C8
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl FUN_020048D0
+ bl FUN_02004018
+ add r4, r0, #0x0
+ bl FUN_02003FF4
+ add r1, r5, #0x0
+ blx FUN_020C3980
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02004858
+ add r0, r6, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_020054F0
+FUN_020054F0: ; 0x020054F0
+ ldr r3, _020054F4 ; =FUN_020C0FDC
+ bx r3
+ .balign 4
+_020054F4: .word FUN_020C0FDC
+
+ thumb_func_start FUN_020054F8
+FUN_020054F8: ; 0x020054F8
+ push {r4, lr}
+ add r4, r1, #0x0
+ bl FUN_02003FF4
+ add r1, r4, #0x0
+ blx FUN_020C10A4
+ pop {r4, pc}
+
+ thumb_func_start FUN_02005508
+FUN_02005508: ; 0x02005508
+ push {r3, lr}
+ bl FUN_020048D0
+ bl FUN_020048BC
+ pop {r3, pc}
+
+ thumb_func_start FUN_02005514
+FUN_02005514: ; 0x02005514
+ push {r4, lr}
+ mov r4, #0x0
+_02005518:
+ add r0, r4, #0x3
+ bl FUN_020048BC
+ cmp r0, #0x1
+ bne _02005526
+ mov r0, #0x1
+ pop {r4, pc}
+_02005526:
+ add r4, r4, #0x1
+ cmp r4, #0x4
+ blt _02005518
+ mov r0, #0x0
+ pop {r4, pc}
+
+ thumb_func_start FUN_02005530
+FUN_02005530: ; 0x02005530
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ add r4, r2, #0x0
+ bl FUN_020048D0
+ bl FUN_02004018
+ bl FUN_02003FF4
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ blx FUN_020C0E7C
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0200554C
+FUN_0200554C: ; 0x0200554C
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ mov r0, #0x3
+ bl FUN_02004018
+ ldr r7, _02005574 ; =0x0000FFFF
+ add r4, r0, #0x0
+ mov r5, #0x0
+_0200555C:
+ add r0, r4, r5
+ bl FUN_02003FF4
+ add r1, r7, #0x0
+ add r2, r6, #0x0
+ blx FUN_020C0E7C
+ add r5, r5, #0x1
+ cmp r5, #0x4
+ blt _0200555C
+ pop {r3-r7, pc}
+ nop
+_02005574: .word 0x0000FFFF
+
+ thumb_func_start FUN_02005578
+FUN_02005578: ; 0x02005578
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r0, #0x11
+ bl FUN_02003D38
+ add r4, r0, #0x0
+ mov r0, #0x23
+ bl FUN_02003D38
+ ldr r1, _02005610 ; =0x000001B9
+ cmp r5, r1
+ beq _0200559C
+ add r1, #0x36
+ cmp r5, r1
+ bhi _0200559A
+ cmp r5, #0x0
+ bne _0200559C
+_0200559A:
+ mov r5, #0x1
+_0200559C:
+ ldr r1, _02005610 ; =0x000001B9
+ cmp r5, r1
+ bne _020055BC
+ mov r1, #0x0
+ ldr r0, [r0, #0x0]
+ mov r2, #0x7f
+ add r3, r1, #0x0
+ bl FUN_02005D48
+ cmp r0, #0x1
+ bne _020055BC
+ mov r0, #0x0
+ bl FUN_02005E80
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_020055BC:
+ ldrb r0, [r4, #0x0]
+ cmp r0, #0x0
+ bne _020055E8
+ mov r0, #0x0
+ bl FUN_02005614
+ mov r0, #0x1
+ bl FUN_02003FF4
+ mov r1, #0x2
+ str r1, [sp, #0x0]
+ sub r1, r1, #0x3
+ add r2, r5, #0x0
+ add r3, r1, #0x0
+ blx FUN_020C3910
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_02004858
+ b _02005606
+_020055E8:
+ mov r0, #0x8
+ bl FUN_02003FF4
+ mov r1, #0x2
+ str r1, [sp, #0x0]
+ sub r1, r1, #0x3
+ add r2, r5, #0x0
+ add r3, r1, #0x0
+ blx FUN_020C3910
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x8
+ bl FUN_02004858
+_02005606:
+ mov r0, #0x0
+ bl FUN_02005E80
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+_02005610: .word 0x000001B9
+
+ thumb_func_start FUN_02005614
+FUN_02005614: ; 0x02005614
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ mov r0, #0xf
+ bl FUN_02003D38
+ add r6, r0, #0x0
+ mov r0, #0x10
+ bl FUN_02003D38
+ add r4, r0, #0x0
+ mov r0, #0xe
+ bl FUN_02003D38
+ mov r0, #0x1
+ bl FUN_02003FF4
+ add r1, r5, #0x0
+ blx FUN_020C10A4
+ mov r0, #0x8
+ bl FUN_02003FF4
+ add r1, r5, #0x0
+ blx FUN_020C10A4
+ ldrb r0, [r6, #0x0]
+ cmp r0, #0x1
+ bne _02005658
+ mov r0, #0xe
+ bl FUN_02004C3C
+ mov r0, #0xe
+ bl FUN_02004A04
+_02005658:
+ ldrb r0, [r4, #0x0]
+ cmp r0, #0x1
+ bne _0200566A
+ mov r0, #0xf
+ bl FUN_02004C3C
+ mov r0, #0xf
+ bl FUN_02004A04
+_0200566A:
+ bl FUN_02005DFC
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02005670
+FUN_02005670: ; 0x02005670
+ push {r3-r5, lr}
+ mov r0, #0xf
+ bl FUN_02003D38
+ add r5, r0, #0x0
+ mov r0, #0x10
+ bl FUN_02003D38
+ add r4, r0, #0x0
+ mov r0, #0xe
+ bl FUN_02003D38
+ ldrb r0, [r5, #0x0]
+ cmp r0, #0x1
+ bne _02005696
+ mov r0, #0xe
+ bl FUN_02004ABC
+ pop {r3-r5, pc}
+_02005696:
+ ldrb r0, [r4, #0x0]
+ cmp r0, #0x1
+ bne _020056A4
+ mov r0, #0xf
+ bl FUN_02004ABC
+ pop {r3-r5, pc}
+_020056A4:
+ mov r0, #0x0
+ bl FUN_020048BC
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_020056AC
+FUN_020056AC: ; 0x020056AC
+ push {r3-r7, lr}
+ sub sp, #0x20
+ str r0, [sp, #0x4]
+ mov r0, #0xf
+ str r1, [sp, #0x8]
+ add r5, r2, #0x0
+ add r6, r3, #0x0
+ ldr r7, [sp, #0x38]
+ bl FUN_02003D38
+ str r0, [sp, #0x14]
+ mov r0, #0x10
+ bl FUN_02003D38
+ str r0, [sp, #0x10]
+ mov r0, #0x11
+ bl FUN_02003D38
+ add r4, r0, #0x0
+ mov r0, #0x1d
+ bl FUN_02003D38
+ str r0, [sp, #0xc]
+ mov r0, #0x23
+ bl FUN_02003D38
+ lsr r0, r5, #0x1f
+ add r0, r5, r0
+ asr r0, r0, #0x1
+ str r0, [sp, #0x1c]
+ add r0, #0x40
+ str r0, [sp, #0x1c]
+ add r0, r6, #0x0
+ str r0, [sp, #0x18]
+ sub r0, #0x1e
+ str r0, [sp, #0x18]
+ cmp r0, #0x0
+ bgt _020056FC
+ mov r0, #0x1
+ str r0, [sp, #0x18]
+_020056FC:
+ mov r0, #0x0
+ strb r0, [r4, #0x0]
+ ldr r0, [sp, #0x14]
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x1
+ bne _02005714
+ mov r0, #0xe
+ bl FUN_02004C3C
+ mov r0, #0xe
+ bl FUN_02004A04
+_02005714:
+ ldr r0, [sp, #0x10]
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x1
+ bne _02005728
+ mov r0, #0xf
+ bl FUN_02004C3C
+ mov r0, #0xf
+ bl FUN_02004A04
+_02005728:
+ ldr r4, [sp, #0x8]
+ ldr r0, _02005AB4 ; =0x000001B9
+ add r1, r4, #0x0
+ cmp r1, r0
+ beq _0200573E
+ add r0, #0x36
+ cmp r1, r0
+ bhi _0200573C
+ add r0, r4, #0x0
+ bne _0200573E
+_0200573C:
+ mov r4, #0x1
+_0200573E:
+ ldr r0, _02005AB4 ; =0x000001B9
+ ldr r1, [sp, #0x8]
+ cmp r1, r0
+ bne _020057B4
+ ldr r1, [sp, #0x4]
+ cmp r1, #0xc
+ bhi _020057AE
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02005758: ; jump table (using 16-bit offset)
+ .short _02005772 - _02005758 - 2; case 0
+ .short _02005772 - _02005758 - 2; case 1
+ .short _02005772 - _02005758 - 2; case 2
+ .short _020057AE - _02005758 - 2; case 3
+ .short _020057AE - _02005758 - 2; case 4
+ .short _02005772 - _02005758 - 2; case 5
+ .short _020057AE - _02005758 - 2; case 6
+ .short _020057AE - _02005758 - 2; case 7
+ .short _020057AE - _02005758 - 2; case 8
+ .short _020057AE - _02005758 - 2; case 9
+ .short _020057AE - _02005758 - 2; case 10
+ .short _02005772 - _02005758 - 2; case 11
+ .short _02005772 - _02005758 - 2; case 12
+_02005772:
+ bl FUN_02005578
+ ldr r0, [sp, #0xc]
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _02005794
+ ldr r1, _02005AB8 ; =0x0000FFFF
+ mov r0, #0x1
+ add r2, r5, #0x0
+ bl FUN_02004D4C
+ add r0, r4, #0x0
+ mov r1, #0x1
+ add r2, r6, #0x0
+ bl FUN_02005AC8
+ b _020057A8
+_02005794:
+ ldr r1, [sp, #0x1c]
+ mov r0, #0xe
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl FUN_02004ACC
+ mov r0, #0xe
+ add r1, r6, #0x0
+ bl FUN_02004AF8
+_020057A8:
+ add sp, #0x20
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_020057AE:
+ mov r0, #0x1
+ bl FUN_02005E80
+_020057B4:
+ ldr r0, [sp, #0x4]
+ cmp r0, #0xe
+ bls _020057BC
+ b _02005AC2
+_020057BC:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_020057C8: ; jump table (using 16-bit offset)
+ .short _020057E6 - _020057C8 - 2; case 0
+ .short _02005802 - _020057C8 - 2; case 1
+ .short _02005826 - _020057C8 - 2; case 2
+ .short _02005868 - _020057C8 - 2; case 3
+ .short _020058B2 - _020057C8 - 2; case 4
+ .short _02005900 - _020057C8 - 2; case 5
+ .short _02005928 - _020057C8 - 2; case 6
+ .short _0200596C - _020057C8 - 2; case 7
+ .short _0200599C - _020057C8 - 2; case 8
+ .short _020059CA - _020057C8 - 2; case 9
+ .short _020059FE - _020057C8 - 2; case 10
+ .short _02005A2E - _020057C8 - 2; case 11
+ .short _02005A56 - _020057C8 - 2; case 12
+ .short _02005A86 - _020057C8 - 2; case 13
+ .short _02005ABC - _020057C8 - 2; case 14
+_020057E6:
+ add r0, r4, #0x0
+ bl FUN_02005578
+ ldr r1, _02005AB8 ; =0x0000FFFF
+ mov r0, #0x1
+ add r2, r5, #0x0
+ bl FUN_02004D4C
+ add r0, r4, #0x0
+ mov r1, #0x1
+ add r2, r6, #0x0
+ bl FUN_02005AC8
+ b _02005AC2
+_02005802:
+ add r0, r4, #0x0
+ bl FUN_02005578
+ ldr r1, _02005AB8 ; =0x0000FFFF
+ mov r0, #0x1
+ add r2, r5, #0x0
+ bl FUN_02004D4C
+ add r0, r4, #0x0
+ mov r1, #0x1
+ add r2, r6, #0x0
+ bl FUN_02005AC8
+ mov r0, #0x14
+ add r1, r7, #0x0
+ bl FUN_02005AE0
+ b _02005AC2
+_02005826:
+ add r0, r4, #0x0
+ bl FUN_02005578
+ ldr r1, _02005AB8 ; =0x0000FFFF
+ mov r0, #0x1
+ add r2, r5, #0x0
+ bl FUN_02004D4C
+ add r0, r4, #0x0
+ mov r1, #0x1
+ add r2, r6, #0x0
+ bl FUN_02005AC8
+ ldr r1, _02005AB8 ; =0x0000FFFF
+ mov r0, #0x1
+ mov r2, #0x40
+ bl FUN_02004D20
+ add r0, r4, #0x0
+ mov r1, #0x14
+ bl FUN_02005BC8
+ ldr r1, _02005AB8 ; =0x0000FFFF
+ mov r0, #0x8
+ add r2, r5, #0x0
+ bl FUN_02004D4C
+ ldr r2, [sp, #0x18]
+ add r0, r4, #0x0
+ mov r1, #0x8
+ bl FUN_02005AC8
+ b _02005AC2
+_02005868:
+ add r0, r4, #0x0
+ bl FUN_02005578
+ ldr r1, _02005AB8 ; =0x0000FFFF
+ mov r0, #0x1
+ add r2, r5, #0x0
+ bl FUN_02004D4C
+ add r0, r4, #0x0
+ mov r1, #0x1
+ add r2, r6, #0x0
+ bl FUN_02005AC8
+ mov r0, #0x1e
+ add r1, r7, #0x0
+ bl FUN_02005AE0
+ ldr r1, _02005AB8 ; =0x0000FFFF
+ mov r0, #0x1
+ mov r2, #0xc0
+ bl FUN_02004D20
+ add r0, r4, #0x0
+ mov r1, #0x10
+ bl FUN_02005BC8
+ ldr r1, _02005AB8 ; =0x0000FFFF
+ mov r0, #0x8
+ add r2, r5, #0x0
+ bl FUN_02004D4C
+ ldr r2, [sp, #0x18]
+ add r0, r4, #0x0
+ mov r1, #0x8
+ bl FUN_02005AC8
+ b _02005AC2
+_020058B2:
+ mov r0, #0xe
+ bl FUN_02004984
+ ldr r2, [sp, #0x1c]
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ mov r3, #0xe
+ str r7, [sp, #0x0]
+ bl FUN_02004B30
+ ldr r1, [sp, #0x1c]
+ mov r0, #0xe
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl FUN_02004ACC
+ mov r0, #0xf
+ add r1, r7, #0x0
+ bl FUN_02005AE0
+ mov r1, #0x86
+ mov r0, #0xe
+ lsl r1, r1, #0x8
+ bl FUN_02004AE4
+ mov r1, #0x3f
+ ldr r2, [sp, #0x18]
+ ldr r3, [sp, #0x1c]
+ add r0, r4, #0x0
+ mvn r1, r1
+ str r7, [sp, #0x0]
+ bl FUN_02005BF8
+ mov r1, #0x86
+ mov r0, #0xf
+ lsl r1, r1, #0x8
+ bl FUN_02004AE4
+ b _02005AC2
+_02005900:
+ add r0, r4, #0x0
+ bl FUN_02005578
+ ldr r1, _02005AB8 ; =0x0000FFFF
+ mov r0, #0x1
+ add r2, r5, #0x0
+ bl FUN_02004D4C
+ add r0, r4, #0x0
+ mov r1, #0x1
+ add r2, r6, #0x0
+ bl FUN_02005AC8
+ mov r0, #0x1
+ add r2, r0, #0x0
+ ldr r1, _02005AB8 ; =0x0000FFFF
+ sub r2, #0xe1
+ bl FUN_02004D20
+ b _02005AC2
+_02005928:
+ add r0, r4, #0x0
+ bl FUN_02005578
+ ldr r1, _02005AB8 ; =0x0000FFFF
+ mov r0, #0x1
+ add r2, r5, #0x0
+ bl FUN_02004D4C
+ add r0, r4, #0x0
+ mov r1, #0x1
+ add r2, r6, #0x0
+ bl FUN_02005AC8
+ ldr r1, _02005AB8 ; =0x0000FFFF
+ mov r0, #0x1
+ mov r2, #0x2c
+ bl FUN_02004D20
+ mov r1, #0x3f
+ add r0, r4, #0x0
+ mvn r1, r1
+ bl FUN_02005BC8
+ ldr r1, _02005AB8 ; =0x0000FFFF
+ mov r0, #0x8
+ add r2, r5, #0x0
+ bl FUN_02004D4C
+ ldr r2, [sp, #0x18]
+ add r0, r4, #0x0
+ mov r1, #0x8
+ bl FUN_02005AC8
+ b _02005AC2
+_0200596C:
+ add r0, r4, #0x0
+ bl FUN_02005578
+ ldr r1, _02005AB8 ; =0x0000FFFF
+ mov r0, #0x1
+ add r2, r5, #0x0
+ bl FUN_02004D4C
+ add r0, r4, #0x0
+ mov r1, #0x1
+ add r2, r6, #0x0
+ bl FUN_02005AC8
+ mov r0, #0xb
+ add r1, r7, #0x0
+ bl FUN_02005AE0
+ mov r0, #0x1
+ add r2, r0, #0x0
+ ldr r1, _02005AB8 ; =0x0000FFFF
+ sub r2, #0x81
+ bl FUN_02004D20
+ b _02005AC2
+_0200599C:
+ add r0, r4, #0x0
+ bl FUN_02005578
+ ldr r1, _02005AB8 ; =0x0000FFFF
+ mov r0, #0x1
+ add r2, r5, #0x0
+ bl FUN_02004D4C
+ add r0, r4, #0x0
+ mov r1, #0x1
+ add r2, r6, #0x0
+ bl FUN_02005AC8
+ mov r0, #0x3c
+ add r1, r7, #0x0
+ bl FUN_02005AE0
+ ldr r1, _02005AB8 ; =0x0000FFFF
+ mov r0, #0x1
+ mov r2, #0x3c
+ bl FUN_02004D20
+ b _02005AC2
+_020059CA:
+ mov r0, #0xe
+ bl FUN_02004984
+ ldr r2, [sp, #0x1c]
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ mov r3, #0xe
+ str r7, [sp, #0x0]
+ bl FUN_02004B30
+ ldr r1, [sp, #0x1c]
+ mov r0, #0xe
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl FUN_02004ACC
+ mov r0, #0xd
+ add r1, r7, #0x0
+ bl FUN_02005AE0
+ mov r1, #0x1a
+ mov r0, #0xe
+ lsl r1, r1, #0xa
+ bl FUN_02004AE4
+ b _02005AC2
+_020059FE:
+ add r0, r4, #0x0
+ bl FUN_02005578
+ ldr r1, _02005AB8 ; =0x0000FFFF
+ mov r0, #0x1
+ add r2, r5, #0x0
+ bl FUN_02004D4C
+ add r0, r4, #0x0
+ mov r1, #0x1
+ add r2, r6, #0x0
+ bl FUN_02005AC8
+ mov r0, #0x64
+ add r1, r7, #0x0
+ bl FUN_02005AE0
+ mov r0, #0x1
+ add r2, r0, #0x0
+ ldr r1, _02005AB8 ; =0x0000FFFF
+ sub r2, #0x2d
+ bl FUN_02004D20
+ b _02005AC2
+_02005A2E:
+ add r0, r4, #0x0
+ bl FUN_02005578
+ ldr r1, _02005AB8 ; =0x0000FFFF
+ mov r0, #0x1
+ add r2, r5, #0x0
+ bl FUN_02004D4C
+ add r0, r4, #0x0
+ mov r1, #0x1
+ add r2, r6, #0x0
+ bl FUN_02005AC8
+ mov r0, #0x1
+ add r2, r0, #0x0
+ ldr r1, _02005AB8 ; =0x0000FFFF
+ sub r2, #0x61
+ bl FUN_02004D20
+ b _02005AC2
+_02005A56:
+ add r0, r4, #0x0
+ bl FUN_02005578
+ ldr r1, _02005AB8 ; =0x0000FFFF
+ mov r0, #0x1
+ add r2, r5, #0x0
+ bl FUN_02004D4C
+ add r0, r4, #0x0
+ mov r1, #0x1
+ add r2, r6, #0x0
+ bl FUN_02005AC8
+ mov r0, #0x14
+ add r1, r7, #0x0
+ bl FUN_02005AE0
+ mov r0, #0x1
+ add r2, r0, #0x0
+ ldr r1, _02005AB8 ; =0x0000FFFF
+ sub r2, #0x61
+ bl FUN_02004D20
+ b _02005AC2
+_02005A86:
+ add r0, r4, #0x0
+ bl FUN_02005578
+ add r0, r4, #0x0
+ mov r1, #0x1
+ mov r2, #0x7f
+ bl FUN_02005AC8
+ add r0, r4, #0x0
+ mov r1, #0x14
+ bl FUN_02005BC8
+ ldr r1, _02005AB8 ; =0x0000FFFF
+ mov r0, #0x8
+ add r2, r5, #0x0
+ bl FUN_02004D4C
+ mov r0, #0x8
+ add r1, r6, #0x0
+ mov r2, #0x0
+ bl FUN_02004828
+ b _02005AC2
+ .balign 4
+_02005AB4: .word 0x000001B9
+_02005AB8: .word 0x0000FFFF
+_02005ABC:
+ add r0, r4, #0x0
+ bl FUN_02005578
+_02005AC2:
+ mov r0, #0x1
+ add sp, #0x20
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02005AC8
+FUN_02005AC8: ; 0x02005AC8
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ add r1, r2, #0x0
+ bl FUN_0200483C
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02004858
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02005AE0
+FUN_02005AE0: ; 0x02005AE0
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ mov r0, #0x22
+ bl FUN_02003D38
+ add r6, r0, #0x0
+ bl FUN_02005BA0
+ add r0, r4, #0x0
+ mov r1, #0x8
+ bl FUN_02016998
+ add r4, r0, #0x0
+ bne _02005B04
+ bl ErrorHandling
+ pop {r4-r6, pc}
+_02005B04:
+ mov r2, #0x0
+ strb r2, [r4, #0x0]
+ strb r2, [r4, #0x1]
+ strb r2, [r4, #0x2]
+ strb r2, [r4, #0x3]
+ strb r2, [r4, #0x4]
+ strb r2, [r4, #0x5]
+ strb r2, [r4, #0x6]
+ strb r2, [r4, #0x7]
+ ldr r0, _02005B28 ; =FUN_02005B2C
+ add r1, r4, #0x0
+ str r5, [r4, #0x0]
+ bl FUN_0200CA44
+ str r0, [r4, #0x4]
+ str r0, [r6, #0x0]
+ pop {r4-r6, pc}
+ nop
+_02005B28: .word FUN_02005B2C
+
+ thumb_func_start FUN_02005B2C
+FUN_02005B2C: ; 0x02005B2C
+ push {r4-r6, lr}
+ mov r0, #0xf
+ add r5, r1, #0x0
+ bl FUN_02003D38
+ add r6, r0, #0x0
+ mov r0, #0x10
+ bl FUN_02003D38
+ ldr r2, [r5, #0x0]
+ add r4, r0, #0x0
+ cmp r2, #0xa
+ bne _02005B58
+ mov r0, #0x1
+ mov r1, #0x0
+ bl FUN_02004828
+ ldr r2, [r5, #0x0]
+ mov r0, #0x8
+ mov r1, #0x0
+ bl FUN_02004828
+_02005B58:
+ ldr r0, [r5, #0x0]
+ sub r0, r0, #0x1
+ str r0, [r5, #0x0]
+ bl FUN_02005670
+ cmp r0, #0x0
+ bne _02005B6A
+ mov r0, #0x0
+ str r0, [r5, #0x0]
+_02005B6A:
+ ldr r0, [r5, #0x0]
+ cmp r0, #0x0
+ bgt _02005B9E
+ mov r0, #0x0
+ bl FUN_02005614
+ ldrb r0, [r6, #0x0]
+ cmp r0, #0x1
+ bne _02005B88
+ mov r0, #0xe
+ bl FUN_02004C3C
+ mov r0, #0xe
+ bl FUN_02004A04
+_02005B88:
+ ldrb r0, [r4, #0x0]
+ cmp r0, #0x1
+ bne _02005B9A
+ mov r0, #0xf
+ bl FUN_02004C3C
+ mov r0, #0xf
+ bl FUN_02004A04
+_02005B9A:
+ bl FUN_02005BA0
+_02005B9E:
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02005BA0
+FUN_02005BA0: ; 0x02005BA0
+ push {r3-r5, lr}
+ mov r0, #0x22
+ bl FUN_02003D38
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ beq _02005BC2
+ bl FUN_0201B6C8
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_0200CAB4
+ add r0, r5, #0x0
+ bl FUN_02016A18
+_02005BC2:
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02005BC8
+FUN_02005BC8: ; 0x02005BC8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r0, #0x11
+ add r4, r1, #0x0
+ bl FUN_02003D38
+ mov r1, #0x1
+ strb r1, [r0, #0x0]
+ add r0, r1, #0x0
+ bl FUN_02005E80
+ add r0, r5, #0x0
+ bl FUN_02005578
+ add r5, r0, #0x0
+ ldr r1, _02005BF4 ; =0x0000FFFF
+ mov r0, #0x8
+ add r2, r4, #0x0
+ bl FUN_02004D20
+ add r0, r5, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+_02005BF4: .word 0x0000FFFF
+
+ thumb_func_start FUN_02005BF8
+FUN_02005BF8: ; 0x02005BF8
+ push {r3-r6, lr}
+ sub sp, #0x4
+ add r5, r0, #0x0
+ mov r0, #0x11
+ add r4, r2, #0x0
+ add r6, r3, #0x0
+ bl FUN_02003D38
+ mov r1, #0x1
+ strb r1, [r0, #0x0]
+ mov r0, #0xf
+ bl FUN_02004984
+ ldr r0, [sp, #0x18]
+ add r1, r4, #0x0
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ add r2, r6, #0x0
+ mov r3, #0xf
+ bl FUN_02004B30
+ add sp, #0x4
+ pop {r3-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02005C28
+FUN_02005C28: ; 0x02005C28
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_020048F4
+ add r0, r5, #0x0
+ bl FUN_02005CEC
+ bl FUN_02004124
+ bl FUN_020048D0
+ cmp r0, #0xff
+ beq _02005C48
+ mov r1, #0x1
+ bl FUN_020047C8
+_02005C48:
+ mov r0, #0x1c
+ bl FUN_02003D38
+ bl FUN_02003F3C
+ add r0, r5, #0x0
+ mov r1, #0x3
+ bl FUN_02003FA8
+ mov r0, #0x2
+ bl FUN_02003FF4
+ add r1, r5, #0x0
+ blx FUN_020C3980
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x2
+ bl FUN_02004858
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02005C74
+FUN_02005C74: ; 0x02005C74
+ push {r4, lr}
+ mov r0, #0xd
+ bl FUN_02003D38
+ add r4, r0, #0x0
+ mov r0, #0x2
+ bl FUN_020048BC
+ cmp r0, #0x0
+ beq _02005C8C
+ mov r0, #0x1
+ pop {r4, pc}
+_02005C8C:
+ ldrh r0, [r4, #0x0]
+ cmp r0, #0x0
+ beq _02005C9A
+ sub r0, r0, #0x1
+ strh r0, [r4, #0x0]
+ mov r0, #0x1
+ pop {r4, pc}
+_02005C9A:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02005CA0
+FUN_02005CA0: ; 0x02005CA0
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x2
+ bl FUN_02003FF4
+ add r1, r4, #0x0
+ blx FUN_020C10A4
+ mov r0, #0x6
+ bl FUN_02004748
+ bl FUN_02003F64
+ pop {r4, pc}
+
+ thumb_func_start FUN_02005CBC
+FUN_02005CBC: ; 0x02005CBC
+ push {r3, lr}
+ mov r0, #0xd
+ bl FUN_02003D38
+ bl FUN_02005C74
+ cmp r0, #0x1
+ bne _02005CD0
+ mov r0, #0x1
+ pop {r3, pc}
+_02005CD0:
+ mov r0, #0x0
+ bl FUN_02005CA0
+ bl FUN_02004124
+ bl FUN_020048D0
+ cmp r0, #0xff
+ beq _02005CE8
+ mov r1, #0x0
+ bl FUN_020047C8
+_02005CE8:
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_02005CEC
+FUN_02005CEC: ; 0x02005CEC
+ push {r3, lr}
+ mov r0, #0xd
+ bl FUN_02003D38
+ mov r1, #0xf
+ strh r1, [r0, #0x0]
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02005CFC
+FUN_02005CFC: ; 0x02005CFC
+ push {r3, lr}
+ mov r0, #0x1d
+ bl FUN_02003D38
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x1
+ bne _02005D1C
+ mov r0, #0xe
+ bl FUN_02004ABC
+ cmp r0, #0x0
+ bne _02005D1C
+ bl FUN_02005DFC
+ mov r0, #0x1
+ pop {r3, pc}
+_02005D1C:
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_02005D20
+FUN_02005D20: ; 0x02005D20
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r0, #0x1e
+ bl FUN_02003D38
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02029F04
+ cmp r0, #0x0
+ bne _02005D3A
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_02005D3A:
+ ldrb r0, [r4, #0x0]
+ cmp r0, #0x1
+ beq _02005D44
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_02005D44:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02005D48
+FUN_02005D48: ; 0x02005D48
+ push {r3-r7, lr}
+ sub sp, #0x30
+ add r6, r0, #0x0
+ add r5, r2, #0x0
+ add r7, r3, #0x0
+ bl FUN_02004DB4
+ str r0, [sp, #0x0]
+ mov r0, #0x1d
+ bl FUN_02003D38
+ str r0, [sp, #0x4]
+ add r0, r6, #0x0
+ bl FUN_02005D20
+ cmp r0, #0x0
+ bne _02005D70
+ add sp, #0x30
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_02005D70:
+ mov r0, #0x0
+ bl FUN_02005614
+ bl FUN_02005DFC
+ mov r0, #0xe
+ bl FUN_02004984
+ bl FUN_0201B9EC
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x13
+ sub r1, r1, r2
+ mov r0, #0x13
+ ror r1, r0
+ add r0, r2, r1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ add r0, r6, #0x0
+ bl FUN_02029F10
+ add r1, r0, #0x0
+ ldr r0, [sp, #0x0]
+ bl FUN_02029F14
+ mov r0, #0xe
+ bl FUN_02004930
+ str r0, [sp, #0x8]
+ mov r0, #0x0
+ str r0, [sp, #0xc]
+ bl FUN_02004DB4
+ str r0, [sp, #0x10]
+ mov r0, #0x0
+ str r0, [sp, #0x14]
+ str r0, [sp, #0x18]
+ mov r0, #0x7d
+ lsl r0, r0, #0x4
+ str r0, [sp, #0x1c]
+ str r0, [sp, #0x20]
+ mov r0, #0x2
+ lsl r0, r0, #0xe
+ add r0, r4, r0
+ str r0, [sp, #0x28]
+ lsr r0, r7, #0x1f
+ add r0, r7, r0
+ asr r0, r0, #0x1
+ add r0, #0x40
+ str r0, [sp, #0x2c]
+ add r0, sp, #0x8
+ mov r1, #0xe
+ str r5, [sp, #0x24]
+ bl FUN_02004A6C
+ add r4, r0, #0x0
+ mov r0, #0xe
+ add r1, r5, #0x0
+ bl FUN_02004AF8
+ ldr r0, [sp, #0x4]
+ mov r1, #0x1
+ strb r1, [r0, #0x0]
+ mov r0, #0x0
+ bl FUN_02005E80
+ add r0, r4, #0x0
+ add sp, #0x30
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02005DFC
+FUN_02005DFC: ; 0x02005DFC
+ push {r3-r5, lr}
+ mov r0, #0xf
+ bl FUN_02003D38
+ add r5, r0, #0x0
+ mov r0, #0x1d
+ bl FUN_02003D38
+ add r4, r0, #0x0
+ ldrb r0, [r5, #0x0]
+ cmp r0, #0x1
+ bne _02005E20
+ mov r0, #0xe
+ bl FUN_02004C3C
+ mov r0, #0xe
+ bl FUN_02004A04
+_02005E20:
+ mov r0, #0x0
+ strb r0, [r4, #0x0]
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02005E28
+FUN_02005E28: ; 0x02005E28
+ push {lr}
+ sub sp, #0x1c
+ mov r0, #0x2
+ str r0, [sp, #0x0]
+ bl FUN_02004DB4
+ mov r1, #0x7d
+ str r0, [sp, #0x4]
+ lsl r1, r1, #0x4
+ mov r0, #0x1f
+ str r1, [sp, #0x8]
+ tst r0, r1
+ beq _02005E48
+ mov r0, #0x1f
+ bic r1, r0
+ str r1, [sp, #0x8]
+_02005E48:
+ ldr r0, _02005E60 ; =0x00004174
+ str r0, [sp, #0xc]
+ mov r0, #0x0
+ str r0, [sp, #0x10]
+ str r0, [sp, #0x14]
+ str r0, [sp, #0x18]
+ add r0, sp, #0x0
+ bl FUN_02004914
+ add sp, #0x1c
+ pop {pc}
+ nop
+_02005E60: .word 0x00004174
+
+ thumb_func_start FUN_02005E64
+FUN_02005E64: ; 0x02005E64
+ ldr r3, _02005E68 ; =FUN_0200491C
+ bx r3
+ .balign 4
+_02005E68: .word FUN_0200491C
+
+ thumb_func_start FUN_02005E6C
+FUN_02005E6C: ; 0x02005E6C
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02004DB4
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02029F4C
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02005E80
+FUN_02005E80: ; 0x02005E80
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x1e
+ bl FUN_02003D38
+ strb r4, [r0, #0x0]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02005E90
+FUN_02005E90: ; 0x02005E90
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ mov r0, #0x23
+ add r7, r1, #0x0
+ add r4, r2, #0x0
+ add r6, r3, #0x0
+ bl FUN_02003D38
+ cmp r5, #0x0
+ bne _02005EB2
+ ldr r0, [r0, #0x0]
+ add r1, r7, #0x0
+ add r2, r4, #0x0
+ add r3, r6, #0x0
+ bl FUN_02005D48
+ b _02005EBE
+_02005EB2:
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ add r2, r4, #0x0
+ add r3, r6, #0x0
+ bl FUN_02005D48
+_02005EBE:
+ cmp r0, #0x0
+ bne _02005ED8
+ mov r0, #0x1
+ bl FUN_02005E80
+ mov r0, #0xb
+ str r0, [sp, #0x0]
+ ldr r1, _02005EDC ; =0x000001B9
+ mov r0, #0x0
+ add r2, r6, #0x0
+ add r3, r4, #0x0
+ bl FUN_020056AC
+_02005ED8:
+ pop {r3-r7, pc}
+ nop
+_02005EDC: .word 0x000001B9
+
+ thumb_func_start FUN_02005EE0
+FUN_02005EE0: ; 0x02005EE0
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02029F04
+ cmp r0, #0x0
+ bne _02005EF0
+ mov r0, #0x0
+ pop {r4, pc}
+_02005EF0:
+ add r0, r4, #0x0
+ bl FUN_02029F10
+ mov r1, #0xf
+ ldrsb r0, [r0, r1]
+ sub r1, #0x2d
+ cmp r0, r1
+ bge _02005F04
+ mov r0, #0x1
+ pop {r4, pc}
+_02005F04:
+ cmp r0, #0x1e
+ blt _02005F10
+ cmp r0, #0x80
+ bge _02005F10
+ mov r0, #0x2
+ pop {r4, pc}
+_02005F10:
+ mov r0, #0x0
+ pop {r4, pc}
+
+ thumb_func_start FUN_02005F14
+FUN_02005F14: ; 0x02005F14
+ cmp r0, #0xb
+ bgt _02005F2E
+ bge _02005F32
+ cmp r0, #0x5
+ bgt _02005F36
+ cmp r0, #0x0
+ blt _02005F36
+ beq _02005F32
+ cmp r0, #0x1
+ beq _02005F32
+ cmp r0, #0x5
+ beq _02005F32
+ b _02005F36
+_02005F2E:
+ cmp r0, #0xc
+ bne _02005F36
+_02005F32:
+ mov r0, #0x1
+ bx lr
+_02005F36:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02005F3C
+FUN_02005F3C: ; 0x02005F3C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x1
+ beq _02005F4A
+ bl ErrorHandling
+_02005F4A:
+ ldr r1, [r4, #0x0]
+ mov r0, #0x0
+ blx FS_UnloadOverlay
+ cmp r0, #0x1
+ beq _02005F5A
+ bl ErrorHandling
+_02005F5A:
+ mov r0, #0x0
+ str r0, [r4, #0x4]
+ pop {r4, pc}
+
+ thumb_func_start FUN_02005F60
+FUN_02005F60: ; 0x02005F60
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02005F90
+ bl FUN_0200610C
+ mov r2, #0x0
+ add r3, r0, #0x0
+_02005F70:
+ ldr r1, [r3, #0x4]
+ cmp r1, #0x1
+ bne _02005F86
+ ldr r1, [r3, #0x0]
+ cmp r4, r1
+ bne _02005F86
+ lsl r1, r2, #0x3
+ add r0, r0, r1
+ bl FUN_02005F3C
+ pop {r4, pc}
+_02005F86:
+ add r2, r2, #0x1
+ add r3, #0x8
+ cmp r2, #0x8
+ blt _02005F70
+ pop {r4, pc}
+
+ thumb_func_start FUN_02005F90
+FUN_02005F90: ; 0x02005F90
+ push {lr}
+ sub sp, #0x2c
+ add r2, r0, #0x0
+ add r0, sp, #0x0
+ mov r1, #0x0
+ blx FS_LoadOverlayInfo
+ cmp r0, #0x1
+ beq _02005FA6
+ bl ErrorHandling
+_02005FA6:
+ mov r0, #0x2
+ ldr r2, [sp, #0x4]
+ lsl r0, r0, #0x18
+ cmp r2, r0
+ bhi _02005FBC
+ lsr r0, r0, #0x1
+ cmp r2, r0
+ blo _02005FBC
+ add sp, #0x2c
+ mov r0, #0x1
+ pop {pc}
+_02005FBC:
+ mov r0, #0x1
+ ldr r1, _02005FD8 ; =0x027E0000
+ lsl r0, r0, #0xe
+ add r0, r1, r0
+ cmp r2, r0
+ bhi _02005FD2
+ cmp r2, r1
+ blo _02005FD2
+ add sp, #0x2c
+ mov r0, #0x2
+ pop {pc}
+_02005FD2:
+ mov r0, #0x0
+ add sp, #0x2c
+ pop {pc}
+ .balign 4
+_02005FD8: .word 0x027E0000
+
+ thumb_func_start FUN_02005FDC
+FUN_02005FDC: ; 0x02005FDC
+ push {r3-r7, lr}
+ add r4, r1, #0x0
+ mov r1, #0x0
+ mvn r1, r1
+ add r5, r0, #0x0
+ str r1, [sp, #0x0]
+ bl FUN_02006090
+ cmp r0, #0x0
+ bne _02005FF4
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_02005FF4:
+ add r0, r5, #0x0
+ bl FUN_02005F90
+ add r7, r0, #0x0
+ bl FUN_0200610C
+ add r3, r0, #0x0
+ mov r6, #0x0
+ add r1, r3, #0x0
+_02006006:
+ ldr r0, [r1, #0x4]
+ cmp r0, #0x0
+ bne _02006018
+ lsl r1, r6, #0x3
+ add r2, r3, r1
+ mov r0, #0x1
+ str r0, [r2, #0x4]
+ str r5, [r3, r1]
+ b _02006020
+_02006018:
+ add r6, r6, #0x1
+ add r1, #0x8
+ cmp r6, #0x8
+ blt _02006006
+_02006020:
+ cmp r6, #0x8
+ blt _0200602C
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0200602C:
+ sub r6, r7, #0x1
+ cmp r6, #0x1
+ bhi _0200603C
+ mov r0, #0x0
+ mvn r0, r0
+ blx FS_SetDefaultDMA
+ str r0, [sp, #0x0]
+_0200603C:
+ cmp r4, #0x0
+ beq _0200604A
+ cmp r4, #0x1
+ beq _02006056
+ cmp r4, #0x2
+ beq _02006062
+ b _0200606E
+_0200604A:
+ mov r0, #0x0
+ add r1, r5, #0x0
+ bl FUN_02006168
+ add r4, r0, #0x0
+ b _02006076
+_02006056:
+ mov r0, #0x0
+ add r1, r5, #0x0
+ bl FUN_02006170
+ add r4, r0, #0x0
+ b _02006076
+_02006062:
+ mov r0, #0x0
+ add r1, r5, #0x0
+ bl FUN_020061A8
+ add r4, r0, #0x0
+ b _02006076
+_0200606E:
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_02006076:
+ cmp r6, #0x1
+ bhi _02006080
+ ldr r0, [sp, #0x0]
+ blx FS_SetDefaultDMA
+_02006080:
+ cmp r4, #0x0
+ bne _0200608C
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0200608C:
+ mov r0, #0x1
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02006090
+FUN_02006090: ; 0x02006090
+ push {r3-r7, lr}
+ sub sp, #0x10
+ add r1, sp, #0xc
+ add r2, sp, #0x8
+ add r4, r0, #0x0
+ bl FUN_02006130
+ cmp r0, #0x0
+ bne _020060A8
+ add sp, #0x10
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_020060A8:
+ add r0, r4, #0x0
+ bl FUN_02005F90
+ bl FUN_0200610C
+ add r5, r0, #0x0
+ mov r4, #0x0
+ add r6, sp, #0x4
+ add r7, sp, #0x0
+_020060BA:
+ ldr r0, [r5, #0x4]
+ cmp r0, #0x1
+ bne _020060FC
+ ldr r0, [r5, #0x0]
+ add r1, r6, #0x0
+ add r2, r7, #0x0
+ bl FUN_02006130
+ cmp r0, #0x1
+ bne _020060FC
+ ldr r1, [sp, #0x4]
+ ldr r2, [sp, #0xc]
+ cmp r2, r1
+ blo _020060DC
+ ldr r0, [sp, #0x0]
+ cmp r2, r0
+ blo _020060F2
+_020060DC:
+ ldr r3, [sp, #0x8]
+ cmp r3, r1
+ bls _020060E8
+ ldr r0, [sp, #0x0]
+ cmp r3, r0
+ bls _020060F2
+_020060E8:
+ cmp r2, r1
+ bhi _020060FC
+ ldr r0, [sp, #0x0]
+ cmp r3, r0
+ blo _020060FC
+_020060F2:
+ bl ErrorHandling
+ add sp, #0x10
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_020060FC:
+ add r4, r4, #0x1
+ add r5, #0x8
+ cmp r4, #0x8
+ blt _020060BA
+ mov r0, #0x1
+ add sp, #0x10
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200610C
+FUN_0200610C: ; 0x0200610C
+ cmp r0, #0x0
+ beq _02006118
+ cmp r0, #0x1
+ beq _0200611C
+ cmp r0, #0x2
+ beq _02006120
+_02006118:
+ ldr r0, _02006124 ; =0x021C45B0
+ bx lr
+_0200611C:
+ ldr r0, _02006128 ; =0x021C45F0
+ bx lr
+_02006120:
+ ldr r0, _0200612C ; =0x021C4630
+ bx lr
+ .balign 4
+_02006124: .word 0x021C45B0
+_02006128: .word 0x021C45F0
+_0200612C: .word 0x021C4630
+
+ thumb_func_start FUN_02006130
+FUN_02006130: ; 0x02006130
+ push {r4-r5, lr}
+ sub sp, #0x2c
+ add r3, r0, #0x0
+ add r5, r1, #0x0
+ add r4, r2, #0x0
+ add r0, sp, #0x0
+ mov r1, #0x0
+ add r2, r3, #0x0
+ blx FS_LoadOverlayInfo
+ cmp r0, #0x0
+ bne _02006152
+ bl ErrorHandling
+ add sp, #0x2c
+ mov r0, #0x0
+ pop {r4-r5, pc}
+_02006152:
+ ldr r2, [sp, #0x4]
+ str r2, [r5, #0x0]
+ ldr r1, [sp, #0x8]
+ ldr r0, [sp, #0xc]
+ add r0, r1, r0
+ add r0, r2, r0
+ str r0, [r4, #0x0]
+ mov r0, #0x1
+ add sp, #0x2c
+ pop {r4-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02006168
+FUN_02006168: ; 0x02006168
+ ldr r3, _0200616C ; =FS_LoadOverlay
+ bx r3
+ .balign 4
+_0200616C: .word FS_LoadOverlay
+
+ thumb_func_start FUN_02006170
+FUN_02006170: ; 0x02006170
+ push {lr}
+ sub sp, #0x2c
+ add r3, r0, #0x0
+ add r2, r1, #0x0
+ add r0, sp, #0x0
+ add r1, r3, #0x0
+ blx FS_LoadOverlayInfo
+ cmp r0, #0x0
+ bne _0200618A
+ add sp, #0x2c
+ mov r0, #0x0
+ pop {pc}
+_0200618A:
+ add r0, sp, #0x0
+ blx FS_LoadOverlayImage
+ cmp r0, #0x0
+ bne _0200619A
+ add sp, #0x2c
+ mov r0, #0x0
+ pop {pc}
+_0200619A:
+ add r0, sp, #0x0
+ blx FS_StartOverlay
+ mov r0, #0x1
+ add sp, #0x2c
+ pop {pc}
+ .balign 4
+
+ thumb_func_start FUN_020061A8
+FUN_020061A8: ; 0x020061A8
+ push {lr}
+ sub sp, #0x74
+ add r3, r0, #0x0
+ add r2, r1, #0x0
+ add r0, sp, #0x0
+ add r1, r3, #0x0
+ blx FS_LoadOverlayInfo
+ cmp r0, #0x0
+ bne _020061C2
+ add sp, #0x74
+ mov r0, #0x0
+ pop {pc}
+_020061C2:
+ add r0, sp, #0x2c
+ blx FS_InitFile
+ add r0, sp, #0x0
+ add r1, sp, #0x2c
+ blx FS_LoadOverlayImageAsync
+ add r0, sp, #0x2c
+ blx FS_WaitAsync
+ add r0, sp, #0x2c
+ blx FS_CloseFile
+ add r0, sp, #0x0
+ blx FS_StartOverlay
+ mov r0, #0x1
+ add sp, #0x74
+ pop {pc}
+
+ thumb_func_start FUN_020061E8
+FUN_020061E8: ; 0x020061E8
+ push {r3-r7, lr}
+ add r5, r1, #0x0
+ add r6, r0, #0x0
+ add r7, r2, #0x0
+ cmp r5, #0x0
+ beq _0200620C
+ add r0, r3, #0x0
+ bl FUN_02016998
+ add r4, r0, #0x0
+ bne _02006202
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_02006202:
+ mov r1, #0x0
+ add r2, r5, #0x0
+ blx FUN_020DF4A4
+ b _0200620E
+_0200620C:
+ mov r4, #0x0
+_0200620E:
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ add r2, r7, #0x0
+ bl FUN_0200CA44
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200621C
+FUN_0200621C: ; 0x0200621C
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_0201B6C8
+ cmp r0, #0x0
+ beq _0200622C
+ bl FUN_02016A18
+_0200622C:
+ add r0, r4, #0x0
+ bl FUN_0200CAB4
+ pop {r4, pc}
+
+ thumb_func_start FUN_02006234
+FUN_02006234: ; 0x02006234
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r0, r2, #0x0
+ mov r1, #0x28
+ bl FUN_02016998
+ add r3, r0, #0x0
+ add r2, r3, #0x0
+ ldmia r5!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r2!, {r0-r1}
+ mov r0, #0x0
+ str r0, [r3, #0x10]
+ str r0, [r3, #0x14]
+ str r4, [r3, #0x18]
+ str r0, [r3, #0x1c]
+ str r0, [r3, #0x20]
+ str r0, [r3, #0x24]
+ add r0, r3, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02006260
+FUN_02006260: ; 0x02006260
+ ldr r3, _02006264 ; =FUN_02016A18
+ bx r3
+ .balign 4
+_02006264: .word FUN_02016A18
+
+ thumb_func_start FUN_02006268
+FUN_02006268: ; 0x02006268
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, r2, #0x0
+ bl FUN_02016998
+ str r0, [r4, #0x1c]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02006278
+FUN_02006278: ; 0x02006278
+ ldr r0, [r0, #0x1c]
+ bx lr
+
+ thumb_func_start FUN_0200627C
+FUN_0200627C: ; 0x0200627C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x1c]
+ bl FUN_02016A18
+ mov r0, #0x0
+ str r0, [r4, #0x1c]
+ pop {r4, pc}
+
+ thumb_func_start FUN_0200628C
+FUN_0200628C: ; 0x0200628C
+ ldr r0, [r0, #0x18]
+ bx lr
+
+ thumb_func_start FUN_02006290
+FUN_02006290: ; 0x02006290
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x10]
+ cmp r1, #0x3
+ bhi _0200630E
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_020062A6: ; jump table (using 16-bit offset)
+ .short _020062AE - _020062A6 - 2; case 0
+ .short _020062C2 - _020062A6 - 2; case 1
+ .short _020062DA - _020062A6 - 2; case 2
+ .short _020062F0 - _020062A6 - 2; case 3
+_020062AE:
+ mov r1, #0x0
+ ldr r0, [r4, #0xc]
+ mvn r1, r1
+ cmp r0, r1
+ beq _020062BE
+ mov r1, #0x2
+ bl FUN_02005FDC
+_020062BE:
+ mov r0, #0x1
+ str r0, [r4, #0x10]
+_020062C2:
+ add r1, r4, #0x0
+ ldr r2, [r4, #0x0]
+ add r0, r4, #0x0
+ add r1, #0x14
+ blx r2
+ cmp r0, #0x1
+ bne _0200630E
+ mov r0, #0x2
+ str r0, [r4, #0x10]
+ mov r0, #0x0
+ str r0, [r4, #0x14]
+ b _0200630E
+_020062DA:
+ add r1, r4, #0x0
+ ldr r2, [r4, #0x4]
+ add r1, #0x14
+ blx r2
+ cmp r0, #0x1
+ bne _0200630E
+ mov r0, #0x3
+ str r0, [r4, #0x10]
+ mov r0, #0x0
+ str r0, [r4, #0x14]
+ b _0200630E
+_020062F0:
+ add r1, r4, #0x0
+ ldr r2, [r4, #0x8]
+ add r1, #0x14
+ blx r2
+ cmp r0, #0x1
+ bne _0200630E
+ mov r1, #0x0
+ ldr r0, [r4, #0xc]
+ mvn r1, r1
+ cmp r0, r1
+ beq _0200630A
+ bl FUN_02005F60
+_0200630A:
+ mov r0, #0x1
+ pop {r4, pc}
+_0200630E:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
diff --git a/asm/unk_02006864.s b/asm/unk_02006864.s
new file mode 100644
index 00000000..b169a558
--- /dev/null
+++ b/asm/unk_02006864.s
@@ -0,0 +1,109321 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ thumb_func_start FUN_02006864
+FUN_02006864: ; 0x02006864
+ add r3, r1, #0x0
+ add r1, r2, #0x0
+ add r2, r3, #0x0
+ ldr r3, _02006870 ; =0x020D180C
+ bx r3
+ nop
+_02006870: .word 0x020D180C
+
+ thumb_func_start FUN_02006874
+FUN_02006874: ; 0x02006874
+ add r0, #0x50
+ ldrh r0, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0200687C
+FUN_0200687C: ; 0x0200687C
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r6, r2, #0x0
+ mov r2, #0x0
+ add r5, r3, #0x0
+ str r2, [sp, #0x0]
+ ldr r2, [sp, #0x28]
+ ldr r3, [sp, #0x2c]
+ ldr r4, [sp, #0x24]
+ bl FUN_02006C98
+ add r7, r0, #0x0
+ beq _020068C2
+ add r1, sp, #0x4
+ blx FUN_020B0030
+ cmp r0, #0x0
+ beq _020068BC
+ cmp r4, #0x0
+ bne _020068A8
+ ldr r0, [sp, #0x4]
+ ldr r4, [r0, #0x10]
+_020068A8:
+ ldr r0, [sp, #0x20]
+ lsl r1, r5, #0x18
+ str r0, [sp, #0x0]
+ ldr r2, [sp, #0x4]
+ add r0, r6, #0x0
+ ldr r2, [r2, #0x14]
+ lsr r1, r1, #0x18
+ add r3, r4, #0x0
+ bl FUN_02017E14
+_020068BC:
+ add r0, r7, #0x0
+ bl FUN_02016A18
+_020068C2:
+ add r0, r4, #0x0
+ add sp, #0x8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_020068C8
+FUN_020068C8: ; 0x020068C8
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r6, r2, #0x0
+ mov r2, #0x1
+ add r5, r3, #0x0
+ str r2, [sp, #0x0]
+ ldr r2, [sp, #0x28]
+ ldr r3, [sp, #0x2c]
+ ldr r4, [sp, #0x24]
+ bl FUN_02006C98
+ add r7, r0, #0x0
+ beq _0200692C
+ add r1, sp, #0x4
+ blx FUN_020B0180
+ cmp r0, #0x0
+ beq _02006926
+ cmp r4, #0x0
+ bne _020068F4
+ ldr r0, [sp, #0x4]
+ ldr r4, [r0, #0x8]
+_020068F4:
+ lsl r1, r5, #0x18
+ add r0, r6, #0x0
+ lsr r1, r1, #0x18
+ bl FUN_0201886C
+ cmp r0, #0x0
+ beq _02006912
+ ldr r2, [sp, #0x4]
+ lsl r1, r5, #0x18
+ add r0, r6, #0x0
+ lsr r1, r1, #0x18
+ add r2, #0xc
+ add r3, r4, #0x0
+ bl FUN_02017DFC
+_02006912:
+ ldr r0, [sp, #0x20]
+ lsl r1, r5, #0x18
+ str r0, [sp, #0x0]
+ ldr r2, [sp, #0x4]
+ add r0, r6, #0x0
+ lsr r1, r1, #0x18
+ add r2, #0xc
+ add r3, r4, #0x0
+ bl FUN_02017CE8
+_02006926:
+ add r0, r7, #0x0
+ bl FUN_02016A18
+_0200692C:
+ add sp, #0x8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02006930
+FUN_02006930: ; 0x02006930
+ push {lr}
+ sub sp, #0xc
+ str r3, [sp, #0x0]
+ ldr r3, [sp, #0x10]
+ str r3, [sp, #0x4]
+ ldr r3, [sp, #0x14]
+ str r3, [sp, #0x8]
+ mov r3, #0x0
+ bl FUN_02006948
+ add sp, #0xc
+ pop {pc}
+
+ thumb_func_start FUN_02006948
+FUN_02006948: ; 0x02006948
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r4, r2, #0x0
+ add r7, r3, #0x0
+ mov r2, #0x1
+ str r2, [sp, #0x0]
+ ldr r3, [sp, #0x28]
+ mov r2, #0x0
+ ldr r6, [sp, #0x20]
+ ldr r5, [sp, #0x24]
+ bl FUN_02006C98
+ str r0, [sp, #0x4]
+ cmp r0, #0x0
+ beq _02006A2A
+ add r1, sp, #0x8
+ blx FUN_020B0138
+ cmp r0, #0x0
+ beq _02006A24
+ ldr r0, [sp, #0x8]
+ ldr r1, [r0, #0xc]
+ add r1, r1, r7
+ str r1, [r0, #0xc]
+ cmp r5, #0x0
+ bne _02006982
+ ldr r0, [sp, #0x8]
+ ldr r0, [r0, #0x8]
+ sub r5, r0, r7
+_02006982:
+ ldr r0, [sp, #0x8]
+ add r1, r5, #0x0
+ ldr r0, [r0, #0xc]
+ blx DC_FlushRange
+ cmp r4, #0x7
+ bhi _02006A14
+ add r0, r4, r4
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0200699C: ; jump table (using 16-bit offset)
+ .short _02006A14 - _0200699C - 2; case 0
+ .short _02006A14 - _0200699C - 2; case 1
+ .short _020069AC - _0200699C - 2; case 2
+ .short _020069E0 - _0200699C - 2; case 3
+ .short _02006A14 - _0200699C - 2; case 4
+ .short _02006A14 - _0200699C - 2; case 5
+ .short _020069C6 - _0200699C - 2; case 6
+ .short _020069FA - _0200699C - 2; case 7
+_020069AC:
+ blx FUN_020C8B10
+ ldr r0, [sp, #0x8]
+ ldr r3, _02006A30 ; =0x020ECBB0
+ lsl r4, r4, #0x2
+ ldr r0, [r0, #0xc]
+ ldr r3, [r3, r4]
+ add r1, r6, #0x0
+ add r2, r5, #0x0
+ blx r3
+ blx FUN_020C8A2C
+ b _02006A24
+_020069C6:
+ blx FUN_020C88CC
+ ldr r0, [sp, #0x8]
+ ldr r3, _02006A30 ; =0x020ECBB0
+ lsl r4, r4, #0x2
+ ldr r0, [r0, #0xc]
+ ldr r3, [r3, r4]
+ add r1, r6, #0x0
+ add r2, r5, #0x0
+ blx r3
+ blx FUN_020C880C
+ b _02006A24
+_020069E0:
+ blx FUN_020C89BC
+ ldr r0, [sp, #0x8]
+ ldr r3, _02006A30 ; =0x020ECBB0
+ lsl r4, r4, #0x2
+ ldr r0, [r0, #0xc]
+ ldr r3, [r3, r4]
+ add r1, r6, #0x0
+ add r2, r5, #0x0
+ blx r3
+ blx FUN_020C88F0
+ b _02006A24
+_020069FA:
+ blx FUN_020C87E8
+ ldr r0, [sp, #0x8]
+ ldr r3, _02006A30 ; =0x020ECBB0
+ lsl r4, r4, #0x2
+ ldr r0, [r0, #0xc]
+ ldr r3, [r3, r4]
+ add r1, r6, #0x0
+ add r2, r5, #0x0
+ blx r3
+ blx FUN_020C8728
+ b _02006A24
+_02006A14:
+ ldr r0, [sp, #0x8]
+ ldr r3, _02006A30 ; =0x020ECBB0
+ lsl r4, r4, #0x2
+ ldr r0, [r0, #0xc]
+ ldr r3, [r3, r4]
+ add r1, r6, #0x0
+ add r2, r5, #0x0
+ blx r3
+_02006A24:
+ ldr r0, [sp, #0x4]
+ bl FUN_02016A18
+_02006A2A:
+ add sp, #0xc
+ pop {r4-r7, pc}
+ nop
+_02006A30: .word 0x020ECBB0
+
+ thumb_func_start FUN_02006A34
+FUN_02006A34: ; 0x02006A34
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r2, #0x0
+ mov r2, #0x1
+ add r6, r3, #0x0
+ str r2, [sp, #0x0]
+ ldr r2, [sp, #0x24]
+ ldr r3, [sp, #0x28]
+ ldr r4, [sp, #0x20]
+ bl FUN_02006C98
+ add r7, r0, #0x0
+ beq _02006A80
+ add r1, sp, #0x4
+ blx FUN_020B0088
+ cmp r0, #0x0
+ beq _02006A7A
+ cmp r4, #0x0
+ bne _02006A60
+ ldr r0, [sp, #0x4]
+ ldr r4, [r0, #0x10]
+_02006A60:
+ ldr r0, [sp, #0x4]
+ add r1, r4, #0x0
+ ldr r0, [r0, #0x14]
+ blx DC_FlushRange
+ ldr r0, [sp, #0x4]
+ ldr r3, _02006A88 ; =0x020ECBA0
+ lsl r5, r5, #0x2
+ ldr r0, [r0, #0x14]
+ ldr r3, [r3, r5]
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ blx r3
+_02006A7A:
+ add r0, r7, #0x0
+ bl FUN_02016A18
+_02006A80:
+ add r0, r4, #0x0
+ add sp, #0x8
+ pop {r3-r7, pc}
+ nop
+_02006A88: .word 0x020ECBA0
+
+ thumb_func_start FUN_02006A8C
+FUN_02006A8C: ; 0x02006A8C
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r5, r2, #0x0
+ add r4, r3, #0x0
+ mov r2, #0x1
+ str r2, [sp, #0x0]
+ ldr r3, [sp, #0x20]
+ mov r2, #0x0
+ bl FUN_02006C98
+ add r6, r0, #0x0
+ beq _02006AE0
+ add r1, sp, #0x4
+ blx FUN_020B00F0
+ add r7, r0, #0x0
+ add r0, r6, #0x0
+ add r1, sp, #0x8
+ blx FUN_020B0138
+ cmp r0, #0x0
+ beq _02006ADA
+ cmp r7, #0x0
+ beq _02006ACE
+ ldr r0, [sp, #0x24]
+ add r2, r4, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0x4]
+ add r3, r5, #0x0
+ blx FUN_020B10E8
+ b _02006ADA
+_02006ACE:
+ ldr r0, [sp, #0x8]
+ ldr r3, [sp, #0x24]
+ add r1, r4, #0x0
+ add r2, r5, #0x0
+ blx FUN_020B1240
+_02006ADA:
+ add r0, r6, #0x0
+ bl FUN_02016A18
+_02006AE0:
+ add sp, #0xc
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_02006AE4
+FUN_02006AE4: ; 0x02006AE4
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r5, r3, #0x0
+ mov r3, #0x1
+ str r3, [sp, #0x0]
+ ldr r3, [sp, #0x24]
+ bl FUN_02006C98
+ add r6, r0, #0x0
+ ldr r4, _02006B30 ; =0x00000000
+ beq _02006B28
+ add r1, sp, #0x4
+ blx FUN_020B0088
+ cmp r0, #0x0
+ beq _02006B22
+ ldr r1, [sp, #0x18]
+ cmp r1, #0x0
+ beq _02006B0E
+ ldr r0, [sp, #0x4]
+ str r1, [r0, #0x10]
+_02006B0E:
+ ldr r4, _02006B34 ; =0x020ECBA8
+ lsl r5, r5, #0x2
+ ldr r0, [sp, #0x4]
+ ldr r1, [sp, #0x20]
+ ldr r2, [sp, #0x1c]
+ ldr r3, [sp, #0x28]
+ ldr r4, [r4, r5]
+ blx r4
+ ldr r0, [sp, #0x4]
+ ldr r4, [r0, #0x10]
+_02006B22:
+ add r0, r6, #0x0
+ bl FUN_02016A18
+_02006B28:
+ add r0, r4, #0x0
+ add sp, #0x8
+ pop {r4-r6, pc}
+ nop
+_02006B30: .word 0x00000000
+_02006B34: .word 0x020ECBA8
+
+ thumb_func_start FUN_02006B38
+FUN_02006B38: ; 0x02006B38
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r5, r3, #0x0
+ mov r3, #0x1
+ str r3, [sp, #0x0]
+ ldr r3, [sp, #0x24]
+ bl FUN_02006C98
+ add r4, r0, #0x0
+ beq _02006B9E
+ add r1, sp, #0x4
+ blx FUN_020B0088
+ cmp r0, #0x0
+ beq _02006B98
+ ldr r1, [sp, #0x18]
+ cmp r1, #0x0
+ beq _02006B60
+ ldr r0, [sp, #0x4]
+ str r1, [r0, #0x10]
+_02006B60:
+ ldr r0, [sp, #0x1c]
+ cmp r0, #0x1
+ beq _02006B6C
+ cmp r0, #0x2
+ beq _02006B7C
+ b _02006B88
+_02006B6C:
+ mov r0, #0x1
+ lsl r0, r0, #0x1a
+ ldr r1, [r0, #0x0]
+ ldr r0, _02006BA4 ; =0x00300010
+ and r1, r0
+ ldr r0, [sp, #0x4]
+ str r1, [r0, #0x8]
+ b _02006B88
+_02006B7C:
+ ldr r0, _02006BA8 ; =0x04001000
+ ldr r1, [r0, #0x0]
+ ldr r0, _02006BA4 ; =0x00300010
+ and r1, r0
+ ldr r0, [sp, #0x4]
+ str r1, [r0, #0x8]
+_02006B88:
+ lsl r6, r5, #0x2
+ ldr r5, _02006BAC ; =0x020ECB98
+ ldr r0, [sp, #0x4]
+ ldr r1, [sp, #0x20]
+ ldr r2, [sp, #0x1c]
+ ldr r3, [sp, #0x28]
+ ldr r5, [r5, r6]
+ blx r5
+_02006B98:
+ add r0, r4, #0x0
+ bl FUN_02016A18
+_02006B9E:
+ add sp, #0x8
+ pop {r4-r6, pc}
+ nop
+_02006BA4: .word 0x00300010
+_02006BA8: .word 0x04001000
+_02006BAC: .word 0x020ECB98
+
+ thumb_func_start FUN_02006BB0
+FUN_02006BB0: ; 0x02006BB0
+ push {r3-r5, lr}
+ add r4, r3, #0x0
+ mov r3, #0x0
+ str r3, [sp, #0x0]
+ ldr r3, [sp, #0x10]
+ bl FUN_02006C98
+ add r5, r0, #0x0
+ beq _02006BD6
+ add r1, r4, #0x0
+ blx FUN_020B0030
+ cmp r0, #0x0
+ bne _02006BD6
+ add r0, r5, #0x0
+ bl FUN_02016A18
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_02006BD6:
+ add r0, r5, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02006BDC
+FUN_02006BDC: ; 0x02006BDC
+ push {r3-r5, lr}
+ add r4, r3, #0x0
+ mov r3, #0x0
+ str r3, [sp, #0x0]
+ ldr r3, [sp, #0x10]
+ bl FUN_02006C98
+ add r5, r0, #0x0
+ beq _02006C02
+ add r1, r4, #0x0
+ blx FUN_020B0180
+ cmp r0, #0x0
+ bne _02006C02
+ add r0, r5, #0x0
+ bl FUN_02016A18
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_02006C02:
+ add r0, r5, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02006C08
+FUN_02006C08: ; 0x02006C08
+ push {r3-r5, lr}
+ add r5, r2, #0x0
+ mov r2, #0x0
+ str r2, [sp, #0x0]
+ bl FUN_02006C98
+ add r4, r0, #0x0
+ beq _02006C2C
+ add r1, r5, #0x0
+ blx FUN_020B0138
+ cmp r0, #0x0
+ bne _02006C2C
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_02006C2C:
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02006C30
+FUN_02006C30: ; 0x02006C30
+ push {r3-r5, lr}
+ add r4, r3, #0x0
+ mov r3, #0x0
+ str r3, [sp, #0x0]
+ ldr r3, [sp, #0x10]
+ bl FUN_02006C98
+ add r5, r0, #0x0
+ beq _02006C56
+ add r1, r4, #0x0
+ blx FUN_020AFEB8
+ cmp r0, #0x0
+ bne _02006C56
+ add r0, r5, #0x0
+ bl FUN_02016A18
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_02006C56:
+ add r0, r5, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02006C5C
+FUN_02006C5C: ; 0x02006C5C
+ push {r3-r5, lr}
+ add r4, r3, #0x0
+ mov r3, #0x0
+ str r3, [sp, #0x0]
+ ldr r3, [sp, #0x10]
+ bl FUN_02006C98
+ add r5, r0, #0x0
+ beq _02006C82
+ add r1, r4, #0x0
+ blx FUN_020AFD94
+ cmp r0, #0x0
+ bne _02006C82
+ add r0, r5, #0x0
+ bl FUN_02016A18
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_02006C82:
+ add r0, r5, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02006C88
+FUN_02006C88: ; 0x02006C88
+ push {r3, lr}
+ add r3, r2, #0x0
+ mov r2, #0x0
+ str r2, [sp, #0x0]
+ mov r2, #0x1
+ bl FUN_02006C98
+ pop {r3, pc}
+
+ thumb_func_start FUN_02006C98
+FUN_02006C98: ; 0x02006C98
+ push {r3-r7, lr}
+ add r5, r2, #0x0
+ add r7, r0, #0x0
+ add r6, r3, #0x0
+ str r1, [sp, #0x0]
+ cmp r5, #0x0
+ bne _02006CAC
+ ldr r2, [sp, #0x18]
+ cmp r2, #0x1
+ bne _02006CC0
+_02006CAC:
+ ldr r1, [sp, #0x0]
+ add r0, r7, #0x0
+ bl LoadFromNARC_7
+ add r1, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_020169D8
+ add r4, r0, #0x0
+ b _02006CCE
+_02006CC0:
+ bl LoadFromNARC_7
+ add r1, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_02016998
+ add r4, r0, #0x0
+_02006CCE:
+ cmp r4, #0x0
+ beq _02006D12
+ ldr r2, [sp, #0x0]
+ add r0, r4, #0x0
+ add r1, r7, #0x0
+ bl LoadFromNARC
+ cmp r5, #0x0
+ beq _02006D12
+ ldr r0, [sp, #0x18]
+ cmp r0, #0x0
+ bne _02006CF2
+ ldr r1, [r4, #0x0]
+ add r0, r6, #0x0
+ lsr r1, r1, #0x8
+ bl FUN_02016998
+ b _02006CFC
+_02006CF2:
+ ldr r1, [r4, #0x0]
+ add r0, r6, #0x0
+ lsr r1, r1, #0x8
+ bl FUN_020169D8
+_02006CFC:
+ add r5, r0, #0x0
+ cmp r5, #0x0
+ beq _02006D10
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ blx MI_UncompressLZ8
+ add r0, r4, #0x0
+ bl FUN_02016A18
+_02006D10:
+ add r4, r5, #0x0
+_02006D12:
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02006D18
+FUN_02006D18: ; 0x02006D18
+ push {r3-r7, lr}
+ sub sp, #0x8
+ ldr r5, [sp, #0x24]
+ str r0, [sp, #0x0]
+ str r1, [sp, #0x4]
+ add r6, r2, #0x0
+ add r7, r3, #0x0
+ bl LoadFromNARC_7
+ str r0, [r5, #0x0]
+ cmp r6, #0x0
+ bne _02006D36
+ ldr r0, [sp, #0x20]
+ cmp r0, #0x1
+ bne _02006D42
+_02006D36:
+ ldr r1, [r5, #0x0]
+ add r0, r7, #0x0
+ bl FUN_020169D8
+ add r4, r0, #0x0
+ b _02006D4C
+_02006D42:
+ ldr r1, [r5, #0x0]
+ add r0, r7, #0x0
+ bl FUN_02016998
+ add r4, r0, #0x0
+_02006D4C:
+ cmp r4, #0x0
+ beq _02006D92
+ ldr r1, [sp, #0x0]
+ ldr r2, [sp, #0x4]
+ add r0, r4, #0x0
+ bl LoadFromNARC
+ cmp r6, #0x0
+ beq _02006D92
+ ldr r0, [r4, #0x0]
+ lsr r0, r0, #0x8
+ str r0, [r5, #0x0]
+ ldr r0, [sp, #0x20]
+ cmp r0, #0x0
+ bne _02006D74
+ ldr r1, [r5, #0x0]
+ add r0, r7, #0x0
+ bl FUN_02016998
+ b _02006D7C
+_02006D74:
+ ldr r1, [r5, #0x0]
+ add r0, r7, #0x0
+ bl FUN_020169D8
+_02006D7C:
+ add r5, r0, #0x0
+ cmp r5, #0x0
+ beq _02006D90
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ blx MI_UncompressLZ8
+ add r0, r4, #0x0
+ bl FUN_02016A18
+_02006D90:
+ add r4, r5, #0x0
+_02006D92:
+ add r0, r4, #0x0
+ add sp, #0x8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02006D98
+FUN_02006D98: ; 0x02006D98
+ push {r3-r7, lr}
+ sub sp, #0x10
+ mov r1, #0xba
+ lsl r1, r1, #0x2
+ add r5, r0, #0x0
+ bl FUN_02016998
+ add r4, r0, #0x0
+ mov r0, #0xa6
+ lsl r0, r0, #0x2
+ add r1, r0, #0x0
+ add r3, r0, #0x0
+ str r5, [r4, r0]
+ mov r2, #0x0
+ add r1, #0x48
+ strb r2, [r4, r1]
+ add r1, r0, #0x4
+ str r2, [r4, r1]
+ mov r1, #0x2
+ lsl r1, r1, #0xe
+ add r3, #0x8
+ str r1, [r4, r3]
+ add r3, r0, #0x0
+ add r3, #0xc
+ str r2, [r4, r3]
+ mov r2, #0x80
+ add r0, #0x10
+ str r2, [r4, r0]
+ add r0, r5, #0x0
+ bl FUN_02016998
+ mov r1, #0xab
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ add r0, r5, #0x0
+ mov r1, #0xc0
+ bl FUN_02016998
+ mov r1, #0x2b
+ lsl r1, r1, #0x4
+ str r0, [r4, r1]
+ ldr r1, [r4, r1]
+ mov r0, #0x0
+ mov r2, #0x4
+ blx MIi_CpuClearFast
+ add r0, r5, #0x0
+ mov r1, #0xc0
+ bl FUN_02016998
+ mov r1, #0xad
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ ldr r1, [r4, r1]
+ mov r0, #0x0
+ mov r2, #0x4
+ blx MIi_CpuClearFast
+ mov r6, #0x0
+ add r5, r4, #0x0
+ add r7, r6, #0x0
+_02006E12:
+ add r0, r7, #0x0
+ add r1, r5, #0x0
+ mov r2, #0x98
+ blx MIi_CpuClearFast
+ add r6, r6, #0x1
+ add r5, #0x98
+ cmp r6, #0x4
+ blt _02006E12
+ blx FUN_020B02C8
+ ldr r2, _02006EC8 ; =0x000002E3
+ mov r0, #0x0
+ strb r0, [r4, r2]
+ sub r2, #0x4b
+ ldr r2, [r4, r2]
+ mov r0, #0x75
+ mov r1, #0xd3
+ bl LoadFromNarc_2
+ add r1, sp, #0xc
+ str r0, [sp, #0x4]
+ blx FUN_020B0088
+ ldr r0, [sp, #0xc]
+ mov r1, #0xaf
+ ldr r0, [r0, #0x4]
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ ldr r0, [sp, #0xc]
+ ldr r2, [r0, #0x8]
+ add r0, r1, #0x4
+ str r2, [r4, r0]
+ ldr r0, [sp, #0xc]
+ add r1, #0x8
+ ldr r0, [r0, #0xc]
+ str r0, [r4, r1]
+ ldr r0, [sp, #0xc]
+ ldr r0, [r0, #0x14]
+ str r0, [sp, #0x8]
+ bl FUN_02008A74
+ ldr r1, [sp, #0x8]
+ mov r0, #0xab
+ lsl r0, r0, #0x2
+ mov r2, #0x2
+ ldrb r1, [r1, #0x0]
+ ldr r0, [r4, r0]
+ lsl r2, r2, #0xe
+ blx MI_CpuFill8
+ mov r0, #0x0
+ mov r7, #0xab
+ ldr r6, _02006ECC ; =0x00005050
+ mov r12, r0
+ str r0, [sp, #0x0]
+ add r3, r0, #0x0
+ lsl r7, r7, #0x2
+_02006E86:
+ ldr r2, [sp, #0x8]
+ ldr r0, [sp, #0x0]
+ mov r1, #0x0
+ add r2, r2, r0
+_02006E8E:
+ ldr r5, [r4, r7]
+ ldrb r0, [r2, #0x0]
+ add r5, r3, r5
+ add r5, r1, r5
+ add r1, r1, #0x1
+ add r2, r2, #0x1
+ strb r0, [r5, r6]
+ cmp r1, #0x28
+ blt _02006E8E
+ ldr r0, [sp, #0x0]
+ add r3, #0x80
+ add r0, #0x50
+ str r0, [sp, #0x0]
+ mov r0, r12
+ add r0, r0, #0x1
+ mov r12, r0
+ cmp r0, #0x50
+ blt _02006E86
+ ldr r0, [sp, #0x4]
+ bl FUN_02016A18
+ ldr r0, _02006ED0 ; =0x000002E1
+ mov r1, #0x1
+ strb r1, [r4, r0]
+ add r0, r0, #0x1
+ strb r1, [r4, r0]
+ add r0, r4, #0x0
+ add sp, #0x10
+ pop {r3-r7, pc}
+ .balign 4
+_02006EC8: .word 0x000002E3
+_02006ECC: .word 0x00005050
+_02006ED0: .word 0x000002E1
+
+ thumb_func_start FUN_02006ED4
+FUN_02006ED4: ; 0x02006ED4
+ push {r3-r7, lr}
+ sub sp, #0x20
+ add r5, r0, #0x0
+ bl FUN_020082A8
+ add r0, r5, #0x0
+ bl FUN_020086F4
+ blx FUN_020BB394
+ mov r6, #0x9f
+ mov r0, #0x0
+ ldr r4, _02007250 ; =0x04000444
+ lsl r6, r6, #0x2
+ str r0, [r4, #0x0]
+ str r0, [sp, #0x18]
+ add r0, r6, #0x0
+ sub r0, #0xc
+ ldr r1, [r5, r0]
+ add r3, r6, #0x0
+ ldr r2, [r5, r6]
+ add r0, r6, #0x0
+ sub r3, #0x8
+ add r6, #0x20
+ ldr r3, [r5, r3]
+ ldr r6, [r5, r6]
+ sub r0, #0x10
+ ldr r0, [r5, r0]
+ lsr r6, r6, #0x3
+ lsl r3, r3, #0x1a
+ orr r6, r3
+ mov r3, #0x1
+ lsl r3, r3, #0x1e
+ lsl r0, r0, #0x14
+ orr r3, r6
+ lsl r1, r1, #0x17
+ orr r0, r3
+ lsl r2, r2, #0x1d
+ orr r0, r1
+ orr r0, r2
+ str r0, [r4, #0x64]
+ ldr r0, [sp, #0x18]
+ add r4, r5, #0x0
+ str r0, [sp, #0x14]
+ ldr r0, _02007254 ; =0x020ECD4C
+ str r0, [sp, #0x1c]
+_02006F30:
+ ldr r0, [r4, #0x0]
+ lsl r0, r0, #0x1f
+ lsr r0, r0, #0x1f
+ beq _02006F46
+ ldr r0, [r4, #0x54]
+ lsl r1, r0, #0x1f
+ lsr r1, r1, #0x1f
+ bne _02006F46
+ lsl r0, r0, #0x14
+ lsr r0, r0, #0x1f
+ beq _02006F48
+_02006F46:
+ b _020072BC
+_02006F48:
+ ldr r2, [r4, #0x68]
+ cmp r2, #0x0
+ beq _02006F56
+ add r1, r4, #0x0
+ add r0, r4, #0x0
+ add r1, #0x24
+ blx r2
+_02006F56:
+ blx FUN_020BB394
+ ldr r0, _02007258 ; =0x000002E3
+ ldrb r0, [r5, r0]
+ cmp r0, #0x1
+ beq _02006F68
+ ldr r0, _0200725C ; =0x04000454
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+_02006F68:
+ add r0, r4, #0x0
+ bl FUN_02007F48
+ mov r0, #0x9d
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ cmp r0, #0x2
+ bne _02006F7C
+ mov r0, #0x1
+ b _02006F7E
+_02006F7C:
+ mov r0, #0x0
+_02006F7E:
+ mov r1, #0xa9
+ lsl r1, r1, #0x2
+ ldr r2, [r5, r1]
+ ldr r1, [sp, #0x14]
+ add r2, r2, r1
+ mov r1, #0x4
+ sub r0, r1, r0
+ add r1, r2, #0x0
+ lsr r1, r0
+ ldr r0, _02007260 ; =0x040004AC
+ str r1, [r0, #0x0]
+ ldr r0, [r4, #0x28]
+ lsl r1, r0, #0xc
+ mov r0, #0x26
+ ldrsh r2, [r4, r0]
+ mov r0, #0x42
+ ldrsh r0, [r4, r0]
+ add r0, r2, r0
+ mov r2, #0x24
+ ldrsh r3, [r4, r2]
+ mov r2, #0x40
+ ldrsh r2, [r4, r2]
+ lsl r0, r0, #0xc
+ add r2, r3, r2
+ lsl r3, r2, #0xc
+ ldr r2, _02007264 ; =0x04000470
+ str r3, [r2, #0x0]
+ str r0, [r2, #0x0]
+ add r0, r2, #0x0
+ str r1, [r0, #0x0]
+ ldrh r0, [r4, #0x38]
+ asr r0, r0, #0x4
+ lsl r1, r0, #0x2
+ ldr r0, _02007268 ; =0x020FFA38
+ add r2, r0, r1
+ ldrsh r0, [r0, r1]
+ mov r1, #0x2
+ ldrsh r1, [r2, r1]
+ blx FUN_020C8068
+ ldrh r0, [r4, #0x3a]
+ asr r0, r0, #0x4
+ lsl r1, r0, #0x2
+ ldr r0, _02007268 ; =0x020FFA38
+ add r2, r0, r1
+ ldrsh r0, [r0, r1]
+ mov r1, #0x2
+ ldrsh r1, [r2, r1]
+ blx FUN_020C802C
+ ldrh r0, [r4, #0x3c]
+ asr r0, r0, #0x4
+ lsl r1, r0, #0x2
+ ldr r0, _02007268 ; =0x020FFA38
+ add r2, r0, r1
+ ldrsh r0, [r0, r1]
+ mov r1, #0x2
+ ldrsh r1, [r2, r1]
+ blx FUN_020C7FF0
+ ldr r0, [r4, #0x28]
+ lsl r0, r0, #0xc
+ neg r1, r0
+ mov r0, #0x26
+ ldrsh r2, [r4, r0]
+ mov r0, #0x42
+ ldrsh r0, [r4, r0]
+ add r0, r2, r0
+ mov r2, #0x24
+ ldrsh r3, [r4, r2]
+ mov r2, #0x40
+ ldrsh r2, [r4, r2]
+ lsl r0, r0, #0xc
+ neg r0, r0
+ add r2, r3, r2
+ lsl r2, r2, #0xc
+ neg r3, r2
+ ldr r2, _02007264 ; =0x04000470
+ str r3, [r2, #0x0]
+ str r0, [r2, #0x0]
+ add r0, r2, #0x0
+ str r1, [r0, #0x0]
+ ldr r3, [r4, #0x50]
+ lsl r0, r3, #0x11
+ lsr r0, r0, #0x1b
+ lsl r2, r3, #0x16
+ lsl r1, r0, #0xa
+ lsl r0, r3, #0x1b
+ lsr r2, r2, #0x1b
+ lsr r0, r0, #0x1b
+ lsl r2, r2, #0x5
+ orr r0, r2
+ orr r0, r1
+ lsl r0, r0, #0x10
+ lsr r2, r0, #0x10
+ lsl r0, r3, #0x2
+ lsr r0, r0, #0x1b
+ lsl r1, r0, #0xa
+ lsl r0, r3, #0xc
+ lsl r3, r3, #0x7
+ lsr r3, r3, #0x1b
+ lsr r0, r0, #0x1b
+ lsl r3, r3, #0x5
+ orr r0, r3
+ orr r0, r1
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ lsl r0, r0, #0x10
+ add r1, r2, #0x0
+ orr r1, r0
+ mov r0, #0x2
+ lsl r0, r0, #0xe
+ orr r1, r0
+ ldr r0, _0200726C ; =0x040004C0
+ str r1, [r0, #0x0]
+ ldr r1, _02007270 ; =0x00004210
+ add r0, r0, #0x4
+ str r1, [r0, #0x0]
+ ldr r1, [r4, #0x0]
+ ldr r0, [r4, #0x54]
+ lsl r1, r1, #0x19
+ lsl r0, r0, #0x19
+ lsr r1, r1, #0x1a
+ lsr r0, r0, #0x1b
+ lsl r2, r1, #0x18
+ mov r1, #0xc0
+ lsl r0, r0, #0x10
+ orr r1, r2
+ orr r1, r0
+ ldr r0, _02007274 ; =0x040004A4
+ str r1, [r0, #0x0]
+ ldr r0, [r4, #0x54]
+ lsl r0, r0, #0x1e
+ lsr r0, r0, #0x1f
+ beq _02007104
+ add r0, r4, #0x0
+ add r0, #0x5b
+ ldrb r0, [r0, #0x0]
+ add r2, r4, #0x0
+ add r2, #0x44
+ lsl r1, r0, #0x4
+ ldr r0, [sp, #0x1c]
+ ldrb r3, [r2, #0x0]
+ add r0, r0, r1
+ ldr r2, [sp, #0x1c]
+ ldr r0, [r0, #0x4]
+ ldr r1, [r2, r1]
+ add r6, r3, r1
+ add r1, r4, #0x0
+ add r1, #0x46
+ ldrb r1, [r1, #0x0]
+ mov r12, r1
+ add r1, r4, #0x0
+ add r1, #0x45
+ ldrb r2, [r1, #0x0]
+ add r1, r2, r0
+ add r0, r4, #0x0
+ add r0, #0x47
+ ldrb r7, [r0, #0x0]
+ mov r0, r12
+ add r0, r0, r6
+ str r7, [sp, #0x0]
+ str r6, [sp, #0x4]
+ str r1, [sp, #0x8]
+ str r0, [sp, #0xc]
+ add r0, r7, r1
+ str r0, [sp, #0x10]
+ mov r1, #0x24
+ ldrsh r1, [r4, r1]
+ mov r0, #0x2c
+ ldrsh r0, [r4, r0]
+ sub r1, #0x28
+ add r1, r1, r3
+ add r0, r0, r1
+ mov r3, #0x26
+ ldrsh r3, [r4, r3]
+ mov r1, #0x2e
+ lsl r0, r0, #0x10
+ sub r3, #0x28
+ add r2, r3, r2
+ ldrsh r1, [r4, r1]
+ ldr r3, [r4, #0x28]
+ asr r0, r0, #0x10
+ add r2, r1, r2
+ mov r1, #0x6e
+ ldrsb r1, [r4, r1]
+ sub r1, r2, r1
+ ldr r2, [r4, #0x30]
+ lsl r1, r1, #0x10
+ add r2, r3, r2
+ asr r1, r1, #0x10
+ mov r3, r12
+ blx FUN_020B0250
+ b _02007174
+_02007104:
+ mov r0, #0x34
+ ldrsh r1, [r4, r0]
+ mov r0, #0x50
+ ldr r2, [sp, #0x1c]
+ mul r0, r1
+ asr r3, r0, #0x8
+ mov r0, #0x36
+ ldrsh r1, [r4, r0]
+ mov r0, #0x50
+ ldr r6, [sp, #0x1c]
+ mul r0, r1
+ asr r1, r0, #0x8
+ add r0, r4, #0x0
+ add r0, #0x5b
+ ldrb r0, [r0, #0x0]
+ lsl r0, r0, #0x4
+ str r1, [sp, #0x0]
+ add r2, r2, r0
+ ldr r0, [r6, r0]
+ lsr r6, r1, #0x1f
+ str r0, [sp, #0x4]
+ ldr r0, [r2, #0x4]
+ add r6, r1, r6
+ str r0, [sp, #0x8]
+ ldr r0, [r2, #0x8]
+ asr r1, r6, #0x1
+ str r0, [sp, #0xc]
+ ldr r0, [r2, #0xc]
+ str r0, [sp, #0x10]
+ mov r0, #0x24
+ ldrsh r2, [r4, r0]
+ lsr r0, r3, #0x1f
+ add r0, r3, r0
+ asr r0, r0, #0x1
+ sub r2, r2, r0
+ mov r0, #0x2c
+ ldrsh r0, [r4, r0]
+ ldr r6, [r4, #0x28]
+ add r0, r2, r0
+ mov r2, #0x26
+ ldrsh r2, [r4, r2]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ sub r2, r2, r1
+ mov r1, #0x2e
+ ldrsh r1, [r4, r1]
+ add r2, r2, r1
+ mov r1, #0x6e
+ ldrsb r1, [r4, r1]
+ sub r1, r2, r1
+ ldr r2, [r4, #0x30]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add r2, r6, r2
+ blx FUN_020B0250
+_02007174:
+ add r0, r4, #0x0
+ add r0, #0x6c
+ ldrh r0, [r0, #0x0]
+ lsl r1, r0, #0x1e
+ lsr r1, r1, #0x1e
+ beq _0200719A
+ lsl r0, r0, #0x19
+ lsr r0, r0, #0x1e
+ beq _0200719A
+ ldr r0, [r4, #0x54]
+ lsl r0, r0, #0x1e
+ lsr r0, r0, #0x1f
+ bne _0200719A
+ mov r0, #0xb9
+ lsl r0, r0, #0x2
+ ldr r1, [r5, r0]
+ mov r0, #0x1
+ tst r0, r1
+ beq _0200719C
+_0200719A:
+ b _020072BC
+_0200719C:
+ ldr r0, _02007258 ; =0x000002E3
+ ldrb r0, [r5, r0]
+ cmp r0, #0x1
+ beq _020071AA
+ ldr r0, _0200725C ; =0x04000454
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+_020071AA:
+ mov r0, #0x9d
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ cmp r0, #0x2
+ bne _020071B8
+ mov r1, #0x1
+ b _020071BA
+_020071B8:
+ mov r1, #0x0
+_020071BA:
+ add r2, r4, #0x0
+ add r2, #0x6c
+ ldrh r2, [r2, #0x0]
+ mov r0, #0xa9
+ lsl r0, r0, #0x2
+ lsl r2, r2, #0x1e
+ lsr r2, r2, #0x1e
+ add r2, r2, #0x3
+ ldr r0, [r5, r0]
+ lsl r2, r2, #0x5
+ add r2, r0, r2
+ mov r0, #0x4
+ sub r0, r0, r1
+ add r1, r2, #0x0
+ lsr r1, r0
+ ldr r0, _02007260 ; =0x040004AC
+ str r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x6c
+ ldrh r0, [r0, #0x0]
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x1f
+ beq _020071FA
+ mov r0, #0x34
+ ldrsh r0, [r4, r0]
+ lsl r0, r0, #0x6
+ asr r3, r0, #0x8
+ mov r0, #0x36
+ ldrsh r0, [r4, r0]
+ lsl r0, r0, #0x4
+ asr r1, r0, #0x8
+ b _020071FE
+_020071FA:
+ mov r3, #0x40
+ mov r1, #0x10
+_020071FE:
+ add r0, r4, #0x0
+ add r0, #0x6c
+ ldrh r0, [r0, #0x0]
+ lsl r0, r0, #0x1d
+ lsr r0, r0, #0x1f
+ beq _02007220
+ mov r0, #0x74
+ ldrsh r2, [r4, r0]
+ mov r0, #0x24
+ mov r6, #0x2c
+ ldrsh r0, [r4, r0]
+ ldrsh r6, [r4, r6]
+ add r0, r0, r6
+ add r2, r2, r0
+ add r0, r4, #0x0
+ add r0, #0x70
+ strh r2, [r0, #0x0]
+_02007220:
+ add r0, r4, #0x0
+ add r0, #0x6c
+ ldrh r0, [r0, #0x0]
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1f
+ beq _02007242
+ mov r0, #0x76
+ ldrsh r2, [r4, r0]
+ mov r0, #0x26
+ mov r6, #0x2e
+ ldrsh r0, [r4, r0]
+ ldrsh r6, [r4, r6]
+ add r0, r0, r6
+ add r2, r2, r0
+ add r0, r4, #0x0
+ add r0, #0x72
+ strh r2, [r0, #0x0]
+_02007242:
+ add r0, r4, #0x0
+ add r0, #0x6c
+ ldrh r0, [r0, #0x0]
+ ldr r2, _02007278 ; =0x020ECBD0
+ ldr r6, _02007278 ; =0x020ECBD0
+ b _0200727C
+ nop
+_02007250: .word 0x04000444
+_02007254: .word 0x020ECD4C
+_02007258: .word 0x000002E3
+_0200725C: .word 0x04000454
+_02007260: .word 0x040004AC
+_02007264: .word 0x04000470
+_02007268: .word 0x020FFA38
+_0200726C: .word 0x040004C0
+_02007270: .word 0x00004210
+_02007274: .word 0x040004A4
+_02007278: .word 0x020ECBD0
+_0200727C:
+ lsl r0, r0, #0x19
+ lsr r0, r0, #0x1e
+ lsl r0, r0, #0x4
+ str r1, [sp, #0x0]
+ add r2, r2, r0
+ ldr r0, [r6, r0]
+ lsr r6, r1, #0x1f
+ str r0, [sp, #0x4]
+ ldr r0, [r2, #0x4]
+ add r6, r1, r6
+ str r0, [sp, #0x8]
+ ldr r0, [r2, #0x8]
+ asr r1, r6, #0x1
+ str r0, [sp, #0xc]
+ ldr r0, [r2, #0xc]
+ str r0, [sp, #0x10]
+ mov r0, #0x70
+ ldrsh r2, [r4, r0]
+ lsr r0, r3, #0x1f
+ add r0, r3, r0
+ asr r0, r0, #0x1
+ sub r0, r2, r0
+ mov r2, #0x72
+ ldrsh r2, [r4, r2]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ sub r1, r2, r1
+ lsl r1, r1, #0x10
+ ldr r2, _020072E0 ; =0xFFFFFC18
+ asr r1, r1, #0x10
+ blx FUN_020B0250
+_020072BC:
+ ldr r0, [sp, #0x14]
+ add r4, #0x98
+ add r0, #0x20
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x1c]
+ add r0, #0x20
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x18]
+ add r0, r0, #0x1
+ str r0, [sp, #0x18]
+ cmp r0, #0x4
+ bge _020072D6
+ b _02006F30
+_020072D6:
+ ldr r0, _020072E4 ; =0x04000448
+ mov r1, #0x1
+ str r1, [r0, #0x0]
+ add sp, #0x20
+ pop {r3-r7, pc}
+ .balign 4
+_020072E0: .word 0xFFFFFC18
+_020072E4: .word 0x04000448
+
+ thumb_func_start FUN_020072E8
+FUN_020072E8: ; 0x020072E8
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0xab
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ mov r0, #0x2b
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ mov r0, #0xad
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02007314
+FUN_02007314: ; 0x02007314
+ push {r3-r4}
+ add r1, r0, #0x0
+ mov r3, #0x0
+ add r1, #0x59
+ strb r3, [r1, #0x0]
+ add r1, r3, #0x0
+_02007320:
+ add r2, r0, r3
+ add r2, #0x5c
+ add r3, r3, #0x1
+ strb r1, [r2, #0x0]
+ cmp r3, #0xa
+ blt _02007320
+ add r2, r0, #0x0
+ add r2, #0x59
+ ldrb r2, [r2, #0x0]
+ lsl r2, r2, #0x1
+ add r3, r0, r2
+ mov r2, #0x84
+ ldrsb r4, [r3, r2]
+ add r3, r2, #0x0
+ sub r3, #0x85
+ cmp r4, r3
+ bne _0200734A
+ add r0, #0x5b
+ strb r1, [r0, #0x0]
+ pop {r3-r4}
+ bx lr
+_0200734A:
+ add r1, r0, #0x0
+ mov r3, #0x1
+ add r1, #0x58
+ strb r3, [r1, #0x0]
+ add r1, r0, #0x0
+ add r1, #0x59
+ ldrb r1, [r1, #0x0]
+ lsl r1, r1, #0x1
+ add r1, r0, r1
+ ldrsb r2, [r1, r2]
+ add r1, r0, #0x0
+ add r1, #0x5b
+ strb r2, [r1, #0x0]
+ add r1, r0, #0x0
+ add r1, #0x59
+ ldrb r1, [r1, #0x0]
+ lsl r1, r1, #0x1
+ add r1, r0, r1
+ add r1, #0x85
+ ldrb r1, [r1, #0x0]
+ add r0, #0x5a
+ strb r1, [r0, #0x0]
+ pop {r3-r4}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0200737C
+FUN_0200737C: ; 0x0200737C
+ add r2, r0, #0x0
+ ldr r3, _0200738C ; =MI_CpuCopy8
+ add r2, #0x84
+ add r0, r1, #0x0
+ add r1, r2, #0x0
+ mov r2, #0x14
+ bx r3
+ nop
+_0200738C: .word MI_CpuCopy8
+
+ thumb_func_start FUN_02007390
+FUN_02007390: ; 0x02007390
+ add r0, #0x58
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _0200739C
+ mov r0, #0x1
+ bx lr
+_0200739C:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_020073A0
+FUN_020073A0: ; 0x020073A0
+ push {r3-r7, lr}
+ sub sp, #0x18
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ add r7, r2, #0x0
+ str r3, [sp, #0x14]
+ mov r4, #0x0
+_020073AE:
+ ldr r1, [r0, #0x0]
+ lsl r1, r1, #0x1f
+ lsr r1, r1, #0x1f
+ beq _020073BE
+ add r4, r4, #0x1
+ add r0, #0x98
+ cmp r4, #0x4
+ blt _020073AE
+_020073BE:
+ cmp r4, #0x4
+ bne _020073C6
+ bl ErrorHandling
+_020073C6:
+ ldr r0, [sp, #0x30]
+ ldr r3, [sp, #0x14]
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x34]
+ add r1, r6, #0x0
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x38]
+ str r4, [sp, #0x8]
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x3c]
+ add r2, r7, #0x0
+ str r0, [sp, #0x10]
+ add r0, r5, #0x0
+ bl FUN_020073E8
+ add sp, #0x18
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_020073E8
+FUN_020073E8: ; 0x020073E8
+ push {r4-r7, lr}
+ sub sp, #0xc
+ str r1, [sp, #0x8]
+ ldr r1, [sp, #0x28]
+ add r4, r0, #0x0
+ mov r0, #0x98
+ add r6, r1, #0x0
+ mul r6, r0
+ ldr r0, [r4, r6]
+ str r2, [sp, #0x0]
+ lsl r0, r0, #0x1f
+ str r3, [sp, #0x4]
+ lsr r0, r0, #0x1f
+ beq _02007408
+ bl ErrorHandling
+_02007408:
+ add r5, r4, r6
+ mov r0, #0x0
+ add r1, r5, #0x0
+ mov r2, #0x98
+ blx MIi_CpuClearFast
+ ldr r1, [r4, r6]
+ mov r0, #0x1
+ bic r1, r0
+ mov r0, #0x1
+ orr r0, r1
+ str r0, [r4, r6]
+ ldr r1, [r4, r6]
+ mov r0, #0x80
+ orr r0, r1
+ str r0, [r4, r6]
+ mov r0, #0x80
+ ldr r1, [r4, r6]
+ add r0, #0x80
+ orr r0, r1
+ str r0, [r4, r6]
+ add r2, r5, #0x0
+ ldr r0, [r4, r6]
+ mov r1, #0x7e
+ bic r0, r1
+ ldr r1, [sp, #0x24]
+ add r7, r2, #0x4
+ lsl r1, r1, #0x1a
+ lsr r1, r1, #0x19
+ orr r0, r1
+ str r0, [r4, r6]
+ ldr r0, [sp, #0x8]
+ mov r12, r0
+ mov r3, r12
+ ldmia r3!, {r0-r1}
+ stmia r7!, {r0-r1}
+ ldmia r3!, {r0-r1}
+ stmia r7!, {r0-r1}
+ add r7, r2, #0x0
+ ldr r3, [sp, #0x8]
+ add r7, #0x14
+ ldmia r3!, {r0-r1}
+ stmia r7!, {r0-r1}
+ str r3, [sp, #0x8]
+ ldmia r3!, {r0-r1}
+ stmia r7!, {r0-r1}
+ ldr r0, [sp, #0x0]
+ ldr r1, [sp, #0x4]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ lsl r1, r1, #0x10
+ asr r7, r1, #0x10
+ strh r0, [r2, #0x24]
+ str r3, [sp, #0x8]
+ ldr r1, [sp, #0x20]
+ strh r7, [r2, #0x26]
+ str r1, [r2, #0x28]
+ mov r1, #0x80
+ add r1, #0x80
+ strh r1, [r2, #0x34]
+ strh r1, [r2, #0x36]
+ ldr r1, [r5, #0x54]
+ mov r3, #0x7c
+ bic r1, r3
+ mov r3, #0x7c
+ orr r1, r3
+ str r1, [r5, #0x54]
+ ldr r1, [r5, #0x50]
+ mov r3, #0x1f
+ bic r1, r3
+ mov r3, #0x1f
+ orr r3, r1
+ ldr r1, _02007520 ; =0xFFFFFC1F
+ and r1, r3
+ mov r3, #0x1f
+ lsl r3, r3, #0x5
+ orr r3, r1
+ ldr r1, _02007524 ; =0xFFFF83FF
+ and r1, r3
+ mov r3, #0x1f
+ lsl r3, r3, #0xa
+ orr r3, r1
+ ldr r1, _02007528 ; =0xFFF07FFF
+ and r1, r3
+ mov r3, #0x80
+ lsl r3, r3, #0xc
+ orr r3, r1
+ ldr r1, _0200752C ; =0xFE0FFFFF
+ and r1, r3
+ mov r3, #0x80
+ lsl r3, r3, #0x11
+ orr r3, r1
+ ldr r1, _02007530 ; =0xC1FFFFFF
+ and r1, r3
+ mov r3, #0x80
+ lsl r3, r3, #0x16
+ orr r1, r3
+ str r1, [r5, #0x50]
+ ldr r1, [sp, #0x30]
+ str r1, [r2, #0x68]
+ add r1, r2, #0x0
+ add r1, #0x70
+ strh r0, [r1, #0x0]
+ add r2, #0x72
+ add r0, r5, #0x0
+ strh r7, [r2, #0x0]
+ add r0, #0x6c
+ ldrh r1, [r0, #0x0]
+ mov r0, #0x4
+ orr r1, r0
+ add r0, r5, #0x0
+ add r0, #0x6c
+ strh r1, [r0, #0x0]
+ add r0, r5, #0x0
+ add r0, #0x6c
+ ldrh r1, [r0, #0x0]
+ mov r0, #0x8
+ orr r1, r0
+ add r0, r5, #0x0
+ add r0, #0x6c
+ strh r1, [r0, #0x0]
+ add r0, r5, #0x0
+ add r0, #0x6c
+ ldrh r1, [r0, #0x0]
+ mov r0, #0x10
+ add r5, #0x6c
+ orr r0, r1
+ strh r0, [r5, #0x0]
+ ldr r0, [sp, #0x2c]
+ cmp r0, #0x0
+ beq _02007518
+ add r1, r4, r6
+ add r1, #0x84
+ mov r2, #0x14
+ blx MI_CpuCopy8
+_02007518:
+ add r0, r4, r6
+ add sp, #0xc
+ pop {r4-r7, pc}
+ nop
+_02007520: .word 0xFFFFFC1F
+_02007524: .word 0xFFFF83FF
+_02007528: .word 0xFFF07FFF
+_0200752C: .word 0xFE0FFFFF
+_02007530: .word 0xC1FFFFFF
+
+ thumb_func_start FUN_02007534
+FUN_02007534: ; 0x02007534
+ ldr r2, [r0, #0x0]
+ mov r1, #0x1
+ bic r2, r1
+ str r2, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02007540
+FUN_02007540: ; 0x02007540
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r4, #0x0
+_02007546:
+ add r0, r5, #0x0
+ bl FUN_02007534
+ add r4, r4, #0x1
+ add r5, #0x98
+ cmp r4, #0x4
+ blt _02007546
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02007558
+FUN_02007558: ; 0x02007558
+ cmp r1, #0x2e
+ bls _0200755E
+ b _02007800
+_0200755E:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0200756A: ; jump table (using 16-bit offset)
+ .short _020075C8 - _0200756A - 2; case 0
+ .short _020075CC - _0200756A - 2; case 1
+ .short _020075D0 - _0200756A - 2; case 2
+ .short _020075D4 - _0200756A - 2; case 3
+ .short _020075D8 - _0200756A - 2; case 4
+ .short _020075DC - _0200756A - 2; case 5
+ .short _020075E0 - _0200756A - 2; case 6
+ .short _020075F0 - _0200756A - 2; case 7
+ .short _020075F4 - _0200756A - 2; case 8
+ .short _020075F8 - _0200756A - 2; case 9
+ .short _020075FC - _0200756A - 2; case 10
+ .short _02007602 - _0200756A - 2; case 11
+ .short _02007608 - _0200756A - 2; case 12
+ .short _0200760C - _0200756A - 2; case 13
+ .short _02007610 - _0200756A - 2; case 14
+ .short _02007620 - _0200756A - 2; case 15
+ .short _02007626 - _0200756A - 2; case 16
+ .short _0200762C - _0200756A - 2; case 17
+ .short _02007632 - _0200756A - 2; case 18
+ .short _02007638 - _0200756A - 2; case 19
+ .short _0200763E - _0200756A - 2; case 20
+ .short _02007644 - _0200756A - 2; case 21
+ .short _0200764A - _0200756A - 2; case 22
+ .short _02007650 - _0200756A - 2; case 23
+ .short _02007660 - _0200756A - 2; case 24
+ .short _02007670 - _0200756A - 2; case 25
+ .short _02007680 - _0200756A - 2; case 26
+ .short _02007690 - _0200756A - 2; case 27
+ .short _020076A0 - _0200756A - 2; case 28
+ .short _020076B0 - _0200756A - 2; case 29
+ .short _020076C0 - _0200756A - 2; case 30
+ .short _020076DA - _0200756A - 2; case 31
+ .short _020076E8 - _0200756A - 2; case 32
+ .short _020076FA - _0200756A - 2; case 33
+ .short _0200770C - _0200756A - 2; case 34
+ .short _02007712 - _0200756A - 2; case 35
+ .short _0200772A - _0200756A - 2; case 36
+ .short _02007742 - _0200756A - 2; case 37
+ .short _02007752 - _0200756A - 2; case 38
+ .short _02007800 - _0200756A - 2; case 39
+ .short _02007758 - _0200756A - 2; case 40
+ .short _02007770 - _0200756A - 2; case 41
+ .short _02007776 - _0200756A - 2; case 42
+ .short _0200779A - _0200756A - 2; case 43
+ .short _020077B4 - _0200756A - 2; case 44
+ .short _020077CE - _0200756A - 2; case 45
+ .short _020077E8 - _0200756A - 2; case 46
+_020075C8:
+ strh r2, [r0, #0x24]
+ bx lr
+_020075CC:
+ strh r2, [r0, #0x26]
+ bx lr
+_020075D0:
+ str r2, [r0, #0x28]
+ bx lr
+_020075D4:
+ strh r2, [r0, #0x2c]
+ bx lr
+_020075D8:
+ strh r2, [r0, #0x2e]
+ bx lr
+_020075DC:
+ str r2, [r0, #0x30]
+ bx lr
+_020075E0:
+ ldr r3, [r0, #0x54]
+ mov r1, #0x1
+ bic r3, r1
+ mov r1, #0x1
+ and r1, r2
+ orr r1, r3
+ str r1, [r0, #0x54]
+ bx lr
+_020075F0:
+ strh r2, [r0, #0x38]
+ bx lr
+_020075F4:
+ strh r2, [r0, #0x3a]
+ bx lr
+_020075F8:
+ strh r2, [r0, #0x3c]
+ bx lr
+_020075FC:
+ add r0, #0x40
+ strh r2, [r0, #0x0]
+ bx lr
+_02007602:
+ add r0, #0x42
+ strh r2, [r0, #0x0]
+ bx lr
+_02007608:
+ strh r2, [r0, #0x34]
+ bx lr
+_0200760C:
+ strh r2, [r0, #0x36]
+ bx lr
+_02007610:
+ ldr r3, [r0, #0x54]
+ mov r1, #0x2
+ bic r3, r1
+ lsl r1, r2, #0x1f
+ lsr r1, r1, #0x1e
+ orr r1, r3
+ str r1, [r0, #0x54]
+ bx lr
+_02007620:
+ add r0, #0x44
+ strb r2, [r0, #0x0]
+ bx lr
+_02007626:
+ add r0, #0x45
+ strb r2, [r0, #0x0]
+ bx lr
+_0200762C:
+ add r0, #0x46
+ strb r2, [r0, #0x0]
+ bx lr
+_02007632:
+ add r0, #0x47
+ strb r2, [r0, #0x0]
+ bx lr
+_02007638:
+ add r0, #0x70
+ strh r2, [r0, #0x0]
+ bx lr
+_0200763E:
+ add r0, #0x72
+ strh r2, [r0, #0x0]
+ bx lr
+_02007644:
+ add r0, #0x74
+ strh r2, [r0, #0x0]
+ bx lr
+_0200764A:
+ add r0, #0x76
+ strh r2, [r0, #0x0]
+ bx lr
+_02007650:
+ ldr r3, [r0, #0x54]
+ mov r1, #0x7c
+ bic r3, r1
+ lsl r1, r2, #0x1b
+ lsr r1, r1, #0x19
+ orr r1, r3
+ str r1, [r0, #0x54]
+ bx lr
+_02007660:
+ ldr r3, [r0, #0x50]
+ mov r1, #0x1f
+ bic r3, r1
+ mov r1, #0x1f
+ and r1, r2
+ orr r1, r3
+ str r1, [r0, #0x50]
+ bx lr
+_02007670:
+ ldr r3, [r0, #0x50]
+ ldr r1, _02007804 ; =0xFFFFFC1F
+ and r3, r1
+ lsl r1, r2, #0x1b
+ lsr r1, r1, #0x16
+ orr r1, r3
+ str r1, [r0, #0x50]
+ bx lr
+_02007680:
+ ldr r3, [r0, #0x50]
+ ldr r1, _02007808 ; =0xFFFF83FF
+ and r3, r1
+ lsl r1, r2, #0x1b
+ lsr r1, r1, #0x11
+ orr r1, r3
+ str r1, [r0, #0x50]
+ bx lr
+_02007690:
+ ldr r3, [r0, #0x50]
+ ldr r1, _0200780C ; =0xFFF07FFF
+ and r3, r1
+ lsl r1, r2, #0x1b
+ lsr r1, r1, #0xc
+ orr r1, r3
+ str r1, [r0, #0x50]
+ bx lr
+_020076A0:
+ ldr r3, [r0, #0x50]
+ ldr r1, _02007810 ; =0xFE0FFFFF
+ and r3, r1
+ lsl r1, r2, #0x1b
+ lsr r1, r1, #0x7
+ orr r1, r3
+ str r1, [r0, #0x50]
+ bx lr
+_020076B0:
+ ldr r3, [r0, #0x50]
+ ldr r1, _02007814 ; =0xC1FFFFFF
+ and r3, r1
+ lsl r1, r2, #0x1b
+ lsr r1, r1, #0x2
+ orr r1, r3
+ str r1, [r0, #0x50]
+ bx lr
+_020076C0:
+ ldr r3, [r0, #0x54]
+ ldr r1, _02007818 ; =0xFFFFEFFF
+ and r3, r1
+ lsl r1, r2, #0x1f
+ lsr r1, r1, #0x13
+ orr r1, r3
+ str r1, [r0, #0x54]
+ mov r1, #0x1
+ ldr r2, [r0, #0x0]
+ lsl r1, r1, #0x8
+ orr r1, r2
+ str r1, [r0, #0x0]
+ bx lr
+_020076DA:
+ str r2, [r0, #0x4c]
+ mov r1, #0x1
+ ldr r2, [r0, #0x0]
+ lsl r1, r1, #0x8
+ orr r1, r2
+ str r1, [r0, #0x0]
+ bx lr
+_020076E8:
+ add r1, r0, #0x0
+ add r1, #0x48
+ strb r2, [r1, #0x0]
+ mov r1, #0x1
+ ldr r2, [r0, #0x0]
+ lsl r1, r1, #0x8
+ orr r1, r2
+ str r1, [r0, #0x0]
+ bx lr
+_020076FA:
+ add r1, r0, #0x0
+ add r1, #0x49
+ strb r2, [r1, #0x0]
+ mov r1, #0x1
+ ldr r2, [r0, #0x0]
+ lsl r1, r1, #0x8
+ orr r1, r2
+ str r1, [r0, #0x0]
+ bx lr
+_0200770C:
+ add r0, #0x4a
+ strb r2, [r0, #0x0]
+ bx lr
+_02007712:
+ ldr r3, [r0, #0x54]
+ ldr r1, _0200781C ; =0xFFFFFDFF
+ and r3, r1
+ lsl r1, r2, #0x1f
+ lsr r1, r1, #0x16
+ orr r1, r3
+ str r1, [r0, #0x54]
+ ldr r2, [r0, #0x0]
+ mov r1, #0x80
+ orr r1, r2
+ str r1, [r0, #0x0]
+ bx lr
+_0200772A:
+ ldr r3, [r0, #0x54]
+ ldr r1, _02007820 ; =0xFFFFFBFF
+ and r3, r1
+ lsl r1, r2, #0x1f
+ lsr r1, r1, #0x15
+ orr r1, r3
+ str r1, [r0, #0x54]
+ ldr r2, [r0, #0x0]
+ mov r1, #0x80
+ orr r1, r2
+ str r1, [r0, #0x0]
+ bx lr
+_02007742:
+ ldr r3, [r0, #0x54]
+ ldr r1, _02007824 ; =0xFFFFF7FF
+ and r3, r1
+ lsl r1, r2, #0x1f
+ lsr r1, r1, #0x14
+ orr r1, r3
+ str r1, [r0, #0x54]
+ bx lr
+_02007752:
+ add r0, #0x5b
+ strb r2, [r0, #0x0]
+ bx lr
+_02007758:
+ ldr r3, [r0, #0x54]
+ ldr r1, _02007828 ; =0xFFFE1FFF
+ and r3, r1
+ lsl r1, r2, #0x1c
+ lsr r1, r1, #0xf
+ orr r1, r3
+ str r1, [r0, #0x54]
+ ldr r2, [r0, #0x0]
+ mov r1, #0x80
+ orr r1, r2
+ str r1, [r0, #0x0]
+ bx lr
+_02007770:
+ add r0, #0x6e
+ strb r2, [r0, #0x0]
+ bx lr
+_02007776:
+ add r1, r0, #0x0
+ add r1, #0x6c
+ ldrh r3, [r1, #0x0]
+ mov r1, #0x3
+ bic r3, r1
+ lsl r1, r2, #0x10
+ lsr r1, r1, #0x10
+ mov r2, #0x3
+ and r1, r2
+ orr r3, r1
+ add r1, r0, #0x0
+ add r1, #0x6c
+ strh r3, [r1, #0x0]
+ ldr r1, [r0, #0x0]
+ add r2, #0xfd
+ orr r1, r2
+ str r1, [r0, #0x0]
+ bx lr
+_0200779A:
+ add r1, r0, #0x0
+ add r1, #0x6c
+ ldrh r3, [r1, #0x0]
+ mov r1, #0x4
+ add r0, #0x6c
+ bic r3, r1
+ lsl r1, r2, #0x10
+ lsr r1, r1, #0x10
+ lsl r1, r1, #0x1f
+ lsr r1, r1, #0x1d
+ orr r1, r3
+ strh r1, [r0, #0x0]
+ bx lr
+_020077B4:
+ add r1, r0, #0x0
+ add r1, #0x6c
+ ldrh r3, [r1, #0x0]
+ mov r1, #0x8
+ add r0, #0x6c
+ bic r3, r1
+ lsl r1, r2, #0x10
+ lsr r1, r1, #0x10
+ lsl r1, r1, #0x1f
+ lsr r1, r1, #0x1c
+ orr r1, r3
+ strh r1, [r0, #0x0]
+ bx lr
+_020077CE:
+ add r1, r0, #0x0
+ add r1, #0x6c
+ ldrh r3, [r1, #0x0]
+ mov r1, #0x10
+ add r0, #0x6c
+ bic r3, r1
+ lsl r1, r2, #0x10
+ lsr r1, r1, #0x10
+ lsl r1, r1, #0x1f
+ lsr r1, r1, #0x1b
+ orr r1, r3
+ strh r1, [r0, #0x0]
+ bx lr
+_020077E8:
+ add r1, r0, #0x0
+ add r1, #0x6c
+ ldrh r3, [r1, #0x0]
+ mov r1, #0x60
+ add r0, #0x6c
+ bic r3, r1
+ lsl r1, r2, #0x10
+ lsr r1, r1, #0x10
+ lsl r1, r1, #0x1e
+ lsr r1, r1, #0x19
+ orr r1, r3
+ strh r1, [r0, #0x0]
+_02007800:
+ bx lr
+ nop
+_02007804: .word 0xFFFFFC1F
+_02007808: .word 0xFFFF83FF
+_0200780C: .word 0xFFF07FFF
+_02007810: .word 0xFE0FFFFF
+_02007814: .word 0xC1FFFFFF
+_02007818: .word 0xFFFFEFFF
+_0200781C: .word 0xFFFFFDFF
+_02007820: .word 0xFFFFFBFF
+_02007824: .word 0xFFFFF7FF
+_02007828: .word 0xFFFE1FFF
+
+ thumb_func_start FUN_0200782C
+FUN_0200782C: ; 0x0200782C
+ push {r3, lr}
+ cmp r1, #0x2e
+ bls _02007834
+ b _020079D6
+_02007834:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02007840: ; jump table (using 16-bit offset)
+ .short _0200789E - _02007840 - 2; case 0
+ .short _020078A4 - _02007840 - 2; case 1
+ .short _020078AA - _02007840 - 2; case 2
+ .short _020078AE - _02007840 - 2; case 3
+ .short _020078B4 - _02007840 - 2; case 4
+ .short _020078BA - _02007840 - 2; case 5
+ .short _020078BE - _02007840 - 2; case 6
+ .short _020078C6 - _02007840 - 2; case 7
+ .short _020078CA - _02007840 - 2; case 8
+ .short _020078CE - _02007840 - 2; case 9
+ .short _020078D2 - _02007840 - 2; case 10
+ .short _020078D8 - _02007840 - 2; case 11
+ .short _020078DE - _02007840 - 2; case 12
+ .short _020078E4 - _02007840 - 2; case 13
+ .short _020078EA - _02007840 - 2; case 14
+ .short _020078F2 - _02007840 - 2; case 15
+ .short _020078F8 - _02007840 - 2; case 16
+ .short _020078FE - _02007840 - 2; case 17
+ .short _02007904 - _02007840 - 2; case 18
+ .short _0200790A - _02007840 - 2; case 19
+ .short _02007910 - _02007840 - 2; case 20
+ .short _02007916 - _02007840 - 2; case 21
+ .short _0200791C - _02007840 - 2; case 22
+ .short _02007922 - _02007840 - 2; case 23
+ .short _0200792A - _02007840 - 2; case 24
+ .short _02007932 - _02007840 - 2; case 25
+ .short _0200793A - _02007840 - 2; case 26
+ .short _02007942 - _02007840 - 2; case 27
+ .short _0200794A - _02007840 - 2; case 28
+ .short _02007952 - _02007840 - 2; case 29
+ .short _0200795A - _02007840 - 2; case 30
+ .short _02007962 - _02007840 - 2; case 31
+ .short _02007966 - _02007840 - 2; case 32
+ .short _0200796C - _02007840 - 2; case 33
+ .short _02007972 - _02007840 - 2; case 34
+ .short _02007978 - _02007840 - 2; case 35
+ .short _02007980 - _02007840 - 2; case 36
+ .short _02007988 - _02007840 - 2; case 37
+ .short _02007990 - _02007840 - 2; case 38
+ .short _020079D6 - _02007840 - 2; case 39
+ .short _02007996 - _02007840 - 2; case 40
+ .short _0200799E - _02007840 - 2; case 41
+ .short _020079A4 - _02007840 - 2; case 42
+ .short _020079AE - _02007840 - 2; case 43
+ .short _020079B8 - _02007840 - 2; case 44
+ .short _020079C2 - _02007840 - 2; case 45
+ .short _020079CC - _02007840 - 2; case 46
+_0200789E:
+ mov r1, #0x24
+ ldrsh r0, [r0, r1]
+ pop {r3, pc}
+_020078A4:
+ mov r1, #0x26
+ ldrsh r0, [r0, r1]
+ pop {r3, pc}
+_020078AA:
+ ldr r0, [r0, #0x28]
+ pop {r3, pc}
+_020078AE:
+ mov r1, #0x2c
+ ldrsh r0, [r0, r1]
+ pop {r3, pc}
+_020078B4:
+ mov r1, #0x2e
+ ldrsh r0, [r0, r1]
+ pop {r3, pc}
+_020078BA:
+ ldr r0, [r0, #0x30]
+ pop {r3, pc}
+_020078BE:
+ ldr r0, [r0, #0x54]
+ lsl r0, r0, #0x1f
+ lsr r0, r0, #0x1f
+ pop {r3, pc}
+_020078C6:
+ ldrh r0, [r0, #0x38]
+ pop {r3, pc}
+_020078CA:
+ ldrh r0, [r0, #0x3a]
+ pop {r3, pc}
+_020078CE:
+ ldrh r0, [r0, #0x3c]
+ pop {r3, pc}
+_020078D2:
+ mov r1, #0x40
+ ldrsh r0, [r0, r1]
+ pop {r3, pc}
+_020078D8:
+ mov r1, #0x42
+ ldrsh r0, [r0, r1]
+ pop {r3, pc}
+_020078DE:
+ mov r1, #0x34
+ ldrsh r0, [r0, r1]
+ pop {r3, pc}
+_020078E4:
+ mov r1, #0x36
+ ldrsh r0, [r0, r1]
+ pop {r3, pc}
+_020078EA:
+ ldr r0, [r0, #0x54]
+ lsl r0, r0, #0x1e
+ lsr r0, r0, #0x1f
+ pop {r3, pc}
+_020078F2:
+ add r0, #0x44
+ ldrb r0, [r0, #0x0]
+ pop {r3, pc}
+_020078F8:
+ add r0, #0x45
+ ldrb r0, [r0, #0x0]
+ pop {r3, pc}
+_020078FE:
+ add r0, #0x46
+ ldrb r0, [r0, #0x0]
+ pop {r3, pc}
+_02007904:
+ add r0, #0x47
+ ldrb r0, [r0, #0x0]
+ pop {r3, pc}
+_0200790A:
+ mov r1, #0x70
+ ldrsh r0, [r0, r1]
+ pop {r3, pc}
+_02007910:
+ mov r1, #0x72
+ ldrsh r0, [r0, r1]
+ pop {r3, pc}
+_02007916:
+ mov r1, #0x74
+ ldrsh r0, [r0, r1]
+ pop {r3, pc}
+_0200791C:
+ mov r1, #0x76
+ ldrsh r0, [r0, r1]
+ pop {r3, pc}
+_02007922:
+ ldr r0, [r0, #0x54]
+ lsl r0, r0, #0x19
+ lsr r0, r0, #0x1b
+ pop {r3, pc}
+_0200792A:
+ ldr r0, [r0, #0x50]
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x1b
+ pop {r3, pc}
+_02007932:
+ ldr r0, [r0, #0x50]
+ lsl r0, r0, #0x16
+ lsr r0, r0, #0x1b
+ pop {r3, pc}
+_0200793A:
+ ldr r0, [r0, #0x50]
+ lsl r0, r0, #0x11
+ lsr r0, r0, #0x1b
+ pop {r3, pc}
+_02007942:
+ ldr r0, [r0, #0x50]
+ lsl r0, r0, #0xc
+ lsr r0, r0, #0x1b
+ pop {r3, pc}
+_0200794A:
+ ldr r0, [r0, #0x50]
+ lsl r0, r0, #0x7
+ lsr r0, r0, #0x1b
+ pop {r3, pc}
+_02007952:
+ ldr r0, [r0, #0x50]
+ lsl r0, r0, #0x2
+ lsr r0, r0, #0x1b
+ pop {r3, pc}
+_0200795A:
+ ldr r0, [r0, #0x54]
+ lsl r0, r0, #0x13
+ lsr r0, r0, #0x1f
+ pop {r3, pc}
+_02007962:
+ ldr r0, [r0, #0x4c]
+ pop {r3, pc}
+_02007966:
+ add r0, #0x48
+ ldrb r0, [r0, #0x0]
+ pop {r3, pc}
+_0200796C:
+ add r0, #0x49
+ ldrb r0, [r0, #0x0]
+ pop {r3, pc}
+_02007972:
+ add r0, #0x4a
+ ldrb r0, [r0, #0x0]
+ pop {r3, pc}
+_02007978:
+ ldr r0, [r0, #0x54]
+ lsl r0, r0, #0x16
+ lsr r0, r0, #0x1f
+ pop {r3, pc}
+_02007980:
+ ldr r0, [r0, #0x54]
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x1f
+ pop {r3, pc}
+_02007988:
+ ldr r0, [r0, #0x54]
+ lsl r0, r0, #0x14
+ lsr r0, r0, #0x1f
+ pop {r3, pc}
+_02007990:
+ add r0, #0x5b
+ ldrb r0, [r0, #0x0]
+ pop {r3, pc}
+_02007996:
+ ldr r0, [r0, #0x54]
+ lsl r0, r0, #0xf
+ lsr r0, r0, #0x1c
+ pop {r3, pc}
+_0200799E:
+ mov r1, #0x6e
+ ldrsb r0, [r0, r1]
+ pop {r3, pc}
+_020079A4:
+ add r0, #0x6c
+ ldrh r0, [r0, #0x0]
+ lsl r0, r0, #0x1e
+ lsr r0, r0, #0x1e
+ pop {r3, pc}
+_020079AE:
+ add r0, #0x6c
+ ldrh r0, [r0, #0x0]
+ lsl r0, r0, #0x1d
+ lsr r0, r0, #0x1f
+ pop {r3, pc}
+_020079B8:
+ add r0, #0x6c
+ ldrh r0, [r0, #0x0]
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1f
+ pop {r3, pc}
+_020079C2:
+ add r0, #0x6c
+ ldrh r0, [r0, #0x0]
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x1f
+ pop {r3, pc}
+_020079CC:
+ add r0, #0x6c
+ ldrh r0, [r0, #0x0]
+ lsl r0, r0, #0x19
+ lsr r0, r0, #0x1e
+ pop {r3, pc}
+_020079D6:
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_020079E0
+FUN_020079E0: ; 0x020079E0
+ push {r3-r4}
+ add r3, r0, #0x0
+ add r0, r2, #0x0
+ cmp r1, #0x2e
+ bls _020079EC
+ b _02007E12
+_020079EC:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_020079F8: ; jump table (using 16-bit offset)
+ .short _02007A56 - _020079F8 - 2; case 0
+ .short _02007A62 - _020079F8 - 2; case 1
+ .short _02007A6E - _020079F8 - 2; case 2
+ .short _02007A78 - _020079F8 - 2; case 3
+ .short _02007A84 - _020079F8 - 2; case 4
+ .short _02007A90 - _020079F8 - 2; case 5
+ .short _02007A9A - _020079F8 - 2; case 6
+ .short _02007AB4 - _020079F8 - 2; case 7
+ .short _02007ABE - _020079F8 - 2; case 8
+ .short _02007AC8 - _020079F8 - 2; case 9
+ .short _02007AD2 - _020079F8 - 2; case 10
+ .short _02007AE0 - _020079F8 - 2; case 11
+ .short _02007AEE - _020079F8 - 2; case 12
+ .short _02007AFA - _020079F8 - 2; case 13
+ .short _02007B06 - _020079F8 - 2; case 14
+ .short _02007B20 - _020079F8 - 2; case 15
+ .short _02007B30 - _020079F8 - 2; case 16
+ .short _02007B40 - _020079F8 - 2; case 17
+ .short _02007B50 - _020079F8 - 2; case 18
+ .short _02007B60 - _020079F8 - 2; case 19
+ .short _02007B6E - _020079F8 - 2; case 20
+ .short _02007B7C - _020079F8 - 2; case 21
+ .short _02007B8A - _020079F8 - 2; case 22
+ .short _02007B98 - _020079F8 - 2; case 23
+ .short _02007BB2 - _020079F8 - 2; case 24
+ .short _02007BCC - _020079F8 - 2; case 25
+ .short _02007BE4 - _020079F8 - 2; case 26
+ .short _02007BFC - _020079F8 - 2; case 27
+ .short _02007C14 - _020079F8 - 2; case 28
+ .short _02007C2C - _020079F8 - 2; case 29
+ .short _02007C44 - _020079F8 - 2; case 30
+ .short _02007C66 - _020079F8 - 2; case 31
+ .short _02007C7A - _020079F8 - 2; case 32
+ .short _02007C96 - _020079F8 - 2; case 33
+ .short _02007CB2 - _020079F8 - 2; case 34
+ .short _02007CC2 - _020079F8 - 2; case 35
+ .short _02007CE2 - _020079F8 - 2; case 36
+ .short _02007D02 - _020079F8 - 2; case 37
+ .short _02007D1A - _020079F8 - 2; case 38
+ .short _02007E12 - _020079F8 - 2; case 39
+ .short _02007D2A - _020079F8 - 2; case 40
+ .short _02007D4A - _020079F8 - 2; case 41
+ .short _02007D58 - _020079F8 - 2; case 42
+ .short _02007D86 - _020079F8 - 2; case 43
+ .short _02007DAA - _020079F8 - 2; case 44
+ .short _02007DCE - _020079F8 - 2; case 45
+ .short _02007DF2 - _020079F8 - 2; case 46
+_02007A56:
+ mov r1, #0x24
+ ldrsh r1, [r3, r1]
+ add r0, r1, r0
+ strh r0, [r3, #0x24]
+ pop {r3-r4}
+ bx lr
+_02007A62:
+ mov r1, #0x26
+ ldrsh r1, [r3, r1]
+ add r0, r1, r0
+ strh r0, [r3, #0x26]
+ pop {r3-r4}
+ bx lr
+_02007A6E:
+ ldr r1, [r3, #0x28]
+ add r0, r1, r0
+ str r0, [r3, #0x28]
+ pop {r3-r4}
+ bx lr
+_02007A78:
+ mov r1, #0x2c
+ ldrsh r1, [r3, r1]
+ add r0, r1, r0
+ strh r0, [r3, #0x2c]
+ pop {r3-r4}
+ bx lr
+_02007A84:
+ mov r1, #0x2e
+ ldrsh r1, [r3, r1]
+ add r0, r1, r0
+ strh r0, [r3, #0x2e]
+ pop {r3-r4}
+ bx lr
+_02007A90:
+ ldr r1, [r3, #0x30]
+ add r0, r1, r0
+ str r0, [r3, #0x30]
+ pop {r3-r4}
+ bx lr
+_02007A9A:
+ ldr r4, [r3, #0x54]
+ mov r2, #0x1
+ add r1, r4, #0x0
+ bic r1, r2
+ lsl r2, r4, #0x1f
+ lsr r2, r2, #0x1f
+ add r2, r2, r0
+ mov r0, #0x1
+ and r0, r2
+ orr r0, r1
+ str r0, [r3, #0x54]
+ pop {r3-r4}
+ bx lr
+_02007AB4:
+ ldrh r1, [r3, #0x38]
+ add r0, r1, r0
+ strh r0, [r3, #0x38]
+ pop {r3-r4}
+ bx lr
+_02007ABE:
+ ldrh r1, [r3, #0x3a]
+ add r0, r1, r0
+ strh r0, [r3, #0x3a]
+ pop {r3-r4}
+ bx lr
+_02007AC8:
+ ldrh r1, [r3, #0x3c]
+ add r0, r1, r0
+ strh r0, [r3, #0x3c]
+ pop {r3-r4}
+ bx lr
+_02007AD2:
+ mov r1, #0x40
+ ldrsh r1, [r3, r1]
+ add r3, #0x40
+ add r0, r1, r0
+ strh r0, [r3, #0x0]
+ pop {r3-r4}
+ bx lr
+_02007AE0:
+ mov r1, #0x42
+ ldrsh r1, [r3, r1]
+ add r3, #0x42
+ add r0, r1, r0
+ strh r0, [r3, #0x0]
+ pop {r3-r4}
+ bx lr
+_02007AEE:
+ mov r1, #0x34
+ ldrsh r1, [r3, r1]
+ add r0, r1, r0
+ strh r0, [r3, #0x34]
+ pop {r3-r4}
+ bx lr
+_02007AFA:
+ mov r1, #0x36
+ ldrsh r1, [r3, r1]
+ add r0, r1, r0
+ strh r0, [r3, #0x36]
+ pop {r3-r4}
+ bx lr
+_02007B06:
+ ldr r4, [r3, #0x54]
+ mov r2, #0x2
+ add r1, r4, #0x0
+ bic r1, r2
+ lsl r2, r4, #0x1e
+ lsr r2, r2, #0x1f
+ add r0, r2, r0
+ lsl r0, r0, #0x1f
+ lsr r0, r0, #0x1e
+ orr r0, r1
+ str r0, [r3, #0x54]
+ pop {r3-r4}
+ bx lr
+_02007B20:
+ add r1, r3, #0x0
+ add r1, #0x44
+ ldrb r1, [r1, #0x0]
+ add r3, #0x44
+ add r0, r1, r0
+ strb r0, [r3, #0x0]
+ pop {r3-r4}
+ bx lr
+_02007B30:
+ add r1, r3, #0x0
+ add r1, #0x45
+ ldrb r1, [r1, #0x0]
+ add r3, #0x45
+ add r0, r1, r0
+ strb r0, [r3, #0x0]
+ pop {r3-r4}
+ bx lr
+_02007B40:
+ add r1, r3, #0x0
+ add r1, #0x46
+ ldrb r1, [r1, #0x0]
+ add r3, #0x46
+ add r0, r1, r0
+ strb r0, [r3, #0x0]
+ pop {r3-r4}
+ bx lr
+_02007B50:
+ add r1, r3, #0x0
+ add r1, #0x47
+ ldrb r1, [r1, #0x0]
+ add r3, #0x47
+ add r0, r1, r0
+ strb r0, [r3, #0x0]
+ pop {r3-r4}
+ bx lr
+_02007B60:
+ mov r1, #0x70
+ ldrsh r1, [r3, r1]
+ add r3, #0x70
+ add r0, r1, r0
+ strh r0, [r3, #0x0]
+ pop {r3-r4}
+ bx lr
+_02007B6E:
+ mov r1, #0x72
+ ldrsh r1, [r3, r1]
+ add r3, #0x72
+ add r0, r1, r0
+ strh r0, [r3, #0x0]
+ pop {r3-r4}
+ bx lr
+_02007B7C:
+ mov r1, #0x74
+ ldrsh r1, [r3, r1]
+ add r3, #0x74
+ add r0, r1, r0
+ strh r0, [r3, #0x0]
+ pop {r3-r4}
+ bx lr
+_02007B8A:
+ mov r1, #0x76
+ ldrsh r1, [r3, r1]
+ add r3, #0x76
+ add r0, r1, r0
+ strh r0, [r3, #0x0]
+ pop {r3-r4}
+ bx lr
+_02007B98:
+ ldr r4, [r3, #0x54]
+ mov r2, #0x7c
+ add r1, r4, #0x0
+ bic r1, r2
+ lsl r2, r4, #0x19
+ lsr r2, r2, #0x1b
+ add r0, r2, r0
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x19
+ orr r0, r1
+ str r0, [r3, #0x54]
+ pop {r3-r4}
+ bx lr
+_02007BB2:
+ ldr r4, [r3, #0x50]
+ mov r2, #0x1f
+ add r1, r4, #0x0
+ bic r1, r2
+ lsl r2, r4, #0x1b
+ lsr r2, r2, #0x1b
+ add r2, r2, r0
+ mov r0, #0x1f
+ and r0, r2
+ orr r0, r1
+ str r0, [r3, #0x50]
+ pop {r3-r4}
+ bx lr
+_02007BCC:
+ ldr r2, [r3, #0x50]
+ ldr r1, _02007E18 ; =0xFFFFFC1F
+ and r1, r2
+ lsl r2, r2, #0x16
+ lsr r2, r2, #0x1b
+ add r0, r2, r0
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x16
+ orr r0, r1
+ str r0, [r3, #0x50]
+ pop {r3-r4}
+ bx lr
+_02007BE4:
+ ldr r2, [r3, #0x50]
+ ldr r1, _02007E1C ; =0xFFFF83FF
+ and r1, r2
+ lsl r2, r2, #0x11
+ lsr r2, r2, #0x1b
+ add r0, r2, r0
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x11
+ orr r0, r1
+ str r0, [r3, #0x50]
+ pop {r3-r4}
+ bx lr
+_02007BFC:
+ ldr r2, [r3, #0x50]
+ ldr r1, _02007E20 ; =0xFFF07FFF
+ and r1, r2
+ lsl r2, r2, #0xc
+ lsr r2, r2, #0x1b
+ add r0, r2, r0
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0xc
+ orr r0, r1
+ str r0, [r3, #0x50]
+ pop {r3-r4}
+ bx lr
+_02007C14:
+ ldr r2, [r3, #0x50]
+ ldr r1, _02007E24 ; =0xFE0FFFFF
+ and r1, r2
+ lsl r2, r2, #0x7
+ lsr r2, r2, #0x1b
+ add r0, r2, r0
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x7
+ orr r0, r1
+ str r0, [r3, #0x50]
+ pop {r3-r4}
+ bx lr
+_02007C2C:
+ ldr r2, [r3, #0x50]
+ ldr r1, _02007E28 ; =0xC1FFFFFF
+ and r1, r2
+ lsl r2, r2, #0x2
+ lsr r2, r2, #0x1b
+ add r0, r2, r0
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x2
+ orr r0, r1
+ str r0, [r3, #0x50]
+ pop {r3-r4}
+ bx lr
+_02007C44:
+ ldr r2, [r3, #0x54]
+ ldr r1, _02007E2C ; =0xFFFFEFFF
+ and r1, r2
+ lsl r2, r2, #0x13
+ lsr r2, r2, #0x1f
+ add r0, r2, r0
+ lsl r0, r0, #0x1f
+ lsr r0, r0, #0x13
+ orr r0, r1
+ str r0, [r3, #0x54]
+ mov r0, #0x1
+ ldr r1, [r3, #0x0]
+ lsl r0, r0, #0x8
+ orr r0, r1
+ str r0, [r3, #0x0]
+ pop {r3-r4}
+ bx lr
+_02007C66:
+ ldr r1, [r3, #0x4c]
+ add r0, r1, r0
+ str r0, [r3, #0x4c]
+ mov r0, #0x1
+ ldr r1, [r3, #0x0]
+ lsl r0, r0, #0x8
+ orr r0, r1
+ str r0, [r3, #0x0]
+ pop {r3-r4}
+ bx lr
+_02007C7A:
+ add r1, r3, #0x0
+ add r1, #0x48
+ ldrb r1, [r1, #0x0]
+ add r1, r1, r0
+ add r0, r3, #0x0
+ add r0, #0x48
+ strb r1, [r0, #0x0]
+ mov r0, #0x1
+ ldr r1, [r3, #0x0]
+ lsl r0, r0, #0x8
+ orr r0, r1
+ str r0, [r3, #0x0]
+ pop {r3-r4}
+ bx lr
+_02007C96:
+ add r1, r3, #0x0
+ add r1, #0x49
+ ldrb r1, [r1, #0x0]
+ add r1, r1, r0
+ add r0, r3, #0x0
+ add r0, #0x49
+ strb r1, [r0, #0x0]
+ mov r0, #0x1
+ ldr r1, [r3, #0x0]
+ lsl r0, r0, #0x8
+ orr r0, r1
+ str r0, [r3, #0x0]
+ pop {r3-r4}
+ bx lr
+_02007CB2:
+ add r1, r3, #0x0
+ add r1, #0x4a
+ ldrb r1, [r1, #0x0]
+ add r3, #0x4a
+ add r0, r1, r0
+ strb r0, [r3, #0x0]
+ pop {r3-r4}
+ bx lr
+_02007CC2:
+ ldr r2, [r3, #0x54]
+ ldr r1, _02007E30 ; =0xFFFFFDFF
+ and r1, r2
+ lsl r2, r2, #0x16
+ lsr r2, r2, #0x1f
+ add r0, r2, r0
+ lsl r0, r0, #0x1f
+ lsr r0, r0, #0x16
+ orr r0, r1
+ str r0, [r3, #0x54]
+ ldr r1, [r3, #0x0]
+ mov r0, #0x80
+ orr r0, r1
+ str r0, [r3, #0x0]
+ pop {r3-r4}
+ bx lr
+_02007CE2:
+ ldr r2, [r3, #0x54]
+ ldr r1, _02007E34 ; =0xFFFFFBFF
+ and r1, r2
+ lsl r2, r2, #0x15
+ lsr r2, r2, #0x1f
+ add r0, r2, r0
+ lsl r0, r0, #0x1f
+ lsr r0, r0, #0x15
+ orr r0, r1
+ str r0, [r3, #0x54]
+ ldr r1, [r3, #0x0]
+ mov r0, #0x80
+ orr r0, r1
+ str r0, [r3, #0x0]
+ pop {r3-r4}
+ bx lr
+_02007D02:
+ ldr r2, [r3, #0x54]
+ ldr r1, _02007E38 ; =0xFFFFF7FF
+ and r1, r2
+ lsl r2, r2, #0x14
+ lsr r2, r2, #0x1f
+ add r0, r2, r0
+ lsl r0, r0, #0x1f
+ lsr r0, r0, #0x14
+ orr r0, r1
+ str r0, [r3, #0x54]
+ pop {r3-r4}
+ bx lr
+_02007D1A:
+ add r1, r3, #0x0
+ add r1, #0x5b
+ ldrb r1, [r1, #0x0]
+ add r3, #0x5b
+ add r0, r1, r0
+ strb r0, [r3, #0x0]
+ pop {r3-r4}
+ bx lr
+_02007D2A:
+ ldr r2, [r3, #0x54]
+ ldr r1, _02007E3C ; =0xFFFE1FFF
+ and r1, r2
+ lsl r2, r2, #0xf
+ lsr r2, r2, #0x1c
+ add r0, r2, r0
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0xf
+ orr r0, r1
+ str r0, [r3, #0x54]
+ ldr r1, [r3, #0x0]
+ mov r0, #0x80
+ orr r0, r1
+ str r0, [r3, #0x0]
+ pop {r3-r4}
+ bx lr
+_02007D4A:
+ mov r1, #0x6e
+ ldrsb r1, [r3, r1]
+ add r3, #0x6e
+ add r0, r1, r0
+ strb r0, [r3, #0x0]
+ pop {r3-r4}
+ bx lr
+_02007D58:
+ add r1, r3, #0x0
+ add r1, #0x6c
+ ldrh r4, [r1, #0x0]
+ mov r2, #0x3
+ add r1, r4, #0x0
+ bic r1, r2
+ lsl r2, r4, #0x1e
+ lsr r2, r2, #0x1e
+ add r0, r2, r0
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ mov r2, #0x3
+ and r0, r2
+ orr r1, r0
+ add r0, r3, #0x0
+ add r0, #0x6c
+ strh r1, [r0, #0x0]
+ ldr r0, [r3, #0x0]
+ add r2, #0xfd
+ orr r0, r2
+ str r0, [r3, #0x0]
+ pop {r3-r4}
+ bx lr
+_02007D86:
+ add r1, r3, #0x0
+ add r1, #0x6c
+ ldrh r4, [r1, #0x0]
+ mov r2, #0x4
+ add r3, #0x6c
+ add r1, r4, #0x0
+ bic r1, r2
+ lsl r2, r4, #0x1d
+ lsr r2, r2, #0x1f
+ add r0, r2, r0
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ lsl r0, r0, #0x1f
+ lsr r0, r0, #0x1d
+ orr r0, r1
+ strh r0, [r3, #0x0]
+ pop {r3-r4}
+ bx lr
+_02007DAA:
+ add r1, r3, #0x0
+ add r1, #0x6c
+ ldrh r4, [r1, #0x0]
+ mov r2, #0x8
+ add r3, #0x6c
+ add r1, r4, #0x0
+ bic r1, r2
+ lsl r2, r4, #0x1c
+ lsr r2, r2, #0x1f
+ add r0, r2, r0
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ lsl r0, r0, #0x1f
+ lsr r0, r0, #0x1c
+ orr r0, r1
+ strh r0, [r3, #0x0]
+ pop {r3-r4}
+ bx lr
+_02007DCE:
+ add r1, r3, #0x0
+ add r1, #0x6c
+ ldrh r4, [r1, #0x0]
+ mov r2, #0x10
+ add r3, #0x6c
+ add r1, r4, #0x0
+ bic r1, r2
+ lsl r2, r4, #0x1b
+ lsr r2, r2, #0x1f
+ add r0, r2, r0
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ lsl r0, r0, #0x1f
+ lsr r0, r0, #0x1b
+ orr r0, r1
+ strh r0, [r3, #0x0]
+ pop {r3-r4}
+ bx lr
+_02007DF2:
+ add r1, r3, #0x0
+ add r1, #0x6c
+ ldrh r4, [r1, #0x0]
+ mov r2, #0x60
+ add r3, #0x6c
+ add r1, r4, #0x0
+ bic r1, r2
+ lsl r2, r4, #0x19
+ lsr r2, r2, #0x1e
+ add r0, r2, r0
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ lsl r0, r0, #0x1e
+ lsr r0, r0, #0x19
+ orr r0, r1
+ strh r0, [r3, #0x0]
+_02007E12:
+ pop {r3-r4}
+ bx lr
+ nop
+_02007E18: .word 0xFFFFFC1F
+_02007E1C: .word 0xFFFF83FF
+_02007E20: .word 0xFFF07FFF
+_02007E24: .word 0xFE0FFFFF
+_02007E28: .word 0xC1FFFFFF
+_02007E2C: .word 0xFFFFEFFF
+_02007E30: .word 0xFFFFFDFF
+_02007E34: .word 0xFFFFFBFF
+_02007E38: .word 0xFFFFF7FF
+_02007E3C: .word 0xFFFE1FFF
+
+ thumb_func_start FUN_02007E40
+FUN_02007E40: ; 0x02007E40
+ push {r4-r5}
+ ldr r5, [r0, #0x54]
+ mov r4, #0x2
+ orr r4, r5
+ str r4, [r0, #0x54]
+ add r4, r0, #0x0
+ add r4, #0x44
+ strb r1, [r4, #0x0]
+ add r1, r0, #0x0
+ add r1, #0x45
+ strb r2, [r1, #0x0]
+ add r1, r0, #0x0
+ add r1, #0x46
+ strb r3, [r1, #0x0]
+ ldr r1, [sp, #0x8]
+ add r0, #0x47
+ strb r1, [r0, #0x0]
+ pop {r4-r5}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02007E68
+FUN_02007E68: ; 0x02007E68
+ push {r4-r5}
+ mov r4, #0x1
+ ldr r5, [r0, #0x54]
+ lsl r4, r4, #0xc
+ orr r4, r5
+ str r4, [r0, #0x54]
+ add r4, r0, #0x0
+ add r4, #0x48
+ strb r1, [r4, #0x0]
+ add r1, r0, #0x0
+ add r1, #0x49
+ strb r2, [r1, #0x0]
+ add r1, r0, #0x0
+ mov r2, #0x0
+ add r1, #0x4a
+ strb r2, [r1, #0x0]
+ add r1, r0, #0x0
+ add r1, #0x4b
+ strb r3, [r1, #0x0]
+ ldr r1, [sp, #0x8]
+ str r1, [r0, #0x4c]
+ pop {r4-r5}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02007E98
+FUN_02007E98: ; 0x02007E98
+ push {r4-r7}
+ add r4, r0, #0x0
+ add r0, r1, #0x0
+ add r5, r2, #0x0
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ lsl r0, r5, #0x18
+ lsr r5, r0, #0x18
+ lsl r0, r3, #0x18
+ ldr r2, [sp, #0x10]
+ mov r1, #0x0
+ lsr r0, r0, #0x18
+_02007EB0:
+ ldr r3, [r4, #0x0]
+ lsl r3, r3, #0x1f
+ lsr r3, r3, #0x1f
+ beq _02007EDE
+ mov r3, #0x1
+ ldr r7, [r4, #0x54]
+ lsl r3, r3, #0xc
+ orr r3, r7
+ str r3, [r4, #0x54]
+ add r3, r4, #0x0
+ add r3, #0x48
+ strb r6, [r3, #0x0]
+ add r3, r4, #0x0
+ add r3, #0x49
+ add r7, r4, #0x0
+ strb r5, [r3, #0x0]
+ add r7, #0x4a
+ mov r3, #0x0
+ strb r3, [r7, #0x0]
+ add r3, r4, #0x0
+ add r3, #0x4b
+ strb r0, [r3, #0x0]
+ str r2, [r4, #0x4c]
+_02007EDE:
+ add r1, r1, #0x1
+ add r4, #0x98
+ cmp r1, #0x4
+ blt _02007EB0
+ pop {r4-r7}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02007EEC
+FUN_02007EEC: ; 0x02007EEC
+ ldr r2, [r0, #0x54]
+ ldr r1, _02007F1C ; =0xFFFFEFFF
+ and r1, r2
+ str r1, [r0, #0x54]
+ add r1, r0, #0x0
+ mov r2, #0x0
+ add r1, #0x48
+ strb r2, [r1, #0x0]
+ add r1, r0, #0x0
+ add r1, #0x49
+ strb r2, [r1, #0x0]
+ add r1, r0, #0x0
+ add r1, #0x4a
+ strb r2, [r1, #0x0]
+ add r1, r0, #0x0
+ add r1, #0x4b
+ strb r2, [r1, #0x0]
+ str r2, [r0, #0x4c]
+ mov r1, #0x1
+ ldr r2, [r0, #0x0]
+ lsl r1, r1, #0x8
+ orr r1, r2
+ str r1, [r0, #0x0]
+ bx lr
+ .balign 4
+_02007F1C: .word 0xFFFFEFFF
+
+ thumb_func_start FUN_02007F20
+FUN_02007F20: ; 0x02007F20
+ ldr r0, [r0, #0x54]
+ lsl r0, r0, #0x13
+ lsr r0, r0, #0x1f
+ cmp r0, #0x1
+ bne _02007F2E
+ mov r0, #0x1
+ bx lr
+_02007F2E:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02007F34
+FUN_02007F34: ; 0x02007F34
+ mov r2, #0x28
+ sub r2, r2, r1
+ mov r1, #0x36
+ ldrsh r1, [r0, r1]
+ mul r1, r2
+ asr r1, r1, #0x8
+ sub r1, r2, r1
+ strh r1, [r0, #0x2e]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02007F48
+FUN_02007F48: ; 0x02007F48
+ push {r4-r7}
+ add r1, r0, #0x0
+ add r1, #0x58
+ ldrb r1, [r1, #0x0]
+ add r6, r0, #0x0
+ add r6, #0x59
+ cmp r1, #0x0
+ beq _0200800A
+ add r1, r0, #0x0
+ add r1, #0x5a
+ ldrb r1, [r1, #0x0]
+ cmp r1, #0x0
+ bne _02007FFE
+ ldrb r1, [r6, #0x0]
+ add r1, r1, #0x1
+ strb r1, [r6, #0x0]
+ ldrb r3, [r6, #0x0]
+ mov r1, #0x84
+ lsl r4, r3, #0x1
+ add r2, r0, r4
+ ldrsb r2, [r2, r1]
+ sub r1, #0x85
+ cmp r2, r1
+ bge _02007FC6
+ mov r2, #0x0
+ sub r1, r2, #0x2
+_02007F7C:
+ add r4, r0, r3
+ add r4, #0x5c
+ ldrb r4, [r4, #0x0]
+ add r3, r0, r3
+ add r3, #0x5c
+ add r4, r4, #0x1
+ strb r4, [r3, #0x0]
+ ldrb r5, [r6, #0x0]
+ lsl r3, r5, #0x1
+ add r4, r0, r3
+ add r3, r4, #0x0
+ add r7, r0, r5
+ add r3, #0x85
+ add r7, #0x5c
+ ldrb r3, [r3, #0x0]
+ ldrb r7, [r7, #0x0]
+ cmp r3, r7
+ beq _02007FA4
+ cmp r3, #0x0
+ bne _02007FAE
+_02007FA4:
+ add r3, r0, r5
+ add r3, #0x5c
+ strb r2, [r3, #0x0]
+ add r6, r6, #0x1
+ b _02007FB6
+_02007FAE:
+ mov r3, #0x84
+ ldrsb r3, [r4, r3]
+ sub r3, r1, r3
+ strb r3, [r6, #0x0]
+_02007FB6:
+ ldrb r3, [r6, #0x0]
+ mov r5, #0x84
+ lsl r4, r3, #0x1
+ add r7, r0, r4
+ ldrsb r7, [r7, r5]
+ sub r5, #0x85
+ cmp r7, r5
+ blt _02007F7C
+_02007FC6:
+ add r2, r0, r4
+ mov r1, #0x84
+ ldrsb r2, [r2, r1]
+ sub r1, #0x85
+ cmp r2, r1
+ beq _02007FD6
+ cmp r3, #0xa
+ blo _02007FE6
+_02007FD6:
+ add r1, r0, #0x0
+ mov r2, #0x0
+ add r1, #0x5b
+ strb r2, [r1, #0x0]
+ add r0, #0x58
+ strb r2, [r0, #0x0]
+ pop {r4-r7}
+ bx lr
+_02007FE6:
+ add r1, r0, #0x0
+ add r1, #0x5b
+ strb r2, [r1, #0x0]
+ ldrb r1, [r6, #0x0]
+ lsl r1, r1, #0x1
+ add r1, r0, r1
+ add r1, #0x85
+ ldrb r1, [r1, #0x0]
+ add r0, #0x5a
+ strb r1, [r0, #0x0]
+ pop {r4-r7}
+ bx lr
+_02007FFE:
+ add r1, r0, #0x0
+ add r1, #0x5a
+ ldrb r1, [r1, #0x0]
+ add r0, #0x5a
+ sub r1, r1, #0x1
+ strb r1, [r0, #0x0]
+_0200800A:
+ pop {r4-r7}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02008010
+FUN_02008010: ; 0x02008010
+ mov r2, #0x1
+ strb r2, [r0, #0x0]
+ mov r3, #0x0
+ strb r3, [r0, #0x2]
+ ldrsb r2, [r1, r3]
+ strb r2, [r0, #0x1]
+ ldrb r2, [r1, #0x1]
+ strb r2, [r0, #0x3]
+ str r1, [r0, #0x10]
+ add r2, r3, #0x0
+_02008024:
+ add r1, r0, r3
+ add r3, r3, #0x1
+ strb r2, [r1, #0x4]
+ cmp r3, #0xa
+ blt _02008024
+ bx lr
+
+ thumb_func_start FUN_02008030
+FUN_02008030: ; 0x02008030
+ push {r4-r7}
+ ldrb r1, [r0, #0x0]
+ cmp r1, #0x0
+ beq _020080C6
+ add r3, r0, #0x2
+ ldr r4, [r0, #0x10]
+ cmp r1, #0x0
+ beq _020080C0
+ ldrb r1, [r0, #0x3]
+ cmp r1, #0x0
+ bne _020080BC
+ ldrb r1, [r3, #0x0]
+ add r1, r1, #0x1
+ strb r1, [r3, #0x0]
+ ldrb r2, [r3, #0x0]
+ mov r1, #0x0
+ mvn r1, r1
+ lsl r5, r2, #0x1
+ ldrsb r6, [r4, r5]
+ cmp r6, r1
+ bge _02008098
+ mov r1, #0x0
+_0200805C:
+ add r5, r0, r2
+ ldrb r2, [r5, #0x4]
+ add r2, r2, #0x1
+ strb r2, [r5, #0x4]
+ ldrb r2, [r3, #0x0]
+ add r5, r0, r2
+ lsl r2, r2, #0x1
+ add r2, r4, r2
+ ldrb r7, [r2, #0x1]
+ ldrb r6, [r5, #0x4]
+ cmp r7, r6
+ beq _02008078
+ cmp r7, #0x0
+ bne _0200807E
+_02008078:
+ strb r1, [r5, #0x4]
+ add r3, r3, #0x1
+ b _0200808A
+_0200807E:
+ mov r5, #0x0
+ ldrsb r5, [r2, r5]
+ mov r2, #0x1
+ mvn r2, r2
+ sub r2, r2, r5
+ strb r2, [r3, #0x0]
+_0200808A:
+ ldrb r2, [r3, #0x0]
+ mov r6, #0x0
+ mvn r6, r6
+ lsl r5, r2, #0x1
+ ldrsb r7, [r4, r5]
+ cmp r7, r6
+ blt _0200805C
+_02008098:
+ ldrsb r5, [r4, r5]
+ mov r1, #0x0
+ mvn r1, r1
+ cmp r5, r1
+ beq _020080A6
+ cmp r2, #0xa
+ blo _020080AE
+_020080A6:
+ mov r1, #0x0
+ strb r1, [r0, #0x1]
+ strb r1, [r0, #0x0]
+ b _020080C0
+_020080AE:
+ strb r5, [r0, #0x1]
+ ldrb r1, [r3, #0x0]
+ lsl r1, r1, #0x1
+ add r1, r4, r1
+ ldrb r1, [r1, #0x1]
+ strb r1, [r0, #0x3]
+ b _020080C0
+_020080BC:
+ sub r1, r1, #0x1
+ strb r1, [r0, #0x3]
+_020080C0:
+ ldrb r0, [r0, #0x1]
+ pop {r4-r7}
+ bx lr
+_020080C6:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4-r7}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020080D0
+FUN_020080D0: ; 0x020080D0
+ ldr r2, [r0, #0x0]
+ mov r1, #0x80
+ orr r2, r1
+ add r1, #0x80
+ orr r1, r2
+ str r1, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020080E0
+FUN_020080E0: ; 0x020080E0
+ push {r3-r4}
+ add r2, r0, #0x0
+ add r3, r2, #0x0
+ add r4, r2, #0x4
+ add r3, #0x14
+ ldmia r4!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldmia r4!, {r0-r1}
+ stmia r3!, {r0-r1}
+ add r0, r2, #0x0
+ add r0, #0x6c
+ ldrh r1, [r0, #0x0]
+ add r0, r2, #0x0
+ add r0, #0x78
+ strh r1, [r0, #0x0]
+ add r0, r2, #0x0
+ add r0, #0x6e
+ ldrh r1, [r0, #0x0]
+ add r0, r2, #0x0
+ add r0, #0x7a
+ strh r1, [r0, #0x0]
+ add r0, r2, #0x0
+ add r0, #0x70
+ ldrh r1, [r0, #0x0]
+ add r0, r2, #0x0
+ add r0, #0x7c
+ strh r1, [r0, #0x0]
+ add r0, r2, #0x0
+ add r0, #0x72
+ ldrh r1, [r0, #0x0]
+ add r0, r2, #0x0
+ add r0, #0x7e
+ strh r1, [r0, #0x0]
+ add r0, r2, #0x0
+ add r0, #0x74
+ ldrh r1, [r0, #0x0]
+ add r0, r2, #0x0
+ add r0, #0x80
+ strh r1, [r0, #0x0]
+ add r0, r2, #0x0
+ add r0, #0x76
+ ldrh r0, [r0, #0x0]
+ add r2, #0x82
+ strh r0, [r2, #0x0]
+ pop {r3-r4}
+ bx lr
+
+ thumb_func_start FUN_0200813C
+FUN_0200813C: ; 0x0200813C
+ push {r3-r4}
+ add r2, r0, #0x0
+ add r4, r2, #0x0
+ add r4, #0x14
+ add r3, r2, #0x4
+ ldmia r4!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldmia r4!, {r0-r1}
+ stmia r3!, {r0-r1}
+ add r0, r2, #0x0
+ add r0, #0x78
+ ldrh r1, [r0, #0x0]
+ add r0, r2, #0x0
+ add r0, #0x6c
+ strh r1, [r0, #0x0]
+ add r0, r2, #0x0
+ add r0, #0x7a
+ ldrh r1, [r0, #0x0]
+ add r0, r2, #0x0
+ add r0, #0x6e
+ strh r1, [r0, #0x0]
+ add r0, r2, #0x0
+ add r0, #0x7c
+ ldrh r1, [r0, #0x0]
+ add r0, r2, #0x0
+ add r0, #0x70
+ strh r1, [r0, #0x0]
+ add r0, r2, #0x0
+ add r0, #0x7e
+ ldrh r1, [r0, #0x0]
+ add r0, r2, #0x0
+ add r0, #0x72
+ strh r1, [r0, #0x0]
+ add r0, r2, #0x0
+ add r0, #0x80
+ ldrh r1, [r0, #0x0]
+ add r0, r2, #0x0
+ add r0, #0x74
+ strh r1, [r0, #0x0]
+ add r0, r2, #0x0
+ add r0, #0x82
+ ldrh r1, [r0, #0x0]
+ add r0, r2, #0x0
+ add r0, #0x76
+ strh r1, [r0, #0x0]
+ ldr r1, [r2, #0x0]
+ mov r0, #0x80
+ orr r1, r0
+ add r0, #0x80
+ orr r0, r1
+ str r0, [r2, #0x0]
+ pop {r3-r4}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020081A8
+FUN_020081A8: ; 0x020081A8
+ mov r3, #0xa7
+ lsl r3, r3, #0x2
+ str r1, [r0, r3]
+ add r1, r3, #0x4
+ str r2, [r0, r1]
+ bx lr
+
+ thumb_func_start FUN_020081B4
+FUN_020081B4: ; 0x020081B4
+ mov r3, #0xa9
+ lsl r3, r3, #0x2
+ str r1, [r0, r3]
+ add r1, r3, #0x4
+ str r2, [r0, r1]
+ bx lr
+
+ thumb_func_start FUN_020081C0
+FUN_020081C0: ; 0x020081C0
+ add r0, r0, #0x4
+ bx lr
+
+ thumb_func_start FUN_020081C4
+FUN_020081C4: ; 0x020081C4
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _02008254 ; =0x000002E1
+ ldrb r1, [r4, r0]
+ cmp r1, #0x0
+ beq _02008212
+ mov r1, #0x0
+ strb r1, [r4, r0]
+ sub r0, #0x81
+ add r0, r4, r0
+ blx FUN_020B1A24
+ mov r3, #0xae
+ lsl r3, r3, #0x2
+ mov r1, #0x20
+ strh r1, [r4, r3]
+ add r0, r3, #0x2
+ strh r1, [r4, r0]
+ add r0, r3, #0x0
+ sub r0, #0x18
+ ldr r1, [r4, r0]
+ add r0, r3, #0x0
+ add r0, #0x10
+ str r1, [r4, r0]
+ add r0, r3, #0x0
+ sub r0, #0xc
+ ldr r1, [r4, r0]
+ add r0, r3, #0x0
+ add r0, #0x14
+ str r1, [r4, r0]
+ add r1, r3, #0x0
+ sub r1, #0x1c
+ add r0, r4, r3
+ sub r3, #0x58
+ ldr r1, [r4, r1]
+ mov r2, #0x0
+ add r3, r4, r3
+ blx FUN_020B1528
+_02008212:
+ ldr r0, _02008258 ; =0x000002E2
+ ldrb r1, [r4, r0]
+ cmp r1, #0x0
+ beq _02008252
+ mov r1, #0x0
+ strb r1, [r4, r0]
+ sub r0, #0x5e
+ add r0, r4, r0
+ blx FUN_020B19DC
+ mov r3, #0xaa
+ lsl r3, r3, #0x2
+ add r0, r3, #0x0
+ ldr r1, [r4, r3]
+ add r0, #0x30
+ str r1, [r4, r0]
+ add r0, r3, #0x0
+ add r0, #0x8
+ ldr r1, [r4, r0]
+ add r0, r3, #0x0
+ add r0, #0x34
+ str r1, [r4, r0]
+ add r0, r3, #0x0
+ sub r1, r3, #0x4
+ add r0, #0x28
+ sub r3, #0x24
+ ldr r1, [r4, r1]
+ add r0, r4, r0
+ mov r2, #0x0
+ add r3, r4, r3
+ blx FUN_020B1240
+_02008252:
+ pop {r4, pc}
+ .balign 4
+_02008254: .word 0x000002E1
+_02008258: .word 0x000002E2
+
+ thumb_func_start FUN_0200825C
+FUN_0200825C: ; 0x0200825C
+ ldr r2, _02008264 ; =0x000002E3
+ strb r1, [r0, r2]
+ bx lr
+ nop
+_02008264: .word 0x000002E3
+
+ thumb_func_start FUN_02008268
+FUN_02008268: ; 0x02008268
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _02008272
+ bl ErrorHandling
+_02008272:
+ ldr r0, [r4, #0x0]
+ lsl r0, r0, #0x1f
+ lsr r0, r0, #0x1f
+ beq _0200827E
+ mov r0, #0x1
+ pop {r4, pc}
+_0200827E:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02008284
+FUN_02008284: ; 0x02008284
+ mov r2, #0xb9
+ lsl r2, r2, #0x2
+ ldr r3, [r0, r2]
+ orr r1, r3
+ str r1, [r0, r2]
+ bx lr
+
+ thumb_func_start FUN_02008290
+FUN_02008290: ; 0x02008290
+ push {r3-r4}
+ mov r3, #0xb9
+ lsl r3, r3, #0x2
+ mov r2, #0x0
+ mvn r2, r2
+ ldr r4, [r0, r3]
+ eor r1, r2
+ and r1, r4
+ str r1, [r0, r3]
+ pop {r3-r4}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020082A8
+FUN_020082A8: ; 0x020082A8
+ push {r4-r7, lr}
+ sub sp, #0x5c
+ add r6, r0, #0x0
+ mov r0, #0x0
+ str r0, [sp, #0x48]
+ str r0, [sp, #0x54]
+ ldr r0, [sp, #0x48]
+ str r6, [sp, #0x44]
+ str r0, [sp, #0x38]
+_020082BA:
+ ldr r0, [sp, #0x44]
+ ldr r1, [r0, #0x0]
+ lsl r0, r1, #0x1f
+ lsr r0, r0, #0x1f
+ beq _020082CA
+ lsl r0, r1, #0x18
+ lsr r0, r0, #0x1f
+ bne _020082CC
+_020082CA:
+ b _020086C2
+_020082CC:
+ mov r0, #0x80
+ bic r1, r0
+ ldr r0, [sp, #0x44]
+ mov r2, #0xa6
+ str r1, [r0, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x48]
+ ldr r0, [sp, #0x44]
+ ldr r1, [sp, #0x44]
+ lsl r2, r2, #0x2
+ ldrh r0, [r0, #0x4]
+ ldrh r1, [r1, #0x6]
+ ldr r2, [r6, r2]
+ bl LoadFromNarc_2
+ add r1, sp, #0x58
+ str r0, [sp, #0x4c]
+ blx FUN_020B0088
+ ldr r0, [sp, #0x58]
+ mov r1, #0xaf
+ ldr r0, [r0, #0x4]
+ lsl r1, r1, #0x2
+ str r0, [r6, r1]
+ ldr r0, [sp, #0x58]
+ ldr r2, [r0, #0x8]
+ add r0, r1, #0x4
+ str r2, [r6, r0]
+ ldr r0, [sp, #0x58]
+ add r1, #0x8
+ ldr r0, [r0, #0xc]
+ str r0, [r6, r1]
+ ldr r0, [sp, #0x58]
+ ldr r0, [r0, #0x14]
+ str r0, [sp, #0x50]
+ bl FUN_02008A74
+ ldr r0, [sp, #0x44]
+ ldr r1, [sp, #0x50]
+ bl FUN_020088EC
+ ldr r0, [sp, #0x54]
+ cmp r0, #0x3
+ beq _02008326
+ b _02008554
+_02008326:
+ mov r5, #0x0
+ add r0, r5, #0x0
+ str r5, [sp, #0x14]
+ str r0, [sp, #0x24]
+_0200832E:
+ ldr r0, [sp, #0x14]
+ mov r1, #0x4f
+ sub r2, r1, r0
+ mov r0, #0x50
+ add r1, r2, #0x0
+ mul r1, r0
+ ldr r0, [sp, #0x50]
+ mov r4, #0x0
+ add r0, r0, r1
+ str r0, [sp, #0x20]
+ ldr r1, [sp, #0x50]
+ ldr r0, [sp, #0x24]
+ add r7, r1, r0
+ ldr r0, [sp, #0x20]
+ str r7, [sp, #0x18]
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x14]
+ sub r0, r0, #0x1
+ lsl r0, r0, #0x7
+ str r0, [sp, #0x10]
+_02008356:
+ cmp r4, #0x28
+ bge _02008442
+ ldr r0, [sp, #0x44]
+ ldr r1, [r0, #0x54]
+ lsl r0, r1, #0x16
+ lsr r0, r0, #0x1f
+ beq _02008386
+ lsl r1, r1, #0x15
+ lsr r1, r1, #0x1f
+ beq _02008386
+ mov r0, #0x27
+ sub r1, r0, r4
+ ldr r0, [sp, #0x1c]
+ ldrb r0, [r0, r1]
+ bl FUN_020088D8
+ mov r1, #0xab
+ lsl r1, r1, #0x2
+ ldr r1, [r6, r1]
+ add r1, r5, r1
+ add r1, r4, r1
+ add r1, #0x50
+ strb r0, [r1, #0x0]
+ b _0200852E
+_02008386:
+ cmp r0, #0x0
+ beq _020083A6
+ mov r0, #0x27
+ sub r1, r0, r4
+ ldr r0, [sp, #0x18]
+ ldrb r0, [r0, r1]
+ bl FUN_020088D8
+ mov r1, #0xab
+ lsl r1, r1, #0x2
+ ldr r1, [r6, r1]
+ add r1, r5, r1
+ add r1, r4, r1
+ add r1, #0x50
+ strb r0, [r1, #0x0]
+ b _0200852E
+_020083A6:
+ ldr r0, [sp, #0x44]
+ ldr r0, [r0, #0x54]
+ lsl r1, r0, #0x15
+ lsr r1, r1, #0x1f
+ beq _020083C4
+ mov r1, #0xab
+ lsl r1, r1, #0x2
+ ldr r0, [sp, #0x20]
+ ldr r1, [r6, r1]
+ ldrb r0, [r0, #0x0]
+ add r1, r5, r1
+ add r1, r4, r1
+ add r1, #0x50
+ strb r0, [r1, #0x0]
+ b _0200852E
+_020083C4:
+ lsl r0, r0, #0xf
+ lsr r0, r0, #0x1c
+ str r0, [sp, #0xc]
+ beq _02008430
+ ldr r1, [sp, #0xc]
+ ldr r0, [sp, #0x14]
+ lsl r1, r1, #0x1
+ blx _u32_div_f
+ cmp r1, #0x0
+ beq _020083F4
+ mov r0, #0xab
+ lsl r0, r0, #0x2
+ ldr r1, [r6, r0]
+ ldr r0, [sp, #0x10]
+ add r0, r0, r1
+ add r0, r4, r0
+ add r0, #0x50
+ add r1, r5, r1
+ add r1, r4, r1
+ ldrb r0, [r0, #0x0]
+ add r1, #0x50
+ strb r0, [r1, #0x0]
+ b _0200852E
+_020083F4:
+ ldr r1, [sp, #0xc]
+ add r0, r4, #0x0
+ blx _u32_div_f
+ cmp r1, #0x0
+ beq _02008416
+ mov r0, #0xab
+ lsl r0, r0, #0x2
+ ldr r0, [r6, r0]
+ add r2, r5, r0
+ add r0, r2, r4
+ add r0, #0x4f
+ ldrb r1, [r0, #0x0]
+ add r0, r2, r4
+ add r0, #0x50
+ strb r1, [r0, #0x0]
+ b _0200852E
+_02008416:
+ ldrb r1, [r7, #0x0]
+ mov r0, #0xf
+ and r1, r0
+ lsl r0, r1, #0x4
+ orr r0, r1
+ mov r1, #0xab
+ lsl r1, r1, #0x2
+ ldr r1, [r6, r1]
+ add r1, r5, r1
+ add r1, r4, r1
+ add r1, #0x50
+ strb r0, [r1, #0x0]
+ b _0200852E
+_02008430:
+ mov r1, #0xab
+ lsl r1, r1, #0x2
+ ldr r1, [r6, r1]
+ ldrb r0, [r7, #0x0]
+ add r1, r5, r1
+ add r1, r4, r1
+ add r1, #0x50
+ strb r0, [r1, #0x0]
+ b _0200852E
+_02008442:
+ ldr r0, [sp, #0x44]
+ ldr r1, [r0, #0x54]
+ lsl r0, r1, #0x16
+ lsr r0, r0, #0x1f
+ beq _02008472
+ lsl r1, r1, #0x15
+ lsr r1, r1, #0x1f
+ beq _02008472
+ add r1, r4, #0x0
+ sub r1, #0x28
+ mov r0, #0x4f
+ sub r1, r0, r1
+ ldr r0, [sp, #0x1c]
+ ldrb r0, [r0, r1]
+ bl FUN_020088D8
+ mov r1, #0xab
+ lsl r1, r1, #0x2
+ ldr r1, [r6, r1]
+ add r1, r5, r1
+ add r2, r4, r1
+ ldr r1, _020086E8 ; =0x00002828
+ strb r0, [r2, r1]
+ b _0200852E
+_02008472:
+ cmp r0, #0x0
+ beq _02008496
+ add r1, r4, #0x0
+ sub r1, #0x28
+ mov r0, #0x4f
+ sub r1, r0, r1
+ ldr r0, [sp, #0x18]
+ ldrb r0, [r0, r1]
+ bl FUN_020088D8
+ mov r1, #0xab
+ lsl r1, r1, #0x2
+ ldr r1, [r6, r1]
+ add r1, r5, r1
+ add r2, r4, r1
+ ldr r1, _020086E8 ; =0x00002828
+ strb r0, [r2, r1]
+ b _0200852E
+_02008496:
+ ldr r0, [sp, #0x44]
+ ldr r0, [r0, #0x54]
+ lsl r1, r0, #0x15
+ lsr r1, r1, #0x1f
+ beq _020084B4
+ mov r1, #0xab
+ lsl r1, r1, #0x2
+ ldr r0, [sp, #0x20]
+ ldr r1, [r6, r1]
+ ldrb r0, [r0, #0x0]
+ add r1, r5, r1
+ add r2, r4, r1
+ ldr r1, _020086E8 ; =0x00002828
+ strb r0, [r2, r1]
+ b _0200852E
+_020084B4:
+ lsl r0, r0, #0xf
+ lsr r0, r0, #0x1c
+ str r0, [sp, #0x8]
+ beq _0200851E
+ ldr r1, [sp, #0x8]
+ ldr r0, [sp, #0x14]
+ lsl r1, r1, #0x1
+ blx _u32_div_f
+ cmp r1, #0x0
+ beq _020084E4
+ mov r0, #0xab
+ lsl r0, r0, #0x2
+ ldr r1, [r6, r0]
+ ldr r0, [sp, #0x10]
+ add r0, r0, r1
+ add r2, r4, r0
+ ldr r0, _020086E8 ; =0x00002828
+ add r1, r5, r1
+ ldrb r0, [r2, r0]
+ add r2, r4, r1
+ ldr r1, _020086E8 ; =0x00002828
+ strb r0, [r2, r1]
+ b _0200852E
+_020084E4:
+ ldr r1, [sp, #0x8]
+ add r0, r4, #0x0
+ blx _u32_div_f
+ cmp r1, #0x0
+ beq _02008504
+ mov r0, #0xab
+ lsl r0, r0, #0x2
+ ldr r0, [r6, r0]
+ ldr r1, _020086EC ; =0x00002827
+ add r0, r5, r0
+ add r0, r0, r4
+ ldrb r2, [r0, r1]
+ add r1, r1, #0x1
+ strb r2, [r0, r1]
+ b _0200852E
+_02008504:
+ ldrb r1, [r7, #0x0]
+ mov r0, #0xf
+ and r1, r0
+ lsl r0, r1, #0x4
+ orr r0, r1
+ mov r1, #0xab
+ lsl r1, r1, #0x2
+ ldr r1, [r6, r1]
+ add r1, r5, r1
+ add r2, r4, r1
+ ldr r1, _020086E8 ; =0x00002828
+ strb r0, [r2, r1]
+ b _0200852E
+_0200851E:
+ mov r1, #0xab
+ lsl r1, r1, #0x2
+ ldr r1, [r6, r1]
+ ldrb r0, [r7, #0x0]
+ add r1, r5, r1
+ add r2, r4, r1
+ ldr r1, _020086E8 ; =0x00002828
+ strb r0, [r2, r1]
+_0200852E:
+ ldr r0, [sp, #0x20]
+ add r4, r4, #0x1
+ add r0, r0, #0x1
+ add r7, r7, #0x1
+ str r0, [sp, #0x20]
+ cmp r4, #0x50
+ bge _0200853E
+ b _02008356
+_0200853E:
+ ldr r0, [sp, #0x24]
+ add r5, #0x80
+ add r0, #0x50
+ str r0, [sp, #0x24]
+ ldr r0, [sp, #0x14]
+ add r0, r0, #0x1
+ str r0, [sp, #0x14]
+ cmp r0, #0x50
+ bge _02008552
+ b _0200832E
+_02008552:
+ b _020086BC
+_02008554:
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ str r0, [sp, #0x40]
+ str r0, [sp, #0x3c]
+_0200855C:
+ ldr r0, [sp, #0x0]
+ mov r1, #0x4f
+ sub r2, r1, r0
+ mov r0, #0x50
+ add r1, r2, #0x0
+ mul r1, r0
+ ldr r0, [sp, #0x50]
+ mov r4, #0x0
+ add r0, r0, r1
+ str r0, [sp, #0x34]
+ ldr r1, [sp, #0x50]
+ ldr r0, [sp, #0x3c]
+ add r7, r1, r0
+ ldr r0, [sp, #0x34]
+ ldr r1, [sp, #0x38]
+ str r0, [sp, #0x30]
+ ldr r0, [sp, #0x40]
+ str r7, [sp, #0x2c]
+ add r5, r1, r0
+ ldr r0, [sp, #0x0]
+ sub r0, r0, #0x1
+ lsl r1, r0, #0x7
+ ldr r0, [sp, #0x38]
+ add r0, r0, r1
+ str r0, [sp, #0x28]
+_0200858E:
+ ldr r0, [sp, #0x44]
+ ldr r1, [r0, #0x54]
+ lsl r0, r1, #0x16
+ lsr r0, r0, #0x1f
+ beq _020085D6
+ lsl r1, r1, #0x15
+ lsr r1, r1, #0x1f
+ beq _020085D6
+ cmp r4, #0x28
+ bge _020085BA
+ mov r0, #0x27
+ sub r1, r0, r4
+ ldr r0, [sp, #0x30]
+ ldrb r0, [r0, r1]
+ bl FUN_020088D8
+ mov r1, #0xab
+ lsl r1, r1, #0x2
+ ldr r1, [r6, r1]
+ add r1, r5, r1
+ strb r0, [r4, r1]
+ b _02008694
+_020085BA:
+ add r1, r4, #0x0
+ sub r1, #0x28
+ mov r0, #0x4f
+ sub r1, r0, r1
+ ldr r0, [sp, #0x30]
+ ldrb r0, [r0, r1]
+ bl FUN_020088D8
+ mov r1, #0xab
+ lsl r1, r1, #0x2
+ ldr r1, [r6, r1]
+ add r1, r5, r1
+ strb r0, [r4, r1]
+ b _02008694
+_020085D6:
+ cmp r0, #0x0
+ beq _02008612
+ cmp r4, #0x28
+ bge _020085F6
+ mov r0, #0x27
+ sub r1, r0, r4
+ ldr r0, [sp, #0x2c]
+ ldrb r0, [r0, r1]
+ bl FUN_020088D8
+ mov r1, #0xab
+ lsl r1, r1, #0x2
+ ldr r1, [r6, r1]
+ add r1, r5, r1
+ strb r0, [r4, r1]
+ b _02008694
+_020085F6:
+ add r1, r4, #0x0
+ sub r1, #0x28
+ mov r0, #0x4f
+ sub r1, r0, r1
+ ldr r0, [sp, #0x2c]
+ ldrb r0, [r0, r1]
+ bl FUN_020088D8
+ mov r1, #0xab
+ lsl r1, r1, #0x2
+ ldr r1, [r6, r1]
+ add r1, r5, r1
+ strb r0, [r4, r1]
+ b _02008694
+_02008612:
+ ldr r0, [sp, #0x44]
+ ldr r0, [r0, #0x54]
+ lsl r1, r0, #0x15
+ lsr r1, r1, #0x1f
+ beq _0200862C
+ ldr r0, [sp, #0x34]
+ mov r1, #0xab
+ lsl r1, r1, #0x2
+ ldr r1, [r6, r1]
+ ldrb r0, [r0, #0x0]
+ add r1, r5, r1
+ strb r0, [r4, r1]
+ b _02008694
+_0200862C:
+ lsl r0, r0, #0xf
+ lsr r0, r0, #0x1c
+ str r0, [sp, #0x4]
+ beq _02008688
+ ldr r1, [sp, #0x4]
+ ldr r0, [sp, #0x0]
+ lsl r1, r1, #0x1
+ blx _u32_div_f
+ cmp r1, #0x0
+ beq _02008654
+ mov r0, #0xab
+ lsl r0, r0, #0x2
+ ldr r0, [r6, r0]
+ ldr r1, [sp, #0x28]
+ add r1, r1, r0
+ ldrb r1, [r4, r1]
+ add r0, r5, r0
+ strb r1, [r4, r0]
+ b _02008694
+_02008654:
+ ldr r1, [sp, #0x4]
+ add r0, r4, #0x0
+ blx _u32_div_f
+ cmp r1, #0x0
+ beq _02008672
+ mov r0, #0xab
+ lsl r0, r0, #0x2
+ ldr r0, [r6, r0]
+ add r1, r5, r0
+ add r0, r1, r4
+ sub r0, r0, #0x1
+ ldrb r0, [r0, #0x0]
+ strb r0, [r1, r4]
+ b _02008694
+_02008672:
+ ldrb r1, [r7, #0x0]
+ mov r0, #0xf
+ and r1, r0
+ lsl r0, r1, #0x4
+ orr r0, r1
+ mov r1, #0xab
+ lsl r1, r1, #0x2
+ ldr r1, [r6, r1]
+ add r1, r5, r1
+ strb r0, [r4, r1]
+ b _02008694
+_02008688:
+ mov r1, #0xab
+ lsl r1, r1, #0x2
+ ldr r1, [r6, r1]
+ ldrb r0, [r7, #0x0]
+ add r1, r5, r1
+ strb r0, [r4, r1]
+_02008694:
+ ldr r0, [sp, #0x34]
+ add r4, r4, #0x1
+ add r0, r0, #0x1
+ add r7, r7, #0x1
+ str r0, [sp, #0x34]
+ cmp r4, #0x50
+ bge _020086A4
+ b _0200858E
+_020086A4:
+ ldr r0, [sp, #0x40]
+ add r0, #0x80
+ str r0, [sp, #0x40]
+ ldr r0, [sp, #0x3c]
+ add r0, #0x50
+ str r0, [sp, #0x3c]
+ ldr r0, [sp, #0x0]
+ add r0, r0, #0x1
+ str r0, [sp, #0x0]
+ cmp r0, #0x50
+ bge _020086BC
+ b _0200855C
+_020086BC:
+ ldr r0, [sp, #0x4c]
+ bl FUN_02016A18
+_020086C2:
+ ldr r0, [sp, #0x44]
+ mov r1, #0xa
+ add r0, #0x98
+ str r0, [sp, #0x44]
+ ldr r0, [sp, #0x38]
+ lsl r1, r1, #0xa
+ add r0, r0, r1
+ str r0, [sp, #0x38]
+ ldr r0, [sp, #0x54]
+ add r0, r0, #0x1
+ str r0, [sp, #0x54]
+ cmp r0, #0x4
+ bge _020086DE
+ b _020082BA
+_020086DE:
+ ldr r1, _020086F0 ; =0x000002E1
+ ldr r0, [sp, #0x48]
+ strb r0, [r6, r1]
+ add sp, #0x5c
+ pop {r4-r7, pc}
+ .balign 4
+_020086E8: .word 0x00002828
+_020086EC: .word 0x00002827
+_020086F0: .word 0x000002E1
+
+ thumb_func_start FUN_020086F4
+FUN_020086F4: ; 0x020086F4
+ push {r4-r7, lr}
+ sub sp, #0x1c
+ add r5, r0, #0x0
+ mov r0, #0x0
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0xc]
+ add r4, r5, #0x0
+ str r0, [sp, #0x8]
+_02008706:
+ ldr r1, [r4, #0x0]
+ lsl r0, r1, #0x1f
+ lsr r0, r0, #0x1f
+ beq _020087E0
+ lsl r0, r1, #0x17
+ lsr r0, r0, #0x1f
+ beq _020087E0
+ ldr r0, _020088CC ; =0xFFFFFEFF
+ mov r2, #0xa6
+ and r0, r1
+ str r0, [r4, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0xc]
+ lsl r2, r2, #0x2
+ ldrh r0, [r4, #0x4]
+ ldrh r1, [r4, #0x8]
+ ldr r2, [r5, r2]
+ bl LoadFromNarc_2
+ add r1, sp, #0x18
+ str r0, [sp, #0x10]
+ blx FUN_020B0138
+ ldr r0, [sp, #0x18]
+ mov r7, #0x0
+ ldr r1, [r0, #0x0]
+ mov r0, #0x2d
+ lsl r0, r0, #0x4
+ str r1, [r5, r0]
+ ldr r0, [sp, #0x18]
+ add r2, r7, #0x0
+ ldr r1, [r0, #0xc]
+ ldr r0, [sp, #0x8]
+ lsl r3, r0, #0x1
+_0200874A:
+ mov r6, #0x2b
+ lsl r6, r6, #0x4
+ ldr r6, [r5, r6]
+ ldrh r0, [r1, #0x0]
+ add r6, r3, r6
+ add r7, r7, #0x1
+ strh r0, [r2, r6]
+ mov r6, #0xad
+ lsl r6, r6, #0x2
+ ldrh r0, [r1, #0x0]
+ ldr r6, [r5, r6]
+ add r1, r1, #0x2
+ add r6, r3, r6
+ strh r0, [r2, r6]
+ add r2, r2, #0x2
+ cmp r7, #0x10
+ blt _0200874A
+ ldr r0, [sp, #0x10]
+ bl FUN_02016A18
+ add r0, r4, #0x0
+ add r0, #0x6c
+ ldrh r0, [r0, #0x0]
+ lsl r0, r0, #0x1e
+ lsr r0, r0, #0x1e
+ beq _020087E0
+ mov r2, #0xa6
+ lsl r2, r2, #0x2
+ ldr r2, [r5, r2]
+ mov r0, #0x75
+ mov r1, #0xd4
+ bl LoadFromNarc_2
+ add r1, sp, #0x18
+ str r0, [sp, #0x4]
+ blx FUN_020B0138
+ ldr r0, [sp, #0x18]
+ mov r7, #0xad
+ ldr r0, [r0, #0xc]
+ mov r1, #0x0
+ lsl r7, r7, #0x2
+_0200879E:
+ add r6, r4, #0x0
+ add r6, #0x6c
+ ldrh r6, [r6, #0x0]
+ mov r2, #0x2b
+ lsl r2, r2, #0x4
+ lsl r6, r6, #0x1e
+ lsr r6, r6, #0x1e
+ add r6, r6, #0x3
+ lsl r6, r6, #0x4
+ add r6, r1, r6
+ ldrh r3, [r0, #0x0]
+ ldr r2, [r5, r2]
+ lsl r6, r6, #0x1
+ strh r3, [r2, r6]
+ add r6, r4, #0x0
+ add r6, #0x6c
+ ldrh r6, [r6, #0x0]
+ ldrh r3, [r0, #0x0]
+ ldr r2, [r5, r7]
+ lsl r6, r6, #0x1e
+ lsr r6, r6, #0x1e
+ add r6, r6, #0x3
+ lsl r6, r6, #0x4
+ add r6, r1, r6
+ lsl r6, r6, #0x1
+ add r1, r1, #0x1
+ add r0, r0, #0x2
+ strh r3, [r2, r6]
+ cmp r1, #0x10
+ blt _0200879E
+ ldr r0, [sp, #0x4]
+ bl FUN_02016A18
+_020087E0:
+ ldr r0, [r4, #0x0]
+ lsl r0, r0, #0x1f
+ lsr r0, r0, #0x1f
+ beq _020088AE
+ ldr r0, [r4, #0x54]
+ lsl r0, r0, #0x13
+ lsr r0, r0, #0x1f
+ beq _020088AE
+ add r0, r4, #0x0
+ add r0, #0x4a
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _020088A0
+ mov r0, #0x1
+ str r0, [sp, #0xc]
+ add r0, r4, #0x0
+ add r0, #0x4b
+ ldrb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x4a
+ strb r1, [r0, #0x0]
+ ldr r0, [sp, #0x8]
+ mov r2, #0xad
+ lsl r1, r0, #0x1
+ ldr r0, [r4, #0x4c]
+ add r3, r4, #0x0
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ lsl r2, r2, #0x2
+ str r0, [sp, #0x0]
+ ldr r0, [r5, r2]
+ sub r2, r2, #0x4
+ add r3, #0x48
+ ldr r2, [r5, r2]
+ add r0, r0, r1
+ add r1, r2, r1
+ ldrb r3, [r3, #0x0]
+ mov r2, #0x10
+ bl FUN_02003974
+ add r0, r4, #0x0
+ add r0, #0x6c
+ ldrh r0, [r0, #0x0]
+ lsl r0, r0, #0x1e
+ lsr r0, r0, #0x1e
+ beq _02008862
+ add r0, r0, #0x3
+ lsl r1, r0, #0x5
+ ldr r0, [r4, #0x4c]
+ mov r2, #0xad
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ add r3, r4, #0x0
+ lsl r2, r2, #0x2
+ str r0, [sp, #0x0]
+ ldr r0, [r5, r2]
+ sub r2, r2, #0x4
+ add r3, #0x48
+ ldr r2, [r5, r2]
+ add r0, r0, r1
+ add r1, r2, r1
+ ldrb r3, [r3, #0x0]
+ mov r2, #0x10
+ bl FUN_02003974
+_02008862:
+ add r0, r4, #0x0
+ add r0, #0x49
+ ldrb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x48
+ ldrb r0, [r0, #0x0]
+ cmp r0, r1
+ bne _0200887C
+ ldr r1, [r4, #0x54]
+ ldr r0, _020088D0 ; =0xFFFFEFFF
+ and r0, r1
+ str r0, [r4, #0x54]
+ b _020088AE
+_0200887C:
+ cmp r0, r1
+ bls _02008890
+ add r0, r4, #0x0
+ add r0, #0x48
+ ldrb r0, [r0, #0x0]
+ sub r1, r0, #0x1
+ add r0, r4, #0x0
+ add r0, #0x48
+ strb r1, [r0, #0x0]
+ b _020088AE
+_02008890:
+ add r0, r4, #0x0
+ add r0, #0x48
+ ldrb r0, [r0, #0x0]
+ add r1, r0, #0x1
+ add r0, r4, #0x0
+ add r0, #0x48
+ strb r1, [r0, #0x0]
+ b _020088AE
+_020088A0:
+ add r0, r4, #0x0
+ add r0, #0x4a
+ ldrb r0, [r0, #0x0]
+ sub r1, r0, #0x1
+ add r0, r4, #0x0
+ add r0, #0x4a
+ strb r1, [r0, #0x0]
+_020088AE:
+ ldr r0, [sp, #0x8]
+ add r4, #0x98
+ add r0, #0x10
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x14]
+ add r0, r0, #0x1
+ str r0, [sp, #0x14]
+ cmp r0, #0x4
+ bge _020088C2
+ b _02008706
+_020088C2:
+ ldr r1, _020088D4 ; =0x000002E2
+ ldr r0, [sp, #0xc]
+ strb r0, [r5, r1]
+ add sp, #0x1c
+ pop {r4-r7, pc}
+ .balign 4
+_020088CC: .word 0xFFFFFEFF
+_020088D0: .word 0xFFFFEFFF
+_020088D4: .word 0x000002E2
+
+ thumb_func_start FUN_020088D8
+FUN_020088D8: ; 0x020088D8
+ mov r1, #0xf0
+ and r1, r0
+ lsl r1, r1, #0x14
+ lsl r0, r0, #0x1c
+ lsr r1, r1, #0x18
+ lsr r0, r0, #0x18
+ orr r0, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+
+ thumb_func_start FUN_020088EC
+FUN_020088EC: ; 0x020088EC
+ push {r3, lr}
+ add r2, r0, #0x0
+ ldrh r0, [r2, #0xa]
+ cmp r0, #0x0
+ beq _02008900
+ add r0, r1, #0x0
+ ldr r1, [r2, #0x10]
+ mov r2, #0x1
+ bl FUN_02008904
+_02008900:
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02008904
+FUN_02008904: ; 0x02008904
+ push {r4-r7, lr}
+ sub sp, #0x1c
+ add r3, r0, #0x0
+ add r0, r1, #0x0
+ mov lr, r0
+ mov r0, #0x0
+ mov r12, r0
+ ldr r0, _02008A50 ; =0x02105AE8
+ str r1, [sp, #0x0]
+ str r2, [sp, #0x4]
+ str r0, [sp, #0x10]
+_0200891A:
+ ldr r0, [sp, #0x10]
+ mov r1, #0x0
+ ldr r6, [r0, #0x0]
+ ldrb r0, [r6, #0x0]
+ cmp r0, #0xff
+ beq _02008992
+ ldr r0, [sp, #0x0]
+ mov r2, #0xf
+ and r0, r2
+ str r0, [sp, #0xc]
+ sub r0, #0x8
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x0]
+ mov r2, #0xf0
+ and r0, r2
+ lsr r7, r0, #0x4
+ sub r7, #0x8
+_0200893C:
+ lsl r0, r1, #0x1
+ add r2, r6, r0
+ ldrb r4, [r6, r0]
+ ldrb r2, [r2, #0x1]
+ ldr r0, [sp, #0xc]
+ add r0, r0, r4
+ add r2, r7, r2
+ lsl r0, r0, #0x18
+ lsl r2, r2, #0x18
+ lsr r0, r0, #0x18
+ lsr r4, r2, #0x18
+ mov r2, #0x50
+ mul r2, r4
+ lsr r5, r0, #0x1
+ add r2, r5, r2
+ mov r4, #0x1
+ tst r0, r4
+ ldrb r4, [r3, r2]
+ beq _02008974
+ mov r0, #0xf0
+ and r0, r4
+ cmp r0, #0x10
+ blt _02008984
+ cmp r0, #0x30
+ bgt _02008984
+ add r4, #0x50
+ strb r4, [r3, r2]
+ b _02008984
+_02008974:
+ mov r0, #0xf
+ and r0, r4
+ cmp r0, #0x1
+ blt _02008984
+ cmp r0, #0x3
+ bgt _02008984
+ add r0, r4, #0x5
+ strb r0, [r3, r2]
+_02008984:
+ add r0, r1, #0x1
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ lsl r0, r1, #0x1
+ ldrb r0, [r6, r0]
+ cmp r0, #0xff
+ bne _0200893C
+_02008992:
+ ldr r0, [sp, #0x0]
+ lsr r0, r0, #0x8
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x10]
+ add r0, r0, #0x4
+ str r0, [sp, #0x10]
+ mov r0, r12
+ add r0, r0, #0x1
+ mov r12, r0
+ cmp r0, #0x4
+ blt _0200891A
+ mov r0, lr
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ beq _02008A4A
+ mov r0, #0x0
+ str r0, [sp, #0x8]
+ ldr r0, _02008A50 ; =0x02105AE8
+ str r0, [sp, #0x18]
+_020089BA:
+ ldr r0, [sp, #0x18]
+ mov r4, #0x0
+ ldr r2, [r0, #0x0]
+ ldrb r0, [r2, #0x0]
+ cmp r0, #0xff
+ beq _02008A34
+ ldr r0, [sp, #0x0]
+ mov r1, #0xf
+ and r0, r1
+ str r0, [sp, #0x14]
+ add r0, #0x48
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x0]
+ mov r1, #0xf0
+ and r0, r1
+ lsr r7, r0, #0x4
+ sub r7, #0x8
+_020089DC:
+ lsl r0, r4, #0x1
+ add r5, r2, r0
+ ldrb r1, [r2, r0]
+ ldrb r5, [r5, #0x1]
+ ldr r0, [sp, #0x14]
+ sub r1, #0xe
+ add r0, r0, r1
+ add r5, r7, r5
+ lsl r0, r0, #0x18
+ lsl r5, r5, #0x18
+ lsr r1, r0, #0x18
+ lsr r6, r5, #0x18
+ mov r5, #0x50
+ lsr r0, r1, #0x1
+ mul r5, r6
+ add r0, r0, r5
+ mov r5, #0x1
+ tst r1, r5
+ ldrb r5, [r3, r0]
+ beq _02008A16
+ mov r1, #0xf0
+ and r1, r5
+ cmp r1, #0x10
+ blt _02008A26
+ cmp r1, #0x30
+ bgt _02008A26
+ add r5, #0x50
+ strb r5, [r3, r0]
+ b _02008A26
+_02008A16:
+ mov r1, #0xf
+ and r1, r5
+ cmp r1, #0x1
+ blt _02008A26
+ cmp r1, #0x3
+ bgt _02008A26
+ add r1, r5, #0x5
+ strb r1, [r3, r0]
+_02008A26:
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ lsl r0, r4, #0x1
+ ldrb r0, [r2, r0]
+ cmp r0, #0xff
+ bne _020089DC
+_02008A34:
+ ldr r0, [sp, #0x0]
+ lsr r0, r0, #0x8
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x18]
+ add r0, r0, #0x4
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x8]
+ add r0, r0, #0x1
+ str r0, [sp, #0x8]
+ cmp r0, #0x4
+ blt _020089BA
+_02008A4A:
+ add sp, #0x1c
+ pop {r4-r7, pc}
+ nop
+_02008A50: .word 0x02105AE8
+
+ thumb_func_start FUN_02008A54
+FUN_02008A54: ; 0x02008A54
+ ldr r2, [r0, #0x0]
+ ldr r1, _02008A6C ; =0x41C64E6D
+ add r3, r2, #0x0
+ mul r3, r1
+ ldr r1, _02008A70 ; =0x00006073
+ add r1, r3, r1
+ str r1, [r0, #0x0]
+ lsr r0, r1, #0x10
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bx lr
+ nop
+_02008A6C: .word 0x41C64E6D
+_02008A70: .word 0x00006073
+
+ thumb_func_start FUN_02008A74
+FUN_02008A74: ; 0x02008A74
+ push {r3-r7, lr}
+ ldr r1, _02008AA0 ; =0x000018FE
+ mov r6, #0x0
+ ldrh r2, [r0, r1]
+ lsr r4, r1, #0x1
+ add r5, r0, r1
+ str r2, [sp, #0x0]
+ add r7, sp, #0x0
+ mvn r6, r6
+_02008A86:
+ ldrh r1, [r5, #0x0]
+ ldr r0, [sp, #0x0]
+ eor r0, r1
+ strh r0, [r5, #0x0]
+ add r0, r7, #0x0
+ bl FUN_02008A54
+ sub r4, r4, #0x1
+ sub r5, r5, #0x2
+ cmp r4, r6
+ bgt _02008A86
+ pop {r3-r7, pc}
+ nop
+_02008AA0: .word 0x000018FE
+
+ thumb_func_start FUN_02008AA4
+FUN_02008AA4: ; 0x02008AA4
+ push {r3-r7, lr}
+ sub sp, #0x18
+ mov r4, #0x0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x44]
+ add r6, r1, #0x0
+ str r2, [sp, #0x0]
+ str r3, [sp, #0x4]
+ str r4, [sp, #0xc]
+ cmp r0, #0x0
+ bne _02008AC2
+ bl ErrorHandling
+_02008AC2:
+ ldr r0, [sp, #0x48]
+ cmp r0, #0x0
+ bne _02008ACC
+ bl ErrorHandling
+_02008ACC:
+ ldr r0, [sp, #0x50]
+ cmp r0, #0x0
+ bne _02008AD6
+ bl ErrorHandling
+_02008AD6:
+ ldr r0, [sp, #0x4c]
+ cmp r0, #0x0
+ bne _02008AE0
+ bl ErrorHandling
+_02008AE0:
+ cmp r5, #0x0
+ bne _02008AE8
+ bl ErrorHandling
+_02008AE8:
+ ldr r0, [sp, #0x44]
+ add r1, r6, #0x0
+ bl FUN_020094F0
+ add r7, r0, #0x0
+ bne _02008AF8
+ bl ErrorHandling
+_02008AF8:
+ ldr r0, [sp, #0x48]
+ ldr r1, [sp, #0x0]
+ bl FUN_020094F0
+ str r0, [sp, #0x14]
+ cmp r0, #0x0
+ bne _02008B0A
+ bl ErrorHandling
+_02008B0A:
+ ldr r0, [sp, #0x4c]
+ ldr r1, [sp, #0x4]
+ bl FUN_020094F0
+ str r0, [sp, #0x10]
+ cmp r0, #0x0
+ bne _02008B1C
+ bl ErrorHandling
+_02008B1C:
+ ldr r0, [sp, #0x50]
+ cmp r0, #0x0
+ beq _02008B3A
+ mov r2, #0x0
+ ldr r1, [sp, #0x30]
+ mvn r2, r2
+ cmp r1, r2
+ beq _02008B3A
+ bl FUN_020094F0
+ str r0, [sp, #0xc]
+ cmp r0, #0x0
+ bne _02008B3A
+ bl ErrorHandling
+_02008B3A:
+ ldr r0, [sp, #0x54]
+ cmp r0, #0x0
+ beq _02008B62
+ mov r2, #0x0
+ ldr r1, [sp, #0x34]
+ mvn r2, r2
+ cmp r1, r2
+ beq _02008B50
+ bl FUN_020094F0
+ add r4, r0, #0x0
+_02008B50:
+ mov r0, #0x0
+ ldr r1, [sp, #0x38]
+ mvn r0, r0
+ cmp r1, r0
+ beq _02008B62
+ ldr r0, [sp, #0x58]
+ bl FUN_020094F0
+ str r0, [sp, #0x8]
+_02008B62:
+ ldr r0, [sp, #0x3c]
+ cmp r0, #0x0
+ beq _02008B82
+ ldr r1, [sp, #0x10]
+ add r0, r7, #0x0
+ bl FUN_02009C80
+ add r6, r0, #0x0
+ bne _02008B78
+ bl ErrorHandling
+_02008B78:
+ add r0, r7, #0x0
+ bl FUN_02009544
+ str r0, [r5, #0x4]
+ b _02008B94
+_02008B82:
+ add r0, r7, #0x0
+ bl FUN_02009C5C
+ add r6, r0, #0x0
+ bne _02008B90
+ bl ErrorHandling
+_02008B90:
+ mov r0, #0x0
+ str r0, [r5, #0x4]
+_02008B94:
+ ldr r0, [sp, #0x14]
+ add r1, r6, #0x0
+ bl FUN_02009E54
+ str r0, [r5, #0x8]
+ ldr r0, [sp, #0x10]
+ str r6, [r5, #0x0]
+ bl FUN_02009574
+ str r0, [r5, #0xc]
+ ldr r0, [sp, #0xc]
+ cmp r0, #0x0
+ beq _02008BB4
+ bl FUN_0200958C
+ b _02008BB6
+_02008BB4:
+ mov r0, #0x0
+_02008BB6:
+ str r0, [r5, #0x10]
+ cmp r4, #0x0
+ beq _02008BCC
+ add r0, r4, #0x0
+ bl FUN_020095A4
+ str r0, [r5, #0x14]
+ ldr r0, [sp, #0x8]
+ bl FUN_020095BC
+ b _02008BD0
+_02008BCC:
+ mov r0, #0x0
+ str r0, [r5, #0x14]
+_02008BD0:
+ str r0, [r5, #0x18]
+ ldr r0, [sp, #0x3c]
+ str r0, [r5, #0x1c]
+ ldr r0, [sp, #0x40]
+ add r5, #0x20
+ strb r0, [r5, #0x0]
+ add sp, #0x18
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02008BE0
+FUN_02008BE0: ; 0x02008BE0
+ push {r4-r7, lr}
+ sub sp, #0x34
+ add r5, r0, #0x0
+ ldr r0, [sp, #0x48]
+ add r7, r1, #0x0
+ str r0, [sp, #0x48]
+ ldr r0, [sp, #0x4c]
+ mov r4, #0x0
+ str r0, [sp, #0x4c]
+ ldr r0, [sp, #0x50]
+ ldr r1, [r5, #0x0]
+ str r0, [sp, #0x50]
+ ldr r0, [sp, #0x54]
+ str r2, [sp, #0x2c]
+ str r0, [sp, #0x54]
+ sub r0, r4, #0x2
+ str r3, [sp, #0x30]
+ cmp r1, r0
+ beq _02008C14
+ add r2, r5, #0x0
+ sub r0, r4, #0x2
+_02008C0A:
+ add r2, #0x20
+ ldr r1, [r2, #0x0]
+ add r4, r4, #0x1
+ cmp r1, r0
+ bne _02008C0A
+_02008C14:
+ add r0, r7, #0x0
+ mov r1, #0x8
+ bl FUN_02016998
+ mov r1, #0x24
+ add r6, r0, #0x0
+ add r0, r7, #0x0
+ mul r1, r4
+ bl FUN_02016998
+ str r0, [r6, #0x0]
+ mov r7, #0x0
+ str r4, [r6, #0x4]
+ cmp r4, #0x0
+ ble _02008C7A
+ add r4, r7, #0x0
+_02008C34:
+ ldr r0, [r5, #0xc]
+ str r0, [sp, #0x0]
+ ldr r0, [r5, #0x10]
+ str r0, [sp, #0x4]
+ ldr r0, [r5, #0x14]
+ str r0, [sp, #0x8]
+ ldr r0, [r5, #0x18]
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x1c]
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x2c]
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x30]
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x48]
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x4c]
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x50]
+ str r0, [sp, #0x24]
+ ldr r0, [sp, #0x54]
+ str r0, [sp, #0x28]
+ ldr r0, [r6, #0x0]
+ ldr r1, [r5, #0x0]
+ ldr r2, [r5, #0x4]
+ ldr r3, [r5, #0x8]
+ add r0, r0, r4
+ bl FUN_02008AA4
+ ldr r0, [r6, #0x4]
+ add r7, r7, #0x1
+ add r5, #0x20
+ add r4, #0x24
+ cmp r7, r0
+ blt _02008C34
+_02008C7A:
+ add r0, r6, #0x0
+ add sp, #0x34
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_02008C80
+FUN_02008C80: ; 0x02008C80
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _02008C8A
+ bl ErrorHandling
+_02008C8A:
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ beq _02008C94
+ bl FUN_02016A18
+_02008C94:
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r4, pc}
+
+ thumb_func_start FUN_02008C9C
+FUN_02008C9C: ; 0x02008C9C
+ push {r3-r6, lr}
+ sub sp, #0x1c
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ ldr r1, _02008D00 ; =0xFFFFF000
+ add r0, r4, #0x0
+ add r6, r2, #0x0
+ bl FUN_0202134C
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ str r0, [sp, #0x4]
+ mov r0, #0xff
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x8]
+ mov r0, #0x3
+ lsl r0, r0, #0x12
+ str r0, [sp, #0xc]
+ add r0, r4, #0x0
+ add r0, #0x98
+ add r1, sp, #0x0
+ mov r2, #0x1
+ add r3, r4, #0x0
+ bl FUN_02009FD8
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0xff
+ mov r1, #0x3
+ lsl r1, r1, #0x12
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x8]
+ add r0, r4, #0x0
+ str r1, [sp, #0x4]
+ str r1, [sp, #0xc]
+ add r0, #0xe0
+ add r1, sp, #0x0
+ mov r2, #0x2
+ add r3, r4, #0x0
+ bl FUN_02009FD8
+ add r0, sp, #0x10
+ str r5, [sp, #0x10]
+ str r4, [sp, #0x14]
+ str r6, [sp, #0x18]
+ bl FUN_0201FCB0
+ add sp, #0x1c
+ pop {r3-r6, pc}
+ nop
+_02008D00: .word 0xFFFFF000
+
+ thumb_func_start FUN_02008D04
+FUN_02008D04: ; 0x02008D04
+ push {r3, lr}
+ sub sp, #0x10
+ str r1, [sp, #0x0]
+ mov r1, #0xff
+ lsl r1, r1, #0xc
+ str r1, [sp, #0x8]
+ mov r1, #0x3
+ lsl r1, r1, #0x12
+ str r1, [sp, #0xc]
+ add r0, #0x98
+ add r1, sp, #0x0
+ str r2, [sp, #0x4]
+ bl FUN_02021390
+ add sp, #0x10
+ pop {r3, pc}
+
+ thumb_func_start FUN_02008D24
+FUN_02008D24: ; 0x02008D24
+ push {r3, lr}
+ sub sp, #0x10
+ str r1, [sp, #0x0]
+ mov r1, #0xff
+ lsl r1, r1, #0xc
+ str r1, [sp, #0x8]
+ mov r1, #0x3
+ lsl r1, r1, #0x12
+ str r1, [sp, #0xc]
+ add r0, #0xe0
+ add r1, sp, #0x0
+ str r2, [sp, #0x4]
+ bl FUN_02021390
+ add sp, #0x10
+ pop {r3, pc}
+
+ thumb_func_start FUN_02008D44
+FUN_02008D44: ; 0x02008D44
+ push {r4, lr}
+ add r4, r0, #0x0
+ cmp r1, #0x10
+ beq _02008D5A
+ ldr r2, _02008DCC ; =0x00100010
+ cmp r1, r2
+ beq _02008D8A
+ ldr r0, _02008DD0 ; =0x00200010
+ cmp r1, r0
+ beq _02008D98
+ b _02008DC4
+_02008D5A:
+ blx FUN_020C5DBC
+ cmp r0, #0x40
+ beq _02008D6A
+ blx FUN_020C5DBC
+ cmp r0, #0x20
+ bne _02008D7A
+_02008D6A:
+ mov r0, #0x3e
+ mov r1, #0x2
+ lsl r0, r0, #0x8
+ lsl r1, r1, #0x8
+ add r2, r4, #0x0
+ bl FUN_0201D194
+ pop {r4, pc}
+_02008D7A:
+ mov r0, #0x7e
+ mov r1, #0x2
+ lsl r0, r0, #0x8
+ lsl r1, r1, #0x8
+ add r2, r4, #0x0
+ bl FUN_0201D194
+ pop {r4, pc}
+_02008D8A:
+ mov r0, #0xfe
+ lsr r1, r2, #0xb
+ lsl r0, r0, #0x8
+ add r2, r4, #0x0
+ bl FUN_0201D194
+ pop {r4, pc}
+_02008D98:
+ blx FUN_020C5DBC
+ cmp r0, #0x30
+ beq _02008DA8
+ blx FUN_020C5DBC
+ cmp r0, #0x50
+ bne _02008DB6
+_02008DA8:
+ mov r1, #0x2
+ ldr r0, _02008DD4 ; =0x00013E00
+ lsl r1, r1, #0x8
+ add r2, r4, #0x0
+ bl FUN_0201D194
+ pop {r4, pc}
+_02008DB6:
+ mov r1, #0x2
+ ldr r0, _02008DD8 ; =0x0001FE00
+ lsl r1, r1, #0x8
+ add r2, r4, #0x0
+ bl FUN_0201D194
+ pop {r4, pc}
+_02008DC4:
+ bl ErrorHandling
+ pop {r4, pc}
+ nop
+_02008DCC: .word 0x00100010
+_02008DD0: .word 0x00200010
+_02008DD4: .word 0x00013E00
+_02008DD8: .word 0x0001FE00
+
+ thumb_func_start FUN_02008DDC
+FUN_02008DDC: ; 0x02008DDC
+ ldr r3, _02008DE8 ; =0x0201E069
+ add r1, r0, #0x0
+ mov r0, #0x3
+ lsl r0, r0, #0xe
+ bx r3
+ nop
+_02008DE8: .word 0x0201E069
+
+ thumb_func_start FUN_02008DEC
+FUN_02008DEC: ; 0x02008DEC
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ str r2, [sp, #0x0]
+ add r0, r2, #0x0
+ mov r1, #0x14
+ bl FUN_02016998
+ add r4, r0, #0x0
+ ldr r1, [sp, #0x0]
+ add r0, r5, #0x0
+ bl FUN_02020C44
+ str r0, [r4, #0x0]
+ mov r0, #0xc
+ add r7, r5, #0x0
+ mul r7, r0
+ ldr r0, [sp, #0x0]
+ add r1, r7, #0x0
+ bl FUN_02016998
+ mov r1, #0x0
+ add r2, r7, #0x0
+ str r0, [r4, #0x4]
+ blx FUN_020DF4A4
+ str r5, [r4, #0x8]
+ mov r0, #0x0
+ str r0, [r4, #0xc]
+ str r6, [r4, #0x10]
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02008E2C
+FUN_02008E2C: ; 0x02008E2C
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _02008E36
+ bl ErrorHandling
+_02008E36:
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ bne _02008E40
+ bl ErrorHandling
+_02008E40:
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x0
+ bne _02008E4A
+ bl ErrorHandling
+_02008E4A:
+ add r0, r4, #0x0
+ bl FUN_020094C4
+ ldr r0, [r4, #0x0]
+ bl FUN_02020C90
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+ ldr r0, [r4, #0x4]
+ bl FUN_02016A18
+ mov r0, #0x0
+ str r0, [r4, #0x4]
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r4, pc}
+
+ thumb_func_start FUN_02008E6C
+FUN_02008E6C: ; 0x02008E6C
+ push {r3-r7, lr}
+ sub sp, #0x20
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ add r7, r3, #0x0
+ cmp r5, #0x0
+ bne _02008E80
+ bl ErrorHandling
+_02008E80:
+ cmp r4, #0x0
+ bne _02008E88
+ bl ErrorHandling
+_02008E88:
+ ldr r0, [r4, #0x4]
+ cmp r0, r6
+ bgt _02008E92
+ bl ErrorHandling
+_02008E92:
+ ldr r1, [r5, #0x10]
+ ldr r0, [r4, #0x8]
+ cmp r1, r0
+ beq _02008E9E
+ bl ErrorHandling
+_02008E9E:
+ add r0, r5, #0x0
+ bl FUN_020097D0
+ str r0, [sp, #0x1c]
+ cmp r0, #0x0
+ bne _02008EAE
+ bl ErrorHandling
+_02008EAE:
+ ldrb r0, [r4, #0xc]
+ cmp r0, #0x0
+ bne _02008EEA
+ ldr r2, [r4, #0x0]
+ mov r0, #0x4c
+ add r1, r6, #0x0
+ mul r1, r0
+ add r6, r2, r1
+ ldr r1, [r2, r1]
+ add r0, r5, #0x0
+ bl FUN_0200945C
+ cmp r0, #0x1
+ beq _02008ECE
+ bl ErrorHandling
+_02008ECE:
+ ldr r0, [r6, #0x44]
+ ldr r1, [sp, #0x1c]
+ str r0, [sp, #0x0]
+ ldr r0, [r6, #0x48]
+ add r2, r6, #0x4
+ str r0, [sp, #0x4]
+ ldr r0, [r4, #0x8]
+ str r0, [sp, #0x8]
+ str r7, [sp, #0xc]
+ ldr r3, [r6, #0x0]
+ add r0, r5, #0x0
+ bl FUN_0200994C
+ b _02008F28
+_02008EEA:
+ mov r0, #0x18
+ ldr r1, [r4, #0x0]
+ mul r0, r6
+ add r6, r1, r0
+ ldr r1, [r6, #0xc]
+ add r0, r5, #0x0
+ bl FUN_0200945C
+ cmp r0, #0x1
+ beq _02008F02
+ bl ErrorHandling
+_02008F02:
+ ldr r0, [r6, #0x8]
+ ldr r1, [sp, #0x1c]
+ str r0, [sp, #0x0]
+ ldr r0, [r6, #0xc]
+ str r0, [sp, #0x4]
+ ldr r0, [r6, #0x10]
+ str r0, [sp, #0x8]
+ ldr r0, [r6, #0x14]
+ str r0, [sp, #0xc]
+ ldr r0, [r4, #0x8]
+ str r0, [sp, #0x10]
+ str r7, [sp, #0x14]
+ mov r0, #0x0
+ str r0, [sp, #0x18]
+ ldr r2, [r6, #0x0]
+ ldr r3, [r6, #0x4]
+ add r0, r5, #0x0
+ bl FUN_02009978
+_02008F28:
+ ldr r0, [r5, #0xc]
+ add r0, r0, #0x1
+ str r0, [r5, #0xc]
+ ldr r0, [sp, #0x1c]
+ add sp, #0x20
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02008F34
+FUN_02008F34: ; 0x02008F34
+ push {r3-r7, lr}
+ sub sp, #0x20
+ add r5, r0, #0x0
+ add r7, r1, #0x0
+ add r4, r3, #0x0
+ str r2, [sp, #0x1c]
+ cmp r5, #0x0
+ bne _02008F48
+ bl ErrorHandling
+_02008F48:
+ ldr r0, [r5, #0x10]
+ cmp r0, #0x0
+ beq _02008F52
+ bl ErrorHandling
+_02008F52:
+ add r0, r5, #0x0
+ bl FUN_020097D0
+ add r6, r0, #0x0
+ bne _02008F60
+ bl ErrorHandling
+_02008F60:
+ ldr r0, [sp, #0x38]
+ str r4, [sp, #0x0]
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x3c]
+ mov r1, #0x0
+ str r0, [sp, #0x8]
+ str r1, [sp, #0xc]
+ ldr r0, [sp, #0x40]
+ str r1, [sp, #0x10]
+ str r0, [sp, #0x14]
+ str r1, [sp, #0x18]
+ ldr r3, [sp, #0x1c]
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r7, #0x0
+ bl FUN_02009978
+ ldr r0, [r5, #0xc]
+ add r0, r0, #0x1
+ str r0, [r5, #0xc]
+ add r0, r6, #0x0
+ add sp, #0x20
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02008F90
+FUN_02008F90: ; 0x02008F90
+ push {r3-r7, lr}
+ sub sp, #0x20
+ add r5, r0, #0x0
+ add r7, r1, #0x0
+ add r4, r3, #0x0
+ str r2, [sp, #0x1c]
+ cmp r5, #0x0
+ bne _02008FA4
+ bl ErrorHandling
+_02008FA4:
+ ldr r0, [r5, #0x10]
+ cmp r0, #0x0
+ beq _02008FAE
+ bl ErrorHandling
+_02008FAE:
+ add r0, r5, #0x0
+ bl FUN_020097D0
+ add r6, r0, #0x0
+ bne _02008FBC
+ bl ErrorHandling
+_02008FBC:
+ ldr r0, [sp, #0x38]
+ str r4, [sp, #0x0]
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x3c]
+ ldr r3, [sp, #0x1c]
+ str r0, [sp, #0x8]
+ mov r0, #0x0
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x40]
+ add r1, r6, #0x0
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x44]
+ add r2, r7, #0x0
+ str r0, [sp, #0x18]
+ add r0, r5, #0x0
+ bl FUN_02009978
+ ldr r0, [r5, #0xc]
+ add r0, r0, #0x1
+ str r0, [r5, #0xc]
+ add r0, r6, #0x0
+ add sp, #0x20
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02008FEC
+FUN_02008FEC: ; 0x02008FEC
+ push {r3-r7, lr}
+ sub sp, #0x20
+ add r5, r0, #0x0
+ add r7, r1, #0x0
+ add r4, r3, #0x0
+ str r2, [sp, #0x1c]
+ cmp r5, #0x0
+ bne _02009000
+ bl ErrorHandling
+_02009000:
+ ldr r0, [r5, #0x10]
+ cmp r0, #0x1
+ beq _0200900A
+ bl ErrorHandling
+_0200900A:
+ add r0, r5, #0x0
+ bl FUN_020097D0
+ add r6, r0, #0x0
+ bne _02009018
+ bl ErrorHandling
+_02009018:
+ ldr r0, [sp, #0x38]
+ str r4, [sp, #0x0]
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x3c]
+ ldr r3, [sp, #0x1c]
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x40]
+ add r1, r6, #0x0
+ str r0, [sp, #0xc]
+ mov r0, #0x1
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x44]
+ add r2, r7, #0x0
+ str r0, [sp, #0x14]
+ mov r0, #0x0
+ str r0, [sp, #0x18]
+ add r0, r5, #0x0
+ bl FUN_02009978
+ ldr r0, [r5, #0xc]
+ add r0, r0, #0x1
+ str r0, [r5, #0xc]
+ add r0, r6, #0x0
+ add sp, #0x20
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200904C
+FUN_0200904C: ; 0x0200904C
+ push {r3-r7, lr}
+ sub sp, #0x20
+ add r5, r0, #0x0
+ add r7, r1, #0x0
+ add r4, r3, #0x0
+ str r2, [sp, #0x1c]
+ cmp r5, #0x0
+ bne _02009060
+ bl ErrorHandling
+_02009060:
+ ldr r0, [r5, #0x10]
+ cmp r0, #0x1
+ beq _0200906A
+ bl ErrorHandling
+_0200906A:
+ add r0, r5, #0x0
+ bl FUN_020097D0
+ add r6, r0, #0x0
+ bne _02009078
+ bl ErrorHandling
+_02009078:
+ ldr r0, [sp, #0x38]
+ str r4, [sp, #0x0]
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x3c]
+ ldr r3, [sp, #0x1c]
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x40]
+ add r1, r6, #0x0
+ str r0, [sp, #0xc]
+ mov r0, #0x1
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x44]
+ add r2, r7, #0x0
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x48]
+ str r0, [sp, #0x18]
+ add r0, r5, #0x0
+ bl FUN_02009978
+ ldr r0, [r5, #0xc]
+ add r0, r0, #0x1
+ str r0, [r5, #0xc]
+ add r0, r6, #0x0
+ add sp, #0x20
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020090AC
+FUN_020090AC: ; 0x020090AC
+ push {r3-r7, lr}
+ sub sp, #0x20
+ add r5, r0, #0x0
+ add r7, r1, #0x0
+ add r4, r3, #0x0
+ str r2, [sp, #0x1c]
+ cmp r5, #0x0
+ bne _020090C0
+ bl ErrorHandling
+_020090C0:
+ add r0, r5, #0x0
+ bl FUN_020097D0
+ add r6, r0, #0x0
+ bne _020090CE
+ bl ErrorHandling
+_020090CE:
+ ldr r0, [sp, #0x38]
+ str r4, [sp, #0x0]
+ str r0, [sp, #0x4]
+ mov r1, #0x0
+ str r1, [sp, #0x8]
+ ldr r0, [sp, #0x3c]
+ str r1, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x40]
+ ldr r3, [sp, #0x1c]
+ str r0, [sp, #0x14]
+ str r1, [sp, #0x18]
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r7, #0x0
+ bl FUN_02009978
+ ldr r0, [r5, #0xc]
+ add r0, r0, #0x1
+ str r0, [r5, #0xc]
+ add r0, r6, #0x0
+ add sp, #0x20
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_020090FC
+FUN_020090FC: ; 0x020090FC
+ push {r4-r7, lr}
+ sub sp, #0x24
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ str r2, [sp, #0x1c]
+ str r3, [sp, #0x20]
+ cmp r5, #0x0
+ bne _02009110
+ bl ErrorHandling
+_02009110:
+ ldr r0, [r5, #0x10]
+ cmp r0, #0x0
+ beq _0200911A
+ bl ErrorHandling
+_0200911A:
+ cmp r4, #0x0
+ bne _02009122
+ bl ErrorHandling
+_02009122:
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x0
+ beq _0200912C
+ bl ErrorHandling
+_0200912C:
+ add r0, r4, #0x0
+ bl FUN_02009530
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_020095E4
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02009490
+ ldr r0, [sp, #0x38]
+ mov r1, #0x0
+ str r0, [sp, #0x0]
+ str r6, [sp, #0x4]
+ str r7, [sp, #0x8]
+ str r1, [sp, #0xc]
+ ldr r0, [sp, #0x3c]
+ str r1, [sp, #0x10]
+ str r0, [sp, #0x14]
+ str r1, [sp, #0x18]
+ ldr r2, [sp, #0x1c]
+ ldr r3, [sp, #0x20]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02009978
+ add sp, #0x24
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_02009168
+FUN_02009168: ; 0x02009168
+ push {r3-r7, lr}
+ sub sp, #0x28
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ str r2, [sp, #0x1c]
+ str r3, [sp, #0x20]
+ cmp r5, #0x0
+ bne _0200917C
+ bl ErrorHandling
+_0200917C:
+ ldr r0, [r5, #0x10]
+ cmp r0, #0x1
+ beq _02009186
+ bl ErrorHandling
+_02009186:
+ cmp r4, #0x0
+ bne _0200918E
+ bl ErrorHandling
+_0200918E:
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x1
+ beq _02009198
+ bl ErrorHandling
+_02009198:
+ add r0, r4, #0x0
+ bl FUN_02009530
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_020095E4
+ add r7, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02009610
+ str r0, [sp, #0x24]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02009490
+ ldr r0, [sp, #0x40]
+ ldr r2, [sp, #0x1c]
+ str r0, [sp, #0x0]
+ str r6, [sp, #0x4]
+ ldr r0, [sp, #0x24]
+ str r7, [sp, #0x8]
+ str r0, [sp, #0xc]
+ mov r0, #0x1
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x44]
+ ldr r3, [sp, #0x20]
+ str r0, [sp, #0x14]
+ mov r0, #0x0
+ str r0, [sp, #0x18]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02009978
+ add sp, #0x28
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_020091E0
+FUN_020091E0: ; 0x020091E0
+ push {r3-r7, lr}
+ sub sp, #0x20
+ add r5, r0, #0x0
+ add r7, r1, #0x0
+ add r4, r3, #0x0
+ str r2, [sp, #0x1c]
+ cmp r5, #0x0
+ bne _020091F4
+ bl ErrorHandling
+_020091F4:
+ ldr r0, [r5, #0x10]
+ cmp r0, #0x0
+ beq _020091FE
+ bl ErrorHandling
+_020091FE:
+ add r0, r5, #0x0
+ bl FUN_020097D0
+ add r6, r0, #0x0
+ bne _0200920C
+ bl ErrorHandling
+_0200920C:
+ ldr r0, [sp, #0x38]
+ str r4, [sp, #0x0]
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x3c]
+ mov r1, #0x0
+ str r0, [sp, #0x8]
+ str r1, [sp, #0xc]
+ ldr r0, [sp, #0x40]
+ str r1, [sp, #0x10]
+ str r0, [sp, #0x14]
+ str r1, [sp, #0x18]
+ ldr r3, [sp, #0x1c]
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r7, #0x0
+ bl FUN_020099B0
+ ldr r0, [r5, #0xc]
+ add r0, r0, #0x1
+ str r0, [r5, #0xc]
+ add r0, r6, #0x0
+ add sp, #0x20
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200923C
+FUN_0200923C: ; 0x0200923C
+ push {r3-r7, lr}
+ sub sp, #0x20
+ add r5, r0, #0x0
+ add r7, r1, #0x0
+ add r4, r3, #0x0
+ str r2, [sp, #0x1c]
+ cmp r5, #0x0
+ bne _02009250
+ bl ErrorHandling
+_02009250:
+ ldr r0, [r5, #0x10]
+ cmp r0, #0x0
+ beq _0200925A
+ bl ErrorHandling
+_0200925A:
+ add r0, r5, #0x0
+ bl FUN_020097D0
+ add r6, r0, #0x0
+ bne _02009268
+ bl ErrorHandling
+_02009268:
+ ldr r0, [sp, #0x38]
+ str r4, [sp, #0x0]
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x3c]
+ ldr r3, [sp, #0x1c]
+ str r0, [sp, #0x8]
+ mov r0, #0x0
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x40]
+ add r1, r6, #0x0
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x44]
+ add r2, r7, #0x0
+ str r0, [sp, #0x18]
+ add r0, r5, #0x0
+ bl FUN_020099B0
+ ldr r0, [r5, #0xc]
+ add r0, r0, #0x1
+ str r0, [r5, #0xc]
+ add r0, r6, #0x0
+ add sp, #0x20
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02009298
+FUN_02009298: ; 0x02009298
+ push {r3-r7, lr}
+ sub sp, #0x20
+ add r5, r0, #0x0
+ add r7, r1, #0x0
+ add r4, r3, #0x0
+ str r2, [sp, #0x1c]
+ cmp r5, #0x0
+ bne _020092AC
+ bl ErrorHandling
+_020092AC:
+ ldr r0, [r5, #0x10]
+ cmp r0, #0x1
+ beq _020092B6
+ bl ErrorHandling
+_020092B6:
+ add r0, r5, #0x0
+ bl FUN_020097D0
+ add r6, r0, #0x0
+ bne _020092C4
+ bl ErrorHandling
+_020092C4:
+ ldr r0, [sp, #0x38]
+ str r4, [sp, #0x0]
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x3c]
+ ldr r3, [sp, #0x1c]
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x40]
+ add r1, r6, #0x0
+ str r0, [sp, #0xc]
+ mov r0, #0x1
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x44]
+ add r2, r7, #0x0
+ str r0, [sp, #0x14]
+ mov r0, #0x0
+ str r0, [sp, #0x18]
+ add r0, r5, #0x0
+ bl FUN_020099B0
+ ldr r0, [r5, #0xc]
+ add r0, r0, #0x1
+ str r0, [r5, #0xc]
+ add r0, r6, #0x0
+ add sp, #0x20
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020092F8
+FUN_020092F8: ; 0x020092F8
+ push {r3-r7, lr}
+ sub sp, #0x20
+ add r5, r0, #0x0
+ add r7, r1, #0x0
+ add r4, r3, #0x0
+ str r2, [sp, #0x1c]
+ cmp r5, #0x0
+ bne _0200930C
+ bl ErrorHandling
+_0200930C:
+ ldr r0, [r5, #0x10]
+ cmp r0, #0x1
+ beq _02009316
+ bl ErrorHandling
+_02009316:
+ add r0, r5, #0x0
+ bl FUN_020097D0
+ add r6, r0, #0x0
+ bne _02009324
+ bl ErrorHandling
+_02009324:
+ ldr r0, [sp, #0x38]
+ str r4, [sp, #0x0]
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x3c]
+ ldr r3, [sp, #0x1c]
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x40]
+ add r1, r6, #0x0
+ str r0, [sp, #0xc]
+ mov r0, #0x1
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x44]
+ add r2, r7, #0x0
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x48]
+ str r0, [sp, #0x18]
+ add r0, r5, #0x0
+ bl FUN_020099B0
+ ldr r0, [r5, #0xc]
+ add r0, r0, #0x1
+ str r0, [r5, #0xc]
+ add r0, r6, #0x0
+ add sp, #0x20
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02009358
+FUN_02009358: ; 0x02009358
+ push {r3-r7, lr}
+ sub sp, #0x20
+ add r5, r0, #0x0
+ add r7, r1, #0x0
+ add r4, r3, #0x0
+ str r2, [sp, #0x1c]
+ cmp r5, #0x0
+ bne _0200936C
+ bl ErrorHandling
+_0200936C:
+ add r0, r5, #0x0
+ bl FUN_020097D0
+ add r6, r0, #0x0
+ bne _0200937A
+ bl ErrorHandling
+_0200937A:
+ ldr r0, [sp, #0x38]
+ str r4, [sp, #0x0]
+ str r0, [sp, #0x4]
+ mov r1, #0x0
+ str r1, [sp, #0x8]
+ ldr r0, [sp, #0x3c]
+ str r1, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x40]
+ ldr r3, [sp, #0x1c]
+ str r0, [sp, #0x14]
+ str r1, [sp, #0x18]
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r7, #0x0
+ bl FUN_020099B0
+ ldr r0, [r5, #0xc]
+ add r0, r0, #0x1
+ str r0, [r5, #0xc]
+ add r0, r6, #0x0
+ add sp, #0x20
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_020093A8
+FUN_020093A8: ; 0x020093A8
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ add r7, r3, #0x0
+ cmp r5, #0x0
+ bne _020093BC
+ bl ErrorHandling
+_020093BC:
+ cmp r4, #0x0
+ bne _020093C4
+ bl ErrorHandling
+_020093C4:
+ str r6, [sp, #0x0]
+ str r7, [sp, #0x4]
+ ldr r3, [r4, #0x4]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r2, #0x0
+ bl FUN_020093DC
+ ldr r0, [r4, #0x4]
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020093DC
+FUN_020093DC: ; 0x020093DC
+ push {r3-r7, lr}
+ sub sp, #0x8
+ str r0, [sp, #0x0]
+ add r5, r2, #0x0
+ ldr r0, [sp, #0x24]
+ add r7, r5, r3
+ str r1, [sp, #0x4]
+ ldr r4, [sp, #0x20]
+ str r0, [sp, #0x24]
+ cmp r5, r7
+ bge _02009420
+ add r6, r4, #0x0
+ add r6, #0x8
+_020093F6:
+ ldr r0, [sp, #0x0]
+ ldr r1, [sp, #0x4]
+ ldr r3, [sp, #0x24]
+ add r2, r5, #0x0
+ bl FUN_02008E6C
+ cmp r4, #0x0
+ beq _0200941A
+ ldr r2, [r4, #0x8]
+ ldr r1, [r4, #0x4]
+ cmp r1, r2
+ ble _0200941A
+ ldr r1, [r4, #0x0]
+ lsl r2, r2, #0x2
+ str r0, [r1, r2]
+ ldr r0, [r6, #0x0]
+ add r0, r0, #0x1
+ str r0, [r6, #0x0]
+_0200941A:
+ add r5, r5, #0x1
+ cmp r5, r7
+ blt _020093F6
+_02009420:
+ add sp, #0x8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02009424
+FUN_02009424: ; 0x02009424
+ push {r4-r6, lr}
+ add r6, r1, #0x0
+ add r5, r0, #0x0
+ add r0, r6, #0x0
+ mov r1, #0xc
+ bl FUN_02016998
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ lsl r1, r5, #0x2
+ bl FUN_02016998
+ str r0, [r4, #0x0]
+ str r5, [r4, #0x4]
+ mov r0, #0x0
+ str r0, [r4, #0x8]
+ add r0, r4, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02009448
+FUN_02009448: ; 0x02009448
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_02016A18
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200945C
+FUN_0200945C: ; 0x0200945C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r5, #0x0
+ bne _0200946A
+ bl ErrorHandling
+_0200946A:
+ ldr r0, [r5, #0x0]
+ add r1, r4, #0x0
+ bl FUN_02020CB0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02009474
+FUN_02009474: ; 0x02009474
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _0200947E
+ bl ErrorHandling
+_0200947E:
+ add r0, r4, #0x0
+ bl FUN_02009920
+ ldr r0, [r4, #0x0]
+ mov r1, #0x0
+ bl FUN_02020E1C
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02009490
+FUN_02009490: ; 0x02009490
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r5, #0x0
+ bne _0200949E
+ bl ErrorHandling
+_0200949E:
+ ldr r0, [r5, #0x4]
+ cmp r0, #0x0
+ bne _020094A8
+ bl ErrorHandling
+_020094A8:
+ add r0, r4, #0x0
+ bl FUN_02009920
+ ldr r0, [r5, #0x0]
+ ldr r1, [r4, #0x0]
+ bl FUN_02020D68
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+ ldr r0, [r5, #0xc]
+ sub r0, r0, #0x1
+ str r0, [r5, #0xc]
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020094C4
+FUN_020094C4: ; 0x020094C4
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x8]
+ mov r6, #0x0
+ cmp r0, #0x0
+ ble _020094EC
+ add r4, r6, #0x0
+_020094D2:
+ ldr r1, [r5, #0x4]
+ ldr r0, [r1, r4]
+ cmp r0, #0x0
+ beq _020094E2
+ add r0, r5, #0x0
+ add r1, r1, r4
+ bl FUN_02009490
+_020094E2:
+ ldr r0, [r5, #0x8]
+ add r6, r6, #0x1
+ add r4, #0xc
+ cmp r6, r0
+ blt _020094D2
+_020094EC:
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_020094F0
+FUN_020094F0: ; 0x020094F0
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r7, r1, #0x0
+ cmp r5, #0x0
+ bne _020094FE
+ bl ErrorHandling
+_020094FE:
+ ldr r0, [r5, #0x8]
+ mov r6, #0x0
+ cmp r0, #0x0
+ ble _0200952C
+ add r4, r6, #0x0
+_02009508:
+ ldr r0, [r5, #0x4]
+ ldr r0, [r0, r4]
+ cmp r0, #0x0
+ beq _02009522
+ bl FUN_02020E38
+ cmp r0, r7
+ bne _02009522
+ mov r0, #0xc
+ ldr r1, [r5, #0x4]
+ mul r0, r6
+ add r0, r1, r0
+ pop {r3-r7, pc}
+_02009522:
+ ldr r0, [r5, #0x8]
+ add r6, r6, #0x1
+ add r4, #0xc
+ cmp r6, r0
+ blt _02009508
+_0200952C:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02009530
+FUN_02009530: ; 0x02009530
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _0200953A
+ bl ErrorHandling
+_0200953A:
+ ldr r0, [r4, #0x0]
+ bl FUN_02020E38
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02009544
+FUN_02009544: ; 0x02009544
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x0
+ beq _02009552
+ bl ErrorHandling
+_02009552:
+ add r0, r4, #0x0
+ bl FUN_02009934
+ ldr r0, [r0, #0x0]
+ pop {r4, pc}
+
+ thumb_func_start FUN_0200955C
+FUN_0200955C: ; 0x0200955C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x1
+ beq _0200956A
+ bl ErrorHandling
+_0200956A:
+ add r0, r4, #0x0
+ bl FUN_02009934
+ ldr r0, [r0, #0x0]
+ pop {r4, pc}
+
+ thumb_func_start FUN_02009574
+FUN_02009574: ; 0x02009574
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x2
+ beq _02009582
+ bl ErrorHandling
+_02009582:
+ add r0, r4, #0x0
+ bl FUN_02009934
+ ldr r0, [r0, #0x0]
+ pop {r4, pc}
+
+ thumb_func_start FUN_0200958C
+FUN_0200958C: ; 0x0200958C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x3
+ beq _0200959A
+ bl ErrorHandling
+_0200959A:
+ add r0, r4, #0x0
+ bl FUN_02009934
+ ldr r0, [r0, #0x0]
+ pop {r4, pc}
+
+ thumb_func_start FUN_020095A4
+FUN_020095A4: ; 0x020095A4
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x4
+ beq _020095B2
+ bl ErrorHandling
+_020095B2:
+ add r0, r4, #0x0
+ bl FUN_02009934
+ ldr r0, [r0, #0x0]
+ pop {r4, pc}
+
+ thumb_func_start FUN_020095BC
+FUN_020095BC: ; 0x020095BC
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x5
+ beq _020095CA
+ bl ErrorHandling
+_020095CA:
+ add r0, r4, #0x0
+ bl FUN_02009934
+ ldr r0, [r0, #0x0]
+ pop {r4, pc}
+
+ thumb_func_start FUN_020095D4
+FUN_020095D4: ; 0x020095D4
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _020095DE
+ bl ErrorHandling
+_020095DE:
+ ldr r0, [r4, #0x4]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020095E4
+FUN_020095E4: ; 0x020095E4
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _020095EE
+ bl ErrorHandling
+_020095EE:
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x0
+ bne _020095FE
+ add r0, r4, #0x0
+ bl FUN_02009934
+ ldr r0, [r0, #0x4]
+ pop {r4, pc}
+_020095FE:
+ cmp r0, #0x1
+ bne _0200960C
+ add r0, r4, #0x0
+ bl FUN_02009934
+ ldr r0, [r0, #0x4]
+ pop {r4, pc}
+_0200960C:
+ mov r0, #0x0
+ pop {r4, pc}
+
+ thumb_func_start FUN_02009610
+FUN_02009610: ; 0x02009610
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _0200961A
+ bl ErrorHandling
+_0200961A:
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x1
+ bne _0200962A
+ add r0, r4, #0x0
+ bl FUN_02009934
+ ldr r0, [r0, #0x8]
+ pop {r4, pc}
+_0200962A:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02009630
+FUN_02009630: ; 0x02009630
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r5, #0x0
+ bne _0200963E
+ bl ErrorHandling
+_0200963E:
+ ldr r0, [r5, #0x4]
+ cmp r0, #0x0
+ bne _0200964C
+ add r0, r5, #0x0
+ bl FUN_02009934
+ str r4, [r0, #0x4]
+_0200964C:
+ ldr r0, [r5, #0x4]
+ cmp r0, #0x1
+ bne _0200965A
+ add r0, r5, #0x0
+ bl FUN_02009934
+ str r4, [r0, #0x4]
+_0200965A:
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0200965C
+FUN_0200965C: ; 0x0200965C
+ mov r0, #0x10
+ bx lr
+
+ thumb_func_start FUN_02009660
+FUN_02009660: ; 0x02009660
+ lsl r1, r1, #0x4
+ add r0, r0, r1
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02009668
+FUN_02009668: ; 0x02009668
+ push {r4-r6, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ cmp r4, #0x0
+ bne _02009678
+ bl ErrorHandling
+_02009678:
+ ldr r0, [r5, #0x0]
+ str r0, [r4, #0x8]
+ mov r0, #0x1
+ strb r0, [r4, #0xc]
+ add r0, r5, #0x4
+ bl FUN_020099E8
+ add r2, r0, #0x0
+ str r0, [r4, #0x4]
+ cmp r2, #0x0
+ ble _0200969A
+ mov r1, #0x18
+ add r0, r6, #0x0
+ mul r1, r2
+ bl FUN_02016998
+ b _0200969C
+_0200969A:
+ mov r0, #0x0
+_0200969C:
+ str r0, [r4, #0x0]
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ beq _020096B0
+ ldr r3, [r4, #0x4]
+ mov r2, #0x18
+ add r1, r5, #0x4
+ mul r2, r3
+ blx FUN_020DF438
+_020096B0:
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_020096B4
+FUN_020096B4: ; 0x020096B4
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ beq _020096C2
+ bl FUN_02016A18
+_020096C2:
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+ str r0, [r4, #0x4]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020096CC
+FUN_020096CC: ; 0x020096CC
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _020096D6
+ bl ErrorHandling
+_020096D6:
+ ldr r0, [r4, #0x4]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020096DC
+FUN_020096DC: ; 0x020096DC
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r5, #0x0
+ bne _020096EA
+ bl ErrorHandling
+_020096EA:
+ ldr r0, [r5, #0x4]
+ cmp r0, r4
+ bgt _020096F4
+ bl ErrorHandling
+_020096F4:
+ ldrb r0, [r5, #0xc]
+ ldr r1, [r5, #0x0]
+ cmp r0, #0x0
+ bne _02009704
+ mov r0, #0x4c
+ mul r0, r4
+ ldr r0, [r1, r0]
+ pop {r3-r5, pc}
+_02009704:
+ mov r0, #0x18
+ mul r0, r4
+ add r0, r1, r0
+ ldr r0, [r0, #0xc]
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02009710
+FUN_02009710: ; 0x02009710
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r5, #0x0
+ bne _0200971E
+ bl ErrorHandling
+_0200971E:
+ ldr r0, [r5, #0x4]
+ cmp r0, r4
+ bgt _02009728
+ bl ErrorHandling
+_02009728:
+ ldrb r0, [r5, #0xc]
+ cmp r0, #0x1
+ bne _02009738
+ mov r0, #0x18
+ ldr r1, [r5, #0x0]
+ mul r0, r4
+ add r0, r1, r0
+ ldr r6, [r0, #0x4]
+_02009738:
+ add r0, r6, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0200973C
+FUN_0200973C: ; 0x0200973C
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r5, #0x0
+ bne _0200974A
+ bl ErrorHandling
+_0200974A:
+ ldr r0, [r5, #0x4]
+ cmp r0, r4
+ bgt _02009754
+ bl ErrorHandling
+_02009754:
+ ldrb r0, [r5, #0xc]
+ cmp r0, #0x1
+ bne _02009764
+ mov r0, #0x18
+ ldr r1, [r5, #0x0]
+ mul r0, r4
+ add r0, r1, r0
+ ldr r6, [r0, #0x8]
+_02009764:
+ add r0, r6, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02009768
+FUN_02009768: ; 0x02009768
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r5, #0x0
+ bne _02009776
+ bl ErrorHandling
+_02009776:
+ ldr r0, [r5, #0x4]
+ cmp r0, r4
+ bgt _02009780
+ bl ErrorHandling
+_02009780:
+ ldrb r0, [r5, #0xc]
+ ldr r1, [r5, #0x0]
+ cmp r0, #0x0
+ bne _02009792
+ mov r0, #0x4c
+ mul r0, r4
+ add r0, r1, r0
+ ldr r0, [r0, #0x44]
+ pop {r3-r5, pc}
+_02009792:
+ mov r0, #0x18
+ mul r0, r4
+ add r0, r1, r0
+ ldr r0, [r0, #0x10]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0200979C
+FUN_0200979C: ; 0x0200979C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r5, #0x0
+ bne _020097AA
+ bl ErrorHandling
+_020097AA:
+ ldr r0, [r5, #0x4]
+ cmp r0, r4
+ bgt _020097B4
+ bl ErrorHandling
+_020097B4:
+ ldrb r0, [r5, #0xc]
+ ldr r1, [r5, #0x0]
+ cmp r0, #0x0
+ bne _020097C6
+ mov r0, #0x4c
+ mul r0, r4
+ add r0, r1, r0
+ ldr r0, [r0, #0x48]
+ pop {r3-r5, pc}
+_020097C6:
+ mov r0, #0x18
+ mul r0, r4
+ add r0, r1, r0
+ ldr r0, [r0, #0x14]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_020097D0
+FUN_020097D0: ; 0x020097D0
+ push {r3-r4}
+ ldr r4, [r0, #0x8]
+ mov r1, #0x0
+ cmp r4, #0x0
+ ble _020097F6
+ ldr r3, [r0, #0x4]
+ add r2, r3, #0x0
+_020097DE:
+ ldr r0, [r2, #0x0]
+ cmp r0, #0x0
+ bne _020097EE
+ mov r0, #0xc
+ mul r0, r1
+ add r0, r3, r0
+ pop {r3-r4}
+ bx lr
+_020097EE:
+ add r1, r1, #0x1
+ add r2, #0xc
+ cmp r1, r4
+ blt _020097DE
+_020097F6:
+ mov r0, #0x0
+ pop {r3-r4}
+ bx lr
+
+ thumb_func_start FUN_020097FC
+FUN_020097FC: ; 0x020097FC
+ push {r3-r7, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ add r6, r1, #0x0
+ add r7, r2, #0x0
+ str r3, [sp, #0x0]
+ ldr r5, [sp, #0x18]
+ bl FUN_02020E0C
+ cmp r6, #0x5
+ bhi _0200986A
+ add r1, r6, r6
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0200981E: ; jump table (using 16-bit offset)
+ .short _0200982A - _0200981E - 2; case 0
+ .short _02009836 - _0200981E - 2; case 1
+ .short _02009844 - _0200981E - 2; case 2
+ .short _0200984E - _0200981E - 2; case 3
+ .short _02009858 - _0200981E - 2; case 4
+ .short _02009862 - _0200981E - 2; case 5
+_0200982A:
+ add r1, r7, #0x0
+ add r2, r5, #0x0
+ bl FUN_0200986C
+ str r0, [r4, #0x8]
+ pop {r3-r7, pc}
+_02009836:
+ ldr r2, [sp, #0x0]
+ add r1, r7, #0x0
+ add r3, r5, #0x0
+ bl FUN_0200988C
+ str r0, [r4, #0x8]
+ pop {r3-r7, pc}
+_02009844:
+ add r1, r5, #0x0
+ bl FUN_020098B0
+ str r0, [r4, #0x8]
+ pop {r3-r7, pc}
+_0200984E:
+ add r1, r5, #0x0
+ bl FUN_020098CC
+ str r0, [r4, #0x8]
+ pop {r3-r7, pc}
+_02009858:
+ add r1, r5, #0x0
+ bl FUN_020098E8
+ str r0, [r4, #0x8]
+ pop {r3-r7, pc}
+_02009862:
+ add r1, r5, #0x0
+ bl FUN_02009904
+ str r0, [r4, #0x8]
+_0200986A:
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0200986C
+FUN_0200986C: ; 0x0200986C
+ push {r4-r6, lr}
+ add r6, r0, #0x0
+ add r5, r1, #0x0
+ add r0, r2, #0x0
+ mov r1, #0x8
+ bl FUN_02016998
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ blx FUN_020B0088
+ str r5, [r4, #0x4]
+ add r0, r4, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200988C
+FUN_0200988C: ; 0x0200988C
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ add r5, r1, #0x0
+ add r0, r3, #0x0
+ mov r1, #0xc
+ add r6, r2, #0x0
+ bl FUN_02016998
+ add r4, r0, #0x0
+ add r0, r7, #0x0
+ add r1, r4, #0x0
+ blx FUN_020B0138
+ str r5, [r4, #0x4]
+ str r6, [r4, #0x8]
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020098B0
+FUN_020098B0: ; 0x020098B0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, r1, #0x0
+ mov r1, #0x4
+ bl FUN_02016998
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ blx FUN_020AFEB8
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020098CC
+FUN_020098CC: ; 0x020098CC
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, r1, #0x0
+ mov r1, #0x4
+ bl FUN_02016998
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ blx FUN_020AFD94
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020098E8
+FUN_020098E8: ; 0x020098E8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, r1, #0x0
+ mov r1, #0x4
+ bl FUN_02016998
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ blx FUN_020AFFD8
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02009904
+FUN_02009904: ; 0x02009904
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, r1, #0x0
+ mov r1, #0x4
+ bl FUN_02016998
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ blx FUN_020AFD88
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02009920
+FUN_02009920: ; 0x02009920
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x8]
+ cmp r0, #0x0
+ beq _0200992E
+ bl FUN_02016A18
+_0200992E:
+ mov r0, #0x0
+ str r0, [r4, #0x8]
+ pop {r4, pc}
+
+ thumb_func_start FUN_02009934
+FUN_02009934: ; 0x02009934
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _0200993E
+ bl ErrorHandling
+_0200993E:
+ ldr r0, [r4, #0x8]
+ cmp r0, #0x0
+ bne _02009948
+ bl ErrorHandling
+_02009948:
+ ldr r0, [r4, #0x8]
+ pop {r4, pc}
+
+ thumb_func_start FUN_0200994C
+FUN_0200994C: ; 0x0200994C
+ push {r3-r4, lr}
+ sub sp, #0x4
+ add r4, r1, #0x0
+ add r1, r2, #0x0
+ add r2, r3, #0x0
+ ldr r0, [r0, #0x0]
+ ldr r3, [sp, #0x1c]
+ bl FUN_02020D10
+ str r0, [r4, #0x0]
+ ldr r1, [sp, #0x18]
+ ldr r0, [sp, #0x1c]
+ str r1, [r4, #0x4]
+ str r0, [sp, #0x0]
+ ldr r2, [sp, #0x10]
+ ldr r3, [sp, #0x14]
+ add r0, r4, #0x0
+ bl FUN_020097FC
+ add sp, #0x4
+ pop {r3-r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02009978
+FUN_02009978: ; 0x02009978
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, [sp, #0x28]
+ add r4, r1, #0x0
+ str r0, [sp, #0x0]
+ add r0, r2, #0x0
+ add r1, r3, #0x0
+ ldr r2, [sp, #0x10]
+ ldr r3, [sp, #0x24]
+ bl FUN_02006C98
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r2, [sp, #0x14]
+ bl FUN_02020CD4
+ str r0, [r4, #0x0]
+ ldr r1, [sp, #0x20]
+ ldr r0, [sp, #0x24]
+ str r1, [r4, #0x4]
+ str r0, [sp, #0x0]
+ ldr r2, [sp, #0x18]
+ ldr r3, [sp, #0x1c]
+ add r0, r4, #0x0
+ bl FUN_020097FC
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020099B0
+FUN_020099B0: ; 0x020099B0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, [sp, #0x28]
+ add r4, r1, #0x0
+ str r0, [sp, #0x0]
+ add r0, r2, #0x0
+ add r1, r3, #0x0
+ ldr r2, [sp, #0x10]
+ ldr r3, [sp, #0x24]
+ bl FUN_02009A04
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r2, [sp, #0x14]
+ bl FUN_02020CD4
+ str r0, [r4, #0x0]
+ ldr r1, [sp, #0x20]
+ ldr r0, [sp, #0x24]
+ str r1, [r4, #0x4]
+ str r0, [sp, #0x0]
+ ldr r2, [sp, #0x18]
+ ldr r3, [sp, #0x1c]
+ add r0, r4, #0x0
+ bl FUN_020097FC
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020099E8
+FUN_020099E8: ; 0x020099E8
+ mov r3, #0x0
+ ldr r2, [r0, #0x0]
+ sub r1, r3, #0x2
+ cmp r2, r1
+ beq _020099FE
+ sub r1, r3, #0x2
+_020099F4:
+ add r0, #0x18
+ ldr r2, [r0, #0x0]
+ add r3, r3, #0x1
+ cmp r2, r1
+ bne _020099F4
+_020099FE:
+ add r0, r3, #0x0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02009A04
+FUN_02009A04: ; 0x02009A04
+ push {r4-r6, lr}
+ add r6, r3, #0x0
+ add r5, r2, #0x0
+ add r2, r6, #0x0
+ bl FUN_02006704
+ add r4, r0, #0x0
+ beq _02009A4A
+ cmp r5, #0x0
+ beq _02009A4A
+ ldr r0, [sp, #0x10]
+ cmp r0, #0x0
+ bne _02009A2A
+ ldr r1, [r4, #0x0]
+ add r0, r6, #0x0
+ lsr r1, r1, #0x8
+ bl FUN_02016998
+ b _02009A34
+_02009A2A:
+ ldr r1, [r4, #0x0]
+ add r0, r6, #0x0
+ lsr r1, r1, #0x8
+ bl FUN_020169D8
+_02009A34:
+ add r5, r0, #0x0
+ cmp r5, #0x0
+ beq _02009A48
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ blx MI_UncompressLZ8
+ add r0, r4, #0x0
+ bl FUN_02016A18
+_02009A48:
+ add r4, r5, #0x0
+_02009A4A:
+ add r0, r4, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02009A50
+FUN_02009A50: ; 0x02009A50
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0x0
+ bne _02009A5C
+ bl ErrorHandling
+_02009A5C:
+ add r0, r4, #0x0
+ bl FUN_020095D4
+ cmp r0, #0x0
+ beq _02009A6A
+ bl ErrorHandling
+_02009A6A:
+ add r0, r4, #0x0
+ bl FUN_02009544
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ bl FUN_020095E4
+ str r0, [sp, #0x4]
+ add r0, r4, #0x0
+ bl FUN_02009530
+ str r0, [sp, #0x8]
+ mov r0, #0x0
+ str r0, [sp, #0xc]
+ add r0, sp, #0x0
+ bl FUN_0201D1F8
+ add sp, #0x10
+ pop {r4, pc}
+
+ thumb_func_start FUN_02009A90
+FUN_02009A90: ; 0x02009A90
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bne _02009A9A
+ bl ErrorHandling
+_02009A9A:
+ ldr r0, [r5, #0x4]
+ mov r6, #0x0
+ cmp r0, #0x0
+ ble _02009AC2
+ add r4, r6, #0x0
+_02009AA4:
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, r4]
+ cmp r0, #0x0
+ beq _02009AB8
+ bl FUN_02009A50
+ cmp r0, #0x0
+ bne _02009AB8
+ bl ErrorHandling
+_02009AB8:
+ ldr r0, [r5, #0x4]
+ add r6, r6, #0x1
+ add r4, r4, #0x4
+ cmp r6, r0
+ blt _02009AA4
+_02009AC2:
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02009AC4
+FUN_02009AC4: ; 0x02009AC4
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0x0
+ bne _02009AD0
+ bl ErrorHandling
+_02009AD0:
+ add r0, r4, #0x0
+ bl FUN_020095D4
+ cmp r0, #0x0
+ beq _02009ADE
+ bl ErrorHandling
+_02009ADE:
+ add r0, r4, #0x0
+ bl FUN_02009544
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ bl FUN_020095E4
+ str r0, [sp, #0x4]
+ add r0, r4, #0x0
+ bl FUN_02009530
+ str r0, [sp, #0x8]
+ mov r0, #0x0
+ str r0, [sp, #0xc]
+ add r0, sp, #0x0
+ bl FUN_0201D250
+ add sp, #0x10
+ pop {r4, pc}
+
+ thumb_func_start FUN_02009B04
+FUN_02009B04: ; 0x02009B04
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0x0
+ bne _02009B10
+ bl ErrorHandling
+_02009B10:
+ add r0, r4, #0x0
+ bl FUN_020095D4
+ cmp r0, #0x0
+ beq _02009B1E
+ bl ErrorHandling
+_02009B1E:
+ add r0, r4, #0x0
+ bl FUN_02009544
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ bl FUN_020095E4
+ str r0, [sp, #0x4]
+ add r0, r4, #0x0
+ bl FUN_02009530
+ str r0, [sp, #0x8]
+ mov r0, #0x1
+ str r0, [sp, #0xc]
+ add r0, sp, #0x0
+ bl FUN_0201D1F8
+ add sp, #0x10
+ pop {r4, pc}
+
+ thumb_func_start FUN_02009B44
+FUN_02009B44: ; 0x02009B44
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bne _02009B4E
+ bl ErrorHandling
+_02009B4E:
+ ldr r0, [r5, #0x4]
+ mov r6, #0x0
+ cmp r0, #0x0
+ ble _02009B76
+ add r4, r6, #0x0
+_02009B58:
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, r4]
+ cmp r0, #0x0
+ beq _02009B6C
+ bl FUN_02009B04
+ cmp r0, #0x0
+ bne _02009B6C
+ bl ErrorHandling
+_02009B6C:
+ ldr r0, [r5, #0x4]
+ add r6, r6, #0x1
+ add r4, r4, #0x4
+ cmp r6, r0
+ blt _02009B58
+_02009B76:
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02009B78
+FUN_02009B78: ; 0x02009B78
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0x0
+ bne _02009B84
+ bl ErrorHandling
+_02009B84:
+ add r0, r4, #0x0
+ bl FUN_020095D4
+ cmp r0, #0x0
+ beq _02009B92
+ bl ErrorHandling
+_02009B92:
+ add r0, r4, #0x0
+ bl FUN_02009544
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ bl FUN_020095E4
+ str r0, [sp, #0x4]
+ add r0, r4, #0x0
+ bl FUN_02009530
+ str r0, [sp, #0x8]
+ mov r0, #0x1
+ str r0, [sp, #0xc]
+ add r0, sp, #0x0
+ bl FUN_0201D250
+ add sp, #0x10
+ pop {r4, pc}
+
+ thumb_func_start FUN_02009BB8
+FUN_02009BB8: ; 0x02009BB8
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ add r5, r1, #0x0
+ cmp r4, #0x0
+ bne _02009BC6
+ bl ErrorHandling
+_02009BC6:
+ cmp r5, #0x0
+ bne _02009BCE
+ bl ErrorHandling
+_02009BCE:
+ add r0, r4, #0x0
+ bl FUN_02009530
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02009544
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0201D2DC
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02009BE8
+FUN_02009BE8: ; 0x02009BE8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bne _02009BF2
+ bl ErrorHandling
+_02009BF2:
+ add r0, r5, #0x0
+ bl FUN_02009530
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02009544
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0201D2DC
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02009C0C
+FUN_02009C0C: ; 0x02009C0C
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _02009C16
+ bl ErrorHandling
+_02009C16:
+ add r0, r4, #0x0
+ bl FUN_020095D4
+ cmp r0, #0x0
+ beq _02009C24
+ bl ErrorHandling
+_02009C24:
+ add r0, r4, #0x0
+ bl FUN_02009530
+ bl FUN_0201D324
+ pop {r4, pc}
+
+ thumb_func_start FUN_02009C30
+FUN_02009C30: ; 0x02009C30
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bne _02009C3A
+ bl ErrorHandling
+_02009C3A:
+ ldr r0, [r5, #0x4]
+ mov r6, #0x0
+ cmp r0, #0x0
+ ble _02009C5A
+ add r4, r6, #0x0
+_02009C44:
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, r4]
+ cmp r0, #0x0
+ beq _02009C50
+ bl FUN_02009C0C
+_02009C50:
+ ldr r0, [r5, #0x4]
+ add r6, r6, #0x1
+ add r4, r4, #0x4
+ cmp r6, r0
+ blt _02009C44
+_02009C5A:
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02009C5C
+FUN_02009C5C: ; 0x02009C5C
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _02009C66
+ bl ErrorHandling
+_02009C66:
+ add r0, r4, #0x0
+ bl FUN_020095D4
+ cmp r0, #0x0
+ beq _02009C74
+ bl ErrorHandling
+_02009C74:
+ add r0, r4, #0x0
+ bl FUN_02009530
+ bl FUN_0201D3B0
+ pop {r4, pc}
+
+ thumb_func_start FUN_02009C80
+FUN_02009C80: ; 0x02009C80
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ add r5, r1, #0x0
+ cmp r4, #0x0
+ bne _02009C8E
+ bl ErrorHandling
+_02009C8E:
+ add r0, r4, #0x0
+ bl FUN_020095D4
+ cmp r0, #0x0
+ beq _02009C9C
+ bl ErrorHandling
+_02009C9C:
+ cmp r5, #0x0
+ bne _02009CA4
+ bl ErrorHandling
+_02009CA4:
+ add r0, r5, #0x0
+ bl FUN_020095D4
+ cmp r0, #0x2
+ beq _02009CB2
+ bl ErrorHandling
+_02009CB2:
+ add r0, r4, #0x0
+ bl FUN_02009530
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02009574
+ add r1, r0, #0x0
+ ldr r1, [r1, #0xc]
+ add r0, r4, #0x0
+ ldr r1, [r1, #0x0]
+ bl FUN_0201D3D4
+ cmp r0, #0x0
+ bne _02009CDA
+ add r0, r4, #0x0
+ bl FUN_0201D3B0
+ bl FUN_0201D458
+_02009CDA:
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02009CDC
+FUN_02009CDC: ; 0x02009CDC
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _02009CE6
+ bl ErrorHandling
+_02009CE6:
+ add r0, r4, #0x0
+ bl FUN_0201D4F0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02009CF0
+FUN_02009CF0: ; 0x02009CF0
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0x0
+ bne _02009CFC
+ bl ErrorHandling
+_02009CFC:
+ add r0, r4, #0x0
+ bl FUN_020095D4
+ cmp r0, #0x1
+ beq _02009D0A
+ bl ErrorHandling
+_02009D0A:
+ add r0, r4, #0x0
+ bl FUN_0200955C
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ bl FUN_020095E4
+ str r0, [sp, #0x4]
+ add r0, r4, #0x0
+ bl FUN_02009530
+ str r0, [sp, #0xc]
+ add r0, r4, #0x0
+ bl FUN_02009610
+ str r0, [sp, #0x8]
+ add r0, sp, #0x0
+ bl FUN_0201E0E4
+ add sp, #0x10
+ pop {r4, pc}
+
+ thumb_func_start FUN_02009D34
+FUN_02009D34: ; 0x02009D34
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bne _02009D3E
+ bl ErrorHandling
+_02009D3E:
+ ldr r0, [r5, #0x4]
+ mov r6, #0x0
+ cmp r0, #0x0
+ ble _02009D66
+ add r4, r6, #0x0
+_02009D48:
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, r4]
+ cmp r0, #0x0
+ beq _02009D5C
+ bl FUN_02009CF0
+ cmp r0, #0x0
+ bne _02009D5C
+ bl ErrorHandling
+_02009D5C:
+ ldr r0, [r5, #0x4]
+ add r6, r6, #0x1
+ add r4, r4, #0x4
+ cmp r6, r0
+ blt _02009D48
+_02009D66:
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02009D68
+FUN_02009D68: ; 0x02009D68
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0x0
+ bne _02009D74
+ bl ErrorHandling
+_02009D74:
+ add r0, r4, #0x0
+ bl FUN_020095D4
+ cmp r0, #0x1
+ beq _02009D82
+ bl ErrorHandling
+_02009D82:
+ add r0, r4, #0x0
+ bl FUN_0200955C
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ bl FUN_020095E4
+ str r0, [sp, #0x4]
+ add r0, r4, #0x0
+ bl FUN_02009530
+ str r0, [sp, #0xc]
+ add r0, r4, #0x0
+ bl FUN_02009610
+ str r0, [sp, #0x8]
+ add r0, sp, #0x0
+ bl FUN_0201E128
+ add sp, #0x10
+ pop {r4, pc}
+
+ thumb_func_start FUN_02009DAC
+FUN_02009DAC: ; 0x02009DAC
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bne _02009DB6
+ bl ErrorHandling
+_02009DB6:
+ ldr r0, [r5, #0x4]
+ mov r6, #0x0
+ cmp r0, #0x0
+ ble _02009DDE
+ add r4, r6, #0x0
+_02009DC0:
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, r4]
+ cmp r0, #0x0
+ beq _02009DD4
+ bl FUN_02009D68
+ cmp r0, #0x0
+ bne _02009DD4
+ bl ErrorHandling
+_02009DD4:
+ ldr r0, [r5, #0x4]
+ add r6, r6, #0x1
+ add r4, r4, #0x4
+ cmp r6, r0
+ blt _02009DC0
+_02009DDE:
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02009DE0
+FUN_02009DE0: ; 0x02009DE0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bne _02009DEA
+ bl ErrorHandling
+_02009DEA:
+ add r0, r5, #0x0
+ bl FUN_02009530
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0200955C
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0201E168
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02009E04
+FUN_02009E04: ; 0x02009E04
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _02009E0E
+ bl ErrorHandling
+_02009E0E:
+ add r0, r4, #0x0
+ bl FUN_020095D4
+ cmp r0, #0x1
+ beq _02009E1C
+ bl ErrorHandling
+_02009E1C:
+ add r0, r4, #0x0
+ bl FUN_02009530
+ bl FUN_0201E1C8
+ pop {r4, pc}
+
+ thumb_func_start FUN_02009E28
+FUN_02009E28: ; 0x02009E28
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bne _02009E32
+ bl ErrorHandling
+_02009E32:
+ ldr r0, [r5, #0x4]
+ mov r6, #0x0
+ cmp r0, #0x0
+ ble _02009E52
+ add r4, r6, #0x0
+_02009E3C:
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, r4]
+ cmp r0, #0x0
+ beq _02009E48
+ bl FUN_02009E04
+_02009E48:
+ ldr r0, [r5, #0x4]
+ add r6, r6, #0x1
+ add r4, r4, #0x4
+ cmp r6, r0
+ blt _02009E3C
+_02009E52:
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02009E54
+FUN_02009E54: ; 0x02009E54
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r5, #0x0
+ bne _02009E62
+ bl ErrorHandling
+_02009E62:
+ add r0, r5, #0x0
+ bl FUN_020095D4
+ cmp r0, #0x1
+ beq _02009E70
+ bl ErrorHandling
+_02009E70:
+ add r0, r5, #0x0
+ bl FUN_02009530
+ cmp r4, #0x0
+ beq _02009E82
+ add r1, r4, #0x0
+ bl FUN_0201E258
+ pop {r3-r5, pc}
+_02009E82:
+ bl FUN_0201E230
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02009E88
+FUN_02009E88: ; 0x02009E88
+ push {r4, lr}
+ add r4, r1, #0x0
+ mov r1, #0x0
+ bl FUN_02009E54
+ add r1, r4, #0x0
+ blx FUN_020B19C4
+ mov r1, #0x0
+ mvn r1, r1
+ cmp r0, r1
+ beq _02009EA8
+ asr r1, r0, #0x4
+ lsr r1, r1, #0x1b
+ add r1, r0, r1
+ asr r0, r1, #0x5
+_02009EA8:
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02009EAC
+FUN_02009EAC: ; 0x02009EAC
+ push {r3-r4, lr}
+ sub sp, #0x14
+ add r4, r0, #0x0
+ cmp r4, #0x4
+ bge _02009EC0
+ mov r0, #0x4
+ cmp r1, #0x7c
+ ble _02009EC0
+ sub r4, r0, r4
+ sub r1, r1, r4
+_02009EC0:
+ cmp r2, #0x1
+ bge _02009ED0
+ mov r4, #0x1
+ cmp r3, #0x1e
+ ble _02009ED2
+ sub r2, r4, r2
+ sub r3, r3, r2
+ b _02009ED2
+_02009ED0:
+ add r4, r2, #0x0
+_02009ED2:
+ ldr r2, [sp, #0x20]
+ str r2, [sp, #0x0]
+ ldr r2, [sp, #0x24]
+ str r2, [sp, #0x4]
+ ldr r2, [sp, #0x28]
+ str r2, [sp, #0x8]
+ ldr r2, [sp, #0x2c]
+ str r2, [sp, #0xc]
+ ldr r2, [sp, #0x30]
+ str r2, [sp, #0x10]
+ add r2, r4, #0x0
+ bl FUN_02009EF0
+ add sp, #0x14
+ pop {r3-r4, pc}
+
+ thumb_func_start FUN_02009EF0
+FUN_02009EF0: ; 0x02009EF0
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ ldr r0, _02009F7C ; =0x021C4670
+ add r4, r1, #0x0
+ ldr r0, [r0, #0x0]
+ add r6, r2, #0x0
+ add r7, r3, #0x0
+ cmp r0, #0x0
+ beq _02009F08
+ bl ErrorHandling
+_02009F08:
+ ldr r0, [sp, #0x30]
+ mov r1, #0x3c
+ bl FUN_02016998
+ ldr r1, _02009F7C ; =0x021C4670
+ cmp r0, #0x0
+ str r0, [r1, #0x0]
+ bne _02009F1C
+ bl ErrorHandling
+_02009F1C:
+ ldr r1, _02009F7C ; =0x021C4670
+ lsl r3, r6, #0x10
+ ldr r2, [sp, #0x30]
+ ldr r0, [r1, #0x0]
+ lsr r3, r3, #0x10
+ str r2, [r0, #0x38]
+ lsl r0, r7, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x0]
+ mov r0, #0x0
+ str r0, [sp, #0x4]
+ ldr r0, [r1, #0x0]
+ lsl r1, r5, #0x10
+ lsl r2, r4, #0x10
+ lsr r1, r1, #0x10
+ lsr r2, r2, #0x10
+ blx FUN_020B0E34
+ cmp r0, #0x0
+ bne _02009F48
+ bl ErrorHandling
+_02009F48:
+ ldr r0, [sp, #0x2c]
+ ldr r1, [sp, #0x20]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ ldr r0, _02009F7C ; =0x021C4670
+ ldr r2, [sp, #0x24]
+ ldr r3, [sp, #0x28]
+ ldr r0, [r0, #0x0]
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x10
+ add r0, #0x1c
+ lsr r1, r1, #0x10
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x10
+ blx FUN_020B0E34
+ cmp r0, #0x0
+ bne _02009F78
+ bl ErrorHandling
+_02009F78:
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+_02009F7C: .word 0x021C4670
+
+ thumb_func_start FUN_02009F80
+FUN_02009F80: ; 0x02009F80
+ push {r3, lr}
+ ldr r0, _02009F9C ; =0x021C4670
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _02009F98
+ blx FUN_020B0870
+ ldr r0, _02009F9C ; =0x021C4670
+ ldr r0, [r0, #0x0]
+ add r0, #0x1c
+ blx FUN_020B0870
+_02009F98:
+ pop {r3, pc}
+ nop
+_02009F9C: .word 0x021C4670
+
+ thumb_func_start FUN_02009FA0
+FUN_02009FA0: ; 0x02009FA0
+ push {r3, lr}
+ ldr r0, _02009FD4 ; =0x021C4670
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _02009FAE
+ bl ErrorHandling
+_02009FAE:
+ ldr r0, _02009FD4 ; =0x021C4670
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x38]
+ bl FUN_0200A064
+ ldr r0, _02009FD4 ; =0x021C4670
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x38]
+ bl FUN_0200A06C
+ ldr r0, _02009FD4 ; =0x021C4670
+ ldr r0, [r0, #0x0]
+ bl FUN_02016A18
+ ldr r0, _02009FD4 ; =0x021C4670
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+ pop {r3, pc}
+ nop
+_02009FD4: .word 0x021C4670
+
+ thumb_func_start FUN_02009FD8
+FUN_02009FD8: ; 0x02009FD8
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r6, r0, #0x0
+ ldr r0, _0200A024 ; =0x021C4670
+ add r7, r1, #0x0
+ ldr r0, [r0, #0x0]
+ add r5, r2, #0x0
+ add r4, r3, #0x0
+ cmp r0, #0x0
+ bne _02009FF0
+ bl ErrorHandling
+_02009FF0:
+ cmp r5, #0x1
+ bne _0200A00C
+ ldr r0, _0200A028 ; =FUN_020213A0
+ ldr r2, _0200A02C ; =FUN_0200A074
+ str r0, [sp, #0x0]
+ str r5, [sp, #0x4]
+ ldr r3, _0200A030 ; =FUN_0200A0B8
+ add r0, r6, #0x0
+ add r1, r7, #0x0
+ str r4, [sp, #0x8]
+ bl FUN_0202135C
+ add sp, #0xc
+ pop {r4-r7, pc}
+_0200A00C:
+ ldr r0, _0200A028 ; =FUN_020213A0
+ ldr r2, _0200A034 ; =FUN_0200A094
+ str r0, [sp, #0x0]
+ str r5, [sp, #0x4]
+ ldr r3, _0200A038 ; =FUN_0200A0DC
+ add r0, r6, #0x0
+ add r1, r7, #0x0
+ str r4, [sp, #0x8]
+ bl FUN_0202135C
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+_0200A024: .word 0x021C4670
+_0200A028: .word FUN_020213A0
+_0200A02C: .word FUN_0200A074
+_0200A030: .word FUN_0200A0B8
+_0200A034: .word FUN_0200A094
+_0200A038: .word FUN_0200A0DC
+
+ thumb_func_start FUN_0200A03C
+FUN_0200A03C: ; 0x0200A03C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _0200A060 ; =0x021C4670
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _0200A04C
+ bl ErrorHandling
+_0200A04C:
+ cmp r4, #0x0
+ bne _0200A056
+ ldr r0, _0200A060 ; =0x021C4670
+ ldr r0, [r0, #0x0]
+ pop {r4, pc}
+_0200A056:
+ ldr r0, _0200A060 ; =0x021C4670
+ ldr r0, [r0, #0x0]
+ add r0, #0x1c
+ pop {r4, pc}
+ nop
+_0200A060: .word 0x021C4670
+
+ thumb_func_start FUN_0200A064
+FUN_0200A064: ; 0x0200A064
+ ldr r3, _0200A068 ; =FUN_020203CC
+ bx r3
+ .balign 4
+_0200A068: .word FUN_020203CC
+
+ thumb_func_start FUN_0200A06C
+FUN_0200A06C: ; 0x0200A06C
+ ldr r3, _0200A070 ; =FUN_02020404
+ bx r3
+ .balign 4
+_0200A070: .word FUN_02020404
+
+ thumb_func_start FUN_0200A074
+FUN_0200A074: ; 0x0200A074
+ push {r4, lr}
+ add r3, r0, #0x0
+ ldr r0, _0200A090 ; =0x021C4670
+ add r2, r1, #0x0
+ ldr r0, [r0, #0x0]
+ add r1, r3, #0x0
+ blx FUN_020B0C7C
+ add r4, r0, #0x0
+ bne _0200A08C
+ bl ErrorHandling
+_0200A08C:
+ add r0, r4, #0x0
+ pop {r4, pc}
+ .balign 4
+_0200A090: .word 0x021C4670
+
+ thumb_func_start FUN_0200A094
+FUN_0200A094: ; 0x0200A094
+ push {r4, lr}
+ add r3, r0, #0x0
+ ldr r0, _0200A0B4 ; =0x021C4670
+ add r2, r1, #0x0
+ ldr r0, [r0, #0x0]
+ add r1, r3, #0x0
+ add r0, #0x1c
+ blx FUN_020B0C7C
+ add r4, r0, #0x0
+ bne _0200A0AE
+ bl ErrorHandling
+_0200A0AE:
+ add r0, r4, #0x0
+ pop {r4, pc}
+ nop
+_0200A0B4: .word 0x021C4670
+
+ thumb_func_start FUN_0200A0B8
+FUN_0200A0B8: ; 0x0200A0B8
+ push {r4, lr}
+ add r1, r0, #0x0
+ ldr r0, _0200A0D4 ; =0x021C4670
+ ldr r0, [r0, #0x0]
+ blx FUN_020B0BB0
+ add r4, r0, #0x0
+ ldr r0, _0200A0D8 ; =0x0000FFFE
+ cmp r4, r0
+ bne _0200A0D0
+ bl ErrorHandling
+_0200A0D0:
+ add r0, r4, #0x0
+ pop {r4, pc}
+ .balign 4
+_0200A0D4: .word 0x021C4670
+_0200A0D8: .word 0x0000FFFE
+
+ thumb_func_start FUN_0200A0DC
+FUN_0200A0DC: ; 0x0200A0DC
+ push {r4, lr}
+ add r1, r0, #0x0
+ ldr r0, _0200A0FC ; =0x021C4670
+ ldr r0, [r0, #0x0]
+ add r0, #0x1c
+ blx FUN_020B0BB0
+ add r4, r0, #0x0
+ ldr r0, _0200A100 ; =0x0000FFFE
+ cmp r4, r0
+ bne _0200A0F6
+ bl ErrorHandling
+_0200A0F6:
+ add r0, r4, #0x0
+ pop {r4, pc}
+ nop
+_0200A0FC: .word 0x021C4670
+_0200A100: .word 0x0000FFFE
+
+ thumb_func_start FUN_0200A104
+FUN_0200A104: ; 0x0200A104
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ mov r0, #0x10
+ ldrsb r2, [r5, r0]
+ mov r0, #0x14
+ ldrsh r0, [r5, r0]
+ add r1, r2, #0x0
+ mov r7, #0x1a
+ ldrsh r2, [r5, r7]
+ mul r1, r0
+ mov r6, #0xa
+ ldrsh r0, [r5, r6]
+ add r1, r2, r1
+ mov r4, #0x0
+ cmp r0, r1
+ beq _0200A162
+ cmp r2, r0
+ beq _0200A162
+ strh r1, [r5, #0x1a]
+ ldrh r3, [r5, #0x18]
+ ldrh r0, [r5, #0x16]
+ add r2, r5, #0x0
+ add r1, r5, #0x0
+ add r0, r3, r0
+ strh r0, [r5, #0x18]
+ ldrh r3, [r5, #0x18]
+ ldrh r0, [r5, #0x8]
+ add r2, #0x1a
+ add r1, #0x18
+ cmp r3, r0
+ blo _0200A166
+ mov r3, #0x10
+ ldrsh r0, [r2, r4]
+ ldrsb r3, [r5, r3]
+ add r0, r0, r3
+ strh r0, [r2, #0x0]
+ ldrsh r2, [r5, r7]
+ ldrsh r0, [r5, r6]
+ cmp r2, r0
+ beq _0200A15E
+ ldrh r2, [r1, #0x0]
+ ldrh r0, [r5, #0x8]
+ sub r0, r2, r0
+ strh r0, [r1, #0x0]
+ b _0200A166
+_0200A15E:
+ mov r4, #0x1
+ b _0200A166
+_0200A162:
+ strh r0, [r5, #0x1a]
+ mov r4, #0x1
+_0200A166:
+ ldr r1, [r5, #0x4]
+ mov r0, #0x1
+ tst r0, r1
+ beq _0200A17C
+ mov r2, #0x1a
+ ldrsh r2, [r5, r2]
+ ldr r0, _0200A198 ; =0x04000050
+ ldr r1, [r5, #0x0]
+ blx FUN_020C74B8
+ b _0200A18E
+_0200A17C:
+ mov r0, #0x2
+ tst r0, r1
+ beq _0200A18E
+ mov r2, #0x1a
+ ldrsh r2, [r5, r2]
+ ldr r0, _0200A19C ; =0x04001050
+ ldr r1, [r5, #0x0]
+ blx FUN_020C74B8
+_0200A18E:
+ cmp r4, #0x1
+ bne _0200A196
+ mov r0, #0x0
+ str r0, [r5, #0x1c]
+_0200A196:
+ pop {r3-r7, pc}
+ .balign 4
+_0200A198: .word 0x04000050
+_0200A19C: .word 0x04001050
+
+ thumb_func_start FUN_0200A1A0
+FUN_0200A1A0: ; 0x0200A1A0
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x1c]
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ add r7, r3, #0x0
+ cmp r0, #0x0
+ beq _0200A1B4
+ bl ErrorHandling
+_0200A1B4:
+ ldr r1, [sp, #0x18]
+ mov r0, #0x1
+ lsl r1, r1, #0x18
+ str r0, [r5, #0x1c]
+ lsr r1, r1, #0x18
+ str r1, [r5, #0x0]
+ ldr r1, [sp, #0x1c]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ str r1, [r5, #0x4]
+ strh r4, [r5, #0x8]
+ strh r6, [r5, #0xa]
+ strh r7, [r5, #0x1a]
+ sub r1, r7, r6
+ strh r1, [r5, #0x12]
+ mov r1, #0x12
+ ldrsh r2, [r5, r1]
+ cmp r2, #0x0
+ ble _0200A1E0
+ sub r1, #0x13
+ strb r1, [r5, #0x10]
+ b _0200A1EA
+_0200A1E0:
+ strb r0, [r5, #0x10]
+ ldrsh r0, [r5, r1]
+ sub r1, #0x13
+ mul r1, r0
+ strh r1, [r5, #0x12]
+_0200A1EA:
+ mov r0, #0x12
+ ldrsh r0, [r5, r0]
+ add r1, r4, #0x0
+ blx _s32_div_f
+ strh r0, [r5, #0x14]
+ mov r0, #0x12
+ ldrsh r0, [r5, r0]
+ add r1, r4, #0x0
+ blx _s32_div_f
+ strh r1, [r5, #0x16]
+ mov r0, #0x0
+ strh r0, [r5, #0x18]
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0200A208
+FUN_0200A208: ; 0x0200A208
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ add r7, r1, #0x0
+ add r6, r2, #0x0
+ add r4, r3, #0x0
+ cmp r5, #0x0
+ beq _0200A25E
+ ldr r1, [sp, #0x20]
+ mov r0, #0x1
+ tst r0, r1
+ beq _0200A23A
+ ldr r0, _0200A264 ; =0x04000050
+ add r1, r4, #0x0
+ blx FUN_020C74B8
+ str r4, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ ldr r0, _0200A268 ; =0x021C4694
+ add r1, r5, #0x0
+ add r2, r7, #0x0
+ add r3, r6, #0x0
+ bl FUN_0200A1A0
+_0200A23A:
+ ldr r1, [sp, #0x20]
+ mov r0, #0x2
+ tst r0, r1
+ beq _0200A25E
+ ldr r0, _0200A26C ; =0x04001050
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ blx FUN_020C74B8
+ str r4, [sp, #0x0]
+ mov r0, #0x2
+ str r0, [sp, #0x4]
+ ldr r0, _0200A270 ; =0x021C4674
+ add r1, r5, #0x0
+ add r2, r7, #0x0
+ add r3, r6, #0x0
+ bl FUN_0200A1A0
+_0200A25E:
+ add sp, #0x8
+ pop {r3-r7, pc}
+ nop
+_0200A264: .word 0x04000050
+_0200A268: .word 0x021C4694
+_0200A26C: .word 0x04001050
+_0200A270: .word 0x021C4674
+
+ thumb_func_start FUN_0200A274
+FUN_0200A274: ; 0x0200A274
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r2, #0x0
+ mov r0, #0x1
+ add r6, r1, #0x0
+ tst r0, r4
+ beq _0200A28A
+ ldr r0, _0200A2A4 ; =0x04000050
+ add r2, r5, #0x0
+ blx FUN_020C74B8
+_0200A28A:
+ mov r0, #0x2
+ tst r0, r4
+ beq _0200A29A
+ ldr r0, _0200A2A8 ; =0x04001050
+ add r1, r6, #0x0
+ add r2, r5, #0x0
+ blx FUN_020C74B8
+_0200A29A:
+ add r0, r4, #0x0
+ bl FUN_0200A2D8
+ pop {r4-r6, pc}
+ nop
+_0200A2A4: .word 0x04000050
+_0200A2A8: .word 0x04001050
+
+ thumb_func_start FUN_0200A2AC
+FUN_0200A2AC: ; 0x0200A2AC
+ push {r3, lr}
+ ldr r0, _0200A2CC ; =0x021C4694
+ mov r1, #0x0
+ mov r2, #0x20
+ blx MI_CpuFill8
+ ldr r0, _0200A2D0 ; =0x021C4674
+ mov r1, #0x0
+ mov r2, #0x20
+ blx MI_CpuFill8
+ ldr r0, _0200A2D4 ; =0x021C4674
+ mov r1, #0x0
+ str r1, [r0, #0x3c]
+ str r1, [r0, #0x1c]
+ pop {r3, pc}
+ .balign 4
+_0200A2CC: .word 0x021C4694
+_0200A2D0: .word 0x021C4674
+_0200A2D4: .word 0x021C4674
+
+ thumb_func_start FUN_0200A2D8
+FUN_0200A2D8: ; 0x0200A2D8
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x1
+ tst r0, r4
+ beq _0200A2F2
+ ldr r0, _0200A30C ; =0x021C4694
+ mov r1, #0x0
+ mov r2, #0x20
+ blx MI_CpuFill8
+ ldr r0, _0200A310 ; =0x021C4674
+ mov r1, #0x0
+ str r1, [r0, #0x3c]
+_0200A2F2:
+ mov r0, #0x2
+ tst r0, r4
+ beq _0200A308
+ ldr r0, _0200A314 ; =0x021C4674
+ mov r1, #0x0
+ mov r2, #0x20
+ blx MI_CpuFill8
+ ldr r0, _0200A310 ; =0x021C4674
+ mov r1, #0x0
+ str r1, [r0, #0x1c]
+_0200A308:
+ pop {r4, pc}
+ nop
+_0200A30C: .word 0x021C4694
+_0200A310: .word 0x021C4674
+_0200A314: .word 0x021C4674
+
+ thumb_func_start FUN_0200A318
+FUN_0200A318: ; 0x0200A318
+ push {r3, lr}
+ ldr r0, _0200A338 ; =0x021C4674
+ ldr r0, [r0, #0x3c]
+ cmp r0, #0x0
+ beq _0200A328
+ ldr r0, _0200A33C ; =0x021C4694
+ bl FUN_0200A104
+_0200A328:
+ ldr r0, _0200A338 ; =0x021C4674
+ ldr r0, [r0, #0x1c]
+ cmp r0, #0x0
+ beq _0200A336
+ ldr r0, _0200A340 ; =0x021C4674
+ bl FUN_0200A104
+_0200A336:
+ pop {r3, pc}
+ .balign 4
+_0200A338: .word 0x021C4674
+_0200A33C: .word 0x021C4694
+_0200A340: .word 0x021C4674
+
+ thumb_func_start FUN_0200A344
+FUN_0200A344: ; 0x0200A344
+ cmp r0, #0x3
+ bne _0200A35A
+ ldr r0, _0200A380 ; =0x021C4674
+ ldr r1, [r0, #0x3c]
+ cmp r1, #0x0
+ bne _0200A37A
+ ldr r0, [r0, #0x1c]
+ cmp r0, #0x0
+ bne _0200A37A
+ mov r0, #0x1
+ bx lr
+_0200A35A:
+ cmp r0, #0x1
+ bne _0200A36A
+ ldr r0, _0200A380 ; =0x021C4674
+ ldr r0, [r0, #0x3c]
+ cmp r0, #0x0
+ bne _0200A37A
+ mov r0, #0x1
+ bx lr
+_0200A36A:
+ cmp r0, #0x2
+ bne _0200A37A
+ ldr r0, _0200A380 ; =0x021C4674
+ ldr r0, [r0, #0x1c]
+ cmp r0, #0x0
+ bne _0200A37A
+ mov r0, #0x1
+ bx lr
+_0200A37A:
+ mov r0, #0x0
+ bx lr
+ nop
+_0200A380: .word 0x021C4674
+
+ thumb_func_start FUN_0200A384
+FUN_0200A384: ; 0x0200A384
+ ldr r3, _0200A388 ; =LoadFromNarc_2
+ bx r3
+ .balign 4
+_0200A388: .word LoadFromNarc_2
+
+ thumb_func_start FUN_0200A38C
+FUN_0200A38C: ; 0x0200A38C
+ ldr r3, _0200A390 ; =FUN_02016A18
+ bx r3
+ .balign 4
+_0200A390: .word FUN_02016A18
+
+ thumb_func_start FUN_0200A394
+FUN_0200A394: ; 0x0200A394
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r3, r0, #0x0
+ ldrh r0, [r3, #0x0]
+ add r5, r1, #0x0
+ add r4, r2, #0x0
+ cmp r5, r0
+ bhs _0200A404
+ lsl r0, r5, #0x3
+ add r0, r3, r0
+ ldr r2, [r0, #0x4]
+ ldr r1, [r0, #0x8]
+ ldr r6, _0200A40C ; =0x000002FD
+ str r2, [sp, #0x0]
+ str r1, [sp, #0x4]
+ ldrh r0, [r3, #0x2]
+ add r7, r5, #0x1
+ mul r6, r0
+ add r0, r7, #0x0
+ mul r0, r6
+ lsl r0, r0, #0x10
+ lsr r6, r0, #0x10
+ lsl r0, r6, #0x10
+ orr r0, r6
+ eor r2, r0
+ eor r0, r1
+ str r0, [sp, #0x4]
+ str r2, [sp, #0x0]
+ add r1, r3, r2
+ add r0, r4, #0x0
+ add r2, sp, #0x0
+ bl FUN_0200A4C0
+ ldr r2, [sp, #0x4]
+ ldr r0, _0200A410 ; =0x00091BD3
+ add r1, r7, #0x0
+ mul r0, r1
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ sub r3, r2, #0x1
+ cmp r2, #0x0
+ beq _0200A408
+ ldr r0, _0200A414 ; =0x0000493D
+_0200A3EA:
+ ldrh r1, [r4, #0x0]
+ eor r1, r5
+ strh r1, [r4, #0x0]
+ add r1, r5, r0
+ lsl r1, r1, #0x10
+ lsr r5, r1, #0x10
+ add r1, r3, #0x0
+ add r4, r4, #0x2
+ sub r3, r3, #0x1
+ cmp r1, #0x0
+ bne _0200A3EA
+ add sp, #0x8
+ pop {r3-r7, pc}
+_0200A404:
+ bl ErrorHandling
+_0200A408:
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+_0200A40C: .word 0x000002FD
+_0200A410: .word 0x00091BD3
+_0200A414: .word 0x0000493D
+
+ thumb_func_start FUN_0200A418
+FUN_0200A418: ; 0x0200A418
+ push {r4-r6, lr}
+ sub sp, #0x10
+ add r5, r1, #0x0
+ add r1, r3, #0x0
+ add r4, r2, #0x0
+ bl FUN_02006670
+ add r6, r0, #0x0
+ beq _0200A4AE
+ add r1, sp, #0xc
+ str r1, [sp, #0x0]
+ add r1, r5, #0x0
+ mov r2, #0x0
+ mov r3, #0x4
+ bl FUN_02006814
+ add r0, sp, #0x4
+ lsl r2, r4, #0x3
+ str r0, [sp, #0x0]
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ add r2, r2, #0x4
+ mov r3, #0x8
+ bl FUN_02006814
+ add r0, sp, #0x4
+ ldrh r2, [r0, #0xa]
+ ldr r0, _0200A4B4 ; =0x000002FD
+ add r1, r4, #0x1
+ mul r0, r2
+ mul r0, r1
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ lsl r0, r1, #0x10
+ orr r1, r0
+ ldr r0, [sp, #0x4]
+ eor r0, r1
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x8]
+ eor r0, r1
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x20]
+ add r1, r5, #0x0
+ str r0, [sp, #0x0]
+ ldr r3, [sp, #0x8]
+ ldr r2, [sp, #0x4]
+ add r0, r6, #0x0
+ lsl r3, r3, #0x1
+ bl FUN_02006814
+ ldr r2, _0200A4B8 ; =0x00091BD3
+ add r3, r4, #0x1
+ mul r2, r3
+ lsl r2, r2, #0x10
+ ldr r0, [sp, #0x8]
+ lsr r3, r2, #0x10
+ sub r2, r0, #0x1
+ ldr r1, [sp, #0x20]
+ cmp r0, #0x0
+ beq _0200A4A8
+ ldr r0, _0200A4BC ; =0x0000493D
+_0200A492:
+ ldrh r4, [r1, #0x0]
+ eor r4, r3
+ strh r4, [r1, #0x0]
+ add r3, r3, r0
+ lsl r3, r3, #0x10
+ add r4, r2, #0x0
+ add r1, r1, #0x2
+ lsr r3, r3, #0x10
+ sub r2, r2, #0x1
+ cmp r4, #0x0
+ bne _0200A492
+_0200A4A8:
+ add r0, r6, #0x0
+ bl FUN_020066F4
+_0200A4AE:
+ add sp, #0x10
+ pop {r4-r6, pc}
+ nop
+_0200A4B4: .word 0x000002FD
+_0200A4B8: .word 0x00091BD3
+_0200A4BC: .word 0x0000493D
+
+ thumb_func_start FUN_0200A4C0
+FUN_0200A4C0: ; 0x0200A4C0
+ add r3, r0, #0x0
+ add r0, r1, #0x0
+ add r1, r3, #0x0
+ ldr r2, [r2, #0x4]
+ ldr r3, _0200A4D0 ; =MIi_CpuCopy16
+ lsl r2, r2, #0x1
+ bx r3
+ nop
+_0200A4D0: .word MIi_CpuCopy16
+
+ thumb_func_start FUN_0200A4D4
+FUN_0200A4D4: ; 0x0200A4D4
+ push {r3-r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ ldrh r0, [r5, #0x0]
+ add r4, r1, #0x0
+ str r2, [sp, #0x0]
+ cmp r4, r0
+ bhs _0200A56A
+ lsl r0, r4, #0x3
+ add r0, r5, r0
+ ldr r3, [r0, #0x4]
+ ldr r2, [r0, #0x8]
+ ldrh r1, [r5, #0x2]
+ ldr r6, _0200A578 ; =0x000002FD
+ add r0, r4, #0x1
+ mul r6, r1
+ add r1, r0, #0x0
+ mul r1, r6
+ lsl r0, r1, #0x10
+ lsr r1, r0, #0x10
+ lsl r0, r1, #0x10
+ orr r1, r0
+ add r0, r3, #0x0
+ add r6, r2, #0x0
+ str r3, [sp, #0x8]
+ eor r0, r1
+ eor r6, r1
+ str r0, [sp, #0x8]
+ lsl r0, r6, #0x1
+ str r0, [sp, #0x4]
+ str r2, [sp, #0xc]
+ ldr r1, [sp, #0x4]
+ mov r0, #0x0
+ str r6, [sp, #0xc]
+ bl FUN_020169D8
+ add r7, r0, #0x0
+ beq _0200A574
+ ldr r0, [sp, #0x8]
+ ldr r2, [sp, #0x4]
+ add r0, r5, r0
+ add r1, r7, #0x0
+ blx MIi_CpuCopy16
+ ldr r1, _0200A57C ; =0x00091BD3
+ add r2, r4, #0x1
+ mul r1, r2
+ lsl r1, r1, #0x10
+ lsr r2, r1, #0x10
+ add r0, r7, #0x0
+ sub r1, r6, #0x1
+ cmp r6, #0x0
+ beq _0200A556
+ ldr r3, _0200A580 ; =0x0000493D
+_0200A540:
+ ldrh r4, [r0, #0x0]
+ eor r4, r2
+ strh r4, [r0, #0x0]
+ add r2, r2, r3
+ lsl r2, r2, #0x10
+ add r4, r1, #0x0
+ add r0, r0, #0x2
+ lsr r2, r2, #0x10
+ sub r1, r1, #0x1
+ cmp r4, #0x0
+ bne _0200A540
+_0200A556:
+ ldr r0, [sp, #0x0]
+ add r1, r7, #0x0
+ add r2, r6, #0x0
+ bl FUN_02021E8C
+ add r0, r7, #0x0
+ bl FUN_02016A18
+ add sp, #0x10
+ pop {r3-r7, pc}
+_0200A56A:
+ bl ErrorHandling
+ ldr r0, [sp, #0x0]
+ bl FUN_02021A4C
+_0200A574:
+ add sp, #0x10
+ pop {r3-r7, pc}
+ .balign 4
+_0200A578: .word 0x000002FD
+_0200A57C: .word 0x00091BD3
+_0200A580: .word 0x0000493D
+
+ thumb_func_start FUN_0200A584
+FUN_0200A584: ; 0x0200A584
+ push {r3-r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ ldrh r0, [r5, #0x0]
+ add r4, r1, #0x0
+ str r2, [sp, #0x0]
+ cmp r4, r0
+ bhs _0200A62C
+ lsl r0, r4, #0x3
+ add r0, r5, r0
+ ldr r3, [r0, #0x4]
+ ldr r2, [r0, #0x8]
+ ldrh r1, [r5, #0x2]
+ ldr r6, _0200A63C ; =0x000002FD
+ add r0, r4, #0x1
+ mul r6, r1
+ add r1, r0, #0x0
+ mul r1, r6
+ lsl r0, r1, #0x10
+ lsr r1, r0, #0x10
+ lsl r0, r1, #0x10
+ orr r1, r0
+ add r0, r3, #0x0
+ add r6, r2, #0x0
+ str r3, [sp, #0x8]
+ eor r0, r1
+ eor r6, r1
+ str r0, [sp, #0x8]
+ lsl r0, r6, #0x1
+ str r0, [sp, #0x4]
+ str r2, [sp, #0xc]
+ ldr r0, [sp, #0x0]
+ ldr r1, [sp, #0x4]
+ str r6, [sp, #0xc]
+ bl FUN_020169D8
+ add r7, r0, #0x0
+ beq _0200A626
+ ldr r0, [sp, #0x8]
+ ldr r2, [sp, #0x4]
+ add r0, r5, r0
+ add r1, r7, #0x0
+ blx MIi_CpuCopy16
+ ldr r1, _0200A640 ; =0x00091BD3
+ add r2, r4, #0x1
+ mul r1, r2
+ lsl r1, r1, #0x10
+ lsr r2, r1, #0x10
+ add r0, r7, #0x0
+ sub r1, r6, #0x1
+ cmp r6, #0x0
+ beq _0200A606
+ ldr r3, _0200A644 ; =0x0000493D
+_0200A5F0:
+ ldrh r4, [r0, #0x0]
+ eor r4, r2
+ strh r4, [r0, #0x0]
+ add r2, r2, r3
+ lsl r2, r2, #0x10
+ add r4, r1, #0x0
+ add r0, r0, #0x2
+ lsr r2, r2, #0x10
+ sub r1, r1, #0x1
+ cmp r4, #0x0
+ bne _0200A5F0
+_0200A606:
+ ldr r1, [sp, #0x0]
+ add r0, r6, #0x0
+ bl FUN_020219F4
+ add r4, r0, #0x0
+ beq _0200A61A
+ add r1, r7, #0x0
+ add r2, r6, #0x0
+ bl FUN_02021E8C
+_0200A61A:
+ add r0, r7, #0x0
+ bl FUN_02016A18
+ add sp, #0x10
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+_0200A626:
+ add sp, #0x10
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0200A62C:
+ bl ErrorHandling
+ ldr r1, [sp, #0x0]
+ mov r0, #0x4
+ bl FUN_020219F4
+ add sp, #0x10
+ pop {r3-r7, pc}
+ .balign 4
+_0200A63C: .word 0x000002FD
+_0200A640: .word 0x00091BD3
+_0200A644: .word 0x0000493D
+
+ thumb_func_start FUN_0200A648
+FUN_0200A648: ; 0x0200A648
+ push {r3-r7, lr}
+ add r7, r3, #0x0
+ add r5, r1, #0x0
+ add r1, r7, #0x0
+ add r4, r2, #0x0
+ bl FUN_02006670
+ add r6, r0, #0x0
+ beq _0200A66E
+ ldr r1, [sp, #0x18]
+ add r2, r4, #0x0
+ str r1, [sp, #0x0]
+ add r1, r5, #0x0
+ add r3, r7, #0x0
+ bl FUN_0200A670
+ add r0, r6, #0x0
+ bl FUN_020066F4
+_0200A66E:
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0200A670
+FUN_0200A670: ; 0x0200A670
+ push {r4-r7, lr}
+ sub sp, #0x14
+ add r5, r2, #0x0
+ add r2, sp, #0x10
+ add r4, r3, #0x0
+ str r2, [sp, #0x0]
+ mov r2, #0x0
+ mov r3, #0x4
+ add r7, r0, #0x0
+ str r1, [sp, #0x4]
+ bl FUN_02006814
+ add r0, sp, #0x8
+ ldrh r0, [r0, #0x8]
+ cmp r5, r0
+ bhs _0200A71E
+ add r0, sp, #0x8
+ lsl r2, r5, #0x3
+ str r0, [sp, #0x0]
+ ldr r1, [sp, #0x4]
+ add r0, r7, #0x0
+ add r2, r2, #0x4
+ mov r3, #0x8
+ bl FUN_02006814
+ add r0, sp, #0x8
+ ldrh r2, [r0, #0xa]
+ ldr r0, _0200A72C ; =0x000002FD
+ add r1, r5, #0x1
+ mul r0, r2
+ mul r0, r1
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ lsl r0, r1, #0x10
+ orr r1, r0
+ ldr r0, [sp, #0x8]
+ eor r0, r1
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0xc]
+ eor r0, r1
+ lsl r6, r0, #0x1
+ str r0, [sp, #0xc]
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ bl FUN_020169D8
+ add r4, r0, #0x0
+ beq _0200A728
+ str r4, [sp, #0x0]
+ ldr r1, [sp, #0x4]
+ ldr r2, [sp, #0x8]
+ add r0, r7, #0x0
+ add r3, r6, #0x0
+ bl FUN_02006814
+ ldr r2, _0200A730 ; =0x00091BD3
+ add r3, r5, #0x1
+ mul r2, r3
+ lsl r2, r2, #0x10
+ ldr r0, [sp, #0xc]
+ lsr r3, r2, #0x10
+ add r1, r4, #0x0
+ sub r2, r0, #0x1
+ cmp r0, #0x0
+ beq _0200A70A
+ ldr r0, _0200A734 ; =0x0000493D
+_0200A6F4:
+ ldrh r5, [r1, #0x0]
+ eor r5, r3
+ strh r5, [r1, #0x0]
+ add r3, r3, r0
+ lsl r3, r3, #0x10
+ add r5, r2, #0x0
+ add r1, r1, #0x2
+ lsr r3, r3, #0x10
+ sub r2, r2, #0x1
+ cmp r5, #0x0
+ bne _0200A6F4
+_0200A70A:
+ ldr r0, [sp, #0x28]
+ ldr r2, [sp, #0xc]
+ add r1, r4, #0x0
+ bl FUN_02021E8C
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x14
+ pop {r4-r7, pc}
+_0200A71E:
+ bl ErrorHandling
+ ldr r0, [sp, #0x28]
+ bl FUN_02021A4C
+_0200A728:
+ add sp, #0x14
+ pop {r4-r7, pc}
+ .balign 4
+_0200A72C: .word 0x000002FD
+_0200A730: .word 0x00091BD3
+_0200A734: .word 0x0000493D
+
+ thumb_func_start FUN_0200A738
+FUN_0200A738: ; 0x0200A738
+ push {r3-r7, lr}
+ add r6, r3, #0x0
+ add r5, r1, #0x0
+ add r1, r6, #0x0
+ add r4, r2, #0x0
+ bl FUN_02006670
+ add r7, r0, #0x0
+ beq _0200A75E
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ add r3, r6, #0x0
+ bl FUN_0200A76C
+ add r4, r0, #0x0
+ add r0, r7, #0x0
+ bl FUN_020066F4
+ b _0200A768
+_0200A75E:
+ mov r0, #0x4
+ add r1, r6, #0x0
+ bl FUN_020219F4
+ add r4, r0, #0x0
+_0200A768:
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0200A76C
+FUN_0200A76C: ; 0x0200A76C
+ push {r3-r7, lr}
+ sub sp, #0x18
+ add r4, r2, #0x0
+ add r2, sp, #0x14
+ add r5, r3, #0x0
+ str r2, [sp, #0x0]
+ mov r2, #0x0
+ mov r3, #0x4
+ add r7, r0, #0x0
+ str r1, [sp, #0x4]
+ bl FUN_02006814
+ add r0, sp, #0xc
+ ldrh r0, [r0, #0x8]
+ cmp r4, r0
+ bhs _0200A82A
+ add r0, sp, #0xc
+ lsl r2, r4, #0x3
+ str r0, [sp, #0x0]
+ ldr r1, [sp, #0x4]
+ add r0, r7, #0x0
+ add r2, r2, #0x4
+ mov r3, #0x8
+ bl FUN_02006814
+ add r0, sp, #0xc
+ ldrh r2, [r0, #0xa]
+ ldr r0, _0200A83C ; =0x000002FD
+ add r1, r4, #0x1
+ mul r0, r2
+ mul r0, r1
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ lsl r0, r1, #0x10
+ orr r1, r0
+ ldr r0, [sp, #0xc]
+ eor r0, r1
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x10]
+ eor r0, r1
+ add r1, r5, #0x0
+ str r0, [sp, #0x10]
+ bl FUN_020219F4
+ str r0, [sp, #0x8]
+ cmp r0, #0x0
+ beq _0200A824
+ ldr r0, [sp, #0x10]
+ lsl r6, r0, #0x1
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_020169D8
+ add r5, r0, #0x0
+ beq _0200A824
+ str r5, [sp, #0x0]
+ ldr r1, [sp, #0x4]
+ ldr r2, [sp, #0xc]
+ add r0, r7, #0x0
+ add r3, r6, #0x0
+ bl FUN_02006814
+ ldr r2, _0200A840 ; =0x00091BD3
+ add r3, r4, #0x1
+ mul r2, r3
+ lsl r2, r2, #0x10
+ ldr r0, [sp, #0x10]
+ lsr r3, r2, #0x10
+ add r1, r5, #0x0
+ sub r2, r0, #0x1
+ cmp r0, #0x0
+ beq _0200A814
+ ldr r0, _0200A844 ; =0x0000493D
+_0200A7FE:
+ ldrh r4, [r1, #0x0]
+ eor r4, r3
+ strh r4, [r1, #0x0]
+ add r3, r3, r0
+ lsl r3, r3, #0x10
+ add r4, r2, #0x0
+ add r1, r1, #0x2
+ lsr r3, r3, #0x10
+ sub r2, r2, #0x1
+ cmp r4, #0x0
+ bne _0200A7FE
+_0200A814:
+ ldr r0, [sp, #0x8]
+ ldr r2, [sp, #0x10]
+ add r1, r5, #0x0
+ bl FUN_02021E8C
+ add r0, r5, #0x0
+ bl FUN_02016A18
+_0200A824:
+ ldr r0, [sp, #0x8]
+ add sp, #0x18
+ pop {r3-r7, pc}
+_0200A82A:
+ bl ErrorHandling
+ mov r0, #0x4
+ add r1, r5, #0x0
+ bl FUN_020219F4
+ add sp, #0x18
+ pop {r3-r7, pc}
+ nop
+_0200A83C: .word 0x000002FD
+_0200A840: .word 0x00091BD3
+_0200A844: .word 0x0000493D
+
+ thumb_func_start FUN_0200A848
+FUN_0200A848: ; 0x0200A848
+ ldrh r0, [r0, #0x0]
+ bx lr
+
+ thumb_func_start FUN_0200A84C
+FUN_0200A84C: ; 0x0200A84C
+ push {r3, lr}
+ sub sp, #0x8
+ add r3, r0, #0x0
+ mov r0, #0x4
+ add r2, r1, #0x0
+ str r0, [sp, #0x0]
+ add r1, r3, #0x0
+ add r0, sp, #0x4
+ mov r3, #0x0
+ bl FUN_02006548
+ add r0, sp, #0x4
+ ldrh r0, [r0, #0x0]
+ add sp, #0x8
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200A86C
+FUN_0200A86C: ; 0x0200A86C
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ add r0, r3, #0x0
+ mov r1, #0xc
+ add r7, r2, #0x0
+ str r3, [sp, #0x0]
+ bl FUN_020169D8
+ add r4, r0, #0x0
+ beq _0200A8B4
+ cmp r5, #0x0
+ bne _0200A8A0
+ ldr r2, [sp, #0x0]
+ add r0, r6, #0x0
+ add r1, r7, #0x0
+ bl FUN_0200A384
+ str r0, [r4, #0x8]
+ cmp r0, #0x0
+ bne _0200A8AA
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0200A8A0:
+ ldr r1, [sp, #0x0]
+ add r0, r6, #0x0
+ bl FUN_02006670
+ str r0, [r4, #0x8]
+_0200A8AA:
+ strh r5, [r4, #0x0]
+ strh r6, [r4, #0x4]
+ ldr r0, [sp, #0x0]
+ strh r7, [r4, #0x6]
+ strh r0, [r4, #0x2]
+_0200A8B4:
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0200A8B8
+FUN_0200A8B8: ; 0x0200A8B8
+ push {r4, lr}
+ add r4, r0, #0x0
+ beq _0200A8DE
+ ldrh r0, [r4, #0x0]
+ cmp r0, #0x0
+ beq _0200A8CA
+ cmp r0, #0x1
+ beq _0200A8D2
+ b _0200A8D8
+_0200A8CA:
+ ldr r0, [r4, #0x8]
+ bl FUN_0200A38C
+ b _0200A8D8
+_0200A8D2:
+ ldr r0, [r4, #0x8]
+ bl FUN_020066F4
+_0200A8D8:
+ add r0, r4, #0x0
+ bl FUN_02016A18
+_0200A8DE:
+ pop {r4, pc}
+
+ thumb_func_start FUN_0200A8E0
+FUN_0200A8E0: ; 0x0200A8E0
+ push {r3-r4, lr}
+ sub sp, #0x4
+ add r4, r0, #0x0
+ ldrh r0, [r4, #0x0]
+ add r3, r1, #0x0
+ cmp r0, #0x0
+ beq _0200A8F6
+ cmp r0, #0x1
+ beq _0200A900
+ add sp, #0x4
+ pop {r3-r4, pc}
+_0200A8F6:
+ ldr r0, [r4, #0x8]
+ bl FUN_0200A4D4
+ add sp, #0x4
+ pop {r3-r4, pc}
+_0200A900:
+ str r2, [sp, #0x0]
+ add r2, r3, #0x0
+ ldrh r1, [r4, #0x6]
+ ldrh r3, [r4, #0x2]
+ ldr r0, [r4, #0x8]
+ bl FUN_0200A670
+ add sp, #0x4
+ pop {r3-r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200A914
+FUN_0200A914: ; 0x0200A914
+ push {r3, lr}
+ add r3, r0, #0x0
+ ldrh r0, [r3, #0x0]
+ add r2, r1, #0x0
+ cmp r0, #0x0
+ beq _0200A926
+ cmp r0, #0x1
+ beq _0200A930
+ b _0200A93C
+_0200A926:
+ ldrh r2, [r3, #0x2]
+ ldr r0, [r3, #0x8]
+ bl FUN_0200A584
+ pop {r3, pc}
+_0200A930:
+ ldr r0, [r3, #0x8]
+ ldrh r1, [r3, #0x6]
+ ldrh r3, [r3, #0x2]
+ bl FUN_0200A76C
+ pop {r3, pc}
+_0200A93C:
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_0200A940
+FUN_0200A940: ; 0x0200A940
+ push {r3, lr}
+ add r1, r0, #0x0
+ ldrh r0, [r1, #0x0]
+ cmp r0, #0x0
+ beq _0200A950
+ cmp r0, #0x1
+ beq _0200A958
+ b _0200A962
+_0200A950:
+ ldr r0, [r1, #0x8]
+ bl FUN_0200A848
+ pop {r3, pc}
+_0200A958:
+ ldrh r0, [r1, #0x4]
+ ldrh r1, [r1, #0x6]
+ bl FUN_0200A84C
+ pop {r3, pc}
+_0200A962:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200A968
+FUN_0200A968: ; 0x0200A968
+ push {r3-r4, lr}
+ sub sp, #0x4
+ add r4, r0, #0x0
+ ldrh r0, [r4, #0x0]
+ add r3, r1, #0x0
+ cmp r0, #0x0
+ beq _0200A97E
+ cmp r0, #0x1
+ beq _0200A988
+ add sp, #0x4
+ pop {r3-r4, pc}
+_0200A97E:
+ ldr r0, [r4, #0x8]
+ bl FUN_0200A394
+ add sp, #0x4
+ pop {r3-r4, pc}
+_0200A988:
+ str r2, [sp, #0x0]
+ add r2, r3, #0x0
+ ldrh r0, [r4, #0x4]
+ ldrh r1, [r4, #0x6]
+ ldrh r3, [r4, #0x2]
+ bl FUN_0200A418
+ add sp, #0x4
+ pop {r3-r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200A99C
+FUN_0200A99C: ; 0x0200A99C
+ push {r4-r6, lr}
+ add r4, r2, #0x0
+ add r5, r0, #0x0
+ add r3, r1, #0x0
+ ldr r2, _0200A9C0 ; =0x0000016A
+ mov r0, #0x1
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ add r6, r0, #0x0
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_0200A968
+ add r0, r6, #0x0
+ bl FUN_0200A8B8
+ pop {r4-r6, pc}
+ .balign 4
+_0200A9C0: .word 0x0000016A
+
+ thumb_func_start FUN_0200A9C4
+FUN_0200A9C4: ; 0x0200A9C4
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r7, r0, #0x0
+ mov r0, #0x0
+ str r0, [sp, #0x4]
+ add r5, r1, #0x0
+ mov r0, #0x1
+ ldr r1, [sp, #0x4]
+ lsl r0, r0, #0xa
+ add r6, r2, #0x0
+ str r3, [sp, #0x0]
+ bl FUN_020219F4
+ add r4, r0, #0x0
+ beq _0200AA0E
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_0200A914
+ add r5, r0, #0x0
+ beq _0200AA08
+ add r0, r7, #0x0
+ add r1, r4, #0x0
+ add r2, r5, #0x0
+ bl FUN_0200B7B8
+ ldr r1, [sp, #0x0]
+ add r0, r4, #0x0
+ bl FUN_02021ACC
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ bl FUN_02021A20
+_0200AA08:
+ add r0, r4, #0x0
+ bl FUN_02021A20
+_0200AA0E:
+ ldr r0, [sp, #0x4]
+ add sp, #0x8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0200AA14
+FUN_0200AA14: ; 0x0200AA14
+ push {r4-r6, lr}
+ add r5, r1, #0x0
+ mov r2, #0x93
+ add r6, r0, #0x0
+ mov r0, #0x1
+ mov r1, #0x1a
+ lsl r2, r2, #0x2
+ add r3, r5, #0x0
+ bl FUN_0200A86C
+ add r4, r0, #0x0
+ beq _0200AA4C
+ mov r0, #0x10
+ add r1, r5, #0x0
+ bl FUN_020219F4
+ add r5, r0, #0x0
+ beq _0200AA42
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ add r2, r5, #0x0
+ bl FUN_0200A8E0
+_0200AA42:
+ add r0, r4, #0x0
+ bl FUN_0200A8B8
+ add r0, r5, #0x0
+ pop {r4-r6, pc}
+_0200AA4C:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0200AA50
+FUN_0200AA50: ; 0x0200AA50
+ push {r3-r5, lr}
+ ldr r2, _0200AA7C ; =0x0000016A
+ add r4, r0, #0x0
+ add r3, r1, #0x0
+ mov r0, #0x1
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ add r5, r0, #0x0
+ beq _0200AA76
+ add r1, r4, #0x0
+ bl FUN_0200A914
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0200A8B8
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+_0200AA76:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ nop
+_0200AA7C: .word 0x0000016A
+
+ thumb_func_start FUN_0200AA80
+FUN_0200AA80: ; 0x0200AA80
+ ldr r3, _0200AA8C ; =FUN_0200AA90
+ add r2, r0, #0x0
+ mov r0, #0x8
+ mov r1, #0x20
+ bx r3
+ nop
+_0200AA8C: .word FUN_0200AA90
+
+ thumb_func_start FUN_0200AA90
+FUN_0200AA90: ; 0x0200AA90
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r7, r0, #0x0
+ str r1, [sp, #0x0]
+ str r2, [sp, #0x4]
+ bne _0200AAA0
+ bl ErrorHandling
+_0200AAA0:
+ ldr r0, [sp, #0x0]
+ cmp r0, #0x0
+ bne _0200AAAA
+ bl ErrorHandling
+_0200AAAA:
+ ldr r0, [sp, #0x4]
+ mov r1, #0x10
+ bl FUN_020169D8
+ add r4, r0, #0x0
+ beq _0200AB10
+ ldr r0, [sp, #0x4]
+ str r7, [r4, #0x0]
+ str r0, [r4, #0x4]
+ ldr r0, [sp, #0x0]
+ ldr r1, [sp, #0x4]
+ bl FUN_020219F4
+ str r0, [r4, #0xc]
+ cmp r0, #0x0
+ beq _0200AB10
+ ldr r0, [sp, #0x4]
+ lsl r1, r7, #0x3
+ bl FUN_020169D8
+ str r0, [r4, #0x8]
+ cmp r0, #0x0
+ beq _0200AB10
+ mov r6, #0x0
+ cmp r7, #0x0
+ bls _0200AB06
+ add r5, r6, #0x0
+_0200AAE0:
+ add r0, r0, r5
+ bl FUN_0200AB6C
+ ldr r0, [sp, #0x0]
+ ldr r1, [sp, #0x4]
+ bl FUN_020219F4
+ ldr r1, [r4, #0x8]
+ add r1, r1, r5
+ str r0, [r1, #0x4]
+ ldr r0, [r4, #0x8]
+ add r1, r0, r5
+ ldr r1, [r1, #0x4]
+ cmp r1, #0x0
+ beq _0200AB06
+ add r6, r6, #0x1
+ add r5, #0x8
+ cmp r6, r7
+ blo _0200AAE0
+_0200AB06:
+ cmp r6, r7
+ bne _0200AB10
+ add sp, #0x8
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+_0200AB10:
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200AB18
+FUN_0200AB18: ; 0x0200AB18
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ cmp r0, #0x0
+ bne _0200AB26
+ bl ErrorHandling
+_0200AB26:
+ ldr r0, [r5, #0x8]
+ cmp r0, #0x0
+ beq _0200AB54
+ ldr r0, [r5, #0x0]
+ mov r6, #0x0
+ cmp r0, #0x0
+ bls _0200AB4E
+ add r4, r6, #0x0
+_0200AB36:
+ ldr r0, [r5, #0x8]
+ add r0, r0, r4
+ ldr r0, [r0, #0x4]
+ cmp r0, #0x0
+ beq _0200AB4E
+ bl FUN_02021A20
+ ldr r0, [r5, #0x0]
+ add r6, r6, #0x1
+ add r4, #0x8
+ cmp r6, r0
+ blo _0200AB36
+_0200AB4E:
+ ldr r0, [r5, #0x8]
+ bl FUN_02016A18
+_0200AB54:
+ ldr r0, [r5, #0xc]
+ cmp r0, #0x0
+ beq _0200AB5E
+ bl FUN_02021A20
+_0200AB5E:
+ mov r0, #0x0
+ str r0, [r5, #0x0]
+ add r0, r5, #0x0
+ bl FUN_02016A18
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200AB6C
+FUN_0200AB6C: ; 0x0200AB6C
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0200AB70
+FUN_0200AB70: ; 0x0200AB70
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ add r6, r1, #0x0
+ add r7, r2, #0x0
+ add r4, r3, #0x0
+ cmp r6, r0
+ blo _0200AB84
+ bl ErrorHandling
+_0200AB84:
+ ldr r0, [r5, #0x0]
+ cmp r6, r0
+ bhs _0200ABB2
+ cmp r4, #0x0
+ beq _0200ABA4
+ ldrb r0, [r4, #0x0]
+ ldr r3, [r5, #0x8]
+ lsl r2, r6, #0x3
+ strb r0, [r3, r2]
+ ldrb r0, [r4, #0x1]
+ add r1, r3, r2
+ strb r0, [r1, #0x1]
+ ldrb r0, [r4, #0x2]
+ strb r0, [r1, #0x2]
+ ldrb r0, [r4, #0x3]
+ strb r0, [r1, #0x3]
+_0200ABA4:
+ ldr r1, [r5, #0x8]
+ lsl r0, r6, #0x3
+ add r0, r1, r0
+ ldr r0, [r0, #0x4]
+ add r1, r7, #0x0
+ bl FUN_02021A74
+_0200ABB2:
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0200ABB4
+FUN_0200ABB4: ; 0x0200ABB4
+ push {r3, lr}
+ mov r3, #0x0
+ bl FUN_0200AB70
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200ABC0
+FUN_0200ABC0: ; 0x0200ABC0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, r2, #0x0
+ add r4, r1, #0x0
+ bl FUN_0202398C
+ add r1, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_02021E28
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200ABE4
+FUN_0200ABE4: ; 0x0200ABE4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, r2, #0x0
+ add r4, r1, #0x0
+ bl FUN_02024EC0
+ bl FUN_02024EE8
+ add r1, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_02021E28
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200AC0C
+FUN_0200AC0C: ; 0x0200AC0C
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r0, r2, #0x0
+ add r6, r1, #0x0
+ bl FUN_020238F4
+ add r7, r0, #0x0
+ ldr r2, _0200AC5C ; =0x000001F1
+ ldr r3, [r5, #0x4]
+ mov r0, #0x1
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ add r4, r0, #0x0
+ add r0, r7, #0x0
+ bl FUN_020239CC
+ cmp r0, #0x0
+ bne _0200AC3E
+ ldr r2, [r5, #0xc]
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_0200A8E0
+ b _0200AC48
+_0200AC3E:
+ ldr r2, [r5, #0xc]
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_0200A8E0
+_0200AC48:
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ add r0, r4, #0x0
+ bl FUN_0200A8B8
+ pop {r3-r7, pc}
+ .balign 4
+_0200AC5C: .word 0x000001F1
+
+ thumb_func_start FUN_0200AC60
+FUN_0200AC60: ; 0x0200AC60
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r7, r2, #0x0
+ add r6, r1, #0x0
+ ldr r2, _0200ACA0 ; =0x0000016A
+ ldr r3, [r5, #0x4]
+ mov r0, #0x1
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ add r4, r0, #0x0
+ add r0, r7, #0x0
+ mov r1, #0x5
+ mov r2, #0x0
+ bl FUN_020672BC
+ add r1, r0, #0x0
+ ldr r2, [r5, #0xc]
+ add r0, r4, #0x0
+ bl FUN_0200A8E0
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ add r0, r4, #0x0
+ bl FUN_0200A8B8
+ pop {r3-r7, pc}
+ nop
+_0200ACA0: .word 0x0000016A
+
+ thumb_func_start FUN_0200ACA4
+FUN_0200ACA4: ; 0x0200ACA4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r0, r2, #0x0
+ mov r1, #0x5
+ mov r2, #0x0
+ bl FUN_020672BC
+ add r2, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0200ACC0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0200ACC0
+FUN_0200ACC0: ; 0x0200ACC0
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ add r4, r1, #0x0
+ ldr r2, _0200ACF4 ; =0x0000016B
+ ldr r3, [r5, #0x4]
+ mov r0, #0x1
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ ldr r2, [r5, #0xc]
+ add r1, r6, #0x0
+ add r7, r0, #0x0
+ bl FUN_0200A8E0
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ add r0, r7, #0x0
+ bl FUN_0200A8B8
+ pop {r3-r7, pc}
+ nop
+_0200ACF4: .word 0x0000016B
+
+ thumb_func_start FUN_0200ACF8
+FUN_0200ACF8: ; 0x0200ACF8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, r2, #0x0
+ add r4, r1, #0x0
+ ldr r2, [r5, #0xc]
+ mov r1, #0x76
+ bl FUN_020672BC
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200AD18
+FUN_0200AD18: ; 0x0200AD18
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, r2, #0x0
+ add r4, r1, #0x0
+ ldr r2, [r5, #0xc]
+ mov r1, #0x90
+ bl FUN_020672BC
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200AD38
+FUN_0200AD38: ; 0x0200AD38
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, [sp, #0x14]
+ add r4, r1, #0x0
+ str r0, [sp, #0x0]
+ add r1, r2, #0x0
+ add r2, r3, #0x0
+ ldr r0, [r5, #0xc]
+ ldr r3, [sp, #0x10]
+ bl FUN_02021B04
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0200AD5C
+FUN_0200AD5C: ; 0x0200AD5C
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ mov r2, #0x93
+ add r4, r1, #0x0
+ ldr r3, [r5, #0x4]
+ mov r0, #0x1
+ mov r1, #0x1a
+ lsl r2, r2, #0x2
+ bl FUN_0200A86C
+ add r7, r0, #0x0
+ beq _0200AD90
+ ldr r2, [r5, #0xc]
+ add r1, r6, #0x0
+ bl FUN_0200A8E0
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ add r0, r7, #0x0
+ bl FUN_0200A8B8
+_0200AD90:
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200AD94
+FUN_0200AD94: ; 0x0200AD94
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ mov r2, #0x79
+ add r4, r1, #0x0
+ ldr r3, [r5, #0x4]
+ mov r0, #0x1
+ mov r1, #0x1a
+ lsl r2, r2, #0x2
+ bl FUN_0200A86C
+ add r7, r0, #0x0
+ beq _0200ADC8
+ ldr r2, [r5, #0xc]
+ add r1, r6, #0x0
+ bl FUN_0200A8E0
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ add r0, r7, #0x0
+ bl FUN_0200A8B8
+_0200ADC8:
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200ADCC
+FUN_0200ADCC: ; 0x0200ADCC
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ mov r2, #0x8a
+ add r4, r1, #0x0
+ ldr r3, [r5, #0x4]
+ mov r0, #0x1
+ mov r1, #0x1a
+ lsl r2, r2, #0x2
+ bl FUN_0200A86C
+ add r7, r0, #0x0
+ beq _0200AE00
+ ldr r2, [r5, #0xc]
+ add r1, r6, #0x0
+ bl FUN_0200A8E0
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ add r0, r7, #0x0
+ bl FUN_0200A8B8
+_0200AE00:
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200AE04
+FUN_0200AE04: ; 0x0200AE04
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldr r3, [r5, #0x4]
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ mov r0, #0x1
+ mov r1, #0x1a
+ mov r2, #0xbe
+ bl FUN_0200A86C
+ ldr r2, [r5, #0xc]
+ add r1, r6, #0x0
+ add r7, r0, #0x0
+ bl FUN_0200A8E0
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ add r0, r7, #0x0
+ bl FUN_0200A8B8
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200AE38
+FUN_0200AE38: ; 0x0200AE38
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ mov r2, #0x56
+ add r4, r1, #0x0
+ ldr r3, [r5, #0x4]
+ mov r0, #0x1
+ mov r1, #0x1a
+ lsl r2, r2, #0x2
+ bl FUN_0200A86C
+ add r7, r0, #0x0
+ beq _0200AE6C
+ ldr r2, [r5, #0xc]
+ add r1, r6, #0x0
+ bl FUN_0200A8E0
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ add r0, r7, #0x0
+ bl FUN_0200A8B8
+_0200AE6C:
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200AE70
+FUN_0200AE70: ; 0x0200AE70
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ add r4, r1, #0x0
+ ldr r2, _0200AEA4 ; =0x0000015A
+ ldr r3, [r5, #0x4]
+ mov r0, #0x1
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ add r7, r0, #0x0
+ beq _0200AEA2
+ ldr r2, [r5, #0xc]
+ add r1, r6, #0x0
+ bl FUN_0200A8E0
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ add r0, r7, #0x0
+ bl FUN_0200A8B8
+_0200AEA2:
+ pop {r3-r7, pc}
+ .balign 4
+_0200AEA4: .word 0x0000015A
+
+ thumb_func_start FUN_0200AEA8
+FUN_0200AEA8: ; 0x0200AEA8
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ add r4, r1, #0x0
+ ldr r2, _0200AEDC ; =0x0000015B
+ ldr r3, [r5, #0x4]
+ mov r0, #0x1
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ add r7, r0, #0x0
+ beq _0200AEDA
+ ldr r2, [r5, #0xc]
+ add r1, r6, #0x0
+ bl FUN_0200A8E0
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ add r0, r7, #0x0
+ bl FUN_0200A8B8
+_0200AEDA:
+ pop {r3-r7, pc}
+ .balign 4
+_0200AEDC: .word 0x0000015B
+
+ thumb_func_start FUN_0200AEE0
+FUN_0200AEE0: ; 0x0200AEE0
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ add r4, r1, #0x0
+ ldr r2, _0200AF14 ; =0x0000015D
+ ldr r3, [r5, #0x4]
+ mov r0, #0x1
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ add r7, r0, #0x0
+ beq _0200AF12
+ ldr r2, [r5, #0xc]
+ add r1, r6, #0x0
+ bl FUN_0200A8E0
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ add r0, r7, #0x0
+ bl FUN_0200A8B8
+_0200AF12:
+ pop {r3-r7, pc}
+ .balign 4
+_0200AF14: .word 0x0000015D
+
+ thumb_func_start FUN_0200AF18
+FUN_0200AF18: ; 0x0200AF18
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ add r4, r1, #0x0
+ ldr r2, _0200AF4C ; =0x00000235
+ ldr r3, [r5, #0x4]
+ mov r0, #0x1
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ add r7, r0, #0x0
+ beq _0200AF4A
+ ldr r2, [r5, #0xc]
+ add r1, r6, #0x0
+ bl FUN_0200A8E0
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ add r0, r7, #0x0
+ bl FUN_0200A8B8
+_0200AF4A:
+ pop {r3-r7, pc}
+ .balign 4
+_0200AF4C: .word 0x00000235
+
+ thumb_func_start FUN_0200AF50
+FUN_0200AF50: ; 0x0200AF50
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ add r4, r1, #0x0
+ ldr r2, _0200AF84 ; =0x000001EF
+ ldr r3, [r5, #0x4]
+ mov r0, #0x1
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ add r7, r0, #0x0
+ beq _0200AF82
+ ldr r2, [r5, #0xc]
+ add r1, r6, #0x0
+ bl FUN_0200A8E0
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ add r0, r7, #0x0
+ bl FUN_0200A8B8
+_0200AF82:
+ pop {r3-r7, pc}
+ .balign 4
+_0200AF84: .word 0x000001EF
+
+ thumb_func_start FUN_0200AF88
+FUN_0200AF88: ; 0x0200AF88
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldr r3, [r5, #0x4]
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ mov r0, #0x1
+ mov r1, #0x1a
+ mov r2, #0xcd
+ bl FUN_0200A86C
+ add r7, r0, #0x0
+ beq _0200AFBA
+ ldr r2, [r5, #0xc]
+ add r1, r6, #0x0
+ bl FUN_0200A8E0
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ add r0, r7, #0x0
+ bl FUN_0200A8B8
+_0200AFBA:
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0200AFBC
+FUN_0200AFBC: ; 0x0200AFBC
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ mov r2, #0x89
+ add r4, r1, #0x0
+ ldr r3, [r5, #0x4]
+ mov r0, #0x1
+ mov r1, #0x1a
+ lsl r2, r2, #0x2
+ bl FUN_0200A86C
+ add r7, r0, #0x0
+ beq _0200AFF0
+ ldr r2, [r5, #0xc]
+ add r1, r6, #0x0
+ bl FUN_0200A8E0
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ add r0, r7, #0x0
+ bl FUN_0200A8B8
+_0200AFF0:
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200AFF4
+FUN_0200AFF4: ; 0x0200AFF4
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ add r4, r1, #0x0
+ ldr r2, _0200B028 ; =0x0000017E
+ ldr r3, [r5, #0x4]
+ mov r0, #0x1
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ add r7, r0, #0x0
+ beq _0200B026
+ ldr r2, [r5, #0xc]
+ add r1, r6, #0x0
+ bl FUN_0200A8E0
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ add r0, r7, #0x0
+ bl FUN_0200A8B8
+_0200B026:
+ pop {r3-r7, pc}
+ .balign 4
+_0200B028: .word 0x0000017E
+
+ thumb_func_start FUN_0200B02C
+FUN_0200B02C: ; 0x0200B02C
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ add r4, r1, #0x0
+ ldr r2, _0200B060 ; =0x00000196
+ ldr r3, [r5, #0x4]
+ mov r0, #0x1
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ add r7, r0, #0x0
+ beq _0200B05E
+ ldr r2, [r5, #0xc]
+ add r1, r6, #0x0
+ bl FUN_0200A8E0
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ add r0, r7, #0x0
+ bl FUN_0200A8B8
+_0200B05E:
+ pop {r3-r7, pc}
+ .balign 4
+_0200B060: .word 0x00000196
+
+ thumb_func_start FUN_0200B064
+FUN_0200B064: ; 0x0200B064
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ mov r2, #0x23
+ add r4, r1, #0x0
+ ldr r3, [r5, #0x4]
+ mov r0, #0x1
+ mov r1, #0x1a
+ lsl r2, r2, #0x4
+ bl FUN_0200A86C
+ add r7, r0, #0x0
+ beq _0200B098
+ ldr r2, [r5, #0xc]
+ add r1, r6, #0x0
+ bl FUN_0200A8E0
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ add r0, r7, #0x0
+ bl FUN_0200A8B8
+_0200B098:
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200B09C
+FUN_0200B09C: ; 0x0200B09C
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ add r4, r1, #0x0
+ ldr r2, _0200B0D0 ; =0x00000231
+ ldr r3, [r5, #0x4]
+ mov r0, #0x1
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ add r7, r0, #0x0
+ beq _0200B0CE
+ ldr r2, [r5, #0xc]
+ add r1, r6, #0x0
+ bl FUN_0200A8E0
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ add r0, r7, #0x0
+ bl FUN_0200A8B8
+_0200B0CE:
+ pop {r3-r7, pc}
+ .balign 4
+_0200B0D0: .word 0x00000231
+
+ thumb_func_start FUN_0200B0D4
+FUN_0200B0D4: ; 0x0200B0D4
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r4, r2, #0x0
+ mov r2, #0x23
+ add r6, r1, #0x0
+ ldr r3, [r5, #0x4]
+ mov r0, #0x1
+ mov r1, #0x1a
+ lsl r2, r2, #0x4
+ bl FUN_0200A86C
+ add r7, r0, #0x0
+ beq _0200B108
+ ldrb r1, [r4, #0x1]
+ ldr r2, [r5, #0xc]
+ bl FUN_0200A8E0
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ add r0, r7, #0x0
+ bl FUN_0200A8B8
+_0200B108:
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200B10C
+FUN_0200B10C: ; 0x0200B10C
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ add r4, r1, #0x0
+ ldr r2, _0200B140 ; =0x0000022F
+ ldr r3, [r5, #0x4]
+ mov r0, #0x1
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ add r7, r0, #0x0
+ beq _0200B13E
+ ldr r2, [r5, #0xc]
+ add r1, r6, #0x0
+ bl FUN_0200A8E0
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ add r0, r7, #0x0
+ bl FUN_0200A8B8
+_0200B13E:
+ pop {r3-r7, pc}
+ .balign 4
+_0200B140: .word 0x0000022F
+
+ thumb_func_start FUN_0200B144
+FUN_0200B144: ; 0x0200B144
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0xc]
+ add r2, #0x14
+ add r4, r1, #0x0
+ add r1, r2, #0x0
+ bl FUN_02021E28
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200B164
+FUN_0200B164: ; 0x0200B164
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ add r4, r1, #0x0
+ ldr r2, _0200B198 ; =0x00000239
+ ldr r3, [r5, #0x4]
+ mov r0, #0x1
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ add r7, r0, #0x0
+ beq _0200B196
+ ldr r2, [r5, #0xc]
+ add r1, r6, #0x0
+ bl FUN_0200A8E0
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ add r0, r7, #0x0
+ bl FUN_0200A8B8
+_0200B196:
+ pop {r3-r7, pc}
+ .balign 4
+_0200B198: .word 0x00000239
+
+ thumb_func_start FUN_0200B19C
+FUN_0200B19C: ; 0x0200B19C
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ add r4, r1, #0x0
+ ldr r2, _0200B1D0 ; =0x0000023A
+ ldr r3, [r5, #0x4]
+ mov r0, #0x1
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ add r7, r0, #0x0
+ beq _0200B1CE
+ ldr r2, [r5, #0xc]
+ add r1, r6, #0x0
+ bl FUN_0200A8E0
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ add r0, r7, #0x0
+ bl FUN_0200A8B8
+_0200B1CE:
+ pop {r3-r7, pc}
+ .balign 4
+_0200B1D0: .word 0x0000023A
+
+ thumb_func_start FUN_0200B1D4
+FUN_0200B1D4: ; 0x0200B1D4
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ add r4, r1, #0x0
+ ldr r2, _0200B208 ; =0x0000023B
+ ldr r3, [r5, #0x4]
+ mov r0, #0x1
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ add r7, r0, #0x0
+ beq _0200B206
+ ldr r2, [r5, #0xc]
+ add r1, r6, #0x0
+ bl FUN_0200A8E0
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ add r0, r7, #0x0
+ bl FUN_0200A8B8
+_0200B206:
+ pop {r3-r7, pc}
+ .balign 4
+_0200B208: .word 0x0000023B
+
+ thumb_func_start FUN_0200B20C
+FUN_0200B20C: ; 0x0200B20C
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ mov r2, #0x8f
+ add r4, r1, #0x0
+ ldr r3, [r5, #0x4]
+ mov r0, #0x1
+ mov r1, #0x1a
+ lsl r2, r2, #0x2
+ bl FUN_0200A86C
+ add r7, r0, #0x0
+ beq _0200B240
+ ldr r2, [r5, #0xc]
+ add r1, r6, #0x0
+ bl FUN_0200A8E0
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ add r0, r7, #0x0
+ bl FUN_0200A8B8
+_0200B240:
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200B244
+FUN_0200B244: ; 0x0200B244
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldr r3, [r5, #0x4]
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ mov r0, #0x1
+ mov r1, #0x1a
+ mov r2, #0xc2
+ bl FUN_0200A86C
+ add r7, r0, #0x0
+ beq _0200B276
+ ldr r2, [r5, #0xc]
+ add r1, r6, #0x0
+ bl FUN_0200A8E0
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ add r0, r7, #0x0
+ bl FUN_0200A8B8
+_0200B276:
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0200B278
+FUN_0200B278: ; 0x0200B278
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldr r3, [r5, #0x4]
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ mov r0, #0x1
+ mov r1, #0x1a
+ mov r2, #0xbf
+ bl FUN_0200A86C
+ add r7, r0, #0x0
+ beq _0200B2AA
+ ldr r2, [r5, #0xc]
+ add r1, r6, #0x0
+ bl FUN_0200A8E0
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ add r0, r7, #0x0
+ bl FUN_0200A8B8
+_0200B2AA:
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0200B2AC
+FUN_0200B2AC: ; 0x0200B2AC
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldr r3, [r5, #0x4]
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ mov r0, #0x1
+ mov r1, #0x1a
+ mov r2, #0xbf
+ bl FUN_0200A86C
+ add r7, r0, #0x0
+ beq _0200B2DE
+ ldr r2, [r5, #0xc]
+ add r1, r6, #0x0
+ bl FUN_0200A8E0
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ add r0, r7, #0x0
+ bl FUN_0200A8B8
+_0200B2DE:
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0200B2E0
+FUN_0200B2E0: ; 0x0200B2E0
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ add r4, r1, #0x0
+ ldr r2, _0200B314 ; =0x0000023E
+ ldr r3, [r5, #0x4]
+ mov r0, #0x1
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ add r7, r0, #0x0
+ beq _0200B312
+ ldr r2, [r5, #0xc]
+ add r1, r6, #0x0
+ bl FUN_0200A8E0
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ add r0, r7, #0x0
+ bl FUN_0200A8B8
+_0200B312:
+ pop {r3-r7, pc}
+ .balign 4
+_0200B314: .word 0x0000023E
+
+ thumb_func_start FUN_0200B318
+FUN_0200B318: ; 0x0200B318
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ add r4, r1, #0x0
+ ldr r2, _0200B34C ; =0x0000023D
+ ldr r3, [r5, #0x4]
+ mov r0, #0x1
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ add r7, r0, #0x0
+ beq _0200B34A
+ ldr r2, [r5, #0xc]
+ add r1, r6, #0x0
+ bl FUN_0200A8E0
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ add r0, r7, #0x0
+ bl FUN_0200A8B8
+_0200B34A:
+ pop {r3-r7, pc}
+ .balign 4
+_0200B34C: .word 0x0000023D
+
+ thumb_func_start FUN_0200B350
+FUN_0200B350: ; 0x0200B350
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ add r4, r1, #0x0
+ ldr r2, _0200B384 ; =0x00000237
+ ldr r3, [r5, #0x4]
+ mov r0, #0x1
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ add r7, r0, #0x0
+ beq _0200B382
+ ldr r2, [r5, #0xc]
+ add r1, r6, #0x0
+ bl FUN_0200A8E0
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ add r0, r7, #0x0
+ bl FUN_0200A8B8
+_0200B382:
+ pop {r3-r7, pc}
+ .balign 4
+_0200B384: .word 0x00000237
+
+ thumb_func_start FUN_0200B388
+FUN_0200B388: ; 0x0200B388
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ mov r2, #0x8e
+ add r4, r1, #0x0
+ ldr r3, [r5, #0x4]
+ mov r0, #0x1
+ mov r1, #0x1a
+ lsl r2, r2, #0x2
+ bl FUN_0200A86C
+ add r7, r0, #0x0
+ beq _0200B3BC
+ ldr r2, [r5, #0xc]
+ add r1, r6, #0x0
+ bl FUN_0200A8E0
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ add r0, r7, #0x0
+ bl FUN_0200A8B8
+_0200B3BC:
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200B3C0
+FUN_0200B3C0: ; 0x0200B3C0
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldr r3, [r5, #0x4]
+ add r6, r1, #0x0
+ add r4, r2, #0x0
+ mov r0, #0x1
+ mov r1, #0x1a
+ mov r2, #0xc7
+ bl FUN_0200A86C
+ add r7, r0, #0x0
+ cmp r4, #0x0
+ beq _0200B3E0
+ cmp r4, #0x1
+ beq _0200B3EA
+ b _0200B3F4
+_0200B3E0:
+ ldr r2, [r5, #0xc]
+ mov r1, #0x44
+ bl FUN_0200A8E0
+ b _0200B3FA
+_0200B3EA:
+ ldr r2, [r5, #0xc]
+ mov r1, #0x45
+ bl FUN_0200A8E0
+ b _0200B3FA
+_0200B3F4:
+ ldr r0, [r5, #0xc]
+ bl FUN_02021A4C
+_0200B3FA:
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ add r0, r7, #0x0
+ bl FUN_0200A8B8
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200B410
+FUN_0200B410: ; 0x0200B410
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, r2, #0x0
+ add r4, r1, #0x0
+ ldr r2, [r5, #0xc]
+ add r1, r3, #0x0
+ bl FUN_0206B484
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200B430
+FUN_0200B430: ; 0x0200B430
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ add r4, r1, #0x0
+ ldr r2, _0200B464 ; =0x0000014B
+ ldr r3, [r5, #0x4]
+ mov r0, #0x1
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ add r7, r0, #0x0
+ beq _0200B462
+ ldr r2, [r5, #0xc]
+ add r1, r6, #0x0
+ bl FUN_0200A8E0
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ add r0, r7, #0x0
+ bl FUN_0200A8B8
+_0200B462:
+ pop {r3-r7, pc}
+ .balign 4
+_0200B464: .word 0x0000014B
+
+ thumb_func_start FUN_0200B468
+FUN_0200B468: ; 0x0200B468
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ add r4, r1, #0x0
+ ldr r2, _0200B49C ; =0x00000226
+ ldr r3, [r5, #0x4]
+ mov r0, #0x1
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ add r7, r0, #0x0
+ beq _0200B49A
+ ldr r2, [r5, #0xc]
+ add r1, r6, #0x0
+ bl FUN_0200A8E0
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ add r0, r7, #0x0
+ bl FUN_0200A8B8
+_0200B49A:
+ pop {r3-r7, pc}
+ .balign 4
+_0200B49C: .word 0x00000226
+
+ thumb_func_start FUN_0200B4A0
+FUN_0200B4A0: ; 0x0200B4A0
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ mov r2, #0x99
+ add r4, r1, #0x0
+ ldr r3, [r5, #0x4]
+ mov r0, #0x1
+ mov r1, #0x1a
+ lsl r2, r2, #0x2
+ bl FUN_0200A86C
+ add r7, r0, #0x0
+ beq _0200B4D4
+ ldr r2, [r5, #0xc]
+ add r1, r6, #0x0
+ bl FUN_0200A8E0
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ add r0, r7, #0x0
+ bl FUN_0200A8B8
+_0200B4D4:
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200B4D8
+FUN_0200B4D8: ; 0x0200B4D8
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r0, r2, #0x0
+ add r6, r1, #0x0
+ add r4, r3, #0x0
+ bl FUN_02088D40
+ add r2, r0, #0x0
+ beq _0200B516
+ cmp r4, #0x0
+ beq _0200B516
+ ldr r3, [r5, #0x4]
+ mov r0, #0x1
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ add r7, r0, #0x0
+ beq _0200B516
+ ldr r2, [r5, #0xc]
+ add r1, r4, #0x0
+ bl FUN_0200A8E0
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ add r0, r7, #0x0
+ bl FUN_0200A8B8
+_0200B516:
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0200B518
+FUN_0200B518: ; 0x0200B518
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ ldr r1, [r5, #0xc]
+ add r0, r2, #0x0
+ bl FUN_02013A58
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0200B534
+FUN_0200B534: ; 0x0200B534
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldr r3, [r5, #0x4]
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ mov r0, #0x1
+ mov r1, #0x1a
+ mov r2, #0xa
+ bl FUN_0200A86C
+ add r7, r0, #0x0
+ beq _0200B566
+ ldr r2, [r5, #0xc]
+ add r1, r6, #0x0
+ bl FUN_0200A8E0
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ add r0, r7, #0x0
+ bl FUN_0200A8B8
+_0200B566:
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0200B568
+FUN_0200B568: ; 0x0200B568
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldr r3, [r5, #0x4]
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ mov r0, #0x1
+ mov r1, #0x1a
+ mov r2, #0xb
+ bl FUN_0200A86C
+ add r7, r0, #0x0
+ beq _0200B59A
+ ldr r2, [r5, #0xc]
+ add r1, r6, #0x0
+ bl FUN_0200A8E0
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ add r0, r7, #0x0
+ bl FUN_0200A8B8
+_0200B59A:
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0200B59C
+FUN_0200B59C: ; 0x0200B59C
+ push {r3-r7, lr}
+ add r4, r2, #0x0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ add r7, r1, #0x0
+ bl FUN_02015CC0
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02015CE0
+ add r4, r0, #0x0
+ ldr r2, _0200B620 ; =0x020ECE64
+ lsl r3, r6, #0x1
+ ldrh r2, [r2, r3]
+ ldr r3, [r5, #0x4]
+ mov r0, #0x1
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ add r6, r0, #0x0
+ beq _0200B61E
+ bl FUN_0200A940
+ cmp r4, r0
+ bhs _0200B5EE
+ ldr r2, [r5, #0xc]
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ bl FUN_0200A8E0
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ add r0, r6, #0x0
+ bl FUN_0200A8B8
+ pop {r3-r7, pc}
+_0200B5EE:
+ add r0, r6, #0x0
+ bl FUN_0200A8B8
+ ldr r2, _0200B624 ; =0x0000017E
+ ldr r3, [r5, #0x4]
+ mov r0, #0x1
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ add r4, r0, #0x0
+ beq _0200B61E
+ ldr r2, [r5, #0xc]
+ mov r1, #0x0
+ bl FUN_0200A8E0
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ add r0, r4, #0x0
+ bl FUN_0200A8B8
+_0200B61E:
+ pop {r3-r7, pc}
+ .balign 4
+_0200B620: .word 0x020ECE64
+_0200B624: .word 0x0000017E
+
+ thumb_func_start FUN_0200B628
+FUN_0200B628: ; 0x0200B628
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ add r4, r1, #0x0
+ ldr r2, _0200B65C ; =0x0000019E
+ ldr r3, [r5, #0x4]
+ mov r0, #0x1
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ add r7, r0, #0x0
+ beq _0200B65A
+ ldr r2, [r5, #0xc]
+ add r1, r6, #0x0
+ bl FUN_0200A8E0
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ add r0, r7, #0x0
+ bl FUN_0200A8B8
+_0200B65A:
+ pop {r3-r7, pc}
+ .balign 4
+_0200B65C: .word 0x0000019E
+
+ thumb_func_start FUN_0200B660
+FUN_0200B660: ; 0x0200B660
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ add r4, r1, #0x0
+ ldr r2, _0200B694 ; =0x00000152
+ ldr r3, [r5, #0x4]
+ mov r0, #0x1
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ add r7, r0, #0x0
+ beq _0200B692
+ ldr r2, [r5, #0xc]
+ add r1, r6, #0x0
+ bl FUN_0200A8E0
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ add r0, r7, #0x0
+ bl FUN_0200A8B8
+_0200B692:
+ pop {r3-r7, pc}
+ .balign 4
+_0200B694: .word 0x00000152
+
+ thumb_func_start FUN_0200B698
+FUN_0200B698: ; 0x0200B698
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ add r4, r1, #0x0
+ ldr r2, _0200B6CC ; =0x00000153
+ ldr r3, [r5, #0x4]
+ mov r0, #0x1
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ add r7, r0, #0x0
+ beq _0200B6CA
+ ldr r2, [r5, #0xc]
+ add r1, r6, #0x0
+ bl FUN_0200A8E0
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ add r0, r7, #0x0
+ bl FUN_0200A8B8
+_0200B6CA:
+ pop {r3-r7, pc}
+ .balign 4
+_0200B6CC: .word 0x00000153
+
+ thumb_func_start FUN_0200B6D0
+FUN_0200B6D0: ; 0x0200B6D0
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ mov r2, #0x55
+ add r4, r1, #0x0
+ ldr r3, [r5, #0x4]
+ mov r0, #0x1
+ mov r1, #0x1a
+ lsl r2, r2, #0x2
+ bl FUN_0200A86C
+ add r7, r0, #0x0
+ beq _0200B704
+ ldr r2, [r5, #0xc]
+ add r1, r6, #0x0
+ bl FUN_0200A8E0
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ add r0, r7, #0x0
+ bl FUN_0200A8B8
+_0200B704:
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200B708
+FUN_0200B708: ; 0x0200B708
+ push {r4-r7, lr}
+ sub sp, #0x14
+ str r0, [sp, #0x8]
+ add r5, r2, #0x0
+ add r0, r1, #0x0
+ str r3, [sp, #0xc]
+ bl FUN_0202881C
+ add r6, r0, #0x0
+ add r1, r5, #0x0
+ bl FUN_020287F8
+ str r0, [sp, #0x10]
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ bl FUN_02028804
+ add r7, r0, #0x0
+ mov r0, #0x40
+ mov r1, #0x4
+ bl FUN_020219F4
+ add r4, r0, #0x0
+ ldr r2, [sp, #0x28]
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ bl FUN_020287A8
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02021E28
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0xc]
+ ldr r3, [sp, #0x10]
+ add r2, r4, #0x0
+ str r7, [sp, #0x4]
+ bl FUN_0200ABB4
+ add r0, r4, #0x0
+ bl FUN_02021A20
+ add sp, #0x14
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_0200B764
+FUN_0200B764: ; 0x0200B764
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r4, r2, #0x0
+ mov r2, #0x5b
+ add r7, r1, #0x0
+ ldr r3, [r5, #0x4]
+ mov r0, #0x1
+ mov r1, #0x1a
+ lsl r2, r2, #0x2
+ bl FUN_0200A86C
+ add r6, r0, #0x0
+ beq _0200B7A4
+ cmp r4, #0x1
+ blo _0200B786
+ cmp r4, #0xc
+ bls _0200B788
+_0200B786:
+ mov r4, #0x1
+_0200B788:
+ ldr r2, [r5, #0xc]
+ add r0, r6, #0x0
+ sub r1, r4, #0x1
+ bl FUN_0200A8E0
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ mov r3, #0x0
+ bl FUN_0200AB70
+ add r0, r6, #0x0
+ bl FUN_0200A8B8
+_0200B7A4:
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200B7A8
+FUN_0200B7A8: ; 0x0200B7A8
+ ldr r2, [r0, #0x8]
+ lsl r0, r1, #0x3
+ add r0, r2, r0
+ ldr r3, _0200B7B4 ; =FUN_02021FF8
+ ldr r0, [r0, #0x4]
+ bx r3
+ .balign 4
+_0200B7B4: .word FUN_02021FF8
+
+ thumb_func_start FUN_0200B7B8
+FUN_0200B7B8: ; 0x0200B7B8
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ add r6, r1, #0x0
+ add r0, r2, #0x0
+ bl FUN_02021F2C
+ add r5, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_02021A4C
+ ldrh r1, [r5, #0x0]
+ ldr r0, _0200B844 ; =0x0000FFFF
+ cmp r1, r0
+ beq _0200B840
+_0200B7D4:
+ ldr r0, _0200B848 ; =0x0000FFFE
+ cmp r1, r0
+ bne _0200B82E
+ add r0, r5, #0x0
+ bl FUN_0201B8F8
+ cmp r0, #0x0
+ beq _0200B810
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_0201B914
+ add r4, r0, #0x0
+ ldr r0, [r7, #0x0]
+ cmp r4, r0
+ blo _0200B7F8
+ bl ErrorHandling
+_0200B7F8:
+ ldr r2, [r7, #0x8]
+ lsl r1, r4, #0x3
+ add r1, r2, r1
+ ldr r1, [r1, #0x4]
+ add r0, r6, #0x0
+ bl FUN_02022048
+ add r0, r5, #0x0
+ bl FUN_0201B8B8
+ add r5, r0, #0x0
+ b _0200B838
+_0200B810:
+ add r0, r5, #0x0
+ add r4, r5, #0x0
+ bl FUN_0201B8B8
+ add r5, r0, #0x0
+ cmp r4, r5
+ bhs _0200B838
+_0200B81E:
+ ldrh r1, [r4, #0x0]
+ add r0, r6, #0x0
+ add r4, r4, #0x2
+ bl FUN_02021FB0
+ cmp r4, r5
+ blo _0200B81E
+ b _0200B838
+_0200B82E:
+ ldrh r1, [r5, #0x0]
+ add r0, r6, #0x0
+ add r5, r5, #0x2
+ bl FUN_02021FB0
+_0200B838:
+ ldrh r1, [r5, #0x0]
+ ldr r0, _0200B844 ; =0x0000FFFF
+ cmp r1, r0
+ bne _0200B7D4
+_0200B840:
+ pop {r3-r7, pc}
+ nop
+_0200B844: .word 0x0000FFFF
+_0200B848: .word 0x0000FFFE
+
+ thumb_func_start FUN_0200B84C
+FUN_0200B84C: ; 0x0200B84C
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ mov r6, #0x0
+ cmp r0, #0x0
+ bls _0200B86E
+ add r4, r6, #0x0
+_0200B85A:
+ ldr r0, [r5, #0x8]
+ add r0, r0, r4
+ ldr r0, [r0, #0x4]
+ bl FUN_02021A4C
+ ldr r0, [r5, #0x0]
+ add r6, r6, #0x1
+ add r4, #0x8
+ cmp r6, r0
+ blo _0200B85A
+_0200B86E:
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0200B870
+FUN_0200B870: ; 0x0200B870
+ push {r4-r7, lr}
+ sub sp, #0x2c
+ add r4, r3, #0x0
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x2c
+ str r2, [sp, #0x4]
+ bl FUN_02016998
+ str r0, [sp, #0x8]
+ cmp r0, #0x0
+ beq _0200B98A
+ ldr r3, [sp, #0x8]
+ mov r0, #0xe
+ mov r1, #0x4
+ mov r2, #0x1
+ add r3, r3, #0x4
+ str r4, [sp, #0x0]
+ bl FUN_02006BB0
+ ldr r1, [sp, #0x8]
+ mov r3, #0x0
+ str r0, [r1, #0x0]
+ add r0, r1, #0x0
+ ldr r0, [r0, #0x4]
+ ldr r4, [r0, #0x14]
+ ldr r0, [r0, #0x10]
+ cmp r0, #0x0
+ bls _0200B984
+ ldr r0, [sp, #0x4]
+ ldr r1, [sp, #0x4]
+ lsl r0, r0, #0x4
+ orr r1, r0
+ str r1, [sp, #0xc]
+ add r1, r0, #0x0
+ orr r1, r5
+ str r1, [sp, #0x10]
+ orr r0, r6
+ str r0, [sp, #0x14]
+ ldr r1, [sp, #0x4]
+ lsl r0, r5, #0x4
+ orr r1, r0
+ str r1, [sp, #0x18]
+ add r1, r5, #0x0
+ orr r1, r0
+ str r1, [sp, #0x1c]
+ orr r0, r6
+ lsl r2, r6, #0x4
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x1c]
+ ldr r1, [sp, #0x4]
+ add r7, r2, #0x0
+ orr r7, r1
+ add r1, r2, #0x0
+ orr r1, r5
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ orr r2, r6
+ str r1, [sp, #0x28]
+ lsl r1, r7, #0x18
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+ ldr r0, [sp, #0x18]
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+ lsr r1, r1, #0x18
+ lsl r0, r0, #0x18
+ mov r12, r2
+ str r1, [sp, #0x24]
+ lsr r6, r0, #0x18
+ ldr r0, [sp, #0x14]
+ ldr r1, [sp, #0x10]
+ ldr r2, [sp, #0xc]
+ lsl r0, r0, #0x18
+ lsl r1, r1, #0x18
+ lsl r2, r2, #0x18
+ lsr r0, r0, #0x18
+ lsr r1, r1, #0x18
+ lsr r2, r2, #0x18
+_0200B914:
+ ldrb r5, [r4, r3]
+ cmp r5, #0x12
+ bgt _0200B93C
+ bge _0200B962
+ cmp r5, #0x10
+ bgt _0200B936
+ bge _0200B95A
+ cmp r5, #0x2
+ bgt _0200B978
+ cmp r5, #0x0
+ blt _0200B978
+ beq _0200B94E
+ cmp r5, #0x1
+ beq _0200B952
+ cmp r5, #0x2
+ beq _0200B956
+ b _0200B978
+_0200B936:
+ cmp r5, #0x11
+ beq _0200B95E
+ b _0200B978
+_0200B93C:
+ cmp r5, #0x21
+ bgt _0200B948
+ bge _0200B96E
+ cmp r5, #0x20
+ beq _0200B968
+ b _0200B978
+_0200B948:
+ cmp r5, #0x22
+ beq _0200B974
+ b _0200B978
+_0200B94E:
+ strb r2, [r4, r3]
+ b _0200B978
+_0200B952:
+ strb r1, [r4, r3]
+ b _0200B978
+_0200B956:
+ strb r0, [r4, r3]
+ b _0200B978
+_0200B95A:
+ strb r6, [r4, r3]
+ b _0200B978
+_0200B95E:
+ strb r7, [r4, r3]
+ b _0200B978
+_0200B962:
+ ldr r5, [sp, #0x20]
+ strb r5, [r4, r3]
+ b _0200B978
+_0200B968:
+ ldr r5, [sp, #0x24]
+ strb r5, [r4, r3]
+ b _0200B978
+_0200B96E:
+ ldr r5, [sp, #0x28]
+ strb r5, [r4, r3]
+ b _0200B978
+_0200B974:
+ mov r5, r12
+ strb r5, [r4, r3]
+_0200B978:
+ ldr r5, [sp, #0x8]
+ add r3, r3, #0x1
+ ldr r5, [r5, #0x4]
+ ldr r5, [r5, #0x10]
+ cmp r3, r5
+ blo _0200B914
+_0200B984:
+ ldr r1, [sp, #0x4]
+ ldr r0, [sp, #0x8]
+ str r1, [r0, #0x28]
+_0200B98A:
+ ldr r0, [sp, #0x8]
+ add sp, #0x2c
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_0200B990
+FUN_0200B990: ; 0x0200B990
+ push {r4, lr}
+ add r4, r0, #0x0
+ beq _0200B9A6
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ beq _0200B9A0
+ bl FUN_02016A18
+_0200B9A0:
+ add r0, r4, #0x0
+ bl FUN_02016A18
+_0200B9A6:
+ pop {r4, pc}
+
+ thumb_func_start FUN_0200B9A8
+FUN_0200B9A8: ; 0x0200B9A8
+ push {r3-r5, lr}
+ sub sp, #0x18
+ add r4, r0, #0x0
+ ldr r0, _0200B9E4 ; =0x020ECE6E
+ lsl r5, r1, #0x2
+ ldrh r1, [r0, r5]
+ lsl r3, r3, #0x10
+ mov r0, #0x8
+ str r1, [sp, #0x0]
+ str r0, [sp, #0x4]
+ lsr r3, r3, #0x10
+ str r3, [sp, #0x8]
+ ldr r3, [sp, #0x28]
+ lsl r3, r3, #0x10
+ lsr r3, r3, #0x10
+ str r3, [sp, #0xc]
+ str r1, [sp, #0x10]
+ str r0, [sp, #0x14]
+ ldr r1, [r4, #0x4]
+ add r0, r2, #0x0
+ ldr r2, [r1, #0x14]
+ ldr r1, _0200B9E8 ; =0x020ECE6C
+ ldrh r1, [r1, r5]
+ add r1, r2, r1
+ mov r2, #0x0
+ add r3, r2, #0x0
+ bl FUN_02019658
+ add sp, #0x18
+ pop {r3-r5, pc}
+ .balign 4
+_0200B9E4: .word 0x020ECE6E
+_0200B9E8: .word 0x020ECE6C
+
+ thumb_func_start FUN_0200B9EC
+FUN_0200B9EC: ; 0x0200B9EC
+ push {r3-r7, lr}
+ sub sp, #0x18
+ add r6, r0, #0x0
+ ldr r0, [sp, #0x30]
+ add r4, r2, #0x0
+ str r0, [sp, #0x30]
+ add r0, r6, #0x0
+ add r2, r3, #0x0
+ add r0, #0x8
+ add r3, r4, #0x0
+ ldr r5, [sp, #0x34]
+ ldr r7, [sp, #0x38]
+ bl ConvertUIntToDecimalString
+ ldrh r1, [r6, #0x8]
+ ldr r0, _0200BA74 ; =0x0000FFFF
+ cmp r1, r0
+ beq _0200BA6E
+ lsl r0, r7, #0x10
+ add r4, r6, #0x0
+ lsr r7, r0, #0x10
+_0200BA16:
+ ldrh r2, [r4, #0x8]
+ cmp r2, #0xa2
+ blo _0200BA4A
+ cmp r2, #0xab
+ bhi _0200BA4A
+ mov r0, #0x8
+ str r0, [sp, #0x0]
+ str r0, [sp, #0x4]
+ lsl r0, r5, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x8]
+ str r7, [sp, #0xc]
+ mov r0, #0x8
+ str r0, [sp, #0x10]
+ str r0, [sp, #0x14]
+ ldr r1, [r6, #0x4]
+ sub r2, #0xa2
+ ldr r1, [r1, #0x14]
+ lsl r2, r2, #0x5
+ add r1, r1, r2
+ mov r2, #0x0
+ ldr r0, [sp, #0x30]
+ add r3, r2, #0x0
+ bl FUN_02019658
+ b _0200BA62
+_0200BA4A:
+ mov r0, #0x8
+ str r0, [sp, #0x0]
+ str r0, [sp, #0x4]
+ ldr r1, [r6, #0x28]
+ lsl r2, r5, #0x10
+ lsl r1, r1, #0x18
+ ldr r0, [sp, #0x30]
+ lsr r1, r1, #0x18
+ lsr r2, r2, #0x10
+ add r3, r7, #0x0
+ bl FUN_020196F4
+_0200BA62:
+ add r4, r4, #0x2
+ ldrh r1, [r4, #0x8]
+ ldr r0, _0200BA74 ; =0x0000FFFF
+ add r5, #0x8
+ cmp r1, r0
+ bne _0200BA16
+_0200BA6E:
+ add sp, #0x18
+ pop {r3-r7, pc}
+ nop
+_0200BA74: .word 0x0000FFFF
+
+ thumb_func_start FUN_0200BA78
+FUN_0200BA78: ; 0x0200BA78
+ push {r3-r6, lr}
+ sub sp, #0xc
+ add r4, r2, #0x0
+ ldr r2, [sp, #0x2c]
+ add r6, r3, #0x0
+ str r2, [sp, #0x0]
+ ldr r2, [sp, #0x24]
+ ldr r3, [sp, #0x28]
+ add r5, r0, #0x0
+ bl FUN_0200B9A8
+ ldr r0, [sp, #0x24]
+ ldr r3, [sp, #0x20]
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x28]
+ add r1, r4, #0x0
+ add r0, #0x10
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x2c]
+ add r2, r6, #0x0
+ str r0, [sp, #0x8]
+ add r0, r5, #0x0
+ bl FUN_0200B9EC
+ add sp, #0xc
+ pop {r3-r6, pc}
+
+ thumb_func_start FUN_0200BAAC
+FUN_0200BAAC: ; 0x0200BAAC
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ add r4, r2, #0x0
+ ldr r2, [r7, #0x28]
+ ldr r6, [sp, #0x18]
+ lsl r0, r2, #0x4
+ orr r0, r2
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ add r0, r7, #0x0
+ add r2, r3, #0x0
+ add r0, #0x8
+ add r3, r4, #0x0
+ bl ConvertUIntToDecimalString
+ ldrh r1, [r7, #0x8]
+ ldr r0, _0200BB10 ; =0x0000FFFF
+ cmp r1, r0
+ beq _0200BB0C
+ add r4, r7, #0x0
+ mov r5, #0x0
+_0200BAD8:
+ ldrh r2, [r4, #0x8]
+ cmp r2, #0xa2
+ blo _0200BAF6
+ cmp r2, #0xab
+ bhi _0200BAF6
+ ldr r0, [r7, #0x4]
+ sub r2, #0xa2
+ ldr r1, [r0, #0x14]
+ lsl r0, r2, #0x5
+ add r0, r1, r0
+ add r1, r6, r5
+ mov r2, #0x20
+ blx MIi_CpuCopy32
+ b _0200BB00
+_0200BAF6:
+ ldr r1, [sp, #0x0]
+ add r0, r6, r5
+ mov r2, #0x20
+ blx MI_CpuFill8
+_0200BB00:
+ add r4, r4, #0x2
+ ldrh r1, [r4, #0x8]
+ ldr r0, _0200BB10 ; =0x0000FFFF
+ add r5, #0x20
+ cmp r1, r0
+ bne _0200BAD8
+_0200BB0C:
+ pop {r3-r7, pc}
+ nop
+_0200BB10: .word 0x0000FFFF
+
+ thumb_func_start FUN_0200BB14
+FUN_0200BB14: ; 0x0200BB14
+ push {r4, lr}
+ mov r1, #0x4e
+ lsl r1, r1, #0x2
+ add r4, r0, #0x0
+ bl FUN_02016998
+ cmp r0, #0x0
+ bne _0200BB28
+ mov r0, #0x0
+ pop {r4, pc}
+_0200BB28:
+ str r4, [r0, #0x0]
+ mov r1, #0x0
+ str r1, [r0, #0x4]
+ mov r1, #0x1
+ str r1, [r0, #0x8]
+ pop {r4, pc}
+
+ thumb_func_start FUN_0200BB34
+FUN_0200BB34: ; 0x0200BB34
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _0200BB3E
+ bl ErrorHandling
+_0200BB3E:
+ ldr r0, [r4, #0x0]
+ mov r1, #0x58
+ bl FUN_02016998
+ cmp r0, #0x0
+ bne _0200BB4E
+ mov r0, #0x0
+ pop {r4, pc}
+_0200BB4E:
+ ldr r1, [r4, #0x4]
+ mov r2, #0x0
+ add r1, r1, #0x1
+ str r1, [r4, #0x4]
+ add r3, r0, #0x0
+ add r1, r2, #0x0
+_0200BB5A:
+ add r2, r2, #0x1
+ str r1, [r3, #0xc]
+ add r3, r3, #0x4
+ cmp r2, #0x6
+ blt _0200BB5A
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200BB68
+FUN_0200BB68: ; 0x0200BB68
+ add r0, #0x10
+ bx lr
+
+ thumb_func_start FUN_0200BB6C
+FUN_0200BB6C: ; 0x0200BB6C
+ push {r4-r7, lr}
+ sub sp, #0x24
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ add r7, r3, #0x0
+ cmp r5, #0x0
+ bne _0200BB80
+ bl ErrorHandling
+_0200BB80:
+ cmp r5, #0x0
+ bne _0200BB8A
+ add sp, #0x24
+ mov r0, #0x0
+ pop {r4-r7, pc}
+_0200BB8A:
+ ldr r0, [r6, #0x0]
+ str r0, [sp, #0x14]
+ ldr r0, [r6, #0x4]
+ str r0, [sp, #0x18]
+ ldr r0, [r6, #0x8]
+ str r0, [sp, #0x1c]
+ ldr r0, [r5, #0x0]
+ str r0, [sp, #0x20]
+ ldr r1, [r6, #0xc]
+ ldr r2, [r6, #0x10]
+ add r0, sp, #0x14
+ bl FUN_0201D060
+ ldr r1, [r5, #0x0]
+ add r0, r7, #0x0
+ bl FUN_0201E00C
+ blx FUN_020B0FC0
+ ldr r0, [r5, #0x8]
+ cmp r0, #0x1
+ bne _0200BBD6
+ ldr r0, [r4, #0x10]
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x14]
+ str r0, [sp, #0x4]
+ ldr r0, [r4, #0x18]
+ str r0, [sp, #0x8]
+ ldr r0, [r4, #0x1c]
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x0]
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #0x0]
+ ldr r1, [r4, #0x4]
+ ldr r2, [r4, #0x8]
+ ldr r3, [r4, #0xc]
+ bl FUN_02009EAC
+_0200BBD6:
+ ldr r1, [r5, #0x0]
+ mov r0, #0x20
+ bl FUN_0201C328
+ str r0, [r5, #0xc]
+ bl FUN_0201D168
+ bl FUN_0201E0BC
+ mov r0, #0x1
+ add sp, #0x24
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200BBF0
+FUN_0200BBF0: ; 0x0200BBF0
+ push {r4, lr}
+ add r3, r0, #0x0
+ add r4, r1, #0x0
+ cmp r3, #0x0
+ beq _0200BBFE
+ cmp r4, #0x0
+ bne _0200BC02
+_0200BBFE:
+ mov r0, #0x0
+ pop {r4, pc}
+_0200BC02:
+ add r0, r2, #0x0
+ add r1, r3, #0x0
+ ldr r2, [r3, #0x0]
+ add r1, #0x10
+ bl FUN_02008C9C
+ str r0, [r4, #0x0]
+ mov r0, #0x1
+ pop {r4, pc}
+
+ thumb_func_start FUN_0200BC14
+FUN_0200BC14: ; 0x0200BC14
+ ldr r3, _0200BC18 ; =FUN_0201FFC8
+ bx r3
+ .balign 4
+_0200BC18: .word FUN_0201FFC8
+
+ thumb_func_start FUN_0200BC1C
+FUN_0200BC1C: ; 0x0200BC1C
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _0200BC26
+ bl ErrorHandling
+_0200BC26:
+ ldr r0, [r4, #0x0]
+ bl FUN_0201FDEC
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200BC30
+FUN_0200BC30: ; 0x0200BC30
+ ldr r3, _0200BC34 ; =FUN_02009F80
+ bx r3
+ .balign 4
+_0200BC34: .word FUN_02009F80
+
+ thumb_func_start FUN_0200BC38
+FUN_0200BC38: ; 0x0200BC38
+ ldr r3, _0200BC3C ; =FUN_0201C348
+ bx r3
+ .balign 4
+_0200BC3C: .word FUN_0201C348
+
+ thumb_func_start FUN_0200BC40
+FUN_0200BC40: ; 0x0200BC40
+ ldr r3, _0200BC48 ; =FUN_0201FD58
+ ldr r0, [r0, #0x0]
+ bx r3
+ nop
+_0200BC48: .word FUN_0201FD58
+
+ thumb_func_start FUN_0200BC4C
+FUN_0200BC4C: ; 0x0200BC4C
+ push {r3, lr}
+ ldr r0, [r0, #0x4]
+ cmp r0, #0x0
+ beq _0200BC58
+ bl FUN_02008C80
+_0200BC58:
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200BC5C
+FUN_0200BC5C: ; 0x0200BC5C
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x54]
+ mov r4, #0x0
+ cmp r0, #0x0
+ ble _0200BC7C
+_0200BC68:
+ ldr r0, [r5, #0x8]
+ add r1, r4, #0x0
+ bl FUN_02009660
+ bl FUN_020096B4
+ ldr r0, [r5, #0x54]
+ add r4, r4, #0x1
+ cmp r4, r0
+ blt _0200BC68
+_0200BC7C:
+ ldr r0, [r5, #0x8]
+ bl FUN_02016A18
+ ldr r0, [r5, #0x24]
+ bl FUN_02009C30
+ ldr r0, [r5, #0x28]
+ bl FUN_02009E28
+ ldr r0, [r5, #0x54]
+ mov r6, #0x0
+ cmp r0, #0x0
+ ble _0200BCAE
+ add r4, r5, #0x0
+_0200BC98:
+ ldr r0, [r4, #0x24]
+ bl FUN_02009448
+ ldr r0, [r4, #0xc]
+ bl FUN_02008E2C
+ ldr r0, [r5, #0x54]
+ add r6, r6, #0x1
+ add r4, r4, #0x4
+ cmp r6, r0
+ blt _0200BC98
+_0200BCAE:
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0200BCB0
+FUN_0200BCB0: ; 0x0200BCB0
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0xc]
+ bl FUN_0201C350
+ bl FUN_0201D12C
+ bl FUN_0201E08C
+ ldr r0, [r4, #0x8]
+ cmp r0, #0x1
+ bne _0200BCCC
+ bl FUN_02009FA0
+_0200BCCC:
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200BCD0
+FUN_0200BCD0: ; 0x0200BCD0
+ ldr r2, [r0, #0x4]
+ ldr r3, _0200BCDC ; =FUN_02016A18
+ sub r2, r2, #0x1
+ str r2, [r0, #0x4]
+ add r0, r1, #0x0
+ bx r3
+ .balign 4
+_0200BCDC: .word FUN_02016A18
+
+ thumb_func_start FUN_0200BCE0
+FUN_0200BCE0: ; 0x0200BCE0
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0200BC40
+ add r0, r4, #0x0
+ bl FUN_0200BC4C
+ add r0, r4, #0x0
+ bl FUN_0200BC5C
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0200BCD0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200BD04
+FUN_0200BD04: ; 0x0200BD04
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x0
+ beq _0200BD12
+ bl ErrorHandling
+_0200BD12:
+ add r0, r4, #0x0
+ bl FUN_0200BCB0
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r4, pc}
+
+ thumb_func_start FUN_0200BD20
+FUN_0200BD20: ; 0x0200BD20
+ push {r4-r7, lr}
+ sub sp, #0x24
+ add r5, r0, #0x0
+ mov r0, #0x6
+ add r4, r1, #0x0
+ str r2, [sp, #0x10]
+ str r0, [sp, #0x14]
+ cmp r5, #0x0
+ beq _0200BD36
+ cmp r4, #0x0
+ bne _0200BD3C
+_0200BD36:
+ add sp, #0x24
+ mov r0, #0x0
+ pop {r4-r7, pc}
+_0200BD3C:
+ add r0, r2, #0x0
+ ldr r0, [r0, #0x10]
+ cmp r0, #0x0
+ bne _0200BD48
+ mov r0, #0x4
+ str r0, [sp, #0x14]
+_0200BD48:
+ ldr r0, [sp, #0x14]
+ str r0, [r4, #0x54]
+ bl FUN_0200965C
+ add r2, r0, #0x0
+ ldr r1, [sp, #0x14]
+ ldr r0, [r5, #0x0]
+ mul r1, r2
+ bl FUN_02016998
+ str r0, [r4, #0x8]
+ ldr r0, [sp, #0x14]
+ mov r7, #0x0
+ cmp r0, #0x0
+ ble _0200BD94
+ ldr r6, [sp, #0x10]
+_0200BD68:
+ ldr r0, [r4, #0x8]
+ add r1, r7, #0x0
+ bl FUN_02009660
+ str r0, [sp, #0x18]
+ ldr r0, [r5, #0x0]
+ ldr r1, [r6, #0x0]
+ bl FUN_020161A4
+ ldr r1, [sp, #0x18]
+ ldr r2, [r5, #0x0]
+ str r0, [sp, #0x1c]
+ bl FUN_02009668
+ ldr r0, [sp, #0x1c]
+ bl FUN_02016A18
+ ldr r0, [sp, #0x14]
+ add r7, r7, #0x1
+ add r6, r6, #0x4
+ cmp r7, r0
+ blt _0200BD68
+_0200BD94:
+ ldr r0, [sp, #0x14]
+ mov r6, #0x0
+ cmp r0, #0x0
+ ble _0200BDBE
+ add r7, r4, #0x0
+_0200BD9E:
+ ldr r0, [r4, #0x8]
+ add r1, r6, #0x0
+ bl FUN_02009660
+ bl FUN_020096CC
+ ldr r2, [r5, #0x0]
+ add r1, r6, #0x0
+ bl FUN_02008DEC
+ str r0, [r7, #0xc]
+ ldr r0, [sp, #0x14]
+ add r6, r6, #0x1
+ add r7, r7, #0x4
+ cmp r6, r0
+ blt _0200BD9E
+_0200BDBE:
+ ldr r0, [sp, #0x14]
+ mov r7, #0x0
+ cmp r0, #0x0
+ ble _0200BDF6
+ add r6, r4, #0x0
+_0200BDC8:
+ ldr r0, [r4, #0x8]
+ add r1, r7, #0x0
+ bl FUN_02009660
+ str r0, [sp, #0x20]
+ bl FUN_020096CC
+ ldr r1, [r5, #0x0]
+ bl FUN_02009424
+ add r2, r0, #0x0
+ str r2, [r6, #0x24]
+ ldr r0, [r6, #0xc]
+ ldr r1, [sp, #0x20]
+ ldr r3, [r5, #0x0]
+ bl FUN_020093A8
+ str r0, [r6, #0x3c]
+ ldr r0, [sp, #0x14]
+ add r7, r7, #0x1
+ add r6, r6, #0x4
+ cmp r7, r0
+ blt _0200BDC8
+_0200BDF6:
+ ldr r0, [r4, #0x24]
+ bl FUN_02009A90
+ ldr r0, [r4, #0x28]
+ bl FUN_02009D34
+ ldr r1, [sp, #0x10]
+ ldr r0, [r5, #0x0]
+ ldr r1, [r1, #0x18]
+ bl FUN_020161A4
+ ldr r1, [r4, #0x14]
+ add r6, r0, #0x0
+ str r1, [sp, #0x0]
+ ldr r1, [r4, #0x18]
+ str r1, [sp, #0x4]
+ ldr r1, [r4, #0x1c]
+ str r1, [sp, #0x8]
+ ldr r1, [r4, #0x20]
+ str r1, [sp, #0xc]
+ ldr r1, [r5, #0x0]
+ ldr r2, [r4, #0xc]
+ ldr r3, [r4, #0x10]
+ bl FUN_02008BE0
+ str r0, [r4, #0x4]
+ add r0, r6, #0x0
+ bl FUN_02016A18
+ mov r0, #0x1
+ add sp, #0x24
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200BE38
+FUN_0200BE38: ; 0x0200BE38
+ push {r4, lr}
+ sub sp, #0x28
+ mov r3, #0x4
+ mov r4, #0x6
+ ldrsh r3, [r2, r3]
+ ldrsh r4, [r2, r4]
+ str r4, [sp, #0x0]
+ str r3, [sp, #0x4]
+ ldrh r4, [r2, #0xa]
+ str r4, [sp, #0x8]
+ ldr r4, [r2, #0xc]
+ str r4, [sp, #0xc]
+ ldr r4, [r2, #0x10]
+ str r4, [sp, #0x10]
+ ldr r4, [r2, #0x14]
+ str r4, [sp, #0x14]
+ ldr r4, [r2, #0x18]
+ str r4, [sp, #0x18]
+ ldr r4, [r2, #0x1c]
+ str r4, [sp, #0x1c]
+ ldr r4, [r2, #0x20]
+ str r4, [sp, #0x20]
+ ldr r4, [r2, #0x24]
+ str r4, [sp, #0x24]
+ ldr r2, [r2, #0x0]
+ bl FUN_0200BE74
+ add sp, #0x28
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200BE74
+FUN_0200BE74: ; 0x0200BE74
+ push {r4, lr}
+ sub sp, #0x30
+ add r4, r0, #0x0
+ ldr r0, [r1, #0x0]
+ str r0, [sp, #0x0]
+ ldr r0, [r1, #0x4]
+ ldr r1, [r0, #0x0]
+ mov r0, #0x24
+ mul r0, r2
+ add r0, r1, r0
+ str r0, [sp, #0x4]
+ cmp r3, #0x0
+ ble _0200BEA0
+ lsl r0, r3, #0xc
+ blx FUN_020EB534
+ add r1, r0, #0x0
+ mov r0, #0x3f
+ lsl r0, r0, #0x18
+ blx FUN_020EA980
+ b _0200BEAE
+_0200BEA0:
+ lsl r0, r3, #0xc
+ blx FUN_020EB534
+ mov r1, #0x3f
+ lsl r1, r1, #0x18
+ blx FUN_020EB7B0
+_0200BEAE:
+ blx FUN_020EB4C0
+ str r0, [sp, #0x8]
+ add r1, sp, #0x28
+ mov r0, #0x10
+ ldrsh r0, [r1, r0]
+ cmp r0, #0x0
+ ble _0200BED0
+ lsl r0, r0, #0xc
+ blx FUN_020EB534
+ add r1, r0, #0x0
+ mov r0, #0x3f
+ lsl r0, r0, #0x18
+ blx FUN_020EA980
+ b _0200BEDE
+_0200BED0:
+ lsl r0, r0, #0xc
+ blx FUN_020EB534
+ mov r1, #0x3f
+ lsl r1, r1, #0x18
+ blx FUN_020EB7B0
+_0200BEDE:
+ blx FUN_020EB4C0
+ str r0, [sp, #0xc]
+ add r1, sp, #0x28
+ mov r0, #0x14
+ ldrsh r0, [r1, r0]
+ cmp r0, #0x0
+ ble _0200BF00
+ lsl r0, r0, #0xc
+ blx FUN_020EB534
+ add r1, r0, #0x0
+ mov r0, #0x3f
+ lsl r0, r0, #0x18
+ blx FUN_020EA980
+ b _0200BF0E
+_0200BF00:
+ lsl r0, r0, #0xc
+ blx FUN_020EB534
+ mov r1, #0x3f
+ lsl r1, r1, #0x18
+ blx FUN_020EB7B0
+_0200BF0E:
+ blx FUN_020EB4C0
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x4c]
+ cmp r0, #0x2
+ bne _0200BF24
+ mov r0, #0x3
+ ldr r1, [sp, #0xc]
+ lsl r0, r0, #0x12
+ add r0, r1, r0
+ str r0, [sp, #0xc]
+_0200BF24:
+ mov r0, #0x1
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x14]
+ str r0, [sp, #0x18]
+ str r0, [sp, #0x1c]
+ mov r1, #0x0
+ add r0, sp, #0x0
+ strh r1, [r0, #0x20]
+ ldr r0, [sp, #0x44]
+ str r0, [sp, #0x24]
+ ldr r0, [sp, #0x4c]
+ str r0, [sp, #0x28]
+ ldr r0, [r4, #0x0]
+ str r0, [sp, #0x2c]
+ add r0, sp, #0x0
+ bl FUN_0201FE94
+ add r4, r0, #0x0
+ beq _0200BF5A
+ add r1, sp, #0x28
+ ldrh r1, [r1, #0x18]
+ bl FUN_02020130
+ ldr r1, [sp, #0x48]
+ add r0, r4, #0x0
+ bl FUN_02020248
+_0200BF5A:
+ add r0, r4, #0x0
+ add sp, #0x30
+ pop {r4, pc}
+
+ thumb_func_start FUN_0200BF60
+FUN_0200BF60: ; 0x0200BF60
+ push {r4-r7, lr}
+ sub sp, #0xc
+ str r0, [sp, #0x0]
+ mov r0, #0x6
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x0]
+ add r5, r1, #0x0
+ add r6, r2, #0x0
+ cmp r0, #0x0
+ beq _0200BF78
+ cmp r5, #0x0
+ bne _0200BF7E
+_0200BF78:
+ add sp, #0xc
+ mov r0, #0x0
+ pop {r4-r7, pc}
+_0200BF7E:
+ ldr r0, [r6, #0x10]
+ cmp r0, #0x0
+ beq _0200BF8A
+ ldr r0, [r6, #0x14]
+ cmp r0, #0x0
+ bne _0200BF8E
+_0200BF8A:
+ mov r0, #0x4
+ str r0, [sp, #0x4]
+_0200BF8E:
+ ldr r0, [sp, #0x4]
+ str r0, [r5, #0x54]
+ mov r0, #0x0
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ ble _0200BFBE
+ add r7, r6, #0x0
+ add r4, r5, #0x0
+_0200BFA0:
+ ldr r2, [sp, #0x0]
+ ldr r0, [r7, #0x0]
+ ldr r1, [sp, #0x8]
+ ldr r2, [r2, #0x0]
+ bl FUN_02008DEC
+ str r0, [r4, #0xc]
+ ldr r0, [sp, #0x8]
+ add r7, r7, #0x4
+ add r1, r0, #0x1
+ ldr r0, [sp, #0x4]
+ add r4, r4, #0x4
+ str r1, [sp, #0x8]
+ cmp r1, r0
+ blt _0200BFA0
+_0200BFBE:
+ ldr r0, [sp, #0x4]
+ mov r7, #0x0
+ cmp r0, #0x0
+ ble _0200C004
+ add r4, r7, #0x0
+_0200BFC8:
+ ldr r0, [r6, #0x0]
+ cmp r0, #0x0
+ beq _0200BFF8
+ ldr r1, [sp, #0x0]
+ ldr r1, [r1, #0x0]
+ bl FUN_02009424
+ str r0, [r5, #0x24]
+ mov r0, #0x0
+ str r0, [r5, #0x3c]
+ ldr r3, [r5, #0x24]
+ add r1, r0, #0x0
+ ldr r0, [r3, #0x4]
+ cmp r0, #0x0
+ ble _0200BFF8
+ add r2, r1, #0x0
+_0200BFE8:
+ ldr r0, [r3, #0x0]
+ add r1, r1, #0x1
+ str r4, [r0, r2]
+ ldr r3, [r5, #0x24]
+ add r2, r2, #0x4
+ ldr r0, [r3, #0x4]
+ cmp r1, r0
+ blt _0200BFE8
+_0200BFF8:
+ ldr r0, [sp, #0x4]
+ add r7, r7, #0x1
+ add r6, r6, #0x4
+ add r5, r5, #0x4
+ cmp r7, r0
+ blt _0200BFC8
+_0200C004:
+ mov r0, #0x1
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200C00C
+FUN_0200C00C: ; 0x0200C00C
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ ldr r0, [r4, #0xc]
+ ldr r1, [sp, #0x28]
+ add r6, r2, #0x0
+ add r7, r3, #0x0
+ bl FUN_0200945C
+ cmp r0, #0x0
+ bne _0200C02A
+ add sp, #0xc
+ mov r0, #0x0
+ pop {r4-r7, pc}
+_0200C02A:
+ ldr r0, [sp, #0x28]
+ ldr r3, [sp, #0x20]
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x24]
+ add r1, r6, #0x0
+ str r0, [sp, #0x4]
+ ldr r0, [r5, #0x0]
+ add r2, r7, #0x0
+ str r0, [sp, #0x8]
+ ldr r0, [r4, #0xc]
+ bl FUN_02008F34
+ add r5, r0, #0x0
+ beq _0200C058
+ bl FUN_02009B04
+ ldr r0, [r4, #0x24]
+ add r1, r5, #0x0
+ bl FUN_0200C474
+ add sp, #0xc
+ mov r0, #0x1
+ pop {r4-r7, pc}
+_0200C058:
+ bl ErrorHandling
+ cmp r5, #0x0
+ beq _0200C066
+ add sp, #0xc
+ mov r0, #0x1
+ pop {r4-r7, pc}
+_0200C066:
+ mov r0, #0x0
+ add sp, #0xc
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_0200C06C
+FUN_0200C06C: ; 0x0200C06C
+ push {r3-r7, lr}
+ sub sp, #0x10
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x10]
+ ldr r1, [sp, #0x34]
+ add r6, r2, #0x0
+ add r7, r3, #0x0
+ bl FUN_0200945C
+ cmp r0, #0x0
+ bne _0200C08C
+ mov r0, #0x0
+ add sp, #0x10
+ mvn r0, r0
+ pop {r3-r7, pc}
+_0200C08C:
+ ldr r0, [sp, #0x34]
+ ldr r3, [sp, #0x28]
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x30]
+ add r1, r6, #0x0
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x2c]
+ add r2, r7, #0x0
+ str r0, [sp, #0x8]
+ ldr r0, [r5, #0x0]
+ str r0, [sp, #0xc]
+ ldr r0, [r4, #0x10]
+ bl FUN_02008FEC
+ add r5, r0, #0x0
+ beq _0200C0D0
+ bl FUN_02009D68
+ cmp r0, #0x1
+ beq _0200C0B8
+ bl ErrorHandling
+_0200C0B8:
+ ldr r0, [r4, #0x28]
+ add r1, r5, #0x0
+ bl FUN_0200C474
+ ldr r1, [sp, #0x30]
+ add r0, r5, #0x0
+ bl FUN_02009E88
+ lsl r0, r0, #0x18
+ add sp, #0x10
+ asr r0, r0, #0x18
+ pop {r3-r7, pc}
+_0200C0D0:
+ bl ErrorHandling
+ mov r0, #0x0
+ mvn r0, r0
+ add sp, #0x10
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0200C0DC
+FUN_0200C0DC: ; 0x0200C0DC
+ push {r4-r6, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ ldr r0, [sp, #0x28]
+ add r6, r1, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x2c]
+ add r1, r3, #0x0
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x30]
+ ldr r3, [sp, #0x24]
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x34]
+ str r0, [sp, #0xc]
+ add r0, r2, #0x0
+ ldr r2, [sp, #0x20]
+ bl FUN_0200C06C
+ add r4, r0, #0x0
+ mov r0, #0x0
+ mvn r0, r0
+ cmp r4, r0
+ beq _0200C11A
+ ldr r3, [sp, #0x2c]
+ lsl r2, r4, #0x14
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ lsr r2, r2, #0x10
+ lsl r3, r3, #0x5
+ bl FUN_02003108
+_0200C11A:
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ add sp, #0x10
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200C124
+FUN_0200C124: ; 0x0200C124
+ push {r3-r4, lr}
+ sub sp, #0xc
+ ldr r4, [sp, #0x18]
+ str r4, [sp, #0x0]
+ mov r4, #0x2
+ str r4, [sp, #0x4]
+ ldr r4, [sp, #0x1c]
+ str r4, [sp, #0x8]
+ bl FUN_0200C404
+ add sp, #0xc
+ pop {r3-r4, pc}
+
+ thumb_func_start FUN_0200C13C
+FUN_0200C13C: ; 0x0200C13C
+ push {r3-r4, lr}
+ sub sp, #0xc
+ ldr r4, [sp, #0x18]
+ str r4, [sp, #0x0]
+ mov r4, #0x3
+ str r4, [sp, #0x4]
+ ldr r4, [sp, #0x1c]
+ str r4, [sp, #0x8]
+ bl FUN_0200C404
+ add sp, #0xc
+ pop {r3-r4, pc}
+
+ thumb_func_start FUN_0200C154
+FUN_0200C154: ; 0x0200C154
+ push {r4-r7, lr}
+ sub sp, #0x74
+ add r7, r0, #0x0
+ ldr r0, [r7, #0x0]
+ add r6, r1, #0x0
+ mov r1, #0x10
+ add r5, r2, #0x0
+ bl FUN_02016998
+ add r4, r0, #0x0
+ bne _0200C170
+ add sp, #0x74
+ mov r0, #0x0
+ pop {r4-r7, pc}
+_0200C170:
+ ldr r0, [r7, #0x0]
+ mov r1, #0x8
+ bl FUN_02016998
+ str r0, [r4, #0x8]
+ cmp r0, #0x0
+ bne _0200C184
+ add sp, #0x74
+ mov r0, #0x0
+ pop {r4-r7, pc}
+_0200C184:
+ ldr r0, [r7, #0x0]
+ mov r1, #0x24
+ bl FUN_02016998
+ ldr r1, [r4, #0x8]
+ str r0, [r1, #0x0]
+ ldr r0, [r4, #0x8]
+ ldr r0, [r0, #0x0]
+ str r0, [r4, #0x4]
+ ldr r0, [r4, #0x8]
+ ldr r1, [r0, #0x0]
+ cmp r1, #0x0
+ bne _0200C1AC
+ cmp r0, #0x0
+ beq _0200C1A6
+ bl FUN_02016A18
+_0200C1A6:
+ add sp, #0x74
+ mov r0, #0x0
+ pop {r4-r7, pc}
+_0200C1AC:
+ mov r1, #0x0
+ add r2, r5, #0x0
+ add r3, sp, #0x2c
+_0200C1B2:
+ ldr r0, [r2, #0x14]
+ add r1, r1, #0x1
+ add r2, r2, #0x4
+ stmia r3!, {r0}
+ cmp r1, #0x6
+ blt _0200C1B2
+ ldr r0, [r6, #0x1c]
+ cmp r0, #0x0
+ beq _0200C1CA
+ ldr r1, [r6, #0x20]
+ cmp r1, #0x0
+ bne _0200C1D4
+_0200C1CA:
+ mov r0, #0x0
+ mvn r0, r0
+ str r0, [sp, #0x3c]
+ str r0, [sp, #0x40]
+ b _0200C206
+_0200C1D4:
+ mov r2, #0x0
+ ldr r1, [sp, #0x3c]
+ mvn r2, r2
+ cmp r1, r2
+ beq _0200C1EC
+ bl FUN_0200945C
+ cmp r0, #0x0
+ bne _0200C1EC
+ mov r0, #0x0
+ mvn r0, r0
+ str r0, [sp, #0x3c]
+_0200C1EC:
+ mov r0, #0x0
+ ldr r1, [sp, #0x40]
+ mvn r0, r0
+ cmp r1, r0
+ beq _0200C206
+ ldr r0, [r6, #0x20]
+ bl FUN_0200945C
+ cmp r0, #0x0
+ bne _0200C206
+ mov r0, #0x0
+ mvn r0, r0
+ str r0, [sp, #0x40]
+_0200C206:
+ ldr r0, [sp, #0x38]
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x3c]
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x40]
+ str r0, [sp, #0x8]
+ ldr r0, [r5, #0x30]
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x2c]
+ str r0, [sp, #0x10]
+ ldr r0, [r6, #0xc]
+ str r0, [sp, #0x14]
+ ldr r0, [r6, #0x10]
+ str r0, [sp, #0x18]
+ ldr r0, [r6, #0x14]
+ str r0, [sp, #0x1c]
+ ldr r0, [r6, #0x18]
+ str r0, [sp, #0x20]
+ ldr r0, [r6, #0x1c]
+ str r0, [sp, #0x24]
+ ldr r0, [r6, #0x20]
+ str r0, [sp, #0x28]
+ ldr r0, [r4, #0x4]
+ ldr r1, [sp, #0x2c]
+ ldr r2, [sp, #0x30]
+ ldr r3, [sp, #0x34]
+ bl FUN_02008AA4
+ ldr r0, [r6, #0x0]
+ str r0, [sp, #0x44]
+ ldr r0, [r4, #0x4]
+ str r0, [sp, #0x48]
+ mov r0, #0x0
+ ldrsh r0, [r5, r0]
+ cmp r0, #0x0
+ ble _0200C260
+ lsl r0, r0, #0xc
+ blx FUN_020EB534
+ add r1, r0, #0x0
+ mov r0, #0x3f
+ lsl r0, r0, #0x18
+ blx FUN_020EA980
+ b _0200C26E
+_0200C260:
+ lsl r0, r0, #0xc
+ blx FUN_020EB534
+ mov r1, #0x3f
+ lsl r1, r1, #0x18
+ blx FUN_020EB7B0
+_0200C26E:
+ blx FUN_020EB4C0
+ str r0, [sp, #0x4c]
+ mov r0, #0x2
+ ldrsh r0, [r5, r0]
+ cmp r0, #0x0
+ ble _0200C28E
+ lsl r0, r0, #0xc
+ blx FUN_020EB534
+ add r1, r0, #0x0
+ mov r0, #0x3f
+ lsl r0, r0, #0x18
+ blx FUN_020EA980
+ b _0200C29C
+_0200C28E:
+ lsl r0, r0, #0xc
+ blx FUN_020EB534
+ mov r1, #0x3f
+ lsl r1, r1, #0x18
+ blx FUN_020EB7B0
+_0200C29C:
+ blx FUN_020EB4C0
+ str r0, [sp, #0x50]
+ mov r0, #0x4
+ ldrsh r0, [r5, r0]
+ cmp r0, #0x0
+ ble _0200C2BC
+ lsl r0, r0, #0xc
+ blx FUN_020EB534
+ add r1, r0, #0x0
+ mov r0, #0x3f
+ lsl r0, r0, #0x18
+ blx FUN_020EA980
+ b _0200C2CA
+_0200C2BC:
+ lsl r0, r0, #0xc
+ blx FUN_020EB534
+ mov r1, #0x3f
+ lsl r1, r1, #0x18
+ blx FUN_020EB7B0
+_0200C2CA:
+ blx FUN_020EB4C0
+ str r0, [sp, #0x54]
+ ldr r0, [r5, #0x10]
+ cmp r0, #0x2
+ bne _0200C2E0
+ mov r0, #0x3
+ ldr r1, [sp, #0x50]
+ lsl r0, r0, #0x12
+ add r0, r1, r0
+ str r0, [sp, #0x50]
+_0200C2E0:
+ mov r0, #0x1
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x58]
+ str r0, [sp, #0x5c]
+ str r0, [sp, #0x60]
+ mov r1, #0x0
+ add r0, sp, #0x2c
+ strh r1, [r0, #0x38]
+ ldr r0, [r5, #0x8]
+ str r0, [sp, #0x68]
+ ldr r0, [r5, #0x10]
+ str r0, [sp, #0x6c]
+ ldr r0, [r7, #0x0]
+ str r0, [sp, #0x70]
+ add r0, sp, #0x44
+ bl FUN_0201FE94
+ str r0, [r4, #0x0]
+ ldr r0, [r5, #0x30]
+ str r0, [r4, #0xc]
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ beq _0200C328
+ bl FUN_020202A0
+ add r6, r0, #0x0
+ ldrh r1, [r5, #0x6]
+ ldr r0, [r4, #0x0]
+ bl FUN_02020130
+ ldr r1, [r5, #0xc]
+ ldr r0, [r4, #0x0]
+ add r1, r6, r1
+ bl FUN_02020248
+ b _0200C32C
+_0200C328:
+ bl ErrorHandling
+_0200C32C:
+ add r0, r4, #0x0
+ add sp, #0x74
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200C334
+FUN_0200C334: ; 0x0200C334
+ push {r3, lr}
+ ldr r0, [r0, #0x10]
+ bl FUN_020094F0
+ mov r1, #0x0
+ bl FUN_02009E54
+ pop {r3, pc}
+
+ thumb_func_start FUN_0200C344
+FUN_0200C344: ; 0x0200C344
+ push {r4, lr}
+ ldr r0, [r0, #0x10]
+ add r4, r2, #0x0
+ bl FUN_020094F0
+ add r1, r4, #0x0
+ bl FUN_02009E88
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200C358
+FUN_0200C358: ; 0x0200C358
+ add r3, r0, #0x0
+ add r2, r1, #0x0
+ ldr r0, [r3, #0xc]
+ ldr r1, [r3, #0x24]
+ ldr r3, _0200C364 ; =FUN_0200C4F4
+ bx r3
+ .balign 4
+_0200C364: .word FUN_0200C4F4
+
+ thumb_func_start FUN_0200C368
+FUN_0200C368: ; 0x0200C368
+ add r3, r0, #0x0
+ add r2, r1, #0x0
+ ldr r0, [r3, #0x10]
+ ldr r1, [r3, #0x28]
+ ldr r3, _0200C374 ; =FUN_0200C548
+ bx r3
+ .balign 4
+_0200C374: .word FUN_0200C548
+
+ thumb_func_start FUN_0200C378
+FUN_0200C378: ; 0x0200C378
+ add r3, r0, #0x0
+ add r2, r1, #0x0
+ ldr r0, [r3, #0x14]
+ ldr r1, [r3, #0x2c]
+ ldr r3, _0200C384 ; =FUN_0200C4A8
+ bx r3
+ .balign 4
+_0200C384: .word FUN_0200C4A8
+
+ thumb_func_start FUN_0200C388
+FUN_0200C388: ; 0x0200C388
+ add r3, r0, #0x0
+ add r2, r1, #0x0
+ ldr r0, [r3, #0x18]
+ ldr r1, [r3, #0x30]
+ ldr r3, _0200C394 ; =FUN_0200C4A8
+ bx r3
+ .balign 4
+_0200C394: .word FUN_0200C4A8
+
+ thumb_func_start FUN_0200C398
+FUN_0200C398: ; 0x0200C398
+ push {r3-r7, lr}
+ add r6, r1, #0x0
+ add r7, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_0200BC40
+ ldr r0, [r6, #0x24]
+ bl FUN_02009C30
+ ldr r0, [r6, #0x28]
+ bl FUN_02009E28
+ ldr r0, [r6, #0x54]
+ mov r4, #0x0
+ cmp r0, #0x0
+ ble _0200C3D0
+ add r5, r6, #0x0
+_0200C3BA:
+ ldr r0, [r5, #0x24]
+ bl FUN_02009448
+ ldr r0, [r5, #0xc]
+ bl FUN_02008E2C
+ ldr r0, [r6, #0x54]
+ add r4, r4, #0x1
+ add r5, r5, #0x4
+ cmp r4, r0
+ blt _0200C3BA
+_0200C3D0:
+ add r0, r7, #0x0
+ add r1, r6, #0x0
+ bl FUN_0200BCD0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200C3DC
+FUN_0200C3DC: ; 0x0200C3DC
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0xc]
+ cmp r0, #0x0
+ beq _0200C3EE
+ ldr r0, [r4, #0x4]
+ ldr r0, [r0, #0x0]
+ bl FUN_02009CDC
+_0200C3EE:
+ ldr r0, [r4, #0x0]
+ bl FUN_0201FFC8
+ ldr r0, [r4, #0x8]
+ bl FUN_02008C80
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200C404
+FUN_0200C404: ; 0x0200C404
+ push {r4-r7, lr}
+ sub sp, #0x14
+ add r6, r1, #0x0
+ add r7, r0, #0x0
+ ldr r0, [sp, #0x2c]
+ add r5, r6, #0x0
+ lsl r4, r0, #0x2
+ add r5, #0xc
+ ldr r0, [r5, r4]
+ ldr r1, [sp, #0x30]
+ str r2, [sp, #0xc]
+ str r3, [sp, #0x10]
+ bl FUN_0200945C
+ cmp r0, #0x0
+ bne _0200C42A
+ add sp, #0x14
+ mov r0, #0x0
+ pop {r4-r7, pc}
+_0200C42A:
+ ldr r0, [sp, #0x30]
+ ldr r1, [sp, #0xc]
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x2c]
+ ldr r2, [sp, #0x10]
+ str r0, [sp, #0x4]
+ ldr r0, [r7, #0x0]
+ ldr r3, [sp, #0x28]
+ str r0, [sp, #0x8]
+ ldr r0, [r5, r4]
+ bl FUN_020090AC
+ add r5, r0, #0x0
+ beq _0200C460
+ add r0, r6, r4
+ ldr r0, [r0, #0x24]
+ add r1, r5, #0x0
+ bl FUN_0200C474
+ add r4, r0, #0x0
+ cmp r4, #0x1
+ beq _0200C45A
+ bl ErrorHandling
+_0200C45A:
+ add sp, #0x14
+ add r0, r4, #0x0
+ pop {r4-r7, pc}
+_0200C460:
+ bl ErrorHandling
+ cmp r5, #0x0
+ beq _0200C46E
+ add sp, #0x14
+ mov r0, #0x1
+ pop {r4-r7, pc}
+_0200C46E:
+ mov r0, #0x0
+ add sp, #0x14
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_0200C474
+FUN_0200C474: ; 0x0200C474
+ push {r3-r6}
+ ldr r6, [r0, #0x4]
+ mov r3, #0x0
+ cmp r6, #0x0
+ ble _0200C4A0
+ ldr r5, [r0, #0x0]
+ add r4, r5, #0x0
+_0200C482:
+ ldr r2, [r4, #0x0]
+ cmp r2, #0x0
+ bne _0200C498
+ lsl r2, r3, #0x2
+ str r1, [r5, r2]
+ ldr r1, [r0, #0x8]
+ add r1, r1, #0x1
+ str r1, [r0, #0x8]
+ mov r0, #0x1
+ pop {r3-r6}
+ bx lr
+_0200C498:
+ add r3, r3, #0x1
+ add r4, r4, #0x4
+ cmp r3, r6
+ blt _0200C482
+_0200C4A0:
+ mov r0, #0x0
+ pop {r3-r6}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0200C4A8
+FUN_0200C4A8: ; 0x0200C4A8
+ push {r3-r7, lr}
+ add r5, r1, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [r5, #0x4]
+ add r7, r2, #0x0
+ mov r6, #0x0
+ cmp r0, #0x0
+ ble _0200C4F0
+ add r4, r6, #0x0
+_0200C4BA:
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, r4]
+ cmp r0, #0x0
+ beq _0200C4E6
+ bl FUN_02009530
+ cmp r0, r7
+ bne _0200C4E6
+ ldr r1, [r5, #0x0]
+ lsl r4, r6, #0x2
+ ldr r0, [sp, #0x0]
+ ldr r1, [r1, r4]
+ bl FUN_02009490
+ ldr r0, [r5, #0x0]
+ mov r1, #0x0
+ str r1, [r0, r4]
+ ldr r0, [r5, #0x8]
+ sub r0, r0, #0x1
+ str r0, [r5, #0x8]
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0200C4E6:
+ ldr r0, [r5, #0x4]
+ add r6, r6, #0x1
+ add r4, r4, #0x4
+ cmp r6, r0
+ blt _0200C4BA
+_0200C4F0:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0200C4F4
+FUN_0200C4F4: ; 0x0200C4F4
+ push {r3-r7, lr}
+ add r5, r1, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [r5, #0x4]
+ add r7, r2, #0x0
+ mov r6, #0x0
+ cmp r0, #0x0
+ ble _0200C542
+ add r4, r6, #0x0
+_0200C506:
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, r4]
+ cmp r0, #0x0
+ beq _0200C538
+ bl FUN_02009530
+ cmp r0, r7
+ bne _0200C538
+ add r0, r7, #0x0
+ bl FUN_0201D324
+ ldr r1, [r5, #0x0]
+ lsl r4, r6, #0x2
+ ldr r0, [sp, #0x0]
+ ldr r1, [r1, r4]
+ bl FUN_02009490
+ ldr r0, [r5, #0x0]
+ mov r1, #0x0
+ str r1, [r0, r4]
+ ldr r0, [r5, #0x8]
+ sub r0, r0, #0x1
+ str r0, [r5, #0x8]
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0200C538:
+ ldr r0, [r5, #0x4]
+ add r6, r6, #0x1
+ add r4, r4, #0x4
+ cmp r6, r0
+ blt _0200C506
+_0200C542:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200C548
+FUN_0200C548: ; 0x0200C548
+ push {r3-r7, lr}
+ add r5, r1, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [r5, #0x4]
+ add r7, r2, #0x0
+ mov r6, #0x0
+ cmp r0, #0x0
+ ble _0200C596
+ add r4, r6, #0x0
+_0200C55A:
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, r4]
+ cmp r0, #0x0
+ beq _0200C58C
+ bl FUN_02009530
+ cmp r0, r7
+ bne _0200C58C
+ add r0, r7, #0x0
+ bl FUN_0201E1C8
+ ldr r1, [r5, #0x0]
+ lsl r4, r6, #0x2
+ ldr r0, [sp, #0x0]
+ ldr r1, [r1, r4]
+ bl FUN_02009490
+ ldr r0, [r5, #0x0]
+ mov r1, #0x0
+ str r1, [r0, r4]
+ ldr r0, [r5, #0x8]
+ sub r0, r0, #0x1
+ str r0, [r5, #0x8]
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0200C58C:
+ ldr r0, [r5, #0x4]
+ add r6, r6, #0x1
+ add r4, r4, #0x4
+ cmp r6, r0
+ blt _0200C55A
+_0200C596:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200C59C
+FUN_0200C59C: ; 0x0200C59C
+ ldr r3, _0200C5A4 ; =FUN_020201E4
+ mov r1, #0x1
+ lsl r1, r1, #0xc
+ bx r3
+ .balign 4
+_0200C5A4: .word FUN_020201E4
+
+ thumb_func_start FUN_0200C5A8
+FUN_0200C5A8: ; 0x0200C5A8
+ ldr r3, _0200C5B0 ; =0x0200C59D
+ ldr r0, [r0, #0x0]
+ bx r3
+ nop
+_0200C5B0: .word 0x0200C59D
+
+ thumb_func_start FUN_0200C5B4
+FUN_0200C5B4: ; 0x0200C5B4
+ ldr r3, _0200C5BC ; =FUN_020201E4
+ ldr r0, [r0, #0x0]
+ bx r3
+ nop
+_0200C5BC: .word FUN_020201E4
+
+ thumb_func_start FUN_0200C5C0
+FUN_0200C5C0: ; 0x0200C5C0
+ ldr r3, _0200C5C8 ; =FUN_02020130
+ ldr r0, [r0, #0x0]
+ bx r3
+ nop
+_0200C5C8: .word FUN_02020130
+
+ thumb_func_start FUN_0200C5CC
+FUN_0200C5CC: ; 0x0200C5CC
+ ldr r3, _0200C5D4 ; =FUN_020201DC
+ ldr r0, [r0, #0x0]
+ bx r3
+ nop
+_0200C5D4: .word FUN_020201DC
+
+ thumb_func_start FUN_0200C5D8
+FUN_0200C5D8: ; 0x0200C5D8
+ ldr r3, _0200C5DC ; =FUN_020200BC
+ bx r3
+ .balign 4
+_0200C5DC: .word FUN_020200BC
+
+ thumb_func_start FUN_0200C5E0
+FUN_0200C5E0: ; 0x0200C5E0
+ ldr r3, _0200C5E8 ; =FUN_0200C5D8
+ ldr r0, [r0, #0x0]
+ bx r3
+ nop
+_0200C5E8: .word FUN_0200C5D8
+
+ thumb_func_start FUN_0200C5EC
+FUN_0200C5EC: ; 0x0200C5EC
+ ldr r3, _0200C5F0 ; =FUN_020200D8
+ bx r3
+ .balign 4
+_0200C5F0: .word FUN_020200D8
+
+ thumb_func_start FUN_0200C5F4
+FUN_0200C5F4: ; 0x0200C5F4
+ ldr r3, _0200C5FC ; =FUN_0200C5EC
+ ldr r0, [r0, #0x0]
+ bx r3
+ nop
+_0200C5FC: .word FUN_0200C5EC
+
+ thumb_func_start FUN_0200C600
+FUN_0200C600: ; 0x0200C600
+ ldr r3, _0200C604 ; =FUN_02020388
+ bx r3
+ .balign 4
+_0200C604: .word FUN_02020388
+
+ thumb_func_start FUN_0200C608
+FUN_0200C608: ; 0x0200C608
+ ldr r3, _0200C610 ; =FUN_0200C600
+ ldr r0, [r0, #0x0]
+ bx r3
+ nop
+_0200C610: .word FUN_0200C600
+
+ thumb_func_start FUN_0200C614
+FUN_0200C614: ; 0x0200C614
+ ldr r3, _0200C618 ; =FUN_02020208
+ bx r3
+ .balign 4
+_0200C618: .word FUN_02020208
+
+ thumb_func_start FUN_0200C61C
+FUN_0200C61C: ; 0x0200C61C
+ ldr r3, _0200C624 ; =0x0200C615
+ ldr r0, [r0, #0x0]
+ bx r3
+ nop
+_0200C624: .word 0x0200C615
+
+ thumb_func_start FUN_0200C628
+FUN_0200C628: ; 0x0200C628
+ ldr r3, _0200C62C ; =FUN_0202022C
+ bx r3
+ .balign 4
+_0200C62C: .word FUN_0202022C
+
+ thumb_func_start FUN_0200C630
+FUN_0200C630: ; 0x0200C630
+ ldr r3, _0200C638 ; =FUN_0200C628
+ ldr r0, [r0, #0x0]
+ bx r3
+ nop
+_0200C638: .word FUN_0200C628
+
+ thumb_func_start FUN_0200C63C
+FUN_0200C63C: ; 0x0200C63C
+ ldr r3, _0200C640 ; =FUN_020200A0
+ bx r3
+ .balign 4
+_0200C640: .word FUN_020200A0
+
+ thumb_func_start FUN_0200C644
+FUN_0200C644: ; 0x0200C644
+ ldr r3, _0200C64C ; =FUN_0200C63C
+ ldr r0, [r0, #0x0]
+ bx r3
+ nop
+_0200C64C: .word FUN_0200C63C
+
+ thumb_func_start FUN_0200C650
+FUN_0200C650: ; 0x0200C650
+ ldr r3, _0200C654 ; =FUN_02020128
+ bx r3
+ .balign 4
+_0200C654: .word FUN_02020128
+
+ thumb_func_start FUN_0200C658
+FUN_0200C658: ; 0x0200C658
+ ldr r3, _0200C660 ; =FUN_0200C650
+ ldr r0, [r0, #0x0]
+ bx r3
+ nop
+_0200C660: .word FUN_0200C650
+
+ thumb_func_start FUN_0200C664
+FUN_0200C664: ; 0x0200C664
+ ldr r3, _0200C668 ; =FUN_02020248
+ bx r3
+ .balign 4
+_0200C668: .word FUN_02020248
+
+ thumb_func_start FUN_0200C66C
+FUN_0200C66C: ; 0x0200C66C
+ ldr r3, _0200C674 ; =FUN_0200C664
+ ldr r0, [r0, #0x0]
+ bx r3
+ nop
+_0200C674: .word FUN_0200C664
+
+ thumb_func_start FUN_0200C678
+FUN_0200C678: ; 0x0200C678
+ ldr r3, _0200C67C ; =FUN_020202A8
+ bx r3
+ .balign 4
+_0200C67C: .word FUN_020202A8
+
+ thumb_func_start FUN_0200C680
+FUN_0200C680: ; 0x0200C680
+ ldr r3, _0200C688 ; =FUN_0200C678
+ ldr r0, [r0, #0x0]
+ bx r3
+ nop
+_0200C688: .word FUN_0200C678
+
+ thumb_func_start FUN_0200C68C
+FUN_0200C68C: ; 0x0200C68C
+ ldr r3, _0200C694 ; =FUN_02020300
+ ldr r0, [r0, #0x0]
+ bx r3
+ nop
+_0200C694: .word FUN_02020300
+
+ thumb_func_start FUN_0200C698
+FUN_0200C698: ; 0x0200C698
+ ldr r3, _0200C6A0 ; =FUN_02020238
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bx r3
+ .balign 4
+_0200C6A0: .word FUN_02020238
+
+ thumb_func_start FUN_0200C6A4
+FUN_0200C6A4: ; 0x0200C6A4
+ ldr r3, _0200C6AC ; =0x02020241
+ ldr r0, [r0, #0x0]
+ bx r3
+ nop
+_0200C6AC: .word 0x02020241
+
+ thumb_func_start FUN_0200C6B0
+FUN_0200C6B0: ; 0x0200C6B0
+ ldr r3, _0200C6B8 ; =FUN_0200C698
+ ldr r0, [r0, #0x0]
+ bx r3
+ nop
+_0200C6B8: .word FUN_0200C698
+
+ thumb_func_start FUN_0200C6BC
+FUN_0200C6BC: ; 0x0200C6BC
+ ldr r3, _0200C6C0 ; =FUN_02020310
+ bx r3
+ .balign 4
+_0200C6C0: .word FUN_02020310
+
+ thumb_func_start FUN_0200C6C4
+FUN_0200C6C4: ; 0x0200C6C4
+ ldr r3, _0200C6CC ; =FUN_0200C6BC
+ ldr r0, [r0, #0x0]
+ bx r3
+ nop
+_0200C6CC: .word FUN_0200C6BC
+
+ thumb_func_start FUN_0200C6D0
+FUN_0200C6D0: ; 0x0200C6D0
+ ldr r3, _0200C6D4 ; =FUN_0202032C
+ bx r3
+ .balign 4
+_0200C6D4: .word FUN_0202032C
+
+ thumb_func_start FUN_0200C6D8
+FUN_0200C6D8: ; 0x0200C6D8
+ ldr r3, _0200C6E0 ; =FUN_0200C6D0
+ ldr r0, [r0, #0x0]
+ bx r3
+ nop
+_0200C6E0: .word FUN_0200C6D0
+
+ thumb_func_start FUN_0200C6E4
+FUN_0200C6E4: ; 0x0200C6E4
+ push {r3-r4, lr}
+ sub sp, #0xc
+ lsl r1, r1, #0xc
+ str r1, [sp, #0x0]
+ lsl r1, r2, #0xc
+ add r4, r0, #0x0
+ str r1, [sp, #0x4]
+ bl FUN_02020380
+ cmp r0, #0x2
+ bne _0200C704
+ mov r0, #0x3
+ ldr r1, [sp, #0x4]
+ lsl r0, r0, #0x12
+ add r0, r1, r0
+ str r0, [sp, #0x4]
+_0200C704:
+ mov r0, #0x0
+ str r0, [sp, #0x8]
+ add r0, r4, #0x0
+ add r1, sp, #0x0
+ bl FUN_02020044
+ add sp, #0xc
+ pop {r3-r4, pc}
+
+ thumb_func_start FUN_0200C714
+FUN_0200C714: ; 0x0200C714
+ ldr r3, _0200C71C ; =FUN_0200C6E4
+ ldr r0, [r0, #0x0]
+ bx r3
+ nop
+_0200C71C: .word FUN_0200C6E4
+
+ thumb_func_start FUN_0200C720
+FUN_0200C720: ; 0x0200C720
+ push {r4-r5, lr}
+ sub sp, #0xc
+ lsl r1, r1, #0xc
+ str r1, [sp, #0x0]
+ lsl r1, r2, #0xc
+ add r5, r0, #0x0
+ add r4, r3, #0x0
+ str r1, [sp, #0x4]
+ bl FUN_02020380
+ cmp r0, #0x2
+ bne _0200C73E
+ ldr r0, [sp, #0x4]
+ add r0, r0, r4
+ str r0, [sp, #0x4]
+_0200C73E:
+ mov r0, #0x0
+ str r0, [sp, #0x8]
+ add r0, r5, #0x0
+ add r1, sp, #0x0
+ bl FUN_02020044
+ add sp, #0xc
+ pop {r4-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200C750
+FUN_0200C750: ; 0x0200C750
+ push {r3, lr}
+ ldr r0, [r0, #0x0]
+ bl FUN_0200C720
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200C75C
+FUN_0200C75C: ; 0x0200C75C
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ add r6, r1, #0x0
+ add r5, r2, #0x0
+ bl FUN_0202011C
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x0]
+ asr r0, r1, #0xb
+ lsr r0, r0, #0x14
+ add r0, r1, r0
+ asr r0, r0, #0xc
+ strh r0, [r6, #0x0]
+ add r0, r7, #0x0
+ bl FUN_02020380
+ cmp r0, #0x2
+ ldr r1, [r4, #0x4]
+ bne _0200C794
+ mov r0, #0x3
+ lsl r0, r0, #0x12
+ sub r1, r1, r0
+ asr r0, r1, #0xb
+ lsr r0, r0, #0x14
+ add r0, r1, r0
+ asr r0, r0, #0xc
+ strh r0, [r5, #0x0]
+ pop {r3-r7, pc}
+_0200C794:
+ asr r0, r1, #0xb
+ lsr r0, r0, #0x14
+ add r0, r1, r0
+ asr r0, r0, #0xc
+ strh r0, [r5, #0x0]
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0200C7A0
+FUN_0200C7A0: ; 0x0200C7A0
+ ldr r3, _0200C7A8 ; =FUN_0200C75C
+ ldr r0, [r0, #0x0]
+ bx r3
+ nop
+_0200C7A8: .word FUN_0200C75C
+
+ thumb_func_start FUN_0200C7AC
+FUN_0200C7AC: ; 0x0200C7AC
+ push {r3-r7, lr}
+ str r0, [sp, #0x0]
+ add r6, r1, #0x0
+ add r5, r2, #0x0
+ add r7, r3, #0x0
+ bl FUN_0202011C
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x0]
+ asr r0, r1, #0xb
+ lsr r0, r0, #0x14
+ add r0, r1, r0
+ asr r0, r0, #0xc
+ strh r0, [r6, #0x0]
+ ldr r0, [sp, #0x0]
+ bl FUN_02020380
+ cmp r0, #0x2
+ bne _0200C7E2
+ ldr r0, [r4, #0x4]
+ sub r1, r0, r7
+ asr r0, r1, #0xb
+ lsr r0, r0, #0x14
+ add r0, r1, r0
+ asr r0, r0, #0xc
+ strh r0, [r5, #0x0]
+ pop {r3-r7, pc}
+_0200C7E2:
+ ldr r1, [r4, #0x4]
+ asr r0, r1, #0xb
+ lsr r0, r0, #0x14
+ add r0, r1, r0
+ asr r0, r0, #0xc
+ strh r0, [r5, #0x0]
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0200C7F0
+FUN_0200C7F0: ; 0x0200C7F0
+ push {r3, lr}
+ ldr r0, [r0, #0x0]
+ bl FUN_0200C7AC
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200C7FC
+FUN_0200C7FC: ; 0x0200C7FC
+ push {r3-r6, lr}
+ sub sp, #0xc
+ add r6, r0, #0x0
+ add r5, r1, #0x0
+ add r4, r2, #0x0
+ bl FUN_0202011C
+ ldr r2, [r0, #0x0]
+ lsl r1, r5, #0xc
+ add r1, r2, r1
+ str r1, [sp, #0x0]
+ ldr r2, [r0, #0x4]
+ lsl r1, r4, #0xc
+ add r1, r2, r1
+ str r1, [sp, #0x4]
+ ldr r0, [r0, #0x8]
+ add r1, sp, #0x0
+ str r0, [sp, #0x8]
+ add r0, r6, #0x0
+ bl FUN_02020044
+ add sp, #0xc
+ pop {r3-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200C82C
+FUN_0200C82C: ; 0x0200C82C
+ ldr r3, _0200C834 ; =FUN_0200C7FC
+ ldr r0, [r0, #0x0]
+ bx r3
+ nop
+_0200C834: .word FUN_0200C7FC
+
+ thumb_func_start FUN_0200C838
+FUN_0200C838: ; 0x0200C838
+ ldr r3, _0200C83C ; =FUN_020200EC
+ bx r3
+ .balign 4
+_0200C83C: .word FUN_020200EC
+
+ thumb_func_start FUN_0200C840
+FUN_0200C840: ; 0x0200C840
+ ldr r3, _0200C848 ; =0x0200C839
+ ldr r0, [r0, #0x0]
+ bx r3
+ nop
+_0200C848: .word 0x0200C839
+
+ thumb_func_start FUN_0200C84C
+FUN_0200C84C: ; 0x0200C84C
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ add r7, r2, #0x0
+ bl FUN_02020120
+ add r4, r0, #0x0
+ ldr r0, _0200C880 ; =0x45800000
+ add r1, r6, #0x0
+ blx FUN_020EB5C4
+ blx FUN_020EB4C0
+ str r0, [r4, #0x0]
+ ldr r0, _0200C880 ; =0x45800000
+ add r1, r7, #0x0
+ blx FUN_020EB5C4
+ blx FUN_020EB4C0
+ str r0, [r4, #0x4]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02020064
+ pop {r3-r7, pc}
+ .balign 4
+_0200C880: .word 0x45800000
+
+ thumb_func_start FUN_0200C884
+FUN_0200C884: ; 0x0200C884
+ ldr r3, _0200C88C ; =FUN_0200C84C
+ ldr r0, [r0, #0x0]
+ bx r3
+ nop
+_0200C88C: .word FUN_0200C84C
+
+ thumb_func_start FUN_0200C890
+FUN_0200C890: ; 0x0200C890
+ ldr r3, _0200C894 ; =FUN_02020088
+ bx r3
+ .balign 4
+_0200C894: .word FUN_02020088
+
+ thumb_func_start FUN_0200C898
+FUN_0200C898: ; 0x0200C898
+ ldr r3, _0200C8A0 ; =FUN_0200C890
+ ldr r0, [r0, #0x0]
+ bx r3
+ nop
+_0200C8A0: .word FUN_0200C890
+
+ thumb_func_start FUN_0200C8A4
+FUN_0200C8A4: ; 0x0200C8A4
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ add r4, r0, #0x0
+ bl FUN_02020124
+ add r0, r0, r5
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ add r0, r4, #0x0
+ bl FUN_02020088
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0200C8BC
+FUN_0200C8BC: ; 0x0200C8BC
+ ldr r3, _0200C8C4 ; =FUN_0200C8A4
+ ldr r0, [r0, #0x0]
+ bx r3
+ nop
+_0200C8C4: .word FUN_0200C8A4
+
+ thumb_func_start FUN_0200C8C8
+FUN_0200C8C8: ; 0x0200C8C8
+ ldr r3, _0200C8CC ; =FUN_02020100
+ bx r3
+ .balign 4
+_0200C8CC: .word FUN_02020100
+
+ thumb_func_start FUN_0200C8D0
+FUN_0200C8D0: ; 0x0200C8D0
+ ldr r3, _0200C8D8 ; =FUN_0200C8C8
+ ldr r0, [r0, #0x0]
+ bx r3
+ nop
+_0200C8D8: .word FUN_0200C8C8
+
+ thumb_func_start FUN_0200C8DC
+FUN_0200C8DC: ; 0x0200C8DC
+ push {lr}
+ sub sp, #0xc
+ lsl r1, r1, #0xc
+ str r1, [sp, #0x0]
+ lsl r1, r2, #0xc
+ str r1, [sp, #0x4]
+ mov r1, #0x0
+ str r1, [sp, #0x8]
+ ldr r0, [r0, #0x0]
+ add r1, sp, #0x0
+ bl FUN_02020054
+ add sp, #0xc
+ pop {pc}
+
+ thumb_func_start FUN_0200C8F8
+FUN_0200C8F8: ; 0x0200C8F8
+ ldr r3, _0200C900 ; =0x02020359
+ ldr r0, [r0, #0x0]
+ bx r3
+ nop
+_0200C900: .word 0x02020359
+
+ thumb_func_start FUN_0200C904
+FUN_0200C904: ; 0x0200C904
+ ldr r3, _0200C908 ; =FUN_02020398
+ bx r3
+ .balign 4
+_0200C908: .word FUN_02020398
+
+ thumb_func_start FUN_0200C90C
+FUN_0200C90C: ; 0x0200C90C
+ ldr r3, _0200C914 ; =FUN_0200C904
+ ldr r0, [r0, #0x0]
+ bx r3
+ nop
+_0200C914: .word FUN_0200C904
+
+ thumb_func_start FUN_0200C918
+FUN_0200C918: ; 0x0200C918
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ ldr r0, [r4, #0xc]
+ ldr r1, [sp, #0x28]
+ add r6, r2, #0x0
+ add r7, r3, #0x0
+ bl FUN_0200945C
+ cmp r0, #0x0
+ bne _0200C936
+ add sp, #0xc
+ mov r0, #0x0
+ pop {r4-r7, pc}
+_0200C936:
+ ldr r0, [sp, #0x28]
+ ldr r3, [sp, #0x20]
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x24]
+ add r1, r6, #0x0
+ str r0, [sp, #0x4]
+ ldr r0, [r5, #0x0]
+ add r2, r7, #0x0
+ str r0, [sp, #0x8]
+ ldr r0, [r4, #0xc]
+ bl FUN_02008F34
+ add r5, r0, #0x0
+ beq _0200C964
+ bl FUN_02009AC4
+ ldr r0, [r4, #0x24]
+ add r1, r5, #0x0
+ bl FUN_0200C474
+ add sp, #0xc
+ mov r0, #0x1
+ pop {r4-r7, pc}
+_0200C964:
+ bl ErrorHandling
+ cmp r5, #0x0
+ beq _0200C972
+ add sp, #0xc
+ mov r0, #0x1
+ pop {r4-r7, pc}
+_0200C972:
+ mov r0, #0x0
+ add sp, #0xc
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_0200C978
+FUN_0200C978: ; 0x0200C978
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ ldr r0, [r4, #0xc]
+ ldr r1, [sp, #0x28]
+ add r6, r2, #0x0
+ add r7, r3, #0x0
+ bl FUN_0200945C
+ cmp r0, #0x0
+ bne _0200C996
+ add sp, #0xc
+ mov r0, #0x0
+ pop {r4-r7, pc}
+_0200C996:
+ ldr r0, [sp, #0x28]
+ ldr r3, [sp, #0x20]
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x24]
+ add r1, r6, #0x0
+ str r0, [sp, #0x4]
+ ldr r0, [r5, #0x0]
+ add r2, r7, #0x0
+ str r0, [sp, #0x8]
+ ldr r0, [r4, #0xc]
+ bl FUN_02008F34
+ add r5, r0, #0x0
+ beq _0200C9C4
+ bl FUN_02009B78
+ ldr r0, [r4, #0x24]
+ add r1, r5, #0x0
+ bl FUN_0200C474
+ add sp, #0xc
+ mov r0, #0x1
+ pop {r4-r7, pc}
+_0200C9C4:
+ bl ErrorHandling
+ cmp r5, #0x0
+ beq _0200C9D2
+ add sp, #0xc
+ mov r0, #0x1
+ pop {r4-r7, pc}
+_0200C9D2:
+ mov r0, #0x0
+ add sp, #0xc
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_0200C9D8
+FUN_0200C9D8: ; 0x0200C9D8
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ ldr r0, [r4, #0xc]
+ ldr r1, [sp, #0x24]
+ add r7, r2, #0x0
+ str r3, [sp, #0x8]
+ bl FUN_020094F0
+ add r6, r0, #0x0
+ ldr r0, [sp, #0x20]
+ ldr r3, [sp, #0x8]
+ str r0, [sp, #0x0]
+ ldr r0, [r5, #0x0]
+ add r1, r6, #0x0
+ str r0, [sp, #0x4]
+ ldr r0, [r4, #0xc]
+ add r2, r7, #0x0
+ bl FUN_020090FC
+ add r0, r6, #0x0
+ bl FUN_02009BE8
+ add sp, #0xc
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_0200CA0C
+FUN_0200CA0C: ; 0x0200CA0C
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x10]
+ ldr r1, [sp, #0x24]
+ add r7, r2, #0x0
+ str r3, [sp, #0x8]
+ bl FUN_020094F0
+ add r6, r0, #0x0
+ ldr r0, [sp, #0x20]
+ ldr r3, [sp, #0x8]
+ str r0, [sp, #0x0]
+ ldr r0, [r5, #0x0]
+ add r1, r6, #0x0
+ str r0, [sp, #0x4]
+ ldr r0, [r4, #0x10]
+ add r2, r7, #0x0
+ bl FUN_02009168
+ add r0, r6, #0x0
+ bl FUN_02009DE0
+ add sp, #0xc
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_0200CA40
+FUN_0200CA40: ; 0x0200CA40
+ ldr r0, [r0, #0x0]
+ bx lr
+
+ thumb_func_start FUN_0200CA44
+FUN_0200CA44: ; 0x0200CA44
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, _0200CA5C ; =0x021C48B8
+ add r4, r1, #0x0
+ add r3, r2, #0x0
+ ldr r0, [r0, #0x18]
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_0201B60C
+ pop {r3-r5, pc}
+ nop
+_0200CA5C: .word 0x021C48B8
+
+ thumb_func_start FUN_0200CA60
+FUN_0200CA60: ; 0x0200CA60
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, _0200CA78 ; =0x021C48B8
+ add r4, r1, #0x0
+ add r3, r2, #0x0
+ ldr r0, [r0, #0x1c]
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_0201B60C
+ pop {r3-r5, pc}
+ nop
+_0200CA78: .word 0x021C48B8
+
+ thumb_func_start FUN_0200CA7C
+FUN_0200CA7C: ; 0x0200CA7C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, _0200CA94 ; =0x021C48B8
+ add r4, r1, #0x0
+ add r3, r2, #0x0
+ ldr r0, [r0, #0x24]
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_0201B60C
+ pop {r3-r5, pc}
+ nop
+_0200CA94: .word 0x021C48B8
+
+ thumb_func_start FUN_0200CA98
+FUN_0200CA98: ; 0x0200CA98
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, _0200CAB0 ; =0x021C48B8
+ add r4, r1, #0x0
+ add r3, r2, #0x0
+ ldr r0, [r0, #0x20]
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_0201B60C
+ pop {r3-r5, pc}
+ nop
+_0200CAB0: .word 0x021C48B8
+
+ thumb_func_start FUN_0200CAB4
+FUN_0200CAB4: ; 0x0200CAB4
+ ldr r3, _0200CAB8 ; =FUN_0201B6A0
+ bx r3
+ .balign 4
+_0200CAB8: .word FUN_0201B6A0
+
+ thumb_func_start FUN_0200CABC
+FUN_0200CABC: ; 0x0200CABC
+ push {r3-r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r3, #0x0
+ str r2, [sp, #0x0]
+ bne _0200CAE2
+ mov r1, #0x0
+ str r1, [sp, #0x4]
+ ldr r0, [sp, #0x20]
+ str r1, [sp, #0x8]
+ str r0, [sp, #0xc]
+ mov r0, #0x26
+ add r2, r5, #0x0
+ add r3, r4, #0x0
+ bl FUN_0200687C
+ add sp, #0x10
+ pop {r3-r5, pc}
+_0200CAE2:
+ mov r0, #0x0
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x20]
+ mov r1, #0x1
+ str r0, [sp, #0xc]
+ mov r0, #0x26
+ add r2, r5, #0x0
+ add r3, r4, #0x0
+ bl FUN_0200687C
+ add sp, #0x10
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0200CAFC
+FUN_0200CAFC: ; 0x0200CAFC
+ mov r0, #0x18
+ bx lr
+
+ thumb_func_start FUN_0200CB00
+FUN_0200CB00: ; 0x0200CB00
+ push {r4-r6, lr}
+ sub sp, #0x10
+ add r6, r0, #0x0
+ add r0, sp, #0x10
+ ldrb r0, [r0, #0x10]
+ add r5, r1, #0x0
+ add r4, r3, #0x0
+ cmp r0, #0x0
+ beq _0200CB16
+ mov r1, #0x1
+ b _0200CB18
+_0200CB16:
+ mov r1, #0x0
+_0200CB18:
+ str r2, [sp, #0x0]
+ mov r0, #0x0
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x24]
+ add r2, r6, #0x0
+ str r0, [sp, #0xc]
+ mov r0, #0x26
+ add r3, r5, #0x0
+ bl FUN_0200687C
+ add r0, sp, #0x10
+ ldrb r0, [r0, #0x10]
+ cmp r0, #0x2
+ bne _0200CB3A
+ mov r1, #0x2d
+ b _0200CB3C
+_0200CB3A:
+ mov r1, #0x18
+_0200CB3C:
+ cmp r5, #0x4
+ bhs _0200CB56
+ mov r0, #0x20
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x24]
+ mov r2, #0x0
+ str r0, [sp, #0x4]
+ mov r0, #0x26
+ lsl r3, r4, #0x5
+ bl FUN_02006930
+ add sp, #0x10
+ pop {r4-r6, pc}
+_0200CB56:
+ mov r0, #0x20
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x24]
+ mov r2, #0x4
+ str r0, [sp, #0x4]
+ mov r0, #0x26
+ lsl r3, r4, #0x5
+ bl FUN_02006930
+ add sp, #0x10
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0200CB6C
+FUN_0200CB6C: ; 0x0200CB6C
+ push {r4-r7, lr}
+ sub sp, #0x24
+ str r1, [sp, #0x14]
+ str r2, [sp, #0x18]
+ str r3, [sp, #0x1c]
+ ldr r2, [sp, #0x1c]
+ ldr r5, [sp, #0x40]
+ sub r7, r2, #0x1
+ ldr r2, [sp, #0x18]
+ str r0, [sp, #0x10]
+ sub r6, r2, #0x1
+ lsl r2, r7, #0x18
+ lsr r2, r2, #0x18
+ str r2, [sp, #0x0]
+ mov r2, #0x1
+ str r2, [sp, #0x4]
+ str r2, [sp, #0x8]
+ lsl r3, r6, #0x18
+ str r5, [sp, #0xc]
+ add r2, sp, #0x28
+ ldrh r2, [r2, #0x1c]
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ add r1, sp, #0x28
+ ldrh r4, [r1, #0x1c]
+ lsl r0, r7, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ ldrb r0, [r1, #0x10]
+ add r2, r4, #0x1
+ lsl r2, r2, #0x10
+ str r0, [sp, #0x4]
+ mov r0, #0x1
+ str r0, [sp, #0x8]
+ str r5, [sp, #0xc]
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x14]
+ ldr r3, [sp, #0x18]
+ lsr r2, r2, #0x10
+ bl FUN_02018540
+ add r0, sp, #0x28
+ ldrb r1, [r0, #0x10]
+ ldr r0, [sp, #0x18]
+ add r2, r4, #0x2
+ add r0, r0, r1
+ str r0, [sp, #0x20]
+ lsl r0, r7, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ ldr r3, [sp, #0x20]
+ str r5, [sp, #0xc]
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x18
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x14]
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ ldr r0, [sp, #0x1c]
+ add r2, r4, #0x3
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ add r0, sp, #0x28
+ ldrb r0, [r0, #0x14]
+ lsl r2, r2, #0x10
+ lsl r3, r6, #0x18
+ str r0, [sp, #0x8]
+ str r5, [sp, #0xc]
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x14]
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ ldr r0, [sp, #0x1c]
+ ldr r3, [sp, #0x20]
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ add r0, sp, #0x28
+ ldrb r0, [r0, #0x14]
+ add r2, r4, #0x5
+ lsl r2, r2, #0x10
+ str r0, [sp, #0x8]
+ str r5, [sp, #0xc]
+ lsl r3, r3, #0x18
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x14]
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ add r0, sp, #0x28
+ ldrb r1, [r0, #0x14]
+ ldr r0, [sp, #0x1c]
+ add r2, r4, #0x6
+ add r7, r0, r1
+ lsl r0, r7, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ str r5, [sp, #0xc]
+ lsl r2, r2, #0x10
+ lsl r3, r6, #0x18
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x14]
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ lsl r0, r7, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ add r0, sp, #0x28
+ ldrb r0, [r0, #0x10]
+ add r2, r4, #0x7
+ lsl r2, r2, #0x10
+ str r0, [sp, #0x4]
+ mov r0, #0x1
+ str r0, [sp, #0x8]
+ str r5, [sp, #0xc]
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x14]
+ ldr r3, [sp, #0x18]
+ lsr r2, r2, #0x10
+ bl FUN_02018540
+ lsl r0, r7, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ ldr r3, [sp, #0x20]
+ str r5, [sp, #0xc]
+ add r4, #0x8
+ lsl r2, r4, #0x10
+ lsl r3, r3, #0x18
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x14]
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ add sp, #0x24
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200CCA4
+FUN_0200CCA4: ; 0x0200CCA4
+ push {r3-r7, lr}
+ sub sp, #0x20
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ add r7, r3, #0x0
+ bl FUN_0201AB08
+ str r0, [sp, #0x10]
+ add r0, r5, #0x0
+ bl FUN_0201AB14
+ str r0, [sp, #0x14]
+ add r0, r5, #0x0
+ bl FUN_0201AB18
+ str r0, [sp, #0x18]
+ add r0, r5, #0x0
+ bl FUN_0201AB0C
+ str r0, [sp, #0x1c]
+ add r0, r5, #0x0
+ bl FUN_0201AB10
+ ldr r1, [sp, #0x1c]
+ ldr r2, [sp, #0x14]
+ str r1, [sp, #0x0]
+ str r0, [sp, #0x4]
+ str r7, [sp, #0x8]
+ str r6, [sp, #0xc]
+ ldr r0, [r5, #0x0]
+ ldr r1, [sp, #0x10]
+ ldr r3, [sp, #0x18]
+ bl FUN_0200CB6C
+ cmp r4, #0x0
+ bne _0200CCF4
+ add r0, r5, #0x0
+ bl FUN_020191D0
+_0200CCF4:
+ add sp, #0x20
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0200CCF8
+FUN_0200CCF8: ; 0x0200CCF8
+ push {r3-r7, lr}
+ sub sp, #0x18
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_0201AB08
+ str r0, [sp, #0x10]
+ add r0, r5, #0x0
+ bl FUN_0201AB14
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0201AB18
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0201AB0C
+ str r0, [sp, #0x14]
+ add r0, r5, #0x0
+ bl FUN_0201AB10
+ sub r1, r7, #0x1
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ str r1, [sp, #0x0]
+ ldr r1, [sp, #0x14]
+ add r0, r0, #0x2
+ add r1, r1, #0x2
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ lsl r0, r0, #0x18
+ str r1, [sp, #0x4]
+ lsr r0, r0, #0x18
+ sub r3, r6, #0x1
+ lsl r3, r3, #0x18
+ str r0, [sp, #0x8]
+ mov r2, #0x0
+ str r2, [sp, #0xc]
+ ldr r0, [r5, #0x0]
+ ldr r1, [sp, #0x10]
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ cmp r4, #0x0
+ bne _0200CD5A
+ add r0, r5, #0x0
+ bl FUN_02019570
+_0200CD5A:
+ add sp, #0x18
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200CD60
+FUN_0200CD60: ; 0x0200CD60
+ add r0, r0, #0x2
+ bx lr
+
+ thumb_func_start FUN_0200CD64
+FUN_0200CD64: ; 0x0200CD64
+ add r0, #0x19
+ bx lr
+
+ thumb_func_start FUN_0200CD68
+FUN_0200CD68: ; 0x0200CD68
+ push {r4-r7, lr}
+ sub sp, #0x14
+ str r0, [sp, #0x10]
+ add r0, sp, #0x18
+ ldrb r7, [r0, #0x10]
+ add r6, r2, #0x0
+ add r5, r1, #0x0
+ add r0, r7, #0x0
+ add r4, r3, #0x0
+ bl FUN_0200CD60
+ add r1, r0, #0x0
+ str r6, [sp, #0x0]
+ mov r0, #0x0
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x2c]
+ ldr r2, [sp, #0x10]
+ str r0, [sp, #0xc]
+ mov r0, #0x26
+ add r3, r5, #0x0
+ bl FUN_0200687C
+ cmp r5, #0x4
+ bhs _0200CDB8
+ add r0, r7, #0x0
+ bl FUN_0200CD64
+ add r1, r0, #0x0
+ mov r0, #0x20
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x2c]
+ mov r2, #0x0
+ str r0, [sp, #0x4]
+ mov r0, #0x26
+ lsl r3, r4, #0x5
+ bl FUN_02006930
+ add sp, #0x14
+ pop {r4-r7, pc}
+_0200CDB8:
+ add r0, r7, #0x0
+ bl FUN_0200CD64
+ add r1, r0, #0x0
+ mov r0, #0x20
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x2c]
+ mov r2, #0x4
+ str r0, [sp, #0x4]
+ mov r0, #0x26
+ lsl r3, r4, #0x5
+ bl FUN_02006930
+ add sp, #0x14
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200CDD8
+FUN_0200CDD8: ; 0x0200CDD8
+ push {r3-r7, lr}
+ sub sp, #0x30
+ str r1, [sp, #0x10]
+ str r2, [sp, #0x14]
+ str r3, [sp, #0x18]
+ ldr r2, [sp, #0x4c]
+ add r7, r0, #0x0
+ str r2, [sp, #0x4c]
+ ldr r2, [sp, #0x18]
+ ldr r5, [sp, #0x50]
+ sub r6, r2, #0x1
+ ldr r2, [sp, #0x14]
+ sub r2, r2, #0x2
+ str r2, [sp, #0x28]
+ lsl r2, r6, #0x18
+ lsr r2, r2, #0x18
+ str r2, [sp, #0x0]
+ mov r2, #0x1
+ str r2, [sp, #0x4]
+ str r2, [sp, #0x8]
+ ldr r3, [sp, #0x28]
+ str r5, [sp, #0xc]
+ add r2, sp, #0x38
+ lsl r3, r3, #0x18
+ ldrh r2, [r2, #0x1c]
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ ldr r0, [sp, #0x14]
+ sub r0, r0, #0x1
+ str r0, [sp, #0x24]
+ add r0, sp, #0x38
+ ldrh r4, [r0, #0x1c]
+ lsl r0, r6, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ ldr r3, [sp, #0x24]
+ str r5, [sp, #0xc]
+ add r2, r4, #0x1
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x18
+ ldr r1, [sp, #0x10]
+ add r0, r7, #0x0
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ lsl r0, r6, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ add r0, sp, #0x38
+ ldrb r0, [r0, #0x10]
+ add r2, r4, #0x2
+ lsl r2, r2, #0x10
+ str r0, [sp, #0x4]
+ mov r0, #0x1
+ str r0, [sp, #0x8]
+ str r5, [sp, #0xc]
+ ldr r1, [sp, #0x10]
+ ldr r3, [sp, #0x14]
+ add r0, r7, #0x0
+ lsr r2, r2, #0x10
+ bl FUN_02018540
+ add r0, sp, #0x38
+ ldrb r1, [r0, #0x10]
+ ldr r0, [sp, #0x14]
+ add r2, r4, #0x3
+ add r0, r0, r1
+ str r0, [sp, #0x2c]
+ lsl r0, r6, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ ldr r3, [sp, #0x2c]
+ str r5, [sp, #0xc]
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x18
+ ldr r1, [sp, #0x10]
+ add r0, r7, #0x0
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ ldr r0, [sp, #0x2c]
+ add r2, r4, #0x4
+ add r0, r0, #0x1
+ str r0, [sp, #0x20]
+ lsl r0, r6, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ ldr r3, [sp, #0x20]
+ str r5, [sp, #0xc]
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x18
+ ldr r1, [sp, #0x10]
+ add r0, r7, #0x0
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ ldr r0, [sp, #0x2c]
+ add r2, r4, #0x5
+ add r0, r0, #0x2
+ str r0, [sp, #0x1c]
+ lsl r0, r6, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ ldr r3, [sp, #0x1c]
+ str r5, [sp, #0xc]
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x18
+ ldr r1, [sp, #0x10]
+ add r0, r7, #0x0
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ ldr r0, [sp, #0x18]
+ ldr r3, [sp, #0x28]
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x4c]
+ add r2, r4, #0x6
+ str r0, [sp, #0x8]
+ str r5, [sp, #0xc]
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x18
+ ldr r1, [sp, #0x10]
+ add r0, r7, #0x0
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ ldr r0, [sp, #0x18]
+ ldr r3, [sp, #0x24]
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x4c]
+ add r2, r4, #0x7
+ str r0, [sp, #0x8]
+ str r5, [sp, #0xc]
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x18
+ ldr r1, [sp, #0x10]
+ add r0, r7, #0x0
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ ldr r0, [sp, #0x18]
+ add r2, r4, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x4c]
+ ldr r3, [sp, #0x2c]
+ str r0, [sp, #0x8]
+ str r5, [sp, #0xc]
+ add r2, #0x9
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x18
+ ldr r1, [sp, #0x10]
+ add r0, r7, #0x0
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ ldr r0, [sp, #0x18]
+ add r2, r4, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x4c]
+ ldr r3, [sp, #0x20]
+ str r0, [sp, #0x8]
+ str r5, [sp, #0xc]
+ add r2, #0xa
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x18
+ ldr r1, [sp, #0x10]
+ add r0, r7, #0x0
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ ldr r0, [sp, #0x18]
+ add r2, r4, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x4c]
+ ldr r3, [sp, #0x1c]
+ str r0, [sp, #0x8]
+ str r5, [sp, #0xc]
+ add r2, #0xb
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x18
+ ldr r1, [sp, #0x10]
+ add r0, r7, #0x0
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ add r2, r4, #0x0
+ ldr r3, [sp, #0x28]
+ add r2, #0xc
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x18
+ ldr r1, [sp, #0x18]
+ ldr r0, [sp, #0x4c]
+ lsr r2, r2, #0x10
+ add r6, r1, r0
+ lsl r0, r6, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ str r5, [sp, #0xc]
+ ldr r1, [sp, #0x10]
+ add r0, r7, #0x0
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ lsl r0, r6, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ add r2, r4, #0x0
+ ldr r3, [sp, #0x24]
+ str r5, [sp, #0xc]
+ add r2, #0xd
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x18
+ ldr r1, [sp, #0x10]
+ add r0, r7, #0x0
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ lsl r0, r6, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ add r0, sp, #0x38
+ ldrb r0, [r0, #0x10]
+ add r2, r4, #0x0
+ add r2, #0xe
+ str r0, [sp, #0x4]
+ mov r0, #0x1
+ str r0, [sp, #0x8]
+ str r5, [sp, #0xc]
+ lsl r2, r2, #0x10
+ ldr r1, [sp, #0x10]
+ ldr r3, [sp, #0x14]
+ add r0, r7, #0x0
+ lsr r2, r2, #0x10
+ bl FUN_02018540
+ lsl r0, r6, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ add r2, r4, #0x0
+ ldr r3, [sp, #0x2c]
+ str r5, [sp, #0xc]
+ add r2, #0xf
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x18
+ ldr r1, [sp, #0x10]
+ add r0, r7, #0x0
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ lsl r0, r6, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ add r2, r4, #0x0
+ ldr r3, [sp, #0x20]
+ str r5, [sp, #0xc]
+ add r2, #0x10
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x18
+ ldr r1, [sp, #0x10]
+ add r0, r7, #0x0
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ lsl r0, r6, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ ldr r3, [sp, #0x1c]
+ str r5, [sp, #0xc]
+ add r4, #0x11
+ lsl r2, r4, #0x10
+ lsl r3, r3, #0x18
+ ldr r1, [sp, #0x10]
+ add r0, r7, #0x0
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ add sp, #0x30
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200D06C
+FUN_0200D06C: ; 0x0200D06C
+ push {r4-r7, lr}
+ sub sp, #0x1c
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_0201AB08
+ str r0, [sp, #0x10]
+ add r0, r5, #0x0
+ bl FUN_0201AB14
+ str r0, [sp, #0x14]
+ add r0, r5, #0x0
+ bl FUN_0201AB18
+ str r0, [sp, #0x18]
+ add r0, r5, #0x0
+ bl FUN_0201AB0C
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0201AB10
+ str r7, [sp, #0x0]
+ str r0, [sp, #0x4]
+ lsl r0, r6, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x8]
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x0]
+ ldr r1, [sp, #0x10]
+ ldr r2, [sp, #0x14]
+ ldr r3, [sp, #0x18]
+ bl FUN_0200CDD8
+ add sp, #0x1c
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200D0BC
+FUN_0200D0BC: ; 0x0200D0BC
+ push {r4-r6, lr}
+ add r6, r2, #0x0
+ add r4, r1, #0x0
+ add r1, r6, #0x0
+ add r2, r3, #0x0
+ add r5, r0, #0x0
+ bl FUN_0200D06C
+ cmp r4, #0x0
+ bne _0200D0D6
+ add r0, r5, #0x0
+ bl FUN_020191D0
+_0200D0D6:
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_0200D18C
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0200D0E0
+FUN_0200D0E0: ; 0x0200D0E0
+ push {r3-r7, lr}
+ sub sp, #0x18
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_0201AB08
+ str r0, [sp, #0x10]
+ add r0, r5, #0x0
+ bl FUN_0201AB14
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0201AB18
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0201AB0C
+ str r0, [sp, #0x14]
+ add r0, r5, #0x0
+ bl FUN_0201AB10
+ sub r1, r7, #0x1
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ str r1, [sp, #0x0]
+ ldr r1, [sp, #0x14]
+ add r0, r0, #0x2
+ add r1, r1, #0x5
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ lsl r0, r0, #0x18
+ str r1, [sp, #0x4]
+ lsr r0, r0, #0x18
+ sub r3, r6, #0x2
+ lsl r3, r3, #0x18
+ str r0, [sp, #0x8]
+ mov r2, #0x0
+ str r2, [sp, #0xc]
+ ldr r0, [r5, #0x0]
+ ldr r1, [sp, #0x10]
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ cmp r4, #0x0
+ bne _0200D142
+ add r0, r5, #0x0
+ bl FUN_02019570
+_0200D142:
+ add sp, #0x18
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200D148
+FUN_0200D148: ; 0x0200D148
+ push {r4-r5, lr}
+ sub sp, #0x24
+ add r5, r1, #0x0
+ str r0, [sp, #0x1c]
+ add r1, sp, #0x14
+ strh r3, [r1, #0xc]
+ add r4, r2, #0x0
+ add r0, sp, #0x20
+ ldrh r2, [r0, #0x10]
+ add r3, r4, #0x0
+ strh r2, [r1, #0xe]
+ ldr r2, [sp, #0x34]
+ str r2, [sp, #0x14]
+ ldrh r2, [r0, #0x18]
+ strh r2, [r1, #0x4]
+ ldrh r2, [r0, #0x1c]
+ strh r2, [r1, #0x6]
+ ldrh r1, [r0, #0x20]
+ add r2, r5, #0x0
+ str r1, [sp, #0x0]
+ ldrh r1, [r0, #0x24]
+ str r1, [sp, #0x4]
+ ldrh r1, [r0, #0x28]
+ str r1, [sp, #0x8]
+ ldrh r0, [r0, #0x2c]
+ add r1, sp, #0x14
+ str r0, [sp, #0xc]
+ mov r0, #0x0
+ str r0, [sp, #0x10]
+ add r0, sp, #0x1c
+ bl FUN_02018A60
+ add sp, #0x24
+ pop {r4-r5, pc}
+
+ thumb_func_start FUN_0200D18C
+FUN_0200D18C: ; 0x0200D18C
+ push {r3-r7, lr}
+ sub sp, #0x40
+ str r1, [sp, #0x24]
+ str r0, [sp, #0x20]
+ ldr r0, [r0, #0x0]
+ bl FUN_02016BB8
+ add r6, r0, #0x0
+ ldr r0, [sp, #0x20]
+ bl FUN_0201AB08
+ mov r1, #0x6
+ str r0, [sp, #0x28]
+ add r0, r6, #0x0
+ lsl r1, r1, #0x6
+ bl FUN_02016998
+ add r5, r0, #0x0
+ ldr r0, [sp, #0x28]
+ bl FUN_020187B0
+ add r4, r0, #0x0
+ str r6, [sp, #0x0]
+ mov r0, #0x26
+ mov r1, #0x16
+ mov r2, #0x0
+ add r3, sp, #0x3c
+ bl FUN_02006BB0
+ str r0, [sp, #0x2c]
+ ldr r0, [sp, #0x3c]
+ mov r7, #0x0
+ ldr r0, [r0, #0x14]
+ str r0, [sp, #0x30]
+ ldr r0, [sp, #0x24]
+ add r0, #0xa
+ lsl r0, r0, #0x5
+ str r0, [sp, #0x34]
+ ldr r0, [sp, #0x24]
+ add r0, #0xb
+ lsl r0, r0, #0x5
+ str r0, [sp, #0x38]
+_0200D1E0:
+ ldr r1, [sp, #0x34]
+ lsl r6, r7, #0x7
+ add r0, r5, r6
+ add r1, r4, r1
+ mov r2, #0x20
+ blx FUN_020DF438
+ add r0, r6, #0x0
+ ldr r1, [sp, #0x38]
+ add r0, #0x20
+ add r0, r5, r0
+ add r1, r4, r1
+ mov r2, #0x20
+ blx FUN_020DF438
+ add r0, r6, #0x0
+ ldr r1, [sp, #0x34]
+ add r0, #0x40
+ add r0, r5, r0
+ add r1, r4, r1
+ mov r2, #0x20
+ blx FUN_020DF438
+ ldr r1, [sp, #0x38]
+ add r6, #0x60
+ add r0, r5, r6
+ add r1, r4, r1
+ mov r2, #0x20
+ blx FUN_020DF438
+ add r0, r7, #0x1
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+ cmp r7, #0x3
+ blo _0200D1E0
+ mov r1, #0x30
+ str r1, [sp, #0x0]
+ str r5, [sp, #0x4]
+ mov r3, #0xc
+ str r3, [sp, #0x8]
+ str r1, [sp, #0xc]
+ mov r0, #0x1
+ str r0, [sp, #0x10]
+ mov r2, #0x0
+ str r2, [sp, #0x14]
+ str r3, [sp, #0x18]
+ str r1, [sp, #0x1c]
+ ldr r0, [sp, #0x30]
+ mov r1, #0x4
+ bl FUN_0200D148
+ ldr r0, [sp, #0x24]
+ mov r3, #0x6
+ add r0, #0x12
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x20]
+ ldr r1, [sp, #0x28]
+ ldr r0, [r0, #0x0]
+ add r2, r5, #0x0
+ lsl r3, r3, #0x6
+ bl FUN_02017E14
+ ldr r0, [sp, #0x24]
+ bl FUN_02002840
+ ldr r0, [sp, #0x2c]
+ bl FUN_02016A18
+ add r0, r5, #0x0
+ bl FUN_02016A18
+ add sp, #0x40
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200D274
+FUN_0200D274: ; 0x0200D274
+ push {r4-r7, lr}
+ sub sp, #0x14
+ str r0, [sp, #0x4]
+ str r1, [sp, #0x8]
+ add r0, sp, #0x18
+ ldrb r0, [r0, #0x10]
+ add r7, r2, #0x0
+ add r5, r3, #0x0
+ bl FUN_0200CD60
+ add r1, r0, #0x0
+ ldr r0, [sp, #0x2c]
+ mov r2, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x26
+ add r3, sp, #0x10
+ bl FUN_02006BB0
+ str r0, [sp, #0xc]
+ mov r1, #0x9
+ ldr r0, [sp, #0x2c]
+ lsl r1, r1, #0x6
+ bl FUN_02016998
+ ldr r1, [sp, #0x10]
+ mov r2, #0x9
+ ldr r1, [r1, #0x14]
+ lsl r2, r2, #0x6
+ add r4, r0, #0x0
+ blx FUN_020DF438
+ mov r0, #0x9
+ mov r3, #0x0
+ lsl r0, r0, #0x6
+ mov r1, #0xf
+_0200D2BA:
+ ldrb r2, [r4, r3]
+ lsl r6, r2, #0x14
+ and r2, r1
+ lsl r2, r2, #0x18
+ lsr r6, r6, #0x18
+ lsr r2, r2, #0x18
+ cmp r6, #0x0
+ bne _0200D2CC
+ add r6, r5, #0x0
+_0200D2CC:
+ cmp r2, #0x0
+ bne _0200D2D2
+ add r2, r5, #0x0
+_0200D2D2:
+ lsl r6, r6, #0x4
+ orr r2, r6
+ strb r2, [r4, r3]
+ add r3, r3, #0x1
+ cmp r3, r0
+ blo _0200D2BA
+ str r7, [sp, #0x0]
+ mov r3, #0x9
+ ldr r0, [sp, #0x4]
+ ldr r1, [sp, #0x8]
+ add r2, r4, #0x0
+ lsl r3, r3, #0x6
+ bl FUN_02017E14
+ ldr r0, [sp, #0xc]
+ bl FUN_02016A18
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x14
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200D300
+FUN_0200D300: ; 0x0200D300
+ push {r4-r7, lr}
+ sub sp, #0x1c
+ str r0, [sp, #0x10]
+ add r5, r2, #0x0
+ mov r0, #0xf
+ add r6, r1, #0x0
+ add r7, r3, #0x0
+ str r5, [sp, #0x0]
+ lsl r0, r0, #0x6
+ str r0, [sp, #0x4]
+ mov r1, #0x0
+ ldr r4, [sp, #0x38]
+ str r1, [sp, #0x8]
+ ldr r2, [sp, #0x10]
+ mov r0, #0x24
+ add r3, r6, #0x0
+ str r4, [sp, #0xc]
+ bl FUN_0200687C
+ mov r0, #0x24
+ mov r1, #0x1
+ add r2, r4, #0x0
+ bl LoadFromNarc_2
+ add r1, sp, #0x18
+ str r0, [sp, #0x14]
+ blx FUN_020B0138
+ add r2, sp, #0x20
+ ldr r1, [sp, #0x18]
+ ldrb r2, [r2, #0x10]
+ lsl r3, r7, #0x15
+ ldr r1, [r1, #0xc]
+ lsl r2, r2, #0x5
+ add r1, r1, r2
+ add r0, r6, #0x0
+ mov r2, #0x20
+ lsr r3, r3, #0x10
+ bl FUN_02017FB4
+ ldr r1, [sp, #0x14]
+ add r0, r4, #0x0
+ bl FUN_02016A8C
+ add r0, sp, #0x20
+ ldrb r3, [r0, #0x10]
+ cmp r3, #0x1
+ bhi _0200D374
+ ldrh r0, [r0, #0x14]
+ add r5, #0x1e
+ lsl r2, r5, #0x10
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x10]
+ add r1, r6, #0x0
+ lsr r2, r2, #0x10
+ str r4, [sp, #0x4]
+ bl FUN_0200D378
+_0200D374:
+ add sp, #0x1c
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_0200D378
+FUN_0200D378: ; 0x0200D378
+ push {r3-r5, lr}
+ sub sp, #0x10
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ ldr r1, [sp, #0x20]
+ cmp r3, #0x0
+ bne _0200D38C
+ add r1, #0x21
+ lsl r0, r1, #0x10
+ b _0200D390
+_0200D38C:
+ add r0, r1, #0x2
+ lsl r0, r0, #0x10
+_0200D390:
+ lsr r1, r0, #0x10
+ mov r0, #0x3
+ str r2, [sp, #0x0]
+ lsl r0, r0, #0x8
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x24]
+ add r2, r5, #0x0
+ str r0, [sp, #0xc]
+ mov r0, #0x24
+ add r3, r4, #0x0
+ bl FUN_0200687C
+ add sp, #0x10
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0200D3B0
+FUN_0200D3B0: ; 0x0200D3B0
+ push {r3-r7, lr}
+ sub sp, #0x40
+ str r1, [sp, #0x14]
+ str r2, [sp, #0x18]
+ str r3, [sp, #0x1c]
+ ldr r2, [sp, #0x1c]
+ ldr r6, [sp, #0x5c]
+ sub r7, r2, #0x1
+ ldr r2, [sp, #0x18]
+ ldr r5, [sp, #0x60]
+ str r2, [sp, #0x34]
+ sub r2, #0x9
+ str r2, [sp, #0x34]
+ lsl r2, r7, #0x18
+ lsr r2, r2, #0x18
+ str r2, [sp, #0x0]
+ mov r2, #0x1
+ str r2, [sp, #0x4]
+ str r2, [sp, #0x8]
+ ldr r3, [sp, #0x34]
+ str r5, [sp, #0xc]
+ add r2, sp, #0x48
+ lsl r3, r3, #0x18
+ ldrh r2, [r2, #0x1c]
+ lsr r3, r3, #0x18
+ str r0, [sp, #0x10]
+ bl FUN_02018540
+ ldr r0, [sp, #0x18]
+ str r0, [sp, #0x30]
+ sub r0, #0x8
+ str r0, [sp, #0x30]
+ add r0, sp, #0x48
+ ldrh r4, [r0, #0x1c]
+ lsl r0, r7, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ ldr r3, [sp, #0x30]
+ str r5, [sp, #0xc]
+ add r2, r4, #0x1
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x18
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x14]
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ add r0, sp, #0x48
+ ldrb r0, [r0, #0x10]
+ add r2, r4, #0x2
+ lsl r2, r2, #0x10
+ str r0, [sp, #0x3c]
+ add r0, r0, #0x7
+ str r0, [sp, #0x24]
+ ldr r0, [sp, #0x18]
+ lsr r2, r2, #0x10
+ sub r0, r0, #0x7
+ str r0, [sp, #0x20]
+ lsl r0, r7, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x24]
+ ldr r3, [sp, #0x20]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x4]
+ mov r0, #0x1
+ str r0, [sp, #0x8]
+ str r5, [sp, #0xc]
+ lsl r3, r3, #0x18
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x14]
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ add r2, r4, #0x3
+ lsl r2, r2, #0x10
+ ldr r1, [sp, #0x18]
+ ldr r0, [sp, #0x3c]
+ lsr r2, r2, #0x10
+ add r0, r1, r0
+ str r0, [sp, #0x38]
+ lsl r0, r7, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ ldr r3, [sp, #0x38]
+ str r5, [sp, #0xc]
+ lsl r3, r3, #0x18
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x14]
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ ldr r0, [sp, #0x38]
+ add r2, r4, #0x4
+ add r0, r0, #0x1
+ str r0, [sp, #0x2c]
+ lsl r0, r7, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ ldr r3, [sp, #0x2c]
+ str r5, [sp, #0xc]
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x18
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x14]
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ ldr r0, [sp, #0x38]
+ add r0, r0, #0x2
+ str r0, [sp, #0x28]
+ lsl r0, r7, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ ldr r3, [sp, #0x28]
+ str r5, [sp, #0xc]
+ add r2, r4, #0x5
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x18
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x14]
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ ldr r0, [sp, #0x1c]
+ ldr r3, [sp, #0x34]
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ str r6, [sp, #0x8]
+ str r5, [sp, #0xc]
+ add r2, r4, #0x6
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x18
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x14]
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ ldr r0, [sp, #0x1c]
+ ldr r3, [sp, #0x30]
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ str r6, [sp, #0x8]
+ str r5, [sp, #0xc]
+ add r2, r4, #0x7
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x18
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x14]
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ ldr r0, [sp, #0x1c]
+ add r2, r4, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ str r6, [sp, #0x8]
+ str r5, [sp, #0xc]
+ ldr r3, [sp, #0x18]
+ add r2, #0x8
+ sub r3, r3, #0x1
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x18
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x14]
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ ldr r0, [sp, #0x1c]
+ add r2, r4, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ str r6, [sp, #0x8]
+ ldr r3, [sp, #0x38]
+ str r5, [sp, #0xc]
+ add r2, #0x9
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x18
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x14]
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ ldr r0, [sp, #0x1c]
+ add r2, r4, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ str r6, [sp, #0x8]
+ ldr r3, [sp, #0x2c]
+ str r5, [sp, #0xc]
+ add r2, #0xa
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x18
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x14]
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ ldr r0, [sp, #0x1c]
+ add r2, r4, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ str r6, [sp, #0x8]
+ ldr r3, [sp, #0x28]
+ str r5, [sp, #0xc]
+ add r2, #0xb
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x18
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x14]
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ ldr r0, [sp, #0x1c]
+ add r2, r4, #0x0
+ add r6, r0, r6
+ lsl r0, r6, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ ldr r3, [sp, #0x34]
+ str r5, [sp, #0xc]
+ add r2, #0xc
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x18
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x14]
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ lsl r0, r6, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ add r2, r4, #0x0
+ ldr r3, [sp, #0x30]
+ str r5, [sp, #0xc]
+ add r2, #0xd
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x18
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x14]
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ lsl r0, r6, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x24]
+ add r2, r4, #0x0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x4]
+ mov r0, #0x1
+ str r0, [sp, #0x8]
+ ldr r3, [sp, #0x20]
+ str r5, [sp, #0xc]
+ add r2, #0xe
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x18
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x14]
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ lsl r0, r6, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ add r2, r4, #0x0
+ ldr r3, [sp, #0x38]
+ str r5, [sp, #0xc]
+ add r2, #0xf
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x18
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x14]
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ lsl r0, r6, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ add r2, r4, #0x0
+ ldr r3, [sp, #0x2c]
+ str r5, [sp, #0xc]
+ add r2, #0x10
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x18
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x14]
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ lsl r0, r6, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ ldr r3, [sp, #0x28]
+ str r5, [sp, #0xc]
+ add r4, #0x11
+ lsl r2, r4, #0x10
+ lsl r3, r3, #0x18
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x14]
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ add sp, #0x40
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200D678
+FUN_0200D678: ; 0x0200D678
+ push {r3-r7, lr}
+ sub sp, #0x28
+ str r1, [sp, #0x10]
+ add r7, r0, #0x0
+ str r2, [sp, #0x14]
+ bl FUN_0201AB08
+ str r0, [sp, #0x20]
+ add r0, r7, #0x0
+ bl FUN_0201AB14
+ sub r0, r0, #0x7
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x18]
+ add r0, r7, #0x0
+ bl FUN_0201AB18
+ str r0, [sp, #0x1c]
+ mov r0, #0x0
+ str r0, [sp, #0x24]
+_0200D6A2:
+ ldr r2, [sp, #0x24]
+ ldr r1, [sp, #0x1c]
+ ldr r0, [sp, #0x24]
+ add r3, r2, #0x0
+ add r0, r1, r0
+ mov r1, #0x6
+ mul r3, r1
+ ldr r1, [sp, #0x10]
+ lsl r0, r0, #0x18
+ mov r4, #0x0
+ add r5, r1, r3
+ lsr r6, r0, #0x18
+_0200D6BA:
+ str r6, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x14]
+ ldr r3, [sp, #0x18]
+ str r0, [sp, #0xc]
+ add r2, r4, r5
+ add r3, r3, r4
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x18
+ ldr r0, [r7, #0x0]
+ ldr r1, [sp, #0x20]
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ add r0, r4, #0x1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #0x6
+ blo _0200D6BA
+ ldr r0, [sp, #0x24]
+ add r0, r0, #0x1
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x24]
+ cmp r0, #0x4
+ blo _0200D6A2
+ add sp, #0x28
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0200D6F8
+FUN_0200D6F8: ; 0x0200D6F8
+ push {r3-r7, lr}
+ sub sp, #0x28
+ add r5, r0, #0x0
+ str r1, [sp, #0x10]
+ add r4, r2, #0x0
+ add r6, r3, #0x0
+ bl FUN_0201AB08
+ str r0, [sp, #0x14]
+ add r0, sp, #0x30
+ ldrb r0, [r0, #0x10]
+ cmp r0, #0x1
+ bhi _0200D756
+ add r0, r5, #0x0
+ bl FUN_0201AB14
+ str r0, [sp, #0x18]
+ add r0, r5, #0x0
+ bl FUN_0201AB18
+ str r0, [sp, #0x1c]
+ add r0, r5, #0x0
+ bl FUN_0201AB0C
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0201AB10
+ str r7, [sp, #0x0]
+ str r0, [sp, #0x4]
+ str r6, [sp, #0x8]
+ str r4, [sp, #0xc]
+ ldr r0, [r5, #0x0]
+ ldr r1, [sp, #0x14]
+ ldr r2, [sp, #0x18]
+ ldr r3, [sp, #0x1c]
+ bl FUN_0200D3B0
+ add r1, r4, #0x0
+ add r1, #0x1e
+ lsl r1, r1, #0x10
+ add r0, r5, #0x0
+ lsr r1, r1, #0x10
+ add r2, r6, #0x0
+ bl FUN_0200D678
+ b _0200D788
+_0200D756:
+ add r0, r5, #0x0
+ bl FUN_0201AB14
+ str r0, [sp, #0x20]
+ add r0, r5, #0x0
+ bl FUN_0201AB18
+ str r0, [sp, #0x24]
+ add r0, r5, #0x0
+ bl FUN_0201AB0C
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0201AB10
+ str r7, [sp, #0x0]
+ str r0, [sp, #0x4]
+ str r6, [sp, #0x8]
+ str r4, [sp, #0xc]
+ ldr r0, [r5, #0x0]
+ ldr r1, [sp, #0x14]
+ ldr r2, [sp, #0x20]
+ ldr r3, [sp, #0x24]
+ bl FUN_0200CDD8
+_0200D788:
+ ldr r0, [sp, #0x10]
+ cmp r0, #0x0
+ bne _0200D794
+ add r0, r5, #0x0
+ bl FUN_020191D0
+_0200D794:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0200D18C
+ add sp, #0x28
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0200D7A0
+FUN_0200D7A0: ; 0x0200D7A0
+ push {r3-r7, lr}
+ sub sp, #0x18
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ str r2, [sp, #0x10]
+ bl FUN_0201AB08
+ str r0, [sp, #0x14]
+ cmp r4, #0x1
+ bhi _0200D7FE
+ add r0, r5, #0x0
+ bl FUN_0201AB14
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0201AB18
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0201AB0C
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0201AB10
+ sub r1, r7, #0x1
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ add r0, r0, #0x2
+ lsl r0, r0, #0x18
+ sub r4, #0x9
+ lsl r3, r4, #0x18
+ add r6, #0xb
+ str r1, [sp, #0x0]
+ lsl r1, r6, #0x18
+ lsr r1, r1, #0x18
+ str r1, [sp, #0x4]
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x8]
+ mov r2, #0x0
+ str r2, [sp, #0xc]
+ ldr r0, [r5, #0x0]
+ ldr r1, [sp, #0x14]
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ b _0200D846
+_0200D7FE:
+ add r0, r5, #0x0
+ bl FUN_0201AB14
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0201AB18
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0201AB0C
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0201AB10
+ sub r1, r6, #0x1
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ str r1, [sp, #0x0]
+ add r1, r7, #0x4
+ lsl r1, r1, #0x18
+ add r0, r0, #0x2
+ lsr r1, r1, #0x18
+ lsl r0, r0, #0x18
+ str r1, [sp, #0x4]
+ lsr r0, r0, #0x18
+ sub r3, r4, #0x2
+ lsl r3, r3, #0x18
+ str r0, [sp, #0x8]
+ mov r2, #0x0
+ str r2, [sp, #0xc]
+ ldr r0, [r5, #0x0]
+ ldr r1, [sp, #0x14]
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+_0200D846:
+ ldr r0, [sp, #0x10]
+ cmp r0, #0x0
+ bne _0200D852
+ add r0, r5, #0x0
+ bl FUN_02019570
+_0200D852:
+ add sp, #0x18
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200D858
+FUN_0200D858: ; 0x0200D858
+ push {r4-r7, lr}
+ sub sp, #0x34
+ str r0, [sp, #0x20]
+ ldr r0, [r0, #0x0]
+ str r1, [sp, #0x24]
+ bl FUN_02016BB8
+ str r0, [sp, #0x28]
+ ldr r0, [sp, #0x20]
+ bl FUN_0201AB08
+ bl FUN_020187B0
+ add r5, r0, #0x0
+ ldr r0, [sp, #0x28]
+ ldr r1, _0200D970 ; =0x0000048C
+ bl FUN_02016998
+ ldr r1, [sp, #0x24]
+ add r4, r0, #0x0
+ ldr r0, _0200D974 ; =0x00000404
+ add r1, #0x12
+ lsl r1, r1, #0x5
+ add r0, r4, r0
+ add r1, r5, r1
+ mov r2, #0x80
+ blx FUN_020DF438
+ ldr r0, [sp, #0x28]
+ mov r1, #0x80
+ bl FUN_02016998
+ ldr r1, [sp, #0x24]
+ mov r2, #0x20
+ add r1, #0xa
+ lsl r1, r1, #0x5
+ str r1, [sp, #0x2c]
+ add r1, r5, r1
+ add r6, r0, #0x0
+ blx FUN_020DF438
+ ldr r0, [sp, #0x24]
+ mov r2, #0x20
+ add r0, #0xb
+ lsl r7, r0, #0x5
+ add r0, r6, #0x0
+ add r0, #0x20
+ add r1, r5, r7
+ blx FUN_020DF438
+ ldr r1, [sp, #0x2c]
+ add r0, r6, #0x0
+ add r0, #0x40
+ add r1, r5, r1
+ mov r2, #0x20
+ blx FUN_020DF438
+ add r0, r6, #0x0
+ add r0, #0x60
+ add r1, r5, r7
+ mov r2, #0x20
+ blx FUN_020DF438
+ mov r5, #0x0
+ add r7, r4, #0x4
+_0200D8DA:
+ lsl r0, r5, #0x7
+ add r0, r7, r0
+ add r1, r6, #0x0
+ mov r2, #0x80
+ blx FUN_020DF438
+ add r0, r5, #0x1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #0x8
+ blo _0200D8DA
+ add r0, r6, #0x0
+ bl FUN_02016A18
+ ldr r0, [sp, #0x28]
+ mov r1, #0x17
+ str r0, [sp, #0x0]
+ mov r0, #0x26
+ mov r2, #0x0
+ add r3, sp, #0x30
+ bl FUN_02006BB0
+ mov r2, #0x80
+ add r5, r0, #0x0
+ str r2, [sp, #0x0]
+ add r0, r4, #0x4
+ str r0, [sp, #0x4]
+ mov r3, #0x10
+ str r3, [sp, #0x8]
+ str r2, [sp, #0xc]
+ mov r1, #0x0
+ str r1, [sp, #0x10]
+ str r1, [sp, #0x14]
+ str r3, [sp, #0x18]
+ str r2, [sp, #0x1c]
+ ldr r0, [sp, #0x30]
+ add r2, r1, #0x0
+ ldr r0, [r0, #0x14]
+ bl FUN_0200D148
+ add r0, r5, #0x0
+ bl FUN_02016A18
+ ldr r0, [sp, #0x20]
+ ldr r1, _0200D978 ; =0x00000484
+ str r0, [r4, #0x0]
+ ldr r0, [sp, #0x24]
+ mov r2, #0x0
+ strh r0, [r4, r1]
+ add r0, r1, #0x2
+ strb r2, [r4, r0]
+ add r0, r1, #0x3
+ ldrb r3, [r4, r0]
+ mov r0, #0x7f
+ bic r3, r0
+ add r0, r1, #0x3
+ strb r3, [r4, r0]
+ add r0, r1, #0x4
+ ldrb r3, [r4, r0]
+ mov r0, #0x3
+ bic r3, r0
+ add r0, r1, #0x4
+ strb r3, [r4, r0]
+ ldr r0, _0200D97C ; =FUN_0200DB7C
+ add r1, r4, #0x0
+ bl FUN_0200CA60
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_0200D980
+ add r0, r4, #0x0
+ add sp, #0x34
+ pop {r4-r7, pc}
+ nop
+_0200D970: .word 0x0000048C
+_0200D974: .word 0x00000404
+_0200D978: .word 0x00000484
+_0200D97C: .word FUN_0200DB7C
+
+ thumb_func_start FUN_0200D980
+FUN_0200D980: ; 0x0200D980
+ push {r4-r7, lr}
+ sub sp, #0x24
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ add r6, r1, #0x0
+ bl FUN_0201AB08
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_0201AB14
+ str r0, [sp, #0x18]
+ ldr r0, [r5, #0x0]
+ bl FUN_0201AB18
+ str r0, [sp, #0x1c]
+ ldr r0, [r5, #0x0]
+ bl FUN_0201AB0C
+ str r0, [sp, #0x20]
+ cmp r6, #0x2
+ bne _0200DA8A
+ ldr r2, _0200DB78 ; =0x00000484
+ add r1, r4, #0x0
+ ldrh r0, [r5, r2]
+ sub r2, #0x80
+ add r2, r5, r2
+ add r0, #0x12
+ str r0, [sp, #0x0]
+ ldr r0, [r5, #0x0]
+ mov r3, #0x80
+ ldr r0, [r0, #0x0]
+ bl FUN_02017E14
+ ldr r0, [sp, #0x1c]
+ ldr r1, [sp, #0x18]
+ add r7, r0, #0x2
+ ldr r0, [sp, #0x20]
+ ldr r2, _0200DB78 ; =0x00000484
+ add r6, r1, r0
+ add r0, r6, #0x1
+ str r0, [sp, #0x14]
+ lsl r0, r7, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ mov r0, #0x10
+ str r0, [sp, #0xc]
+ ldrh r2, [r5, r2]
+ ldr r0, [r5, #0x0]
+ ldr r3, [sp, #0x14]
+ add r2, #0xa
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x18
+ ldr r0, [r0, #0x0]
+ add r1, r4, #0x0
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ lsl r0, r7, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ mov r0, #0x10
+ str r0, [sp, #0xc]
+ ldr r2, _0200DB78 ; =0x00000484
+ ldr r0, [r5, #0x0]
+ ldrh r2, [r5, r2]
+ add r6, r6, #0x2
+ lsl r3, r6, #0x18
+ add r2, #0xb
+ lsl r2, r2, #0x10
+ ldr r0, [r0, #0x0]
+ add r1, r4, #0x0
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ ldr r0, [sp, #0x1c]
+ ldr r3, [sp, #0x14]
+ add r7, r0, #0x3
+ lsl r0, r7, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ mov r0, #0x10
+ str r0, [sp, #0xc]
+ ldr r2, _0200DB78 ; =0x00000484
+ ldr r0, [r5, #0x0]
+ ldrh r2, [r5, r2]
+ lsl r3, r3, #0x18
+ ldr r0, [r0, #0x0]
+ add r2, #0xa
+ lsl r2, r2, #0x10
+ add r1, r4, #0x0
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ lsl r0, r7, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ mov r0, #0x10
+ str r0, [sp, #0xc]
+ ldr r2, _0200DB78 ; =0x00000484
+ ldr r0, [r5, #0x0]
+ ldrh r2, [r5, r2]
+ lsl r3, r6, #0x18
+ ldr r0, [r0, #0x0]
+ add r2, #0xb
+ lsl r2, r2, #0x10
+ add r1, r4, #0x0
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ ldr r0, [r5, #0x0]
+ add r1, r4, #0x0
+ ldr r0, [r0, #0x0]
+ bl FUN_02017CD0
+ add sp, #0x24
+ pop {r4-r7, pc}
+_0200DA8A:
+ ldr r3, _0200DB78 ; =0x00000484
+ add r2, r5, #0x4
+ ldrh r0, [r5, r3]
+ add r3, r3, #0x3
+ add r1, r4, #0x0
+ add r0, #0x12
+ str r0, [sp, #0x0]
+ ldrb r3, [r5, r3]
+ ldr r0, [r5, #0x0]
+ lsl r3, r3, #0x19
+ lsr r3, r3, #0x19
+ lsl r3, r3, #0x7
+ add r2, r2, r3
+ ldr r0, [r0, #0x0]
+ mov r3, #0x80
+ bl FUN_02017E14
+ cmp r6, #0x0
+ beq _0200DB72
+ ldr r0, [sp, #0x1c]
+ ldr r1, [sp, #0x18]
+ add r7, r0, #0x2
+ ldr r0, [sp, #0x20]
+ ldr r2, _0200DB78 ; =0x00000484
+ add r6, r1, r0
+ add r0, r6, #0x1
+ str r0, [sp, #0x10]
+ lsl r0, r7, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ mov r0, #0x10
+ str r0, [sp, #0xc]
+ ldrh r2, [r5, r2]
+ ldr r0, [r5, #0x0]
+ ldr r3, [sp, #0x10]
+ add r2, #0x12
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x18
+ ldr r0, [r0, #0x0]
+ add r1, r4, #0x0
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ lsl r0, r7, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ mov r0, #0x10
+ str r0, [sp, #0xc]
+ ldr r2, _0200DB78 ; =0x00000484
+ ldr r0, [r5, #0x0]
+ ldrh r2, [r5, r2]
+ add r6, r6, #0x2
+ lsl r3, r6, #0x18
+ add r2, #0x13
+ lsl r2, r2, #0x10
+ ldr r0, [r0, #0x0]
+ add r1, r4, #0x0
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ ldr r0, [sp, #0x1c]
+ ldr r3, [sp, #0x10]
+ add r7, r0, #0x3
+ lsl r0, r7, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ mov r0, #0x10
+ str r0, [sp, #0xc]
+ ldr r2, _0200DB78 ; =0x00000484
+ ldr r0, [r5, #0x0]
+ ldrh r2, [r5, r2]
+ lsl r3, r3, #0x18
+ ldr r0, [r0, #0x0]
+ add r2, #0x14
+ lsl r2, r2, #0x10
+ add r1, r4, #0x0
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ lsl r0, r7, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ mov r0, #0x10
+ str r0, [sp, #0xc]
+ ldr r2, _0200DB78 ; =0x00000484
+ ldr r0, [r5, #0x0]
+ ldrh r2, [r5, r2]
+ lsl r3, r6, #0x18
+ ldr r0, [r0, #0x0]
+ add r2, #0x15
+ lsl r2, r2, #0x10
+ add r1, r4, #0x0
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ ldr r0, [r5, #0x0]
+ add r1, r4, #0x0
+ ldr r0, [r0, #0x0]
+ bl FUN_02017CD0
+_0200DB72:
+ add sp, #0x24
+ pop {r4-r7, pc}
+ nop
+_0200DB78: .word 0x00000484
+
+ thumb_func_start FUN_0200DB7C
+FUN_0200DB7C: ; 0x0200DB7C
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ ldr r0, _0200DBE4 ; =0x00000488
+ ldrb r2, [r1, r0]
+ lsl r2, r2, #0x1e
+ lsr r2, r2, #0x1e
+ beq _0200DB9E
+ cmp r2, #0x1
+ bne _0200DB96
+ add r0, r1, #0x0
+ mov r1, #0x2
+ bl FUN_0200D980
+_0200DB96:
+ add r0, r4, #0x0
+ bl FUN_0200CAB4
+ pop {r3-r5, pc}
+_0200DB9E:
+ sub r2, r0, #0x2
+ ldrb r2, [r1, r2]
+ add r3, r2, #0x1
+ sub r2, r0, #0x2
+ strb r3, [r1, r2]
+ ldrb r2, [r1, r2]
+ cmp r2, #0x10
+ bne _0200DBE0
+ mov r3, #0x0
+ sub r2, r0, #0x2
+ strb r3, [r1, r2]
+ sub r2, r0, #0x1
+ ldrb r2, [r1, r2]
+ mov r4, #0x7f
+ bic r2, r4
+ sub r4, r0, #0x1
+ ldrb r4, [r1, r4]
+ sub r0, r0, #0x1
+ lsl r4, r4, #0x19
+ lsr r4, r4, #0x19
+ add r5, r4, #0x1
+ mov r4, #0x7
+ and r4, r5
+ lsl r4, r4, #0x18
+ lsr r5, r4, #0x18
+ mov r4, #0x7f
+ and r4, r5
+ orr r2, r4
+ strb r2, [r1, r0]
+ add r0, r1, #0x0
+ add r1, r3, #0x0
+ bl FUN_0200D980
+_0200DBE0:
+ pop {r3-r5, pc}
+ nop
+_0200DBE4: .word 0x00000488
+
+ thumb_func_start FUN_0200DBE8
+FUN_0200DBE8: ; 0x0200DBE8
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, r1, #0x0
+ bl FUN_02016A18
+ add r0, r4, #0x0
+ bl FUN_0200CAB4
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200DBFC
+FUN_0200DBFC: ; 0x0200DBFC
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _0200DC1C ; =FUN_0200DBE8
+ add r1, r4, #0x0
+ mov r2, #0x0
+ bl FUN_0200CA98
+ ldr r1, _0200DC20 ; =0x00000488
+ mov r0, #0x3
+ ldrb r2, [r4, r1]
+ bic r2, r0
+ mov r0, #0x1
+ orr r0, r2
+ strb r0, [r4, r1]
+ pop {r4, pc}
+ nop
+_0200DC1C: .word FUN_0200DBE8
+_0200DC20: .word 0x00000488
+
+ thumb_func_start FUN_0200DC24
+FUN_0200DC24: ; 0x0200DC24
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _0200DC44 ; =FUN_0200DBE8
+ add r1, r4, #0x0
+ mov r2, #0x0
+ bl FUN_0200CA98
+ ldr r1, _0200DC48 ; =0x00000488
+ mov r0, #0x3
+ ldrb r2, [r4, r1]
+ bic r2, r0
+ mov r0, #0x2
+ orr r0, r2
+ strb r0, [r4, r1]
+ pop {r4, pc}
+ nop
+_0200DC44: .word FUN_0200DBE8
+_0200DC48: .word 0x00000488
+
+ thumb_func_start FUN_0200DC4C
+FUN_0200DC4C: ; 0x0200DC4C
+ push {r4-r7, lr}
+ sub sp, #0xc
+ str r2, [sp, #0x4]
+ ldr r5, [sp, #0x30]
+ str r3, [sp, #0x8]
+ add r6, r0, #0x0
+ add r7, r1, #0x0
+ str r5, [sp, #0x0]
+ bl FUN_0200DD70
+ add r4, r0, #0x0
+ add r1, r5, #0x0
+ bl FUN_0200DDAC
+ add r0, r4, #0x0
+ bl FUN_0200DDD8
+ ldr r1, [sp, #0x4]
+ ldr r2, [sp, #0x8]
+ add r0, r4, #0x0
+ bl FUN_0200DE30
+ add r2, sp, #0x10
+ ldrh r1, [r2, #0x18]
+ ldrb r2, [r2, #0x1c]
+ add r0, r4, #0x0
+ bl FUN_0200DE80
+ add r2, sp, #0x10
+ ldrb r1, [r2, #0x10]
+ ldrh r2, [r2, #0x14]
+ add r0, r4, #0x0
+ bl FUN_0200DFD8
+ add r0, r6, #0x0
+ add r1, r7, #0x0
+ bl FUN_02017CD0
+ ldr r0, _0200DCA0 ; =0x0000016F
+ add r0, r4, r0
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+_0200DCA0: .word 0x0000016F
+
+ thumb_func_start FUN_0200DCA4
+FUN_0200DCA4: ; 0x0200DCA4
+ push {r4-r7, lr}
+ sub sp, #0xc
+ str r2, [sp, #0x4]
+ ldr r5, [sp, #0x2c]
+ str r3, [sp, #0x8]
+ add r6, r0, #0x0
+ add r7, r1, #0x0
+ str r5, [sp, #0x0]
+ bl FUN_0200DD70
+ add r4, r0, #0x0
+ add r1, r5, #0x0
+ bl FUN_0200DDAC
+ add r0, r4, #0x0
+ bl FUN_0200DDD8
+ ldr r1, [sp, #0x4]
+ ldr r2, [sp, #0x8]
+ add r0, r4, #0x0
+ bl FUN_0200DE30
+ ldr r1, [sp, #0x28]
+ add r0, r4, #0x0
+ bl FUN_0200DEC0
+ add r2, sp, #0x10
+ ldrb r1, [r2, #0x10]
+ ldrh r2, [r2, #0x14]
+ add r0, r4, #0x0
+ bl FUN_0200DFD8
+ add r0, r6, #0x0
+ add r1, r7, #0x0
+ bl FUN_02017CD0
+ ldr r0, _0200DCF4 ; =0x0000016F
+ add r0, r4, r0
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+_0200DCF4: .word 0x0000016F
+
+ thumb_func_start FUN_0200DCF8
+FUN_0200DCF8: ; 0x0200DCF8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, _0200DD6C ; =0x0000016F
+ add r4, r1, #0x0
+ ldrb r1, [r4, r0]
+ cmp r1, #0x1
+ beq _0200DD10
+ cmp r1, #0x2
+ beq _0200DD2E
+ cmp r1, #0x3
+ beq _0200DD40
+ b _0200DD54
+_0200DD10:
+ add r0, r4, #0x0
+ bl FUN_0200E188
+ mov r0, #0x59
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_0200C3DC
+ add r0, r4, #0x0
+ bl FUN_021D99F8
+ add r0, r5, #0x0
+ bl FUN_0200621C
+ pop {r3-r5, pc}
+_0200DD2E:
+ mov r1, #0x3
+ strb r1, [r4, r0]
+ sub r0, #0xb
+ ldr r0, [r4, r0]
+ mov r1, #0x1
+ ldr r0, [r0, #0x0]
+ bl FUN_02020130
+ b _0200DD54
+_0200DD40:
+ sub r0, #0xb
+ ldr r0, [r4, r0]
+ ldr r0, [r0, #0x0]
+ bl FUN_0202022C
+ cmp r0, #0x6
+ bne _0200DD54
+ ldr r0, _0200DD6C ; =0x0000016F
+ mov r1, #0x0
+ strb r1, [r4, r0]
+_0200DD54:
+ mov r0, #0x59
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x1
+ ldr r0, [r0, #0x0]
+ lsl r1, r1, #0xc
+ bl FUN_020201E4
+ ldr r0, [r4, #0x0]
+ bl FUN_0201FDEC
+ pop {r3-r5, pc}
+ .balign 4
+_0200DD6C: .word 0x0000016F
+
+ thumb_func_start FUN_0200DD70
+FUN_0200DD70: ; 0x0200DD70
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r7, r3, #0x0
+ mov r1, #0x17
+ add r6, r2, #0x0
+ ldr r0, _0200DDA4 ; =FUN_0200DCF8
+ ldr r3, [sp, #0x18]
+ lsl r1, r1, #0x4
+ mov r2, #0x0
+ bl FUN_020061E8
+ bl FUN_0201B6C8
+ ldr r1, _0200DDA8 ; =0x0000016F
+ mov r2, #0x0
+ strb r2, [r0, r1]
+ sub r2, r1, #0x7
+ str r5, [r0, r2]
+ sub r2, r1, #0x3
+ strb r4, [r0, r2]
+ sub r2, r1, #0x2
+ strb r6, [r0, r2]
+ sub r1, r1, #0x1
+ strb r7, [r0, r1]
+ pop {r3-r7, pc}
+ .balign 4
+_0200DDA4: .word FUN_0200DCF8
+_0200DDA8: .word 0x0000016F
+
+ thumb_func_start FUN_0200DDAC
+FUN_0200DDAC: ; 0x0200DDAC
+ push {r4-r6, lr}
+ sub sp, #0x18
+ ldr r5, _0200DDD4 ; =0x020ECEA8
+ add r4, sp, #0x0
+ add r6, r0, #0x0
+ add r3, r1, #0x0
+ add r2, r4, #0x0
+ ldmia r5!, {r0-r1}
+ stmia r4!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r4!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r4!, {r0-r1}
+ add r1, r2, #0x0
+ add r0, r6, #0x0
+ mov r2, #0x1
+ bl FUN_021D959C
+ add sp, #0x18
+ pop {r4-r6, pc}
+ .balign 4
+_0200DDD4: .word 0x020ECEA8
+
+ thumb_func_start FUN_0200DDD8
+FUN_0200DDD8: ; 0x0200DDD8
+ push {r3-r4, lr}
+ sub sp, #0xc
+ mov r1, #0x1
+ str r1, [sp, #0x0]
+ str r1, [sp, #0x4]
+ ldr r1, _0200DE2C ; =0x00015CD5
+ mov r2, #0x31
+ str r1, [sp, #0x8]
+ mov r1, #0x26
+ mov r3, #0x0
+ add r4, r0, #0x0
+ bl FUN_021D967C
+ ldr r0, _0200DE2C ; =0x00015CD5
+ mov r1, #0x26
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ mov r2, #0x2f
+ mov r3, #0x0
+ bl FUN_021D96F4
+ ldr r0, _0200DE2C ; =0x00015CD5
+ mov r1, #0x26
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ mov r2, #0x2e
+ mov r3, #0x0
+ bl FUN_021D9708
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ ldr r0, _0200DE2C ; =0x00015CD5
+ mov r1, #0x26
+ str r0, [sp, #0x4]
+ add r0, r4, #0x0
+ mov r2, #0x30
+ mov r3, #0x0
+ bl FUN_021D971C
+ add sp, #0xc
+ pop {r3-r4, pc}
+ nop
+_0200DE2C: .word 0x00015CD5
+
+ thumb_func_start FUN_0200DE30
+FUN_0200DE30: ; 0x0200DE30
+ push {r4-r7, lr}
+ sub sp, #0x34
+ ldr r5, _0200DE7C ; =0x020ECEC0
+ add r6, r2, #0x0
+ add r4, r0, #0x0
+ add r7, r1, #0x0
+ add r3, sp, #0x0
+ mov r2, #0x6
+_0200DE40:
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ sub r2, r2, #0x1
+ bne _0200DE40
+ ldr r0, [r5, #0x0]
+ str r0, [r3, #0x0]
+ add r0, r7, #0x5
+ lsl r1, r0, #0x3
+ add r0, sp, #0x0
+ strh r1, [r0, #0x0]
+ add r1, r6, #0x5
+ lsl r1, r1, #0x3
+ strh r1, [r0, #0x2]
+ add r0, r4, #0x0
+ add r1, sp, #0x0
+ bl FUN_021D9820
+ mov r1, #0x59
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ ldr r0, [r4, #0x0]
+ bl FUN_0201FDEC
+ mov r0, #0x10
+ mov r1, #0x1
+ bl FUN_0201E74C
+ add sp, #0x34
+ pop {r4-r7, pc}
+ nop
+_0200DE7C: .word 0x020ECEC0
+
+ thumb_func_start FUN_0200DE80
+FUN_0200DE80: ; 0x0200DE80
+ push {r4-r7, lr}
+ sub sp, #0x1c
+ add r5, r0, #0x0
+ ldr r0, _0200DEBC ; =0x00000162
+ add r4, r1, #0x0
+ ldrh r0, [r5, r0]
+ add r6, r2, #0x0
+ bl FUN_02006D98
+ add r7, r0, #0x0
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ add r0, sp, #0xc
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ mov r3, #0x2
+ bl FUN_02068C00
+ add r0, r5, #0x0
+ add r1, sp, #0xc
+ bl FUN_0200DEF4
+ add r0, r7, #0x0
+ bl FUN_020072E8
+ add sp, #0x1c
+ pop {r4-r7, pc}
+ nop
+_0200DEBC: .word 0x00000162
+
+ thumb_func_start FUN_0200DEC0
+FUN_0200DEC0: ; 0x0200DEC0
+ push {r4-r6, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ ldr r0, _0200DEF0 ; =0x00000162
+ add r4, r1, #0x0
+ ldrh r0, [r5, r0]
+ bl FUN_02006D98
+ add r6, r0, #0x0
+ add r0, sp, #0x0
+ add r1, r4, #0x0
+ mov r2, #0x2
+ bl FUN_02068B68
+ add r0, r5, #0x0
+ add r1, sp, #0x0
+ bl FUN_0200DEF4
+ add r0, r6, #0x0
+ bl FUN_020072E8
+ add sp, #0x10
+ pop {r4-r6, pc}
+ nop
+_0200DEF0: .word 0x00000162
+
+ thumb_func_start FUN_0200DEF4
+FUN_0200DEF4: ; 0x0200DEF4
+ push {r3-r7, lr}
+ sub sp, #0x28
+ add r5, r0, #0x0
+ ldr r0, _0200DFC8 ; =0x00000162
+ add r6, r1, #0x0
+ mov r1, #0x19
+ ldrh r0, [r5, r0]
+ lsl r1, r1, #0x8
+ bl FUN_02016998
+ add r2, sp, #0x18
+ ldr r3, _0200DFCC ; =0x020ECE98
+ add r4, r0, #0x0
+ add r7, r2, #0x0
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ str r4, [sp, #0x0]
+ ldr r2, _0200DFC8 ; =0x00000162
+ ldrh r0, [r6, #0x0]
+ ldrh r1, [r6, #0x2]
+ ldrh r2, [r5, r2]
+ add r3, r7, #0x0
+ bl FUN_02012400
+ ldr r3, _0200DFD0 ; =0x020ECE88
+ add r2, sp, #0x8
+ add r7, r2, #0x0
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ mov r0, #0x32
+ lsl r0, r0, #0x6
+ add r0, r4, r0
+ str r0, [sp, #0x0]
+ ldr r2, _0200DFC8 ; =0x00000162
+ ldrh r0, [r6, #0x0]
+ ldrh r1, [r6, #0x2]
+ ldrh r2, [r5, r2]
+ add r3, r7, #0x0
+ bl FUN_02012400
+ mov r0, #0x13
+ lsl r0, r0, #0x4
+ ldr r0, [r5, r0]
+ ldr r1, _0200DFD4 ; =0x00015CD5
+ bl FUN_020094F0
+ bl FUN_02009C5C
+ mov r1, #0x1
+ str r0, [sp, #0x4]
+ blx FUN_020B1A14
+ mov r1, #0x19
+ add r7, r0, #0x0
+ add r0, r4, #0x0
+ lsl r1, r1, #0x8
+ blx DC_FlushRange
+ mov r2, #0x19
+ add r0, r4, #0x0
+ add r1, r7, #0x0
+ lsl r2, r2, #0x8
+ blx FUN_020C92F4
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ ldr r2, _0200DFC8 ; =0x00000162
+ ldrh r0, [r6, #0x0]
+ ldrh r1, [r6, #0x4]
+ ldrh r2, [r5, r2]
+ bl FUN_02012470
+ add r4, r0, #0x0
+ mov r0, #0x4d
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ ldr r1, _0200DFD4 ; =0x00015CD5
+ bl FUN_020094F0
+ ldr r1, [sp, #0x4]
+ bl FUN_02009E54
+ mov r1, #0x1
+ blx FUN_020B19C4
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x20
+ blx DC_FlushRange
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ mov r2, #0x20
+ blx FUN_020C9480
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x28
+ pop {r3-r7, pc}
+ nop
+_0200DFC8: .word 0x00000162
+_0200DFCC: .word 0x020ECE98
+_0200DFD0: .word 0x020ECE88
+_0200DFD4: .word 0x00015CD5
+
+ thumb_func_start FUN_0200DFD8
+FUN_0200DFD8: ; 0x0200DFD8
+ push {r4-r6, lr}
+ sub sp, #0x10
+ ldr r3, _0200E184 ; =0x0000016E
+ add r5, r0, #0x0
+ ldrb r0, [r5, r3]
+ add r4, r1, #0x0
+ sub r1, r3, #0x2
+ sub r0, r0, #0x1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ str r4, [sp, #0xc]
+ sub r0, r3, #0x6
+ sub r3, r3, #0x1
+ ldrb r3, [r5, r3]
+ ldrb r1, [r5, r1]
+ ldr r0, [r5, r0]
+ sub r3, r3, #0x1
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x18
+ add r6, r2, #0x0
+ bl FUN_02018540
+ ldr r3, _0200E184 ; =0x0000016E
+ add r2, r6, #0x1
+ ldrb r0, [r5, r3]
+ sub r1, r3, #0x2
+ lsl r2, r2, #0x10
+ sub r0, r0, #0x1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0xa
+ str r0, [sp, #0x4]
+ mov r0, #0x1
+ str r0, [sp, #0x8]
+ str r4, [sp, #0xc]
+ sub r0, r3, #0x6
+ sub r3, r3, #0x1
+ ldrb r1, [r5, r1]
+ ldrb r3, [r5, r3]
+ ldr r0, [r5, r0]
+ lsr r2, r2, #0x10
+ bl FUN_02018540
+ ldr r3, _0200E184 ; =0x0000016E
+ add r2, r6, #0x2
+ ldrb r0, [r5, r3]
+ lsl r2, r2, #0x10
+ sub r1, r3, #0x2
+ sub r0, r0, #0x1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ str r4, [sp, #0xc]
+ sub r0, r3, #0x6
+ sub r3, r3, #0x1
+ ldrb r3, [r5, r3]
+ ldrb r1, [r5, r1]
+ ldr r0, [r5, r0]
+ add r3, #0xa
+ lsl r3, r3, #0x18
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ ldr r3, _0200E184 ; =0x0000016E
+ add r2, r6, #0x4
+ ldrb r0, [r5, r3]
+ lsl r2, r2, #0x10
+ sub r1, r3, #0x2
+ str r0, [sp, #0x0]
+ mov r0, #0xa
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ str r4, [sp, #0xc]
+ sub r0, r3, #0x6
+ sub r3, r3, #0x1
+ ldrb r1, [r5, r1]
+ ldrb r3, [r5, r3]
+ ldr r0, [r5, r0]
+ lsr r2, r2, #0x10
+ bl FUN_02018540
+ ldr r3, _0200E184 ; =0x0000016E
+ add r2, r6, #0x3
+ ldrb r0, [r5, r3]
+ lsl r2, r2, #0x10
+ sub r1, r3, #0x2
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ mov r0, #0xa
+ str r0, [sp, #0x8]
+ str r4, [sp, #0xc]
+ sub r0, r3, #0x6
+ sub r3, r3, #0x1
+ ldrb r3, [r5, r3]
+ ldrb r1, [r5, r1]
+ ldr r0, [r5, r0]
+ sub r3, r3, #0x1
+ lsl r3, r3, #0x18
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ ldr r3, _0200E184 ; =0x0000016E
+ add r2, r6, #0x5
+ ldrb r0, [r5, r3]
+ lsl r2, r2, #0x10
+ sub r1, r3, #0x2
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ mov r0, #0xa
+ str r0, [sp, #0x8]
+ str r4, [sp, #0xc]
+ sub r0, r3, #0x6
+ sub r3, r3, #0x1
+ ldrb r3, [r5, r3]
+ ldrb r1, [r5, r1]
+ ldr r0, [r5, r0]
+ add r3, #0xa
+ lsl r3, r3, #0x18
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ ldr r3, _0200E184 ; =0x0000016E
+ add r2, r6, #0x6
+ ldrb r0, [r5, r3]
+ lsl r2, r2, #0x10
+ sub r1, r3, #0x2
+ add r0, #0xa
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ str r4, [sp, #0xc]
+ sub r0, r3, #0x6
+ sub r3, r3, #0x1
+ ldrb r3, [r5, r3]
+ ldrb r1, [r5, r1]
+ ldr r0, [r5, r0]
+ sub r3, r3, #0x1
+ lsl r3, r3, #0x18
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ ldr r3, _0200E184 ; =0x0000016E
+ add r2, r6, #0x7
+ ldrb r0, [r5, r3]
+ sub r1, r3, #0x2
+ lsl r2, r2, #0x10
+ add r0, #0xa
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0xa
+ str r0, [sp, #0x4]
+ mov r0, #0x1
+ str r0, [sp, #0x8]
+ str r4, [sp, #0xc]
+ sub r0, r3, #0x6
+ sub r3, r3, #0x1
+ ldrb r1, [r5, r1]
+ ldrb r3, [r5, r3]
+ ldr r0, [r5, r0]
+ lsr r2, r2, #0x10
+ bl FUN_02018540
+ ldr r3, _0200E184 ; =0x0000016E
+ add r6, #0x8
+ ldrb r0, [r5, r3]
+ lsl r2, r6, #0x10
+ sub r1, r3, #0x2
+ add r0, #0xa
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ str r4, [sp, #0xc]
+ sub r0, r3, #0x6
+ sub r3, r3, #0x1
+ ldrb r3, [r5, r3]
+ ldrb r1, [r5, r1]
+ ldr r0, [r5, r0]
+ add r3, #0xa
+ lsl r3, r3, #0x18
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ mov r1, #0x5a
+ lsl r1, r1, #0x2
+ ldr r0, [r5, r1]
+ add r1, r1, #0x4
+ ldrb r1, [r5, r1]
+ bl FUN_0201AC68
+ add sp, #0x10
+ pop {r4-r6, pc}
+ nop
+_0200E184: .word 0x0000016E
+
+ thumb_func_start FUN_0200E188
+FUN_0200E188: ; 0x0200E188
+ push {r4, lr}
+ sub sp, #0x10
+ ldr r3, _0200E1CC ; =0x0000016E
+ add r4, r0, #0x0
+ ldrb r0, [r4, r3]
+ mov r2, #0x0
+ sub r1, r3, #0x2
+ sub r0, r0, #0x1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0xc
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ str r2, [sp, #0xc]
+ sub r0, r3, #0x6
+ sub r3, r3, #0x1
+ ldrb r3, [r4, r3]
+ ldrb r1, [r4, r1]
+ ldr r0, [r4, r0]
+ sub r3, r3, #0x1
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ mov r1, #0x5a
+ lsl r1, r1, #0x2
+ ldr r0, [r4, r1]
+ add r1, r1, #0x4
+ ldrb r1, [r4, r1]
+ bl FUN_0201AC68
+ add sp, #0x10
+ pop {r4, pc}
+ .balign 4
+_0200E1CC: .word 0x0000016E
+
+ thumb_func_start FUN_0200E1D0
+FUN_0200E1D0: ; 0x0200E1D0
+ push {r4-r7, lr}
+ sub sp, #0x1c
+ add r5, r0, #0x0
+ ldr r0, [sp, #0x30]
+ add r4, r1, #0x0
+ add r7, r2, #0x0
+ add r6, r3, #0x0
+ cmp r0, #0x0
+ bne _0200E1E6
+ bl ErrorHandling
+_0200E1E6:
+ ldr r0, [sp, #0x34]
+ cmp r0, #0x0
+ bne _0200E1F0
+ bl ErrorHandling
+_0200E1F0:
+ ldr r0, _0200E2AC ; =0x021C47F4
+ ldrh r0, [r0, #0xc]
+ cmp r0, #0x0
+ beq _0200E1FC
+ bl ErrorHandling
+_0200E1FC:
+ ldr r0, _0200E2B0 ; =0x021C46B4
+ bl FUN_0200E808
+ ldr r1, _0200E2B0 ; =0x021C46B4
+ add r0, r5, #0x0
+ bl FUN_0200E558
+ ldr r0, _0200E2B4 ; =0x021C4728
+ bl FUN_0200E5F4
+ ldr r0, _0200E2B0 ; =0x021C46B4
+ add r1, r6, #0x0
+ bl FUN_0200E75C
+ add r5, r0, #0x0
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ ldr r0, _0200E2B8 ; =0x021C4740
+ ldr r2, [sp, #0x30]
+ str r0, [sp, #0xc]
+ ldr r0, _0200E2B4 ; =0x021C4728
+ ldr r3, [sp, #0x34]
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x38]
+ add r1, r4, #0x0
+ str r0, [sp, #0x14]
+ ldr r0, _0200E2BC ; =0x021C46C8
+ str r5, [sp, #0x18]
+ bl FUN_0200E5C8
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ str r0, [sp, #0x4]
+ mov r0, #0x1
+ str r0, [sp, #0x8]
+ ldr r0, _0200E2B8 ; =0x021C4740
+ ldr r2, [sp, #0x30]
+ str r0, [sp, #0xc]
+ ldr r0, _0200E2B4 ; =0x021C4728
+ ldr r3, [sp, #0x34]
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x38]
+ add r1, r7, #0x0
+ str r0, [sp, #0x14]
+ ldr r0, _0200E2C0 ; =0x021C46F8
+ str r5, [sp, #0x18]
+ bl FUN_0200E5C8
+ ldr r0, _0200E2AC ; =0x021C47F4
+ mov r1, #0x1
+ strh r1, [r0, #0xc]
+ ldr r0, _0200E2C4 ; =0x021C46B8
+ ldr r1, _0200E2BC ; =0x021C46C8
+ bl FUN_0200E528
+ ldr r0, _0200E2C8 ; =0x021C46BC
+ ldr r1, _0200E2C0 ; =0x021C46F8
+ bl FUN_0200E528
+ ldr r0, _0200E2CC ; =0x021C46B4
+ ldr r0, [r0, #0xc]
+ cmp r0, #0x0
+ beq _0200E28E
+ ldr r0, _0200E2B0 ; =0x021C46B4
+ add r0, #0x14
+ bl FUN_0200E7A8
+ ldr r1, _0200E2D0 ; =0x0000014E
+ ldr r0, _0200E2B0 ; =0x021C46B4
+ mov r2, #0x1
+ strb r2, [r0, r1]
+_0200E28E:
+ ldr r0, _0200E2B0 ; =0x021C46B4
+ ldr r0, [r0, #0x10]
+ cmp r0, #0x0
+ beq _0200E2A6
+ ldr r0, _0200E2B0 ; =0x021C46B4
+ add r0, #0x44
+ bl FUN_0200E7A8
+ ldr r1, _0200E2D4 ; =0x0000014F
+ ldr r0, _0200E2B0 ; =0x021C46B4
+ mov r2, #0x1
+ strb r2, [r0, r1]
+_0200E2A6:
+ add sp, #0x1c
+ pop {r4-r7, pc}
+ nop
+_0200E2AC: .word 0x021C47F4
+_0200E2B0: .word 0x021C46B4
+_0200E2B4: .word 0x021C4728
+_0200E2B8: .word 0x021C4740
+_0200E2BC: .word 0x021C46C8
+_0200E2C0: .word 0x021C46F8
+_0200E2C4: .word 0x021C46B8
+_0200E2C8: .word 0x021C46BC
+_0200E2CC: .word 0x021C46B4
+_0200E2D0: .word 0x0000014E
+_0200E2D4: .word 0x0000014F
+
+ thumb_func_start FUN_0200E2D8
+FUN_0200E2D8: ; 0x0200E2D8
+ push {r4, lr}
+ ldr r0, _0200E300 ; =0x021C47F4
+ ldr r4, _0200E304 ; =0x021C46B4
+ ldrh r0, [r0, #0xc]
+ cmp r0, #0x0
+ beq _0200E2FC
+ add r1, r4, #0x0
+ add r2, r4, #0x0
+ add r0, r4, #0x0
+ add r1, #0x14
+ add r2, #0x44
+ bl FUN_0200E4B8
+ cmp r0, #0x1
+ bne _0200E2FC
+ add r0, r4, #0x0
+ bl FUN_0200E460
+_0200E2FC:
+ pop {r4, pc}
+ nop
+_0200E300: .word 0x021C47F4
+_0200E304: .word 0x021C46B4
+
+ thumb_func_start FUN_0200E308
+FUN_0200E308: ; 0x0200E308
+ ldr r0, _0200E318 ; =0x021C47F4
+ ldrh r0, [r0, #0xc]
+ cmp r0, #0x0
+ bne _0200E314
+ mov r0, #0x1
+ bx lr
+_0200E314:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+_0200E318: .word 0x021C47F4
+
+ thumb_func_start FUN_0200E31C
+FUN_0200E31C: ; 0x0200E31C
+ push {r3, lr}
+ ldr r0, _0200E368 ; =0x021C4728
+ mov r1, #0x0
+ bl FUN_0200E6A0
+ ldr r0, _0200E368 ; =0x021C4728
+ mov r1, #0x1
+ bl FUN_0200E6A0
+ ldr r0, _0200E36C ; =0x021C46B4
+ ldr r1, [r0, #0x4]
+ cmp r1, #0x0
+ beq _0200E33A
+ mov r1, #0x2
+ str r1, [r0, #0x20]
+_0200E33A:
+ ldr r0, _0200E36C ; =0x021C46B4
+ ldr r1, [r0, #0x8]
+ cmp r1, #0x0
+ beq _0200E346
+ mov r1, #0x2
+ str r1, [r0, #0x50]
+_0200E346:
+ ldr r0, _0200E370 ; =0x021C46B8
+ ldr r1, _0200E374 ; =0x021C46C8
+ bl FUN_0200E528
+ ldr r0, _0200E378 ; =0x021C46BC
+ ldr r1, _0200E37C ; =0x021C46F8
+ bl FUN_0200E528
+ ldr r0, _0200E380 ; =0x021C47F4
+ mov r1, #0x0
+ strh r1, [r0, #0xc]
+ strb r1, [r0, #0xe]
+ strb r1, [r0, #0xf]
+ ldr r0, _0200E384 ; =0x021C46B4
+ bl FUN_0200E808
+ pop {r3, pc}
+ .balign 4
+_0200E368: .word 0x021C4728
+_0200E36C: .word 0x021C46B4
+_0200E370: .word 0x021C46B8
+_0200E374: .word 0x021C46C8
+_0200E378: .word 0x021C46BC
+_0200E37C: .word 0x021C46F8
+_0200E380: .word 0x021C47F4
+_0200E384: .word 0x021C46B4
+
+ thumb_func_start FUN_0200E388
+FUN_0200E388: ; 0x0200E388
+ ldr r3, _0200E390 ; =FUN_02011480
+ add r1, r0, #0x0
+ mov r0, #0x0
+ bx r3
+ .balign 4
+_0200E390: .word FUN_02011480
+
+ thumb_func_start FUN_0200E394
+FUN_0200E394: ; 0x0200E394
+ ldr r3, _0200E39C ; =FUN_0200E440
+ mov r1, #0x0
+ bx r3
+ nop
+_0200E39C: .word FUN_0200E440
+
+ thumb_func_start FUN_0200E3A0
+FUN_0200E3A0: ; 0x0200E3A0
+ ldr r2, _0200E3B4 ; =0x00007FFF
+ cmp r1, r2
+ bne _0200E3AA
+ mov r1, #0x10
+ b _0200E3AE
+_0200E3AA:
+ mov r1, #0xf
+ mvn r1, r1
+_0200E3AE:
+ ldr r3, _0200E3B8 ; =FUN_0200E440
+ bx r3
+ nop
+_0200E3B4: .word 0x00007FFF
+_0200E3B8: .word FUN_0200E440
+
+ thumb_func_start FUN_0200E3BC
+FUN_0200E3BC: ; 0x0200E3BC
+ push {r0-r3}
+ push {r3-r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0x0
+ add r0, sp, #0x1c
+ bne _0200E3D2
+ mov r1, #0x0
+ mov r2, #0x2
+ blx FUN_020C9550
+ b _0200E3DA
+_0200E3D2:
+ mov r1, #0x0
+ mov r2, #0x2
+ blx FUN_020C94E8
+_0200E3DA:
+ ldr r0, _0200E41C ; =0x021C4740
+ mov r1, #0x1
+ add r2, r4, #0x0
+ bl FUN_02011634
+ mov r2, #0x0
+ ldr r0, _0200E41C ; =0x021C4740
+ mov r1, #0x3f
+ add r3, r2, #0x0
+ str r4, [sp, #0x0]
+ bl FUN_02011650
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ str r1, [sp, #0x4]
+ ldr r0, _0200E41C ; =0x021C4740
+ add r2, r1, #0x0
+ add r3, r1, #0x0
+ str r4, [sp, #0x8]
+ bl FUN_02011698
+ ldr r0, _0200E41C ; =0x021C4740
+ mov r1, #0x20
+ mov r2, #0x0
+ add r3, r4, #0x0
+ bl FUN_02011678
+ add sp, #0xc
+ pop {r3-r4}
+ pop {r3}
+ add sp, #0x10
+ bx r3
+ nop
+_0200E41C: .word 0x021C4740
+
+ thumb_func_start FUN_0200E420
+FUN_0200E420: ; 0x0200E420
+ push {r0-r3}
+ push {r3, lr}
+ add r0, sp, #0x8
+ mov r1, #0x0
+ mov r2, #0x2
+ blx FUN_020C9550
+ add r0, sp, #0x8
+ mov r1, #0x0
+ mov r2, #0x2
+ blx FUN_020C94E8
+ pop {r3}
+ pop {r3}
+ add sp, #0x10
+ bx r3
+
+ thumb_func_start FUN_0200E440
+FUN_0200E440: ; 0x0200E440
+ push {r3, lr}
+ cmp r0, #0x0
+ bne _0200E44E
+ ldr r0, _0200E458 ; =0x0400006C
+ blx FUN_020C5978
+ pop {r3, pc}
+_0200E44E:
+ ldr r0, _0200E45C ; =0x0400106C
+ blx FUN_020C5978
+ pop {r3, pc}
+ nop
+_0200E458: .word 0x0400006C
+_0200E45C: .word 0x0400106C
+
+ thumb_func_start FUN_0200E460
+FUN_0200E460: ; 0x0200E460
+ push {r4, lr}
+ mov r1, #0x53
+ add r4, r0, #0x0
+ mov r2, #0x0
+ lsl r1, r1, #0x2
+ strh r2, [r4, r1]
+ bl FUN_0200E770
+ mov r1, #0x15
+ lsl r1, r1, #0x4
+ strh r0, [r4, r1]
+ ldr r0, [r4, #0xc]
+ cmp r0, #0x0
+ beq _0200E490
+ add r0, r4, #0x0
+ add r0, #0x14
+ bl FUN_0200E7D8
+ ldr r0, [r4, #0x3c]
+ cmp r0, #0x0
+ bne _0200E490
+ ldr r0, _0200E4B4 ; =0x021C47F4
+ mov r1, #0x0
+ strb r1, [r0, #0xe]
+_0200E490:
+ ldr r0, [r4, #0x10]
+ cmp r0, #0x0
+ beq _0200E4AA
+ add r0, r4, #0x0
+ add r0, #0x44
+ bl FUN_0200E7D8
+ ldr r0, [r4, #0x3c]
+ cmp r0, #0x0
+ bne _0200E4AA
+ ldr r0, _0200E4B4 ; =0x021C47F4
+ mov r1, #0x0
+ strb r1, [r0, #0xf]
+_0200E4AA:
+ add r0, r4, #0x0
+ bl FUN_0200E808
+ pop {r4, pc}
+ nop
+_0200E4B4: .word 0x021C47F4
+
+ thumb_func_start FUN_0200E4B8
+FUN_0200E4B8: ; 0x0200E4B8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ add r4, r2, #0x0
+ cmp r0, #0x0
+ beq _0200E4CE
+ cmp r0, #0x1
+ beq _0200E4E0
+ cmp r0, #0x2
+ beq _0200E4FA
+ b _0200E512
+_0200E4CE:
+ add r0, r5, #0x4
+ bl FUN_0200E528
+ add r0, r5, #0x0
+ add r0, #0x8
+ add r1, r4, #0x0
+ bl FUN_0200E528
+ b _0200E512
+_0200E4E0:
+ ldr r0, [r5, #0x4]
+ cmp r0, #0x0
+ beq _0200E4EE
+ add r0, r5, #0x4
+ bl FUN_0200E528
+ b _0200E512
+_0200E4EE:
+ add r0, r5, #0x0
+ add r0, #0x8
+ add r1, r4, #0x0
+ bl FUN_0200E528
+ b _0200E512
+_0200E4FA:
+ ldr r0, [r5, #0x8]
+ cmp r0, #0x0
+ beq _0200E50C
+ add r0, r5, #0x0
+ add r0, #0x8
+ add r1, r4, #0x0
+ bl FUN_0200E528
+ b _0200E512
+_0200E50C:
+ add r0, r5, #0x4
+ bl FUN_0200E528
+_0200E512:
+ ldr r0, [r5, #0x4]
+ cmp r0, #0x0
+ bne _0200E522
+ ldr r0, [r5, #0x8]
+ cmp r0, #0x0
+ bne _0200E522
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0200E522:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200E528
+FUN_0200E528: ; 0x0200E528
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ beq _0200E540
+ add r0, r1, #0x0
+ bl FUN_0200E544
+ cmp r0, #0x1
+ bne _0200E540
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+_0200E540:
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200E544
+FUN_0200E544: ; 0x0200E544
+ push {r3, lr}
+ ldr r1, [r0, #0x0]
+ lsl r2, r1, #0x2
+ ldr r1, _0200E554 ; =0x020ECEF4
+ ldr r1, [r1, r2]
+ blx r1
+ pop {r3, pc}
+ nop
+_0200E554: .word 0x020ECEF4
+
+ thumb_func_start FUN_0200E558
+FUN_0200E558: ; 0x0200E558
+ push {r3, lr}
+ cmp r0, #0x4
+ bhi _0200E5B8
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0200E56A: ; jump table (using 16-bit offset)
+ .short _0200E574 - _0200E56A - 2; case 0
+ .short _0200E582 - _0200E56A - 2; case 1
+ .short _0200E590 - _0200E56A - 2; case 2
+ .short _0200E59E - _0200E56A - 2; case 3
+ .short _0200E5AC - _0200E56A - 2; case 4
+_0200E574:
+ mov r2, #0x1
+ add r0, r1, #0x0
+ mov r1, #0x0
+ add r3, r2, #0x0
+ bl FUN_0200E5BC
+ pop {r3, pc}
+_0200E582:
+ add r0, r1, #0x0
+ mov r1, #0x1
+ add r2, r1, #0x0
+ add r3, r1, #0x0
+ bl FUN_0200E5BC
+ pop {r3, pc}
+_0200E590:
+ mov r2, #0x1
+ add r0, r1, #0x0
+ mov r1, #0x2
+ add r3, r2, #0x0
+ bl FUN_0200E5BC
+ pop {r3, pc}
+_0200E59E:
+ add r0, r1, #0x0
+ mov r1, #0x1
+ add r2, r1, #0x0
+ mov r3, #0x0
+ bl FUN_0200E5BC
+ pop {r3, pc}
+_0200E5AC:
+ add r0, r1, #0x0
+ mov r1, #0x2
+ mov r2, #0x0
+ mov r3, #0x1
+ bl FUN_0200E5BC
+_0200E5B8:
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200E5BC
+FUN_0200E5BC: ; 0x0200E5BC
+ str r1, [r0, #0x0]
+ str r2, [r0, #0x4]
+ str r3, [r0, #0x8]
+ str r2, [r0, #0xc]
+ str r3, [r0, #0x10]
+ bx lr
+
+ thumb_func_start FUN_0200E5C8
+FUN_0200E5C8: ; 0x0200E5C8
+ str r1, [r0, #0x0]
+ str r2, [r0, #0x4]
+ ldr r1, [sp, #0x0]
+ str r3, [r0, #0x8]
+ str r1, [r0, #0xc]
+ ldr r1, [sp, #0x4]
+ str r1, [r0, #0x14]
+ ldr r1, [sp, #0x8]
+ str r1, [r0, #0x10]
+ ldr r1, [sp, #0xc]
+ str r1, [r0, #0x18]
+ ldr r1, [sp, #0x10]
+ str r1, [r0, #0x1c]
+ ldr r1, [sp, #0x14]
+ str r1, [r0, #0x20]
+ ldr r1, _0200E5F0 ; =0xFFFFFFF0
+ add r1, sp
+ ldrh r1, [r1, #0x28]
+ strh r1, [r0, #0x24]
+ bx lr
+ .balign 4
+_0200E5F0: .word 0xFFFFFFF0
+
+ thumb_func_start FUN_0200E5F4
+FUN_0200E5F4: ; 0x0200E5F4
+ mov r3, #0x0
+ ldr r1, _0200E60C ; =FUN_0200E758
+ add r2, r3, #0x0
+_0200E5FA:
+ str r2, [r0, #0x0]
+ str r1, [r0, #0x8]
+ str r2, [r0, #0x10]
+ add r3, r3, #0x1
+ add r0, r0, #0x4
+ cmp r3, #0x2
+ blt _0200E5FA
+ bx lr
+ nop
+_0200E60C: .word FUN_0200E758
+
+ thumb_func_start FUN_0200E610
+FUN_0200E610: ; 0x0200E610
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r4, #0x0
+_0200E616:
+ ldr r0, [r5, #0x0]
+ ldr r1, [r5, #0x8]
+ blx r1
+ add r4, r4, #0x1
+ add r5, r5, #0x4
+ cmp r4, #0x2
+ blt _0200E616
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200E628
+FUN_0200E628: ; 0x0200E628
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ str r0, [sp, #0x8]
+ add r0, #0x10
+ lsl r4, r3, #0x2
+ str r0, [sp, #0x8]
+ ldr r0, [r0, r4]
+ add r7, r2, #0x0
+ str r1, [sp, #0x0]
+ cmp r0, #0x0
+ beq _0200E64A
+ bl ErrorHandling
+_0200E64A:
+ add r6, r5, #0x0
+ add r6, #0x8
+ ldr r0, [r6, r4]
+ cmp r0, #0x0
+ bne _0200E658
+ bl ErrorHandling
+_0200E658:
+ ldr r0, [r5, #0x10]
+ cmp r0, #0x0
+ bne _0200E672
+ ldr r0, [r5, #0x14]
+ cmp r0, #0x0
+ bne _0200E672
+ ldr r0, _0200E698 ; =FUN_0200E610
+ add r1, r5, #0x0
+ bl FUN_02015F34
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x4]
+_0200E672:
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x1
+ beq _0200E67C
+ bl ErrorHandling
+_0200E67C:
+ ldr r0, [sp, #0x0]
+ cmp r7, #0x0
+ str r0, [r5, r4]
+ beq _0200E688
+ str r7, [r6, r4]
+ b _0200E68C
+_0200E688:
+ ldr r0, _0200E69C ; =FUN_0200E758
+ str r0, [r6, r4]
+_0200E68C:
+ ldr r0, [sp, #0x8]
+ mov r1, #0x1
+ str r1, [r0, r4]
+ add sp, #0xc
+ pop {r4-r7, pc}
+ nop
+_0200E698: .word FUN_0200E610
+_0200E69C: .word FUN_0200E758
+
+ thumb_func_start FUN_0200E6A0
+FUN_0200E6A0: ; 0x0200E6A0
+ push {r3-r5, lr}
+ lsl r4, r1, #0x2
+ add r5, r0, #0x0
+ mov r1, #0x0
+ add r0, r5, r4
+ str r1, [r0, #0x10]
+ ldr r0, [r5, #0x10]
+ cmp r0, #0x0
+ bne _0200E6BC
+ ldr r0, [r5, #0x14]
+ cmp r0, #0x0
+ bne _0200E6BC
+ bl FUN_02015F1C
+_0200E6BC:
+ ldr r1, _0200E6C8 ; =FUN_0200E758
+ add r0, r5, r4
+ str r1, [r0, #0x8]
+ mov r0, #0x0
+ str r0, [r5, r4]
+ pop {r3-r5, pc}
+ .balign 4
+_0200E6C8: .word FUN_0200E758
+
+ thumb_func_start FUN_0200E6CC
+FUN_0200E6CC: ; 0x0200E6CC
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ ldr r0, [sp, #0x18]
+ mov r1, #0x10
+ add r6, r2, #0x0
+ add r7, r3, #0x0
+ bl FUN_020169D8
+ add r1, r0, #0x0
+ str r5, [r1, #0x0]
+ str r4, [r1, #0x4]
+ mov r2, #0x1
+ str r6, [r1, #0x8]
+ ldr r0, _0200E6F4 ; =FUN_0200E71C
+ lsl r2, r2, #0xa
+ str r7, [r1, #0xc]
+ bl FUN_0200CA98
+ pop {r3-r7, pc}
+ .balign 4
+_0200E6F4: .word FUN_0200E71C
+
+ thumb_func_start FUN_0200E6F8
+FUN_0200E6F8: ; 0x0200E6F8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r0, r2, #0x0
+ mov r1, #0x8
+ bl FUN_020169D8
+ add r1, r0, #0x0
+ mov r2, #0x1
+ str r5, [r1, #0x0]
+ ldr r0, _0200E718 ; =FUN_0200E73C
+ lsl r2, r2, #0xa
+ str r4, [r1, #0x4]
+ bl FUN_0200CA98
+ pop {r3-r5, pc}
+ .balign 4
+_0200E718: .word FUN_0200E73C
+
+ thumb_func_start FUN_0200E71C
+FUN_0200E71C: ; 0x0200E71C
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ ldr r1, [r4, #0x4]
+ ldr r2, [r4, #0x8]
+ ldr r3, [r4, #0xc]
+ bl FUN_0200E628
+ add r0, r5, #0x0
+ bl FUN_0200CAB4
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0200E73C
+FUN_0200E73C: ; 0x0200E73C
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ ldr r1, [r4, #0x4]
+ bl FUN_0200E6A0
+ add r0, r5, #0x0
+ bl FUN_0200CAB4
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0200E758
+FUN_0200E758: ; 0x0200E758
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0200E75C
+FUN_0200E75C: ; 0x0200E75C
+ ldr r2, _0200E76C ; =0x0000FFFF
+ cmp r1, r2
+ bne _0200E768
+ mov r1, #0x15
+ lsl r1, r1, #0x4
+ ldrh r1, [r0, r1]
+_0200E768:
+ add r0, r1, #0x0
+ bx lr
+ .balign 4
+_0200E76C: .word 0x0000FFFF
+
+ thumb_func_start FUN_0200E770
+FUN_0200E770: ; 0x0200E770
+ ldr r1, [r0, #0xc]
+ cmp r1, #0x1
+ bne _0200E77C
+ add r2, r0, #0x0
+ add r2, #0x14
+ b _0200E780
+_0200E77C:
+ add r2, r0, #0x0
+ add r2, #0x44
+_0200E780:
+ ldr r1, [r2, #0x28]
+ cmp r1, #0x1
+ bne _0200E78A
+ ldrh r0, [r2, #0x24]
+ bx lr
+_0200E78A:
+ mov r1, #0x15
+ lsl r1, r1, #0x4
+ ldrh r0, [r0, r1]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0200E794
+FUN_0200E794: ; 0x0200E794
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r1, #0x10]
+ mov r1, #0x0
+ bl FUN_0200E440
+ add r0, r4, #0x0
+ bl FUN_0200CAB4
+ pop {r4, pc}
+
+ thumb_func_start FUN_0200E7A8
+FUN_0200E7A8: ; 0x0200E7A8
+ push {r3, lr}
+ add r1, r0, #0x0
+ ldr r0, [r1, #0x28]
+ cmp r0, #0x0
+ bne _0200E7CE
+ ldrh r2, [r1, #0x24]
+ ldr r0, _0200E7D0 ; =0x00007FFF
+ cmp r2, r0
+ beq _0200E7BE
+ cmp r2, #0x0
+ bne _0200E7CE
+_0200E7BE:
+ ldr r0, [r1, #0x2c]
+ cmp r0, #0x0
+ bne _0200E7CE
+ mov r2, #0x1
+ ldr r0, _0200E7D4 ; =FUN_0200E794
+ lsl r2, r2, #0xa
+ bl FUN_0200CA98
+_0200E7CE:
+ pop {r3, pc}
+ .balign 4
+_0200E7D0: .word 0x00007FFF
+_0200E7D4: .word FUN_0200E794
+
+ thumb_func_start FUN_0200E7D8
+FUN_0200E7D8: ; 0x0200E7D8
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x28]
+ cmp r0, #0x1
+ bne _0200E800
+ ldrh r1, [r4, #0x24]
+ ldr r0, _0200E804 ; =0x00007FFF
+ cmp r1, r0
+ beq _0200E7EE
+ cmp r1, #0x0
+ bne _0200E800
+_0200E7EE:
+ ldr r0, [r4, #0x2c]
+ cmp r0, #0x0
+ bne _0200E800
+ ldr r0, [r4, #0x10]
+ bl FUN_0200E3A0
+ ldr r0, [r4, #0x10]
+ bl FUN_0200E388
+_0200E800:
+ pop {r4, pc}
+ nop
+_0200E804: .word 0x00007FFF
+
+ thumb_func_start FUN_0200E808
+FUN_0200E808: ; 0x0200E808
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r2, r4, #0x0
+ mov r1, #0x14
+ mov r0, #0x0
+_0200E812:
+ strb r0, [r2, #0x0]
+ add r2, r2, #0x1
+ sub r1, r1, #0x1
+ bne _0200E812
+ add r0, r4, #0x0
+ add r0, #0x14
+ mov r1, #0x0
+ mov r2, #0x30
+ blx FUN_020DF4A4
+ add r0, r4, #0x0
+ add r0, #0x44
+ mov r1, #0x0
+ mov r2, #0x30
+ blx FUN_020DF4A4
+ add r2, r4, #0x0
+ add r2, #0x74
+ mov r1, #0x18
+ mov r0, #0x0
+_0200E83A:
+ strb r0, [r2, #0x0]
+ add r2, r2, #0x1
+ sub r1, r1, #0x1
+ bne _0200E83A
+ add r4, #0x8c
+ add r0, r4, #0x0
+ mov r1, #0x0
+ mov r2, #0xc0
+ blx FUN_020DF4A4
+ pop {r4, pc}
+
+ thumb_func_start FUN_0200E850
+FUN_0200E850: ; 0x0200E850
+ push {r3, lr}
+ ldr r1, [r0, #0xc]
+ cmp r1, #0x0
+ bne _0200E866
+ mov r1, #0x1
+ str r1, [r0, #0x28]
+ str r1, [r0, #0x2c]
+ bl FUN_0200F20C
+ mov r0, #0x0
+ pop {r3, pc}
+_0200E866:
+ bl FUN_0200F2AC
+ pop {r3, pc}
+
+ thumb_func_start FUN_0200E86C
+FUN_0200E86C: ; 0x0200E86C
+ push {r3, lr}
+ ldr r1, [r0, #0xc]
+ cmp r1, #0x0
+ bne _0200E884
+ mov r1, #0x0
+ str r1, [r0, #0x28]
+ mov r2, #0x1
+ str r2, [r0, #0x2c]
+ bl FUN_0200F20C
+ mov r0, #0x0
+ pop {r3, pc}
+_0200E884:
+ bl FUN_0200F2AC
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200E88C
+FUN_0200E88C: ; 0x0200E88C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0xc]
+ cmp r1, #0x0
+ bne _0200E8B4
+ ldr r1, _0200E8BC ; =0x020ECF9F
+ ldr r0, _0200E8C0 ; =0x02105AF8
+ str r1, [r0, #0x30]
+ ldrh r0, [r4, #0x24]
+ bl FUN_0200E420
+ ldr r1, _0200E8C4 ; =0x02105B28
+ add r0, r4, #0x0
+ bl FUN_02010F2C
+ mov r0, #0x1
+ str r0, [r4, #0x28]
+ mov r0, #0x0
+ str r0, [r4, #0x2c]
+ pop {r4, pc}
+_0200E8B4:
+ bl FUN_02010F70
+ pop {r4, pc}
+ nop
+_0200E8BC: .word 0x020ECF9F
+_0200E8C0: .word 0x02105AF8
+_0200E8C4: .word 0x02105B28
+
+ thumb_func_start FUN_0200E8C8
+FUN_0200E8C8: ; 0x0200E8C8
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0xc]
+ cmp r1, #0x0
+ bne _0200E8EE
+ ldr r1, _0200E8F4 ; =0x020ECF9C
+ ldr r0, _0200E8F8 ; =0x02105AF8
+ str r1, [r0, #0x40]
+ ldrh r0, [r4, #0x24]
+ bl FUN_0200E420
+ ldr r1, _0200E8FC ; =0x02105B38
+ add r0, r4, #0x0
+ bl FUN_02010F2C
+ mov r0, #0x0
+ str r0, [r4, #0x28]
+ str r0, [r4, #0x2c]
+ pop {r4, pc}
+_0200E8EE:
+ bl FUN_02010F70
+ pop {r4, pc}
+ .balign 4
+_0200E8F4: .word 0x020ECF9C
+_0200E8F8: .word 0x02105AF8
+_0200E8FC: .word 0x02105B38
+
+ thumb_func_start FUN_0200E900
+FUN_0200E900: ; 0x0200E900
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0xc]
+ cmp r1, #0x0
+ bne _0200E928
+ ldr r1, _0200E930 ; =0x020ECFA5
+ ldr r0, _0200E934 ; =0x02105AF8
+ str r1, [r0, #0x48]
+ ldrh r0, [r4, #0x24]
+ bl FUN_0200E420
+ ldr r1, _0200E938 ; =0x02105B40
+ add r0, r4, #0x0
+ bl FUN_02010F2C
+ mov r0, #0x1
+ str r0, [r4, #0x28]
+ mov r0, #0x0
+ str r0, [r4, #0x2c]
+ pop {r4, pc}
+_0200E928:
+ bl FUN_02010F70
+ pop {r4, pc}
+ nop
+_0200E930: .word 0x020ECFA5
+_0200E934: .word 0x02105AF8
+_0200E938: .word 0x02105B40
+
+ thumb_func_start FUN_0200E93C
+FUN_0200E93C: ; 0x0200E93C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0xc]
+ cmp r1, #0x0
+ bne _0200E962
+ ldr r1, _0200E968 ; =0x020ECFA2
+ ldr r0, _0200E96C ; =0x02105AF8
+ str r1, [r0, #0x38]
+ ldrh r0, [r4, #0x24]
+ bl FUN_0200E420
+ ldr r1, _0200E970 ; =0x02105B30
+ add r0, r4, #0x0
+ bl FUN_02010F2C
+ mov r0, #0x0
+ str r0, [r4, #0x28]
+ str r0, [r4, #0x2c]
+ pop {r4, pc}
+_0200E962:
+ bl FUN_02010F70
+ pop {r4, pc}
+ .balign 4
+_0200E968: .word 0x020ECFA2
+_0200E96C: .word 0x02105AF8
+_0200E970: .word 0x02105B30
+
+ thumb_func_start FUN_0200E974
+FUN_0200E974: ; 0x0200E974
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0xc]
+ cmp r1, #0x0
+ bne _0200E996
+ ldrh r0, [r4, #0x24]
+ bl FUN_0200E420
+ ldr r1, _0200E99C ; =0x020ED0E8
+ add r0, r4, #0x0
+ bl FUN_0200FCC8
+ mov r0, #0x1
+ str r0, [r4, #0x28]
+ mov r0, #0x0
+ str r0, [r4, #0x2c]
+ pop {r4, pc}
+_0200E996:
+ bl FUN_0200FD1C
+ pop {r4, pc}
+ .balign 4
+_0200E99C: .word 0x020ED0E8
+
+ thumb_func_start FUN_0200E9A0
+FUN_0200E9A0: ; 0x0200E9A0
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0xc]
+ cmp r1, #0x0
+ bne _0200E9C0
+ ldrh r0, [r4, #0x24]
+ bl FUN_0200E420
+ ldr r1, _0200E9C8 ; =0x020ED154
+ add r0, r4, #0x0
+ bl FUN_0200FCC8
+ mov r0, #0x0
+ str r0, [r4, #0x28]
+ str r0, [r4, #0x2c]
+ pop {r4, pc}
+_0200E9C0:
+ bl FUN_0200FD1C
+ pop {r4, pc}
+ nop
+_0200E9C8: .word 0x020ED154
+
+ thumb_func_start FUN_0200E9CC
+FUN_0200E9CC: ; 0x0200E9CC
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0xc]
+ cmp r1, #0x0
+ bne _0200E9F4
+ ldr r1, _0200E9FC ; =0x020ECFC0
+ ldr r0, _0200EA00 ; =0x02105AF8
+ str r1, [r0, #0x20]
+ ldrh r0, [r4, #0x24]
+ bl FUN_0200E420
+ ldr r1, _0200EA04 ; =0x02105B18
+ add r0, r4, #0x0
+ bl FUN_02010F2C
+ mov r0, #0x1
+ str r0, [r4, #0x28]
+ mov r0, #0x0
+ str r0, [r4, #0x2c]
+ pop {r4, pc}
+_0200E9F4:
+ bl FUN_02010F70
+ pop {r4, pc}
+ nop
+_0200E9FC: .word 0x020ECFC0
+_0200EA00: .word 0x02105AF8
+_0200EA04: .word 0x02105B18
+
+ thumb_func_start FUN_0200EA08
+FUN_0200EA08: ; 0x0200EA08
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0xc]
+ cmp r1, #0x0
+ bne _0200EA2E
+ ldr r1, _0200EA34 ; =0x020ECFC6
+ ldr r0, _0200EA38 ; =0x02105AF8
+ str r1, [r0, #0x28]
+ ldrh r0, [r4, #0x24]
+ bl FUN_0200E420
+ ldr r1, _0200EA3C ; =0x02105B20
+ add r0, r4, #0x0
+ bl FUN_02010F2C
+ mov r0, #0x0
+ str r0, [r4, #0x28]
+ str r0, [r4, #0x2c]
+ pop {r4, pc}
+_0200EA2E:
+ bl FUN_02010F70
+ pop {r4, pc}
+ .balign 4
+_0200EA34: .word 0x020ECFC6
+_0200EA38: .word 0x02105AF8
+_0200EA3C: .word 0x02105B20
+
+ thumb_func_start FUN_0200EA40
+FUN_0200EA40: ; 0x0200EA40
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0xc]
+ cmp r1, #0x0
+ bne _0200EA68
+ ldr r1, _0200EA70 ; =0x020ECFA8
+ ldr r0, _0200EA74 ; =0x02105AF8
+ str r1, [r0, #0x10]
+ ldrh r0, [r4, #0x24]
+ bl FUN_0200E420
+ ldr r1, _0200EA78 ; =0x02105B08
+ add r0, r4, #0x0
+ bl FUN_02010F2C
+ mov r0, #0x1
+ str r0, [r4, #0x28]
+ mov r0, #0x0
+ str r0, [r4, #0x2c]
+ pop {r4, pc}
+_0200EA68:
+ bl FUN_02010F70
+ pop {r4, pc}
+ nop
+_0200EA70: .word 0x020ECFA8
+_0200EA74: .word 0x02105AF8
+_0200EA78: .word 0x02105B08
+
+ thumb_func_start FUN_0200EA7C
+FUN_0200EA7C: ; 0x0200EA7C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0xc]
+ cmp r1, #0x0
+ bne _0200EAA2
+ ldr r1, _0200EAA8 ; =0x020ECFB4
+ ldr r0, _0200EAAC ; =0x02105AF8
+ str r1, [r0, #0x18]
+ ldrh r0, [r4, #0x24]
+ bl FUN_0200E420
+ ldr r1, _0200EAB0 ; =0x02105B10
+ add r0, r4, #0x0
+ bl FUN_02010F2C
+ mov r0, #0x0
+ str r0, [r4, #0x28]
+ str r0, [r4, #0x2c]
+ pop {r4, pc}
+_0200EAA2:
+ bl FUN_02010F70
+ pop {r4, pc}
+ .balign 4
+_0200EAA8: .word 0x020ECFB4
+_0200EAAC: .word 0x02105AF8
+_0200EAB0: .word 0x02105B10
+
+ thumb_func_start FUN_0200EAB4
+FUN_0200EAB4: ; 0x0200EAB4
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0xc]
+ cmp r1, #0x0
+ bne _0200EAD6
+ ldrh r0, [r4, #0x24]
+ bl FUN_0200E420
+ ldr r1, _0200EADC ; =0x020ED1C0
+ add r0, r4, #0x0
+ bl FUN_0200FCC8
+ mov r0, #0x1
+ str r0, [r4, #0x28]
+ mov r0, #0x0
+ str r0, [r4, #0x2c]
+ pop {r4, pc}
+_0200EAD6:
+ bl FUN_0200FD1C
+ pop {r4, pc}
+ .balign 4
+_0200EADC: .word 0x020ED1C0
+
+ thumb_func_start FUN_0200EAE0
+FUN_0200EAE0: ; 0x0200EAE0
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0xc]
+ cmp r1, #0x0
+ bne _0200EB00
+ ldrh r0, [r4, #0x24]
+ bl FUN_0200E420
+ ldr r1, _0200EB08 ; =0x020ED1E4
+ add r0, r4, #0x0
+ bl FUN_0200FCC8
+ mov r0, #0x0
+ str r0, [r4, #0x28]
+ str r0, [r4, #0x2c]
+ pop {r4, pc}
+_0200EB00:
+ bl FUN_0200FD1C
+ pop {r4, pc}
+ nop
+_0200EB08: .word 0x020ED1E4
+
+ thumb_func_start FUN_0200EB0C
+FUN_0200EB0C: ; 0x0200EB0C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0xc]
+ cmp r1, #0x0
+ bne _0200EB30
+ ldrh r0, [r4, #0x24]
+ bl FUN_0200E420
+ ldr r1, _0200EB38 ; =0x020ED208
+ ldr r2, _0200EB3C ; =0x020ED22C
+ add r0, r4, #0x0
+ bl FUN_0200FD6C
+ mov r0, #0x1
+ str r0, [r4, #0x28]
+ mov r0, #0x0
+ str r0, [r4, #0x2c]
+ pop {r4, pc}
+_0200EB30:
+ bl FUN_0200FDC4
+ pop {r4, pc}
+ nop
+_0200EB38: .word 0x020ED208
+_0200EB3C: .word 0x020ED22C
+
+ thumb_func_start FUN_0200EB40
+FUN_0200EB40: ; 0x0200EB40
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0xc]
+ cmp r1, #0x0
+ bne _0200EB62
+ ldrh r0, [r4, #0x24]
+ bl FUN_0200E420
+ ldr r1, _0200EB68 ; =0x020ED250
+ ldr r2, _0200EB6C ; =0x020ED274
+ add r0, r4, #0x0
+ bl FUN_0200FD6C
+ mov r0, #0x0
+ str r0, [r4, #0x28]
+ str r0, [r4, #0x2c]
+ pop {r4, pc}
+_0200EB62:
+ bl FUN_0200FDC4
+ pop {r4, pc}
+ .balign 4
+_0200EB68: .word 0x020ED250
+_0200EB6C: .word 0x020ED274
+
+ thumb_func_start FUN_0200EB70
+FUN_0200EB70: ; 0x0200EB70
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0xc]
+ cmp r1, #0x0
+ bne _0200EB92
+ ldrh r0, [r4, #0x24]
+ bl FUN_0200E420
+ ldr r1, _0200EB98 ; =0x020ED090
+ add r0, r4, #0x0
+ bl FUN_0200FF18
+ mov r0, #0x1
+ str r0, [r4, #0x28]
+ mov r0, #0x0
+ str r0, [r4, #0x2c]
+ pop {r4, pc}
+_0200EB92:
+ bl FUN_0200FF50
+ pop {r4, pc}
+ .balign 4
+_0200EB98: .word 0x020ED090
+
+ thumb_func_start FUN_0200EB9C
+FUN_0200EB9C: ; 0x0200EB9C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0xc]
+ cmp r1, #0x0
+ bne _0200EBBC
+ ldrh r0, [r4, #0x24]
+ bl FUN_0200E420
+ ldr r1, _0200EBC4 ; =0x020ED040
+ add r0, r4, #0x0
+ bl FUN_0200FF18
+ mov r0, #0x0
+ str r0, [r4, #0x28]
+ str r0, [r4, #0x2c]
+ pop {r4, pc}
+_0200EBBC:
+ bl FUN_0200FF50
+ pop {r4, pc}
+ nop
+_0200EBC4: .word 0x020ED040
+
+ thumb_func_start FUN_0200EBC8
+FUN_0200EBC8: ; 0x0200EBC8
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0xc]
+ cmp r1, #0x0
+ bne _0200EBEA
+ ldrh r0, [r4, #0x24]
+ bl FUN_0200E420
+ ldr r1, _0200EBF0 ; =0x020ED050
+ add r0, r4, #0x0
+ bl FUN_0200FF18
+ mov r0, #0x1
+ str r0, [r4, #0x28]
+ mov r0, #0x0
+ str r0, [r4, #0x2c]
+ pop {r4, pc}
+_0200EBEA:
+ bl FUN_0200FF50
+ pop {r4, pc}
+ .balign 4
+_0200EBF0: .word 0x020ED050
+
+ thumb_func_start FUN_0200EBF4
+FUN_0200EBF4: ; 0x0200EBF4
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0xc]
+ cmp r1, #0x0
+ bne _0200EC14
+ ldrh r0, [r4, #0x24]
+ bl FUN_0200E420
+ ldr r1, _0200EC1C ; =0x020ED060
+ add r0, r4, #0x0
+ bl FUN_0200FF18
+ mov r0, #0x0
+ str r0, [r4, #0x28]
+ str r0, [r4, #0x2c]
+ pop {r4, pc}
+_0200EC14:
+ bl FUN_0200FF50
+ pop {r4, pc}
+ nop
+_0200EC1C: .word 0x020ED060
+
+ thumb_func_start FUN_0200EC20
+FUN_0200EC20: ; 0x0200EC20
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0xc]
+ cmp r1, #0x0
+ bne _0200EC42
+ ldrh r0, [r4, #0x24]
+ bl FUN_0200E420
+ ldr r1, _0200EC48 ; =0x020ECFE0
+ add r0, r4, #0x0
+ bl FUN_020101EC
+ mov r0, #0x1
+ str r0, [r4, #0x28]
+ mov r0, #0x0
+ str r0, [r4, #0x2c]
+ pop {r4, pc}
+_0200EC42:
+ bl FUN_02010224
+ pop {r4, pc}
+ .balign 4
+_0200EC48: .word 0x020ECFE0
+
+ thumb_func_start FUN_0200EC4C
+FUN_0200EC4C: ; 0x0200EC4C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0xc]
+ cmp r1, #0x0
+ bne _0200EC6C
+ ldrh r0, [r4, #0x24]
+ bl FUN_0200E420
+ ldr r1, _0200EC74 ; =0x020ECFEC
+ add r0, r4, #0x0
+ bl FUN_020101EC
+ mov r0, #0x0
+ str r0, [r4, #0x28]
+ str r0, [r4, #0x2c]
+ pop {r4, pc}
+_0200EC6C:
+ bl FUN_02010224
+ pop {r4, pc}
+ nop
+_0200EC74: .word 0x020ECFEC
+
+ thumb_func_start FUN_0200EC78
+FUN_0200EC78: ; 0x0200EC78
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0xc]
+ cmp r1, #0x0
+ bne _0200EC9A
+ ldrh r0, [r4, #0x24]
+ bl FUN_0200E420
+ ldr r1, _0200ECA0 ; =0x020ED0A0
+ add r0, r4, #0x0
+ bl FUN_0200FCC8
+ mov r0, #0x1
+ str r0, [r4, #0x28]
+ mov r0, #0x0
+ str r0, [r4, #0x2c]
+ pop {r4, pc}
+_0200EC9A:
+ bl FUN_0200FD1C
+ pop {r4, pc}
+ .balign 4
+_0200ECA0: .word 0x020ED0A0
+
+ thumb_func_start FUN_0200ECA4
+FUN_0200ECA4: ; 0x0200ECA4
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0xc]
+ cmp r1, #0x0
+ bne _0200ECC4
+ ldrh r0, [r4, #0x24]
+ bl FUN_0200E420
+ ldr r1, _0200ECCC ; =0x020ED0C4
+ add r0, r4, #0x0
+ bl FUN_0200FCC8
+ mov r0, #0x0
+ str r0, [r4, #0x28]
+ str r0, [r4, #0x2c]
+ pop {r4, pc}
+_0200ECC4:
+ bl FUN_0200FD1C
+ pop {r4, pc}
+ nop
+_0200ECCC: .word 0x020ED0C4
+
+ thumb_func_start FUN_0200ECD0
+FUN_0200ECD0: ; 0x0200ECD0
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0xc]
+ cmp r1, #0x0
+ bne _0200ECF2
+ ldrh r0, [r4, #0x24]
+ bl FUN_0200E420
+ ldr r1, _0200ECF8 ; =0x020ED10C
+ add r0, r4, #0x0
+ bl FUN_0200FCC8
+ mov r0, #0x1
+ str r0, [r4, #0x28]
+ mov r0, #0x0
+ str r0, [r4, #0x2c]
+ pop {r4, pc}
+_0200ECF2:
+ bl FUN_0200FD1C
+ pop {r4, pc}
+ .balign 4
+_0200ECF8: .word 0x020ED10C
+
+ thumb_func_start FUN_0200ECFC
+FUN_0200ECFC: ; 0x0200ECFC
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0xc]
+ cmp r1, #0x0
+ bne _0200ED1C
+ ldrh r0, [r4, #0x24]
+ bl FUN_0200E420
+ ldr r1, _0200ED24 ; =0x020ED178
+ add r0, r4, #0x0
+ bl FUN_0200FCC8
+ mov r0, #0x0
+ str r0, [r4, #0x28]
+ str r0, [r4, #0x2c]
+ pop {r4, pc}
+_0200ED1C:
+ bl FUN_0200FD1C
+ pop {r4, pc}
+ nop
+_0200ED24: .word 0x020ED178
+
+ thumb_func_start FUN_0200ED28
+FUN_0200ED28: ; 0x0200ED28
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0xc]
+ cmp r1, #0x0
+ bne _0200ED4A
+ ldrh r0, [r4, #0x24]
+ bl FUN_0200E420
+ ldr r1, _0200ED50 ; =0x020ED004
+ add r0, r4, #0x0
+ bl FUN_020103F0
+ mov r0, #0x1
+ str r0, [r4, #0x28]
+ mov r0, #0x0
+ str r0, [r4, #0x2c]
+ pop {r4, pc}
+_0200ED4A:
+ bl FUN_02010428
+ pop {r4, pc}
+ .balign 4
+_0200ED50: .word 0x020ED004
+
+ thumb_func_start FUN_0200ED54
+FUN_0200ED54: ; 0x0200ED54
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0xc]
+ cmp r1, #0x0
+ bne _0200ED74
+ ldrh r0, [r4, #0x24]
+ bl FUN_0200E420
+ ldr r1, _0200ED7C ; =0x020ED010
+ add r0, r4, #0x0
+ bl FUN_020103F0
+ mov r0, #0x0
+ str r0, [r4, #0x28]
+ str r0, [r4, #0x2c]
+ pop {r4, pc}
+_0200ED74:
+ bl FUN_02010428
+ pop {r4, pc}
+ nop
+_0200ED7C: .word 0x020ED010
+
+ thumb_func_start FUN_0200ED80
+FUN_0200ED80: ; 0x0200ED80
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0x0
+ ldr r1, [r4, #0xc]
+ cmp r1, #0x0
+ bne _0200EDC4
+ ldr r0, _0200EDCC ; =0x020ED298
+ mov r1, #0x4
+ str r0, [sp, #0x0]
+ ldr r0, _0200EDD0 ; =0x020ED2D8
+ str r0, [sp, #0x4]
+ add r0, sp, #0x0
+ strb r1, [r0, #0x8]
+ mov r1, #0x0
+ strb r1, [r0, #0x9]
+ mov r1, #0x3f
+ strb r1, [r0, #0xa]
+ mov r1, #0x20
+ strb r1, [r0, #0xb]
+ mov r1, #0x1
+ strb r1, [r0, #0xc]
+ ldrh r0, [r4, #0x24]
+ bl FUN_0200E420
+ add r0, r4, #0x0
+ add r1, sp, #0x0
+ bl FUN_02010688
+ mov r0, #0x1
+ str r0, [r4, #0x28]
+ mov r0, #0x0
+ add sp, #0x10
+ str r0, [r4, #0x2c]
+ pop {r4, pc}
+_0200EDC4:
+ bl FUN_020106C0
+ add sp, #0x10
+ pop {r4, pc}
+ .balign 4
+_0200EDCC: .word 0x020ED298
+_0200EDD0: .word 0x020ED2D8
+
+ thumb_func_start FUN_0200EDD4
+FUN_0200EDD4: ; 0x0200EDD4
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0x0
+ ldr r1, [r4, #0xc]
+ cmp r1, #0x0
+ bne _0200EE14
+ ldr r0, _0200EE1C ; =0x020ED318
+ mov r1, #0x4
+ str r0, [sp, #0x0]
+ ldr r0, _0200EE20 ; =0x020ED358
+ mov r2, #0x0
+ str r0, [sp, #0x4]
+ add r0, sp, #0x0
+ strb r1, [r0, #0x8]
+ strb r2, [r0, #0x9]
+ mov r1, #0x3f
+ strb r1, [r0, #0xa]
+ mov r1, #0x20
+ strb r1, [r0, #0xb]
+ strb r2, [r0, #0xc]
+ ldrh r0, [r4, #0x24]
+ bl FUN_0200E420
+ add r0, r4, #0x0
+ add r1, sp, #0x0
+ bl FUN_02010688
+ mov r0, #0x0
+ str r0, [r4, #0x28]
+ add sp, #0x10
+ str r0, [r4, #0x2c]
+ pop {r4, pc}
+_0200EE14:
+ bl FUN_020106C0
+ add sp, #0x10
+ pop {r4, pc}
+ .balign 4
+_0200EE1C: .word 0x020ED318
+_0200EE20: .word 0x020ED358
+
+ thumb_func_start FUN_0200EE24
+FUN_0200EE24: ; 0x0200EE24
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0xc]
+ cmp r1, #0x0
+ bne _0200EE4C
+ ldr r1, _0200EE54 ; =0x020ECFD5
+ ldr r0, _0200EE58 ; =0x02105AF8
+ str r1, [r0, #0x0]
+ ldrh r0, [r4, #0x24]
+ bl FUN_0200E420
+ ldr r1, _0200EE5C ; =0x02105AF8
+ add r0, r4, #0x0
+ bl FUN_02010F2C
+ mov r0, #0x1
+ str r0, [r4, #0x28]
+ mov r0, #0x0
+ str r0, [r4, #0x2c]
+ pop {r4, pc}
+_0200EE4C:
+ bl FUN_02010F70
+ pop {r4, pc}
+ nop
+_0200EE54: .word 0x020ECFD5
+_0200EE58: .word 0x02105AF8
+_0200EE5C: .word 0x02105AF8
+
+ thumb_func_start FUN_0200EE60
+FUN_0200EE60: ; 0x0200EE60
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0xc]
+ cmp r1, #0x0
+ bne _0200EE86
+ ldr r1, _0200EE8C ; =0x020ECFCC
+ ldr r0, _0200EE90 ; =0x02105AF8
+ str r1, [r0, #0x8]
+ ldrh r0, [r4, #0x24]
+ bl FUN_0200E420
+ ldr r1, _0200EE94 ; =0x02105B00
+ add r0, r4, #0x0
+ bl FUN_02010F2C
+ mov r0, #0x0
+ str r0, [r4, #0x28]
+ str r0, [r4, #0x2c]
+ pop {r4, pc}
+_0200EE86:
+ bl FUN_02010F70
+ pop {r4, pc}
+ .balign 4
+_0200EE8C: .word 0x020ECFCC
+_0200EE90: .word 0x02105AF8
+_0200EE94: .word 0x02105B00
+
+ thumb_func_start FUN_0200EE98
+FUN_0200EE98: ; 0x0200EE98
+ push {r3-r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0x0
+ ldr r1, [r4, #0xc]
+ cmp r1, #0x0
+ bne _0200EECA
+ ldr r3, _0200EED4 ; =0x020ECFF8
+ add r2, sp, #0x0
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldr r0, [r3, #0x0]
+ str r0, [r2, #0x0]
+ ldrh r0, [r4, #0x24]
+ bl FUN_0200E420
+ add r0, r4, #0x0
+ add r1, sp, #0x0
+ bl FUN_02010948
+ mov r0, #0x1
+ str r0, [r4, #0x28]
+ mov r0, #0x0
+ add sp, #0xc
+ str r0, [r4, #0x2c]
+ pop {r3-r4, pc}
+_0200EECA:
+ bl FUN_02010988
+ add sp, #0xc
+ pop {r3-r4, pc}
+ nop
+_0200EED4: .word 0x020ECFF8
+
+ thumb_func_start FUN_0200EED8
+FUN_0200EED8: ; 0x0200EED8
+ push {r3-r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0x0
+ ldr r1, [r4, #0xc]
+ cmp r1, #0x0
+ bne _0200EF08
+ ldr r3, _0200EF10 ; =0x020ED034
+ add r2, sp, #0x0
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldr r0, [r3, #0x0]
+ str r0, [r2, #0x0]
+ ldrh r0, [r4, #0x24]
+ bl FUN_0200E420
+ add r0, r4, #0x0
+ add r1, sp, #0x0
+ bl FUN_02010948
+ mov r0, #0x0
+ str r0, [r4, #0x28]
+ add sp, #0xc
+ str r0, [r4, #0x2c]
+ pop {r3-r4, pc}
+_0200EF08:
+ bl FUN_02010988
+ add sp, #0xc
+ pop {r3-r4, pc}
+ .balign 4
+_0200EF10: .word 0x020ED034
+
+ thumb_func_start FUN_0200EF14
+FUN_0200EF14: ; 0x0200EF14
+ push {r3-r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0x0
+ ldr r1, [r4, #0xc]
+ cmp r1, #0x0
+ bne _0200EF46
+ ldr r3, _0200EF50 ; =0x020ED01C
+ add r2, sp, #0x0
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldr r0, [r3, #0x0]
+ str r0, [r2, #0x0]
+ ldrh r0, [r4, #0x24]
+ bl FUN_0200E420
+ add r0, r4, #0x0
+ add r1, sp, #0x0
+ bl FUN_02010C7C
+ mov r0, #0x1
+ str r0, [r4, #0x28]
+ mov r0, #0x0
+ add sp, #0xc
+ str r0, [r4, #0x2c]
+ pop {r3-r4, pc}
+_0200EF46:
+ bl FUN_02010CBC
+ add sp, #0xc
+ pop {r3-r4, pc}
+ nop
+_0200EF50: .word 0x020ED01C
+
+ thumb_func_start FUN_0200EF54
+FUN_0200EF54: ; 0x0200EF54
+ push {r3-r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0x0
+ ldr r1, [r4, #0xc]
+ cmp r1, #0x0
+ bne _0200EF84
+ ldr r3, _0200EF8C ; =0x020ED028
+ add r2, sp, #0x0
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldr r0, [r3, #0x0]
+ str r0, [r2, #0x0]
+ ldrh r0, [r4, #0x24]
+ bl FUN_0200E420
+ add r0, r4, #0x0
+ add r1, sp, #0x0
+ bl FUN_02010C7C
+ mov r0, #0x0
+ str r0, [r4, #0x28]
+ add sp, #0xc
+ str r0, [r4, #0x2c]
+ pop {r3-r4, pc}
+_0200EF84:
+ bl FUN_02010CBC
+ add sp, #0xc
+ pop {r3-r4, pc}
+ .balign 4
+_0200EF8C: .word 0x020ED028
+
+ thumb_func_start FUN_0200EF90
+FUN_0200EF90: ; 0x0200EF90
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0xc]
+ cmp r1, #0x0
+ bne _0200EFB2
+ ldrh r0, [r4, #0x24]
+ bl FUN_0200E420
+ ldr r1, _0200EFB8 ; =0x020ED080
+ add r0, r4, #0x0
+ bl FUN_0200FF18
+ mov r0, #0x1
+ str r0, [r4, #0x28]
+ mov r0, #0x0
+ str r0, [r4, #0x2c]
+ pop {r4, pc}
+_0200EFB2:
+ bl FUN_0200FF50
+ pop {r4, pc}
+ .balign 4
+_0200EFB8: .word 0x020ED080
+
+ thumb_func_start FUN_0200EFBC
+FUN_0200EFBC: ; 0x0200EFBC
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0xc]
+ cmp r1, #0x0
+ bne _0200EFDC
+ ldrh r0, [r4, #0x24]
+ bl FUN_0200E420
+ ldr r1, _0200EFE4 ; =0x020ED070
+ add r0, r4, #0x0
+ bl FUN_0200FF18
+ mov r0, #0x0
+ str r0, [r4, #0x28]
+ str r0, [r4, #0x2c]
+ pop {r4, pc}
+_0200EFDC:
+ bl FUN_0200FF50
+ pop {r4, pc}
+ nop
+_0200EFE4: .word 0x020ED070
+
+ thumb_func_start FUN_0200EFE8
+FUN_0200EFE8: ; 0x0200EFE8
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0xc]
+ cmp r1, #0x0
+ bne _0200F00A
+ ldrh r0, [r4, #0x24]
+ bl FUN_0200E420
+ ldr r1, _0200F010 ; =0x020ED130
+ add r0, r4, #0x0
+ bl FUN_0200FCC8
+ mov r0, #0x1
+ str r0, [r4, #0x28]
+ mov r0, #0x0
+ str r0, [r4, #0x2c]
+ pop {r4, pc}
+_0200F00A:
+ bl FUN_0200FD1C
+ pop {r4, pc}
+ .balign 4
+_0200F010: .word 0x020ED130
+
+ thumb_func_start FUN_0200F014
+FUN_0200F014: ; 0x0200F014
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0xc]
+ cmp r1, #0x0
+ bne _0200F034
+ ldrh r0, [r4, #0x24]
+ bl FUN_0200E420
+ ldr r1, _0200F03C ; =0x020ED19C
+ add r0, r4, #0x0
+ bl FUN_0200FCC8
+ mov r0, #0x0
+ str r0, [r4, #0x28]
+ str r0, [r4, #0x2c]
+ pop {r4, pc}
+_0200F034:
+ bl FUN_0200FD1C
+ pop {r4, pc}
+ nop
+_0200F03C: .word 0x020ED19C
+
+ thumb_func_start FUN_0200F040
+FUN_0200F040: ; 0x0200F040
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0xc]
+ cmp r1, #0x0
+ bne _0200F068
+ ldr r1, _0200F070 ; =0x020ECFAE
+ ldr r0, _0200F074 ; =0x02105AF8
+ str r1, [r0, #0x74]
+ ldrh r0, [r4, #0x24]
+ bl FUN_0200E420
+ ldr r1, _0200F078 ; =0x02105B48
+ add r0, r4, #0x0
+ bl FUN_020111AC
+ mov r0, #0x1
+ str r0, [r4, #0x28]
+ mov r0, #0x0
+ str r0, [r4, #0x2c]
+ pop {r4, pc}
+_0200F068:
+ bl FUN_02011214
+ pop {r4, pc}
+ nop
+_0200F070: .word 0x020ECFAE
+_0200F074: .word 0x02105AF8
+_0200F078: .word 0x02105B48
+
+ thumb_func_start FUN_0200F07C
+FUN_0200F07C: ; 0x0200F07C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0xc]
+ cmp r1, #0x0
+ bne _0200F0A2
+ ldr r1, _0200F0A8 ; =0x020ECFBA
+ ldr r0, _0200F0AC ; =0x02105B78
+ str r1, [r0, #0x24]
+ ldrh r0, [r4, #0x24]
+ bl FUN_0200E420
+ ldr r1, _0200F0B0 ; =0x02105B78
+ add r0, r4, #0x0
+ bl FUN_020111AC
+ mov r0, #0x0
+ str r0, [r4, #0x28]
+ str r0, [r4, #0x2c]
+ pop {r4, pc}
+_0200F0A2:
+ bl FUN_02011214
+ pop {r4, pc}
+ .balign 4
+_0200F0A8: .word 0x020ECFBA
+_0200F0AC: .word 0x02105B78
+_0200F0B0: .word 0x02105B78
+
+ thumb_func_start FUN_0200F0B4
+FUN_0200F0B4: ; 0x0200F0B4
+ asr r0, r0, #0x4
+ lsl r1, r0, #0x1
+ lsl r0, r1, #0x1
+ ldr r2, _0200F0C8 ; =0x020FFA38
+ add r1, r1, #0x1
+ lsl r1, r1, #0x1
+ ldr r3, _0200F0CC ; =FUN_020C50B8
+ ldrsh r0, [r2, r0]
+ ldrsh r1, [r2, r1]
+ bx r3
+ .balign 4
+_0200F0C8: .word 0x020FFA38
+_0200F0CC: .word FUN_020C50B8
+
+ thumb_func_start FUN_0200F0D0
+FUN_0200F0D0: ; 0x0200F0D0
+ push {r4, lr}
+ add r4, r1, #0x0
+ bl FUN_0200F0B4
+ lsl r2, r4, #0xc
+ asr r1, r0, #0x1f
+ asr r3, r2, #0x1f
+ blx _ll_mul
+ mov r2, #0x2
+ mov r3, #0x0
+ lsl r2, r2, #0xa
+ add r2, r0, r2
+ adc r1, r3
+ lsl r0, r1, #0x14
+ lsr r1, r2, #0xc
+ orr r1, r0
+ asr r0, r1, #0xc
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200F0F8
+FUN_0200F0F8: ; 0x0200F0F8
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r1, #0x0
+ add r7, r2, #0x0
+ add r6, r3, #0x0
+ bl FUN_0200F0B4
+ cmp r6, r7
+ bge _0200F142
+ lsl r1, r6, #0x2
+ str r0, [sp, #0x0]
+ asr r0, r0, #0x1f
+ lsl r4, r6, #0xc
+ add r5, r5, r1
+ str r0, [sp, #0x4]
+_0200F116:
+ ldr r0, [sp, #0x0]
+ ldr r1, [sp, #0x4]
+ asr r3, r4, #0x1f
+ add r2, r4, #0x0
+ blx _ll_mul
+ mov r2, #0x2
+ lsl r2, r2, #0xa
+ add r0, r0, r2
+ ldr r2, _0200F148 ; =0x00000000
+ adc r1, r2
+ lsl r1, r1, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r1
+ asr r0, r0, #0xc
+ stmia r5!, {r0}
+ mov r0, #0x1
+ lsl r0, r0, #0xc
+ add r6, r6, #0x1
+ add r4, r4, r0
+ cmp r6, r7
+ blt _0200F116
+_0200F142:
+ add sp, #0x8
+ pop {r3-r7, pc}
+ nop
+_0200F148: .word 0x00000000
+
+ thumb_func_start FUN_0200F14C
+FUN_0200F14C: ; 0x0200F14C
+ push {r4, lr}
+ add r4, r1, #0x0
+ bl FUN_0200F0B4
+ add r1, r0, #0x0
+ lsr r0, r4, #0x1f
+ add r0, r4, r0
+ asr r0, r0, #0x1
+ lsl r0, r0, #0xc
+ blx FUN_020C50B8
+ pop {r4, pc}
+
+ thumb_func_start FUN_0200F164
+FUN_0200F164: ; 0x0200F164
+ ldr r3, _0200F170 ; =_s32_div_f
+ sub r0, r1, r0
+ lsl r0, r0, #0x7
+ add r1, r2, #0x0
+ bx r3
+ nop
+_0200F170: .word _s32_div_f
+
+ thumb_func_start FUN_0200F174
+FUN_0200F174: ; 0x0200F174
+ add r0, r0, r1
+ bpl _0200F17A
+ mov r0, #0x0
+_0200F17A:
+ cmp r0, #0xff
+ ble _0200F180
+ mov r0, #0xff
+_0200F180:
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0200F184
+FUN_0200F184: ; 0x0200F184
+ ldr r3, [r0, #0x0]
+ ldr r2, [r1, #0x0]
+ add r2, r3, r2
+ str r2, [r0, #0x0]
+ ldr r3, [r0, #0x4]
+ ldr r2, [r1, #0x4]
+ add r2, r3, r2
+ str r2, [r0, #0x4]
+ ldr r3, [r0, #0x8]
+ ldr r2, [r1, #0x8]
+ add r2, r3, r2
+ str r2, [r0, #0x8]
+ ldr r2, [r0, #0xc]
+ ldr r1, [r1, #0xc]
+ add r1, r2, r1
+ str r1, [r0, #0xc]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0200F1A8
+FUN_0200F1A8: ; 0x0200F1A8
+ push {r3-r7, lr}
+ add r7, r1, #0x0
+ ldr r1, [sp, #0x1c]
+ add r5, r3, #0x0
+ str r1, [sp, #0x1c]
+ ldr r1, [r5, #0x0]
+ ldr r4, [sp, #0x18]
+ lsl r1, r1, #0x7
+ str r1, [r0, #0x0]
+ ldr r1, [r5, #0x4]
+ add r6, r2, #0x0
+ lsl r1, r1, #0x7
+ str r1, [r0, #0x4]
+ ldr r1, [r5, #0x8]
+ add r2, r4, #0x0
+ lsl r1, r1, #0x7
+ str r1, [r0, #0x8]
+ ldr r1, [r5, #0xc]
+ lsl r1, r1, #0x7
+ str r1, [r0, #0xc]
+ ldmia r2!, {r0-r1}
+ stmia r7!, {r0-r1}
+ ldmia r2!, {r0-r1}
+ stmia r7!, {r0-r1}
+ ldr r0, [r5, #0x0]
+ ldr r1, [r4, #0x0]
+ ldr r2, [sp, #0x1c]
+ bl FUN_0200F164
+ str r0, [r6, #0x0]
+ ldr r0, [r5, #0x4]
+ ldr r1, [r4, #0x4]
+ ldr r2, [sp, #0x1c]
+ bl FUN_0200F164
+ str r0, [r6, #0x4]
+ ldr r0, [r5, #0x8]
+ ldr r1, [r4, #0x8]
+ ldr r2, [sp, #0x1c]
+ bl FUN_0200F164
+ str r0, [r6, #0x8]
+ ldr r0, [r5, #0xc]
+ ldr r1, [r4, #0xc]
+ ldr r2, [sp, #0x1c]
+ bl FUN_0200F164
+ str r0, [r6, #0xc]
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200F20C
+FUN_0200F20C: ; 0x0200F20C
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x20]
+ add r6, r1, #0x0
+ mov r1, #0x1c
+ bl FUN_02016998
+ str r0, [r5, #0x14]
+ mov r2, #0x1c
+ mov r1, #0x0
+_0200F220:
+ strb r1, [r0, #0x0]
+ add r0, r0, #0x1
+ sub r2, r2, #0x1
+ bne _0200F220
+ ldr r4, [r5, #0x14]
+ cmp r6, #0x0
+ ldrh r1, [r5, #0x24]
+ ldr r0, _0200F2A8 ; =0x00007FFF
+ bne _0200F254
+ cmp r1, r0
+ bne _0200F23C
+ mov r7, #0x10
+ mov r6, #0x0
+ b _0200F274
+_0200F23C:
+ cmp r1, #0x0
+ bne _0200F248
+ mov r7, #0xf
+ mvn r7, r7
+ mov r6, #0x0
+ b _0200F274
+_0200F248:
+ mov r7, #0xf
+ mvn r7, r7
+ mov r6, #0x0
+ bl ErrorHandling
+ b _0200F274
+_0200F254:
+ cmp r1, r0
+ bne _0200F25E
+ mov r7, #0x0
+ mov r6, #0x10
+ b _0200F274
+_0200F25E:
+ cmp r1, #0x0
+ bne _0200F26A
+ mov r7, #0x0
+ add r6, r7, #0x0
+ sub r6, #0x10
+ b _0200F274
+_0200F26A:
+ mov r7, #0x0
+ add r6, r7, #0x0
+ sub r6, #0x10
+ bl ErrorHandling
+_0200F274:
+ ldr r0, [r5, #0x10]
+ add r1, r7, #0x0
+ bl FUN_0200E440
+ ldr r0, [r5, #0x4]
+ add r1, r6, #0x0
+ str r0, [r4, #0x0]
+ ldr r0, [r5, #0x8]
+ str r0, [r4, #0x4]
+ mov r0, #0x0
+ str r0, [r4, #0x8]
+ lsl r0, r7, #0x7
+ str r0, [r4, #0xc]
+ lsl r0, r6, #0x7
+ str r0, [r4, #0x10]
+ ldr r2, [r5, #0x4]
+ add r0, r7, #0x0
+ bl FUN_0200F164
+ str r0, [r4, #0x14]
+ ldr r0, [r5, #0x10]
+ str r0, [r4, #0x18]
+ ldr r0, [r5, #0xc]
+ add r0, r0, #0x1
+ str r0, [r5, #0xc]
+ pop {r3-r7, pc}
+ .balign 4
+_0200F2A8: .word 0x00007FFF
+
+ thumb_func_start FUN_0200F2AC
+FUN_0200F2AC: ; 0x0200F2AC
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r1, [r5, #0xc]
+ mov r4, #0x0
+ ldr r0, [r5, #0x14]
+ cmp r1, #0x1
+ beq _0200F2C4
+ cmp r1, #0x2
+ beq _0200F2D4
+ cmp r1, #0x3
+ beq _0200F2E6
+ b _0200F2E8
+_0200F2C4:
+ bl FUN_0200F2EC
+ cmp r0, #0x1
+ bne _0200F2E8
+ ldr r0, [r5, #0xc]
+ add r0, r0, #0x1
+ str r0, [r5, #0xc]
+ b _0200F2E8
+_0200F2D4:
+ bl FUN_02016A18
+ add r0, r4, #0x0
+ str r0, [r5, #0x14]
+ ldr r0, [r5, #0xc]
+ mov r4, #0x1
+ add r0, r0, #0x1
+ str r0, [r5, #0xc]
+ b _0200F2E8
+_0200F2E6:
+ mov r4, #0x1
+_0200F2E8:
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0200F2EC
+FUN_0200F2EC: ; 0x0200F2EC
+ push {r4, lr}
+ add r1, r0, #0x0
+ ldr r0, [r1, #0x8]
+ mov r4, #0x0
+ add r2, r0, #0x1
+ str r2, [r1, #0x8]
+ ldr r0, [r1, #0x4]
+ cmp r2, r0
+ blt _0200F32A
+ str r4, [r1, #0x8]
+ ldr r0, [r1, #0x0]
+ sub r0, r0, #0x1
+ cmp r0, #0x0
+ ble _0200F314
+ str r0, [r1, #0x0]
+ ldr r2, [r1, #0xc]
+ ldr r0, [r1, #0x14]
+ add r0, r2, r0
+ str r0, [r1, #0xc]
+ b _0200F31A
+_0200F314:
+ ldr r0, [r1, #0x10]
+ mov r4, #0x1
+ str r0, [r1, #0xc]
+_0200F31A:
+ ldr r2, [r1, #0xc]
+ ldr r0, [r1, #0x18]
+ asr r1, r2, #0x6
+ lsr r1, r1, #0x19
+ add r1, r2, r1
+ asr r1, r1, #0x7
+ bl FUN_0200E440
+_0200F32A:
+ add r0, r4, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200F330
+FUN_0200F330: ; 0x0200F330
+ push {r4-r6, lr}
+ add r4, r0, #0x0
+ bne _0200F33A
+ bl ErrorHandling
+_0200F33A:
+ ldr r0, _0200F54C ; =0x04000006
+ ldrh r0, [r0, #0x0]
+ cmp r0, #0xc0
+ bge _0200F3E0
+ add r5, r0, #0x1
+ cmp r5, #0xbf
+ ble _0200F34A
+ sub r5, #0xc0
+_0200F34A:
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x1
+ bne _0200F3FA
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_0200F5D8
+ ldr r3, [r4, #0x8]
+ lsl r5, r5, #0x1
+ mov r4, #0x6
+ add r1, r0, r5
+ lsl r4, r4, #0x6
+ ldrsh r2, [r1, r4]
+ lsl r4, r4, #0x2
+ ldrsh r1, [r0, r5]
+ ldr r0, [r0, r4]
+ cmp r0, #0x0
+ ldr r0, _0200F550 ; =0x04000004
+ bne _0200F3B4
+ cmp r3, #0x0
+ bne _0200F394
+ ldrh r4, [r0, #0x0]
+ mov r3, #0x2
+ tst r3, r4
+ beq _0200F3E0
+ lsl r3, r1, #0x8
+ mov r1, #0xff
+ lsl r1, r1, #0x8
+ and r3, r1
+ lsl r1, r2, #0x18
+ lsr r1, r1, #0x18
+ orr r1, r3
+ strh r1, [r0, #0x3c]
+ mov r1, #0xc0
+ add r0, #0x40
+ strh r1, [r0, #0x0]
+ pop {r4-r6, pc}
+_0200F394:
+ ldrh r3, [r0, #0x0]
+ mov r0, #0x2
+ tst r0, r3
+ beq _0200F3E0
+ mov r0, #0xff
+ lsl r1, r1, #0x8
+ lsl r0, r0, #0x8
+ and r1, r0
+ lsl r0, r2, #0x18
+ lsr r0, r0, #0x18
+ orr r0, r1
+ ldr r1, _0200F554 ; =0x04001040
+ strh r0, [r1, #0x0]
+ mov r0, #0xc0
+ strh r0, [r1, #0x4]
+ pop {r4-r6, pc}
+_0200F3B4:
+ cmp r3, #0x0
+ bne _0200F3D8
+ ldrh r4, [r0, #0x0]
+ mov r3, #0x2
+ tst r3, r4
+ beq _0200F3E0
+ lsl r3, r1, #0x8
+ mov r1, #0xff
+ lsl r1, r1, #0x8
+ and r3, r1
+ lsl r1, r2, #0x18
+ lsr r1, r1, #0x18
+ orr r1, r3
+ strh r1, [r0, #0x3e]
+ mov r1, #0xc0
+ add r0, #0x42
+ strh r1, [r0, #0x0]
+ pop {r4-r6, pc}
+_0200F3D8:
+ ldrh r3, [r0, #0x0]
+ mov r0, #0x2
+ tst r0, r3
+ bne _0200F3E2
+_0200F3E0:
+ b _0200F548
+_0200F3E2:
+ mov r0, #0xff
+ lsl r1, r1, #0x8
+ lsl r0, r0, #0x8
+ and r1, r0
+ lsl r0, r2, #0x18
+ lsr r0, r0, #0x18
+ orr r0, r1
+ ldr r1, _0200F558 ; =0x04001042
+ strh r0, [r1, #0x0]
+ mov r0, #0xc0
+ strh r0, [r1, #0x4]
+ pop {r4-r6, pc}
+_0200F3FA:
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_0200F5D8
+ add r3, r0, #0x0
+ lsl r5, r5, #0x1
+ mov r6, #0x6
+ add r1, r3, r5
+ lsl r6, r6, #0x6
+ ldrsh r2, [r1, r6]
+ lsl r6, r6, #0x2
+ ldrsh r1, [r3, r5]
+ ldr r3, [r3, r6]
+ ldr r0, [r4, #0x8]
+ cmp r3, #0x0
+ bne _0200F460
+ cmp r0, #0x0
+ ldr r0, _0200F550 ; =0x04000004
+ bne _0200F440
+ ldrh r6, [r0, #0x0]
+ mov r3, #0x2
+ tst r3, r6
+ beq _0200F4A4
+ lsl r3, r1, #0x8
+ mov r1, #0xff
+ lsl r1, r1, #0x8
+ and r3, r1
+ lsl r1, r2, #0x18
+ lsr r1, r1, #0x18
+ orr r1, r3
+ strh r1, [r0, #0x3c]
+ mov r1, #0xc0
+ add r0, #0x40
+ strh r1, [r0, #0x0]
+ b _0200F4A4
+_0200F440:
+ ldrh r3, [r0, #0x0]
+ mov r0, #0x2
+ tst r0, r3
+ beq _0200F4A4
+ mov r0, #0xff
+ lsl r1, r1, #0x8
+ lsl r0, r0, #0x8
+ and r1, r0
+ lsl r0, r2, #0x18
+ lsr r0, r0, #0x18
+ orr r0, r1
+ ldr r1, _0200F554 ; =0x04001040
+ strh r0, [r1, #0x0]
+ mov r0, #0xc0
+ strh r0, [r1, #0x4]
+ b _0200F4A4
+_0200F460:
+ cmp r0, #0x0
+ ldr r0, _0200F550 ; =0x04000004
+ bne _0200F486
+ ldrh r6, [r0, #0x0]
+ mov r3, #0x2
+ tst r3, r6
+ beq _0200F4A4
+ lsl r3, r1, #0x8
+ mov r1, #0xff
+ lsl r1, r1, #0x8
+ and r3, r1
+ lsl r1, r2, #0x18
+ lsr r1, r1, #0x18
+ orr r1, r3
+ strh r1, [r0, #0x3e]
+ mov r1, #0xc0
+ add r0, #0x42
+ strh r1, [r0, #0x0]
+ b _0200F4A4
+_0200F486:
+ ldrh r3, [r0, #0x0]
+ mov r0, #0x2
+ tst r0, r3
+ beq _0200F4A4
+ mov r0, #0xff
+ lsl r1, r1, #0x8
+ lsl r0, r0, #0x8
+ and r1, r0
+ lsl r0, r2, #0x18
+ lsr r0, r0, #0x18
+ orr r0, r1
+ ldr r1, _0200F558 ; =0x04001042
+ strh r0, [r1, #0x0]
+ mov r0, #0xc0
+ strh r0, [r1, #0x4]
+_0200F4A4:
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_0200F5D8
+ ldr r3, [r4, #0x8]
+ mov r4, #0x6
+ add r1, r0, r5
+ lsl r4, r4, #0x6
+ ldrsh r2, [r1, r4]
+ lsl r4, r4, #0x2
+ ldrsh r1, [r0, r5]
+ ldr r0, [r0, r4]
+ cmp r0, #0x0
+ ldr r0, _0200F550 ; =0x04000004
+ bne _0200F506
+ cmp r3, #0x0
+ bne _0200F4E6
+ ldrh r4, [r0, #0x0]
+ mov r3, #0x2
+ tst r3, r4
+ beq _0200F548
+ lsl r3, r1, #0x8
+ mov r1, #0xff
+ lsl r1, r1, #0x8
+ and r3, r1
+ lsl r1, r2, #0x18
+ lsr r1, r1, #0x18
+ orr r1, r3
+ strh r1, [r0, #0x3c]
+ mov r1, #0xc0
+ add r0, #0x40
+ strh r1, [r0, #0x0]
+ pop {r4-r6, pc}
+_0200F4E6:
+ ldrh r3, [r0, #0x0]
+ mov r0, #0x2
+ tst r0, r3
+ beq _0200F548
+ mov r0, #0xff
+ lsl r1, r1, #0x8
+ lsl r0, r0, #0x8
+ and r1, r0
+ lsl r0, r2, #0x18
+ lsr r0, r0, #0x18
+ orr r0, r1
+ ldr r1, _0200F554 ; =0x04001040
+ strh r0, [r1, #0x0]
+ mov r0, #0xc0
+ strh r0, [r1, #0x4]
+ pop {r4-r6, pc}
+_0200F506:
+ cmp r3, #0x0
+ bne _0200F52A
+ ldrh r4, [r0, #0x0]
+ mov r3, #0x2
+ tst r3, r4
+ beq _0200F548
+ lsl r3, r1, #0x8
+ mov r1, #0xff
+ lsl r1, r1, #0x8
+ and r3, r1
+ lsl r1, r2, #0x18
+ lsr r1, r1, #0x18
+ orr r1, r3
+ strh r1, [r0, #0x3e]
+ mov r1, #0xc0
+ add r0, #0x42
+ strh r1, [r0, #0x0]
+ pop {r4-r6, pc}
+_0200F52A:
+ ldrh r3, [r0, #0x0]
+ mov r0, #0x2
+ tst r0, r3
+ beq _0200F548
+ mov r0, #0xff
+ lsl r1, r1, #0x8
+ lsl r0, r0, #0x8
+ and r1, r0
+ lsl r0, r2, #0x18
+ lsr r0, r0, #0x18
+ orr r0, r1
+ ldr r1, _0200F558 ; =0x04001042
+ strh r0, [r1, #0x0]
+ mov r0, #0xc0
+ strh r0, [r1, #0x4]
+_0200F548:
+ pop {r4-r6, pc}
+ nop
+_0200F54C: .word 0x04000006
+_0200F550: .word 0x04000004
+_0200F554: .word 0x04001040
+_0200F558: .word 0x04001042
+
+ thumb_func_start FUN_0200F55C
+FUN_0200F55C: ; 0x0200F55C
+ push {r4-r6, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ cmp r4, #0x0
+ beq _0200F572
+ cmp r4, #0x1
+ beq _0200F572
+ cmp r4, #0x2
+ beq _0200F58C
+ pop {r4-r6, pc}
+_0200F572:
+ ldr r1, _0200F5B8 ; =0x00000604
+ add r0, r3, #0x0
+ bl FUN_02016998
+ str r0, [r5, #0x0]
+ mov r0, #0x1
+ str r0, [r5, #0x4]
+ str r6, [r5, #0x8]
+ mov r0, #0x6
+ ldr r1, [r5, #0x0]
+ lsl r0, r0, #0x8
+ str r4, [r1, r0]
+ pop {r4-r6, pc}
+_0200F58C:
+ ldr r1, _0200F5BC ; =0x00000C08
+ add r0, r3, #0x0
+ bl FUN_02016998
+ str r0, [r5, #0x0]
+ mov r0, #0x2
+ str r0, [r5, #0x4]
+ mov r0, #0x6
+ mov r3, #0x0
+ lsl r0, r0, #0x8
+ str r6, [r5, #0x8]
+ add r4, r3, #0x0
+ add r1, r0, #0x4
+_0200F5A6:
+ ldr r2, [r5, #0x0]
+ add r2, r2, r4
+ str r3, [r2, r0]
+ add r3, r3, #0x1
+ add r4, r4, r1
+ cmp r3, #0x2
+ blt _0200F5A6
+ pop {r4-r6, pc}
+ nop
+_0200F5B8: .word 0x00000604
+_0200F5BC: .word 0x00000C08
+
+ thumb_func_start FUN_0200F5C0
+FUN_0200F5C0: ; 0x0200F5C0
+ ldr r3, _0200F5C4 ; =FUN_0200F5C8
+ bx r3
+ .balign 4
+_0200F5C4: .word FUN_0200F5C8
+
+ thumb_func_start FUN_0200F5C8
+FUN_0200F5C8: ; 0x0200F5C8
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_02016A18
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+ pop {r4, pc}
+
+ thumb_func_start FUN_0200F5D8
+FUN_0200F5D8: ; 0x0200F5D8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x4]
+ add r4, r1, #0x0
+ cmp r0, r4
+ bgt _0200F5E8
+ bl ErrorHandling
+_0200F5E8:
+ ldr r0, _0200F5F4 ; =0x00000604
+ ldr r1, [r5, #0x0]
+ mul r0, r4
+ add r0, r1, r0
+ pop {r3-r5, pc}
+ nop
+_0200F5F4: .word 0x00000604
+
+ thumb_func_start FUN_0200F5F8
+FUN_0200F5F8: ; 0x0200F5F8
+ push {r3-r7, lr}
+ add r5, r1, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [r5, #0x4]
+ mov r4, #0x0
+ cmp r0, #0x0
+ ble _0200F624
+ mov r7, #0x3
+ lsl r7, r7, #0x8
+ add r6, r7, #0x0
+_0200F60C:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0200F5D8
+ add r1, r0, r6
+ add r2, r7, #0x0
+ blx FUN_020DF438
+ ldr r0, [r5, #0x4]
+ add r4, r4, #0x1
+ cmp r4, r0
+ blt _0200F60C
+_0200F624:
+ ldr r0, [sp, #0x0]
+ bl FUN_0200CAB4
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0200F62C
+FUN_0200F62C: ; 0x0200F62C
+ push {r4-r5, lr}
+ sub sp, #0xc
+ add r5, r1, #0x0
+ add r4, r2, #0x0
+ cmp r0, #0x0
+ bne _0200F644
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_02011634
+ add sp, #0xc
+ pop {r4-r5, pc}
+_0200F644:
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_02011634
+ mov r2, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x3f
+ add r3, r2, #0x0
+ str r4, [sp, #0x0]
+ bl FUN_02011650
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ str r1, [sp, #0x4]
+ add r0, r5, #0x0
+ add r2, r1, #0x0
+ add r3, r1, #0x0
+ str r4, [sp, #0x8]
+ bl FUN_02011698
+ add r0, r5, #0x0
+ mov r1, #0x20
+ mov r2, #0x0
+ add r3, r4, #0x0
+ bl FUN_02011678
+ add sp, #0xc
+ pop {r4-r5, pc}
+
+ thumb_func_start FUN_0200F67C
+FUN_0200F67C: ; 0x0200F67C
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r7, r2, #0x0
+ ldr r2, [sp, #0x34]
+ add r6, r0, #0x0
+ add r5, r3, #0x0
+ ldr r4, [sp, #0x20]
+ cmp r2, #0x0
+ bne _0200F6B8
+ add r0, r1, #0x0
+ mov r1, #0x0
+ add r2, r5, #0x0
+ add r3, r4, #0x0
+ bl FUN_020114AC
+ add r0, r7, #0x0
+ mov r1, #0x0
+ add r2, r4, #0x0
+ bl FUN_02011534
+ str r5, [sp, #0x0]
+ ldr r0, [sp, #0x24]
+ ldr r1, [sp, #0x28]
+ ldr r2, [sp, #0x2c]
+ ldr r3, [sp, #0x30]
+ str r4, [sp, #0x4]
+ bl FUN_02011574
+ add sp, #0xc
+ pop {r4-r7, pc}
+_0200F6B8:
+ mov r2, #0x0
+ str r4, [sp, #0x0]
+ bl FUN_02011650
+ add r0, r6, #0x0
+ add r1, r7, #0x0
+ mov r2, #0x0
+ add r3, r4, #0x0
+ bl FUN_02011678
+ ldr r0, [sp, #0x30]
+ ldr r1, [sp, #0x24]
+ str r0, [sp, #0x0]
+ str r5, [sp, #0x4]
+ ldr r2, [sp, #0x28]
+ ldr r3, [sp, #0x2c]
+ add r0, r6, #0x0
+ str r4, [sp, #0x8]
+ bl FUN_02011698
+ add sp, #0xc
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_0200F6E4
+FUN_0200F6E4: ; 0x0200F6E4
+ push {r3, lr}
+ cmp r3, #0x0
+ bne _0200F6F4
+ add r0, r1, #0x0
+ add r1, r2, #0x0
+ bl FUN_02011480
+ pop {r3, pc}
+_0200F6F4:
+ bl FUN_02011634
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200F6FC
+FUN_0200F6FC: ; 0x0200F6FC
+ push {r3-r7, lr}
+ add r4, r2, #0x0
+ mov r2, #0xc3
+ add r6, r1, #0x0
+ mov r1, #0x0
+ lsl r2, r2, #0x2
+ add r5, r0, #0x0
+ add r7, r3, #0x0
+ blx FUN_020DF4A4
+ cmp r4, #0x1
+ bne _0200F726
+ mov r0, #0x6
+ lsl r0, r0, #0x6
+ str r7, [r5, r0]
+ mov r0, #0xc2
+ lsl r0, r0, #0x2
+ strb r4, [r5, r0]
+ add r0, r0, #0x1
+ strb r6, [r5, r0]
+ pop {r3-r7, pc}
+_0200F726:
+ mov r0, #0x6
+ lsl r0, r0, #0x6
+ str r7, [r5, r0]
+ mov r0, #0xc1
+ ldr r1, [sp, #0x18]
+ lsl r0, r0, #0x2
+ str r1, [r5, r0]
+ add r1, r0, #0x4
+ strb r4, [r5, r1]
+ add r0, r0, #0x5
+ strb r6, [r5, r0]
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200F740
+FUN_0200F740: ; 0x0200F740
+ ldr r3, _0200F74C ; =FUN_0200CA98
+ add r1, r0, #0x0
+ ldr r0, _0200F750 ; =FUN_0200F780
+ ldr r2, _0200F754 ; =0x000003FF
+ bx r3
+ nop
+_0200F74C: .word FUN_0200CA98
+_0200F750: .word FUN_0200F780
+_0200F754: .word 0x000003FF
+
+ thumb_func_start FUN_0200F758
+FUN_0200F758: ; 0x0200F758
+ push {r3, lr}
+ ldr r3, _0200F768 ; =0x00000309
+ str r2, [sp, #0x0]
+ ldrb r3, [r1, r3]
+ ldr r2, _0200F76C ; =FUN_0200F7AC
+ bl FUN_0200E6CC
+ pop {r3, pc}
+ .balign 4
+_0200F768: .word 0x00000309
+_0200F76C: .word FUN_0200F7AC
+
+ thumb_func_start FUN_0200F770
+FUN_0200F770: ; 0x0200F770
+ ldr r3, _0200F778 ; =0x00000309
+ ldrb r1, [r1, r3]
+ ldr r3, _0200F77C ; =FUN_0200E6F8
+ bx r3
+ .balign 4
+_0200F778: .word 0x00000309
+_0200F77C: .word FUN_0200E6F8
+
+ thumb_func_start FUN_0200F780
+FUN_0200F780: ; 0x0200F780
+ push {r3-r7, lr}
+ mov r7, #0xc0
+ add r6, r7, #0x0
+ str r0, [sp, #0x0]
+ add r5, r1, #0x0
+ mov r4, #0x0
+ add r6, #0xc4
+_0200F78E:
+ add r0, r5, #0x0
+ add r0, #0xc0
+ add r1, r5, #0x0
+ add r2, r7, #0x0
+ blx FUN_020DF438
+ add r4, r4, #0x1
+ add r5, r5, r6
+ cmp r4, #0x2
+ blt _0200F78E
+ ldr r0, [sp, #0x0]
+ bl FUN_0200CAB4
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200F7AC
+FUN_0200F7AC: ; 0x0200F7AC
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bne _0200F7B6
+ bl ErrorHandling
+_0200F7B6:
+ ldr r0, _0200FAC0 ; =0x04000006
+ ldrh r0, [r0, #0x0]
+ cmp r0, #0xc0
+ bge _0200F838
+ add r0, r0, #0x1
+ cmp r0, #0xbf
+ ble _0200F7C6
+ sub r0, #0xc0
+_0200F7C6:
+ mov r2, #0xc2
+ lsl r2, r2, #0x2
+ ldrb r1, [r4, r2]
+ cmp r1, #0x1
+ beq _0200F7D2
+ b _0200F96C
+_0200F7D2:
+ add r0, r4, r0
+ add r0, #0xc0
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _0200F8A2
+ add r0, r2, #0x1
+ ldrb r0, [r4, r0]
+ cmp r0, #0x0
+ ldr r0, _0200FAC4 ; =0x04000004
+ bne _0200F802
+ ldrh r2, [r0, #0x0]
+ mov r1, #0x2
+ tst r1, r2
+ beq _0200F81C
+ add r0, #0x46
+ ldrh r2, [r0, #0x0]
+ mov r1, #0x3f
+ bic r2, r1
+ mov r1, #0x3f
+ orr r2, r1
+ mov r1, #0x20
+ orr r1, r2
+ strh r1, [r0, #0x0]
+ b _0200F81C
+_0200F802:
+ ldrh r1, [r0, #0x0]
+ mov r0, #0x2
+ tst r0, r1
+ beq _0200F81C
+ ldr r1, _0200FAC8 ; =0x0400104A
+ mov r0, #0x3f
+ ldrh r2, [r1, #0x0]
+ bic r2, r0
+ mov r0, #0x3f
+ orr r2, r0
+ mov r0, #0x20
+ orr r0, r2
+ strh r0, [r1, #0x0]
+_0200F81C:
+ ldr r0, _0200FACC ; =0x00000309
+ ldrb r1, [r4, r0]
+ mov r0, #0x6
+ lsl r0, r0, #0x6
+ ldr r0, [r4, r0]
+ cmp r0, #0x0
+ bne _0200F868
+ cmp r1, #0x0
+ bne _0200F84C
+ ldr r2, _0200FAC4 ; =0x04000004
+ mov r0, #0x2
+ ldrh r1, [r2, #0x0]
+ tst r0, r1
+ bne _0200F83A
+_0200F838:
+ b _0200FCB0
+_0200F83A:
+ add r2, #0x44
+ ldrh r1, [r2, #0x0]
+ mov r0, #0x3f
+ bic r1, r0
+ mov r0, #0x20
+ orr r1, r0
+ orr r0, r1
+ strh r0, [r2, #0x0]
+ pop {r3-r5, pc}
+_0200F84C:
+ ldr r0, _0200FAC4 ; =0x04000004
+ ldrh r1, [r0, #0x0]
+ mov r0, #0x2
+ tst r0, r1
+ beq _0200F954
+ ldr r1, _0200FAD0 ; =0x04001048
+ mov r0, #0x3f
+ ldrh r2, [r1, #0x0]
+ bic r2, r0
+ mov r0, #0x20
+ orr r2, r0
+ orr r0, r2
+ strh r0, [r1, #0x0]
+ pop {r3-r5, pc}
+_0200F868:
+ cmp r1, #0x0
+ ldr r0, _0200FAC4 ; =0x04000004
+ bne _0200F888
+ ldrh r1, [r0, #0x0]
+ mov r2, #0x2
+ tst r1, r2
+ beq _0200F954
+ add r0, #0x44
+ ldrh r3, [r0, #0x0]
+ ldr r1, _0200FAD4 ; =0xFFFFC0FF
+ and r3, r1
+ lsl r1, r2, #0xc
+ orr r3, r1
+ orr r1, r3
+ strh r1, [r0, #0x0]
+ pop {r3-r5, pc}
+_0200F888:
+ ldrh r1, [r0, #0x0]
+ mov r0, #0x2
+ tst r0, r1
+ beq _0200F954
+ ldr r2, _0200FAD0 ; =0x04001048
+ ldr r0, _0200FAD4 ; =0xFFFFC0FF
+ ldrh r1, [r2, #0x0]
+ and r1, r0
+ lsr r0, r2, #0xd
+ orr r1, r0
+ orr r0, r1
+ strh r0, [r2, #0x0]
+ pop {r3-r5, pc}
+_0200F8A2:
+ add r0, r2, #0x1
+ ldrb r0, [r4, r0]
+ cmp r0, #0x0
+ ldr r0, _0200FAC4 ; =0x04000004
+ bne _0200F8C6
+ ldrh r2, [r0, #0x0]
+ mov r1, #0x2
+ tst r1, r2
+ beq _0200F8DE
+ add r0, #0x46
+ ldrh r2, [r0, #0x0]
+ mov r1, #0x3f
+ bic r2, r1
+ mov r1, #0x20
+ orr r2, r1
+ orr r1, r2
+ strh r1, [r0, #0x0]
+ b _0200F8DE
+_0200F8C6:
+ ldrh r1, [r0, #0x0]
+ mov r0, #0x2
+ tst r0, r1
+ beq _0200F8DE
+ ldr r1, _0200FAC8 ; =0x0400104A
+ mov r0, #0x3f
+ ldrh r2, [r1, #0x0]
+ bic r2, r0
+ mov r0, #0x20
+ orr r2, r0
+ orr r0, r2
+ strh r0, [r1, #0x0]
+_0200F8DE:
+ ldr r0, _0200FACC ; =0x00000309
+ ldrb r1, [r4, r0]
+ mov r0, #0x6
+ lsl r0, r0, #0x6
+ ldr r0, [r4, r0]
+ cmp r0, #0x0
+ ldr r0, _0200FAC4 ; =0x04000004
+ bne _0200F92A
+ cmp r1, #0x0
+ bne _0200F90E
+ ldrh r2, [r0, #0x0]
+ mov r1, #0x2
+ tst r1, r2
+ beq _0200F954
+ add r0, #0x44
+ ldrh r2, [r0, #0x0]
+ mov r1, #0x3f
+ bic r2, r1
+ mov r1, #0x3f
+ orr r2, r1
+ mov r1, #0x20
+ orr r1, r2
+ strh r1, [r0, #0x0]
+ pop {r3-r5, pc}
+_0200F90E:
+ ldrh r1, [r0, #0x0]
+ mov r0, #0x2
+ tst r0, r1
+ beq _0200F954
+ ldr r1, _0200FAD0 ; =0x04001048
+ mov r0, #0x3f
+ ldrh r2, [r1, #0x0]
+ bic r2, r0
+ mov r0, #0x3f
+ orr r2, r0
+ mov r0, #0x20
+ orr r0, r2
+ strh r0, [r1, #0x0]
+ pop {r3-r5, pc}
+_0200F92A:
+ cmp r1, #0x0
+ bne _0200F94C
+ ldrh r1, [r0, #0x0]
+ mov r2, #0x2
+ tst r1, r2
+ beq _0200F954
+ add r0, #0x44
+ ldrh r3, [r0, #0x0]
+ ldr r1, _0200FAD4 ; =0xFFFFC0FF
+ and r3, r1
+ mov r1, #0x3f
+ lsl r1, r1, #0x8
+ orr r3, r1
+ lsl r1, r2, #0xc
+ orr r1, r3
+ strh r1, [r0, #0x0]
+ pop {r3-r5, pc}
+_0200F94C:
+ ldrh r1, [r0, #0x0]
+ mov r0, #0x2
+ tst r0, r1
+ bne _0200F956
+_0200F954:
+ b _0200FCB0
+_0200F956:
+ ldr r2, _0200FAD0 ; =0x04001048
+ ldr r0, _0200FAD4 ; =0xFFFFC0FF
+ ldrh r1, [r2, #0x0]
+ and r1, r0
+ mov r0, #0x3f
+ lsl r0, r0, #0x8
+ orr r1, r0
+ lsr r0, r2, #0xd
+ orr r0, r1
+ strh r0, [r2, #0x0]
+ pop {r3-r5, pc}
+_0200F96C:
+ add r1, r4, r0
+ add r1, #0xc0
+ ldrb r1, [r1, #0x0]
+ cmp r1, #0x0
+ bne _0200FA38
+ add r1, r2, #0x1
+ ldrb r1, [r4, r1]
+ cmp r1, #0x0
+ ldr r1, _0200FAC4 ; =0x04000004
+ bne _0200F99C
+ ldrh r3, [r1, #0x0]
+ mov r2, #0x2
+ tst r2, r3
+ beq _0200F9B6
+ add r1, #0x46
+ ldrh r3, [r1, #0x0]
+ mov r2, #0x3f
+ bic r3, r2
+ mov r2, #0x3f
+ orr r3, r2
+ mov r2, #0x20
+ orr r2, r3
+ strh r2, [r1, #0x0]
+ b _0200F9B6
+_0200F99C:
+ ldrh r2, [r1, #0x0]
+ mov r1, #0x2
+ tst r1, r2
+ beq _0200F9B6
+ ldr r2, _0200FAC8 ; =0x0400104A
+ mov r1, #0x3f
+ ldrh r3, [r2, #0x0]
+ bic r3, r1
+ mov r1, #0x3f
+ orr r3, r1
+ mov r1, #0x20
+ orr r1, r3
+ strh r1, [r2, #0x0]
+_0200F9B6:
+ ldr r1, _0200FACC ; =0x00000309
+ ldrb r2, [r4, r1]
+ mov r1, #0x6
+ lsl r1, r1, #0x6
+ ldr r1, [r4, r1]
+ cmp r1, #0x0
+ ldr r1, _0200FAC4 ; =0x04000004
+ bne _0200F9FE
+ cmp r2, #0x0
+ bne _0200F9E4
+ ldrh r3, [r1, #0x0]
+ mov r2, #0x2
+ tst r2, r3
+ beq _0200FA0A
+ add r1, #0x44
+ ldrh r3, [r1, #0x0]
+ mov r2, #0x3f
+ bic r3, r2
+ mov r2, #0x20
+ orr r3, r2
+ orr r2, r3
+ strh r2, [r1, #0x0]
+ b _0200FB16
+_0200F9E4:
+ ldrh r2, [r1, #0x0]
+ mov r1, #0x2
+ tst r1, r2
+ beq _0200FA0A
+ ldr r2, _0200FAD0 ; =0x04001048
+ mov r1, #0x3f
+ ldrh r3, [r2, #0x0]
+ bic r3, r1
+ mov r1, #0x20
+ orr r3, r1
+ orr r1, r3
+ strh r1, [r2, #0x0]
+ b _0200FB16
+_0200F9FE:
+ cmp r2, #0x0
+ bne _0200FA1E
+ ldrh r2, [r1, #0x0]
+ mov r3, #0x2
+ tst r2, r3
+ bne _0200FA0C
+_0200FA0A:
+ b _0200FB16
+_0200FA0C:
+ add r1, #0x44
+ ldrh r5, [r1, #0x0]
+ ldr r2, _0200FAD4 ; =0xFFFFC0FF
+ and r5, r2
+ lsl r2, r3, #0xc
+ orr r5, r2
+ orr r2, r5
+ strh r2, [r1, #0x0]
+ b _0200FB16
+_0200FA1E:
+ ldrh r2, [r1, #0x0]
+ mov r1, #0x2
+ tst r1, r2
+ beq _0200FB16
+ ldr r3, _0200FAD0 ; =0x04001048
+ ldr r1, _0200FAD4 ; =0xFFFFC0FF
+ ldrh r2, [r3, #0x0]
+ and r2, r1
+ lsr r1, r3, #0xd
+ orr r2, r1
+ orr r1, r2
+ strh r1, [r3, #0x0]
+ b _0200FB16
+_0200FA38:
+ add r1, r2, #0x1
+ ldrb r1, [r4, r1]
+ cmp r1, #0x0
+ ldr r1, _0200FAC4 ; =0x04000004
+ bne _0200FA5C
+ ldrh r3, [r1, #0x0]
+ mov r2, #0x2
+ tst r2, r3
+ beq _0200FA74
+ add r1, #0x46
+ ldrh r3, [r1, #0x0]
+ mov r2, #0x3f
+ bic r3, r2
+ mov r2, #0x20
+ orr r3, r2
+ orr r2, r3
+ strh r2, [r1, #0x0]
+ b _0200FA74
+_0200FA5C:
+ ldrh r2, [r1, #0x0]
+ mov r1, #0x2
+ tst r1, r2
+ beq _0200FA74
+ ldr r2, _0200FAC8 ; =0x0400104A
+ mov r1, #0x3f
+ ldrh r3, [r2, #0x0]
+ bic r3, r1
+ mov r1, #0x20
+ orr r3, r1
+ orr r1, r3
+ strh r1, [r2, #0x0]
+_0200FA74:
+ ldr r1, _0200FACC ; =0x00000309
+ ldrb r2, [r4, r1]
+ mov r1, #0x6
+ lsl r1, r1, #0x6
+ ldr r1, [r4, r1]
+ cmp r1, #0x0
+ ldr r1, _0200FAC4 ; =0x04000004
+ bne _0200FAD8
+ cmp r2, #0x0
+ bne _0200FAA4
+ ldrh r3, [r1, #0x0]
+ mov r2, #0x2
+ tst r2, r3
+ beq _0200FB16
+ add r1, #0x44
+ ldrh r3, [r1, #0x0]
+ mov r2, #0x3f
+ bic r3, r2
+ mov r2, #0x3f
+ orr r3, r2
+ mov r2, #0x20
+ orr r2, r3
+ strh r2, [r1, #0x0]
+ b _0200FB16
+_0200FAA4:
+ ldrh r2, [r1, #0x0]
+ mov r1, #0x2
+ tst r1, r2
+ beq _0200FB16
+ ldr r2, _0200FAD0 ; =0x04001048
+ mov r1, #0x3f
+ ldrh r3, [r2, #0x0]
+ bic r3, r1
+ mov r1, #0x3f
+ orr r3, r1
+ mov r1, #0x20
+ orr r1, r3
+ strh r1, [r2, #0x0]
+ b _0200FB16
+ .balign 4
+_0200FAC0: .word 0x04000006
+_0200FAC4: .word 0x04000004
+_0200FAC8: .word 0x0400104A
+_0200FACC: .word 0x00000309
+_0200FAD0: .word 0x04001048
+_0200FAD4: .word 0xFFFFC0FF
+_0200FAD8:
+ cmp r2, #0x0
+ bne _0200FAFA
+ ldrh r2, [r1, #0x0]
+ mov r3, #0x2
+ tst r2, r3
+ beq _0200FB16
+ add r1, #0x44
+ ldrh r5, [r1, #0x0]
+ ldr r2, _0200FCB4 ; =0xFFFFC0FF
+ and r5, r2
+ mov r2, #0x3f
+ lsl r2, r2, #0x8
+ orr r5, r2
+ lsl r2, r3, #0xc
+ orr r2, r5
+ strh r2, [r1, #0x0]
+ b _0200FB16
+_0200FAFA:
+ ldrh r2, [r1, #0x0]
+ mov r1, #0x2
+ tst r1, r2
+ beq _0200FB16
+ ldr r3, _0200FCB8 ; =0x04001048
+ ldr r1, _0200FCB4 ; =0xFFFFC0FF
+ ldrh r2, [r3, #0x0]
+ and r2, r1
+ mov r1, #0x3f
+ lsl r1, r1, #0x8
+ orr r2, r1
+ lsr r1, r3, #0xd
+ orr r1, r2
+ strh r1, [r3, #0x0]
+_0200FB16:
+ mov r1, #0x61
+ lsl r1, r1, #0x2
+ add r1, r4, r1
+ add r0, r1, r0
+ add r0, #0xc0
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ ldr r0, _0200FCBC ; =0x00000309
+ bne _0200FBEC
+ ldrb r0, [r4, r0]
+ cmp r0, #0x0
+ ldr r0, _0200FCC0 ; =0x04000004
+ bne _0200FB4C
+ ldrh r3, [r0, #0x0]
+ mov r2, #0x2
+ tst r2, r3
+ beq _0200FB66
+ add r0, #0x46
+ ldrh r3, [r0, #0x0]
+ mov r2, #0x3f
+ bic r3, r2
+ mov r2, #0x3f
+ orr r3, r2
+ mov r2, #0x20
+ orr r2, r3
+ strh r2, [r0, #0x0]
+ b _0200FB66
+_0200FB4C:
+ ldrh r2, [r0, #0x0]
+ mov r0, #0x2
+ tst r0, r2
+ beq _0200FB66
+ ldr r2, _0200FCC4 ; =0x0400104A
+ mov r0, #0x3f
+ ldrh r3, [r2, #0x0]
+ bic r3, r0
+ mov r0, #0x3f
+ orr r3, r0
+ mov r0, #0x20
+ orr r0, r3
+ strh r0, [r2, #0x0]
+_0200FB66:
+ ldr r0, _0200FCBC ; =0x00000309
+ ldrb r2, [r4, r0]
+ mov r0, #0x6
+ lsl r0, r0, #0x6
+ ldr r0, [r1, r0]
+ cmp r0, #0x0
+ bne _0200FBB2
+ cmp r2, #0x0
+ bne _0200FB94
+ ldr r2, _0200FCC0 ; =0x04000004
+ mov r0, #0x2
+ ldrh r1, [r2, #0x0]
+ tst r0, r1
+ beq _0200FB9E
+ add r2, #0x44
+ ldrh r1, [r2, #0x0]
+ mov r0, #0x3f
+ bic r1, r0
+ mov r0, #0x20
+ orr r1, r0
+ orr r0, r1
+ strh r0, [r2, #0x0]
+ pop {r3-r5, pc}
+_0200FB94:
+ ldr r0, _0200FCC0 ; =0x04000004
+ ldrh r1, [r0, #0x0]
+ mov r0, #0x2
+ tst r0, r1
+ bne _0200FBA0
+_0200FB9E:
+ b _0200FCB0
+_0200FBA0:
+ ldr r1, _0200FCB8 ; =0x04001048
+ mov r0, #0x3f
+ ldrh r2, [r1, #0x0]
+ bic r2, r0
+ mov r0, #0x20
+ orr r2, r0
+ orr r0, r2
+ strh r0, [r1, #0x0]
+ pop {r3-r5, pc}
+_0200FBB2:
+ cmp r2, #0x0
+ ldr r0, _0200FCC0 ; =0x04000004
+ bne _0200FBD2
+ ldrh r1, [r0, #0x0]
+ mov r2, #0x2
+ tst r1, r2
+ beq _0200FCB0
+ add r0, #0x44
+ ldrh r3, [r0, #0x0]
+ ldr r1, _0200FCB4 ; =0xFFFFC0FF
+ and r3, r1
+ lsl r1, r2, #0xc
+ orr r3, r1
+ orr r1, r3
+ strh r1, [r0, #0x0]
+ pop {r3-r5, pc}
+_0200FBD2:
+ ldrh r1, [r0, #0x0]
+ mov r0, #0x2
+ tst r0, r1
+ beq _0200FCB0
+ ldr r2, _0200FCB8 ; =0x04001048
+ ldr r0, _0200FCB4 ; =0xFFFFC0FF
+ ldrh r1, [r2, #0x0]
+ and r1, r0
+ lsr r0, r2, #0xd
+ orr r1, r0
+ orr r0, r1
+ strh r0, [r2, #0x0]
+ pop {r3-r5, pc}
+_0200FBEC:
+ ldrb r0, [r4, r0]
+ cmp r0, #0x0
+ ldr r0, _0200FCC0 ; =0x04000004
+ bne _0200FC0E
+ ldrh r3, [r0, #0x0]
+ mov r2, #0x2
+ tst r2, r3
+ beq _0200FC26
+ add r0, #0x46
+ ldrh r3, [r0, #0x0]
+ mov r2, #0x3f
+ bic r3, r2
+ mov r2, #0x20
+ orr r3, r2
+ orr r2, r3
+ strh r2, [r0, #0x0]
+ b _0200FC26
+_0200FC0E:
+ ldrh r2, [r0, #0x0]
+ mov r0, #0x2
+ tst r0, r2
+ beq _0200FC26
+ ldr r2, _0200FCC4 ; =0x0400104A
+ mov r0, #0x3f
+ ldrh r3, [r2, #0x0]
+ bic r3, r0
+ mov r0, #0x20
+ orr r3, r0
+ orr r0, r3
+ strh r0, [r2, #0x0]
+_0200FC26:
+ ldr r0, _0200FCBC ; =0x00000309
+ ldrb r2, [r4, r0]
+ mov r0, #0x6
+ lsl r0, r0, #0x6
+ ldr r0, [r1, r0]
+ cmp r0, #0x0
+ ldr r0, _0200FCC0 ; =0x04000004
+ bne _0200FC72
+ cmp r2, #0x0
+ bne _0200FC56
+ ldrh r2, [r0, #0x0]
+ mov r1, #0x2
+ tst r1, r2
+ beq _0200FCB0
+ add r0, #0x44
+ ldrh r2, [r0, #0x0]
+ mov r1, #0x3f
+ bic r2, r1
+ mov r1, #0x3f
+ orr r2, r1
+ mov r1, #0x20
+ orr r1, r2
+ strh r1, [r0, #0x0]
+ pop {r3-r5, pc}
+_0200FC56:
+ ldrh r1, [r0, #0x0]
+ mov r0, #0x2
+ tst r0, r1
+ beq _0200FCB0
+ ldr r1, _0200FCB8 ; =0x04001048
+ mov r0, #0x3f
+ ldrh r2, [r1, #0x0]
+ bic r2, r0
+ mov r0, #0x3f
+ orr r2, r0
+ mov r0, #0x20
+ orr r0, r2
+ strh r0, [r1, #0x0]
+ pop {r3-r5, pc}
+_0200FC72:
+ cmp r2, #0x0
+ bne _0200FC94
+ ldrh r1, [r0, #0x0]
+ mov r2, #0x2
+ tst r1, r2
+ beq _0200FCB0
+ add r0, #0x44
+ ldrh r3, [r0, #0x0]
+ ldr r1, _0200FCB4 ; =0xFFFFC0FF
+ and r3, r1
+ mov r1, #0x3f
+ lsl r1, r1, #0x8
+ orr r3, r1
+ lsl r1, r2, #0xc
+ orr r1, r3
+ strh r1, [r0, #0x0]
+ pop {r3-r5, pc}
+_0200FC94:
+ ldrh r1, [r0, #0x0]
+ mov r0, #0x2
+ tst r0, r1
+ beq _0200FCB0
+ ldr r2, _0200FCB8 ; =0x04001048
+ ldr r0, _0200FCB4 ; =0xFFFFC0FF
+ ldrh r1, [r2, #0x0]
+ and r1, r0
+ mov r0, #0x3f
+ lsl r0, r0, #0x8
+ orr r1, r0
+ lsr r0, r2, #0xd
+ orr r0, r1
+ strh r0, [r2, #0x0]
+_0200FCB0:
+ pop {r3-r5, pc}
+ nop
+_0200FCB4: .word 0xFFFFC0FF
+_0200FCB8: .word 0x04001048
+_0200FCBC: .word 0x00000309
+_0200FCC0: .word 0x04000004
+_0200FCC4: .word 0x0400104A
+
+ thumb_func_start FUN_0200FCC8
+FUN_0200FCC8: ; 0x0200FCC8
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x20]
+ add r6, r1, #0x0
+ mov r1, #0x4c
+ bl FUN_02016998
+ str r0, [r5, #0x14]
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x10]
+ add r1, r6, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [r5, #0x18]
+ str r0, [sp, #0x4]
+ ldr r2, [r5, #0x4]
+ ldr r3, [r5, #0x8]
+ add r0, r4, #0x0
+ bl FUN_0200FE20
+ add r6, #0x20
+ ldrb r0, [r6, #0x0]
+ cmp r0, #0x0
+ ldr r0, [r5, #0x18]
+ bne _0200FD06
+ ldr r2, [r4, #0x30]
+ ldr r3, [r4, #0x44]
+ mov r1, #0x1
+ bl FUN_0200F6E4
+ b _0200FD10
+_0200FD06:
+ ldr r2, [r4, #0x30]
+ ldr r3, [r4, #0x44]
+ mov r1, #0x2
+ bl FUN_0200F6E4
+_0200FD10:
+ ldr r0, [r5, #0xc]
+ add r0, r0, #0x1
+ str r0, [r5, #0xc]
+ add sp, #0x8
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200FD1C
+FUN_0200FD1C: ; 0x0200FD1C
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0xc]
+ mov r6, #0x0
+ ldr r4, [r5, #0x14]
+ cmp r0, #0x1
+ beq _0200FD34
+ cmp r0, #0x2
+ beq _0200FD50
+ cmp r0, #0x3
+ beq _0200FD64
+ b _0200FD66
+_0200FD34:
+ add r0, r4, #0x0
+ bl FUN_0200FE90
+ cmp r0, #0x1
+ bne _0200FD66
+ ldr r0, [r4, #0x44]
+ ldr r1, [r5, #0x18]
+ ldr r2, [r5, #0x10]
+ bl FUN_0200F62C
+ ldr r0, [r5, #0xc]
+ add r0, r0, #0x1
+ str r0, [r5, #0xc]
+ b _0200FD66
+_0200FD50:
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add r0, r6, #0x0
+ str r0, [r5, #0x14]
+ ldr r0, [r5, #0xc]
+ mov r6, #0x1
+ add r0, r0, #0x1
+ str r0, [r5, #0xc]
+ b _0200FD66
+_0200FD64:
+ mov r6, #0x1
+_0200FD66:
+ add r0, r6, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200FD6C
+FUN_0200FD6C: ; 0x0200FD6C
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x20]
+ add r6, r1, #0x0
+ mov r1, #0x98
+ add r7, r2, #0x0
+ bl FUN_02016998
+ str r0, [r5, #0x14]
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x10]
+ add r1, r6, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [r5, #0x18]
+ str r0, [sp, #0x4]
+ ldr r2, [r5, #0x4]
+ ldr r3, [r5, #0x8]
+ add r0, r4, #0x0
+ bl FUN_0200FE20
+ ldr r0, [r5, #0x10]
+ add r1, r7, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [r5, #0x18]
+ str r0, [sp, #0x4]
+ add r0, r4, #0x0
+ ldr r2, [r5, #0x4]
+ ldr r3, [r5, #0x8]
+ add r0, #0x4c
+ bl FUN_0200FE20
+ ldr r0, [r5, #0x18]
+ ldr r2, [r5, #0x10]
+ ldr r3, [r4, #0x44]
+ mov r1, #0x3
+ bl FUN_0200F6E4
+ ldr r0, [r5, #0xc]
+ add r0, r0, #0x1
+ str r0, [r5, #0xc]
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200FDC4
+FUN_0200FDC4: ; 0x0200FDC4
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0xc]
+ mov r6, #0x0
+ ldr r4, [r5, #0x14]
+ cmp r0, #0x1
+ beq _0200FDDC
+ cmp r0, #0x2
+ beq _0200FE04
+ cmp r0, #0x3
+ beq _0200FE18
+ b _0200FE1A
+_0200FDDC:
+ add r0, r4, #0x0
+ bl FUN_0200FE90
+ add r7, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x4c
+ bl FUN_0200FE90
+ add r0, r7, r0
+ cmp r0, #0x2
+ bne _0200FE1A
+ ldr r0, [r4, #0x44]
+ ldr r1, [r5, #0x18]
+ ldr r2, [r5, #0x10]
+ bl FUN_0200F62C
+ ldr r0, [r5, #0xc]
+ add r0, r0, #0x1
+ str r0, [r5, #0xc]
+ b _0200FE1A
+_0200FE04:
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add r0, r6, #0x0
+ str r0, [r5, #0x14]
+ ldr r0, [r5, #0xc]
+ mov r6, #0x1
+ add r0, r0, #0x1
+ str r0, [r5, #0xc]
+ b _0200FE1A
+_0200FE18:
+ mov r6, #0x1
+_0200FE1A:
+ add r0, r6, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200FE20
+FUN_0200FE20: ; 0x0200FE20
+ push {r3-r7, lr}
+ sub sp, #0x18
+ add r4, r1, #0x0
+ add r1, #0x10
+ add r7, r3, #0x0
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ str r1, [sp, #0x0]
+ add r1, r5, #0x0
+ add r2, r5, #0x0
+ add r1, #0x20
+ add r2, #0x10
+ add r3, r4, #0x0
+ str r6, [sp, #0x4]
+ bl FUN_0200F1A8
+ ldr r1, [sp, #0x30]
+ add r0, r4, #0x0
+ add r2, r4, #0x0
+ str r1, [r5, #0x30]
+ add r0, #0x20
+ ldrb r0, [r0, #0x0]
+ add r2, #0x23
+ str r0, [r5, #0x34]
+ str r6, [r5, #0x38]
+ str r7, [r5, #0x3c]
+ mov r0, #0x0
+ str r0, [r5, #0x40]
+ ldr r0, [sp, #0x34]
+ str r0, [r5, #0x48]
+ ldrb r2, [r2, #0x0]
+ str r2, [r5, #0x44]
+ str r1, [sp, #0x0]
+ ldr r1, [r4, #0x0]
+ add r2, r4, #0x0
+ str r1, [sp, #0x4]
+ ldr r1, [r4, #0x4]
+ add r2, #0x22
+ str r1, [sp, #0x8]
+ ldr r1, [r4, #0x8]
+ str r1, [sp, #0xc]
+ ldr r1, [r4, #0xc]
+ str r1, [sp, #0x10]
+ ldr r1, [r5, #0x44]
+ str r1, [sp, #0x14]
+ add r1, r4, #0x0
+ add r1, #0x21
+ add r4, #0x20
+ ldrb r1, [r1, #0x0]
+ ldrb r2, [r2, #0x0]
+ ldrb r3, [r4, #0x0]
+ bl FUN_0200F67C
+ add sp, #0x18
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200FE90
+FUN_0200FE90: ; 0x0200FE90
+ push {r3-r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x40]
+ add r2, r1, #0x1
+ str r2, [r4, #0x40]
+ ldr r1, [r4, #0x3c]
+ cmp r2, r1
+ blt _0200FF10
+ mov r1, #0x0
+ str r1, [r4, #0x40]
+ ldr r1, [r4, #0x38]
+ sub r1, r1, #0x1
+ cmp r1, #0x0
+ ble _0200FEBA
+ str r1, [r4, #0x38]
+ add r1, r4, #0x0
+ add r1, #0x10
+ bl FUN_0200F184
+ b _0200FED8
+_0200FEBA:
+ ldr r0, [r4, #0x2c]
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x34]
+ str r0, [sp, #0x4]
+ ldr r0, [r4, #0x30]
+ str r0, [sp, #0x8]
+ ldr r0, [r4, #0x48]
+ ldr r1, [r4, #0x20]
+ ldr r2, [r4, #0x24]
+ ldr r3, [r4, #0x28]
+ bl FUN_02011698
+ add sp, #0xc
+ mov r0, #0x1
+ pop {r3-r4, pc}
+_0200FED8:
+ ldr r1, [r4, #0xc]
+ asr r0, r1, #0x6
+ lsr r0, r0, #0x19
+ add r0, r1, r0
+ asr r0, r0, #0x7
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x34]
+ str r0, [sp, #0x4]
+ ldr r0, [r4, #0x30]
+ str r0, [sp, #0x8]
+ ldr r2, [r4, #0x0]
+ ldr r3, [r4, #0x4]
+ asr r1, r2, #0x6
+ lsr r1, r1, #0x19
+ add r1, r2, r1
+ ldr r0, [r4, #0x48]
+ asr r2, r3, #0x6
+ lsr r2, r2, #0x19
+ add r2, r3, r2
+ ldr r4, [r4, #0x8]
+ asr r1, r1, #0x7
+ asr r3, r4, #0x6
+ lsr r3, r3, #0x19
+ add r3, r4, r3
+ asr r2, r2, #0x7
+ asr r3, r3, #0x7
+ bl FUN_02011698
+_0200FF10:
+ mov r0, #0x0
+ add sp, #0xc
+ pop {r3-r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200FF18
+FUN_0200FF18: ; 0x0200FF18
+ push {r3-r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x20]
+ add r4, r1, #0x0
+ mov r1, #0x38
+ bl FUN_02016998
+ str r0, [r5, #0x14]
+ ldr r0, [r5, #0x10]
+ add r1, r4, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [r5, #0x18]
+ str r0, [sp, #0x4]
+ ldr r0, [r5, #0x1c]
+ str r0, [sp, #0x8]
+ ldr r0, [r5, #0x20]
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x14]
+ ldr r2, [r5, #0x4]
+ ldr r3, [r5, #0x8]
+ bl FUN_0200FFAC
+ ldr r0, [r5, #0xc]
+ add r0, r0, #0x1
+ str r0, [r5, #0xc]
+ add sp, #0x10
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0200FF50
+FUN_0200FF50: ; 0x0200FF50
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0xc]
+ mov r6, #0x0
+ ldr r4, [r5, #0x14]
+ cmp r0, #0x1
+ beq _0200FF68
+ cmp r0, #0x2
+ beq _0200FF84
+ cmp r0, #0x3
+ beq _0200FF9E
+ b _0200FFA2
+_0200FF68:
+ add r0, r4, #0x0
+ bl FUN_02010084
+ cmp r0, #0x1
+ bne _0200FFA6
+ ldr r0, [r4, #0x2c]
+ ldr r1, [r4, #0x30]
+ ldr r2, [r5, #0x10]
+ bl FUN_0200F62C
+ ldr r0, [r5, #0xc]
+ add r0, r0, #0x1
+ str r0, [r5, #0xc]
+ b _0200FFA6
+_0200FF84:
+ add r0, r4, #0x0
+ bl FUN_0200F5C0
+ ldr r0, [r5, #0x14]
+ bl FUN_02016A18
+ add r0, r6, #0x0
+ str r0, [r5, #0x14]
+ ldr r0, [r5, #0xc]
+ mov r6, #0x1
+ add r0, r0, #0x1
+ str r0, [r5, #0xc]
+ b _0200FFA6
+_0200FF9E:
+ mov r6, #0x1
+ b _0200FFA6
+_0200FFA2:
+ bl ErrorHandling
+_0200FFA6:
+ add r0, r6, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200FFAC
+FUN_0200FFAC: ; 0x0200FFAC
+ push {r4-r7, lr}
+ sub sp, #0x24
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ ldr r1, [r4, #0x4]
+ str r2, [sp, #0x18]
+ str r3, [sp, #0x1c]
+ ldr r6, [sp, #0x38]
+ ldr r7, [sp, #0x3c]
+ bl FUN_0200F164
+ str r0, [sp, #0x20]
+ ldrb r1, [r4, #0xc]
+ ldr r3, [sp, #0x44]
+ add r0, r5, #0x0
+ add r2, r6, #0x0
+ bl FUN_0200F55C
+ ldr r0, [r4, #0x0]
+ lsl r0, r0, #0x7
+ str r0, [r5, #0xc]
+ mov r0, #0x8
+ ldrsh r0, [r4, r0]
+ str r0, [r5, #0x10]
+ mov r0, #0xa
+ ldrsh r0, [r4, r0]
+ str r0, [r5, #0x14]
+ ldr r0, [sp, #0x20]
+ str r0, [r5, #0x18]
+ ldr r0, [sp, #0x18]
+ str r0, [r5, #0x1c]
+ ldr r0, [sp, #0x1c]
+ str r0, [r5, #0x20]
+ mov r0, #0x0
+ str r0, [r5, #0x24]
+ ldr r0, [sp, #0x40]
+ str r7, [r5, #0x30]
+ str r0, [r5, #0x34]
+ ldr r0, [sp, #0x44]
+ str r0, [r5, #0x28]
+ ldrb r0, [r4, #0xf]
+ str r0, [r5, #0x2c]
+ add r0, r5, #0x0
+ bl FUN_02010168
+ ldr r0, _02010078 ; =FUN_0200F5F8
+ ldr r2, _0201007C ; =0x000003FF
+ add r1, r5, #0x0
+ bl FUN_0200CA98
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_0200F5D8
+ mov r1, #0x3
+ str r6, [sp, #0x0]
+ lsl r1, r1, #0x8
+ ldrsh r1, [r0, r1]
+ str r1, [sp, #0x4]
+ mov r1, #0x0
+ str r1, [sp, #0x8]
+ mov r1, #0x12
+ lsl r1, r1, #0x6
+ ldrsh r0, [r0, r1]
+ str r0, [sp, #0xc]
+ mov r0, #0xc0
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x2c]
+ str r0, [sp, #0x14]
+ ldrb r1, [r4, #0xd]
+ ldrb r2, [r4, #0xe]
+ ldrb r3, [r4, #0xc]
+ add r0, r7, #0x0
+ bl FUN_0200F67C
+ ldrb r0, [r4, #0xc]
+ cmp r0, #0x0
+ bne _02010058
+ ldr r3, [r5, #0x2c]
+ add r0, r7, #0x0
+ mov r1, #0x1
+ add r2, r6, #0x0
+ bl FUN_0200F6E4
+ b _02010064
+_02010058:
+ ldr r3, [r5, #0x2c]
+ add r0, r7, #0x0
+ mov r1, #0x2
+ add r2, r6, #0x0
+ bl FUN_0200F6E4
+_02010064:
+ ldr r0, [sp, #0x44]
+ ldr r2, _02010080 ; =FUN_0200F330
+ str r0, [sp, #0x0]
+ ldr r0, [r5, #0x34]
+ add r1, r5, #0x0
+ add r3, r6, #0x0
+ bl FUN_0200E6CC
+ add sp, #0x24
+ pop {r4-r7, pc}
+ .balign 4
+_02010078: .word FUN_0200F5F8
+_0201007C: .word 0x000003FF
+_02010080: .word FUN_0200F330
+
+ thumb_func_start FUN_02010084
+FUN_02010084: ; 0x02010084
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x24]
+ add r2, r1, #0x1
+ str r2, [r4, #0x24]
+ ldr r1, [r4, #0x20]
+ cmp r2, r1
+ blt _020100C8
+ mov r1, #0x0
+ str r1, [r4, #0x24]
+ ldr r1, [r4, #0x1c]
+ sub r1, r1, #0x1
+ cmp r1, #0x0
+ ble _020100BA
+ str r1, [r4, #0x1c]
+ ldr r2, [r4, #0xc]
+ ldr r1, [r4, #0x18]
+ add r1, r2, r1
+ str r1, [r4, #0xc]
+ bl FUN_02010168
+ ldr r0, _020100CC ; =FUN_0200F5F8
+ ldr r2, _020100D0 ; =0x000003FF
+ add r1, r4, #0x0
+ bl FUN_0200CA98
+ b _020100C8
+_020100BA:
+ ldr r0, [r4, #0x34]
+ ldr r1, [r4, #0x8]
+ ldr r2, [r4, #0x28]
+ bl FUN_0200E6F8
+ mov r0, #0x1
+ pop {r4, pc}
+_020100C8:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+_020100CC: .word FUN_0200F5F8
+_020100D0: .word 0x000003FF
+
+ thumb_func_start FUN_020100D4
+FUN_020100D4: ; 0x020100D4
+ push {r4-r7, lr}
+ sub sp, #0xc
+ str r1, [sp, #0x0]
+ asr r1, r0, #0x6
+ lsr r1, r1, #0x19
+ add r1, r0, r1
+ asr r1, r1, #0x7
+ ldr r5, [sp, #0x20]
+ ldr r4, [sp, #0x24]
+ sub r0, r3, r2
+ bpl _020100EC
+ neg r0, r0
+_020100EC:
+ cmp r0, r1
+ blt _020100FA
+ mov r0, #0x0
+ str r0, [r5, #0x0]
+ add sp, #0xc
+ str r0, [r4, #0x0]
+ pop {r4-r7, pc}
+_020100FA:
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x4]
+ asr r7, r0, #0x1f
+ lsl r0, r1, #0xc
+ asr r1, r0, #0x1f
+ add r2, r0, #0x0
+ add r3, r1, #0x0
+ blx _ll_mul
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x4]
+ add r6, r1, #0x0
+ add r1, r7, #0x0
+ add r2, r0, #0x0
+ add r3, r7, #0x0
+ blx _ll_mul
+ add r2, r0, #0x0
+ add r3, r1, #0x0
+ mov r0, #0x2
+ ldr r1, [sp, #0x8]
+ mov r7, #0x0
+ lsl r0, r0, #0xa
+ add r0, r1, r0
+ adc r6, r7
+ lsl r1, r6, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r1
+ mov r1, #0x2
+ lsl r1, r1, #0xa
+ add r2, r2, r1
+ adc r3, r7
+ lsl r1, r3, #0x14
+ lsr r2, r2, #0xc
+ orr r2, r1
+ sub r0, r0, r2
+ blx FUN_020C504C
+ asr r2, r0, #0xc
+ ldr r0, [sp, #0x0]
+ sub r0, r0, r2
+ str r0, [r5, #0x0]
+ bpl _02010154
+ add r0, r7, #0x0
+ str r0, [r5, #0x0]
+_02010154:
+ ldr r1, [r5, #0x0]
+ lsl r0, r2, #0x1
+ add r0, r1, r0
+ str r0, [r4, #0x0]
+ cmp r0, #0xff
+ ble _02010164
+ mov r0, #0xff
+ str r0, [r4, #0x0]
+_02010164:
+ add sp, #0xc
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_02010168
+FUN_02010168: ; 0x02010168
+ push {r3-r7, lr}
+ sub sp, #0x10
+ mov r1, #0x0
+ add r5, r0, #0x0
+ bl FUN_0200F5D8
+ add r7, r0, #0x0
+ mov r4, #0x0
+ add r6, r7, #0x0
+_0201017A:
+ ldr r2, [r5, #0x14]
+ cmp r4, r2
+ bgt _02010194
+ add r0, sp, #0xc
+ str r0, [sp, #0x0]
+ add r0, sp, #0x8
+ str r0, [sp, #0x4]
+ ldr r0, [r5, #0xc]
+ ldr r1, [r5, #0x10]
+ add r3, r4, #0x0
+ bl FUN_020100D4
+ b _020101CE
+_02010194:
+ lsl r0, r2, #0x1
+ cmp r4, r0
+ bgt _020101BC
+ sub r0, r0, r4
+ lsl r0, r0, #0x1
+ add r1, r7, r0
+ mov r0, #0x3
+ lsl r0, r0, #0x8
+ ldrsh r0, [r1, r0]
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x14]
+ lsl r0, r0, #0x1
+ sub r0, r0, r4
+ lsl r0, r0, #0x1
+ add r1, r7, r0
+ mov r0, #0x12
+ lsl r0, r0, #0x6
+ ldrsh r0, [r1, r0]
+ str r0, [sp, #0x8]
+ b _020101CE
+_020101BC:
+ add r0, sp, #0xc
+ str r0, [sp, #0x0]
+ add r0, sp, #0x8
+ str r0, [sp, #0x4]
+ ldr r0, [r5, #0xc]
+ ldr r1, [r5, #0x10]
+ add r3, r4, #0x0
+ bl FUN_020100D4
+_020101CE:
+ mov r0, #0x3
+ ldr r1, [sp, #0xc]
+ lsl r0, r0, #0x8
+ strh r1, [r6, r0]
+ mov r0, #0x12
+ ldr r1, [sp, #0x8]
+ lsl r0, r0, #0x6
+ strh r1, [r6, r0]
+ add r4, r4, #0x1
+ add r6, r6, #0x2
+ cmp r4, #0xc0
+ blt _0201017A
+ add sp, #0x10
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020101EC
+FUN_020101EC: ; 0x020101EC
+ push {r3-r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x20]
+ add r4, r1, #0x0
+ mov r1, #0x30
+ bl FUN_02016998
+ str r0, [r5, #0x14]
+ ldr r0, [r5, #0x10]
+ add r1, r4, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [r5, #0x18]
+ str r0, [sp, #0x4]
+ ldr r0, [r5, #0x1c]
+ str r0, [sp, #0x8]
+ ldr r0, [r5, #0x20]
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x14]
+ ldr r2, [r5, #0x4]
+ ldr r3, [r5, #0x8]
+ bl FUN_02010280
+ ldr r0, [r5, #0xc]
+ add r0, r0, #0x1
+ str r0, [r5, #0xc]
+ add sp, #0x10
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02010224
+FUN_02010224: ; 0x02010224
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0xc]
+ mov r6, #0x0
+ ldr r4, [r5, #0x14]
+ cmp r0, #0x1
+ beq _0201023C
+ cmp r0, #0x2
+ beq _02010258
+ cmp r0, #0x3
+ beq _02010272
+ b _02010276
+_0201023C:
+ add r0, r4, #0x0
+ bl FUN_02010348
+ cmp r0, #0x1
+ bne _0201027A
+ ldr r0, [r4, #0x20]
+ ldr r1, [r4, #0x24]
+ ldr r2, [r5, #0x10]
+ bl FUN_0200F62C
+ ldr r0, [r5, #0xc]
+ add r0, r0, #0x1
+ str r0, [r5, #0xc]
+ b _0201027A
+_02010258:
+ add r0, r4, #0x0
+ bl FUN_0200F5C0
+ ldr r0, [r5, #0x14]
+ bl FUN_02016A18
+ add r0, r6, #0x0
+ str r0, [r5, #0x14]
+ ldr r0, [r5, #0xc]
+ mov r6, #0x1
+ add r0, r0, #0x1
+ str r0, [r5, #0xc]
+ b _0201027A
+_02010272:
+ mov r6, #0x1
+ b _0201027A
+_02010276:
+ bl ErrorHandling
+_0201027A:
+ add r0, r6, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02010280
+FUN_02010280: ; 0x02010280
+ push {r3-r7, lr}
+ sub sp, #0x20
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ ldr r1, [r4, #0x4]
+ str r2, [sp, #0x18]
+ str r3, [sp, #0x1c]
+ ldr r6, [sp, #0x38]
+ ldr r7, [sp, #0x3c]
+ bl FUN_0200F164
+ str r0, [r5, #0x10]
+ ldrb r1, [r4, #0x8]
+ ldr r3, [sp, #0x44]
+ add r0, r5, #0x0
+ add r2, r6, #0x0
+ bl FUN_0200F55C
+ ldr r0, [r4, #0x0]
+ lsl r0, r0, #0x7
+ str r0, [r5, #0xc]
+ ldr r0, [sp, #0x18]
+ str r0, [r5, #0x14]
+ ldr r0, [sp, #0x1c]
+ str r0, [r5, #0x18]
+ mov r0, #0x0
+ str r0, [r5, #0x1c]
+ ldr r0, [sp, #0x40]
+ str r7, [r5, #0x24]
+ str r0, [r5, #0x28]
+ ldr r0, [sp, #0x44]
+ str r0, [r5, #0x2c]
+ ldrb r0, [r4, #0xb]
+ str r0, [r5, #0x20]
+ add r0, r5, #0x0
+ bl FUN_02010398
+ ldr r0, _0201033C ; =FUN_0200F5F8
+ ldr r2, _02010340 ; =0x000003FF
+ add r1, r5, #0x0
+ bl FUN_0200CA98
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_0200F5D8
+ mov r1, #0x3
+ str r6, [sp, #0x0]
+ lsl r1, r1, #0x8
+ ldrsh r1, [r0, r1]
+ str r1, [sp, #0x4]
+ mov r1, #0x0
+ str r1, [sp, #0x8]
+ mov r1, #0x12
+ lsl r1, r1, #0x6
+ ldrsh r0, [r0, r1]
+ str r0, [sp, #0xc]
+ mov r0, #0xc0
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x20]
+ str r0, [sp, #0x14]
+ ldrb r1, [r4, #0x9]
+ ldrb r2, [r4, #0xa]
+ ldrb r3, [r4, #0x8]
+ add r0, r7, #0x0
+ bl FUN_0200F67C
+ ldrb r0, [r4, #0x8]
+ cmp r0, #0x0
+ bne _0201031C
+ ldr r3, [r5, #0x20]
+ add r0, r7, #0x0
+ mov r1, #0x1
+ add r2, r6, #0x0
+ bl FUN_0200F6E4
+ b _02010328
+_0201031C:
+ ldr r3, [r5, #0x20]
+ add r0, r7, #0x0
+ mov r1, #0x2
+ add r2, r6, #0x0
+ bl FUN_0200F6E4
+_02010328:
+ ldr r0, [sp, #0x44]
+ ldr r2, _02010344 ; =FUN_0200F330
+ str r0, [sp, #0x0]
+ ldr r0, [r5, #0x28]
+ add r1, r5, #0x0
+ add r3, r6, #0x0
+ bl FUN_0200E6CC
+ add sp, #0x20
+ pop {r3-r7, pc}
+ .balign 4
+_0201033C: .word FUN_0200F5F8
+_02010340: .word 0x000003FF
+_02010344: .word FUN_0200F330
+
+ thumb_func_start FUN_02010348
+FUN_02010348: ; 0x02010348
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x1c]
+ add r2, r1, #0x1
+ str r2, [r4, #0x1c]
+ ldr r1, [r4, #0x18]
+ cmp r2, r1
+ blt _0201038C
+ mov r1, #0x0
+ str r1, [r4, #0x1c]
+ ldr r1, [r4, #0x14]
+ sub r1, r1, #0x1
+ cmp r1, #0x0
+ ble _0201037E
+ str r1, [r4, #0x14]
+ ldr r2, [r4, #0xc]
+ ldr r1, [r4, #0x10]
+ add r1, r2, r1
+ str r1, [r4, #0xc]
+ bl FUN_02010398
+ ldr r0, _02010390 ; =FUN_0200F5F8
+ ldr r2, _02010394 ; =0x000003FF
+ add r1, r4, #0x0
+ bl FUN_0200CA98
+ b _0201038C
+_0201037E:
+ ldr r0, [r4, #0x28]
+ ldr r1, [r4, #0x8]
+ ldr r2, [r4, #0x2c]
+ bl FUN_0200E6F8
+ mov r0, #0x1
+ pop {r4, pc}
+_0201038C:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+_02010390: .word FUN_0200F5F8
+_02010394: .word 0x000003FF
+
+ thumb_func_start FUN_02010398
+FUN_02010398: ; 0x02010398
+ push {r3-r7, lr}
+ sub sp, #0x1fc
+ sub sp, #0x104
+ add r4, r0, #0x0
+ mov r1, #0x0
+ bl FUN_0200F5D8
+ ldr r1, [r4, #0xc]
+ add r5, r0, #0x0
+ asr r0, r1, #0x6
+ lsr r0, r0, #0x19
+ add r0, r1, r0
+ asr r0, r0, #0x7
+ add r1, sp, #0x0
+ mov r2, #0xc0
+ mov r3, #0x0
+ bl FUN_0200F0F8
+ mov r7, #0x12
+ mov r6, #0x0
+ add r4, sp, #0x0
+ lsl r7, r7, #0x6
+_020103C4:
+ ldr r1, [r4, #0x0]
+ mov r0, #0x80
+ neg r1, r1
+ bl FUN_0200F174
+ mov r1, #0x3
+ lsl r1, r1, #0x8
+ strh r0, [r5, r1]
+ ldr r1, [r4, #0x0]
+ mov r0, #0x80
+ bl FUN_0200F174
+ strh r0, [r5, r7]
+ add r6, r6, #0x1
+ add r4, r4, #0x4
+ add r5, r5, #0x2
+ cmp r6, #0xc0
+ blt _020103C4
+ add sp, #0x1fc
+ add sp, #0x104
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020103F0
+FUN_020103F0: ; 0x020103F0
+ push {r3-r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x20]
+ add r4, r1, #0x0
+ mov r1, #0x34
+ bl FUN_02016998
+ str r0, [r5, #0x14]
+ ldr r0, [r5, #0x10]
+ add r1, r4, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [r5, #0x18]
+ str r0, [sp, #0x4]
+ ldr r0, [r5, #0x1c]
+ str r0, [sp, #0x8]
+ ldr r0, [r5, #0x20]
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x14]
+ ldr r2, [r5, #0x4]
+ ldr r3, [r5, #0x8]
+ bl FUN_0201047C
+ ldr r0, [r5, #0xc]
+ add r0, r0, #0x1
+ str r0, [r5, #0xc]
+ add sp, #0x10
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02010428
+FUN_02010428: ; 0x02010428
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0xc]
+ mov r6, #0x0
+ ldr r4, [r5, #0x14]
+ cmp r0, #0x1
+ beq _02010440
+ cmp r0, #0x2
+ beq _0201045C
+ cmp r0, #0x3
+ beq _02010476
+ b _02010478
+_02010440:
+ add r0, r4, #0x0
+ bl FUN_02010550
+ cmp r0, #0x1
+ bne _02010478
+ ldr r0, [r4, #0x24]
+ ldr r1, [r4, #0x28]
+ ldr r2, [r5, #0x10]
+ bl FUN_0200F62C
+ ldr r0, [r5, #0xc]
+ add r0, r0, #0x1
+ str r0, [r5, #0xc]
+ b _02010478
+_0201045C:
+ add r0, r4, #0x0
+ bl FUN_0200F5C0
+ ldr r0, [r5, #0x14]
+ bl FUN_02016A18
+ add r0, r6, #0x0
+ str r0, [r5, #0x14]
+ ldr r0, [r5, #0xc]
+ mov r6, #0x1
+ add r0, r0, #0x1
+ str r0, [r5, #0xc]
+ b _02010478
+_02010476:
+ mov r6, #0x1
+_02010478:
+ add r0, r6, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0201047C
+FUN_0201047C: ; 0x0201047C
+ push {r4-r7, lr}
+ sub sp, #0x24
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ ldr r1, [r4, #0x4]
+ ldr r0, [r4, #0x0]
+ str r2, [sp, #0x18]
+ sub r0, r1, r0
+ add r1, r2, #0x0
+ str r3, [sp, #0x1c]
+ ldr r6, [sp, #0x38]
+ ldr r7, [sp, #0x3c]
+ blx _s32_div_f
+ str r0, [sp, #0x20]
+ ldrb r1, [r4, #0x8]
+ ldr r3, [sp, #0x44]
+ add r0, r5, #0x0
+ add r2, r6, #0x0
+ bl FUN_0200F55C
+ mov r0, #0x2
+ lsl r0, r0, #0x12
+ str r0, [r5, #0xc]
+ ldr r0, [r4, #0x0]
+ str r0, [r5, #0x10]
+ ldr r0, [sp, #0x20]
+ str r0, [r5, #0x14]
+ ldr r0, [sp, #0x18]
+ str r0, [r5, #0x18]
+ ldr r0, [sp, #0x1c]
+ str r0, [r5, #0x1c]
+ mov r0, #0x0
+ str r0, [r5, #0x20]
+ ldr r0, [sp, #0x40]
+ str r7, [r5, #0x28]
+ str r0, [r5, #0x2c]
+ ldr r0, [sp, #0x44]
+ str r0, [r5, #0x30]
+ ldrb r0, [r4, #0xb]
+ str r0, [r5, #0x24]
+ add r0, r5, #0x0
+ bl FUN_020105A0
+ ldr r0, _02010544 ; =FUN_0200F5F8
+ ldr r2, _02010548 ; =0x000003FF
+ add r1, r5, #0x0
+ bl FUN_0200CA98
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_0200F5D8
+ mov r1, #0xf
+ str r6, [sp, #0x0]
+ lsl r1, r1, #0x6
+ ldrsh r1, [r0, r1]
+ str r1, [sp, #0x4]
+ mov r1, #0x0
+ str r1, [sp, #0x8]
+ mov r1, #0x15
+ lsl r1, r1, #0x6
+ ldrsh r0, [r0, r1]
+ str r0, [sp, #0xc]
+ mov r0, #0xc0
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x24]
+ str r0, [sp, #0x14]
+ ldrb r1, [r4, #0x9]
+ ldrb r2, [r4, #0xa]
+ ldrb r3, [r4, #0x8]
+ add r0, r7, #0x0
+ bl FUN_0200F67C
+ ldrb r0, [r4, #0x8]
+ cmp r0, #0x0
+ bne _02010524
+ ldr r3, [r5, #0x24]
+ add r0, r7, #0x0
+ mov r1, #0x1
+ add r2, r6, #0x0
+ bl FUN_0200F6E4
+ b _02010530
+_02010524:
+ ldr r3, [r5, #0x24]
+ add r0, r7, #0x0
+ mov r1, #0x2
+ add r2, r6, #0x0
+ bl FUN_0200F6E4
+_02010530:
+ ldr r0, [sp, #0x44]
+ ldr r2, _0201054C ; =FUN_0200F330
+ str r0, [sp, #0x0]
+ ldr r0, [r5, #0x2c]
+ add r1, r5, #0x0
+ add r3, r6, #0x0
+ bl FUN_0200E6CC
+ add sp, #0x24
+ pop {r4-r7, pc}
+ .balign 4
+_02010544: .word FUN_0200F5F8
+_02010548: .word 0x000003FF
+_0201054C: .word FUN_0200F330
+
+ thumb_func_start FUN_02010550
+FUN_02010550: ; 0x02010550
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x20]
+ add r2, r1, #0x1
+ str r2, [r4, #0x20]
+ ldr r1, [r4, #0x1c]
+ cmp r2, r1
+ blt _02010594
+ mov r1, #0x0
+ str r1, [r4, #0x20]
+ ldr r1, [r4, #0x18]
+ sub r1, r1, #0x1
+ cmp r1, #0x0
+ ble _02010586
+ str r1, [r4, #0x18]
+ ldr r2, [r4, #0x10]
+ ldr r1, [r4, #0x14]
+ add r1, r2, r1
+ str r1, [r4, #0x10]
+ bl FUN_020105A0
+ ldr r0, _02010598 ; =FUN_0200F5F8
+ ldr r2, _0201059C ; =0x000003FF
+ add r1, r4, #0x0
+ bl FUN_0200CA98
+ b _02010594
+_02010586:
+ ldr r0, [r4, #0x2c]
+ ldr r1, [r4, #0x8]
+ ldr r2, [r4, #0x30]
+ bl FUN_0200E6F8
+ mov r0, #0x1
+ pop {r4, pc}
+_02010594:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+_02010598: .word FUN_0200F5F8
+_0201059C: .word 0x000003FF
+
+ thumb_func_start FUN_020105A0
+FUN_020105A0: ; 0x020105A0
+ push {r4-r7, lr}
+ sub sp, #0x1fc
+ sub sp, #0x110
+ add r4, r0, #0x0
+ mov r1, #0x0
+ bl FUN_0200F5D8
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x10]
+ ldr r2, [r4, #0xc]
+ asr r0, r0, #0x4
+ lsl r1, r0, #0x2
+ ldr r0, _02010680 ; =0x020FFA38
+ asr r3, r2, #0x1f
+ ldrsh r0, [r0, r1]
+ asr r1, r0, #0x1f
+ blx _ll_mul
+ mov r2, #0x2
+ mov r3, #0x0
+ lsl r2, r2, #0xa
+ add r2, r0, r2
+ adc r1, r3
+ lsl r0, r1, #0x14
+ lsr r1, r2, #0xc
+ orr r1, r0
+ asr r7, r1, #0xc
+ lsl r0, r7, #0x1
+ mov r1, #0x15
+ blx _s32_div_f
+ add r0, r0, #0x1
+ lsl r0, r0, #0x1
+ mov r1, #0xb4
+ sub r2, r1, r0
+ ldr r0, _02010684 ; =0x0000FFFF
+ add r1, #0xb4
+ mul r0, r2
+ blx _s32_div_f
+ lsr r1, r0, #0x1f
+ add r1, r0, r1
+ asr r4, r1, #0x1
+ mov r1, #0x1
+ add r0, r4, #0x0
+ lsl r1, r1, #0x8
+ bl FUN_0200F14C
+ asr r0, r0, #0xc
+ str r0, [sp, #0x4]
+ cmp r0, #0xc0
+ blt _0201060C
+ bl ErrorHandling
+_0201060C:
+ ldr r2, [sp, #0x4]
+ add r0, r4, #0x0
+ add r1, sp, #0xc
+ mov r3, #0x0
+ bl FUN_0200F0F8
+ ldr r5, [sp, #0x0]
+ mov r4, #0x0
+_0201061C:
+ ldr r0, [sp, #0x4]
+ add r1, r4, #0x1
+ sub r0, r0, r1
+ add r6, r7, #0x0
+ cmp r0, #0x0
+ ble _02010634
+ lsl r1, r0, #0x2
+ add r0, sp, #0xc
+ ldr r0, [r0, r1]
+ cmp r0, r7
+ ble _02010634
+ add r6, r0, #0x0
+_02010634:
+ mov r0, #0x80
+ neg r1, r6
+ bl FUN_0200F174
+ str r0, [sp, #0x8]
+ mov r0, #0x80
+ add r1, r6, #0x0
+ bl FUN_0200F174
+ ldr r1, [sp, #0x8]
+ lsl r0, r0, #0x10
+ lsl r1, r1, #0x10
+ asr r2, r1, #0x10
+ mov r1, #0x3
+ lsl r1, r1, #0x8
+ strh r2, [r5, r1]
+ asr r1, r0, #0x10
+ mov r0, #0x12
+ lsl r0, r0, #0x6
+ strh r1, [r5, r0]
+ mov r0, #0xbf
+ sub r0, r0, r4
+ lsl r3, r0, #0x1
+ ldr r0, [sp, #0x0]
+ add r4, r4, #0x1
+ add r0, r0, r3
+ mov r3, #0x3
+ lsl r3, r3, #0x8
+ strh r2, [r0, r3]
+ mov r2, #0x12
+ lsl r2, r2, #0x6
+ add r5, r5, #0x2
+ strh r1, [r0, r2]
+ cmp r4, #0x60
+ blt _0201061C
+ add sp, #0x1fc
+ add sp, #0x110
+ pop {r4-r7, pc}
+ .balign 4
+_02010680: .word 0x020FFA38
+_02010684: .word 0x0000FFFF
+
+ thumb_func_start FUN_02010688
+FUN_02010688: ; 0x02010688
+ push {r3-r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x20]
+ add r4, r1, #0x0
+ mov r1, #0x30
+ bl FUN_02016998
+ str r0, [r5, #0x14]
+ ldr r0, [r5, #0x10]
+ add r1, r4, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [r5, #0x18]
+ str r0, [sp, #0x4]
+ ldr r0, [r5, #0x1c]
+ str r0, [sp, #0x8]
+ ldr r0, [r5, #0x20]
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x14]
+ ldr r2, [r5, #0x4]
+ ldr r3, [r5, #0x8]
+ bl FUN_02010720
+ ldr r0, [r5, #0xc]
+ add r0, r0, #0x1
+ str r0, [r5, #0xc]
+ add sp, #0x10
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_020106C0
+FUN_020106C0: ; 0x020106C0
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0xc]
+ mov r6, #0x0
+ ldr r4, [r5, #0x14]
+ cmp r0, #0x1
+ beq _020106D8
+ cmp r0, #0x2
+ beq _020106F4
+ cmp r0, #0x3
+ beq _02010714
+ b _02010718
+_020106D8:
+ add r0, r4, #0x0
+ bl FUN_02010834
+ cmp r0, #0x1
+ bne _0201071C
+ ldr r0, [r4, #0x20]
+ ldr r1, [r4, #0x24]
+ ldr r2, [r5, #0x10]
+ bl FUN_0200F62C
+ ldr r0, [r5, #0xc]
+ add r0, r0, #0x1
+ str r0, [r5, #0xc]
+ b _0201071C
+_020106F4:
+ add r0, r4, #0x0
+ bl FUN_02010884
+ add r0, r4, #0x0
+ bl FUN_0200F5C0
+ ldr r0, [r5, #0x14]
+ bl FUN_02016A18
+ add r0, r6, #0x0
+ str r0, [r5, #0x14]
+ ldr r0, [r5, #0xc]
+ mov r6, #0x1
+ add r0, r0, #0x1
+ str r0, [r5, #0xc]
+ b _0201071C
+_02010714:
+ mov r6, #0x1
+ b _0201071C
+_02010718:
+ bl ErrorHandling
+_0201071C:
+ add r0, r6, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02010720
+FUN_02010720: ; 0x02010720
+ push {r4-r7, lr}
+ sub sp, #0x24
+ add r5, r1, #0x0
+ add r7, r0, #0x0
+ str r2, [sp, #0x18]
+ ldr r0, [sp, #0x38]
+ ldrb r2, [r5, #0x8]
+ str r0, [sp, #0x38]
+ ldr r0, [sp, #0x44]
+ mov r1, #0x30
+ mul r1, r2
+ str r3, [sp, #0x1c]
+ str r0, [sp, #0x44]
+ bl FUN_02016998
+ str r0, [r7, #0xc]
+ cmp r0, #0x0
+ bne _02010748
+ bl ErrorHandling
+_02010748:
+ ldrb r0, [r5, #0x8]
+ str r0, [r7, #0x10]
+ mov r0, #0x0
+ str r0, [sp, #0x20]
+ ldrb r0, [r5, #0x8]
+ cmp r0, #0x0
+ ble _02010788
+ ldr r6, [sp, #0x20]
+ add r4, r6, #0x0
+_0201075A:
+ ldr r0, [r5, #0x4]
+ ldr r2, [r7, #0xc]
+ add r0, r0, r6
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x18]
+ str r0, [sp, #0x4]
+ add r0, r2, r4
+ ldr r3, [r5, #0x0]
+ add r1, r0, #0x0
+ add r2, r2, r4
+ add r1, #0x20
+ add r2, #0x10
+ add r3, r3, r6
+ bl FUN_0200F1A8
+ ldr r0, [sp, #0x20]
+ ldrb r1, [r5, #0x8]
+ add r0, r0, #0x1
+ add r6, #0x10
+ add r4, #0x30
+ str r0, [sp, #0x20]
+ cmp r0, r1
+ blt _0201075A
+_02010788:
+ ldrb r1, [r5, #0x9]
+ ldr r2, [sp, #0x38]
+ ldr r3, [sp, #0x44]
+ add r0, r7, #0x0
+ bl FUN_0200F55C
+ ldr r0, [sp, #0x18]
+ str r0, [r7, #0x14]
+ ldr r0, [sp, #0x1c]
+ str r0, [r7, #0x18]
+ mov r0, #0x0
+ str r0, [r7, #0x1c]
+ ldr r0, [sp, #0x3c]
+ str r0, [r7, #0x24]
+ ldr r0, [sp, #0x40]
+ str r0, [r7, #0x28]
+ ldr r0, [sp, #0x44]
+ str r0, [r7, #0x2c]
+ ldrb r0, [r5, #0xc]
+ str r0, [r7, #0x20]
+ add r0, r7, #0x0
+ bl FUN_02010894
+ ldr r0, _02010828 ; =FUN_0200F5F8
+ ldr r2, _0201082C ; =0x000003FF
+ add r1, r7, #0x0
+ bl FUN_0200CA98
+ add r0, r7, #0x0
+ mov r1, #0x0
+ bl FUN_0200F5D8
+ ldr r1, [sp, #0x38]
+ str r1, [sp, #0x0]
+ mov r1, #0x3
+ lsl r1, r1, #0x8
+ ldrsh r1, [r0, r1]
+ str r1, [sp, #0x4]
+ mov r1, #0x0
+ str r1, [sp, #0x8]
+ mov r1, #0x12
+ lsl r1, r1, #0x6
+ ldrsh r0, [r0, r1]
+ str r0, [sp, #0xc]
+ mov r0, #0xc0
+ str r0, [sp, #0x10]
+ ldr r0, [r7, #0x20]
+ str r0, [sp, #0x14]
+ ldrb r1, [r5, #0xa]
+ ldrb r2, [r5, #0xb]
+ ldrb r3, [r5, #0x9]
+ ldr r0, [sp, #0x3c]
+ bl FUN_0200F67C
+ ldrb r0, [r5, #0x9]
+ cmp r0, #0x0
+ ldr r0, [r7, #0x24]
+ bne _02010808
+ ldr r2, [sp, #0x38]
+ ldr r3, [r7, #0x20]
+ mov r1, #0x1
+ bl FUN_0200F6E4
+ b _02010812
+_02010808:
+ ldr r2, [sp, #0x38]
+ ldr r3, [r7, #0x20]
+ mov r1, #0x2
+ bl FUN_0200F6E4
+_02010812:
+ ldr r0, [sp, #0x44]
+ ldr r2, _02010830 ; =FUN_0200F330
+ str r0, [sp, #0x0]
+ ldr r0, [r7, #0x28]
+ ldr r3, [sp, #0x38]
+ add r1, r7, #0x0
+ bl FUN_0200E6CC
+ add sp, #0x24
+ pop {r4-r7, pc}
+ nop
+_02010828: .word FUN_0200F5F8
+_0201082C: .word 0x000003FF
+_02010830: .word FUN_0200F330
+
+ thumb_func_start FUN_02010834
+FUN_02010834: ; 0x02010834
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x1c]
+ add r2, r1, #0x1
+ str r2, [r4, #0x1c]
+ ldr r1, [r4, #0x18]
+ cmp r2, r1
+ blt _02010876
+ mov r1, #0x0
+ str r1, [r4, #0x1c]
+ ldr r1, [r4, #0x14]
+ sub r1, r1, #0x1
+ cmp r1, #0x0
+ ble _02010868
+ str r1, [r4, #0x14]
+ bl FUN_02010920
+ add r0, r4, #0x0
+ bl FUN_02010894
+ ldr r0, _0201087C ; =FUN_0200F5F8
+ ldr r2, _02010880 ; =0x000003FF
+ add r1, r4, #0x0
+ bl FUN_0200CA98
+ b _02010876
+_02010868:
+ ldr r0, [r4, #0x28]
+ ldr r1, [r4, #0x8]
+ ldr r2, [r4, #0x2c]
+ bl FUN_0200E6F8
+ mov r0, #0x1
+ pop {r4, pc}
+_02010876:
+ mov r0, #0x0
+ pop {r4, pc}
+ nop
+_0201087C: .word FUN_0200F5F8
+_02010880: .word 0x000003FF
+
+ thumb_func_start FUN_02010884
+FUN_02010884: ; 0x02010884
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0xc]
+ bl FUN_02016A18
+ mov r0, #0x0
+ str r0, [r4, #0xc]
+ pop {r4, pc}
+
+ thumb_func_start FUN_02010894
+FUN_02010894: ; 0x02010894
+ push {r4-r6, lr}
+ mov r1, #0x0
+ add r6, r0, #0x0
+ bl FUN_0200F5D8
+ mov r2, #0x3
+ lsl r2, r2, #0x8
+ add r0, r0, r2
+ mov r1, #0x0
+ blx FUN_020DF4A4
+ ldr r0, [r6, #0x10]
+ sub r4, r0, #0x1
+ bmi _020108C6
+ mov r0, #0x30
+ add r5, r4, #0x0
+ mul r5, r0
+_020108B6:
+ ldr r1, [r6, #0xc]
+ add r0, r6, #0x0
+ add r1, r1, r5
+ bl FUN_020108C8
+ sub r5, #0x30
+ sub r4, r4, #0x1
+ bpl _020108B6
+_020108C6:
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_020108C8
+FUN_020108C8: ; 0x020108C8
+ push {r4-r6, lr}
+ add r4, r1, #0x0
+ mov r1, #0x0
+ bl FUN_0200F5D8
+ ldr r2, [r4, #0x0]
+ ldr r3, [r4, #0x8]
+ asr r1, r2, #0x6
+ lsr r1, r1, #0x19
+ add r1, r2, r1
+ asr r2, r1, #0x7
+ asr r1, r3, #0x6
+ ldr r5, [r4, #0xc]
+ lsr r1, r1, #0x19
+ add r1, r3, r1
+ asr r3, r5, #0x6
+ lsr r3, r3, #0x19
+ add r3, r5, r3
+ ldr r4, [r4, #0x4]
+ asr r5, r3, #0x7
+ asr r3, r4, #0x6
+ lsr r3, r3, #0x19
+ add r3, r4, r3
+ asr r3, r3, #0x7
+ asr r1, r1, #0x7
+ cmp r3, r5
+ bge _0201091E
+ lsl r4, r3, #0x1
+ lsl r1, r1, #0x10
+ add r4, r0, r4
+ lsl r0, r2, #0x10
+ asr r6, r1, #0x10
+ mov r1, #0x3
+ mov r2, #0x12
+ asr r0, r0, #0x10
+ lsl r1, r1, #0x8
+ lsl r2, r2, #0x6
+_02010912:
+ strh r0, [r4, r1]
+ strh r6, [r4, r2]
+ add r3, r3, #0x1
+ add r4, r4, #0x2
+ cmp r3, r5
+ blt _02010912
+_0201091E:
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02010920
+FUN_02010920: ; 0x02010920
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x10]
+ mov r6, #0x0
+ cmp r0, #0x0
+ ble _02010944
+ add r4, r6, #0x0
+_0201092E:
+ ldr r1, [r5, #0xc]
+ add r0, r1, r4
+ add r1, r1, r4
+ add r1, #0x10
+ bl FUN_0200F184
+ ldr r0, [r5, #0x10]
+ add r6, r6, #0x1
+ add r4, #0x30
+ cmp r6, r0
+ blt _0201092E
+_02010944:
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02010948
+FUN_02010948: ; 0x02010948
+ push {r3-r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x20]
+ add r4, r1, #0x0
+ mov r1, #0x38
+ bl FUN_02016998
+ str r0, [r5, #0x14]
+ mov r1, #0x0
+ mov r2, #0x38
+ blx FUN_020DF4A4
+ ldr r0, [r5, #0x10]
+ add r1, r4, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [r5, #0x18]
+ str r0, [sp, #0x4]
+ ldr r0, [r5, #0x1c]
+ str r0, [sp, #0x8]
+ ldr r0, [r5, #0x20]
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x14]
+ ldr r2, [r5, #0x4]
+ ldr r3, [r5, #0x8]
+ bl FUN_020109E8
+ ldr r0, [r5, #0xc]
+ add r0, r0, #0x1
+ str r0, [r5, #0xc]
+ add sp, #0x10
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02010988
+FUN_02010988: ; 0x02010988
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0xc]
+ mov r6, #0x0
+ ldr r4, [r5, #0x14]
+ cmp r0, #0x1
+ beq _020109A0
+ cmp r0, #0x2
+ beq _020109BC
+ cmp r0, #0x3
+ beq _020109DC
+ b _020109E0
+_020109A0:
+ add r0, r4, #0x0
+ bl FUN_02010AE4
+ cmp r0, #0x1
+ bne _020109E4
+ ldr r0, [r4, #0x28]
+ ldr r1, [r4, #0x30]
+ ldr r2, [r5, #0x10]
+ bl FUN_0200F62C
+ ldr r0, [r5, #0xc]
+ add r0, r0, #0x1
+ str r0, [r5, #0xc]
+ b _020109E4
+_020109BC:
+ add r0, r4, #0x0
+ bl FUN_02010B3C
+ add r0, r4, #0x0
+ bl FUN_0200F5C0
+ ldr r0, [r5, #0x14]
+ bl FUN_02016A18
+ add r0, r6, #0x0
+ str r0, [r5, #0x14]
+ ldr r0, [r5, #0xc]
+ mov r6, #0x1
+ add r0, r0, #0x1
+ str r0, [r5, #0xc]
+ b _020109E4
+_020109DC:
+ mov r6, #0x1
+ b _020109E4
+_020109E0:
+ bl ErrorHandling
+_020109E4:
+ add r0, r6, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_020109E8
+FUN_020109E8: ; 0x020109E8
+ push {r3-r7, lr}
+ sub sp, #0x28
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ mov r1, #0x0
+ str r1, [r5, #0xc]
+ ldr r1, [r4, #0x0]
+ str r2, [sp, #0x18]
+ str r1, [r5, #0x10]
+ str r3, [sp, #0x1c]
+ ldr r2, [r4, #0x4]
+ ldr r1, [r4, #0x0]
+ ldr r6, [sp, #0x40]
+ sub r1, r2, r1
+ str r1, [r5, #0x14]
+ ldr r3, [sp, #0x4c]
+ mov r1, #0x2
+ add r2, r6, #0x0
+ ldr r7, [sp, #0x44]
+ bl FUN_0200F55C
+ ldr r0, [sp, #0x18]
+ mov r1, #0x0
+ str r0, [r5, #0x18]
+ ldr r0, [sp, #0x1c]
+ str r1, [r5, #0x1c]
+ str r0, [r5, #0x20]
+ str r1, [r5, #0x24]
+ ldr r0, [sp, #0x48]
+ str r7, [r5, #0x30]
+ str r0, [r5, #0x34]
+ ldr r0, [sp, #0x4c]
+ str r0, [r5, #0x2c]
+ ldrb r0, [r4, #0xa]
+ str r0, [r5, #0x28]
+ add r0, r5, #0x0
+ ldr r1, [r5, #0x1c]
+ ldr r2, [r5, #0x18]
+ add r0, #0xc
+ bl FUN_02010C64
+ add r0, r5, #0x0
+ bl FUN_02010B40
+ ldr r0, _02010AD8 ; =FUN_0200F5F8
+ ldr r2, _02010ADC ; =0x000003FF
+ add r1, r5, #0x0
+ bl FUN_0200CA98
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_0200F5D8
+ str r0, [sp, #0x20]
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_0200F5D8
+ str r0, [sp, #0x24]
+ mov r1, #0x3
+ ldr r0, [sp, #0x20]
+ str r6, [sp, #0x0]
+ lsl r1, r1, #0x8
+ ldrsh r0, [r0, r1]
+ mov r1, #0x12
+ mov r3, #0x0
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x20]
+ str r3, [sp, #0x8]
+ lsl r1, r1, #0x6
+ ldrsh r0, [r0, r1]
+ str r0, [sp, #0xc]
+ mov r0, #0xc0
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x28]
+ str r0, [sp, #0x14]
+ ldrb r1, [r4, #0x8]
+ ldrb r2, [r4, #0x9]
+ add r0, r7, #0x0
+ bl FUN_0200F67C
+ mov r1, #0x3
+ ldr r0, [sp, #0x24]
+ str r6, [sp, #0x0]
+ lsl r1, r1, #0x8
+ ldrsh r0, [r0, r1]
+ mov r1, #0x12
+ lsl r1, r1, #0x6
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x24]
+ mov r3, #0x1
+ ldrsh r0, [r0, r1]
+ str r0, [sp, #0xc]
+ mov r0, #0xc0
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x28]
+ str r0, [sp, #0x14]
+ ldrb r1, [r4, #0x8]
+ ldrb r2, [r4, #0x9]
+ add r0, r7, #0x0
+ bl FUN_0200F67C
+ ldr r3, [r5, #0x28]
+ add r0, r7, #0x0
+ mov r1, #0x3
+ add r2, r6, #0x0
+ bl FUN_0200F6E4
+ ldr r0, [sp, #0x4c]
+ ldr r2, _02010AE0 ; =FUN_0200F330
+ str r0, [sp, #0x0]
+ ldr r0, [r5, #0x34]
+ add r1, r5, #0x0
+ add r3, r6, #0x0
+ bl FUN_0200E6CC
+ add sp, #0x28
+ pop {r3-r7, pc}
+ .balign 4
+_02010AD8: .word FUN_0200F5F8
+_02010ADC: .word 0x000003FF
+_02010AE0: .word FUN_0200F330
+
+ thumb_func_start FUN_02010AE4
+FUN_02010AE4: ; 0x02010AE4
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x24]
+ add r1, r0, #0x1
+ str r1, [r4, #0x24]
+ ldr r0, [r4, #0x20]
+ cmp r1, r0
+ blt _02010B2E
+ mov r0, #0x0
+ str r0, [r4, #0x24]
+ ldr r0, [r4, #0x1c]
+ add r1, r0, #0x1
+ ldr r0, [r4, #0x18]
+ cmp r1, r0
+ bgt _02010B20
+ str r1, [r4, #0x1c]
+ add r0, r4, #0x0
+ ldr r2, [r4, #0x18]
+ add r0, #0xc
+ bl FUN_02010C64
+ add r0, r4, #0x0
+ bl FUN_02010B40
+ ldr r0, _02010B34 ; =FUN_0200F5F8
+ ldr r2, _02010B38 ; =0x000003FF
+ add r1, r4, #0x0
+ bl FUN_0200CA98
+ b _02010B2E
+_02010B20:
+ ldr r0, [r4, #0x34]
+ ldr r1, [r4, #0x8]
+ ldr r2, [r4, #0x2c]
+ bl FUN_0200E6F8
+ mov r0, #0x1
+ pop {r4, pc}
+_02010B2E:
+ mov r0, #0x0
+ pop {r4, pc}
+ nop
+_02010B34: .word FUN_0200F5F8
+_02010B38: .word 0x000003FF
+
+ thumb_func_start FUN_02010B3C
+FUN_02010B3C: ; 0x02010B3C
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02010B40
+FUN_02010B40: ; 0x02010B40
+ push {r3-r7, lr}
+ sub sp, #0x8
+ str r0, [sp, #0x0]
+ ldr r0, [r0, #0xc]
+ ldr r1, _02010C60 ; =0x00003FFF
+ blx _s32_div_f
+ lsl r0, r1, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x0]
+ mov r1, #0x0
+ bl FUN_0200F5D8
+ add r7, r0, #0x0
+ ldr r0, [sp, #0x0]
+ mov r1, #0x1
+ bl FUN_0200F5D8
+ add r4, r0, #0x0
+ mov r6, #0x0
+ add r5, r4, #0x0
+_02010B6C:
+ ldr r0, [sp, #0x0]
+ ldr r1, [r0, #0xc]
+ ldr r0, _02010C60 ; =0x00003FFF
+ cmp r1, r0
+ bge _02010BB0
+ mov r1, #0x60
+ ldr r0, [sp, #0x4]
+ sub r1, r1, r6
+ bl FUN_0200F0D0
+ cmp r0, #0x7f
+ ble _02010B86
+ mov r0, #0x7f
+_02010B86:
+ mov r1, #0xbf
+ sub r1, r1, r6
+ lsl r1, r1, #0x1
+ add r3, r7, r1
+ mov r1, #0x80
+ sub r2, r1, r0
+ mov r1, #0x3
+ lsl r1, r1, #0x8
+ strh r2, [r3, r1]
+ mov r1, #0x12
+ mov r2, #0x80
+ lsl r1, r1, #0x6
+ strh r2, [r3, r1]
+ mov r1, #0x3
+ lsl r1, r1, #0x8
+ strh r2, [r5, r1]
+ mov r1, #0x12
+ add r0, #0x80
+ lsl r1, r1, #0x6
+ strh r0, [r5, r1]
+ b _02010BD8
+_02010BB0:
+ mov r0, #0xbf
+ sub r0, r0, r6
+ lsl r0, r0, #0x1
+ mov r1, #0x3
+ add r0, r7, r0
+ mov r2, #0x0
+ lsl r1, r1, #0x8
+ strh r2, [r0, r1]
+ mov r1, #0x12
+ mov r2, #0x80
+ lsl r1, r1, #0x6
+ strh r2, [r0, r1]
+ mov r0, #0x3
+ add r1, r2, #0x0
+ lsl r0, r0, #0x8
+ strh r1, [r5, r0]
+ mov r0, #0x12
+ mov r1, #0xff
+ lsl r0, r0, #0x6
+ strh r1, [r5, r0]
+_02010BD8:
+ add r6, r6, #0x1
+ add r5, r5, #0x2
+ cmp r6, #0x60
+ blt _02010B6C
+ ldr r1, _02010C60 ; =0x00003FFF
+ ldr r0, [sp, #0x4]
+ mov r5, #0x60
+ add r4, #0xc0
+ sub r6, r1, r0
+_02010BEA:
+ ldr r0, [sp, #0x0]
+ ldr r1, [r0, #0xc]
+ ldr r0, _02010C60 ; =0x00003FFF
+ cmp r1, r0
+ bge _02010C1A
+ mov r0, #0xbf
+ sub r0, r0, r5
+ lsl r0, r0, #0x1
+ mov r1, #0x3
+ add r0, r7, r0
+ mov r2, #0x80
+ lsl r1, r1, #0x8
+ strh r2, [r0, r1]
+ mov r1, #0x12
+ lsl r1, r1, #0x6
+ strh r2, [r0, r1]
+ mov r0, #0x3
+ add r1, r2, #0x0
+ lsl r0, r0, #0x8
+ strh r1, [r4, r0]
+ mov r0, #0x12
+ lsl r0, r0, #0x6
+ strh r1, [r4, r0]
+ b _02010C54
+_02010C1A:
+ add r1, r5, #0x0
+ add r0, r6, #0x0
+ sub r1, #0x60
+ bl FUN_0200F0D0
+ add r1, r0, #0x0
+ cmp r1, #0x7f
+ ble _02010C2C
+ mov r1, #0x7f
+_02010C2C:
+ mov r0, #0xbf
+ sub r0, r0, r5
+ lsl r0, r0, #0x1
+ mov r2, #0x3
+ add r0, r7, r0
+ mov r3, #0x0
+ lsl r2, r2, #0x8
+ strh r3, [r0, r2]
+ mov r2, #0x80
+ sub r3, r2, r1
+ mov r2, #0x12
+ lsl r2, r2, #0x6
+ strh r3, [r0, r2]
+ mov r0, #0x3
+ add r1, #0x80
+ lsl r0, r0, #0x8
+ strh r1, [r4, r0]
+ mov r1, #0xff
+ add r0, r2, #0x0
+ strh r1, [r4, r0]
+_02010C54:
+ add r5, r5, #0x1
+ add r4, r4, #0x2
+ cmp r5, #0xc0
+ blt _02010BEA
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+_02010C60: .word 0x00003FFF
+
+ thumb_func_start FUN_02010C64
+FUN_02010C64: ; 0x02010C64
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r3, [r4, #0x8]
+ add r0, r3, #0x0
+ mul r0, r1
+ add r1, r2, #0x0
+ blx _s32_div_f
+ ldr r1, [r4, #0x4]
+ add r0, r0, r1
+ str r0, [r4, #0x0]
+ pop {r4, pc}
+
+ thumb_func_start FUN_02010C7C
+FUN_02010C7C: ; 0x02010C7C
+ push {r3-r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x20]
+ add r4, r1, #0x0
+ mov r1, #0x38
+ bl FUN_02016998
+ str r0, [r5, #0x14]
+ mov r1, #0x0
+ mov r2, #0x38
+ blx FUN_020DF4A4
+ ldr r0, [r5, #0x10]
+ add r1, r4, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [r5, #0x18]
+ str r0, [sp, #0x4]
+ ldr r0, [r5, #0x1c]
+ str r0, [sp, #0x8]
+ ldr r0, [r5, #0x20]
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x14]
+ ldr r2, [r5, #0x4]
+ ldr r3, [r5, #0x8]
+ bl FUN_02010D1C
+ ldr r0, [r5, #0xc]
+ add r0, r0, #0x1
+ str r0, [r5, #0xc]
+ add sp, #0x10
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02010CBC
+FUN_02010CBC: ; 0x02010CBC
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0xc]
+ mov r6, #0x0
+ ldr r4, [r5, #0x14]
+ cmp r0, #0x1
+ beq _02010CD4
+ cmp r0, #0x2
+ beq _02010CF0
+ cmp r0, #0x3
+ beq _02010D10
+ b _02010D14
+_02010CD4:
+ add r0, r4, #0x0
+ bl FUN_02010DEC
+ cmp r0, #0x1
+ bne _02010D18
+ ldr r0, [r4, #0x28]
+ ldr r1, [r4, #0x30]
+ ldr r2, [r5, #0x10]
+ bl FUN_0200F62C
+ ldr r0, [r5, #0xc]
+ add r0, r0, #0x1
+ str r0, [r5, #0xc]
+ b _02010D18
+_02010CF0:
+ add r0, r4, #0x0
+ bl FUN_02010E44
+ add r0, r4, #0x0
+ bl FUN_0200F5C0
+ ldr r0, [r5, #0x14]
+ bl FUN_02016A18
+ add r0, r6, #0x0
+ str r0, [r5, #0x14]
+ ldr r0, [r5, #0xc]
+ mov r6, #0x1
+ add r0, r0, #0x1
+ str r0, [r5, #0xc]
+ b _02010D18
+_02010D10:
+ mov r6, #0x1
+ b _02010D18
+_02010D14:
+ bl ErrorHandling
+_02010D18:
+ add r0, r6, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02010D1C
+FUN_02010D1C: ; 0x02010D1C
+ push {r3-r7, lr}
+ sub sp, #0x20
+ add r4, r1, #0x0
+ ldr r1, [r4, #0x0]
+ add r5, r0, #0x0
+ str r1, [r5, #0xc]
+ ldr r1, [r4, #0x0]
+ str r3, [sp, #0x1c]
+ str r1, [r5, #0x10]
+ str r2, [sp, #0x18]
+ ldr r2, [r4, #0x4]
+ ldr r1, [r4, #0x0]
+ ldr r6, [sp, #0x38]
+ sub r1, r2, r1
+ str r1, [r5, #0x14]
+ ldr r3, [sp, #0x44]
+ mov r1, #0x2
+ add r2, r6, #0x0
+ ldr r7, [sp, #0x3c]
+ bl FUN_0200F55C
+ ldr r0, [sp, #0x18]
+ mov r1, #0x0
+ str r0, [r5, #0x18]
+ ldr r0, [sp, #0x1c]
+ str r1, [r5, #0x1c]
+ str r0, [r5, #0x20]
+ str r1, [r5, #0x24]
+ ldr r0, [sp, #0x40]
+ str r7, [r5, #0x30]
+ str r0, [r5, #0x34]
+ ldr r0, [sp, #0x44]
+ str r0, [r5, #0x2c]
+ ldrb r0, [r4, #0xa]
+ str r0, [r5, #0x28]
+ add r0, r5, #0x0
+ bl FUN_02010E48
+ ldr r0, _02010DE0 ; =FUN_0200F5F8
+ ldr r2, _02010DE4 ; =0x000003FF
+ add r1, r5, #0x0
+ bl FUN_0200CA98
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_0200F5D8
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_0200F5D8
+ str r6, [sp, #0x0]
+ mov r3, #0x0
+ str r3, [sp, #0x4]
+ str r3, [sp, #0x8]
+ mov r0, #0xff
+ str r0, [sp, #0xc]
+ mov r0, #0xc0
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x28]
+ str r0, [sp, #0x14]
+ ldrb r1, [r4, #0x8]
+ ldrb r2, [r4, #0x9]
+ add r0, r7, #0x0
+ bl FUN_0200F67C
+ str r6, [sp, #0x0]
+ mov r0, #0x0
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ mov r0, #0xff
+ str r0, [sp, #0xc]
+ mov r0, #0xc0
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x28]
+ mov r3, #0x1
+ str r0, [sp, #0x14]
+ ldrb r1, [r4, #0x8]
+ ldrb r2, [r4, #0x9]
+ add r0, r7, #0x0
+ bl FUN_0200F67C
+ ldr r3, [r5, #0x28]
+ add r0, r7, #0x0
+ mov r1, #0x3
+ add r2, r6, #0x0
+ bl FUN_0200F6E4
+ ldr r0, [sp, #0x44]
+ ldr r2, _02010DE8 ; =FUN_0200F330
+ str r0, [sp, #0x0]
+ ldr r0, [r5, #0x34]
+ add r1, r5, #0x0
+ add r3, r6, #0x0
+ bl FUN_0200E6CC
+ add sp, #0x20
+ pop {r3-r7, pc}
+ .balign 4
+_02010DE0: .word FUN_0200F5F8
+_02010DE4: .word 0x000003FF
+_02010DE8: .word FUN_0200F330
+
+ thumb_func_start FUN_02010DEC
+FUN_02010DEC: ; 0x02010DEC
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x24]
+ add r1, r0, #0x1
+ str r1, [r4, #0x24]
+ ldr r0, [r4, #0x20]
+ cmp r1, r0
+ blt _02010E36
+ mov r0, #0x0
+ str r0, [r4, #0x24]
+ ldr r0, [r4, #0x1c]
+ add r1, r0, #0x1
+ ldr r0, [r4, #0x18]
+ cmp r1, r0
+ bgt _02010E28
+ str r1, [r4, #0x1c]
+ add r0, r4, #0x0
+ ldr r2, [r4, #0x18]
+ add r0, #0xc
+ bl FUN_02010F14
+ add r0, r4, #0x0
+ bl FUN_02010E48
+ ldr r0, _02010E3C ; =FUN_0200F5F8
+ ldr r2, _02010E40 ; =0x000003FF
+ add r1, r4, #0x0
+ bl FUN_0200CA98
+ b _02010E36
+_02010E28:
+ ldr r0, [r4, #0x34]
+ ldr r1, [r4, #0x8]
+ ldr r2, [r4, #0x2c]
+ bl FUN_0200E6F8
+ mov r0, #0x1
+ pop {r4, pc}
+_02010E36:
+ mov r0, #0x0
+ pop {r4, pc}
+ nop
+_02010E3C: .word FUN_0200F5F8
+_02010E40: .word 0x000003FF
+
+ thumb_func_start FUN_02010E44
+FUN_02010E44: ; 0x02010E44
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02010E48
+FUN_02010E48: ; 0x02010E48
+ push {r4-r7, lr}
+ sub sp, #0x1c
+ add r4, r0, #0x0
+ ldr r1, [r4, #0xc]
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ str r1, [sp, #0x8]
+ mov r1, #0x0
+ bl FUN_0200F5D8
+ str r0, [sp, #0x10]
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_0200F5D8
+ str r0, [sp, #0xc]
+ add r5, r0, #0x0
+ ldr r1, _02010F10 ; =0x00003FFF
+ ldr r0, [sp, #0x8]
+ ldr r6, [sp, #0x10]
+ sub r0, r1, r0
+ mov r7, #0x0
+ str r0, [sp, #0x4]
+_02010E76:
+ mov r0, #0x60
+ sub r0, r0, r7
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0x0]
+ bl FUN_0200F0D0
+ add r4, r0, #0x0
+ ldr r0, [sp, #0x4]
+ ldr r1, [sp, #0x0]
+ bl FUN_0200F0D0
+ cmp r4, #0x7f
+ ble _02010E94
+ mov r4, #0x7f
+_02010E94:
+ cmp r0, #0x7f
+ ble _02010E9A
+ mov r0, #0x7f
+_02010E9A:
+ mov r1, #0x80
+ sub r1, r1, r0
+ lsl r1, r1, #0x10
+ mov r2, #0x3
+ asr r1, r1, #0x10
+ lsl r2, r2, #0x8
+ str r1, [sp, #0x14]
+ strh r1, [r6, r2]
+ mov r1, #0x80
+ sub r1, r1, r4
+ lsl r1, r1, #0x10
+ asr r2, r1, #0x10
+ mov r1, #0x12
+ lsl r1, r1, #0x6
+ strh r2, [r6, r1]
+ mov r1, #0xbf
+ sub r1, r1, r7
+ mov r12, r2
+ lsl r1, r1, #0x1
+ ldr r2, [sp, #0x10]
+ add r0, #0x80
+ add r3, r2, r1
+ str r1, [sp, #0x18]
+ mov r2, #0x3
+ ldr r1, [sp, #0x14]
+ lsl r2, r2, #0x8
+ strh r1, [r3, r2]
+ mov r1, #0x12
+ mov r2, r12
+ lsl r1, r1, #0x6
+ strh r2, [r3, r1]
+ add r4, #0x80
+ lsl r1, r4, #0x10
+ asr r2, r1, #0x10
+ mov r1, #0x3
+ lsl r1, r1, #0x8
+ lsl r0, r0, #0x10
+ strh r2, [r5, r1]
+ asr r1, r0, #0x10
+ mov r0, #0x12
+ lsl r0, r0, #0x6
+ strh r1, [r5, r0]
+ ldr r3, [sp, #0xc]
+ ldr r0, [sp, #0x18]
+ add r7, r7, #0x1
+ add r0, r3, r0
+ mov r3, #0x3
+ lsl r3, r3, #0x8
+ strh r2, [r0, r3]
+ mov r2, #0x12
+ lsl r2, r2, #0x6
+ strh r1, [r0, r2]
+ add r6, r6, #0x2
+ add r5, r5, #0x2
+ cmp r7, #0x60
+ blt _02010E76
+ add sp, #0x1c
+ pop {r4-r7, pc}
+ nop
+_02010F10: .word 0x00003FFF
+
+ thumb_func_start FUN_02010F14
+FUN_02010F14: ; 0x02010F14
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r3, [r4, #0x8]
+ add r0, r3, #0x0
+ mul r0, r1
+ add r1, r2, #0x0
+ blx _s32_div_f
+ ldr r1, [r4, #0x4]
+ add r0, r0, r1
+ str r0, [r4, #0x0]
+ pop {r4, pc}
+
+ thumb_func_start FUN_02010F2C
+FUN_02010F2C: ; 0x02010F2C
+ push {r3-r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ mov r1, #0xcd
+ ldr r0, [r5, #0x20]
+ lsl r1, r1, #0x2
+ bl FUN_02016998
+ mov r2, #0xcd
+ str r0, [r5, #0x14]
+ mov r1, #0x0
+ lsl r2, r2, #0x2
+ blx FUN_020DF4A4
+ ldr r0, [r5, #0x10]
+ add r1, r4, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [r5, #0x18]
+ str r0, [sp, #0x4]
+ ldr r0, [r5, #0x1c]
+ str r0, [sp, #0x8]
+ ldr r0, [r5, #0x20]
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x14]
+ ldr r2, [r5, #0x4]
+ ldr r3, [r5, #0x8]
+ bl FUN_02010FD0
+ ldr r0, [r5, #0xc]
+ add r0, r0, #0x1
+ str r0, [r5, #0xc]
+ add sp, #0x10
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02010F70
+FUN_02010F70: ; 0x02010F70
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0xc]
+ mov r6, #0x0
+ ldr r4, [r5, #0x14]
+ cmp r0, #0x1
+ beq _02010F88
+ cmp r0, #0x2
+ beq _02010FAA
+ cmp r0, #0x3
+ beq _02010FC4
+ b _02010FC8
+_02010F88:
+ add r0, r4, #0x0
+ bl FUN_020110BC
+ cmp r0, #0x1
+ bne _02010FCC
+ mov r1, #0xc9
+ lsl r1, r1, #0x2
+ ldr r0, [r4, r1]
+ add r1, #0x8
+ ldr r1, [r4, r1]
+ ldr r2, [r5, #0x10]
+ bl FUN_0200F62C
+ ldr r0, [r5, #0xc]
+ add r0, r0, #0x1
+ str r0, [r5, #0xc]
+ b _02010FCC
+_02010FAA:
+ add r0, r4, #0x0
+ bl FUN_0201111C
+ ldr r0, [r5, #0x14]
+ bl FUN_02016A18
+ add r0, r6, #0x0
+ str r0, [r5, #0x14]
+ ldr r0, [r5, #0xc]
+ mov r6, #0x1
+ add r0, r0, #0x1
+ str r0, [r5, #0xc]
+ b _02010FCC
+_02010FC4:
+ mov r6, #0x1
+ b _02010FCC
+_02010FC8:
+ bl ErrorHandling
+_02010FCC:
+ add r0, r6, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02010FD0
+FUN_02010FD0: ; 0x02010FD0
+ push {r3-r7, lr}
+ sub sp, #0x20
+ ldr r7, [sp, #0x38]
+ str r3, [sp, #0x1c]
+ mov r3, #0x0
+ add r4, r1, #0x0
+ str r2, [sp, #0x18]
+ str r3, [sp, #0x0]
+ add r1, r7, #0x0
+ mov r2, #0x1
+ add r5, r0, #0x0
+ ldr r6, [sp, #0x3c]
+ bl FUN_0200F6FC
+ ldrb r0, [r4, #0x5]
+ cmp r0, #0x0
+ bne _0201100A
+ add r0, r5, #0x0
+ mov r1, #0x1
+ mov r2, #0xc0
+ blx FUN_020DF4A4
+ add r0, r5, #0x0
+ add r0, #0xc0
+ mov r1, #0x1
+ mov r2, #0xc0
+ blx FUN_020DF4A4
+ b _02011020
+_0201100A:
+ add r0, r5, #0x0
+ mov r1, #0x0
+ mov r2, #0xc0
+ blx FUN_020DF4A4
+ add r0, r5, #0x0
+ add r0, #0xc0
+ mov r1, #0x0
+ mov r2, #0xc0
+ blx FUN_020DF4A4
+_02011020:
+ mov r1, #0xc3
+ lsl r1, r1, #0x2
+ ldr r0, [r4, #0x0]
+ add r3, r1, #0x0
+ str r0, [r5, r1]
+ ldrb r2, [r4, #0x4]
+ add r0, r1, #0x4
+ add r3, #0x8
+ str r2, [r5, r0]
+ add r0, r1, #0x0
+ ldrb r2, [r4, #0x5]
+ add r0, #0x18
+ str r2, [r5, r0]
+ add r0, r1, #0x0
+ ldr r2, [sp, #0x44]
+ add r0, #0x1c
+ str r2, [r5, r0]
+ ldr r0, [sp, #0x18]
+ str r0, [r5, r3]
+ add r3, r1, #0x0
+ add r3, #0xc
+ mov r0, #0x0
+ str r0, [r5, r3]
+ add r3, r1, #0x0
+ ldr r0, [sp, #0x1c]
+ add r3, #0x10
+ str r0, [r5, r3]
+ add r3, r1, #0x0
+ add r3, #0x14
+ mov r0, #0x0
+ str r0, [r5, r3]
+ add r0, r1, #0x0
+ add r0, #0x20
+ str r6, [r5, r0]
+ ldr r0, [sp, #0x40]
+ add r1, #0x24
+ str r0, [r5, r1]
+ add r1, r5, #0x0
+ bl FUN_0200F758
+ ldrb r0, [r4, #0x5]
+ cmp r0, #0x1
+ str r7, [sp, #0x0]
+ bne _02011090
+ mov r3, #0x0
+ str r3, [sp, #0x4]
+ str r3, [sp, #0x8]
+ str r3, [sp, #0xc]
+ str r3, [sp, #0x10]
+ str r0, [sp, #0x14]
+ add r0, r6, #0x0
+ mov r1, #0x20
+ mov r2, #0x3f
+ bl FUN_0200F67C
+ b _020110A6
+_02011090:
+ mov r3, #0x0
+ str r3, [sp, #0x4]
+ str r3, [sp, #0x8]
+ str r3, [sp, #0xc]
+ str r3, [sp, #0x10]
+ str r0, [sp, #0x14]
+ add r0, r6, #0x0
+ mov r1, #0x3f
+ mov r2, #0x20
+ bl FUN_0200F67C
+_020110A6:
+ mov r3, #0xc9
+ lsl r3, r3, #0x2
+ ldr r3, [r5, r3]
+ add r0, r6, #0x0
+ mov r1, #0x1
+ add r2, r7, #0x0
+ bl FUN_0200F6E4
+ add sp, #0x20
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020110BC
+FUN_020110BC: ; 0x020110BC
+ push {r4, lr}
+ mov r2, #0x32
+ add r4, r0, #0x0
+ lsl r2, r2, #0x4
+ ldr r1, [r4, r2]
+ add r1, r1, #0x1
+ str r1, [r4, r2]
+ sub r1, r2, #0x4
+ ldr r3, [r4, r2]
+ ldr r1, [r4, r1]
+ cmp r3, r1
+ blt _02011116
+ mov r1, #0x0
+ str r1, [r4, r2]
+ add r1, r2, #0x0
+ sub r1, #0x8
+ ldr r1, [r4, r1]
+ add r3, r1, #0x1
+ add r1, r2, #0x0
+ sub r1, #0xc
+ ldr r1, [r4, r1]
+ cmp r3, r1
+ bgt _02011102
+ add r1, r2, #0x0
+ sub r1, #0x8
+ ldr r1, [r4, r1]
+ sub r2, #0x8
+ add r1, r1, #0x1
+ str r1, [r4, r2]
+ bl FUN_02011120
+ add r0, r4, #0x0
+ bl FUN_0200F740
+ b _02011116
+_02011102:
+ add r0, r2, #0x0
+ add r0, #0x10
+ add r2, #0x8
+ ldr r0, [r4, r0]
+ ldr r2, [r4, r2]
+ add r1, r4, #0x0
+ bl FUN_0200F770
+ mov r0, #0x1
+ pop {r4, pc}
+_02011116:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201111C
+FUN_0201111C: ; 0x0201111C
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02011120
+FUN_02011120: ; 0x02011120
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ mov r0, #0x31
+ lsl r0, r0, #0x4
+ ldr r0, [r5, r0]
+ mov r6, #0x0
+ cmp r0, #0x0
+ ble _0201115A
+ mov r7, #0x31
+ add r4, r6, #0x0
+ lsl r7, r7, #0x4
+_02011136:
+ mov r0, #0xc3
+ lsl r0, r0, #0x2
+ mov r2, #0xc6
+ mov r3, #0xc5
+ ldr r0, [r5, r0]
+ lsl r2, r2, #0x2
+ lsl r3, r3, #0x2
+ ldr r2, [r5, r2]
+ ldr r3, [r5, r3]
+ add r0, r0, r4
+ add r1, r5, #0x0
+ bl FUN_0201115C
+ ldr r0, [r5, r7]
+ add r6, r6, #0x1
+ add r4, r4, #0x3
+ cmp r6, r0
+ blt _02011136
+_0201115A:
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0201115C
+FUN_0201115C: ; 0x0201115C
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ ldrb r6, [r7, #0x0]
+ ldrb r4, [r7, #0x1]
+ add r5, r1, #0x0
+ add r1, r3, #0x0
+ sub r0, r4, r6
+ mul r0, r2
+ blx _s32_div_f
+ add r0, r0, r6
+ cmp r6, r4
+ bhi _0201117C
+ add r1, r6, #0x0
+ ldrb r6, [r7, #0x2]
+ b _0201118C
+_0201117C:
+ ldrb r2, [r7, #0x2]
+ add r1, r4, #0x0
+ add r4, r6, #0x0
+ cmp r2, #0x0
+ bne _0201118A
+ mov r6, #0x1
+ b _0201118C
+_0201118A:
+ mov r6, #0x0
+_0201118C:
+ cmp r1, r4
+ bge _020111AA
+ mov r2, #0x0
+ mov r3, #0x1
+_02011194:
+ cmp r1, r0
+ bne _020111A2
+ cmp r6, #0x0
+ bne _020111A0
+ add r6, r3, #0x0
+ b _020111A2
+_020111A0:
+ add r6, r2, #0x0
+_020111A2:
+ strb r6, [r5, r1]
+ add r1, r1, #0x1
+ cmp r1, r4
+ blt _02011194
+_020111AA:
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_020111AC
+FUN_020111AC: ; 0x020111AC
+ push {r3-r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ mov r1, #0xe2
+ ldr r0, [r5, #0x20]
+ lsl r1, r1, #0x2
+ bl FUN_02016998
+ mov r2, #0xe2
+ mov r1, #0x0
+ lsl r2, r2, #0x2
+ str r0, [r5, #0x14]
+ blx FUN_020DF4A4
+ add r1, r4, #0x0
+ add r1, #0x23
+ ldrb r1, [r1, #0x0]
+ ldr r0, [r5, #0x14]
+ cmp r1, #0x0
+ ldr r1, [r5, #0x10]
+ bne _020111F2
+ str r1, [sp, #0x0]
+ ldr r1, [r5, #0x18]
+ str r1, [sp, #0x4]
+ ldr r1, [r5, #0x1c]
+ str r1, [sp, #0x8]
+ ldr r1, [r5, #0x20]
+ str r1, [sp, #0xc]
+ ldr r2, [r5, #0x4]
+ ldr r3, [r5, #0x8]
+ add r1, r4, #0x0
+ bl FUN_0201127C
+ b _0201120A
+_020111F2:
+ str r1, [sp, #0x0]
+ ldr r1, [r5, #0x18]
+ str r1, [sp, #0x4]
+ ldr r1, [r5, #0x1c]
+ str r1, [sp, #0x8]
+ ldr r1, [r5, #0x20]
+ str r1, [sp, #0xc]
+ ldr r2, [r5, #0x4]
+ ldr r3, [r5, #0x8]
+ add r1, r4, #0x0
+ bl FUN_0201137C
+_0201120A:
+ ldr r0, [r5, #0xc]
+ add r0, r0, #0x1
+ str r0, [r5, #0xc]
+ add sp, #0x10
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02011214
+FUN_02011214: ; 0x02011214
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r1, [r5, #0xc]
+ mov r4, #0x0
+ ldr r0, [r5, #0x14]
+ cmp r1, #0x1
+ beq _0201122C
+ cmp r1, #0x2
+ beq _02011258
+ cmp r1, #0x3
+ beq _0201126A
+ b _0201126E
+_0201122C:
+ ldr r1, _02011278 ; =0x00000386
+ ldrb r1, [r0, r1]
+ cmp r1, #0x0
+ bne _0201123C
+ add r1, r5, #0x0
+ bl FUN_02011308
+ b _02011242
+_0201123C:
+ add r1, r5, #0x0
+ bl FUN_020113EC
+_02011242:
+ cmp r0, #0x1
+ bne _02011272
+ ldr r0, [r5, #0x28]
+ ldr r1, [r5, #0x18]
+ ldr r2, [r5, #0x10]
+ bl FUN_0200F62C
+ ldr r0, [r5, #0xc]
+ add r0, r0, #0x1
+ str r0, [r5, #0xc]
+ b _02011272
+_02011258:
+ bl FUN_02016A18
+ add r0, r4, #0x0
+ str r0, [r5, #0x14]
+ ldr r0, [r5, #0xc]
+ mov r4, #0x1
+ add r0, r0, #0x1
+ str r0, [r5, #0xc]
+ b _02011272
+_0201126A:
+ mov r4, #0x1
+ b _02011272
+_0201126E:
+ bl ErrorHandling
+_02011272:
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ nop
+_02011278: .word 0x00000386
+
+ thumb_func_start FUN_0201127C
+FUN_0201127C: ; 0x0201127C
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ add r5, r0, #0x0
+ lsl r0, r6, #0xc
+ ldr r2, [r4, #0x2c]
+ add r7, r3, #0x0
+ asr r1, r0, #0x1f
+ asr r3, r2, #0x1f
+ blx _ll_mul
+ add r2, r0, #0x0
+ mov r0, #0x2
+ mov r3, #0x0
+ lsl r0, r0, #0xa
+ add r0, r2, r0
+ adc r1, r3
+ lsl r1, r1, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r1
+ asr r2, r0, #0xc
+ mov r0, #0xe1
+ sub r1, r6, r2
+ lsl r0, r0, #0x2
+ strb r1, [r5, r0]
+ sub r1, r0, #0x4
+ str r4, [r5, r1]
+ add r1, r4, #0x0
+ add r1, #0x23
+ ldrb r1, [r1, #0x0]
+ add r0, r0, #0x2
+ add r3, r7, #0x0
+ strb r1, [r5, r0]
+ ldr r0, [sp, #0x20]
+ add r1, r4, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x24]
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ bl FUN_0200FE20
+ add r0, r4, #0x0
+ add r0, #0x20
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _020112EA
+ add r4, #0x23
+ ldrb r3, [r4, #0x0]
+ ldr r0, [sp, #0x24]
+ ldr r2, [sp, #0x20]
+ mov r1, #0x1
+ bl FUN_0200F6E4
+ b _020112F8
+_020112EA:
+ add r4, #0x23
+ ldrb r3, [r4, #0x0]
+ ldr r0, [sp, #0x24]
+ ldr r2, [sp, #0x20]
+ mov r1, #0x2
+ bl FUN_0200F6E4
+_020112F8:
+ ldr r0, _02011304 ; =0x00000385
+ mov r1, #0x0
+ strb r1, [r5, r0]
+ add sp, #0x8
+ pop {r3-r7, pc}
+ nop
+_02011304: .word 0x00000385
+
+ thumb_func_start FUN_02011308
+FUN_02011308: ; 0x02011308
+ push {r4-r6, lr}
+ sub sp, #0x10
+ add r4, r1, #0x0
+ ldr r1, _02011378 ; =0x00000385
+ add r5, r0, #0x0
+ ldrb r1, [r5, r1]
+ mov r6, #0x0
+ cmp r1, #0x0
+ beq _02011324
+ cmp r1, #0x1
+ beq _0201135A
+ cmp r1, #0x2
+ beq _02011370
+ b _02011372
+_02011324:
+ bl FUN_0200FE90
+ cmp r0, #0x1
+ bne _02011372
+ ldr r2, _02011378 ; =0x00000385
+ ldrb r0, [r5, r2]
+ sub r1, r2, #0x5
+ add r0, r0, #0x1
+ strb r0, [r5, r2]
+ ldr r0, [r4, #0x10]
+ sub r2, r2, #0x1
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x18]
+ str r0, [sp, #0x4]
+ ldr r0, [r4, #0x1c]
+ str r0, [sp, #0x8]
+ ldr r0, [r4, #0x20]
+ str r0, [sp, #0xc]
+ ldr r1, [r5, r1]
+ add r0, r5, #0x0
+ ldrb r2, [r5, r2]
+ ldr r3, [r4, #0x8]
+ add r0, #0x4c
+ add r1, #0x24
+ bl FUN_02010FD0
+ b _02011372
+_0201135A:
+ add r0, #0x4c
+ bl FUN_020110BC
+ cmp r0, #0x1
+ bne _02011372
+ ldr r0, _02011378 ; =0x00000385
+ mov r6, #0x1
+ ldrb r1, [r5, r0]
+ add r1, r1, #0x1
+ strb r1, [r5, r0]
+ b _02011372
+_02011370:
+ mov r6, #0x1
+_02011372:
+ add r0, r6, #0x0
+ add sp, #0x10
+ pop {r4-r6, pc}
+ .balign 4
+_02011378: .word 0x00000385
+
+ thumb_func_start FUN_0201137C
+FUN_0201137C: ; 0x0201137C
+ push {r3-r7, lr}
+ sub sp, #0x10
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ add r5, r0, #0x0
+ lsl r0, r6, #0xc
+ ldr r2, [r4, #0x2c]
+ add r7, r3, #0x0
+ asr r1, r0, #0x1f
+ asr r3, r2, #0x1f
+ blx _ll_mul
+ add r2, r0, #0x0
+ mov r0, #0x2
+ mov r3, #0x0
+ lsl r0, r0, #0xa
+ add r0, r2, r0
+ adc r1, r3
+ lsl r1, r1, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r1
+ mov r1, #0xe1
+ asr r0, r0, #0xc
+ lsl r1, r1, #0x2
+ strb r0, [r5, r1]
+ ldrb r0, [r5, r1]
+ sub r2, r6, r0
+ sub r0, r1, #0x4
+ str r4, [r5, r0]
+ add r4, #0x23
+ add r0, r1, #0x2
+ ldrb r3, [r4, #0x0]
+ sub r1, r1, #0x4
+ strb r3, [r5, r0]
+ ldr r0, [sp, #0x28]
+ add r3, r7, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x2c]
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x30]
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x34]
+ str r0, [sp, #0xc]
+ ldr r1, [r5, r1]
+ add r0, r5, #0x0
+ add r0, #0x4c
+ add r1, #0x24
+ bl FUN_02010FD0
+ ldr r0, _020113E8 ; =0x00000385
+ mov r1, #0x0
+ strb r1, [r5, r0]
+ add sp, #0x10
+ pop {r3-r7, pc}
+ .balign 4
+_020113E8: .word 0x00000385
+
+ thumb_func_start FUN_020113EC
+FUN_020113EC: ; 0x020113EC
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r4, r1, #0x0
+ ldr r1, _0201147C ; =0x00000385
+ add r5, r0, #0x0
+ ldrb r1, [r5, r1]
+ mov r6, #0x0
+ cmp r1, #0x0
+ beq _02011408
+ cmp r1, #0x1
+ beq _02011460
+ cmp r1, #0x2
+ beq _02011474
+ b _02011476
+_02011408:
+ add r0, #0x4c
+ bl FUN_020110BC
+ cmp r0, #0x1
+ bne _02011476
+ ldr r2, _0201147C ; =0x00000385
+ ldrb r0, [r5, r2]
+ sub r1, r2, #0x5
+ add r0, r0, #0x1
+ strb r0, [r5, r2]
+ ldr r0, [r4, #0x10]
+ sub r2, r2, #0x1
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x18]
+ str r0, [sp, #0x4]
+ ldrb r2, [r5, r2]
+ ldr r1, [r5, r1]
+ ldr r3, [r4, #0x8]
+ add r0, r5, #0x0
+ bl FUN_0200FE20
+ mov r0, #0xe
+ lsl r0, r0, #0x6
+ ldr r3, [r5, r0]
+ add r0, r3, #0x0
+ add r0, #0x20
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ ldr r0, [r4, #0x18]
+ bne _02011452
+ add r3, #0x23
+ ldrb r3, [r3, #0x0]
+ ldr r2, [r4, #0x10]
+ mov r1, #0x1
+ bl FUN_0200F6E4
+ b _02011476
+_02011452:
+ add r3, #0x23
+ ldrb r3, [r3, #0x0]
+ ldr r2, [r4, #0x10]
+ mov r1, #0x2
+ bl FUN_0200F6E4
+ b _02011476
+_02011460:
+ bl FUN_0200FE90
+ cmp r0, #0x1
+ bne _02011476
+ ldr r0, _0201147C ; =0x00000385
+ mov r6, #0x1
+ ldrb r1, [r5, r0]
+ add r1, r1, #0x1
+ strb r1, [r5, r0]
+ b _02011476
+_02011474:
+ mov r6, #0x1
+_02011476:
+ add r0, r6, #0x0
+ add sp, #0x8
+ pop {r4-r6, pc}
+ .balign 4
+_0201147C: .word 0x00000385
+
+ thumb_func_start FUN_02011480
+FUN_02011480: ; 0x02011480
+ cmp r1, #0x0
+ ldr r1, _020114A4 ; =0xFFFF1FFF
+ bne _02011496
+ mov r3, #0x1
+ lsl r3, r3, #0x1a
+ ldr r2, [r3, #0x0]
+ lsl r0, r0, #0xd
+ and r1, r2
+ orr r0, r1
+ str r0, [r3, #0x0]
+ bx lr
+_02011496:
+ ldr r3, _020114A8 ; =0x04001000
+ lsl r0, r0, #0xd
+ ldr r2, [r3, #0x0]
+ and r1, r2
+ orr r0, r1
+ str r0, [r3, #0x0]
+ bx lr
+ .balign 4
+_020114A4: .word 0xFFFF1FFF
+_020114A8: .word 0x04001000
+
+ thumb_func_start FUN_020114AC
+FUN_020114AC: ; 0x020114AC
+ push {r3-r4}
+ cmp r2, #0x0
+ bne _020114EE
+ cmp r3, #0x0
+ bne _020114D2
+ ldr r2, _02011528 ; =0x04000048
+ ldrh r3, [r2, #0x0]
+ mov r2, #0x3f
+ bic r3, r2
+ add r2, r3, #0x0
+ orr r2, r0
+ cmp r1, #0x0
+ beq _020114CA
+ mov r0, #0x20
+ orr r2, r0
+_020114CA:
+ ldr r0, _02011528 ; =0x04000048
+ strh r2, [r0, #0x0]
+ pop {r3-r4}
+ bx lr
+_020114D2:
+ ldr r2, _0201152C ; =0x04001048
+ ldrh r3, [r2, #0x0]
+ mov r2, #0x3f
+ bic r3, r2
+ add r2, r3, #0x0
+ orr r2, r0
+ cmp r1, #0x0
+ beq _020114E6
+ mov r0, #0x20
+ orr r2, r0
+_020114E6:
+ ldr r0, _0201152C ; =0x04001048
+ strh r2, [r0, #0x0]
+ pop {r3-r4}
+ bx lr
+_020114EE:
+ cmp r3, #0x0
+ ldr r2, _02011530 ; =0xFFFFC0FF
+ bne _0201150E
+ ldr r4, _02011528 ; =0x04000048
+ lsl r0, r0, #0x8
+ ldrh r3, [r4, #0x0]
+ and r2, r3
+ orr r2, r0
+ cmp r1, #0x0
+ beq _02011506
+ lsr r0, r4, #0xd
+ orr r2, r0
+_02011506:
+ ldr r0, _02011528 ; =0x04000048
+ strh r2, [r0, #0x0]
+ pop {r3-r4}
+ bx lr
+_0201150E:
+ ldr r4, _0201152C ; =0x04001048
+ lsl r0, r0, #0x8
+ ldrh r3, [r4, #0x0]
+ and r2, r3
+ orr r2, r0
+ cmp r1, #0x0
+ beq _02011520
+ lsr r0, r4, #0xd
+ orr r2, r0
+_02011520:
+ ldr r0, _0201152C ; =0x04001048
+ strh r2, [r0, #0x0]
+ pop {r3-r4}
+ bx lr
+ .balign 4
+_02011528: .word 0x04000048
+_0201152C: .word 0x04001048
+_02011530: .word 0xFFFFC0FF
+
+ thumb_func_start FUN_02011534
+FUN_02011534: ; 0x02011534
+ cmp r2, #0x0
+ bne _02011552
+ ldr r2, _0201156C ; =0x0400004A
+ ldrh r3, [r2, #0x0]
+ mov r2, #0x3f
+ bic r3, r2
+ add r2, r3, #0x0
+ orr r2, r0
+ cmp r1, #0x0
+ beq _0201154C
+ mov r0, #0x20
+ orr r2, r0
+_0201154C:
+ ldr r0, _0201156C ; =0x0400004A
+ strh r2, [r0, #0x0]
+ bx lr
+_02011552:
+ ldr r2, _02011570 ; =0x0400104A
+ ldrh r3, [r2, #0x0]
+ mov r2, #0x3f
+ bic r3, r2
+ add r2, r3, #0x0
+ orr r2, r0
+ cmp r1, #0x0
+ beq _02011566
+ mov r0, #0x20
+ orr r2, r0
+_02011566:
+ ldr r0, _02011570 ; =0x0400104A
+ strh r2, [r0, #0x0]
+ bx lr
+ .balign 4
+_0201156C: .word 0x0400004A
+_02011570: .word 0x0400104A
+
+ thumb_func_start FUN_02011574
+FUN_02011574: ; 0x02011574
+ push {r4-r5}
+ add r4, r2, #0x0
+ add r2, r3, #0x0
+ ldr r3, [sp, #0x8]
+ cmp r3, #0x0
+ bne _020115D2
+ ldr r3, [sp, #0xc]
+ cmp r3, #0x0
+ bne _020115AC
+ lsl r0, r0, #0x8
+ mov r3, #0xff
+ add r5, r0, #0x0
+ lsl r3, r3, #0x8
+ lsl r0, r4, #0x18
+ and r5, r3
+ lsl r1, r1, #0x8
+ and r3, r1
+ lsl r1, r2, #0x18
+ lsr r1, r1, #0x18
+ lsr r0, r0, #0x18
+ add r4, r5, #0x0
+ orr r4, r0
+ ldr r0, _02011624 ; =0x04000040
+ orr r1, r3
+ strh r4, [r0, #0x0]
+ strh r1, [r0, #0x4]
+ pop {r4-r5}
+ bx lr
+_020115AC:
+ lsl r0, r0, #0x8
+ mov r3, #0xff
+ add r5, r0, #0x0
+ lsl r3, r3, #0x8
+ lsl r0, r4, #0x18
+ and r5, r3
+ lsl r1, r1, #0x8
+ and r3, r1
+ lsl r1, r2, #0x18
+ lsr r1, r1, #0x18
+ lsr r0, r0, #0x18
+ add r4, r5, #0x0
+ orr r4, r0
+ ldr r0, _02011628 ; =0x04001040
+ orr r1, r3
+ strh r4, [r0, #0x0]
+ strh r1, [r0, #0x4]
+ pop {r4-r5}
+ bx lr
+_020115D2:
+ ldr r3, [sp, #0xc]
+ cmp r3, #0x0
+ bne _020115FE
+ lsl r0, r0, #0x8
+ mov r3, #0xff
+ add r5, r0, #0x0
+ lsl r3, r3, #0x8
+ lsl r0, r4, #0x18
+ and r5, r3
+ lsl r1, r1, #0x8
+ and r3, r1
+ lsl r1, r2, #0x18
+ lsr r1, r1, #0x18
+ lsr r0, r0, #0x18
+ add r4, r5, #0x0
+ orr r4, r0
+ ldr r0, _0201162C ; =0x04000042
+ orr r1, r3
+ strh r4, [r0, #0x0]
+ strh r1, [r0, #0x4]
+ pop {r4-r5}
+ bx lr
+_020115FE:
+ lsl r0, r0, #0x8
+ mov r3, #0xff
+ add r5, r0, #0x0
+ lsl r3, r3, #0x8
+ lsl r0, r4, #0x18
+ and r5, r3
+ lsl r1, r1, #0x8
+ and r3, r1
+ lsl r1, r2, #0x18
+ lsr r1, r1, #0x18
+ lsr r0, r0, #0x18
+ add r4, r5, #0x0
+ orr r4, r0
+ ldr r0, _02011630 ; =0x04001042
+ orr r1, r3
+ strh r4, [r0, #0x0]
+ strh r1, [r0, #0x4]
+ pop {r4-r5}
+ bx lr
+ .balign 4
+_02011624: .word 0x04000040
+_02011628: .word 0x04001040
+_0201162C: .word 0x04000042
+_02011630: .word 0x04001042
+
+ thumb_func_start FUN_02011634
+FUN_02011634: ; 0x02011634
+ push {r4, lr}
+ lsl r3, r2, #0x3
+ add r4, r0, r3
+ str r1, [r0, r3]
+ str r2, [r4, #0x4]
+ ldr r0, _0201164C ; =FUN_020116CC
+ add r1, r4, #0x0
+ mov r2, #0x1
+ bl FUN_0200CA98
+ pop {r4, pc}
+ nop
+_0201164C: .word FUN_020116CC
+
+ thumb_func_start FUN_02011650
+FUN_02011650: ; 0x02011650
+ push {r4-r6, lr}
+ ldr r5, [sp, #0x10]
+ add r0, #0x10
+ lsl r4, r5, #0x5
+ add r6, r0, r4
+ lsl r0, r3, #0x4
+ add r4, r6, r0
+ str r1, [r6, r0]
+ str r2, [r4, #0x4]
+ str r3, [r4, #0x8]
+ ldr r0, _02011674 ; =FUN_020116E0
+ add r1, r4, #0x0
+ mov r2, #0x1
+ str r5, [r4, #0xc]
+ bl FUN_0200CA98
+ pop {r4-r6, pc}
+ nop
+_02011674: .word FUN_020116E0
+
+ thumb_func_start FUN_02011678
+FUN_02011678: ; 0x02011678
+ push {r3-r5, lr}
+ mov r4, #0xc
+ add r0, #0x68
+ mul r4, r3
+ add r5, r0, r4
+ str r1, [r0, r4]
+ str r2, [r5, #0x4]
+ ldr r0, _02011694 ; =FUN_020116FC
+ add r1, r5, #0x0
+ mov r2, #0x1
+ str r3, [r5, #0x8]
+ bl FUN_0200CA98
+ pop {r3-r5, pc}
+ .balign 4
+_02011694: .word FUN_020116FC
+
+ thumb_func_start FUN_02011698
+FUN_02011698: ; 0x02011698
+ push {r3-r7, lr}
+ ldr r5, [sp, #0x20]
+ add r7, r1, #0x0
+ add r0, #0x80
+ lsl r1, r5, #0x5
+ add r6, r0, r1
+ add r4, r2, #0x0
+ ldr r0, [sp, #0x1c]
+ add r2, r3, #0x0
+ lsl r3, r0, #0x4
+ add r1, r6, r3
+ strh r7, [r6, r3]
+ strh r4, [r1, #0x2]
+ strh r2, [r1, #0x4]
+ ldr r2, [sp, #0x18]
+ strh r2, [r1, #0x6]
+ str r0, [r1, #0x8]
+ ldr r0, _020116C8 ; =FUN_02011714
+ mov r2, #0x1
+ str r5, [r1, #0xc]
+ bl FUN_0200CA98
+ pop {r3-r7, pc}
+ nop
+_020116C8: .word FUN_02011714
+
+ thumb_func_start FUN_020116CC
+FUN_020116CC: ; 0x020116CC
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldmia r1!, {r0-r1}
+ bl FUN_02011480
+ add r0, r4, #0x0
+ bl FUN_0200CAB4
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020116E0
+FUN_020116E0: ; 0x020116E0
+ push {r4, lr}
+ add r3, r1, #0x0
+ add r4, r0, #0x0
+ ldr r0, [r3, #0x0]
+ ldr r1, [r3, #0x4]
+ ldr r2, [r3, #0x8]
+ ldr r3, [r3, #0xc]
+ bl FUN_020114AC
+ add r0, r4, #0x0
+ bl FUN_0200CAB4
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020116FC
+FUN_020116FC: ; 0x020116FC
+ push {r4, lr}
+ add r2, r1, #0x0
+ add r4, r0, #0x0
+ ldr r0, [r2, #0x0]
+ ldr r1, [r2, #0x4]
+ ldr r2, [r2, #0x8]
+ bl FUN_02011534
+ add r0, r4, #0x0
+ bl FUN_0200CAB4
+ pop {r4, pc}
+
+ thumb_func_start FUN_02011714
+FUN_02011714: ; 0x02011714
+ push {r3-r5, lr}
+ sub sp, #0x8
+ add r3, r1, #0x0
+ add r4, r0, #0x0
+ ldr r0, [r3, #0x8]
+ mov r1, #0x2
+ str r0, [sp, #0x0]
+ ldr r0, [r3, #0xc]
+ mov r2, #0x4
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r5, #0x6
+ ldrsh r0, [r3, r0]
+ ldrsh r1, [r3, r1]
+ ldrsh r2, [r3, r2]
+ ldrsh r3, [r3, r5]
+ bl FUN_02011574
+ add r0, r4, #0x0
+ bl FUN_0200CAB4
+ add sp, #0x8
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02011744
+FUN_02011744: ; 0x02011744
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r7, r1, #0x0
+ str r0, [sp, #0x4]
+ add r0, r7, #0x0
+ mov r1, #0x68
+ bl FUN_02016998
+ str r0, [sp, #0x8]
+ cmp r0, #0x0
+ bne _0201175E
+ bl ErrorHandling
+_0201175E:
+ ldr r4, [sp, #0x8]
+ ldr r5, [sp, #0x8]
+ mov r6, #0x0
+ add r4, #0x30
+_02011766:
+ mov r0, #0x23
+ add r1, r6, #0x0
+ mov r2, #0x0
+ add r3, r4, #0x0
+ str r7, [sp, #0x0]
+ bl FUN_02006C30
+ str r0, [r5, #0x0]
+ cmp r0, #0x0
+ bne _0201177E
+ bl ErrorHandling
+_0201177E:
+ add r6, r6, #0x1
+ add r4, r4, #0x4
+ add r5, r5, #0x4
+ cmp r6, #0xc
+ blt _02011766
+ ldr r0, [sp, #0x4]
+ mov r1, #0x14
+ add r4, r0, #0x0
+ mul r4, r1
+ add r0, r7, #0x0
+ add r1, r4, #0x0
+ bl FUN_02016998
+ ldr r1, [sp, #0x8]
+ cmp r0, #0x0
+ str r0, [r1, #0x60]
+ bne _020117A4
+ bl ErrorHandling
+_020117A4:
+ ldr r1, [sp, #0x4]
+ ldr r0, [sp, #0x8]
+ add r2, r4, #0x0
+ str r1, [r0, #0x64]
+ ldr r0, [r0, #0x60]
+ mov r1, #0x0
+ blx FUN_020DF4A4
+ ldr r0, [sp, #0x8]
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020117BC
+FUN_020117BC: ; 0x020117BC
+ push {r4-r6, lr}
+ add r6, r0, #0x0
+ bne _020117C6
+ bl ErrorHandling
+_020117C6:
+ mov r4, #0x0
+ add r5, r6, #0x0
+_020117CA:
+ ldr r0, [r5, #0x0]
+ bl FUN_02016A18
+ add r4, r4, #0x1
+ add r5, r5, #0x4
+ cmp r4, #0xc
+ blt _020117CA
+ ldr r0, [r6, #0x60]
+ bl FUN_02016A18
+ add r0, r6, #0x0
+ bl FUN_02016A18
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_020117E8
+FUN_020117E8: ; 0x020117E8
+ push {r4-r7, lr}
+ sub sp, #0x1c
+ add r5, r0, #0x0
+ bne _020117F4
+ bl ErrorHandling
+_020117F4:
+ ldr r0, [r5, #0x0]
+ bl FUN_02011BA0
+ add r4, r0, #0x0
+ bne _02011802
+ bl ErrorHandling
+_02011802:
+ ldr r0, [r5, #0x10]
+ add r3, sp, #0x8
+ str r0, [r4, #0x8]
+ ldr r0, [r5, #0x18]
+ str r0, [r4, #0xc]
+ ldr r0, [r5, #0x1c]
+ str r0, [r4, #0x10]
+ str r3, [sp, #0x14]
+ str r3, [sp, #0x18]
+ ldr r1, [r5, #0x4]
+ ldr r2, [r5, #0x2c]
+ ldrb r0, [r1, #0x7]
+ ldrb r1, [r1, #0x8]
+ bl FUN_02011CA4
+ add r6, r0, #0x0
+ mov r1, #0x24
+ ldr r0, [r5, #0x2c]
+ mul r1, r6
+ bl FUN_020169D8
+ add r7, r0, #0x0
+ mov r1, #0xc
+ ldr r0, [r5, #0x2c]
+ mul r1, r6
+ bl FUN_02016998
+ str r0, [r4, #0x0]
+ str r6, [r4, #0x4]
+ ldr r0, [r5, #0x28]
+ add r1, sp, #0x8
+ str r0, [sp, #0x0]
+ ldr r0, [r5, #0x2c]
+ add r2, r7, #0x0
+ str r0, [sp, #0x4]
+ ldr r0, [r5, #0x4]
+ ldr r3, [r5, #0x14]
+ bl FUN_02011D2C
+ add r0, r5, #0x0
+ add r1, sp, #0x8
+ add r2, r7, #0x0
+ add r3, r4, #0x0
+ bl FUN_02011EAC
+ add r0, r7, #0x0
+ bl FUN_02016A18
+ add r0, sp, #0x8
+ bl FUN_02011FDC
+ add r0, r4, #0x0
+ add sp, #0x1c
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02011870
+FUN_02011870: ; 0x02011870
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _0201187A
+ bl ErrorHandling
+_0201187A:
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ bne _02011884
+ bl ErrorHandling
+_02011884:
+ add r0, r4, #0x0
+ bl FUN_02011F00
+ ldr r0, [r4, #0x0]
+ bl FUN_02016A18
+ add r0, r4, #0x0
+ bl FUN_02011B90
+ pop {r4, pc}
+
+ thumb_func_start FUN_02011898
+FUN_02011898: ; 0x02011898
+ push {r4-r5, lr}
+ sub sp, #0x14
+ add r3, sp, #0x0
+ add r5, r0, #0x0
+ str r3, [sp, #0xc]
+ str r3, [sp, #0x10]
+ add r4, r1, #0x0
+ ldrb r0, [r5, #0x7]
+ ldrb r1, [r5, #0x8]
+ bl FUN_02011CA4
+ add r0, sp, #0x0
+ add r1, r4, #0x0
+ bl FUN_02011E58
+ add r4, r0, #0x0
+ add r0, sp, #0x0
+ bl FUN_02011FDC
+ add r0, r4, #0x0
+ add sp, #0x14
+ pop {r4-r5, pc}
+
+ thumb_func_start FUN_020118C4
+FUN_020118C4: ; 0x020118C4
+ push {r3-r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ add r7, r2, #0x0
+ str r1, [sp, #0x0]
+ cmp r5, #0x0
+ bne _020118D6
+ bl ErrorHandling
+_020118D6:
+ ldr r0, [sp, #0x0]
+ str r0, [r5, #0xc]
+ str r7, [r5, #0x10]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x0]
+ ldr r0, [r5, #0x8]
+ lsl r7, r7, #0xc
+ cmp r0, #0x0
+ beq _020118F8
+ bl FUN_0202011C
+ ldr r2, [r0, #0x0]
+ ldr r1, [sp, #0x0]
+ ldr r0, [r0, #0x4]
+ add r1, r1, r2
+ str r1, [sp, #0x0]
+ add r7, r7, r0
+_020118F8:
+ mov r6, #0x0
+ str r6, [sp, #0xc]
+ ldr r0, [r5, #0x4]
+ cmp r0, #0x0
+ ble _02011932
+ add r4, r6, #0x0
+_02011904:
+ ldr r0, [r5, #0x0]
+ add r0, r0, r4
+ ldr r0, [r0, #0x4]
+ lsl r1, r0, #0xc
+ ldr r0, [sp, #0x0]
+ add r0, r0, r1
+ str r0, [sp, #0x4]
+ ldr r0, [r5, #0x0]
+ add r1, sp, #0x4
+ add r0, r0, r4
+ ldr r0, [r0, #0x8]
+ lsl r0, r0, #0xc
+ add r0, r7, r0
+ str r0, [sp, #0x8]
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, r4]
+ bl FUN_02020044
+ ldr r0, [r5, #0x4]
+ add r6, r6, #0x1
+ add r4, #0xc
+ cmp r6, r0
+ blt _02011904
+_02011932:
+ add sp, #0x10
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02011938
+FUN_02011938: ; 0x02011938
+ push {r3-r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ bne _02011944
+ bl ErrorHandling
+_02011944:
+ ldr r0, [r5, #0x8]
+ cmp r0, #0x0
+ beq _0201199E
+ ldr r1, [r5, #0xc]
+ lsl r1, r1, #0xc
+ str r1, [sp, #0x0]
+ ldr r1, [r5, #0x10]
+ lsl r7, r1, #0xc
+ bl FUN_0202011C
+ ldr r2, [r0, #0x0]
+ ldr r0, [r0, #0x4]
+ mov r6, #0x0
+ ldr r1, [sp, #0x0]
+ str r6, [sp, #0xc]
+ add r7, r7, r0
+ add r1, r1, r2
+ ldr r0, [r5, #0x4]
+ str r1, [sp, #0x0]
+ cmp r0, #0x0
+ ble _0201199E
+ add r4, r6, #0x0
+_02011970:
+ ldr r0, [r5, #0x0]
+ add r0, r0, r4
+ ldr r0, [r0, #0x4]
+ lsl r1, r0, #0xc
+ ldr r0, [sp, #0x0]
+ add r0, r0, r1
+ str r0, [sp, #0x4]
+ ldr r0, [r5, #0x0]
+ add r1, sp, #0x4
+ add r0, r0, r4
+ ldr r0, [r0, #0x8]
+ lsl r0, r0, #0xc
+ add r0, r7, r0
+ str r0, [sp, #0x8]
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, r4]
+ bl FUN_02020044
+ ldr r0, [r5, #0x4]
+ add r6, r6, #0x1
+ add r4, #0xc
+ cmp r6, r0
+ blt _02011970
+_0201199E:
+ add sp, #0x10
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020119A4
+FUN_020119A4: ; 0x020119A4
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ cmp r5, #0x0
+ bne _020119B4
+ bl ErrorHandling
+_020119B4:
+ cmp r4, #0x0
+ bne _020119BC
+ bl ErrorHandling
+_020119BC:
+ cmp r6, #0x0
+ bne _020119C4
+ bl ErrorHandling
+_020119C4:
+ ldr r0, [r5, #0xc]
+ str r0, [r4, #0x0]
+ ldr r0, [r5, #0x10]
+ str r0, [r6, #0x0]
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_020119D0
+FUN_020119D0: ; 0x020119D0
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r7, r1, #0x0
+ cmp r5, #0x0
+ bne _020119DE
+ bl ErrorHandling
+_020119DE:
+ ldr r0, [r5, #0x4]
+ mov r6, #0x0
+ cmp r0, #0x0
+ ble _020119FC
+ add r4, r6, #0x0
+_020119E8:
+ ldr r0, [r5, #0x0]
+ add r1, r7, #0x0
+ ldr r0, [r0, r4]
+ bl FUN_020200A0
+ ldr r0, [r5, #0x4]
+ add r6, r6, #0x1
+ add r4, #0xc
+ cmp r6, r0
+ blt _020119E8
+_020119FC:
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02011A00
+FUN_02011A00: ; 0x02011A00
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r7, r1, #0x0
+ cmp r5, #0x0
+ bne _02011A0E
+ bl ErrorHandling
+_02011A0E:
+ ldr r0, [r5, #0x4]
+ mov r6, #0x0
+ cmp r0, #0x0
+ ble _02011A2C
+ add r4, r6, #0x0
+_02011A18:
+ ldr r0, [r5, #0x0]
+ add r1, r7, #0x0
+ ldr r0, [r0, r4]
+ bl FUN_02020238
+ ldr r0, [r5, #0x4]
+ add r6, r6, #0x1
+ add r4, #0xc
+ cmp r6, r0
+ blt _02011A18
+_02011A2C:
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02011A30
+FUN_02011A30: ; 0x02011A30
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r7, r1, #0x0
+ cmp r5, #0x0
+ bne _02011A3E
+ bl ErrorHandling
+_02011A3E:
+ ldr r0, [r5, #0x4]
+ mov r6, #0x0
+ cmp r0, #0x0
+ ble _02011A5C
+ add r4, r6, #0x0
+_02011A48:
+ ldr r0, [r5, #0x0]
+ add r1, r7, #0x0
+ ldr r0, [r0, r4]
+ bl FUN_02020310
+ ldr r0, [r5, #0x4]
+ add r6, r6, #0x1
+ add r4, #0xc
+ cmp r6, r0
+ blt _02011A48
+_02011A5C:
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02011A60
+FUN_02011A60: ; 0x02011A60
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r7, r1, #0x0
+ cmp r5, #0x0
+ bne _02011A6E
+ bl ErrorHandling
+_02011A6E:
+ ldr r0, [r5, #0x4]
+ mov r6, #0x0
+ cmp r0, #0x0
+ ble _02011A8C
+ add r4, r6, #0x0
+_02011A78:
+ ldr r0, [r5, #0x0]
+ add r1, r7, #0x0
+ ldr r0, [r0, r4]
+ bl FUN_02020248
+ ldr r0, [r5, #0x4]
+ add r6, r6, #0x1
+ add r4, #0xc
+ cmp r6, r0
+ blt _02011A78
+_02011A8C:
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02011A90
+FUN_02011A90: ; 0x02011A90
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r7, r1, #0x0
+ cmp r5, #0x0
+ bne _02011A9E
+ bl ErrorHandling
+_02011A9E:
+ ldr r0, [r5, #0x4]
+ mov r6, #0x0
+ cmp r0, #0x0
+ ble _02011ABC
+ add r4, r6, #0x0
+_02011AA8:
+ ldr r0, [r5, #0x0]
+ add r1, r7, #0x0
+ ldr r0, [r0, r4]
+ bl FUN_020202A8
+ ldr r0, [r5, #0x4]
+ add r6, r6, #0x1
+ add r4, #0xc
+ cmp r6, r0
+ blt _02011AA8
+_02011ABC:
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02011AC0
+FUN_02011AC0: ; 0x02011AC0
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r7, r1, #0x0
+ cmp r5, #0x0
+ bne _02011ACE
+ bl ErrorHandling
+_02011ACE:
+ ldr r0, [r5, #0x4]
+ mov r6, #0x0
+ cmp r0, #0x0
+ ble _02011AEC
+ add r4, r6, #0x0
+_02011AD8:
+ ldr r0, [r5, #0x0]
+ add r1, r7, #0x0
+ ldr r0, [r0, r4]
+ bl FUN_020202DC
+ ldr r0, [r5, #0x4]
+ add r6, r6, #0x1
+ add r4, #0xc
+ cmp r6, r0
+ blt _02011AD8
+_02011AEC:
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02011AF0
+FUN_02011AF0: ; 0x02011AF0
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r7, r1, #0x0
+ cmp r5, #0x0
+ bne _02011AFE
+ bl ErrorHandling
+_02011AFE:
+ ldr r0, [r5, #0x4]
+ mov r6, #0x0
+ cmp r0, #0x0
+ ble _02011B1C
+ add r4, r6, #0x0
+_02011B08:
+ ldr r0, [r5, #0x0]
+ add r1, r7, #0x0
+ ldr r0, [r0, r4]
+ bl FUN_02020398
+ ldr r0, [r5, #0x4]
+ add r6, r6, #0x1
+ add r4, #0xc
+ cmp r6, r0
+ blt _02011B08
+_02011B1C:
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02011B20
+FUN_02011B20: ; 0x02011B20
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r6, r0, #0x0
+ ldr r0, [sp, #0x20]
+ add r7, r1, #0x0
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x24]
+ ldrb r1, [r6, #0x7]
+ str r0, [sp, #0x24]
+ add r0, r3, #0x0
+ add r0, r7, r0
+ str r2, [sp, #0x0]
+ str r3, [sp, #0x4]
+ cmp r1, r0
+ bge _02011B42
+ bl ErrorHandling
+_02011B42:
+ ldrb r2, [r6, #0x8]
+ ldr r1, [sp, #0x0]
+ ldr r0, [sp, #0x20]
+ add r0, r1, r0
+ cmp r2, r0
+ bge _02011B52
+ bl ErrorHandling
+_02011B52:
+ ldr r0, [sp, #0x0]
+ mov r4, #0x0
+ cmp r0, #0x0
+ ble _02011B8A
+ lsl r0, r7, #0x5
+ add r5, r4, #0x0
+ str r0, [sp, #0x8]
+_02011B60:
+ ldrb r1, [r6, #0x7]
+ ldr r0, [sp, #0x20]
+ add r2, r1, #0x0
+ add r0, r4, r0
+ mul r2, r0
+ ldr r0, [sp, #0x4]
+ lsl r1, r5, #0x5
+ add r2, r2, r0
+ ldr r0, [sp, #0x24]
+ lsl r2, r2, #0x5
+ add r0, r0, r1
+ ldr r1, [r6, #0xc]
+ add r1, r1, r2
+ ldr r2, [sp, #0x8]
+ blx FUN_020DF438
+ ldr r0, [sp, #0x0]
+ add r4, r4, #0x1
+ add r5, r5, r7
+ cmp r4, r0
+ blt _02011B60
+_02011B8A:
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02011B90
+FUN_02011B90: ; 0x02011B90
+ mov r2, #0x14
+ mov r1, #0x0
+_02011B94:
+ strb r1, [r0, #0x0]
+ add r0, r0, #0x1
+ sub r2, r2, #0x1
+ bne _02011B94
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02011BA0
+FUN_02011BA0: ; 0x02011BA0
+ ldr r1, [r0, #0x64]
+ mov r2, #0x0
+ cmp r1, #0x0
+ ble _02011BC4
+ ldr r3, [r0, #0x60]
+_02011BAA:
+ ldr r1, [r3, #0x0]
+ cmp r1, #0x0
+ bne _02011BBA
+ ldr r1, [r0, #0x60]
+ mov r0, #0x14
+ mul r0, r2
+ add r0, r1, r0
+ bx lr
+_02011BBA:
+ ldr r1, [r0, #0x64]
+ add r2, r2, #0x1
+ add r3, #0x14
+ cmp r2, r1
+ blt _02011BAA
+_02011BC4:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02011BC8
+FUN_02011BC8: ; 0x02011BC8
+ push {r3-r4}
+ ldr r4, _02011BF0 ; =0x020ED398
+ mov r3, #0x0
+_02011BCE:
+ ldrb r2, [r4, #0x0]
+ cmp r2, r0
+ bgt _02011BE0
+ ldrb r2, [r4, #0x1]
+ cmp r2, r1
+ bgt _02011BE0
+ add r0, r3, #0x0
+ pop {r3-r4}
+ bx lr
+_02011BE0:
+ add r3, r3, #0x1
+ add r4, r4, #0x2
+ cmp r3, #0xc
+ blt _02011BCE
+ mov r0, #0xc
+ pop {r3-r4}
+ bx lr
+ nop
+_02011BF0: .word 0x020ED398
+
+ thumb_func_start FUN_02011BF4
+FUN_02011BF4: ; 0x02011BF4
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ add r0, r2, #0x0
+ bl FUN_02011FAC
+ ldr r1, [r6, #0x10]
+ add r4, r0, #0x0
+ bl FUN_02011FF4
+ ldr r0, [r5, #0x8]
+ ldr r1, [r5, #0xc]
+ bl FUN_02011BC8
+ str r0, [r4, #0x8]
+ ldr r0, [r5, #0x4]
+ ldr r1, _02011C9C ; =0x020ED398
+ str r0, [r4, #0x0]
+ ldr r0, [r5, #0x0]
+ ldr r6, _02011CA0 ; =0x020ED399
+ str r0, [r4, #0x4]
+ ldr r0, [r4, #0x8]
+ ldr r2, [r5, #0x8]
+ lsl r3, r0, #0x1
+ ldrb r0, [r1, r3]
+ ldrb r3, [r6, r3]
+ sub r2, r2, r0
+ ldr r0, [r5, #0xc]
+ sub r6, r0, r3
+ cmp r2, #0x0
+ ble _02011C5C
+ str r0, [r5, #0x1c]
+ str r2, [r5, #0x18]
+ ldr r0, [r5, #0x0]
+ str r0, [r5, #0x10]
+ ldr r2, [r4, #0x8]
+ ldr r0, [r5, #0x4]
+ lsl r2, r2, #0x1
+ ldrb r1, [r1, r2]
+ add r0, r0, r1
+ str r0, [r5, #0x14]
+ add r0, r5, #0x0
+ add r0, #0x20
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x1
+ bne _02011C54
+ bl ErrorHandling
+_02011C54:
+ add r0, r5, #0x0
+ mov r1, #0x1
+ add r0, #0x20
+ strb r1, [r0, #0x0]
+_02011C5C:
+ cmp r6, #0x0
+ ble _02011C72
+ ldr r0, [r4, #0x8]
+ ldr r2, [r5, #0x0]
+ lsl r1, r0, #0x1
+ ldr r0, _02011CA0 ; =0x020ED399
+ ldrb r0, [r0, r1]
+ add r0, r2, r0
+ str r0, [r5, #0x0]
+ str r6, [r5, #0xc]
+ b _02011C96
+_02011C72:
+ add r0, r5, #0x0
+ add r0, #0x20
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x1
+ bne _02011C92
+ add r3, r5, #0x0
+ add r3, #0x10
+ add r2, r5, #0x0
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ mov r0, #0x0
+ add r5, #0x20
+ strb r0, [r5, #0x0]
+ b _02011C96
+_02011C92:
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_02011C96:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ nop
+_02011C9C: .word 0x020ED398
+_02011CA0: .word 0x020ED399
+
+ thumb_func_start FUN_02011CA4
+FUN_02011CA4: ; 0x02011CA4
+ push {r3-r7, lr}
+ sub sp, #0x38
+ add r7, r0, #0x0
+ str r1, [sp, #0x0]
+ add r5, r2, #0x0
+ add r6, r3, #0x0
+ cmp r7, #0x0
+ bne _02011CB8
+ bl ErrorHandling
+_02011CB8:
+ ldr r0, [sp, #0x0]
+ cmp r0, #0x0
+ bne _02011CC2
+ bl ErrorHandling
+_02011CC2:
+ ldr r0, [sp, #0x0]
+ mov r4, #0x0
+ str r0, [sp, #0x10]
+ str r4, [sp, #0x4]
+ str r4, [sp, #0x8]
+ str r7, [sp, #0xc]
+ add r0, sp, #0x24
+ strb r4, [r0, #0x0]
+ ldr r0, [sp, #0x0]
+ str r4, [sp, #0x2c]
+ str r7, [sp, #0x30]
+ cmp r0, #0x0
+ beq _02011D20
+ add r7, sp, #0x4
+_02011CDE:
+ ldr r0, [sp, #0xc]
+ ldr r1, [sp, #0x0]
+ bl FUN_02011BC8
+ lsl r1, r0, #0x1
+ ldr r0, _02011D28 ; =0x020ED398
+ add r0, r0, r1
+ ldrb r0, [r0, #0x1]
+ ldr r1, [sp, #0x4]
+ add r1, r1, r0
+ str r1, [sp, #0x28]
+ ldr r1, [sp, #0x10]
+ sub r1, r1, r0
+ str r1, [sp, #0x34]
+ str r0, [sp, #0x10]
+_02011CFC:
+ add r0, r7, #0x0
+ add r1, r6, #0x0
+ add r2, r5, #0x0
+ add r4, r4, #0x1
+ bl FUN_02011BF4
+ cmp r0, #0x0
+ beq _02011CFC
+ add r3, sp, #0x28
+ add r2, sp, #0x4
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldr r0, [sp, #0x10]
+ str r0, [sp, #0x0]
+ cmp r0, #0x0
+ bne _02011CDE
+_02011D20:
+ add r0, r4, #0x0
+ add sp, #0x38
+ pop {r3-r7, pc}
+ nop
+_02011D28: .word 0x020ED398
+
+ thumb_func_start FUN_02011D2C
+FUN_02011D2C: ; 0x02011D2C
+ push {r4-r7, lr}
+ sub sp, #0x1c
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x30]
+ str r1, [sp, #0x14]
+ str r0, [sp, #0x30]
+ ldr r0, [sp, #0x34]
+ add r5, r2, #0x0
+ str r0, [sp, #0x34]
+ ldr r0, [sp, #0x30]
+ add r6, r3, #0x0
+ cmp r0, #0x1
+ bne _02011D4E
+ mov r0, #0x1
+ lsl r0, r0, #0x1a
+ ldr r1, [r0, #0x0]
+ b _02011D52
+_02011D4E:
+ ldr r0, _02011D98 ; =0x04001000
+ ldr r1, [r0, #0x0]
+_02011D52:
+ ldr r0, _02011D9C ; =0x00300010
+ add r7, r1, #0x0
+ and r7, r0
+ add r0, r7, #0x0
+ bl FUN_0201DED0
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x14]
+ ldr r4, [r0, #0xc]
+ cmp r4, r0
+ beq _02011D92
+_02011D68:
+ add r0, r5, #0x0
+ blx FUN_020B1A24
+ str r7, [sp, #0x0]
+ ldr r0, [sp, #0x30]
+ str r6, [sp, #0x4]
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x34]
+ ldr r3, [sp, #0x18]
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x10]
+ add r1, r4, #0x0
+ add r2, r5, #0x0
+ bl FUN_02011DA0
+ add r6, r0, #0x0
+ ldr r4, [r4, #0xc]
+ ldr r0, [sp, #0x14]
+ add r5, #0x24
+ cmp r4, r0
+ bne _02011D68
+_02011D92:
+ add sp, #0x1c
+ pop {r4-r7, pc}
+ nop
+_02011D98: .word 0x04001000
+_02011D9C: .word 0x00300010
+
+ thumb_func_start FUN_02011DA0
+FUN_02011DA0: ; 0x02011DA0
+ push {r4-r7, lr}
+ sub sp, #0x14
+ add r6, r1, #0x0
+ str r0, [sp, #0x8]
+ ldr r0, [r6, #0x8]
+ add r5, r2, #0x0
+ lsl r1, r0, #0x1
+ ldr r0, _02011E44 ; =0x020ED398
+ ldrb r0, [r0, r1]
+ str r0, [sp, #0x10]
+ ldr r0, _02011E48 ; =0x020ED399
+ ldrb r0, [r0, r1]
+ ldr r1, [sp, #0x10]
+ add r4, r1, #0x0
+ mul r4, r0
+ str r0, [sp, #0xc]
+ cmp r4, r3
+ bge _02011DC6
+ add r4, r3, #0x0
+_02011DC6:
+ lsl r4, r4, #0x5
+ ldr r0, [sp, #0x34]
+ add r1, r4, #0x0
+ bl FUN_020169D8
+ add r7, r0, #0x0
+ ldr r0, [r6, #0x4]
+ ldr r1, [sp, #0x10]
+ str r0, [sp, #0x0]
+ str r7, [sp, #0x4]
+ ldr r0, [sp, #0x8]
+ ldr r2, [sp, #0xc]
+ ldr r3, [r6, #0x0]
+ bl FUN_02011B20
+ add r0, r7, #0x0
+ add r1, r4, #0x0
+ blx DC_FlushRange
+ ldr r0, [sp, #0x30]
+ cmp r0, #0x1
+ bne _02011E08
+ ldr r6, [sp, #0x2c]
+ add r0, r7, #0x0
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ blx FUN_020C92F4
+ mov r0, #0x1
+ str r6, [r5, #0x4]
+ lsl r0, r0, #0x1a
+ ldr r1, [r0, #0x0]
+ b _02011E1A
+_02011E08:
+ ldr r6, [sp, #0x2c]
+ add r0, r7, #0x0
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ blx FUN_020C9294
+ ldr r0, _02011E4C ; =0x04001000
+ str r6, [r5, #0x8]
+ ldr r1, [r0, #0x0]
+_02011E1A:
+ ldr r0, _02011E50 ; =0x00300010
+ and r0, r1
+ str r0, [r5, #0x20]
+ ldr r0, _02011E54 ; =0x0000FFFF
+ str r0, [r5, #0xc]
+ str r0, [r5, #0x10]
+ mov r0, #0x3
+ str r0, [r5, #0x14]
+ mov r0, #0x0
+ str r0, [r5, #0x18]
+ mov r0, #0x1
+ str r0, [r5, #0x1c]
+ ldr r0, [sp, #0x28]
+ str r0, [r5, #0x20]
+ add r0, r7, #0x0
+ bl FUN_02016A18
+ ldr r0, [sp, #0x2c]
+ add r0, r0, r4
+ add sp, #0x14
+ pop {r4-r7, pc}
+ .balign 4
+_02011E44: .word 0x020ED398
+_02011E48: .word 0x020ED399
+_02011E4C: .word 0x04001000
+_02011E50: .word 0x00300010
+_02011E54: .word 0x0000FFFF
+
+ thumb_func_start FUN_02011E58
+FUN_02011E58: ; 0x02011E58
+ push {r3-r7, lr}
+ add r4, r0, #0x0
+ cmp r1, #0x1
+ bne _02011E68
+ mov r0, #0x1
+ lsl r0, r0, #0x1a
+ ldr r1, [r0, #0x0]
+ b _02011E6C
+_02011E68:
+ ldr r0, _02011EA0 ; =0x04001000
+ ldr r1, [r0, #0x0]
+_02011E6C:
+ ldr r0, _02011EA4 ; =0x00300010
+ and r0, r1
+ bl FUN_0201DED0
+ ldr r2, [r4, #0xc]
+ mov r3, #0x0
+ cmp r2, r4
+ beq _02011E9A
+ ldr r1, _02011EA8 ; =0x020ED398
+_02011E7E:
+ ldr r5, [r2, #0x8]
+ lsl r5, r5, #0x1
+ add r7, r1, r5
+ ldrb r6, [r1, r5]
+ ldrb r5, [r7, #0x1]
+ mul r5, r6
+ cmp r5, r0
+ bge _02011E90
+ add r5, r0, #0x0
+_02011E90:
+ ldr r2, [r2, #0xc]
+ lsl r5, r5, #0x5
+ add r3, r3, r5
+ cmp r2, r4
+ bne _02011E7E
+_02011E9A:
+ add r0, r3, #0x0
+ pop {r3-r7, pc}
+ nop
+_02011EA0: .word 0x04001000
+_02011EA4: .word 0x00300010
+_02011EA8: .word 0x020ED398
+
+ thumb_func_start FUN_02011EAC
+FUN_02011EAC: ; 0x02011EAC
+ push {r3-r7, lr}
+ sub sp, #0x8
+ str r0, [sp, #0x0]
+ add r0, r1, #0x0
+ ldr r4, [r0, #0xc]
+ str r1, [sp, #0x4]
+ add r7, r2, #0x0
+ add r6, r3, #0x0
+ cmp r4, r0
+ beq _02011EFC
+ mov r5, #0x0
+_02011EC2:
+ ldr r0, [sp, #0x0]
+ add r1, r4, #0x0
+ add r2, r7, #0x0
+ bl FUN_02011F24
+ ldr r1, [r6, #0x0]
+ str r0, [r1, r5]
+ ldr r0, [r6, #0x0]
+ ldr r0, [r0, r5]
+ cmp r0, #0x0
+ bne _02011EDC
+ bl ErrorHandling
+_02011EDC:
+ ldr r0, [r4, #0x0]
+ add r7, #0x24
+ lsl r1, r0, #0x3
+ ldr r0, [r6, #0x0]
+ add r0, r0, r5
+ str r1, [r0, #0x4]
+ ldr r0, [r4, #0x4]
+ lsl r1, r0, #0x3
+ ldr r0, [r6, #0x0]
+ add r0, r0, r5
+ str r1, [r0, #0x8]
+ ldr r4, [r4, #0xc]
+ ldr r0, [sp, #0x4]
+ add r5, #0xc
+ cmp r4, r0
+ bne _02011EC2
+_02011EFC:
+ add sp, #0x8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02011F00
+FUN_02011F00: ; 0x02011F00
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x4]
+ mov r6, #0x0
+ cmp r0, #0x0
+ ble _02011F20
+ add r4, r6, #0x0
+_02011F0E:
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, r4]
+ bl FUN_0201FFC8
+ ldr r0, [r5, #0x4]
+ add r6, r6, #0x1
+ add r4, #0xc
+ cmp r6, r0
+ blt _02011F0E
+_02011F20:
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02011F24
+FUN_02011F24: ; 0x02011F24
+ push {r4-r5, lr}
+ sub sp, #0x44
+ add r5, r0, #0x0
+ mov r0, #0x0
+ str r2, [sp, #0x0]
+ str r0, [sp, #0x4]
+ add r4, r1, #0x0
+ ldr r1, [r5, #0xc]
+ str r1, [sp, #0x8]
+ ldr r1, [r4, #0x8]
+ ldr r2, [r5, #0x0]
+ lsl r1, r1, #0x2
+ add r1, r2, r1
+ ldr r1, [r1, #0x30]
+ str r1, [sp, #0xc]
+ str r0, [sp, #0x10]
+ str r0, [sp, #0x14]
+ str r0, [sp, #0x18]
+ str r0, [sp, #0x1c]
+ ldr r2, [r5, #0x20]
+ add r1, sp, #0x20
+ strb r2, [r1, #0x0]
+ ldr r1, [r5, #0x8]
+ str r1, [sp, #0x24]
+ add r1, sp, #0x0
+ str r1, [sp, #0x28]
+ ldr r1, [r5, #0x24]
+ str r1, [sp, #0x38]
+ ldr r1, [r5, #0x28]
+ str r1, [sp, #0x3c]
+ ldr r1, [r5, #0x2c]
+ str r1, [sp, #0x40]
+ str r0, [sp, #0x2c]
+ str r0, [sp, #0x30]
+ str r0, [sp, #0x34]
+ ldr r0, [r5, #0x10]
+ cmp r0, #0x0
+ beq _02011F80
+ bl FUN_0202011C
+ add r3, r0, #0x0
+ ldmia r3!, {r0-r1}
+ add r2, sp, #0x2c
+ stmia r2!, {r0-r1}
+ ldr r0, [r3, #0x0]
+ str r0, [r2, #0x0]
+_02011F80:
+ ldr r1, [r4, #0x0]
+ ldr r2, [r5, #0x18]
+ lsl r1, r1, #0x3
+ add r1, r2, r1
+ ldr r0, [sp, #0x2c]
+ lsl r1, r1, #0xc
+ add r0, r0, r1
+ str r0, [sp, #0x2c]
+ ldr r1, [r4, #0x4]
+ ldr r2, [r5, #0x1c]
+ lsl r1, r1, #0x3
+ add r1, r2, r1
+ ldr r0, [sp, #0x30]
+ lsl r1, r1, #0xc
+ add r0, r0, r1
+ str r0, [sp, #0x30]
+ add r0, sp, #0x24
+ bl FUN_0201FF84
+ add sp, #0x44
+ pop {r4-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02011FAC
+FUN_02011FAC: ; 0x02011FAC
+ push {r4, lr}
+ mov r1, #0x14
+ bl FUN_020169D8
+ add r4, r0, #0x0
+ bne _02011FBC
+ bl ErrorHandling
+_02011FBC:
+ mov r0, #0x0
+ str r0, [r4, #0xc]
+ str r0, [r4, #0x10]
+ add r0, r4, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02011FC8
+FUN_02011FC8: ; 0x02011FC8
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _02011FD2
+ bl ErrorHandling
+_02011FD2:
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02011FDC
+FUN_02011FDC: ; 0x02011FDC
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0xc]
+ cmp r0, r5
+ beq _02011FF2
+_02011FE6:
+ ldr r4, [r0, #0xc]
+ bl FUN_02011FC8
+ add r0, r4, #0x0
+ cmp r4, r5
+ bne _02011FE6
+_02011FF2:
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02011FF4
+FUN_02011FF4: ; 0x02011FF4
+ ldr r2, [r1, #0xc]
+ str r2, [r0, #0xc]
+ str r1, [r0, #0x10]
+ ldr r2, [r1, #0xc]
+ str r0, [r2, #0x10]
+ str r0, [r1, #0xc]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02012004
+FUN_02012004: ; 0x02012004
+ push {r3-r7, lr}
+ sub sp, #0x8
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x24]
+ ldr r6, [sp, #0x20]
+ str r1, [sp, #0x4]
+ add r5, r2, #0x0
+ add r4, r3, #0x0
+ str r0, [sp, #0x24]
+ mov r7, #0x0
+_02012018:
+ ldr r1, [r4, #0x0]
+ ldr r0, [sp, #0x4]
+ ldr r2, [r5, #0x0]
+ add r0, r0, r1
+ ldr r1, [sp, #0x0]
+ add r1, r1, r2
+ add r2, r6, #0x0
+ blx FUN_020DF438
+ ldr r1, [r5, #0x0]
+ ldr r0, [sp, #0x24]
+ add r7, r7, #0x1
+ add r0, r1, r0
+ str r0, [r5, #0x0]
+ ldr r0, [r4, #0x0]
+ add r0, r0, r6
+ str r0, [r4, #0x0]
+ cmp r7, #0x8
+ blt _02012018
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02012044
+FUN_02012044: ; 0x02012044
+ push {r4-r6, lr}
+ add r5, r3, #0x0
+ bl LoadFromNarc_2
+ add r4, r0, #0x0
+ bne _02012054
+ bl ErrorHandling
+_02012054:
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ blx FUN_020B0088
+ add r6, r0, #0x0
+ cmp r5, #0x0
+ bne _02012066
+ bl ErrorHandling
+_02012066:
+ cmp r6, #0x0
+ bne _0201206E
+ bl ErrorHandling
+_0201206E:
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02012078
+FUN_02012078: ; 0x02012078
+ push {r4-r7, lr}
+ sub sp, #0x2c
+ ldr r4, [sp, #0x40]
+ str r0, [sp, #0x8]
+ add r6, r0, r2
+ ldrh r0, [r4, #0x2]
+ str r1, [sp, #0xc]
+ add r5, r3, #0x0
+ cmp r0, r6
+ bge _02012090
+ bl ErrorHandling
+_02012090:
+ ldr r0, [sp, #0xc]
+ ldrh r1, [r4, #0x0]
+ add r0, r0, r5
+ str r0, [sp, #0x14]
+ cmp r1, r0
+ bge _020120A0
+ bl ErrorHandling
+_020120A0:
+ ldr r0, [r4, #0x14]
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x44]
+ str r0, [sp, #0x1c]
+ ldrh r0, [r4, #0x2]
+ lsl r7, r0, #0x2
+ ldr r0, [sp, #0xc]
+ add r1, r0, #0x0
+ mul r1, r7
+ ldr r0, [sp, #0x8]
+ str r1, [sp, #0x18]
+ lsl r1, r0, #0x2
+ ldr r0, [sp, #0x18]
+ str r1, [sp, #0x10]
+ add r0, r1, r0
+ str r0, [sp, #0x28]
+ mov r0, #0x0
+ str r0, [sp, #0x24]
+ ldr r1, [sp, #0xc]
+ ldr r0, [sp, #0x14]
+ cmp r1, r0
+ bge _0201210A
+_020120CC:
+ ldr r4, [sp, #0x8]
+ add r0, r4, #0x0
+ cmp r0, r6
+ bge _020120F8
+ ldr r0, [sp, #0x18]
+ lsl r1, r0, #0x3
+ ldr r0, [sp, #0x10]
+ add r5, r0, r1
+_020120DC:
+ str r5, [sp, #0x28]
+ mov r0, #0x4
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x20]
+ ldr r1, [sp, #0x1c]
+ add r2, sp, #0x28
+ add r3, sp, #0x24
+ str r7, [sp, #0x4]
+ bl FUN_02012004
+ add r4, r4, #0x1
+ add r5, r5, #0x4
+ cmp r4, r6
+ blt _020120DC
+_020120F8:
+ ldr r0, [sp, #0x18]
+ add r0, r0, r7
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0xc]
+ add r1, r0, #0x1
+ ldr r0, [sp, #0x14]
+ str r1, [sp, #0xc]
+ cmp r1, r0
+ blt _020120CC
+_0201210A:
+ add sp, #0x2c
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02012110
+FUN_02012110: ; 0x02012110
+ push {r4-r5}
+ sub sp, #0x8
+ ldr r2, _02012148 ; =0x020ED3B0
+ add r1, sp, #0x0
+ ldr r3, [r2, #0x0]
+ ldr r2, [r2, #0x4]
+ str r3, [sp, #0x0]
+ str r2, [sp, #0x4]
+ ldr r2, _0201214C ; =0x000001EF
+ mov r5, #0x0
+ add r3, r2, #0x0
+_02012126:
+ ldr r4, [r1, #0x0]
+ cmp r4, r3
+ beq _02012140
+ cmp r4, r0
+ bne _02012138
+ add sp, #0x8
+ mov r0, #0x1
+ pop {r4-r5}
+ bx lr
+_02012138:
+ add r5, r5, #0x1
+ add r1, r1, #0x4
+ cmp r5, r2
+ blt _02012126
+_02012140:
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r4-r5}
+ bx lr
+ .balign 4
+_02012148: .word 0x020ED3B0
+_0201214C: .word 0x000001EF
+
+ thumb_func_start FUN_02012150
+FUN_02012150: ; 0x02012150
+ push {r3-r4, lr}
+ sub sp, #0xc
+ add r4, r3, #0x0
+ mov r3, #0x0
+ str r3, [sp, #0x8]
+ add r3, sp, #0x8
+ bl FUN_02012044
+ ldr r0, [sp, #0x8]
+ ldr r0, [r0, #0x14]
+ bl FUN_02008A74
+ ldr r0, [sp, #0x34]
+ bl FUN_02012110
+ ldr r1, [sp, #0x30]
+ cmp r1, #0x2
+ bne _02012184
+ cmp r0, #0x1
+ bne _02012184
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0x28]
+ ldr r0, [r0, #0x14]
+ ldr r2, [sp, #0x2c]
+ bl FUN_02008904
+_02012184:
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0x18]
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x24]
+ ldr r2, [sp, #0x1c]
+ str r0, [sp, #0x4]
+ ldr r3, [sp, #0x20]
+ add r0, r4, #0x0
+ bl FUN_02012078
+ add sp, #0xc
+ pop {r3-r4, pc}
+
+ thumb_func_start FUN_0201219C
+FUN_0201219C: ; 0x0201219C
+ push {r4-r7, lr}
+ sub sp, #0x24
+ add r7, r1, #0x0
+ add r5, r2, #0x0
+ ldr r2, [sp, #0x3c]
+ ldr r1, [sp, #0x40]
+ add r6, r0, #0x0
+ mul r1, r2
+ add r0, r5, #0x0
+ lsl r1, r1, #0x5
+ str r3, [sp, #0x20]
+ bl FUN_02016998
+ add r4, r0, #0x0
+ ldr r0, [sp, #0x38]
+ ldr r3, [sp, #0x20]
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x3c]
+ add r1, r7, #0x0
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x40]
+ add r2, r5, #0x0
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x44]
+ str r4, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x48]
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x4c]
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x50]
+ str r0, [sp, #0x1c]
+ add r0, r6, #0x0
+ bl FUN_02012150
+ add r0, r4, #0x0
+ add sp, #0x24
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_020121E8
+FUN_020121E8: ; 0x020121E8
+ push {r3-r7, lr}
+ sub sp, #0x30
+ str r3, [sp, #0x8]
+ ldr r3, [sp, #0x48]
+ str r3, [sp, #0x48]
+ mov r3, #0x0
+ str r3, [sp, #0x2c]
+ bl LoadFromNarc_2
+ str r0, [sp, #0x20]
+ cmp r0, #0x0
+ bne _02012204
+ bl ErrorHandling
+_02012204:
+ ldr r0, [sp, #0x20]
+ add r1, sp, #0x2c
+ blx FUN_020B0088
+ cmp r0, #0x0
+ bne _02012214
+ bl ErrorHandling
+_02012214:
+ ldr r1, [sp, #0x4c]
+ ldr r0, [sp, #0x8]
+ add r6, r0, r1
+ ldr r0, [sp, #0x2c]
+ ldrh r0, [r0, #0x2]
+ cmp r0, r6
+ bge _02012226
+ bl ErrorHandling
+_02012226:
+ ldr r1, [sp, #0x50]
+ ldr r0, [sp, #0x48]
+ add r0, r0, r1
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x2c]
+ ldrh r1, [r0, #0x0]
+ ldr r0, [sp, #0x10]
+ cmp r1, r0
+ bge _0201223C
+ bl ErrorHandling
+_0201223C:
+ ldr r0, [sp, #0x2c]
+ ldr r0, [r0, #0x14]
+ str r0, [sp, #0x1c]
+ bl FUN_02008A74
+ ldr r0, [sp, #0x54]
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x2c]
+ ldrh r0, [r0, #0x2]
+ lsl r7, r0, #0x2
+ ldr r0, [sp, #0x48]
+ add r1, r0, #0x0
+ mul r1, r7
+ ldr r0, [sp, #0x8]
+ str r1, [sp, #0x14]
+ lsl r1, r0, #0x2
+ ldr r0, [sp, #0x14]
+ str r1, [sp, #0xc]
+ add r0, r1, r0
+ str r0, [sp, #0x28]
+ mov r0, #0x0
+ str r0, [sp, #0x24]
+ ldr r1, [sp, #0x48]
+ ldr r0, [sp, #0x10]
+ cmp r1, r0
+ bge _020122AE
+_02012270:
+ ldr r4, [sp, #0x8]
+ add r0, r4, #0x0
+ cmp r0, r6
+ bge _0201229C
+ ldr r0, [sp, #0x14]
+ lsl r1, r0, #0x3
+ ldr r0, [sp, #0xc]
+ add r5, r0, r1
+_02012280:
+ str r5, [sp, #0x28]
+ mov r0, #0x4
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x1c]
+ ldr r1, [sp, #0x18]
+ add r2, sp, #0x28
+ add r3, sp, #0x24
+ str r7, [sp, #0x4]
+ bl FUN_02012004
+ add r4, r4, #0x1
+ add r5, r5, #0x4
+ cmp r4, r6
+ blt _02012280
+_0201229C:
+ ldr r0, [sp, #0x14]
+ add r0, r0, r7
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x48]
+ add r1, r0, #0x1
+ ldr r0, [sp, #0x10]
+ str r1, [sp, #0x48]
+ cmp r1, r0
+ blt _02012270
+_020122AE:
+ ldr r0, [sp, #0x20]
+ bl FUN_02016A18
+ add sp, #0x30
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_020122B8
+FUN_020122B8: ; 0x020122B8
+ push {r4-r7, lr}
+ sub sp, #0x14
+ add r7, r1, #0x0
+ add r5, r2, #0x0
+ ldr r2, [sp, #0x2c]
+ ldr r1, [sp, #0x30]
+ add r6, r0, #0x0
+ mul r1, r2
+ add r0, r5, #0x0
+ lsl r1, r1, #0x5
+ str r3, [sp, #0x10]
+ bl FUN_02016998
+ add r4, r0, #0x0
+ ldr r0, [sp, #0x28]
+ ldr r3, [sp, #0x10]
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x2c]
+ add r1, r7, #0x0
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x30]
+ add r2, r5, #0x0
+ str r0, [sp, #0x8]
+ add r0, r6, #0x0
+ str r4, [sp, #0xc]
+ bl FUN_020121E8
+ add r0, r4, #0x0
+ add sp, #0x14
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_020122F4
+FUN_020122F4: ; 0x020122F4
+ push {r3-r7, lr}
+ sub sp, #0x20
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x44]
+ ldr r1, [sp, #0x38]
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x48]
+ str r2, [sp, #0x4]
+ str r0, [sp, #0x14]
+ add r0, r2, #0x0
+ add r7, r0, r1
+ ldr r1, [sp, #0x3c]
+ add r0, r3, #0x0
+ add r0, r0, r1
+ add r1, r3, #0x0
+ str r3, [sp, #0x8]
+ ldr r5, [sp, #0x40]
+ str r0, [sp, #0x10]
+ cmp r1, r0
+ bge _0201236C
+ add r0, r3, #0x0
+ lsl r0, r0, #0x5
+ str r0, [sp, #0xc]
+ add r0, r2, #0x0
+ lsl r0, r0, #0x5
+ str r0, [sp, #0x1c]
+_02012328:
+ ldr r6, [sp, #0x4]
+ add r0, r6, #0x0
+ cmp r0, r7
+ bge _0201235A
+ ldr r1, [sp, #0x0]
+ ldr r0, [sp, #0xc]
+ add r2, r1, #0x0
+ mul r2, r0
+ ldr r0, [sp, #0x1c]
+ add r4, r0, r2
+_0201233C:
+ ldr r1, [r5, #0x0]
+ ldr r0, [sp, #0x14]
+ mov r2, #0x20
+ add r0, r0, r1
+ ldr r1, [sp, #0x18]
+ add r1, r1, r4
+ blx FUN_020DF438
+ ldr r0, [r5, #0x0]
+ add r6, r6, #0x1
+ add r0, #0x20
+ str r0, [r5, #0x0]
+ add r4, #0x20
+ cmp r6, r7
+ blt _0201233C
+_0201235A:
+ ldr r0, [sp, #0xc]
+ add r0, #0x20
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x8]
+ add r1, r0, #0x1
+ ldr r0, [sp, #0x10]
+ str r1, [sp, #0x8]
+ cmp r1, r0
+ blt _02012328
+_0201236C:
+ add sp, #0x20
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02012370
+FUN_02012370: ; 0x02012370
+ push {r3-r4, lr}
+ sub sp, #0x14
+ add r4, r2, #0x0
+ ldr r2, [r4, #0x8]
+ str r2, [sp, #0x0]
+ ldr r2, [r4, #0xc]
+ str r2, [sp, #0x4]
+ ldr r2, [sp, #0x20]
+ str r3, [sp, #0x8]
+ str r2, [sp, #0xc]
+ ldr r2, [sp, #0x24]
+ str r2, [sp, #0x10]
+ ldr r2, [r4, #0x0]
+ ldr r3, [r4, #0x4]
+ bl FUN_020122F4
+ add sp, #0x14
+ pop {r3-r4, pc}
+
+ thumb_func_start FUN_02012394
+FUN_02012394: ; 0x02012394
+ push {r4-r7, lr}
+ sub sp, #0x7c
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x9c]
+ mov r12, r3
+ add r5, r2, #0x0
+ ldr r6, [sp, #0x94]
+ ldr r7, [sp, #0x98]
+ ldr r3, _020123FC ; =0x020ED3D8
+ str r1, [sp, #0x10]
+ str r0, [sp, #0x9c]
+ add r2, sp, #0x1c
+ mov r4, #0xc
+_020123AE:
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ sub r4, r4, #0x1
+ bne _020123AE
+ mov r0, #0x0
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x90]
+ ldr r1, [sp, #0x10]
+ str r0, [sp, #0x0]
+ str r6, [sp, #0x4]
+ ldr r0, [sp, #0xc]
+ add r2, r5, #0x0
+ mov r3, r12
+ str r7, [sp, #0x8]
+ bl FUN_020122B8
+ str r0, [sp, #0x14]
+ mov r4, #0x0
+ add r5, sp, #0x1c
+_020123D4:
+ ldr r0, [sp, #0x14]
+ add r1, r7, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x9c]
+ add r2, r5, #0x0
+ str r0, [sp, #0x4]
+ add r0, r6, #0x0
+ add r3, sp, #0x18
+ bl FUN_02012370
+ add r4, r4, #0x1
+ add r5, #0x10
+ cmp r4, #0x6
+ blt _020123D4
+ ldr r0, [sp, #0x14]
+ bl FUN_02016A18
+ add sp, #0x7c
+ pop {r4-r7, pc}
+ nop
+_020123FC: .word 0x020ED3D8
+
+ thumb_func_start FUN_02012400
+FUN_02012400: ; 0x02012400
+ push {r4, lr}
+ sub sp, #0x10
+ ldr r4, [r3, #0x4]
+ str r4, [sp, #0x0]
+ ldr r4, [r3, #0x8]
+ str r4, [sp, #0x4]
+ ldr r4, [r3, #0xc]
+ str r4, [sp, #0x8]
+ ldr r4, [sp, #0x18]
+ str r4, [sp, #0xc]
+ ldr r3, [r3, #0x0]
+ bl FUN_02012394
+ add sp, #0x10
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02012420
+FUN_02012420: ; 0x02012420
+ push {r4-r7, lr}
+ sub sp, #0x14
+ ldr r4, _02012448 ; =0x020ED3B8
+ add r5, r3, #0x0
+ add r3, sp, #0x4
+ add r7, r0, #0x0
+ mov r12, r1
+ add r6, r3, #0x0
+ ldmia r4!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldmia r4!, {r0-r1}
+ stmia r3!, {r0-r1}
+ add r0, r7, #0x0
+ mov r1, r12
+ add r3, r6, #0x0
+ str r5, [sp, #0x0]
+ bl FUN_02012400
+ add sp, #0x14
+ pop {r4-r7, pc}
+ .balign 4
+_02012448: .word 0x020ED3B8
+
+ thumb_func_start FUN_0201244C
+FUN_0201244C: ; 0x0201244C
+ push {r3-r7, lr}
+ add r6, r1, #0x0
+ mov r1, #0x32
+ add r7, r2, #0x0
+ add r5, r0, #0x0
+ add r0, r7, #0x0
+ lsl r1, r1, #0x6
+ bl FUN_02016998
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r7, #0x0
+ add r3, r4, #0x0
+ bl FUN_02012420
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02012470
+FUN_02012470: ; 0x02012470
+ push {r3-r7, lr}
+ add r7, r2, #0x0
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ add r0, r7, #0x0
+ mov r1, #0x20
+ bl FUN_02016998
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r7, #0x0
+ bl LoadFromNarc_2
+ add r1, sp, #0x0
+ add r5, r0, #0x0
+ blx FUN_020B0138
+ cmp r0, #0x1
+ beq _0201249C
+ bl ErrorHandling
+_0201249C:
+ ldr r0, [sp, #0x0]
+ add r1, r4, #0x0
+ ldr r0, [r0, #0xc]
+ mov r2, #0x20
+ blx MIi_CpuCopy16
+ add r0, r5, #0x0
+ bl FUN_02016A18
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020124B4
+FUN_020124B4: ; 0x020124B4
+ push {r4-r7, lr}
+ sub sp, #0x8c
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0xac]
+ mov r12, r3
+ add r5, r2, #0x0
+ ldr r6, [sp, #0xa4]
+ ldr r7, [sp, #0xa8]
+ ldr r3, _0201252C ; =0x020ED438
+ str r1, [sp, #0x20]
+ str r0, [sp, #0xac]
+ add r2, sp, #0x2c
+ mov r4, #0xc
+_020124CE:
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ sub r4, r4, #0x1
+ bne _020124CE
+ mov r0, #0x0
+ str r0, [sp, #0x28]
+ ldr r0, [sp, #0xa0]
+ ldr r1, [sp, #0x20]
+ str r0, [sp, #0x0]
+ str r6, [sp, #0x4]
+ ldr r0, [sp, #0xb0]
+ str r7, [sp, #0x8]
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0xb4]
+ add r2, r5, #0x0
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0xb8]
+ mov r3, r12
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0xbc]
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x1c]
+ bl FUN_0201219C
+ str r0, [sp, #0x24]
+ mov r4, #0x0
+ add r5, sp, #0x2c
+_02012504:
+ ldr r0, [sp, #0x24]
+ add r1, r7, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0xac]
+ add r2, r5, #0x0
+ str r0, [sp, #0x4]
+ add r0, r6, #0x0
+ add r3, sp, #0x28
+ bl FUN_02012370
+ add r4, r4, #0x1
+ add r5, #0x10
+ cmp r4, #0x6
+ blt _02012504
+ ldr r0, [sp, #0x24]
+ bl FUN_02016A18
+ add sp, #0x8c
+ pop {r4-r7, pc}
+ nop
+_0201252C: .word 0x020ED438
+
+ thumb_func_start FUN_02012530
+FUN_02012530: ; 0x02012530
+ push {r4, lr}
+ sub sp, #0x20
+ ldr r4, [r3, #0x4]
+ str r4, [sp, #0x0]
+ ldr r4, [r3, #0x8]
+ str r4, [sp, #0x4]
+ ldr r4, [r3, #0xc]
+ str r4, [sp, #0x8]
+ ldr r4, [sp, #0x28]
+ str r4, [sp, #0xc]
+ ldr r4, [sp, #0x2c]
+ str r4, [sp, #0x10]
+ ldr r4, [sp, #0x30]
+ str r4, [sp, #0x14]
+ ldr r4, [sp, #0x34]
+ str r4, [sp, #0x18]
+ ldr r4, [sp, #0x38]
+ str r4, [sp, #0x1c]
+ ldr r3, [r3, #0x0]
+ bl FUN_020124B4
+ add sp, #0x20
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02012560
+FUN_02012560: ; 0x02012560
+ push {r4-r7, lr}
+ sub sp, #0x24
+ ldr r4, _02012598 ; =0x020ED3C8
+ add r5, r3, #0x0
+ add r3, sp, #0x14
+ add r7, r0, #0x0
+ mov r12, r1
+ add r6, r3, #0x0
+ ldmia r4!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldmia r4!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldr r0, [sp, #0x38]
+ str r5, [sp, #0x0]
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x3c]
+ mov r1, r12
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x40]
+ add r3, r6, #0x0
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x44]
+ str r0, [sp, #0x10]
+ add r0, r7, #0x0
+ bl FUN_02012530
+ add sp, #0x24
+ pop {r4-r7, pc}
+ .balign 4
+_02012598: .word 0x020ED3C8
+
+ thumb_func_start FUN_0201259C
+FUN_0201259C: ; 0x0201259C
+ push {r3, lr}
+ blx FUN_020D614C
+ ldr r3, _020125CC ; =0x021C4808
+ mov r0, #0x0
+ add r2, r3, #0x0
+ add r1, r0, #0x0
+ stmia r2!, {r0-r1}
+ stmia r2!, {r0-r1}
+ stmia r2!, {r0-r1}
+ stmia r2!, {r0-r1}
+ stmia r2!, {r0-r1}
+ stmia r2!, {r0-r1}
+ stmia r2!, {r0-r1}
+ stmia r2!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldr r1, _020125D0 ; =0x021C4808
+ str r0, [r1, #0x0]
+ str r0, [r1, #0x4]
+ str r0, [r1, #0x8]
+ add r0, r3, #0x0
+ bl FUN_02012634
+ pop {r3, pc}
+ .balign 4
+_020125CC: .word 0x021C4808
+_020125D0: .word 0x021C4808
+
+ thumb_func_start FUN_020125D4
+FUN_020125D4: ; 0x020125D4
+ push {r3, lr}
+ ldr r0, _020125F4 ; =0x021C4808
+ ldr r1, [r0, #0x4]
+ cmp r1, #0x0
+ bne _020125F2
+ ldr r1, [r0, #0x8]
+ add r1, r1, #0x1
+ str r1, [r0, #0x8]
+ cmp r1, #0xa
+ ble _020125F2
+ mov r1, #0x0
+ str r1, [r0, #0x8]
+ ldr r0, _020125F8 ; =0x021C4808
+ bl FUN_02012634
+_020125F2:
+ pop {r3, pc}
+ .balign 4
+_020125F4: .word 0x021C4808
+_020125F8: .word 0x021C4808
+
+ thumb_func_start FUN_020125FC
+FUN_020125FC: ; 0x020125FC
+ push {r4, lr}
+ add r4, r1, #0x0
+ str r0, [r4, #0xc]
+ cmp r0, #0x0
+ beq _0201260A
+ bl ErrorHandling
+_0201260A:
+ add r3, r4, #0x0
+ mov r0, #0x1
+ add r2, r4, #0x0
+ add r3, #0x2c
+ str r0, [r4, #0x0]
+ ldmia r3!, {r0-r1}
+ add r2, #0x10
+ stmia r2!, {r0-r1}
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ add r3, r4, #0x0
+ add r3, #0x3c
+ add r2, r4, #0x0
+ ldmia r3!, {r0-r1}
+ add r2, #0x20
+ stmia r2!, {r0-r1}
+ ldr r0, [r3, #0x0]
+ str r0, [r2, #0x0]
+ mov r0, #0x0
+ str r0, [r4, #0x4]
+ pop {r4, pc}
+
+ thumb_func_start FUN_02012634
+FUN_02012634: ; 0x02012634
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x1
+ str r0, [r4, #0x4]
+ add r0, r4, #0x0
+ add r1, r4, #0x0
+ ldr r2, _02012658 ; =FUN_020125FC
+ add r0, #0x2c
+ add r1, #0x3c
+ add r3, r4, #0x0
+ blx FUN_020D5F40
+ str r0, [r4, #0xc]
+ cmp r0, #0x0
+ beq _02012656
+ bl ErrorHandling
+_02012656:
+ pop {r4, pc}
+ .balign 4
+_02012658: .word FUN_020125FC
+
+ thumb_func_start FUN_0201265C
+FUN_0201265C: ; 0x0201265C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, _02012684 ; =0x021C4808
+ add r4, r1, #0x0
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x1
+ beq _0201266E
+ bl ErrorHandling
+_0201266E:
+ ldr r2, _02012688 ; =0x021C4818
+ ldmia r2!, {r0-r1}
+ stmia r5!, {r0-r1}
+ ldmia r2!, {r0-r1}
+ ldr r2, _0201268C ; =0x021C4828
+ stmia r5!, {r0-r1}
+ ldmia r2!, {r0-r1}
+ stmia r4!, {r0-r1}
+ ldr r0, [r2, #0x0]
+ str r0, [r4, #0x0]
+ pop {r3-r5, pc}
+ .balign 4
+_02012684: .word 0x021C4808
+_02012688: .word 0x021C4818
+_0201268C: .word 0x021C4828
+
+ thumb_func_start FUN_02012690
+FUN_02012690: ; 0x02012690
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _020126AC ; =0x021C4808
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x1
+ beq _020126A0
+ bl ErrorHandling
+_020126A0:
+ ldr r2, _020126B0 ; =0x021C4828
+ ldmia r2!, {r0-r1}
+ stmia r4!, {r0-r1}
+ ldr r0, [r2, #0x0]
+ str r0, [r4, #0x0]
+ pop {r4, pc}
+ .balign 4
+_020126AC: .word 0x021C4808
+_020126B0: .word 0x021C4828
+
+ thumb_func_start FUN_020126B4
+FUN_020126B4: ; 0x020126B4
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _020126D0 ; =0x021C4808
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x1
+ beq _020126C4
+ bl ErrorHandling
+_020126C4:
+ ldr r2, _020126D4 ; =0x021C4818
+ ldmia r2!, {r0-r1}
+ stmia r4!, {r0-r1}
+ ldmia r2!, {r0-r1}
+ stmia r4!, {r0-r1}
+ pop {r4, pc}
+ .balign 4
+_020126D0: .word 0x021C4808
+_020126D4: .word 0x021C4818
+
+ thumb_func_start FUN_020126D8
+FUN_020126D8: ; 0x020126D8
+ push {r3-r4}
+ ldr r4, _020126F8 ; =0x021C4828
+ mov r0, #0x3c
+ ldr r1, [r4, #0x4]
+ ldr r3, [r4, #0x8]
+ add r2, r1, #0x0
+ mul r2, r0
+ mov r0, #0xe1
+ ldr r1, [r4, #0x0]
+ lsl r0, r0, #0x4
+ mul r0, r1
+ add r0, r2, r0
+ add r0, r3, r0
+ pop {r3-r4}
+ bx lr
+ nop
+_020126F8: .word 0x021C4828
+
+ thumb_func_start FUN_020126FC
+FUN_020126FC: ; 0x020126FC
+ ldr r3, _02012704 ; =FUN_020D6578
+ ldr r0, _02012708 ; =0x021C4818
+ ldr r1, _0201270C ; =0x021C4828
+ bx r3
+ .balign 4
+_02012704: .word FUN_020D6578
+_02012708: .word 0x021C4818
+_0201270C: .word 0x021C4828
+
+ thumb_func_start FUN_02012710
+FUN_02012710: ; 0x02012710
+ push {r4-r6, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ ldr r2, [r5, #0x4]
+ ldr r0, _02012778 ; =0x020ED4B2
+ lsl r1, r2, #0x1
+ ldrh r0, [r0, r1]
+ ldr r3, [r5, #0x8]
+ add r4, r3, r0
+ cmp r2, #0x3
+ blo _02012752
+ ldr r6, [r5, #0x0]
+ mov r0, #0x1e
+ lsr r2, r6, #0x1f
+ lsl r1, r6, #0x1e
+ sub r1, r1, r2
+ ror r1, r0
+ add r0, r2, r1
+ bne _02012742
+ add r0, r6, #0x0
+ mov r1, #0x64
+ blx _s32_div_f
+ cmp r1, #0x0
+ bne _02012750
+_02012742:
+ mov r1, #0x19
+ add r0, r6, #0x0
+ lsl r1, r1, #0x4
+ blx _s32_div_f
+ cmp r1, #0x0
+ bne _02012752
+_02012750:
+ add r4, r4, #0x1
+_02012752:
+ add r6, r5, #0x0
+ add r3, sp, #0x0
+ add r2, r3, #0x0
+ ldmia r6!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldmia r6!, {r0-r1}
+ stmia r3!, {r0-r1}
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ add r0, r2, #0x0
+ blx FUN_020D660C
+ add r0, r5, #0x0
+ blx FUN_020D660C
+ add r0, r4, #0x0
+ add sp, #0x10
+ pop {r4-r6, pc}
+ .balign 4
+_02012778: .word 0x020ED4B2
+
+ thumb_func_start FUN_0201277C
+FUN_0201277C: ; 0x0201277C
+ push {r3, lr}
+ bl FUN_02012794
+ cmp r0, #0x3
+ beq _0201278A
+ cmp r0, #0x4
+ bne _0201278E
+_0201278A:
+ mov r0, #0x1
+ pop {r3, pc}
+_0201278E:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02012794
+FUN_02012794: ; 0x02012794
+ push {lr}
+ sub sp, #0xc
+ add r0, sp, #0x0
+ bl FUN_02012690
+ ldr r0, [sp, #0x0]
+ bl FUN_020127A8
+ add sp, #0xc
+ pop {pc}
+
+ thumb_func_start FUN_020127A8
+FUN_020127A8: ; 0x020127A8
+ push {r4, lr}
+ add r4, r0, #0x0
+ bmi _020127B2
+ cmp r4, #0x18
+ blt _020127B6
+_020127B2:
+ bl ErrorHandling
+_020127B6:
+ ldr r0, _020127BC ; =0x020ED4CC
+ ldrb r0, [r0, r4]
+ pop {r4, pc}
+ .balign 4
+_020127BC: .word 0x020ED4CC
+
+ thumb_func_start FUN_020127C0
+FUN_020127C0: ; 0x020127C0
+ push {r4-r7, lr}
+ sub sp, #0x24
+ add r6, r3, #0x0
+ ldr r3, _0201282C ; =0x020ED4A4
+ add r4, r0, #0x0
+ add r7, r1, #0x0
+ add r5, r2, #0x0
+ add r2, sp, #0x14
+ ldmia r3!, {r0-r1}
+ str r2, [sp, #0x0]
+ stmia r2!, {r0-r1}
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldr r3, _02012830 ; =0x020ED498
+ add r2, sp, #0x8
+ ldmia r3!, {r0-r1}
+ str r2, [sp, #0x4]
+ stmia r2!, {r0-r1}
+ ldr r0, [r3, #0x0]
+ ldr r1, [sp, #0x4]
+ str r0, [r2, #0x0]
+ ldr r0, [sp, #0x0]
+ blx FUN_020D6578
+ add r2, r1, #0x0
+ add r3, r0, #0x0
+ mov r1, #0x0
+ ldr r0, _02012834 ; =0xBC19137F
+ eor r1, r2
+ eor r0, r3
+ orr r0, r1
+ beq _02012804
+ bl ErrorHandling
+_02012804:
+ sub r0, r4, r5
+ mov r12, r7
+ mov r0, r12
+ sbc r0, r6
+ bge _02012818
+ sub r0, r5, r4
+ sbc r6, r7
+ add sp, #0x24
+ add r1, r6, #0x0
+ pop {r4-r7, pc}
+_02012818:
+ ldr r0, _02012834 ; =0xBC19137F
+ mov r1, #0x0
+ sub r0, r0, r4
+ sbc r1, r7
+ add r0, r5, r0
+ adc r6, r1
+ add r1, r6, #0x0
+ add sp, #0x24
+ pop {r4-r7, pc}
+ nop
+_0201282C: .word 0x020ED4A4
+_02012830: .word 0x020ED498
+_02012834: .word 0xBC19137F
+
+ thumb_func_start FUN_02012838
+FUN_02012838: ; 0x02012838
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r1, r5, #0x1
+ add r0, r4, #0x0
+ lsl r1, r1, #0x3
+ bl FUN_02016998
+ cmp r0, #0x0
+ beq _0201286E
+ mov r2, #0x0
+ cmp r5, #0x0
+ bls _02012862
+ add r3, r0, #0x0
+ add r1, r2, #0x0
+_02012856:
+ str r1, [r3, #0x0]
+ str r1, [r3, #0x4]
+ add r2, r2, #0x1
+ add r3, #0x8
+ cmp r2, r5
+ blo _02012856
+_02012862:
+ mov r1, #0x0
+ lsl r2, r2, #0x3
+ mvn r1, r1
+ str r1, [r0, r2]
+ add r1, r0, r2
+ str r4, [r1, #0x4]
+_0201286E:
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02012870
+FUN_02012870: ; 0x02012870
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_0201291C
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r4, pc}
+
+ thumb_func_start FUN_02012880
+FUN_02012880: ; 0x02012880
+ push {r3-r7, lr}
+ add r6, r1, #0x0
+ add r1, sp, #0x0
+ add r7, r2, #0x0
+ add r5, r3, #0x0
+ bl FUN_020128E0
+ add r4, r0, #0x0
+ beq _0201289E
+ add r0, r6, #0x0
+ add r1, r7, #0x0
+ bl FUN_0200A914
+ str r0, [r4, #0x0]
+ str r5, [r4, #0x4]
+_0201289E:
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_020128A0
+FUN_020128A0: ; 0x020128A0
+ push {r3-r6, lr}
+ sub sp, #0x4
+ add r6, r1, #0x0
+ add r1, sp, #0x0
+ add r5, r2, #0x0
+ bl FUN_020128E0
+ add r4, r0, #0x0
+ beq _020128BE
+ ldr r1, [sp, #0x0]
+ add r0, r6, #0x0
+ bl FUN_02021ACC
+ str r0, [r4, #0x0]
+ str r5, [r4, #0x4]
+_020128BE:
+ add sp, #0x4
+ pop {r3-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_020128C4
+FUN_020128C4: ; 0x020128C4
+ push {r3-r4, lr}
+ sub sp, #0x4
+ add r4, r1, #0x0
+ add r1, sp, #0x0
+ bl FUN_020128E0
+ cmp r0, #0x0
+ beq _020128DC
+ ldr r1, [r4, #0x0]
+ str r1, [r0, #0x0]
+ ldr r1, [r4, #0x4]
+ str r1, [r0, #0x4]
+_020128DC:
+ add sp, #0x4
+ pop {r3-r4, pc}
+
+ thumb_func_start FUN_020128E0
+FUN_020128E0: ; 0x020128E0
+ push {r4, lr}
+ ldr r3, [r0, #0x0]
+ cmp r3, #0x0
+ beq _02012900
+ mov r2, #0x0
+ mvn r2, r2
+_020128EC:
+ cmp r3, r2
+ bne _020128F8
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r4, pc}
+_020128F8:
+ add r0, #0x8
+ ldr r3, [r0, #0x0]
+ cmp r3, #0x0
+ bne _020128EC
+_02012900:
+ mov r2, #0x0
+ mvn r2, r2
+ add r4, r0, #0x0
+ cmp r3, r2
+ beq _02012912
+_0201290A:
+ add r0, #0x8
+ ldr r3, [r0, #0x0]
+ cmp r3, r2
+ bne _0201290A
+_02012912:
+ ldr r0, [r0, #0x4]
+ str r0, [r1, #0x0]
+ add r0, r4, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201291C
+FUN_0201291C: ; 0x0201291C
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ mov r0, #0x0
+ ldr r1, [r5, #0x0]
+ mvn r0, r0
+ cmp r1, r0
+ beq _02012942
+ mov r4, #0x0
+ add r6, r0, #0x0
+_0201292E:
+ ldr r0, [r5, #0x0]
+ cmp r0, #0x0
+ beq _02012942
+ bl FUN_02021A20
+ str r4, [r5, #0x0]
+ add r5, #0x8
+ ldr r0, [r5, #0x0]
+ cmp r0, r6
+ bne _0201292E
+_02012942:
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02012944
+FUN_02012944: ; 0x02012944
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ mov r1, #0xc
+ add r4, r2, #0x0
+ bl FUN_02016998
+ mov r1, #0x0
+ strb r1, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ strb r1, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ strb r1, [r0, #0x4]
+ strb r1, [r0, #0x5]
+ strb r1, [r0, #0x6]
+ strb r1, [r0, #0x7]
+ strb r1, [r0, #0x8]
+ strb r1, [r0, #0x9]
+ strb r1, [r0, #0xa]
+ strb r1, [r0, #0xb]
+ mov r1, #0x1
+ strb r1, [r0, #0x9]
+ str r5, [r0, #0x0]
+ str r4, [r0, #0x4]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02012974
+FUN_02012974: ; 0x02012974
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _0201297E
+ bl ErrorHandling
+_0201297E:
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02012988
+FUN_02012988: ; 0x02012988
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _02012992
+ bl ErrorHandling
+_02012992:
+ ldrb r0, [r4, #0x8]
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201299C
+FUN_0201299C: ; 0x0201299C
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _020129A6
+ bl ErrorHandling
+_020129A6:
+ ldrb r1, [r4, #0x8]
+ mov r0, #0x1
+ eor r0, r1
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020129B4
+FUN_020129B4: ; 0x020129B4
+ cmp r0, #0x0
+ beq _020129C6
+ ldrb r1, [r0, #0x9]
+ cmp r1, #0x0
+ beq _020129C6
+ ldrb r2, [r0, #0x8]
+ mov r1, #0x1
+ eor r1, r2
+ strb r1, [r0, #0x8]
+_020129C6:
+ bx lr
+
+ thumb_func_start FUN_020129C8
+FUN_020129C8: ; 0x020129C8
+ push {r3, lr}
+ mov r0, #0x0
+ blx MI_StopDma
+ mov r0, #0x0
+ blx MI_WaitDma
+ pop {r3, pc}
+
+ thumb_func_start FUN_020129D8
+FUN_020129D8: ; 0x020129D8
+ push {r4-r6, lr}
+ add r6, r0, #0x0
+ add r5, r1, #0x0
+ add r4, r2, #0x0
+ cmp r3, #0x1
+ bne _020129F2
+ mov r0, #0x0
+ add r1, r6, #0x0
+ add r2, r5, #0x0
+ add r3, r4, #0x0
+ blx MI_HBlankDmaCopy32
+ pop {r4-r6, pc}
+_020129F2:
+ mov r0, #0x0
+ add r1, r6, #0x0
+ add r2, r5, #0x0
+ add r3, r4, #0x0
+ blx MI_HBlankDmaCopy16
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02012A00
+FUN_02012A00: ; 0x02012A00
+ push {r3-r5, lr}
+ ldr r1, _02012A2C ; =0x0000079C
+ add r5, r0, #0x0
+ bl FUN_02016998
+ ldr r2, _02012A2C ; =0x0000079C
+ mov r1, #0x0
+ add r4, r0, #0x0
+ blx FUN_020DF4A4
+ mov r2, #0x3
+ lsl r2, r2, #0x8
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r4, r2
+ bl FUN_02012944
+ mov r1, #0x6
+ lsl r1, r1, #0x8
+ str r0, [r4, r1]
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+_02012A2C: .word 0x0000079C
+
+ thumb_func_start FUN_02012A30
+FUN_02012A30: ; 0x02012A30
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ add r7, r3, #0x0
+ cmp r5, #0x0
+ bne _02012A42
+ bl ErrorHandling
+_02012A42:
+ ldr r0, _02012AB0 ; =0x00000604
+ ldr r0, [r5, r0]
+ cmp r0, #0x0
+ beq _02012A4E
+ bl ErrorHandling
+_02012A4E:
+ ldr r0, _02012AB4 ; =0x0000078C
+ mov r2, #0x0
+ strb r4, [r5, r0]
+ add r1, r0, #0x1
+ strb r6, [r5, r1]
+ add r1, r0, #0x0
+ add r1, #0xc
+ strh r2, [r5, r1]
+ add r2, sp, #0x8
+ mov r1, #0x14
+ ldrsh r2, [r2, r1]
+ add r1, r0, #0x0
+ add r1, #0xe
+ strh r2, [r5, r1]
+ add r1, r0, #0x4
+ ldr r2, [sp, #0x20]
+ add r0, #0x8
+ str r2, [r5, r1]
+ ldr r1, [sp, #0x24]
+ ldr r3, [sp, #0x18]
+ str r1, [r5, r0]
+ ldr r0, _02012AB8 ; =0x0000060C
+ mov r1, #0xc0
+ add r0, r5, r0
+ add r2, r7, #0x0
+ bl FUN_02012B88
+ ldr r0, _02012ABC ; =FUN_02012BE4
+ ldr r2, [sp, #0x28]
+ add r1, r5, #0x0
+ bl FUN_0200CA44
+ ldr r1, _02012AB0 ; =0x00000604
+ mov r2, #0x3
+ str r0, [r5, r1]
+ ldr r0, _02012AC0 ; =0x00000794
+ add r1, r5, #0x0
+ ldr r0, [r5, r0]
+ lsl r2, r2, #0x8
+ blx MIi_CpuClear32
+ ldr r0, _02012AC0 ; =0x00000794
+ mov r2, #0x3
+ lsl r2, r2, #0x8
+ ldr r0, [r5, r0]
+ add r1, r5, r2
+ blx MIi_CpuClear32
+ pop {r3-r7, pc}
+ .balign 4
+_02012AB0: .word 0x00000604
+_02012AB4: .word 0x0000078C
+_02012AB8: .word 0x0000060C
+_02012ABC: .word FUN_02012BE4
+_02012AC0: .word 0x00000794
+
+ thumb_func_start FUN_02012AC4
+FUN_02012AC4: ; 0x02012AC4
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _02012ACE
+ bl ErrorHandling
+_02012ACE:
+ ldr r0, _02012AF8 ; =0x00000604
+ ldr r0, [r4, r0]
+ cmp r0, #0x0
+ beq _02012AF4
+ bl FUN_0200CAB4
+ ldr r0, _02012AF8 ; =0x00000604
+ mov r1, #0x0
+ str r1, [r4, r0]
+ sub r0, r0, #0x4
+ ldr r0, [r4, r0]
+ bl FUN_02012988
+ ldr r1, _02012AFC ; =0x00000794
+ mov r2, #0x3
+ ldr r1, [r4, r1]
+ lsl r2, r2, #0x8
+ blx FUN_020DF4A4
+_02012AF4:
+ pop {r4, pc}
+ nop
+_02012AF8: .word 0x00000604
+_02012AFC: .word 0x00000794
+
+ thumb_func_start FUN_02012B00
+FUN_02012B00: ; 0x02012B00
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02012AC4
+ bl FUN_02012C90
+ mov r0, #0x6
+ lsl r0, r0, #0x8
+ ldr r0, [r4, r0]
+ bl FUN_02012974
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02012B20
+FUN_02012B20: ; 0x02012B20
+ mov r1, #0x6
+ lsl r1, r1, #0x8
+ ldr r3, _02012B2C ; =FUN_02012988
+ ldr r0, [r0, r1]
+ bx r3
+ nop
+_02012B2C: .word FUN_02012988
+
+ thumb_func_start FUN_02012B30
+FUN_02012B30: ; 0x02012B30
+ push {r4, lr}
+ add r4, r0, #0x0
+ beq _02012B5E
+ ldr r0, _02012B60 ; =0x00000604
+ ldr r1, [r4, r0]
+ cmp r1, #0x0
+ beq _02012B5E
+ sub r0, r0, #0x4
+ ldr r0, [r4, r0]
+ bl FUN_020129B4
+ mov r0, #0x6
+ lsl r0, r0, #0x8
+ ldr r0, [r4, r0]
+ bl FUN_02012988
+ add r1, r0, #0x0
+ ldr r0, _02012B64 ; =0x00000794
+ mov r2, #0x3
+ ldr r0, [r4, r0]
+ lsl r2, r2, #0x8
+ blx MIi_CpuClear32
+_02012B5E:
+ pop {r4, pc}
+ .balign 4
+_02012B60: .word 0x00000604
+_02012B64: .word 0x00000794
+
+ thumb_func_start FUN_02012B68
+FUN_02012B68: ; 0x02012B68
+ push {r4, lr}
+ add r4, r0, #0x0
+ beq _02012B80
+ ldr r0, _02012B84 ; =0x00000604
+ ldr r0, [r4, r0]
+ cmp r0, #0x0
+ beq _02012B80
+ bl FUN_02012C90
+ add r0, r4, #0x0
+ bl FUN_02012C98
+_02012B80:
+ pop {r4, pc}
+ nop
+_02012B84: .word 0x00000604
+
+ thumb_func_start FUN_02012B88
+FUN_02012B88: ; 0x02012B88
+ push {r4-r7, lr}
+ sub sp, #0xc
+ mov r4, #0x0
+ add r7, r1, #0x0
+ add r5, r0, #0x0
+ add r6, r4, #0x0
+ str r2, [sp, #0x0]
+ cmp r7, #0x0
+ bls _02012BD6
+ asr r0, r3, #0x1f
+ str r3, [sp, #0x4]
+ str r0, [sp, #0x8]
+_02012BA0:
+ asr r0, r4, #0x4
+ lsl r1, r0, #0x2
+ ldr r0, _02012BDC ; =0x020FFA38
+ ldr r2, [sp, #0x4]
+ ldrsh r0, [r0, r1]
+ ldr r3, [sp, #0x8]
+ asr r1, r0, #0x1f
+ blx _ll_mul
+ mov r2, #0x2
+ lsl r2, r2, #0xa
+ add r0, r0, r2
+ ldr r2, _02012BE0 ; =0x00000000
+ adc r1, r2
+ lsl r1, r1, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r1
+ asr r0, r0, #0xc
+ strh r0, [r5, #0x0]
+ ldr r0, [sp, #0x0]
+ add r6, r6, #0x1
+ add r0, r4, r0
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ add r5, r5, #0x2
+ cmp r6, r7
+ blo _02012BA0
+_02012BD6:
+ add sp, #0xc
+ pop {r4-r7, pc}
+ nop
+_02012BDC: .word 0x020FFA38
+_02012BE0: .word 0x00000000
+
+ thumb_func_start FUN_02012BE4
+FUN_02012BE4: ; 0x02012BE4
+ push {r3-r7, lr}
+ mov r0, #0x6
+ add r6, r1, #0x0
+ lsl r0, r0, #0x8
+ ldr r0, [r6, r0]
+ bl FUN_02012988
+ add r5, r0, #0x0
+ ldr r0, _02012C80 ; =0x00000798
+ mov r1, #0x64
+ ldrsh r0, [r6, r0]
+ blx _s32_div_f
+ lsl r0, r0, #0x18
+ lsr r3, r0, #0x18
+ ldr r0, _02012C84 ; =0x0000078C
+ ldrb r4, [r6, r0]
+ add r0, r0, #0x1
+ ldrb r0, [r6, r0]
+ cmp r4, r0
+ bgt _02012C4C
+ lsl r0, r4, #0x2
+ add r5, r5, r0
+_02012C12:
+ ldr r2, [r5, #0x0]
+ lsl r0, r2, #0x10
+ asr r7, r0, #0x10
+ lsl r0, r3, #0x1
+ add r1, r6, r0
+ ldr r0, _02012C88 ; =0x0000060C
+ ldrsh r0, [r1, r0]
+ add r0, r7, r0
+ lsl r0, r0, #0x10
+ asr r1, r0, #0x10
+ lsr r0, r2, #0x10
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ lsl r1, r1, #0x10
+ lsl r0, r0, #0x10
+ lsr r1, r1, #0x10
+ orr r0, r1
+ stmia r5!, {r0}
+ add r0, r3, #0x1
+ mov r1, #0xc0
+ blx _s32_div_f
+ lsl r0, r1, #0x18
+ lsr r3, r0, #0x18
+ ldr r0, _02012C8C ; =0x0000078D
+ add r4, r4, #0x1
+ ldrb r0, [r6, r0]
+ cmp r4, r0
+ ble _02012C12
+_02012C4C:
+ ldr r1, _02012C80 ; =0x00000798
+ add r0, r1, #0x2
+ ldrsh r2, [r6, r1]
+ ldrsh r0, [r6, r0]
+ add r4, r6, r1
+ add r0, r2, r0
+ strh r0, [r4, #0x0]
+ ldrsh r0, [r6, r1]
+ mov r1, #0x4b
+ lsl r1, r1, #0x8
+ cmp r0, r1
+ blt _02012C70
+ mov r0, #0x0
+ ldrsh r0, [r4, r0]
+ blx _s32_div_f
+ strh r1, [r4, #0x0]
+ pop {r3-r7, pc}
+_02012C70:
+ cmp r0, #0x0
+ bge _02012C7C
+ mov r0, #0x0
+ ldrsh r0, [r4, r0]
+ add r0, r0, r1
+ strh r0, [r4, #0x0]
+_02012C7C:
+ pop {r3-r7, pc}
+ nop
+_02012C80: .word 0x00000798
+_02012C84: .word 0x0000078C
+_02012C88: .word 0x0000060C
+_02012C8C: .word 0x0000078D
+
+ thumb_func_start FUN_02012C90
+FUN_02012C90: ; 0x02012C90
+ ldr r3, _02012C94 ; =FUN_020129C8
+ bx r3
+ .balign 4
+_02012C94: .word FUN_020129C8
+
+ thumb_func_start FUN_02012C98
+FUN_02012C98: ; 0x02012C98
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bne _02012CA2
+ bl ErrorHandling
+_02012CA2:
+ mov r0, #0x6
+ lsl r0, r0, #0x8
+ ldr r0, [r4, r0]
+ bl FUN_0201299C
+ mov r1, #0x3
+ lsl r1, r1, #0x8
+ add r5, r0, #0x0
+ blx DC_FlushRange
+ mov r1, #0x79
+ lsl r1, r1, #0x4
+ ldr r1, [r4, r1]
+ add r0, r5, #0x0
+ mov r2, #0x4
+ mov r3, #0x1
+ bl FUN_020129D8
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02012CC8
+FUN_02012CC8: ; 0x02012CC8
+ mov r1, #0x0
+ ldr r2, _02012CD8 ; =0x021C4858
+ add r0, r1, #0x0
+_02012CCE:
+ add r1, r1, #0x1
+ stmia r2!, {r0}
+ cmp r1, #0x10
+ blt _02012CCE
+ bx lr
+ .balign 4
+_02012CD8: .word 0x021C4858
+
+ thumb_func_start FUN_02012CDC
+FUN_02012CDC: ; 0x02012CDC
+ push {r3-r7, lr}
+ sub sp, #0x10
+ str r1, [sp, #0x8]
+ ldr r1, _02012DD0 ; =0x021C4858
+ add r7, r0, #0x0
+ add r6, r2, #0x0
+ str r3, [sp, #0xc]
+ mov r5, #0x0
+_02012CEC:
+ ldr r0, [r1, #0x0]
+ cmp r0, #0x0
+ beq _02012CFA
+ add r5, r5, #0x1
+ add r1, r1, #0x4
+ cmp r5, #0x10
+ blt _02012CEC
+_02012CFA:
+ cmp r5, #0x10
+ blt _02012D04
+ add sp, #0x10
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_02012D04:
+ ldr r0, [sp, #0x2c]
+ mov r1, #0xdc
+ bl FUN_02016998
+ add r4, r0, #0x0
+ bne _02012D14
+ bl ErrorHandling
+_02012D14:
+ add r0, r4, #0x0
+ mov r1, #0x0
+ mov r2, #0xdc
+ blx FUN_020DF4A4
+ add r2, r4, #0x0
+ ldr r0, [sp, #0x8]
+ str r7, [r4, #0x18]
+ ldr r3, _02012DD4 ; =0x020ED4FC
+ str r0, [r4, #0x1c]
+ ldmia r3!, {r0-r1}
+ add r2, #0x34
+ stmia r2!, {r0-r1}
+ ldr r0, [r3, #0x0]
+ ldr r3, _02012DD8 ; =0x020ED4E4
+ str r0, [r2, #0x0]
+ add r2, r4, #0x0
+ ldmia r3!, {r0-r1}
+ add r2, #0x40
+ stmia r2!, {r0-r1}
+ ldr r0, [r3, #0x0]
+ ldr r3, _02012DDC ; =0x020ED4F0
+ str r0, [r2, #0x0]
+ add r2, r4, #0x0
+ ldmia r3!, {r0-r1}
+ add r2, #0x4c
+ stmia r2!, {r0-r1}
+ ldr r0, [r3, #0x0]
+ mov r1, #0x0
+ str r0, [r2, #0x0]
+ ldr r2, [sp, #0xc]
+ add r0, r6, #0x0
+ blx FUN_020DF4A4
+ ldr r0, [sp, #0xc]
+ str r6, [r4, #0xc]
+ str r6, [r4, #0x10]
+ add r0, r6, r0
+ str r0, [r4, #0x14]
+ add r0, r4, #0x0
+ add r0, #0xda
+ strb r5, [r0, #0x0]
+ ldr r0, _02012DD0 ; =0x021C4858
+ lsl r5, r5, #0x2
+ str r4, [r0, r5]
+ ldr r0, [sp, #0x28]
+ cmp r0, #0x1
+ bne _02012DA8
+ ldr r0, [sp, #0x2c]
+ bl FUN_0201EB64
+ str r0, [r4, #0x20]
+ mov r3, #0x0
+ str r3, [r4, #0x24]
+ str r3, [r4, #0x28]
+ mov r0, #0x2
+ str r3, [r4, #0x2c]
+ lsl r0, r0, #0xc
+ strh r0, [r4, #0x30]
+ str r3, [sp, #0x0]
+ ldr r0, [r4, #0x20]
+ ldr r1, _02012DD4 ; =0x020ED4FC
+ str r0, [sp, #0x4]
+ ldrh r2, [r4, #0x30]
+ ldr r0, _02012DDC ; =0x020ED4F0
+ bl FUN_0201ED5C
+ add r0, r4, #0x0
+ mov r1, #0x0
+ add r0, #0xdb
+ strb r1, [r0, #0x0]
+ ldr r0, [r4, #0x20]
+ bl FUN_0201EB8C
+_02012DA8:
+ mov r0, #0x6
+ str r0, [sp, #0x0]
+ mov r0, #0x3f
+ str r0, [sp, #0x4]
+ ldr r0, _02012DE0 ; =0x020ED508
+ mov r1, #0x14
+ ldr r0, [r0, r5]
+ mov r2, #0xc8
+ mov r3, #0x5
+ blx FUN_0208B4A0
+ str r0, [r4, #0x0]
+ ldr r1, _02012DD8 ; =0x020ED4E4
+ add r0, r4, #0x0
+ bl FUN_020133FC
+ add r0, r4, #0x0
+ add sp, #0x10
+ pop {r3-r7, pc}
+ nop
+_02012DD0: .word 0x021C4858
+_02012DD4: .word 0x020ED4FC
+_02012DD8: .word 0x020ED4E4
+_02012DDC: .word 0x020ED4F0
+_02012DE0: .word 0x020ED508
+
+ thumb_func_start FUN_02012DE4
+FUN_02012DE4: ; 0x02012DE4
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ bl FUN_020133D0
+ add r0, r5, #0x0
+ add r0, #0xd8
+ ldrb r1, [r0, #0x0]
+ mov r0, #0x1
+ tst r0, r1
+ beq _02012E02
+ add r0, r5, #0x0
+ add r0, #0x58
+ blx FUN_020AE8CC
+ b _02012E22
+_02012E02:
+ mov r0, #0x2
+ tst r0, r1
+ beq _02012E22
+ mov r6, #0x0
+ add r4, r5, #0x0
+ add r7, r6, #0x0
+_02012E0E:
+ ldr r0, [r4, #0x58]
+ cmp r0, #0x0
+ beq _02012E1A
+ blx FUN_020AF894
+ str r7, [r4, #0x58]
+_02012E1A:
+ add r6, r6, #0x1
+ add r4, r4, #0x4
+ cmp r6, #0x10
+ blt _02012E0E
+_02012E22:
+ add r0, r5, #0x0
+ add r0, #0xd8
+ ldrb r1, [r0, #0x0]
+ mov r0, #0x4
+ tst r0, r1
+ beq _02012E38
+ add r0, r5, #0x0
+ add r0, #0x98
+ blx FUN_020AEC7C
+ b _02012E60
+_02012E38:
+ mov r0, #0x8
+ tst r0, r1
+ beq _02012E60
+ mov r6, #0x0
+ add r4, r5, #0x0
+ add r7, r6, #0x0
+_02012E44:
+ add r0, r4, #0x0
+ add r0, #0x98
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _02012E58
+ blx FUN_020AFA80
+ add r0, r4, #0x0
+ add r0, #0x98
+ str r7, [r0, #0x0]
+_02012E58:
+ add r6, r6, #0x1
+ add r4, r4, #0x4
+ cmp r6, #0x10
+ blt _02012E44
+_02012E60:
+ add r0, r5, #0x0
+ mov r1, #0x0
+ add r0, #0xd8
+ strb r1, [r0, #0x0]
+ str r1, [r5, #0x8]
+ ldr r0, [r5, #0x4]
+ cmp r0, #0x0
+ beq _02012E78
+ bl FUN_02016A18
+ mov r0, #0x0
+ str r0, [r5, #0x4]
+_02012E78:
+ ldr r2, _02012EA8 ; =0x021C4858
+ mov r1, #0x0
+_02012E7C:
+ ldr r0, [r2, #0x0]
+ cmp r0, r5
+ bne _02012E8C
+ ldr r0, _02012EA8 ; =0x021C4858
+ mov r2, #0x0
+ lsl r1, r1, #0x2
+ str r2, [r0, r1]
+ b _02012E94
+_02012E8C:
+ add r1, r1, #0x1
+ add r2, r2, #0x4
+ cmp r1, #0x10
+ blt _02012E7C
+_02012E94:
+ ldr r0, [r5, #0x20]
+ cmp r0, #0x0
+ beq _02012E9E
+ bl FUN_0201EB70
+_02012E9E:
+ add r0, r5, #0x0
+ bl FUN_02016A18
+ pop {r3-r7, pc}
+ nop
+_02012EA8: .word 0x021C4858
+
+ thumb_func_start FUN_02012EAC
+FUN_02012EAC: ; 0x02012EAC
+ push {r3-r5, lr}
+ ldr r5, _02012EC8 ; =0x021C4858
+ mov r4, #0x0
+_02012EB2:
+ ldr r0, [r5, #0x0]
+ cmp r0, #0x0
+ beq _02012EBC
+ bl FUN_02012DE4
+_02012EBC:
+ add r4, r4, #0x1
+ add r5, r5, #0x4
+ cmp r4, #0x10
+ blt _02012EB2
+ pop {r3-r5, pc}
+ nop
+_02012EC8: .word 0x021C4858
+
+ thumb_func_start FUN_02012ECC
+FUN_02012ECC: ; 0x02012ECC
+ push {r4, lr}
+ ldr r1, _02012EF4 ; =0x021C4850
+ mov r2, #0x3
+ ldr r1, [r1, #0x8]
+ ldr r4, [r1, #0x10]
+ add r0, r4, r0
+ add r3, r0, #0x0
+ and r3, r2
+ beq _02012EE4
+ mov r2, #0x4
+ sub r2, r2, r3
+ add r0, r0, r2
+_02012EE4:
+ str r0, [r1, #0x10]
+ ldr r1, [r1, #0x14]
+ cmp r0, r1
+ blo _02012EF0
+ bl ErrorHandling
+_02012EF0:
+ add r0, r4, #0x0
+ pop {r4, pc}
+ .balign 4
+_02012EF4: .word 0x021C4850
+
+ thumb_func_start FUN_02012EF8
+FUN_02012EF8: ; 0x02012EF8
+ push {r4, lr}
+ ldr r1, _02012F20 ; =0x021C4850
+ mov r2, #0x3
+ ldr r1, [r1, #0xc]
+ ldr r4, [r1, #0x10]
+ add r0, r4, r0
+ add r3, r0, #0x0
+ and r3, r2
+ beq _02012F10
+ mov r2, #0x4
+ sub r2, r2, r3
+ add r0, r0, r2
+_02012F10:
+ str r0, [r1, #0x10]
+ ldr r1, [r1, #0x14]
+ cmp r0, r1
+ blo _02012F1C
+ bl ErrorHandling
+_02012F1C:
+ add r0, r4, #0x0
+ pop {r4, pc}
+ .balign 4
+_02012F20: .word 0x021C4850
+
+ thumb_func_start FUN_02012F24
+FUN_02012F24: ; 0x02012F24
+ push {r4, lr}
+ ldr r1, _02012F4C ; =0x021C4850
+ mov r2, #0x3
+ ldr r1, [r1, #0x10]
+ ldr r4, [r1, #0x10]
+ add r0, r4, r0
+ add r3, r0, #0x0
+ and r3, r2
+ beq _02012F3C
+ mov r2, #0x4
+ sub r2, r2, r3
+ add r0, r0, r2
+_02012F3C:
+ str r0, [r1, #0x10]
+ ldr r1, [r1, #0x14]
+ cmp r0, r1
+ blo _02012F48
+ bl ErrorHandling
+_02012F48:
+ add r0, r4, #0x0
+ pop {r4, pc}
+ .balign 4
+_02012F4C: .word 0x021C4850
+
+ thumb_func_start FUN_02012F50
+FUN_02012F50: ; 0x02012F50
+ push {r4, lr}
+ ldr r1, _02012F78 ; =0x021C4850
+ mov r2, #0x3
+ ldr r1, [r1, #0x14]
+ ldr r4, [r1, #0x10]
+ add r0, r4, r0
+ add r3, r0, #0x0
+ and r3, r2
+ beq _02012F68
+ mov r2, #0x4
+ sub r2, r2, r3
+ add r0, r0, r2
+_02012F68:
+ str r0, [r1, #0x10]
+ ldr r1, [r1, #0x14]
+ cmp r0, r1
+ blo _02012F74
+ bl ErrorHandling
+_02012F74:
+ add r0, r4, #0x0
+ pop {r4, pc}
+ .balign 4
+_02012F78: .word 0x021C4850
+
+ thumb_func_start FUN_02012F7C
+FUN_02012F7C: ; 0x02012F7C
+ push {r4, lr}
+ ldr r1, _02012FA4 ; =0x021C4850
+ mov r2, #0x3
+ ldr r1, [r1, #0x18]
+ ldr r4, [r1, #0x10]
+ add r0, r4, r0
+ add r3, r0, #0x0
+ and r3, r2
+ beq _02012F94
+ mov r2, #0x4
+ sub r2, r2, r3
+ add r0, r0, r2
+_02012F94:
+ str r0, [r1, #0x10]
+ ldr r1, [r1, #0x14]
+ cmp r0, r1
+ blo _02012FA0
+ bl ErrorHandling
+_02012FA0:
+ add r0, r4, #0x0
+ pop {r4, pc}
+ .balign 4
+_02012FA4: .word 0x021C4850
+
+ thumb_func_start FUN_02012FA8
+FUN_02012FA8: ; 0x02012FA8
+ push {r4, lr}
+ ldr r1, _02012FD0 ; =0x021C4850
+ mov r2, #0x3
+ ldr r1, [r1, #0x1c]
+ ldr r4, [r1, #0x10]
+ add r0, r4, r0
+ add r3, r0, #0x0
+ and r3, r2
+ beq _02012FC0
+ mov r2, #0x4
+ sub r2, r2, r3
+ add r0, r0, r2
+_02012FC0:
+ str r0, [r1, #0x10]
+ ldr r1, [r1, #0x14]
+ cmp r0, r1
+ blo _02012FCC
+ bl ErrorHandling
+_02012FCC:
+ add r0, r4, #0x0
+ pop {r4, pc}
+ .balign 4
+_02012FD0: .word 0x021C4850
+
+ thumb_func_start FUN_02012FD4
+FUN_02012FD4: ; 0x02012FD4
+ push {r4, lr}
+ ldr r1, _02012FFC ; =0x021C4850
+ mov r2, #0x3
+ ldr r1, [r1, #0x20]
+ ldr r4, [r1, #0x10]
+ add r0, r4, r0
+ add r3, r0, #0x0
+ and r3, r2
+ beq _02012FEC
+ mov r2, #0x4
+ sub r2, r2, r3
+ add r0, r0, r2
+_02012FEC:
+ str r0, [r1, #0x10]
+ ldr r1, [r1, #0x14]
+ cmp r0, r1
+ blo _02012FF8
+ bl ErrorHandling
+_02012FF8:
+ add r0, r4, #0x0
+ pop {r4, pc}
+ .balign 4
+_02012FFC: .word 0x021C4850
+
+ thumb_func_start FUN_02013000
+FUN_02013000: ; 0x02013000
+ push {r4, lr}
+ ldr r1, _02013028 ; =0x021C4850
+ mov r2, #0x3
+ ldr r1, [r1, #0x24]
+ ldr r4, [r1, #0x10]
+ add r0, r4, r0
+ add r3, r0, #0x0
+ and r3, r2
+ beq _02013018
+ mov r2, #0x4
+ sub r2, r2, r3
+ add r0, r0, r2
+_02013018:
+ str r0, [r1, #0x10]
+ ldr r1, [r1, #0x14]
+ cmp r0, r1
+ blo _02013024
+ bl ErrorHandling
+_02013024:
+ add r0, r4, #0x0
+ pop {r4, pc}
+ .balign 4
+_02013028: .word 0x021C4850
+
+ thumb_func_start FUN_0201302C
+FUN_0201302C: ; 0x0201302C
+ push {r4, lr}
+ ldr r1, _02013054 ; =0x021C4850
+ mov r2, #0x3
+ ldr r1, [r1, #0x28]
+ ldr r4, [r1, #0x10]
+ add r0, r4, r0
+ add r3, r0, #0x0
+ and r3, r2
+ beq _02013044
+ mov r2, #0x4
+ sub r2, r2, r3
+ add r0, r0, r2
+_02013044:
+ str r0, [r1, #0x10]
+ ldr r1, [r1, #0x14]
+ cmp r0, r1
+ blo _02013050
+ bl ErrorHandling
+_02013050:
+ add r0, r4, #0x0
+ pop {r4, pc}
+ .balign 4
+_02013054: .word 0x021C4850
+
+ thumb_func_start FUN_02013058
+FUN_02013058: ; 0x02013058
+ push {r4, lr}
+ ldr r1, _02013080 ; =0x021C4850
+ mov r2, #0x3
+ ldr r1, [r1, #0x2c]
+ ldr r4, [r1, #0x10]
+ add r0, r4, r0
+ add r3, r0, #0x0
+ and r3, r2
+ beq _02013070
+ mov r2, #0x4
+ sub r2, r2, r3
+ add r0, r0, r2
+_02013070:
+ str r0, [r1, #0x10]
+ ldr r1, [r1, #0x14]
+ cmp r0, r1
+ blo _0201307C
+ bl ErrorHandling
+_0201307C:
+ add r0, r4, #0x0
+ pop {r4, pc}
+ .balign 4
+_02013080: .word 0x021C4850
+
+ thumb_func_start FUN_02013084
+FUN_02013084: ; 0x02013084
+ push {r4, lr}
+ ldr r1, _020130AC ; =0x021C4850
+ mov r2, #0x3
+ ldr r1, [r1, #0x30]
+ ldr r4, [r1, #0x10]
+ add r0, r4, r0
+ add r3, r0, #0x0
+ and r3, r2
+ beq _0201309C
+ mov r2, #0x4
+ sub r2, r2, r3
+ add r0, r0, r2
+_0201309C:
+ str r0, [r1, #0x10]
+ ldr r1, [r1, #0x14]
+ cmp r0, r1
+ blo _020130A8
+ bl ErrorHandling
+_020130A8:
+ add r0, r4, #0x0
+ pop {r4, pc}
+ .balign 4
+_020130AC: .word 0x021C4850
+
+ thumb_func_start FUN_020130B0
+FUN_020130B0: ; 0x020130B0
+ push {r4, lr}
+ ldr r1, _020130D8 ; =0x021C4850
+ mov r2, #0x3
+ ldr r1, [r1, #0x34]
+ ldr r4, [r1, #0x10]
+ add r0, r4, r0
+ add r3, r0, #0x0
+ and r3, r2
+ beq _020130C8
+ mov r2, #0x4
+ sub r2, r2, r3
+ add r0, r0, r2
+_020130C8:
+ str r0, [r1, #0x10]
+ ldr r1, [r1, #0x14]
+ cmp r0, r1
+ blo _020130D4
+ bl ErrorHandling
+_020130D4:
+ add r0, r4, #0x0
+ pop {r4, pc}
+ .balign 4
+_020130D8: .word 0x021C4850
+
+ thumb_func_start FUN_020130DC
+FUN_020130DC: ; 0x020130DC
+ push {r4, lr}
+ ldr r1, _02013104 ; =0x021C4850
+ mov r2, #0x3
+ ldr r1, [r1, #0x38]
+ ldr r4, [r1, #0x10]
+ add r0, r4, r0
+ add r3, r0, #0x0
+ and r3, r2
+ beq _020130F4
+ mov r2, #0x4
+ sub r2, r2, r3
+ add r0, r0, r2
+_020130F4:
+ str r0, [r1, #0x10]
+ ldr r1, [r1, #0x14]
+ cmp r0, r1
+ blo _02013100
+ bl ErrorHandling
+_02013100:
+ add r0, r4, #0x0
+ pop {r4, pc}
+ .balign 4
+_02013104: .word 0x021C4850
+
+ thumb_func_start FUN_02013108
+FUN_02013108: ; 0x02013108
+ push {r4, lr}
+ ldr r1, _02013130 ; =0x021C4850
+ mov r2, #0x3
+ ldr r1, [r1, #0x3c]
+ ldr r4, [r1, #0x10]
+ add r0, r4, r0
+ add r3, r0, #0x0
+ and r3, r2
+ beq _02013120
+ mov r2, #0x4
+ sub r2, r2, r3
+ add r0, r0, r2
+_02013120:
+ str r0, [r1, #0x10]
+ ldr r1, [r1, #0x14]
+ cmp r0, r1
+ blo _0201312C
+ bl ErrorHandling
+_0201312C:
+ add r0, r4, #0x0
+ pop {r4, pc}
+ .balign 4
+_02013130: .word 0x021C4850
+
+ thumb_func_start FUN_02013134
+FUN_02013134: ; 0x02013134
+ push {r4, lr}
+ ldr r1, _0201315C ; =0x021C4850
+ mov r2, #0x3
+ ldr r1, [r1, #0x40]
+ ldr r4, [r1, #0x10]
+ add r0, r4, r0
+ add r3, r0, #0x0
+ and r3, r2
+ beq _0201314C
+ mov r2, #0x4
+ sub r2, r2, r3
+ add r0, r0, r2
+_0201314C:
+ str r0, [r1, #0x10]
+ ldr r1, [r1, #0x14]
+ cmp r0, r1
+ blo _02013158
+ bl ErrorHandling
+_02013158:
+ add r0, r4, #0x0
+ pop {r4, pc}
+ .balign 4
+_0201315C: .word 0x021C4850
+
+ thumb_func_start FUN_02013160
+FUN_02013160: ; 0x02013160
+ push {r4, lr}
+ ldr r1, _02013188 ; =0x021C4850
+ mov r2, #0x3
+ ldr r1, [r1, #0x44]
+ ldr r4, [r1, #0x10]
+ add r0, r4, r0
+ add r3, r0, #0x0
+ and r3, r2
+ beq _02013178
+ mov r2, #0x4
+ sub r2, r2, r3
+ add r0, r0, r2
+_02013178:
+ str r0, [r1, #0x10]
+ ldr r1, [r1, #0x14]
+ cmp r0, r1
+ blo _02013184
+ bl ErrorHandling
+_02013184:
+ add r0, r4, #0x0
+ pop {r4, pc}
+ .balign 4
+_02013188: .word 0x021C4850
+
+ thumb_func_start FUN_0201318C
+FUN_0201318C: ; 0x0201318C
+ ldr r3, _02013190 ; =LoadFromNarc_2
+ bx r3
+ .balign 4
+_02013190: .word LoadFromNarc_2
+
+ thumb_func_start FUN_02013194
+FUN_02013194: ; 0x02013194
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ add r6, r1, #0x0
+ add r4, r2, #0x0
+ add r7, r3, #0x0
+ cmp r0, #0x0
+ bne _020131A8
+ bl ErrorHandling
+_020131A8:
+ ldr r0, [r5, #0x4]
+ cmp r0, #0x0
+ beq _020131B2
+ bl ErrorHandling
+_020131B2:
+ add r0, r5, #0x0
+ add r0, #0xd8
+ strb r4, [r0, #0x0]
+ mov r0, #0x1
+ tst r0, r4
+ beq _020131C8
+ add r0, r5, #0x0
+ add r0, #0x58
+ blx FUN_020AE918
+ b _020131DE
+_020131C8:
+ mov r0, #0x2
+ tst r0, r4
+ beq _020131DE
+ mov r1, #0x0
+ add r2, r5, #0x0
+ add r0, r1, #0x0
+_020131D4:
+ add r1, r1, #0x1
+ str r0, [r2, #0x58]
+ add r2, r2, #0x4
+ cmp r1, #0x10
+ blt _020131D4
+_020131DE:
+ mov r0, #0x4
+ tst r0, r4
+ beq _020131EE
+ add r0, r5, #0x0
+ add r0, #0x98
+ blx FUN_020AEC98
+ b _02013208
+_020131EE:
+ mov r0, #0x8
+ tst r0, r4
+ beq _02013208
+ mov r2, #0x0
+ add r3, r5, #0x0
+ add r1, r2, #0x0
+_020131FA:
+ add r0, r3, #0x0
+ add r0, #0x98
+ add r2, r2, #0x1
+ add r3, r3, #0x4
+ str r1, [r0, #0x0]
+ cmp r2, #0x10
+ blt _020131FA
+_02013208:
+ str r6, [r5, #0x4]
+ cmp r7, #0x1
+ bne _02013216
+ add r0, r5, #0x0
+ bl FUN_02013228
+ pop {r3-r7, pc}
+_02013216:
+ ldr r0, _02013224 ; =FUN_02013268
+ add r1, r5, #0x0
+ mov r2, #0x5
+ bl FUN_0200CA98
+ pop {r3-r7, pc}
+ nop
+_02013224: .word FUN_02013268
+
+ thumb_func_start FUN_02013228
+FUN_02013228: ; 0x02013228
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ ldr r1, [r4, #0x4]
+ blx FUN_0208B128
+ ldr r0, _02013264 ; =0x021C4850
+ str r4, [r0, #0x0]
+ ldr r1, [r4, #0x18]
+ ldr r0, [r4, #0x0]
+ cmp r1, #0x0
+ bne _02013246
+ blx FUN_0208AF94
+ b _0201324A
+_02013246:
+ blx FUN_0208B05C
+_0201324A:
+ ldr r1, [r4, #0x1c]
+ ldr r0, [r4, #0x0]
+ cmp r1, #0x0
+ bne _02013258
+ blx FUN_0208AF80
+ b _0201325C
+_02013258:
+ blx FUN_0208AFA8
+_0201325C:
+ ldr r0, _02013264 ; =0x021C4850
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+ pop {r4, pc}
+ .balign 4
+_02013264: .word 0x021C4850
+
+ thumb_func_start FUN_02013268
+FUN_02013268: ; 0x02013268
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, r1, #0x0
+ bl FUN_02013228
+ add r0, r4, #0x0
+ bl FUN_0200CAB4
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201327C
+FUN_0201327C: ; 0x0201327C
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _02013286
+ bl ErrorHandling
+_02013286:
+ ldr r0, _020132B8 ; =0x021C4850
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _02013292
+ bl ErrorHandling
+_02013292:
+ ldr r0, _020132B8 ; =0x021C4850
+ mov r1, #0x0
+ ldr r3, [r0, #0x0]
+ add r2, r3, #0x0
+_0201329A:
+ ldr r0, [r2, #0x58]
+ cmp r0, #0x0
+ bne _020132A8
+ lsl r0, r1, #0x2
+ add r0, r3, r0
+ str r4, [r0, #0x58]
+ pop {r4, pc}
+_020132A8:
+ add r1, r1, #0x1
+ add r2, r2, #0x4
+ cmp r1, #0x10
+ blt _0201329A
+ bl ErrorHandling
+ pop {r4, pc}
+ nop
+_020132B8: .word 0x021C4850
+
+ thumb_func_start FUN_020132BC
+FUN_020132BC: ; 0x020132BC
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _020132C6
+ bl ErrorHandling
+_020132C6:
+ ldr r0, _020132FC ; =0x021C4850
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _020132D2
+ bl ErrorHandling
+_020132D2:
+ ldr r0, _020132FC ; =0x021C4850
+ mov r1, #0x0
+ ldr r3, [r0, #0x0]
+ add r2, r3, #0x0
+_020132DA:
+ add r0, r2, #0x0
+ add r0, #0x98
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _020132EE
+ lsl r0, r1, #0x2
+ add r0, r3, r0
+ add r0, #0x98
+ str r4, [r0, #0x0]
+ pop {r4, pc}
+_020132EE:
+ add r1, r1, #0x1
+ add r2, r2, #0x4
+ cmp r1, #0x10
+ blt _020132DA
+ bl ErrorHandling
+ pop {r4, pc}
+ .balign 4
+_020132FC: .word 0x021C4850
+
+ thumb_func_start FUN_02013300
+FUN_02013300: ; 0x02013300
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x20]
+ cmp r1, #0x0
+ beq _0201331C
+ add r0, #0xdb
+ ldrb r0, [r0, #0x0]
+ bl FUN_0201EE2C
+ ldr r0, [r4, #0x20]
+ bl FUN_0201EB8C
+ bl FUN_0201EBA4
+_0201331C:
+ blx FUN_020B849C
+ ldr r0, [r4, #0x0]
+ ldr r1, _02013338 ; =0x021CED64
+ blx FUN_0208AD80
+ ldr r0, [r4, #0x20]
+ cmp r0, #0x0
+ beq _02013332
+ bl FUN_0201EB98
+_02013332:
+ blx FUN_020B849C
+ pop {r4, pc}
+ .balign 4
+_02013338: .word 0x021CED64
+
+ thumb_func_start FUN_0201333C
+FUN_0201333C: ; 0x0201333C
+ ldr r3, _02013344 ; =0x0208AE48
+ ldr r0, [r0, #0x0]
+ bx r3
+ nop
+_02013344: .word 0x0208AE48
+
+ thumb_func_start FUN_02013348
+FUN_02013348: ; 0x02013348
+ mov r0, #0x0
+ ldr r3, _02013360 ; =0x021C4858
+ add r2, r0, #0x0
+_0201334E:
+ ldr r1, [r3, #0x0]
+ cmp r1, #0x0
+ beq _02013356
+ add r0, r0, #0x1
+_02013356:
+ add r2, r2, #0x1
+ add r3, r3, #0x4
+ cmp r2, #0x10
+ blt _0201334E
+ bx lr
+ .balign 4
+_02013360: .word 0x021C4858
+
+ thumb_func_start FUN_02013364
+FUN_02013364: ; 0x02013364
+ push {r4-r6, lr}
+ mov r4, #0x0
+ ldr r5, _02013384 ; =0x021C4858
+ add r6, r4, #0x0
+_0201336C:
+ ldr r0, [r5, #0x0]
+ cmp r0, #0x0
+ beq _02013378
+ bl FUN_02013300
+ add r4, r4, #0x1
+_02013378:
+ add r6, r6, #0x1
+ add r5, r5, #0x4
+ cmp r6, #0x10
+ blt _0201336C
+ add r0, r4, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+_02013384: .word 0x021C4858
+
+ thumb_func_start FUN_02013388
+FUN_02013388: ; 0x02013388
+ push {r4-r6, lr}
+ mov r4, #0x0
+ ldr r5, _020133A8 ; =0x021C4858
+ add r6, r4, #0x0
+_02013390:
+ ldr r0, [r5, #0x0]
+ cmp r0, #0x0
+ beq _0201339C
+ bl FUN_0201333C
+ add r4, r4, #0x1
+_0201339C:
+ add r6, r6, #0x1
+ add r5, r5, #0x4
+ cmp r6, #0x10
+ blt _02013390
+ add r0, r4, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+_020133A8: .word 0x021C4858
+
+ thumb_func_start FUN_020133AC
+FUN_020133AC: ; 0x020133AC
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _020133C4 ; =0x021C4850
+ str r3, [r0, #0x4]
+ ldr r0, [r4, #0x0]
+ blx FUN_0208ACEC
+ ldr r1, _020133C4 ; =0x021C4850
+ mov r2, #0x0
+ str r2, [r1, #0x4]
+ str r0, [r4, #0x8]
+ pop {r4, pc}
+ .balign 4
+_020133C4: .word 0x021C4850
+
+ thumb_func_start FUN_020133C8
+FUN_020133C8: ; 0x020133C8
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x8]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020133D0
+FUN_020133D0: ; 0x020133D0
+ ldr r3, _020133D8 ; =0x0208AC14
+ ldr r0, [r0, #0x0]
+ bx r3
+ nop
+_020133D8: .word 0x0208AC14
+
+ thumb_func_start FUN_020133DC
+FUN_020133DC: ; 0x020133DC
+ ldr r3, _020133E4 ; =0x0208AC58
+ ldr r0, [r0, #0x0]
+ bx r3
+ nop
+_020133E4: .word 0x0208AC58
+
+ thumb_func_start FUN_020133E8
+FUN_020133E8: ; 0x020133E8
+ ldr r0, [r0, #0xc]
+ bx lr
+
+ thumb_func_start FUN_020133EC
+FUN_020133EC: ; 0x020133EC
+ add r2, r0, #0x0
+ add r2, #0x40
+ add r3, r1, #0x0
+ ldmia r2!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldr r0, [r2, #0x0]
+ str r0, [r3, #0x0]
+ bx lr
+
+ thumb_func_start FUN_020133FC
+FUN_020133FC: ; 0x020133FC
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r3, r4, #0x0
+ add r2, r5, #0x0
+ ldmia r3!, {r0-r1}
+ add r2, #0x40
+ stmia r2!, {r0-r1}
+ ldr r0, [r3, #0x0]
+ str r0, [r2, #0x0]
+ ldr r1, [r5, #0x20]
+ add r0, r4, #0x0
+ bl FUN_0201EC58
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201341C
+FUN_0201341C: ; 0x0201341C
+ ldr r0, _02013424 ; =0x021C4850
+ ldr r0, [r0, #0x4]
+ bx lr
+ nop
+_02013424: .word 0x021C4850
+
+ thumb_func_start FUN_02013428
+FUN_02013428: ; 0x02013428
+ ldr r2, _02013438 ; =0x020ED4E4
+ add r3, r0, #0x0
+ ldmia r2!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldr r0, [r2, #0x0]
+ str r0, [r3, #0x0]
+ bx lr
+ nop
+_02013438: .word 0x020ED4E4
+
+ thumb_func_start FUN_0201343C
+FUN_0201343C: ; 0x0201343C
+ ldr r0, [r0, #0x20]
+ bx lr
+
+ thumb_func_start FUN_02013440
+FUN_02013440: ; 0x02013440
+ add r0, #0xdb
+ strb r1, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02013448
+FUN_02013448: ; 0x02013448
+ add r0, #0xdb
+ ldrb r0, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02013450
+FUN_02013450: ; 0x02013450
+ ldr r0, [r0, #0x20]
+ ldr r0, [r0, #0x0]
+ str r1, [r0, #0x10]
+ bx lr
+
+ thumb_func_start FUN_02013458
+FUN_02013458: ; 0x02013458
+ push {r4-r7}
+ ldr r0, [r0, #0x20]
+ add r4, r1, #0x0
+ ldrh r2, [r0, #0x1c]
+ cmp r2, #0x0
+ bne _0201346A
+ mov r0, #0x0
+ pop {r4-r7}
+ bx lr
+_0201346A:
+ mov r1, #0x0
+ cmp r2, #0x0
+ ble _020134F4
+ ldr r3, [r0, #0x18]
+ ldr r7, _020134FC ; =0x020908DC
+ ldr r0, _02013500 ; =0x020909A4
+_02013476:
+ cmp r3, #0x0
+ beq _020134EC
+ cmp r4, #0x5
+ bhi _020134E6
+ add r5, r4, r4
+ add r5, pc
+ ldrh r5, [r5, #0x6]
+ lsl r5, r5, #0x10
+ asr r5, r5, #0x10
+ add pc, r5
+_0201348A: ; jump table (using 16-bit offset)
+ .short _02013496 - _0201348A - 2; case 0
+ .short _020134A2 - _0201348A - 2; case 1
+ .short _020134AE - _0201348A - 2; case 2
+ .short _020134BC - _0201348A - 2; case 3
+ .short _020134CA - _0201348A - 2; case 4
+ .short _020134D8 - _0201348A - 2; case 5
+_02013496:
+ ldr r5, [r3, #0x0]
+ cmp r5, r0
+ bne _020134EC
+ ldr r0, [r3, #0x4]
+ pop {r4-r7}
+ bx lr
+_020134A2:
+ ldr r5, [r3, #0x0]
+ cmp r5, r7
+ bne _020134EC
+ ldr r0, [r3, #0x4]
+ pop {r4-r7}
+ bx lr
+_020134AE:
+ ldr r6, [r3, #0x0]
+ ldr r5, _02013504 ; =0x02090858
+ cmp r6, r5
+ bne _020134EC
+ ldr r0, [r3, #0x4]
+ pop {r4-r7}
+ bx lr
+_020134BC:
+ ldr r6, [r3, #0x0]
+ ldr r5, _02013508 ; =0x02090780
+ cmp r6, r5
+ bne _020134EC
+ ldr r0, [r3, #0x4]
+ pop {r4-r7}
+ bx lr
+_020134CA:
+ ldr r6, [r3, #0x0]
+ ldr r5, _0201350C ; =0x02090664
+ cmp r6, r5
+ bne _020134EC
+ ldr r0, [r3, #0x4]
+ pop {r4-r7}
+ bx lr
+_020134D8:
+ ldr r6, [r3, #0x0]
+ ldr r5, _02013510 ; =0x020905D0
+ cmp r6, r5
+ bne _020134EC
+ ldr r0, [r3, #0x4]
+ pop {r4-r7}
+ bx lr
+_020134E6:
+ mov r0, #0x0
+ pop {r4-r7}
+ bx lr
+_020134EC:
+ add r1, r1, #0x1
+ add r3, #0x8
+ cmp r1, r2
+ blt _02013476
+_020134F4:
+ mov r0, #0x0
+ pop {r4-r7}
+ bx lr
+ nop
+_020134FC: .word 0x020908DC
+_02013500: .word 0x020909A4
+_02013504: .word 0x02090858
+_02013508: .word 0x02090780
+_0201350C: .word 0x02090664
+_02013510: .word 0x020905D0
+
+ thumb_func_start FUN_02013514
+FUN_02013514: ; 0x02013514
+ push {r4, lr}
+ add r4, r1, #0x0
+ mov r1, #0x0
+ bl FUN_02013458
+ cmp r0, #0x0
+ beq _0201352E
+ ldrh r1, [r4, #0x0]
+ strh r1, [r0, #0x0]
+ ldrh r1, [r4, #0x2]
+ strh r1, [r0, #0x2]
+ ldrh r1, [r4, #0x4]
+ strh r1, [r0, #0x4]
+_0201352E:
+ pop {r4, pc}
+
+ thumb_func_start FUN_02013530
+FUN_02013530: ; 0x02013530
+ push {r4, lr}
+ add r4, r1, #0x0
+ mov r1, #0x2
+ bl FUN_02013458
+ add r2, r0, #0x0
+ beq _02013546
+ ldmia r4!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldr r0, [r4, #0x0]
+ str r0, [r2, #0x0]
+_02013546:
+ pop {r4, pc}
+
+ thumb_func_start FUN_02013548
+FUN_02013548: ; 0x02013548
+ push {r3-r4, lr}
+ sub sp, #0xc
+ add r4, r1, #0x0
+ mov r1, #0x2
+ bl FUN_02013458
+ add r2, r0, #0x0
+ bne _0201356E
+ add r2, sp, #0x0
+ mov r0, #0x0
+ str r0, [r2, #0x0]
+ str r0, [r2, #0x4]
+ str r0, [r2, #0x8]
+ ldmia r2!, {r0-r1}
+ stmia r4!, {r0-r1}
+ ldr r0, [r2, #0x0]
+ add sp, #0xc
+ str r0, [r4, #0x0]
+ pop {r3-r4, pc}
+_0201356E:
+ ldmia r2!, {r0-r1}
+ stmia r4!, {r0-r1}
+ ldr r0, [r2, #0x0]
+ str r0, [r4, #0x0]
+ add sp, #0xc
+ pop {r3-r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201357C
+FUN_0201357C: ; 0x0201357C
+ push {r4, lr}
+ add r4, r1, #0x0
+ mov r1, #0x2
+ bl FUN_02013458
+ cmp r0, #0x0
+ beq _02013590
+ mov r1, #0x0
+ ldrsh r1, [r4, r1]
+ strh r1, [r0, #0xc]
+_02013590:
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02013594
+FUN_02013594: ; 0x02013594
+ push {r4, lr}
+ add r4, r1, #0x0
+ mov r1, #0x2
+ bl FUN_02013458
+ cmp r0, #0x0
+ bne _020135A8
+ mov r0, #0x0
+ strh r0, [r4, #0x0]
+ pop {r4, pc}
+_020135A8:
+ mov r1, #0xc
+ ldrsh r0, [r0, r1]
+ strh r0, [r4, #0x0]
+ pop {r4, pc}
+
+ thumb_func_start FUN_020135B0
+FUN_020135B0: ; 0x020135B0
+ push {r4, lr}
+ add r4, r1, #0x0
+ mov r1, #0x3
+ bl FUN_02013458
+ cmp r0, #0x0
+ beq _020135C2
+ ldrh r1, [r4, #0x0]
+ strh r1, [r0, #0x0]
+_020135C2:
+ pop {r4, pc}
+
+ thumb_func_start FUN_020135C4
+FUN_020135C4: ; 0x020135C4
+ push {r4, lr}
+ add r4, r1, #0x0
+ mov r1, #0x3
+ bl FUN_02013458
+ cmp r0, #0x0
+ bne _020135D8
+ mov r0, #0x0
+ strh r0, [r4, #0x0]
+ pop {r4, pc}
+_020135D8:
+ ldrh r0, [r0, #0x0]
+ strh r0, [r4, #0x0]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020135E0
+FUN_020135E0: ; 0x020135E0
+ push {r4, lr}
+ add r4, r1, #0x0
+ mov r1, #0x3
+ bl FUN_02013458
+ cmp r0, #0x0
+ beq _020135F2
+ ldrh r1, [r4, #0x0]
+ strh r1, [r0, #0x2]
+_020135F2:
+ pop {r4, pc}
+
+ thumb_func_start FUN_020135F4
+FUN_020135F4: ; 0x020135F4
+ push {r4, lr}
+ add r4, r1, #0x0
+ mov r1, #0x3
+ bl FUN_02013458
+ cmp r0, #0x0
+ bne _02013608
+ mov r0, #0x0
+ strh r0, [r4, #0x0]
+ pop {r4, pc}
+_02013608:
+ ldrh r0, [r0, #0x2]
+ strh r0, [r4, #0x0]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02013610
+FUN_02013610: ; 0x02013610
+ push {r4, lr}
+ add r4, r1, #0x0
+ mov r1, #0x5
+ bl FUN_02013458
+ add r2, r0, #0x0
+ beq _02013626
+ ldmia r4!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldr r0, [r4, #0x0]
+ str r0, [r2, #0x0]
+_02013626:
+ pop {r4, pc}
+
+ thumb_func_start FUN_02013628
+FUN_02013628: ; 0x02013628
+ push {r3-r4, lr}
+ sub sp, #0xc
+ add r4, r1, #0x0
+ mov r1, #0x5
+ bl FUN_02013458
+ add r2, r0, #0x0
+ bne _0201364E
+ add r2, sp, #0x0
+ mov r0, #0x0
+ str r0, [r2, #0x0]
+ str r0, [r2, #0x4]
+ str r0, [r2, #0x8]
+ ldmia r2!, {r0-r1}
+ stmia r4!, {r0-r1}
+ ldr r0, [r2, #0x0]
+ add sp, #0xc
+ str r0, [r4, #0x0]
+ pop {r3-r4, pc}
+_0201364E:
+ ldmia r2!, {r0-r1}
+ stmia r4!, {r0-r1}
+ ldr r0, [r2, #0x0]
+ str r0, [r4, #0x0]
+ add sp, #0xc
+ pop {r3-r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201365C
+FUN_0201365C: ; 0x0201365C
+ push {r4, lr}
+ add r4, r1, #0x0
+ mov r1, #0x5
+ bl FUN_02013458
+ cmp r0, #0x0
+ beq _02013670
+ mov r1, #0x0
+ ldrsh r1, [r4, r1]
+ strh r1, [r0, #0xc]
+_02013670:
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02013674
+FUN_02013674: ; 0x02013674
+ push {r4, lr}
+ add r4, r1, #0x0
+ mov r1, #0x5
+ bl FUN_02013458
+ cmp r0, #0x0
+ bne _02013688
+ mov r0, #0x0
+ strh r0, [r4, #0x0]
+ pop {r4, pc}
+_02013688:
+ mov r1, #0xc
+ ldrsh r0, [r0, r1]
+ strh r0, [r4, #0x0]
+ pop {r4, pc}
+
+ thumb_func_start FUN_02013690
+FUN_02013690: ; 0x02013690
+ push {r3-r5, lr}
+ mov r1, #0x8
+ add r5, r0, #0x0
+ bl FUN_02016998
+ add r4, r0, #0x0
+ beq _020136B2
+ ldr r0, _020136B8 ; =0x0001020F
+ add r1, r5, #0x0
+ str r0, [r4, #0x0]
+ mov r0, #0x4
+ bl FUN_020219F4
+ ldr r1, _020136BC ; =0x020ED548
+ str r0, [r4, #0x4]
+ bl FUN_02021E28
+_020136B2:
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ nop
+_020136B8: .word 0x0001020F
+_020136BC: .word 0x020ED548
+
+ thumb_func_start FUN_020136C0
+FUN_020136C0: ; 0x020136C0
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _020136CA
+ bl ErrorHandling
+_020136CA:
+ cmp r4, #0x0
+ beq _020136DE
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x0
+ beq _020136D8
+ bl FUN_02021A20
+_020136D8:
+ add r0, r4, #0x0
+ bl FUN_02016A18
+_020136DE:
+ pop {r4, pc}
+
+ thumb_func_start FUN_020136E0
+FUN_020136E0: ; 0x020136E0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r5, #0x0
+ bne _020136EE
+ bl ErrorHandling
+_020136EE:
+ cmp r5, #0x0
+ beq _020136F4
+ str r4, [r5, #0x0]
+_020136F4:
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020136F8
+FUN_020136F8: ; 0x020136F8
+ push {r4-r6, lr}
+ sub sp, #0x10
+ add r6, r0, #0x0
+ str r3, [sp, #0x0]
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ ldr r0, [r6, #0x0]
+ add r5, r1, #0x0
+ str r0, [sp, #0x8]
+ mov r1, #0x0
+ add r4, r2, #0x0
+ str r1, [sp, #0xc]
+ ldr r2, [r6, #0x4]
+ add r0, r5, #0x0
+ add r3, r4, #0x0
+ bl FUN_0201BDE0
+ add r0, r5, #0x0
+ bl FUN_02019548
+ add sp, #0x10
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02013724
+FUN_02013724: ; 0x02013724
+ ldr r1, _02013738 ; =0x0000FFFF
+ mov r2, #0x0
+ strh r1, [r0, #0x0]
+_0201372A:
+ add r2, r2, #0x1
+ strh r1, [r0, #0x4]
+ add r0, r0, #0x2
+ cmp r2, #0x2
+ blt _0201372A
+ bx lr
+ nop
+_02013738: .word 0x0000FFFF
+
+ thumb_func_start FUN_0201373C
+FUN_0201373C: ; 0x0201373C
+ strh r1, [r0, #0x0]
+ mov r2, #0x0
+ ldr r1, _02013750 ; =0x0000FFFF
+ strh r2, [r0, #0x2]
+_02013744:
+ add r2, r2, #0x1
+ strh r1, [r0, #0x4]
+ add r0, r0, #0x2
+ cmp r2, #0x2
+ blt _02013744
+ bx lr
+ .balign 4
+_02013750: .word 0x0000FFFF
+
+ thumb_func_start FUN_02013754
+FUN_02013754: ; 0x02013754
+ push {r4, lr}
+ mov r1, #0x4
+ add r4, r0, #0x0
+ bl FUN_0201373C
+ mov r0, #0x5
+ strh r0, [r4, #0x2]
+ pop {r4, pc}
+
+ thumb_func_start FUN_02013764
+FUN_02013764: ; 0x02013764
+ push {r4-r6, lr}
+ add r6, r1, #0x0
+ add r5, r0, #0x0
+ cmp r6, #0x4
+ blo _02013772
+ bl ErrorHandling
+_02013772:
+ cmp r6, #0x4
+ bhs _020137B8
+ mov r0, #0xa
+ add r4, r6, #0x0
+ mul r4, r0
+ ldr r1, _020137BC ; =0x020ED556
+ add r0, r5, #0x0
+ ldrb r1, [r1, r4]
+ bl FUN_0201373C
+ ldr r0, _020137C0 ; =0x020ED557
+ mov r1, #0x0
+ ldrb r0, [r0, r4]
+ mvn r1, r1
+ strh r0, [r5, #0x2]
+ ldr r0, _020137C4 ; =0x020ED558
+ ldrsh r0, [r0, r4]
+ cmp r0, r1
+ beq _020137A2
+ ldr r1, _020137C8 ; =0x020ED55A
+ ldrh r1, [r1, r4]
+ bl FUN_02013A9C
+ strh r0, [r5, #0x4]
+_020137A2:
+ ldr r0, _020137CC ; =0x020ED55C
+ mov r1, #0x0
+ ldrsh r0, [r0, r4]
+ mvn r1, r1
+ cmp r0, r1
+ beq _020137B8
+ ldr r1, _020137D0 ; =0x020ED55E
+ ldrh r1, [r1, r4]
+ bl FUN_02013A9C
+ strh r0, [r5, #0x6]
+_020137B8:
+ pop {r4-r6, pc}
+ nop
+_020137BC: .word 0x020ED556
+_020137C0: .word 0x020ED557
+_020137C4: .word 0x020ED558
+_020137C8: .word 0x020ED55A
+_020137CC: .word 0x020ED55C
+_020137D0: .word 0x020ED55E
+
+ thumb_func_start FUN_020137D4
+FUN_020137D4: ; 0x020137D4
+ push {r3-r7, lr}
+ sub sp, #0x8
+ str r0, [sp, #0x0]
+ add r0, r1, #0x0
+ str r1, [sp, #0x4]
+ bl FUN_0200AA80
+ ldr r5, [sp, #0x0]
+ ldr r7, _02013838 ; =0x0000FFFF
+ add r6, r0, #0x0
+ mov r4, #0x0
+_020137EA:
+ ldrh r2, [r5, #0x4]
+ cmp r2, r7
+ beq _02013800
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ bl FUN_0200B518
+ add r4, r4, #0x1
+ add r5, r5, #0x2
+ cmp r4, #0x2
+ blt _020137EA
+_02013800:
+ ldr r2, [sp, #0x0]
+ mov r0, #0x1
+ ldrh r2, [r2, #0x0]
+ mov r1, #0x1a
+ lsl r3, r2, #0x1
+ ldr r2, _0201383C ; =0x020ED54C
+ ldrh r2, [r2, r3]
+ ldr r3, [sp, #0x4]
+ bl FUN_0200A86C
+ add r5, r0, #0x0
+ ldr r2, [sp, #0x0]
+ ldr r3, [sp, #0x4]
+ ldrh r2, [r2, #0x2]
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ bl FUN_0200A9C4
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0200A8B8
+ add r0, r6, #0x0
+ bl FUN_0200AB18
+ add r0, r4, #0x0
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+_02013838: .word 0x0000FFFF
+_0201383C: .word 0x020ED54C
+
+ thumb_func_start FUN_02013840
+FUN_02013840: ; 0x02013840
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r3, r1, #0x0
+ ldrh r1, [r4, #0x0]
+ mov r0, #0x1a
+ lsl r2, r1, #0x1
+ ldr r1, _02013858 ; =0x020ED54C
+ ldrh r1, [r1, r2]
+ ldrh r2, [r4, #0x2]
+ bl FUN_0200A738
+ pop {r4, pc}
+ .balign 4
+_02013858: .word 0x020ED54C
+
+ thumb_func_start FUN_0201385C
+FUN_0201385C: ; 0x0201385C
+ ldrh r1, [r0, #0x0]
+ ldr r0, _0201386C ; =0x0000FFFF
+ cmp r1, r0
+ beq _02013868
+ mov r0, #0x1
+ bx lr
+_02013868:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+_0201386C: .word 0x0000FFFF
+
+ thumb_func_start FUN_02013870
+FUN_02013870: ; 0x02013870
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldrh r0, [r4, #0x0]
+ ldrh r1, [r4, #0x2]
+ bl FUN_020138A0
+ mov r3, #0x0
+ cmp r0, #0x0
+ bls _02013896
+ ldr r1, _0201389C ; =0x0000FFFF
+_02013884:
+ ldrh r2, [r4, #0x4]
+ cmp r2, r1
+ bne _0201388E
+ mov r0, #0x0
+ pop {r4, pc}
+_0201388E:
+ add r3, r3, #0x1
+ add r4, r4, #0x2
+ cmp r3, r0
+ blo _02013884
+_02013896:
+ mov r0, #0x1
+ pop {r4, pc}
+ nop
+_0201389C: .word 0x0000FFFF
+
+ thumb_func_start FUN_020138A0
+FUN_020138A0: ; 0x020138A0
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r5, #0x5
+ blo _020138AE
+ bl ErrorHandling
+_020138AE:
+ add r0, r5, #0x0
+ bl FUN_02013974
+ cmp r4, r0
+ blo _020138BC
+ bl ErrorHandling
+_020138BC:
+ ldr r1, _02013910 ; =0x020ED54C
+ lsl r2, r5, #0x1
+ ldrh r1, [r1, r2]
+ mov r0, #0x1a
+ add r2, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200A738
+ str r0, [sp, #0x0]
+ bl FUN_02021F2C
+ add r4, r0, #0x0
+ ldrh r1, [r4, #0x0]
+ ldr r0, _02013914 ; =0x0000FFFF
+ mov r5, #0x0
+ cmp r1, r0
+ beq _02013904
+ add r7, r0, #0x0
+ sub r6, r0, #0x1
+_020138E2:
+ cmp r1, r6
+ bne _020138FC
+ add r0, r4, #0x0
+ bl FUN_0201B8F8
+ cmp r0, #0x0
+ beq _020138F2
+ add r5, r5, #0x1
+_020138F2:
+ add r0, r4, #0x0
+ bl FUN_0201B8B8
+ add r4, r0, #0x0
+ b _020138FE
+_020138FC:
+ add r4, r4, #0x2
+_020138FE:
+ ldrh r1, [r4, #0x0]
+ cmp r1, r7
+ bne _020138E2
+_02013904:
+ ldr r0, [sp, #0x0]
+ bl FUN_02021A20
+ add r0, r5, #0x0
+ pop {r3-r7, pc}
+ nop
+_02013910: .word 0x020ED54C
+_02013914: .word 0x0000FFFF
+
+ thumb_func_start FUN_02013918
+FUN_02013918: ; 0x02013918
+ lsl r1, r1, #0x1
+ add r0, r0, r1
+ ldrh r0, [r0, #0x4]
+ bx lr
+
+ thumb_func_start FUN_02013920
+FUN_02013920: ; 0x02013920
+ ldrh r0, [r0, #0x0]
+ bx lr
+
+ thumb_func_start FUN_02013924
+FUN_02013924: ; 0x02013924
+ ldrh r0, [r0, #0x2]
+ bx lr
+
+ thumb_func_start FUN_02013928
+FUN_02013928: ; 0x02013928
+ push {r3-r4}
+ ldrh r3, [r0, #0x0]
+ ldrh r2, [r1, #0x0]
+ cmp r3, r2
+ bne _0201393A
+ ldrh r3, [r0, #0x2]
+ ldrh r2, [r1, #0x2]
+ cmp r3, r2
+ beq _02013940
+_0201393A:
+ mov r0, #0x0
+ pop {r3-r4}
+ bx lr
+_02013940:
+ mov r4, #0x0
+_02013942:
+ ldrh r3, [r0, #0x4]
+ ldrh r2, [r1, #0x4]
+ cmp r3, r2
+ beq _02013950
+ mov r0, #0x0
+ pop {r3-r4}
+ bx lr
+_02013950:
+ add r4, r4, #0x1
+ add r1, r1, #0x2
+ add r0, r0, #0x2
+ cmp r4, #0x2
+ blt _02013942
+ mov r0, #0x1
+ pop {r3-r4}
+ bx lr
+
+ thumb_func_start FUN_02013960
+FUN_02013960: ; 0x02013960
+ ldrh r2, [r1, #0x0]
+ strh r2, [r0, #0x0]
+ ldrh r2, [r1, #0x2]
+ strh r2, [r0, #0x2]
+ ldrh r2, [r1, #0x4]
+ strh r2, [r0, #0x4]
+ ldrh r1, [r1, #0x6]
+ strh r1, [r0, #0x6]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02013974
+FUN_02013974: ; 0x02013974
+ cmp r0, #0x5
+ bhs _0201397C
+ mov r0, #0x14
+ bx lr
+_0201397C:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02013980
+FUN_02013980: ; 0x02013980
+ push {r4-r6, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ cmp r4, #0x5
+ blo _02013990
+ bl ErrorHandling
+_02013990:
+ strh r4, [r5, #0x0]
+ strh r6, [r5, #0x2]
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02013998
+FUN_02013998: ; 0x02013998
+ push {r4-r6, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ cmp r4, #0x2
+ blo _020139A8
+ bl ErrorHandling
+_020139A8:
+ lsl r0, r4, #0x1
+ add r0, r5, r0
+ strh r6, [r0, #0x4]
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_020139B0
+FUN_020139B0: ; 0x020139B0
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldrh r0, [r4, #0x0]
+ ldrh r1, [r4, #0x2]
+ bl FUN_020138A0
+ cmp r0, #0x2
+ bhs _020139D0
+ lsl r1, r0, #0x1
+ add r2, r4, r1
+ ldr r1, _020139D4 ; =0x0000FFFF
+_020139C6:
+ add r0, r0, #0x1
+ strh r1, [r2, #0x4]
+ add r2, r2, #0x2
+ cmp r0, #0x2
+ blo _020139C6
+_020139D0:
+ pop {r4, pc}
+ nop
+_020139D4: .word 0x0000FFFF
+
+ thumb_func_start FUN_020139D8
+FUN_020139D8: ; 0x020139D8
+ push {r3-r7, lr}
+ mov r1, #0x30
+ add r6, r0, #0x0
+ bl FUN_02016998
+ ldr r4, _02013A0C ; =0x020ED5C0
+ str r0, [sp, #0x0]
+ mov r7, #0x0
+ add r5, r0, #0x0
+_020139EA:
+ ldr r0, [sp, #0x0]
+ mov r1, #0x1a
+ str r6, [r0, #0x0]
+ ldrh r2, [r4, #0x0]
+ mov r0, #0x1
+ add r3, r6, #0x0
+ bl FUN_0200A86C
+ str r0, [r5, #0x4]
+ add r7, r7, #0x1
+ add r4, r4, #0x2
+ add r5, r5, #0x4
+ cmp r7, #0xb
+ blt _020139EA
+ ldr r0, [sp, #0x0]
+ pop {r3-r7, pc}
+ nop
+_02013A0C: .word 0x020ED5C0
+
+ thumb_func_start FUN_02013A10
+FUN_02013A10: ; 0x02013A10
+ push {r4-r6, lr}
+ add r6, r0, #0x0
+ mov r4, #0x0
+ add r5, r6, #0x0
+_02013A18:
+ ldr r0, [r5, #0x4]
+ bl FUN_0200A8B8
+ add r4, r4, #0x1
+ add r5, r5, #0x4
+ cmp r4, #0xb
+ blt _02013A18
+ add r0, r6, #0x0
+ bl FUN_02016A18
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02013A30
+FUN_02013A30: ; 0x02013A30
+ push {r3-r5, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ add r4, r2, #0x0
+ add r0, r1, #0x0
+ add r1, sp, #0x4
+ add r2, sp, #0x0
+ bl FUN_02013AEC
+ ldr r0, [sp, #0x4]
+ ldr r1, [sp, #0x0]
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ ldr r0, [r0, #0x4]
+ add r2, r4, #0x0
+ bl FUN_0200A8E0
+ add sp, #0x8
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02013A58
+FUN_02013A58: ; 0x02013A58
+ push {r3-r4, lr}
+ sub sp, #0xc
+ add r4, r1, #0x0
+ ldr r1, _02013A94 ; =0x0000FFFF
+ cmp r0, r1
+ beq _02013A88
+ add r1, sp, #0x8
+ add r2, sp, #0x4
+ bl FUN_02013AEC
+ ldr r0, [sp, #0x8]
+ mov r3, #0x0
+ lsl r1, r0, #0x1
+ ldr r0, _02013A98 ; =0x020ED5C0
+ ldrh r0, [r0, r1]
+ str r0, [sp, #0x8]
+ str r4, [sp, #0x0]
+ ldr r1, [sp, #0x8]
+ ldr r2, [sp, #0x4]
+ mov r0, #0x1a
+ bl FUN_0200A648
+ add sp, #0xc
+ pop {r3-r4, pc}
+_02013A88:
+ add r0, r4, #0x0
+ bl FUN_02021A4C
+ add sp, #0xc
+ pop {r3-r4, pc}
+ nop
+_02013A94: .word 0x0000FFFF
+_02013A98: .word 0x020ED5C0
+
+ thumb_func_start FUN_02013A9C
+FUN_02013A9C: ; 0x02013A9C
+ push {r4-r5}
+ ldr r4, _02013AE0 ; =0x020ED5C0
+ mov r2, #0x0
+_02013AA2:
+ ldrh r3, [r4, #0x0]
+ cmp r0, r3
+ bne _02013AD0
+ mov r4, #0x0
+ add r3, r4, #0x0
+ cmp r2, #0x0
+ bls _02013AC6
+ ldr r0, _02013AE4 ; =0x020ED5D6
+_02013AB2:
+ lsl r5, r4, #0x1
+ ldrh r5, [r0, r5]
+ add r4, r4, #0x1
+ lsl r4, r4, #0x10
+ add r3, r3, r5
+ lsl r3, r3, #0x10
+ lsr r4, r4, #0x10
+ lsr r3, r3, #0x10
+ cmp r4, r2
+ blo _02013AB2
+_02013AC6:
+ add r0, r3, r1
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ pop {r4-r5}
+ bx lr
+_02013AD0:
+ add r2, r2, #0x1
+ add r4, r4, #0x2
+ cmp r2, #0xb
+ blo _02013AA2
+ ldr r0, _02013AE8 ; =0x0000FFFF
+ pop {r4-r5}
+ bx lr
+ nop
+_02013AE0: .word 0x020ED5C0
+_02013AE4: .word 0x020ED5D6
+_02013AE8: .word 0x0000FFFF
+
+ thumb_func_start FUN_02013AEC
+FUN_02013AEC: ; 0x02013AEC
+ push {r3-r6}
+ ldr r3, _02013B20 ; =0x00000FFF
+ ldr r6, _02013B24 ; =0x020ED5D6
+ and r3, r0
+ mov r0, #0x0
+ add r5, r0, #0x0
+_02013AF8:
+ ldrh r4, [r6, #0x0]
+ add r0, r0, r4
+ cmp r3, r0
+ bhs _02013B12
+ str r5, [r1, #0x0]
+ ldr r1, _02013B24 ; =0x020ED5D6
+ lsl r4, r5, #0x1
+ ldrh r1, [r1, r4]
+ sub r0, r0, r1
+ sub r0, r3, r0
+ str r0, [r2, #0x0]
+ pop {r3-r6}
+ bx lr
+_02013B12:
+ add r5, r5, #0x1
+ add r6, r6, #0x2
+ cmp r5, #0xb
+ blo _02013AF8
+ pop {r3-r6}
+ bx lr
+ nop
+_02013B20: .word 0x00000FFF
+_02013B24: .word 0x020ED5D6
+
+ thumb_func_start FUN_02013B28
+FUN_02013B28: ; 0x02013B28
+ mov r0, #0x8
+ bx lr
+
+ thumb_func_start FUN_02013B2C
+FUN_02013B2C: ; 0x02013B2C
+ push {r3, lr}
+ mov r2, #0x0
+ str r2, [r0, #0x0]
+ ldr r3, _02013B54 ; =0x020ED5B4
+ str r2, [r0, #0x4]
+_02013B36:
+ ldrb r1, [r3, #0x0]
+ cmp r1, #0x2
+ bne _02013B48
+ ldr r1, _02013B58 ; =0x020ED5B5
+ lsl r2, r2, #0x1
+ ldrb r1, [r1, r2]
+ bl FUN_02013C18
+ pop {r3, pc}
+_02013B48:
+ add r2, r2, #0x1
+ add r3, r3, #0x2
+ cmp r2, #0x6
+ blo _02013B36
+ pop {r3, pc}
+ nop
+_02013B54: .word 0x020ED5B4
+_02013B58: .word 0x020ED5B5
+
+ thumb_func_start FUN_02013B5C
+FUN_02013B5C: ; 0x02013B5C
+ ldr r3, _02013B64 ; =FUN_02022610
+ mov r1, #0x22
+ bx r3
+ nop
+_02013B64: .word FUN_02022610
+
+ thumb_func_start FUN_02013B68
+FUN_02013B68: ; 0x02013B68
+ ldr r0, [r0, #0x4]
+ add r2, r0, #0x0
+ lsr r2, r1
+ mov r0, #0x1
+ and r0, r2
+ bx lr
+
+ thumb_func_start FUN_02013B74
+FUN_02013B74: ; 0x02013B74
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r2, #0x0
+ ldr r3, [r5, #0x4]
+ add r4, r2, #0x0
+ mov r0, #0x1
+_02013B80:
+ add r1, r3, #0x0
+ lsr r1, r2
+ tst r1, r0
+ bne _02013B8A
+ add r4, r4, #0x1
+_02013B8A:
+ add r2, r2, #0x1
+ cmp r2, #0x20
+ blo _02013B80
+ cmp r4, #0x0
+ beq _02013BC4
+ bl FUN_0201B9EC
+ add r1, r4, #0x0
+ blx _u32_div_f
+ ldr r4, [r5, #0x4]
+ mov r0, #0x0
+ mov r2, #0x1
+_02013BA4:
+ add r3, r4, #0x0
+ lsr r3, r0
+ tst r3, r2
+ bne _02013BBE
+ cmp r1, #0x0
+ bne _02013BBC
+ mov r1, #0x1
+ ldr r2, [r5, #0x4]
+ lsl r1, r0
+ orr r1, r2
+ str r1, [r5, #0x4]
+ pop {r3-r5, pc}
+_02013BBC:
+ sub r1, r1, #0x1
+_02013BBE:
+ add r0, r0, #0x1
+ cmp r0, #0x20
+ blo _02013BA4
+_02013BC4:
+ mov r0, #0x20
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02013BC8
+FUN_02013BC8: ; 0x02013BC8
+ ldr r3, [r0, #0x4]
+ mov r2, #0x0
+ mov r0, #0x1
+_02013BCE:
+ add r1, r3, #0x0
+ lsr r1, r2
+ tst r1, r0
+ bne _02013BDA
+ mov r0, #0x0
+ bx lr
+_02013BDA:
+ add r2, r2, #0x1
+ cmp r2, #0x20
+ blo _02013BCE
+ mov r0, #0x1
+ bx lr
+
+ thumb_func_start FUN_02013BE4
+FUN_02013BE4: ; 0x02013BE4
+ push {r3-r4}
+ mov r3, #0x0
+ ldr r4, _02013C08 ; =0x020ED5D6
+ add r2, r3, #0x0
+_02013BEC:
+ ldrh r1, [r4, #0x0]
+ add r2, r2, #0x1
+ add r4, r4, #0x2
+ add r1, r3, r1
+ lsl r1, r1, #0x10
+ lsr r3, r1, #0x10
+ cmp r2, #0x9
+ blt _02013BEC
+ add r0, r3, r0
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ pop {r3-r4}
+ bx lr
+ nop
+_02013C08: .word 0x020ED5D6
+
+ thumb_func_start FUN_02013C0C
+FUN_02013C0C: ; 0x02013C0C
+ ldr r0, [r0, #0x0]
+ add r2, r0, #0x0
+ lsr r2, r1
+ mov r0, #0x1
+ and r0, r2
+ bx lr
+
+ thumb_func_start FUN_02013C18
+FUN_02013C18: ; 0x02013C18
+ mov r2, #0x1
+ ldr r3, [r0, #0x0]
+ lsl r2, r1
+ add r1, r3, #0x0
+ orr r1, r2
+ str r1, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02013C28
+FUN_02013C28: ; 0x02013C28
+ push {r4-r7}
+ mov r3, #0x0
+ ldr r5, _02013C64 ; =0x020ED5EC
+ add r2, r3, #0x0
+_02013C30:
+ ldr r7, [r5, #0x4]
+ add r4, r2, #0x0
+ cmp r7, #0x0
+ ble _02013C54
+ ldr r6, [r5, #0x0]
+_02013C3A:
+ ldrh r1, [r6, #0x0]
+ cmp r0, r1
+ bne _02013C4C
+ ldr r0, _02013C68 ; =0x020ED5F0
+ lsl r1, r3, #0x3
+ ldr r0, [r0, r1]
+ sub r0, r0, #0x1
+ pop {r4-r7}
+ bx lr
+_02013C4C:
+ add r4, r4, #0x1
+ add r6, r6, #0x2
+ cmp r4, r7
+ blt _02013C3A
+_02013C54:
+ add r3, r3, #0x1
+ add r5, #0x8
+ cmp r3, #0xc
+ blo _02013C30
+ mov r0, #0x0
+ pop {r4-r7}
+ bx lr
+ nop
+_02013C64: .word 0x020ED5EC
+_02013C68: .word 0x020ED5F0
+
+ thumb_func_start FUN_02013C6C
+FUN_02013C6C: ; 0x02013C6C
+ push {r3-r7, lr}
+ ldr r3, _02013CC8 ; =0x020ED5EC
+ add r6, r1, #0x0
+ mov r7, #0x0
+_02013C74:
+ ldr r5, [r3, #0x4]
+ mov r2, #0x0
+ cmp r5, #0x0
+ ble _02013CBC
+ ldr r4, [r3, #0x0]
+_02013C7E:
+ ldrh r1, [r4, #0x0]
+ cmp r0, r1
+ bne _02013CB4
+ ldr r2, _02013CCC ; =0x020ED5F0
+ lsl r1, r7, #0x3
+ ldr r2, [r2, r1]
+ mov r0, #0x0
+ cmp r2, #0x0
+ beq _02013CAC
+ ldr r2, _02013CC8 ; =0x020ED5EC
+ add r2, r2, r1
+ ldr r2, [r2, #0x4]
+_02013C96:
+ cmp r6, #0x0
+ bne _02013CA4
+ ldr r2, _02013CC8 ; =0x020ED5EC
+ lsl r0, r0, #0x1
+ ldr r1, [r2, r1]
+ ldrh r0, [r1, r0]
+ pop {r3-r7, pc}
+_02013CA4:
+ sub r6, r6, #0x1
+ add r0, r0, #0x1
+ cmp r2, #0x0
+ bne _02013C96
+_02013CAC:
+ bl ErrorHandling
+ ldr r0, _02013CD0 ; =0x0000FFFF
+ pop {r3-r7, pc}
+_02013CB4:
+ add r2, r2, #0x1
+ add r4, r4, #0x2
+ cmp r2, r5
+ blt _02013C7E
+_02013CBC:
+ add r7, r7, #0x1
+ add r3, #0x8
+ cmp r7, #0xc
+ blo _02013C74
+ pop {r3-r7, pc}
+ nop
+_02013CC8: .word 0x020ED5EC
+_02013CCC: .word 0x020ED5F0
+_02013CD0: .word 0x0000FFFF
+
+ thumb_func_start FUN_02013CD4
+FUN_02013CD4: ; 0x02013CD4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0xc]
+ mov r1, #0x18
+ bl FUN_02016998
+ add r4, r0, #0x0
+ bne _02013CE8
+ bl ErrorHandling
+_02013CE8:
+ ldr r0, [r5, #0x0]
+ ldr r1, [r5, #0xc]
+ bl FUN_02013F68
+ str r0, [r4, #0x0]
+ ldr r0, [r5, #0x0]
+ str r0, [r4, #0x4]
+ ldr r0, [r5, #0x4]
+ ldr r1, [r5, #0xc]
+ bl FUN_02013F98
+ str r0, [r4, #0x8]
+ ldr r0, [r5, #0x4]
+ str r0, [r4, #0xc]
+ ldr r0, [r5, #0x8]
+ ldr r1, [r5, #0xc]
+ bl FUN_02013FC8
+ str r0, [r4, #0x10]
+ ldr r0, [r5, #0x8]
+ str r0, [r4, #0x14]
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02013D18
+FUN_02013D18: ; 0x02013D18
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _02013D22
+ bl ErrorHandling
+_02013D22:
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ bne _02013D2C
+ bl ErrorHandling
+_02013D2C:
+ ldr r0, [r4, #0x8]
+ cmp r0, #0x0
+ bne _02013D36
+ bl ErrorHandling
+_02013D36:
+ ldr r0, [r4, #0x10]
+ cmp r0, #0x0
+ bne _02013D40
+ bl ErrorHandling
+_02013D40:
+ ldr r0, [r4, #0x0]
+ bl FUN_02016A18
+ ldr r0, [r4, #0x8]
+ bl FUN_02016A18
+ ldr r0, [r4, #0x10]
+ bl FUN_02016A18
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02013D5C
+FUN_02013D5C: ; 0x02013D5C
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, _02013D90 ; =0x04000444
+ mov r6, #0x0
+ str r6, [r0, #0x0]
+ ldr r0, [r5, #0x4]
+ cmp r0, #0x0
+ ble _02013D86
+ add r4, r6, #0x0
+_02013D6E:
+ ldr r0, [r5, #0x0]
+ add r0, r0, r4
+ ldr r1, [r0, #0x20]
+ cmp r1, #0x0
+ beq _02013D7C
+ bl FUN_020140D8
+_02013D7C:
+ ldr r0, [r5, #0x4]
+ add r6, r6, #0x1
+ add r4, #0x40
+ cmp r6, r0
+ blt _02013D6E
+_02013D86:
+ ldr r0, _02013D94 ; =0x04000448
+ mov r1, #0x1
+ str r1, [r0, #0x0]
+ pop {r4-r6, pc}
+ nop
+_02013D90: .word 0x04000444
+_02013D94: .word 0x04000448
+
+ thumb_func_start FUN_02013D98
+FUN_02013D98: ; 0x02013D98
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_02014024
+ add r4, r0, #0x0
+ bne _02013DAA
+ bl ErrorHandling
+_02013DAA:
+ ldr r0, [r5, #0x4]
+ ldr r0, [r0, #0x8]
+ cmp r0, #0x0
+ beq _02013DB6
+ bl ErrorHandling
+_02013DB6:
+ ldr r0, [r5, #0x4]
+ bl FUN_0201407C
+ str r0, [r4, #0x0]
+ cmp r0, #0x0
+ bne _02013DC6
+ bl ErrorHandling
+_02013DC6:
+ ldr r0, [r5, #0x4]
+ ldr r1, [r4, #0x0]
+ add r2, r4, #0x4
+ bl FUN_020140A4
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02013DD4
+FUN_02013DD4: ; 0x02013DD4
+ push {r4, lr}
+ ldr r1, _02013DE8 ; =0x021064BC
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ ldr r1, [r1, #0x0]
+ blx r1
+ add r0, r4, #0x0
+ bl FUN_02013F50
+ pop {r4, pc}
+ .balign 4
+_02013DE8: .word 0x021064BC
+
+ thumb_func_start FUN_02013DEC
+FUN_02013DEC: ; 0x02013DEC
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0xc]
+ mov r6, #0x0
+ cmp r0, #0x0
+ ble _02013E12
+ add r4, r6, #0x0
+_02013DFA:
+ ldr r1, [r5, #0x8]
+ ldr r0, [r1, r4]
+ cmp r0, #0x0
+ beq _02013E08
+ add r0, r1, r4
+ bl FUN_02013DD4
+_02013E08:
+ ldr r0, [r5, #0xc]
+ add r6, r6, #0x1
+ add r4, #0x28
+ cmp r6, r0
+ blt _02013DFA
+_02013E12:
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02013E14
+FUN_02013E14: ; 0x02013E14
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_02014050
+ add r4, r0, #0x0
+ bne _02013E26
+ bl ErrorHandling
+_02013E26:
+ ldr r0, [r5, #0x8]
+ bl FUN_02014090
+ str r0, [r4, #0x0]
+ cmp r0, #0x0
+ bne _02013E36
+ bl ErrorHandling
+_02013E36:
+ ldr r0, [r5, #0x4]
+ ldr r1, [r4, #0x0]
+ add r2, r4, #0x4
+ bl FUN_020140B4
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02013E44
+FUN_02013E44: ; 0x02013E44
+ push {r4, lr}
+ ldr r1, _02013E58 ; =0x021064C4
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ ldr r1, [r1, #0x0]
+ blx r1
+ add r0, r4, #0x0
+ bl FUN_02013F5C
+ pop {r4, pc}
+ .balign 4
+_02013E58: .word 0x021064C4
+
+ thumb_func_start FUN_02013E5C
+FUN_02013E5C: ; 0x02013E5C
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x14]
+ mov r6, #0x0
+ cmp r0, #0x0
+ ble _02013E82
+ add r4, r6, #0x0
+_02013E6A:
+ ldr r1, [r5, #0x10]
+ ldr r0, [r1, r4]
+ cmp r0, #0x0
+ beq _02013E78
+ add r0, r1, r4
+ bl FUN_02013E44
+_02013E78:
+ ldr r0, [r5, #0x14]
+ add r6, r6, #0x1
+ add r4, #0x18
+ cmp r6, r0
+ blt _02013E6A
+_02013E82:
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02013E84
+FUN_02013E84: ; 0x02013E84
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_02013FF8
+ add r4, r0, #0x0
+ bne _02013E96
+ bl ErrorHandling
+_02013E96:
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ bl FUN_02014218
+ mov r0, #0x1
+ str r0, [r4, #0x1c]
+ str r0, [r4, #0x20]
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02013EA8
+FUN_02013EA8: ; 0x02013EA8
+ ldr r3, _02013EAC ; =FUN_02013F30
+ bx r3
+ .balign 4
+_02013EAC: .word FUN_02013F30
+
+ thumb_func_start FUN_02013EB0
+FUN_02013EB0: ; 0x02013EB0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r5, #0x0
+ bne _02013EBE
+ bl ErrorHandling
+_02013EBE:
+ str r4, [r5, #0x20]
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02013EC4
+FUN_02013EC4: ; 0x02013EC4
+ strh r1, [r0, #0x0]
+ strh r2, [r0, #0x2]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02013ECC
+FUN_02013ECC: ; 0x02013ECC
+ ldrh r1, [r0, #0x2]
+ ldrh r0, [r0, #0x0]
+ lsl r1, r1, #0x10
+ orr r0, r1
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02013ED8
+FUN_02013ED8: ; 0x02013ED8
+ strh r1, [r0, #0x4]
+ strh r2, [r0, #0x6]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02013EE0
+FUN_02013EE0: ; 0x02013EE0
+ str r1, [r0, #0xc]
+ str r2, [r0, #0x10]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02013EE8
+FUN_02013EE8: ; 0x02013EE8
+ strh r1, [r0, #0x8]
+ strh r2, [r0, #0xa]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02013EF0
+FUN_02013EF0: ; 0x02013EF0
+ ldrh r1, [r0, #0xa]
+ ldrh r0, [r0, #0x8]
+ lsl r1, r1, #0x10
+ orr r0, r1
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02013EFC
+FUN_02013EFC: ; 0x02013EFC
+ str r1, [r0, #0x14]
+ bx lr
+
+ thumb_func_start FUN_02013F00
+FUN_02013F00: ; 0x02013F00
+ ldr r0, [r0, #0x14]
+ bx lr
+
+ thumb_func_start FUN_02013F04
+FUN_02013F04: ; 0x02013F04
+ add r0, #0x3e
+ strb r1, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02013F0C
+FUN_02013F0C: ; 0x02013F0C
+ strh r1, [r0, #0x3c]
+ bx lr
+
+ thumb_func_start FUN_02013F10
+FUN_02013F10: ; 0x02013F10
+ str r1, [r0, #0x24]
+ bx lr
+
+ thumb_func_start FUN_02013F14
+FUN_02013F14: ; 0x02013F14
+ str r1, [r0, #0x28]
+ bx lr
+
+ thumb_func_start FUN_02013F18
+FUN_02013F18: ; 0x02013F18
+ str r1, [r0, #0x2c]
+ bx lr
+
+ thumb_func_start FUN_02013F1C
+FUN_02013F1C: ; 0x02013F1C
+ str r1, [r0, #0x30]
+ bx lr
+
+ thumb_func_start FUN_02013F20
+FUN_02013F20: ; 0x02013F20
+ cmp r1, #0x0
+ bne _02013F28
+ str r2, [r0, #0x34]
+ bx lr
+_02013F28:
+ str r2, [r0, #0x38]
+ bx lr
+
+ thumb_func_start FUN_02013F2C
+FUN_02013F2C: ; 0x02013F2C
+ str r1, [r0, #0x18]
+ bx lr
+
+ thumb_func_start FUN_02013F30
+FUN_02013F30: ; 0x02013F30
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x40
+ blx FUN_020DF4A4
+ add r0, r4, #0x0
+ mov r1, #0x1f
+ add r0, #0x3e
+ strb r1, [r0, #0x0]
+ ldr r0, _02013F4C ; =0x00007FFF
+ strh r0, [r4, #0x3c]
+ pop {r4, pc}
+ nop
+_02013F4C: .word 0x00007FFF
+
+ thumb_func_start FUN_02013F50
+FUN_02013F50: ; 0x02013F50
+ ldr r3, _02013F58 ; =FUN_020B1A24
+ mov r1, #0x0
+ stmia r0!, {r1}
+ bx r3
+ .balign 4
+_02013F58: .word FUN_020B1A24
+
+ thumb_func_start FUN_02013F5C
+FUN_02013F5C: ; 0x02013F5C
+ ldr r3, _02013F64 ; =FUN_020B19DC
+ mov r1, #0x0
+ stmia r0!, {r1}
+ bx r3
+ .balign 4
+_02013F64: .word FUN_020B19DC
+
+ thumb_func_start FUN_02013F68
+FUN_02013F68: ; 0x02013F68
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ add r0, r1, #0x0
+ lsl r1, r6, #0x6
+ bl FUN_02016998
+ add r7, r0, #0x0
+ bne _02013F7C
+ bl ErrorHandling
+_02013F7C:
+ mov r4, #0x0
+ cmp r6, #0x0
+ ble _02013F92
+ add r5, r7, #0x0
+_02013F84:
+ add r0, r5, #0x0
+ bl FUN_02013F30
+ add r4, r4, #0x1
+ add r5, #0x40
+ cmp r4, r6
+ blt _02013F84
+_02013F92:
+ add r0, r7, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02013F98
+FUN_02013F98: ; 0x02013F98
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ add r0, r1, #0x0
+ mov r1, #0x28
+ mul r1, r6
+ bl FUN_02016998
+ add r7, r0, #0x0
+ bne _02013FAE
+ bl ErrorHandling
+_02013FAE:
+ mov r4, #0x0
+ cmp r6, #0x0
+ ble _02013FC4
+ add r5, r7, #0x0
+_02013FB6:
+ add r0, r5, #0x0
+ bl FUN_02013F50
+ add r4, r4, #0x1
+ add r5, #0x28
+ cmp r4, r6
+ blt _02013FB6
+_02013FC4:
+ add r0, r7, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02013FC8
+FUN_02013FC8: ; 0x02013FC8
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ add r0, r1, #0x0
+ mov r1, #0x18
+ mul r1, r6
+ bl FUN_02016998
+ add r7, r0, #0x0
+ bne _02013FDE
+ bl ErrorHandling
+_02013FDE:
+ mov r4, #0x0
+ cmp r6, #0x0
+ ble _02013FF4
+ add r5, r7, #0x0
+_02013FE6:
+ add r0, r5, #0x0
+ bl FUN_02013F5C
+ add r4, r4, #0x1
+ add r5, #0x18
+ cmp r4, r6
+ blt _02013FE6
+_02013FF4:
+ add r0, r7, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02013FF8
+FUN_02013FF8: ; 0x02013FF8
+ push {r3-r4}
+ ldr r4, [r0, #0x4]
+ mov r1, #0x0
+ cmp r4, #0x0
+ ble _0201401C
+ ldr r3, [r0, #0x0]
+ add r2, r3, #0x0
+_02014006:
+ ldr r0, [r2, #0x1c]
+ cmp r0, #0x0
+ bne _02014014
+ lsl r0, r1, #0x6
+ add r0, r3, r0
+ pop {r3-r4}
+ bx lr
+_02014014:
+ add r1, r1, #0x1
+ add r2, #0x40
+ cmp r1, r4
+ blt _02014006
+_0201401C:
+ mov r0, #0x0
+ pop {r3-r4}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02014024
+FUN_02014024: ; 0x02014024
+ push {r3-r4}
+ ldr r4, [r0, #0x4]
+ mov r1, #0x0
+ cmp r4, #0x0
+ ble _0201404A
+ ldr r3, [r0, #0x8]
+ add r2, r3, #0x0
+_02014032:
+ ldr r0, [r2, #0x0]
+ cmp r0, #0x0
+ bne _02014042
+ mov r0, #0x28
+ mul r0, r1
+ add r0, r3, r0
+ pop {r3-r4}
+ bx lr
+_02014042:
+ add r1, r1, #0x1
+ add r2, #0x28
+ cmp r1, r4
+ blt _02014032
+_0201404A:
+ mov r0, #0x0
+ pop {r3-r4}
+ bx lr
+
+ thumb_func_start FUN_02014050
+FUN_02014050: ; 0x02014050
+ push {r3-r4}
+ ldr r4, [r0, #0x4]
+ mov r1, #0x0
+ cmp r4, #0x0
+ ble _02014076
+ ldr r3, [r0, #0x10]
+ add r2, r3, #0x0
+_0201405E:
+ ldr r0, [r2, #0x0]
+ cmp r0, #0x0
+ bne _0201406E
+ mov r0, #0x18
+ mul r0, r1
+ add r0, r3, r0
+ pop {r3-r4}
+ bx lr
+_0201406E:
+ add r1, r1, #0x1
+ add r2, #0x18
+ cmp r1, r4
+ blt _0201405E
+_02014076:
+ mov r0, #0x0
+ pop {r3-r4}
+ bx lr
+
+ thumb_func_start FUN_0201407C
+FUN_0201407C: ; 0x0201407C
+ push {r3, lr}
+ ldr r3, _0201408C ; =0x021064B8
+ mov r1, #0x0
+ ldr r0, [r0, #0x10]
+ ldr r3, [r3, #0x0]
+ add r2, r1, #0x0
+ blx r3
+ pop {r3, pc}
+ .balign 4
+_0201408C: .word 0x021064B8
+
+ thumb_func_start FUN_02014090
+FUN_02014090: ; 0x02014090
+ push {r3, lr}
+ ldr r3, _020140A0 ; =0x021064C0
+ mov r1, #0x0
+ ldr r3, [r3, #0x0]
+ lsl r0, r0, #0x5
+ add r2, r1, #0x0
+ blx r3
+ pop {r3, pc}
+ .balign 4
+_020140A0: .word 0x021064C0
+
+ thumb_func_start FUN_020140A4
+FUN_020140A4: ; 0x020140A4
+ push {r3, lr}
+ lsl r1, r1, #0x10
+ add r3, r2, #0x0
+ lsr r1, r1, #0xd
+ mov r2, #0x0
+ blx FUN_020B1528
+ pop {r3, pc}
+
+ thumb_func_start FUN_020140B4
+FUN_020140B4: ; 0x020140B4
+ push {r3-r5, lr}
+ add r3, r2, #0x0
+ ldr r2, _020140D4 ; =0xFFFF0000
+ add r5, r0, #0x0
+ and r2, r1
+ lsr r2, r2, #0x10
+ lsl r1, r1, #0x10
+ ldr r4, [r5, #0x8]
+ lsl r2, r2, #0x3
+ str r2, [r5, #0x8]
+ lsr r1, r1, #0xd
+ mov r2, #0x0
+ blx FUN_020B1240
+ str r4, [r5, #0x8]
+ pop {r3-r5, pc}
+ .balign 4
+_020140D4: .word 0xFFFF0000
+
+ thumb_func_start FUN_020140D8
+FUN_020140D8: ; 0x020140D8
+ push {r3-r7, lr}
+ sub sp, #0x18
+ ldr r7, _020141F8 ; =0x04000444
+ mov r6, #0x0
+ add r5, r0, #0x0
+ str r6, [r7, #0x0]
+ ldrh r1, [r5, #0x3c]
+ ldr r0, _020141FC ; =0x7FFF8000
+ orr r0, r1
+ str r0, [r7, #0x7c]
+ add r0, r7, #0x0
+ ldr r1, _02014200 ; =0x00004210
+ add r0, #0x80
+ str r1, [r0, #0x0]
+ ldr r3, [r5, #0x24]
+ ldr r4, [r3, #0x8]
+ ldr r2, [r3, #0x10]
+ ldr r1, [r3, #0x4]
+ ldr r0, [r3, #0x0]
+ lsl r3, r2, #0x1d
+ lsl r2, r1, #0x17
+ lsl r1, r0, #0x14
+ ldr r0, [r5, #0x28]
+ lsl r4, r4, #0x1a
+ lsr r0, r0, #0x3
+ orr r4, r0
+ mov r0, #0x1
+ lsl r0, r0, #0x1e
+ orr r0, r4
+ orr r0, r1
+ orr r0, r2
+ orr r0, r3
+ str r0, [r7, #0x64]
+ ldr r0, [r5, #0x24]
+ ldr r0, [r0, #0x8]
+ cmp r0, #0x2
+ bne _02014124
+ mov r6, #0x1
+_02014124:
+ ldr r0, [r5, #0x30]
+ ldr r1, [r5, #0x2c]
+ lsl r0, r0, #0x5
+ add r1, r1, r0
+ mov r0, #0x4
+ sub r0, r0, r6
+ lsr r1, r0
+ ldr r2, _02014204 ; =0x040004AC
+ add r0, r5, #0x0
+ str r1, [r2, #0x0]
+ add r0, #0x3e
+ ldrb r0, [r0, #0x0]
+ sub r2, #0x8
+ lsl r1, r0, #0x10
+ mov r0, #0xc0
+ orr r0, r1
+ str r0, [r2, #0x0]
+ ldr r0, [r5, #0x34]
+ cmp r0, #0x0
+ beq _02014156
+ mov r0, #0x8
+ ldrsh r0, [r5, r0]
+ mov r7, #0x0
+ str r0, [sp, #0x14]
+ b _0201415E
+_02014156:
+ mov r0, #0x8
+ ldrsh r7, [r5, r0]
+ mov r0, #0x0
+ str r0, [sp, #0x14]
+_0201415E:
+ ldr r0, [r5, #0x38]
+ cmp r0, #0x0
+ beq _0201416C
+ mov r0, #0xa
+ ldrsh r6, [r5, r0]
+ mov r4, #0x0
+ b _02014172
+_0201416C:
+ mov r0, #0xa
+ ldrsh r4, [r5, r0]
+ mov r6, #0x0
+_02014172:
+ ldr r0, [r5, #0x14]
+ mov r1, #0x6
+ lsl r2, r0, #0xc
+ mov r0, #0x2
+ ldrsh r0, [r5, r0]
+ ldrsh r1, [r5, r1]
+ mov r3, #0x4
+ ldrsh r3, [r5, r3]
+ add r0, r0, r1
+ lsl r1, r0, #0xc
+ mov r0, #0x0
+ ldrsh r0, [r5, r0]
+ add r0, r0, r3
+ ldr r3, _02014208 ; =0x04000470
+ lsl r0, r0, #0xc
+ str r0, [r3, #0x0]
+ str r1, [r3, #0x0]
+ str r2, [r3, #0x0]
+ ldr r0, [r5, #0x18]
+ ldr r1, _0201420C ; =0x020FFA38
+ asr r0, r0, #0x4
+ lsl r2, r0, #0x1
+ lsl r0, r2, #0x1
+ add r2, r2, #0x1
+ lsl r2, r2, #0x1
+ ldrsh r0, [r1, r0]
+ ldrsh r1, [r1, r2]
+ blx FUN_020C7FF0
+ ldr r2, [r5, #0x10]
+ ldr r0, [r5, #0xc]
+ ldr r1, _02014210 ; =0x0400046C
+ mov r3, #0x8
+ str r0, [r1, #0x0]
+ str r2, [r1, #0x0]
+ lsr r0, r1, #0xe
+ str r0, [r1, #0x0]
+ mov r2, #0x4
+ mov r0, #0x6
+ ldrsh r2, [r5, r2]
+ ldrsh r0, [r5, r0]
+ neg r2, r2
+ neg r0, r0
+ lsl r2, r2, #0xc
+ lsl r0, r0, #0xc
+ str r2, [r1, #0x4]
+ str r0, [r1, #0x4]
+ mov r0, #0x0
+ str r0, [r1, #0x4]
+ mov r1, #0xa
+ ldrsh r1, [r5, r1]
+ add r2, r0, #0x0
+ str r1, [sp, #0x0]
+ ldr r1, [sp, #0x14]
+ str r1, [sp, #0x4]
+ str r6, [sp, #0x8]
+ str r7, [sp, #0xc]
+ str r4, [sp, #0x10]
+ ldrsh r3, [r5, r3]
+ add r1, r0, #0x0
+ blx FUN_020B0250
+ ldr r0, _02014214 ; =0x04000448
+ mov r1, #0x1
+ str r1, [r0, #0x0]
+ add sp, #0x18
+ pop {r3-r7, pc}
+ .balign 4
+_020141F8: .word 0x04000444
+_020141FC: .word 0x7FFF8000
+_02014200: .word 0x00004210
+_02014204: .word 0x040004AC
+_02014208: .word 0x04000470
+_0201420C: .word 0x020FFA38
+_02014210: .word 0x0400046C
+_02014214: .word 0x04000448
+
+ thumb_func_start FUN_02014218
+FUN_02014218: ; 0x02014218
+ push {r3-r7, lr}
+ add r5, r1, #0x0
+ ldr r1, [r5, #0x4]
+ add r7, r0, #0x0
+ ldr r2, [r1, #0x10]
+ mov r6, #0x8
+ mov r0, #0x0
+ cmp r2, #0x0
+ ble _02014236
+_0201422A:
+ ldr r2, [r5, #0x4]
+ add r0, r0, #0x1
+ ldr r2, [r2, #0x10]
+ lsl r6, r6, #0x1
+ cmp r0, r2
+ blt _0201422A
+_02014236:
+ ldr r1, [r1, #0x14]
+ mov r4, #0x8
+ mov r0, #0x0
+ cmp r1, #0x0
+ ble _0201424C
+_02014240:
+ ldr r1, [r5, #0x4]
+ add r0, r0, #0x1
+ ldr r1, [r1, #0x14]
+ lsl r4, r4, #0x1
+ cmp r0, r1
+ blt _02014240
+_0201424C:
+ mov r1, #0xc
+ mov r2, #0xe
+ ldrsh r1, [r5, r1]
+ ldrsh r2, [r5, r2]
+ add r0, r7, #0x0
+ bl FUN_02013EC4
+ lsr r1, r6, #0x1f
+ lsr r2, r4, #0x1f
+ add r1, r6, r1
+ add r2, r4, r2
+ lsl r1, r1, #0xf
+ lsl r2, r2, #0xf
+ add r0, r7, #0x0
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ bl FUN_02013ED8
+ mov r0, #0x1
+ lsl r0, r0, #0xc
+ str r0, [r7, #0xc]
+ str r0, [r7, #0x10]
+ add r0, r7, #0x0
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ bl FUN_02013EE8
+ ldr r1, [r5, #0x18]
+ add r0, r7, #0x0
+ bl FUN_02013EFC
+ ldr r1, [r5, #0x14]
+ add r0, r7, #0x0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl FUN_02013F04
+ ldr r1, [r5, #0x4]
+ add r0, r7, #0x0
+ add r1, #0x10
+ bl FUN_02013F10
+ ldr r0, [r5, #0x4]
+ mov r1, #0x0
+ add r0, r0, #0x4
+ blx FUN_020B1A14
+ add r1, r0, #0x0
+ add r0, r7, #0x0
+ bl FUN_02013F14
+ ldr r0, [r5, #0x8]
+ mov r1, #0x0
+ add r0, r0, #0x4
+ blx FUN_020B19C4
+ add r1, r0, #0x0
+ add r0, r7, #0x0
+ bl FUN_02013F18
+ ldrh r1, [r5, #0x1c]
+ add r0, r7, #0x0
+ bl FUN_02013F1C
+ mov r1, #0x0
+ add r0, r7, #0x0
+ add r2, r1, #0x0
+ bl FUN_02013F20
+ add r0, r7, #0x0
+ mov r1, #0x1
+ mov r2, #0x0
+ bl FUN_02013F20
+ ldrh r1, [r5, #0x10]
+ add r0, r7, #0x0
+ bl FUN_02013F2C
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020142EC
+FUN_020142EC: ; 0x020142EC
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ add r7, r2, #0x0
+ ldr r0, _02014394 ; =FUN_020143DC
+ mov r1, #0x50
+ mov r2, #0x0
+ bl FUN_020061E8
+ str r0, [sp, #0x4]
+ bl FUN_0201B6C8
+ add r4, r0, #0x0
+ cmp r5, #0x0
+ beq _02014330
+ cmp r6, #0x0
+ bne _02014320
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_020031FC
+ str r0, [sp, #0x0]
+ ldr r0, _02014398 ; =FUN_020144E0
+ str r0, [r4, #0x4]
+ b _0201434A
+_02014320:
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_020031FC
+ str r0, [sp, #0x0]
+ ldr r0, _0201439C ; =FUN_020144FC
+ str r0, [r4, #0x4]
+ b _0201434A
+_02014330:
+ cmp r6, #0x0
+ bne _02014340
+ bl FUN_020222E8
+ str r0, [sp, #0x0]
+ ldr r0, _020143A0 ; =FUN_020144B0
+ str r0, [r4, #0x4]
+ b _0201434A
+_02014340:
+ bl FUN_020222F8
+ str r0, [sp, #0x0]
+ ldr r0, _020143A4 ; =FUN_020144C8
+ str r0, [r4, #0x4]
+_0201434A:
+ ldr r1, [sp, #0x0]
+ lsl r0, r7, #0x5
+ str r0, [sp, #0x8]
+ add r0, r1, r0
+ add r1, r4, #0x0
+ add r1, #0xc
+ mov r2, #0x20
+ blx MIi_CpuCopy16
+ ldr r1, [sp, #0x0]
+ ldr r0, [sp, #0x8]
+ mov r2, #0x20
+ add r0, r1, r0
+ add r1, r4, #0x0
+ add r1, #0x2c
+ blx MIi_CpuCopy16
+ ldr r0, [sp, #0x4]
+ mov r1, #0x1
+ str r0, [r4, #0x0]
+ add r0, r4, #0x0
+ str r5, [r4, #0x8]
+ add r0, #0x4c
+ strb r6, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x4d
+ strb r7, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x4e
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0x0
+ add r0, #0x4f
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+_02014394: .word FUN_020143DC
+_02014398: .word FUN_020144E0
+_0201439C: .word FUN_020144FC
+_020143A0: .word FUN_020144B0
+_020143A4: .word FUN_020144C8
+
+ thumb_func_start FUN_020143A8
+FUN_020143A8: ; 0x020143A8
+ cmp r1, #0x0
+ beq _020143B6
+ cmp r1, #0x1
+ beq _020143BE
+ cmp r1, #0x2
+ beq _020143C6
+ bx lr
+_020143B6:
+ mov r1, #0x0
+ add r0, #0x4e
+ strb r1, [r0, #0x0]
+ bx lr
+_020143BE:
+ mov r1, #0x2
+ add r0, #0x4e
+ strb r1, [r0, #0x0]
+ bx lr
+_020143C6:
+ mov r1, #0x3
+ add r0, #0x4e
+ strb r1, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020143D0
+FUN_020143D0: ; 0x020143D0
+ ldr r3, _020143D8 ; =FUN_0200621C
+ ldr r0, [r0, #0x0]
+ bx r3
+ nop
+_020143D8: .word FUN_0200621C
+
+ thumb_func_start FUN_020143DC
+FUN_020143DC: ; 0x020143DC
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x4e
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x3
+ bhi _02014452
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_020143F8: ; jump table (using 16-bit offset)
+ .short _02014400 - _020143F8 - 2; case 0
+ .short _02014410 - _020143F8 - 2; case 1
+ .short _02014452 - _020143F8 - 2; case 2
+ .short _02014444 - _020143F8 - 2; case 3
+_02014400:
+ add r0, r4, #0x0
+ mov r1, #0x0
+ add r0, #0x4f
+ strb r1, [r0, #0x0]
+ mov r0, #0x1
+ add r4, #0x4e
+ strb r0, [r4, #0x0]
+ pop {r3-r5, pc}
+_02014410:
+ add r0, r4, #0x0
+ bl FUN_02014454
+ cmp r0, #0x1
+ bne _02014424
+ add r1, r4, #0x0
+ ldr r2, [r4, #0x4]
+ add r0, r4, #0x0
+ add r1, #0x2c
+ blx r2
+_02014424:
+ add r0, r4, #0x0
+ add r0, #0x4f
+ ldrb r0, [r0, #0x0]
+ add r1, r0, #0x1
+ add r0, r4, #0x0
+ add r0, #0x4f
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x4f
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x20
+ bne _02014452
+ mov r0, #0x0
+ add r4, #0x4f
+ strb r0, [r4, #0x0]
+ pop {r3-r5, pc}
+_02014444:
+ ldr r2, [r4, #0x4]
+ add r0, r4, #0x0
+ add r1, #0xc
+ blx r2
+ add r0, r5, #0x0
+ bl FUN_0200621C
+_02014452:
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02014454
+FUN_02014454: ; 0x02014454
+ push {r4-r5}
+ add r1, r0, #0x0
+ add r1, #0x4f
+ ldrb r1, [r1, #0x0]
+ cmp r1, #0x0
+ bne _02014482
+ mov r1, #0x1e
+ mov r4, #0x0
+ mov r3, #0x1
+ lsl r1, r1, #0xa
+_02014468:
+ add r2, r3, #0x0
+ lsl r2, r4
+ tst r2, r1
+ beq _02014474
+ ldrh r2, [r0, #0xc]
+ strh r2, [r0, #0x2c]
+_02014474:
+ add r4, r4, #0x1
+ add r0, r0, #0x2
+ cmp r4, #0x10
+ blo _02014468
+ mov r0, #0x1
+ pop {r4-r5}
+ bx lr
+_02014482:
+ cmp r1, #0x18
+ bne _020144AA
+ mov r1, #0x1e
+ mov r5, #0x0
+ add r4, r0, #0x0
+ mov r3, #0x1
+ lsl r1, r1, #0xa
+_02014490:
+ add r2, r3, #0x0
+ lsl r2, r5
+ tst r2, r1
+ beq _0201449C
+ ldrh r2, [r0, #0x2a]
+ strh r2, [r4, #0x2c]
+_0201449C:
+ add r5, r5, #0x1
+ add r4, r4, #0x2
+ cmp r5, #0x10
+ blo _02014490
+ mov r0, #0x1
+ pop {r4-r5}
+ bx lr
+_020144AA:
+ mov r0, #0x0
+ pop {r4-r5}
+ bx lr
+
+ thumb_func_start FUN_020144B0
+FUN_020144B0: ; 0x020144B0
+ push {r3, lr}
+ add r3, r0, #0x0
+ add r3, #0x4d
+ ldrb r3, [r3, #0x0]
+ mov r0, #0x0
+ mov r2, #0x20
+ lsl r3, r3, #0x15
+ lsr r3, r3, #0x10
+ bl FUN_02017FB4
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_020144C8
+FUN_020144C8: ; 0x020144C8
+ push {r3, lr}
+ add r3, r0, #0x0
+ add r3, #0x4d
+ ldrb r3, [r3, #0x0]
+ mov r0, #0x4
+ mov r2, #0x20
+ lsl r3, r3, #0x15
+ lsr r3, r3, #0x10
+ bl FUN_02017FB4
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_020144E0
+FUN_020144E0: ; 0x020144E0
+ push {r3, lr}
+ add r3, r0, #0x0
+ mov r0, #0x20
+ str r0, [sp, #0x0]
+ ldr r0, [r3, #0x8]
+ add r3, #0x4d
+ ldrb r3, [r3, #0x0]
+ mov r2, #0x0
+ lsl r3, r3, #0x14
+ lsr r3, r3, #0x10
+ bl FUN_02003054
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_020144FC
+FUN_020144FC: ; 0x020144FC
+ push {r3, lr}
+ add r3, r0, #0x0
+ mov r0, #0x20
+ str r0, [sp, #0x0]
+ ldr r0, [r3, #0x8]
+ add r3, #0x4d
+ ldrb r3, [r3, #0x0]
+ mov r2, #0x1
+ lsl r3, r3, #0x14
+ lsr r3, r3, #0x10
+ bl FUN_02003054
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02014518
+FUN_02014518: ; 0x02014518
+ push {r3-r7, lr}
+ mov r1, #0x78
+ add r7, r0, #0x0
+ bl FUN_02016998
+ mov r1, #0x0
+ mov r2, #0x78
+ add r6, r0, #0x0
+ blx MI_CpuFill8
+ ldr r2, _02014560 ; =0x0000019E
+ mov r0, #0x0
+ mov r1, #0x1a
+ add r3, r7, #0x0
+ bl FUN_0200A86C
+ str r0, [r6, #0x0]
+ mov r4, #0x0
+ add r5, r6, #0x0
+_0201453E:
+ mov r0, #0x16
+ add r1, r7, #0x0
+ bl FUN_020219F4
+ str r0, [r5, #0x4]
+ ldr r0, [r6, #0x0]
+ ldr r2, [r5, #0x4]
+ add r1, r4, #0x0
+ bl FUN_0200A8E0
+ add r4, r4, #0x1
+ add r5, r5, #0x4
+ cmp r4, #0x1d
+ blt _0201453E
+ add r0, r6, #0x0
+ pop {r3-r7, pc}
+ nop
+_02014560: .word 0x0000019E
+
+ thumb_func_start FUN_02014564
+FUN_02014564: ; 0x02014564
+ push {r4-r6, lr}
+ add r6, r0, #0x0
+ add r5, r6, #0x0
+ mov r4, #0x1c
+ add r5, #0x70
+_0201456E:
+ ldr r0, [r5, #0x4]
+ bl FUN_02021A20
+ sub r5, r5, #0x4
+ sub r4, r4, #0x1
+ bpl _0201456E
+ ldr r0, [r6, #0x0]
+ bl FUN_0200A8B8
+ add r0, r6, #0x0
+ bl FUN_02016A18
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02014588
+FUN_02014588: ; 0x02014588
+ lsl r1, r1, #0x2
+ add r0, r0, r1
+ ldr r0, [r0, #0x4]
+ bx lr
+
+ thumb_func_start FUN_02014590
+FUN_02014590: ; 0x02014590
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r1, #0x9c
+ bl FUN_02016998
+ add r1, r5, #0x0
+ add r4, r0, #0x0
+ bl FUN_020146F0
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020145A8
+FUN_020145A8: ; 0x020145A8
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r1, r4, #0x0
+ add r1, #0x9b
+ ldrb r1, [r1, #0x0]
+ lsl r1, r1, #0x1c
+ lsr r1, r1, #0x1c
+ cmp r1, #0x1
+ bne _020145BE
+ bl FUN_020146C4
+_020145BE:
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020145C8
+FUN_020145C8: ; 0x020145C8
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ ldr r2, [r4, #0x0]
+ add r5, r0, #0x0
+ str r2, [r5, #0x7c]
+ add r2, r5, #0x0
+ ldr r3, [r4, #0x4]
+ add r2, #0x80
+ str r3, [r2, #0x0]
+ add r2, r5, #0x0
+ ldrb r3, [r4, #0x10]
+ add r2, #0x98
+ strb r3, [r2, #0x0]
+ add r2, r5, #0x0
+ ldrb r3, [r4, #0x11]
+ add r2, #0x99
+ strb r3, [r2, #0x0]
+ bl FUN_02014730
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02014754
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02014784
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02014814
+ add r0, r5, #0x0
+ add r0, #0x9b
+ ldrb r1, [r0, #0x0]
+ mov r0, #0xf
+ bic r1, r0
+ mov r0, #0x1
+ orr r1, r0
+ add r0, r5, #0x0
+ add r0, #0x9b
+ strb r1, [r0, #0x0]
+ add r0, r5, #0x0
+ add r0, #0x9b
+ ldrb r1, [r0, #0x0]
+ mov r0, #0xf0
+ add r5, #0x9b
+ bic r1, r0
+ mov r0, #0x80
+ orr r0, r1
+ strb r0, [r5, #0x0]
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02014630
+FUN_02014630: ; 0x02014630
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r1, r4, #0x0
+ add r1, #0x9b
+ ldrb r2, [r1, #0x0]
+ mov r1, #0xf0
+ bic r2, r1
+ mov r1, #0x80
+ orr r2, r1
+ add r1, r4, #0x0
+ add r1, #0x9b
+ strb r2, [r1, #0x0]
+ bl FUN_0201466C
+ cmp r0, #0x0
+ bne _0201466A
+ add r1, r4, #0x0
+ add r1, #0x9b
+ ldrb r1, [r1, #0x0]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x1c
+ bne _0201466A
+ add r4, #0x9a
+ ldrb r0, [r4, #0x0]
+ cmp r0, #0x0
+ bne _02014668
+ mov r0, #0x3
+ pop {r4, pc}
+_02014668:
+ mov r0, #0x4
+_0201466A:
+ pop {r4, pc}
+
+ thumb_func_start FUN_0201466C
+FUN_0201466C: ; 0x0201466C
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, #0x9b
+ ldrb r0, [r0, #0x0]
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1c
+ cmp r0, #0x1
+ beq _02014680
+ bl ErrorHandling
+_02014680:
+ add r0, r4, #0x0
+ add r0, #0x9a
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x3
+ bne _02014690
+ ldr r0, [r4, #0x0]
+ bl FUN_02022144
+_02014690:
+ add r1, r4, #0x0
+ add r1, #0x9a
+ ldrb r2, [r1, #0x0]
+ mov r0, #0x0
+ cmp r2, #0x3
+ beq _020146AA
+ add r1, r4, #0x0
+ mov r0, #0x38
+ add r1, #0xc
+ mul r0, r2
+ add r0, r1, r0
+ bl FUN_02014930
+_020146AA:
+ cmp r0, #0x1
+ bne _020146BE
+ add r4, #0x9a
+ ldrb r0, [r4, #0x0]
+ cmp r0, #0x0
+ bne _020146BA
+ mov r0, #0x1
+ pop {r4, pc}
+_020146BA:
+ mov r0, #0x2
+ pop {r4, pc}
+_020146BE:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020146C4
+FUN_020146C4: ; 0x020146C4
+ push {r4-r6, lr}
+ add r6, r0, #0x0
+ ldr r0, [r6, #0x0]
+ bl FUN_0202212C
+ add r5, r6, #0x0
+ mov r4, #0x0
+ add r5, #0xc
+_020146D4:
+ add r0, r5, #0x0
+ bl FUN_02014970
+ add r4, r4, #0x1
+ add r5, #0x38
+ cmp r4, #0x2
+ blt _020146D4
+ add r0, r6, #0x0
+ add r6, #0x84
+ ldr r1, [r6, #0x0]
+ bl FUN_020146F0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_020146F0
+FUN_020146F0: ; 0x020146F0
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x9c
+ blx FUN_020DF4A4
+ add r0, r5, #0x0
+ add r0, #0x9b
+ ldrb r1, [r0, #0x0]
+ mov r0, #0xf
+ bic r1, r0
+ add r0, r5, #0x0
+ add r0, #0x9b
+ strb r1, [r0, #0x0]
+ add r0, r5, #0x0
+ add r0, #0x84
+ str r4, [r0, #0x0]
+ add r0, r5, #0x0
+ mov r1, #0x3
+ add r0, #0x9a
+ strb r1, [r0, #0x0]
+ add r0, r5, #0x0
+ add r0, #0x9b
+ ldrb r1, [r0, #0x0]
+ mov r0, #0xf0
+ add r5, #0x9b
+ bic r1, r0
+ mov r0, #0x80
+ orr r0, r1
+ strb r0, [r5, #0x0]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02014730
+FUN_02014730: ; 0x02014730
+ push {r3, lr}
+ sub sp, #0x8
+ add r3, r0, #0x0
+ ldr r0, [r1, #0x8]
+ mov r1, #0x1
+ str r0, [sp, #0x0]
+ add r0, r3, #0x0
+ add r0, #0x84
+ ldr r0, [r0, #0x0]
+ str r0, [sp, #0x4]
+ ldr r2, [r3, #0x7c]
+ add r3, #0x80
+ ldr r3, [r3, #0x0]
+ mov r0, #0x54
+ bl FUN_02014A3C
+ add sp, #0x8
+ pop {r3, pc}
+
+ thumb_func_start FUN_02014754
+FUN_02014754: ; 0x02014754
+ push {r3, lr}
+ sub sp, #0x8
+ add r3, r1, #0x0
+ add r1, r0, #0x0
+ add r1, #0x80
+ ldr r1, [r1, #0x0]
+ cmp r1, #0x4
+ bhs _02014768
+ mov r2, #0x0
+ b _0201476A
+_02014768:
+ mov r2, #0x4
+_0201476A:
+ mov r1, #0x40
+ str r1, [sp, #0x0]
+ add r0, #0x84
+ ldr r0, [r0, #0x0]
+ mov r1, #0x0
+ str r0, [sp, #0x4]
+ ldr r3, [r3, #0xc]
+ mov r0, #0x54
+ lsl r3, r3, #0x5
+ bl FUN_02014A8C
+ add sp, #0x8
+ pop {r3, pc}
+
+ thumb_func_start FUN_02014784
+FUN_02014784: ; 0x02014784
+ push {r3-r7, lr}
+ sub sp, #0x30
+ add r7, r0, #0x0
+ mov r3, #0x0
+ add r4, r7, #0x0
+_0201478E:
+ add r0, r4, #0x0
+ add r3, r3, #0x1
+ lsl r2, r3, #0xc
+ add r0, #0x88
+ add r4, r4, #0x4
+ str r2, [r0, #0x0]
+ cmp r3, #0x4
+ blt _0201478E
+ ldr r0, [r7, #0x7c]
+ mov r5, #0x0
+ str r0, [sp, #0x0]
+ add r0, r7, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ add r4, r7, #0x0
+ str r0, [sp, #0x4]
+ mov r0, #0x54
+ str r0, [sp, #0x8]
+ ldr r0, [r1, #0x8]
+ add r6, r5, #0x0
+ str r0, [sp, #0x1c]
+ ldr r0, [r1, #0xc]
+ add r4, #0xc
+ str r0, [sp, #0x20]
+ add r0, r7, #0x0
+ add r0, #0x88
+ str r0, [sp, #0x24]
+ mov r0, #0x4
+ str r0, [sp, #0x28]
+ add r0, r7, #0x0
+ add r0, #0x98
+ ldrb r1, [r0, #0x0]
+ add r0, sp, #0x20
+ strb r1, [r0, #0xc]
+_020147D2:
+ mov r1, #0x0
+ mov r2, #0x2
+ add r3, sp, #0x0
+_020147D8:
+ add r0, r5, r2
+ str r0, [r3, #0xc]
+ add r1, r1, #0x1
+ add r2, r2, #0x2
+ add r3, r3, #0x4
+ cmp r1, #0x4
+ blt _020147D8
+ add r0, r7, #0x0
+ add r0, #0x99
+ ldrb r0, [r0, #0x0]
+ add r2, r7, #0x0
+ add r2, #0x84
+ add r1, r0, r6
+ add r0, sp, #0x20
+ strb r1, [r0, #0xd]
+ ldr r0, [sp, #0x20]
+ add r1, sp, #0x0
+ add r0, r0, r5
+ str r0, [sp, #0x20]
+ ldr r2, [r2, #0x0]
+ add r0, r4, #0x0
+ bl FUN_020148A8
+ add r5, r5, #0x1
+ add r6, r6, #0x4
+ add r4, #0x38
+ cmp r5, #0x2
+ blt _020147D2
+ add sp, #0x30
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02014814
+FUN_02014814: ; 0x02014814
+ push {r3-r4, lr}
+ sub sp, #0x4
+ add r4, r0, #0x0
+ mov r0, #0x0
+ add r1, r0, #0x0
+ add r2, r4, #0x0
+_02014820:
+ add r3, r4, #0x0
+ add r3, #0x99
+ ldrb r3, [r3, #0x0]
+ add r0, r0, #0x1
+ lsl r3, r3, #0x3
+ add r3, r3, r1
+ strb r3, [r2, #0x4]
+ add r3, r4, #0x0
+ add r3, #0x99
+ ldrb r3, [r3, #0x0]
+ lsl r3, r3, #0x3
+ add r3, r3, r1
+ add r3, #0x20
+ strb r3, [r2, #0x5]
+ add r3, r4, #0x0
+ add r3, #0x98
+ ldrb r3, [r3, #0x0]
+ add r1, #0x20
+ lsl r3, r3, #0x3
+ strb r3, [r2, #0x6]
+ add r3, r4, #0x0
+ add r3, #0x98
+ ldrb r3, [r3, #0x0]
+ lsl r3, r3, #0x3
+ add r3, #0x30
+ strb r3, [r2, #0x7]
+ add r2, r2, #0x4
+ cmp r0, #0x2
+ blt _02014820
+ add r0, r4, #0x0
+ add r0, #0x84
+ ldr r0, [r0, #0x0]
+ ldr r2, _02014874 ; =FUN_02014878
+ str r0, [sp, #0x0]
+ add r0, r4, #0x4
+ mov r1, #0x2
+ add r3, r4, #0x0
+ bl FUN_020220C4
+ str r0, [r4, #0x0]
+ add sp, #0x4
+ pop {r3-r4, pc}
+ .balign 4
+_02014874: .word FUN_02014878
+
+ thumb_func_start FUN_02014878
+FUN_02014878: ; 0x02014878
+ push {r4, lr}
+ add r3, r2, #0x0
+ add r3, #0x9b
+ ldrb r3, [r3, #0x0]
+ mov r4, #0xf0
+ bic r3, r4
+ lsl r4, r1, #0x18
+ lsr r4, r4, #0x18
+ lsl r4, r4, #0x1c
+ lsr r4, r4, #0x18
+ orr r4, r3
+ add r3, r2, #0x0
+ add r3, #0x9b
+ strb r4, [r3, #0x0]
+ cmp r1, #0x0
+ bne _020148A2
+ add r2, #0x9a
+ strb r0, [r2, #0x0]
+ ldr r0, _020148A4 ; =0x000005E4
+ bl FUN_020054C8
+_020148A2:
+ pop {r4, pc}
+ .balign 4
+_020148A4: .word 0x000005E4
+
+ thumb_func_start FUN_020148A8
+FUN_020148A8: ; 0x020148A8
+ push {r3-r7, lr}
+ sub sp, #0x10
+ add r5, r1, #0x0
+ str r2, [sp, #0x8]
+ str r0, [sp, #0x4]
+ ldr r1, [r5, #0x24]
+ ldr r2, [r5, #0x28]
+ add r0, #0x28
+ bl FUN_020149FC
+ ldr r1, [r5, #0x0]
+ ldr r0, [sp, #0x4]
+ ldr r6, [sp, #0x4]
+ str r1, [r0, #0x0]
+ ldr r1, [r5, #0x4]
+ ldr r4, [sp, #0x4]
+ str r1, [r0, #0x4]
+ add r0, r5, #0x0
+ add r0, #0x2c
+ ldrb r1, [r0, #0x0]
+ ldr r0, [sp, #0x4]
+ add r6, #0x18
+ add r0, #0x34
+ strb r1, [r0, #0x0]
+ add r0, r5, #0x0
+ add r0, #0x2d
+ ldrb r1, [r0, #0x0]
+ ldr r0, [sp, #0x4]
+ add r7, r5, #0x0
+ add r0, #0x35
+ strb r1, [r0, #0x0]
+ mov r0, #0x0
+ str r0, [sp, #0xc]
+_020148EA:
+ ldr r0, [sp, #0x8]
+ mov r2, #0x1
+ str r0, [sp, #0x0]
+ ldr r0, [r5, #0x8]
+ ldr r1, [r7, #0xc]
+ add r3, r6, #0x0
+ bl FUN_02006BDC
+ str r0, [r4, #0x8]
+ ldr r0, [r4, #0x18]
+ ldr r1, [r5, #0x1c]
+ bl FUN_02014BA4
+ ldr r0, [r4, #0x18]
+ ldr r1, [r5, #0x20]
+ bl FUN_02014BC4
+ ldr r0, [sp, #0xc]
+ add r6, r6, #0x4
+ add r0, r0, #0x1
+ add r7, r7, #0x4
+ add r4, r4, #0x4
+ str r0, [sp, #0xc]
+ cmp r0, #0x4
+ blt _020148EA
+ ldr r0, [sp, #0x4]
+ bl FUN_020149D0
+ ldr r0, [sp, #0x4]
+ mov r1, #0x0
+ add r0, #0x36
+ str r0, [sp, #0x4]
+ strb r1, [r0, #0x0]
+ add sp, #0x10
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02014930
+FUN_02014930: ; 0x02014930
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x28
+ bl FUN_02014A10
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x36
+ ldrb r0, [r0, #0x0]
+ cmp r0, r4
+ beq _02014952
+ add r0, r5, #0x0
+ bl FUN_020149D0
+ add r0, r5, #0x0
+ add r0, #0x36
+ strb r4, [r0, #0x0]
+_02014952:
+ ldr r0, [r5, #0x2c]
+ sub r0, r0, #0x1
+ cmp r4, r0
+ bne _0201495E
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0201495E:
+ add r5, #0x28
+ mov r1, #0x1
+ add r0, r5, #0x0
+ lsl r1, r1, #0xc
+ bl FUN_02014A08
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02014970
+FUN_02014970: ; 0x02014970
+ push {r4-r6, lr}
+ sub sp, #0x10
+ add r6, r0, #0x0
+ add r0, #0x35
+ ldrb r0, [r0, #0x0]
+ ldr r1, [r6, #0x18]
+ add r3, r6, #0x0
+ str r0, [sp, #0x0]
+ ldrh r0, [r1, #0x0]
+ mov r2, #0x0
+ add r3, #0x34
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x4]
+ ldrh r0, [r1, #0x2]
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x8]
+ str r2, [sp, #0xc]
+ ldr r1, [r6, #0x4]
+ ldrb r3, [r3, #0x0]
+ lsl r1, r1, #0x18
+ ldr r0, [r6, #0x0]
+ lsr r1, r1, #0x18
+ bl FUN_02018540
+ ldr r1, [r6, #0x4]
+ ldr r0, [r6, #0x0]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl FUN_0201AC68
+ mov r4, #0x0
+ add r5, r6, #0x0
+_020149B4:
+ ldr r0, [r5, #0x8]
+ bl FUN_02016A18
+ add r4, r4, #0x1
+ add r5, r5, #0x4
+ cmp r4, #0x4
+ blt _020149B4
+ add r0, r6, #0x0
+ mov r1, #0x0
+ mov r2, #0x38
+ blx FUN_020DF4A4
+ add sp, #0x10
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_020149D0
+FUN_020149D0: ; 0x020149D0
+ push {r3-r4, lr}
+ sub sp, #0x4
+ add r4, r0, #0x0
+ add r0, #0x28
+ bl FUN_02014A10
+ add r2, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x35
+ ldrb r0, [r0, #0x0]
+ lsl r2, r2, #0x2
+ add r2, r4, r2
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x0]
+ ldr r1, [r4, #0x4]
+ add r4, #0x34
+ ldrb r3, [r4, #0x0]
+ ldr r2, [r2, #0x18]
+ bl FUN_02014B58
+ add sp, #0x4
+ pop {r3-r4, pc}
+
+ thumb_func_start FUN_020149FC
+FUN_020149FC: ; 0x020149FC
+ str r1, [r0, #0x0]
+ str r2, [r0, #0x4]
+ mov r1, #0x0
+ str r1, [r0, #0x8]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02014A08
+FUN_02014A08: ; 0x02014A08
+ ldr r2, [r0, #0x8]
+ add r1, r2, r1
+ str r1, [r0, #0x8]
+ bx lr
+
+ thumb_func_start FUN_02014A10
+FUN_02014A10: ; 0x02014A10
+ push {r4-r5}
+ ldr r5, [r0, #0x4]
+ mov r2, #0x0
+ cmp r5, #0x0
+ bls _02014A34
+ ldr r3, [r0, #0x0]
+ ldr r4, [r0, #0x8]
+_02014A1E:
+ ldr r1, [r3, #0x0]
+ cmp r1, r4
+ blt _02014A2A
+ add r0, r2, #0x0
+ pop {r4-r5}
+ bx lr
+_02014A2A:
+ ldr r1, [r0, #0x4]
+ add r2, r2, #0x1
+ add r3, r3, #0x4
+ cmp r2, r1
+ blo _02014A1E
+_02014A34:
+ sub r0, r5, #0x1
+ pop {r4-r5}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02014A3C
+FUN_02014A3C: ; 0x02014A3C
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r7, r0, #0x0
+ str r1, [sp, #0x4]
+ ldr r0, [sp, #0x24]
+ mov r1, #0x14
+ add r5, r2, #0x0
+ add r6, r3, #0x0
+ bl FUN_02016998
+ add r4, r0, #0x0
+ add r2, r4, #0x0
+ mov r1, #0x14
+ mov r0, #0x0
+_02014A58:
+ strb r0, [r2, #0x0]
+ add r2, r2, #0x1
+ sub r1, r1, #0x1
+ bne _02014A58
+ ldr r0, [sp, #0x24]
+ ldr r1, [sp, #0x4]
+ str r0, [sp, #0x0]
+ add r0, r7, #0x0
+ mov r2, #0x1
+ add r3, r4, #0x4
+ bl FUN_02006BB0
+ str r0, [r4, #0x8]
+ str r5, [r4, #0x0]
+ ldr r0, [sp, #0x20]
+ str r6, [r4, #0xc]
+ str r0, [r4, #0x10]
+ ldr r0, _02014A88 ; =FUN_02014AD4
+ add r1, r4, #0x0
+ mov r2, #0x80
+ bl FUN_0200CA98
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+_02014A88: .word FUN_02014AD4
+
+ thumb_func_start FUN_02014A8C
+FUN_02014A8C: ; 0x02014A8C
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ str r1, [sp, #0x0]
+ ldr r0, [sp, #0x1c]
+ mov r1, #0x14
+ add r5, r2, #0x0
+ add r6, r3, #0x0
+ bl FUN_02016998
+ add r4, r0, #0x0
+ add r2, r4, #0x0
+ mov r1, #0x14
+ mov r0, #0x0
+_02014AA6:
+ strb r0, [r2, #0x0]
+ add r2, r2, #0x1
+ sub r1, r1, #0x1
+ bne _02014AA6
+ ldr r1, [sp, #0x0]
+ ldr r3, [sp, #0x1c]
+ add r0, r7, #0x0
+ add r2, r4, #0x0
+ bl FUN_02006C08
+ str r0, [r4, #0x4]
+ str r5, [r4, #0x8]
+ ldr r0, [sp, #0x18]
+ str r6, [r4, #0xc]
+ str r0, [r4, #0x10]
+ ldr r0, _02014AD0 ; =FUN_02014B10
+ add r1, r4, #0x0
+ mov r2, #0x80
+ bl FUN_0200CA98
+ pop {r3-r7, pc}
+ .balign 4
+_02014AD0: .word FUN_02014B10
+
+ thumb_func_start FUN_02014AD4
+FUN_02014AD4: ; 0x02014AD4
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ ldr r1, [r4, #0x4]
+ add r5, r0, #0x0
+ ldr r0, [r1, #0x14]
+ ldr r1, [r1, #0x10]
+ blx DC_FlushRange
+ ldr r3, [r4, #0x4]
+ ldr r0, [r4, #0x10]
+ str r0, [sp, #0x0]
+ ldr r1, [r4, #0xc]
+ ldr r2, [r3, #0x14]
+ lsl r1, r1, #0x18
+ ldr r0, [r4, #0x0]
+ ldr r3, [r3, #0x10]
+ lsr r1, r1, #0x18
+ bl FUN_02017E14
+ add r0, r5, #0x0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0x8]
+ bl FUN_02016A18
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02014B10
+FUN_02014B10: ; 0x02014B10
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ ldr r1, [r4, #0x10]
+ ldr r0, [r0, #0xc]
+ blx DC_FlushRange
+ ldr r0, [r4, #0x8]
+ cmp r0, #0x0
+ bne _02014B34
+ ldr r0, [r4, #0x0]
+ ldr r1, [r4, #0xc]
+ ldr r0, [r0, #0xc]
+ ldr r2, [r4, #0x10]
+ blx FUN_020C9550
+ b _02014B44
+_02014B34:
+ cmp r0, #0x4
+ bne _02014B44
+ ldr r0, [r4, #0x0]
+ ldr r1, [r4, #0xc]
+ ldr r0, [r0, #0xc]
+ ldr r2, [r4, #0x10]
+ blx FUN_020C94E8
+_02014B44:
+ add r0, r5, #0x0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0x4]
+ bl FUN_02016A18
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02014B58
+FUN_02014B58: ; 0x02014B58
+ push {r3-r6, lr}
+ sub sp, #0x1c
+ add r4, r1, #0x0
+ add r1, r2, #0x0
+ add r2, r3, #0x0
+ ldrh r6, [r1, #0x0]
+ ldrh r3, [r1, #0x2]
+ lsl r2, r2, #0x18
+ lsl r6, r6, #0x15
+ lsr r6, r6, #0x18
+ lsl r3, r3, #0x15
+ str r6, [sp, #0x0]
+ lsr r3, r3, #0x18
+ str r3, [sp, #0x4]
+ add r1, #0xc
+ str r1, [sp, #0x8]
+ mov r1, #0x0
+ str r1, [sp, #0xc]
+ str r1, [sp, #0x10]
+ str r6, [sp, #0x14]
+ str r3, [sp, #0x18]
+ ldr r3, [sp, #0x30]
+ lsl r1, r4, #0x18
+ lsl r3, r3, #0x18
+ lsr r1, r1, #0x18
+ lsr r2, r2, #0x18
+ lsr r3, r3, #0x18
+ add r5, r0, #0x0
+ bl FUN_02018170
+ lsl r1, r4, #0x18
+ add r0, r5, #0x0
+ lsr r1, r1, #0x18
+ bl FUN_0201AC68
+ add sp, #0x1c
+ pop {r3-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02014BA4
+FUN_02014BA4: ; 0x02014BA4
+ push {r3-r4}
+ ldr r2, [r0, #0x8]
+ add r0, #0xc
+ lsr r4, r2, #0x1
+ mov r3, #0x0
+ cmp r4, #0x0
+ ble _02014BC0
+_02014BB2:
+ ldrh r2, [r0, #0x0]
+ add r3, r3, #0x1
+ add r2, r2, r1
+ strh r2, [r0, #0x0]
+ add r0, r0, #0x2
+ cmp r3, r4
+ blt _02014BB2
+_02014BC0:
+ pop {r3-r4}
+ bx lr
+
+ thumb_func_start FUN_02014BC4
+FUN_02014BC4: ; 0x02014BC4
+ push {r4-r5}
+ ldr r2, [r0, #0x8]
+ add r0, #0xc
+ lsr r3, r2, #0x1
+ mov r2, #0x0
+ cmp r3, #0x0
+ ble _02014BEA
+ ldr r4, _02014BF0 ; =0x00000FFF
+ lsl r1, r1, #0xc
+_02014BD6:
+ ldrh r5, [r0, #0x0]
+ add r2, r2, #0x1
+ and r5, r4
+ strh r5, [r0, #0x0]
+ ldrh r5, [r0, #0x0]
+ orr r5, r1
+ strh r5, [r0, #0x0]
+ add r0, r0, #0x2
+ cmp r2, r3
+ blt _02014BD6
+_02014BEA:
+ pop {r4-r5}
+ bx lr
+ nop
+_02014BF0: .word 0x00000FFF
+
+ thumb_func_start FUN_02014BF4
+FUN_02014BF4: ; 0x02014BF4
+ push {r3-r7, lr}
+ add r7, r1, #0x0
+ mov r1, #0xc
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ bl FUN_02016998
+ add r4, r0, #0x0
+ strb r6, [r4, #0x8]
+ mov r0, #0x1d
+ strb r7, [r4, #0x9]
+ lsl r0, r0, #0x4
+ add r6, r7, #0x0
+ mul r6, r0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ str r5, [r4, #0x4]
+ bl FUN_02016998
+ mov r1, #0x0
+ add r2, r6, #0x0
+ str r0, [r4, #0x0]
+ blx MI_CpuFill8
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02014C28
+FUN_02014C28: ; 0x02014C28
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_02016A18
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02014C3C
+FUN_02014C3C: ; 0x02014C3C
+ push {r4, lr}
+ add r4, r0, #0x0
+ cmp r4, #0x19
+ blo _02014C48
+ bl ErrorHandling
+_02014C48:
+ ldr r0, _02014C50 ; =0x020ED64C
+ ldrb r0, [r0, r4]
+ pop {r4, pc}
+ nop
+_02014C50: .word 0x020ED64C
+
+ thumb_func_start FUN_02014C54
+FUN_02014C54: ; 0x02014C54
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ str r3, [sp, #0x4]
+ add r0, r2, #0x0
+ ldrh r6, [r0, #0x0]
+ ldrh r0, [r0, #0x2]
+ add r7, r1, #0x0
+ ldrb r1, [r5, #0x9]
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x4]
+ str r2, [sp, #0x0]
+ cmp r0, r1
+ blo _02014C74
+ bl ErrorHandling
+_02014C74:
+ ldr r0, [sp, #0x4]
+ mov r1, #0x1d
+ add r4, r0, #0x0
+ lsl r1, r1, #0x4
+ ldr r0, [r5, #0x0]
+ mul r4, r1
+ add r0, r0, r4
+ ldr r0, [r0, #0x10]
+ cmp r0, #0x0
+ beq _02014C8C
+ bl ErrorHandling
+_02014C8C:
+ ldr r0, [r5, #0x0]
+ mov r2, #0x1d
+ add r0, r0, r4
+ mov r1, #0x0
+ lsl r2, r2, #0x4
+ blx MI_CpuFill8
+ ldr r0, [r5, #0x0]
+ mov r1, #0x1
+ add r0, r0, r4
+ str r1, [r0, #0x10]
+ ldr r0, [r5, #0x0]
+ cmp r6, #0x86
+ str r7, [r0, r4]
+ blt _02014CAE
+ mov r6, #0x0
+ str r6, [sp, #0x8]
+_02014CAE:
+ ldr r0, [r5, #0x0]
+ add r0, r0, r4
+ str r6, [r0, #0x14]
+ ldrb r0, [r5, #0x8]
+ cmp r0, #0x0
+ beq _02014CC0
+ ldr r0, [sp, #0x0]
+ ldrb r2, [r0, #0x4]
+ b _02014CC2
+_02014CC0:
+ mov r2, #0x0
+_02014CC2:
+ ldr r0, [r5, #0x0]
+ add r1, r0, r4
+ mov r0, #0x73
+ lsl r0, r0, #0x2
+ strb r2, [r1, r0]
+ ldr r1, [r5, #0x0]
+ ldr r2, [r5, #0x4]
+ add r1, r1, r4
+ ldr r1, [r1, #0x14]
+ mov r0, #0x5e
+ bl FUN_02006528
+ ldr r1, [r5, #0x0]
+ mov r2, #0x0
+ add r1, r1, r4
+ str r0, [r1, #0x8]
+ ldr r0, [r5, #0x0]
+ mov r6, #0x1c
+ add r1, r0, r4
+ ldr r0, [r1, #0x8]
+ str r0, [r1, #0xc]
+ ldr r0, [r5, #0x0]
+ add r0, r0, r4
+ str r2, [r0, #0x1c]
+ ldr r0, [r5, #0x0]
+ add r0, r0, r4
+ str r2, [r0, #0x20]
+ ldr r0, [r5, #0x0]
+ add r1, r0, r4
+ ldr r0, _02014D74 ; =0x000001CD
+ strb r2, [r1, r0]
+ ldr r1, [r5, #0x0]
+ add r3, r1, r4
+ add r1, r0, #0x1
+ strb r6, [r3, r1]
+ ldr r1, [r5, #0x0]
+ add r0, r0, #0x2
+ add r1, r1, r4
+ strb r2, [r1, r0]
+ ldr r1, [r5, #0x0]
+ ldr r0, _02014D78 ; =FUN_02014DD8
+ add r1, r1, r4
+ bl FUN_0200CA44
+ ldr r1, [r5, #0x0]
+ add r1, r1, r4
+ str r0, [r1, #0x4]
+ ldr r0, [r5, #0x0]
+ add r1, r0, r4
+ ldr r0, [sp, #0x8]
+ str r0, [r1, #0x54]
+ add r0, r7, #0x0
+ mov r1, #0x0
+ bl FUN_0200782C
+ ldr r1, [r5, #0x0]
+ add r1, r1, r4
+ str r0, [r1, #0x58]
+ add r0, r7, #0x0
+ mov r1, #0x1
+ bl FUN_0200782C
+ ldr r1, [r5, #0x0]
+ add r1, r1, r4
+ str r0, [r1, #0x5c]
+ ldr r1, [r5, #0x0]
+ mov r0, #0x0
+ add r1, r1, r4
+ str r0, [r1, #0x60]
+ ldr r1, [r5, #0x0]
+ add r1, r1, r4
+ str r0, [r1, #0x64]
+ ldr r1, [r5, #0x0]
+ add r1, r1, r4
+ str r0, [r1, #0x68]
+ ldr r1, [r5, #0x0]
+ add r1, r1, r4
+ str r0, [r1, #0x6c]
+ ldr r1, [r5, #0x0]
+ add r1, r1, r4
+ str r0, [r1, #0x70]
+ ldr r1, [r5, #0x0]
+ add r1, r1, r4
+ str r0, [r1, #0x74]
+ ldr r1, [r5, #0x0]
+ add r1, r1, r4
+ str r0, [r1, #0x78]
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+_02014D74: .word 0x000001CD
+_02014D78: .word FUN_02014DD8
+
+ thumb_func_start FUN_02014D7C
+FUN_02014D7C: ; 0x02014D7C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldrb r0, [r5, #0x9]
+ add r4, r1, #0x0
+ cmp r4, r0
+ blo _02014D8C
+ bl ErrorHandling
+_02014D8C:
+ mov r0, #0x1d
+ lsl r0, r0, #0x4
+ ldr r1, [r5, #0x0]
+ mul r0, r4
+ add r0, r1, r0
+ ldr r0, [r0, #0x20]
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02014D9C
+FUN_02014D9C: ; 0x02014D9C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r0, #0x1d
+ lsl r0, r0, #0x4
+ add r4, r1, #0x0
+ mul r4, r0
+ ldr r0, [r5, #0x0]
+ add r0, r0, r4
+ ldr r0, [r0, #0x4]
+ cmp r0, #0x0
+ beq _02014DD6
+ bl FUN_0200CAB4
+ ldr r1, [r5, #0x0]
+ mov r0, #0x0
+ add r1, r1, r4
+ str r0, [r1, #0x4]
+ ldr r1, [r5, #0x0]
+ mov r2, #0x1
+ add r1, r1, r4
+ str r2, [r1, #0x20]
+ ldr r1, [r5, #0x0]
+ add r1, r1, r4
+ str r0, [r1, #0x10]
+ ldr r0, [r5, #0x0]
+ add r0, r0, r4
+ ldr r0, [r0, #0x8]
+ bl FUN_02016A18
+_02014DD6:
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02014DD8
+FUN_02014DD8: ; 0x02014DD8
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x54]
+ cmp r0, #0x0
+ bne _02014DEC
+ add r0, r4, #0x0
+ bl FUN_02014E10
+ b _02014DF0
+_02014DEC:
+ sub r0, r0, #0x1
+ str r0, [r4, #0x54]
+_02014DF0:
+ ldr r0, [r4, #0x1c]
+ cmp r0, #0x0
+ beq _02014E0E
+ mov r0, #0x1
+ str r0, [r4, #0x20]
+ mov r0, #0x0
+ str r0, [r4, #0x10]
+ add r0, r5, #0x0
+ bl FUN_0200CAB4
+ mov r0, #0x0
+ str r0, [r4, #0x4]
+ ldr r0, [r4, #0x8]
+ bl FUN_02016A18
+_02014E0E:
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02014E10
+FUN_02014E10: ; 0x02014E10
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ mov r6, #0x0
+ str r6, [r5, #0x18]
+ add r7, r5, #0x0
+ str r6, [r5, #0x44]
+ add r4, r6, #0x0
+ add r7, #0x7c
+_02014E20:
+ mov r0, #0x54
+ add r1, r4, #0x0
+ mul r1, r0
+ add r0, r7, r1
+ ldr r1, [r7, r1]
+ cmp r1, #0x0
+ beq _02014E4E
+ add r1, r0, #0x0
+ add r1, #0x2d
+ ldrb r1, [r1, #0x0]
+ cmp r1, #0x0
+ bne _02014E40
+ ldr r2, [r0, #0x50]
+ add r1, r5, #0x0
+ blx r2
+ b _02014E54
+_02014E40:
+ add r1, r0, #0x0
+ add r1, #0x2d
+ ldrb r1, [r1, #0x0]
+ add r0, #0x2d
+ sub r1, r1, #0x1
+ strb r1, [r0, #0x0]
+ b _02014E54
+_02014E4E:
+ add r0, r6, #0x1
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+_02014E54:
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0x4
+ blo _02014E20
+ cmp r6, #0x4
+ bne _02014E68
+ ldr r0, _02014EFC ; =0x000001CD
+ mov r1, #0x0
+ strb r1, [r5, r0]
+_02014E68:
+ ldr r0, _02014EFC ; =0x000001CD
+ ldrb r1, [r5, r0]
+ cmp r1, #0x0
+ beq _02014E7E
+ add r0, r5, #0x0
+ bl FUN_020156E8
+ add r0, r5, #0x0
+ bl FUN_02015730
+ pop {r3-r7, pc}
+_02014E7E:
+ add r0, r0, #0x2
+ ldrb r0, [r5, r0]
+ cmp r0, #0x0
+ beq _02014E96
+ ldr r0, [r5, #0x0]
+ bl FUN_02007F20
+ cmp r0, #0x0
+ bne _02014EF8
+ ldr r0, _02014F00 ; =0x000001CF
+ mov r1, #0x0
+ strb r1, [r5, r0]
+_02014E96:
+ add r6, r5, #0x0
+ add r4, r5, #0x0
+ ldr r7, _02014F04 ; =0x020ED6A4
+ add r6, #0xc
+ add r4, #0x44
+_02014EA0:
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ ldr r0, [r5, #0xc]
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x22
+ blo _02014EB2
+ bl ErrorHandling
+_02014EB2:
+ ldr r1, [r5, #0xc]
+ add r0, r5, #0x0
+ ldr r1, [r1, #0x0]
+ lsl r1, r1, #0x2
+ ldr r1, [r7, r1]
+ blx r1
+ ldr r0, [r5, #0x1c]
+ cmp r0, #0x0
+ bne _02014EF8
+ ldr r0, [r6, #0x0]
+ add r0, r0, #0x4
+ str r0, [r6, #0x0]
+ ldr r0, [r5, #0x18]
+ cmp r0, #0x0
+ bne _02014EF8
+ ldr r0, _02014EFC ; =0x000001CD
+ ldrb r0, [r5, r0]
+ cmp r0, #0x0
+ beq _02014EE6
+ add r0, r5, #0x0
+ bl FUN_020156E8
+ add r0, r5, #0x0
+ bl FUN_02015730
+ pop {r3-r7, pc}
+_02014EE6:
+ mov r0, #0x1
+ ldr r1, [r5, #0x44]
+ lsl r0, r0, #0x8
+ cmp r1, r0
+ blt _02014EA0
+ bl ErrorHandling
+ mov r0, #0x1
+ str r0, [r5, #0x1c]
+_02014EF8:
+ pop {r3-r7, pc}
+ nop
+_02014EFC: .word 0x000001CD
+_02014F00: .word 0x000001CF
+_02014F04: .word 0x020ED6A4
+
+ thumb_func_start FUN_02014F08
+FUN_02014F08: ; 0x02014F08
+ push {r4, lr}
+ lsl r1, r1, #0x2
+ ldr r4, [r0, r1]
+ cmp r2, #0x1
+ beq _02014F16
+ bl ErrorHandling
+_02014F16:
+ add r0, r4, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02014F1C
+FUN_02014F1C: ; 0x02014F1C
+ ldr r3, _02014F24 ; =FUN_02014F08
+ add r2, r1, #0x0
+ mov r1, #0x0
+ bx r3
+ .balign 4
+_02014F24: .word FUN_02014F08
+
+ thumb_func_start FUN_02014F28
+FUN_02014F28: ; 0x02014F28
+ ldr r3, _02014F30 ; =0x02014F1D
+ mov r1, #0x1
+ bx r3
+ nop
+_02014F30: .word 0x02014F1D
+
+ thumb_func_start FUN_02014F34
+FUN_02014F34: ; 0x02014F34
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ mov r3, #0x0
+ add r0, #0x7c
+ mov r2, #0x54
+_02014F3E:
+ add r1, r3, #0x0
+ mul r1, r2
+ add r4, r0, r1
+ ldr r1, [r0, r1]
+ cmp r1, #0x0
+ bne _02014F68
+ add r0, r4, #0x0
+ mov r1, #0x0
+ mov r2, #0x54
+ blx MI_CpuFill8
+ mov r0, #0x1
+ str r0, [r4, #0x0]
+ mov r0, #0xc
+ add r1, r5, #0x0
+ mul r1, r0
+ ldr r0, _02014F7C ; =0x020ED668
+ ldr r0, [r0, r1]
+ str r0, [r4, #0x50]
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+_02014F68:
+ add r1, r3, #0x1
+ lsl r1, r1, #0x18
+ lsr r3, r1, #0x18
+ cmp r3, #0x4
+ blo _02014F3E
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ nop
+_02014F7C: .word 0x020ED668
+
+ thumb_func_start FUN_02014F80
+FUN_02014F80: ; 0x02014F80
+ push {r4, lr}
+ add r4, r1, #0x0
+ ldr r1, [r0, #0xc]
+ add r1, r1, #0x4
+ str r1, [r0, #0xc]
+ add r0, r1, #0x0
+ bl FUN_02014F28
+ str r0, [r4, #0x0]
+ pop {r4, pc}
+
+ thumb_func_start FUN_02014F94
+FUN_02014F94: ; 0x02014F94
+ push {r4, lr}
+ add r4, r1, #0x0
+ ldr r1, [r0, #0xc]
+ add r1, r1, #0x4
+ str r1, [r0, #0xc]
+ add r0, r1, #0x0
+ bl FUN_02014F28
+ strb r0, [r4, #0x0]
+ pop {r4, pc}
+
+ thumb_func_start FUN_02014FA8
+FUN_02014FA8: ; 0x02014FA8
+ push {r4, lr}
+ add r4, r1, #0x0
+ ldr r1, [r0, #0xc]
+ add r1, r1, #0x4
+ str r1, [r0, #0xc]
+ add r0, r1, #0x0
+ bl FUN_02014F28
+ strb r0, [r4, #0x0]
+ ldrb r0, [r4, #0x0]
+ cmp r0, #0x8
+ blo _02014FC4
+ bl ErrorHandling
+_02014FC4:
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02014FC8
+FUN_02014FC8: ; 0x02014FC8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r2, #0x0
+ bl FUN_02014FA8
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02014FA8
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02014FDC
+FUN_02014FDC: ; 0x02014FDC
+ push {r3-r6, lr}
+ sub sp, #0x4
+ add r5, r0, #0x0
+ add r4, r2, #0x0
+ add r6, r3, #0x0
+ bl FUN_02014FA8
+ add r0, r5, #0x0
+ add r1, sp, #0x0
+ bl FUN_02014F94
+ add r0, sp, #0x0
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x12
+ bne _0201501C
+ add r1, sp, #0x0
+ add r0, r5, #0x0
+ add r1, #0x2
+ bl FUN_02014FA8
+ add r0, sp, #0x0
+ ldrb r0, [r0, #0x2]
+ add r1, r6, #0x0
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ ldr r0, [r0, #0x24]
+ str r0, [r4, #0x0]
+ add r0, r5, #0x0
+ bl FUN_02014F80
+ add sp, #0x4
+ pop {r3-r6, pc}
+_0201501C:
+ cmp r0, #0x13
+ bne _02015048
+ add r1, sp, #0x0
+ add r2, sp, #0x0
+ add r0, r5, #0x0
+ add r1, #0x2
+ add r2, #0x1
+ bl FUN_02014FC8
+ add r0, sp, #0x0
+ ldrb r1, [r0, #0x2]
+ add sp, #0x4
+ lsl r1, r1, #0x2
+ add r1, r5, r1
+ ldr r1, [r1, #0x24]
+ str r1, [r4, #0x0]
+ ldrb r0, [r0, #0x1]
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ ldr r0, [r0, #0x24]
+ str r0, [r6, #0x0]
+ pop {r3-r6, pc}
+_02015048:
+ bl ErrorHandling
+ add sp, #0x4
+ pop {r3-r6, pc}
+
+ thumb_func_start FUN_02015050
+FUN_02015050: ; 0x02015050
+ push {r3-r6, lr}
+ sub sp, #0x4
+ add r5, r0, #0x0
+ add r4, r2, #0x0
+ add r6, r3, #0x0
+ bl FUN_02014FA8
+ add r1, sp, #0x0
+ add r0, r5, #0x0
+ add r1, #0x1
+ bl FUN_02014F94
+ add r0, r5, #0x0
+ add r1, sp, #0x0
+ bl FUN_02014F94
+ add r0, sp, #0x0
+ ldrb r0, [r0, #0x1]
+ cmp r0, #0x12
+ bne _02015082
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02014F80
+ b _020150A2
+_02015082:
+ cmp r0, #0x13
+ bne _0201509E
+ add r1, sp, #0x0
+ add r0, r5, #0x0
+ add r1, #0x3
+ bl FUN_02014FA8
+ add r0, sp, #0x0
+ ldrb r0, [r0, #0x3]
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ ldr r0, [r0, #0x24]
+ str r0, [r4, #0x0]
+ b _020150A2
+_0201509E:
+ bl ErrorHandling
+_020150A2:
+ add r0, sp, #0x0
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x12
+ bne _020150B6
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02014F80
+ add sp, #0x4
+ pop {r3-r6, pc}
+_020150B6:
+ cmp r0, #0x13
+ bne _020150D4
+ add r1, sp, #0x0
+ add r0, r5, #0x0
+ add r1, #0x2
+ bl FUN_02014FA8
+ add r0, sp, #0x0
+ ldrb r0, [r0, #0x2]
+ add sp, #0x4
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ ldr r0, [r0, #0x24]
+ str r0, [r6, #0x0]
+ pop {r3-r6, pc}
+_020150D4:
+ bl ErrorHandling
+ add sp, #0x4
+ pop {r3-r6, pc}
+
+ thumb_func_start FUN_020150DC
+FUN_020150DC: ; 0x020150DC
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r4, r2, #0x0
+ add r2, sp, #0x0
+ add r2, #0x3
+ add r5, r0, #0x0
+ add r6, r3, #0x0
+ bl FUN_02014FC8
+ add r0, sp, #0x0
+ ldrb r0, [r0, #0x3]
+ add r1, sp, #0x0
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ ldr r7, [r0, #0x24]
+ add r0, r5, #0x0
+ bl FUN_02014F94
+ add r0, sp, #0x0
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x14
+ bne _02015112
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02014F80
+ b _02015132
+_02015112:
+ cmp r0, #0x15
+ bne _0201512E
+ add r1, sp, #0x0
+ add r0, r5, #0x0
+ add r1, #0x2
+ bl FUN_02014FA8
+ add r0, sp, #0x0
+ ldrb r0, [r0, #0x2]
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ ldr r0, [r0, #0x24]
+ str r0, [r6, #0x0]
+ b _02015132
+_0201512E:
+ bl ErrorHandling
+_02015132:
+ add r0, r5, #0x0
+ add r1, sp, #0x0
+ bl FUN_02014F94
+ add r0, sp, #0x0
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x14
+ bne _0201514C
+ add r0, r5, #0x0
+ add r1, sp, #0x4
+ bl FUN_02014F80
+ b _0201516C
+_0201514C:
+ cmp r0, #0x15
+ bne _02015168
+ add r1, sp, #0x0
+ add r0, r5, #0x0
+ add r1, #0x1
+ bl FUN_02014FA8
+ add r0, sp, #0x0
+ ldrb r0, [r0, #0x1]
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ ldr r0, [r0, #0x24]
+ str r0, [sp, #0x4]
+ b _0201516C
+_02015168:
+ bl ErrorHandling
+_0201516C:
+ ldr r0, [sp, #0x4]
+ add r0, r7, r0
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x10
+ sub r1, r1, r2
+ mov r0, #0x10
+ ror r1, r0
+ add r0, r2, r1
+ str r0, [r4, #0x0]
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02015184
+FUN_02015184: ; 0x02015184
+ ldr r2, [r0, #0x0]
+ ldr r0, [r1, #0x0]
+ sub r0, r2, r0
+ bpl _02015190
+ mov r0, #0xf
+ bx lr
+_02015190:
+ cmp r0, #0x0
+ ble _02015198
+ mov r0, #0x10
+ bx lr
+_02015198:
+ mov r0, #0x11
+ bx lr
+
+ thumb_func_start FUN_0201519C
+FUN_0201519C: ; 0x0201519C
+ add r2, r0, #0x0
+ ldr r0, [r2, #0x0]
+ ldr r2, [r2, #0x74]
+ mov r1, #0x1
+ neg r3, r2
+ asr r2, r3, #0x2
+ lsr r2, r2, #0x1d
+ add r2, r3, r2
+ ldr r3, _020151B4 ; =FUN_020079E0
+ asr r2, r2, #0x3
+ bx r3
+ nop
+_020151B4: .word FUN_020079E0
+
+ thumb_func_start FUN_020151B8
+FUN_020151B8: ; 0x020151B8
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_020151D0
+ mov r0, #0x1
+ str r0, [r4, #0x18]
+ str r0, [r4, #0x1c]
+ pop {r4, pc}
+
+ thumb_func_start FUN_020151C8
+FUN_020151C8: ; 0x020151C8
+ mov r1, #0x1
+ str r1, [r0, #0x18]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020151D0
+FUN_020151D0: ; 0x020151D0
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ ldr r2, [r4, #0x58]
+ mov r1, #0x0
+ bl FUN_02007558
+ ldr r0, [r4, #0x0]
+ ldr r2, [r4, #0x5c]
+ mov r1, #0x1
+ bl FUN_02007558
+ ldr r0, [r4, #0x0]
+ mov r1, #0x9
+ mov r2, #0x0
+ bl FUN_02007558
+ ldr r0, [r4, #0x0]
+ mov r1, #0xa
+ mov r2, #0x0
+ bl FUN_02007558
+ mov r1, #0xc
+ add r2, r1, #0x0
+ ldr r0, [r4, #0x0]
+ add r2, #0xf4
+ bl FUN_02007558
+ mov r1, #0xd
+ add r2, r1, #0x0
+ ldr r0, [r4, #0x0]
+ add r2, #0xf3
+ bl FUN_02007558
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02015218
+FUN_02015218: ; 0x02015218
+ push {r3-r4, lr}
+ sub sp, #0x4
+ add r1, sp, #0x0
+ add r1, #0x1
+ add r2, sp, #0x0
+ add r4, r0, #0x0
+ bl FUN_02014FC8
+ add r0, sp, #0x0
+ ldrb r1, [r0, #0x0]
+ ldrb r0, [r0, #0x1]
+ lsl r1, r1, #0x2
+ add r1, r4, r1
+ lsl r0, r0, #0x2
+ ldr r1, [r1, #0x24]
+ add r0, r4, r0
+ str r1, [r0, #0x24]
+ add sp, #0x4
+ pop {r3-r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02015240
+FUN_02015240: ; 0x02015240
+ push {r3-r4, lr}
+ sub sp, #0xc
+ add r1, sp, #0x0
+ add r2, sp, #0x8
+ add r3, sp, #0x4
+ add r4, r0, #0x0
+ bl FUN_02014FDC
+ ldr r1, [sp, #0x8]
+ ldr r0, [sp, #0x4]
+ add r1, r1, r0
+ add r0, sp, #0x0
+ ldrb r0, [r0, #0x0]
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ str r1, [r0, #0x24]
+ add sp, #0xc
+ pop {r3-r4, pc}
+
+ thumb_func_start FUN_02015264
+FUN_02015264: ; 0x02015264
+ push {r3-r4, lr}
+ sub sp, #0xc
+ add r1, sp, #0x0
+ add r2, sp, #0x8
+ add r3, sp, #0x4
+ add r4, r0, #0x0
+ bl FUN_02014FDC
+ ldr r1, [sp, #0x8]
+ ldr r0, [sp, #0x4]
+ add r2, r1, #0x0
+ mul r2, r0
+ add r0, sp, #0x0
+ ldrb r0, [r0, #0x0]
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ str r2, [r0, #0x24]
+ add sp, #0xc
+ pop {r3-r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201528C
+FUN_0201528C: ; 0x0201528C
+ push {r3-r4, lr}
+ sub sp, #0xc
+ add r1, sp, #0x0
+ add r2, sp, #0x8
+ add r3, sp, #0x4
+ add r4, r0, #0x0
+ bl FUN_02015050
+ ldr r1, [sp, #0x8]
+ ldr r0, [sp, #0x4]
+ sub r1, r1, r0
+ add r0, sp, #0x0
+ ldrb r0, [r0, #0x0]
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ str r1, [r0, #0x24]
+ add sp, #0xc
+ pop {r3-r4, pc}
+
+ thumb_func_start FUN_020152B0
+FUN_020152B0: ; 0x020152B0
+ push {r3-r4, lr}
+ sub sp, #0xc
+ add r1, sp, #0x0
+ add r2, sp, #0x8
+ add r3, sp, #0x4
+ add r4, r0, #0x0
+ bl FUN_02015050
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0x4]
+ blx _s32_div_f
+ add r1, sp, #0x0
+ ldrb r1, [r1, #0x0]
+ lsl r1, r1, #0x2
+ add r1, r4, r1
+ str r0, [r1, #0x24]
+ add sp, #0xc
+ pop {r3-r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020152D8
+FUN_020152D8: ; 0x020152D8
+ push {r3-r4, lr}
+ sub sp, #0xc
+ add r1, sp, #0x0
+ add r2, sp, #0x8
+ add r3, sp, #0x4
+ add r4, r0, #0x0
+ bl FUN_02015050
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0x4]
+ blx _s32_div_f
+ add r0, sp, #0x0
+ ldrb r0, [r0, #0x0]
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ str r1, [r0, #0x24]
+ add sp, #0xc
+ pop {r3-r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02015300
+FUN_02015300: ; 0x02015300
+ push {r3-r5, lr}
+ sub sp, #0x10
+ add r1, sp, #0x0
+ add r5, r0, #0x0
+ bl FUN_02014F94
+ add r0, sp, #0x0
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x14
+ bne _02015334
+ add r1, sp, #0x0
+ add r0, r5, #0x0
+ add r1, #0x3
+ bl FUN_02014FA8
+ add r0, sp, #0x0
+ ldrb r0, [r0, #0x3]
+ add r1, sp, #0x8
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ ldr r0, [r0, #0x24]
+ str r0, [sp, #0xc]
+ add r0, r5, #0x0
+ bl FUN_02014F80
+ b _02015362
+_02015334:
+ cmp r0, #0x15
+ bne _0201535E
+ add r1, sp, #0x0
+ add r2, sp, #0x0
+ add r0, r5, #0x0
+ add r1, #0x3
+ add r2, #0x2
+ bl FUN_02014FC8
+ add r0, sp, #0x0
+ ldrb r1, [r0, #0x3]
+ lsl r1, r1, #0x2
+ add r1, r5, r1
+ ldr r1, [r1, #0x24]
+ str r1, [sp, #0xc]
+ ldrb r0, [r0, #0x2]
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ ldr r0, [r0, #0x24]
+ str r0, [sp, #0x8]
+ b _02015362
+_0201535E:
+ bl ErrorHandling
+_02015362:
+ add r1, sp, #0x0
+ add r0, r5, #0x0
+ add r1, #0x1
+ bl FUN_02014F94
+ add r0, sp, #0x0
+ ldrb r0, [r0, #0x1]
+ cmp r0, #0x11
+ bls _02015378
+ bl ErrorHandling
+_02015378:
+ add r0, sp, #0xc
+ add r1, sp, #0x8
+ bl FUN_02015184
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r1, sp, #0x0
+ bl FUN_02014F94
+ add r0, sp, #0x0
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x14
+ bne _020153A6
+ add r1, sp, #0x0
+ add r0, r5, #0x0
+ add r1, #0x3
+ bl FUN_02014FA8
+ add r0, r5, #0x0
+ add r1, sp, #0x4
+ bl FUN_02014F80
+ b _020153CA
+_020153A6:
+ cmp r0, #0x15
+ bne _020153C6
+ add r1, sp, #0x0
+ add r2, sp, #0x0
+ add r0, r5, #0x0
+ add r1, #0x3
+ add r2, #0x2
+ bl FUN_02014FC8
+ add r0, sp, #0x0
+ ldrb r0, [r0, #0x2]
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ ldr r0, [r0, #0x24]
+ str r0, [sp, #0x4]
+ b _020153CA
+_020153C6:
+ bl ErrorHandling
+_020153CA:
+ add r0, sp, #0x0
+ ldrb r1, [r0, #0x1]
+ cmp r1, r4
+ bne _020153DC
+ ldrb r0, [r0, #0x3]
+ ldr r1, [sp, #0x4]
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ str r1, [r0, #0x24]
+_020153DC:
+ add sp, #0x10
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_020153E0
+FUN_020153E0: ; 0x020153E0
+ push {r3-r4, lr}
+ sub sp, #0x4
+ add r4, r0, #0x0
+ add r1, sp, #0x0
+ bl FUN_02014FA8
+ ldr r0, [r4, #0xc]
+ add r0, r0, #0x4
+ str r0, [r4, #0xc]
+ bl FUN_02014F28
+ add r1, sp, #0x0
+ ldrb r1, [r1, #0x0]
+ lsl r1, r1, #0x2
+ add r1, r4, r1
+ str r0, [r1, #0x24]
+ add sp, #0x4
+ pop {r3-r4, pc}
+
+ thumb_func_start FUN_02015404
+FUN_02015404: ; 0x02015404
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x50]
+ cmp r0, #0x0
+ beq _02015412
+ bl ErrorHandling
+_02015412:
+ ldr r0, [r4, #0xc]
+ add r0, r0, #0x4
+ str r0, [r4, #0xc]
+ str r0, [r4, #0x50]
+ ldr r0, [r4, #0xc]
+ bl FUN_02014F28
+ str r0, [r4, #0x48]
+ mov r0, #0x0
+ str r0, [r4, #0x4c]
+ pop {r4, pc}
+
+ thumb_func_start FUN_02015428
+FUN_02015428: ; 0x02015428
+ ldr r1, [r0, #0x4c]
+ add r2, r1, #0x1
+ str r2, [r0, #0x4c]
+ ldr r1, [r0, #0x48]
+ cmp r2, r1
+ blt _0201543E
+ mov r1, #0x0
+ str r1, [r0, #0x50]
+ str r1, [r0, #0x4c]
+ str r1, [r0, #0x48]
+ bx lr
+_0201543E:
+ ldr r1, [r0, #0x50]
+ str r1, [r0, #0xc]
+ bx lr
+
+ thumb_func_start FUN_02015444
+FUN_02015444: ; 0x02015444
+ push {r4, lr}
+ sub sp, #0x8
+ add r4, r0, #0x0
+ add r1, sp, #0x4
+ bl FUN_02014F80
+ add r0, r4, #0x0
+ add r1, sp, #0x0
+ bl FUN_02014FA8
+ add r2, sp, #0x0
+ ldrb r2, [r2, #0x0]
+ ldr r0, [r4, #0x0]
+ ldr r1, [sp, #0x4]
+ lsl r2, r2, #0x2
+ add r2, r4, r2
+ ldr r2, [r2, #0x24]
+ bl FUN_02007558
+ add sp, #0x8
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02015470
+FUN_02015470: ; 0x02015470
+ push {r4, lr}
+ sub sp, #0x8
+ add r4, r0, #0x0
+ add r1, sp, #0x4
+ bl FUN_02014F80
+ add r0, r4, #0x0
+ add r1, sp, #0x0
+ bl FUN_02014FA8
+ add r2, sp, #0x0
+ ldrb r2, [r2, #0x0]
+ ldr r0, [r4, #0x0]
+ ldr r1, [sp, #0x4]
+ lsl r2, r2, #0x2
+ add r2, r4, r2
+ ldr r2, [r2, #0x24]
+ bl FUN_020079E0
+ add sp, #0x8
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201549C
+FUN_0201549C: ; 0x0201549C
+ push {r3-r4, lr}
+ sub sp, #0xc
+ add r1, sp, #0x8
+ add r4, r0, #0x0
+ bl FUN_02014F80
+ add r1, sp, #0x0
+ add r0, r4, #0x0
+ add r1, #0x1
+ bl FUN_02014F94
+ add r0, sp, #0x0
+ ldrb r0, [r0, #0x1]
+ cmp r0, #0x14
+ bne _020154C4
+ add r0, r4, #0x0
+ add r1, sp, #0x4
+ bl FUN_02014F80
+ b _020154E4
+_020154C4:
+ cmp r0, #0x15
+ bne _020154E0
+ add r1, sp, #0x0
+ add r0, r4, #0x0
+ add r1, #0x2
+ bl FUN_02014FA8
+ add r0, sp, #0x0
+ ldrb r0, [r0, #0x2]
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ ldr r0, [r0, #0x24]
+ str r0, [sp, #0x4]
+ b _020154E4
+_020154E0:
+ bl ErrorHandling
+_020154E4:
+ add r0, r4, #0x0
+ add r1, sp, #0x0
+ bl FUN_02014F94
+ add r0, sp, #0x0
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x16
+ bne _02015502
+ ldr r0, [r4, #0x0]
+ ldr r1, [sp, #0x8]
+ ldr r2, [sp, #0x4]
+ bl FUN_02007558
+ add sp, #0xc
+ pop {r3-r4, pc}
+_02015502:
+ cmp r0, #0x17
+ bne _02015514
+ ldr r0, [r4, #0x0]
+ ldr r1, [sp, #0x8]
+ ldr r2, [sp, #0x4]
+ bl FUN_020079E0
+ add sp, #0xc
+ pop {r3-r4, pc}
+_02015514:
+ bl ErrorHandling
+ add sp, #0xc
+ pop {r3-r4, pc}
+
+ thumb_func_start FUN_0201551C
+FUN_0201551C: ; 0x0201551C
+ push {r3-r4, lr}
+ sub sp, #0xc
+ add r1, sp, #0x0
+ add r2, sp, #0x8
+ add r3, sp, #0x4
+ add r4, r0, #0x0
+ bl FUN_020150DC
+ ldr r0, [sp, #0x8]
+ ldr r2, [sp, #0x4]
+ asr r0, r0, #0x4
+ lsl r1, r0, #0x2
+ ldr r0, _0201554C ; =0x020FFA38
+ ldrsh r0, [r0, r1]
+ mul r0, r2
+ asr r1, r0, #0xc
+ add r0, sp, #0x0
+ ldrb r0, [r0, #0x0]
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ str r1, [r0, #0x24]
+ add sp, #0xc
+ pop {r3-r4, pc}
+ nop
+_0201554C: .word 0x020FFA38
+
+ thumb_func_start FUN_02015550
+FUN_02015550: ; 0x02015550
+ push {r3-r4, lr}
+ sub sp, #0xc
+ add r1, sp, #0x0
+ add r2, sp, #0x8
+ add r3, sp, #0x4
+ add r4, r0, #0x0
+ bl FUN_020150DC
+ ldr r1, [sp, #0x8]
+ ldr r0, [sp, #0x4]
+ asr r1, r1, #0x4
+ lsl r1, r1, #0x1
+ add r1, r1, #0x1
+ lsl r2, r1, #0x1
+ ldr r1, _02015584 ; =0x020FFA38
+ ldrsh r1, [r1, r2]
+ mul r1, r0
+ add r0, sp, #0x0
+ ldrb r0, [r0, #0x0]
+ asr r1, r1, #0xc
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ str r1, [r0, #0x24]
+ add sp, #0xc
+ pop {r3-r4, pc}
+ nop
+_02015584: .word 0x020FFA38
+
+ thumb_func_start FUN_02015588
+FUN_02015588: ; 0x02015588
+ push {r3-r4, lr}
+ sub sp, #0x4
+ add r1, sp, #0x0
+ add r4, r0, #0x0
+ add r1, #0x1
+ bl FUN_02014FA8
+ add r0, r4, #0x0
+ add r1, sp, #0x0
+ bl FUN_02014F94
+ add r0, sp, #0x0
+ ldrb r1, [r0, #0x0]
+ cmp r1, #0x8
+ bne _020155B4
+ ldrb r0, [r0, #0x1]
+ add sp, #0x4
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ ldr r0, [r0, #0x24]
+ str r0, [r4, #0x60]
+ pop {r3-r4, pc}
+_020155B4:
+ cmp r1, #0x9
+ bne _020155C6
+ ldrb r0, [r0, #0x1]
+ add sp, #0x4
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ ldr r0, [r0, #0x24]
+ str r0, [r4, #0x64]
+ pop {r3-r4, pc}
+_020155C6:
+ bl ErrorHandling
+ add sp, #0x4
+ pop {r3-r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020155D0
+FUN_020155D0: ; 0x020155D0
+ push {r3-r4, lr}
+ sub sp, #0x4
+ add r1, sp, #0x0
+ add r4, r0, #0x0
+ add r1, #0x1
+ bl FUN_02014FA8
+ add r0, r4, #0x0
+ add r1, sp, #0x0
+ bl FUN_02014F94
+ add r0, sp, #0x0
+ ldrb r1, [r0, #0x0]
+ cmp r1, #0x8
+ bne _02015600
+ ldrb r0, [r0, #0x1]
+ ldr r1, [r4, #0x60]
+ add sp, #0x4
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ ldr r0, [r0, #0x24]
+ add r0, r1, r0
+ str r0, [r4, #0x60]
+ pop {r3-r4, pc}
+_02015600:
+ cmp r1, #0x9
+ bne _02015616
+ ldrb r0, [r0, #0x1]
+ ldr r1, [r4, #0x64]
+ add sp, #0x4
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ ldr r0, [r0, #0x24]
+ add r0, r1, r0
+ str r0, [r4, #0x64]
+ pop {r3-r4, pc}
+_02015616:
+ bl ErrorHandling
+ add sp, #0x4
+ pop {r3-r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02015620
+FUN_02015620: ; 0x02015620
+ push {r3-r5, lr}
+ sub sp, #0x8
+ add r1, sp, #0x0
+ add r1, #0x3
+ add r5, r0, #0x0
+ bl FUN_02014F94
+ add r0, sp, #0x0
+ ldrb r0, [r0, #0x3]
+ cmp r0, #0x8
+ bne _0201563C
+ add r4, r5, #0x0
+ add r4, #0x60
+ b _0201567C
+_0201563C:
+ cmp r0, #0x9
+ bne _02015646
+ add r4, r5, #0x0
+ add r4, #0x64
+ b _0201567C
+_02015646:
+ cmp r0, #0xa
+ bne _02015650
+ add r4, r5, #0x0
+ add r4, #0x68
+ b _0201567C
+_02015650:
+ cmp r0, #0xb
+ bne _0201565A
+ add r4, r5, #0x0
+ add r4, #0x6c
+ b _0201567C
+_0201565A:
+ cmp r0, #0xc
+ bne _02015664
+ add r4, r5, #0x0
+ add r4, #0x70
+ b _0201567C
+_02015664:
+ cmp r0, #0xd
+ bne _0201566E
+ add r4, r5, #0x0
+ add r4, #0x74
+ b _0201567C
+_0201566E:
+ cmp r0, #0xe
+ bne _02015678
+ add r4, r5, #0x0
+ add r4, #0x78
+ b _0201567C
+_02015678:
+ bl ErrorHandling
+_0201567C:
+ add r1, sp, #0x0
+ add r0, r5, #0x0
+ add r1, #0x1
+ bl FUN_02014F94
+ add r0, sp, #0x0
+ ldrb r0, [r0, #0x1]
+ cmp r0, #0x14
+ bne _02015698
+ add r0, r5, #0x0
+ add r1, sp, #0x4
+ bl FUN_02014F80
+ b _020156B8
+_02015698:
+ cmp r0, #0x15
+ bne _020156B4
+ add r1, sp, #0x0
+ add r0, r5, #0x0
+ add r1, #0x2
+ bl FUN_02014FA8
+ add r0, sp, #0x0
+ ldrb r0, [r0, #0x2]
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ ldr r0, [r0, #0x24]
+ str r0, [sp, #0x4]
+ b _020156B8
+_020156B4:
+ bl ErrorHandling
+_020156B8:
+ add r0, r5, #0x0
+ add r1, sp, #0x0
+ bl FUN_02014F94
+ add r0, sp, #0x0
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x16
+ bne _020156D0
+ ldr r0, [sp, #0x4]
+ add sp, #0x8
+ str r0, [r4, #0x0]
+ pop {r3-r5, pc}
+_020156D0:
+ cmp r0, #0x17
+ bne _020156E0
+ ldr r0, [sp, #0x4]
+ ldr r1, [r4, #0x0]
+ add sp, #0x8
+ add r0, r1, r0
+ str r0, [r4, #0x0]
+ pop {r3-r5, pc}
+_020156E0:
+ bl ErrorHandling
+ add sp, #0x8
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_020156E8
+FUN_020156E8: ; 0x020156E8
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ mov r0, #0x73
+ lsl r0, r0, #0x2
+ ldrb r0, [r4, r0]
+ cmp r0, #0x0
+ ldr r0, [r4, #0x0]
+ beq _0201570A
+ ldr r3, [r4, #0x60]
+ ldr r2, [r4, #0x68]
+ ldr r5, [r4, #0x58]
+ add r2, r3, r2
+ mov r1, #0x0
+ sub r2, r5, r2
+ bl FUN_02007558
+ b _0201571A
+_0201570A:
+ ldr r3, [r4, #0x58]
+ ldr r2, [r4, #0x60]
+ ldr r5, [r4, #0x68]
+ add r2, r3, r2
+ mov r1, #0x0
+ add r2, r5, r2
+ bl FUN_02007558
+_0201571A:
+ ldr r3, [r4, #0x5c]
+ ldr r2, [r4, #0x64]
+ ldr r5, [r4, #0x6c]
+ add r2, r3, r2
+ ldr r0, [r4, #0x0]
+ mov r1, #0x1
+ add r2, r5, r2
+ bl FUN_02007558
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02015730
+FUN_02015730: ; 0x02015730
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r1, #0xc
+ add r2, r1, #0x0
+ ldr r3, [r4, #0x70]
+ add r2, #0xf4
+ ldr r0, [r4, #0x0]
+ add r2, r3, r2
+ bl FUN_02007558
+ mov r1, #0xd
+ add r2, r1, #0x0
+ ldr r3, [r4, #0x74]
+ add r2, #0xf3
+ ldr r0, [r4, #0x0]
+ add r2, r3, r2
+ bl FUN_02007558
+ ldr r2, [r4, #0x78]
+ ldr r0, [r4, #0x0]
+ lsl r2, r2, #0x10
+ mov r1, #0x9
+ lsr r2, r2, #0x10
+ bl FUN_02007558
+ ldr r0, _02015794 ; =0x000001CE
+ ldrb r0, [r4, r0]
+ cmp r0, #0x1b
+ bne _02015778
+ ldr r0, [r4, #0x74]
+ cmp r0, #0x0
+ bge _02015792
+ add r0, r4, #0x0
+ bl FUN_0201519C
+ pop {r4, pc}
+_02015778:
+ cmp r0, #0x1d
+ bne _0201578A
+ ldr r0, [r4, #0x74]
+ cmp r0, #0x0
+ beq _02015792
+ add r0, r4, #0x0
+ bl FUN_0201519C
+ pop {r4, pc}
+_0201578A:
+ cmp r0, #0x1c
+ beq _02015792
+ bl ErrorHandling
+_02015792:
+ pop {r4, pc}
+ .balign 4
+_02015794: .word 0x000001CE
+
+ thumb_func_start FUN_02015798
+FUN_02015798: ; 0x02015798
+ push {r3-r4, lr}
+ sub sp, #0x4
+ add r4, r0, #0x0
+ add r1, sp, #0x0
+ bl FUN_02014FA8
+ ldr r0, [r4, #0xc]
+ add r0, r0, #0x4
+ str r0, [r4, #0xc]
+ bl FUN_02014F28
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x8
+ beq _020157BA
+ cmp r0, #0xa
+ bne _020157CA
+_020157BA:
+ add r0, sp, #0x0
+ ldrb r0, [r0, #0x0]
+ add sp, #0x4
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ ldr r0, [r0, #0x24]
+ str r0, [r4, #0x68]
+ pop {r3-r4, pc}
+_020157CA:
+ cmp r0, #0x9
+ beq _020157D2
+ cmp r0, #0xb
+ bne _020157E2
+_020157D2:
+ add r0, sp, #0x0
+ ldrb r0, [r0, #0x0]
+ add sp, #0x4
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ ldr r0, [r0, #0x24]
+ str r0, [r4, #0x6c]
+ pop {r3-r4, pc}
+_020157E2:
+ bl ErrorHandling
+ add sp, #0x4
+ pop {r3-r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020157EC
+FUN_020157EC: ; 0x020157EC
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r1, r4, #0x0
+ add r1, #0x54
+ bl FUN_02014F80
+ mov r0, #0x1
+ str r0, [r4, #0x18]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02015800
+FUN_02015800: ; 0x02015800
+ push {r3-r4, lr}
+ sub sp, #0xc
+ add r1, sp, #0x4
+ add r1, #0x2
+ add r4, r0, #0x0
+ bl FUN_02014F94
+ add r1, sp, #0x4
+ add r0, r4, #0x0
+ add r1, #0x1
+ bl FUN_02014F94
+ add r0, r4, #0x0
+ add r1, sp, #0x4
+ bl FUN_02014F94
+ add r0, r4, #0x0
+ add r1, sp, #0x8
+ bl FUN_02014F80
+ ldr r0, [sp, #0x8]
+ add r3, sp, #0x4
+ str r0, [sp, #0x0]
+ ldrb r1, [r3, #0x2]
+ ldrb r2, [r3, #0x1]
+ ldrb r3, [r3, #0x0]
+ ldr r0, [r4, #0x0]
+ bl FUN_02007E68
+ add sp, #0xc
+ pop {r3-r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02015840
+FUN_02015840: ; 0x02015840
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_02007F20
+ cmp r0, #0x0
+ beq _02015856
+ ldr r0, _02015858 ; =0x000001CF
+ mov r1, #0x1
+ strb r1, [r4, r0]
+ str r1, [r4, #0x18]
+_02015856:
+ pop {r4, pc}
+ .balign 4
+_02015858: .word 0x000001CF
+
+ thumb_func_start FUN_0201585C
+FUN_0201585C: ; 0x0201585C
+ ldr r1, _02015864 ; =0x000001CD
+ mov r2, #0x1
+ strb r2, [r0, r1]
+ bx lr
+ .balign 4
+_02015864: .word 0x000001CD
+
+ thumb_func_start FUN_02015868
+FUN_02015868: ; 0x02015868
+ push {r4, lr}
+ ldr r1, _0201589C ; =0x000001CE
+ add r4, r0, #0x0
+ add r1, r4, r1
+ bl FUN_02014F94
+ ldr r0, _0201589C ; =0x000001CE
+ mov r1, #0x1
+ ldrb r0, [r4, r0]
+ add r2, r1, #0x0
+ cmp r0, #0x1b
+ beq _02015886
+ cmp r0, #0x1d
+ beq _02015886
+ mov r2, #0x0
+_02015886:
+ cmp r2, #0x0
+ bne _02015890
+ cmp r0, #0x1c
+ beq _02015890
+ mov r1, #0x0
+_02015890:
+ cmp r1, #0x0
+ bne _02015898
+ bl ErrorHandling
+_02015898:
+ pop {r4, pc}
+ nop
+_0201589C: .word 0x000001CE
+
+ thumb_func_start FUN_020158A0
+FUN_020158A0: ; 0x020158A0
+ ldr r3, _020158A8 ; =FUN_0201598C
+ mov r1, #0x0
+ bx r3
+ nop
+_020158A8: .word FUN_0201598C
+
+ thumb_func_start FUN_020158AC
+FUN_020158AC: ; 0x020158AC
+ ldr r3, _020158B4 ; =FUN_0201598C
+ mov r1, #0x1
+ bx r3
+ nop
+_020158B4: .word FUN_0201598C
+
+ thumb_func_start FUN_020158B8
+FUN_020158B8: ; 0x020158B8
+ ldr r3, _020158C0 ; =FUN_0201598C
+ mov r1, #0x2
+ bx r3
+ nop
+_020158C0: .word FUN_0201598C
+
+ thumb_func_start FUN_020158C4
+FUN_020158C4: ; 0x020158C4
+ ldr r3, _020158CC ; =FUN_0201598C
+ mov r1, #0x3
+ bx r3
+ nop
+_020158CC: .word FUN_0201598C
+
+ thumb_func_start FUN_020158D0
+FUN_020158D0: ; 0x020158D0
+ ldr r3, _020158D8 ; =FUN_0201598C
+ mov r1, #0x4
+ bx r3
+ nop
+_020158D8: .word FUN_0201598C
+
+ thumb_func_start FUN_020158DC
+FUN_020158DC: ; 0x020158DC
+ push {r3, lr}
+ cmp r0, #0x18
+ bne _020158E8
+ ldr r0, [r2, #0x0]
+ str r0, [r3, #0x0]
+ pop {r3, pc}
+_020158E8:
+ cmp r0, #0x19
+ bne _020158F6
+ ldr r1, [r1, #0x0]
+ ldr r0, [r2, #0x0]
+ add r0, r1, r0
+ str r0, [r3, #0x0]
+ pop {r3, pc}
+_020158F6:
+ cmp r0, #0x1a
+ bne _02015904
+ ldr r1, [r3, #0x0]
+ ldr r0, [r2, #0x0]
+ add r0, r1, r0
+ str r0, [r3, #0x0]
+ pop {r3, pc}
+_02015904:
+ bl ErrorHandling
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201590C
+FUN_0201590C: ; 0x0201590C
+ push {r3, lr}
+ sub r0, #0x23
+ cmp r0, #0x4
+ bhi _02015984
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02015920: ; jump table (using 16-bit offset)
+ .short _0201592A - _02015920 - 2; case 0
+ .short _0201593C - _02015920 - 2; case 1
+ .short _0201594E - _02015920 - 2; case 2
+ .short _02015960 - _02015920 - 2; case 3
+ .short _02015972 - _02015920 - 2; case 4
+_0201592A:
+ add r0, r1, #0x0
+ add r0, #0x3c
+ str r0, [r1, #0x24]
+ add r0, r2, #0x0
+ add r0, #0x68
+ str r0, [r1, #0x28]
+ ldr r0, [r2, #0x68]
+ str r0, [r1, #0x30]
+ pop {r3, pc}
+_0201593C:
+ add r0, r1, #0x0
+ add r0, #0x40
+ str r0, [r1, #0x24]
+ add r0, r2, #0x0
+ add r0, #0x6c
+ str r0, [r1, #0x28]
+ ldr r0, [r2, #0x6c]
+ str r0, [r1, #0x30]
+ pop {r3, pc}
+_0201594E:
+ add r0, r1, #0x0
+ add r0, #0x44
+ str r0, [r1, #0x24]
+ add r0, r2, #0x0
+ add r0, #0x70
+ str r0, [r1, #0x28]
+ ldr r0, [r2, #0x70]
+ str r0, [r1, #0x30]
+ pop {r3, pc}
+_02015960:
+ add r0, r1, #0x0
+ add r0, #0x48
+ str r0, [r1, #0x24]
+ add r0, r2, #0x0
+ add r0, #0x74
+ str r0, [r1, #0x28]
+ ldr r0, [r2, #0x74]
+ str r0, [r1, #0x30]
+ pop {r3, pc}
+_02015972:
+ add r0, r1, #0x0
+ add r0, #0x4c
+ str r0, [r1, #0x24]
+ add r0, r2, #0x0
+ add r0, #0x78
+ str r0, [r1, #0x28]
+ ldr r0, [r2, #0x78]
+ str r0, [r1, #0x30]
+ pop {r3, pc}
+_02015984:
+ bl ErrorHandling
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201598C
+FUN_0201598C: ; 0x0201598C
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r6, r1, #0x0
+ lsl r1, r6, #0x18
+ lsr r1, r1, #0x18
+ add r5, r0, #0x0
+ bl FUN_02014F34
+ str r0, [sp, #0x4]
+ ldr r1, [sp, #0x4]
+ add r0, r5, #0x0
+ add r1, #0x2c
+ bl FUN_02014F94
+ ldr r1, [sp, #0x4]
+ add r0, r5, #0x0
+ add r1, #0x2d
+ bl FUN_02014F94
+ mov r0, #0xc
+ mul r0, r6
+ ldr r1, _02015A28 ; =0x020ED66C
+ str r0, [sp, #0x0]
+ ldr r0, [r1, r0]
+ mov r4, #0x0
+ cmp r0, #0x0
+ ble _020159E2
+ ldr r1, _02015A2C ; =0x020ED668
+ ldr r0, [sp, #0x0]
+ add r6, r1, r0
+ ldr r0, [sp, #0x4]
+ add r7, r0, #0x4
+_020159CC:
+ lsl r1, r4, #0x2
+ add r0, r5, #0x0
+ add r1, r7, r1
+ bl FUN_02014F80
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ ldr r0, [r6, #0x4]
+ cmp r4, r0
+ blt _020159CC
+_020159E2:
+ ldr r1, _02015A30 ; =0x020ED670
+ ldr r0, [sp, #0x0]
+ add r2, r5, #0x0
+ ldr r0, [r1, r0]
+ lsl r1, r0, #0x2
+ ldr r0, [sp, #0x4]
+ add r0, r0, r1
+ ldr r0, [r0, #0x4]
+ ldr r1, [sp, #0x4]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201590C
+ ldr r0, [sp, #0x4]
+ add r0, #0x2d
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _02015A14
+ ldr r0, [sp, #0x4]
+ add r1, r5, #0x0
+ add r2, r0, #0x0
+ ldr r2, [r2, #0x50]
+ blx r2
+ add sp, #0x8
+ pop {r3-r7, pc}
+_02015A14:
+ ldr r0, [sp, #0x4]
+ add r0, #0x2d
+ ldrb r0, [r0, #0x0]
+ sub r1, r0, #0x1
+ ldr r0, [sp, #0x4]
+ add r0, #0x2d
+ str r0, [sp, #0x4]
+ strb r1, [r0, #0x0]
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+_02015A28: .word 0x020ED66C
+_02015A2C: .word 0x020ED668
+_02015A30: .word 0x020ED670
+
+ thumb_func_start FUN_02015A34
+FUN_02015A34: ; 0x02015A34
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x1c]
+ ldr r1, [r4, #0x10]
+ add r0, r0, #0x1
+ ldr r2, [r4, #0x14]
+ mul r0, r1
+ add r0, r2, r0
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ ldr r0, [r4, #0x4]
+ sub r0, #0x1e
+ cmp r0, #0x3
+ bhi _02015AC0
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02015A5C: ; jump table (using 16-bit offset)
+ .short _02015A64 - _02015A5C - 2; case 0
+ .short _02015A78 - _02015A5C - 2; case 1
+ .short _02015A90 - _02015A5C - 2; case 2
+ .short _02015AA6 - _02015A5C - 2; case 3
+_02015A64:
+ asr r0, r1, #0x4
+ lsl r1, r0, #0x2
+ ldr r0, _02015AE8 ; =0x020FFA38
+ ldr r2, [r4, #0xc]
+ ldrsh r0, [r0, r1]
+ mul r0, r2
+ asr r1, r0, #0xc
+ ldr r0, [r4, #0x24]
+ str r1, [r0, #0x0]
+ b _02015AC4
+_02015A78:
+ asr r1, r1, #0x4
+ lsl r1, r1, #0x1
+ add r1, r1, #0x1
+ lsl r2, r1, #0x1
+ ldr r1, _02015AE8 ; =0x020FFA38
+ ldr r0, [r4, #0xc]
+ ldrsh r1, [r1, r2]
+ mul r1, r0
+ ldr r0, [r4, #0x24]
+ asr r1, r1, #0xc
+ str r1, [r0, #0x0]
+ b _02015AC4
+_02015A90:
+ asr r0, r1, #0x4
+ lsl r1, r0, #0x2
+ ldr r0, _02015AE8 ; =0x020FFA38
+ ldr r2, [r4, #0xc]
+ ldrsh r0, [r0, r1]
+ mul r0, r2
+ asr r0, r0, #0xc
+ neg r1, r0
+ ldr r0, [r4, #0x24]
+ str r1, [r0, #0x0]
+ b _02015AC4
+_02015AA6:
+ asr r1, r1, #0x4
+ lsl r1, r1, #0x1
+ add r1, r1, #0x1
+ lsl r2, r1, #0x1
+ ldr r1, _02015AE8 ; =0x020FFA38
+ ldr r0, [r4, #0xc]
+ ldrsh r1, [r1, r2]
+ mul r1, r0
+ asr r0, r1, #0xc
+ neg r1, r0
+ ldr r0, [r4, #0x24]
+ str r1, [r0, #0x0]
+ b _02015AC4
+_02015AC0:
+ bl ErrorHandling
+_02015AC4:
+ add r0, r4, #0x0
+ add r0, #0x2c
+ ldrb r0, [r0, #0x0]
+ add r1, r4, #0x0
+ ldr r2, [r4, #0x24]
+ ldr r3, [r4, #0x28]
+ add r1, #0x30
+ bl FUN_020158DC
+ ldr r0, [r4, #0x1c]
+ add r1, r0, #0x1
+ str r1, [r4, #0x1c]
+ ldr r0, [r4, #0x18]
+ cmp r1, r0
+ blt _02015AE6
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+_02015AE6:
+ pop {r4, pc}
+ .balign 4
+_02015AE8: .word 0x020FFA38
+
+ thumb_func_start FUN_02015AEC
+FUN_02015AEC: ; 0x02015AEC
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x1c]
+ ldr r1, [r4, #0x10]
+ add r0, r0, #0x1
+ mul r0, r1
+ ldr r1, [r4, #0x18]
+ blx _s32_div_f
+ ldr r1, [r4, #0x14]
+ add r0, r1, r0
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ ldr r0, [r4, #0x4]
+ sub r0, #0x1e
+ cmp r0, #0x3
+ bhi _02015B7E
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02015B1A: ; jump table (using 16-bit offset)
+ .short _02015B22 - _02015B1A - 2; case 0
+ .short _02015B36 - _02015B1A - 2; case 1
+ .short _02015B4E - _02015B1A - 2; case 2
+ .short _02015B64 - _02015B1A - 2; case 3
+_02015B22:
+ asr r0, r1, #0x4
+ lsl r1, r0, #0x2
+ ldr r0, _02015BA8 ; =0x020FFA38
+ ldr r2, [r4, #0xc]
+ ldrsh r0, [r0, r1]
+ mul r0, r2
+ asr r1, r0, #0xc
+ ldr r0, [r4, #0x24]
+ str r1, [r0, #0x0]
+ b _02015B82
+_02015B36:
+ asr r1, r1, #0x4
+ lsl r1, r1, #0x1
+ add r1, r1, #0x1
+ lsl r2, r1, #0x1
+ ldr r1, _02015BA8 ; =0x020FFA38
+ ldr r0, [r4, #0xc]
+ ldrsh r1, [r1, r2]
+ mul r1, r0
+ ldr r0, [r4, #0x24]
+ asr r1, r1, #0xc
+ str r1, [r0, #0x0]
+ b _02015B82
+_02015B4E:
+ asr r0, r1, #0x4
+ lsl r1, r0, #0x2
+ ldr r0, _02015BA8 ; =0x020FFA38
+ ldr r2, [r4, #0xc]
+ ldrsh r0, [r0, r1]
+ mul r0, r2
+ asr r0, r0, #0xc
+ neg r1, r0
+ ldr r0, [r4, #0x24]
+ str r1, [r0, #0x0]
+ b _02015B82
+_02015B64:
+ asr r1, r1, #0x4
+ lsl r1, r1, #0x1
+ add r1, r1, #0x1
+ lsl r2, r1, #0x1
+ ldr r1, _02015BA8 ; =0x020FFA38
+ ldr r0, [r4, #0xc]
+ ldrsh r1, [r1, r2]
+ mul r1, r0
+ asr r0, r1, #0xc
+ neg r1, r0
+ ldr r0, [r4, #0x24]
+ str r1, [r0, #0x0]
+ b _02015B82
+_02015B7E:
+ bl ErrorHandling
+_02015B82:
+ add r0, r4, #0x0
+ add r0, #0x2c
+ ldrb r0, [r0, #0x0]
+ add r1, r4, #0x0
+ ldr r2, [r4, #0x24]
+ ldr r3, [r4, #0x28]
+ add r1, #0x30
+ bl FUN_020158DC
+ ldr r0, [r4, #0x1c]
+ add r1, r0, #0x1
+ str r1, [r4, #0x1c]
+ ldr r0, [r4, #0x18]
+ cmp r1, r0
+ blt _02015BA4
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+_02015BA4:
+ pop {r4, pc}
+ nop
+_02015BA8: .word 0x020FFA38
+
+ thumb_func_start FUN_02015BAC
+FUN_02015BAC: ; 0x02015BAC
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x24]
+ ldr r3, [r4, #0xc]
+ ldr r2, [r4, #0x14]
+ ldr r5, [r4, #0x8]
+ mul r2, r3
+ ldr r0, [r1, #0x0]
+ add r2, r5, r2
+ add r0, r0, r2
+ str r0, [r1, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x2c
+ add r1, r4, #0x0
+ ldrb r0, [r0, #0x0]
+ ldr r2, [r4, #0x24]
+ ldr r3, [r4, #0x28]
+ add r1, #0x30
+ bl FUN_020158DC
+ ldr r0, [r4, #0x14]
+ add r1, r0, #0x1
+ str r1, [r4, #0x14]
+ ldr r0, [r4, #0x10]
+ cmp r1, r0
+ blt _02015BE4
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+_02015BE4:
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02015BE8
+FUN_02015BE8: ; 0x02015BE8
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x10]
+ add r1, r0, #0x1
+ ldr r0, [r4, #0x8]
+ mul r0, r1
+ ldr r1, [r4, #0xc]
+ blx _s32_div_f
+ ldr r1, [r4, #0x24]
+ str r0, [r1, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x2c
+ add r1, r4, #0x0
+ ldrb r0, [r0, #0x0]
+ ldr r2, [r4, #0x24]
+ ldr r3, [r4, #0x28]
+ add r1, #0x30
+ bl FUN_020158DC
+ ldr r0, [r4, #0x10]
+ add r1, r0, #0x1
+ str r1, [r4, #0x10]
+ ldr r0, [r4, #0xc]
+ cmp r1, r0
+ blt _02015C20
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+_02015C20:
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02015C24
+FUN_02015C24: ; 0x02015C24
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0xc]
+ ldr r0, [r4, #0x14]
+ ldr r2, [r4, #0x8]
+ mul r0, r1
+ ldr r1, [r4, #0x24]
+ add r2, r2, r0
+ ldr r0, [r1, #0x0]
+ add r0, r0, r2
+ str r0, [r1, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x2c
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x18
+ beq _02015C48
+ cmp r0, #0x1a
+ bne _02015C6E
+_02015C48:
+ cmp r2, #0x0
+ ldr r2, [r4, #0x10]
+ bge _02015C5E
+ ldr r1, [r4, #0x24]
+ ldr r0, [r1, #0x0]
+ cmp r0, r2
+ bgt _02015CA4
+ str r2, [r1, #0x0]
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+ b _02015CA4
+_02015C5E:
+ ldr r1, [r4, #0x24]
+ ldr r0, [r1, #0x0]
+ cmp r0, r2
+ blt _02015CA4
+ str r2, [r1, #0x0]
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+ b _02015CA4
+_02015C6E:
+ cmp r0, #0x19
+ bne _02015CA0
+ ldr r1, [r4, #0x24]
+ ldr r3, [r4, #0x30]
+ ldr r0, [r1, #0x0]
+ add r3, r3, r0
+ cmp r2, #0x0
+ ldr r2, [r4, #0x10]
+ bge _02015C90
+ cmp r3, r2
+ bgt _02015CA4
+ sub r2, r2, r3
+ add r0, r0, r2
+ str r0, [r1, #0x0]
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+ b _02015CA4
+_02015C90:
+ cmp r3, r2
+ blt _02015CA4
+ sub r2, r3, r2
+ sub r0, r0, r2
+ str r0, [r1, #0x0]
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+ b _02015CA4
+_02015CA0:
+ bl ErrorHandling
+_02015CA4:
+ add r0, r4, #0x0
+ add r0, #0x2c
+ ldrb r0, [r0, #0x0]
+ add r1, r4, #0x0
+ ldr r2, [r4, #0x24]
+ ldr r3, [r4, #0x28]
+ add r1, #0x30
+ bl FUN_020158DC
+ ldr r0, [r4, #0x14]
+ add r0, r0, #0x1
+ str r0, [r4, #0x14]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02015CC0
+FUN_02015CC0: ; 0x02015CC0
+ ldr r3, _02015CDC ; =0x020ED72C
+ mov r2, #0x0
+_02015CC4:
+ ldrh r1, [r3, #0x2]
+ cmp r0, r1
+ bhs _02015CCE
+ add r0, r2, #0x0
+ bx lr
+_02015CCE:
+ add r2, r2, #0x1
+ add r3, r3, #0x2
+ cmp r2, #0x2
+ blt _02015CC4
+ add r0, r2, #0x0
+ bx lr
+ nop
+_02015CDC: .word 0x020ED72C
+
+ thumb_func_start FUN_02015CE0
+FUN_02015CE0: ; 0x02015CE0
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02015CC0
+ lsl r1, r0, #0x1
+ ldr r0, _02015CF4 ; =0x020ED72C
+ ldrh r0, [r0, r1]
+ sub r0, r4, r0
+ pop {r4, pc}
+ nop
+_02015CF4: .word 0x020ED72C
+
+ thumb_func_start FUN_02015CF8
+FUN_02015CF8: ; 0x02015CF8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r5, #0x3
+ blt _02015D06
+ bl ErrorHandling
+_02015D06:
+ ldr r0, _02015D10 ; =0x020ED72C
+ lsl r1, r5, #0x1
+ ldrh r0, [r0, r1]
+ add r0, r4, r0
+ pop {r3-r5, pc}
+ .balign 4
+_02015D10: .word 0x020ED72C
+
+ thumb_func_start FUN_02015D14
+FUN_02015D14: ; 0x02015D14
+ cmp r0, #0x7
+ bhi _02015D34
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02015D24: ; jump table (using 16-bit offset)
+ .short _02015D34 - _02015D24 - 2; case 0
+ .short _02015D34 - _02015D24 - 2; case 1
+ .short _02015D38 - _02015D24 - 2; case 2
+ .short _02015D3E - _02015D24 - 2; case 3
+ .short _02015D38 - _02015D24 - 2; case 4
+ .short _02015D42 - _02015D24 - 2; case 5
+ .short _02015D34 - _02015D24 - 2; case 6
+ .short _02015D38 - _02015D24 - 2; case 7
+_02015D34:
+ mov r0, #0xea
+ bx lr
+_02015D38:
+ mov r0, #0x6d
+ lsl r0, r0, #0x2
+ bx lr
+_02015D3E:
+ ldr r0, _02015D48 ; =0x000001B7
+ bx lr
+_02015D42:
+ ldr r0, _02015D4C ; =0x000001B6
+ bx lr
+ nop
+_02015D48: .word 0x000001B7
+_02015D4C: .word 0x000001B6
+
+ thumb_func_start FUN_02015D50
+FUN_02015D50: ; 0x02015D50
+ cmp r0, #0x7
+ bhi _02015D70
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02015D60: ; jump table (using 16-bit offset)
+ .short _02015D70 - _02015D60 - 2; case 0
+ .short _02015D70 - _02015D60 - 2; case 1
+ .short _02015D74 - _02015D60 - 2; case 2
+ .short _02015D78 - _02015D60 - 2; case 3
+ .short _02015D74 - _02015D60 - 2; case 4
+ .short _02015D7E - _02015D60 - 2; case 5
+ .short _02015D70 - _02015D60 - 2; case 6
+ .short _02015D74 - _02015D60 - 2; case 7
+_02015D70:
+ mov r0, #0xeb
+ bx lr
+_02015D74:
+ ldr r0, _02015D84 ; =0x000001B5
+ bx lr
+_02015D78:
+ mov r0, #0x6e
+ lsl r0, r0, #0x2
+ bx lr
+_02015D7E:
+ mov r0, #0x6d
+ lsl r0, r0, #0x2
+ bx lr
+ .balign 4
+_02015D84: .word 0x000001B5
+
+ thumb_func_start FUN_02015D88
+FUN_02015D88: ; 0x02015D88
+ push {r3-r7, lr}
+ sub sp, #0x10
+ add r6, r3, #0x0
+ str r0, [sp, #0x0]
+ str r1, [sp, #0x4]
+ str r2, [sp, #0x8]
+ cmp r6, #0x1
+ beq _02015D9C
+ mov r2, #0x1
+ b _02015D9E
+_02015D9C:
+ mov r2, #0x0
+_02015D9E:
+ ldr r0, [sp, #0x8]
+ mov r4, #0x0
+ sub r0, r0, #0x1
+ str r0, [sp, #0xc]
+ beq _02015E18
+ ldr r1, _02015E28 ; =0x020ED734
+ lsl r0, r2, #0x1
+ ldr r5, [sp, #0x4]
+ add r7, r1, r0
+_02015DB0:
+ ldr r0, [sp, #0x0]
+ ldrb r0, [r0, r4]
+ cmp r0, #0xff
+ beq _02015E18
+ cmp r0, #0xf7
+ blo _02015DEA
+ ldr r0, [sp, #0x8]
+ sub r3, r0, #0x1
+ cmp r3, #0xa
+ blo _02015DC6
+ mov r3, #0xa
+_02015DC6:
+ mov r1, #0x0
+ cmp r3, #0x0
+ ble _02015DDC
+ mov r0, #0x6b
+ ldr r2, [sp, #0x4]
+ lsl r0, r0, #0x2
+_02015DD2:
+ add r1, r1, #0x1
+ strh r0, [r2, #0x0]
+ add r2, r2, #0x2
+ cmp r1, r3
+ blt _02015DD2
+_02015DDC:
+ ldr r0, [sp, #0x4]
+ ldr r2, _02015E2C ; =0x0000FFFF
+ lsl r1, r1, #0x1
+ strh r2, [r0, r1]
+ add sp, #0x10
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_02015DEA:
+ lsl r0, r0, #0x2
+ ldrh r0, [r7, r0]
+ cmp r0, #0xea
+ beq _02015DF8
+ cmp r0, #0xeb
+ beq _02015E02
+ b _02015E0C
+_02015DF8:
+ add r0, r6, #0x0
+ bl FUN_02015D14
+ strh r0, [r5, #0x0]
+ b _02015E0E
+_02015E02:
+ add r0, r6, #0x0
+ bl FUN_02015D50
+ strh r0, [r5, #0x0]
+ b _02015E0E
+_02015E0C:
+ strh r0, [r5, #0x0]
+_02015E0E:
+ ldr r0, [sp, #0xc]
+ add r4, r4, #0x1
+ add r5, r5, #0x2
+ cmp r4, r0
+ blo _02015DB0
+_02015E18:
+ ldr r2, _02015E2C ; =0x0000FFFF
+ ldr r0, [sp, #0x4]
+ lsl r1, r4, #0x1
+ strh r2, [r0, r1]
+ mov r0, #0x1
+ add sp, #0x10
+ pop {r3-r7, pc}
+ nop
+_02015E28: .word 0x020ED734
+_02015E2C: .word 0x0000FFFF
+
+ thumb_func_start FUN_02015E30
+FUN_02015E30: ; 0x02015E30
+ ldr r0, _02015E38 ; =0x021C4898
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+ bx lr
+ .balign 4
+_02015E38: .word 0x021C4898
+
+ thumb_func_start FUN_02015E3C
+FUN_02015E3C: ; 0x02015E3C
+ push {r3, lr}
+ ldr r1, _02015E5C ; =0x021C4898
+ mov r2, #0x1
+ str r2, [r1, #0x0]
+ mov r2, #0x0
+ str r2, [r1, #0x10]
+ str r2, [r1, #0x14]
+ str r2, [r1, #0x8]
+ str r2, [r1, #0xc]
+ str r0, [r1, #0x4]
+ bl FUN_02020BF4
+ ldr r2, _02015E5C ; =0x021C4898
+ str r0, [r2, #0x18]
+ str r1, [r2, #0x1c]
+ pop {r3, pc}
+ .balign 4
+_02015E5C: .word 0x021C4898
+
+ thumb_func_start FUN_02015E60
+FUN_02015E60: ; 0x02015E60
+ push {r3-r5, lr}
+ ldr r0, _02015E9C ; =0x021C4898
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _02015E9A
+ bl FUN_02020BF4
+ ldr r2, _02015E9C ; =0x021C4898
+ ldr r3, [r2, #0x18]
+ ldr r2, [r2, #0x1c]
+ sub r0, r0, r3
+ sbc r1, r2
+ bl FUN_02020C14
+ add r5, r1, #0x0
+ ldr r1, _02015E9C ; =0x021C4898
+ add r4, r0, #0x0
+ ldr r3, [r1, #0x8]
+ ldr r2, [r1, #0xc]
+ sub r0, r3, r4
+ sbc r2, r5
+ bhs _02015E9A
+ ldr r0, [r1, #0x4]
+ sub r1, r4, r3
+ bl FUN_02029E54
+ ldr r0, _02015E9C ; =0x021C4898
+ str r4, [r0, #0x8]
+ str r5, [r0, #0xc]
+_02015E9A:
+ pop {r3-r5, pc}
+ .balign 4
+_02015E9C: .word 0x021C4898
+
+ thumb_func_start FUN_02015EA0
+FUN_02015EA0: ; 0x02015EA0
+ push {r3, lr}
+ ldr r3, _02015EC8 ; =0x027E0000
+ ldr r1, _02015ECC ; =0x00003FF8
+ mov r0, #0x1
+ ldr r2, [r3, r1]
+ orr r0, r2
+ str r0, [r3, r1]
+ mov r0, #0x3
+ blx MI_WaitDma
+ ldr r0, _02015ED0 ; =0x021C48B8
+ ldr r0, [r0, #0x1c]
+ bl FUN_0201B5CC
+ ldr r0, _02015ED0 ; =0x021C48B8
+ ldr r1, [r0, #0x30]
+ add r1, r1, #0x1
+ str r1, [r0, #0x30]
+ pop {r3, pc}
+ nop
+_02015EC8: .word 0x027E0000
+_02015ECC: .word 0x00003FF8
+_02015ED0: .word 0x021C48B8
+
+ thumb_func_start FUN_02015ED4
+FUN_02015ED4: ; 0x02015ED4
+ ldr r3, _02015EE8 ; =0x027E0000
+ ldr r1, _02015EEC ; =0x00003FF8
+ mov r0, #0x1
+ ldr r2, [r3, r1]
+ orr r0, r2
+ str r0, [r3, r1]
+ ldr r3, _02015EF0 ; =MI_WaitDma
+ mov r0, #0x3
+ bx r3
+ nop
+_02015EE8: .word 0x027E0000
+_02015EEC: .word 0x00003FF8
+_02015EF0: .word MI_WaitDma
+
+ thumb_func_start FUN_02015EF4
+FUN_02015EF4: ; 0x02015EF4
+ push {r3, lr}
+ mov r0, #0x1
+ blx OS_DisableIrqMask
+ ldr r1, _02015F0C ; =FUN_02015ED4
+ mov r0, #0x1
+ blx OS_SetIrqFunction
+ mov r0, #0x1
+ blx OS_EnableIrqMask
+ pop {r3, pc}
+ .balign 4
+_02015F0C: .word FUN_02015ED4
+
+ thumb_func_start FUN_02015F10
+FUN_02015F10: ; 0x02015F10
+ ldr r2, _02015F18 ; =0x021C48B8
+ str r0, [r2, #0x0]
+ str r1, [r2, #0x4]
+ bx lr
+ .balign 4
+_02015F18: .word 0x021C48B8
+
+ thumb_func_start FUN_02015F1C
+FUN_02015F1C: ; 0x02015F1C
+ push {r3, lr}
+ mov r0, #0x0
+ bl FUN_02015F80
+ ldr r0, _02015F30 ; =0x021C48B8
+ mov r1, #0x0
+ str r1, [r0, #0x8]
+ str r1, [r0, #0xc]
+ pop {r3, pc}
+ nop
+_02015F30: .word 0x021C48B8
+
+ thumb_func_start FUN_02015F34
+FUN_02015F34: ; 0x02015F34
+ push {r3, lr}
+ cmp r0, #0x0
+ bne _02015F4C
+ mov r0, #0x0
+ bl FUN_02015F80
+ ldr r0, _02015F68 ; =0x021C48B8
+ mov r1, #0x0
+ str r1, [r0, #0x8]
+ str r1, [r0, #0xc]
+ mov r0, #0x1
+ pop {r3, pc}
+_02015F4C:
+ ldr r2, _02015F68 ; =0x021C48B8
+ ldr r3, [r2, #0x8]
+ cmp r3, #0x0
+ bne _02015F62
+ str r1, [r2, #0xc]
+ str r0, [r2, #0x8]
+ mov r0, #0x1
+ bl FUN_02015F80
+ mov r0, #0x1
+ pop {r3, pc}
+_02015F62:
+ mov r0, #0x0
+ pop {r3, pc}
+ nop
+_02015F68: .word 0x021C48B8
+
+ thumb_func_start FUN_02015F6C
+FUN_02015F6C: ; 0x02015F6C
+ push {r3, lr}
+ ldr r0, _02015F7C ; =0x021C48B8
+ ldr r1, [r0, #0x8]
+ cmp r1, #0x0
+ beq _02015F7A
+ ldr r0, [r0, #0xc]
+ blx r1
+_02015F7A:
+ pop {r3, pc}
+ .balign 4
+_02015F7C: .word 0x021C48B8
+
+ thumb_func_start FUN_02015F80
+FUN_02015F80: ; 0x02015F80
+ push {r3, lr}
+ ldr r2, _02015FC0 ; =0x04000208
+ ldrh r1, [r2, #0x0]
+ mov r1, #0x0
+ strh r1, [r2, #0x0]
+ cmp r0, #0x0
+ bne _02015F9E
+ ldr r0, [r2, #0x8]
+ mov r0, #0x2
+ blx OS_DisableIrqMask
+ mov r0, #0x0
+ blx FUN_020C5AF8
+ b _02015FB4
+_02015F9E:
+ ldr r0, [r2, #0x8]
+ ldr r1, _02015FC4 ; =FUN_02015F6C
+ mov r0, #0x2
+ blx OS_SetIrqFunction
+ mov r0, #0x2
+ blx OS_EnableIrqMask
+ mov r0, #0x1
+ blx FUN_020C5AF8
+_02015FB4:
+ ldr r1, _02015FC0 ; =0x04000208
+ ldrh r0, [r1, #0x0]
+ mov r0, #0x1
+ strh r0, [r1, #0x0]
+ pop {r3, pc}
+ nop
+_02015FC0: .word 0x04000208
+_02015FC4: .word FUN_02015F6C
+
+ thumb_func_start FUN_02015FC8
+FUN_02015FC8: ; 0x02015FC8
+ push {r3, lr}
+ sub sp, #0x30
+ add r0, sp, #0x10
+ blx OS_GetLowEntropyData
+ add r0, sp, #0x0
+ add r1, sp, #0x10
+ mov r2, #0x20
+ blx FUN_020DDCE4
+ mov r3, #0x0
+ add r1, r3, #0x0
+ add r2, sp, #0x0
+_02015FE2:
+ ldrb r0, [r2, #0x0]
+ add r1, r1, #0x1
+ add r2, r2, #0x1
+ add r3, r3, r0
+ cmp r1, #0x10
+ blo _02015FE2
+ lsl r0, r3, #0x18
+ lsr r3, r0, #0x18
+ mov r0, #0x3
+ tst r0, r3
+ beq _02016002
+ mov r0, #0x3
+_02015FFA:
+ add r3, r3, #0x1
+ add r1, r3, #0x0
+ tst r1, r0
+ bne _02015FFA
+_02016002:
+ ldr r0, _02016010 ; =0x020EDB10
+ mov r1, #0x4
+ mov r2, #0x5c
+ bl FUN_020166C8
+ add sp, #0x30
+ pop {r3, pc}
+ .balign 4
+_02016010: .word 0x020EDB10
+
+ thumb_func_start InitSystemForTheGame
+InitSystemForTheGame: ; 0x02016014
+ push {r3-r5, lr}
+ blx OS_Init
+ blx FUN_020C5974
+ ldr r2, _02016124 ; =0x04000304
+ ldr r0, _02016128 ; =0xFFFFFDF1
+ ldrh r1, [r2, #0x0]
+ and r1, r0
+ ldr r0, _0201612C ; =0x0000020E
+ orr r0, r1
+ strh r0, [r2, #0x0]
+ blx FUN_020C5B28
+ blx OS_InitTick
+ bl FUN_02015FC8
+ mov r0, #0xa0
+ bl FUN_0201B578
+ add r1, r0, #0x0
+ mov r0, #0x0
+ mov r2, #0x4
+ blx OS_AllocFromArenaLo
+ add r1, r0, #0x0
+ mov r0, #0xa0
+ bl FUN_0201B580
+ ldr r1, _02016130 ; =0x021C48B8
+ str r0, [r1, #0x18]
+ mov r0, #0x10
+ bl FUN_0201B578
+ add r1, r0, #0x0
+ mov r0, #0x0
+ mov r2, #0x4
+ blx OS_AllocFromArenaLo
+ add r1, r0, #0x0
+ mov r0, #0x10
+ bl FUN_0201B580
+ ldr r1, _02016130 ; =0x021C48B8
+ str r0, [r1, #0x1c]
+ mov r0, #0x20
+ bl FUN_0201B578
+ add r1, r0, #0x0
+ mov r0, #0x0
+ mov r2, #0x4
+ blx OS_AllocFromArenaLo
+ add r1, r0, #0x0
+ mov r0, #0x20
+ bl FUN_0201B580
+ ldr r1, _02016130 ; =0x021C48B8
+ str r0, [r1, #0x20]
+ mov r0, #0x4
+ bl FUN_0201B578
+ add r1, r0, #0x0
+ mov r0, #0x0
+ mov r2, #0x4
+ blx OS_AllocFromArenaLo
+ add r1, r0, #0x0
+ mov r0, #0x4
+ bl FUN_0201B580
+ ldr r1, _02016130 ; =0x021C48B8
+ str r0, [r1, #0x24]
+ blx FUN_020C5A80
+ ldr r2, _02016134 ; =0x04001000
+ ldr r0, _02016138 ; =0xFFFEFFFF
+ ldr r1, [r2, #0x0]
+ and r0, r1
+ str r0, [r2, #0x0]
+ ldr r2, _02016124 ; =0x04000304
+ ldrh r1, [r2, #0x0]
+ lsr r0, r2, #0xb
+ orr r0, r1
+ strh r0, [r2, #0x0]
+ ldr r1, _0201613C ; =FUN_02015EA0
+ mov r0, #0x1
+ blx OS_SetIrqFunction
+ mov r0, #0x1
+ blx OS_EnableIrqMask
+ mov r0, #0x1
+ lsl r0, r0, #0x12
+ blx OS_EnableIrqMask
+ ldr r1, _02016140 ; =0x04000208
+ ldrh r0, [r1, #0x0]
+ mov r0, #0x1
+ strh r0, [r1, #0x0]
+ blx FUN_020C5AC8
+ mov r0, #0x1
+ blx FS_Init
+ bl FUN_02022450
+ mov r0, #0x0
+ add r1, r0, #0x0
+ blx FS_TryLoadTable
+ add r4, r0, #0x0
+ mov r0, #0x0
+ add r1, r4, #0x0
+ mov r2, #0x4
+ blx OS_AllocFromArenaLo
+ add r5, r0, #0x0
+ bne _02016108
+ bl ErrorHandling
+_02016108:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ blx FS_TryLoadTable
+ ldr r0, _02016130 ; =0x021C48B8
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+ str r1, [r0, #0x8]
+ str r1, [r0, #0x10]
+ str r1, [r0, #0x14]
+ str r1, [r0, #0x2c]
+ ldr r0, _02016144 ; =0x021C4918
+ strb r1, [r0, #0x5]
+ pop {r3-r5, pc}
+ .balign 4
+_02016124: .word 0x04000304
+_02016128: .word 0xFFFFFDF1
+_0201612C: .word 0x0000020E
+_02016130: .word 0x021C48B8
+_02016134: .word 0x04001000
+_02016138: .word 0xFFFEFFFF
+_0201613C: .word FUN_02015EA0
+_02016140: .word 0x04000208
+_02016144: .word 0x021C4918
+
+ thumb_func_start InitGraphicMemory
+InitGraphicMemory: ; 0x02016148
+ push {r3, lr}
+ ldr r0, _02016198 ; =0x000001FF
+ blx FUN_020C63A8
+ mov r1, #0x1a
+ mov r2, #0x29
+ mov r0, #0x0
+ lsl r1, r1, #0x16
+ lsl r2, r2, #0xe
+ blx MIi_CpuClearFast
+ blx FUN_020C5E54
+ mov r1, #0x7
+ mov r2, #0x1
+ mov r0, #0xc0
+ lsl r1, r1, #0x18
+ lsl r2, r2, #0xa
+ blx MIi_CpuClearFast
+ mov r2, #0x1
+ ldr r1, _0201619C ; =0x07000400
+ mov r0, #0xc0
+ lsl r2, r2, #0xa
+ blx MIi_CpuClearFast
+ mov r1, #0x5
+ mov r2, #0x1
+ mov r0, #0x0
+ lsl r1, r1, #0x18
+ lsl r2, r2, #0xa
+ blx MIi_CpuClearFast
+ mov r2, #0x1
+ ldr r1, _020161A0 ; =0x05000400
+ mov r0, #0x0
+ lsl r2, r2, #0xa
+ blx MIi_CpuClearFast
+ pop {r3, pc}
+ .balign 4
+_02016198: .word 0x000001FF
+_0201619C: .word 0x07000400
+_020161A0: .word 0x05000400
+
+ thumb_func_start FUN_020161A4
+FUN_020161A4: ; 0x020161A4
+ push {r4-r6, lr}
+ sub sp, #0x48
+ add r6, r0, #0x0
+ add r4, r1, #0x0
+ add r0, sp, #0x0
+ blx FS_InitFile
+ add r0, sp, #0x0
+ add r1, r4, #0x0
+ blx FS_OpenFile
+ cmp r0, #0x0
+ beq _020161F0
+ ldr r1, [sp, #0x28]
+ ldr r0, [sp, #0x24]
+ sub r5, r1, r0
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ bl FUN_02016998
+ add r4, r0, #0x0
+ beq _020161E8
+ add r0, sp, #0x0
+ add r1, r4, #0x0
+ add r2, r5, #0x0
+ blx FS_ReadFile
+ cmp r5, r0
+ beq _020161E8
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ bl FUN_02016A8C
+ mov r4, #0x0
+_020161E8:
+ add r0, sp, #0x0
+ blx FS_CloseFile
+ b _020161F2
+_020161F0:
+ mov r4, #0x0
+_020161F2:
+ add r0, r4, #0x0
+ add sp, #0x48
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_020161F8
+FUN_020161F8: ; 0x020161F8
+ push {r3-r5, lr}
+ sub sp, #0x48
+ add r5, r0, #0x0
+ add r0, sp, #0x0
+ add r4, r1, #0x0
+ blx FS_InitFile
+ add r0, sp, #0x0
+ add r1, r5, #0x0
+ blx FS_OpenFile
+ cmp r0, #0x0
+ beq _0201622A
+ ldr r1, [sp, #0x28]
+ ldr r0, [sp, #0x24]
+ sub r2, r1, r0
+ ldr r1, [r4, #0x0]
+ cmp r1, #0x0
+ beq _02016224
+ add r0, sp, #0x0
+ blx FS_ReadFile
+_02016224:
+ add r0, sp, #0x0
+ blx FS_CloseFile
+_0201622A:
+ add sp, #0x48
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02016230
+FUN_02016230: ; 0x02016230
+ push {r3-r7, lr}
+ sub sp, #0x8
+ str r0, [sp, #0x0]
+ blx FUN_020E2EAC
+ lsl r0, r0, #0x10
+ lsr r3, r0, #0x10
+ lsr r2, r3, #0x1f
+ lsl r1, r3, #0x1e
+ sub r1, r1, r2
+ mov r0, #0x1e
+ ror r1, r0
+ add r0, r2, r1
+ beq _02016258
+ lsr r0, r3, #0x2
+ add r0, r0, #0x1
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x4]
+ b _0201625E
+_02016258:
+ lsl r0, r3, #0xe
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x4]
+_0201625E:
+ ldr r0, [sp, #0x4]
+ mov r7, #0x0
+ mov r12, r7
+ cmp r0, #0x0
+ ble _0201629A
+ add r6, r7, #0x0
+ add r4, r7, #0x0
+_0201626C:
+ ldr r2, [sp, #0x0]
+ mov r1, #0x0
+ add r0, r1, #0x0
+ add r2, r2, r6
+ add r3, r1, #0x0
+_02016276:
+ ldrsb r5, [r2, r4]
+ cmp r5, #0x0
+ beq _0201628A
+ lsl r5, r3
+ add r0, r0, #0x1
+ orr r1, r5
+ add r2, r2, #0x1
+ add r3, #0x8
+ cmp r0, #0x4
+ blt _02016276
+_0201628A:
+ mov r0, r12
+ eor r7, r1
+ add r1, r0, #0x1
+ ldr r0, [sp, #0x4]
+ add r6, r6, #0x4
+ mov r12, r1
+ cmp r1, r0
+ blt _0201626C
+_0201629A:
+ add r0, r7, #0x0
+ add sp, #0x8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_020162A0
+FUN_020162A0: ; 0x020162A0
+ ldr r3, _020162C4 ; =0x021C4928
+ mov r2, #0x0
+_020162A4:
+ ldr r1, [r3, #0x4]
+ cmp r0, r1
+ bne _020162B4
+ ldr r1, [r3, #0x0]
+ cmp r1, #0x0
+ beq _020162B4
+ add r0, r2, #0x0
+ bx lr
+_020162B4:
+ add r2, r2, #0x1
+ add r3, #0x8
+ cmp r2, #0x80
+ blt _020162A4
+ mov r0, #0x0
+ mvn r0, r0
+ bx lr
+ nop
+_020162C4: .word 0x021C4928
+
+ thumb_func_start FUN_020162C8
+FUN_020162C8: ; 0x020162C8
+ push {r3-r4}
+ ldr r3, _020162F4 ; =0x021C4928
+ mov r4, #0x0
+_020162CE:
+ ldr r2, [r3, #0x0]
+ cmp r2, #0x0
+ bne _020162E4
+ ldr r2, _020162F4 ; =0x021C4928
+ lsl r3, r4, #0x3
+ str r0, [r2, r3]
+ ldr r0, _020162F8 ; =0x021C492C
+ str r1, [r0, r3]
+ add r0, r4, #0x0
+ pop {r3-r4}
+ bx lr
+_020162E4:
+ add r4, r4, #0x1
+ add r3, #0x8
+ cmp r4, #0x80
+ blt _020162CE
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r4}
+ bx lr
+ .balign 4
+_020162F4: .word 0x021C4928
+_020162F8: .word 0x021C492C
+
+ thumb_func_start FUN_020162FC
+FUN_020162FC: ; 0x020162FC
+ push {r3-r7, lr}
+ mov r6, #0x0
+ ldr r5, _02016320 ; =0x021C4D20
+ mov r4, #0x7f
+ sub r7, r6, #0x1
+_02016306:
+ ldr r0, [r5, #0x0]
+ cmp r0, #0x0
+ beq _02016314
+ bl FUN_02016A18
+ str r6, [r5, #0x0]
+ str r6, [r5, #0x4]
+_02016314:
+ sub r4, r4, #0x1
+ sub r5, #0x8
+ cmp r4, r7
+ bgt _02016306
+ pop {r3-r7, pc}
+ nop
+_02016320: .word 0x021C4D20
+
+ thumb_func_start FUN_02016324
+FUN_02016324: ; 0x02016324
+ push {r3-r7, lr}
+ sub sp, #0x68
+ add r2, r0, #0x0
+ mov r5, #0x0
+ ldrsb r0, [r2, r5]
+ add r4, r1, #0x0
+ cmp r0, #0x21
+ add r0, sp, #0x0
+ bne _02016340
+ add r1, r2, #0x1
+ blx FUN_020E2EC8
+ mov r5, #0x1
+ b _02016346
+_02016340:
+ add r1, r2, #0x0
+ blx FUN_020E2EC8
+_02016346:
+ add r0, sp, #0x0
+ bl FUN_02016230
+ add r7, r0, #0x0
+ bl FUN_020162A0
+ cmp r0, #0x0
+ blt _02016362
+ cmp r5, #0x0
+ bne _02016362
+ lsl r1, r0, #0x3
+ ldr r0, _020163B8 ; =0x021C4928
+ ldr r4, [r0, r1]
+ b _020163B2
+_02016362:
+ add r0, sp, #0x20
+ blx FS_InitFile
+ add r0, sp, #0x20
+ add r1, sp, #0x0
+ blx FS_OpenFile
+ cmp r0, #0x0
+ beq _020163B0
+ ldr r1, [sp, #0x48]
+ ldr r0, [sp, #0x44]
+ sub r6, r1, r0
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ bl FUN_02016998
+ add r4, r0, #0x0
+ beq _0201639C
+ add r0, sp, #0x20
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ blx FS_ReadFile
+ cmp r6, r0
+ beq _0201639C
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r4, #0x0
+_0201639C:
+ add r0, sp, #0x20
+ blx FS_CloseFile
+ cmp r5, #0x0
+ bne _020163B2
+ add r0, r4, #0x0
+ add r1, r7, #0x0
+ bl FUN_020162C8
+ b _020163B2
+_020163B0:
+ mov r4, #0x0
+_020163B2:
+ add r0, r4, #0x0
+ add sp, #0x68
+ pop {r3-r7, pc}
+ .balign 4
+_020163B8: .word 0x021C4928
+
+ thumb_func_start FUN_020163BC
+FUN_020163BC: ; 0x020163BC
+ push {r3, lr}
+ sub sp, #0x8
+ ldr r0, _0201641C ; =0x021C48B8
+ mov r2, #0x0
+ str r2, [r0, #0x34]
+ str r2, [r0, #0x38]
+ str r2, [r0, #0x3c]
+ str r2, [r0, #0x40]
+ str r2, [r0, #0x44]
+ str r2, [r0, #0x48]
+ str r2, [r0, #0x4c]
+ str r2, [r0, #0x50]
+ mov r1, #0x8
+ str r1, [r0, #0x54]
+ mov r1, #0xf
+ str r1, [r0, #0x58]
+ ldr r0, _02016420 ; =0x021C48F8
+ strh r2, [r0, #0x1c]
+ strh r2, [r0, #0x1e]
+ strh r2, [r0, #0x20]
+ strh r2, [r0, #0x22]
+ ldr r0, _02016424 ; =0x021C4918
+ strb r2, [r0, #0x4]
+ blx TP_Init
+ add r0, sp, #0x0
+ blx TP_GetUserInfo
+ cmp r0, #0x1
+ add r0, sp, #0x0
+ bne _02016402
+ blx TP_SetCalibrateParam
+ add sp, #0x8
+ pop {r3, pc}
+_02016402:
+ ldr r1, _02016428 ; =0x000002AE
+ strh r1, [r0, #0x0]
+ ldr r1, _0201642C ; =0x0000058C
+ strh r1, [r0, #0x2]
+ ldr r1, _02016430 ; =0x00000E25
+ strh r1, [r0, #0x4]
+ ldr r1, _02016434 ; =0x00001208
+ strh r1, [r0, #0x6]
+ add r0, sp, #0x0
+ blx TP_SetCalibrateParam
+ add sp, #0x8
+ pop {r3, pc}
+ .balign 4
+_0201641C: .word 0x021C48B8
+_02016420: .word 0x021C48F8
+_02016424: .word 0x021C4918
+_02016428: .word 0x000002AE
+_0201642C: .word 0x0000058C
+_02016430: .word 0x00000E25
+_02016434: .word 0x00001208
+
+ thumb_func_start FUN_02016438
+FUN_02016438: ; 0x02016438
+ ldr r1, _02016440 ; =0x021C4918
+ strb r0, [r1, #0x6]
+ bx lr
+ nop
+_02016440: .word 0x021C4918
+
+ thumb_func_start FUN_02016444
+FUN_02016444: ; 0x02016444
+ ldr r1, _02016450 ; =0x021C4918
+ ldrb r2, [r1, #0x7]
+ orr r0, r2
+ strb r0, [r1, #0x7]
+ bx lr
+ nop
+_02016450: .word 0x021C4918
+
+ thumb_func_start FUN_02016454
+FUN_02016454: ; 0x02016454
+ ldr r1, _02016460 ; =0x021C4918
+ mvn r0, r0
+ ldrb r2, [r1, #0x7]
+ and r0, r2
+ strb r0, [r1, #0x7]
+ bx lr
+ .balign 4
+_02016460: .word 0x021C4918
+
+ thumb_func_start FUN_02016464
+FUN_02016464: ; 0x02016464
+ push {r4, lr}
+ sub sp, #0x10
+ ldr r2, _02016550 ; =0x027FFFA8
+ mov r0, #0x2
+ ldrh r1, [r2, #0x0]
+ lsl r0, r0, #0xe
+ and r0, r1
+ asr r0, r0, #0xf
+ beq _0201648A
+ ldr r0, _02016554 ; =0x021C48B8
+ mov r1, #0x0
+ str r1, [r0, #0x48]
+ str r1, [r0, #0x44]
+ str r1, [r0, #0x4c]
+ ldr r0, _02016558 ; =0x021C48F8
+ add sp, #0x10
+ strh r1, [r0, #0x20]
+ strh r1, [r0, #0x22]
+ pop {r4, pc}
+_0201648A:
+ ldr r0, _0201655C ; =0x04000130
+ ldrh r1, [r0, #0x0]
+ ldrh r0, [r2, #0x0]
+ orr r1, r0
+ ldr r0, _02016560 ; =0x00002FFF
+ eor r1, r0
+ and r0, r1
+ ldr r1, _02016554 ; =0x021C48B8
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ ldr r2, [r1, #0x38]
+ add r3, r0, #0x0
+ eor r3, r2
+ and r3, r0
+ str r3, [r1, #0x3c]
+ str r3, [r1, #0x40]
+ cmp r0, #0x0
+ beq _020164C2
+ cmp r2, r0
+ bne _020164C2
+ ldr r2, [r1, #0x50]
+ sub r2, r2, #0x1
+ str r2, [r1, #0x50]
+ bne _020164C8
+ str r0, [r1, #0x40]
+ ldr r2, [r1, #0x54]
+ str r2, [r1, #0x50]
+ b _020164C8
+_020164C2:
+ ldr r1, _02016554 ; =0x021C48B8
+ ldr r2, [r1, #0x58]
+ str r2, [r1, #0x50]
+_020164C8:
+ ldr r1, _02016554 ; =0x021C48B8
+ str r0, [r1, #0x38]
+ ldr r2, [r1, #0x3c]
+ str r2, [r1, #0x48]
+ str r0, [r1, #0x44]
+ ldr r0, [r1, #0x40]
+ str r0, [r1, #0x4c]
+ bl FUN_02016568
+ ldr r0, _02016564 ; =0x021C4918
+ ldrb r0, [r0, #0x4]
+ cmp r0, #0x0
+ bne _020164F4
+ add r4, sp, #0x8
+_020164E4:
+ blx TP_RequestSamplingAsync
+ add r0, r4, #0x0
+ blx TP_WaitRawResult
+ cmp r0, #0x0
+ bne _020164E4
+ b _020164FA
+_020164F4:
+ add r0, sp, #0x8
+ blx TP_GetLatestRawPointInAuto
+_020164FA:
+ add r0, sp, #0x0
+ add r1, sp, #0x8
+ blx TP_GetCalibratedPoint
+ add r1, sp, #0x0
+ ldrh r3, [r1, #0x6]
+ cmp r3, #0x0
+ bne _02016516
+ ldrh r2, [r1, #0x0]
+ ldr r0, _02016558 ; =0x021C48F8
+ strh r2, [r0, #0x1c]
+ ldrh r1, [r1, #0x2]
+ strh r1, [r0, #0x1e]
+ b _0201653A
+_02016516:
+ ldr r0, _02016558 ; =0x021C48F8
+ ldrh r2, [r0, #0x22]
+ cmp r2, #0x0
+ beq _02016536
+ cmp r3, #0x1
+ beq _0201652A
+ cmp r3, #0x2
+ beq _02016530
+ cmp r3, #0x3
+ b _0201653A
+_0201652A:
+ ldrh r1, [r1, #0x2]
+ strh r1, [r0, #0x1e]
+ b _0201653A
+_02016530:
+ ldrh r1, [r1, #0x0]
+ strh r1, [r0, #0x1c]
+ b _0201653A
+_02016536:
+ mov r0, #0x0
+ strh r0, [r1, #0x4]
+_0201653A:
+ add r0, sp, #0x0
+ ldrh r2, [r0, #0x4]
+ ldr r0, _02016558 ; =0x021C48F8
+ ldrh r1, [r0, #0x22]
+ eor r1, r2
+ and r1, r2
+ strh r1, [r0, #0x20]
+ strh r2, [r0, #0x22]
+ add sp, #0x10
+ pop {r4, pc}
+ nop
+_02016550: .word 0x027FFFA8
+_02016554: .word 0x021C48B8
+_02016558: .word 0x021C48F8
+_0201655C: .word 0x04000130
+_02016560: .word 0x00002FFF
+_02016564: .word 0x021C4918
+
+ thumb_func_start FUN_02016568
+FUN_02016568: ; 0x02016568
+ ldr r0, _02016690 ; =0x021C48B8
+ ldr r1, [r0, #0x34]
+ cmp r1, #0x3
+ bls _02016572
+ b _0201668C
+_02016572:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0201657E: ; jump table (using 16-bit offset)
+ .short _0201668C - _0201657E - 2; case 0
+ .short _02016586 - _0201657E - 2; case 1
+ .short _020165BC - _0201657E - 2; case 2
+ .short _02016642 - _0201657E - 2; case 3
+_02016586:
+ ldr r2, [r0, #0x48]
+ mov r1, #0x8
+ add r3, r2, #0x0
+ tst r3, r1
+ beq _02016596
+ lsl r1, r1, #0x7
+ orr r1, r2
+ str r1, [r0, #0x48]
+_02016596:
+ ldr r1, _02016690 ; =0x021C48B8
+ mov r0, #0x8
+ ldr r2, [r1, #0x44]
+ add r3, r2, #0x0
+ tst r3, r0
+ beq _020165A8
+ lsl r0, r0, #0x7
+ orr r0, r2
+ str r0, [r1, #0x44]
+_020165A8:
+ ldr r1, _02016690 ; =0x021C48B8
+ mov r0, #0x8
+ ldr r2, [r1, #0x4c]
+ add r3, r2, #0x0
+ tst r3, r0
+ beq _0201668C
+ lsl r0, r0, #0x7
+ orr r0, r2
+ str r0, [r1, #0x4c]
+ bx lr
+_020165BC:
+ ldr r3, [r0, #0x48]
+ mov r0, #0x1
+ lsl r0, r0, #0xa
+ add r2, r3, #0x0
+ mov r1, #0x0
+ tst r2, r0
+ beq _020165CE
+ lsl r0, r0, #0x1
+ orr r1, r0
+_020165CE:
+ mov r0, #0x2
+ lsl r0, r0, #0xa
+ add r2, r3, #0x0
+ tst r2, r0
+ beq _020165DC
+ lsr r0, r0, #0x1
+ orr r1, r0
+_020165DC:
+ ldr r2, _02016690 ; =0x021C48B8
+ ldr r0, _02016694 ; =0x0000F3FF
+ ldr r3, [r2, #0x48]
+ and r0, r3
+ orr r0, r1
+ str r0, [r2, #0x48]
+ ldr r3, [r2, #0x44]
+ mov r1, #0x1
+ lsl r1, r1, #0xa
+ add r2, r3, #0x0
+ mov r0, #0x0
+ tst r2, r1
+ beq _020165FA
+ lsl r1, r1, #0x1
+ orr r0, r1
+_020165FA:
+ mov r1, #0x2
+ lsl r1, r1, #0xa
+ add r2, r3, #0x0
+ tst r2, r1
+ beq _02016608
+ lsr r1, r1, #0x1
+ orr r0, r1
+_02016608:
+ ldr r2, _02016690 ; =0x021C48B8
+ ldr r1, _02016694 ; =0x0000F3FF
+ ldr r3, [r2, #0x44]
+ and r1, r3
+ orr r0, r1
+ str r0, [r2, #0x44]
+ ldr r3, [r2, #0x4c]
+ mov r1, #0x1
+ lsl r1, r1, #0xa
+ add r2, r3, #0x0
+ mov r0, #0x0
+ tst r2, r1
+ beq _02016626
+ lsl r1, r1, #0x1
+ orr r0, r1
+_02016626:
+ mov r1, #0x2
+ lsl r1, r1, #0xa
+ add r2, r3, #0x0
+ tst r2, r1
+ beq _02016634
+ lsr r1, r1, #0x1
+ orr r0, r1
+_02016634:
+ ldr r2, _02016690 ; =0x021C48B8
+ ldr r1, _02016694 ; =0x0000F3FF
+ ldr r3, [r2, #0x4c]
+ and r1, r3
+ orr r0, r1
+ str r0, [r2, #0x4c]
+ bx lr
+_02016642:
+ mov r1, #0x2
+ ldr r2, [r0, #0x48]
+ lsl r1, r1, #0x8
+ tst r1, r2
+ beq _02016652
+ mov r1, #0x1
+ orr r1, r2
+ str r1, [r0, #0x48]
+_02016652:
+ ldr r1, _02016690 ; =0x021C48B8
+ mov r0, #0x2
+ ldr r2, [r1, #0x44]
+ lsl r0, r0, #0x8
+ tst r0, r2
+ beq _02016664
+ mov r0, #0x1
+ orr r0, r2
+ str r0, [r1, #0x44]
+_02016664:
+ ldr r1, _02016690 ; =0x021C48B8
+ mov r0, #0x2
+ ldr r2, [r1, #0x4c]
+ lsl r0, r0, #0x8
+ tst r0, r2
+ beq _02016676
+ mov r0, #0x1
+ orr r0, r2
+ str r0, [r1, #0x4c]
+_02016676:
+ ldr r1, _02016690 ; =0x021C48B8
+ ldr r0, _02016698 ; =0x0000FCFF
+ ldr r2, [r1, #0x48]
+ and r2, r0
+ str r2, [r1, #0x48]
+ ldr r2, [r1, #0x44]
+ and r2, r0
+ str r2, [r1, #0x44]
+ ldr r2, [r1, #0x4c]
+ and r0, r2
+ str r0, [r1, #0x4c]
+_0201668C:
+ bx lr
+ nop
+_02016690: .word 0x021C48B8
+_02016694: .word 0x0000F3FF
+_02016698: .word 0x0000FCFF
+
+ thumb_func_start FUN_0201669C
+FUN_0201669C: ; 0x0201669C
+ ldr r2, _020166A4 ; =0x021C48B8
+ str r0, [r2, #0x54]
+ str r1, [r2, #0x58]
+ bx lr
+ .balign 4
+_020166A4: .word 0x021C48B8
+
+ thumb_func_start FUN_020166A8
+FUN_020166A8: ; 0x020166A8
+ ldr r1, _020166B4 ; =0x021C4918
+ ldrb r2, [r1, #0x8]
+ orr r0, r2
+ strb r0, [r1, #0x8]
+ bx lr
+ nop
+_020166B4: .word 0x021C4918
+
+ thumb_func_start FUN_020166B8
+FUN_020166B8: ; 0x020166B8
+ ldr r1, _020166C4 ; =0x021C4918
+ mvn r0, r0
+ ldrb r2, [r1, #0x8]
+ and r0, r2
+ strb r0, [r1, #0x8]
+ bx lr
+ .balign 4
+_020166C4: .word 0x021C4918
+
+ thumb_func_start FUN_020166C8
+FUN_020166C8: ; 0x020166C8
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ str r0, [sp, #0x4]
+ add r0, #0x18
+ add r6, r2, #0x0
+ str r0, [sp, #0x4]
+ cmp r6, r0
+ bhs _020166E0
+ add r6, r0, #0x0
+_020166E0:
+ cmp r3, #0x0
+ beq _020166FE
+ mov r0, #0x3
+ tst r0, r3
+ beq _020166F4
+ mov r0, #0x3
+_020166EC:
+ add r3, r3, #0x1
+ add r1, r3, #0x0
+ tst r1, r0
+ bne _020166EC
+_020166F4:
+ mov r0, #0x0
+ add r1, r3, #0x0
+ mov r2, #0x4
+ blx OS_AllocFromArenaLo
+_020166FE:
+ ldr r1, [sp, #0x4]
+ lsl r7, r6, #0x1
+ lsl r2, r1, #0x1
+ add r1, r1, r2
+ add r1, r1, #0x1
+ lsl r1, r1, #0x2
+ add r1, r7, r1
+ mov r0, #0x0
+ add r1, r6, r1
+ mov r2, #0x4
+ blx OS_AllocFromArenaLo
+ ldr r1, _020167F0 ; =0x021C4D28
+ str r0, [r1, #0x0]
+ ldr r1, [sp, #0x4]
+ add r1, r1, #0x1
+ lsl r1, r1, #0x2
+ add r1, r0, r1
+ ldr r0, _020167F0 ; =0x021C4D28
+ str r1, [r0, #0x4]
+ ldr r0, [sp, #0x4]
+ lsl r0, r0, #0x2
+ add r2, r1, r0
+ ldr r1, _020167F0 ; =0x021C4D28
+ str r2, [r1, #0x8]
+ add r1, r2, r0
+ ldr r0, _020167F0 ; =0x021C4D28
+ str r1, [r0, #0xc]
+ add r1, r1, r7
+ str r1, [r0, #0x10]
+ strh r6, [r0, #0x14]
+ strh r4, [r0, #0x16]
+ ldr r0, [sp, #0x4]
+ mov r7, #0x0
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ ldr r0, _020167F0 ; =0x021C4D28
+ cmp r4, #0x0
+ strh r1, [r0, #0x1a]
+ strh r1, [r0, #0x18]
+ bls _020167A0
+ str r7, [sp, #0x0]
+_02016752:
+ ldr r0, [r5, #0x4]
+ cmp r0, #0x0
+ beq _0201675C
+ cmp r0, #0x2
+ beq _02016768
+_0201675C:
+ ldr r1, [r5, #0x0]
+ mov r0, #0x0
+ mov r2, #0x4
+ blx OS_AllocFromArenaLo
+ b _02016772
+_02016768:
+ ldr r1, [r5, #0x0]
+ mov r0, #0x2
+ mov r2, #0x4
+ blx OS_AllocFromArenaHi
+_02016772:
+ cmp r0, #0x0
+ beq _0201678E
+ ldr r1, [r5, #0x0]
+ mov r2, #0x0
+ blx FUN_020ADFE8
+ ldr r1, _020167F0 ; =0x021C4D28
+ ldr r2, [r1, #0x0]
+ ldr r1, [sp, #0x0]
+ str r0, [r2, r1]
+ ldr r0, _020167F0 ; =0x021C4D28
+ ldr r0, [r0, #0x10]
+ strb r7, [r0, r7]
+ b _02016792
+_0201678E:
+ bl ErrorHandling
+_02016792:
+ ldr r0, [sp, #0x0]
+ add r7, r7, #0x1
+ add r0, r0, #0x4
+ add r5, #0x8
+ str r0, [sp, #0x0]
+ cmp r7, r4
+ blo _02016752
+_020167A0:
+ ldr r0, [sp, #0x4]
+ add r1, r0, #0x1
+ cmp r4, r1
+ bhs _020167C0
+ ldr r3, _020167F0 ; =0x021C4D28
+ lsl r2, r4, #0x2
+ mov r0, #0x0
+_020167AE:
+ ldr r5, [r3, #0x0]
+ str r0, [r5, r2]
+ ldrh r7, [r3, #0x1a]
+ ldr r5, [r3, #0x10]
+ add r2, r2, #0x4
+ strb r7, [r5, r4]
+ add r4, r4, #0x1
+ cmp r4, r1
+ blo _020167AE
+_020167C0:
+ cmp r4, r6
+ bhs _020167D2
+ ldr r0, _020167F0 ; =0x021C4D28
+_020167C6:
+ ldrh r2, [r0, #0x1a]
+ ldr r1, [r0, #0x10]
+ strb r2, [r1, r4]
+ add r4, r4, #0x1
+ cmp r4, r6
+ blo _020167C6
+_020167D2:
+ mov r4, #0x0
+ cmp r6, #0x0
+ bls _020167EA
+ ldr r0, _020167F0 ; =0x021C4D28
+ add r3, r4, #0x0
+ add r2, r4, #0x0
+_020167DE:
+ ldr r1, [r0, #0xc]
+ add r4, r4, #0x1
+ strh r2, [r1, r3]
+ add r3, r3, #0x2
+ cmp r4, r6
+ blo _020167DE
+_020167EA:
+ add sp, #0x8
+ pop {r3-r7, pc}
+ nop
+_020167F0: .word 0x021C4D28
+
+ thumb_func_start FUN_020167F4
+FUN_020167F4: ; 0x020167F4
+ ldr r1, _02016818 ; =0x021C4D28
+ ldrh r0, [r1, #0x16]
+ ldrh r3, [r1, #0x18]
+ cmp r0, r3
+ bge _02016812
+ ldr r2, [r1, #0x0]
+ lsl r1, r0, #0x2
+ add r2, r2, r1
+_02016804:
+ ldr r1, [r2, #0x0]
+ cmp r1, #0x0
+ beq _02016816
+ add r0, r0, #0x1
+ add r2, r2, #0x4
+ cmp r0, r3
+ blt _02016804
+_02016812:
+ mov r0, #0x0
+ mvn r0, r0
+_02016816:
+ bx lr
+ .balign 4
+_02016818: .word 0x021C4D28
+
+ thumb_func_start FUN_0201681C
+FUN_0201681C: ; 0x0201681C
+ push {r3, lr}
+ mov r3, #0x4
+ bl FUN_02016834
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02016828
+FUN_02016828: ; 0x02016828
+ push {r3, lr}
+ mov r3, #0x3
+ mvn r3, r3
+ bl FUN_02016834
+ pop {r3, pc}
+
+ thumb_func_start FUN_02016834
+FUN_02016834: ; 0x02016834
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r4, r0, #0x0
+ add r5, r1, #0x0
+ str r2, [sp, #0x0]
+ add r7, r3, #0x0
+ blx OS_GetProcMode
+ cmp r0, #0x12
+ bne _0201684C
+ bl ErrorHandling
+_0201684C:
+ ldr r1, _020168CC ; =0x021C4D28
+ ldr r0, [r1, #0x10]
+ ldrh r3, [r1, #0x1a]
+ ldrb r2, [r0, r5]
+ cmp r3, r2
+ bne _020168C2
+ ldrb r0, [r0, r4]
+ ldr r1, [r1, #0x0]
+ lsl r0, r0, #0x2
+ ldr r6, [r1, r0]
+ cmp r6, #0x0
+ beq _020168BC
+ ldr r1, [sp, #0x0]
+ add r0, r6, #0x0
+ add r2, r7, #0x0
+ blx FUN_020ADFA0
+ str r0, [sp, #0x4]
+ cmp r0, #0x0
+ beq _020168B6
+ bl FUN_020167F4
+ add r7, r0, #0x0
+ bmi _020168B0
+ ldr r0, [sp, #0x4]
+ ldr r1, [sp, #0x0]
+ mov r2, #0x0
+ lsl r4, r7, #0x2
+ blx FUN_020ADFE8
+ ldr r1, _020168CC ; =0x021C4D28
+ ldr r2, [r1, #0x0]
+ str r0, [r2, r4]
+ ldr r0, [r1, #0x0]
+ ldr r0, [r0, r4]
+ cmp r0, #0x0
+ beq _020168AA
+ ldr r0, [r1, #0x4]
+ str r6, [r0, r4]
+ ldr r0, [sp, #0x4]
+ ldr r2, [r1, #0x8]
+ add sp, #0x8
+ str r0, [r2, r4]
+ ldr r0, [r1, #0x10]
+ strb r7, [r0, r5]
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_020168AA:
+ bl ErrorHandling
+ b _020168C6
+_020168B0:
+ bl ErrorHandling
+ b _020168C6
+_020168B6:
+ bl ErrorHandling
+ b _020168C6
+_020168BC:
+ bl ErrorHandling
+ b _020168C6
+_020168C2:
+ bl ErrorHandling
+_020168C6:
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+_020168CC: .word 0x021C4D28
+
+ thumb_func_start FUN_020168D0
+FUN_020168D0: ; 0x020168D0
+ push {r4, lr}
+ add r4, r0, #0x0
+ blx OS_GetProcMode
+ cmp r0, #0x12
+ bne _020168E0
+ bl ErrorHandling
+_020168E0:
+ ldr r0, _02016940 ; =0x021C4D28
+ ldr r1, [r0, #0x0]
+ ldr r0, [r0, #0x10]
+ ldrb r0, [r0, r4]
+ lsl r0, r0, #0x2
+ ldr r0, [r1, r0]
+ cmp r0, #0x0
+ beq _0201693E
+ blx FUN_020ADFDC
+ ldr r1, _02016940 ; =0x021C4D28
+ ldr r0, [r1, #0x10]
+ ldrb r0, [r0, r4]
+ lsl r2, r0, #0x2
+ ldr r0, [r1, #0x4]
+ ldr r1, [r1, #0x8]
+ ldr r0, [r0, r2]
+ ldr r1, [r1, r2]
+ cmp r0, #0x0
+ beq _02016912
+ cmp r1, #0x0
+ beq _02016912
+ blx FUN_020ADDF0
+ b _02016916
+_02016912:
+ bl ErrorHandling
+_02016916:
+ ldr r1, _02016940 ; =0x021C4D28
+ mov r0, #0x0
+ ldr r2, [r1, #0x10]
+ ldr r3, [r1, #0x0]
+ ldrb r2, [r2, r4]
+ lsl r2, r2, #0x2
+ str r0, [r3, r2]
+ ldr r2, [r1, #0x10]
+ ldr r3, [r1, #0x4]
+ ldrb r2, [r2, r4]
+ lsl r2, r2, #0x2
+ str r0, [r3, r2]
+ ldr r2, [r1, #0x10]
+ ldr r3, [r1, #0x8]
+ ldrb r2, [r2, r4]
+ lsl r2, r2, #0x2
+ str r0, [r3, r2]
+ ldrh r2, [r1, #0x1a]
+ ldr r0, [r1, #0x10]
+ strb r2, [r0, r4]
+_0201693E:
+ pop {r4, pc}
+ .balign 4
+_02016940: .word 0x021C4D28
+
+ thumb_func_start FUN_02016944
+FUN_02016944: ; 0x02016944
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r7, r2, #0x0
+ add r6, r3, #0x0
+ cmp r5, #0x0
+ bne _02016956
+ bl ErrorHandling
+_02016956:
+ blx OS_DisableInterrupts
+ add r4, #0x10
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r7, #0x0
+ blx FUN_020ADFA0
+ add r4, r0, #0x0
+ ldr r0, [sp, #0x0]
+ blx OS_RestoreInterrupts
+ cmp r4, #0x0
+ beq _02016984
+ ldr r1, [r4, #0xc]
+ mov r0, #0xff
+ bic r1, r0
+ lsl r0, r6, #0x18
+ lsr r0, r0, #0x18
+ orr r0, r1
+ str r0, [r4, #0xc]
+ add r4, #0x10
+_02016984:
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02016988
+FUN_02016988: ; 0x02016988
+ push {r3, lr}
+ bl FUN_02031810
+ cmp r0, #0x0
+ beq _02016996
+ bl FUN_0208A9B8
+_02016996:
+ pop {r3, pc}
+
+ thumb_func_start FUN_02016998
+FUN_02016998: ; 0x02016998
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, _020169D4 ; =0x021C4D28
+ mov r4, #0x0
+ ldrh r2, [r0, #0x14]
+ cmp r5, r2
+ bhs _020169BA
+ ldr r2, [r0, #0x0]
+ ldr r0, [r0, #0x10]
+ add r3, r5, #0x0
+ ldrb r0, [r0, r5]
+ lsl r0, r0, #0x2
+ ldr r0, [r2, r0]
+ mov r2, #0x4
+ bl FUN_02016944
+ add r4, r0, #0x0
+_020169BA:
+ cmp r4, #0x0
+ beq _020169CC
+ ldr r0, _020169D4 ; =0x021C4D28
+ lsl r1, r5, #0x1
+ ldr r2, [r0, #0xc]
+ ldrh r0, [r2, r1]
+ add r0, r0, #0x1
+ strh r0, [r2, r1]
+ b _020169D0
+_020169CC:
+ bl FUN_02016988
+_020169D0:
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+_020169D4: .word 0x021C4D28
+
+ thumb_func_start FUN_020169D8
+FUN_020169D8: ; 0x020169D8
+ push {r3-r5, lr}
+ ldr r2, _02016A14 ; =0x021C4D28
+ add r5, r0, #0x0
+ ldrh r0, [r2, #0x14]
+ mov r4, #0x0
+ cmp r5, r0
+ bhs _020169FA
+ ldr r0, [r2, #0x0]
+ ldr r2, [r2, #0x10]
+ add r3, r5, #0x0
+ ldrb r2, [r2, r5]
+ lsl r2, r2, #0x2
+ ldr r0, [r0, r2]
+ sub r2, r4, #0x4
+ bl FUN_02016944
+ add r4, r0, #0x0
+_020169FA:
+ cmp r4, #0x0
+ beq _02016A0C
+ ldr r0, _02016A14 ; =0x021C4D28
+ lsl r1, r5, #0x1
+ ldr r2, [r0, #0xc]
+ ldrh r0, [r2, r1]
+ add r0, r0, #0x1
+ strh r0, [r2, r1]
+ b _02016A10
+_02016A0C:
+ bl FUN_02016988
+_02016A10:
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+_02016A14: .word 0x021C4D28
+
+ thumb_func_start FUN_02016A18
+FUN_02016A18: ; 0x02016A18
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ sub r0, r6, #0x4
+ ldr r0, [r0, #0x0]
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ ldr r0, _02016A88 ; =0x021C4D28
+ ldrh r1, [r0, #0x14]
+ cmp r4, r1
+ bhs _02016A80
+ ldr r1, [r0, #0x0]
+ ldr r0, [r0, #0x10]
+ ldrb r0, [r0, r4]
+ lsl r0, r0, #0x2
+ ldr r7, [r1, r0]
+ cmp r7, #0x0
+ bne _02016A3E
+ bl ErrorHandling
+_02016A3E:
+ ldr r0, _02016A88 ; =0x021C4D28
+ lsl r5, r4, #0x1
+ ldr r0, [r0, #0xc]
+ ldrh r0, [r0, r5]
+ cmp r0, #0x0
+ bne _02016A50
+ add r0, r4, #0x0
+ bl FUN_02016B90
+_02016A50:
+ ldr r0, _02016A88 ; =0x021C4D28
+ ldr r0, [r0, #0xc]
+ ldrh r0, [r0, r5]
+ cmp r0, #0x0
+ bne _02016A5E
+ bl ErrorHandling
+_02016A5E:
+ ldr r0, _02016A88 ; =0x021C4D28
+ ldr r1, [r0, #0xc]
+ ldrh r0, [r1, r5]
+ sub r0, r0, #0x1
+ strh r0, [r1, r5]
+ blx OS_DisableInterrupts
+ sub r6, #0x10
+ add r4, r0, #0x0
+ add r0, r7, #0x0
+ add r1, r6, #0x0
+ blx FUN_020ADDF0
+ add r0, r4, #0x0
+ blx OS_RestoreInterrupts
+ pop {r3-r7, pc}
+_02016A80:
+ bl ErrorHandling
+ pop {r3-r7, pc}
+ nop
+_02016A88: .word 0x021C4D28
+
+ thumb_func_start FUN_02016A8C
+FUN_02016A8C: ; 0x02016A8C
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ blx OS_GetProcMode
+ cmp r0, #0x12
+ bne _02016A9E
+ bl ErrorHandling
+_02016A9E:
+ ldr r0, _02016AF4 ; =0x021C4D28
+ ldrh r1, [r0, #0x14]
+ cmp r5, r1
+ bhs _02016AEE
+ ldr r1, [r0, #0x0]
+ ldr r0, [r0, #0x10]
+ ldrb r0, [r0, r5]
+ lsl r0, r0, #0x2
+ ldr r6, [r1, r0]
+ cmp r6, #0x0
+ bne _02016AB8
+ bl ErrorHandling
+_02016AB8:
+ sub r0, r4, #0x4
+ ldr r0, [r0, #0x0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, r5
+ beq _02016AC8
+ bl ErrorHandling
+_02016AC8:
+ sub r4, #0x10
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ blx FUN_020ADDF0
+ ldr r0, _02016AF4 ; =0x021C4D28
+ lsl r4, r5, #0x1
+ ldr r0, [r0, #0xc]
+ ldrh r0, [r0, r4]
+ cmp r0, #0x0
+ bne _02016AE2
+ bl ErrorHandling
+_02016AE2:
+ ldr r0, _02016AF4 ; =0x021C4D28
+ ldr r1, [r0, #0xc]
+ ldrh r0, [r1, r4]
+ sub r0, r0, #0x1
+ strh r0, [r1, r4]
+ pop {r4-r6, pc}
+_02016AEE:
+ bl ErrorHandling
+ pop {r4-r6, pc}
+ .balign 4
+_02016AF4: .word 0x021C4D28
+
+ thumb_func_start FUN_02016AF8
+FUN_02016AF8: ; 0x02016AF8
+ push {r3, lr}
+ ldr r1, _02016B1C ; =0x021C4D28
+ ldrh r2, [r1, #0x14]
+ cmp r0, r2
+ bhs _02016B12
+ ldr r2, [r1, #0x0]
+ ldr r1, [r1, #0x10]
+ ldrb r0, [r1, r0]
+ lsl r0, r0, #0x2
+ ldr r0, [r2, r0]
+ blx FUN_020ADDC8
+ pop {r3, pc}
+_02016B12:
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r3, pc}
+ nop
+_02016B1C: .word 0x021C4D28
+
+ thumb_func_start FUN_02016B20
+FUN_02016B20: ; 0x02016B20
+ push {r4, lr}
+ ldr r4, _02016B40 ; =0x021C4D28
+ ldrh r3, [r4, #0x14]
+ cmp r1, r3
+ bhs _02016B3A
+ ldr r3, [r4, #0x0]
+ ldr r4, [r4, #0x10]
+ ldrb r1, [r4, r1]
+ lsl r1, r1, #0x2
+ ldr r1, [r3, r1]
+ blx FUN_020AE82C
+ pop {r4, pc}
+_02016B3A:
+ bl ErrorHandling
+ pop {r4, pc}
+ .balign 4
+_02016B40: .word 0x021C4D28
+
+ thumb_func_start FUN_02016B44
+FUN_02016B44: ; 0x02016B44
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ blx OS_GetProcMode
+ cmp r0, #0x12
+ bne _02016B56
+ bl ErrorHandling
+_02016B56:
+ add r0, r5, #0x0
+ sub r0, #0x10
+ blx FUN_020ADDC0
+ add r4, #0x10
+ cmp r0, r4
+ blo _02016B84
+ sub r2, r5, #0x4
+ ldr r0, _02016B8C ; =0x021C4D28
+ ldr r2, [r2, #0x0]
+ ldr r1, [r0, #0x0]
+ lsl r2, r2, #0x18
+ ldr r0, [r0, #0x10]
+ lsr r2, r2, #0x18
+ ldrb r0, [r0, r2]
+ sub r5, #0x10
+ add r2, r4, #0x0
+ lsl r0, r0, #0x2
+ ldr r0, [r1, r0]
+ add r1, r5, #0x0
+ blx FUN_020ADE2C
+ pop {r3-r5, pc}
+_02016B84:
+ bl ErrorHandling
+ pop {r3-r5, pc}
+ nop
+_02016B8C: .word 0x021C4D28
+
+ thumb_func_start FUN_02016B90
+FUN_02016B90: ; 0x02016B90
+ mov r0, #0x1
+ bx lr
+
+ thumb_func_start FUN_02016B94
+FUN_02016B94: ; 0x02016B94
+ push {r3-r5, lr}
+ mov r1, #0x5a
+ lsl r1, r1, #0x2
+ add r5, r0, #0x0
+ bl FUN_02016998
+ mov r2, #0x5a
+ mov r1, #0x0
+ lsl r2, r2, #0x2
+ add r4, r0, #0x0
+ blx FUN_020DF4A4
+ str r5, [r4, #0x0]
+ mov r0, #0x0
+ strh r0, [r4, #0x4]
+ strh r0, [r4, #0x6]
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02016BB8
+FUN_02016BB8: ; 0x02016BB8
+ ldr r0, [r0, #0x0]
+ bx lr
+
+ thumb_func_start FUN_02016BBC
+FUN_02016BBC: ; 0x02016BBC
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ ldr r1, [r4, #0x4]
+ ldr r2, [r4, #0xc]
+ blx FUN_020C59C0
+ ldr r0, [r4, #0x8]
+ blx FUN_020C59A4
+ mov r2, #0x1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2, #0x0]
+ ldr r0, _02016BF0 ; =0xC7FFFFFF
+ and r1, r0
+ str r1, [r2, #0x0]
+ ldr r1, [r2, #0x0]
+ asr r0, r0, #0x3
+ and r0, r1
+ str r0, [r2, #0x0]
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ pop {r4, pc}
+ nop
+_02016BF0: .word 0xC7FFFFFF
+
+ thumb_func_start FUN_02016BF4
+FUN_02016BF4: ; 0x02016BF4
+ push {r3, lr}
+ add r2, r0, #0x0
+ cmp r1, #0x0
+ bne _02016C0C
+ ldr r0, [r2, #0x0]
+ ldr r1, [r2, #0x4]
+ ldr r2, [r2, #0xc]
+ blx FUN_020C59C0
+ bl FUN_0201E6D8
+ pop {r3, pc}
+_02016C0C:
+ ldr r0, [r2, #0x8]
+ blx FUN_020C59A4
+ bl FUN_0201E740
+ pop {r3, pc}
+
+ thumb_func_start FUN_02016C18
+FUN_02016C18: ; 0x02016C18
+ push {r3-r7, lr}
+ sub sp, #0x18
+ str r1, [sp, #0x4]
+ str r3, [sp, #0x8]
+ add r4, r2, #0x0
+ str r0, [sp, #0x0]
+ ldrb r0, [r4, #0x10]
+ ldr r1, [sp, #0x8]
+ bl FUN_020177DC
+ add r5, r0, #0x0
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x7
+ bls _02016C36
+ b _0201705A
+_02016C36:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02016C42: ; jump table (using 16-bit offset)
+ .short _02016C52 - _02016C42 - 2; case 0
+ .short _02016CAA - _02016C42 - 2; case 1
+ .short _02016D02 - _02016C42 - 2; case 2
+ .short _02016DA4 - _02016C42 - 2; case 3
+ .short _02016E46 - _02016C42 - 2; case 4
+ .short _02016E9E - _02016C42 - 2; case 5
+ .short _02016EF6 - _02016C42 - 2; case 6
+ .short _02016F98 - _02016C42 - 2; case 7
+_02016C52:
+ mov r0, #0x1
+ add r1, r0, #0x0
+ bl FUN_0201E6E4
+ ldrb r3, [r4, #0x14]
+ ldrb r1, [r4, #0x12]
+ ldrb r0, [r4, #0x11]
+ ldrb r2, [r4, #0x13]
+ lsl r6, r3, #0xd
+ lsl r0, r0, #0x7
+ lsl r3, r2, #0x2
+ str r0, [sp, #0xc]
+ ldr r2, _02016FB4 ; =0x04000008
+ lsl r7, r1, #0x8
+ ldrh r1, [r2, #0x0]
+ mov r0, #0x43
+ and r0, r1
+ lsl r1, r5, #0xe
+ orr r1, r0
+ ldr r0, [sp, #0xc]
+ orr r0, r1
+ orr r0, r7
+ orr r0, r3
+ orr r0, r6
+ strh r0, [r2, #0x0]
+ ldrh r1, [r2, #0x0]
+ mov r0, #0x3
+ bic r1, r0
+ ldrb r0, [r4, #0x15]
+ orr r0, r1
+ strh r0, [r2, #0x0]
+ ldr r0, [r4, #0x18]
+ cmp r0, #0x0
+ beq _02016CA0
+ ldrh r1, [r2, #0x0]
+ mov r0, #0x40
+ orr r0, r1
+ strh r0, [r2, #0x0]
+ b _0201705A
+_02016CA0:
+ ldrh r1, [r2, #0x0]
+ mov r0, #0x40
+ bic r1, r0
+ strh r1, [r2, #0x0]
+ b _0201705A
+_02016CAA:
+ mov r0, #0x2
+ mov r1, #0x1
+ bl FUN_0201E6E4
+ ldrb r3, [r4, #0x14]
+ ldrb r1, [r4, #0x12]
+ ldrb r0, [r4, #0x11]
+ ldrb r2, [r4, #0x13]
+ lsl r6, r3, #0xd
+ lsl r0, r0, #0x7
+ lsl r3, r2, #0x2
+ str r0, [sp, #0x10]
+ ldr r2, _02016FB8 ; =0x0400000A
+ lsl r7, r1, #0x8
+ ldrh r1, [r2, #0x0]
+ mov r0, #0x43
+ and r0, r1
+ lsl r1, r5, #0xe
+ orr r1, r0
+ ldr r0, [sp, #0x10]
+ orr r0, r1
+ orr r0, r7
+ orr r0, r3
+ orr r0, r6
+ strh r0, [r2, #0x0]
+ ldrh r1, [r2, #0x0]
+ mov r0, #0x3
+ bic r1, r0
+ ldrb r0, [r4, #0x15]
+ orr r0, r1
+ strh r0, [r2, #0x0]
+ ldr r0, [r4, #0x18]
+ cmp r0, #0x0
+ beq _02016CF8
+ ldrh r1, [r2, #0x0]
+ mov r0, #0x40
+ orr r0, r1
+ strh r0, [r2, #0x0]
+ b _0201705A
+_02016CF8:
+ ldrh r1, [r2, #0x0]
+ mov r0, #0x40
+ bic r1, r0
+ strh r1, [r2, #0x0]
+ b _0201705A
+_02016D02:
+ mov r0, #0x4
+ mov r1, #0x1
+ bl FUN_0201E6E4
+ ldr r0, [sp, #0x8]
+ cmp r0, #0x0
+ beq _02016D18
+ cmp r0, #0x1
+ beq _02016D3A
+ cmp r0, #0x2
+ beq _02016D5C
+_02016D18:
+ ldrb r1, [r4, #0x12]
+ ldr r7, _02016FBC ; =0x0400000C
+ ldrb r2, [r4, #0x13]
+ lsl r3, r1, #0x8
+ ldrb r0, [r4, #0x11]
+ lsl r6, r2, #0x2
+ ldrh r1, [r7, #0x0]
+ lsl r2, r0, #0x7
+ mov r0, #0x43
+ and r0, r1
+ lsl r1, r5, #0xe
+ orr r0, r1
+ orr r0, r2
+ orr r0, r3
+ orr r0, r6
+ strh r0, [r7, #0x0]
+ b _02016D7C
+_02016D3A:
+ ldrb r2, [r4, #0x13]
+ ldrb r1, [r4, #0x12]
+ ldrb r0, [r4, #0x16]
+ lsl r3, r2, #0x2
+ ldr r7, _02016FBC ; =0x0400000C
+ lsl r2, r1, #0x8
+ lsl r6, r0, #0xd
+ ldrh r1, [r7, #0x0]
+ mov r0, #0x43
+ and r0, r1
+ lsl r1, r5, #0xe
+ orr r0, r1
+ orr r0, r2
+ orr r0, r3
+ orr r0, r6
+ strh r0, [r7, #0x0]
+ b _02016D7C
+_02016D5C:
+ ldrb r1, [r4, #0x12]
+ ldr r7, _02016FBC ; =0x0400000C
+ ldrb r0, [r4, #0x16]
+ lsl r3, r1, #0x8
+ ldrb r2, [r4, #0x13]
+ lsl r6, r0, #0xd
+ ldrh r1, [r7, #0x0]
+ mov r0, #0x43
+ lsl r2, r2, #0x2
+ and r0, r1
+ lsl r1, r5, #0xe
+ orr r0, r1
+ orr r0, r2
+ orr r0, r3
+ orr r0, r6
+ strh r0, [r7, #0x0]
+_02016D7C:
+ ldr r0, _02016FBC ; =0x0400000C
+ mov r1, #0x3
+ ldrh r2, [r0, #0x0]
+ bic r2, r1
+ ldrb r1, [r4, #0x15]
+ orr r1, r2
+ strh r1, [r0, #0x0]
+ ldr r1, [r4, #0x18]
+ cmp r1, #0x0
+ beq _02016D9A
+ ldrh r2, [r0, #0x0]
+ mov r1, #0x40
+ orr r1, r2
+ strh r1, [r0, #0x0]
+ b _0201705A
+_02016D9A:
+ ldrh r2, [r0, #0x0]
+ mov r1, #0x40
+ bic r2, r1
+ strh r2, [r0, #0x0]
+ b _0201705A
+_02016DA4:
+ mov r0, #0x8
+ mov r1, #0x1
+ bl FUN_0201E6E4
+ ldr r0, [sp, #0x8]
+ cmp r0, #0x0
+ beq _02016DBA
+ cmp r0, #0x1
+ beq _02016DDC
+ cmp r0, #0x2
+ beq _02016DFE
+_02016DBA:
+ ldrb r1, [r4, #0x12]
+ ldr r7, _02016FC0 ; =0x0400000E
+ ldrb r2, [r4, #0x13]
+ lsl r3, r1, #0x8
+ ldrb r0, [r4, #0x11]
+ lsl r6, r2, #0x2
+ ldrh r1, [r7, #0x0]
+ lsl r2, r0, #0x7
+ mov r0, #0x43
+ and r0, r1
+ lsl r1, r5, #0xe
+ orr r0, r1
+ orr r0, r2
+ orr r0, r3
+ orr r0, r6
+ strh r0, [r7, #0x0]
+ b _02016E1E
+_02016DDC:
+ ldrb r2, [r4, #0x13]
+ ldrb r1, [r4, #0x12]
+ ldrb r0, [r4, #0x16]
+ lsl r3, r2, #0x2
+ ldr r7, _02016FC0 ; =0x0400000E
+ lsl r2, r1, #0x8
+ lsl r6, r0, #0xd
+ ldrh r1, [r7, #0x0]
+ mov r0, #0x43
+ and r0, r1
+ lsl r1, r5, #0xe
+ orr r0, r1
+ orr r0, r2
+ orr r0, r3
+ orr r0, r6
+ strh r0, [r7, #0x0]
+ b _02016E1E
+_02016DFE:
+ ldrb r1, [r4, #0x12]
+ ldr r7, _02016FC0 ; =0x0400000E
+ ldrb r0, [r4, #0x16]
+ lsl r3, r1, #0x8
+ ldrb r2, [r4, #0x13]
+ lsl r6, r0, #0xd
+ ldrh r1, [r7, #0x0]
+ mov r0, #0x43
+ lsl r2, r2, #0x2
+ and r0, r1
+ lsl r1, r5, #0xe
+ orr r0, r1
+ orr r0, r2
+ orr r0, r3
+ orr r0, r6
+ strh r0, [r7, #0x0]
+_02016E1E:
+ ldr r0, _02016FC0 ; =0x0400000E
+ mov r1, #0x3
+ ldrh r2, [r0, #0x0]
+ bic r2, r1
+ ldrb r1, [r4, #0x15]
+ orr r1, r2
+ strh r1, [r0, #0x0]
+ ldr r1, [r4, #0x18]
+ cmp r1, #0x0
+ beq _02016E3C
+ ldrh r2, [r0, #0x0]
+ mov r1, #0x40
+ orr r1, r2
+ strh r1, [r0, #0x0]
+ b _0201705A
+_02016E3C:
+ ldrh r2, [r0, #0x0]
+ mov r1, #0x40
+ bic r2, r1
+ strh r2, [r0, #0x0]
+ b _0201705A
+_02016E46:
+ mov r0, #0x1
+ add r1, r0, #0x0
+ bl FUN_0201E74C
+ ldrb r3, [r4, #0x14]
+ ldrb r1, [r4, #0x12]
+ ldrb r0, [r4, #0x11]
+ ldrb r2, [r4, #0x13]
+ lsl r6, r3, #0xd
+ lsl r0, r0, #0x7
+ lsl r3, r2, #0x2
+ str r0, [sp, #0x14]
+ ldr r2, _02016FC4 ; =0x04001008
+ lsl r7, r1, #0x8
+ ldrh r1, [r2, #0x0]
+ mov r0, #0x43
+ and r0, r1
+ lsl r1, r5, #0xe
+ orr r1, r0
+ ldr r0, [sp, #0x14]
+ orr r0, r1
+ orr r0, r7
+ orr r0, r3
+ orr r0, r6
+ strh r0, [r2, #0x0]
+ ldrh r1, [r2, #0x0]
+ mov r0, #0x3
+ bic r1, r0
+ ldrb r0, [r4, #0x15]
+ orr r0, r1
+ strh r0, [r2, #0x0]
+ ldr r0, [r4, #0x18]
+ cmp r0, #0x0
+ beq _02016E94
+ ldrh r1, [r2, #0x0]
+ mov r0, #0x40
+ orr r0, r1
+ strh r0, [r2, #0x0]
+ b _0201705A
+_02016E94:
+ ldrh r1, [r2, #0x0]
+ mov r0, #0x40
+ bic r1, r0
+ strh r1, [r2, #0x0]
+ b _0201705A
+_02016E9E:
+ mov r0, #0x2
+ mov r1, #0x1
+ bl FUN_0201E74C
+ ldrb r2, [r4, #0x13]
+ ldrb r1, [r4, #0x12]
+ ldrb r0, [r4, #0x11]
+ lsl r6, r2, #0x2
+ ldrb r3, [r4, #0x14]
+ lsl r0, r0, #0x7
+ mov r12, r0
+ ldr r2, _02016FC8 ; =0x0400100A
+ lsl r7, r1, #0x8
+ ldrh r1, [r2, #0x0]
+ mov r0, #0x43
+ lsl r3, r3, #0xd
+ and r0, r1
+ lsl r1, r5, #0xe
+ orr r0, r1
+ mov r1, r12
+ orr r0, r1
+ orr r0, r7
+ orr r0, r6
+ orr r0, r3
+ strh r0, [r2, #0x0]
+ ldrh r1, [r2, #0x0]
+ mov r0, #0x3
+ bic r1, r0
+ ldrb r0, [r4, #0x15]
+ orr r0, r1
+ strh r0, [r2, #0x0]
+ ldr r0, [r4, #0x18]
+ cmp r0, #0x0
+ beq _02016EEC
+ ldrh r1, [r2, #0x0]
+ mov r0, #0x40
+ orr r0, r1
+ strh r0, [r2, #0x0]
+ b _0201705A
+_02016EEC:
+ ldrh r1, [r2, #0x0]
+ mov r0, #0x40
+ bic r1, r0
+ strh r1, [r2, #0x0]
+ b _0201705A
+_02016EF6:
+ mov r0, #0x4
+ mov r1, #0x1
+ bl FUN_0201E74C
+ ldr r0, [sp, #0x8]
+ cmp r0, #0x0
+ beq _02016F0C
+ cmp r0, #0x1
+ beq _02016F2E
+ cmp r0, #0x2
+ beq _02016F50
+_02016F0C:
+ ldrb r1, [r4, #0x12]
+ ldr r7, _02016FCC ; =0x0400100C
+ ldrb r2, [r4, #0x13]
+ lsl r3, r1, #0x8
+ ldrb r0, [r4, #0x11]
+ lsl r6, r2, #0x2
+ ldrh r1, [r7, #0x0]
+ lsl r2, r0, #0x7
+ mov r0, #0x43
+ and r0, r1
+ lsl r1, r5, #0xe
+ orr r0, r1
+ orr r0, r2
+ orr r0, r3
+ orr r0, r6
+ strh r0, [r7, #0x0]
+ b _02016F70
+_02016F2E:
+ ldrb r2, [r4, #0x13]
+ ldrb r1, [r4, #0x12]
+ ldrb r0, [r4, #0x16]
+ lsl r3, r2, #0x2
+ ldr r7, _02016FCC ; =0x0400100C
+ lsl r2, r1, #0x8
+ lsl r6, r0, #0xd
+ ldrh r1, [r7, #0x0]
+ mov r0, #0x43
+ and r0, r1
+ lsl r1, r5, #0xe
+ orr r0, r1
+ orr r0, r2
+ orr r0, r3
+ orr r0, r6
+ strh r0, [r7, #0x0]
+ b _02016F70
+_02016F50:
+ ldrb r1, [r4, #0x12]
+ ldr r7, _02016FCC ; =0x0400100C
+ ldrb r0, [r4, #0x16]
+ lsl r3, r1, #0x8
+ ldrb r2, [r4, #0x13]
+ lsl r6, r0, #0xd
+ ldrh r1, [r7, #0x0]
+ mov r0, #0x43
+ lsl r2, r2, #0x2
+ and r0, r1
+ lsl r1, r5, #0xe
+ orr r0, r1
+ orr r0, r2
+ orr r0, r3
+ orr r0, r6
+ strh r0, [r7, #0x0]
+_02016F70:
+ ldr r0, _02016FCC ; =0x0400100C
+ mov r1, #0x3
+ ldrh r2, [r0, #0x0]
+ bic r2, r1
+ ldrb r1, [r4, #0x15]
+ orr r1, r2
+ strh r1, [r0, #0x0]
+ ldr r1, [r4, #0x18]
+ cmp r1, #0x0
+ beq _02016F8E
+ ldrh r2, [r0, #0x0]
+ mov r1, #0x40
+ orr r1, r2
+ strh r1, [r0, #0x0]
+ b _0201705A
+_02016F8E:
+ ldrh r2, [r0, #0x0]
+ mov r1, #0x40
+ bic r2, r1
+ strh r2, [r0, #0x0]
+ b _0201705A
+_02016F98:
+ mov r0, #0x8
+ mov r1, #0x1
+ bl FUN_0201E74C
+ ldr r0, [sp, #0x8]
+ cmp r0, #0x0
+ beq _02016FAE
+ cmp r0, #0x1
+ beq _02016FF2
+ cmp r0, #0x2
+ beq _02017014
+_02016FAE:
+ ldrb r1, [r4, #0x12]
+ ldr r7, _02016FD0 ; =0x0400100E
+ b _02016FD4
+ .balign 4
+_02016FB4: .word 0x04000008
+_02016FB8: .word 0x0400000A
+_02016FBC: .word 0x0400000C
+_02016FC0: .word 0x0400000E
+_02016FC4: .word 0x04001008
+_02016FC8: .word 0x0400100A
+_02016FCC: .word 0x0400100C
+_02016FD0: .word 0x0400100E
+_02016FD4:
+ ldrb r2, [r4, #0x13]
+ lsl r3, r1, #0x8
+ ldrb r0, [r4, #0x11]
+ lsl r6, r2, #0x2
+ ldrh r1, [r7, #0x0]
+ lsl r2, r0, #0x7
+ mov r0, #0x43
+ and r0, r1
+ lsl r1, r5, #0xe
+ orr r0, r1
+ orr r0, r2
+ orr r0, r3
+ orr r0, r6
+ strh r0, [r7, #0x0]
+ b _02017034
+_02016FF2:
+ ldrb r2, [r4, #0x13]
+ ldrb r1, [r4, #0x12]
+ ldrb r0, [r4, #0x16]
+ lsl r3, r2, #0x2
+ ldr r7, _020170F0 ; =0x0400100E
+ lsl r2, r1, #0x8
+ lsl r6, r0, #0xd
+ ldrh r1, [r7, #0x0]
+ mov r0, #0x43
+ and r0, r1
+ lsl r1, r5, #0xe
+ orr r0, r1
+ orr r0, r2
+ orr r0, r3
+ orr r0, r6
+ strh r0, [r7, #0x0]
+ b _02017034
+_02017014:
+ ldrb r1, [r4, #0x12]
+ ldr r7, _020170F0 ; =0x0400100E
+ ldrb r0, [r4, #0x16]
+ lsl r3, r1, #0x8
+ ldrb r2, [r4, #0x13]
+ lsl r6, r0, #0xd
+ ldrh r1, [r7, #0x0]
+ mov r0, #0x43
+ lsl r2, r2, #0x2
+ and r0, r1
+ lsl r1, r5, #0xe
+ orr r0, r1
+ orr r0, r2
+ orr r0, r3
+ orr r0, r6
+ strh r0, [r7, #0x0]
+_02017034:
+ ldr r0, _020170F0 ; =0x0400100E
+ mov r1, #0x3
+ ldrh r2, [r0, #0x0]
+ bic r2, r1
+ ldrb r1, [r4, #0x15]
+ orr r1, r2
+ strh r1, [r0, #0x0]
+ ldr r1, [r4, #0x18]
+ cmp r1, #0x0
+ beq _02017052
+ ldrh r2, [r0, #0x0]
+ mov r1, #0x40
+ orr r1, r2
+ strh r1, [r0, #0x0]
+ b _0201705A
+_02017052:
+ ldrh r2, [r0, #0x0]
+ mov r1, #0x40
+ bic r2, r1
+ strh r2, [r0, #0x0]
+_0201705A:
+ ldr r0, [sp, #0x4]
+ mov r1, #0x2c
+ add r5, r0, #0x0
+ ldr r0, [sp, #0x0]
+ mul r5, r1
+ add r2, r0, r5
+ mov r3, #0x0
+ mov r0, #0x1
+ strh r3, [r2, #0x20]
+ lsl r0, r0, #0xc
+ str r0, [r2, #0x24]
+ str r0, [r2, #0x28]
+ str r3, [r2, #0x2c]
+ str r3, [r2, #0x30]
+ ldr r1, [r4, #0x8]
+ cmp r1, #0x0
+ beq _020170A2
+ ldr r0, [sp, #0x0]
+ ldr r6, [sp, #0x0]
+ ldr r0, [r0, #0x0]
+ add r6, #0x8
+ bl FUN_02016998
+ str r0, [r6, r5]
+ ldr r1, [r6, r5]
+ ldr r2, [r4, #0x8]
+ mov r0, #0x0
+ blx MIi_CpuClear16
+ ldr r0, [sp, #0x0]
+ ldr r2, [r4, #0x8]
+ add r1, r0, r5
+ str r2, [r1, #0xc]
+ ldr r0, [r4, #0xc]
+ str r0, [r1, #0x10]
+ b _020170A8
+_020170A2:
+ str r3, [r2, #0x8]
+ str r3, [r2, #0xc]
+ str r3, [r2, #0x10]
+_020170A8:
+ ldr r0, [sp, #0x0]
+ ldrb r1, [r4, #0x10]
+ add r0, r0, r5
+ strb r1, [r0, #0x1d]
+ ldr r1, [sp, #0x8]
+ strb r1, [r0, #0x1c]
+ ldrb r1, [r4, #0x11]
+ strb r1, [r0, #0x1e]
+ ldr r1, [sp, #0x8]
+ cmp r1, #0x0
+ bne _020170CA
+ ldrb r1, [r4, #0x11]
+ cmp r1, #0x0
+ bne _020170CA
+ mov r1, #0x20
+ strb r1, [r0, #0x1f]
+ b _020170D2
+_020170CA:
+ ldr r0, [sp, #0x0]
+ mov r1, #0x40
+ add r0, r0, r5
+ strb r1, [r0, #0x1f]
+_020170D2:
+ ldr r0, [sp, #0x0]
+ ldr r1, [sp, #0x4]
+ ldr r3, [r4, #0x0]
+ mov r2, #0x0
+ bl FUN_020179E0
+ ldr r0, [sp, #0x0]
+ ldr r1, [sp, #0x4]
+ ldr r3, [r4, #0x4]
+ mov r2, #0x3
+ bl FUN_020179E0
+ add sp, #0x18
+ pop {r3-r7, pc}
+ nop
+_020170F0: .word 0x0400100E
+
+ thumb_func_start FUN_020170F4
+FUN_020170F4: ; 0x020170F4
+ push {r3-r7, lr}
+ sub sp, #0x20
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r1, r2, #0x0
+ add r0, r3, #0x0
+ cmp r1, #0x0
+ bne _0201710C
+ mov r2, #0x2c
+ mul r2, r4
+ add r2, r5, r2
+ strb r0, [r2, #0x1e]
+_0201710C:
+ cmp r4, #0x7
+ bls _02017112
+ b _020177C4
+_02017112:
+ add r2, r4, r4
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_0201711E: ; jump table (using 16-bit offset)
+ .short _0201712E - _0201711E - 2; case 0
+ .short _0201719A - _0201711E - 2; case 1
+ .short _02017206 - _0201711E - 2; case 2
+ .short _0201733A - _0201711E - 2; case 3
+ .short _0201746E - _0201711E - 2; case 4
+ .short _020174F4 - _0201711E - 2; case 5
+ .short _02017560 - _0201711E - 2; case 6
+ .short _02017694 - _0201711E - 2; case 7
+_0201712E:
+ ldr r2, _02017480 ; =0x04000008
+ cmp r1, #0x1
+ ldrh r3, [r2, #0x0]
+ add r2, sp, #0x0
+ strh r3, [r2, #0x1e]
+ bne _0201714A
+ ldrh r3, [r2, #0x1e]
+ ldr r1, _02017484 ; =0xFFFFE0FF
+ lsl r0, r0, #0x1b
+ and r1, r3
+ lsr r0, r0, #0x13
+ orr r0, r1
+ strh r0, [r2, #0x1e]
+ b _0201715C
+_0201714A:
+ cmp r1, #0x2
+ bne _0201715C
+ ldrh r3, [r2, #0x1e]
+ mov r1, #0x3c
+ lsl r0, r0, #0x1c
+ bic r3, r1
+ lsr r0, r0, #0x1a
+ orr r0, r3
+ strh r0, [r2, #0x1e]
+_0201715C:
+ add r0, sp, #0x0
+ ldrh r3, [r0, #0x1e]
+ add sp, #0x20
+ lsl r0, r3, #0x12
+ lsr r6, r0, #0x1f
+ lsl r0, r3, #0x1a
+ lsr r2, r0, #0x1c
+ lsl r0, r3, #0x13
+ lsr r1, r0, #0x1b
+ mov r0, #0x2c
+ mul r0, r4
+ add r0, r5, r0
+ lsl r3, r3, #0x10
+ lsr r5, r3, #0x1e
+ lsl r3, r2, #0x2
+ ldrb r0, [r0, #0x1e]
+ lsl r2, r1, #0x8
+ lsl r4, r6, #0xd
+ lsl r1, r0, #0x7
+ ldr r0, _02017480 ; =0x04000008
+ mov r6, #0x43
+ ldrh r7, [r0, #0x0]
+ lsl r5, r5, #0xe
+ and r6, r7
+ orr r5, r6
+ orr r1, r5
+ orr r1, r2
+ orr r1, r3
+ orr r1, r4
+ strh r1, [r0, #0x0]
+ pop {r3-r7, pc}
+_0201719A:
+ ldr r2, _02017488 ; =0x0400000A
+ cmp r1, #0x1
+ ldrh r3, [r2, #0x0]
+ add r2, sp, #0x0
+ strh r3, [r2, #0x1c]
+ bne _020171B6
+ ldrh r3, [r2, #0x1c]
+ ldr r1, _02017484 ; =0xFFFFE0FF
+ lsl r0, r0, #0x1b
+ and r1, r3
+ lsr r0, r0, #0x13
+ orr r0, r1
+ strh r0, [r2, #0x1c]
+ b _020171C8
+_020171B6:
+ cmp r1, #0x2
+ bne _020171C8
+ ldrh r3, [r2, #0x1c]
+ mov r1, #0x3c
+ lsl r0, r0, #0x1c
+ bic r3, r1
+ lsr r0, r0, #0x1a
+ orr r0, r3
+ strh r0, [r2, #0x1c]
+_020171C8:
+ add r0, sp, #0x0
+ ldrh r3, [r0, #0x1c]
+ add sp, #0x20
+ lsl r0, r3, #0x12
+ lsr r6, r0, #0x1f
+ lsl r0, r3, #0x1a
+ lsr r2, r0, #0x1c
+ lsl r0, r3, #0x13
+ lsr r1, r0, #0x1b
+ mov r0, #0x2c
+ mul r0, r4
+ add r0, r5, r0
+ lsl r3, r3, #0x10
+ lsr r5, r3, #0x1e
+ lsl r3, r2, #0x2
+ ldrb r0, [r0, #0x1e]
+ lsl r2, r1, #0x8
+ lsl r4, r6, #0xd
+ lsl r1, r0, #0x7
+ ldr r0, _02017488 ; =0x0400000A
+ mov r6, #0x43
+ ldrh r7, [r0, #0x0]
+ lsl r5, r5, #0xe
+ and r6, r7
+ orr r5, r6
+ orr r1, r5
+ orr r1, r2
+ orr r1, r3
+ orr r1, r4
+ strh r1, [r0, #0x0]
+ pop {r3-r7, pc}
+_02017206:
+ mov r2, #0x2c
+ mul r2, r4
+ add r3, r5, r2
+ ldrb r3, [r3, #0x1c]
+ cmp r3, #0x0
+ beq _0201721A
+ cmp r3, #0x1
+ beq _0201727A
+ cmp r3, #0x2
+ beq _020172DA
+_0201721A:
+ ldr r3, _0201748C ; =0x0400000C
+ cmp r1, #0x1
+ ldrh r4, [r3, #0x0]
+ add r3, sp, #0x0
+ strh r4, [r3, #0x1a]
+ bne _02017236
+ ldrh r4, [r3, #0x1a]
+ ldr r1, _02017484 ; =0xFFFFE0FF
+ lsl r0, r0, #0x1b
+ and r1, r4
+ lsr r0, r0, #0x13
+ orr r0, r1
+ strh r0, [r3, #0x1a]
+ b _02017248
+_02017236:
+ cmp r1, #0x2
+ bne _02017248
+ ldrh r4, [r3, #0x1a]
+ mov r1, #0x3c
+ lsl r0, r0, #0x1c
+ bic r4, r1
+ lsr r0, r0, #0x1a
+ orr r0, r4
+ strh r0, [r3, #0x1a]
+_02017248:
+ add r0, sp, #0x0
+ ldrh r3, [r0, #0x1a]
+ add r2, r5, r2
+ ldr r6, _0201748C ; =0x0400000C
+ lsl r0, r3, #0x1a
+ ldrb r4, [r2, #0x1e]
+ lsr r1, r0, #0x1c
+ lsl r0, r3, #0x13
+ lsl r2, r3, #0x10
+ lsr r3, r2, #0x1e
+ ldrh r5, [r6, #0x0]
+ lsr r0, r0, #0x1b
+ lsl r2, r1, #0x2
+ lsl r1, r0, #0x8
+ lsl r0, r4, #0x7
+ mov r4, #0x43
+ and r4, r5
+ lsl r3, r3, #0xe
+ orr r3, r4
+ orr r0, r3
+ orr r0, r1
+ orr r0, r2
+ add sp, #0x20
+ strh r0, [r6, #0x0]
+ pop {r3-r7, pc}
+_0201727A:
+ ldr r2, _0201748C ; =0x0400000C
+ cmp r1, #0x1
+ ldrh r3, [r2, #0x0]
+ add r2, sp, #0x0
+ strh r3, [r2, #0x18]
+ bne _02017296
+ ldrh r3, [r2, #0x18]
+ ldr r1, _02017484 ; =0xFFFFE0FF
+ lsl r0, r0, #0x1b
+ and r1, r3
+ lsr r0, r0, #0x13
+ orr r0, r1
+ strh r0, [r2, #0x18]
+ b _020172A8
+_02017296:
+ cmp r1, #0x2
+ bne _020172A8
+ ldrh r3, [r2, #0x18]
+ mov r1, #0x3c
+ lsl r0, r0, #0x1c
+ bic r3, r1
+ lsr r0, r0, #0x1a
+ orr r0, r3
+ strh r0, [r2, #0x18]
+_020172A8:
+ add r0, sp, #0x0
+ ldrh r3, [r0, #0x18]
+ ldr r6, _0201748C ; =0x0400000C
+ add sp, #0x20
+ lsl r1, r3, #0x13
+ lsl r0, r3, #0x1a
+ lsr r4, r1, #0x1b
+ lsl r1, r3, #0x12
+ lsr r2, r1, #0x1f
+ lsl r1, r3, #0x10
+ lsr r3, r1, #0x1e
+ lsr r0, r0, #0x1c
+ lsl r1, r0, #0x2
+ lsl r0, r4, #0x8
+ ldrh r5, [r6, #0x0]
+ mov r4, #0x43
+ lsl r3, r3, #0xe
+ and r4, r5
+ orr r3, r4
+ orr r0, r3
+ lsl r2, r2, #0xd
+ orr r0, r1
+ orr r0, r2
+ strh r0, [r6, #0x0]
+ pop {r3-r7, pc}
+_020172DA:
+ ldr r2, _0201748C ; =0x0400000C
+ cmp r1, #0x1
+ ldrh r3, [r2, #0x0]
+ add r2, sp, #0x0
+ strh r3, [r2, #0x16]
+ bne _020172F6
+ ldrh r3, [r2, #0x16]
+ ldr r1, _02017484 ; =0xFFFFE0FF
+ lsl r0, r0, #0x1b
+ and r1, r3
+ lsr r0, r0, #0x13
+ orr r0, r1
+ strh r0, [r2, #0x16]
+ b _02017308
+_020172F6:
+ cmp r1, #0x2
+ bne _02017308
+ ldrh r3, [r2, #0x16]
+ mov r1, #0x38
+ lsl r0, r0, #0x1d
+ bic r3, r1
+ lsr r0, r0, #0x1a
+ orr r0, r3
+ strh r0, [r2, #0x16]
+_02017308:
+ add r0, sp, #0x0
+ ldrh r3, [r0, #0x16]
+ ldr r6, _0201748C ; =0x0400000C
+ add sp, #0x20
+ lsl r1, r3, #0x13
+ lsr r4, r1, #0x1b
+ lsl r1, r3, #0x12
+ lsr r2, r1, #0x1f
+ lsl r0, r3, #0x1a
+ lsl r1, r3, #0x10
+ lsr r3, r1, #0x1e
+ lsl r1, r4, #0x8
+ lsr r0, r0, #0x1d
+ ldrh r5, [r6, #0x0]
+ mov r4, #0x43
+ lsl r3, r3, #0xe
+ and r4, r5
+ lsl r0, r0, #0x2
+ orr r3, r4
+ orr r0, r3
+ lsl r2, r2, #0xd
+ orr r0, r1
+ orr r0, r2
+ strh r0, [r6, #0x0]
+ pop {r3-r7, pc}
+_0201733A:
+ mov r2, #0x2c
+ mul r2, r4
+ add r3, r5, r2
+ ldrb r3, [r3, #0x1c]
+ cmp r3, #0x0
+ beq _0201734E
+ cmp r3, #0x1
+ beq _020173AE
+ cmp r3, #0x2
+ beq _0201740E
+_0201734E:
+ ldr r3, _02017490 ; =0x0400000E
+ cmp r1, #0x1
+ ldrh r4, [r3, #0x0]
+ add r3, sp, #0x0
+ strh r4, [r3, #0x14]
+ bne _0201736A
+ ldrh r4, [r3, #0x14]
+ ldr r1, _02017484 ; =0xFFFFE0FF
+ lsl r0, r0, #0x1b
+ and r1, r4
+ lsr r0, r0, #0x13
+ orr r0, r1
+ strh r0, [r3, #0x14]
+ b _0201737C
+_0201736A:
+ cmp r1, #0x2
+ bne _0201737C
+ ldrh r4, [r3, #0x14]
+ mov r1, #0x3c
+ lsl r0, r0, #0x1c
+ bic r4, r1
+ lsr r0, r0, #0x1a
+ orr r0, r4
+ strh r0, [r3, #0x14]
+_0201737C:
+ add r0, sp, #0x0
+ ldrh r3, [r0, #0x14]
+ add r2, r5, r2
+ ldr r6, _02017490 ; =0x0400000E
+ lsl r0, r3, #0x1a
+ ldrb r4, [r2, #0x1e]
+ lsr r1, r0, #0x1c
+ lsl r0, r3, #0x13
+ lsl r2, r3, #0x10
+ lsr r3, r2, #0x1e
+ ldrh r5, [r6, #0x0]
+ lsr r0, r0, #0x1b
+ lsl r2, r1, #0x2
+ lsl r1, r0, #0x8
+ lsl r0, r4, #0x7
+ mov r4, #0x43
+ and r4, r5
+ lsl r3, r3, #0xe
+ orr r3, r4
+ orr r0, r3
+ orr r0, r1
+ orr r0, r2
+ add sp, #0x20
+ strh r0, [r6, #0x0]
+ pop {r3-r7, pc}
+_020173AE:
+ ldr r2, _02017490 ; =0x0400000E
+ cmp r1, #0x1
+ ldrh r3, [r2, #0x0]
+ add r2, sp, #0x0
+ strh r3, [r2, #0x12]
+ bne _020173CA
+ ldrh r3, [r2, #0x12]
+ ldr r1, _02017484 ; =0xFFFFE0FF
+ lsl r0, r0, #0x1b
+ and r1, r3
+ lsr r0, r0, #0x13
+ orr r0, r1
+ strh r0, [r2, #0x12]
+ b _020173DC
+_020173CA:
+ cmp r1, #0x2
+ bne _020173DC
+ ldrh r3, [r2, #0x12]
+ mov r1, #0x3c
+ lsl r0, r0, #0x1c
+ bic r3, r1
+ lsr r0, r0, #0x1a
+ orr r0, r3
+ strh r0, [r2, #0x12]
+_020173DC:
+ add r0, sp, #0x0
+ ldrh r3, [r0, #0x12]
+ ldr r6, _02017490 ; =0x0400000E
+ add sp, #0x20
+ lsl r1, r3, #0x13
+ lsl r0, r3, #0x1a
+ lsr r4, r1, #0x1b
+ lsl r1, r3, #0x12
+ lsr r2, r1, #0x1f
+ lsl r1, r3, #0x10
+ lsr r3, r1, #0x1e
+ lsr r0, r0, #0x1c
+ lsl r1, r0, #0x2
+ lsl r0, r4, #0x8
+ ldrh r5, [r6, #0x0]
+ mov r4, #0x43
+ lsl r3, r3, #0xe
+ and r4, r5
+ orr r3, r4
+ orr r0, r3
+ lsl r2, r2, #0xd
+ orr r0, r1
+ orr r0, r2
+ strh r0, [r6, #0x0]
+ pop {r3-r7, pc}
+_0201740E:
+ ldr r2, _02017490 ; =0x0400000E
+ cmp r1, #0x1
+ ldrh r3, [r2, #0x0]
+ add r2, sp, #0x0
+ strh r3, [r2, #0x10]
+ bne _0201742A
+ ldrh r3, [r2, #0x10]
+ ldr r1, _02017484 ; =0xFFFFE0FF
+ lsl r0, r0, #0x1b
+ and r1, r3
+ lsr r0, r0, #0x13
+ orr r0, r1
+ strh r0, [r2, #0x10]
+ b _0201743C
+_0201742A:
+ cmp r1, #0x2
+ bne _0201743C
+ ldrh r3, [r2, #0x10]
+ mov r1, #0x38
+ lsl r0, r0, #0x1d
+ bic r3, r1
+ lsr r0, r0, #0x1a
+ orr r0, r3
+ strh r0, [r2, #0x10]
+_0201743C:
+ add r0, sp, #0x0
+ ldrh r3, [r0, #0x10]
+ ldr r6, _02017490 ; =0x0400000E
+ add sp, #0x20
+ lsl r1, r3, #0x13
+ lsr r4, r1, #0x1b
+ lsl r1, r3, #0x12
+ lsr r2, r1, #0x1f
+ lsl r0, r3, #0x1a
+ lsl r1, r3, #0x10
+ lsr r3, r1, #0x1e
+ lsl r1, r4, #0x8
+ lsr r0, r0, #0x1d
+ ldrh r5, [r6, #0x0]
+ mov r4, #0x43
+ lsl r3, r3, #0xe
+ and r4, r5
+ lsl r0, r0, #0x2
+ orr r3, r4
+ orr r0, r3
+ lsl r2, r2, #0xd
+ orr r0, r1
+ orr r0, r2
+ strh r0, [r6, #0x0]
+ pop {r3-r7, pc}
+_0201746E:
+ ldr r2, _02017494 ; =0x04001008
+ cmp r1, #0x1
+ ldrh r3, [r2, #0x0]
+ add r2, sp, #0x0
+ strh r3, [r2, #0xe]
+ bne _020174A4
+ ldrh r3, [r2, #0xe]
+ ldr r1, _02017484 ; =0xFFFFE0FF
+ b _02017498
+ .balign 4
+_02017480: .word 0x04000008
+_02017484: .word 0xFFFFE0FF
+_02017488: .word 0x0400000A
+_0201748C: .word 0x0400000C
+_02017490: .word 0x0400000E
+_02017494: .word 0x04001008
+_02017498:
+ lsl r0, r0, #0x1b
+ and r1, r3
+ lsr r0, r0, #0x13
+ orr r0, r1
+ strh r0, [r2, #0xe]
+ b _020174B6
+_020174A4:
+ cmp r1, #0x2
+ bne _020174B6
+ ldrh r3, [r2, #0xe]
+ mov r1, #0x3c
+ lsl r0, r0, #0x1c
+ bic r3, r1
+ lsr r0, r0, #0x1a
+ orr r0, r3
+ strh r0, [r2, #0xe]
+_020174B6:
+ add r0, sp, #0x0
+ ldrh r3, [r0, #0xe]
+ add sp, #0x20
+ lsl r0, r3, #0x12
+ lsr r6, r0, #0x1f
+ lsl r0, r3, #0x1a
+ lsr r2, r0, #0x1c
+ lsl r0, r3, #0x13
+ lsr r1, r0, #0x1b
+ mov r0, #0x2c
+ mul r0, r4
+ add r0, r5, r0
+ lsl r3, r3, #0x10
+ lsr r5, r3, #0x1e
+ lsl r3, r2, #0x2
+ ldrb r0, [r0, #0x1e]
+ lsl r2, r1, #0x8
+ lsl r4, r6, #0xd
+ lsl r1, r0, #0x7
+ ldr r0, _020177C8 ; =0x04001008
+ mov r6, #0x43
+ ldrh r7, [r0, #0x0]
+ lsl r5, r5, #0xe
+ and r6, r7
+ orr r5, r6
+ orr r1, r5
+ orr r1, r2
+ orr r1, r3
+ orr r1, r4
+ strh r1, [r0, #0x0]
+ pop {r3-r7, pc}
+_020174F4:
+ ldr r2, _020177CC ; =0x0400100A
+ cmp r1, #0x1
+ ldrh r3, [r2, #0x0]
+ add r2, sp, #0x0
+ strh r3, [r2, #0xc]
+ bne _02017510
+ ldrh r3, [r2, #0xc]
+ ldr r1, _020177D0 ; =0xFFFFE0FF
+ lsl r0, r0, #0x1b
+ and r1, r3
+ lsr r0, r0, #0x13
+ orr r0, r1
+ strh r0, [r2, #0xc]
+ b _02017522
+_02017510:
+ cmp r1, #0x2
+ bne _02017522
+ ldrh r3, [r2, #0xc]
+ mov r1, #0x3c
+ lsl r0, r0, #0x1c
+ bic r3, r1
+ lsr r0, r0, #0x1a
+ orr r0, r3
+ strh r0, [r2, #0xc]
+_02017522:
+ add r0, sp, #0x0
+ ldrh r3, [r0, #0xc]
+ add sp, #0x20
+ lsl r0, r3, #0x12
+ lsr r6, r0, #0x1f
+ lsl r0, r3, #0x1a
+ lsr r2, r0, #0x1c
+ lsl r0, r3, #0x13
+ lsr r1, r0, #0x1b
+ mov r0, #0x2c
+ mul r0, r4
+ add r0, r5, r0
+ lsl r3, r3, #0x10
+ lsr r5, r3, #0x1e
+ lsl r3, r2, #0x2
+ ldrb r0, [r0, #0x1e]
+ lsl r2, r1, #0x8
+ lsl r4, r6, #0xd
+ lsl r1, r0, #0x7
+ ldr r0, _020177CC ; =0x0400100A
+ mov r6, #0x43
+ ldrh r7, [r0, #0x0]
+ lsl r5, r5, #0xe
+ and r6, r7
+ orr r5, r6
+ orr r1, r5
+ orr r1, r2
+ orr r1, r3
+ orr r1, r4
+ strh r1, [r0, #0x0]
+ pop {r3-r7, pc}
+_02017560:
+ mov r2, #0x2c
+ mul r2, r4
+ add r3, r5, r2
+ ldrb r3, [r3, #0x1c]
+ cmp r3, #0x0
+ beq _02017574
+ cmp r3, #0x1
+ beq _020175D4
+ cmp r3, #0x2
+ beq _02017634
+_02017574:
+ ldr r3, _020177D4 ; =0x0400100C
+ cmp r1, #0x1
+ ldrh r4, [r3, #0x0]
+ add r3, sp, #0x0
+ strh r4, [r3, #0xa]
+ bne _02017590
+ ldrh r4, [r3, #0xa]
+ ldr r1, _020177D0 ; =0xFFFFE0FF
+ lsl r0, r0, #0x1b
+ and r1, r4
+ lsr r0, r0, #0x13
+ orr r0, r1
+ strh r0, [r3, #0xa]
+ b _020175A2
+_02017590:
+ cmp r1, #0x2
+ bne _020175A2
+ ldrh r4, [r3, #0xa]
+ mov r1, #0x3c
+ lsl r0, r0, #0x1c
+ bic r4, r1
+ lsr r0, r0, #0x1a
+ orr r0, r4
+ strh r0, [r3, #0xa]
+_020175A2:
+ add r0, sp, #0x0
+ ldrh r3, [r0, #0xa]
+ add r2, r5, r2
+ ldr r6, _020177D4 ; =0x0400100C
+ lsl r0, r3, #0x1a
+ ldrb r4, [r2, #0x1e]
+ lsr r1, r0, #0x1c
+ lsl r0, r3, #0x13
+ lsl r2, r3, #0x10
+ lsr r3, r2, #0x1e
+ ldrh r5, [r6, #0x0]
+ lsr r0, r0, #0x1b
+ lsl r2, r1, #0x2
+ lsl r1, r0, #0x8
+ lsl r0, r4, #0x7
+ mov r4, #0x43
+ and r4, r5
+ lsl r3, r3, #0xe
+ orr r3, r4
+ orr r0, r3
+ orr r0, r1
+ orr r0, r2
+ add sp, #0x20
+ strh r0, [r6, #0x0]
+ pop {r3-r7, pc}
+_020175D4:
+ ldr r2, _020177D4 ; =0x0400100C
+ cmp r1, #0x1
+ ldrh r3, [r2, #0x0]
+ add r2, sp, #0x0
+ strh r3, [r2, #0x8]
+ bne _020175F0
+ ldrh r3, [r2, #0x8]
+ ldr r1, _020177D0 ; =0xFFFFE0FF
+ lsl r0, r0, #0x1b
+ and r1, r3
+ lsr r0, r0, #0x13
+ orr r0, r1
+ strh r0, [r2, #0x8]
+ b _02017602
+_020175F0:
+ cmp r1, #0x2
+ bne _02017602
+ ldrh r3, [r2, #0x8]
+ mov r1, #0x3c
+ lsl r0, r0, #0x1c
+ bic r3, r1
+ lsr r0, r0, #0x1a
+ orr r0, r3
+ strh r0, [r2, #0x8]
+_02017602:
+ add r0, sp, #0x0
+ ldrh r3, [r0, #0x8]
+ ldr r6, _020177D4 ; =0x0400100C
+ add sp, #0x20
+ lsl r1, r3, #0x13
+ lsl r0, r3, #0x1a
+ lsr r4, r1, #0x1b
+ lsl r1, r3, #0x12
+ lsr r2, r1, #0x1f
+ lsl r1, r3, #0x10
+ lsr r3, r1, #0x1e
+ lsr r0, r0, #0x1c
+ lsl r1, r0, #0x2
+ lsl r0, r4, #0x8
+ ldrh r5, [r6, #0x0]
+ mov r4, #0x43
+ lsl r3, r3, #0xe
+ and r4, r5
+ orr r3, r4
+ orr r0, r3
+ lsl r2, r2, #0xd
+ orr r0, r1
+ orr r0, r2
+ strh r0, [r6, #0x0]
+ pop {r3-r7, pc}
+_02017634:
+ ldr r2, _020177D4 ; =0x0400100C
+ cmp r1, #0x1
+ ldrh r3, [r2, #0x0]
+ add r2, sp, #0x0
+ strh r3, [r2, #0x6]
+ bne _02017650
+ ldrh r3, [r2, #0x6]
+ ldr r1, _020177D0 ; =0xFFFFE0FF
+ lsl r0, r0, #0x1b
+ and r1, r3
+ lsr r0, r0, #0x13
+ orr r0, r1
+ strh r0, [r2, #0x6]
+ b _02017662
+_02017650:
+ cmp r1, #0x2
+ bne _02017662
+ ldrh r3, [r2, #0x6]
+ mov r1, #0x38
+ lsl r0, r0, #0x1d
+ bic r3, r1
+ lsr r0, r0, #0x1a
+ orr r0, r3
+ strh r0, [r2, #0x6]
+_02017662:
+ add r0, sp, #0x0
+ ldrh r3, [r0, #0x6]
+ ldr r6, _020177D4 ; =0x0400100C
+ add sp, #0x20
+ lsl r1, r3, #0x13
+ lsr r4, r1, #0x1b
+ lsl r1, r3, #0x12
+ lsr r2, r1, #0x1f
+ lsl r0, r3, #0x1a
+ lsl r1, r3, #0x10
+ lsr r3, r1, #0x1e
+ lsl r1, r4, #0x8
+ lsr r0, r0, #0x1d
+ ldrh r5, [r6, #0x0]
+ mov r4, #0x43
+ lsl r3, r3, #0xe
+ and r4, r5
+ lsl r0, r0, #0x2
+ orr r3, r4
+ orr r0, r3
+ lsl r2, r2, #0xd
+ orr r0, r1
+ orr r0, r2
+ strh r0, [r6, #0x0]
+ pop {r3-r7, pc}
+_02017694:
+ mov r2, #0x2c
+ mul r2, r4
+ add r3, r5, r2
+ ldrb r3, [r3, #0x1c]
+ cmp r3, #0x0
+ beq _020176A8
+ cmp r3, #0x1
+ beq _02017708
+ cmp r3, #0x2
+ beq _02017768
+_020176A8:
+ ldr r3, _020177D8 ; =0x0400100E
+ cmp r1, #0x1
+ ldrh r4, [r3, #0x0]
+ add r3, sp, #0x0
+ strh r4, [r3, #0x4]
+ bne _020176C4
+ ldrh r4, [r3, #0x4]
+ ldr r1, _020177D0 ; =0xFFFFE0FF
+ lsl r0, r0, #0x1b
+ and r1, r4
+ lsr r0, r0, #0x13
+ orr r0, r1
+ strh r0, [r3, #0x4]
+ b _020176D6
+_020176C4:
+ cmp r1, #0x2
+ bne _020176D6
+ ldrh r4, [r3, #0x4]
+ mov r1, #0x3c
+ lsl r0, r0, #0x1c
+ bic r4, r1
+ lsr r0, r0, #0x1a
+ orr r0, r4
+ strh r0, [r3, #0x4]
+_020176D6:
+ add r0, sp, #0x0
+ ldrh r3, [r0, #0x4]
+ add r2, r5, r2
+ ldr r6, _020177D8 ; =0x0400100E
+ lsl r0, r3, #0x1a
+ ldrb r4, [r2, #0x1e]
+ lsr r1, r0, #0x1c
+ lsl r0, r3, #0x13
+ lsl r2, r3, #0x10
+ lsr r3, r2, #0x1e
+ ldrh r5, [r6, #0x0]
+ lsr r0, r0, #0x1b
+ lsl r2, r1, #0x2
+ lsl r1, r0, #0x8
+ lsl r0, r4, #0x7
+ mov r4, #0x43
+ and r4, r5
+ lsl r3, r3, #0xe
+ orr r3, r4
+ orr r0, r3
+ orr r0, r1
+ orr r0, r2
+ add sp, #0x20
+ strh r0, [r6, #0x0]
+ pop {r3-r7, pc}
+_02017708:
+ ldr r2, _020177D8 ; =0x0400100E
+ cmp r1, #0x1
+ ldrh r3, [r2, #0x0]
+ add r2, sp, #0x0
+ strh r3, [r2, #0x2]
+ bne _02017724
+ ldrh r3, [r2, #0x2]
+ ldr r1, _020177D0 ; =0xFFFFE0FF
+ lsl r0, r0, #0x1b
+ and r1, r3
+ lsr r0, r0, #0x13
+ orr r0, r1
+ strh r0, [r2, #0x2]
+ b _02017736
+_02017724:
+ cmp r1, #0x2
+ bne _02017736
+ ldrh r3, [r2, #0x2]
+ mov r1, #0x3c
+ lsl r0, r0, #0x1c
+ bic r3, r1
+ lsr r0, r0, #0x1a
+ orr r0, r3
+ strh r0, [r2, #0x2]
+_02017736:
+ add r0, sp, #0x0
+ ldrh r3, [r0, #0x2]
+ ldr r6, _020177D8 ; =0x0400100E
+ add sp, #0x20
+ lsl r1, r3, #0x13
+ lsl r0, r3, #0x1a
+ lsr r4, r1, #0x1b
+ lsl r1, r3, #0x12
+ lsr r2, r1, #0x1f
+ lsl r1, r3, #0x10
+ lsr r3, r1, #0x1e
+ lsr r0, r0, #0x1c
+ lsl r1, r0, #0x2
+ lsl r0, r4, #0x8
+ ldrh r5, [r6, #0x0]
+ mov r4, #0x43
+ lsl r3, r3, #0xe
+ and r4, r5
+ orr r3, r4
+ orr r0, r3
+ lsl r2, r2, #0xd
+ orr r0, r1
+ orr r0, r2
+ strh r0, [r6, #0x0]
+ pop {r3-r7, pc}
+_02017768:
+ ldr r2, _020177D8 ; =0x0400100E
+ cmp r1, #0x1
+ ldrh r3, [r2, #0x0]
+ add r2, sp, #0x0
+ strh r3, [r2, #0x0]
+ bne _02017784
+ ldrh r3, [r2, #0x0]
+ ldr r1, _020177D0 ; =0xFFFFE0FF
+ lsl r0, r0, #0x1b
+ and r1, r3
+ lsr r0, r0, #0x13
+ orr r0, r1
+ strh r0, [r2, #0x0]
+ b _02017796
+_02017784:
+ cmp r1, #0x2
+ bne _02017796
+ ldrh r3, [r2, #0x0]
+ mov r1, #0x38
+ lsl r0, r0, #0x1d
+ bic r3, r1
+ lsr r0, r0, #0x1a
+ orr r0, r3
+ strh r0, [r2, #0x0]
+_02017796:
+ add r0, sp, #0x0
+ ldrh r3, [r0, #0x0]
+ ldr r6, _020177D8 ; =0x0400100E
+ lsl r1, r3, #0x13
+ lsr r4, r1, #0x1b
+ lsl r1, r3, #0x12
+ lsr r2, r1, #0x1f
+ lsl r0, r3, #0x1a
+ lsl r1, r3, #0x10
+ lsr r3, r1, #0x1e
+ lsl r1, r4, #0x8
+ lsr r0, r0, #0x1d
+ ldrh r5, [r6, #0x0]
+ mov r4, #0x43
+ lsl r3, r3, #0xe
+ and r4, r5
+ lsl r0, r0, #0x2
+ orr r3, r4
+ orr r0, r3
+ lsl r2, r2, #0xd
+ orr r0, r1
+ orr r0, r2
+ strh r0, [r6, #0x0]
+_020177C4:
+ add sp, #0x20
+ pop {r3-r7, pc}
+ .balign 4
+_020177C8: .word 0x04001008
+_020177CC: .word 0x0400100A
+_020177D0: .word 0xFFFFE0FF
+_020177D4: .word 0x0400100C
+_020177D8: .word 0x0400100E
+
+ thumb_func_start FUN_020177DC
+FUN_020177DC: ; 0x020177DC
+ cmp r1, #0x0
+ beq _020177EA
+ cmp r1, #0x1
+ beq _0201780A
+ cmp r1, #0x2
+ beq _0201782A
+ b _0201784A
+_020177EA:
+ cmp r0, #0x1
+ bne _020177F2
+ mov r0, #0x0
+ bx lr
+_020177F2:
+ cmp r0, #0x2
+ bne _020177FA
+ mov r0, #0x2
+ bx lr
+_020177FA:
+ cmp r0, #0x3
+ bne _02017802
+ mov r0, #0x1
+ bx lr
+_02017802:
+ cmp r0, #0x4
+ bne _0201784A
+ mov r0, #0x3
+ bx lr
+_0201780A:
+ cmp r0, #0x0
+ bne _02017812
+ mov r0, #0x0
+ bx lr
+_02017812:
+ cmp r0, #0x1
+ bne _0201781A
+ mov r0, #0x1
+ bx lr
+_0201781A:
+ cmp r0, #0x4
+ bne _02017822
+ mov r0, #0x2
+ bx lr
+_02017822:
+ cmp r0, #0x5
+ bne _0201784A
+ mov r0, #0x3
+ bx lr
+_0201782A:
+ cmp r0, #0x0
+ bne _02017832
+ mov r0, #0x0
+ bx lr
+_02017832:
+ cmp r0, #0x1
+ bne _0201783A
+ mov r0, #0x1
+ bx lr
+_0201783A:
+ cmp r0, #0x4
+ bne _02017842
+ mov r0, #0x2
+ bx lr
+_02017842:
+ cmp r0, #0x5
+ bne _0201784A
+ mov r0, #0x3
+ bx lr
+_0201784A:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02017850
+FUN_02017850: ; 0x02017850
+ cmp r0, #0x5
+ bhi _0201789E
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02017860: ; jump table (using 16-bit offset)
+ .short _0201786C - _02017860 - 2; case 0
+ .short _02017874 - _02017860 - 2; case 1
+ .short _0201787C - _02017860 - 2; case 2
+ .short _02017886 - _02017860 - 2; case 3
+ .short _02017890 - _02017860 - 2; case 4
+ .short _02017898 - _02017860 - 2; case 5
+_0201786C:
+ mov r0, #0x10
+ strb r0, [r1, #0x0]
+ strb r0, [r2, #0x0]
+ bx lr
+_02017874:
+ mov r0, #0x20
+ strb r0, [r1, #0x0]
+ strb r0, [r2, #0x0]
+ bx lr
+_0201787C:
+ mov r0, #0x20
+ strb r0, [r1, #0x0]
+ mov r0, #0x40
+ strb r0, [r2, #0x0]
+ bx lr
+_02017886:
+ mov r0, #0x40
+ strb r0, [r1, #0x0]
+ mov r0, #0x20
+ strb r0, [r2, #0x0]
+ bx lr
+_02017890:
+ mov r0, #0x40
+ strb r0, [r1, #0x0]
+ strb r0, [r2, #0x0]
+ bx lr
+_02017898:
+ mov r0, #0x80
+ strb r0, [r1, #0x0]
+ strb r0, [r2, #0x0]
+_0201789E:
+ bx lr
+
+ thumb_func_start FUN_020178A0
+FUN_020178A0: ; 0x020178A0
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ mov r2, #0x2c
+ add r5, r1, #0x0
+ mul r5, r2
+ add r4, #0x8
+ ldr r0, [r4, r5]
+ cmp r0, #0x0
+ beq _020178BA
+ bl FUN_02016A18
+ mov r0, #0x0
+ str r0, [r4, r5]
+_020178BA:
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_020178BC
+FUN_020178BC: ; 0x020178BC
+ cmp r0, #0x7
+ bhi _0201795A
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_020178CC: ; jump table (using 16-bit offset)
+ .short _020178DC - _020178CC - 2; case 0
+ .short _020178EC - _020178CC - 2; case 1
+ .short _020178FC - _020178CC - 2; case 2
+ .short _0201790C - _020178CC - 2; case 3
+ .short _0201791C - _020178CC - 2; case 4
+ .short _0201792C - _020178CC - 2; case 5
+ .short _0201793C - _020178CC - 2; case 6
+ .short _0201794C - _020178CC - 2; case 7
+_020178DC:
+ ldr r2, _0201795C ; =0x04000008
+ mov r0, #0x3
+ ldrh r3, [r2, #0x0]
+ bic r3, r0
+ add r0, r3, #0x0
+ orr r0, r1
+ strh r0, [r2, #0x0]
+ bx lr
+_020178EC:
+ ldr r2, _02017960 ; =0x0400000A
+ mov r0, #0x3
+ ldrh r3, [r2, #0x0]
+ bic r3, r0
+ add r0, r3, #0x0
+ orr r0, r1
+ strh r0, [r2, #0x0]
+ bx lr
+_020178FC:
+ ldr r2, _02017964 ; =0x0400000C
+ mov r0, #0x3
+ ldrh r3, [r2, #0x0]
+ bic r3, r0
+ add r0, r3, #0x0
+ orr r0, r1
+ strh r0, [r2, #0x0]
+ bx lr
+_0201790C:
+ ldr r2, _02017968 ; =0x0400000E
+ mov r0, #0x3
+ ldrh r3, [r2, #0x0]
+ bic r3, r0
+ add r0, r3, #0x0
+ orr r0, r1
+ strh r0, [r2, #0x0]
+ bx lr
+_0201791C:
+ ldr r2, _0201796C ; =0x04001008
+ mov r0, #0x3
+ ldrh r3, [r2, #0x0]
+ bic r3, r0
+ add r0, r3, #0x0
+ orr r0, r1
+ strh r0, [r2, #0x0]
+ bx lr
+_0201792C:
+ ldr r2, _02017970 ; =0x0400100A
+ mov r0, #0x3
+ ldrh r3, [r2, #0x0]
+ bic r3, r0
+ add r0, r3, #0x0
+ orr r0, r1
+ strh r0, [r2, #0x0]
+ bx lr
+_0201793C:
+ ldr r2, _02017974 ; =0x0400100C
+ mov r0, #0x3
+ ldrh r3, [r2, #0x0]
+ bic r3, r0
+ add r0, r3, #0x0
+ orr r0, r1
+ strh r0, [r2, #0x0]
+ bx lr
+_0201794C:
+ ldr r2, _02017978 ; =0x0400100E
+ mov r0, #0x3
+ ldrh r3, [r2, #0x0]
+ bic r3, r0
+ add r0, r3, #0x0
+ orr r0, r1
+ strh r0, [r2, #0x0]
+_0201795A:
+ bx lr
+ .balign 4
+_0201795C: .word 0x04000008
+_02017960: .word 0x0400000A
+_02017964: .word 0x0400000C
+_02017968: .word 0x0400000E
+_0201796C: .word 0x04001008
+_02017970: .word 0x0400100A
+_02017974: .word 0x0400100C
+_02017978: .word 0x0400100E
+
+ thumb_func_start FUN_0201797C
+FUN_0201797C: ; 0x0201797C
+ push {r3, lr}
+ cmp r0, #0x7
+ bhi _020179DC
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0201798E: ; jump table (using 16-bit offset)
+ .short _0201799E - _0201798E - 2; case 0
+ .short _020179A6 - _0201798E - 2; case 1
+ .short _020179AE - _0201798E - 2; case 2
+ .short _020179B6 - _0201798E - 2; case 3
+ .short _020179BE - _0201798E - 2; case 4
+ .short _020179C6 - _0201798E - 2; case 5
+ .short _020179CE - _0201798E - 2; case 6
+ .short _020179D6 - _0201798E - 2; case 7
+_0201799E:
+ mov r0, #0x1
+ bl FUN_0201E6E4
+ pop {r3, pc}
+_020179A6:
+ mov r0, #0x2
+ bl FUN_0201E6E4
+ pop {r3, pc}
+_020179AE:
+ mov r0, #0x4
+ bl FUN_0201E6E4
+ pop {r3, pc}
+_020179B6:
+ mov r0, #0x8
+ bl FUN_0201E6E4
+ pop {r3, pc}
+_020179BE:
+ mov r0, #0x1
+ bl FUN_0201E74C
+ pop {r3, pc}
+_020179C6:
+ mov r0, #0x2
+ bl FUN_0201E74C
+ pop {r3, pc}
+_020179CE:
+ mov r0, #0x4
+ bl FUN_0201E74C
+ pop {r3, pc}
+_020179D6:
+ mov r0, #0x8
+ bl FUN_0201E74C
+_020179DC:
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_020179E0
+FUN_020179E0: ; 0x020179E0
+ push {r4-r6, lr}
+ add r5, r1, #0x0
+ add r4, r0, #0x0
+ mov r0, #0x2c
+ add r6, r5, #0x0
+ mul r6, r0
+ add r0, r4, #0x0
+ add r0, #0x8
+ add r1, r2, #0x0
+ add r2, r3, #0x0
+ add r0, r0, r6
+ bl FUN_02017B8C
+ add r0, r4, r6
+ ldr r1, [r0, #0x14]
+ ldr r0, [r0, #0x18]
+ cmp r5, #0x7
+ bls _02017A06
+ b _02017B1C
+_02017A06:
+ add r2, r5, r5
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_02017A12: ; jump table (using 16-bit offset)
+ .short _02017A22 - _02017A12 - 2; case 0
+ .short _02017A38 - _02017A12 - 2; case 1
+ .short _02017A4E - _02017A12 - 2; case 2
+ .short _02017A78 - _02017A12 - 2; case 3
+ .short _02017AA2 - _02017A12 - 2; case 4
+ .short _02017AB8 - _02017A12 - 2; case 5
+ .short _02017ACE - _02017A12 - 2; case 6
+ .short _02017AF6 - _02017A12 - 2; case 7
+_02017A22:
+ ldr r2, _02017B20 ; =0x000001FF
+ add r3, r1, #0x0
+ lsl r1, r0, #0x10
+ lsl r0, r2, #0x10
+ and r3, r2
+ and r0, r1
+ add r1, r3, #0x0
+ orr r1, r0
+ ldr r0, _02017B24 ; =0x04000010
+ str r1, [r0, #0x0]
+ pop {r4-r6, pc}
+_02017A38:
+ ldr r2, _02017B20 ; =0x000001FF
+ add r3, r1, #0x0
+ lsl r1, r0, #0x10
+ lsl r0, r2, #0x10
+ and r3, r2
+ and r0, r1
+ add r1, r3, #0x0
+ orr r1, r0
+ ldr r0, _02017B28 ; =0x04000014
+ str r1, [r0, #0x0]
+ pop {r4-r6, pc}
+_02017A4E:
+ add r2, r4, #0x0
+ add r2, #0x74
+ ldrb r2, [r2, #0x0]
+ cmp r2, #0x0
+ bne _02017A6E
+ ldr r2, _02017B20 ; =0x000001FF
+ add r3, r1, #0x0
+ lsl r1, r0, #0x10
+ lsl r0, r2, #0x10
+ and r3, r2
+ and r0, r1
+ add r1, r3, #0x0
+ orr r1, r0
+ ldr r0, _02017B2C ; =0x04000018
+ str r1, [r0, #0x0]
+ pop {r4-r6, pc}
+_02017A6E:
+ add r0, r4, #0x0
+ mov r1, #0x2
+ bl FUN_02017C6C
+ pop {r4-r6, pc}
+_02017A78:
+ add r2, r4, #0x0
+ add r2, #0xa0
+ ldrb r2, [r2, #0x0]
+ cmp r2, #0x0
+ bne _02017A98
+ ldr r2, _02017B20 ; =0x000001FF
+ add r3, r1, #0x0
+ lsl r1, r0, #0x10
+ lsl r0, r2, #0x10
+ and r3, r2
+ and r0, r1
+ add r1, r3, #0x0
+ orr r1, r0
+ ldr r0, _02017B30 ; =0x0400001C
+ str r1, [r0, #0x0]
+ pop {r4-r6, pc}
+_02017A98:
+ add r0, r4, #0x0
+ mov r1, #0x3
+ bl FUN_02017C6C
+ pop {r4-r6, pc}
+_02017AA2:
+ ldr r2, _02017B20 ; =0x000001FF
+ add r3, r1, #0x0
+ lsl r1, r0, #0x10
+ lsl r0, r2, #0x10
+ and r3, r2
+ and r0, r1
+ add r1, r3, #0x0
+ orr r1, r0
+ ldr r0, _02017B34 ; =0x04001010
+ str r1, [r0, #0x0]
+ pop {r4-r6, pc}
+_02017AB8:
+ ldr r2, _02017B20 ; =0x000001FF
+ add r3, r1, #0x0
+ lsl r1, r0, #0x10
+ lsl r0, r2, #0x10
+ and r3, r2
+ and r0, r1
+ add r1, r3, #0x0
+ orr r1, r0
+ ldr r0, _02017B38 ; =0x04001014
+ str r1, [r0, #0x0]
+ pop {r4-r6, pc}
+_02017ACE:
+ mov r2, #0x49
+ lsl r2, r2, #0x2
+ ldrb r3, [r4, r2]
+ cmp r3, #0x0
+ bne _02017AEC
+ add r2, #0xdb
+ and r2, r1
+ lsl r1, r0, #0x10
+ ldr r0, _02017B3C ; =0x01FF0000
+ and r0, r1
+ add r1, r2, #0x0
+ orr r1, r0
+ ldr r0, _02017B40 ; =0x04001018
+ str r1, [r0, #0x0]
+ pop {r4-r6, pc}
+_02017AEC:
+ add r0, r4, #0x0
+ mov r1, #0x6
+ bl FUN_02017C6C
+ pop {r4-r6, pc}
+_02017AF6:
+ mov r2, #0x15
+ lsl r2, r2, #0x4
+ ldrb r3, [r4, r2]
+ cmp r3, #0x0
+ bne _02017B14
+ add r2, #0xaf
+ and r2, r1
+ lsl r1, r0, #0x10
+ ldr r0, _02017B3C ; =0x01FF0000
+ and r0, r1
+ add r1, r2, #0x0
+ orr r1, r0
+ ldr r0, _02017B44 ; =0x0400101C
+ str r1, [r0, #0x0]
+ pop {r4-r6, pc}
+_02017B14:
+ add r0, r4, #0x0
+ mov r1, #0x7
+ bl FUN_02017C6C
+_02017B1C:
+ pop {r4-r6, pc}
+ nop
+_02017B20: .word 0x000001FF
+_02017B24: .word 0x04000010
+_02017B28: .word 0x04000014
+_02017B2C: .word 0x04000018
+_02017B30: .word 0x0400001C
+_02017B34: .word 0x04001010
+_02017B38: .word 0x04001014
+_02017B3C: .word 0x01FF0000
+_02017B40: .word 0x04001018
+_02017B44: .word 0x0400101C
+
+ thumb_func_start FUN_02017B48
+FUN_02017B48: ; 0x02017B48
+ mov r2, #0x2c
+ mul r2, r1
+ add r0, r0, r2
+ ldr r0, [r0, #0x14]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02017B54
+FUN_02017B54: ; 0x02017B54
+ mov r2, #0x2c
+ mul r2, r1
+ add r0, r0, r2
+ ldr r0, [r0, #0x18]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02017B60
+FUN_02017B60: ; 0x02017B60
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r1, r5, #0x0
+ mov r0, #0x2c
+ add r1, #0x8
+ mul r0, r4
+ add r0, r1, r0
+ add r1, r2, #0x0
+ add r2, r3, #0x0
+ bl FUN_02017B8C
+ ldr r0, [sp, #0x18]
+ ldr r2, [sp, #0x10]
+ str r0, [sp, #0x0]
+ ldr r3, [sp, #0x14]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02017BD0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02017B8C
+FUN_02017B8C: ; 0x02017B8C
+ cmp r1, #0x5
+ bhi _02017BCE
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02017B9C: ; jump table (using 16-bit offset)
+ .short _02017BA8 - _02017B9C - 2; case 0
+ .short _02017BAC - _02017B9C - 2; case 1
+ .short _02017BB4 - _02017B9C - 2; case 2
+ .short _02017BBC - _02017B9C - 2; case 3
+ .short _02017BC0 - _02017B9C - 2; case 4
+ .short _02017BC8 - _02017B9C - 2; case 5
+_02017BA8:
+ str r2, [r0, #0xc]
+ bx lr
+_02017BAC:
+ ldr r1, [r0, #0xc]
+ add r1, r1, r2
+ str r1, [r0, #0xc]
+ bx lr
+_02017BB4:
+ ldr r1, [r0, #0xc]
+ sub r1, r1, r2
+ str r1, [r0, #0xc]
+ bx lr
+_02017BBC:
+ str r2, [r0, #0x10]
+ bx lr
+_02017BC0:
+ ldr r1, [r0, #0x10]
+ add r1, r1, r2
+ str r1, [r0, #0x10]
+ bx lr
+_02017BC8:
+ ldr r1, [r0, #0x10]
+ sub r1, r1, r2
+ str r1, [r0, #0x10]
+_02017BCE:
+ bx lr
+
+ thumb_func_start FUN_02017BD0
+FUN_02017BD0: ; 0x02017BD0
+ push {r3-r5, lr}
+ sub sp, #0x8
+ add r4, r1, #0x0
+ add r1, r2, #0x0
+ add r2, r3, #0x0
+ ldr r3, [sp, #0x18]
+ cmp r4, #0x7
+ bhi _02017C58
+ add r5, r4, r4
+ add r5, pc
+ ldrh r5, [r5, #0x6]
+ lsl r5, r5, #0x10
+ asr r5, r5, #0x10
+ add pc, r5
+_02017BEC: ; jump table (using 16-bit offset)
+ .short _02017C58 - _02017BEC - 2; case 0
+ .short _02017C58 - _02017BEC - 2; case 1
+ .short _02017BFC - _02017BEC - 2; case 2
+ .short _02017C14 - _02017BEC - 2; case 3
+ .short _02017C58 - _02017BEC - 2; case 4
+ .short _02017C58 - _02017BEC - 2; case 5
+ .short _02017C2C - _02017BEC - 2; case 6
+ .short _02017C44 - _02017BEC - 2; case 7
+_02017BFC:
+ mov r5, #0x2c
+ mul r5, r4
+ add r4, r0, r5
+ ldr r0, [r4, #0x14]
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x18]
+ str r0, [sp, #0x4]
+ ldr r0, _02017C5C ; =0x04000020
+ blx FUN_020C74F8
+ add sp, #0x8
+ pop {r3-r5, pc}
+_02017C14:
+ mov r5, #0x2c
+ mul r5, r4
+ add r4, r0, r5
+ ldr r0, [r4, #0x14]
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x18]
+ str r0, [sp, #0x4]
+ ldr r0, _02017C60 ; =0x04000030
+ blx FUN_020C74F8
+ add sp, #0x8
+ pop {r3-r5, pc}
+_02017C2C:
+ mov r5, #0x2c
+ mul r5, r4
+ add r4, r0, r5
+ ldr r0, [r4, #0x14]
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x18]
+ str r0, [sp, #0x4]
+ ldr r0, _02017C64 ; =0x04001020
+ blx FUN_020C74F8
+ add sp, #0x8
+ pop {r3-r5, pc}
+_02017C44:
+ mov r5, #0x2c
+ mul r5, r4
+ add r4, r0, r5
+ ldr r0, [r4, #0x14]
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x18]
+ str r0, [sp, #0x4]
+ ldr r0, _02017C68 ; =0x04001030
+ blx FUN_020C74F8
+_02017C58:
+ add sp, #0x8
+ pop {r3-r5, pc}
+ .balign 4
+_02017C5C: .word 0x04000020
+_02017C60: .word 0x04000030
+_02017C64: .word 0x04001020
+_02017C68: .word 0x04001030
+
+ thumb_func_start FUN_02017C6C
+FUN_02017C6C: ; 0x02017C6C
+ push {r4-r5, lr}
+ sub sp, #0x14
+ mov r2, #0x1
+ lsl r2, r2, #0xc
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ mov r1, #0x0
+ add r0, sp, #0x4
+ add r3, r2, #0x0
+ str r1, [sp, #0x0]
+ bl FUN_0201BB74
+ mov r3, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, sp, #0x4
+ str r3, [sp, #0x0]
+ bl FUN_02017BD0
+ add sp, #0x14
+ pop {r4-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02017C98
+FUN_02017C98: ; 0x02017C98
+ push {r3-r5, lr}
+ cmp r2, #0x0
+ bne _02017CA4
+ blx MI_UncompressLZ8
+ pop {r3-r5, pc}
+_02017CA4:
+ mov r4, #0x3
+ add r3, r0, #0x0
+ tst r3, r4
+ bne _02017CCA
+ add r3, r1, #0x0
+ tst r3, r4
+ bne _02017CCA
+ lsl r3, r2, #0x10
+ lsr r3, r3, #0x10
+ lsr r4, r3, #0x1f
+ lsl r5, r3, #0x1e
+ sub r5, r5, r4
+ mov r3, #0x1e
+ ror r5, r3
+ add r3, r4, r5
+ bne _02017CCA
+ blx MIi_CpuCopy32
+ pop {r3-r5, pc}
+_02017CCA:
+ blx MIi_CpuCopy16
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02017CD0
+FUN_02017CD0: ; 0x02017CD0
+ push {r3, lr}
+ mov r2, #0x2c
+ mul r2, r1
+ add r3, r0, r2
+ ldr r2, [r3, #0x10]
+ str r2, [sp, #0x0]
+ ldr r2, [r3, #0x8]
+ ldr r3, [r3, #0xc]
+ bl FUN_02017CE8
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02017CE8
+FUN_02017CE8: ; 0x02017CE8
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ str r3, [sp, #0x0]
+ cmp r3, #0x0
+ bne _02017D56
+ mov r0, #0x2c
+ add r7, r4, #0x0
+ mul r7, r0
+ add r0, r5, r7
+ ldr r0, [r0, #0x8]
+ str r0, [sp, #0x4]
+ cmp r0, #0x0
+ beq _02017D26
+ ldr r1, [sp, #0x4]
+ add r0, r6, #0x0
+ add r2, r3, #0x0
+ bl FUN_02017C98
+ add r3, r5, r7
+ ldr r2, [r3, #0x10]
+ ldr r1, [sp, #0x4]
+ ldr r3, [r3, #0xc]
+ add r0, r4, #0x0
+ lsl r2, r2, #0x1
+ bl FUN_02017D68
+ add sp, #0x8
+ pop {r3-r7, pc}
+_02017D26:
+ ldr r0, [r6, #0x0]
+ lsr r7, r0, #0x8
+ ldr r0, [r5, #0x0]
+ add r1, r7, #0x0
+ bl FUN_020169D8
+ add r5, r0, #0x0
+ ldr r2, [sp, #0x0]
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ bl FUN_02017C98
+ ldr r2, [sp, #0x20]
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ lsl r2, r2, #0x1
+ add r3, r7, #0x0
+ bl FUN_02017D68
+ add r0, r5, #0x0
+ bl FUN_02016A18
+ add sp, #0x8
+ pop {r3-r7, pc}
+_02017D56:
+ ldr r2, [sp, #0x20]
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ lsl r2, r2, #0x1
+ bl FUN_02017D68
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02017D68
+FUN_02017D68: ; 0x02017D68
+ push {r3-r7, lr}
+ add r4, r1, #0x0
+ add r6, r3, #0x0
+ add r7, r0, #0x0
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ add r5, r2, #0x0
+ blx DC_FlushRange
+ cmp r7, #0x7
+ bhi _02017DF8
+ add r0, r7, r7
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02017D8A: ; jump table (using 16-bit offset)
+ .short _02017D9A - _02017D8A - 2; case 0
+ .short _02017DA6 - _02017D8A - 2; case 1
+ .short _02017DB2 - _02017D8A - 2; case 2
+ .short _02017DBE - _02017D8A - 2; case 3
+ .short _02017DCA - _02017D8A - 2; case 4
+ .short _02017DD6 - _02017D8A - 2; case 5
+ .short _02017DE2 - _02017D8A - 2; case 6
+ .short _02017DEE - _02017D8A - 2; case 7
+_02017D9A:
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ add r2, r6, #0x0
+ blx FUN_020C922C
+ pop {r3-r7, pc}
+_02017DA6:
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ add r2, r6, #0x0
+ blx FUN_020C915C
+ pop {r3-r7, pc}
+_02017DB2:
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ add r2, r6, #0x0
+ blx FUN_020C908C
+ pop {r3-r7, pc}
+_02017DBE:
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ add r2, r6, #0x0
+ blx FUN_020C8FBC
+ pop {r3-r7, pc}
+_02017DCA:
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ add r2, r6, #0x0
+ blx FUN_020C91C4
+ pop {r3-r7, pc}
+_02017DD6:
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ add r2, r6, #0x0
+ blx FUN_020C90F4
+ pop {r3-r7, pc}
+_02017DE2:
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ add r2, r6, #0x0
+ blx FUN_020C9024
+ pop {r3-r7, pc}
+_02017DEE:
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ add r2, r6, #0x0
+ blx FUN_020C8F54
+_02017DF8:
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02017DFC
+FUN_02017DFC: ; 0x02017DFC
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, r2, #0x0
+ mov r2, #0x2c
+ mul r2, r1
+ add r1, r4, r2
+ ldr r1, [r1, #0x8]
+ add r2, r3, #0x0
+ bl FUN_02017C98
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02017E14
+FUN_02017E14: ; 0x02017E14
+ push {r3-r4, lr}
+ sub sp, #0x4
+ mov r4, #0x2c
+ mul r4, r1
+ add r4, r0, r4
+ ldrb r4, [r4, #0x1e]
+ cmp r4, #0x0
+ bne _02017E32
+ ldr r4, [sp, #0x10]
+ lsl r4, r4, #0x5
+ str r4, [sp, #0x0]
+ bl FUN_02017E40
+ add sp, #0x4
+ pop {r3-r4, pc}
+_02017E32:
+ ldr r4, [sp, #0x10]
+ lsl r4, r4, #0x6
+ str r4, [sp, #0x0]
+ bl FUN_02017E40
+ add sp, #0x4
+ pop {r3-r4, pc}
+
+ thumb_func_start FUN_02017E40
+FUN_02017E40: ; 0x02017E40
+ push {r3-r7, lr}
+ add r7, r1, #0x0
+ add r5, r2, #0x0
+ str r3, [sp, #0x0]
+ cmp r3, #0x0
+ bne _02017E78
+ ldr r1, [r5, #0x0]
+ ldr r0, [r0, #0x0]
+ lsr r4, r1, #0x8
+ add r1, r4, #0x0
+ bl FUN_020169D8
+ add r6, r0, #0x0
+ ldr r2, [sp, #0x0]
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02017C98
+ ldr r2, [sp, #0x18]
+ add r0, r7, #0x0
+ add r1, r6, #0x0
+ add r3, r4, #0x0
+ bl FUN_02017E84
+ add r0, r6, #0x0
+ bl FUN_02016A18
+ pop {r3-r7, pc}
+_02017E78:
+ ldr r2, [sp, #0x18]
+ add r0, r7, #0x0
+ add r1, r5, #0x0
+ bl FUN_02017E84
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02017E84
+FUN_02017E84: ; 0x02017E84
+ push {r3-r7, lr}
+ add r4, r1, #0x0
+ add r6, r3, #0x0
+ add r7, r0, #0x0
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ add r5, r2, #0x0
+ blx DC_FlushRange
+ cmp r7, #0x7
+ bhi _02017F14
+ add r0, r7, r7
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02017EA6: ; jump table (using 16-bit offset)
+ .short _02017EB6 - _02017EA6 - 2; case 0
+ .short _02017EC2 - _02017EA6 - 2; case 1
+ .short _02017ECE - _02017EA6 - 2; case 2
+ .short _02017EDA - _02017EA6 - 2; case 3
+ .short _02017EE6 - _02017EA6 - 2; case 4
+ .short _02017EF2 - _02017EA6 - 2; case 5
+ .short _02017EFE - _02017EA6 - 2; case 6
+ .short _02017F0A - _02017EA6 - 2; case 7
+_02017EB6:
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ add r2, r6, #0x0
+ blx FUN_020C8EEC
+ pop {r3-r7, pc}
+_02017EC2:
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ add r2, r6, #0x0
+ blx FUN_020C8E1C
+ pop {r3-r7, pc}
+_02017ECE:
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ add r2, r6, #0x0
+ blx FUN_020C8D4C
+ pop {r3-r7, pc}
+_02017EDA:
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ add r2, r6, #0x0
+ blx FUN_020C8C7C
+ pop {r3-r7, pc}
+_02017EE6:
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ add r2, r6, #0x0
+ blx FUN_020C8E84
+ pop {r3-r7, pc}
+_02017EF2:
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ add r2, r6, #0x0
+ blx FUN_020C8DB4
+ pop {r3-r7, pc}
+_02017EFE:
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ add r2, r6, #0x0
+ blx FUN_020C8CE4
+ pop {r3-r7, pc}
+_02017F0A:
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ add r2, r6, #0x0
+ blx FUN_020C8C14
+_02017F14:
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02017F18
+FUN_02017F18: ; 0x02017F18
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ add r5, r1, #0x0
+ add r0, r3, #0x0
+ add r7, r2, #0x0
+ str r3, [sp, #0x0]
+ bl FUN_020169D8
+ add r4, r0, #0x0
+ mov r1, #0x0
+ add r2, r5, #0x0
+ blx FUN_020DF4A4
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ add r2, r7, #0x0
+ add r3, r5, #0x0
+ bl FUN_02017E84
+ ldr r0, [sp, #0x0]
+ add r1, r4, #0x0
+ bl FUN_02016A8C
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02017F48
+FUN_02017F48: ; 0x02017F48
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r7, r1, #0x0
+ add r4, r0, #0x0
+ mov r1, #0x2c
+ add r6, r7, #0x0
+ add r4, #0x1f
+ mul r6, r1
+ ldrb r1, [r4, r6]
+ ldr r0, [r0, #0x0]
+ add r5, r2, #0x0
+ mul r1, r3
+ str r1, [sp, #0x0]
+ bl FUN_020169D8
+ str r0, [sp, #0x4]
+ ldrb r0, [r4, r6]
+ cmp r0, #0x20
+ bne _02017F82
+ lsl r2, r5, #0xc
+ lsl r1, r5, #0x8
+ lsl r0, r5, #0x4
+ orr r1, r2
+ orr r0, r1
+ add r1, r5, #0x0
+ orr r1, r0
+ lsl r0, r1, #0x10
+ add r5, r1, #0x0
+ b _02017F8C
+_02017F82:
+ lsl r2, r5, #0x18
+ lsl r1, r5, #0x10
+ lsl r0, r5, #0x8
+ orr r1, r2
+ orr r0, r1
+_02017F8C:
+ orr r5, r0
+ ldr r1, [sp, #0x4]
+ ldr r2, [sp, #0x0]
+ add r0, r5, #0x0
+ blx MIi_CpuClearFast
+ lsl r0, r7, #0x18
+ ldrb r2, [r4, r6]
+ ldr r3, [sp, #0x20]
+ ldr r1, [sp, #0x4]
+ mul r2, r3
+ ldr r3, [sp, #0x0]
+ lsr r0, r0, #0x18
+ bl FUN_02017E84
+ ldr r0, [sp, #0x4]
+ bl FUN_02016A18
+ add sp, #0x8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02017FB4
+FUN_02017FB4: ; 0x02017FB4
+ push {r3-r7, lr}
+ add r5, r1, #0x0
+ add r4, r2, #0x0
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r7, r3, #0x0
+ blx DC_FlushRange
+ cmp r6, #0x4
+ bhs _02017FD6
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ add r2, r4, #0x0
+ blx FUN_020C9550
+ pop {r3-r7, pc}
+_02017FD6:
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ add r2, r4, #0x0
+ blx FUN_020C94E8
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02017FE4
+FUN_02017FE4: ; 0x02017FE4
+ push {r0-r3}
+ push {r3, lr}
+ add r1, sp, #0xc
+ mov r2, #0x2
+ mov r3, #0x0
+ bl FUN_02017FB4
+ pop {r3}
+ pop {r3}
+ add sp, #0x10
+ bx r3
+ .balign 4
+
+ thumb_func_start FUN_02017FFC
+FUN_02017FFC: ; 0x02017FFC
+ cmp r2, #0x5
+ bhi _02018066
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_0201800C: ; jump table (using 16-bit offset)
+ .short _02018018 - _0201800C - 2; case 0
+ .short _02018022 - _0201800C - 2; case 1
+ .short _02018022 - _0201800C - 2; case 2
+ .short _0201802C - _0201800C - 2; case 3
+ .short _02018042 - _0201800C - 2; case 4
+ .short _02018064 - _0201800C - 2; case 5
+_02018018:
+ lsl r1, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bx lr
+_02018022:
+ lsl r1, r1, #0x5
+ add r0, r0, r1
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bx lr
+_0201802C:
+ mov r2, #0x1f
+ add r3, r0, #0x0
+ and r3, r2
+ mov r2, #0x1f
+ bic r0, r2
+ add r0, r1, r0
+ lsl r0, r0, #0x5
+ add r0, r3, r0
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bx lr
+_02018042:
+ asr r2, r1, #0x5
+ asr r3, r0, #0x5
+ lsl r2, r2, #0x1
+ add r2, r3, r2
+ lsl r2, r2, #0x10
+ lsr r2, r2, #0x10
+ lsl r2, r2, #0x1a
+ lsr r3, r2, #0x10
+ mov r2, #0x1f
+ and r2, r0
+ lsl r0, r1, #0x1b
+ lsr r0, r0, #0x16
+ add r0, r2, r0
+ add r0, r3, r0
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bx lr
+_02018064:
+ mov r0, #0x0
+_02018066:
+ bx lr
+
+ thumb_func_start FUN_02018068
+FUN_02018068: ; 0x02018068
+ push {r3-r7}
+ sub sp, #0x4
+ str r3, [sp, #0x0]
+ add r6, r2, #0x0
+ ldr r5, [sp, #0x0]
+ add r4, r6, #0x0
+ sub r4, #0x20
+ sub r5, #0x20
+ mov r2, #0x0
+ lsl r4, r4, #0x10
+ lsl r5, r5, #0x10
+ add r3, r2, #0x0
+ asr r4, r4, #0x10
+ asr r7, r5, #0x10
+ lsr r5, r0, #0x5
+ beq _0201808E
+ add r2, r2, #0x1
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+_0201808E:
+ lsr r5, r1, #0x5
+ beq _02018098
+ add r2, r2, #0x2
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+_02018098:
+ cmp r2, #0x3
+ bhi _02018140
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_020180A8: ; jump table (using 16-bit offset)
+ .short _020180B0 - _020180A8 - 2; case 0
+ .short _020180CE - _020180A8 - 2; case 1
+ .short _020180F4 - _020180A8 - 2; case 2
+ .short _02018120 - _020180A8 - 2; case 3
+_020180B0:
+ cmp r4, #0x0
+ blt _020180C0
+ lsl r1, r1, #0x5
+ add r0, r0, r1
+ add r0, r3, r0
+ lsl r0, r0, #0x10
+ lsr r3, r0, #0x10
+ b _02018140
+_020180C0:
+ add r2, r1, #0x0
+ mul r2, r6
+ add r0, r0, r2
+ add r0, r3, r0
+ lsl r0, r0, #0x10
+ lsr r3, r0, #0x10
+ b _02018140
+_020180CE:
+ cmp r7, #0x0
+ blt _020180D8
+ mov r2, #0x1
+ lsl r2, r2, #0xa
+ b _020180DC
+_020180D8:
+ ldr r2, [sp, #0x0]
+ lsl r2, r2, #0x5
+_020180DC:
+ add r2, r3, r2
+ lsl r2, r2, #0x10
+ lsr r3, r2, #0x10
+ mov r2, #0x1f
+ and r2, r0
+ add r0, r1, #0x0
+ mul r0, r4
+ add r0, r2, r0
+ add r0, r3, r0
+ lsl r0, r0, #0x10
+ lsr r3, r0, #0x10
+ b _02018140
+_020180F4:
+ lsl r2, r6, #0x5
+ add r2, r3, r2
+ lsl r2, r2, #0x10
+ lsr r2, r2, #0x10
+ cmp r4, #0x0
+ blt _0201810E
+ lsl r1, r1, #0x1b
+ lsr r1, r1, #0x16
+ add r0, r0, r1
+ add r0, r2, r0
+ lsl r0, r0, #0x10
+ lsr r3, r0, #0x10
+ b _02018140
+_0201810E:
+ mov r3, #0x1f
+ and r1, r3
+ add r3, r1, #0x0
+ mul r3, r6
+ add r0, r0, r3
+ add r0, r2, r0
+ lsl r0, r0, #0x10
+ lsr r3, r0, #0x10
+ b _02018140
+_02018120:
+ add r2, r6, r7
+ lsl r2, r2, #0x5
+ add r2, r3, r2
+ add r5, r0, #0x0
+ mov r3, #0x1f
+ add r0, r1, #0x0
+ and r0, r3
+ add r1, r0, #0x0
+ lsl r2, r2, #0x10
+ and r5, r3
+ mul r1, r4
+ lsr r2, r2, #0x10
+ add r0, r5, r1
+ add r0, r2, r0
+ lsl r0, r0, #0x10
+ lsr r3, r0, #0x10
+_02018140:
+ add r0, r3, #0x0
+ add sp, #0x4
+ pop {r3-r7}
+ bx lr
+
+ thumb_func_start FUN_02018148
+FUN_02018148: ; 0x02018148
+ push {r3-r6, lr}
+ sub sp, #0x1c
+ add r6, sp, #0x20
+ ldrb r5, [r6, #0x14]
+ str r5, [sp, #0x0]
+ ldrb r4, [r6, #0x18]
+ str r4, [sp, #0x4]
+ str r2, [sp, #0x8]
+ mov r2, #0x0
+ str r2, [sp, #0xc]
+ str r2, [sp, #0x10]
+ str r5, [sp, #0x14]
+ str r4, [sp, #0x18]
+ add r2, r3, #0x0
+ ldrb r3, [r6, #0x10]
+ bl FUN_02018170
+ add sp, #0x1c
+ pop {r3-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02018170
+FUN_02018170: ; 0x02018170
+ push {r4-r5, lr}
+ sub sp, #0x1c
+ add r4, r2, #0x0
+ add r2, r3, #0x0
+ mov r3, #0x2c
+ add r5, r1, #0x0
+ mul r5, r3
+ add r1, r0, r5
+ ldrb r1, [r1, #0x1c]
+ add r3, sp, #0x18
+ cmp r1, #0x1
+ beq _020181BA
+ ldrb r1, [r3, #0x14]
+ add r0, #0x8
+ add r0, r0, r5
+ str r1, [sp, #0x0]
+ ldr r1, [sp, #0x30]
+ str r1, [sp, #0x4]
+ ldrb r1, [r3, #0x1c]
+ str r1, [sp, #0x8]
+ add r1, sp, #0x38
+ ldrb r1, [r1, #0x0]
+ str r1, [sp, #0xc]
+ add r1, sp, #0x3c
+ ldrb r1, [r1, #0x0]
+ str r1, [sp, #0x10]
+ add r1, sp, #0x40
+ ldrb r1, [r1, #0x0]
+ str r1, [sp, #0x14]
+ mov r1, #0x0
+ str r1, [sp, #0x18]
+ ldrb r3, [r3, #0x10]
+ add r1, r4, #0x0
+ bl FUN_02018268
+ add sp, #0x1c
+ pop {r4-r5, pc}
+_020181BA:
+ ldrb r1, [r3, #0x14]
+ add r0, #0x8
+ add r0, r0, r5
+ str r1, [sp, #0x0]
+ ldr r1, [sp, #0x30]
+ str r1, [sp, #0x4]
+ ldrb r1, [r3, #0x1c]
+ str r1, [sp, #0x8]
+ add r1, sp, #0x38
+ ldrb r1, [r1, #0x0]
+ str r1, [sp, #0xc]
+ add r1, sp, #0x3c
+ ldrb r1, [r1, #0x0]
+ str r1, [sp, #0x10]
+ add r1, sp, #0x40
+ ldrb r1, [r1, #0x0]
+ str r1, [sp, #0x14]
+ mov r1, #0x0
+ str r1, [sp, #0x18]
+ ldrb r3, [r3, #0x10]
+ add r1, r4, #0x0
+ bl FUN_020183DC
+ add sp, #0x1c
+ pop {r4-r5, pc}
+
+ thumb_func_start FUN_020181EC
+FUN_020181EC: ; 0x020181EC
+ push {r4-r5, lr}
+ sub sp, #0x1c
+ add r4, r2, #0x0
+ add r2, r3, #0x0
+ mov r3, #0x2c
+ add r5, r1, #0x0
+ mul r5, r3
+ add r1, r0, r5
+ ldrb r1, [r1, #0x1c]
+ add r3, sp, #0x18
+ cmp r1, #0x1
+ beq _02018236
+ ldrb r1, [r3, #0x14]
+ add r0, #0x8
+ add r0, r0, r5
+ str r1, [sp, #0x0]
+ ldr r1, [sp, #0x30]
+ str r1, [sp, #0x4]
+ ldrb r1, [r3, #0x1c]
+ str r1, [sp, #0x8]
+ add r1, sp, #0x38
+ ldrb r1, [r1, #0x0]
+ str r1, [sp, #0xc]
+ add r1, sp, #0x3c
+ ldrb r1, [r1, #0x0]
+ str r1, [sp, #0x10]
+ add r1, sp, #0x40
+ ldrb r1, [r1, #0x0]
+ str r1, [sp, #0x14]
+ mov r1, #0x1
+ str r1, [sp, #0x18]
+ ldrb r3, [r3, #0x10]
+ add r1, r4, #0x0
+ bl FUN_02018268
+ add sp, #0x1c
+ pop {r4-r5, pc}
+_02018236:
+ ldrb r1, [r3, #0x14]
+ add r0, #0x8
+ add r0, r0, r5
+ str r1, [sp, #0x0]
+ ldr r1, [sp, #0x30]
+ str r1, [sp, #0x4]
+ ldrb r1, [r3, #0x1c]
+ str r1, [sp, #0x8]
+ add r1, sp, #0x38
+ ldrb r1, [r1, #0x0]
+ str r1, [sp, #0xc]
+ add r1, sp, #0x3c
+ ldrb r1, [r1, #0x0]
+ str r1, [sp, #0x10]
+ add r1, sp, #0x40
+ ldrb r1, [r1, #0x0]
+ str r1, [sp, #0x14]
+ mov r1, #0x1
+ str r1, [sp, #0x18]
+ ldrb r3, [r3, #0x10]
+ add r1, r4, #0x0
+ bl FUN_020183DC
+ add sp, #0x1c
+ pop {r4-r5, pc}
+
+ thumb_func_start FUN_02018268
+FUN_02018268: ; 0x02018268
+ push {r4-r7, lr}
+ sub sp, #0x44
+ str r1, [sp, #0x0]
+ str r2, [sp, #0x4]
+ add r7, r0, #0x0
+ ldr r0, [sp, #0x58]
+ add r6, r3, #0x0
+ str r0, [sp, #0x58]
+ ldr r0, [sp, #0x5c]
+ ldr r4, [sp, #0x68]
+ str r0, [sp, #0x5c]
+ ldr r0, [sp, #0x6c]
+ str r0, [sp, #0x6c]
+ ldr r0, [r7, #0x0]
+ str r0, [sp, #0x2c]
+ cmp r0, #0x0
+ bne _0201828C
+ b _020183D6
+_0201828C:
+ ldrb r0, [r7, #0x15]
+ add r1, sp, #0x40
+ add r1, #0x1
+ add r2, sp, #0x40
+ bl FUN_02017850
+ add r0, sp, #0x70
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _0201833A
+ mov r0, #0x0
+ str r0, [sp, #0x28]
+ ldr r0, [sp, #0x58]
+ cmp r0, #0x0
+ bls _020182CA
+ add r1, sp, #0x48
+ ldrb r0, [r1, #0x1c]
+ str r0, [sp, #0x1c]
+ ldrb r0, [r1, #0x18]
+ str r0, [sp, #0x18]
+ lsl r1, r0, #0x1
+ ldr r0, [sp, #0x5c]
+ add r0, r0, r1
+ str r0, [sp, #0x14]
+_020182BC:
+ ldr r1, [sp, #0x4]
+ ldr r0, [sp, #0x28]
+ add r0, r1, r0
+ add r1, sp, #0x40
+ ldrb r1, [r1, #0x0]
+ cmp r0, r1
+ blt _020182CC
+_020182CA:
+ b _020183D6
+_020182CC:
+ ldr r2, [sp, #0x1c]
+ ldr r1, [sp, #0x28]
+ add r2, r2, r1
+ ldr r1, [sp, #0x6c]
+ cmp r2, r1
+ bge _020183D6
+ mov r5, #0x0
+ cmp r6, #0x0
+ bls _02018326
+ add r1, r4, #0x0
+ mul r1, r2
+ lsl r2, r1, #0x1
+ ldr r1, [sp, #0x14]
+ lsl r0, r0, #0x18
+ add r1, r1, r2
+ lsr r0, r0, #0x18
+ str r1, [sp, #0x10]
+ str r0, [sp, #0x30]
+_020182F0:
+ add r1, sp, #0x40
+ ldr r0, [sp, #0x0]
+ ldrb r1, [r1, #0x1]
+ add r0, r0, r5
+ cmp r0, r1
+ bge _02018326
+ ldr r1, [sp, #0x18]
+ add r1, r1, r5
+ cmp r1, r4
+ bge _02018326
+ ldrb r2, [r7, #0x15]
+ lsl r0, r0, #0x18
+ ldr r1, [sp, #0x30]
+ lsr r0, r0, #0x18
+ bl FUN_02017FFC
+ ldr r1, [sp, #0x10]
+ lsl r2, r5, #0x1
+ ldrh r1, [r1, r2]
+ lsl r2, r0, #0x1
+ ldr r0, [sp, #0x2c]
+ strh r1, [r0, r2]
+ add r0, r5, #0x1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, r6
+ blo _020182F0
+_02018326:
+ ldr r0, [sp, #0x28]
+ add r0, r0, #0x1
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ str r1, [sp, #0x28]
+ ldr r0, [sp, #0x58]
+ cmp r1, r0
+ blo _020182BC
+ add sp, #0x44
+ pop {r4-r7, pc}
+_0201833A:
+ mov r0, #0x0
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x58]
+ cmp r0, #0x0
+ bls _020183D6
+ add r1, sp, #0x48
+ ldrb r0, [r1, #0x1c]
+ str r0, [sp, #0x24]
+ ldrb r0, [r1, #0x18]
+ str r0, [sp, #0x20]
+_0201834E:
+ ldr r1, [sp, #0x4]
+ ldr r0, [sp, #0x8]
+ add r1, r1, r0
+ add r0, sp, #0x40
+ ldrb r0, [r0, #0x0]
+ cmp r1, r0
+ bge _020183D6
+ ldr r2, [sp, #0x24]
+ ldr r0, [sp, #0x8]
+ add r0, r2, r0
+ ldr r2, [sp, #0x6c]
+ cmp r0, r2
+ bge _020183D6
+ mov r5, #0x0
+ cmp r6, #0x0
+ bls _020183C6
+ lsl r1, r1, #0x18
+ lsl r0, r0, #0x18
+ lsr r1, r1, #0x18
+ lsr r0, r0, #0x18
+ str r1, [sp, #0x34]
+ str r0, [sp, #0x3c]
+_0201837A:
+ add r1, sp, #0x40
+ ldr r0, [sp, #0x0]
+ ldrb r1, [r1, #0x1]
+ add r0, r0, r5
+ cmp r0, r1
+ bge _020183C6
+ ldr r1, [sp, #0x20]
+ add r1, r1, r5
+ str r1, [sp, #0xc]
+ cmp r1, r4
+ bge _020183C6
+ ldrb r2, [r7, #0x15]
+ lsl r0, r0, #0x18
+ ldr r1, [sp, #0x34]
+ lsr r0, r0, #0x18
+ bl FUN_02017FFC
+ str r0, [sp, #0x38]
+ ldr r0, [sp, #0xc]
+ ldr r1, [sp, #0x3c]
+ lsl r0, r0, #0x18
+ ldr r3, [sp, #0x6c]
+ lsr r0, r0, #0x18
+ add r2, r4, #0x0
+ bl FUN_02018068
+ lsl r1, r0, #0x1
+ ldr r0, [sp, #0x5c]
+ ldrh r0, [r0, r1]
+ ldr r1, [sp, #0x38]
+ lsl r2, r1, #0x1
+ ldr r1, [sp, #0x2c]
+ strh r0, [r1, r2]
+ add r0, r5, #0x1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, r6
+ blo _0201837A
+_020183C6:
+ ldr r0, [sp, #0x8]
+ add r0, r0, #0x1
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ str r1, [sp, #0x8]
+ ldr r0, [sp, #0x58]
+ cmp r1, r0
+ blo _0201834E
+_020183D6:
+ add sp, #0x44
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020183DC
+FUN_020183DC: ; 0x020183DC
+ push {r4-r7, lr}
+ sub sp, #0x44
+ str r1, [sp, #0x0]
+ str r2, [sp, #0x4]
+ add r7, r0, #0x0
+ ldr r0, [sp, #0x58]
+ add r6, r3, #0x0
+ str r0, [sp, #0x58]
+ ldr r0, [sp, #0x5c]
+ ldr r4, [sp, #0x68]
+ str r0, [sp, #0x5c]
+ ldr r0, [sp, #0x6c]
+ str r0, [sp, #0x6c]
+ ldr r0, [r7, #0x0]
+ str r0, [sp, #0x2c]
+ cmp r0, #0x0
+ bne _02018400
+ b _0201853C
+_02018400:
+ ldrb r0, [r7, #0x15]
+ add r1, sp, #0x40
+ add r1, #0x1
+ add r2, sp, #0x40
+ bl FUN_02017850
+ add r0, sp, #0x70
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _020184A4
+ mov r0, #0x0
+ str r0, [sp, #0x28]
+ ldr r0, [sp, #0x58]
+ cmp r0, #0x0
+ bhi _02018420
+ b _0201853C
+_02018420:
+ add r1, sp, #0x48
+ ldrb r0, [r1, #0x1c]
+ str r0, [sp, #0x1c]
+ ldrb r0, [r1, #0x18]
+ ldr r1, [sp, #0x5c]
+ str r0, [sp, #0x18]
+ add r0, r1, r0
+ str r0, [sp, #0x14]
+_02018430:
+ ldr r1, [sp, #0x4]
+ ldr r0, [sp, #0x28]
+ add r0, r1, r0
+ add r1, sp, #0x40
+ ldrb r1, [r1, #0x0]
+ cmp r0, r1
+ bge _0201853C
+ ldr r2, [sp, #0x1c]
+ ldr r1, [sp, #0x28]
+ add r2, r2, r1
+ ldr r1, [sp, #0x6c]
+ cmp r2, r1
+ bge _0201853C
+ mov r5, #0x0
+ cmp r6, #0x0
+ bls _02018490
+ ldr r1, [sp, #0x14]
+ mul r2, r4
+ lsl r0, r0, #0x18
+ add r1, r1, r2
+ lsr r0, r0, #0x18
+ str r1, [sp, #0x10]
+ str r0, [sp, #0x30]
+_0201845E:
+ add r1, sp, #0x40
+ ldr r0, [sp, #0x0]
+ ldrb r1, [r1, #0x1]
+ add r0, r0, r5
+ cmp r0, r1
+ bge _02018490
+ ldr r1, [sp, #0x18]
+ add r1, r1, r5
+ cmp r1, r4
+ bge _02018490
+ ldrb r2, [r7, #0x15]
+ lsl r0, r0, #0x18
+ ldr r1, [sp, #0x30]
+ lsr r0, r0, #0x18
+ bl FUN_02017FFC
+ ldr r1, [sp, #0x10]
+ ldrb r2, [r1, r5]
+ ldr r1, [sp, #0x2c]
+ strb r2, [r1, r0]
+ add r0, r5, #0x1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, r6
+ blo _0201845E
+_02018490:
+ ldr r0, [sp, #0x28]
+ add r0, r0, #0x1
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ str r1, [sp, #0x28]
+ ldr r0, [sp, #0x58]
+ cmp r1, r0
+ blo _02018430
+ add sp, #0x44
+ pop {r4-r7, pc}
+_020184A4:
+ mov r0, #0x0
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x58]
+ cmp r0, #0x0
+ bls _0201853C
+ add r1, sp, #0x48
+ ldrb r0, [r1, #0x1c]
+ str r0, [sp, #0x24]
+ ldrb r0, [r1, #0x18]
+ str r0, [sp, #0x20]
+_020184B8:
+ ldr r1, [sp, #0x4]
+ ldr r0, [sp, #0x8]
+ add r1, r1, r0
+ add r0, sp, #0x40
+ ldrb r0, [r0, #0x0]
+ cmp r1, r0
+ bge _0201853C
+ ldr r2, [sp, #0x24]
+ ldr r0, [sp, #0x8]
+ add r0, r2, r0
+ ldr r2, [sp, #0x6c]
+ cmp r0, r2
+ bge _0201853C
+ mov r5, #0x0
+ cmp r6, #0x0
+ bls _0201852C
+ lsl r1, r1, #0x18
+ lsl r0, r0, #0x18
+ lsr r1, r1, #0x18
+ lsr r0, r0, #0x18
+ str r1, [sp, #0x34]
+ str r0, [sp, #0x3c]
+_020184E4:
+ add r1, sp, #0x40
+ ldr r0, [sp, #0x0]
+ ldrb r1, [r1, #0x1]
+ add r0, r0, r5
+ cmp r0, r1
+ bge _0201852C
+ ldr r1, [sp, #0x20]
+ add r1, r1, r5
+ str r1, [sp, #0xc]
+ cmp r1, r4
+ bge _0201852C
+ ldrb r2, [r7, #0x15]
+ lsl r0, r0, #0x18
+ ldr r1, [sp, #0x34]
+ lsr r0, r0, #0x18
+ bl FUN_02017FFC
+ str r0, [sp, #0x38]
+ ldr r0, [sp, #0xc]
+ ldr r1, [sp, #0x3c]
+ lsl r0, r0, #0x18
+ ldr r3, [sp, #0x6c]
+ lsr r0, r0, #0x18
+ add r2, r4, #0x0
+ bl FUN_02018068
+ ldr r1, [sp, #0x5c]
+ ldrb r2, [r1, r0]
+ ldr r1, [sp, #0x2c]
+ ldr r0, [sp, #0x38]
+ strb r2, [r1, r0]
+ add r0, r5, #0x1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, r6
+ blo _020184E4
+_0201852C:
+ ldr r0, [sp, #0x8]
+ add r0, r0, #0x1
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ str r1, [sp, #0x8]
+ ldr r0, [sp, #0x58]
+ cmp r1, r0
+ blo _020184B8
+_0201853C:
+ add sp, #0x44
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_02018540
+FUN_02018540: ; 0x02018540
+ push {r4-r5, lr}
+ sub sp, #0xc
+ add r4, r2, #0x0
+ add r2, r3, #0x0
+ mov r3, #0x2c
+ add r5, r1, #0x0
+ mul r5, r3
+ add r1, r0, r5
+ ldrb r1, [r1, #0x1c]
+ add r3, sp, #0x8
+ cmp r1, #0x1
+ beq _02018574
+ ldrb r1, [r3, #0x14]
+ add r0, #0x8
+ add r0, r0, r5
+ str r1, [sp, #0x0]
+ ldrb r1, [r3, #0x18]
+ str r1, [sp, #0x4]
+ ldrb r1, [r3, #0x1c]
+ str r1, [sp, #0x8]
+ ldrb r3, [r3, #0x10]
+ add r1, r4, #0x0
+ bl FUN_02018590
+ add sp, #0xc
+ pop {r4-r5, pc}
+_02018574:
+ ldrb r1, [r3, #0x14]
+ add r0, #0x8
+ add r0, r0, r5
+ str r1, [sp, #0x0]
+ ldrb r1, [r3, #0x18]
+ str r1, [sp, #0x4]
+ lsl r1, r4, #0x18
+ ldrb r3, [r3, #0x10]
+ lsr r1, r1, #0x18
+ bl FUN_02018640
+ add sp, #0xc
+ pop {r4-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02018590
+FUN_02018590: ; 0x02018590
+ push {r4-r7, lr}
+ sub sp, #0x1c
+ str r2, [sp, #0x4]
+ str r3, [sp, #0x8]
+ ldr r4, [r0, #0x0]
+ add r7, r1, #0x0
+ str r0, [sp, #0x0]
+ ldr r6, [sp, #0x38]
+ cmp r4, #0x0
+ beq _0201863A
+ ldrb r0, [r0, #0x15]
+ add r1, sp, #0x18
+ add r1, #0x1
+ add r2, sp, #0x18
+ bl FUN_02017850
+ add r0, sp, #0x20
+ ldrb r2, [r0, #0x14]
+ ldr r1, [sp, #0x8]
+ add r1, r1, r2
+ ldr r2, [sp, #0x8]
+ str r1, [sp, #0xc]
+ cmp r2, r1
+ bge _0201863A
+ ldrb r2, [r0, #0x10]
+ ldr r0, [sp, #0x4]
+ lsl r1, r6, #0xc
+ add r0, r0, r2
+ add r1, r1, r7
+ str r0, [sp, #0x10]
+ lsl r0, r1, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x14]
+_020185D2:
+ add r0, sp, #0x18
+ ldrb r1, [r0, #0x0]
+ ldr r0, [sp, #0x8]
+ cmp r0, r1
+ bhs _0201863A
+ ldr r5, [sp, #0x4]
+ ldr r0, [sp, #0x10]
+ add r1, r5, #0x0
+ cmp r1, r0
+ bge _0201862A
+_020185E6:
+ add r0, sp, #0x18
+ ldrb r0, [r0, #0x1]
+ cmp r5, r0
+ bhs _0201862A
+ ldr r2, [sp, #0x0]
+ ldr r1, [sp, #0x8]
+ ldrb r2, [r2, #0x15]
+ add r0, r5, #0x0
+ bl FUN_02017FFC
+ cmp r6, #0x11
+ bne _02018604
+ lsl r0, r0, #0x1
+ strh r7, [r4, r0]
+ b _0201861E
+_02018604:
+ cmp r6, #0x10
+ bne _02018618
+ lsl r0, r0, #0x1
+ ldrh r2, [r4, r0]
+ mov r1, #0xf
+ lsl r1, r1, #0xc
+ and r1, r2
+ add r1, r7, r1
+ strh r1, [r4, r0]
+ b _0201861E
+_02018618:
+ lsl r1, r0, #0x1
+ ldr r0, [sp, #0x14]
+ strh r0, [r4, r1]
+_0201861E:
+ add r0, r5, #0x1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ ldr r0, [sp, #0x10]
+ cmp r5, r0
+ blt _020185E6
+_0201862A:
+ ldr r0, [sp, #0x8]
+ add r0, r0, #0x1
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ ldr r0, [sp, #0xc]
+ str r1, [sp, #0x8]
+ cmp r1, r0
+ blt _020185D2
+_0201863A:
+ add sp, #0x1c
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02018640
+FUN_02018640: ; 0x02018640
+ push {r4-r7, lr}
+ sub sp, #0x14
+ str r1, [sp, #0x0]
+ add r7, r0, #0x0
+ str r2, [sp, #0x4]
+ ldr r0, [r7, #0x0]
+ add r5, r3, #0x0
+ str r0, [sp, #0xc]
+ cmp r0, #0x0
+ beq _020186B0
+ ldrb r0, [r7, #0x15]
+ add r1, sp, #0x10
+ add r1, #0x1
+ add r2, sp, #0x10
+ bl FUN_02017850
+ add r1, sp, #0x18
+ ldrb r0, [r1, #0x14]
+ add r0, r5, r0
+ str r0, [sp, #0x8]
+ cmp r5, r0
+ bge _020186B0
+ ldrb r1, [r1, #0x10]
+ ldr r0, [sp, #0x4]
+ add r6, r0, r1
+_02018672:
+ add r0, sp, #0x10
+ ldrb r0, [r0, #0x0]
+ cmp r5, r0
+ bhs _020186B0
+ ldr r4, [sp, #0x4]
+ add r0, r4, #0x0
+ cmp r0, r6
+ bge _020186A4
+_02018682:
+ add r0, sp, #0x10
+ ldrb r0, [r0, #0x1]
+ cmp r4, r0
+ bhs _020186A4
+ ldrb r2, [r7, #0x15]
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ bl FUN_02017FFC
+ ldr r2, [sp, #0x0]
+ ldr r1, [sp, #0xc]
+ strb r2, [r1, r0]
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, r6
+ blt _02018682
+_020186A4:
+ add r0, r5, #0x1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ ldr r0, [sp, #0x8]
+ cmp r5, r0
+ blt _02018672
+_020186B0:
+ add sp, #0x14
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_020186B4
+FUN_020186B4: ; 0x020186B4
+ push {r4-r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0x0
+ mov r0, #0x2c
+ add r7, r1, #0x0
+ mul r7, r0
+ str r2, [sp, #0x0]
+ add r0, r5, r7
+ ldr r4, [r0, #0x8]
+ add r6, r3, #0x0
+ cmp r4, #0x0
+ beq _0201873C
+ ldrb r0, [r0, #0x1d]
+ add r1, sp, #0x10
+ add r1, #0x1
+ add r2, sp, #0x10
+ bl FUN_02017850
+ add r0, sp, #0x18
+ ldrb r1, [r0, #0x14]
+ add r1, r6, r1
+ str r1, [sp, #0x4]
+ cmp r6, r1
+ bge _0201873C
+ add r1, r5, r7
+ str r1, [sp, #0xc]
+ ldrb r1, [r0, #0x18]
+ lsl r1, r1, #0xc
+ str r1, [sp, #0x8]
+ ldrb r1, [r0, #0x10]
+ ldr r0, [sp, #0x0]
+ add r7, r0, r1
+_020186F4:
+ add r0, sp, #0x10
+ ldrb r0, [r0, #0x0]
+ cmp r6, r0
+ bhs _0201873C
+ ldr r5, [sp, #0x0]
+ add r0, r5, #0x0
+ cmp r0, r7
+ bge _02018730
+_02018704:
+ add r0, sp, #0x10
+ ldrb r0, [r0, #0x1]
+ cmp r5, r0
+ bhs _02018730
+ ldr r2, [sp, #0xc]
+ add r0, r5, #0x0
+ ldrb r2, [r2, #0x1d]
+ add r1, r6, #0x0
+ bl FUN_02017FFC
+ lsl r0, r0, #0x1
+ ldrh r2, [r4, r0]
+ ldr r1, _02018740 ; =0x00000FFF
+ and r2, r1
+ ldr r1, [sp, #0x8]
+ orr r1, r2
+ strh r1, [r4, r0]
+ add r0, r5, #0x1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, r7
+ blt _02018704
+_02018730:
+ add r0, r6, #0x1
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ ldr r0, [sp, #0x4]
+ cmp r6, r0
+ blt _020186F4
+_0201873C:
+ add sp, #0x14
+ pop {r4-r7, pc}
+ .balign 4
+_02018740: .word 0x00000FFF
+
+ thumb_func_start FUN_02018744
+FUN_02018744: ; 0x02018744
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ mov r0, #0x2c
+ mul r0, r4
+ add r2, r5, r0
+ ldr r1, [r2, #0x8]
+ cmp r1, #0x0
+ beq _02018766
+ ldr r2, [r2, #0xc]
+ mov r0, #0x0
+ blx MIi_CpuClear16
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02017CD0
+_02018766:
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02018768
+FUN_02018768: ; 0x02018768
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ mov r0, #0x2c
+ mul r0, r4
+ add r3, r5, r0
+ ldr r1, [r3, #0x8]
+ cmp r1, #0x0
+ beq _0201878A
+ add r0, r2, #0x0
+ ldr r2, [r3, #0xc]
+ blx MIi_CpuClear16
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02017CD0
+_0201878A:
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0201878C
+FUN_0201878C: ; 0x0201878C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ mov r0, #0x2c
+ mul r0, r4
+ add r3, r5, r0
+ ldr r1, [r3, #0x8]
+ cmp r1, #0x0
+ beq _020187AE
+ add r0, r2, #0x0
+ ldr r2, [r3, #0xc]
+ blx MIi_CpuClear16
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0201AC68
+_020187AE:
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_020187B0
+FUN_020187B0: ; 0x020187B0
+ push {r3, lr}
+ cmp r0, #0x7
+ bhi _02018802
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_020187C2: ; jump table (using 16-bit offset)
+ .short _020187D2 - _020187C2 - 2; case 0
+ .short _020187D8 - _020187C2 - 2; case 1
+ .short _020187DE - _020187C2 - 2; case 2
+ .short _020187E4 - _020187C2 - 2; case 3
+ .short _020187EA - _020187C2 - 2; case 4
+ .short _020187F0 - _020187C2 - 2; case 5
+ .short _020187F6 - _020187C2 - 2; case 6
+ .short _020187FC - _020187C2 - 2; case 7
+_020187D2:
+ blx FUN_020C7124
+ pop {r3, pc}
+_020187D8:
+ blx FUN_020C70D0
+ pop {r3, pc}
+_020187DE:
+ blx FUN_020C7058
+ pop {r3, pc}
+_020187E4:
+ blx FUN_020C6FB0
+ pop {r3, pc}
+_020187EA:
+ blx FUN_020C7104
+ pop {r3, pc}
+_020187F0:
+ blx FUN_020C70B0
+ pop {r3, pc}
+_020187F6:
+ blx FUN_020C7010
+ pop {r3, pc}
+_020187FC:
+ blx FUN_020C6F60
+ pop {r3, pc}
+_02018802:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02018808
+FUN_02018808: ; 0x02018808
+ push {r4-r7}
+ lsl r3, r3, #0x1c
+ lsr r3, r3, #0x18
+ mov r4, #0x0
+ cmp r1, #0x0
+ bls _02018842
+ mov r5, #0xf
+ add r6, r5, #0x0
+_02018818:
+ ldrb r7, [r0, r4]
+ and r7, r6
+ strb r7, [r2, #0x0]
+ ldrb r7, [r2, #0x0]
+ cmp r7, #0x0
+ beq _02018828
+ add r7, r7, r3
+ strb r7, [r2, #0x0]
+_02018828:
+ ldrb r7, [r0, r4]
+ asr r7, r7, #0x4
+ and r7, r5
+ strb r7, [r2, #0x1]
+ ldrb r7, [r2, #0x1]
+ cmp r7, #0x0
+ beq _0201883A
+ add r7, r7, r3
+ strb r7, [r2, #0x1]
+_0201883A:
+ add r4, r4, #0x1
+ add r2, r2, #0x2
+ cmp r4, r1
+ blo _02018818
+_02018842:
+ pop {r4-r7}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02018848
+FUN_02018848: ; 0x02018848
+ push {r3-r7, lr}
+ add r5, r1, #0x0
+ add r6, r0, #0x0
+ add r0, r3, #0x0
+ lsl r1, r5, #0x1
+ add r7, r2, #0x0
+ bl FUN_02016998
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ add r3, r7, #0x0
+ bl FUN_02018808
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201886C
+FUN_0201886C: ; 0x0201886C
+ mov r2, #0x2c
+ mul r2, r1
+ add r0, r0, r2
+ ldr r0, [r0, #0x8]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02018878
+FUN_02018878: ; 0x02018878
+ mov r2, #0x2c
+ mul r2, r1
+ add r0, r0, r2
+ ldrh r0, [r0, #0x20]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02018884
+FUN_02018884: ; 0x02018884
+ sub sp, #0x20
+ cmp r1, #0x7
+ bls _0201888C
+ b _02018A38
+_0201888C:
+ add r2, r1, r1
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_02018898: ; jump table (using 16-bit offset)
+ .short _020188A8 - _02018898 - 2; case 0
+ .short _020188BC - _02018898 - 2; case 1
+ .short _020188D0 - _02018898 - 2; case 2
+ .short _02018920 - _02018898 - 2; case 3
+ .short _02018970 - _02018898 - 2; case 4
+ .short _02018984 - _02018898 - 2; case 5
+ .short _02018998 - _02018898 - 2; case 6
+ .short _020189E8 - _02018898 - 2; case 7
+_020188A8:
+ ldr r0, _02018A40 ; =0x04000008
+ ldrh r1, [r0, #0x0]
+ add r0, sp, #0x0
+ add sp, #0x20
+ strh r1, [r0, #0x1e]
+ lsl r0, r1, #0x1e
+ lsr r0, r0, #0x1e
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+_020188BC:
+ ldr r0, _02018A44 ; =0x0400000A
+ ldrh r1, [r0, #0x0]
+ add r0, sp, #0x0
+ add sp, #0x20
+ strh r1, [r0, #0x1c]
+ lsl r0, r1, #0x1e
+ lsr r0, r0, #0x1e
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+_020188D0:
+ mov r2, #0x2c
+ mul r2, r1
+ add r0, r0, r2
+ ldrb r0, [r0, #0x1c]
+ cmp r0, #0x0
+ beq _020188E4
+ cmp r0, #0x1
+ beq _020188F8
+ cmp r0, #0x2
+ beq _0201890C
+_020188E4:
+ ldr r0, _02018A48 ; =0x0400000C
+ ldrh r1, [r0, #0x0]
+ add r0, sp, #0x0
+ add sp, #0x20
+ strh r1, [r0, #0x1a]
+ lsl r0, r1, #0x1e
+ lsr r0, r0, #0x1e
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+_020188F8:
+ ldr r0, _02018A48 ; =0x0400000C
+ ldrh r1, [r0, #0x0]
+ add r0, sp, #0x0
+ add sp, #0x20
+ strh r1, [r0, #0x18]
+ lsl r0, r1, #0x1e
+ lsr r0, r0, #0x1e
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+_0201890C:
+ ldr r0, _02018A48 ; =0x0400000C
+ ldrh r1, [r0, #0x0]
+ add r0, sp, #0x0
+ add sp, #0x20
+ strh r1, [r0, #0x16]
+ lsl r0, r1, #0x1e
+ lsr r0, r0, #0x1e
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+_02018920:
+ mov r2, #0x2c
+ mul r2, r1
+ add r0, r0, r2
+ ldrb r0, [r0, #0x1c]
+ cmp r0, #0x0
+ beq _02018934
+ cmp r0, #0x1
+ beq _02018948
+ cmp r0, #0x2
+ beq _0201895C
+_02018934:
+ ldr r0, _02018A4C ; =0x0400000E
+ ldrh r1, [r0, #0x0]
+ add r0, sp, #0x0
+ add sp, #0x20
+ strh r1, [r0, #0x14]
+ lsl r0, r1, #0x1e
+ lsr r0, r0, #0x1e
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+_02018948:
+ ldr r0, _02018A4C ; =0x0400000E
+ ldrh r1, [r0, #0x0]
+ add r0, sp, #0x0
+ add sp, #0x20
+ strh r1, [r0, #0x12]
+ lsl r0, r1, #0x1e
+ lsr r0, r0, #0x1e
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+_0201895C:
+ ldr r0, _02018A4C ; =0x0400000E
+ ldrh r1, [r0, #0x0]
+ add r0, sp, #0x0
+ add sp, #0x20
+ strh r1, [r0, #0x10]
+ lsl r0, r1, #0x1e
+ lsr r0, r0, #0x1e
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+_02018970:
+ ldr r0, _02018A50 ; =0x04001008
+ ldrh r1, [r0, #0x0]
+ add r0, sp, #0x0
+ add sp, #0x20
+ strh r1, [r0, #0xe]
+ lsl r0, r1, #0x1e
+ lsr r0, r0, #0x1e
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+_02018984:
+ ldr r0, _02018A54 ; =0x0400100A
+ ldrh r1, [r0, #0x0]
+ add r0, sp, #0x0
+ add sp, #0x20
+ strh r1, [r0, #0xc]
+ lsl r0, r1, #0x1e
+ lsr r0, r0, #0x1e
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+_02018998:
+ mov r2, #0x2c
+ mul r2, r1
+ add r0, r0, r2
+ ldrb r0, [r0, #0x1c]
+ cmp r0, #0x0
+ beq _020189AC
+ cmp r0, #0x1
+ beq _020189C0
+ cmp r0, #0x2
+ beq _020189D4
+_020189AC:
+ ldr r0, _02018A58 ; =0x0400100C
+ ldrh r1, [r0, #0x0]
+ add r0, sp, #0x0
+ add sp, #0x20
+ strh r1, [r0, #0xa]
+ lsl r0, r1, #0x1e
+ lsr r0, r0, #0x1e
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+_020189C0:
+ ldr r0, _02018A58 ; =0x0400100C
+ ldrh r1, [r0, #0x0]
+ add r0, sp, #0x0
+ add sp, #0x20
+ strh r1, [r0, #0x8]
+ lsl r0, r1, #0x1e
+ lsr r0, r0, #0x1e
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+_020189D4:
+ ldr r0, _02018A58 ; =0x0400100C
+ ldrh r1, [r0, #0x0]
+ add r0, sp, #0x0
+ add sp, #0x20
+ strh r1, [r0, #0x6]
+ lsl r0, r1, #0x1e
+ lsr r0, r0, #0x1e
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+_020189E8:
+ mov r2, #0x2c
+ mul r2, r1
+ add r0, r0, r2
+ ldrb r0, [r0, #0x1c]
+ cmp r0, #0x0
+ beq _020189FC
+ cmp r0, #0x1
+ beq _02018A10
+ cmp r0, #0x2
+ beq _02018A24
+_020189FC:
+ ldr r0, _02018A5C ; =0x0400100E
+ ldrh r1, [r0, #0x0]
+ add r0, sp, #0x0
+ add sp, #0x20
+ strh r1, [r0, #0x4]
+ lsl r0, r1, #0x1e
+ lsr r0, r0, #0x1e
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+_02018A10:
+ ldr r0, _02018A5C ; =0x0400100E
+ ldrh r1, [r0, #0x0]
+ add r0, sp, #0x0
+ add sp, #0x20
+ strh r1, [r0, #0x2]
+ lsl r0, r1, #0x1e
+ lsr r0, r0, #0x1e
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+_02018A24:
+ ldr r0, _02018A5C ; =0x0400100E
+ ldrh r1, [r0, #0x0]
+ add r0, sp, #0x0
+ add sp, #0x20
+ strh r1, [r0, #0x0]
+ lsl r0, r1, #0x1e
+ lsr r0, r0, #0x1e
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+_02018A38:
+ mov r0, #0x0
+ add sp, #0x20
+ bx lr
+ nop
+_02018A40: .word 0x04000008
+_02018A44: .word 0x0400000A
+_02018A48: .word 0x0400000C
+_02018A4C: .word 0x0400000E
+_02018A50: .word 0x04001008
+_02018A54: .word 0x0400100A
+_02018A58: .word 0x0400100C
+_02018A5C: .word 0x0400100E
+
+ thumb_func_start FUN_02018A60
+FUN_02018A60: ; 0x02018A60
+ push {r3-r7, lr}
+ sub sp, #0x68
+ str r2, [sp, #0x8]
+ str r3, [sp, #0xc]
+ add r2, sp, #0x70
+ str r0, [sp, #0x0]
+ ldrh r0, [r2, #0x10]
+ str r1, [sp, #0x4]
+ ldrh r2, [r2, #0x18]
+ str r0, [sp, #0x10]
+ add r0, r1, #0x0
+ ldrh r1, [r0, #0x4]
+ ldr r0, [sp, #0x10]
+ sub r3, r1, r0
+ cmp r3, r2
+ bge _02018A88
+ ldr r0, [sp, #0x8]
+ add r0, r0, r3
+ str r0, [sp, #0x50]
+ b _02018A8E
+_02018A88:
+ ldr r0, [sp, #0x8]
+ add r0, r2, r0
+ str r0, [sp, #0x50]
+_02018A8E:
+ ldr r2, [sp, #0x4]
+ add r3, sp, #0x70
+ ldrh r0, [r3, #0x14]
+ ldrh r2, [r2, #0x6]
+ ldrh r3, [r3, #0x1c]
+ sub r4, r2, r0
+ cmp r4, r3
+ bge _02018AA6
+ ldr r2, [sp, #0xc]
+ add r2, r2, r4
+ str r2, [sp, #0x4c]
+ b _02018AAC
+_02018AA6:
+ ldr r2, [sp, #0xc]
+ add r2, r3, r2
+ str r2, [sp, #0x4c]
+_02018AAC:
+ ldr r2, [sp, #0x0]
+ mov r3, #0x7
+ ldrh r4, [r2, #0x4]
+ add r2, r4, #0x0
+ and r2, r3
+ add r2, r4, r2
+ asr r2, r2, #0x3
+ str r2, [sp, #0x48]
+ add r2, r1, #0x0
+ and r2, r3
+ add r1, r1, r2
+ asr r1, r1, #0x3
+ str r1, [sp, #0x44]
+ add r1, sp, #0x70
+ ldrh r1, [r1, #0x20]
+ ldr r2, _02018C98 ; =0x0000FFFF
+ str r1, [sp, #0x38]
+ cmp r1, r2
+ bne _02018BB4
+ ldr r2, [sp, #0xc]
+ ldr r1, [sp, #0x4c]
+ cmp r2, r1
+ bge _02018ADE
+ cmp r2, r1
+ blt _02018AE0
+_02018ADE:
+ b _02018C92
+_02018AE0:
+ add r1, r2, #0x0
+ lsl r1, r1, #0x2
+ lsl r0, r0, #0x2
+ str r1, [sp, #0x28]
+ str r0, [sp, #0x24]
+_02018AEA:
+ ldr r3, [sp, #0x8]
+ ldr r0, [sp, #0x50]
+ add r1, r3, #0x0
+ ldr r4, [sp, #0x10]
+ cmp r1, r0
+ bge _02018B96
+ cmp r1, r0
+ bge _02018B96
+ add r0, r3, #0x0
+ lsl r5, r0, #0x2
+ add r0, r4, #0x0
+ lsl r6, r0, #0x2
+ ldr r0, _02018C9C ; =0x00003FE0
+ ldr r1, [sp, #0x28]
+ ldr r2, [sp, #0x48]
+ and r1, r0
+ mul r2, r1
+ str r2, [sp, #0x20]
+ ldr r2, [sp, #0x28]
+ mov r1, #0x1c
+ and r2, r1
+ str r2, [sp, #0x1c]
+ ldr r2, [sp, #0x24]
+ and r0, r2
+ ldr r2, [sp, #0x44]
+ mul r2, r0
+ ldr r0, [sp, #0x24]
+ str r2, [sp, #0x18]
+ and r0, r1
+ str r0, [sp, #0x14]
+_02018B26:
+ ldr r0, [sp, #0x4]
+ asr r2, r4, #0x1
+ mov r1, #0x3
+ ldr r0, [r0, #0x0]
+ and r1, r2
+ add r1, r0, r1
+ ldr r0, _02018C9C ; =0x00003FE0
+ and r0, r6
+ add r1, r1, r0
+ ldr r0, [sp, #0x18]
+ add r6, r6, #0x4
+ add r0, r1, r0
+ str r0, [sp, #0x64]
+ lsl r0, r4, #0x1f
+ lsr r2, r0, #0x1d
+ ldr r0, [sp, #0x0]
+ asr r1, r3, #0x1
+ ldr r7, [r0, #0x0]
+ mov r0, #0x3
+ and r0, r1
+ ldr r1, _02018C9C ; =0x00003FE0
+ add r4, r4, #0x1
+ and r1, r5
+ str r1, [sp, #0x54]
+ add r1, r7, r0
+ ldr r0, [sp, #0x54]
+ add r5, r5, #0x4
+ add r1, r0, r1
+ ldr r0, [sp, #0x20]
+ add r1, r0, r1
+ ldr r0, [sp, #0x1c]
+ ldrb r1, [r0, r1]
+ lsl r0, r3, #0x1f
+ lsr r0, r0, #0x1d
+ asr r1, r0
+ mov r0, #0xf
+ and r0, r1
+ add r7, r0, #0x0
+ ldr r1, [sp, #0x14]
+ ldr r0, [sp, #0x64]
+ lsl r7, r2
+ ldrb r0, [r0, r1]
+ add r3, r3, #0x1
+ str r0, [sp, #0x58]
+ mov r0, #0xf0
+ asr r0, r2
+ ldr r1, [sp, #0x58]
+ add r2, r7, #0x0
+ and r0, r1
+ orr r2, r0
+ ldr r1, [sp, #0x14]
+ ldr r0, [sp, #0x64]
+ strb r2, [r0, r1]
+ ldr r0, [sp, #0x50]
+ cmp r3, r0
+ blt _02018B26
+_02018B96:
+ ldr r0, [sp, #0x28]
+ add r0, r0, #0x4
+ str r0, [sp, #0x28]
+ ldr r0, [sp, #0xc]
+ add r0, r0, #0x1
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x24]
+ ldr r1, [sp, #0xc]
+ add r0, r0, #0x4
+ str r0, [sp, #0x24]
+ ldr r0, [sp, #0x4c]
+ cmp r1, r0
+ blt _02018AEA
+ add sp, #0x68
+ pop {r3-r7, pc}
+_02018BB4:
+ ldr r2, [sp, #0xc]
+ ldr r1, [sp, #0x4c]
+ cmp r2, r1
+ bge _02018C92
+ cmp r2, r1
+ bge _02018C92
+ add r1, r2, #0x0
+ lsl r1, r1, #0x2
+ lsl r0, r0, #0x2
+ str r1, [sp, #0x40]
+ str r0, [sp, #0x3c]
+_02018BCA:
+ ldr r3, [sp, #0x8]
+ ldr r0, [sp, #0x50]
+ add r1, r3, #0x0
+ ldr r4, [sp, #0x10]
+ cmp r1, r0
+ bge _02018C78
+ cmp r1, r0
+ bge _02018C78
+ add r0, r3, #0x0
+ lsl r1, r0, #0x2
+ add r0, r4, #0x0
+ lsl r2, r0, #0x2
+ ldr r0, _02018C9C ; =0x00003FE0
+ ldr r5, [sp, #0x40]
+ ldr r6, [sp, #0x48]
+ and r5, r0
+ mul r6, r5
+ str r6, [sp, #0x34]
+ ldr r6, [sp, #0x40]
+ mov r5, #0x1c
+ and r6, r5
+ str r6, [sp, #0x30]
+ ldr r6, [sp, #0x3c]
+ and r0, r6
+ ldr r6, [sp, #0x44]
+ mul r6, r0
+ ldr r0, [sp, #0x3c]
+ str r6, [sp, #0x2c]
+ and r0, r5
+ str r0, [sp, #0x60]
+_02018C06:
+ ldr r0, [sp, #0x4]
+ asr r6, r4, #0x1
+ mov r5, #0x3
+ and r5, r6
+ ldr r0, [r0, #0x0]
+ asr r6, r3, #0x1
+ add r5, r0, r5
+ ldr r0, _02018C9C ; =0x00003FE0
+ and r0, r2
+ add r5, r5, r0
+ ldr r0, [sp, #0x2c]
+ add r5, r5, r0
+ ldr r0, [sp, #0x0]
+ ldr r7, [r0, #0x0]
+ mov r0, #0x3
+ and r0, r6
+ ldr r6, _02018C9C ; =0x00003FE0
+ and r6, r1
+ str r6, [sp, #0x5c]
+ add r6, r7, r0
+ ldr r0, [sp, #0x5c]
+ add r6, r0, r6
+ ldr r0, [sp, #0x34]
+ add r6, r0, r6
+ ldr r0, [sp, #0x30]
+ ldrb r6, [r0, r6]
+ lsl r0, r3, #0x1f
+ lsr r0, r0, #0x1d
+ asr r6, r0
+ mov r0, #0xf
+ and r0, r6
+ ldr r6, [sp, #0x38]
+ cmp r0, r6
+ beq _02018C6A
+ lsl r6, r4, #0x1f
+ lsr r7, r6, #0x1d
+ lsl r0, r7
+ mov lr, r0
+ ldr r0, [sp, #0x60]
+ ldrb r0, [r5, r0]
+ mov r12, r0
+ mov r0, #0xf0
+ add r6, r0, #0x0
+ asr r6, r7
+ mov r0, r12
+ and r0, r6
+ mov r6, lr
+ orr r6, r0
+ ldr r0, [sp, #0x60]
+ strb r6, [r5, r0]
+_02018C6A:
+ ldr r0, [sp, #0x50]
+ add r3, r3, #0x1
+ add r1, r1, #0x4
+ add r2, r2, #0x4
+ add r4, r4, #0x1
+ cmp r3, r0
+ blt _02018C06
+_02018C78:
+ ldr r0, [sp, #0x40]
+ add r0, r0, #0x4
+ str r0, [sp, #0x40]
+ ldr r0, [sp, #0xc]
+ add r0, r0, #0x1
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x3c]
+ ldr r1, [sp, #0xc]
+ add r0, r0, #0x4
+ str r0, [sp, #0x3c]
+ ldr r0, [sp, #0x4c]
+ cmp r1, r0
+ blt _02018BCA
+_02018C92:
+ add sp, #0x68
+ pop {r3-r7, pc}
+ nop
+_02018C98: .word 0x0000FFFF
+_02018C9C: .word 0x00003FE0
+
+ thumb_func_start FUN_02018CA0
+FUN_02018CA0: ; 0x02018CA0
+ push {r3-r7, lr}
+ sub sp, #0x50
+ str r2, [sp, #0x8]
+ str r3, [sp, #0xc]
+ add r2, sp, #0x58
+ str r0, [sp, #0x0]
+ ldrh r0, [r2, #0x10]
+ str r1, [sp, #0x4]
+ ldrh r2, [r2, #0x18]
+ str r0, [sp, #0x10]
+ add r0, r1, #0x0
+ ldrh r1, [r0, #0x4]
+ ldr r0, [sp, #0x10]
+ sub r3, r1, r0
+ cmp r3, r2
+ bge _02018CC6
+ ldr r0, [sp, #0x8]
+ add r0, r0, r3
+ b _02018CCA
+_02018CC6:
+ ldr r0, [sp, #0x8]
+ add r0, r2, r0
+_02018CCA:
+ ldr r2, [sp, #0x4]
+ add r3, sp, #0x58
+ mov r12, r0
+ ldrh r0, [r3, #0x14]
+ ldrh r2, [r2, #0x6]
+ ldrh r3, [r3, #0x1c]
+ sub r4, r2, r0
+ cmp r4, r3
+ bge _02018CE2
+ ldr r2, [sp, #0xc]
+ add r2, r2, r4
+ b _02018CE6
+_02018CE2:
+ ldr r2, [sp, #0xc]
+ add r2, r3, r2
+_02018CE6:
+ mov lr, r2
+ ldr r2, [sp, #0x0]
+ mov r3, #0x7
+ ldrh r4, [r2, #0x4]
+ add r2, r4, #0x0
+ and r2, r3
+ add r2, r4, r2
+ asr r2, r2, #0x3
+ str r2, [sp, #0x4c]
+ add r2, r1, #0x0
+ and r2, r3
+ add r1, r1, r2
+ asr r1, r1, #0x3
+ str r1, [sp, #0x48]
+ add r1, sp, #0x58
+ ldrh r1, [r1, #0x20]
+ ldr r2, _02018E80 ; =0x0000FFFF
+ str r1, [sp, #0x3c]
+ cmp r1, r2
+ bne _02018DC6
+ ldr r2, [sp, #0xc]
+ mov r1, lr
+ cmp r2, r1
+ bge _02018D1C
+ mov r1, lr
+ cmp r2, r1
+ blt _02018D1E
+_02018D1C:
+ b _02018E7C
+_02018D1E:
+ add r1, r2, #0x0
+ lsl r1, r1, #0x3
+ lsl r0, r0, #0x3
+ str r1, [sp, #0x28]
+ str r0, [sp, #0x24]
+_02018D28:
+ ldr r1, [sp, #0x8]
+ mov r0, r12
+ add r2, r1, #0x0
+ ldr r7, [sp, #0x10]
+ cmp r2, r0
+ bge _02018DA8
+ mov r0, r12
+ cmp r2, r0
+ bge _02018DA8
+ add r0, r1, #0x0
+ lsl r2, r0, #0x3
+ add r0, r7, #0x0
+ lsl r3, r0, #0x3
+ ldr r6, _02018E84 ; =0x00007FC0
+ ldr r0, [sp, #0x28]
+ ldr r4, [sp, #0x4c]
+ and r0, r6
+ mul r4, r0
+ str r4, [sp, #0x20]
+ ldr r0, [sp, #0x28]
+ mov r5, #0x38
+ and r0, r5
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x24]
+ ldr r4, [sp, #0x48]
+ and r0, r6
+ mul r4, r0
+ ldr r0, [sp, #0x24]
+ str r4, [sp, #0x18]
+ and r0, r5
+ str r0, [sp, #0x14]
+_02018D66:
+ ldr r0, [sp, #0x0]
+ add r5, r1, #0x0
+ mov r4, #0x7
+ and r5, r4
+ ldr r0, [r0, #0x0]
+ ldr r4, _02018E84 ; =0x00007FC0
+ add r0, r0, r5
+ and r4, r2
+ add r4, r4, r0
+ ldr r0, [sp, #0x20]
+ add r5, r7, #0x0
+ add r4, r0, r4
+ ldr r0, [sp, #0x1c]
+ add r1, r1, #0x1
+ ldrb r6, [r0, r4]
+ ldr r0, [sp, #0x4]
+ mov r4, #0x7
+ and r5, r4
+ ldr r0, [r0, #0x0]
+ ldr r4, _02018E84 ; =0x00007FC0
+ add r0, r0, r5
+ and r4, r3
+ add r4, r4, r0
+ ldr r0, [sp, #0x18]
+ add r2, #0x8
+ add r4, r0, r4
+ ldr r0, [sp, #0x14]
+ add r3, #0x8
+ strb r6, [r0, r4]
+ mov r0, r12
+ add r7, r7, #0x1
+ cmp r1, r0
+ blt _02018D66
+_02018DA8:
+ ldr r0, [sp, #0x28]
+ add r0, #0x8
+ str r0, [sp, #0x28]
+ ldr r0, [sp, #0xc]
+ add r0, r0, #0x1
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x24]
+ ldr r1, [sp, #0xc]
+ add r0, #0x8
+ str r0, [sp, #0x24]
+ mov r0, lr
+ cmp r1, r0
+ blt _02018D28
+ add sp, #0x50
+ pop {r3-r7, pc}
+_02018DC6:
+ ldr r2, [sp, #0xc]
+ mov r1, lr
+ cmp r2, r1
+ bge _02018E7C
+ mov r1, lr
+ cmp r2, r1
+ bge _02018E7C
+ add r1, r2, #0x0
+ lsl r1, r1, #0x3
+ lsl r0, r0, #0x3
+ str r1, [sp, #0x44]
+ str r0, [sp, #0x40]
+_02018DDE:
+ ldr r2, [sp, #0x8]
+ mov r0, r12
+ add r1, r2, #0x0
+ ldr r3, [sp, #0x10]
+ cmp r1, r0
+ bge _02018E62
+ mov r0, r12
+ cmp r1, r0
+ bge _02018E62
+ add r0, r2, #0x0
+ lsl r6, r0, #0x3
+ add r0, r3, #0x0
+ lsl r1, r0, #0x3
+ ldr r7, _02018E84 ; =0x00007FC0
+ ldr r0, [sp, #0x44]
+ ldr r4, [sp, #0x4c]
+ and r0, r7
+ mul r4, r0
+ str r4, [sp, #0x38]
+ ldr r0, [sp, #0x44]
+ mov r5, #0x38
+ and r0, r5
+ str r0, [sp, #0x34]
+ ldr r0, [sp, #0x40]
+ ldr r4, [sp, #0x48]
+ and r0, r7
+ mul r4, r0
+ ldr r0, [sp, #0x40]
+ str r4, [sp, #0x30]
+ and r0, r5
+ str r0, [sp, #0x2c]
+_02018E1C:
+ ldr r0, [sp, #0x4]
+ mov r4, #0x7
+ ldr r0, [r0, #0x0]
+ and r4, r3
+ add r0, r0, r4
+ ldr r4, _02018E84 ; =0x00007FC0
+ add r5, r2, #0x0
+ and r4, r1
+ add r4, r0, r4
+ ldr r0, [sp, #0x30]
+ add r7, r4, r0
+ ldr r0, [sp, #0x0]
+ mov r4, #0x7
+ and r5, r4
+ ldr r0, [r0, #0x0]
+ ldr r4, _02018E84 ; =0x00007FC0
+ add r0, r0, r5
+ and r4, r6
+ add r4, r4, r0
+ ldr r0, [sp, #0x38]
+ add r4, r0, r4
+ ldr r0, [sp, #0x34]
+ ldrb r0, [r0, r4]
+ ldr r4, [sp, #0x3c]
+ cmp r0, r4
+ beq _02018E54
+ ldr r4, [sp, #0x2c]
+ strb r0, [r7, r4]
+_02018E54:
+ add r2, r2, #0x1
+ mov r0, r12
+ add r6, #0x8
+ add r1, #0x8
+ add r3, r3, #0x1
+ cmp r2, r0
+ blt _02018E1C
+_02018E62:
+ ldr r0, [sp, #0x44]
+ add r0, #0x8
+ str r0, [sp, #0x44]
+ ldr r0, [sp, #0xc]
+ add r0, r0, #0x1
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x40]
+ ldr r1, [sp, #0xc]
+ add r0, #0x8
+ str r0, [sp, #0x40]
+ mov r0, lr
+ cmp r1, r0
+ blt _02018DDE
+_02018E7C:
+ add sp, #0x50
+ pop {r3-r7, pc}
+ .balign 4
+_02018E80: .word 0x0000FFFF
+_02018E84: .word 0x00007FC0
+
+ thumb_func_start FUN_02018E88
+FUN_02018E88: ; 0x02018E88
+ push {r4-r7, lr}
+ sub sp, #0x14
+ str r1, [sp, #0x4]
+ str r2, [sp, #0x8]
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x2c]
+ str r0, [sp, #0x2c]
+ ldr r0, [sp, #0x4]
+ add r6, r0, r3
+ ldr r0, [sp, #0x0]
+ ldrh r0, [r0, #0x4]
+ cmp r6, r0
+ ble _02018EA4
+ add r6, r0, #0x0
+_02018EA4:
+ add r1, sp, #0x18
+ ldrh r2, [r1, #0x10]
+ ldr r1, [sp, #0x8]
+ add r1, r1, r2
+ mov r12, r1
+ ldr r1, [sp, #0x0]
+ ldrh r2, [r1, #0x6]
+ mov r1, r12
+ cmp r1, r2
+ ble _02018EBA
+ mov r12, r2
+_02018EBA:
+ mov r1, #0x7
+ and r1, r0
+ add r0, r0, r1
+ asr r0, r0, #0x3
+ mov lr, r0
+ ldr r1, [sp, #0x8]
+ mov r0, r12
+ cmp r1, r0
+ bge _02018F44
+ add r0, r1, #0x0
+ lsl r0, r0, #0x2
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x2c]
+ lsl r0, r0, #0x4
+ str r0, [sp, #0x10]
+_02018ED8:
+ ldr r1, [sp, #0x4]
+ add r0, r1, #0x0
+ cmp r0, r6
+ bge _02018F32
+ lsl r5, r0, #0x2
+ ldr r2, _02018F48 ; =0x00003FE0
+ ldr r0, [sp, #0xc]
+ and r0, r2
+ add r7, r0, #0x0
+ mov r2, lr
+ mul r7, r2
+ ldr r0, [sp, #0xc]
+ mov r2, #0x1c
+ and r2, r0
+_02018EF4:
+ ldr r0, [sp, #0x0]
+ asr r3, r1, #0x1
+ ldr r4, [r0, #0x0]
+ mov r0, #0x3
+ and r0, r3
+ ldr r3, _02018F48 ; =0x00003FE0
+ add r0, r4, r0
+ and r3, r5
+ add r0, r0, r3
+ add r0, r0, r7
+ mov r3, #0x1
+ tst r3, r1
+ ldrb r4, [r0, r2]
+ beq _02018F1C
+ mov r3, #0xf
+ and r3, r4
+ strb r3, [r0, r2]
+ ldrb r4, [r0, r2]
+ ldr r3, [sp, #0x10]
+ b _02018F26
+_02018F1C:
+ mov r3, #0xf0
+ and r3, r4
+ strb r3, [r0, r2]
+ ldrb r4, [r0, r2]
+ ldr r3, [sp, #0x2c]
+_02018F26:
+ orr r3, r4
+ add r1, r1, #0x1
+ strb r3, [r0, r2]
+ add r5, r5, #0x4
+ cmp r1, r6
+ blt _02018EF4
+_02018F32:
+ ldr r0, [sp, #0xc]
+ add r0, r0, #0x4
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x8]
+ add r1, r0, #0x1
+ mov r0, r12
+ str r1, [sp, #0x8]
+ cmp r1, r0
+ blt _02018ED8
+_02018F44:
+ add sp, #0x14
+ pop {r4-r7, pc}
+ .balign 4
+_02018F48: .word 0x00003FE0
+
+ thumb_func_start FUN_02018F4C
+FUN_02018F4C: ; 0x02018F4C
+ push {r4-r7, lr}
+ sub sp, #0x14
+ str r1, [sp, #0x4]
+ str r2, [sp, #0x8]
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x2c]
+ str r0, [sp, #0x2c]
+ ldr r0, [sp, #0x4]
+ add r5, r0, r3
+ ldr r0, [sp, #0x0]
+ ldrh r0, [r0, #0x4]
+ cmp r5, r0
+ ble _02018F68
+ add r5, r0, #0x0
+_02018F68:
+ add r1, sp, #0x18
+ ldrh r2, [r1, #0x10]
+ ldr r1, [sp, #0x8]
+ add r1, r1, r2
+ mov lr, r1
+ ldr r1, [sp, #0x0]
+ ldrh r2, [r1, #0x6]
+ mov r1, lr
+ cmp r1, r2
+ ble _02018F7E
+ mov lr, r2
+_02018F7E:
+ mov r1, #0x7
+ and r1, r0
+ add r0, r0, r1
+ asr r0, r0, #0x3
+ str r0, [sp, #0x10]
+ ldr r1, [sp, #0x8]
+ mov r0, lr
+ cmp r1, r0
+ bge _02018FEA
+ add r0, r1, #0x0
+ lsl r0, r0, #0x3
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x4]
+ lsl r0, r0, #0x3
+ mov r12, r0
+_02018F9C:
+ ldr r2, [sp, #0x4]
+ add r0, r2, #0x0
+ cmp r0, r5
+ bge _02018FD8
+ ldr r1, [sp, #0xc]
+ ldr r0, _02018FF0 ; =0x00007FC0
+ mov r3, r12
+ and r0, r1
+ add r7, r0, #0x0
+ ldr r1, [sp, #0x10]
+ mov r0, #0x38
+ mul r7, r1
+ ldr r1, [sp, #0xc]
+ add r6, r1, #0x0
+ and r6, r0
+_02018FBA:
+ ldr r0, [sp, #0x0]
+ ldr r4, _02018FF0 ; =0x00007FC0
+ ldr r1, [r0, #0x0]
+ mov r0, #0x7
+ and r0, r2
+ and r4, r3
+ add r0, r1, r0
+ add r0, r4, r0
+ add r1, r7, r0
+ ldr r0, [sp, #0x2c]
+ add r2, r2, #0x1
+ strb r0, [r6, r1]
+ add r3, #0x8
+ cmp r2, r5
+ blt _02018FBA
+_02018FD8:
+ ldr r0, [sp, #0xc]
+ add r0, #0x8
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x8]
+ add r1, r0, #0x1
+ mov r0, lr
+ str r1, [sp, #0x8]
+ cmp r1, r0
+ blt _02018F9C
+_02018FEA:
+ add sp, #0x14
+ pop {r4-r7, pc}
+ nop
+_02018FF0: .word 0x00007FC0
+
+ thumb_func_start FUN_02018FF4
+FUN_02018FF4: ; 0x02018FF4
+ push {r4-r6, lr}
+ add r5, r1, #0x0
+ lsl r1, r5, #0x4
+ bl FUN_02016998
+ add r6, r0, #0x0
+ mov r4, #0x0
+ cmp r5, #0x0
+ ble _02019018
+_02019006:
+ lsl r0, r4, #0x4
+ add r0, r6, r0
+ bl FUN_0201901C
+ add r0, r4, #0x1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, r5
+ blt _02019006
+_02019018:
+ add r0, r6, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0201901C
+FUN_0201901C: ; 0x0201901C
+ mov r3, #0x0
+ str r3, [r0, #0x0]
+ mov r1, #0xff
+ strb r1, [r0, #0x4]
+ strb r3, [r0, #0x5]
+ strb r3, [r0, #0x6]
+ strb r3, [r0, #0x7]
+ strb r3, [r0, #0x8]
+ strb r3, [r0, #0x9]
+ ldrh r2, [r0, #0xa]
+ ldr r1, _02019044 ; =0xFFFF8000
+ and r2, r1
+ strh r2, [r0, #0xa]
+ str r3, [r0, #0xc]
+ ldrh r2, [r0, #0xa]
+ sub r1, r1, #0x1
+ and r1, r2
+ strh r1, [r0, #0xa]
+ bx lr
+ nop
+_02019044: .word 0xFFFF8000
+
+ thumb_func_start FUN_02019048
+FUN_02019048: ; 0x02019048
+ ldr r1, [r0, #0x0]
+ cmp r1, #0x0
+ beq _0201905A
+ ldrb r1, [r0, #0x4]
+ cmp r1, #0xff
+ beq _0201905A
+ ldr r0, [r0, #0xc]
+ cmp r0, #0x0
+ bne _0201905E
+_0201905A:
+ mov r0, #0x0
+ bx lr
+_0201905E:
+ mov r0, #0x1
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02019064
+FUN_02019064: ; 0x02019064
+ push {r3-r7, lr}
+ add r6, r2, #0x0
+ add r5, r0, #0x0
+ mov r0, #0x2c
+ add r7, r6, #0x0
+ mul r7, r0
+ add r4, r1, #0x0
+ str r3, [sp, #0x0]
+ add r1, r5, r7
+ ldr r0, [r1, #0x8]
+ cmp r0, #0x0
+ beq _020190E0
+ add r3, sp, #0x8
+ ldrb r2, [r1, #0x1f]
+ ldrb r1, [r3, #0x14]
+ ldrb r3, [r3, #0x18]
+ ldr r0, [r5, #0x0]
+ mul r3, r1
+ add r1, r2, #0x0
+ mul r1, r3
+ bl FUN_02016998
+ add r1, r0, #0x0
+ beq _020190E0
+ str r5, [r4, #0x0]
+ strb r6, [r4, #0x4]
+ ldr r0, [sp, #0x0]
+ add r3, sp, #0x8
+ strb r0, [r4, #0x5]
+ ldrb r0, [r3, #0x10]
+ ldr r2, _020190E4 ; =0xFFFF8000
+ strb r0, [r4, #0x6]
+ ldrb r0, [r3, #0x14]
+ strb r0, [r4, #0x7]
+ ldrb r0, [r3, #0x18]
+ strb r0, [r4, #0x8]
+ ldrb r0, [r3, #0x1c]
+ strb r0, [r4, #0x9]
+ ldrh r0, [r4, #0xa]
+ ldrh r3, [r3, #0x20]
+ and r0, r2
+ lsr r2, r2, #0x11
+ and r2, r3
+ orr r0, r2
+ strh r0, [r4, #0xa]
+ str r1, [r4, #0xc]
+ add r0, r5, r7
+ ldrb r0, [r0, #0x1e]
+ cmp r0, #0x0
+ bne _020190CC
+ mov r2, #0x0
+ b _020190CE
+_020190CC:
+ mov r2, #0x1
+_020190CE:
+ ldrh r1, [r4, #0xa]
+ ldr r0, _020190E8 ; =0xFFFF7FFF
+ and r1, r0
+ lsl r0, r2, #0x10
+ lsr r0, r0, #0x10
+ lsl r0, r0, #0x1f
+ lsr r0, r0, #0x10
+ orr r0, r1
+ strh r0, [r4, #0xa]
+_020190E0:
+ pop {r3-r7, pc}
+ nop
+_020190E4: .word 0xFFFF8000
+_020190E8: .word 0xFFFF7FFF
+
+ thumb_func_start FUN_020190EC
+FUN_020190EC: ; 0x020190EC
+ push {r3-r7, lr}
+ sub sp, #0x8
+ str r3, [sp, #0x0]
+ add r5, r0, #0x0
+ ldr r0, [sp, #0x24]
+ add r6, r2, #0x0
+ str r0, [sp, #0x24]
+ ldr r0, [sp, #0x0]
+ add r4, r1, #0x0
+ mul r0, r6
+ lsl r0, r0, #0x5
+ str r0, [sp, #0x4]
+ ldr r0, [r5, #0x0]
+ ldr r1, [sp, #0x4]
+ bl FUN_02016998
+ ldr r1, [sp, #0x24]
+ add r7, r0, #0x0
+ lsl r2, r1, #0x4
+ orr r1, r2
+ lsl r1, r1, #0x18
+ ldr r2, [sp, #0x4]
+ lsr r1, r1, #0x18
+ blx FUN_020DF4A4
+ cmp r7, #0x0
+ beq _02019148
+ str r5, [r4, #0x0]
+ strb r6, [r4, #0x7]
+ ldr r0, [sp, #0x0]
+ strb r0, [r4, #0x8]
+ ldrh r1, [r4, #0xa]
+ ldr r0, _0201914C ; =0xFFFF8000
+ add r3, r1, #0x0
+ add r1, sp, #0x10
+ ldrh r2, [r1, #0x10]
+ lsr r1, r0, #0x11
+ and r3, r0
+ and r1, r2
+ orr r1, r3
+ strh r1, [r4, #0xa]
+ str r7, [r4, #0xc]
+ ldrh r1, [r4, #0xa]
+ sub r0, r0, #0x1
+ and r0, r1
+ strh r0, [r4, #0xa]
+_02019148:
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+_0201914C: .word 0xFFFF8000
+
+ thumb_func_start FUN_02019150
+FUN_02019150: ; 0x02019150
+ push {lr}
+ sub sp, #0x14
+ add r3, r2, #0x0
+ ldrb r2, [r3, #0x2]
+ str r2, [sp, #0x0]
+ ldrb r2, [r3, #0x3]
+ str r2, [sp, #0x4]
+ ldrb r2, [r3, #0x4]
+ str r2, [sp, #0x8]
+ ldrb r2, [r3, #0x5]
+ str r2, [sp, #0xc]
+ ldrh r2, [r3, #0x6]
+ str r2, [sp, #0x10]
+ ldrb r2, [r3, #0x0]
+ ldrb r3, [r3, #0x1]
+ bl FUN_02019064
+ add sp, #0x14
+ pop {pc}
+ .balign 4
+
+ thumb_func_start FUN_02019178
+FUN_02019178: ; 0x02019178
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0xc]
+ bl FUN_02016A18
+ mov r2, #0x0
+ str r2, [r4, #0x0]
+ mov r0, #0xff
+ strb r0, [r4, #0x4]
+ strb r2, [r4, #0x5]
+ strb r2, [r4, #0x6]
+ strb r2, [r4, #0x7]
+ strb r2, [r4, #0x8]
+ strb r2, [r4, #0x9]
+ ldrh r1, [r4, #0xa]
+ ldr r0, _020191A0 ; =0xFFFF8000
+ and r0, r1
+ strh r0, [r4, #0xa]
+ str r2, [r4, #0xc]
+ pop {r4, pc}
+ .balign 4
+_020191A0: .word 0xFFFF8000
+
+ thumb_func_start FUN_020191A4
+FUN_020191A4: ; 0x020191A4
+ push {r4-r6, lr}
+ add r6, r1, #0x0
+ add r5, r0, #0x0
+ mov r4, #0x0
+ cmp r6, #0x0
+ ble _020191C8
+_020191B0:
+ lsl r0, r4, #0x4
+ add r0, r5, r0
+ ldr r0, [r0, #0xc]
+ cmp r0, #0x0
+ beq _020191BE
+ bl FUN_02016A18
+_020191BE:
+ add r0, r4, #0x1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, r6
+ blt _020191B0
+_020191C8:
+ add r0, r5, #0x0
+ bl FUN_02016A18
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_020191D0
+FUN_020191D0: ; 0x020191D0
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _020191DA
+ bl ErrorHandling
+_020191DA:
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ bne _020191E4
+ bl ErrorHandling
+_020191E4:
+ ldrb r0, [r4, #0x4]
+ cmp r0, #0x8
+ blo _020191EE
+ bl ErrorHandling
+_020191EE:
+ ldrb r1, [r4, #0x4]
+ mov r0, #0x2c
+ ldr r2, [r4, #0x0]
+ mul r0, r1
+ add r0, r2, r0
+ ldrb r0, [r0, #0x1c]
+ cmp r0, #0x3
+ blo _02019202
+ bl ErrorHandling
+_02019202:
+ ldrb r2, [r4, #0x4]
+ mov r1, #0x2c
+ ldr r3, [r4, #0x0]
+ mul r1, r2
+ add r1, r3, r1
+ ldrb r1, [r1, #0x1c]
+ add r0, r4, #0x0
+ lsl r2, r1, #0x2
+ ldr r1, _0201921C ; =0x020EDB68
+ ldr r1, [r1, r2]
+ blx r1
+ pop {r4, pc}
+ nop
+_0201921C: .word 0x020EDB68
+
+ thumb_func_start FUN_02019220
+FUN_02019220: ; 0x02019220
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _0201922A
+ bl ErrorHandling
+_0201922A:
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ bne _02019234
+ bl ErrorHandling
+_02019234:
+ ldrb r0, [r4, #0x4]
+ cmp r0, #0x8
+ blo _0201923E
+ bl ErrorHandling
+_0201923E:
+ ldrb r1, [r4, #0x4]
+ mov r0, #0x2c
+ ldr r2, [r4, #0x0]
+ mul r0, r1
+ add r0, r2, r0
+ ldrb r0, [r0, #0x1c]
+ cmp r0, #0x3
+ blo _02019252
+ bl ErrorHandling
+_02019252:
+ ldrb r2, [r4, #0x4]
+ mov r1, #0x2c
+ ldr r3, [r4, #0x0]
+ mul r1, r2
+ add r1, r3, r1
+ ldrb r1, [r1, #0x1c]
+ add r0, r4, #0x0
+ lsl r2, r1, #0x2
+ ldr r1, _0201926C ; =0x020EDB5C
+ ldr r1, [r1, r2]
+ blx r1
+ pop {r4, pc}
+ nop
+_0201926C: .word 0x020EDB5C
+
+ thumb_func_start FUN_02019270
+FUN_02019270: ; 0x02019270
+ push {r3, lr}
+ ldrb r2, [r0, #0x4]
+ mov r1, #0x2c
+ ldr r3, [r0, #0x0]
+ mul r1, r2
+ add r1, r3, r1
+ ldrb r1, [r1, #0x1c]
+ lsl r2, r1, #0x2
+ ldr r1, _02019288 ; =0x020EDB38
+ ldr r1, [r1, r2]
+ blx r1
+ pop {r3, pc}
+ .balign 4
+_02019288: .word 0x020EDB38
+
+ thumb_func_start FUN_0201928C
+FUN_0201928C: ; 0x0201928C
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldrb r6, [r5, #0x7]
+ ldrb r4, [r5, #0x8]
+ strb r1, [r5, #0x7]
+ strb r2, [r5, #0x8]
+ ldrb r3, [r5, #0x4]
+ mov r2, #0x2c
+ ldr r1, [r5, #0x0]
+ mul r2, r3
+ add r1, r1, r2
+ ldrb r1, [r1, #0x1c]
+ lsl r2, r1, #0x2
+ ldr r1, _020192B4 ; =0x020EDB38
+ ldr r1, [r1, r2]
+ blx r1
+ strb r6, [r5, #0x7]
+ strb r4, [r5, #0x8]
+ pop {r4-r6, pc}
+ nop
+_020192B4: .word 0x020EDB38
+
+ thumb_func_start FUN_020192B8
+FUN_020192B8: ; 0x020192B8
+ push {r3, lr}
+ ldrb r2, [r0, #0x4]
+ mov r1, #0x2c
+ ldr r3, [r0, #0x0]
+ mul r1, r2
+ add r1, r3, r1
+ ldrb r1, [r1, #0x1c]
+ lsl r2, r1, #0x2
+ ldr r1, _020192D0 ; =0x020EDB74
+ ldr r1, [r1, r2]
+ blx r1
+ pop {r3, pc}
+ .balign 4
+_020192D0: .word 0x020EDB74
+
+ thumb_func_start FUN_020192D4
+FUN_020192D4: ; 0x020192D4
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ ldrb r1, [r5, #0x4]
+ mov r0, #0x2c
+ ldr r2, [r5, #0x0]
+ mul r0, r1
+ add r0, r2, r0
+ ldr r0, [r0, #0x8]
+ str r0, [sp, #0x4]
+ cmp r0, #0x0
+ beq _02019354
+ ldrh r0, [r5, #0xa]
+ ldrb r1, [r5, #0x5]
+ lsl r0, r0, #0x11
+ lsr r3, r0, #0x11
+ ldrb r0, [r5, #0x7]
+ add r7, r1, r0
+ ldrb r0, [r5, #0x6]
+ ldrb r1, [r5, #0x8]
+ mov r12, r0
+ add r0, r0, r1
+ mov r1, r12
+ mov lr, r0
+ cmp r1, r0
+ bhs _02019354
+_02019308:
+ ldrb r2, [r5, #0x5]
+ cmp r2, r7
+ bhs _02019348
+ mov r0, r12
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x16
+ lsl r1, r0, #0x1
+ ldr r0, [sp, #0x4]
+ add r0, r0, r1
+ mov r1, r12
+ str r0, [sp, #0x0]
+ mov r0, #0x20
+ add r6, r1, #0x0
+ and r6, r0
+_02019324:
+ ldrb r0, [r5, #0x9]
+ mov r4, #0x20
+ add r1, r3, #0x0
+ lsl r0, r0, #0xc
+ and r4, r2
+ orr r1, r0
+ mov r0, #0x1f
+ add r4, r6, r4
+ and r0, r2
+ lsl r4, r4, #0x5
+ add r0, r0, r4
+ lsl r4, r0, #0x1
+ ldr r0, [sp, #0x0]
+ add r2, r2, #0x1
+ strh r1, [r0, r4]
+ add r3, r3, #0x1
+ cmp r2, r7
+ blo _02019324
+_02019348:
+ mov r0, r12
+ add r1, r0, #0x1
+ mov r0, lr
+ mov r12, r1
+ cmp r1, r0
+ blo _02019308
+_02019354:
+ add sp, #0x8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02019358
+FUN_02019358: ; 0x02019358
+ push {r4-r7}
+ ldrb r3, [r0, #0x4]
+ mov r1, #0x2c
+ add r2, r3, #0x0
+ mul r2, r1
+ ldr r1, [r0, #0x0]
+ add r1, r1, r2
+ ldr r3, [r1, #0x8]
+ cmp r3, #0x0
+ beq _020193AC
+ ldrb r2, [r1, #0x1d]
+ ldr r1, _020193B0 ; =0x020EDB30
+ ldrb r6, [r1, r2]
+ ldrb r1, [r0, #0x6]
+ add r2, r1, #0x0
+ mul r2, r6
+ add r2, r3, r2
+ ldrb r1, [r0, #0x5]
+ mov r3, #0x0
+ add r4, r2, r1
+ ldrh r1, [r0, #0xa]
+ lsl r1, r1, #0x11
+ lsr r5, r1, #0x11
+ ldrb r1, [r0, #0x8]
+ cmp r1, #0x0
+ ble _020193AC
+ add r1, r3, #0x0
+_0201938E:
+ ldrb r7, [r0, #0x7]
+ add r2, r1, #0x0
+ cmp r7, #0x0
+ ble _020193A2
+_02019396:
+ strb r5, [r4, r2]
+ ldrb r7, [r0, #0x7]
+ add r2, r2, #0x1
+ add r5, r5, #0x1
+ cmp r2, r7
+ blt _02019396
+_020193A2:
+ ldrb r2, [r0, #0x8]
+ add r3, r3, #0x1
+ add r4, r4, r6
+ cmp r3, r2
+ blt _0201938E
+_020193AC:
+ pop {r4-r7}
+ bx lr
+ .balign 4
+_020193B0: .word 0x020EDB30
+
+ thumb_func_start FUN_020193B4
+FUN_020193B4: ; 0x020193B4
+ push {r4-r7, lr}
+ sub sp, #0xc
+ ldrb r2, [r0, #0x4]
+ str r0, [sp, #0x0]
+ mov r0, #0x2c
+ add r1, r2, #0x0
+ mul r1, r0
+ ldr r0, [sp, #0x0]
+ ldr r0, [r0, #0x0]
+ add r1, r0, r1
+ ldr r0, [r1, #0x8]
+ str r0, [sp, #0x4]
+ cmp r0, #0x0
+ beq _0201943C
+ ldrb r1, [r1, #0x1d]
+ ldr r0, _02019440 ; =0x020EDB30
+ ldrb r0, [r0, r1]
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x0]
+ ldrb r1, [r0, #0x5]
+ ldrb r0, [r0, #0x7]
+ add r2, r1, r0
+ ldr r0, [sp, #0x0]
+ ldrb r0, [r0, #0x6]
+ mov r12, r0
+ ldr r0, [sp, #0x0]
+ ldrb r1, [r0, #0x8]
+ mov r0, r12
+ add r0, r0, r1
+ mov r1, r12
+ mov lr, r0
+ cmp r1, r0
+ bhs _0201943C
+ mov r6, #0x0
+ mov r7, #0x20
+_020193FA:
+ ldr r0, [sp, #0x0]
+ ldrb r1, [r0, #0x5]
+ cmp r1, r2
+ bhs _02019430
+ mov r3, r12
+ mov r0, #0x1f
+ and r3, r0
+ ldr r0, [sp, #0x8]
+ mul r0, r3
+ lsl r3, r0, #0x1
+ ldr r0, [sp, #0x4]
+ add r5, r0, r3
+ mov r3, r12
+ mov r0, #0x20
+ and r3, r0
+_02019418:
+ add r4, r1, #0x0
+ and r4, r7
+ mov r0, #0x1f
+ add r4, r3, r4
+ and r0, r1
+ lsl r4, r4, #0x5
+ add r0, r0, r4
+ lsl r0, r0, #0x1
+ add r1, r1, #0x1
+ strh r6, [r5, r0]
+ cmp r1, r2
+ blo _02019418
+_02019430:
+ mov r0, r12
+ add r1, r0, #0x1
+ mov r0, lr
+ mov r12, r1
+ cmp r1, r0
+ blo _020193FA
+_0201943C:
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+_02019440: .word 0x020EDB30
+
+ thumb_func_start FUN_02019444
+FUN_02019444: ; 0x02019444
+ push {r4-r7}
+ ldrb r3, [r0, #0x4]
+ mov r1, #0x2c
+ add r2, r3, #0x0
+ mul r2, r1
+ ldr r1, [r0, #0x0]
+ add r1, r1, r2
+ ldr r3, [r1, #0x8]
+ cmp r3, #0x0
+ beq _02019492
+ ldrb r2, [r1, #0x1d]
+ ldr r1, _02019498 ; =0x020EDB30
+ mov r4, #0x0
+ ldrb r6, [r1, r2]
+ ldrb r1, [r0, #0x6]
+ add r2, r1, #0x0
+ mul r2, r6
+ ldrb r1, [r0, #0x5]
+ add r2, r3, r2
+ add r5, r2, r1
+ ldrb r1, [r0, #0x8]
+ cmp r1, #0x0
+ ble _02019492
+ add r1, r4, #0x0
+ add r2, r4, #0x0
+_02019476:
+ ldrb r7, [r0, #0x7]
+ add r3, r2, #0x0
+ cmp r7, #0x0
+ ble _02019488
+_0201947E:
+ strb r1, [r5, r3]
+ ldrb r7, [r0, #0x7]
+ add r3, r3, #0x1
+ cmp r3, r7
+ blt _0201947E
+_02019488:
+ ldrb r3, [r0, #0x8]
+ add r4, r4, #0x1
+ add r5, r5, r6
+ cmp r4, r3
+ blt _02019476
+_02019492:
+ pop {r4-r7}
+ bx lr
+ nop
+_02019498: .word 0x020EDB30
+
+ thumb_func_start FUN_0201949C
+FUN_0201949C: ; 0x0201949C
+ push {r3-r4, lr}
+ sub sp, #0x4
+ add r4, r0, #0x0
+ bl FUN_020192D4
+ add r0, r4, #0x0
+ bl FUN_02019548
+ ldrb r1, [r4, #0x4]
+ mov r0, #0x2c
+ add r2, r1, #0x0
+ mul r2, r0
+ ldr r0, [r4, #0x0]
+ add r3, r0, r2
+ ldr r2, [r3, #0x10]
+ str r2, [sp, #0x0]
+ ldr r2, [r3, #0x8]
+ ldr r3, [r3, #0xc]
+ bl FUN_02017CE8
+ add sp, #0x4
+ pop {r3-r4, pc}
+
+ thumb_func_start FUN_020194C8
+FUN_020194C8: ; 0x020194C8
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_020192D4
+ ldrb r1, [r4, #0x4]
+ ldr r0, [r4, #0x0]
+ bl FUN_0201AC68
+ add r0, r4, #0x0
+ bl FUN_02019548
+ pop {r4, pc}
+
+ thumb_func_start FUN_020194E0
+FUN_020194E0: ; 0x020194E0
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl FUN_02019358
+ ldrb r1, [r4, #0x4]
+ mov r0, #0x2c
+ add r2, r1, #0x0
+ mul r2, r0
+ ldr r0, [r4, #0x0]
+ add r3, r0, r2
+ ldr r2, [r3, #0x10]
+ str r2, [sp, #0x0]
+ ldr r2, [r3, #0x8]
+ ldr r3, [r3, #0xc]
+ bl FUN_02017CE8
+ ldrh r0, [r4, #0xa]
+ lsl r0, r0, #0x11
+ lsr r0, r0, #0x11
+ str r0, [sp, #0x0]
+ ldrb r5, [r4, #0x7]
+ ldrb r3, [r4, #0x8]
+ ldrb r1, [r4, #0x4]
+ ldr r0, [r4, #0x0]
+ mul r3, r5
+ ldr r2, [r4, #0xc]
+ lsl r3, r3, #0x6
+ bl FUN_02017E14
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0201951C
+FUN_0201951C: ; 0x0201951C
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl FUN_02019358
+ ldrb r1, [r4, #0x4]
+ ldr r0, [r4, #0x0]
+ bl FUN_0201AC68
+ ldrh r0, [r4, #0xa]
+ lsl r0, r0, #0x11
+ lsr r0, r0, #0x11
+ str r0, [sp, #0x0]
+ ldrb r5, [r4, #0x7]
+ ldrb r3, [r4, #0x8]
+ ldrb r1, [r4, #0x4]
+ ldr r0, [r4, #0x0]
+ mul r3, r5
+ ldr r2, [r4, #0xc]
+ lsl r3, r3, #0x6
+ bl FUN_02017E14
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02019548
+FUN_02019548: ; 0x02019548
+ push {r3-r5, lr}
+ add r3, r0, #0x0
+ ldrh r2, [r3, #0xa]
+ ldrb r1, [r3, #0x4]
+ mov r4, #0x2c
+ lsl r2, r2, #0x11
+ ldr r0, [r3, #0x0]
+ lsr r2, r2, #0x11
+ str r2, [sp, #0x0]
+ mul r4, r1
+ add r4, r0, r4
+ ldr r2, [r3, #0xc]
+ ldrb r5, [r3, #0x7]
+ ldrb r3, [r3, #0x8]
+ ldrb r4, [r4, #0x1f]
+ mul r3, r5
+ mul r3, r4
+ bl FUN_02017E14
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02019570
+FUN_02019570: ; 0x02019570
+ push {r3, lr}
+ ldrb r2, [r0, #0x4]
+ mov r1, #0x2c
+ ldr r3, [r0, #0x0]
+ mul r1, r2
+ add r1, r3, r1
+ ldrb r1, [r1, #0x1c]
+ lsl r2, r1, #0x2
+ ldr r1, _02019588 ; =0x020EDB50
+ ldr r1, [r1, r2]
+ blx r1
+ pop {r3, pc}
+ .balign 4
+_02019588: .word 0x020EDB50
+
+ thumb_func_start FUN_0201958C
+FUN_0201958C: ; 0x0201958C
+ push {r3, lr}
+ ldrb r2, [r0, #0x4]
+ mov r1, #0x2c
+ ldr r3, [r0, #0x0]
+ mul r1, r2
+ add r1, r3, r1
+ ldrb r1, [r1, #0x1c]
+ lsl r2, r1, #0x2
+ ldr r1, _020195A4 ; =0x020EDB44
+ ldr r1, [r1, r2]
+ blx r1
+ pop {r3, pc}
+ .balign 4
+_020195A4: .word 0x020EDB44
+
+ thumb_func_start FUN_020195A8
+FUN_020195A8: ; 0x020195A8
+ push {r3-r4, lr}
+ sub sp, #0x4
+ add r4, r0, #0x0
+ bl FUN_020193B4
+ ldrb r1, [r4, #0x4]
+ mov r0, #0x2c
+ add r2, r1, #0x0
+ mul r2, r0
+ ldr r0, [r4, #0x0]
+ add r3, r0, r2
+ ldr r2, [r3, #0x10]
+ str r2, [sp, #0x0]
+ ldr r2, [r3, #0x8]
+ ldr r3, [r3, #0xc]
+ bl FUN_02017CE8
+ add sp, #0x4
+ pop {r3-r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020195D0
+FUN_020195D0: ; 0x020195D0
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_020193B4
+ ldrb r1, [r4, #0x4]
+ ldr r0, [r4, #0x0]
+ bl FUN_0201AC68
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020195E4
+FUN_020195E4: ; 0x020195E4
+ push {r3-r4, lr}
+ sub sp, #0x4
+ add r4, r0, #0x0
+ bl FUN_02019444
+ ldrb r1, [r4, #0x4]
+ mov r0, #0x2c
+ add r2, r1, #0x0
+ mul r2, r0
+ ldr r0, [r4, #0x0]
+ add r3, r0, r2
+ ldr r2, [r3, #0x10]
+ str r2, [sp, #0x0]
+ ldr r2, [r3, #0x8]
+ ldr r3, [r3, #0xc]
+ bl FUN_02017CE8
+ add sp, #0x4
+ pop {r3-r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201960C
+FUN_0201960C: ; 0x0201960C
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02019444
+ ldrb r1, [r4, #0x4]
+ ldr r0, [r4, #0x0]
+ bl FUN_0201AC68
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02019620
+FUN_02019620: ; 0x02019620
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ ldrb r2, [r4, #0x4]
+ mov r0, #0x2c
+ ldr r3, [r4, #0x0]
+ mul r0, r2
+ add r0, r3, r0
+ ldrb r2, [r0, #0x1f]
+ cmp r2, #0x20
+ bne _0201963C
+ lsl r0, r1, #0x4
+ orr r0, r1
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+_0201963C:
+ lsl r3, r1, #0x18
+ lsl r0, r1, #0x10
+ orr r0, r3
+ lsl r5, r1, #0x8
+ orr r0, r5
+ orr r0, r1
+ ldr r1, [r4, #0xc]
+ ldrb r3, [r4, #0x8]
+ ldrb r4, [r4, #0x7]
+ mul r2, r4
+ mul r2, r3
+ blx MIi_CpuClearFast
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02019658
+FUN_02019658: ; 0x02019658
+ push {r4-r5, lr}
+ sub sp, #0x1c
+ add r4, sp, #0x18
+ ldrh r5, [r4, #0x10]
+ str r5, [sp, #0x0]
+ ldrh r5, [r4, #0x14]
+ str r5, [sp, #0x4]
+ ldrh r5, [r4, #0x18]
+ str r5, [sp, #0x8]
+ ldrh r5, [r4, #0x1c]
+ str r5, [sp, #0xc]
+ ldrh r5, [r4, #0x20]
+ str r5, [sp, #0x10]
+ ldrh r4, [r4, #0x24]
+ str r4, [sp, #0x14]
+ mov r4, #0x0
+ str r4, [sp, #0x18]
+ bl FUN_02019684
+ add sp, #0x1c
+ pop {r4-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02019684
+FUN_02019684: ; 0x02019684
+ push {r4-r5, lr}
+ sub sp, #0x24
+ str r1, [sp, #0x1c]
+ add r4, sp, #0x20
+ ldrh r5, [r4, #0x10]
+ add r1, sp, #0x14
+ strh r5, [r1, #0xc]
+ ldrh r5, [r4, #0x14]
+ strh r5, [r1, #0xe]
+ ldr r5, [r0, #0xc]
+ str r5, [sp, #0x14]
+ ldrb r5, [r0, #0x7]
+ lsl r5, r5, #0x3
+ strh r5, [r1, #0x4]
+ ldrb r5, [r0, #0x8]
+ lsl r5, r5, #0x3
+ strh r5, [r1, #0x6]
+ ldrb r5, [r0, #0x4]
+ ldr r1, [r0, #0x0]
+ mov r0, #0x2c
+ mul r0, r5
+ add r0, r1, r0
+ ldrb r0, [r0, #0x1e]
+ add r1, sp, #0x14
+ cmp r0, #0x0
+ ldrh r0, [r4, #0x18]
+ bne _020196D6
+ str r0, [sp, #0x0]
+ ldrh r0, [r4, #0x1c]
+ str r0, [sp, #0x4]
+ ldrh r0, [r4, #0x20]
+ str r0, [sp, #0x8]
+ ldrh r0, [r4, #0x24]
+ str r0, [sp, #0xc]
+ ldrh r0, [r4, #0x28]
+ str r0, [sp, #0x10]
+ add r0, sp, #0x1c
+ bl FUN_02018A60
+ add sp, #0x24
+ pop {r4-r5, pc}
+_020196D6:
+ str r0, [sp, #0x0]
+ ldrh r0, [r4, #0x1c]
+ str r0, [sp, #0x4]
+ ldrh r0, [r4, #0x20]
+ str r0, [sp, #0x8]
+ ldrh r0, [r4, #0x24]
+ str r0, [sp, #0xc]
+ ldrh r0, [r4, #0x28]
+ str r0, [sp, #0x10]
+ add r0, sp, #0x1c
+ bl FUN_02018CA0
+ add sp, #0x24
+ pop {r4-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020196F4
+FUN_020196F4: ; 0x020196F4
+ push {r3-r5, lr}
+ sub sp, #0x10
+ add r5, r1, #0x0
+ ldr r1, [r0, #0xc]
+ add r4, r2, #0x0
+ str r1, [sp, #0x8]
+ ldrb r1, [r0, #0x7]
+ add r2, r3, #0x0
+ lsl r3, r1, #0x3
+ add r1, sp, #0x8
+ strh r3, [r1, #0x4]
+ ldrb r3, [r0, #0x8]
+ lsl r3, r3, #0x3
+ strh r3, [r1, #0x6]
+ ldrb r3, [r0, #0x4]
+ ldr r1, [r0, #0x0]
+ mov r0, #0x2c
+ mul r0, r3
+ add r0, r1, r0
+ ldrb r0, [r0, #0x1e]
+ add r3, sp, #0x10
+ cmp r0, #0x0
+ bne _02019736
+ ldrh r0, [r3, #0x14]
+ add r1, r4, #0x0
+ str r0, [sp, #0x0]
+ str r5, [sp, #0x4]
+ ldrh r3, [r3, #0x10]
+ add r0, sp, #0x8
+ bl FUN_02018E88
+ add sp, #0x10
+ pop {r3-r5, pc}
+_02019736:
+ ldrh r0, [r3, #0x14]
+ add r1, r4, #0x0
+ str r0, [sp, #0x0]
+ str r5, [sp, #0x4]
+ ldrh r3, [r3, #0x10]
+ add r0, sp, #0x8
+ bl FUN_02018F4C
+ add sp, #0x10
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201974C
+FUN_0201974C: ; 0x0201974C
+ push {r4-r7, lr}
+ sub sp, #0x1fc
+ sub sp, #0x118
+ add r5, r0, #0x0
+ ldr r0, [sp, #0x330]
+ str r1, [sp, #0x0]
+ str r0, [sp, #0x330]
+ add r1, sp, #0x318
+ ldrh r1, [r1, #0x10]
+ ldr r0, [r5, #0xc]
+ str r1, [sp, #0x5c]
+ ldrb r1, [r5, #0x7]
+ str r0, [sp, #0x278]
+ ldrb r0, [r5, #0x8]
+ lsl r1, r1, #0x13
+ lsr r4, r1, #0x10
+ ldr r1, [sp, #0x5c]
+ lsl r0, r0, #0x13
+ sub r1, r4, r1
+ lsr r0, r0, #0x10
+ str r4, [sp, #0x58]
+ str r1, [sp, #0x8]
+ cmp r1, r2
+ blt _0201977E
+ str r2, [sp, #0x8]
+_0201977E:
+ add r1, sp, #0x318
+ ldrh r1, [r1, #0x14]
+ sub r0, r0, r1
+ str r1, [sp, #0x48]
+ str r0, [sp, #0x4]
+ cmp r0, r3
+ blt _0201978E
+ str r3, [sp, #0x4]
+_0201978E:
+ ldr r0, [sp, #0x8]
+ mov r4, #0x0
+ cmp r0, #0x8
+ ble _0201979E
+ mov r0, #0x1
+ orr r0, r4
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+_0201979E:
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x8
+ ble _020197AC
+ mov r0, #0x2
+ orr r0, r4
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+_020197AC:
+ ldrh r0, [r5, #0xa]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x1f
+ beq _020197B8
+ bl FUN_0201A12C
+_020197B8:
+ cmp r4, #0x3
+ bls _020197C0
+ bl FUN_0201A8BC
+_020197C0:
+ add r0, r4, r4
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_020197CC: ; jump table (using 16-bit offset)
+ .short _020197D4 - _020197CC - 2; case 0
+ .short _020198D6 - _020197CC - 2; case 1
+ .short _02019AE6 - _020197CC - 2; case 2
+ .short _02019D06 - _020197CC - 2; case 3
+_020197D4:
+ ldr r0, [sp, #0x330]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x70]
+ mov r0, #0x0
+ str r0, [sp, #0x274]
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ bgt _020197EA
+ bl FUN_0201A8BC
+_020197EA:
+ ldr r0, [sp, #0x58]
+ mov r1, #0x7
+ and r1, r0
+ add r0, r0, r1
+ asr r0, r0, #0x3
+ str r0, [sp, #0x6c]
+_020197F6:
+ ldr r0, [sp, #0x0]
+ ldr r1, [sp, #0x70]
+ ldr r0, [r0, #0x0]
+ ldr r2, [sp, #0x5c]
+ str r0, [sp, #0x26c]
+ ldr r0, [sp, #0x274]
+ asr r1, r0
+ mov r0, #0x1
+ and r0, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x270]
+ ldr r0, [sp, #0x8]
+ mov r1, #0x0
+ cmp r0, #0x0
+ ble _020198AA
+ ble _020198AA
+ add r0, r2, #0x0
+ lsl r3, r0, #0x2
+ ldr r0, [sp, #0x48]
+ ldr r6, [sp, #0x6c]
+ lsl r5, r0, #0x2
+ ldr r0, _02019B68 ; =0x00003FE0
+ add r7, r5, #0x0
+ and r0, r5
+ mul r6, r0
+ mov r0, #0x1c
+ and r7, r0
+ ldr r0, [sp, #0x48]
+ str r6, [sp, #0x68]
+ add r0, r0, #0x1
+ lsl r6, r0, #0x2
+ ldr r0, _02019B68 ; =0x00003FE0
+ ldr r5, [sp, #0x6c]
+ and r0, r6
+ mul r5, r0
+ mov r0, #0x1c
+ and r0, r6
+ add r4, r1, #0x0
+ str r5, [sp, #0x64]
+ str r0, [sp, #0x60]
+_02019848:
+ asr r5, r2, #0x1
+ mov r0, #0x3
+ and r5, r0
+ ldr r0, [sp, #0x278]
+ add r0, r0, r5
+ ldr r5, _02019B68 ; =0x00003FE0
+ and r5, r3
+ add r5, r0, r5
+ ldr r0, [sp, #0x68]
+ str r5, [sp, #0x27c]
+ add r0, r5, r0
+ ldr r5, [sp, #0x26c]
+ add r6, r5, #0x0
+ lsr r6, r4
+ mov r5, #0xf
+ and r5, r6
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x18
+ beq _0201989C
+ lsl r6, r2, #0x1f
+ lsr r6, r6, #0x1d
+ lsl r5, r6
+ str r5, [sp, #0x280]
+ ldrb r5, [r0, r7]
+ str r5, [sp, #0x284]
+ mov r5, #0xf0
+ asr r5, r6
+ ldr r6, [sp, #0x284]
+ and r6, r5
+ ldr r5, [sp, #0x280]
+ orr r5, r6
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x18
+ strb r5, [r0, r7]
+ ldr r0, [sp, #0x270]
+ cmp r0, #0x0
+ beq _0201989C
+ ldr r6, [sp, #0x27c]
+ ldr r0, [sp, #0x64]
+ add r6, r6, r0
+ ldr r0, [sp, #0x60]
+ strb r5, [r0, r6]
+_0201989C:
+ ldr r0, [sp, #0x8]
+ add r1, r1, #0x1
+ add r4, r4, #0x4
+ add r3, r3, #0x4
+ add r2, r2, #0x1
+ cmp r1, r0
+ blt _02019848
+_020198AA:
+ ldr r0, [sp, #0x270]
+ cmp r0, #0x0
+ beq _020198B8
+ ldr r0, [sp, #0x48]
+ add r0, r0, #0x2
+ str r0, [sp, #0x48]
+ b _020198BE
+_020198B8:
+ ldr r0, [sp, #0x48]
+ add r0, r0, #0x1
+ str r0, [sp, #0x48]
+_020198BE:
+ ldr r0, [sp, #0x0]
+ add r0, r0, #0x4
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x274]
+ add r1, r0, #0x1
+ ldr r0, [sp, #0x4]
+ str r1, [sp, #0x274]
+ cmp r1, r0
+ blt _020197F6
+ add sp, #0x1fc
+ add sp, #0x118
+ pop {r4-r7, pc}
+_020198D6:
+ ldr r0, [sp, #0x0]
+ str r0, [sp, #0x25c]
+ ldr r0, [sp, #0x48]
+ str r0, [sp, #0x264]
+ ldr r0, [sp, #0x330]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x54]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x84]
+ mov r0, #0x0
+ str r0, [sp, #0x268]
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ ble _020199D2
+ ldr r0, [sp, #0x58]
+ mov r1, #0x7
+ and r1, r0
+ add r0, r0, r1
+ asr r0, r0, #0x3
+ str r0, [sp, #0x80]
+_02019902:
+ ldr r0, [sp, #0x25c]
+ ldr r1, [sp, #0x84]
+ ldr r0, [r0, #0x0]
+ ldr r2, [sp, #0x5c]
+ str r0, [sp, #0x258]
+ ldr r0, [sp, #0x268]
+ ldr r6, [sp, #0x80]
+ asr r1, r0
+ mov r0, #0x1
+ and r0, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x260]
+ add r0, r2, #0x0
+ lsl r3, r0, #0x2
+ ldr r0, [sp, #0x264]
+ mov r1, #0x0
+ lsl r5, r0, #0x2
+ ldr r0, _02019B68 ; =0x00003FE0
+ add r7, r5, #0x0
+ and r0, r5
+ mul r6, r0
+ mov r0, #0x1c
+ and r7, r0
+ ldr r0, [sp, #0x264]
+ str r6, [sp, #0x7c]
+ add r0, r0, #0x1
+ lsl r6, r0, #0x2
+ ldr r0, _02019B68 ; =0x00003FE0
+ ldr r5, [sp, #0x80]
+ and r0, r6
+ mul r5, r0
+ mov r0, #0x1c
+ and r0, r6
+ add r4, r1, #0x0
+ str r5, [sp, #0x78]
+ str r0, [sp, #0x74]
+_0201994C:
+ asr r5, r2, #0x1
+ mov r0, #0x3
+ and r5, r0
+ ldr r0, [sp, #0x278]
+ add r0, r0, r5
+ ldr r5, _02019B68 ; =0x00003FE0
+ and r5, r3
+ add r5, r0, r5
+ ldr r0, [sp, #0x7c]
+ str r5, [sp, #0x288]
+ add r0, r5, r0
+ ldr r5, [sp, #0x258]
+ add r6, r5, #0x0
+ lsr r6, r4
+ mov r5, #0xf
+ and r5, r6
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x18
+ beq _020199A0
+ lsl r6, r2, #0x1f
+ lsr r6, r6, #0x1d
+ lsl r5, r6
+ str r5, [sp, #0x28c]
+ ldrb r5, [r0, r7]
+ str r5, [sp, #0x290]
+ mov r5, #0xf0
+ asr r5, r6
+ ldr r6, [sp, #0x290]
+ and r6, r5
+ ldr r5, [sp, #0x28c]
+ orr r5, r6
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x18
+ strb r5, [r0, r7]
+ ldr r0, [sp, #0x260]
+ cmp r0, #0x0
+ beq _020199A0
+ ldr r6, [sp, #0x288]
+ ldr r0, [sp, #0x78]
+ add r6, r6, r0
+ ldr r0, [sp, #0x74]
+ strb r5, [r0, r6]
+_020199A0:
+ add r1, r1, #0x1
+ add r4, r4, #0x4
+ add r3, r3, #0x4
+ add r2, r2, #0x1
+ cmp r1, #0x8
+ blt _0201994C
+ ldr r0, [sp, #0x260]
+ cmp r0, #0x0
+ beq _020199BA
+ ldr r0, [sp, #0x264]
+ add r0, r0, #0x2
+ str r0, [sp, #0x264]
+ b _020199C0
+_020199BA:
+ ldr r0, [sp, #0x264]
+ add r0, r0, #0x1
+ str r0, [sp, #0x264]
+_020199C0:
+ ldr r0, [sp, #0x25c]
+ add r0, r0, #0x4
+ str r0, [sp, #0x25c]
+ ldr r0, [sp, #0x268]
+ add r1, r0, #0x1
+ ldr r0, [sp, #0x4]
+ str r1, [sp, #0x268]
+ cmp r1, r0
+ blt _02019902
+_020199D2:
+ ldr r0, [sp, #0x0]
+ add r0, #0x20
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x54]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x98]
+ mov r0, #0x0
+ str r0, [sp, #0x254]
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ bgt _020199EE
+ bl FUN_0201A8BC
+_020199EE:
+ ldr r0, [sp, #0x5c]
+ mov r1, #0x7
+ add r0, #0x8
+ str r0, [sp, #0x5c]
+ ldr r0, [sp, #0x58]
+ and r1, r0
+ add r0, r0, r1
+ asr r0, r0, #0x3
+ str r0, [sp, #0x94]
+_02019A00:
+ ldr r0, [sp, #0x0]
+ ldr r1, [sp, #0x98]
+ ldr r0, [r0, #0x0]
+ ldr r2, [sp, #0x5c]
+ str r0, [sp, #0x24c]
+ ldr r0, [sp, #0x254]
+ asr r1, r0
+ mov r0, #0x1
+ and r0, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x250]
+ ldr r0, [sp, #0x8]
+ mov r1, #0x0
+ str r0, [sp, #0x294]
+ sub r0, #0x8
+ str r0, [sp, #0x294]
+ cmp r0, #0x0
+ ble _02019ABA
+ ble _02019ABA
+ add r0, r2, #0x0
+ lsl r3, r0, #0x2
+ ldr r0, [sp, #0x48]
+ ldr r6, [sp, #0x94]
+ lsl r5, r0, #0x2
+ ldr r0, _02019B68 ; =0x00003FE0
+ add r7, r5, #0x0
+ and r0, r5
+ mul r6, r0
+ mov r0, #0x1c
+ and r7, r0
+ ldr r0, [sp, #0x48]
+ str r6, [sp, #0x90]
+ add r0, r0, #0x1
+ lsl r6, r0, #0x2
+ ldr r0, _02019B68 ; =0x00003FE0
+ ldr r5, [sp, #0x94]
+ and r0, r6
+ mul r5, r0
+ mov r0, #0x1c
+ and r0, r6
+ add r4, r1, #0x0
+ str r5, [sp, #0x8c]
+ str r0, [sp, #0x88]
+_02019A58:
+ asr r5, r2, #0x1
+ mov r0, #0x3
+ and r5, r0
+ ldr r0, [sp, #0x278]
+ add r0, r0, r5
+ ldr r5, _02019B68 ; =0x00003FE0
+ and r5, r3
+ add r5, r0, r5
+ ldr r0, [sp, #0x90]
+ str r5, [sp, #0x298]
+ add r0, r5, r0
+ ldr r5, [sp, #0x24c]
+ add r6, r5, #0x0
+ lsr r6, r4
+ mov r5, #0xf
+ and r5, r6
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x18
+ beq _02019AAC
+ lsl r6, r2, #0x1f
+ lsr r6, r6, #0x1d
+ lsl r5, r6
+ str r5, [sp, #0x29c]
+ ldrb r5, [r0, r7]
+ str r5, [sp, #0x2a0]
+ mov r5, #0xf0
+ asr r5, r6
+ ldr r6, [sp, #0x2a0]
+ and r6, r5
+ ldr r5, [sp, #0x29c]
+ orr r5, r6
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x18
+ strb r5, [r0, r7]
+ ldr r0, [sp, #0x250]
+ cmp r0, #0x0
+ beq _02019AAC
+ ldr r6, [sp, #0x298]
+ ldr r0, [sp, #0x8c]
+ add r6, r6, r0
+ ldr r0, [sp, #0x88]
+ strb r5, [r0, r6]
+_02019AAC:
+ ldr r0, [sp, #0x294]
+ add r1, r1, #0x1
+ add r4, r4, #0x4
+ add r3, r3, #0x4
+ add r2, r2, #0x1
+ cmp r1, r0
+ blt _02019A58
+_02019ABA:
+ ldr r0, [sp, #0x250]
+ cmp r0, #0x0
+ beq _02019AC8
+ ldr r0, [sp, #0x48]
+ add r0, r0, #0x2
+ str r0, [sp, #0x48]
+ b _02019ACE
+_02019AC8:
+ ldr r0, [sp, #0x48]
+ add r0, r0, #0x1
+ str r0, [sp, #0x48]
+_02019ACE:
+ ldr r0, [sp, #0x0]
+ add r0, r0, #0x4
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x254]
+ add r1, r0, #0x1
+ ldr r0, [sp, #0x4]
+ str r1, [sp, #0x254]
+ cmp r1, r0
+ blt _02019A00
+ add sp, #0x1fc
+ add sp, #0x118
+ pop {r4-r7, pc}
+_02019AE6:
+ ldr r0, [sp, #0x0]
+ mov r1, #0x7
+ str r0, [sp, #0x23c]
+ ldr r0, [sp, #0x48]
+ str r0, [sp, #0x244]
+ mov r0, #0x0
+ str r0, [sp, #0x248]
+ ldr r0, [sp, #0x330]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0xa8]
+ ldr r0, [sp, #0x58]
+ and r1, r0
+ add r0, r0, r1
+ asr r0, r0, #0x3
+ str r0, [sp, #0x40]
+_02019B06:
+ ldr r0, [sp, #0x23c]
+ ldr r1, [sp, #0xa8]
+ ldr r0, [r0, #0x0]
+ ldr r2, [sp, #0x5c]
+ str r0, [sp, #0x238]
+ ldr r0, [sp, #0x248]
+ asr r1, r0
+ mov r0, #0x1
+ and r0, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x240]
+ ldr r0, [sp, #0x8]
+ mov r1, #0x0
+ cmp r0, #0x0
+ ble _02019BC2
+ ble _02019BC2
+ add r0, r2, #0x0
+ lsl r3, r0, #0x2
+ ldr r0, [sp, #0x244]
+ ldr r6, [sp, #0x40]
+ lsl r5, r0, #0x2
+ ldr r0, _02019B68 ; =0x00003FE0
+ add r7, r5, #0x0
+ and r0, r5
+ mul r6, r0
+ mov r0, #0x1c
+ and r7, r0
+ ldr r0, [sp, #0x244]
+ str r6, [sp, #0xa4]
+ add r0, r0, #0x1
+ lsl r6, r0, #0x2
+ ldr r0, _02019B68 ; =0x00003FE0
+ ldr r5, [sp, #0x40]
+ and r0, r6
+ mul r5, r0
+ mov r0, #0x1c
+ and r0, r6
+ add r4, r1, #0x0
+ str r5, [sp, #0xa0]
+ str r0, [sp, #0x9c]
+_02019B58:
+ asr r5, r2, #0x1
+ mov r0, #0x3
+ and r5, r0
+ ldr r0, [sp, #0x278]
+ add r0, r0, r5
+ ldr r5, _02019B68 ; =0x00003FE0
+ b _02019B6C
+ nop
+_02019B68: .word 0x00003FE0
+_02019B6C:
+ and r5, r3
+ add r5, r0, r5
+ ldr r0, [sp, #0xa4]
+ str r5, [sp, #0x2a4]
+ add r0, r5, r0
+ ldr r5, [sp, #0x238]
+ add r6, r5, #0x0
+ lsr r6, r4
+ mov r5, #0xf
+ and r5, r6
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x18
+ beq _02019BB4
+ lsl r6, r2, #0x1f
+ lsr r6, r6, #0x1d
+ lsl r5, r6
+ str r5, [sp, #0x2a8]
+ ldrb r5, [r0, r7]
+ str r5, [sp, #0x2ac]
+ mov r5, #0xf0
+ asr r5, r6
+ ldr r6, [sp, #0x2ac]
+ and r6, r5
+ ldr r5, [sp, #0x2a8]
+ orr r5, r6
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x18
+ strb r5, [r0, r7]
+ ldr r0, [sp, #0x240]
+ cmp r0, #0x0
+ beq _02019BB4
+ ldr r6, [sp, #0x2a4]
+ ldr r0, [sp, #0xa0]
+ add r6, r6, r0
+ ldr r0, [sp, #0x9c]
+ strb r5, [r0, r6]
+_02019BB4:
+ ldr r0, [sp, #0x8]
+ add r1, r1, #0x1
+ add r4, r4, #0x4
+ add r3, r3, #0x4
+ add r2, r2, #0x1
+ cmp r1, r0
+ blt _02019B58
+_02019BC2:
+ ldr r0, [sp, #0x240]
+ cmp r0, #0x0
+ beq _02019BD0
+ ldr r0, [sp, #0x244]
+ add r0, r0, #0x2
+ str r0, [sp, #0x244]
+ b _02019BD6
+_02019BD0:
+ ldr r0, [sp, #0x244]
+ add r0, r0, #0x1
+ str r0, [sp, #0x244]
+_02019BD6:
+ ldr r0, [sp, #0x23c]
+ add r0, r0, #0x4
+ str r0, [sp, #0x23c]
+ ldr r0, [sp, #0x248]
+ add r0, r0, #0x1
+ str r0, [sp, #0x248]
+ cmp r0, #0x8
+ blt _02019B06
+ ldr r0, [sp, #0x0]
+ mov r2, #0x0
+ add r0, #0x40
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x48]
+ mov r1, #0x1
+ add r0, #0x8
+ str r0, [sp, #0x48]
+_02019BF6:
+ ldr r0, [sp, #0x330]
+ asr r0, r2
+ tst r0, r1
+ beq _02019C04
+ ldr r0, [sp, #0x48]
+ add r0, r0, #0x1
+ str r0, [sp, #0x48]
+_02019C04:
+ add r2, r2, #0x1
+ cmp r2, #0x8
+ blt _02019BF6
+ ldr r0, [sp, #0x330]
+ asr r0, r0, #0x8
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0xb8]
+ mov r0, #0x0
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x4]
+ sub r0, #0x8
+ cmp r0, #0x0
+ bgt _02019C24
+ bl FUN_0201A8BC
+_02019C24:
+ ldr r0, [sp, #0x0]
+ ldr r1, [sp, #0xb8]
+ ldr r0, [r0, #0x0]
+ ldr r2, [sp, #0x5c]
+ str r0, [sp, #0x230]
+ ldr r0, [sp, #0x20]
+ asr r1, r0
+ mov r0, #0x1
+ and r0, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x234]
+ ldr r0, [sp, #0x8]
+ mov r1, #0x0
+ cmp r0, #0x0
+ ble _02019CD8
+ ble _02019CD8
+ add r0, r2, #0x0
+ lsl r3, r0, #0x2
+ ldr r0, [sp, #0x48]
+ ldr r6, [sp, #0x40]
+ lsl r5, r0, #0x2
+ ldr r0, _02019F88 ; =0x00003FE0
+ add r7, r5, #0x0
+ and r0, r5
+ mul r6, r0
+ mov r0, #0x1c
+ and r7, r0
+ ldr r0, [sp, #0x48]
+ str r6, [sp, #0xb4]
+ add r0, r0, #0x1
+ lsl r6, r0, #0x2
+ ldr r0, _02019F88 ; =0x00003FE0
+ ldr r5, [sp, #0x40]
+ and r0, r6
+ mul r5, r0
+ mov r0, #0x1c
+ and r0, r6
+ add r4, r1, #0x0
+ str r5, [sp, #0xb0]
+ str r0, [sp, #0xac]
+_02019C76:
+ asr r5, r2, #0x1
+ mov r0, #0x3
+ and r5, r0
+ ldr r0, [sp, #0x278]
+ add r0, r0, r5
+ ldr r5, _02019F88 ; =0x00003FE0
+ and r5, r3
+ add r5, r0, r5
+ ldr r0, [sp, #0xb4]
+ str r5, [sp, #0x2b0]
+ add r0, r5, r0
+ ldr r5, [sp, #0x230]
+ add r6, r5, #0x0
+ lsr r6, r4
+ mov r5, #0xf
+ and r5, r6
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x18
+ beq _02019CCA
+ lsl r6, r2, #0x1f
+ lsr r6, r6, #0x1d
+ lsl r5, r6
+ str r5, [sp, #0x2b4]
+ ldrb r5, [r0, r7]
+ str r5, [sp, #0x2b8]
+ mov r5, #0xf0
+ asr r5, r6
+ ldr r6, [sp, #0x2b8]
+ and r6, r5
+ ldr r5, [sp, #0x2b4]
+ orr r5, r6
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x18
+ strb r5, [r0, r7]
+ ldr r0, [sp, #0x234]
+ cmp r0, #0x0
+ beq _02019CCA
+ ldr r6, [sp, #0x2b0]
+ ldr r0, [sp, #0xb0]
+ add r6, r6, r0
+ ldr r0, [sp, #0xac]
+ strb r5, [r0, r6]
+_02019CCA:
+ ldr r0, [sp, #0x8]
+ add r1, r1, #0x1
+ add r4, r4, #0x4
+ add r3, r3, #0x4
+ add r2, r2, #0x1
+ cmp r1, r0
+ blt _02019C76
+_02019CD8:
+ ldr r0, [sp, #0x234]
+ cmp r0, #0x0
+ beq _02019CE6
+ ldr r0, [sp, #0x48]
+ add r0, r0, #0x2
+ str r0, [sp, #0x48]
+ b _02019CEC
+_02019CE6:
+ ldr r0, [sp, #0x48]
+ add r0, r0, #0x1
+ str r0, [sp, #0x48]
+_02019CEC:
+ ldr r0, [sp, #0x0]
+ ldr r1, [sp, #0x4]
+ add r0, r0, #0x4
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x20]
+ sub r1, #0x8
+ add r0, r0, #0x1
+ str r0, [sp, #0x20]
+ cmp r0, r1
+ blt _02019C24
+ add sp, #0x1fc
+ add sp, #0x118
+ pop {r4-r7, pc}
+_02019D06:
+ ldr r0, [sp, #0x0]
+ str r0, [sp, #0x220]
+ ldr r0, [sp, #0x48]
+ str r0, [sp, #0x228]
+ ldr r0, [sp, #0x330]
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ mov r0, #0x0
+ str r0, [sp, #0x22c]
+ lsl r0, r1, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x3c]
+ ldr r0, [sp, #0x58]
+ mov r1, #0x7
+ and r1, r0
+ add r0, r0, r1
+ asr r0, r0, #0x3
+ str r0, [sp, #0x38]
+_02019D2A:
+ ldr r0, [sp, #0x220]
+ ldr r1, [sp, #0x3c]
+ ldr r0, [r0, #0x0]
+ ldr r2, [sp, #0x5c]
+ str r0, [sp, #0x21c]
+ ldr r0, [sp, #0x22c]
+ ldr r6, [sp, #0x38]
+ asr r1, r0
+ mov r0, #0x1
+ and r0, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x224]
+ add r0, r2, #0x0
+ lsl r3, r0, #0x2
+ ldr r0, [sp, #0x228]
+ mov r1, #0x0
+ lsl r5, r0, #0x2
+ ldr r0, _02019F88 ; =0x00003FE0
+ add r7, r5, #0x0
+ and r0, r5
+ mul r6, r0
+ mov r0, #0x1c
+ and r7, r0
+ ldr r0, [sp, #0x228]
+ str r6, [sp, #0xc4]
+ add r0, r0, #0x1
+ lsl r6, r0, #0x2
+ ldr r0, _02019F88 ; =0x00003FE0
+ ldr r5, [sp, #0x38]
+ and r0, r6
+ mul r5, r0
+ mov r0, #0x1c
+ and r0, r6
+ str r3, [sp, #0x34]
+ add r4, r1, #0x0
+ str r5, [sp, #0xc0]
+ str r0, [sp, #0xbc]
+_02019D76:
+ asr r5, r2, #0x1
+ mov r0, #0x3
+ and r5, r0
+ ldr r0, [sp, #0x278]
+ add r0, r0, r5
+ ldr r5, _02019F88 ; =0x00003FE0
+ and r5, r3
+ add r5, r0, r5
+ ldr r0, [sp, #0xc4]
+ str r5, [sp, #0x2bc]
+ add r0, r5, r0
+ ldr r5, [sp, #0x21c]
+ add r6, r5, #0x0
+ lsr r6, r4
+ mov r5, #0xf
+ and r5, r6
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x18
+ beq _02019DCA
+ lsl r6, r2, #0x1f
+ lsr r6, r6, #0x1d
+ lsl r5, r6
+ str r5, [sp, #0x2c0]
+ ldrb r5, [r0, r7]
+ str r5, [sp, #0x2c4]
+ mov r5, #0xf0
+ asr r5, r6
+ ldr r6, [sp, #0x2c4]
+ and r6, r5
+ ldr r5, [sp, #0x2c0]
+ orr r5, r6
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x18
+ strb r5, [r0, r7]
+ ldr r0, [sp, #0x224]
+ cmp r0, #0x0
+ beq _02019DCA
+ ldr r6, [sp, #0x2bc]
+ ldr r0, [sp, #0xc0]
+ add r6, r6, r0
+ ldr r0, [sp, #0xbc]
+ strb r5, [r0, r6]
+_02019DCA:
+ add r1, r1, #0x1
+ add r4, r4, #0x4
+ add r3, r3, #0x4
+ add r2, r2, #0x1
+ cmp r1, #0x8
+ blt _02019D76
+ ldr r0, [sp, #0x224]
+ cmp r0, #0x0
+ beq _02019DE4
+ ldr r0, [sp, #0x228]
+ add r0, r0, #0x2
+ str r0, [sp, #0x228]
+ b _02019DEA
+_02019DE4:
+ ldr r0, [sp, #0x228]
+ add r0, r0, #0x1
+ str r0, [sp, #0x228]
+_02019DEA:
+ ldr r0, [sp, #0x220]
+ add r0, r0, #0x4
+ str r0, [sp, #0x220]
+ ldr r0, [sp, #0x22c]
+ add r0, r0, #0x1
+ str r0, [sp, #0x22c]
+ cmp r0, #0x8
+ blt _02019D2A
+ ldr r0, [sp, #0x0]
+ str r0, [sp, #0x20c]
+ add r0, #0x20
+ str r0, [sp, #0x20c]
+ ldr r0, [sp, #0x48]
+ str r0, [sp, #0x214]
+ mov r0, #0x0
+ str r0, [sp, #0x218]
+ ldr r0, [sp, #0x5c]
+ str r0, [sp, #0xd4]
+ add r0, #0x8
+ str r0, [sp, #0xd4]
+_02019E12:
+ ldr r0, [sp, #0x20c]
+ ldr r1, [sp, #0x3c]
+ ldr r0, [r0, #0x0]
+ ldr r2, [sp, #0xd4]
+ str r0, [sp, #0x208]
+ ldr r0, [sp, #0x218]
+ asr r1, r0
+ mov r0, #0x1
+ and r0, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x210]
+ ldr r0, [sp, #0x8]
+ mov r1, #0x0
+ str r0, [sp, #0x2c8]
+ sub r0, #0x8
+ str r0, [sp, #0x2c8]
+ cmp r0, #0x0
+ ble _02019ECC
+ ble _02019ECC
+ add r0, r2, #0x0
+ lsl r3, r0, #0x2
+ ldr r0, [sp, #0x214]
+ ldr r6, [sp, #0x38]
+ lsl r5, r0, #0x2
+ ldr r0, _02019F88 ; =0x00003FE0
+ add r7, r5, #0x0
+ and r0, r5
+ mul r6, r0
+ mov r0, #0x1c
+ and r7, r0
+ ldr r0, [sp, #0x214]
+ str r6, [sp, #0xd0]
+ add r0, r0, #0x1
+ lsl r6, r0, #0x2
+ ldr r0, _02019F88 ; =0x00003FE0
+ ldr r5, [sp, #0x38]
+ and r0, r6
+ mul r5, r0
+ mov r0, #0x1c
+ and r0, r6
+ add r4, r1, #0x0
+ str r5, [sp, #0xcc]
+ str r0, [sp, #0xc8]
+_02019E6A:
+ asr r5, r2, #0x1
+ mov r0, #0x3
+ and r5, r0
+ ldr r0, [sp, #0x278]
+ add r0, r0, r5
+ ldr r5, _02019F88 ; =0x00003FE0
+ and r5, r3
+ add r5, r0, r5
+ ldr r0, [sp, #0xd0]
+ str r5, [sp, #0x2cc]
+ add r0, r5, r0
+ ldr r5, [sp, #0x208]
+ add r6, r5, #0x0
+ lsr r6, r4
+ mov r5, #0xf
+ and r5, r6
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x18
+ beq _02019EBE
+ lsl r6, r2, #0x1f
+ lsr r6, r6, #0x1d
+ lsl r5, r6
+ str r5, [sp, #0x2d0]
+ ldrb r5, [r0, r7]
+ str r5, [sp, #0x2d4]
+ mov r5, #0xf0
+ asr r5, r6
+ ldr r6, [sp, #0x2d4]
+ and r6, r5
+ ldr r5, [sp, #0x2d0]
+ orr r5, r6
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x18
+ strb r5, [r0, r7]
+ ldr r0, [sp, #0x210]
+ cmp r0, #0x0
+ beq _02019EBE
+ ldr r6, [sp, #0x2cc]
+ ldr r0, [sp, #0xcc]
+ add r6, r6, r0
+ ldr r0, [sp, #0xc8]
+ strb r5, [r0, r6]
+_02019EBE:
+ ldr r0, [sp, #0x2c8]
+ add r1, r1, #0x1
+ add r4, r4, #0x4
+ add r3, r3, #0x4
+ add r2, r2, #0x1
+ cmp r1, r0
+ blt _02019E6A
+_02019ECC:
+ ldr r0, [sp, #0x210]
+ cmp r0, #0x0
+ beq _02019EDA
+ ldr r0, [sp, #0x214]
+ add r0, r0, #0x2
+ str r0, [sp, #0x214]
+ b _02019EE0
+_02019EDA:
+ ldr r0, [sp, #0x214]
+ add r0, r0, #0x1
+ str r0, [sp, #0x214]
+_02019EE0:
+ ldr r0, [sp, #0x20c]
+ add r0, r0, #0x4
+ str r0, [sp, #0x20c]
+ ldr r0, [sp, #0x218]
+ add r0, r0, #0x1
+ str r0, [sp, #0x218]
+ cmp r0, #0x8
+ blt _02019E12
+ ldr r0, [sp, #0x0]
+ mov r2, #0x0
+ str r0, [sp, #0x1fc]
+ add r0, #0x40
+ str r0, [sp, #0x1fc]
+ ldr r0, [sp, #0x48]
+ mov r1, #0x1
+ add r0, #0x8
+ str r0, [sp, #0x48]
+ str r0, [sp, #0x204]
+_02019F04:
+ ldr r0, [sp, #0x330]
+ asr r0, r2
+ tst r0, r1
+ beq _02019F12
+ ldr r0, [sp, #0x204]
+ add r0, r0, #0x1
+ str r0, [sp, #0x204]
+_02019F12:
+ add r2, r2, #0x1
+ cmp r2, #0x8
+ blt _02019F04
+ ldr r0, [sp, #0x330]
+ asr r0, r0, #0x8
+ str r0, [sp, #0x50]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0xe4]
+ mov r0, #0x0
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x4]
+ sub r0, #0x8
+ cmp r0, #0x0
+ ble _0201A008
+_02019F30:
+ ldr r0, [sp, #0x1fc]
+ ldr r1, [sp, #0xe4]
+ ldr r0, [r0, #0x0]
+ ldr r6, [sp, #0x38]
+ str r0, [sp, #0x1f8]
+ ldr r0, [sp, #0x1c]
+ ldr r2, [sp, #0x5c]
+ asr r1, r0
+ mov r0, #0x1
+ and r0, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x200]
+ ldr r0, [sp, #0x204]
+ mov r1, #0x0
+ lsl r5, r0, #0x2
+ ldr r0, _02019F88 ; =0x00003FE0
+ add r7, r5, #0x0
+ and r0, r5
+ mul r6, r0
+ mov r0, #0x1c
+ and r7, r0
+ ldr r0, [sp, #0x204]
+ str r6, [sp, #0xe0]
+ add r0, r0, #0x1
+ lsl r6, r0, #0x2
+ ldr r0, _02019F88 ; =0x00003FE0
+ ldr r5, [sp, #0x38]
+ and r0, r6
+ mul r5, r0
+ mov r0, #0x1c
+ and r0, r6
+ ldr r3, [sp, #0x34]
+ add r4, r1, #0x0
+ str r5, [sp, #0xdc]
+ str r0, [sp, #0xd8]
+_02019F78:
+ asr r5, r2, #0x1
+ mov r0, #0x3
+ and r5, r0
+ ldr r0, [sp, #0x278]
+ add r0, r0, r5
+ ldr r5, _02019F88 ; =0x00003FE0
+ b _02019F8C
+ nop
+_02019F88: .word 0x00003FE0
+_02019F8C:
+ and r5, r3
+ add r5, r0, r5
+ ldr r0, [sp, #0xe0]
+ str r5, [sp, #0x2d8]
+ add r0, r5, r0
+ ldr r5, [sp, #0x1f8]
+ add r6, r5, #0x0
+ lsr r6, r4
+ mov r5, #0xf
+ and r5, r6
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x18
+ beq _02019FD4
+ lsl r6, r2, #0x1f
+ lsr r6, r6, #0x1d
+ lsl r5, r6
+ str r5, [sp, #0x2dc]
+ ldrb r5, [r0, r7]
+ str r5, [sp, #0x2e0]
+ mov r5, #0xf0
+ asr r5, r6
+ ldr r6, [sp, #0x2e0]
+ and r6, r5
+ ldr r5, [sp, #0x2dc]
+ orr r5, r6
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x18
+ strb r5, [r0, r7]
+ ldr r0, [sp, #0x200]
+ cmp r0, #0x0
+ beq _02019FD4
+ ldr r6, [sp, #0x2d8]
+ ldr r0, [sp, #0xdc]
+ add r6, r6, r0
+ ldr r0, [sp, #0xd8]
+ strb r5, [r0, r6]
+_02019FD4:
+ add r1, r1, #0x1
+ add r4, r4, #0x4
+ add r3, r3, #0x4
+ add r2, r2, #0x1
+ cmp r1, #0x8
+ blt _02019F78
+ ldr r0, [sp, #0x200]
+ cmp r0, #0x0
+ beq _02019FEE
+ ldr r0, [sp, #0x204]
+ add r0, r0, #0x2
+ str r0, [sp, #0x204]
+ b _02019FF4
+_02019FEE:
+ ldr r0, [sp, #0x204]
+ add r0, r0, #0x1
+ str r0, [sp, #0x204]
+_02019FF4:
+ ldr r0, [sp, #0x1fc]
+ ldr r1, [sp, #0x4]
+ add r0, r0, #0x4
+ str r0, [sp, #0x1fc]
+ ldr r0, [sp, #0x1c]
+ sub r1, #0x8
+ add r0, r0, #0x1
+ str r0, [sp, #0x1c]
+ cmp r0, r1
+ blt _02019F30
+_0201A008:
+ ldr r0, [sp, #0x0]
+ mov r2, #0x0
+ add r0, #0x60
+ str r0, [sp, #0x0]
+ mov r1, #0x1
+_0201A012:
+ ldr r0, [sp, #0x330]
+ asr r0, r2
+ tst r0, r1
+ beq _0201A020
+ ldr r0, [sp, #0x48]
+ add r0, r0, #0x1
+ str r0, [sp, #0x48]
+_0201A020:
+ add r2, r2, #0x1
+ cmp r2, #0x8
+ blt _0201A012
+ ldr r0, [sp, #0x50]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0xf4]
+ mov r0, #0x0
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x4]
+ sub r0, #0x8
+ cmp r0, #0x0
+ bgt _0201A03E
+ bl FUN_0201A8BC
+_0201A03E:
+ ldr r0, [sp, #0x5c]
+ add r0, #0x8
+ str r0, [sp, #0x5c]
+_0201A044:
+ ldr r0, [sp, #0x0]
+ ldr r1, [sp, #0xf4]
+ ldr r0, [r0, #0x0]
+ ldr r2, [sp, #0x5c]
+ str r0, [sp, #0x1f0]
+ ldr r0, [sp, #0x18]
+ asr r1, r0
+ mov r0, #0x1
+ and r0, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x1f4]
+ ldr r0, [sp, #0x8]
+ mov r1, #0x0
+ str r0, [sp, #0x2e4]
+ sub r0, #0x8
+ str r0, [sp, #0x2e4]
+ cmp r0, #0x0
+ ble _0201A0FE
+ ble _0201A0FE
+ add r0, r2, #0x0
+ lsl r3, r0, #0x2
+ ldr r0, [sp, #0x48]
+ ldr r6, [sp, #0x38]
+ lsl r5, r0, #0x2
+ ldr r0, _0201A3A8 ; =0x00003FE0
+ add r7, r5, #0x0
+ and r0, r5
+ mul r6, r0
+ mov r0, #0x1c
+ and r7, r0
+ ldr r0, [sp, #0x48]
+ str r6, [sp, #0xf0]
+ add r0, r0, #0x1
+ lsl r6, r0, #0x2
+ ldr r0, _0201A3A8 ; =0x00003FE0
+ ldr r5, [sp, #0x38]
+ and r0, r6
+ mul r5, r0
+ mov r0, #0x1c
+ and r0, r6
+ add r4, r1, #0x0
+ str r5, [sp, #0xec]
+ str r0, [sp, #0xe8]
+_0201A09C:
+ asr r5, r2, #0x1
+ mov r0, #0x3
+ and r5, r0
+ ldr r0, [sp, #0x278]
+ add r0, r0, r5
+ ldr r5, _0201A3A8 ; =0x00003FE0
+ and r5, r3
+ add r5, r0, r5
+ ldr r0, [sp, #0xf0]
+ str r5, [sp, #0x2e8]
+ add r0, r5, r0
+ ldr r5, [sp, #0x1f0]
+ add r6, r5, #0x0
+ lsr r6, r4
+ mov r5, #0xf
+ and r5, r6
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x18
+ beq _0201A0F0
+ lsl r6, r2, #0x1f
+ lsr r6, r6, #0x1d
+ lsl r5, r6
+ str r5, [sp, #0x2ec]
+ ldrb r5, [r0, r7]
+ mov r12, r5
+ mov r5, #0xf0
+ asr r5, r6
+ mov r6, r12
+ and r6, r5
+ ldr r5, [sp, #0x2ec]
+ orr r5, r6
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x18
+ strb r5, [r0, r7]
+ ldr r0, [sp, #0x1f4]
+ cmp r0, #0x0
+ beq _0201A0F0
+ ldr r6, [sp, #0x2e8]
+ ldr r0, [sp, #0xec]
+ add r6, r6, r0
+ ldr r0, [sp, #0xe8]
+ strb r5, [r0, r6]
+_0201A0F0:
+ ldr r0, [sp, #0x2e4]
+ add r1, r1, #0x1
+ add r4, r4, #0x4
+ add r3, r3, #0x4
+ add r2, r2, #0x1
+ cmp r1, r0
+ blt _0201A09C
+_0201A0FE:
+ ldr r0, [sp, #0x1f4]
+ cmp r0, #0x0
+ beq _0201A10C
+ ldr r0, [sp, #0x48]
+ add r0, r0, #0x2
+ str r0, [sp, #0x48]
+ b _0201A112
+_0201A10C:
+ ldr r0, [sp, #0x48]
+ add r0, r0, #0x1
+ str r0, [sp, #0x48]
+_0201A112:
+ ldr r0, [sp, #0x0]
+ ldr r1, [sp, #0x4]
+ add r0, r0, #0x4
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x18]
+ sub r1, #0x8
+ add r0, r0, #0x1
+ str r0, [sp, #0x18]
+ cmp r0, r1
+ blt _0201A044
+ add sp, #0x1fc
+ add sp, #0x118
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_0201A12C
+FUN_0201A12C: ; 0x0201A12C
+ lsl r1, r2, #0x2
+ mul r1, r3
+ ldr r3, [r5, #0x0]
+ ldrb r2, [r5, #0x9]
+ ldr r0, [sp, #0x0]
+ ldr r3, [r3, #0x0]
+ lsl r1, r1, #0x3
+ bl FUN_02018848
+ str r0, [sp, #0x1ec]
+ cmp r4, #0x3
+ bhi _0201A21E
+ add r0, r4, r4
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0201A150: ; jump table (using 16-bit offset)
+ .short _0201A158 - _0201A150 - 2; case 0
+ .short _0201A220 - _0201A150 - 2; case 1
+ .short _0201A3CA - _0201A150 - 2; case 2
+ .short _0201A56E - _0201A150 - 2; case 3
+_0201A158:
+ ldr r0, [sp, #0x330]
+ ldr r7, [sp, #0x1ec]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x10c]
+ mov r0, #0x0
+ str r0, [sp, #0x1e8]
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ ble _0201A21E
+ ldr r0, [sp, #0x58]
+ mov r1, #0x7
+ and r1, r0
+ add r0, r0, r1
+ asr r0, r0, #0x3
+ str r0, [sp, #0x108]
+_0201A178:
+ ldr r1, [sp, #0x10c]
+ ldr r0, [sp, #0x1e8]
+ mov r4, #0x0
+ asr r1, r0
+ mov r0, #0x1
+ and r0, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x310]
+ ldr r0, [sp, #0x8]
+ ldr r5, [sp, #0x5c]
+ cmp r0, #0x0
+ ble _0201A1FC
+ ble _0201A1FC
+ add r0, r5, #0x0
+ lsl r6, r0, #0x3
+ ldr r0, [sp, #0x48]
+ ldr r2, [sp, #0x108]
+ lsl r1, r0, #0x3
+ ldr r0, _0201A3AC ; =0x00007FC0
+ mov r3, #0x38
+ and r0, r1
+ mul r2, r0
+ add r0, r1, #0x0
+ and r0, r3
+ str r0, [sp, #0x100]
+ ldr r0, [sp, #0x48]
+ str r2, [sp, #0x104]
+ add r0, r0, #0x1
+ lsl r1, r0, #0x3
+ ldr r0, _0201A3AC ; =0x00007FC0
+ ldr r2, [sp, #0x108]
+ and r0, r1
+ mul r2, r0
+ add r0, r1, #0x0
+ and r0, r3
+ str r2, [sp, #0xfc]
+ str r0, [sp, #0xf8]
+_0201A1C4:
+ mov r0, #0x7
+ add r1, r5, #0x0
+ and r1, r0
+ ldr r0, [sp, #0x278]
+ add r1, r0, r1
+ ldr r0, _0201A3AC ; =0x00007FC0
+ and r0, r6
+ add r3, r1, r0
+ ldr r0, [sp, #0x104]
+ ldrb r1, [r7, r4]
+ add r2, r3, r0
+ cmp r1, #0x0
+ beq _0201A1F0
+ ldr r0, [sp, #0x100]
+ strb r1, [r2, r0]
+ ldr r0, [sp, #0x310]
+ cmp r0, #0x0
+ beq _0201A1F0
+ ldr r0, [sp, #0xfc]
+ add r2, r3, r0
+ ldr r0, [sp, #0xf8]
+ strb r1, [r0, r2]
+_0201A1F0:
+ ldr r0, [sp, #0x8]
+ add r4, r4, #0x1
+ add r6, #0x8
+ add r5, r5, #0x1
+ cmp r4, r0
+ blt _0201A1C4
+_0201A1FC:
+ ldr r0, [sp, #0x310]
+ cmp r0, #0x0
+ beq _0201A20A
+ ldr r0, [sp, #0x48]
+ add r0, r0, #0x2
+ str r0, [sp, #0x48]
+ b _0201A210
+_0201A20A:
+ ldr r0, [sp, #0x48]
+ add r0, r0, #0x1
+ str r0, [sp, #0x48]
+_0201A210:
+ ldr r0, [sp, #0x1e8]
+ add r7, #0x8
+ add r1, r0, #0x1
+ ldr r0, [sp, #0x4]
+ str r1, [sp, #0x1e8]
+ cmp r1, r0
+ blt _0201A178
+_0201A21E:
+ b _0201A8B6
+_0201A220:
+ ldr r0, [sp, #0x48]
+ ldr r7, [sp, #0x1ec]
+ str r0, [sp, #0x1e0]
+ ldr r0, [sp, #0x330]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x4c]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x124]
+ mov r0, #0x0
+ str r0, [sp, #0x1e4]
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ ble _0201A2E6
+ ldr r0, [sp, #0x58]
+ mov r1, #0x7
+ and r1, r0
+ add r0, r0, r1
+ asr r0, r0, #0x3
+ str r0, [sp, #0x120]
+_0201A24A:
+ ldr r1, [sp, #0x124]
+ ldr r0, [sp, #0x1e4]
+ ldr r5, [sp, #0x5c]
+ asr r1, r0
+ mov r0, #0x1
+ and r0, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x30c]
+ add r0, r5, #0x0
+ lsl r6, r0, #0x3
+ ldr r0, [sp, #0x1e0]
+ ldr r2, [sp, #0x120]
+ lsl r1, r0, #0x3
+ ldr r0, _0201A3AC ; =0x00007FC0
+ mov r3, #0x38
+ and r0, r1
+ mul r2, r0
+ add r0, r1, #0x0
+ and r0, r3
+ str r0, [sp, #0x118]
+ ldr r0, [sp, #0x1e0]
+ str r2, [sp, #0x11c]
+ add r0, r0, #0x1
+ lsl r1, r0, #0x3
+ ldr r0, _0201A3AC ; =0x00007FC0
+ ldr r2, [sp, #0x120]
+ and r0, r1
+ mul r2, r0
+ add r0, r1, #0x0
+ and r0, r3
+ mov r4, #0x0
+ str r2, [sp, #0x114]
+ str r0, [sp, #0x110]
+_0201A28E:
+ mov r0, #0x7
+ add r1, r5, #0x0
+ and r1, r0
+ ldr r0, [sp, #0x278]
+ add r1, r0, r1
+ ldr r0, _0201A3AC ; =0x00007FC0
+ and r0, r6
+ add r3, r1, r0
+ ldr r0, [sp, #0x11c]
+ ldrb r1, [r7, r4]
+ add r2, r3, r0
+ cmp r1, #0x0
+ beq _0201A2BA
+ ldr r0, [sp, #0x118]
+ strb r1, [r2, r0]
+ ldr r0, [sp, #0x30c]
+ cmp r0, #0x0
+ beq _0201A2BA
+ ldr r0, [sp, #0x114]
+ add r2, r3, r0
+ ldr r0, [sp, #0x110]
+ strb r1, [r0, r2]
+_0201A2BA:
+ add r4, r4, #0x1
+ add r6, #0x8
+ add r5, r5, #0x1
+ cmp r4, #0x8
+ blt _0201A28E
+ ldr r0, [sp, #0x30c]
+ cmp r0, #0x0
+ beq _0201A2D2
+ ldr r0, [sp, #0x1e0]
+ add r0, r0, #0x2
+ str r0, [sp, #0x1e0]
+ b _0201A2D8
+_0201A2D2:
+ ldr r0, [sp, #0x1e0]
+ add r0, r0, #0x1
+ str r0, [sp, #0x1e0]
+_0201A2D8:
+ ldr r0, [sp, #0x1e4]
+ add r7, #0x8
+ add r1, r0, #0x1
+ ldr r0, [sp, #0x4]
+ str r1, [sp, #0x1e4]
+ cmp r1, r0
+ blt _0201A24A
+_0201A2E6:
+ ldr r0, [sp, #0x1ec]
+ str r0, [sp, #0x308]
+ add r0, #0x40
+ str r0, [sp, #0x308]
+ ldr r0, [sp, #0x4c]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x13c]
+ mov r0, #0x0
+ str r0, [sp, #0x1dc]
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ ble _0201A3C8
+ ldr r0, [sp, #0x5c]
+ mov r1, #0x7
+ add r0, #0x8
+ str r0, [sp, #0x5c]
+ ldr r0, [sp, #0x58]
+ and r1, r0
+ add r0, r0, r1
+ asr r0, r0, #0x3
+ str r0, [sp, #0x138]
+_0201A312:
+ ldr r1, [sp, #0x13c]
+ ldr r0, [sp, #0x1dc]
+ ldr r7, [sp, #0x8]
+ asr r1, r0
+ mov r0, #0x1
+ and r0, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ sub r7, #0x8
+ mov r4, #0x0
+ str r0, [sp, #0x1d8]
+ ldr r5, [sp, #0x5c]
+ cmp r7, #0x0
+ ble _0201A398
+ ble _0201A398
+ add r0, r5, #0x0
+ lsl r6, r0, #0x3
+ ldr r0, [sp, #0x48]
+ ldr r2, [sp, #0x138]
+ lsl r1, r0, #0x3
+ ldr r0, _0201A3AC ; =0x00007FC0
+ mov r3, #0x38
+ and r0, r1
+ mul r2, r0
+ add r0, r1, #0x0
+ and r0, r3
+ str r0, [sp, #0x130]
+ ldr r0, [sp, #0x48]
+ str r2, [sp, #0x134]
+ add r0, r0, #0x1
+ lsl r1, r0, #0x3
+ ldr r0, _0201A3AC ; =0x00007FC0
+ ldr r2, [sp, #0x138]
+ and r0, r1
+ mul r2, r0
+ add r0, r1, #0x0
+ and r0, r3
+ str r2, [sp, #0x12c]
+ str r0, [sp, #0x128]
+_0201A360:
+ mov r0, #0x7
+ add r1, r5, #0x0
+ and r1, r0
+ ldr r0, [sp, #0x278]
+ add r1, r0, r1
+ ldr r0, _0201A3AC ; =0x00007FC0
+ and r0, r6
+ add r3, r1, r0
+ ldr r0, [sp, #0x134]
+ add r2, r3, r0
+ ldr r0, [sp, #0x308]
+ ldrb r1, [r0, r4]
+ cmp r1, #0x0
+ beq _0201A38E
+ ldr r0, [sp, #0x130]
+ strb r1, [r2, r0]
+ ldr r0, [sp, #0x1d8]
+ cmp r0, #0x0
+ beq _0201A38E
+ ldr r0, [sp, #0x12c]
+ add r2, r3, r0
+ ldr r0, [sp, #0x128]
+ strb r1, [r0, r2]
+_0201A38E:
+ add r4, r4, #0x1
+ add r6, #0x8
+ add r5, r5, #0x1
+ cmp r4, r7
+ blt _0201A360
+_0201A398:
+ ldr r0, [sp, #0x1d8]
+ cmp r0, #0x0
+ beq _0201A3B0
+ ldr r0, [sp, #0x48]
+ add r0, r0, #0x2
+ str r0, [sp, #0x48]
+ b _0201A3B6
+ nop
+_0201A3A8: .word 0x00003FE0
+_0201A3AC: .word 0x00007FC0
+_0201A3B0:
+ ldr r0, [sp, #0x48]
+ add r0, r0, #0x1
+ str r0, [sp, #0x48]
+_0201A3B6:
+ ldr r0, [sp, #0x308]
+ add r0, #0x8
+ str r0, [sp, #0x308]
+ ldr r0, [sp, #0x1dc]
+ add r1, r0, #0x1
+ ldr r0, [sp, #0x4]
+ str r1, [sp, #0x1dc]
+ cmp r1, r0
+ blt _0201A312
+_0201A3C8:
+ b _0201A8B6
+_0201A3CA:
+ ldr r0, [sp, #0x48]
+ mov r1, #0x7
+ str r0, [sp, #0x1d0]
+ mov r0, #0x0
+ str r0, [sp, #0x1d4]
+ ldr r0, [sp, #0x330]
+ ldr r7, [sp, #0x1ec]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x150]
+ ldr r0, [sp, #0x58]
+ and r1, r0
+ add r0, r0, r1
+ asr r0, r0, #0x3
+ str r0, [sp, #0x30]
+_0201A3E8:
+ ldr r1, [sp, #0x150]
+ ldr r0, [sp, #0x1d4]
+ mov r4, #0x0
+ asr r1, r0
+ mov r0, #0x1
+ and r0, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x304]
+ ldr r0, [sp, #0x8]
+ ldr r5, [sp, #0x5c]
+ cmp r0, #0x0
+ ble _0201A46C
+ ble _0201A46C
+ add r0, r5, #0x0
+ lsl r6, r0, #0x3
+ ldr r0, [sp, #0x1d0]
+ ldr r2, [sp, #0x30]
+ lsl r1, r0, #0x3
+ ldr r0, _0201A748 ; =0x00007FC0
+ mov r3, #0x38
+ and r0, r1
+ mul r2, r0
+ add r0, r1, #0x0
+ and r0, r3
+ str r0, [sp, #0x148]
+ ldr r0, [sp, #0x1d0]
+ str r2, [sp, #0x14c]
+ add r0, r0, #0x1
+ lsl r1, r0, #0x3
+ ldr r0, _0201A748 ; =0x00007FC0
+ ldr r2, [sp, #0x30]
+ and r0, r1
+ mul r2, r0
+ add r0, r1, #0x0
+ and r0, r3
+ str r2, [sp, #0x144]
+ str r0, [sp, #0x140]
+_0201A434:
+ mov r0, #0x7
+ add r1, r5, #0x0
+ and r1, r0
+ ldr r0, [sp, #0x278]
+ add r1, r0, r1
+ ldr r0, _0201A748 ; =0x00007FC0
+ and r0, r6
+ add r3, r1, r0
+ ldr r0, [sp, #0x14c]
+ ldrb r1, [r7, r4]
+ add r2, r3, r0
+ cmp r1, #0x0
+ beq _0201A460
+ ldr r0, [sp, #0x148]
+ strb r1, [r2, r0]
+ ldr r0, [sp, #0x304]
+ cmp r0, #0x0
+ beq _0201A460
+ ldr r0, [sp, #0x144]
+ add r2, r3, r0
+ ldr r0, [sp, #0x140]
+ strb r1, [r0, r2]
+_0201A460:
+ ldr r0, [sp, #0x8]
+ add r4, r4, #0x1
+ add r6, #0x8
+ add r5, r5, #0x1
+ cmp r4, r0
+ blt _0201A434
+_0201A46C:
+ ldr r0, [sp, #0x304]
+ cmp r0, #0x0
+ beq _0201A47A
+ ldr r0, [sp, #0x1d0]
+ add r0, r0, #0x2
+ str r0, [sp, #0x1d0]
+ b _0201A480
+_0201A47A:
+ ldr r0, [sp, #0x1d0]
+ add r0, r0, #0x1
+ str r0, [sp, #0x1d0]
+_0201A480:
+ ldr r0, [sp, #0x1d4]
+ add r7, #0x8
+ add r0, r0, #0x1
+ str r0, [sp, #0x1d4]
+ cmp r0, #0x8
+ blt _0201A3E8
+ ldr r0, [sp, #0x48]
+ ldr r7, [sp, #0x1ec]
+ add r0, #0x8
+ str r0, [sp, #0x48]
+ add r7, #0x80
+ mov r0, #0x0
+ mov r2, #0x1
+_0201A49A:
+ ldr r1, [sp, #0x330]
+ asr r1, r0
+ tst r1, r2
+ beq _0201A4A8
+ ldr r1, [sp, #0x48]
+ add r1, r1, #0x1
+ str r1, [sp, #0x48]
+_0201A4A8:
+ add r0, r0, #0x1
+ cmp r0, #0x8
+ blt _0201A49A
+ ldr r0, [sp, #0x330]
+ asr r0, r0, #0x8
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x164]
+ mov r0, #0x0
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x4]
+ sub r0, #0x8
+ cmp r0, #0x0
+ ble _0201A56C
+_0201A4C4:
+ ldr r1, [sp, #0x164]
+ ldr r0, [sp, #0x14]
+ mov r4, #0x0
+ asr r1, r0
+ mov r0, #0x1
+ and r0, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x300]
+ ldr r0, [sp, #0x8]
+ ldr r5, [sp, #0x5c]
+ cmp r0, #0x0
+ ble _0201A548
+ ble _0201A548
+ add r0, r5, #0x0
+ lsl r6, r0, #0x3
+ ldr r0, [sp, #0x48]
+ ldr r2, [sp, #0x30]
+ lsl r1, r0, #0x3
+ ldr r0, _0201A748 ; =0x00007FC0
+ mov r3, #0x38
+ and r0, r1
+ mul r2, r0
+ add r0, r1, #0x0
+ and r0, r3
+ str r0, [sp, #0x15c]
+ ldr r0, [sp, #0x48]
+ str r2, [sp, #0x160]
+ add r0, r0, #0x1
+ lsl r1, r0, #0x3
+ ldr r0, _0201A748 ; =0x00007FC0
+ ldr r2, [sp, #0x30]
+ and r0, r1
+ mul r2, r0
+ add r0, r1, #0x0
+ and r0, r3
+ str r2, [sp, #0x158]
+ str r0, [sp, #0x154]
+_0201A510:
+ mov r0, #0x7
+ add r1, r5, #0x0
+ and r1, r0
+ ldr r0, [sp, #0x278]
+ add r1, r0, r1
+ ldr r0, _0201A748 ; =0x00007FC0
+ and r0, r6
+ add r3, r1, r0
+ ldr r0, [sp, #0x160]
+ ldrb r1, [r7, r4]
+ add r2, r3, r0
+ cmp r1, #0x0
+ beq _0201A53C
+ ldr r0, [sp, #0x15c]
+ strb r1, [r2, r0]
+ ldr r0, [sp, #0x300]
+ cmp r0, #0x0
+ beq _0201A53C
+ ldr r0, [sp, #0x158]
+ add r2, r3, r0
+ ldr r0, [sp, #0x154]
+ strb r1, [r0, r2]
+_0201A53C:
+ ldr r0, [sp, #0x8]
+ add r4, r4, #0x1
+ add r6, #0x8
+ add r5, r5, #0x1
+ cmp r4, r0
+ blt _0201A510
+_0201A548:
+ ldr r0, [sp, #0x300]
+ cmp r0, #0x0
+ beq _0201A556
+ ldr r0, [sp, #0x48]
+ add r0, r0, #0x2
+ str r0, [sp, #0x48]
+ b _0201A55C
+_0201A556:
+ ldr r0, [sp, #0x48]
+ add r0, r0, #0x1
+ str r0, [sp, #0x48]
+_0201A55C:
+ ldr r0, [sp, #0x14]
+ ldr r1, [sp, #0x4]
+ add r0, r0, #0x1
+ sub r1, #0x8
+ add r7, #0x8
+ str r0, [sp, #0x14]
+ cmp r0, r1
+ blt _0201A4C4
+_0201A56C:
+ b _0201A8B6
+_0201A56E:
+ ldr r0, [sp, #0x48]
+ ldr r7, [sp, #0x1ec]
+ str r0, [sp, #0x1c8]
+ ldr r0, [sp, #0x330]
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ mov r0, #0x0
+ str r0, [sp, #0x1cc]
+ lsl r0, r1, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x2c]
+ ldr r0, [sp, #0x58]
+ mov r1, #0x7
+ and r1, r0
+ add r0, r0, r1
+ asr r0, r0, #0x3
+ str r0, [sp, #0x28]
+_0201A590:
+ ldr r1, [sp, #0x2c]
+ ldr r0, [sp, #0x1cc]
+ ldr r5, [sp, #0x5c]
+ asr r1, r0
+ mov r0, #0x1
+ and r0, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x2fc]
+ add r0, r5, #0x0
+ lsl r6, r0, #0x3
+ ldr r0, [sp, #0x1c8]
+ ldr r2, [sp, #0x28]
+ lsl r1, r0, #0x3
+ ldr r0, _0201A748 ; =0x00007FC0
+ mov r3, #0x38
+ and r0, r1
+ mul r2, r0
+ add r0, r1, #0x0
+ and r0, r3
+ str r0, [sp, #0x170]
+ ldr r0, [sp, #0x1c8]
+ str r2, [sp, #0x174]
+ add r0, r0, #0x1
+ lsl r1, r0, #0x3
+ ldr r0, _0201A748 ; =0x00007FC0
+ ldr r2, [sp, #0x28]
+ and r0, r1
+ mul r2, r0
+ add r0, r1, #0x0
+ and r0, r3
+ mov r4, #0x0
+ str r6, [sp, #0x24]
+ str r2, [sp, #0x16c]
+ str r0, [sp, #0x168]
+_0201A5D6:
+ mov r0, #0x7
+ add r1, r5, #0x0
+ and r1, r0
+ ldr r0, [sp, #0x278]
+ add r1, r0, r1
+ ldr r0, _0201A748 ; =0x00007FC0
+ and r0, r6
+ add r3, r1, r0
+ ldr r0, [sp, #0x174]
+ ldrb r1, [r7, r4]
+ add r2, r3, r0
+ cmp r1, #0x0
+ beq _0201A602
+ ldr r0, [sp, #0x170]
+ strb r1, [r2, r0]
+ ldr r0, [sp, #0x2fc]
+ cmp r0, #0x0
+ beq _0201A602
+ ldr r0, [sp, #0x16c]
+ add r2, r3, r0
+ ldr r0, [sp, #0x168]
+ strb r1, [r0, r2]
+_0201A602:
+ add r4, r4, #0x1
+ add r6, #0x8
+ add r5, r5, #0x1
+ cmp r4, #0x8
+ blt _0201A5D6
+ ldr r0, [sp, #0x2fc]
+ cmp r0, #0x0
+ beq _0201A61A
+ ldr r0, [sp, #0x1c8]
+ add r0, r0, #0x2
+ str r0, [sp, #0x1c8]
+ b _0201A620
+_0201A61A:
+ ldr r0, [sp, #0x1c8]
+ add r0, r0, #0x1
+ str r0, [sp, #0x1c8]
+_0201A620:
+ ldr r0, [sp, #0x1cc]
+ add r7, #0x8
+ add r0, r0, #0x1
+ str r0, [sp, #0x1cc]
+ cmp r0, #0x8
+ blt _0201A590
+ ldr r0, [sp, #0x1ec]
+ str r0, [sp, #0x2f8]
+ add r0, #0x40
+ str r0, [sp, #0x2f8]
+ ldr r0, [sp, #0x48]
+ str r0, [sp, #0x1c0]
+ mov r0, #0x0
+ str r0, [sp, #0x1c4]
+ ldr r0, [sp, #0x5c]
+ str r0, [sp, #0x188]
+ add r0, #0x8
+ str r0, [sp, #0x188]
+_0201A644:
+ ldr r1, [sp, #0x2c]
+ ldr r0, [sp, #0x1c4]
+ ldr r7, [sp, #0x8]
+ asr r1, r0
+ mov r0, #0x1
+ and r0, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ sub r7, #0x8
+ mov r4, #0x0
+ str r0, [sp, #0x1bc]
+ ldr r5, [sp, #0x188]
+ cmp r7, #0x0
+ ble _0201A6CA
+ ble _0201A6CA
+ add r0, r5, #0x0
+ lsl r6, r0, #0x3
+ ldr r0, [sp, #0x1c0]
+ ldr r2, [sp, #0x28]
+ lsl r1, r0, #0x3
+ ldr r0, _0201A748 ; =0x00007FC0
+ mov r3, #0x38
+ and r0, r1
+ mul r2, r0
+ add r0, r1, #0x0
+ and r0, r3
+ str r0, [sp, #0x180]
+ ldr r0, [sp, #0x1c0]
+ str r2, [sp, #0x184]
+ add r0, r0, #0x1
+ lsl r1, r0, #0x3
+ ldr r0, _0201A748 ; =0x00007FC0
+ ldr r2, [sp, #0x28]
+ and r0, r1
+ mul r2, r0
+ add r0, r1, #0x0
+ and r0, r3
+ str r2, [sp, #0x17c]
+ str r0, [sp, #0x178]
+_0201A692:
+ mov r0, #0x7
+ add r1, r5, #0x0
+ and r1, r0
+ ldr r0, [sp, #0x278]
+ add r1, r0, r1
+ ldr r0, _0201A748 ; =0x00007FC0
+ and r0, r6
+ add r3, r1, r0
+ ldr r0, [sp, #0x184]
+ add r2, r3, r0
+ ldr r0, [sp, #0x2f8]
+ ldrb r1, [r0, r4]
+ cmp r1, #0x0
+ beq _0201A6C0
+ ldr r0, [sp, #0x180]
+ strb r1, [r2, r0]
+ ldr r0, [sp, #0x1bc]
+ cmp r0, #0x0
+ beq _0201A6C0
+ ldr r0, [sp, #0x17c]
+ add r2, r3, r0
+ ldr r0, [sp, #0x178]
+ strb r1, [r0, r2]
+_0201A6C0:
+ add r4, r4, #0x1
+ add r6, #0x8
+ add r5, r5, #0x1
+ cmp r4, r7
+ blt _0201A692
+_0201A6CA:
+ ldr r0, [sp, #0x1bc]
+ cmp r0, #0x0
+ beq _0201A6D8
+ ldr r0, [sp, #0x1c0]
+ add r0, r0, #0x2
+ str r0, [sp, #0x1c0]
+ b _0201A6DE
+_0201A6D8:
+ ldr r0, [sp, #0x1c0]
+ add r0, r0, #0x1
+ str r0, [sp, #0x1c0]
+_0201A6DE:
+ ldr r0, [sp, #0x2f8]
+ add r0, #0x8
+ str r0, [sp, #0x2f8]
+ ldr r0, [sp, #0x1c4]
+ add r0, r0, #0x1
+ str r0, [sp, #0x1c4]
+ cmp r0, #0x8
+ blt _0201A644
+ ldr r0, [sp, #0x48]
+ ldr r7, [sp, #0x1ec]
+ add r0, #0x8
+ add r7, #0x80
+ str r0, [sp, #0x48]
+ str r0, [sp, #0x1b8]
+ mov r0, #0x0
+ mov r2, #0x1
+_0201A6FE:
+ ldr r1, [sp, #0x330]
+ asr r1, r0
+ tst r1, r2
+ beq _0201A70C
+ ldr r1, [sp, #0x1b8]
+ add r1, r1, #0x1
+ str r1, [sp, #0x1b8]
+_0201A70C:
+ add r0, r0, #0x1
+ cmp r0, #0x8
+ blt _0201A6FE
+ ldr r0, [sp, #0x330]
+ asr r0, r0, #0x8
+ str r0, [sp, #0x44]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x19c]
+ mov r0, #0x0
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x4]
+ sub r0, #0x8
+ cmp r0, #0x0
+ ble _0201A7CE
+_0201A72A:
+ ldr r1, [sp, #0x19c]
+ ldr r0, [sp, #0x10]
+ ldr r2, [sp, #0x28]
+ asr r1, r0
+ mov r0, #0x1
+ and r0, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x2f4]
+ ldr r0, [sp, #0x1b8]
+ mov r3, #0x38
+ lsl r1, r0, #0x3
+ ldr r0, _0201A748 ; =0x00007FC0
+ b _0201A74C
+ nop
+_0201A748: .word 0x00007FC0
+_0201A74C:
+ ldr r5, [sp, #0x5c]
+ and r0, r1
+ mul r2, r0
+ add r0, r1, #0x0
+ and r0, r3
+ str r0, [sp, #0x194]
+ ldr r0, [sp, #0x1b8]
+ str r2, [sp, #0x198]
+ add r0, r0, #0x1
+ lsl r1, r0, #0x3
+ ldr r0, _0201A8C4 ; =0x00007FC0
+ ldr r2, [sp, #0x28]
+ and r0, r1
+ mul r2, r0
+ add r0, r1, #0x0
+ and r0, r3
+ ldr r6, [sp, #0x24]
+ mov r4, #0x0
+ str r2, [sp, #0x190]
+ str r0, [sp, #0x18c]
+_0201A774:
+ mov r0, #0x7
+ add r1, r5, #0x0
+ and r1, r0
+ ldr r0, [sp, #0x278]
+ add r1, r0, r1
+ ldr r0, _0201A8C4 ; =0x00007FC0
+ and r0, r6
+ add r3, r1, r0
+ ldr r0, [sp, #0x198]
+ ldrb r1, [r7, r4]
+ add r2, r3, r0
+ cmp r1, #0x0
+ beq _0201A7A0
+ ldr r0, [sp, #0x194]
+ strb r1, [r2, r0]
+ ldr r0, [sp, #0x2f4]
+ cmp r0, #0x0
+ beq _0201A7A0
+ ldr r0, [sp, #0x190]
+ add r2, r3, r0
+ ldr r0, [sp, #0x18c]
+ strb r1, [r0, r2]
+_0201A7A0:
+ add r4, r4, #0x1
+ add r6, #0x8
+ add r5, r5, #0x1
+ cmp r4, #0x8
+ blt _0201A774
+ ldr r0, [sp, #0x2f4]
+ cmp r0, #0x0
+ beq _0201A7B8
+ ldr r0, [sp, #0x1b8]
+ add r0, r0, #0x2
+ str r0, [sp, #0x1b8]
+ b _0201A7BE
+_0201A7B8:
+ ldr r0, [sp, #0x1b8]
+ add r0, r0, #0x1
+ str r0, [sp, #0x1b8]
+_0201A7BE:
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x4]
+ add r0, r0, #0x1
+ sub r1, #0x8
+ add r7, #0x8
+ str r0, [sp, #0x10]
+ cmp r0, r1
+ blt _0201A72A
+_0201A7CE:
+ ldr r0, [sp, #0x1ec]
+ mov r2, #0x0
+ str r0, [sp, #0x2f0]
+ add r0, #0xc0
+ str r0, [sp, #0x2f0]
+ mov r1, #0x1
+_0201A7DA:
+ ldr r0, [sp, #0x330]
+ asr r0, r2
+ tst r0, r1
+ beq _0201A7E8
+ ldr r0, [sp, #0x48]
+ add r0, r0, #0x1
+ str r0, [sp, #0x48]
+_0201A7E8:
+ add r2, r2, #0x1
+ cmp r2, #0x8
+ blt _0201A7DA
+ ldr r0, [sp, #0x44]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x1b0]
+ mov r0, #0x0
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x4]
+ sub r0, #0x8
+ cmp r0, #0x0
+ ble _0201A8B6
+ ldr r0, [sp, #0x5c]
+ add r0, #0x8
+ str r0, [sp, #0x5c]
+_0201A808:
+ ldr r1, [sp, #0x1b0]
+ ldr r0, [sp, #0xc]
+ ldr r7, [sp, #0x8]
+ asr r1, r0
+ mov r0, #0x1
+ and r0, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ sub r7, #0x8
+ mov r4, #0x0
+ str r0, [sp, #0x1b4]
+ ldr r5, [sp, #0x5c]
+ cmp r7, #0x0
+ ble _0201A88E
+ ble _0201A88E
+ add r0, r5, #0x0
+ lsl r6, r0, #0x3
+ ldr r0, [sp, #0x48]
+ ldr r2, [sp, #0x28]
+ lsl r1, r0, #0x3
+ ldr r0, _0201A8C4 ; =0x00007FC0
+ mov r3, #0x38
+ and r0, r1
+ mul r2, r0
+ add r0, r1, #0x0
+ and r0, r3
+ str r0, [sp, #0x1a8]
+ ldr r0, [sp, #0x48]
+ str r2, [sp, #0x1ac]
+ add r0, r0, #0x1
+ lsl r1, r0, #0x3
+ ldr r0, _0201A8C4 ; =0x00007FC0
+ ldr r2, [sp, #0x28]
+ and r0, r1
+ mul r2, r0
+ add r0, r1, #0x0
+ and r0, r3
+ str r2, [sp, #0x1a4]
+ str r0, [sp, #0x1a0]
+_0201A856:
+ mov r0, #0x7
+ add r1, r5, #0x0
+ and r1, r0
+ ldr r0, [sp, #0x278]
+ add r1, r0, r1
+ ldr r0, _0201A8C4 ; =0x00007FC0
+ and r0, r6
+ add r3, r1, r0
+ ldr r0, [sp, #0x1ac]
+ add r2, r3, r0
+ ldr r0, [sp, #0x2f0]
+ ldrb r1, [r0, r4]
+ cmp r1, #0x0
+ beq _0201A884
+ ldr r0, [sp, #0x1a8]
+ strb r1, [r2, r0]
+ ldr r0, [sp, #0x1b4]
+ cmp r0, #0x0
+ beq _0201A884
+ ldr r0, [sp, #0x1a4]
+ add r2, r3, r0
+ ldr r0, [sp, #0x1a0]
+ strb r1, [r0, r2]
+_0201A884:
+ add r4, r4, #0x1
+ add r6, #0x8
+ add r5, r5, #0x1
+ cmp r4, r7
+ blt _0201A856
+_0201A88E:
+ ldr r0, [sp, #0x1b4]
+ cmp r0, #0x0
+ beq _0201A89C
+ ldr r0, [sp, #0x48]
+ add r0, r0, #0x2
+ str r0, [sp, #0x48]
+ b _0201A8A2
+_0201A89C:
+ ldr r0, [sp, #0x48]
+ add r0, r0, #0x1
+ str r0, [sp, #0x48]
+_0201A8A2:
+ ldr r0, [sp, #0x2f0]
+ ldr r1, [sp, #0x4]
+ add r0, #0x8
+ str r0, [sp, #0x2f0]
+ ldr r0, [sp, #0xc]
+ sub r1, #0x8
+ add r0, r0, #0x1
+ str r0, [sp, #0xc]
+ cmp r0, r1
+ blt _0201A808
+_0201A8B6:
+ ldr r0, [sp, #0x1ec]
+ bl FUN_02016A18
+
+ thumb_func_start FUN_0201A8BC
+FUN_0201A8BC: ; 0x0201A8BC
+ add sp, #0x1fc
+ add sp, #0x118
+ pop {r4-r7, pc}
+ nop
+_0201A8C4: .word 0x00007FC0
+
+ thumb_func_start FUN_0201A8C8
+FUN_0201A8C8: ; 0x0201A8C8
+ push {r4-r6, lr}
+ ldrb r6, [r0, #0x4]
+ mov r5, #0x2c
+ ldr r4, [r0, #0x0]
+ mul r5, r6
+ add r4, r4, r5
+ ldrb r4, [r4, #0x1e]
+ cmp r4, #0x0
+ bne _0201A8E0
+ bl FUN_0201A8E8
+ pop {r4-r6, pc}
+_0201A8E0:
+ bl FUN_0201A9D4
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201A8E8
+FUN_0201A8E8: ; 0x0201A8E8
+ push {r3-r7, lr}
+ sub sp, #0x10
+ add r6, r3, #0x0
+ add r4, r0, #0x0
+ add r0, r1, #0x0
+ lsl r3, r6, #0x18
+ lsl r1, r6, #0x10
+ str r2, [sp, #0x0]
+ orr r1, r3
+ lsl r5, r6, #0x8
+ orr r1, r5
+ orr r1, r6
+ str r1, [sp, #0x4]
+ ldrb r1, [r4, #0x7]
+ ldrb r3, [r4, #0x8]
+ ldr r2, [r4, #0xc]
+ str r1, [sp, #0x8]
+ mul r1, r3
+ lsl r1, r1, #0x5
+ str r1, [sp, #0xc]
+ cmp r0, #0x3
+ bhi _0201A9CE
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0201A920: ; jump table (using 16-bit offset)
+ .short _0201A928 - _0201A920 - 2; case 0
+ .short _0201A976 - _0201A920 - 2; case 1
+ .short _0201A9CE - _0201A920 - 2; case 2
+ .short _0201A9CE - _0201A920 - 2; case 3
+_0201A928:
+ add r0, r1, #0x0
+ mov r7, #0x0
+ cmp r0, #0x0
+ ble _0201A9CE
+ mov r0, #0x7
+ mov lr, r0
+_0201A934:
+ ldr r3, [sp, #0x0]
+ mov r4, #0x0
+ add r5, r7, #0x0
+_0201A93A:
+ mov r0, #0x7
+ add r6, r3, #0x0
+ and r6, r0
+ add r1, r3, #0x0
+ mov r0, lr
+ bic r1, r0
+ ldr r0, [sp, #0x8]
+ mul r1, r0
+ add r0, r6, #0x0
+ orr r0, r1
+ lsl r0, r0, #0x2
+ add r1, r7, r0
+ ldr r0, [sp, #0xc]
+ cmp r1, r0
+ bge _0201A95C
+ ldr r0, [r2, r1]
+ b _0201A95E
+_0201A95C:
+ ldr r0, [sp, #0x4]
+_0201A95E:
+ add r4, r4, #0x1
+ str r0, [r2, r5]
+ add r3, r3, #0x1
+ add r5, r5, #0x4
+ cmp r4, #0x8
+ blt _0201A93A
+ ldr r0, [sp, #0xc]
+ add r7, #0x20
+ cmp r7, r0
+ blt _0201A934
+ add sp, #0x10
+ pop {r3-r7, pc}
+_0201A976:
+ add r0, r1, #0x0
+ sub r0, r0, #0x4
+ add r2, r2, r0
+ add r0, r1, #0x0
+ mov r7, #0x0
+ cmp r0, #0x0
+ ble _0201A9CE
+ mov r0, #0x7
+ mov r12, r0
+_0201A988:
+ ldr r4, [sp, #0x0]
+ mov r5, #0x0
+ add r3, r7, #0x0
+_0201A98E:
+ mov r0, #0x7
+ add r6, r4, #0x0
+ and r6, r0
+ add r1, r4, #0x0
+ mov r0, r12
+ bic r1, r0
+ ldr r0, [sp, #0x8]
+ mul r1, r0
+ add r0, r6, #0x0
+ orr r0, r1
+ lsl r0, r0, #0x2
+ add r1, r7, r0
+ ldr r0, [sp, #0xc]
+ cmp r1, r0
+ bge _0201A9B6
+ sub r0, r2, r1
+ ldr r1, [r0, #0x0]
+ sub r0, r2, r3
+ str r1, [r0, #0x0]
+ b _0201A9BC
+_0201A9B6:
+ ldr r0, [sp, #0x4]
+ sub r1, r2, r3
+ str r0, [r1, #0x0]
+_0201A9BC:
+ add r5, r5, #0x1
+ add r4, r4, #0x1
+ add r3, r3, #0x4
+ cmp r5, #0x8
+ blt _0201A98E
+ ldr r0, [sp, #0xc]
+ add r7, #0x20
+ cmp r7, r0
+ blt _0201A988
+_0201A9CE:
+ add sp, #0x10
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201A9D4
+FUN_0201A9D4: ; 0x0201A9D4
+ push {r3-r7, lr}
+ sub sp, #0x20
+ add r6, r3, #0x0
+ add r4, r0, #0x0
+ str r2, [sp, #0x0]
+ lsl r2, r6, #0x18
+ lsl r0, r6, #0x10
+ orr r0, r2
+ ldrb r2, [r4, #0x7]
+ ldr r3, [r4, #0xc]
+ lsl r5, r6, #0x8
+ orr r0, r5
+ ldrb r4, [r4, #0x8]
+ str r2, [sp, #0x10]
+ orr r0, r6
+ mul r2, r4
+ lsl r2, r2, #0x6
+ str r2, [sp, #0x1c]
+ cmp r1, #0x3
+ bls _0201A9FE
+ b _0201AB04
+_0201A9FE:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0201AA0A: ; jump table (using 16-bit offset)
+ .short _0201AA12 - _0201AA0A - 2; case 0
+ .short _0201AA80 - _0201AA0A - 2; case 1
+ .short _0201AB04 - _0201AA0A - 2; case 2
+ .short _0201AB04 - _0201AA0A - 2; case 3
+_0201AA12:
+ mov r1, #0x0
+ str r1, [sp, #0xc]
+ add r1, r2, #0x0
+ cmp r1, #0x0
+ ble _0201AB04
+ add r1, r1, #0x4
+ str r1, [sp, #0x14]
+ mov r1, #0x7
+ mov lr, r1
+_0201AA24:
+ ldr r4, [sp, #0x0]
+ ldr r5, [sp, #0xc]
+ mov r7, #0x0
+_0201AA2A:
+ mov r1, #0x7
+ add r6, r4, #0x0
+ and r6, r1
+ add r2, r4, #0x0
+ mov r1, lr
+ bic r2, r1
+ ldr r1, [sp, #0x10]
+ mul r2, r1
+ add r1, r6, #0x0
+ orr r1, r2
+ lsl r2, r1, #0x3
+ ldr r1, [sp, #0xc]
+ add r1, r1, r2
+ ldr r2, [sp, #0x1c]
+ cmp r1, r2
+ bge _0201AA50
+ ldr r2, [r3, r1]
+ str r2, [r3, r5]
+ b _0201AA52
+_0201AA50:
+ str r0, [r3, r5]
+_0201AA52:
+ add r2, r1, #0x4
+ ldr r1, [sp, #0x14]
+ cmp r2, r1
+ bge _0201AA62
+ ldr r2, [r3, r2]
+ add r1, r5, #0x4
+ str r2, [r3, r1]
+ b _0201AA66
+_0201AA62:
+ add r1, r5, #0x4
+ str r0, [r3, r1]
+_0201AA66:
+ add r7, r7, #0x1
+ add r4, r4, #0x1
+ add r5, #0x8
+ cmp r7, #0x8
+ blt _0201AA2A
+ ldr r2, [sp, #0xc]
+ ldr r1, [sp, #0x1c]
+ add r2, #0x40
+ str r2, [sp, #0xc]
+ cmp r2, r1
+ blt _0201AA24
+ add sp, #0x20
+ pop {r3-r7, pc}
+_0201AA80:
+ add r1, r2, #0x0
+ sub r1, #0x8
+ add r3, r3, r1
+ mov r1, #0x0
+ str r1, [sp, #0x8]
+ add r1, r2, #0x0
+ cmp r1, #0x0
+ ble _0201AB04
+_0201AA90:
+ mov r1, #0x0
+ str r1, [sp, #0x4]
+ ldr r1, [sp, #0x1c]
+ ldr r5, [sp, #0x0]
+ sub r1, r1, #0x4
+ str r1, [sp, #0x18]
+ mov r1, #0x7
+ ldr r4, [sp, #0x8]
+ mov r12, r1
+_0201AAA2:
+ mov r1, #0x7
+ add r6, r5, #0x0
+ and r6, r1
+ add r2, r5, #0x0
+ mov r1, r12
+ bic r2, r1
+ ldr r1, [sp, #0x10]
+ mul r2, r1
+ add r1, r6, #0x0
+ orr r1, r2
+ lsl r2, r1, #0x3
+ ldr r1, [sp, #0x8]
+ add r6, r1, r2
+ ldr r1, [sp, #0x1c]
+ cmp r6, r1
+ bge _0201AACC
+ sub r1, r3, r6
+ ldr r2, [r1, #0x0]
+ sub r1, r3, r4
+ str r2, [r1, #0x0]
+ b _0201AAD0
+_0201AACC:
+ sub r1, r3, r4
+ str r0, [r1, #0x0]
+_0201AAD0:
+ ldr r1, [sp, #0x18]
+ sub r2, r6, #0x4
+ cmp r2, r1
+ bge _0201AAE4
+ sub r1, r3, r2
+ sub r2, r4, #0x4
+ ldr r1, [r1, #0x0]
+ sub r2, r3, r2
+ str r1, [r2, #0x0]
+ b _0201AAEA
+_0201AAE4:
+ sub r1, r4, #0x4
+ sub r1, r3, r1
+ str r0, [r1, #0x0]
+_0201AAEA:
+ ldr r1, [sp, #0x4]
+ add r5, r5, #0x1
+ add r1, r1, #0x1
+ add r4, #0x8
+ str r1, [sp, #0x4]
+ cmp r1, #0x8
+ blt _0201AAA2
+ ldr r2, [sp, #0x8]
+ ldr r1, [sp, #0x1c]
+ add r2, #0x40
+ str r2, [sp, #0x8]
+ cmp r2, r1
+ blt _0201AA90
+_0201AB04:
+ add sp, #0x20
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0201AB08
+FUN_0201AB08: ; 0x0201AB08
+ ldrb r0, [r0, #0x4]
+ bx lr
+
+ thumb_func_start FUN_0201AB0C
+FUN_0201AB0C: ; 0x0201AB0C
+ ldrb r0, [r0, #0x7]
+ bx lr
+
+ thumb_func_start FUN_0201AB10
+FUN_0201AB10: ; 0x0201AB10
+ ldrb r0, [r0, #0x8]
+ bx lr
+
+ thumb_func_start FUN_0201AB14
+FUN_0201AB14: ; 0x0201AB14
+ ldrb r0, [r0, #0x5]
+ bx lr
+
+ thumb_func_start FUN_0201AB18
+FUN_0201AB18: ; 0x0201AB18
+ ldrb r0, [r0, #0x6]
+ bx lr
+
+ thumb_func_start FUN_0201AB1C
+FUN_0201AB1C: ; 0x0201AB1C
+ strb r1, [r0, #0x5]
+ bx lr
+
+ thumb_func_start FUN_0201AB20
+FUN_0201AB20: ; 0x0201AB20
+ strb r1, [r0, #0x6]
+ bx lr
+
+ thumb_func_start FUN_0201AB24
+FUN_0201AB24: ; 0x0201AB24
+ strb r1, [r0, #0x9]
+ bx lr
+
+ thumb_func_start FUN_0201AB28
+FUN_0201AB28: ; 0x0201AB28
+ push {r3-r4, lr}
+ sub sp, #0x4
+ add r4, r0, #0x0
+ add r0, r1, #0x0
+ add r1, r2, #0x0
+ bl FUN_020161A4
+ add r1, sp, #0x0
+ str r0, [r4, #0x0]
+ blx FUN_020B0030
+ ldr r0, [sp, #0x0]
+ add sp, #0x4
+ pop {r3-r4, pc}
+
+ thumb_func_start FUN_0201AB44
+FUN_0201AB44: ; 0x0201AB44
+ push {r3-r4, lr}
+ sub sp, #0x4
+ add r4, r0, #0x0
+ add r0, r1, #0x0
+ add r1, r2, #0x0
+ bl FUN_020161A4
+ add r1, sp, #0x0
+ str r0, [r4, #0x0]
+ blx FUN_020B0138
+ ldr r0, [sp, #0x0]
+ add sp, #0x4
+ pop {r3-r4, pc}
+
+ thumb_func_start FUN_0201AB60
+FUN_0201AB60: ; 0x0201AB60
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_0201AC78
+ add r0, r4, #0x0
+ bl FUN_0201AB78
+ mov r0, #0x0
+ strh r0, [r4, #0x4]
+ strh r0, [r4, #0x6]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201AB78
+FUN_0201AB78: ; 0x0201AB78
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldrh r1, [r4, #0x6]
+ mov r0, #0x1
+ tst r0, r1
+ beq _0201AB92
+ ldr r2, [r4, #0x10]
+ ldr r1, [r4, #0x8]
+ ldr r3, [r4, #0xc]
+ mov r0, #0x0
+ lsl r2, r2, #0x1
+ bl FUN_02017D68
+_0201AB92:
+ ldrh r1, [r4, #0x6]
+ mov r0, #0x2
+ tst r0, r1
+ beq _0201ABA8
+ ldr r2, [r4, #0x3c]
+ ldr r1, [r4, #0x34]
+ ldr r3, [r4, #0x38]
+ mov r0, #0x1
+ lsl r2, r2, #0x1
+ bl FUN_02017D68
+_0201ABA8:
+ ldrh r1, [r4, #0x6]
+ mov r0, #0x4
+ tst r0, r1
+ beq _0201ABBE
+ ldr r2, [r4, #0x68]
+ ldr r1, [r4, #0x60]
+ ldr r3, [r4, #0x64]
+ mov r0, #0x2
+ lsl r2, r2, #0x1
+ bl FUN_02017D68
+_0201ABBE:
+ ldrh r1, [r4, #0x6]
+ mov r0, #0x8
+ tst r0, r1
+ beq _0201ABE0
+ add r2, r4, #0x0
+ add r1, r4, #0x0
+ add r2, #0x94
+ add r3, r4, #0x0
+ add r1, #0x8c
+ ldr r2, [r2, #0x0]
+ add r3, #0x90
+ ldr r1, [r1, #0x0]
+ ldr r3, [r3, #0x0]
+ mov r0, #0x3
+ lsl r2, r2, #0x1
+ bl FUN_02017D68
+_0201ABE0:
+ ldrh r1, [r4, #0x6]
+ mov r0, #0x10
+ tst r0, r1
+ beq _0201AC02
+ add r2, r4, #0x0
+ add r1, r4, #0x0
+ add r2, #0xc0
+ add r3, r4, #0x0
+ add r1, #0xb8
+ ldr r2, [r2, #0x0]
+ add r3, #0xbc
+ ldr r1, [r1, #0x0]
+ ldr r3, [r3, #0x0]
+ mov r0, #0x4
+ lsl r2, r2, #0x1
+ bl FUN_02017D68
+_0201AC02:
+ ldrh r1, [r4, #0x6]
+ mov r0, #0x20
+ tst r0, r1
+ beq _0201AC24
+ add r2, r4, #0x0
+ add r1, r4, #0x0
+ add r2, #0xec
+ add r3, r4, #0x0
+ add r1, #0xe4
+ ldr r2, [r2, #0x0]
+ add r3, #0xe8
+ ldr r1, [r1, #0x0]
+ ldr r3, [r3, #0x0]
+ mov r0, #0x5
+ lsl r2, r2, #0x1
+ bl FUN_02017D68
+_0201AC24:
+ ldrh r0, [r4, #0x6]
+ mov r3, #0x40
+ tst r0, r3
+ beq _0201AC44
+ add r2, r3, #0x0
+ add r1, r3, #0x0
+ add r2, #0xd8
+ add r1, #0xd0
+ ldr r2, [r4, r2]
+ add r3, #0xd4
+ ldr r1, [r4, r1]
+ ldr r3, [r4, r3]
+ mov r0, #0x6
+ lsl r2, r2, #0x1
+ bl FUN_02017D68
+_0201AC44:
+ ldrh r0, [r4, #0x6]
+ mov r3, #0x80
+ tst r0, r3
+ beq _0201AC64
+ add r2, r3, #0x0
+ add r1, r3, #0x0
+ add r2, #0xc4
+ add r1, #0xbc
+ ldr r2, [r4, r2]
+ add r3, #0xc0
+ ldr r1, [r4, r1]
+ ldr r3, [r4, r3]
+ mov r0, #0x7
+ lsl r2, r2, #0x1
+ bl FUN_02017D68
+_0201AC64:
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201AC68
+FUN_0201AC68: ; 0x0201AC68
+ ldrh r3, [r0, #0x6]
+ mov r2, #0x1
+ lsl r2, r1
+ add r1, r3, #0x0
+ orr r1, r2
+ strh r1, [r0, #0x6]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0201AC78
+FUN_0201AC78: ; 0x0201AC78
+ push {r4, lr}
+ sub sp, #0x48
+ add r4, r0, #0x0
+ ldrh r1, [r4, #0x4]
+ mov r0, #0x1
+ tst r0, r1
+ beq _0201AC9E
+ ldr r1, [r4, #0x14]
+ ldr r0, _0201AEB0 ; =0x000001FF
+ add r2, r1, #0x0
+ ldr r1, [r4, #0x18]
+ and r2, r0
+ lsl r1, r1, #0x10
+ lsl r0, r0, #0x10
+ and r0, r1
+ add r1, r2, #0x0
+ orr r1, r0
+ ldr r0, _0201AEB4 ; =0x04000010
+ str r1, [r0, #0x0]
+_0201AC9E:
+ ldrh r1, [r4, #0x4]
+ mov r0, #0x2
+ tst r0, r1
+ beq _0201ACBE
+ ldr r1, [r4, #0x40]
+ ldr r0, _0201AEB0 ; =0x000001FF
+ add r2, r1, #0x0
+ ldr r1, [r4, #0x44]
+ and r2, r0
+ lsl r1, r1, #0x10
+ lsl r0, r0, #0x10
+ and r0, r1
+ add r1, r2, #0x0
+ orr r1, r0
+ ldr r0, _0201AEB8 ; =0x04000014
+ str r1, [r0, #0x0]
+_0201ACBE:
+ ldrh r1, [r4, #0x4]
+ mov r0, #0x4
+ tst r0, r1
+ beq _0201AD1E
+ add r0, r4, #0x0
+ add r0, #0x74
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _0201ACEA
+ ldr r1, [r4, #0x6c]
+ ldr r0, _0201AEB0 ; =0x000001FF
+ add r2, r1, #0x0
+ ldr r1, [r4, #0x70]
+ and r2, r0
+ lsl r1, r1, #0x10
+ lsl r0, r0, #0x10
+ and r0, r1
+ add r1, r2, #0x0
+ orr r1, r0
+ ldr r0, _0201AEBC ; =0x04000018
+ str r1, [r0, #0x0]
+ b _0201AD1E
+_0201ACEA:
+ mov r0, #0x2
+ str r0, [sp, #0x0]
+ add r1, r4, #0x0
+ add r1, #0x78
+ add r3, r4, #0x0
+ add r3, #0x80
+ ldrh r1, [r1, #0x0]
+ ldr r2, [r4, #0x7c]
+ ldr r3, [r3, #0x0]
+ add r0, sp, #0x38
+ bl FUN_0201BB74
+ ldr r0, [r4, #0x6c]
+ add r2, r4, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x70]
+ add r3, r4, #0x0
+ str r0, [sp, #0x4]
+ add r2, #0x84
+ add r3, #0x88
+ ldr r0, _0201AEC0 ; =0x04000020
+ ldr r2, [r2, #0x0]
+ ldr r3, [r3, #0x0]
+ add r1, sp, #0x38
+ blx FUN_020C74F8
+_0201AD1E:
+ ldrh r1, [r4, #0x4]
+ mov r0, #0x8
+ tst r0, r1
+ beq _0201AD8E
+ add r0, r4, #0x0
+ add r0, #0xa0
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _0201AD4E
+ add r0, r4, #0x0
+ add r2, r4, #0x0
+ add r0, #0x98
+ add r2, #0x9c
+ ldr r2, [r2, #0x0]
+ ldr r0, [r0, #0x0]
+ ldr r1, _0201AEB0 ; =0x000001FF
+ lsl r2, r2, #0x10
+ and r0, r1
+ lsl r1, r1, #0x10
+ and r1, r2
+ orr r1, r0
+ ldr r0, _0201AEC4 ; =0x0400001C
+ str r1, [r0, #0x0]
+ b _0201AD8E
+_0201AD4E:
+ mov r0, #0x2
+ add r1, r4, #0x0
+ str r0, [sp, #0x0]
+ add r1, #0xa4
+ add r2, r4, #0x0
+ add r3, r4, #0x0
+ add r2, #0xa8
+ add r3, #0xac
+ ldrh r1, [r1, #0x0]
+ ldr r2, [r2, #0x0]
+ ldr r3, [r3, #0x0]
+ add r0, sp, #0x28
+ bl FUN_0201BB74
+ add r0, r4, #0x0
+ add r0, #0x98
+ ldr r0, [r0, #0x0]
+ add r2, r4, #0x0
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x9c
+ ldr r0, [r0, #0x0]
+ add r3, r4, #0x0
+ str r0, [sp, #0x4]
+ add r2, #0xb0
+ add r3, #0xb4
+ ldr r0, _0201AEC8 ; =0x04000030
+ ldr r2, [r2, #0x0]
+ ldr r3, [r3, #0x0]
+ add r1, sp, #0x28
+ blx FUN_020C74F8
+_0201AD8E:
+ ldrh r1, [r4, #0x4]
+ mov r0, #0x10
+ tst r0, r1
+ beq _0201ADB2
+ add r0, r4, #0x0
+ add r2, r4, #0x0
+ add r0, #0xc4
+ add r2, #0xc8
+ ldr r2, [r2, #0x0]
+ ldr r0, [r0, #0x0]
+ ldr r1, _0201AEB0 ; =0x000001FF
+ lsl r2, r2, #0x10
+ and r0, r1
+ lsl r1, r1, #0x10
+ and r1, r2
+ orr r1, r0
+ ldr r0, _0201AECC ; =0x04001010
+ str r1, [r0, #0x0]
+_0201ADB2:
+ ldrh r1, [r4, #0x4]
+ mov r0, #0x20
+ tst r0, r1
+ beq _0201ADD6
+ add r0, r4, #0x0
+ add r2, r4, #0x0
+ add r0, #0xf0
+ add r2, #0xf4
+ ldr r2, [r2, #0x0]
+ ldr r0, [r0, #0x0]
+ ldr r1, _0201AEB0 ; =0x000001FF
+ lsl r2, r2, #0x10
+ and r0, r1
+ lsl r1, r1, #0x10
+ and r1, r2
+ orr r1, r0
+ ldr r0, _0201AED0 ; =0x04001014
+ str r1, [r0, #0x0]
+_0201ADD6:
+ ldrh r0, [r4, #0x4]
+ mov r3, #0x40
+ tst r0, r3
+ beq _0201AE3E
+ add r0, r3, #0x0
+ add r0, #0xe4
+ ldrb r0, [r4, r0]
+ cmp r0, #0x0
+ bne _0201AE04
+ ldr r1, _0201AEB0 ; =0x000001FF
+ add r3, #0xdc
+ add r2, r1, #0x0
+ sub r2, #0xdf
+ ldr r0, [r4, r3]
+ ldr r2, [r4, r2]
+ and r0, r1
+ lsl r2, r2, #0x10
+ lsl r1, r1, #0x10
+ and r1, r2
+ orr r1, r0
+ ldr r0, _0201AED4 ; =0x04001018
+ str r1, [r0, #0x0]
+ b _0201AE3E
+_0201AE04:
+ mov r0, #0x2
+ add r1, r3, #0x0
+ add r2, r3, #0x0
+ str r0, [sp, #0x0]
+ add r1, #0xe8
+ add r2, #0xec
+ add r3, #0xf0
+ ldrh r1, [r4, r1]
+ ldr r2, [r4, r2]
+ ldr r3, [r4, r3]
+ add r0, sp, #0x18
+ bl FUN_0201BB74
+ mov r3, #0x47
+ lsl r3, r3, #0x2
+ ldr r0, [r4, r3]
+ add r2, r3, #0x0
+ str r0, [sp, #0x0]
+ add r0, r3, #0x4
+ ldr r0, [r4, r0]
+ add r2, #0x18
+ str r0, [sp, #0x4]
+ add r3, #0x1c
+ ldr r0, _0201AED8 ; =0x04001020
+ ldr r2, [r4, r2]
+ ldr r3, [r4, r3]
+ add r1, sp, #0x18
+ blx FUN_020C74F8
+_0201AE3E:
+ ldrh r0, [r4, #0x4]
+ mov r3, #0x80
+ tst r0, r3
+ beq _0201AEAC
+ add r0, r3, #0x0
+ add r0, #0xd0
+ ldrb r0, [r4, r0]
+ cmp r0, #0x0
+ bne _0201AE72
+ add r3, #0xc8
+ ldr r1, [r4, r3]
+ ldr r0, _0201AEB0 ; =0x000001FF
+ add r2, r1, #0x0
+ add r1, r0, #0x0
+ sub r1, #0xb3
+ ldr r1, [r4, r1]
+ and r2, r0
+ lsl r1, r1, #0x10
+ lsl r0, r0, #0x10
+ and r0, r1
+ add r1, r2, #0x0
+ orr r1, r0
+ ldr r0, _0201AEDC ; =0x0400101C
+ add sp, #0x48
+ str r1, [r0, #0x0]
+ pop {r4, pc}
+_0201AE72:
+ mov r0, #0x2
+ add r1, r3, #0x0
+ add r2, r3, #0x0
+ str r0, [sp, #0x0]
+ add r1, #0xd4
+ add r2, #0xd8
+ add r3, #0xdc
+ ldrh r1, [r4, r1]
+ ldr r2, [r4, r2]
+ ldr r3, [r4, r3]
+ add r0, sp, #0x8
+ bl FUN_0201BB74
+ mov r3, #0x52
+ lsl r3, r3, #0x2
+ ldr r0, [r4, r3]
+ add r2, r3, #0x0
+ str r0, [sp, #0x0]
+ add r0, r3, #0x4
+ ldr r0, [r4, r0]
+ add r2, #0x18
+ str r0, [sp, #0x4]
+ add r3, #0x1c
+ ldr r0, _0201AEE0 ; =0x04001030
+ ldr r2, [r4, r2]
+ ldr r3, [r4, r3]
+ add r1, sp, #0x8
+ blx FUN_020C74F8
+_0201AEAC:
+ add sp, #0x48
+ pop {r4, pc}
+ .balign 4
+_0201AEB0: .word 0x000001FF
+_0201AEB4: .word 0x04000010
+_0201AEB8: .word 0x04000014
+_0201AEBC: .word 0x04000018
+_0201AEC0: .word 0x04000020
+_0201AEC4: .word 0x0400001C
+_0201AEC8: .word 0x04000030
+_0201AECC: .word 0x04001010
+_0201AED0: .word 0x04001014
+_0201AED4: .word 0x04001018
+_0201AED8: .word 0x04001020
+_0201AEDC: .word 0x0400101C
+_0201AEE0: .word 0x04001030
+
+ thumb_func_start FUN_0201AEE4
+FUN_0201AEE4: ; 0x0201AEE4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r1, r5, #0x0
+ mov r0, #0x2c
+ add r1, #0x8
+ mul r0, r4
+ add r0, r1, r0
+ add r1, r2, #0x0
+ add r2, r3, #0x0
+ bl FUN_02017B8C
+ mov r0, #0x1
+ ldrh r1, [r5, #0x4]
+ lsl r0, r4
+ orr r0, r1
+ strh r0, [r5, #0x4]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0201AF08
+FUN_0201AF08: ; 0x0201AF08
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r1, r5, #0x0
+ mov r0, #0x2c
+ add r1, #0x8
+ mul r0, r4
+ add r0, r1, r0
+ add r1, r2, #0x0
+ add r2, r3, #0x0
+ bl FUN_0201AF2C
+ mov r0, #0x1
+ ldrh r1, [r5, #0x4]
+ lsl r0, r4
+ orr r0, r1
+ strh r0, [r5, #0x4]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0201AF2C
+FUN_0201AF2C: ; 0x0201AF2C
+ cmp r1, #0x0
+ beq _0201AF3A
+ cmp r1, #0x1
+ beq _0201AF3E
+ cmp r1, #0x2
+ beq _0201AF46
+ bx lr
+_0201AF3A:
+ strh r2, [r0, #0x18]
+ bx lr
+_0201AF3E:
+ ldrh r1, [r0, #0x18]
+ add r1, r1, r2
+ strh r1, [r0, #0x18]
+ bx lr
+_0201AF46:
+ ldrh r1, [r0, #0x18]
+ sub r1, r1, r2
+ strh r1, [r0, #0x18]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0201AF50
+FUN_0201AF50: ; 0x0201AF50
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r1, r5, #0x0
+ mov r0, #0x2c
+ add r1, #0x8
+ mul r0, r4
+ add r0, r1, r0
+ add r1, r2, #0x0
+ add r2, r3, #0x0
+ bl FUN_0201AF74
+ mov r0, #0x1
+ ldrh r1, [r5, #0x4]
+ lsl r0, r4
+ orr r0, r1
+ strh r0, [r5, #0x4]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0201AF74
+FUN_0201AF74: ; 0x0201AF74
+ sub r1, #0x9
+ cmp r1, #0x5
+ bhi _0201AFB8
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0201AF86: ; jump table (using 16-bit offset)
+ .short _0201AF92 - _0201AF86 - 2; case 0
+ .short _0201AF96 - _0201AF86 - 2; case 1
+ .short _0201AF9E - _0201AF86 - 2; case 2
+ .short _0201AFA6 - _0201AF86 - 2; case 3
+ .short _0201AFAA - _0201AF86 - 2; case 4
+ .short _0201AFB2 - _0201AF86 - 2; case 5
+_0201AF92:
+ str r2, [r0, #0x24]
+ bx lr
+_0201AF96:
+ ldr r1, [r0, #0x24]
+ add r1, r1, r2
+ str r1, [r0, #0x24]
+ bx lr
+_0201AF9E:
+ ldr r1, [r0, #0x24]
+ sub r1, r1, r2
+ str r1, [r0, #0x24]
+ bx lr
+_0201AFA6:
+ str r2, [r0, #0x28]
+ bx lr
+_0201AFAA:
+ ldr r1, [r0, #0x28]
+ add r1, r1, r2
+ str r1, [r0, #0x28]
+ bx lr
+_0201AFB2:
+ ldr r1, [r0, #0x28]
+ sub r1, r1, r2
+ str r1, [r0, #0x28]
+_0201AFB8:
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0201AFBC
+FUN_0201AFBC: ; 0x0201AFBC
+ push {r4-r7, lr}
+ sub sp, #0x1c
+ str r1, [sp, #0x0]
+ add r7, r0, #0x0
+ str r2, [sp, #0x4]
+ ldr r0, [sp, #0x30]
+ str r3, [sp, #0x8]
+ str r0, [sp, #0x30]
+ ldr r0, [sp, #0x0]
+ add r4, r7, #0x0
+ mov r1, #0x2c
+ add r5, r0, #0x0
+ mul r5, r1
+ add r4, #0x8
+ ldr r0, [r4, r5]
+ cmp r0, #0x0
+ bne _0201AFE4
+ add sp, #0x1c
+ mov r0, #0x0
+ pop {r4-r7, pc}
+_0201AFE4:
+ ldr r0, [sp, #0x4]
+ ldr r1, [sp, #0x8]
+ add r2, r7, r5
+ lsl r0, r0, #0x15
+ lsl r1, r1, #0x15
+ ldrb r2, [r2, #0x1d]
+ lsr r0, r0, #0x18
+ lsr r1, r1, #0x18
+ bl FUN_02017FFC
+ add r6, r0, #0x0
+ ldr r0, [sp, #0x0]
+ bl FUN_020187B0
+ str r0, [sp, #0x18]
+ ldr r1, [sp, #0x4]
+ mov r0, #0x7
+ and r1, r0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ str r1, [sp, #0x14]
+ ldr r1, [sp, #0x8]
+ and r0, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ add r1, r7, r5
+ str r0, [sp, #0x10]
+ ldrb r0, [r1, #0x1e]
+ cmp r0, #0x0
+ bne _0201B096
+ ldr r0, [r4, r5]
+ mov r1, #0x40
+ str r0, [sp, #0xc]
+ ldr r0, [r7, #0x0]
+ bl FUN_020169D8
+ add r4, r0, #0x0
+ lsl r0, r6, #0x1
+ ldr r1, [sp, #0xc]
+ mov r12, r0
+ ldrh r0, [r1, r0]
+ mov r3, #0x0
+ mov r6, #0xf
+ lsl r0, r0, #0x16
+ lsr r1, r0, #0x11
+ ldr r0, [sp, #0x18]
+ add r2, r0, r1
+_0201B042:
+ ldrb r5, [r2, r3]
+ lsl r0, r3, #0x1
+ add r1, r4, r0
+ and r5, r6
+ strb r5, [r4, r0]
+ ldrb r0, [r2, r3]
+ asr r0, r0, #0x4
+ strb r0, [r1, #0x1]
+ add r0, r3, #0x1
+ lsl r0, r0, #0x18
+ lsr r3, r0, #0x18
+ cmp r3, #0x20
+ blo _0201B042
+ ldr r2, [sp, #0xc]
+ mov r1, r12
+ ldrh r1, [r2, r1]
+ add r0, r7, #0x0
+ asr r2, r1, #0xa
+ mov r1, #0x3
+ and r1, r2
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ add r2, r4, #0x0
+ bl FUN_0201B118
+ ldr r0, [sp, #0x10]
+ lsl r1, r0, #0x3
+ ldr r0, [sp, #0x14]
+ add r0, r0, r1
+ ldrb r5, [r4, r0]
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ ldr r0, [sp, #0x30]
+ ldrh r2, [r0, #0x0]
+ mov r0, #0x1
+ add r1, r0, #0x0
+ lsl r1, r5
+ tst r1, r2
+ beq _0201B10C
+ add sp, #0x1c
+ pop {r4-r7, pc}
+_0201B096:
+ ldrb r0, [r1, #0x1c]
+ cmp r0, #0x1
+ beq _0201B0E0
+ ldr r0, [r7, #0x0]
+ ldr r4, [r4, r5]
+ mov r1, #0x40
+ bl FUN_020169D8
+ lsl r6, r6, #0x1
+ ldrh r1, [r4, r6]
+ add r5, r0, #0x0
+ lsl r1, r1, #0x16
+ lsr r2, r1, #0x10
+ ldr r1, [sp, #0x18]
+ add r1, r1, r2
+ mov r2, #0x40
+ blx FUN_020DF438
+ ldrh r1, [r4, r6]
+ add r0, r7, #0x0
+ asr r2, r1, #0xa
+ mov r1, #0x3
+ and r1, r2
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ add r2, r5, #0x0
+ bl FUN_0201B118
+ ldr r0, [sp, #0x10]
+ lsl r1, r0, #0x3
+ ldr r0, [sp, #0x14]
+ add r0, r0, r1
+ ldrb r4, [r5, r0]
+ add r0, r5, #0x0
+ bl FUN_02016A18
+ b _0201B0F4
+_0201B0E0:
+ ldr r1, [r4, r5]
+ ldr r0, [sp, #0x10]
+ ldrb r1, [r1, r6]
+ lsl r0, r0, #0x3
+ lsl r2, r1, #0x6
+ ldr r1, [sp, #0x14]
+ add r1, r1, r2
+ add r1, r0, r1
+ ldr r0, [sp, #0x18]
+ ldrb r4, [r0, r1]
+_0201B0F4:
+ ldr r0, [sp, #0x30]
+ ldrh r2, [r0, #0x0]
+ lsl r0, r2, #0x18
+ lsr r1, r0, #0x18
+ ldr r0, _0201B114 ; =0x0000FFFF
+_0201B0FE:
+ cmp r2, r0
+ beq _0201B10C
+ cmp r4, r1
+ bne _0201B0FE
+ add sp, #0x1c
+ mov r0, #0x1
+ pop {r4-r7, pc}
+_0201B10C:
+ mov r0, #0x0
+ add sp, #0x1c
+ pop {r4-r7, pc}
+ nop
+_0201B114: .word 0x0000FFFF
+
+ thumb_func_start FUN_0201B118
+FUN_0201B118: ; 0x0201B118
+ push {r3-r7, lr}
+ str r1, [sp, #0x0]
+ ldr r1, [sp, #0x0]
+ add r7, r2, #0x0
+ cmp r1, #0x0
+ beq _0201B1A4
+ ldr r0, [r0, #0x0]
+ mov r1, #0x40
+ bl FUN_020169D8
+ add r4, r0, #0x0
+ ldr r0, [sp, #0x0]
+ mov r1, #0x1
+ tst r0, r1
+ beq _0201B166
+ mov r0, #0x0
+ mov r5, #0x7
+_0201B13A:
+ lsl r3, r0, #0x3
+ add r2, r7, r3
+ mov r1, #0x0
+ add r3, r4, r3
+_0201B142:
+ sub r6, r5, r1
+ ldrb r6, [r2, r6]
+ strb r6, [r3, r1]
+ add r1, r1, #0x1
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ cmp r1, #0x8
+ blo _0201B142
+ add r0, r0, #0x1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x8
+ blo _0201B13A
+ add r0, r7, #0x0
+ add r1, r4, #0x0
+ mov r2, #0x40
+ blx FUN_020DF438
+_0201B166:
+ ldr r0, [sp, #0x0]
+ mov r1, #0x2
+ tst r0, r1
+ beq _0201B19E
+ mov r5, #0x0
+ mov r6, #0x7
+_0201B172:
+ lsl r0, r5, #0x3
+ add r3, r4, r0
+ sub r0, r6, r5
+ lsl r0, r0, #0x3
+ add r2, r7, r0
+ mov r1, #0x8
+_0201B17E:
+ ldrb r0, [r2, #0x0]
+ add r2, r2, #0x1
+ strb r0, [r3, #0x0]
+ add r3, r3, #0x1
+ sub r1, r1, #0x1
+ bne _0201B17E
+ add r0, r5, #0x1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #0x8
+ blo _0201B172
+ add r0, r7, #0x0
+ add r1, r4, #0x0
+ mov r2, #0x40
+ blx FUN_020DF438
+_0201B19E:
+ add r0, r4, #0x0
+ bl FUN_02016A18
+_0201B1A4:
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201B1A8
+FUN_0201B1A8: ; 0x0201B1A8
+ push {r3-r5, lr}
+ add r5, r3, #0x0
+ add r4, r2, #0x0
+ bl FUN_020161A4
+ str r0, [r5, #0x0]
+ blx FUN_020BC0FC
+ cmp r0, #0x0
+ beq _0201B1D2
+ bl FUN_0201B254
+ cmp r0, #0x0
+ bne _0201B1D2
+ ldr r0, [r5, #0x0]
+ ldr r1, [r0, #0x8]
+ blx DC_FlushRange
+ ldr r0, [r5, #0x0]
+ blx FUN_020BB59C
+_0201B1D2:
+ ldr r0, [r5, #0x0]
+ blx FUN_020BC13C
+ ldrh r1, [r0, #0xe]
+ add r1, r0, r1
+ ldr r1, [r1, #0xc]
+ add r0, r0, r1
+ str r0, [r4, #0x0]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0201B1E4
+FUN_0201B1E4: ; 0x0201B1E4
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ blx FUN_020BC0FC
+ cmp r0, #0x0
+ beq _0201B20A
+ bl FUN_0201B254
+ cmp r0, #0x0
+ bne _0201B20A
+ ldr r0, [r5, #0x0]
+ ldr r1, [r0, #0x8]
+ blx DC_FlushRange
+ ldr r0, [r5, #0x0]
+ blx FUN_020BB59C
+_0201B20A:
+ ldr r0, [r5, #0x0]
+ blx FUN_020BC13C
+ ldrh r1, [r0, #0xe]
+ add r1, r0, r1
+ ldr r1, [r1, #0xc]
+ add r0, r0, r1
+ str r0, [r4, #0x0]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0201B21C
+FUN_0201B21C: ; 0x0201B21C
+ push {r3-r5, lr}
+ add r4, r3, #0x0
+ add r5, r2, #0x0
+ ldr r3, [sp, #0x10]
+ add r2, r4, #0x0
+ bl FUN_0201B1A8
+ ldr r1, [r4, #0x0]
+ add r0, r5, #0x0
+ blx FUN_020B80B4
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0201B234
+FUN_0201B234: ; 0x0201B234
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ add r1, r2, #0x0
+ bl FUN_0201B1E4
+ cmp r4, #0x0
+ bne _0201B24A
+ bl ErrorHandling
+_0201B24A:
+ ldr r1, [r4, #0x0]
+ add r0, r5, #0x0
+ blx FUN_020B80B4
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0201B254
+FUN_0201B254: ; 0x0201B254
+ ldrh r2, [r0, #0x10]
+ mov r1, #0x1
+ tst r2, r1
+ bne _0201B262
+ ldrh r0, [r0, #0x20]
+ tst r0, r1
+ beq _0201B266
+_0201B262:
+ mov r0, #0x1
+ bx lr
+_0201B266:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0201B26C
+FUN_0201B26C: ; 0x0201B26C
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, r1, #0x0
+ add r4, r2, #0x0
+ add r6, r3, #0x0
+ blx FUN_020B8474
+ ldr r1, _0201B2A0 ; =0x021CEDD4
+ add r0, r4, #0x0
+ blx MI_Copy36B
+ ldr r1, _0201B2A4 ; =0x021CED98
+ mov r0, #0xa4
+ ldr r2, [r1, #0x7c]
+ bic r2, r0
+ add r0, r6, #0x0
+ str r2, [r1, #0x7c]
+ blx FUN_020B844C
+ blx FUN_020B849C
+ add r0, r5, #0x0
+ blx FUN_020BAC98
+ pop {r4-r6, pc}
+ nop
+_0201B2A0: .word 0x021CEDD4
+_0201B2A4: .word 0x021CED98
+
+ thumb_func_start FUN_0201B2A8
+FUN_0201B2A8: ; 0x0201B2A8
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, r1, #0x0
+ add r4, r2, #0x0
+ add r6, r3, #0x0
+ blx FUN_020B8474
+ ldr r1, _0201B2E4 ; =0x021CEDD4
+ add r0, r4, #0x0
+ blx MI_Copy36B
+ ldr r1, _0201B2E8 ; =0x021CED98
+ mov r0, #0xa4
+ ldr r2, [r1, #0x7c]
+ bic r2, r0
+ str r2, [r1, #0x7c]
+ add r0, r6, #0x0
+ blx FUN_020B844C
+ blx FUN_020B849C
+ mov r1, #0x0
+ ldr r0, [r5, #0x4]
+ add r2, r1, #0x0
+ mov r3, #0x1
+ blx FUN_020BAFB8
+ blx FUN_020BB394
+ pop {r4-r6, pc}
+ .balign 4
+_0201B2E4: .word 0x021CEDD4
+_0201B2E8: .word 0x021CED98
+
+ thumb_func_start FUN_0201B2EC
+FUN_0201B2EC: ; 0x0201B2EC
+ push {r3, lr}
+ sub sp, #0x8
+ mov r1, #0x4
+ str r1, [sp, #0x0]
+ ldr r1, _0201B30C ; =FUN_0201B314
+ mov r2, #0x2
+ str r1, [sp, #0x4]
+ mov r1, #0x0
+ add r3, r1, #0x0
+ bl FUN_02022318
+ ldr r1, _0201B310 ; =0x021C4D44
+ str r0, [r1, #0x0]
+ add sp, #0x8
+ pop {r3, pc}
+ nop
+_0201B30C: .word FUN_0201B314
+_0201B310: .word 0x021C4D44
+
+ thumb_func_start FUN_0201B314
+FUN_0201B314: ; 0x0201B314
+ push {r3, lr}
+ mov r0, #0x1
+ add r1, r0, #0x0
+ bl FUN_0201E6E4
+ ldr r0, _0201B380 ; =0x04000008
+ mov r1, #0x3
+ ldrh r2, [r0, #0x0]
+ bic r2, r1
+ mov r1, #0x1
+ orr r1, r2
+ strh r1, [r0, #0x0]
+ add r0, #0x58
+ ldrh r2, [r0, #0x0]
+ ldr r1, _0201B384 ; =0xFFFFCFFD
+ and r2, r1
+ strh r2, [r0, #0x0]
+ add r2, r1, #0x2
+ ldrh r3, [r0, #0x0]
+ add r1, r1, #0x2
+ and r3, r2
+ mov r2, #0x10
+ orr r2, r3
+ strh r2, [r0, #0x0]
+ ldrh r3, [r0, #0x0]
+ ldr r2, _0201B388 ; =0x0000CFFB
+ and r3, r2
+ strh r3, [r0, #0x0]
+ ldrh r3, [r0, #0x0]
+ sub r2, #0x1c
+ and r3, r1
+ mov r1, #0x8
+ orr r1, r3
+ strh r1, [r0, #0x0]
+ ldrh r1, [r0, #0x0]
+ and r1, r2
+ strh r1, [r0, #0x0]
+ mov r0, #0x0
+ add r1, r0, #0x0
+ add r2, r0, #0x0
+ add r3, r0, #0x0
+ blx FUN_020C7C28
+ mov r0, #0x0
+ ldr r2, _0201B38C ; =0x00007FFF
+ add r1, r0, #0x0
+ mov r3, #0x3f
+ str r0, [sp, #0x0]
+ blx FUN_020C7B3C
+ ldr r1, _0201B390 ; =0xBFFF0000
+ ldr r0, _0201B394 ; =0x04000580
+ str r1, [r0, #0x0]
+ pop {r3, pc}
+ .balign 4
+_0201B380: .word 0x04000008
+_0201B384: .word 0xFFFFCFFD
+_0201B388: .word 0x0000CFFB
+_0201B38C: .word 0x00007FFF
+_0201B390: .word 0xBFFF0000
+_0201B394: .word 0x04000580
+
+ thumb_func_start FUN_0201B398
+FUN_0201B398: ; 0x0201B398
+ ldr r0, _0201B3A0 ; =0x021C4D44
+ ldr r3, _0201B3A4 ; =FUN_020223BC
+ ldr r0, [r0, #0x0]
+ bx r3
+ .balign 4
+_0201B3A0: .word 0x021C4D44
+_0201B3A4: .word FUN_020223BC
+
+ thumb_func_start FUN_0201B3A8
+FUN_0201B3A8: ; 0x0201B3A8
+ push {r4, lr}
+ add r4, r1, #0x0
+ blx FUN_020BC13C
+ cmp r4, #0x0
+ beq _0201B3BE
+ add r1, r4, #0x0
+ blx FUN_020B7790
+ mov r0, #0x1
+ pop {r4, pc}
+_0201B3BE:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201B3C4
+FUN_0201B3C4: ; 0x0201B3C4
+ push {r3-r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ bne _0201B3D2
+ add sp, #0x10
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0201B3D2:
+ mov r1, #0x0
+ str r1, [r5, #0x8]
+ mov r1, #0x1
+ str r1, [sp, #0x8]
+ str r1, [sp, #0x4]
+ str r1, [sp, #0x0]
+ cmp r5, #0x0
+ beq _0201B4D0
+ blx FUN_020B7E1C
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ blx FUN_020B7E10
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ blx FUN_020B7CE4
+ str r0, [sp, #0xc]
+ cmp r6, #0x0
+ beq _0201B412
+ ldr r3, _0201B4D8 ; =0x021064B8
+ mov r1, #0x0
+ ldr r3, [r3, #0x0]
+ add r0, r6, #0x0
+ add r2, r1, #0x0
+ blx r3
+ add r7, r0, #0x0
+ bne _0201B414
+ mov r0, #0x0
+ str r0, [sp, #0x8]
+ b _0201B414
+_0201B412:
+ mov r7, #0x0
+_0201B414:
+ cmp r4, #0x0
+ beq _0201B42E
+ ldr r3, _0201B4D8 ; =0x021064B8
+ add r0, r4, #0x0
+ ldr r3, [r3, #0x0]
+ mov r1, #0x1
+ mov r2, #0x0
+ blx r3
+ add r6, r0, #0x0
+ bne _0201B430
+ mov r0, #0x0
+ str r0, [sp, #0x4]
+ b _0201B430
+_0201B42E:
+ mov r6, #0x0
+_0201B430:
+ ldr r0, [sp, #0xc]
+ cmp r0, #0x0
+ beq _0201B450
+ ldr r3, _0201B4DC ; =0x021064C0
+ mov r1, #0x2
+ ldrh r2, [r5, #0x20]
+ lsl r1, r1, #0xe
+ ldr r3, [r3, #0x0]
+ and r1, r2
+ mov r2, #0x0
+ blx r3
+ add r4, r0, #0x0
+ bne _0201B452
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ b _0201B452
+_0201B450:
+ mov r4, #0x0
+_0201B452:
+ ldr r0, [sp, #0x8]
+ cmp r0, #0x0
+ bne _0201B46E
+ ldr r1, _0201B4E0 ; =0x021064BC
+ add r0, r7, #0x0
+ ldr r1, [r1, #0x0]
+ blx r1
+ cmp r0, #0x0
+ beq _0201B468
+ bl ErrorHandling
+_0201B468:
+ add sp, #0x10
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0201B46E:
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ bne _0201B48A
+ ldr r1, _0201B4E0 ; =0x021064BC
+ add r0, r6, #0x0
+ ldr r1, [r1, #0x0]
+ blx r1
+ cmp r0, #0x0
+ beq _0201B484
+ bl ErrorHandling
+_0201B484:
+ add sp, #0x10
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0201B48A:
+ ldr r0, [sp, #0x0]
+ cmp r0, #0x0
+ bne _0201B4A6
+ ldr r1, _0201B4E4 ; =0x021064C4
+ add r0, r4, #0x0
+ ldr r1, [r1, #0x0]
+ blx r1
+ cmp r0, #0x0
+ beq _0201B4A0
+ bl ErrorHandling
+_0201B4A0:
+ add sp, #0x10
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0201B4A6:
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ add r2, r6, #0x0
+ blx FUN_020B7DFC
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ blx FUN_020B7CDC
+ ldr r1, [r5, #0x4]
+ add r0, r5, #0x0
+ blx DC_FlushRange
+ add r0, r5, #0x0
+ mov r1, #0x1
+ blx FUN_020B7D28
+ add r0, r5, #0x0
+ mov r1, #0x1
+ blx FUN_020B7C78
+_0201B4D0:
+ mov r0, #0x1
+ add sp, #0x10
+ pop {r3-r7, pc}
+ nop
+_0201B4D8: .word 0x021064B8
+_0201B4DC: .word 0x021064C0
+_0201B4E0: .word 0x021064BC
+_0201B4E4: .word 0x021064C4
+
+ thumb_func_start FUN_0201B4E8
+FUN_0201B4E8: ; 0x0201B4E8
+ str r0, [r1, #0x0]
+ add r0, r0, #0x4
+ str r0, [r1, #0x8]
+ str r0, [r1, #0x4]
+ mov r0, #0x0
+ str r0, [r1, #0xc]
+ str r0, [r1, #0x10]
+ str r0, [r1, #0x14]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0201B4FC
+FUN_0201B4FC: ; 0x0201B4FC
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldrh r0, [r5, #0x0]
+ mov r7, #0x0
+ cmp r0, #0x0
+ ble _0201B52A
+ add r4, r7, #0x0
+ add r6, r7, #0x0
+_0201B50C:
+ ldr r1, [r5, #0x24]
+ add r0, r5, #0x0
+ add r1, r1, r4
+ bl FUN_0201B4E8
+ ldr r0, [r5, #0x24]
+ add r7, r7, #0x1
+ add r1, r0, r4
+ ldr r0, [r5, #0x20]
+ add r4, #0x1c
+ str r1, [r0, r6]
+ ldrh r0, [r5, #0x0]
+ add r6, r6, #0x4
+ cmp r7, r0
+ blt _0201B50C
+_0201B52A:
+ mov r0, #0x0
+ strh r0, [r5, #0x2]
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0201B530
+FUN_0201B530: ; 0x0201B530
+ ldrh r3, [r0, #0x2]
+ ldrh r1, [r0, #0x0]
+ cmp r3, r1
+ bne _0201B53C
+ mov r0, #0x0
+ bx lr
+_0201B53C:
+ ldr r2, [r0, #0x20]
+ lsl r1, r3, #0x2
+ ldr r2, [r2, r1]
+ add r1, r3, #0x1
+ strh r1, [r0, #0x2]
+ add r0, r2, #0x0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0201B54C
+FUN_0201B54C: ; 0x0201B54C
+ ldrh r2, [r0, #0x2]
+ cmp r2, #0x0
+ bne _0201B556
+ mov r0, #0x0
+ bx lr
+_0201B556:
+ str r0, [r1, #0x0]
+ add r2, r0, #0x4
+ str r2, [r1, #0x8]
+ str r2, [r1, #0x4]
+ mov r2, #0x0
+ str r2, [r1, #0xc]
+ str r2, [r1, #0x10]
+ str r2, [r1, #0x14]
+ ldrh r2, [r0, #0x2]
+ sub r2, r2, #0x1
+ strh r2, [r0, #0x2]
+ ldr r2, [r0, #0x20]
+ ldrh r0, [r0, #0x2]
+ lsl r0, r0, #0x2
+ str r1, [r2, r0]
+ mov r0, #0x1
+ bx lr
+
+ thumb_func_start FUN_0201B578
+FUN_0201B578: ; 0x0201B578
+ lsl r0, r0, #0x5
+ add r0, #0x34
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0201B580
+FUN_0201B580: ; 0x0201B580
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bne _0201B58C
+ bl ErrorHandling
+_0201B58C:
+ add r1, r4, #0x0
+ add r1, #0x34
+ lsl r0, r5, #0x2
+ str r1, [r4, #0x20]
+ add r0, r1, r0
+ str r0, [r4, #0x24]
+ strh r5, [r4, #0x0]
+ mov r0, #0x0
+ strh r0, [r4, #0x2]
+ str r0, [r4, #0x28]
+ add r0, r4, #0x0
+ bl FUN_0201B5AC
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201B5AC
+FUN_0201B5AC: ; 0x0201B5AC
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_0201B4FC
+ str r4, [r4, #0x4]
+ add r0, r4, #0x4
+ str r0, [r4, #0xc]
+ str r0, [r4, #0x8]
+ mov r0, #0x0
+ str r0, [r4, #0x10]
+ str r0, [r4, #0x14]
+ str r0, [r4, #0x18]
+ ldr r0, [r4, #0xc]
+ str r0, [r4, #0x2c]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201B5CC
+FUN_0201B5CC: ; 0x0201B5CC
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x28]
+ cmp r0, #0x0
+ bne _0201B608
+ ldr r1, [r5, #0xc]
+ add r4, r5, #0x4
+ str r1, [r5, #0x2c]
+ cmp r1, r4
+ beq _0201B604
+ mov r6, #0x0
+_0201B5E2:
+ ldr r0, [r1, #0x8]
+ str r0, [r5, #0x30]
+ ldr r0, [r5, #0x2c]
+ ldr r1, [r0, #0x18]
+ cmp r1, #0x0
+ bne _0201B5FA
+ ldr r2, [r0, #0x14]
+ cmp r2, #0x0
+ beq _0201B5FC
+ ldr r1, [r0, #0x10]
+ blx r2
+ b _0201B5FC
+_0201B5FA:
+ str r6, [r0, #0x18]
+_0201B5FC:
+ ldr r1, [r5, #0x30]
+ str r1, [r5, #0x2c]
+ cmp r1, r4
+ bne _0201B5E2
+_0201B604:
+ mov r0, #0x0
+ str r0, [r1, #0x14]
+_0201B608:
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201B60C
+FUN_0201B60C: ; 0x0201B60C
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ mov r5, #0x1
+ str r5, [r4, #0x28]
+ bl FUN_0201B620
+ mov r1, #0x0
+ str r1, [r4, #0x28]
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201B620
+FUN_0201B620: ; 0x0201B620
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ add r7, r2, #0x0
+ add r4, r3, #0x0
+ bl FUN_0201B530
+ cmp r0, #0x0
+ bne _0201B636
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0201B636:
+ str r4, [r0, #0xc]
+ str r7, [r0, #0x10]
+ str r6, [r0, #0x14]
+ ldr r2, [r5, #0x2c]
+ ldr r1, [r2, #0x14]
+ cmp r1, #0x0
+ beq _0201B656
+ ldr r1, [r2, #0xc]
+ cmp r1, r4
+ bhi _0201B650
+ mov r1, #0x1
+ str r1, [r0, #0x18]
+ b _0201B65A
+_0201B650:
+ mov r1, #0x0
+ str r1, [r0, #0x18]
+ b _0201B65A
+_0201B656:
+ mov r1, #0x0
+ str r1, [r0, #0x18]
+_0201B65A:
+ ldr r3, [r5, #0xc]
+ add r2, r5, #0x4
+ cmp r3, r2
+ beq _0201B686
+ ldr r4, [r0, #0xc]
+_0201B664:
+ ldr r1, [r3, #0xc]
+ cmp r1, r4
+ bls _0201B680
+ ldr r1, [r3, #0x4]
+ str r1, [r0, #0x4]
+ str r3, [r0, #0x8]
+ ldr r1, [r3, #0x4]
+ str r0, [r1, #0x8]
+ str r0, [r3, #0x4]
+ ldr r1, [r5, #0x30]
+ cmp r3, r1
+ bne _0201B69E
+ str r0, [r5, #0x30]
+ pop {r3-r7, pc}
+_0201B680:
+ ldr r3, [r3, #0x8]
+ cmp r3, r2
+ bne _0201B664
+_0201B686:
+ ldr r2, [r5, #0x30]
+ add r1, r5, #0x4
+ cmp r2, r1
+ bne _0201B690
+ str r0, [r5, #0x30]
+_0201B690:
+ ldr r1, [r5, #0x8]
+ str r1, [r0, #0x4]
+ add r1, r5, #0x4
+ str r1, [r0, #0x8]
+ ldr r1, [r5, #0x8]
+ str r0, [r1, #0x8]
+ str r0, [r5, #0x8]
+_0201B69E:
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0201B6A0
+FUN_0201B6A0: ; 0x0201B6A0
+ add r1, r0, #0x0
+ ldr r2, [r1, #0x0]
+ ldr r0, [r2, #0x30]
+ cmp r0, r1
+ bne _0201B6AE
+ ldr r0, [r1, #0x8]
+ str r0, [r2, #0x30]
+_0201B6AE:
+ ldr r2, [r1, #0x8]
+ ldr r0, [r1, #0x4]
+ ldr r3, _0201B6C0 ; =0x0201B54D
+ str r2, [r0, #0x8]
+ ldr r2, [r1, #0x4]
+ ldr r0, [r1, #0x8]
+ str r2, [r0, #0x4]
+ ldr r0, [r1, #0x0]
+ bx r3
+ .balign 4
+_0201B6C0: .word 0x0201B54D
+
+ thumb_func_start FUN_0201B6C4
+FUN_0201B6C4: ; 0x0201B6C4
+ str r1, [r0, #0x14]
+ bx lr
+
+ thumb_func_start FUN_0201B6C8
+FUN_0201B6C8: ; 0x0201B6C8
+ ldr r0, [r0, #0x10]
+ bx lr
+
+ thumb_func_start FUN_0201B6CC
+FUN_0201B6CC: ; 0x0201B6CC
+ ldr r0, [r0, #0xc]
+ bx lr
+
+ thumb_func_start FUN_0201B6D0
+FUN_0201B6D0: ; 0x0201B6D0
+ push {r4-r7, lr}
+ sub sp, #0x34
+ add r6, r1, #0x0
+ add r4, r0, #0x0
+ add r5, r2, #0x0
+ ldmia r6!, {r0-r1}
+ add r2, sp, #0x1c
+ stmia r2!, {r0-r1}
+ ldr r0, [r6, #0x0]
+ add r4, #0x14
+ str r0, [r2, #0x0]
+ mov r0, #0x20
+ ldrsh r0, [r4, r0]
+ add r7, r3, #0x0
+ mov r1, #0x1a
+ str r0, [sp, #0x0]
+ mov r0, #0x22
+ ldrsh r0, [r4, r0]
+ mov r2, #0x1c
+ mov r3, #0x1e
+ str r0, [sp, #0x4]
+ add r0, sp, #0x28
+ str r0, [sp, #0x8]
+ mov r0, #0x18
+ ldrsh r0, [r4, r0]
+ ldrsh r1, [r4, r1]
+ ldrsh r2, [r4, r2]
+ ldrsh r3, [r4, r3]
+ bl FUN_0201B808
+ add r0, sp, #0x1c
+ blx FUN_020B8474
+ ldr r1, _0201B764 ; =0x021CEDD4
+ add r0, r5, #0x0
+ blx MI_Copy36B
+ ldr r1, _0201B768 ; =0x021CED98
+ mov r0, #0xa4
+ ldr r2, [r1, #0x7c]
+ bic r2, r0
+ add r0, r7, #0x0
+ str r2, [r1, #0x7c]
+ blx FUN_020B844C
+ blx FUN_020B849C
+ mov r1, #0x0
+ mov r0, #0x11
+ add r2, r1, #0x0
+ blx FUN_020BB1C0
+ ldr r0, [r4, #0x24]
+ add r1, sp, #0x10
+ str r0, [sp, #0x10]
+ str r0, [sp, #0x14]
+ str r0, [sp, #0x18]
+ mov r0, #0x1b
+ mov r2, #0x3
+ blx FUN_020BB1C0
+ add r0, sp, #0x28
+ bl FUN_0201B82C
+ add r4, r0, #0x0
+ mov r2, #0x1
+ mov r0, #0x12
+ add r1, sp, #0xc
+ str r2, [sp, #0xc]
+ blx FUN_020BB1C0
+ add r0, r4, #0x0
+ add sp, #0x34
+ pop {r4-r7, pc}
+ .balign 4
+_0201B764: .word 0x021CEDD4
+_0201B768: .word 0x021CED98
+
+ thumb_func_start FUN_0201B76C
+FUN_0201B76C: ; 0x0201B76C
+ push {r3-r5, lr}
+ sub sp, #0x28
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ mov r0, #0x2
+ ldrsh r0, [r4, r0]
+ str r0, [sp, #0x0]
+ mov r0, #0x4
+ ldrsh r0, [r4, r0]
+ str r0, [sp, #0x4]
+ add r0, sp, #0x1c
+ str r0, [sp, #0x8]
+ mov r0, #0x0
+ ldrsh r3, [r4, r0]
+ add r1, r0, #0x0
+ add r2, r0, #0x0
+ bl FUN_0201B808
+ add r0, r5, #0x0
+ blx FUN_020B8474
+ blx FUN_020B849C
+ mov r1, #0x0
+ mov r0, #0x11
+ add r2, r1, #0x0
+ blx FUN_020BB1C0
+ ldr r0, [r4, #0x10]
+ lsl r2, r0, #0xc
+ ldr r0, [r4, #0xc]
+ lsl r1, r0, #0xc
+ ldr r0, [r4, #0x8]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x10]
+ str r1, [sp, #0x14]
+ str r2, [sp, #0x18]
+ mov r0, #0x1b
+ add r1, sp, #0x10
+ mov r2, #0x3
+ blx FUN_020BB1C0
+ add r0, sp, #0x1c
+ bl FUN_0201B82C
+ add r4, r0, #0x0
+ mov r2, #0x1
+ mov r0, #0x12
+ add r1, sp, #0xc
+ str r2, [sp, #0xc]
+ blx FUN_020BB1C0
+ add r0, r4, #0x0
+ add sp, #0x28
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201B7DC
+FUN_0201B7DC: ; 0x0201B7DC
+ push {r4-r6, lr}
+ add r6, r3, #0x0
+ add r4, r2, #0x0
+ add r2, r6, #0x0
+ add r5, r1, #0x0
+ add r1, r6, #0x0
+ add r2, #0x8
+ bl FUN_0201B880
+ add r2, r6, #0x0
+ add r0, r5, #0x0
+ add r1, r6, #0x2
+ add r2, #0xc
+ bl FUN_0201B880
+ add r1, r6, #0x4
+ add r6, #0x10
+ add r0, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_0201B880
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0201B808
+FUN_0201B808: ; 0x0201B808
+ push {r3-r4}
+ ldr r4, [sp, #0x10]
+ strh r0, [r4, #0x0]
+ strh r1, [r4, #0x2]
+ ldr r1, _0201B828 ; =0xFFFFFFF8
+ strh r2, [r4, #0x4]
+ strh r3, [r4, #0x6]
+ add r1, sp
+ mov r0, #0x10
+ ldrsh r0, [r1, r0]
+ strh r0, [r4, #0x8]
+ mov r0, #0x14
+ ldrsh r0, [r1, r0]
+ strh r0, [r4, #0xa]
+ pop {r3-r4}
+ bx lr
+ .balign 4
+_0201B828: .word 0xFFFFFFF8
+
+ thumb_func_start FUN_0201B82C
+FUN_0201B82C: ; 0x0201B82C
+ push {r3-r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0x0
+ ldr r0, _0201B87C ; =0x000030C1
+ mov r2, #0x1
+ str r0, [sp, #0x4]
+ mov r0, #0x29
+ add r1, sp, #0x4
+ str r2, [sp, #0x8]
+ blx FUN_020BB1C0
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x40
+ add r1, sp, #0x0
+ mov r2, #0x1
+ blx FUN_020BB1C0
+ mov r1, #0x0
+ mov r0, #0x41
+ add r2, r1, #0x0
+ blx FUN_020BB1C0
+ mov r0, #0x70
+ add r1, r4, #0x0
+ mov r2, #0x3
+ blx FUN_020BB1C0
+ blx FUN_020BB394
+ add r4, sp, #0x8
+_0201B86A:
+ add r0, r4, #0x0
+ blx FUN_020C7A14
+ cmp r0, #0x0
+ bne _0201B86A
+ ldr r0, [sp, #0x8]
+ add sp, #0xc
+ pop {r3-r4, pc}
+ nop
+_0201B87C: .word 0x000030C1
+
+ thumb_func_start FUN_0201B880
+FUN_0201B880: ; 0x0201B880
+ push {r3-r4}
+ ldr r4, _0201B8B4 ; =0x00007FFF
+ mov r3, #0x0
+ cmp r0, r4
+ blo _0201B896
+_0201B88A:
+ add r3, r3, #0x1
+ lsl r3, r3, #0x18
+ lsr r0, r0, #0x1
+ lsr r3, r3, #0x18
+ cmp r0, r4
+ bhs _0201B88A
+_0201B896:
+ strh r0, [r1, #0x0]
+ mov r0, #0x1
+ mov r1, #0x0
+ str r0, [r2, #0x0]
+ cmp r3, #0x0
+ ble _0201B8AE
+_0201B8A2:
+ ldr r0, [r2, #0x0]
+ add r1, r1, #0x1
+ lsl r0, r0, #0x1
+ str r0, [r2, #0x0]
+ cmp r1, r3
+ blt _0201B8A2
+_0201B8AE:
+ pop {r3-r4}
+ bx lr
+ nop
+_0201B8B4: .word 0x00007FFF
+
+ thumb_func_start FUN_0201B8B8
+FUN_0201B8B8: ; 0x0201B8B8
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldrh r1, [r4, #0x0]
+ ldr r0, _0201B8DC ; =0x0000FFFE
+ cmp r1, r0
+ beq _0201B8C8
+ bl ErrorHandling
+_0201B8C8:
+ ldrh r1, [r4, #0x0]
+ ldr r0, _0201B8DC ; =0x0000FFFE
+ cmp r1, r0
+ bne _0201B8D8
+ ldrh r0, [r4, #0x4]
+ add r1, r4, #0x6
+ lsl r0, r0, #0x1
+ add r4, r1, r0
+_0201B8D8:
+ add r0, r4, #0x0
+ pop {r4, pc}
+ .balign 4
+_0201B8DC: .word 0x0000FFFE
+
+ thumb_func_start FUN_0201B8E0
+FUN_0201B8E0: ; 0x0201B8E0
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldrh r1, [r4, #0x0]
+ ldr r0, _0201B8F4 ; =0x0000FFFE
+ cmp r1, r0
+ beq _0201B8F0
+ bl ErrorHandling
+_0201B8F0:
+ ldrh r0, [r4, #0x2]
+ pop {r4, pc}
+ .balign 4
+_0201B8F4: .word 0x0000FFFE
+
+ thumb_func_start FUN_0201B8F8
+FUN_0201B8F8: ; 0x0201B8F8
+ push {r3, lr}
+ bl FUN_0201B8E0
+ mov r1, #0xff
+ lsl r1, r1, #0x8
+ and r1, r0
+ mov r0, #0x1
+ lsl r0, r0, #0x8
+ cmp r1, r0
+ bne _0201B910
+ mov r0, #0x1
+ pop {r3, pc}
+_0201B910:
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_0201B914
+FUN_0201B914: ; 0x0201B914
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ ldrh r1, [r5, #0x0]
+ ldr r0, _0201B938 ; =0x0000FFFE
+ cmp r1, r0
+ beq _0201B926
+ bl ErrorHandling
+_0201B926:
+ ldrh r0, [r5, #0x4]
+ cmp r4, r0
+ blo _0201B930
+ bl ErrorHandling
+_0201B930:
+ lsl r0, r4, #0x1
+ add r0, r5, r0
+ ldrh r0, [r0, #0x6]
+ pop {r3-r5, pc}
+ .balign 4
+_0201B938: .word 0x0000FFFE
+
+ thumb_func_start FUN_0201B93C
+FUN_0201B93C: ; 0x0201B93C
+ mov r1, #0x5a
+ lsl r1, r1, #0x2
+ cmp r0, r1
+ blo _0201B948
+ mov r0, #0x0
+ bx lr
+_0201B948:
+ lsl r1, r0, #0x2
+ ldr r0, _0201B950 ; =0x020EDF50
+ ldr r0, [r0, r1]
+ bx lr
+ .balign 4
+_0201B950: .word 0x020EDF50
+
+ thumb_func_start FUN_0201B954
+FUN_0201B954: ; 0x0201B954
+ mov r1, #0x5a
+ lsl r1, r1, #0x2
+ cmp r0, r1
+ blo _0201B960
+ mov r0, #0x0
+ bx lr
+_0201B960:
+ add r0, #0x5a
+ lsl r1, r0, #0x2
+ ldr r0, _0201B96C ; =0x020EDF50
+ ldr r0, [r0, r1]
+ bx lr
+ nop
+_0201B96C: .word 0x020EDF50
+
+ thumb_func_start FUN_0201B970
+FUN_0201B970: ; 0x0201B970
+ push {r3, lr}
+ mov r1, #0x5a
+ lsl r1, r1, #0x2
+ blx _s32_div_f
+ ldr r0, _0201B984 ; =0x020EDF50
+ lsl r1, r1, #0x2
+ ldr r0, [r0, r1]
+ pop {r3, pc}
+ nop
+_0201B984: .word 0x020EDF50
+
+ thumb_func_start FUN_0201B988
+FUN_0201B988: ; 0x0201B988
+ push {r3, lr}
+ mov r1, #0x5a
+ lsl r1, r1, #0x2
+ blx _s32_div_f
+ add r1, #0x5a
+ ldr r0, _0201B99C ; =0x020EDF50
+ lsl r1, r1, #0x2
+ ldr r0, [r0, r1]
+ pop {r3, pc}
+ .balign 4
+_0201B99C: .word 0x020EDF50
+
+ thumb_func_start FUN_0201B9A0
+FUN_0201B9A0: ; 0x0201B9A0
+ push {r3, lr}
+ mov r1, #0x5a
+ lsl r1, r1, #0x2
+ blx _s32_div_f
+ ldr r0, _0201B9B4 ; =0x020EDC7E
+ lsl r1, r1, #0x1
+ ldrh r0, [r0, r1]
+ pop {r3, pc}
+ nop
+_0201B9B4: .word 0x020EDC7E
+
+ thumb_func_start FUN_0201B9B8
+FUN_0201B9B8: ; 0x0201B9B8
+ push {r3, lr}
+ lsl r0, r0, #0x4
+ mov r1, #0x5a
+ lsr r0, r0, #0x10
+ lsl r1, r1, #0x2
+ blx _s32_div_f
+ ldr r0, _0201B9D0 ; =0x020EDF50
+ lsl r1, r1, #0x2
+ ldr r0, [r0, r1]
+ pop {r3, pc}
+ nop
+_0201B9D0: .word 0x020EDF50
+
+ thumb_func_start FUN_0201B9D4
+FUN_0201B9D4: ; 0x0201B9D4
+ ldr r0, _0201B9DC ; =0x021C4D48
+ ldr r0, [r0, #0x0]
+ bx lr
+ nop
+_0201B9DC: .word 0x021C4D48
+
+ thumb_func_start FUN_0201B9E0
+FUN_0201B9E0: ; 0x0201B9E0
+ ldr r1, _0201B9E8 ; =0x021C4D48
+ str r0, [r1, #0x0]
+ bx lr
+ nop
+_0201B9E8: .word 0x021C4D48
+
+ thumb_func_start FUN_0201B9EC
+FUN_0201B9EC: ; 0x0201B9EC
+ ldr r1, _0201BA04 ; =0x021C4D48
+ ldr r0, _0201BA08 ; =0x41C64E6D
+ ldr r2, [r1, #0x0]
+ add r3, r2, #0x0
+ mul r3, r0
+ ldr r0, _0201BA0C ; =0x00006073
+ add r0, r3, r0
+ str r0, [r1, #0x0]
+ lsr r0, r0, #0x10
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bx lr
+ .balign 4
+_0201BA04: .word 0x021C4D48
+_0201BA08: .word 0x41C64E6D
+_0201BA0C: .word 0x00006073
+
+ thumb_func_start FUN_0201BA10
+FUN_0201BA10: ; 0x0201BA10
+ ldr r1, _0201BA18 ; =0x6C078965
+ mul r1, r0
+ add r0, r1, #0x1
+ bx lr
+ .balign 4
+_0201BA18: .word 0x6C078965
+
+ thumb_func_start FUN_0201BA1C
+FUN_0201BA1C: ; 0x0201BA1C
+ push {r4-r5}
+ ldr r1, _0201BA50 ; =0x021C4D48
+ mov r4, #0x27
+ str r0, [r1, #0x4]
+ ldr r1, _0201BA54 ; =0x02105BA8
+ mov r0, #0x1
+ str r0, [r1, #0x0]
+ ldr r1, _0201BA58 ; =0x021C4D50
+ ldr r3, _0201BA5C ; =0x6C078965
+ lsl r4, r4, #0x4
+_0201BA30:
+ sub r2, r1, #0x4
+ ldr r5, [r2, #0x0]
+ lsr r2, r5, #0x1e
+ eor r2, r5
+ add r5, r2, #0x0
+ mul r5, r3
+ add r2, r0, r5
+ add r0, r0, #0x1
+ stmia r1!, {r2}
+ cmp r0, r4
+ blt _0201BA30
+ ldr r1, _0201BA54 ; =0x02105BA8
+ str r0, [r1, #0x0]
+ pop {r4-r5}
+ bx lr
+ nop
+_0201BA50: .word 0x021C4D48
+_0201BA54: .word 0x02105BA8
+_0201BA58: .word 0x021C4D50
+_0201BA5C: .word 0x6C078965
+
+ thumb_func_start FUN_0201BA60
+FUN_0201BA60: ; 0x0201BA60
+ push {r3-r7, lr}
+ ldr r0, _0201BB44 ; =0x02105BA8
+ ldr r1, [r0, #0x0]
+ mov r0, #0x27
+ lsl r0, r0, #0x4
+ cmp r1, r0
+ blt _0201BB18
+ add r0, r0, #0x1
+ cmp r1, r0
+ bne _0201BA7A
+ ldr r0, _0201BB48 ; =0x00001571
+ bl FUN_0201BA1C
+_0201BA7A:
+ ldr r4, _0201BB4C ; =0x021C4D4C
+ ldr r1, _0201BB50 ; =0x02105BAC
+ ldr r5, _0201BB54 ; =0x7FFFFFFF
+ ldr r6, _0201BB58 ; =0x00000634
+ mov r0, #0x0
+_0201BA84:
+ mov r2, #0x2
+ ldr r3, [r4, #0x0]
+ lsl r2, r2, #0x1e
+ and r3, r2
+ ldr r2, [r4, #0x4]
+ add r0, r0, #0x1
+ and r2, r5
+ orr r3, r2
+ lsr r7, r3, #0x1
+ lsl r3, r3, #0x1f
+ ldr r2, [r4, r6]
+ lsr r3, r3, #0x1d
+ ldr r3, [r1, r3]
+ eor r2, r7
+ eor r2, r3
+ stmia r4!, {r2}
+ cmp r0, #0xe3
+ blt _0201BA84
+ ldr r1, _0201BB5C ; =0x0000026F
+ cmp r0, r1
+ bge _0201BAE4
+ ldr r2, _0201BB4C ; =0x021C4D4C
+ lsl r1, r0, #0x2
+ add r1, r2, r1
+ mov r2, #0xe3
+ ldr r4, _0201BB50 ; =0x02105BAC
+ ldr r3, _0201BB5C ; =0x0000026F
+ lsl r2, r2, #0x2
+_0201BABC:
+ mov r5, #0x2
+ ldr r6, [r1, #0x0]
+ lsl r5, r5, #0x1e
+ and r5, r6
+ ldr r7, [r1, #0x4]
+ ldr r6, _0201BB54 ; =0x7FFFFFFF
+ add r0, r0, #0x1
+ and r6, r7
+ orr r6, r5
+ lsr r5, r6, #0x1
+ sub r7, r1, r2
+ lsl r6, r6, #0x1f
+ ldr r7, [r7, #0x0]
+ lsr r6, r6, #0x1d
+ ldr r6, [r4, r6]
+ eor r5, r7
+ eor r5, r6
+ stmia r1!, {r5}
+ cmp r0, r3
+ blt _0201BABC
+_0201BAE4:
+ ldr r2, _0201BB60 ; =0x021C56C8
+ mov r0, #0x2
+ ldr r1, [r2, #0x40]
+ lsl r0, r0, #0x1e
+ add r3, r1, #0x0
+ ldr r1, _0201BB64 ; =0x021C4D48
+ and r3, r0
+ ldr r1, [r1, #0x4]
+ sub r0, r0, #0x1
+ and r0, r1
+ add r4, r3, #0x0
+ orr r4, r0
+ ldr r0, _0201BB68 ; =0x021C5348
+ ldr r1, [r0, #0x34]
+ lsr r0, r4, #0x1
+ add r3, r1, #0x0
+ eor r3, r0
+ lsl r0, r4, #0x1f
+ lsr r1, r0, #0x1d
+ ldr r0, _0201BB50 ; =0x02105BAC
+ ldr r0, [r0, r1]
+ mov r1, #0x0
+ eor r0, r3
+ str r0, [r2, #0x40]
+ ldr r0, _0201BB44 ; =0x02105BA8
+ str r1, [r0, #0x0]
+_0201BB18:
+ ldr r0, _0201BB44 ; =0x02105BA8
+ ldr r2, [r0, #0x0]
+ add r1, r2, #0x1
+ str r1, [r0, #0x0]
+ ldr r0, _0201BB4C ; =0x021C4D4C
+ lsl r1, r2, #0x2
+ ldr r1, [r0, r1]
+ lsr r0, r1, #0xb
+ add r2, r1, #0x0
+ eor r2, r0
+ ldr r0, _0201BB6C ; =0x9D2C5680
+ lsl r1, r2, #0x7
+ and r0, r1
+ eor r2, r0
+ ldr r0, _0201BB70 ; =0xEFC60000
+ lsl r1, r2, #0xf
+ and r0, r1
+ add r1, r2, #0x0
+ eor r1, r0
+ lsr r0, r1, #0x12
+ eor r0, r1
+ pop {r3-r7, pc}
+ .balign 4
+_0201BB44: .word 0x02105BA8
+_0201BB48: .word 0x00001571
+_0201BB4C: .word 0x021C4D4C
+_0201BB50: .word 0x02105BAC
+_0201BB54: .word 0x7FFFFFFF
+_0201BB58: .word 0x00000634
+_0201BB5C: .word 0x0000026F
+_0201BB60: .word 0x021C56C8
+_0201BB64: .word 0x021C4D48
+_0201BB68: .word 0x021C5348
+_0201BB6C: .word 0x9D2C5680
+_0201BB70: .word 0xEFC60000
+
+ thumb_func_start FUN_0201BB74
+FUN_0201BB74: ; 0x0201BB74
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, sp, #0x0
+ ldrb r0, [r0, #0x10]
+ add r4, r2, #0x0
+ add r6, r3, #0x0
+ cmp r0, #0x1
+ bne _0201BB8E
+ ldr r0, _0201BBC8 ; =0x0000FFFF
+ mul r0, r1
+ lsl r0, r0, #0x8
+ lsr r1, r0, #0x10
+ b _0201BBA2
+_0201BB8E:
+ cmp r0, #0x2
+ bne _0201BBA2
+ ldr r0, _0201BBC8 ; =0x0000FFFF
+ mul r0, r1
+ mov r1, #0x5a
+ lsl r1, r1, #0x2
+ blx _u32_div_f
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+_0201BBA2:
+ asr r0, r1, #0x4
+ lsl r3, r0, #0x1
+ lsl r1, r3, #0x1
+ ldr r2, _0201BBCC ; =0x020FFA38
+ add r3, r3, #0x1
+ lsl r3, r3, #0x1
+ ldrsh r1, [r2, r1]
+ ldrsh r2, [r2, r3]
+ add r0, r5, #0x0
+ bl FUN_020C3EA4
+ add r0, r5, #0x0
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ add r3, r6, #0x0
+ blx FUN_020C3EB0
+ pop {r4-r6, pc}
+ nop
+_0201BBC8: .word 0x0000FFFF
+_0201BBCC: .word 0x020FFA38
+
+ thumb_func_start FUN_0201BBD0
+FUN_0201BBD0: ; 0x0201BBD0
+ push {r3-r7, lr}
+ sub sp, #0x38
+ lsl r5, r0, #0xc
+ lsl r4, r1, #0xc
+ mov r1, #0x0
+ lsl r0, r2, #0xc
+ lsl r6, r3, #0xc
+ str r1, [sp, #0x34]
+ str r0, [sp, #0x0]
+ str r0, [sp, #0x20]
+ str r1, [sp, #0x28]
+ str r1, [sp, #0x8]
+ str r1, [sp, #0xc]
+ asr r1, r5, #0x1f
+ add r0, r5, #0x0
+ asr r3, r6, #0x1f
+ add r2, r6, #0x0
+ str r5, [sp, #0x2c]
+ str r4, [sp, #0x30]
+ str r6, [sp, #0x24]
+ blx _ll_mul
+ str r0, [sp, #0x4]
+ add r2, r4, #0x0
+ ldr r0, [sp, #0x20]
+ add r7, r1, #0x0
+ asr r1, r0, #0x1f
+ asr r3, r2, #0x1f
+ blx _ll_mul
+ mov r2, #0x2
+ ldr r3, [sp, #0x4]
+ lsl r2, r2, #0xa
+ add r3, r3, r2
+ ldr r2, _0201BC80 ; =0x00000000
+ str r4, [sp, #0x2c]
+ adc r7, r2
+ lsl r2, r7, #0x14
+ lsr r3, r3, #0xc
+ orr r3, r2
+ mov r2, #0x2
+ lsl r2, r2, #0xa
+ add r0, r0, r2
+ ldr r2, _0201BC80 ; =0x00000000
+ str r5, [sp, #0x30]
+ adc r1, r2
+ lsl r1, r1, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r1
+ sub r2, r3, r0
+ ldr r1, [sp, #0x8]
+ ldr r0, [sp, #0xc]
+ str r2, [sp, #0x10]
+ add r0, r1, r0
+ add r7, r2, r0
+ mov r0, #0x0
+ str r0, [sp, #0x34]
+ add r0, sp, #0x2c
+ add r1, sp, #0x14
+ blx FUN_020C5288
+ mov r1, #0x0
+ ldr r0, [sp, #0x0]
+ str r1, [sp, #0x34]
+ str r0, [sp, #0x20]
+ str r1, [sp, #0x28]
+ add r0, sp, #0x20
+ add r1, sp, #0x2c
+ add r2, sp, #0x8
+ str r5, [sp, #0x2c]
+ str r4, [sp, #0x30]
+ str r6, [sp, #0x24]
+ blx FUN_020C5600
+ add r0, sp, #0x14
+ add r1, sp, #0x8
+ blx FUN_020C5588
+ asr r0, r0, #0xc
+ bpl _0201BC72
+ neg r0, r0
+_0201BC72:
+ cmp r7, #0x0
+ bgt _0201BC7C
+ mov r1, #0x0
+ mvn r1, r1
+ mul r0, r1
+_0201BC7C:
+ add sp, #0x38
+ pop {r3-r7, pc}
+ .balign 4
+_0201BC80: .word 0x00000000
+
+ thumb_func_start FUN_0201BC84
+FUN_0201BC84: ; 0x0201BC84
+ push {r3-r5, lr}
+ lsl r0, r0, #0xd
+ add r4, r1, #0x0
+ ldr r2, _0201BCB4 ; =0x0000323D
+ asr r1, r0, #0x1f
+ mov r3, #0x0
+ blx _ll_mul
+ add r5, r0, #0x0
+ ldr r0, _0201BCB8 ; =0x0000FFFF
+ mov r2, #0x2
+ mov r3, #0x0
+ lsl r2, r2, #0xa
+ mul r0, r4
+ add r2, r5, r2
+ adc r1, r3
+ lsl r1, r1, #0x14
+ lsr r2, r2, #0xc
+ orr r2, r1
+ asr r1, r2, #0xc
+ blx _s32_div_f
+ pop {r3-r5, pc}
+ nop
+_0201BCB4: .word 0x0000323D
+_0201BCB8: .word 0x0000FFFF
+
+ thumb_func_start FUN_0201BCBC
+FUN_0201BCBC: ; 0x0201BCBC
+ ldr r1, _0201BCC4 ; =0x02105BB4
+ str r0, [r1, #0x0]
+ bx lr
+ nop
+_0201BCC4: .word 0x02105BB4
+
+ thumb_func_start FUN_0201BCC8
+FUN_0201BCC8: ; 0x0201BCC8
+ push {r4-r6, lr}
+ ldr r4, _0201BCF8 ; =0x021C5714
+ mov r5, #0x0
+_0201BCCE:
+ ldr r3, [r4, #0x0]
+ cmp r3, #0x0
+ bne _0201BCE8
+ ldr r6, _0201BCF8 ; =0x021C5714
+ lsl r4, r5, #0x2
+ bl FUN_0200CA7C
+ str r0, [r6, r4]
+ ldr r0, [r6, r4]
+ cmp r0, #0x0
+ bne _0201BCF0
+ mov r5, #0x8
+ b _0201BCF0
+_0201BCE8:
+ add r5, r5, #0x1
+ add r4, r4, #0x4
+ cmp r5, #0x8
+ blt _0201BCCE
+_0201BCF0:
+ lsl r0, r5, #0x18
+ lsr r0, r0, #0x18
+ pop {r4-r6, pc}
+ nop
+_0201BCF8: .word 0x021C5714
+
+ thumb_func_start FUN_0201BCFC
+FUN_0201BCFC: ; 0x0201BCFC
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ cmp r5, #0x8
+ blo _0201BD08
+ bl ErrorHandling
+_0201BD08:
+ ldr r6, _0201BD40 ; =0x021C5714
+ lsl r4, r5, #0x2
+ ldr r0, [r6, r4]
+ cmp r0, #0x0
+ bne _0201BD16
+ bl ErrorHandling
+_0201BD16:
+ cmp r5, #0x8
+ bhs _0201BD3C
+ ldr r0, [r6, r4]
+ cmp r0, #0x0
+ beq _0201BD3C
+ bl FUN_0201B6C8
+ add r5, r0, #0x0
+ beq _0201BD32
+ bl FUN_0201C238
+ add r0, r5, #0x0
+ bl FUN_02016A18
+_0201BD32:
+ ldr r0, [r6, r4]
+ bl FUN_0200CAB4
+ mov r0, #0x0
+ str r0, [r6, r4]
+_0201BD3C:
+ pop {r4-r6, pc}
+ nop
+_0201BD40: .word 0x021C5714
+
+ thumb_func_start FUN_0201BD44
+FUN_0201BD44: ; 0x0201BD44
+ lsl r1, r0, #0x2
+ ldr r0, _0201BD58 ; =0x021C5714
+ ldr r0, [r0, r1]
+ cmp r0, #0x0
+ beq _0201BD52
+ mov r0, #0x1
+ bx lr
+_0201BD52:
+ mov r0, #0x0
+ bx lr
+ nop
+_0201BD58: .word 0x021C5714
+
+ thumb_func_start FUN_0201BD5C
+FUN_0201BD5C: ; 0x0201BD5C
+ mov r1, #0x0
+ ldr r2, _0201BD6C ; =0x021C5714
+ add r0, r1, #0x0
+_0201BD62:
+ add r1, r1, #0x1
+ stmia r2!, {r0}
+ cmp r1, #0x8
+ blt _0201BD62
+ bx lr
+ .balign 4
+_0201BD6C: .word 0x021C5714
+
+ thumb_func_start FUN_0201BD70
+FUN_0201BD70: ; 0x0201BD70
+ push {r3, lr}
+ bl FUN_0201BD44
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ pop {r3, pc}
+
+ thumb_func_start FUN_0201BD7C
+FUN_0201BD7C: ; 0x0201BD7C
+ ldr r3, _0201BD80 ; =FUN_0201BCFC
+ bx r3
+ .balign 4
+_0201BD80: .word FUN_0201BCFC
+
+ thumb_func_start FUN_0201BD84
+FUN_0201BD84: ; 0x0201BD84
+ push {r3, lr}
+ sub sp, #0x18
+ str r0, [sp, #0x4]
+ lsl r0, r3, #0x18
+ lsr r3, r0, #0x18
+ ldr r0, [sp, #0x20]
+ str r2, [sp, #0x0]
+ add r2, sp, #0x0
+ strb r1, [r2, #0x9]
+ lsl r0, r0, #0x18
+ strb r3, [r2, #0xa]
+ lsr r0, r0, #0x18
+ strb r0, [r2, #0xb]
+ strb r3, [r2, #0xc]
+ strb r0, [r2, #0xd]
+ ldr r0, _0201BDDC ; =0x02105BB4
+ lsl r1, r1, #0x3
+ ldr r0, [r0, #0x0]
+ add r1, r0, r1
+ ldrb r0, [r1, #0x2]
+ strb r0, [r2, #0xe]
+ ldrb r0, [r1, #0x3]
+ strb r0, [r2, #0xf]
+ ldrb r0, [r1, #0x4]
+ strb r0, [r2, #0x10]
+ ldrb r0, [r1, #0x5]
+ strb r0, [r2, #0x11]
+ ldrb r0, [r1, #0x6]
+ strb r0, [r2, #0x12]
+ ldrb r0, [r1, #0x7]
+ ldr r1, [sp, #0x24]
+ strb r0, [r2, #0x13]
+ mov r0, #0x0
+ strh r0, [r2, #0x14]
+ strb r0, [r2, #0x16]
+ mov r0, #0xff
+ strb r0, [r2, #0x17]
+ ldr r2, [sp, #0x28]
+ add r0, sp, #0x0
+ bl FUN_0201BE98
+ add sp, #0x18
+ pop {r3, pc}
+ nop
+_0201BDDC: .word 0x02105BB4
+
+ thumb_func_start FUN_0201BDE0
+FUN_0201BDE0: ; 0x0201BDE0
+ push {r3, lr}
+ sub sp, #0x18
+ str r0, [sp, #0x4]
+ lsl r0, r3, #0x18
+ lsr r3, r0, #0x18
+ ldr r0, [sp, #0x20]
+ str r2, [sp, #0x0]
+ add r2, sp, #0x0
+ strb r1, [r2, #0x9]
+ lsl r0, r0, #0x18
+ strb r3, [r2, #0xa]
+ lsr r0, r0, #0x18
+ strb r0, [r2, #0xb]
+ strb r3, [r2, #0xc]
+ strb r0, [r2, #0xd]
+ ldr r0, _0201BE38 ; =0x02105BB4
+ lsl r1, r1, #0x3
+ ldr r0, [r0, #0x0]
+ add r1, r0, r1
+ ldrb r0, [r1, #0x2]
+ strb r0, [r2, #0xe]
+ ldrb r0, [r1, #0x3]
+ strb r0, [r2, #0xf]
+ ldrb r0, [r1, #0x4]
+ ldr r1, [sp, #0x28]
+ strb r0, [r2, #0x10]
+ lsr r0, r1, #0x10
+ strb r0, [r2, #0x11]
+ lsr r0, r1, #0x8
+ strb r0, [r2, #0x13]
+ strb r1, [r2, #0x12]
+ mov r0, #0x0
+ strh r0, [r2, #0x14]
+ strb r0, [r2, #0x16]
+ mov r0, #0xff
+ strb r0, [r2, #0x17]
+ ldr r1, [sp, #0x24]
+ ldr r2, [sp, #0x2c]
+ add r0, sp, #0x0
+ bl FUN_0201BE98
+ add sp, #0x18
+ pop {r3, pc}
+ nop
+_0201BE38: .word 0x02105BB4
+
+ thumb_func_start FUN_0201BE3C
+FUN_0201BE3C: ; 0x0201BE3C
+ push {r3, lr}
+ sub sp, #0x18
+ str r0, [sp, #0x4]
+ lsl r0, r3, #0x18
+ lsr r3, r0, #0x18
+ ldr r0, [sp, #0x20]
+ str r2, [sp, #0x0]
+ add r2, sp, #0x0
+ strb r1, [r2, #0x9]
+ lsl r0, r0, #0x18
+ strb r3, [r2, #0xa]
+ lsr r0, r0, #0x18
+ strb r0, [r2, #0xb]
+ strb r3, [r2, #0xc]
+ strb r0, [r2, #0xd]
+ ldr r0, [sp, #0x2c]
+ strb r0, [r2, #0xe]
+ ldr r0, [sp, #0x30]
+ strb r0, [r2, #0xf]
+ ldr r0, _0201BE94 ; =0x02105BB4
+ ldr r3, [r0, #0x0]
+ lsl r0, r1, #0x3
+ add r0, r3, r0
+ ldrb r0, [r0, #0x4]
+ ldr r1, [sp, #0x28]
+ strb r0, [r2, #0x10]
+ lsr r0, r1, #0x10
+ strb r0, [r2, #0x11]
+ lsr r0, r1, #0x8
+ strb r0, [r2, #0x13]
+ strb r1, [r2, #0x12]
+ mov r0, #0x0
+ strh r0, [r2, #0x14]
+ strb r0, [r2, #0x16]
+ mov r0, #0xff
+ strb r0, [r2, #0x17]
+ ldr r1, [sp, #0x24]
+ ldr r2, [sp, #0x34]
+ add r0, sp, #0x0
+ bl FUN_0201BE98
+ add sp, #0x18
+ pop {r3, pc}
+ nop
+_0201BE94: .word 0x02105BB4
+
+ thumb_func_start FUN_0201BE98
+FUN_0201BE98: ; 0x0201BE98
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ ldr r0, _0201BFD0 ; =0x02105BB4
+ add r6, r1, #0x0
+ ldr r0, [r0, #0x0]
+ add r5, r2, #0x0
+ cmp r0, #0x0
+ bne _0201BEAC
+ mov r0, #0xff
+ pop {r3-r7, pc}
+_0201BEAC:
+ mov r0, #0x0
+ mov r1, #0x30
+ bl FUN_02016998
+ add r4, r0, #0x0
+ mov r1, #0x1
+ add r0, #0x23
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ mov r3, #0x0
+ add r0, #0x24
+ strb r3, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x25
+ ldrb r2, [r0, #0x0]
+ mov r0, #0x7f
+ bic r2, r0
+ lsl r0, r6, #0x18
+ lsr r1, r0, #0x18
+ mov r0, #0x7f
+ and r0, r1
+ add r1, r2, #0x0
+ orr r1, r0
+ add r0, r4, #0x0
+ add r0, #0x25
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x26
+ strb r3, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x27
+ strb r3, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x29
+ strb r3, [r0, #0x0]
+ add r1, r3, #0x0
+_0201BEF4:
+ add r0, r4, r3
+ add r3, r3, #0x1
+ strb r1, [r0, #0x1c]
+ cmp r3, #0x7
+ blt _0201BEF4
+ add r3, r7, #0x0
+ add r2, r4, #0x0
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldr r0, [r4, #0x0]
+ bl FUN_02021F2C
+ str r0, [r4, #0x0]
+ ldr r0, _0201BFD4 ; =0x021C570C
+ str r5, [r4, #0x18]
+ mov r1, #0x0
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ bl FUN_0201C1A8
+ cmp r6, #0xff
+ beq _0201BF74
+ cmp r6, #0x0
+ beq _0201BF74
+ add r0, r4, #0x0
+ add r0, #0x25
+ ldrb r2, [r0, #0x0]
+ mov r1, #0x7f
+ add r0, r2, #0x0
+ bic r0, r1
+ lsl r1, r2, #0x19
+ lsr r1, r1, #0x19
+ add r1, #0xff
+ lsl r1, r1, #0x18
+ lsr r2, r1, #0x18
+ mov r1, #0x7f
+ and r1, r2
+ orr r1, r0
+ add r0, r4, #0x0
+ add r0, #0x25
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x25
+ ldrb r1, [r0, #0x0]
+ mov r0, #0x80
+ mov r2, #0x1
+ orr r1, r0
+ add r0, r4, #0x0
+ add r0, #0x25
+ strb r1, [r0, #0x0]
+ ldr r0, _0201BFD8 ; =FUN_0201BFDC
+ add r1, r4, #0x0
+ bl FUN_0201BCC8
+ add r1, r4, #0x0
+ add r1, #0x28
+ strb r0, [r1, #0x0]
+ add r4, #0x28
+ ldrb r0, [r4, #0x0]
+ pop {r3-r7, pc}
+_0201BF74:
+ add r0, r4, #0x0
+ add r0, #0x25
+ ldrb r1, [r0, #0x0]
+ mov r0, #0x7f
+ mov r5, #0x0
+ bic r1, r0
+ add r0, r4, #0x0
+ add r0, #0x25
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x25
+ ldrb r1, [r0, #0x0]
+ mov r0, #0x80
+ bic r1, r0
+ add r0, r4, #0x0
+ add r0, #0x25
+ strb r1, [r0, #0x0]
+ ldrb r0, [r7, #0x11]
+ ldrb r1, [r7, #0x12]
+ ldrb r2, [r7, #0x13]
+ bl FUN_0201C05C
+ mov r7, #0x1
+ lsl r7, r7, #0xa
+_0201BFA4:
+ add r0, r4, #0x0
+ bl FUN_0201C048
+ cmp r0, #0x1
+ beq _0201BFB4
+ add r5, r5, #0x1
+ cmp r5, r7
+ blo _0201BFA4
+_0201BFB4:
+ cmp r6, #0xff
+ beq _0201BFBE
+ ldr r0, [r4, #0x4]
+ bl FUN_020191D0
+_0201BFBE:
+ add r0, r4, #0x0
+ bl FUN_0201C238
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0x8
+ pop {r3-r7, pc}
+ nop
+_0201BFD0: .word 0x02105BB4
+_0201BFD4: .word 0x021C570C
+_0201BFD8: .word FUN_0201BFDC
+
+ thumb_func_start FUN_0201BFDC
+FUN_0201BFDC: ; 0x0201BFDC
+ push {r4, lr}
+ ldr r0, _0201C044 ; =0x021C570C
+ add r4, r1, #0x0
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _0201C042
+ add r0, r4, #0x0
+ add r0, #0x29
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _0201C036
+ mov r0, #0x0
+ strh r0, [r4, #0x2a]
+ ldrb r0, [r4, #0x11]
+ ldrb r1, [r4, #0x12]
+ ldrb r2, [r4, #0x13]
+ bl FUN_0201C05C
+ add r0, r4, #0x0
+ bl FUN_0201C048
+ cmp r0, #0x0
+ beq _0201C014
+ cmp r0, #0x1
+ beq _0201C02C
+ cmp r0, #0x3
+ beq _0201C01A
+ pop {r4, pc}
+_0201C014:
+ ldr r0, [r4, #0x4]
+ bl FUN_020191D0
+_0201C01A:
+ ldr r2, [r4, #0x18]
+ cmp r2, #0x0
+ beq _0201C042
+ ldrh r1, [r4, #0x2a]
+ add r0, r4, #0x0
+ blx r2
+ add r4, #0x29
+ strb r0, [r4, #0x0]
+ pop {r4, pc}
+_0201C02C:
+ add r4, #0x28
+ ldrb r0, [r4, #0x0]
+ bl FUN_0201BCFC
+ pop {r4, pc}
+_0201C036:
+ ldrh r1, [r4, #0x2a]
+ ldr r2, [r4, #0x18]
+ add r0, r4, #0x0
+ blx r2
+ add r4, #0x29
+ strb r0, [r4, #0x0]
+_0201C042:
+ pop {r4, pc}
+ .balign 4
+_0201C044: .word 0x021C570C
+
+ thumb_func_start FUN_0201C048
+FUN_0201C048: ; 0x0201C048
+ push {r4, lr}
+ add r4, r0, #0x0
+_0201C04C:
+ ldrb r0, [r4, #0x9]
+ add r1, r4, #0x0
+ bl FUN_02002DB0
+ cmp r0, #0x2
+ beq _0201C04C
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201C05C
+FUN_0201C05C: ; 0x0201C05C
+ push {r3-r7, lr}
+ sub sp, #0x30
+ ldr r3, _0201C0F8 ; =0x021C570C
+ mov r5, #0x0
+ str r5, [sp, #0x20]
+ str r0, [sp, #0x24]
+ str r2, [sp, #0x28]
+ str r1, [sp, #0x2c]
+ strh r1, [r3, #0x6]
+ strh r0, [r3, #0x2]
+ add r0, sp, #0x20
+ strh r2, [r3, #0x4]
+ str r5, [sp, #0x14]
+ str r0, [sp, #0x8]
+ mov r12, r0
+ mov lr, r0
+ str r0, [sp, #0x18]
+_0201C07E:
+ mov r0, #0x0
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x18]
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x8]
+ ldr r0, [r0, #0x0]
+ str r0, [sp, #0x1c]
+_0201C08C:
+ mov r0, #0x0
+ str r0, [sp, #0xc]
+ mov r0, lr
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x4]
+ ldr r0, [r0, #0x0]
+ lsl r7, r0, #0x4
+_0201C09A:
+ ldr r0, [sp, #0x0]
+ mov r3, #0x0
+ ldr r0, [r0, #0x0]
+ mov r4, r12
+ lsl r6, r0, #0x8
+_0201C0A4:
+ ldr r0, [r4, #0x0]
+ add r1, r7, #0x0
+ lsl r0, r0, #0xc
+ orr r0, r6
+ orr r1, r0
+ ldr r0, [sp, #0x1c]
+ add r3, r3, #0x1
+ add r2, r0, #0x0
+ orr r2, r1
+ lsl r1, r5, #0x1
+ ldr r0, _0201C0FC ; =0x021C5734
+ add r5, r5, #0x1
+ add r4, r4, #0x4
+ strh r2, [r0, r1]
+ cmp r3, #0x4
+ blt _0201C0A4
+ ldr r0, [sp, #0x0]
+ add r0, r0, #0x4
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0xc]
+ add r0, r0, #0x1
+ str r0, [sp, #0xc]
+ cmp r0, #0x4
+ blt _0201C09A
+ ldr r0, [sp, #0x4]
+ add r0, r0, #0x4
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x10]
+ add r0, r0, #0x1
+ str r0, [sp, #0x10]
+ cmp r0, #0x4
+ blt _0201C08C
+ ldr r0, [sp, #0x8]
+ add r0, r0, #0x4
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x14]
+ add r0, r0, #0x1
+ str r0, [sp, #0x14]
+ cmp r0, #0x4
+ blt _0201C07E
+ add sp, #0x30
+ pop {r3-r7, pc}
+ .balign 4
+_0201C0F8: .word 0x021C570C
+_0201C0FC: .word 0x021C5734
+
+ thumb_func_start FUN_0201C100
+FUN_0201C100: ; 0x0201C100
+ ldrh r2, [r0, #0x0]
+ lsr r2, r2, #0x8
+ lsl r3, r2, #0x1
+ ldr r2, _0201C1A4 ; =0x021C5734
+ ldrh r3, [r2, r3]
+ strh r3, [r1, #0x0]
+ ldrh r3, [r0, #0x0]
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x17
+ ldrh r3, [r2, r3]
+ strh r3, [r1, #0x2]
+ ldrh r3, [r0, #0x2]
+ lsr r3, r3, #0x8
+ lsl r3, r3, #0x1
+ ldrh r3, [r2, r3]
+ strh r3, [r1, #0x4]
+ ldrh r3, [r0, #0x2]
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x17
+ ldrh r3, [r2, r3]
+ strh r3, [r1, #0x6]
+ ldrh r3, [r0, #0x4]
+ lsr r3, r3, #0x8
+ lsl r3, r3, #0x1
+ ldrh r3, [r2, r3]
+ strh r3, [r1, #0x8]
+ ldrh r3, [r0, #0x4]
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x17
+ ldrh r3, [r2, r3]
+ strh r3, [r1, #0xa]
+ ldrh r3, [r0, #0x6]
+ lsr r3, r3, #0x8
+ lsl r3, r3, #0x1
+ ldrh r3, [r2, r3]
+ strh r3, [r1, #0xc]
+ ldrh r3, [r0, #0x6]
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x17
+ ldrh r3, [r2, r3]
+ strh r3, [r1, #0xe]
+ ldrh r3, [r0, #0x8]
+ lsr r3, r3, #0x8
+ lsl r3, r3, #0x1
+ ldrh r3, [r2, r3]
+ strh r3, [r1, #0x10]
+ ldrh r3, [r0, #0x8]
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x17
+ ldrh r3, [r2, r3]
+ strh r3, [r1, #0x12]
+ ldrh r3, [r0, #0xa]
+ lsr r3, r3, #0x8
+ lsl r3, r3, #0x1
+ ldrh r3, [r2, r3]
+ strh r3, [r1, #0x14]
+ ldrh r3, [r0, #0xa]
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x17
+ ldrh r3, [r2, r3]
+ strh r3, [r1, #0x16]
+ ldrh r3, [r0, #0xc]
+ lsr r3, r3, #0x8
+ lsl r3, r3, #0x1
+ ldrh r3, [r2, r3]
+ strh r3, [r1, #0x18]
+ ldrh r3, [r0, #0xc]
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x17
+ ldrh r3, [r2, r3]
+ strh r3, [r1, #0x1a]
+ ldrh r3, [r0, #0xe]
+ lsr r3, r3, #0x8
+ lsl r3, r3, #0x1
+ ldrh r3, [r2, r3]
+ strh r3, [r1, #0x1c]
+ ldrh r0, [r0, #0xe]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x17
+ ldrh r0, [r2, r0]
+ strh r0, [r1, #0x1e]
+ bx lr
+ .balign 4
+_0201C1A4: .word 0x021C5734
+
+ thumb_func_start FUN_0201C1A8
+FUN_0201C1A8: ; 0x0201C1A8
+ mov r1, #0x0
+ str r1, [r0, #0x2c]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0201C1B0
+FUN_0201C1B0: ; 0x0201C1B0
+ push {r3-r5, lr}
+ sub sp, #0x8
+ mov r1, #0x6
+ mov r0, #0x0
+ lsl r1, r1, #0x8
+ bl FUN_02016998
+ mov r2, #0x0
+ add r5, r0, #0x0
+ str r2, [sp, #0x0]
+ mov r0, #0xe
+ mov r1, #0x5
+ add r3, sp, #0x4
+ bl FUN_02006BB0
+ add r4, r0, #0x0
+ ldr r0, [sp, #0x4]
+ mov r2, #0x6
+ ldr r0, [r0, #0x14]
+ add r1, r5, #0x0
+ lsl r2, r2, #0x8
+ blx MIi_CpuCopy32
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add r0, r5, #0x0
+ add sp, #0x8
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201C1EC
+FUN_0201C1EC: ; 0x0201C1EC
+ push {r3-r7, lr}
+ sub sp, #0x18
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x2c]
+ add r7, r3, #0x0
+ ldr r5, [r4, #0x4]
+ cmp r0, #0x0
+ bne _0201C202
+ bl FUN_0201C1B0
+ str r0, [r4, #0x2c]
+_0201C202:
+ mov r0, #0x6
+ lsl r0, r0, #0x6
+ add r6, r7, #0x0
+ mul r6, r0
+ add r0, r5, #0x0
+ ldr r4, [r4, #0x2c]
+ bl FUN_0201AB0C
+ sub r0, r0, #0x3
+ lsl r0, r0, #0x13
+ mov r1, #0x18
+ lsr r2, r0, #0x10
+ str r1, [sp, #0x0]
+ mov r0, #0x20
+ str r0, [sp, #0x4]
+ str r2, [sp, #0x8]
+ mov r2, #0x0
+ str r2, [sp, #0xc]
+ str r1, [sp, #0x10]
+ str r0, [sp, #0x14]
+ add r0, r5, #0x0
+ add r1, r4, r6
+ add r3, r2, #0x0
+ bl FUN_02019658
+ add sp, #0x18
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0201C238
+FUN_0201C238: ; 0x0201C238
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x2c]
+ cmp r0, #0x0
+ beq _0201C24A
+ bl FUN_02016A18
+ mov r0, #0x0
+ str r0, [r4, #0x2c]
+_0201C24A:
+ pop {r4, pc}
+
+ thumb_func_start FUN_0201C24C
+FUN_0201C24C: ; 0x0201C24C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, _0201C298 ; =0x021C5934
+ add r4, r1, #0x0
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _0201C25E
+ bl ErrorHandling
+_0201C25E:
+ add r0, r4, #0x0
+ mov r1, #0xc
+ bl FUN_02016998
+ ldr r1, _0201C298 ; =0x021C5934
+ cmp r0, #0x0
+ str r0, [r1, #0x0]
+ bne _0201C272
+ bl ErrorHandling
+_0201C272:
+ add r0, r4, #0x0
+ lsl r1, r5, #0x4
+ bl FUN_02016998
+ ldr r1, _0201C298 ; =0x021C5934
+ ldr r2, [r1, #0x0]
+ str r0, [r2, #0x8]
+ ldr r0, [r1, #0x0]
+ mov r2, #0x0
+ str r5, [r0, #0x0]
+ ldr r0, [r1, #0x0]
+ str r2, [r0, #0x4]
+ ldr r1, [r1, #0x0]
+ ldr r0, [r1, #0x8]
+ ldr r1, [r1, #0x0]
+ blx FUN_020AEF1C
+ pop {r3-r5, pc}
+ nop
+_0201C298: .word 0x021C5934
+
+ thumb_func_start FUN_0201C29C
+FUN_0201C29C: ; 0x0201C29C
+ push {r3, lr}
+ ldr r0, _0201C2C4 ; =0x021C5934
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _0201C2AA
+ bl ErrorHandling
+_0201C2AA:
+ ldr r0, _0201C2C4 ; =0x021C5934
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x8]
+ bl FUN_02016A18
+ ldr r0, _0201C2C4 ; =0x021C5934
+ ldr r0, [r0, #0x0]
+ bl FUN_02016A18
+ ldr r0, _0201C2C4 ; =0x021C5934
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+ pop {r3, pc}
+ .balign 4
+_0201C2C4: .word 0x021C5934
+
+ thumb_func_start FUN_0201C2C8
+FUN_0201C2C8: ; 0x0201C2C8
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldr r0, _0201C308 ; =0x021C5934
+ add r4, r1, #0x0
+ ldr r0, [r0, #0x0]
+ add r6, r2, #0x0
+ add r7, r3, #0x0
+ cmp r0, #0x0
+ bne _0201C2DE
+ bl ErrorHandling
+_0201C2DE:
+ ldr r1, _0201C308 ; =0x021C5934
+ ldr r0, [r1, #0x0]
+ ldr r2, [r0, #0x4]
+ add r2, r2, #0x1
+ str r2, [r0, #0x4]
+ ldr r0, [r1, #0x0]
+ ldr r1, [r0, #0x4]
+ ldr r0, [r0, #0x0]
+ cmp r1, r0
+ blo _0201C2FA
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0201C2FA:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ add r3, r7, #0x0
+ blx FUN_020AEE40
+ pop {r3-r7, pc}
+ .balign 4
+_0201C308: .word 0x021C5934
+
+ thumb_func_start FUN_0201C30C
+FUN_0201C30C: ; 0x0201C30C
+ push {r3, lr}
+ ldr r0, _0201C324 ; =0x021C5934
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _0201C322
+ blx FUN_020AEEB8
+ ldr r0, _0201C324 ; =0x021C5934
+ mov r1, #0x0
+ ldr r0, [r0, #0x0]
+ str r1, [r0, #0x4]
+_0201C322:
+ pop {r3, pc}
+ .balign 4
+_0201C324: .word 0x021C5934
+
+ thumb_func_start FUN_0201C328
+FUN_0201C328: ; 0x0201C328
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ add r0, r1, #0x0
+ mov r1, #0x30
+ mul r1, r4
+ bl FUN_02016998
+ ldr r2, _0201C344 ; =FUN_0201C358
+ add r1, r4, #0x0
+ add r5, r0, #0x0
+ blx FUN_020B4568
+ add r0, r5, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+_0201C344: .word FUN_0201C358
+
+ thumb_func_start FUN_0201C348
+FUN_0201C348: ; 0x0201C348
+ ldr r3, _0201C34C ; =FUN_020B442C
+ bx r3
+ .balign 4
+_0201C34C: .word FUN_020B442C
+
+ thumb_func_start FUN_0201C350
+FUN_0201C350: ; 0x0201C350
+ ldr r3, _0201C354 ; =FUN_02016A18
+ bx r3
+ .balign 4
+_0201C354: .word FUN_02016A18
+
+ thumb_func_start FUN_0201C358
+FUN_0201C358: ; 0x0201C358
+ push {r3, lr}
+ bl FUN_0201C2C8
+ pop {r3, pc}
+
+ thumb_func_start FUN_0201C360
+FUN_0201C360: ; 0x0201C360
+ push {r4-r6, lr}
+ add r6, r1, #0x0
+ add r5, r0, #0x0
+ add r0, r6, #0x0
+ mov r1, #0x8
+ bl FUN_02016998
+ mov r1, #0x14
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ mul r1, r5
+ bl FUN_02016998
+ str r0, [r4, #0x0]
+ mov r6, #0x0
+ str r5, [r4, #0x4]
+ cmp r5, #0x0
+ ble _0201C398
+ add r5, r6, #0x0
+_0201C386:
+ ldr r0, [r4, #0x0]
+ add r0, r0, r5
+ bl FUN_0201C444
+ ldr r0, [r4, #0x4]
+ add r6, r6, #0x1
+ add r5, #0x14
+ cmp r6, r0
+ blt _0201C386
+_0201C398:
+ add r0, r4, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0201C39C
+FUN_0201C39C: ; 0x0201C39C
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_0201C414
+ ldr r0, [r4, #0x0]
+ bl FUN_02016A18
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201C3B4
+FUN_0201C3B4: ; 0x0201C3B4
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x4]
+ mov r4, #0x0
+ add r7, r2, #0x0
+ mov r12, r1
+ add r6, r3, #0x0
+ add r2, r4, #0x0
+ cmp r0, #0x0
+ ble _0201C3E2
+ ldr r5, [r5, #0x0]
+ add r3, r5, #0x0
+_0201C3CC:
+ ldr r1, [r3, #0x0]
+ cmp r1, #0x0
+ bne _0201C3DA
+ mov r0, #0x14
+ mul r0, r2
+ add r4, r5, r0
+ b _0201C3E2
+_0201C3DA:
+ add r2, r2, #0x1
+ add r3, #0x14
+ cmp r2, r0
+ blt _0201C3CC
+_0201C3E2:
+ cmp r4, #0x0
+ bne _0201C3EA
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0201C3EA:
+ mov r0, r12
+ str r0, [r4, #0x0]
+ str r7, [r4, #0x4]
+ ldr r1, [sp, #0x1c]
+ ldr r0, [sp, #0x18]
+ str r6, [r4, #0x8]
+ str r0, [r4, #0xc]
+ mov r0, #0xff
+ strb r0, [r4, #0x10]
+ lsl r1, r1, #0x4
+ strb r0, [r4, #0x11]
+ add r0, r4, #0x0
+ lsr r1, r1, #0x10
+ bl FUN_0201C454
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0201C40C
+FUN_0201C40C: ; 0x0201C40C
+ ldr r3, _0201C410 ; =FUN_0201C444
+ bx r3
+ .balign 4
+_0201C410: .word FUN_0201C444
+
+ thumb_func_start FUN_0201C414
+FUN_0201C414: ; 0x0201C414
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x4]
+ mov r6, #0x0
+ cmp r0, #0x0
+ ble _0201C434
+ add r4, r6, #0x0
+_0201C422:
+ ldr r0, [r5, #0x0]
+ add r0, r0, r4
+ bl FUN_0201C444
+ ldr r0, [r5, #0x4]
+ add r6, r6, #0x1
+ add r4, #0x14
+ cmp r6, r0
+ blt _0201C422
+_0201C434:
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201C438
+FUN_0201C438: ; 0x0201C438
+ ldr r3, _0201C440 ; =FUN_0201C454
+ lsl r1, r1, #0x4
+ lsr r1, r1, #0x10
+ bx r3
+ .balign 4
+_0201C440: .word FUN_0201C454
+
+ thumb_func_start FUN_0201C444
+FUN_0201C444: ; 0x0201C444
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+ str r1, [r0, #0x4]
+ str r1, [r0, #0x8]
+ str r1, [r0, #0xc]
+ strb r1, [r0, #0x10]
+ strb r1, [r0, #0x11]
+ bx lr
+
+ thumb_func_start FUN_0201C454
+FUN_0201C454: ; 0x0201C454
+ push {r3-r4, lr}
+ sub sp, #0x4
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_02022244
+ add r2, sp, #0x0
+ strb r0, [r2, #0x0]
+ lsr r0, r0, #0x8
+ strb r0, [r2, #0x1]
+ ldrb r0, [r2, #0x0]
+ add r1, sp, #0x0
+ add r1, #0x2
+ strb r0, [r2, #0x2]
+ ldrb r0, [r2, #0x1]
+ strb r0, [r2, #0x3]
+ ldrb r3, [r4, #0x10]
+ ldrb r0, [r2, #0x2]
+ cmp r3, r0
+ beq _0201C482
+ add r0, r4, #0x0
+ bl FUN_0201C49C
+_0201C482:
+ add r0, sp, #0x0
+ ldrb r1, [r4, #0x11]
+ ldrb r0, [r0, #0x3]
+ cmp r1, r0
+ beq _0201C496
+ add r1, sp, #0x0
+ add r0, r4, #0x0
+ add r1, #0x2
+ bl FUN_0201C4C8
+_0201C496:
+ add sp, #0x4
+ pop {r3-r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201C49C
+FUN_0201C49C: ; 0x0201C49C
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_0201C4F4
+ ldr r3, [r5, #0x8]
+ add r2, r0, #0x0
+ lsl r1, r3, #0x10
+ ldr r6, _0201C4C4 ; =0x7FFF0000
+ mov r0, #0x0
+ and r3, r6
+ lsr r3, r3, #0x10
+ lsr r1, r1, #0xd
+ lsl r3, r3, #0x4
+ bl FUN_0201C2C8
+ ldrb r0, [r4, #0x0]
+ strb r0, [r5, #0x10]
+ pop {r4-r6, pc}
+ nop
+_0201C4C4: .word 0x7FFF0000
+
+ thumb_func_start FUN_0201C4C8
+FUN_0201C4C8: ; 0x0201C4C8
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_0201C500
+ ldr r3, [r5, #0xc]
+ add r2, r0, #0x0
+ lsl r1, r3, #0x10
+ ldr r6, _0201C4F0 ; =0xFFFF0000
+ mov r0, #0x1
+ and r3, r6
+ lsr r3, r3, #0x10
+ lsr r1, r1, #0xd
+ lsl r3, r3, #0x3
+ bl FUN_0201C2C8
+ ldrb r0, [r4, #0x1]
+ strb r0, [r5, #0x11]
+ pop {r4-r6, pc}
+ nop
+_0201C4F0: .word 0xFFFF0000
+
+ thumb_func_start FUN_0201C4F4
+FUN_0201C4F4: ; 0x0201C4F4
+ ldr r3, _0201C4FC ; =0x0201C50D
+ ldr r0, [r0, #0x4]
+ ldrb r1, [r1, #0x0]
+ bx r3
+ .balign 4
+_0201C4FC: .word 0x0201C50D
+
+ thumb_func_start FUN_0201C500
+FUN_0201C500: ; 0x0201C500
+ ldr r3, _0201C508 ; =0x0201C541
+ ldr r0, [r0, #0x4]
+ ldrb r1, [r1, #0x1]
+ bx r3
+ .balign 4
+_0201C508: .word 0x0201C541
+
+ thumb_func_start FUN_0201C50C
+FUN_0201C50C: ; 0x0201C50C
+ push {r3-r4}
+ add r2, r0, #0x0
+ add r2, #0x42
+ ldrh r2, [r2, #0x0]
+ add r4, r0, #0x0
+ add r4, #0x3c
+ add r3, r4, r2
+ ldrh r2, [r4, r2]
+ add r3, r3, #0x4
+ mul r1, r2
+ add r3, r3, r1
+ bne _0201C52A
+ mov r0, #0x0
+ pop {r3-r4}
+ bx lr
+_0201C52A:
+ ldr r1, [r0, #0x14]
+ add r2, r0, r1
+ ldr r1, [r3, #0x0]
+ ldr r0, [r0, #0x8]
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ add r0, r1, r0
+ lsl r0, r0, #0x3
+ add r0, r2, r0
+ pop {r3-r4}
+ bx lr
+
+ thumb_func_start FUN_0201C540
+FUN_0201C540: ; 0x0201C540
+ push {r3-r4}
+ ldrh r2, [r0, #0x34]
+ add r4, r0, r2
+ ldrh r2, [r4, #0x6]
+ add r3, r4, r2
+ ldrh r2, [r4, r2]
+ add r3, r3, #0x4
+ mul r1, r2
+ add r2, r3, r1
+ bne _0201C55A
+ mov r0, #0x0
+ pop {r3-r4}
+ bx lr
+_0201C55A:
+ ldr r1, [r0, #0x38]
+ add r1, r0, r1
+ ldrh r0, [r2, #0x0]
+ lsl r0, r0, #0x3
+ add r0, r1, r0
+ pop {r3-r4}
+ bx lr
+
+ thumb_func_start FUN_0201C568
+FUN_0201C568: ; 0x0201C568
+ ldr r1, [r1, #0x0]
+ ldr r0, [r0, #0x8]
+ lsl r1, r1, #0x10
+ lsl r0, r0, #0x10
+ lsr r1, r1, #0xd
+ lsr r0, r0, #0xd
+ add r0, r1, r0
+ bx lr
+
+ thumb_func_start FUN_0201C578
+FUN_0201C578: ; 0x0201C578
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0x0
+ add r0, sp, #0x0
+ bl FUN_0201C750
+ add r0, r4, #0x0
+ add r0, #0x3c
+ add r1, sp, #0x0
+ blx FUN_020BC2A0
+ add r1, r0, #0x0
+ bne _0201C598
+ add sp, #0x10
+ mov r0, #0x0
+ pop {r4, pc}
+_0201C598:
+ add r0, r4, #0x0
+ bl FUN_0201C568
+ add sp, #0x10
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201C5A4
+FUN_0201C5A4: ; 0x0201C5A4
+ push {r3, lr}
+ ldr r0, [r1, #0x0]
+ mov r1, #0x7
+ lsl r1, r1, #0x1a
+ and r1, r0
+ lsr r1, r1, #0x1a
+ cmp r1, #0x4
+ bhi _0201C5DA
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0201C5C0: ; jump table (using 16-bit offset)
+ .short _0201C5DA - _0201C5C0 - 2; case 0
+ .short _0201C5D6 - _0201C5C0 - 2; case 1
+ .short _0201C5CA - _0201C5C0 - 2; case 2
+ .short _0201C5CE - _0201C5C0 - 2; case 3
+ .short _0201C5D2 - _0201C5C0 - 2; case 4
+_0201C5CA:
+ mov r1, #0x4
+ b _0201C5DE
+_0201C5CE:
+ mov r1, #0x2
+ b _0201C5DE
+_0201C5D2:
+ mov r1, #0x1
+ b _0201C5DE
+_0201C5D6:
+ mov r1, #0x1
+ b _0201C5DE
+_0201C5DA:
+ mov r0, #0x0
+ pop {r3, pc}
+_0201C5DE:
+ mov r3, #0x7
+ lsl r3, r3, #0x14
+ add r2, r0, #0x0
+ and r2, r3
+ lsl r3, r3, #0x3
+ and r0, r3
+ lsr r2, r2, #0x14
+ lsr r0, r0, #0x17
+ lsl r2, r2, #0x4
+ lsl r0, r0, #0x4
+ mul r0, r2
+ blx _u32_div_f
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201C5FC
+FUN_0201C5FC: ; 0x0201C5FC
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0x0
+ add r0, sp, #0x0
+ bl FUN_0201C750
+ add r0, r4, #0x0
+ add r0, #0x3c
+ add r1, sp, #0x0
+ blx FUN_020BC2A0
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0201C5A4
+ add sp, #0x10
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201C620
+FUN_0201C620: ; 0x0201C620
+ ldrb r3, [r0, #0x0]
+ strb r3, [r1, #0x0]
+ ldrb r0, [r0, #0x1]
+ strb r0, [r2, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0201C62C
+FUN_0201C62C: ; 0x0201C62C
+ ldrb r3, [r0, #0x2]
+ strb r3, [r1, #0x0]
+ ldrb r0, [r0, #0x3]
+ strb r0, [r2, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0201C638
+FUN_0201C638: ; 0x0201C638
+ push {r4-r5}
+ ldr r5, _0201C6B0 ; =0xFFFFFFF8
+ ldr r4, [sp, #0xc]
+ add r5, sp
+ ldrb r5, [r5, #0x18]
+ cmp r5, #0x3
+ bhi _0201C678
+ add r5, r5, r5
+ add r5, pc
+ ldrh r5, [r5, #0x6]
+ lsl r5, r5, #0x10
+ asr r5, r5, #0x10
+ add pc, r5
+_0201C652: ; jump table (using 16-bit offset)
+ .short _0201C65A - _0201C652 - 2; case 0
+ .short _0201C662 - _0201C652 - 2; case 1
+ .short _0201C66A - _0201C652 - 2; case 2
+ .short _0201C672 - _0201C652 - 2; case 3
+_0201C65A:
+ lsl r4, r4, #0x3
+ add r4, r0, r4
+ ldrb r4, [r4, #0x4]
+ b _0201C678
+_0201C662:
+ lsl r4, r4, #0x3
+ add r4, r0, r4
+ ldrb r4, [r4, #0x5]
+ b _0201C678
+_0201C66A:
+ lsl r4, r4, #0x3
+ add r4, r0, r4
+ ldrb r4, [r4, #0x6]
+ b _0201C678
+_0201C672:
+ lsl r4, r4, #0x3
+ add r4, r0, r4
+ ldrb r4, [r4, #0x7]
+_0201C678:
+ cmp r1, #0x0
+ beq _0201C682
+ lsl r5, r4, #0x3
+ ldrb r5, [r0, r5]
+ strb r5, [r1, #0x0]
+_0201C682:
+ cmp r2, #0x0
+ beq _0201C68E
+ lsl r1, r4, #0x3
+ add r1, r0, r1
+ ldrb r1, [r1, #0x1]
+ strb r1, [r2, #0x0]
+_0201C68E:
+ cmp r3, #0x0
+ beq _0201C69A
+ lsl r1, r4, #0x3
+ add r1, r0, r1
+ ldrb r1, [r1, #0x2]
+ strb r1, [r3, #0x0]
+_0201C69A:
+ ldr r2, [sp, #0x8]
+ cmp r2, #0x0
+ beq _0201C6A8
+ lsl r1, r4, #0x3
+ add r0, r0, r1
+ ldrb r0, [r0, #0x3]
+ strb r0, [r2, #0x0]
+_0201C6A8:
+ add r0, r4, #0x0
+ pop {r4-r5}
+ bx lr
+ nop
+_0201C6B0: .word 0xFFFFFFF8
+
+ thumb_func_start FUN_0201C6B4
+FUN_0201C6B4: ; 0x0201C6B4
+ mov r2, #0x0
+ ldrsb r1, [r0, r2]
+ cmp r1, #0x0
+ beq _0201C6C4
+_0201C6BC:
+ add r2, r2, #0x1
+ ldrsb r1, [r0, r2]
+ cmp r1, #0x0
+ bne _0201C6BC
+_0201C6C4:
+ add r0, r2, #0x0
+ bx lr
+
+ thumb_func_start FUN_0201C6C8
+FUN_0201C6C8: ; 0x0201C6C8
+ push {r4-r5}
+ mov r4, #0x1
+ mov r3, #0x0
+ lsl r4, r4, #0x8
+_0201C6D0:
+ ldrsb r5, [r0, r3]
+ strb r5, [r1, r3]
+ ldrsb r5, [r0, r3]
+ cmp r2, r5
+ beq _0201C6DE
+ cmp r5, #0x0
+ bne _0201C6FE
+_0201C6DE:
+ mov r4, #0x0
+ strb r4, [r1, r3]
+ cmp r2, #0xd
+ bne _0201C6F6
+ add r1, r3, #0x1
+ ldrsb r1, [r0, r1]
+ cmp r1, #0xa
+ bne _0201C6F6
+ add r1, r3, #0x2
+ add r0, r0, r1
+ pop {r4-r5}
+ bx lr
+_0201C6F6:
+ add r1, r3, #0x1
+ add r0, r0, r1
+ pop {r4-r5}
+ bx lr
+_0201C6FE:
+ add r3, r3, #0x1
+ cmp r3, r4
+ blt _0201C6D0
+ mov r0, #0x0
+ pop {r4-r5}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0201C70C
+FUN_0201C70C: ; 0x0201C70C
+ push {r4-r6, lr}
+ add r4, r0, #0x0
+ bl FUN_0201C6B4
+ mov r5, #0x1
+ mov r6, #0x0
+ sub r3, r0, #0x1
+ bmi _0201C74A
+ sub r1, r6, #0x1
+ mov r0, #0xa
+_0201C720:
+ ldrsb r2, [r4, r3]
+ cmp r2, #0x30
+ blt _0201C732
+ cmp r2, #0x39
+ bgt _0201C732
+ sub r2, #0x30
+ mul r2, r5
+ add r6, r6, r2
+ b _0201C744
+_0201C732:
+ cmp r3, #0x0
+ bne _0201C73E
+ cmp r2, #0x2d
+ bne _0201C744
+ mul r6, r1
+ b _0201C744
+_0201C73E:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4-r6, pc}
+_0201C744:
+ mul r5, r0
+ sub r3, r3, #0x1
+ bpl _0201C720
+_0201C74A:
+ add r0, r6, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201C750
+FUN_0201C750: ; 0x0201C750
+ push {r3-r5, lr}
+ mov r2, #0x0
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r1, r2, #0x0
+_0201C75A:
+ lsl r0, r2, #0x2
+ str r1, [r5, r0]
+ add r0, r2, #0x1
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ cmp r2, #0x4
+ blo _0201C75A
+ add r0, r4, #0x0
+ bl FUN_0201C6B4
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ ldr r2, _0201C788 ; =0x00000000
+ beq _0201C784
+_0201C776:
+ ldrsb r0, [r4, r2]
+ strb r0, [r5, r2]
+ add r0, r2, #0x1
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ cmp r2, r1
+ blo _0201C776
+_0201C784:
+ pop {r3-r5, pc}
+ nop
+_0201C788: .word 0x00000000
+
+ thumb_func_start FUN_0201C78C
+FUN_0201C78C: ; 0x0201C78C
+ ldr r1, _0201C79C ; =0x00000121
+ cmp r0, r1
+ bhs _0201C796
+ mov r0, #0x1
+ bx lr
+_0201C796:
+ mov r0, #0x0
+ bx lr
+ nop
+_0201C79C: .word 0x00000121
+
+ thumb_func_start FUN_0201C7A0
+FUN_0201C7A0: ; 0x0201C7A0
+ cmp r0, r1
+ blt _0201C7A6
+ add r0, r1, #0x0
+_0201C7A6:
+ bx lr
+
+ thumb_func_start FUN_0201C7A8
+FUN_0201C7A8: ; 0x0201C7A8
+ cmp r0, r1
+ bgt _0201C7AE
+ add r0, r1, #0x0
+_0201C7AE:
+ bx lr
+
+ thumb_func_start FUN_0201C7B0
+FUN_0201C7B0: ; 0x0201C7B0
+ push {r3-r7, lr}
+ sub sp, #0x30
+ add r4, r1, #0x0
+ add r1, sp, #0x24
+ blx FUN_020C5288
+ add r0, r4, #0x0
+ add r1, sp, #0x18
+ blx FUN_020C5288
+ ldr r0, [sp, #0x24]
+ ldr r4, [sp, #0x18]
+ str r0, [sp, #0x0]
+ asr r0, r0, #0x1f
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x20]
+ asr r6, r4, #0x1f
+ str r0, [sp, #0x8]
+ asr r0, r0, #0x1f
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x2c]
+ ldr r2, [sp, #0x8]
+ asr r7, r0, #0x1f
+ ldr r3, [sp, #0xc]
+ add r1, r7, #0x0
+ str r0, [sp, #0x10]
+ blx _ll_mul
+ str r0, [sp, #0x14]
+ add r5, r1, #0x0
+ ldr r0, [sp, #0x0]
+ ldr r1, [sp, #0x4]
+ add r2, r4, #0x0
+ add r3, r6, #0x0
+ blx _ll_mul
+ mov r2, #0x2
+ ldr r3, [sp, #0x14]
+ lsl r2, r2, #0xa
+ add r3, r3, r2
+ ldr r2, _0201C874 ; =0x00000000
+ adc r5, r2
+ lsl r2, r5, #0x14
+ lsr r3, r3, #0xc
+ orr r3, r2
+ mov r2, #0x2
+ lsl r2, r2, #0xa
+ add r0, r0, r2
+ ldr r2, _0201C874 ; =0x00000000
+ adc r1, r2
+ lsl r1, r1, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r1
+ add r5, r3, r0
+ ldr r0, [sp, #0x10]
+ add r1, r7, #0x0
+ add r2, r4, #0x0
+ add r3, r6, #0x0
+ blx _ll_mul
+ add r6, r0, #0x0
+ add r4, r1, #0x0
+ ldr r0, [sp, #0x0]
+ ldr r1, [sp, #0x4]
+ ldr r2, [sp, #0x8]
+ ldr r3, [sp, #0xc]
+ blx _ll_mul
+ mov r2, #0x2
+ mov r3, #0x0
+ lsl r2, r2, #0xa
+ add r6, r6, r2
+ adc r4, r3
+ lsl r4, r4, #0x14
+ lsr r6, r6, #0xc
+ orr r6, r4
+ add r4, r0, r2
+ adc r1, r3
+ lsl r0, r1, #0x14
+ lsr r1, r4, #0xc
+ orr r1, r0
+ sub r0, r6, r1
+ cmp r5, #0x0
+ bne _0201C86A
+ cmp r0, #0x0
+ ble _0201C862
+ add sp, #0x30
+ lsl r0, r2, #0x3
+ pop {r3-r7, pc}
+_0201C862:
+ mov r0, #0x3
+ add sp, #0x30
+ lsl r0, r0, #0xe
+ pop {r3-r7, pc}
+_0201C86A:
+ add r1, r5, #0x0
+ blx FUN_020C5668
+ add sp, #0x30
+ pop {r3-r7, pc}
+ .balign 4
+_0201C874: .word 0x00000000
+
+ thumb_func_start FUN_0201C878
+FUN_0201C878: ; 0x0201C878
+ push {r0-r3}
+ push {r4-r7, lr}
+ sub sp, #0x54
+ ldr r0, [sp, #0x7c]
+ ldr r2, [sp, #0x80]
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x94]
+ ldr r1, [sp, #0x8c]
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x88]
+ ldr r4, [sp, #0x70]
+ str r0, [sp, #0x10]
+ sub r0, r2, r1
+ str r0, [sp, #0x14]
+ asr r0, r0, #0x1f
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x8]
+ asr r0, r0, #0x1f
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x74]
+ sub r3, r0, r2
+ sub r0, r1, r0
+ str r3, [sp, #0x20]
+ asr r3, r3, #0x1f
+ str r3, [sp, #0x24]
+ ldr r3, [sp, #0xc]
+ str r0, [sp, #0x2c]
+ asr r0, r0, #0x1f
+ str r0, [sp, #0x30]
+ ldr r0, [sp, #0x10]
+ asr r3, r3, #0x1f
+ str r3, [sp, #0x28]
+ asr r0, r0, #0x1f
+ ldr r3, [sp, #0x68]
+ str r0, [sp, #0x34]
+ asr r0, r4, #0x1f
+ str r0, [sp, #0x38]
+ sub r2, r2, r3
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0x1c]
+ asr r3, r2, #0x1f
+ blx _ll_mul
+ add r7, r0, #0x0
+ add r6, r1, #0x0
+ ldr r3, [sp, #0x68]
+ ldr r2, [sp, #0x74]
+ ldr r0, [sp, #0x10]
+ sub r2, r3, r2
+ ldr r1, [sp, #0x34]
+ asr r3, r2, #0x1f
+ blx _ll_mul
+ add r5, r1, #0x0
+ str r0, [sp, #0x3c]
+ ldr r1, [sp, #0x38]
+ ldr r2, [sp, #0x20]
+ ldr r3, [sp, #0x24]
+ add r0, r4, #0x0
+ blx _ll_mul
+ mov r2, #0x2
+ str r0, [sp, #0x4c]
+ add r0, r1, #0x0
+ mov r1, #0x0
+ lsl r2, r2, #0xa
+ add r3, r7, r2
+ adc r6, r1
+ lsl r2, r6, #0x14
+ lsr r3, r3, #0xc
+ orr r3, r2
+ mov r2, #0x2
+ ldr r6, [sp, #0x3c]
+ lsl r2, r2, #0xa
+ add r2, r6, r2
+ adc r5, r1
+ mov r6, #0x2
+ lsl r5, r5, #0x14
+ lsr r2, r2, #0xc
+ orr r2, r5
+ ldr r5, [sp, #0x4c]
+ lsl r6, r6, #0xa
+ add r5, r5, r6
+ adc r0, r1
+ lsl r0, r0, #0x14
+ lsr r1, r5, #0xc
+ orr r1, r0
+ add r0, r2, r1
+ add r0, r3, r0
+ str r0, [sp, #0x4]
+ ldr r3, [sp, #0x8c]
+ ldr r2, [sp, #0x68]
+ ldr r0, [sp, #0x10]
+ sub r2, r3, r2
+ ldr r1, [sp, #0x34]
+ asr r3, r2, #0x1f
+ blx _ll_mul
+ add r7, r0, #0x0
+ add r6, r1, #0x0
+ ldr r3, [sp, #0x68]
+ ldr r2, [sp, #0x80]
+ ldr r0, [sp, #0xc]
+ sub r2, r3, r2
+ ldr r1, [sp, #0x28]
+ asr r3, r2, #0x1f
+ blx _ll_mul
+ str r0, [sp, #0x40]
+ add r5, r1, #0x0
+ ldr r1, [sp, #0x38]
+ ldr r2, [sp, #0x14]
+ ldr r3, [sp, #0x18]
+ add r0, r4, #0x0
+ blx _ll_mul
+ mov r2, #0x2
+ str r0, [sp, #0x50]
+ add r0, r1, #0x0
+ mov r1, #0x0
+ lsl r2, r2, #0xa
+ add r3, r7, r2
+ adc r6, r1
+ lsl r2, r6, #0x14
+ lsr r3, r3, #0xc
+ orr r3, r2
+ mov r2, #0x2
+ ldr r6, [sp, #0x40]
+ lsl r2, r2, #0xa
+ add r2, r6, r2
+ adc r5, r1
+ mov r6, #0x2
+ lsl r5, r5, #0x14
+ lsr r2, r2, #0xc
+ orr r2, r5
+ ldr r5, [sp, #0x50]
+ lsl r6, r6, #0xa
+ add r5, r5, r6
+ adc r0, r1
+ lsl r0, r0, #0x14
+ lsr r1, r5, #0xc
+ orr r1, r0
+ add r0, r2, r1
+ add r0, r3, r0
+ str r0, [sp, #0x0]
+ ldr r3, [sp, #0x74]
+ ldr r2, [sp, #0x68]
+ ldr r0, [sp, #0xc]
+ sub r2, r3, r2
+ ldr r1, [sp, #0x28]
+ asr r3, r2, #0x1f
+ blx _ll_mul
+ add r7, r0, #0x0
+ add r6, r1, #0x0
+ ldr r3, [sp, #0x68]
+ ldr r2, [sp, #0x8c]
+ ldr r0, [sp, #0x8]
+ sub r2, r3, r2
+ ldr r1, [sp, #0x1c]
+ asr r3, r2, #0x1f
+ blx _ll_mul
+ add r5, r1, #0x0
+ str r0, [sp, #0x44]
+ ldr r1, [sp, #0x38]
+ ldr r2, [sp, #0x2c]
+ ldr r3, [sp, #0x30]
+ add r0, r4, #0x0
+ blx _ll_mul
+ mov r3, #0x2
+ mov r2, #0x0
+ lsl r3, r3, #0xa
+ add r4, r7, r3
+ adc r6, r2
+ lsl r3, r6, #0x14
+ lsr r4, r4, #0xc
+ orr r4, r3
+ mov r3, #0x2
+ ldr r6, [sp, #0x44]
+ lsl r3, r3, #0xa
+ add r3, r6, r3
+ adc r5, r2
+ lsl r5, r5, #0x14
+ lsr r3, r3, #0xc
+ orr r3, r5
+ mov r5, #0x2
+ lsl r5, r5, #0xa
+ add r5, r0, r5
+ adc r1, r2
+ lsl r0, r1, #0x14
+ lsr r1, r5, #0xc
+ orr r1, r0
+ add r0, r3, r1
+ add r6, r4, r0
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x34]
+ ldr r2, [sp, #0x2c]
+ ldr r3, [sp, #0x30]
+ blx _ll_mul
+ add r7, r0, #0x0
+ add r5, r1, #0x0
+ ldr r0, [sp, #0xc]
+ ldr r1, [sp, #0x28]
+ ldr r2, [sp, #0x20]
+ ldr r3, [sp, #0x24]
+ blx _ll_mul
+ str r0, [sp, #0x48]
+ add r4, r1, #0x0
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0x1c]
+ ldr r2, [sp, #0x14]
+ ldr r3, [sp, #0x18]
+ blx _ll_mul
+ mov r12, r0
+ mov r0, #0x2
+ add r2, r1, #0x0
+ mov r1, #0x0
+ lsl r0, r0, #0xa
+ add r0, r7, r0
+ adc r5, r1
+ lsl r3, r5, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r3
+ mov r3, #0x2
+ ldr r5, [sp, #0x48]
+ lsl r3, r3, #0xa
+ add r3, r5, r3
+ adc r4, r1
+ lsl r4, r4, #0x14
+ lsr r3, r3, #0xc
+ orr r3, r4
+ mov r4, #0x2
+ lsl r4, r4, #0xa
+ mov r5, r12
+ add r4, r5, r4
+ adc r2, r1
+ lsl r2, r2, #0x14
+ lsr r4, r4, #0xc
+ orr r4, r2
+ add r2, r3, r4
+ add r0, r0, r2
+ bpl _0201CA72
+ add sp, #0x54
+ add r0, r1, #0x0
+ pop {r4-r7}
+ pop {r3}
+ add sp, #0x10
+ bx r3
+_0201CA72:
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ bge _0201CA84
+ add sp, #0x54
+ add r0, r1, #0x0
+ pop {r4-r7}
+ pop {r3}
+ add sp, #0x10
+ bx r3
+_0201CA84:
+ ldr r0, [sp, #0x0]
+ cmp r0, #0x0
+ bge _0201CA96
+ add sp, #0x54
+ add r0, r1, #0x0
+ pop {r4-r7}
+ pop {r3}
+ add sp, #0x10
+ bx r3
+_0201CA96:
+ cmp r6, #0x0
+ blt _0201CA9C
+ mov r1, #0x1
+_0201CA9C:
+ add r0, r1, #0x0
+ add sp, #0x54
+ pop {r4-r7}
+ pop {r3}
+ add sp, #0x10
+ bx r3
+
+ thumb_func_start FUN_0201CAA8
+FUN_0201CAA8: ; 0x0201CAA8
+ push {r4-r5, lr}
+ sub sp, #0x24
+ add r4, r1, #0x0
+ ldr r1, [r4, #0x0]
+ ldr r3, _0201CB1C ; =0x020FFA38
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ asr r1, r1, #0x4
+ lsl r2, r1, #0x1
+ lsl r1, r2, #0x1
+ add r2, r2, #0x1
+ lsl r2, r2, #0x1
+ ldrsh r1, [r3, r1]
+ ldrsh r2, [r3, r2]
+ add r5, r0, #0x0
+ bl FUN_020C3F38
+ ldr r0, [r4, #0x4]
+ ldr r3, _0201CB1C ; =0x020FFA38
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ asr r0, r0, #0x4
+ lsl r2, r0, #0x1
+ lsl r1, r2, #0x1
+ add r2, r2, #0x1
+ lsl r2, r2, #0x1
+ ldrsh r1, [r3, r1]
+ ldrsh r2, [r3, r2]
+ add r0, sp, #0x0
+ bl FUN_020C3F54
+ add r0, r5, #0x0
+ add r1, sp, #0x0
+ add r2, r5, #0x0
+ blx FUN_020C400C
+ ldr r0, [r4, #0x8]
+ ldr r3, _0201CB1C ; =0x020FFA38
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ asr r0, r0, #0x4
+ lsl r2, r0, #0x1
+ lsl r1, r2, #0x1
+ add r2, r2, #0x1
+ lsl r2, r2, #0x1
+ ldrsh r1, [r3, r1]
+ ldrsh r2, [r3, r2]
+ add r0, sp, #0x0
+ bl FUN_020C3F70
+ add r0, r5, #0x0
+ add r1, sp, #0x0
+ add r2, r5, #0x0
+ blx FUN_020C400C
+ add sp, #0x24
+ pop {r4-r5, pc}
+ nop
+_0201CB1C: .word 0x020FFA38
+
+ thumb_func_start FUN_0201CB20
+FUN_0201CB20: ; 0x0201CB20
+ push {r4-r7, lr}
+ sub sp, #0x24
+ add r6, r1, #0x0
+ add r5, r2, #0x0
+ lsl r1, r6, #0x2
+ ldr r2, _0201CB78 ; =0x020EDF50
+ add r6, #0x5a
+ add r4, r3, #0x0
+ lsl r3, r6, #0x2
+ ldr r1, [r2, r1]
+ ldr r2, [r2, r3]
+ add r7, r0, #0x0
+ bl FUN_020C3F38
+ lsl r1, r5, #0x2
+ ldr r3, _0201CB78 ; =0x020EDF50
+ add r5, #0x5a
+ lsl r2, r5, #0x2
+ ldr r1, [r3, r1]
+ ldr r2, [r3, r2]
+ add r0, sp, #0x0
+ bl FUN_020C3F54
+ add r0, r7, #0x0
+ add r1, sp, #0x0
+ add r2, r7, #0x0
+ blx FUN_020C400C
+ lsl r1, r4, #0x2
+ ldr r3, _0201CB78 ; =0x020EDF50
+ add r4, #0x5a
+ lsl r2, r4, #0x2
+ ldr r1, [r3, r1]
+ ldr r2, [r3, r2]
+ add r0, sp, #0x0
+ bl FUN_020C3F70
+ add r0, r7, #0x0
+ add r1, sp, #0x0
+ add r2, r7, #0x0
+ blx FUN_020C400C
+ add sp, #0x24
+ pop {r4-r7, pc}
+ .balign 4
+_0201CB78: .word 0x020EDF50
+
+ thumb_func_start FUN_0201CB7C
+FUN_0201CB7C: ; 0x0201CB7C
+ push {r3-r7, lr}
+ asr r0, r0, #0x4
+ add r7, r2, #0x0
+ lsl r2, r0, #0x1
+ add r6, r1, #0x0
+ lsl r0, r2, #0x1
+ ldr r1, _0201CBE8 ; =0x020FFA38
+ add r2, r2, #0x1
+ lsl r2, r2, #0x1
+ ldrsh r0, [r1, r0]
+ ldrsh r1, [r1, r2]
+ add r5, r3, #0x0
+ ldr r4, [sp, #0x18]
+ blx FUN_020C50B8
+ add r2, r0, #0x0
+ asr r1, r6, #0x1f
+ add r0, r6, #0x0
+ asr r3, r2, #0x1f
+ blx _ll_mul
+ mov r6, #0x2
+ mov r2, #0x0
+ lsl r6, r6, #0xa
+ add r0, r0, r6
+ adc r1, r2
+ lsl r1, r1, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r1
+ asr r3, r0, #0x1f
+ lsr r1, r0, #0x13
+ lsl r3, r3, #0xd
+ orr r3, r1
+ lsl r0, r0, #0xd
+ add r0, r0, r6
+ adc r3, r2
+ lsl r1, r3, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r1
+ asr r1, r0, #0x1f
+ asr r3, r7, #0x1f
+ add r2, r7, #0x0
+ str r0, [r4, #0x0]
+ blx _ll_mul
+ mov r3, #0x0
+ add r2, r6, #0x0
+ add r2, r0, r2
+ adc r1, r3
+ lsl r0, r1, #0x14
+ lsr r1, r2, #0xc
+ orr r1, r0
+ str r1, [r5, #0x0]
+ pop {r3-r7, pc}
+ .balign 4
+_0201CBE8: .word 0x020FFA38
+
+ thumb_func_start FUN_0201CBEC
+FUN_0201CBEC: ; 0x0201CBEC
+ push {r3, lr}
+ sub r0, r0, r2
+ sub r2, r1, r3
+ add r1, r0, #0x0
+ mul r1, r0
+ add r0, r2, #0x0
+ mul r0, r2
+ add r0, r1, r0
+ lsl r0, r0, #0xc
+ blx FUN_020C504C
+ asr r0, r0, #0xc
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201CC08
+FUN_0201CC08: ; 0x0201CC08
+ push {r3, lr}
+ ldr r0, _0201CC20 ; =0x021C5978
+ ldrh r0, [r0, #0x1a]
+ cmp r0, #0x0
+ beq _0201CC16
+ bl ErrorHandling
+_0201CC16:
+ ldr r0, _0201CC20 ; =0x021C5978
+ mov r1, #0x0
+ strh r1, [r0, #0x18]
+ strh r1, [r0, #0x1a]
+ pop {r3, pc}
+ .balign 4
+_0201CC20: .word 0x021C5978
+
+ thumb_func_start FUN_0201CC24
+FUN_0201CC24: ; 0x0201CC24
+ push {r4, lr}
+ sub sp, #0x8
+ add r4, r0, #0x0
+ ldr r0, _0201CC74 ; =0x021C5978
+ ldrh r0, [r0, #0x1a]
+ cmp r0, #0x0
+ beq _0201CC36
+ bl ErrorHandling
+_0201CC36:
+ cmp r4, #0x5
+ bhs _0201CC3E
+ cmp r4, #0x0
+ bne _0201CC44
+_0201CC3E:
+ add sp, #0x8
+ mov r0, #0x0
+ pop {r4, pc}
+_0201CC44:
+ ldr r0, _0201CC74 ; =0x021C5978
+ ldrh r0, [r0, #0x18]
+ cmp r0, #0x0
+ beq _0201CC52
+ add sp, #0x8
+ mov r0, #0x0
+ pop {r4, pc}
+_0201CC52:
+ add r0, r4, #0x0
+ bl FUN_0201CE2C
+ cmp r0, #0x1
+ bne _0201CC70
+ mov r2, #0x0
+ str r2, [sp, #0x0]
+ lsl r0, r4, #0x1
+ str r0, [sp, #0x4]
+ mov r0, #0x2
+ mov r1, #0x1
+ add r3, r2, #0x0
+ bl FUN_0201CC78
+ mov r0, #0x1
+_0201CC70:
+ add sp, #0x8
+ pop {r4, pc}
+ .balign 4
+_0201CC74: .word 0x021C5978
+
+ thumb_func_start FUN_0201CC78
+FUN_0201CC78: ; 0x0201CC78
+ push {r4, lr}
+ ldr r4, _0201CC9C ; =0x021C5978
+ strh r0, [r4, #0x18]
+ ldr r0, _0201CCA0 ; =0x021C4918
+ strb r1, [r0, #0x4]
+ ldr r0, _0201CCA4 ; =0x021C5938
+ ldr r1, [sp, #0xc]
+ str r2, [r0, #0x0]
+ str r3, [r0, #0x4]
+ str r1, [r0, #0x8]
+ ldr r1, [sp, #0x8]
+ str r1, [r0, #0x54]
+ ldr r0, _0201CCA8 ; =0x021C5944
+ mov r1, #0x9
+ bl FUN_0201CCAC
+ pop {r4, pc}
+ nop
+_0201CC9C: .word 0x021C5978
+_0201CCA0: .word 0x021C4918
+_0201CCA4: .word 0x021C5938
+_0201CCA8: .word 0x021C5944
+
+ thumb_func_start FUN_0201CCAC
+FUN_0201CCAC: ; 0x0201CCAC
+ mov r3, #0x0
+ cmp r1, #0x0
+ ble _0201CCBE
+ add r2, r3, #0x0
+_0201CCB4:
+ add r3, r3, #0x1
+ strh r2, [r0, #0x4]
+ add r0, #0x8
+ cmp r3, r1
+ blt _0201CCB4
+_0201CCBE:
+ bx lr
+
+ thumb_func_start FUN_0201CCC0
+FUN_0201CCC0: ; 0x0201CCC0
+ push {r4-r6, lr}
+ ldr r0, _0201CD00 ; =0x021C5978
+ mov r5, #0x0
+ ldrh r0, [r0, #0x18]
+ cmp r0, #0x0
+ bne _0201CCD0
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_0201CCD0:
+ mov r4, #0x4
+ add r6, r4, #0x0
+_0201CCD4:
+ blx TP_RequestAutoSamplingStopAsync
+ add r0, r4, #0x0
+ blx TP_WaitBusy
+ add r0, r6, #0x0
+ blx TP_CheckError
+ cmp r0, #0x0
+ beq _0201CCEA
+ add r5, r5, #0x1
+_0201CCEA:
+ cmp r0, #0x0
+ beq _0201CCF2
+ cmp r5, #0x5
+ bls _0201CCD4
+_0201CCF2:
+ cmp r5, #0x5
+ bls _0201CCFA
+ mov r0, #0x2
+ pop {r4-r6, pc}
+_0201CCFA:
+ mov r0, #0x1
+ pop {r4-r6, pc}
+ nop
+_0201CD00: .word 0x021C5978
+
+ thumb_func_start FUN_0201CD04
+FUN_0201CD04: ; 0x0201CD04
+ push {r4, lr}
+ sub sp, #0x8
+ ldr r0, _0201CD34 ; =0x021C5978
+ ldrh r0, [r0, #0x1a]
+ cmp r0, #0x0
+ beq _0201CD14
+ bl ErrorHandling
+_0201CD14:
+ bl FUN_0201CCC0
+ add r4, r0, #0x0
+ cmp r4, #0x1
+ bne _0201CD2E
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ add r1, r0, #0x0
+ add r2, r0, #0x0
+ add r3, r0, #0x0
+ str r0, [sp, #0x4]
+ bl FUN_0201CC78
+_0201CD2E:
+ add r0, r4, #0x0
+ add sp, #0x8
+ pop {r4, pc}
+ .balign 4
+_0201CD34: .word 0x021C5978
+
+ thumb_func_start FUN_0201CD38
+FUN_0201CD38: ; 0x0201CD38
+ push {r3-r7, lr}
+ add r4, r0, #0x0
+ ldr r0, _0201CD8C ; =0x021C5978
+ add r6, r1, #0x0
+ ldrh r0, [r0, #0x1a]
+ add r7, r2, #0x0
+ mov r5, #0x3
+ cmp r0, #0x0
+ beq _0201CD4E
+ bl ErrorHandling
+_0201CD4E:
+ ldr r0, _0201CD8C ; =0x021C5978
+ ldrh r0, [r0, #0x18]
+ cmp r0, #0x0
+ beq _0201CD88
+ blx TP_GetLatestIndexInAuto
+ add r5, r0, #0x0
+ ldr r0, _0201CD90 ; =0x021C5944
+ mov r1, #0x9
+ bl FUN_0201CD94
+ cmp r4, #0x0
+ beq _0201CD70
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ bl FUN_0201CFD0
+_0201CD70:
+ ldr r0, _0201CD8C ; =0x021C5978
+ ldrh r0, [r0, #0x18]
+ cmp r0, #0x1
+ bne _0201CD86
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ add r2, r7, #0x0
+ bl FUN_0201CE70
+ add r5, r0, #0x0
+ b _0201CD88
+_0201CD86:
+ mov r5, #0x1
+_0201CD88:
+ add r0, r5, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+_0201CD8C: .word 0x021C5978
+_0201CD90: .word 0x021C5944
+
+ thumb_func_start FUN_0201CD94
+FUN_0201CD94: ; 0x0201CD94
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ mov r7, #0x0
+ str r1, [sp, #0x0]
+ add r0, r1, #0x0
+ beq _0201CDCA
+ add r4, r5, #0x0
+ add r6, sp, #0x4
+_0201CDA6:
+ add r0, sp, #0x4
+ add r1, r5, #0x0
+ blx TP_GetCalibratedPoint
+ ldrh r0, [r6, #0x0]
+ add r7, r7, #0x1
+ add r5, #0x8
+ strh r0, [r4, #0x0]
+ ldrh r0, [r6, #0x2]
+ strh r0, [r4, #0x2]
+ ldrh r0, [r6, #0x4]
+ strh r0, [r4, #0x4]
+ ldrh r0, [r6, #0x6]
+ strh r0, [r4, #0x6]
+ ldr r0, [sp, #0x0]
+ add r4, #0x8
+ cmp r7, r0
+ blo _0201CDA6
+_0201CDCA:
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201CDD0
+FUN_0201CDD0: ; 0x0201CDD0
+ push {r3, lr}
+ ldr r0, _0201CDFC ; =0x021C5978
+ ldrh r1, [r0, #0x1a]
+ cmp r1, #0x0
+ beq _0201CDF8
+ ldrh r0, [r0, #0x18]
+ cmp r0, #0x0
+ beq _0201CDF8
+ ldr r0, _0201CE00 ; =0x021C5938
+ ldr r0, [r0, #0x8]
+ lsr r0, r0, #0x1
+ bl FUN_0201CE2C
+ cmp r0, #0x1
+ beq _0201CDF2
+ bl ErrorHandling
+_0201CDF2:
+ ldr r0, _0201CDFC ; =0x021C5978
+ mov r1, #0x0
+ strh r1, [r0, #0x1a]
+_0201CDF8:
+ pop {r3, pc}
+ nop
+_0201CDFC: .word 0x021C5978
+_0201CE00: .word 0x021C5938
+
+ thumb_func_start FUN_0201CE04
+FUN_0201CE04: ; 0x0201CE04
+ push {r3, lr}
+ ldr r0, _0201CE28 ; =0x021C5978
+ ldrh r1, [r0, #0x1a]
+ cmp r1, #0x1
+ beq _0201CE26
+ ldrh r0, [r0, #0x18]
+ cmp r0, #0x0
+ beq _0201CE26
+ bl FUN_0201CCC0
+ cmp r0, #0x1
+ beq _0201CE20
+ bl ErrorHandling
+_0201CE20:
+ ldr r0, _0201CE28 ; =0x021C5978
+ mov r1, #0x1
+ strh r1, [r0, #0x1a]
+_0201CE26:
+ pop {r3, pc}
+ .balign 4
+_0201CE28: .word 0x021C5978
+
+ thumb_func_start FUN_0201CE2C
+FUN_0201CE2C: ; 0x0201CE2C
+ push {r3-r7, lr}
+ mov r5, #0x0
+ lsl r0, r0, #0x10
+ ldr r7, _0201CE6C ; =0x021C5944
+ add r6, r5, #0x0
+ lsr r4, r0, #0x10
+_0201CE38:
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ add r2, r7, #0x0
+ mov r3, #0x9
+ blx TP_RequestAutoSamplingStartAsync
+ mov r0, #0x2
+ blx TP_WaitBusy
+ mov r0, #0x2
+ blx TP_CheckError
+ cmp r0, #0x0
+ beq _0201CE56
+ add r5, r5, #0x1
+_0201CE56:
+ cmp r0, #0x0
+ beq _0201CE5E
+ cmp r5, #0x5
+ ble _0201CE38
+_0201CE5E:
+ cmp r5, #0x5
+ ble _0201CE66
+ mov r0, #0x2
+ pop {r3-r7, pc}
+_0201CE66:
+ mov r0, #0x1
+ pop {r3-r7, pc}
+ nop
+_0201CE6C: .word 0x021C5944
+
+ thumb_func_start FUN_0201CE70
+FUN_0201CE70: ; 0x0201CE70
+ push {r3, lr}
+ cmp r0, #0x5
+ bhi _0201CE9A
+ add r3, r0, r0
+ add r3, pc
+ ldrh r3, [r3, #0x6]
+ lsl r3, r3, #0x10
+ asr r3, r3, #0x10
+ add pc, r3
+_0201CE82: ; jump table (using 16-bit offset)
+ .short _0201CE9A - _0201CE82 - 2; case 0
+ .short _0201CE8E - _0201CE82 - 2; case 1
+ .short _0201CE9A - _0201CE82 - 2; case 2
+ .short _0201CE8E - _0201CE82 - 2; case 3
+ .short _0201CE94 - _0201CE82 - 2; case 4
+ .short _0201CE94 - _0201CE82 - 2; case 5
+_0201CE8E:
+ bl FUN_0201CEA0
+ pop {r3, pc}
+_0201CE94:
+ bl FUN_0201CF58
+ pop {r3, pc}
+_0201CE9A:
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201CEA0
+FUN_0201CEA0: ; 0x0201CEA0
+ push {r3-r7, lr}
+ sub sp, #0x8
+ ldr r5, _0201CF50 ; =0x021C5938
+ str r1, [sp, #0x4]
+ ldr r1, [r5, #0x8]
+ str r0, [sp, #0x0]
+ add r7, r2, #0x0
+ mov r4, #0x0
+ cmp r1, #0x0
+ bls _0201CF46
+_0201CEB4:
+ ldr r0, [sp, #0x4]
+ sub r0, r0, r1
+ add r0, r4, r0
+ add r0, r0, #0x1
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ bpl _0201CEC8
+ add r0, #0x9
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+_0201CEC8:
+ lsl r1, r0, #0x3
+ ldr r0, _0201CF54 ; =0x021C5938
+ add r1, r0, r1
+ ldrh r0, [r1, #0x10]
+ cmp r0, #0x1
+ bne _0201CF3E
+ ldrh r0, [r1, #0x12]
+ cmp r0, #0x0
+ bne _0201CF3E
+ ldr r2, [r5, #0x54]
+ ldr r0, [r5, #0x0]
+ lsl r2, r2, #0x3
+ add r2, r0, r2
+ add r0, r2, #0x0
+ sub r0, #0x8
+ ldrh r3, [r1, #0xc]
+ ldrh r0, [r0, #0x0]
+ cmp r0, r3
+ blt _0201CEF2
+ sub r3, r0, r3
+ b _0201CEF4
+_0201CEF2:
+ sub r3, r3, r0
+_0201CEF4:
+ sub r6, r2, #0x6
+ ldrh r0, [r1, #0xe]
+ ldrh r6, [r6, #0x0]
+ cmp r6, r0
+ blt _0201CF02
+ sub r0, r6, r0
+ b _0201CF04
+_0201CF02:
+ sub r0, r0, r6
+_0201CF04:
+ cmp r3, r7
+ bhs _0201CF0C
+ cmp r0, r7
+ blo _0201CF3E
+_0201CF0C:
+ ldrh r0, [r1, #0xc]
+ strh r0, [r2, #0x0]
+ ldrh r0, [r1, #0xe]
+ strh r0, [r2, #0x2]
+ ldrh r0, [r1, #0x10]
+ strh r0, [r2, #0x4]
+ ldrh r0, [r1, #0x12]
+ strh r0, [r2, #0x6]
+ ldr r0, [r5, #0x54]
+ add r0, r0, #0x1
+ str r0, [r5, #0x54]
+ ldr r1, [r5, #0x4]
+ cmp r0, r1
+ blo _0201CF3E
+ ldr r2, [sp, #0x0]
+ cmp r2, #0x1
+ bne _0201CF36
+ blx _u32_div_f
+ str r1, [r5, #0x54]
+ b _0201CF3E
+_0201CF36:
+ mov r0, #0x0
+ add sp, #0x8
+ mvn r0, r0
+ pop {r3-r7, pc}
+_0201CF3E:
+ ldr r1, [r5, #0x8]
+ add r4, r4, #0x1
+ cmp r4, r1
+ blo _0201CEB4
+_0201CF46:
+ ldr r0, _0201CF50 ; =0x021C5938
+ ldr r0, [r0, #0x54]
+ add sp, #0x8
+ pop {r3-r7, pc}
+ nop
+_0201CF50: .word 0x021C5938
+_0201CF54: .word 0x021C5938
+
+ thumb_func_start FUN_0201CF58
+FUN_0201CF58: ; 0x0201CF58
+ push {r3-r7, lr}
+ ldr r5, _0201CFC8 ; =0x021C5938
+ str r1, [sp, #0x0]
+ ldr r1, [r5, #0x8]
+ add r7, r0, #0x0
+ mov r4, #0x0
+ cmp r1, #0x0
+ bls _0201CFC0
+_0201CF68:
+ ldr r0, [sp, #0x0]
+ sub r0, r0, r1
+ add r0, r4, r0
+ add r0, r0, #0x1
+ lsl r0, r0, #0x10
+ asr r1, r0, #0x10
+ bpl _0201CF7C
+ add r1, #0x9
+ lsl r0, r1, #0x10
+ asr r1, r0, #0x10
+_0201CF7C:
+ ldr r0, [r5, #0x54]
+ lsl r1, r1, #0x3
+ lsl r3, r0, #0x3
+ ldr r0, _0201CFCC ; =0x021C5938
+ ldr r6, [r5, #0x0]
+ add r2, r0, r1
+ ldrh r0, [r2, #0xc]
+ add r1, r6, r3
+ strh r0, [r6, r3]
+ ldrh r0, [r2, #0xe]
+ strh r0, [r1, #0x2]
+ ldrh r0, [r2, #0x10]
+ strh r0, [r1, #0x4]
+ ldrh r0, [r2, #0x12]
+ strh r0, [r1, #0x6]
+ ldr r0, [r5, #0x54]
+ add r0, r0, #0x1
+ str r0, [r5, #0x54]
+ ldr r1, [r5, #0x4]
+ cmp r0, r1
+ blo _0201CFB8
+ cmp r7, #0x4
+ bne _0201CFB2
+ blx _u32_div_f
+ str r1, [r5, #0x54]
+ b _0201CFB8
+_0201CFB2:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r7, pc}
+_0201CFB8:
+ ldr r1, [r5, #0x8]
+ add r4, r4, #0x1
+ cmp r4, r1
+ blo _0201CF68
+_0201CFC0:
+ ldr r0, _0201CFC8 ; =0x021C5938
+ ldr r0, [r0, #0x54]
+ pop {r3-r7, pc}
+ nop
+_0201CFC8: .word 0x021C5938
+_0201CFCC: .word 0x021C5938
+
+ thumb_func_start FUN_0201CFD0
+FUN_0201CFD0: ; 0x0201CFD0
+ push {r4-r7}
+ mov r2, #0x0
+ strh r2, [r0, #0x0]
+ add r3, r0, #0x0
+ add r6, r2, #0x0
+_0201CFDA:
+ strh r6, [r3, #0x8]
+ strh r6, [r3, #0x6]
+ strh r6, [r3, #0x2]
+ strh r6, [r3, #0x4]
+ add r2, r2, #0x1
+ add r3, #0x8
+ cmp r2, #0x8
+ blt _0201CFDA
+ ldr r2, _0201D038 ; =0x021C5938
+ ldr r3, [r2, #0x8]
+ cmp r3, #0x0
+ bls _0201D034
+ ldr r4, _0201D03C ; =0x021C5938
+_0201CFF4:
+ sub r3, r1, r3
+ add r3, r6, r3
+ add r3, r3, #0x1
+ lsl r3, r3, #0x10
+ asr r3, r3, #0x10
+ bpl _0201D006
+ add r3, #0x9
+ lsl r3, r3, #0x10
+ asr r3, r3, #0x10
+_0201D006:
+ lsl r3, r3, #0x3
+ add r5, r4, r3
+ ldrh r3, [r5, #0x12]
+ cmp r3, #0x0
+ bne _0201D02C
+ ldrh r3, [r0, #0x0]
+ ldrh r7, [r5, #0xc]
+ lsl r3, r3, #0x3
+ add r3, r0, r3
+ strh r7, [r3, #0x2]
+ ldrh r7, [r5, #0xe]
+ strh r7, [r3, #0x4]
+ ldrh r7, [r5, #0x10]
+ strh r7, [r3, #0x6]
+ ldrh r5, [r5, #0x12]
+ strh r5, [r3, #0x8]
+ ldrh r3, [r0, #0x0]
+ add r3, r3, #0x1
+ strh r3, [r0, #0x0]
+_0201D02C:
+ ldr r3, [r2, #0x8]
+ add r6, r6, #0x1
+ cmp r6, r3
+ blo _0201CFF4
+_0201D034:
+ pop {r4-r7}
+ bx lr
+ .balign 4
+_0201D038: .word 0x021C5938
+_0201D03C: .word 0x021C5938
+
+ thumb_func_start FUN_0201D040
+FUN_0201D040: ; 0x0201D040
+ ldr r1, _0201D054 ; =0x04001000
+ ldr r2, [r1, #0x0]
+ ldr r1, _0201D058 ; =0x00300010
+ lsl r3, r1, #0x16
+ ldr r3, [r3, #0x0]
+ and r2, r1
+ and r1, r3
+ ldr r3, _0201D05C ; =FUN_0201D060
+ bx r3
+ nop
+_0201D054: .word 0x04001000
+_0201D058: .word 0x00300010
+_0201D05C: .word FUN_0201D060
+
+ thumb_func_start FUN_0201D060
+FUN_0201D060: ; 0x0201D060
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ ldr r0, _0201D120 ; =0x021C5994
+ str r1, [sp, #0x0]
+ ldr r0, [r0, #0x0]
+ str r2, [sp, #0x4]
+ cmp r0, #0x0
+ bne _0201D11A
+ ldr r0, [r5, #0xc]
+ mov r1, #0x3c
+ bl FUN_02016998
+ add r1, r0, #0x0
+ ldr r0, _0201D120 ; =0x021C5994
+ mov r2, #0x3c
+ str r1, [r0, #0x0]
+ mov r0, #0x0
+ blx MIi_CpuClear32
+ ldr r1, _0201D120 ; =0x021C5994
+ ldr r2, [r5, #0x0]
+ ldr r0, [r1, #0x0]
+ str r2, [r0, #0x4]
+ ldr r1, [r1, #0x0]
+ ldr r0, [r5, #0xc]
+ ldr r2, [r1, #0x4]
+ mov r1, #0x54
+ mul r1, r2
+ bl FUN_02016998
+ ldr r7, _0201D120 ; =0x021C5994
+ mov r6, #0x0
+ ldr r1, [r7, #0x0]
+ str r0, [r1, #0x0]
+ ldr r0, [r5, #0x0]
+ cmp r0, #0x0
+ ble _0201D0C2
+ add r4, r6, #0x0
+_0201D0AE:
+ ldr r0, [r7, #0x0]
+ ldr r0, [r0, #0x0]
+ add r0, r0, r4
+ bl FUN_0201D690
+ ldr r0, [r5, #0x0]
+ add r6, r6, #0x1
+ add r4, #0x54
+ cmp r6, r0
+ blt _0201D0AE
+_0201D0C2:
+ ldr r0, [sp, #0x0]
+ bl FUN_0201DED0
+ ldr r1, _0201D120 ; =0x021C5994
+ ldr r1, [r1, #0x0]
+ str r0, [r1, #0x2c]
+ ldr r0, [sp, #0x4]
+ bl FUN_0201DED0
+ ldr r2, _0201D120 ; =0x021C5994
+ mov r3, #0x1
+ ldr r1, [r2, #0x0]
+ lsl r3, r3, #0x1a
+ str r0, [r1, #0x30]
+ ldr r0, [r3, #0x0]
+ ldr r1, _0201D124 ; =0xFFCFFFEF
+ add r4, r0, #0x0
+ ldr r0, [sp, #0x0]
+ and r4, r1
+ orr r0, r4
+ str r0, [r3, #0x0]
+ ldr r3, _0201D128 ; =0x04001000
+ ldr r0, [r3, #0x0]
+ and r1, r0
+ ldr r0, [sp, #0x4]
+ orr r0, r1
+ str r0, [r3, #0x0]
+ ldr r1, [r2, #0x0]
+ ldr r0, [r5, #0x4]
+ ldr r1, [r1, #0x2c]
+ bl FUN_0201DF2C
+ ldr r1, _0201D120 ; =0x021C5994
+ add r4, r0, #0x0
+ ldr r1, [r1, #0x0]
+ ldr r0, [r5, #0x8]
+ ldr r1, [r1, #0x30]
+ bl FUN_0201DF2C
+ add r1, r0, #0x0
+ ldr r2, [r5, #0xc]
+ add r0, r4, #0x0
+ bl FUN_0201DC58
+_0201D11A:
+ add sp, #0x8
+ pop {r3-r7, pc}
+ nop
+_0201D120: .word 0x021C5994
+_0201D124: .word 0xFFCFFFEF
+_0201D128: .word 0x04001000
+
+ thumb_func_start FUN_0201D12C
+FUN_0201D12C: ; 0x0201D12C
+ push {r3, lr}
+ ldr r0, _0201D164 ; =0x021C5994
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _0201D162
+ ldr r0, [r0, #0x34]
+ bl FUN_0201DCC0
+ ldr r0, _0201D164 ; =0x021C5994
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x38]
+ bl FUN_0201DCC0
+ bl FUN_0201D374
+ ldr r0, _0201D164 ; =0x021C5994
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x0]
+ bl FUN_02016A18
+ ldr r0, _0201D164 ; =0x021C5994
+ ldr r0, [r0, #0x0]
+ bl FUN_02016A18
+ ldr r0, _0201D164 ; =0x021C5994
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+_0201D162:
+ pop {r3, pc}
+ .balign 4
+_0201D164: .word 0x021C5994
+
+ thumb_func_start FUN_0201D168
+FUN_0201D168: ; 0x0201D168
+ push {r3, lr}
+ ldr r0, _0201D190 ; =0x021C5994
+ mov r2, #0x0
+ ldr r1, [r0, #0x0]
+ str r2, [r1, #0xc]
+ ldr r1, [r0, #0x0]
+ str r2, [r1, #0x10]
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x34]
+ bl FUN_0201DD00
+ ldr r0, _0201D190 ; =0x021C5994
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x38]
+ bl FUN_0201DD00
+ bl FUN_0201DAE8
+ pop {r3, pc}
+ nop
+_0201D190: .word 0x021C5994
+
+ thumb_func_start FUN_0201D194
+FUN_0201D194: ; 0x0201D194
+ push {r3-r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0x0
+ add r3, r1, #0x0
+ cmp r2, #0x1
+ add r0, sp, #0x4
+ bne _0201D1CA
+ str r0, [sp, #0x0]
+ ldr r0, _0201D1F4 ; =0x021C5994
+ add r2, r3, #0x0
+ ldr r0, [r0, #0x0]
+ add r1, r4, #0x0
+ ldr r0, [r0, #0x1c]
+ add r3, sp, #0x8
+ bl FUN_0201DFF0
+ ldr r3, [sp, #0x4]
+ cmp r3, #0x0
+ ble _0201D1F0
+ mov r2, #0x0
+ str r2, [sp, #0x0]
+ ldr r1, [sp, #0x8]
+ mov r0, #0x1
+ bl FUN_0201D948
+ add sp, #0xc
+ pop {r3-r4, pc}
+_0201D1CA:
+ str r0, [sp, #0x0]
+ ldr r0, _0201D1F4 ; =0x021C5994
+ add r2, r3, #0x0
+ ldr r0, [r0, #0x0]
+ add r1, r4, #0x0
+ ldr r0, [r0, #0x20]
+ add r3, sp, #0x8
+ bl FUN_0201DFF0
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ ble _0201D1F0
+ str r0, [sp, #0x0]
+ mov r1, #0x0
+ ldr r2, [sp, #0x8]
+ mov r0, #0x2
+ add r3, r1, #0x0
+ bl FUN_0201D948
+_0201D1F0:
+ add sp, #0xc
+ pop {r3-r4, pc}
+ .balign 4
+_0201D1F4: .word 0x021C5994
+
+ thumb_func_start FUN_0201D1F8
+FUN_0201D1F8: ; 0x0201D1F8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x8]
+ bl FUN_0201D2AC
+ cmp r0, #0x1
+ bne _0201D20A
+ bl ErrorHandling
+_0201D20A:
+ bl FUN_0201DAAC
+ add r4, r0, #0x0
+ bne _0201D21A
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0201D21A:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0201D6B4
+ cmp r0, #0x0
+ bne _0201D22A
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0201D22A:
+ add r0, r4, #0x0
+ bl FUN_0201D724
+ cmp r0, #0x0
+ bne _0201D23E
+ ldr r0, [r4, #0xc]
+ bl FUN_0201D324
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0201D23E:
+ ldr r0, _0201D24C ; =0x021C5994
+ ldr r1, [r0, #0x0]
+ ldr r0, [r1, #0x8]
+ add r0, r0, #0x1
+ str r0, [r1, #0x8]
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ .balign 4
+_0201D24C: .word 0x021C5994
+
+ thumb_func_start FUN_0201D250
+FUN_0201D250: ; 0x0201D250
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x8]
+ bl FUN_0201D2AC
+ cmp r0, #0x1
+ bne _0201D262
+ bl ErrorHandling
+_0201D262:
+ bl FUN_0201DAAC
+ add r4, r0, #0x0
+ bne _0201D272
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0201D272:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0201D6B4
+ cmp r0, #0x0
+ bne _0201D282
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0201D282:
+ mov r0, #0x1
+ str r0, [r4, #0x40]
+ add r0, r4, #0x0
+ bl FUN_0201D724
+ cmp r0, #0x0
+ bne _0201D29A
+ ldr r0, [r4, #0xc]
+ bl FUN_0201D324
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0201D29A:
+ ldr r0, _0201D2A8 ; =0x021C5994
+ ldr r1, [r0, #0x0]
+ ldr r0, [r1, #0x8]
+ add r0, r0, #0x1
+ str r0, [r1, #0x8]
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ .balign 4
+_0201D2A8: .word 0x021C5994
+
+ thumb_func_start FUN_0201D2AC
+FUN_0201D2AC: ; 0x0201D2AC
+ push {r3-r4}
+ ldr r1, _0201D2D8 ; =0x021C5994
+ mov r2, #0x0
+ ldr r4, [r1, #0x0]
+ ldr r1, [r4, #0x4]
+ cmp r1, #0x0
+ ble _0201D2D2
+ ldr r3, [r4, #0x0]
+_0201D2BC:
+ ldr r1, [r3, #0xc]
+ cmp r0, r1
+ bne _0201D2C8
+ mov r0, #0x1
+ pop {r3-r4}
+ bx lr
+_0201D2C8:
+ ldr r1, [r4, #0x4]
+ add r2, r2, #0x1
+ add r3, #0x54
+ cmp r2, r1
+ blt _0201D2BC
+_0201D2D2:
+ mov r0, #0x0
+ pop {r3-r4}
+ bx lr
+ .balign 4
+_0201D2D8: .word 0x021C5994
+
+ thumb_func_start FUN_0201D2DC
+FUN_0201D2DC: ; 0x0201D2DC
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ add r5, r1, #0x0
+ bne _0201D2E8
+ bl ErrorHandling
+_0201D2E8:
+ add r0, r4, #0x0
+ bl FUN_0201D7F8
+ add r4, r0, #0x0
+ bne _0201D2F6
+ bl ErrorHandling
+_0201D2F6:
+ str r5, [r4, #0x0]
+ ldr r1, [r4, #0x4]
+ mov r0, #0x1
+ tst r0, r1
+ beq _0201D30C
+ ldr r1, [r4, #0x34]
+ ldr r2, [r5, #0x14]
+ ldr r3, [r5, #0x10]
+ mov r0, #0x13
+ bl FUN_0201C2C8
+_0201D30C:
+ ldr r1, [r4, #0x4]
+ mov r0, #0x2
+ tst r0, r1
+ beq _0201D320
+ ldr r1, [r4, #0x38]
+ ldr r2, [r5, #0x14]
+ ldr r3, [r5, #0x10]
+ mov r0, #0x23
+ bl FUN_0201C2C8
+_0201D320:
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201D324
+FUN_0201D324: ; 0x0201D324
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ mov r5, #0x1
+ mov r7, #0x0
+_0201D32C:
+ add r0, r6, #0x0
+ bl FUN_0201D7F8
+ add r4, r0, #0x0
+ bne _0201D33A
+ bl ErrorHandling
+_0201D33A:
+ add r0, r4, #0x0
+ add r0, #0x3c
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x4
+ bne _0201D34E
+ add r0, r4, #0x0
+ add r0, #0x10
+ bl FUN_0201D4F0
+ b _0201D350
+_0201D34E:
+ add r5, r7, #0x0
+_0201D350:
+ cmp r5, #0x0
+ bne _0201D32C
+ add r0, r4, #0x0
+ add r0, #0x3c
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _0201D36E
+ add r0, r4, #0x0
+ bl FUN_0201D7E0
+ ldr r0, _0201D370 ; =0x021C5994
+ ldr r1, [r0, #0x0]
+ ldr r0, [r1, #0x8]
+ sub r0, r0, #0x1
+ str r0, [r1, #0x8]
+_0201D36E:
+ pop {r3-r7, pc}
+ .balign 4
+_0201D370: .word 0x021C5994
+
+ thumb_func_start FUN_0201D374
+FUN_0201D374: ; 0x0201D374
+ push {r4-r6, lr}
+ ldr r6, _0201D3AC ; =0x021C5994
+ mov r4, #0x0
+ ldr r1, [r6, #0x0]
+ ldr r0, [r1, #0x4]
+ cmp r0, #0x0
+ ble _0201D3AA
+ add r5, r4, #0x0
+_0201D384:
+ ldr r1, [r1, #0x0]
+ add r0, r1, r5
+ add r0, #0x3c
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _0201D39E
+ add r0, r1, r5
+ bl FUN_0201D7E0
+ ldr r1, [r6, #0x0]
+ ldr r0, [r1, #0x8]
+ sub r0, r0, #0x1
+ str r0, [r1, #0x8]
+_0201D39E:
+ ldr r1, [r6, #0x0]
+ add r4, r4, #0x1
+ ldr r0, [r1, #0x4]
+ add r5, #0x54
+ cmp r4, r0
+ blt _0201D384
+_0201D3AA:
+ pop {r4-r6, pc}
+ .balign 4
+_0201D3AC: .word 0x021C5994
+
+ thumb_func_start FUN_0201D3B0
+FUN_0201D3B0: ; 0x0201D3B0
+ push {r4, lr}
+ bl FUN_0201D7F8
+ add r4, r0, #0x0
+ bne _0201D3BE
+ bl ErrorHandling
+_0201D3BE:
+ add r0, r4, #0x0
+ add r0, #0x3c
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _0201D3CC
+ mov r0, #0x0
+ pop {r4, pc}
+_0201D3CC:
+ add r4, #0x10
+ add r0, r4, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201D3D4
+FUN_0201D3D4: ; 0x0201D3D4
+ push {r3-r5, lr}
+ sub sp, #0x18
+ add r5, r1, #0x0
+ bl FUN_0201D7F8
+ add r4, r0, #0x0
+ bne _0201D3E6
+ bl ErrorHandling
+_0201D3E6:
+ add r0, r4, #0x0
+ add r0, #0x3c
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _0201D3F6
+ add sp, #0x18
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0201D3F6:
+ add r0, sp, #0xc
+ str r0, [sp, #0x0]
+ add r0, sp, #0x8
+ str r0, [sp, #0x4]
+ ldr r0, [r4, #0x4]
+ add r1, sp, #0x14
+ add r2, sp, #0x10
+ add r3, r5, #0x0
+ bl FUN_0201D86C
+ add r0, r4, #0x0
+ add r0, #0x3c
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x3
+ bne _0201D41A
+ add sp, #0x18
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0201D41A:
+ add r0, r4, #0x0
+ mov r1, #0x3
+ add r0, #0x3c
+ strb r1, [r0, #0x0]
+ ldr r1, [sp, #0x14]
+ ldr r2, [sp, #0x10]
+ add r0, r4, #0x0
+ bl FUN_0201D918
+ mov r0, #0x1
+ str r0, [r4, #0x48]
+ ldr r0, [sp, #0xc]
+ str r0, [r4, #0x4c]
+ ldr r0, [sp, #0x8]
+ str r0, [r4, #0x50]
+ add r0, r4, #0x0
+ bl FUN_0201DA38
+ ldr r0, [sp, #0x8]
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x4]
+ ldr r1, [sp, #0x14]
+ ldr r2, [sp, #0x10]
+ ldr r3, [sp, #0xc]
+ bl FUN_0201D948
+ add r4, #0x10
+ add r0, r4, #0x0
+ add sp, #0x18
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201D458
+FUN_0201D458: ; 0x0201D458
+ push {r3-r5, lr}
+ sub sp, #0x18
+ bl FUN_0201D6D8
+ add r4, r0, #0x0
+ bne _0201D468
+ bl ErrorHandling
+_0201D468:
+ bl FUN_0201DAAC
+ add r5, r0, #0x0
+ bne _0201D474
+ bl ErrorHandling
+_0201D474:
+ add r0, r4, #0x0
+ add r0, #0x3c
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x3
+ beq _0201D484
+ add sp, #0x18
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0201D484:
+ add r3, r5, #0x0
+ mov r2, #0xa
+_0201D488:
+ ldmia r4!, {r0-r1}
+ stmia r3!, {r0-r1}
+ sub r2, r2, #0x1
+ bne _0201D488
+ ldr r0, [r4, #0x0]
+ mov r1, #0x4
+ str r0, [r3, #0x0]
+ add r0, r5, #0x0
+ add r0, #0x3c
+ strb r1, [r0, #0x0]
+ ldr r0, [r5, #0x4]
+ mov r1, #0x1
+ tst r1, r0
+ beq _0201D4A8
+ ldr r3, [r5, #0x4c]
+ b _0201D4AA
+_0201D4A8:
+ ldr r3, [r5, #0x50]
+_0201D4AA:
+ add r1, sp, #0xc
+ str r1, [sp, #0x0]
+ add r1, sp, #0x8
+ str r1, [sp, #0x4]
+ add r1, sp, #0x14
+ add r2, sp, #0x10
+ bl FUN_0201D86C
+ ldr r1, [sp, #0x14]
+ ldr r2, [sp, #0x10]
+ add r0, r5, #0x0
+ bl FUN_0201D918
+ mov r0, #0x1
+ str r0, [r5, #0x48]
+ ldr r0, [sp, #0xc]
+ str r0, [r5, #0x4c]
+ ldr r0, [sp, #0x8]
+ str r0, [r5, #0x50]
+ add r0, r5, #0x0
+ bl FUN_0201DA38
+ ldr r0, [sp, #0x8]
+ str r0, [sp, #0x0]
+ ldr r0, [r5, #0x4]
+ ldr r1, [sp, #0x14]
+ ldr r2, [sp, #0x10]
+ ldr r3, [sp, #0xc]
+ bl FUN_0201D948
+ add r5, #0x10
+ add r0, r5, #0x0
+ add sp, #0x18
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201D4F0
+FUN_0201D4F0: ; 0x0201D4F0
+ push {r4-r6, lr}
+ ldr r2, _0201D564 ; =0x021C5994
+ mov r1, #0x0
+ ldr r5, [r2, #0x0]
+ ldr r4, [r5, #0x4]
+ cmp r4, #0x0
+ ble _0201D52E
+ ldr r2, [r5, #0x0]
+ add r3, r1, #0x0
+_0201D502:
+ add r6, r2, #0x0
+ add r6, #0x3c
+ ldrb r6, [r6, #0x0]
+ cmp r6, #0x3
+ beq _0201D518
+ ldr r6, [r5, #0x0]
+ add r6, r6, r3
+ add r6, #0x3c
+ ldrb r6, [r6, #0x0]
+ cmp r6, #0x4
+ bne _0201D522
+_0201D518:
+ ldr r6, [r5, #0x0]
+ add r6, r6, r3
+ add r6, #0x10
+ cmp r6, r0
+ beq _0201D52E
+_0201D522:
+ ldr r6, [r5, #0x4]
+ add r1, r1, #0x1
+ add r2, #0x54
+ add r3, #0x54
+ cmp r1, r6
+ blt _0201D502
+_0201D52E:
+ cmp r1, r4
+ bge _0201D562
+ mov r0, #0x54
+ add r4, r1, #0x0
+ mul r4, r0
+ ldr r0, [r5, #0x0]
+ add r0, r0, r4
+ bl FUN_0201DE4C
+ ldr r0, _0201D564 ; =0x021C5994
+ ldr r1, [r0, #0x0]
+ ldr r2, [r1, #0x0]
+ add r2, #0x3c
+ ldrb r1, [r2, r4]
+ cmp r1, #0x3
+ bne _0201D554
+ mov r0, #0x2
+ strb r0, [r2, r4]
+ pop {r4-r6, pc}
+_0201D554:
+ mov r1, #0x0
+ strb r1, [r2, r4]
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x0]
+ add r0, r0, r4
+ bl FUN_0201D690
+_0201D562:
+ pop {r4-r6, pc}
+ .balign 4
+_0201D564: .word 0x021C5994
+
+ thumb_func_start FUN_0201D568
+FUN_0201D568: ; 0x0201D568
+ push {r3-r7, lr}
+ sub sp, #0x18
+ add r6, r0, #0x0
+ add r5, r2, #0x0
+ add r4, r3, #0x0
+ cmp r1, #0x0
+ bne _0201D5A0
+ add r1, r5, #0x0
+ add r2, sp, #0x14
+ add r3, sp, #0x10
+ bl FUN_0201DF44
+ add r7, r0, #0x0
+ beq _0201D5E0
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ bl FUN_0201DF94
+ str r5, [r4, #0x8]
+ str r6, [r4, #0x0]
+ cmp r5, #0x1
+ bne _0201D59A
+ ldr r0, [sp, #0x14]
+ str r0, [r4, #0x4]
+ b _0201D5E0
+_0201D59A:
+ ldr r0, [sp, #0x10]
+ str r0, [r4, #0x4]
+ b _0201D5E0
+_0201D5A0:
+ add r0, sp, #0xc
+ str r0, [sp, #0x0]
+ add r0, sp, #0x8
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ add r1, sp, #0x14
+ add r2, sp, #0x10
+ add r3, r6, #0x0
+ bl FUN_0201D86C
+ add r7, r0, #0x0
+ beq _0201D5E0
+ ldr r0, [sp, #0x8]
+ str r0, [sp, #0x0]
+ ldr r1, [sp, #0x14]
+ ldr r2, [sp, #0x10]
+ ldr r3, [sp, #0xc]
+ add r0, r5, #0x0
+ bl FUN_0201D948
+ str r5, [r4, #0x8]
+ cmp r5, #0x1
+ bne _0201D5D8
+ ldr r0, [sp, #0xc]
+ str r0, [r4, #0x0]
+ ldr r0, [sp, #0x14]
+ str r0, [r4, #0x4]
+ b _0201D5E0
+_0201D5D8:
+ ldr r0, [sp, #0x8]
+ str r0, [r4, #0x0]
+ ldr r0, [sp, #0x10]
+ str r0, [r4, #0x4]
+_0201D5E0:
+ add r0, r7, #0x0
+ add sp, #0x18
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201D5E8
+FUN_0201D5E8: ; 0x0201D5E8
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x8]
+ mov r0, #0x1
+ tst r0, r1
+ beq _0201D61E
+ ldr r1, _0201D654 ; =0x021C5994
+ ldr r0, [r4, #0x0]
+ ldr r1, [r1, #0x0]
+ ldr r1, [r1, #0x2c]
+ bl FUN_0201DF2C
+ add r5, r0, #0x0
+ ldr r0, _0201D654 ; =0x021C5994
+ ldr r1, [r4, #0x4]
+ ldr r2, [r0, #0x0]
+ ldr r0, [r2, #0x1c]
+ sub r0, r1, r0
+ ldr r1, [r2, #0x2c]
+ bl FUN_0201DF2C
+ ldr r2, _0201D654 ; =0x021C5994
+ add r1, r5, #0x0
+ ldr r2, [r2, #0x0]
+ ldr r2, [r2, #0x34]
+ bl FUN_0201DDFC
+_0201D61E:
+ ldr r1, [r4, #0x8]
+ mov r0, #0x2
+ tst r0, r1
+ beq _0201D650
+ ldr r1, _0201D654 ; =0x021C5994
+ ldr r0, [r4, #0x0]
+ ldr r1, [r1, #0x0]
+ ldr r1, [r1, #0x30]
+ bl FUN_0201DF2C
+ add r5, r0, #0x0
+ ldr r0, _0201D654 ; =0x021C5994
+ ldr r1, [r4, #0x4]
+ ldr r2, [r0, #0x0]
+ ldr r0, [r2, #0x20]
+ sub r0, r1, r0
+ ldr r1, [r2, #0x30]
+ bl FUN_0201DF2C
+ ldr r2, _0201D654 ; =0x021C5994
+ add r1, r5, #0x0
+ ldr r2, [r2, #0x0]
+ ldr r2, [r2, #0x38]
+ bl FUN_0201DDFC
+_0201D650:
+ pop {r3-r5, pc}
+ nop
+_0201D654: .word 0x021C5994
+
+ thumb_func_start FUN_0201D658
+FUN_0201D658: ; 0x0201D658
+ push {r3, lr}
+ ldr r0, _0201D670 ; =0x021C5994
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _0201D666
+ bl ErrorHandling
+_0201D666:
+ ldr r1, _0201D670 ; =0x021C5994
+ mov r2, #0x0
+ ldr r0, [r1, #0x0]
+ str r2, [r1, #0x0]
+ pop {r3, pc}
+ .balign 4
+_0201D670: .word 0x021C5994
+
+ thumb_func_start FUN_0201D674
+FUN_0201D674: ; 0x0201D674
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _0201D68C ; =0x021C5994
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _0201D684
+ bl ErrorHandling
+_0201D684:
+ ldr r0, _0201D68C ; =0x021C5994
+ str r4, [r0, #0x0]
+ pop {r4, pc}
+ nop
+_0201D68C: .word 0x021C5994
+
+ thumb_func_start FUN_0201D690
+FUN_0201D690: ; 0x0201D690
+ mov r2, #0x0
+ str r2, [r0, #0x0]
+ str r2, [r0, #0x4]
+ strb r2, [r0, #0x8]
+ sub r1, r2, #0x1
+ str r1, [r0, #0xc]
+ str r2, [r0, #0x34]
+ add r1, r0, #0x0
+ str r2, [r0, #0x38]
+ add r1, #0x3c
+ strb r2, [r1, #0x0]
+ str r2, [r0, #0x40]
+ ldr r3, _0201D6B0 ; =FUN_020B1A24
+ add r0, #0x10
+ bx r3
+ nop
+_0201D6B0: .word FUN_020B1A24
+
+ thumb_func_start FUN_0201D6B4
+FUN_0201D6B4: ; 0x0201D6B4
+ ldr r2, [r0, #0x0]
+ str r2, [r1, #0x0]
+ ldr r2, [r0, #0x8]
+ str r2, [r1, #0xc]
+ ldr r2, [r0, #0x4]
+ str r2, [r1, #0x4]
+ ldr r2, [r1, #0x0]
+ ldr r2, [r2, #0xc]
+ lsr r2, r2, #0x8
+ strb r2, [r1, #0x8]
+ ldr r0, [r0, #0xc]
+ str r0, [r1, #0x44]
+ mov r0, #0x0
+ str r0, [r1, #0x48]
+ str r0, [r1, #0x4c]
+ str r0, [r1, #0x50]
+ mov r0, #0x1
+ bx lr
+
+ thumb_func_start FUN_0201D6D8
+FUN_0201D6D8: ; 0x0201D6D8
+ push {r3-r6}
+ ldr r2, _0201D720 ; =0x021C5994
+ mov r1, #0x0
+ ldr r5, [r2, #0x0]
+ ldr r4, [r5, #0x4]
+ cmp r4, #0x0
+ ble _0201D70A
+ ldr r2, [r5, #0x0]
+ add r3, r1, #0x0
+_0201D6EA:
+ add r6, r2, #0x0
+ add r6, #0x3c
+ ldrb r6, [r6, #0x0]
+ cmp r6, #0x0
+ beq _0201D6FE
+ ldr r6, [r5, #0x0]
+ add r6, r6, r3
+ add r6, #0x10
+ cmp r6, r0
+ beq _0201D70A
+_0201D6FE:
+ ldr r6, [r5, #0x4]
+ add r1, r1, #0x1
+ add r2, #0x54
+ add r3, #0x54
+ cmp r1, r6
+ blt _0201D6EA
+_0201D70A:
+ cmp r1, r4
+ blt _0201D714
+ mov r0, #0x0
+ pop {r3-r6}
+ bx lr
+_0201D714:
+ mov r0, #0x54
+ ldr r2, [r5, #0x0]
+ mul r0, r1
+ add r0, r2, r0
+ pop {r3-r6}
+ bx lr
+ .balign 4
+_0201D720: .word 0x021C5994
+
+ thumb_func_start FUN_0201D724
+FUN_0201D724: ; 0x0201D724
+ push {r3, lr}
+ ldrb r1, [r0, #0x8]
+ mov r2, #0x1
+ cmp r1, #0x0
+ beq _0201D736
+ mov r1, #0x2
+ add r0, #0x3c
+ strb r1, [r0, #0x0]
+ b _0201D750
+_0201D736:
+ add r1, r0, #0x0
+ add r1, #0x3c
+ strb r2, [r1, #0x0]
+ ldr r1, [r0, #0x44]
+ cmp r1, #0x0
+ bne _0201D74A
+ bl FUN_0201D754
+ add r2, r0, #0x0
+ b _0201D750
+_0201D74A:
+ bl FUN_0201D788
+ add r2, r0, #0x0
+_0201D750:
+ add r0, r2, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_0201D754
+FUN_0201D754: ; 0x0201D754
+ push {r3-r5, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r1, [r5, #0x4]
+ ldr r0, [r0, #0x10]
+ add r2, sp, #0x4
+ add r3, sp, #0x0
+ bl FUN_0201DF44
+ add r4, r0, #0x0
+ beq _0201D780
+ ldr r1, [sp, #0x4]
+ ldr r2, [sp, #0x0]
+ add r0, r5, #0x0
+ bl FUN_0201D858
+ ldr r0, [r5, #0x0]
+ ldr r1, [r5, #0x4]
+ ldr r0, [r0, #0x10]
+ bl FUN_0201DF94
+_0201D780:
+ add r0, r4, #0x0
+ add sp, #0x8
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201D788
+FUN_0201D788: ; 0x0201D788
+ push {r4, lr}
+ sub sp, #0x18
+ add r4, r0, #0x0
+ add r0, sp, #0xc
+ str r0, [sp, #0x0]
+ add r0, sp, #0x8
+ str r0, [sp, #0x4]
+ ldr r3, [r4, #0x0]
+ ldr r0, [r4, #0x4]
+ ldr r3, [r3, #0x10]
+ add r1, sp, #0x14
+ add r2, sp, #0x10
+ bl FUN_0201D86C
+ cmp r0, #0x0
+ bne _0201D7AE
+ add sp, #0x18
+ mov r0, #0x0
+ pop {r4, pc}
+_0201D7AE:
+ ldr r1, [sp, #0x14]
+ ldr r2, [sp, #0x10]
+ add r0, r4, #0x0
+ bl FUN_0201D918
+ mov r0, #0x1
+ str r0, [r4, #0x48]
+ ldr r0, [sp, #0xc]
+ str r0, [r4, #0x4c]
+ ldr r0, [sp, #0x8]
+ str r0, [r4, #0x50]
+ add r0, r4, #0x0
+ bl FUN_0201D9B0
+ ldr r0, [sp, #0x8]
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x4]
+ ldr r1, [sp, #0x14]
+ ldr r2, [sp, #0x10]
+ ldr r3, [sp, #0xc]
+ bl FUN_0201D948
+ mov r0, #0x1
+ add sp, #0x18
+ pop {r4, pc}
+
+ thumb_func_start FUN_0201D7E0
+FUN_0201D7E0: ; 0x0201D7E0
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x48]
+ cmp r1, #0x0
+ beq _0201D7EE
+ bl FUN_0201DE4C
+_0201D7EE:
+ add r0, r4, #0x0
+ bl FUN_0201D690
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201D7F8
+FUN_0201D7F8: ; 0x0201D7F8
+ push {r4-r5}
+ ldr r2, _0201D82C ; =0x021C5994
+ mov r1, #0x0
+ ldr r5, [r2, #0x0]
+ ldr r2, [r5, #0x4]
+ cmp r2, #0x0
+ ble _0201D824
+ ldr r2, [r5, #0x0]
+ add r4, r2, #0x0
+_0201D80A:
+ ldr r3, [r4, #0xc]
+ cmp r0, r3
+ bne _0201D81A
+ mov r0, #0x54
+ mul r0, r1
+ add r0, r2, r0
+ pop {r4-r5}
+ bx lr
+_0201D81A:
+ ldr r3, [r5, #0x4]
+ add r1, r1, #0x1
+ add r4, #0x54
+ cmp r1, r3
+ blt _0201D80A
+_0201D824:
+ mov r0, #0x0
+ pop {r4-r5}
+ bx lr
+ nop
+_0201D82C: .word 0x021C5994
+
+ thumb_func_start FUN_0201D830
+FUN_0201D830: ; 0x0201D830
+ cmp r1, #0x1
+ bne _0201D83C
+ mov r1, #0x1
+ lsl r1, r1, #0x1a
+ ldr r2, [r1, #0x0]
+ b _0201D840
+_0201D83C:
+ ldr r1, _0201D850 ; =0x04001000
+ ldr r2, [r1, #0x0]
+_0201D840:
+ ldr r1, _0201D854 ; =0x00300010
+ and r2, r1
+ ldr r1, [r0, #0x0]
+ str r2, [r1, #0x8]
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x8]
+ bx lr
+ nop
+_0201D850: .word 0x04001000
+_0201D854: .word 0x00300010
+
+ thumb_func_start FUN_0201D858
+FUN_0201D858: ; 0x0201D858
+ push {r3, lr}
+ str r1, [r0, #0x34]
+ str r2, [r0, #0x38]
+ ldrb r1, [r0, #0x8]
+ cmp r1, #0x0
+ bne _0201D868
+ bl FUN_0201D9B0
+_0201D868:
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201D86C
+FUN_0201D86C: ; 0x0201D86C
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldr r0, [sp, #0x1c]
+ add r6, r2, #0x0
+ str r0, [sp, #0x1c]
+ mov r2, #0x1
+ add r0, r5, #0x0
+ add r4, r1, #0x0
+ str r3, [sp, #0x0]
+ ldr r7, [sp, #0x18]
+ tst r0, r2
+ beq _0201D8C4
+ ldr r1, _0201D914 ; =0x021C5994
+ add r0, r3, #0x0
+ ldr r1, [r1, #0x0]
+ ldr r1, [r1, #0x2c]
+ bl FUN_0201DF10
+ ldr r1, _0201D914 ; =0x021C5994
+ str r0, [r7, #0x0]
+ ldr r1, [r1, #0x0]
+ ldr r1, [r1, #0x2c]
+ bl FUN_0201DF2C
+ ldr r1, _0201D914 ; =0x021C5994
+ ldr r1, [r1, #0x0]
+ ldr r1, [r1, #0x34]
+ bl FUN_0201DD74
+ mov r1, #0x0
+ mvn r1, r1
+ str r0, [r4, #0x0]
+ cmp r0, r1
+ bne _0201D8B8
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0201D8B8:
+ ldr r1, _0201D914 ; =0x021C5994
+ ldr r1, [r1, #0x0]
+ ldr r1, [r1, #0x2c]
+ bl FUN_0201DF3C
+ str r0, [r4, #0x0]
+_0201D8C4:
+ mov r0, #0x2
+ tst r0, r5
+ beq _0201D90E
+ ldr r1, _0201D914 ; =0x021C5994
+ ldr r0, [sp, #0x0]
+ ldr r1, [r1, #0x0]
+ mov r2, #0x1
+ ldr r1, [r1, #0x30]
+ bl FUN_0201DF10
+ ldr r1, [sp, #0x1c]
+ str r0, [r1, #0x0]
+ ldr r1, _0201D914 ; =0x021C5994
+ ldr r1, [r1, #0x0]
+ ldr r1, [r1, #0x30]
+ bl FUN_0201DF2C
+ ldr r1, _0201D914 ; =0x021C5994
+ ldr r1, [r1, #0x0]
+ ldr r1, [r1, #0x38]
+ bl FUN_0201DD74
+ mov r1, #0x0
+ mvn r1, r1
+ str r0, [r6, #0x0]
+ cmp r0, r1
+ bne _0201D902
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0201D902:
+ ldr r1, _0201D914 ; =0x021C5994
+ ldr r1, [r1, #0x0]
+ ldr r1, [r1, #0x30]
+ bl FUN_0201DF3C
+ str r0, [r6, #0x0]
+_0201D90E:
+ mov r0, #0x1
+ pop {r3-r7, pc}
+ nop
+_0201D914: .word 0x021C5994
+
+ thumb_func_start FUN_0201D918
+FUN_0201D918: ; 0x0201D918
+ push {r3-r4}
+ ldr r4, [r0, #0x4]
+ mov r3, #0x1
+ tst r3, r4
+ beq _0201D92C
+ ldr r3, _0201D944 ; =0x021C5994
+ ldr r3, [r3, #0x0]
+ ldr r3, [r3, #0x1c]
+ add r1, r1, r3
+ str r1, [r0, #0x34]
+_0201D92C:
+ ldr r3, [r0, #0x4]
+ mov r1, #0x2
+ tst r1, r3
+ beq _0201D93E
+ ldr r1, _0201D944 ; =0x021C5994
+ ldr r1, [r1, #0x0]
+ ldr r1, [r1, #0x20]
+ add r1, r2, r1
+ str r1, [r0, #0x38]
+_0201D93E:
+ pop {r3-r4}
+ bx lr
+ nop
+_0201D944: .word 0x021C5994
+
+ thumb_func_start FUN_0201D948
+FUN_0201D948: ; 0x0201D948
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ mov r0, #0x1
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ tst r0, r5
+ beq _0201D97C
+ ldr r1, _0201D9AC ; =0x021C5994
+ add r0, r3, #0x0
+ ldr r1, [r1, #0x0]
+ ldr r1, [r1, #0x2c]
+ bl FUN_0201DF2C
+ ldr r1, _0201D9AC ; =0x021C5994
+ add r7, r0, #0x0
+ ldr r1, [r1, #0x0]
+ add r0, r4, #0x0
+ ldr r1, [r1, #0x2c]
+ bl FUN_0201DF2C
+ ldr r2, _0201D9AC ; =0x021C5994
+ add r1, r7, #0x0
+ ldr r2, [r2, #0x0]
+ ldr r2, [r2, #0x34]
+ bl FUN_0201DD18
+_0201D97C:
+ mov r0, #0x2
+ tst r0, r5
+ beq _0201D9A8
+ ldr r1, _0201D9AC ; =0x021C5994
+ ldr r0, [sp, #0x18]
+ ldr r1, [r1, #0x0]
+ ldr r1, [r1, #0x30]
+ bl FUN_0201DF2C
+ ldr r1, _0201D9AC ; =0x021C5994
+ add r4, r0, #0x0
+ ldr r1, [r1, #0x0]
+ add r0, r6, #0x0
+ ldr r1, [r1, #0x30]
+ bl FUN_0201DF2C
+ ldr r2, _0201D9AC ; =0x021C5994
+ add r1, r4, #0x0
+ ldr r2, [r2, #0x0]
+ ldr r2, [r2, #0x38]
+ bl FUN_0201DD18
+_0201D9A8:
+ pop {r3-r7, pc}
+ nop
+_0201D9AC: .word 0x021C5994
+
+ thumb_func_start FUN_0201D9B0
+FUN_0201D9B0: ; 0x0201D9B0
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, #0x10
+ blx FUN_020B1A24
+ ldr r1, [r4, #0x4]
+ cmp r1, #0x3
+ beq _0201D9C8
+ add r0, r4, #0x0
+ bl FUN_0201D9DC
+ pop {r4, pc}
+_0201D9C8:
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_0201D9DC
+ add r0, r4, #0x0
+ mov r1, #0x2
+ bl FUN_0201D9DC
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201D9DC
+FUN_0201D9DC: ; 0x0201D9DC
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r2, [r5, #0x40]
+ add r4, r1, #0x0
+ cmp r2, #0x0
+ beq _0201D9EE
+ bl FUN_0201D830
+ b _0201D9F0
+_0201D9EE:
+ add r0, r4, #0x0
+_0201D9F0:
+ cmp r4, #0x1
+ bne _0201D9FE
+ mov r2, #0x1
+ lsl r2, r2, #0x1a
+ ldr r1, [r5, #0x34]
+ ldr r2, [r2, #0x0]
+ b _0201DA04
+_0201D9FE:
+ ldr r2, _0201DA34 ; =0x04001000
+ ldr r1, [r5, #0x38]
+ ldr r2, [r2, #0x0]
+_0201DA04:
+ cmp r0, #0x0
+ ldr r0, [r5, #0x0]
+ bne _0201DA16
+ add r5, #0x10
+ add r2, r4, #0x0
+ add r3, r5, #0x0
+ blx FUN_020B1528
+ b _0201DA20
+_0201DA16:
+ add r5, #0x10
+ add r2, r4, #0x0
+ add r3, r5, #0x0
+ blx FUN_020B1768
+_0201DA20:
+ cmp r4, #0x1
+ bne _0201DA2C
+ mov r0, #0x1
+ lsl r0, r0, #0x1a
+ ldr r0, [r0, #0x0]
+ pop {r3-r5, pc}
+_0201DA2C:
+ ldr r0, _0201DA34 ; =0x04001000
+ ldr r0, [r0, #0x0]
+ pop {r3-r5, pc}
+ nop
+_0201DA34: .word 0x04001000
+
+ thumb_func_start FUN_0201DA38
+FUN_0201DA38: ; 0x0201DA38
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, #0x10
+ blx FUN_020B1A24
+ ldr r1, [r4, #0x4]
+ cmp r1, #0x3
+ beq _0201DA50
+ add r0, r4, #0x0
+ bl FUN_0201DA64
+ pop {r4, pc}
+_0201DA50:
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_0201DA64
+ add r0, r4, #0x0
+ mov r1, #0x2
+ bl FUN_0201DA64
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201DA64
+FUN_0201DA64: ; 0x0201DA64
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r2, [r5, #0x40]
+ add r4, r1, #0x0
+ cmp r2, #0x0
+ beq _0201DA74
+ bl FUN_0201D830
+_0201DA74:
+ cmp r4, #0x1
+ bne _0201DA82
+ mov r0, #0x1
+ lsl r0, r0, #0x1a
+ ldr r1, [r5, #0x34]
+ ldr r0, [r0, #0x0]
+ b _0201DA88
+_0201DA82:
+ ldr r0, _0201DAA8 ; =0x04001000
+ ldr r1, [r5, #0x38]
+ ldr r0, [r0, #0x0]
+_0201DA88:
+ ldr r0, [r5, #0x0]
+ add r5, #0x10
+ add r2, r4, #0x0
+ add r3, r5, #0x0
+ blx FUN_020B1340
+ cmp r4, #0x1
+ bne _0201DAA0
+ mov r0, #0x1
+ lsl r0, r0, #0x1a
+ ldr r0, [r0, #0x0]
+ pop {r3-r5, pc}
+_0201DAA0:
+ ldr r0, _0201DAA8 ; =0x04001000
+ ldr r0, [r0, #0x0]
+ pop {r3-r5, pc}
+ nop
+_0201DAA8: .word 0x04001000
+
+ thumb_func_start FUN_0201DAAC
+FUN_0201DAAC: ; 0x0201DAAC
+ push {r3-r4}
+ ldr r1, _0201DAE4 ; =0x021C5994
+ mov r0, #0x0
+ ldr r4, [r1, #0x0]
+ ldr r1, [r4, #0x4]
+ cmp r1, #0x0
+ ble _0201DADC
+ ldr r1, [r4, #0x0]
+ add r3, r1, #0x0
+_0201DABE:
+ add r2, r3, #0x0
+ add r2, #0x3c
+ ldrb r2, [r2, #0x0]
+ cmp r2, #0x0
+ bne _0201DAD2
+ mov r2, #0x54
+ mul r2, r0
+ add r0, r1, r2
+ pop {r3-r4}
+ bx lr
+_0201DAD2:
+ ldr r2, [r4, #0x4]
+ add r0, r0, #0x1
+ add r3, #0x54
+ cmp r0, r2
+ blt _0201DABE
+_0201DADC:
+ mov r0, #0x0
+ pop {r3-r4}
+ bx lr
+ nop
+_0201DAE4: .word 0x021C5994
+
+ thumb_func_start FUN_0201DAE8
+FUN_0201DAE8: ; 0x0201DAE8
+ push {r3, lr}
+ blx FUN_020C5DBC
+ cmp r0, #0x30
+ bgt _0201DB18
+ bge _0201DB60
+ cmp r0, #0x10
+ bgt _0201DB12
+ bge _0201DB54
+ cmp r0, #0x3
+ bhi _0201DB90
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0201DB0A: ; jump table (using 16-bit offset)
+ .short _0201DB32 - _0201DB0A - 2; case 0
+ .short _0201DB78 - _0201DB0A - 2; case 1
+ .short _0201DB78 - _0201DB0A - 2; case 2
+ .short _0201DB84 - _0201DB0A - 2; case 3
+_0201DB12:
+ cmp r0, #0x20
+ beq _0201DB3C
+ b _0201DB90
+_0201DB18:
+ cmp r0, #0x50
+ bgt _0201DB24
+ bge _0201DB60
+ cmp r0, #0x40
+ beq _0201DB3C
+ b _0201DB90
+_0201DB24:
+ cmp r0, #0x60
+ bgt _0201DB2C
+ beq _0201DB48
+ b _0201DB90
+_0201DB2C:
+ cmp r0, #0x70
+ beq _0201DB6C
+ b _0201DB90
+_0201DB32:
+ ldr r0, _0201DC38 ; =0x021C5994
+ mov r1, #0x0
+ ldr r0, [r0, #0x0]
+ str r1, [r0, #0x14]
+ b _0201DB98
+_0201DB3C:
+ ldr r0, _0201DC38 ; =0x021C5994
+ mov r1, #0x1
+ ldr r0, [r0, #0x0]
+ lsl r1, r1, #0xe
+ str r1, [r0, #0x14]
+ b _0201DB98
+_0201DB48:
+ ldr r0, _0201DC38 ; =0x021C5994
+ mov r1, #0x2
+ ldr r0, [r0, #0x0]
+ lsl r1, r1, #0xe
+ str r1, [r0, #0x14]
+ b _0201DB98
+_0201DB54:
+ ldr r0, _0201DC38 ; =0x021C5994
+ mov r1, #0x1
+ ldr r0, [r0, #0x0]
+ lsl r1, r1, #0x10
+ str r1, [r0, #0x14]
+ b _0201DB98
+_0201DB60:
+ ldr r0, _0201DC38 ; =0x021C5994
+ mov r1, #0x5
+ ldr r0, [r0, #0x0]
+ lsl r1, r1, #0xe
+ str r1, [r0, #0x14]
+ b _0201DB98
+_0201DB6C:
+ ldr r0, _0201DC38 ; =0x021C5994
+ mov r1, #0x6
+ ldr r0, [r0, #0x0]
+ lsl r1, r1, #0xe
+ str r1, [r0, #0x14]
+ b _0201DB98
+_0201DB78:
+ ldr r0, _0201DC38 ; =0x021C5994
+ mov r1, #0x2
+ ldr r0, [r0, #0x0]
+ lsl r1, r1, #0x10
+ str r1, [r0, #0x14]
+ b _0201DB98
+_0201DB84:
+ ldr r0, _0201DC38 ; =0x021C5994
+ mov r1, #0x1
+ ldr r0, [r0, #0x0]
+ lsl r1, r1, #0x12
+ str r1, [r0, #0x14]
+ b _0201DB98
+_0201DB90:
+ ldr r0, _0201DC38 ; =0x021C5994
+ mov r1, #0x0
+ ldr r0, [r0, #0x0]
+ str r1, [r0, #0x14]
+_0201DB98:
+ blx FUN_020C5D4C
+ cmp r0, #0x0
+ beq _0201DBAE
+ cmp r0, #0x8
+ beq _0201DBC2
+ mov r1, #0x1
+ lsl r1, r1, #0x8
+ cmp r0, r1
+ beq _0201DBB8
+ b _0201DBCE
+_0201DBAE:
+ ldr r0, _0201DC38 ; =0x021C5994
+ mov r1, #0x0
+ ldr r0, [r0, #0x0]
+ str r1, [r0, #0x18]
+ b _0201DBD6
+_0201DBB8:
+ ldr r0, _0201DC38 ; =0x021C5994
+ lsl r1, r1, #0x6
+ ldr r0, [r0, #0x0]
+ str r1, [r0, #0x18]
+ b _0201DBD6
+_0201DBC2:
+ ldr r0, _0201DC38 ; =0x021C5994
+ mov r1, #0x2
+ ldr r0, [r0, #0x0]
+ lsl r1, r1, #0x10
+ str r1, [r0, #0x18]
+ b _0201DBD6
+_0201DBCE:
+ ldr r0, _0201DC38 ; =0x021C5994
+ mov r1, #0x0
+ ldr r0, [r0, #0x0]
+ str r1, [r0, #0x18]
+_0201DBD6:
+ ldr r0, _0201DC38 ; =0x021C5994
+ ldr r1, [r0, #0x0]
+ ldr r0, [r1, #0x24]
+ ldr r1, [r1, #0x2c]
+ bl FUN_0201DF3C
+ ldr r1, _0201DC38 ; =0x021C5994
+ ldr r3, [r1, #0x0]
+ ldr r2, [r3, #0x14]
+ sub r0, r2, r0
+ str r0, [r3, #0x1c]
+ ldr r1, [r1, #0x0]
+ ldr r0, [r1, #0x28]
+ ldr r1, [r1, #0x30]
+ bl FUN_0201DF3C
+ ldr r1, _0201DC38 ; =0x021C5994
+ ldr r3, [r1, #0x0]
+ ldr r2, [r3, #0x18]
+ sub r0, r2, r0
+ str r0, [r3, #0x20]
+ ldr r1, [r1, #0x0]
+ mov r2, #0x0
+ ldr r0, [r1, #0x1c]
+ cmp r0, #0x0
+ blt _0201DC12
+ ldr r0, [r1, #0x20]
+ cmp r0, #0x0
+ blt _0201DC12
+ mov r2, #0x1
+_0201DC12:
+ cmp r2, #0x0
+ bne _0201DC1A
+ bl ErrorHandling
+_0201DC1A:
+ ldr r0, _0201DC38 ; =0x021C5994
+ mov r2, #0x0
+ ldr r1, [r0, #0x0]
+ ldr r0, [r1, #0x1c]
+ cmp r0, #0x0
+ blt _0201DC2E
+ ldr r0, [r1, #0x20]
+ cmp r0, #0x0
+ blt _0201DC2E
+ mov r2, #0x1
+_0201DC2E:
+ cmp r2, #0x0
+ bne _0201DC36
+ bl ErrorHandling
+_0201DC36:
+ pop {r3, pc}
+ .balign 4
+_0201DC38: .word 0x021C5994
+
+ thumb_func_start FUN_0201DC3C
+FUN_0201DC3C: ; 0x0201DC3C
+ push {r3, lr}
+ ldr r0, _0201DC54 ; =0x021C5994
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x34]
+ bl FUN_0201DD00
+ ldr r0, _0201DC54 ; =0x021C5994
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x38]
+ bl FUN_0201DD00
+ pop {r3, pc}
+ .balign 4
+_0201DC54: .word 0x021C5994
+
+ thumb_func_start FUN_0201DC58
+FUN_0201DC58: ; 0x0201DC58
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, _0201DCBC ; =0x021C5994
+ add r4, r1, #0x0
+ ldr r1, [r0, #0x0]
+ add r6, r2, #0x0
+ str r5, [r1, #0x24]
+ ldr r1, [r0, #0x0]
+ str r4, [r1, #0x28]
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x34]
+ cmp r0, #0x0
+ beq _0201DC76
+ bl FUN_02016A18
+_0201DC76:
+ ldr r0, _0201DCBC ; =0x021C5994
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x38]
+ cmp r0, #0x0
+ beq _0201DC84
+ bl FUN_02016A18
+_0201DC84:
+ ldr r0, _0201DCBC ; =0x021C5994
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x24]
+ cmp r0, #0x0
+ beq _0201DC9C
+ add r0, r6, #0x0
+ lsr r1, r5, #0x3
+ bl FUN_02016998
+ ldr r1, _0201DCBC ; =0x021C5994
+ ldr r1, [r1, #0x0]
+ str r0, [r1, #0x34]
+_0201DC9C:
+ ldr r0, _0201DCBC ; =0x021C5994
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x28]
+ cmp r0, #0x0
+ beq _0201DCB4
+ add r0, r6, #0x0
+ lsr r1, r4, #0x3
+ bl FUN_02016998
+ ldr r1, _0201DCBC ; =0x021C5994
+ ldr r1, [r1, #0x0]
+ str r0, [r1, #0x38]
+_0201DCB4:
+ bl FUN_0201DC3C
+ pop {r4-r6, pc}
+ nop
+_0201DCBC: .word 0x021C5994
+
+ thumb_func_start FUN_0201DCC0
+FUN_0201DCC0: ; 0x0201DCC0
+ push {r3, lr}
+ cmp r0, #0x0
+ beq _0201DCE2
+ ldr r1, _0201DCE4 ; =0x021C5994
+ ldr r2, [r1, #0x0]
+ ldr r1, [r2, #0x34]
+ cmp r0, r1
+ bne _0201DCDA
+ mov r1, #0x0
+ str r1, [r2, #0x24]
+ bl FUN_02016A18
+ pop {r3, pc}
+_0201DCDA:
+ mov r1, #0x0
+ str r1, [r2, #0x28]
+ bl FUN_02016A18
+_0201DCE2:
+ pop {r3, pc}
+ .balign 4
+_0201DCE4: .word 0x021C5994
+
+ thumb_func_start FUN_0201DCE8
+FUN_0201DCE8: ; 0x0201DCE8
+ ldr r1, _0201DCFC ; =0x021C5994
+ ldr r2, [r1, #0x0]
+ ldr r1, [r2, #0x34]
+ cmp r0, r1
+ bne _0201DCF6
+ ldr r0, [r2, #0x24]
+ bx lr
+_0201DCF6:
+ ldr r0, [r2, #0x28]
+ bx lr
+ nop
+_0201DCFC: .word 0x021C5994
+
+ thumb_func_start FUN_0201DD00
+FUN_0201DD00: ; 0x0201DD00
+ push {r4, lr}
+ add r4, r0, #0x0
+ beq _0201DD16
+ bl FUN_0201DCE8
+ add r2, r0, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x0
+ lsr r2, r2, #0x3
+ blx FUN_020DF4A4
+_0201DD16:
+ pop {r4, pc}
+
+ thumb_func_start FUN_0201DD18
+FUN_0201DD18: ; 0x0201DD18
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ add r4, r2, #0x0
+ beq _0201DD6E
+ add r0, r4, #0x0
+ bl FUN_0201DCE8
+ add r6, r5, r6
+ add r7, r0, #0x0
+ cmp r5, r6
+ bhs _0201DD6E
+_0201DD32:
+ cmp r5, r7
+ bhs _0201DD6E
+ add r0, r5, #0x0
+ add r1, sp, #0x4
+ add r2, sp, #0x0
+ bl FUN_0201DFE4
+ add r0, sp, #0x0
+ ldrb r1, [r0, #0x0]
+ mov r0, #0x1
+ lsl r0, r1
+ ldr r1, [sp, #0x4]
+ ldrb r1, [r4, r1]
+ tst r0, r1
+ beq _0201DD54
+ bl ErrorHandling
+_0201DD54:
+ add r2, sp, #0x0
+ ldrb r3, [r2, #0x0]
+ ldr r1, [sp, #0x4]
+ mov r2, #0x1
+ lsl r2, r3
+ lsl r2, r2, #0x18
+ ldrb r0, [r4, r1]
+ lsr r2, r2, #0x18
+ add r5, r5, #0x1
+ orr r0, r2
+ strb r0, [r4, r1]
+ cmp r5, r6
+ blo _0201DD32
+_0201DD6E:
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201DD74
+FUN_0201DD74: ; 0x0201DD74
+ push {r3-r7, lr}
+ sub sp, #0x10
+ add r7, r0, #0x0
+ str r1, [sp, #0x0]
+ cmp r1, #0x0
+ beq _0201DDF2
+ add r0, r1, #0x0
+ bl FUN_0201DCE8
+ mov r6, #0x0
+ str r0, [sp, #0x4]
+ cmp r0, #0x0
+ bls _0201DDF2
+_0201DD8E:
+ add r0, r6, #0x0
+ add r1, sp, #0xc
+ add r2, sp, #0x8
+ bl FUN_0201DFE4
+ add r0, sp, #0x8
+ ldrb r1, [r0, #0x0]
+ mov r0, #0x1
+ mov r4, #0x0
+ lsl r0, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ b _0201DDD0
+_0201DDA8:
+ add r5, r6, r4
+ add r0, r5, #0x0
+ add r1, sp, #0xc
+ add r2, sp, #0x8
+ bl FUN_0201DFE4
+ add r0, sp, #0x8
+ ldrb r1, [r0, #0x0]
+ mov r0, #0x1
+ lsl r0, r1
+ lsl r0, r0, #0x18
+ ldr r1, [sp, #0x4]
+ lsr r0, r0, #0x18
+ cmp r5, r1
+ blo _0201DDCE
+ mov r0, #0x0
+ add sp, #0x10
+ mvn r0, r0
+ pop {r3-r7, pc}
+_0201DDCE:
+ add r4, r4, #0x1
+_0201DDD0:
+ ldr r2, [sp, #0xc]
+ ldr r1, [sp, #0x0]
+ ldrb r1, [r1, r2]
+ tst r0, r1
+ bne _0201DDDE
+ cmp r4, r7
+ bls _0201DDA8
+_0201DDDE:
+ cmp r4, r7
+ bls _0201DDE8
+ add sp, #0x10
+ add r0, r6, #0x0
+ pop {r3-r7, pc}
+_0201DDE8:
+ add r0, r6, r4
+ add r6, r0, #0x1
+ ldr r0, [sp, #0x4]
+ cmp r6, r0
+ blo _0201DD8E
+_0201DDF2:
+ mov r0, #0x0
+ mvn r0, r0
+ add sp, #0x10
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201DDFC
+FUN_0201DDFC: ; 0x0201DDFC
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ add r4, r2, #0x0
+ beq _0201DE46
+ add r6, r5, r1
+ cmp r5, r6
+ bhs _0201DE46
+ add r7, sp, #0x0
+_0201DE0E:
+ add r0, r5, #0x0
+ add r1, sp, #0x4
+ add r2, sp, #0x0
+ bl FUN_0201DFE4
+ ldrb r1, [r7, #0x0]
+ mov r0, #0x1
+ lsl r0, r1
+ ldr r1, [sp, #0x4]
+ ldrb r1, [r4, r1]
+ tst r0, r1
+ bne _0201DE2A
+ bl ErrorHandling
+_0201DE2A:
+ ldrb r0, [r7, #0x0]
+ mov r1, #0x1
+ ldr r3, [sp, #0x4]
+ lsl r1, r0
+ mov r0, #0xff
+ eor r0, r1
+ lsl r0, r0, #0x18
+ ldrb r2, [r4, r3]
+ lsr r0, r0, #0x18
+ add r5, r5, #0x1
+ and r0, r2
+ strb r0, [r4, r3]
+ cmp r5, r6
+ blo _0201DE0E
+_0201DE46:
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201DE4C
+FUN_0201DE4C: ; 0x0201DE4C
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x4]
+ mov r1, #0x1
+ tst r0, r1
+ beq _0201DE8A
+ add r0, r4, #0x0
+ add r0, #0x10
+ blx FUN_020B1A14
+ ldr r1, _0201DECC ; =0x021C5994
+ ldr r2, [r1, #0x0]
+ ldr r1, [r2, #0x1c]
+ sub r0, r0, r1
+ ldr r1, [r2, #0x2c]
+ bl FUN_0201DF2C
+ ldr r1, _0201DECC ; =0x021C5994
+ add r5, r0, #0x0
+ ldr r1, [r1, #0x0]
+ ldr r0, [r4, #0x4c]
+ ldr r1, [r1, #0x2c]
+ bl FUN_0201DF2C
+ ldr r2, _0201DECC ; =0x021C5994
+ add r1, r0, #0x0
+ ldr r2, [r2, #0x0]
+ add r0, r5, #0x0
+ ldr r2, [r2, #0x34]
+ bl FUN_0201DDFC
+_0201DE8A:
+ ldr r0, [r4, #0x4]
+ mov r1, #0x2
+ tst r0, r1
+ beq _0201DEC4
+ add r0, r4, #0x0
+ add r0, #0x10
+ blx FUN_020B1A14
+ ldr r1, _0201DECC ; =0x021C5994
+ ldr r2, [r1, #0x0]
+ ldr r1, [r2, #0x20]
+ sub r0, r0, r1
+ ldr r1, [r2, #0x30]
+ bl FUN_0201DF2C
+ ldr r1, _0201DECC ; =0x021C5994
+ add r5, r0, #0x0
+ ldr r1, [r1, #0x0]
+ ldr r0, [r4, #0x50]
+ ldr r1, [r1, #0x30]
+ bl FUN_0201DF2C
+ ldr r2, _0201DECC ; =0x021C5994
+ add r1, r0, #0x0
+ ldr r2, [r2, #0x0]
+ add r0, r5, #0x0
+ ldr r2, [r2, #0x38]
+ bl FUN_0201DDFC
+_0201DEC4:
+ mov r0, #0x0
+ str r0, [r4, #0x48]
+ pop {r3-r5, pc}
+ nop
+_0201DECC: .word 0x021C5994
+
+ thumb_func_start FUN_0201DED0
+FUN_0201DED0: ; 0x0201DED0
+ ldr r1, _0201DF04 ; =0x00100010
+ cmp r0, r1
+ bgt _0201DEDE
+ bge _0201DEF4
+ cmp r0, #0x10
+ beq _0201DEF0
+ b _0201DF00
+_0201DEDE:
+ ldr r1, _0201DF08 ; =0x00200010
+ cmp r0, r1
+ bgt _0201DEE8
+ beq _0201DEF8
+ b _0201DF00
+_0201DEE8:
+ ldr r1, _0201DF0C ; =0x00300010
+ cmp r0, r1
+ beq _0201DEFC
+ b _0201DF00
+_0201DEF0:
+ mov r0, #0x1
+ bx lr
+_0201DEF4:
+ mov r0, #0x2
+ bx lr
+_0201DEF8:
+ mov r0, #0x4
+ bx lr
+_0201DEFC:
+ mov r0, #0x8
+ bx lr
+_0201DF00:
+ mov r0, #0x1
+ bx lr
+ .balign 4
+_0201DF04: .word 0x00100010
+_0201DF08: .word 0x00200010
+_0201DF0C: .word 0x00300010
+
+ thumb_func_start FUN_0201DF10
+FUN_0201DF10: ; 0x0201DF10
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ blx _s32_div_f
+ cmp r1, #0x0
+ beq _0201DF28
+ sub r5, r5, r1
+ cmp r6, #0x1
+ bne _0201DF28
+ add r5, r5, r4
+_0201DF28:
+ add r0, r5, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0201DF2C
+FUN_0201DF2C: ; 0x0201DF2C
+ asr r2, r0, #0x4
+ lsr r2, r2, #0x1b
+ add r2, r0, r2
+ ldr r3, _0201DF38 ; =_s32_div_f
+ asr r0, r2, #0x5
+ bx r3
+ .balign 4
+_0201DF38: .word _s32_div_f
+
+ thumb_func_start FUN_0201DF3C
+FUN_0201DF3C: ; 0x0201DF3C
+ mul r1, r0
+ lsl r0, r1, #0x5
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0201DF44
+FUN_0201DF44: ; 0x0201DF44
+ push {r3-r7, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r1, r2, #0x0
+ mov r0, #0x1
+ add r2, r4, #0x0
+ add r7, r3, #0x0
+ tst r2, r0
+ beq _0201DF6E
+ ldr r2, _0201DF90 ; =0x021C5994
+ ldr r2, [r2, #0x0]
+ ldr r6, [r2, #0xc]
+ ldr r2, [r2, #0x1c]
+ add r3, r6, r5
+ cmp r3, r2
+ bls _0201DF6C
+ bl ErrorHandling
+ mov r0, #0x0
+ b _0201DF6E
+_0201DF6C:
+ str r6, [r1, #0x0]
+_0201DF6E:
+ mov r1, #0x2
+ tst r1, r4
+ beq _0201DF8C
+ ldr r1, _0201DF90 ; =0x021C5994
+ ldr r1, [r1, #0x0]
+ ldr r3, [r1, #0x10]
+ ldr r1, [r1, #0x20]
+ add r2, r3, r5
+ cmp r2, r1
+ bls _0201DF8A
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0201DF8A:
+ str r3, [r7, #0x0]
+_0201DF8C:
+ pop {r3-r7, pc}
+ nop
+_0201DF90: .word 0x021C5994
+
+ thumb_func_start FUN_0201DF94
+FUN_0201DF94: ; 0x0201DF94
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ mov r2, #0x1
+ add r0, r4, #0x0
+ tst r0, r2
+ beq _0201DFBC
+ ldr r0, _0201DFE0 ; =0x021C5994
+ ldr r3, [r0, #0x0]
+ ldr r1, [r3, #0xc]
+ add r1, r1, r5
+ str r1, [r3, #0xc]
+ ldr r1, [r0, #0x0]
+ ldr r0, [r1, #0xc]
+ ldr r1, [r1, #0x2c]
+ bl FUN_0201DF10
+ ldr r1, _0201DFE0 ; =0x021C5994
+ ldr r1, [r1, #0x0]
+ str r0, [r1, #0xc]
+_0201DFBC:
+ mov r0, #0x2
+ tst r0, r4
+ beq _0201DFDE
+ ldr r0, _0201DFE0 ; =0x021C5994
+ ldr r2, [r0, #0x0]
+ ldr r1, [r2, #0x10]
+ add r1, r1, r5
+ str r1, [r2, #0x10]
+ ldr r1, [r0, #0x0]
+ mov r2, #0x1
+ ldr r0, [r1, #0x10]
+ ldr r1, [r1, #0x30]
+ bl FUN_0201DF10
+ ldr r1, _0201DFE0 ; =0x021C5994
+ ldr r1, [r1, #0x0]
+ str r0, [r1, #0x10]
+_0201DFDE:
+ pop {r3-r5, pc}
+ .balign 4
+_0201DFE0: .word 0x021C5994
+
+ thumb_func_start FUN_0201DFE4
+FUN_0201DFE4: ; 0x0201DFE4
+ asr r3, r0, #0x3
+ str r3, [r1, #0x0]
+ mov r1, #0x7
+ and r0, r1
+ strb r0, [r2, #0x0]
+ bx lr
+
+ thumb_func_start FUN_0201DFF0
+FUN_0201DFF0: ; 0x0201DFF0
+ push {r3-r4}
+ sub r0, r1, r0
+ ldr r4, [sp, #0x8]
+ str r0, [r3, #0x0]
+ bpl _0201E006
+ add r0, r2, r0
+ str r0, [r4, #0x0]
+ mov r0, #0x0
+ str r0, [r3, #0x0]
+ pop {r3-r4}
+ bx lr
+_0201E006:
+ str r2, [r4, #0x0]
+ pop {r3-r4}
+ bx lr
+
+ thumb_func_start FUN_0201E00C
+FUN_0201E00C: ; 0x0201E00C
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ ldr r0, _0201E064 ; =0x021C5998
+ add r4, r1, #0x0
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _0201E060
+ add r0, r4, #0x0
+ mov r1, #0x28
+ bl FUN_02016998
+ add r1, r0, #0x0
+ ldr r0, _0201E064 ; =0x021C5998
+ mov r2, #0x28
+ str r1, [r0, #0x0]
+ mov r0, #0x0
+ blx MIi_CpuClear32
+ ldr r0, _0201E064 ; =0x021C5998
+ mov r1, #0x30
+ ldr r0, [r0, #0x0]
+ mul r1, r6
+ str r6, [r0, #0x4]
+ add r0, r4, #0x0
+ bl FUN_02016998
+ ldr r7, _0201E064 ; =0x021C5998
+ mov r4, #0x0
+ ldr r1, [r7, #0x0]
+ cmp r6, #0x0
+ str r0, [r1, #0x0]
+ ble _0201E060
+ add r5, r4, #0x0
+_0201E04E:
+ ldr r0, [r7, #0x0]
+ ldr r0, [r0, #0x0]
+ add r0, r0, r5
+ bl FUN_0201E2F8
+ add r4, r4, #0x1
+ add r5, #0x30
+ cmp r4, r6
+ blt _0201E04E
+_0201E060:
+ pop {r3-r7, pc}
+ nop
+_0201E064: .word 0x021C5998
+
+ thumb_func_start FUN_0201E068
+FUN_0201E068: ; 0x0201E068
+ cmp r1, #0x1
+ bne _0201E078
+ ldr r1, _0201E088 ; =0x021C5998
+ ldr r2, [r1, #0x0]
+ ldrh r1, [r2, #0x24]
+ orr r0, r1
+ strh r0, [r2, #0x24]
+ bx lr
+_0201E078:
+ cmp r1, #0x2
+ bne _0201E086
+ ldr r1, _0201E088 ; =0x021C5998
+ ldr r2, [r1, #0x0]
+ ldrh r1, [r2, #0x26]
+ orr r0, r1
+ strh r0, [r2, #0x26]
+_0201E086:
+ bx lr
+ .balign 4
+_0201E088: .word 0x021C5998
+
+ thumb_func_start FUN_0201E08C
+FUN_0201E08C: ; 0x0201E08C
+ push {r3, lr}
+ ldr r0, _0201E0B4 ; =0x021C5998
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _0201E0B2
+ bl FUN_0201E1F0
+ ldr r0, _0201E0B4 ; =0x021C5998
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x0]
+ bl FUN_02016A18
+ ldr r0, _0201E0B4 ; =0x021C5998
+ ldr r0, [r0, #0x0]
+ bl FUN_02016A18
+ ldr r0, _0201E0B4 ; =0x021C5998
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+_0201E0B2:
+ pop {r3, pc}
+ .balign 4
+_0201E0B4: .word 0x021C5998
+
+ thumb_func_start FUN_0201E0B8
+FUN_0201E0B8: ; 0x0201E0B8
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0201E0BC
+FUN_0201E0BC: ; 0x0201E0BC
+ push {r3, lr}
+ ldr r0, _0201E0E0 ; =0x021C5998
+ mov r2, #0x0
+ ldr r1, [r0, #0x0]
+ str r2, [r1, #0xc]
+ ldr r1, [r0, #0x0]
+ str r2, [r1, #0x10]
+ ldr r1, [r0, #0x0]
+ str r2, [r1, #0x14]
+ ldr r0, [r0, #0x0]
+ str r2, [r0, #0x18]
+ bl FUN_0201E464
+ ldr r0, _0201E0E0 ; =0x021C5998
+ ldr r0, [r0, #0x0]
+ bl FUN_0201E574
+ pop {r3, pc}
+ .balign 4
+_0201E0E0: .word 0x021C5998
+
+ thumb_func_start FUN_0201E0E4
+FUN_0201E0E4: ; 0x0201E0E4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_0201E428
+ add r4, r0, #0x0
+ bne _0201E0F8
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0201E0F8:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0201E2C4
+ cmp r0, #0x0
+ bne _0201E108
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0201E108:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0201E314
+ cmp r0, #0x0
+ bne _0201E11E
+ ldr r0, [r5, #0xc]
+ bl FUN_0201E1C8
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0201E11E:
+ add r0, r4, #0x0
+ bl FUN_0201E57C
+ mov r0, #0x1
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0201E128
+FUN_0201E128: ; 0x0201E128
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_0201E428
+ add r4, r0, #0x0
+ bne _0201E13C
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0201E13C:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0201E2C4
+ cmp r0, #0x0
+ bne _0201E14C
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0201E14C:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0201E36C
+ cmp r0, #0x0
+ bne _0201E162
+ ldr r0, [r5, #0xc]
+ bl FUN_0201E1C8
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0201E162:
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201E168
+FUN_0201E168: ; 0x0201E168
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ add r5, r1, #0x0
+ bne _0201E174
+ bl ErrorHandling
+_0201E174:
+ add r0, r4, #0x0
+ bl FUN_0201E3F0
+ add r4, r0, #0x0
+ bne _0201E182
+ bl ErrorHandling
+_0201E182:
+ str r5, [r4, #0x0]
+ ldr r1, [r4, #0x4]
+ mov r0, #0x1
+ tst r0, r1
+ beq _0201E19A
+ ldr r3, [r4, #0x8]
+ ldr r1, [r4, #0x24]
+ ldr r2, [r5, #0xc]
+ mov r0, #0xe
+ lsl r3, r3, #0x5
+ bl FUN_0201C2C8
+_0201E19A:
+ ldr r1, [r4, #0x4]
+ mov r0, #0x2
+ tst r0, r1
+ beq _0201E1B0
+ ldr r3, [r4, #0x8]
+ ldr r1, [r4, #0x28]
+ ldr r2, [r5, #0xc]
+ mov r0, #0x1e
+ lsl r3, r3, #0x5
+ bl FUN_0201C2C8
+_0201E1B0:
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201E1B4
+FUN_0201E1B4: ; 0x0201E1B4
+ push {r3, lr}
+ bl FUN_0201E3F0
+ cmp r0, #0x0
+ beq _0201E1C2
+ mov r0, #0x1
+ pop {r3, pc}
+_0201E1C2:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201E1C8
+FUN_0201E1C8: ; 0x0201E1C8
+ push {r4, lr}
+ bl FUN_0201E3F0
+ add r4, r0, #0x0
+ bne _0201E1D6
+ bl ErrorHandling
+_0201E1D6:
+ add r0, r4, #0x0
+ add r0, #0x2c
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x1
+ bne _0201E1EC
+ add r0, r4, #0x0
+ bl FUN_0201E5B8
+ add r0, r4, #0x0
+ bl FUN_0201E2BC
+_0201E1EC:
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201E1F0
+FUN_0201E1F0: ; 0x0201E1F0
+ push {r4-r6, lr}
+ ldr r6, _0201E22C ; =0x021C5998
+ mov r4, #0x0
+ ldr r1, [r6, #0x0]
+ ldr r0, [r1, #0x4]
+ cmp r0, #0x0
+ ble _0201E228
+ add r5, r4, #0x0
+_0201E200:
+ ldr r1, [r1, #0x0]
+ add r0, r1, r5
+ add r0, #0x2c
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x1
+ bne _0201E21C
+ add r0, r1, r5
+ bl FUN_0201E5B8
+ ldr r0, [r6, #0x0]
+ ldr r0, [r0, #0x0]
+ add r0, r0, r5
+ bl FUN_0201E2BC
+_0201E21C:
+ ldr r1, [r6, #0x0]
+ add r4, r4, #0x1
+ ldr r0, [r1, #0x4]
+ add r5, #0x30
+ cmp r4, r0
+ blt _0201E200
+_0201E228:
+ pop {r4-r6, pc}
+ nop
+_0201E22C: .word 0x021C5998
+
+ thumb_func_start FUN_0201E230
+FUN_0201E230: ; 0x0201E230
+ push {r3, lr}
+ bl FUN_0201E3F0
+ cmp r0, #0x0
+ bne _0201E244
+ bne _0201E240
+ bl ErrorHandling
+_0201E240:
+ mov r0, #0x0
+ pop {r3, pc}
+_0201E244:
+ add r1, r0, #0x0
+ add r1, #0x2c
+ ldrb r1, [r1, #0x0]
+ cmp r1, #0x1
+ bne _0201E252
+ add r0, #0x10
+ pop {r3, pc}
+_0201E252:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201E258
+FUN_0201E258: ; 0x0201E258
+ push {r4, lr}
+ add r4, r1, #0x0
+ bl FUN_0201E3F0
+ cmp r0, #0x0
+ bne _0201E26E
+ bne _0201E26A
+ bl ErrorHandling
+_0201E26A:
+ mov r0, #0x0
+ pop {r4, pc}
+_0201E26E:
+ add r1, r0, #0x0
+ add r1, #0x2c
+ ldrb r1, [r1, #0x0]
+ cmp r1, #0x1
+ beq _0201E27C
+ mov r0, #0x0
+ pop {r4, pc}
+_0201E27C:
+ ldr r1, [r0, #0x0]
+ ldr r1, [r1, #0x4]
+ cmp r1, #0x0
+ beq _0201E288
+ mov r1, #0x1
+ str r1, [r4, #0x18]
+_0201E288:
+ add r0, #0x10
+ pop {r4, pc}
+
+ thumb_func_start FUN_0201E28C
+FUN_0201E28C: ; 0x0201E28C
+ push {r4, lr}
+ ldr r2, [r0, #0x4]
+ cmp r2, #0x0
+ beq _0201E29A
+ mov r4, #0x2
+ lsl r4, r4, #0x8
+ b _0201E2A6
+_0201E29A:
+ ldr r2, [r0, #0x0]
+ cmp r2, #0x4
+ bne _0201E2A4
+ mov r4, #0x0
+ b _0201E2A6
+_0201E2A4:
+ mov r4, #0x20
+_0201E2A6:
+ cmp r4, #0x0
+ beq _0201E2B6
+ blx FUN_020B19C4
+ add r1, r4, #0x0
+ blx _u32_div_f
+ pop {r4, pc}
+_0201E2B6:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201E2BC
+FUN_0201E2BC: ; 0x0201E2BC
+ ldr r3, _0201E2C0 ; =FUN_0201E2F8
+ bx r3
+ .balign 4
+_0201E2C0: .word FUN_0201E2F8
+
+ thumb_func_start FUN_0201E2C4
+FUN_0201E2C4: ; 0x0201E2C4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ add r4, r1, #0x0
+ str r0, [r4, #0x0]
+ ldr r0, [r5, #0xc]
+ bl FUN_0201E1B4
+ cmp r0, #0x1
+ bne _0201E2E0
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0201E2E0:
+ ldr r0, [r5, #0xc]
+ add r1, r4, #0x0
+ str r0, [r4, #0xc]
+ ldr r0, [r5, #0x4]
+ add r1, #0x2c
+ str r0, [r4, #0x4]
+ mov r0, #0x1
+ strb r0, [r1, #0x0]
+ ldr r1, [r5, #0x8]
+ str r1, [r4, #0x8]
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201E2F8
+FUN_0201E2F8: ; 0x0201E2F8
+ push {r4, lr}
+ mov r1, #0x0
+ mov r2, #0x30
+ add r4, r0, #0x0
+ blx FUN_020DF4A4
+ mov r0, #0x0
+ mvn r0, r0
+ str r0, [r4, #0xc]
+ add r4, #0x10
+ add r0, r4, #0x0
+ blx FUN_020B19DC
+ pop {r4, pc}
+
+ thumb_func_start FUN_0201E314
+FUN_0201E314: ; 0x0201E314
+ push {r3-r6, lr}
+ sub sp, #0x4
+ add r6, r1, #0x0
+ ldr r0, [r6, #0x0]
+ ldr r0, [r0, #0x4]
+ cmp r0, #0x0
+ beq _0201E334
+ ldr r0, _0201E368 ; =0x021C5998
+ ldr r0, [r0, #0x0]
+ add r4, r0, #0x0
+ add r5, r0, #0x0
+ ldr r3, [r0, #0x1c]
+ add r4, #0x14
+ add r5, #0x18
+ ldr r0, [r0, #0x20]
+ b _0201E344
+_0201E334:
+ ldr r0, _0201E368 ; =0x021C5998
+ mov r3, #0x2
+ ldr r5, [r0, #0x0]
+ lsl r3, r3, #0x8
+ add r4, r5, #0x0
+ add r4, #0xc
+ add r5, #0x10
+ add r0, r3, #0x0
+_0201E344:
+ str r0, [sp, #0x0]
+ ldr r1, [r4, #0x0]
+ ldr r2, [r5, #0x0]
+ add r0, r6, #0x0
+ bl FUN_0201E5F4
+ add r0, r6, #0x0
+ bl FUN_0201E4AC
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ add r2, r5, #0x0
+ bl FUN_0201E640
+ mov r0, #0x1
+ add sp, #0x4
+ pop {r3-r6, pc}
+ nop
+_0201E368: .word 0x021C5998
+
+ thumb_func_start FUN_0201E36C
+FUN_0201E36C: ; 0x0201E36C
+ push {r4-r6, lr}
+ add r5, r1, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0x4]
+ cmp r0, #0x0
+ beq _0201E37C
+ bl ErrorHandling
+_0201E37C:
+ ldr r1, [r5, #0x4]
+ mov r0, #0x1
+ tst r0, r1
+ beq _0201E39E
+ ldr r0, _0201E3EC ; =0x021C5998
+ ldr r1, [r5, #0x8]
+ ldr r0, [r0, #0x0]
+ ldrh r0, [r0, #0x24]
+ bl FUN_0201E534
+ add r6, r0, #0x0
+ mov r0, #0x0
+ mvn r0, r0
+ cmp r6, r0
+ bne _0201E39E
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_0201E39E:
+ ldr r1, [r5, #0x4]
+ mov r0, #0x2
+ tst r0, r1
+ beq _0201E3C0
+ ldr r0, _0201E3EC ; =0x021C5998
+ ldr r1, [r5, #0x8]
+ ldr r0, [r0, #0x0]
+ ldrh r0, [r0, #0x26]
+ bl FUN_0201E534
+ add r4, r0, #0x0
+ mov r0, #0x0
+ mvn r0, r0
+ cmp r4, r0
+ bne _0201E3C0
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_0201E3C0:
+ ldr r1, [r5, #0x4]
+ mov r0, #0x1
+ tst r0, r1
+ beq _0201E3CA
+ str r6, [r5, #0x24]
+_0201E3CA:
+ ldr r1, [r5, #0x4]
+ mov r0, #0x2
+ tst r0, r1
+ beq _0201E3D4
+ str r4, [r5, #0x28]
+_0201E3D4:
+ ldr r0, [r5, #0x8]
+ lsl r1, r0, #0x5
+ ldr r0, [r5, #0x0]
+ str r1, [r0, #0x8]
+ add r0, r5, #0x0
+ bl FUN_0201E4BC
+ add r0, r5, #0x0
+ bl FUN_0201E57C
+ mov r0, #0x1
+ pop {r4-r6, pc}
+ .balign 4
+_0201E3EC: .word 0x021C5998
+
+ thumb_func_start FUN_0201E3F0
+FUN_0201E3F0: ; 0x0201E3F0
+ push {r4-r5}
+ ldr r2, _0201E424 ; =0x021C5998
+ mov r1, #0x0
+ ldr r5, [r2, #0x0]
+ ldr r2, [r5, #0x4]
+ cmp r2, #0x0
+ ble _0201E41C
+ ldr r2, [r5, #0x0]
+ add r4, r2, #0x0
+_0201E402:
+ ldr r3, [r4, #0xc]
+ cmp r0, r3
+ bne _0201E412
+ mov r0, #0x30
+ mul r0, r1
+ add r0, r2, r0
+ pop {r4-r5}
+ bx lr
+_0201E412:
+ ldr r3, [r5, #0x4]
+ add r1, r1, #0x1
+ add r4, #0x30
+ cmp r1, r3
+ blt _0201E402
+_0201E41C:
+ mov r0, #0x0
+ pop {r4-r5}
+ bx lr
+ nop
+_0201E424: .word 0x021C5998
+
+ thumb_func_start FUN_0201E428
+FUN_0201E428: ; 0x0201E428
+ push {r3-r4}
+ ldr r1, _0201E460 ; =0x021C5998
+ mov r0, #0x0
+ ldr r4, [r1, #0x0]
+ ldr r1, [r4, #0x4]
+ cmp r1, #0x0
+ ble _0201E458
+ ldr r1, [r4, #0x0]
+ add r3, r1, #0x0
+_0201E43A:
+ add r2, r3, #0x0
+ add r2, #0x2c
+ ldrb r2, [r2, #0x0]
+ cmp r2, #0x0
+ bne _0201E44E
+ mov r2, #0x30
+ mul r2, r0
+ add r0, r1, r2
+ pop {r3-r4}
+ bx lr
+_0201E44E:
+ ldr r2, [r4, #0x4]
+ add r0, r0, #0x1
+ add r3, #0x30
+ cmp r0, r2
+ blt _0201E43A
+_0201E458:
+ mov r0, #0x0
+ pop {r3-r4}
+ bx lr
+ nop
+_0201E460: .word 0x021C5998
+
+ thumb_func_start FUN_0201E464
+FUN_0201E464: ; 0x0201E464
+ push {r3, lr}
+ blx FUN_020C5D9C
+ cmp r0, #0x20
+ beq _0201E472
+ cmp r0, #0x40
+ bne _0201E47E
+_0201E472:
+ ldr r0, _0201E4A8 ; =0x021C5998
+ mov r1, #0x2
+ ldr r0, [r0, #0x0]
+ lsl r1, r1, #0xc
+ str r1, [r0, #0x1c]
+ b _0201E486
+_0201E47E:
+ ldr r0, _0201E4A8 ; =0x021C5998
+ mov r1, #0x0
+ ldr r0, [r0, #0x0]
+ str r1, [r0, #0x1c]
+_0201E486:
+ blx FUN_020C5D2C
+ mov r1, #0x1
+ lsl r1, r1, #0x8
+ cmp r0, r1
+ bne _0201E49C
+ ldr r0, _0201E4A8 ; =0x021C5998
+ lsl r1, r1, #0x5
+ ldr r0, [r0, #0x0]
+ str r1, [r0, #0x20]
+ pop {r3, pc}
+_0201E49C:
+ ldr r0, _0201E4A8 ; =0x021C5998
+ mov r1, #0x0
+ ldr r0, [r0, #0x0]
+ str r1, [r0, #0x20]
+ pop {r3, pc}
+ nop
+_0201E4A8: .word 0x021C5998
+
+ thumb_func_start FUN_0201E4AC
+FUN_0201E4AC: ; 0x0201E4AC
+ ldr r1, [r0, #0x8]
+ ldr r3, _0201E4B8 ; =FUN_0201E4BC
+ lsl r2, r1, #0x5
+ ldr r1, [r0, #0x0]
+ str r2, [r1, #0x8]
+ bx r3
+ .balign 4
+_0201E4B8: .word FUN_0201E4BC
+
+ thumb_func_start FUN_0201E4BC
+FUN_0201E4BC: ; 0x0201E4BC
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, #0x10
+ blx FUN_020B19DC
+ ldr r0, [r4, #0x4]
+ mov r2, #0x1
+ tst r0, r2
+ beq _0201E4DA
+ add r3, r4, #0x0
+ ldr r0, [r4, #0x0]
+ ldr r1, [r4, #0x24]
+ add r3, #0x10
+ blx FUN_020B1240
+_0201E4DA:
+ ldr r0, [r4, #0x4]
+ mov r2, #0x2
+ tst r0, r2
+ beq _0201E4EE
+ ldr r0, [r4, #0x0]
+ ldr r1, [r4, #0x28]
+ add r4, #0x10
+ add r3, r4, #0x0
+ blx FUN_020B1240
+_0201E4EE:
+ pop {r4, pc}
+
+ thumb_func_start FUN_0201E4F0
+FUN_0201E4F0: ; 0x0201E4F0
+ push {r4-r7}
+ mov r3, #0x0
+ cmp r1, #0x0
+ ble _0201E50E
+ mov r5, #0x1
+_0201E4FA:
+ ldrh r7, [r0, #0x0]
+ add r4, r2, r3
+ add r6, r5, #0x0
+ lsl r6, r4
+ add r4, r7, #0x0
+ orr r4, r6
+ add r3, r3, #0x1
+ strh r4, [r0, #0x0]
+ cmp r3, r1
+ blt _0201E4FA
+_0201E50E:
+ pop {r4-r7}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0201E514
+FUN_0201E514: ; 0x0201E514
+ push {r4-r7}
+ mov r4, #0x0
+ cmp r1, #0x0
+ ble _0201E530
+ mov r6, #0x1
+_0201E51E:
+ add r5, r2, r4
+ add r7, r6, #0x0
+ ldrh r3, [r0, #0x0]
+ lsl r7, r5
+ bic r3, r7
+ add r4, r4, #0x1
+ strh r3, [r0, #0x0]
+ cmp r4, r1
+ blt _0201E51E
+_0201E530:
+ pop {r4-r7}
+ bx lr
+
+ thumb_func_start FUN_0201E534
+FUN_0201E534: ; 0x0201E534
+ push {r4-r7}
+ mov r3, #0x0
+ mov r6, #0x1
+ add r2, r3, #0x0
+_0201E53C:
+ add r4, r2, #0x0
+ b _0201E546
+_0201E540:
+ cmp r5, #0x10
+ bge _0201E554
+ add r4, r4, #0x1
+_0201E546:
+ add r5, r3, r4
+ add r7, r6, #0x0
+ lsl r7, r5
+ tst r7, r0
+ bne _0201E554
+ cmp r4, r1
+ blt _0201E540
+_0201E554:
+ cmp r4, r1
+ bge _0201E560
+ add r3, r3, r4
+ add r3, r3, #0x1
+ cmp r3, #0x10
+ blt _0201E53C
+_0201E560:
+ cmp r3, #0x10
+ blt _0201E56C
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4-r7}
+ bx lr
+_0201E56C:
+ lsl r0, r3, #0x5
+ pop {r4-r7}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0201E574
+FUN_0201E574: ; 0x0201E574
+ mov r1, #0x0
+ strh r1, [r0, #0x24]
+ strh r1, [r0, #0x26]
+ bx lr
+
+ thumb_func_start FUN_0201E57C
+FUN_0201E57C: ; 0x0201E57C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x4]
+ mov r0, #0x1
+ tst r0, r1
+ beq _0201E598
+ ldr r0, _0201E5B4 ; =0x021C5998
+ ldr r2, [r4, #0x24]
+ ldr r0, [r0, #0x0]
+ ldr r1, [r4, #0x8]
+ add r0, #0x24
+ lsr r2, r2, #0x5
+ bl FUN_0201E4F0
+_0201E598:
+ ldr r1, [r4, #0x4]
+ mov r0, #0x2
+ tst r0, r1
+ beq _0201E5B0
+ ldr r0, _0201E5B4 ; =0x021C5998
+ ldr r2, [r4, #0x28]
+ ldr r0, [r0, #0x0]
+ ldr r1, [r4, #0x8]
+ add r0, #0x26
+ lsr r2, r2, #0x5
+ bl FUN_0201E4F0
+_0201E5B0:
+ pop {r4, pc}
+ nop
+_0201E5B4: .word 0x021C5998
+
+ thumb_func_start FUN_0201E5B8
+FUN_0201E5B8: ; 0x0201E5B8
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x4]
+ mov r0, #0x1
+ tst r0, r1
+ beq _0201E5D4
+ ldr r0, _0201E5F0 ; =0x021C5998
+ ldr r2, [r4, #0x24]
+ ldr r0, [r0, #0x0]
+ ldr r1, [r4, #0x8]
+ add r0, #0x24
+ lsr r2, r2, #0x5
+ bl FUN_0201E514
+_0201E5D4:
+ ldr r1, [r4, #0x4]
+ mov r0, #0x2
+ tst r0, r1
+ beq _0201E5EC
+ ldr r0, _0201E5F0 ; =0x021C5998
+ ldr r2, [r4, #0x28]
+ ldr r0, [r0, #0x0]
+ ldr r1, [r4, #0x8]
+ add r0, #0x26
+ lsr r2, r2, #0x5
+ bl FUN_0201E514
+_0201E5EC:
+ pop {r4, pc}
+ nop
+_0201E5F0: .word 0x021C5998
+
+ thumb_func_start FUN_0201E5F4
+FUN_0201E5F4: ; 0x0201E5F4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r2, #0x0
+ ldr r2, [r5, #0x4]
+ mov r0, #0x1
+ tst r2, r0
+ beq _0201E61A
+ ldr r2, [r5, #0x8]
+ lsl r2, r2, #0x5
+ add r2, r1, r2
+ cmp r2, r3
+ bls _0201E618
+ bl ErrorHandling
+ bl FUN_0201E0B8
+ mov r0, #0x0
+ b _0201E61A
+_0201E618:
+ str r1, [r5, #0x24]
+_0201E61A:
+ ldr r2, [r5, #0x4]
+ mov r1, #0x2
+ tst r1, r2
+ beq _0201E63C
+ ldr r1, [r5, #0x8]
+ lsl r1, r1, #0x5
+ add r2, r4, r1
+ ldr r1, [sp, #0x10]
+ cmp r2, r1
+ bls _0201E63A
+ bl ErrorHandling
+ bl FUN_0201E0B8
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0201E63A:
+ str r4, [r5, #0x28]
+_0201E63C:
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201E640
+FUN_0201E640: ; 0x0201E640
+ push {r3-r4}
+ ldr r4, [r0, #0x4]
+ mov r3, #0x1
+ tst r3, r4
+ beq _0201E654
+ ldr r3, [r0, #0x8]
+ ldr r4, [r1, #0x0]
+ lsl r3, r3, #0x5
+ add r3, r4, r3
+ str r3, [r1, #0x0]
+_0201E654:
+ ldr r3, [r0, #0x4]
+ mov r1, #0x2
+ tst r1, r3
+ beq _0201E666
+ ldr r0, [r0, #0x8]
+ ldr r1, [r2, #0x0]
+ lsl r0, r0, #0x5
+ add r0, r1, r0
+ str r0, [r2, #0x0]
+_0201E666:
+ pop {r3-r4}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0201E66C
+FUN_0201E66C: ; 0x0201E66C
+ push {r4, lr}
+ add r4, r0, #0x0
+ blx FUN_020C611C
+ blx FUN_020C60E4
+ blx FUN_020C6070
+ blx FUN_020C6034
+ blx FUN_020C6108
+ blx FUN_020C60C0
+ blx FUN_020C605C
+ blx FUN_020C600C
+ blx FUN_020C60AC
+ blx FUN_020C6098
+ ldr r0, [r4, #0x0]
+ blx FUN_020C6BF0
+ ldr r0, [r4, #0x4]
+ blx FUN_020C6970
+ ldr r0, [r4, #0x8]
+ blx FUN_020C62FC
+ ldr r0, [r4, #0xc]
+ blx FUN_020C61F4
+ ldr r0, [r4, #0x10]
+ blx FUN_020C6A84
+ ldr r0, [r4, #0x14]
+ blx FUN_020C68B8
+ ldr r0, [r4, #0x18]
+ blx FUN_020C6280
+ ldr r0, [r4, #0x1c]
+ blx FUN_020C6168
+ ldr r0, [r4, #0x20]
+ blx FUN_020C66B4
+ ldr r0, [r4, #0x24]
+ blx FUN_020C65C0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201E6D8
+FUN_0201E6D8: ; 0x0201E6D8
+ ldr r0, _0201E6E0 ; =0x021C599C
+ mov r1, #0x0
+ str r1, [r0, #0x4]
+ bx lr
+ .balign 4
+_0201E6E0: .word 0x021C599C
+
+ thumb_func_start FUN_0201E6E4
+FUN_0201E6E4: ; 0x0201E6E4
+ cmp r1, #0x1
+ bne _0201E6F2
+ ldr r1, _0201E718 ; =0x021C599C
+ ldr r1, [r1, #0x4]
+ tst r1, r0
+ beq _0201E6FA
+ bx lr
+_0201E6F2:
+ ldr r1, _0201E718 ; =0x021C599C
+ ldr r1, [r1, #0x4]
+ tst r1, r0
+ beq _0201E714
+_0201E6FA:
+ ldr r1, _0201E718 ; =0x021C599C
+ ldr r2, [r1, #0x4]
+ add r3, r2, #0x0
+ eor r3, r0
+ mov r2, #0x1
+ lsl r2, r2, #0x1a
+ str r3, [r1, #0x4]
+ ldr r1, [r2, #0x0]
+ ldr r0, _0201E71C ; =0xFFFFE0FF
+ and r1, r0
+ lsl r0, r3, #0x8
+ orr r0, r1
+ str r0, [r2, #0x0]
+_0201E714:
+ bx lr
+ nop
+_0201E718: .word 0x021C599C
+_0201E71C: .word 0xFFFFE0FF
+
+ thumb_func_start FUN_0201E720
+FUN_0201E720: ; 0x0201E720
+ ldr r1, _0201E738 ; =0x021C599C
+ mov r3, #0x1
+ str r0, [r1, #0x4]
+ lsl r3, r3, #0x1a
+ ldr r2, [r3, #0x0]
+ ldr r1, _0201E73C ; =0xFFFFE0FF
+ lsl r0, r0, #0x8
+ and r1, r2
+ orr r0, r1
+ str r0, [r3, #0x0]
+ bx lr
+ nop
+_0201E738: .word 0x021C599C
+_0201E73C: .word 0xFFFFE0FF
+
+ thumb_func_start FUN_0201E740
+FUN_0201E740: ; 0x0201E740
+ ldr r0, _0201E748 ; =0x021C599C
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+ bx lr
+ .balign 4
+_0201E748: .word 0x021C599C
+
+ thumb_func_start FUN_0201E74C
+FUN_0201E74C: ; 0x0201E74C
+ cmp r1, #0x1
+ bne _0201E75A
+ ldr r1, _0201E77C ; =0x021C599C
+ ldr r1, [r1, #0x0]
+ tst r1, r0
+ beq _0201E762
+ bx lr
+_0201E75A:
+ ldr r1, _0201E77C ; =0x021C599C
+ ldr r1, [r1, #0x0]
+ tst r1, r0
+ beq _0201E77A
+_0201E762:
+ ldr r1, _0201E77C ; =0x021C599C
+ ldr r2, [r1, #0x0]
+ add r3, r2, #0x0
+ eor r3, r0
+ ldr r2, _0201E780 ; =0x04001000
+ str r3, [r1, #0x0]
+ ldr r1, [r2, #0x0]
+ ldr r0, _0201E784 ; =0xFFFFE0FF
+ and r1, r0
+ lsl r0, r3, #0x8
+ orr r0, r1
+ str r0, [r2, #0x0]
+_0201E77A:
+ bx lr
+ .balign 4
+_0201E77C: .word 0x021C599C
+_0201E780: .word 0x04001000
+_0201E784: .word 0xFFFFE0FF
+
+ thumb_func_start FUN_0201E788
+FUN_0201E788: ; 0x0201E788
+ push {r3, lr}
+ blx FUN_020C5A34
+ ldr r2, _0201E79C ; =0x04001000
+ mov r0, #0x1
+ ldr r1, [r2, #0x0]
+ lsl r0, r0, #0x10
+ orr r0, r1
+ str r0, [r2, #0x0]
+ pop {r3, pc}
+ .balign 4
+_0201E79C: .word 0x04001000
+
+ thumb_func_start FUN_0201E7A0
+FUN_0201E7A0: ; 0x0201E7A0
+ ldr r0, _0201E7C0 ; =0x021C4918
+ ldr r2, _0201E7C4 ; =0x04000304
+ ldrb r0, [r0, #0x5]
+ cmp r0, #0x0
+ bne _0201E7B4
+ ldrh r1, [r2, #0x0]
+ lsr r0, r2, #0xb
+ orr r0, r1
+ strh r0, [r2, #0x0]
+ bx lr
+_0201E7B4:
+ ldrh r1, [r2, #0x0]
+ ldr r0, _0201E7C8 ; =0xFFFF7FFF
+ and r0, r1
+ strh r0, [r2, #0x0]
+ bx lr
+ nop
+_0201E7C0: .word 0x021C4918
+_0201E7C4: .word 0x04000304
+_0201E7C8: .word 0xFFFF7FFF
+
+ thumb_func_start FUN_0201E7CC
+FUN_0201E7CC: ; 0x0201E7CC
+ ldr r0, _0201E7D4 ; =0x021C599C
+ ldr r0, [r0, #0x4]
+ bx lr
+ nop
+_0201E7D4: .word 0x021C599C
+
+ thumb_func_start FUN_0201E7D8
+FUN_0201E7D8: ; 0x0201E7D8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldrh r0, [r5, #0x3e]
+ ldr r2, [r5, #0x38]
+ ldrh r4, [r5, #0x3c]
+ asr r0, r0, #0x4
+ lsl r1, r0, #0x2
+ ldr r0, _0201E8B4 ; =0x020FFA38
+ asr r3, r2, #0x1f
+ ldrsh r0, [r0, r1]
+ asr r1, r0, #0x1f
+ blx _ll_mul
+ mov r2, #0x2
+ mov r3, #0x0
+ lsl r2, r2, #0xa
+ add r0, r0, r2
+ adc r1, r3
+ asr r2, r4, #0x4
+ lsl r2, r2, #0x1
+ add r2, r2, #0x1
+ lsl r3, r2, #0x1
+ ldr r2, _0201E8B4 ; =0x020FFA38
+ lsl r1, r1, #0x14
+ ldrsh r2, [r2, r3]
+ lsr r0, r0, #0xc
+ orr r0, r1
+ asr r1, r0, #0x1f
+ asr r3, r2, #0x1f
+ blx _ll_mul
+ mov r2, #0x2
+ mov r3, #0x0
+ lsl r2, r2, #0xa
+ add r2, r0, r2
+ adc r1, r3
+ lsl r0, r1, #0x14
+ lsr r1, r2, #0xc
+ orr r1, r0
+ str r1, [r5, #0x14]
+ ldrh r0, [r5, #0x3e]
+ ldr r2, [r5, #0x38]
+ asr r0, r0, #0x4
+ lsl r0, r0, #0x1
+ add r0, r0, #0x1
+ lsl r1, r0, #0x1
+ ldr r0, _0201E8B4 ; =0x020FFA38
+ asr r3, r2, #0x1f
+ ldrsh r0, [r0, r1]
+ asr r1, r0, #0x1f
+ blx _ll_mul
+ mov r2, #0x2
+ lsl r2, r2, #0xa
+ mov r3, #0x0
+ add r0, r0, r2
+ adc r1, r3
+ ldrh r2, [r5, #0x3c]
+ lsl r1, r1, #0x14
+ lsr r0, r0, #0xc
+ asr r2, r2, #0x4
+ lsl r2, r2, #0x1
+ add r2, r2, #0x1
+ lsl r3, r2, #0x1
+ ldr r2, _0201E8B4 ; =0x020FFA38
+ orr r0, r1
+ ldrsh r2, [r2, r3]
+ asr r1, r0, #0x1f
+ asr r3, r2, #0x1f
+ blx _ll_mul
+ mov r2, #0x2
+ mov r3, #0x0
+ lsl r2, r2, #0xa
+ add r2, r0, r2
+ adc r1, r3
+ lsl r0, r1, #0x14
+ lsr r1, r2, #0xc
+ orr r1, r0
+ neg r0, r4
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r1, [r5, #0x1c]
+ asr r0, r0, #0x4
+ lsl r1, r0, #0x2
+ ldr r0, _0201E8B4 ; =0x020FFA38
+ ldr r2, [r5, #0x38]
+ ldrsh r0, [r0, r1]
+ asr r3, r2, #0x1f
+ asr r1, r0, #0x1f
+ blx _ll_mul
+ mov r2, #0x2
+ mov r3, #0x0
+ lsl r2, r2, #0xa
+ add r2, r0, r2
+ adc r1, r3
+ lsl r0, r1, #0x14
+ lsr r1, r2, #0xc
+ orr r1, r0
+ add r0, r5, #0x0
+ str r1, [r5, #0x18]
+ add r0, #0x14
+ add r5, #0x20
+ add r1, r5, #0x0
+ add r2, r0, #0x0
+ blx FUN_020C5634
+ pop {r3-r5, pc}
+ nop
+_0201E8B4: .word 0x020FFA38
+
+ thumb_func_start FUN_0201E8B8
+FUN_0201E8B8: ; 0x0201E8B8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldrh r0, [r5, #0x3e]
+ ldr r2, [r5, #0x38]
+ ldrh r4, [r5, #0x3c]
+ asr r0, r0, #0x4
+ lsl r1, r0, #0x2
+ ldr r0, _0201E998 ; =0x020FFA38
+ asr r3, r2, #0x1f
+ ldrsh r0, [r0, r1]
+ asr r1, r0, #0x1f
+ blx _ll_mul
+ mov r2, #0x2
+ mov r3, #0x0
+ lsl r2, r2, #0xa
+ add r0, r0, r2
+ adc r1, r3
+ asr r2, r4, #0x4
+ lsl r2, r2, #0x1
+ add r2, r2, #0x1
+ lsl r3, r2, #0x1
+ ldr r2, _0201E998 ; =0x020FFA38
+ lsl r1, r1, #0x14
+ ldrsh r2, [r2, r3]
+ lsr r0, r0, #0xc
+ orr r0, r1
+ asr r1, r0, #0x1f
+ asr r3, r2, #0x1f
+ blx _ll_mul
+ mov r2, #0x2
+ mov r3, #0x0
+ lsl r2, r2, #0xa
+ add r2, r0, r2
+ adc r1, r3
+ lsl r0, r1, #0x14
+ lsr r1, r2, #0xc
+ orr r1, r0
+ neg r0, r1
+ str r0, [r5, #0x20]
+ ldrh r0, [r5, #0x3e]
+ ldr r2, [r5, #0x38]
+ asr r0, r0, #0x4
+ lsl r0, r0, #0x1
+ add r0, r0, #0x1
+ lsl r1, r0, #0x1
+ ldr r0, _0201E998 ; =0x020FFA38
+ asr r3, r2, #0x1f
+ ldrsh r0, [r0, r1]
+ asr r1, r0, #0x1f
+ blx _ll_mul
+ mov r2, #0x2
+ lsl r2, r2, #0xa
+ mov r3, #0x0
+ add r0, r0, r2
+ adc r1, r3
+ ldrh r2, [r5, #0x3c]
+ lsl r1, r1, #0x14
+ lsr r0, r0, #0xc
+ asr r2, r2, #0x4
+ lsl r2, r2, #0x1
+ add r2, r2, #0x1
+ lsl r3, r2, #0x1
+ ldr r2, _0201E998 ; =0x020FFA38
+ orr r0, r1
+ ldrsh r2, [r2, r3]
+ asr r1, r0, #0x1f
+ asr r3, r2, #0x1f
+ blx _ll_mul
+ mov r2, #0x2
+ mov r3, #0x0
+ lsl r2, r2, #0xa
+ add r2, r0, r2
+ adc r1, r3
+ lsl r0, r1, #0x14
+ lsr r1, r2, #0xc
+ orr r1, r0
+ neg r0, r1
+ str r0, [r5, #0x28]
+ neg r0, r4
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ asr r0, r0, #0x4
+ lsl r1, r0, #0x2
+ ldr r0, _0201E998 ; =0x020FFA38
+ ldr r2, [r5, #0x38]
+ ldrsh r0, [r0, r1]
+ asr r3, r2, #0x1f
+ asr r1, r0, #0x1f
+ blx _ll_mul
+ mov r2, #0x2
+ mov r3, #0x0
+ lsl r2, r2, #0xa
+ add r2, r0, r2
+ adc r1, r3
+ lsl r0, r1, #0x14
+ lsr r1, r2, #0xc
+ orr r1, r0
+ neg r0, r1
+ str r0, [r5, #0x24]
+ add r0, r5, #0x0
+ add r0, #0x20
+ add r5, #0x14
+ add r1, r5, #0x0
+ add r2, r0, #0x0
+ blx FUN_020C5634
+ pop {r3-r5, pc}
+ .balign 4
+_0201E998: .word 0x020FFA38
+
+ thumb_func_start FUN_0201E99C
+FUN_0201E99C: ; 0x0201E99C
+ add r2, r1, #0x0
+ add r2, #0x46
+ strh r0, [r2, #0x0]
+ asr r0, r0, #0x4
+ lsl r3, r0, #0x1
+ ldr r2, _0201E9E0 ; =0x020FFA38
+ lsl r0, r3, #0x1
+ ldrsh r0, [r2, r0]
+ str r0, [r1, #0x0]
+ add r0, r3, #0x1
+ lsl r0, r0, #0x1
+ ldrsh r0, [r2, r0]
+ mov r2, #0x0
+ str r0, [r1, #0x4]
+ ldr r0, _0201E9E4 ; =0x00001555
+ str r0, [r1, #0x8]
+ mov r0, #0x96
+ lsl r0, r0, #0xc
+ str r0, [r1, #0xc]
+ mov r0, #0xe1
+ lsl r0, r0, #0xe
+ str r0, [r1, #0x10]
+ mov r0, #0x1
+ str r2, [r1, #0x2c]
+ lsl r0, r0, #0xc
+ str r0, [r1, #0x30]
+ str r2, [r1, #0x34]
+ str r2, [r1, #0x54]
+ str r2, [r1, #0x58]
+ str r2, [r1, #0x5c]
+ str r2, [r1, #0x60]
+ str r2, [r1, #0x64]
+ bx lr
+ nop
+_0201E9E0: .word 0x020FFA38
+_0201E9E4: .word 0x00001555
+
+ thumb_func_start FUN_0201E9E8
+FUN_0201E9E8: ; 0x0201E9E8
+ ldr r2, [r0, #0x58]
+ cmp r2, #0x0
+ bne _0201E9F2
+ mov r2, #0x0
+ str r2, [r1, #0x0]
+_0201E9F2:
+ ldr r2, [r0, #0x5c]
+ cmp r2, #0x0
+ bne _0201E9FC
+ mov r2, #0x0
+ str r2, [r1, #0x4]
+_0201E9FC:
+ ldr r0, [r0, #0x60]
+ cmp r0, #0x0
+ bne _0201EA06
+ mov r0, #0x0
+ str r0, [r1, #0x8]
+_0201EA06:
+ bx lr
+
+ thumb_func_start FUN_0201EA08
+FUN_0201EA08: ; 0x0201EA08
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldr r7, [r5, #0x64]
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ cmp r7, #0x0
+ bne _0201EA20
+ ldmia r4!, {r0-r1}
+ stmia r6!, {r0-r1}
+ ldr r0, [r4, #0x0]
+ str r0, [r6, #0x0]
+ pop {r3-r7, pc}
+_0201EA20:
+ add r0, r7, #0x0
+ str r0, [sp, #0x0]
+ add r0, #0x8
+ str r0, [sp, #0x0]
+ ldr r0, [r7, #0x10]
+ cmp r0, #0x0
+ bne _0201EA48
+ add r3, r4, #0x0
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldr r0, [r3, #0x0]
+ str r0, [r2, #0x0]
+ ldr r0, [r5, #0x64]
+ ldr r2, [r7, #0x4]
+ ldr r1, [r0, #0xc]
+ cmp r2, r1
+ bne _0201EA5C
+ mov r1, #0x1
+ str r1, [r0, #0x10]
+ b _0201EA5C
+_0201EA48:
+ ldr r2, [r7, #0x4]
+ mov r1, #0xc
+ mul r1, r2
+ ldr r0, [r7, #0x20]
+ add r2, r6, #0x0
+ add r3, r0, r1
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldr r0, [r3, #0x0]
+ str r0, [r2, #0x0]
+_0201EA5C:
+ ldr r1, [r5, #0x64]
+ ldr r0, [r7, #0x4]
+ ldr r1, [r1, #0x0]
+ add r0, r0, #0x1
+ blx _s32_div_f
+ str r1, [r7, #0x4]
+ ldr r1, [sp, #0x0]
+ ldr r0, [r5, #0x64]
+ ldr r2, [r1, #0x0]
+ mov r1, #0xc
+ ldr r0, [r0, #0x20]
+ mul r1, r2
+ add r3, r4, #0x0
+ add r2, r0, r1
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldr r0, [r3, #0x0]
+ str r0, [r2, #0x0]
+ ldr r0, [sp, #0x0]
+ ldr r1, [r5, #0x64]
+ ldr r0, [r0, #0x0]
+ ldr r1, [r1, #0x0]
+ add r0, r0, #0x1
+ blx _s32_div_f
+ ldr r0, [sp, #0x0]
+ str r1, [r0, #0x0]
+ ldr r0, [r5, #0x64]
+ ldr r0, [r0, #0x14]
+ cmp r0, #0x0
+ bne _0201EAA0
+ ldr r0, [r4, #0x0]
+ str r0, [r6, #0x0]
+_0201EAA0:
+ ldr r0, [r5, #0x64]
+ ldr r0, [r0, #0x18]
+ cmp r0, #0x0
+ bne _0201EAAC
+ ldr r0, [r4, #0x4]
+ str r0, [r6, #0x4]
+_0201EAAC:
+ ldr r0, [r5, #0x64]
+ ldr r0, [r0, #0x1c]
+ cmp r0, #0x0
+ bne _0201EAB8
+ ldr r0, [r4, #0x8]
+ str r0, [r6, #0x8]
+_0201EAB8:
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201EABC
+FUN_0201EABC: ; 0x0201EABC
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldr r0, [sp, #0x18]
+ add r7, r1, #0x0
+ str r0, [sp, #0x18]
+ ldr r0, [r0, #0x54]
+ add r6, r2, #0x0
+ str r3, [sp, #0x0]
+ cmp r0, #0x0
+ beq _0201EB46
+ add r0, r7, #0x1
+ cmp r0, r5
+ ble _0201EADA
+ bl ErrorHandling
+_0201EADA:
+ ldr r0, [sp, #0x0]
+ mov r1, #0x24
+ bl FUN_02016998
+ add r4, r0, #0x0
+ mov r1, #0xc
+ ldr r0, [sp, #0x0]
+ mul r1, r5
+ bl FUN_02016998
+ mov r1, #0x0
+ str r0, [r4, #0x20]
+ cmp r5, #0x0
+ ble _0201EB12
+ add r2, r1, #0x0
+ add r0, r1, #0x0
+_0201EAFA:
+ ldr r3, [r4, #0x20]
+ add r1, r1, #0x1
+ str r0, [r3, r2]
+ ldr r3, [r4, #0x20]
+ add r3, r3, r2
+ str r0, [r3, #0x4]
+ ldr r3, [r4, #0x20]
+ add r3, r3, r2
+ str r0, [r3, #0x8]
+ add r2, #0xc
+ cmp r1, r5
+ blt _0201EAFA
+_0201EB12:
+ str r5, [r4, #0x0]
+ mov r0, #0x0
+ str r0, [r4, #0x4]
+ str r7, [r4, #0x8]
+ str r7, [r4, #0xc]
+ str r0, [r4, #0x10]
+ str r0, [r4, #0x14]
+ str r0, [r4, #0x18]
+ str r0, [r4, #0x1c]
+ mov r0, #0x1
+ add r1, r6, #0x0
+ tst r1, r0
+ beq _0201EB2E
+ str r0, [r4, #0x14]
+_0201EB2E:
+ mov r0, #0x2
+ tst r0, r6
+ beq _0201EB38
+ mov r0, #0x1
+ str r0, [r4, #0x18]
+_0201EB38:
+ mov r0, #0x4
+ tst r0, r6
+ beq _0201EB42
+ mov r0, #0x1
+ str r0, [r4, #0x1c]
+_0201EB42:
+ ldr r0, [sp, #0x18]
+ str r4, [r0, #0x64]
+_0201EB46:
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0201EB48
+FUN_0201EB48: ; 0x0201EB48
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x64]
+ cmp r0, #0x0
+ beq _0201EB62
+ ldr r0, [r0, #0x20]
+ bl FUN_02016A18
+ ldr r0, [r4, #0x64]
+ bl FUN_02016A18
+ mov r0, #0x0
+ str r0, [r4, #0x64]
+_0201EB62:
+ pop {r4, pc}
+
+ thumb_func_start FUN_0201EB64
+FUN_0201EB64: ; 0x0201EB64
+ ldr r3, _0201EB6C ; =FUN_02016998
+ mov r1, #0x68
+ bx r3
+ nop
+_0201EB6C: .word FUN_02016998
+
+ thumb_func_start FUN_0201EB70
+FUN_0201EB70: ; 0x0201EB70
+ ldr r3, _0201EB74 ; =FUN_02016A18
+ bx r3
+ .balign 4
+_0201EB74: .word FUN_02016A18
+
+ thumb_func_start FUN_0201EB78
+FUN_0201EB78: ; 0x0201EB78
+ push {r3-r4}
+ add r4, r0, #0x0
+ add r3, r1, #0x0
+ mov r2, #0xd
+_0201EB80:
+ ldmia r4!, {r0-r1}
+ stmia r3!, {r0-r1}
+ sub r2, r2, #0x1
+ bne _0201EB80
+ pop {r3-r4}
+ bx lr
+
+ thumb_func_start FUN_0201EB8C
+FUN_0201EB8C: ; 0x0201EB8C
+ ldr r1, _0201EB94 ; =0x021C59A4
+ str r0, [r1, #0x0]
+ bx lr
+ nop
+_0201EB94: .word 0x021C59A4
+
+ thumb_func_start FUN_0201EB98
+FUN_0201EB98: ; 0x0201EB98
+ ldr r0, _0201EBA0 ; =0x021C59A4
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+ bx lr
+ .balign 4
+_0201EBA0: .word 0x021C59A4
+
+ thumb_func_start FUN_0201EBA4
+FUN_0201EBA4: ; 0x0201EBA4
+ push {r3-r6, lr}
+ sub sp, #0x1c
+ ldr r0, _0201EC40 ; =0x021C59A4
+ ldr r1, [r0, #0x0]
+ cmp r1, #0x0
+ beq _0201EC3A
+ ldr r0, [r1, #0x54]
+ cmp r0, #0x0
+ beq _0201EBEE
+ add r1, #0x48
+ add r2, sp, #0x10
+ blx FUN_020C5600
+ ldr r0, _0201EC40 ; =0x021C59A4
+ add r1, sp, #0x10
+ ldr r0, [r0, #0x0]
+ bl FUN_0201E9E8
+ ldr r0, _0201EC40 ; =0x021C59A4
+ add r1, sp, #0x10
+ ldr r0, [r0, #0x0]
+ add r2, sp, #0x4
+ bl FUN_0201EA08
+ ldr r1, _0201EC40 ; =0x021C59A4
+ add r0, sp, #0x4
+ ldr r1, [r1, #0x0]
+ bl FUN_0201EF70
+ ldr r0, _0201EC40 ; =0x021C59A4
+ ldr r3, [r0, #0x0]
+ ldr r2, [r3, #0x54]
+ add r3, #0x48
+ ldmia r2!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldr r0, [r2, #0x0]
+ str r0, [r3, #0x0]
+_0201EBEE:
+ ldr r0, _0201EC40 ; =0x021C59A4
+ ldr r5, _0201EC44 ; =0x021CEF58
+ ldr r4, [r0, #0x0]
+ add r3, r4, #0x0
+ add r2, r4, #0x0
+ add r4, #0x14
+ add r6, r4, #0x0
+ ldmia r6!, {r0-r1}
+ stmia r5!, {r0-r1}
+ ldr r0, [r6, #0x0]
+ add r2, #0x2c
+ str r0, [r5, #0x0]
+ add r6, r2, #0x0
+ ldr r5, _0201EC48 ; =0x021CEF64
+ ldmia r6!, {r0-r1}
+ stmia r5!, {r0-r1}
+ ldr r0, [r6, #0x0]
+ add r3, #0x20
+ str r0, [r5, #0x0]
+ add r6, r3, #0x0
+ ldr r5, _0201EC4C ; =0x021CEF70
+ ldmia r6!, {r0-r1}
+ stmia r5!, {r0-r1}
+ ldr r0, [r6, #0x0]
+ add r1, r2, #0x0
+ str r0, [r5, #0x0]
+ ldr r0, _0201EC50 ; =0x021CED64
+ add r2, r3, #0x0
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ mov r3, #0x0
+ blx FUN_020C80A4
+ ldr r1, _0201EC54 ; =0x021CED98
+ mov r0, #0xe8
+ ldr r2, [r1, #0x7c]
+ bic r2, r0
+ str r2, [r1, #0x7c]
+_0201EC3A:
+ add sp, #0x1c
+ pop {r3-r6, pc}
+ nop
+_0201EC40: .word 0x021C59A4
+_0201EC44: .word 0x021CEF58
+_0201EC48: .word 0x021CEF64
+_0201EC4C: .word 0x021CEF70
+_0201EC50: .word 0x021CED64
+_0201EC54: .word 0x021CED98
+
+ thumb_func_start FUN_0201EC58
+FUN_0201EC58: ; 0x0201EC58
+ add r3, r0, #0x0
+ add r2, r1, #0x0
+ ldmia r3!, {r0-r1}
+ add r2, #0x2c
+ stmia r2!, {r0-r1}
+ ldr r0, [r3, #0x0]
+ str r0, [r2, #0x0]
+ bx lr
+
+ thumb_func_start FUN_0201EC68
+FUN_0201EC68: ; 0x0201EC68
+ push {r3-r4}
+ add r3, r1, #0x0
+ add r4, r0, #0x0
+ str r4, [r3, #0x54]
+ add r2, r3, #0x0
+ ldmia r4!, {r0-r1}
+ add r2, #0x48
+ stmia r2!, {r0-r1}
+ ldr r0, [r4, #0x0]
+ str r0, [r2, #0x0]
+ mov r0, #0x1
+ str r0, [r3, #0x58]
+ str r0, [r3, #0x5c]
+ str r0, [r3, #0x60]
+ pop {r3-r4}
+ bx lr
+
+ thumb_func_start FUN_0201EC88
+FUN_0201EC88: ; 0x0201EC88
+ mov r1, #0x0
+ str r1, [r0, #0x54]
+ str r1, [r0, #0x58]
+ str r1, [r0, #0x5c]
+ str r1, [r0, #0x60]
+ bx lr
+
+ thumb_func_start FUN_0201EC94
+FUN_0201EC94: ; 0x0201EC94
+ str r0, [r2, #0xc]
+ add r0, r2, #0x0
+ str r1, [r2, #0x10]
+ add r0, #0x44
+ ldr r3, _0201ECA4 ; =FUN_0201EE2C
+ ldrb r0, [r0, #0x0]
+ add r1, r2, #0x0
+ bx r3
+ .balign 4
+_0201ECA4: .word FUN_0201EE2C
+
+ thumb_func_start FUN_0201ECA8
+FUN_0201ECA8: ; 0x0201ECA8
+ push {r3-r7, lr}
+ ldr r4, [sp, #0x20]
+ add r5, r0, #0x0
+ add r7, r1, #0x0
+ add r0, r3, #0x0
+ add r1, r4, #0x0
+ add r6, r2, #0x0
+ bl FUN_0201E99C
+ add r3, r5, #0x0
+ add r2, r4, #0x0
+ ldmia r3!, {r0-r1}
+ add r2, #0x20
+ stmia r2!, {r0-r1}
+ ldr r0, [r3, #0x0]
+ str r0, [r2, #0x0]
+ str r7, [r4, #0x38]
+ ldrh r0, [r6, #0x0]
+ strh r0, [r4, #0x3c]
+ ldrh r0, [r6, #0x2]
+ strh r0, [r4, #0x3e]
+ add r0, r4, #0x0
+ ldrh r1, [r6, #0x4]
+ add r0, #0x40
+ strh r1, [r0, #0x0]
+ add r0, r4, #0x0
+ ldrh r1, [r6, #0x6]
+ add r0, #0x42
+ strh r1, [r0, #0x0]
+ add r0, r4, #0x0
+ bl FUN_0201E7D8
+ add r0, sp, #0x8
+ ldrb r0, [r0, #0x10]
+ add r1, r4, #0x0
+ bl FUN_0201EE2C
+ ldr r0, [sp, #0x1c]
+ cmp r0, #0x0
+ beq _0201ED0E
+ str r5, [r4, #0x54]
+ add r2, r4, #0x0
+ ldmia r5!, {r0-r1}
+ add r2, #0x48
+ stmia r2!, {r0-r1}
+ ldr r0, [r5, #0x0]
+ str r0, [r2, #0x0]
+ mov r0, #0x1
+ str r0, [r4, #0x58]
+ str r0, [r4, #0x5c]
+ str r0, [r4, #0x60]
+_0201ED0E:
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0201ED10
+FUN_0201ED10: ; 0x0201ED10
+ push {r3-r7, lr}
+ ldr r4, [sp, #0x1c]
+ add r6, r0, #0x0
+ add r7, r1, #0x0
+ add r0, r3, #0x0
+ add r1, r4, #0x0
+ add r5, r2, #0x0
+ bl FUN_0201E99C
+ add r2, r4, #0x0
+ ldmia r6!, {r0-r1}
+ add r2, #0x14
+ stmia r2!, {r0-r1}
+ ldr r0, [r6, #0x0]
+ str r0, [r2, #0x0]
+ str r7, [r4, #0x38]
+ ldrh r0, [r5, #0x0]
+ strh r0, [r4, #0x3c]
+ ldrh r0, [r5, #0x2]
+ strh r0, [r4, #0x3e]
+ add r0, r4, #0x0
+ ldrh r1, [r5, #0x4]
+ add r0, #0x40
+ strh r1, [r0, #0x0]
+ add r0, r4, #0x0
+ ldrh r1, [r5, #0x6]
+ add r0, #0x42
+ strh r1, [r0, #0x0]
+ add r0, r4, #0x0
+ bl FUN_0201E8B8
+ add r0, sp, #0x8
+ ldrb r0, [r0, #0x10]
+ add r1, r4, #0x0
+ bl FUN_0201EE2C
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201ED5C
+FUN_0201ED5C: ; 0x0201ED5C
+ push {r4-r7, lr}
+ sub sp, #0x3c
+ ldr r4, [sp, #0x54]
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ add r0, r2, #0x0
+ add r1, r4, #0x0
+ add r7, r3, #0x0
+ bl FUN_0201E99C
+ add r3, r5, #0x0
+ add r2, r4, #0x0
+ ldmia r3!, {r0-r1}
+ add r2, #0x20
+ stmia r2!, {r0-r1}
+ ldr r0, [r3, #0x0]
+ add r3, r6, #0x0
+ str r0, [r2, #0x0]
+ add r2, r4, #0x0
+ ldmia r3!, {r0-r1}
+ add r2, #0x14
+ stmia r2!, {r0-r1}
+ ldr r0, [r3, #0x0]
+ add r1, r5, #0x0
+ str r0, [r2, #0x0]
+ add r0, r6, #0x0
+ add r2, sp, #0x30
+ blx FUN_020C5600
+ add r0, sp, #0x30
+ blx FUN_020C53C8
+ str r0, [r4, #0x38]
+ mov r6, #0x0
+ add r0, sp, #0x24
+ str r6, [r0, #0x0]
+ str r6, [r0, #0x4]
+ str r6, [r0, #0x8]
+ add r0, sp, #0x18
+ str r6, [r0, #0x0]
+ str r6, [r0, #0x4]
+ str r6, [r0, #0x8]
+ add r0, sp, #0xc
+ str r6, [r0, #0x0]
+ str r6, [r0, #0x4]
+ str r6, [r0, #0x8]
+ mov r0, #0x1
+ lsl r0, r0, #0xc
+ add r3, sp, #0x30
+ str r0, [sp, #0x8]
+ ldmia r3!, {r0-r1}
+ add r2, sp, #0xc
+ stmia r2!, {r0-r1}
+ ldr r0, [r3, #0x0]
+ str r6, [sp, #0x0]
+ str r0, [r2, #0x0]
+ str r6, [sp, #0x4]
+ str r6, [sp, #0x10]
+ add r0, sp, #0x0
+ add r1, sp, #0xc
+ bl FUN_0201C7B0
+ strh r0, [r4, #0x3e]
+ add r1, r6, #0x0
+ mov r0, #0x1
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x38]
+ str r1, [sp, #0x4]
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x34]
+ str r1, [sp, #0x8]
+ str r0, [sp, #0x14]
+ str r1, [sp, #0x10]
+ add r0, sp, #0x0
+ add r1, sp, #0xc
+ bl FUN_0201C7B0
+ strh r0, [r4, #0x3c]
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ add r0, #0x40
+ strh r1, [r0, #0x0]
+ add r0, r7, #0x0
+ add r1, r4, #0x0
+ bl FUN_0201EE2C
+ ldr r0, [sp, #0x50]
+ cmp r0, #0x0
+ beq _0201EE26
+ str r5, [r4, #0x54]
+ add r2, r4, #0x0
+ ldmia r5!, {r0-r1}
+ add r2, #0x48
+ stmia r2!, {r0-r1}
+ ldr r0, [r5, #0x0]
+ str r0, [r2, #0x0]
+ mov r0, #0x1
+ str r0, [r4, #0x58]
+ str r0, [r4, #0x5c]
+ str r0, [r4, #0x60]
+_0201EE26:
+ add sp, #0x3c
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201EE2C
+FUN_0201EE2C: ; 0x0201EE2C
+ push {r3-r6, lr}
+ sub sp, #0x14
+ add r5, r1, #0x0
+ cmp r0, #0x0
+ bne _0201EE6C
+ ldr r0, [r5, #0x10]
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ str r0, [sp, #0x8]
+ ldr r0, _0201EEE4 ; =0x021CED20
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x0]
+ ldr r1, [r5, #0x4]
+ ldr r2, [r5, #0x8]
+ ldr r3, [r5, #0xc]
+ blx FUN_020C8538
+ ldr r1, _0201EEE8 ; =0x021CED98
+ mov r0, #0x50
+ ldr r2, [r1, #0x7c]
+ add r5, #0x44
+ bic r2, r0
+ str r2, [r1, #0x7c]
+ mov r1, #0x0
+ ldr r0, _0201EEEC ; =0x02105BB8
+ strb r1, [r5, #0x0]
+ str r1, [r0, #0x0]
+ add sp, #0x14
+ pop {r3-r6, pc}
+_0201EE6C:
+ ldr r4, [r5, #0x38]
+ ldr r0, [r5, #0x0]
+ ldr r1, [r5, #0x4]
+ blx FUN_020C50B8
+ asr r1, r0, #0x1f
+ asr r3, r4, #0x1f
+ add r2, r4, #0x0
+ blx _ll_mul
+ mov r2, #0x2
+ mov r3, #0x0
+ lsl r2, r2, #0xa
+ add r2, r0, r2
+ adc r1, r3
+ lsr r4, r2, #0xc
+ lsl r0, r1, #0x14
+ orr r4, r0
+ ldr r2, [r5, #0x8]
+ asr r1, r4, #0x1f
+ add r0, r4, #0x0
+ asr r3, r2, #0x1f
+ blx _ll_mul
+ mov r6, #0x2
+ mov r2, #0x0
+ lsl r6, r6, #0xa
+ add r3, r0, r6
+ adc r1, r2
+ lsl r0, r1, #0x14
+ lsr r3, r3, #0xc
+ orr r3, r0
+ ldr r0, [r5, #0xc]
+ neg r1, r4
+ str r0, [sp, #0x0]
+ ldr r0, [r5, #0x10]
+ str r0, [sp, #0x4]
+ lsl r0, r6, #0x1
+ str r0, [sp, #0x8]
+ str r2, [sp, #0xc]
+ ldr r0, _0201EEE4 ; =0x021CED20
+ neg r2, r3
+ str r0, [sp, #0x10]
+ add r0, r4, #0x0
+ blx FUN_020C823C
+ ldr r1, _0201EEE8 ; =0x021CED98
+ mov r0, #0x50
+ ldr r2, [r1, #0x7c]
+ add r5, #0x44
+ bic r2, r0
+ str r2, [r1, #0x7c]
+ mov r0, #0x1
+ strb r0, [r5, #0x0]
+ ldr r0, _0201EEEC ; =0x02105BB8
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+ add sp, #0x14
+ pop {r3-r6, pc}
+ nop
+_0201EEE4: .word 0x021CED20
+_0201EEE8: .word 0x021CED98
+_0201EEEC: .word 0x02105BB8
+
+ thumb_func_start FUN_0201EEF0
+FUN_0201EEF0: ; 0x0201EEF0
+ add r2, r1, #0x0
+ add r2, #0x46
+ strh r0, [r2, #0x0]
+ add r0, r1, #0x0
+ add r0, #0x46
+ ldrh r0, [r0, #0x0]
+ ldr r3, _0201EF24 ; =FUN_0201EE2C
+ asr r0, r0, #0x4
+ lsl r2, r0, #0x2
+ ldr r0, _0201EF28 ; =0x020FFA38
+ ldrsh r2, [r0, r2]
+ str r2, [r1, #0x0]
+ add r2, r1, #0x0
+ add r2, #0x46
+ ldrh r2, [r2, #0x0]
+ asr r2, r2, #0x4
+ lsl r2, r2, #0x1
+ add r2, r2, #0x1
+ lsl r2, r2, #0x1
+ ldrsh r0, [r0, r2]
+ str r0, [r1, #0x4]
+ add r0, r1, #0x0
+ add r0, #0x44
+ ldrb r0, [r0, #0x0]
+ bx r3
+ nop
+_0201EF24: .word FUN_0201EE2C
+_0201EF28: .word 0x020FFA38
+
+ thumb_func_start FUN_0201EF2C
+FUN_0201EF2C: ; 0x0201EF2C
+ add r2, r1, #0x0
+ add r2, #0x46
+ ldrh r2, [r2, #0x0]
+ ldr r3, _0201EF68 ; =FUN_0201EE2C
+ add r2, r2, r0
+ add r0, r1, #0x0
+ add r0, #0x46
+ strh r2, [r0, #0x0]
+ add r0, r1, #0x0
+ add r0, #0x46
+ ldrh r0, [r0, #0x0]
+ asr r0, r0, #0x4
+ lsl r2, r0, #0x2
+ ldr r0, _0201EF6C ; =0x020FFA38
+ ldrsh r2, [r0, r2]
+ str r2, [r1, #0x0]
+ add r2, r1, #0x0
+ add r2, #0x46
+ ldrh r2, [r2, #0x0]
+ asr r2, r2, #0x4
+ lsl r2, r2, #0x1
+ add r2, r2, #0x1
+ lsl r2, r2, #0x1
+ ldrsh r0, [r0, r2]
+ str r0, [r1, #0x4]
+ add r0, r1, #0x0
+ add r0, #0x44
+ ldrb r0, [r0, #0x0]
+ bx r3
+ nop
+_0201EF68: .word FUN_0201EE2C
+_0201EF6C: .word 0x020FFA38
+
+ thumb_func_start FUN_0201EF70
+FUN_0201EF70: ; 0x0201EF70
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x14
+ add r1, r5, #0x0
+ add r2, r0, #0x0
+ blx FUN_020C5634
+ add r4, #0x20
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ blx FUN_020C5634
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0201EF90
+FUN_0201EF90: ; 0x0201EF90
+ ldrh r2, [r0, #0x0]
+ strh r2, [r1, #0x3c]
+ ldrh r2, [r0, #0x2]
+ strh r2, [r1, #0x3e]
+ add r2, r1, #0x0
+ ldrh r3, [r0, #0x4]
+ add r2, #0x40
+ strh r3, [r2, #0x0]
+ ldrh r2, [r0, #0x6]
+ add r0, r1, #0x0
+ add r0, #0x42
+ strh r2, [r0, #0x0]
+ ldr r3, _0201EFB0 ; =FUN_0201E7D8
+ add r0, r1, #0x0
+ bx r3
+ nop
+_0201EFB0: .word FUN_0201E7D8
+
+ thumb_func_start FUN_0201EFB4
+FUN_0201EFB4: ; 0x0201EFB4
+ ldrh r3, [r1, #0x3c]
+ ldrh r2, [r0, #0x0]
+ add r2, r3, r2
+ strh r2, [r1, #0x3c]
+ ldrh r3, [r1, #0x3e]
+ ldrh r2, [r0, #0x2]
+ add r2, r3, r2
+ strh r2, [r1, #0x3e]
+ add r2, r1, #0x0
+ add r2, #0x40
+ ldrh r2, [r2, #0x0]
+ ldrh r0, [r0, #0x4]
+ ldr r3, _0201EFDC ; =FUN_0201E8B8
+ add r2, r2, r0
+ add r0, r1, #0x0
+ add r0, #0x40
+ strh r2, [r0, #0x0]
+ add r0, r1, #0x0
+ bx r3
+ nop
+_0201EFDC: .word FUN_0201E8B8
+
+ thumb_func_start FUN_0201EFE0
+FUN_0201EFE0: ; 0x0201EFE0
+ ldr r3, _0201EFE8 ; =FUN_0201E7D8
+ str r0, [r1, #0x38]
+ add r0, r1, #0x0
+ bx r3
+ .balign 4
+_0201EFE8: .word FUN_0201E7D8
+
+ thumb_func_start FUN_0201EFEC
+FUN_0201EFEC: ; 0x0201EFEC
+ push {r4, lr}
+ add r3, r1, #0x0
+ add r4, r0, #0x0
+ add r2, r3, #0x0
+ ldmia r4!, {r0-r1}
+ add r2, #0x20
+ stmia r2!, {r0-r1}
+ ldr r0, [r4, #0x0]
+ str r0, [r2, #0x0]
+ add r0, r3, #0x0
+ bl FUN_0201E7D8
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201F008
+FUN_0201F008: ; 0x0201F008
+ add r0, #0x46
+ ldrh r0, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0201F010
+FUN_0201F010: ; 0x0201F010
+ ldr r0, [r0, #0x38]
+ bx lr
+
+ thumb_func_start FUN_0201F014
+FUN_0201F014: ; 0x0201F014
+ ldrh r2, [r1, #0x3c]
+ strh r2, [r0, #0x0]
+ ldrh r2, [r1, #0x3e]
+ strh r2, [r0, #0x2]
+ add r2, r1, #0x0
+ add r2, #0x40
+ ldrh r2, [r2, #0x0]
+ add r1, #0x42
+ strh r2, [r0, #0x4]
+ ldrh r1, [r1, #0x0]
+ strh r1, [r0, #0x6]
+ bx lr
+
+ thumb_func_start FUN_0201F02C
+FUN_0201F02C: ; 0x0201F02C
+ add r2, r1, #0x0
+ add r2, #0x20
+ add r3, r0, #0x0
+ ldmia r2!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldr r0, [r2, #0x0]
+ str r0, [r3, #0x0]
+ bx lr
+
+ thumb_func_start FUN_0201F03C
+FUN_0201F03C: ; 0x0201F03C
+ add r2, r1, #0x0
+ add r2, #0x14
+ add r3, r0, #0x0
+ ldmia r2!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldr r0, [r2, #0x0]
+ str r0, [r3, #0x0]
+ bx lr
+
+ thumb_func_start FUN_0201F04C
+FUN_0201F04C: ; 0x0201F04C
+ add r3, r0, #0x0
+ add r2, r1, #0x0
+ ldmia r3!, {r0-r1}
+ add r2, #0x20
+ stmia r2!, {r0-r1}
+ ldr r0, [r3, #0x0]
+ str r0, [r2, #0x0]
+ bx lr
+
+ thumb_func_start FUN_0201F05C
+FUN_0201F05C: ; 0x0201F05C
+ add r3, r0, #0x0
+ add r2, r1, #0x0
+ ldmia r3!, {r0-r1}
+ add r2, #0x14
+ stmia r2!, {r0-r1}
+ ldr r0, [r3, #0x0]
+ str r0, [r2, #0x0]
+ bx lr
+
+ thumb_func_start FUN_0201F06C
+FUN_0201F06C: ; 0x0201F06C
+ mov r2, #0x0
+ strb r2, [r0, #0x0]
+ strb r2, [r0, #0x1]
+ str r2, [r0, #0x4]
+ add r1, r0, #0x0
+ str r2, [r0, #0x8]
+ add r1, #0xc4
+ str r2, [r1, #0x0]
+ add r1, r0, #0x0
+ add r1, #0xc8
+ str r2, [r1, #0x0]
+ add r1, r0, #0x0
+ add r1, #0xcc
+ str r2, [r1, #0x0]
+ add r1, r0, #0x0
+ add r1, #0xd0
+ str r2, [r1, #0x0]
+ strb r2, [r0, #0x3]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0201F094
+FUN_0201F094: ; 0x0201F094
+ mov r3, #0x0
+ str r3, [r0, #0x1c]
+ str r3, [r0, #0x20]
+ str r3, [r0, #0x78]
+ add r1, r0, #0x0
+ str r3, [r0, #0x7c]
+ add r1, #0x80
+ str r3, [r1, #0x0]
+ add r1, r0, #0x0
+ add r1, #0x84
+ add r2, r0, #0x0
+ str r3, [r1, #0x0]
+ add r2, #0x94
+ mov r1, #0x10
+_0201F0B0:
+ strb r3, [r2, #0x0]
+ add r2, r2, #0x1
+ sub r1, r1, #0x1
+ bne _0201F0B0
+ add r2, r0, #0x0
+ mov r1, #0x0
+ add r2, #0x88
+ str r1, [r2, #0x0]
+ add r2, r0, #0x0
+ add r2, #0x8c
+ str r1, [r2, #0x0]
+ add r2, r0, #0x0
+ add r2, #0x90
+ str r1, [r2, #0x0]
+ add r2, r0, #0x0
+ add r2, #0xa4
+ str r1, [r2, #0x0]
+ str r1, [r0, #0x0]
+ str r1, [r0, #0x4]
+ mov r2, #0x1
+ str r1, [r0, #0x8]
+ lsl r2, r2, #0xc
+ str r2, [r0, #0xc]
+ str r2, [r0, #0x10]
+ str r2, [r0, #0x14]
+ add r2, r0, #0x0
+ add r2, #0xaa
+ strh r1, [r2, #0x0]
+ add r2, r0, #0x0
+ add r2, #0xa8
+ strb r1, [r2, #0x0]
+ add r2, r0, #0x0
+ add r2, #0xb0
+ str r1, [r2, #0x0]
+ add r2, r0, #0x0
+ add r2, #0xb4
+ str r1, [r2, #0x0]
+ strb r1, [r0, #0x18]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0201F100
+FUN_0201F100: ; 0x0201F100
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ ldr r0, _0201F13C ; =0x021C59A8
+ add r4, r1, #0x0
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _0201F112
+ bl ErrorHandling
+_0201F112:
+ mov r1, #0xd4
+ add r0, r4, #0x0
+ mul r1, r6
+ bl FUN_02016998
+ ldr r7, _0201F13C ; =0x021C59A8
+ mov r4, #0x0
+ str r0, [r7, #0x0]
+ str r6, [r7, #0x4]
+ cmp r6, #0x0
+ ble _0201F13A
+ add r5, r4, #0x0
+_0201F12A:
+ ldr r0, [r7, #0x0]
+ add r0, r0, r5
+ bl FUN_0201F06C
+ add r4, r4, #0x1
+ add r5, #0xd4
+ cmp r4, r6
+ blt _0201F12A
+_0201F13A:
+ pop {r3-r7, pc}
+ .balign 4
+_0201F13C: .word 0x021C59A8
+
+ thumb_func_start FUN_0201F140
+FUN_0201F140: ; 0x0201F140
+ push {r4-r6, lr}
+ ldr r6, _0201F174 ; =0x021C59A8
+ mov r4, #0x0
+ ldr r0, [r6, #0x4]
+ cmp r0, #0x0
+ ble _0201F160
+ add r5, r4, #0x0
+_0201F14E:
+ ldr r0, [r6, #0x0]
+ add r0, r0, r5
+ bl FUN_0201F23C
+ ldr r0, [r6, #0x4]
+ add r4, r4, #0x1
+ add r5, #0xd4
+ cmp r4, r0
+ blt _0201F14E
+_0201F160:
+ ldr r0, _0201F174 ; =0x021C59A8
+ ldr r0, [r0, #0x0]
+ bl FUN_02016A18
+ ldr r0, _0201F174 ; =0x021C59A8
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+ str r1, [r0, #0x4]
+ pop {r4-r6, pc}
+ nop
+_0201F174: .word 0x021C59A8
+
+ thumb_func_start FUN_0201F178
+FUN_0201F178: ; 0x0201F178
+ push {r3-r7, lr}
+ ldr r6, _0201F1B0 ; =0x021C59A8
+ mov r4, #0x0
+ ldr r0, [r6, #0x4]
+ cmp r0, #0x0
+ ble _0201F1AC
+ add r5, r4, #0x0
+ mov r7, #0x2
+_0201F188:
+ ldr r0, [r6, #0x0]
+ add r0, r0, r5
+ ldrb r1, [r0, #0x1]
+ cmp r1, #0x1
+ bne _0201F196
+ bl FUN_0201F318
+_0201F196:
+ ldr r0, [r6, #0x0]
+ add r1, r0, r5
+ ldrb r0, [r1, #0x3]
+ cmp r0, #0x1
+ bne _0201F1A2
+ strb r7, [r1, #0x3]
+_0201F1A2:
+ ldr r0, [r6, #0x4]
+ add r4, r4, #0x1
+ add r5, #0xd4
+ cmp r4, r0
+ blt _0201F188
+_0201F1AC:
+ pop {r3-r7, pc}
+ nop
+_0201F1B0: .word 0x021C59A8
+
+ thumb_func_start FUN_0201F1B4
+FUN_0201F1B4: ; 0x0201F1B4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_0201F2E4
+ add r4, r0, #0x0
+ bne _0201F1C8
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0201F1C8:
+ mov r0, #0x1
+ strb r0, [r4, #0x0]
+ strb r0, [r4, #0x1]
+ ldr r2, [r5, #0x0]
+ mov r1, #0xb8
+ ldr r0, [r5, #0x4]
+ mul r1, r2
+ bl FUN_02016998
+ str r0, [r4, #0x4]
+ ldr r0, [r5, #0x0]
+ str r0, [r4, #0x8]
+ add r0, r4, #0x0
+ add r0, #0xc
+ bl FUN_0201F094
+ add r1, r4, #0x0
+ add r0, r4, #0x0
+ add r1, #0xc
+ add r0, #0xbc
+ str r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0xc0
+ str r1, [r0, #0x0]
+ ldr r1, [r5, #0x0]
+ ldr r0, [r5, #0x4]
+ lsl r1, r1, #0x2
+ bl FUN_02016998
+ add r1, r4, #0x0
+ add r1, #0xc4
+ str r0, [r1, #0x0]
+ add r0, r4, #0x0
+ bl FUN_0201FABC
+ ldr r0, [r5, #0x4]
+ mov r1, #0x10
+ bl FUN_02016998
+ add r1, r4, #0x0
+ add r1, #0xcc
+ str r0, [r1, #0x0]
+ add r0, r4, #0x0
+ add r0, #0xcc
+ ldr r0, [r0, #0x0]
+ ldr r1, [r5, #0x4]
+ mov r2, #0x4
+ bl FUN_02016B20
+ ldr r0, [r5, #0x0]
+ ldr r1, [r5, #0x4]
+ bl FUN_0201C360
+ add r1, r4, #0x0
+ add r1, #0xd0
+ str r0, [r1, #0x0]
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0201F23C
+FUN_0201F23C: ; 0x0201F23C
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _0201F24A
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r4, pc}
+_0201F24A:
+ ldrb r1, [r4, #0x0]
+ cmp r1, #0x0
+ beq _0201F27E
+ bl FUN_0201F284
+ ldr r0, [r4, #0x4]
+ bl FUN_02016A18
+ add r0, r4, #0x0
+ add r0, #0xc4
+ ldr r0, [r0, #0x0]
+ bl FUN_02016A18
+ add r0, r4, #0x0
+ add r0, #0xcc
+ ldr r0, [r0, #0x0]
+ bl FUN_02016A18
+ add r0, r4, #0x0
+ add r0, #0xd0
+ ldr r0, [r0, #0x0]
+ bl FUN_0201C39C
+ add r0, r4, #0x0
+ bl FUN_0201F06C
+_0201F27E:
+ mov r0, #0x1
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201F284
+FUN_0201F284: ; 0x0201F284
+ push {r3-r5, lr}
+ cmp r0, #0x0
+ bne _0201F294
+ bne _0201F290
+ bl ErrorHandling
+_0201F290:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0201F294:
+ ldrb r1, [r0, #0x0]
+ cmp r1, #0x0
+ beq _0201F2BA
+ add r1, r0, #0x0
+ add r1, #0xbc
+ add r4, r0, #0x0
+ ldr r1, [r1, #0x0]
+ add r4, #0xc
+ cmp r1, r4
+ beq _0201F2BA
+_0201F2A8:
+ add r0, r1, #0x0
+ add r0, #0xb0
+ ldr r5, [r0, #0x0]
+ add r0, r1, #0x0
+ bl FUN_0201F744
+ add r1, r5, #0x0
+ cmp r5, r4
+ bne _0201F2A8
+_0201F2BA:
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201F2C0
+FUN_0201F2C0: ; 0x0201F2C0
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _0201F2CA
+ bl ErrorHandling
+_0201F2CA:
+ ldrb r0, [r4, #0x3]
+ cmp r0, #0x0
+ bne _0201F2D4
+ mov r0, #0x0
+ pop {r4, pc}
+_0201F2D4:
+ mov r0, #0x1
+ pop {r4, pc}
+
+ thumb_func_start FUN_0201F2D8
+FUN_0201F2D8: ; 0x0201F2D8
+ ldrb r1, [r0, #0x3]
+ cmp r1, #0x2
+ bne _0201F2E2
+ mov r1, #0x0
+ strb r1, [r0, #0x3]
+_0201F2E2:
+ bx lr
+
+ thumb_func_start FUN_0201F2E4
+FUN_0201F2E4: ; 0x0201F2E4
+ push {r3-r4}
+ ldr r0, _0201F314 ; =0x021C59A8
+ mov r1, #0x0
+ ldr r3, [r0, #0x4]
+ cmp r3, #0x0
+ ble _0201F30C
+ ldr r4, [r0, #0x0]
+ add r2, r4, #0x0
+_0201F2F4:
+ ldrb r0, [r2, #0x0]
+ cmp r0, #0x0
+ bne _0201F304
+ mov r0, #0xd4
+ mul r0, r1
+ add r0, r4, r0
+ pop {r3-r4}
+ bx lr
+_0201F304:
+ add r1, r1, #0x1
+ add r2, #0xd4
+ cmp r1, r3
+ blt _0201F2F4
+_0201F30C:
+ mov r0, #0x0
+ pop {r3-r4}
+ bx lr
+ nop
+_0201F314: .word 0x021C59A8
+
+ thumb_func_start FUN_0201F318
+FUN_0201F318: ; 0x0201F318
+ push {r3-r6, lr}
+ sub sp, #0x24
+ add r5, r0, #0x0
+ bne _0201F324
+ bl ErrorHandling
+_0201F324:
+ add r0, sp, #0x0
+ blx FUN_020C3F14
+ add r0, r5, #0x0
+ add r0, #0xbc
+ ldr r4, [r0, #0x0]
+ add r5, #0xc
+ cmp r4, r5
+ beq _0201F37E
+ add r6, sp, #0x0
+_0201F338:
+ ldrb r0, [r4, #0x18]
+ cmp r0, #0x1
+ bne _0201F376
+ add r0, r4, #0x0
+ bl FUN_0201FC54
+ add r0, r4, #0x0
+ add r0, #0xa8
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x3
+ bne _0201F356
+ add r0, r4, #0x0
+ bl FUN_0201F90C
+ b _0201F360
+_0201F356:
+ cmp r0, #0x2
+ bne _0201F360
+ add r0, r4, #0x0
+ bl FUN_0201F8F0
+_0201F360:
+ add r0, r4, #0x0
+ add r3, r4, #0x0
+ add r0, #0x24
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ add r3, #0xc
+ bl FUN_0201B26C
+ add r0, r4, #0x0
+ bl FUN_0201FC70
+_0201F376:
+ add r4, #0xb0
+ ldr r4, [r4, #0x0]
+ cmp r4, r5
+ bne _0201F338
+_0201F37E:
+ add sp, #0x24
+ pop {r3-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201F384
+FUN_0201F384: ; 0x0201F384
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r6, [r5, #0x1c]
+ add r4, r1, #0x0
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ bl FUN_0201F5B8
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0201F5D4
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_0201F648
+ add r0, r5, #0x0
+ add r0, #0xa8
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x1
+ bne _0201F3BA
+ add r6, #0xc
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ bl FUN_0201FB58
+_0201F3BA:
+ add r0, r5, #0x0
+ mov r1, #0x2
+ add r0, #0xa8
+ strb r1, [r0, #0x0]
+ ldr r0, [r4, #0x8]
+ mov r1, #0x0
+ str r0, [r5, #0x20]
+ add r0, r5, #0x0
+ add r0, #0xaa
+ strh r1, [r0, #0x0]
+ add r5, #0xac
+ str r1, [r5, #0x0]
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0201F3D4
+FUN_0201F3D4: ; 0x0201F3D4
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r6, [r5, #0x1c]
+ add r4, r1, #0x0
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ bl FUN_0201F5B8
+ add r0, r5, #0x0
+ add r0, #0xa8
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x2
+ bne _0201F3FE
+ add r0, r5, #0x0
+ add r1, r5, #0x0
+ add r2, r5, #0x0
+ add r0, #0x88
+ add r1, #0x8c
+ add r2, #0x90
+ bl FUN_0201F524
+_0201F3FE:
+ add r0, r5, #0x0
+ ldr r1, [r4, #0x1c]
+ add r0, #0x88
+ str r1, [r0, #0x0]
+ add r0, r5, #0x0
+ ldr r1, [r4, #0x20]
+ add r0, #0x8c
+ str r1, [r0, #0x0]
+ add r0, r5, #0x0
+ ldr r1, [r4, #0x24]
+ add r0, #0x90
+ str r1, [r0, #0x0]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0201F69C
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0201F6C8
+ add r0, r5, #0x0
+ add r0, #0xa8
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x1
+ bne _0201F43A
+ add r6, #0xc
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ bl FUN_0201FB58
+_0201F43A:
+ add r0, r5, #0x0
+ mov r1, #0x3
+ add r0, #0xa8
+ strb r1, [r0, #0x0]
+ ldr r0, [r4, #0x8]
+ mov r1, #0x0
+ str r0, [r5, #0x20]
+ add r0, r5, #0x0
+ add r0, #0xaa
+ strh r1, [r0, #0x0]
+ add r5, #0xac
+ str r1, [r5, #0x0]
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0201F454
+FUN_0201F454: ; 0x0201F454
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ add r7, r3, #0x0
+ blx FUN_020B7E1C
+ str r0, [sp, #0x8]
+ add r0, r5, #0x0
+ blx FUN_020B7E10
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ blx FUN_020B7CE4
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x8]
+ cmp r0, #0x0
+ beq _0201F492
+ ldr r3, _0201F4E4 ; =0x021064B8
+ mov r1, #0x0
+ ldr r3, [r3, #0x0]
+ add r2, r1, #0x0
+ blx r3
+ str r0, [r4, #0x0]
+ cmp r0, #0x0
+ bne _0201F496
+ bl ErrorHandling
+ b _0201F496
+_0201F492:
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+_0201F496:
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ beq _0201F4B2
+ ldr r3, _0201F4E4 ; =0x021064B8
+ mov r1, #0x1
+ ldr r3, [r3, #0x0]
+ mov r2, #0x0
+ blx r3
+ str r0, [r6, #0x0]
+ cmp r0, #0x0
+ bne _0201F4B6
+ bl ErrorHandling
+ b _0201F4B6
+_0201F4B2:
+ mov r0, #0x0
+ str r0, [r6, #0x0]
+_0201F4B6:
+ ldr r0, [sp, #0x0]
+ cmp r0, #0x0
+ beq _0201F4DA
+ ldr r3, _0201F4E8 ; =0x021064C0
+ mov r1, #0x2
+ ldrh r2, [r5, #0x20]
+ lsl r1, r1, #0xe
+ ldr r3, [r3, #0x0]
+ and r1, r2
+ mov r2, #0x0
+ blx r3
+ str r0, [r7, #0x0]
+ cmp r0, #0x0
+ bne _0201F4DE
+ bl ErrorHandling
+ add sp, #0xc
+ pop {r4-r7, pc}
+_0201F4DA:
+ mov r0, #0x0
+ str r0, [r7, #0x0]
+_0201F4DE:
+ add sp, #0xc
+ pop {r4-r7, pc}
+ nop
+_0201F4E4: .word 0x021064B8
+_0201F4E8: .word 0x021064C0
+
+ thumb_func_start FUN_0201F4EC
+FUN_0201F4EC: ; 0x0201F4EC
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r3, #0x0
+ blx FUN_020B7CF0
+ add r0, r5, #0x0
+ blx FUN_020B7C58
+ str r0, [r4, #0x0]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0201F500
+FUN_0201F500: ; 0x0201F500
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ ldr r1, [r2, #0x0]
+ ldr r2, [r3, #0x0]
+ add r5, r0, #0x0
+ blx FUN_020B7DFC
+ ldr r1, [sp, #0x10]
+ add r0, r5, #0x0
+ ldr r1, [r1, #0x0]
+ blx FUN_020B7CDC
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ blx FUN_020B7790
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201F524
+FUN_0201F524: ; 0x0201F524
+ push {r3-r5, lr}
+ ldr r0, [r0, #0x0]
+ add r5, r1, #0x0
+ add r4, r2, #0x0
+ cmp r0, #0x0
+ beq _0201F536
+ ldr r1, _0201F550 ; =0x021064BC
+ ldr r1, [r1, #0x0]
+ blx r1
+_0201F536:
+ ldr r0, [r5, #0x0]
+ cmp r0, #0x0
+ beq _0201F542
+ ldr r1, _0201F550 ; =0x021064BC
+ ldr r1, [r1, #0x0]
+ blx r1
+_0201F542:
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ beq _0201F54E
+ ldr r1, _0201F554 ; =0x021064C4
+ ldr r1, [r1, #0x0]
+ blx r1
+_0201F54E:
+ pop {r3-r5, pc}
+ .balign 4
+_0201F550: .word 0x021064BC
+_0201F554: .word 0x021064C4
+
+ thumb_func_start FUN_0201F558
+FUN_0201F558: ; 0x0201F558
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r4, r0, #0x0
+ add r5, r1, #0x0
+ cmp r4, #0x0
+ beq _0201F568
+ cmp r5, #0x0
+ bne _0201F56E
+_0201F568:
+ add sp, #0x8
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0201F56E:
+ blx FUN_020B7E1C
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ blx FUN_020B7E10
+ str r0, [sp, #0x4]
+ add r0, r4, #0x0
+ blx FUN_020B7CE4
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ blx FUN_020B7E1C
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ blx FUN_020B7E10
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ blx FUN_020B7CE4
+ ldr r1, [sp, #0x0]
+ cmp r1, r6
+ bne _0201F5AA
+ ldr r1, [sp, #0x4]
+ cmp r1, r7
+ bne _0201F5AA
+ cmp r4, r0
+ beq _0201F5B0
+_0201F5AA:
+ add sp, #0x8
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0201F5B0:
+ mov r0, #0x1
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201F5B8
+FUN_0201F5B8: ; 0x0201F5B8
+ push {r4, lr}
+ add r4, r1, #0x0
+ add r0, r4, #0x0
+ add r0, #0xa4
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _0201F5D0
+ bl FUN_0201C40C
+ mov r0, #0x0
+ add r4, #0xa4
+ str r0, [r4, #0x0]
+_0201F5D0:
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201F5D4
+FUN_0201F5D4: ; 0x0201F5D4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x80
+ ldr r4, [r0, #0x0]
+ add r0, r1, #0x0
+ add r1, r5, #0x0
+ add r2, r5, #0x0
+ add r1, #0x7c
+ add r2, #0x80
+ bl FUN_0201FB9C
+ str r0, [r5, #0x78]
+ add r0, r5, #0x0
+ ldr r1, [r5, #0x7c]
+ add r0, #0x24
+ blx FUN_020B80B4
+ add r0, r5, #0x0
+ add r0, #0xa8
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x3
+ beq _0201F60E
+ add r1, r5, #0x0
+ add r1, #0x80
+ ldr r1, [r1, #0x0]
+ add r0, r4, #0x0
+ bl FUN_0201F558
+ b _0201F610
+_0201F60E:
+ mov r0, #0x0
+_0201F610:
+ cmp r0, #0x0
+ bne _0201F644
+ add r0, r5, #0x0
+ add r0, #0xa8
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x2
+ bne _0201F62E
+ add r0, r5, #0x0
+ add r1, r5, #0x0
+ add r2, r5, #0x0
+ add r0, #0x88
+ add r1, #0x8c
+ add r2, #0x90
+ bl FUN_0201F524
+_0201F62E:
+ add r0, r5, #0x0
+ add r0, #0x80
+ add r1, r5, #0x0
+ add r2, r5, #0x0
+ add r5, #0x90
+ ldr r0, [r0, #0x0]
+ add r1, #0x88
+ add r2, #0x8c
+ add r3, r5, #0x0
+ bl FUN_0201F454
+_0201F644:
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201F648
+FUN_0201F648: ; 0x0201F648
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r4, r2, #0x0
+ add r6, r0, #0x0
+ add r5, r1, #0x0
+ add r0, r4, #0x0
+ bl FUN_0201FBCC
+ add r1, r5, #0x0
+ add r1, #0x84
+ add r3, r5, #0x0
+ add r3, #0x94
+ str r0, [r1, #0x0]
+ add r4, #0xc
+ add r2, r3, #0x0
+ ldmia r4!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldmia r4!, {r0-r1}
+ stmia r3!, {r0-r1}
+ add r0, r5, #0x0
+ add r0, #0x90
+ ldr r0, [r0, #0x0]
+ add r1, r2, #0x0
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ add r0, #0xac
+ ldr r0, [r0, #0x0]
+ add r2, r5, #0x0
+ add r3, r5, #0x0
+ str r0, [sp, #0x4]
+ add r6, #0xd0
+ add r2, #0x84
+ add r3, #0x88
+ ldr r0, [r6, #0x0]
+ ldr r2, [r2, #0x0]
+ ldr r3, [r3, #0x0]
+ bl FUN_0201C3B4
+ add r5, #0xa4
+ str r0, [r5, #0x0]
+ add sp, #0x8
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0201F69C
+FUN_0201F69C: ; 0x0201F69C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r1, r5, #0x0
+ add r2, r5, #0x0
+ add r0, r4, #0x0
+ add r1, #0x7c
+ add r2, #0x80
+ bl FUN_0201FB9C
+ str r0, [r5, #0x78]
+ add r0, r5, #0x0
+ ldr r1, [r5, #0x7c]
+ add r0, #0x24
+ blx FUN_020B80B4
+ add r0, r4, #0x0
+ bl FUN_0201FBCC
+ add r5, #0x84
+ str r0, [r5, #0x0]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0201F6C8
+FUN_0201F6C8: ; 0x0201F6C8
+ push {r3-r4}
+ add r4, r0, #0x0
+ add r2, r4, #0x0
+ add r3, r1, #0x0
+ add r3, #0xc
+ add r2, #0x94
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ mov r0, #0x0
+ add r4, #0xa4
+ str r0, [r4, #0x0]
+ pop {r3-r4}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0201F6E8
+FUN_0201F6E8: ; 0x0201F6E8
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r6, [r5, #0x0]
+ cmp r6, #0x0
+ bne _0201F6F6
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_0201F6F6:
+ add r0, r6, #0x0
+ bl FUN_0201FAF4
+ add r4, r0, #0x0
+ bne _0201F704
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_0201F704:
+ add r3, r5, #0x0
+ str r6, [r4, #0x1c]
+ add r3, #0x8
+ ldmia r3!, {r0-r1}
+ add r2, r4, #0x0
+ stmia r2!, {r0-r1}
+ ldr r0, [r3, #0x0]
+ add r3, r5, #0x0
+ str r0, [r2, #0x0]
+ add r3, #0x14
+ add r2, r4, #0x0
+ ldmia r3!, {r0-r1}
+ add r2, #0xc
+ stmia r2!, {r0-r1}
+ ldr r0, [r3, #0x0]
+ mov r1, #0x0
+ str r0, [r2, #0x0]
+ add r0, r4, #0x0
+ add r0, #0xaa
+ strh r1, [r0, #0x0]
+ mov r1, #0x1
+ add r0, r4, #0x0
+ strb r1, [r4, #0x18]
+ add r0, #0xa8
+ strb r1, [r0, #0x0]
+ ldr r1, [r5, #0x4]
+ add r0, r4, #0x0
+ bl FUN_0201FBD8
+ add r0, r4, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201F744
+FUN_0201F744: ; 0x0201F744
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bne _0201F74E
+ bl ErrorHandling
+_0201F74E:
+ add r0, r5, #0x0
+ add r0, #0xa8
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x1
+ bne _0201F75C
+ bl ErrorHandling
+_0201F75C:
+ add r0, r5, #0x0
+ add r0, #0xa8
+ ldrb r0, [r0, #0x0]
+ ldr r4, [r5, #0x1c]
+ cmp r0, #0x0
+ bne _0201F76C
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0201F76C:
+ add r0, r5, #0x0
+ bl FUN_0201FB7C
+ add r0, r5, #0x0
+ add r0, #0xa8
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x2
+ bne _0201F78C
+ add r0, r5, #0x0
+ add r1, r5, #0x0
+ add r2, r5, #0x0
+ add r0, #0x88
+ add r1, #0x8c
+ add r2, #0x90
+ bl FUN_0201F524
+_0201F78C:
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ bl FUN_0201F5B8
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ bl FUN_0201FB20
+ mov r0, #0x1
+ strb r0, [r4, #0x3]
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201F7A4
+FUN_0201F7A4: ; 0x0201F7A4
+ push {r3-r4}
+ add r4, r0, #0x0
+ str r1, [r4, #0x0]
+ str r2, [r4, #0x4]
+ str r3, [r4, #0x8]
+ ldr r3, [sp, #0x8]
+ add r2, r4, #0x0
+ add r2, #0xc
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ mov r0, #0x0
+ str r0, [r4, #0x1c]
+ str r0, [r4, #0x20]
+ str r0, [r4, #0x24]
+ pop {r3-r4}
+ bx lr
+
+ thumb_func_start FUN_0201F7C8
+FUN_0201F7C8: ; 0x0201F7C8
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ add r5, r1, #0x0
+ cmp r4, #0x0
+ bne _0201F7D6
+ bl ErrorHandling
+_0201F7D6:
+ ldmia r5!, {r0-r1}
+ stmia r4!, {r0-r1}
+ ldr r0, [r5, #0x0]
+ str r0, [r4, #0x0]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0201F7E0
+FUN_0201F7E0: ; 0x0201F7E0
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _0201F7EA
+ bl ErrorHandling
+_0201F7EA:
+ add r0, r4, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201F7F0
+FUN_0201F7F0: ; 0x0201F7F0
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ add r5, r1, #0x0
+ cmp r4, #0x0
+ bne _0201F7FE
+ bl ErrorHandling
+_0201F7FE:
+ ldmia r5!, {r0-r1}
+ add r4, #0xc
+ stmia r4!, {r0-r1}
+ ldr r0, [r5, #0x0]
+ str r0, [r4, #0x0]
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201F80C
+FUN_0201F80C: ; 0x0201F80C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r5, #0x0
+ bne _0201F81A
+ bl ErrorHandling
+_0201F81A:
+ strb r4, [r5, #0x18]
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201F820
+FUN_0201F820: ; 0x0201F820
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _0201F82A
+ bl ErrorHandling
+_0201F82A:
+ ldrb r0, [r4, #0x18]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201F830
+FUN_0201F830: ; 0x0201F830
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r5, #0x0
+ bne _0201F83E
+ bl ErrorHandling
+_0201F83E:
+ add r5, #0xaa
+ strh r4, [r5, #0x0]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0201F844
+FUN_0201F844: ; 0x0201F844
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _0201F84E
+ bl ErrorHandling
+_0201F84E:
+ add r4, #0xaa
+ ldrh r0, [r4, #0x0]
+ pop {r4, pc}
+
+ thumb_func_start FUN_0201F854
+FUN_0201F854: ; 0x0201F854
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r5, #0x0
+ bne _0201F862
+ bl ErrorHandling
+_0201F862:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0201FBFC
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0201F86C
+FUN_0201F86C: ; 0x0201F86C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r5, #0x0
+ bne _0201F87A
+ bl ErrorHandling
+_0201F87A:
+ add r5, #0xac
+ str r4, [r5, #0x0]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0201F880
+FUN_0201F880: ; 0x0201F880
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _0201F88A
+ bl ErrorHandling
+_0201F88A:
+ add r4, #0xac
+ ldr r0, [r4, #0x0]
+ pop {r4, pc}
+
+ thumb_func_start FUN_0201F890
+FUN_0201F890: ; 0x0201F890
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r5, #0x0
+ bne _0201F89E
+ bl ErrorHandling
+_0201F89E:
+ add r1, r5, #0x0
+ add r1, #0xaa
+ ldrh r1, [r1, #0x0]
+ add r0, r5, #0x0
+ bl FUN_0201FBEC
+ add r1, r5, #0x0
+ add r1, #0xac
+ str r0, [r1, #0x0]
+ add r0, r5, #0x0
+ add r0, #0xac
+ ldr r0, [r0, #0x0]
+ add r5, #0xac
+ add r0, r0, r4
+ str r0, [r5, #0x0]
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201F8C0
+FUN_0201F8C0: ; 0x0201F8C0
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _0201F8CA
+ bl ErrorHandling
+_0201F8CA:
+ add r1, r4, #0x0
+ add r1, #0xaa
+ ldrh r1, [r1, #0x0]
+ add r0, r4, #0x0
+ bl FUN_0201FBEC
+ add r4, #0xac
+ ldr r1, [r4, #0x0]
+ sub r0, r1, r0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201F8E0
+FUN_0201F8E0: ; 0x0201F8E0
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _0201F8EA
+ bl ErrorHandling
+_0201F8EA:
+ ldr r0, [r4, #0x7c]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201F8F0
+FUN_0201F8F0: ; 0x0201F8F0
+ push {r3, lr}
+ add r1, r0, #0x0
+ add r0, #0xa8
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x2
+ bne _0201F90A
+ add r0, r1, #0x0
+ add r0, #0xa4
+ add r1, #0xac
+ ldr r0, [r0, #0x0]
+ ldr r1, [r1, #0x0]
+ bl FUN_0201C438
+_0201F90A:
+ pop {r3, pc}
+
+ thumb_func_start FUN_0201F90C
+FUN_0201F90C: ; 0x0201F90C
+ push {r3-r4, lr}
+ sub sp, #0x4
+ add r4, r0, #0x0
+ add r1, r4, #0x0
+ add r1, #0xac
+ ldr r1, [r1, #0x0]
+ add r0, #0x94
+ lsl r1, r1, #0x4
+ lsr r1, r1, #0x10
+ bl FUN_02022244
+ add r2, sp, #0x0
+ strb r0, [r2, #0x0]
+ lsr r0, r0, #0x8
+ strb r0, [r2, #0x1]
+ ldrb r0, [r2, #0x0]
+ add r1, r4, #0x0
+ add r1, #0x84
+ strb r0, [r2, #0x2]
+ ldrb r0, [r2, #0x1]
+ strb r0, [r2, #0x3]
+ ldrb r2, [r2, #0x2]
+ ldr r0, [r4, #0x7c]
+ ldr r1, [r1, #0x0]
+ bl FUN_0201F954
+ add r2, sp, #0x0
+ ldr r0, [r4, #0x7c]
+ add r4, #0x84
+ ldrb r2, [r2, #0x3]
+ ldr r1, [r4, #0x0]
+ bl FUN_0201FA04
+ add sp, #0x4
+ pop {r3-r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201F954
+FUN_0201F954: ; 0x0201F954
+ push {r3-r7, lr}
+ ldr r3, [r0, #0x8]
+ mov r5, #0x0
+ add r6, r0, r3
+ ldrh r0, [r0, r3]
+ add r3, r1, #0x0
+ add r1, #0x42
+ ldrh r1, [r1, #0x0]
+ add r3, #0x3c
+ add r4, r6, r0
+ add r0, r3, r1
+ ldrh r1, [r3, r1]
+ mul r2, r1
+ add r0, r0, r2
+ ldr r0, [r0, #0x4]
+ lsl r0, r0, #0x10
+ lsr r7, r0, #0x10
+ ldrb r0, [r4, #0x1]
+ cmp r0, #0x0
+ ble _0201F9A2
+_0201F97C:
+ ldrh r0, [r4, #0x6]
+ add r1, r4, r0
+ ldrh r0, [r4, r0]
+ add r2, r1, #0x4
+ add r1, r0, #0x0
+ mul r1, r5
+ add r1, r2, r1
+ ldrb r2, [r1, #0x3]
+ mov r0, #0x1
+ tst r0, r2
+ beq _0201F99A
+ add r0, r6, #0x0
+ add r2, r7, #0x0
+ bl FUN_0201F9A4
+_0201F99A:
+ ldrb r0, [r4, #0x1]
+ add r5, r5, #0x1
+ cmp r5, r0
+ blt _0201F97C
+_0201F9A2:
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0201F9A4
+FUN_0201F9A4: ; 0x0201F9A4
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r6, r0, #0x0
+ add r0, r1, #0x0
+ ldrh r0, [r0, #0x0]
+ str r1, [sp, #0x0]
+ add r7, r2, #0x0
+ add r0, r6, r0
+ str r0, [sp, #0x4]
+ add r0, r1, #0x0
+ ldrb r0, [r0, #0x2]
+ mov r4, #0x0
+ cmp r0, #0x0
+ ble _0201F9FC
+ add r0, r6, #0x4
+ str r0, [sp, #0x8]
+_0201F9C4:
+ ldrh r2, [r6, #0xa]
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0x8]
+ add r0, r0, r2
+ ldrh r2, [r1, r2]
+ ldr r1, [sp, #0x4]
+ ldrb r1, [r1, r4]
+ mul r1, r2
+ add r0, r0, r1
+ ldr r0, [r0, #0x4]
+ add r5, r6, r0
+ ldr r0, [r5, #0x14]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ add r1, r0, r7
+ ldr r0, _0201FA00 ; =0x0000FFFF
+ cmp r1, r0
+ bls _0201F9EC
+ bl ErrorHandling
+_0201F9EC:
+ ldr r0, [r5, #0x14]
+ add r4, r4, #0x1
+ add r0, r0, r7
+ str r0, [r5, #0x14]
+ ldr r0, [sp, #0x0]
+ ldrb r0, [r0, #0x2]
+ cmp r4, r0
+ blt _0201F9C4
+_0201F9FC:
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+_0201FA00: .word 0x0000FFFF
+
+ thumb_func_start FUN_0201FA04
+FUN_0201FA04: ; 0x0201FA04
+ push {r3-r7, lr}
+ ldr r3, [r0, #0x8]
+ add r7, r0, r3
+ ldrh r0, [r7, #0x2]
+ add r4, r7, r0
+ ldrh r0, [r1, #0x34]
+ add r5, r1, r0
+ ldrh r0, [r5, #0x6]
+ add r1, r5, r0
+ ldrh r0, [r5, r0]
+ add r3, r1, #0x4
+ add r1, r0, #0x0
+ mul r1, r2
+ add r0, r3, r1
+ ldrh r6, [r3, r1]
+ ldrh r1, [r0, #0x2]
+ mov r0, #0x1
+ tst r0, r1
+ bne _0201FA2C
+ lsr r6, r6, #0x1
+_0201FA2C:
+ ldrb r0, [r4, #0x1]
+ mov r5, #0x0
+ cmp r0, #0x0
+ bls _0201FA5A
+_0201FA34:
+ ldrh r0, [r4, #0x6]
+ add r1, r4, r0
+ ldrh r0, [r4, r0]
+ add r2, r1, #0x4
+ add r1, r0, #0x0
+ mul r1, r5
+ add r1, r2, r1
+ ldrb r2, [r1, #0x3]
+ mov r0, #0x1
+ tst r0, r2
+ beq _0201FA52
+ add r0, r7, #0x0
+ add r2, r6, #0x0
+ bl FUN_0201FA5C
+_0201FA52:
+ ldrb r0, [r4, #0x1]
+ add r5, r5, #0x1
+ cmp r5, r0
+ blo _0201FA34
+_0201FA5A:
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0201FA5C
+FUN_0201FA5C: ; 0x0201FA5C
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r6, r0, #0x0
+ add r0, r1, #0x0
+ ldrh r0, [r0, #0x0]
+ str r1, [sp, #0x0]
+ add r7, r2, #0x0
+ add r0, r6, r0
+ str r0, [sp, #0x4]
+ add r0, r1, #0x0
+ ldrb r0, [r0, #0x2]
+ mov r4, #0x0
+ cmp r0, #0x0
+ bls _0201FAB4
+ add r0, r6, #0x4
+ str r0, [sp, #0x8]
+_0201FA7C:
+ ldrh r2, [r6, #0xa]
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0x8]
+ add r0, r0, r2
+ ldrh r2, [r1, r2]
+ ldr r1, [sp, #0x4]
+ ldrb r1, [r1, r4]
+ mul r1, r2
+ add r0, r0, r1
+ ldr r0, [r0, #0x4]
+ add r5, r6, r0
+ ldrh r1, [r5, #0x1c]
+ ldr r0, _0201FAB8 ; =0x00001FFF
+ and r0, r1
+ add r1, r0, r7
+ ldr r0, _0201FAB8 ; =0x00001FFF
+ cmp r1, r0
+ bls _0201FAA4
+ bl ErrorHandling
+_0201FAA4:
+ ldrh r0, [r5, #0x1c]
+ add r4, r4, #0x1
+ add r0, r0, r7
+ strh r0, [r5, #0x1c]
+ ldr r0, [sp, #0x0]
+ ldrb r0, [r0, #0x2]
+ cmp r4, r0
+ blo _0201FA7C
+_0201FAB4:
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+_0201FAB8: .word 0x00001FFF
+
+ thumb_func_start FUN_0201FABC
+FUN_0201FABC: ; 0x0201FABC
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x8]
+ mov r7, #0x0
+ cmp r0, #0x0
+ ble _0201FAEC
+ add r4, r7, #0x0
+ add r6, r7, #0x0
+_0201FACC:
+ ldr r0, [r5, #0x4]
+ add r0, r0, r4
+ bl FUN_0201F094
+ ldr r0, [r5, #0x4]
+ add r7, r7, #0x1
+ add r1, r0, r4
+ add r0, r5, #0x0
+ add r0, #0xc4
+ ldr r0, [r0, #0x0]
+ add r4, #0xb8
+ str r1, [r0, r6]
+ ldr r0, [r5, #0x8]
+ add r6, r6, #0x4
+ cmp r7, r0
+ blt _0201FACC
+_0201FAEC:
+ mov r0, #0x0
+ add r5, #0xc8
+ str r0, [r5, #0x0]
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0201FAF4
+FUN_0201FAF4: ; 0x0201FAF4
+ add r1, r0, #0x0
+ add r1, #0xc8
+ ldr r3, [r1, #0x0]
+ ldr r1, [r0, #0x8]
+ cmp r3, r1
+ blt _0201FB04
+ mov r0, #0x0
+ bx lr
+_0201FB04:
+ add r1, r0, #0x0
+ add r1, #0xc4
+ ldr r2, [r1, #0x0]
+ lsl r1, r3, #0x2
+ ldr r2, [r2, r1]
+ add r1, r0, #0x0
+ add r1, #0xc8
+ ldr r1, [r1, #0x0]
+ add r0, #0xc8
+ add r1, r1, #0x1
+ str r1, [r0, #0x0]
+ add r0, r2, #0x0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0201FB20
+FUN_0201FB20: ; 0x0201FB20
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0xc8
+ ldr r0, [r0, #0x0]
+ add r4, r1, #0x0
+ cmp r0, #0x0
+ bgt _0201FB32
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0201FB32:
+ add r0, r4, #0x0
+ bl FUN_0201F094
+ add r0, r5, #0x0
+ add r0, #0xc8
+ ldr r0, [r0, #0x0]
+ sub r1, r0, #0x1
+ add r0, r5, #0x0
+ add r0, #0xc8
+ str r1, [r0, #0x0]
+ add r0, r5, #0x0
+ add r0, #0xc4
+ add r5, #0xc8
+ ldr r1, [r0, #0x0]
+ ldr r0, [r5, #0x0]
+ lsl r0, r0, #0x2
+ str r4, [r1, r0]
+ mov r0, #0x1
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0201FB58
+FUN_0201FB58: ; 0x0201FB58
+ add r2, r0, #0x0
+ add r2, #0xb4
+ ldr r3, [r2, #0x0]
+ add r2, r1, #0x0
+ add r2, #0xb4
+ str r3, [r2, #0x0]
+ add r2, r0, #0x0
+ add r2, #0xb4
+ ldr r2, [r2, #0x0]
+ add r2, #0xb0
+ str r1, [r2, #0x0]
+ add r2, r1, #0x0
+ add r2, #0xb0
+ str r0, [r2, #0x0]
+ add r0, #0xb4
+ str r1, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0201FB7C
+FUN_0201FB7C: ; 0x0201FB7C
+ add r1, r0, #0x0
+ add r1, #0xb0
+ ldr r2, [r1, #0x0]
+ add r1, r0, #0x0
+ add r1, #0xb4
+ ldr r1, [r1, #0x0]
+ add r1, #0xb0
+ str r2, [r1, #0x0]
+ add r1, r0, #0x0
+ add r0, #0xb0
+ add r1, #0xb4
+ ldr r0, [r0, #0x0]
+ ldr r1, [r1, #0x0]
+ add r0, #0xb4
+ str r1, [r0, #0x0]
+ bx lr
+
+ thumb_func_start FUN_0201FB9C
+FUN_0201FB9C: ; 0x0201FB9C
+ push {r3-r7, lr}
+ add r6, r1, #0x0
+ mov r1, #0x0
+ add r5, r2, #0x0
+ bl FUN_0201FC90
+ add r7, r0, #0x0
+ blx FUN_020BC13C
+ add r4, r0, #0x0
+ ldrh r0, [r4, #0xe]
+ add r0, r4, r0
+ ldr r0, [r0, #0xc]
+ add r0, r4, r0
+ str r0, [r6, #0x0]
+ cmp r5, #0x0
+ beq _0201FBC6
+ add r0, r7, #0x0
+ blx FUN_020BC0FC
+ str r0, [r5, #0x0]
+_0201FBC6:
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201FBCC
+FUN_0201FBCC: ; 0x0201FBCC
+ ldr r3, _0201FBD4 ; =FUN_0201FC90
+ mov r1, #0x1
+ bx r3
+ nop
+_0201FBD4: .word FUN_0201FC90
+
+ thumb_func_start FUN_0201FBD8
+FUN_0201FBD8: ; 0x0201FBD8
+ push {r3, lr}
+ ldr r2, [r1, #0x1c]
+ cmp r2, #0x0
+ bne _0201FBE6
+ bl FUN_0201F384
+ pop {r3, pc}
+_0201FBE6:
+ bl FUN_0201F3D4
+ pop {r3, pc}
+
+ thumb_func_start FUN_0201FBEC
+FUN_0201FBEC: ; 0x0201FBEC
+ push {r3, lr}
+ ldr r0, [r0, #0x20]
+ bl FUN_0201FCA8
+ ldr r0, [r0, #0x0]
+ lsl r0, r0, #0xc
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201FBFC
+FUN_0201FBFC: ; 0x0201FBFC
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r1, r5, #0x0
+ add r1, #0xaa
+ ldrh r1, [r1, #0x0]
+ ldr r0, [r5, #0x20]
+ bl FUN_0201FCA8
+ add r5, #0xac
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_0201FC1C
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201FC1C
+FUN_0201FC1C: ; 0x0201FC1C
+ push {r3-r6}
+ ldr r4, [r0, #0x0]
+ ldr r6, [r1, #0x0]
+ lsl r4, r4, #0xc
+ mov r3, #0x0
+ cmp r4, r6
+ bgt _0201FC32
+ ldr r5, [r0, #0x4]
+ lsl r5, r5, #0xc
+ cmp r5, r6
+ bge _0201FC36
+_0201FC32:
+ str r4, [r1, #0x0]
+ b _0201FC4E
+_0201FC36:
+ add r2, r6, r2
+ cmp r5, r2
+ bge _0201FC4C
+ ldr r0, [r0, #0x8]
+ cmp r0, #0x0
+ bne _0201FC46
+ str r4, [r1, #0x0]
+ b _0201FC4E
+_0201FC46:
+ mov r3, #0x1
+ str r5, [r1, #0x0]
+ b _0201FC4E
+_0201FC4C:
+ str r2, [r1, #0x0]
+_0201FC4E:
+ add r0, r3, #0x0
+ pop {r3-r6}
+ bx lr
+
+ thumb_func_start FUN_0201FC54
+FUN_0201FC54: ; 0x0201FC54
+ push {r3, lr}
+ add r3, r0, #0x0
+ add r0, #0x90
+ str r0, [sp, #0x0]
+ add r0, r3, #0x0
+ add r0, #0x80
+ add r2, r3, #0x0
+ ldr r1, [r3, #0x78]
+ ldr r0, [r0, #0x0]
+ add r2, #0x88
+ add r3, #0x8c
+ bl FUN_0201F500
+ pop {r3, pc}
+
+ thumb_func_start FUN_0201FC70
+FUN_0201FC70: ; 0x0201FC70
+ push {r3-r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x78]
+ blx FUN_020B772C
+ add r4, #0x80
+ ldr r0, [r4, #0x0]
+ add r1, sp, #0x4
+ add r2, sp, #0x8
+ add r3, sp, #0x0
+ bl FUN_0201F4EC
+ add sp, #0xc
+ pop {r3-r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201FC90
+FUN_0201FC90: ; 0x0201FC90
+ cmp r1, #0x0
+ beq _0201FC9A
+ cmp r1, #0x1
+ beq _0201FC9E
+ b _0201FCA2
+_0201FC9A:
+ ldr r0, [r0, #0x0]
+ bx lr
+_0201FC9E:
+ ldr r0, [r0, #0x4]
+ bx lr
+_0201FCA2:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0201FCA8
+FUN_0201FCA8: ; 0x0201FCA8
+ mov r2, #0xc
+ mul r2, r1
+ add r0, r0, r2
+ bx lr
+
+ thumb_func_start FUN_0201FCB0
+FUN_0201FCB0: ; 0x0201FCB0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bne _0201FCBA
+ bl ErrorHandling
+_0201FCBA:
+ ldr r0, [r5, #0x4]
+ cmp r0, #0x0
+ bne _0201FCC4
+ bl ErrorHandling
+_0201FCC4:
+ mov r1, #0x49
+ ldr r0, [r5, #0x8]
+ lsl r1, r1, #0x2
+ bl FUN_02016998
+ add r4, r0, #0x0
+ bne _0201FCD6
+ bl ErrorHandling
+_0201FCD6:
+ add r0, r4, #0x0
+ bl FUN_0201FE44
+ ldr r2, [r5, #0x0]
+ ldr r0, [r5, #0x8]
+ lsl r1, r2, #0x6
+ add r1, r2, r1
+ lsl r1, r1, #0x2
+ bl FUN_02016998
+ str r0, [r4, #0x0]
+ cmp r0, #0x0
+ bne _0201FCF4
+ bl ErrorHandling
+_0201FCF4:
+ ldr r0, [r5, #0x0]
+ str r0, [r4, #0x4]
+ ldr r1, [r5, #0x0]
+ ldr r0, [r5, #0x8]
+ lsl r1, r1, #0x2
+ bl FUN_02016998
+ str r0, [r4, #0x8]
+ cmp r0, #0x0
+ bne _0201FD0C
+ bl ErrorHandling
+_0201FD0C:
+ add r0, r4, #0x0
+ bl FUN_0202083C
+ add r0, r4, #0x0
+ add r0, #0x10
+ bl FUN_0201FE6C
+ add r2, r4, #0x0
+ mov r1, #0x43
+ lsl r1, r1, #0x2
+ add r2, #0x10
+ str r2, [r4, r1]
+ add r0, r1, #0x4
+ str r2, [r4, r0]
+ ldr r0, [r5, #0x4]
+ add r1, #0x8
+ str r0, [r4, r1]
+ ldr r0, [r5, #0x8]
+ ldr r1, _0201FD54 ; =0x02105BBC
+ bl FUN_020161A4
+ mov r1, #0x46
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ ldr r0, [r4, r1]
+ add r1, r1, #0x4
+ add r1, r4, r1
+ blx FUN_020AFD94
+ mov r0, #0x12
+ mov r1, #0x1
+ lsl r0, r0, #0x4
+ str r1, [r4, r0]
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ nop
+_0201FD54: .word 0x02105BBC
+
+ thumb_func_start FUN_0201FD58
+FUN_0201FD58: ; 0x0201FD58
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _0201FD62
+ mov r0, #0x0
+ pop {r4, pc}
+_0201FD62:
+ ldr r1, [r4, #0x0]
+ cmp r1, #0x0
+ bne _0201FD6C
+ mov r0, #0x1
+ pop {r4, pc}
+_0201FD6C:
+ bl FUN_0201FDB4
+ mov r0, #0x46
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ ldr r0, [r4, #0x8]
+ bl FUN_02016A18
+ ldr r0, [r4, #0x0]
+ bl FUN_02016A18
+ add r0, r4, #0x0
+ bl FUN_0201FE44
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0x1
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201FD98
+FUN_0201FD98: ; 0x0201FD98
+ cmp r0, #0x0
+ bne _0201FDA0
+ mov r0, #0x0
+ bx lr
+_0201FDA0:
+ ldr r2, [r0, #0x0]
+ cmp r2, #0x0
+ bne _0201FDAA
+ mov r0, #0x0
+ bx lr
+_0201FDAA:
+ mov r2, #0x12
+ lsl r2, r2, #0x4
+ str r1, [r0, r2]
+ mov r0, #0x1
+ bx lr
+
+ thumb_func_start FUN_0201FDB4
+FUN_0201FDB4: ; 0x0201FDB4
+ push {r4-r6, lr}
+ cmp r0, #0x0
+ bne _0201FDBE
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_0201FDBE:
+ ldr r1, [r0, #0x0]
+ cmp r1, #0x0
+ bne _0201FDC8
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_0201FDC8:
+ mov r1, #0x11
+ lsl r1, r1, #0x4
+ add r4, r0, #0x0
+ ldr r1, [r0, r1]
+ add r4, #0x10
+ cmp r1, r4
+ beq _0201FDE8
+ mov r6, #0x1
+ lsl r6, r6, #0x8
+_0201FDDA:
+ ldr r5, [r1, r6]
+ add r0, r1, #0x0
+ bl FUN_0201FFC8
+ add r1, r5, #0x0
+ cmp r5, r4
+ bne _0201FDDA
+_0201FDE8:
+ mov r0, #0x1
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0201FDEC
+FUN_0201FDEC: ; 0x0201FDEC
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ bne _0201FDF6
+ bl ErrorHandling
+_0201FDF6:
+ mov r0, #0x12
+ lsl r0, r0, #0x4
+ ldr r1, [r5, r0]
+ cmp r1, #0x0
+ beq _0201FE38
+ sub r0, #0x10
+ add r6, r5, #0x0
+ ldr r4, [r5, r0]
+ add r6, #0x10
+ cmp r4, r6
+ beq _0201FE38
+ ldr r7, _0201FE3C ; =0x020EE658
+_0201FE0E:
+ add r2, r4, #0x0
+ add r2, #0x34
+ ldrb r2, [r2, #0x0]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ lsl r2, r2, #0x2
+ ldr r2, [r7, r2]
+ blx r2
+ add r1, r4, #0x0
+ add r1, #0x35
+ ldrb r1, [r1, #0x0]
+ add r0, r4, #0x0
+ lsl r2, r1, #0x2
+ ldr r1, _0201FE40 ; =0x020EE660
+ ldr r1, [r1, r2]
+ blx r1
+ mov r0, #0x1
+ lsl r0, r0, #0x8
+ ldr r4, [r4, r0]
+ cmp r4, r6
+ bne _0201FE0E
+_0201FE38:
+ pop {r3-r7, pc}
+ nop
+_0201FE3C: .word 0x020EE658
+_0201FE40: .word 0x020EE660
+
+ thumb_func_start FUN_0201FE44
+FUN_0201FE44: ; 0x0201FE44
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r1, #0x0
+ str r1, [r4, #0x0]
+ str r1, [r4, #0x4]
+ str r1, [r4, #0x8]
+ mov r0, #0x45
+ str r1, [r4, #0xc]
+ lsl r0, r0, #0x2
+ str r1, [r4, r0]
+ add r0, r4, #0x0
+ add r0, #0x10
+ bl FUN_0201FE6C
+ mov r0, #0x12
+ mov r1, #0x0
+ lsl r0, r0, #0x4
+ str r1, [r4, r0]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201FE6C
+FUN_0201FE6C: ; 0x0201FE6C
+ push {r4, lr}
+ mov r2, #0x41
+ add r4, r0, #0x0
+ mov r1, #0x0
+ lsl r2, r2, #0x2
+ str r1, [r4, #0x3c]
+ blx FUN_020DF4A4
+ add r0, r4, #0x0
+ add r0, #0xb4
+ blx FUN_020B1A24
+ add r0, r4, #0x0
+ add r0, #0xd8
+ blx FUN_020B19DC
+ mov r0, #0x0
+ str r0, [r4, #0x30]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201FE94
+FUN_0201FE94: ; 0x0201FE94
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_02020874
+ add r4, r0, #0x0
+ bne _0201FEA6
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_0201FEA6:
+ ldr r0, [r5, #0x0]
+ add r6, r5, #0x0
+ str r0, [r4, #0x3c]
+ add r0, r4, #0x0
+ mov r2, #0x0
+ add r0, #0xf0
+ add r6, #0x8
+ strh r2, [r0, #0x0]
+ ldmia r6!, {r0-r1}
+ add r3, r4, #0x0
+ stmia r3!, {r0-r1}
+ ldr r0, [r6, #0x0]
+ add r6, r5, #0x0
+ str r0, [r3, #0x0]
+ add r6, #0x14
+ add r3, r4, #0x0
+ ldmia r6!, {r0-r1}
+ add r3, #0x18
+ stmia r3!, {r0-r1}
+ ldr r0, [r6, #0x0]
+ str r0, [r3, #0x0]
+ ldrh r0, [r5, #0x20]
+ strh r0, [r4, #0x24]
+ add r0, r4, #0x0
+ ldr r1, [r5, #0x28]
+ add r0, #0xf8
+ str r1, [r0, #0x0]
+ add r0, r4, #0x0
+ ldr r1, [r5, #0x24]
+ add r0, #0xf4
+ strh r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x26
+ strb r2, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x27
+ strb r2, [r0, #0x0]
+ str r2, [r4, #0x2c]
+ add r0, r4, #0x0
+ str r2, [r4, #0x30]
+ mov r1, #0x11
+ add r0, #0x28
+ strb r1, [r0, #0x0]
+ mov r0, #0x45
+ ldr r1, [r5, #0x0]
+ lsl r0, r0, #0x2
+ ldr r0, [r1, r0]
+ add r1, r4, #0x0
+ add r1, #0x26
+ ldrb r1, [r1, #0x0]
+ blx FUN_020B502C
+ add r0, r4, #0x0
+ add r0, #0x27
+ ldrb r2, [r0, #0x0]
+ mov r0, #0x45
+ ldr r1, [r5, #0x0]
+ lsl r0, r0, #0x2
+ ldr r0, [r1, r0]
+ mov r1, #0x1
+ mov r3, #0x2
+ and r1, r2
+ and r2, r3
+ blx FUN_020B4F38
+ add r0, r4, #0x0
+ mov r2, #0x1
+ add r0, #0x34
+ strb r2, [r0, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0x0
+ add r0, #0x35
+ strb r1, [r0, #0x0]
+ lsl r0, r2, #0xd
+ str r0, [r4, #0x38]
+ ldr r0, [r5, #0x0]
+ ldr r1, [r5, #0x4]
+ ldr r3, [r5, #0x2c]
+ add r2, r4, #0x0
+ bl FUN_02020434
+ cmp r0, #0x0
+ bne _0201FF56
+ add r0, r4, #0x0
+ bl FUN_0201FFC8
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_0201FF56:
+ add r1, r4, #0x0
+ add r1, #0xf8
+ add r0, r4, #0x0
+ ldr r1, [r1, #0x0]
+ add r0, #0xd8
+ bl FUN_020205E8
+ add r1, r4, #0x0
+ add r1, #0x2a
+ strb r0, [r1, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x2a
+ ldrb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x29
+ strb r1, [r0, #0x0]
+ ldr r0, [r5, #0x0]
+ add r1, r4, #0x0
+ bl FUN_02020788
+ add r0, r4, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201FF84
+FUN_0201FF84: ; 0x0201FF84
+ push {r4, lr}
+ sub sp, #0x30
+ add r2, r0, #0x0
+ ldr r0, [r2, #0x0]
+ add r4, r2, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [r2, #0x4]
+ add r4, #0x8
+ str r0, [sp, #0x4]
+ ldmia r4!, {r0-r1}
+ add r3, sp, #0x8
+ stmia r3!, {r0-r1}
+ ldr r0, [r4, #0x0]
+ mov r1, #0x0
+ str r0, [r3, #0x0]
+ mov r0, #0x1
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x14]
+ str r0, [sp, #0x18]
+ str r0, [sp, #0x1c]
+ add r0, sp, #0x0
+ strh r1, [r0, #0x20]
+ ldr r0, [r2, #0x14]
+ str r0, [sp, #0x24]
+ ldr r0, [r2, #0x18]
+ str r0, [sp, #0x28]
+ ldr r0, [r2, #0x1c]
+ str r0, [sp, #0x2c]
+ add r0, sp, #0x0
+ bl FUN_0201FE94
+ add sp, #0x30
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201FFC8
+FUN_0201FFC8: ; 0x0201FFC8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r1, r5, #0x0
+ add r1, #0xec
+ ldr r1, [r1, #0x0]
+ cmp r1, #0x0
+ beq _02020040
+ add r1, r5, #0x0
+ add r1, #0xfc
+ ldr r1, [r1, #0x0]
+ cmp r1, #0x0
+ beq _0201FFE4
+ bl FUN_02020820
+_0201FFE4:
+ add r0, r5, #0x0
+ add r0, #0xec
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x3
+ bne _0202000E
+ add r1, r5, #0x0
+ add r1, #0xf8
+ add r0, r5, #0x0
+ add r4, r5, #0x0
+ ldr r1, [r1, #0x0]
+ add r0, #0xb4
+ add r4, #0x40
+ blx FUN_020B1A14
+ mov r1, #0x0
+ mvn r1, r1
+ cmp r0, r1
+ beq _0202000E
+ ldr r0, [r4, #0x5c]
+ blx FUN_020B4358
+_0202000E:
+ add r0, r5, #0x0
+ add r0, #0xec
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x2
+ bne _02020030
+ add r4, r5, #0x0
+ add r4, #0x40
+ ldr r0, [r4, #0x70]
+ cmp r0, #0x0
+ beq _02020026
+ bl FUN_02016A18
+_02020026:
+ ldr r0, [r4, #0x74]
+ cmp r0, #0x0
+ beq _02020030
+ bl FUN_02016A18
+_02020030:
+ add r0, r5, #0x0
+ mov r1, #0x0
+ add r0, #0xec
+ str r1, [r0, #0x0]
+ ldr r0, [r5, #0x3c]
+ add r1, r5, #0x0
+ bl FUN_02020890
+_02020040:
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02020044
+FUN_02020044: ; 0x02020044
+ add r2, r1, #0x0
+ add r3, r0, #0x0
+ ldmia r2!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldr r0, [r2, #0x0]
+ str r0, [r3, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02020054
+FUN_02020054: ; 0x02020054
+ add r3, r1, #0x0
+ add r2, r0, #0x0
+ ldmia r3!, {r0-r1}
+ add r2, #0xc
+ stmia r2!, {r0-r1}
+ ldr r0, [r3, #0x0]
+ str r0, [r2, #0x0]
+ bx lr
+
+ thumb_func_start FUN_02020064
+FUN_02020064: ; 0x02020064
+ add r3, r1, #0x0
+ add r2, r0, #0x0
+ ldmia r3!, {r0-r1}
+ add r2, #0x18
+ stmia r2!, {r0-r1}
+ ldr r0, [r3, #0x0]
+ str r0, [r2, #0x0]
+ bx lr
+
+ thumb_func_start FUN_02020074
+FUN_02020074: ; 0x02020074
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r2, #0x0
+ bl FUN_02020064
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_020200EC
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02020088
+FUN_02020088: ; 0x02020088
+ strh r1, [r0, #0x24]
+ bx lr
+
+ thumb_func_start FUN_0202008C
+FUN_0202008C: ; 0x0202008C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r2, #0x0
+ bl FUN_02020088
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_020200EC
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_020200A0
+FUN_020200A0: ; 0x020200A0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r5, #0x0
+ bne _020200AE
+ bl ErrorHandling
+_020200AE:
+ cmp r4, #0x2
+ blt _020200B6
+ bl ErrorHandling
+_020200B6:
+ add r5, #0x34
+ strb r4, [r5, #0x0]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_020200BC
+FUN_020200BC: ; 0x020200BC
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r5, #0x0
+ bne _020200CA
+ bl ErrorHandling
+_020200CA:
+ cmp r4, #0x2
+ blt _020200D2
+ bl ErrorHandling
+_020200D2:
+ add r5, #0x35
+ strb r4, [r5, #0x0]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_020200D8
+FUN_020200D8: ; 0x020200D8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r5, #0x0
+ bne _020200E6
+ bl ErrorHandling
+_020200E6:
+ str r4, [r5, #0x38]
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020200EC
+FUN_020200EC: ; 0x020200EC
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r5, #0x0
+ bne _020200FA
+ bl ErrorHandling
+_020200FA:
+ add r5, #0x26
+ strb r4, [r5, #0x0]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02020100
+FUN_02020100: ; 0x02020100
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r5, #0x0
+ bne _0202010E
+ bl ErrorHandling
+_0202010E:
+ add r0, r5, #0x0
+ add r0, #0x27
+ strb r4, [r0, #0x0]
+ mov r0, #0x0
+ add r5, #0x26
+ strb r0, [r5, #0x0]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0202011C
+FUN_0202011C: ; 0x0202011C
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02020120
+FUN_02020120: ; 0x02020120
+ add r0, #0x18
+ bx lr
+
+ thumb_func_start FUN_02020124
+FUN_02020124: ; 0x02020124
+ ldrh r0, [r0, #0x24]
+ bx lr
+
+ thumb_func_start FUN_02020128
+FUN_02020128: ; 0x02020128
+ add r0, #0x34
+ ldrb r0, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02020130
+FUN_02020130: ; 0x02020130
+ push {r4, lr}
+ lsl r2, r1, #0x10
+ lsr r3, r2, #0x10
+ add r2, r0, #0x0
+ add r2, #0xf0
+ strh r3, [r2, #0x0]
+ add r2, r0, #0x0
+ add r2, #0xec
+ ldr r2, [r2, #0x0]
+ cmp r2, #0x1
+ beq _0202014A
+ cmp r2, #0x3
+ bne _02020168
+_0202014A:
+ add r4, r0, #0x0
+ add r4, #0x40
+ lsl r1, r1, #0x10
+ ldr r0, [r4, #0x4]
+ lsr r1, r1, #0x10
+ blx FUN_020AFC04
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x8
+ blx FUN_020B1EE4
+ mov r0, #0x1
+ str r0, [r4, #0x10]
+ pop {r4, pc}
+_02020168:
+ add r4, r0, #0x0
+ add r4, #0x40
+ ldr r0, [r4, #0x6c]
+ add r1, r3, #0x0
+ blx FUN_020AFC04
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x8
+ blx FUN_020B242C
+ mov r0, #0x1
+ str r0, [r4, #0x10]
+ pop {r4, pc}
+
+ thumb_func_start FUN_02020184
+FUN_02020184: ; 0x02020184
+ push {r3, lr}
+ add r2, r0, #0x0
+ add r2, #0xf0
+ ldrh r2, [r2, #0x0]
+ cmp r2, r1
+ beq _02020194
+ bl FUN_02020130
+_02020194:
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02020198
+FUN_02020198: ; 0x02020198
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ add r0, #0xec
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x1
+ beq _020201A8
+ cmp r0, #0x3
+ bne _020201C2
+_020201A8:
+ add r5, r4, #0x0
+ add r5, #0x40
+ add r0, r5, #0x0
+ add r0, #0x8
+ blx FUN_020B0448
+ mov r0, #0x1
+ str r0, [r5, #0x10]
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_02020208
+ pop {r3-r5, pc}
+_020201C2:
+ add r5, r4, #0x0
+ add r5, #0x40
+ add r0, r5, #0x0
+ add r0, #0x8
+ blx FUN_020B0448
+ mov r0, #0x1
+ str r0, [r5, #0x10]
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_02020208
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_020201DC
+FUN_020201DC: ; 0x020201DC
+ add r0, #0xf0
+ ldrh r0, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020201E4
+FUN_020201E4: ; 0x020201E4
+ push {r3, lr}
+ add r2, r0, #0x0
+ add r2, #0xec
+ ldr r2, [r2, #0x0]
+ cmp r2, #0x1
+ beq _020201F4
+ cmp r2, #0x3
+ bne _020201FE
+_020201F4:
+ add r0, #0x40
+ add r0, #0x8
+ blx FUN_020B1EC4
+ pop {r3, pc}
+_020201FE:
+ add r0, #0x40
+ add r0, #0x8
+ blx FUN_020B224C
+ pop {r3, pc}
+
+ thumb_func_start FUN_02020208
+FUN_02020208: ; 0x02020208
+ push {r3, lr}
+ add r2, r0, #0x0
+ add r2, #0xec
+ ldr r2, [r2, #0x0]
+ cmp r2, #0x1
+ beq _02020218
+ cmp r2, #0x3
+ bne _02020222
+_02020218:
+ add r0, #0x40
+ add r0, #0x8
+ blx FUN_020B1EA4
+ pop {r3, pc}
+_02020222:
+ add r0, #0x40
+ add r0, #0x8
+ blx FUN_020B2194
+ pop {r3, pc}
+
+ thumb_func_start FUN_0202022C
+FUN_0202022C: ; 0x0202022C
+ ldr r3, _02020234 ; =0x020B04FC
+ add r0, #0x40
+ add r0, #0x8
+ bx r3
+ .balign 4
+_02020234: .word 0x020B04FC
+
+ thumb_func_start FUN_02020238
+FUN_02020238: ; 0x02020238
+ add r0, #0xf2
+ strb r1, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02020240
+FUN_02020240: ; 0x02020240
+ add r0, #0xf2
+ ldrb r0, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02020248
+FUN_02020248: ; 0x02020248
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r5, #0x0
+ bne _02020256
+ bl ErrorHandling
+_02020256:
+ add r0, r5, #0x0
+ add r0, #0x29
+ strb r4, [r0, #0x0]
+ add r0, r5, #0x0
+ add r0, #0x28
+ ldrb r1, [r0, #0x0]
+ mov r0, #0x2
+ orr r1, r0
+ add r0, r5, #0x0
+ add r0, #0x28
+ strb r1, [r0, #0x0]
+ add r0, r5, #0x0
+ add r0, #0x28
+ ldrb r1, [r0, #0x0]
+ mov r0, #0x10
+ add r5, #0x28
+ bic r1, r0
+ strb r1, [r5, #0x0]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0202027C
+FUN_0202027C: ; 0x0202027C
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02020248
+ add r1, r4, #0x0
+ add r1, #0xf8
+ add r0, r4, #0x0
+ ldr r1, [r1, #0x0]
+ add r0, #0xd8
+ bl FUN_020205E8
+ add r1, r4, #0x0
+ add r1, #0x29
+ ldrb r1, [r1, #0x0]
+ add r4, #0x29
+ add r0, r1, r0
+ strb r0, [r4, #0x0]
+ pop {r4, pc}
+
+ thumb_func_start FUN_020202A0
+FUN_020202A0: ; 0x020202A0
+ add r0, #0x29
+ ldrb r0, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020202A8
+FUN_020202A8: ; 0x020202A8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r5, #0x0
+ bne _020202B6
+ bl ErrorHandling
+_020202B6:
+ add r0, r5, #0x0
+ add r0, #0x2a
+ strb r4, [r0, #0x0]
+ add r0, r5, #0x0
+ add r0, #0x28
+ ldrb r1, [r0, #0x0]
+ mov r0, #0x10
+ orr r1, r0
+ add r0, r5, #0x0
+ add r0, #0x28
+ strb r1, [r0, #0x0]
+ add r0, r5, #0x0
+ add r0, #0x28
+ ldrb r1, [r0, #0x0]
+ mov r0, #0x2
+ add r5, #0x28
+ bic r1, r0
+ strb r1, [r5, #0x0]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_020202DC
+FUN_020202DC: ; 0x020202DC
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_020202A8
+ add r1, r4, #0x0
+ add r1, #0xf8
+ add r0, r4, #0x0
+ ldr r1, [r1, #0x0]
+ add r0, #0xd8
+ bl FUN_020205E8
+ add r1, r4, #0x0
+ add r1, #0x2a
+ ldrb r1, [r1, #0x0]
+ add r4, #0x2a
+ add r0, r1, r0
+ strb r0, [r4, #0x0]
+ pop {r4, pc}
+
+ thumb_func_start FUN_02020300
+FUN_02020300: ; 0x02020300
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _0202030A
+ bl ErrorHandling
+_0202030A:
+ add r4, #0x2a
+ ldrb r0, [r4, #0x0]
+ pop {r4, pc}
+
+ thumb_func_start FUN_02020310
+FUN_02020310: ; 0x02020310
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r2, r5, #0x0
+ ldr r4, [r5, #0x3c]
+ add r2, #0xf4
+ strh r1, [r2, #0x0]
+ bl FUN_02020820
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ bl FUN_02020788
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202032C
+FUN_0202032C: ; 0x0202032C
+ add r0, #0xf4
+ ldrh r0, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02020334
+FUN_02020334: ; 0x02020334
+ push {r3-r4}
+ add r3, r0, #0x0
+ add r4, r1, #0x0
+ add r3, #0xb4
+ mov r2, #0x4
+_0202033E:
+ ldmia r4!, {r0-r1}
+ stmia r3!, {r0-r1}
+ sub r2, r2, #0x1
+ bne _0202033E
+ ldr r0, [r4, #0x0]
+ str r0, [r3, #0x0]
+ pop {r3-r4}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02020350
+FUN_02020350: ; 0x02020350
+ add r0, #0xb4
+ bx lr
+
+ thumb_func_start FUN_02020354
+FUN_02020354: ; 0x02020354
+ add r0, #0xd8
+ bx lr
+
+ thumb_func_start FUN_02020358
+FUN_02020358: ; 0x02020358
+ str r1, [r0, #0x2c]
+ cmp r1, #0x1
+ bne _0202036E
+ add r1, r0, #0x0
+ add r1, #0x28
+ ldrb r2, [r1, #0x0]
+ mov r1, #0x4
+ add r0, #0x28
+ orr r1, r2
+ strb r1, [r0, #0x0]
+ bx lr
+_0202036E:
+ add r1, r0, #0x0
+ add r1, #0x28
+ ldrb r2, [r1, #0x0]
+ mov r1, #0x4
+ eor r1, r2
+ add r0, #0x28
+ strb r1, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02020380
+FUN_02020380: ; 0x02020380
+ add r0, #0xf8
+ ldr r0, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02020388
+FUN_02020388: ; 0x02020388
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _02020392
+ bl ErrorHandling
+_02020392:
+ ldr r0, [r4, #0x50]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02020398
+FUN_02020398: ; 0x02020398
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ add r5, r1, #0x0
+ cmp r4, #0x0
+ bne _020203A6
+ bl ErrorHandling
+_020203A6:
+ str r5, [r4, #0x30]
+ cmp r5, #0x0
+ bne _020203BC
+ add r0, r4, #0x0
+ add r0, #0x28
+ ldrb r1, [r0, #0x0]
+ mov r0, #0x8
+ add r4, #0x28
+ eor r0, r1
+ strb r0, [r4, #0x0]
+ pop {r3-r5, pc}
+_020203BC:
+ add r0, r4, #0x0
+ add r0, #0x28
+ ldrb r1, [r0, #0x0]
+ mov r0, #0x8
+ orr r0, r1
+ add r4, #0x28
+ strb r0, [r4, #0x0]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_020203CC
+FUN_020203CC: ; 0x020203CC
+ push {r4, lr}
+ mov r1, #0x1
+ lsl r1, r1, #0xa
+ bl FUN_02016998
+ add r4, r0, #0x0
+ mov r0, #0xb
+ mov r2, #0x1
+ lsl r0, r0, #0x6
+ add r1, r4, #0x0
+ lsl r2, r2, #0xa
+ blx MIi_CpuClear16
+ mov r1, #0x1
+ add r0, r4, #0x0
+ lsl r1, r1, #0xa
+ blx DC_FlushRange
+ mov r2, #0x1
+ add r0, r4, #0x0
+ mov r1, #0x0
+ lsl r2, r2, #0xa
+ blx FUN_020C93BC
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r4, pc}
+
+ thumb_func_start FUN_02020404
+FUN_02020404: ; 0x02020404
+ push {r4, lr}
+ mov r1, #0x1
+ lsl r1, r1, #0xa
+ bl FUN_02016998
+ add r4, r0, #0x0
+ mov r0, #0xb
+ mov r2, #0x1
+ lsl r0, r0, #0x6
+ add r1, r4, #0x0
+ lsl r2, r2, #0xa
+ blx MIi_CpuClear16
+ mov r2, #0x1
+ add r0, r4, #0x0
+ mov r1, #0x0
+ lsl r2, r2, #0xa
+ blx FUN_020C9354
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02020434
+FUN_02020434: ; 0x02020434
+ push {r3-r7, lr}
+ add r5, r1, #0x0
+ str r0, [sp, #0x0]
+ add r4, r2, #0x0
+ add r0, r5, #0x0
+ add r7, r3, #0x0
+ bl FUN_020204DC
+ add r1, r4, #0x0
+ add r1, #0xec
+ str r0, [r1, #0x0]
+ add r3, r4, #0x0
+ ldr r6, [r5, #0x0]
+ add r3, #0xb4
+ mov r2, #0x4
+_02020452:
+ ldmia r6!, {r0-r1}
+ stmia r3!, {r0-r1}
+ sub r2, r2, #0x1
+ bne _02020452
+ ldr r0, [r6, #0x0]
+ add r2, r4, #0x0
+ str r0, [r3, #0x0]
+ ldr r3, [r5, #0x8]
+ add r2, #0xd8
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldr r0, [r3, #0x0]
+ add r1, r4, #0x0
+ str r0, [r2, #0x0]
+ ldr r0, [r5, #0xc]
+ bl FUN_020204F4
+ ldr r0, [r5, #0x10]
+ cmp r0, #0x0
+ beq _02020486
+ add r1, r4, #0x0
+ bl FUN_020204F8
+ b _02020494
+_02020486:
+ mov r1, #0x47
+ ldr r0, [sp, #0x0]
+ lsl r1, r1, #0x2
+ ldr r0, [r0, r1]
+ add r1, r4, #0x0
+ bl FUN_020204F8
+_02020494:
+ add r0, r4, #0x0
+ add r0, #0xec
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x2
+ bne _020204B8
+ ldr r0, [r5, #0x14]
+ add r1, r4, #0x0
+ bl FUN_020204FC
+ ldr r0, [r5, #0x18]
+ add r1, r4, #0x0
+ bl FUN_02020504
+ add r0, r4, #0x0
+ add r1, r7, #0x0
+ bl FUN_02020588
+ b _020204D0
+_020204B8:
+ cmp r0, #0x3
+ bne _020204C8
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r7, #0x0
+ bl FUN_0202052C
+ b _020204D0
+_020204C8:
+ add r0, r4, #0x0
+ add r1, r7, #0x0
+ bl FUN_0202050C
+_020204D0:
+ add r5, #0x20
+ ldrb r0, [r5, #0x0]
+ add r4, #0xf2
+ strb r0, [r4, #0x0]
+ mov r0, #0x1
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_020204DC
+FUN_020204DC: ; 0x020204DC
+ ldr r1, [r0, #0x14]
+ cmp r1, #0x0
+ beq _020204E6
+ mov r0, #0x2
+ bx lr
+_020204E6:
+ ldr r0, [r0, #0x1c]
+ cmp r0, #0x1
+ bne _020204F0
+ mov r0, #0x3
+ bx lr
+_020204F0:
+ mov r0, #0x1
+ bx lr
+
+ thumb_func_start FUN_020204F4
+FUN_020204F4: ; 0x020204F4
+ str r0, [r1, #0x40]
+ bx lr
+
+ thumb_func_start FUN_020204F8
+FUN_020204F8: ; 0x020204F8
+ str r0, [r1, #0x44]
+ bx lr
+
+ thumb_func_start FUN_020204FC
+FUN_020204FC: ; 0x020204FC
+ add r1, #0xa8
+ str r0, [r1, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02020504
+FUN_02020504: ; 0x02020504
+ add r1, #0xac
+ str r0, [r1, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0202050C
+FUN_0202050C: ; 0x0202050C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r5, #0x0
+ add r4, #0x40
+ ldr r0, [r4, #0x4]
+ mov r1, #0x0
+ blx FUN_020AFC04
+ add r4, #0x8
+ add r1, r0, #0x0
+ ldr r2, [r5, #0x40]
+ add r0, r4, #0x0
+ blx FUN_020B1F80
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202052C
+FUN_0202052C: ; 0x0202052C
+ push {r4-r7, lr}
+ sub sp, #0x1c
+ add r6, r1, #0x0
+ add r4, r6, #0x0
+ add r4, #0x40
+ add r5, r0, #0x0
+ blx FUN_020B43A4
+ str r0, [r4, #0x5c]
+ ldr r0, [r4, #0x4]
+ mov r1, #0x0
+ ldr r5, [r5, #0x4]
+ blx FUN_020AFC04
+ str r0, [sp, #0x18]
+ add r0, r6, #0x0
+ add r0, #0xb4
+ mov r1, #0x1
+ blx FUN_020B1A14
+ add r7, r0, #0x0
+ add r0, r6, #0x0
+ add r0, #0xb4
+ mov r1, #0x2
+ blx FUN_020B1A14
+ mov r1, #0x0
+ mvn r1, r1
+ str r1, [sp, #0x0]
+ str r7, [sp, #0x4]
+ str r0, [sp, #0x8]
+ ldr r0, [r5, #0x14]
+ ldr r1, [sp, #0x18]
+ str r0, [sp, #0xc]
+ mov r0, #0x0
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x10]
+ str r0, [sp, #0x14]
+ add r0, r4, #0x0
+ ldr r2, [r6, #0x40]
+ ldr r3, [r4, #0x5c]
+ add r0, #0x8
+ blx FUN_020B1EFC
+ add sp, #0x1c
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_02020588
+FUN_02020588: ; 0x02020588
+ push {r3-r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ add r4, r5, #0x0
+ add r4, #0x40
+ ldr r0, [r4, #0x6c]
+ add r7, r1, #0x0
+ mov r1, #0x0
+ blx FUN_020AFC04
+ str r0, [sp, #0xc]
+ ldr r0, [r4, #0x68]
+ blx FUN_020B23D8
+ add r6, r0, #0x0
+ mov r1, #0x28
+ add r0, r7, #0x0
+ mul r1, r6
+ bl FUN_02016998
+ mov r1, #0x54
+ str r0, [r4, #0x70]
+ add r0, r7, #0x0
+ mul r1, r6
+ bl FUN_02016998
+ str r0, [r4, #0x74]
+ ldr r0, [r4, #0x4]
+ add r3, r6, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [r5, #0x40]
+ str r0, [sp, #0x4]
+ ldr r0, [r4, #0x68]
+ str r0, [sp, #0x8]
+ add r0, r4, #0x0
+ ldr r1, [r4, #0x70]
+ ldr r2, [r4, #0x74]
+ add r0, #0x8
+ blx FUN_020B20C8
+ add r4, #0x8
+ ldr r1, [sp, #0xc]
+ add r0, r4, #0x0
+ blx FUN_020B242C
+ add sp, #0x10
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020205E8
+FUN_020205E8: ; 0x020205E8
+ push {r4, lr}
+ ldr r2, [r0, #0x4]
+ cmp r2, #0x0
+ beq _020205F6
+ mov r4, #0x2
+ lsl r4, r4, #0x8
+ b _02020602
+_020205F6:
+ ldr r2, [r0, #0x0]
+ cmp r2, #0x4
+ bne _02020600
+ mov r4, #0x0
+ b _02020602
+_02020600:
+ mov r4, #0x20
+_02020602:
+ cmp r4, #0x0
+ beq _02020612
+ blx FUN_020B19C4
+ add r1, r4, #0x0
+ blx _u32_div_f
+ pop {r4, pc}
+_02020612:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02020618
+FUN_02020618: ; 0x02020618
+ push {r3-r6, lr}
+ sub sp, #0xc
+ add r4, r1, #0x0
+ add r3, r4, #0x0
+ add r5, r0, #0x0
+ ldmia r3!, {r0-r1}
+ add r2, sp, #0x0
+ stmia r2!, {r0-r1}
+ ldr r0, [r3, #0x0]
+ add r1, r4, #0x0
+ str r0, [r2, #0x0]
+ mov r0, #0x45
+ lsl r0, r0, #0x2
+ add r2, r4, #0x0
+ ldr r0, [r5, r0]
+ add r1, #0xb4
+ add r2, #0xd8
+ blx FUN_020B2780
+ mov r0, #0x45
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ blx FUN_020B326C
+ blx FUN_020B2B58
+ add r1, r4, #0x0
+ mov r0, #0x45
+ add r1, #0x26
+ lsl r0, r0, #0x2
+ ldrb r1, [r1, #0x0]
+ ldr r0, [r5, r0]
+ blx FUN_020B502C
+ add r0, r4, #0x0
+ add r0, #0x26
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _02020680
+ add r0, r4, #0x0
+ add r0, #0x27
+ ldrb r2, [r0, #0x0]
+ mov r0, #0x45
+ lsl r0, r0, #0x2
+ mov r1, #0x1
+ ldr r0, [r5, r0]
+ mov r3, #0x2
+ and r1, r2
+ and r2, r3
+ blx FUN_020B4F38
+ b _0202068E
+_02020680:
+ mov r0, #0x45
+ lsl r0, r0, #0x2
+ mov r1, #0x0
+ ldr r0, [r5, r0]
+ add r2, r1, #0x0
+ blx FUN_020B4F38
+_0202068E:
+ ldr r0, [sp, #0x0]
+ ldr r1, [sp, #0x4]
+ ldr r2, [sp, #0x8]
+ blx FUN_020B2A08
+ add r0, r4, #0x0
+ add r0, #0x26
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _020206DC
+ ldr r0, [r4, #0xc]
+ ldr r1, [r4, #0x10]
+ ldr r2, [r4, #0x14]
+ blx FUN_020B2A08
+ ldr r0, [r4, #0x18]
+ ldr r1, [r4, #0x1c]
+ ldr r2, [r4, #0x20]
+ blx FUN_020B28B4
+ ldrh r0, [r4, #0x24]
+ ldr r2, _02020770 ; =0x020FFA38
+ asr r0, r0, #0x4
+ lsl r1, r0, #0x1
+ lsl r0, r1, #0x1
+ add r1, r1, #0x1
+ lsl r1, r1, #0x1
+ ldrsh r0, [r2, r0]
+ ldrsh r1, [r2, r1]
+ blx FUN_020B2794
+ ldr r0, [r4, #0xc]
+ ldr r1, [r4, #0x10]
+ ldr r2, [r4, #0x14]
+ neg r0, r0
+ neg r1, r1
+ neg r2, r2
+ blx FUN_020B2A08
+_020206DC:
+ add r0, r4, #0x0
+ add r0, #0x28
+ ldrb r3, [r0, #0x0]
+ mov r0, #0x45
+ lsl r0, r0, #0x2
+ ldr r2, [r5, r0]
+ add r1, r2, #0x0
+ add r1, #0x84
+ ldr r1, [r1, #0x0]
+ add r2, #0x84
+ orr r1, r3
+ str r1, [r2, #0x0]
+ add r1, r4, #0x0
+ add r1, #0x28
+ ldrb r1, [r1, #0x0]
+ mvn r6, r1
+ ldr r1, [r5, r0]
+ add r2, r1, #0x0
+ add r2, #0x84
+ ldr r3, [r2, #0x0]
+ mvn r2, r6
+ and r2, r3
+ add r1, #0x84
+ str r2, [r1, #0x0]
+ add r1, r4, #0x0
+ add r1, #0x29
+ ldrb r2, [r1, #0x0]
+ ldr r1, [r5, r0]
+ add r1, #0x8a
+ strh r2, [r1, #0x0]
+ add r1, r4, #0x0
+ add r1, #0x2a
+ ldrb r2, [r1, #0x0]
+ ldr r1, [r5, r0]
+ add r1, #0x94
+ strh r2, [r1, #0x0]
+ ldr r1, [r5, r0]
+ ldr r2, [r4, #0x2c]
+ add r1, #0x90
+ str r2, [r1, #0x0]
+ ldr r1, [r5, r0]
+ ldr r2, [r4, #0x30]
+ add r1, #0x8c
+ str r2, [r1, #0x0]
+ add r1, r4, #0x0
+ add r1, #0xf2
+ ldr r0, [r5, r0]
+ ldrb r1, [r1, #0x0]
+ add r0, #0x88
+ strh r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0xec
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x1
+ beq _0202074E
+ cmp r0, #0x3
+ bne _0202075A
+_0202074E:
+ add r4, #0x40
+ add r4, #0x8
+ add r0, r4, #0x0
+ blx FUN_020B317C
+ b _02020764
+_0202075A:
+ add r4, #0x40
+ add r4, #0x8
+ add r0, r4, #0x0
+ blx FUN_020B2D9C
+_02020764:
+ blx FUN_020B2B08
+ blx FUN_020B31F0
+ add sp, #0xc
+ pop {r3-r6, pc}
+ .balign 4
+_02020770: .word 0x020FFA38
+
+ thumb_func_start FUN_02020774
+FUN_02020774: ; 0x02020774
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02020778
+FUN_02020778: ; 0x02020778
+ ldr r3, _02020780 ; =FUN_020201E4
+ ldr r1, [r0, #0x38]
+ bx r3
+ nop
+_02020780: .word FUN_020201E4
+
+ thumb_func_start FUN_02020784
+FUN_02020784: ; 0x02020784
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02020788
+FUN_02020788: ; 0x02020788
+ push {r4-r7}
+ mov r2, #0x11
+ lsl r2, r2, #0x4
+ add r4, r0, #0x0
+ ldr r5, [r0, r2]
+ add r4, #0x10
+ cmp r5, r4
+ bne _020207AC
+ str r1, [r0, r2]
+ sub r3, r2, #0x4
+ str r1, [r0, r3]
+ add r0, r1, #0x0
+ add r0, #0xfc
+ str r4, [r0, #0x0]
+ sub r2, #0x10
+ str r4, [r1, r2]
+ pop {r4-r7}
+ bx lr
+_020207AC:
+ add r3, r1, #0x0
+ add r3, #0xf4
+ ldrh r6, [r3, #0x0]
+ sub r3, r2, #0x4
+ ldr r3, [r0, r3]
+ add r7, r3, #0x0
+ add r7, #0xf4
+ ldrh r7, [r7, #0x0]
+ cmp r7, r6
+ bhi _020207DE
+ add r5, r1, #0x0
+ add r5, #0xfc
+ str r3, [r5, #0x0]
+ sub r3, r2, #0x4
+ ldr r5, [r0, r3]
+ add r3, r2, #0x0
+ sub r3, #0x10
+ str r1, [r5, r3]
+ add r3, r2, #0x0
+ sub r3, #0x10
+ str r4, [r1, r3]
+ sub r2, r2, #0x4
+ str r1, [r0, r2]
+ pop {r4-r7}
+ bx lr
+_020207DE:
+ cmp r5, r4
+ beq _0202081A
+ add r0, r2, #0x0
+ sub r0, #0x10
+_020207E6:
+ add r2, r5, #0x0
+ add r2, #0xf4
+ ldrh r2, [r2, #0x0]
+ cmp r2, r6
+ bls _02020814
+ add r0, r5, #0x0
+ add r0, #0xfc
+ mov r2, #0x1
+ ldr r0, [r0, #0x0]
+ lsl r2, r2, #0x8
+ str r1, [r0, r2]
+ add r0, r5, #0x0
+ add r0, #0xfc
+ ldr r3, [r0, #0x0]
+ add r0, r1, #0x0
+ add r0, #0xfc
+ str r3, [r0, #0x0]
+ add r0, r5, #0x0
+ add r0, #0xfc
+ str r1, [r0, #0x0]
+ str r5, [r1, r2]
+ pop {r4-r7}
+ bx lr
+_02020814:
+ ldr r5, [r5, r0]
+ cmp r5, r4
+ bne _020207E6
+_0202081A:
+ pop {r4-r7}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02020820
+FUN_02020820: ; 0x02020820
+ mov r2, #0x1
+ add r1, r0, #0x0
+ lsl r2, r2, #0x8
+ add r1, #0xfc
+ ldr r3, [r0, r2]
+ ldr r1, [r1, #0x0]
+ str r3, [r1, r2]
+ add r1, r0, #0x0
+ add r1, #0xfc
+ ldr r0, [r0, r2]
+ ldr r1, [r1, #0x0]
+ add r0, #0xfc
+ str r1, [r0, #0x0]
+ bx lr
+
+ thumb_func_start FUN_0202083C
+FUN_0202083C: ; 0x0202083C
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x4]
+ mov r7, #0x0
+ cmp r0, #0x0
+ ble _0202086C
+ add r4, r7, #0x0
+ add r6, r7, #0x0
+_0202084C:
+ ldr r0, [r5, #0x0]
+ add r0, r0, r4
+ bl FUN_0201FE6C
+ ldr r0, [r5, #0x0]
+ add r7, r7, #0x1
+ add r1, r0, r4
+ ldr r0, [r5, #0x8]
+ str r1, [r0, r6]
+ mov r0, #0x41
+ lsl r0, r0, #0x2
+ add r4, r4, r0
+ ldr r0, [r5, #0x4]
+ add r6, r6, #0x4
+ cmp r7, r0
+ blt _0202084C
+_0202086C:
+ mov r0, #0x0
+ str r0, [r5, #0xc]
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02020874
+FUN_02020874: ; 0x02020874
+ ldr r3, [r0, #0xc]
+ ldr r1, [r0, #0x4]
+ cmp r3, r1
+ blt _02020880
+ mov r0, #0x0
+ bx lr
+_02020880:
+ ldr r2, [r0, #0x8]
+ lsl r1, r3, #0x2
+ ldr r2, [r2, r1]
+ add r1, r3, #0x1
+ str r1, [r0, #0xc]
+ add r0, r2, #0x0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02020890
+FUN_02020890: ; 0x02020890
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0xc]
+ add r4, r1, #0x0
+ cmp r0, #0x0
+ bgt _020208A0
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_020208A0:
+ add r0, r4, #0x0
+ bl FUN_0201FE6C
+ ldr r0, [r5, #0xc]
+ sub r0, r0, #0x1
+ str r0, [r5, #0xc]
+ ldr r1, [r5, #0x8]
+ lsl r0, r0, #0x2
+ str r4, [r1, r0]
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020208B8
+FUN_020208B8: ; 0x020208B8
+ push {r4-r7}
+ ldrb r3, [r0, #0x0]
+ mov r4, #0x0
+ cmp r3, #0xff
+ beq _020208FA
+_020208C2:
+ ldrb r7, [r0, #0x2]
+ ldrb r3, [r0, #0x3]
+ ldrb r5, [r0, #0x0]
+ sub r6, r1, r7
+ sub r3, r3, r7
+ cmp r6, r3
+ bhs _020208D4
+ mov r6, #0x1
+ b _020208D6
+_020208D4:
+ mov r6, #0x0
+_020208D6:
+ ldrb r7, [r0, #0x1]
+ sub r3, r2, r5
+ sub r5, r7, r5
+ cmp r3, r5
+ bhs _020208E4
+ mov r3, #0x1
+ b _020208E6
+_020208E4:
+ mov r3, #0x0
+_020208E6:
+ tst r3, r6
+ beq _020208F0
+ add r0, r4, #0x0
+ pop {r4-r7}
+ bx lr
+_020208F0:
+ add r0, r0, #0x4
+ ldrb r3, [r0, #0x0]
+ add r4, r4, #0x1
+ cmp r3, #0xff
+ bne _020208C2
+_020208FA:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4-r7}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02020904
+FUN_02020904: ; 0x02020904
+ push {r3-r4}
+ ldrb r3, [r0, #0x1]
+ sub r4, r3, r1
+ ldrb r1, [r0, #0x2]
+ sub r3, r1, r2
+ ldrb r2, [r0, #0x3]
+ add r1, r4, #0x0
+ add r0, r3, #0x0
+ mul r1, r4
+ mul r0, r3
+ add r1, r1, r0
+ add r0, r2, #0x0
+ mul r0, r2
+ cmp r1, r0
+ bhs _02020928
+ mov r0, #0x1
+ pop {r3-r4}
+ bx lr
+_02020928:
+ mov r0, #0x0
+ pop {r3-r4}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02020930
+FUN_02020930: ; 0x02020930
+ push {r4-r5}
+ ldrb r5, [r0, #0x2]
+ ldrb r3, [r0, #0x0]
+ sub r4, r1, r5
+ ldrb r1, [r0, #0x3]
+ sub r1, r1, r5
+ cmp r4, r1
+ bhs _02020944
+ mov r4, #0x1
+ b _02020946
+_02020944:
+ mov r4, #0x0
+_02020946:
+ ldrb r0, [r0, #0x1]
+ sub r1, r2, r3
+ sub r0, r0, r3
+ cmp r1, r0
+ bhs _02020954
+ mov r0, #0x1
+ b _02020956
+_02020954:
+ mov r0, #0x0
+_02020956:
+ tst r0, r4
+ beq _02020960
+ mov r0, #0x1
+ pop {r4-r5}
+ bx lr
+_02020960:
+ mov r0, #0x0
+ pop {r4-r5}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02020968
+FUN_02020968: ; 0x02020968
+ push {r3, lr}
+ ldr r2, _02020984 ; =0x021C48F8
+ ldrh r1, [r2, #0x22]
+ cmp r1, #0x0
+ beq _0202097C
+ ldrh r1, [r2, #0x1c]
+ ldrh r2, [r2, #0x1e]
+ bl FUN_020208B8
+ pop {r3, pc}
+_0202097C:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3, pc}
+ nop
+_02020984: .word 0x021C48F8
+
+ thumb_func_start FUN_02020988
+FUN_02020988: ; 0x02020988
+ push {r3, lr}
+ ldr r2, _020209A4 ; =0x021C48F8
+ ldrh r1, [r2, #0x20]
+ cmp r1, #0x0
+ beq _0202099C
+ ldrh r1, [r2, #0x1c]
+ ldrh r2, [r2, #0x1e]
+ bl FUN_020208B8
+ pop {r3, pc}
+_0202099C:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3, pc}
+ nop
+_020209A4: .word 0x021C48F8
+
+ thumb_func_start FUN_020209A8
+FUN_020209A8: ; 0x020209A8
+ push {r3-r7, lr}
+ ldr r7, _020209F0 ; =0x021C48F8
+ add r5, r0, #0x0
+ ldrh r0, [r7, #0x22]
+ cmp r0, #0x0
+ beq _020209EA
+ mov r6, #0x0
+ add r4, r5, #0x0
+_020209B8:
+ ldrb r0, [r5, #0x0]
+ cmp r0, #0xfe
+ bne _020209D0
+ ldrh r1, [r7, #0x1c]
+ ldrh r2, [r7, #0x1e]
+ add r0, r4, #0x0
+ bl FUN_02020904
+ cmp r0, #0x0
+ beq _020209E2
+ add r0, r6, #0x0
+ pop {r3-r7, pc}
+_020209D0:
+ ldrh r1, [r7, #0x1c]
+ ldrh r2, [r7, #0x1e]
+ add r0, r4, #0x0
+ bl FUN_02020930
+ cmp r0, #0x0
+ beq _020209E2
+ add r0, r6, #0x0
+ pop {r3-r7, pc}
+_020209E2:
+ add r5, r5, #0x4
+ add r4, r4, #0x4
+ add r6, r6, #0x1
+ b _020209B8
+_020209EA:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r7, pc}
+ .balign 4
+_020209F0: .word 0x021C48F8
+
+ thumb_func_start FUN_020209F4
+FUN_020209F4: ; 0x020209F4
+ push {r3-r7, lr}
+ ldr r7, _02020A3C ; =0x021C48F8
+ add r5, r0, #0x0
+ ldrh r0, [r7, #0x20]
+ cmp r0, #0x0
+ beq _02020A36
+ mov r6, #0x0
+ add r4, r5, #0x0
+_02020A04:
+ ldrb r0, [r5, #0x0]
+ cmp r0, #0xfe
+ bne _02020A1C
+ ldrh r1, [r7, #0x1c]
+ ldrh r2, [r7, #0x1e]
+ add r0, r4, #0x0
+ bl FUN_02020904
+ cmp r0, #0x0
+ beq _02020A2E
+ add r0, r6, #0x0
+ pop {r3-r7, pc}
+_02020A1C:
+ ldrh r1, [r7, #0x1c]
+ ldrh r2, [r7, #0x1e]
+ add r0, r4, #0x0
+ bl FUN_02020930
+ cmp r0, #0x0
+ beq _02020A2E
+ add r0, r6, #0x0
+ pop {r3-r7, pc}
+_02020A2E:
+ add r5, r5, #0x4
+ add r4, r4, #0x4
+ add r6, r6, #0x1
+ b _02020A04
+_02020A36:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r7, pc}
+ .balign 4
+_02020A3C: .word 0x021C48F8
+
+ thumb_func_start FUN_02020A40
+FUN_02020A40: ; 0x02020A40
+ push {r3, lr}
+ ldr r2, _02020A68 ; =0x021C48F8
+ ldrh r1, [r2, #0x22]
+ cmp r1, #0x0
+ beq _02020A62
+ ldrb r1, [r0, #0x0]
+ cmp r1, #0xfe
+ ldrh r1, [r2, #0x1c]
+ bne _02020A5A
+ ldrh r2, [r2, #0x1e]
+ bl FUN_02020904
+ pop {r3, pc}
+_02020A5A:
+ ldrh r2, [r2, #0x1e]
+ bl FUN_02020930
+ pop {r3, pc}
+_02020A62:
+ mov r0, #0x0
+ pop {r3, pc}
+ nop
+_02020A68: .word 0x021C48F8
+
+ thumb_func_start FUN_02020A6C
+FUN_02020A6C: ; 0x02020A6C
+ push {r3, lr}
+ ldr r2, _02020A94 ; =0x021C48F8
+ ldrh r1, [r2, #0x20]
+ cmp r1, #0x0
+ beq _02020A8E
+ ldrb r1, [r0, #0x0]
+ cmp r1, #0xfe
+ ldrh r1, [r2, #0x1c]
+ bne _02020A86
+ ldrh r2, [r2, #0x1e]
+ bl FUN_02020904
+ pop {r3, pc}
+_02020A86:
+ ldrh r2, [r2, #0x1e]
+ bl FUN_02020930
+ pop {r3, pc}
+_02020A8E:
+ mov r0, #0x0
+ pop {r3, pc}
+ nop
+_02020A94: .word 0x021C48F8
+
+ thumb_func_start FUN_02020A98
+FUN_02020A98: ; 0x02020A98
+ ldr r0, _02020AA0 ; =0x021C48F8
+ ldrh r0, [r0, #0x22]
+ bx lr
+ nop
+_02020AA0: .word 0x021C48F8
+
+ thumb_func_start FUN_02020AA4
+FUN_02020AA4: ; 0x02020AA4
+ ldr r0, _02020AAC ; =0x021C48F8
+ ldrh r0, [r0, #0x20]
+ bx lr
+ nop
+_02020AAC: .word 0x021C48F8
+
+ thumb_func_start FUN_02020AB0
+FUN_02020AB0: ; 0x02020AB0
+ ldr r2, _02020AC8 ; =0x021C48F8
+ ldrh r3, [r2, #0x22]
+ cmp r3, #0x0
+ beq _02020AC4
+ ldrh r3, [r2, #0x1c]
+ str r3, [r0, #0x0]
+ ldrh r0, [r2, #0x1e]
+ str r0, [r1, #0x0]
+ mov r0, #0x1
+ bx lr
+_02020AC4:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+_02020AC8: .word 0x021C48F8
+
+ thumb_func_start FUN_02020ACC
+FUN_02020ACC: ; 0x02020ACC
+ ldr r2, _02020AE4 ; =0x021C48F8
+ ldrh r3, [r2, #0x20]
+ cmp r3, #0x0
+ beq _02020AE0
+ ldrh r3, [r2, #0x1c]
+ str r3, [r0, #0x0]
+ ldrh r0, [r2, #0x1e]
+ str r0, [r1, #0x0]
+ mov r0, #0x1
+ bx lr
+_02020AE0:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+_02020AE4: .word 0x021C48F8
+
+ thumb_func_start FUN_02020AE8
+FUN_02020AE8: ; 0x02020AE8
+ push {r3, lr}
+ ldrb r3, [r0, #0x0]
+ cmp r3, #0xfe
+ bne _02020AF6
+ bl FUN_02020904
+ pop {r3, pc}
+_02020AF6:
+ bl FUN_02020930
+ pop {r3, pc}
+
+ thumb_func_start FUN_02020AFC
+FUN_02020AFC: ; 0x02020AFC
+ push {r3, lr}
+ ldr r0, _02020B24 ; =0x021C59B0
+ mov r2, #0x0
+ str r2, [r0, #0x4]
+ str r2, [r0, #0x8]
+ ldr r1, _02020B28 ; =0x0400010E
+ str r2, [r0, #0x0]
+ strh r2, [r1, #0x0]
+ sub r0, r1, #0x2
+ strh r2, [r0, #0x0]
+ mov r0, #0xc1
+ strh r0, [r1, #0x0]
+ ldr r1, _02020B2C ; =FUN_02020B30
+ mov r0, #0x40
+ blx OS_SetIrqFunction
+ mov r0, #0x40
+ blx OS_EnableIrqMask
+ pop {r3, pc}
+ .balign 4
+_02020B24: .word 0x021C59B0
+_02020B28: .word 0x0400010E
+_02020B2C: .word FUN_02020B30
+
+ thumb_func_start FUN_02020B30
+FUN_02020B30: ; 0x02020B30
+ ldr r0, _02020B68 ; =0x021C59B0
+ mov r3, #0x0
+ ldr r1, [r0, #0x4]
+ ldr r2, [r0, #0x8]
+ add r1, r1, #0x1
+ adc r2, r3
+ str r1, [r0, #0x4]
+ str r2, [r0, #0x8]
+ ldr r1, [r0, #0x0]
+ cmp r1, #0x0
+ beq _02020B54
+ ldr r2, _02020B6C ; =0x0400010E
+ strh r3, [r2, #0x0]
+ sub r1, r2, #0x2
+ strh r3, [r1, #0x0]
+ mov r1, #0xc1
+ strh r1, [r2, #0x0]
+ str r3, [r0, #0x0]
+_02020B54:
+ ldr r3, _02020B70 ; =0x027E0000
+ ldr r1, _02020B74 ; =0x00003FF8
+ mov r0, #0x40
+ ldr r2, [r3, r1]
+ orr r2, r0
+ str r2, [r3, r1]
+ ldr r3, _02020B78 ; =OS_SetIrqFunction
+ ldr r1, _02020B7C ; =FUN_02020B30
+ bx r3
+ nop
+_02020B68: .word 0x021C59B0
+_02020B6C: .word 0x0400010E
+_02020B70: .word 0x027E0000
+_02020B74: .word 0x00003FF8
+_02020B78: .word OS_SetIrqFunction
+_02020B7C: .word FUN_02020B30
+
+ thumb_func_start FUN_02020B80
+FUN_02020B80: ; 0x02020B80
+ push {r4-r5, lr}
+ sub sp, #0xc
+ blx OS_DisableInterrupts
+ ldr r1, _02020BE4 ; =0x0400010C
+ add r3, sp, #0x0
+ ldrh r1, [r1, #0x0]
+ ldr r2, _02020BE8 ; =0x0000FFFF
+ strh r1, [r3, #0x0]
+ ldr r1, _02020BEC ; =0x021C59B0
+ ldr r5, [r1, #0x4]
+ ldr r4, [r1, #0x8]
+ mov r1, #0x0
+ mvn r1, r1
+ and r1, r5
+ str r1, [sp, #0x4]
+ and r2, r4
+ ldr r1, _02020BF0 ; =0x04000214
+ str r2, [sp, #0x8]
+ ldr r2, [r1, #0x0]
+ mov r1, #0x40
+ tst r2, r1
+ beq _02020BC4
+ ldrh r2, [r3, #0x0]
+ lsl r1, r1, #0x9
+ tst r1, r2
+ bne _02020BC4
+ ldr r2, [sp, #0x4]
+ mov r1, #0x0
+ ldr r3, [sp, #0x8]
+ add r2, r2, #0x1
+ adc r3, r1
+ str r2, [sp, #0x4]
+ str r3, [sp, #0x8]
+_02020BC4:
+ blx OS_RestoreInterrupts
+ ldr r2, [sp, #0x4]
+ ldr r1, [sp, #0x8]
+ lsr r0, r2, #0x10
+ lsl r1, r1, #0x10
+ orr r1, r0
+ add r0, sp, #0x0
+ lsl r3, r2, #0x10
+ ldrh r2, [r0, #0x0]
+ asr r0, r2, #0x1f
+ orr r1, r0
+ add r0, r3, #0x0
+ orr r0, r2
+ add sp, #0xc
+ pop {r4-r5, pc}
+ .balign 4
+_02020BE4: .word 0x0400010C
+_02020BE8: .word 0x0000FFFF
+_02020BEC: .word 0x021C59B0
+_02020BF0: .word 0x04000214
+
+ thumb_func_start FUN_02020BF4
+FUN_02020BF4: ; 0x02020BF4
+ ldr r3, _02020BF8 ; =FUN_02020B80
+ bx r3
+ .balign 4
+_02020BF8: .word FUN_02020B80
+
+ thumb_func_start FUN_02020BFC
+FUN_02020BFC: ; 0x02020BFC
+ push {r3, lr}
+ lsr r2, r0, #0x1a
+ lsl r1, r1, #0x6
+ orr r1, r2
+ ldr r2, _02020C10 ; =0x000082EA
+ lsl r0, r0, #0x6
+ mov r3, #0x0
+ blx _ll_udiv
+ pop {r3, pc}
+ .balign 4
+_02020C10: .word 0x000082EA
+
+ thumb_func_start FUN_02020C14
+FUN_02020C14: ; 0x02020C14
+ push {r3, lr}
+ lsr r2, r0, #0x1a
+ lsl r1, r1, #0x6
+ orr r1, r2
+ ldr r2, _02020C28 ; =0x01FF6210
+ lsl r0, r0, #0x6
+ mov r3, #0x0
+ blx _ll_udiv
+ pop {r3, pc}
+ .balign 4
+_02020C28: .word 0x01FF6210
+
+ thumb_func_start ErrorHandling
+ErrorHandling: ; 0x02020C2C
+ push {r3, lr}
+ bl FUN_02031810
+ cmp r0, #0x0
+ beq _02020C42
+ blx OS_GetProcMode
+ cmp r0, #0x12
+ beq _02020C42
+ bl FUN_0208A9B8
+_02020C42:
+ pop {r3, pc}
+
+ thumb_func_start FUN_02020C44
+FUN_02020C44: ; 0x02020C44
+ push {r3-r7, lr}
+ add r4, r1, #0x0
+ add r7, r0, #0x0
+ add r0, r4, #0x0
+ mov r1, #0xc
+ bl FUN_02016998
+ add r6, r0, #0x0
+ bne _02020C5A
+ bl ErrorHandling
+_02020C5A:
+ add r0, r4, #0x0
+ lsl r1, r7, #0x3
+ bl FUN_02016998
+ str r0, [r6, #0x0]
+ cmp r0, #0x0
+ bne _02020C6C
+ bl ErrorHandling
+_02020C6C:
+ mov r4, #0x0
+ cmp r7, #0x0
+ ble _02020C84
+ add r5, r4, #0x0
+_02020C74:
+ ldr r0, [r6, #0x0]
+ add r0, r0, r5
+ bl FUN_02020E78
+ add r4, r4, #0x1
+ add r5, #0x8
+ cmp r4, r7
+ blt _02020C74
+_02020C84:
+ str r7, [r6, #0x4]
+ mov r0, #0x0
+ str r0, [r6, #0x8]
+ add r0, r6, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02020C90
+FUN_02020C90: ; 0x02020C90
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _02020C9A
+ bl ErrorHandling
+_02020C9A:
+ add r0, r4, #0x0
+ bl FUN_02020D9C
+ ldr r0, [r4, #0x0]
+ bl FUN_02016A18
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02020CB0
+FUN_02020CB0: ; 0x02020CB0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r5, #0x0
+ bne _02020CBE
+ bl ErrorHandling
+_02020CBE:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02020DD8
+ cmp r0, #0x0
+ bne _02020CCE
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_02020CCE:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02020CD4
+FUN_02020CD4: ; 0x02020CD4
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r7, r1, #0x0
+ add r6, r2, #0x0
+ cmp r5, #0x0
+ bne _02020CE4
+ bl ErrorHandling
+_02020CE4:
+ add r0, r5, #0x0
+ bl FUN_02020E48
+ add r4, r0, #0x0
+ bne _02020CF2
+ bl ErrorHandling
+_02020CF2:
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02020CB0
+ cmp r0, #0x1
+ beq _02020D02
+ bl ErrorHandling
+_02020D02:
+ str r7, [r4, #0x4]
+ str r6, [r4, #0x0]
+ ldr r0, [r5, #0x8]
+ add r0, r0, #0x1
+ str r0, [r5, #0x8]
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02020D10
+FUN_02020D10: ; 0x02020D10
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ add r7, r2, #0x0
+ str r3, [sp, #0x0]
+ cmp r5, #0x0
+ bne _02020D22
+ bl ErrorHandling
+_02020D22:
+ cmp r6, #0x0
+ bne _02020D2A
+ bl ErrorHandling
+_02020D2A:
+ add r0, r5, #0x0
+ bl FUN_02020E48
+ add r4, r0, #0x0
+ bne _02020D38
+ bl ErrorHandling
+_02020D38:
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ bl FUN_02020CB0
+ cmp r0, #0x1
+ beq _02020D48
+ bl ErrorHandling
+_02020D48:
+ ldr r0, [sp, #0x0]
+ add r1, r6, #0x0
+ bl FUN_020161A4
+ str r0, [r4, #0x4]
+ cmp r0, #0x0
+ bne _02020D5A
+ bl ErrorHandling
+_02020D5A:
+ str r7, [r4, #0x0]
+ ldr r0, [r5, #0x8]
+ add r0, r0, #0x1
+ str r0, [r5, #0x8]
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02020D68
+FUN_02020D68: ; 0x02020D68
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r5, #0x0
+ bne _02020D76
+ bl ErrorHandling
+_02020D76:
+ cmp r4, #0x0
+ bne _02020D7E
+ bl ErrorHandling
+_02020D7E:
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x0
+ beq _02020D8C
+ bl FUN_02016A18
+ mov r0, #0x0
+ str r0, [r4, #0x4]
+_02020D8C:
+ mov r0, #0x0
+ mvn r0, r0
+ str r0, [r4, #0x0]
+ ldr r0, [r5, #0x8]
+ sub r0, r0, #0x1
+ str r0, [r5, #0x8]
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02020D9C
+FUN_02020D9C: ; 0x02020D9C
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ bne _02020DA6
+ bl ErrorHandling
+_02020DA6:
+ ldr r0, [r5, #0x0]
+ cmp r0, #0x0
+ bne _02020DB0
+ bl ErrorHandling
+_02020DB0:
+ ldr r0, [r5, #0x4]
+ mov r6, #0x0
+ cmp r0, #0x0
+ ble _02020DD6
+ add r4, r6, #0x0
+ sub r7, r6, #0x1
+_02020DBC:
+ ldr r1, [r5, #0x0]
+ ldr r0, [r1, r4]
+ cmp r0, r7
+ beq _02020DCC
+ add r0, r5, #0x0
+ add r1, r1, r4
+ bl FUN_02020D68
+_02020DCC:
+ ldr r0, [r5, #0x4]
+ add r6, r6, #0x1
+ add r4, #0x8
+ cmp r6, r0
+ blt _02020DBC
+_02020DD6:
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02020DD8
+FUN_02020DD8: ; 0x02020DD8
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r5, #0x0
+ bne _02020DE6
+ bl ErrorHandling
+_02020DE6:
+ ldr r6, [r5, #0x4]
+ mov r1, #0x0
+ cmp r6, #0x0
+ ble _02020E06
+ ldr r3, [r5, #0x0]
+ add r2, r3, #0x0
+_02020DF2:
+ ldr r0, [r2, #0x0]
+ cmp r4, r0
+ bne _02020DFE
+ lsl r0, r1, #0x3
+ add r0, r3, r0
+ pop {r4-r6, pc}
+_02020DFE:
+ add r1, r1, #0x1
+ add r2, #0x8
+ cmp r1, r6
+ blt _02020DF2
+_02020E06:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02020E0C
+FUN_02020E0C: ; 0x02020E0C
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _02020E16
+ bl ErrorHandling
+_02020E16:
+ ldr r0, [r4, #0x4]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02020E1C
+FUN_02020E1C: ; 0x02020E1C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r5, #0x0
+ bne _02020E2A
+ bl ErrorHandling
+_02020E2A:
+ ldr r0, [r5, #0x4]
+ cmp r0, #0x0
+ beq _02020E34
+ bl FUN_02016A18
+_02020E34:
+ str r4, [r5, #0x4]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02020E38
+FUN_02020E38: ; 0x02020E38
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _02020E42
+ bl ErrorHandling
+_02020E42:
+ ldr r0, [r4, #0x0]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02020E48
+FUN_02020E48: ; 0x02020E48
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bne _02020E52
+ bl ErrorHandling
+_02020E52:
+ ldr r5, [r4, #0x4]
+ mov r2, #0x0
+ cmp r5, #0x0
+ ble _02020E74
+ ldr r4, [r4, #0x0]
+ sub r0, r2, #0x1
+ add r3, r4, #0x0
+_02020E60:
+ ldr r1, [r3, #0x0]
+ cmp r1, r0
+ bne _02020E6C
+ lsl r0, r2, #0x3
+ add r0, r4, r0
+ pop {r3-r5, pc}
+_02020E6C:
+ add r2, r2, #0x1
+ add r3, #0x8
+ cmp r2, r5
+ blt _02020E60
+_02020E74:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02020E78
+FUN_02020E78: ; 0x02020E78
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _02020E82
+ bl ErrorHandling
+_02020E82:
+ mov r0, #0x0
+ mvn r0, r0
+ str r0, [r4, #0x0]
+ mov r0, #0x0
+ str r0, [r4, #0x4]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02020E90
+FUN_02020E90: ; 0x02020E90
+ push {r3-r7, lr}
+ add r4, r1, #0x0
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x8
+ bl FUN_02016998
+ add r7, r0, #0x0
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ bl FUN_02020C44
+ mov r1, #0x18
+ str r0, [r7, #0x0]
+ add r0, r4, #0x0
+ mul r1, r6
+ bl FUN_02016998
+ mov r4, #0x0
+ str r0, [r7, #0x4]
+ cmp r6, #0x0
+ ble _02020ECE
+ add r5, r4, #0x0
+_02020EBE:
+ ldr r0, [r7, #0x4]
+ add r0, r0, r5
+ bl FUN_0202120C
+ add r4, r4, #0x1
+ add r5, #0x18
+ cmp r4, r6
+ blt _02020EBE
+_02020ECE:
+ add r0, r7, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02020ED4
+FUN_02020ED4: ; 0x02020ED4
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _02020EDE
+ bl ErrorHandling
+_02020EDE:
+ add r0, r4, #0x0
+ bl FUN_02021010
+ ldr r0, [r4, #0x0]
+ bl FUN_02020C90
+ ldr r0, [r4, #0x4]
+ bl FUN_02016A18
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r4, pc}
+
+ thumb_func_start FUN_02020EF8
+FUN_02020EF8: ; 0x02020EF8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r5, #0x0
+ bne _02020F06
+ bl ErrorHandling
+_02020F06:
+ ldr r0, [r5, #0x0]
+ add r1, r4, #0x0
+ bl FUN_02020CB0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02020F10
+FUN_02020F10: ; 0x02020F10
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ add r7, r3, #0x0
+ str r2, [sp, #0x0]
+ cmp r5, #0x0
+ bne _02020F22
+ bl ErrorHandling
+_02020F22:
+ add r0, r5, #0x0
+ bl FUN_020211DC
+ add r4, r0, #0x0
+ strh r7, [r4, #0x16]
+ ldrh r0, [r4, #0x16]
+ cmp r0, #0x1
+ bne _02020F40
+ ldr r1, [sp, #0x18]
+ add r0, r6, #0x0
+ bl FUN_02021310
+ add r1, r0, #0x0
+ str r6, [r4, #0x10]
+ b _02020F46
+_02020F40:
+ mov r0, #0x0
+ add r1, r6, #0x0
+ str r0, [r4, #0x10]
+_02020F46:
+ ldr r0, [r5, #0x0]
+ ldr r2, [sp, #0x0]
+ bl FUN_02020CD4
+ str r0, [r4, #0x0]
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02020F54
+FUN_02020F54: ; 0x02020F54
+ push {r3-r4, lr}
+ sub sp, #0x4
+ ldr r4, [sp, #0x10]
+ str r4, [sp, #0x0]
+ bl FUN_02020F10
+ add r4, r0, #0x0
+ bl FUN_02021174
+ add r0, r4, #0x0
+ add sp, #0x4
+ pop {r3-r4, pc}
+
+ thumb_func_start FUN_02020F6C
+FUN_02020F6C: ; 0x02020F6C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r5, #0x0
+ bne _02020F7A
+ bl ErrorHandling
+_02020F7A:
+ cmp r4, #0x0
+ bne _02020F82
+ bl ErrorHandling
+_02020F82:
+ ldrh r0, [r4, #0x16]
+ cmp r0, #0x1
+ bne _02020F98
+ ldrh r0, [r4, #0x14]
+ cmp r0, #0x0
+ bne _02020F98
+ ldr r0, [r4, #0x10]
+ bl FUN_02016A18
+ mov r0, #0x0
+ strh r0, [r4, #0x16]
+_02020F98:
+ ldr r1, [r4, #0x0]
+ cmp r1, #0x0
+ beq _02020FA4
+ ldr r0, [r5, #0x0]
+ bl FUN_02020D68
+_02020FA4:
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x0
+ beq _02020FB8
+ ldr r1, _02020FE8 ; =0x021064BC
+ ldr r1, [r1, #0x0]
+ blx r1
+ cmp r0, #0x0
+ beq _02020FB8
+ bl ErrorHandling
+_02020FB8:
+ ldr r0, [r4, #0x8]
+ cmp r0, #0x0
+ beq _02020FCC
+ ldr r1, _02020FE8 ; =0x021064BC
+ ldr r1, [r1, #0x0]
+ blx r1
+ cmp r0, #0x0
+ beq _02020FCC
+ bl ErrorHandling
+_02020FCC:
+ ldr r0, [r4, #0xc]
+ cmp r0, #0x0
+ beq _02020FE0
+ ldr r1, _02020FEC ; =0x021064C4
+ ldr r1, [r1, #0x0]
+ blx r1
+ cmp r0, #0x0
+ beq _02020FE0
+ bl ErrorHandling
+_02020FE0:
+ add r0, r4, #0x0
+ bl FUN_0202120C
+ pop {r3-r5, pc}
+ .balign 4
+_02020FE8: .word 0x021064BC
+_02020FEC: .word 0x021064C4
+
+ thumb_func_start FUN_02020FF0
+FUN_02020FF0: ; 0x02020FF0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r5, #0x0
+ bne _02020FFE
+ bl ErrorHandling
+_02020FFE:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02021050
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02020F6C
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02021010
+FUN_02021010: ; 0x02021010
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bne _0202101A
+ bl ErrorHandling
+_0202101A:
+ ldr r0, [r5, #0x4]
+ cmp r0, #0x0
+ bne _02021024
+ bl ErrorHandling
+_02021024:
+ ldr r0, [r5, #0x0]
+ mov r6, #0x0
+ ldr r0, [r0, #0x4]
+ cmp r0, #0x0
+ ble _0202104C
+ add r4, r6, #0x0
+_02021030:
+ ldr r1, [r5, #0x4]
+ ldr r0, [r1, r4]
+ cmp r0, #0x0
+ beq _02021040
+ add r0, r5, #0x0
+ add r1, r1, r4
+ bl FUN_02020F6C
+_02021040:
+ ldr r0, [r5, #0x0]
+ add r6, r6, #0x1
+ ldr r0, [r0, #0x4]
+ add r4, #0x18
+ cmp r6, r0
+ blt _02021030
+_0202104C:
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02021050
+FUN_02021050: ; 0x02021050
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ add r7, r1, #0x0
+ cmp r6, #0x0
+ bne _0202105E
+ bl ErrorHandling
+_0202105E:
+ ldr r0, [r6, #0x0]
+ mov r4, #0x0
+ ldr r0, [r0, #0x4]
+ cmp r0, #0x0
+ ble _02021092
+ add r5, r4, #0x0
+_0202106A:
+ ldr r1, [r6, #0x4]
+ ldr r0, [r1, r5]
+ cmp r0, #0x0
+ beq _02021086
+ add r0, r1, r5
+ bl FUN_02021098
+ cmp r0, r7
+ bne _02021086
+ mov r0, #0x18
+ ldr r1, [r6, #0x4]
+ mul r0, r4
+ add r0, r1, r0
+ pop {r3-r7, pc}
+_02021086:
+ ldr r0, [r6, #0x0]
+ add r4, r4, #0x1
+ ldr r0, [r0, #0x4]
+ add r5, #0x18
+ cmp r4, r0
+ blt _0202106A
+_02021092:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02021098
+FUN_02021098: ; 0x02021098
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _020210A2
+ bl ErrorHandling
+_020210A2:
+ ldr r0, [r4, #0x0]
+ bl FUN_02020E38
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020210AC
+FUN_020210AC: ; 0x020210AC
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _020210B6
+ bl ErrorHandling
+_020210B6:
+ add r0, r4, #0x0
+ bl FUN_02021220
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020210C0
+FUN_020210C0: ; 0x020210C0
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _020210CA
+ bl ErrorHandling
+_020210CA:
+ ldrh r0, [r4, #0x14]
+ cmp r0, #0x0
+ beq _020210D4
+ bl ErrorHandling
+_020210D4:
+ ldr r0, [r4, #0xc]
+ cmp r0, #0x0
+ bne _020210E0
+ bl ErrorHandling
+ pop {r4, pc}
+_020210E0:
+ add r0, r4, #0x0
+ bl FUN_02021230
+ add r1, r4, #0x0
+ bl FUN_020212B8
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020210F0
+FUN_020210F0: ; 0x020210F0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r5, #0x0
+ bne _020210FE
+ bl ErrorHandling
+_020210FE:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02021050
+ bl FUN_020210C0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0202110C
+FUN_0202110C: ; 0x0202110C
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _02021116
+ bl ErrorHandling
+_02021116:
+ ldrh r0, [r4, #0x16]
+ cmp r0, #0x0
+ bne _02021122
+ bl ErrorHandling
+ pop {r4, pc}
+_02021122:
+ ldrh r0, [r4, #0x14]
+ cmp r0, #0x0
+ beq _0202112E
+ bl ErrorHandling
+ pop {r4, pc}
+_0202112E:
+ add r0, r4, #0x0
+ bl FUN_02021230
+ bl FUN_020212F8
+ add r0, r4, #0x0
+ bl FUN_02021220
+ ldr r1, [r4, #0x4]
+ ldr r2, [r4, #0x8]
+ ldr r3, [r4, #0xc]
+ bl FUN_020212E4
+ ldr r0, [r4, #0x10]
+ bl FUN_02016A18
+ mov r0, #0x0
+ str r0, [r4, #0x10]
+ mov r0, #0x1
+ strh r0, [r4, #0x14]
+ pop {r4, pc}
+
+ thumb_func_start FUN_02021158
+FUN_02021158: ; 0x02021158
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r5, #0x0
+ bne _02021166
+ bl ErrorHandling
+_02021166:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02021050
+ bl FUN_0202110C
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02021174
+FUN_02021174: ; 0x02021174
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _0202117E
+ bl ErrorHandling
+_0202117E:
+ ldrh r0, [r4, #0x14]
+ cmp r0, #0x0
+ beq _02021188
+ bl ErrorHandling
+_02021188:
+ ldr r0, [r4, #0xc]
+ cmp r0, #0x0
+ beq _02021194
+ bl ErrorHandling
+ pop {r4, pc}
+_02021194:
+ add r0, r4, #0x0
+ bl FUN_02021230
+ add r2, r4, #0x0
+ add r1, r4, #0x4
+ add r4, #0xc
+ add r2, #0x8
+ add r3, r4, #0x0
+ bl FUN_02021248
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020211AC
+FUN_020211AC: ; 0x020211AC
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _020211B6
+ bl ErrorHandling
+_020211B6:
+ ldr r0, [r4, #0x4]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020211BC
+FUN_020211BC: ; 0x020211BC
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _020211C6
+ bl ErrorHandling
+_020211C6:
+ ldr r0, [r4, #0x8]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020211CC
+FUN_020211CC: ; 0x020211CC
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _020211D6
+ bl ErrorHandling
+_020211D6:
+ ldr r0, [r4, #0xc]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020211DC
+FUN_020211DC: ; 0x020211DC
+ push {r3-r4}
+ ldr r1, [r0, #0x0]
+ mov r2, #0x0
+ ldr r4, [r1, #0x4]
+ cmp r4, #0x0
+ ble _02021204
+ ldr r3, [r0, #0x4]
+_020211EA:
+ ldr r1, [r3, #0x0]
+ cmp r1, #0x0
+ bne _020211FC
+ ldr r1, [r0, #0x4]
+ mov r0, #0x18
+ mul r0, r2
+ add r0, r1, r0
+ pop {r3-r4}
+ bx lr
+_020211FC:
+ add r2, r2, #0x1
+ add r3, #0x18
+ cmp r2, r4
+ blt _020211EA
+_02021204:
+ mov r0, #0x0
+ pop {r3-r4}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0202120C
+FUN_0202120C: ; 0x0202120C
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+ str r1, [r0, #0x4]
+ str r1, [r0, #0x8]
+ str r1, [r0, #0xc]
+ strh r1, [r0, #0x14]
+ str r1, [r0, #0x10]
+ strh r1, [r0, #0x14]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02021220
+FUN_02021220: ; 0x02021220
+ push {r3, lr}
+ ldr r0, [r0, #0x0]
+ bl FUN_02020E0C
+ blx FUN_020BC0FC
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02021230
+FUN_02021230: ; 0x02021230
+ push {r3, lr}
+ ldrh r1, [r0, #0x16]
+ cmp r1, #0x0
+ bne _02021240
+ ldr r0, [r0, #0x0]
+ bl FUN_02020E0C
+ b _02021242
+_02021240:
+ ldr r0, [r0, #0x10]
+_02021242:
+ blx FUN_020BC0FC
+ pop {r3, pc}
+
+ thumb_func_start FUN_02021248
+FUN_02021248: ; 0x02021248
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ str r1, [sp, #0x0]
+ str r2, [sp, #0x4]
+ str r3, [sp, #0x8]
+ blx FUN_020B7E1C
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ blx FUN_020B7E10
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ blx FUN_020B7CE4
+ add r4, r0, #0x0
+ cmp r7, #0x0
+ beq _0202127E
+ ldr r3, _020212B0 ; =0x021064B8
+ mov r1, #0x0
+ ldr r3, [r3, #0x0]
+ add r0, r7, #0x0
+ add r2, r1, #0x0
+ blx r3
+ ldr r1, [sp, #0x0]
+ str r0, [r1, #0x0]
+_0202127E:
+ cmp r6, #0x0
+ beq _02021292
+ ldr r3, _020212B0 ; =0x021064B8
+ add r0, r6, #0x0
+ ldr r3, [r3, #0x0]
+ mov r1, #0x1
+ mov r2, #0x0
+ blx r3
+ ldr r1, [sp, #0x4]
+ str r0, [r1, #0x0]
+_02021292:
+ cmp r4, #0x0
+ beq _020212AC
+ ldr r3, _020212B4 ; =0x021064C0
+ mov r1, #0x2
+ ldrh r2, [r5, #0x20]
+ lsl r1, r1, #0xe
+ ldr r3, [r3, #0x0]
+ and r1, r2
+ add r0, r4, #0x0
+ mov r2, #0x0
+ blx r3
+ ldr r1, [sp, #0x8]
+ str r0, [r1, #0x0]
+_020212AC:
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+_020212B0: .word 0x021064B8
+_020212B4: .word 0x021064C0
+
+ thumb_func_start FUN_020212B8
+FUN_020212B8: ; 0x020212B8
+ push {r4, lr}
+ add r3, r1, #0x0
+ ldr r1, [r3, #0x4]
+ ldr r2, [r3, #0x8]
+ ldr r3, [r3, #0xc]
+ add r4, r0, #0x0
+ bl FUN_020212E4
+ ldr r1, [r4, #0x4]
+ add r0, r4, #0x0
+ blx DC_FlushRange
+ add r0, r4, #0x0
+ mov r1, #0x1
+ blx FUN_020B7D28
+ add r0, r4, #0x0
+ mov r1, #0x1
+ blx FUN_020B7C78
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020212E4
+FUN_020212E4: ; 0x020212E4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r3, #0x0
+ blx FUN_020B7DFC
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ blx FUN_020B7CDC
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_020212F8
+FUN_020212F8: ; 0x020212F8
+ push {r4, lr}
+ sub sp, #0x8
+ add r4, r0, #0x0
+ add r1, sp, #0x4
+ add r2, sp, #0x0
+ blx FUN_020B7CF0
+ add r0, r4, #0x0
+ blx FUN_020B7C58
+ add sp, #0x8
+ pop {r4, pc}
+
+ thumb_func_start FUN_02021310
+FUN_02021310: ; 0x02021310
+ push {r4-r6, lr}
+ add r6, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_02021334
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ bl FUN_02016998
+ add r1, r6, #0x0
+ add r2, r5, #0x0
+ add r4, r0, #0x0
+ blx FUN_020DF438
+ add r0, r4, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02021334
+FUN_02021334: ; 0x02021334
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ blx FUN_020BC0FC
+ add r4, r0, #0x0
+ bne _02021344
+ bl ErrorHandling
+_02021344:
+ ldr r0, [r4, #0x14]
+ add r0, r4, r0
+ sub r0, r0, r5
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0202134C
+FUN_0202134C: ; 0x0202134C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ blx FUN_020B33A0
+ add r5, #0x80
+ str r4, [r5, #0x0]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0202135C
+FUN_0202135C: ; 0x0202135C
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ add r7, r3, #0x0
+ blx FUN_020B3334
+ add r2, r5, #0x0
+ ldmia r4!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldmia r4!, {r0-r1}
+ stmia r2!, {r0-r1}
+ str r6, [r5, #0x28]
+ ldr r0, [sp, #0x18]
+ str r7, [r5, #0x2c]
+ str r0, [r5, #0x34]
+ ldr r0, [sp, #0x1c]
+ str r0, [r5, #0x14]
+ ldr r0, [sp, #0x20]
+ cmp r0, #0x0
+ beq _0202138C
+ add r1, r5, #0x0
+ blx FUN_020B3390
+_0202138C:
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02021390
+FUN_02021390: ; 0x02021390
+ add r3, r0, #0x0
+ add r2, r1, #0x0
+ ldmia r2!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldmia r2!, {r0-r1}
+ stmia r3!, {r0-r1}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020213A0
+FUN_020213A0: ; 0x020213A0
+ push {r3-r7, lr}
+ sub sp, #0x60
+ add r5, r1, #0x0
+ add r6, r2, #0x0
+ ldr r4, [r5, #0x10]
+ ldr r3, [r6, #0x0]
+ add r2, r0, #0x0
+ sub r3, r4, r3
+ ldrh r1, [r0, #0x2]
+ mov r0, #0x3f
+ str r3, [sp, #0x18]
+ and r0, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ lsl r0, r0, #0x1a
+ ldr r4, [r5, #0x14]
+ ldr r3, [r6, #0x4]
+ add r2, #0x8
+ sub r3, r4, r3
+ str r3, [sp, #0x14]
+ asr r3, r1, #0xb
+ mov r1, #0x1
+ and r1, r3
+ lsr r0, r0, #0x18
+ cmp r1, #0x1
+ bne _020213F4
+ mov r0, #0x6
+ ldrsh r0, [r2, r0]
+ lsl r4, r0, #0xc
+ mov r0, #0x2
+ ldrsh r0, [r2, r0]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x10]
+ mov r0, #0x4
+ ldrsh r0, [r2, r0]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0xc]
+ mov r0, #0x0
+ ldrsh r0, [r2, r0]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x8]
+ b _02021400
+_020213F4:
+ neg r1, r0
+ lsl r0, r0, #0xc
+ lsl r4, r1, #0xc
+ str r0, [sp, #0x10]
+ str r4, [sp, #0xc]
+ str r0, [sp, #0x8]
+_02021400:
+ ldr r0, [r5, #0xc]
+ str r0, [sp, #0x1c]
+ asr r0, r0, #0x1f
+ str r0, [sp, #0x20]
+ asr r0, r4, #0x1f
+ str r0, [sp, #0x24]
+ ldr r0, [r5, #0x4]
+ ldr r1, [sp, #0x24]
+ str r0, [sp, #0x28]
+ asr r0, r0, #0x1f
+ str r0, [sp, #0x2c]
+ ldr r2, [sp, #0x28]
+ ldr r3, [sp, #0x2c]
+ add r0, r4, #0x0
+ blx _ll_mul
+ add r7, r1, #0x0
+ str r0, [sp, #0x30]
+ ldr r1, [sp, #0x24]
+ ldr r2, [sp, #0x1c]
+ ldr r3, [sp, #0x20]
+ add r0, r4, #0x0
+ blx _ll_mul
+ add r2, r0, #0x0
+ add r3, r1, #0x0
+ mov r0, #0x2
+ ldr r1, [sp, #0x30]
+ mov r4, #0x0
+ lsl r0, r0, #0xa
+ add r0, r1, r0
+ adc r7, r4
+ lsl r1, r7, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r1
+ mov r1, #0x2
+ lsl r1, r1, #0xa
+ add r2, r2, r1
+ adc r3, r4
+ lsl r1, r3, #0x14
+ lsr r2, r2, #0xc
+ orr r2, r1
+ add r1, r0, r2
+ ldr r0, [sp, #0x14]
+ ldr r2, [sp, #0x28]
+ add r0, r0, r1
+ str r0, [sp, #0x5c]
+ ldr r0, [sp, #0x10]
+ ldr r3, [sp, #0x2c]
+ asr r0, r0, #0x1f
+ str r0, [sp, #0x34]
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x34]
+ blx _ll_mul
+ str r0, [sp, #0x38]
+ add r4, r1, #0x0
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x34]
+ ldr r2, [sp, #0x1c]
+ ldr r3, [sp, #0x20]
+ blx _ll_mul
+ mov r2, #0x2
+ ldr r3, [sp, #0x38]
+ lsl r2, r2, #0xa
+ add r2, r3, r2
+ ldr r3, _0202158C ; =0x00000000
+ adc r4, r3
+ lsl r3, r4, #0x14
+ lsr r2, r2, #0xc
+ orr r2, r3
+ mov r3, #0x2
+ lsl r3, r3, #0xa
+ add r3, r0, r3
+ ldr r0, _0202158C ; =0x00000000
+ adc r1, r0
+ lsl r0, r1, #0x14
+ lsr r1, r3, #0xc
+ orr r1, r0
+ ldr r0, [sp, #0x14]
+ add r1, r2, r1
+ add r4, r0, r1
+ ldr r0, [r5, #0x8]
+ str r0, [sp, #0x3c]
+ asr r0, r0, #0x1f
+ str r0, [sp, #0x40]
+ ldr r0, [sp, #0xc]
+ asr r0, r0, #0x1f
+ str r0, [sp, #0x44]
+ ldr r0, [r5, #0x0]
+ ldr r1, [sp, #0x44]
+ str r0, [sp, #0x48]
+ asr r0, r0, #0x1f
+ str r0, [sp, #0x4c]
+ ldr r0, [sp, #0xc]
+ ldr r2, [sp, #0x48]
+ ldr r3, [sp, #0x4c]
+ blx _ll_mul
+ str r0, [sp, #0x50]
+ add r5, r1, #0x0
+ ldr r0, [sp, #0xc]
+ ldr r1, [sp, #0x44]
+ ldr r2, [sp, #0x3c]
+ ldr r3, [sp, #0x40]
+ blx _ll_mul
+ mov r2, #0x2
+ ldr r3, [sp, #0x50]
+ lsl r2, r2, #0xa
+ add r2, r3, r2
+ ldr r3, _0202158C ; =0x00000000
+ adc r5, r3
+ lsl r3, r5, #0x14
+ lsr r2, r2, #0xc
+ orr r2, r3
+ mov r3, #0x2
+ lsl r3, r3, #0xa
+ add r3, r0, r3
+ ldr r0, _0202158C ; =0x00000000
+ adc r1, r0
+ lsl r0, r1, #0x14
+ lsr r1, r3, #0xc
+ orr r1, r0
+ ldr r0, [sp, #0x18]
+ add r1, r2, r1
+ add r5, r0, r1
+ ldr r0, [sp, #0x8]
+ asr r0, r0, #0x1f
+ str r0, [sp, #0x54]
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0x54]
+ ldr r2, [sp, #0x48]
+ ldr r3, [sp, #0x4c]
+ blx _ll_mul
+ str r0, [sp, #0x58]
+ str r1, [sp, #0x4]
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0x54]
+ ldr r2, [sp, #0x3c]
+ ldr r3, [sp, #0x40]
+ blx _ll_mul
+ mov r12, r0
+ add r2, r1, #0x0
+ mov r0, #0x2
+ ldr r1, [sp, #0x58]
+ lsl r0, r0, #0xa
+ add r3, r1, r0
+ ldr r1, [sp, #0x4]
+ ldr r0, _0202158C ; =0x00000000
+ adc r1, r0
+ str r1, [sp, #0x4]
+ lsl r0, r1, #0x14
+ lsr r1, r3, #0xc
+ orr r1, r0
+ mov r0, #0x2
+ lsl r0, r0, #0xa
+ mov r3, r12
+ add r0, r3, r0
+ ldr r3, _0202158C ; =0x00000000
+ adc r2, r3
+ lsl r2, r2, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r2
+ add r1, r1, r0
+ ldr r0, [sp, #0x18]
+ add r0, r0, r1
+ ldr r1, [sp, #0x5c]
+ cmp r4, r1
+ bge _02021560
+ add r1, r4, #0x0
+ ldr r4, [sp, #0x5c]
+ str r1, [sp, #0x5c]
+_02021560:
+ cmp r0, r5
+ bge _0202156A
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r5, r1, #0x0
+_0202156A:
+ cmp r4, #0x0
+ ble _02021586
+ ldr r2, [r6, #0xc]
+ ldr r1, [sp, #0x5c]
+ cmp r1, r2
+ bge _02021586
+ cmp r0, #0x0
+ ble _02021586
+ ldr r0, [r6, #0x8]
+ cmp r5, r0
+ bge _02021586
+ add sp, #0x60
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02021586:
+ mov r0, #0x0
+ add sp, #0x60
+ pop {r3-r7, pc}
+ .balign 4
+_0202158C: .word 0x00000000
+
+ thumb_func_start FUN_02021590
+FUN_02021590: ; 0x02021590
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ ldr r0, [sp, #0x20]
+ mov r1, #0x78
+ add r7, r2, #0x0
+ str r3, [sp, #0x4]
+ bl FUN_02016998
+ add r4, r0, #0x0
+ beq _020215C0
+ ldr r1, [sp, #0x20]
+ ldr r3, [sp, #0x4]
+ str r1, [sp, #0x0]
+ add r1, r5, #0x0
+ add r2, r6, #0x0
+ bl FUN_02021600
+ ldr r2, [sp, #0x20]
+ add r0, r4, #0x0
+ add r1, r7, #0x0
+ bl FUN_020216D4
+_020215C0:
+ add r0, r4, #0x0
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020215C8
+FUN_020215C8: ; 0x020215C8
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02021728
+ add r0, r4, #0x0
+ bl FUN_020216B8
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020215E0
+FUN_020215E0: ; 0x020215E0
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ ldr r1, [r5, #0x0]
+ add r6, r2, #0x0
+ cmp r1, r4
+ beq _020215FC
+ bl FUN_02021728
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_020216D4
+_020215FC:
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02021600
+FUN_02021600: ; 0x02021600
+ push {r3-r6, lr}
+ sub sp, #0x4
+ add r5, r0, #0x0
+ add r0, r1, #0x0
+ ldr r1, [sp, #0x18]
+ add r4, r2, #0x0
+ add r6, r3, #0x0
+ bl FUN_02006670
+ str r0, [r5, #0x54]
+ cmp r0, #0x0
+ beq _020216A6
+ add r1, r5, #0x0
+ add r1, #0x5c
+ str r1, [sp, #0x0]
+ add r1, r4, #0x0
+ mov r2, #0x0
+ mov r3, #0x10
+ bl FUN_02006814
+ str r6, [r5, #0x6c]
+ cmp r6, #0x0
+ beq _02021638
+ mov r0, #0x0
+ str r0, [r5, #0x74]
+ ldr r0, _020216AC ; =FUN_0202192C
+ str r0, [r5, #0x70]
+ b _02021660
+_02021638:
+ ldr r0, [r5, #0x60]
+ cmp r0, #0x0
+ bne _02021642
+ bl ErrorHandling
+_02021642:
+ ldr r0, [sp, #0x18]
+ ldr r1, [r5, #0x64]
+ bl FUN_02016998
+ str r0, [r5, #0x74]
+ ldr r0, _020216B0 ; =FUN_02021924
+ add r1, r4, #0x0
+ str r0, [r5, #0x70]
+ ldr r0, [r5, #0x74]
+ str r0, [sp, #0x0]
+ ldr r0, [r5, #0x54]
+ ldr r2, [r5, #0x60]
+ ldr r3, [r5, #0x64]
+ bl FUN_02006814
+_02021660:
+ add r0, r5, #0x0
+ add r0, #0x6a
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x2
+ bhi _02021674
+ add r0, r5, #0x0
+ add r0, #0x6b
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x2
+ bls _02021678
+_02021674:
+ bl ErrorHandling
+_02021678:
+ add r0, r5, #0x0
+ add r0, #0x6a
+ ldrb r0, [r0, #0x0]
+ ldr r2, _020216B4 ; =0x020EE668
+ sub r0, r0, #0x1
+ lsl r3, r0, #0x1
+ add r0, r5, #0x0
+ add r0, #0x6b
+ ldrb r0, [r0, #0x0]
+ sub r1, r0, #0x1
+ add r0, r2, r3
+ ldrb r0, [r1, r0]
+ str r0, [r5, #0x8]
+ add r0, r5, #0x0
+ add r0, #0x6b
+ ldrb r1, [r0, #0x0]
+ add r0, r5, #0x0
+ add r0, #0x6a
+ ldrb r0, [r0, #0x0]
+ lsl r0, r0, #0x4
+ mul r0, r1
+ str r0, [r5, #0xc]
+ str r4, [r5, #0x58]
+_020216A6:
+ add sp, #0x4
+ pop {r3-r6, pc}
+ nop
+_020216AC: .word FUN_0202192C
+_020216B0: .word FUN_02021924
+_020216B4: .word 0x020EE668
+
+ thumb_func_start FUN_020216B8
+FUN_020216B8: ; 0x020216B8
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x74]
+ cmp r0, #0x0
+ beq _020216C6
+ bl FUN_02016A18
+_020216C6:
+ ldr r0, [r4, #0x54]
+ cmp r0, #0x0
+ beq _020216D0
+ bl FUN_020066F4
+_020216D0:
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020216D4
+FUN_020216D4: ; 0x020216D4
+ push {r3, lr}
+ add r3, r1, #0x0
+ add r1, r2, #0x0
+ str r3, [r0, #0x0]
+ ldr r2, _020216E8 ; =0x020EE66C
+ lsl r3, r3, #0x2
+ ldr r2, [r2, r3]
+ blx r2
+ pop {r3, pc}
+ nop
+_020216E8: .word 0x020EE66C
+
+ thumb_func_start FUN_020216EC
+FUN_020216EC: ; 0x020216EC
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r2, [r5, #0xc]
+ ldr r0, [r5, #0x64]
+ add r4, r2, #0x0
+ mul r4, r0
+ add r0, r1, #0x0
+ add r1, r4, #0x0
+ bl FUN_02016998
+ str r0, [r5, #0x10]
+ ldr r0, _02021718 ; =FUN_02021774
+ add r3, r4, #0x0
+ str r0, [r5, #0x4]
+ ldr r0, [r5, #0x10]
+ str r0, [sp, #0x0]
+ ldr r0, [r5, #0x54]
+ ldr r1, [r5, #0x58]
+ ldr r2, [r5, #0x5c]
+ bl FUN_02006814
+ pop {r3-r5, pc}
+ .balign 4
+_02021718: .word FUN_02021774
+
+ thumb_func_start FUN_0202171C
+FUN_0202171C: ; 0x0202171C
+ ldr r1, _02021724 ; =FUN_0202181C
+ str r1, [r0, #0x4]
+ bx lr
+ nop
+_02021724: .word FUN_0202181C
+
+ thumb_func_start FUN_02021728
+FUN_02021728: ; 0x02021728
+ push {r3, lr}
+ ldr r1, [r0, #0x0]
+ lsl r2, r1, #0x2
+ ldr r1, _02021738 ; =0x020EE674
+ ldr r1, [r1, r2]
+ blx r1
+ pop {r3, pc}
+ nop
+_02021738: .word 0x020EE674
+
+ thumb_func_start FUN_0202173C
+FUN_0202173C: ; 0x0202173C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x10]
+ bl FUN_02016A18
+ mov r0, #0x0
+ str r0, [r4, #0x10]
+ pop {r4, pc}
+
+ thumb_func_start FUN_0202174C
+FUN_0202174C: ; 0x0202174C
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02021750
+FUN_02021750: ; 0x02021750
+ push {r3, lr}
+ ldr r3, [r0, #0x64]
+ cmp r1, r3
+ bhi _02021764
+ sub r1, r1, #0x1
+ lsl r1, r1, #0x10
+ ldr r3, [r0, #0x4]
+ lsr r1, r1, #0x10
+ blx r3
+ pop {r3, pc}
+_02021764:
+ add r0, r2, #0x0
+ mov r1, #0x0
+ add r0, #0x80
+ strb r1, [r0, #0x0]
+ add r2, #0x81
+ strb r1, [r2, #0x0]
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02021774
+FUN_02021774: ; 0x02021774
+ push {r3-r7, lr}
+ str r1, [sp, #0x0]
+ add r7, r0, #0x0
+ ldr r0, [sp, #0x0]
+ ldr r1, [r7, #0xc]
+ add r5, r0, #0x0
+ ldr r0, [r7, #0x8]
+ add r6, r2, #0x0
+ mul r5, r1
+ ldr r4, [r7, #0x10]
+ cmp r0, #0x3
+ bhi _02021802
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02021798: ; jump table (using 16-bit offset)
+ .short _020217A0 - _02021798 - 2; case 0
+ .short _020217AA - _02021798 - 2; case 1
+ .short _020217C0 - _02021798 - 2; case 2
+ .short _020217D6 - _02021798 - 2; case 3
+_020217A0:
+ add r0, r4, r5
+ add r1, r6, #0x0
+ bl FUN_0201C100
+ b _02021802
+_020217AA:
+ add r0, r4, r5
+ add r1, r6, #0x0
+ bl FUN_0201C100
+ add r0, r4, r5
+ add r1, r6, #0x0
+ add r0, #0x10
+ add r1, #0x40
+ bl FUN_0201C100
+ b _02021802
+_020217C0:
+ add r0, r4, r5
+ add r1, r6, #0x0
+ bl FUN_0201C100
+ add r0, r4, r5
+ add r1, r6, #0x0
+ add r0, #0x10
+ add r1, #0x20
+ bl FUN_0201C100
+ b _02021802
+_020217D6:
+ add r0, r4, r5
+ add r1, r6, #0x0
+ bl FUN_0201C100
+ add r0, r4, r5
+ add r1, r6, #0x0
+ add r0, #0x10
+ add r1, #0x20
+ bl FUN_0201C100
+ add r0, r4, r5
+ add r1, r6, #0x0
+ add r0, #0x20
+ add r1, #0x40
+ bl FUN_0201C100
+ add r0, r4, r5
+ add r1, r6, #0x0
+ add r0, #0x30
+ add r1, #0x60
+ bl FUN_0201C100
+_02021802:
+ ldr r1, [sp, #0x0]
+ ldr r2, [r7, #0x70]
+ add r0, r7, #0x0
+ blx r2
+ add r1, r6, #0x0
+ add r1, #0x80
+ add r7, #0x69
+ strb r0, [r1, #0x0]
+ ldrb r0, [r7, #0x0]
+ add r6, #0x81
+ strb r0, [r6, #0x0]
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202181C
+FUN_0202181C: ; 0x0202181C
+ push {r3-r7, lr}
+ add r4, r0, #0x0
+ ldr r6, [r4, #0xc]
+ add r0, #0x14
+ str r0, [sp, #0x0]
+ add r7, r1, #0x0
+ add r5, r2, #0x0
+ add r2, r7, #0x0
+ ldr r3, [r4, #0x5c]
+ mul r2, r6
+ add r2, r3, r2
+ ldr r0, [r4, #0x54]
+ ldr r1, [r4, #0x58]
+ add r3, r6, #0x0
+ bl FUN_02006814
+ ldr r0, [r4, #0x8]
+ cmp r0, #0x3
+ bhi _020218C0
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0202184E: ; jump table (using 16-bit offset)
+ .short _02021856 - _0202184E - 2; case 0
+ .short _02021862 - _0202184E - 2; case 1
+ .short _0202187A - _0202184E - 2; case 2
+ .short _02021892 - _0202184E - 2; case 3
+_02021856:
+ add r0, r4, #0x0
+ add r0, #0x14
+ add r1, r5, #0x0
+ bl FUN_0201C100
+ b _020218C0
+_02021862:
+ add r0, r4, #0x0
+ add r0, #0x14
+ add r1, r5, #0x0
+ bl FUN_0201C100
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ add r0, #0x24
+ add r1, #0x40
+ bl FUN_0201C100
+ b _020218C0
+_0202187A:
+ add r0, r4, #0x0
+ add r0, #0x14
+ add r1, r5, #0x0
+ bl FUN_0201C100
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ add r0, #0x24
+ add r1, #0x20
+ bl FUN_0201C100
+ b _020218C0
+_02021892:
+ add r0, r4, #0x0
+ add r0, #0x14
+ add r1, r5, #0x0
+ bl FUN_0201C100
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ add r0, #0x24
+ add r1, #0x20
+ bl FUN_0201C100
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ add r0, #0x34
+ add r1, #0x40
+ bl FUN_0201C100
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ add r0, #0x44
+ add r1, #0x60
+ bl FUN_0201C100
+_020218C0:
+ ldr r2, [r4, #0x70]
+ add r0, r4, #0x0
+ add r1, r7, #0x0
+ blx r2
+ add r1, r5, #0x0
+ add r1, #0x80
+ add r4, #0x69
+ strb r0, [r1, #0x0]
+ ldrb r0, [r4, #0x0]
+ add r5, #0x81
+ strb r0, [r5, #0x0]
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_020218D8
+FUN_020218D8: ; 0x020218D8
+ push {r3-r7, lr}
+ add r4, r1, #0x0
+ ldrh r1, [r4, #0x0]
+ add r5, r0, #0x0
+ ldr r0, _0202191C ; =0x0000FFFF
+ add r7, r2, #0x0
+ mov r6, #0x0
+ cmp r1, r0
+ beq _02021916
+_020218EA:
+ ldr r0, _02021920 ; =0x0000FFFE
+ cmp r1, r0
+ bne _02021900
+ add r0, r4, #0x0
+ bl FUN_0201B8B8
+ add r4, r0, #0x0
+ ldrh r1, [r4, #0x0]
+ ldr r0, _0202191C ; =0x0000FFFF
+ cmp r1, r0
+ beq _02021916
+_02021900:
+ ldr r2, [r5, #0x70]
+ add r0, r5, #0x0
+ sub r1, r1, #0x1
+ blx r2
+ add r4, r4, #0x2
+ add r0, r7, r0
+ add r6, r6, r0
+ ldrh r1, [r4, #0x0]
+ ldr r0, _0202191C ; =0x0000FFFF
+ cmp r1, r0
+ bne _020218EA
+_02021916:
+ sub r0, r6, r7
+ pop {r3-r7, pc}
+ nop
+_0202191C: .word 0x0000FFFF
+_02021920: .word 0x0000FFFE
+
+ thumb_func_start FUN_02021924
+FUN_02021924: ; 0x02021924
+ ldr r0, [r0, #0x74]
+ ldrb r0, [r0, r1]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0202192C
+FUN_0202192C: ; 0x0202192C
+ add r0, #0x68
+ ldrb r0, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02021934
+FUN_02021934: ; 0x02021934
+ push {r3-r7, lr}
+ add r5, r1, #0x0
+ ldrh r1, [r5, #0x0]
+ add r7, r0, #0x0
+ mov r4, #0x0
+ ldr r0, _02021994 ; =0x0000FFFF
+ add r6, r2, #0x0
+ str r4, [sp, #0x0]
+ cmp r1, r0
+ beq _02021986
+_02021948:
+ ldr r0, _02021998 ; =0x0000FFFE
+ cmp r1, r0
+ bne _02021958
+ add r0, r5, #0x0
+ bl FUN_0201B8B8
+ add r5, r0, #0x0
+ b _0202197E
+_02021958:
+ mov r0, #0xe
+ lsl r0, r0, #0xc
+ cmp r1, r0
+ bne _02021970
+ ldr r0, [sp, #0x0]
+ sub r1, r4, r6
+ cmp r0, r1
+ bhs _0202196A
+ str r1, [sp, #0x0]
+_0202196A:
+ mov r4, #0x0
+ add r5, r5, #0x2
+ b _0202197E
+_02021970:
+ ldr r2, [r7, #0x70]
+ add r0, r7, #0x0
+ sub r1, r1, #0x1
+ blx r2
+ add r0, r6, r0
+ add r4, r4, r0
+ add r5, r5, #0x2
+_0202197E:
+ ldrh r1, [r5, #0x0]
+ ldr r0, _02021994 ; =0x0000FFFF
+ cmp r1, r0
+ bne _02021948
+_02021986:
+ ldr r0, [sp, #0x0]
+ sub r1, r4, r6
+ cmp r0, r1
+ bhs _02021990
+ str r1, [sp, #0x0]
+_02021990:
+ ldr r0, [sp, #0x0]
+ pop {r3-r7, pc}
+ .balign 4
+_02021994: .word 0x0000FFFF
+_02021998: .word 0x0000FFFE
+
+ thumb_func_start FUN_0202199C
+FUN_0202199C: ; 0x0202199C
+ push {r3-r7, lr}
+ add r5, r1, #0x0
+ ldrh r1, [r5, #0x0]
+ add r6, r0, #0x0
+ ldr r0, _020219EC ; =0x0000FFFF
+ mov r4, #0x0
+ cmp r1, r0
+ beq _020219E8
+ sub r7, r0, #0x1
+_020219AE:
+ cmp r1, r7
+ bne _020219D4
+ add r0, r5, #0x0
+ bl FUN_0201B8E0
+ ldr r1, _020219F0 ; =0x00000203
+ cmp r0, r1
+ bne _020219CA
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_0201B914
+ add r4, r0, #0x0
+ sub r4, #0xc
+_020219CA:
+ add r0, r5, #0x0
+ bl FUN_0201B8B8
+ add r5, r0, #0x0
+ b _020219E0
+_020219D4:
+ ldr r2, [r6, #0x70]
+ add r0, r6, #0x0
+ sub r1, r1, #0x1
+ blx r2
+ add r4, r4, r0
+ add r5, r5, #0x2
+_020219E0:
+ ldrh r1, [r5, #0x0]
+ ldr r0, _020219EC ; =0x0000FFFF
+ cmp r1, r0
+ bne _020219AE
+_020219E8:
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+_020219EC: .word 0x0000FFFF
+_020219F0: .word 0x00000203
+
+ thumb_func_start FUN_020219F4
+FUN_020219F4: ; 0x020219F4
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, r1, #0x0
+ lsl r1, r4, #0x1
+ add r1, #0xa
+ bl FUN_02016998
+ cmp r0, #0x0
+ beq _02021A14
+ ldr r1, _02021A18 ; =0xB6F8D2EC
+ str r1, [r0, #0x4]
+ strh r4, [r0, #0x0]
+ mov r1, #0x0
+ strh r1, [r0, #0x2]
+ ldr r1, _02021A1C ; =0x0000FFFF
+ strh r1, [r0, #0x8]
+_02021A14:
+ pop {r4, pc}
+ nop
+_02021A18: .word 0xB6F8D2EC
+_02021A1C: .word 0x0000FFFF
+
+ thumb_func_start FUN_02021A20
+FUN_02021A20: ; 0x02021A20
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _02021A2A
+ bl ErrorHandling
+_02021A2A:
+ ldr r1, [r4, #0x4]
+ ldr r0, _02021A44 ; =0xB6F8D2EC
+ cmp r1, r0
+ beq _02021A36
+ bl ErrorHandling
+_02021A36:
+ ldr r0, _02021A48 ; =0xB6F8D2ED
+ str r0, [r4, #0x4]
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r4, pc}
+ nop
+_02021A44: .word 0xB6F8D2EC
+_02021A48: .word 0xB6F8D2ED
+
+ thumb_func_start FUN_02021A4C
+FUN_02021A4C: ; 0x02021A4C
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _02021A56
+ bl ErrorHandling
+_02021A56:
+ ldr r1, [r4, #0x4]
+ ldr r0, _02021A6C ; =0xB6F8D2EC
+ cmp r1, r0
+ beq _02021A62
+ bl ErrorHandling
+_02021A62:
+ mov r0, #0x0
+ strh r0, [r4, #0x2]
+ ldr r0, _02021A70 ; =0x0000FFFF
+ strh r0, [r4, #0x8]
+ pop {r4, pc}
+ .balign 4
+_02021A6C: .word 0xB6F8D2EC
+_02021A70: .word 0x0000FFFF
+
+ thumb_func_start FUN_02021A74
+FUN_02021A74: ; 0x02021A74
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r5, #0x0
+ bne _02021A82
+ bl ErrorHandling
+_02021A82:
+ ldr r1, [r5, #0x4]
+ ldr r0, _02021AC8 ; =0xB6F8D2EC
+ cmp r1, r0
+ beq _02021A8E
+ bl ErrorHandling
+_02021A8E:
+ cmp r4, #0x0
+ bne _02021A96
+ bl ErrorHandling
+_02021A96:
+ ldr r1, [r4, #0x4]
+ ldr r0, _02021AC8 ; =0xB6F8D2EC
+ cmp r1, r0
+ beq _02021AA2
+ bl ErrorHandling
+_02021AA2:
+ ldrh r2, [r4, #0x2]
+ ldrh r0, [r5, #0x0]
+ cmp r0, r2
+ bls _02021AC0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r2, #0x1
+ add r0, #0x8
+ add r1, #0x8
+ lsl r2, r2, #0x1
+ blx FUN_020DF438
+ ldrh r0, [r4, #0x2]
+ strh r0, [r5, #0x2]
+ pop {r3-r5, pc}
+_02021AC0:
+ bl ErrorHandling
+ pop {r3-r5, pc}
+ nop
+_02021AC8: .word 0xB6F8D2EC
+
+ thumb_func_start FUN_02021ACC
+FUN_02021ACC: ; 0x02021ACC
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r5, #0x0
+ bne _02021ADA
+ bl ErrorHandling
+_02021ADA:
+ ldr r1, [r5, #0x4]
+ ldr r0, _02021B00 ; =0xB6F8D2EC
+ cmp r1, r0
+ beq _02021AE6
+ bl ErrorHandling
+_02021AE6:
+ ldrh r0, [r5, #0x2]
+ add r1, r4, #0x0
+ add r0, r0, #0x1
+ bl FUN_020219F4
+ add r4, r0, #0x0
+ beq _02021AFA
+ add r1, r5, #0x0
+ bl FUN_02021A74
+_02021AFA:
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ nop
+_02021B00: .word 0xB6F8D2EC
+
+ thumb_func_start FUN_02021B04
+FUN_02021B04: ; 0x02021B04
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ ldr r0, [sp, #0x20]
+ add r6, r1, #0x0
+ add r7, r3, #0x0
+ str r2, [sp, #0x0]
+ str r0, [sp, #0x20]
+ cmp r5, #0x0
+ bne _02021B1C
+ bl ErrorHandling
+_02021B1C:
+ ldr r1, [r5, #0x4]
+ ldr r0, _02021C1C ; =0xB6F8D2EC
+ cmp r1, r0
+ beq _02021B28
+ bl ErrorHandling
+_02021B28:
+ cmp r6, #0x0
+ bge _02021B30
+ mov r4, #0x1
+ b _02021B32
+_02021B30:
+ mov r4, #0x0
+_02021B32:
+ ldr r0, [sp, #0x0]
+ ldrh r1, [r5, #0x0]
+ add r0, r0, r4
+ cmp r1, r0
+ bls _02021C14
+ ldr r0, [sp, #0x20]
+ cmp r0, #0x0
+ bne _02021B48
+ ldr r0, _02021C20 ; =0x020EE67C
+ str r0, [sp, #0x4]
+ b _02021B4C
+_02021B48:
+ ldr r0, _02021C24 ; =0x020EE690
+ str r0, [sp, #0x4]
+_02021B4C:
+ add r0, r5, #0x0
+ bl FUN_02021A4C
+ cmp r4, #0x0
+ beq _02021B74
+ mov r0, #0x0
+ mvn r0, r0
+ mul r6, r0
+ ldr r0, [sp, #0x20]
+ cmp r0, #0x0
+ bne _02021B66
+ mov r0, #0xf1
+ b _02021B68
+_02021B66:
+ ldr r0, _02021C28 ; =0x000001BE
+_02021B68:
+ ldrh r2, [r5, #0x2]
+ add r1, r2, #0x1
+ strh r1, [r5, #0x2]
+ lsl r1, r2, #0x1
+ add r1, r5, r1
+ strh r0, [r1, #0x8]
+_02021B74:
+ ldr r0, [sp, #0x0]
+ lsl r1, r0, #0x2
+ ldr r0, _02021C2C ; =0x020EE6A0
+ ldr r4, [r0, r1]
+ cmp r4, #0x0
+ beq _02021C06
+_02021B80:
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ blx _u32_div_f
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ add r0, r4, #0x0
+ mul r0, r1
+ sub r6, r6, r0
+ cmp r7, #0x2
+ bne _02021BB4
+ cmp r1, #0xa
+ bhs _02021BA2
+ ldr r0, [sp, #0x4]
+ lsl r1, r1, #0x1
+ ldrh r1, [r0, r1]
+ b _02021BA4
+_02021BA2:
+ mov r1, #0xe2
+_02021BA4:
+ ldrh r0, [r5, #0x2]
+ add r2, r0, #0x0
+ add r2, r2, #0x1
+ lsl r0, r0, #0x1
+ strh r2, [r5, #0x2]
+ add r0, r5, r0
+ strh r1, [r0, #0x8]
+ b _02021BFA
+_02021BB4:
+ cmp r1, #0x0
+ bne _02021BBC
+ cmp r4, #0x1
+ bne _02021BDC
+_02021BBC:
+ mov r7, #0x2
+ cmp r1, #0xa
+ bhs _02021BCA
+ ldr r0, [sp, #0x4]
+ lsl r1, r1, #0x1
+ ldrh r1, [r0, r1]
+ b _02021BCC
+_02021BCA:
+ mov r1, #0xe2
+_02021BCC:
+ ldrh r0, [r5, #0x2]
+ add r2, r0, #0x0
+ add r2, r2, #0x1
+ lsl r0, r0, #0x1
+ strh r2, [r5, #0x2]
+ add r0, r5, r0
+ strh r1, [r0, #0x8]
+ b _02021BFA
+_02021BDC:
+ cmp r7, #0x1
+ bne _02021BFA
+ ldr r0, [sp, #0x20]
+ cmp r0, #0x0
+ bne _02021BEA
+ mov r1, #0x1
+ b _02021BEC
+_02021BEA:
+ ldr r1, _02021C30 ; =0x000001E2
+_02021BEC:
+ ldrh r0, [r5, #0x2]
+ add r2, r0, #0x0
+ add r2, r2, #0x1
+ lsl r0, r0, #0x1
+ strh r2, [r5, #0x2]
+ add r0, r5, r0
+ strh r1, [r0, #0x8]
+_02021BFA:
+ add r0, r4, #0x0
+ mov r1, #0xa
+ blx _u32_div_f
+ add r4, r0, #0x0
+ bne _02021B80
+_02021C06:
+ ldrh r0, [r5, #0x2]
+ ldr r1, _02021C34 ; =0x0000FFFF
+ add sp, #0x8
+ lsl r0, r0, #0x1
+ add r0, r5, r0
+ strh r1, [r0, #0x8]
+ pop {r3-r7, pc}
+_02021C14:
+ bl ErrorHandling
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+_02021C1C: .word 0xB6F8D2EC
+_02021C20: .word 0x020EE67C
+_02021C24: .word 0x020EE690
+_02021C28: .word 0x000001BE
+_02021C2C: .word 0x020EE6A0
+_02021C30: .word 0x000001E2
+_02021C34: .word 0x0000FFFF
+
+ thumb_func_start FUN_02021C38
+FUN_02021C38: ; 0x02021C38
+ push {r3-r7, lr}
+ sub sp, #0x10
+ str r1, [sp, #0x0]
+ mov r1, #0x0
+ str r1, [sp, #0x8]
+ str r1, [sp, #0xc]
+ add r5, r1, #0x0
+ ldrh r1, [r0, #0x2]
+ mov r7, #0x1
+ cmp r1, #0x12
+ bls _02021C56
+ ldr r0, [sp, #0x8]
+ add sp, #0x10
+ add r1, r0, #0x0
+ pop {r3-r7, pc}
+_02021C56:
+ sub r1, r1, #0x1
+ str r1, [sp, #0x4]
+ bmi _02021CCC
+ lsl r1, r1, #0x1
+ add r4, r0, r1
+_02021C60:
+ ldrh r6, [r4, #0x8]
+ mov r3, #0xa
+ mov r0, #0x0
+ add r1, r6, #0x0
+ sub r1, #0xa2
+ asr r2, r1, #0x1f
+ sub r3, r1, r3
+ mov r12, r2
+ mov r3, r12
+ sbc r3, r0
+ blo _02021C98
+ ldr r0, _02021CDC ; =0x00000121
+ mov r3, #0xa
+ sub r1, r6, r0
+ asr r2, r1, #0x1f
+ mov r0, #0x0
+ sub r3, r1, r3
+ mov r12, r2
+ mov r3, r12
+ sbc r3, r0
+ blo _02021C98
+ ldr r0, [sp, #0x0]
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0xc]
+ add sp, #0x10
+ pop {r3-r7, pc}
+_02021C98:
+ add r0, r1, #0x0
+ add r1, r2, #0x0
+ add r2, r7, #0x0
+ add r3, r5, #0x0
+ blx _ll_mul
+ add r2, r1, #0x0
+ ldr r1, [sp, #0x8]
+ add r0, r1, r0
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0xc]
+ adc r0, r2
+ str r0, [sp, #0xc]
+ add r0, r7, #0x0
+ add r1, r5, #0x0
+ mov r2, #0xa
+ mov r3, #0x0
+ blx _ll_mul
+ add r7, r0, #0x0
+ ldr r0, [sp, #0x4]
+ add r5, r1, #0x0
+ sub r4, r4, #0x2
+ sub r0, r0, #0x1
+ str r0, [sp, #0x4]
+ bpl _02021C60
+_02021CCC:
+ ldr r0, [sp, #0x0]
+ mov r1, #0x1
+ str r1, [r0, #0x0]
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0xc]
+ add sp, #0x10
+ pop {r3-r7, pc}
+ nop
+_02021CDC: .word 0x00000121
+
+ thumb_func_start FUN_02021CE0
+FUN_02021CE0: ; 0x02021CE0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r5, #0x0
+ bne _02021CEE
+ bl ErrorHandling
+_02021CEE:
+ ldr r1, [r5, #0x4]
+ ldr r0, _02021D34 ; =0xB6F8D2EC
+ cmp r1, r0
+ beq _02021CFA
+ bl ErrorHandling
+_02021CFA:
+ cmp r4, #0x0
+ bne _02021D02
+ bl ErrorHandling
+_02021D02:
+ ldr r1, [r4, #0x4]
+ ldr r0, _02021D34 ; =0xB6F8D2EC
+ cmp r1, r0
+ beq _02021D0E
+ bl ErrorHandling
+_02021D0E:
+ ldrh r1, [r5, #0x8]
+ ldrh r0, [r4, #0x8]
+ cmp r1, r0
+ bne _02021D2E
+ ldr r0, _02021D38 ; =0x0000FFFF
+_02021D18:
+ ldrh r1, [r5, #0x8]
+ cmp r1, r0
+ bne _02021D22
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_02021D22:
+ add r5, r5, #0x2
+ add r4, r4, #0x2
+ ldrh r2, [r5, #0x8]
+ ldrh r1, [r4, #0x8]
+ cmp r2, r1
+ beq _02021D18
+_02021D2E:
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ nop
+_02021D34: .word 0xB6F8D2EC
+_02021D38: .word 0x0000FFFF
+
+ thumb_func_start FUN_02021D3C
+FUN_02021D3C: ; 0x02021D3C
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _02021D46
+ bl ErrorHandling
+_02021D46:
+ ldr r1, [r4, #0x4]
+ ldr r0, _02021D58 ; =0xB6F8D2EC
+ cmp r1, r0
+ beq _02021D52
+ bl ErrorHandling
+_02021D52:
+ ldrh r0, [r4, #0x2]
+ pop {r4, pc}
+ nop
+_02021D58: .word 0xB6F8D2EC
+
+ thumb_func_start FUN_02021D5C
+FUN_02021D5C: ; 0x02021D5C
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bne _02021D66
+ bl ErrorHandling
+_02021D66:
+ ldr r1, [r4, #0x4]
+ ldr r0, _02021D98 ; =0xB6F8D2EC
+ cmp r1, r0
+ beq _02021D72
+ bl ErrorHandling
+_02021D72:
+ ldrh r1, [r4, #0x2]
+ mov r3, #0x0
+ mov r0, #0x1
+ cmp r1, #0x0
+ ble _02021D94
+ mov r1, #0xe
+ add r5, r4, #0x0
+ lsl r1, r1, #0xc
+_02021D82:
+ ldrh r2, [r5, #0x8]
+ cmp r2, r1
+ bne _02021D8A
+ add r0, r0, #0x1
+_02021D8A:
+ ldrh r2, [r4, #0x2]
+ add r3, r3, #0x1
+ add r5, r5, #0x2
+ cmp r3, r2
+ blt _02021D82
+_02021D94:
+ pop {r3-r5, pc}
+ nop
+_02021D98: .word 0xB6F8D2EC
+
+ thumb_func_start FUN_02021D9C
+FUN_02021D9C: ; 0x02021D9C
+ push {r3-r7, lr}
+ add r5, r1, #0x0
+ add r7, r0, #0x0
+ add r6, r2, #0x0
+ cmp r5, #0x0
+ bne _02021DAC
+ bl ErrorHandling
+_02021DAC:
+ ldr r1, [r5, #0x4]
+ ldr r0, _02021E24 ; =0xB6F8D2EC
+ cmp r1, r0
+ beq _02021DB8
+ bl ErrorHandling
+_02021DB8:
+ cmp r7, #0x0
+ bne _02021DC0
+ bl ErrorHandling
+_02021DC0:
+ ldr r1, [r7, #0x4]
+ ldr r0, _02021E24 ; =0xB6F8D2EC
+ cmp r1, r0
+ beq _02021DCC
+ bl ErrorHandling
+_02021DCC:
+ mov r4, #0x0
+ cmp r6, #0x0
+ beq _02021DF6
+ ldrh r0, [r5, #0x2]
+ cmp r0, #0x0
+ ble _02021DF6
+ mov r1, #0xe
+ add r0, r5, #0x0
+ lsl r1, r1, #0xc
+_02021DDE:
+ ldrh r2, [r0, #0x8]
+ cmp r2, r1
+ bne _02021DEC
+ sub r6, r6, #0x1
+ bne _02021DEC
+ add r4, r4, #0x1
+ b _02021DF6
+_02021DEC:
+ ldrh r2, [r5, #0x2]
+ add r4, r4, #0x1
+ add r0, r0, #0x2
+ cmp r4, r2
+ blt _02021DDE
+_02021DF6:
+ add r0, r7, #0x0
+ bl FUN_02021A4C
+ ldrh r0, [r5, #0x2]
+ cmp r4, r0
+ bge _02021E20
+ lsl r0, r4, #0x1
+ add r6, r5, r0
+_02021E06:
+ ldrh r1, [r6, #0x8]
+ mov r0, #0xe
+ lsl r0, r0, #0xc
+ cmp r1, r0
+ beq _02021E20
+ add r0, r7, #0x0
+ bl FUN_02021FB0
+ ldrh r0, [r5, #0x2]
+ add r4, r4, #0x1
+ add r6, r6, #0x2
+ cmp r4, r0
+ blt _02021E06
+_02021E20:
+ pop {r3-r7, pc}
+ nop
+_02021E24: .word 0xB6F8D2EC
+
+ thumb_func_start FUN_02021E28
+FUN_02021E28: ; 0x02021E28
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r5, #0x0
+ bne _02021E36
+ bl ErrorHandling
+_02021E36:
+ ldr r1, [r5, #0x4]
+ ldr r0, _02021E84 ; =0xB6F8D2EC
+ cmp r1, r0
+ beq _02021E42
+ bl ErrorHandling
+_02021E42:
+ mov r0, #0x0
+ strh r0, [r5, #0x2]
+ ldrh r1, [r4, #0x0]
+ ldr r0, _02021E88 ; =0x0000FFFF
+ cmp r1, r0
+ beq _02021E76
+ add r1, r0, #0x0
+_02021E50:
+ ldrh r2, [r5, #0x0]
+ ldrh r0, [r5, #0x2]
+ sub r2, r2, #0x1
+ cmp r0, r2
+ blt _02021E60
+ bl ErrorHandling
+ b _02021E76
+_02021E60:
+ add r2, r0, #0x0
+ add r2, r2, #0x1
+ strh r2, [r5, #0x2]
+ ldrh r2, [r4, #0x0]
+ lsl r0, r0, #0x1
+ add r0, r5, r0
+ add r4, r4, #0x2
+ strh r2, [r0, #0x8]
+ ldrh r0, [r4, #0x0]
+ cmp r0, r1
+ bne _02021E50
+_02021E76:
+ ldrh r0, [r5, #0x2]
+ ldr r1, _02021E88 ; =0x0000FFFF
+ lsl r0, r0, #0x1
+ add r0, r5, r0
+ strh r1, [r0, #0x8]
+ pop {r3-r5, pc}
+ nop
+_02021E84: .word 0xB6F8D2EC
+_02021E88: .word 0x0000FFFF
+
+ thumb_func_start FUN_02021E8C
+FUN_02021E8C: ; 0x02021E8C
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r7, r1, #0x0
+ add r4, r2, #0x0
+ cmp r5, #0x0
+ bne _02021E9C
+ bl ErrorHandling
+_02021E9C:
+ ldr r1, [r5, #0x4]
+ ldr r0, _02021EE8 ; =0xB6F8D2EC
+ cmp r1, r0
+ beq _02021EA8
+ bl ErrorHandling
+_02021EA8:
+ ldrh r0, [r5, #0x0]
+ cmp r4, r0
+ bhi _02021EE2
+ lsl r6, r4, #0x1
+ add r0, r5, #0x0
+ add r0, #0x8
+ add r1, r7, #0x0
+ add r2, r6, #0x0
+ blx FUN_020DF438
+ mov r2, #0x0
+ cmp r4, #0x0
+ bls _02021ED4
+ ldr r0, _02021EEC ; =0x0000FFFF
+ add r3, r5, #0x0
+_02021EC6:
+ ldrh r1, [r3, #0x8]
+ cmp r1, r0
+ beq _02021ED4
+ add r2, r2, #0x1
+ add r3, r3, #0x2
+ cmp r2, r4
+ blo _02021EC6
+_02021ED4:
+ strh r2, [r5, #0x2]
+ cmp r2, r4
+ bne _02021EE6
+ ldr r1, _02021EEC ; =0x0000FFFF
+ add r0, r5, r6
+ strh r1, [r0, #0x6]
+ pop {r3-r7, pc}
+_02021EE2:
+ bl ErrorHandling
+_02021EE6:
+ pop {r3-r7, pc}
+ .balign 4
+_02021EE8: .word 0xB6F8D2EC
+_02021EEC: .word 0x0000FFFF
+
+ thumb_func_start FUN_02021EF0
+FUN_02021EF0: ; 0x02021EF0
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ add r4, r2, #0x0
+ cmp r5, #0x0
+ bne _02021F00
+ bl ErrorHandling
+_02021F00:
+ ldr r1, [r5, #0x4]
+ ldr r0, _02021F28 ; =0xB6F8D2EC
+ cmp r1, r0
+ beq _02021F0C
+ bl ErrorHandling
+_02021F0C:
+ ldrh r0, [r5, #0x2]
+ add r2, r0, #0x1
+ cmp r2, r4
+ bhi _02021F22
+ add r5, #0x8
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ lsl r2, r2, #0x1
+ blx FUN_020DF438
+ pop {r4-r6, pc}
+_02021F22:
+ bl ErrorHandling
+ pop {r4-r6, pc}
+ .balign 4
+_02021F28: .word 0xB6F8D2EC
+
+ thumb_func_start FUN_02021F2C
+FUN_02021F2C: ; 0x02021F2C
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _02021F36
+ bl ErrorHandling
+_02021F36:
+ ldr r1, [r4, #0x4]
+ ldr r0, _02021F48 ; =0xB6F8D2EC
+ cmp r1, r0
+ beq _02021F42
+ bl ErrorHandling
+_02021F42:
+ add r4, #0x8
+ add r0, r4, #0x0
+ pop {r4, pc}
+ .balign 4
+_02021F48: .word 0xB6F8D2EC
+
+ thumb_func_start FUN_02021F4C
+FUN_02021F4C: ; 0x02021F4C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r5, #0x0
+ bne _02021F5A
+ bl ErrorHandling
+_02021F5A:
+ ldr r1, [r5, #0x4]
+ ldr r0, _02021FAC ; =0xB6F8D2EC
+ cmp r1, r0
+ beq _02021F66
+ bl ErrorHandling
+_02021F66:
+ cmp r4, #0x0
+ bne _02021F6E
+ bl ErrorHandling
+_02021F6E:
+ ldr r1, [r4, #0x4]
+ ldr r0, _02021FAC ; =0xB6F8D2EC
+ cmp r1, r0
+ beq _02021F7A
+ bl ErrorHandling
+_02021F7A:
+ ldrh r2, [r4, #0x2]
+ ldrh r0, [r5, #0x2]
+ add r1, r0, r2
+ add r3, r1, #0x1
+ ldrh r1, [r5, #0x0]
+ cmp r3, r1
+ bgt _02021FA6
+ add r1, r5, #0x0
+ add r1, #0x8
+ lsl r0, r0, #0x1
+ add r0, r1, r0
+ add r1, r4, #0x0
+ add r2, r2, #0x1
+ add r1, #0x8
+ lsl r2, r2, #0x1
+ blx FUN_020DF438
+ ldrh r1, [r5, #0x2]
+ ldrh r0, [r4, #0x2]
+ add r0, r1, r0
+ strh r0, [r5, #0x2]
+ pop {r3-r5, pc}
+_02021FA6:
+ bl ErrorHandling
+ pop {r3-r5, pc}
+ .balign 4
+_02021FAC: .word 0xB6F8D2EC
+
+ thumb_func_start FUN_02021FB0
+FUN_02021FB0: ; 0x02021FB0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r5, #0x0
+ bne _02021FBE
+ bl ErrorHandling
+_02021FBE:
+ ldr r1, [r5, #0x4]
+ ldr r0, _02021FF0 ; =0xB6F8D2EC
+ cmp r1, r0
+ beq _02021FCA
+ bl ErrorHandling
+_02021FCA:
+ ldrh r2, [r5, #0x2]
+ ldrh r0, [r5, #0x0]
+ add r1, r2, #0x1
+ cmp r1, r0
+ bge _02021FE8
+ lsl r0, r2, #0x1
+ strh r1, [r5, #0x2]
+ add r0, r5, r0
+ strh r4, [r0, #0x8]
+ ldrh r0, [r5, #0x2]
+ ldr r1, _02021FF4 ; =0x0000FFFF
+ lsl r0, r0, #0x1
+ add r0, r5, r0
+ strh r1, [r0, #0x8]
+ pop {r3-r5, pc}
+_02021FE8:
+ bl ErrorHandling
+ pop {r3-r5, pc}
+ nop
+_02021FF0: .word 0xB6F8D2EC
+_02021FF4: .word 0x0000FFFF
+
+ thumb_func_start FUN_02021FF8
+FUN_02021FF8: ; 0x02021FF8
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _02022002
+ bl ErrorHandling
+_02022002:
+ ldr r1, [r4, #0x4]
+ ldr r0, _02022028 ; =0xB6F8D2EC
+ cmp r1, r0
+ beq _0202200E
+ bl ErrorHandling
+_0202200E:
+ ldrh r0, [r4, #0x2]
+ cmp r0, #0x0
+ beq _02022026
+ ldrh r1, [r4, #0x8]
+ ldr r0, _0202202C ; =0x00000145
+ cmp r1, r0
+ blo _02022026
+ add r0, #0x19
+ cmp r1, r0
+ bhi _02022026
+ sub r1, #0x1a
+ strh r1, [r4, #0x8]
+_02022026:
+ pop {r4, pc}
+ .balign 4
+_02022028: .word 0xB6F8D2EC
+_0202202C: .word 0x00000145
+
+ thumb_func_start FUN_02022030
+FUN_02022030: ; 0x02022030
+ ldrh r1, [r0, #0x2]
+ cmp r1, #0x0
+ beq _02022044
+ ldrh r1, [r0, #0x8]
+ mov r0, #0xf1
+ lsl r0, r0, #0x8
+ cmp r1, r0
+ bne _02022044
+ mov r0, #0x1
+ bx lr
+_02022044:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02022048
+FUN_02022048: ; 0x02022048
+ push {r3-r7, lr}
+ add r4, r1, #0x0
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ bl FUN_02022030
+ cmp r0, #0x0
+ beq _020220B2
+ ldr r0, [sp, #0x0]
+ ldr r1, [sp, #0x0]
+ ldrh r0, [r0, #0x2]
+ add r1, #0x8
+ ldr r7, _020220BC ; =0x000001FF
+ lsl r0, r0, #0x1
+ add r3, r1, r0
+ mov r0, #0x0
+ add r4, #0xa
+ add r1, r0, #0x0
+_0202206C:
+ ldrh r2, [r4, #0x0]
+ asr r2, r0
+ and r2, r7
+ lsl r2, r2, #0x10
+ add r0, #0x9
+ lsr r2, r2, #0x10
+ cmp r0, #0xf
+ blt _02022094
+ add r4, r4, #0x2
+ sub r0, #0xf
+ beq _02022094
+ ldrh r6, [r4, #0x0]
+ mov r5, #0x9
+ sub r5, r5, r0
+ lsl r6, r5
+ ldr r5, _020220BC ; =0x000001FF
+ and r5, r6
+ orr r2, r5
+ lsl r2, r2, #0x10
+ lsr r2, r2, #0x10
+_02022094:
+ ldr r5, _020220BC ; =0x000001FF
+ cmp r2, r5
+ beq _020220A2
+ strh r2, [r3, #0x0]
+ add r3, r3, #0x2
+ add r1, r1, #0x1
+ b _0202206C
+_020220A2:
+ ldr r0, _020220C0 ; =0x0000FFFF
+ strh r0, [r3, #0x0]
+ ldr r0, [sp, #0x0]
+ ldrh r0, [r0, #0x2]
+ add r1, r0, r1
+ ldr r0, [sp, #0x0]
+ strh r1, [r0, #0x2]
+ pop {r3-r7, pc}
+_020220B2:
+ ldr r0, [sp, #0x0]
+ add r1, r4, #0x0
+ bl FUN_02021F4C
+ pop {r3-r7, pc}
+ .balign 4
+_020220BC: .word 0x000001FF
+_020220C0: .word 0x0000FFFF
+
+ thumb_func_start FUN_020220C4
+FUN_020220C4: ; 0x020220C4
+ push {r3-r7, lr}
+ add r7, r1, #0x0
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ str r3, [sp, #0x0]
+ cmp r7, #0x0
+ bne _020220D6
+ bl ErrorHandling
+_020220D6:
+ ldr r0, [sp, #0x18]
+ mov r1, #0x14
+ bl FUN_02016998
+ add r4, r0, #0x0
+ beq _0202211C
+ str r5, [r4, #0x0]
+ str r7, [r4, #0x4]
+ ldr r0, [sp, #0x0]
+ str r6, [r4, #0x8]
+ str r0, [r4, #0xc]
+ ldr r0, [sp, #0x18]
+ lsl r1, r7, #0x2
+ bl FUN_02016998
+ str r0, [r4, #0x10]
+ cmp r0, #0x0
+ beq _02022114
+ mov r6, #0x0
+ cmp r7, #0x0
+ bls _0202211C
+ add r5, r6, #0x0
+_02022102:
+ ldr r0, [r4, #0x10]
+ add r0, r0, r5
+ bl FUN_02022120
+ add r6, r6, #0x1
+ add r5, r5, #0x4
+ cmp r6, r7
+ blo _02022102
+ b _0202211C
+_02022114:
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r4, #0x0
+_0202211C:
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02022120
+FUN_02022120: ; 0x02022120
+ mov r1, #0x0
+ strb r1, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ strh r1, [r0, #0x2]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0202212C
+FUN_0202212C: ; 0x0202212C
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _02022136
+ bl ErrorHandling
+_02022136:
+ ldr r0, [r4, #0x10]
+ bl FUN_02016A18
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r4, pc}
+
+ thumb_func_start FUN_02022144
+FUN_02022144: ; 0x02022144
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ bl FUN_02020A98
+ str r0, [sp, #0x0]
+ cmp r0, #0x0
+ beq _02022190
+ bl FUN_02020AA4
+ str r0, [sp, #0x4]
+ ldr r0, [r5, #0x4]
+ mov r6, #0x0
+ cmp r0, #0x0
+ bls _020221AE
+ add r4, r6, #0x0
+_02022164:
+ ldr r0, [r5, #0x10]
+ add r0, r0, r4
+ ldrb r0, [r0, #0x1]
+ cmp r0, #0x0
+ ldr r0, [r5, #0x0]
+ beq _02022178
+ add r0, r0, r4
+ bl FUN_02020A40
+ b _0202217E
+_02022178:
+ add r0, r0, r4
+ bl FUN_02020A6C
+_0202217E:
+ ldr r1, [r5, #0x10]
+ add r6, r6, #0x1
+ add r1, r1, r4
+ strb r0, [r1, #0x1]
+ ldr r0, [r5, #0x4]
+ add r4, r4, #0x4
+ cmp r6, r0
+ blo _02022164
+ b _020221AE
+_02022190:
+ ldr r0, [r5, #0x4]
+ mov r3, #0x0
+ str r3, [sp, #0x4]
+ cmp r0, #0x0
+ bls _020221AE
+ add r2, r3, #0x0
+ add r1, r3, #0x0
+_0202219E:
+ ldr r0, [r5, #0x10]
+ add r3, r3, #0x1
+ add r0, r0, r2
+ strb r1, [r0, #0x1]
+ ldr r0, [r5, #0x4]
+ add r2, r2, #0x4
+ cmp r3, r0
+ blo _0202219E
+_020221AE:
+ mov r4, #0x0
+ cmp r0, #0x0
+ bls _020221E4
+ add r7, r4, #0x0
+_020221B6:
+ ldr r3, [r5, #0x10]
+ ldr r1, [sp, #0x0]
+ add r0, r3, r7
+ ldrb r3, [r3, r7]
+ ldr r2, [sp, #0x4]
+ lsl r6, r3, #0x2
+ ldr r3, _020221E8 ; =0x020EE6CC
+ ldr r3, [r3, r6]
+ blx r3
+ add r1, r0, #0x0
+ mov r0, #0x0
+ mvn r0, r0
+ cmp r1, r0
+ beq _020221DA
+ ldr r2, [r5, #0xc]
+ ldr r3, [r5, #0x8]
+ add r0, r4, #0x0
+ blx r3
+_020221DA:
+ ldr r0, [r5, #0x4]
+ add r4, r4, #0x1
+ add r7, r7, #0x4
+ cmp r4, r0
+ blo _020221B6
+_020221E4:
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+_020221E8: .word 0x020EE6CC
+
+ thumb_func_start FUN_020221EC
+FUN_020221EC: ; 0x020221EC
+ push {r3, lr}
+ ldrb r1, [r0, #0x1]
+ cmp r1, #0x0
+ beq _02022202
+ cmp r2, #0x0
+ beq _02022202
+ mov r1, #0x1
+ bl FUN_0202223C
+ mov r0, #0x0
+ pop {r3, pc}
+_02022202:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3, pc}
+
+ thumb_func_start FUN_02022208
+FUN_02022208: ; 0x02022208
+ push {r3, lr}
+ ldrb r2, [r0, #0x1]
+ cmp r2, #0x0
+ beq _02022220
+ ldrh r2, [r0, #0x2]
+ ldr r1, _02022238 ; =0x0000FFFF
+ cmp r2, r1
+ bhs _0202221C
+ add r1, r2, #0x1
+ strh r1, [r0, #0x2]
+_0202221C:
+ mov r0, #0x2
+ pop {r3, pc}
+_02022220:
+ cmp r1, #0x0
+ beq _0202222E
+ mov r1, #0x0
+ bl FUN_0202223C
+ mov r0, #0x3
+ pop {r3, pc}
+_0202222E:
+ mov r1, #0x0
+ bl FUN_0202223C
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+_02022238: .word 0x0000FFFF
+
+ thumb_func_start FUN_0202223C
+FUN_0202223C: ; 0x0202223C
+ strb r1, [r0, #0x0]
+ mov r1, #0x0
+ strh r1, [r0, #0x2]
+ bx lr
+
+ thumb_func_start FUN_02022244
+FUN_02022244: ; 0x02022244
+ push {r3-r4}
+ ldr r3, [r0, #0xc]
+ mov r2, #0x0
+ sub r3, r3, #0x1
+ beq _02022262
+ ldr r4, [r0, #0x0]
+_02022250:
+ ldrh r3, [r4, #0x2]
+ cmp r3, r1
+ bhi _02022262
+ ldr r3, [r0, #0xc]
+ add r2, r2, #0x1
+ sub r3, r3, #0x1
+ add r4, r4, #0x2
+ cmp r2, r3
+ blo _02022250
+_02022262:
+ ldr r1, [r0, #0x4]
+ ldrb r3, [r1, r2]
+ add r1, sp, #0x0
+ strb r3, [r1, #0x0]
+ ldr r0, [r0, #0x8]
+ ldrb r2, [r0, r2]
+ strb r2, [r1, #0x1]
+ ldrb r0, [r1, #0x0]
+ lsl r1, r2, #0x8
+ orr r0, r1
+ pop {r3-r4}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0202227C
+FUN_0202227C: ; 0x0202227C
+ ldr r2, [r0, #0x0]
+ str r2, [r1, #0xc]
+ add r2, r0, #0x4
+ str r2, [r1, #0x0]
+ ldr r0, [r1, #0xc]
+ lsl r0, r0, #0x1
+ add r2, r2, r0
+ str r2, [r1, #0x4]
+ ldr r0, [r1, #0xc]
+ add r0, r2, r0
+ str r0, [r1, #0x8]
+ bx lr
+
+ thumb_func_start FUN_02022294
+FUN_02022294: ; 0x02022294
+ ldr r0, _020222A4 ; =0x021C59BC
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+ str r1, [r0, #0x4]
+ str r1, [r0, #0x8]
+ ldr r0, _020222A8 ; =0x021C59BC
+ str r1, [r0, #0x0]
+ bx lr
+ .balign 4
+_020222A4: .word 0x021C59BC
+_020222A8: .word 0x021C59BC
+
+ thumb_func_start FUN_020222AC
+FUN_020222AC: ; 0x020222AC
+ ldr r3, _020222B0 ; =FUN_020C7E0C
+ bx r3
+ .balign 4
+_020222B0: .word FUN_020C7E0C
+
+ thumb_func_start FUN_020222B4
+FUN_020222B4: ; 0x020222B4
+ ldr r2, _020222C0 ; =0x021C59BC
+ str r0, [r2, #0x4]
+ str r1, [r2, #0x8]
+ mov r0, #0x1
+ str r0, [r2, #0x0]
+ bx lr
+ .balign 4
+_020222C0: .word 0x021C59BC
+
+ thumb_func_start FUN_020222C4
+FUN_020222C4: ; 0x020222C4
+ ldr r0, _020222E0 ; =0x021C59BC
+ ldr r1, [r0, #0x0]
+ cmp r1, #0x0
+ beq _020222DC
+ ldr r1, [r0, #0x8]
+ ldr r2, [r0, #0x4]
+ lsl r1, r1, #0x1
+ orr r2, r1
+ ldr r1, _020222E4 ; =0x04000540
+ str r2, [r1, #0x0]
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+_020222DC:
+ bx lr
+ nop
+_020222E0: .word 0x021C59BC
+_020222E4: .word 0x04000540
+
+ thumb_func_start FUN_020222E8
+FUN_020222E8: ; 0x020222E8
+ mov r0, #0x5
+ lsl r0, r0, #0x18
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020222F0
+FUN_020222F0: ; 0x020222F0
+ mov r0, #0x2
+ lsl r0, r0, #0x8
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020222F8
+FUN_020222F8: ; 0x020222F8
+ ldr r0, _020222FC ; =0x05000400
+ bx lr
+ .balign 4
+_020222FC: .word 0x05000400
+
+ thumb_func_start FUN_02022300
+FUN_02022300: ; 0x02022300
+ mov r0, #0x2
+ lsl r0, r0, #0x8
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02022308
+FUN_02022308: ; 0x02022308
+ ldr r0, _0202230C ; =0x05000200
+ bx lr
+ .balign 4
+_0202230C: .word 0x05000200
+
+ thumb_func_start FUN_02022310
+FUN_02022310: ; 0x02022310
+ ldr r0, _02022314 ; =0x05000600
+ bx lr
+ .balign 4
+_02022314: .word 0x05000600
+
+ thumb_func_start FUN_02022318
+FUN_02022318: ; 0x02022318
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r7, r1, #0x0
+ mov r1, #0xc
+ add r6, r0, #0x0
+ add r5, r2, #0x0
+ str r3, [sp, #0x4]
+ bl FUN_02016998
+ add r4, r0, #0x0
+ str r6, [r4, #0x0]
+ blx FUN_020BB7F4
+ blx FUN_020C7D28
+ mov r1, #0x2
+ ldr r0, _020223B8 ; =0x04000540
+ cmp r7, #0x0
+ str r1, [r0, #0x0]
+ bne _02022364
+ lsl r0, r5, #0x7
+ blx FUN_020AFA28
+ add r6, r0, #0x0
+ ldr r0, [r4, #0x0]
+ add r1, r6, #0x0
+ bl FUN_02016998
+ str r0, [r4, #0x8]
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ ldr r2, [r4, #0x8]
+ lsl r0, r5, #0x11
+ mov r1, #0x0
+ add r3, r6, #0x0
+ blx FUN_020AF9C4
+ b _0202236E
+_02022364:
+ lsl r0, r5, #0x10
+ lsr r0, r0, #0x10
+ mov r1, #0x1
+ blx FUN_020AEB70
+_0202236E:
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ bne _02022398
+ ldr r0, [sp, #0x20]
+ lsl r0, r0, #0x8
+ blx FUN_020AFBFC
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ add r1, r5, #0x0
+ bl FUN_02016998
+ str r0, [r4, #0x4]
+ ldr r0, [sp, #0x20]
+ ldr r1, [r4, #0x4]
+ lsl r0, r0, #0xd
+ add r2, r5, #0x0
+ mov r3, #0x1
+ blx FUN_020AFBA8
+ b _020223A4
+_02022398:
+ ldr r0, [sp, #0x20]
+ mov r1, #0x1
+ lsl r0, r0, #0x1d
+ lsr r0, r0, #0x10
+ blx FUN_020AEB70
+_020223A4:
+ ldr r0, [sp, #0x24]
+ cmp r0, #0x0
+ beq _020223AE
+ blx r0
+ b _020223B2
+_020223AE:
+ bl FUN_020223D4
+_020223B2:
+ add r0, r4, #0x0
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+_020223B8: .word 0x04000540
+
+ thumb_func_start FUN_020223BC
+FUN_020223BC: ; 0x020223BC
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x4]
+ bl FUN_02016A18
+ ldr r0, [r4, #0x8]
+ bl FUN_02016A18
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r4, pc}
+
+ thumb_func_start FUN_020223D4
+FUN_020223D4: ; 0x020223D4
+ push {r3, lr}
+ mov r0, #0x1
+ add r1, r0, #0x0
+ bl FUN_0201E6E4
+ ldr r0, _02022438 ; =0x04000008
+ mov r1, #0x3
+ ldrh r2, [r0, #0x0]
+ bic r2, r1
+ strh r2, [r0, #0x0]
+ add r0, #0x58
+ ldrh r2, [r0, #0x0]
+ ldr r1, _0202243C ; =0xFFFFCFFD
+ and r1, r2
+ strh r1, [r0, #0x0]
+ ldrh r1, [r0, #0x0]
+ ldr r2, _02022440 ; =0x0000CFEF
+ and r1, r2
+ strh r1, [r0, #0x0]
+ add r1, r2, #0x0
+ ldrh r3, [r0, #0x0]
+ add r1, #0xc
+ and r1, r3
+ strh r1, [r0, #0x0]
+ add r1, r2, #0x0
+ ldrh r3, [r0, #0x0]
+ add r1, #0x8
+ sub r2, #0x10
+ and r1, r3
+ strh r1, [r0, #0x0]
+ ldrh r1, [r0, #0x0]
+ and r1, r2
+ strh r1, [r0, #0x0]
+ mov r0, #0x0
+ add r1, r0, #0x0
+ add r2, r0, #0x0
+ add r3, r0, #0x0
+ blx FUN_020C7C28
+ mov r0, #0x0
+ ldr r2, _02022444 ; =0x00007FFF
+ add r1, r0, #0x0
+ mov r3, #0x3f
+ str r0, [sp, #0x0]
+ blx FUN_020C7B3C
+ ldr r1, _02022448 ; =0xBFFF0000
+ ldr r0, _0202244C ; =0x04000580
+ str r1, [r0, #0x0]
+ pop {r3, pc}
+ .balign 4
+_02022438: .word 0x04000008
+_0202243C: .word 0xFFFFCFFD
+_02022440: .word 0x0000CFEF
+_02022444: .word 0x00007FFF
+_02022448: .word 0xBFFF0000
+_0202244C: .word 0x04000580
+
+ thumb_func_start FUN_02022450
+FUN_02022450: ; 0x02022450
+ push {r3, lr}
+ blx FS_IsAvailable
+ cmp r0, #0x0
+ bne _02022460
+ blx OS_Terminate
+ pop {r3, pc}
+_02022460:
+ ldr r0, _020224BC ; =0x027FF00C
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _0202248A
+ blx CARD_Init
+ mov r2, #0x16
+ ldr r0, _020224C0 ; =0x027FFE00
+ ldr r1, _020224C4 ; =0x027FF000
+ lsl r2, r2, #0x4
+ blx MI_CpuCopy8
+ mov r2, #0x16
+ ldr r0, _020224C0 ; =0x027FFE00
+ ldr r1, _020224C8 ; =0x027FFA80
+ lsl r2, r2, #0x4
+ blx MI_CpuCopy8
+ ldr r1, _020224CC ; =0x4A414441
+ ldr r0, _020224BC ; =0x027FF00C
+ str r1, [r0, #0x0]
+_0202248A:
+ ldr r0, _020224D0 ; =0x020EE6D4
+ mov r1, #0x3
+ blx FS_FindArchive
+ ldr r1, _020224C4 ; =0x027FF000
+ ldr r2, [r1, #0x48]
+ str r2, [r0, #0x2c]
+ ldr r2, [r1, #0x4c]
+ str r2, [r0, #0x30]
+ ldr r2, [r1, #0x40]
+ str r2, [r0, #0x34]
+ ldr r2, [r1, #0x44]
+ str r2, [r0, #0x38]
+ ldr r2, [r1, #0xc]
+ ldr r0, _020224CC ; =0x4A414441
+ cmp r2, r0
+ bne _020224B4
+ ldrh r1, [r1, #0x10]
+ ldr r0, _020224D4 ; =0x00003130
+ cmp r1, r0
+ beq _020224B8
+_020224B4:
+ blx OS_Terminate
+_020224B8:
+ pop {r3, pc}
+ nop
+_020224BC: .word 0x027FF00C
+_020224C0: .word 0x027FFE00
+_020224C4: .word 0x027FF000
+_020224C8: .word 0x027FFA80
+_020224CC: .word 0x4A414441
+_020224D0: .word 0x020EE6D4
+_020224D4: .word 0x00003130
+
+ thumb_func_start FUN_020224D8
+FUN_020224D8: ; 0x020224D8
+ push {r4, lr}
+ sub sp, #0x48
+ add r4, r0, #0x0
+ add r0, sp, #0x0
+ blx FS_InitFile
+ add r0, sp, #0x0
+ add r1, r4, #0x0
+ blx FS_OpenFile
+ cmp r0, #0x0
+ beq _020224FC
+ ldr r1, [sp, #0x24]
+ ldr r0, _02022500 ; =0x027FFC2C
+ str r1, [r0, #0x0]
+ mov r0, #0x0
+ blx OS_ResetSystem
+_020224FC:
+ add sp, #0x48
+ pop {r4, pc}
+ .balign 4
+_02022500: .word 0x027FFC2C
+
+ thumb_func_start FUN_02022504
+FUN_02022504: ; 0x02022504
+ ldr r3, _0202250C ; =FUN_02022610
+ mov r1, #0x1b
+ bx r3
+ nop
+_0202250C: .word FUN_02022610
+
+ thumb_func_start FUN_02022510
+FUN_02022510: ; 0x02022510
+ ldr r3, _02022518 ; =FUN_02022610
+ mov r1, #0x23
+ bx r3
+ nop
+_02022518: .word FUN_02022610
+
+ thumb_func_start FUN_0202251C
+FUN_0202251C: ; 0x0202251C
+ ldr r3, _02022524 ; =FUN_02022610
+ mov r1, #0x1f
+ bx r3
+ nop
+_02022524: .word FUN_02022610
+
+ thumb_func_start FUN_02022528
+FUN_02022528: ; 0x02022528
+ ldr r3, _02022530 ; =FUN_02022610
+ mov r1, #0x20
+ bx r3
+ nop
+_02022530: .word FUN_02022610
+
+ thumb_func_start FUN_02022534
+FUN_02022534: ; 0x02022534
+ push {r3, lr}
+ add r3, r2, #0x0
+ mov r2, #0x0
+ bl FUN_02023408
+ pop {r3, pc}
+
+ thumb_func_start FUN_02022540
+FUN_02022540: ; 0x02022540
+ ldr r3, _02022548 ; =FUN_020232BC
+ add r2, r1, #0x0
+ mov r1, #0x0
+ bx r3
+ .balign 4
+_02022548: .word FUN_020232BC
+
+ thumb_func_start FUN_0202254C
+FUN_0202254C: ; 0x0202254C
+ push {r4, lr}
+ ldr r1, _020225E0 ; =0x000204A8
+ mov r0, #0x1
+ bl FUN_02016998
+ add r4, r0, #0x0
+ ldr r2, _020225E0 ; =0x000204A8
+ mov r0, #0x0
+ add r1, r4, #0x0
+ blx MIi_CpuClearFast
+ ldr r0, _020225E4 ; =0x021C59C8
+ str r4, [r0, #0x0]
+ bl FUN_02023570
+ str r0, [r4, #0x0]
+ mov r0, #0x0
+ str r0, [r4, #0x4]
+ mov r0, #0x1
+ str r0, [r4, #0x8]
+ str r0, [r4, #0xc]
+ add r0, r4, #0x0
+ ldr r1, _020225E8 ; =0x00001021
+ add r0, #0x14
+ blx FUN_020DDF60
+ ldr r0, _020225EC ; =0x00020224
+ add r0, r4, r0
+ bl FUN_020230E4
+ ldr r0, _020225F0 ; =0x00020464
+ ldr r1, _020225EC ; =0x00020224
+ add r0, r4, r0
+ add r1, r4, r1
+ bl FUN_02023160
+ ldr r1, _020225F4 ; =0x00020218
+ mov r0, #0x0
+ add r1, r4, r1
+ mov r2, #0x8
+ blx MIi_CpuClearFast
+ add r0, r4, #0x0
+ bl FUN_02022AD8
+ str r0, [r4, #0x10]
+ cmp r0, #0x3
+ bhi _020225DA
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_020225B8: ; jump table (using 16-bit offset)
+ .short _020225D4 - _020225B8 - 2; case 0
+ .short _020225C0 - _020225B8 - 2; case 1
+ .short _020225C4 - _020225B8 - 2; case 2
+ .short _020225D4 - _020225B8 - 2; case 3
+_020225C0:
+ mov r0, #0x0
+ str r0, [r4, #0xc]
+_020225C4:
+ add r0, r4, #0x0
+ bl FUN_02022D08
+ mov r0, #0x1
+ str r0, [r4, #0x4]
+ mov r0, #0x0
+ str r0, [r4, #0x8]
+ b _020225DA
+_020225D4:
+ add r0, r4, #0x0
+ bl FUN_020227DC
+_020225DA:
+ add r0, r4, #0x0
+ pop {r4, pc}
+ nop
+_020225E0: .word 0x000204A8
+_020225E4: .word 0x021C59C8
+_020225E8: .word 0x00001021
+_020225EC: .word 0x00020224
+_020225F0: .word 0x00020464
+_020225F4: .word 0x00020218
+
+ thumb_func_start FUN_020225F8
+FUN_020225F8: ; 0x020225F8
+ push {r3, lr}
+ ldr r0, _0202260C ; =0x021C59C8
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _02022606
+ bl ErrorHandling
+_02022606:
+ ldr r0, _0202260C ; =0x021C59C8
+ ldr r0, [r0, #0x0]
+ pop {r3, pc}
+ .balign 4
+_0202260C: .word 0x021C59C8
+
+ thumb_func_start FUN_02022610
+FUN_02022610: ; 0x02022610
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ cmp r4, #0x24
+ blt _0202261E
+ bl ErrorHandling
+_0202261E:
+ mov r0, #0x85
+ lsl r0, r0, #0x2
+ add r2, r5, r0
+ lsl r0, r4, #0x4
+ add r1, r5, r0
+ ldr r0, _02022630 ; =0x0002022C
+ ldr r0, [r1, r0]
+ add r0, r2, r0
+ pop {r3-r5, pc}
+ .balign 4
+_02022630: .word 0x0002022C
+
+ thumb_func_start FUN_02022634
+FUN_02022634: ; 0x02022634
+ ldr r3, _02022638 ; =FUN_02022610
+ bx r3
+ .balign 4
+_02022638: .word FUN_02022610
+
+ thumb_func_start FUN_0202263C
+FUN_0202263C: ; 0x0202263C
+ push {r3-r7, lr}
+ mov r1, #0x1
+ str r0, [sp, #0x0]
+ mov r0, #0x3
+ lsl r1, r1, #0xc
+ bl FUN_020169D8
+ add r6, r0, #0x0
+ mov r0, #0x1
+ bl FUN_02016444
+ ldr r1, _020226F4 ; =0x00020220
+ ldr r0, [sp, #0x0]
+ ldrb r0, [r0, r1]
+ cmp r0, #0x0
+ bne _02022660
+ mov r2, #0x1
+ b _02022662
+_02022660:
+ mov r2, #0x0
+_02022662:
+ ldr r0, [sp, #0x0]
+ mov r1, #0x0
+ bl FUN_02023074
+ ldr r1, _020226F8 ; =0x00020221
+ ldr r0, [sp, #0x0]
+ ldrb r0, [r0, r1]
+ cmp r0, #0x0
+ bne _02022678
+ mov r2, #0x1
+ b _0202267A
+_02022678:
+ mov r2, #0x0
+_0202267A:
+ ldr r0, [sp, #0x0]
+ mov r1, #0x1
+ bl FUN_02023074
+ ldr r0, [sp, #0x0]
+ ldr r3, _020226F4 ; =0x00020220
+ add r2, r0, #0x0
+ ldrb r2, [r2, r3]
+ mov r1, #0x0
+ bl FUN_02023074
+ ldr r0, [sp, #0x0]
+ ldr r3, _020226F8 ; =0x00020221
+ add r2, r0, #0x0
+ ldrb r2, [r2, r3]
+ mov r1, #0x1
+ bl FUN_02023074
+ mov r0, #0x0
+ mov r2, #0x1
+ mvn r0, r0
+ add r1, r6, #0x0
+ lsl r2, r2, #0xc
+ blx MIi_CpuClearFast
+ mov r4, #0x0
+ mov r7, #0x1
+ add r5, r4, #0x0
+ lsl r7, r7, #0xc
+_020226B4:
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r7, #0x0
+ bl FUN_020235D0
+ add r0, r4, #0x0
+ add r0, #0x40
+ lsl r0, r0, #0xc
+ add r1, r6, #0x0
+ add r2, r7, #0x0
+ bl FUN_020235D0
+ mov r0, #0x1
+ lsl r0, r0, #0xc
+ add r4, r4, #0x1
+ add r5, r5, r0
+ cmp r4, #0x40
+ blt _020226B4
+ add r0, r6, #0x0
+ bl FUN_02016A18
+ ldr r0, [sp, #0x0]
+ bl FUN_020227DC
+ ldr r0, [sp, #0x0]
+ mov r1, #0x0
+ str r1, [r0, #0x4]
+ mov r0, #0x1
+ bl FUN_02016454
+ mov r0, #0x1
+ pop {r3-r7, pc}
+ .balign 4
+_020226F4: .word 0x00020220
+_020226F8: .word 0x00020221
+
+ thumb_func_start FUN_020226FC
+FUN_020226FC: ; 0x020226FC
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x0]
+ cmp r1, #0x0
+ bne _0202270A
+ mov r0, #0x0
+ pop {r4, pc}
+_0202270A:
+ bl FUN_02022D08
+ cmp r0, #0x0
+ beq _0202271C
+ mov r0, #0x1
+ str r0, [r4, #0x4]
+ mov r1, #0x0
+ str r1, [r4, #0x8]
+ pop {r4, pc}
+_0202271C:
+ mov r0, #0x0
+ pop {r4, pc}
+
+ thumb_func_start FUN_02022720
+FUN_02022720: ; 0x02022720
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ bne _0202272E
+ mov r0, #0x3
+ pop {r4, pc}
+_0202272E:
+ ldr r0, [r4, #0x8]
+ cmp r0, #0x0
+ beq _02022784
+ mov r0, #0x1
+ bl FUN_02016444
+ ldr r0, _02022798 ; =0x00020220
+ ldrb r0, [r4, r0]
+ cmp r0, #0x0
+ bne _02022746
+ mov r2, #0x1
+ b _02022748
+_02022746:
+ mov r2, #0x0
+_02022748:
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_02023074
+ ldr r0, _0202279C ; =0x00020221
+ ldrb r0, [r4, r0]
+ cmp r0, #0x0
+ bne _0202275C
+ mov r2, #0x1
+ b _0202275E
+_0202275C:
+ mov r2, #0x0
+_0202275E:
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_02023074
+ ldr r2, _02022798 ; =0x00020220
+ add r0, r4, #0x0
+ ldrb r2, [r4, r2]
+ mov r1, #0x0
+ bl FUN_02023074
+ ldr r2, _0202279C ; =0x00020221
+ add r0, r4, #0x0
+ ldrb r2, [r4, r2]
+ mov r1, #0x1
+ bl FUN_02023074
+ mov r0, #0x1
+ bl FUN_02016454
+_02022784:
+ add r0, r4, #0x0
+ bl FUN_02023044
+ cmp r0, #0x2
+ bne _02022796
+ mov r1, #0x1
+ str r1, [r4, #0x4]
+ mov r1, #0x0
+ str r1, [r4, #0x8]
+_02022796:
+ pop {r4, pc}
+ .balign 4
+_02022798: .word 0x00020220
+_0202279C: .word 0x00020221
+
+ thumb_func_start FUN_020227A0
+FUN_020227A0: ; 0x020227A0
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ cmp r4, #0x2
+ blt _020227AE
+ bl ErrorHandling
+_020227AE:
+ ldr r0, [r5, #0x8]
+ cmp r0, #0x0
+ beq _020227B8
+ bl ErrorHandling
+_020227B8:
+ ldr r0, [r5, #0x4]
+ cmp r0, #0x1
+ beq _020227C2
+ bl ErrorHandling
+_020227C2:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02022840
+_020227CA:
+ add r0, r5, #0x0
+ bl FUN_02022854
+ cmp r0, #0x0
+ beq _020227CA
+ cmp r0, #0x1
+ beq _020227CA
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020227DC
+FUN_020227DC: ; 0x020227DC
+ add r2, r0, #0x0
+ mov r0, #0x1
+ str r0, [r2, #0x8]
+ str r0, [r2, #0xc]
+ mov r0, #0x85
+ ldr r1, _020227F4 ; =0x00020224
+ lsl r0, r0, #0x2
+ ldr r3, _020227F8 ; =FUN_020231F4
+ add r0, r2, r0
+ add r1, r2, r1
+ bx r3
+ nop
+_020227F4: .word 0x00020224
+_020227F8: .word FUN_020231F4
+
+ thumb_func_start FUN_020227FC
+FUN_020227FC: ; 0x020227FC
+ ldr r0, [r0, #0x0]
+ bx lr
+
+ thumb_func_start FUN_02022800
+FUN_02022800: ; 0x02022800
+ ldr r0, [r0, #0x10]
+ bx lr
+
+ thumb_func_start FUN_02022804
+FUN_02022804: ; 0x02022804
+ ldr r0, [r0, #0x4]
+ bx lr
+
+ thumb_func_start FUN_02022808
+FUN_02022808: ; 0x02022808
+ ldr r0, [r0, #0x8]
+ bx lr
+
+ thumb_func_start FUN_0202280C
+FUN_0202280C: ; 0x0202280C
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02022808
+ cmp r0, #0x0
+ beq _02022826
+ add r0, r4, #0x0
+ bl FUN_02022804
+ cmp r0, #0x0
+ beq _02022826
+ mov r0, #0x1
+ pop {r4, pc}
+_02022826:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202282C
+FUN_0202282C: ; 0x0202282C
+ ldr r0, [r0, #0xc]
+ bx lr
+
+ thumb_func_start FUN_02022830
+FUN_02022830: ; 0x02022830
+ ldr r0, _0202283C ; =0x021C59C8
+ mov r1, #0x1
+ ldr r0, [r0, #0x0]
+ str r1, [r0, #0xc]
+ bx lr
+ nop
+_0202283C: .word 0x021C59C8
+
+ thumb_func_start FUN_02022840
+FUN_02022840: ; 0x02022840
+ add r2, r1, #0x0
+ ldr r1, _0202284C ; =0x0002047C
+ ldr r3, _02022850 ; =FUN_02022DFC
+ add r1, r0, r1
+ bx r3
+ nop
+_0202284C: .word 0x0002047C
+_02022850: .word FUN_02022DFC
+
+ thumb_func_start FUN_02022854
+FUN_02022854: ; 0x02022854
+ push {r3-r5, lr}
+ ldr r1, _02022878 ; =0x0002047C
+ add r5, r0, #0x0
+ add r1, r5, r1
+ bl FUN_02022E78
+ add r4, r0, #0x0
+ beq _02022874
+ cmp r4, #0x1
+ beq _02022874
+ ldr r1, _02022878 ; =0x0002047C
+ add r0, r5, #0x0
+ add r1, r5, r1
+ add r2, r4, #0x0
+ bl FUN_02022F80
+_02022874:
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+_02022878: .word 0x0002047C
+
+ thumb_func_start FUN_0202287C
+FUN_0202287C: ; 0x0202287C
+ ldr r1, _02022884 ; =0x0002047C
+ ldr r3, _02022888 ; =FUN_02022FF0
+ add r1, r0, r1
+ bx r3
+ .balign 4
+_02022884: .word 0x0002047C
+_02022888: .word FUN_02022FF0
+
+ thumb_func_start FUN_0202288C
+FUN_0202288C: ; 0x0202288C
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+ str r1, [r0, #0x4]
+ str r1, [r0, #0x8]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02022898
+FUN_02022898: ; 0x02022898
+ ldr r3, _020228A0 ; =FUN_020DDD60
+ add r0, #0x14
+ sub r2, #0x14
+ bx r3
+ .balign 4
+_020228A0: .word FUN_020DDD60
+
+ thumb_func_start FUN_020228A4
+FUN_020228A4: ; 0x020228A4
+ cmp r0, #0x0
+ bne _020228AC
+ mov r2, #0x0
+ b _020228B0
+_020228AC:
+ mov r2, #0x1
+ lsl r2, r2, #0x12
+_020228B0:
+ ldr r0, [r1, #0x4]
+ add r0, r2, r0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020228B8
+FUN_020228B8: ; 0x020228B8
+ push {r3-r5, lr}
+ ldr r3, _020228DC ; =0x00020464
+ add r3, r0, r3
+ mov r0, #0xc
+ mul r0, r2
+ add r5, r3, r0
+ ldr r0, [r5, #0x4]
+ add r4, r1, r0
+ ldr r0, [r5, #0x8]
+ cmp r0, #0x0
+ bne _020228D2
+ bl ErrorHandling
+_020228D2:
+ ldr r0, [r5, #0x8]
+ add r0, r4, r0
+ sub r0, #0x14
+ pop {r3-r5, pc}
+ nop
+_020228DC: .word 0x00020464
+
+ thumb_func_start FUN_020228E0
+FUN_020228E0: ; 0x020228E0
+ push {r3-r7, lr}
+ ldr r4, _02022934 ; =0x00020464
+ add r3, r0, #0x0
+ add r3, r3, r4
+ add r5, r2, #0x0
+ mov r4, #0xc
+ mul r4, r5
+ str r0, [sp, #0x0]
+ add r7, r1, #0x0
+ add r6, r3, r4
+ bl FUN_020228B8
+ add r4, r0, #0x0
+ ldr r2, [r6, #0x8]
+ ldr r0, [r4, #0x8]
+ ldr r1, [r6, #0x4]
+ cmp r0, r2
+ beq _02022908
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_02022908:
+ ldr r3, [r4, #0xc]
+ ldr r0, _02022938 ; =0x20060623
+ cmp r3, r0
+ beq _02022914
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_02022914:
+ ldrb r0, [r4, #0x10]
+ cmp r0, r5
+ beq _0202291E
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0202291E:
+ ldr r0, [sp, #0x0]
+ add r1, r7, r1
+ bl FUN_02022898
+ ldrh r1, [r4, #0x12]
+ cmp r1, r0
+ bne _02022930
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02022930:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+_02022934: .word 0x00020464
+_02022938: .word 0x20060623
+
+ thumb_func_start FUN_0202293C
+FUN_0202293C: ; 0x0202293C
+ push {r3-r7, lr}
+ add r7, r2, #0x0
+ add r6, r1, #0x0
+ add r5, r0, #0x0
+ str r3, [sp, #0x0]
+ add r0, r6, #0x0
+ add r1, r7, #0x0
+ add r2, r3, #0x0
+ bl FUN_020228B8
+ add r4, r0, #0x0
+ ldr r2, [sp, #0x0]
+ add r0, r6, #0x0
+ add r1, r7, #0x0
+ bl FUN_020228E0
+ str r0, [r5, #0x0]
+ ldr r0, [r4, #0x0]
+ str r0, [r5, #0x4]
+ ldr r0, [r4, #0x4]
+ str r0, [r5, #0x8]
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02022968
+FUN_02022968: ; 0x02022968
+ push {r3-r7, lr}
+ ldr r3, _020229AC ; =0x00020464
+ add r5, r0, #0x0
+ add r7, r2, #0x0
+ mov r4, #0xc
+ add r3, r5, r3
+ mul r4, r7
+ str r1, [sp, #0x0]
+ add r6, r3, r4
+ bl FUN_020228B8
+ ldr r2, _020229B0 ; =0x00020214
+ add r4, r0, #0x0
+ ldr r0, [r5, r2]
+ ldr r1, [r6, #0x4]
+ add r2, r2, #0x4
+ str r0, [r4, #0x0]
+ lsl r0, r7, #0x2
+ add r0, r5, r0
+ ldr r0, [r0, r2]
+ ldr r2, [sp, #0x0]
+ str r0, [r4, #0x4]
+ ldr r0, [r6, #0x8]
+ add r1, r2, r1
+ str r0, [r4, #0x8]
+ ldr r0, _020229B4 ; =0x20060623
+ str r0, [r4, #0xc]
+ strb r7, [r4, #0x10]
+ ldr r2, [r6, #0x8]
+ add r0, r5, #0x0
+ bl FUN_02022898
+ strh r0, [r4, #0x12]
+ pop {r3-r7, pc}
+ .balign 4
+_020229AC: .word 0x00020464
+_020229B0: .word 0x00020214
+_020229B4: .word 0x20060623
+
+ thumb_func_start FUN_020229B8
+FUN_020229B8: ; 0x020229B8
+ mov r2, #0x0
+ mvn r2, r2
+ cmp r0, r2
+ bne _020229C8
+ cmp r1, #0x0
+ bne _020229C8
+ add r0, r2, #0x0
+ bx lr
+_020229C8:
+ cmp r0, #0x0
+ bne _020229D8
+ mov r2, #0x0
+ mvn r2, r2
+ cmp r1, r2
+ bne _020229D8
+ mov r0, #0x1
+ bx lr
+_020229D8:
+ cmp r0, r1
+ bls _020229E0
+ mov r0, #0x1
+ bx lr
+_020229E0:
+ cmp r0, r1
+ bhs _020229E8
+ mov r0, #0x1
+ b _020229EA
+_020229E8:
+ mov r0, #0x0
+_020229EA:
+ neg r0, r0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020229F0
+FUN_020229F0: ; 0x020229F0
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ add r6, r1, #0x0
+ ldr r0, [r7, #0x4]
+ ldr r1, [r6, #0x4]
+ add r5, r2, #0x0
+ add r4, r3, #0x0
+ bl FUN_020229B8
+ str r0, [sp, #0x0]
+ ldr r0, [r7, #0x8]
+ ldr r1, [r6, #0x8]
+ bl FUN_020229B8
+ ldr r2, [r7, #0x0]
+ cmp r2, #0x0
+ beq _02022A6A
+ ldr r1, [r6, #0x0]
+ cmp r1, #0x0
+ beq _02022A6A
+ ldr r1, [sp, #0x0]
+ cmp r1, #0x0
+ ble _02022A30
+ cmp r0, #0x0
+ bgt _02022A26
+ bl ErrorHandling
+_02022A26:
+ mov r0, #0x0
+ str r0, [r5, #0x0]
+ mov r0, #0x1
+ str r0, [r4, #0x0]
+ b _02022A66
+_02022A30:
+ bge _02022A44
+ cmp r0, #0x0
+ blt _02022A3A
+ bl ErrorHandling
+_02022A3A:
+ mov r0, #0x1
+ str r0, [r5, #0x0]
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+ b _02022A66
+_02022A44:
+ cmp r0, #0x0
+ ble _02022A52
+ mov r0, #0x0
+ str r0, [r5, #0x0]
+ mov r0, #0x1
+ str r0, [r4, #0x0]
+ b _02022A66
+_02022A52:
+ bge _02022A5E
+ mov r0, #0x1
+ str r0, [r5, #0x0]
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+ b _02022A66
+_02022A5E:
+ mov r0, #0x0
+ str r0, [r5, #0x0]
+ mov r0, #0x1
+ str r0, [r4, #0x0]
+_02022A66:
+ mov r0, #0x2
+ pop {r3-r7, pc}
+_02022A6A:
+ cmp r2, #0x0
+ beq _02022A80
+ ldr r0, [r6, #0x0]
+ cmp r0, #0x0
+ bne _02022A80
+ mov r0, #0x0
+ str r0, [r5, #0x0]
+ mov r0, #0x2
+ str r0, [r4, #0x0]
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02022A80:
+ cmp r2, #0x0
+ bne _02022A94
+ ldr r0, [r6, #0x0]
+ cmp r0, #0x0
+ beq _02022A94
+ mov r0, #0x1
+ str r0, [r5, #0x0]
+ mov r1, #0x2
+ str r1, [r4, #0x0]
+ pop {r3-r7, pc}
+_02022A94:
+ mov r0, #0x2
+ str r0, [r5, #0x0]
+ str r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02022AA0
+FUN_02022AA0: ; 0x02022AA0
+ push {r3-r6}
+ mov r4, #0xc
+ add r5, r3, #0x0
+ mul r5, r4
+ add r6, r1, r5
+ ldr r5, [r6, #0x4]
+ ldr r1, _02022AD4 ; =0x00020214
+ str r5, [r0, r1]
+ ldr r6, [r6, #0x8]
+ add r5, r1, #0x4
+ str r6, [r0, r5]
+ ldr r5, [sp, #0x10]
+ mul r4, r5
+ add r2, r2, r4
+ ldr r4, [r2, #0x8]
+ add r2, r1, #0x0
+ add r2, #0x8
+ str r4, [r0, r2]
+ add r2, r1, #0x0
+ add r2, #0xc
+ strb r3, [r0, r2]
+ add r1, #0xd
+ strb r5, [r0, r1]
+ pop {r3-r6}
+ bx lr
+ nop
+_02022AD4: .word 0x00020214
+
+ thumb_func_start FUN_02022AD8
+FUN_02022AD8: ; 0x02022AD8
+ push {r3-r6, lr}
+ sub sp, #0x44
+ mov r1, #0x2
+ add r5, r0, #0x0
+ mov r0, #0x3
+ lsl r1, r1, #0x10
+ bl FUN_020169D8
+ mov r1, #0x2
+ add r6, r0, #0x0
+ mov r0, #0x3
+ lsl r1, r1, #0x10
+ bl FUN_020169D8
+ mov r2, #0x2
+ add r4, r0, #0x0
+ mov r0, #0x0
+ add r1, r6, #0x0
+ lsl r2, r2, #0x10
+ bl FUN_020235EC
+ cmp r0, #0x0
+ add r0, sp, #0x2c
+ beq _02022B20
+ add r1, r5, #0x0
+ add r2, r6, #0x0
+ mov r3, #0x0
+ bl FUN_0202293C
+ add r0, sp, #0x14
+ add r1, r5, #0x0
+ add r2, r6, #0x0
+ mov r3, #0x1
+ bl FUN_0202293C
+ b _02022B2A
+_02022B20:
+ bl FUN_0202288C
+ add r0, sp, #0x14
+ bl FUN_0202288C
+_02022B2A:
+ mov r0, #0x1
+ lsl r0, r0, #0x12
+ add r1, r4, #0x0
+ lsr r2, r0, #0x1
+ bl FUN_020235EC
+ cmp r0, #0x0
+ add r0, sp, #0x38
+ beq _02022B54
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0202293C
+ add r0, sp, #0x20
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ mov r3, #0x1
+ bl FUN_0202293C
+ b _02022B5E
+_02022B54:
+ bl FUN_0202288C
+ add r0, sp, #0x20
+ bl FUN_0202288C
+_02022B5E:
+ add r0, r6, #0x0
+ bl FUN_02016A18
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add r0, sp, #0x2c
+ add r1, sp, #0x38
+ add r2, sp, #0x10
+ add r3, sp, #0x8
+ bl FUN_020229F0
+ add r4, r0, #0x0
+ add r0, sp, #0x14
+ add r1, sp, #0x20
+ add r2, sp, #0xc
+ add r3, sp, #0x4
+ bl FUN_020229F0
+ cmp r4, #0x0
+ bne _02022B92
+ cmp r0, #0x0
+ bne _02022B92
+ add sp, #0x44
+ mov r0, #0x0
+ pop {r3-r6, pc}
+_02022B92:
+ cmp r4, #0x0
+ beq _02022B9A
+ cmp r0, #0x0
+ bne _02022BA0
+_02022B9A:
+ add sp, #0x44
+ mov r0, #0x3
+ pop {r3-r6, pc}
+_02022BA0:
+ cmp r4, #0x2
+ bne _02022BE4
+ cmp r0, #0x2
+ bne _02022BE4
+ ldr r3, [sp, #0x10]
+ ldr r1, [sp, #0xc]
+ mov r2, #0xc
+ add r4, r3, #0x0
+ mul r4, r2
+ add r0, sp, #0x30
+ ldr r0, [r0, r4]
+ add r4, r1, #0x0
+ mul r4, r2
+ add r2, sp, #0x18
+ ldr r2, [r2, r4]
+ cmp r0, r2
+ str r1, [sp, #0x0]
+ add r1, sp, #0x2c
+ bne _02022BD4
+ add r0, r5, #0x0
+ add r2, sp, #0x14
+ bl FUN_02022AA0
+ add sp, #0x44
+ mov r0, #0x1
+ pop {r3-r6, pc}
+_02022BD4:
+ ldr r3, [sp, #0x8]
+ add r0, r5, #0x0
+ add r2, sp, #0x14
+ bl FUN_02022AA0
+ add sp, #0x44
+ mov r0, #0x2
+ pop {r3-r6, pc}
+_02022BE4:
+ cmp r4, #0x1
+ bne _02022C3A
+ cmp r0, #0x2
+ bne _02022C3A
+ ldr r3, [sp, #0x10]
+ ldr r0, [sp, #0xc]
+ mov r4, #0xc
+ add r2, r3, #0x0
+ add r6, r0, #0x0
+ mul r2, r4
+ add r1, sp, #0x30
+ ldr r2, [r1, r2]
+ mul r6, r4
+ add r1, sp, #0x18
+ ldr r6, [r1, r6]
+ cmp r2, r6
+ bne _02022C18
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ add r1, sp, #0x2c
+ add r2, sp, #0x14
+ bl FUN_02022AA0
+ add sp, #0x44
+ mov r0, #0x2
+ pop {r3-r6, pc}
+_02022C18:
+ ldr r0, [sp, #0x4]
+ mul r4, r0
+ ldr r1, [r1, r4]
+ cmp r2, r1
+ bne _02022C34
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ add r1, sp, #0x2c
+ add r2, sp, #0x14
+ bl FUN_02022AA0
+ add sp, #0x44
+ mov r0, #0x2
+ pop {r3-r6, pc}
+_02022C34:
+ add sp, #0x44
+ mov r0, #0x3
+ pop {r3-r6, pc}
+_02022C3A:
+ cmp r4, #0x2
+ bne _02022C7E
+ cmp r0, #0x1
+ bne _02022C7E
+ ldr r3, [sp, #0x10]
+ ldr r1, [sp, #0xc]
+ mov r2, #0xc
+ add r4, r3, #0x0
+ mul r4, r2
+ add r0, sp, #0x30
+ ldr r0, [r0, r4]
+ add r4, r1, #0x0
+ mul r4, r2
+ add r2, sp, #0x18
+ ldr r2, [r2, r4]
+ cmp r0, r2
+ str r1, [sp, #0x0]
+ add r1, sp, #0x2c
+ bne _02022C6E
+ add r0, r5, #0x0
+ add r2, sp, #0x14
+ bl FUN_02022AA0
+ add sp, #0x44
+ mov r0, #0x1
+ pop {r3-r6, pc}
+_02022C6E:
+ ldr r3, [sp, #0x8]
+ add r0, r5, #0x0
+ add r2, sp, #0x14
+ bl FUN_02022AA0
+ add sp, #0x44
+ mov r0, #0x2
+ pop {r3-r6, pc}
+_02022C7E:
+ cmp r4, #0x1
+ bne _02022CBC
+ cmp r0, #0x1
+ bne _02022CBC
+ ldr r0, [sp, #0xc]
+ ldr r2, [sp, #0x10]
+ cmp r2, r0
+ bne _02022CBC
+ add r3, r2, #0x0
+ mov r1, #0xc
+ mul r3, r1
+ add r2, sp, #0x30
+ mul r1, r0
+ add r0, sp, #0x18
+ ldr r2, [r2, r3]
+ ldr r0, [r0, r1]
+ cmp r2, r0
+ beq _02022CA6
+ bl ErrorHandling
+_02022CA6:
+ ldr r0, [sp, #0xc]
+ add r1, sp, #0x2c
+ str r0, [sp, #0x0]
+ ldr r3, [sp, #0x10]
+ add r0, r5, #0x0
+ add r2, sp, #0x14
+ bl FUN_02022AA0
+ add sp, #0x44
+ mov r0, #0x1
+ pop {r3-r6, pc}
+_02022CBC:
+ ldr r1, [sp, #0x10]
+ mov r0, #0xc
+ add r2, r1, #0x0
+ mul r2, r0
+ add r1, sp, #0x30
+ ldr r3, [r1, r2]
+ ldr r1, [sp, #0xc]
+ add r2, r1, #0x0
+ mul r2, r0
+ add r0, sp, #0x18
+ ldr r0, [r0, r2]
+ cmp r3, r0
+ beq _02022CDA
+ bl ErrorHandling
+_02022CDA:
+ ldr r0, [sp, #0xc]
+ add r1, sp, #0x2c
+ str r0, [sp, #0x0]
+ ldr r3, [sp, #0x10]
+ add r0, r5, #0x0
+ add r2, sp, #0x14
+ bl FUN_02022AA0
+ mov r0, #0x2
+ add sp, #0x44
+ pop {r3-r6, pc}
+
+ thumb_func_start FUN_02022CF0
+FUN_02022CF0: ; 0x02022CF0
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ add r4, r2, #0x0
+ bl FUN_020228A4
+ ldr r1, [r5, #0x4]
+ ldr r2, [r5, #0x8]
+ add r1, r4, r1
+ bl FUN_020235EC
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02022D08
+FUN_02022D08: ; 0x02022D08
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldr r0, _02022D4C ; =0x00020464
+ mov r7, #0x85
+ mov r4, #0x0
+ add r6, r5, r0
+ lsl r7, r7, #0x2
+_02022D16:
+ ldr r0, _02022D50 ; =0x00020220
+ add r1, r5, r4
+ ldrb r0, [r1, r0]
+ add r1, r6, #0x0
+ add r2, r5, r7
+ bl FUN_02022CF0
+ cmp r0, #0x0
+ bne _02022D2C
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_02022D2C:
+ add r0, r5, #0x0
+ add r1, r5, r7
+ add r2, r4, #0x0
+ bl FUN_020228E0
+ cmp r0, #0x0
+ bne _02022D3E
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_02022D3E:
+ add r4, r4, #0x1
+ add r6, #0xc
+ cmp r4, #0x2
+ blt _02022D16
+ mov r0, #0x1
+ pop {r3-r7, pc}
+ nop
+_02022D4C: .word 0x00020464
+_02022D50: .word 0x00020220
+
+ thumb_func_start FUN_02022D54
+FUN_02022D54: ; 0x02022D54
+ push {r4-r6, lr}
+ add r3, r1, #0x0
+ ldr r1, _02022D90 ; =0x00020464
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ add r2, r5, r1
+ mov r1, #0xc
+ mul r1, r3
+ add r4, r2, r1
+ mov r1, #0x85
+ lsl r1, r1, #0x2
+ add r1, r5, r1
+ add r2, r3, #0x0
+ bl FUN_02022968
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ bl FUN_020228A4
+ mov r1, #0x85
+ lsl r1, r1, #0x2
+ add r2, r5, r1
+ ldr r1, [r4, #0x4]
+ add r1, r2, r1
+ ldr r2, [r4, #0x8]
+ sub r2, #0x14
+ bl FUN_02023668
+ pop {r4-r6, pc}
+ nop
+_02022D90: .word 0x00020464
+
+ thumb_func_start FUN_02022D94
+FUN_02022D94: ; 0x02022D94
+ push {r4-r6, lr}
+ add r6, r0, #0x0
+ ldr r0, _02022DC4 ; =0x00020464
+ add r3, r6, r0
+ mov r0, #0xc
+ mul r0, r1
+ add r4, r3, r0
+ add r0, r2, #0x0
+ add r1, r4, #0x0
+ ldr r5, [r4, #0x8]
+ bl FUN_020228A4
+ mov r1, #0x2
+ lsl r1, r1, #0x8
+ add r2, r6, r1
+ ldr r1, [r4, #0x4]
+ add r0, r5, r0
+ add r1, r2, r1
+ sub r0, #0x14
+ add r1, r1, r5
+ mov r2, #0x14
+ bl FUN_02023668
+ pop {r4-r6, pc}
+ .balign 4
+_02022DC4: .word 0x00020464
+
+ thumb_func_start FUN_02022DC8
+FUN_02022DC8: ; 0x02022DC8
+ push {r4-r6, lr}
+ add r6, r0, #0x0
+ ldr r0, _02022DF8 ; =0x00020464
+ add r3, r6, r0
+ mov r0, #0xc
+ mul r0, r1
+ add r4, r3, r0
+ add r0, r2, #0x0
+ add r1, r4, #0x0
+ ldr r5, [r4, #0x8]
+ bl FUN_020228A4
+ mov r1, #0x82
+ lsl r1, r1, #0x2
+ add r2, r6, r1
+ ldr r1, [r4, #0x4]
+ add r0, r5, r0
+ add r1, r2, r1
+ sub r0, #0xc
+ add r1, r1, r5
+ mov r2, #0x8
+ bl FUN_02023668
+ pop {r4-r6, pc}
+ .balign 4
+_02022DF8: .word 0x00020464
+
+ thumb_func_start FUN_02022DFC
+FUN_02022DFC: ; 0x02022DFC
+ push {r3-r7, lr}
+ ldr r7, _02022E70 ; =0x00020218
+ add r4, r1, #0x0
+ mov r12, r2
+ mov r1, #0x0
+ add r2, r0, #0x0
+ add r3, r4, #0x0
+ add r6, r7, #0x0
+_02022E0C:
+ ldr r5, _02022E70 ; =0x00020218
+ add r1, r1, #0x1
+ ldr r5, [r2, r5]
+ str r5, [r3, #0x1c]
+ ldr r5, [r2, r7]
+ add r3, r3, #0x4
+ add r5, r5, #0x1
+ str r5, [r2, r6]
+ add r2, r2, #0x4
+ cmp r1, #0x2
+ blt _02022E0C
+ mov r1, #0x0
+ str r1, [r4, #0x14]
+ mov r2, r12
+ str r1, [r4, #0x0]
+ cmp r2, #0x2
+ bne _02022E58
+ ldr r2, [r0, #0xc]
+ cmp r2, #0x0
+ beq _02022E4E
+ mov r2, #0x1
+ str r2, [r4, #0x0]
+ ldr r2, _02022E74 ; =0x00020214
+ ldr r3, [r0, r2]
+ str r3, [r4, #0x18]
+ ldr r3, [r0, r2]
+ add r3, r3, #0x1
+ str r3, [r0, r2]
+ str r1, [r4, #0x4]
+ str r1, [r4, #0x8]
+ mov r0, #0x2
+ str r0, [r4, #0xc]
+ b _02022E66
+_02022E4E:
+ str r1, [r4, #0x4]
+ str r1, [r4, #0x8]
+ mov r0, #0x1
+ str r0, [r4, #0xc]
+ b _02022E66
+_02022E58:
+ mov r0, r12
+ str r0, [r4, #0x4]
+ mov r0, r12
+ str r0, [r4, #0x8]
+ mov r0, r12
+ add r0, r0, #0x1
+ str r0, [r4, #0xc]
+_02022E66:
+ mov r0, #0x1
+ bl FUN_02016444
+ pop {r3-r7, pc}
+ nop
+_02022E70: .word 0x00020218
+_02022E74: .word 0x00020214
+
+ thumb_func_start FUN_02022E78
+FUN_02022E78: ; 0x02022E78
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x14]
+ cmp r0, #0x5
+ bhi _02022F78
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02022E90: ; jump table (using 16-bit offset)
+ .short _02022E9C - _02022E90 - 2; case 0
+ .short _02022EC0 - _02022E90 - 2; case 1
+ .short _02022EDC - _02022E90 - 2; case 2
+ .short _02022F00 - _02022E90 - 2; case 3
+ .short _02022F2A - _02022E90 - 2; case 4
+ .short _02022F4E - _02022E90 - 2; case 5
+_02022E9C:
+ ldr r1, [r4, #0x8]
+ ldr r0, _02022F7C ; =0x00020220
+ add r2, r5, r1
+ ldrb r0, [r2, r0]
+ cmp r0, #0x0
+ bne _02022EAC
+ mov r2, #0x1
+ b _02022EAE
+_02022EAC:
+ mov r2, #0x0
+_02022EAE:
+ lsl r2, r2, #0x18
+ add r0, r5, #0x0
+ lsr r2, r2, #0x18
+ bl FUN_02022D54
+ str r0, [r4, #0x10]
+ ldr r0, [r4, #0x14]
+ add r0, r0, #0x1
+ str r0, [r4, #0x14]
+_02022EC0:
+ ldr r0, [r4, #0x10]
+ add r1, sp, #0x0
+ bl FUN_020236E4
+ cmp r0, #0x0
+ beq _02022F78
+ ldr r0, [sp, #0x0]
+ cmp r0, #0x0
+ bne _02022ED6
+ mov r0, #0x3
+ pop {r3-r5, pc}
+_02022ED6:
+ ldr r0, [r4, #0x14]
+ add r0, r0, #0x1
+ str r0, [r4, #0x14]
+_02022EDC:
+ ldr r1, [r4, #0x8]
+ ldr r0, _02022F7C ; =0x00020220
+ add r2, r5, r1
+ ldrb r0, [r2, r0]
+ cmp r0, #0x0
+ bne _02022EEC
+ mov r2, #0x1
+ b _02022EEE
+_02022EEC:
+ mov r2, #0x0
+_02022EEE:
+ lsl r2, r2, #0x18
+ add r0, r5, #0x0
+ lsr r2, r2, #0x18
+ bl FUN_02022DC8
+ str r0, [r4, #0x10]
+ ldr r0, [r4, #0x14]
+ add r0, r0, #0x1
+ str r0, [r4, #0x14]
+_02022F00:
+ ldr r0, [r4, #0x10]
+ add r1, sp, #0x0
+ bl FUN_020236E4
+ cmp r0, #0x0
+ beq _02022F78
+ ldr r0, [sp, #0x0]
+ cmp r0, #0x0
+ bne _02022F16
+ mov r0, #0x3
+ pop {r3-r5, pc}
+_02022F16:
+ ldr r0, [r4, #0x14]
+ add r0, r0, #0x1
+ str r0, [r4, #0x14]
+ ldr r0, [r4, #0x8]
+ add r1, r0, #0x1
+ ldr r0, [r4, #0xc]
+ cmp r1, r0
+ bne _02022F2A
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_02022F2A:
+ ldr r1, [r4, #0x8]
+ ldr r0, _02022F7C ; =0x00020220
+ add r2, r5, r1
+ ldrb r0, [r2, r0]
+ cmp r0, #0x0
+ bne _02022F3A
+ mov r2, #0x1
+ b _02022F3C
+_02022F3A:
+ mov r2, #0x0
+_02022F3C:
+ lsl r2, r2, #0x18
+ add r0, r5, #0x0
+ lsr r2, r2, #0x18
+ bl FUN_02022D94
+ str r0, [r4, #0x10]
+ ldr r0, [r4, #0x14]
+ add r0, r0, #0x1
+ str r0, [r4, #0x14]
+_02022F4E:
+ ldr r0, [r4, #0x10]
+ add r1, sp, #0x0
+ bl FUN_020236E4
+ cmp r0, #0x0
+ beq _02022F78
+ ldr r0, [sp, #0x0]
+ cmp r0, #0x0
+ bne _02022F64
+ mov r0, #0x3
+ pop {r3-r5, pc}
+_02022F64:
+ ldr r0, [r4, #0x8]
+ add r1, r0, #0x1
+ str r1, [r4, #0x8]
+ ldr r0, [r4, #0xc]
+ cmp r1, r0
+ bne _02022F74
+ mov r0, #0x2
+ pop {r3-r5, pc}
+_02022F74:
+ mov r0, #0x0
+ str r0, [r4, #0x14]
+_02022F78:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+_02022F7C: .word 0x00020220
+
+ thumb_func_start FUN_02022F80
+FUN_02022F80: ; 0x02022F80
+ push {r3-r7, lr}
+ add r3, r0, #0x0
+ add r0, r1, #0x0
+ cmp r2, #0x3
+ bne _02022FAA
+ ldr r1, [r0, #0x0]
+ cmp r1, #0x0
+ beq _02022F96
+ ldr r2, [r0, #0x18]
+ ldr r1, _02022FE4 ; =0x00020214
+ str r2, [r3, r1]
+_02022F96:
+ ldr r1, _02022FE8 ; =0x00020218
+ mov r4, #0x0
+_02022F9A:
+ ldr r2, [r0, #0x1c]
+ add r4, r4, #0x1
+ str r2, [r3, r1]
+ add r0, r0, #0x4
+ add r3, r3, #0x4
+ cmp r4, #0x2
+ blt _02022F9A
+ b _02022FDA
+_02022FAA:
+ ldr r6, [r0, #0x4]
+ ldr r1, [r0, #0xc]
+ cmp r6, r1
+ bge _02022FD0
+ ldr r1, _02022FEC ; =0x00020220
+ mov r7, #0x1
+ add r2, r1, #0x0
+_02022FB8:
+ add r5, r3, r6
+ ldrb r4, [r5, r2]
+ cmp r4, #0x0
+ bne _02022FC4
+ add r4, r7, #0x0
+ b _02022FC6
+_02022FC4:
+ mov r4, #0x0
+_02022FC6:
+ strb r4, [r5, r1]
+ ldr r4, [r0, #0xc]
+ add r6, r6, #0x1
+ cmp r6, r4
+ blt _02022FB8
+_02022FD0:
+ mov r0, #0x1
+ str r0, [r3, #0x4]
+ mov r0, #0x0
+ str r0, [r3, #0x8]
+ str r0, [r3, #0xc]
+_02022FDA:
+ mov r0, #0x1
+ bl FUN_02016454
+ pop {r3-r7, pc}
+ nop
+_02022FE4: .word 0x00020214
+_02022FE8: .word 0x00020218
+_02022FEC: .word 0x00020220
+
+ thumb_func_start FUN_02022FF0
+FUN_02022FF0: ; 0x02022FF0
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ ldr r1, [r4, #0x0]
+ cmp r1, #0x0
+ beq _02023000
+ ldr r2, [r4, #0x18]
+ ldr r1, _0202303C ; =0x00020214
+ str r2, [r0, r1]
+_02023000:
+ ldr r1, _02023040 ; =0x00020218
+ mov r3, #0x0
+ add r5, r4, #0x0
+_02023006:
+ ldr r2, [r5, #0x1c]
+ add r3, r3, #0x1
+ str r2, [r0, r1]
+ add r5, r5, #0x4
+ add r0, r0, #0x4
+ cmp r3, #0x2
+ blt _02023006
+ blx FUN_020D6DAC
+ cmp r0, #0x0
+ bne _02023034
+ blx FUN_020D6D7C
+ ldr r0, [r4, #0x10]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ blx FUN_020D66A0
+ ldr r0, [r4, #0x10]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ blx OS_ReleaseLockID
+_02023034:
+ mov r0, #0x1
+ bl FUN_02016454
+ pop {r3-r5, pc}
+ .balign 4
+_0202303C: .word 0x00020214
+_02023040: .word 0x00020218
+
+ thumb_func_start FUN_02023044
+FUN_02023044: ; 0x02023044
+ push {r3-r6, lr}
+ sub sp, #0x24
+ add r1, sp, #0x0
+ mov r2, #0x2
+ add r5, r0, #0x0
+ bl FUN_02022DFC
+ add r6, sp, #0x0
+_02023054:
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02022E78
+ add r4, r0, #0x0
+ beq _02023054
+ cmp r4, #0x1
+ beq _02023054
+ add r0, r5, #0x0
+ add r1, sp, #0x0
+ add r2, r4, #0x0
+ bl FUN_02022F80
+ add r0, r4, #0x0
+ add sp, #0x24
+ pop {r3-r6, pc}
+
+ thumb_func_start FUN_02023074
+FUN_02023074: ; 0x02023074
+ push {r4-r5, lr}
+ sub sp, #0x14
+ add r4, r2, #0x0
+ ldr r2, _020230A8 ; =0x00020464
+ add r2, r0, r2
+ mov r0, #0xc
+ mul r0, r1
+ add r5, r2, r0
+ add r0, sp, #0x0
+ mov r1, #0xff
+ mov r2, #0x14
+ blx MI_CpuFill8
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ bl FUN_020228A4
+ ldr r1, [r5, #0x8]
+ mov r2, #0x14
+ add r0, r1, r0
+ sub r0, #0x14
+ add r1, sp, #0x0
+ bl FUN_020235D0
+ add sp, #0x14
+ pop {r4-r5, pc}
+ .balign 4
+_020230A8: .word 0x00020464
+
+ thumb_func_start FUN_020230AC
+FUN_020230AC: ; 0x020230AC
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, _020230DC ; =0x020EE6DC
+ ldr r4, _020230E0 ; =0x020EE700
+ ldr r0, [r0, #0x0]
+ cmp r5, r0
+ blt _020230BE
+ bl ErrorHandling
+_020230BE:
+ lsl r0, r5, #0x4
+ add r0, r4, r0
+ ldr r0, [r0, #0x8]
+ blx r0
+ lsr r3, r0, #0x1f
+ lsl r2, r0, #0x1e
+ sub r2, r2, r3
+ mov r1, #0x1e
+ ror r2, r1
+ add r2, r3, r2
+ mov r1, #0x4
+ sub r1, r1, r2
+ add r0, r0, r1
+ pop {r3-r5, pc}
+ nop
+_020230DC: .word 0x020EE6DC
+_020230E0: .word 0x020EE700
+
+ thumb_func_start FUN_020230E4
+FUN_020230E4: ; 0x020230E4
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ ldr r0, _02023158 ; =0x020EE6DC
+ ldr r4, _0202315C ; =0x020EE700
+ ldr r0, [r0, #0x0]
+ mov r7, #0x0
+ str r0, [sp, #0x0]
+ cmp r0, #0x24
+ beq _020230FC
+ bl ErrorHandling
+_020230FC:
+ ldr r0, [sp, #0x0]
+ mov r6, #0x0
+ cmp r0, #0x0
+ ble _02023148
+ sub r0, r0, #0x1
+ str r0, [sp, #0x4]
+_02023108:
+ ldr r0, [r4, #0x0]
+ cmp r6, r0
+ beq _02023112
+ bl ErrorHandling
+_02023112:
+ ldr r0, [r4, #0x0]
+ str r0, [r5, #0x0]
+ add r0, r6, #0x0
+ bl FUN_020230AC
+ str r0, [r5, #0x4]
+ str r7, [r5, #0x8]
+ mov r0, #0x0
+ strh r0, [r5, #0xc]
+ ldr r0, [r4, #0x4]
+ strh r0, [r5, #0xe]
+ ldr r0, [r5, #0x4]
+ add r7, r7, r0
+ ldr r0, [sp, #0x4]
+ cmp r6, r0
+ beq _0202313A
+ ldr r1, [r4, #0x4]
+ ldr r0, [r4, #0x14]
+ cmp r1, r0
+ beq _0202313C
+_0202313A:
+ add r7, #0x14
+_0202313C:
+ ldr r0, [sp, #0x0]
+ add r6, r6, #0x1
+ add r4, #0x10
+ add r5, #0x10
+ cmp r6, r0
+ blt _02023108
+_02023148:
+ mov r0, #0x2
+ lsl r0, r0, #0x10
+ cmp r7, r0
+ ble _02023154
+ bl ErrorHandling
+_02023154:
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+_02023158: .word 0x020EE6DC
+_0202315C: .word 0x020EE700
+
+ thumb_func_start FUN_02023160
+FUN_02023160: ; 0x02023160
+ push {r3-r7, lr}
+ sub sp, #0x8
+ str r0, [sp, #0x0]
+ mov r0, #0x0
+ str r0, [sp, #0x4]
+ mov r12, r0
+ add r3, r0, #0x0
+ add r6, r0, #0x0
+ ldr r0, _020231EC ; =0x020EE6DC
+ ldr r4, [sp, #0x0]
+ ldr r7, [r0, #0x0]
+ add r5, r1, #0x0
+_02023178:
+ add r2, r4, #0x0
+ strb r6, [r4, #0x0]
+ mov r0, #0x0
+ str r0, [r4, #0x8]
+ add r2, #0x8
+ b _02023190
+_02023184:
+ ldr r0, [r5, #0x4]
+ ldr r1, [r2, #0x0]
+ add r5, #0x10
+ add r0, r1, r0
+ str r0, [r2, #0x0]
+ add r3, r3, #0x1
+_02023190:
+ ldrh r0, [r5, #0xe]
+ cmp r6, r0
+ bne _0202319A
+ cmp r3, r7
+ blt _02023184
+_0202319A:
+ ldr r0, [r4, #0x8]
+ add r6, r6, #0x1
+ add r0, #0x14
+ str r0, [r4, #0x8]
+ ldr r0, [sp, #0x4]
+ strb r0, [r4, #0x1]
+ mov r0, r12
+ str r0, [r4, #0x4]
+ ldr r1, [r4, #0x8]
+ ldr r0, _020231F0 ; =0x00000FFF
+ add r0, r1, r0
+ lsr r0, r0, #0xc
+ strb r0, [r4, #0x2]
+ ldrb r1, [r4, #0x2]
+ ldr r0, [sp, #0x4]
+ add r0, r0, r1
+ str r0, [sp, #0x4]
+ ldr r0, [r4, #0x8]
+ mov r1, r12
+ add r0, r1, r0
+ add r4, #0xc
+ mov r12, r0
+ cmp r6, #0x2
+ blt _02023178
+ ldr r0, [sp, #0x0]
+ ldrb r1, [r0, #0xd]
+ ldrb r0, [r0, #0xe]
+ add r1, r1, r0
+ ldr r0, [sp, #0x4]
+ cmp r0, r1
+ beq _020231DC
+ bl ErrorHandling
+_020231DC:
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x20
+ ble _020231E6
+ bl ErrorHandling
+_020231E6:
+ add sp, #0x8
+ pop {r3-r7, pc}
+ nop
+_020231EC: .word 0x020EE6DC
+_020231F0: .word 0x00000FFF
+
+ thumb_func_start FUN_020231F4
+FUN_020231F4: ; 0x020231F4
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r6, r0, #0x0
+ mov r2, #0x2
+ add r5, r1, #0x0
+ mov r0, #0x0
+ add r1, r6, #0x0
+ lsl r2, r2, #0x10
+ ldr r4, _02023240 ; =0x020EE700
+ blx MIi_CpuClearFast
+ ldr r0, _02023244 ; =0x020EE6DC
+ mov r7, #0x0
+ ldr r0, [r0, #0x0]
+ str r0, [sp, #0x0]
+ cmp r0, #0x0
+ ble _0202323A
+_02023216:
+ ldr r0, [r5, #0x8]
+ ldr r2, [r5, #0x4]
+ str r0, [sp, #0x4]
+ ldr r1, [sp, #0x4]
+ mov r0, #0x0
+ add r1, r6, r1
+ blx MIi_CpuClearFast
+ ldr r0, [sp, #0x4]
+ ldr r1, [r4, #0xc]
+ add r0, r6, r0
+ blx r1
+ ldr r0, [sp, #0x0]
+ add r7, r7, #0x1
+ add r5, #0x10
+ add r4, #0x10
+ cmp r7, r0
+ blt _02023216
+_0202323A:
+ add sp, #0x8
+ pop {r3-r7, pc}
+ nop
+_02023240: .word 0x020EE700
+_02023244: .word 0x020EE6DC
+
+ thumb_func_start FUN_02023248
+FUN_02023248: ; 0x02023248
+ push {r3-r5, lr}
+ ldr r5, _0202326C ; =0x20060623
+ add r4, r1, r3
+ str r5, [r1, r3]
+ ldr r5, _02023270 ; =0x000204A4
+ ldr r5, [r0, r5]
+ add r0, #0x14
+ add r5, r5, #0x1
+ str r5, [r4, #0x4]
+ str r3, [r4, #0x8]
+ add r3, #0xe
+ strh r2, [r4, #0xc]
+ add r2, r3, #0x0
+ blx FUN_020DDD60
+ strh r0, [r4, #0xe]
+ pop {r3-r5, pc}
+ nop
+_0202326C: .word 0x20060623
+_02023270: .word 0x000204A4
+
+ thumb_func_start FUN_02023274
+FUN_02023274: ; 0x02023274
+ push {r4-r6, lr}
+ ldr r6, [r1, r3]
+ ldr r5, _020232B0 ; =0x20060623
+ add r4, r1, r3
+ cmp r6, r5
+ beq _02023284
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_02023284:
+ ldr r5, [r4, #0x8]
+ cmp r5, r3
+ beq _0202328E
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_0202328E:
+ ldrh r5, [r4, #0xc]
+ cmp r5, r2
+ beq _02023298
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_02023298:
+ add r3, #0xe
+ add r0, #0x14
+ add r2, r3, #0x0
+ blx FUN_020DDD60
+ ldrh r1, [r4, #0xe]
+ cmp r1, r0
+ bne _020232AC
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_020232AC:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+_020232B0: .word 0x20060623
+
+ thumb_func_start FUN_020232B4
+FUN_020232B4: ; 0x020232B4
+ add r0, r0, r1
+ ldr r0, [r0, #0x4]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020232BC
+FUN_020232BC: ; 0x020232BC
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r7, r0, #0x0
+ mov r0, #0x1
+ add r5, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_02016444
+ ldr r0, _020233FC ; =0x020EE6D8
+ ldr r0, [r0, #0x0]
+ cmp r5, r0
+ blt _020232D8
+ bl ErrorHandling
+_020232D8:
+ ldr r1, _02023400 ; =0x020EE6E0
+ lsl r0, r5, #0x4
+ add r4, r1, r0
+ ldr r0, [r1, r0]
+ cmp r0, r5
+ beq _020232E8
+ bl ErrorHandling
+_020232E8:
+ ldr r0, [r4, #0x8]
+ blx r0
+ str r0, [sp, #0x4]
+ add r0, #0x10
+ str r0, [sp, #0x4]
+ ldr r0, _02023404 ; =0x000204A0
+ ldr r0, [r7, r0]
+ cmp r0, #0x1
+ ldr r0, [r4, #0x8]
+ bne _0202336E
+ blx r0
+ add r3, r0, #0x0
+ add r0, r7, #0x0
+ add r1, r6, #0x0
+ add r2, r5, #0x0
+ bl FUN_02023248
+ ldr r0, [r4, #0x4]
+ ldr r2, [sp, #0x4]
+ lsl r0, r0, #0xc
+ add r1, r6, #0x0
+ bl FUN_020235D0
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x8]
+ blx r0
+ add r3, r0, #0x0
+ add r0, r7, #0x0
+ add r1, r6, #0x0
+ add r2, r5, #0x0
+ bl FUN_02023274
+ cmp r0, #0x1
+ beq _02023330
+ bl ErrorHandling
+_02023330:
+ ldr r0, [r4, #0x8]
+ blx r0
+ add r3, r0, #0x0
+ add r0, r7, #0x0
+ add r1, r6, #0x0
+ add r2, r5, #0x0
+ bl FUN_02023248
+ ldr r0, [r4, #0x4]
+ ldr r2, [sp, #0x4]
+ add r0, #0x40
+ lsl r0, r0, #0xc
+ add r1, r6, #0x0
+ bl FUN_020235D0
+ ldr r1, [sp, #0x0]
+ orr r0, r1
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x8]
+ blx r0
+ add r3, r0, #0x0
+ add r0, r7, #0x0
+ add r1, r6, #0x0
+ add r2, r5, #0x0
+ bl FUN_02023274
+ cmp r0, #0x1
+ beq _020233DE
+ bl ErrorHandling
+ b _020233DE
+_0202336E:
+ blx r0
+ add r3, r0, #0x0
+ add r0, r7, #0x0
+ add r1, r6, #0x0
+ add r2, r5, #0x0
+ bl FUN_02023248
+ ldr r0, [r4, #0x4]
+ ldr r2, [sp, #0x4]
+ add r0, #0x40
+ lsl r0, r0, #0xc
+ add r1, r6, #0x0
+ bl FUN_020235D0
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x8]
+ blx r0
+ add r3, r0, #0x0
+ add r0, r7, #0x0
+ add r1, r6, #0x0
+ add r2, r5, #0x0
+ bl FUN_02023274
+ cmp r0, #0x1
+ beq _020233A4
+ bl ErrorHandling
+_020233A4:
+ ldr r0, [r4, #0x8]
+ blx r0
+ add r3, r0, #0x0
+ add r0, r7, #0x0
+ add r1, r6, #0x0
+ add r2, r5, #0x0
+ bl FUN_02023248
+ ldr r0, [r4, #0x4]
+ ldr r2, [sp, #0x4]
+ lsl r0, r0, #0xc
+ add r1, r6, #0x0
+ bl FUN_020235D0
+ ldr r1, [sp, #0x0]
+ orr r0, r1
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x8]
+ blx r0
+ add r3, r0, #0x0
+ add r0, r7, #0x0
+ add r1, r6, #0x0
+ add r2, r5, #0x0
+ bl FUN_02023274
+ cmp r0, #0x1
+ beq _020233DE
+ bl ErrorHandling
+_020233DE:
+ ldr r0, [sp, #0x0]
+ cmp r0, #0x1
+ bne _020233F0
+ mov r0, #0x1
+ bl FUN_02016454
+ add sp, #0x8
+ mov r0, #0x2
+ pop {r3-r7, pc}
+_020233F0:
+ mov r0, #0x1
+ bl FUN_02016454
+ mov r0, #0x3
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+_020233FC: .word 0x020EE6D8
+_02023400: .word 0x020EE6E0
+_02023404: .word 0x000204A0
+
+ thumb_func_start FUN_02023408
+FUN_02023408: ; 0x02023408
+ push {r4-r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0x0
+ ldr r0, _02023564 ; =0x020EE6D8
+ add r7, r2, #0x0
+ ldr r0, [r0, #0x0]
+ add r6, r1, #0x0
+ str r3, [sp, #0x0]
+ cmp r7, r0
+ blt _02023420
+ bl ErrorHandling
+_02023420:
+ ldr r1, _02023568 ; =0x020EE6E0
+ lsl r0, r7, #0x4
+ add r4, r1, r0
+ ldr r0, [r1, r0]
+ cmp r0, r7
+ beq _02023430
+ bl ErrorHandling
+_02023430:
+ ldr r0, [r4, #0x8]
+ blx r0
+ str r0, [sp, #0x10]
+ add r0, #0x10
+ str r0, [sp, #0x10]
+ ldr r1, [sp, #0x10]
+ add r0, r6, #0x0
+ bl FUN_02016998
+ add r6, r0, #0x0
+ ldr r0, [r4, #0x4]
+ ldr r2, [sp, #0x10]
+ lsl r0, r0, #0xc
+ add r1, r6, #0x0
+ bl FUN_020235EC
+ ldr r0, [r4, #0x8]
+ blx r0
+ add r3, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r7, #0x0
+ bl FUN_02023274
+ str r0, [sp, #0xc]
+ ldr r0, [r4, #0x8]
+ blx r0
+ add r1, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_020232B4
+ str r0, [sp, #0x8]
+ ldr r0, [r4, #0x4]
+ ldr r2, [sp, #0x10]
+ add r0, #0x40
+ lsl r0, r0, #0xc
+ add r1, r6, #0x0
+ bl FUN_020235EC
+ ldr r0, [r4, #0x8]
+ blx r0
+ add r3, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r7, #0x0
+ bl FUN_02023274
+ add r7, r0, #0x0
+ ldr r0, [r4, #0x8]
+ blx r0
+ add r1, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_020232B4
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x0]
+ mov r1, #0x1
+ str r1, [r0, #0x0]
+ ldr r0, [sp, #0xc]
+ cmp r0, #0x1
+ bne _020234CC
+ cmp r7, #0x0
+ bne _020234CC
+ ldr r0, _0202356C ; =0x000204A0
+ mov r1, #0x0
+ str r1, [r5, r0]
+ add r1, r0, #0x4
+ ldr r0, [sp, #0x8]
+ ldr r2, [sp, #0x10]
+ str r0, [r5, r1]
+ ldr r0, [r4, #0x4]
+ add r1, r6, #0x0
+ lsl r0, r0, #0xc
+ bl FUN_020235EC
+ add sp, #0x14
+ add r0, r6, #0x0
+ pop {r4-r7, pc}
+_020234CC:
+ ldr r0, [sp, #0xc]
+ cmp r0, #0x0
+ bne _020234F6
+ cmp r7, #0x1
+ bne _020234F6
+ ldr r0, _0202356C ; =0x000204A0
+ mov r1, #0x1
+ str r1, [r5, r0]
+ add r1, r0, #0x4
+ ldr r0, [sp, #0x4]
+ ldr r2, [sp, #0x10]
+ str r0, [r5, r1]
+ ldr r0, [r4, #0x4]
+ add r1, r6, #0x0
+ add r0, #0x40
+ lsl r0, r0, #0xc
+ bl FUN_020235EC
+ add sp, #0x14
+ add r0, r6, #0x0
+ pop {r4-r7, pc}
+_020234F6:
+ ldr r0, [sp, #0xc]
+ cmp r0, #0x1
+ bne _0202354C
+ cmp r7, #0x1
+ bne _0202354C
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0x4]
+ bl FUN_020229B8
+ mov r1, #0x0
+ mvn r1, r1
+ cmp r0, r1
+ ldr r0, _0202356C ; =0x000204A0
+ beq _0202352E
+ mov r1, #0x0
+ str r1, [r5, r0]
+ add r1, r0, #0x4
+ ldr r0, [sp, #0x8]
+ ldr r2, [sp, #0x10]
+ str r0, [r5, r1]
+ ldr r0, [r4, #0x4]
+ add r1, r6, #0x0
+ lsl r0, r0, #0xc
+ bl FUN_020235EC
+ add sp, #0x14
+ add r0, r6, #0x0
+ pop {r4-r7, pc}
+_0202352E:
+ mov r1, #0x1
+ str r1, [r5, r0]
+ add r1, r0, #0x4
+ ldr r0, [sp, #0x4]
+ ldr r2, [sp, #0x10]
+ str r0, [r5, r1]
+ ldr r0, [r4, #0x4]
+ add r1, r6, #0x0
+ add r0, #0x40
+ lsl r0, r0, #0xc
+ bl FUN_020235EC
+ add sp, #0x14
+ add r0, r6, #0x0
+ pop {r4-r7, pc}
+_0202354C:
+ ldr r0, [sp, #0x0]
+ mov r1, #0x2
+ str r1, [r0, #0x0]
+ ldr r0, _0202356C ; =0x000204A0
+ mov r1, #0x0
+ str r1, [r5, r0]
+ add r0, r0, #0x4
+ str r1, [r5, r0]
+ add r0, r6, #0x0
+ add sp, #0x14
+ pop {r4-r7, pc}
+ nop
+_02023564: .word 0x020EE6D8
+_02023568: .word 0x020EE6E0
+_0202356C: .word 0x000204A0
+
+ thumb_func_start FUN_02023570
+FUN_02023570: ; 0x02023570
+ push {r3-r5, lr}
+ blx OS_GetLockID
+ add r4, r0, #0x0
+ mov r0, #0x2
+ mvn r0, r0
+ cmp r4, r0
+ bne _02023584
+ bl ErrorHandling
+_02023584:
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ blx FUN_020D66B0
+ ldr r0, _020235C8 ; =0x00001302
+ blx FUN_020D6DC4
+ cmp r0, #0x0
+ beq _0202359A
+ ldr r5, _020235C8 ; =0x00001302
+ b _020235AA
+_0202359A:
+ ldr r0, _020235CC ; =0x00001202
+ blx FUN_020D6DC4
+ cmp r0, #0x0
+ beq _020235A8
+ ldr r5, _020235CC ; =0x00001202
+ b _020235AA
+_020235A8:
+ mov r5, #0x0
+_020235AA:
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ blx FUN_020D66A0
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ blx OS_ReleaseLockID
+ cmp r5, #0x0
+ beq _020235C2
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_020235C2:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ nop
+_020235C8: .word 0x00001302
+_020235CC: .word 0x00001202
+
+ thumb_func_start FUN_020235D0
+FUN_020235D0: ; 0x020235D0
+ push {r3-r5, lr}
+ bl FUN_02023668
+ add r5, r0, #0x0
+ add r4, sp, #0x0
+_020235DA:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_020236E4
+ cmp r0, #0x0
+ beq _020235DA
+ ldr r0, [sp, #0x0]
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020235EC
+FUN_020235EC: ; 0x020235EC
+ push {r4-r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ add r7, r2, #0x0
+ blx OS_GetLockID
+ add r4, r0, #0x0
+ mov r0, #0x2
+ mvn r0, r0
+ cmp r4, r0
+ bne _02023608
+ bl ErrorHandling
+_02023608:
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ blx FUN_020D66B0
+ mov r3, #0x0
+ str r3, [sp, #0x0]
+ mov r1, #0x1
+ str r1, [sp, #0x4]
+ mov r0, #0x6
+ str r0, [sp, #0x8]
+ str r1, [sp, #0xc]
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r7, #0x0
+ str r3, [sp, #0x10]
+ blx FUN_020D6F20
+ blx FUN_020D6DB8
+ add r5, r0, #0x0
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ blx FUN_020D66A0
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ blx OS_ReleaseLockID
+ cmp r5, #0x0
+ bne _02023652
+ ldr r0, _02023658 ; =0x021C59C8
+ ldr r0, [r0, #0x0]
+ bl FUN_02016A18
+ mov r0, #0x1
+ bl FUN_02089D90
+_02023652:
+ add r0, r5, #0x0
+ add sp, #0x14
+ pop {r4-r7, pc}
+ .balign 4
+_02023658: .word 0x021C59C8
+
+ thumb_func_start FUN_0202365C
+FUN_0202365C: ; 0x0202365C
+ ldr r0, _02023664 ; =0x021C59C8
+ mov r1, #0x1
+ str r1, [r0, #0x4]
+ bx lr
+ .balign 4
+_02023664: .word 0x021C59C8
+
+ thumb_func_start FUN_02023668
+FUN_02023668: ; 0x02023668
+ push {r3-r7, lr}
+ sub sp, #0x18
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ add r7, r2, #0x0
+ blx OS_GetLockID
+ add r4, r0, #0x0
+ mov r0, #0x2
+ mvn r0, r0
+ cmp r4, r0
+ bne _02023684
+ bl ErrorHandling
+_02023684:
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ blx FUN_020D66B0
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ str r0, [sp, #0x4]
+ mov r1, #0x6
+ str r1, [sp, #0x8]
+ mov r1, #0x1
+ str r1, [sp, #0xc]
+ add r1, sp, #0x14
+ mov r2, #0x4
+ add r3, r0, #0x0
+ str r0, [sp, #0x10]
+ blx FUN_020D6F20
+ cmp r0, #0x0
+ bne _020236B2
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_02023740
+_020236B2:
+ ldr r0, _020236DC ; =0x021C59C8
+ mov r1, #0x0
+ str r1, [r0, #0x4]
+ str r1, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ mov r0, #0x7
+ str r0, [sp, #0x8]
+ mov r0, #0xa
+ str r0, [sp, #0xc]
+ mov r0, #0x2
+ str r0, [sp, #0x10]
+ ldr r3, _020236E0 ; =FUN_0202365C
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ add r2, r7, #0x0
+ blx FUN_020D6F20
+ add r0, r4, #0x0
+ add sp, #0x18
+ pop {r3-r7, pc}
+ .balign 4
+_020236DC: .word 0x021C59C8
+_020236E0: .word FUN_0202365C
+
+ thumb_func_start FUN_020236E4
+FUN_020236E4: ; 0x020236E4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, _0202373C ; =0x021C59C8
+ add r4, r1, #0x0
+ ldr r0, [r0, #0x4]
+ cmp r0, #0x1
+ bne _02023738
+ lsl r0, r5, #0x10
+ lsr r0, r0, #0x10
+ blx FUN_020D66A0
+ lsl r0, r5, #0x10
+ lsr r0, r0, #0x10
+ blx OS_ReleaseLockID
+ blx FUN_020D6700
+ cmp r0, #0x0
+ beq _02023714
+ cmp r0, #0x4
+ beq _0202371E
+ cmp r0, #0x6
+ beq _02023728
+ b _0202371A
+_02023714:
+ mov r0, #0x1
+ str r0, [r4, #0x0]
+ b _02023734
+_0202371A:
+ bl ErrorHandling
+_0202371E:
+ mov r1, #0x0
+ add r0, r5, #0x0
+ str r1, [r4, #0x0]
+ bl FUN_02023740
+_02023728:
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_02023740
+_02023734:
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_02023738:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+_0202373C: .word 0x021C59C8
+
+ thumb_func_start FUN_02023740
+FUN_02023740: ; 0x02023740
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ lsl r0, r5, #0x10
+ lsr r0, r0, #0x10
+ add r4, r1, #0x0
+ blx FUN_020D66A0
+ lsl r0, r5, #0x10
+ lsr r0, r0, #0x10
+ blx OS_ReleaseLockID
+ ldr r0, _02023768 ; =0x021C59C8
+ ldr r0, [r0, #0x0]
+ bl FUN_02016A18
+ mov r0, #0x1
+ add r1, r4, #0x0
+ bl FUN_0208A0B8
+ pop {r3-r5, pc}
+ .balign 4
+_02023768: .word 0x021C59C8
+
+ thumb_func_start FUN_0202376C
+FUN_0202376C: ; 0x0202376C
+ mov r0, #0x5c
+ bx lr
+
+ thumb_func_start FUN_02023770
+FUN_02023770: ; 0x02023770
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x0
+ add r1, r4, #0x0
+ mov r2, #0x5c
+ blx MIi_CpuClearFast
+ add r4, #0x10
+ add r0, r4, #0x0
+ bl FUN_02023840
+ pop {r4, pc}
+
+ thumb_func_start FUN_02023788
+FUN_02023788: ; 0x02023788
+ ldr r3, _02023790 ; =FUN_02022610
+ mov r1, #0x0
+ bx r3
+ nop
+_02023790: .word FUN_02022610
+
+ thumb_func_start FUN_02023794
+FUN_02023794: ; 0x02023794
+ push {r3, lr}
+ bl FUN_02023788
+ add r0, #0x10
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_020237A0
+FUN_020237A0: ; 0x020237A0
+ push {r4, lr}
+ sub sp, #0x50
+ add r4, r0, #0x0
+ blx OS_GetOwnerRtcOffset
+ str r0, [r4, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x8
+ str r1, [r4, #0x4]
+ blx OS_GetMacAddress
+ add r0, sp, #0x0
+ blx OS_GetOwnerInfo
+ add r0, sp, #0x0
+ ldrb r1, [r0, #0x2]
+ strb r1, [r4, #0xe]
+ ldrb r0, [r0, #0x3]
+ strb r0, [r4, #0xf]
+ add sp, #0x50
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020237CC
+FUN_020237CC: ; 0x020237CC
+ push {r4, lr}
+ sub sp, #0x8
+ add r4, r0, #0x0
+ add r0, sp, #0x0
+ blx OS_GetMacAddress
+ mov r2, #0x0
+ add r3, sp, #0x0
+_020237DC:
+ add r0, r4, r2
+ ldrb r1, [r3, #0x0]
+ ldrb r0, [r0, #0x8]
+ cmp r1, r0
+ beq _020237EC
+ add sp, #0x8
+ mov r0, #0x0
+ pop {r4, pc}
+_020237EC:
+ add r2, r2, #0x1
+ add r3, r3, #0x1
+ cmp r2, #0x6
+ blt _020237DC
+ mov r0, #0x1
+ add sp, #0x8
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020237FC
+FUN_020237FC: ; 0x020237FC
+ push {r4, lr}
+ add r4, r0, #0x0
+ blx OS_GetOwnerRtcOffset
+ ldr r3, [r4, #0x0]
+ ldr r2, [r4, #0x4]
+ eor r0, r3
+ eor r1, r2
+ orr r0, r1
+ bne _02023814
+ mov r0, #0x1
+ pop {r4, pc}
+_02023814:
+ mov r0, #0x0
+ pop {r4, pc}
+
+ thumb_func_start FUN_02023818
+FUN_02023818: ; 0x02023818
+ ldrb r0, [r0, #0xe]
+ bx lr
+
+ thumb_func_start FUN_0202381C
+FUN_0202381C: ; 0x0202381C
+ ldrb r0, [r0, #0xf]
+ bx lr
+
+ thumb_func_start FUN_02023820
+FUN_02023820: ; 0x02023820
+ add r0, #0x48
+ ldrb r0, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02023828
+FUN_02023828: ; 0x02023828
+ add r0, #0x48
+ strb r1, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02023830
+FUN_02023830: ; 0x02023830
+ ldr r0, [r0, #0x4c]
+ bx lr
+
+ thumb_func_start FUN_02023834
+FUN_02023834: ; 0x02023834
+ ldr r2, [r0, #0x4c]
+ cmp r2, #0x0
+ bne _0202383C
+ str r1, [r0, #0x4c]
+_0202383C:
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02023840
+FUN_02023840: ; 0x02023840
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x1
+ add r1, r4, #0x0
+ str r0, [r4, #0x0]
+ add r0, r4, #0x4
+ add r1, #0x14
+ bl FUN_0201265C
+ add r0, r4, #0x4
+ blx FUN_020D660C
+ add r1, r4, #0x0
+ str r0, [r4, #0x20]
+ add r0, r4, #0x4
+ add r1, #0x14
+ blx FUN_020D6578
+ str r0, [r4, #0x24]
+ str r1, [r4, #0x28]
+ mov r0, #0x0
+ str r0, [r4, #0x2c]
+ str r0, [r4, #0x30]
+ str r0, [r4, #0x34]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02023874
+FUN_02023874: ; 0x02023874
+ ldr r0, [r0, #0x34]
+ cmp r0, #0x0
+ beq _0202387E
+ mov r0, #0x1
+ bx lr
+_0202387E:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02023884
+FUN_02023884: ; 0x02023884
+ mov r2, #0x5a
+ ldr r3, [r0, #0x34]
+ lsl r2, r2, #0x4
+ cmp r3, r2
+ bls _02023890
+ str r2, [r0, #0x34]
+_02023890:
+ ldr r2, [r0, #0x34]
+ cmp r2, r1
+ bhs _0202389C
+ mov r1, #0x0
+ str r1, [r0, #0x34]
+ bx lr
+_0202389C:
+ sub r1, r2, r1
+ str r1, [r0, #0x34]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020238A4
+FUN_020238A4: ; 0x020238A4
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x5a
+ lsl r0, r0, #0x4
+ add r1, r4, #0x0
+ str r0, [r4, #0x34]
+ add r0, r4, #0x4
+ add r1, #0x14
+ bl FUN_0201265C
+ add r0, r4, #0x4
+ blx FUN_020D660C
+ str r0, [r4, #0x20]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020238C4
+FUN_020238C4: ; 0x020238C4
+ mov r0, #0x2c
+ bx lr
+
+ thumb_func_start FUN_020238C8
+FUN_020238C8: ; 0x020238C8
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x0
+ add r1, r4, #0x0
+ mov r2, #0x2c
+ blx MIi_CpuClearFast
+ add r0, r4, #0x0
+ bl FUN_02024F50
+ add r0, r4, #0x4
+ bl FUN_02023948
+ add r0, r4, #0x0
+ add r0, #0x24
+ bl FUN_02028910
+ add r4, #0x26
+ add r0, r4, #0x0
+ bl FUN_02029E48
+ pop {r4, pc}
+
+ thumb_func_start FUN_020238F4
+FUN_020238F4: ; 0x020238F4
+ push {r3, lr}
+ mov r1, #0x1
+ bl FUN_02022610
+ add r0, r0, #0x4
+ pop {r3, pc}
+
+ thumb_func_start LoadPlayerDataAddress
+LoadPlayerDataAddress: ; 0x02023900
+ ldr r3, _02023908 ; =FUN_02022610
+ mov r1, #0x1
+ bx r3
+ nop
+_02023908: .word FUN_02022610
+
+ thumb_func_start FUN_0202390C
+FUN_0202390C: ; 0x0202390C
+ push {r3, lr}
+ mov r1, #0x1
+ bl FUN_02022610
+ add r0, #0x24
+ pop {r3, pc}
+
+ thumb_func_start FUN_02023918
+FUN_02023918: ; 0x02023918
+ push {r3, lr}
+ mov r1, #0x1
+ bl FUN_02022610
+ add r0, #0x26
+ pop {r3, pc}
+
+ thumb_func_start FUN_02023924
+FUN_02023924: ; 0x02023924
+ mov r0, #0x20
+ bx lr
+
+ thumb_func_start FUN_02023928
+FUN_02023928: ; 0x02023928
+ push {r4, lr}
+ mov r1, #0x20
+ bl FUN_02016998
+ add r4, r0, #0x0
+ bl FUN_02023948
+ add r0, r4, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202393C
+FUN_0202393C: ; 0x0202393C
+ ldr r3, _02023944 ; =MI_CpuCopy8
+ mov r2, #0x20
+ bx r3
+ nop
+_02023944: .word MI_CpuCopy8
+
+ thumb_func_start FUN_02023948
+FUN_02023948: ; 0x02023948
+ push {r4, lr}
+ mov r1, #0x0
+ mov r2, #0x20
+ add r4, r0, #0x0
+ blx FUN_020DF4A4
+ mov r0, #0x2
+ strb r0, [r4, #0x19]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202395C
+FUN_0202395C: ; 0x0202395C
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl StringLength
+ cmp r0, #0x8
+ blt _02023970
+ bl ErrorHandling
+_02023970:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl StringCopy
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202397C
+FUN_0202397C: ; 0x0202397C
+ ldr r3, _02023988 ; =FUN_02021EF0
+ add r2, r0, #0x0
+ add r0, r1, #0x0
+ add r1, r2, #0x0
+ mov r2, #0x8
+ bx r3
+ .balign 4
+_02023988: .word FUN_02021EF0
+
+ thumb_func_start FUN_0202398C
+FUN_0202398C: ; 0x0202398C
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02023990
+FUN_02023990: ; 0x02023990
+ ldr r3, _0202399C ; =FUN_02021E28
+ add r2, r0, #0x0
+ add r0, r1, #0x0
+ add r1, r2, #0x0
+ bx r3
+ nop
+_0202399C: .word FUN_02021E28
+
+ thumb_func_start FUN_020239A0
+FUN_020239A0: ; 0x020239A0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r0, #0x8
+ bl FUN_020219F4
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02023990
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_020239B8
+FUN_020239B8: ; 0x020239B8
+ str r1, [r0, #0x10]
+ bx lr
+
+ thumb_func_start FUN_020239BC
+FUN_020239BC: ; 0x020239BC
+ ldr r0, [r0, #0x10]
+ bx lr
+
+ thumb_func_start FUN_020239C0
+FUN_020239C0: ; 0x020239C0
+ ldr r0, [r0, #0x10]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bx lr
+
+ thumb_func_start FUN_020239C8
+FUN_020239C8: ; 0x020239C8
+ strb r1, [r0, #0x18]
+ bx lr
+
+ thumb_func_start FUN_020239CC
+FUN_020239CC: ; 0x020239CC
+ ldrb r0, [r0, #0x18]
+ bx lr
+
+ thumb_func_start FUN_020239D0
+FUN_020239D0: ; 0x020239D0
+ ldrb r3, [r0, #0x1a]
+ mov r0, #0x1
+ add r2, r0, #0x0
+ lsl r2, r1
+ add r1, r3, #0x0
+ tst r1, r2
+ bne _020239E0
+ mov r0, #0x0
+_020239E0:
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020239E4
+FUN_020239E4: ; 0x020239E4
+ ldrb r3, [r0, #0x1a]
+ mov r2, #0x1
+ lsl r2, r1
+ add r1, r3, #0x0
+ orr r1, r2
+ strb r1, [r0, #0x1a]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020239F4
+FUN_020239F4: ; 0x020239F4
+ ldrb r3, [r0, #0x1a]
+ mov r2, #0x0
+ cmp r3, #0x0
+ beq _02023A0A
+ mov r0, #0x1
+_020239FE:
+ add r1, r3, #0x0
+ tst r1, r0
+ beq _02023A06
+ add r2, r2, #0x1
+_02023A06:
+ lsr r3, r3, #0x1
+ bne _020239FE
+_02023A0A:
+ add r0, r2, #0x0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02023A10
+FUN_02023A10: ; 0x02023A10
+ ldr r0, [r0, #0x14]
+ bx lr
+
+ thumb_func_start FUN_02023A14
+FUN_02023A14: ; 0x02023A14
+ ldr r2, _02023A24 ; =0x000F423F
+ cmp r1, r2
+ bls _02023A1C
+ add r1, r2, #0x0
+_02023A1C:
+ str r1, [r0, #0x14]
+ add r0, r1, #0x0
+ bx lr
+ nop
+_02023A24: .word 0x000F423F
+
+ thumb_func_start FUN_02023A28
+FUN_02023A28: ; 0x02023A28
+ ldrb r0, [r0, #0x1b]
+ bx lr
+
+ thumb_func_start FUN_02023A2C
+FUN_02023A2C: ; 0x02023A2C
+ strb r1, [r0, #0x1b]
+ bx lr
+
+ thumb_func_start FUN_02023A30
+FUN_02023A30: ; 0x02023A30
+ ldr r2, _02023A50 ; =0x000F423F
+ cmp r1, r2
+ bls _02023A3A
+ str r2, [r0, #0x14]
+ b _02023A40
+_02023A3A:
+ ldr r2, [r0, #0x14]
+ add r1, r2, r1
+ str r1, [r0, #0x14]
+_02023A40:
+ ldr r2, [r0, #0x14]
+ ldr r1, _02023A50 ; =0x000F423F
+ cmp r2, r1
+ bls _02023A4A
+ str r1, [r0, #0x14]
+_02023A4A:
+ ldr r0, [r0, #0x14]
+ bx lr
+ nop
+_02023A50: .word 0x000F423F
+
+ thumb_func_start FUN_02023A54
+FUN_02023A54: ; 0x02023A54
+ ldr r2, [r0, #0x14]
+ cmp r2, r1
+ bhs _02023A5E
+ mov r1, #0x0
+ b _02023A60
+_02023A5E:
+ sub r1, r2, r1
+_02023A60:
+ str r1, [r0, #0x14]
+ ldr r0, [r0, #0x14]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02023A68
+FUN_02023A68: ; 0x02023A68
+ ldrb r0, [r0, #0x1c]
+ bx lr
+
+ thumb_func_start FUN_02023A6C
+FUN_02023A6C: ; 0x02023A6C
+ strb r1, [r0, #0x1c]
+ bx lr
+
+ thumb_func_start FUN_02023A70
+FUN_02023A70: ; 0x02023A70
+ ldrb r0, [r0, #0x19]
+ bx lr
+
+ thumb_func_start FUN_02023A74
+FUN_02023A74: ; 0x02023A74
+ strb r1, [r0, #0x19]
+ bx lr
+
+ thumb_func_start FUN_02023A78
+FUN_02023A78: ; 0x02023A78
+ ldrb r2, [r0, #0x1d]
+ mov r1, #0x1
+ bic r2, r1
+ mov r1, #0x1
+ orr r1, r2
+ strb r1, [r0, #0x1d]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02023A88
+FUN_02023A88: ; 0x02023A88
+ ldrb r0, [r0, #0x1d]
+ lsl r0, r0, #0x1f
+ lsr r0, r0, #0x1f
+ bx lr
+
+ thumb_func_start FUN_02023A90
+FUN_02023A90: ; 0x02023A90
+ ldrb r2, [r0, #0x1d]
+ mov r1, #0x2
+ orr r1, r2
+ strb r1, [r0, #0x1d]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02023A9C
+FUN_02023A9C: ; 0x02023A9C
+ ldrb r0, [r0, #0x1d]
+ lsl r0, r0, #0x1e
+ lsr r0, r0, #0x1f
+ bx lr
+
+ thumb_func_start FUN_02023AA4
+FUN_02023AA4: ; 0x02023AA4
+ push {r3-r5, lr}
+ mov r2, #0x7
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl StringNotEqualN
+ cmp r0, #0x0
+ bne _02023AC0
+ ldr r1, [r5, #0x10]
+ ldr r0, [r4, #0x10]
+ cmp r1, r0
+ bne _02023AC0
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_02023AC0:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02023AC4
+FUN_02023AC4: ; 0x02023AC4
+ mov r0, #0x20
+ bx lr
+
+ thumb_func_start FUN_02023AC8
+FUN_02023AC8: ; 0x02023AC8
+ mov r0, #0x20
+ bx lr
+
+ thumb_func_start FUN_02023ACC
+FUN_02023ACC: ; 0x02023ACC
+ ldr r3, _02023AD4 ; =MI_CpuCopy8
+ mov r2, #0x20
+ bx r3
+ nop
+_02023AD4: .word MI_CpuCopy8
+
+ thumb_func_start FUN_02023AD8
+FUN_02023AD8: ; 0x02023AD8
+ ldr r3, _02023AE0 ; =FUN_020DF4A4
+ mov r1, #0x0
+ mov r2, #0x20
+ bx r3
+ .balign 4
+_02023AE0: .word FUN_020DF4A4
+
+ thumb_func_start FUN_02023AE4
+FUN_02023AE4: ; 0x02023AE4
+ ldr r3, _02023AF0 ; =FUN_02021E8C
+ add r2, r0, #0x0
+ add r0, r1, #0x0
+ add r1, r2, #0x0
+ mov r2, #0xc
+ bx r3
+ .balign 4
+_02023AF0: .word FUN_02021E8C
+
+ thumb_func_start FUN_02023AF4
+FUN_02023AF4: ; 0x02023AF4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r0, #0x18
+ bl FUN_020219F4
+ add r1, r5, #0x0
+ add r4, r0, #0x0
+ bl FUN_02021E28
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02023B0C
+FUN_02023B0C: ; 0x02023B0C
+ mov r2, #0x0
+ cmp r1, #0xc
+ bhi _02023B9E
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02023B1E: ; jump table (using 16-bit offset)
+ .short _02023B9E - _02023B1E - 2; case 0
+ .short _02023B38 - _02023B1E - 2; case 1
+ .short _02023B3C - _02023B1E - 2; case 2
+ .short _02023B40 - _02023B1E - 2; case 3
+ .short _02023B44 - _02023B1E - 2; case 4
+ .short _02023B4C - _02023B1E - 2; case 5
+ .short _02023B52 - _02023B1E - 2; case 6
+ .short _02023B66 - _02023B1E - 2; case 7
+ .short _02023B6C - _02023B1E - 2; case 8
+ .short _02023B80 - _02023B1E - 2; case 9
+ .short _02023B88 - _02023B1E - 2; case 10
+ .short _02023B90 - _02023B1E - 2; case 11
+ .short _02023B98 - _02023B1E - 2; case 12
+_02023B38:
+ ldrb r2, [r0, #0x1a]
+ b _02023B9E
+_02023B3C:
+ ldrb r2, [r0, #0x1b]
+ b _02023B9E
+_02023B40:
+ ldrh r2, [r0, #0x18]
+ b _02023B9E
+_02023B44:
+ ldrb r0, [r0, #0x1e]
+ lsl r0, r0, #0x1f
+ lsr r2, r0, #0x1f
+ b _02023B9E
+_02023B4C:
+ mov r1, #0x1c
+ ldrsb r2, [r0, r1]
+ b _02023B9E
+_02023B52:
+ mov r1, #0x1c
+ ldrsb r0, [r0, r1]
+ cmp r0, #0x0
+ ble _02023B5E
+ mov r2, #0x1
+ b _02023B9E
+_02023B5E:
+ bge _02023B9E
+ add r2, r1, #0x0
+ sub r2, #0x1d
+ b _02023B9E
+_02023B66:
+ mov r1, #0x1d
+ ldrsb r2, [r0, r1]
+ b _02023B9E
+_02023B6C:
+ mov r1, #0x1d
+ ldrsb r0, [r0, r1]
+ cmp r0, #0x0
+ ble _02023B78
+ mov r2, #0x1
+ b _02023B9E
+_02023B78:
+ bge _02023B9E
+ add r2, r1, #0x0
+ sub r2, #0x1e
+ b _02023B9E
+_02023B80:
+ ldrb r0, [r0, #0x1e]
+ lsl r0, r0, #0x1c
+ lsr r2, r0, #0x1f
+ b _02023B9E
+_02023B88:
+ ldrb r0, [r0, #0x1e]
+ lsl r0, r0, #0x1d
+ lsr r2, r0, #0x1f
+ b _02023B9E
+_02023B90:
+ ldrb r0, [r0, #0x1e]
+ lsl r0, r0, #0x1e
+ lsr r2, r0, #0x1f
+ b _02023B9E
+_02023B98:
+ ldrb r0, [r0, #0x1e]
+ lsl r0, r0, #0x1b
+ lsr r2, r0, #0x1f
+_02023B9E:
+ add r0, r2, #0x0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02023BA4
+FUN_02023BA4: ; 0x02023BA4
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ add r4, r0, #0x0
+ cmp r5, #0x1
+ blt _02023BB2
+ bl ErrorHandling
+_02023BB2:
+ add r0, r4, #0x0
+ mov r1, #0xd
+ bl FUN_02022610
+ add r4, r0, #0x0
+ lsl r5, r5, #0x5
+ add r0, r4, r5
+ mov r1, #0x1
+ bl FUN_02023B0C
+ cmp r0, #0x0
+ beq _02023BCE
+ add r0, r4, r5
+ pop {r3-r5, pc}
+_02023BCE:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02023BD4
+FUN_02023BD4: ; 0x02023BD4
+ push {r4, lr}
+ add r4, r1, #0x0
+ mov r1, #0xd
+ bl FUN_02022610
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02023ACC
+ pop {r4, pc}
+
+ thumb_func_start FUN_02023BE8
+FUN_02023BE8: ; 0x02023BE8
+ push {r3, lr}
+ cmp r1, #0x5
+ bhs _02023BF6
+ ldr r2, _02023C00 ; =0x02105BD4
+ lsl r0, r1, #0x5
+ add r0, r2, r0
+ pop {r3, pc}
+_02023BF6:
+ mov r1, #0xd
+ bl FUN_02022610
+ pop {r3, pc}
+ nop
+_02023C00: .word 0x02105BD4
+
+ thumb_func_start FUN_02023C04
+FUN_02023C04: ; 0x02023C04
+ push {r4-r6, lr}
+ add r5, r1, #0x0
+ add r4, r2, #0x0
+ cmp r5, #0x5
+ bhs _02023C2C
+ ldr r2, _02023C3C ; =0x0000013A
+ mov r0, #0x0
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ add r5, #0x38
+ add r6, r0, #0x0
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_0200A8E0
+ add r0, r6, #0x0
+ bl FUN_0200A8B8
+ pop {r4-r6, pc}
+_02023C2C:
+ mov r1, #0x0
+ bl FUN_02023BA4
+ add r1, r4, #0x0
+ bl FUN_02023AE4
+ pop {r4-r6, pc}
+ nop
+_02023C3C: .word 0x0000013A
+
+ thumb_func_start FUN_02023C40
+FUN_02023C40: ; 0x02023C40
+ mov r0, #0x1e
+ lsl r0, r0, #0x4
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02023C48
+FUN_02023C48: ; 0x02023C48
+ push {r4, lr}
+ mov r2, #0x1e
+ add r4, r0, #0x0
+ mov r1, #0x0
+ lsl r2, r2, #0x4
+ blx FUN_020DF4A4
+ add r0, r4, #0x0
+ bl FUN_020669A0
+ add r0, r4, #0x0
+ add r0, #0xec
+ bl FUN_020669A0
+ mov r0, #0x76
+ mov r1, #0x0
+ lsl r0, r0, #0x2
+ str r1, [r4, r0]
+ add r0, r0, #0x4
+ strb r1, [r4, r0]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02023C74
+FUN_02023C74: ; 0x02023C74
+ mov r2, #0xec
+ mul r2, r1
+ add r0, r0, r2
+ bx lr
+
+ thumb_func_start FUN_02023C7C
+FUN_02023C7C: ; 0x02023C7C
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02023C80
+FUN_02023C80: ; 0x02023C80
+ add r0, #0x88
+ bx lr
+
+ thumb_func_start FUN_02023C84
+FUN_02023C84: ; 0x02023C84
+ add r0, #0xe8
+ ldr r0, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02023C8C
+FUN_02023C8C: ; 0x02023C8C
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02023C90
+FUN_02023C90: ; 0x02023C90
+ mov r1, #0x76
+ lsl r1, r1, #0x2
+ ldr r0, [r0, r1]
+ bx lr
+
+ thumb_func_start FUN_02023C98
+FUN_02023C98: ; 0x02023C98
+ mov r1, #0x77
+ lsl r1, r1, #0x2
+ ldrb r0, [r0, r1]
+ bx lr
+
+ thumb_func_start FUN_02023CA0
+FUN_02023CA0: ; 0x02023CA0
+ add r0, #0xe8
+ str r1, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02023CA8
+FUN_02023CA8: ; 0x02023CA8
+ add r2, r0, #0x0
+ add r2, #0xe8
+ ldr r2, [r2, #0x0]
+ add r0, #0xe8
+ add r1, r2, r1
+ str r1, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02023CB8
+FUN_02023CB8: ; 0x02023CB8
+ mov r2, #0x76
+ lsl r2, r2, #0x2
+ str r1, [r0, r2]
+ bx lr
+
+ thumb_func_start FUN_02023CC0
+FUN_02023CC0: ; 0x02023CC0
+ mov r2, #0x77
+ lsl r2, r2, #0x2
+ strb r1, [r0, r2]
+ bx lr
+
+ thumb_func_start FUN_02023CC8
+FUN_02023CC8: ; 0x02023CC8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r1, #0xc
+ mov r2, #0x0
+ bl FUN_020672BC
+ add r5, #0xec
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0xc
+ mov r2, #0x0
+ bl FUN_020672BC
+ cmp r4, r0
+ beq _02023CEA
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_02023CEA:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02023CF0
+FUN_02023CF0: ; 0x02023CF0
+ push {r3-r4}
+ add r4, r0, #0x0
+ add r3, r1, #0x0
+ mov r2, #0x1d
+_02023CF8:
+ ldmia r3!, {r0-r1}
+ stmia r4!, {r0-r1}
+ sub r2, r2, #0x1
+ bne _02023CF8
+ ldr r0, [r3, #0x0]
+ str r0, [r4, #0x0]
+ pop {r3-r4}
+ bx lr
+
+ thumb_func_start FUN_02023D08
+FUN_02023D08: ; 0x02023D08
+ push {r3-r4}
+ mov r1, #0x0
+ add r2, r0, #0x0
+ add r4, r1, #0x0
+_02023D10:
+ add r1, r1, #0x1
+ strh r4, [r2, #0x38]
+ add r2, r2, #0x2
+ cmp r1, #0x8
+ blt _02023D10
+ add r3, r0, #0x0
+ mov r2, #0x0
+_02023D1E:
+ add r1, r3, #0x0
+ add r1, #0x48
+ add r4, r4, #0x1
+ add r3, r3, #0x2
+ strh r2, [r1, #0x0]
+ cmp r4, #0xb
+ blt _02023D1E
+ ldr r1, _02023D38 ; =0x0000FFFF
+ strh r1, [r0, #0x38]
+ add r0, #0x48
+ strh r1, [r0, #0x0]
+ pop {r3-r4}
+ bx lr
+ .balign 4
+_02023D38: .word 0x0000FFFF
+
+ thumb_func_start FUN_02023D3C
+FUN_02023D3C: ; 0x02023D3C
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_020669A0
+ add r0, r4, #0x0
+ mov r1, #0x0
+ add r0, #0xe8
+ add r4, #0x88
+ str r1, [r0, #0x0]
+ add r0, r4, #0x0
+ bl FUN_02023D08
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02023D58
+FUN_02023D58: ; 0x02023D58
+ ldr r3, _02023D60 ; =FUN_02022610
+ mov r1, #0x8
+ bx r3
+ nop
+_02023D60: .word FUN_02022610
+
+ thumb_func_start FUN_02023D64
+FUN_02023D64: ; 0x02023D64
+ mov r0, #0x4f
+ lsl r0, r0, #0x2
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02023D6C
+FUN_02023D6C: ; 0x02023D6C
+ push {r4, lr}
+ mov r1, #0x4f
+ lsl r1, r1, #0x2
+ bl FUN_02016998
+ add r4, r0, #0x0
+ bl FUN_02024378
+ add r0, r4, #0x0
+ pop {r4, pc}
+
+ thumb_func_start FUN_02023D80
+FUN_02023D80: ; 0x02023D80
+ ldr r3, _02023D88 ; =MI_CpuCopy8
+ mov r2, #0x4f
+ lsl r2, r2, #0x2
+ bx r3
+ .balign 4
+_02023D88: .word MI_CpuCopy8
+
+ thumb_func_start FUN_02023D8C
+FUN_02023D8C: ; 0x02023D8C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, _02023DE8 ; =0x000001A6
+ add r4, r1, #0x0
+ cmp r4, r0
+ beq _02023DA2
+ add r0, r0, #0x1
+ cmp r4, r0
+ beq _02023DA2
+ bl ErrorHandling
+_02023DA2:
+ lsl r1, r4, #0x10
+ add r0, r5, #0x0
+ lsr r1, r1, #0x10
+ bl FUN_020245F0
+ cmp r0, #0x0
+ bne _02023DB4
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_02023DB4:
+ ldr r0, _02023DE8 ; =0x000001A6
+ cmp r4, r0
+ bne _02023DBE
+ sub r0, #0x9e
+ b _02023DC0
+_02023DBE:
+ sub r0, #0x9d
+_02023DC0:
+ add r0, r5, r0
+ ldrb r1, [r0, #0x0]
+ mov r2, #0x1
+ add r0, r1, #0x0
+ tst r0, r2
+ bne _02023DCE
+ mov r2, #0x0
+_02023DCE:
+ mov r0, #0x2
+ tst r0, r1
+ beq _02023DD8
+ mov r0, #0x1
+ b _02023DDA
+_02023DD8:
+ mov r0, #0x0
+_02023DDA:
+ cmp r2, r0
+ bne _02023DE2
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_02023DE2:
+ mov r0, #0x2
+ pop {r3-r5, pc}
+ nop
+_02023DE8: .word 0x000001A6
+
+ thumb_func_start FUN_02023DEC
+FUN_02023DEC: ; 0x02023DEC
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ ldr r0, _02023E6C ; =0x000001A6
+ add r6, r1, #0x0
+ add r5, r2, #0x0
+ cmp r6, r0
+ beq _02023E04
+ add r0, r0, #0x1
+ cmp r6, r0
+ beq _02023E04
+ bl ErrorHandling
+_02023E04:
+ lsl r1, r6, #0x10
+ add r0, r7, #0x0
+ lsr r1, r1, #0x10
+ bl FUN_020245F0
+ cmp r0, #0x0
+ bne _02023E16
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_02023E16:
+ ldr r0, _02023E6C ; =0x000001A6
+ cmp r6, r0
+ bne _02023E20
+ sub r0, #0x9e
+ b _02023E22
+_02023E20:
+ sub r0, #0x9d
+_02023E22:
+ add r4, r7, r0
+ add r0, r7, #0x0
+ add r1, r6, #0x0
+ bl FUN_02023D8C
+ mov r6, #0x0
+ cmp r0, #0x0
+ bls _02023E66
+ mov r1, #0x1
+_02023E34:
+ add r2, r6, #0x1
+ lsl r2, r2, #0x10
+ lsr r2, r2, #0x10
+ sub r2, r2, #0x1
+ lsl r2, r2, #0x10
+ lsr r3, r2, #0x10
+ add r7, r3, #0x0
+ mov r2, #0x7
+ asr r3, r3, #0x3
+ and r7, r2
+ add r2, r1, #0x0
+ ldrb r3, [r4, r3]
+ lsl r2, r7
+ tst r2, r3
+ beq _02023E56
+ add r2, r1, #0x0
+ b _02023E58
+_02023E56:
+ mov r2, #0x0
+_02023E58:
+ cmp r2, r5
+ bne _02023E60
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02023E60:
+ add r6, r6, #0x1
+ cmp r6, r0
+ blo _02023E34
+_02023E66:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ nop
+_02023E6C: .word 0x000001A6
+
+ thumb_func_start FUN_02023E70
+FUN_02023E70: ; 0x02023E70
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ ldr r0, _02023F28 ; =0x000001A6
+ add r5, r1, #0x0
+ add r7, r2, #0x0
+ cmp r5, r0
+ beq _02023E88
+ add r0, r0, #0x1
+ cmp r5, r0
+ beq _02023E88
+ bl ErrorHandling
+_02023E88:
+ lsl r2, r7, #0x18
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ lsr r2, r2, #0x18
+ bl FUN_02023DEC
+ cmp r0, #0x0
+ bne _02023F26
+ ldr r0, _02023F28 ; =0x000001A6
+ cmp r5, r0
+ bne _02023EA2
+ sub r0, #0x9e
+ b _02023EA4
+_02023EA2:
+ sub r0, #0x9d
+_02023EA4:
+ add r4, r6, r0
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ bl FUN_02023D8C
+ add r5, r0, #0x0
+ cmp r5, #0x2
+ bge _02023F26
+ add r0, r5, #0x1
+ lsl r0, r0, #0x10
+ lsr r6, r0, #0x10
+ lsl r0, r7, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x2
+ blo _02023EC6
+ bl ErrorHandling
+_02023EC6:
+ sub r0, r6, #0x1
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ add r2, r1, #0x0
+ mov r0, #0x7
+ and r2, r0
+ asr r1, r1, #0x3
+ mov r3, #0x1
+ lsl r3, r2
+ ldrb r0, [r4, r1]
+ mvn r3, r3
+ and r0, r3
+ strb r0, [r4, r1]
+ lsl r0, r7, #0x18
+ lsr r6, r0, #0x18
+ add r0, r6, #0x0
+ ldrb r3, [r4, r1]
+ lsl r0, r2
+ orr r0, r3
+ strb r0, [r4, r1]
+ cmp r5, #0x0
+ bne _02023F26
+ add r0, r5, #0x2
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ cmp r6, #0x2
+ blo _02023F00
+ bl ErrorHandling
+_02023F00:
+ sub r0, r5, #0x1
+ lsl r0, r0, #0x10
+ lsr r2, r0, #0x10
+ mov r0, #0x7
+ add r1, r2, #0x0
+ and r1, r0
+ asr r0, r2, #0x3
+ mov r2, #0x1
+ lsl r2, r1
+ ldrb r3, [r4, r0]
+ mvn r2, r2
+ and r2, r3
+ strb r2, [r4, r0]
+ add r2, r6, #0x0
+ ldrb r3, [r4, r0]
+ lsl r2, r1
+ add r1, r3, #0x0
+ orr r1, r2
+ strb r1, [r4, r0]
+_02023F26:
+ pop {r3-r7, pc}
+ .balign 4
+_02023F28: .word 0x000001A6
+
+ thumb_func_start FUN_02023F2C
+FUN_02023F2C: ; 0x02023F2C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r0, #0x67
+ add r4, r1, #0x0
+ lsl r0, r0, #0x2
+ cmp r4, r0
+ beq _02023F44
+ add r0, r0, #0x1
+ cmp r4, r0
+ beq _02023F44
+ bl ErrorHandling
+_02023F44:
+ lsl r1, r4, #0x10
+ add r0, r5, #0x0
+ lsr r1, r1, #0x10
+ bl FUN_020245F0
+ cmp r0, #0x0
+ bne _02023F56
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_02023F56:
+ mov r0, #0x67
+ lsl r0, r0, #0x2
+ cmp r4, r0
+ bne _02023F62
+ sub r0, #0x92
+ b _02023F64
+_02023F62:
+ sub r0, #0x91
+_02023F64:
+ add r1, r5, r0
+ mov r0, #0x0
+ mov r3, #0x3
+_02023F6A:
+ lsl r2, r0, #0x10
+ lsr r5, r2, #0x10
+ asr r2, r5, #0x2
+ ldrb r4, [r1, r2]
+ lsl r2, r5, #0x1e
+ lsr r2, r2, #0x1d
+ asr r4, r2
+ add r2, r4, #0x0
+ and r2, r3
+ cmp r2, #0x3
+ beq _02023F86
+ add r0, r0, #0x1
+ cmp r0, #0x3
+ blt _02023F6A
+_02023F86:
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02023F88
+FUN_02023F88: ; 0x02023F88
+ push {r4-r6, lr}
+ add r6, r0, #0x0
+ mov r0, #0x67
+ add r5, r1, #0x0
+ lsl r0, r0, #0x2
+ add r4, r2, #0x0
+ cmp r5, r0
+ beq _02023FA2
+ add r0, r0, #0x1
+ cmp r5, r0
+ beq _02023FA2
+ bl ErrorHandling
+_02023FA2:
+ lsl r1, r5, #0x10
+ add r0, r6, #0x0
+ lsr r1, r1, #0x10
+ bl FUN_020245F0
+ cmp r0, #0x0
+ bne _02023FB4
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_02023FB4:
+ mov r0, #0x67
+ lsl r0, r0, #0x2
+ cmp r5, r0
+ bne _02023FC0
+ sub r0, #0x92
+ b _02023FC2
+_02023FC0:
+ sub r0, #0x91
+_02023FC2:
+ add r1, r6, r0
+ mov r0, #0x0
+ mov r3, #0x3
+_02023FC8:
+ lsl r2, r0, #0x10
+ lsr r6, r2, #0x10
+ asr r2, r6, #0x2
+ ldrb r5, [r1, r2]
+ lsl r2, r6, #0x1e
+ lsr r2, r2, #0x1d
+ asr r5, r2
+ add r2, r5, #0x0
+ and r2, r3
+ cmp r2, r4
+ bne _02023FE2
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_02023FE2:
+ add r0, r0, #0x1
+ cmp r0, #0x3
+ blt _02023FC8
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02023FEC
+FUN_02023FEC: ; 0x02023FEC
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ mov r0, #0x67
+ add r5, r1, #0x0
+ lsl r0, r0, #0x2
+ add r7, r2, #0x0
+ cmp r5, r0
+ beq _02024006
+ add r0, r0, #0x1
+ cmp r5, r0
+ beq _02024006
+ bl ErrorHandling
+_02024006:
+ lsl r2, r7, #0x18
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ lsr r2, r2, #0x18
+ bl FUN_02023F88
+ cmp r0, #0x0
+ bne _02024064
+ mov r0, #0x67
+ lsl r0, r0, #0x2
+ cmp r5, r0
+ bne _02024022
+ sub r0, #0x92
+ b _02024024
+_02024022:
+ sub r0, #0x91
+_02024024:
+ add r4, r6, r0
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ bl FUN_02023F2C
+ add r5, r0, #0x0
+ cmp r5, #0x3
+ bge _02024064
+ lsl r0, r7, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x4
+ blo _02024040
+ bl ErrorHandling
+_02024040:
+ lsl r0, r5, #0x10
+ lsr r2, r0, #0x10
+ lsl r0, r2, #0x1e
+ lsr r1, r0, #0x1d
+ asr r0, r2, #0x2
+ mov r2, #0x3
+ lsl r2, r1
+ ldrb r3, [r4, r0]
+ mvn r2, r2
+ and r2, r3
+ strb r2, [r4, r0]
+ lsl r2, r7, #0x18
+ lsr r2, r2, #0x18
+ ldrb r3, [r4, r0]
+ lsl r2, r1
+ add r1, r3, #0x0
+ orr r1, r2
+ strb r1, [r4, r0]
+_02024064:
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02024068
+FUN_02024068: ; 0x02024068
+ push {r4-r6, lr}
+ add r6, r2, #0x0
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r6, #0x4
+ blo _02024078
+ bl ErrorHandling
+_02024078:
+ cmp r4, #0xf
+ bls _02024080
+ bl ErrorHandling
+_02024080:
+ cmp r6, #0x2
+ bhs _0202409E
+ lsl r0, r6, #0x2
+ add r0, #0x18
+ mov r1, #0xf
+ lsl r1, r0
+ ldr r2, [r5, #0x40]
+ mvn r1, r1
+ and r2, r1
+ add r1, r4, #0x0
+ lsl r1, r0
+ add r0, r2, #0x0
+ orr r0, r1
+ str r0, [r5, #0x40]
+ pop {r4-r6, pc}
+_0202409E:
+ sub r0, r6, #0x2
+ lsl r0, r0, #0x18
+ add r1, r5, #0x0
+ lsr r0, r0, #0x16
+ add r1, #0x80
+ ldr r2, [r1, #0x0]
+ add r0, #0x18
+ mov r1, #0xf
+ lsl r1, r0
+ mvn r1, r1
+ and r2, r1
+ add r1, r5, #0x0
+ add r1, #0x80
+ str r2, [r1, #0x0]
+ add r1, r5, #0x0
+ add r1, #0x80
+ ldr r2, [r1, #0x0]
+ add r1, r4, #0x0
+ lsl r1, r0
+ add r0, r2, #0x0
+ orr r0, r1
+ add r5, #0x80
+ str r0, [r5, #0x0]
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_020240D0
+FUN_020240D0: ; 0x020240D0
+ push {r3-r6}
+ mov r3, #0xf
+ mov r1, #0x0
+ add r4, r3, #0x0
+_020240D8:
+ lsl r2, r1, #0x18
+ lsr r6, r2, #0x18
+ cmp r6, #0x2
+ bhs _020240EE
+ lsl r2, r6, #0x2
+ ldr r5, [r0, #0x40]
+ add r2, #0x18
+ lsr r5, r2
+ add r2, r5, #0x0
+ and r2, r4
+ b _02024102
+_020240EE:
+ add r2, r0, #0x0
+ add r2, #0x80
+ ldr r5, [r2, #0x0]
+ sub r2, r6, #0x2
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x16
+ add r2, #0x18
+ lsr r5, r2
+ add r2, r5, #0x0
+ and r2, r3
+_02024102:
+ cmp r2, #0xf
+ beq _0202410C
+ add r1, r1, #0x1
+ cmp r1, #0x4
+ blt _020240D8
+_0202410C:
+ add r0, r1, #0x0
+ pop {r3-r6}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02024114
+FUN_02024114: ; 0x02024114
+ push {r4-r7}
+ mov r2, #0xf
+ mov r6, #0x0
+ add r3, r2, #0x0
+_0202411C:
+ lsl r4, r6, #0x18
+ lsr r5, r4, #0x18
+ cmp r5, #0x2
+ bhs _02024134
+ ldr r7, [r0, #0x40]
+ lsl r4, r5, #0x2
+ add r4, #0x18
+ add r5, r7, #0x0
+ lsr r5, r4
+ add r4, r5, #0x0
+ and r4, r3
+ b _02024146
+_02024134:
+ add r4, r0, #0x0
+ sub r5, r5, #0x2
+ add r4, #0x80
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x16
+ ldr r4, [r4, #0x0]
+ add r5, #0x18
+ lsr r4, r5
+ and r4, r2
+_02024146:
+ cmp r1, r4
+ bne _02024150
+ mov r0, #0x1
+ pop {r4-r7}
+ bx lr
+_02024150:
+ add r6, r6, #0x1
+ cmp r6, #0x4
+ blt _0202411C
+ mov r0, #0x0
+ pop {r4-r7}
+ bx lr
+
+ thumb_func_start FUN_0202415C
+FUN_0202415C: ; 0x0202415C
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ add r0, r2, #0x0
+ mov r1, #0x70
+ mov r2, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ ldr r0, _02024198 ; =0x00000182
+ cmp r6, r0
+ bne _02024196
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02024114
+ cmp r0, #0x0
+ bne _02024196
+ add r0, r5, #0x0
+ bl FUN_020240D0
+ add r2, r0, #0x0
+ lsl r2, r2, #0x18
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ lsr r2, r2, #0x18
+ bl FUN_02024068
+_02024196:
+ pop {r4-r6, pc}
+ .balign 4
+_02024198: .word 0x00000182
+
+ thumb_func_start FUN_0202419C
+FUN_0202419C: ; 0x0202419C
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ mov r4, #0x0
+ mov r6, #0xf
+_020241A4:
+ lsl r2, r4, #0x18
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ lsr r2, r2, #0x18
+ bl FUN_02024068
+ add r4, r4, #0x1
+ cmp r4, #0x4
+ blt _020241A4
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_020241B8
+FUN_020241B8: ; 0x020241B8
+ push {r4-r6, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ cmp r4, #0xc9
+ bne _02024210
+ add r0, r2, #0x0
+ bl FUN_020690CC
+ lsl r1, r0, #0x18
+ lsr r3, r1, #0x18
+ mov r1, #0x43
+ mov r4, #0x0
+ add r6, r5, #0x0
+ lsl r1, r1, #0x2
+_020241D4:
+ ldrb r2, [r6, r1]
+ cmp r3, r2
+ bne _020241DE
+ mov r1, #0x1
+ b _020241E8
+_020241DE:
+ add r4, r4, #0x1
+ add r6, r6, #0x1
+ cmp r4, #0x1c
+ blt _020241D4
+ mov r1, #0x0
+_020241E8:
+ cmp r1, #0x0
+ bne _02024290
+ mov r1, #0x43
+ mov r3, #0x0
+ add r4, r5, #0x0
+ lsl r1, r1, #0x2
+_020241F4:
+ ldrb r2, [r4, r1]
+ cmp r2, #0xff
+ beq _02024202
+ add r3, r3, #0x1
+ add r4, r4, #0x1
+ cmp r3, #0x1c
+ blt _020241F4
+_02024202:
+ cmp r3, #0x1c
+ bge _02024290
+ mov r1, #0x43
+ add r2, r5, r3
+ lsl r1, r1, #0x2
+ strb r0, [r2, r1]
+ pop {r4-r6, pc}
+_02024210:
+ mov r6, #0x67
+ lsl r6, r6, #0x2
+ cmp r4, r6
+ bne _0202422E
+ add r0, r2, #0x0
+ mov r1, #0x70
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r2, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02023FEC
+ pop {r4-r6, pc}
+_0202422E:
+ add r3, r6, #0x1
+ cmp r4, r3
+ bne _0202424A
+ add r0, r2, #0x0
+ mov r1, #0x70
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r2, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02023FEC
+ pop {r4-r6, pc}
+_0202424A:
+ add r3, r6, #0x0
+ add r3, #0xa
+ cmp r4, r3
+ bne _02024268
+ add r0, r2, #0x0
+ mov r1, #0x70
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r2, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02023E70
+ pop {r4-r6, pc}
+_02024268:
+ add r3, r6, #0x0
+ add r3, #0xb
+ cmp r4, r3
+ bne _02024286
+ add r0, r2, #0x0
+ mov r1, #0x70
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r2, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02023E70
+ pop {r4-r6, pc}
+_02024286:
+ sub r6, #0x1a
+ cmp r4, r6
+ bne _02024290
+ bl FUN_0202415C
+_02024290:
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02024294
+FUN_02024294: ; 0x02024294
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ add r0, r1, #0x0
+ bl FUN_02087A50
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_02087A1C
+ cmp r4, #0xe
+ beq _020242C0
+ cmp r0, #0x6
+ beq _020242C0
+ ldr r1, _020242C4 ; =0x00000129
+ add r3, r5, r1
+ ldrb r2, [r3, r4]
+ mov r1, #0x1
+ lsl r1, r0
+ add r0, r2, #0x0
+ orr r0, r1
+ strb r0, [r3, r4]
+_020242C0:
+ pop {r4-r6, pc}
+ nop
+_020242C4: .word 0x00000129
+
+ thumb_func_start FUN_020242C8
+FUN_020242C8: ; 0x020242C8
+ push {r4-r6, lr}
+ add r6, r1, #0x0
+ add r5, r0, #0x0
+ add r0, r6, #0x0
+ mov r1, #0x12
+ add r4, r2, #0x0
+ bl FUN_02068678
+ cmp r0, #0xff
+ bne _020242EA
+ cmp r4, #0x0
+ bne _020242E4
+ mov r0, #0x2
+ pop {r4-r6, pc}
+_020242E4:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4-r6, pc}
+_020242EA:
+ sub r0, r6, #0x1
+ lsl r0, r0, #0x10
+ lsr r2, r0, #0x10
+ mov r1, #0x1
+ mov r0, #0x7
+ add r3, r2, #0x0
+ and r3, r0
+ add r0, r1, #0x0
+ lsl r0, r3
+ asr r3, r2, #0x3
+ add r3, r5, r3
+ add r3, #0x84
+ ldrb r3, [r3, #0x0]
+ tst r0, r3
+ bne _0202430A
+ mov r1, #0x0
+_0202430A:
+ lsl r0, r1, #0x18
+ lsr r1, r0, #0x18
+ cmp r4, #0x1
+ bne _0202433A
+ add r4, r2, #0x0
+ asr r2, r2, #0x3
+ add r2, r5, r2
+ mov r0, #0x7
+ add r2, #0xc4
+ mov r3, #0x1
+ and r4, r0
+ add r0, r3, #0x0
+ ldrb r2, [r2, #0x0]
+ lsl r0, r4
+ tst r0, r2
+ bne _0202432C
+ mov r3, #0x0
+_0202432C:
+ lsl r0, r3, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, r1
+ bne _0202433C
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4-r6, pc}
+_0202433A:
+ add r0, r1, #0x0
+_0202433C:
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02024340
+FUN_02024340: ; 0x02024340
+ push {r4-r5}
+ mov r3, #0x0
+ ldr r5, _02024360 ; =0x020EE942
+ mov r4, #0x1
+ add r1, r3, #0x0
+_0202434A:
+ ldrh r2, [r5, #0x0]
+ cmp r0, r2
+ bne _02024352
+ add r4, r1, #0x0
+_02024352:
+ add r3, r3, #0x1
+ add r5, r5, #0x2
+ cmp r3, #0xb
+ blt _0202434A
+ add r0, r4, #0x0
+ pop {r4-r5}
+ bx lr
+ .balign 4
+_02024360: .word 0x020EE942
+
+ thumb_func_start FUN_02024364
+FUN_02024364: ; 0x02024364
+ ldr r1, _02024374 ; =0x000001EA
+ mov r2, #0x1
+ cmp r0, r1
+ bne _0202436E
+ mov r2, #0x0
+_0202436E:
+ add r0, r2, #0x0
+ bx lr
+ nop
+_02024374: .word 0x000001EA
+
+ thumb_func_start FUN_02024378
+FUN_02024378: ; 0x02024378
+ push {r4, lr}
+ mov r2, #0x4f
+ mov r1, #0x0
+ lsl r2, r2, #0x2
+ add r4, r0, #0x0
+ blx FUN_020DF4A4
+ ldr r0, _020243C0 ; =0xBEEFCAFE
+ mov r1, #0x0
+ str r0, [r4, #0x0]
+ ldr r0, _020243C4 ; =0x00000139
+ mov r2, #0x1c
+ strb r1, [r4, r0]
+ sub r0, #0x2d
+ add r0, r4, r0
+ mov r1, #0xff
+ blx FUN_020DF4A4
+ mov r1, #0xff
+ add r0, r1, #0x0
+ add r0, #0x9
+ strb r1, [r4, r0]
+ add r0, r1, #0x0
+ add r0, #0xa
+ strb r1, [r4, r0]
+ add r0, r1, #0x0
+ add r0, #0xb
+ strb r1, [r4, r0]
+ add r0, r1, #0x0
+ add r0, #0xc
+ strb r1, [r4, r0]
+ add r0, r4, #0x0
+ bl FUN_0202419C
+ pop {r4, pc}
+ nop
+_020243C0: .word 0xBEEFCAFE
+_020243C4: .word 0x00000139
+
+ thumb_func_start FUN_020243C8
+FUN_020243C8: ; 0x020243C8
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ ldr r1, [r6, #0x0]
+ ldr r0, _020243FC ; =0xBEEFCAFE
+ cmp r1, r0
+ beq _020243D8
+ bl ErrorHandling
+_020243D8:
+ ldr r7, _02024400 ; =0x000001ED
+ mov r5, #0x0
+ mov r4, #0x1
+_020243DE:
+ lsl r1, r4, #0x10
+ add r0, r6, #0x0
+ lsr r1, r1, #0x10
+ bl FUN_02024594
+ cmp r0, #0x1
+ bne _020243EE
+ add r5, r5, #0x1
+_020243EE:
+ add r4, r4, #0x1
+ cmp r4, r7
+ ble _020243DE
+ lsl r0, r5, #0x10
+ lsr r0, r0, #0x10
+ pop {r3-r7, pc}
+ nop
+_020243FC: .word 0xBEEFCAFE
+_02024400: .word 0x000001ED
+
+ thumb_func_start FUN_02024404
+FUN_02024404: ; 0x02024404
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ ldr r1, [r6, #0x0]
+ ldr r0, _02024438 ; =0xBEEFCAFE
+ cmp r1, r0
+ beq _02024414
+ bl ErrorHandling
+_02024414:
+ ldr r7, _0202443C ; =0x000001ED
+ mov r5, #0x0
+ mov r4, #0x1
+_0202441A:
+ lsl r1, r4, #0x10
+ add r0, r6, #0x0
+ lsr r1, r1, #0x10
+ bl FUN_020245F0
+ cmp r0, #0x1
+ bne _0202442A
+ add r5, r5, #0x1
+_0202442A:
+ add r4, r4, #0x1
+ cmp r4, r7
+ ble _0202441A
+ lsl r0, r5, #0x10
+ lsr r0, r0, #0x10
+ pop {r3-r7, pc}
+ nop
+_02024438: .word 0xBEEFCAFE
+_0202443C: .word 0x000001ED
+
+ thumb_func_start FUN_02024440
+FUN_02024440: ; 0x02024440
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02024CA4
+ cmp r0, #0x0
+ beq _02024454
+ add r0, r4, #0x0
+ bl FUN_02024404
+ pop {r4, pc}
+_02024454:
+ add r0, r4, #0x0
+ bl FUN_020244A4
+ pop {r4, pc}
+
+ thumb_func_start FUN_0202445C
+FUN_0202445C: ; 0x0202445C
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ ldr r1, [r6, #0x0]
+ ldr r0, _0202449C ; =0xBEEFCAFE
+ cmp r1, r0
+ beq _0202446C
+ bl ErrorHandling
+_0202446C:
+ ldr r7, _020244A0 ; =0x000001ED
+ mov r5, #0x0
+ mov r4, #0x1
+_02024472:
+ lsl r1, r4, #0x10
+ add r0, r6, #0x0
+ lsr r1, r1, #0x10
+ bl FUN_02024594
+ cmp r0, #0x1
+ bne _0202448E
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_02069B40
+ cmp r0, #0x0
+ beq _0202448E
+ add r5, r5, #0x1
+_0202448E:
+ add r4, r4, #0x1
+ cmp r4, r7
+ ble _02024472
+ lsl r0, r5, #0x10
+ lsr r0, r0, #0x10
+ pop {r3-r7, pc}
+ nop
+_0202449C: .word 0xBEEFCAFE
+_020244A0: .word 0x000001ED
+
+ thumb_func_start FUN_020244A4
+FUN_020244A4: ; 0x020244A4
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ ldr r1, [r6, #0x0]
+ ldr r0, _020244E4 ; =0xBEEFCAFE
+ cmp r1, r0
+ beq _020244B4
+ bl ErrorHandling
+_020244B4:
+ ldr r7, _020244E8 ; =0x000001ED
+ mov r5, #0x0
+ mov r4, #0x1
+_020244BA:
+ lsl r1, r4, #0x10
+ add r0, r6, #0x0
+ lsr r1, r1, #0x10
+ bl FUN_020245F0
+ cmp r0, #0x1
+ bne _020244D6
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_02069B40
+ cmp r0, #0x0
+ beq _020244D6
+ add r5, r5, #0x1
+_020244D6:
+ add r4, r4, #0x1
+ cmp r4, r7
+ ble _020244BA
+ lsl r0, r5, #0x10
+ lsr r0, r0, #0x10
+ pop {r3-r7, pc}
+ nop
+_020244E4: .word 0xBEEFCAFE
+_020244E8: .word 0x000001ED
+
+ thumb_func_start FUN_020244EC
+FUN_020244EC: ; 0x020244EC
+ push {r3, lr}
+ bl FUN_02024518
+ ldr r1, _02024500 ; =0x000001E2
+ cmp r0, r1
+ blo _020244FC
+ mov r0, #0x1
+ pop {r3, pc}
+_020244FC:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+_02024500: .word 0x000001E2
+
+ thumb_func_start FUN_02024504
+FUN_02024504: ; 0x02024504
+ push {r3, lr}
+ bl FUN_02024550
+ cmp r0, #0x96
+ blo _02024512
+ mov r0, #0x1
+ pop {r3, pc}
+_02024512:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02024518
+FUN_02024518: ; 0x02024518
+ push {r3-r7, lr}
+ ldr r7, _0202454C ; =0x000001ED
+ add r6, r0, #0x0
+ mov r5, #0x0
+ mov r4, #0x1
+_02024522:
+ lsl r1, r4, #0x10
+ add r0, r6, #0x0
+ lsr r1, r1, #0x10
+ bl FUN_02024594
+ cmp r0, #0x1
+ bne _02024542
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_02024340
+ cmp r0, #0x1
+ bne _02024542
+ add r0, r5, #0x1
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+_02024542:
+ add r4, r4, #0x1
+ cmp r4, r7
+ ble _02024522
+ add r0, r5, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+_0202454C: .word 0x000001ED
+
+ thumb_func_start FUN_02024550
+FUN_02024550: ; 0x02024550
+ push {r3-r7, lr}
+ ldr r7, _02024590 ; =0x000001ED
+ add r6, r0, #0x0
+ mov r5, #0x0
+ mov r4, #0x1
+_0202455A:
+ lsl r1, r4, #0x10
+ add r0, r6, #0x0
+ lsr r1, r1, #0x10
+ bl FUN_020245F0
+ cmp r0, #0x1
+ bne _02024586
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_02069B40
+ cmp r0, #0x0
+ beq _02024586
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_02024364
+ cmp r0, #0x1
+ bne _02024586
+ add r0, r5, #0x1
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+_02024586:
+ add r4, r4, #0x1
+ cmp r4, r7
+ ble _0202455A
+ add r0, r5, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+_02024590: .word 0x000001ED
+
+ thumb_func_start FUN_02024594
+FUN_02024594: ; 0x02024594
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ ldr r1, [r5, #0x0]
+ ldr r0, _020245E8 ; =0xBEEFCAFE
+ cmp r1, r0
+ beq _020245A6
+ bl ErrorHandling
+_020245A6:
+ cmp r4, #0x0
+ beq _020245B0
+ ldr r0, _020245EC ; =0x000001ED
+ cmp r4, r0
+ bls _020245B8
+_020245B0:
+ bl ErrorHandling
+ mov r0, #0x1
+ b _020245BA
+_020245B8:
+ mov r0, #0x0
+_020245BA:
+ cmp r0, #0x0
+ beq _020245C2
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_020245C2:
+ sub r0, r4, #0x1
+ lsl r0, r0, #0x10
+ lsr r2, r0, #0x10
+ mov r0, #0x1
+ mov r1, #0x7
+ and r1, r2
+ add r3, r0, #0x0
+ lsl r3, r1
+ asr r1, r2, #0x3
+ add r2, r5, r1
+ ldrb r1, [r2, #0x4]
+ tst r1, r3
+ beq _020245E4
+ add r2, #0x44
+ ldrb r1, [r2, #0x0]
+ tst r1, r3
+ bne _020245E6
+_020245E4:
+ mov r0, #0x0
+_020245E6:
+ pop {r3-r5, pc}
+ .balign 4
+_020245E8: .word 0xBEEFCAFE
+_020245EC: .word 0x000001ED
+
+ thumb_func_start FUN_020245F0
+FUN_020245F0: ; 0x020245F0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ ldr r1, [r5, #0x0]
+ ldr r0, _02024640 ; =0xBEEFCAFE
+ cmp r1, r0
+ beq _02024602
+ bl ErrorHandling
+_02024602:
+ cmp r4, #0x0
+ beq _0202460C
+ ldr r0, _02024644 ; =0x000001ED
+ cmp r4, r0
+ bls _02024614
+_0202460C:
+ bl ErrorHandling
+ mov r0, #0x1
+ b _02024616
+_02024614:
+ mov r0, #0x0
+_02024616:
+ cmp r0, #0x0
+ beq _0202461E
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0202461E:
+ sub r0, r4, #0x1
+ lsl r0, r0, #0x10
+ lsr r3, r0, #0x10
+ mov r0, #0x1
+ mov r1, #0x7
+ and r1, r3
+ add r2, r0, #0x0
+ lsl r2, r1
+ asr r1, r3, #0x3
+ add r1, r5, r1
+ add r1, #0x44
+ ldrb r1, [r1, #0x0]
+ tst r1, r2
+ bne _0202463C
+ mov r0, #0x0
+_0202463C:
+ pop {r3-r5, pc}
+ nop
+_02024640: .word 0xBEEFCAFE
+_02024644: .word 0x000001ED
+
+ thumb_func_start FUN_02024648
+FUN_02024648: ; 0x02024648
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ ldr r1, [r5, #0x0]
+ ldr r0, _02024670 ; =0xBEEFCAFE
+ cmp r1, r0
+ beq _0202465A
+ bl ErrorHandling
+_0202465A:
+ cmp r4, #0x0
+ bne _02024666
+ mov r0, #0x41
+ lsl r0, r0, #0x2
+ ldr r6, [r5, r0]
+ b _0202466A
+_02024666:
+ bl ErrorHandling
+_0202466A:
+ add r0, r6, #0x0
+ pop {r4-r6, pc}
+ nop
+_02024670: .word 0xBEEFCAFE
+
+ thumb_func_start FUN_02024674
+FUN_02024674: ; 0x02024674
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ ldr r1, [r5, #0x0]
+ ldr r0, _020246D4 ; =0xBEEFCAFE
+ add r6, r2, #0x0
+ cmp r1, r0
+ beq _02024688
+ bl ErrorHandling
+_02024688:
+ cmp r4, #0x0
+ beq _02024692
+ ldr r0, _020246D8 ; =0x000001ED
+ cmp r4, r0
+ bls _0202469A
+_02024692:
+ bl ErrorHandling
+ mov r0, #0x1
+ b _0202469C
+_0202469A:
+ mov r0, #0x0
+_0202469C:
+ cmp r0, #0x0
+ beq _020246A6
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4-r6, pc}
+_020246A6:
+ sub r0, r4, #0x1
+ lsl r0, r0, #0x10
+ lsr r2, r0, #0x10
+ add r3, r2, #0x0
+ asr r2, r2, #0x3
+ add r2, r5, r2
+ mov r0, #0x7
+ add r2, #0x44
+ mov r1, #0x1
+ and r3, r0
+ ldrb r2, [r2, #0x0]
+ lsl r1, r3
+ tst r1, r2
+ beq _020246CE
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_020242C8
+ pop {r4-r6, pc}
+_020246CE:
+ sub r0, #0x8
+ pop {r4-r6, pc}
+ nop
+_020246D4: .word 0xBEEFCAFE
+_020246D8: .word 0x000001ED
+
+ thumb_func_start FUN_020246DC
+FUN_020246DC: ; 0x020246DC
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ ldr r1, [r5, #0x0]
+ ldr r0, _02024718 ; =0xBEEFCAFE
+ cmp r1, r0
+ beq _020246EE
+ bl ErrorHandling
+_020246EE:
+ mov r0, #0x43
+ mov r2, #0x0
+ lsl r0, r0, #0x2
+_020246F4:
+ add r1, r5, r2
+ ldrb r1, [r1, r0]
+ cmp r1, #0xff
+ beq _02024702
+ add r2, r2, #0x1
+ cmp r2, #0x1c
+ blt _020246F4
+_02024702:
+ cmp r2, r4
+ bgt _0202470C
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r5, pc}
+_0202470C:
+ mov r0, #0x43
+ add r1, r5, r4
+ lsl r0, r0, #0x2
+ ldrb r0, [r1, r0]
+ pop {r3-r5, pc}
+ nop
+_02024718: .word 0xBEEFCAFE
+
+ thumb_func_start FUN_0202471C
+FUN_0202471C: ; 0x0202471C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x0]
+ ldr r0, _02024744 ; =0xBEEFCAFE
+ cmp r1, r0
+ beq _0202472C
+ bl ErrorHandling
+_0202472C:
+ mov r1, #0x43
+ mov r0, #0x0
+ lsl r1, r1, #0x2
+_02024732:
+ add r2, r4, r0
+ ldrb r2, [r2, r1]
+ cmp r2, #0xff
+ beq _02024740
+ add r0, r0, #0x1
+ cmp r0, #0x1c
+ blt _02024732
+_02024740:
+ pop {r4, pc}
+ nop
+_02024744: .word 0xBEEFCAFE
+
+ thumb_func_start FUN_02024748
+FUN_02024748: ; 0x02024748
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ ldr r1, [r5, #0x0]
+ ldr r0, _0202479C ; =0xBEEFCAFE
+ cmp r1, r0
+ beq _0202475A
+ bl ErrorHandling
+_0202475A:
+ ldr r1, _020247A0 ; =0x000001A6
+ add r0, r5, #0x0
+ bl FUN_02023D8C
+ cmp r0, r4
+ bgt _0202476C
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r5, pc}
+_0202476C:
+ cmp r4, #0x2
+ blt _02024774
+ bl ErrorHandling
+_02024774:
+ add r0, r4, #0x1
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ sub r0, r0, #0x1
+ lsl r0, r0, #0x10
+ lsr r2, r0, #0x10
+ mov r0, #0x1
+ mov r1, #0x7
+ and r1, r2
+ add r3, r0, #0x0
+ lsl r3, r1
+ asr r1, r2, #0x3
+ add r2, r5, r1
+ mov r1, #0x42
+ lsl r1, r1, #0x2
+ ldrb r1, [r2, r1]
+ tst r1, r3
+ bne _0202479A
+ mov r0, #0x0
+_0202479A:
+ pop {r3-r5, pc}
+ .balign 4
+_0202479C: .word 0xBEEFCAFE
+_020247A0: .word 0x000001A6
+
+ thumb_func_start FUN_020247A4
+FUN_020247A4: ; 0x020247A4
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x0]
+ ldr r0, _020247C0 ; =0xBEEFCAFE
+ cmp r1, r0
+ beq _020247B4
+ bl ErrorHandling
+_020247B4:
+ ldr r1, _020247C4 ; =0x000001A6
+ add r0, r4, #0x0
+ bl FUN_02023D8C
+ pop {r4, pc}
+ nop
+_020247C0: .word 0xBEEFCAFE
+_020247C4: .word 0x000001A6
+
+ thumb_func_start FUN_020247C8
+FUN_020247C8: ; 0x020247C8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ ldr r1, [r5, #0x0]
+ ldr r0, _0202481C ; =0xBEEFCAFE
+ cmp r1, r0
+ beq _020247DA
+ bl ErrorHandling
+_020247DA:
+ ldr r1, _02024820 ; =0x000001A7
+ add r0, r5, #0x0
+ bl FUN_02023D8C
+ cmp r0, r4
+ bgt _020247EC
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r5, pc}
+_020247EC:
+ cmp r4, #0x2
+ blt _020247F4
+ bl ErrorHandling
+_020247F4:
+ add r0, r4, #0x1
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ sub r0, r0, #0x1
+ lsl r0, r0, #0x10
+ lsr r2, r0, #0x10
+ mov r0, #0x1
+ mov r1, #0x7
+ and r1, r2
+ add r3, r0, #0x0
+ lsl r3, r1
+ asr r1, r2, #0x3
+ add r2, r5, r1
+ ldr r1, _02024824 ; =0x00000109
+ ldrb r1, [r2, r1]
+ tst r1, r3
+ bne _02024818
+ mov r0, #0x0
+_02024818:
+ pop {r3-r5, pc}
+ nop
+_0202481C: .word 0xBEEFCAFE
+_02024820: .word 0x000001A7
+_02024824: .word 0x00000109
+
+ thumb_func_start FUN_02024828
+FUN_02024828: ; 0x02024828
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x0]
+ ldr r0, _02024844 ; =0xBEEFCAFE
+ cmp r1, r0
+ beq _02024838
+ bl ErrorHandling
+_02024838:
+ ldr r1, _02024848 ; =0x000001A7
+ add r0, r4, #0x0
+ bl FUN_02023D8C
+ pop {r4, pc}
+ nop
+_02024844: .word 0xBEEFCAFE
+_02024848: .word 0x000001A7
+
+ thumb_func_start FUN_0202484C
+FUN_0202484C: ; 0x0202484C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ ldr r1, [r5, #0x0]
+ ldr r0, _02024894 ; =0xBEEFCAFE
+ cmp r1, r0
+ beq _0202485E
+ bl ErrorHandling
+_0202485E:
+ mov r1, #0x67
+ add r0, r5, #0x0
+ lsl r1, r1, #0x2
+ bl FUN_02023F2C
+ cmp r0, r4
+ bgt _02024872
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r5, pc}
+_02024872:
+ cmp r4, #0x3
+ blt _0202487A
+ bl ErrorHandling
+_0202487A:
+ lsl r0, r4, #0x10
+ lsr r2, r0, #0x10
+ asr r0, r2, #0x2
+ add r1, r5, r0
+ ldr r0, _02024898 ; =0x0000010A
+ ldrb r1, [r1, r0]
+ lsl r0, r2, #0x1e
+ lsr r0, r0, #0x1d
+ asr r1, r0
+ mov r0, #0x3
+ and r0, r1
+ pop {r3-r5, pc}
+ nop
+_02024894: .word 0xBEEFCAFE
+_02024898: .word 0x0000010A
+
+ thumb_func_start FUN_0202489C
+FUN_0202489C: ; 0x0202489C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x0]
+ ldr r0, _020248B8 ; =0xBEEFCAFE
+ cmp r1, r0
+ beq _020248AC
+ bl ErrorHandling
+_020248AC:
+ mov r1, #0x67
+ add r0, r4, #0x0
+ lsl r1, r1, #0x2
+ bl FUN_02023F2C
+ pop {r4, pc}
+ .balign 4
+_020248B8: .word 0xBEEFCAFE
+
+ thumb_func_start FUN_020248BC
+FUN_020248BC: ; 0x020248BC
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ ldr r1, [r5, #0x0]
+ ldr r0, _02024900 ; =0xBEEFCAFE
+ cmp r1, r0
+ beq _020248CE
+ bl ErrorHandling
+_020248CE:
+ ldr r1, _02024904 ; =0x0000019D
+ add r0, r5, #0x0
+ bl FUN_02023F2C
+ cmp r0, r4
+ bgt _020248E0
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r5, pc}
+_020248E0:
+ cmp r4, #0x3
+ blt _020248E8
+ bl ErrorHandling
+_020248E8:
+ lsl r0, r4, #0x10
+ lsr r2, r0, #0x10
+ asr r0, r2, #0x2
+ add r1, r5, r0
+ ldr r0, _02024908 ; =0x0000010B
+ ldrb r1, [r1, r0]
+ lsl r0, r2, #0x1e
+ lsr r0, r0, #0x1d
+ asr r1, r0
+ mov r0, #0x3
+ and r0, r1
+ pop {r3-r5, pc}
+ .balign 4
+_02024900: .word 0xBEEFCAFE
+_02024904: .word 0x0000019D
+_02024908: .word 0x0000010B
+
+ thumb_func_start FUN_0202490C
+FUN_0202490C: ; 0x0202490C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x0]
+ ldr r0, _02024928 ; =0xBEEFCAFE
+ cmp r1, r0
+ beq _0202491C
+ bl ErrorHandling
+_0202491C:
+ ldr r1, _0202492C ; =0x0000019D
+ add r0, r4, #0x0
+ bl FUN_02023F2C
+ pop {r4, pc}
+ nop
+_02024928: .word 0xBEEFCAFE
+_0202492C: .word 0x0000019D
+
+ thumb_func_start FUN_02024930
+FUN_02024930: ; 0x02024930
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ ldr r1, [r5, #0x0]
+ ldr r0, _0202496C ; =0xBEEFCAFE
+ cmp r1, r0
+ beq _02024942
+ bl ErrorHandling
+_02024942:
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x2
+ bhs _02024958
+ lsl r0, r0, #0x2
+ ldr r1, [r5, #0x40]
+ add r0, #0x18
+ lsr r1, r0
+ mov r0, #0xf
+ and r0, r1
+ pop {r3-r5, pc}
+_02024958:
+ add r5, #0x80
+ sub r0, r0, #0x2
+ lsl r0, r0, #0x18
+ ldr r1, [r5, #0x0]
+ lsr r0, r0, #0x16
+ add r0, #0x18
+ lsr r1, r0
+ mov r0, #0xf
+ and r0, r1
+ pop {r3-r5, pc}
+ .balign 4
+_0202496C: .word 0xBEEFCAFE
+
+ thumb_func_start FUN_02024970
+FUN_02024970: ; 0x02024970
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x0]
+ ldr r0, _02024988 ; =0xBEEFCAFE
+ cmp r1, r0
+ beq _02024980
+ bl ErrorHandling
+_02024980:
+ add r0, r4, #0x0
+ bl FUN_020240D0
+ pop {r4, pc}
+ .balign 4
+_02024988: .word 0xBEEFCAFE
+
+ thumb_func_start FUN_0202498C
+FUN_0202498C: ; 0x0202498C
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ str r1, [sp, #0x0]
+ add r0, r1, #0x0
+ mov r1, #0x5
+ mov r2, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x4]
+ mov r1, #0x0
+ ldr r0, [sp, #0x0]
+ add r2, r1, #0x0
+ bl FUN_020671BC
+ add r7, r0, #0x0
+ ldr r0, [sp, #0x0]
+ bl FUN_020689E0
+ add r6, r0, #0x0
+ ldr r1, [r5, #0x0]
+ ldr r0, _02024AE4 ; =0xBEEFCAFE
+ cmp r1, r0
+ beq _020249C4
+ bl ErrorHandling
+_020249C4:
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ beq _020249D0
+ ldr r1, _02024AE8 ; =0x000001ED
+ cmp r0, r1
+ bls _020249D8
+_020249D0:
+ bl ErrorHandling
+ mov r0, #0x1
+ b _020249DA
+_020249D8:
+ mov r0, #0x0
+_020249DA:
+ cmp r0, #0x0
+ bne _02024ADE
+ ldr r0, [sp, #0x4]
+ mov r2, #0x1
+ sub r0, r0, #0x1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ mov r0, #0x7
+ and r0, r4
+ add r1, r2, #0x0
+ lsl r1, r0
+ asr r0, r4, #0x3
+ add r3, r5, r0
+ add r3, #0x44
+ ldrb r3, [r3, #0x0]
+ tst r3, r1
+ bne _02024A70
+ ldr r1, _02024AEC ; =0x00000147
+ ldr r0, [sp, #0x4]
+ cmp r0, r1
+ bne _02024A08
+ sub r1, #0x43
+ str r7, [r5, r1]
+_02024A08:
+ lsl r0, r6, #0x18
+ lsr r6, r0, #0x18
+ cmp r6, #0x2
+ bls _02024A14
+ bl ErrorHandling
+_02024A14:
+ cmp r6, #0x2
+ bne _02024A1A
+ mov r6, #0x0
+_02024A1A:
+ cmp r6, #0x2
+ blo _02024A22
+ bl ErrorHandling
+_02024A22:
+ add r2, r5, #0x0
+ mov r0, #0x7
+ add r3, r4, #0x0
+ and r3, r0
+ mov r0, #0x1
+ lsl r0, r3
+ add r2, #0xc4
+ asr r1, r4, #0x3
+ ldrb r7, [r2, r1]
+ mvn r0, r0
+ and r0, r7
+ strb r0, [r2, r1]
+ add r0, r6, #0x0
+ ldrb r7, [r2, r1]
+ lsl r0, r3
+ orr r0, r7
+ strb r0, [r2, r1]
+ cmp r6, #0x2
+ blo _02024A4C
+ bl ErrorHandling
+_02024A4C:
+ add r1, r5, #0x0
+ mov r0, #0x7
+ add r2, r4, #0x0
+ and r2, r0
+ mov r3, #0x1
+ lsl r3, r2
+ add r1, #0x84
+ asr r0, r4, #0x3
+ ldrb r7, [r1, r0]
+ mvn r3, r3
+ lsl r6, r2
+ and r3, r7
+ strb r3, [r1, r0]
+ ldrb r3, [r1, r0]
+ add r2, r3, #0x0
+ orr r2, r6
+ strb r2, [r1, r0]
+ b _02024AC0
+_02024A70:
+ add r0, r5, r0
+ add r0, #0x84
+ ldrb r0, [r0, #0x0]
+ tst r0, r1
+ bne _02024A7C
+ mov r2, #0x0
+_02024A7C:
+ lsl r0, r2, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, r6
+ beq _02024AC0
+ lsl r0, r6, #0x18
+ lsr r6, r0, #0x18
+ cmp r6, #0x2
+ bls _02024A90
+ bl ErrorHandling
+_02024A90:
+ cmp r6, #0x2
+ bne _02024A96
+ mov r6, #0x0
+_02024A96:
+ cmp r6, #0x2
+ blo _02024A9E
+ bl ErrorHandling
+_02024A9E:
+ add r1, r5, #0x0
+ mov r0, #0x7
+ add r2, r4, #0x0
+ and r2, r0
+ mov r3, #0x1
+ lsl r3, r2
+ add r1, #0xc4
+ asr r0, r4, #0x3
+ ldrb r7, [r1, r0]
+ mvn r3, r3
+ lsl r6, r2
+ and r3, r7
+ strb r3, [r1, r0]
+ ldrb r3, [r1, r0]
+ add r2, r3, #0x0
+ orr r2, r6
+ strb r2, [r1, r0]
+_02024AC0:
+ ldr r1, [sp, #0x4]
+ ldr r2, [sp, #0x0]
+ add r0, r5, #0x0
+ bl FUN_020241B8
+ mov r1, #0x7
+ add r5, #0x44
+ asr r0, r4, #0x3
+ ldrb r3, [r5, r0]
+ mov r2, #0x1
+ and r1, r4
+ lsl r2, r1
+ add r1, r3, #0x0
+ orr r1, r2
+ strb r1, [r5, r0]
+_02024ADE:
+ add sp, #0x8
+ pop {r3-r7, pc}
+ nop
+_02024AE4: .word 0xBEEFCAFE
+_02024AE8: .word 0x000001ED
+_02024AEC: .word 0x00000147
+
+ thumb_func_start FUN_02024AF0
+FUN_02024AF0: ; 0x02024AF0
+ push {r4-r7, lr}
+ sub sp, #0x14
+ add r4, r0, #0x0
+ str r1, [sp, #0x0]
+ add r0, r1, #0x0
+ mov r1, #0x5
+ mov r2, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x10
+ lsr r6, r0, #0x10
+ ldr r0, [sp, #0x0]
+ mov r1, #0xc
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0x8]
+ mov r1, #0x0
+ ldr r0, [sp, #0x0]
+ add r2, r1, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x0]
+ bl FUN_020689E0
+ add r7, r0, #0x0
+ ldr r1, [r4, #0x0]
+ ldr r0, _02024C78 ; =0xBEEFCAFE
+ cmp r1, r0
+ beq _02024B32
+ bl ErrorHandling
+_02024B32:
+ cmp r6, #0x0
+ beq _02024B3C
+ ldr r0, _02024C7C ; =0x000001ED
+ cmp r6, r0
+ bls _02024B44
+_02024B3C:
+ bl ErrorHandling
+ mov r0, #0x1
+ b _02024B46
+_02024B44:
+ mov r0, #0x0
+_02024B46:
+ cmp r0, #0x0
+ beq _02024B4C
+ b _02024C72
+_02024B4C:
+ sub r0, r6, #0x1
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ mov r0, #0x1
+ mov r1, #0x7
+ and r1, r5
+ add r2, r0, #0x0
+ asr r3, r5, #0x3
+ lsl r2, r1
+ add r1, r4, r3
+ add r1, #0x44
+ ldrb r1, [r1, #0x0]
+ tst r1, r2
+ bne _02024BEA
+ ldr r1, _02024C80 ; =0x00000147
+ cmp r6, r1
+ bne _02024B74
+ ldr r0, [sp, #0x4]
+ sub r1, #0x43
+ str r0, [r4, r1]
+_02024B74:
+ lsl r0, r7, #0x18
+ lsr r7, r0, #0x18
+ cmp r7, #0x2
+ bls _02024B80
+ bl ErrorHandling
+_02024B80:
+ cmp r7, #0x2
+ bne _02024B86
+ mov r7, #0x0
+_02024B86:
+ cmp r7, #0x2
+ blo _02024B8E
+ bl ErrorHandling
+_02024B8E:
+ mov r0, #0x7
+ and r0, r5
+ str r0, [sp, #0x10]
+ add r0, r4, #0x0
+ add r0, #0xc4
+ asr r3, r5, #0x3
+ ldrb r1, [r0, r3]
+ mov r2, #0x1
+ str r1, [sp, #0xc]
+ ldr r1, [sp, #0x10]
+ lsl r2, r1
+ ldr r1, [sp, #0xc]
+ mvn r2, r2
+ and r1, r2
+ strb r1, [r0, r3]
+ ldrb r1, [r0, r3]
+ add r2, r7, #0x0
+ mov r12, r1
+ ldr r1, [sp, #0x10]
+ lsl r2, r1
+ mov r1, r12
+ orr r1, r2
+ strb r1, [r0, r3]
+ cmp r7, #0x2
+ blo _02024BC4
+ bl ErrorHandling
+_02024BC4:
+ add r1, r4, #0x0
+ mov r0, #0x7
+ add r2, r5, #0x0
+ and r2, r0
+ mov r3, #0x1
+ lsl r3, r2
+ add r1, #0x84
+ asr r0, r5, #0x3
+ ldrb r5, [r1, r0]
+ mvn r3, r3
+ and r3, r5
+ strb r3, [r1, r0]
+ add r5, r7, #0x0
+ ldrb r3, [r1, r0]
+ lsl r5, r2
+ add r2, r3, #0x0
+ orr r2, r5
+ strb r2, [r1, r0]
+ b _02024C3C
+_02024BEA:
+ add r1, r4, r3
+ add r1, #0x84
+ ldrb r1, [r1, #0x0]
+ tst r1, r2
+ bne _02024BF6
+ mov r0, #0x0
+_02024BF6:
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, r7
+ beq _02024C3C
+ lsl r0, r7, #0x18
+ lsr r7, r0, #0x18
+ cmp r7, #0x2
+ bls _02024C0A
+ bl ErrorHandling
+_02024C0A:
+ cmp r7, #0x2
+ bne _02024C10
+ mov r7, #0x0
+_02024C10:
+ cmp r7, #0x2
+ blo _02024C18
+ bl ErrorHandling
+_02024C18:
+ add r1, r4, #0x0
+ mov r0, #0x7
+ add r2, r5, #0x0
+ and r2, r0
+ mov r3, #0x1
+ lsl r3, r2
+ add r1, #0xc4
+ asr r0, r5, #0x3
+ ldrb r5, [r1, r0]
+ mvn r3, r3
+ and r3, r5
+ strb r3, [r1, r0]
+ add r5, r7, #0x0
+ ldrb r3, [r1, r0]
+ lsl r5, r2
+ add r2, r3, #0x0
+ orr r2, r5
+ strb r2, [r1, r0]
+_02024C3C:
+ ldr r2, [sp, #0x0]
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ bl FUN_020241B8
+ ldr r2, [sp, #0x8]
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ bl FUN_02024294
+ sub r0, r6, #0x1
+ lsl r0, r0, #0x10
+ lsr r6, r0, #0x10
+ add r1, r4, #0x4
+ asr r0, r6, #0x3
+ mov r2, #0x7
+ ldrb r5, [r1, r0]
+ mov r3, #0x1
+ and r2, r6
+ lsl r3, r2
+ add r2, r5, #0x0
+ orr r2, r3
+ add r4, #0x44
+ strb r2, [r1, r0]
+ ldrb r1, [r4, r0]
+ orr r1, r3
+ strb r1, [r4, r0]
+_02024C72:
+ add sp, #0x14
+ pop {r4-r7, pc}
+ nop
+_02024C78: .word 0xBEEFCAFE
+_02024C7C: .word 0x000001ED
+_02024C80: .word 0x00000147
+
+ thumb_func_start FUN_02024C84
+FUN_02024C84: ; 0x02024C84
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x0]
+ ldr r0, _02024C9C ; =0xBEEFCAFE
+ cmp r1, r0
+ beq _02024C94
+ bl ErrorHandling
+_02024C94:
+ ldr r0, _02024CA0 ; =0x00000139
+ mov r1, #0x1
+ strb r1, [r4, r0]
+ pop {r4, pc}
+ .balign 4
+_02024C9C: .word 0xBEEFCAFE
+_02024CA0: .word 0x00000139
+
+ thumb_func_start FUN_02024CA4
+FUN_02024CA4: ; 0x02024CA4
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x0]
+ ldr r0, _02024CBC ; =0xBEEFCAFE
+ cmp r1, r0
+ beq _02024CB4
+ bl ErrorHandling
+_02024CB4:
+ ldr r0, _02024CC0 ; =0x00000139
+ ldrb r0, [r4, r0]
+ pop {r4, pc}
+ nop
+_02024CBC: .word 0xBEEFCAFE
+_02024CC0: .word 0x00000139
+
+ thumb_func_start FUN_02024CC4
+FUN_02024CC4: ; 0x02024CC4
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x0]
+ ldr r0, _02024CDC ; =0xBEEFCAFE
+ cmp r1, r0
+ beq _02024CD4
+ bl ErrorHandling
+_02024CD4:
+ mov r0, #0x4a
+ lsl r0, r0, #0x2
+ ldrb r0, [r4, r0]
+ pop {r4, pc}
+ .balign 4
+_02024CDC: .word 0xBEEFCAFE
+
+ thumb_func_start FUN_02024CE0
+FUN_02024CE0: ; 0x02024CE0
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x0]
+ ldr r0, _02024CFC ; =0xBEEFCAFE
+ cmp r1, r0
+ beq _02024CF0
+ bl ErrorHandling
+_02024CF0:
+ mov r0, #0x4a
+ mov r1, #0x1
+ lsl r0, r0, #0x2
+ strb r1, [r4, r0]
+ pop {r4, pc}
+ nop
+_02024CFC: .word 0xBEEFCAFE
+
+ thumb_func_start FUN_02024D00
+FUN_02024D00: ; 0x02024D00
+ push {r4-r6, lr}
+ add r6, r2, #0x0
+ add r4, r0, #0x0
+ add r5, r1, #0x0
+ cmp r6, #0x8
+ blo _02024D10
+ bl ErrorHandling
+_02024D10:
+ ldr r1, [r4, #0x0]
+ ldr r0, _02024D44 ; =0xBEEFCAFE
+ cmp r1, r0
+ beq _02024D1C
+ bl ErrorHandling
+_02024D1C:
+ add r0, r5, #0x0
+ bl FUN_02087A50
+ add r5, r0, #0x0
+ cmp r5, #0xe
+ bne _02024D2C
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_02024D2C:
+ add r0, r6, #0x0
+ bl FUN_02087A1C
+ mov r1, #0x1
+ add r2, r1, #0x0
+ lsl r2, r0
+ ldr r0, _02024D48 ; =0x00000129
+ add r1, r4, r5
+ ldrb r0, [r1, r0]
+ and r0, r2
+ pop {r4-r6, pc}
+ nop
+_02024D44: .word 0xBEEFCAFE
+_02024D48: .word 0x00000129
+
+ thumb_func_start FUN_02024D4C
+FUN_02024D4C: ; 0x02024D4C
+ ldr r1, _02024D54 ; =0x00000137
+ mov r2, #0x1
+ strb r2, [r0, r1]
+ bx lr
+ .balign 4
+_02024D54: .word 0x00000137
+
+ thumb_func_start FUN_02024D58
+FUN_02024D58: ; 0x02024D58
+ ldr r1, _02024D60 ; =0x00000137
+ ldrb r0, [r0, r1]
+ bx lr
+ nop
+_02024D60: .word 0x00000137
+
+ thumb_func_start FUN_02024D64
+FUN_02024D64: ; 0x02024D64
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x0]
+ ldr r0, _02024D7C ; =0xBEEFCAFE
+ cmp r1, r0
+ beq _02024D74
+ bl ErrorHandling
+_02024D74:
+ mov r0, #0x4e
+ lsl r0, r0, #0x2
+ ldrb r0, [r4, r0]
+ pop {r4, pc}
+ .balign 4
+_02024D7C: .word 0xBEEFCAFE
+
+ thumb_func_start FUN_02024D80
+FUN_02024D80: ; 0x02024D80
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x0]
+ ldr r0, _02024D9C ; =0xBEEFCAFE
+ cmp r1, r0
+ beq _02024D90
+ bl ErrorHandling
+_02024D90:
+ mov r0, #0x4e
+ mov r1, #0x1
+ lsl r0, r0, #0x2
+ strb r1, [r4, r0]
+ pop {r4, pc}
+ nop
+_02024D9C: .word 0xBEEFCAFE
+
+ thumb_func_start FUN_02024DA0
+FUN_02024DA0: ; 0x02024DA0
+ ldr r3, _02024DA8 ; =FUN_02022610
+ mov r1, #0x7
+ bx r3
+ nop
+_02024DA8: .word FUN_02022610
+
+ thumb_func_start FUN_02024DAC
+FUN_02024DAC: ; 0x02024DAC
+ push {r3-r5, lr}
+ add r4, r2, #0x0
+ ldr r2, _02024E60 ; =0x0000019D
+ add r5, r0, #0x0
+ cmp r1, r2
+ bgt _02024DD6
+ sub r3, r2, #0x1
+ cmp r1, r3
+ blt _02024DC6
+ beq _02024E24
+ cmp r1, r2
+ beq _02024E36
+ b _02024E5A
+_02024DC6:
+ cmp r1, #0xc9
+ bgt _02024DCE
+ beq _02024DEE
+ b _02024E5A
+_02024DCE:
+ sub r2, #0x1b
+ cmp r1, r2
+ beq _02024E48
+ b _02024E5A
+_02024DD6:
+ add r3, r2, #0x0
+ add r3, #0x9
+ cmp r1, r3
+ bgt _02024DE6
+ add r2, #0x9
+ cmp r1, r2
+ beq _02024E00
+ b _02024E5A
+_02024DE6:
+ add r2, #0xa
+ cmp r1, r2
+ beq _02024E12
+ b _02024E5A
+_02024DEE:
+ bl FUN_0202471C
+ cmp r4, r0
+ bhs _02024E5A
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_020246DC
+ pop {r3-r5, pc}
+_02024E00:
+ bl FUN_020247A4
+ cmp r4, r0
+ bhs _02024E5A
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02024748
+ pop {r3-r5, pc}
+_02024E12:
+ bl FUN_02024828
+ cmp r4, r0
+ bhs _02024E5A
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_020247C8
+ pop {r3-r5, pc}
+_02024E24:
+ bl FUN_0202489C
+ cmp r4, r0
+ bhs _02024E5A
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0202484C
+ pop {r3-r5, pc}
+_02024E36:
+ bl FUN_0202490C
+ cmp r4, r0
+ bhs _02024E5A
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_020248BC
+ pop {r3-r5, pc}
+_02024E48:
+ bl FUN_02024970
+ cmp r4, r0
+ bhs _02024E5A
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02024930
+ pop {r3-r5, pc}
+_02024E5A:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ nop
+_02024E60: .word 0x0000019D
+
+ thumb_func_start FUN_02024E64
+FUN_02024E64: ; 0x02024E64
+ ldr r0, _02024E68 ; =0x0000074C
+ bx lr
+ .balign 4
+_02024E68: .word 0x0000074C
+
+ thumb_func_start FUN_02024E6C
+FUN_02024E6C: ; 0x02024E6C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r2, _02024EA4 ; =0x0000074C
+ mov r0, #0x0
+ add r1, r4, #0x0
+ blx MIi_CpuClearFast
+ add r0, r4, #0x0
+ bl FUN_020250A4
+ mov r0, #0x7
+ lsl r0, r0, #0x8
+ add r0, r4, r0
+ bl FUN_02025484
+ ldr r1, _02024EA8 ; =0x00000724
+ ldr r0, _02024EAC ; =0x0000FFFF
+ add r1, r4, r1
+ mov r2, #0x8
+ blx MIi_CpuClear16
+ ldr r1, _02024EB0 ; =0x00000734
+ ldr r0, _02024EAC ; =0x0000FFFF
+ add r1, r4, r1
+ mov r2, #0xb
+ blx MIi_CpuClear16
+ pop {r4, pc}
+ .balign 4
+_02024EA4: .word 0x0000074C
+_02024EA8: .word 0x00000724
+_02024EAC: .word 0x0000FFFF
+_02024EB0: .word 0x00000734
+
+ thumb_func_start FUN_02024EB4
+FUN_02024EB4: ; 0x02024EB4
+ ldr r3, _02024EBC ; =FUN_02022610
+ mov r1, #0xa
+ bx r3
+ nop
+_02024EBC: .word FUN_02022610
+
+ thumb_func_start FUN_02024EC0
+FUN_02024EC0: ; 0x02024EC0
+ ldr r3, _02024EC8 ; =0x02022635
+ mov r1, #0xa
+ bx r3
+ nop
+_02024EC8: .word 0x02022635
+
+ thumb_func_start FUN_02024ECC
+FUN_02024ECC: ; 0x02024ECC
+ ldr r3, _02024ED4 ; =FUN_02022610
+ mov r1, #0xa
+ bx r3
+ nop
+_02024ED4: .word FUN_02022610
+
+ thumb_func_start FUN_02024ED8
+FUN_02024ED8: ; 0x02024ED8
+ push {r3, lr}
+ mov r1, #0xa
+ bl FUN_02022610
+ mov r1, #0x7
+ lsl r1, r1, #0x8
+ add r0, r0, r1
+ pop {r3, pc}
+
+ thumb_func_start FUN_02024EE8
+FUN_02024EE8: ; 0x02024EE8
+ ldr r1, _02024EF0 ; =0x00000724
+ add r0, r0, r1
+ bx lr
+ nop
+_02024EF0: .word 0x00000724
+
+ thumb_func_start FUN_02024EF4
+FUN_02024EF4: ; 0x02024EF4
+ add r2, r0, #0x0
+ add r0, r1, #0x0
+ ldr r1, _02024F04 ; =0x00000724
+ ldr r3, _02024F08 ; =FUN_02021EF0
+ add r1, r2, r1
+ mov r2, #0x8
+ bx r3
+ nop
+_02024F04: .word 0x00000724
+_02024F08: .word FUN_02021EF0
+
+ thumb_func_start FUN_02024F0C
+FUN_02024F0C: ; 0x02024F0C
+ ldr r1, _02024F14 ; =0x00000734
+ add r0, r0, r1
+ bx lr
+ nop
+_02024F14: .word 0x00000734
+
+ thumb_func_start FUN_02024F18
+FUN_02024F18: ; 0x02024F18
+ add r2, r0, #0x0
+ add r0, r1, #0x0
+ ldr r1, _02024F28 ; =0x00000734
+ ldr r3, _02024F2C ; =FUN_02021EF0
+ add r1, r2, r1
+ mov r2, #0xb
+ bx r3
+ nop
+_02024F28: .word 0x00000734
+_02024F2C: .word FUN_02021EF0
+
+ thumb_func_start FUN_02024F30
+FUN_02024F30: ; 0x02024F30
+ push {r4, lr}
+ mov r1, #0x2
+ bl FUN_02016998
+ add r4, r0, #0x0
+ bl FUN_02024F50
+ add r0, r4, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02024F44
+FUN_02024F44: ; 0x02024F44
+ ldr r3, _02024F4C ; =MI_CpuCopy8
+ mov r2, #0x2
+ bx r3
+ nop
+_02024F4C: .word MI_CpuCopy8
+
+ thumb_func_start FUN_02024F50
+FUN_02024F50: ; 0x02024F50
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x2
+ blx MI_CpuFill8
+ ldrh r1, [r4, #0x0]
+ mov r0, #0xf
+ bic r1, r0
+ mov r0, #0x1
+ orr r0, r1
+ strh r0, [r4, #0x0]
+ ldrh r1, [r4, #0x0]
+ mov r0, #0x30
+ bic r1, r0
+ strh r1, [r4, #0x0]
+ ldrh r1, [r4, #0x0]
+ mov r0, #0x40
+ bic r1, r0
+ strh r1, [r4, #0x0]
+ ldrh r1, [r4, #0x0]
+ mov r0, #0x80
+ bic r1, r0
+ strh r1, [r4, #0x0]
+ ldrh r1, [r4, #0x0]
+ ldr r0, _02024F94 ; =0xFFFFFCFF
+ and r0, r1
+ strh r0, [r4, #0x0]
+ ldrh r1, [r4, #0x0]
+ ldr r0, _02024F98 ; =0xFFFF83FF
+ and r0, r1
+ strh r0, [r4, #0x0]
+ pop {r4, pc}
+ nop
+_02024F94: .word 0xFFFFFCFF
+_02024F98: .word 0xFFFF83FF
+
+ thumb_func_start FUN_02024F9C
+FUN_02024F9C: ; 0x02024F9C
+ push {r3, lr}
+ cmp r0, #0x0
+ beq _02024FAC
+ bl LoadPlayerDataAddress
+ bl FUN_02025064
+ add r1, r0, #0x0
+_02024FAC:
+ cmp r1, #0x0
+ beq _02024FCA
+ cmp r1, #0x1
+ beq _02024FBA
+ cmp r1, #0x2
+ beq _02024FC2
+ b _02024FCA
+_02024FBA:
+ ldr r0, _02024FD4 ; =0x021C48B8
+ mov r1, #0x1
+ str r1, [r0, #0x34]
+ pop {r3, pc}
+_02024FC2:
+ ldr r0, _02024FD4 ; =0x021C48B8
+ mov r1, #0x3
+ str r1, [r0, #0x34]
+ pop {r3, pc}
+_02024FCA:
+ ldr r0, _02024FD4 ; =0x021C48B8
+ mov r1, #0x0
+ str r1, [r0, #0x34]
+ pop {r3, pc}
+ nop
+_02024FD4: .word 0x021C48B8
+
+ thumb_func_start FUN_02024FD8
+FUN_02024FD8: ; 0x02024FD8
+ ldrh r0, [r0, #0x0]
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1c
+ bx lr
+
+ thumb_func_start FUN_02024FE0
+FUN_02024FE0: ; 0x02024FE0
+ ldrh r3, [r0, #0x0]
+ mov r2, #0xf
+ lsl r1, r1, #0x10
+ bic r3, r2
+ lsr r2, r1, #0x10
+ mov r1, #0xf
+ and r1, r2
+ orr r1, r3
+ strh r1, [r0, #0x0]
+ bx lr
+
+ thumb_func_start FUN_02024FF4
+FUN_02024FF4: ; 0x02024FF4
+ push {r3, lr}
+ bl FUN_02024FD8
+ cmp r0, #0x0
+ bne _02025002
+ mov r0, #0x8
+ pop {r3, pc}
+_02025002:
+ cmp r0, #0x1
+ bne _0202500A
+ mov r0, #0x4
+ pop {r3, pc}
+_0202500A:
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02025010
+FUN_02025010: ; 0x02025010
+ ldrh r0, [r0, #0x0]
+ lsl r0, r0, #0x1a
+ lsr r0, r0, #0x1e
+ bx lr
+
+ thumb_func_start FUN_02025018
+FUN_02025018: ; 0x02025018
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ lsl r1, r1, #0x1e
+ ldrh r3, [r0, #0x0]
+ mov r2, #0x30
+ lsr r1, r1, #0x1a
+ bic r3, r2
+ orr r1, r3
+ strh r1, [r0, #0x0]
+ bx lr
+
+ thumb_func_start FUN_0202502C
+FUN_0202502C: ; 0x0202502C
+ ldrh r0, [r0, #0x0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1f
+ bx lr
+
+ thumb_func_start FUN_02025034
+FUN_02025034: ; 0x02025034
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ lsl r1, r1, #0x1f
+ ldrh r3, [r0, #0x0]
+ mov r2, #0x80
+ lsr r1, r1, #0x18
+ bic r3, r2
+ orr r1, r3
+ strh r1, [r0, #0x0]
+ bx lr
+
+ thumb_func_start FUN_02025048
+FUN_02025048: ; 0x02025048
+ ldrh r0, [r0, #0x0]
+ lsl r0, r0, #0x19
+ lsr r0, r0, #0x1f
+ bx lr
+
+ thumb_func_start FUN_02025050
+FUN_02025050: ; 0x02025050
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ lsl r1, r1, #0x1f
+ ldrh r3, [r0, #0x0]
+ mov r2, #0x40
+ lsr r1, r1, #0x19
+ bic r3, r2
+ orr r1, r3
+ strh r1, [r0, #0x0]
+ bx lr
+
+ thumb_func_start FUN_02025064
+FUN_02025064: ; 0x02025064
+ ldrh r0, [r0, #0x0]
+ lsl r0, r0, #0x16
+ lsr r0, r0, #0x1e
+ bx lr
+
+ thumb_func_start FUN_0202506C
+FUN_0202506C: ; 0x0202506C
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ lsl r1, r1, #0x1e
+ ldrh r3, [r0, #0x0]
+ ldr r2, _02025080 ; =0xFFFFFCFF
+ lsr r1, r1, #0x16
+ and r2, r3
+ orr r1, r2
+ strh r1, [r0, #0x0]
+ bx lr
+ .balign 4
+_02025080: .word 0xFFFFFCFF
+
+ thumb_func_start FUN_02025084
+FUN_02025084: ; 0x02025084
+ ldrh r0, [r0, #0x0]
+ lsl r0, r0, #0x11
+ lsr r0, r0, #0x1b
+ bx lr
+
+ thumb_func_start FUN_0202508C
+FUN_0202508C: ; 0x0202508C
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ lsl r1, r1, #0x1b
+ ldrh r3, [r0, #0x0]
+ ldr r2, _020250A0 ; =0xFFFF83FF
+ lsr r1, r1, #0x11
+ and r2, r3
+ orr r1, r2
+ strh r1, [r0, #0x0]
+ bx lr
+ .balign 4
+_020250A0: .word 0xFFFF83FF
+
+ thumb_func_start FUN_020250A4
+FUN_020250A4: ; 0x020250A4
+ push {r4, lr}
+ mov r2, #0x7
+ mov r1, #0x0
+ lsl r2, r2, #0x8
+ add r4, r0, #0x0
+ blx MI_CpuFill8
+ mov r1, #0x0
+ add r0, r1, #0x0
+_020250B6:
+ strb r0, [r4, #0x1]
+ strb r0, [r4, #0x0]
+ add r1, r1, #0x1
+ add r4, #0xe
+ cmp r1, #0x80
+ blt _020250B6
+ pop {r4, pc}
+
+ thumb_func_start FUN_020250C4
+FUN_020250C4: ; 0x020250C4
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ add r0, r1, #0x0
+ str r2, [sp, #0x0]
+ str r3, [sp, #0x4]
+ bl FUN_02025128
+ mov r4, #0x0
+ str r0, [sp, #0x8]
+ add r6, r4, #0x0
+ b _02025112
+_020250DC:
+ add r0, r5, #0x0
+ bl FUN_02025184
+ ldr r0, [sp, #0x0]
+ lsl r1, r6, #0x1
+ add r7, r0, r1
+ ldrh r0, [r0, r1]
+ sub r0, #0x94
+ strb r0, [r5, #0x0]
+ mov r0, #0x5
+ strb r0, [r5, #0x1]
+ ldrb r1, [r5, #0x0]
+ ldrb r2, [r5, #0xc]
+ ldr r0, [sp, #0x8]
+ bl FUN_020251B0
+ lsl r0, r0, #0x2
+ strh r0, [r5, #0x2]
+ ldrh r0, [r7, #0x2]
+ add r6, r6, #0x2
+ add r4, r4, #0x1
+ strh r0, [r5, #0x8]
+ mov r0, #0x64
+ strb r0, [r5, #0xa]
+ mov r0, #0x3
+ strb r0, [r5, #0xb]
+ add r5, #0xe
+_02025112:
+ cmp r4, #0x80
+ blt _020250DC
+ ldr r0, [sp, #0x4]
+ cmp r4, r0
+ blt _020250DC
+ ldr r0, [sp, #0x8]
+ bl FUN_02016A18
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02025128
+FUN_02025128: ; 0x02025128
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r7, r0, #0x0
+ bl FUN_02085258
+ str r0, [sp, #0x0]
+ add r0, r7, #0x0
+ mov r1, #0xc0
+ bl FUN_02016998
+ str r0, [sp, #0x4]
+ mov r6, #0x0
+ add r5, r0, #0x0
+_02025142:
+ ldr r0, [sp, #0x0]
+ add r1, r6, #0x0
+ add r2, r7, #0x0
+ bl FUN_02085264
+ add r4, r0, #0x0
+ mov r1, #0x3
+ bl FUN_02085290
+ strb r0, [r5, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0x4
+ bl FUN_02085290
+ strb r0, [r5, #0x1]
+ add r0, r4, #0x0
+ mov r1, #0x2
+ bl FUN_02085290
+ strb r0, [r5, #0x2]
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add r6, r6, #0x1
+ add r5, r5, #0x3
+ cmp r6, #0x40
+ blt _02025142
+ ldr r0, [sp, #0x0]
+ bl FUN_0208526C
+ ldr r0, [sp, #0x4]
+ add sp, #0x8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02025184
+FUN_02025184: ; 0x02025184
+ mov r1, #0x0
+ strb r1, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ strh r1, [r0, #0x2]
+ strh r1, [r0, #0x4]
+ strb r1, [r0, #0x6]
+ strh r1, [r0, #0x8]
+ strb r1, [r0, #0xa]
+ strb r1, [r0, #0xb]
+ strb r1, [r0, #0xc]
+ strb r1, [r0, #0xd]
+ bx lr
+
+ thumb_func_start FUN_0202519C
+FUN_0202519C: ; 0x0202519C
+ ldrb r2, [r0, #0xb]
+ ldrb r0, [r0, #0x0]
+ sub r3, r0, #0x1
+ lsl r0, r3, #0x1
+ add r0, r3, r0
+ add r0, r1, r0
+ ldrb r0, [r0, #0x2]
+ mul r0, r2
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020251B0
+FUN_020251B0: ; 0x020251B0
+ sub r3, r1, #0x1
+ lsl r1, r3, #0x1
+ add r1, r3, r1
+ ldrb r1, [r0, r1]
+ mov r0, #0x3c
+ mul r0, r1
+ cmp r2, #0x1
+ bne _020251CE
+ lsl r1, r0, #0x1
+ add r1, r0, r1
+ asr r0, r1, #0x1
+ lsr r0, r0, #0x1e
+ add r0, r1, r0
+ asr r0, r0, #0x2
+ bx lr
+_020251CE:
+ cmp r2, #0x2
+ bne _020251DA
+ lsr r1, r0, #0x1f
+ add r1, r0, r1
+ asr r1, r1, #0x1
+ add r0, r0, r1
+_020251DA:
+ bx lr
+
+ thumb_func_start FUN_020251DC
+FUN_020251DC: ; 0x020251DC
+ sub r3, r1, #0x1
+ lsl r1, r3, #0x1
+ add r1, r3, r1
+ add r0, r0, r1
+ ldrb r0, [r0, #0x1]
+ cmp r2, #0x2
+ bne _020251F2
+ lsr r1, r0, #0x1f
+ add r1, r0, r1
+ asr r0, r1, #0x1
+ bx lr
+_020251F2:
+ cmp r2, #0x1
+ bne _020251FE
+ lsr r1, r0, #0x1f
+ add r1, r0, r1
+ asr r1, r1, #0x1
+ add r0, r0, r1
+_020251FE:
+ bx lr
+
+ thumb_func_start FUN_02025200
+FUN_02025200: ; 0x02025200
+ ldrb r0, [r0, #0xc]
+ cmp r0, #0x3
+ bne _0202520A
+ mov r0, #0x6
+ bx lr
+_0202520A:
+ mov r0, #0x4
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02025210
+FUN_02025210: ; 0x02025210
+ ldrb r0, [r0, #0xc]
+ cmp r0, #0x4
+ bne _0202521A
+ mov r0, #0xf
+ bx lr
+_0202521A:
+ mov r0, #0xa
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02025220
+FUN_02025220: ; 0x02025220
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_02025200
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02025210
+ add r1, r4, #0x3
+ mul r0, r1
+ add r0, r0, #0x1
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02025238
+FUN_02025238: ; 0x02025238
+ mov r2, #0xe
+ mul r2, r1
+ add r0, r0, r2
+ ldrb r0, [r0, #0x1]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02025244
+FUN_02025244: ; 0x02025244
+ mov r2, #0xe
+ mul r2, r1
+ ldrb r0, [r0, r2]
+ bx lr
+
+ thumb_func_start FUN_0202524C
+FUN_0202524C: ; 0x0202524C
+ mov r2, #0xe
+ mul r2, r1
+ add r0, r0, r2
+ ldrb r0, [r0, #0xa]
+ cmp r0, #0x0
+ bne _0202525C
+ mov r0, #0x0
+ bx lr
+_0202525C:
+ cmp r0, #0x32
+ bgt _02025264
+ mov r0, #0x1
+ bx lr
+_02025264:
+ mov r0, #0x2
+ bx lr
+
+ thumb_func_start FUN_02025268
+FUN_02025268: ; 0x02025268
+ mov r2, #0xe
+ mul r2, r1
+ add r0, r0, r2
+ ldrb r0, [r0, #0xb]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02025274
+FUN_02025274: ; 0x02025274
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ mov r0, #0xe
+ mul r4, r0
+ strb r3, [r5, r4]
+ mov r0, #0x1
+ add r6, r5, r4
+ strb r0, [r6, #0x1]
+ add r0, r2, #0x0
+ ldrb r2, [r6, #0xc]
+ add r1, r3, #0x0
+ bl FUN_020251B0
+ add r1, r6, #0x0
+ strh r0, [r1, #0x2]
+ mov r0, #0x0
+ strh r0, [r1, #0x4]
+ strb r0, [r1, #0x6]
+ strh r0, [r1, #0x8]
+ mov r0, #0x64
+ strb r0, [r1, #0xa]
+ mov r0, #0x5
+ strb r0, [r1, #0xb]
+ mov r0, #0x1
+ strb r0, [r1, #0xd]
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_020252AC
+FUN_020252AC: ; 0x020252AC
+ mov r2, #0xe
+ mul r2, r1
+ mov r3, #0x64
+ add r0, r0, r2
+ strb r3, [r0, #0xa]
+ bx lr
+
+ thumb_func_start FUN_020252B8
+FUN_020252B8: ; 0x020252B8
+ mov r2, #0xe
+ mul r2, r1
+ add r0, r0, r2
+ ldrb r0, [r0, #0xd]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020252C4
+FUN_020252C4: ; 0x020252C4
+ mov r3, #0xe
+ mul r3, r1
+ add r0, r0, r3
+ strb r2, [r0, #0xd]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020252D0
+FUN_020252D0: ; 0x020252D0
+ mov r2, #0xe
+ mul r2, r1
+ add r0, r0, r2
+ ldrb r0, [r0, #0xc]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020252DC
+FUN_020252DC: ; 0x020252DC
+ mov r3, #0xe
+ mul r3, r1
+ add r0, r0, r3
+ strb r2, [r0, #0xc]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020252E8
+FUN_020252E8: ; 0x020252E8
+ mov r2, #0xe
+ mul r2, r1
+ add r0, r0, r2
+ ldrh r0, [r0, #0x8]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020252F4
+FUN_020252F4: ; 0x020252F4
+ push {r4, lr}
+ mov r2, #0xe
+ mul r2, r1
+ add r0, r0, r2
+ ldrh r4, [r0, #0x8]
+ bl FUN_02025184
+ add r0, r4, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02025308
+FUN_02025308: ; 0x02025308
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldrb r2, [r4, #0x1]
+ cmp r2, #0x5
+ bhi _02025370
+ add r3, r2, r2
+ add r3, pc
+ ldrh r3, [r3, #0x6]
+ lsl r3, r3, #0x10
+ asr r3, r3, #0x10
+ add pc, r3
+_0202531E: ; jump table (using 16-bit offset)
+ .short _0202532A - _0202531E - 2; case 0
+ .short _02025330 - _0202531E - 2; case 1
+ .short _02025330 - _0202531E - 2; case 2
+ .short _02025330 - _0202531E - 2; case 3
+ .short _02025336 - _0202531E - 2; case 4
+ .short _0202534E - _0202531E - 2; case 5
+_0202532A:
+ bl ErrorHandling
+ pop {r4, pc}
+_02025330:
+ add r0, r2, #0x1
+ strb r0, [r4, #0x1]
+ pop {r4, pc}
+_02025336:
+ bl FUN_0202519C
+ strh r0, [r4, #0x8]
+ ldrh r0, [r4, #0x8]
+ cmp r0, #0x2
+ bhs _02025346
+ mov r0, #0x2
+ strh r0, [r4, #0x8]
+_02025346:
+ ldrb r0, [r4, #0x1]
+ add r0, r0, #0x1
+ strb r0, [r4, #0x1]
+ pop {r4, pc}
+_0202534E:
+ mov r1, #0x0
+ strh r1, [r4, #0x8]
+ mov r1, #0x2
+ strb r1, [r4, #0x1]
+ mov r1, #0x5
+ strb r1, [r4, #0xb]
+ ldrb r1, [r4, #0x6]
+ add r1, r1, #0x1
+ strb r1, [r4, #0x6]
+ bl FUN_02025210
+ ldrb r1, [r4, #0x6]
+ cmp r1, r0
+ bne _02025370
+ add r0, r4, #0x0
+ bl FUN_02025184
+_02025370:
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02025374
+FUN_02025374: ; 0x02025374
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldrb r0, [r5, #0x1]
+ add r7, r2, #0x0
+ cmp r0, #0x5
+ beq _020253DE
+ add r0, r1, #0x0
+ ldrb r1, [r5, #0x0]
+ ldrb r2, [r5, #0xc]
+ bl FUN_020251DC
+ add r6, r0, #0x0
+ ldrh r0, [r5, #0x4]
+ mov r1, #0x3c
+ str r0, [sp, #0x0]
+ add r0, r7, r0
+ blx _s32_div_f
+ add r4, r0, #0x0
+ ldr r0, [sp, #0x0]
+ mov r1, #0x3c
+ add r0, r7, r0
+ blx _s32_div_f
+ strh r1, [r5, #0x4]
+ cmp r4, #0x0
+ beq _020253DE
+ ldrb r1, [r5, #0xa]
+ add r0, r6, #0x0
+ mul r0, r4
+ cmp r1, r0
+ blt _020253BA
+ sub r0, r1, r0
+ strb r0, [r5, #0xa]
+ pop {r3-r7, pc}
+_020253BA:
+ cmp r1, #0x0
+ beq _020253CE
+ sub r0, r6, #0x1
+ add r0, r1, r0
+ add r1, r6, #0x0
+ blx _s32_div_f
+ sub r4, r4, r0
+ mov r0, #0x0
+ strb r0, [r5, #0xa]
+_020253CE:
+ ldrb r0, [r5, #0xb]
+ cmp r0, r4
+ ble _020253DA
+ sub r0, r0, r4
+ strb r0, [r5, #0xb]
+ pop {r3-r7, pc}
+_020253DA:
+ mov r0, #0x0
+ strb r0, [r5, #0xb]
+_020253DE:
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_020253E0
+FUN_020253E0: ; 0x020253E0
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ mov r0, #0x0
+ add r6, r1, #0x0
+ add r7, r2, #0x0
+ str r0, [sp, #0x0]
+_020253EC:
+ ldrb r1, [r5, #0x0]
+ cmp r1, #0x0
+ beq _02025474
+ ldrb r0, [r5, #0x1]
+ cmp r0, #0x0
+ beq _02025474
+ ldrb r0, [r5, #0xd]
+ cmp r0, #0x0
+ beq _02025474
+ ldrb r2, [r5, #0xc]
+ add r0, r6, #0x0
+ bl FUN_020251B0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02025220
+ mul r0, r4
+ cmp r7, r0
+ blt _0202541C
+ add r0, r5, #0x0
+ bl FUN_02025184
+ b _02025474
+_0202541C:
+ add r4, r7, #0x0
+ b _0202546A
+_02025420:
+ ldrh r2, [r5, #0x2]
+ cmp r2, r4
+ ble _02025438
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ bl FUN_02025374
+ ldrh r0, [r5, #0x2]
+ sub r0, r0, r4
+ strh r0, [r5, #0x2]
+ b _02025474
+_02025438:
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02025374
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02025308
+ ldrh r0, [r5, #0x2]
+ ldrb r1, [r5, #0x0]
+ ldrb r2, [r5, #0xc]
+ sub r4, r4, r0
+ add r0, r6, #0x0
+ bl FUN_020251B0
+ strh r0, [r5, #0x2]
+ ldrb r0, [r5, #0x1]
+ cmp r0, #0x5
+ bne _0202546A
+ add r0, r5, #0x0
+ bl FUN_02025200
+ ldrh r1, [r5, #0x2]
+ mul r0, r1
+ strh r0, [r5, #0x2]
+_0202546A:
+ ldrb r0, [r5, #0x1]
+ cmp r0, #0x0
+ beq _02025474
+ cmp r4, #0x0
+ bne _02025420
+_02025474:
+ ldr r0, [sp, #0x0]
+ add r5, #0xe
+ add r0, r0, #0x1
+ str r0, [sp, #0x0]
+ cmp r0, #0x80
+ blt _020253EC
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02025484
+FUN_02025484: ; 0x02025484
+ ldr r3, _0202548C ; =MI_CpuFill8
+ mov r1, #0x0
+ mov r2, #0x24
+ bx r3
+ .balign 4
+_0202548C: .word MI_CpuFill8
+
+ thumb_func_start FUN_02025490
+FUN_02025490: ; 0x02025490
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_02025484
+ str r4, [r5, #0x0]
+ add r0, r5, #0x4
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_020254A0
+FUN_020254A0: ; 0x020254A0
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, r1
+ beq _020254AE
+ bl ErrorHandling
+_020254AE:
+ add r0, r4, #0x4
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020254B4
+FUN_020254B4: ; 0x020254B4
+ ldr r0, [r0, #0x0]
+ bx lr
+
+ thumb_func_start FUN_020254B8
+FUN_020254B8: ; 0x020254B8
+ mov r0, #0x22
+ lsl r0, r0, #0x6
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020254C0
+FUN_020254C0: ; 0x020254C0
+ ldr r3, _020254C8 ; =FUN_02022610
+ mov r1, #0x9
+ bx r3
+ nop
+_020254C8: .word FUN_02022610
+
+ thumb_func_start FUN_020254CC
+FUN_020254CC: ; 0x020254CC
+ push {r3-r7, lr}
+ mov r4, #0x0
+ ldr r6, _020254EC ; =0x0000FFFF
+ add r5, r0, #0x0
+ add r7, r4, #0x0
+_020254D6:
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ mov r2, #0x88
+ blx FUN_020DF4A4
+ strh r6, [r5, #0x0]
+ add r4, r4, #0x1
+ add r5, #0x88
+ cmp r4, #0x10
+ blt _020254D6
+ pop {r3-r7, pc}
+ .balign 4
+_020254EC: .word 0x0000FFFF
+
+ thumb_func_start FUN_020254F0
+FUN_020254F0: ; 0x020254F0
+ mov r2, #0x88
+ mul r2, r1
+ add r0, r0, r2
+ bx lr
+
+ thumb_func_start FUN_020254F8
+FUN_020254F8: ; 0x020254F8
+ add r0, r0, r1
+ add r0, #0x68
+ ldrb r0, [r0, #0x0]
+ bx lr
+
+ thumb_func_start FUN_02025500
+FUN_02025500: ; 0x02025500
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl StringNotEqual
+ cmp r0, #0x0
+ bne _0202551A
+ ldr r1, [r5, #0x10]
+ ldr r0, [r4, #0x10]
+ cmp r1, r0
+ bne _0202551A
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0202551A:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02025520
+FUN_02025520: ; 0x02025520
+ push {r4-r7, lr}
+ sub sp, #0x2c
+ str r1, [sp, #0x4]
+ mov r1, #0x22
+ str r0, [sp, #0x0]
+ add r0, r3, #0x0
+ lsl r1, r1, #0x6
+ str r2, [sp, #0x8]
+ bl FUN_02016998
+ str r0, [sp, #0x10]
+ bl FUN_020254CC
+ mov r0, #0x0
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x8]
+ cmp r0, #0x0
+ ble _02025578
+ ldr r7, [sp, #0x4]
+ add r6, sp, #0x18
+_02025548:
+ mov r0, #0x0
+ mvn r0, r0
+ ldr r5, [sp, #0x0]
+ str r0, [r6, #0x0]
+ mov r4, #0x0
+_02025552:
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ bl FUN_02025500
+ cmp r0, #0x0
+ beq _02025560
+ str r4, [r6, #0x0]
+_02025560:
+ add r4, r4, #0x1
+ add r5, #0x88
+ cmp r4, #0x10
+ blt _02025552
+ ldr r0, [sp, #0x14]
+ add r6, r6, #0x4
+ add r1, r0, #0x1
+ ldr r0, [sp, #0x8]
+ add r7, #0x88
+ str r1, [sp, #0x14]
+ cmp r1, r0
+ blt _02025548
+_02025578:
+ ldr r0, [sp, #0x8]
+ mov r4, #0x0
+ str r4, [sp, #0xc]
+ cmp r0, #0x0
+ ble _020255BE
+ ldr r5, [sp, #0x10]
+ add r6, sp, #0x18
+_02025586:
+ ldr r3, [sp, #0x4]
+ add r7, r5, #0x0
+ mov r2, #0x11
+_0202558C:
+ ldmia r3!, {r0-r1}
+ stmia r7!, {r0-r1}
+ sub r2, r2, #0x1
+ bne _0202558C
+ ldr r1, [r6, #0x0]
+ cmp r1, #0x0
+ blt _020255A6
+ add r2, r1, #0x0
+ mov r0, #0x88
+ mul r2, r0
+ ldr r1, _02025610 ; =0x0000FFFF
+ ldr r0, [sp, #0x0]
+ strh r1, [r0, r2]
+_020255A6:
+ ldr r0, [sp, #0x4]
+ add r5, #0x88
+ add r0, #0x88
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0xc]
+ add r4, r4, #0x1
+ add r1, r0, #0x1
+ ldr r0, [sp, #0x8]
+ add r6, r6, #0x4
+ str r1, [sp, #0xc]
+ cmp r1, r0
+ blt _02025586
+_020255BE:
+ mov r0, #0x0
+ mov r12, r0
+ mov r0, #0x88
+ add r1, r4, #0x0
+ mul r1, r0
+ ldr r0, [sp, #0x10]
+ ldr r3, [sp, #0x0]
+ add r5, r0, r1
+_020255CE:
+ ldrh r1, [r3, #0x0]
+ ldr r0, _02025610 ; =0x0000FFFF
+ cmp r1, r0
+ beq _020255EC
+ add r6, r3, #0x0
+ add r7, r5, #0x0
+ mov r2, #0x11
+_020255DC:
+ ldmia r6!, {r0-r1}
+ stmia r7!, {r0-r1}
+ sub r2, r2, #0x1
+ bne _020255DC
+ add r4, r4, #0x1
+ add r5, #0x88
+ cmp r4, #0x10
+ bge _020255F8
+_020255EC:
+ mov r0, r12
+ add r0, r0, #0x1
+ add r3, #0x88
+ mov r12, r0
+ cmp r0, #0x10
+ blt _020255CE
+_020255F8:
+ mov r2, #0x22
+ ldr r0, [sp, #0x0]
+ ldr r1, [sp, #0x10]
+ lsl r2, r2, #0x6
+ blx FUN_020DF438
+ ldr r0, [sp, #0x10]
+ bl FUN_02016A18
+ add sp, #0x2c
+ pop {r4-r7, pc}
+ nop
+_02025610: .word 0x0000FFFF
+
+ thumb_func_start FUN_02025614
+FUN_02025614: ; 0x02025614
+ push {r3-r6}
+ mov r3, #0x0
+ add r4, r0, #0x0
+_0202561A:
+ ldr r2, [r4, #0x10]
+ cmp r1, r2
+ bne _02025626
+ mov r0, #0x1
+ pop {r3-r6}
+ bx lr
+_02025626:
+ add r3, r3, #0x1
+ add r4, #0x88
+ cmp r3, #0x10
+ blt _0202561A
+ mov r6, #0x0
+ add r3, r6, #0x0
+_02025632:
+ add r4, r3, #0x0
+ add r5, r0, #0x0
+_02025636:
+ ldr r2, [r5, #0x18]
+ cmp r1, r2
+ bne _02025642
+ add r0, r6, #0x2
+ pop {r3-r6}
+ bx lr
+_02025642:
+ add r4, r4, #0x1
+ add r5, r5, #0x4
+ cmp r4, #0x10
+ blt _02025636
+ add r6, r6, #0x1
+ add r0, #0x88
+ cmp r6, #0x10
+ blt _02025632
+ mov r0, #0x0
+ pop {r3-r6}
+ bx lr
+
+ thumb_func_start FUN_02025658
+FUN_02025658: ; 0x02025658
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+ strb r0, [r4, #0x4]
+ ldr r0, _020256A0 ; =0x020ECAC4
+ mov r1, #0x8
+ ldrb r0, [r0, #0x0]
+ strb r0, [r4, #0x5]
+ ldr r0, _020256A4 ; =0x020ECAC0
+ ldrb r0, [r0, #0x0]
+ strb r0, [r4, #0x6]
+ mov r0, #0xff
+ strb r0, [r4, #0x7]
+ add r0, r4, #0x0
+ add r0, #0x8
+ bl StringFillEOS
+ ldr r0, _020256A8 ; =0x0000FFFF
+ mov r1, #0x0
+ add r2, r4, #0x0
+_02025682:
+ add r1, r1, #0x1
+ strh r0, [r2, #0x18]
+ add r2, r2, #0x2
+ cmp r1, #0x3
+ blt _02025682
+ mov r5, #0x0
+ add r4, #0x20
+_02025690:
+ add r0, r4, #0x0
+ bl FUN_02013724
+ add r5, r5, #0x1
+ add r4, #0x8
+ cmp r5, #0x3
+ blt _02025690
+ pop {r3-r5, pc}
+ .balign 4
+_020256A0: .word 0x020ECAC4
+_020256A4: .word 0x020ECAC0
+_020256A8: .word 0x0000FFFF
+
+ thumb_func_start FUN_020256AC
+FUN_020256AC: ; 0x020256AC
+ ldrb r0, [r0, #0x7]
+ cmp r0, #0xb
+ bhi _020256B6
+ mov r0, #0x1
+ bx lr
+_020256B6:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020256BC
+FUN_020256BC: ; 0x020256BC
+ push {r4, lr}
+ mov r1, #0x38
+ bl FUN_020169D8
+ add r4, r0, #0x0
+ bl FUN_02025658
+ add r0, r4, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020256D0
+FUN_020256D0: ; 0x020256D0
+ ldr r3, _020256D8 ; =MI_CpuCopy8
+ mov r2, #0x38
+ bx r3
+ nop
+_020256D8: .word MI_CpuCopy8
+
+ thumb_func_start FUN_020256DC
+FUN_020256DC: ; 0x020256DC
+ push {r4-r7, lr}
+ sub sp, #0x14
+ add r7, r3, #0x0
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ add r4, r2, #0x0
+ bl FUN_02025658
+ add r0, r7, #0x0
+ strb r6, [r5, #0x7]
+ bl FUN_0206BB1C
+ str r0, [sp, #0x0]
+ add r0, r7, #0x0
+ bl FUN_020238F4
+ add r6, r0, #0x0
+ bl FUN_0202398C
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x8
+ bl StringCopy
+ add r0, r6, #0x0
+ bl FUN_020239CC
+ strb r0, [r5, #0x4]
+ add r0, r6, #0x0
+ bl FUN_020239BC
+ str r0, [r5, #0x0]
+ ldr r0, [sp, #0x0]
+ mov r6, #0x0
+ bl FUN_0206B9AC
+ cmp r4, r0
+ bge _020257AE
+ add r5, #0x18
+_0202572A:
+ ldr r0, [sp, #0x0]
+ add r1, r4, #0x0
+ bl FUN_0206B9B0
+ mov r1, #0x5
+ mov r2, #0x0
+ add r7, r0, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x4]
+ add r0, r7, #0x0
+ mov r1, #0x4c
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0x8]
+ add r0, r7, #0x0
+ mov r1, #0x70
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0xc]
+ add r0, r7, #0x0
+ bl FUN_0206B6C8
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x4]
+ ldr r1, [sp, #0xc]
+ ldr r2, [sp, #0x8]
+ bl FUN_0206B7BC
+ lsl r3, r6, #0x1
+ ldrh r1, [r5, r3]
+ add r7, r0, #0x0
+ ldr r0, _020257B4 ; =0xFFFFF000
+ add r2, r1, #0x0
+ and r2, r0
+ ldr r0, [sp, #0x10]
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ ldr r0, _020257B8 ; =0x00000FFF
+ and r0, r1
+ orr r0, r2
+ strh r0, [r5, r3]
+ add r0, r6, #0x1
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ ldrh r1, [r5, r3]
+ ldr r0, _020257BC ; =0xFFFF0FFF
+ and r0, r1
+ lsl r1, r7, #0x1c
+ lsr r1, r1, #0x10
+ orr r0, r1
+ strh r0, [r5, r3]
+ cmp r6, #0x3
+ bhs _020257AE
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ ldr r0, [sp, #0x0]
+ bl FUN_0206B9AC
+ cmp r4, r0
+ blt _0202572A
+_020257AE:
+ add sp, #0x14
+ pop {r4-r7, pc}
+ nop
+_020257B4: .word 0xFFFFF000
+_020257B8: .word 0x00000FFF
+_020257BC: .word 0xFFFF0FFF
+
+ thumb_func_start FUN_020257C0
+FUN_020257C0: ; 0x020257C0
+ ldr r0, [r0, #0x0]
+ bx lr
+
+ thumb_func_start FUN_020257C4
+FUN_020257C4: ; 0x020257C4
+ add r0, #0x8
+ bx lr
+
+ thumb_func_start FUN_020257C8
+FUN_020257C8: ; 0x020257C8
+ ldrb r0, [r0, #0x4]
+ bx lr
+
+ thumb_func_start FUN_020257CC
+FUN_020257CC: ; 0x020257CC
+ ldrb r0, [r0, #0x7]
+ bx lr
+
+ thumb_func_start FUN_020257D0
+FUN_020257D0: ; 0x020257D0
+ cmp r1, #0xc
+ bhs _020257D6
+ strb r1, [r0, #0x7]
+_020257D6:
+ bx lr
+
+ thumb_func_start FUN_020257D8
+FUN_020257D8: ; 0x020257D8
+ ldrb r0, [r0, #0x5]
+ bx lr
+
+ thumb_func_start FUN_020257DC
+FUN_020257DC: ; 0x020257DC
+ ldrb r0, [r0, #0x6]
+ bx lr
+
+ thumb_func_start FUN_020257E0
+FUN_020257E0: ; 0x020257E0
+ cmp r1, #0x3
+ bhs _02025810
+ cmp r2, #0x0
+ beq _020257F0
+ cmp r2, #0x1
+ beq _020257FC
+ cmp r2, #0x2
+ b _02025808
+_020257F0:
+ lsl r1, r1, #0x1
+ add r0, r0, r1
+ ldrh r0, [r0, #0x18]
+ lsl r0, r0, #0x14
+ lsr r0, r0, #0x14
+ bx lr
+_020257FC:
+ lsl r1, r1, #0x1
+ add r0, r0, r1
+ ldrh r0, [r0, #0x18]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x1c
+ bx lr
+_02025808:
+ lsl r1, r1, #0x1
+ add r0, r0, r1
+ ldrh r0, [r0, #0x18]
+ bx lr
+_02025810:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02025814
+FUN_02025814: ; 0x02025814
+ cmp r1, #0x3
+ bhs _02025820
+ add r0, #0x20
+ lsl r1, r1, #0x3
+ add r0, r0, r1
+ bx lr
+_02025820:
+ add r0, #0x20
+ bx lr
+
+ thumb_func_start FUN_02025824
+FUN_02025824: ; 0x02025824
+ push {r3, lr}
+ cmp r2, #0x3
+ bhs _02025834
+ add r0, #0x20
+ lsl r2, r2, #0x3
+ add r0, r0, r2
+ bl FUN_02013960
+_02025834:
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02025838
+FUN_02025838: ; 0x02025838
+ ldr r3, _02025840 ; =FUN_02022610
+ mov r1, #0xf
+ bx r3
+ nop
+_02025840: .word FUN_02022610
+
+ thumb_func_start FUN_02025844
+FUN_02025844: ; 0x02025844
+ mov r0, #0x46
+ lsl r0, r0, #0x4
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0202584C
+FUN_0202584C: ; 0x0202584C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r4, #0x0
+_02025852:
+ add r0, r5, #0x0
+ bl FUN_02025658
+ add r4, r4, #0x1
+ add r5, #0x38
+ cmp r4, #0x14
+ blt _02025852
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02025864
+FUN_02025864: ; 0x02025864
+ push {r3, lr}
+ cmp r1, #0x0
+ bne _02025872
+ mov r1, #0x14
+ bl FUN_020258F0
+ pop {r3, pc}
+_02025872:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3, pc}
+
+ thumb_func_start FUN_02025878
+FUN_02025878: ; 0x02025878
+ push {r3, lr}
+ bl FUN_02025940
+ cmp r0, #0x0
+ beq _02025886
+ bl FUN_02025658
+_02025886:
+ pop {r3, pc}
+
+ thumb_func_start FUN_02025888
+FUN_02025888: ; 0x02025888
+ push {r4, lr}
+ add r4, r3, #0x0
+ bl FUN_02025940
+ add r1, r0, #0x0
+ beq _0202589A
+ add r0, r4, #0x0
+ bl FUN_020256D0
+_0202589A:
+ pop {r4, pc}
+
+ thumb_func_start FUN_0202589C
+FUN_0202589C: ; 0x0202589C
+ push {r3, lr}
+ cmp r1, #0x0
+ bne _020258AA
+ mov r1, #0x14
+ bl FUN_02025918
+ pop {r3, pc}
+_020258AA:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_020258B0
+FUN_020258B0: ; 0x020258B0
+ push {r3-r5, lr}
+ add r5, r3, #0x0
+ bl FUN_02025940
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_020256BC
+ add r5, r0, #0x0
+ cmp r4, #0x0
+ beq _020258CE
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ bl FUN_020256D0
+_020258CE:
+ add r0, r5, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020258D4
+FUN_020258D4: ; 0x020258D4
+ push {r4, lr}
+ add r4, r3, #0x0
+ bl FUN_02025940
+ cmp r0, #0x0
+ bne _020258E8
+ add r0, r4, #0x0
+ bl FUN_02025658
+ pop {r4, pc}
+_020258E8:
+ add r1, r4, #0x0
+ bl FUN_020256D0
+ pop {r4, pc}
+
+ thumb_func_start FUN_020258F0
+FUN_020258F0: ; 0x020258F0
+ push {r4-r6, lr}
+ add r6, r1, #0x0
+ add r5, r0, #0x0
+ mov r4, #0x0
+ cmp r6, #0x0
+ ble _02025912
+_020258FC:
+ add r0, r5, #0x0
+ bl FUN_020256AC
+ cmp r0, #0x0
+ bne _0202590A
+ add r0, r4, #0x0
+ pop {r4-r6, pc}
+_0202590A:
+ add r4, r4, #0x1
+ add r5, #0x38
+ cmp r4, r6
+ blt _020258FC
+_02025912:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02025918
+FUN_02025918: ; 0x02025918
+ push {r3-r7, lr}
+ mov r4, #0x0
+ add r7, r1, #0x0
+ add r5, r0, #0x0
+ add r6, r4, #0x0
+ cmp r7, #0x0
+ ble _0202593A
+_02025926:
+ add r0, r5, #0x0
+ bl FUN_020256AC
+ cmp r0, #0x0
+ beq _02025932
+ add r4, r4, #0x1
+_02025932:
+ add r6, r6, #0x1
+ add r5, #0x38
+ cmp r6, r7
+ blt _02025926
+_0202593A:
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02025940
+FUN_02025940: ; 0x02025940
+ mov r3, #0x0
+ cmp r1, #0x0
+ bne _02025950
+ cmp r2, #0x14
+ bge _02025950
+ mov r1, #0x38
+ mul r1, r2
+ add r3, r0, r1
+_02025950:
+ add r0, r3, #0x0
+ bx lr
+
+ thumb_func_start FUN_02025954
+FUN_02025954: ; 0x02025954
+ ldr r0, _02025958 ; =0x000009B4
+ bx lr
+ .balign 4
+_02025958: .word 0x000009B4
+
+ thumb_func_start FUN_0202595C
+FUN_0202595C: ; 0x0202595C
+ mov r0, #0x94
+ bx lr
+
+ thumb_func_start FUN_02025960
+FUN_02025960: ; 0x02025960
+ mov r0, #0x3c
+ bx lr
+
+ thumb_func_start FUN_02025964
+FUN_02025964: ; 0x02025964
+ push {r4, lr}
+ mov r1, #0x3c
+ bl FUN_02016998
+ mov r1, #0x0
+ mov r2, #0x3c
+ add r4, r0, #0x0
+ blx MI_CpuFill8
+ add r0, r4, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202597C
+FUN_0202597C: ; 0x0202597C
+ push {r4-r7, lr}
+ sub sp, #0x1c
+ add r4, r0, #0x0
+ add r0, sp, #0xc
+ add r1, sp, #0x0
+ bl FUN_0201265C
+ ldr r0, _020259D8 ; =0x021C48B8
+ ldr r6, [sp, #0xc]
+ ldr r1, [sp, #0x8]
+ ldr r0, [r0, #0x2c]
+ lsl r6, r6, #0x5
+ add r5, r1, r0
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x14]
+ add r0, r0, r6
+ lsl r0, r0, #0x5
+ add r0, r1, r0
+ mov r7, #0x0
+ ldr r2, [sp, #0x0]
+ lsl r0, r0, #0x5
+ add r0, r2, r0
+ ldr r3, [sp, #0x4]
+ lsl r0, r0, #0x5
+ add r0, r3, r0
+ lsl r0, r0, #0x5
+ add r5, r5, r0
+ ldr r2, _020259DC ; =0x000009B4
+ add r0, r4, #0x0
+ add r1, r7, #0x0
+ blx MI_CpuFill8
+ add r0, r4, #0x0
+ add r0, #0x94
+ mov r1, #0x9b
+ str r5, [r0, #0x0]
+ lsl r1, r1, #0x4
+ ldrb r2, [r4, r1]
+ mov r0, #0xf
+ bic r2, r0
+ mov r0, #0x1
+ orr r0, r2
+ strb r0, [r4, r1]
+ add sp, #0x1c
+ pop {r4-r7, pc}
+ nop
+_020259D8: .word 0x021C48B8
+_020259DC: .word 0x000009B4
+
+ thumb_func_start FUN_020259E0
+FUN_020259E0: ; 0x020259E0
+ mov r1, #0x9
+ mov r3, #0x0
+ lsl r1, r1, #0x8
+_020259E6:
+ add r2, r0, r3
+ ldrb r2, [r2, r1]
+ cmp r2, #0x0
+ bne _020259F2
+ add r0, r3, #0x0
+ bx lr
+_020259F2:
+ add r3, r3, #0x1
+ cmp r3, #0x28
+ blt _020259E6
+ mov r0, #0x0
+ mvn r0, r0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02025A00
+FUN_02025A00: ; 0x02025A00
+ mov r1, #0x95
+ mov r3, #0x0
+ lsl r1, r1, #0x4
+_02025A06:
+ add r2, r0, r3
+ ldrb r2, [r2, r1]
+ cmp r2, #0x0
+ bne _02025A12
+ add r0, r3, #0x0
+ bx lr
+_02025A12:
+ add r3, r3, #0x1
+ cmp r3, #0x28
+ blt _02025A06
+ mov r0, #0x0
+ mvn r0, r0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02025A20
+FUN_02025A20: ; 0x02025A20
+ ldr r1, _02025A3C ; =0x00000928
+ mov r3, #0x0
+_02025A24:
+ add r2, r0, r3
+ ldrb r2, [r2, r1]
+ cmp r2, #0x0
+ bne _02025A30
+ add r0, r3, #0x0
+ bx lr
+_02025A30:
+ add r3, r3, #0x1
+ cmp r3, #0x28
+ blt _02025A24
+ mov r0, #0x0
+ mvn r0, r0
+ bx lr
+ .balign 4
+_02025A3C: .word 0x00000928
+
+ thumb_func_start FUN_02025A40
+FUN_02025A40: ; 0x02025A40
+ ldr r1, _02025A5C ; =0x000008D8
+ mov r3, #0x0
+_02025A44:
+ add r2, r0, r3
+ ldrb r2, [r2, r1]
+ cmp r2, #0x0
+ bne _02025A50
+ add r0, r3, #0x0
+ bx lr
+_02025A50:
+ add r3, r3, #0x1
+ cmp r3, #0x28
+ blt _02025A44
+ mov r0, #0x0
+ mvn r0, r0
+ bx lr
+ .balign 4
+_02025A5C: .word 0x000008D8
+
+ thumb_func_start FUN_02025A60
+FUN_02025A60: ; 0x02025A60
+ push {r4-r7, lr}
+ sub sp, #0x14
+ str r1, [sp, #0x0]
+ bl FUN_02026CC4
+ ldr r1, _02025B50 ; =0x020EE958
+ add r6, r0, #0x0
+ ldrb r2, [r1, #0x0]
+ add r0, sp, #0x8
+ strb r2, [r0, #0x6]
+ ldrb r2, [r1, #0x1]
+ strb r2, [r0, #0x7]
+ ldrb r2, [r1, #0x2]
+ strb r2, [r0, #0x8]
+ ldrb r2, [r1, #0x3]
+ strb r2, [r0, #0x9]
+ ldrb r2, [r1, #0x4]
+ strb r2, [r0, #0xa]
+ ldrb r2, [r1, #0x5]
+ strb r2, [r0, #0xb]
+ ldrb r2, [r1, #0x6]
+ strb r2, [r0, #0x0]
+ ldrb r2, [r1, #0x7]
+ strb r2, [r0, #0x1]
+ ldrb r2, [r1, #0x8]
+ strb r2, [r0, #0x2]
+ ldrb r2, [r1, #0x9]
+ strb r2, [r0, #0x3]
+ ldrb r2, [r1, #0xa]
+ strb r2, [r0, #0x4]
+ ldrb r1, [r1, #0xb]
+ strb r1, [r0, #0x5]
+ ldr r0, [sp, #0x0]
+ cmp r0, #0x0
+ ble _02025B4C
+ str r0, [sp, #0x4]
+ cmp r0, #0x63
+ ble _02025AB0
+ mov r0, #0x63
+ str r0, [sp, #0x4]
+_02025AB0:
+ add r0, r6, #0x0
+ add r0, #0x94
+ ldr r3, [r0, #0x0]
+ mov r0, #0x0
+ mov r12, r0
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ ble _02025B28
+ add r7, sp, #0xc
+ add r7, #0x2
+_02025AC4:
+ mov r2, #0x0
+_02025AC6:
+ ldr r0, _02025B54 ; =0x0000055C
+ add r4, r6, r2
+ ldrb r5, [r4, r0]
+ cmp r5, #0x0
+ beq _02025B16
+ ldr r0, _02025B58 ; =0x5D588B65
+ ldrb r1, [r7, r5]
+ mul r0, r3
+ ldr r3, _02025B5C ; =0x00269EC3
+ add r3, r0, r3
+ cmp r1, #0x0
+ bne _02025AE2
+ lsr r0, r3, #0x10
+ b _02025AE8
+_02025AE2:
+ lsr r0, r3, #0x10
+ mul r1, r0
+ lsr r0, r1, #0x10
+_02025AE8:
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ add r0, sp, #0x8
+ ldrb r0, [r0, r5]
+ add r0, r0, r1
+ mov r1, #0x17
+ lsl r1, r1, #0x6
+ ldrb r1, [r4, r1]
+ add r1, r0, r1
+ cmp r1, #0x63
+ bge _02025B0E
+ mov r1, #0x17
+ lsl r1, r1, #0x6
+ ldrb r1, [r4, r1]
+ add r1, r1, r0
+ mov r0, #0x17
+ lsl r0, r0, #0x6
+ strb r1, [r4, r0]
+ b _02025B16
+_02025B0E:
+ mov r0, #0x17
+ mov r1, #0x63
+ lsl r0, r0, #0x6
+ strb r1, [r4, r0]
+_02025B16:
+ add r2, r2, #0x1
+ cmp r2, #0x64
+ blt _02025AC6
+ mov r0, r12
+ add r1, r0, #0x1
+ ldr r0, [sp, #0x4]
+ mov r12, r1
+ cmp r1, r0
+ blt _02025AC4
+_02025B28:
+ add r0, r6, #0x0
+ add r0, #0x94
+ ldr r1, [r0, #0x0]
+ ldr r0, [sp, #0x0]
+ add r0, r1, r0
+ bl FUN_0201BA10
+ add r1, r6, #0x0
+ add r1, #0x94
+ str r0, [r1, #0x0]
+ mov r1, #0x9b
+ lsl r1, r1, #0x4
+ ldrb r2, [r6, r1]
+ mov r0, #0xf
+ bic r2, r0
+ mov r0, #0x1
+ orr r0, r2
+ strb r0, [r6, r1]
+_02025B4C:
+ add sp, #0x14
+ pop {r4-r7, pc}
+ .balign 4
+_02025B50: .word 0x020EE958
+_02025B54: .word 0x0000055C
+_02025B58: .word 0x5D588B65
+_02025B5C: .word 0x00269EC3
+
+ thumb_func_start FUN_02025B60
+FUN_02025B60: ; 0x02025B60
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r2, #0x0
+ bl FUN_02026CC4
+ cmp r4, #0x0
+ blt _02025B90
+ cmp r5, #0x0
+ bne _02025B90
+ add r1, r0, #0x0
+ add r1, #0x98
+ ldr r1, [r1, #0x0]
+ cmp r1, r4
+ bge _02025B84
+ mov r1, #0x0
+ add r0, #0x98
+ str r1, [r0, #0x0]
+ pop {r3-r5, pc}
+_02025B84:
+ add r1, r0, #0x0
+ add r1, #0x98
+ ldr r1, [r1, #0x0]
+ add r0, #0x98
+ sub r1, r1, r4
+ str r1, [r0, #0x0]
+_02025B90:
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02025B94
+FUN_02025B94: ; 0x02025B94
+ push {r3, lr}
+ bl FUN_02026CC4
+ add r1, r0, #0x0
+ add r1, #0x98
+ ldr r1, [r1, #0x0]
+ cmp r1, #0x0
+ bne _02025BB6
+ add r1, r0, #0x0
+ add r1, #0x9c
+ ldrb r1, [r1, #0x0]
+ cmp r1, #0x2
+ bne _02025BB6
+ add r1, r0, #0x0
+ mov r2, #0x0
+ add r1, #0x9c
+ strb r2, [r1, #0x0]
+_02025BB6:
+ add r1, r0, #0x0
+ add r1, #0x98
+ ldr r1, [r1, #0x0]
+ cmp r1, #0x0
+ bne _02025BD4
+ add r1, r0, #0x0
+ add r1, #0x9c
+ ldrb r1, [r1, #0x0]
+ cmp r1, #0x1
+ bne _02025BD4
+ mov r2, #0x5a
+ add r1, r0, #0x0
+ lsl r2, r2, #0x4
+ add r1, #0x98
+ str r2, [r1, #0x0]
+_02025BD4:
+ add r1, r0, #0x0
+ add r1, #0x9c
+ ldrb r1, [r1, #0x0]
+ cmp r1, #0x1
+ bne _02025BE4
+ mov r1, #0x2
+ add r0, #0x9c
+ strb r1, [r0, #0x0]
+_02025BE4:
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02025BE8
+FUN_02025BE8: ; 0x02025BE8
+ push {r3, lr}
+ bl FUN_02026CC4
+ add r1, r0, #0x0
+ add r1, #0x9c
+ ldrb r1, [r1, #0x0]
+ cmp r1, #0x0
+ bne _02025BFE
+ mov r1, #0x1
+ add r0, #0x9c
+ strb r1, [r0, #0x0]
+_02025BFE:
+ pop {r3, pc}
+
+ thumb_func_start FUN_02025C00
+FUN_02025C00: ; 0x02025C00
+ push {r3, lr}
+ bl FUN_02026CC4
+ add r1, r0, #0x0
+ add r1, #0x9c
+ ldrb r1, [r1, #0x0]
+ cmp r1, #0x1
+ bne _02025C16
+ mov r1, #0x0
+ add r0, #0x9c
+ strb r1, [r0, #0x0]
+_02025C16:
+ pop {r3, pc}
+
+ thumb_func_start FUN_02025C18
+FUN_02025C18: ; 0x02025C18
+ push {r3, lr}
+ bl FUN_02026CC4
+ add r0, #0x9c
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x2
+ beq _02025C2A
+ mov r0, #0x1
+ pop {r3, pc}
+_02025C2A:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02025C30
+FUN_02025C30: ; 0x02025C30
+ mov r1, #0x1
+ add r0, #0x9d
+ strb r1, [r0, #0x0]
+ bx lr
+
+ thumb_func_start FUN_02025C38
+FUN_02025C38: ; 0x02025C38
+ add r0, #0x9d
+ ldrb r0, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02025C40
+FUN_02025C40: ; 0x02025C40
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ ldr r0, _02025CD0 ; =0x0000010E
+ add r6, r1, #0x0
+ ldrb r0, [r7, r0]
+ mov r4, #0x0
+ add r5, r7, #0x0
+ str r0, [sp, #0x0]
+_02025C50:
+ add r0, r6, #0x0
+ bl FUN_020239BC
+ add r1, r5, #0x0
+ add r1, #0xa0
+ ldr r1, [r1, #0x0]
+ cmp r1, r0
+ beq _02025CCC
+ add r4, r4, #0x1
+ add r5, r5, #0x4
+ cmp r4, #0x5
+ blt _02025C50
+ ldr r0, [sp, #0x0]
+ cmp r0, #0x5
+ blt _02025C72
+ bl ErrorHandling
+_02025C72:
+ add r0, r6, #0x0
+ bl FUN_0202398C
+ ldr r1, [sp, #0x0]
+ add r2, r7, #0x0
+ add r2, #0xb4
+ lsl r1, r1, #0x4
+ add r1, r2, r1
+ mov r2, #0x10
+ blx MI_CpuCopy8
+ add r0, r6, #0x0
+ bl FUN_020239BC
+ ldr r1, [sp, #0x0]
+ lsl r1, r1, #0x2
+ add r1, r7, r1
+ add r1, #0xa0
+ str r0, [r1, #0x0]
+ add r0, r6, #0x0
+ bl FUN_02023A70
+ ldr r1, [sp, #0x0]
+ add r2, r7, r1
+ mov r1, #0x41
+ lsl r1, r1, #0x2
+ strb r0, [r2, r1]
+ add r0, r6, #0x0
+ bl FUN_02023A68
+ ldr r1, [sp, #0x0]
+ add r2, r7, r1
+ ldr r1, _02025CD4 ; =0x00000109
+ strb r0, [r2, r1]
+ add r0, r1, #0x5
+ ldrb r0, [r7, r0]
+ add r2, r0, #0x1
+ add r0, r1, #0x5
+ strb r2, [r7, r0]
+ ldrb r0, [r7, r0]
+ cmp r0, #0x5
+ blo _02025CCC
+ mov r2, #0x0
+ add r0, r1, #0x5
+ strb r2, [r7, r0]
+_02025CCC:
+ pop {r3-r7, pc}
+ nop
+_02025CD0: .word 0x0000010E
+_02025CD4: .word 0x00000109
+
+ thumb_func_start FUN_02025CD8
+FUN_02025CD8: ; 0x02025CD8
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldr r0, _02025D38 ; =0x0000010E
+ ldrb r0, [r5, r0]
+ sub r0, r0, r2
+ sub r4, r0, #0x1
+ bpl _02025CE8
+ add r4, r4, #0x5
+_02025CE8:
+ add r7, r5, #0x0
+ lsl r0, r4, #0x4
+ add r7, #0xb4
+ str r0, [sp, #0x0]
+ ldrh r0, [r7, r0]
+ cmp r0, #0x0
+ beq _02025D32
+ add r0, r1, #0x0
+ bl FUN_02023928
+ ldr r1, [sp, #0x0]
+ add r6, r0, #0x0
+ add r1, r7, r1
+ bl FUN_0202395C
+ ldr r1, _02025D3C ; =0x00000109
+ add r2, r5, r4
+ ldrb r1, [r2, r1]
+ add r0, r6, #0x0
+ bl FUN_02023A6C
+ mov r1, #0x41
+ add r2, r5, r4
+ lsl r1, r1, #0x2
+ ldrb r1, [r2, r1]
+ add r0, r6, #0x0
+ bl FUN_02023A74
+ lsl r1, r4, #0x2
+ add r1, r5, r1
+ add r1, #0xa0
+ ldr r1, [r1, #0x0]
+ add r0, r6, #0x0
+ bl FUN_020239B8
+ add r0, r6, #0x0
+ pop {r3-r7, pc}
+_02025D32:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ nop
+_02025D38: .word 0x0000010E
+_02025D3C: .word 0x00000109
+
+ thumb_func_start FUN_02025D40
+FUN_02025D40: ; 0x02025D40
+ add r0, #0x94
+ ldr r0, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02025D48
+FUN_02025D48: ; 0x02025D48
+ push {r4, lr}
+ add r4, r0, #0x0
+ cmp r4, #0xb
+ bge _02025D54
+ bl ErrorHandling
+_02025D54:
+ cmp r4, #0x3c
+ blt _02025D5C
+ bl ErrorHandling
+_02025D5C:
+ sub r4, #0xb
+ ldr r0, _02025D68 ; =0x02105C74
+ lsl r1, r4, #0x1
+ ldrh r0, [r0, r1]
+ pop {r4, pc}
+ nop
+_02025D68: .word 0x02105C74
+
+ thumb_func_start FUN_02025D6C
+FUN_02025D6C: ; 0x02025D6C
+ push {r4-r5}
+ mov r2, #0x81
+ mov r5, #0x0
+ lsl r2, r2, #0x4
+_02025D74:
+ add r4, r0, r5
+ ldrb r3, [r4, r2]
+ cmp r3, #0x0
+ bne _02025D88
+ mov r0, #0x81
+ lsl r0, r0, #0x4
+ strb r1, [r4, r0]
+ mov r0, #0x1
+ pop {r4-r5}
+ bx lr
+_02025D88:
+ add r5, r5, #0x1
+ cmp r5, #0xc8
+ blt _02025D74
+ mov r0, #0x0
+ pop {r4-r5}
+ bx lr
+
+ thumb_func_start FUN_02025D94
+FUN_02025D94: ; 0x02025D94
+ mov r1, #0x81
+ mov r3, #0x0
+ lsl r1, r1, #0x4
+_02025D9A:
+ add r2, r0, r3
+ ldrb r2, [r2, r1]
+ cmp r2, #0x0
+ bne _02025DA6
+ mov r0, #0x1
+ bx lr
+_02025DA6:
+ add r3, r3, #0x1
+ cmp r3, #0xc8
+ blt _02025D9A
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02025DB0
+FUN_02025DB0: ; 0x02025DB0
+ mov r1, #0x81
+ mov r3, #0x0
+ lsl r1, r1, #0x4
+_02025DB6:
+ add r2, r0, r3
+ ldrb r2, [r2, r1]
+ cmp r2, #0x0
+ beq _02025DC4
+ add r3, r3, #0x1
+ cmp r3, #0xc8
+ blt _02025DB6
+_02025DC4:
+ add r0, r3, #0x0
+ bx lr
+
+ thumb_func_start FUN_02025DC8
+FUN_02025DC8: ; 0x02025DC8
+ add r1, r0, r1
+ mov r0, #0x81
+ lsl r0, r0, #0x4
+ ldrb r0, [r1, r0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02025DD4
+FUN_02025DD4: ; 0x02025DD4
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_02025F0C
+ cmp r0, #0x0
+ beq _02025DE6
+ bl ErrorHandling
+_02025DE6:
+ mov r0, #0x81
+ add r1, r5, r4
+ lsl r0, r0, #0x4
+ add r6, r4, #0x0
+ ldrb r7, [r1, r0]
+ cmp r4, #0xc7
+ bge _02025E06
+ mov r1, #0x81
+ add r0, r0, #0x1
+ lsl r1, r1, #0x4
+_02025DFA:
+ add r3, r5, r6
+ ldrb r2, [r3, r0]
+ add r6, r6, #0x1
+ cmp r6, #0xc7
+ strb r2, [r3, r1]
+ blt _02025DFA
+_02025E06:
+ ldr r0, _02025E1C ; =0x000008D7
+ mov r2, #0x0
+ strb r2, [r5, r0]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ sub r2, r2, #0x1
+ bl FUN_02025F58
+ add r0, r7, #0x0
+ pop {r3-r7, pc}
+ nop
+_02025E1C: .word 0x000008D7
+
+ thumb_func_start FUN_02025E20
+FUN_02025E20: ; 0x02025E20
+ push {r4-r7, lr}
+ sub sp, #0xd4
+ mov r4, #0x0
+ add r5, r0, #0x0
+ sub r0, r4, #0x1
+ str r0, [sp, #0x4]
+ mov r0, #0x81
+ lsl r0, r0, #0x4
+ str r1, [sp, #0x8]
+ str r2, [sp, #0x0]
+ add r0, r5, r0
+ add r1, sp, #0xc
+ mov r2, #0xc8
+ blx MI_CpuCopy8
+ ldr r2, [sp, #0x8]
+ add r1, sp, #0xc
+ add r0, r4, #0x0
+ add r7, r1, r2
+_02025E46:
+ ldr r2, [sp, #0x8]
+ cmp r0, r2
+ beq _02025E58
+ ldrb r6, [r1, #0x0]
+ mov r2, #0x81
+ add r3, r5, r4
+ lsl r2, r2, #0x4
+ strb r6, [r3, r2]
+ add r4, r4, #0x1
+_02025E58:
+ ldr r2, [sp, #0x0]
+ cmp r0, r2
+ bne _02025E6A
+ ldrb r6, [r7, #0x0]
+ mov r2, #0x81
+ add r3, r5, r4
+ lsl r2, r2, #0x4
+ strb r6, [r3, r2]
+ add r4, r4, #0x1
+_02025E6A:
+ add r0, r0, #0x1
+ add r1, r1, #0x1
+ cmp r0, #0xc8
+ blt _02025E46
+ ldr r0, [sp, #0x8]
+ mov r3, #0x0
+ add r2, r0, #0x1
+ mov r0, #0x9a
+ lsl r0, r0, #0x4
+_02025E7C:
+ add r1, r5, r3
+ ldrb r1, [r1, r0]
+ cmp r2, r1
+ bne _02025E88
+ str r3, [sp, #0x4]
+ b _02025E8E
+_02025E88:
+ add r3, r3, #0x1
+ cmp r3, #0xf
+ blt _02025E7C
+_02025E8E:
+ ldr r1, [sp, #0x0]
+ add r0, r5, #0x0
+ mov r2, #0x1
+ bl FUN_02025F58
+ mov r2, #0x0
+ ldr r1, [sp, #0x8]
+ add r0, r5, #0x0
+ mvn r2, r2
+ bl FUN_02025F58
+ mov r1, #0x0
+ ldr r0, [sp, #0x4]
+ mvn r1, r1
+ cmp r0, r1
+ beq _02025ED6
+ ldr r1, [sp, #0x0]
+ ldr r0, [sp, #0x8]
+ cmp r0, r1
+ bge _02025EC8
+ add r0, r1, #0x0
+ add r2, r0, #0x1
+ ldr r0, [sp, #0x4]
+ add sp, #0xd4
+ add r1, r5, r0
+ mov r0, #0x9a
+ lsl r0, r0, #0x4
+ strb r2, [r1, r0]
+ pop {r4-r7, pc}
+_02025EC8:
+ add r0, r1, #0x0
+ add r2, r0, #0x2
+ ldr r0, [sp, #0x4]
+ add r1, r5, r0
+ mov r0, #0x9a
+ lsl r0, r0, #0x4
+ strb r2, [r1, r0]
+_02025ED6:
+ add sp, #0xd4
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02025EDC
+FUN_02025EDC: ; 0x02025EDC
+ push {r4-r6, lr}
+ add r6, r2, #0x0
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r6, #0x1
+ bge _02025EEC
+ bl ErrorHandling
+_02025EEC:
+ cmp r6, #0xf
+ ble _02025EF4
+ bl ErrorHandling
+_02025EF4:
+ sub r0, r6, #0x1
+ add r1, r5, r0
+ mov r0, #0x9a
+ add r2, r4, #0x1
+ lsl r0, r0, #0x4
+ strb r2, [r1, r0]
+ mov r0, #0x81
+ add r1, r5, r4
+ lsl r0, r0, #0x4
+ ldrb r0, [r1, r0]
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02025F0C
+FUN_02025F0C: ; 0x02025F0C
+ push {r3-r4}
+ add r3, r1, #0x1
+ mov r1, #0x9a
+ mov r4, #0x0
+ lsl r1, r1, #0x4
+_02025F16:
+ add r2, r0, r4
+ ldrb r2, [r2, r1]
+ cmp r3, r2
+ bne _02025F24
+ mov r0, #0x1
+ pop {r3-r4}
+ bx lr
+_02025F24:
+ add r4, r4, #0x1
+ cmp r4, #0xf
+ blt _02025F16
+ mov r0, #0x0
+ pop {r3-r4}
+ bx lr
+
+ thumb_func_start FUN_02025F30
+FUN_02025F30: ; 0x02025F30
+ sub r1, r1, #0x1
+ cmp r1, #0xf
+ bge _02025F40
+ add r1, r0, r1
+ mov r0, #0x9a
+ mov r2, #0x0
+ lsl r0, r0, #0x4
+ strb r2, [r1, r0]
+_02025F40:
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02025F44
+FUN_02025F44: ; 0x02025F44
+ mov r1, #0x9a
+ lsl r1, r1, #0x4
+ add r0, r0, r1
+ ldr r3, _02025F54 ; =MI_CpuFill8
+ mov r1, #0x0
+ mov r2, #0xf
+ bx r3
+ nop
+_02025F54: .word MI_CpuFill8
+
+ thumb_func_start FUN_02025F58
+FUN_02025F58: ; 0x02025F58
+ push {r4-r7}
+ mov r6, #0x9a
+ lsl r6, r6, #0x4
+ mov r4, #0x0
+ add r1, r1, #0x1
+ add r7, r6, #0x0
+_02025F64:
+ add r3, r0, r4
+ ldrb r5, [r3, r7]
+ cmp r5, r1
+ ble _02025F76
+ mov r5, #0x9a
+ lsl r5, r5, #0x4
+ ldrb r5, [r3, r5]
+ add r5, r5, r2
+ strb r5, [r3, r6]
+_02025F76:
+ add r4, r4, #0x1
+ cmp r4, #0xf
+ blt _02025F64
+ pop {r4-r7}
+ bx lr
+
+ thumb_func_start FUN_02025F80
+FUN_02025F80: ; 0x02025F80
+ mov r1, #0x9
+ mov r3, #0x0
+ lsl r1, r1, #0x8
+_02025F86:
+ add r2, r0, r3
+ ldrb r2, [r2, r1]
+ cmp r2, #0x0
+ beq _02025F94
+ add r3, r3, #0x1
+ cmp r3, #0x28
+ blt _02025F86
+_02025F94:
+ add r0, r3, #0x0
+ bx lr
+
+ thumb_func_start FUN_02025F98
+FUN_02025F98: ; 0x02025F98
+ add r1, r0, r1
+ mov r0, #0x9
+ lsl r0, r0, #0x8
+ ldrb r0, [r1, r0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02025FA4
+FUN_02025FA4: ; 0x02025FA4
+ push {r3-r6}
+ mov r2, #0x9
+ add r3, r0, r1
+ lsl r2, r2, #0x8
+ ldrb r2, [r3, r2]
+ cmp r1, #0x27
+ bge _02025FC2
+ ldr r3, _02025FD0 ; =0x00000901
+ sub r4, r3, #0x1
+_02025FB6:
+ add r6, r0, r1
+ ldrb r5, [r6, r3]
+ add r1, r1, #0x1
+ cmp r1, #0x27
+ strb r5, [r6, r4]
+ blt _02025FB6
+_02025FC2:
+ ldr r1, _02025FD4 ; =0x00000927
+ mov r3, #0x0
+ strb r3, [r0, r1]
+ add r0, r2, #0x0
+ pop {r3-r6}
+ bx lr
+ nop
+_02025FD0: .word 0x00000901
+_02025FD4: .word 0x00000927
+
+ thumb_func_start FUN_02025FD8
+FUN_02025FD8: ; 0x02025FD8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_020259E0
+ mov r1, #0x0
+ mvn r1, r1
+ cmp r0, r1
+ beq _02025FF6
+ add r1, r5, r0
+ mov r0, #0x9
+ lsl r0, r0, #0x8
+ strb r4, [r1, r0]
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_02025FF6:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02025FFC
+FUN_02025FFC: ; 0x02025FFC
+ push {r3-r7, lr}
+ sub sp, #0x30
+ add r5, r0, #0x0
+ mov r0, #0x9
+ lsl r0, r0, #0x8
+ str r1, [sp, #0x4]
+ str r2, [sp, #0x0]
+ add r0, r5, r0
+ add r1, sp, #0x8
+ mov r2, #0x28
+ mov r4, #0x0
+ blx MI_CpuCopy8
+ ldr r2, [sp, #0x4]
+ add r1, sp, #0x8
+ add r0, r4, #0x0
+ add r7, r1, r2
+_0202601E:
+ ldr r2, [sp, #0x4]
+ cmp r0, r2
+ beq _02026030
+ ldrb r6, [r1, #0x0]
+ mov r2, #0x9
+ add r3, r5, r4
+ lsl r2, r2, #0x8
+ strb r6, [r3, r2]
+ add r4, r4, #0x1
+_02026030:
+ ldr r2, [sp, #0x0]
+ cmp r0, r2
+ bne _02026042
+ ldrb r6, [r7, #0x0]
+ mov r2, #0x9
+ add r3, r5, r4
+ lsl r2, r2, #0x8
+ strb r6, [r3, r2]
+ add r4, r4, #0x1
+_02026042:
+ add r0, r0, #0x1
+ add r1, r1, #0x1
+ cmp r0, #0x28
+ blt _0202601E
+ add sp, #0x30
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02026050
+FUN_02026050: ; 0x02026050
+ mov r1, #0x95
+ mov r3, #0x0
+ lsl r1, r1, #0x4
+_02026056:
+ add r2, r0, r3
+ ldrb r2, [r2, r1]
+ cmp r2, #0x0
+ beq _02026064
+ add r3, r3, #0x1
+ cmp r3, #0x28
+ blt _02026056
+_02026064:
+ add r0, r3, #0x0
+ bx lr
+
+ thumb_func_start FUN_02026068
+FUN_02026068: ; 0x02026068
+ add r1, r0, r1
+ mov r0, #0x95
+ lsl r0, r0, #0x4
+ ldrb r0, [r1, r0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02026074
+FUN_02026074: ; 0x02026074
+ add r1, r0, r1
+ ldr r0, _0202607C ; =0x00000978
+ ldrb r0, [r1, r0]
+ bx lr
+ .balign 4
+_0202607C: .word 0x00000978
+
+ thumb_func_start FUN_02026080
+FUN_02026080: ; 0x02026080
+ push {r4-r7}
+ add r2, r0, #0x0
+ mov r0, #0x95
+ add r3, r2, r1
+ lsl r0, r0, #0x4
+ ldrb r0, [r3, r0]
+ cmp r1, #0x27
+ mov r12, r0
+ bge _020260AE
+ ldr r7, _020260BC ; =0x00000951
+ add r4, r7, #0x0
+ add r5, r7, #0x0
+ sub r3, r7, #0x1
+ add r4, #0x28
+ add r5, #0x27
+_0202609E:
+ add r0, r2, r1
+ ldrb r6, [r0, r7]
+ add r1, r1, #0x1
+ cmp r1, #0x27
+ strb r6, [r0, r3]
+ ldrb r6, [r0, r4]
+ strb r6, [r0, r5]
+ blt _0202609E
+_020260AE:
+ ldr r0, _020260C0 ; =0x00000977
+ mov r1, #0x0
+ strb r1, [r2, r0]
+ mov r0, r12
+ pop {r4-r7}
+ bx lr
+ nop
+_020260BC: .word 0x00000951
+_020260C0: .word 0x00000977
+
+ thumb_func_start FUN_020260C4
+FUN_020260C4: ; 0x020260C4
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_02025A00
+ mov r1, #0x0
+ mvn r1, r1
+ cmp r0, r1
+ beq _020260E8
+ add r1, r5, r0
+ mov r0, #0x95
+ lsl r0, r0, #0x4
+ strb r4, [r1, r0]
+ add r0, #0x28
+ strb r6, [r1, r0]
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_020260E8:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_020260EC
+FUN_020260EC: ; 0x020260EC
+ push {r4-r7, lr}
+ sub sp, #0x5c
+ add r7, r0, #0x0
+ mov r0, #0x95
+ lsl r0, r0, #0x4
+ str r1, [sp, #0x0]
+ str r2, [sp, #0x4]
+ add r0, r7, r0
+ add r1, sp, #0x34
+ mov r2, #0x28
+ mov r4, #0x0
+ blx MI_CpuCopy8
+ ldr r0, _02026168 ; =0x00000978
+ add r1, sp, #0xc
+ add r0, r7, r0
+ mov r2, #0x28
+ blx MI_CpuCopy8
+ ldr r3, [sp, #0x0]
+ add r1, sp, #0x34
+ add r3, r1, r3
+ mov r12, r3
+ ldr r3, [sp, #0x0]
+ add r2, sp, #0xc
+ add r3, r2, r3
+ add r0, r4, #0x0
+ str r3, [sp, #0x8]
+_02026124:
+ ldr r3, [sp, #0x0]
+ cmp r0, r3
+ beq _0202613C
+ ldrb r5, [r1, #0x0]
+ mov r3, #0x95
+ add r6, r7, r4
+ lsl r3, r3, #0x4
+ strb r5, [r6, r3]
+ ldrb r5, [r2, #0x0]
+ add r3, #0x28
+ add r4, r4, #0x1
+ strb r5, [r6, r3]
+_0202613C:
+ ldr r3, [sp, #0x4]
+ cmp r0, r3
+ bne _02026158
+ mov r3, r12
+ ldrb r5, [r3, #0x0]
+ mov r3, #0x95
+ add r6, r7, r4
+ lsl r3, r3, #0x4
+ strb r5, [r6, r3]
+ ldr r3, [sp, #0x8]
+ add r4, r4, #0x1
+ ldrb r5, [r3, #0x0]
+ ldr r3, _02026168 ; =0x00000978
+ strb r5, [r6, r3]
+_02026158:
+ add r0, r0, #0x1
+ add r1, r1, #0x1
+ add r2, r2, #0x1
+ cmp r0, #0x28
+ blt _02026124
+ add sp, #0x5c
+ pop {r4-r7, pc}
+ nop
+_02026168: .word 0x00000978
+
+ thumb_func_start FUN_0202616C
+FUN_0202616C: ; 0x0202616C
+ ldr r1, _02026184 ; =0x00000928
+ mov r3, #0x0
+_02026170:
+ add r2, r0, r3
+ ldrb r2, [r2, r1]
+ cmp r2, #0x0
+ beq _0202617E
+ add r3, r3, #0x1
+ cmp r3, #0x28
+ blt _02026170
+_0202617E:
+ add r0, r3, #0x0
+ bx lr
+ nop
+_02026184: .word 0x00000928
+
+ thumb_func_start FUN_02026188
+FUN_02026188: ; 0x02026188
+ add r1, r0, r1
+ ldr r0, _02026190 ; =0x00000928
+ ldrb r0, [r1, r0]
+ bx lr
+ .balign 4
+_02026190: .word 0x00000928
+
+ thumb_func_start FUN_02026194
+FUN_02026194: ; 0x02026194
+ push {r3-r6}
+ ldr r2, _020261BC ; =0x00000928
+ add r3, r0, r1
+ ldrb r2, [r3, r2]
+ cmp r1, #0x27
+ bge _020261B0
+ ldr r3, _020261C0 ; =0x00000929
+ sub r4, r3, #0x1
+_020261A4:
+ add r6, r0, r1
+ ldrb r5, [r6, r3]
+ add r1, r1, #0x1
+ cmp r1, #0x27
+ strb r5, [r6, r4]
+ blt _020261A4
+_020261B0:
+ ldr r1, _020261C4 ; =0x0000094F
+ mov r3, #0x0
+ strb r3, [r0, r1]
+ add r0, r2, #0x0
+ pop {r3-r6}
+ bx lr
+ .balign 4
+_020261BC: .word 0x00000928
+_020261C0: .word 0x00000929
+_020261C4: .word 0x0000094F
+
+ thumb_func_start FUN_020261C8
+FUN_020261C8: ; 0x020261C8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_02025A20
+ mov r1, #0x0
+ mvn r1, r1
+ cmp r0, r1
+ beq _020261E4
+ add r1, r5, r0
+ ldr r0, _020261E8 ; =0x00000928
+ strb r4, [r1, r0]
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_020261E4:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+_020261E8: .word 0x00000928
+
+ thumb_func_start FUN_020261EC
+FUN_020261EC: ; 0x020261EC
+ push {r3-r7, lr}
+ sub sp, #0x30
+ add r5, r0, #0x0
+ ldr r0, _02026238 ; =0x00000928
+ str r1, [sp, #0x4]
+ str r2, [sp, #0x0]
+ add r0, r5, r0
+ add r1, sp, #0x8
+ mov r2, #0x28
+ mov r4, #0x0
+ blx MI_CpuCopy8
+ ldr r2, [sp, #0x4]
+ add r1, sp, #0x8
+ add r0, r4, #0x0
+ add r7, r1, r2
+_0202620C:
+ ldr r2, [sp, #0x4]
+ cmp r0, r2
+ beq _0202621C
+ ldrb r6, [r1, #0x0]
+ ldr r2, _02026238 ; =0x00000928
+ add r3, r5, r4
+ strb r6, [r3, r2]
+ add r4, r4, #0x1
+_0202621C:
+ ldr r2, [sp, #0x0]
+ cmp r0, r2
+ bne _0202622C
+ ldrb r6, [r7, #0x0]
+ ldr r2, _02026238 ; =0x00000928
+ add r3, r5, r4
+ strb r6, [r3, r2]
+ add r4, r4, #0x1
+_0202622C:
+ add r0, r0, #0x1
+ add r1, r1, #0x1
+ cmp r0, #0x28
+ blt _0202620C
+ add sp, #0x30
+ pop {r3-r7, pc}
+ .balign 4
+_02026238: .word 0x00000928
+
+ thumb_func_start FUN_0202623C
+FUN_0202623C: ; 0x0202623C
+ ldr r1, _02026254 ; =0x000008D8
+ mov r3, #0x0
+_02026240:
+ add r2, r0, r3
+ ldrb r2, [r2, r1]
+ cmp r2, #0x0
+ beq _0202624E
+ add r3, r3, #0x1
+ cmp r3, #0x28
+ blt _02026240
+_0202624E:
+ add r0, r3, #0x0
+ bx lr
+ nop
+_02026254: .word 0x000008D8
+
+ thumb_func_start FUN_02026258
+FUN_02026258: ; 0x02026258
+ add r1, r0, r1
+ ldr r0, _02026260 ; =0x000008D8
+ ldrb r0, [r1, r0]
+ bx lr
+ .balign 4
+_02026260: .word 0x000008D8
+
+ thumb_func_start FUN_02026264
+FUN_02026264: ; 0x02026264
+ push {r3-r6}
+ ldr r2, _0202628C ; =0x000008D8
+ add r3, r0, r1
+ ldrb r2, [r3, r2]
+ cmp r1, #0x27
+ bge _02026280
+ ldr r3, _02026290 ; =0x000008D9
+ sub r4, r3, #0x1
+_02026274:
+ add r6, r0, r1
+ ldrb r5, [r6, r3]
+ add r1, r1, #0x1
+ cmp r1, #0x27
+ strb r5, [r6, r4]
+ blt _02026274
+_02026280:
+ ldr r1, _02026294 ; =0x000008FF
+ mov r3, #0x0
+ strb r3, [r0, r1]
+ add r0, r2, #0x0
+ pop {r3-r6}
+ bx lr
+ .balign 4
+_0202628C: .word 0x000008D8
+_02026290: .word 0x000008D9
+_02026294: .word 0x000008FF
+
+ thumb_func_start FUN_02026298
+FUN_02026298: ; 0x02026298
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_02025A40
+ mov r1, #0x0
+ mvn r1, r1
+ cmp r0, r1
+ beq _020262B4
+ add r1, r5, r0
+ ldr r0, _020262B8 ; =0x000008D8
+ strb r4, [r1, r0]
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_020262B4:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+_020262B8: .word 0x000008D8
+
+ thumb_func_start FUN_020262BC
+FUN_020262BC: ; 0x020262BC
+ push {r3-r7, lr}
+ sub sp, #0x30
+ add r5, r0, #0x0
+ ldr r0, _02026308 ; =0x000008D8
+ str r1, [sp, #0x4]
+ str r2, [sp, #0x0]
+ add r0, r5, r0
+ add r1, sp, #0x8
+ mov r2, #0x28
+ mov r4, #0x0
+ blx MI_CpuCopy8
+ ldr r2, [sp, #0x4]
+ add r1, sp, #0x8
+ add r0, r4, #0x0
+ add r7, r1, r2
+_020262DC:
+ ldr r2, [sp, #0x4]
+ cmp r0, r2
+ beq _020262EC
+ ldrb r6, [r1, #0x0]
+ ldr r2, _02026308 ; =0x000008D8
+ add r3, r5, r4
+ strb r6, [r3, r2]
+ add r4, r4, #0x1
+_020262EC:
+ ldr r2, [sp, #0x0]
+ cmp r0, r2
+ bne _020262FC
+ ldrb r6, [r7, #0x0]
+ ldr r2, _02026308 ; =0x000008D8
+ add r3, r5, r4
+ strb r6, [r3, r2]
+ add r4, r4, #0x1
+_020262FC:
+ add r0, r0, #0x1
+ add r1, r1, #0x1
+ cmp r0, #0x28
+ blt _020262DC
+ add sp, #0x30
+ pop {r3-r7, pc}
+ .balign 4
+_02026308: .word 0x000008D8
+
+ thumb_func_start FUN_0202630C
+FUN_0202630C: ; 0x0202630C
+ push {r3-r7, lr}
+ add r4, r2, #0x0
+ add r5, r0, #0x0
+ add r7, r1, #0x0
+ add r6, r3, #0x0
+ cmp r4, #0x40
+ blt _0202631E
+ bl ErrorHandling
+_0202631E:
+ ldr r0, _02026350 ; =0x0000010F
+ add r1, r5, r4
+ strb r7, [r1, r0]
+ lsl r1, r4, #0x1
+ add r1, r4, r1
+ add r2, r0, #0x0
+ add r1, r5, r1
+ add r2, #0x40
+ strb r6, [r1, r2]
+ mov r2, #0xf
+ lsl r2, r2, #0x8
+ add r3, r6, #0x0
+ and r3, r2
+ asr r4, r3, #0x8
+ ldr r3, [sp, #0x18]
+ and r2, r3
+ asr r2, r2, #0x4
+ add r4, r4, r2
+ add r2, r0, #0x0
+ add r2, #0x41
+ strb r4, [r1, r2]
+ add r0, #0x42
+ strb r3, [r1, r0]
+ pop {r3-r7, pc}
+ nop
+_02026350: .word 0x0000010F
+
+ thumb_func_start FUN_02026354
+FUN_02026354: ; 0x02026354
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ cmp r4, #0x40
+ blt _02026362
+ bl ErrorHandling
+_02026362:
+ ldr r0, _0202636C ; =0x0000010F
+ add r1, r5, r4
+ ldrb r0, [r1, r0]
+ pop {r3-r5, pc}
+ nop
+_0202636C: .word 0x0000010F
+
+ thumb_func_start FUN_02026370
+FUN_02026370: ; 0x02026370
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ cmp r4, #0x40
+ blt _0202637E
+ bl ErrorHandling
+_0202637E:
+ lsl r0, r4, #0x1
+ add r0, r4, r0
+ add r1, r5, r0
+ ldr r0, _02026398 ; =0x0000014F
+ ldrb r2, [r1, r0]
+ add r0, r0, #0x1
+ ldrb r0, [r1, r0]
+ lsl r1, r0, #0x8
+ mov r0, #0xf
+ lsl r0, r0, #0x8
+ and r0, r1
+ add r0, r2, r0
+ pop {r3-r5, pc}
+ .balign 4
+_02026398: .word 0x0000014F
+
+ thumb_func_start FUN_0202639C
+FUN_0202639C: ; 0x0202639C
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ cmp r4, #0x40
+ blt _020263AA
+ bl ErrorHandling
+_020263AA:
+ lsl r0, r4, #0x1
+ add r0, r4, r0
+ add r1, r5, r0
+ ldr r0, _020263C4 ; =0x00000151
+ ldrb r2, [r1, r0]
+ sub r0, r0, #0x1
+ ldrb r0, [r1, r0]
+ lsl r1, r0, #0x4
+ mov r0, #0xf
+ lsl r0, r0, #0x8
+ and r0, r1
+ add r0, r2, r0
+ pop {r3-r5, pc}
+ .balign 4
+_020263C4: .word 0x00000151
+
+ thumb_func_start FUN_020263C8
+FUN_020263C8: ; 0x020263C8
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ cmp r4, #0x40
+ blt _020263D6
+ bl ErrorHandling
+_020263D6:
+ ldr r0, _020263F0 ; =0x0000010F
+ mov r1, #0x0
+ add r2, r5, r4
+ strb r1, [r2, r0]
+ add r0, #0x40
+ add r2, r5, r0
+ lsl r0, r4, #0x1
+ add r0, r4, r0
+ add r0, r2, r0
+ mov r2, #0x3
+ blx MI_CpuFill8
+ pop {r3-r5, pc}
+ .balign 4
+_020263F0: .word 0x0000010F
+
+ thumb_func_start FUN_020263F4
+FUN_020263F4: ; 0x020263F4
+ push {r3-r7, lr}
+ add r4, r2, #0x0
+ add r5, r0, #0x0
+ add r7, r1, #0x0
+ add r6, r3, #0x0
+ cmp r4, #0x10
+ blt _02026406
+ bl ErrorHandling
+_02026406:
+ lsl r2, r4, #0x1
+ ldr r1, _02026440 ; =0x0000050C
+ add r0, r5, r4
+ add r2, r4, r2
+ add r4, r5, r2
+ add r2, r1, #0x0
+ mov r5, #0xf
+ strb r7, [r0, r1]
+ add r2, #0x10
+ strb r6, [r4, r2]
+ lsl r5, r5, #0x8
+ add r2, r6, #0x0
+ and r2, r5
+ asr r3, r2, #0x8
+ ldr r2, [sp, #0x18]
+ and r5, r2
+ asr r5, r5, #0x4
+ add r5, r3, r5
+ add r3, r1, #0x0
+ add r3, #0x11
+ strb r5, [r4, r3]
+ add r3, r1, #0x0
+ add r3, #0x12
+ strb r2, [r4, r3]
+ ldr r2, [sp, #0x1c]
+ add r1, #0x40
+ strb r2, [r0, r1]
+ pop {r3-r7, pc}
+ nop
+_02026440: .word 0x0000050C
+
+ thumb_func_start FUN_02026444
+FUN_02026444: ; 0x02026444
+ add r1, r0, r1
+ ldr r0, _0202644C ; =0x0000050C
+ ldrb r0, [r1, r0]
+ bx lr
+ .balign 4
+_0202644C: .word 0x0000050C
+
+ thumb_func_start FUN_02026450
+FUN_02026450: ; 0x02026450
+ lsl r2, r1, #0x1
+ add r1, r1, r2
+ add r1, r0, r1
+ ldr r0, _0202646C ; =0x0000051C
+ ldrb r2, [r1, r0]
+ add r0, r0, #0x1
+ ldrb r0, [r1, r0]
+ lsl r1, r0, #0x8
+ mov r0, #0xf
+ lsl r0, r0, #0x8
+ and r0, r1
+ add r0, r2, r0
+ bx lr
+ nop
+_0202646C: .word 0x0000051C
+
+ thumb_func_start FUN_02026470
+FUN_02026470: ; 0x02026470
+ lsl r2, r1, #0x1
+ add r1, r1, r2
+ add r1, r0, r1
+ ldr r0, _0202648C ; =0x0000051E
+ ldrb r2, [r1, r0]
+ sub r0, r0, #0x1
+ ldrb r0, [r1, r0]
+ lsl r1, r0, #0x4
+ mov r0, #0xf
+ lsl r0, r0, #0x8
+ and r0, r1
+ add r0, r2, r0
+ bx lr
+ nop
+_0202648C: .word 0x0000051E
+
+ thumb_func_start FUN_02026490
+FUN_02026490: ; 0x02026490
+ add r1, r0, r1
+ ldr r0, _02026498 ; =0x0000054C
+ ldrb r0, [r1, r0]
+ bx lr
+ .balign 4
+_02026498: .word 0x0000054C
+
+ thumb_func_start FUN_0202649C
+FUN_0202649C: ; 0x0202649C
+ push {r3-r7, lr}
+ add r4, r2, #0x0
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ add r7, r3, #0x0
+ cmp r4, #0x64
+ blt _020264AE
+ bl ErrorHandling
+_020264AE:
+ ldr r1, _020264E8 ; =0x0000055C
+ add r0, r5, r4
+ strb r6, [r0, r1]
+ lsl r1, r4, #0x1
+ add r1, r4, r1
+ add r4, r5, r1
+ mov r5, #0xf
+ lsl r5, r5, #0x8
+ add r2, r7, #0x0
+ and r2, r5
+ asr r3, r2, #0x8
+ ldr r2, [sp, #0x18]
+ ldr r1, _020264EC ; =0x00000688
+ and r5, r2
+ asr r5, r5, #0x4
+ add r5, r3, r5
+ strb r7, [r4, r1]
+ add r3, r1, #0x1
+ strb r5, [r4, r3]
+ add r3, r1, #0x2
+ strb r2, [r4, r3]
+ add r2, r1, #0x0
+ ldr r3, [sp, #0x1c]
+ sub r2, #0x64
+ strb r3, [r0, r2]
+ ldr r2, [sp, #0x20]
+ sub r1, #0xc8
+ strb r2, [r0, r1]
+ pop {r3-r7, pc}
+ .balign 4
+_020264E8: .word 0x0000055C
+_020264EC: .word 0x00000688
+
+ thumb_func_start FUN_020264F0
+FUN_020264F0: ; 0x020264F0
+ add r1, r0, r1
+ ldr r0, _020264F8 ; =0x0000055C
+ ldrb r0, [r1, r0]
+ bx lr
+ .balign 4
+_020264F8: .word 0x0000055C
+
+ thumb_func_start FUN_020264FC
+FUN_020264FC: ; 0x020264FC
+ lsl r2, r1, #0x1
+ add r1, r1, r2
+ add r1, r0, r1
+ ldr r0, _02026518 ; =0x00000688
+ ldrb r2, [r1, r0]
+ add r0, r0, #0x1
+ ldrb r0, [r1, r0]
+ lsl r1, r0, #0x8
+ mov r0, #0xf
+ lsl r0, r0, #0x8
+ and r0, r1
+ add r0, r2, r0
+ bx lr
+ nop
+_02026518: .word 0x00000688
+
+ thumb_func_start FUN_0202651C
+FUN_0202651C: ; 0x0202651C
+ lsl r2, r1, #0x1
+ add r1, r1, r2
+ add r1, r0, r1
+ ldr r0, _02026538 ; =0x0000068A
+ ldrb r2, [r1, r0]
+ sub r0, r0, #0x1
+ ldrb r0, [r1, r0]
+ lsl r1, r0, #0x4
+ mov r0, #0xf
+ lsl r0, r0, #0x8
+ and r0, r1
+ add r0, r2, r0
+ bx lr
+ nop
+_02026538: .word 0x0000068A
+
+ thumb_func_start FUN_0202653C
+FUN_0202653C: ; 0x0202653C
+ add r1, r0, r1
+ ldr r0, _02026544 ; =0x00000624
+ ldrb r0, [r1, r0]
+ bx lr
+ .balign 4
+_02026544: .word 0x00000624
+
+ thumb_func_start FUN_02026548
+FUN_02026548: ; 0x02026548
+ add r1, r0, r1
+ mov r0, #0x17
+ lsl r0, r0, #0x6
+ ldrb r0, [r1, r0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02026554
+FUN_02026554: ; 0x02026554
+ push {r4-r7}
+ ldr r3, _020265B0 ; =0x00000211
+ add r7, r0, #0x0
+ mov r12, r1
+ mov r0, #0x0
+ add r1, r7, #0x0
+ sub r4, r3, #0x1
+ sub r5, r3, #0x2
+_02026564:
+ ldrb r6, [r1, r5]
+ cmp r6, #0x0
+ bne _020265A0
+ ldrb r6, [r1, r4]
+ cmp r6, #0x0
+ bne _020265A0
+ ldrb r6, [r1, r3]
+ cmp r6, #0x0
+ bne _020265A0
+ lsl r1, r0, #0x1
+ add r1, r0, r1
+ mov r5, #0xf
+ ldr r4, _020265B4 ; =0x0000020F
+ add r1, r7, r1
+ mov r3, r12
+ strb r3, [r1, r4]
+ lsl r5, r5, #0x8
+ mov r3, r12
+ and r3, r5
+ asr r6, r3, #0x8
+ add r3, r2, #0x0
+ and r3, r5
+ asr r3, r3, #0x4
+ add r5, r6, r3
+ add r3, r4, #0x1
+ strb r5, [r1, r3]
+ add r3, r4, #0x2
+ strb r2, [r1, r3]
+ pop {r4-r7}
+ bx lr
+_020265A0:
+ add r0, r0, #0x1
+ add r1, r1, #0x3
+ cmp r0, #0xff
+ blt _02026564
+ mov r0, #0x0
+ pop {r4-r7}
+ bx lr
+ nop
+_020265B0: .word 0x00000211
+_020265B4: .word 0x0000020F
+
+ thumb_func_start FUN_020265B8
+FUN_020265B8: ; 0x020265B8
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ cmp r4, #0xff
+ blt _020265C6
+ bl ErrorHandling
+_020265C6:
+ ldr r0, _020265DC ; =0x0000020F
+ mov r2, #0x3
+ add r1, r5, r0
+ lsl r0, r4, #0x1
+ add r0, r4, r0
+ add r0, r1, r0
+ mov r1, #0x0
+ blx MI_CpuFill8
+ pop {r3-r5, pc}
+ nop
+_020265DC: .word 0x0000020F
+
+ thumb_func_start FUN_020265E0
+FUN_020265E0: ; 0x020265E0
+ lsl r2, r1, #0x1
+ add r1, r1, r2
+ add r1, r0, r1
+ ldr r0, _020265FC ; =0x0000020F
+ ldrb r2, [r1, r0]
+ add r0, r0, #0x1
+ ldrb r0, [r1, r0]
+ lsl r1, r0, #0x8
+ mov r0, #0xf
+ lsl r0, r0, #0x8
+ and r0, r1
+ add r0, r2, r0
+ bx lr
+ nop
+_020265FC: .word 0x0000020F
+
+ thumb_func_start FUN_02026600
+FUN_02026600: ; 0x02026600
+ lsl r2, r1, #0x1
+ add r1, r1, r2
+ add r1, r0, r1
+ ldr r0, _0202661C ; =0x00000211
+ ldrb r2, [r1, r0]
+ sub r0, r0, #0x1
+ ldrb r0, [r1, r0]
+ lsl r1, r0, #0x4
+ mov r0, #0xf
+ lsl r0, r0, #0x8
+ and r0, r1
+ add r0, r2, r0
+ bx lr
+ nop
+_0202661C: .word 0x00000211
+
+ thumb_func_start FUN_02026620
+FUN_02026620: ; 0x02026620
+ mov r1, #0x9b
+ lsl r1, r1, #0x4
+ ldrb r0, [r0, r1]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1c
+ bne _02026630
+ mov r0, #0x1
+ bx lr
+_02026630:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02026634
+FUN_02026634: ; 0x02026634
+ mov r2, #0x9b
+ lsl r2, r2, #0x4
+ ldrb r3, [r0, r2]
+ mov r1, #0xf0
+ bic r3, r1
+ mov r1, #0x10
+ orr r1, r3
+ strb r1, [r0, r2]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02026648
+FUN_02026648: ; 0x02026648
+ mov r1, #0x9b
+ lsl r1, r1, #0x4
+ ldrb r0, [r0, r1]
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1c
+ bx lr
+
+ thumb_func_start FUN_02026654
+FUN_02026654: ; 0x02026654
+ mov r2, #0x9b
+ lsl r2, r2, #0x4
+ ldrb r3, [r0, r2]
+ mov r1, #0xf
+ bic r3, r1
+ strb r3, [r0, r2]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02026664
+FUN_02026664: ; 0x02026664
+ push {r3-r4}
+ cmp r1, #0x2c
+ blt _0202667E
+ cmp r1, #0x3b
+ bgt _0202667E
+ ldr r2, _02026684 ; =0x0000080C
+ mov r3, #0x1
+ sub r1, #0x2c
+ ldr r4, [r0, r2]
+ lsl r3, r1
+ add r1, r4, #0x0
+ orr r1, r3
+ str r1, [r0, r2]
+_0202667E:
+ pop {r3-r4}
+ bx lr
+ nop
+_02026684: .word 0x0000080C
+
+ thumb_func_start FUN_02026688
+FUN_02026688: ; 0x02026688
+ cmp r1, #0x2c
+ blt _02026690
+ cmp r1, #0x3b
+ ble _02026694
+_02026690:
+ mov r0, #0x1
+ bx lr
+_02026694:
+ ldr r2, _020266AC ; =0x0000080C
+ sub r1, #0x2c
+ ldr r3, [r0, r2]
+ mov r0, #0x1
+ add r2, r0, #0x0
+ lsl r2, r1
+ add r1, r3, #0x0
+ tst r1, r2
+ beq _020266A8
+ mov r0, #0x0
+_020266A8:
+ bx lr
+ nop
+_020266AC: .word 0x0000080C
+
+ thumb_func_start FUN_020266B0
+FUN_020266B0: ; 0x020266B0
+ ldr r1, _020266C4 ; =0x000009AF
+ ldrb r2, [r0, r1]
+ cmp r2, #0x63
+ blo _020266BE
+ mov r2, #0x0
+ strb r2, [r0, r1]
+ bx lr
+_020266BE:
+ add r2, r2, #0x1
+ strb r2, [r0, r1]
+ bx lr
+ .balign 4
+_020266C4: .word 0x000009AF
+
+ thumb_func_start FUN_020266C8
+FUN_020266C8: ; 0x020266C8
+ ldr r1, _020266D0 ; =0x000009AF
+ ldrb r0, [r0, r1]
+ bx lr
+ nop
+_020266D0: .word 0x000009AF
+
+ thumb_func_start FUN_020266D4
+FUN_020266D4: ; 0x020266D4
+ ldr r3, _020266DC ; =MI_CpuFill8
+ mov r1, #0x0
+ mov r2, #0x94
+ bx r3
+ .balign 4
+_020266DC: .word MI_CpuFill8
+
+ thumb_func_start FUN_020266E0
+FUN_020266E0: ; 0x020266E0
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x2d
+ blx MI_CpuFill8
+ add r0, r4, #0x0
+ add r0, #0x2d
+ mov r1, #0x0
+ mov r2, #0x20
+ blx MI_CpuFill8
+ add r0, r4, #0x0
+ mov r1, #0x0
+ add r0, #0x8c
+ strh r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x8e
+ strh r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x90
+ strb r1, [r0, #0x0]
+ add r4, #0x91
+ strb r1, [r4, #0x0]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02026714
+FUN_02026714: ; 0x02026714
+ mov r1, #0x0
+ add r0, #0x91
+ strb r1, [r0, #0x0]
+ bx lr
+
+ thumb_func_start FUN_0202671C
+FUN_0202671C: ; 0x0202671C
+ push {r3-r7, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r7, r2, #0x0
+ add r6, r3, #0x0
+ cmp r4, #0x20
+ blt _0202672E
+ bl ErrorHandling
+_0202672E:
+ cmp r6, #0x20
+ blt _02026736
+ bl ErrorHandling
+_02026736:
+ ldr r0, [sp, #0x18]
+ cmp r0, #0x20
+ blt _02026740
+ bl ErrorHandling
+_02026740:
+ cmp r5, #0x0
+ bne _02026748
+ bl ErrorHandling
+_02026748:
+ cmp r4, #0x0
+ beq _02026774
+ cmp r4, #0x10
+ bge _02026762
+ sub r1, r4, #0x1
+ lsl r0, r1, #0x1
+ add r0, r1, r0
+ strb r6, [r5, r0]
+ ldr r1, [sp, #0x18]
+ add r0, r5, r0
+ strb r1, [r0, #0x1]
+ strb r7, [r0, #0x2]
+ pop {r3-r7, pc}
+_02026762:
+ sub r4, #0x10
+ lsl r2, r4, #0x1
+ add r0, r5, r2
+ add r0, #0x2d
+ strb r6, [r0, #0x0]
+ add r0, r5, r2
+ ldr r1, [sp, #0x18]
+ add r0, #0x2e
+ strb r1, [r0, #0x0]
+_02026774:
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02026778
+FUN_02026778: ; 0x02026778
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ add r7, r2, #0x0
+ add r4, r3, #0x0
+ bl FUN_020267C4
+ add r2, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r3, r7, #0x0
+ str r4, [sp, #0x0]
+ bl FUN_0202671C
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02026798
+FUN_02026798: ; 0x02026798
+ add r0, #0x88
+ ldr r0, [r0, #0x0]
+ lsl r0, r0, #0xc
+ lsr r0, r0, #0xc
+ cmp r0, #0x32
+ blt _020267A8
+ mov r0, #0x5
+ bx lr
+_020267A8:
+ cmp r0, #0xa
+ blt _020267B0
+ mov r0, #0x4
+ bx lr
+_020267B0:
+ cmp r0, #0x3
+ blt _020267B8
+ mov r0, #0x3
+ bx lr
+_020267B8:
+ cmp r0, #0x1
+ blt _020267C0
+ mov r0, #0x2
+ bx lr
+_020267C0:
+ mov r0, #0x1
+ bx lr
+
+ thumb_func_start FUN_020267C4
+FUN_020267C4: ; 0x020267C4
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ add r4, r0, #0x0
+ cmp r5, #0x20
+ blt _020267D2
+ bl ErrorHandling
+_020267D2:
+ cmp r5, #0x0
+ bne _020267DE
+ add r0, r4, #0x0
+ bl FUN_02026798
+ pop {r3-r5, pc}
+_020267DE:
+ cmp r5, #0x10
+ bge _020267EE
+ sub r1, r5, #0x1
+ lsl r0, r1, #0x1
+ add r0, r1, r0
+ add r0, r4, r0
+ ldrb r0, [r0, #0x2]
+ pop {r3-r5, pc}
+_020267EE:
+ sub r5, #0x10
+ lsl r1, r5, #0x1
+ add r0, r4, r1
+ add r0, #0x2d
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _0202680A
+ add r0, r4, r1
+ add r0, #0x2e
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _0202680A
+ mov r0, #0x6
+ pop {r3-r5, pc}
+_0202680A:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02026810
+FUN_02026810: ; 0x02026810
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ add r4, r0, #0x0
+ cmp r5, #0x20
+ blt _0202681E
+ bl ErrorHandling
+_0202681E:
+ cmp r5, #0x0
+ bne _02026826
+ mov r0, #0xf
+ pop {r3-r5, pc}
+_02026826:
+ cmp r5, #0x10
+ bge _02026834
+ sub r1, r5, #0x1
+ lsl r0, r1, #0x1
+ add r0, r1, r0
+ ldrb r0, [r4, r0]
+ pop {r3-r5, pc}
+_02026834:
+ sub r5, #0x10
+ lsl r0, r5, #0x1
+ add r0, r4, r0
+ add r0, #0x2d
+ ldrb r0, [r0, #0x0]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02026840
+FUN_02026840: ; 0x02026840
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ add r4, r0, #0x0
+ cmp r5, #0x20
+ blt _0202684E
+ bl ErrorHandling
+_0202684E:
+ cmp r5, #0x0
+ bne _02026856
+ mov r0, #0xc
+ pop {r3-r5, pc}
+_02026856:
+ cmp r5, #0x10
+ bge _02026866
+ sub r1, r5, #0x1
+ lsl r0, r1, #0x1
+ add r0, r1, r0
+ add r0, r4, r0
+ ldrb r0, [r0, #0x1]
+ pop {r3-r5, pc}
+_02026866:
+ sub r5, #0x10
+ lsl r0, r5, #0x1
+ add r0, r4, r0
+ add r0, #0x2e
+ ldrb r0, [r0, #0x0]
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02026874
+FUN_02026874: ; 0x02026874
+ add r0, #0x88
+ ldr r0, [r0, #0x0]
+ lsl r0, r0, #0xc
+ lsr r0, r0, #0xc
+ cmp r0, #0x32
+ blo _02026884
+ mov r0, #0x0
+ bx lr
+_02026884:
+ cmp r0, #0xa
+ blo _0202688C
+ mov r0, #0x6
+ bx lr
+_0202688C:
+ cmp r0, #0x3
+ blo _02026894
+ mov r0, #0xb
+ bx lr
+_02026894:
+ cmp r0, #0x1
+ blo _0202689C
+ mov r0, #0xf
+ bx lr
+_0202689C:
+ mov r0, #0x10
+ bx lr
+
+ thumb_func_start FUN_020268A0
+FUN_020268A0: ; 0x020268A0
+ add r0, #0x88
+ ldr r0, [r0, #0x0]
+ lsl r0, r0, #0xc
+ lsr r0, r0, #0xc
+ cmp r0, #0x32
+ blo _020268B0
+ mov r0, #0xf
+ bx lr
+_020268B0:
+ cmp r0, #0xa
+ blo _020268B8
+ mov r0, #0xf
+ bx lr
+_020268B8:
+ cmp r0, #0x3
+ blo _020268C0
+ mov r0, #0xf
+ bx lr
+_020268C0:
+ cmp r0, #0x1
+ blo _020268C8
+ mov r0, #0xc
+ bx lr
+_020268C8:
+ mov r0, #0xa
+ bx lr
+
+ thumb_func_start FUN_020268CC
+FUN_020268CC: ; 0x020268CC
+ ldr r0, [r0, #0x0]
+ lsl r0, r0, #0xc
+ lsr r0, r0, #0xc
+ bx lr
+
+ thumb_func_start FUN_020268D4
+FUN_020268D4: ; 0x020268D4
+ push {r3, lr}
+ bl FUN_020269A0
+ cmp r0, #0x4
+ bne _020268E2
+ mov r0, #0x1
+ pop {r3, pc}
+_020268E2:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_020268E8
+FUN_020268E8: ; 0x020268E8
+ ldr r3, [r0, #0x0]
+ ldr r2, _020268F8 ; =0xFFF00000
+ and r3, r2
+ ldr r2, _020268FC ; =0x000FFFFF
+ and r1, r2
+ orr r1, r3
+ str r1, [r0, #0x0]
+ bx lr
+ .balign 4
+_020268F8: .word 0xFFF00000
+_020268FC: .word 0x000FFFFF
+
+ thumb_func_start FUN_02026900
+FUN_02026900: ; 0x02026900
+ ldr r0, [r0, #0x4]
+ lsl r0, r0, #0xc
+ lsr r0, r0, #0xc
+ bx lr
+
+ thumb_func_start FUN_02026908
+FUN_02026908: ; 0x02026908
+ push {r3-r4}
+ ldr r2, [r0, #0x4]
+ lsl r1, r2, #0xc
+ lsr r4, r1, #0xc
+ ldr r1, _0202692C ; =0x000F423F
+ cmp r4, r1
+ bhs _02026926
+ ldr r1, _02026930 ; =0xFFF00000
+ add r3, r2, #0x0
+ and r3, r1
+ ldr r1, _02026934 ; =0x000FFFFF
+ add r2, r4, #0x1
+ and r1, r2
+ orr r1, r3
+ str r1, [r0, #0x4]
+_02026926:
+ pop {r3-r4}
+ bx lr
+ nop
+_0202692C: .word 0x000F423F
+_02026930: .word 0xFFF00000
+_02026934: .word 0x000FFFFF
+
+ thumb_func_start FUN_02026938
+FUN_02026938: ; 0x02026938
+ ldr r0, [r0, #0x8]
+ lsl r0, r0, #0xc
+ lsr r0, r0, #0xc
+ bx lr
+
+ thumb_func_start FUN_02026940
+FUN_02026940: ; 0x02026940
+ push {r3-r4}
+ ldr r2, [r0, #0x8]
+ lsl r1, r2, #0xc
+ lsr r4, r1, #0xc
+ ldr r1, _02026964 ; =0x000F423F
+ cmp r4, r1
+ bhs _0202695E
+ ldr r1, _02026968 ; =0xFFF00000
+ add r3, r2, #0x0
+ and r3, r1
+ ldr r1, _0202696C ; =0x000FFFFF
+ add r2, r4, #0x1
+ and r1, r2
+ orr r1, r3
+ str r1, [r0, #0x8]
+_0202695E:
+ pop {r3-r4}
+ bx lr
+ nop
+_02026964: .word 0x000F423F
+_02026968: .word 0xFFF00000
+_0202696C: .word 0x000FFFFF
+
+ thumb_func_start FUN_02026970
+FUN_02026970: ; 0x02026970
+ push {r3-r4}
+ ldr r2, [r0, #0xc]
+ lsl r1, r2, #0xc
+ lsr r4, r1, #0xc
+ ldr r1, _02026994 ; =0x000F423F
+ cmp r4, r1
+ bhs _0202698E
+ ldr r1, _02026998 ; =0xFFF00000
+ add r3, r2, #0x0
+ and r3, r1
+ ldr r1, _0202699C ; =0x000FFFFF
+ add r2, r4, #0x1
+ and r1, r2
+ orr r1, r3
+ str r1, [r0, #0xc]
+_0202698E:
+ pop {r3-r4}
+ bx lr
+ nop
+_02026994: .word 0x000F423F
+_02026998: .word 0xFFF00000
+_0202699C: .word 0x000FFFFF
+
+ thumb_func_start FUN_020269A0
+FUN_020269A0: ; 0x020269A0
+ ldr r0, [r0, #0x38]
+ lsl r0, r0, #0xc
+ lsr r0, r0, #0xc
+ cmp r0, #0x32
+ blt _020269AE
+ mov r0, #0x4
+ bx lr
+_020269AE:
+ cmp r0, #0xa
+ blt _020269B6
+ mov r0, #0x3
+ bx lr
+_020269B6:
+ cmp r0, #0x3
+ blt _020269BE
+ mov r0, #0x2
+ bx lr
+_020269BE:
+ cmp r0, #0x1
+ blt _020269C6
+ mov r0, #0x1
+ bx lr
+_020269C6:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020269CC
+FUN_020269CC: ; 0x020269CC
+ ldr r0, [r0, #0x38]
+ lsl r0, r0, #0xc
+ lsr r0, r0, #0xc
+ bx lr
+
+ thumb_func_start FUN_020269D4
+FUN_020269D4: ; 0x020269D4
+ push {r3-r4}
+ ldr r2, [r0, #0x38]
+ lsl r1, r2, #0xc
+ lsr r4, r1, #0xc
+ ldr r1, _020269F8 ; =0x000F423F
+ cmp r4, r1
+ bhs _020269F2
+ ldr r1, _020269FC ; =0xFFF00000
+ add r3, r2, #0x0
+ and r3, r1
+ ldr r1, _02026A00 ; =0x000FFFFF
+ add r2, r4, #0x1
+ and r1, r2
+ orr r1, r3
+ str r1, [r0, #0x38]
+_020269F2:
+ pop {r3-r4}
+ bx lr
+ nop
+_020269F8: .word 0x000F423F
+_020269FC: .word 0xFFF00000
+_02026A00: .word 0x000FFFFF
+
+ thumb_func_start FUN_02026A04
+FUN_02026A04: ; 0x02026A04
+ ldr r0, [r0, #0x10]
+ lsl r0, r0, #0xc
+ lsr r0, r0, #0xc
+ bx lr
+
+ thumb_func_start FUN_02026A0C
+FUN_02026A0C: ; 0x02026A0C
+ push {r4-r5}
+ cmp r1, #0x0
+ ble _02026A2C
+ ldr r4, [r0, #0x10]
+ lsl r2, r4, #0xc
+ lsr r5, r2, #0xc
+ ldr r2, _02026A44 ; =0x000F423F
+ sub r3, r2, r1
+ cmp r5, r3
+ bls _02026A2C
+ ldr r1, _02026A48 ; =0xFFF00000
+ and r1, r4
+ orr r1, r2
+ str r1, [r0, #0x10]
+ pop {r4-r5}
+ bx lr
+_02026A2C:
+ ldr r3, [r0, #0x10]
+ ldr r2, _02026A48 ; =0xFFF00000
+ and r2, r3
+ lsl r3, r3, #0xc
+ lsr r3, r3, #0xc
+ add r3, r3, r1
+ ldr r1, _02026A4C ; =0x000FFFFF
+ and r1, r3
+ orr r1, r2
+ str r1, [r0, #0x10]
+ pop {r4-r5}
+ bx lr
+ .balign 4
+_02026A44: .word 0x000F423F
+_02026A48: .word 0xFFF00000
+_02026A4C: .word 0x000FFFFF
+
+ thumb_func_start FUN_02026A50
+FUN_02026A50: ; 0x02026A50
+ ldr r0, [r0, #0x14]
+ lsl r0, r0, #0xc
+ lsr r0, r0, #0xc
+ bx lr
+
+ thumb_func_start FUN_02026A58
+FUN_02026A58: ; 0x02026A58
+ push {r4-r5}
+ cmp r1, #0x0
+ ble _02026A78
+ ldr r4, [r0, #0x14]
+ lsl r2, r4, #0xc
+ lsr r5, r2, #0xc
+ ldr r2, _02026A90 ; =0x000F423F
+ sub r3, r2, r1
+ cmp r5, r3
+ bls _02026A78
+ ldr r1, _02026A94 ; =0xFFF00000
+ and r1, r4
+ orr r1, r2
+ str r1, [r0, #0x14]
+ pop {r4-r5}
+ bx lr
+_02026A78:
+ ldr r3, [r0, #0x14]
+ ldr r2, _02026A94 ; =0xFFF00000
+ and r2, r3
+ lsl r3, r3, #0xc
+ lsr r3, r3, #0xc
+ add r3, r3, r1
+ ldr r1, _02026A98 ; =0x000FFFFF
+ and r1, r3
+ orr r1, r2
+ str r1, [r0, #0x14]
+ pop {r4-r5}
+ bx lr
+ .balign 4
+_02026A90: .word 0x000F423F
+_02026A94: .word 0xFFF00000
+_02026A98: .word 0x000FFFFF
+
+ thumb_func_start FUN_02026A9C
+FUN_02026A9C: ; 0x02026A9C
+ push {r4-r5}
+ cmp r1, #0x0
+ ble _02026ABC
+ ldr r4, [r0, #0x18]
+ lsl r2, r4, #0xc
+ lsr r5, r2, #0xc
+ ldr r2, _02026AD4 ; =0x000F423F
+ sub r3, r2, r1
+ cmp r5, r3
+ bls _02026ABC
+ ldr r1, _02026AD8 ; =0xFFF00000
+ and r1, r4
+ orr r1, r2
+ str r1, [r0, #0x18]
+ pop {r4-r5}
+ bx lr
+_02026ABC:
+ ldr r3, [r0, #0x18]
+ ldr r2, _02026AD8 ; =0xFFF00000
+ and r2, r3
+ lsl r3, r3, #0xc
+ lsr r3, r3, #0xc
+ add r3, r3, r1
+ ldr r1, _02026ADC ; =0x000FFFFF
+ and r1, r3
+ orr r1, r2
+ str r1, [r0, #0x18]
+ pop {r4-r5}
+ bx lr
+ .balign 4
+_02026AD4: .word 0x000F423F
+_02026AD8: .word 0xFFF00000
+_02026ADC: .word 0x000FFFFF
+
+ thumb_func_start FUN_02026AE0
+FUN_02026AE0: ; 0x02026AE0
+ ldr r0, [r0, #0x1c]
+ lsl r0, r0, #0xc
+ lsr r0, r0, #0xc
+ bx lr
+
+ thumb_func_start FUN_02026AE8
+FUN_02026AE8: ; 0x02026AE8
+ push {r3-r4}
+ ldr r2, [r0, #0x1c]
+ lsl r1, r2, #0xc
+ lsr r4, r1, #0xc
+ ldr r1, _02026B0C ; =0x000F423F
+ cmp r4, r1
+ bhs _02026B06
+ ldr r1, _02026B10 ; =0xFFF00000
+ add r3, r2, #0x0
+ and r3, r1
+ ldr r1, _02026B14 ; =0x000FFFFF
+ add r2, r4, #0x1
+ and r1, r2
+ orr r1, r3
+ str r1, [r0, #0x1c]
+_02026B06:
+ pop {r3-r4}
+ bx lr
+ nop
+_02026B0C: .word 0x000F423F
+_02026B10: .word 0xFFF00000
+_02026B14: .word 0x000FFFFF
+
+ thumb_func_start FUN_02026B18
+FUN_02026B18: ; 0x02026B18
+ ldr r0, [r0, #0x20]
+ lsl r0, r0, #0xc
+ lsr r0, r0, #0xc
+ bx lr
+
+ thumb_func_start FUN_02026B20
+FUN_02026B20: ; 0x02026B20
+ push {r3-r4}
+ ldr r2, [r0, #0x20]
+ lsl r1, r2, #0xc
+ lsr r4, r1, #0xc
+ ldr r1, _02026B44 ; =0x000F423F
+ cmp r4, r1
+ bhs _02026B3E
+ ldr r1, _02026B48 ; =0xFFF00000
+ add r3, r2, #0x0
+ and r3, r1
+ ldr r1, _02026B4C ; =0x000FFFFF
+ add r2, r4, #0x1
+ and r1, r2
+ orr r1, r3
+ str r1, [r0, #0x20]
+_02026B3E:
+ pop {r3-r4}
+ bx lr
+ nop
+_02026B44: .word 0x000F423F
+_02026B48: .word 0xFFF00000
+_02026B4C: .word 0x000FFFFF
+
+ thumb_func_start FUN_02026B50
+FUN_02026B50: ; 0x02026B50
+ ldr r0, [r0, #0x24]
+ lsl r0, r0, #0xc
+ lsr r0, r0, #0xc
+ bx lr
+
+ thumb_func_start FUN_02026B58
+FUN_02026B58: ; 0x02026B58
+ push {r3-r4}
+ ldr r2, [r0, #0x24]
+ lsl r1, r2, #0xc
+ lsr r4, r1, #0xc
+ ldr r1, _02026B7C ; =0x000F423F
+ cmp r4, r1
+ bhs _02026B76
+ ldr r1, _02026B80 ; =0xFFF00000
+ add r3, r2, #0x0
+ and r3, r1
+ ldr r1, _02026B84 ; =0x000FFFFF
+ add r2, r4, #0x1
+ and r1, r2
+ orr r1, r3
+ str r1, [r0, #0x24]
+_02026B76:
+ pop {r3-r4}
+ bx lr
+ nop
+_02026B7C: .word 0x000F423F
+_02026B80: .word 0xFFF00000
+_02026B84: .word 0x000FFFFF
+
+ thumb_func_start FUN_02026B88
+FUN_02026B88: ; 0x02026B88
+ ldr r0, [r0, #0x28]
+ lsl r0, r0, #0xc
+ lsr r0, r0, #0xc
+ bx lr
+
+ thumb_func_start FUN_02026B90
+FUN_02026B90: ; 0x02026B90
+ push {r3-r4}
+ ldr r2, [r0, #0x28]
+ lsl r1, r2, #0xc
+ lsr r4, r1, #0xc
+ ldr r1, _02026BB4 ; =0x000F423F
+ cmp r4, r1
+ bhs _02026BAE
+ ldr r1, _02026BB8 ; =0xFFF00000
+ add r3, r2, #0x0
+ and r3, r1
+ ldr r1, _02026BBC ; =0x000FFFFF
+ add r2, r4, #0x1
+ and r1, r2
+ orr r1, r3
+ str r1, [r0, #0x28]
+_02026BAE:
+ pop {r3-r4}
+ bx lr
+ nop
+_02026BB4: .word 0x000F423F
+_02026BB8: .word 0xFFF00000
+_02026BBC: .word 0x000FFFFF
+
+ thumb_func_start FUN_02026BC0
+FUN_02026BC0: ; 0x02026BC0
+ ldr r0, [r0, #0x2c]
+ lsl r0, r0, #0xc
+ lsr r0, r0, #0xc
+ bx lr
+
+ thumb_func_start FUN_02026BC8
+FUN_02026BC8: ; 0x02026BC8
+ push {r3-r4}
+ ldr r2, [r0, #0x2c]
+ lsl r1, r2, #0xc
+ lsr r4, r1, #0xc
+ ldr r1, _02026BEC ; =0x000F423F
+ cmp r4, r1
+ bhs _02026BE6
+ ldr r1, _02026BF0 ; =0xFFF00000
+ add r3, r2, #0x0
+ and r3, r1
+ ldr r1, _02026BF4 ; =0x000FFFFF
+ add r2, r4, #0x1
+ and r1, r2
+ orr r1, r3
+ str r1, [r0, #0x2c]
+_02026BE6:
+ pop {r3-r4}
+ bx lr
+ nop
+_02026BEC: .word 0x000F423F
+_02026BF0: .word 0xFFF00000
+_02026BF4: .word 0x000FFFFF
+
+ thumb_func_start FUN_02026BF8
+FUN_02026BF8: ; 0x02026BF8
+ ldr r0, [r0, #0x30]
+ lsl r0, r0, #0xc
+ lsr r0, r0, #0xc
+ bx lr
+
+ thumb_func_start FUN_02026C00
+FUN_02026C00: ; 0x02026C00
+ push {r3-r4}
+ ldr r2, [r0, #0x30]
+ lsl r1, r2, #0xc
+ lsr r4, r1, #0xc
+ ldr r1, _02026C24 ; =0x000F423F
+ cmp r4, r1
+ bhs _02026C1E
+ ldr r1, _02026C28 ; =0xFFF00000
+ add r3, r2, #0x0
+ and r3, r1
+ ldr r1, _02026C2C ; =0x000FFFFF
+ add r2, r4, #0x1
+ and r1, r2
+ orr r1, r3
+ str r1, [r0, #0x30]
+_02026C1E:
+ pop {r3-r4}
+ bx lr
+ nop
+_02026C24: .word 0x000F423F
+_02026C28: .word 0xFFF00000
+_02026C2C: .word 0x000FFFFF
+
+ thumb_func_start FUN_02026C30
+FUN_02026C30: ; 0x02026C30
+ ldr r0, [r0, #0x34]
+ lsl r0, r0, #0xc
+ lsr r0, r0, #0xc
+ bx lr
+
+ thumb_func_start FUN_02026C38
+FUN_02026C38: ; 0x02026C38
+ push {r3-r4}
+ ldr r2, [r0, #0x34]
+ lsl r1, r2, #0xc
+ lsr r4, r1, #0xc
+ ldr r1, _02026C5C ; =0x000F423F
+ cmp r4, r1
+ bhs _02026C56
+ ldr r1, _02026C60 ; =0xFFF00000
+ add r3, r2, #0x0
+ and r3, r1
+ ldr r1, _02026C64 ; =0x000FFFFF
+ add r2, r4, #0x1
+ and r1, r2
+ orr r1, r3
+ str r1, [r0, #0x34]
+_02026C56:
+ pop {r3-r4}
+ bx lr
+ nop
+_02026C5C: .word 0x000F423F
+_02026C60: .word 0xFFF00000
+_02026C64: .word 0x000FFFFF
+
+ thumb_func_start FUN_02026C68
+FUN_02026C68: ; 0x02026C68
+ push {r3-r4}
+ add r4, r0, #0x0
+ add r4, #0x8c
+ strh r1, [r4, #0x0]
+ add r1, r0, #0x0
+ add r1, #0x8e
+ strh r2, [r1, #0x0]
+ add r1, r0, #0x0
+ add r1, #0x90
+ strb r3, [r1, #0x0]
+ mov r1, #0x1
+ add r0, #0x91
+ strb r1, [r0, #0x0]
+ pop {r3-r4}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02026C88
+FUN_02026C88: ; 0x02026C88
+ add r0, #0x8c
+ ldrh r0, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02026C90
+FUN_02026C90: ; 0x02026C90
+ add r0, #0x8e
+ ldrh r0, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02026C98
+FUN_02026C98: ; 0x02026C98
+ add r0, #0x90
+ ldrb r0, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02026CA0
+FUN_02026CA0: ; 0x02026CA0
+ add r0, #0x91
+ ldrb r0, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02026CA8
+FUN_02026CA8: ; 0x02026CA8
+ ldr r3, _02026CB0 ; =FUN_02022610
+ mov r1, #0xc
+ bx r3
+ nop
+_02026CB0: .word FUN_02022610
+
+ thumb_func_start FUN_02026CB4
+FUN_02026CB4: ; 0x02026CB4
+ push {r3, lr}
+ mov r1, #0xc
+ bl FUN_02022610
+ add r0, #0x50
+ pop {r3, pc}
+
+ thumb_func_start FUN_02026CC0
+FUN_02026CC0: ; 0x02026CC0
+ add r0, #0x50
+ bx lr
+
+ thumb_func_start FUN_02026CC4
+FUN_02026CC4: ; 0x02026CC4
+ ldr r3, _02026CCC ; =FUN_02022610
+ mov r1, #0xc
+ bx r3
+ nop
+_02026CCC: .word FUN_02022610
+
+ thumb_func_start FUN_02026CD0
+FUN_02026CD0: ; 0x02026CD0
+ push {r3-r7, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x5
+ mov r2, #0x0
+ add r7, r3, #0x0
+ bl FUN_020671BC
+ add r2, r5, #0x0
+ strh r0, [r5, #0x8]
+ add r0, r4, #0x0
+ mov r1, #0x74
+ add r2, #0xa
+ bl FUN_020671BC
+ mov r1, #0x0
+ add r0, r4, #0x0
+ add r2, r1, #0x0
+ bl FUN_020671BC
+ str r0, [r5, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0x7
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [r5, #0x4]
+ add r0, r4, #0x0
+ mov r1, #0x70
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r1, r5, #0x0
+ add r1, #0x33
+ strb r0, [r1, #0x0]
+ add r0, r5, #0x0
+ add r0, #0x31
+ strb r6, [r0, #0x0]
+ add r0, r5, #0x0
+ add r0, #0x32
+ strb r7, [r0, #0x0]
+ add r1, sp, #0x8
+ mov r0, #0x10
+ ldrsb r0, [r1, r0]
+ add r5, #0x30
+ strb r0, [r5, #0x0]
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02026D34
+FUN_02026D34: ; 0x02026D34
+ push {r3-r6, lr}
+ sub sp, #0xc
+ add r4, r2, #0x0
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ add r0, r4, #0x0
+ add r1, sp, #0x4
+ add r2, sp, #0x8
+ bl FUN_021DB858
+ add r0, r4, #0x0
+ bl FUN_021DB7E8
+ add r4, r0, #0x0
+ mov r0, #0x1
+ ldr r1, [sp, #0x4]
+ lsl r0, r0, #0x8
+ cmp r1, r0
+ blt _02026D5E
+ bl ErrorHandling
+_02026D5E:
+ mov r0, #0x1
+ ldr r1, [sp, #0x8]
+ lsl r0, r0, #0x8
+ cmp r1, r0
+ blt _02026D6C
+ bl ErrorHandling
+_02026D6C:
+ mov r0, #0x7f
+ mvn r0, r0
+ cmp r4, r0
+ bgt _02026D78
+ bl ErrorHandling
+_02026D78:
+ lsl r0, r4, #0x18
+ asr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ ldr r2, [sp, #0x4]
+ ldr r3, [sp, #0x8]
+ lsl r2, r2, #0x18
+ lsl r3, r3, #0x18
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ lsr r2, r2, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_02026CD0
+ add sp, #0xc
+ pop {r3-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02026D98
+FUN_02026D98: ; 0x02026D98
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, r1, #0x0
+ add r1, r5, #0x0
+ add r4, r2, #0x0
+ add r1, #0x20
+ mov r2, #0x8
+ bl FUN_02021EF0
+ add r5, #0x34
+ strb r4, [r5, #0x0]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02026DB0
+FUN_02026DB0: ; 0x02026DB0
+ strb r1, [r0, #0x0]
+ ldr r1, _02026DC0 ; =0xFFFFFFF0
+ strb r2, [r0, #0x1]
+ strb r3, [r0, #0x2]
+ add r1, sp
+ ldrb r1, [r1, #0x10]
+ strb r1, [r0, #0x3]
+ bx lr
+ .balign 4
+_02026DC0: .word 0xFFFFFFF0
+
+ thumb_func_start FUN_02026DC4
+FUN_02026DC4: ; 0x02026DC4
+ push {r4-r6, lr}
+ add r4, r2, #0x0
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ cmp r4, #0x3d
+ blo _02026DD4
+ bl ErrorHandling
+_02026DD4:
+ lsr r2, r4, #0x1f
+ lsl r1, r4, #0x1d
+ sub r1, r1, r2
+ mov r0, #0x1d
+ ror r1, r0
+ add r0, r2, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ lsl r0, r0, #0x1a
+ lsr r1, r0, #0x18
+ lsr r0, r4, #0x3
+ lsl r0, r0, #0x18
+ mov r2, #0xf
+ lsr r0, r0, #0x16
+ lsl r2, r1
+ ldr r3, [r5, r0]
+ mvn r2, r2
+ and r2, r3
+ str r2, [r5, r0]
+ add r2, r6, #0x0
+ ldr r3, [r5, r0]
+ lsl r2, r1
+ add r1, r3, #0x0
+ orr r1, r2
+ str r1, [r5, r0]
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02026E08
+FUN_02026E08: ; 0x02026E08
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ cmp r4, #0x3d
+ blo _02026E16
+ bl ErrorHandling
+_02026E16:
+ lsr r3, r4, #0x1f
+ lsl r2, r4, #0x1d
+ lsr r0, r4, #0x3
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x16
+ sub r2, r2, r3
+ mov r1, #0x1d
+ ror r2, r1
+ add r1, r3, r2
+ lsl r1, r1, #0x18
+ ldr r0, [r5, r0]
+ lsr r1, r1, #0x18
+ lsl r1, r1, #0x1a
+ add r2, r0, #0x0
+ lsr r1, r1, #0x18
+ lsr r2, r1
+ mov r0, #0xf
+ and r0, r2
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x9
+ bls _02026E44
+ mov r0, #0x9
+_02026E44:
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02026E48
+FUN_02026E48: ; 0x02026E48
+ push {r4-r6, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ cmp r4, #0x2
+ blo _02026E58
+ bl ErrorHandling
+_02026E58:
+ lsr r2, r6, #0x1f
+ lsl r1, r6, #0x1b
+ sub r1, r1, r2
+ mov r0, #0x1b
+ ror r1, r0
+ add r0, r2, r1
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ lsr r0, r6, #0x5
+ lsl r0, r0, #0x18
+ mov r2, #0x1
+ lsr r0, r0, #0x16
+ lsl r2, r1
+ ldr r3, [r5, r0]
+ mvn r2, r2
+ and r2, r3
+ str r2, [r5, r0]
+ add r2, r4, #0x0
+ ldr r3, [r5, r0]
+ lsl r2, r1
+ add r1, r3, #0x0
+ orr r1, r2
+ str r1, [r5, r0]
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02026E88
+FUN_02026E88: ; 0x02026E88
+ lsr r2, r1, #0x5
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x16
+ ldr r3, [r0, r2]
+ lsr r2, r1, #0x1f
+ lsl r1, r1, #0x1b
+ sub r1, r1, r2
+ mov r0, #0x1b
+ ror r1, r0
+ add r0, r2, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ add r1, r3, #0x0
+ lsr r1, r0
+ mov r0, #0x1
+ and r0, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02026EB0
+FUN_02026EB0: ; 0x02026EB0
+ push {r4-r6, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ cmp r4, #0x12
+ bls _02026EC0
+ bl ErrorHandling
+_02026EC0:
+ lsr r2, r6, #0x1f
+ lsl r1, r6, #0x1e
+ sub r1, r1, r2
+ mov r0, #0x1e
+ ror r1, r0
+ add r0, r2, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ lsl r0, r0, #0x1b
+ lsr r1, r0, #0x18
+ lsr r0, r6, #0x2
+ lsl r0, r0, #0x18
+ mov r2, #0xff
+ lsr r0, r0, #0x16
+ lsl r2, r1
+ ldr r3, [r5, r0]
+ mvn r2, r2
+ and r2, r3
+ str r2, [r5, r0]
+ add r2, r4, #0x0
+ ldr r3, [r5, r0]
+ lsl r2, r1
+ add r1, r3, #0x0
+ orr r1, r2
+ str r1, [r5, r0]
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02026EF4
+FUN_02026EF4: ; 0x02026EF4
+ lsr r2, r1, #0x2
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x16
+ ldr r0, [r0, r2]
+ lsr r3, r1, #0x1f
+ lsl r2, r1, #0x1e
+ sub r2, r2, r3
+ mov r1, #0x1e
+ ror r2, r1
+ add r1, r3, r2
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ lsl r1, r1, #0x1b
+ lsr r1, r1, #0x18
+ lsr r0, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+
+ thumb_func_start FUN_02026F18
+FUN_02026F18: ; 0x02026F18
+ push {r4-r6, lr}
+ mov r5, #0x0
+ add r6, r0, #0x0
+ add r4, r5, #0x0
+_02026F20:
+ lsl r1, r4, #0x18
+ add r0, r6, #0x0
+ lsr r1, r1, #0x18
+ bl FUN_02026EF4
+ cmp r0, #0x12
+ beq _02026F30
+ add r5, r5, #0x1
+_02026F30:
+ add r4, r4, #0x1
+ cmp r4, #0x12
+ blt _02026F20
+ lsl r0, r5, #0x18
+ lsr r0, r0, #0x18
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02026F3C
+FUN_02026F3C: ; 0x02026F3C
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ mov r1, #0x2
+ add r4, r2, #0x0
+ bl FUN_02068E14
+ mov r1, #0x80
+ strb r1, [r5, #0x0]
+ mov r1, #0x28
+ sub r1, r1, r0
+ mov r0, #0x8d
+ sub r0, r0, r1
+ strb r0, [r4, #0x0]
+ ldrb r0, [r4, #0x0]
+ add r0, #0x28
+ strb r0, [r4, #0x0]
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02026F60
+FUN_02026F60: ; 0x02026F60
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ ldr r6, _02026FC8 ; =0x00001234
+ mov r4, #0x0
+ add r5, r7, #0x0
+_02026F6A:
+ add r0, r5, #0x0
+ mov r1, #0x0
+ mov r2, #0x74
+ blx FUN_020DF4A4
+ str r6, [r5, #0x0]
+ add r4, r4, #0x1
+ add r5, #0x74
+ cmp r4, #0xb
+ blt _02026F6A
+ ldr r0, _02026FCC ; =0x000004FC
+ mov r6, #0x0
+ add r4, r7, r0
+ add r5, r7, #0x0
+_02026F86:
+ add r0, r4, #0x0
+ mov r1, #0x0
+ mov r2, #0x98
+ blx FUN_020DF4A4
+ ldr r1, _02026FC8 ; =0x00001234
+ ldr r0, _02026FCC ; =0x000004FC
+ add r6, r6, #0x1
+ str r1, [r5, r0]
+ add r4, #0x98
+ add r5, #0x98
+ cmp r6, #0x5
+ blt _02026F86
+ ldr r0, _02026FD0 ; =0x000007F4
+ mov r1, #0x0
+ add r0, r7, r0
+ mov r2, #0x40
+ blx FUN_020DF4A4
+ ldr r5, _02026FD4 ; =0x0000081C
+ mov r4, #0x0
+ mov r6, #0x12
+_02026FB2:
+ lsl r2, r4, #0x18
+ add r0, r7, r5
+ add r1, r6, #0x0
+ lsr r2, r2, #0x18
+ bl FUN_02026EB0
+ add r4, r4, #0x1
+ cmp r4, #0x12
+ blt _02026FB2
+ pop {r3-r7, pc}
+ nop
+_02026FC8: .word 0x00001234
+_02026FCC: .word 0x000004FC
+_02026FD0: .word 0x000007F4
+_02026FD4: .word 0x0000081C
+
+ thumb_func_start FUN_02026FD8
+FUN_02026FD8: ; 0x02026FD8
+ ldr r0, _02026FDC ; =0x00000834
+ bx lr
+ .balign 4
+_02026FDC: .word 0x00000834
+
+ thumb_func_start FUN_02026FE0
+FUN_02026FE0: ; 0x02026FE0
+ mov r0, #0x74
+ bx lr
+
+ thumb_func_start FUN_02026FE4
+FUN_02026FE4: ; 0x02026FE4
+ mov r0, #0x98
+ bx lr
+
+ thumb_func_start FUN_02026FE8
+FUN_02026FE8: ; 0x02026FE8
+ push {r4, lr}
+ mov r1, #0x98
+ bl FUN_02016998
+ mov r1, #0x0
+ mov r2, #0x98
+ add r4, r0, #0x0
+ blx FUN_020DF4A4
+ ldr r0, _02027004 ; =0x00001234
+ str r0, [r4, #0x0]
+ add r0, r4, #0x0
+ pop {r4, pc}
+ nop
+_02027004: .word 0x00001234
+
+ thumb_func_start FUN_02027008
+FUN_02027008: ; 0x02027008
+ push {r4-r6, lr}
+ add r6, r1, #0x0
+ add r5, r0, #0x0
+ cmp r6, #0xb
+ blt _02027016
+ bl ErrorHandling
+_02027016:
+ mov r0, #0x74
+ add r4, r6, #0x0
+ mul r4, r0
+ ldr r1, [r5, r4]
+ ldr r0, _0202703C ; =0x00001234
+ cmp r1, r0
+ beq _0202702A
+ ldr r0, _02027040 ; =0x00002345
+ cmp r1, r0
+ bne _0202702E
+_0202702A:
+ mov r0, #0x1
+ b _02027030
+_0202702E:
+ mov r0, #0x0
+_02027030:
+ cmp r0, #0x0
+ bne _02027038
+ bl ErrorHandling
+_02027038:
+ add r0, r5, r4
+ pop {r4-r6, pc}
+ .balign 4
+_0202703C: .word 0x00001234
+_02027040: .word 0x00002345
+
+ thumb_func_start FUN_02027044
+FUN_02027044: ; 0x02027044
+ push {r4-r6, lr}
+ add r6, r1, #0x0
+ add r5, r0, #0x0
+ cmp r6, #0x5
+ blt _02027052
+ bl ErrorHandling
+_02027052:
+ mov r0, #0x98
+ add r4, r6, #0x0
+ mul r4, r0
+ ldr r0, _02027080 ; =0x000004FC
+ add r1, r5, r4
+ ldr r1, [r1, r0]
+ ldr r0, _02027084 ; =0x00001234
+ cmp r1, r0
+ beq _0202706A
+ ldr r0, _02027088 ; =0x00002345
+ cmp r1, r0
+ bne _0202706E
+_0202706A:
+ mov r0, #0x1
+ b _02027070
+_0202706E:
+ mov r0, #0x0
+_02027070:
+ cmp r0, #0x0
+ bne _02027078
+ bl ErrorHandling
+_02027078:
+ ldr r0, _02027080 ; =0x000004FC
+ add r0, r5, r0
+ add r0, r0, r4
+ pop {r4-r6, pc}
+ .balign 4
+_02027080: .word 0x000004FC
+_02027084: .word 0x00001234
+_02027088: .word 0x00002345
+
+ thumb_func_start FUN_0202708C
+FUN_0202708C: ; 0x0202708C
+ ldr r1, _02027094 ; =0x000007F4
+ add r0, r0, r1
+ bx lr
+ nop
+_02027094: .word 0x000007F4
+
+ thumb_func_start FUN_02027098
+FUN_02027098: ; 0x02027098
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ cmp r4, #0xb
+ blt _020270A6
+ bl ErrorHandling
+_020270A6:
+ mov r0, #0x74
+ mul r0, r4
+ add r0, r5, r0
+ bl FUN_0202729C
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020270B4
+FUN_020270B4: ; 0x020270B4
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ cmp r4, #0x5
+ blt _020270C2
+ bl ErrorHandling
+_020270C2:
+ ldr r0, _020270D4 ; =0x000004FC
+ add r1, r5, r0
+ mov r0, #0x98
+ mul r0, r4
+ add r0, r1, r0
+ bl FUN_020276D8
+ pop {r3-r5, pc}
+ nop
+_020270D4: .word 0x000004FC
+
+ thumb_func_start FUN_020270D8
+FUN_020270D8: ; 0x020270D8
+ push {r4-r6, lr}
+ add r6, r1, #0x0
+ add r5, r2, #0x0
+ mov r4, #0x1
+ bl FUN_02027114
+ cmp r6, #0x3d
+ bhs _020270F2
+ add r0, r0, r5
+ cmp r0, #0x9
+ bls _020270FA
+ mov r4, #0x0
+ b _020270FA
+_020270F2:
+ add r0, r0, r5
+ cmp r0, #0x1
+ bls _020270FA
+ mov r4, #0x0
+_020270FA:
+ add r0, r4, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02027100
+FUN_02027100: ; 0x02027100
+ push {r3, lr}
+ bl FUN_0202714C
+ cmp r0, #0x12
+ beq _0202710E
+ mov r0, #0x1
+ pop {r3, pc}
+_0202710E:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02027114
+FUN_02027114: ; 0x02027114
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ add r4, r0, #0x0
+ cmp r5, #0x64
+ blo _02027122
+ bl ErrorHandling
+_02027122:
+ cmp r5, #0x3d
+ bhs _02027132
+ lsl r1, r5, #0x18
+ add r0, r4, #0x0
+ lsr r1, r1, #0x18
+ bl FUN_02026E08
+ pop {r3-r5, pc}
+_02027132:
+ bhs _02027138
+ bl ErrorHandling
+_02027138:
+ sub r5, #0x3d
+ lsl r0, r5, #0x18
+ lsr r1, r0, #0x18
+ add r4, #0x20
+ lsl r1, r1, #0x18
+ add r0, r4, #0x0
+ lsr r1, r1, #0x18
+ bl FUN_02026E88
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0202714C
+FUN_0202714C: ; 0x0202714C
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ cmp r4, #0x12
+ blo _0202715A
+ bl ErrorHandling
+_0202715A:
+ add r5, #0x28
+ lsl r1, r4, #0x18
+ add r0, r5, #0x0
+ lsr r1, r1, #0x18
+ bl FUN_02026EF4
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02027168
+FUN_02027168: ; 0x02027168
+ push {r4-r6, lr}
+ mov r5, #0x0
+ add r6, r0, #0x0
+ add r4, r5, #0x0
+_02027170:
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ bl FUN_02027114
+ add r4, r4, #0x1
+ add r5, r5, r0
+ cmp r4, #0x64
+ blt _02027170
+ add r0, r5, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02027184
+FUN_02027184: ; 0x02027184
+ push {r4-r6, lr}
+ mov r5, #0x0
+ add r6, r0, #0x0
+ add r4, r5, #0x0
+_0202718C:
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ bl FUN_0202714C
+ cmp r0, #0x12
+ beq _0202719A
+ add r5, r5, #0x1
+_0202719A:
+ add r4, r4, #0x1
+ cmp r4, #0x12
+ blt _0202718C
+ add r0, r5, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_020271A4
+FUN_020271A4: ; 0x020271A4
+ push {r4-r6, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ cmp r4, #0x64
+ blo _020271B4
+ bl ErrorHandling
+_020271B4:
+ cmp r4, #0x3d
+ bhs _020271DA
+ lsl r1, r4, #0x18
+ add r0, r5, #0x0
+ lsr r1, r1, #0x18
+ bl FUN_02026E08
+ add r0, r0, r6
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ cmp r1, #0x9
+ bls _020271CE
+ mov r1, #0x9
+_020271CE:
+ lsl r2, r4, #0x18
+ add r0, r5, #0x0
+ lsr r2, r2, #0x18
+ bl FUN_02026DC4
+ pop {r4-r6, pc}
+_020271DA:
+ add r0, r5, #0x0
+ lsl r1, r4, #0x18
+ add r0, #0x20
+ lsr r1, r1, #0x18
+ bl FUN_02026E88
+ add r0, r0, r6
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ cmp r6, #0x1
+ bls _020271F2
+ mov r6, #0x1
+_020271F2:
+ cmp r4, #0x3d
+ bhs _020271FA
+ bl ErrorHandling
+_020271FA:
+ sub r4, #0x3d
+ lsl r0, r4, #0x18
+ lsr r2, r0, #0x18
+ add r5, #0x20
+ lsl r2, r2, #0x18
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ lsr r2, r2, #0x18
+ bl FUN_02026E48
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02027210
+FUN_02027210: ; 0x02027210
+ push {r4-r6, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ cmp r4, #0x64
+ blo _02027220
+ bl ErrorHandling
+_02027220:
+ cmp r4, #0x3d
+ bhs _02027248
+ lsl r1, r4, #0x18
+ add r0, r5, #0x0
+ lsr r1, r1, #0x18
+ bl FUN_02026E08
+ cmp r0, r6
+ bls _0202723A
+ sub r0, r0, r6
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ b _0202723C
+_0202723A:
+ mov r1, #0x0
+_0202723C:
+ lsl r2, r4, #0x18
+ add r0, r5, #0x0
+ lsr r2, r2, #0x18
+ bl FUN_02026DC4
+ pop {r4-r6, pc}
+_02027248:
+ bhs _0202724E
+ bl ErrorHandling
+_0202724E:
+ sub r4, #0x3d
+ lsl r0, r4, #0x18
+ lsr r2, r0, #0x18
+ add r5, #0x20
+ lsl r2, r2, #0x18
+ add r0, r5, #0x0
+ mov r1, #0x0
+ lsr r2, r2, #0x18
+ bl FUN_02026E48
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02027264
+FUN_02027264: ; 0x02027264
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ cmp r4, #0x12
+ blo _02027272
+ bl ErrorHandling
+_02027272:
+ add r0, r5, #0x0
+ lsl r1, r4, #0x18
+ add r0, #0x28
+ lsr r1, r1, #0x18
+ bl FUN_02026EF4
+ cmp r0, #0x12
+ bne _02027298
+ add r0, r5, #0x0
+ add r0, #0x28
+ bl FUN_02026F18
+ lsl r2, r4, #0x18
+ add r5, #0x28
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ lsr r2, r2, #0x18
+ bl FUN_02026EB0
+_02027298:
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202729C
+FUN_0202729C: ; 0x0202729C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x0]
+ ldr r0, _020272CC ; =0x00001234
+ cmp r1, r0
+ beq _020272AE
+ ldr r0, _020272D0 ; =0x00002345
+ cmp r1, r0
+ bne _020272B2
+_020272AE:
+ mov r0, #0x1
+ b _020272B4
+_020272B2:
+ mov r0, #0x0
+_020272B4:
+ cmp r0, #0x0
+ bne _020272BC
+ bl ErrorHandling
+_020272BC:
+ ldr r1, [r4, #0x0]
+ ldr r0, _020272D0 ; =0x00002345
+ cmp r1, r0
+ bne _020272C8
+ mov r0, #0x1
+ pop {r4, pc}
+_020272C8:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+_020272CC: .word 0x00001234
+_020272D0: .word 0x00002345
+
+ thumb_func_start FUN_020272D4
+FUN_020272D4: ; 0x020272D4
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x0]
+ ldr r0, _02027304 ; =0x00001234
+ cmp r1, r0
+ beq _020272E6
+ ldr r0, _02027308 ; =0x00002345
+ cmp r1, r0
+ bne _020272EA
+_020272E6:
+ mov r0, #0x1
+ b _020272EC
+_020272EA:
+ mov r0, #0x0
+_020272EC:
+ cmp r0, #0x0
+ bne _020272F4
+ bl ErrorHandling
+_020272F4:
+ ldr r0, _02027308 ; =0x00002345
+ str r0, [r4, #0x0]
+ ldr r0, _0202730C ; =0x020ECAC4
+ add r4, #0x71
+ ldrb r0, [r0, #0x0]
+ strb r0, [r4, #0x0]
+ pop {r4, pc}
+ nop
+_02027304: .word 0x00001234
+_02027308: .word 0x00002345
+_0202730C: .word 0x020ECAC4
+
+ thumb_func_start FUN_02027310
+FUN_02027310: ; 0x02027310
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x0]
+ ldr r0, _02027340 ; =0x00001234
+ cmp r1, r0
+ beq _02027322
+ ldr r0, _02027344 ; =0x00002345
+ cmp r1, r0
+ bne _02027326
+_02027322:
+ mov r0, #0x1
+ b _02027328
+_02027326:
+ mov r0, #0x0
+_02027328:
+ cmp r0, #0x0
+ bne _02027330
+ bl ErrorHandling
+_02027330:
+ add r0, r4, #0x0
+ mov r1, #0x0
+ mov r2, #0x74
+ blx FUN_020DF4A4
+ ldr r0, _02027340 ; =0x00001234
+ str r0, [r4, #0x0]
+ pop {r4, pc}
+ .balign 4
+_02027340: .word 0x00001234
+_02027344: .word 0x00002345
+
+ thumb_func_start FUN_02027348
+FUN_02027348: ; 0x02027348
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ ldr r1, [r5, #0x0]
+ ldr r0, _02027378 ; =0x00001234
+ add r6, r2, #0x0
+ cmp r1, r0
+ beq _0202735E
+ ldr r0, _0202737C ; =0x00002345
+ cmp r1, r0
+ bne _02027362
+_0202735E:
+ mov r0, #0x1
+ b _02027364
+_02027362:
+ mov r0, #0x0
+_02027364:
+ cmp r0, #0x0
+ bne _0202736C
+ bl ErrorHandling
+_0202736C:
+ add r0, r5, #0x4
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_02026D34
+ pop {r4-r6, pc}
+ .balign 4
+_02027378: .word 0x00001234
+_0202737C: .word 0x00002345
+
+ thumb_func_start FUN_02027380
+FUN_02027380: ; 0x02027380
+ push {r4-r7, lr}
+ sub sp, #0x14
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x4]
+ add r6, r2, #0x0
+ bl FUN_02013ECC
+ add r1, sp, #0xc
+ strh r0, [r1, #0x0]
+ lsr r0, r0, #0x10
+ strh r0, [r1, #0x2]
+ ldrh r0, [r1, #0x0]
+ strh r0, [r1, #0x4]
+ ldrh r0, [r1, #0x2]
+ strh r0, [r1, #0x6]
+ ldr r0, [r4, #0x4]
+ bl FUN_02013F00
+ str r0, [sp, #0x8]
+ cmp r6, #0xa
+ blt _020273B0
+ bl ErrorHandling
+_020273B0:
+ add r1, sp, #0xc
+ mov r0, #0x4
+ ldrsh r1, [r1, r0]
+ add r0, #0xfc
+ cmp r1, r0
+ blt _020273C0
+ bl ErrorHandling
+_020273C0:
+ add r1, sp, #0xc
+ mov r0, #0x6
+ ldrsh r7, [r1, r0]
+ add r0, #0xfa
+ cmp r7, r0
+ blt _020273D0
+ bl ErrorHandling
+_020273D0:
+ mov r1, #0x7f
+ ldr r0, [sp, #0x8]
+ mvn r1, r1
+ cmp r0, r1
+ bgt _020273DE
+ bl ErrorHandling
+_020273DE:
+ mov r0, #0x1
+ lsl r0, r6
+ ldr r1, [r5, #0x3c]
+ str r0, [sp, #0x4]
+ tst r0, r1
+ beq _020273EE
+ bl ErrorHandling
+_020273EE:
+ ldr r1, [r5, #0x0]
+ ldr r0, _02027440 ; =0x00001234
+ cmp r1, r0
+ beq _020273FC
+ ldr r0, _02027444 ; =0x00002345
+ cmp r1, r0
+ bne _02027400
+_020273FC:
+ mov r0, #0x1
+ b _02027402
+_02027400:
+ mov r0, #0x0
+_02027402:
+ cmp r0, #0x0
+ bne _0202740A
+ bl ErrorHandling
+_0202740A:
+ ldr r0, [sp, #0x8]
+ add r1, r5, #0x0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ add r3, sp, #0xc
+ mov r2, #0x4
+ ldrsh r2, [r3, r2]
+ lsl r3, r7, #0x18
+ add r1, #0x48
+ lsl r0, r6, #0x2
+ add r0, r1, r0
+ ldr r1, [r4, #0x0]
+ lsl r2, r2, #0x18
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ lsr r2, r2, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_02026DB0
+ ldr r1, [r5, #0x3c]
+ ldr r0, [sp, #0x4]
+ orr r0, r1
+ str r0, [r5, #0x3c]
+ add sp, #0x14
+ pop {r4-r7, pc}
+ nop
+_02027440: .word 0x00001234
+_02027444: .word 0x00002345
+
+ thumb_func_start FUN_02027448
+FUN_02027448: ; 0x02027448
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ ldr r1, [r5, #0x0]
+ ldr r0, _02027470 ; =0x00001234
+ cmp r1, r0
+ beq _0202745C
+ ldr r0, _02027474 ; =0x00002345
+ cmp r1, r0
+ bne _02027460
+_0202745C:
+ mov r0, #0x1
+ b _02027462
+_02027460:
+ mov r0, #0x0
+_02027462:
+ cmp r0, #0x0
+ bne _0202746A
+ bl ErrorHandling
+_0202746A:
+ add r5, #0x70
+ strb r4, [r5, #0x0]
+ pop {r3-r5, pc}
+ .balign 4
+_02027470: .word 0x00001234
+_02027474: .word 0x00002345
+
+ thumb_func_start FUN_02027478
+FUN_02027478: ; 0x02027478
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ ldr r1, [r5, #0x0]
+ ldr r0, _020274B0 ; =0x00001234
+ cmp r1, r0
+ beq _0202748C
+ ldr r0, _020274B4 ; =0x00002345
+ cmp r1, r0
+ bne _02027490
+_0202748C:
+ mov r0, #0x1
+ b _02027492
+_02027490:
+ mov r0, #0x0
+_02027492:
+ cmp r0, #0x0
+ bne _0202749A
+ bl ErrorHandling
+_0202749A:
+ add r0, r5, #0x0
+ add r0, #0x40
+ bl FUN_02013724
+ add r5, #0x40
+ add r0, r5, #0x0
+ mov r1, #0x0
+ add r2, r4, #0x0
+ bl FUN_02013998
+ pop {r3-r5, pc}
+ .balign 4
+_020274B0: .word 0x00001234
+_020274B4: .word 0x00002345
+
+ thumb_func_start FUN_020274B8
+FUN_020274B8: ; 0x020274B8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ ldr r1, [r5, #0x0]
+ ldr r0, _020274E8 ; =0x00001234
+ cmp r1, r0
+ beq _020274CC
+ ldr r0, _020274EC ; =0x00002345
+ cmp r1, r0
+ bne _020274D0
+_020274CC:
+ mov r0, #0x1
+ b _020274D2
+_020274D0:
+ mov r0, #0x0
+_020274D2:
+ cmp r0, #0x0
+ bne _020274DA
+ bl ErrorHandling
+_020274DA:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r2, #0x74
+ blx FUN_020DF438
+ pop {r3-r5, pc}
+ nop
+_020274E8: .word 0x00001234
+_020274EC: .word 0x00002345
+
+ thumb_func_start FUN_020274F0
+FUN_020274F0: ; 0x020274F0
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ ldr r1, [r5, #0x0]
+ ldr r0, _02027520 ; =0x00001234
+ add r6, r2, #0x0
+ cmp r1, r0
+ beq _02027506
+ ldr r0, _02027524 ; =0x00002345
+ cmp r1, r0
+ bne _0202750A
+_02027506:
+ mov r0, #0x1
+ b _0202750C
+_0202750A:
+ mov r0, #0x0
+_0202750C:
+ cmp r0, #0x0
+ bne _02027514
+ bl ErrorHandling
+_02027514:
+ add r0, r5, #0x4
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_02026D98
+ pop {r4-r6, pc}
+ .balign 4
+_02027520: .word 0x00001234
+_02027524: .word 0x00002345
+
+ thumb_func_start FUN_02027528
+FUN_02027528: ; 0x02027528
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ cmp r4, #0xa
+ blt _02027536
+ bl ErrorHandling
+_02027536:
+ ldr r1, [r5, #0x0]
+ ldr r0, _0202755C ; =0x00001234
+ cmp r1, r0
+ beq _02027544
+ ldr r0, _02027560 ; =0x00002345
+ cmp r1, r0
+ bne _02027548
+_02027544:
+ mov r0, #0x1
+ b _0202754A
+_02027548:
+ mov r0, #0x0
+_0202754A:
+ cmp r0, #0x0
+ bne _02027552
+ bl ErrorHandling
+_02027552:
+ mov r0, #0x1
+ ldr r1, [r5, #0x3c]
+ lsl r0, r4
+ and r0, r1
+ pop {r3-r5, pc}
+ .balign 4
+_0202755C: .word 0x00001234
+_02027560: .word 0x00002345
+
+ thumb_func_start FUN_02027564
+FUN_02027564: ; 0x02027564
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x0]
+ ldr r0, _02027588 ; =0x00001234
+ cmp r1, r0
+ beq _02027576
+ ldr r0, _0202758C ; =0x00002345
+ cmp r1, r0
+ bne _0202757A
+_02027576:
+ mov r0, #0x1
+ b _0202757C
+_0202757A:
+ mov r0, #0x0
+_0202757C:
+ cmp r0, #0x0
+ bne _02027584
+ bl ErrorHandling
+_02027584:
+ add r0, r4, #0x4
+ pop {r4, pc}
+ .balign 4
+_02027588: .word 0x00001234
+_0202758C: .word 0x00002345
+
+ thumb_func_start FUN_02027590
+FUN_02027590: ; 0x02027590
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ cmp r4, #0xa
+ blt _0202759E
+ bl ErrorHandling
+_0202759E:
+ mov r0, #0x1
+ ldr r1, [r5, #0x3c]
+ lsl r0, r4
+ tst r0, r1
+ bne _020275AC
+ bl ErrorHandling
+_020275AC:
+ ldr r1, [r5, #0x0]
+ ldr r0, _020275D0 ; =0x00001234
+ cmp r1, r0
+ beq _020275BA
+ ldr r0, _020275D4 ; =0x00002345
+ cmp r1, r0
+ bne _020275BE
+_020275BA:
+ mov r0, #0x1
+ b _020275C0
+_020275BE:
+ mov r0, #0x0
+_020275C0:
+ cmp r0, #0x0
+ bne _020275C8
+ bl ErrorHandling
+_020275C8:
+ add r5, #0x48
+ lsl r0, r4, #0x2
+ add r0, r5, r0
+ pop {r3-r5, pc}
+ .balign 4
+_020275D0: .word 0x00001234
+_020275D4: .word 0x00002345
+
+ thumb_func_start FUN_020275D8
+FUN_020275D8: ; 0x020275D8
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x0]
+ ldr r0, _02027600 ; =0x00001234
+ cmp r1, r0
+ beq _020275EA
+ ldr r0, _02027604 ; =0x00002345
+ cmp r1, r0
+ bne _020275EE
+_020275EA:
+ mov r0, #0x1
+ b _020275F0
+_020275EE:
+ mov r0, #0x0
+_020275F0:
+ cmp r0, #0x0
+ bne _020275F8
+ bl ErrorHandling
+_020275F8:
+ add r0, r4, #0x4
+ bl FUN_02027C84
+ pop {r4, pc}
+ .balign 4
+_02027600: .word 0x00001234
+_02027604: .word 0x00002345
+
+ thumb_func_start FUN_02027608
+FUN_02027608: ; 0x02027608
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ ldr r1, [r5, #0x0]
+ ldr r0, _02027634 ; =0x00001234
+ cmp r1, r0
+ beq _0202761C
+ ldr r0, _02027638 ; =0x00002345
+ cmp r1, r0
+ bne _02027620
+_0202761C:
+ mov r0, #0x1
+ b _02027622
+_02027620:
+ mov r0, #0x0
+_02027622:
+ cmp r0, #0x0
+ bne _0202762A
+ bl ErrorHandling
+_0202762A:
+ add r0, r5, #0x4
+ add r1, r4, #0x0
+ bl FUN_02027C88
+ pop {r3-r5, pc}
+ .balign 4
+_02027634: .word 0x00001234
+_02027638: .word 0x00002345
+
+ thumb_func_start FUN_0202763C
+FUN_0202763C: ; 0x0202763C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x0]
+ ldr r0, _02027664 ; =0x00001234
+ cmp r1, r0
+ beq _0202764E
+ ldr r0, _02027668 ; =0x00002345
+ cmp r1, r0
+ bne _02027652
+_0202764E:
+ mov r0, #0x1
+ b _02027654
+_02027652:
+ mov r0, #0x0
+_02027654:
+ cmp r0, #0x0
+ bne _0202765C
+ bl ErrorHandling
+_0202765C:
+ add r0, r4, #0x4
+ bl FUN_02027C98
+ pop {r4, pc}
+ .balign 4
+_02027664: .word 0x00001234
+_02027668: .word 0x00002345
+
+ thumb_func_start FUN_0202766C
+FUN_0202766C: ; 0x0202766C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x0]
+ ldr r0, _02027694 ; =0x00001234
+ cmp r1, r0
+ beq _0202767E
+ ldr r0, _02027698 ; =0x00002345
+ cmp r1, r0
+ bne _02027682
+_0202767E:
+ mov r0, #0x1
+ b _02027684
+_02027682:
+ mov r0, #0x0
+_02027684:
+ cmp r0, #0x0
+ bne _0202768C
+ bl ErrorHandling
+_0202768C:
+ add r4, #0x70
+ ldrb r0, [r4, #0x0]
+ pop {r4, pc}
+ nop
+_02027694: .word 0x00001234
+_02027698: .word 0x00002345
+
+ thumb_func_start FUN_0202769C
+FUN_0202769C: ; 0x0202769C
+ ldr r3, _020276A4 ; =FUN_02013918
+ add r0, #0x40
+ mov r1, #0x0
+ bx r3
+ .balign 4
+_020276A4: .word FUN_02013918
+
+ thumb_func_start FUN_020276A8
+FUN_020276A8: ; 0x020276A8
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x0]
+ ldr r0, _020276D0 ; =0x00001234
+ cmp r1, r0
+ beq _020276BA
+ ldr r0, _020276D4 ; =0x00002345
+ cmp r1, r0
+ bne _020276BE
+_020276BA:
+ mov r0, #0x1
+ b _020276C0
+_020276BE:
+ mov r0, #0x0
+_020276C0:
+ cmp r0, #0x0
+ bne _020276C8
+ bl ErrorHandling
+_020276C8:
+ add r4, #0x71
+ ldrb r0, [r4, #0x0]
+ pop {r4, pc}
+ nop
+_020276D0: .word 0x00001234
+_020276D4: .word 0x00002345
+
+ thumb_func_start FUN_020276D8
+FUN_020276D8: ; 0x020276D8
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x0]
+ ldr r0, _02027708 ; =0x00001234
+ cmp r1, r0
+ beq _020276EA
+ ldr r0, _0202770C ; =0x00002345
+ cmp r1, r0
+ bne _020276EE
+_020276EA:
+ mov r0, #0x1
+ b _020276F0
+_020276EE:
+ mov r0, #0x0
+_020276F0:
+ cmp r0, #0x0
+ bne _020276F8
+ bl ErrorHandling
+_020276F8:
+ ldr r1, [r4, #0x0]
+ ldr r0, _0202770C ; =0x00002345
+ cmp r1, r0
+ bne _02027704
+ mov r0, #0x1
+ pop {r4, pc}
+_02027704:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+_02027708: .word 0x00001234
+_0202770C: .word 0x00002345
+
+ thumb_func_start FUN_02027710
+FUN_02027710: ; 0x02027710
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x0]
+ ldr r0, _02027738 ; =0x00001234
+ cmp r1, r0
+ beq _02027722
+ ldr r0, _0202773C ; =0x00002345
+ cmp r1, r0
+ bne _02027726
+_02027722:
+ mov r0, #0x1
+ b _02027728
+_02027726:
+ mov r0, #0x0
+_02027728:
+ cmp r0, #0x0
+ bne _02027730
+ bl ErrorHandling
+_02027730:
+ ldr r0, _0202773C ; =0x00002345
+ str r0, [r4, #0x0]
+ pop {r4, pc}
+ nop
+_02027738: .word 0x00001234
+_0202773C: .word 0x00002345
+
+ thumb_func_start FUN_02027740
+FUN_02027740: ; 0x02027740
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x0]
+ ldr r0, _02027770 ; =0x00001234
+ cmp r1, r0
+ beq _02027752
+ ldr r0, _02027774 ; =0x00002345
+ cmp r1, r0
+ bne _02027756
+_02027752:
+ mov r0, #0x1
+ b _02027758
+_02027756:
+ mov r0, #0x0
+_02027758:
+ cmp r0, #0x0
+ bne _02027760
+ bl ErrorHandling
+_02027760:
+ add r0, r4, #0x0
+ mov r1, #0x0
+ mov r2, #0x98
+ blx FUN_020DF4A4
+ ldr r0, _02027770 ; =0x00001234
+ str r0, [r4, #0x0]
+ pop {r4, pc}
+ .balign 4
+_02027770: .word 0x00001234
+_02027774: .word 0x00002345
+
+ thumb_func_start FUN_02027778
+FUN_02027778: ; 0x02027778
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ ldr r1, [r5, #0x0]
+ ldr r0, _020277AC ; =0x00001234
+ add r6, r2, #0x0
+ cmp r1, r0
+ beq _0202778E
+ ldr r0, _020277B0 ; =0x00002345
+ cmp r1, r0
+ bne _02027792
+_0202778E:
+ mov r0, #0x1
+ b _02027794
+_02027792:
+ mov r0, #0x0
+_02027794:
+ cmp r0, #0x0
+ bne _0202779C
+ bl ErrorHandling
+_0202779C:
+ add r5, #0x8
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_02026D34
+ pop {r4-r6, pc}
+ nop
+_020277AC: .word 0x00001234
+_020277B0: .word 0x00002345
+
+ thumb_func_start FUN_020277B4
+FUN_020277B4: ; 0x020277B4
+ push {r4-r7, lr}
+ sub sp, #0x14
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x4]
+ add r6, r2, #0x0
+ bl FUN_02013ECC
+ add r1, sp, #0xc
+ strh r0, [r1, #0x0]
+ lsr r0, r0, #0x10
+ strh r0, [r1, #0x2]
+ ldrh r0, [r1, #0x0]
+ strh r0, [r1, #0x4]
+ ldrh r0, [r1, #0x2]
+ strh r0, [r1, #0x6]
+ ldr r0, [r4, #0x4]
+ bl FUN_02013F00
+ str r0, [sp, #0x8]
+ cmp r6, #0x14
+ blt _020277E4
+ bl ErrorHandling
+_020277E4:
+ add r1, sp, #0xc
+ mov r0, #0x4
+ ldrsh r1, [r1, r0]
+ add r0, #0xfc
+ cmp r1, r0
+ blt _020277F4
+ bl ErrorHandling
+_020277F4:
+ add r1, sp, #0xc
+ mov r0, #0x6
+ ldrsh r7, [r1, r0]
+ add r0, #0xfa
+ cmp r7, r0
+ blt _02027804
+ bl ErrorHandling
+_02027804:
+ mov r1, #0x7f
+ ldr r0, [sp, #0x8]
+ mvn r1, r1
+ cmp r0, r1
+ bgt _02027812
+ bl ErrorHandling
+_02027812:
+ mov r0, #0x1
+ lsl r0, r6
+ ldr r1, [r5, #0x40]
+ str r0, [sp, #0x4]
+ tst r0, r1
+ beq _02027822
+ bl ErrorHandling
+_02027822:
+ ldr r1, [r5, #0x0]
+ ldr r0, _02027874 ; =0x00001234
+ cmp r1, r0
+ beq _02027830
+ ldr r0, _02027878 ; =0x00002345
+ cmp r1, r0
+ bne _02027834
+_02027830:
+ mov r0, #0x1
+ b _02027836
+_02027834:
+ mov r0, #0x0
+_02027836:
+ cmp r0, #0x0
+ bne _0202783E
+ bl ErrorHandling
+_0202783E:
+ ldr r0, [sp, #0x8]
+ add r1, r5, #0x0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ add r3, sp, #0xc
+ mov r2, #0x4
+ ldrsh r2, [r3, r2]
+ lsl r3, r7, #0x18
+ add r1, #0x44
+ lsl r0, r6, #0x2
+ add r0, r1, r0
+ ldr r1, [r4, #0x0]
+ lsl r2, r2, #0x18
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ lsr r2, r2, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_02026DB0
+ ldr r1, [r5, #0x40]
+ ldr r0, [sp, #0x4]
+ orr r0, r1
+ str r0, [r5, #0x40]
+ add sp, #0x14
+ pop {r4-r7, pc}
+ nop
+_02027874: .word 0x00001234
+_02027878: .word 0x00002345
+
+ thumb_func_start FUN_0202787C
+FUN_0202787C: ; 0x0202787C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ ldr r1, [r5, #0x0]
+ ldr r0, _020278A4 ; =0x00001234
+ cmp r1, r0
+ beq _02027890
+ ldr r0, _020278A8 ; =0x00002345
+ cmp r1, r0
+ bne _02027894
+_02027890:
+ mov r0, #0x1
+ b _02027896
+_02027894:
+ mov r0, #0x0
+_02027896:
+ cmp r0, #0x0
+ bne _0202789E
+ bl ErrorHandling
+_0202789E:
+ add r5, #0x94
+ strb r4, [r5, #0x0]
+ pop {r3-r5, pc}
+ .balign 4
+_020278A4: .word 0x00001234
+_020278A8: .word 0x00002345
+
+ thumb_func_start FUN_020278AC
+FUN_020278AC: ; 0x020278AC
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ ldr r1, [r5, #0x0]
+ ldr r0, _020278D4 ; =0x00001234
+ cmp r1, r0
+ beq _020278C0
+ ldr r0, _020278D8 ; =0x00002345
+ cmp r1, r0
+ bne _020278C4
+_020278C0:
+ mov r0, #0x1
+ b _020278C6
+_020278C4:
+ mov r0, #0x0
+_020278C6:
+ cmp r0, #0x0
+ bne _020278CE
+ bl ErrorHandling
+_020278CE:
+ str r4, [r5, #0x4]
+ pop {r3-r5, pc}
+ nop
+_020278D4: .word 0x00001234
+_020278D8: .word 0x00002345
+
+ thumb_func_start FUN_020278DC
+FUN_020278DC: ; 0x020278DC
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ ldr r1, [r5, #0x0]
+ ldr r0, _0202790C ; =0x00001234
+ cmp r1, r0
+ beq _020278F0
+ ldr r0, _02027910 ; =0x00002345
+ cmp r1, r0
+ bne _020278F4
+_020278F0:
+ mov r0, #0x1
+ b _020278F6
+_020278F4:
+ mov r0, #0x0
+_020278F6:
+ cmp r0, #0x0
+ bne _020278FE
+ bl ErrorHandling
+_020278FE:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r2, #0x98
+ blx FUN_020DF438
+ pop {r3-r5, pc}
+ nop
+_0202790C: .word 0x00001234
+_02027910: .word 0x00002345
+
+ thumb_func_start FUN_02027914
+FUN_02027914: ; 0x02027914
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ ldr r1, [r5, #0x0]
+ ldr r0, _0202795C ; =0x00001234
+ add r6, r2, #0x0
+ cmp r1, r0
+ beq _0202792C
+ ldr r0, _02027960 ; =0x00002345
+ cmp r1, r0
+ bne _02027930
+_0202792C:
+ mov r0, #0x1
+ b _02027932
+_02027930:
+ mov r0, #0x0
+_02027932:
+ cmp r0, #0x0
+ bne _0202793A
+ bl ErrorHandling
+_0202793A:
+ add r1, sp, #0x4
+ add r0, r4, #0x0
+ add r1, #0x1
+ add r2, sp, #0x4
+ bl FUN_02026F3C
+ add r5, #0x8
+ str r6, [sp, #0x0]
+ add r3, sp, #0x4
+ ldrb r2, [r3, #0x1]
+ ldrb r3, [r3, #0x0]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02026CD0
+ add sp, #0x8
+ pop {r4-r6, pc}
+ .balign 4
+_0202795C: .word 0x00001234
+_02027960: .word 0x00002345
+
+ thumb_func_start FUN_02027964
+FUN_02027964: ; 0x02027964
+ push {r4-r7, lr}
+ sub sp, #0xc
+ str r3, [sp, #0x4]
+ add r6, r1, #0x0
+ add r5, r0, #0x0
+ add r7, r2, #0x0
+ ldr r4, [sp, #0x24]
+ cmp r6, #0x14
+ blo _0202797A
+ bl ErrorHandling
+_0202797A:
+ cmp r7, #0x64
+ blo _02027982
+ bl ErrorHandling
+_02027982:
+ mov r1, #0x1
+ ldr r0, [sp, #0x4]
+ lsl r1, r1, #0x8
+ cmp r0, r1
+ blt _02027990
+ bl ErrorHandling
+_02027990:
+ add r0, sp, #0x10
+ ldrb r1, [r0, #0x10]
+ mov r0, #0x1
+ lsl r0, r0, #0x8
+ cmp r1, r0
+ blt _020279A0
+ bl ErrorHandling
+_020279A0:
+ mov r0, #0x7f
+ mvn r0, r0
+ cmp r4, r0
+ bgt _020279AC
+ bl ErrorHandling
+_020279AC:
+ mov r0, #0x1
+ lsl r0, r6
+ ldr r1, [r5, #0x40]
+ str r0, [sp, #0x8]
+ tst r0, r1
+ beq _020279BC
+ bl ErrorHandling
+_020279BC:
+ ldr r1, [r5, #0x0]
+ ldr r0, _02027A0C ; =0x00001234
+ cmp r1, r0
+ beq _020279CA
+ ldr r0, _02027A10 ; =0x00002345
+ cmp r1, r0
+ bne _020279CE
+_020279CA:
+ mov r0, #0x1
+ b _020279D0
+_020279CE:
+ mov r0, #0x0
+_020279D0:
+ cmp r0, #0x0
+ bne _020279D8
+ bl ErrorHandling
+_020279D8:
+ mov r0, #0x38
+ ldrsb r0, [r5, r0]
+ cmp r0, r4
+ blt _020279E6
+ add r0, r0, #0x1
+ lsl r0, r0, #0x18
+ asr r4, r0, #0x18
+_020279E6:
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ add r3, sp, #0x10
+ add r1, r5, #0x0
+ ldrb r3, [r3, #0x10]
+ add r1, #0x44
+ lsl r0, r6, #0x2
+ add r0, r1, r0
+ ldr r2, [sp, #0x4]
+ add r1, r7, #0x0
+ bl FUN_02026DB0
+ ldr r1, [r5, #0x40]
+ ldr r0, [sp, #0x8]
+ orr r0, r1
+ str r0, [r5, #0x40]
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+_02027A0C: .word 0x00001234
+_02027A10: .word 0x00002345
+
+ thumb_func_start FUN_02027A14
+FUN_02027A14: ; 0x02027A14
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ cmp r4, #0x14
+ blt _02027A22
+ bl ErrorHandling
+_02027A22:
+ ldr r1, [r5, #0x0]
+ ldr r0, _02027A50 ; =0x00001234
+ cmp r1, r0
+ beq _02027A30
+ ldr r0, _02027A54 ; =0x00002345
+ cmp r1, r0
+ bne _02027A34
+_02027A30:
+ mov r0, #0x1
+ b _02027A36
+_02027A34:
+ mov r0, #0x0
+_02027A36:
+ cmp r0, #0x0
+ bne _02027A3E
+ bl ErrorHandling
+_02027A3E:
+ mov r0, #0x1
+ add r1, r0, #0x0
+ ldr r2, [r5, #0x40]
+ lsl r1, r4
+ tst r1, r2
+ bne _02027A4C
+ mov r0, #0x0
+_02027A4C:
+ pop {r3-r5, pc}
+ nop
+_02027A50: .word 0x00001234
+_02027A54: .word 0x00002345
+
+ thumb_func_start FUN_02027A58
+FUN_02027A58: ; 0x02027A58
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ ldr r1, [r5, #0x0]
+ ldr r0, _02027A8C ; =0x00001234
+ add r6, r2, #0x0
+ cmp r1, r0
+ beq _02027A6E
+ ldr r0, _02027A90 ; =0x00002345
+ cmp r1, r0
+ bne _02027A72
+_02027A6E:
+ mov r0, #0x1
+ b _02027A74
+_02027A72:
+ mov r0, #0x0
+_02027A74:
+ cmp r0, #0x0
+ bne _02027A7C
+ bl ErrorHandling
+_02027A7C:
+ add r5, #0x8
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_02026D98
+ pop {r4-r6, pc}
+ nop
+_02027A8C: .word 0x00001234
+_02027A90: .word 0x00002345
+
+ thumb_func_start FUN_02027A94
+FUN_02027A94: ; 0x02027A94
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x0]
+ ldr r0, _02027ABC ; =0x00001234
+ cmp r1, r0
+ beq _02027AA6
+ ldr r0, _02027AC0 ; =0x00002345
+ cmp r1, r0
+ bne _02027AAA
+_02027AA6:
+ mov r0, #0x1
+ b _02027AAC
+_02027AAA:
+ mov r0, #0x0
+_02027AAC:
+ cmp r0, #0x0
+ bne _02027AB4
+ bl ErrorHandling
+_02027AB4:
+ add r4, #0x8
+ add r0, r4, #0x0
+ pop {r4, pc}
+ nop
+_02027ABC: .word 0x00001234
+_02027AC0: .word 0x00002345
+
+ thumb_func_start FUN_02027AC4
+FUN_02027AC4: ; 0x02027AC4
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ cmp r4, #0x14
+ blt _02027AD2
+ bl ErrorHandling
+_02027AD2:
+ mov r0, #0x1
+ ldr r1, [r5, #0x40]
+ lsl r0, r4
+ tst r0, r1
+ bne _02027AE0
+ bl ErrorHandling
+_02027AE0:
+ ldr r1, [r5, #0x0]
+ ldr r0, _02027B04 ; =0x00001234
+ cmp r1, r0
+ beq _02027AEE
+ ldr r0, _02027B08 ; =0x00002345
+ cmp r1, r0
+ bne _02027AF2
+_02027AEE:
+ mov r0, #0x1
+ b _02027AF4
+_02027AF2:
+ mov r0, #0x0
+_02027AF4:
+ cmp r0, #0x0
+ bne _02027AFC
+ bl ErrorHandling
+_02027AFC:
+ add r5, #0x44
+ lsl r0, r4, #0x2
+ add r0, r5, r0
+ pop {r3-r5, pc}
+ .balign 4
+_02027B04: .word 0x00001234
+_02027B08: .word 0x00002345
+
+ thumb_func_start FUN_02027B0C
+FUN_02027B0C: ; 0x02027B0C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ ldr r1, [r5, #0x0]
+ ldr r0, _02027B3C ; =0x00001234
+ cmp r1, r0
+ beq _02027B20
+ ldr r0, _02027B40 ; =0x00002345
+ cmp r1, r0
+ bne _02027B24
+_02027B20:
+ mov r0, #0x1
+ b _02027B26
+_02027B24:
+ mov r0, #0x0
+_02027B26:
+ cmp r0, #0x0
+ bne _02027B2E
+ bl ErrorHandling
+_02027B2E:
+ add r5, #0x8
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02027C88
+ pop {r3-r5, pc}
+ nop
+_02027B3C: .word 0x00001234
+_02027B40: .word 0x00002345
+
+ thumb_func_start FUN_02027B44
+FUN_02027B44: ; 0x02027B44
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x0]
+ ldr r0, _02027B70 ; =0x00001234
+ cmp r1, r0
+ beq _02027B56
+ ldr r0, _02027B74 ; =0x00002345
+ cmp r1, r0
+ bne _02027B5A
+_02027B56:
+ mov r0, #0x1
+ b _02027B5C
+_02027B5A:
+ mov r0, #0x0
+_02027B5C:
+ cmp r0, #0x0
+ bne _02027B64
+ bl ErrorHandling
+_02027B64:
+ add r4, #0x8
+ add r0, r4, #0x0
+ bl FUN_02027C98
+ pop {r4, pc}
+ nop
+_02027B70: .word 0x00001234
+_02027B74: .word 0x00002345
+
+ thumb_func_start FUN_02027B78
+FUN_02027B78: ; 0x02027B78
+ push {r3-r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ ldr r1, [r5, #0x0]
+ ldr r0, _02027BD4 ; =0x00001234
+ cmp r1, r0
+ beq _02027B8E
+ ldr r0, _02027BD8 ; =0x00002345
+ cmp r1, r0
+ bne _02027B92
+_02027B8E:
+ mov r0, #0x1
+ b _02027B94
+_02027B92:
+ mov r0, #0x0
+_02027B94:
+ cmp r0, #0x0
+ bne _02027B9C
+ bl ErrorHandling
+_02027B9C:
+ mov r1, #0x1
+ str r1, [sp, #0x0]
+ ldr r0, [r5, #0x8]
+ mov r2, #0x0
+ str r0, [sp, #0x4]
+ str r1, [sp, #0x8]
+ ldr r0, [r5, #0xc]
+ add r3, r2, #0x0
+ str r0, [sp, #0xc]
+ ldrh r1, [r5, #0x10]
+ add r0, r4, #0x0
+ bl FUN_02066ACC
+ add r2, r5, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x74
+ add r2, #0x12
+ bl FUN_02067830
+ add r5, #0x3b
+ add r0, r4, #0x0
+ mov r1, #0x70
+ add r2, r5, #0x0
+ bl FUN_02067830
+ add sp, #0x10
+ pop {r3-r5, pc}
+ nop
+_02027BD4: .word 0x00001234
+_02027BD8: .word 0x00002345
+
+ thumb_func_start FUN_02027BDC
+FUN_02027BDC: ; 0x02027BDC
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ cmp r4, #0x14
+ blt _02027BEA
+ bl ErrorHandling
+_02027BEA:
+ mov r0, #0x1
+ ldr r1, [r5, #0x40]
+ lsl r0, r4
+ tst r0, r1
+ bne _02027BF8
+ bl ErrorHandling
+_02027BF8:
+ ldr r1, [r5, #0x0]
+ ldr r0, _02027C20 ; =0x00001234
+ cmp r1, r0
+ beq _02027C06
+ ldr r0, _02027C24 ; =0x00002345
+ cmp r1, r0
+ bne _02027C0A
+_02027C06:
+ mov r0, #0x1
+ b _02027C0C
+_02027C0A:
+ mov r0, #0x0
+_02027C0C:
+ cmp r0, #0x0
+ bne _02027C14
+ bl ErrorHandling
+_02027C14:
+ add r5, #0x44
+ lsl r0, r4, #0x2
+ add r0, r5, r0
+ bl FUN_02027CF8
+ pop {r3-r5, pc}
+ .balign 4
+_02027C20: .word 0x00001234
+_02027C24: .word 0x00002345
+
+ thumb_func_start FUN_02027C28
+FUN_02027C28: ; 0x02027C28
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x0]
+ ldr r0, _02027C50 ; =0x00001234
+ cmp r1, r0
+ beq _02027C3A
+ ldr r0, _02027C54 ; =0x00002345
+ cmp r1, r0
+ bne _02027C3E
+_02027C3A:
+ mov r0, #0x1
+ b _02027C40
+_02027C3E:
+ mov r0, #0x0
+_02027C40:
+ cmp r0, #0x0
+ bne _02027C48
+ bl ErrorHandling
+_02027C48:
+ add r4, #0x94
+ ldrb r0, [r4, #0x0]
+ pop {r4, pc}
+ nop
+_02027C50: .word 0x00001234
+_02027C54: .word 0x00002345
+
+ thumb_func_start FUN_02027C58
+FUN_02027C58: ; 0x02027C58
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x0]
+ ldr r0, _02027C7C ; =0x00001234
+ cmp r1, r0
+ beq _02027C6A
+ ldr r0, _02027C80 ; =0x00002345
+ cmp r1, r0
+ bne _02027C6E
+_02027C6A:
+ mov r0, #0x1
+ b _02027C70
+_02027C6E:
+ mov r0, #0x0
+_02027C70:
+ cmp r0, #0x0
+ bne _02027C78
+ bl ErrorHandling
+_02027C78:
+ ldr r0, [r4, #0x4]
+ pop {r4, pc}
+ .balign 4
+_02027C7C: .word 0x00001234
+_02027C80: .word 0x00002345
+
+ thumb_func_start FUN_02027C84
+FUN_02027C84: ; 0x02027C84
+ ldrh r0, [r0, #0x8]
+ bx lr
+
+ thumb_func_start FUN_02027C88
+FUN_02027C88: ; 0x02027C88
+ add r2, r0, #0x0
+ ldr r3, _02027C94 ; =FUN_02021E28
+ add r2, #0x20
+ add r0, r1, #0x0
+ add r1, r2, #0x0
+ bx r3
+ .balign 4
+_02027C94: .word FUN_02021E28
+
+ thumb_func_start FUN_02027C98
+FUN_02027C98: ; 0x02027C98
+ add r0, #0x34
+ ldrb r0, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02027CA0
+FUN_02027CA0: ; 0x02027CA0
+ mov r1, #0x30
+ ldrsb r0, [r0, r1]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02027CA8
+FUN_02027CA8: ; 0x02027CA8
+ add r0, #0x31
+ ldrb r0, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02027CB0
+FUN_02027CB0: ; 0x02027CB0
+ add r0, #0x32
+ ldrb r0, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02027CB8
+FUN_02027CB8: ; 0x02027CB8
+ push {r3-r5, lr}
+ sub sp, #0x10
+ add r4, r1, #0x0
+ mov r1, #0x1
+ add r5, r0, #0x0
+ str r1, [sp, #0x0]
+ ldr r0, [r5, #0x0]
+ mov r2, #0x0
+ str r0, [sp, #0x4]
+ str r1, [sp, #0x8]
+ ldr r0, [r5, #0x4]
+ add r3, r2, #0x0
+ str r0, [sp, #0xc]
+ ldrh r1, [r5, #0x8]
+ add r0, r4, #0x0
+ bl FUN_02066ACC
+ add r2, r5, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x74
+ add r2, #0xa
+ bl FUN_02067830
+ add r5, #0x33
+ add r0, r4, #0x0
+ mov r1, #0x70
+ add r2, r5, #0x0
+ bl FUN_02067830
+ add sp, #0x10
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02027CF8
+FUN_02027CF8: ; 0x02027CF8
+ ldrb r0, [r0, #0x0]
+ bx lr
+
+ thumb_func_start FUN_02027CFC
+FUN_02027CFC: ; 0x02027CFC
+ ldrb r0, [r0, #0x1]
+ bx lr
+
+ thumb_func_start FUN_02027D00
+FUN_02027D00: ; 0x02027D00
+ ldrb r0, [r0, #0x2]
+ bx lr
+
+ thumb_func_start FUN_02027D04
+FUN_02027D04: ; 0x02027D04
+ mov r1, #0x3
+ ldrsb r0, [r0, r1]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02027D0C
+FUN_02027D0C: ; 0x02027D0C
+ push {r4-r7, lr}
+ sub sp, #0x1fc
+ sub sp, #0x1fc
+ sub sp, #0xc
+ add r7, r0, #0x0
+ mov r0, #0x1
+ add r4, r1, #0x0
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ bl FUN_0202729C
+ cmp r0, #0x1
+ bne _02027D6A
+ ldr r1, _02027D78 ; =0xEDB88320
+ add r0, sp, #0x4
+ blx FUN_020DDE44
+ add r0, sp, #0x4
+ add r1, r4, #0x0
+ mov r2, #0x74
+ blx FUN_020DDD28
+ add r6, r0, #0x0
+ mov r5, #0x0
+_02027D3C:
+ add r0, r7, #0x0
+ add r1, r5, #0x0
+ bl FUN_02027008
+ add r4, r0, #0x0
+ ldr r1, _02027D78 ; =0xEDB88320
+ add r0, sp, #0x4
+ blx FUN_020DDE44
+ add r0, sp, #0x4
+ add r1, r4, #0x0
+ mov r2, #0x74
+ blx FUN_020DDD28
+ cmp r0, r6
+ bne _02027D62
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ b _02027D6E
+_02027D62:
+ add r5, r5, #0x1
+ cmp r5, #0xb
+ blt _02027D3C
+ b _02027D6E
+_02027D6A:
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+_02027D6E:
+ ldr r0, [sp, #0x0]
+ add sp, #0x1fc
+ add sp, #0x1fc
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+_02027D78: .word 0xEDB88320
+
+ thumb_func_start FUN_02027D7C
+FUN_02027D7C: ; 0x02027D7C
+ push {r4-r7, lr}
+ sub sp, #0xc
+ str r0, [sp, #0x0]
+ mov r7, #0x0
+ ldr r0, [sp, #0x0]
+ str r1, [sp, #0x4]
+ add r5, r2, #0x0
+ add r6, r7, #0x0
+ str r3, [sp, #0x8]
+ cmp r0, #0x0
+ ble _02027DB6
+ add r4, r3, #0x0
+_02027D94:
+ ldr r0, [sp, #0x4]
+ cmp r6, r0
+ beq _02027DAC
+ ldr r1, [r4, #0x0]
+ cmp r1, #0x0
+ beq _02027DAC
+ add r0, r5, #0x0
+ bl FUN_02027D0C
+ cmp r0, #0x1
+ bne _02027DAC
+ add r7, r7, #0x1
+_02027DAC:
+ ldr r0, [sp, #0x0]
+ add r6, r6, #0x1
+ add r4, r4, #0x4
+ cmp r6, r0
+ blt _02027D94
+_02027DB6:
+ mov r4, #0xa
+_02027DB8:
+ add r1, r4, r7
+ cmp r1, #0xb
+ bge _02027DD6
+ add r0, r5, #0x0
+ bl FUN_02027008
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02027008
+ add r1, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_020274B8
+_02027DD6:
+ sub r4, r4, #0x1
+ cmp r4, #0x1
+ bge _02027DB8
+ ldr r0, [sp, #0x0]
+ mov r6, #0x1
+ mov r4, #0x0
+ cmp r0, #0x0
+ ble _02027E1E
+_02027DE6:
+ ldr r0, [sp, #0x4]
+ cmp r4, r0
+ beq _02027E10
+ ldr r0, [sp, #0x8]
+ ldr r7, [r0, #0x0]
+ cmp r7, #0x0
+ beq _02027E10
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ bl FUN_02027D0C
+ cmp r0, #0x1
+ bne _02027E10
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02027008
+ add r1, r7, #0x0
+ add r6, r6, #0x1
+ bl FUN_020274B8
+_02027E10:
+ ldr r0, [sp, #0x8]
+ add r4, r4, #0x1
+ add r0, r0, #0x4
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x0]
+ cmp r4, r0
+ blt _02027DE6
+_02027E1E:
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02027E24
+FUN_02027E24: ; 0x02027E24
+ ldr r3, _02027E2C ; =FUN_02022610
+ mov r1, #0xe
+ bx r3
+ nop
+_02027E2C: .word FUN_02022610
+
+ thumb_func_start FUN_02027E30
+FUN_02027E30: ; 0x02027E30
+ mov r0, #0x8
+ bx lr
+
+ thumb_func_start FUN_02027E34
+FUN_02027E34: ; 0x02027E34
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x1e
+ beq _02027E3E
+ mov r0, #0x1
+ bx lr
+_02027E3E:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02027E44
+FUN_02027E44: ; 0x02027E44
+ mov r1, #0x1e
+ strb r1, [r0, #0x0]
+ mov r1, #0x0
+ strb r1, [r0, #0x1]
+ strb r1, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ strb r1, [r0, #0x4]
+ strb r1, [r0, #0x5]
+ strb r1, [r0, #0x6]
+ strb r1, [r0, #0x7]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02027E5C
+FUN_02027E5C: ; 0x02027E5C
+ push {r4, lr}
+ mov r1, #0x8
+ bl FUN_020169D8
+ add r4, r0, #0x0
+ bl FUN_02027E44
+ add r0, r4, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02027E70
+FUN_02027E70: ; 0x02027E70
+ ldrb r2, [r0, #0x0]
+ strb r2, [r1, #0x0]
+ ldrb r2, [r0, #0x1]
+ strb r2, [r1, #0x1]
+ ldrb r2, [r0, #0x2]
+ strb r2, [r1, #0x2]
+ ldrb r2, [r0, #0x3]
+ strb r2, [r1, #0x3]
+ ldrb r2, [r0, #0x4]
+ strb r2, [r1, #0x4]
+ ldrb r2, [r0, #0x5]
+ strb r2, [r1, #0x5]
+ ldrb r2, [r0, #0x6]
+ strb r2, [r1, #0x6]
+ ldrb r0, [r0, #0x7]
+ strb r0, [r1, #0x7]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02027E94
+FUN_02027E94: ; 0x02027E94
+ cmp r1, #0x6
+ bhi _02027ECA
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02027EA4: ; jump table (using 16-bit offset)
+ .short _02027EB2 - _02027EA4 - 2; case 0
+ .short _02027EB6 - _02027EA4 - 2; case 1
+ .short _02027EBA - _02027EA4 - 2; case 2
+ .short _02027EBE - _02027EA4 - 2; case 3
+ .short _02027EC2 - _02027EA4 - 2; case 4
+ .short _02027EC6 - _02027EA4 - 2; case 5
+ .short _02027ECA - _02027EA4 - 2; case 6
+_02027EB2:
+ ldrb r0, [r0, #0x0]
+ bx lr
+_02027EB6:
+ ldrb r0, [r0, #0x1]
+ bx lr
+_02027EBA:
+ ldrb r0, [r0, #0x2]
+ bx lr
+_02027EBE:
+ ldrb r0, [r0, #0x3]
+ bx lr
+_02027EC2:
+ ldrb r0, [r0, #0x4]
+ bx lr
+_02027EC6:
+ ldrb r0, [r0, #0x5]
+ bx lr
+_02027ECA:
+ ldrb r0, [r0, #0x6]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02027ED0
+FUN_02027ED0: ; 0x02027ED0
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ str r1, [sp, #0x0]
+ mov r4, #0x0
+ mov r6, #0x2
+ mov r7, #0x5
+_02027EDC:
+ bl FUN_0201B9EC
+ add r1, r7, #0x0
+ blx _s32_div_f
+ lsl r0, r1, #0x18
+ lsr r0, r0, #0x18
+ add r1, r5, r0
+ ldrb r0, [r1, #0x1]
+ cmp r0, #0x0
+ bne _02027EF6
+ strb r6, [r1, #0x1]
+ add r4, r4, #0x1
+_02027EF6:
+ cmp r4, #0x3
+ blt _02027EDC
+ mov r0, #0x1b
+ strb r0, [r5, #0x0]
+ ldr r0, [sp, #0x0]
+ strb r0, [r5, #0x6]
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02027F04
+FUN_02027F04: ; 0x02027F04
+ push {r3-r7, lr}
+ sub sp, #0x8
+ mov r12, r2
+ mov r2, #0x0
+ add r6, r2, #0x0
+ mov r5, #0x1b
+ cmp r3, #0x0
+ beq _02027F20
+ mov r1, r12
+ bl FUN_02027ED0
+ add sp, #0x8
+ add r0, r5, #0x0
+ pop {r3-r7, pc}
+_02027F20:
+ add r4, r2, #0x0
+ add r7, sp, #0x0
+_02027F24:
+ ldrb r3, [r1, r4]
+ cmp r3, #0x0
+ beq _02027F34
+ cmp r3, #0x32
+ blo _02027F30
+ mov r6, #0x1
+_02027F30:
+ strb r4, [r7, r2]
+ add r2, r2, #0x1
+_02027F34:
+ add r4, r4, #0x1
+ cmp r4, #0x5
+ blt _02027F24
+ cmp r2, #0x5
+ bhi _02027F9C
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_02027F4A: ; jump table (using 16-bit offset)
+ .short _02027F56 - _02027F4A - 2; case 0
+ .short _02027F62 - _02027F4A - 2; case 1
+ .short _02027F70 - _02027F4A - 2; case 2
+ .short _02027F96 - _02027F4A - 2; case 3
+ .short _02027F9A - _02027F4A - 2; case 4
+ .short _02027F9A - _02027F4A - 2; case 5
+_02027F56:
+ mov r1, r12
+ bl FUN_02027ED0
+ add sp, #0x8
+ mov r0, #0x1b
+ pop {r3-r7, pc}
+_02027F62:
+ add r2, sp, #0x0
+ ldrb r3, [r2, #0x0]
+ mov r2, #0x6
+ mul r2, r3
+ lsl r2, r2, #0x18
+ lsr r5, r2, #0x18
+ b _02027F9C
+_02027F70:
+ add r2, sp, #0x0
+ ldrb r3, [r2, #0x1]
+ ldrb r2, [r2, #0x0]
+ ldrb r4, [r1, r3]
+ ldrb r5, [r1, r2]
+ cmp r5, r4
+ blo _02027F8A
+ lsl r4, r2, #0x2
+ add r2, r2, r4
+ add r2, r3, r2
+ lsl r2, r2, #0x18
+ lsr r5, r2, #0x18
+ b _02027F9C
+_02027F8A:
+ lsl r4, r3, #0x2
+ add r3, r3, r4
+ add r2, r2, r3
+ lsl r2, r2, #0x18
+ lsr r5, r2, #0x18
+ b _02027F9C
+_02027F96:
+ mov r5, #0x19
+ b _02027F9C
+_02027F9A:
+ mov r5, #0x1a
+_02027F9C:
+ cmp r6, #0x0
+ beq _02027FA2
+ mov r5, #0x1c
+_02027FA2:
+ mov r4, #0x0
+_02027FA4:
+ ldrb r3, [r1, r4]
+ add r2, r0, r4
+ add r4, r4, #0x1
+ strb r3, [r2, #0x1]
+ cmp r4, #0x5
+ blt _02027FA4
+ strb r5, [r0, #0x0]
+ mov r1, r12
+ strb r1, [r0, #0x6]
+ add r0, r5, #0x0
+ add sp, #0x8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02027FBC
+FUN_02027FBC: ; 0x02027FBC
+ ldrb r2, [r0, #0x0]
+ strb r2, [r1, #0x0]
+ ldrb r2, [r0, #0x1]
+ strb r2, [r1, #0x1]
+ ldrb r2, [r0, #0x2]
+ strb r2, [r1, #0x2]
+ ldrb r2, [r0, #0x3]
+ strb r2, [r1, #0x3]
+ ldrb r2, [r0, #0x4]
+ strb r2, [r1, #0x4]
+ ldrb r2, [r0, #0x5]
+ strb r2, [r1, #0x5]
+ ldrb r0, [r0, #0x6]
+ strb r0, [r1, #0x6]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02027FDC
+FUN_02027FDC: ; 0x02027FDC
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldrb r0, [r4, #0x0]
+ mov r1, #0x5
+ blx _s32_div_f
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x5
+ bhi _0202801C
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02027FFC: ; jump table (using 16-bit offset)
+ .short _02028008 - _02027FFC - 2; case 0
+ .short _0202800C - _02027FFC - 2; case 1
+ .short _02028010 - _02027FFC - 2; case 2
+ .short _02028014 - _02027FFC - 2; case 3
+ .short _02028018 - _02027FFC - 2; case 4
+ .short _0202801C - _02027FFC - 2; case 5
+_02028008:
+ ldrb r0, [r4, #0x1]
+ b _0202803E
+_0202800C:
+ ldrb r0, [r4, #0x2]
+ b _0202803E
+_02028010:
+ ldrb r0, [r4, #0x3]
+ b _0202803E
+_02028014:
+ ldrb r0, [r4, #0x4]
+ b _0202803E
+_02028018:
+ ldrb r0, [r4, #0x5]
+ b _0202803E
+_0202801C:
+ ldrb r0, [r4, #0x1]
+ ldrb r1, [r4, #0x2]
+ cmp r0, r1
+ bhs _02028026
+ add r0, r1, #0x0
+_02028026:
+ ldrb r1, [r4, #0x3]
+ cmp r0, r1
+ bhs _0202802E
+ add r0, r1, #0x0
+_0202802E:
+ ldrb r1, [r4, #0x4]
+ cmp r0, r1
+ bhs _02028036
+ add r0, r1, #0x0
+_02028036:
+ ldrb r1, [r4, #0x5]
+ cmp r0, r1
+ bhs _0202803E
+ add r0, r1, #0x0
+_0202803E:
+ cmp r0, #0x63
+ bls _02028044
+ mov r0, #0x63
+_02028044:
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02028048
+FUN_02028048: ; 0x02028048
+ ldr r3, _02028050 ; =FUN_02022610
+ mov r1, #0x10
+ bx r3
+ nop
+_02028050: .word FUN_02022610
+
+ thumb_func_start FUN_02028054
+FUN_02028054: ; 0x02028054
+ mov r0, #0x32
+ lsl r0, r0, #0x4
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0202805C
+FUN_0202805C: ; 0x0202805C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r4, #0x0
+_02028062:
+ add r0, r5, #0x0
+ bl FUN_02027E44
+ add r4, r4, #0x1
+ add r5, #0x8
+ cmp r4, #0x64
+ blt _02028062
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02028074
+FUN_02028074: ; 0x02028074
+ mov r2, #0x0
+_02028076:
+ lsl r1, r2, #0x3
+ ldrb r1, [r0, r1]
+ cmp r1, #0x1e
+ bne _02028082
+ add r0, r2, #0x0
+ bx lr
+_02028082:
+ add r1, r2, #0x1
+ lsl r1, r1, #0x10
+ lsr r2, r1, #0x10
+ cmp r2, #0x64
+ blo _02028076
+ ldr r0, _02028090 ; =0x0000FFFF
+ bx lr
+ .balign 4
+_02028090: .word 0x0000FFFF
+
+ thumb_func_start FUN_02028094
+FUN_02028094: ; 0x02028094
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ bl FUN_02028074
+ ldr r1, _020280B4 ; =0x0000FFFF
+ add r4, r0, #0x0
+ cmp r4, r1
+ beq _020280B2
+ lsl r1, r4, #0x3
+ add r0, r6, #0x0
+ add r1, r5, r1
+ bl FUN_02027E70
+ add r0, r4, #0x0
+_020280B2:
+ pop {r4-r6, pc}
+ .balign 4
+_020280B4: .word 0x0000FFFF
+
+ thumb_func_start FUN_020280B8
+FUN_020280B8: ; 0x020280B8
+ push {r3, lr}
+ cmp r1, #0x64
+ blo _020280C2
+ mov r0, #0x0
+ pop {r3, pc}
+_020280C2:
+ lsl r1, r1, #0x3
+ add r0, r0, r1
+ bl FUN_02027E44
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_020280D0
+FUN_020280D0: ; 0x020280D0
+ cmp r1, #0x64
+ bhs _020280EA
+_020280D4:
+ lsl r2, r1, #0x3
+ ldrb r2, [r0, r2]
+ cmp r2, #0x1e
+ beq _020280E0
+ add r0, r1, #0x0
+ bx lr
+_020280E0:
+ add r1, r1, #0x1
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ cmp r1, #0x64
+ blo _020280D4
+_020280EA:
+ ldr r0, _020280F0 ; =0x0000FFFF
+ bx lr
+ nop
+_020280F0: .word 0x0000FFFF
+
+ thumb_func_start FUN_020280F4
+FUN_020280F4: ; 0x020280F4
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ mov r0, #0x0
+ mov r7, #0x64
+ str r0, [sp, #0x4]
+_02028100:
+ ldr r0, [sp, #0x4]
+ lsl r0, r0, #0x3
+ ldrb r0, [r5, r0]
+ cmp r0, #0x1e
+ bne _0202815C
+ ldr r6, [sp, #0x4]
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_020280D0
+ add r4, r0, #0x0
+ ldr r0, _02028170 ; =0x0000FFFF
+ cmp r4, r0
+ beq _0202816A
+ ldr r0, [sp, #0x4]
+ sub r0, r4, r0
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x0]
+ cmp r4, r7
+ bhs _02028154
+ cmp r4, r7
+ bhs _02028154
+_0202812E:
+ lsl r0, r4, #0x3
+ lsl r1, r6, #0x3
+ str r0, [sp, #0x8]
+ add r0, r5, r0
+ add r1, r5, r1
+ bl FUN_02027E70
+ ldr r0, [sp, #0x8]
+ add r0, r5, r0
+ bl FUN_02027E44
+ add r0, r6, #0x1
+ lsl r0, r0, #0x10
+ lsr r6, r0, #0x10
+ add r0, r4, #0x1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, r7
+ blo _0202812E
+_02028154:
+ ldr r0, [sp, #0x0]
+ sub r0, r7, r0
+ lsl r0, r0, #0x10
+ lsr r7, r0, #0x10
+_0202815C:
+ ldr r0, [sp, #0x4]
+ add r0, r0, #0x1
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x4]
+ cmp r0, r7
+ blo _02028100
+_0202816A:
+ add sp, #0xc
+ pop {r4-r7, pc}
+ nop
+_02028170: .word 0x0000FFFF
+
+ thumb_func_start FUN_02028174
+FUN_02028174: ; 0x02028174
+ push {r3, lr}
+ cmp r1, #0x64
+ blo _02028182
+ add r0, r2, #0x0
+ bl FUN_02027E44
+ pop {r3, pc}
+_02028182:
+ lsl r1, r1, #0x3
+ add r0, r0, r1
+ add r1, r2, #0x0
+ bl FUN_02027E70
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02028190
+FUN_02028190: ; 0x02028190
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, r2, #0x0
+ add r4, r1, #0x0
+ bl FUN_02027E5C
+ add r6, r0, #0x0
+ cmp r4, #0x64
+ blo _020281AA
+ bl FUN_02027E44
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_020281AA:
+ lsl r0, r4, #0x3
+ add r0, r5, r0
+ add r1, r6, #0x0
+ bl FUN_02027E70
+ add r0, r6, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_020281B8
+FUN_020281B8: ; 0x020281B8
+ push {r4-r6, lr}
+ mov r4, #0x0
+ add r6, r0, #0x0
+ add r5, r4, #0x0
+_020281C0:
+ lsl r0, r5, #0x3
+ add r0, r6, r0
+ bl FUN_02027E34
+ cmp r0, #0x0
+ beq _020281D2
+ add r0, r4, #0x1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+_020281D2:
+ add r0, r5, #0x1
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ cmp r5, #0x64
+ blo _020281C0
+ add r0, r4, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_020281E0
+FUN_020281E0: ; 0x020281E0
+ mov r0, #0x1f
+ lsl r0, r0, #0x6
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020281E8
+FUN_020281E8: ; 0x020281E8
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ mov r2, #0x1f
+ mov r0, #0x0
+ add r1, r7, #0x0
+ lsl r2, r2, #0x6
+ blx MIi_CpuClearFast
+ mov r0, #0x1d
+ lsl r0, r0, #0x4
+ add r1, r0, #0x0
+ add r2, r0, #0x0
+ ldr r4, _02028224 ; =0x0000FFFF
+ mov r5, #0x0
+ add r6, r7, #0x0
+ mov r3, #0x2
+ sub r1, #0x10
+ add r2, #0x1e
+_0202820C:
+ strh r4, [r6, r0]
+ strh r4, [r6, r1]
+ strb r3, [r6, r2]
+ add r5, r5, #0x1
+ add r6, #0x30
+ cmp r5, #0x20
+ blt _0202820C
+ add r0, r7, #0x0
+ bl FUN_0203380C
+ pop {r3-r7, pc}
+ nop
+_02028224: .word 0x0000FFFF
+
+ thumb_func_start FUN_02028228
+FUN_02028228: ; 0x02028228
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0202822C
+FUN_0202822C: ; 0x0202822C
+ push {r3-r7, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r7, r2, #0x0
+ cmp r4, #0x20
+ blt _0202823C
+ bl ErrorHandling
+_0202823C:
+ cmp r7, #0x8
+ bhi _020282D0
+ add r0, r7, r7
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0202824C: ; jump table (using 16-bit offset)
+ .short _0202825E - _0202824C - 2; case 0
+ .short _0202826C - _0202824C - 2; case 1
+ .short _0202827A - _0202824C - 2; case 2
+ .short _02028286 - _0202824C - 2; case 3
+ .short _02028294 - _0202824C - 2; case 4
+ .short _020282A0 - _0202824C - 2; case 5
+ .short _020282AE - _0202824C - 2; case 6
+ .short _020282C6 - _0202824C - 2; case 7
+ .short _020282BA - _0202824C - 2; case 8
+_0202825E:
+ mov r0, #0x30
+ mul r0, r4
+ add r1, r5, r0
+ mov r0, #0x1e
+ lsl r0, r0, #0x4
+ ldr r6, [r1, r0]
+ b _020282D0
+_0202826C:
+ mov r0, #0x30
+ mul r0, r4
+ add r1, r5, r0
+ mov r0, #0x79
+ lsl r0, r0, #0x2
+ ldrh r6, [r1, r0]
+ b _020282D0
+_0202827A:
+ mov r0, #0x30
+ mul r0, r4
+ add r1, r5, r0
+ ldr r0, _020282D4 ; =0x000001E6
+ ldrh r6, [r1, r0]
+ b _020282D0
+_02028286:
+ mov r0, #0x30
+ mul r0, r4
+ add r1, r5, r0
+ mov r0, #0x7a
+ lsl r0, r0, #0x2
+ ldrh r6, [r1, r0]
+ b _020282D0
+_02028294:
+ mov r0, #0x30
+ mul r0, r4
+ add r1, r5, r0
+ ldr r0, _020282D8 ; =0x000001EA
+ ldrh r6, [r1, r0]
+ b _020282D0
+_020282A0:
+ mov r0, #0x30
+ mul r0, r4
+ add r1, r5, r0
+ mov r0, #0x7b
+ lsl r0, r0, #0x2
+ ldrb r6, [r1, r0]
+ b _020282D0
+_020282AE:
+ mov r0, #0x30
+ mul r0, r4
+ add r1, r5, r0
+ ldr r0, _020282DC ; =0x000001ED
+ ldrb r6, [r1, r0]
+ b _020282D0
+_020282BA:
+ mov r0, #0x30
+ mul r0, r4
+ add r1, r5, r0
+ ldr r0, _020282E0 ; =0x000001EE
+ ldrb r6, [r1, r0]
+ b _020282D0
+_020282C6:
+ mov r0, #0x30
+ mul r0, r4
+ add r1, r5, r0
+ ldr r0, _020282E4 ; =0x000001EF
+ ldrb r6, [r1, r0]
+_020282D0:
+ add r0, r6, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+_020282D4: .word 0x000001E6
+_020282D8: .word 0x000001EA
+_020282DC: .word 0x000001ED
+_020282E0: .word 0x000001EE
+_020282E4: .word 0x000001EF
+
+ thumb_func_start FUN_020282E8
+FUN_020282E8: ; 0x020282E8
+ push {r3-r7, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r7, r2, #0x0
+ add r6, r3, #0x0
+ cmp r4, #0x20
+ blt _020282FA
+ bl ErrorHandling
+_020282FA:
+ cmp r7, #0x8
+ bhi _02028378
+ add r0, r7, r7
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0202830A: ; jump table (using 16-bit offset)
+ .short _0202831C - _0202830A - 2; case 0
+ .short _0202832A - _0202830A - 2; case 1
+ .short _02028330 - _0202830A - 2; case 2
+ .short _02028336 - _0202830A - 2; case 3
+ .short _0202833C - _0202830A - 2; case 4
+ .short _02028348 - _0202830A - 2; case 5
+ .short _02028356 - _0202830A - 2; case 6
+ .short _0202836E - _0202830A - 2; case 7
+ .short _02028362 - _0202830A - 2; case 8
+_0202831C:
+ mov r0, #0x30
+ mul r0, r4
+ add r1, r5, r0
+ mov r0, #0x1e
+ lsl r0, r0, #0x4
+ str r6, [r1, r0]
+ pop {r3-r7, pc}
+_0202832A:
+ bl ErrorHandling
+ pop {r3-r7, pc}
+_02028330:
+ bl ErrorHandling
+ pop {r3-r7, pc}
+_02028336:
+ bl ErrorHandling
+ pop {r3-r7, pc}
+_0202833C:
+ mov r0, #0x30
+ mul r0, r4
+ add r1, r5, r0
+ ldr r0, _0202837C ; =0x000001EA
+ strh r6, [r1, r0]
+ pop {r3-r7, pc}
+_02028348:
+ mov r0, #0x30
+ mul r0, r4
+ add r1, r5, r0
+ mov r0, #0x7b
+ lsl r0, r0, #0x2
+ strb r6, [r1, r0]
+ pop {r3-r7, pc}
+_02028356:
+ mov r0, #0x30
+ mul r0, r4
+ add r1, r5, r0
+ ldr r0, _02028380 ; =0x000001ED
+ strb r6, [r1, r0]
+ pop {r3-r7, pc}
+_02028362:
+ mov r0, #0x30
+ mul r0, r4
+ add r1, r5, r0
+ ldr r0, _02028384 ; =0x000001EE
+ strb r6, [r1, r0]
+ pop {r3-r7, pc}
+_0202836E:
+ mov r0, #0x30
+ mul r0, r4
+ add r1, r5, r0
+ ldr r0, _02028388 ; =0x000001EF
+ strb r6, [r1, r0]
+_02028378:
+ pop {r3-r7, pc}
+ nop
+_0202837C: .word 0x000001EA
+_02028380: .word 0x000001ED
+_02028384: .word 0x000001EE
+_02028388: .word 0x000001EF
+
+ thumb_func_start FUN_0202838C
+FUN_0202838C: ; 0x0202838C
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ cmp r4, #0x20
+ blt _0202839A
+ bl ErrorHandling
+_0202839A:
+ mov r0, #0xc
+ add r5, #0x40
+ mul r0, r4
+ add r0, r5, r0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_020283A4
+FUN_020283A4: ; 0x020283A4
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ cmp r4, #0x20
+ blt _020283B2
+ bl ErrorHandling
+_020283B2:
+ mov r0, #0x1d
+ lsl r0, r0, #0x4
+ add r1, r5, r0
+ mov r0, #0x30
+ mul r0, r4
+ add r0, r1, r0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_020283C0
+FUN_020283C0: ; 0x020283C0
+ push {r4-r6, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ cmp r4, #0x20
+ blt _020283D0
+ bl ErrorHandling
+_020283D0:
+ mov r1, #0x1d
+ lsl r1, r1, #0x4
+ add r2, r5, r1
+ mov r1, #0x30
+ mul r1, r4
+ add r1, r2, r1
+ add r0, r6, #0x0
+ mov r2, #0x10
+ bl FUN_02021EF0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_020283E8
+FUN_020283E8: ; 0x020283E8
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ cmp r4, #0x20
+ blt _020283F6
+ bl ErrorHandling
+_020283F6:
+ mov r0, #0x7
+ lsl r0, r0, #0x6
+ add r1, r5, r0
+ mov r0, #0x30
+ mul r0, r4
+ add r0, r1, r0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02028404
+FUN_02028404: ; 0x02028404
+ push {r4-r6, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ cmp r4, #0x20
+ blt _02028414
+ bl ErrorHandling
+_02028414:
+ mov r1, #0x7
+ lsl r1, r1, #0x6
+ add r2, r5, r1
+ mov r1, #0x30
+ mul r1, r4
+ add r1, r2, r1
+ add r0, r6, #0x0
+ mov r2, #0x10
+ bl FUN_02021EF0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202842C
+FUN_0202842C: ; 0x0202842C
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ cmp r4, #0x20
+ blt _0202843A
+ bl ErrorHandling
+_0202843A:
+ mov r0, #0xc
+ add r5, #0x40
+ mul r0, r4
+ add r0, r5, r0
+ blx FUN_0209700C
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02028448
+FUN_02028448: ; 0x02028448
+ push {r4-r6, lr}
+ mov r5, #0x0
+ add r6, r0, #0x0
+ add r4, r5, #0x0
+_02028450:
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ bl FUN_0202842C
+ cmp r0, #0x0
+ beq _0202845E
+ add r5, r5, #0x1
+_0202845E:
+ add r4, r4, #0x1
+ cmp r4, #0x20
+ blt _02028450
+ add r0, r5, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02028468
+FUN_02028468: ; 0x02028468
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r5, r1, #0x0
+ str r0, [sp, #0x0]
+ cmp r5, #0x20
+ blt _02028478
+ bl ErrorHandling
+_02028478:
+ cmp r5, #0x1f
+ bge _020284D2
+ mov r1, #0x7
+ ldr r0, [sp, #0x0]
+ lsl r1, r1, #0x6
+ add r0, r0, r1
+ str r0, [sp, #0x4]
+ mov r0, #0x30
+ add r1, r5, #0x0
+ mul r1, r0
+ ldr r0, [sp, #0x4]
+ add r6, r0, r1
+ ldr r0, [sp, #0x0]
+ add r1, r5, #0x0
+ str r0, [sp, #0x8]
+ add r0, #0x40
+ str r0, [sp, #0x8]
+ mov r0, #0xc
+ mul r1, r0
+ ldr r0, [sp, #0x8]
+ add r4, r0, r1
+_020284A2:
+ add r7, r5, #0x1
+ mov r0, #0x30
+ add r1, r7, #0x0
+ mul r1, r0
+ ldr r0, [sp, #0x4]
+ mov r2, #0x30
+ add r0, r0, r1
+ add r1, r6, #0x0
+ blx MI_CpuCopy8
+ mov r0, #0xc
+ add r1, r7, #0x0
+ mul r1, r0
+ ldr r0, [sp, #0x8]
+ mov r2, #0xc
+ add r0, r0, r1
+ add r1, r4, #0x0
+ blx MI_CpuCopy8
+ add r5, r5, #0x1
+ add r6, #0x30
+ add r4, #0xc
+ cmp r5, #0x1f
+ blt _020284A2
+_020284D2:
+ mov r2, #0x7
+ ldr r1, [sp, #0x0]
+ lsl r2, r2, #0x6
+ add r2, r1, r2
+ mov r1, #0x5d
+ lsl r1, r1, #0x4
+ add r1, r2, r1
+ mov r0, #0x0
+ mov r2, #0x30
+ blx MIi_CpuClearFast
+ ldr r2, [sp, #0x0]
+ mov r1, #0x5d
+ add r2, #0x40
+ lsl r1, r1, #0x2
+ add r1, r2, r1
+ mov r0, #0x0
+ mov r2, #0xc
+ blx MIi_CpuClearFast
+ mov r2, #0x7a
+ lsl r2, r2, #0x4
+ add r1, r2, #0x0
+ ldr r3, _02028514 ; =0x0000FFFF
+ ldr r0, [sp, #0x0]
+ sub r1, #0x10
+ strh r3, [r0, r2]
+ strh r3, [r0, r1]
+ mov r1, #0x2
+ add r2, #0x1e
+ strb r1, [r0, r2]
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+_02028514: .word 0x0000FFFF
+
+ thumb_func_start FUN_02028518
+FUN_02028518: ; 0x02028518
+ push {r4-r7, lr}
+ sub sp, #0xc
+ str r2, [sp, #0x4]
+ add r7, r0, #0x0
+ ldr r0, [sp, #0x4]
+ mov r2, #0x30
+ add r5, r0, #0x0
+ mov r0, #0x7
+ lsl r0, r0, #0x6
+ add r3, r1, #0x0
+ mul r5, r2
+ add r4, r7, r0
+ mul r3, r2
+ str r1, [sp, #0x0]
+ add r0, r4, r5
+ add r1, r4, r3
+ blx MI_CpuCopy8
+ ldr r0, [sp, #0x4]
+ add r6, r7, #0x0
+ mov r3, #0xc
+ add r1, r0, #0x0
+ mul r1, r3
+ add r6, #0x40
+ str r1, [sp, #0x8]
+ add r0, r6, r1
+ ldr r1, [sp, #0x0]
+ add r2, r1, #0x0
+ mul r2, r3
+ add r1, r6, r2
+ add r2, r3, #0x0
+ blx MI_CpuCopy8
+ mov r0, #0x0
+ add r1, r4, r5
+ mov r2, #0x30
+ blx MIi_CpuClearFast
+ ldr r1, [sp, #0x8]
+ mov r0, #0x0
+ add r1, r6, r1
+ mov r2, #0xc
+ blx MIi_CpuClearFast
+ mov r0, #0x1d
+ ldr r1, _02028588 ; =0x0000FFFF
+ add r2, r7, r5
+ lsl r0, r0, #0x4
+ strh r1, [r2, r0]
+ strh r1, [r4, r5]
+ mov r1, #0x2
+ add r0, #0x1e
+ strb r1, [r2, r0]
+ add sp, #0xc
+ pop {r4-r7, pc}
+ nop
+_02028588: .word 0x0000FFFF
+
+ thumb_func_start FUN_0202858C
+FUN_0202858C: ; 0x0202858C
+ push {r3-r7, lr}
+ mov r5, #0x0
+ mvn r5, r5
+ add r6, r0, #0x0
+ mov r4, #0x0
+ add r7, r5, #0x0
+_02028598:
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ bl FUN_0202842C
+ cmp r0, #0x0
+ beq _020285BC
+ mov r0, #0x0
+ mvn r0, r0
+ cmp r5, r0
+ beq _020285C6
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_02028518
+ add r4, r7, #0x0
+ add r5, r7, #0x0
+ b _020285C6
+_020285BC:
+ mov r0, #0x0
+ mvn r0, r0
+ cmp r5, r0
+ bne _020285C6
+ add r5, r4, #0x0
+_020285C6:
+ add r4, r4, #0x1
+ cmp r4, #0x20
+ blt _02028598
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020285D0
+FUN_020285D0: ; 0x020285D0
+ push {r3-r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r0, sp, #0x0
+ bl FUN_020126B4
+ mov r0, #0x30
+ add r2, r4, #0x0
+ mul r2, r0
+ mov r0, #0x7d
+ ldr r1, [sp, #0x0]
+ lsl r0, r0, #0x4
+ add r1, r1, r0
+ ldr r0, _02028604 ; =0x000001EA
+ add r3, r5, r2
+ strh r1, [r3, r0]
+ add r1, r0, #0x2
+ ldr r2, [sp, #0x4]
+ add r0, r0, #0x3
+ strb r2, [r3, r1]
+ ldr r1, [sp, #0x8]
+ strb r1, [r3, r0]
+ add sp, #0x10
+ pop {r3-r5, pc}
+ nop
+_02028604: .word 0x000001EA
+
+ thumb_func_start FUN_02028608
+FUN_02028608: ; 0x02028608
+ push {r4-r6, lr}
+ mov r5, #0x79
+ add r4, r0, #0x0
+ mov r0, #0x30
+ lsl r5, r5, #0x2
+ mul r0, r1
+ add r5, r4, r5
+ ldrh r6, [r5, r0]
+ add r2, r6, r2
+ strh r2, [r5, r0]
+ ldrh r6, [r5, r0]
+ ldr r2, _0202865C ; =0x0000270F
+ cmp r6, r2
+ bls _02028626
+ strh r2, [r5, r0]
+_02028626:
+ ldr r2, _02028660 ; =0x000001E6
+ add r2, r4, r2
+ ldrh r5, [r2, r0]
+ add r3, r5, r3
+ strh r3, [r2, r0]
+ ldrh r5, [r2, r0]
+ ldr r3, _0202865C ; =0x0000270F
+ cmp r5, r3
+ bls _0202863A
+ strh r3, [r2, r0]
+_0202863A:
+ mov r2, #0x7a
+ lsl r2, r2, #0x2
+ add r2, r4, r2
+ ldrh r5, [r2, r0]
+ ldr r3, [sp, #0x10]
+ add r3, r5, r3
+ strh r3, [r2, r0]
+ ldrh r5, [r2, r0]
+ ldr r3, _0202865C ; =0x0000270F
+ cmp r5, r3
+ bls _02028652
+ strh r3, [r2, r0]
+_02028652:
+ add r0, r4, #0x0
+ bl FUN_020285D0
+ pop {r4-r6, pc}
+ nop
+_0202865C: .word 0x0000270F
+_02028660: .word 0x000001E6
+
+ thumb_func_start FUN_02028664
+FUN_02028664: ; 0x02028664
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ mov r3, #0x79
+ mov r0, #0x30
+ add r4, r1, #0x0
+ mul r4, r0
+ lsl r3, r3, #0x2
+ mul r0, r2
+ add r2, r5, r3
+ add r6, r5, r4
+ ldrh r1, [r2, r0]
+ ldrh r3, [r6, r3]
+ add r1, r1, r3
+ strh r1, [r2, r0]
+ ldrh r3, [r2, r0]
+ ldr r1, _020286E0 ; =0x0000270F
+ cmp r3, r1
+ bls _0202868A
+ strh r1, [r2, r0]
+_0202868A:
+ ldr r3, _020286E4 ; =0x000001E6
+ add r6, r5, r4
+ add r2, r5, r3
+ ldrh r1, [r2, r0]
+ ldrh r3, [r6, r3]
+ add r1, r1, r3
+ strh r1, [r2, r0]
+ ldrh r3, [r2, r0]
+ ldr r1, _020286E0 ; =0x0000270F
+ cmp r3, r1
+ bls _020286A2
+ strh r1, [r2, r0]
+_020286A2:
+ mov r3, #0x7a
+ lsl r3, r3, #0x2
+ add r2, r5, r3
+ add r6, r5, r4
+ ldrh r1, [r2, r0]
+ ldrh r3, [r6, r3]
+ add r1, r1, r3
+ strh r1, [r2, r0]
+ ldrh r3, [r2, r0]
+ ldr r1, _020286E0 ; =0x0000270F
+ cmp r3, r1
+ bls _020286BC
+ strh r1, [r2, r0]
+_020286BC:
+ mov r0, #0x7
+ lsl r0, r0, #0x6
+ add r6, r5, r0
+ mov r0, #0x0
+ add r1, r6, r4
+ mov r2, #0x30
+ blx MIi_CpuClearFast
+ mov r0, #0x1d
+ ldr r1, _020286E8 ; =0x0000FFFF
+ add r2, r5, r4
+ lsl r0, r0, #0x4
+ strh r1, [r2, r0]
+ strh r1, [r6, r4]
+ mov r1, #0x2
+ add r0, #0x1e
+ strb r1, [r2, r0]
+ pop {r4-r6, pc}
+ .balign 4
+_020286E0: .word 0x0000270F
+_020286E4: .word 0x000001E6
+_020286E8: .word 0x0000FFFF
+
+ thumb_func_start FUN_020286EC
+FUN_020286EC: ; 0x020286EC
+ ldr r3, _020286F4 ; =FUN_02022610
+ mov r1, #0x1d
+ bx r3
+ nop
+_020286F4: .word FUN_02022610
+
+ thumb_func_start FUN_020286F8
+FUN_020286F8: ; 0x020286F8
+ mov r0, #0x42
+ lsl r0, r0, #0x2
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02028700
+FUN_02028700: ; 0x02028700
+ push {r4-r5}
+ add r5, r2, #0x0
+ mov r3, #0x2c
+ add r2, r1, #0x0
+ mul r2, r3
+ mul r5, r3
+ add r4, r0, r2
+ add r3, r0, r5
+ mov r2, #0x5
+_02028712:
+ ldmia r4!, {r0-r1}
+ stmia r3!, {r0-r1}
+ sub r2, r2, #0x1
+ bne _02028712
+ ldr r0, [r4, #0x0]
+ str r0, [r3, #0x0]
+ pop {r4-r5}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02028724
+FUN_02028724: ; 0x02028724
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r2, #0x42
+ mov r0, #0x0
+ add r1, r4, #0x0
+ lsl r2, r2, #0x2
+ blx MIi_CpuClearFast
+ ldr r0, _0202874C ; =0x0000FFFF
+ mov r1, #0x0
+ add r2, r4, #0x0
+_0202873A:
+ strh r0, [r2, #0x0]
+ strh r0, [r2, #0x10]
+ add r1, r1, #0x1
+ add r2, #0x2c
+ cmp r1, #0x6
+ blt _0202873A
+ ldr r0, _02028750 ; =0x021C59D0
+ str r4, [r0, #0x0]
+ pop {r4, pc}
+ .balign 4
+_0202874C: .word 0x0000FFFF
+_02028750: .word 0x021C59D0
+
+ thumb_func_start FUN_02028754
+FUN_02028754: ; 0x02028754
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ mov r7, #0x0
+_0202875C:
+ mov r4, #0x0
+ cmp r6, #0x0
+ bls _02028770
+_02028762:
+ ldr r0, [r5, #0x28]
+ bl FUN_0201BA10
+ add r4, r4, #0x1
+ str r0, [r5, #0x28]
+ cmp r4, r6
+ blo _02028762
+_02028770:
+ add r7, r7, #0x1
+ add r5, #0x2c
+ cmp r7, #0x6
+ blo _0202875C
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202877C
+FUN_0202877C: ; 0x0202877C
+ mov r2, #0x2c
+ mul r2, r1
+ add r0, r0, r2
+ ldr r0, [r0, #0x24]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02028788
+FUN_02028788: ; 0x02028788
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r0, #0x2c
+ add r4, r1, #0x0
+ mul r4, r0
+ add r0, r5, r4
+ str r2, [r0, #0x24]
+ add r0, r2, #0x0
+ bl FUN_0201BA10
+ add r1, r5, r4
+ str r0, [r1, #0x28]
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020287A4
+FUN_020287A4: ; 0x020287A4
+ ldr r0, [r0, #0x54]
+ bx lr
+
+ thumb_func_start FUN_020287A8
+FUN_020287A8: ; 0x020287A8
+ cmp r2, #0x0
+ bne _020287B4
+ mov r2, #0x2c
+ mul r2, r1
+ add r0, r0, r2
+ bx lr
+_020287B4:
+ mov r2, #0x2c
+ mul r2, r1
+ add r0, r0, r2
+ add r0, #0x10
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020287C0
+FUN_020287C0: ; 0x020287C0
+ push {r4, lr}
+ add r4, r0, #0x0
+ cmp r2, #0x0
+ bne _020287D8
+ mov r2, #0x2c
+ mul r2, r1
+ add r1, r4, r2
+ add r0, r3, #0x0
+ mov r2, #0x8
+ bl FUN_02021EF0
+ pop {r4, pc}
+_020287D8:
+ mov r2, #0x2c
+ mul r2, r1
+ add r1, r4, r2
+ add r0, r3, #0x0
+ add r1, #0x10
+ mov r2, #0x8
+ bl FUN_02021EF0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020287EC
+FUN_020287EC: ; 0x020287EC
+ mov r3, #0x2c
+ mul r3, r1
+ add r0, r0, r3
+ add r0, #0x20
+ strb r2, [r0, #0x0]
+ bx lr
+
+ thumb_func_start FUN_020287F8
+FUN_020287F8: ; 0x020287F8
+ mov r2, #0x2c
+ mul r2, r1
+ add r0, r0, r2
+ add r0, #0x20
+ ldrb r0, [r0, #0x0]
+ bx lr
+
+ thumb_func_start FUN_02028804
+FUN_02028804: ; 0x02028804
+ mov r2, #0x2c
+ mul r2, r1
+ add r0, r0, r2
+ add r0, #0x21
+ ldrb r0, [r0, #0x0]
+ bx lr
+
+ thumb_func_start FUN_02028810
+FUN_02028810: ; 0x02028810
+ mov r3, #0x2c
+ mul r3, r1
+ add r0, r0, r3
+ add r0, #0x21
+ strb r2, [r0, #0x0]
+ bx lr
+
+ thumb_func_start FUN_0202881C
+FUN_0202881C: ; 0x0202881C
+ ldr r3, _02028824 ; =FUN_02022610
+ mov r1, #0x11
+ bx r3
+ nop
+_02028824: .word FUN_02022610
+
+ thumb_func_start FUN_02028828
+FUN_02028828: ; 0x02028828
+ push {r3, lr}
+ mov r2, #0x2c
+ mul r2, r1
+ add r0, r0, r2
+ bl FUN_0202888C
+ cmp r0, #0x0
+ bne _0202883C
+ mov r0, #0x1
+ pop {r3, pc}
+_0202883C:
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_02028840
+FUN_02028840: ; 0x02028840
+ mov r2, #0x2c
+ add r3, r0, #0x0
+ mul r2, r1
+ add r1, r3, r2
+ ldr r3, _02028850 ; =FUN_020288AC
+ add r0, #0x2c
+ bx r3
+ nop
+_02028850: .word FUN_020288AC
+
+ thumb_func_start FUN_02028854
+FUN_02028854: ; 0x02028854
+ push {r3-r7, lr}
+ add r6, r1, #0x0
+ ldrh r1, [r6, #0x0]
+ add r5, r0, #0x0
+ ldr r0, _02028888 ; =0x0000FFFF
+ cmp r1, r0
+ bne _02028866
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_02028866:
+ mov r4, #0x0
+ mov r7, #0x8
+_0202886A:
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ add r2, r7, #0x0
+ bl StringNotEqualN
+ cmp r0, #0x0
+ bne _0202887C
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0202887C:
+ add r4, r4, #0x1
+ add r5, #0x2c
+ cmp r4, #0x6
+ blt _0202886A
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+_02028888: .word 0x0000FFFF
+
+ thumb_func_start FUN_0202888C
+FUN_0202888C: ; 0x0202888C
+ ldrh r2, [r0, #0x0]
+ ldr r1, _020288A8 ; =0x0000FFFF
+ cmp r2, r1
+ bne _02028898
+ mov r0, #0x1
+ bx lr
+_02028898:
+ ldrh r0, [r0, #0x10]
+ cmp r0, r1
+ bne _020288A2
+ mov r0, #0x1
+ bx lr
+_020288A2:
+ mov r0, #0x0
+ bx lr
+ nop
+_020288A8: .word 0x0000FFFF
+
+ thumb_func_start FUN_020288AC
+FUN_020288AC: ; 0x020288AC
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r0, #0x10
+ add r1, #0x10
+ mov r2, #0x8
+ bl StringNotEqualN
+ cmp r0, #0x0
+ beq _020288C4
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_020288C4:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r2, #0x8
+ bl StringNotEqualN
+ cmp r0, #0x0
+ beq _020288D6
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_020288D6:
+ add r0, r5, #0x0
+ add r0, #0x20
+ ldrb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x20
+ ldrb r0, [r0, #0x0]
+ cmp r1, r0
+ beq _020288EA
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_020288EA:
+ add r0, r5, #0x0
+ add r0, #0x21
+ ldrb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x21
+ ldrb r0, [r0, #0x0]
+ cmp r1, r0
+ beq _020288FE
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_020288FE:
+ ldr r1, [r5, #0x24]
+ ldr r0, [r4, #0x24]
+ cmp r1, r0
+ bne _0202890A
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0202890A:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02028910
+FUN_02028910: ; 0x02028910
+ mov r1, #0x0
+ strh r1, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02028918
+FUN_02028918: ; 0x02028918
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, _0202892C ; =0x0000C350
+ add r4, r1, #0x0
+ cmp r4, r0
+ bls _02028928
+ bl ErrorHandling
+_02028928:
+ strh r4, [r5, #0x0]
+ pop {r3-r5, pc}
+ .balign 4
+_0202892C: .word 0x0000C350
+
+ thumb_func_start FUN_02028930
+FUN_02028930: ; 0x02028930
+ ldrh r0, [r0, #0x0]
+ bx lr
+
+ thumb_func_start FUN_02028934
+FUN_02028934: ; 0x02028934
+ ldrh r3, [r0, #0x0]
+ ldr r2, _02028950 ; =0x0000C350
+ cmp r3, r2
+ blo _02028940
+ mov r0, #0x0
+ bx lr
+_02028940:
+ add r1, r3, r1
+ strh r1, [r0, #0x0]
+ ldrh r1, [r0, #0x0]
+ cmp r1, r2
+ bls _0202894C
+ strh r2, [r0, #0x0]
+_0202894C:
+ mov r0, #0x1
+ bx lr
+ .balign 4
+_02028950: .word 0x0000C350
+
+ thumb_func_start FUN_02028954
+FUN_02028954: ; 0x02028954
+ ldrh r0, [r0, #0x0]
+ add r1, r1, r0
+ ldr r0, _02028968 ; =0x0000C350
+ cmp r1, r0
+ bhi _02028962
+ mov r0, #0x1
+ bx lr
+_02028962:
+ mov r0, #0x0
+ bx lr
+ nop
+_02028968: .word 0x0000C350
+
+ thumb_func_start FUN_0202896C
+FUN_0202896C: ; 0x0202896C
+ ldrh r2, [r0, #0x0]
+ cmp r2, r1
+ bhs _02028976
+ mov r0, #0x0
+ bx lr
+_02028976:
+ sub r1, r2, r1
+ strh r1, [r0, #0x0]
+ mov r0, #0x1
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02028980
+FUN_02028980: ; 0x02028980
+ mov r0, #0x46
+ lsl r0, r0, #0x4
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02028988
+FUN_02028988: ; 0x02028988
+ ldr r3, _02028990 ; =FUN_020DF4A4
+ mov r1, #0x0
+ mov r2, #0x70
+ bx r3
+ .balign 4
+_02028990: .word FUN_020DF4A4
+
+ thumb_func_start FUN_02028994
+FUN_02028994: ; 0x02028994
+ ldr r3, _020289A0 ; =FUN_020DF4A4
+ mov r2, #0x46
+ mov r1, #0x0
+ lsl r2, r2, #0x4
+ bx r3
+ nop
+_020289A0: .word FUN_020DF4A4
+
+ thumb_func_start FUN_020289A4
+FUN_020289A4: ; 0x020289A4
+ ldr r3, _020289AC ; =FUN_02022610
+ mov r1, #0x12
+ bx r3
+ nop
+_020289AC: .word FUN_02022610
+
+ thumb_func_start FUN_020289B0
+FUN_020289B0: ; 0x020289B0
+ push {r3-r7, lr}
+ sub sp, #0x10
+ add r7, r0, #0x0
+ cmp r1, #0x1
+ beq _020289C0
+ add sp, #0x10
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_020289C0:
+ add r0, sp, #0x0
+ bl FUN_020126B4
+ ldr r0, [r7, #0x0]
+ lsl r1, r0, #0x15
+ lsr r3, r1, #0x1c
+ beq _02028A18
+ lsl r1, r0, #0x19
+ lsr r2, r1, #0x19
+ ldr r1, [sp, #0x0]
+ cmp r2, r1
+ bne _020289F2
+ ldr r1, [sp, #0x4]
+ cmp r3, r1
+ bne _020289F2
+ lsl r1, r0, #0xd
+ lsr r2, r1, #0x1b
+ ldr r1, [sp, #0x8]
+ cmp r2, r1
+ bne _020289F2
+ lsl r0, r0, #0x12
+ lsr r1, r0, #0x1d
+ ldr r0, [sp, #0xc]
+ cmp r1, r0
+ beq _02028A18
+_020289F2:
+ mov r0, #0x3f
+ lsl r0, r0, #0x4
+ mov r5, #0x9
+ add r6, r7, r0
+_020289FA:
+ add r4, r6, #0x0
+ sub r4, #0x70
+ add r3, r6, #0x0
+ mov r2, #0xe
+_02028A02:
+ ldmia r4!, {r0-r1}
+ stmia r3!, {r0-r1}
+ sub r2, r2, #0x1
+ bne _02028A02
+ sub r5, r5, #0x1
+ sub r6, #0x70
+ cmp r5, #0x1
+ bge _020289FA
+ add r0, r7, #0x0
+ bl FUN_02028988
+_02028A18:
+ add r0, r7, #0x0
+ add sp, #0x10
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02028A20
+FUN_02028A20: ; 0x02028A20
+ push {r4, lr}
+ sub sp, #0x20
+ add r4, r0, #0x0
+ cmp r1, #0x1
+ beq _02028A30
+ add sp, #0x20
+ mov r0, #0x0
+ pop {r4, pc}
+_02028A30:
+ add r0, sp, #0x0
+ bl FUN_020126B4
+ ldr r0, [r4, #0x0]
+ lsl r0, r0, #0x19
+ lsr r0, r0, #0x19
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #0x0]
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x1c
+ str r0, [sp, #0x14]
+ ldr r0, [r4, #0x0]
+ lsl r0, r0, #0xd
+ lsr r0, r0, #0x1b
+ str r0, [sp, #0x18]
+ ldr r0, [r4, #0x0]
+ lsl r0, r0, #0x12
+ lsr r0, r0, #0x1d
+ str r0, [sp, #0x1c]
+ add r0, sp, #0x0
+ bl FUN_02012710
+ add r4, r0, #0x0
+ add r0, sp, #0x10
+ bl FUN_02012710
+ ldr r2, [sp, #0x4]
+ sub r0, r4, r0
+ cmp r2, #0xc
+ bne _02028A7E
+ ldr r1, [sp, #0x8]
+ cmp r1, #0x1f
+ bne _02028A7E
+ ldr r1, [sp, #0x14]
+ cmp r1, #0x1
+ bne _02028A7E
+ ldr r1, [sp, #0x18]
+ cmp r1, #0x1
+ beq _02028A94
+_02028A7E:
+ cmp r2, #0x1
+ bne _02028AAC
+ ldr r1, [sp, #0x8]
+ cmp r1, #0x1
+ bne _02028AAC
+ ldr r1, [sp, #0x14]
+ cmp r1, #0xc
+ bne _02028AAC
+ ldr r1, [sp, #0x18]
+ cmp r1, #0x1f
+ bne _02028AAC
+_02028A94:
+ ldr r1, [sp, #0x0]
+ ldr r0, [sp, #0x10]
+ sub r1, r1, r0
+ cmp r1, #0x2
+ bge _02028AA6
+ mov r0, #0x1
+ mvn r0, r0
+ cmp r1, r0
+ bgt _02028ACC
+_02028AA6:
+ add sp, #0x20
+ mov r0, #0x1
+ pop {r4, pc}
+_02028AAC:
+ mov r1, #0x1
+ mvn r1, r1
+ cmp r0, r1
+ ble _02028AB8
+ cmp r0, #0x2
+ blt _02028ABE
+_02028AB8:
+ add sp, #0x20
+ mov r0, #0x1
+ pop {r4, pc}
+_02028ABE:
+ ldr r1, [sp, #0x0]
+ ldr r0, [sp, #0x10]
+ cmp r1, r0
+ beq _02028ACC
+ add sp, #0x20
+ mov r0, #0x1
+ pop {r4, pc}
+_02028ACC:
+ mov r0, #0x0
+ add sp, #0x20
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02028AD4
+FUN_02028AD4: ; 0x02028AD4
+ push {r4, lr}
+ add r4, r1, #0x0
+ cmp r0, #0x0
+ beq _02028B12
+ cmp r2, #0x4
+ bhi _02028B12
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_02028AEC: ; jump table (using 16-bit offset)
+ .short _02028AF6 - _02028AEC - 2; case 0
+ .short _02028AFC - _02028AEC - 2; case 1
+ .short _02028B02 - _02028AEC - 2; case 2
+ .short _02028B08 - _02028AEC - 2; case 3
+ .short _02028B0E - _02028AEC - 2; case 4
+_02028AF6:
+ bl FUN_02028B1C
+ b _02028B12
+_02028AFC:
+ bl FUN_02028B5C
+ b _02028B12
+_02028B02:
+ bl FUN_02028BF0
+ b _02028B12
+_02028B08:
+ bl FUN_02028BFC
+ b _02028B12
+_02028B0E:
+ bl FUN_02028C08
+_02028B12:
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02028B1C
+FUN_02028B1C: ; 0x02028B1C
+ push {r4-r5}
+ ldr r3, [r0, #0x0]
+ lsl r2, r3, #0x19
+ lsr r5, r2, #0x19
+ ldr r2, [r1, #0x0]
+ lsl r4, r2, #0x19
+ lsr r4, r4, #0x19
+ cmp r5, r4
+ bne _02028B52
+ lsl r4, r3, #0x15
+ lsr r5, r4, #0x1c
+ lsl r4, r2, #0x15
+ lsr r4, r4, #0x1c
+ cmp r5, r4
+ bne _02028B52
+ lsl r4, r3, #0xd
+ lsr r5, r4, #0x1b
+ lsl r4, r2, #0xd
+ lsr r4, r4, #0x1b
+ cmp r5, r4
+ bne _02028B52
+ lsl r3, r3, #0x12
+ lsl r2, r2, #0x12
+ lsr r3, r3, #0x1d
+ lsr r2, r2, #0x1d
+ cmp r3, r2
+ beq _02028B56
+_02028B52:
+ ldr r1, [r1, #0x0]
+ str r1, [r0, #0x0]
+_02028B56:
+ pop {r4-r5}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02028B5C
+FUN_02028B5C: ; 0x02028B5C
+ push {r3, lr}
+ ldrb r2, [r1, #0x0]
+ cmp r2, #0x23
+ bhi _02028BEE
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_02028B70: ; jump table (using 16-bit offset)
+ .short _02028BEE - _02028B70 - 2; case 0
+ .short _02028BB8 - _02028B70 - 2; case 1
+ .short _02028BB8 - _02028B70 - 2; case 2
+ .short _02028BB8 - _02028B70 - 2; case 3
+ .short _02028BB8 - _02028B70 - 2; case 4
+ .short _02028BB8 - _02028B70 - 2; case 5
+ .short _02028BB8 - _02028B70 - 2; case 6
+ .short _02028BB8 - _02028B70 - 2; case 7
+ .short _02028BB8 - _02028B70 - 2; case 8
+ .short _02028BC0 - _02028B70 - 2; case 9
+ .short _02028BC0 - _02028B70 - 2; case 10
+ .short _02028BC8 - _02028B70 - 2; case 11
+ .short _02028BD0 - _02028B70 - 2; case 12
+ .short _02028BD8 - _02028B70 - 2; case 13
+ .short _02028BD8 - _02028B70 - 2; case 14
+ .short _02028BD8 - _02028B70 - 2; case 15
+ .short _02028BB8 - _02028B70 - 2; case 16
+ .short _02028BB8 - _02028B70 - 2; case 17
+ .short _02028BE0 - _02028B70 - 2; case 18
+ .short _02028BE8 - _02028B70 - 2; case 19
+ .short _02028BE8 - _02028B70 - 2; case 20
+ .short _02028BE8 - _02028B70 - 2; case 21
+ .short _02028BE8 - _02028B70 - 2; case 22
+ .short _02028BE8 - _02028B70 - 2; case 23
+ .short _02028BE8 - _02028B70 - 2; case 24
+ .short _02028BE8 - _02028B70 - 2; case 25
+ .short _02028BE8 - _02028B70 - 2; case 26
+ .short _02028BE8 - _02028B70 - 2; case 27
+ .short _02028BE8 - _02028B70 - 2; case 28
+ .short _02028BE8 - _02028B70 - 2; case 29
+ .short _02028BE8 - _02028B70 - 2; case 30
+ .short _02028BEE - _02028B70 - 2; case 31
+ .short _02028BE8 - _02028B70 - 2; case 32
+ .short _02028BE8 - _02028B70 - 2; case 33
+ .short _02028BB8 - _02028B70 - 2; case 34
+ .short _02028BB8 - _02028B70 - 2; case 35
+_02028BB8:
+ add r0, r0, #0x4
+ bl FUN_02028CE8
+ pop {r3, pc}
+_02028BC0:
+ add r0, r0, #0x4
+ bl FUN_02028D98
+ pop {r3, pc}
+_02028BC8:
+ add r0, r0, #0x4
+ bl FUN_02028D44
+ pop {r3, pc}
+_02028BD0:
+ add r0, r0, #0x4
+ bl FUN_02028D24
+ pop {r3, pc}
+_02028BD8:
+ add r0, r0, #0x4
+ bl FUN_02028DFC
+ pop {r3, pc}
+_02028BE0:
+ add r0, r0, #0x4
+ bl FUN_02028E44
+ pop {r3, pc}
+_02028BE8:
+ add r0, r0, #0x4
+ bl FUN_02028E8C
+_02028BEE:
+ pop {r3, pc}
+
+ thumb_func_start FUN_02028BF0
+FUN_02028BF0: ; 0x02028BF0
+ ldrh r2, [r1, #0x0]
+ strh r2, [r0, #0x14]
+ ldrh r1, [r1, #0x2]
+ strh r1, [r0, #0x16]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02028BFC
+FUN_02028BFC: ; 0x02028BFC
+ ldrh r2, [r1, #0x0]
+ strh r2, [r0, #0x18]
+ ldrh r1, [r1, #0x2]
+ strh r1, [r0, #0x1a]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02028C08
+FUN_02028C08: ; 0x02028C08
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ bl FUN_02028CA8
+ ldrb r1, [r4, #0x0]
+ cmp r1, #0x10
+ bhi _02028C6E
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02028C24: ; jump table (using 16-bit offset)
+ .short _02028C6E - _02028C24 - 2; case 0
+ .short _02028C46 - _02028C24 - 2; case 1
+ .short _02028C46 - _02028C24 - 2; case 2
+ .short _02028C46 - _02028C24 - 2; case 3
+ .short _02028C46 - _02028C24 - 2; case 4
+ .short _02028C46 - _02028C24 - 2; case 5
+ .short _02028C4E - _02028C24 - 2; case 6
+ .short _02028C56 - _02028C24 - 2; case 7
+ .short _02028C5E - _02028C24 - 2; case 8
+ .short _02028C56 - _02028C24 - 2; case 9
+ .short _02028C5E - _02028C24 - 2; case 10
+ .short _02028C46 - _02028C24 - 2; case 11
+ .short _02028C5E - _02028C24 - 2; case 12
+ .short _02028C68 - _02028C24 - 2; case 13
+ .short _02028C5E - _02028C24 - 2; case 14
+ .short _02028C56 - _02028C24 - 2; case 15
+ .short _02028C5E - _02028C24 - 2; case 16
+_02028C46:
+ add r1, r4, #0x0
+ bl FUN_02028ED4
+ pop {r3-r5, pc}
+_02028C4E:
+ add r1, r4, #0x0
+ bl FUN_02028F10
+ pop {r3-r5, pc}
+_02028C56:
+ add r1, r4, #0x0
+ bl FUN_02028F2C
+ pop {r3-r5, pc}
+_02028C5E:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02028F60
+ pop {r3-r5, pc}
+_02028C68:
+ add r1, r4, #0x0
+ bl FUN_02028F94
+_02028C6E:
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02028C70
+FUN_02028C70: ; 0x02028C70
+ push {r3-r4}
+ mov r3, #0x0
+ add r4, r0, #0x0
+ mov r1, #0x3f
+_02028C78:
+ ldr r2, [r4, #0x0]
+ tst r2, r1
+ bne _02028C86
+ lsl r1, r3, #0x2
+ add r0, r0, r1
+ pop {r3-r4}
+ bx lr
+_02028C86:
+ add r3, r3, #0x1
+ add r4, r4, #0x4
+ cmp r3, #0x4
+ blo _02028C78
+ mov r3, #0x0
+ add r2, r0, #0x0
+_02028C92:
+ ldr r1, [r2, #0x4]
+ add r3, r3, #0x1
+ stmia r2!, {r1}
+ cmp r3, #0x3
+ blo _02028C92
+ lsl r2, r3, #0x2
+ mov r1, #0x0
+ str r1, [r0, r2]
+ add r0, r0, r2
+ pop {r3-r4}
+ bx lr
+
+ thumb_func_start FUN_02028CA8
+FUN_02028CA8: ; 0x02028CA8
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r1, #0x0
+ add r2, r4, #0x0
+_02028CB0:
+ ldrb r0, [r2, #0x1c]
+ cmp r0, #0x0
+ bne _02028CC0
+ mov r0, #0x2a
+ add r4, #0x1c
+ mul r0, r1
+ add r0, r4, r0
+ pop {r4, pc}
+_02028CC0:
+ add r1, r1, #0x1
+ add r2, #0x2a
+ cmp r1, #0x2
+ blo _02028CB0
+ add r0, r4, #0x0
+ add r1, r4, #0x0
+ add r0, #0x1c
+ add r1, #0x46
+ mov r2, #0x2a
+ blx FUN_020DF438
+ add r4, #0x46
+ add r0, r4, #0x0
+ mov r1, #0x0
+ mov r2, #0x2a
+ blx FUN_020DF4A4
+ add r0, r4, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02028CE8
+FUN_02028CE8: ; 0x02028CE8
+ push {r4, lr}
+ add r4, r1, #0x0
+ mov r2, #0x0
+ add r3, r0, #0x0
+_02028CF0:
+ ldr r1, [r3, #0x0]
+ cmp r1, #0x0
+ beq _02028CFE
+ add r2, r2, #0x1
+ add r3, r3, #0x4
+ cmp r2, #0x4
+ blo _02028CF0
+_02028CFE:
+ cmp r2, #0x0
+ beq _02028D14
+ lsl r2, r2, #0x2
+ add r2, r0, r2
+ sub r2, r2, #0x4
+ ldr r3, [r2, #0x0]
+ mov r2, #0x3f
+ ldrb r1, [r4, #0x0]
+ and r2, r3
+ cmp r1, r2
+ beq _02028D20
+_02028D14:
+ bl FUN_02028C70
+ ldrb r2, [r4, #0x0]
+ mov r1, #0x3f
+ and r1, r2
+ str r1, [r0, #0x0]
+_02028D20:
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02028D24
+FUN_02028D24: ; 0x02028D24
+ push {r4, lr}
+ add r4, r1, #0x0
+ bl FUN_02028C70
+ ldrb r2, [r4, #0x0]
+ mov r1, #0x3f
+ and r1, r2
+ ldrh r2, [r4, #0x2]
+ lsl r3, r2, #0x10
+ ldrh r2, [r4, #0x4]
+ lsl r2, r2, #0x16
+ lsr r2, r2, #0x10
+ orr r2, r3
+ orr r1, r2
+ str r1, [r0, #0x0]
+ pop {r4, pc}
+
+ thumb_func_start FUN_02028D44
+FUN_02028D44: ; 0x02028D44
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ mov r2, #0x0
+ mov r3, #0x3f
+_02028D4C:
+ lsl r1, r2, #0x2
+ ldr r5, [r0, r1]
+ and r5, r3
+ cmp r5, #0xb
+ bne _02028D72
+ mov r3, #0x0
+ str r3, [r0, r1]
+ cmp r2, #0x3
+ bhs _02028D7C
+_02028D5E:
+ lsl r3, r2, #0x2
+ add r1, r0, r3
+ ldr r1, [r1, #0x4]
+ str r1, [r0, r3]
+ add r1, r2, #0x1
+ lsl r1, r1, #0x10
+ lsr r2, r1, #0x10
+ cmp r2, #0x3
+ blo _02028D5E
+ b _02028D7C
+_02028D72:
+ add r1, r2, #0x1
+ lsl r1, r1, #0x10
+ lsr r2, r1, #0x10
+ cmp r2, #0x4
+ blo _02028D4C
+_02028D7C:
+ bl FUN_02028C70
+ ldrb r2, [r4, #0x0]
+ mov r1, #0x3f
+ and r1, r2
+ ldrh r2, [r4, #0x2]
+ lsl r3, r2, #0x10
+ ldrh r2, [r4, #0x4]
+ lsl r2, r2, #0x16
+ lsr r2, r2, #0x10
+ orr r2, r3
+ orr r1, r2
+ str r1, [r0, #0x0]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02028D98
+FUN_02028D98: ; 0x02028D98
+ push {r4-r6, lr}
+ add r4, r1, #0x0
+ mov r6, #0x0
+ mov r1, #0x3f
+_02028DA0:
+ lsl r5, r6, #0x2
+ ldr r3, [r0, r5]
+ add r2, r3, #0x0
+ and r2, r1
+ cmp r2, #0x9
+ bne _02028DD4
+ lsr r3, r3, #0x10
+ lsl r3, r3, #0x10
+ ldrh r2, [r4, #0x2]
+ lsr r3, r3, #0x10
+ cmp r2, r3
+ bne _02028DD4
+ mov r1, #0x0
+ str r1, [r0, r5]
+ cmp r6, #0x3
+ bhs _02028DDE
+_02028DC0:
+ lsl r2, r6, #0x2
+ add r1, r0, r2
+ ldr r1, [r1, #0x4]
+ str r1, [r0, r2]
+ add r1, r6, #0x1
+ lsl r1, r1, #0x10
+ lsr r6, r1, #0x10
+ cmp r6, #0x3
+ blo _02028DC0
+ b _02028DDE
+_02028DD4:
+ add r2, r6, #0x1
+ lsl r2, r2, #0x10
+ lsr r6, r2, #0x10
+ cmp r6, #0x4
+ blo _02028DA0
+_02028DDE:
+ bl FUN_02028C70
+ ldrb r2, [r4, #0x0]
+ mov r1, #0x3f
+ and r1, r2
+ ldrh r2, [r4, #0x2]
+ lsl r3, r2, #0x10
+ ldrh r2, [r4, #0x4]
+ lsl r2, r2, #0x16
+ lsr r2, r2, #0x10
+ orr r2, r3
+ orr r1, r2
+ str r1, [r0, #0x0]
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02028DFC
+FUN_02028DFC: ; 0x02028DFC
+ push {r4, lr}
+ add r4, r1, #0x0
+ mov r2, #0x0
+ add r3, r0, #0x0
+_02028E04:
+ ldr r1, [r3, #0x0]
+ cmp r1, #0x0
+ beq _02028E12
+ add r2, r2, #0x1
+ add r3, r3, #0x4
+ cmp r2, #0x4
+ blo _02028E04
+_02028E12:
+ cmp r2, #0x0
+ beq _02028E30
+ lsl r1, r2, #0x2
+ add r1, r0, r1
+ sub r1, r1, #0x4
+ ldr r3, [r1, #0x0]
+ mov r1, #0x3f
+ ldrb r2, [r4, #0x0]
+ and r1, r3
+ cmp r2, r1
+ bne _02028E30
+ ldrh r2, [r4, #0x2]
+ lsr r1, r3, #0x10
+ cmp r2, r1
+ beq _02028E42
+_02028E30:
+ bl FUN_02028C70
+ ldrh r1, [r4, #0x2]
+ ldrb r2, [r4, #0x0]
+ lsl r3, r1, #0x10
+ mov r1, #0x3f
+ and r1, r2
+ orr r1, r3
+ str r1, [r0, #0x0]
+_02028E42:
+ pop {r4, pc}
+
+ thumb_func_start FUN_02028E44
+FUN_02028E44: ; 0x02028E44
+ push {r4, lr}
+ add r4, r1, #0x0
+ mov r2, #0x0
+ add r3, r0, #0x0
+_02028E4C:
+ ldr r1, [r3, #0x0]
+ cmp r1, #0x0
+ beq _02028E5A
+ add r2, r2, #0x1
+ add r3, r3, #0x4
+ cmp r2, #0x4
+ blo _02028E4C
+_02028E5A:
+ cmp r2, #0x0
+ beq _02028E78
+ lsl r1, r2, #0x2
+ add r1, r0, r1
+ sub r1, r1, #0x4
+ ldr r3, [r1, #0x0]
+ mov r1, #0x3f
+ ldrb r2, [r4, #0x0]
+ and r1, r3
+ cmp r2, r1
+ bne _02028E78
+ ldrh r2, [r4, #0x6]
+ lsr r1, r3, #0x10
+ cmp r2, r1
+ beq _02028E8A
+_02028E78:
+ bl FUN_02028C70
+ ldrh r1, [r4, #0x6]
+ ldrb r2, [r4, #0x0]
+ lsl r3, r1, #0x10
+ mov r1, #0x3f
+ and r1, r2
+ orr r1, r3
+ str r1, [r0, #0x0]
+_02028E8A:
+ pop {r4, pc}
+
+ thumb_func_start FUN_02028E8C
+FUN_02028E8C: ; 0x02028E8C
+ push {r4, lr}
+ add r4, r1, #0x0
+ mov r2, #0x0
+ add r3, r0, #0x0
+_02028E94:
+ ldr r1, [r3, #0x0]
+ cmp r1, #0x0
+ beq _02028EA2
+ add r2, r2, #0x1
+ add r3, r3, #0x4
+ cmp r2, #0x4
+ blo _02028E94
+_02028EA2:
+ cmp r2, #0x0
+ beq _02028EC0
+ lsl r1, r2, #0x2
+ add r1, r0, r1
+ sub r1, r1, #0x4
+ ldr r3, [r1, #0x0]
+ mov r1, #0x3f
+ ldrb r2, [r4, #0x0]
+ and r1, r3
+ cmp r2, r1
+ bne _02028EC0
+ ldrh r2, [r4, #0x2]
+ lsr r1, r3, #0x10
+ cmp r2, r1
+ beq _02028ED2
+_02028EC0:
+ bl FUN_02028C70
+ ldrh r1, [r4, #0x2]
+ ldrb r2, [r4, #0x0]
+ lsl r3, r1, #0x10
+ mov r1, #0x3f
+ and r1, r2
+ orr r1, r3
+ str r1, [r0, #0x0]
+_02028ED2:
+ pop {r4, pc}
+
+ thumb_func_start FUN_02028ED4
+FUN_02028ED4: ; 0x02028ED4
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ ldrb r0, [r4, #0x0]
+ strb r0, [r5, #0x0]
+ ldrb r3, [r4, #0x1]
+ lsl r1, r3, #0x1c
+ lsr r2, r1, #0x1a
+ lsl r1, r3, #0x1b
+ lsr r1, r1, #0x1f
+ lsl r0, r3, #0x1a
+ lsl r1, r1, #0x1
+ orr r1, r2
+ lsr r0, r0, #0x1f
+ orr r0, r1
+ strb r0, [r5, #0x1]
+ add r0, r4, #0x2
+ add r1, r5, #0x2
+ mov r2, #0x8
+ bl FUN_020292D4
+ add r4, #0x12
+ add r5, #0x12
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ mov r2, #0x8
+ bl FUN_020292D4
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02028F10
+FUN_02028F10: ; 0x02028F10
+ add r2, r0, #0x0
+ ldrb r0, [r1, #0x0]
+ ldr r3, _02028F28 ; =FUN_020292D4
+ strb r0, [r2, #0x0]
+ ldrb r0, [r1, #0x1]
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x1f
+ strb r0, [r2, #0x1]
+ add r0, r1, #0x2
+ add r1, r2, #0x2
+ mov r2, #0x8
+ bx r3
+ .balign 4
+_02028F28: .word FUN_020292D4
+
+ thumb_func_start FUN_02028F2C
+FUN_02028F2C: ; 0x02028F2C
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ ldrb r0, [r4, #0x0]
+ mov r2, #0x8
+ strb r0, [r5, #0x0]
+ ldrb r0, [r4, #0x1]
+ lsl r1, r0, #0x1b
+ lsr r1, r1, #0x1f
+ lsl r0, r0, #0x18
+ lsl r1, r1, #0x2
+ lsr r0, r0, #0x1e
+ orr r0, r1
+ strb r0, [r5, #0x1]
+ add r0, r4, #0x2
+ add r1, r5, #0x2
+ bl FUN_020292D4
+ add r4, #0x22
+ add r5, #0x12
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ mov r2, #0xc
+ bl FUN_020292D4
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02028F60
+FUN_02028F60: ; 0x02028F60
+ push {r4, lr}
+ add r4, r1, #0x0
+ mov r3, #0x0
+ add r2, r0, #0x0
+_02028F68:
+ ldrb r1, [r2, #0x1c]
+ cmp r1, #0x0
+ beq _02028F76
+ add r3, r3, #0x1
+ add r2, #0x2a
+ cmp r3, #0x2
+ blo _02028F68
+_02028F76:
+ cmp r3, #0x0
+ beq _02028F8A
+ mov r1, #0x2a
+ mul r1, r3
+ add r1, r0, r1
+ sub r1, #0xe
+ ldrb r2, [r4, #0x0]
+ ldrb r1, [r1, #0x0]
+ cmp r2, r1
+ beq _02028F92
+_02028F8A:
+ bl FUN_02028CA8
+ ldrb r1, [r4, #0x0]
+ strb r1, [r0, #0x0]
+_02028F92:
+ pop {r4, pc}
+
+ thumb_func_start FUN_02028F94
+FUN_02028F94: ; 0x02028F94
+ ldrb r2, [r1, #0x0]
+ strb r2, [r0, #0x0]
+ ldrb r1, [r1, #0x1]
+ lsl r1, r1, #0x1c
+ lsr r1, r1, #0x1c
+ strb r1, [r0, #0x1]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02028FA4
+FUN_02028FA4: ; 0x02028FA4
+ push {r3-r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ add r0, r1, #0x0
+ mov r1, #0x4
+ bl FUN_02016998
+ add r4, r0, #0x0
+ add r0, sp, #0x0
+ bl FUN_020126B4
+ ldr r2, [r4, #0x0]
+ mov r0, #0x7f
+ bic r2, r0
+ ldr r1, [sp, #0x0]
+ mov r0, #0x7f
+ and r0, r1
+ add r1, r2, #0x0
+ orr r1, r0
+ str r1, [r4, #0x0]
+ add r2, r1, #0x0
+ ldr r1, [sp, #0x4]
+ ldr r0, _02029008 ; =0xFFFFF87F
+ lsl r1, r1, #0x1c
+ and r2, r0
+ lsr r1, r1, #0x15
+ orr r2, r1
+ ldr r1, _0202900C ; =0xFFF83FFF
+ str r2, [r4, #0x0]
+ and r2, r1
+ ldr r1, [sp, #0x8]
+ lsr r0, r0, #0xd
+ lsl r1, r1, #0x1b
+ lsr r1, r1, #0xd
+ orr r2, r1
+ ldr r1, _02029010 ; =0xFFFFC7FF
+ str r2, [r4, #0x0]
+ and r2, r1
+ ldr r1, [sp, #0xc]
+ lsl r1, r1, #0x1d
+ lsr r1, r1, #0x12
+ orr r1, r2
+ and r1, r0
+ lsl r0, r5, #0x13
+ orr r0, r1
+ str r0, [r4, #0x0]
+ add r0, r4, #0x0
+ add sp, #0x10
+ pop {r3-r5, pc}
+ nop
+_02029008: .word 0xFFFFF87F
+_0202900C: .word 0xFFF83FFF
+_02029010: .word 0xFFFFC7FF
+
+ thumb_func_start FUN_02029014
+FUN_02029014: ; 0x02029014
+ push {r3, lr}
+ mov r1, #0x8
+ bl FUN_02016998
+ mov r1, #0x0
+ strb r1, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ strb r1, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ strb r1, [r0, #0x4]
+ strb r1, [r0, #0x5]
+ strb r1, [r0, #0x6]
+ strb r1, [r0, #0x7]
+ pop {r3, pc}
+
+ thumb_func_start FUN_02029030
+FUN_02029030: ; 0x02029030
+ push {r3, lr}
+ bl FUN_02029014
+ mov r1, #0x1
+ strb r1, [r0, #0x0]
+ pop {r3, pc}
+
+ thumb_func_start FUN_0202903C
+FUN_0202903C: ; 0x0202903C
+ push {r3, lr}
+ bl FUN_02029014
+ mov r1, #0x2
+ strb r1, [r0, #0x0]
+ pop {r3, pc}
+
+ thumb_func_start FUN_02029048
+FUN_02029048: ; 0x02029048
+ push {r3, lr}
+ bl FUN_02029014
+ mov r1, #0x3
+ strb r1, [r0, #0x0]
+ pop {r3, pc}
+
+ thumb_func_start FUN_02029054
+FUN_02029054: ; 0x02029054
+ push {r3, lr}
+ bl FUN_02029014
+ mov r1, #0x4
+ strb r1, [r0, #0x0]
+ pop {r3, pc}
+
+ thumb_func_start FUN_02029060
+FUN_02029060: ; 0x02029060
+ push {r3, lr}
+ bl FUN_02029014
+ mov r1, #0x5
+ strb r1, [r0, #0x0]
+ pop {r3, pc}
+
+ thumb_func_start FUN_0202906C
+FUN_0202906C: ; 0x0202906C
+ push {r3, lr}
+ bl FUN_02029014
+ mov r1, #0x6
+ strb r1, [r0, #0x0]
+ pop {r3, pc}
+
+ thumb_func_start FUN_02029078
+FUN_02029078: ; 0x02029078
+ push {r3, lr}
+ bl FUN_02029014
+ mov r1, #0x7
+ strb r1, [r0, #0x0]
+ pop {r3, pc}
+
+ thumb_func_start FUN_02029084
+FUN_02029084: ; 0x02029084
+ push {r3, lr}
+ bl FUN_02029014
+ mov r1, #0x8
+ strb r1, [r0, #0x0]
+ pop {r3, pc}
+
+ thumb_func_start FUN_02029090
+FUN_02029090: ; 0x02029090
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, r1, #0x0
+ bl FUN_02029014
+ mov r1, #0x9
+ strb r1, [r0, #0x0]
+ strh r4, [r0, #0x2]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020290A4
+FUN_020290A4: ; 0x020290A4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, r2, #0x0
+ add r4, r1, #0x0
+ bl FUN_02029014
+ mov r1, #0xa
+ strb r1, [r0, #0x0]
+ strh r5, [r0, #0x2]
+ strh r4, [r0, #0x4]
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020290BC
+FUN_020290BC: ; 0x020290BC
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, r1, #0x0
+ bl FUN_02029014
+ mov r1, #0xb
+ strb r1, [r0, #0x0]
+ strh r4, [r0, #0x4]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020290D0
+FUN_020290D0: ; 0x020290D0
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, r1, #0x0
+ bl FUN_02029014
+ mov r1, #0xc
+ strb r1, [r0, #0x0]
+ strh r4, [r0, #0x4]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020290E4
+FUN_020290E4: ; 0x020290E4
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, r1, #0x0
+ bl FUN_02029014
+ mov r1, #0xd
+ strb r1, [r0, #0x0]
+ strh r4, [r0, #0x2]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020290F8
+FUN_020290F8: ; 0x020290F8
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, r1, #0x0
+ bl FUN_02029014
+ mov r1, #0xe
+ strb r1, [r0, #0x0]
+ strh r4, [r0, #0x2]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202910C
+FUN_0202910C: ; 0x0202910C
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, r1, #0x0
+ bl FUN_02029014
+ mov r1, #0xf
+ strb r1, [r0, #0x0]
+ strh r4, [r0, #0x2]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02029120
+FUN_02029120: ; 0x02029120
+ push {r3, lr}
+ bl FUN_02029014
+ mov r1, #0x10
+ strb r1, [r0, #0x0]
+ pop {r3, pc}
+
+ thumb_func_start FUN_0202912C
+FUN_0202912C: ; 0x0202912C
+ push {r3, lr}
+ bl FUN_02029014
+ mov r1, #0x11
+ strb r1, [r0, #0x0]
+ pop {r3, pc}
+
+ thumb_func_start FUN_02029138
+FUN_02029138: ; 0x02029138
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, r1, #0x0
+ bl FUN_02029014
+ mov r1, #0x12
+ strb r1, [r0, #0x0]
+ strh r4, [r0, #0x6]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202914C
+FUN_0202914C: ; 0x0202914C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, r2, #0x0
+ add r4, r1, #0x0
+ bl FUN_02029014
+ add r5, #0x13
+ strb r5, [r0, #0x0]
+ strh r4, [r0, #0x2]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02029160
+FUN_02029160: ; 0x02029160
+ push {r3, lr}
+ bl FUN_02029014
+ mov r1, #0x22
+ strb r1, [r0, #0x0]
+ pop {r3, pc}
+
+ thumb_func_start FUN_0202916C
+FUN_0202916C: ; 0x0202916C
+ push {r3, lr}
+ bl FUN_02029014
+ mov r1, #0x23
+ strb r1, [r0, #0x0]
+ pop {r3, pc}
+
+ thumb_func_start FUN_02029178
+FUN_02029178: ; 0x02029178
+ push {r3, lr}
+ mov r1, #0x4
+ bl FUN_02016998
+ mov r1, #0x0
+ strb r1, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ strb r1, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ pop {r3, pc}
+
+ thumb_func_start FUN_0202918C
+FUN_0202918C: ; 0x0202918C
+ push {r3-r7, lr}
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x18]
+ add r5, r1, #0x0
+ add r6, r2, #0x0
+ add r7, r3, #0x0
+ bl FUN_02029178
+ add r4, r0, #0x0
+ mov r0, #0x1
+ strb r0, [r4, #0x0]
+ strh r5, [r4, #0x2]
+ ldrb r1, [r4, #0x1]
+ mov r0, #0xc0
+ bic r1, r0
+ lsl r0, r6, #0x1e
+ lsr r0, r0, #0x18
+ orr r0, r1
+ strb r0, [r4, #0x1]
+ ldrb r1, [r4, #0x1]
+ mov r0, #0x3c
+ bic r1, r0
+ lsl r0, r7, #0x1c
+ lsr r0, r0, #0x1a
+ orr r0, r1
+ strb r0, [r4, #0x1]
+ ldr r0, [sp, #0x0]
+ bl FUN_02029EC0
+ mov r1, #0xa
+ blx _s32_div_f
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ beq _020291DA
+ cmp r0, #0x2
+ beq _020291DA
+ cmp r0, #0x4
+ bne _020291E4
+_020291DA:
+ ldrb r1, [r4, #0x1]
+ mov r0, #0x3
+ bic r1, r0
+ strb r1, [r4, #0x1]
+ b _02029206
+_020291E4:
+ cmp r0, #0x1
+ beq _020291EC
+ cmp r0, #0x3
+ bne _020291FA
+_020291EC:
+ ldrb r1, [r4, #0x1]
+ mov r0, #0x3
+ bic r1, r0
+ mov r0, #0x1
+ orr r0, r1
+ strb r0, [r4, #0x1]
+ b _02029206
+_020291FA:
+ ldrb r1, [r4, #0x1]
+ mov r0, #0x3
+ bic r1, r0
+ mov r0, #0x2
+ orr r0, r1
+ strb r0, [r4, #0x1]
+_02029206:
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202920C
+FUN_0202920C: ; 0x0202920C
+ push {r3-r7, lr}
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x18]
+ add r5, r1, #0x0
+ add r6, r2, #0x0
+ add r7, r3, #0x0
+ bl FUN_02029178
+ add r4, r0, #0x0
+ mov r0, #0x2
+ strb r0, [r4, #0x0]
+ strh r5, [r4, #0x2]
+ ldrb r1, [r4, #0x1]
+ mov r0, #0xc0
+ bic r1, r0
+ lsl r0, r6, #0x1e
+ lsr r0, r0, #0x18
+ orr r0, r1
+ strb r0, [r4, #0x1]
+ ldrb r1, [r4, #0x1]
+ mov r0, #0x3c
+ bic r1, r0
+ lsl r0, r7, #0x1c
+ lsr r0, r0, #0x1a
+ orr r0, r1
+ strb r0, [r4, #0x1]
+ ldr r0, [sp, #0x0]
+ bl FUN_02029EC0
+ mov r1, #0xa
+ blx _s32_div_f
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x1
+ beq _0202925C
+ cmp r0, #0x3
+ beq _0202925C
+ cmp r0, #0x5
+ bne _02029266
+_0202925C:
+ ldrb r1, [r4, #0x1]
+ mov r0, #0x3
+ bic r1, r0
+ strb r1, [r4, #0x1]
+ b _02029288
+_02029266:
+ cmp r0, #0x2
+ beq _0202926E
+ cmp r0, #0x4
+ bne _0202927C
+_0202926E:
+ ldrb r1, [r4, #0x1]
+ mov r0, #0x3
+ bic r1, r0
+ mov r0, #0x1
+ orr r0, r1
+ strb r0, [r4, #0x1]
+ b _02029288
+_0202927C:
+ ldrb r1, [r4, #0x1]
+ mov r0, #0x3
+ bic r1, r0
+ mov r0, #0x2
+ orr r0, r1
+ strb r0, [r4, #0x1]
+_02029288:
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0202928C
+FUN_0202928C: ; 0x0202928C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r0, r2, #0x0
+ mov r1, #0x4
+ bl FUN_02016998
+ ldrh r2, [r0, #0x0]
+ mov r1, #0x1
+ bic r2, r1
+ mov r1, #0x1
+ orr r1, r2
+ strh r1, [r0, #0x0]
+ strh r5, [r0, #0x2]
+ ldrh r2, [r0, #0x0]
+ ldr r1, _020292B8 ; =0xFFFF0001
+ and r2, r1
+ lsl r1, r4, #0x11
+ lsr r1, r1, #0x10
+ orr r1, r2
+ strh r1, [r0, #0x0]
+ pop {r3-r5, pc}
+ .balign 4
+_020292B8: .word 0xFFFF0001
+
+ thumb_func_start FUN_020292BC
+FUN_020292BC: ; 0x020292BC
+ push {r4, lr}
+ mov r1, #0x3a
+ bl FUN_02016998
+ mov r1, #0x0
+ mov r2, #0x3a
+ add r4, r0, #0x0
+ blx FUN_020DF4A4
+ add r0, r4, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020292D4
+FUN_020292D4: ; 0x020292D4
+ push {r4-r5}
+ mov r4, #0x0
+ cmp r2, #0x0
+ bls _020292EA
+ ldr r3, _02029308 ; =0x0000FFFF
+ add r5, r1, #0x0
+_020292E0:
+ add r4, r4, #0x1
+ strh r3, [r5, #0x0]
+ add r5, r5, #0x2
+ cmp r4, r2
+ blo _020292E0
+_020292EA:
+ mov r5, #0x0
+ cmp r2, #0x0
+ bls _02029304
+ ldr r3, _02029308 ; =0x0000FFFF
+_020292F2:
+ ldrh r4, [r0, #0x0]
+ cmp r4, r3
+ beq _02029304
+ add r5, r5, #0x1
+ strh r4, [r1, #0x0]
+ add r0, r0, #0x2
+ add r1, r1, #0x2
+ cmp r5, r2
+ blo _020292F2
+_02029304:
+ pop {r4-r5}
+ bx lr
+ .balign 4
+_02029308: .word 0x0000FFFF
+
+ thumb_func_start FUN_0202930C
+FUN_0202930C: ; 0x0202930C
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ add r0, r3, #0x0
+ add r5, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_020292BC
+ add r4, r0, #0x0
+ mov r0, #0x1
+ strb r0, [r4, #0x0]
+ ldrb r0, [r4, #0x1]
+ mov r1, #0xf
+ mov r2, #0x8
+ bic r0, r1
+ mov r1, #0xf
+ and r1, r6
+ orr r0, r1
+ strb r0, [r4, #0x1]
+ ldrb r1, [r4, #0x1]
+ mov r0, #0x10
+ bic r1, r0
+ lsl r0, r5, #0x1f
+ lsr r0, r0, #0x1b
+ orr r0, r1
+ strb r0, [r4, #0x1]
+ add r0, r7, #0x0
+ add r1, r4, #0x2
+ bl FUN_020292D4
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202934C
+FUN_0202934C: ; 0x0202934C
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ add r0, r3, #0x0
+ add r5, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_020292BC
+ add r4, r0, #0x0
+ mov r0, #0x2
+ strb r0, [r4, #0x0]
+ ldrb r0, [r4, #0x1]
+ mov r1, #0xf
+ mov r2, #0x8
+ bic r0, r1
+ mov r1, #0xf
+ and r1, r6
+ orr r0, r1
+ strb r0, [r4, #0x1]
+ ldrb r1, [r4, #0x1]
+ mov r0, #0x10
+ bic r1, r0
+ lsl r0, r5, #0x1f
+ lsr r0, r0, #0x1b
+ orr r0, r1
+ strb r0, [r4, #0x1]
+ add r0, r7, #0x0
+ add r1, r4, #0x2
+ bl FUN_020292D4
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202938C
+FUN_0202938C: ; 0x0202938C
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ ldr r0, [sp, #0x1c]
+ str r1, [sp, #0x0]
+ add r5, r2, #0x0
+ add r6, r3, #0x0
+ bl FUN_020292BC
+ add r4, r0, #0x0
+ mov r0, #0x3
+ strb r0, [r4, #0x0]
+ ldrb r0, [r4, #0x1]
+ mov r1, #0xf
+ bic r0, r1
+ add r1, sp, #0x8
+ ldrb r2, [r1, #0x10]
+ mov r1, #0xf
+ and r1, r2
+ orr r0, r1
+ strb r0, [r4, #0x1]
+ ldrb r0, [r4, #0x1]
+ mov r1, #0x10
+ mov r2, #0x8
+ bic r0, r1
+ lsl r1, r5, #0x1f
+ lsr r1, r1, #0x1b
+ orr r0, r1
+ strb r0, [r4, #0x1]
+ ldrb r1, [r4, #0x1]
+ mov r0, #0x20
+ bic r1, r0
+ lsl r0, r6, #0x1f
+ lsr r0, r0, #0x1a
+ orr r0, r1
+ strb r0, [r4, #0x1]
+ add r0, r7, #0x0
+ add r1, r4, #0x2
+ bl FUN_020292D4
+ add r1, r4, #0x0
+ ldr r0, [sp, #0x0]
+ add r1, #0x12
+ mov r2, #0x8
+ bl FUN_020292D4
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020293EC
+FUN_020293EC: ; 0x020293EC
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ add r0, r3, #0x0
+ add r5, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_020292BC
+ add r4, r0, #0x0
+ mov r0, #0x4
+ strb r0, [r4, #0x0]
+ ldrb r0, [r4, #0x1]
+ mov r1, #0xf
+ mov r2, #0x8
+ bic r0, r1
+ mov r1, #0xf
+ and r1, r6
+ orr r0, r1
+ strb r0, [r4, #0x1]
+ ldrb r1, [r4, #0x1]
+ mov r0, #0x10
+ bic r1, r0
+ lsl r0, r5, #0x1f
+ lsr r0, r0, #0x1b
+ orr r0, r1
+ strb r0, [r4, #0x1]
+ add r0, r7, #0x0
+ add r1, r4, #0x2
+ bl FUN_020292D4
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202942C
+FUN_0202942C: ; 0x0202942C
+ push {r4-r6, lr}
+ add r6, r0, #0x0
+ add r0, r2, #0x0
+ add r5, r1, #0x0
+ bl FUN_020292BC
+ add r4, r0, #0x0
+ mov r0, #0x6
+ strb r0, [r4, #0x0]
+ ldrb r1, [r4, #0x1]
+ mov r0, #0x10
+ mov r2, #0x8
+ bic r1, r0
+ lsl r0, r5, #0x1f
+ lsr r0, r0, #0x1b
+ orr r0, r1
+ strb r0, [r4, #0x1]
+ add r0, r6, #0x0
+ add r1, r4, #0x2
+ bl FUN_020292D4
+ add r0, r4, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202945C
+FUN_0202945C: ; 0x0202945C
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ ldr r0, [sp, #0x18]
+ add r5, r1, #0x0
+ str r2, [sp, #0x0]
+ add r6, r3, #0x0
+ bl FUN_020292BC
+ add r4, r0, #0x0
+ mov r0, #0x7
+ strb r0, [r4, #0x0]
+ ldrb r0, [r4, #0x1]
+ mov r1, #0x10
+ mov r2, #0x8
+ bic r0, r1
+ lsl r1, r5, #0x1f
+ lsr r1, r1, #0x1b
+ orr r0, r1
+ strb r0, [r4, #0x1]
+ ldrb r1, [r4, #0x1]
+ mov r0, #0xc0
+ bic r1, r0
+ lsl r0, r6, #0x1e
+ lsr r0, r0, #0x18
+ orr r0, r1
+ strb r0, [r4, #0x1]
+ add r0, r7, #0x0
+ add r1, r4, #0x2
+ bl FUN_020292D4
+ add r1, r4, #0x0
+ ldr r0, [sp, #0x0]
+ add r1, #0x22
+ mov r2, #0xc
+ bl FUN_020292D4
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_020294A8
+FUN_020294A8: ; 0x020294A8
+ push {r3, lr}
+ bl FUN_020292BC
+ mov r1, #0x8
+ strb r1, [r0, #0x0]
+ pop {r3, pc}
+
+ thumb_func_start FUN_020294B4
+FUN_020294B4: ; 0x020294B4
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ add r0, r3, #0x0
+ add r5, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_020292BC
+ add r4, r0, #0x0
+ mov r0, #0xb
+ strb r0, [r4, #0x0]
+ ldrb r0, [r4, #0x1]
+ mov r1, #0xf
+ mov r2, #0x8
+ bic r0, r1
+ mov r1, #0xf
+ and r1, r6
+ orr r0, r1
+ strb r0, [r4, #0x1]
+ ldrb r1, [r4, #0x1]
+ mov r0, #0x10
+ bic r1, r0
+ lsl r0, r5, #0x1f
+ lsr r0, r0, #0x1b
+ orr r0, r1
+ strb r0, [r4, #0x1]
+ add r0, r7, #0x0
+ add r1, r4, #0x2
+ bl FUN_020292D4
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020294F4
+FUN_020294F4: ; 0x020294F4
+ push {r3, lr}
+ bl FUN_020292BC
+ mov r1, #0xc
+ strb r1, [r0, #0x0]
+ pop {r3, pc}
+
+ thumb_func_start FUN_02029500
+FUN_02029500: ; 0x02029500
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, r1, #0x0
+ bl FUN_020292BC
+ mov r1, #0xd
+ strb r1, [r0, #0x0]
+ ldrb r2, [r0, #0x1]
+ mov r1, #0xf
+ bic r2, r1
+ mov r1, #0xf
+ and r1, r4
+ orr r1, r2
+ strb r1, [r0, #0x1]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02029520
+FUN_02029520: ; 0x02029520
+ push {r3, lr}
+ bl FUN_020292BC
+ mov r1, #0xe
+ strb r1, [r0, #0x0]
+ pop {r3, pc}
+
+ thumb_func_start FUN_0202952C
+FUN_0202952C: ; 0x0202952C
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ ldr r0, [sp, #0x18]
+ add r5, r1, #0x0
+ str r2, [sp, #0x0]
+ add r6, r3, #0x0
+ bl FUN_020292BC
+ add r4, r0, #0x0
+ mov r0, #0xf
+ strb r0, [r4, #0x0]
+ ldrb r0, [r4, #0x1]
+ mov r1, #0x10
+ mov r2, #0x8
+ bic r0, r1
+ lsl r1, r5, #0x1f
+ lsr r1, r1, #0x1b
+ orr r0, r1
+ strb r0, [r4, #0x1]
+ ldrb r1, [r4, #0x1]
+ mov r0, #0xc0
+ bic r1, r0
+ lsl r0, r6, #0x1e
+ lsr r0, r0, #0x18
+ orr r0, r1
+ strb r0, [r4, #0x1]
+ add r0, r7, #0x0
+ add r1, r4, #0x2
+ bl FUN_020292D4
+ add r1, r4, #0x0
+ ldr r0, [sp, #0x0]
+ add r1, #0x22
+ mov r2, #0xc
+ bl FUN_020292D4
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02029578
+FUN_02029578: ; 0x02029578
+ push {r3, lr}
+ bl FUN_020292BC
+ mov r1, #0x10
+ strb r1, [r0, #0x0]
+ pop {r3, pc}
+
+ thumb_func_start FUN_02029584
+FUN_02029584: ; 0x02029584
+ push {r3, lr}
+ cmp r2, #0x4
+ bhi _020295DA
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_02029596: ; jump table (using 16-bit offset)
+ .short _020295A0 - _02029596 - 2; case 0
+ .short _020295AC - _02029596 - 2; case 1
+ .short _020295B8 - _02029596 - 2; case 2
+ .short _020295C4 - _02029596 - 2; case 3
+ .short _020295D0 - _02029596 - 2; case 4
+_020295A0:
+ mov r2, #0x70
+ mul r2, r3
+ add r0, r0, r2
+ bl FUN_020295DC
+ pop {r3, pc}
+_020295AC:
+ mov r2, #0x70
+ mul r2, r3
+ add r0, r0, r2
+ bl FUN_020295E4
+ pop {r3, pc}
+_020295B8:
+ mov r2, #0x70
+ mul r2, r3
+ add r0, r0, r2
+ bl FUN_02029690
+ pop {r3, pc}
+_020295C4:
+ mov r2, #0x70
+ mul r2, r3
+ add r0, r0, r2
+ bl FUN_0202969C
+ pop {r3, pc}
+_020295D0:
+ mov r2, #0x70
+ mul r2, r3
+ add r0, r0, r2
+ bl FUN_020296A8
+_020295DA:
+ pop {r3, pc}
+
+ thumb_func_start FUN_020295DC
+FUN_020295DC: ; 0x020295DC
+ ldr r0, [r0, #0x0]
+ str r0, [r1, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020295E4
+FUN_020295E4: ; 0x020295E4
+ push {r3-r7, lr}
+ mov r6, #0x0
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r7, r6, #0x0
+_020295EE:
+ strb r7, [r4, #0x0]
+ strb r7, [r4, #0x1]
+ strb r7, [r4, #0x2]
+ strb r7, [r4, #0x3]
+ strb r7, [r4, #0x4]
+ strb r7, [r4, #0x5]
+ strb r7, [r4, #0x6]
+ strb r7, [r4, #0x7]
+ ldr r0, [r5, #0x4]
+ mov r1, #0x3f
+ and r1, r0
+ cmp r1, #0x23
+ bhi _02029682
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02029614: ; jump table (using 16-bit offset)
+ .short _02029682 - _02029614 - 2; case 0
+ .short _0202965C - _02029614 - 2; case 1
+ .short _0202965C - _02029614 - 2; case 2
+ .short _0202965C - _02029614 - 2; case 3
+ .short _0202965C - _02029614 - 2; case 4
+ .short _0202965C - _02029614 - 2; case 5
+ .short _0202965C - _02029614 - 2; case 6
+ .short _0202965C - _02029614 - 2; case 7
+ .short _0202965C - _02029614 - 2; case 8
+ .short _02029664 - _02029614 - 2; case 9
+ .short _02029664 - _02029614 - 2; case 10
+ .short _02029664 - _02029614 - 2; case 11
+ .short _02029664 - _02029614 - 2; case 12
+ .short _0202966C - _02029614 - 2; case 13
+ .short _0202966C - _02029614 - 2; case 14
+ .short _0202966C - _02029614 - 2; case 15
+ .short _0202965C - _02029614 - 2; case 16
+ .short _0202965C - _02029614 - 2; case 17
+ .short _02029674 - _02029614 - 2; case 18
+ .short _0202967C - _02029614 - 2; case 19
+ .short _0202967C - _02029614 - 2; case 20
+ .short _0202967C - _02029614 - 2; case 21
+ .short _0202967C - _02029614 - 2; case 22
+ .short _0202967C - _02029614 - 2; case 23
+ .short _0202967C - _02029614 - 2; case 24
+ .short _0202967C - _02029614 - 2; case 25
+ .short _0202967C - _02029614 - 2; case 26
+ .short _0202967C - _02029614 - 2; case 27
+ .short _0202967C - _02029614 - 2; case 28
+ .short _0202967C - _02029614 - 2; case 29
+ .short _0202967C - _02029614 - 2; case 30
+ .short _02029682 - _02029614 - 2; case 31
+ .short _0202967C - _02029614 - 2; case 32
+ .short _0202967C - _02029614 - 2; case 33
+ .short _0202965C - _02029614 - 2; case 34
+ .short _0202965C - _02029614 - 2; case 35
+_0202965C:
+ add r1, r4, #0x0
+ bl FUN_02029730
+ b _02029682
+_02029664:
+ add r1, r4, #0x0
+ bl FUN_02029738
+ b _02029682
+_0202966C:
+ add r1, r4, #0x0
+ bl FUN_02029750
+ b _02029682
+_02029674:
+ add r1, r4, #0x0
+ bl FUN_0202975C
+ b _02029682
+_0202967C:
+ add r1, r4, #0x0
+ bl FUN_02029768
+_02029682:
+ add r6, r6, #0x1
+ add r4, #0x8
+ add r5, r5, #0x4
+ cmp r6, #0x4
+ blo _020295EE
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02029690
+FUN_02029690: ; 0x02029690
+ ldrh r2, [r0, #0x14]
+ strh r2, [r1, #0x0]
+ ldrh r0, [r0, #0x16]
+ strh r0, [r1, #0x2]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0202969C
+FUN_0202969C: ; 0x0202969C
+ ldrh r2, [r0, #0x18]
+ strh r2, [r1, #0x0]
+ ldrh r0, [r0, #0x1a]
+ strh r0, [r1, #0x2]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020296A8
+FUN_020296A8: ; 0x020296A8
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ add r5, r6, #0x0
+ add r4, r1, #0x0
+ mov r7, #0x0
+ add r5, #0x1c
+_020296B4:
+ add r0, r4, #0x0
+ mov r1, #0x0
+ mov r2, #0x3a
+ blx FUN_020DF4A4
+ ldrb r0, [r6, #0x1c]
+ cmp r0, #0x10
+ bhi _02029722
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_020296D0: ; jump table (using 16-bit offset)
+ .short _02029722 - _020296D0 - 2; case 0
+ .short _020296F2 - _020296D0 - 2; case 1
+ .short _020296F2 - _020296D0 - 2; case 2
+ .short _020296F2 - _020296D0 - 2; case 3
+ .short _020296F2 - _020296D0 - 2; case 4
+ .short _020296F2 - _020296D0 - 2; case 5
+ .short _020296FC - _020296D0 - 2; case 6
+ .short _02029706 - _020296D0 - 2; case 7
+ .short _02029710 - _020296D0 - 2; case 8
+ .short _02029706 - _020296D0 - 2; case 9
+ .short _02029710 - _020296D0 - 2; case 10
+ .short _020296F2 - _020296D0 - 2; case 11
+ .short _02029710 - _020296D0 - 2; case 12
+ .short _0202971A - _020296D0 - 2; case 13
+ .short _02029710 - _020296D0 - 2; case 14
+ .short _02029706 - _020296D0 - 2; case 15
+ .short _02029710 - _020296D0 - 2; case 16
+_020296F2:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02029774
+ b _02029722
+_020296FC:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_020297E4
+ b _02029722
+_02029706:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02029808
+ b _02029722
+_02029710:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02029860
+ b _02029722
+_0202971A:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02029868
+_02029722:
+ add r7, r7, #0x1
+ add r4, #0x3a
+ add r6, #0x2a
+ add r5, #0x2a
+ cmp r7, #0x2
+ blo _020296B4
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02029730
+FUN_02029730: ; 0x02029730
+ mov r2, #0x3f
+ and r0, r2
+ strb r0, [r1, #0x0]
+ bx lr
+
+ thumb_func_start FUN_02029738
+FUN_02029738: ; 0x02029738
+ mov r2, #0x3f
+ and r2, r0
+ strb r2, [r1, #0x0]
+ lsr r3, r0, #0x6
+ ldr r2, _0202974C ; =0x000003FF
+ lsr r0, r0, #0x10
+ and r2, r3
+ strh r2, [r1, #0x4]
+ strh r0, [r1, #0x2]
+ bx lr
+ .balign 4
+_0202974C: .word 0x000003FF
+
+ thumb_func_start FUN_02029750
+FUN_02029750: ; 0x02029750
+ mov r2, #0x3f
+ and r2, r0
+ strb r2, [r1, #0x0]
+ lsr r0, r0, #0x10
+ strh r0, [r1, #0x2]
+ bx lr
+
+ thumb_func_start FUN_0202975C
+FUN_0202975C: ; 0x0202975C
+ mov r2, #0x3f
+ and r2, r0
+ strb r2, [r1, #0x0]
+ lsr r0, r0, #0x10
+ strh r0, [r1, #0x6]
+ bx lr
+
+ thumb_func_start FUN_02029768
+FUN_02029768: ; 0x02029768
+ mov r2, #0x3f
+ and r2, r0
+ strb r2, [r1, #0x0]
+ lsr r0, r0, #0x10
+ strh r0, [r1, #0x2]
+ bx lr
+
+ thumb_func_start FUN_02029774
+FUN_02029774: ; 0x02029774
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldrb r0, [r5, #0x0]
+ add r4, r1, #0x0
+ mov r1, #0xf
+ strb r0, [r4, #0x0]
+ ldrb r0, [r4, #0x1]
+ bic r0, r1
+ ldrb r1, [r5, #0x1]
+ asr r2, r1, #0x2
+ mov r1, #0x1f
+ and r1, r2
+ lsl r1, r1, #0x18
+ lsr r2, r1, #0x18
+ mov r1, #0xf
+ and r1, r2
+ orr r0, r1
+ strb r0, [r4, #0x1]
+ ldrb r0, [r4, #0x1]
+ mov r1, #0x10
+ mov r2, #0x1
+ bic r0, r1
+ ldrb r1, [r5, #0x1]
+ asr r1, r1, #0x1
+ and r1, r2
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ lsl r1, r1, #0x1f
+ lsr r1, r1, #0x1b
+ orr r0, r1
+ strb r0, [r4, #0x1]
+ ldrb r0, [r4, #0x1]
+ mov r1, #0x20
+ bic r0, r1
+ ldrb r1, [r5, #0x1]
+ and r1, r2
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ lsl r1, r1, #0x1f
+ lsr r1, r1, #0x1a
+ orr r0, r1
+ strb r0, [r4, #0x1]
+ add r0, r5, #0x2
+ add r1, r4, #0x2
+ mov r2, #0x8
+ bl FUN_020292D4
+ add r5, #0x12
+ add r4, #0x12
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r2, #0x8
+ bl FUN_020292D4
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020297E4
+FUN_020297E4: ; 0x020297E4
+ ldrb r2, [r0, #0x0]
+ strb r2, [r1, #0x0]
+ ldrb r3, [r1, #0x1]
+ mov r2, #0x10
+ bic r3, r2
+ ldrb r2, [r0, #0x1]
+ add r0, r0, #0x2
+ lsl r2, r2, #0x1f
+ lsr r2, r2, #0x1b
+ orr r2, r3
+ strb r2, [r1, #0x1]
+ ldr r3, _02029804 ; =FUN_020292D4
+ add r1, r1, #0x2
+ mov r2, #0x8
+ bx r3
+ nop
+_02029804: .word FUN_020292D4
+
+ thumb_func_start FUN_02029808
+FUN_02029808: ; 0x02029808
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldrb r0, [r5, #0x0]
+ add r4, r1, #0x0
+ mov r1, #0x10
+ strb r0, [r4, #0x0]
+ ldrb r0, [r4, #0x1]
+ bic r0, r1
+ ldrb r1, [r5, #0x1]
+ asr r2, r1, #0x2
+ mov r1, #0x1
+ and r1, r2
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ lsl r1, r1, #0x1f
+ lsr r1, r1, #0x1b
+ orr r0, r1
+ strb r0, [r4, #0x1]
+ ldrb r0, [r4, #0x1]
+ mov r1, #0xc0
+ ldrb r2, [r5, #0x1]
+ bic r0, r1
+ mov r1, #0x3
+ and r1, r2
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ lsl r1, r1, #0x1e
+ lsr r1, r1, #0x18
+ orr r0, r1
+ strb r0, [r4, #0x1]
+ add r0, r5, #0x2
+ add r1, r4, #0x2
+ mov r2, #0x8
+ bl FUN_020292D4
+ add r5, #0x12
+ add r4, #0x22
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r2, #0xc
+ bl FUN_020292D4
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02029860
+FUN_02029860: ; 0x02029860
+ ldrb r0, [r0, #0x0]
+ strb r0, [r1, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02029868
+FUN_02029868: ; 0x02029868
+ ldrb r2, [r0, #0x0]
+ strb r2, [r1, #0x0]
+ ldrb r3, [r1, #0x1]
+ mov r2, #0xf
+ bic r3, r2
+ ldrb r2, [r0, #0x1]
+ mov r0, #0xf
+ and r0, r2
+ orr r0, r3
+ strb r0, [r1, #0x1]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02029880
+FUN_02029880: ; 0x02029880
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r7, r0, #0x0
+ mov r0, #0x0
+ add r4, r3, #0x0
+ str r0, [sp, #0x4]
+ add r0, r4, #0x0
+ str r1, [sp, #0x0]
+ add r5, r2, #0x0
+ ldr r6, [sp, #0x20]
+ bl FUN_02034930
+ cmp r0, #0x1
+ bne _020298BA
+ add r0, r5, #0x0
+ bl FUN_02034964
+ cmp r0, #0x1
+ bne _02029942
+ add r0, r4, #0x0
+ bl FUN_02034824
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ add r1, r6, #0x0
+ bl FUN_020290F8
+ str r0, [sp, #0x4]
+ b _02029942
+_020298BA:
+ add r0, r4, #0x0
+ bl FUN_02034944
+ cmp r0, #0x1
+ bne _0202991A
+ add r0, r5, #0x0
+ bl FUN_02034964
+ cmp r0, #0x1
+ bne _02029942
+ ldr r0, _02029958 ; =0x0000019E
+ cmp r4, r0
+ bne _020298DE
+ add r0, r6, #0x0
+ bl FUN_02029030
+ str r0, [sp, #0x4]
+ b _02029942
+_020298DE:
+ add r0, #0x8
+ cmp r4, r0
+ bne _020298EE
+ add r0, r6, #0x0
+ bl FUN_0202903C
+ str r0, [sp, #0x4]
+ b _02029942
+_020298EE:
+ add r0, r4, #0x0
+ bl FUN_02034824
+ add r7, r0, #0x0
+ lsl r0, r7, #0x10
+ lsr r0, r0, #0x10
+ ldr r5, _0202995C ; =0x020EE9A4
+ mov r4, #0x0
+ str r0, [sp, #0x8]
+_02029900:
+ ldr r0, [r5, #0x0]
+ cmp r7, r0
+ bne _02029910
+ ldr r0, [sp, #0x8]
+ add r1, r6, #0x0
+ bl FUN_0202910C
+ str r0, [sp, #0x4]
+_02029910:
+ add r4, r4, #0x1
+ add r5, #0x8
+ cmp r4, #0x1b
+ blo _02029900
+ b _02029942
+_0202991A:
+ add r0, r4, #0x0
+ bl FUN_02034964
+ cmp r0, #0x1
+ bne _02029942
+ add r0, r5, #0x0
+ bl FUN_02034944
+ cmp r0, #0x1
+ bne _02029942
+ add r0, r7, #0x0
+ add r1, r5, #0x0
+ bl FUN_02029988
+ cmp r0, #0xff
+ beq _02029942
+ add r1, r6, #0x0
+ bl FUN_02029090
+ str r0, [sp, #0x4]
+_02029942:
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ beq _02029952
+ ldr r0, [sp, #0x0]
+ ldr r1, [sp, #0x4]
+ mov r2, #0x1
+ bl FUN_02028AD4
+_02029952:
+ add sp, #0xc
+ pop {r4-r7, pc}
+ nop
+_02029958: .word 0x0000019E
+_0202995C: .word 0x020EE9A4
+
+ thumb_func_start FUN_02029960
+FUN_02029960: ; 0x02029960
+ ldr r3, _02029980 ; =0x020EE9A4
+ mov r2, #0x0
+_02029964:
+ ldr r1, [r3, #0x0]
+ cmp r0, r1
+ bne _02029972
+ ldr r0, _02029984 ; =0x020EE9A8
+ lsl r1, r2, #0x3
+ ldr r0, [r0, r1]
+ bx lr
+_02029972:
+ add r2, r2, #0x1
+ add r3, #0x8
+ cmp r2, #0x1b
+ blo _02029964
+ mov r0, #0x0
+ bx lr
+ nop
+_02029980: .word 0x020EE9A4
+_02029984: .word 0x020EE9A8
+
+ thumb_func_start FUN_02029988
+FUN_02029988: ; 0x02029988
+ push {r3-r5, lr}
+ ldr r2, _020299B8 ; =0x020EE964
+ mov r4, #0x0
+_0202998E:
+ lsl r3, r4, #0x3
+ add r5, r2, r3
+ ldrh r5, [r5, #0x4]
+ cmp r1, r5
+ bne _020299A8
+ ldr r1, _020299BC ; =0x020EE96A
+ ldrh r1, [r1, r3]
+ bl FUN_020239D0
+ cmp r0, #0x0
+ bne _020299B2
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+_020299A8:
+ add r3, r4, #0x1
+ lsl r3, r3, #0x18
+ lsr r4, r3, #0x18
+ cmp r4, #0x8
+ blo _0202998E
+_020299B2:
+ mov r0, #0xff
+ pop {r3-r5, pc}
+ nop
+_020299B8: .word 0x020EE964
+_020299BC: .word 0x020EE96A
+
+ thumb_func_start FUN_020299C0
+FUN_020299C0: ; 0x020299C0
+ push {r4, lr}
+ add r4, r0, #0x0
+ lsl r0, r1, #0x10
+ lsr r0, r0, #0x10
+ add r1, r2, #0x0
+ bl FUN_020290E4
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ mov r2, #0x1
+ bl FUN_02028AD4
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020299DC
+FUN_020299DC: ; 0x020299DC
+ push {r3-r7, lr}
+ add r4, r2, #0x0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ add r7, r1, #0x0
+ add r6, r3, #0x0
+ bl FUN_02029A48
+ cmp r0, #0x8
+ bhs _02029A04
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_020290A4
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ mov r2, #0x1
+ bl FUN_02028AD4
+ pop {r3-r7, pc}
+_02029A04:
+ bne _02029A1A
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ bl FUN_020290BC
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ mov r2, #0x1
+ bl FUN_02028AD4
+ pop {r3-r7, pc}
+_02029A1A:
+ cmp r0, #0x9
+ bne _02029A32
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ bl FUN_020290D0
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ mov r2, #0x1
+ bl FUN_02028AD4
+ pop {r3-r7, pc}
+_02029A32:
+ add r0, r7, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_0202928C
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ mov r2, #0x3
+ bl FUN_02028AD4
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02029A48
+FUN_02029A48: ; 0x02029A48
+ ldr r2, _02029A7C ; =0x020EE964
+ mov r3, #0x0
+_02029A4C:
+ lsl r1, r3, #0x3
+ ldr r1, [r2, r1]
+ cmp r0, r1
+ bne _02029A58
+ add r0, r3, #0x0
+ bx lr
+_02029A58:
+ add r1, r3, #0x1
+ lsl r1, r1, #0x18
+ lsr r3, r1, #0x18
+ cmp r3, #0x8
+ blo _02029A4C
+ ldr r1, _02029A80 ; =0x00000105
+ sub r2, r0, r1
+ cmp r2, #0x3
+ bhi _02029A6E
+ mov r0, #0x8
+ bx lr
+_02029A6E:
+ add r1, r1, #0x6
+ cmp r0, r1
+ bne _02029A78
+ mov r0, #0x9
+ bx lr
+_02029A78:
+ mov r0, #0xa
+ bx lr
+ .balign 4
+_02029A7C: .word 0x020EE964
+_02029A80: .word 0x00000105
+
+ thumb_func_start FUN_02029A84
+FUN_02029A84: ; 0x02029A84
+ mov r0, #0x62
+ lsl r0, r0, #0x4
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02029A8C
+FUN_02029A8C: ; 0x02029A8C
+ push {r4-r6, lr}
+ mov r2, #0x62
+ add r4, r0, #0x0
+ mov r1, #0x0
+ lsl r2, r2, #0x4
+ blx FUN_020DF4A4
+ add r0, r4, #0x0
+ bl FUN_02029ACC
+ add r5, r0, #0x0
+ mov r4, #0x0
+ mov r6, #0x8c
+_02029AA6:
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ add r1, r6, #0x0
+ add r2, r5, #0x0
+ bl FUN_02029AD8
+ add r4, r4, #0x1
+ cmp r4, #0x8
+ blt _02029AA6
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02029ABC
+FUN_02029ABC: ; 0x02029ABC
+ ldr r3, _02029AC4 ; =FUN_02022610
+ mov r1, #0x13
+ bx r3
+ nop
+_02029AC4: .word FUN_02022610
+
+ thumb_func_start FUN_02029AC8
+FUN_02029AC8: ; 0x02029AC8
+ add r0, #0x20
+ bx lr
+
+ thumb_func_start FUN_02029ACC
+FUN_02029ACC: ; 0x02029ACC
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02029AD0
+FUN_02029AD0: ; 0x02029AD0
+ lsl r0, r0, #0x2
+ ldr r0, [r1, r0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02029AD8
+FUN_02029AD8: ; 0x02029AD8
+ lsl r0, r0, #0x2
+ str r1, [r2, r0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02029AE0
+FUN_02029AE0: ; 0x02029AE0
+ ldr r0, _02029AE4 ; =0x00000FF8
+ bx lr
+ .balign 4
+_02029AE4: .word 0x00000FF8
+
+ thumb_func_start FUN_02029AE8
+FUN_02029AE8: ; 0x02029AE8
+ ldr r3, _02029AF4 ; =MIi_CpuClear32
+ add r1, r0, #0x0
+ mov r0, #0x0
+ ldr r2, _02029AF8 ; =0x00000FF8
+ bx r3
+ nop
+_02029AF4: .word MIi_CpuClear32
+_02029AF8: .word 0x00000FF8
+
+ thumb_func_start FUN_02029AFC
+FUN_02029AFC: ; 0x02029AFC
+ ldr r3, _02029B04 ; =FUN_02022610
+ mov r1, #0x1e
+ bx r3
+ nop
+_02029B04: .word FUN_02022610
+
+ thumb_func_start FUN_02029B08
+FUN_02029B08: ; 0x02029B08
+ push {r4-r6, lr}
+ add r6, r0, #0x0
+ mov r0, #0x1
+ add r5, r1, #0x0
+ lsl r0, r0, #0x8
+ add r4, r2, #0x0
+ cmp r5, r0
+ blt _02029B1C
+ bl ErrorHandling
+_02029B1C:
+ cmp r4, #0x40
+ blt _02029B24
+ bl ErrorHandling
+_02029B24:
+ strb r5, [r6, #0x5]
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ mov r3, #0x3
+ strb r4, [r6, #0x6]
+ bl FUN_02029B90
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02029B38
+FUN_02029B38: ; 0x02029B38
+ ldrb r0, [r0, #0x5]
+ bx lr
+
+ thumb_func_start FUN_02029B3C
+FUN_02029B3C: ; 0x02029B3C
+ ldrb r0, [r0, #0x6]
+ bx lr
+
+ thumb_func_start FUN_02029B40
+FUN_02029B40: ; 0x02029B40
+ push {r4-r6, lr}
+ add r6, r0, #0x0
+ mov r0, #0x1
+ add r5, r1, #0x0
+ lsl r0, r0, #0x8
+ add r4, r2, #0x0
+ cmp r5, r0
+ blt _02029B54
+ bl ErrorHandling
+_02029B54:
+ cmp r4, #0x40
+ blt _02029B5C
+ bl ErrorHandling
+_02029B5C:
+ cmp r5, #0x0
+ bne _02029B64
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_02029B64:
+ asr r0, r4, #0x1
+ lsr r0, r0, #0x1e
+ add r0, r4, r0
+ asr r1, r0, #0x2
+ sub r0, r5, #0x1
+ lsl r0, r0, #0x4
+ add r0, r1, r0
+ add r0, r6, r0
+ ldrb r3, [r0, #0x7]
+ lsr r2, r4, #0x1f
+ lsl r1, r4, #0x1e
+ sub r1, r1, r2
+ mov r0, #0x1e
+ ror r1, r0
+ add r0, r2, r1
+ lsl r0, r0, #0x1
+ add r1, r3, #0x0
+ asr r1, r0
+ mov r0, #0x3
+ and r0, r1
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02029B90
+FUN_02029B90: ; 0x02029B90
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ add r5, r1, #0x0
+ add r4, r2, #0x0
+ str r3, [sp, #0x0]
+ cmp r3, #0x4
+ blt _02029BA2
+ bl ErrorHandling
+_02029BA2:
+ mov r0, #0x1
+ lsl r0, r0, #0x8
+ cmp r5, r0
+ blt _02029BAE
+ bl ErrorHandling
+_02029BAE:
+ cmp r4, #0x40
+ blt _02029BB6
+ bl ErrorHandling
+_02029BB6:
+ cmp r5, #0x0
+ beq _02029BFE
+ asr r0, r4, #0x1
+ lsr r0, r0, #0x1e
+ add r0, r4, r0
+ asr r2, r0, #0x2
+ sub r0, r5, #0x1
+ lsl r0, r0, #0x4
+ add r0, r2, r0
+ lsr r2, r4, #0x1f
+ lsl r4, r4, #0x1e
+ sub r4, r4, r2
+ mov r3, #0x1e
+ ror r4, r3
+ add r2, r2, r4
+ lsl r6, r2, #0x1
+ mov r2, #0x3
+ add r3, r2, #0x0
+ add r1, r7, #0x7
+ ldrb r4, [r1, r0]
+ lsl r3, r6
+ mov r2, #0xff
+ eor r2, r3
+ and r2, r4
+ ldr r3, [sp, #0x0]
+ strb r2, [r1, r0]
+ ldrb r2, [r1, r0]
+ lsl r3, r6
+ orr r2, r3
+ strb r2, [r1, r0]
+ cmp r5, #0x67
+ beq _02029BFE
+ add r0, r7, #0x0
+ mov r1, #0x1
+ bl FUN_02029C04
+_02029BFE:
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02029C00
+FUN_02029C00: ; 0x02029C00
+ ldrb r0, [r0, #0x4]
+ bx lr
+
+ thumb_func_start FUN_02029C04
+FUN_02029C04: ; 0x02029C04
+ strb r1, [r0, #0x4]
+ bx lr
+
+ thumb_func_start FUN_02029C08
+FUN_02029C08: ; 0x02029C08
+ push {r3-r7, lr}
+ mov lr, r0
+ mov r0, #0x3
+ mov r7, #0x0
+ mov r4, #0x2
+ mov r6, #0xff
+ add r3, r0, #0x0
+_02029C16:
+ mov r1, lr
+ add r1, r1, r7
+ ldrb r2, [r1, #0x7]
+ mov r12, r1
+ mov r1, #0x0
+_02029C20:
+ add r5, r2, #0x0
+ asr r5, r1
+ and r5, r3
+ cmp r5, #0x1
+ bne _02029C40
+ add r5, r0, #0x0
+ lsl r5, r1
+ eor r5, r6
+ and r2, r5
+ lsl r2, r2, #0x18
+ lsr r5, r2, #0x18
+ add r2, r4, #0x0
+ lsl r2, r1
+ orr r2, r5
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+_02029C40:
+ add r1, r1, #0x2
+ cmp r1, #0x8
+ blt _02029C20
+ mov r1, r12
+ strb r2, [r1, #0x7]
+ mov r1, #0xff
+ add r7, r7, #0x1
+ lsl r1, r1, #0x4
+ cmp r7, r1
+ blt _02029C16
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02029C58
+FUN_02029C58: ; 0x02029C58
+ mov r0, #0x17
+ lsl r0, r0, #0x4
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02029C60
+FUN_02029C60: ; 0x02029C60
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02029C58
+ add r2, r0, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x0
+ blx MI_CpuFill8
+ pop {r4, pc}
+
+ thumb_func_start FUN_02029C74
+FUN_02029C74: ; 0x02029C74
+ ldr r3, _02029C7C ; =MI_CpuCopy8
+ mov r2, #0x18
+ bx r3
+ nop
+_02029C7C: .word MI_CpuCopy8
+
+ thumb_func_start FUN_02029C80
+FUN_02029C80: ; 0x02029C80
+ ldr r3, _02029C88 ; =FUN_02022610
+ mov r1, #0x15
+ bx r3
+ nop
+_02029C88: .word FUN_02022610
+
+ thumb_func_start FUN_02029C8C
+FUN_02029C8C: ; 0x02029C8C
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ cmp r4, #0xc
+ blt _02029C9A
+ bl ErrorHandling
+_02029C9A:
+ mov r0, #0x18
+ mul r0, r4
+ add r0, r5, r0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02029CA4
+FUN_02029CA4: ; 0x02029CA4
+ push {r4-r6, lr}
+ add r6, r2, #0x0
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r6, #0xc
+ blt _02029CB4
+ bl ErrorHandling
+_02029CB4:
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02029C8C
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02029C74
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02029CC8
+FUN_02029CC8: ; 0x02029CC8
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ cmp r4, #0x8
+ blt _02029CD6
+ bl ErrorHandling
+_02029CD6:
+ lsl r0, r4, #0x1
+ add r0, r4, r0
+ add r0, r5, r0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02029CE0
+FUN_02029CE0: ; 0x02029CE0
+ ldrb r0, [r0, #0x0]
+ bx lr
+
+ thumb_func_start FUN_02029CE4
+FUN_02029CE4: ; 0x02029CE4
+ ldrb r0, [r0, #0x1]
+ bx lr
+
+ thumb_func_start FUN_02029CE8
+FUN_02029CE8: ; 0x02029CE8
+ ldrb r0, [r0, #0x2]
+ bx lr
+
+ thumb_func_start FUN_02029CEC
+FUN_02029CEC: ; 0x02029CEC
+ mov r1, #0x12
+ lsl r1, r1, #0x4
+ add r0, r0, r1
+ bx lr
+
+ thumb_func_start FUN_02029CF4
+FUN_02029CF4: ; 0x02029CF4
+ ldrb r0, [r0, r1]
+ bx lr
+
+ thumb_func_start FUN_02029CF8
+FUN_02029CF8: ; 0x02029CF8
+ mov r3, #0x0
+ add r2, r1, #0x1
+_02029CFC:
+ ldrb r1, [r0, #0x0]
+ cmp r2, r1
+ bne _02029D06
+ mov r0, #0x1
+ bx lr
+_02029D06:
+ add r3, r3, #0x1
+ add r0, r0, #0x3
+ cmp r3, #0x8
+ blt _02029CFC
+ mov r0, #0x0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02029D14
+FUN_02029D14: ; 0x02029D14
+ push {r4-r7}
+ mov r6, #0x0
+ add r4, r6, #0x0
+ add r2, r1, #0x1
+ add r3, r6, #0x0
+_02029D1E:
+ add r5, r3, #0x0
+ add r7, r0, #0x0
+_02029D22:
+ ldrb r1, [r7, #0x0]
+ cmp r2, r1
+ bne _02029D2A
+ add r6, r6, #0x1
+_02029D2A:
+ add r5, r5, #0x1
+ add r7, r7, #0x3
+ cmp r5, #0x8
+ blt _02029D22
+ add r4, r4, #0x1
+ add r0, #0x18
+ cmp r4, #0xc
+ blt _02029D1E
+ add r0, r6, #0x0
+ pop {r4-r7}
+ bx lr
+
+ thumb_func_start FUN_02029D40
+FUN_02029D40: ; 0x02029D40
+ strb r2, [r0, r1]
+ bx lr
+
+ thumb_func_start FUN_02029D44
+FUN_02029D44: ; 0x02029D44
+ push {r4-r6, lr}
+ add r5, r1, #0x0
+ sub r1, r5, #0x1
+ add r6, r0, #0x0
+ add r4, r2, #0x0
+ bl FUN_02029D14
+ mov r1, #0x12
+ lsl r1, r1, #0x4
+ add r2, r6, r1
+ sub r1, r5, #0x1
+ ldrb r3, [r2, r1]
+ add r0, r0, r3
+ cmp r4, #0x0
+ bge _02029D6E
+ add r0, r4, r3
+ bmi _02029D6A
+ strb r0, [r2, r1]
+ b _02029D7E
+_02029D6A:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_02029D6E:
+ add r0, r0, r4
+ cmp r0, #0x63
+ bgt _02029D7A
+ add r0, r3, r4
+ strb r0, [r2, r1]
+ b _02029D7E
+_02029D7A:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_02029D7E:
+ mov r0, #0x1
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02029D84
+FUN_02029D84: ; 0x02029D84
+ push {r4-r6, lr}
+ add r5, r1, #0x0
+ sub r1, r5, #0x1
+ add r6, r0, #0x0
+ add r4, r2, #0x0
+ bl FUN_02029D14
+ cmp r4, #0x0
+ bge _02029DAC
+ mov r0, #0x12
+ lsl r0, r0, #0x4
+ add r2, r6, r0
+ sub r1, r5, #0x1
+ ldrb r0, [r2, r1]
+ add r0, r4, r0
+ bmi _02029DA8
+ strb r0, [r2, r1]
+ b _02029DD0
+_02029DA8:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_02029DAC:
+ add r0, r0, r4
+ cmp r0, #0x63
+ bgt _02029DCC
+ mov r0, #0x12
+ lsl r0, r0, #0x4
+ add r2, r6, r0
+ sub r1, r5, #0x1
+ ldrb r0, [r2, r1]
+ add r0, r0, r4
+ strb r0, [r2, r1]
+ ldrb r0, [r2, r1]
+ cmp r0, #0x63
+ blo _02029DD0
+ mov r0, #0x63
+ strb r0, [r2, r1]
+ b _02029DD0
+_02029DCC:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_02029DD0:
+ mov r0, #0x1
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02029DD4
+FUN_02029DD4: ; 0x02029DD4
+ push {r4-r6, lr}
+ add r5, r1, #0x0
+ sub r1, r5, #0x1
+ add r6, r0, #0x0
+ add r4, r2, #0x0
+ bl FUN_02029D14
+ sub r1, r5, #0x1
+ add r2, r6, r1
+ mov r1, #0x12
+ lsl r1, r1, #0x4
+ ldrb r1, [r2, r1]
+ add r0, r0, r1
+ cmp r4, #0x0
+ bge _02029DFE
+ add r0, r4, r1
+ bmi _02029DFA
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_02029DFA:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_02029DFE:
+ add r0, r0, r4
+ cmp r0, #0x63
+ bgt _02029E08
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_02029E08:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02029E0C
+FUN_02029E0C: ; 0x02029E0C
+ push {r4-r6, lr}
+ add r6, r0, #0x0
+ mov r5, #0x0
+ mov r4, #0x1
+_02029E14:
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ bl FUN_02029E2C
+ cmp r0, #0x0
+ beq _02029E22
+ add r5, r5, #0x1
+_02029E22:
+ add r4, r4, #0x1
+ cmp r4, #0x51
+ blt _02029E14
+ add r0, r5, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02029E2C
+FUN_02029E2C: ; 0x02029E2C
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ sub r1, r5, #0x1
+ add r4, r0, #0x0
+ bl FUN_02029D14
+ sub r1, r5, #0x1
+ add r2, r4, r1
+ mov r1, #0x12
+ lsl r1, r1, #0x4
+ ldrb r1, [r2, r1]
+ add r0, r0, r1
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02029E48
+FUN_02029E48: ; 0x02029E48
+ mov r1, #0x0
+ strh r1, [r0, #0x0]
+ strb r1, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02029E54
+FUN_02029E54: ; 0x02029E54
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldrh r6, [r5, #0x0]
+ ldr r0, _02029EB8 ; =0x000003E7
+ cmp r6, r0
+ bne _02029E6C
+ ldrb r0, [r5, #0x2]
+ cmp r0, #0x3b
+ bne _02029E6C
+ ldrb r0, [r5, #0x3]
+ cmp r0, #0x3b
+ beq _02029EB4
+_02029E6C:
+ ldrb r0, [r5, #0x3]
+ ldrb r4, [r5, #0x2]
+ add r7, r0, r1
+ cmp r7, #0x3b
+ bls _02029EAE
+ add r0, r7, #0x0
+ mov r1, #0x3c
+ blx _u32_div_f
+ add r4, r4, r0
+ add r0, r7, #0x0
+ mov r1, #0x3c
+ blx _u32_div_f
+ add r7, r1, #0x0
+ cmp r4, #0x3b
+ bls _02029EAE
+ add r0, r4, #0x0
+ mov r1, #0x3c
+ blx _u32_div_f
+ add r6, r6, r0
+ add r0, r4, #0x0
+ mov r1, #0x3c
+ blx _u32_div_f
+ ldr r0, _02029EB8 ; =0x000003E7
+ add r4, r1, #0x0
+ cmp r6, r0
+ blo _02029EAE
+ mov r4, #0x3b
+ add r6, r0, #0x0
+ add r7, r4, #0x0
+_02029EAE:
+ strh r6, [r5, #0x0]
+ strb r4, [r5, #0x2]
+ strb r7, [r5, #0x3]
+_02029EB4:
+ pop {r3-r7, pc}
+ nop
+_02029EB8: .word 0x000003E7
+
+ thumb_func_start FUN_02029EBC
+FUN_02029EBC: ; 0x02029EBC
+ ldrh r0, [r0, #0x0]
+ bx lr
+
+ thumb_func_start FUN_02029EC0
+FUN_02029EC0: ; 0x02029EC0
+ ldrb r0, [r0, #0x2]
+ bx lr
+
+ thumb_func_start FUN_02029EC4
+FUN_02029EC4: ; 0x02029EC4
+ mov r0, #0xfb
+ lsl r0, r0, #0x2
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02029ECC
+FUN_02029ECC: ; 0x02029ECC
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r2, #0xfb
+ mov r0, #0x0
+ add r1, r4, #0x0
+ lsl r2, r2, #0x2
+ blx MIi_CpuClear32
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02029EE4
+FUN_02029EE4: ; 0x02029EE4
+ push {r4, lr}
+ mov r1, #0xfb
+ lsl r1, r1, #0x2
+ bl FUN_02016998
+ add r4, r0, #0x0
+ bl FUN_02029ECC
+ add r0, r4, #0x0
+ pop {r4, pc}
+
+ thumb_func_start FUN_02029EF8
+FUN_02029EF8: ; 0x02029EF8
+ ldr r3, _02029F00 ; =FUN_02022610
+ mov r1, #0x16
+ bx r3
+ nop
+_02029F00: .word FUN_02022610
+
+ thumb_func_start FUN_02029F04
+FUN_02029F04: ; 0x02029F04
+ ldr r0, [r0, #0x0]
+ bx lr
+
+ thumb_func_start FUN_02029F08
+FUN_02029F08: ; 0x02029F08
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02029F10
+FUN_02029F10: ; 0x02029F10
+ add r0, r0, #0x4
+ bx lr
+
+ thumb_func_start FUN_02029F14
+FUN_02029F14: ; 0x02029F14
+ push {r4-r7}
+ mov r5, #0x0
+ mov r2, #0xfa
+ add r4, r5, #0x0
+ mov r6, #0xf
+ lsl r2, r2, #0x2
+_02029F20:
+ ldrsb r7, [r1, r4]
+ add r3, r0, r5
+ and r7, r6
+ lsl r7, r7, #0x18
+ lsr r7, r7, #0x18
+ sub r7, #0x8
+ lsl r7, r7, #0x18
+ asr r7, r7, #0x14
+ strb r7, [r0, r5]
+ ldrsb r7, [r1, r4]
+ add r4, r4, #0x1
+ add r5, r5, #0x2
+ lsl r7, r7, #0x14
+ lsr r7, r7, #0x18
+ sub r7, #0x8
+ lsl r7, r7, #0x18
+ asr r7, r7, #0x14
+ strb r7, [r3, #0x1]
+ cmp r4, r2
+ blt _02029F20
+ pop {r4-r7}
+ bx lr
+
+ thumb_func_start FUN_02029F4C
+FUN_02029F4C: ; 0x02029F4C
+ push {r4-r7}
+ add r3, r0, #0x0
+ add r2, r1, #0x0
+ mov r0, #0x1
+ mov r1, #0x0
+ str r0, [r3, #0x0]
+ add r0, r1, #0x0
+_02029F5A:
+ ldrsb r4, [r2, r0]
+ add r6, r3, r1
+ add r7, r2, r0
+ asr r5, r4, #0x3
+ lsr r5, r5, #0x1c
+ add r5, r4, r5
+ lsl r4, r5, #0x14
+ asr r4, r4, #0x18
+ add r4, #0x8
+ strb r4, [r6, #0x4]
+ mov r4, #0x4
+ ldrsb r5, [r6, r4]
+ mov r4, #0x1
+ ldrsb r4, [r7, r4]
+ add r0, r0, #0x2
+ add r1, r1, #0x1
+ asr r7, r4, #0x3
+ lsr r7, r7, #0x1c
+ add r7, r4, r7
+ lsl r4, r7, #0x14
+ asr r4, r4, #0x18
+ add r4, #0x8
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x14
+ orr r4, r5
+ strb r4, [r6, #0x4]
+ mov r4, #0x7d
+ lsl r4, r4, #0x4
+ cmp r0, r4
+ blt _02029F5A
+ pop {r4-r7}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02029F9C
+FUN_02029F9C: ; 0x02029F9C
+ add r2, r0, #0x0
+ add r0, r1, #0x0
+ add r1, r2, #0x0
+ mov r2, #0xfb
+ ldr r3, _02029FAC ; =MIi_CpuCopyFast
+ lsl r2, r2, #0x2
+ bx r3
+ nop
+_02029FAC: .word MIi_CpuCopyFast
+
+ thumb_func_start FUN_02029FB0
+FUN_02029FB0: ; 0x02029FB0
+ mov r0, #0x53
+ lsl r0, r0, #0x2
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02029FB8
+FUN_02029FB8: ; 0x02029FB8
+ ldr r3, _02029FC4 ; =MIi_CpuClear32
+ mov r2, #0x53
+ add r1, r0, #0x0
+ mov r0, #0x0
+ lsl r2, r2, #0x2
+ bx r3
+ .balign 4
+_02029FC4: .word MIi_CpuClear32
+
+ thumb_func_start FUN_02029FC8
+FUN_02029FC8: ; 0x02029FC8
+ ldr r3, _02029FD0 ; =FUN_02022610
+ mov r1, #0x14
+ bx r3
+ nop
+_02029FD0: .word FUN_02022610
+
+ thumb_func_start FUN_02029FD4
+FUN_02029FD4: ; 0x02029FD4
+ push {r3, lr}
+ cmp r1, #0x2c
+ bge _02029FE0
+ lsl r1, r1, #0x2
+ ldr r0, [r0, r1]
+ pop {r3, pc}
+_02029FE0:
+ cmp r1, #0x79
+ bge _02029FF0
+ sub r1, #0x2c
+ lsl r1, r1, #0x1
+ add r0, r0, r1
+ add r0, #0xb0
+ ldrh r0, [r0, #0x0]
+ pop {r3, pc}
+_02029FF0:
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_02029FF8
+FUN_02029FF8: ; 0x02029FF8
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ cmp r4, #0x2c
+ bge _0202A008
+ lsl r0, r4, #0x2
+ str r2, [r5, r0]
+ b _0202A01E
+_0202A008:
+ cmp r4, #0x79
+ bge _0202A01A
+ add r0, r4, #0x0
+ sub r0, #0x2c
+ lsl r0, r0, #0x1
+ add r0, r5, r0
+ add r0, #0xb0
+ strh r2, [r0, #0x0]
+ b _0202A01E
+_0202A01A:
+ bl ErrorHandling
+_0202A01E:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02029FD4
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0202A028
+FUN_0202A028: ; 0x0202A028
+ push {r3, lr}
+ cmp r0, #0x2c
+ bge _0202A03E
+ ldr r1, _0202A05C ; =0x02105CD8
+ ldrb r0, [r1, r0]
+ cmp r0, #0x0
+ beq _0202A03A
+ ldr r0, _0202A060 ; =0x3B9AC9FF
+ pop {r3, pc}
+_0202A03A:
+ ldr r0, _0202A064 ; =0x000F423F
+ pop {r3, pc}
+_0202A03E:
+ cmp r0, #0x79
+ bge _0202A052
+ ldr r1, _0202A05C ; =0x02105CD8
+ ldrb r0, [r1, r0]
+ cmp r0, #0x0
+ beq _0202A04E
+ ldr r0, _0202A068 ; =0x0000FFFF
+ pop {r3, pc}
+_0202A04E:
+ ldr r0, _0202A06C ; =0x0000270F
+ pop {r3, pc}
+_0202A052:
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r3, pc}
+ nop
+_0202A05C: .word 0x02105CD8
+_0202A060: .word 0x3B9AC9FF
+_0202A064: .word 0x000F423F
+_0202A068: .word 0x0000FFFF
+_0202A06C: .word 0x0000270F
+
+ thumb_func_start FUN_0202A070
+FUN_0202A070: ; 0x0202A070
+ lsl r1, r0, #0x1
+ ldr r0, _0202A078 ; =0x020EEA7C
+ ldrh r0, [r0, r1]
+ bx lr
+ .balign 4
+_0202A078: .word 0x020EEA7C
+
+ thumb_func_start FUN_0202A07C
+FUN_0202A07C: ; 0x0202A07C
+ push {r4-r6, lr}
+ add r5, r1, #0x0
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ add r4, r2, #0x0
+ bl FUN_0202A028
+ add r2, r0, #0x0
+ cmp r4, r2
+ bhs _0202A09C
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_02029FF8
+ pop {r4-r6, pc}
+_0202A09C:
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ bl FUN_02029FF8
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202A0A8
+FUN_0202A0A8: ; 0x0202A0A8
+ push {r3-r7, lr}
+ add r6, r1, #0x0
+ add r7, r0, #0x0
+ add r0, r6, #0x0
+ add r5, r2, #0x0
+ bl FUN_0202A028
+ add r4, r0, #0x0
+ add r0, r7, #0x0
+ add r1, r6, #0x0
+ bl FUN_02029FD4
+ cmp r5, r4
+ bls _0202A0C6
+ add r5, r4, #0x0
+_0202A0C6:
+ cmp r0, r5
+ bhs _0202A0D6
+ add r0, r7, #0x0
+ add r1, r6, #0x0
+ add r2, r5, #0x0
+ bl FUN_02029FF8
+ pop {r3-r7, pc}
+_0202A0D6:
+ cmp r0, r4
+ bls _0202A0E4
+ add r0, r7, #0x0
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ bl FUN_02029FF8
+_0202A0E4:
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202A0E8
+FUN_0202A0E8: ; 0x0202A0E8
+ push {r4-r6, lr}
+ add r6, r1, #0x0
+ add r5, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_0202A028
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02029FD4
+ add r2, r0, #0x1
+ cmp r2, r4
+ bhs _0202A10E
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02029FF8
+ pop {r4-r6, pc}
+_0202A10E:
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ bl FUN_02029FF8
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202A11C
+FUN_0202A11C: ; 0x0202A11C
+ push {r3-r7, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ add r7, r2, #0x0
+ bl FUN_0202A028
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02029FD4
+ add r2, r0, r7
+ cmp r2, r6
+ bhs _0202A144
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02029FF8
+ pop {r3-r7, pc}
+_0202A144:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_02029FF8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0202A150
+FUN_0202A150: ; 0x0202A150
+ push {r4-r6, lr}
+ add r6, r1, #0x0
+ add r5, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_0202A028
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02029FD4
+ cmp r0, r4
+ bhi _0202A16C
+ add r4, r0, #0x0
+_0202A16C:
+ add r0, r4, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0202A170
+FUN_0202A170: ; 0x0202A170
+ push {r4-r6, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ cmp r4, #0x26
+ blt _0202A17E
+ bl ErrorHandling
+_0202A17E:
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_0202A150
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0202A070
+ ldr r2, _0202A1B4 ; =0x05F5E0FF
+ add r0, r6, r0
+ cmp r0, r2
+ bls _0202A1A0
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_0202A07C
+ pop {r4-r6, pc}
+_0202A1A0:
+ add r0, r4, #0x0
+ bl FUN_0202A070
+ add r2, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_0202A11C
+ pop {r4-r6, pc}
+ nop
+_0202A1B4: .word 0x05F5E0FF
+
+ thumb_func_start FUN_0202A1B8
+FUN_0202A1B8: ; 0x0202A1B8
+ ldr r3, _0202A1C0 ; =FUN_0202A150
+ mov r1, #0x0
+ bx r3
+ nop
+_0202A1C0: .word FUN_0202A150
+
+ thumb_func_start FUN_0202A1C4
+FUN_0202A1C4: ; 0x0202A1C4
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, r1, #0x0
+ add r1, r2, #0x0
+ bl FUN_02024594
+ cmp r0, #0x0
+ bne _0202A1DC
+ add r0, r4, #0x0
+ mov r1, #0x16
+ bl FUN_0202A170
+_0202A1DC:
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202A1E0
+FUN_0202A1E0: ; 0x0202A1E0
+ mov r0, #0xe4
+ bx lr
+
+ thumb_func_start FUN_0202A1E4
+FUN_0202A1E4: ; 0x0202A1E4
+ ldr r3, _0202A1EC ; =MI_CpuFill8
+ mov r1, #0x0
+ mov r2, #0x3c
+ bx r3
+ .balign 4
+_0202A1EC: .word MI_CpuFill8
+
+ thumb_func_start FUN_0202A1F0
+FUN_0202A1F0: ; 0x0202A1F0
+ push {r4, lr}
+ mov r2, #0x5a
+ mov r1, #0x0
+ lsl r2, r2, #0x2
+ add r4, r0, #0x0
+ blx MI_CpuFill8
+ mov r0, #0x1
+ strb r0, [r4, #0x3]
+ pop {r4, pc}
+
+ thumb_func_start FUN_0202A204
+FUN_0202A204: ; 0x0202A204
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r1, #0x0
+ bl FUN_02013764
+ add r0, r4, #0x0
+ add r0, #0x8
+ mov r1, #0x1
+ bl FUN_02013764
+ add r0, r4, #0x0
+ add r0, #0x10
+ mov r1, #0x2
+ bl FUN_02013764
+ add r4, #0x18
+ add r0, r4, #0x0
+ mov r1, #0x3
+ bl FUN_02013764
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202A230
+FUN_0202A230: ; 0x0202A230
+ ldr r3, _0202A238 ; =MI_CpuFill8
+ mov r1, #0x0
+ ldr r2, _0202A23C ; =0x00000B3C
+ bx r3
+ .balign 4
+_0202A238: .word MI_CpuFill8
+_0202A23C: .word 0x00000B3C
+
+ thumb_func_start FUN_0202A240
+FUN_0202A240: ; 0x0202A240
+ push {r3, lr}
+ cmp r1, #0xa
+ bhi _0202A2BE
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0202A252: ; jump table (using 16-bit offset)
+ .short _0202A268 - _0202A252 - 2; case 0
+ .short _0202A270 - _0202A252 - 2; case 1
+ .short _0202A274 - _0202A252 - 2; case 2
+ .short _0202A278 - _0202A252 - 2; case 3
+ .short _0202A27C - _0202A252 - 2; case 4
+ .short _0202A280 - _0202A252 - 2; case 5
+ .short _0202A28E - _0202A252 - 2; case 6
+ .short _0202A29C - _0202A252 - 2; case 7
+ .short _0202A2A4 - _0202A252 - 2; case 8
+ .short _0202A2B2 - _0202A252 - 2; case 9
+ .short _0202A2BA - _0202A252 - 2; case 10
+_0202A268:
+ ldrb r0, [r0, #0x0]
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x1d
+ pop {r3, pc}
+_0202A270:
+ ldrb r0, [r0, #0x2]
+ pop {r3, pc}
+_0202A274:
+ ldrb r0, [r0, #0x3]
+ pop {r3, pc}
+_0202A278:
+ ldrh r0, [r0, #0x4]
+ pop {r3, pc}
+_0202A27C:
+ ldrh r0, [r0, #0x6]
+ pop {r3, pc}
+_0202A280:
+ add r1, r2, #0x0
+ add r0, #0x8
+ mov r2, #0x4
+ blx MI_CpuCopy8
+ mov r0, #0x0
+ pop {r3, pc}
+_0202A28E:
+ add r1, r2, #0x0
+ add r0, #0x2c
+ mov r2, #0x10
+ blx MI_CpuCopy8
+ mov r0, #0x0
+ pop {r3, pc}
+_0202A29C:
+ ldrb r0, [r0, #0x0]
+ lsl r0, r0, #0x1f
+ lsr r0, r0, #0x1f
+ pop {r3, pc}
+_0202A2A4:
+ add r1, r2, #0x0
+ add r0, #0xc
+ mov r2, #0x1c
+ blx MI_CpuCopy8
+ mov r0, #0x0
+ pop {r3, pc}
+_0202A2B2:
+ ldrb r0, [r0, #0x0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1d
+ pop {r3, pc}
+_0202A2BA:
+ ldr r0, [r0, #0x28]
+ pop {r3, pc}
+_0202A2BE:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202A2C4
+FUN_0202A2C4: ; 0x0202A2C4
+ push {r4, lr}
+ add r3, r0, #0x0
+ cmp r1, #0xa
+ bhi _0202A36A
+ add r0, r1, r1
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0202A2D8: ; jump table (using 16-bit offset)
+ .short _0202A2EE - _0202A2D8 - 2; case 0
+ .short _0202A300 - _0202A2D8 - 2; case 1
+ .short _0202A306 - _0202A2D8 - 2; case 2
+ .short _0202A30C - _0202A2D8 - 2; case 3
+ .short _0202A312 - _0202A2D8 - 2; case 4
+ .short _0202A318 - _0202A2D8 - 2; case 5
+ .short _0202A326 - _0202A2D8 - 2; case 6
+ .short _0202A334 - _0202A2D8 - 2; case 7
+ .short _0202A346 - _0202A2D8 - 2; case 8
+ .short _0202A35A - _0202A2D8 - 2; case 9
+ .short _0202A354 - _0202A2D8 - 2; case 10
+_0202A2EE:
+ ldrb r1, [r3, #0x0]
+ mov r0, #0x1c
+ bic r1, r0
+ ldrb r0, [r2, #0x0]
+ lsl r0, r0, #0x1d
+ lsr r0, r0, #0x1b
+ orr r0, r1
+ strb r0, [r3, #0x0]
+ pop {r4, pc}
+_0202A300:
+ ldrb r0, [r2, #0x0]
+ strb r0, [r3, #0x2]
+ pop {r4, pc}
+_0202A306:
+ ldrb r0, [r2, #0x0]
+ strb r0, [r3, #0x3]
+ pop {r4, pc}
+_0202A30C:
+ ldrh r0, [r2, #0x0]
+ strh r0, [r3, #0x4]
+ pop {r4, pc}
+_0202A312:
+ ldrh r0, [r2, #0x0]
+ strh r0, [r3, #0x6]
+ pop {r4, pc}
+_0202A318:
+ add r3, #0x8
+ add r0, r2, #0x0
+ add r1, r3, #0x0
+ mov r2, #0x4
+ blx MI_CpuCopy8
+ pop {r4, pc}
+_0202A326:
+ add r3, #0x2c
+ add r0, r2, #0x0
+ add r1, r3, #0x0
+ mov r2, #0x10
+ blx MI_CpuCopy8
+ pop {r4, pc}
+_0202A334:
+ ldrb r4, [r3, #0x0]
+ ldrb r1, [r2, #0x0]
+ mov r0, #0x1
+ bic r4, r0
+ mov r0, #0x1
+ and r0, r1
+ orr r0, r4
+ strb r0, [r3, #0x0]
+ pop {r4, pc}
+_0202A346:
+ add r3, #0xc
+ add r0, r2, #0x0
+ add r1, r3, #0x0
+ mov r2, #0x1c
+ blx MI_CpuCopy8
+ pop {r4, pc}
+_0202A354:
+ ldr r0, [r2, #0x0]
+ str r0, [r3, #0x28]
+ pop {r4, pc}
+_0202A35A:
+ ldrb r1, [r3, #0x0]
+ mov r0, #0xe0
+ bic r1, r0
+ ldrb r0, [r2, #0x0]
+ lsl r0, r0, #0x1d
+ lsr r0, r0, #0x18
+ orr r0, r1
+ strb r0, [r3, #0x0]
+_0202A36A:
+ pop {r4, pc}
+
+ thumb_func_start FUN_0202A36C
+FUN_0202A36C: ; 0x0202A36C
+ push {r3-r4}
+ ldrb r4, [r0, #0x3]
+ add r1, r4, r1
+ cmp r1, #0xff
+ bge _0202A378
+ strb r1, [r0, #0x3]
+_0202A378:
+ ldrh r1, [r0, #0x4]
+ add r2, r1, r2
+ ldr r1, _0202A394 ; =0x0000FFFF
+ cmp r2, r1
+ bge _0202A384
+ strh r2, [r0, #0x4]
+_0202A384:
+ ldrh r1, [r0, #0x6]
+ add r2, r1, r3
+ ldr r1, _0202A394 ; =0x0000FFFF
+ cmp r2, r1
+ bge _0202A390
+ strh r2, [r0, #0x6]
+_0202A390:
+ pop {r3-r4}
+ bx lr
+ .balign 4
+_0202A394: .word 0x0000FFFF
+
+ thumb_func_start FUN_0202A398
+FUN_0202A398: ; 0x0202A398
+ ldrb r0, [r0, #0x0]
+ lsl r0, r0, #0x1e
+ lsr r0, r0, #0x1f
+ bx lr
+
+ thumb_func_start FUN_0202A3A0
+FUN_0202A3A0: ; 0x0202A3A0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ lsl r1, r1, #0x1f
+ ldrb r3, [r0, #0x0]
+ mov r2, #0x2
+ lsr r1, r1, #0x1e
+ bic r3, r2
+ orr r1, r3
+ strb r1, [r0, #0x0]
+ bx lr
+
+ thumb_func_start FUN_0202A3B4
+FUN_0202A3B4: ; 0x0202A3B4
+ cmp r2, #0x6
+ bhi _0202A402
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_0202A3C4: ; jump table (using 16-bit offset)
+ .short _0202A402 - _0202A3C4 - 2; case 0
+ .short _0202A3D2 - _0202A3C4 - 2; case 1
+ .short _0202A402 - _0202A3C4 - 2; case 2
+ .short _0202A402 - _0202A3C4 - 2; case 3
+ .short _0202A402 - _0202A3C4 - 2; case 4
+ .short _0202A3E0 - _0202A3C4 - 2; case 5
+ .short _0202A3F2 - _0202A3C4 - 2; case 6
+_0202A3D2:
+ ldr r2, _0202A408 ; =0x0000270F
+ cmp r1, r2
+ bls _0202A3DC
+ strh r2, [r0, #0x0]
+ b _0202A402
+_0202A3DC:
+ strh r1, [r0, #0x0]
+ b _0202A402
+_0202A3E0:
+ ldrh r2, [r0, #0x0]
+ add r2, r2, r1
+ ldr r1, _0202A408 ; =0x0000270F
+ cmp r2, r1
+ ble _0202A3EE
+ strh r1, [r0, #0x0]
+ b _0202A402
+_0202A3EE:
+ strh r2, [r0, #0x0]
+ b _0202A402
+_0202A3F2:
+ ldrh r2, [r0, #0x0]
+ cmp r2, r1
+ bhs _0202A3FE
+ mov r1, #0x0
+ strh r1, [r0, #0x0]
+ b _0202A402
+_0202A3FE:
+ sub r1, r2, r1
+ strh r1, [r0, #0x0]
+_0202A402:
+ ldrh r0, [r0, #0x0]
+ bx lr
+ nop
+_0202A408: .word 0x0000270F
+
+ thumb_func_start FUN_0202A40C
+FUN_0202A40C: ; 0x0202A40C
+ cmp r1, #0x2
+ beq _0202A416
+ cmp r1, #0x3
+ beq _0202A424
+ b _0202A440
+_0202A416:
+ mov r1, #0x0
+ strb r1, [r0, #0x2]
+ ldrh r2, [r0, #0x8]
+ mov r1, #0x10
+ bic r2, r1
+ strh r2, [r0, #0x8]
+ b _0202A440
+_0202A424:
+ ldrh r1, [r0, #0x8]
+ lsl r1, r1, #0x1b
+ lsr r1, r1, #0x1f
+ beq _0202A434
+ ldrb r1, [r0, #0x2]
+ add r1, r1, #0x1
+ strb r1, [r0, #0x2]
+ b _0202A440
+_0202A434:
+ mov r1, #0x1
+ strb r1, [r0, #0x2]
+ ldrh r2, [r0, #0x8]
+ mov r1, #0x10
+ orr r1, r2
+ strh r1, [r0, #0x8]
+_0202A440:
+ ldrb r0, [r0, #0x2]
+ bx lr
+
+ thumb_func_start FUN_0202A444
+FUN_0202A444: ; 0x0202A444
+ cmp r1, #0x2
+ beq _0202A452
+ cmp r1, #0x3
+ beq _0202A458
+ cmp r1, #0x4
+ beq _0202A464
+ b _0202A46E
+_0202A452:
+ mov r1, #0x1
+ strb r1, [r0, #0x3]
+ b _0202A46E
+_0202A458:
+ ldrb r1, [r0, #0x3]
+ cmp r1, #0xa
+ bhs _0202A46E
+ add r1, r1, #0x1
+ strb r1, [r0, #0x3]
+ b _0202A46E
+_0202A464:
+ ldrb r1, [r0, #0x3]
+ cmp r1, #0x1
+ bls _0202A46E
+ sub r1, r1, #0x1
+ strb r1, [r0, #0x3]
+_0202A46E:
+ ldrb r0, [r0, #0x3]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0202A474
+FUN_0202A474: ; 0x0202A474
+ push {r3, lr}
+ add r3, r0, #0x0
+ cmp r1, #0x0
+ bne _0202A48A
+ add r3, #0xc0
+ add r0, r2, #0x0
+ add r1, r3, #0x0
+ mov r2, #0xa8
+ blx MI_CpuCopy8
+ pop {r3, pc}
+_0202A48A:
+ add r3, #0x18
+ add r0, r2, #0x0
+ add r1, r3, #0x0
+ mov r2, #0xa8
+ blx MI_CpuCopy8
+ pop {r3, pc}
+
+ thumb_func_start FUN_0202A498
+FUN_0202A498: ; 0x0202A498
+ push {r3, lr}
+ cmp r1, #0x0
+ bne _0202A4AA
+ add r1, r2, #0x0
+ add r0, #0xc0
+ mov r2, #0xa8
+ blx MI_CpuCopy8
+ pop {r3, pc}
+_0202A4AA:
+ add r1, r2, #0x0
+ add r0, #0x18
+ mov r2, #0xa8
+ blx MI_CpuCopy8
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202A4B8
+FUN_0202A4B8: ; 0x0202A4B8
+ push {r4-r6, lr}
+ add r6, r0, #0x0
+ ldrb r0, [r1, #0x2]
+ mov r2, #0xfa
+ lsl r2, r2, #0x2
+ sub r0, r0, #0x1
+ add r3, r0, #0x0
+ mul r3, r2
+ lsl r0, r3, #0x10
+ lsr r4, r0, #0x10
+ ldrh r3, [r1, #0x4]
+ mov r0, #0xa
+ ldrb r5, [r1, #0x3]
+ mul r0, r3
+ mov r3, #0x14
+ mul r3, r5
+ lsl r0, r0, #0x10
+ lsl r3, r3, #0x10
+ lsr r0, r0, #0x10
+ lsr r3, r3, #0x10
+ add r3, r0, r3
+ add r0, r2, #0x0
+ sub r0, #0x32
+ cmp r3, r0
+ ble _0202A4EE
+ mov r5, #0x0
+ b _0202A4F6
+_0202A4EE:
+ sub r2, #0x32
+ sub r0, r2, r3
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+_0202A4F6:
+ ldrh r1, [r1, #0x6]
+ ldr r0, _0202A51C ; =0x000003CA
+ cmp r1, r0
+ bls _0202A502
+ mov r1, #0x0
+ b _0202A510
+_0202A502:
+ add r0, #0x1e
+ sub r0, r0, r1
+ mov r1, #0x1e
+ blx _s32_div_f
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+_0202A510:
+ add r0, r4, r5
+ add r0, r1, r0
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ strh r0, [r6, #0x16]
+ pop {r4-r6, pc}
+ .balign 4
+_0202A51C: .word 0x000003CA
+
+ thumb_func_start FUN_0202A520
+FUN_0202A520: ; 0x0202A520
+ ldrh r0, [r0, #0x16]
+ bx lr
+
+ thumb_func_start FUN_0202A524
+FUN_0202A524: ; 0x0202A524
+ push {r3, lr}
+ ldrh r0, [r0, #0x16]
+ mov r1, #0xfa
+ lsl r1, r1, #0x2
+ blx _s32_div_f
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202A538
+FUN_0202A538: ; 0x0202A538
+ push {r4-r5}
+ cmp r1, #0x5
+ bne _0202A544
+ mov r0, #0x0
+ pop {r4-r5}
+ bx lr
+_0202A544:
+ cmp r2, #0x2
+ beq _0202A54E
+ cmp r2, #0x3
+ beq _0202A558
+ b _0202A56A
+_0202A54E:
+ lsl r2, r1, #0x1
+ mov r3, #0x0
+ add r2, r0, r2
+ strh r3, [r2, #0xc]
+ b _0202A56A
+_0202A558:
+ add r5, r0, #0x0
+ add r5, #0xc
+ lsl r4, r1, #0x1
+ ldrh r3, [r5, r4]
+ ldr r2, _0202A574 ; =0x0000FFFE
+ cmp r3, r2
+ bhs _0202A56A
+ add r2, r3, #0x1
+ strh r2, [r5, r4]
+_0202A56A:
+ lsl r1, r1, #0x1
+ add r0, r0, r1
+ ldrh r0, [r0, #0xc]
+ pop {r4-r5}
+ bx lr
+ .balign 4
+_0202A574: .word 0x0000FFFE
+
+ thumb_func_start FUN_0202A578
+FUN_0202A578: ; 0x0202A578
+ push {r3-r4}
+ mov r3, #0x1
+ mov r4, #0x0
+ cmp r1, #0x0
+ bls _0202A590
+_0202A582:
+ add r4, r4, #0x1
+ lsl r4, r4, #0x10
+ lsl r3, r3, #0x11
+ lsr r4, r4, #0x10
+ lsr r3, r3, #0x10
+ cmp r4, r1
+ blo _0202A582
+_0202A590:
+ cmp r2, #0x0
+ beq _0202A5B4
+ cmp r2, #0x1
+ beq _0202A5AC
+ cmp r2, #0x2
+ bne _0202A5C2
+ ldr r1, _0202A5C8 ; =0x0000FFFF
+ eor r1, r3
+ lsl r1, r1, #0x10
+ lsr r2, r1, #0x10
+ ldrh r1, [r0, #0x8]
+ and r1, r2
+ strh r1, [r0, #0x8]
+ b _0202A5C2
+_0202A5AC:
+ ldrh r1, [r0, #0x8]
+ orr r1, r3
+ strh r1, [r0, #0x8]
+ b _0202A5C2
+_0202A5B4:
+ ldrh r0, [r0, #0x8]
+ add r2, r0, #0x0
+ asr r2, r1
+ mov r0, #0x1
+ and r0, r2
+ pop {r3-r4}
+ bx lr
+_0202A5C2:
+ mov r0, #0x0
+ pop {r3-r4}
+ bx lr
+ .balign 4
+_0202A5C8: .word 0x0000FFFF
+
+ thumb_func_start FUN_0202A5CC
+FUN_0202A5CC: ; 0x0202A5CC
+ str r1, [r0, #0x4]
+ bx lr
+
+ thumb_func_start FUN_0202A5D0
+FUN_0202A5D0: ; 0x0202A5D0
+ ldr r0, [r0, #0x4]
+ bx lr
+
+ thumb_func_start FUN_0202A5D4
+FUN_0202A5D4: ; 0x0202A5D4
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ mov r1, #0x17
+ add r4, r2, #0x0
+ bl FUN_02022610
+ mov r1, #0x69
+ lsl r1, r1, #0x2
+ add r1, r0, r1
+ lsl r0, r5, #0x3
+ add r0, r1, r0
+ add r1, r4, #0x0
+ bl FUN_02013960
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202A5F4
+FUN_0202A5F4: ; 0x0202A5F4
+ push {r4, lr}
+ add r4, r1, #0x0
+ mov r1, #0x17
+ bl FUN_02022610
+ mov r1, #0x69
+ lsl r1, r1, #0x2
+ add r1, r0, r1
+ lsl r0, r4, #0x3
+ add r0, r1, r0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202A60C
+FUN_0202A60C: ; 0x0202A60C
+ push {r3-r6}
+ add r4, r3, #0x0
+ mov r3, #0x1
+ cmp r2, #0x0
+ beq _0202A66C
+ cmp r2, #0xc8
+ bhi _0202A66C
+ cmp r1, #0x0
+ beq _0202A66C
+ cmp r1, #0xa
+ bhi _0202A66C
+ sub r5, r2, #0x1
+ sub r2, r1, #0x1
+ mov r1, #0xc8
+ mul r1, r2
+ add r1, r5, r1
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ lsr r6, r1, #0x1f
+ lsl r5, r1, #0x1d
+ sub r5, r5, r6
+ mov r2, #0x1d
+ ror r5, r2
+ add r2, r6, r5
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+ lsl r3, r2
+ lsl r2, r3, #0x18
+ lsl r1, r1, #0x15
+ lsr r5, r2, #0x18
+ add r3, r0, #0x4
+ lsr r2, r1, #0x18
+ ldrb r1, [r3, r2]
+ orr r1, r5
+ strb r1, [r3, r2]
+ ldr r3, [r4, #0x0]
+ ldr r1, [r4, #0x8]
+ lsl r5, r3, #0x18
+ ldr r3, [r4, #0x4]
+ lsl r1, r1, #0x18
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x8
+ ldr r2, [r4, #0xc]
+ lsr r1, r1, #0x10
+ orr r3, r5
+ orr r1, r3
+ orr r1, r2
+ str r1, [r0, #0x0]
+_0202A66C:
+ pop {r3-r6}
+ bx lr
+
+ thumb_func_start FUN_0202A670
+FUN_0202A670: ; 0x0202A670
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, r4, #0x4
+ mov r1, #0x0
+ mov r2, #0xfa
+ blx MI_CpuFill8
+ add r0, r4, #0x0
+ mov r1, #0x0
+ mov r2, #0x4
+ blx MI_CpuFill8
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202A68C
+FUN_0202A68C: ; 0x0202A68C
+ ldr r3, [r0, #0x0]
+ ldr r2, [r1, #0x0]
+ cmp r3, r2
+ bls _0202A698
+ mov r0, #0x1
+ bx lr
+_0202A698:
+ ldr r3, [r0, #0x4]
+ ldr r2, [r1, #0x4]
+ cmp r3, r2
+ bls _0202A6A4
+ mov r0, #0x1
+ bx lr
+_0202A6A4:
+ ldr r2, [r0, #0x8]
+ ldr r0, [r1, #0x8]
+ cmp r2, r0
+ bls _0202A6B0
+ mov r0, #0x1
+ bx lr
+_0202A6B0:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_0202A6B4
+FUN_0202A6B4: ; 0x0202A6B4
+ push {r3-r7, lr}
+ sub sp, #0x10
+ add r6, r2, #0x0
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ mov r7, #0x1
+ cmp r6, #0xc8
+ bhi _0202A6C8
+ cmp r4, #0xa
+ bls _0202A6CE
+_0202A6C8:
+ add sp, #0x10
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0202A6CE:
+ ldr r0, [r5, #0x0]
+ lsr r1, r0, #0x18
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ str r1, [sp, #0x0]
+ lsr r1, r0, #0x10
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ str r1, [sp, #0x4]
+ lsr r1, r0, #0x8
+ lsl r1, r1, #0x18
+ lsl r0, r0, #0x18
+ lsr r1, r1, #0x18
+ lsr r0, r0, #0x18
+ str r1, [sp, #0x8]
+ str r0, [sp, #0xc]
+ add r0, r3, #0x0
+ add r1, sp, #0x0
+ bl FUN_0202A68C
+ cmp r0, #0x0
+ beq _0202A706
+ add r0, r5, #0x0
+ bl FUN_0202A670
+ add sp, #0x10
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0202A706:
+ sub r1, r4, #0x1
+ mov r0, #0xc8
+ mul r0, r1
+ sub r2, r6, #0x1
+ add r0, r2, r0
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ lsr r3, r0, #0x1f
+ lsl r2, r0, #0x1d
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ add r0, r5, r0
+ sub r2, r2, r3
+ mov r1, #0x1d
+ ror r2, r1
+ add r1, r3, r2
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ add r2, r7, #0x0
+ lsl r2, r1
+ lsl r1, r2, #0x18
+ ldrb r0, [r0, #0x4]
+ lsr r1, r1, #0x18
+ tst r0, r1
+ beq _0202A73E
+ add sp, #0x10
+ add r0, r7, #0x0
+ pop {r3-r7, pc}
+_0202A73E:
+ mov r0, #0x0
+ add sp, #0x10
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0202A744
+FUN_0202A744: ; 0x0202A744
+ add r0, #0xfe
+ ldrb r0, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0202A74C
+FUN_0202A74C: ; 0x0202A74C
+ add r0, #0xff
+ ldrb r0, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0202A754
+FUN_0202A754: ; 0x0202A754
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, r1, #0x0
+ mov r1, #0x41
+ add r4, r2, #0x0
+ lsl r1, r1, #0x2
+ ldr r2, _0202A77C ; =0x0000063C
+ add r1, r5, r1
+ add r6, r3, #0x0
+ blx MI_CpuCopy8
+ ldr r0, _0202A780 ; =0x00000101
+ strb r4, [r5, r0]
+ sub r0, r0, #0x1
+ strb r6, [r5, r0]
+ mov r0, #0x1
+ add r5, #0xfe
+ strb r0, [r5, #0x0]
+ pop {r4-r6, pc}
+ nop
+_0202A77C: .word 0x0000063C
+_0202A780: .word 0x00000101
+
+ thumb_func_start FUN_0202A784
+FUN_0202A784: ; 0x0202A784
+ ldr r2, _0202A794 ; =0x00000101
+ ldrb r3, [r0, r2]
+ sub r2, r2, #0x1
+ strb r3, [r1, #0x0]
+ ldrb r0, [r0, r2]
+ strb r0, [r1, #0x1]
+ bx lr
+ nop
+_0202A794: .word 0x00000101
+
+ thumb_func_start FUN_0202A798
+FUN_0202A798: ; 0x0202A798
+ push {r3-r7, lr}
+ add r6, r1, #0x0
+ mov r1, #0x41
+ lsl r1, r1, #0x2
+ add r5, r0, r1
+ mov r0, #0xe4
+ add r4, r2, #0x0
+ mul r4, r0
+ ldr r0, _0202A834 ; =0x00002710
+ add r7, r6, #0x0
+ str r0, [r6, #0x0]
+ add r0, r5, r4
+ add r0, #0xc9
+ ldrb r0, [r0, #0x0]
+ add r7, #0x30
+ strh r0, [r6, #0x4]
+ add r0, r5, r4
+ add r0, #0xc8
+ ldrb r0, [r0, #0x0]
+ lsl r0, r0, #0x1f
+ lsr r0, r0, #0x1f
+ beq _0202A7EE
+ mov r0, #0x0
+ mov r1, #0x1a
+ mov r2, #0x11
+ mov r3, #0xb
+ bl FUN_0200A86C
+ add r1, r5, r4
+ add r1, #0xc8
+ ldrb r1, [r1, #0x0]
+ add r2, r6, #0x0
+ str r0, [sp, #0x0]
+ lsl r1, r1, #0x1e
+ lsr r1, r1, #0x1f
+ add r1, #0x16
+ add r2, #0x8
+ bl FUN_0200A968
+ ldr r0, [sp, #0x0]
+ bl FUN_0200A8B8
+ b _0202A7FC
+_0202A7EE:
+ add r0, r5, r4
+ add r1, r6, #0x0
+ add r0, #0xa8
+ add r1, #0x8
+ mov r2, #0x10
+ blx MI_CpuCopy8
+_0202A7FC:
+ add r0, r5, r4
+ add r1, r6, #0x0
+ add r0, #0xca
+ add r1, #0x18
+ mov r2, #0x8
+ blx MI_CpuCopy8
+ add r0, r5, r4
+ add r1, r6, #0x0
+ add r0, #0xd2
+ add r1, #0x20
+ mov r2, #0x8
+ blx MI_CpuCopy8
+ add r0, r5, r4
+ add r6, #0x28
+ add r0, #0xda
+ add r1, r6, #0x0
+ mov r2, #0x8
+ blx MI_CpuCopy8
+ add r0, r5, r4
+ add r1, r7, #0x0
+ mov r2, #0xa8
+ blx MI_CpuCopy8
+ pop {r3-r7, pc}
+ nop
+_0202A834: .word 0x00002710
+
+ thumb_func_start FUN_0202A838
+FUN_0202A838: ; 0x0202A838
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, r1, #0x0
+ mov r1, #0x1d
+ add r4, r2, #0x0
+ lsl r1, r1, #0x6
+ mov r2, #0xff
+ add r1, r5, r1
+ lsl r2, r2, #0x2
+ add r6, r3, #0x0
+ blx MI_CpuCopy8
+ ldr r0, _0202A860 ; =0x00000103
+ strb r4, [r5, r0]
+ sub r0, r0, #0x1
+ strb r6, [r5, r0]
+ mov r0, #0x1
+ add r5, #0xff
+ strb r0, [r5, #0x0]
+ pop {r4-r6, pc}
+ .balign 4
+_0202A860: .word 0x00000103
+
+ thumb_func_start FUN_0202A864
+FUN_0202A864: ; 0x0202A864
+ ldr r2, _0202A874 ; =0x00000103
+ ldrb r3, [r0, r2]
+ sub r2, r2, #0x1
+ strb r3, [r1, #0x0]
+ ldrb r0, [r0, r2]
+ strb r0, [r1, #0x1]
+ bx lr
+ nop
+_0202A874: .word 0x00000103
+
+ thumb_func_start FUN_0202A878
+FUN_0202A878: ; 0x0202A878
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, r1, #0x0
+ mov r1, #0xff
+ lsl r1, r1, #0x2
+ bl FUN_02016998
+ add r4, r0, #0x0
+ mov r0, #0x1d
+ lsl r0, r0, #0x6
+ mov r2, #0xff
+ add r0, r5, r0
+ add r1, r4, #0x0
+ lsl r2, r2, #0x2
+ blx MI_CpuCopy8
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0202A89C
+FUN_0202A89C: ; 0x0202A89C
+ mov r0, #0xd
+ lsl r0, r0, #0x8
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0202A8A4
+FUN_0202A8A4: ; 0x0202A8A4
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_0202A1E4
+ add r0, r4, #0x0
+ add r0, #0x3c
+ bl FUN_0202A1F0
+ mov r0, #0x69
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_0202A204
+ mov r0, #0x71
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_0202A230
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202A8CC
+FUN_0202A8CC: ; 0x0202A8CC
+ ldr r3, _0202A8D4 ; =FUN_02022610
+ mov r1, #0x17
+ bx r3
+ nop
+_0202A8D4: .word FUN_02022610
+
+ thumb_func_start FUN_0202A8D8
+FUN_0202A8D8: ; 0x0202A8D8
+ push {r3, lr}
+ mov r1, #0x17
+ bl FUN_02022610
+ add r0, #0x3c
+ pop {r3, pc}
+
+ thumb_func_start FUN_0202A8E4
+FUN_0202A8E4: ; 0x0202A8E4
+ push {r3, lr}
+ mov r1, #0x17
+ bl FUN_02022610
+ mov r1, #0x71
+ lsl r1, r1, #0x2
+ add r0, r0, r1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0202A8F4
+FUN_0202A8F4: ; 0x0202A8F4
+ mov r0, #0xe
+ bx lr
+
+ thumb_func_start FUN_0202A8F8
+FUN_0202A8F8: ; 0x0202A8F8
+ mov r1, #0x0
+ strb r1, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ strb r1, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ strb r1, [r0, #0x4]
+ strb r1, [r0, #0x5]
+ strb r1, [r0, #0x6]
+ strb r1, [r0, #0x7]
+ strb r1, [r0, #0x8]
+ strb r1, [r0, #0x9]
+ strb r1, [r0, #0xa]
+ strb r1, [r0, #0xb]
+ strb r1, [r0, #0xc]
+ strb r1, [r0, #0xd]
+ bx lr
+
+ thumb_func_start FUN_0202A918
+FUN_0202A918: ; 0x0202A918
+ ldr r3, _0202A920 ; =FUN_02022610
+ mov r1, #0x18
+ bx r3
+ nop
+_0202A920: .word FUN_02022610
+
+ thumb_func_start FUN_0202A924
+FUN_0202A924: ; 0x0202A924
+ mov r0, #0x45
+ lsl r0, r0, #0x2
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0202A92C
+FUN_0202A92C: ; 0x0202A92C
+ push {r4, lr}
+ mov r2, #0x45
+ add r4, r0, #0x0
+ mov r1, #0x0
+ lsl r2, r2, #0x2
+ blx FUN_020DF4A4
+ bl FUN_0201BA60
+ str r0, [r4, #0x0]
+ bl FUN_0201BA60
+ str r0, [r4, #0x4]
+ mov r1, #0x0
+ add r3, r4, #0x0
+ ldr r0, _0202A980 ; =0x0000FFFF
+ str r1, [r4, #0x8]
+ strh r0, [r4, #0xc]
+ strh r0, [r4, #0xe]
+ mov r0, #0x15
+ add r3, #0x10
+ strb r0, [r4, #0x10]
+ add r2, r1, #0x0
+_0202A95A:
+ str r2, [r3, #0x4]
+ strb r2, [r3, #0x8]
+ strb r2, [r3, #0x9]
+ strb r2, [r3, #0xa]
+ strb r2, [r3, #0xb]
+ add r1, r1, #0x1
+ add r3, #0x8
+ cmp r1, #0x15
+ blt _0202A95A
+ ldr r0, _0202A984 ; =0x0000010F
+ strb r2, [r4, r0]
+ add r1, r0, #0x1
+ strb r2, [r4, r1]
+ add r1, r0, #0x2
+ strb r2, [r4, r1]
+ add r0, r0, #0x3
+ strb r2, [r4, r0]
+ pop {r4, pc}
+ nop
+_0202A980: .word 0x0000FFFF
+_0202A984: .word 0x0000010F
+
+ thumb_func_start FUN_0202A988
+FUN_0202A988: ; 0x0202A988
+ str r1, [r0, #0x0]
+ str r1, [r0, #0x4]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0202A990
+FUN_0202A990: ; 0x0202A990
+ push {r3, lr}
+ cmp r1, #0x1
+ beq _0202A99C
+ cmp r1, #0x2
+ beq _0202A9A0
+ b _0202A9A4
+_0202A99C:
+ ldr r0, [r0, #0x0]
+ pop {r3, pc}
+_0202A9A0:
+ ldr r0, [r0, #0x4]
+ pop {r3, pc}
+_0202A9A4:
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_0202A9AC
+FUN_0202A9AC: ; 0x0202A9AC
+ add r0, #0xbc
+ bx lr
+
+ thumb_func_start FUN_0202A9B0
+FUN_0202A9B0: ; 0x0202A9B0
+ ldr r3, _0202A9B8 ; =FUN_02022610
+ mov r1, #0x19
+ bx r3
+ nop
+_0202A9B8: .word FUN_02022610
+
+ thumb_func_start FUN_0202A9BC
+FUN_0202A9BC: ; 0x0202A9BC
+ add r0, #0x10
+ bx lr
+
+ thumb_func_start FUN_0202A9C0
+FUN_0202A9C0: ; 0x0202A9C0
+ ldrb r0, [r0, #0x0]
+ bx lr
+
+ thumb_func_start FUN_0202A9C4
+FUN_0202A9C4: ; 0x0202A9C4
+ strb r0, [r1, #0x0]
+ bx lr
+
+ thumb_func_start FUN_0202A9C8
+FUN_0202A9C8: ; 0x0202A9C8
+ add r1, r1, #0x4
+ lsl r0, r0, #0x3
+ add r0, r1, r0
+ bx lr
+
+ thumb_func_start FUN_0202A9D0
+FUN_0202A9D0: ; 0x0202A9D0
+ push {r3-r7, lr}
+ add r5, r1, #0x0
+ bl FUN_0202A9B0
+ add r6, r0, #0x0
+ mov r4, #0x0
+ add r6, #0x10
+ add r7, r4, #0x0
+_0202A9E0:
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ add r1, r6, #0x0
+ bl FUN_0202A9C8
+ ldr r1, [r0, #0x0]
+ cmp r1, #0x0
+ beq _0202A9F8
+ sub r1, r1, r5
+ str r1, [r0, #0x0]
+ bpl _0202A9F8
+ str r7, [r0, #0x0]
+_0202A9F8:
+ add r4, r4, #0x1
+ cmp r4, #0x15
+ blt _0202A9E0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0202AA00
+FUN_0202AA00: ; 0x0202AA00
+ push {r3, lr}
+ bl FUN_0202A9B0
+ ldr r1, _0202AA10 ; =0x0000010F
+ mov r2, #0x1
+ strb r2, [r0, r1]
+ pop {r3, pc}
+ nop
+_0202AA10: .word 0x0000010F
+
+ thumb_func_start FUN_0202AA14
+FUN_0202AA14: ; 0x0202AA14
+ ldr r1, _0202AA1C ; =0x0000010F
+ ldrb r0, [r0, r1]
+ bx lr
+ nop
+_0202AA1C: .word 0x0000010F
+
+ thumb_func_start FUN_0202AA20
+FUN_0202AA20: ; 0x0202AA20
+ add r2, r0, #0x0
+ add r2, #0xc8
+ ldr r3, [r2, #0x0]
+ cmp r3, r1
+ beq _0202AA34
+ add r2, r0, #0x0
+ add r2, #0xcc
+ str r3, [r2, #0x0]
+ add r0, #0xc8
+ str r1, [r0, #0x0]
+_0202AA34:
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0202AA38
+FUN_0202AA38: ; 0x0202AA38
+ add r0, #0xcc
+ ldr r0, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0202AA40
+FUN_0202AA40: ; 0x0202AA40
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ cmp r4, #0x3
+ blo _0202AA4E
+ bl ErrorHandling
+_0202AA4E:
+ mov r0, #0x43
+ add r1, r5, r4
+ lsl r0, r0, #0x2
+ ldrb r0, [r1, r0]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0202AA58
+FUN_0202AA58: ; 0x0202AA58
+ push {r4-r6, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ cmp r4, #0x3
+ blo _0202AA68
+ bl ErrorHandling
+_0202AA68:
+ mov r0, #0x43
+ add r1, r5, r4
+ lsl r0, r0, #0x2
+ strb r6, [r1, r0]
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202AA74
+FUN_0202AA74: ; 0x0202AA74
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ cmp r4, #0x3
+ blo _0202AA82
+ bl ErrorHandling
+_0202AA82:
+ mov r0, #0x14
+ mul r0, r4
+ add r0, r5, r0
+ add r0, #0xe2
+ ldrb r0, [r0, #0x0]
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202AA90
+FUN_0202AA90: ; 0x0202AA90
+ ldr r2, [r0, #0x0]
+ mov r1, #0x14
+ mov r0, #0x0
+_0202AA96:
+ strb r0, [r2, #0x0]
+ add r2, r2, #0x1
+ sub r1, r1, #0x1
+ bne _0202AA96
+ bx lr
+
+ thumb_func_start FUN_0202AAA0
+FUN_0202AAA0: ; 0x0202AAA0
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ cmp r4, #0x3
+ blo _0202AAAE
+ bl ErrorHandling
+_0202AAAE:
+ mov r0, #0x14
+ add r5, #0xd0
+ mul r0, r4
+ add r0, r5, r0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0202AAB8
+FUN_0202AAB8: ; 0x0202AAB8
+ cmp r1, #0x8
+ bhi _0202AAF8
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0202AAC8: ; jump table (using 16-bit offset)
+ .short _0202AAF8 - _0202AAC8 - 2; case 0
+ .short _0202AADA - _0202AAC8 - 2; case 1
+ .short _0202AADE - _0202AAC8 - 2; case 2
+ .short _0202AAE2 - _0202AAC8 - 2; case 3
+ .short _0202AAE6 - _0202AAC8 - 2; case 4
+ .short _0202AAEA - _0202AAC8 - 2; case 5
+ .short _0202AAEE - _0202AAC8 - 2; case 6
+ .short _0202AAF2 - _0202AAC8 - 2; case 7
+ .short _0202AAF6 - _0202AAC8 - 2; case 8
+_0202AADA:
+ ldr r0, [r0, #0x0]
+ bx lr
+_0202AADE:
+ ldr r0, [r0, #0x4]
+ bx lr
+_0202AAE2:
+ ldr r0, [r0, #0x8]
+ bx lr
+_0202AAE6:
+ ldrh r0, [r0, #0xc]
+ bx lr
+_0202AAEA:
+ ldrh r0, [r0, #0xe]
+ bx lr
+_0202AAEE:
+ ldrb r0, [r0, #0x10]
+ bx lr
+_0202AAF2:
+ ldrb r0, [r0, #0x11]
+ bx lr
+_0202AAF6:
+ ldrb r0, [r0, #0x12]
+_0202AAF8:
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0202AAFC
+FUN_0202AAFC: ; 0x0202AAFC
+ cmp r1, #0x8
+ bhi _0202AB3C
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0202AB0C: ; jump table (using 16-bit offset)
+ .short _0202AB3C - _0202AB0C - 2; case 0
+ .short _0202AB1E - _0202AB0C - 2; case 1
+ .short _0202AB22 - _0202AB0C - 2; case 2
+ .short _0202AB26 - _0202AB0C - 2; case 3
+ .short _0202AB2A - _0202AB0C - 2; case 4
+ .short _0202AB2E - _0202AB0C - 2; case 5
+ .short _0202AB32 - _0202AB0C - 2; case 6
+ .short _0202AB36 - _0202AB0C - 2; case 7
+ .short _0202AB3A - _0202AB0C - 2; case 8
+_0202AB1E:
+ str r2, [r0, #0x0]
+ bx lr
+_0202AB22:
+ str r2, [r0, #0x4]
+ bx lr
+_0202AB26:
+ str r2, [r0, #0x8]
+ bx lr
+_0202AB2A:
+ strh r2, [r0, #0xc]
+ bx lr
+_0202AB2E:
+ strh r2, [r0, #0xe]
+ bx lr
+_0202AB32:
+ strb r2, [r0, #0x10]
+ bx lr
+_0202AB36:
+ strb r2, [r0, #0x11]
+ bx lr
+_0202AB3A:
+ strb r2, [r0, #0x12]
+_0202AB3C:
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0202AB40
+FUN_0202AB40: ; 0x0202AB40
+ ldr r1, _0202AB48 ; =0x00000111
+ add r0, r0, r1
+ bx lr
+ nop
+_0202AB48: .word 0x00000111
+
+ thumb_func_start FUN_0202AB4C
+FUN_0202AB4C: ; 0x0202AB4C
+ mov r1, #0x11
+ lsl r1, r1, #0x4
+ add r0, r0, r1
+ bx lr
+
+ thumb_func_start FUN_0202AB54
+FUN_0202AB54: ; 0x0202AB54
+ mov r1, #0x11
+ lsl r1, r1, #0x4
+ ldrb r0, [r0, r1]
+ cmp r0, #0x0
+ bne _0202AB62
+ mov r0, #0x1
+ bx lr
+_0202AB62:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0202AB68
+FUN_0202AB68: ; 0x0202AB68
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ cmp r4, #0x2
+ bls _0202AB76
+ bl ErrorHandling
+_0202AB76:
+ ldr r0, _0202AB7C ; =0x00000112
+ strb r4, [r5, r0]
+ pop {r3-r5, pc}
+ .balign 4
+_0202AB7C: .word 0x00000112
+
+ thumb_func_start FUN_0202AB80
+FUN_0202AB80: ; 0x0202AB80
+ ldr r1, _0202AB88 ; =0x00000112
+ ldrb r0, [r0, r1]
+ bx lr
+ nop
+_0202AB88: .word 0x00000112
+
+ thumb_func_start FUN_0202AB8C
+FUN_0202AB8C: ; 0x0202AB8C
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ add r4, r2, #0x0
+ bl FUN_0202A9B0
+ ldrh r1, [r0, #0xc]
+ strh r1, [r5, #0x0]
+ ldrh r0, [r0, #0xe]
+ strh r0, [r4, #0x0]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0202ABA0
+FUN_0202ABA0: ; 0x0202ABA0
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ bl FUN_0202A9B0
+ add r4, r0, #0x0
+ cmp r5, #0x10
+ blo _0202ABB2
+ bl ErrorHandling
+_0202ABB2:
+ ldrh r0, [r4, #0xc]
+ strh r0, [r4, #0xe]
+ strh r5, [r4, #0xc]
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202ABBC
+FUN_0202ABBC: ; 0x0202ABBC
+ ldr r3, _0202ABC4 ; =FUN_02022610
+ mov r1, #0x1a
+ bx r3
+ nop
+_0202ABC4: .word FUN_02022610
+
+ thumb_func_start FUN_0202ABC8
+FUN_0202ABC8: ; 0x0202ABC8
+ mov r0, #0xf4
+ bx lr
+
+ thumb_func_start FUN_0202ABCC
+FUN_0202ABCC: ; 0x0202ABCC
+ ldr r3, _0202ABD8 ; =MIi_CpuClearFast
+ add r1, r0, #0x0
+ mov r0, #0x0
+ mov r2, #0xf4
+ bx r3
+ nop
+_0202ABD8: .word MIi_CpuClearFast
+
+ thumb_func_start FUN_0202ABDC
+FUN_0202ABDC: ; 0x0202ABDC
+ add r0, #0xec
+ ldrh r0, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0202ABE4
+FUN_0202ABE4: ; 0x0202ABE4
+ add r0, #0xec
+ strh r1, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0202ABEC
+FUN_0202ABEC: ; 0x0202ABEC
+ ldr r3, _0202ABF4 ; =MIi_CpuCopyFast
+ mov r2, #0xec
+ bx r3
+ nop
+_0202ABF4: .word MIi_CpuCopyFast
+
+ thumb_func_start FUN_0202ABF8
+FUN_0202ABF8: ; 0x0202ABF8
+ ldr r3, _0202AC04 ; =MIi_CpuCopyFast
+ add r2, r0, #0x0
+ add r0, r1, #0x0
+ add r1, r2, #0x0
+ mov r2, #0xec
+ bx r3
+ .balign 4
+_0202AC04: .word MIi_CpuCopyFast
+
+ thumb_func_start FUN_0202AC08
+FUN_0202AC08: ; 0x0202AC08
+ add r0, #0xf0
+ ldr r0, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0202AC10
+FUN_0202AC10: ; 0x0202AC10
+ add r0, #0xf0
+ str r1, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0202AC18
+FUN_0202AC18: ; 0x0202AC18
+ add r0, #0xee
+ ldrh r0, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0202AC20
+FUN_0202AC20: ; 0x0202AC20
+ ldr r0, _0202AC24 ; =0x00001354
+ bx lr
+ .balign 4
+_0202AC24: .word 0x00001354
+
+ thumb_func_start FUN_0202AC28
+FUN_0202AC28: ; 0x0202AC28
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0202AC2C
+FUN_0202AC2C: ; 0x0202AC2C
+ push {r4-r6, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ cmp r4, #0x8
+ blt _0202AC3A
+ bl ErrorHandling
+_0202AC3A:
+ mov r0, #0x1
+ lsl r0, r0, #0x8
+ add r6, r5, r0
+ lsl r3, r4, #0x2
+ ldr r2, [r6, r3]
+ ldr r1, _0202AC60 ; =0xEDB88320
+ cmp r2, r1
+ bne _0202AC58
+ add r0, #0x2c
+ add r1, r5, r0
+ lsl r0, r4, #0x6
+ add r0, r4, r0
+ lsl r0, r0, #0x2
+ add r0, r1, r0
+ pop {r4-r6, pc}
+_0202AC58:
+ mov r0, #0x0
+ str r0, [r6, r3]
+ pop {r4-r6, pc}
+ nop
+_0202AC60: .word 0xEDB88320
+
+ thumb_func_start FUN_0202AC64
+FUN_0202AC64: ; 0x0202AC64
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ cmp r4, #0x3
+ blt _0202AC72
+ bl ErrorHandling
+_0202AC72:
+ lsl r0, r4, #0x2
+ add r1, r5, r0
+ mov r0, #0x12
+ lsl r0, r0, #0x4
+ ldr r0, [r1, r0]
+ cmp r0, #0x0
+ beq _0202AC8E
+ ldr r0, _0202AC94 ; =0x0000094C
+ add r1, r5, r0
+ mov r0, #0xd6
+ lsl r0, r0, #0x2
+ mul r0, r4
+ add r0, r1, r0
+ pop {r3-r5, pc}
+_0202AC8E:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ nop
+_0202AC94: .word 0x0000094C
+
+ thumb_func_start FUN_0202AC98
+FUN_0202AC98: ; 0x0202AC98
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ str r1, [sp, #0x0]
+ add r7, r2, #0x0
+ bl FUN_0202ADF0
+ cmp r0, #0x0
+ bne _0202ACAC
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0202ACAC:
+ mov r0, #0x1
+ mov r4, #0x0
+ add r2, r5, #0x0
+ lsl r0, r0, #0x8
+_0202ACB4:
+ ldr r1, [r2, r0]
+ cmp r1, #0x0
+ bne _0202ACF6
+ lsl r0, r4, #0x6
+ mov r2, #0x4b
+ add r0, r4, r0
+ lsl r2, r2, #0x2
+ lsl r6, r0, #0x2
+ add r1, r5, r2
+ ldr r0, [sp, #0x0]
+ add r1, r1, r6
+ sub r2, #0x28
+ blx MI_CpuCopy8
+ lsl r0, r4, #0x2
+ add r1, r5, r0
+ mov r0, #0x1
+ ldr r2, _0202AD04 ; =0xEDB88320
+ lsl r0, r0, #0x8
+ str r2, [r1, r0]
+ add r0, #0x2e
+ add r1, r5, r0
+ ldrh r0, [r1, r6]
+ mov r2, #0x3
+ bic r0, r2
+ lsl r2, r7, #0x10
+ lsr r3, r2, #0x10
+ mov r2, #0x3
+ and r2, r3
+ orr r0, r2
+ strh r0, [r1, r6]
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0202ACF6:
+ add r4, r4, #0x1
+ add r2, r2, #0x4
+ cmp r4, #0x8
+ blt _0202ACB4
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ nop
+_0202AD04: .word 0xEDB88320
+
+ thumb_func_start FUN_0202AD08
+FUN_0202AD08: ; 0x0202AD08
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ bl FUN_0202AE0C
+ cmp r0, #0x0
+ bne _0202AD1A
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_0202AD1A:
+ ldr r0, _0202AD88 ; =0x00000152
+ ldrb r0, [r6, r0]
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1f
+ cmp r0, #0x1
+ bne _0202AD34
+ add r0, r5, #0x0
+ bl FUN_0202ADF0
+ cmp r0, #0x0
+ bne _0202AD34
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_0202AD34:
+ mov r0, #0x12
+ mov r4, #0x0
+ add r2, r5, #0x0
+ lsl r0, r0, #0x4
+_0202AD3C:
+ ldr r1, [r2, r0]
+ cmp r1, #0x0
+ bne _0202AD7C
+ ldr r1, _0202AD8C ; =0x0000094C
+ mov r2, #0xd6
+ add r3, r5, r1
+ lsl r2, r2, #0x2
+ add r1, r4, #0x0
+ mul r1, r2
+ add r0, r6, #0x0
+ add r1, r3, r1
+ blx MI_CpuCopy8
+ lsl r0, r4, #0x2
+ add r1, r5, r0
+ mov r0, #0x12
+ ldr r2, _0202AD90 ; =0xEDB88320
+ lsl r0, r0, #0x4
+ str r2, [r1, r0]
+ add r0, #0x32
+ ldrb r0, [r6, r0]
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1f
+ cmp r0, #0x1
+ bne _0202AD78
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r4, #0x1
+ bl FUN_0202AC98
+_0202AD78:
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_0202AD7C:
+ add r4, r4, #0x1
+ add r2, r2, #0x4
+ cmp r4, #0x3
+ blt _0202AD3C
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+_0202AD88: .word 0x00000152
+_0202AD8C: .word 0x0000094C
+_0202AD90: .word 0xEDB88320
+
+ thumb_func_start FUN_0202AD94
+FUN_0202AD94: ; 0x0202AD94
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ sub r0, r4, #0x1
+ cmp r0, #0x8
+ blt _0202ADA4
+ bl ErrorHandling
+_0202ADA4:
+ sub r4, r4, #0x1
+ lsl r0, r4, #0x2
+ add r1, r5, r0
+ mov r0, #0x1
+ mov r2, #0x0
+ lsl r0, r0, #0x8
+ str r2, [r1, r0]
+ add r0, #0x2e
+ add r3, r5, r0
+ lsl r0, r4, #0x6
+ add r0, r4, r0
+ lsl r2, r0, #0x2
+ ldrh r1, [r3, r2]
+ mov r0, #0x3
+ bic r1, r0
+ strh r1, [r3, r2]
+ mov r0, #0x1
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0202ADC8
+FUN_0202ADC8: ; 0x0202ADC8
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ cmp r4, #0x3
+ blt _0202ADD6
+ bl ErrorHandling
+_0202ADD6:
+ lsl r0, r4, #0x2
+ add r1, r5, r0
+ mov r0, #0x12
+ mov r2, #0x0
+ lsl r0, r0, #0x4
+ str r2, [r1, r0]
+ add r0, r5, #0x0
+ add r1, r4, #0x1
+ bl FUN_0202AEC4
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202ADF0
+FUN_0202ADF0: ; 0x0202ADF0
+ mov r1, #0x1
+ mov r3, #0x0
+ lsl r1, r1, #0x8
+_0202ADF6:
+ ldr r2, [r0, r1]
+ cmp r2, #0x0
+ bne _0202AE00
+ mov r0, #0x1
+ bx lr
+_0202AE00:
+ add r3, r3, #0x1
+ add r0, r0, #0x4
+ cmp r3, #0x8
+ blt _0202ADF6
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_0202AE0C
+FUN_0202AE0C: ; 0x0202AE0C
+ mov r1, #0x12
+ mov r3, #0x0
+ lsl r1, r1, #0x4
+_0202AE12:
+ ldr r2, [r0, r1]
+ cmp r2, #0x0
+ bne _0202AE1C
+ mov r0, #0x1
+ bx lr
+_0202AE1C:
+ add r3, r3, #0x1
+ add r0, r0, #0x4
+ cmp r3, #0x3
+ blt _0202AE12
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_0202AE28
+FUN_0202AE28: ; 0x0202AE28
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ add r4, r0, #0x0
+ cmp r5, #0x8
+ blt _0202AE36
+ bl ErrorHandling
+_0202AE36:
+ lsl r0, r5, #0x2
+ add r1, r4, r0
+ mov r0, #0x1
+ lsl r0, r0, #0x8
+ ldr r0, [r1, r0]
+ cmp r0, #0x0
+ bne _0202AE48
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0202AE48:
+ mov r0, #0x1
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0202AE4C
+FUN_0202AE4C: ; 0x0202AE4C
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ add r4, r0, #0x0
+ cmp r5, #0x3
+ blt _0202AE5A
+ bl ErrorHandling
+_0202AE5A:
+ lsl r0, r5, #0x2
+ add r1, r4, r0
+ mov r0, #0x12
+ lsl r0, r0, #0x4
+ ldr r0, [r1, r0]
+ cmp r0, #0x0
+ bne _0202AE6C
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0202AE6C:
+ mov r0, #0x1
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0202AE70
+FUN_0202AE70: ; 0x0202AE70
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r4, #0x0
+_0202AE76:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0202AE4C
+ cmp r0, #0x1
+ bne _0202AE86
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0202AE86:
+ add r4, r4, #0x1
+ cmp r4, #0x3
+ blt _0202AE76
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0202AE90
+FUN_0202AE90: ; 0x0202AE90
+ push {r3-r4}
+ cmp r1, #0x0
+ beq _0202AEB8
+ ldr r2, _0202AEC0 ; =0x0000012E
+ mov r3, #0x0
+ add r4, r0, r2
+ add r0, r2, #0x0
+ sub r0, #0x2a
+_0202AEA0:
+ ldrh r2, [r4, #0x0]
+ lsl r2, r2, #0x1e
+ lsr r2, r2, #0x1e
+ cmp r1, r2
+ bne _0202AEB0
+ mov r0, #0x1
+ pop {r3-r4}
+ bx lr
+_0202AEB0:
+ add r3, r3, #0x1
+ add r4, r4, r0
+ cmp r3, #0x8
+ blt _0202AEA0
+_0202AEB8:
+ mov r0, #0x0
+ pop {r3-r4}
+ bx lr
+ nop
+_0202AEC0: .word 0x0000012E
+
+ thumb_func_start FUN_0202AEC4
+FUN_0202AEC4: ; 0x0202AEC4
+ push {r3-r5, lr}
+ cmp r1, #0x0
+ beq _0202AEEE
+ ldr r3, _0202AEF0 ; =0x0000012E
+ mov r4, #0x41
+ mov r2, #0x0
+ add r3, r0, r3
+ lsl r4, r4, #0x2
+_0202AED4:
+ ldrh r5, [r3, #0x0]
+ lsl r5, r5, #0x1e
+ lsr r5, r5, #0x1e
+ cmp r1, r5
+ bne _0202AEE6
+ add r1, r2, #0x1
+ bl FUN_0202AD94
+ pop {r3-r5, pc}
+_0202AEE6:
+ add r2, r2, #0x1
+ add r3, r3, r4
+ cmp r2, #0x8
+ blt _0202AED4
+_0202AEEE:
+ pop {r3-r5, pc}
+ .balign 4
+_0202AEF0: .word 0x0000012E
+
+ thumb_func_start FUN_0202AEF4
+FUN_0202AEF4: ; 0x0202AEF4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r0, #0x2
+ add r4, r1, #0x0
+ lsl r0, r0, #0xa
+ cmp r4, r0
+ blt _0202AF06
+ bl ErrorHandling
+_0202AF06:
+ mov r0, #0x1
+ mov r1, #0x7
+ add r2, r4, #0x0
+ and r2, r1
+ add r1, r0, #0x0
+ lsl r1, r2
+ asr r2, r4, #0x2
+ lsr r2, r2, #0x1d
+ add r2, r4, r2
+ asr r2, r2, #0x3
+ ldrb r2, [r5, r2]
+ tst r1, r2
+ bne _0202AF22
+ mov r0, #0x0
+_0202AF22:
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0202AF24
+FUN_0202AF24: ; 0x0202AF24
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r0, #0x2
+ add r4, r1, #0x0
+ lsl r0, r0, #0xa
+ cmp r4, r0
+ blt _0202AF36
+ bl ErrorHandling
+_0202AF36:
+ asr r0, r4, #0x2
+ lsr r0, r0, #0x1d
+ add r0, r4, r0
+ asr r0, r0, #0x3
+ mov r1, #0x7
+ ldrb r3, [r5, r0]
+ mov r2, #0x1
+ and r1, r4
+ lsl r2, r1
+ add r1, r3, #0x0
+ orr r1, r2
+ strb r1, [r5, r0]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0202AF50
+FUN_0202AF50: ; 0x0202AF50
+ ldr r3, _0202AF58 ; =FUN_0202AEF4
+ ldr r1, _0202AF5C ; =0x000007FF
+ bx r3
+ nop
+_0202AF58: .word FUN_0202AEF4
+_0202AF5C: .word 0x000007FF
+
+ thumb_func_start FUN_0202AF60
+FUN_0202AF60: ; 0x0202AF60
+ ldr r3, _0202AF68 ; =FUN_0202AF24
+ ldr r1, _0202AF6C ; =0x000007FF
+ bx r3
+ nop
+_0202AF68: .word FUN_0202AF24
+_0202AF6C: .word 0x000007FF
+
+ thumb_func_start FUN_0202AF70
+FUN_0202AF70: ; 0x0202AF70
+ push {r3, lr}
+ ldr r1, _0202AF84 ; =0x021C59D4
+ ldr r1, [r1, #0x0]
+ cmp r1, #0x0
+ bne _0202AF82
+ bl FUN_0202251C
+ ldr r1, _0202AF84 ; =0x021C59D4
+ str r0, [r1, #0x0]
+_0202AF82:
+ pop {r3, pc}
+ .balign 4
+_0202AF84: .word 0x021C59D4
+
+ thumb_func_start FUN_0202AF88
+FUN_0202AF88: ; 0x0202AF88
+ ldr r0, _0202AF98 ; =0x021C59D4
+ ldr r1, [r0, #0x0]
+ cmp r1, #0x0
+ beq _0202AF94
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+_0202AF94:
+ bx lr
+ nop
+_0202AF98: .word 0x021C59D4
+
+ thumb_func_start FUN_0202AF9C
+FUN_0202AF9C: ; 0x0202AF9C
+ push {r3-r5, lr}
+ ldr r4, _0202AFBC ; =0x021C59D4
+ mov r5, #0x0
+_0202AFA2:
+ ldr r0, [r4, #0x0]
+ add r1, r5, #0x0
+ bl FUN_0202AE28
+ cmp r0, #0x1
+ bne _0202AFB2
+ add r0, r5, #0x1
+ pop {r3-r5, pc}
+_0202AFB2:
+ add r5, r5, #0x1
+ cmp r5, #0x8
+ blt _0202AFA2
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+_0202AFBC: .word 0x021C59D4
+
+ thumb_func_start FUN_0202AFC0
+FUN_0202AFC0: ; 0x0202AFC0
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _0202AFCA
+ mov r0, #0x0
+ pop {r4, pc}
+_0202AFCA:
+ sub r0, r4, #0x1
+ cmp r0, #0x8
+ blt _0202AFD4
+ bl ErrorHandling
+_0202AFD4:
+ ldr r0, _0202AFF8 ; =0x021C59D4
+ sub r1, r4, #0x1
+ ldr r0, [r0, #0x0]
+ bl FUN_0202AE28
+ cmp r0, #0x1
+ bne _0202AFF4
+ ldr r0, _0202AFF8 ; =0x021C59D4
+ sub r1, r4, #0x1
+ ldr r0, [r0, #0x0]
+ bl FUN_0202AC2C
+ cmp r0, #0x0
+ beq _0202AFF4
+ ldrh r0, [r0, #0x0]
+ pop {r4, pc}
+_0202AFF4:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+_0202AFF8: .word 0x021C59D4
+
+ thumb_func_start FUN_0202AFFC
+FUN_0202AFFC: ; 0x0202AFFC
+ cmp r0, #0x0
+ beq _0202B016
+ ldr r1, _0202B01C ; =0x021C59D4
+ ldr r2, [r1, #0x0]
+ mov r1, #0x13
+ lsl r1, r1, #0x4
+ add r2, r2, r1
+ sub r1, r0, #0x1
+ lsl r0, r1, #0x6
+ add r0, r1, r0
+ lsl r0, r0, #0x2
+ add r0, r2, r0
+ bx lr
+_0202B016:
+ mov r0, #0x0
+ bx lr
+ nop
+_0202B01C: .word 0x021C59D4
+
+ thumb_func_start FUN_0202B020
+FUN_0202B020: ; 0x0202B020
+ add r1, r0, #0x0
+ ldr r0, _0202B02C ; =0x021C59D4
+ ldr r3, _0202B030 ; =FUN_0202AD94
+ ldr r0, [r0, #0x0]
+ bx r3
+ nop
+_0202B02C: .word 0x021C59D4
+_0202B030: .word FUN_0202AD94
+
+ thumb_func_start FUN_0202B034
+FUN_0202B034: ; 0x0202B034
+ ldr r0, _0202B038 ; =0x00002AB0
+ bx lr
+ .balign 4
+_0202B038: .word 0x00002AB0
+
+ thumb_func_start FUN_0202B03C
+FUN_0202B03C: ; 0x0202B03C
+ ldr r3, _0202B048 ; =MIi_CpuClear32
+ add r1, r0, #0x0
+ mov r0, #0x0
+ ldr r2, _0202B04C ; =0x00002AB0
+ bx r3
+ nop
+_0202B048: .word MIi_CpuClear32
+_0202B04C: .word 0x00002AB0
+
+ thumb_func_start FUN_0202B050
+FUN_0202B050: ; 0x0202B050
+ push {r3-r7, lr}
+ sub sp, #0x18
+ str r0, [sp, #0x0]
+ str r1, [sp, #0x4]
+ str r2, [sp, #0x8]
+ cmp r0, #0x0
+ bne _0202B062
+ bl ErrorHandling
+_0202B062:
+ ldr r1, _0202B1E0 ; =0x00002AA8
+ ldr r0, [sp, #0x0]
+ ldr r0, [r0, r1]
+ cmp r0, #0x1e
+ blo _0202B070
+ bl ErrorHandling
+_0202B070:
+ ldr r1, _0202B1E4 ; =0x00002AAC
+ ldr r0, [sp, #0x0]
+ ldr r2, [r0, r1]
+ ldr r0, _0202B1E8 ; =0x0000270F
+ cmp r2, r0
+ blo _0202B07E
+ b _0202B1DC
+_0202B07E:
+ ldr r0, [sp, #0x0]
+ sub r1, r1, #0x4
+ ldr r1, [r0, r1]
+ mov r0, #0x5b
+ lsl r0, r0, #0x2
+ add r2, r1, #0x0
+ mul r2, r0
+ ldr r0, [sp, #0x0]
+ add r0, r0, r2
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x4]
+ bl FUN_0206B9AC
+ str r0, [sp, #0x10]
+ mov r0, #0xb
+ mov r1, #0x0
+ bl FUN_020219F4
+ mov r2, #0x5a
+ add r6, r0, #0x0
+ ldr r1, [sp, #0x14]
+ mov r0, #0x0
+ lsl r2, r2, #0x2
+ blx MIi_CpuClear16
+ ldr r0, [sp, #0x10]
+ mov r7, #0x0
+ cmp r0, #0x0
+ ble _0202B18E
+ ldr r5, [sp, #0x14]
+_0202B0BA:
+ ldr r0, [sp, #0x4]
+ add r1, r7, #0x0
+ bl FUN_0206B9B0
+ add r4, r0, #0x0
+ bl FUN_020669D4
+ str r0, [sp, #0xc]
+ add r0, r4, #0x0
+ mov r1, #0x4c
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ bne _0202B17E
+ add r0, r4, #0x0
+ mov r1, #0x5
+ mov r2, #0x0
+ bl FUN_020671BC
+ strh r0, [r5, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0xa0
+ mov r2, #0x0
+ bl FUN_020671BC
+ strb r0, [r5, #0x2]
+ add r0, r4, #0x0
+ mov r1, #0x70
+ mov r2, #0x0
+ bl FUN_020671BC
+ mov r1, #0x0
+ strb r0, [r5, #0x3]
+ add r0, r4, #0x0
+ add r2, r1, #0x0
+ bl FUN_020671BC
+ str r0, [r5, #0x4]
+ add r0, r4, #0x0
+ mov r1, #0x7
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [r5, #0x8]
+ add r0, r4, #0x0
+ mov r1, #0x36
+ mov r2, #0x0
+ bl FUN_020671BC
+ strh r0, [r5, #0x32]
+ add r0, r4, #0x0
+ mov r1, #0x37
+ mov r2, #0x0
+ bl FUN_020671BC
+ strh r0, [r5, #0x34]
+ add r0, r4, #0x0
+ mov r1, #0x38
+ mov r2, #0x0
+ bl FUN_020671BC
+ strh r0, [r5, #0x36]
+ add r0, r4, #0x0
+ mov r1, #0x39
+ mov r2, #0x0
+ bl FUN_020671BC
+ strh r0, [r5, #0x38]
+ cmp r6, #0x0
+ beq _0202B176
+ add r0, r4, #0x0
+ mov r1, #0x76
+ add r2, r6, #0x0
+ bl FUN_020671BC
+ add r1, r5, #0x0
+ add r0, r6, #0x0
+ add r1, #0xc
+ mov r2, #0xb
+ bl FUN_02021EF0
+ add r0, r4, #0x0
+ mov r1, #0x90
+ add r2, r6, #0x0
+ bl FUN_020671BC
+ add r1, r5, #0x0
+ add r0, r6, #0x0
+ add r1, #0x22
+ mov r2, #0x8
+ bl FUN_02021EF0
+ b _0202B17C
+_0202B176:
+ ldr r0, _0202B1EC ; =0x0000FFFF
+ strh r0, [r5, #0xc]
+ strh r0, [r5, #0x22]
+_0202B17C:
+ add r5, #0x3c
+_0202B17E:
+ ldr r1, [sp, #0xc]
+ add r0, r4, #0x0
+ bl FUN_02066A20
+ ldr r0, [sp, #0x10]
+ add r7, r7, #0x1
+ cmp r7, r0
+ blt _0202B0BA
+_0202B18E:
+ ldr r0, [sp, #0x8]
+ mov r1, #0x5a
+ ldr r2, [r0, #0x0]
+ ldr r0, [sp, #0x14]
+ lsl r1, r1, #0x2
+ strh r2, [r0, r1]
+ ldr r0, [sp, #0x8]
+ add r2, r1, #0x2
+ ldr r3, [r0, #0x4]
+ ldr r0, [sp, #0x14]
+ add r1, r1, #0x3
+ strb r3, [r0, r2]
+ ldr r0, [sp, #0x8]
+ ldr r2, [r0, #0x8]
+ ldr r0, [sp, #0x14]
+ strb r2, [r0, r1]
+ ldr r1, _0202B1E0 ; =0x00002AA8
+ ldr r0, [sp, #0x0]
+ ldr r0, [r0, r1]
+ add r2, r0, #0x1
+ ldr r0, [sp, #0x0]
+ str r2, [r0, r1]
+ ldr r0, [r0, r1]
+ cmp r0, #0x1e
+ blo _0202B1C6
+ ldr r0, [sp, #0x0]
+ mov r2, #0x0
+ str r2, [r0, r1]
+_0202B1C6:
+ ldr r1, _0202B1E4 ; =0x00002AAC
+ ldr r0, [sp, #0x0]
+ ldr r0, [r0, r1]
+ add r2, r0, #0x1
+ ldr r0, [sp, #0x0]
+ cmp r6, #0x0
+ str r2, [r0, r1]
+ beq _0202B1DC
+ add r0, r6, #0x0
+ bl FUN_02021A20
+_0202B1DC:
+ add sp, #0x18
+ pop {r3-r7, pc}
+ .balign 4
+_0202B1E0: .word 0x00002AA8
+_0202B1E4: .word 0x00002AAC
+_0202B1E8: .word 0x0000270F
+_0202B1EC: .word 0x0000FFFF
+
+ thumb_func_start FUN_0202B1F0
+FUN_0202B1F0: ; 0x0202B1F0
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _0202B1FA
+ bl ErrorHandling
+_0202B1FA:
+ ldr r0, _0202B214 ; =0x00002AA8
+ ldr r0, [r4, r0]
+ cmp r0, #0x1e
+ blo _0202B206
+ bl ErrorHandling
+_0202B206:
+ ldr r0, _0202B218 ; =0x00002AAC
+ ldr r0, [r4, r0]
+ cmp r0, #0x1e
+ blo _0202B210
+ mov r0, #0x1e
+_0202B210:
+ pop {r4, pc}
+ nop
+_0202B214: .word 0x00002AA8
+_0202B218: .word 0x00002AAC
+
+ thumb_func_start FUN_0202B21C
+FUN_0202B21C: ; 0x0202B21C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r5, #0x0
+ bne _0202B22A
+ bl ErrorHandling
+_0202B22A:
+ ldr r0, _0202B248 ; =0x00002AA8
+ ldr r0, [r5, r0]
+ cmp r0, #0x1e
+ blo _0202B236
+ bl ErrorHandling
+_0202B236:
+ cmp r4, #0x1e
+ blt _0202B23E
+ bl ErrorHandling
+_0202B23E:
+ ldr r0, _0202B24C ; =0x00002AAC
+ ldr r0, [r5, r0]
+ sub r0, r0, r4
+ pop {r3-r5, pc}
+ nop
+_0202B248: .word 0x00002AA8
+_0202B24C: .word 0x00002AAC
+
+ thumb_func_start FUN_0202B250
+FUN_0202B250: ; 0x0202B250
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r5, #0x0
+ bne _0202B25E
+ bl ErrorHandling
+_0202B25E:
+ ldr r0, _0202B298 ; =0x00002AA8
+ ldr r0, [r5, r0]
+ cmp r0, #0x1e
+ blo _0202B26A
+ bl ErrorHandling
+_0202B26A:
+ cmp r4, #0x1e
+ blt _0202B272
+ bl ErrorHandling
+_0202B272:
+ ldr r0, _0202B298 ; =0x00002AA8
+ ldr r0, [r5, r0]
+ sub r0, r0, #0x1
+ sub r2, r0, r4
+ bpl _0202B27E
+ add r2, #0x1e
+_0202B27E:
+ mov r1, #0x5b
+ lsl r1, r1, #0x2
+ mul r1, r2
+ mov r0, #0x0
+ add r2, r5, r1
+_0202B288:
+ ldrh r1, [r2, #0x0]
+ cmp r1, #0x0
+ beq _0202B296
+ add r0, r0, #0x1
+ add r2, #0x3c
+ cmp r0, #0x6
+ blo _0202B288
+_0202B296:
+ pop {r3-r5, pc}
+ .balign 4
+_0202B298: .word 0x00002AA8
+
+ thumb_func_start FUN_0202B29C
+FUN_0202B29C: ; 0x0202B29C
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ add r7, r2, #0x0
+ add r4, r3, #0x0
+ cmp r5, #0x0
+ bne _0202B2AE
+ bl ErrorHandling
+_0202B2AE:
+ ldr r0, _0202B318 ; =0x00002AA8
+ ldr r0, [r5, r0]
+ cmp r0, #0x1e
+ blo _0202B2BA
+ bl ErrorHandling
+_0202B2BA:
+ cmp r6, #0x1e
+ blt _0202B2C2
+ bl ErrorHandling
+_0202B2C2:
+ ldr r0, _0202B318 ; =0x00002AA8
+ ldr r0, [r5, r0]
+ sub r0, r0, #0x1
+ sub r1, r0, r6
+ bpl _0202B2CE
+ add r1, #0x1e
+_0202B2CE:
+ mov r0, #0x5b
+ lsl r0, r0, #0x2
+ mul r0, r1
+ add r1, r5, r0
+ mov r0, #0x3c
+ mul r0, r7
+ add r5, r1, r0
+ ldrh r0, [r1, r0]
+ add r1, r5, #0x0
+ add r1, #0xc
+ strh r0, [r4, #0x10]
+ ldrb r0, [r5, #0x2]
+ strb r0, [r4, #0x12]
+ ldr r0, [r5, #0x4]
+ str r0, [r4, #0x8]
+ ldr r0, [r5, #0x8]
+ str r0, [r4, #0xc]
+ ldrb r0, [r5, #0x3]
+ strb r0, [r4, #0x13]
+ ldr r0, [r4, #0x0]
+ bl FUN_02021E28
+ add r1, r5, #0x0
+ ldr r0, [r4, #0x4]
+ add r1, #0x22
+ bl FUN_02021E28
+ mov r1, #0x0
+_0202B306:
+ ldrh r0, [r5, #0x32]
+ add r1, r1, #0x1
+ add r5, r5, #0x2
+ strh r0, [r4, #0x14]
+ add r4, r4, #0x2
+ cmp r1, #0x4
+ blt _0202B306
+ pop {r3-r7, pc}
+ nop
+_0202B318: .word 0x00002AA8
+
+ thumb_func_start FUN_0202B31C
+FUN_0202B31C: ; 0x0202B31C
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ add r4, r2, #0x0
+ cmp r5, #0x0
+ bne _0202B32C
+ bl ErrorHandling
+_0202B32C:
+ ldr r0, _0202B370 ; =0x00002AA8
+ ldr r0, [r5, r0]
+ cmp r0, #0x1e
+ blo _0202B338
+ bl ErrorHandling
+_0202B338:
+ cmp r6, #0x1e
+ blt _0202B340
+ bl ErrorHandling
+_0202B340:
+ ldr r0, _0202B370 ; =0x00002AA8
+ ldr r0, [r5, r0]
+ sub r0, r0, #0x1
+ sub r2, r0, r6
+ bpl _0202B34C
+ add r2, #0x1e
+_0202B34C:
+ mov r0, #0x5b
+ lsl r0, r0, #0x2
+ add r1, r2, #0x0
+ mul r1, r0
+ add r2, r5, r1
+ sub r1, r0, #0x4
+ ldrh r1, [r2, r1]
+ str r1, [r4, #0x0]
+ sub r1, r0, #0x2
+ ldrb r1, [r2, r1]
+ sub r0, r0, #0x1
+ str r1, [r4, #0x4]
+ ldrb r0, [r2, r0]
+ str r0, [r4, #0x8]
+ mov r0, #0x0
+ str r0, [r4, #0xc]
+ pop {r4-r6, pc}
+ nop
+_0202B370: .word 0x00002AA8
+
+ thumb_func_start FUN_0202B374
+FUN_0202B374: ; 0x0202B374
+ ldr r0, _0202B378 ; =0x00000B88
+ bx lr
+ .balign 4
+_0202B378: .word 0x00000B88
+
+ thumb_func_start FUN_0202B37C
+FUN_0202B37C: ; 0x0202B37C
+ ldr r3, _0202B388 ; =MIi_CpuClearFast
+ add r1, r0, #0x0
+ mov r0, #0x0
+ ldr r2, _0202B38C ; =0x00000B88
+ bx r3
+ nop
+_0202B388: .word MIi_CpuClearFast
+_0202B38C: .word 0x00000B88
+
+ thumb_func_start FUN_0202B390
+FUN_0202B390: ; 0x0202B390
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r1, r4, #0x0
+ mov r0, #0x0
+ add r1, #0xc
+ mov r2, #0xc0
+ blx MIi_CpuClearFast
+ add r1, r4, #0x0
+ mov r0, #0x0
+ add r1, #0xcc
+ mov r2, #0xc0
+ blx MIi_CpuClearFast
+ mov r1, #0x63
+ lsl r1, r1, #0x2
+ mov r0, #0x0
+ add r1, r4, r1
+ mov r2, #0xc0
+ blx MIi_CpuClearFast
+ add r0, r4, #0x0
+ bl FUN_0202B3F8
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202B3C4
+FUN_0202B3C4: ; 0x0202B3C4
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x4]
+ cmp r0, r1
+ ble _0202B3D4
+ sub r0, r0, r1
+ str r0, [r4, #0x4]
+ pop {r4, pc}
+_0202B3D4:
+ add r0, r2, #0x0
+ mov r1, #0xf
+ blx _s32_div_f
+ mov r0, #0xf
+ sub r1, r0, r1
+ str r1, [r4, #0x4]
+ bne _0202B3E6
+ str r0, [r4, #0x4]
+_0202B3E6:
+ mov r1, #0x0
+ strb r1, [r4, #0x8]
+ add r0, r1, #0x0
+_0202B3EC:
+ strb r0, [r4, r1]
+ add r1, r1, #0x1
+ cmp r1, #0x4
+ blt _0202B3EC
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202B3F8
+FUN_0202B3F8: ; 0x0202B3F8
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r1, #0x0
+ bl FUN_0202B40C
+ add r0, r4, #0x0
+ bl FUN_0202B430
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202B40C
+FUN_0202B40C: ; 0x0202B40C
+ strb r1, [r0, #0x8]
+ bx lr
+
+ thumb_func_start FUN_0202B410
+FUN_0202B410: ; 0x0202B410
+ ldrb r0, [r0, #0x8]
+ bx lr
+
+ thumb_func_start FUN_0202B414
+FUN_0202B414: ; 0x0202B414
+ push {r3, lr}
+ mov r3, #0x0
+_0202B418:
+ ldrb r2, [r0, r3]
+ cmp r2, #0x0
+ bne _0202B422
+ strb r1, [r0, r3]
+ pop {r3, pc}
+_0202B422:
+ add r3, r3, #0x1
+ cmp r3, #0x4
+ blt _0202B418
+ bl ErrorHandling
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202B430
+FUN_0202B430: ; 0x0202B430
+ mov r2, #0x0
+ add r1, r2, #0x0
+_0202B434:
+ strb r1, [r0, r2]
+ add r2, r2, #0x1
+ cmp r2, #0x4
+ blt _0202B434
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0202B440
+FUN_0202B440: ; 0x0202B440
+ mov r3, #0x0
+_0202B442:
+ ldrb r2, [r0, r3]
+ cmp r1, r2
+ bne _0202B44C
+ mov r0, #0x1
+ bx lr
+_0202B44C:
+ add r3, r3, #0x1
+ cmp r3, #0x4
+ blt _0202B442
+ mov r0, #0x0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0202B458
+FUN_0202B458: ; 0x0202B458
+ mov r2, #0x0
+ add r3, r2, #0x0
+_0202B45C:
+ ldrb r1, [r0, r2]
+ cmp r1, #0x0
+ beq _0202B464
+ add r3, r3, #0x1
+_0202B464:
+ add r2, r2, #0x1
+ cmp r2, #0x4
+ blt _0202B45C
+ add r0, r3, #0x0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0202B470
+FUN_0202B470: ; 0x0202B470
+ push {r4-r6, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ add r0, sp, #0x0
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_020126B4
+ ldr r0, [sp, #0x8]
+ ldr r3, [sp, #0x4]
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x10
+ ldr r0, [sp, #0x0]
+ lsl r3, r3, #0x18
+ lsl r0, r0, #0x18
+ lsr r3, r3, #0x8
+ orr r0, r3
+ ldr r2, [sp, #0xc]
+ orr r0, r1
+ orr r0, r2
+ str r0, [r5, #0x4]
+ strb r4, [r5, #0x0]
+ mov r0, #0x0
+ strb r0, [r5, #0x1]
+ add r5, #0x8
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ mov r2, #0x28
+ blx MIi_CpuCopyFast
+ add sp, #0x10
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0202B4B0
+FUN_0202B4B0: ; 0x0202B4B0
+ push {r3-r5, lr}
+ add r5, r2, #0x0
+ add r4, r3, #0x0
+ bl FUN_0202B548
+ mov r2, #0x0
+ add r3, r0, #0x0
+_0202B4BE:
+ ldrb r1, [r3, #0x0]
+ cmp r5, r1
+ bne _0202B4E0
+ mov r1, #0x30
+ mul r1, r2
+ add r0, r0, r1
+ ldrb r1, [r0, #0x1]
+ cmp r1, #0x3
+ blo _0202B4DC
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_0202B470
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0202B4DC:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0202B4E0:
+ add r2, r2, #0x1
+ add r3, #0x30
+ cmp r2, #0x4
+ blt _0202B4BE
+ mov r1, #0x0
+ add r3, r0, #0x0
+_0202B4EC:
+ ldrb r2, [r3, #0x0]
+ cmp r2, #0x0
+ bne _0202B504
+ mov r2, #0x30
+ mul r2, r1
+ add r0, r0, r2
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_0202B470
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0202B504:
+ add r1, r1, #0x1
+ add r3, #0x30
+ cmp r1, #0x4
+ blt _0202B4EC
+ mov r1, #0x0
+ add r3, r0, #0x0
+_0202B510:
+ ldrb r2, [r3, #0x1]
+ cmp r2, #0x3
+ blo _0202B528
+ mov r2, #0x30
+ mul r2, r1
+ add r0, r0, r2
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_0202B470
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0202B528:
+ add r1, r1, #0x1
+ add r3, #0x30
+ cmp r1, #0x4
+ blt _0202B510
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0202B534
+FUN_0202B534: ; 0x0202B534
+ add r0, #0x8
+ bx lr
+
+ thumb_func_start FUN_0202B538
+FUN_0202B538: ; 0x0202B538
+ ldrb r0, [r0, #0x6]
+ bx lr
+
+ thumb_func_start FUN_0202B53C
+FUN_0202B53C: ; 0x0202B53C
+ ldrb r0, [r0, #0x5]
+ bx lr
+
+ thumb_func_start FUN_0202B540
+FUN_0202B540: ; 0x0202B540
+ add r0, #0x18
+ bx lr
+
+ thumb_func_start FUN_0202B544
+FUN_0202B544: ; 0x0202B544
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0202B548
+FUN_0202B548: ; 0x0202B548
+ push {r4, lr}
+ mov r4, #0x0
+ cmp r1, #0x4
+ bhi _0202B57E
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0202B55C: ; jump table (using 16-bit offset)
+ .short _0202B57E - _0202B55C - 2; case 0
+ .short _0202B566 - _0202B55C - 2; case 1
+ .short _0202B56E - _0202B55C - 2; case 2
+ .short _0202B574 - _0202B55C - 2; case 3
+ .short _0202B57A - _0202B55C - 2; case 4
+_0202B566:
+ mov r1, #0x63
+ lsl r1, r1, #0x2
+ add r4, r0, r1
+ b _0202B57E
+_0202B56E:
+ add r4, r0, #0x0
+ add r4, #0xc
+ b _0202B57E
+_0202B574:
+ add r4, r0, #0x0
+ add r4, #0xcc
+ b _0202B57E
+_0202B57A:
+ bl ErrorHandling
+_0202B57E:
+ add r0, r4, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202B584
+FUN_0202B584: ; 0x0202B584
+ push {r4, lr}
+ mov r4, #0x0
+ cmp r1, #0x4
+ bhi _0202B5BA
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0202B598: ; jump table (using 16-bit offset)
+ .short _0202B5BA - _0202B598 - 2; case 0
+ .short _0202B5B0 - _0202B598 - 2; case 1
+ .short _0202B5A2 - _0202B598 - 2; case 2
+ .short _0202B5AA - _0202B598 - 2; case 3
+ .short _0202B5B6 - _0202B598 - 2; case 4
+_0202B5A2:
+ mov r1, #0x93
+ lsl r1, r1, #0x2
+ add r4, r0, r1
+ b _0202B5BA
+_0202B5AA:
+ ldr r1, _0202B5C0 ; =0x000006CC
+ add r4, r0, r1
+ b _0202B5BA
+_0202B5B0:
+ ldr r1, _0202B5C4 ; =0x0000090C
+ add r4, r0, r1
+ b _0202B5BA
+_0202B5B6:
+ bl ErrorHandling
+_0202B5BA:
+ add r0, r4, #0x0
+ pop {r4, pc}
+ nop
+_0202B5C0: .word 0x000006CC
+_0202B5C4: .word 0x0000090C
+
+ thumb_func_start FUN_0202B5C8
+FUN_0202B5C8: ; 0x0202B5C8
+ ldrb r0, [r0, #0x0]
+ bx lr
+
+ thumb_func_start FUN_0202B5CC
+FUN_0202B5CC: ; 0x0202B5CC
+ ldrb r1, [r0, #0x1]
+ cmp r1, #0x3
+ bhs _0202B5D6
+ add r1, r1, #0x1
+ strb r1, [r0, #0x1]
+_0202B5D6:
+ bx lr
+
+ thumb_func_start FUN_0202B5D8
+FUN_0202B5D8: ; 0x0202B5D8
+ add r0, #0x8
+ bx lr
+
+ thumb_func_start FUN_0202B5DC
+FUN_0202B5DC: ; 0x0202B5DC
+ push {r4-r7}
+ mov r5, #0x0
+ add r4, r5, #0x0
+ ldr r6, [sp, #0x10]
+ cmp r1, #0x0
+ ble _0202B616
+_0202B5E8:
+ ldrb r7, [r0, #0x0]
+ cmp r2, r7
+ bne _0202B60E
+ ldrb r7, [r0, #0x1]
+ cmp r3, #0x0
+ beq _0202B600
+ cmp r7, #0x0
+ beq _0202B600
+ add r7, r4, #0x1
+ strb r7, [r6, r5]
+ add r5, r5, #0x1
+ b _0202B60E
+_0202B600:
+ cmp r3, #0x0
+ bne _0202B60E
+ cmp r7, #0x0
+ bne _0202B60E
+ add r7, r4, #0x1
+ strb r7, [r6, r5]
+ add r5, r5, #0x1
+_0202B60E:
+ add r4, r4, #0x1
+ add r0, #0x30
+ cmp r4, r1
+ blt _0202B5E8
+_0202B616:
+ add r0, r5, #0x0
+ pop {r4-r7}
+ bx lr
+
+ thumb_func_start FUN_0202B61C
+FUN_0202B61C: ; 0x0202B61C
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r6, r0, #0x0
+ mov r5, #0x0
+ add r0, r1, #0x0
+ add r4, r5, #0x0
+ str r1, [sp, #0x0]
+ str r2, [sp, #0x4]
+ str r3, [sp, #0x8]
+ ldr r7, [sp, #0x20]
+ cmp r0, #0x0
+ ble _0202B672
+_0202B634:
+ ldrb r2, [r6, #0x18]
+ ldr r1, [sp, #0x4]
+ ldrb r0, [r6, #0x19]
+ cmp r1, r2
+ bne _0202B668
+ ldr r1, [sp, #0x8]
+ cmp r1, #0x0
+ beq _0202B654
+ cmp r0, #0x0
+ beq _0202B654
+ add r0, r4, #0x1
+ bl FUN_0202B830
+ strb r0, [r7, r5]
+ add r5, r5, #0x1
+ b _0202B668
+_0202B654:
+ ldr r1, [sp, #0x8]
+ cmp r1, #0x0
+ bne _0202B668
+ cmp r0, #0x0
+ bne _0202B668
+ add r0, r4, #0x1
+ bl FUN_0202B830
+ strb r0, [r7, r5]
+ add r5, r5, #0x1
+_0202B668:
+ ldr r0, [sp, #0x0]
+ add r4, r4, #0x1
+ add r6, #0x48
+ cmp r4, r0
+ blt _0202B634
+_0202B672:
+ add r0, r5, #0x0
+ add sp, #0xc
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_0202B678
+FUN_0202B678: ; 0x0202B678
+ push {r3-r5, lr}
+ ldr r5, [sp, #0x10]
+ ldr r4, [sp, #0x14]
+ cmp r1, #0x4
+ bhi _0202B702
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0202B68E: ; jump table (using 16-bit offset)
+ .short _0202B702 - _0202B68E - 2; case 0
+ .short _0202B6DA - _0202B68E - 2; case 1
+ .short _0202B698 - _0202B68E - 2; case 2
+ .short _0202B6BA - _0202B68E - 2; case 3
+ .short _0202B6FE - _0202B68E - 2; case 4
+_0202B698:
+ cmp r3, #0x0
+ str r4, [sp, #0x0]
+ beq _0202B6AA
+ add r0, #0xc
+ mov r1, #0x4
+ add r3, r5, #0x0
+ bl FUN_0202B5DC
+ pop {r3-r5, pc}
+_0202B6AA:
+ mov r1, #0x93
+ lsl r1, r1, #0x2
+ add r0, r0, r1
+ mov r1, #0x10
+ add r3, r5, #0x0
+ bl FUN_0202B61C
+ pop {r3-r5, pc}
+_0202B6BA:
+ cmp r3, #0x0
+ str r4, [sp, #0x0]
+ beq _0202B6CC
+ add r0, #0xcc
+ mov r1, #0x4
+ add r3, r5, #0x0
+ bl FUN_0202B5DC
+ pop {r3-r5, pc}
+_0202B6CC:
+ ldr r1, _0202B708 ; =0x000006CC
+ add r3, r5, #0x0
+ add r0, r0, r1
+ mov r1, #0x8
+ bl FUN_0202B61C
+ pop {r3-r5, pc}
+_0202B6DA:
+ cmp r3, #0x0
+ str r4, [sp, #0x0]
+ beq _0202B6F0
+ mov r1, #0x63
+ lsl r1, r1, #0x2
+ add r0, r0, r1
+ mov r1, #0x4
+ add r3, r5, #0x0
+ bl FUN_0202B5DC
+ pop {r3-r5, pc}
+_0202B6F0:
+ ldr r1, _0202B70C ; =0x0000090C
+ add r3, r5, #0x0
+ add r0, r0, r1
+ mov r1, #0x8
+ bl FUN_0202B61C
+ pop {r3-r5, pc}
+_0202B6FE:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0202B702:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ nop
+_0202B708: .word 0x000006CC
+_0202B70C: .word 0x0000090C
+
+ thumb_func_start FUN_0202B710
+FUN_0202B710: ; 0x0202B710
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r4, r0, #0x0
+ add r6, r1, #0x0
+ add r5, r2, #0x0
+ add r0, sp, #0x8
+ mov r1, #0x0
+ mov r2, #0x4
+ blx MI_CpuFill8
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ add r0, sp, #0x8
+ str r0, [sp, #0x4]
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ add r2, r5, #0x0
+ mov r3, #0x1
+ bl FUN_0202B678
+ cmp r0, #0x0
+ beq _0202B742
+ add sp, #0xc
+ mov r0, #0x0
+ pop {r4-r7, pc}
+_0202B742:
+ mov r3, #0x1
+ str r3, [sp, #0x0]
+ add r0, sp, #0x8
+ str r0, [sp, #0x4]
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ add r2, r5, #0x0
+ bl FUN_0202B678
+ cmp r0, #0x0
+ beq _0202B79E
+ add r0, sp, #0x8
+ ldrb r0, [r0, #0x0]
+ mov r7, #0x0
+ cmp r0, #0x0
+ beq _0202B798
+ add r5, sp, #0x8
+_0202B764:
+ ldrb r2, [r5, #0x0]
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ bl FUN_0202B7C8
+ ldrb r0, [r0, #0x1]
+ cmp r0, #0x3
+ blo _0202B77A
+ add sp, #0xc
+ mov r0, #0x1
+ pop {r4-r7, pc}
+_0202B77A:
+ add r7, r7, #0x1
+ add r5, r5, #0x1
+ cmp r7, #0x4
+ bge _0202B786
+ mov r1, #0x1
+ b _0202B788
+_0202B786:
+ mov r1, #0x0
+_0202B788:
+ ldrb r0, [r5, #0x0]
+ cmp r0, #0x0
+ beq _0202B792
+ mov r0, #0x1
+ b _0202B794
+_0202B792:
+ mov r0, #0x0
+_0202B794:
+ tst r0, r1
+ bne _0202B764
+_0202B798:
+ add sp, #0xc
+ mov r0, #0x0
+ pop {r4-r7, pc}
+_0202B79E:
+ mov r5, #0x1
+_0202B7A0:
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ add r2, r5, #0x0
+ bl FUN_0202B7C8
+ ldrb r1, [r0, #0x0]
+ cmp r1, #0x0
+ beq _0202B7B6
+ ldrb r0, [r0, #0x1]
+ cmp r0, #0x3
+ blo _0202B7BC
+_0202B7B6:
+ add sp, #0xc
+ mov r0, #0x1
+ pop {r4-r7, pc}
+_0202B7BC:
+ add r5, r5, #0x1
+ cmp r5, #0x4
+ ble _0202B7A0
+ mov r0, #0x0
+ add sp, #0xc
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_0202B7C8
+FUN_0202B7C8: ; 0x0202B7C8
+ push {r4-r6, lr}
+ add r4, r2, #0x0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ add r6, r1, #0x0
+ bl FUN_0202B820
+ cmp r0, #0x1
+ beq _0202B7DE
+ bl ErrorHandling
+_0202B7DE:
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_0202B548
+ mov r1, #0x80
+ bic r4, r1
+ sub r2, r4, #0x1
+ mov r1, #0x30
+ mul r1, r2
+ add r0, r0, r1
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0202B7F4
+FUN_0202B7F4: ; 0x0202B7F4
+ push {r4-r6, lr}
+ add r4, r2, #0x0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ add r6, r1, #0x0
+ bl FUN_0202B820
+ cmp r0, #0x0
+ beq _0202B80A
+ bl ErrorHandling
+_0202B80A:
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_0202B584
+ mov r1, #0x80
+ bic r4, r1
+ sub r2, r4, #0x1
+ mov r1, #0x48
+ mul r1, r2
+ add r0, r0, r1
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0202B820
+FUN_0202B820: ; 0x0202B820
+ mov r1, #0x80
+ tst r0, r1
+ bne _0202B82A
+ mov r0, #0x1
+ bx lr
+_0202B82A:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0202B830
+FUN_0202B830: ; 0x0202B830
+ mov r1, #0x80
+ orr r0, r1
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0202B838
+FUN_0202B838: ; 0x0202B838
+ ldr r1, _0202B840 ; =0x00000B4C
+ add r0, r0, r1
+ bx lr
+ nop
+_0202B840: .word 0x00000B4C
+
+ thumb_func_start FUN_0202B844
+FUN_0202B844: ; 0x0202B844
+ ldr r1, _0202B84C ; =0x00000B56
+ add r0, r0, r1
+ bx lr
+ nop
+_0202B84C: .word 0x00000B56
+
+ thumb_func_start FUN_0202B850
+FUN_0202B850: ; 0x0202B850
+ ldr r1, _0202B858 ; =0x00000B7A
+ add r0, r0, r1
+ bx lr
+ nop
+_0202B858: .word 0x00000B7A
+
+ thumb_func_start FUN_0202B85C
+FUN_0202B85C: ; 0x0202B85C
+ ldr r1, _0202B864 ; =0x00000B7C
+ add r0, r0, r1
+ bx lr
+ nop
+_0202B864: .word 0x00000B7C
+
+ thumb_func_start FUN_0202B868
+FUN_0202B868: ; 0x0202B868
+ mov r1, #0x2e
+ lsl r1, r1, #0x6
+ add r0, r0, r1
+ bx lr
+
+ thumb_func_start FUN_0202B870
+FUN_0202B870: ; 0x0202B870
+ lsl r1, r0, #0x1
+ ldr r0, _0202B878 ; =0x020EEAC8
+ ldrb r0, [r0, r1]
+ bx lr
+ .balign 4
+_0202B878: .word 0x020EEAC8
+
+ thumb_func_start FUN_0202B87C
+FUN_0202B87C: ; 0x0202B87C
+ lsl r1, r0, #0x1
+ ldr r0, _0202B884 ; =0x020EEAC9
+ ldrb r0, [r0, r1]
+ bx lr
+ .balign 4
+_0202B884: .word 0x020EEAC9
+
+ thumb_func_start FUN_0202B888
+FUN_0202B888: ; 0x0202B888
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+ str r1, [r0, #0x4]
+ ldr r3, _0202B898 ; =StringFillEOS
+ add r0, #0x8
+ mov r1, #0x8
+ bx r3
+ nop
+_0202B898: .word StringFillEOS
+
+ thumb_func_start FUN_0202B89C
+FUN_0202B89C: ; 0x0202B89C
+ push {r3, lr}
+ add r0, #0x8
+ bl StringLength
+ cmp r0, #0x0
+ beq _0202B8AC
+ mov r0, #0x1
+ pop {r3, pc}
+_0202B8AC:
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_0202B8B0
+FUN_0202B8B0: ; 0x0202B8B0
+ mov r0, #0xea
+ lsl r0, r0, #0x4
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0202B8B8
+FUN_0202B8B8: ; 0x0202B8B8
+ push {r3-r7, lr}
+ mov r2, #0xea
+ mov r1, #0x0
+ lsl r2, r2, #0x4
+ add r6, r0, #0x0
+ blx MI_CpuFill8
+ mov r7, #0x0
+_0202B8C8:
+ mov r4, #0x0
+ add r5, r6, #0x0
+_0202B8CC:
+ add r0, r5, #0x0
+ bl FUN_0202B888
+ add r4, r4, #0x1
+ add r5, #0x18
+ cmp r4, #0x6
+ blt _0202B8CC
+ add r7, r7, #0x1
+ add r6, #0x90
+ cmp r7, #0x1a
+ blt _0202B8C8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0202B8E4
+FUN_0202B8E4: ; 0x0202B8E4
+ ldr r3, _0202B8EC ; =FUN_02022610
+ mov r1, #0x1c
+ bx r3
+ nop
+_0202B8EC: .word FUN_02022610
+
+ thumb_func_start FUN_0202B8F0
+FUN_0202B8F0: ; 0x0202B8F0
+ push {r4-r6, lr}
+ cmp r2, #0x6
+ blo _0202B8FE
+ blo _0202B930
+ bl ErrorHandling
+ pop {r4-r6, pc}
+_0202B8FE:
+ mov r3, #0x90
+ mul r3, r1
+ add r3, r0, r3
+ cmp r2, #0x5
+ bge _0202B928
+ mov r0, #0x18
+ mul r0, r2
+ add r6, r3, r0
+_0202B90E:
+ add r5, r6, #0x0
+ add r5, #0x18
+ add r4, r6, #0x0
+ ldmia r5!, {r0-r1}
+ stmia r4!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r4!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ add r2, r2, #0x1
+ add r6, #0x18
+ stmia r4!, {r0-r1}
+ cmp r2, #0x5
+ blt _0202B90E
+_0202B928:
+ add r3, #0x78
+ add r0, r3, #0x0
+ bl FUN_0202B888
+_0202B930:
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202B934
+FUN_0202B934: ; 0x0202B934
+ mov r0, #0x4e
+ lsl r0, r0, #0x2
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0202B93C
+FUN_0202B93C: ; 0x0202B93C
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r1, #0x0
+ bl FUN_02029FC8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x34
+ bl FUN_020169D8
+ str r0, [sp, #0x4]
+ add r5, r0, #0x0
+ ldr r0, _0202B9E8 ; =0x020EEAD0
+ mov r6, #0x0
+ str r0, [sp, #0x0]
+_0202B95A:
+ cmp r6, #0x5
+ beq _0202B968
+ cmp r6, #0xa
+ beq _0202B988
+ cmp r6, #0xb
+ beq _0202B9A0
+ b _0202B9C8
+_0202B968:
+ add r0, r4, #0x0
+ mov r1, #0xf
+ bl FUN_0202A150
+ add r7, r0, #0x0
+ beq _0202B984
+ add r0, r4, #0x0
+ mov r1, #0x1d
+ bl FUN_0202A150
+ add r1, r7, #0x0
+ blx _u32_div_f
+ add r7, r0, #0x0
+_0202B984:
+ str r7, [r5, #0x0]
+ b _0202B9D4
+_0202B988:
+ add r0, r4, #0x0
+ mov r1, #0x41
+ bl FUN_0202A150
+ add r7, r0, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x42
+ bl FUN_0202A150
+ add r0, r7, r0
+ str r0, [r5, #0x0]
+ b _0202B9D4
+_0202B9A0:
+ add r0, r4, #0x0
+ mov r1, #0x3f
+ bl FUN_0202A150
+ add r7, r0, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x40
+ bl FUN_0202A150
+ add r1, r7, r0
+ beq _0202B9C4
+ ldr r0, [sp, #0x4]
+ ldr r2, [r0, #0x28]
+ mov r0, #0x64
+ mul r0, r2
+ blx _u32_div_f
+ add r1, r0, #0x0
+_0202B9C4:
+ str r1, [r5, #0x0]
+ b _0202B9D4
+_0202B9C8:
+ ldr r1, [sp, #0x0]
+ add r0, r4, #0x0
+ ldr r1, [r1, #0x0]
+ bl FUN_0202A150
+ str r0, [r5, #0x0]
+_0202B9D4:
+ ldr r0, [sp, #0x0]
+ add r6, r6, #0x1
+ add r0, r0, #0x4
+ add r5, r5, #0x4
+ str r0, [sp, #0x0]
+ cmp r6, #0xd
+ blt _0202B95A
+ ldr r0, [sp, #0x4]
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+_0202B9E8: .word 0x020EEAD0
+
+ thumb_func_start FUN_0202B9EC
+FUN_0202B9EC: ; 0x0202B9EC
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_020238F4
+ mov r1, #0x4e
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ lsl r1, r1, #0x2
+ bl FUN_020169D8
+ mov r2, #0x4e
+ mov r1, #0x0
+ lsl r2, r2, #0x2
+ str r0, [sp, #0x4]
+ blx MI_CpuFill8
+ add r0, r5, #0x0
+ bl FUN_0202881C
+ mov r1, #0x1
+ bl FUN_0202877C
+ str r0, [sp, #0x8]
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ bl FUN_020239A0
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0202B93C
+ ldr r4, [sp, #0x4]
+ str r0, [sp, #0x0]
+ mov r6, #0x0
+ add r5, r0, #0x0
+_0202BA38:
+ ldr r0, [sp, #0x8]
+ add r1, r4, #0x0
+ str r0, [r4, #0x0]
+ add r0, r7, #0x0
+ add r1, #0x8
+ mov r2, #0x8
+ bl FUN_02021EF0
+ ldr r0, [r5, #0x0]
+ add r6, r6, #0x1
+ str r0, [r4, #0x4]
+ add r4, #0x18
+ add r5, r5, #0x4
+ cmp r6, #0xd
+ blt _0202BA38
+ ldr r0, [sp, #0x0]
+ bl FUN_02016A18
+ add r0, r7, #0x0
+ bl FUN_02021A20
+ ldr r0, [sp, #0x4]
+ add sp, #0xc
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_0202BA68
+FUN_0202BA68: ; 0x0202BA68
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r4, #0x0
+_0202BA6E:
+ add r0, r5, #0x0
+ bl FUN_0202B888
+ add r4, r4, #0x1
+ add r5, #0x18
+ cmp r4, #0x6
+ blt _0202BA6E
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202BA80
+FUN_0202BA80: ; 0x0202BA80
+ push {r3, lr}
+ ldr r3, [r0, #0x0]
+ ldr r2, [r1, #0x0]
+ cmp r3, r2
+ beq _0202BA8E
+ mov r0, #0x0
+ pop {r3, pc}
+_0202BA8E:
+ add r0, #0x8
+ add r1, #0x8
+ bl StringNotEqual
+ cmp r0, #0x0
+ bne _0202BA9E
+ mov r0, #0x1
+ pop {r3, pc}
+_0202BA9E:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202BAA4
+FUN_0202BAA4: ; 0x0202BAA4
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ ldr r0, [r6, #0x4]
+ add r7, r1, #0x0
+ mov r4, #0x0
+ cmp r0, #0x0
+ ble _0202BACE
+ add r5, r6, #0x0
+_0202BAB4:
+ ldr r0, [r5, #0xc]
+ add r1, r7, #0x0
+ bl FUN_0202BA80
+ cmp r0, #0x0
+ beq _0202BAC4
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0202BAC4:
+ ldr r0, [r6, #0x4]
+ add r4, r4, #0x1
+ add r5, r5, #0x4
+ cmp r4, r0
+ blt _0202BAB4
+_0202BACE:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202BAD4
+FUN_0202BAD4: ; 0x0202BAD4
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r6, r1, #0x0
+ add r5, r0, #0x0
+ str r2, [sp, #0x0]
+ add r0, r6, #0x0
+ mov r1, #0x0
+ mov r2, #0xe0
+ add r4, r3, #0x0
+ blx MI_CpuFill8
+ add r0, sp, #0x10
+ ldrb r0, [r0, #0x10]
+ cmp r0, #0x0
+ bne _0202BB64
+ mov r2, #0x90
+ add r0, r4, #0x0
+ mul r0, r2
+ add r1, r6, #0x0
+ add r0, r5, r0
+ add r1, #0x50
+ str r0, [sp, #0x8]
+ blx MI_CpuCopy8
+ add r1, sp, #0x10
+ ldrb r3, [r1, #0x18]
+ mov r0, #0x0
+ cmp r3, #0x0
+ ble _0202BB2E
+ mov r2, #0x18
+ ldr r1, [sp, #0x24]
+ mul r2, r4
+_0202BB14:
+ ldr r5, [r6, #0x4]
+ add r0, r0, #0x1
+ add r4, r5, #0x0
+ add r4, r4, #0x1
+ str r4, [r6, #0x4]
+ ldr r4, [r1, #0x0]
+ lsl r5, r5, #0x2
+ add r4, r4, r2
+ add r5, r6, r5
+ str r4, [r5, #0xc]
+ add r1, r1, #0x4
+ cmp r0, r3
+ blt _0202BB14
+_0202BB2E:
+ add r4, r6, #0x0
+ add r4, #0x50
+ mov r7, #0x0
+ add r5, r4, #0x0
+_0202BB36:
+ add r0, r4, #0x0
+ bl FUN_0202B89C
+ cmp r0, #0x0
+ beq _0202BB58
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ bl FUN_0202BAA4
+ cmp r0, #0x0
+ bne _0202BB58
+ ldr r1, [r6, #0x0]
+ add r0, r1, #0x1
+ str r0, [r6, #0x0]
+ lsl r0, r1, #0x2
+ add r0, r6, r0
+ str r4, [r0, #0x38]
+_0202BB58:
+ add r7, r7, #0x1
+ add r4, #0x18
+ add r5, #0x18
+ cmp r7, #0x6
+ blt _0202BB36
+ b _0202BBF8
+_0202BB64:
+ add r0, r4, #0x0
+ add r0, #0xd
+ mov r2, #0x90
+ add r1, r0, #0x0
+ mul r1, r2
+ add r0, r5, r1
+ add r1, r6, #0x0
+ add r1, #0x50
+ str r0, [sp, #0x8]
+ blx MI_CpuCopy8
+ add r0, sp, #0x10
+ ldrb r2, [r0, #0x18]
+ mov r3, #0x0
+ cmp r2, #0x0
+ ble _0202BBB2
+ mov r1, #0x18
+ ldr r0, [sp, #0x24]
+ mul r1, r4
+_0202BB8A:
+ ldr r4, [r0, #0x0]
+ ldr r5, [r1, r4]
+ cmp r5, #0x0
+ beq _0202BBAA
+ ldr r4, [sp, #0x0]
+ cmp r4, r5
+ bne _0202BBAA
+ ldr r5, [r6, #0x4]
+ add r4, r5, #0x0
+ add r4, r4, #0x1
+ str r4, [r6, #0x4]
+ ldr r4, [r0, #0x0]
+ lsl r5, r5, #0x2
+ add r4, r4, r1
+ add r5, r6, r5
+ str r4, [r5, #0xc]
+_0202BBAA:
+ add r3, r3, #0x1
+ add r0, r0, #0x4
+ cmp r3, r2
+ blt _0202BB8A
+_0202BBB2:
+ add r4, r6, #0x0
+ mov r0, #0x0
+ add r4, #0x50
+ str r0, [sp, #0x4]
+ add r5, r6, #0x0
+ add r7, r4, #0x0
+_0202BBBE:
+ add r0, r4, #0x0
+ bl FUN_0202B89C
+ cmp r0, #0x0
+ beq _0202BBE8
+ ldr r1, [r5, #0x50]
+ ldr r0, [sp, #0x0]
+ cmp r0, r1
+ bne _0202BBE8
+ add r0, r6, #0x0
+ add r1, r7, #0x0
+ bl FUN_0202BAA4
+ cmp r0, #0x0
+ bne _0202BBE8
+ ldr r1, [r6, #0x0]
+ add r0, r1, #0x1
+ str r0, [r6, #0x0]
+ lsl r0, r1, #0x2
+ add r0, r6, r0
+ str r4, [r0, #0x38]
+_0202BBE8:
+ ldr r0, [sp, #0x4]
+ add r4, #0x18
+ add r0, r0, #0x1
+ add r5, #0x18
+ add r7, #0x18
+ str r0, [sp, #0x4]
+ cmp r0, #0x6
+ blt _0202BBBE
+_0202BBF8:
+ ldr r1, [r6, #0x4]
+ ldr r0, [r6, #0x0]
+ mov r2, #0x0
+ add r0, r1, r0
+ str r0, [r6, #0x8]
+ ldr r0, [r6, #0x0]
+ cmp r0, #0x0
+ ble _0202BC20
+ add r1, r6, #0x0
+_0202BC0A:
+ ldr r3, [r6, #0x4]
+ ldr r0, [r1, #0x38]
+ add r3, r2, r3
+ lsl r3, r3, #0x2
+ add r3, r6, r3
+ str r0, [r3, #0xc]
+ ldr r0, [r6, #0x0]
+ add r2, r2, #0x1
+ add r1, r1, #0x4
+ cmp r2, r0
+ blt _0202BC0A
+_0202BC20:
+ mov r0, #0x0
+ mov r12, r0
+ ldr r0, [r6, #0x8]
+ sub r5, r0, #0x1
+ cmp r5, #0x0
+ ble _0202BC64
+ add r3, r6, #0x0
+_0202BC2E:
+ mov r0, r12
+ cmp r5, r0
+ ble _0202BC52
+ lsl r0, r5, #0x2
+ add r4, r6, r0
+_0202BC38:
+ ldr r2, [r4, #0xc]
+ ldr r7, [r3, #0xc]
+ ldr r0, [r2, #0x4]
+ ldr r1, [r7, #0x4]
+ cmp r1, r0
+ bhs _0202BC48
+ str r2, [r3, #0xc]
+ str r7, [r4, #0xc]
+_0202BC48:
+ sub r5, r5, #0x1
+ mov r0, r12
+ sub r4, r4, #0x4
+ cmp r5, r0
+ bgt _0202BC38
+_0202BC52:
+ mov r0, r12
+ add r0, r0, #0x1
+ mov r12, r0
+ ldr r0, [r6, #0x8]
+ add r3, r3, #0x4
+ sub r5, r0, #0x1
+ mov r0, r12
+ cmp r0, r5
+ blt _0202BC2E
+_0202BC64:
+ ldr r0, [sp, #0x8]
+ bl FUN_0202BA68
+ mov r3, #0x0
+ add r2, r6, #0x0
+ b _0202BC8A
+_0202BC70:
+ ldr r5, [r2, #0xc]
+ ldr r4, [sp, #0x8]
+ ldmia r5!, {r0-r1}
+ stmia r4!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r4!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r4!, {r0-r1}
+ ldr r0, [sp, #0x8]
+ add r2, r2, #0x4
+ add r0, #0x18
+ str r0, [sp, #0x8]
+ add r3, r3, #0x1
+_0202BC8A:
+ cmp r3, #0x6
+ bge _0202BC94
+ ldr r0, [r6, #0x8]
+ cmp r3, r0
+ blt _0202BC70
+_0202BC94:
+ add sp, #0xc
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_0202BC98
+FUN_0202BC98: ; 0x0202BC98
+ push {r4-r7, lr}
+ sub sp, #0x14
+ add r7, r0, #0x0
+ add r5, r1, #0x0
+ ldr r0, [sp, #0x2c]
+ mov r1, #0xe0
+ str r2, [sp, #0x10]
+ add r4, r3, #0x0
+ bl FUN_020169D8
+ add r6, r0, #0x0
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ str r4, [sp, #0x4]
+ add r0, sp, #0x18
+ ldrb r0, [r0, #0x10]
+ add r1, r6, #0x0
+ add r2, r5, #0x0
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x2c]
+ str r0, [sp, #0xc]
+ ldr r3, [sp, #0x10]
+ add r0, r7, #0x0
+ bl FUN_0202BAD4
+ cmp r5, #0x0
+ beq _0202BCEA
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ str r4, [sp, #0x4]
+ add r0, sp, #0x18
+ ldrb r0, [r0, #0x10]
+ add r1, r6, #0x0
+ add r2, r5, #0x0
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x2c]
+ str r0, [sp, #0xc]
+ ldr r3, [sp, #0x10]
+ add r0, r7, #0x0
+ bl FUN_0202BAD4
+_0202BCEA:
+ add r0, r6, #0x0
+ bl FUN_02016A18
+ add sp, #0x14
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_0202BCF4
+FUN_0202BCF4: ; 0x0202BCF4
+ push {r4-r7, lr}
+ sub sp, #0x24
+ add r6, r1, #0x0
+ ldr r1, [sp, #0x38]
+ add r4, r0, #0x0
+ add r5, r2, #0x0
+ add r7, r3, #0x0
+ str r1, [sp, #0x38]
+ bl FUN_0202B8E4
+ str r0, [sp, #0x8]
+ add r0, r4, #0x0
+ bl FUN_0202881C
+ mov r1, #0x1
+ bl FUN_0202877C
+ mov r4, #0x0
+ add r3, r4, #0x0
+ str r0, [sp, #0xc]
+ cmp r5, #0x0
+ bls _0202BD44
+_0202BD20:
+ cmp r3, r6
+ beq _0202BD3A
+ lsl r0, r3, #0x2
+ ldr r2, [r7, r0]
+ cmp r2, #0x0
+ beq _0202BD3A
+ add r1, r4, #0x1
+ add r0, r4, #0x0
+ lsl r1, r1, #0x18
+ lsr r4, r1, #0x18
+ lsl r1, r0, #0x2
+ add r0, sp, #0x10
+ str r2, [r0, r1]
+_0202BD3A:
+ add r0, r3, #0x1
+ lsl r0, r0, #0x18
+ lsr r3, r0, #0x18
+ cmp r3, r5
+ blo _0202BD20
+_0202BD44:
+ cmp r4, #0x0
+ beq _0202BD68
+ mov r5, #0x0
+ add r6, sp, #0x10
+_0202BD4C:
+ ldr r0, [sp, #0x38]
+ str r4, [sp, #0x0]
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0xc]
+ add r2, r5, #0x0
+ add r3, r6, #0x0
+ bl FUN_0202BC98
+ add r0, r5, #0x1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #0xd
+ blo _0202BD4C
+_0202BD68:
+ add sp, #0x24
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_0202BD6C
+FUN_0202BD6C: ; 0x0202BD6C
+ push {r3-r7, lr}
+ sub sp, #0x10
+ str r2, [sp, #0x0]
+ add r4, r0, #0x0
+ add r5, r1, #0x0
+ bl FUN_020238F4
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x0]
+ mov r1, #0x4c
+ bl FUN_02016998
+ mov r1, #0x0
+ mov r2, #0x4c
+ add r7, r0, #0x0
+ blx MI_CpuFill8
+ add r0, r4, #0x0
+ bl FUN_0202881C
+ mov r1, #0x1
+ bl FUN_0202877C
+ str r0, [sp, #0xc]
+ ldr r1, [sp, #0x0]
+ add r0, r4, #0x0
+ bl FUN_0202B93C
+ str r0, [sp, #0x8]
+ add r0, r5, #0x0
+ bl FUN_0202B870
+ str r0, [r7, #0x0]
+ add r0, r5, #0x0
+ bl FUN_0202B87C
+ ldr r1, [r7, #0x0]
+ mov r6, #0x0
+ cmp r1, #0x0
+ ble _0202BDE2
+ lsl r1, r0, #0x2
+ ldr r0, [sp, #0x8]
+ add r4, r7, #0x0
+ add r5, r0, r1
+_0202BDC4:
+ ldr r0, [sp, #0xc]
+ ldr r1, [sp, #0x0]
+ str r0, [r4, #0x4]
+ ldr r0, [r5, #0x0]
+ str r0, [r4, #0x8]
+ ldr r0, [sp, #0x4]
+ bl FUN_020239A0
+ str r0, [r4, #0xc]
+ ldr r0, [r7, #0x0]
+ add r6, r6, #0x1
+ add r4, #0xc
+ add r5, r5, #0x4
+ cmp r6, r0
+ blt _0202BDC4
+_0202BDE2:
+ ldr r0, [sp, #0x8]
+ bl FUN_02016A18
+ add r0, r7, #0x0
+ add sp, #0x10
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202BDF0
+FUN_0202BDF0: ; 0x0202BDF0
+ push {r3-r7, lr}
+ add r7, r2, #0x0
+ add r5, r0, #0x0
+ str r1, [sp, #0x0]
+ add r0, r7, #0x0
+ mov r1, #0x4c
+ bl FUN_02016998
+ mov r1, #0x0
+ mov r2, #0x4c
+ add r4, r0, #0x0
+ blx MI_CpuFill8
+ ldr r0, [sp, #0x0]
+ mov r1, #0x90
+ mul r1, r0
+ mov r6, #0x0
+ add r5, r5, r1
+_0202BE14:
+ add r0, r5, #0x0
+ bl FUN_0202B89C
+ cmp r0, #0x0
+ beq _0202BE60
+ ldr r2, [r4, #0x0]
+ mov r1, #0xc
+ mul r1, r2
+ ldr r0, [r5, #0x0]
+ add r1, r4, r1
+ str r0, [r1, #0x4]
+ ldr r2, [r4, #0x0]
+ mov r1, #0xc
+ mul r1, r2
+ ldr r0, [r5, #0x4]
+ add r1, r4, r1
+ str r0, [r1, #0x8]
+ mov r0, #0x8
+ add r1, r7, #0x0
+ bl FUN_020219F4
+ ldr r2, [r4, #0x0]
+ mov r1, #0xc
+ mul r1, r2
+ add r1, r4, r1
+ str r0, [r1, #0xc]
+ ldr r1, [r4, #0x0]
+ mov r0, #0xc
+ mul r0, r1
+ add r0, r4, r0
+ add r1, r5, #0x0
+ ldr r0, [r0, #0xc]
+ add r1, #0x8
+ bl FUN_02021E28
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+_0202BE60:
+ add r6, r6, #0x1
+ add r5, #0x18
+ cmp r6, #0x6
+ blt _0202BE14
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0202BE6C
+FUN_0202BE6C: ; 0x0202BE6C
+ push {r4-r6, lr}
+ add r6, r0, #0x0
+ mov r4, #0x0
+ add r5, r6, #0x0
+_0202BE74:
+ ldr r0, [r5, #0xc]
+ cmp r0, #0x0
+ beq _0202BE7E
+ bl FUN_02021A20
+_0202BE7E:
+ add r4, r4, #0x1
+ add r5, #0xc
+ cmp r4, #0x6
+ blt _0202BE74
+ add r0, r6, #0x0
+ mov r1, #0x0
+ mov r2, #0x4c
+ blx MI_CpuFill8
+ add r0, r6, #0x0
+ bl FUN_02016A18
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0202BE98
+FUN_0202BE98: ; 0x0202BE98
+ ldr r0, _0202BE9C ; =0x00000688
+ bx lr
+ .balign 4
+_0202BE9C: .word 0x00000688
+
+ thumb_func_start FUN_0202BEA0
+FUN_0202BEA0: ; 0x0202BEA0
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldr r2, _0202BED8 ; =0x00000688
+ mov r0, #0x0
+ add r1, r5, #0x0
+ blx MIi_CpuClearFast
+ mov r4, #0x0
+ mov r6, #0xab
+ add r7, r4, #0x0
+_0202BEB4:
+ add r0, r5, #0x0
+ bl FUN_02066978
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r7, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ beq _0202BECC
+ bl ErrorHandling
+_0202BECC:
+ add r4, r4, #0x1
+ add r5, #0xec
+ cmp r4, #0x6
+ blt _0202BEB4
+ pop {r3-r7, pc}
+ nop
+_0202BED8: .word 0x00000688
+
+ thumb_func_start FUN_0202BEDC
+FUN_0202BEDC: ; 0x0202BEDC
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldr r2, _0202BF14 ; =0x00000588
+ mov r0, #0x0
+ add r1, r5, #0x0
+ blx MIi_CpuClearFast
+ mov r4, #0x0
+ mov r6, #0xab
+ add r7, r4, #0x0
+_0202BEF0:
+ add r0, r5, #0x0
+ bl FUN_02066978
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r7, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ beq _0202BF08
+ bl ErrorHandling
+_0202BF08:
+ add r4, r4, #0x1
+ add r5, #0xec
+ cmp r4, #0x6
+ blt _0202BEF0
+ pop {r3-r7, pc}
+ nop
+_0202BF14: .word 0x00000588
+
+ thumb_func_start FUN_0202BF18
+FUN_0202BF18: ; 0x0202BF18
+ push {r4-r7}
+ add r2, r0, #0x0
+ ldr r3, _0202BF70 ; =0x00000588
+ mov r0, #0x0
+ add r5, r2, #0x0
+_0202BF22:
+ ldr r4, [r5, r3]
+ cmp r1, r4
+ beq _0202BF6C
+ add r0, r0, #0x1
+ add r5, r5, #0x4
+ cmp r0, #0x14
+ blt _0202BF22
+ ldr r1, _0202BF70 ; =0x00000588
+ mov r0, #0x0
+ add r4, r2, #0x0
+_0202BF36:
+ ldr r3, [r4, r1]
+ cmp r3, #0x0
+ beq _0202BF6C
+ add r0, r0, #0x1
+ add r4, r4, #0x4
+ cmp r0, #0x14
+ blt _0202BF36
+ mov r3, #0x0
+ ldr r4, _0202BF74 ; =0x7FFFFFFF
+ add r5, r3, #0x0
+_0202BF4A:
+ ldr r0, _0202BF78 ; =0x000005D8
+ ldr r1, [r2, r0]
+ add r0, r0, #0x4
+ ldr r0, [r2, r0]
+ sub r6, r1, r4
+ mov r12, r0
+ mov r6, r12
+ sbc r6, r3
+ bge _0202BF62
+ add r4, r1, #0x0
+ add r3, r0, #0x0
+ add r7, r5, #0x0
+_0202BF62:
+ add r5, r5, #0x1
+ add r2, #0x8
+ cmp r5, #0x14
+ blt _0202BF4A
+ add r0, r7, #0x0
+_0202BF6C:
+ pop {r4-r7}
+ bx lr
+ .balign 4
+_0202BF70: .word 0x00000588
+_0202BF74: .word 0x7FFFFFFF
+_0202BF78: .word 0x000005D8
+
+ thumb_func_start FUN_0202BF7C
+FUN_0202BF7C: ; 0x0202BF7C
+ add r3, r0, #0x0
+ add r0, r1, #0x0
+ mov r1, #0xec
+ mul r1, r2
+ add r1, r3, r1
+ ldr r3, _0202BF8C ; =FUN_02069A64
+ bx r3
+ nop
+_0202BF8C: .word FUN_02069A64
+
+ thumb_func_start FUN_0202BF90
+FUN_0202BF90: ; 0x0202BF90
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_0202BF18
+ add r6, r0, #0x0
+ lsl r0, r6, #0x2
+ add r1, r5, r0
+ ldr r0, _0202BFCC ; =0x00000588
+ str r4, [r1, r0]
+ bl FUN_020126FC
+ lsl r2, r6, #0x3
+ add r3, r5, r2
+ ldr r2, _0202BFD0 ; =0x000005D8
+ str r0, [r3, r2]
+ add r0, r2, #0x4
+ str r1, [r3, r0]
+ blx OS_GetOwnerRtcOffset
+ ldr r2, _0202BFD4 ; =0x00000678
+ str r0, [r5, r2]
+ add r0, r2, #0x4
+ add r2, #0x8
+ str r1, [r5, r0]
+ add r0, r5, r2
+ blx OS_GetMacAddress
+ pop {r4-r6, pc}
+ nop
+_0202BFCC: .word 0x00000588
+_0202BFD0: .word 0x000005D8
+_0202BFD4: .word 0x00000678
+
+ thumb_func_start FUN_0202BFD8
+FUN_0202BFD8: ; 0x0202BFD8
+ push {r4-r6, lr}
+ add r5, r1, #0x0
+ add r6, r0, #0x0
+ add r4, r2, #0x0
+ cmp r5, #0x6
+ blt _0202BFE8
+ bl ErrorHandling
+_0202BFE8:
+ mov r0, #0xec
+ mul r0, r5
+ add r3, r6, r0
+ mov r2, #0x1d
+_0202BFF0:
+ ldmia r3!, {r0-r1}
+ stmia r4!, {r0-r1}
+ sub r2, r2, #0x1
+ bne _0202BFF0
+ ldr r0, [r3, #0x0]
+ str r0, [r4, #0x0]
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202C000
+FUN_0202C000: ; 0x0202C000
+ push {r3-r7, lr}
+ mov r4, #0x0
+ add r5, r0, #0x0
+ add r6, r4, #0x0
+ mov r7, #0xab
+_0202C00A:
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ beq _0202C01A
+ add r4, r4, #0x1
+_0202C01A:
+ add r6, r6, #0x1
+ add r5, #0xec
+ cmp r6, #0x6
+ blt _0202C00A
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202C028
+FUN_0202C028: ; 0x0202C028
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_020126FC
+ ldr r1, _0202C058 ; =0x00000588
+ mov r3, #0x0
+ add r6, r5, #0x0
+_0202C038:
+ ldr r2, [r6, r1]
+ cmp r4, r2
+ bne _0202C04A
+ lsl r1, r3, #0x3
+ add r2, r5, r1
+ ldr r1, _0202C05C ; =0x000005D8
+ ldr r1, [r2, r1]
+ sub r0, r0, r1
+ pop {r4-r6, pc}
+_0202C04A:
+ add r3, r3, #0x1
+ add r6, r6, #0x4
+ cmp r3, #0x14
+ blt _0202C038
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ nop
+_0202C058: .word 0x00000588
+_0202C05C: .word 0x000005D8
+
+ thumb_func_start FUN_0202C060
+FUN_0202C060: ; 0x0202C060
+ push {r3-r5, lr}
+ sub sp, #0x8
+ add r4, r0, #0x0
+ add r0, sp, #0x0
+ blx OS_GetMacAddress
+ mov r0, #0x1a
+ mov r3, #0x0
+ add r5, sp, #0x0
+ lsl r0, r0, #0x6
+_0202C074:
+ add r1, r4, r3
+ ldrb r2, [r5, #0x0]
+ ldrb r1, [r1, r0]
+ cmp r2, r1
+ beq _0202C084
+ add sp, #0x8
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0202C084:
+ add r3, r3, #0x1
+ add r5, r5, #0x1
+ cmp r3, #0x6
+ blt _0202C074
+ mov r0, #0x1
+ add sp, #0x8
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202C094
+FUN_0202C094: ; 0x0202C094
+ push {r4, lr}
+ add r4, r0, #0x0
+ blx OS_GetOwnerRtcOffset
+ ldr r2, _0202C0B4 ; =0x00000678
+ ldr r3, [r4, r2]
+ add r2, r2, #0x4
+ ldr r2, [r4, r2]
+ eor r0, r3
+ eor r1, r2
+ orr r0, r1
+ bne _0202C0B0
+ mov r0, #0x1
+ pop {r4, pc}
+_0202C0B0:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+_0202C0B4: .word 0x00000678
+
+ thumb_func_start FUN_0202C0B8
+FUN_0202C0B8: ; 0x0202C0B8
+ push {r3-r4}
+ mov r4, #0x0
+ mov r1, #0x1a
+ add r3, r4, #0x0
+ lsl r1, r1, #0x6
+_0202C0C2:
+ add r2, r0, r3
+ ldrb r2, [r2, r1]
+ add r3, r3, #0x1
+ orr r4, r2
+ cmp r3, #0x6
+ blt _0202C0C2
+ cmp r4, #0x0
+ bne _0202C0D8
+ mov r0, #0x1
+ pop {r3-r4}
+ bx lr
+_0202C0D8:
+ mov r0, #0x0
+ pop {r3-r4}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0202C0E0
+FUN_0202C0E0: ; 0x0202C0E0
+ mov r0, #0x28
+ bx lr
+
+ thumb_func_start FUN_0202C0E4
+FUN_0202C0E4: ; 0x0202C0E4
+ push {r4-r5}
+ mov r4, #0x0
+ add r1, r4, #0x0
+ add r2, r4, #0x0
+_0202C0EC:
+ add r3, r2, #0x0
+ add r5, r0, #0x0
+_0202C0F0:
+ add r3, r3, #0x1
+ strh r1, [r5, #0x0]
+ add r5, r5, #0x2
+ cmp r3, #0x4
+ blt _0202C0F0
+ add r4, r4, #0x1
+ add r0, #0x8
+ cmp r4, #0x5
+ blt _0202C0EC
+ pop {r4-r5}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0202C108
+FUN_0202C108: ; 0x0202C108
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ mov r1, #0x21
+ add r4, r2, #0x0
+ bl FUN_02022610
+ lsl r1, r5, #0x3
+ add r3, r0, r1
+ lsl r2, r4, #0x1
+ ldrh r1, [r3, r2]
+ ldr r0, _0202C128 ; =0x0000270F
+ cmp r1, r0
+ bhs _0202C126
+ add r0, r1, #0x1
+ strh r0, [r3, r2]
+_0202C126:
+ pop {r3-r5, pc}
+ .balign 4
+_0202C128: .word 0x0000270F
+
+ thumb_func_start FUN_0202C12C
+FUN_0202C12C: ; 0x0202C12C
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ mov r1, #0x21
+ add r4, r2, #0x0
+ bl FUN_02022610
+ lsl r2, r5, #0x3
+ lsl r1, r4, #0x1
+ add r0, r0, r2
+ ldrh r0, [r1, r0]
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202C144
+FUN_0202C144: ; 0x0202C144
+ push {r3-r7, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x4c
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ bne _0202C194
+ add r0, r5, #0x0
+ bl FUN_02024DA0
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02029FC8
+ add r7, r0, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x5
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r2, r0, #0x0
+ lsl r2, r2, #0x10
+ add r0, r7, #0x0
+ add r1, r6, #0x0
+ lsr r2, r2, #0x10
+ bl FUN_0202A1C4
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ bl FUN_02024AF0
+ add r0, r5, #0x0
+ bl FUN_0204C1A8
+ add r1, r4, #0x0
+ bl FUN_0204C104
+_0202C194:
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202C198
+FUN_0202C198: ; 0x0202C198
+ ldr r1, _0202C1A4 ; =0x021C59D8
+ ldr r2, [r1, #0x4]
+ ldr r1, _0202C1A8 ; =0x00001310
+ str r0, [r2, r1]
+ bx lr
+ nop
+_0202C1A4: .word 0x021C59D8
+_0202C1A8: .word 0x00001310
+
+ thumb_func_start FUN_0202C1AC
+FUN_0202C1AC: ; 0x0202C1AC
+ ldr r1, _0202C1C0 ; =0x021C59D8
+ ldr r3, [r1, #0x4]
+ ldr r1, _0202C1C4 ; =0x00001310
+ ldr r2, [r3, r1]
+ sub r2, #0x9
+ cmp r2, #0x1
+ bls _0202C1BE
+ add r1, #0x20
+ str r0, [r3, r1]
+_0202C1BE:
+ bx lr
+ .balign 4
+_0202C1C0: .word 0x021C59D8
+_0202C1C4: .word 0x00001310
+
+ thumb_func_start FUN_0202C1C8
+FUN_0202C1C8: ; 0x0202C1C8
+ push {r3, lr}
+ mov r0, #0x3
+ bl FUN_0202C198
+ ldr r1, _0202C1F0 ; =0x021C59D8
+ ldr r0, _0202C1F4 ; =FUN_0202C1F8
+ ldr r1, [r1, #0x4]
+ blx FUN_020D9624
+ cmp r0, #0x2
+ beq _0202C1EC
+ bl FUN_0202C1AC
+ mov r0, #0x9
+ bl FUN_0202C198
+ mov r0, #0x0
+ pop {r3, pc}
+_0202C1EC:
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+_0202C1F0: .word 0x021C59D8
+_0202C1F4: .word FUN_0202C1F8
+
+ thumb_func_start FUN_0202C1F8
+FUN_0202C1F8: ; 0x0202C1F8
+ push {r3, lr}
+ ldrh r0, [r0, #0x2]
+ cmp r0, #0x0
+ beq _0202C20C
+ bl FUN_0202C1AC
+ mov r0, #0x9
+ bl FUN_0202C198
+ pop {r3, pc}
+_0202C20C:
+ bl FUN_0202C21C
+ cmp r0, #0x0
+ bne _0202C21A
+ mov r0, #0x9
+ bl FUN_0202C198
+_0202C21A:
+ pop {r3, pc}
+
+ thumb_func_start FUN_0202C21C
+FUN_0202C21C: ; 0x0202C21C
+ push {r4, lr}
+ ldr r0, _0202C278 ; =0x021C59D8
+ ldr r1, [r0, #0x4]
+ ldr r0, _0202C27C ; =0x00001310
+ ldr r0, [r1, r0]
+ sub r0, r0, #0x4
+ cmp r0, #0x2
+ bhi _0202C230
+ mov r0, #0x1
+ pop {r4, pc}
+_0202C230:
+ blx FUN_020D7E9C
+ add r4, r0, #0x0
+ mov r0, #0x66
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ mov r1, #0x4
+ blx DC_InvalidateRange
+ mov r0, #0x66
+ mov r1, #0x0
+ lsl r0, r0, #0x2
+ str r1, [r4, r0]
+ add r0, r4, r0
+ mov r1, #0x4
+ blx DC_FlushRange
+ ldr r0, _0202C280 ; =FUN_0202C288
+ blx FUN_020D9554
+ cmp r0, #0x2
+ beq _0202C264
+ bl FUN_0202C1AC
+ mov r0, #0x0
+ pop {r4, pc}
+_0202C264:
+ ldr r2, _0202C278 ; =0x021C59D8
+ ldr r1, _0202C284 ; =0x0000132C
+ ldr r0, [r2, #0x4]
+ mov r3, #0x0
+ strh r3, [r0, r1]
+ ldr r2, [r2, #0x4]
+ mov r0, #0x1
+ add r1, r1, #0x2
+ strh r0, [r2, r1]
+ pop {r4, pc}
+ .balign 4
+_0202C278: .word 0x021C59D8
+_0202C27C: .word 0x00001310
+_0202C280: .word FUN_0202C288
+_0202C284: .word 0x0000132C
+
+ thumb_func_start FUN_0202C288
+FUN_0202C288: ; 0x0202C288
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldrh r0, [r5, #0x10]
+ mov r1, #0x1
+ lsl r1, r0
+ lsl r0, r1, #0x10
+ lsr r4, r0, #0x10
+ ldrh r0, [r5, #0x2]
+ cmp r0, #0x0
+ beq _0202C2A8
+ bl FUN_0202C1AC
+ mov r0, #0x9
+ bl FUN_0202C198
+ pop {r4-r6, pc}
+_0202C2A8:
+ ldrh r0, [r5, #0x8]
+ cmp r0, #0x7
+ bgt _0202C2C0
+ bge _0202C2DA
+ cmp r0, #0x2
+ bgt _0202C378
+ cmp r0, #0x0
+ blt _0202C378
+ beq _0202C36A
+ cmp r0, #0x2
+ beq _0202C2CC
+ pop {r4-r6, pc}
+_0202C2C0:
+ cmp r0, #0x9
+ bgt _0202C2C8
+ beq _0202C34C
+ pop {r4-r6, pc}
+_0202C2C8:
+ cmp r0, #0x1a
+ pop {r4-r6, pc}
+_0202C2CC:
+ ldr r0, _0202C37C ; =0x021C59D8
+ ldr r2, [r0, #0x4]
+ ldr r0, _0202C380 ; =0x00001345
+ ldrb r1, [r2, r0]
+ add r1, r1, #0x1
+ strb r1, [r2, r0]
+ pop {r4-r6, pc}
+_0202C2DA:
+ ldr r0, _0202C37C ; =0x021C59D8
+ ldr r2, [r0, #0x4]
+ ldr r0, _0202C384 ; =0x00001343
+ ldrb r1, [r2, r0]
+ cmp r1, #0x1
+ beq _0202C318
+ sub r0, r0, #0x1
+ ldrb r0, [r2, r0]
+ cmp r0, #0x1
+ beq _0202C318
+ bl FUN_0202CBA0
+ ldr r1, _0202C37C ; =0x021C59D8
+ ldr r2, [r1, #0x4]
+ ldr r1, _0202C388 ; =0x00001334
+ ldrb r1, [r2, r1]
+ cmp r0, r1
+ bge _0202C318
+ bl FUN_02033534
+ ldrb r1, [r5, #0x14]
+ cmp r1, r0
+ bne _0202C318
+ add r1, r5, #0x0
+ ldr r0, _0202C38C ; =0x02105D54
+ add r1, #0x15
+ mov r2, #0x3
+ blx FUN_020DF510
+ cmp r0, #0x0
+ beq _0202C330
+_0202C318:
+ ldrh r1, [r5, #0x10]
+ mov r0, #0x0
+ blx FUN_020D9060
+ cmp r0, #0x2
+ beq _0202C378
+ bl FUN_0202C1AC
+ mov r0, #0x9
+ bl FUN_0202C198
+ pop {r4-r6, pc}
+_0202C330:
+ ldr r1, _0202C37C ; =0x021C59D8
+ ldr r0, _0202C390 ; =0x0000132E
+ ldr r3, [r1, #0x4]
+ ldrh r2, [r3, r0]
+ orr r2, r4
+ strh r2, [r3, r0]
+ ldr r1, [r1, #0x4]
+ sub r0, r0, #0x6
+ ldr r1, [r1, r0]
+ cmp r1, #0x0
+ beq _0202C378
+ ldrh r0, [r5, #0x10]
+ blx r1
+ pop {r4-r6, pc}
+_0202C34C:
+ ldr r2, _0202C37C ; =0x021C59D8
+ ldr r1, _0202C390 ; =0x0000132E
+ ldr r0, [r2, #0x4]
+ mvn r3, r4
+ ldrh r6, [r0, r1]
+ and r3, r6
+ strh r3, [r0, r1]
+ ldr r0, [r2, #0x4]
+ sub r1, #0xa
+ ldr r1, [r0, r1]
+ cmp r1, #0x0
+ beq _0202C378
+ ldrh r0, [r5, #0x10]
+ blx r1
+ pop {r4-r6, pc}
+_0202C36A:
+ bl FUN_0202C394
+ cmp r0, #0x0
+ bne _0202C378
+ mov r0, #0x9
+ bl FUN_0202C198
+_0202C378:
+ pop {r4-r6, pc}
+ nop
+_0202C37C: .word 0x021C59D8
+_0202C380: .word 0x00001345
+_0202C384: .word 0x00001343
+_0202C388: .word 0x00001334
+_0202C38C: .word 0x02105D54
+_0202C390: .word 0x0000132E
+
+ thumb_func_start FUN_0202C394
+FUN_0202C394: ; 0x0202C394
+ push {r4, lr}
+ sub sp, #0x8
+ ldr r0, _0202C3F0 ; =0x021C59D8
+ ldr r1, [r0, #0x4]
+ ldr r0, _0202C3F4 ; =0x00001310
+ ldr r0, [r1, r0]
+ sub r0, r0, #0x4
+ cmp r0, #0x2
+ bhi _0202C3AC
+ add sp, #0x8
+ mov r0, #0x1
+ pop {r4, pc}
+_0202C3AC:
+ mov r0, #0x4
+ bl FUN_0202C198
+ ldr r0, _0202C3F0 ; =0x021C59D8
+ ldr r2, _0202C3F8 ; =0x00001304
+ ldr r4, [r0, #0x4]
+ ldr r3, _0202C3FC ; =0x00001020
+ ldr r0, [r4, r2]
+ add r2, r2, #0x4
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ ldr r2, [r4, r2]
+ add r1, r4, r3
+ lsl r2, r2, #0x10
+ sub r3, #0xe0
+ ldr r0, _0202C400 ; =FUN_0202C404
+ lsr r2, r2, #0x10
+ add r3, r4, r3
+ blx FUN_020D9B48
+ cmp r0, #0x2
+ beq _0202C3E8
+ bl FUN_0202C1AC
+ add sp, #0x8
+ mov r0, #0x0
+ pop {r4, pc}
+_0202C3E8:
+ mov r0, #0x1
+ add sp, #0x8
+ pop {r4, pc}
+ nop
+_0202C3F0: .word 0x021C59D8
+_0202C3F4: .word 0x00001310
+_0202C3F8: .word 0x00001304
+_0202C3FC: .word 0x00001020
+_0202C400: .word FUN_0202C404
+
+ thumb_func_start FUN_0202C404
+FUN_0202C404: ; 0x0202C404
+ push {r3, lr}
+ ldrh r1, [r0, #0x2]
+ cmp r1, #0x0
+ beq _0202C41A
+ add r0, r1, #0x0
+ bl FUN_0202C1AC
+ mov r0, #0x9
+ bl FUN_0202C198
+ pop {r3, pc}
+_0202C41A:
+ ldrh r0, [r0, #0x4]
+ sub r0, #0xa
+ cmp r0, #0x3
+ bhi _0202C454
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0202C42E: ; jump table (using 16-bit offset)
+ .short _0202C436 - _0202C42E - 2; case 0
+ .short _0202C454 - _0202C42E - 2; case 1
+ .short _0202C454 - _0202C42E - 2; case 2
+ .short _0202C454 - _0202C42E - 2; case 3
+_0202C436:
+ ldr r0, _0202C458 ; =0x021C59D8
+ ldr r2, [r0, #0x4]
+ ldr r0, _0202C45C ; =0x00001314
+ ldr r1, [r2, r0]
+ cmp r1, #0x2
+ bne _0202C44E
+ sub r0, r0, #0x4
+ ldr r0, [r2, r0]
+ cmp r0, #0x4
+ beq _0202C44E
+ cmp r0, #0x6
+ beq _0202C454
+_0202C44E:
+ mov r0, #0x4
+ bl FUN_0202C198
+_0202C454:
+ pop {r3, pc}
+ nop
+_0202C458: .word 0x021C59D8
+_0202C45C: .word 0x00001314
+
+ thumb_func_start FUN_0202C460
+FUN_0202C460: ; 0x0202C460
+ push {r3, lr}
+ mov r0, #0x3
+ bl FUN_0202C198
+ ldr r0, _0202C480 ; =FUN_0202C484
+ blx FUN_020D9960
+ cmp r0, #0x2
+ beq _0202C47A
+ bl FUN_0202C1AC
+ mov r0, #0x0
+ pop {r3, pc}
+_0202C47A:
+ mov r0, #0x1
+ pop {r3, pc}
+ nop
+_0202C480: .word FUN_0202C484
+
+ thumb_func_start FUN_0202C484
+FUN_0202C484: ; 0x0202C484
+ push {r3, lr}
+ ldrh r0, [r0, #0x2]
+ cmp r0, #0x0
+ beq _0202C496
+ bl FUN_0202C1AC
+ bl FUN_0202D0D8
+ pop {r3, pc}
+_0202C496:
+ bl FUN_0202C4A4
+ cmp r0, #0x0
+ bne _0202C4A2
+ bl FUN_0202D0D8
+_0202C4A2:
+ pop {r3, pc}
+
+ thumb_func_start FUN_0202C4A4
+FUN_0202C4A4: ; 0x0202C4A4
+ push {r3, lr}
+ ldr r0, _0202C4BC ; =FUN_0202C4C0
+ blx FUN_020D950C
+ cmp r0, #0x2
+ beq _0202C4B8
+ bl FUN_0202C1AC
+ mov r0, #0x0
+ pop {r3, pc}
+_0202C4B8:
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+_0202C4BC: .word FUN_0202C4C0
+
+ thumb_func_start FUN_0202C4C0
+FUN_0202C4C0: ; 0x0202C4C0
+ push {r3, lr}
+ ldrh r0, [r0, #0x2]
+ cmp r0, #0x0
+ beq _0202C4CE
+ bl FUN_0202C1AC
+ pop {r3, pc}
+_0202C4CE:
+ mov r0, #0x1
+ bl FUN_0202C198
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202C4D8
+FUN_0202C4D8: ; 0x0202C4D8
+ push {r3-r7, lr}
+ add r6, r2, #0x0
+ ldr r2, _0202C564 ; =0x021C59D8
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ mov r3, #0x2
+ ldr r0, [r2, #0x4]
+ ldr r1, _0202C568 ; =0x00001308
+ lsl r3, r3, #0x8
+ str r3, [r0, r1]
+ ldr r2, [r2, #0x4]
+ mov r0, #0x40
+ sub r1, r1, #0x4
+ str r0, [r2, r1]
+ mov r0, #0x2
+ bl FUN_0202C198
+ ldr r1, _0202C564 ; =0x021C59D8
+ ldr r0, _0202C56C ; =0x00001256
+ ldr r3, [r1, #0x4]
+ mov r2, #0x1
+ strh r2, [r3, r0]
+ add r7, r0, #0x0
+ ldrh r3, [r4, #0x4]
+ ldr r2, [r1, #0x4]
+ add r7, #0x96
+ strh r3, [r2, r7]
+ add r7, r0, #0x0
+ ldrh r3, [r4, #0x2]
+ ldr r2, [r1, #0x4]
+ add r7, #0x94
+ strh r3, [r2, r7]
+ add r2, r0, #0x0
+ ldrh r4, [r4, #0x0]
+ ldr r3, [r1, #0x4]
+ add r2, #0x92
+ strh r4, [r3, r2]
+ add r2, r0, #0x0
+ ldr r3, [r1, #0x4]
+ add r2, #0xbe
+ str r5, [r3, r2]
+ add r3, r0, #0x0
+ ldr r4, [r1, #0x4]
+ mov r2, #0x0
+ add r3, #0xaa
+ str r2, [r4, r3]
+ add r3, r0, #0x0
+ ldr r4, [r1, #0x4]
+ add r3, #0xb6
+ strh r6, [r4, r3]
+ add r3, r0, #0x0
+ ldr r4, [r1, #0x4]
+ add r3, #0x8e
+ strh r2, [r4, r3]
+ ldr r2, [r1, #0x4]
+ add r0, #0xb8
+ mov r1, #0x1
+ strh r1, [r2, r0]
+ bl FUN_0202C5D8
+ cmp r0, #0x0
+ bne _0202C55E
+ mov r0, #0x9
+ bl FUN_0202C198
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0202C55E:
+ mov r0, #0x1
+ pop {r3-r7, pc}
+ nop
+_0202C564: .word 0x021C59D8
+_0202C568: .word 0x00001308
+_0202C56C: .word 0x00001256
+
+ thumb_func_start FUN_0202C570
+FUN_0202C570: ; 0x0202C570
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ mov r0, #0x2
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_0202C198
+ ldr r1, _0202C5D4 ; =0x021C59D8
+ mov r0, #0x13
+ ldr r2, [r1, #0x4]
+ lsl r0, r0, #0x8
+ str r5, [r2, r0]
+ add r2, r0, #0x0
+ ldr r3, [r1, #0x4]
+ add r2, #0xc
+ strh r6, [r3, r2]
+ add r3, r0, #0x0
+ ldr r5, [r1, #0x4]
+ mov r2, #0x0
+ sub r3, #0x1c
+ strh r2, [r5, r3]
+ add r3, r0, #0x0
+ ldr r5, [r1, #0x4]
+ add r3, #0xe
+ strh r2, [r5, r3]
+ add r2, r0, #0x0
+ ldrh r5, [r4, #0x4]
+ ldr r3, [r1, #0x4]
+ sub r2, #0x14
+ strh r5, [r3, r2]
+ add r2, r0, #0x0
+ ldrh r5, [r4, #0x2]
+ ldr r3, [r1, #0x4]
+ sub r2, #0x16
+ strh r5, [r3, r2]
+ ldrh r2, [r4, #0x0]
+ ldr r1, [r1, #0x4]
+ sub r0, #0x18
+ strh r2, [r1, r0]
+ bl FUN_0202C5D8
+ cmp r0, #0x0
+ bne _0202C5D0
+ mov r0, #0x9
+ bl FUN_0202C198
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_0202C5D0:
+ mov r0, #0x1
+ pop {r4-r6, pc}
+ .balign 4
+_0202C5D4: .word 0x021C59D8
+
+ thumb_func_start FUN_0202C5D8
+FUN_0202C5D8: ; 0x0202C5D8
+ push {r3-r7, lr}
+ blx FUN_020D8C3C
+ add r5, r0, #0x0
+ mov r0, #0x2
+ lsl r0, r0, #0xe
+ cmp r5, r0
+ bne _0202C5F8
+ mov r0, #0x3
+ bl FUN_0202C1AC
+ mov r0, #0x1
+ bl FUN_020336A0
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0202C5F8:
+ cmp r5, #0x0
+ bne _0202C60C
+ mov r0, #0x16
+ bl FUN_0202C1AC
+ mov r0, #0x1
+ bl FUN_020336A0
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0202C60C:
+ ldr r1, _0202C684 ; =0x021C59D8
+ ldr r0, _0202C688 ; =0x0000130C
+ ldr r3, [r1, #0x4]
+ ldrh r2, [r3, r0]
+ cmp r2, #0x0
+ bne _0202C64C
+ add r7, r0, #0x0
+ mov r3, #0x1
+ add r2, r3, #0x0
+ sub r7, #0x28
+ sub r0, #0x28
+_0202C622:
+ ldr r4, [r1, #0x4]
+ ldr r6, _0202C68C ; =0x000012E4
+ ldrh r6, [r4, r6]
+ add r6, r6, #0x1
+ strh r6, [r4, r7]
+ ldr r4, [r1, #0x4]
+ ldrh r6, [r4, r0]
+ cmp r6, #0x10
+ bls _0202C638
+ ldr r6, _0202C68C ; =0x000012E4
+ strh r3, [r4, r6]
+_0202C638:
+ ldr r6, [r1, #0x4]
+ ldr r4, _0202C68C ; =0x000012E4
+ ldrh r4, [r6, r4]
+ add r6, r2, #0x0
+ sub r4, r4, #0x1
+ lsl r6, r4
+ add r4, r5, #0x0
+ tst r4, r6
+ bne _0202C650
+ b _0202C622
+_0202C64C:
+ sub r0, #0x28
+ strh r2, [r3, r0]
+_0202C650:
+ blx FUN_020D8A4C
+ ldr r2, _0202C684 ; =0x021C59D8
+ ldr r1, _0202C690 ; =0x000012E6
+ ldr r3, [r2, #0x4]
+ strh r0, [r3, r1]
+ add r0, r1, #0x0
+ ldr r3, [r2, #0x4]
+ sub r0, #0xc6
+ add r4, r3, r0
+ sub r0, r1, #0x6
+ str r4, [r3, r0]
+ ldr r2, [r2, #0x4]
+ sub r1, r1, #0x6
+ ldr r0, _0202C694 ; =FUN_0202C698
+ add r1, r2, r1
+ blx FUN_020D940C
+ cmp r0, #0x2
+ beq _0202C680
+ bl FUN_0202C1AC
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0202C680:
+ mov r0, #0x1
+ pop {r3-r7, pc}
+ .balign 4
+_0202C684: .word 0x021C59D8
+_0202C688: .word 0x0000130C
+_0202C68C: .word 0x000012E4
+_0202C690: .word 0x000012E6
+_0202C694: .word FUN_0202C698
+
+ thumb_func_start FUN_0202C698
+FUN_0202C698: ; 0x0202C698
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldrh r0, [r4, #0x2]
+ cmp r0, #0x0
+ beq _0202C6AE
+ bl FUN_0202C1AC
+ mov r0, #0x9
+ bl FUN_0202C198
+ pop {r4, pc}
+_0202C6AE:
+ ldr r0, _0202C760 ; =0x021C59D8
+ ldr r2, [r0, #0x4]
+ ldr r0, _0202C764 ; =0x00001310
+ ldr r1, [r2, r0]
+ cmp r1, #0x2
+ beq _0202C6D0
+ mov r1, #0x0
+ sub r0, r0, #0x2
+ strh r1, [r2, r0]
+ bl FUN_0202C794
+ cmp r0, #0x0
+ bne _0202C75C
+ mov r0, #0x9
+ bl FUN_0202C198
+ pop {r4, pc}
+_0202C6D0:
+ ldrh r1, [r4, #0x8]
+ cmp r1, #0x3
+ beq _0202C75C
+ cmp r1, #0x4
+ beq _0202C74E
+ cmp r1, #0x5
+ bne _0202C74E
+ sub r0, #0xf0
+ add r0, r2, r0
+ mov r1, #0xc0
+ blx DC_InvalidateRange
+ ldr r0, _0202C760 ; =0x021C59D8
+ ldr r1, [r0, #0x4]
+ ldr r0, _0202C768 ; =0x00001320
+ ldr r2, [r1, r0]
+ cmp r2, #0x0
+ beq _0202C704
+ ldrh r0, [r4, #0x36]
+ cmp r0, #0x8
+ blo _0202C704
+ add r1, r4, #0x0
+ add r1, #0x48
+ ldrb r1, [r1, #0x4]
+ ldr r0, [r4, #0x3c]
+ blx r2
+_0202C704:
+ ldrh r0, [r4, #0x36]
+ cmp r0, #0x8
+ blo _0202C74E
+ ldr r0, _0202C760 ; =0x021C59D8
+ ldr r2, [r4, #0x3c]
+ ldr r0, [r0, #0x4]
+ ldr r1, [r0, #0x8]
+ cmp r2, r1
+ bne _0202C74E
+ add r4, #0x43
+ ldrb r2, [r4, #0x0]
+ mov r1, #0x3
+ and r1, r2
+ cmp r1, #0x1
+ bne _0202C74E
+ mov r1, #0x13
+ lsl r1, r1, #0x8
+ ldr r2, [r0, r1]
+ cmp r2, #0x0
+ beq _0202C732
+ sub r1, #0xe0
+ add r0, r0, r1
+ blx r2
+_0202C732:
+ ldr r0, _0202C760 ; =0x021C59D8
+ ldr r1, [r0, #0x4]
+ ldr r0, _0202C76C ; =0x0000130E
+ ldrh r0, [r1, r0]
+ cmp r0, #0x0
+ beq _0202C74E
+ bl FUN_0202C794
+ cmp r0, #0x0
+ bne _0202C75C
+ mov r0, #0x9
+ bl FUN_0202C198
+ pop {r4, pc}
+_0202C74E:
+ bl FUN_0202C5D8
+ cmp r0, #0x0
+ bne _0202C75C
+ mov r0, #0x9
+ bl FUN_0202C198
+_0202C75C:
+ pop {r4, pc}
+ nop
+_0202C760: .word 0x021C59D8
+_0202C764: .word 0x00001310
+_0202C768: .word 0x00001320
+_0202C76C: .word 0x0000130E
+
+ thumb_func_start FUN_0202C770
+FUN_0202C770: ; 0x0202C770
+ push {r3, lr}
+ ldr r0, _0202C78C ; =0x021C59D8
+ ldr r1, [r0, #0x4]
+ ldr r0, _0202C790 ; =0x00001310
+ ldr r0, [r1, r0]
+ cmp r0, #0x2
+ beq _0202C782
+ mov r0, #0x0
+ pop {r3, pc}
+_0202C782:
+ mov r0, #0x3
+ bl FUN_0202C198
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+_0202C78C: .word 0x021C59D8
+_0202C790: .word 0x00001310
+
+ thumb_func_start FUN_0202C794
+FUN_0202C794: ; 0x0202C794
+ push {r3, lr}
+ ldr r0, _0202C7AC ; =FUN_0202C7B0
+ blx FUN_020D9244
+ cmp r0, #0x2
+ beq _0202C7A8
+ bl FUN_0202C1AC
+ mov r0, #0x0
+ pop {r3, pc}
+_0202C7A8:
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+_0202C7AC: .word FUN_0202C7B0
+
+ thumb_func_start FUN_0202C7B0
+FUN_0202C7B0: ; 0x0202C7B0
+ push {r3, lr}
+ ldrh r0, [r0, #0x2]
+ cmp r0, #0x0
+ beq _0202C7BE
+ bl FUN_0202C1AC
+ pop {r3, pc}
+_0202C7BE:
+ mov r0, #0x1
+ bl FUN_0202C198
+ ldr r0, _0202C7E0 ; =0x021C59D8
+ ldr r1, [r0, #0x4]
+ ldr r0, _0202C7E4 ; =0x0000130E
+ ldrh r0, [r1, r0]
+ cmp r0, #0x0
+ beq _0202C7DE
+ bl FUN_0202C7E8
+ cmp r0, #0x0
+ bne _0202C7DE
+ mov r0, #0x9
+ bl FUN_0202C198
+_0202C7DE:
+ pop {r3, pc}
+ .balign 4
+_0202C7E0: .word 0x021C59D8
+_0202C7E4: .word 0x0000130E
+
+ thumb_func_start FUN_0202C7E8
+FUN_0202C7E8: ; 0x0202C7E8
+ push {lr}
+ sub sp, #0x24
+ ldr r0, _0202C844 ; =0x021C59D8
+ ldr r1, [r0, #0x4]
+ ldr r0, _0202C848 ; =0x00001310
+ ldr r0, [r1, r0]
+ sub r0, r0, #0x4
+ cmp r0, #0x2
+ bhi _0202C800
+ add sp, #0x24
+ mov r0, #0x1
+ pop {pc}
+_0202C800:
+ mov r0, #0x3
+ bl FUN_0202C198
+ add r1, sp, #0x4
+ ldr r0, _0202C84C ; =0x02105D54
+ add r1, #0x1
+ mov r2, #0x3
+ blx MI_CpuCopy8
+ bl FUN_02033534
+ add r1, sp, #0x4
+ strb r0, [r1, #0x0]
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldr r1, _0202C844 ; =0x021C59D8
+ ldr r0, _0202C850 ; =FUN_0202C858
+ ldr r2, [r1, #0x4]
+ ldr r1, _0202C854 ; =0x00001220
+ mov r3, #0x1
+ add r1, r2, r1
+ add r2, sp, #0x4
+ blx FUN_020D9168
+ cmp r0, #0x2
+ beq _0202C83E
+ bl FUN_0202C1AC
+ add sp, #0x24
+ mov r0, #0x0
+ pop {pc}
+_0202C83E:
+ mov r0, #0x1
+ add sp, #0x24
+ pop {pc}
+ .balign 4
+_0202C844: .word 0x021C59D8
+_0202C848: .word 0x00001310
+_0202C84C: .word 0x02105D54
+_0202C850: .word FUN_0202C858
+_0202C854: .word 0x00001220
+
+ thumb_func_start FUN_0202C858
+FUN_0202C858: ; 0x0202C858
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldrh r0, [r4, #0x2]
+ cmp r0, #0x0
+ beq _0202C894
+ bl FUN_0202C1AC
+ ldrh r0, [r4, #0x2]
+ cmp r0, #0xc
+ bne _0202C874
+ mov r0, #0x9
+ bl FUN_0202C198
+ pop {r4, pc}
+_0202C874:
+ cmp r0, #0xb
+ bne _0202C880
+ mov r0, #0x9
+ bl FUN_0202C198
+ pop {r4, pc}
+_0202C880:
+ cmp r0, #0x1
+ bne _0202C88C
+ mov r0, #0x8
+ bl FUN_0202C198
+ pop {r4, pc}
+_0202C88C:
+ mov r0, #0x9
+ bl FUN_0202C198
+ pop {r4, pc}
+_0202C894:
+ ldrh r0, [r4, #0x8]
+ cmp r0, #0x8
+ beq _0202C8FA
+ cmp r0, #0x7
+ bne _0202C8DA
+ ldr r0, _0202C8FC ; =0x021C59D8
+ ldr r1, [r0, #0x4]
+ ldr r0, _0202C900 ; =0x00001335
+ ldrb r0, [r1, r0]
+ cmp r0, #0x0
+ beq _0202C8B8
+ mov r0, #0x14
+ bl FUN_0202C1AC
+ mov r0, #0x9
+ bl FUN_0202C198
+ pop {r4, pc}
+_0202C8B8:
+ mov r0, #0x4
+ bl FUN_0202C198
+ bl FUN_0202C908
+ cmp r0, #0x0
+ bne _0202C8CE
+ mov r0, #0x3
+ bl FUN_0202C198
+ pop {r4, pc}
+_0202C8CE:
+ ldr r0, _0202C8FC ; =0x021C59D8
+ ldrh r2, [r4, #0xa]
+ ldr r1, [r0, #0x4]
+ ldr r0, _0202C904 ; =0x0000132C
+ strh r2, [r1, r0]
+ pop {r4, pc}
+_0202C8DA:
+ cmp r0, #0x6
+ beq _0202C8FA
+ cmp r0, #0x9
+ bne _0202C8F0
+ mov r0, #0x14
+ bl FUN_0202C1AC
+ mov r0, #0x9
+ bl FUN_0202C198
+ pop {r4, pc}
+_0202C8F0:
+ cmp r0, #0x1a
+ beq _0202C8FA
+ mov r0, #0x9
+ bl FUN_0202C198
+_0202C8FA:
+ pop {r4, pc}
+ .balign 4
+_0202C8FC: .word 0x021C59D8
+_0202C900: .word 0x00001335
+_0202C904: .word 0x0000132C
+
+ thumb_func_start FUN_0202C908
+FUN_0202C908: ; 0x0202C908
+ push {r4, lr}
+ sub sp, #0x8
+ ldr r0, _0202C948 ; =0x021C59D8
+ ldr r2, _0202C94C ; =0x00001304
+ ldr r4, [r0, #0x4]
+ ldr r3, _0202C950 ; =0x00001020
+ ldr r0, [r4, r2]
+ add r1, r4, r3
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ add r2, r2, #0x4
+ ldr r2, [r4, r2]
+ sub r3, #0xe0
+ lsl r2, r2, #0x10
+ ldr r0, _0202C954 ; =FUN_0202C958
+ lsr r2, r2, #0x10
+ add r3, r4, r3
+ blx FUN_020D9B48
+ cmp r0, #0x2
+ beq _0202C942
+ bl FUN_0202C1AC
+ add sp, #0x8
+ mov r0, #0x0
+ pop {r4, pc}
+_0202C942:
+ mov r0, #0x1
+ add sp, #0x8
+ pop {r4, pc}
+ .balign 4
+_0202C948: .word 0x021C59D8
+_0202C94C: .word 0x00001304
+_0202C950: .word 0x00001020
+_0202C954: .word FUN_0202C958
+
+ thumb_func_start FUN_0202C958
+FUN_0202C958: ; 0x0202C958
+ push {r3, lr}
+ ldrh r1, [r0, #0x2]
+ cmp r1, #0x0
+ beq _0202C97A
+ cmp r1, #0xf
+ beq _0202C9B0
+ cmp r1, #0x9
+ beq _0202C9B0
+ cmp r1, #0xd
+ beq _0202C9B0
+ add r0, r1, #0x0
+ bl FUN_0202C1AC
+ mov r0, #0x9
+ bl FUN_0202C198
+ pop {r3, pc}
+_0202C97A:
+ ldrh r0, [r0, #0x4]
+ sub r0, #0xa
+ cmp r0, #0x3
+ bhi _0202C9B0
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0202C98E: ; jump table (using 16-bit offset)
+ .short _0202C996 - _0202C98E - 2; case 0
+ .short _0202C9B0 - _0202C98E - 2; case 1
+ .short _0202C9B0 - _0202C98E - 2; case 2
+ .short _0202C9B0 - _0202C98E - 2; case 3
+_0202C996:
+ ldr r0, _0202C9B4 ; =0x021C59D8
+ ldr r2, [r0, #0x4]
+ ldr r0, _0202C9B8 ; =0x00001314
+ ldr r1, [r2, r0]
+ cmp r1, #0x3
+ bne _0202C9AA
+ sub r0, r0, #0x4
+ ldr r0, [r2, r0]
+ cmp r0, #0x6
+ beq _0202C9B0
+_0202C9AA:
+ mov r0, #0x4
+ bl FUN_0202C198
+_0202C9B0:
+ pop {r3, pc}
+ nop
+_0202C9B4: .word 0x021C59D8
+_0202C9B8: .word 0x00001314
+
+ thumb_func_start FUN_0202C9BC
+FUN_0202C9BC: ; 0x0202C9BC
+ push {r3, lr}
+ mov r0, #0x3
+ bl FUN_0202C198
+ ldr r0, _0202C9DC ; =FUN_0202C9E0
+ blx FUN_020D9960
+ cmp r0, #0x2
+ beq _0202C9D6
+ bl FUN_0202C1AC
+ mov r0, #0x0
+ pop {r3, pc}
+_0202C9D6:
+ mov r0, #0x1
+ pop {r3, pc}
+ nop
+_0202C9DC: .word FUN_0202C9E0
+
+ thumb_func_start FUN_0202C9E0
+FUN_0202C9E0: ; 0x0202C9E0
+ push {r3, lr}
+ ldrh r0, [r0, #0x2]
+ cmp r0, #0x0
+ beq _0202C9F2
+ bl FUN_0202C1AC
+ bl FUN_0202D100
+ pop {r3, pc}
+_0202C9F2:
+ bl FUN_0202CA04
+ cmp r0, #0x0
+ bne _0202CA00
+ mov r0, #0x9
+ bl FUN_0202C198
+_0202CA00:
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202CA04
+FUN_0202CA04: ; 0x0202CA04
+ push {r3, lr}
+ mov r0, #0x3
+ bl FUN_0202C198
+ ldr r0, _0202CA28 ; =FUN_0202CA2C
+ mov r1, #0x0
+ blx FUN_020D9060
+ cmp r0, #0x2
+ beq _0202CA24
+ bl FUN_0202C1AC
+ bl FUN_0202D0D8
+ mov r0, #0x0
+ pop {r3, pc}
+_0202CA24:
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+_0202CA28: .word FUN_0202CA2C
+
+ thumb_func_start FUN_0202CA2C
+FUN_0202CA2C: ; 0x0202CA2C
+ push {r3, lr}
+ ldrh r0, [r0, #0x2]
+ cmp r0, #0x0
+ beq _0202CA3A
+ bl FUN_0202C1AC
+ pop {r3, pc}
+_0202CA3A:
+ mov r0, #0x1
+ bl FUN_0202C198
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202CA44
+FUN_0202CA44: ; 0x0202CA44
+ push {r3, lr}
+ mov r0, #0x3
+ bl FUN_0202C198
+ ldr r0, _0202CA64 ; =FUN_0202CA68
+ blx FUN_020D9774
+ cmp r0, #0x2
+ beq _0202CA5E
+ bl FUN_0202C1AC
+ mov r0, #0x0
+ pop {r3, pc}
+_0202CA5E:
+ mov r0, #0x1
+ pop {r3, pc}
+ nop
+_0202CA64: .word FUN_0202CA68
+
+ thumb_func_start FUN_0202CA68
+FUN_0202CA68: ; 0x0202CA68
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldrh r0, [r4, #0x2]
+ cmp r0, #0x0
+ beq _0202CA80
+ mov r0, #0x9
+ bl FUN_0202C198
+ ldrh r0, [r4, #0x2]
+ bl FUN_0202C1AC
+ pop {r4, pc}
+_0202CA80:
+ mov r0, #0x1
+ bl FUN_0202C198
+ pop {r4, pc}
+
+ thumb_func_start FUN_0202CA88
+FUN_0202CA88: ; 0x0202CA88
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ ldr r0, _0202CAD0 ; =0x021C59D8
+ add r6, r1, #0x0
+ add r4, r2, #0x0
+ ldr r1, [r0, #0x4]
+ mov r0, #0x3d
+ lsl r0, r0, #0x6
+ ldr r2, _0202CAD4 ; =0x00001304
+ add r0, r1, r0
+ ldr r1, [r1, r2]
+ add r7, r3, #0x0
+ blx DC_FlushRange
+ ldr r0, _0202CAD8 ; =0x0000FFFF
+ add r1, r7, #0x0
+ str r0, [sp, #0x0]
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x4]
+ mov r0, #0x2
+ str r0, [sp, #0x8]
+ ldr r0, _0202CADC ; =FUN_0202CAE0
+ add r2, r5, #0x0
+ add r3, r6, #0x0
+ blx FUN_020D99EC
+ cmp r0, #0x2
+ bne _0202CACA
+ add sp, #0xc
+ mov r0, #0x1
+ pop {r4-r7, pc}
+_0202CACA:
+ mov r0, #0x0
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+_0202CAD0: .word 0x021C59D8
+_0202CAD4: .word 0x00001304
+_0202CAD8: .word 0x0000FFFF
+_0202CADC: .word FUN_0202CAE0
+
+ thumb_func_start FUN_0202CAE0
+FUN_0202CAE0: ; 0x0202CAE0
+ push {r3, lr}
+ ldrh r1, [r0, #0x2]
+ cmp r1, #0x0
+ beq _0202CAF4
+ cmp r1, #0xf
+ beq _0202CAF4
+ add r0, r1, #0x0
+ bl FUN_0202C1AC
+ pop {r3, pc}
+_0202CAF4:
+ ldr r2, [r0, #0x20]
+ cmp r2, #0x0
+ beq _0202CB06
+ cmp r1, #0x0
+ bne _0202CB02
+ mov r0, #0x1
+ b _0202CB04
+_0202CB02:
+ mov r0, #0x0
+_0202CB04:
+ blx r2
+_0202CB06:
+ pop {r3, pc}
+
+ thumb_func_start FUN_0202CB08
+FUN_0202CB08: ; 0x0202CB08
+ push {r3, lr}
+ add r2, r0, #0x0
+ ldrh r0, [r2, #0x2]
+ cmp r0, #0x0
+ beq _0202CB18
+ bl FUN_0202C1AC
+ pop {r3, pc}
+_0202CB18:
+ ldr r0, _0202CB48 ; =0x021C59D8
+ ldr r1, [r0, #0x4]
+ ldr r0, _0202CB4C ; =0x00001318
+ ldr r3, [r1, r0]
+ cmp r3, #0x0
+ beq _0202CB44
+ ldrh r0, [r2, #0x4]
+ cmp r0, #0x19
+ beq _0202CB44
+ cmp r0, #0x15
+ bne _0202CB38
+ ldrh r0, [r2, #0x12]
+ ldr r1, [r2, #0xc]
+ ldrh r2, [r2, #0x10]
+ blx r3
+ pop {r3, pc}
+_0202CB38:
+ cmp r0, #0x9
+ bne _0202CB44
+ ldrh r0, [r2, #0x12]
+ mov r1, #0x0
+ add r2, r1, #0x0
+ blx r3
+_0202CB44:
+ pop {r3, pc}
+ nop
+_0202CB48: .word 0x021C59D8
+_0202CB4C: .word 0x00001318
+
+ thumb_func_start FUN_0202CB50
+FUN_0202CB50: ; 0x0202CB50
+ push {r3, lr}
+ ldrh r0, [r0, #0x2]
+ cmp r0, #0x0
+ beq _0202CB60
+ mov r0, #0xa
+ bl FUN_0202C198
+ pop {r3, pc}
+_0202CB60:
+ mov r0, #0x0
+ add r1, r0, #0x0
+ blx FUN_02090CC8
+ mov r0, #0x0
+ bl FUN_0202C198
+ pop {r3, pc}
+
+ thumb_func_start FUN_0202CB70
+FUN_0202CB70: ; 0x0202CB70
+ ldr r1, _0202CB78 ; =0x021C59D8
+ ldr r1, [r1, #0x4]
+ str r0, [r1, #0x8]
+ bx lr
+ .balign 4
+_0202CB78: .word 0x021C59D8
+
+ thumb_func_start FUN_0202CB7C
+FUN_0202CB7C: ; 0x0202CB7C
+ ldr r2, _0202CB88 ; =0x021C59D8
+ ldr r3, [r2, #0x4]
+ str r0, [r3, #0x0]
+ ldr r0, [r2, #0x4]
+ strh r1, [r0, #0x4]
+ bx lr
+ .balign 4
+_0202CB88: .word 0x021C59D8
+
+ thumb_func_start FUN_0202CB8C
+FUN_0202CB8C: ; 0x0202CB8C
+ ldr r0, _0202CB98 ; =0x021C59D8
+ ldr r1, [r0, #0x4]
+ ldr r0, _0202CB9C ; =0x0000132E
+ ldrh r0, [r1, r0]
+ bx lr
+ nop
+_0202CB98: .word 0x021C59D8
+_0202CB9C: .word 0x0000132E
+
+ thumb_func_start FUN_0202CBA0
+FUN_0202CBA0: ; 0x0202CBA0
+ push {r3-r4}
+ ldr r0, _0202CBCC ; =0x021C59D8
+ mov r2, #0x0
+ ldr r1, [r0, #0x4]
+ ldr r0, _0202CBD0 ; =0x0000132E
+ add r3, r2, #0x0
+ ldrh r4, [r1, r0]
+ mov r1, #0x1
+_0202CBB0:
+ add r0, r4, #0x0
+ tst r0, r1
+ beq _0202CBB8
+ add r2, r2, #0x1
+_0202CBB8:
+ lsl r0, r4, #0xf
+ add r3, r3, #0x1
+ lsr r4, r0, #0x10
+ cmp r3, #0x10
+ blt _0202CBB0
+ lsl r0, r2, #0x10
+ lsr r0, r0, #0x10
+ pop {r3-r4}
+ bx lr
+ nop
+_0202CBCC: .word 0x021C59D8
+_0202CBD0: .word 0x0000132E
+
+ thumb_func_start FUN_0202CBD4
+FUN_0202CBD4: ; 0x0202CBD4
+ ldr r0, _0202CBE0 ; =0x021C59D8
+ ldr r1, [r0, #0x4]
+ ldr r0, _0202CBE4 ; =0x00001310
+ ldr r0, [r1, r0]
+ bx lr
+ nop
+_0202CBE0: .word 0x021C59D8
+_0202CBE4: .word 0x00001310
+
+ thumb_func_start FUN_0202CBE8
+FUN_0202CBE8: ; 0x0202CBE8
+ ldr r0, _0202CBF4 ; =0x021C59D8
+ ldr r1, [r0, #0x4]
+ ldr r0, _0202CBF8 ; =0x00001330
+ ldr r0, [r1, r0]
+ bx lr
+ nop
+_0202CBF4: .word 0x021C59D8
+_0202CBF8: .word 0x00001330
+
+ thumb_func_start FUN_0202CBFC
+FUN_0202CBFC: ; 0x0202CBFC
+ push {r3-r5, lr}
+ sub sp, #0x8
+ add r0, sp, #0x0
+ blx OS_GetMacAddress
+ ldr r0, _0202CC84 ; =0x027FFC3C
+ ldr r3, [r0, #0x0]
+ add r0, sp, #0x0
+ ldrh r2, [r0, #0x4]
+ ldrh r1, [r0, #0x2]
+ ldrh r0, [r0, #0x0]
+ add r0, r0, r3
+ add r0, r1, r0
+ add r1, r2, r0
+ ldr r3, _0202CC88 ; =0x021C59D8
+ ldr r2, _0202CC8C ; =0x00001338
+ ldr r0, [r3, #0x4]
+ str r1, [r0, r2]
+ ldr r0, [r3, #0x4]
+ ldr r1, _0202CC90 ; =0x00010DCD
+ ldr r4, [r0, r2]
+ add r5, r4, #0x0
+ mul r5, r1
+ ldr r1, _0202CC94 ; =0x00003039
+ mov r4, #0x0
+ add r1, r5, r1
+ str r1, [r0, r2]
+ ldr r1, [r3, #0x4]
+ add r0, r2, #0x4
+ strh r4, [r1, r0]
+ ldr r1, [r3, #0x4]
+ mov r4, #0x65
+ add r0, r2, #0x6
+ strh r4, [r1, r0]
+ mov r0, #0x3
+ bl FUN_0202C198
+ mov r0, #0x1
+ bl FUN_0202CC98
+ cmp r0, #0x18
+ bne _0202CC68
+ mov r0, #0x18
+ bl FUN_0202C1AC
+ mov r0, #0x9
+ bl FUN_0202C198
+ mov r0, #0x1
+ bl FUN_020336A0
+ add sp, #0x8
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0202CC68:
+ cmp r0, #0x2
+ beq _0202CC7C
+ bl FUN_0202C1AC
+ mov r0, #0x9
+ bl FUN_0202C198
+ add sp, #0x8
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0202CC7C:
+ mov r0, #0x1
+ add sp, #0x8
+ pop {r3-r5, pc}
+ nop
+_0202CC84: .word 0x027FFC3C
+_0202CC88: .word 0x021C59D8
+_0202CC8C: .word 0x00001338
+_0202CC90: .word 0x00010DCD
+_0202CC94: .word 0x00003039
+
+ thumb_func_start FUN_0202CC98
+FUN_0202CC98: ; 0x0202CC98
+ push {r4, lr}
+ add r4, r0, #0x0
+ blx FUN_020D8C3C
+ mov r1, #0x2
+ lsl r1, r1, #0xe
+ cmp r0, r1
+ bne _0202CCBE
+ mov r0, #0x3
+ bl FUN_0202C1AC
+ mov r0, #0x9
+ bl FUN_0202C198
+ mov r0, #0x1
+ bl FUN_020336A0
+ mov r0, #0x3
+ pop {r4, pc}
+_0202CCBE:
+ cmp r0, #0x0
+ bne _0202CCD8
+ mov r0, #0x16
+ bl FUN_0202C1AC
+ mov r0, #0x9
+ bl FUN_0202C198
+ mov r0, #0x1
+ bl FUN_020336A0
+ mov r0, #0x18
+ pop {r4, pc}
+_0202CCD8:
+ mov r2, #0x1
+ sub r1, r4, #0x1
+ lsl r2, r1
+ add r1, r2, #0x0
+ tst r1, r0
+ bne _0202CD00
+ mov r2, #0x1
+_0202CCE6:
+ add r1, r4, #0x1
+ lsl r1, r1, #0x10
+ lsr r4, r1, #0x10
+ cmp r4, #0x10
+ bls _0202CCF4
+ mov r0, #0x18
+ pop {r4, pc}
+_0202CCF4:
+ sub r1, r4, #0x1
+ add r3, r2, #0x0
+ lsl r3, r1
+ add r1, r3, #0x0
+ tst r1, r0
+ beq _0202CCE6
+_0202CD00:
+ ldr r0, _0202CD10 ; =FUN_0202CD14
+ add r1, r4, #0x0
+ bl FUN_0202CD90
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ pop {r4, pc}
+ nop
+_0202CD10: .word FUN_0202CD14
+
+ thumb_func_start FUN_0202CD14
+FUN_0202CD14: ; 0x0202CD14
+ push {r3-r5, lr}
+ ldrh r1, [r0, #0x2]
+ cmp r1, #0x0
+ beq _0202CD30
+ add r0, r1, #0x0
+ bl FUN_0202C1AC
+ mov r0, #0x9
+ bl FUN_0202C198
+ mov r0, #0x1
+ bl FUN_020336A0
+ pop {r3-r5, pc}
+_0202CD30:
+ ldr r2, _0202CD88 ; =0x021C59D8
+ ldrh r1, [r0, #0x8]
+ ldrh r5, [r0, #0xa]
+ ldr r0, [r2, #0x4]
+ ldr r3, _0202CD8C ; =0x0000133E
+ ldrh r4, [r0, r3]
+ cmp r4, r5
+ bls _0202CD50
+ strh r5, [r0, r3]
+ mov r4, #0x1
+ sub r0, r1, #0x1
+ lsl r4, r0
+ ldr r2, [r2, #0x4]
+ add r0, r3, #0x2
+ strh r4, [r2, r0]
+ b _0202CD64
+_0202CD50:
+ cmp r4, r5
+ bne _0202CD64
+ add r2, r3, #0x2
+ ldrh r5, [r0, r2]
+ mov r4, #0x1
+ sub r2, r1, #0x1
+ lsl r4, r2
+ orr r4, r5
+ add r2, r3, #0x2
+ strh r4, [r0, r2]
+_0202CD64:
+ add r0, r1, #0x1
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_0202CC98
+ cmp r0, #0x18
+ bne _0202CD7A
+ mov r0, #0x7
+ bl FUN_0202C198
+ pop {r3-r5, pc}
+_0202CD7A:
+ cmp r0, #0x2
+ beq _0202CD84
+ mov r0, #0x9
+ bl FUN_0202C198
+_0202CD84:
+ pop {r3-r5, pc}
+ nop
+_0202CD88: .word 0x021C59D8
+_0202CD8C: .word 0x0000133E
+
+ thumb_func_start FUN_0202CD90
+FUN_0202CD90: ; 0x0202CD90
+ push {r3, lr}
+ add r3, r1, #0x0
+ mov r1, #0x1e
+ str r1, [sp, #0x0]
+ mov r1, #0x3
+ mov r2, #0x11
+ blx FUN_020DADD4
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202CDA4
+FUN_0202CDA4: ; 0x0202CDA4
+ push {r3, lr}
+ mov r0, #0x1
+ bl FUN_0202C198
+ ldr r0, _0202CDC8 ; =0x021C59D8
+ ldr r1, [r0, #0x4]
+ mov r0, #0x4d
+ lsl r0, r0, #0x6
+ ldrh r0, [r1, r0]
+ bl FUN_0202CDD0
+ ldr r2, _0202CDC8 ; =0x021C59D8
+ ldr r1, _0202CDCC ; =0x0000133C
+ ldr r3, [r2, #0x4]
+ strh r0, [r3, r1]
+ ldr r0, [r2, #0x4]
+ ldrh r0, [r0, r1]
+ pop {r3, pc}
+ .balign 4
+_0202CDC8: .word 0x021C59D8
+_0202CDCC: .word 0x0000133C
+
+ thumb_func_start FUN_0202CDD0
+FUN_0202CDD0: ; 0x0202CDD0
+ push {r4-r7}
+ add r4, r0, #0x0
+ mov r0, #0x0
+ add r3, r0, #0x0
+ add r2, r0, #0x0
+ mov r1, #0x1
+_0202CDDC:
+ add r5, r1, #0x0
+ lsl r5, r2
+ tst r5, r4
+ beq _0202CDF0
+ add r0, r2, #0x1
+ add r3, r3, #0x1
+ lsl r0, r0, #0x10
+ lsl r3, r3, #0x10
+ asr r0, r0, #0x10
+ lsr r3, r3, #0x10
+_0202CDF0:
+ add r2, r2, #0x1
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ cmp r2, #0x10
+ blt _0202CDDC
+ cmp r3, #0x1
+ bls _0202CE4E
+ ldr r5, _0202CE54 ; =0x021C59D8
+ ldr r2, _0202CE58 ; =0x00001338
+ ldr r0, [r5, #0x4]
+ ldr r1, _0202CE5C ; =0x00010DCD
+ ldr r6, [r0, r2]
+ add r7, r6, #0x0
+ mul r7, r1
+ ldr r1, _0202CE60 ; =0x00003039
+ add r1, r7, r1
+ str r1, [r0, r2]
+ ldr r0, [r5, #0x4]
+ mov r1, #0x1
+ ldr r0, [r0, r2]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mul r0, r3
+ lsl r0, r0, #0x8
+ lsr r2, r0, #0x10
+ mov r3, #0x0
+_0202CE24:
+ add r0, r4, #0x0
+ tst r0, r1
+ beq _0202CE3E
+ cmp r2, #0x0
+ bne _0202CE38
+ add r0, r3, #0x1
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ pop {r4-r7}
+ bx lr
+_0202CE38:
+ sub r0, r2, #0x1
+ lsl r0, r0, #0x10
+ lsr r2, r0, #0x10
+_0202CE3E:
+ lsl r0, r4, #0xf
+ lsr r4, r0, #0x10
+ add r0, r3, #0x1
+ lsl r0, r0, #0x10
+ asr r3, r0, #0x10
+ cmp r3, #0x10
+ blt _0202CE24
+ mov r0, #0x0
+_0202CE4E:
+ pop {r4-r7}
+ bx lr
+ nop
+_0202CE54: .word 0x021C59D8
+_0202CE58: .word 0x00001338
+_0202CE5C: .word 0x00010DCD
+_0202CE60: .word 0x00003039
+
+ thumb_func_start FUN_0202CE64
+FUN_0202CE64: ; 0x0202CE64
+ push {r3-r5, lr}
+ lsl r1, r0, #0x1b
+ lsr r2, r1, #0x1b
+ beq _0202CE72
+ mov r1, #0x20
+ sub r1, r1, r2
+ add r0, r0, r1
+_0202CE72:
+ ldr r2, _0202CEE4 ; =0x021C59D8
+ ldr r1, _0202CEE8 ; =0x00001308
+ str r0, [r2, #0x4]
+ mov r3, #0x0
+ str r3, [r0, r1]
+ ldr r4, [r2, #0x4]
+ sub r0, r1, #0x4
+ str r3, [r4, r0]
+ add r0, r1, #0x0
+ ldr r4, [r2, #0x4]
+ add r0, #0x10
+ str r3, [r4, r0]
+ add r0, r1, #0x0
+ ldr r4, [r2, #0x4]
+ add r0, #0x24
+ strh r3, [r4, r0]
+ add r0, r1, #0x0
+ ldr r4, [r2, #0x4]
+ mov r5, #0x1
+ add r0, #0x26
+ strh r5, [r4, r0]
+ add r0, r1, #0x0
+ ldr r4, [r2, #0x4]
+ add r0, #0x28
+ str r3, [r4, r0]
+ add r0, r1, #0x0
+ ldr r4, [r2, #0x4]
+ add r0, #0x8
+ str r3, [r4, r0]
+ ldr r0, [r2, #0x4]
+ mov r5, #0x8
+ str r3, [r0, #0x0]
+ ldr r0, [r2, #0x4]
+ strh r3, [r0, #0x4]
+ add r0, r1, #0x0
+ ldr r4, [r2, #0x4]
+ add r0, #0x14
+ str r3, [r4, r0]
+ add r0, r1, #0x0
+ ldr r4, [r2, #0x4]
+ add r0, #0x2c
+ strb r5, [r4, r0]
+ add r0, r1, #0x0
+ ldr r4, [r2, #0x4]
+ add r0, #0x2d
+ strb r3, [r4, r0]
+ ldr r0, [r2, #0x4]
+ add r1, #0x3a
+ strb r3, [r0, r1]
+ bl FUN_0202CF0C
+ cmp r0, #0x0
+ bne _0202CEE0
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0202CEE0:
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ .balign 4
+_0202CEE4: .word 0x021C59D8
+_0202CEE8: .word 0x00001308
+
+ thumb_func_start FUN_0202CEEC
+FUN_0202CEEC: ; 0x0202CEEC
+ mov r0, #0x4e
+ lsl r0, r0, #0x6
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0202CEF4
+FUN_0202CEF4: ; 0x0202CEF4
+ push {r3, lr}
+ ldrh r0, [r0, #0x2]
+ cmp r0, #0x8
+ bne _0202CF08
+ mov r0, #0x9
+ bl FUN_0202C198
+ mov r0, #0x19
+ bl FUN_0202C1AC
+_0202CF08:
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202CF0C
+FUN_0202CF0C: ; 0x0202CF0C
+ push {r3, lr}
+ mov r0, #0x3
+ bl FUN_0202C198
+ ldr r0, _0202CF38 ; =0x021C59D8
+ ldr r1, _0202CF3C ; =FUN_0202CF40
+ ldr r0, [r0, #0x4]
+ mov r2, #0x2
+ add r0, #0x40
+ blx FUN_020D97B4
+ cmp r0, #0x2
+ beq _0202CF34
+ bl FUN_0202C1AC
+ mov r0, #0xa
+ bl FUN_0202C198
+ mov r0, #0x0
+ pop {r3, pc}
+_0202CF34:
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+_0202CF38: .word 0x021C59D8
+_0202CF3C: .word FUN_0202CF40
+
+ thumb_func_start FUN_0202CF40
+FUN_0202CF40: ; 0x0202CF40
+ push {r3, lr}
+ ldrh r0, [r0, #0x2]
+ cmp r0, #0x0
+ beq _0202CF5A
+ bl FUN_0202C1AC
+ mov r0, #0xa
+ bl FUN_0202C198
+ mov r0, #0x1
+ bl FUN_020336A0
+ pop {r3, pc}
+_0202CF5A:
+ ldr r0, _0202CF80 ; =FUN_0202CEF4
+ blx FUN_020D9014
+ cmp r0, #0x0
+ beq _0202CF76
+ bl FUN_0202C1AC
+ mov r0, #0xa
+ bl FUN_0202C198
+ mov r0, #0x1
+ bl FUN_020336A0
+ pop {r3, pc}
+_0202CF76:
+ mov r0, #0x1
+ bl FUN_0202C198
+ pop {r3, pc}
+ nop
+_0202CF80: .word FUN_0202CEF4
+
+ thumb_func_start FUN_0202CF84
+FUN_0202CF84: ; 0x0202CF84
+ push {r3-r7, lr}
+ add r6, r1, #0x0
+ ldr r1, _0202D02C ; =0x021C59D8
+ add r5, r0, #0x0
+ add r7, r2, #0x0
+ mov r0, #0x7
+ ldr r2, [r1, #0x4]
+ ldr r1, _0202D030 ; =0x00001308
+ lsl r0, r0, #0x6
+ str r0, [r2, r1]
+ ldr r0, _0202D02C ; =0x021C59D8
+ add r4, r3, #0x0
+ ldr r2, [r0, #0x4]
+ sub r0, r1, #0x4
+ mov r3, #0xe0
+ str r3, [r2, r0]
+ ldr r0, _0202D02C ; =0x021C59D8
+ add r1, #0xc
+ ldr r0, [r0, #0x4]
+ str r5, [r0, r1]
+ mov r0, #0x3
+ bl FUN_0202C198
+ ldr r1, _0202D02C ; =0x021C59D8
+ cmp r5, #0x0
+ ldr r0, [r1, #0x4]
+ strh r6, [r0, #0xc]
+ ldr r0, [r1, #0x4]
+ strh r7, [r0, #0x32]
+ add r0, sp, #0x8
+ ldrh r2, [r0, #0x10]
+ ldr r0, [r1, #0x4]
+ strh r2, [r0, #0x18]
+ beq _0202CFCE
+ cmp r5, #0x4
+ beq _0202CFE8
+ b _0202CFF4
+_0202CFCE:
+ ldr r0, [r1, #0x4]
+ mov r2, #0xc0
+ strh r2, [r0, #0x34]
+ cmp r4, #0x5
+ blo _0202CFE0
+ ldr r0, [r1, #0x4]
+ mov r2, #0xc
+ strh r2, [r0, #0x36]
+ b _0202CFF4
+_0202CFE0:
+ ldr r0, [r1, #0x4]
+ mov r2, #0x26
+ strh r2, [r0, #0x36]
+ b _0202CFF4
+_0202CFE8:
+ ldr r0, [r1, #0x4]
+ mov r2, #0x64
+ strh r2, [r0, #0x34]
+ ldr r0, [r1, #0x4]
+ mov r2, #0xc
+ strh r2, [r0, #0x36]
+_0202CFF4:
+ ldr r1, _0202D02C ; =0x021C59D8
+ ldr r0, [r1, #0x4]
+ strh r4, [r0, #0x10]
+ ldr r2, [r1, #0x4]
+ mov r0, #0x0
+ strh r0, [r2, #0x16]
+ ldr r2, [r1, #0x4]
+ cmp r5, #0x2
+ strh r0, [r2, #0x12]
+ ldr r2, [sp, #0x1c]
+ ldr r1, [r1, #0x4]
+ strh r2, [r1, #0xe]
+ bne _0202D010
+ mov r0, #0x1
+_0202D010:
+ ldr r1, _0202D02C ; =0x021C59D8
+ cmp r5, #0x0
+ ldr r1, [r1, #0x4]
+ strh r0, [r1, #0x14]
+ beq _0202D022
+ cmp r5, #0x2
+ beq _0202D022
+ cmp r5, #0x4
+ bne _0202D028
+_0202D022:
+ bl FUN_0202C1C8
+ pop {r3-r7, pc}
+_0202D028:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+_0202D02C: .word 0x021C59D8
+_0202D030: .word 0x00001308
+
+ thumb_func_start FUN_0202D034
+FUN_0202D034: ; 0x0202D034
+ push {r4-r6, lr}
+ ldr r2, _0202D094 ; =0x021C59D8
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ mov r3, #0x2
+ ldr r0, [r2, #0x4]
+ ldr r1, _0202D098 ; =0x00001308
+ lsl r3, r3, #0x8
+ str r3, [r0, r1]
+ sub r0, r1, #0x4
+ ldr r3, [r2, #0x4]
+ mov r6, #0x40
+ str r6, [r3, r0]
+ ldr r0, [r2, #0x4]
+ add r1, #0xc
+ str r5, [r0, r1]
+ mov r0, #0x3
+ bl FUN_0202C198
+ cmp r5, #0x1
+ beq _0202D066
+ cmp r5, #0x3
+ beq _0202D066
+ cmp r5, #0x5
+ bne _0202D08E
+_0202D066:
+ ldr r1, _0202D094 ; =0x021C59D8
+ add r0, r4, #0x0
+ ldr r2, [r1, #0x4]
+ ldr r1, _0202D09C ; =0x00001220
+ add r1, r2, r1
+ mov r2, #0xc0
+ blx MI_CpuCopy8
+ ldr r0, _0202D094 ; =0x021C59D8
+ ldr r1, [r0, #0x4]
+ ldr r0, _0202D09C ; =0x00001220
+ add r0, r1, r0
+ mov r1, #0xc0
+ blx DC_FlushRange
+ blx DC_WaitWriteBufferEmpty
+ bl FUN_0202C7E8
+ pop {r4-r6, pc}
+_0202D08E:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ nop
+_0202D094: .word 0x021C59D8
+_0202D098: .word 0x00001308
+_0202D09C: .word 0x00001220
+
+ thumb_func_start FUN_0202D0A0
+FUN_0202D0A0: ; 0x0202D0A0
+ push {r3, lr}
+ ldr r2, _0202D0C4 ; =0x021C59D8
+ ldr r3, [r2, #0x4]
+ ldr r2, _0202D0C8 ; =0x00001318
+ str r0, [r3, r2]
+ lsl r0, r1, #0x10
+ ldr r1, _0202D0CC ; =FUN_0202CB08
+ lsr r0, r0, #0x10
+ mov r2, #0x0
+ blx FUN_020D8F34
+ cmp r0, #0x0
+ beq _0202D0C2
+ mov r0, #0x9
+ bl FUN_0202C198
+_0202D0C0:
+ b _0202D0C0
+_0202D0C2:
+ pop {r3, pc}
+ .balign 4
+_0202D0C4: .word 0x021C59D8
+_0202D0C8: .word 0x00001318
+_0202D0CC: .word FUN_0202CB08
+
+ thumb_func_start FUN_0202D0D0
+FUN_0202D0D0: ; 0x0202D0D0
+ push {r3, lr}
+ bl FUN_0202CA88
+ pop {r3, pc}
+
+ thumb_func_start FUN_0202D0D8
+FUN_0202D0D8: ; 0x0202D0D8
+ push {r3, lr}
+ ldr r0, _0202D0F8 ; =0x021C59D8
+ ldr r1, [r0, #0x4]
+ ldr r0, _0202D0FC ; =0x00001310
+ ldr r0, [r1, r0]
+ cmp r0, #0x2
+ bne _0202D0E8
+_0202D0E6:
+ b _0202D0E6
+_0202D0E8:
+ bl FUN_0202CA44
+ cmp r0, #0x0
+ bne _0202D0F6
+ mov r0, #0xa
+ bl FUN_0202C198
+_0202D0F6:
+ pop {r3, pc}
+ .balign 4
+_0202D0F8: .word 0x021C59D8
+_0202D0FC: .word 0x00001310
+
+ thumb_func_start FUN_0202D100
+FUN_0202D100: ; 0x0202D100
+ push {r3, lr}
+ ldr r0, _0202D16C ; =0x021C59D8
+ ldr r1, [r0, #0x4]
+ ldr r0, _0202D170 ; =0x00001310
+ ldr r0, [r1, r0]
+ cmp r0, #0x1
+ beq _0202D16A
+ cmp r0, #0x6
+ beq _0202D126
+ cmp r0, #0x5
+ beq _0202D126
+ cmp r0, #0x4
+ beq _0202D126
+ mov r0, #0x3
+ bl FUN_0202C198
+ bl FUN_0202D0D8
+ pop {r3, pc}
+_0202D126:
+ mov r0, #0x3
+ bl FUN_0202C198
+ ldr r0, _0202D16C ; =0x021C59D8
+ ldr r1, [r0, #0x4]
+ ldr r0, _0202D174 ; =0x00001314
+ ldr r0, [r1, r0]
+ cmp r0, #0x5
+ bhi _0202D16A
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0202D144: ; jump table (using 16-bit offset)
+ .short _0202D15E - _0202D144 - 2; case 0
+ .short _0202D150 - _0202D144 - 2; case 1
+ .short _0202D16A - _0202D144 - 2; case 2
+ .short _0202D16A - _0202D144 - 2; case 3
+ .short _0202D15E - _0202D144 - 2; case 4
+ .short _0202D150 - _0202D144 - 2; case 5
+_0202D150:
+ bl FUN_0202C9BC
+ cmp r0, #0x0
+ bne _0202D16A
+ bl FUN_0202D0D8
+ pop {r3, pc}
+_0202D15E:
+ bl FUN_0202C460
+ cmp r0, #0x0
+ bne _0202D16A
+ bl FUN_0202D0D8
+_0202D16A:
+ pop {r3, pc}
+ .balign 4
+_0202D16C: .word 0x021C59D8
+_0202D170: .word 0x00001310
+_0202D174: .word 0x00001314
+
+ thumb_func_start FUN_0202D178
+FUN_0202D178: ; 0x0202D178
+ push {r3, lr}
+ mov r0, #0x3
+ bl FUN_0202C198
+ ldr r0, _0202D198 ; =FUN_0202CB50
+ blx FUN_020D972C
+ cmp r0, #0x2
+ beq _0202D194
+ mov r0, #0x9
+ bl FUN_0202C198
+ mov r0, #0x0
+ pop {r3, pc}
+_0202D194:
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+_0202D198: .word FUN_0202CB50
+
+ thumb_func_start FUN_0202D19C
+FUN_0202D19C: ; 0x0202D19C
+ ldr r0, _0202D1A8 ; =0x021C59D8
+ ldr r1, [r0, #0x4]
+ ldr r0, _0202D1AC ; =0x0000132C
+ ldrh r0, [r1, r0]
+ bx lr
+ nop
+_0202D1A8: .word 0x021C59D8
+_0202D1AC: .word 0x0000132C
+
+ thumb_func_start FUN_0202D1B0
+FUN_0202D1B0: ; 0x0202D1B0
+ ldr r1, _0202D1C0 ; =0x021C59D8
+ ldr r2, [r1, #0x4]
+ cmp r2, #0x0
+ beq _0202D1BC
+ ldr r1, _0202D1C4 ; =0x00001334
+ strb r0, [r2, r1]
+_0202D1BC:
+ bx lr
+ nop
+_0202D1C0: .word 0x021C59D8
+_0202D1C4: .word 0x00001334
+
+ thumb_func_start FUN_0202D1C8
+FUN_0202D1C8: ; 0x0202D1C8
+ ldr r0, _0202D1DC ; =0x021C59D8
+ ldr r1, [r0, #0x4]
+ ldr r0, _0202D1E0 ; =0x00001310
+ ldr r0, [r1, r0]
+ cmp r0, #0x1
+ bne _0202D1D8
+ mov r0, #0x1
+ bx lr
+_0202D1D8:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+_0202D1DC: .word 0x021C59D8
+_0202D1E0: .word 0x00001310
+
+ thumb_func_start FUN_0202D1E4
+FUN_0202D1E4: ; 0x0202D1E4
+ ldr r0, _0202D1F8 ; =0x021C59D8
+ ldr r1, [r0, #0x4]
+ ldr r0, _0202D1FC ; =0x00001310
+ ldr r0, [r1, r0]
+ cmp r0, #0x3
+ bne _0202D1F4
+ mov r0, #0x1
+ bx lr
+_0202D1F4:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+_0202D1F8: .word 0x021C59D8
+_0202D1FC: .word 0x00001310
+
+ thumb_func_start FUN_0202D200
+FUN_0202D200: ; 0x0202D200
+ ldr r0, _0202D214 ; =0x021C59D8
+ ldr r1, [r0, #0x4]
+ ldr r0, _0202D218 ; =0x00001310
+ ldr r0, [r1, r0]
+ cmp r0, #0x9
+ bne _0202D210
+ mov r0, #0x1
+ bx lr
+_0202D210:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+_0202D214: .word 0x021C59D8
+_0202D218: .word 0x00001310
+
+ thumb_func_start FUN_0202D21C
+FUN_0202D21C: ; 0x0202D21C
+ ldr r0, _0202D238 ; =0x021C59D8
+ ldr r1, [r0, #0x4]
+ cmp r1, #0x0
+ beq _0202D234
+ ldr r0, _0202D23C ; =0x00001310
+ ldr r0, [r1, r0]
+ cmp r0, #0x2
+ bne _0202D230
+ mov r0, #0x1
+ bx lr
+_0202D230:
+ mov r0, #0x0
+ bx lr
+_0202D234:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+_0202D238: .word 0x021C59D8
+_0202D23C: .word 0x00001310
+
+ thumb_func_start FUN_0202D240
+FUN_0202D240: ; 0x0202D240
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r6, r0, #0x0
+ ldr r0, _0202D274 ; =0x021C59D8
+ add r5, r1, #0x0
+ ldr r1, [r0, #0x4]
+ ldr r0, _0202D278 ; =0x00001310
+ add r4, r2, #0x0
+ ldr r0, [r1, r0]
+ cmp r0, #0x4
+ bne _0202D26E
+ lsl r0, r3, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ lsl r2, r5, #0x10
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ add r1, r6, #0x0
+ lsr r2, r2, #0x10
+ add r3, r4, #0x0
+ blx FUN_020DAF30
+_0202D26E:
+ add sp, #0x8
+ pop {r4-r6, pc}
+ nop
+_0202D274: .word 0x021C59D8
+_0202D278: .word 0x00001310
+
+ thumb_func_start FUN_0202D27C
+FUN_0202D27C: ; 0x0202D27C
+ ldrh r0, [r0, #0x2]
+ cmp r0, #0x0
+ bne _0202D28C
+ ldr r0, _0202D290 ; =0x021C59D8
+ mov r2, #0x1
+ ldr r1, [r0, #0x4]
+ ldr r0, _0202D294 ; =0x00001344
+ strb r2, [r1, r0]
+_0202D28C:
+ bx lr
+ nop
+_0202D290: .word 0x021C59D8
+_0202D294: .word 0x00001344
+
+ thumb_func_start FUN_0202D298
+FUN_0202D298: ; 0x0202D298
+ push {r4, lr}
+ ldr r2, _0202D2C4 ; =0x021C59D8
+ add r1, r0, #0x0
+ ldr r3, [r2, #0x4]
+ ldr r0, _0202D2C8 ; =0x00001344
+ mov r4, #0x0
+ strb r4, [r3, r0]
+ ldr r2, [r2, #0x4]
+ sub r0, #0x34
+ ldr r0, [r2, r0]
+ cmp r0, #0x4
+ bne _0202D2BE
+ ldr r0, _0202D2CC ; =FUN_0202D27C
+ blx FUN_020DAD74
+ cmp r0, #0x2
+ bne _0202D2BE
+ mov r0, #0x1
+ pop {r4, pc}
+_0202D2BE:
+ mov r0, #0x0
+ pop {r4, pc}
+ nop
+_0202D2C4: .word 0x021C59D8
+_0202D2C8: .word 0x00001344
+_0202D2CC: .word FUN_0202D27C
+
+ thumb_func_start FUN_0202D2D0
+FUN_0202D2D0: ; 0x0202D2D0
+ ldr r0, _0202D2EC ; =0x021C59D8
+ ldr r1, [r0, #0x4]
+ cmp r1, #0x0
+ beq _0202D2E8
+ ldr r0, _0202D2F0 ; =0x00001345
+ ldrb r0, [r1, r0]
+ cmp r0, #0x6
+ blo _0202D2E4
+ mov r0, #0x1
+ bx lr
+_0202D2E4:
+ mov r0, #0x0
+ bx lr
+_0202D2E8:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+_0202D2EC: .word 0x021C59D8
+_0202D2F0: .word 0x00001345
+
+ thumb_func_start FUN_0202D2F4
+FUN_0202D2F4: ; 0x0202D2F4
+ ldr r0, _0202D300 ; =0x021C59D8
+ mov r2, #0x0
+ ldr r1, [r0, #0x4]
+ ldr r0, _0202D304 ; =0x00001345
+ strb r2, [r1, r0]
+ bx lr
+ .balign 4
+_0202D300: .word 0x021C59D8
+_0202D304: .word 0x00001345
+
+ thumb_func_start FUN_0202D308
+FUN_0202D308: ; 0x0202D308
+ ldr r1, _0202D314 ; =0x021C59D8
+ ldr r2, [r1, #0x4]
+ ldr r1, _0202D318 ; =0x00001320
+ str r0, [r2, r1]
+ bx lr
+ nop
+_0202D314: .word 0x021C59D8
+_0202D318: .word 0x00001320
+
+ thumb_func_start FUN_0202D31C
+FUN_0202D31C: ; 0x0202D31C
+ ldr r1, _0202D328 ; =0x021C59D8
+ ldr r2, [r1, #0x4]
+ ldr r1, _0202D32C ; =0x00001324
+ str r0, [r2, r1]
+ bx lr
+ nop
+_0202D328: .word 0x021C59D8
+_0202D32C: .word 0x00001324
+
+ thumb_func_start FUN_0202D330
+FUN_0202D330: ; 0x0202D330
+ ldr r1, _0202D33C ; =0x021C59D8
+ ldr r2, [r1, #0x4]
+ ldr r1, _0202D340 ; =0x00001328
+ str r0, [r2, r1]
+ bx lr
+ nop
+_0202D33C: .word 0x021C59D8
+_0202D340: .word 0x00001328
+
+ thumb_func_start FUN_0202D344
+FUN_0202D344: ; 0x0202D344
+ ldr r1, _0202D350 ; =0x021C59D8
+ ldr r2, [r1, #0x4]
+ ldr r1, _0202D354 ; =0x00001342
+ strb r0, [r2, r1]
+ bx lr
+ nop
+_0202D350: .word 0x021C59D8
+_0202D354: .word 0x00001342
+
+ thumb_func_start FUN_0202D358
+FUN_0202D358: ; 0x0202D358
+ ldr r0, _0202D364 ; =0x021C59D8
+ ldr r1, [r0, #0x4]
+ ldr r0, _0202D368 ; =0x00001342
+ ldrb r0, [r1, r0]
+ bx lr
+ nop
+_0202D364: .word 0x021C59D8
+_0202D368: .word 0x00001342
+
+ thumb_func_start FUN_0202D36C
+FUN_0202D36C: ; 0x0202D36C
+ ldr r1, _0202D378 ; =0x021C59D8
+ ldr r2, [r1, #0x4]
+ ldr r1, _0202D37C ; =0x00001343
+ strb r0, [r2, r1]
+ bx lr
+ nop
+_0202D378: .word 0x021C59D8
+_0202D37C: .word 0x00001343
+
+ thumb_func_start FUN_0202D380
+FUN_0202D380: ; 0x0202D380
+ ldr r1, _0202D38C ; =0x021C59D8
+ ldr r2, [r1, #0x4]
+ ldr r1, _0202D390 ; =0x00001335
+ strb r0, [r2, r1]
+ bx lr
+ nop
+_0202D38C: .word 0x021C59D8
+_0202D390: .word 0x00001335
+
+ thumb_func_start FUN_0202D394
+FUN_0202D394: ; 0x0202D394
+ str r1, [r0, #0x0]
+ strh r2, [r0, #0xa]
+ mov r1, #0x0
+ strh r1, [r0, #0x4]
+ strh r1, [r0, #0x6]
+ strh r1, [r0, #0x8]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0202D3A4
+FUN_0202D3A4: ; 0x0202D3A4
+ push {r3-r7, lr}
+ str r2, [sp, #0x0]
+ add r5, r0, #0x0
+ add r7, r1, #0x0
+ bl FUN_0202D498
+ ldr r1, [sp, #0x0]
+ cmp r0, r1
+ bgt _0202D3BC
+ bl FUN_02031454
+ pop {r3-r7, pc}
+_0202D3BC:
+ mov r0, #0x8
+ ldrsh r4, [r5, r0]
+ ldrsh r1, [r5, r0]
+ ldr r0, [sp, #0x0]
+ mov r6, #0x0
+ add r0, r1, r0
+ cmp r4, r0
+ bge _0202D3F2
+_0202D3CC:
+ cmp r7, #0x0
+ bne _0202D3D4
+ bl ErrorHandling
+_0202D3D4:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0202D4A8
+ ldrb r2, [r7, r6]
+ ldr r1, [r5, #0x0]
+ add r4, r4, #0x1
+ strb r2, [r1, r0]
+ mov r0, #0x8
+ ldrsh r1, [r5, r0]
+ ldr r0, [sp, #0x0]
+ add r6, r6, #0x1
+ add r0, r1, r0
+ cmp r4, r0
+ blt _0202D3CC
+_0202D3F2:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0202D4A8
+ strh r0, [r5, #0x8]
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202D400
+FUN_0202D400: ; 0x0202D400
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_0202D42C
+ mov r1, #0x4
+ add r4, r0, #0x0
+ ldrsh r1, [r5, r1]
+ add r0, r5, #0x0
+ add r1, r1, r4
+ bl FUN_0202D4A8
+ strh r0, [r5, #0x4]
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0202D41C
+FUN_0202D41C: ; 0x0202D41C
+ push {r3, lr}
+ add r1, sp, #0x0
+ mov r2, #0x1
+ bl FUN_0202D400
+ add r0, sp, #0x0
+ ldrb r0, [r0, #0x0]
+ pop {r3, pc}
+
+ thumb_func_start FUN_0202D42C
+FUN_0202D42C: ; 0x0202D42C
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ mov r0, #0x4
+ ldrsh r4, [r5, r0]
+ add r7, r2, #0x0
+ str r1, [sp, #0x0]
+ add r0, r4, r7
+ mov r6, #0x0
+ cmp r4, r0
+ bge _0202D472
+_0202D440:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0202D4A8
+ mov r1, #0x6
+ ldrsh r1, [r5, r1]
+ cmp r1, r0
+ bne _0202D454
+ add r0, r6, #0x0
+ pop {r3-r7, pc}
+_0202D454:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0202D4A8
+ ldr r1, [r5, #0x0]
+ add r4, r4, #0x1
+ ldrb r1, [r1, r0]
+ ldr r0, [sp, #0x0]
+ strb r1, [r0, r6]
+ mov r0, #0x4
+ ldrsh r0, [r5, r0]
+ add r6, r6, #0x1
+ add r0, r0, r7
+ cmp r4, r0
+ blt _0202D440
+_0202D472:
+ add r0, r6, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202D478
+FUN_0202D478: ; 0x0202D478
+ mov r1, #0x4
+ mov r3, #0x6
+ ldrsh r1, [r0, r1]
+ ldrsh r2, [r0, r3]
+ cmp r1, r2
+ ble _0202D490
+ mov r2, #0xa
+ ldrsh r2, [r0, r2]
+ ldrsh r0, [r0, r3]
+ add r0, r2, r0
+ sub r0, r0, r1
+ bx lr
+_0202D490:
+ ldrsh r0, [r0, r3]
+ sub r0, r0, r1
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0202D498
+FUN_0202D498: ; 0x0202D498
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_0202D478
+ mov r1, #0xa
+ ldrsh r1, [r4, r1]
+ sub r0, r1, r0
+ pop {r4, pc}
+
+ thumb_func_start FUN_0202D4A8
+FUN_0202D4A8: ; 0x0202D4A8
+ push {r3, lr}
+ add r2, r0, #0x0
+ add r0, r1, #0x0
+ mov r1, #0xa
+ ldrsh r1, [r2, r1]
+ blx _s32_div_f
+ add r0, r1, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202D4BC
+FUN_0202D4BC: ; 0x0202D4BC
+ mov r1, #0x8
+ ldrsh r1, [r0, r1]
+ strh r1, [r0, #0x6]
+ bx lr
+
+ thumb_func_start FUN_0202D4C4
+FUN_0202D4C4: ; 0x0202D4C4
+ ldr r3, [r0, #0x1c]
+ mov r2, #0x0
+ ldr r1, [r0, #0x18]
+ cmp r3, #0x0
+ ble _0202D4E0
+_0202D4CE:
+ ldrb r0, [r1, #0xe]
+ cmp r0, #0x0
+ bne _0202D4D8
+ add r0, r1, #0x0
+ bx lr
+_0202D4D8:
+ add r2, r2, #0x1
+ add r1, #0x10
+ cmp r2, r3
+ blt _0202D4CE
+_0202D4E0:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_0202D4E4
+FUN_0202D4E4: ; 0x0202D4E4
+ ldr r3, [r0, #0x1c]
+ mov r2, #0x0
+ ldr r1, [r0, #0x18]
+ cmp r3, #0x0
+ ble _0202D500
+_0202D4EE:
+ ldrb r0, [r1, #0xe]
+ cmp r0, #0x0
+ beq _0202D4F8
+ mov r0, #0x0
+ bx lr
+_0202D4F8:
+ add r2, r2, #0x1
+ add r1, #0x10
+ cmp r2, r3
+ blt _0202D4EE
+_0202D500:
+ mov r0, #0x1
+ bx lr
+
+ thumb_func_start FUN_0202D504
+FUN_0202D504: ; 0x0202D504
+ ldr r1, [r0, #0x0]
+ cmp r1, #0x0
+ beq _0202D522
+ ldr r1, [r1, #0x8]
+ cmp r1, #0x0
+ beq _0202D518
+ str r1, [r0, #0x0]
+ mov r0, #0x0
+ str r0, [r1, #0x4]
+ b _0202D51E
+_0202D518:
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+ str r1, [r0, #0x4]
+_0202D51E:
+ mov r0, #0x1
+ bx lr
+_0202D522:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0202D528
+FUN_0202D528: ; 0x0202D528
+ ldr r2, [r0, #0x0]
+ strb r1, [r2, #0x0]
+ ldr r1, [r0, #0x0]
+ add r1, r1, #0x1
+ str r1, [r0, #0x0]
+ ldr r1, [r0, #0x4]
+ sub r1, r1, #0x1
+ str r1, [r0, #0x4]
+ bne _0202D53E
+ mov r0, #0x1
+ bx lr
+_0202D53E:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0202D544
+FUN_0202D544: ; 0x0202D544
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldrb r0, [r5, #0xe]
+ add r4, r1, #0x0
+ bl FUN_0202D9A0
+ add r6, r0, #0x0
+ ldr r0, _0202D5B8 ; =0x0000FFFF
+ cmp r6, r0
+ ldr r0, [r4, #0x4]
+ bne _0202D56A
+ cmp r0, #0x3
+ bge _0202D57A
+ ldrb r1, [r5, #0xf]
+ mov r0, #0x1
+ bic r1, r0
+ strb r1, [r5, #0xf]
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_0202D56A:
+ cmp r0, #0x1
+ bge _0202D57A
+ ldrb r1, [r5, #0xf]
+ mov r0, #0x1
+ bic r1, r0
+ strb r1, [r5, #0xf]
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_0202D57A:
+ ldrb r1, [r5, #0xe]
+ add r0, r4, #0x0
+ bl FUN_0202D528
+ ldr r0, _0202D5B8 ; =0x0000FFFF
+ cmp r6, r0
+ bne _0202D5A4
+ ldrh r1, [r5, #0xc]
+ add r0, r4, #0x0
+ asr r1, r1, #0x8
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl FUN_0202D528
+ ldrh r1, [r5, #0xc]
+ add r0, r4, #0x0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl FUN_0202D528
+ b _0202D5A6
+_0202D5A4:
+ strh r6, [r5, #0xc]
+_0202D5A6:
+ ldrb r1, [r5, #0xf]
+ mov r0, #0x1
+ bic r1, r0
+ mov r0, #0x1
+ orr r0, r1
+ strb r0, [r5, #0xf]
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ nop
+_0202D5B8: .word 0x0000FFFF
+
+ thumb_func_start FUN_0202D5BC
+FUN_0202D5BC: ; 0x0202D5BC
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldrb r0, [r5, #0xe]
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ add r7, r3, #0x0
+ bl FUN_0202D9A0
+ ldr r1, _0202D680 ; =0x0000FFFF
+ cmp r0, r1
+ bne _0202D5D6
+ mov r2, #0x3
+ b _0202D5D8
+_0202D5D6:
+ mov r2, #0x1
+_0202D5D8:
+ ldrh r0, [r5, #0xc]
+ ldr r1, [r4, #0x4]
+ add r0, r0, r2
+ cmp r1, r0
+ bge _0202D5EA
+ cmp r7, #0x0
+ bne _0202D5EA
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0202D5EA:
+ ldrb r0, [r5, #0xf]
+ lsl r0, r0, #0x1f
+ lsr r0, r0, #0x1f
+ cmp r0, #0x1
+ beq _0202D604
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0202D544
+ cmp r0, #0x0
+ beq _0202D604
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0202D604:
+ ldrh r3, [r5, #0xc]
+ ldr r2, [r4, #0x4]
+ cmp r2, r3
+ ldrb r0, [r5, #0xf]
+ bge _0202D64E
+ lsl r0, r0, #0x1e
+ lsr r0, r0, #0x1f
+ beq _0202D61E
+ ldr r1, [r4, #0x0]
+ add r0, r6, #0x0
+ bl FUN_0202D400
+ b _0202D634
+_0202D61E:
+ mov r3, #0x0
+ cmp r2, #0x0
+ ble _0202D634
+_0202D624:
+ ldr r0, [r5, #0x0]
+ ldrb r1, [r0, r3]
+ ldr r0, [r4, #0x0]
+ strb r1, [r0, r3]
+ ldr r0, [r4, #0x4]
+ add r3, r3, #0x1
+ cmp r3, r0
+ blt _0202D624
+_0202D634:
+ ldr r1, [r5, #0x0]
+ ldr r0, [r4, #0x4]
+ add r0, r1, r0
+ str r0, [r5, #0x0]
+ ldrh r1, [r5, #0xc]
+ ldr r0, [r4, #0x4]
+ sub r0, r1, r0
+ strh r0, [r5, #0xc]
+ mov r0, #0x0
+ mvn r0, r0
+ str r0, [r4, #0x4]
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0202D64E:
+ lsl r0, r0, #0x1e
+ lsr r0, r0, #0x1f
+ beq _0202D660
+ ldr r1, [r4, #0x0]
+ add r0, r6, #0x0
+ add r2, r3, #0x0
+ bl FUN_0202D400
+ b _0202D66A
+_0202D660:
+ ldr r0, [r5, #0x0]
+ ldr r1, [r4, #0x0]
+ add r2, r3, #0x0
+ blx MI_CpuCopy8
+_0202D66A:
+ ldrh r0, [r5, #0xc]
+ ldr r1, [r4, #0x0]
+ add r0, r1, r0
+ str r0, [r4, #0x0]
+ ldrh r0, [r5, #0xc]
+ ldr r1, [r4, #0x4]
+ sub r0, r1, r0
+ str r0, [r4, #0x4]
+ mov r0, #0x1
+ pop {r3-r7, pc}
+ nop
+_0202D680: .word 0x0000FFFF
+
+ thumb_func_start FUN_0202D684
+FUN_0202D684: ; 0x0202D684
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ str r1, [sp, #0x0]
+ str r2, [sp, #0x4]
+ add r7, r3, #0x0
+ bl FUN_0202D4C4
+ add r4, r0, #0x0
+ bne _0202D69E
+ add sp, #0x8
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0202D69E:
+ ldr r0, _0202D710 ; =0x0000FFFE
+ cmp r7, r0
+ blt _0202D6A8
+ bl ErrorHandling
+_0202D6A8:
+ ldr r0, [sp, #0x0]
+ bl FUN_0202D9A0
+ add r6, r0, #0x0
+ ldr r0, _0202D714 ; =0x0000FFFF
+ cmp r6, r0
+ bne _0202D6B8
+ add r6, r7, #0x0
+_0202D6B8:
+ ldr r0, [sp, #0x24]
+ cmp r0, #0x0
+ beq _0202D6EA
+ ldr r0, [r5, #0x14]
+ bl FUN_0202D498
+ add r1, r6, #0x3
+ cmp r1, r0
+ blt _0202D6D0
+ add sp, #0x8
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0202D6D0:
+ ldr r0, [r5, #0x14]
+ ldr r1, [sp, #0x4]
+ ldr r3, _0202D718 ; =0x00000109
+ add r2, r6, #0x0
+ bl FUN_0202D3A4
+ ldr r0, [r5, #0x14]
+ bl FUN_0202D4BC
+ ldrb r1, [r4, #0xf]
+ mov r0, #0x2
+ orr r0, r1
+ strb r0, [r4, #0xf]
+_0202D6EA:
+ ldr r0, [sp, #0x0]
+ strh r6, [r4, #0xc]
+ strb r0, [r4, #0xe]
+ ldr r0, [sp, #0x4]
+ str r0, [r4, #0x0]
+ ldr r0, [r5, #0x4]
+ cmp r0, #0x0
+ bne _0202D700
+ str r4, [r5, #0x4]
+ str r4, [r5, #0x0]
+ b _0202D708
+_0202D700:
+ str r4, [r0, #0x8]
+ ldr r0, [r5, #0x4]
+ str r0, [r4, #0x4]
+ str r4, [r5, #0x4]
+_0202D708:
+ mov r0, #0x1
+ add sp, #0x8
+ pop {r3-r7, pc}
+ nop
+_0202D710: .word 0x0000FFFE
+_0202D714: .word 0x0000FFFF
+_0202D718: .word 0x00000109
+
+ thumb_func_start FUN_0202D71C
+FUN_0202D71C: ; 0x0202D71C
+ ldr r1, [r0, #0x10]
+ cmp r1, #0x0
+ beq _0202D726
+ add r0, r1, #0x0
+ bx lr
+_0202D726:
+ ldr r1, [r0, #0x0]
+ cmp r1, #0x0
+ beq _0202D730
+ add r0, r1, #0x0
+ bx lr
+_0202D730:
+ ldr r0, [r0, #0x8]
+ cmp r0, #0x0
+ bne _0202D738
+ mov r0, #0x0
+_0202D738:
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0202D73C
+FUN_0202D73C: ; 0x0202D73C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x10]
+ cmp r1, #0x0
+ beq _0202D74C
+ mov r0, #0x0
+ str r0, [r4, #0x10]
+ pop {r4, pc}
+_0202D74C:
+ bl FUN_0202D504
+ cmp r0, #0x0
+ bne _0202D75C
+ add r4, #0x8
+ add r0, r4, #0x0
+ bl FUN_0202D504
+_0202D75C:
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202D760
+FUN_0202D760: ; 0x0202D760
+ push {r3-r7, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x4]
+ mov r7, #0x1
+ str r2, [sp, #0x0]
+ cmp r0, #0x0
+ ble _0202D7B6
+_0202D770:
+ add r0, r5, #0x0
+ bl FUN_0202D71C
+ add r6, r0, #0x0
+ beq _0202D7B6
+ add r0, r5, #0x0
+ bl FUN_0202D73C
+ ldr r2, [r5, #0x14]
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ add r3, r7, #0x0
+ bl FUN_0202D5BC
+ cmp r0, #0x0
+ bne _0202D794
+ str r6, [r5, #0x10]
+ b _0202D7B6
+_0202D794:
+ mov r0, #0x0
+ ldr r1, [r4, #0x4]
+ mvn r0, r0
+ cmp r1, r0
+ bne _0202D7A4
+ str r6, [r5, #0x10]
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0202D7A4:
+ add r0, r6, #0x0
+ mov r1, #0x0
+ mov r2, #0x10
+ blx MI_CpuFill8
+ ldr r0, [r4, #0x4]
+ ldr r7, [sp, #0x0]
+ cmp r0, #0x0
+ bgt _0202D770
+_0202D7B6:
+ ldr r0, [r4, #0x4]
+ mov r2, #0x0
+ cmp r0, #0x0
+ ble _0202D7D2
+ mov r1, #0xee
+_0202D7C0:
+ ldr r0, [r4, #0x0]
+ add r2, r2, #0x1
+ strb r1, [r0, #0x0]
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ ldr r0, [r4, #0x4]
+ cmp r2, r0
+ blt _0202D7C0
+_0202D7D2:
+ mov r0, #0x1
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202D7D8
+FUN_0202D7D8: ; 0x0202D7D8
+ push {r3-r7, lr}
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ mov r1, #0x0
+ mov r2, #0x20
+ add r5, r0, #0x0
+ blx MI_CpuFill8
+ lsl r7, r4, #0x4
+ mov r0, #0xf
+ add r1, r7, #0x0
+ bl FUN_02016998
+ mov r1, #0x0
+ add r2, r7, #0x0
+ str r0, [r5, #0x18]
+ blx MI_CpuFill8
+ str r4, [r5, #0x1c]
+ str r6, [r5, #0x14]
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202D804
+FUN_0202D804: ; 0x0202D804
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r2, [r4, #0x1c]
+ ldr r0, [r4, #0x18]
+ mov r1, #0x0
+ lsl r2, r2, #0x4
+ blx MI_CpuFill8
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+ str r0, [r4, #0x4]
+ str r0, [r4, #0x8]
+ str r0, [r4, #0xc]
+ str r0, [r4, #0x10]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202D824
+FUN_0202D824: ; 0x0202D824
+ ldr r3, _0202D82C ; =FUN_02016A18
+ ldr r0, [r0, #0x18]
+ bx r3
+ nop
+_0202D82C: .word FUN_02016A18
+
+ thumb_func_start FUN_0202D830
+FUN_0202D830: ; 0x0202D830
+ push {r3-r4}
+ ldr r4, [r0, #0x1c]
+ mov r2, #0x0
+ ldr r3, [r0, #0x18]
+ cmp r4, #0x0
+ ble _0202D850
+_0202D83C:
+ ldrb r0, [r3, #0xe]
+ cmp r0, r1
+ bne _0202D848
+ mov r0, #0x1
+ pop {r3-r4}
+ bx lr
+_0202D848:
+ add r2, r2, #0x1
+ add r3, #0x10
+ cmp r2, r4
+ blt _0202D83C
+_0202D850:
+ mov r0, #0x0
+ pop {r3-r4}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0202D858
+FUN_0202D858: ; 0x0202D858
+ push {r3-r4, lr}
+ sub sp, #0x1c
+ ldr r3, _0202D880 ; =0x020EEB04
+ add r4, r0, #0x0
+ add r2, sp, #0x0
+ mov r1, #0x1a
+_0202D864:
+ ldrb r0, [r3, #0x0]
+ add r3, r3, #0x1
+ strb r0, [r2, #0x0]
+ add r2, r2, #0x1
+ sub r1, r1, #0x1
+ bne _0202D864
+ cmp r4, #0x1a
+ blo _0202D878
+ bl ErrorHandling
+_0202D878:
+ add r0, sp, #0x0
+ ldrb r0, [r0, r4]
+ add sp, #0x1c
+ pop {r3-r4, pc}
+ .balign 4
+_0202D880: .word 0x020EEB04
+
+ thumb_func_start FUN_0202D884
+FUN_0202D884: ; 0x0202D884
+ push {r3-r4, lr}
+ sub sp, #0x1c
+ ldr r3, _0202D8AC ; =0x020EEB1E
+ add r4, r0, #0x0
+ add r2, sp, #0x0
+ mov r1, #0x1a
+_0202D890:
+ ldrb r0, [r3, #0x0]
+ add r3, r3, #0x1
+ strb r0, [r2, #0x0]
+ add r2, r2, #0x1
+ sub r1, r1, #0x1
+ bne _0202D890
+ cmp r4, #0x1a
+ blo _0202D8A4
+ bl ErrorHandling
+_0202D8A4:
+ add r0, sp, #0x0
+ ldrb r0, [r0, r4]
+ add sp, #0x1c
+ pop {r3-r4, pc}
+ .balign 4
+_0202D8AC: .word 0x020EEB1E
+
+ thumb_func_start FUN_0202D8B0
+FUN_0202D8B0: ; 0x0202D8B0
+ cmp r0, #0xd
+ bgt _0202D8C4
+ cmp r0, #0x7
+ blt _0202D8CC
+ beq _0202D8C8
+ cmp r0, #0x9
+ beq _0202D8C8
+ cmp r0, #0xd
+ beq _0202D8C8
+ b _0202D8CC
+_0202D8C4:
+ cmp r0, #0x12
+ bne _0202D8CC
+_0202D8C8:
+ mov r0, #0x1
+ bx lr
+_0202D8CC:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_0202D8D0
+FUN_0202D8D0: ; 0x0202D8D0
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, _0202D914 ; =0x021C59E0
+ add r4, r1, #0x0
+ ldr r0, [r0, #0x0]
+ add r6, r2, #0x0
+ cmp r0, #0x0
+ bne _0202D8EC
+ mov r0, #0xf
+ mov r1, #0x18
+ bl FUN_02016998
+ ldr r1, _0202D914 ; =0x021C59E0
+ str r0, [r1, #0x0]
+_0202D8EC:
+ ldr r0, _0202D914 ; =0x021C59E0
+ mov r3, #0x0
+ ldr r1, [r0, #0x0]
+ add r2, r3, #0x0
+ str r5, [r1, #0x0]
+ ldr r1, [r0, #0x0]
+ str r4, [r1, #0x4]
+ ldr r1, [r0, #0x0]
+ str r6, [r1, #0x8]
+_0202D8FE:
+ ldr r1, [r0, #0x0]
+ add r1, r1, r3
+ add r3, r3, #0x1
+ strb r2, [r1, #0xc]
+ cmp r3, #0x8
+ blt _0202D8FE
+ ldr r0, _0202D914 ; =0x021C59E0
+ ldr r0, [r0, #0x0]
+ strb r2, [r0, #0x14]
+ pop {r4-r6, pc}
+ nop
+_0202D914: .word 0x021C59E0
+
+ thumb_func_start FUN_0202D918
+FUN_0202D918: ; 0x0202D918
+ push {r3, lr}
+ ldr r0, _0202D930 ; =0x021C59E0
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _0202D92C
+ bl FUN_02016A18
+ ldr r0, _0202D930 ; =0x021C59E0
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+_0202D92C:
+ pop {r3, pc}
+ nop
+_0202D930: .word 0x021C59E0
+
+ thumb_func_start FUN_0202D934
+FUN_0202D934: ; 0x0202D934
+ push {r3-r7, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ add r7, r3, #0x0
+ cmp r4, #0x16
+ bge _0202D94C
+ mov r0, #0xc
+ mul r1, r0
+ ldr r0, _0202D998 ; =0x020EEB38
+ ldr r4, [r0, r1]
+ b _0202D974
+_0202D94C:
+ ldr r0, _0202D99C ; =0x021C59E0
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _0202D958
+ bl ErrorHandling
+_0202D958:
+ ldr r0, _0202D99C ; =0x021C59E0
+ ldr r1, [r0, #0x0]
+ ldr r0, [r1, #0x4]
+ add r0, #0x16
+ cmp r4, r0
+ ble _0202D96A
+ bl FUN_02031454
+ pop {r3-r7, pc}
+_0202D96A:
+ ldr r1, [r1, #0x0]
+ sub r4, #0x16
+ mov r0, #0xc
+ mul r0, r4
+ ldr r4, [r1, r0]
+_0202D974:
+ cmp r4, #0x0
+ beq _0202D996
+ ldr r0, _0202D99C ; =0x021C59E0
+ ldr r3, [r0, #0x0]
+ cmp r3, #0x0
+ beq _0202D98C
+ ldr r3, [r3, #0x8]
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r7, #0x0
+ blx r4
+ pop {r3-r7, pc}
+_0202D98C:
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r7, #0x0
+ mov r3, #0x0
+ blx r4
+_0202D996:
+ pop {r3-r7, pc}
+ .balign 4
+_0202D998: .word 0x020EEB38
+_0202D99C: .word 0x021C59E0
+
+ thumb_func_start FUN_0202D9A0
+FUN_0202D9A0: ; 0x0202D9A0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r4, #0x0
+ cmp r5, #0x16
+ bge _0202D9B6
+ mov r0, #0xc
+ add r1, r5, #0x0
+ mul r1, r0
+ ldr r0, _0202D9FC ; =0x020EEB3C
+ ldr r0, [r0, r1]
+ b _0202D9EE
+_0202D9B6:
+ ldr r0, _0202DA00 ; =0x021C59E0
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _0202D9C2
+ bl ErrorHandling
+_0202D9C2:
+ ldr r0, _0202DA00 ; =0x021C59E0
+ ldr r1, [r0, #0x0]
+ cmp r1, #0x0
+ bne _0202D9D2
+ bl FUN_02031454
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0202D9D2:
+ ldr r0, [r1, #0x4]
+ add r0, #0x16
+ cmp r5, r0
+ ble _0202D9E2
+ bl FUN_02031454
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0202D9E2:
+ ldr r1, [r1, #0x0]
+ sub r5, #0x16
+ mov r0, #0xc
+ mul r0, r5
+ add r0, r1, r0
+ ldr r0, [r0, #0x4]
+_0202D9EE:
+ cmp r0, #0x0
+ beq _0202D9F6
+ blx r0
+ add r4, r0, #0x0
+_0202D9F6:
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ nop
+_0202D9FC: .word 0x020EEB3C
+_0202DA00: .word 0x021C59E0
+
+ thumb_func_start FUN_0202DA04
+FUN_0202DA04: ; 0x0202DA04
+ cmp r0, #0x16
+ bge _0202DA1C
+ mov r1, #0xc
+ mul r1, r0
+ ldr r0, _0202DA38 ; =0x020EEB40
+ ldr r0, [r0, r1]
+ cmp r0, #0x0
+ beq _0202DA18
+ mov r0, #0x1
+ bx lr
+_0202DA18:
+ mov r0, #0x0
+ bx lr
+_0202DA1C:
+ ldr r1, _0202DA3C ; =0x021C59E0
+ sub r0, #0x16
+ ldr r1, [r1, #0x0]
+ ldr r2, [r1, #0x0]
+ mov r1, #0xc
+ mul r1, r0
+ add r0, r2, r1
+ ldr r0, [r0, #0x8]
+ cmp r0, #0x0
+ beq _0202DA34
+ mov r0, #0x1
+ bx lr
+_0202DA34:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+_0202DA38: .word 0x020EEB40
+_0202DA3C: .word 0x021C59E0
+
+ thumb_func_start FUN_0202DA40
+FUN_0202DA40: ; 0x0202DA40
+ push {r3-r5, lr}
+ add r3, r0, #0x0
+ cmp r3, #0x16
+ bge _0202DA58
+ mov r4, #0xc
+ mul r4, r3
+ ldr r3, _0202DA70 ; =0x020EEB40
+ add r0, r1, #0x0
+ ldr r3, [r3, r4]
+ mov r1, #0x0
+ blx r3
+ pop {r3-r5, pc}
+_0202DA58:
+ ldr r0, _0202DA74 ; =0x021C59E0
+ sub r3, #0x16
+ ldr r4, [r0, #0x0]
+ add r0, r1, #0x0
+ ldr r1, [r4, #0x8]
+ ldr r5, [r4, #0x0]
+ mov r4, #0xc
+ mul r4, r3
+ add r3, r5, r4
+ ldr r3, [r3, #0x8]
+ blx r3
+ pop {r3-r5, pc}
+ .balign 4
+_0202DA70: .word 0x020EEB40
+_0202DA74: .word 0x021C59E0
+
+ thumb_func_start FUN_0202DA78
+FUN_0202DA78: ; 0x0202DA78
+ ldr r0, _0202DA7C ; =0x0000FFFF
+ bx lr
+ .balign 4
+_0202DA7C: .word 0x0000FFFF
+
+ thumb_func_start FUN_0202DA80
+FUN_0202DA80: ; 0x0202DA80
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_0202DA84
+FUN_0202DA84: ; 0x0202DA84
+ mov r0, #0x1
+ bx lr
+
+ thumb_func_start FUN_0202DA88
+FUN_0202DA88: ; 0x0202DA88
+ mov r0, #0x2
+ bx lr
+
+ thumb_func_start FUN_0202DA8C
+FUN_0202DA8C: ; 0x0202DA8C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_02031190
+ cmp r0, #0x0
+ bne _0202DACA
+ ldr r4, _0202DACC ; =0x021C59E0
+ mov r1, #0x1
+ ldr r0, [r4, #0x0]
+ add r0, r0, r5
+ strb r1, [r0, #0xc]
+ mov r5, #0x0
+_0202DAA4:
+ lsl r0, r5, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_02030E7C
+ cmp r0, #0x0
+ beq _0202DABA
+ ldr r0, [r4, #0x0]
+ add r0, r0, r5
+ ldrb r0, [r0, #0xc]
+ cmp r0, #0x0
+ beq _0202DACA
+_0202DABA:
+ add r5, r5, #0x1
+ cmp r5, #0x8
+ blt _0202DAA4
+ mov r1, #0x0
+ mov r0, #0xe
+ add r2, r1, #0x0
+ bl FUN_02030BC4
+_0202DACA:
+ pop {r3-r5, pc}
+ .balign 4
+_0202DACC: .word 0x021C59E0
+
+ thumb_func_start FUN_0202DAD0
+FUN_0202DAD0: ; 0x0202DAD0
+ ldr r0, _0202DAF0 ; =0x021C59E0
+ mov r3, #0x0
+ ldr r1, [r0, #0x0]
+ str r3, [r1, #0x0]
+ ldr r1, [r0, #0x0]
+ str r3, [r1, #0x4]
+ ldr r1, [r0, #0x0]
+ str r3, [r1, #0x8]
+ ldr r0, [r0, #0x0]
+ mov r1, #0x1
+ strb r1, [r0, #0x14]
+ ldr r3, _0202DAF4 ; =FUN_020311D0
+ mov r0, #0xf
+ add r1, r2, #0x0
+ bx r3
+ nop
+_0202DAF0: .word 0x021C59E0
+_0202DAF4: .word FUN_020311D0
+
+ thumb_func_start FUN_0202DAF8
+FUN_0202DAF8: ; 0x0202DAF8
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02031190
+ cmp r0, #0x0
+ bne _0202DB0E
+ ldr r0, _0202DB10 ; =0x021C59E0
+ mov r1, #0x0
+ ldr r0, [r0, #0x0]
+ add r0, r0, r4
+ strb r1, [r0, #0xc]
+_0202DB0E:
+ pop {r4, pc}
+ .balign 4
+_0202DB10: .word 0x021C59E0
+
+ thumb_func_start FUN_0202DB14
+FUN_0202DB14: ; 0x0202DB14
+ push {r4-r7, lr}
+ sub sp, #0xc
+ str r0, [sp, #0x0]
+ str r1, [sp, #0x4]
+ bl FUN_020238F4
+ str r0, [sp, #0x8]
+ ldr r0, _0202DBA0 ; =0x021C59E4
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _0202DB9A
+ mov r1, #0xe9
+ mov r0, #0xf
+ lsl r1, r1, #0x2
+ bl FUN_02016998
+ ldr r1, _0202DBA0 ; =0x021C59E4
+ mov r2, #0xe9
+ str r0, [r1, #0x0]
+ mov r1, #0x0
+ lsl r2, r2, #0x2
+ blx MI_CpuFill8
+ mov r6, #0x0
+ ldr r7, _0202DBA0 ; =0x021C59E4
+ add r4, r6, #0x0
+ add r5, r6, #0x0
+_0202DB4A:
+ ldr r1, [r7, #0x0]
+ add r0, r1, #0x0
+ add r0, #0x28
+ add r2, r0, r4
+ mov r0, #0xd2
+ add r1, r1, r5
+ lsl r0, r0, #0x2
+ str r2, [r1, r0]
+ add r0, r6, #0x0
+ bl FUN_0202DE78
+ add r6, r6, #0x1
+ add r4, #0x68
+ add r5, r5, #0x4
+ cmp r6, #0x8
+ blt _0202DB4A
+ ldr r2, _0202DBA0 ; =0x021C59E4
+ mov r1, #0x3a
+ ldr r3, [r2, #0x0]
+ mov r0, #0x0
+ lsl r1, r1, #0x4
+ strb r0, [r3, r1]
+ ldr r4, [r2, #0x0]
+ add r3, r1, #0x1
+ strb r0, [r4, r3]
+ add r3, r1, #0x2
+ ldr r4, [r2, #0x0]
+ sub r1, #0x58
+ strb r0, [r4, r3]
+ ldr r3, [r2, #0x0]
+ ldr r0, [sp, #0x0]
+ str r0, [r3, #0x4]
+ ldr r3, [r2, #0x0]
+ ldr r0, [sp, #0x4]
+ str r0, [r3, #0x0]
+ ldr r2, [r2, #0x0]
+ ldr r0, [sp, #0x8]
+ ldr r1, [r2, r1]
+ bl FUN_0202393C
+_0202DB9A:
+ add sp, #0xc
+ pop {r4-r7, pc}
+ nop
+_0202DBA0: .word 0x021C59E4
+
+ thumb_func_start FUN_0202DBA4
+FUN_0202DBA4: ; 0x0202DBA4
+ push {r3-r5, lr}
+ ldr r1, _0202DBDC ; =0x021C59E4
+ ldr r0, [r1, #0x0]
+ cmp r0, #0x0
+ beq _0202DBD8
+ mov r4, #0x0
+ mov r0, #0xd2
+ add r5, r4, #0x0
+ add r3, r4, #0x0
+ lsl r0, r0, #0x2
+_0202DBB8:
+ ldr r2, [r1, #0x0]
+ add r4, r4, #0x1
+ add r2, r2, r5
+ add r5, r5, #0x4
+ str r3, [r2, r0]
+ cmp r4, #0x8
+ blt _0202DBB8
+ ldr r0, _0202DBDC ; =0x021C59E4
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _0202DBD2
+ bl FUN_02016A18
+_0202DBD2:
+ ldr r0, _0202DBDC ; =0x021C59E4
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+_0202DBD8:
+ pop {r3-r5, pc}
+ nop
+_0202DBDC: .word 0x021C59E4
+
+ thumb_func_start FUN_0202DBE0
+FUN_0202DBE0: ; 0x0202DBE0
+ push {r3-r7, lr}
+ bl FUN_02031190
+ add r4, r0, #0x0
+ ldr r0, _0202DCD8 ; =0x021C59E4
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x4]
+ bl FUN_0202881C
+ add r7, r0, #0x0
+ ldr r0, _0202DCD8 ; =0x021C59E4
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x4]
+ bl FUN_020286EC
+ str r0, [sp, #0x0]
+ ldr r0, _0202DCD8 ; =0x021C59E4
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x4]
+ bl FUN_02029AFC
+ add r6, r0, #0x0
+ ldr r0, _0202DCD8 ; =0x021C59E4
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x4]
+ bl FUN_020238F4
+ ldr r1, _0202DCD8 ; =0x021C59E4
+ ldr r2, [r1, #0x0]
+ lsl r1, r4, #0x2
+ add r2, r2, r1
+ mov r1, #0xd2
+ lsl r1, r1, #0x2
+ ldr r1, [r2, r1]
+ bl FUN_0202393C
+ mov r0, #0x68
+ add r5, r4, #0x0
+ mul r5, r0
+ ldr r0, _0202DCD8 ; =0x021C59E4
+ ldr r0, [r0, #0x0]
+ add r0, #0x64
+ add r0, r0, r5
+ blx OS_GetMacAddress
+ add r0, r7, #0x0
+ mov r1, #0x1
+ mov r2, #0x0
+ bl FUN_020287A8
+ ldr r1, _0202DCD8 ; =0x021C59E4
+ mov r2, #0x10
+ ldr r1, [r1, #0x0]
+ add r1, #0x54
+ add r1, r1, r5
+ blx MI_CpuCopy8
+ add r0, r6, #0x0
+ bl FUN_02029B38
+ ldr r1, _0202DCD8 ; =0x021C59E4
+ ldr r1, [r1, #0x0]
+ add r1, r1, r5
+ add r1, #0x6b
+ strb r0, [r1, #0x0]
+ add r0, r6, #0x0
+ bl FUN_02029B3C
+ ldr r2, _0202DCD8 ; =0x021C59E4
+ ldr r1, [r2, #0x0]
+ add r1, r1, r5
+ add r1, #0x6c
+ strb r0, [r1, #0x0]
+ ldr r0, [r2, #0x0]
+ ldr r0, [r0, #0x4]
+ bl FUN_02025C18
+ ldr r2, _0202DCD8 ; =0x021C59E4
+ ldr r1, [r2, #0x0]
+ add r1, r1, r5
+ add r1, #0x6d
+ strb r0, [r1, #0x0]
+ ldr r2, [r2, #0x0]
+ mov r0, #0x1
+ add r2, #0x6d
+ ldrb r1, [r2, r5]
+ sub r0, r0, r1
+ strb r0, [r2, r5]
+ ldr r0, [sp, #0x0]
+ bl FUN_02028228
+ ldr r1, _0202DCD8 ; =0x021C59E4
+ ldr r1, [r1, #0x0]
+ add r1, #0x48
+ add r1, r1, r5
+ blx FUN_02096CCC
+ ldr r0, _0202DCD8 ; =0x021C59E4
+ mov r1, #0x0
+ ldr r0, [r0, #0x0]
+ mov r2, #0x20
+ add r0, #0x8
+ add r0, r0, r5
+ blx MI_CpuFill8
+ ldr r0, _0202DCD8 ; =0x021C59E4
+ ldr r1, [r0, #0x0]
+ ldr r0, [r1, #0x0]
+ cmp r0, #0x0
+ beq _0202DCC4
+ add r1, #0x8
+ add r1, r1, r5
+ bl FUN_02023ACC
+_0202DCC4:
+ ldr r1, _0202DCD8 ; =0x021C59E4
+ mov r0, #0x3
+ ldr r1, [r1, #0x0]
+ mov r2, #0x68
+ add r1, #0x8
+ add r1, r1, r5
+ bl FUN_02030ADC
+ pop {r3-r7, pc}
+ nop
+_0202DCD8: .word 0x021C59E4
+
+ thumb_func_start FUN_0202DCDC
+FUN_0202DCDC: ; 0x0202DCDC
+ mov r0, #0x68
+ bx lr
+
+ thumb_func_start FUN_0202DCE0
+FUN_0202DCE0: ; 0x0202DCE0
+ ldr r0, _0202DCF4 ; =0x021C59E4
+ ldr r2, [r0, #0x0]
+ cmp r2, #0x0
+ beq _0202DCF0
+ mov r0, #0x3a
+ mov r1, #0x1
+ lsl r0, r0, #0x4
+ strb r1, [r2, r0]
+_0202DCF0:
+ bx lr
+ nop
+_0202DCF4: .word 0x021C59E4
+
+ thumb_func_start FUN_0202DCF8
+FUN_0202DCF8: ; 0x0202DCF8
+ ldr r0, _0202DD04 ; =0x021C59E4
+ ldr r1, [r0, #0x0]
+ mov r0, #0x3a
+ lsl r0, r0, #0x4
+ ldrb r0, [r1, r0]
+ bx lr
+ .balign 4
+_0202DD04: .word 0x021C59E4
+
+ thumb_func_start FUN_0202DD08
+FUN_0202DD08: ; 0x0202DD08
+ push {r3-r5, lr}
+ ldr r1, _0202DD78 ; =0x021C59E4
+ add r4, r2, #0x0
+ ldr r1, [r1, #0x0]
+ cmp r1, #0x0
+ beq _0202DD74
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_02030E7C
+ cmp r0, #0x0
+ beq _0202DD74
+ ldr r1, _0202DD78 ; =0x021C59E4
+ mov r2, #0x68
+ ldr r5, [r1, #0x0]
+ add r1, r4, #0x0
+ add r1, #0x62
+ ldrb r1, [r1, #0x0]
+ add r5, #0x8
+ add r0, r4, #0x0
+ add r3, r1, #0x0
+ mul r3, r2
+ add r1, r5, r3
+ blx MI_CpuCopy8
+ add r4, #0x62
+ ldr r2, _0202DD78 ; =0x021C59E4
+ ldrb r3, [r4, #0x0]
+ ldr r0, [r2, #0x0]
+ ldr r1, _0202DD7C ; =0x000003A2
+ strb r3, [r0, r1]
+ add r0, r1, #0x0
+ ldr r3, [r2, #0x0]
+ sub r0, #0xa
+ add r4, r3, r0
+ ldrb r3, [r3, r1]
+ ldrb r0, [r4, r3]
+ cmp r0, #0x2
+ bhs _0202DD74
+ mov r0, #0x1
+ strb r0, [r4, r3]
+ ldr r0, [r2, #0x0]
+ ldrb r4, [r0, r1]
+ bl FUN_02031190
+ cmp r4, r0
+ bne _0202DD74
+ ldr r0, _0202DD78 ; =0x021C59E4
+ mov r2, #0x3
+ ldr r0, [r0, #0x0]
+ add r1, r0, r4
+ mov r0, #0xe6
+ lsl r0, r0, #0x2
+ strb r2, [r1, r0]
+_0202DD74:
+ pop {r3-r5, pc}
+ nop
+_0202DD78: .word 0x021C59E4
+_0202DD7C: .word 0x000003A2
+
+ thumb_func_start FUN_0202DD80
+FUN_0202DD80: ; 0x0202DD80
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, _0202DDE0 ; =0x021C59E4
+ ldr r1, [r0, #0x0]
+ cmp r1, #0x0
+ beq _0202DDDC
+ mov r3, #0x68
+ add r4, r5, #0x0
+ add r0, r2, #0x0
+ mul r4, r3
+ add r1, #0x8
+ add r1, r1, r4
+ add r2, r3, #0x0
+ blx MI_CpuCopy8
+ ldr r0, _0202DDE0 ; =0x021C59E4
+ add r1, r5, #0x0
+ ldr r0, [r0, #0x0]
+ add r0, #0x64
+ add r0, r0, r4
+ bl FUN_0202EFAC
+ ldr r0, _0202DDE0 ; =0x021C59E4
+ mov r2, #0x1
+ ldr r0, [r0, #0x0]
+ add r1, r0, r5
+ mov r0, #0xe6
+ lsl r0, r0, #0x2
+ strb r2, [r1, r0]
+ bl FUN_02031190
+ cmp r5, r0
+ bne _0202DDD2
+ ldr r0, _0202DDE0 ; =0x021C59E4
+ mov r2, #0x3
+ ldr r0, [r0, #0x0]
+ add r1, r0, r5
+ mov r0, #0xe6
+ lsl r0, r0, #0x2
+ strb r2, [r1, r0]
+ pop {r3-r5, pc}
+_0202DDD2:
+ ldr r0, _0202DDE0 ; =0x021C59E4
+ mov r2, #0x1
+ ldr r1, [r0, #0x0]
+ ldr r0, _0202DDE4 ; =0x000003A1
+ strb r2, [r1, r0]
+_0202DDDC:
+ pop {r3-r5, pc}
+ nop
+_0202DDE0: .word 0x021C59E4
+_0202DDE4: .word 0x000003A1
+
+ thumb_func_start FUN_0202DDE8
+FUN_0202DDE8: ; 0x0202DDE8
+ push {r3-r7, lr}
+ ldr r0, _0202DE70 ; =0x021C59E4
+ ldr r1, [r0, #0x0]
+ ldr r0, _0202DE74 ; =0x000003A1
+ ldrb r0, [r1, r0]
+ cmp r0, #0x0
+ bne _0202DDFA
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0202DDFA:
+ mov r0, #0x5
+ bl FUN_02031354
+ cmp r0, #0x0
+ bne _0202DE6C
+ mov r4, #0x0
+ add r5, r4, #0x0
+ add r7, r4, #0x0
+_0202DE0A:
+ ldr r0, _0202DE70 ; =0x021C59E4
+ ldr r2, [r0, #0x0]
+ mov r0, #0xe6
+ add r1, r2, r4
+ lsl r0, r0, #0x2
+ ldrb r0, [r1, r0]
+ cmp r0, #0x0
+ beq _0202DE4A
+ add r0, r2, r5
+ add r0, #0x6a
+ strb r4, [r0, #0x0]
+ ldr r0, _0202DE70 ; =0x021C59E4
+ ldr r6, [r0, #0x0]
+ bl FUN_02023924
+ add r2, r0, #0x0
+ mov r0, #0xd2
+ add r1, r6, r7
+ lsl r0, r0, #0x2
+ ldr r0, [r1, r0]
+ add r6, #0x28
+ add r1, r6, r5
+ blx MI_CpuCopy8
+ ldr r1, _0202DE70 ; =0x021C59E4
+ mov r0, #0x4
+ ldr r1, [r1, #0x0]
+ mov r2, #0x68
+ add r1, #0x8
+ add r1, r1, r5
+ bl FUN_02031000
+_0202DE4A:
+ add r4, r4, #0x1
+ add r5, #0x68
+ add r7, r7, #0x4
+ cmp r4, #0x8
+ blt _0202DE0A
+ mov r1, #0x0
+ mov r0, #0x5
+ add r2, r1, #0x0
+ bl FUN_02031000
+ ldr r0, _0202DE70 ; =0x021C59E4
+ mov r2, #0x0
+ ldr r1, [r0, #0x0]
+ ldr r0, _0202DE74 ; =0x000003A1
+ strb r2, [r1, r0]
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0202DE6C:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+_0202DE70: .word 0x021C59E4
+_0202DE74: .word 0x000003A1
+
+ thumb_func_start FUN_0202DE78
+FUN_0202DE78: ; 0x0202DE78
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _0202DEA0 ; =0x021C59E4
+ ldr r1, [r0, #0x0]
+ lsl r0, r4, #0x2
+ add r1, r1, r0
+ mov r0, #0xd2
+ lsl r0, r0, #0x2
+ ldr r0, [r1, r0]
+ bl FUN_02023948
+ ldr r0, _0202DEA0 ; =0x021C59E4
+ mov r2, #0x0
+ ldr r0, [r0, #0x0]
+ add r1, r0, r4
+ mov r0, #0xe6
+ lsl r0, r0, #0x2
+ strb r2, [r1, r0]
+ pop {r4, pc}
+ nop
+_0202DEA0: .word 0x021C59E4
+
+ thumb_func_start FUN_0202DEA4
+FUN_0202DEA4: ; 0x0202DEA4
+ ldr r1, _0202DEBC ; =0x021C59E4
+ ldr r1, [r1, #0x0]
+ add r1, r1, r0
+ mov r0, #0xe6
+ lsl r0, r0, #0x2
+ ldrb r0, [r1, r0]
+ cmp r0, #0x1
+ bne _0202DEB8
+ mov r0, #0x1
+ bx lr
+_0202DEB8:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+_0202DEBC: .word 0x021C59E4
+
+ thumb_func_start FUN_0202DEC0
+FUN_0202DEC0: ; 0x0202DEC0
+ ldr r1, _0202DEDC ; =0x021C59E4
+ mov r2, #0x1
+ ldr r1, [r1, #0x0]
+ add r1, r1, r0
+ mov r0, #0xe6
+ lsl r0, r0, #0x2
+ ldrb r0, [r1, r0]
+ cmp r0, #0x2
+ beq _0202DED8
+ cmp r0, #0x1
+ beq _0202DED8
+ mov r2, #0x0
+_0202DED8:
+ add r0, r2, #0x0
+ bx lr
+ .balign 4
+_0202DEDC: .word 0x021C59E4
+
+ thumb_func_start FUN_0202DEE0
+FUN_0202DEE0: ; 0x0202DEE0
+ ldr r1, _0202DEF0 ; =0x021C59E4
+ mov r2, #0x2
+ ldr r1, [r1, #0x0]
+ add r1, r1, r0
+ mov r0, #0xe6
+ lsl r0, r0, #0x2
+ strb r2, [r1, r0]
+ bx lr
+ .balign 4
+_0202DEF0: .word 0x021C59E4
+
+ thumb_func_start FUN_0202DEF4
+FUN_0202DEF4: ; 0x0202DEF4
+ ldr r1, _0202DF04 ; =0x021C59E4
+ mov r2, #0x3
+ ldr r1, [r1, #0x0]
+ add r1, r1, r0
+ mov r0, #0xe6
+ lsl r0, r0, #0x2
+ strb r2, [r1, r0]
+ bx lr
+ .balign 4
+_0202DF04: .word 0x021C59E4
+
+ thumb_func_start FUN_0202DF08
+FUN_0202DF08: ; 0x0202DF08
+ ldr r1, _0202DF24 ; =0x021C59E4
+ mov r0, #0x0
+ ldr r3, [r1, #0x0]
+ mov r1, #0xe6
+ lsl r1, r1, #0x2
+_0202DF12:
+ ldrb r2, [r3, r1]
+ cmp r2, #0x1
+ beq _0202DF22
+ add r0, r0, #0x1
+ add r3, r3, #0x1
+ cmp r0, #0x8
+ blt _0202DF12
+ mov r0, #0xff
+_0202DF22:
+ bx lr
+ .balign 4
+_0202DF24: .word 0x021C59E4
+
+ thumb_func_start FUN_0202DF28
+FUN_0202DF28: ; 0x0202DF28
+ push {r3-r4}
+ ldr r1, _0202DF50 ; =0x021C59E4
+ mov r0, #0x0
+ ldr r4, [r1, #0x0]
+ mov r1, #0xe6
+ add r3, r0, #0x0
+ lsl r1, r1, #0x2
+_0202DF36:
+ ldrb r2, [r4, r1]
+ cmp r2, #0x2
+ beq _0202DF40
+ cmp r2, #0x3
+ bne _0202DF42
+_0202DF40:
+ add r0, r0, #0x1
+_0202DF42:
+ add r3, r3, #0x1
+ add r4, r4, #0x1
+ cmp r3, #0x8
+ blt _0202DF36
+ pop {r3-r4}
+ bx lr
+ nop
+_0202DF50: .word 0x021C59E4
+
+ thumb_func_start FUN_0202DF54
+FUN_0202DF54: ; 0x0202DF54
+ push {r4-r6, lr}
+ ldr r0, _0202DFA0 ; =0x021C59E4
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _0202DF9C
+ bl FUN_02030F20
+ cmp r0, #0x0
+ beq _0202DF9C
+ mov r6, #0xe6
+ ldr r4, _0202DFA0 ; =0x021C59E4
+ mov r5, #0x0
+ lsl r6, r6, #0x2
+_0202DF6E:
+ lsl r0, r5, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_02030E7C
+ cmp r0, #0x0
+ bne _0202DF96
+ cmp r5, #0x0
+ bne _0202DF86
+ bl FUN_02031280
+ cmp r0, #0x0
+ bne _0202DF96
+_0202DF86:
+ ldr r0, [r4, #0x0]
+ add r0, r0, r5
+ ldrb r0, [r0, r6]
+ cmp r0, #0x0
+ beq _0202DF96
+ add r0, r5, #0x0
+ bl FUN_0202DE78
+_0202DF96:
+ add r5, r5, #0x1
+ cmp r5, #0x8
+ blt _0202DF6E
+_0202DF9C:
+ pop {r4-r6, pc}
+ nop
+_0202DFA0: .word 0x021C59E4
+
+ thumb_func_start FUN_0202DFA4
+FUN_0202DFA4: ; 0x0202DFA4
+ ldr r1, _0202DFD4 ; =0x021C59E4
+ ldr r3, [r1, #0x0]
+ cmp r3, #0x0
+ bne _0202DFB0
+ mov r0, #0x0
+ bx lr
+_0202DFB0:
+ mov r1, #0xe6
+ add r2, r3, r0
+ lsl r1, r1, #0x2
+ ldrb r1, [r2, r1]
+ cmp r1, #0x1
+ beq _0202DFC4
+ cmp r1, #0x2
+ beq _0202DFC4
+ cmp r1, #0x3
+ bne _0202DFD0
+_0202DFC4:
+ lsl r0, r0, #0x2
+ add r1, r3, r0
+ mov r0, #0xd2
+ lsl r0, r0, #0x2
+ ldr r0, [r1, r0]
+ bx lr
+_0202DFD0:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+_0202DFD4: .word 0x021C59E4
+
+ thumb_func_start FUN_0202DFD8
+FUN_0202DFD8: ; 0x0202DFD8
+ ldr r1, _0202DFF8 ; =0x021C59E4
+ ldr r3, [r1, #0x0]
+ mov r1, #0xe6
+ add r2, r3, r0
+ lsl r1, r1, #0x2
+ ldrb r1, [r2, r1]
+ cmp r1, #0x0
+ beq _0202DFF2
+ mov r1, #0x68
+ add r3, #0x48
+ mul r1, r0
+ add r0, r3, r1
+ bx lr
+_0202DFF2:
+ mov r0, #0x0
+ bx lr
+ nop
+_0202DFF8: .word 0x021C59E4
+
+ thumb_func_start FUN_0202DFFC
+FUN_0202DFFC: ; 0x0202DFFC
+ ldr r1, _0202E01C ; =0x021C59E4
+ ldr r3, [r1, #0x0]
+ mov r1, #0xe6
+ add r2, r3, r0
+ lsl r1, r1, #0x2
+ ldrb r1, [r2, r1]
+ cmp r1, #0x0
+ beq _0202E016
+ mov r1, #0x68
+ add r3, #0x54
+ mul r1, r0
+ add r0, r3, r1
+ bx lr
+_0202E016:
+ mov r0, #0x0
+ bx lr
+ nop
+_0202E01C: .word 0x021C59E4
+
+ thumb_func_start FUN_0202E020
+FUN_0202E020: ; 0x0202E020
+ ldr r1, _0202E040 ; =0x021C59E4
+ ldr r3, [r1, #0x0]
+ mov r1, #0xe6
+ add r2, r3, r0
+ lsl r1, r1, #0x2
+ ldrb r1, [r2, r1]
+ cmp r1, #0x0
+ beq _0202E03C
+ mov r1, #0x68
+ mul r1, r0
+ add r0, r3, r1
+ add r0, #0x6b
+ ldrb r0, [r0, #0x0]
+ bx lr
+_0202E03C:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+_0202E040: .word 0x021C59E4
+
+ thumb_func_start FUN_0202E044
+FUN_0202E044: ; 0x0202E044
+ ldr r1, _0202E064 ; =0x021C59E4
+ ldr r3, [r1, #0x0]
+ mov r1, #0xe6
+ add r2, r3, r0
+ lsl r1, r1, #0x2
+ ldrb r1, [r2, r1]
+ cmp r1, #0x0
+ beq _0202E060
+ mov r1, #0x68
+ mul r1, r0
+ add r0, r3, r1
+ add r0, #0x6c
+ ldrb r0, [r0, #0x0]
+ bx lr
+_0202E060:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+_0202E064: .word 0x021C59E4
+
+ thumb_func_start FUN_0202E068
+FUN_0202E068: ; 0x0202E068
+ ldr r1, _0202E088 ; =0x021C59E4
+ ldr r3, [r1, #0x0]
+ mov r1, #0xe6
+ add r2, r3, r0
+ lsl r1, r1, #0x2
+ ldrb r1, [r2, r1]
+ cmp r1, #0x0
+ beq _0202E084
+ mov r1, #0x68
+ mul r1, r0
+ add r0, r3, r1
+ add r0, #0x6d
+ ldrb r0, [r0, #0x0]
+ bx lr
+_0202E084:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+_0202E088: .word 0x021C59E4
+
+ thumb_func_start FUN_0202E08C
+FUN_0202E08C: ; 0x0202E08C
+ push {r4-r6, lr}
+ mov r4, #0x0
+ add r5, r4, #0x0
+ add r6, r4, #0x0
+_0202E094:
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_02030E7C
+ cmp r0, #0x0
+ beq _0202E0E8
+ ldr r0, _0202E0F4 ; =0x021C59E4
+ ldr r0, [r0, #0x0]
+ add r1, r0, r4
+ mov r0, #0xe6
+ lsl r0, r0, #0x2
+ ldrb r0, [r1, r0]
+ cmp r0, #0x0
+ beq _0202E0E8
+ add r0, r4, #0x1
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_02030E7C
+ cmp r0, #0x0
+ beq _0202E0E8
+ ldr r0, _0202E0F4 ; =0x021C59E4
+ ldr r1, _0202E0F8 ; =0x00000399
+ ldr r0, [r0, #0x0]
+ add r2, r0, r4
+ ldrb r1, [r2, r1]
+ cmp r1, #0x0
+ beq _0202E0E8
+ add r1, r6, #0x0
+ add r2, r0, r5
+_0202E0D0:
+ add r3, r2, #0x0
+ add r3, #0x70
+ ldrb r0, [r2, #0x8]
+ ldrb r3, [r3, #0x0]
+ cmp r0, r3
+ beq _0202E0E0
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_0202E0E0:
+ add r1, r1, #0x1
+ add r2, r2, #0x1
+ cmp r1, #0x20
+ blt _0202E0D0
+_0202E0E8:
+ add r4, r4, #0x1
+ add r5, #0x68
+ cmp r4, #0x7
+ blt _0202E094
+ mov r0, #0x1
+ pop {r4-r6, pc}
+ .balign 4
+_0202E0F4: .word 0x021C59E4
+_0202E0F8: .word 0x00000399
+
+ thumb_func_start FUN_0202E0FC
+FUN_0202E0FC: ; 0x0202E0FC
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ ldr r0, _0202E1B4 ; =0x021C59E4
+ add r6, r1, #0x0
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _0202E1B0
+ cmp r7, #0x2
+ beq _0202E11C
+ bl FUN_02031190
+ bl FUN_020313CC
+ mov r1, #0x1
+ and r0, r1
+ str r0, [sp, #0x0]
+_0202E11C:
+ mov r4, #0x0
+ bl FUN_02030F20
+ cmp r0, #0x0
+ ble _0202E1B0
+ add r5, r4, #0x0
+_0202E128:
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_02030E7C
+ cmp r0, #0x0
+ beq _0202E1A4
+ ldr r0, _0202E1B4 ; =0x021C59E4
+ mov r1, #0xe6
+ ldr r0, [r0, #0x0]
+ lsl r1, r1, #0x2
+ add r2, r0, r4
+ ldrb r1, [r2, r1]
+ cmp r1, #0x0
+ beq _0202E1A4
+ cmp r7, #0x0
+ bne _0202E16E
+ add r0, r4, #0x0
+ bl FUN_020313CC
+ mov r1, #0x1
+ and r1, r0
+ ldr r0, [sp, #0x0]
+ cmp r0, r1
+ beq _0202E1A4
+ ldr r0, _0202E1B4 ; =0x021C59E4
+ mov r1, #0xda
+ ldr r0, [r0, #0x0]
+ lsl r1, r1, #0x2
+ add r0, r0, r5
+ ldrh r1, [r0, r1]
+ add r2, r1, r6
+ mov r1, #0xda
+ lsl r1, r1, #0x2
+ strh r2, [r0, r1]
+ b _0202E1A4
+_0202E16E:
+ cmp r7, #0x1
+ bne _0202E194
+ add r0, r4, #0x0
+ bl FUN_020313CC
+ mov r1, #0x1
+ and r1, r0
+ ldr r0, [sp, #0x0]
+ cmp r0, r1
+ beq _0202E1A4
+ ldr r0, _0202E1B4 ; =0x021C59E4
+ ldr r1, _0202E1B8 ; =0x0000036A
+ ldr r0, [r0, #0x0]
+ add r0, r0, r5
+ ldrh r1, [r0, r1]
+ add r2, r1, r6
+ ldr r1, _0202E1B8 ; =0x0000036A
+ strh r2, [r0, r1]
+ b _0202E1A4
+_0202E194:
+ mov r1, #0xdb
+ add r0, r0, r5
+ lsl r1, r1, #0x2
+ ldrh r1, [r0, r1]
+ add r2, r1, r6
+ mov r1, #0xdb
+ lsl r1, r1, #0x2
+ strh r2, [r0, r1]
+_0202E1A4:
+ add r5, r5, #0x6
+ add r4, r4, #0x1
+ bl FUN_02030F20
+ cmp r4, r0
+ blt _0202E128
+_0202E1B0:
+ pop {r3-r7, pc}
+ nop
+_0202E1B4: .word 0x021C59E4
+_0202E1B8: .word 0x0000036A
+
+ thumb_func_start FUN_0202E1BC
+FUN_0202E1BC: ; 0x0202E1BC
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r7, r0, #0x0
+ bl FUN_020286EC
+ str r0, [sp, #0x4]
+ mov r4, #0x0
+ bl FUN_02030F20
+ cmp r0, #0x0
+ ble _0202E224
+ add r5, r4, #0x0
+_0202E1D4:
+ add r0, r4, #0x0
+ bl FUN_0202DFD8
+ add r1, r0, #0x0
+ beq _0202E218
+ add r0, r7, #0x0
+ add r2, sp, #0x8
+ bl FUN_02033874
+ cmp r0, #0x0
+ beq _0202E1EE
+ cmp r0, #0x1
+ bne _0202E218
+_0202E1EE:
+ ldr r0, [sp, #0x8]
+ cmp r0, #0x0
+ bge _0202E1F8
+ bl ErrorHandling
+_0202E1F8:
+ ldr r0, _0202E254 ; =0x021C59E4
+ mov r2, #0xda
+ ldr r0, [r0, #0x0]
+ ldr r3, _0202E258 ; =0x0000036A
+ add r6, r0, r5
+ mov r0, #0xdb
+ lsl r0, r0, #0x2
+ ldrh r0, [r6, r0]
+ lsl r2, r2, #0x2
+ str r0, [sp, #0x0]
+ ldrh r2, [r6, r2]
+ ldrh r3, [r6, r3]
+ ldr r0, [sp, #0x4]
+ ldr r1, [sp, #0x8]
+ bl FUN_02028608
+_0202E218:
+ add r5, r5, #0x6
+ add r4, r4, #0x1
+ bl FUN_02030F20
+ cmp r4, r0
+ blt _0202E1D4
+_0202E224:
+ mov r3, #0xda
+ mov r2, #0x0
+ lsl r3, r3, #0x2
+ ldr r6, _0202E254 ; =0x021C59E4
+ add r1, r2, #0x0
+ add r0, r2, #0x0
+ add r4, r3, #0x2
+ add r5, r3, #0x4
+_0202E234:
+ ldr r7, [r6, #0x0]
+ add r2, r2, #0x1
+ add r7, r7, r1
+ strh r0, [r7, r3]
+ ldr r7, [r6, #0x0]
+ add r7, r7, r1
+ strh r0, [r7, r4]
+ ldr r7, [r6, #0x0]
+ add r7, r7, r1
+ add r1, r1, #0x6
+ strh r0, [r7, r5]
+ cmp r2, #0x8
+ blt _0202E234
+ add sp, #0xc
+ pop {r4-r7, pc}
+ nop
+_0202E254: .word 0x021C59E4
+_0202E258: .word 0x0000036A
+
+ thumb_func_start FUN_0202E25C
+FUN_0202E25C: ; 0x0202E25C
+ push {r4, lr}
+ add r4, r0, #0x0
+ cmp r1, #0x1
+ bne _0202E26E
+ mov r0, #0x0
+ mov r1, #0x1
+ bl FUN_0202E0FC
+ b _0202E27E
+_0202E26E:
+ mov r0, #0x0
+ mvn r0, r0
+ cmp r1, r0
+ bne _0202E27E
+ mov r0, #0x1
+ add r1, r0, #0x0
+ bl FUN_0202E0FC
+_0202E27E:
+ add r0, r4, #0x0
+ bl FUN_0202E1BC
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202E288
+FUN_0202E288: ; 0x0202E288
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x2
+ bl FUN_0202E0FC
+ add r0, r4, #0x0
+ bl FUN_0202E1BC
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202E29C
+FUN_0202E29C: ; 0x0202E29C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _0202E334 ; =0x021C59E8
+ ldr r0, [r0, #0x8]
+ cmp r0, #0x0
+ bne _0202E332
+ mov r1, #0xdb
+ mov r0, #0xf
+ lsl r1, r1, #0x4
+ bl FUN_02016998
+ ldr r1, _0202E334 ; =0x021C59E8
+ mov r2, #0xdb
+ str r0, [r1, #0x8]
+ mov r1, #0x0
+ lsl r2, r2, #0x4
+ blx MI_CpuFill8
+ bl FUN_0202CEEC
+ add r1, r0, #0x0
+ mov r0, #0xf
+ bl FUN_02016998
+ ldr r1, _0202E334 ; =0x021C59E8
+ ldr r2, [r1, #0x8]
+ ldr r1, _0202E338 ; =0x00000CA4
+ str r0, [r2, r1]
+ bl FUN_0202CEEC
+ add r2, r0, #0x0
+ ldr r0, _0202E334 ; =0x021C59E8
+ ldr r1, [r0, #0x8]
+ ldr r0, _0202E338 ; =0x00000CA4
+ ldr r0, [r1, r0]
+ mov r1, #0x0
+ blx MI_CpuFill8
+ bl FUN_02023AC4
+ add r1, r0, #0x0
+ mov r0, #0xf
+ bl FUN_02016998
+ ldr r1, _0202E334 ; =0x021C59E8
+ ldr r2, [r1, #0x8]
+ ldr r1, _0202E33C ; =0x00000CBC
+ str r0, [r2, r1]
+ bl FUN_02023AC4
+ add r2, r0, #0x0
+ ldr r0, _0202E334 ; =0x021C59E8
+ ldr r1, [r0, #0x8]
+ ldr r0, _0202E33C ; =0x00000CBC
+ ldr r0, [r1, r0]
+ mov r1, #0x0
+ blx MI_CpuFill8
+ ldr r2, _0202E334 ; =0x021C59E8
+ mov r1, #0x33
+ ldr r3, _0202E340 ; =0x00000333
+ ldr r0, [r2, #0x8]
+ lsl r1, r1, #0x6
+ str r3, [r0, r1]
+ add r0, r1, #0x0
+ ldr r3, [r2, #0x8]
+ sub r0, #0x8
+ str r4, [r3, r0]
+ ldr r0, [r2, #0x8]
+ sub r1, #0x18
+ add r0, r0, r1
+ bl FUN_02013724
+ bl FUN_0202E500
+_0202E332:
+ pop {r4, pc}
+ .balign 4
+_0202E334: .word 0x021C59E8
+_0202E338: .word 0x00000CA4
+_0202E33C: .word 0x00000CBC
+_0202E340: .word 0x00000333
+
+ thumb_func_start FUN_0202E344
+FUN_0202E344: ; 0x0202E344
+ ldr r0, _0202E354 ; =0x021C59E8
+ ldr r0, [r0, #0x8]
+ cmp r0, #0x0
+ beq _0202E350
+ mov r0, #0x1
+ bx lr
+_0202E350:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+_0202E354: .word 0x021C59E8
+
+ thumb_func_start FUN_0202E358
+FUN_0202E358: ; 0x0202E358
+ push {r4-r5}
+ mov r5, #0x0
+ cmp r2, #0x0
+ ble _0202E378
+_0202E360:
+ ldrb r4, [r0, #0x0]
+ ldrb r3, [r1, #0x0]
+ cmp r4, r3
+ beq _0202E36E
+ mov r0, #0x0
+ pop {r4-r5}
+ bx lr
+_0202E36E:
+ add r5, r5, #0x1
+ add r0, r0, #0x1
+ add r1, r1, #0x1
+ cmp r5, r2
+ blt _0202E360
+_0202E378:
+ mov r0, #0x1
+ pop {r4-r5}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0202E380
+FUN_0202E380: ; 0x0202E380
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ bl FUN_02033534
+ add r5, r0, #0x0
+ bl FUN_0203354C
+ add r4, r7, #0x0
+ add r6, r0, #0x0
+ add r4, #0x50
+ cmp r5, #0xe
+ beq _0202E3C2
+ ldrb r0, [r4, #0x4]
+ bl FUN_0202D8B0
+ cmp r0, #0x0
+ beq _0202E3AC
+ add r0, r5, #0x0
+ bl FUN_0202D8B0
+ cmp r0, #0x0
+ bne _0202E3C2
+_0202E3AC:
+ add r0, r4, #0x0
+ add r0, #0x54
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _0202E3BC
+ ldrb r0, [r4, #0x4]
+ cmp r0, #0xa
+ beq _0202E460
+_0202E3BC:
+ ldrb r0, [r4, #0x4]
+ cmp r0, r5
+ bne _0202E460
+_0202E3C2:
+ cmp r5, #0xe
+ beq _0202E3CC
+ ldrb r0, [r4, #0x5]
+ cmp r0, r6
+ bne _0202E460
+_0202E3CC:
+ mov r6, #0x0
+ add r4, r6, #0x0
+ add r5, r6, #0x0
+_0202E3D2:
+ ldr r0, _0202E464 ; =0x021C59E8
+ ldr r1, _0202E468 ; =0x00000C84
+ ldr r0, [r0, #0x8]
+ add r2, r0, r4
+ ldrh r1, [r2, r1]
+ cmp r1, #0x0
+ beq _0202E412
+ add r0, #0x58
+ add r0, r0, r5
+ add r1, r7, #0x4
+ mov r2, #0x6
+ bl FUN_0202E358
+ cmp r0, #0x0
+ beq _0202E412
+ ldr r2, _0202E464 ; =0x021C59E8
+ lsl r1, r6, #0x1
+ ldr r3, [r2, #0x8]
+ mov r0, #0x96
+ add r3, r3, r1
+ ldr r1, _0202E468 ; =0x00000C84
+ strh r0, [r3, r1]
+ ldr r3, [r2, #0x8]
+ mov r2, #0xc0
+ add r1, r6, #0x0
+ add r3, #0x54
+ mul r1, r2
+ add r0, r7, #0x0
+ add r1, r3, r1
+ blx MI_CpuCopy8
+ pop {r3-r7, pc}
+_0202E412:
+ add r6, r6, #0x1
+ add r4, r4, #0x2
+ add r5, #0xc0
+ cmp r6, #0x10
+ blt _0202E3D2
+ ldr r0, _0202E464 ; =0x021C59E8
+ ldr r2, _0202E468 ; =0x00000C84
+ ldr r0, [r0, #0x8]
+ mov r1, #0x0
+ add r4, r0, #0x0
+_0202E426:
+ ldrh r3, [r4, r2]
+ cmp r3, #0x0
+ beq _0202E434
+ add r1, r1, #0x1
+ add r4, r4, #0x2
+ cmp r1, #0x10
+ blt _0202E426
+_0202E434:
+ cmp r1, #0x10
+ bge _0202E460
+ lsl r2, r1, #0x1
+ add r2, r0, r2
+ ldr r0, _0202E468 ; =0x00000C84
+ mov r3, #0x96
+ strh r3, [r2, r0]
+ ldr r2, _0202E464 ; =0x021C59E8
+ add r3, r1, #0x0
+ ldr r4, [r2, #0x8]
+ mov r2, #0xc0
+ add r4, #0x54
+ mul r3, r2
+ add r0, r7, #0x0
+ add r1, r4, r3
+ blx MI_CpuCopy8
+ ldr r0, _0202E464 ; =0x021C59E8
+ mov r2, #0x1
+ ldr r1, [r0, #0x8]
+ ldr r0, _0202E46C ; =0x00000CB4
+ strb r2, [r1, r0]
+_0202E460:
+ pop {r3-r7, pc}
+ nop
+_0202E464: .word 0x021C59E8
+_0202E468: .word 0x00000C84
+_0202E46C: .word 0x00000CB4
+
+ thumb_func_start FUN_0202E470
+FUN_0202E470: ; 0x0202E470
+ push {r3, lr}
+ cmp r1, #0x0
+ beq _0202E47A
+ blx OS_Terminate
+_0202E47A:
+ ldr r0, _0202E484 ; =0x021C59E8
+ mov r1, #0x2
+ str r1, [r0, #0x4]
+ pop {r3, pc}
+ nop
+_0202E484: .word 0x021C59E8
+
+ thumb_func_start FUN_0202E488
+FUN_0202E488: ; 0x0202E488
+ ldr r0, _0202E494 ; =0x021C59E8
+ mov r1, #0x0
+ str r1, [r0, #0x4]
+ ldr r3, _0202E498 ; =FUN_02016454
+ mov r0, #0x4
+ bx r3
+ .balign 4
+_0202E494: .word 0x021C59E8
+_0202E498: .word FUN_02016454
+
+ thumb_func_start FUN_0202E49C
+FUN_0202E49C: ; 0x0202E49C
+ push {r3, lr}
+ mov r0, #0x4
+ bl FUN_02016444
+ ldr r0, _0202E4C0 ; =0x021C59E8
+ mov r1, #0x1
+ str r1, [r0, #0x4]
+ ldr r1, _0202E4C4 ; =FUN_0202E470
+ mov r0, #0x8
+ mov r2, #0x0
+ blx FUN_02090DB8
+ cmp r0, #0x1
+ beq _0202E4BC
+ blx OS_Terminate
+_0202E4BC:
+ pop {r3, pc}
+ nop
+_0202E4C0: .word 0x021C59E8
+_0202E4C4: .word FUN_0202E470
+
+ thumb_func_start FUN_0202E4C8
+FUN_0202E4C8: ; 0x0202E4C8
+ ldr r0, _0202E4D8 ; =0x021C59E8
+ ldr r0, [r0, #0x4]
+ cmp r0, #0x2
+ bne _0202E4D4
+ mov r0, #0x1
+ bx lr
+_0202E4D4:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+_0202E4D8: .word 0x021C59E8
+
+ thumb_func_start FUN_0202E4DC
+FUN_0202E4DC: ; 0x0202E4DC
+ ldr r0, _0202E4EC ; =0x021C59E8
+ ldr r0, [r0, #0x4]
+ cmp r0, #0x0
+ beq _0202E4E8
+ mov r0, #0x1
+ bx lr
+_0202E4E8:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+_0202E4EC: .word 0x021C59E8
+
+ thumb_func_start FUN_0202E4F0
+FUN_0202E4F0: ; 0x0202E4F0
+ ldr r3, _0202E4F8 ; =FUN_02090CC8
+ ldr r0, _0202E4FC ; =FUN_0202E488
+ mov r1, #0x0
+ bx r3
+ .balign 4
+_0202E4F8: .word FUN_02090CC8
+_0202E4FC: .word FUN_0202E488
+
+ thumb_func_start FUN_0202E500
+FUN_0202E500: ; 0x0202E500
+ push {r3, lr}
+ ldr r1, _0202E534 ; =0x021C59E8
+ mov r0, #0xcb
+ ldr r2, [r1, #0x8]
+ mov r3, #0x0
+ lsl r0, r0, #0x4
+ str r3, [r2, r0]
+ ldr r1, [r1, #0x8]
+ sub r0, #0xc
+ ldr r2, [r1, r0]
+ mov r0, #0x1f
+ add r1, r2, #0x0
+ and r1, r0
+ mov r0, #0x20
+ sub r0, r0, r1
+ add r0, r2, r0
+ bl FUN_0202CE64
+ ldr r0, _0202E534 ; =0x021C59E8
+ ldr r1, [r0, #0x8]
+ mov r0, #0x33
+ lsl r0, r0, #0x6
+ ldr r0, [r1, r0]
+ bl FUN_0202CB70
+ pop {r3, pc}
+ .balign 4
+_0202E534: .word 0x021C59E8
+
+ thumb_func_start FUN_0202E538
+FUN_0202E538: ; 0x0202E538
+ push {r3-r5, lr}
+ mov r4, #0x0
+ ldr r2, _0202E564 ; =0x021C59E8
+ ldr r0, _0202E568 ; =0x00000C84
+ add r5, r4, #0x0
+ add r1, r4, #0x0
+_0202E544:
+ ldr r3, [r2, #0x8]
+ add r4, r4, #0x1
+ add r3, r3, r5
+ add r5, r5, #0x2
+ strh r1, [r3, r0]
+ cmp r4, #0x10
+ blt _0202E544
+ ldr r0, _0202E564 ; =0x021C59E8
+ mov r2, #0x3
+ ldr r0, [r0, #0x8]
+ lsl r2, r2, #0xa
+ add r0, #0x54
+ blx MI_CpuFill8
+ pop {r3-r5, pc}
+ nop
+_0202E564: .word 0x021C59E8
+_0202E568: .word 0x00000C84
+
+ thumb_func_start FUN_0202E56C
+FUN_0202E56C: ; 0x0202E56C
+ push {r3-r4}
+ ldr r1, _0202E58C ; =0x021C59E8
+ lsl r0, r0, #0x18
+ ldr r2, [r1, #0x8]
+ ldr r4, _0202E590 ; =0x00000DAD
+ lsr r0, r0, #0x18
+ ldrb r1, [r2, r4]
+ mov r3, #0x8
+ lsl r0, r0, #0x1f
+ bic r1, r3
+ lsr r0, r0, #0x1c
+ orr r0, r1
+ strb r0, [r2, r4]
+ pop {r3-r4}
+ bx lr
+ nop
+_0202E58C: .word 0x021C59E8
+_0202E590: .word 0x00000DAD
+
+ thumb_func_start FUN_0202E594
+FUN_0202E594: ; 0x0202E594
+ push {r4-r5}
+ ldr r1, _0202E5F0 ; =0x021C59E8
+ ldr r0, _0202E5F4 ; =0x00000CB4
+ ldr r3, [r1, #0x8]
+ mov r2, #0x0
+ strb r2, [r3, r0]
+ add r3, r0, #0x0
+ ldr r5, [r1, #0x8]
+ add r3, #0xf9
+ ldrb r4, [r5, r3]
+ mov r3, #0x1
+ bic r4, r3
+ add r3, r0, #0x0
+ add r3, #0xf9
+ strb r4, [r5, r3]
+ add r3, r0, #0x0
+ ldr r5, [r1, #0x8]
+ add r3, #0xf9
+ ldrb r4, [r5, r3]
+ mov r3, #0x4
+ bic r4, r3
+ add r3, r0, #0x0
+ add r3, #0xf9
+ strb r4, [r5, r3]
+ add r3, r0, #0x0
+ ldr r4, [r1, #0x8]
+ add r3, #0xf6
+ strb r2, [r4, r3]
+ add r3, r0, #0x0
+ ldr r5, [r1, #0x8]
+ add r3, #0xf9
+ ldrb r4, [r5, r3]
+ mov r3, #0x10
+ bic r4, r3
+ add r3, r0, #0x0
+ add r3, #0xf9
+ strb r4, [r5, r3]
+ add r3, r0, #0x0
+ ldr r4, [r1, #0x8]
+ add r3, #0xf8
+ strb r2, [r4, r3]
+ ldr r1, [r1, #0x8]
+ add r0, #0xf7
+ strb r2, [r1, r0]
+ pop {r4-r5}
+ bx lr
+ .balign 4
+_0202E5F0: .word 0x021C59E8
+_0202E5F4: .word 0x00000CB4
+
+ thumb_func_start FUN_0202E5F8
+FUN_0202E5F8: ; 0x0202E5F8
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ add r4, r2, #0x0
+ bl FUN_0202E594
+ add r0, r5, #0x0
+ bl FUN_0202E56C
+ bl FUN_0202D2F4
+ ldr r0, _0202E65C ; =0x021C59E8
+ ldr r1, [r0, #0x8]
+ ldr r0, _0202E660 ; =0x00000DAB
+ ldrb r0, [r1, r0]
+ cmp r0, #0x0
+ bne _0202E62A
+ ldr r0, _0202E664 ; =FUN_020303BC
+ mov r1, #0xe
+ bl FUN_0202D0A0
+ ldr r0, _0202E65C ; =0x021C59E8
+ mov r2, #0x1
+ ldr r1, [r0, #0x8]
+ ldr r0, _0202E660 ; =0x00000DAB
+ strb r2, [r1, r0]
+_0202E62A:
+ ldr r0, _0202E65C ; =0x021C59E8
+ ldr r3, _0202E668 ; =0x00000DAD
+ ldr r1, [r0, #0x8]
+ mov r2, #0x20
+ ldrb r0, [r1, r3]
+ bic r0, r2
+ lsl r2, r4, #0x18
+ lsr r2, r2, #0x18
+ lsl r2, r2, #0x1f
+ lsr r2, r2, #0x1a
+ orr r0, r2
+ strb r0, [r1, r3]
+ bl FUN_0202CBD4
+ cmp r0, #0x1
+ bne _0202E656
+ bl FUN_0202CBFC
+ cmp r0, #0x0
+ beq _0202E656
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0202E656:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ nop
+_0202E65C: .word 0x021C59E8
+_0202E660: .word 0x00000DAB
+_0202E664: .word FUN_020303BC
+_0202E668: .word 0x00000DAD
+
+ thumb_func_start FUN_0202E66C
+FUN_0202E66C: ; 0x0202E66C
+ push {r4, lr}
+ sub sp, #0x8
+ add r4, r1, #0x0
+ bl FUN_0202E594
+ cmp r4, #0x0
+ beq _0202E67E
+ bl FUN_0202E538
+_0202E67E:
+ ldr r0, _0202E6DC ; =0x021C59E8
+ ldr r1, [r0, #0x8]
+ ldr r0, _0202E6E0 ; =0x00000DAB
+ ldrb r0, [r1, r0]
+ cmp r0, #0x0
+ bne _0202E69C
+ ldr r0, _0202E6E4 ; =FUN_02030238
+ mov r1, #0xe
+ bl FUN_0202D0A0
+ ldr r0, _0202E6DC ; =0x021C59E8
+ mov r2, #0x1
+ ldr r1, [r0, #0x8]
+ ldr r0, _0202E6E0 ; =0x00000DAB
+ strb r2, [r1, r0]
+_0202E69C:
+ bl FUN_0202CBD4
+ cmp r0, #0x1
+ bne _0202E6D4
+ ldr r2, _0202E6E8 ; =0x020EEC40
+ add r0, sp, #0x0
+ ldrb r3, [r2, #0x0]
+ add r1, sp, #0x0
+ strb r3, [r0, #0x0]
+ ldrb r3, [r2, #0x1]
+ strb r3, [r0, #0x1]
+ ldrb r3, [r2, #0x2]
+ strb r3, [r0, #0x2]
+ ldrb r3, [r2, #0x3]
+ strb r3, [r0, #0x3]
+ ldrb r3, [r2, #0x4]
+ ldrb r2, [r2, #0x5]
+ strb r3, [r0, #0x4]
+ strb r2, [r0, #0x5]
+ ldr r0, _0202E6EC ; =FUN_0202E380
+ mov r2, #0x0
+ bl FUN_0202C570
+ cmp r0, #0x0
+ beq _0202E6D4
+ add sp, #0x8
+ mov r0, #0x1
+ pop {r4, pc}
+_0202E6D4:
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r4, pc}
+ nop
+_0202E6DC: .word 0x021C59E8
+_0202E6E0: .word 0x00000DAB
+_0202E6E4: .word FUN_02030238
+_0202E6E8: .word 0x020EEC40
+_0202E6EC: .word FUN_0202E380
+
+ thumb_func_start FUN_0202E6F0
+FUN_0202E6F0: ; 0x0202E6F0
+ push {r3, lr}
+ ldr r0, _0202E77C ; =0x021C59E8
+ ldr r1, [r0, #0x8]
+ cmp r1, #0x0
+ bne _0202E6FE
+ mov r0, #0x1
+ pop {r3, pc}
+_0202E6FE:
+ ldr r0, _0202E780 ; =0x00000DAC
+ ldrb r0, [r1, r0]
+ cmp r0, #0x0
+ beq _0202E710
+ cmp r0, #0x1
+ beq _0202E740
+ cmp r0, #0x2
+ beq _0202E758
+ b _0202E776
+_0202E710:
+ bl FUN_0202D21C
+ cmp r0, #0x0
+ beq _0202E728
+ bl FUN_0202C770
+ ldr r0, _0202E77C ; =0x021C59E8
+ mov r2, #0x1
+ ldr r1, [r0, #0x8]
+ ldr r0, _0202E780 ; =0x00000DAC
+ strb r2, [r1, r0]
+ b _0202E776
+_0202E728:
+ bl FUN_0202D1E4
+ cmp r0, #0x0
+ bne _0202E776
+ bl FUN_0202D100
+ ldr r0, _0202E77C ; =0x021C59E8
+ mov r2, #0x2
+ ldr r1, [r0, #0x8]
+ ldr r0, _0202E780 ; =0x00000DAC
+ strb r2, [r1, r0]
+ b _0202E776
+_0202E740:
+ bl FUN_0202D1E4
+ cmp r0, #0x0
+ bne _0202E776
+ bl FUN_0202D100
+ ldr r0, _0202E77C ; =0x021C59E8
+ mov r2, #0x2
+ ldr r1, [r0, #0x8]
+ ldr r0, _0202E780 ; =0x00000DAC
+ strb r2, [r1, r0]
+ b _0202E776
+_0202E758:
+ bl FUN_0202D1C8
+ cmp r0, #0x0
+ beq _0202E764
+ mov r0, #0x1
+ pop {r3, pc}
+_0202E764:
+ bl FUN_0202D200
+ cmp r0, #0x0
+ beq _0202E776
+ ldr r0, _0202E77C ; =0x021C59E8
+ mov r2, #0x1
+ ldr r1, [r0, #0x8]
+ ldr r0, _0202E780 ; =0x00000DAC
+ strb r2, [r1, r0]
+_0202E776:
+ mov r0, #0x0
+ pop {r3, pc}
+ nop
+_0202E77C: .word 0x021C59E8
+_0202E780: .word 0x00000DAC
+
+ thumb_func_start FUN_0202E784
+FUN_0202E784: ; 0x0202E784
+ push {r3, lr}
+ ldr r0, _0202E7A8 ; =0x021C59E8
+ ldr r2, [r0, #0x8]
+ cmp r2, #0x0
+ beq _0202E7A2
+ ldr r0, _0202E7AC ; =0x00000DAA
+ ldrb r1, [r2, r0]
+ cmp r1, #0x0
+ bne _0202E7A2
+ mov r1, #0x1
+ strb r1, [r2, r0]
+ bl FUN_0202D100
+ mov r0, #0x1
+ pop {r3, pc}
+_0202E7A2:
+ mov r0, #0x0
+ pop {r3, pc}
+ nop
+_0202E7A8: .word 0x021C59E8
+_0202E7AC: .word 0x00000DAA
+
+ thumb_func_start FUN_0202E7B0
+FUN_0202E7B0: ; 0x0202E7B0
+ push {r3, lr}
+ ldr r1, _0202E7D0 ; =0x021C59E8
+ ldr r2, [r1, #0x8]
+ cmp r2, #0x0
+ beq _0202E7CE
+ cmp r0, #0x0
+ ldr r0, _0202E7D4 ; =0x00000DAA
+ beq _0202E7C6
+ mov r1, #0x2
+ strb r1, [r2, r0]
+ pop {r3, pc}
+_0202E7C6:
+ mov r1, #0x0
+ strb r1, [r2, r0]
+ bl FUN_0202E500
+_0202E7CE:
+ pop {r3, pc}
+ .balign 4
+_0202E7D0: .word 0x021C59E8
+_0202E7D4: .word 0x00000DAA
+
+ thumb_func_start FUN_0202E7D8
+FUN_0202E7D8: ; 0x0202E7D8
+ push {r3, lr}
+ ldr r0, _0202E804 ; =0x021C59E8
+ ldr r1, [r0, #0x8]
+ ldr r0, _0202E808 ; =0x00000CBC
+ ldr r0, [r1, r0]
+ bl FUN_02016A18
+ ldr r0, _0202E804 ; =0x021C59E8
+ ldr r1, [r0, #0x8]
+ ldr r0, _0202E80C ; =0x00000CA4
+ ldr r0, [r1, r0]
+ bl FUN_02016A18
+ ldr r0, _0202E804 ; =0x021C59E8
+ ldr r0, [r0, #0x8]
+ bl FUN_02016A18
+ ldr r0, _0202E804 ; =0x021C59E8
+ mov r1, #0x0
+ str r1, [r0, #0x8]
+ pop {r3, pc}
+ nop
+_0202E804: .word 0x021C59E8
+_0202E808: .word 0x00000CBC
+_0202E80C: .word 0x00000CA4
+
+ thumb_func_start FUN_0202E810
+FUN_0202E810: ; 0x0202E810
+ push {r4, lr}
+ bl FUN_02030F40
+ cmp r0, #0x0
+ bne _0202E81E
+ mov r0, #0x0
+ pop {r4, pc}
+_0202E81E:
+ ldr r1, _0202E83C ; =0x021C59E8
+ mov r0, #0x0
+ ldr r4, [r1, #0x8]
+ ldr r1, _0202E840 ; =0x00000C84
+ add r3, r0, #0x0
+_0202E828:
+ ldrh r2, [r4, r1]
+ cmp r2, #0x0
+ beq _0202E830
+ add r0, r0, #0x1
+_0202E830:
+ add r3, r3, #0x1
+ add r4, r4, #0x2
+ cmp r3, #0x10
+ blt _0202E828
+ pop {r4, pc}
+ nop
+_0202E83C: .word 0x021C59E8
+_0202E840: .word 0x00000C84
+
+ thumb_func_start FUN_0202E844
+FUN_0202E844: ; 0x0202E844
+ push {r3-r5, lr}
+ ldr r1, _0202E870 ; =0x021C59E8
+ mov r4, #0x0
+ ldr r5, [r1, #0x8]
+ ldr r1, _0202E874 ; =0x00000C84
+ add r3, r4, #0x0
+_0202E850:
+ ldrh r2, [r5, r1]
+ cmp r2, #0x0
+ beq _0202E860
+ cmp r4, r0
+ bne _0202E85E
+ add r0, r3, #0x0
+ pop {r3-r5, pc}
+_0202E85E:
+ add r4, r4, #0x1
+_0202E860:
+ add r3, r3, #0x1
+ add r5, r5, #0x2
+ cmp r3, #0x10
+ blt _0202E850
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+_0202E870: .word 0x021C59E8
+_0202E874: .word 0x00000C84
+
+ thumb_func_start FUN_0202E878
+FUN_0202E878: ; 0x0202E878
+ ldr r0, _0202E884 ; =0x021C59E8
+ ldr r1, [r0, #0x8]
+ ldr r0, _0202E888 ; =0x00000CB4
+ ldrb r0, [r1, r0]
+ bx lr
+ nop
+_0202E884: .word 0x021C59E8
+_0202E888: .word 0x00000CB4
+
+ thumb_func_start FUN_0202E88C
+FUN_0202E88C: ; 0x0202E88C
+ ldr r0, _0202E898 ; =0x021C59E8
+ mov r2, #0x0
+ ldr r1, [r0, #0x8]
+ ldr r0, _0202E89C ; =0x00000CB4
+ strb r2, [r1, r0]
+ bx lr
+ .balign 4
+_0202E898: .word 0x021C59E8
+_0202E89C: .word 0x00000CB4
+
+ thumb_func_start FUN_0202E8A0
+FUN_0202E8A0: ; 0x0202E8A0
+ ldr r1, _0202E8C8 ; =0x021C59E8
+ ldr r3, [r1, #0x8]
+ lsl r1, r0, #0x1
+ add r2, r3, r1
+ ldr r1, _0202E8CC ; =0x00000C84
+ ldrh r1, [r2, r1]
+ cmp r1, #0x0
+ beq _0202E8C2
+ mov r1, #0xc0
+ mul r1, r0
+ add r0, r3, r1
+ add r0, #0xaa
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _0202E8C4
+ mov r0, #0x1
+ bx lr
+_0202E8C2:
+ mov r0, #0x0
+_0202E8C4:
+ bx lr
+ nop
+_0202E8C8: .word 0x021C59E8
+_0202E8CC: .word 0x00000C84
+
+ thumb_func_start FUN_0202E8D0
+FUN_0202E8D0: ; 0x0202E8D0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r4, #0xf
+_0202E8D6:
+ add r0, r4, #0x0
+ bl FUN_0202E8A0
+ cmp r0, r5
+ ble _0202E8E8
+ cmp r0, #0x8
+ bge _0202E8E8
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+_0202E8E8:
+ sub r4, r4, #0x1
+ bpl _0202E8D6
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202E8F4
+FUN_0202E8F4: ; 0x0202E8F4
+ push {r3-r7, lr}
+ bl FUN_0202E810
+ cmp r0, #0x0
+ bne _0202E904
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r7, pc}
+_0202E904:
+ mov r5, #0x2d
+ ldr r7, _0202E948 ; =0x021C59E8
+ mov r6, #0xf
+ mov r4, #0x1e
+ lsl r5, r5, #0x6
+_0202E90E:
+ ldr r0, [r7, #0x8]
+ ldr r1, _0202E94C ; =0x00000C84
+ add r2, r0, r4
+ ldrh r1, [r2, r1]
+ cmp r1, #0x0
+ beq _0202E938
+ add r0, #0x58
+ add r0, r0, r5
+ bl FUN_0202EFE4
+ cmp r0, #0x0
+ beq _0202E938
+ add r0, r6, #0x0
+ bl FUN_0202E8A0
+ cmp r0, #0x1
+ ble _0202E938
+ cmp r0, #0x8
+ bge _0202E938
+ add r0, r6, #0x0
+ pop {r3-r7, pc}
+_0202E938:
+ sub r4, r4, #0x2
+ sub r5, #0xc0
+ sub r6, r6, #0x1
+ bpl _0202E90E
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r7, pc}
+ nop
+_0202E948: .word 0x021C59E8
+_0202E94C: .word 0x00000C84
+
+ thumb_func_start FUN_0202E950
+FUN_0202E950: ; 0x0202E950
+ push {r3-r7, lr}
+ bl FUN_0202E810
+ cmp r0, #0x0
+ bne _0202E960
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r7, pc}
+_0202E960:
+ mov r5, #0x2d
+ ldr r7, _0202E9A4 ; =0x021C59E8
+ mov r6, #0xf
+ mov r4, #0x1e
+ lsl r5, r5, #0x6
+_0202E96A:
+ ldr r0, [r7, #0x8]
+ ldr r1, _0202E9A8 ; =0x00000C84
+ add r2, r0, r4
+ ldrh r1, [r2, r1]
+ cmp r1, #0x0
+ beq _0202E986
+ add r0, #0x58
+ add r0, r0, r5
+ bl FUN_0202EFE4
+ cmp r0, #0x0
+ beq _0202E986
+ add r0, r6, #0x0
+ pop {r3-r7, pc}
+_0202E986:
+ sub r4, r4, #0x2
+ sub r5, #0xc0
+ sub r6, r6, #0x1
+ bpl _0202E96A
+ mov r0, #0x1
+ bl FUN_0202E8D0
+ mov r1, #0x0
+ mvn r1, r1
+ cmp r0, r1
+ bne _0202E9A2
+ mov r0, #0x0
+ bl FUN_0202E8D0
+_0202E9A2:
+ pop {r3-r7, pc}
+ .balign 4
+_0202E9A4: .word 0x021C59E8
+_0202E9A8: .word 0x00000C84
+
+ thumb_func_start FUN_0202E9AC
+FUN_0202E9AC: ; 0x0202E9AC
+ push {r4-r6, lr}
+ add r4, r1, #0x0
+ ldr r1, _0202E9E0 ; =0x021C59E8
+ mov r5, #0x0
+ ldr r6, [r1, #0x8]
+ ldr r1, _0202E9E4 ; =0x00000C84
+ add r3, r5, #0x0
+_0202E9BA:
+ ldrh r2, [r6, r1]
+ cmp r2, #0x0
+ beq _0202E9D4
+ cmp r0, r5
+ bne _0202E9D2
+ add r0, r3, #0x0
+ bl FUN_0202EF84
+ add r1, r4, #0x0
+ bl FUN_0202393C
+ pop {r4-r6, pc}
+_0202E9D2:
+ add r5, r5, #0x1
+_0202E9D4:
+ add r3, r3, #0x1
+ add r6, r6, #0x2
+ cmp r3, #0x10
+ blt _0202E9BA
+ pop {r4-r6, pc}
+ nop
+_0202E9E0: .word 0x021C59E8
+_0202E9E4: .word 0x00000C84
+
+ thumb_func_start FUN_0202E9E8
+FUN_0202E9E8: ; 0x0202E9E8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_0202CBD4
+ cmp r0, #0x2
+ bne _0202E9FC
+ bl FUN_0202C770
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0202E9FC:
+ bl FUN_0202CBD4
+ cmp r0, #0x1
+ bne _0202EA48
+ bl FUN_02033534
+ mov r1, #0xc0
+ add r4, r5, #0x0
+ mul r4, r1
+ ldr r1, _0202EA4C ; =0x021C59E8
+ ldr r3, [r1, #0x8]
+ add r1, r3, r4
+ add r1, #0x8a
+ ldrh r2, [r1, #0x0]
+ ldr r1, _0202EA50 ; =0x00000DA8
+ strb r2, [r3, r1]
+ bl FUN_0202D8B0
+ cmp r0, #0x0
+ beq _0202EA36
+ ldr r1, _0202EA4C ; =0x021C59E8
+ mov r0, #0x1
+ ldr r1, [r1, #0x8]
+ mov r2, #0x0
+ add r1, #0x58
+ add r1, r1, r4
+ bl FUN_0202C4D8
+ b _0202EA44
+_0202EA36:
+ ldr r1, _0202EA4C ; =0x021C59E8
+ mov r0, #0x1
+ ldr r1, [r1, #0x8]
+ add r1, #0x54
+ add r1, r1, r4
+ bl FUN_0202D034
+_0202EA44:
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0202EA48:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+_0202EA4C: .word 0x021C59E8
+_0202EA50: .word 0x00000DA8
+
+ thumb_func_start FUN_0202EA54
+FUN_0202EA54: ; 0x0202EA54
+ push {r4-r7}
+ mov r4, #0x0
+ ldr r1, _0202EA90 ; =0x021C59E8
+ ldr r0, _0202EA94 ; =0x00000C84
+ add r5, r4, #0x0
+ mov r2, #0x1
+_0202EA60:
+ ldr r3, [r1, #0x8]
+ add r3, r3, r5
+ ldrh r6, [r3, r0]
+ cmp r6, #0x0
+ beq _0202EA84
+ beq _0202EA84
+ ldr r6, _0202EA94 ; =0x00000C84
+ ldrh r6, [r3, r6]
+ sub r7, r6, #0x1
+ ldr r6, _0202EA94 ; =0x00000C84
+ strh r7, [r3, r6]
+ ldr r3, [r1, #0x8]
+ add r7, r3, r5
+ ldrh r6, [r7, r6]
+ cmp r6, #0x0
+ bne _0202EA84
+ ldr r6, _0202EA98 ; =0x00000CB4
+ strb r2, [r3, r6]
+_0202EA84:
+ add r4, r4, #0x1
+ add r5, r5, #0x2
+ cmp r4, #0x10
+ blt _0202EA60
+ pop {r4-r7}
+ bx lr
+ .balign 4
+_0202EA90: .word 0x021C59E8
+_0202EA94: .word 0x00000C84
+_0202EA98: .word 0x00000CB4
+
+ thumb_func_start FUN_0202EA9C
+FUN_0202EA9C: ; 0x0202EA9C
+ push {r3-r5, lr}
+ bl FUN_02033534
+ add r5, r0, #0x0
+ bl FUN_0202EF70
+ add r4, r0, #0x0
+ cmp r5, #0xf
+ beq _0202EB24
+ ldr r0, _0202EB6C ; =0x021C59E8
+ ldr r1, [r0, #0x8]
+ ldr r0, _0202EB70 ; =0x00000CC4
+ add r5, r1, r0
+ bl FUN_02023AC4
+ cmp r0, #0x20
+ ble _0202EAC2
+ bl ErrorHandling
+_0202EAC2:
+ bl FUN_02023924
+ cmp r0, #0x20
+ beq _0202EACE
+ bl ErrorHandling
+_0202EACE:
+ bl FUN_02023924
+ add r1, r5, #0x0
+ add r2, r0, #0x0
+ add r0, r4, #0x0
+ add r1, #0x10
+ blx MI_CpuCopy8
+ bl FUN_02023AC4
+ add r2, r0, #0x0
+ ldr r0, _0202EB6C ; =0x021C59E8
+ ldr r1, [r0, #0x8]
+ ldr r0, _0202EB74 ; =0x00000CBC
+ ldr r0, [r1, r0]
+ add r1, r5, #0x0
+ add r1, #0x30
+ blx MI_CpuCopy8
+ add r0, r4, #0x0
+ bl FUN_020239BC
+ str r0, [r5, #0x0]
+ bl FUN_02033534
+ strb r0, [r5, #0x4]
+ bl FUN_0203354C
+ strb r0, [r5, #0x5]
+ ldr r0, _0202EB6C ; =0x021C59E8
+ mov r2, #0x8
+ ldr r1, [r0, #0x8]
+ ldr r0, _0202EB78 ; =0x00000CA8
+ add r0, r1, r0
+ add r1, r5, #0x0
+ add r1, #0x8
+ blx MI_CpuCopy8
+ bl FUN_0202D358
+ add r5, #0x54
+ strb r0, [r5, #0x0]
+ b _0202EB4E
+_0202EB24:
+ ldr r1, _0202EB6C ; =0x021C59E8
+ ldr r4, [r1, #0x8]
+ ldr r1, _0202EB70 ; =0x00000CC4
+ add r5, r4, r1
+ bl FUN_020239BC
+ ldr r1, _0202EB70 ; =0x00000CC4
+ str r0, [r4, r1]
+ bl FUN_02033534
+ strb r0, [r5, #0x4]
+ bl FUN_0203354C
+ strb r0, [r5, #0x5]
+ ldr r0, _0202EB6C ; =0x021C59E8
+ add r5, #0x8
+ ldr r0, [r0, #0x8]
+ add r1, r5, #0x0
+ mov r2, #0x54
+ blx MI_CpuCopy8
+_0202EB4E:
+ ldr r0, _0202EB6C ; =0x021C59E8
+ ldr r1, [r0, #0x8]
+ ldr r0, _0202EB70 ; =0x00000CC4
+ add r0, r1, r0
+ mov r1, #0x5c
+ blx DC_FlushRange
+ ldr r0, _0202EB6C ; =0x021C59E8
+ ldr r1, [r0, #0x8]
+ ldr r0, _0202EB70 ; =0x00000CC4
+ add r0, r1, r0
+ mov r1, #0x5c
+ bl FUN_0202CB7C
+ pop {r3-r5, pc}
+ .balign 4
+_0202EB6C: .word 0x021C59E8
+_0202EB70: .word 0x00000CC4
+_0202EB74: .word 0x00000CBC
+_0202EB78: .word 0x00000CA8
+
+ thumb_func_start FUN_0202EB7C
+FUN_0202EB7C: ; 0x0202EB7C
+ push {r4, lr}
+ ldr r0, _0202EBC8 ; =0x021C59E8
+ ldr r1, [r0, #0x8]
+ ldr r0, _0202EBCC ; =0x00000CC4
+ add r4, r1, r0
+ bl FUN_0202EDB8
+ ldrb r1, [r4, #0x6]
+ cmp r1, r0
+ beq _0202EBC6
+ bl FUN_0202EDB8
+ strb r0, [r4, #0x6]
+ ldr r0, _0202EBC8 ; =0x021C59E8
+ ldr r1, [r0, #0x8]
+ ldr r0, _0202EBCC ; =0x00000CC4
+ add r0, r1, r0
+ mov r1, #0x5c
+ blx DC_FlushRange
+ ldr r0, _0202EBC8 ; =0x021C59E8
+ ldr r1, [r0, #0x8]
+ ldr r0, _0202EBCC ; =0x00000CC4
+ add r0, r1, r0
+ mov r1, #0x5c
+ bl FUN_0202CB7C
+ ldr r3, _0202EBC8 ; =0x021C59E8
+ ldr r2, _0202EBCC ; =0x00000CC4
+ ldr r4, [r3, #0x8]
+ ldrh r3, [r3, #0x0]
+ add r0, r4, r2
+ sub r2, r2, #0x4
+ ldr r2, [r4, r2]
+ mov r1, #0x5c
+ bl FUN_0202D240
+_0202EBC6:
+ pop {r4, pc}
+ .balign 4
+_0202EBC8: .word 0x021C59E8
+_0202EBCC: .word 0x00000CC4
+
+ thumb_func_start FUN_0202EBD0
+FUN_0202EBD0: ; 0x0202EBD0
+ push {r3-r5, lr}
+ sub sp, #0x8
+ add r4, r0, #0x0
+ bl FUN_0202CBD4
+ add r5, r0, #0x0
+ bl FUN_0202DF54
+ bl FUN_0202EB7C
+ bl FUN_0202D19C
+ cmp r0, #0x0
+ bne _0202EC0C
+ bl FUN_0202EE24
+ cmp r0, #0x0
+ bne _0202EC0C
+ ldr r0, _0202ED50 ; =0x021C59E8
+ ldr r2, [r0, #0x8]
+ ldr r0, _0202ED54 ; =0x00000DAD
+ ldrb r1, [r2, r0]
+ lsl r3, r1, #0x1d
+ lsr r3, r3, #0x1f
+ beq _0202EC0C
+ mov r3, #0x1
+ bic r1, r3
+ mov r3, #0x1
+ orr r1, r3
+ strb r1, [r2, r0]
+_0202EC0C:
+ ldr r0, _0202ED50 ; =0x021C59E8
+ ldr r1, _0202ED58 ; =0x0000FFFF
+ ldr r3, [r0, #0x8]
+ ldr r0, _0202ED5C ; =0x00000DA6
+ ldrh r2, [r3, r0]
+ cmp r2, r1
+ bne _0202EC1C
+ strh r4, [r3, r0]
+_0202EC1C:
+ ldr r0, _0202ED50 ; =0x021C59E8
+ ldr r2, [r0, #0x8]
+ ldr r0, _0202ED54 ; =0x00000DAD
+ ldrb r1, [r2, r0]
+ lsl r3, r1, #0x1e
+ lsr r3, r3, #0x1f
+ beq _0202EC3C
+ sub r3, r0, #0x7
+ ldrh r3, [r2, r3]
+ cmp r3, r4
+ bls _0202EC3C
+ mov r3, #0x1
+ bic r1, r3
+ mov r3, #0x1
+ orr r1, r3
+ strb r1, [r2, r0]
+_0202EC3C:
+ bl FUN_0202CBE8
+ cmp r0, #0x19
+ bne _0202EC4A
+ mov r0, #0x0
+ bl FUN_020335D0
+_0202EC4A:
+ cmp r5, #0x9
+ bhi _0202ED4C
+ add r0, r5, r5
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0202EC5A: ; jump table (using 16-bit offset)
+ .short _0202EC6E - _0202EC5A - 2; case 0
+ .short _0202EC8E - _0202EC5A - 2; case 1
+ .short _0202ED4C - _0202EC5A - 2; case 2
+ .short _0202ED4C - _0202EC5A - 2; case 3
+ .short _0202ED4C - _0202EC5A - 2; case 4
+ .short _0202ED4C - _0202EC5A - 2; case 5
+ .short _0202ED4C - _0202EC5A - 2; case 6
+ .short _0202ECD2 - _0202EC5A - 2; case 7
+ .short _0202ECB8 - _0202EC5A - 2; case 8
+ .short _0202ECB8 - _0202EC5A - 2; case 9
+_0202EC6E:
+ ldr r0, _0202ED50 ; =0x021C59E8
+ ldr r2, [r0, #0x8]
+ ldr r0, _0202ED60 ; =0x00000DAA
+ ldrb r1, [r2, r0]
+ cmp r1, #0x1
+ bne _0202EC82
+ bl FUN_0202E7D8
+ add sp, #0x8
+ pop {r3-r5, pc}
+_0202EC82:
+ cmp r1, #0x2
+ bne _0202ED4C
+ mov r1, #0x3
+ strb r1, [r2, r0]
+ add sp, #0x8
+ pop {r3-r5, pc}
+_0202EC8E:
+ ldr r0, _0202ED50 ; =0x021C59E8
+ ldr r1, [r0, #0x8]
+ ldr r0, _0202ED60 ; =0x00000DAA
+ ldrb r0, [r1, r0]
+ cmp r0, #0x1
+ bne _0202ECA2
+ bl FUN_0202D178
+ cmp r0, #0x0
+ bne _0202ED4C
+_0202ECA2:
+ ldr r0, _0202ED50 ; =0x021C59E8
+ ldr r1, [r0, #0x8]
+ ldr r0, _0202ED60 ; =0x00000DAA
+ ldrb r0, [r1, r0]
+ cmp r0, #0x2
+ bne _0202ED4C
+ bl FUN_0202D178
+ add sp, #0x8
+ cmp r0, #0x0
+ pop {r3-r5, pc}
+_0202ECB8:
+ ldr r0, _0202ED50 ; =0x021C59E8
+ ldr r3, [r0, #0x8]
+ cmp r3, #0x0
+ beq _0202ED4C
+ ldr r1, _0202ED54 ; =0x00000DAD
+ mov r0, #0x1
+ ldrb r2, [r3, r1]
+ add sp, #0x8
+ bic r2, r0
+ mov r0, #0x1
+ orr r0, r2
+ strb r0, [r3, r1]
+ pop {r3-r5, pc}
+_0202ECD2:
+ bl FUN_0202CDA4
+ ldr r3, _0202ED50 ; =0x021C59E8
+ ldr r2, _0202ED64 ; =0x00000DA9
+ ldr r4, [r3, #0x8]
+ ldrb r1, [r4, r2]
+ cmp r1, #0x0
+ bne _0202ECEE
+ sub r1, r2, #0x5
+ strh r0, [r4, r1]
+ ldr r0, [r3, #0x8]
+ mov r1, #0x5
+ strb r1, [r0, r2]
+ b _0202ECF2
+_0202ECEE:
+ sub r0, r1, #0x1
+ strb r0, [r4, r2]
+_0202ECF2:
+ ldr r1, _0202ED50 ; =0x021C59E8
+ ldr r0, _0202ED68 ; =0x00000DA4
+ ldr r2, [r1, #0x8]
+ ldrh r5, [r2, r0]
+ add r0, #0x9
+ ldrb r0, [r2, r0]
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1f
+ beq _0202ED0A
+ ldrh r0, [r1, #0x0]
+ add r0, r0, #0x1
+ strh r0, [r1, #0x0]
+_0202ED0A:
+ bl FUN_0202EA9C
+ bl FUN_02033534
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_0202D858
+ add r4, r0, #0x0
+ bl FUN_02033534
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_0202EEE8
+ str r0, [sp, #0x0]
+ ldr r1, _0202ED50 ; =0x021C59E8
+ ldr r0, _0202ED54 ; =0x00000DAD
+ ldr r2, [r1, #0x8]
+ add r3, r4, #0x0
+ ldrb r0, [r2, r0]
+ add r2, r5, #0x0
+ lsl r0, r0, #0x1a
+ lsr r0, r0, #0x1f
+ str r0, [sp, #0x4]
+ ldrh r1, [r1, #0x0]
+ mov r0, #0x0
+ bl FUN_0202CF84
+ ldr r0, _0202ED50 ; =0x021C59E8
+ ldr r1, [r0, #0x8]
+ ldr r0, _0202ED6C ; =0x00000DA8
+ strb r5, [r1, r0]
+_0202ED4C:
+ add sp, #0x8
+ pop {r3-r5, pc}
+ .balign 4
+_0202ED50: .word 0x021C59E8
+_0202ED54: .word 0x00000DAD
+_0202ED58: .word 0x0000FFFF
+_0202ED5C: .word 0x00000DA6
+_0202ED60: .word 0x00000DAA
+_0202ED64: .word 0x00000DA9
+_0202ED68: .word 0x00000DA4
+_0202ED6C: .word 0x00000DA8
+
+ thumb_func_start FUN_0202ED70
+FUN_0202ED70: ; 0x0202ED70
+ push {r3, lr}
+ ldr r1, _0202ED80 ; =0x021C59E8
+ ldr r1, [r1, #0x8]
+ cmp r1, #0x0
+ beq _0202ED7E
+ bl FUN_0202EBD0
+_0202ED7E:
+ pop {r3, pc}
+ .balign 4
+_0202ED80: .word 0x021C59E8
+
+ thumb_func_start FUN_0202ED84
+FUN_0202ED84: ; 0x0202ED84
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _0202EDB4 ; =0x021C59E8
+ ldr r0, [r0, #0x8]
+ cmp r0, #0x0
+ bne _0202ED94
+ mov r0, #0x0
+ pop {r4, pc}
+_0202ED94:
+ bl FUN_0202CBD4
+ cmp r0, #0x4
+ beq _0202EDA0
+ mov r0, #0x0
+ pop {r4, pc}
+_0202EDA0:
+ bl FUN_0202CB8C
+ mov r2, #0x1
+ add r1, r2, #0x0
+ lsl r1, r4
+ tst r0, r1
+ bne _0202EDB0
+ mov r2, #0x0
+_0202EDB0:
+ add r0, r2, #0x0
+ pop {r4, pc}
+ .balign 4
+_0202EDB4: .word 0x021C59E8
+
+ thumb_func_start FUN_0202EDB8
+FUN_0202EDB8: ; 0x0202EDB8
+ push {r3-r5, lr}
+ mov r4, #0x0
+ add r5, r4, #0x0
+_0202EDBE:
+ lsl r0, r5, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_0202ED84
+ cmp r0, #0x0
+ beq _0202EDCC
+ add r4, r4, #0x1
+_0202EDCC:
+ add r5, r5, #0x1
+ cmp r5, #0x8
+ blt _0202EDBE
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202EDD8
+FUN_0202EDD8: ; 0x0202EDD8
+ ldr r0, _0202EDF0 ; =0x021C59E8
+ ldr r1, [r0, #0x8]
+ cmp r1, #0x0
+ beq _0202EDEC
+ ldr r0, _0202EDF4 ; =0x00000DAA
+ ldrb r0, [r1, r0]
+ cmp r0, #0x3
+ bne _0202EDEC
+ mov r0, #0x1
+ bx lr
+_0202EDEC:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+_0202EDF0: .word 0x021C59E8
+_0202EDF4: .word 0x00000DAA
+
+ thumb_func_start FUN_0202EDF8
+FUN_0202EDF8: ; 0x0202EDF8
+ ldr r0, _0202EE08 ; =0x021C59E8
+ ldr r0, [r0, #0x8]
+ cmp r0, #0x0
+ beq _0202EE04
+ mov r0, #0x1
+ bx lr
+_0202EE04:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+_0202EE08: .word 0x021C59E8
+
+ thumb_func_start FUN_0202EE0C
+FUN_0202EE0C: ; 0x0202EE0C
+ push {r3, lr}
+ ldr r0, _0202EE20 ; =0x021C59E8
+ ldr r0, [r0, #0x8]
+ cmp r0, #0x0
+ beq _0202EE1C
+ bl FUN_0202D1C8
+ pop {r3, pc}
+_0202EE1C:
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+_0202EE20: .word 0x021C59E8
+
+ thumb_func_start FUN_0202EE24
+FUN_0202EE24: ; 0x0202EE24
+ push {r3, lr}
+ ldr r0, _0202EE3C ; =0x021C59E8
+ ldr r0, [r0, #0x8]
+ cmp r0, #0x0
+ beq _0202EE38
+ bl FUN_0202CB8C
+ ldr r1, _0202EE40 ; =0x0000FFFE
+ and r0, r1
+ pop {r3, pc}
+_0202EE38:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+_0202EE3C: .word 0x021C59E8
+_0202EE40: .word 0x0000FFFE
+
+ thumb_func_start FUN_0202EE44
+FUN_0202EE44: ; 0x0202EE44
+ push {r3, lr}
+ bl FUN_0202EE60
+ cmp r0, #0x0
+ beq _0202EE5A
+ bl FUN_0202CBE8
+ cmp r0, #0x14
+ bne _0202EE5A
+ mov r0, #0x1
+ pop {r3, pc}
+_0202EE5A:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202EE60
+FUN_0202EE60: ; 0x0202EE60
+ ldr r0, _0202EE7C ; =0x021C59E8
+ ldr r1, [r0, #0x8]
+ cmp r1, #0x0
+ beq _0202EE76
+ ldr r0, _0202EE80 ; =0x00000DAD
+ ldrb r0, [r1, r0]
+ lsl r0, r0, #0x1f
+ lsr r0, r0, #0x1f
+ beq _0202EE76
+ mov r0, #0x1
+ bx lr
+_0202EE76:
+ mov r0, #0x0
+ bx lr
+ nop
+_0202EE7C: .word 0x021C59E8
+_0202EE80: .word 0x00000DAD
+
+ thumb_func_start FUN_0202EE84
+FUN_0202EE84: ; 0x0202EE84
+ push {r3-r4}
+ ldr r1, _0202EEA8 ; =0x021C59E8
+ ldr r2, [r1, #0x8]
+ cmp r2, #0x0
+ beq _0202EEA2
+ ldr r4, _0202EEAC ; =0x00000DAD
+ lsl r0, r0, #0x18
+ ldrb r1, [r2, r4]
+ lsr r0, r0, #0x18
+ mov r3, #0x4
+ lsl r0, r0, #0x1f
+ bic r1, r3
+ lsr r0, r0, #0x1d
+ orr r0, r1
+ strb r0, [r2, r4]
+_0202EEA2:
+ pop {r3-r4}
+ bx lr
+ nop
+_0202EEA8: .word 0x021C59E8
+_0202EEAC: .word 0x00000DAD
+
+ thumb_func_start FUN_0202EEB0
+FUN_0202EEB0: ; 0x0202EEB0
+ push {r4-r5}
+ ldr r5, _0202EEDC ; =0x021C59E8
+ ldr r2, [r5, #0x8]
+ cmp r2, #0x0
+ beq _0202EED6
+ ldr r4, _0202EEE0 ; =0x00000DAD
+ lsl r0, r0, #0x18
+ ldrb r1, [r2, r4]
+ lsr r0, r0, #0x18
+ mov r3, #0x2
+ lsl r0, r0, #0x1f
+ bic r1, r3
+ lsr r0, r0, #0x1e
+ orr r0, r1
+ strb r0, [r2, r4]
+ ldr r2, _0202EEE4 ; =0x0000FFFF
+ ldr r1, [r5, #0x8]
+ sub r0, r4, #0x7
+ strh r2, [r1, r0]
+_0202EED6:
+ pop {r4-r5}
+ bx lr
+ nop
+_0202EEDC: .word 0x021C59E8
+_0202EEE0: .word 0x00000DAD
+_0202EEE4: .word 0x0000FFFF
+
+ thumb_func_start FUN_0202EEE8
+FUN_0202EEE8: ; 0x0202EEE8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ blx FUN_020D8AF0
+ add r4, r0, #0x0
+ cmp r5, #0x1a
+ blo _0202EEFA
+ bl ErrorHandling
+_0202EEFA:
+ cmp r5, #0xa
+ bne _0202EF04
+ lsl r0, r4, #0xe
+ lsr r0, r0, #0x10
+ pop {r3-r5, pc}
+_0202EF04:
+ cmp r5, #0x9
+ beq _0202EF0C
+ cmp r5, #0xd
+ bne _0202EF12
+_0202EF0C:
+ lsl r0, r4, #0xe
+ lsr r0, r0, #0x10
+ pop {r3-r5, pc}
+_0202EF12:
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202EF18
+FUN_0202EF18: ; 0x0202EF18
+ ldr r1, _0202EF3C ; =0x021C59E8
+ ldr r3, [r1, #0x8]
+ cmp r3, #0x0
+ beq _0202EF36
+ lsl r1, r0, #0x1
+ add r2, r3, r1
+ ldr r1, _0202EF40 ; =0x00000C84
+ ldrh r1, [r2, r1]
+ cmp r1, #0x0
+ beq _0202EF36
+ mov r1, #0xc0
+ add r3, #0x54
+ mul r1, r0
+ add r0, r3, r1
+ bx lr
+_0202EF36:
+ mov r0, #0x0
+ bx lr
+ nop
+_0202EF3C: .word 0x021C59E8
+_0202EF40: .word 0x00000C84
+
+ thumb_func_start FUN_0202EF44
+FUN_0202EF44: ; 0x0202EF44
+ ldr r1, _0202EF68 ; =0x021C59E8
+ ldr r3, [r1, #0x8]
+ cmp r3, #0x0
+ beq _0202EF62
+ lsl r1, r0, #0x1
+ add r2, r3, r1
+ ldr r1, _0202EF6C ; =0x00000C84
+ ldrh r1, [r2, r1]
+ cmp r1, #0x0
+ beq _0202EF62
+ mov r1, #0xc0
+ add r3, #0xa4
+ mul r1, r0
+ add r0, r3, r1
+ bx lr
+_0202EF62:
+ mov r0, #0x0
+ bx lr
+ nop
+_0202EF68: .word 0x021C59E8
+_0202EF6C: .word 0x00000C84
+
+ thumb_func_start FUN_0202EF70
+FUN_0202EF70: ; 0x0202EF70
+ ldr r0, _0202EF7C ; =0x021C59E8
+ ldr r1, [r0, #0x8]
+ ldr r0, _0202EF80 ; =0x00000CB8
+ ldr r0, [r1, r0]
+ bx lr
+ nop
+_0202EF7C: .word 0x021C59E8
+_0202EF80: .word 0x00000CB8
+
+ thumb_func_start FUN_0202EF84
+FUN_0202EF84: ; 0x0202EF84
+ ldr r1, _0202EFA4 ; =0x021C59E8
+ ldr r3, [r1, #0x8]
+ lsl r1, r0, #0x1
+ add r2, r3, r1
+ ldr r1, _0202EFA8 ; =0x00000C84
+ ldrh r1, [r2, r1]
+ cmp r1, #0x0
+ bne _0202EF98
+ mov r0, #0x0
+ bx lr
+_0202EF98:
+ mov r1, #0xc0
+ add r3, #0xa4
+ mul r1, r0
+ add r0, r3, r1
+ add r0, #0x10
+ bx lr
+ .balign 4
+_0202EFA4: .word 0x021C59E8
+_0202EFA8: .word 0x00000C84
+
+ thumb_func_start FUN_0202EFAC
+FUN_0202EFAC: ; 0x0202EFAC
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, _0202EFDC ; =0x021C59E8
+ add r4, r1, #0x0
+ ldr r0, [r0, #0x8]
+ cmp r0, #0x0
+ beq _0202EFD8
+ cmp r4, #0x8
+ blt _0202EFC2
+ bl ErrorHandling
+_0202EFC2:
+ ldr r1, _0202EFDC ; =0x021C59E8
+ add r0, r5, #0x0
+ ldr r2, [r1, #0x8]
+ ldr r1, _0202EFE0 ; =0x00000C54
+ add r3, r2, r1
+ mov r2, #0x6
+ add r1, r4, #0x0
+ mul r1, r2
+ add r1, r3, r1
+ blx MI_CpuCopy8
+_0202EFD8:
+ pop {r3-r5, pc}
+ nop
+_0202EFDC: .word 0x021C59E8
+_0202EFE0: .word 0x00000C54
+
+ thumb_func_start FUN_0202EFE4
+FUN_0202EFE4: ; 0x0202EFE4
+ push {r4-r5}
+ ldr r2, _0202F034 ; =0x021C59E8
+ mov r1, #0x0
+ ldr r3, [r2, #0x8]
+ ldr r2, _0202F038 ; =0x00000C54
+ add r2, r3, r2
+ ldrb r3, [r0, #0x0]
+_0202EFF2:
+ ldrb r4, [r2, #0x0]
+ cmp r4, r3
+ bne _0202F026
+ ldrb r5, [r2, #0x1]
+ ldrb r4, [r0, #0x1]
+ cmp r5, r4
+ bne _0202F026
+ ldrb r5, [r2, #0x2]
+ ldrb r4, [r0, #0x2]
+ cmp r5, r4
+ bne _0202F026
+ ldrb r5, [r2, #0x3]
+ ldrb r4, [r0, #0x3]
+ cmp r5, r4
+ bne _0202F026
+ ldrb r5, [r2, #0x4]
+ ldrb r4, [r0, #0x4]
+ cmp r5, r4
+ bne _0202F026
+ ldrb r5, [r2, #0x5]
+ ldrb r4, [r0, #0x5]
+ cmp r5, r4
+ bne _0202F026
+ mov r0, #0x1
+ pop {r4-r5}
+ bx lr
+_0202F026:
+ add r1, r1, #0x1
+ add r2, r2, #0x6
+ cmp r1, #0x8
+ blt _0202EFF2
+ mov r0, #0x0
+ pop {r4-r5}
+ bx lr
+ .balign 4
+_0202F034: .word 0x021C59E8
+_0202F038: .word 0x00000C54
+
+ thumb_func_start FUN_0202F03C
+FUN_0202F03C: ; 0x0202F03C
+ ldr r0, _0202F054 ; =0x021C59E8
+ ldr r1, [r0, #0x8]
+ cmp r1, #0x0
+ beq _0202F04E
+ ldr r0, _0202F058 ; =0x00000DAD
+ ldrb r0, [r1, r0]
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x1f
+ bx lr
+_0202F04E:
+ mov r0, #0x0
+ bx lr
+ nop
+_0202F054: .word 0x021C59E8
+_0202F058: .word 0x00000DAD
+
+ thumb_func_start FUN_0202F05C
+FUN_0202F05C: ; 0x0202F05C
+ ldr r0, _0202F070 ; =0x021C59E8
+ ldr r3, [r0, #0x8]
+ cmp r3, #0x0
+ beq _0202F06E
+ ldr r1, _0202F074 ; =0x00000DAD
+ mov r0, #0x10
+ ldrb r2, [r3, r1]
+ orr r0, r2
+ strb r0, [r3, r1]
+_0202F06E:
+ bx lr
+ .balign 4
+_0202F070: .word 0x021C59E8
+_0202F074: .word 0x00000DAD
+
+ thumb_func_start FUN_0202F078
+FUN_0202F078: ; 0x0202F078
+ ldr r1, _0202F088 ; =0x021C59E8
+ ldr r3, _0202F08C ; =MI_CpuCopy8
+ ldr r2, [r1, #0x8]
+ ldr r1, _0202F090 ; =0x00000CA8
+ add r1, r2, r1
+ mov r2, #0x8
+ bx r3
+ nop
+_0202F088: .word 0x021C59E8
+_0202F08C: .word MI_CpuCopy8
+_0202F090: .word 0x00000CA8
+
+ thumb_func_start FUN_0202F094
+FUN_0202F094: ; 0x0202F094
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02023AC4
+ ldr r1, _0202F0B0 ; =0x021C59E8
+ add r2, r0, #0x0
+ ldr r3, [r1, #0x8]
+ ldr r1, _0202F0B4 ; =0x00000CBC
+ add r0, r4, #0x0
+ ldr r1, [r3, r1]
+ blx MI_CpuCopy8
+ pop {r4, pc}
+ nop
+_0202F0B0: .word 0x021C59E8
+_0202F0B4: .word 0x00000CBC
+
+ thumb_func_start FUN_0202F0B8
+FUN_0202F0B8: ; 0x0202F0B8
+ push {r4, lr}
+ bl FUN_0202EA9C
+ ldr r3, _0202F0D4 ; =0x021C59E8
+ ldr r2, _0202F0D8 ; =0x00000CC4
+ ldr r4, [r3, #0x8]
+ ldrh r3, [r3, #0x0]
+ add r0, r4, r2
+ sub r2, r2, #0x4
+ ldr r2, [r4, r2]
+ mov r1, #0x5c
+ bl FUN_0202D240
+ pop {r4, pc}
+ .balign 4
+_0202F0D4: .word 0x021C59E8
+_0202F0D8: .word 0x00000CC4
+
+ thumb_func_start FUN_0202F0DC
+FUN_0202F0DC: ; 0x0202F0DC
+ push {r4-r6, lr}
+ mov r5, #0x0
+ add r6, r0, #0x0
+ add r4, r5, #0x0
+_0202F0E4:
+ add r0, r4, #0x0
+ bl FUN_0202EF44
+ cmp r0, #0x0
+ beq _0202F0F8
+ ldrb r1, [r0, #0x4]
+ cmp r1, r6
+ bne _0202F0F8
+ ldrb r0, [r0, #0x6]
+ add r5, r5, r0
+_0202F0F8:
+ add r4, r4, #0x1
+ cmp r4, #0x10
+ blt _0202F0E4
+ add r0, r5, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202F104
+FUN_0202F104: ; 0x0202F104
+ ldr r3, _0202F108 ; =FUN_0202D2D0
+ bx r3
+ .balign 4
+_0202F108: .word FUN_0202D2D0
+
+ thumb_func_start FUN_0202F10C
+FUN_0202F10C: ; 0x0202F10C
+ push {r3, lr}
+ ldr r1, _0202F120 ; =0x021C59E8
+ mov r2, #0x54
+ ldr r1, [r1, #0x8]
+ blx MI_CpuCopy8
+ bl FUN_0202F0B8
+ pop {r3, pc}
+ nop
+_0202F120: .word 0x021C59E8
+
+ thumb_func_start FUN_0202F124
+FUN_0202F124: ; 0x0202F124
+ ldr r1, _0202F148 ; =0x021C59E8
+ ldr r3, [r1, #0x8]
+ cmp r3, #0x0
+ beq _0202F144
+ lsl r1, r0, #0x1
+ add r2, r3, r1
+ ldr r1, _0202F14C ; =0x00000C84
+ ldrh r1, [r2, r1]
+ cmp r1, #0x0
+ beq _0202F144
+ mov r1, #0xc0
+ add r3, #0xa4
+ mul r1, r0
+ add r0, r3, r1
+ add r0, #0x8
+ bx lr
+_0202F144:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+_0202F148: .word 0x021C59E8
+_0202F14C: .word 0x00000C84
+
+ thumb_func_start FUN_0202F150
+FUN_0202F150: ; 0x0202F150
+ push {r4-r6, lr}
+ add r6, r1, #0x0
+ mov r4, #0x0
+ ldr r1, _0202F2BC ; =0x021C59F4
+ cmp r0, #0x0
+ strb r4, [r1, #0x0]
+ beq _0202F25C
+ bl FUN_02033534
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_0202D858
+ add r5, r0, #0x1
+ ldr r0, _0202F2BC ; =0x021C59F4
+ ldr r0, [r0, #0x4]
+ cmp r0, #0x0
+ beq _0202F178
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_0202F178:
+ mov r0, #0xf
+ bl FUN_02031480
+ ldr r1, _0202F2C0 ; =0x0000068C
+ mov r0, #0xf
+ bl FUN_02016998
+ ldr r1, _0202F2BC ; =0x021C59F4
+ ldr r2, _0202F2C0 ; =0x0000068C
+ str r0, [r1, #0x4]
+ add r1, r4, #0x0
+ blx MI_CpuFill8
+ ldr r2, _0202F2BC ; =0x021C59F4
+ ldr r1, _0202F2C4 ; =0x00000658
+ ldr r0, [r2, #0x4]
+ add r6, #0x40
+ str r6, [r0, r1]
+ add r0, r1, #0x0
+ ldr r3, [r2, #0x4]
+ add r6, r4, #0x0
+ add r0, #0x25
+ strb r6, [r3, r0]
+ add r0, r1, #0x0
+ ldr r3, [r2, #0x4]
+ mov r6, #0x1b
+ add r0, #0x26
+ strb r6, [r3, r0]
+ ldr r2, [r2, #0x4]
+ mov r0, #0xf
+ ldr r1, [r2, r1]
+ lsl r1, r1, #0x1
+ bl FUN_02016998
+ ldr r2, _0202F2BC ; =0x021C59F4
+ ldr r1, _0202F2C8 ; =0x0000045C
+ ldr r3, [r2, #0x4]
+ str r0, [r3, r1]
+ ldr r2, [r2, #0x4]
+ ldr r1, _0202F2C4 ; =0x00000658
+ mov r0, #0xf
+ ldr r1, [r2, r1]
+ bl FUN_02016998
+ ldr r2, _0202F2BC ; =0x021C59F4
+ mov r1, #0x46
+ ldr r3, [r2, #0x4]
+ lsl r1, r1, #0x4
+ str r0, [r3, r1]
+ ldr r2, [r2, #0x4]
+ ldr r1, _0202F2C4 ; =0x00000658
+ mov r0, #0xf
+ ldr r1, [r2, r1]
+ mul r1, r5
+ bl FUN_02016998
+ ldr r2, _0202F2BC ; =0x021C59F4
+ ldr r1, _0202F2CC ; =0x00000458
+ ldr r3, [r2, #0x4]
+ str r0, [r3, r1]
+ ldr r2, [r2, #0x4]
+ ldr r1, _0202F2C4 ; =0x00000658
+ mov r0, #0xf
+ ldr r1, [r2, r1]
+ mul r1, r5
+ bl FUN_02016998
+ ldr r1, _0202F2BC ; =0x021C59F4
+ ldr r2, [r1, #0x4]
+ ldr r1, _0202F2D0 ; =0x00000454
+ str r0, [r2, r1]
+ bl FUN_02033534
+ cmp r0, #0xa
+ ldr r2, _0202F2D4 ; =0x0000054C
+ bne _0202F236
+ ldr r0, _0202F2BC ; =0x021C59F4
+ mov r1, #0x64
+ ldr r3, [r0, #0x4]
+ add r0, r3, r2
+ sub r2, #0xe8
+ add r2, r3, r2
+ bl FUN_0202D7D8
+ ldr r0, _0202F2BC ; =0x021C59F4
+ mov r1, #0x32
+ ldr r3, [r0, #0x4]
+ ldr r2, _0202F2D8 ; =0x0000056C
+ lsl r1, r1, #0x4
+ add r0, r3, r2
+ sub r2, #0x90
+ add r2, r3, r2
+ bl FUN_0202D7D8
+ b _0202F268
+_0202F236:
+ ldr r0, _0202F2BC ; =0x021C59F4
+ mov r1, #0x14
+ ldr r3, [r0, #0x4]
+ add r0, r3, r2
+ sub r2, #0xe8
+ add r2, r3, r2
+ bl FUN_0202D7D8
+ ldr r0, _0202F2BC ; =0x021C59F4
+ add r1, r6, #0x0
+ ldr r3, [r0, #0x4]
+ ldr r2, _0202F2D8 ; =0x0000056C
+ add r1, #0xfd
+ add r0, r3, r2
+ sub r2, #0x90
+ add r2, r3, r2
+ bl FUN_0202D7D8
+ b _0202F268
+_0202F25C:
+ ldr r0, [r1, #0x4]
+ mov r4, #0x1
+ cmp r0, #0x0
+ bne _0202F268
+ bl ErrorHandling
+_0202F268:
+ ldr r2, _0202F2BC ; =0x021C59F4
+ ldr r1, _0202F2DC ; =0x0000065C
+ ldr r3, [r2, #0x4]
+ mov r0, #0x0
+ strh r0, [r3, r1]
+ mov r5, #0xff
+ add r1, #0x1b
+_0202F276:
+ ldr r3, [r2, #0x4]
+ add r3, r3, r0
+ add r0, r0, #0x1
+ strb r5, [r3, r1]
+ cmp r0, #0x4
+ blt _0202F276
+ cmp r4, #0x0
+ bne _0202F28A
+ bl FUN_0202F2F0
+_0202F28A:
+ ldr r0, _0202F2BC ; =0x021C59F4
+ ldr r1, [r0, #0x4]
+ ldr r0, _0202F2E0 ; =0x000005F8
+ add r0, r1, r0
+ bl FUN_020312BC
+ cmp r4, #0x0
+ bne _0202F2AC
+ mov r1, #0x0
+ ldr r0, _0202F2E4 ; =FUN_0202FB20
+ add r2, r1, #0x0
+ bl FUN_0200CA60
+ ldr r1, _0202F2BC ; =0x021C59F4
+ ldr r2, [r1, #0x4]
+ ldr r1, _0202F2E8 ; =0x00000548
+ str r0, [r2, r1]
+_0202F2AC:
+ ldr r0, _0202F2BC ; =0x021C59F4
+ mov r2, #0x0
+ ldr r1, [r0, #0x4]
+ ldr r0, _0202F2EC ; =0x00000687
+ strb r2, [r1, r0]
+ mov r0, #0x1
+ pop {r4-r6, pc}
+ nop
+_0202F2BC: .word 0x021C59F4
+_0202F2C0: .word 0x0000068C
+_0202F2C4: .word 0x00000658
+_0202F2C8: .word 0x0000045C
+_0202F2CC: .word 0x00000458
+_0202F2D0: .word 0x00000454
+_0202F2D4: .word 0x0000054C
+_0202F2D8: .word 0x0000056C
+_0202F2DC: .word 0x0000065C
+_0202F2E0: .word 0x000005F8
+_0202F2E4: .word FUN_0202FB20
+_0202F2E8: .word 0x00000548
+_0202F2EC: .word 0x00000687
+
+ thumb_func_start FUN_0202F2F0
+FUN_0202F2F0: ; 0x0202F2F0
+ push {r3-r7, lr}
+ ldr r3, _0202F54C ; =0x021C59F4
+ ldr r2, _0202F550 ; =0x0000062C
+ ldr r1, [r3, #0x4]
+ mov r0, #0x0
+ strb r0, [r1, r2]
+ ldr r4, [r3, #0x4]
+ add r1, r2, #0x1
+ strb r0, [r4, r1]
+ add r1, r2, #0x0
+ ldr r4, [r3, #0x4]
+ add r1, #0x53
+ strb r0, [r4, r1]
+ ldr r1, [r3, #0x4]
+ add r2, #0x54
+ strb r0, [r1, r2]
+ bl FUN_02033534
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_0202D858
+ add r6, r0, #0x1
+ ldr r0, _0202F54C ; =0x021C59F4
+ ldr r2, _0202F554 ; =0x00000658
+ ldr r3, [r0, #0x4]
+ ldr r0, _0202F558 ; =0x00000458
+ mov r1, #0x0
+ ldr r0, [r3, r0]
+ ldr r3, [r3, r2]
+ add r2, r3, #0x0
+ mul r2, r6
+ blx MI_CpuFill8
+ mov r4, #0x0
+ cmp r6, #0x0
+ ble _0202F360
+ ldr r7, _0202F54C ; =0x021C59F4
+ add r5, r4, #0x0
+_0202F33E:
+ ldr r3, [r7, #0x4]
+ ldr r0, _0202F554 ; =0x00000658
+ ldr r1, _0202F558 ; =0x00000458
+ ldr r2, [r3, r0]
+ ldr r0, _0202F55C ; =0x000004E8
+ add r0, r3, r0
+ ldr r3, [r3, r1]
+ add r1, r4, #0x0
+ mul r1, r2
+ add r0, r0, r5
+ add r1, r3, r1
+ bl FUN_0202D394
+ add r4, r4, #0x1
+ add r5, #0xc
+ cmp r4, r6
+ blt _0202F33E
+_0202F360:
+ ldr r0, _0202F54C ; =0x021C59F4
+ ldr r2, _0202F554 ; =0x00000658
+ ldr r3, [r0, #0x4]
+ ldr r0, _0202F560 ; =0x00000454
+ mov r1, #0x0
+ ldr r0, [r3, r0]
+ ldr r3, [r3, r2]
+ add r2, r3, #0x0
+ mul r2, r6
+ blx MI_CpuFill8
+ mov r5, #0x0
+ cmp r6, #0x0
+ ble _0202F3A2
+ ldr r7, _0202F54C ; =0x021C59F4
+ add r4, r5, #0x0
+_0202F380:
+ ldr r3, [r7, #0x4]
+ ldr r0, _0202F554 ; =0x00000658
+ ldr r1, _0202F560 ; =0x00000454
+ ldr r2, [r3, r0]
+ ldr r0, _0202F564 ; =0x0000047C
+ add r0, r3, r0
+ ldr r3, [r3, r1]
+ add r1, r5, #0x0
+ mul r1, r2
+ add r0, r0, r4
+ add r1, r3, r1
+ bl FUN_0202D394
+ add r5, r5, #0x1
+ add r4, #0xc
+ cmp r5, r6
+ blt _0202F380
+_0202F3A2:
+ ldr r0, _0202F54C ; =0x021C59F4
+ mov r2, #0x6
+ ldr r1, [r0, #0x4]
+ mov r0, #0xb5
+ lsl r0, r0, #0x2
+ add r0, r1, r0
+ mov r1, #0x0
+ lsl r2, r2, #0x6
+ blx MI_CpuFill8
+ ldr r0, _0202F54C ; =0x021C59F4
+ mov r1, #0xb5
+ ldr r2, [r0, #0x4]
+ ldr r0, _0202F568 ; =0x000004DC
+ lsl r1, r1, #0x2
+ add r0, r2, r0
+ add r1, r2, r1
+ mov r2, #0x6
+ lsl r2, r2, #0x6
+ bl FUN_0202D394
+ mov r0, #0xee
+ add r2, r0, #0x0
+ mov r3, #0x85
+ ldr r4, _0202F54C ; =0x021C59F4
+ mov r1, #0x0
+ add r2, #0x66
+ lsl r3, r3, #0x2
+_0202F3DA:
+ ldr r5, [r4, #0x4]
+ add r5, r5, r1
+ strb r0, [r5, r2]
+ ldr r5, [r4, #0x4]
+ add r5, r5, r1
+ add r1, r1, #0x1
+ strb r0, [r5, r3]
+ cmp r1, #0xc0
+ blt _0202F3DA
+ ldr r0, _0202F54C ; =0x021C59F4
+ mov r2, #0x42
+ ldr r0, [r0, #0x4]
+ mov r1, #0x0
+ add r0, #0x4c
+ lsl r2, r2, #0x2
+ blx MI_CpuFill8
+ ldr r0, _0202F54C ; =0x021C59F4
+ mov r2, #0x42
+ ldr r1, [r0, #0x4]
+ ldr r0, _0202F56C ; =0x00000464
+ lsl r2, r2, #0x2
+ add r0, r1, r0
+ add r1, #0x4c
+ bl FUN_0202D394
+ ldr r1, _0202F54C ; =0x021C59F4
+ mov r2, #0xff
+ ldr r0, [r1, #0x4]
+ mov r3, #0x1
+ strb r2, [r0, #0x0]
+ ldr r0, [r1, #0x4]
+ add r0, #0x26
+ strb r2, [r0, #0x0]
+ mov r2, #0xee
+_0202F420:
+ ldr r0, [r1, #0x4]
+ strb r2, [r0, r3]
+ ldr r0, [r1, #0x4]
+ add r0, r0, r3
+ add r0, #0x26
+ add r3, r3, #0x1
+ strb r2, [r0, #0x0]
+ cmp r3, #0x26
+ blt _0202F420
+ ldr r0, _0202F54C ; =0x021C59F4
+ ldr r2, _0202F554 ; =0x00000658
+ ldr r3, [r0, #0x4]
+ ldr r0, _0202F570 ; =0x0000045C
+ ldr r2, [r3, r2]
+ ldr r0, [r3, r0]
+ mov r1, #0x0
+ lsl r2, r2, #0x1
+ blx MI_CpuFill8
+ ldr r0, _0202F54C ; =0x021C59F4
+ mov r1, #0x47
+ ldr r3, [r0, #0x4]
+ ldr r2, _0202F554 ; =0x00000658
+ lsl r1, r1, #0x4
+ add r0, r3, r1
+ sub r1, #0x14
+ ldr r2, [r3, r2]
+ ldr r1, [r3, r1]
+ lsl r2, r2, #0x1
+ bl FUN_0202D394
+ mov r2, #0x0
+ ldr r0, _0202F54C ; =0x021C59F4
+ ldr r1, _0202F574 ; =0x00000684
+ ldr r3, [r0, #0x4]
+ mov r12, r2
+ strb r2, [r3, r1]
+ ldr r3, [r0, #0x4]
+ add r1, r1, #0x1
+ strb r2, [r3, r1]
+ add r1, r2, #0x0
+ add r7, r2, #0x0
+ add r6, r2, #0x0
+_0202F476:
+ ldr r3, [r0, #0x4]
+ add r4, r3, r2
+ ldr r3, _0202F578 ; =0x0000065F
+ strb r6, [r4, r3]
+ ldr r3, [r0, #0x4]
+ ldr r4, _0202F57C ; =0x00000667
+ add r5, r3, r2
+ mov r3, #0x1
+ strb r3, [r5, r4]
+ ldr r3, [r0, #0x4]
+ add r4, #0x8
+ add r5, r3, r2
+ mov r3, #0x1
+ strb r3, [r5, r4]
+ ldr r4, [r0, #0x4]
+ mov r3, r12
+ add r4, r4, r3
+ mov r3, #0x61
+ lsl r3, r3, #0x4
+ strh r6, [r4, r3]
+ ldr r3, [r0, #0x4]
+ mov r4, #0xee
+ add r5, r3, r1
+ ldr r3, _0202F580 ; =0x00000596
+ add r2, r2, #0x1
+ strb r4, [r5, r3]
+ ldr r3, [r0, #0x4]
+ ldr r4, _0202F584 ; =0x0000FFFF
+ add r5, r3, r1
+ ldr r3, _0202F588 ; =0x00000594
+ strh r4, [r5, r3]
+ ldr r3, [r0, #0x4]
+ add r4, r3, r1
+ mov r3, #0x59
+ lsl r3, r3, #0x4
+ str r6, [r4, r3]
+ ldr r3, [r0, #0x4]
+ add r4, r3, r1
+ ldr r3, _0202F58C ; =0x0000058C
+ add r1, #0xc
+ str r6, [r4, r3]
+ ldr r3, [r0, #0x4]
+ add r4, r3, r7
+ ldr r3, _0202F590 ; =0x00000638
+ add r7, r7, #0x4
+ str r6, [r4, r3]
+ mov r3, r12
+ add r3, r3, #0x2
+ mov r12, r3
+ cmp r2, #0x8
+ blt _0202F476
+ ldr r1, _0202F54C ; =0x021C59F4
+ ldr r0, _0202F594 ; =0x00000634
+ ldr r2, [r1, #0x4]
+ sub r3, r0, #0x4
+ str r6, [r2, r0]
+ ldr r4, [r1, #0x4]
+ mov r2, #0x1
+ str r2, [r4, r3]
+ add r3, r0, #0x0
+ ldr r4, [r1, #0x4]
+ sub r3, #0x3e
+ mov r2, #0xee
+ strb r2, [r4, r3]
+ add r3, r0, #0x0
+ ldr r4, [r1, #0x4]
+ ldr r2, _0202F584 ; =0x0000FFFF
+ sub r3, #0x40
+ strh r2, [r4, r3]
+ add r2, r0, #0x0
+ ldr r3, [r1, #0x4]
+ sub r2, #0x44
+ str r6, [r3, r2]
+ add r2, r0, #0x0
+ ldr r3, [r1, #0x4]
+ sub r2, #0x48
+ str r6, [r3, r2]
+ add r3, r0, #0x0
+ ldr r4, [r1, #0x4]
+ add r3, #0x4e
+ mov r2, #0x1
+ strb r2, [r4, r3]
+ add r3, r0, #0x0
+ ldr r4, [r1, #0x4]
+ add r3, #0x4f
+ strb r2, [r4, r3]
+ ldr r2, _0202F598 ; =0x02105D58
+ mov r3, #0x4
+ strb r3, [r2, #0x1]
+ strb r3, [r2, #0x0]
+ ldr r1, [r1, #0x4]
+ sub r0, #0xe8
+ add r0, r1, r0
+ bl FUN_0202D804
+ ldr r0, _0202F54C ; =0x021C59F4
+ ldr r1, [r0, #0x4]
+ ldr r0, _0202F59C ; =0x0000056C
+ add r0, r1, r0
+ bl FUN_0202D804
+ ldr r0, _0202F54C ; =0x021C59F4
+ mov r2, #0x0
+ ldr r1, [r0, #0x4]
+ ldr r0, _0202F5A0 ; =0x00000688
+ strb r2, [r1, r0]
+ pop {r3-r7, pc}
+ .balign 4
+_0202F54C: .word 0x021C59F4
+_0202F550: .word 0x0000062C
+_0202F554: .word 0x00000658
+_0202F558: .word 0x00000458
+_0202F55C: .word 0x000004E8
+_0202F560: .word 0x00000454
+_0202F564: .word 0x0000047C
+_0202F568: .word 0x000004DC
+_0202F56C: .word 0x00000464
+_0202F570: .word 0x0000045C
+_0202F574: .word 0x00000684
+_0202F578: .word 0x0000065F
+_0202F57C: .word 0x00000667
+_0202F580: .word 0x00000596
+_0202F584: .word 0x0000FFFF
+_0202F588: .word 0x00000594
+_0202F58C: .word 0x0000058C
+_0202F590: .word 0x00000638
+_0202F594: .word 0x00000634
+_0202F598: .word 0x02105D58
+_0202F59C: .word 0x0000056C
+_0202F5A0: .word 0x00000688
+
+ thumb_func_start FUN_0202F5A4
+FUN_0202F5A4: ; 0x0202F5A4
+ push {r3-r7, lr}
+ ldr r1, _0202F7D4 ; =0x021C59F4
+ ldr r0, _0202F7D8 ; =0x0000062C
+ ldr r2, [r1, #0x4]
+ mov r3, #0x0
+ strb r3, [r2, r0]
+ ldr r1, [r1, #0x4]
+ add r0, r0, #0x1
+ strb r3, [r1, r0]
+ bl FUN_02033534
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_0202D858
+ add r6, r0, #0x1
+ ldr r0, _0202F7D4 ; =0x021C59F4
+ ldr r2, _0202F7DC ; =0x00000658
+ ldr r3, [r0, #0x4]
+ ldr r0, _0202F7E0 ; =0x00000458
+ mov r1, #0x0
+ ldr r0, [r3, r0]
+ ldr r3, [r3, r2]
+ add r2, r3, #0x0
+ mul r2, r6
+ blx MI_CpuFill8
+ mov r4, #0x0
+ cmp r6, #0x0
+ ble _0202F606
+ ldr r7, _0202F7D4 ; =0x021C59F4
+ add r5, r4, #0x0
+_0202F5E4:
+ ldr r3, [r7, #0x4]
+ ldr r0, _0202F7DC ; =0x00000658
+ ldr r1, _0202F7E0 ; =0x00000458
+ ldr r2, [r3, r0]
+ ldr r0, _0202F7E4 ; =0x000004E8
+ add r0, r3, r0
+ ldr r3, [r3, r1]
+ add r1, r4, #0x0
+ mul r1, r2
+ add r0, r0, r5
+ add r1, r3, r1
+ bl FUN_0202D394
+ add r4, r4, #0x1
+ add r5, #0xc
+ cmp r4, r6
+ blt _0202F5E4
+_0202F606:
+ ldr r0, _0202F7D4 ; =0x021C59F4
+ ldr r2, _0202F7DC ; =0x00000658
+ ldr r3, [r0, #0x4]
+ ldr r0, _0202F7E8 ; =0x00000454
+ mov r1, #0x0
+ ldr r0, [r3, r0]
+ ldr r3, [r3, r2]
+ add r2, r3, #0x0
+ mul r2, r6
+ blx MI_CpuFill8
+ mov r5, #0x0
+ cmp r6, #0x0
+ ble _0202F648
+ ldr r7, _0202F7D4 ; =0x021C59F4
+ add r4, r5, #0x0
+_0202F626:
+ ldr r3, [r7, #0x4]
+ ldr r0, _0202F7DC ; =0x00000658
+ ldr r1, _0202F7E8 ; =0x00000454
+ ldr r2, [r3, r0]
+ ldr r0, _0202F7EC ; =0x0000047C
+ add r0, r3, r0
+ ldr r3, [r3, r1]
+ add r1, r5, #0x0
+ mul r1, r2
+ add r0, r0, r4
+ add r1, r3, r1
+ bl FUN_0202D394
+ add r5, r5, #0x1
+ add r4, #0xc
+ cmp r5, r6
+ blt _0202F626
+_0202F648:
+ ldr r0, _0202F7D4 ; =0x021C59F4
+ mov r2, #0x6
+ ldr r1, [r0, #0x4]
+ mov r0, #0xb5
+ lsl r0, r0, #0x2
+ add r0, r1, r0
+ mov r1, #0x0
+ lsl r2, r2, #0x6
+ blx MI_CpuFill8
+ ldr r0, _0202F7D4 ; =0x021C59F4
+ mov r1, #0xb5
+ ldr r2, [r0, #0x4]
+ ldr r0, _0202F7F0 ; =0x000004DC
+ lsl r1, r1, #0x2
+ add r0, r2, r0
+ add r1, r2, r1
+ mov r2, #0x6
+ lsl r2, r2, #0x6
+ bl FUN_0202D394
+ mov r0, #0xee
+ add r2, r0, #0x0
+ mov r3, #0x85
+ ldr r4, _0202F7D4 ; =0x021C59F4
+ mov r1, #0x0
+ add r2, #0x66
+ lsl r3, r3, #0x2
+_0202F680:
+ ldr r5, [r4, #0x4]
+ add r5, r5, r1
+ strb r0, [r5, r2]
+ ldr r5, [r4, #0x4]
+ add r5, r5, r1
+ add r1, r1, #0x1
+ strb r0, [r5, r3]
+ cmp r1, #0xc0
+ blt _0202F680
+ ldr r0, _0202F7D4 ; =0x021C59F4
+ mov r2, #0x42
+ ldr r0, [r0, #0x4]
+ mov r1, #0x0
+ add r0, #0x4c
+ lsl r2, r2, #0x2
+ blx MI_CpuFill8
+ ldr r0, _0202F7D4 ; =0x021C59F4
+ mov r2, #0x42
+ ldr r1, [r0, #0x4]
+ ldr r0, _0202F7F4 ; =0x00000464
+ lsl r2, r2, #0x2
+ add r0, r1, r0
+ add r1, #0x4c
+ bl FUN_0202D394
+ ldr r1, _0202F7D4 ; =0x021C59F4
+ mov r2, #0xff
+ ldr r0, [r1, #0x4]
+ mov r3, #0x1
+ strb r2, [r0, #0x0]
+ ldr r0, [r1, #0x4]
+ add r0, #0x26
+ strb r2, [r0, #0x0]
+ mov r2, #0xee
+_0202F6C6:
+ ldr r0, [r1, #0x4]
+ strb r2, [r0, r3]
+ ldr r0, [r1, #0x4]
+ add r0, r0, r3
+ add r0, #0x26
+ add r3, r3, #0x1
+ strb r2, [r0, #0x0]
+ cmp r3, #0x26
+ blt _0202F6C6
+ ldr r0, _0202F7D4 ; =0x021C59F4
+ ldr r2, _0202F7DC ; =0x00000658
+ ldr r3, [r0, #0x4]
+ ldr r0, _0202F7F8 ; =0x0000045C
+ ldr r2, [r3, r2]
+ ldr r0, [r3, r0]
+ mov r1, #0x0
+ lsl r2, r2, #0x1
+ blx MI_CpuFill8
+ ldr r0, _0202F7D4 ; =0x021C59F4
+ mov r1, #0x47
+ ldr r3, [r0, #0x4]
+ ldr r2, _0202F7DC ; =0x00000658
+ lsl r1, r1, #0x4
+ add r0, r3, r1
+ sub r1, #0x14
+ ldr r2, [r3, r2]
+ ldr r1, [r3, r1]
+ lsl r2, r2, #0x1
+ bl FUN_0202D394
+ ldr r0, _0202F7D4 ; =0x021C59F4
+ mov r3, #0x0
+ ldr r2, [r0, #0x4]
+ ldr r1, _0202F7FC ; =0x00000684
+ add r7, r3, #0x0
+ strb r3, [r2, r1]
+ ldr r2, [r0, #0x4]
+ add r1, r1, #0x1
+ strb r3, [r2, r1]
+ add r1, r3, #0x0
+ add r2, r3, #0x0
+_0202F71A:
+ ldr r4, [r0, #0x4]
+ add r5, r4, r3
+ ldr r4, _0202F800 ; =0x0000065F
+ strb r7, [r5, r4]
+ ldr r4, [r0, #0x4]
+ ldr r5, _0202F804 ; =0x00000667
+ add r6, r4, r3
+ mov r4, #0x1
+ strb r4, [r6, r5]
+ ldr r4, [r0, #0x4]
+ add r5, #0x8
+ add r6, r4, r3
+ mov r4, #0x1
+ strb r4, [r6, r5]
+ ldr r4, [r0, #0x4]
+ add r3, r3, #0x1
+ add r5, r4, r1
+ mov r4, #0x61
+ lsl r4, r4, #0x4
+ strh r7, [r5, r4]
+ ldr r4, [r0, #0x4]
+ ldr r5, _0202F808 ; =0x00000596
+ add r6, r4, r2
+ mov r4, #0xee
+ strb r4, [r6, r5]
+ ldr r4, [r0, #0x4]
+ ldr r5, _0202F80C ; =0x0000FFFF
+ add r6, r4, r2
+ ldr r4, _0202F810 ; =0x00000594
+ add r1, r1, #0x2
+ strh r5, [r6, r4]
+ ldr r4, [r0, #0x4]
+ add r5, r4, r2
+ mov r4, #0x59
+ lsl r4, r4, #0x4
+ str r7, [r5, r4]
+ ldr r4, [r0, #0x4]
+ add r5, r4, r2
+ ldr r4, _0202F814 ; =0x0000058C
+ add r2, #0xc
+ str r7, [r5, r4]
+ cmp r3, #0x8
+ blt _0202F71A
+ ldr r1, _0202F7D4 ; =0x021C59F4
+ add r0, r4, #0x0
+ ldr r3, [r1, #0x4]
+ add r0, #0xa4
+ mov r2, #0x1
+ str r2, [r3, r0]
+ add r3, r0, #0x0
+ ldr r4, [r1, #0x4]
+ sub r3, #0x3a
+ mov r2, #0xee
+ strb r2, [r4, r3]
+ add r3, r0, #0x0
+ ldr r4, [r1, #0x4]
+ ldr r2, _0202F80C ; =0x0000FFFF
+ sub r3, #0x3c
+ strh r2, [r4, r3]
+ add r2, r0, #0x0
+ ldr r3, [r1, #0x4]
+ sub r2, #0x40
+ str r7, [r3, r2]
+ add r2, r0, #0x0
+ ldr r3, [r1, #0x4]
+ sub r2, #0x44
+ str r7, [r3, r2]
+ add r3, r0, #0x0
+ ldr r4, [r1, #0x4]
+ add r3, #0x52
+ mov r2, #0x1
+ strb r2, [r4, r3]
+ add r3, r0, #0x0
+ ldr r4, [r1, #0x4]
+ add r3, #0x53
+ strb r2, [r4, r3]
+ ldr r1, [r1, #0x4]
+ sub r0, #0xe4
+ add r0, r1, r0
+ bl FUN_0202D804
+ ldr r0, _0202F7D4 ; =0x021C59F4
+ ldr r1, [r0, #0x4]
+ ldr r0, _0202F818 ; =0x0000056C
+ add r0, r1, r0
+ bl FUN_0202D804
+ ldr r0, _0202F7D4 ; =0x021C59F4
+ mov r2, #0x0
+ ldr r1, [r0, #0x4]
+ ldr r0, _0202F81C ; =0x00000688
+ strb r2, [r1, r0]
+ pop {r3-r7, pc}
+ .balign 4
+_0202F7D4: .word 0x021C59F4
+_0202F7D8: .word 0x0000062C
+_0202F7DC: .word 0x00000658
+_0202F7E0: .word 0x00000458
+_0202F7E4: .word 0x000004E8
+_0202F7E8: .word 0x00000454
+_0202F7EC: .word 0x0000047C
+_0202F7F0: .word 0x000004DC
+_0202F7F4: .word 0x00000464
+_0202F7F8: .word 0x0000045C
+_0202F7FC: .word 0x00000684
+_0202F800: .word 0x0000065F
+_0202F804: .word 0x00000667
+_0202F808: .word 0x00000596
+_0202F80C: .word 0x0000FFFF
+_0202F810: .word 0x00000594
+_0202F814: .word 0x0000058C
+_0202F818: .word 0x0000056C
+_0202F81C: .word 0x00000688
+
+ thumb_func_start FUN_0202F820
+FUN_0202F820: ; 0x0202F820
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, _0202F8B8 ; =0x021C59F4
+ ldr r3, _0202F8BC ; =0x0000065F
+ ldr r1, [r0, #0x4]
+ mov r2, #0x0
+ add r1, r1, r5
+ strb r2, [r1, r3]
+ ldr r4, [r0, #0x4]
+ mov r1, #0x1
+ add r6, r4, r5
+ add r4, r3, #0x0
+ add r4, #0x8
+ strb r1, [r6, r4]
+ ldr r6, [r0, #0x4]
+ lsl r4, r5, #0x2
+ add r6, r6, r4
+ add r4, r3, #0x0
+ sub r4, #0x27
+ str r2, [r6, r4]
+ ldr r2, [r0, #0x4]
+ add r4, r2, r5
+ add r2, r3, #0x0
+ add r2, #0x10
+ strb r1, [r4, r2]
+ ldr r1, [r0, #0x4]
+ sub r0, r3, #0x7
+ ldr r2, [r1, r0]
+ ldr r3, _0202F8C0 ; =0x0000047C
+ mov r0, #0xc
+ add r4, r5, #0x0
+ mul r4, r0
+ add r0, r1, r3
+ sub r3, #0x28
+ ldr r3, [r1, r3]
+ add r1, r5, #0x0
+ mul r1, r2
+ add r0, r0, r4
+ add r1, r3, r1
+ bl FUN_0202D394
+ ldr r0, _0202F8B8 ; =0x021C59F4
+ ldr r3, _0202F8C4 ; =0x000004E8
+ ldr r1, [r0, #0x4]
+ ldr r0, _0202F8C8 ; =0x00000658
+ ldr r2, [r1, r0]
+ add r0, r1, r3
+ sub r3, #0x90
+ ldr r3, [r1, r3]
+ add r1, r5, #0x0
+ mul r1, r2
+ add r0, r0, r4
+ add r1, r3, r1
+ bl FUN_0202D394
+ ldr r3, _0202F8B8 ; =0x021C59F4
+ ldr r2, _0202F8CC ; =0x00000596
+ ldr r0, [r3, #0x4]
+ mov r1, #0xee
+ add r0, r0, r4
+ strb r1, [r0, r2]
+ ldr r0, [r3, #0x4]
+ ldr r5, _0202F8D0 ; =0x0000FFFF
+ add r1, r0, r4
+ sub r0, r2, #0x2
+ strh r5, [r1, r0]
+ ldr r1, [r3, #0x4]
+ mov r0, #0x0
+ add r5, r1, r4
+ sub r1, r2, #0x6
+ str r0, [r5, r1]
+ ldr r1, [r3, #0x4]
+ sub r2, #0xa
+ add r1, r1, r4
+ str r0, [r1, r2]
+ pop {r4-r6, pc}
+ .balign 4
+_0202F8B8: .word 0x021C59F4
+_0202F8BC: .word 0x0000065F
+_0202F8C0: .word 0x0000047C
+_0202F8C4: .word 0x000004E8
+_0202F8C8: .word 0x00000658
+_0202F8CC: .word 0x00000596
+_0202F8D0: .word 0x0000FFFF
+
+ thumb_func_start FUN_0202F8D4
+FUN_0202F8D4: ; 0x0202F8D4
+ push {r4-r6, lr}
+ ldr r4, _0202F908 ; =0x021C59F4
+ ldr r6, _0202F90C ; =0x00000667
+ mov r5, #0x1
+_0202F8DC:
+ lsl r0, r5, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_02030E7C
+ cmp r0, #0x0
+ bne _0202F900
+ ldr r0, [r4, #0x4]
+ add r0, r0, r5
+ ldrb r0, [r0, r6]
+ cmp r0, #0x0
+ bne _0202F900
+ bl FUN_02031280
+ cmp r0, #0x0
+ bne _0202F900
+ add r0, r5, #0x0
+ bl FUN_0202F820
+_0202F900:
+ add r5, r5, #0x1
+ cmp r5, #0x8
+ blt _0202F8DC
+ pop {r4-r6, pc}
+ .balign 4
+_0202F908: .word 0x021C59F4
+_0202F90C: .word 0x00000667
+
+ thumb_func_start FUN_0202F910
+FUN_0202F910: ; 0x0202F910
+ ldr r3, _0202F914 ; =FUN_0202F820
+ bx r3
+ .balign 4
+_0202F914: .word FUN_0202F820
+
+ thumb_func_start FUN_0202F918
+FUN_0202F918: ; 0x0202F918
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ add r7, r2, #0x0
+ str r3, [sp, #0x0]
+ mov r4, #0x1
+ bl FUN_02033534
+ cmp r0, #0x13
+ bge _0202F93E
+ ldr r2, [sp, #0x0]
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_0202E5F8
+ add r4, r0, #0x0
+ ldr r0, _0202F94C ; =FUN_0202F910
+ bl FUN_0202D330
+_0202F93E:
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ bl FUN_0202F150
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+ nop
+_0202F94C: .word FUN_0202F910
+
+ thumb_func_start FUN_0202F950
+FUN_0202F950: ; 0x0202F950
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ add r7, r2, #0x0
+ mov r4, #0x1
+ bl FUN_02033534
+ cmp r0, #0x13
+ bge _0202F96C
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_0202E66C
+ add r4, r0, #0x0
+_0202F96C:
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ bl FUN_0202F150
+ ldr r0, _0202F980 ; =0x02105D58
+ mov r1, #0x4
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+ nop
+_0202F980: .word 0x02105D58
+
+ thumb_func_start FUN_0202F984
+FUN_0202F984: ; 0x0202F984
+ push {r4, lr}
+ mov r4, #0x0
+ bl FUN_02031190
+ cmp r0, #0x0
+ bne _0202F99A
+ ldr r0, _0202F9D4 ; =0x02105D58
+ ldrb r0, [r0, #0x1]
+ cmp r0, #0x4
+ beq _0202F9A2
+ pop {r4, pc}
+_0202F99A:
+ ldr r0, _0202F9D4 ; =0x02105D58
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x4
+ bne _0202F9D0
+_0202F9A2:
+ ldr r0, _0202F9D8 ; =0x021C59F4
+ ldr r2, [r0, #0x4]
+ ldr r0, _0202F9DC ; =0x0000067D
+ ldrb r1, [r2, r0]
+ cmp r1, #0x2
+ bne _0202F9B4
+ mov r1, #0x0
+ strb r1, [r2, r0]
+ mov r4, #0x1
+_0202F9B4:
+ ldr r0, _0202F9D8 ; =0x021C59F4
+ ldr r2, [r0, #0x4]
+ ldr r0, _0202F9DC ; =0x0000067D
+ ldrb r1, [r2, r0]
+ cmp r1, #0x3
+ bne _0202F9C4
+ mov r4, #0x1
+ strb r4, [r2, r0]
+_0202F9C4:
+ cmp r4, #0x0
+ beq _0202F9CC
+ bl FUN_0202F5A4
+_0202F9CC:
+ bl FUN_02031088
+_0202F9D0:
+ pop {r4, pc}
+ nop
+_0202F9D4: .word 0x02105D58
+_0202F9D8: .word 0x021C59F4
+_0202F9DC: .word 0x0000067D
+
+ thumb_func_start FUN_0202F9E0
+FUN_0202F9E0: ; 0x0202F9E0
+ ldr r1, _0202FA08 ; =0x021C59F4
+ ldr r3, [r1, #0x4]
+ ldr r1, _0202FA0C ; =0x0000067D
+ ldrb r2, [r3, r1]
+ cmp r2, #0x0
+ bne _0202F9F6
+ cmp r0, #0x1
+ bne _0202F9F6
+ mov r0, #0x3
+ strb r0, [r3, r1]
+ bx lr
+_0202F9F6:
+ cmp r2, #0x1
+ bne _0202FA04
+ cmp r0, #0x0
+ bne _0202FA04
+ ldr r0, _0202FA0C ; =0x0000067D
+ mov r1, #0x2
+ strb r1, [r3, r0]
+_0202FA04:
+ bx lr
+ nop
+_0202FA08: .word 0x021C59F4
+_0202FA0C: .word 0x0000067D
+
+ thumb_func_start FUN_0202FA10
+FUN_0202FA10: ; 0x0202FA10
+ ldr r3, _0202FA18 ; =FUN_0202F9E0
+ mov r0, #0x1
+ bx r3
+ nop
+_0202FA18: .word FUN_0202F9E0
+
+ thumb_func_start FUN_0202FA1C
+FUN_0202FA1C: ; 0x0202FA1C
+ ldr r3, _0202FA24 ; =FUN_0202F9E0
+ mov r0, #0x0
+ bx r3
+ nop
+_0202FA24: .word FUN_0202F9E0
+
+ thumb_func_start FUN_0202FA28
+FUN_0202FA28: ; 0x0202FA28
+ ldr r0, _0202FA40 ; =0x021C59F4
+ ldr r1, [r0, #0x4]
+ ldr r0, _0202FA44 ; =0x0000067D
+ ldrb r0, [r1, r0]
+ cmp r0, #0x2
+ bne _0202FA38
+ mov r0, #0x1
+ bx lr
+_0202FA38:
+ cmp r0, #0x3
+ bne _0202FA3E
+ mov r0, #0x0
+_0202FA3E:
+ bx lr
+ .balign 4
+_0202FA40: .word 0x021C59F4
+_0202FA44: .word 0x0000067D
+
+ thumb_func_start FUN_0202FA48
+FUN_0202FA48: ; 0x0202FA48
+ push {r3, lr}
+ bl FUN_0202FA28
+ cmp r0, #0x1
+ bne _0202FA56
+ mov r0, #0x1
+ pop {r3, pc}
+_0202FA56:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202FA5C
+FUN_0202FA5C: ; 0x0202FA5C
+ push {r4, lr}
+ ldr r0, _0202FB00 ; =0x021C59F4
+ mov r4, #0x0
+ ldr r0, [r0, #0x4]
+ cmp r0, #0x0
+ beq _0202FA82
+ bl FUN_02033534
+ cmp r0, #0x13
+ blt _0202FA78
+ bl FUN_021D83C0
+ mov r4, #0x1
+ b _0202FA82
+_0202FA78:
+ bl FUN_0202E784
+ cmp r0, #0x0
+ beq _0202FA82
+ mov r4, #0x1
+_0202FA82:
+ cmp r4, #0x0
+ beq _0202FAFE
+ bl FUN_020314D0
+ bl FUN_0202DBA4
+ ldr r0, _0202FB00 ; =0x021C59F4
+ mov r1, #0x0
+ strb r1, [r0, #0x0]
+ ldr r1, [r0, #0x4]
+ ldr r0, _0202FB04 ; =0x00000548
+ ldr r0, [r1, r0]
+ bl FUN_0200CAB4
+ ldr r1, _0202FB00 ; =0x021C59F4
+ ldr r0, _0202FB04 ; =0x00000548
+ ldr r2, [r1, #0x4]
+ mov r3, #0x0
+ str r3, [r2, r0]
+ ldr r1, [r1, #0x4]
+ sub r0, #0xec
+ ldr r0, [r1, r0]
+ bl FUN_02016A18
+ ldr r0, _0202FB00 ; =0x021C59F4
+ ldr r1, [r0, #0x4]
+ mov r0, #0x46
+ lsl r0, r0, #0x4
+ ldr r0, [r1, r0]
+ bl FUN_02016A18
+ ldr r0, _0202FB00 ; =0x021C59F4
+ ldr r1, [r0, #0x4]
+ ldr r0, _0202FB08 ; =0x00000458
+ ldr r0, [r1, r0]
+ bl FUN_02016A18
+ ldr r0, _0202FB00 ; =0x021C59F4
+ ldr r1, [r0, #0x4]
+ ldr r0, _0202FB0C ; =0x00000454
+ ldr r0, [r1, r0]
+ bl FUN_02016A18
+ ldr r0, _0202FB00 ; =0x021C59F4
+ ldr r1, [r0, #0x4]
+ ldr r0, _0202FB10 ; =0x0000056C
+ add r0, r1, r0
+ bl FUN_0202D824
+ ldr r0, _0202FB00 ; =0x021C59F4
+ ldr r1, [r0, #0x4]
+ ldr r0, _0202FB14 ; =0x0000054C
+ add r0, r1, r0
+ bl FUN_0202D824
+ ldr r0, _0202FB00 ; =0x021C59F4
+ ldr r0, [r0, #0x4]
+ bl FUN_02016A18
+ ldr r0, _0202FB00 ; =0x021C59F4
+ mov r1, #0x0
+ str r1, [r0, #0x4]
+_0202FAFE:
+ pop {r4, pc}
+ .balign 4
+_0202FB00: .word 0x021C59F4
+_0202FB04: .word 0x00000548
+_0202FB08: .word 0x00000458
+_0202FB0C: .word 0x00000454
+_0202FB10: .word 0x0000056C
+_0202FB14: .word 0x0000054C
+
+ thumb_func_start FUN_0202FB18
+FUN_0202FB18: ; 0x0202FB18
+ ldr r3, _0202FB1C ; =FUN_0202E9E8
+ bx r3
+ .balign 4
+_0202FB1C: .word FUN_0202E9E8
+
+ thumb_func_start FUN_0202FB20
+FUN_0202FB20: ; 0x0202FB20
+ push {r3, lr}
+ ldr r0, _0202FB54 ; =0x021C59F4
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _0202FB52
+ bl FUN_0203050C
+ bl FUN_02031190
+ cmp r0, #0x0
+ bne _0202FB40
+ mov r0, #0x0
+ bl FUN_02030E7C
+ cmp r0, #0x0
+ bne _0202FB48
+_0202FB40:
+ bl FUN_02031280
+ cmp r0, #0x0
+ beq _0202FB4C
+_0202FB48:
+ bl FUN_0202FEEC
+_0202FB4C:
+ ldr r0, _0202FB54 ; =0x021C59F4
+ mov r1, #0x0
+ strb r1, [r0, #0x0]
+_0202FB52:
+ pop {r3, pc}
+ .balign 4
+_0202FB54: .word 0x021C59F4
+
+ thumb_func_start FUN_0202FB58
+FUN_0202FB58: ; 0x0202FB58
+ push {r3, lr}
+ bl FUN_0202F03C
+ cmp r0, #0x0
+ beq _0202FB7C
+ bl FUN_02031190
+ cmp r0, #0x0
+ bne _0202FB78
+ bl FUN_0202EE24
+ cmp r0, #0x0
+ bne _0202FB7C
+ bl FUN_0202FA5C
+ pop {r3, pc}
+_0202FB78:
+ bl FUN_0202FA5C
+_0202FB7C:
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0202FB80
+FUN_0202FB80: ; 0x0202FB80
+ push {r4, lr}
+ bl FUN_02031CDC
+ ldr r1, _0202FC48 ; =0x021C59F4
+ ldr r2, [r1, #0x4]
+ cmp r2, #0x0
+ beq _0202FC34
+ ldr r0, _0202FC4C ; =0x0000068A
+ ldrb r0, [r2, r0]
+ cmp r0, #0x0
+ bne _0202FC16
+ mov r0, #0x0
+ strb r0, [r1, #0x0]
+ bl FUN_0202F984
+ ldr r0, _0202FC48 ; =0x021C59F4
+ ldr r1, _0202FC50 ; =0x021C48B8
+ ldr r0, [r0, #0x4]
+ ldr r2, _0202FC54 ; =0x00000628
+ ldr r3, [r1, #0x44]
+ ldr r1, _0202FC58 ; =0x00007FFF
+ ldrh r4, [r0, r2]
+ and r1, r3
+ orr r1, r4
+ strh r1, [r0, r2]
+ bl FUN_02030674
+ bl FUN_0202FCCC
+ ldr r0, _0202FC48 ; =0x021C59F4
+ ldr r1, _0202FC54 ; =0x00000628
+ ldr r3, [r0, #0x4]
+ mov r0, #0x2
+ ldrh r2, [r3, r1]
+ lsl r0, r0, #0xe
+ and r0, r2
+ strh r0, [r3, r1]
+ bl FUN_0202FA28
+ cmp r0, #0x0
+ bne _0202FBD6
+ bl FUN_02030DA4
+_0202FBD6:
+ bl FUN_02031190
+ cmp r0, #0x0
+ bne _0202FBE8
+ mov r0, #0x0
+ bl FUN_02030E7C
+ cmp r0, #0x0
+ bne _0202FBF0
+_0202FBE8:
+ bl FUN_02031280
+ cmp r0, #0x0
+ beq _0202FBF4
+_0202FBF0:
+ bl FUN_02030074
+_0202FBF4:
+ bl FUN_02031190
+ cmp r0, #0x0
+ beq _0202FC0C
+ bl FUN_0202FA28
+ cmp r0, #0x1
+ beq _0202FC0C
+ bl FUN_02031280
+ cmp r0, #0x0
+ beq _0202FC10
+_0202FC0C:
+ bl FUN_02030DFC
+_0202FC10:
+ ldr r0, _0202FC48 ; =0x021C59F4
+ mov r1, #0x1
+ strb r1, [r0, #0x0]
+_0202FC16:
+ ldr r0, _0202FC48 ; =0x021C59F4
+ ldr r1, [r0, #0x4]
+ ldr r0, _0202FC5C ; =0x0000065C
+ ldrh r0, [r1, r0]
+ bl FUN_0202ED70
+ bl FUN_02031190
+ cmp r0, #0x0
+ bne _0202FC2E
+ bl FUN_0202F8D4
+_0202FC2E:
+ bl FUN_0202FB58
+ b _0202FC3A
+_0202FC34:
+ mov r0, #0x0
+ bl FUN_0202ED70
+_0202FC3A:
+ mov r0, #0x0
+ bl FUN_020335F4
+ bl FUN_020315A4
+ mov r0, #0x1
+ pop {r4, pc}
+ .balign 4
+_0202FC48: .word 0x021C59F4
+_0202FC4C: .word 0x0000068A
+_0202FC50: .word 0x021C48B8
+_0202FC54: .word 0x00000628
+_0202FC58: .word 0x00007FFF
+_0202FC5C: .word 0x0000065C
+
+ thumb_func_start FUN_0202FC60
+FUN_0202FC60: ; 0x0202FC60
+ push {r4, lr}
+ ldr r0, _0202FC7C ; =0x021C59F4
+ mov r1, #0x0
+ ldrb r4, [r0, #0x0]
+ strb r1, [r0, #0x0]
+ ldr r0, [r0, #0x4]
+ cmp r0, #0x0
+ beq _0202FC74
+ bl FUN_0202F2F0
+_0202FC74:
+ ldr r0, _0202FC7C ; =0x021C59F4
+ strb r4, [r0, #0x0]
+ pop {r4, pc}
+ nop
+_0202FC7C: .word 0x021C59F4
+
+ thumb_func_start FUN_0202FC80
+FUN_0202FC80: ; 0x0202FC80
+ push {r4, lr}
+ ldr r0, _0202FCA0 ; =0x021C59F4
+ mov r1, #0x0
+ ldrb r4, [r0, #0x0]
+ strb r1, [r0, #0x0]
+ ldr r2, [r0, #0x4]
+ cmp r2, #0x0
+ beq _0202FC9A
+ ldr r0, _0202FCA4 ; =0x0000067D
+ mov r1, #0x1
+ strb r1, [r2, r0]
+ bl FUN_0202F2F0
+_0202FC9A:
+ ldr r0, _0202FCA0 ; =0x021C59F4
+ strb r4, [r0, #0x0]
+ pop {r4, pc}
+ .balign 4
+_0202FCA0: .word 0x021C59F4
+_0202FCA4: .word 0x0000067D
+
+ thumb_func_start FUN_0202FCA8
+FUN_0202FCA8: ; 0x0202FCA8
+ push {r4, lr}
+ ldr r0, _0202FCC8 ; =0x021C59F4
+ mov r1, #0x0
+ ldrb r4, [r0, #0x0]
+ strb r1, [r0, #0x0]
+ ldr r0, [r0, #0x4]
+ cmp r0, #0x0
+ beq _0202FCC0
+ bl FUN_0202F2F0
+ bl FUN_0202E538
+_0202FCC0:
+ ldr r0, _0202FCC8 ; =0x021C59F4
+ strb r4, [r0, #0x0]
+ pop {r4, pc}
+ nop
+_0202FCC8: .word 0x021C59F4
+
+ thumb_func_start FUN_0202FCCC
+FUN_0202FCCC: ; 0x0202FCCC
+ push {r3, lr}
+ ldr r0, _0202FE14 ; =0x021C59F4
+ ldr r1, [r0, #0x4]
+ ldr r0, _0202FE18 ; =0x00000683
+ ldrb r0, [r1, r0]
+ cmp r0, #0x0
+ beq _0202FD40
+ bl FUN_02033534
+ cmp r0, #0x13
+ blt _0202FD06
+ ldr r0, _0202FE14 ; =0x021C59F4
+ ldr r1, _0202FE1C ; =0x00000687
+ ldr r0, [r0, #0x4]
+ ldrb r1, [r0, r1]
+ cmp r1, #0x0
+ beq _0202FCF8
+ mov r1, #0x26
+ bl FUN_021D78FC
+ cmp r0, #0x0
+ bne _0202FCFA
+_0202FCF8:
+ b _0202FE10
+_0202FCFA:
+ ldr r0, _0202FE14 ; =0x021C59F4
+ mov r2, #0x0
+ ldr r1, [r0, #0x4]
+ ldr r0, _0202FE18 ; =0x00000683
+ strb r2, [r1, r0]
+ pop {r3, pc}
+_0202FD06:
+ bl FUN_0202CBD4
+ cmp r0, #0x4
+ bne _0202FD1A
+ bl FUN_02031190
+ bl FUN_02030E7C
+ cmp r0, #0x0
+ bne _0202FD22
+_0202FD1A:
+ bl FUN_02031280
+ cmp r0, #0x0
+ beq _0202FE10
+_0202FD22:
+ ldr r0, _0202FE20 ; =0x02105D58
+ mov r1, #0x0
+ strb r1, [r0, #0x0]
+ bl FUN_0203050C
+ ldr r0, _0202FE20 ; =0x02105D58
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _0202FE10
+ ldr r0, _0202FE14 ; =0x021C59F4
+ mov r2, #0x0
+ ldr r1, [r0, #0x4]
+ ldr r0, _0202FE18 ; =0x00000683
+ strb r2, [r1, r0]
+ pop {r3, pc}
+_0202FD40:
+ bl FUN_02033534
+ cmp r0, #0x13
+ blt _0202FDB2
+ ldr r0, _0202FE14 ; =0x021C59F4
+ ldr r2, _0202FE1C ; =0x00000687
+ ldr r0, [r0, #0x4]
+ ldrb r1, [r0, r2]
+ cmp r1, #0x0
+ beq _0202FE10
+ add r1, r2, #0x0
+ sub r1, #0x57
+ ldr r1, [r0, r1]
+ cmp r1, #0x0
+ beq _0202FD7A
+ sub r2, #0x53
+ ldr r1, [r0, r2]
+ cmp r1, #0x3
+ bgt _0202FE10
+ ldr r1, _0202FE20 ; =0x02105D58
+ ldrb r1, [r1, #0x0]
+ cmp r1, #0x4
+ bne _0202FD90
+ bl FUN_02030930
+ ldr r0, _0202FE20 ; =0x02105D58
+ mov r1, #0x2
+ strb r1, [r0, #0x0]
+ b _0202FD90
+_0202FD7A:
+ ldr r1, _0202FE20 ; =0x02105D58
+ ldrb r1, [r1, #0x0]
+ cmp r1, #0x4
+ bne _0202FD90
+ bl FUN_02030930
+ cmp r0, #0x0
+ beq _0202FE10
+ ldr r0, _0202FE20 ; =0x02105D58
+ mov r1, #0x2
+ strb r1, [r0, #0x0]
+_0202FD90:
+ ldr r0, _0202FE14 ; =0x021C59F4
+ mov r1, #0x26
+ ldr r0, [r0, #0x4]
+ bl FUN_021D78FC
+ cmp r0, #0x0
+ beq _0202FE10
+ ldr r0, _0202FE20 ; =0x02105D58
+ mov r1, #0x4
+ strb r1, [r0, #0x0]
+ ldr r0, _0202FE14 ; =0x021C59F4
+ ldr r2, [r0, #0x4]
+ ldr r0, _0202FE24 ; =0x00000634
+ ldr r1, [r2, r0]
+ add r1, r1, #0x1
+ str r1, [r2, r0]
+ pop {r3, pc}
+_0202FDB2:
+ bl FUN_0202CBD4
+ cmp r0, #0x4
+ bne _0202FDC6
+ bl FUN_02031190
+ bl FUN_02030E7C
+ cmp r0, #0x0
+ bne _0202FDCE
+_0202FDC6:
+ bl FUN_02031280
+ cmp r0, #0x0
+ beq _0202FE10
+_0202FDCE:
+ ldr r0, _0202FE20 ; =0x02105D58
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x4
+ bne _0202FE10
+ ldr r0, _0202FE14 ; =0x021C59F4
+ ldr r2, [r0, #0x4]
+ ldr r0, _0202FE24 ; =0x00000634
+ ldr r1, [r2, r0]
+ cmp r1, #0x3
+ bgt _0202FE10
+ add r0, #0x4b
+ ldrb r1, [r2, r0]
+ mov r0, #0x26
+ mul r0, r1
+ add r0, r2, r0
+ bl FUN_02030930
+ ldr r0, _0202FE14 ; =0x021C59F4
+ ldr r2, [r0, #0x4]
+ ldr r0, _0202FE28 ; =0x0000067F
+ ldrb r1, [r2, r0]
+ mov r0, #0x1
+ sub r1, r0, r1
+ mov r0, #0x26
+ mul r0, r1
+ add r0, r2, r0
+ bl FUN_02030930
+ ldr r0, _0202FE20 ; =0x02105D58
+ mov r1, #0x0
+ strb r1, [r0, #0x0]
+ bl FUN_0203050C
+_0202FE10:
+ pop {r3, pc}
+ nop
+_0202FE14: .word 0x021C59F4
+_0202FE18: .word 0x00000683
+_0202FE1C: .word 0x00000687
+_0202FE20: .word 0x02105D58
+_0202FE24: .word 0x00000634
+_0202FE28: .word 0x0000067F
+
+ thumb_func_start FUN_0202FE2C
+FUN_0202FE2C: ; 0x0202FE2C
+ push {r3-r7, lr}
+ sub sp, #0x10
+ str r0, [sp, #0x0]
+ mov r0, #0x0
+ str r0, [sp, #0x4]
+ bl FUN_02033534
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_02031228
+ str r0, [sp, #0xc]
+ bl FUN_02033534
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_0202D858
+ add r0, r0, #0x1
+ mov r7, #0x0
+ str r0, [sp, #0x8]
+ cmp r0, #0x0
+ ble _0202FED0
+ ldr r0, [sp, #0x0]
+ mov r1, #0xc0
+ add r6, r0, #0x0
+ add r4, r7, #0x0
+ add r5, r7, #0x0
+ mul r6, r1
+_0202FE66:
+ ldr r0, _0202FEE4 ; =0x021C59F4
+ ldr r1, [r0, #0x4]
+ ldr r0, _0202FEE8 ; =0x0000047C
+ add r0, r1, r0
+ add r0, r0, r4
+ bl FUN_0202D4BC
+ lsl r0, r7, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_02030E7C
+ cmp r0, #0x0
+ beq _0202FE90
+ ldr r0, _0202FEE4 ; =0x021C59F4
+ mov r1, #0xe
+ ldr r0, [r0, #0x4]
+ add r0, r6, r0
+ add r2, r5, r0
+ mov r0, #0x55
+ lsl r0, r0, #0x2
+ strb r1, [r2, r0]
+_0202FE90:
+ ldr r0, _0202FEE4 ; =0x021C59F4
+ mov r2, #0x55
+ ldr r1, [r0, #0x4]
+ ldr r0, _0202FEE8 ; =0x0000047C
+ lsl r2, r2, #0x2
+ add r0, r1, r0
+ add r1, r1, r2
+ add r1, r1, r6
+ ldr r2, [sp, #0xc]
+ add r0, r0, r4
+ add r1, r1, r5
+ bl FUN_0202D400
+ ldr r0, _0202FEE4 ; =0x021C59F4
+ ldr r0, [r0, #0x4]
+ add r0, r6, r0
+ add r1, r5, r0
+ mov r0, #0x55
+ lsl r0, r0, #0x2
+ ldrb r0, [r1, r0]
+ cmp r0, #0xe
+ bne _0202FEC2
+ ldr r0, [sp, #0x4]
+ add r0, r0, #0x1
+ str r0, [sp, #0x4]
+_0202FEC2:
+ ldr r0, [sp, #0xc]
+ add r7, r7, #0x1
+ add r5, r5, r0
+ ldr r0, [sp, #0x8]
+ add r4, #0xc
+ cmp r7, r0
+ blt _0202FE66
+_0202FED0:
+ ldr r1, [sp, #0x4]
+ ldr r0, [sp, #0x8]
+ cmp r1, r0
+ bne _0202FEDE
+ add sp, #0x10
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0202FEDE:
+ mov r0, #0x1
+ add sp, #0x10
+ pop {r3-r7, pc}
+ .balign 4
+_0202FEE4: .word 0x021C59F4
+_0202FEE8: .word 0x0000047C
+
+ thumb_func_start FUN_0202FEEC
+FUN_0202FEEC: ; 0x0202FEEC
+ push {r3-r7, lr}
+ ldr r0, _02030064 ; =0x021C59F4
+ ldr r0, [r0, #0x4]
+ cmp r0, #0x0
+ beq _0202FEFE
+ bl FUN_02033534
+ cmp r0, #0x13
+ blt _0202FF00
+_0202FEFE:
+ b _02030062
+_0202FF00:
+ bl FUN_02033534
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_02031228
+ str r0, [sp, #0x0]
+ bl FUN_02033534
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_0202D858
+ add r6, r0, #0x1
+ ldr r0, _02030068 ; =0x02105D58
+ ldrb r1, [r0, #0x1]
+ cmp r1, #0x2
+ beq _0202FF2C
+ ldrb r0, [r0, #0x1]
+ cmp r0, #0x0
+ beq _0202FF2C
+ b _02030062
+_0202FF2C:
+ ldr r0, _02030068 ; =0x02105D58
+ ldrb r1, [r0, #0x1]
+ add r1, r1, #0x1
+ strb r1, [r0, #0x1]
+ bl FUN_0202FA28
+ cmp r0, #0x1
+ bne _0202FF4A
+ ldr r0, _02030064 ; =0x021C59F4
+ ldr r1, [r0, #0x4]
+ mov r0, #0x1a
+ lsl r0, r0, #0x6
+ ldrb r0, [r1, r0]
+ bl FUN_0202FE2C
+_0202FF4A:
+ bl FUN_0202CBD4
+ cmp r0, #0x4
+ bne _0202FF86
+ bl FUN_02031280
+ cmp r0, #0x0
+ bne _0202FF86
+ ldr r0, _02030064 ; =0x021C59F4
+ ldr r1, [r0, #0x4]
+ mov r0, #0x55
+ lsl r0, r0, #0x2
+ add r3, r1, r0
+ mov r0, #0x1a
+ lsl r0, r0, #0x6
+ ldrb r0, [r1, r0]
+ mov r1, #0xc0
+ add r2, r0, #0x0
+ mul r2, r1
+ add r0, r3, r2
+ ldr r3, _0203006C ; =FUN_020304F0
+ mov r2, #0xe
+ bl FUN_0202D0D0
+ cmp r0, #0x0
+ bne _0202FF86
+ ldr r0, _02030068 ; =0x02105D58
+ ldrb r1, [r0, #0x1]
+ sub r1, r1, #0x1
+ strb r1, [r0, #0x1]
+_0202FF86:
+ ldr r0, _02030068 ; =0x02105D58
+ ldrb r1, [r0, #0x1]
+ cmp r1, #0x1
+ beq _0202FF94
+ ldrb r0, [r0, #0x1]
+ cmp r0, #0x3
+ bne _0203000A
+_0202FF94:
+ mov r4, #0x0
+ cmp r6, #0x0
+ ble _0202FFDC
+ ldr r7, _02030064 ; =0x021C59F4
+ add r5, r4, #0x0
+_0202FF9E:
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_02030E7C
+ cmp r0, #0x0
+ beq _0202FFBA
+ ldr r0, [r7, #0x4]
+ ldr r1, _02030070 ; =0x00000638
+ add r0, r0, r5
+ ldr r1, [r0, r1]
+ add r2, r1, #0x1
+ ldr r1, _02030070 ; =0x00000638
+ str r2, [r0, r1]
+ b _0202FFD4
+_0202FFBA:
+ bl FUN_02031280
+ cmp r0, #0x0
+ beq _0202FFD4
+ cmp r4, #0x0
+ bne _0202FFD4
+ ldr r0, [r7, #0x4]
+ ldr r1, _02030070 ; =0x00000638
+ add r0, r0, r5
+ ldr r1, [r0, r1]
+ add r2, r1, #0x1
+ ldr r1, _02030070 ; =0x00000638
+ str r2, [r0, r1]
+_0202FFD4:
+ add r4, r4, #0x1
+ add r5, r5, #0x4
+ cmp r4, r6
+ blt _0202FF9E
+_0202FFDC:
+ ldr r0, _02030064 ; =0x021C59F4
+ mov r1, #0x55
+ ldr r2, [r0, #0x4]
+ lsl r1, r1, #0x2
+ add r4, r2, r1
+ mov r1, #0x1a
+ lsl r1, r1, #0x6
+ ldrb r1, [r2, r1]
+ mov r2, #0xc0
+ mov r0, #0x0
+ add r3, r1, #0x0
+ mul r3, r2
+ add r1, r4, r3
+ bl FUN_0203026C
+ ldr r0, _02030064 ; =0x021C59F4
+ mov r1, #0x1a
+ ldr r3, [r0, #0x4]
+ lsl r1, r1, #0x6
+ ldrb r2, [r3, r1]
+ mov r0, #0x1
+ sub r0, r0, r2
+ strb r0, [r3, r1]
+_0203000A:
+ mov r5, #0x0
+ cmp r6, #0x0
+ ble _0203004A
+ add r4, r5, #0x0
+ mov r7, #0xff
+_02030014:
+ lsl r0, r5, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_02030E7C
+ cmp r0, #0x0
+ bne _02030040
+ bl FUN_0202FA28
+ cmp r0, #0x1
+ bne _02030040
+ ldr r0, _02030064 ; =0x021C59F4
+ mov r1, #0x1a
+ ldr r0, [r0, #0x4]
+ lsl r1, r1, #0x6
+ ldrb r2, [r0, r1]
+ mov r1, #0xc0
+ mul r1, r2
+ add r0, r0, r1
+ add r1, r4, r0
+ mov r0, #0x55
+ lsl r0, r0, #0x2
+ strb r7, [r1, r0]
+_02030040:
+ ldr r0, [sp, #0x0]
+ add r5, r5, #0x1
+ add r4, r4, r0
+ cmp r5, r6
+ blt _02030014
+_0203004A:
+ bl FUN_0202CBD4
+ cmp r0, #0x4
+ bne _0203005A
+ bl FUN_02031280
+ cmp r0, #0x0
+ beq _02030062
+_0203005A:
+ ldr r0, _02030068 ; =0x02105D58
+ ldrb r1, [r0, #0x1]
+ add r1, r1, #0x1
+ strb r1, [r0, #0x1]
+_02030062:
+ pop {r3-r7, pc}
+ .balign 4
+_02030064: .word 0x021C59F4
+_02030068: .word 0x02105D58
+_0203006C: .word FUN_020304F0
+_02030070: .word 0x00000638
+
+ thumb_func_start FUN_02030074
+FUN_02030074: ; 0x02030074
+ push {r3-r7, lr}
+ ldr r0, _02030228 ; =0x021C59F4
+ ldr r1, [r0, #0x4]
+ ldr r0, _0203022C ; =0x00000683
+ ldrb r0, [r1, r0]
+ cmp r0, #0x0
+ beq _020300DC
+ bl FUN_02033534
+ cmp r0, #0x13
+ blt _020300B4
+ mov r0, #0x0
+ bl FUN_02030E7C
+ cmp r0, #0x0
+ beq _020300DC
+ ldr r0, _02030228 ; =0x021C59F4
+ ldr r1, [r0, #0x4]
+ mov r0, #0x55
+ lsl r0, r0, #0x2
+ add r0, r1, r0
+ mov r1, #0x4c
+ bl FUN_021D79B4
+ cmp r0, #0x0
+ beq _020300DC
+ ldr r0, _02030228 ; =0x021C59F4
+ mov r2, #0x0
+ ldr r1, [r0, #0x4]
+ ldr r0, _0203022C ; =0x00000683
+ strb r2, [r1, r0]
+ pop {r3-r7, pc}
+_020300B4:
+ bl FUN_0202CBD4
+ cmp r0, #0x4
+ beq _020300C4
+ bl FUN_02031280
+ cmp r0, #0x0
+ beq _020300DC
+_020300C4:
+ bl FUN_0202FEEC
+ ldr r0, _02030230 ; =0x02105D58
+ ldrb r0, [r0, #0x1]
+ cmp r0, #0x2
+ bne _020300DC
+ ldr r0, _02030228 ; =0x021C59F4
+ mov r2, #0x0
+ ldr r1, [r0, #0x4]
+ ldr r0, _0203022C ; =0x00000683
+ strb r2, [r1, r0]
+ pop {r3-r7, pc}
+_020300DC:
+ bl FUN_02033534
+ cmp r0, #0x13
+ blt _02030184
+ mov r0, #0x0
+ bl FUN_02030E7C
+ cmp r0, #0x0
+ bne _020300F0
+ b _02030224
+_020300F0:
+ ldr r0, _02030228 ; =0x021C59F4
+ mov r1, #0x63
+ ldr r2, [r0, #0x4]
+ lsl r1, r1, #0x4
+ ldr r0, [r2, r1]
+ cmp r0, #0x0
+ beq _02030130
+ add r0, r1, #0x0
+ add r0, #0xc
+ ldr r0, [r2, r0]
+ cmp r0, #0x3
+ bgt _02030110
+ add r1, #0x8
+ ldr r0, [r2, r1]
+ cmp r0, #0x3
+ ble _02030112
+_02030110:
+ b _02030224
+_02030112:
+ ldr r0, _02030230 ; =0x02105D58
+ ldrb r0, [r0, #0x1]
+ cmp r0, #0x4
+ bne _02030150
+ bl FUN_0202FA28
+ cmp r0, #0x1
+ bne _02030128
+ mov r0, #0x0
+ bl FUN_0202FE2C
+_02030128:
+ ldr r0, _02030230 ; =0x02105D58
+ mov r1, #0x2
+ strb r1, [r0, #0x1]
+ b _02030150
+_02030130:
+ ldr r0, _02030230 ; =0x02105D58
+ ldrb r0, [r0, #0x1]
+ cmp r0, #0x4
+ bne _0203014A
+ bl FUN_0202FA28
+ cmp r0, #0x1
+ bne _0203014A
+ mov r0, #0x0
+ bl FUN_0202FE2C
+ cmp r0, #0x0
+ beq _02030224
+_0203014A:
+ ldr r0, _02030230 ; =0x02105D58
+ mov r1, #0x2
+ strb r1, [r0, #0x1]
+_02030150:
+ ldr r0, _02030228 ; =0x021C59F4
+ ldr r1, [r0, #0x4]
+ mov r0, #0x55
+ lsl r0, r0, #0x2
+ add r0, r1, r0
+ mov r1, #0x4c
+ bl FUN_021D79B4
+ cmp r0, #0x0
+ beq _02030224
+ ldr r0, _02030230 ; =0x02105D58
+ mov r1, #0x4
+ strb r1, [r0, #0x1]
+ ldr r1, _02030228 ; =0x021C59F4
+ ldr r0, _02030234 ; =0x00000638
+ ldr r3, [r1, #0x4]
+ ldr r2, [r3, r0]
+ add r2, r2, #0x1
+ str r2, [r3, r0]
+ ldr r2, [r1, #0x4]
+ add r1, r0, #0x4
+ ldr r1, [r2, r1]
+ add r0, r0, #0x4
+ add r1, r1, #0x1
+ str r1, [r2, r0]
+ pop {r3-r7, pc}
+_02030184:
+ bl FUN_0202CBD4
+ cmp r0, #0x4
+ beq _02030194
+ bl FUN_02031280
+ cmp r0, #0x0
+ beq _02030224
+_02030194:
+ ldr r0, _02030230 ; =0x02105D58
+ ldrb r0, [r0, #0x1]
+ cmp r0, #0x4
+ bne _02030224
+ ldr r6, _02030228 ; =0x021C59F4
+ ldr r7, _02030234 ; =0x00000638
+ mov r4, #0x1
+ mov r5, #0x4
+_020301A4:
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_02030E7C
+ cmp r0, #0x0
+ beq _020301BC
+ ldr r0, [r6, #0x4]
+ add r0, r0, r5
+ ldr r0, [r0, r7]
+ cmp r0, #0x3
+ ble _020301D2
+ pop {r3-r7, pc}
+_020301BC:
+ cmp r4, #0x0
+ bne _020301D2
+ bl FUN_02031280
+ cmp r0, #0x0
+ beq _020301D2
+ ldr r1, [r6, #0x4]
+ ldr r0, _02030234 ; =0x00000638
+ ldr r0, [r1, r0]
+ cmp r0, #0x3
+ bgt _02030224
+_020301D2:
+ add r4, r4, #0x1
+ add r5, r5, #0x4
+ cmp r4, #0x8
+ blt _020301A4
+ bl FUN_0202FA28
+ cmp r0, #0x0
+ bne _0203021A
+ ldr r0, _02030228 ; =0x021C59F4
+ ldr r1, [r0, #0x4]
+ mov r0, #0x55
+ lsl r0, r0, #0x2
+ add r2, r1, r0
+ mov r0, #0x1a
+ lsl r0, r0, #0x6
+ ldrb r1, [r1, r0]
+ mov r0, #0xc0
+ mul r0, r1
+ add r0, r2, r0
+ bl FUN_02030A00
+ ldr r0, _02030228 ; =0x021C59F4
+ ldr r1, [r0, #0x4]
+ mov r0, #0x55
+ lsl r0, r0, #0x2
+ add r2, r1, r0
+ mov r0, #0x1a
+ lsl r0, r0, #0x6
+ ldrb r1, [r1, r0]
+ mov r0, #0x1
+ sub r1, r0, r1
+ mov r0, #0xc0
+ mul r0, r1
+ add r0, r2, r0
+ bl FUN_02030A00
+_0203021A:
+ ldr r0, _02030230 ; =0x02105D58
+ mov r1, #0x0
+ strb r1, [r0, #0x1]
+ bl FUN_0202FEEC
+_02030224:
+ pop {r3-r7, pc}
+ nop
+_02030228: .word 0x021C59F4
+_0203022C: .word 0x00000683
+_02030230: .word 0x02105D58
+_02030234: .word 0x00000638
+
+ thumb_func_start FUN_02030238
+FUN_02030238: ; 0x02030238
+ push {r4-r6, lr}
+ ldr r4, _02030264 ; =0x021C59F4
+ ldr r3, _02030268 ; =0x0000066F
+ ldr r5, [r4, #0x4]
+ ldrb r6, [r5, r3]
+ cmp r6, #0x0
+ beq _0203025C
+ add r0, r3, #0x0
+ sub r0, #0x3b
+ ldr r0, [r5, r0]
+ sub r1, r0, #0x1
+ add r0, r3, #0x0
+ sub r0, #0x3b
+ str r1, [r5, r0]
+ ldr r0, [r4, #0x4]
+ mov r1, #0x0
+ strb r1, [r0, r3]
+ pop {r4-r6, pc}
+_0203025C:
+ bl FUN_0203026C
+ pop {r4-r6, pc}
+ nop
+_02030264: .word 0x021C59F4
+_02030268: .word 0x0000066F
+
+ thumb_func_start FUN_0203026C
+FUN_0203026C: ; 0x0203026C
+ push {r3-r7, lr}
+ sub sp, #0x8
+ ldr r0, _020303A0 ; =0x021C59F4
+ add r5, r1, #0x0
+ ldr r2, [r0, #0x4]
+ ldr r0, _020303A4 ; =0x00000634
+ ldr r1, [r2, r0]
+ sub r1, r1, #0x1
+ str r1, [r2, r0]
+ cmp r5, #0x0
+ beq _02030290
+ ldrb r0, [r5, #0x0]
+ cmp r0, #0xb
+ bne _02030296
+ bl FUN_0202FA28
+ cmp r0, #0x1
+ bne _02030292
+_02030290:
+ b _0203039C
+_02030292:
+ add r5, r5, #0x1
+ b _0203029E
+_02030296:
+ bl FUN_0202FA28
+ cmp r0, #0x0
+ beq _0203039C
+_0203029E:
+ ldr r0, _020303A0 ; =0x021C59F4
+ ldr r1, _020303A8 ; =0x00000682
+ ldr r0, [r0, #0x4]
+ ldrb r1, [r0, r1]
+ cmp r1, #0x0
+ beq _020302B2
+ ldrb r2, [r5, #0x0]
+ mov r1, #0x1
+ tst r1, r2
+ bne _0203039C
+_020302B2:
+ ldr r1, _020303A8 ; =0x00000682
+ mov r2, #0x0
+ strb r2, [r0, r1]
+ bl FUN_0202FA28
+ cmp r0, #0x1
+ bne _0203036E
+ bl FUN_02033534
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_02031228
+ add r6, r0, #0x0
+ bl FUN_02033534
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_0202D858
+ add r0, r0, #0x1
+ mov r4, #0x0
+ str r0, [sp, #0x4]
+ cmp r0, #0x0
+ ble _0203039C
+ sub r0, r6, #0x1
+ add r7, r4, #0x0
+ str r0, [sp, #0x0]
+_020302EA:
+ ldrb r0, [r5, #0x0]
+ cmp r0, #0xff
+ bne _02030302
+ ldr r0, _020303A0 ; =0x021C59F4
+ mov r2, #0x1
+ ldr r1, [r0, #0x4]
+ ldr r0, _020303AC ; =0x0000065C
+ lsl r2, r4
+ ldrh r0, [r1, r0]
+ mvn r2, r2
+ and r2, r0
+ b _02030310
+_02030302:
+ ldr r0, _020303A0 ; =0x021C59F4
+ mov r2, #0x1
+ ldr r1, [r0, #0x4]
+ ldr r0, _020303AC ; =0x0000065C
+ lsl r2, r4
+ ldrh r0, [r1, r0]
+ orr r2, r0
+_02030310:
+ ldr r0, _020303AC ; =0x0000065C
+ strh r2, [r1, r0]
+ ldrb r2, [r5, #0x0]
+ cmp r2, #0xff
+ bne _0203031E
+ add r5, r5, r6
+ b _02030360
+_0203031E:
+ cmp r2, #0xe
+ bne _02030326
+ add r5, r5, r6
+ b _02030360
+_02030326:
+ ldr r0, _020303A0 ; =0x021C59F4
+ ldr r3, [r0, #0x4]
+ ldr r0, _020303B0 ; =0x00000667
+ add r1, r3, r4
+ ldrb r0, [r1, r0]
+ cmp r0, #0x0
+ beq _0203033E
+ mov r0, #0x1
+ tst r0, r2
+ beq _0203033E
+ add r5, r5, r6
+ b _02030360
+_0203033E:
+ ldr r0, _020303B4 ; =0x000004E8
+ add r5, r5, #0x1
+ add r0, r3, r0
+ ldr r2, [sp, #0x0]
+ ldr r3, _020303B8 ; =0x000005E6
+ add r0, r0, r7
+ add r1, r5, #0x0
+ bl FUN_0202D3A4
+ ldr r0, [sp, #0x0]
+ mov r1, #0x0
+ add r5, r5, r0
+ ldr r0, _020303A0 ; =0x021C59F4
+ ldr r0, [r0, #0x4]
+ add r2, r0, r4
+ ldr r0, _020303B0 ; =0x00000667
+ strb r1, [r2, r0]
+_02030360:
+ ldr r0, [sp, #0x4]
+ add r4, r4, #0x1
+ add r7, #0xc
+ cmp r4, r0
+ blt _020302EA
+ add sp, #0x8
+ pop {r3-r7, pc}
+_0203036E:
+ ldr r0, _020303A0 ; =0x021C59F4
+ ldrb r2, [r5, #0x1]
+ ldr r1, [r0, #0x4]
+ ldr r3, _020303AC ; =0x0000065C
+ strh r2, [r1, r3]
+ ldr r2, [r0, #0x4]
+ ldrh r1, [r2, r3]
+ lsl r1, r1, #0x8
+ strh r1, [r2, r3]
+ ldr r4, [r0, #0x4]
+ ldrb r1, [r5, #0x2]
+ ldrh r2, [r4, r3]
+ add r1, r2, r1
+ strh r1, [r4, r3]
+ ldr r1, [r0, #0x4]
+ mov r0, #0x47
+ lsl r0, r0, #0x4
+ add r0, r1, r0
+ ldrb r2, [r5, #0x3]
+ add r1, r5, #0x4
+ sub r3, #0x5d
+ bl FUN_0202D3A4
+_0203039C:
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+_020303A0: .word 0x021C59F4
+_020303A4: .word 0x00000634
+_020303A8: .word 0x00000682
+_020303AC: .word 0x0000065C
+_020303B0: .word 0x00000667
+_020303B4: .word 0x000004E8
+_020303B8: .word 0x000005E6
+
+ thumb_func_start FUN_020303BC
+FUN_020303BC: ; 0x020303BC
+ push {r4-r6, lr}
+ ldr r3, _020303EC ; =0x021C59F4
+ ldr r6, _020303F0 ; =0x0000066F
+ ldr r5, [r3, #0x4]
+ add r4, r5, r0
+ ldrb r4, [r4, r6]
+ cmp r4, #0x0
+ beq _020303E4
+ add r1, r6, #0x0
+ sub r1, #0x37
+ add r4, r5, r1
+ lsl r2, r0, #0x2
+ ldr r1, [r4, r2]
+ sub r1, r1, #0x1
+ str r1, [r4, r2]
+ ldr r1, [r3, #0x4]
+ mov r2, #0x0
+ add r0, r1, r0
+ strb r2, [r0, r6]
+ pop {r4-r6, pc}
+_020303E4:
+ bl FUN_020303F4
+ pop {r4-r6, pc}
+ nop
+_020303EC: .word 0x021C59F4
+_020303F0: .word 0x0000066F
+
+ thumb_func_start FUN_020303F4
+FUN_020303F4: ; 0x020303F4
+ push {r4-r6, lr}
+ ldr r3, _020304B8 ; =0x021C59F4
+ add r5, r0, #0x0
+ ldr r0, [r3, #0x4]
+ ldr r2, _020304BC ; =0x00000638
+ add r4, r1, #0x0
+ add r1, r0, r2
+ lsl r0, r5, #0x2
+ ldr r6, [r1, r0]
+ sub r6, r6, #0x1
+ str r6, [r1, r0]
+ cmp r4, #0x0
+ beq _020304B4
+ ldr r0, [r3, #0x4]
+ add r2, #0x2f
+ add r0, r0, r2
+ ldrb r1, [r0, r5]
+ cmp r1, #0x0
+ beq _02030422
+ ldrb r2, [r4, #0x0]
+ mov r1, #0x1
+ tst r1, r2
+ bne _020304B4
+_02030422:
+ mov r1, #0x0
+ strb r1, [r0, r5]
+ bl FUN_0202FA28
+ cmp r0, #0x1
+ bne _02030478
+ bl FUN_02033534
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_02031228
+ add r6, r0, #0x0
+ bl FUN_02033534
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_0202D858
+ ldrb r1, [r4, #0x0]
+ mov r0, #0x2
+ tst r0, r1
+ bne _02030468
+ ldr r0, _020304B8 ; =0x021C59F4
+ ldr r3, _020304C0 ; =0x0000065E
+ ldr r1, [r0, #0x4]
+ ldr r0, _020304C4 ; =0x0000047C
+ add r2, r6, #0x0
+ add r1, r1, r0
+ mov r0, #0xc
+ mul r0, r5
+ add r0, r1, r0
+ add r1, r4, #0x0
+ bl FUN_0202D3A4
+_02030468:
+ ldr r0, _020304B8 ; =0x021C59F4
+ ldr r1, [r0, #0x4]
+ ldr r0, _020304C8 ; =0x0000065F
+ add r1, r1, r0
+ ldrb r0, [r1, r5]
+ add r0, r0, #0x1
+ strb r0, [r1, r5]
+ pop {r4-r6, pc}
+_02030478:
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ bl FUN_020307E4
+ ldrb r1, [r4, #0x0]
+ mov r0, #0x2
+ tst r0, r1
+ bne _020304B4
+ mov r0, #0xc
+ add r6, r5, #0x0
+ mul r6, r0
+ ldr r0, _020304B8 ; =0x021C59F4
+ ldr r1, [r0, #0x4]
+ ldr r0, _020304CC ; =0x000004E8
+ add r0, r1, r0
+ add r0, r0, r6
+ bl FUN_0202D498
+ cmp r0, #0xb
+ blt _020304B4
+ ldr r0, _020304B8 ; =0x021C59F4
+ ldr r3, _020304D0 ; =0x0000066E
+ ldr r1, [r0, #0x4]
+ ldr r0, _020304CC ; =0x000004E8
+ mov r2, #0xb
+ add r0, r1, r0
+ add r0, r0, r6
+ add r1, r4, #0x1
+ bl FUN_0202D3A4
+_020304B4:
+ pop {r4-r6, pc}
+ nop
+_020304B8: .word 0x021C59F4
+_020304BC: .word 0x00000638
+_020304C0: .word 0x0000065E
+_020304C4: .word 0x0000047C
+_020304C8: .word 0x0000065F
+_020304CC: .word 0x000004E8
+_020304D0: .word 0x0000066E
+
+ thumb_func_start FUN_020304D4
+FUN_020304D4: ; 0x020304D4
+ push {r3, lr}
+ cmp r0, #0x0
+ beq _020304E4
+ ldr r0, _020304EC ; =0x02105D58
+ ldrb r1, [r0, #0x0]
+ add r1, r1, #0x1
+ strb r1, [r0, #0x0]
+ pop {r3, pc}
+_020304E4:
+ bl ErrorHandling
+ pop {r3, pc}
+ nop
+_020304EC: .word 0x02105D58
+
+ thumb_func_start FUN_020304F0
+FUN_020304F0: ; 0x020304F0
+ push {r3, lr}
+ cmp r0, #0x0
+ beq _02030500
+ ldr r0, _02030508 ; =0x02105D58
+ ldrb r1, [r0, #0x1]
+ add r1, r1, #0x1
+ strb r1, [r0, #0x1]
+ pop {r3, pc}
+_02030500:
+ bl ErrorHandling
+ pop {r3, pc}
+ nop
+_02030508: .word 0x02105D58
+
+ thumb_func_start FUN_0203050C
+FUN_0203050C: ; 0x0203050C
+ push {r4, lr}
+ ldr r0, _02030660 ; =0x021C59F4
+ ldr r0, [r0, #0x4]
+ cmp r0, #0x0
+ beq _0203051E
+ bl FUN_02033534
+ cmp r0, #0x13
+ blt _02030520
+_0203051E:
+ b _0203065E
+_02030520:
+ bl FUN_02033534
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_02031228
+ add r4, r0, #0x0
+ bl FUN_02033534
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_0202D858
+ bl FUN_02031280
+ cmp r0, #0x0
+ beq _02030594
+ ldr r0, _02030664 ; =0x02105D58
+ ldrb r1, [r0, #0x0]
+ cmp r1, #0x2
+ beq _02030550
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _02030594
+_02030550:
+ ldr r0, _02030664 ; =0x02105D58
+ ldrb r1, [r0, #0x0]
+ add r1, r1, #0x1
+ strb r1, [r0, #0x0]
+ mov r0, #0x1
+ bl FUN_020304D4
+ ldr r0, _02030660 ; =0x021C59F4
+ ldr r1, _02030668 ; =0x0000067F
+ ldr r3, [r0, #0x4]
+ mov r0, #0x0
+ ldrb r2, [r3, r1]
+ mov r1, #0x26
+ mul r1, r2
+ lsl r2, r4, #0x10
+ add r1, r3, r1
+ lsr r2, r2, #0x10
+ bl FUN_020303F4
+ ldr r2, _02030660 ; =0x021C59F4
+ ldr r1, _02030668 ; =0x0000067F
+ ldr r4, [r2, #0x4]
+ mov r0, #0x1
+ ldrb r3, [r4, r1]
+ sub r0, r0, r3
+ strb r0, [r4, r1]
+ add r0, r1, #0x0
+ ldr r2, [r2, #0x4]
+ sub r0, #0x4b
+ ldr r0, [r2, r0]
+ sub r1, #0x4b
+ add r0, r0, #0x1
+ str r0, [r2, r1]
+ pop {r4, pc}
+_02030594:
+ bl FUN_0202CBD4
+ cmp r0, #0x4
+ bne _0203065E
+ bl FUN_02031190
+ bl FUN_02030E7C
+ cmp r0, #0x0
+ bne _020305AE
+ bl FUN_02031190
+ pop {r4, pc}
+_020305AE:
+ ldr r0, _02030664 ; =0x02105D58
+ ldrb r1, [r0, #0x0]
+ cmp r1, #0x2
+ beq _020305BC
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _0203065E
+_020305BC:
+ bl FUN_02031190
+ cmp r0, #0x0
+ beq _02030612
+ ldr r0, _02030664 ; =0x02105D58
+ ldr r3, _0203066C ; =FUN_020304D4
+ ldrb r1, [r0, #0x0]
+ add r1, r1, #0x1
+ strb r1, [r0, #0x0]
+ ldr r0, _02030660 ; =0x021C59F4
+ ldr r2, [r0, #0x4]
+ ldr r0, _02030668 ; =0x0000067F
+ ldrb r1, [r2, r0]
+ mov r0, #0x26
+ mul r0, r1
+ lsl r1, r4, #0x10
+ add r0, r2, r0
+ lsr r1, r1, #0x10
+ mov r2, #0xe
+ bl FUN_0202D0D0
+ cmp r0, #0x0
+ bne _020305F4
+ ldr r0, _02030664 ; =0x02105D58
+ ldrb r1, [r0, #0x0]
+ sub r1, r1, #0x1
+ strb r1, [r0, #0x0]
+ pop {r4, pc}
+_020305F4:
+ ldr r2, _02030660 ; =0x021C59F4
+ ldr r1, _02030668 ; =0x0000067F
+ ldr r4, [r2, #0x4]
+ mov r0, #0x1
+ ldrb r3, [r4, r1]
+ sub r0, r0, r3
+ strb r0, [r4, r1]
+ add r0, r1, #0x0
+ ldr r2, [r2, #0x4]
+ sub r0, #0x4b
+ ldr r0, [r2, r0]
+ sub r1, #0x4b
+ add r0, r0, #0x1
+ str r0, [r2, r1]
+ pop {r4, pc}
+_02030612:
+ bl FUN_0202CB8C
+ ldr r1, _02030670 ; =0x0000FFFE
+ tst r0, r1
+ beq _0203065E
+ ldr r0, _02030664 ; =0x02105D58
+ ldrb r1, [r0, #0x0]
+ add r1, r1, #0x1
+ strb r1, [r0, #0x0]
+ mov r0, #0x1
+ bl FUN_020304D4
+ ldr r0, _02030660 ; =0x021C59F4
+ ldr r1, _02030668 ; =0x0000067F
+ ldr r3, [r0, #0x4]
+ mov r0, #0x0
+ ldrb r2, [r3, r1]
+ mov r1, #0x26
+ mul r1, r2
+ lsl r2, r4, #0x10
+ add r1, r3, r1
+ lsr r2, r2, #0x10
+ bl FUN_020303F4
+ ldr r2, _02030660 ; =0x021C59F4
+ ldr r1, _02030668 ; =0x0000067F
+ ldr r4, [r2, #0x4]
+ mov r0, #0x1
+ ldrb r3, [r4, r1]
+ sub r0, r0, r3
+ strb r0, [r4, r1]
+ add r0, r1, #0x0
+ ldr r2, [r2, #0x4]
+ sub r0, #0x4b
+ ldr r0, [r2, r0]
+ sub r1, #0x4b
+ add r0, r0, #0x1
+ str r0, [r2, r1]
+_0203065E:
+ pop {r4, pc}
+ .balign 4
+_02030660: .word 0x021C59F4
+_02030664: .word 0x02105D58
+_02030668: .word 0x0000067F
+_0203066C: .word FUN_020304D4
+_02030670: .word 0x0000FFFE
+
+ thumb_func_start FUN_02030674
+FUN_02030674: ; 0x02030674
+ push {r3-r7, lr}
+ ldr r7, _02030798 ; =0x021C59F4
+ mov r6, #0x0
+ ldr r5, [r7, #0x4]
+ ldr r2, _0203079C ; =0x0000062C
+ add r4, r6, #0x0
+ ldrb r0, [r5, r2]
+ cmp r0, #0x0
+ beq _02030690
+ sub r1, r2, #0x4
+ ldrh r1, [r5, r1]
+ mov r3, #0xf0
+ tst r3, r1
+ bne _02030692
+_02030690:
+ b _02030794
+_02030692:
+ cmp r0, #0x2
+ bne _020306D0
+ mov r0, #0x20
+ tst r0, r1
+ beq _020306A4
+ mov r0, #0x10
+ orr r0, r6
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+_020306A4:
+ mov r0, #0x10
+ tst r0, r1
+ beq _020306B2
+ mov r0, #0x20
+ orr r0, r4
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+_020306B2:
+ mov r0, #0x40
+ tst r0, r1
+ beq _020306C0
+ mov r0, #0x80
+ orr r0, r4
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+_020306C0:
+ mov r0, #0x80
+ tst r0, r1
+ beq _0203077E
+ mov r0, #0x40
+ orr r0, r4
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ b _0203077E
+_020306D0:
+ add r0, r2, #0x2
+ ldrh r0, [r5, r0]
+ cmp r0, #0x0
+ beq _020306F2
+ add r4, r0, #0x0
+ add r0, r2, #0x1
+ ldrsb r0, [r5, r0]
+ sub r1, r0, #0x1
+ add r0, r2, #0x1
+ strb r1, [r5, r0]
+ ldr r1, [r7, #0x4]
+ ldrsb r0, [r1, r0]
+ cmp r0, #0x0
+ bge _0203077E
+ add r0, r2, #0x2
+ strh r6, [r1, r0]
+ b _0203077E
+_020306F2:
+ add r0, r2, #0x0
+ sub r0, #0x34
+ add r6, r5, r0
+ sub r2, #0x34
+ ldr r0, [r6, #0x8]
+ ldr r1, [r6, #0xc]
+ ldr r2, [r5, r2]
+ ldr r3, [r6, #0x4]
+ blx _ll_mul
+ add r3, r0, #0x0
+ add r2, r1, #0x0
+ ldr r0, [r6, #0x10]
+ ldr r1, [r6, #0x14]
+ add r0, r0, r3
+ adc r1, r2
+ ldr r2, _020307A0 ; =0x000005F8
+ str r0, [r5, r2]
+ mov r2, #0x0
+ str r1, [r6, #0x4]
+ lsr r0, r1, #0x1e
+ lsl r1, r2, #0x2
+ orr r1, r0
+ cmp r1, #0x3
+ bhi _02030746
+ add r0, r1, r1
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02030730: ; jump table (using 16-bit offset)
+ .short _02030738 - _02030730 - 2; case 0
+ .short _0203073C - _02030730 - 2; case 1
+ .short _02030740 - _02030730 - 2; case 2
+ .short _02030744 - _02030730 - 2; case 3
+_02030738:
+ mov r4, #0x20
+ b _02030746
+_0203073C:
+ mov r4, #0x10
+ b _02030746
+_02030740:
+ mov r4, #0x40
+ b _02030746
+_02030744:
+ mov r4, #0x80
+_02030746:
+ ldr r0, _02030798 ; =0x021C59F4
+ ldr r5, [r0, #0x4]
+ ldr r0, _020307A0 ; =0x000005F8
+ add r6, r5, r0
+ ldr r0, [r6, #0x8]
+ ldr r1, [r6, #0xc]
+ ldr r2, [r6, #0x0]
+ ldr r3, [r6, #0x4]
+ blx _ll_mul
+ ldr r3, [r6, #0x10]
+ ldr r2, [r6, #0x14]
+ add r0, r3, r0
+ adc r2, r1
+ ldr r1, _020307A0 ; =0x000005F8
+ mov r3, #0x0
+ str r0, [r5, r1]
+ str r2, [r6, #0x4]
+ lsr r0, r2, #0x1c
+ lsl r2, r3, #0x4
+ orr r2, r0
+ add r0, r1, #0x0
+ add r0, #0x35
+ strb r2, [r5, r0]
+ ldr r0, _02030798 ; =0x021C59F4
+ add r1, #0x36
+ ldr r0, [r0, #0x4]
+ strh r4, [r0, r1]
+_0203077E:
+ ldr r2, _02030798 ; =0x021C59F4
+ ldr r1, _020307A4 ; =0x00000628
+ ldr r5, [r2, #0x4]
+ mov r0, #0xf0
+ ldrh r3, [r5, r1]
+ bic r3, r0
+ strh r3, [r5, r1]
+ ldr r2, [r2, #0x4]
+ ldrh r0, [r2, r1]
+ add r0, r0, r4
+ strh r0, [r2, r1]
+_02030794:
+ pop {r3-r7, pc}
+ nop
+_02030798: .word 0x021C59F4
+_0203079C: .word 0x0000062C
+_020307A0: .word 0x000005F8
+_020307A4: .word 0x00000628
+
+ thumb_func_start FUN_020307A8
+FUN_020307A8: ; 0x020307A8
+ ldr r0, _020307B4 ; =0x021C59F4
+ mov r2, #0x1
+ ldr r1, [r0, #0x4]
+ ldr r0, _020307B8 ; =0x0000062C
+ strb r2, [r1, r0]
+ bx lr
+ .balign 4
+_020307B4: .word 0x021C59F4
+_020307B8: .word 0x0000062C
+
+ thumb_func_start FUN_020307BC
+FUN_020307BC: ; 0x020307BC
+ ldr r0, _020307C8 ; =0x021C59F4
+ mov r2, #0x2
+ ldr r1, [r0, #0x4]
+ ldr r0, _020307CC ; =0x0000062C
+ strb r2, [r1, r0]
+ bx lr
+ .balign 4
+_020307C8: .word 0x021C59F4
+_020307CC: .word 0x0000062C
+
+ thumb_func_start FUN_020307D0
+FUN_020307D0: ; 0x020307D0
+ ldr r0, _020307DC ; =0x021C59F4
+ mov r2, #0x0
+ ldr r1, [r0, #0x4]
+ ldr r0, _020307E0 ; =0x0000062C
+ strb r2, [r1, r0]
+ bx lr
+ .balign 4
+_020307DC: .word 0x021C59F4
+_020307E0: .word 0x0000062C
+
+ thumb_func_start FUN_020307E4
+FUN_020307E4: ; 0x020307E4
+ push {r4-r7}
+ ldr r4, _02030868 ; =0x021C59F4
+ lsl r6, r1, #0x1
+ ldr r2, [r4, #0x4]
+ mov r5, #0x0
+ add r3, r2, r6
+ mov r2, #0x61
+ lsl r2, r2, #0x4
+ strh r5, [r3, r2]
+ ldrb r5, [r0, #0x0]
+ mov r3, #0x10
+ add r7, r5, #0x0
+ and r7, r3
+ cmp r7, #0x10
+ bne _02030860
+ mov r7, #0xc
+ and r5, r7
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x18
+ bne _0203081A
+ ldr r3, [r4, #0x4]
+ add r4, r3, r2
+ ldrh r3, [r4, r6]
+ mov r2, #0x40
+ orr r2, r3
+ strh r2, [r4, r6]
+ b _0203084C
+_0203081A:
+ cmp r5, #0x4
+ bne _0203082C
+ ldr r3, [r4, #0x4]
+ add r4, r3, r2
+ ldrh r3, [r4, r6]
+ mov r2, #0x80
+ orr r2, r3
+ strh r2, [r4, r6]
+ b _0203084C
+_0203082C:
+ cmp r5, #0x8
+ bne _0203083E
+ ldr r3, [r4, #0x4]
+ add r4, r3, r2
+ ldrh r3, [r4, r6]
+ mov r2, #0x20
+ orr r2, r3
+ strh r2, [r4, r6]
+ b _0203084C
+_0203083E:
+ cmp r5, #0xc
+ bne _0203084C
+ ldr r4, [r4, #0x4]
+ add r4, r4, r2
+ ldrh r2, [r4, r6]
+ orr r2, r3
+ strh r2, [r4, r6]
+_0203084C:
+ ldrb r0, [r0, #0x0]
+ asr r2, r0, #0x5
+ mov r0, #0x7
+ and r2, r0
+ ldr r0, _02030868 ; =0x021C59F4
+ ldr r0, [r0, #0x4]
+ add r1, r0, r1
+ mov r0, #0x62
+ lsl r0, r0, #0x4
+ strb r2, [r1, r0]
+_02030860:
+ mov r0, #0x1
+ pop {r4-r7}
+ bx lr
+ nop
+_02030868: .word 0x021C59F4
+
+ thumb_func_start FUN_0203086C
+FUN_0203086C: ; 0x0203086C
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02030870
+FUN_02030870: ; 0x02030870
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _0203091C ; =0x021C59F4
+ ldr r1, [r0, #0x4]
+ ldr r0, _02030920 ; =0x0000062A
+ ldrb r0, [r1, r0]
+ cmp r0, #0x0
+ beq _02030884
+ mov r0, #0x0
+ pop {r4, pc}
+_02030884:
+ bl FUN_02030FE0
+ cmp r0, #0x0
+ bne _02030890
+ mov r0, #0x0
+ pop {r4, pc}
+_02030890:
+ ldr r0, _0203091C ; =0x021C59F4
+ ldr r2, [r0, #0x4]
+ ldr r0, _02030924 ; =0x00000681
+ ldrb r1, [r2, r0]
+ cmp r1, #0x0
+ beq _020308A0
+ sub r1, r1, #0x1
+ strb r1, [r2, r0]
+_020308A0:
+ ldr r1, _0203091C ; =0x021C59F4
+ ldr r0, _02030928 ; =0x00000628
+ ldr r2, [r1, #0x4]
+ mov r3, #0x40
+ ldrh r2, [r2, r0]
+ tst r3, r2
+ beq _020308C0
+ ldrb r3, [r4, #0x0]
+ mov r2, #0x10
+ add r0, #0x59
+ orr r2, r3
+ strb r2, [r4, #0x0]
+ ldr r1, [r1, #0x4]
+ mov r2, #0x8
+ strb r2, [r1, r0]
+ b _02030906
+_020308C0:
+ mov r3, #0x80
+ tst r3, r2
+ beq _020308D8
+ ldrb r3, [r4, #0x0]
+ mov r2, #0x14
+ add r0, #0x59
+ orr r2, r3
+ strb r2, [r4, #0x0]
+ ldr r1, [r1, #0x4]
+ mov r2, #0x8
+ strb r2, [r1, r0]
+ b _02030906
+_020308D8:
+ mov r3, #0x20
+ tst r3, r2
+ beq _020308F0
+ ldrb r3, [r4, #0x0]
+ mov r2, #0x18
+ add r0, #0x59
+ orr r2, r3
+ strb r2, [r4, #0x0]
+ ldr r1, [r1, #0x4]
+ mov r2, #0x8
+ strb r2, [r1, r0]
+ b _02030906
+_020308F0:
+ mov r3, #0x10
+ tst r2, r3
+ beq _02030906
+ ldrb r3, [r4, #0x0]
+ mov r2, #0x1c
+ add r0, #0x59
+ orr r2, r3
+ strb r2, [r4, #0x0]
+ ldr r1, [r1, #0x4]
+ mov r2, #0x8
+ strb r2, [r1, r0]
+_02030906:
+ ldr r0, _0203091C ; =0x021C59F4
+ ldrb r2, [r4, #0x0]
+ ldr r1, [r0, #0x4]
+ ldr r0, _0203092C ; =0x0000062B
+ ldrb r0, [r1, r0]
+ lsl r0, r0, #0x5
+ orr r0, r2
+ strb r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r4, pc}
+ nop
+_0203091C: .word 0x021C59F4
+_02030920: .word 0x0000062A
+_02030924: .word 0x00000681
+_02030928: .word 0x00000628
+_0203092C: .word 0x0000062B
+
+ thumb_func_start FUN_02030930
+FUN_02030930: ; 0x02030930
+ push {r3-r5, lr}
+ sub sp, #0x8
+ add r4, r0, #0x0
+ bl FUN_02033534
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_02031228
+ add r5, r0, #0x0
+ bl FUN_02033534
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_0202D858
+ ldr r0, _020309F0 ; =0x021C59F4
+ ldr r1, [r0, #0x4]
+ ldr r0, _020309F4 ; =0x00000684
+ ldrb r0, [r1, r0]
+ cmp r0, #0x0
+ bne _02030960
+ mov r0, #0x0
+ b _02030962
+_02030960:
+ mov r0, #0x1
+_02030962:
+ strb r0, [r4, #0x0]
+ bl FUN_0202FA28
+ cmp r0, #0x0
+ bne _02030972
+ add r0, r4, #0x0
+ bl FUN_02030870
+_02030972:
+ ldr r1, _020309F0 ; =0x021C59F4
+ ldr r0, _020309F4 ; =0x00000684
+ ldr r2, [r1, #0x4]
+ mov r3, #0x0
+ strb r3, [r2, r0]
+ ldr r1, [r1, #0x4]
+ ldr r0, _020309F8 ; =0x0000054C
+ add r0, r1, r0
+ bl FUN_0202D4E4
+ cmp r0, #0x0
+ beq _0203099E
+ ldrb r1, [r4, #0x0]
+ mov r0, #0x2
+ orr r0, r1
+ strb r0, [r4, #0x0]
+ ldrb r0, [r4, #0x0]
+ cmp r0, #0x2
+ bne _020309E8
+ add sp, #0x8
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0203099E:
+ sub r0, r5, #0x1
+ str r0, [sp, #0x4]
+ add r0, r4, #0x1
+ str r0, [sp, #0x0]
+ ldr r0, _020309F0 ; =0x021C59F4
+ mov r2, #0x1
+ ldr r1, [r0, #0x4]
+ ldr r0, _020309F8 ; =0x0000054C
+ add r0, r1, r0
+ add r1, sp, #0x0
+ bl FUN_0202D760
+ cmp r0, #0x0
+ bne _020309C4
+ ldr r0, _020309F0 ; =0x021C59F4
+ mov r2, #0x1
+ ldr r1, [r0, #0x4]
+ ldr r0, _020309F4 ; =0x00000684
+ strb r2, [r1, r0]
+_020309C4:
+ bl FUN_0202FA28
+ cmp r0, #0x1
+ bne _020309E8
+ ldr r2, _020309F0 ; =0x021C59F4
+ ldr r1, _020309FC ; =0x0000065E
+ ldr r3, [r2, #0x4]
+ ldrb r0, [r3, r1]
+ add r0, r0, #0x1
+ strb r0, [r3, r1]
+ ldr r2, [r2, #0x4]
+ ldrb r0, [r4, #0x0]
+ ldrb r1, [r2, r1]
+ lsl r2, r1, #0x4
+ mov r1, #0xf0
+ and r1, r2
+ orr r0, r1
+ strb r0, [r4, #0x0]
+_020309E8:
+ mov r0, #0x1
+ add sp, #0x8
+ pop {r3-r5, pc}
+ nop
+_020309F0: .word 0x021C59F4
+_020309F4: .word 0x00000684
+_020309F8: .word 0x0000054C
+_020309FC: .word 0x0000065E
+
+ thumb_func_start FUN_02030A00
+FUN_02030A00: ; 0x02030A00
+ push {r4, lr}
+ sub sp, #0x8
+ add r4, r0, #0x0
+ mov r0, #0xb
+ strb r0, [r4, #0x0]
+ ldr r0, _02030A6C ; =0x021C59F4
+ ldr r1, [r0, #0x4]
+ ldr r0, _02030A70 ; =0x00000685
+ ldrb r0, [r1, r0]
+ cmp r0, #0x0
+ bne _02030A1A
+ mov r0, #0x0
+ b _02030A1C
+_02030A1A:
+ mov r0, #0x1
+_02030A1C:
+ strb r0, [r4, #0x1]
+ bl FUN_0202CB8C
+ asr r1, r0, #0x8
+ strb r1, [r4, #0x2]
+ strb r0, [r4, #0x3]
+ mov r0, #0xbb
+ str r0, [sp, #0x4]
+ add r0, r4, #0x5
+ str r0, [sp, #0x0]
+ ldr r0, _02030A6C ; =0x021C59F4
+ mov r2, #0x0
+ ldr r1, [r0, #0x4]
+ ldr r0, _02030A74 ; =0x0000056C
+ add r0, r1, r0
+ add r1, sp, #0x0
+ bl FUN_0202D760
+ cmp r0, #0x0
+ beq _02030A5A
+ ldr r0, _02030A6C ; =0x021C59F4
+ mov r2, #0x0
+ ldr r1, [r0, #0x4]
+ ldr r0, _02030A70 ; =0x00000685
+ strb r2, [r1, r0]
+ ldr r1, [sp, #0x4]
+ mov r0, #0xbb
+ sub r0, r0, r1
+ add sp, #0x8
+ strb r0, [r4, #0x4]
+ pop {r4, pc}
+_02030A5A:
+ ldr r0, _02030A6C ; =0x021C59F4
+ mov r2, #0x1
+ ldr r1, [r0, #0x4]
+ ldr r0, _02030A70 ; =0x00000685
+ strb r2, [r1, r0]
+ mov r0, #0xbb
+ strb r0, [r4, #0x4]
+ add sp, #0x8
+ pop {r4, pc}
+ .balign 4
+_02030A6C: .word 0x021C59F4
+_02030A70: .word 0x00000685
+_02030A74: .word 0x0000056C
+
+ thumb_func_start FUN_02030A78
+FUN_02030A78: ; 0x02030A78
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_02031190
+ bl FUN_02030E7C
+ cmp r0, #0x0
+ bne _02030A9C
+ bl FUN_02031280
+ cmp r0, #0x0
+ bne _02030A9C
+ add sp, #0x8
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_02030A9C:
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ mov r0, #0x0
+ str r0, [sp, #0x4]
+ ldr r0, _02030AD4 ; =0x021C59F4
+ add r2, r4, #0x0
+ ldr r1, [r0, #0x4]
+ ldr r0, _02030AD8 ; =0x0000054C
+ add r3, r6, #0x0
+ add r0, r1, r0
+ add r1, r5, #0x0
+ bl FUN_0202D684
+ cmp r0, #0x0
+ beq _02030AC0
+ add sp, #0x8
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_02030AC0:
+ bl FUN_02033534
+ cmp r0, #0xa
+ bne _02030ACC
+ bl FUN_02031454
+_02030ACC:
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r4-r6, pc}
+ nop
+_02030AD4: .word 0x021C59F4
+_02030AD8: .word 0x0000054C
+
+ thumb_func_start FUN_02030ADC
+FUN_02030ADC: ; 0x02030ADC
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_02031190
+ bl FUN_02030E7C
+ cmp r0, #0x0
+ bne _02030B00
+ bl FUN_02031280
+ cmp r0, #0x0
+ bne _02030B00
+ add sp, #0x8
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_02030B00:
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ str r0, [sp, #0x4]
+ ldr r0, _02030B34 ; =0x021C59F4
+ add r2, r4, #0x0
+ ldr r1, [r0, #0x4]
+ ldr r0, _02030B38 ; =0x0000054C
+ add r3, r6, #0x0
+ add r0, r1, r0
+ add r1, r5, #0x0
+ bl FUN_0202D684
+ cmp r0, #0x0
+ beq _02030B22
+ add sp, #0x8
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_02030B22:
+ bl FUN_02033534
+ cmp r0, #0xa
+ bne _02030B2E
+ bl FUN_02031454
+_02030B2E:
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r4-r6, pc}
+ .balign 4
+_02030B34: .word 0x021C59F4
+_02030B38: .word 0x0000054C
+
+ thumb_func_start FUN_02030B3C
+FUN_02030B3C: ; 0x02030B3C
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_02031190
+ cmp r0, #0x0
+ beq _02030B58
+ bl ErrorHandling
+ add sp, #0x8
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_02030B58:
+ mov r0, #0x0
+ bl FUN_02030E7C
+ cmp r0, #0x0
+ bne _02030B70
+ bl FUN_02031280
+ cmp r0, #0x0
+ bne _02030B70
+ add sp, #0x8
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_02030B70:
+ bl FUN_0202FA28
+ cmp r0, #0x1
+ bne _02030B86
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_02030A78
+ add sp, #0x8
+ pop {r4-r6, pc}
+_02030B86:
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ mov r0, #0x0
+ str r0, [sp, #0x4]
+ ldr r0, _02030BBC ; =0x021C59F4
+ add r2, r4, #0x0
+ ldr r1, [r0, #0x4]
+ ldr r0, _02030BC0 ; =0x0000056C
+ add r3, r6, #0x0
+ add r0, r1, r0
+ add r1, r5, #0x0
+ bl FUN_0202D684
+ cmp r0, #0x0
+ beq _02030BAA
+ add sp, #0x8
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_02030BAA:
+ bl FUN_02033534
+ cmp r0, #0xa
+ bne _02030BB6
+ bl FUN_02031454
+_02030BB6:
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r4-r6, pc}
+ .balign 4
+_02030BBC: .word 0x021C59F4
+_02030BC0: .word 0x0000056C
+
+ thumb_func_start FUN_02030BC4
+FUN_02030BC4: ; 0x02030BC4
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_02031190
+ cmp r0, #0x0
+ beq _02030BE0
+ bl FUN_02031454
+ add sp, #0x8
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_02030BE0:
+ mov r0, #0x0
+ bl FUN_02030E7C
+ cmp r0, #0x0
+ bne _02030BF8
+ bl FUN_02031280
+ cmp r0, #0x0
+ bne _02030BF8
+ add sp, #0x8
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_02030BF8:
+ bl FUN_0202FA28
+ cmp r0, #0x1
+ bne _02030C0E
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_02030ADC
+ add sp, #0x8
+ pop {r4-r6, pc}
+_02030C0E:
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ str r0, [sp, #0x4]
+ ldr r0, _02030C44 ; =0x021C59F4
+ add r2, r4, #0x0
+ ldr r1, [r0, #0x4]
+ ldr r0, _02030C48 ; =0x0000056C
+ add r3, r6, #0x0
+ add r0, r1, r0
+ add r1, r5, #0x0
+ bl FUN_0202D684
+ cmp r0, #0x0
+ beq _02030C30
+ add sp, #0x8
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_02030C30:
+ bl FUN_02033534
+ cmp r0, #0xa
+ bne _02030C3C
+ bl FUN_02031454
+_02030C3C:
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r4-r6, pc}
+ nop
+_02030C44: .word 0x021C59F4
+_02030C48: .word 0x0000056C
+
+ thumb_func_start FUN_02030C4C
+FUN_02030C4C: ; 0x02030C4C
+ ldr r3, _02030C54 ; =FUN_02030BC4
+ mov r2, #0x0
+ bx r3
+ nop
+_02030C54: .word FUN_02030BC4
+
+ thumb_func_start FUN_02030C58
+FUN_02030C58: ; 0x02030C58
+ ldr r0, _02030C64 ; =0x021C59F4
+ ldr r3, _02030C68 ; =FUN_0202D498
+ ldr r1, [r0, #0x4]
+ ldr r0, _02030C6C ; =0x00000464
+ add r0, r1, r0
+ bx r3
+ .balign 4
+_02030C64: .word 0x021C59F4
+_02030C68: .word FUN_0202D498
+_02030C6C: .word 0x00000464
+
+ thumb_func_start FUN_02030C70
+FUN_02030C70: ; 0x02030C70
+ push {r4, lr}
+ ldr r4, [sp, #0x8]
+ bl FUN_0202D934
+ mov r0, #0xee
+ strb r0, [r4, #0xa]
+ ldr r0, _02030C88 ; =0x0000FFFF
+ strh r0, [r4, #0x8]
+ mov r0, #0x0
+ str r0, [r4, #0x4]
+ str r0, [r4, #0x0]
+ pop {r4, pc}
+ .balign 4
+_02030C88: .word 0x0000FFFF
+
+ thumb_func_start FUN_02030C8C
+FUN_02030C8C: ; 0x02030C8C
+ push {r4-r7, lr}
+ sub sp, #0x14
+ add r6, r0, #0x0
+ str r1, [sp, #0x4]
+ str r2, [sp, #0x8]
+ ldr r5, [sp, #0x28]
+ bl FUN_0202D478
+ cmp r0, #0x0
+ beq _02030D94
+_02030CA0:
+ ldrb r7, [r5, #0xa]
+ cmp r7, #0xee
+ bne _02030CB2
+ add r0, r6, #0x0
+ bl FUN_0202D41C
+ add r7, r0, #0x0
+ cmp r7, #0xee
+ beq _02030D8A
+_02030CB2:
+ mov r0, #0x4
+ ldrsh r0, [r6, r0]
+ strb r7, [r5, #0xa]
+ ldrh r4, [r5, #0x8]
+ str r0, [sp, #0x10]
+ ldr r0, _02030D98 ; =0x0000FFFF
+ cmp r4, r0
+ bne _02030D06
+ add r0, r7, #0x0
+ bl FUN_0202D9A0
+ add r4, r0, #0x0
+ ldr r0, _02030D9C ; =0x021C59F4
+ ldr r1, [r0, #0x4]
+ ldr r0, _02030DA0 ; =0x00000689
+ ldrb r0, [r1, r0]
+ cmp r0, #0x0
+ bne _02030D94
+ ldr r0, _02030D98 ; =0x0000FFFF
+ cmp r4, r0
+ bne _02030D04
+ add r0, r6, #0x0
+ bl FUN_0202D478
+ cmp r0, #0x1
+ bge _02030CEE
+ ldr r0, [sp, #0x10]
+ add sp, #0x14
+ strh r0, [r6, #0x4]
+ pop {r4-r7, pc}
+_02030CEE:
+ add r0, r6, #0x0
+ bl FUN_0202D41C
+ lsl r4, r0, #0x8
+ add r0, r6, #0x0
+ bl FUN_0202D41C
+ add r4, r4, r0
+ mov r0, #0x4
+ ldrsh r0, [r6, r0]
+ str r0, [sp, #0x10]
+_02030D04:
+ strh r4, [r5, #0x8]
+_02030D06:
+ add r0, r7, #0x0
+ bl FUN_0202DA04
+ cmp r0, #0x0
+ beq _02030D5E
+ ldr r0, [r5, #0x4]
+ cmp r0, #0x0
+ bne _02030D22
+ ldrh r2, [r5, #0x8]
+ ldr r1, [sp, #0x4]
+ add r0, r7, #0x0
+ bl FUN_0202DA40
+ str r0, [r5, #0x4]
+_02030D22:
+ ldr r2, [r5, #0x0]
+ ldr r1, [sp, #0x8]
+ add r0, r6, #0x0
+ sub r2, r4, r2
+ bl FUN_0202D400
+ ldr r2, [r5, #0x4]
+ str r0, [sp, #0xc]
+ cmp r2, #0x0
+ beq _02030D42
+ ldr r1, [r5, #0x0]
+ ldr r0, [sp, #0x8]
+ add r1, r2, r1
+ ldr r2, [sp, #0xc]
+ blx MI_CpuCopy8
+_02030D42:
+ ldr r1, [r5, #0x0]
+ ldr r0, [sp, #0xc]
+ add r0, r1, r0
+ str r0, [r5, #0x0]
+ cmp r0, r4
+ blt _02030D8A
+ str r5, [sp, #0x0]
+ ldr r0, [sp, #0x4]
+ ldr r3, [r5, #0x4]
+ add r1, r7, #0x0
+ add r2, r4, #0x0
+ bl FUN_02030C70
+ b _02030D8A
+_02030D5E:
+ add r0, r6, #0x0
+ bl FUN_0202D478
+ cmp r0, r4
+ blt _02030D82
+ ldr r1, [sp, #0x8]
+ add r0, r6, #0x0
+ add r2, r4, #0x0
+ bl FUN_0202D400
+ ldr r0, [sp, #0x4]
+ ldr r3, [sp, #0x8]
+ add r1, r7, #0x0
+ add r2, r4, #0x0
+ str r5, [sp, #0x0]
+ bl FUN_02030C70
+ b _02030D8A
+_02030D82:
+ ldr r0, [sp, #0x10]
+ add sp, #0x14
+ strh r0, [r6, #0x4]
+ pop {r4-r7, pc}
+_02030D8A:
+ add r0, r6, #0x0
+ bl FUN_0202D478
+ cmp r0, #0x0
+ bne _02030CA0
+_02030D94:
+ add sp, #0x14
+ pop {r4-r7, pc}
+ .balign 4
+_02030D98: .word 0x0000FFFF
+_02030D9C: .word 0x021C59F4
+_02030DA0: .word 0x00000689
+
+ thumb_func_start FUN_02030DA4
+FUN_02030DA4: ; 0x02030DA4
+ push {r3, lr}
+ ldr r0, _02030DF0 ; =0x021C59F4
+ ldr r1, [r0, #0x4]
+ cmp r1, #0x0
+ beq _02030DEE
+ ldr r0, _02030DF4 ; =0x0000068B
+ ldrb r0, [r1, r0]
+ cmp r0, #0x0
+ bne _02030DEE
+ mov r0, #0x47
+ lsl r0, r0, #0x4
+ add r0, r1, r0
+ bl FUN_0202D4BC
+ ldr r0, _02030DF0 ; =0x021C59F4
+ ldr r1, [r0, #0x4]
+ mov r0, #0x47
+ lsl r0, r0, #0x4
+ add r0, r1, r0
+ bl FUN_0202D478
+ cmp r0, #0x0
+ ble _02030DEE
+ ldr r0, _02030DF0 ; =0x021C59F4
+ mov r2, #0x47
+ ldr r3, [r0, #0x4]
+ ldr r0, _02030DF8 ; =0x000005EC
+ lsl r2, r2, #0x4
+ add r0, r3, r0
+ str r0, [sp, #0x0]
+ add r0, r3, r2
+ sub r2, #0x10
+ ldr r2, [r3, r2]
+ mov r1, #0x0
+ mov r3, #0x1
+ bl FUN_02030C8C
+_02030DEE:
+ pop {r3, pc}
+ .balign 4
+_02030DF0: .word 0x021C59F4
+_02030DF4: .word 0x0000068B
+_02030DF8: .word 0x000005EC
+
+ thumb_func_start FUN_02030DFC
+FUN_02030DFC: ; 0x02030DFC
+ push {r3-r7, lr}
+ ldr r0, _02030E6C ; =0x021C59F4
+ ldr r1, [r0, #0x4]
+ cmp r1, #0x0
+ beq _02030E68
+ ldr r0, _02030E70 ; =0x0000068B
+ ldrb r0, [r1, r0]
+ cmp r0, #0x0
+ bne _02030E68
+ bl FUN_02033534
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_0202D858
+ add r7, r0, #0x1
+ mov r4, #0x0
+ cmp r7, #0x0
+ ble _02030E68
+ ldr r6, _02030E6C ; =0x021C59F4
+ add r5, r4, #0x0
+_02030E26:
+ ldr r1, [r6, #0x4]
+ ldr r0, _02030E74 ; =0x000004E8
+ add r0, r1, r0
+ add r0, r0, r5
+ bl FUN_0202D4BC
+ ldr r1, [r6, #0x4]
+ ldr r0, _02030E74 ; =0x000004E8
+ add r0, r1, r0
+ add r0, r0, r5
+ bl FUN_0202D478
+ cmp r0, #0x0
+ ble _02030E60
+ ldr r3, [r6, #0x4]
+ ldr r0, _02030E78 ; =0x0000058C
+ mov r2, #0x46
+ add r0, r3, r0
+ add r0, r0, r5
+ str r0, [sp, #0x0]
+ ldr r0, _02030E74 ; =0x000004E8
+ lsl r2, r2, #0x4
+ add r0, r3, r0
+ ldr r2, [r3, r2]
+ add r0, r0, r5
+ add r1, r4, #0x0
+ mov r3, #0x0
+ bl FUN_02030C8C
+_02030E60:
+ add r4, r4, #0x1
+ add r5, #0xc
+ cmp r4, r7
+ blt _02030E26
+_02030E68:
+ pop {r3-r7, pc}
+ nop
+_02030E6C: .word 0x021C59F4
+_02030E70: .word 0x0000068B
+_02030E74: .word 0x000004E8
+_02030E78: .word 0x0000058C
+
+ thumb_func_start FUN_02030E7C
+FUN_02030E7C: ; 0x02030E7C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _02030F14 ; =0x021C59F4
+ ldr r0, [r0, #0x4]
+ cmp r0, #0x0
+ bne _02030E8C
+ mov r0, #0x0
+ pop {r4, pc}
+_02030E8C:
+ bl FUN_02033534
+ cmp r0, #0x13
+ blt _02030EC0
+ ldr r0, _02030F14 ; =0x021C59F4
+ ldr r1, [r0, #0x4]
+ ldr r0, _02030F18 ; =0x00000687
+ ldrb r0, [r1, r0]
+ cmp r0, #0x0
+ beq _02030EBC
+ bl FUN_021D8018
+ mov r1, #0x0
+ mvn r1, r1
+ cmp r0, r1
+ beq _02030EBC
+ cmp r4, #0x0
+ bne _02030EB4
+ mov r0, #0x1
+ pop {r4, pc}
+_02030EB4:
+ cmp r4, #0x1
+ bne _02030EBC
+ mov r0, #0x1
+ pop {r4, pc}
+_02030EBC:
+ mov r0, #0x0
+ pop {r4, pc}
+_02030EC0:
+ bl FUN_02030F40
+ cmp r0, #0x0
+ bne _02030ECC
+ mov r0, #0x0
+ pop {r4, pc}
+_02030ECC:
+ bl FUN_0202CBD4
+ cmp r0, #0x4
+ beq _02030ED8
+ mov r0, #0x0
+ pop {r4, pc}
+_02030ED8:
+ bl FUN_02031190
+ cmp r4, r0
+ bne _02030EE4
+ mov r0, #0x1
+ pop {r4, pc}
+_02030EE4:
+ bl FUN_02031190
+ cmp r0, #0x0
+ bne _02030EFE
+ bl FUN_0202CB8C
+ mov r1, #0x1
+ add r2, r1, #0x0
+ lsl r2, r4
+ tst r0, r2
+ beq _02030F10
+ add r0, r1, #0x0
+ pop {r4, pc}
+_02030EFE:
+ ldr r0, _02030F14 ; =0x021C59F4
+ ldr r1, [r0, #0x4]
+ ldr r0, _02030F1C ; =0x0000065C
+ ldrh r2, [r1, r0]
+ mov r0, #0x1
+ add r1, r0, #0x0
+ lsl r1, r4
+ tst r1, r2
+ bne _02030F12
+_02030F10:
+ mov r0, #0x0
+_02030F12:
+ pop {r4, pc}
+ .balign 4
+_02030F14: .word 0x021C59F4
+_02030F18: .word 0x00000687
+_02030F1C: .word 0x0000065C
+
+ thumb_func_start FUN_02030F20
+FUN_02030F20: ; 0x02030F20
+ push {r3-r5, lr}
+ mov r4, #0x0
+ add r5, r4, #0x0
+_02030F26:
+ lsl r0, r5, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_02030E7C
+ cmp r0, #0x0
+ beq _02030F34
+ add r4, r4, #0x1
+_02030F34:
+ add r5, r5, #0x1
+ cmp r5, #0x8
+ blt _02030F26
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02030F40
+FUN_02030F40: ; 0x02030F40
+ push {r3, lr}
+ ldr r0, _02030F5C ; =0x021C59F4
+ ldr r0, [r0, #0x4]
+ cmp r0, #0x0
+ beq _02030F56
+ bl FUN_02033534
+ cmp r0, #0x13
+ blt _02030F56
+ mov r0, #0x1
+ pop {r3, pc}
+_02030F56:
+ bl FUN_0202EDF8
+ pop {r3, pc}
+ .balign 4
+_02030F5C: .word 0x021C59F4
+
+ thumb_func_start FUN_02030F60
+FUN_02030F60: ; 0x02030F60
+ ldr r1, _02030F6C ; =0x021C59F4
+ ldr r2, [r1, #0x4]
+ ldr r1, _02030F70 ; =0x0000062B
+ strb r0, [r2, r1]
+ bx lr
+ nop
+_02030F6C: .word 0x021C59F4
+_02030F70: .word 0x0000062B
+
+ thumb_func_start FUN_02030F74
+FUN_02030F74: ; 0x02030F74
+ ldr r1, _02030F84 ; =0x021C59F4
+ ldr r1, [r1, #0x4]
+ add r1, r1, r0
+ mov r0, #0x62
+ lsl r0, r0, #0x4
+ ldrb r0, [r1, r0]
+ bx lr
+ nop
+_02030F84: .word 0x021C59F4
+
+ thumb_func_start FUN_02030F88
+FUN_02030F88: ; 0x02030F88
+ ldr r1, _02030FA4 ; =0x021C59F4
+ ldr r2, [r1, #0x4]
+ cmp r2, #0x0
+ bne _02030F94
+ mov r0, #0x0
+ bx lr
+_02030F94:
+ mov r1, #0x61
+ lsl r1, r1, #0x4
+ add r3, r2, r1
+ lsl r2, r0, #0x1
+ ldrh r0, [r3, r2]
+ mov r1, #0x0
+ strh r1, [r3, r2]
+ bx lr
+ .balign 4
+_02030FA4: .word 0x021C59F4
+
+ thumb_func_start FUN_02030FA8
+FUN_02030FA8: ; 0x02030FA8
+ ldr r0, _02030FC0 ; =0x021C59F4
+ ldr r3, [r0, #0x4]
+ cmp r3, #0x0
+ beq _02030FBC
+ ldr r1, _02030FC4 ; =0x00000628
+ mov r0, #0x2
+ ldrh r2, [r3, r1]
+ lsl r0, r0, #0xe
+ orr r0, r2
+ strh r0, [r3, r1]
+_02030FBC:
+ bx lr
+ nop
+_02030FC0: .word 0x021C59F4
+_02030FC4: .word 0x00000628
+
+ thumb_func_start FUN_02030FC8
+FUN_02030FC8: ; 0x02030FC8
+ ldr r0, _02030FD8 ; =0x021C59F4
+ ldr r2, [r0, #0x4]
+ cmp r2, #0x0
+ beq _02030FD6
+ ldr r0, _02030FDC ; =0x00000628
+ mov r1, #0x0
+ strh r1, [r2, r0]
+_02030FD6:
+ bx lr
+ .balign 4
+_02030FD8: .word 0x021C59F4
+_02030FDC: .word 0x00000628
+
+ thumb_func_start FUN_02030FE0
+FUN_02030FE0: ; 0x02030FE0
+ ldr r0, _02030FF8 ; =0x021C59F4
+ ldr r1, [r0, #0x4]
+ cmp r1, #0x0
+ beq _02030FF4
+ ldr r0, _02030FFC ; =0x00000628
+ ldrh r1, [r1, r0]
+ mov r0, #0x2
+ lsl r0, r0, #0xe
+ and r0, r1
+ bx lr
+_02030FF4:
+ mov r0, #0x1
+ bx lr
+ .balign 4
+_02030FF8: .word 0x021C59F4
+_02030FFC: .word 0x00000628
+
+ thumb_func_start FUN_02031000
+FUN_02031000: ; 0x02031000
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_0202FA28
+ cmp r0, #0x1
+ bne _02031030
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ mov r0, #0x0
+ str r0, [sp, #0x4]
+ ldr r0, _02031050 ; =0x021C59F4
+ add r2, r4, #0x0
+ ldr r1, [r0, #0x4]
+ ldr r0, _02031054 ; =0x0000054C
+ add r3, r6, #0x0
+ add r0, r1, r0
+ add r1, r5, #0x0
+ bl FUN_0202D684
+ add sp, #0x8
+ pop {r4-r6, pc}
+_02031030:
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ mov r0, #0x0
+ str r0, [sp, #0x4]
+ ldr r0, _02031050 ; =0x021C59F4
+ add r2, r4, #0x0
+ ldr r1, [r0, #0x4]
+ ldr r0, _02031058 ; =0x0000056C
+ add r3, r6, #0x0
+ add r0, r1, r0
+ add r1, r5, #0x0
+ bl FUN_0202D684
+ add sp, #0x8
+ pop {r4-r6, pc}
+ nop
+_02031050: .word 0x021C59F4
+_02031054: .word 0x0000054C
+_02031058: .word 0x0000056C
+
+ thumb_func_start FUN_0203105C
+FUN_0203105C: ; 0x0203105C
+ push {r3-r5, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ str r0, [sp, #0x4]
+ ldr r0, _02031080 ; =0x021C59F4
+ add r4, r1, #0x0
+ ldr r1, [r0, #0x4]
+ ldr r0, _02031084 ; =0x0000054C
+ add r3, r2, #0x0
+ add r0, r1, r0
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_0202D684
+ add sp, #0x8
+ pop {r3-r5, pc}
+ .balign 4
+_02031080: .word 0x021C59F4
+_02031084: .word 0x0000054C
+
+ thumb_func_start FUN_02031088
+FUN_02031088: ; 0x02031088
+ push {r3, lr}
+ ldr r0, _02031100 ; =0x021C59F4
+ ldr r2, [r0, #0x4]
+ cmp r2, #0x0
+ beq _020310FC
+ ldr r1, _02031104 ; =0x0000067B
+ ldrb r0, [r2, r1]
+ cmp r0, #0x1
+ beq _020310A0
+ cmp r0, #0x3
+ beq _020310D8
+ pop {r3, pc}
+_020310A0:
+ bl FUN_0202FA28
+ cmp r0, #0x1
+ bne _020310B8
+ ldr r1, _02031100 ; =0x021C59F4
+ mov r0, #0xb
+ ldr r2, [r1, #0x4]
+ ldr r1, _02031108 ; =0x0000067C
+ add r1, r2, r1
+ bl FUN_020311D0
+ b _020310C8
+_020310B8:
+ ldr r1, _02031100 ; =0x021C59F4
+ mov r0, #0xb
+ ldr r2, [r1, #0x4]
+ ldr r1, _02031108 ; =0x0000067C
+ add r1, r2, r1
+ mov r2, #0x1
+ bl FUN_02030BC4
+_020310C8:
+ cmp r0, #0x0
+ beq _020310FC
+ ldr r0, _02031100 ; =0x021C59F4
+ mov r2, #0x2
+ ldr r1, [r0, #0x4]
+ ldr r0, _02031104 ; =0x0000067B
+ strb r2, [r1, r0]
+ pop {r3, pc}
+_020310D8:
+ add r1, r1, #0x1
+ mov r0, #0xc
+ add r1, r2, r1
+ bl FUN_020311D0
+ cmp r0, #0x0
+ beq _020310FC
+ ldr r0, _02031100 ; =0x021C59F4
+ ldr r1, [r0, #0x4]
+ ldr r0, _02031108 ; =0x0000067C
+ ldrb r0, [r1, r0]
+ bl FUN_0202F9E0
+ ldr r0, _02031100 ; =0x021C59F4
+ mov r2, #0x0
+ ldr r1, [r0, #0x4]
+ ldr r0, _02031104 ; =0x0000067B
+ strb r2, [r1, r0]
+_020310FC:
+ pop {r3, pc}
+ nop
+_02031100: .word 0x021C59F4
+_02031104: .word 0x0000067B
+_02031108: .word 0x0000067C
+
+ thumb_func_start FUN_0203110C
+FUN_0203110C: ; 0x0203110C
+ push {r4, lr}
+ add r4, r2, #0x0
+ bl FUN_02031190
+ cmp r0, #0x0
+ bne _0203112A
+ ldr r1, _0203112C ; =0x021C59F4
+ ldr r0, _02031130 ; =0x0000067B
+ ldr r2, [r1, #0x4]
+ mov r3, #0x1
+ strb r3, [r2, r0]
+ ldrb r2, [r4, #0x0]
+ ldr r1, [r1, #0x4]
+ add r0, r0, #0x1
+ strb r2, [r1, r0]
+_0203112A:
+ pop {r4, pc}
+ .balign 4
+_0203112C: .word 0x021C59F4
+_02031130: .word 0x0000067B
+
+ thumb_func_start FUN_02031134
+FUN_02031134: ; 0x02031134
+ push {r4, lr}
+ add r4, r2, #0x0
+ bl FUN_02031190
+ cmp r0, #0x0
+ beq _02031152
+ ldr r1, _02031154 ; =0x021C59F4
+ ldrb r3, [r4, #0x0]
+ ldr r2, [r1, #0x4]
+ ldr r0, _02031158 ; =0x0000067C
+ strb r3, [r2, r0]
+ ldr r1, [r1, #0x4]
+ mov r2, #0x3
+ sub r0, r0, #0x1
+ strb r2, [r1, r0]
+_02031152:
+ pop {r4, pc}
+ .balign 4
+_02031154: .word 0x021C59F4
+_02031158: .word 0x0000067C
+
+ thumb_func_start FUN_0203115C
+FUN_0203115C: ; 0x0203115C
+ push {r4, lr}
+ add r4, r2, #0x0
+ bl FUN_02031190
+ cmp r0, #0x0
+ bne _02031184
+ ldr r0, _02031188 ; =0x021C59F4
+ ldr r1, [r0, #0x4]
+ ldr r0, _0203118C ; =0x0000067B
+ ldrb r0, [r1, r0]
+ cmp r0, #0x2
+ bne _02031184
+ ldrb r0, [r4, #0x0]
+ bl FUN_0202F9E0
+ ldr r0, _02031188 ; =0x021C59F4
+ mov r2, #0x0
+ ldr r1, [r0, #0x4]
+ ldr r0, _0203118C ; =0x0000067B
+ strb r2, [r1, r0]
+_02031184:
+ pop {r4, pc}
+ nop
+_02031188: .word 0x021C59F4
+_0203118C: .word 0x0000067B
+
+ thumb_func_start FUN_02031190
+FUN_02031190: ; 0x02031190
+ push {r3, lr}
+ ldr r0, _020311CC ; =0x021C59F4
+ ldr r0, [r0, #0x4]
+ cmp r0, #0x0
+ beq _020311C6
+ bl FUN_02033534
+ cmp r0, #0x13
+ blt _020311B4
+ bl FUN_021D8018
+ mov r1, #0x0
+ mvn r1, r1
+ cmp r0, r1
+ beq _020311C6
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ pop {r3, pc}
+_020311B4:
+ bl FUN_02031280
+ cmp r0, #0x0
+ beq _020311C0
+ mov r0, #0x0
+ pop {r3, pc}
+_020311C0:
+ bl FUN_0202D19C
+ pop {r3, pc}
+_020311C6:
+ mov r0, #0x0
+ pop {r3, pc}
+ nop
+_020311CC: .word 0x021C59F4
+
+ thumb_func_start FUN_020311D0
+FUN_020311D0: ; 0x020311D0
+ ldr r3, _020311D8 ; =FUN_02030ADC
+ mov r2, #0x0
+ bx r3
+ nop
+_020311D8: .word FUN_02030ADC
+
+ thumb_func_start FUN_020311DC
+FUN_020311DC: ; 0x020311DC
+ ldr r3, _020311E4 ; =FUN_02030ADC
+ mov r1, #0x0
+ add r2, r1, #0x0
+ bx r3
+ .balign 4
+_020311E4: .word FUN_02030ADC
+
+ thumb_func_start FUN_020311E8
+FUN_020311E8: ; 0x020311E8
+ ldr r3, _020311EC ; =FUN_0202EE24
+ bx r3
+ .balign 4
+_020311EC: .word FUN_0202EE24
+
+ thumb_func_start FUN_020311F0
+FUN_020311F0: ; 0x020311F0
+ push {r3, lr}
+ bl FUN_02031280
+ cmp r0, #0x0
+ beq _020311FE
+ mov r0, #0x0
+ pop {r3, pc}
+_020311FE:
+ ldr r0, _02031220 ; =0x021C59F4
+ ldr r1, [r0, #0x4]
+ cmp r1, #0x0
+ beq _0203121A
+ ldr r0, _02031224 ; =0x00000689
+ ldrb r0, [r1, r0]
+ cmp r0, #0x0
+ beq _0203121A
+ mov r0, #0x1
+ add r1, r0, #0x0
+ bl FUN_020334E8
+ mov r0, #0x1
+ pop {r3, pc}
+_0203121A:
+ bl FUN_0202EE60
+ pop {r3, pc}
+ .balign 4
+_02031220: .word 0x021C59F4
+_02031224: .word 0x00000689
+
+ thumb_func_start FUN_02031228
+FUN_02031228: ; 0x02031228
+ push {r3, lr}
+ bl FUN_0202D858
+ cmp r0, #0x5
+ blo _02031236
+ mov r0, #0xc
+ pop {r3, pc}
+_02031236:
+ bl FUN_0202FA28
+ cmp r0, #0x0
+ bne _02031242
+ mov r0, #0xc
+ pop {r3, pc}
+_02031242:
+ mov r0, #0x26
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02031248
+FUN_02031248: ; 0x02031248
+ push {r3, lr}
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_0202D858
+ add r0, r0, #0x1
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02031258
+FUN_02031258: ; 0x02031258
+ push {r3, lr}
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_0202D884
+ add r0, r0, #0x1
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02031268
+FUN_02031268: ; 0x02031268
+ ldr r1, _02031278 ; =0x021C59F4
+ ldr r2, [r1, #0x4]
+ cmp r2, #0x0
+ beq _02031274
+ ldr r1, _0203127C ; =0x00000686
+ strb r0, [r2, r1]
+_02031274:
+ bx lr
+ nop
+_02031278: .word 0x021C59F4
+_0203127C: .word 0x00000686
+
+ thumb_func_start FUN_02031280
+FUN_02031280: ; 0x02031280
+ ldr r0, _02031294 ; =0x021C59F4
+ ldr r1, [r0, #0x4]
+ cmp r1, #0x0
+ beq _0203128E
+ ldr r0, _02031298 ; =0x00000686
+ ldrb r0, [r1, r0]
+ bx lr
+_0203128E:
+ mov r0, #0x0
+ bx lr
+ nop
+_02031294: .word 0x021C59F4
+_02031298: .word 0x00000686
+
+ thumb_func_start FUN_0203129C
+FUN_0203129C: ; 0x0203129C
+ push {r3, lr}
+ bl FUN_0202F03C
+ cmp r0, #0x0
+ bne _020312B6
+ bl FUN_02031190
+ cmp r0, #0x0
+ bne _020312B6
+ mov r0, #0x2
+ add r1, sp, #0x0
+ bl FUN_02030C4C
+_020312B6:
+ bl FUN_0202F05C
+ pop {r3, pc}
+
+ thumb_func_start FUN_020312BC
+FUN_020312BC: ; 0x020312BC
+ push {r3-r7, lr}
+ sub sp, #0x20
+ add r4, r0, #0x0
+ add r0, sp, #0x10
+ add r1, sp, #0x4
+ bl FUN_0201265C
+ ldr r0, _02031340 ; =0x021C48B8
+ ldr r6, [sp, #0x10]
+ mov r5, #0x0
+ lsr r7, r6, #0x1c
+ lsl r5, r5, #0x4
+ ldr r1, [sp, #0xc]
+ ldr r0, [r0, #0x2c]
+ lsl r6, r6, #0x4
+ add r3, r1, r0
+ ldr r0, [sp, #0x18]
+ orr r5, r7
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x14]
+ ldr r1, [sp, #0x4]
+ add r6, r0, r6
+ ldr r0, _02031344 ; =0x00000000
+ ldr r2, [sp, #0x8]
+ adc r0, r5
+ lsr r5, r6, #0x1b
+ lsl r0, r0, #0x5
+ orr r0, r5
+ ldr r5, [sp, #0x0]
+ lsl r6, r6, #0x5
+ add r6, r5, r6
+ ldr r5, _02031344 ; =0x00000000
+ adc r5, r0
+ lsr r0, r6, #0x1b
+ lsl r5, r5, #0x5
+ orr r5, r0
+ lsl r0, r6, #0x5
+ add r6, r1, r0
+ ldr r1, _02031344 ; =0x00000000
+ adc r1, r5
+ lsr r0, r6, #0x1a
+ lsl r1, r1, #0x6
+ orr r1, r0
+ lsl r0, r6, #0x6
+ add r5, r2, r0
+ ldr r2, _02031344 ; =0x00000000
+ adc r2, r1
+ lsr r0, r5, #0x1a
+ lsl r1, r2, #0x6
+ orr r1, r0
+ lsl r0, r5, #0x6
+ add r2, r3, r0
+ ldr r0, _02031344 ; =0x00000000
+ str r2, [r4, #0x0]
+ adc r0, r1
+ str r0, [r4, #0x4]
+ ldr r1, _02031348 ; =0x6C078965
+ ldr r0, _0203134C ; =0x5D588B65
+ str r1, [r4, #0x8]
+ str r0, [r4, #0xc]
+ ldr r0, _02031350 ; =0x00269EC3
+ str r0, [r4, #0x10]
+ mov r0, #0x0
+ str r0, [r4, #0x14]
+ add sp, #0x20
+ pop {r3-r7, pc}
+ .balign 4
+_02031340: .word 0x021C48B8
+_02031344: .word 0x00000000
+_02031348: .word 0x6C078965
+_0203134C: .word 0x5D588B65
+_02031350: .word 0x00269EC3
+
+ thumb_func_start FUN_02031354
+FUN_02031354: ; 0x02031354
+ add r1, r0, #0x0
+ ldr r0, _02031364 ; =0x021C59F4
+ ldr r3, _02031368 ; =FUN_0202D830
+ ldr r2, [r0, #0x4]
+ ldr r0, _0203136C ; =0x0000056C
+ add r0, r2, r0
+ bx r3
+ nop
+_02031364: .word 0x021C59F4
+_02031368: .word FUN_0202D830
+_0203136C: .word 0x0000056C
+
+ thumb_func_start FUN_02031370
+FUN_02031370: ; 0x02031370
+ ldr r0, _0203137C ; =0x021C59F4
+ ldr r3, _02031380 ; =FUN_0202D4E4
+ ldr r1, [r0, #0x4]
+ ldr r0, _02031384 ; =0x0000056C
+ add r0, r1, r0
+ bx r3
+ .balign 4
+_0203137C: .word 0x021C59F4
+_02031380: .word FUN_0202D4E4
+_02031384: .word 0x0000056C
+
+ thumb_func_start FUN_02031388
+FUN_02031388: ; 0x02031388
+ ldr r0, _02031394 ; =0x021C59F4
+ ldr r3, _02031398 ; =FUN_0202D4E4
+ ldr r1, [r0, #0x4]
+ ldr r0, _0203139C ; =0x0000054C
+ add r0, r1, r0
+ bx r3
+ .balign 4
+_02031394: .word 0x021C59F4
+_02031398: .word FUN_0202D4E4
+_0203139C: .word 0x0000054C
+
+ thumb_func_start FUN_020313A0
+FUN_020313A0: ; 0x020313A0
+ ldr r1, _020313AC ; =0x021C59F4
+ ldr r2, [r1, #0x4]
+ ldr r1, _020313B0 ; =0x00000687
+ strb r0, [r2, r1]
+ bx lr
+ nop
+_020313AC: .word 0x021C59F4
+_020313B0: .word 0x00000687
+
+ thumb_func_start FUN_020313B4
+FUN_020313B4: ; 0x020313B4
+ ldr r2, _020313C4 ; =0x021C59F4
+ ldr r2, [r2, #0x4]
+ cmp r2, #0x0
+ beq _020313C2
+ add r2, r2, r1
+ ldr r1, _020313C8 ; =0x00000677
+ strb r0, [r2, r1]
+_020313C2:
+ bx lr
+ .balign 4
+_020313C4: .word 0x021C59F4
+_020313C8: .word 0x00000677
+
+ thumb_func_start FUN_020313CC
+FUN_020313CC: ; 0x020313CC
+ ldr r1, _020313E4 ; =0x021C59F4
+ ldr r1, [r1, #0x4]
+ cmp r1, #0x0
+ beq _020313E0
+ add r2, r1, r0
+ ldr r1, _020313E8 ; =0x00000677
+ ldrb r1, [r2, r1]
+ cmp r1, #0xff
+ beq _020313E0
+ add r0, r1, #0x0
+_020313E0:
+ bx lr
+ nop
+_020313E4: .word 0x021C59F4
+_020313E8: .word 0x00000677
+
+ thumb_func_start FUN_020313EC
+FUN_020313EC: ; 0x020313EC
+ push {r3, lr}
+ bl FUN_02033534
+ cmp r0, #0x13
+ bge _020313FA
+ mov r0, #0x0
+ pop {r3, pc}
+_020313FA:
+ bl FUN_021D8624
+ pop {r3, pc}
+
+ thumb_func_start FUN_02031400
+FUN_02031400: ; 0x02031400
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02033534
+ cmp r0, #0x13
+ blt _02031430
+ ldr r2, _02031434 ; =0x021C59F4
+ mov r1, #0x63
+ ldr r0, [r2, #0x4]
+ lsl r1, r1, #0x4
+ str r4, [r0, r1]
+ cmp r4, #0x0
+ beq _02031430
+ ldr r3, [r2, #0x4]
+ mov r4, #0x0
+ add r0, r1, #0x4
+ str r4, [r3, r0]
+ add r0, r1, #0x0
+ ldr r3, [r2, #0x4]
+ add r0, #0x8
+ str r4, [r3, r0]
+ ldr r0, [r2, #0x4]
+ add r1, #0xc
+ str r4, [r0, r1]
+_02031430:
+ pop {r4, pc}
+ nop
+_02031434: .word 0x021C59F4
+
+ thumb_func_start FUN_02031438
+FUN_02031438: ; 0x02031438
+ ldr r0, _0203144C ; =0x021C59F4
+ ldr r1, [r0, #0x4]
+ ldr r0, _02031450 ; =0x00000681
+ ldrb r0, [r1, r0]
+ cmp r0, #0x0
+ beq _02031448
+ mov r0, #0x1
+ bx lr
+_02031448:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+_0203144C: .word 0x021C59F4
+_02031450: .word 0x00000681
+
+ thumb_func_start FUN_02031454
+FUN_02031454: ; 0x02031454
+ ldr r0, _02031460 ; =0x021C59F4
+ mov r2, #0x1
+ ldr r1, [r0, #0x4]
+ ldr r0, _02031464 ; =0x00000689
+ strb r2, [r1, r0]
+ bx lr
+ .balign 4
+_02031460: .word 0x021C59F4
+_02031464: .word 0x00000689
+
+ thumb_func_start FUN_02031468
+FUN_02031468: ; 0x02031468
+ ldr r0, _02031478 ; =0x021C59F4
+ ldr r2, [r0, #0x4]
+ cmp r2, #0x0
+ beq _02031476
+ ldr r0, _0203147C ; =0x0000068A
+ mov r1, #0x1
+ strb r1, [r2, r0]
+_02031476:
+ bx lr
+ .balign 4
+_02031478: .word 0x021C59F4
+_0203147C: .word 0x0000068A
+
+ thumb_func_start FUN_02031480
+FUN_02031480: ; 0x02031480
+ push {r4, lr}
+ ldr r1, _020314C8 ; =0x021C59FC
+ ldr r1, [r1, #0x0]
+ cmp r1, #0x0
+ bne _0203149C
+ ldr r1, _020314CC ; =0x00000253
+ bl FUN_02016998
+ ldr r1, _020314C8 ; =0x021C59FC
+ ldr r2, _020314CC ; =0x00000253
+ str r0, [r1, #0x0]
+ mov r1, #0x0
+ blx MI_CpuFill8
+_0203149C:
+ ldr r1, _020314C8 ; =0x021C59FC
+ mov r3, #0x0
+ mov r0, #0xff
+_020314A2:
+ ldr r2, [r1, #0x0]
+ add r2, r2, r3
+ add r3, r3, #0x1
+ strb r0, [r2, #0x10]
+ cmp r3, #0x8
+ blt _020314A2
+ ldr r3, _020314C8 ; =0x021C59FC
+ mov r1, #0x25
+ ldr r2, [r3, #0x0]
+ lsl r1, r1, #0x4
+ strb r0, [r2, r1]
+ ldr r4, [r3, #0x0]
+ add r2, r1, #0x1
+ strb r0, [r4, r2]
+ ldr r2, [r3, #0x0]
+ mov r4, #0x0
+ add r0, r1, #0x2
+ strb r4, [r2, r0]
+ pop {r4, pc}
+ .balign 4
+_020314C8: .word 0x021C59FC
+_020314CC: .word 0x00000253
+
+ thumb_func_start FUN_020314D0
+FUN_020314D0: ; 0x020314D0
+ push {r3, lr}
+ ldr r0, _020314E4 ; =0x021C59FC
+ ldr r0, [r0, #0x0]
+ bl FUN_02016A18
+ ldr r0, _020314E4 ; =0x021C59FC
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+ pop {r3, pc}
+ nop
+_020314E4: .word 0x021C59FC
+
+ thumb_func_start FUN_020314E8
+FUN_020314E8: ; 0x020314E8
+ ldr r0, _020314F8 ; =0x021C59FC
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _020314F4
+ mov r0, #0x1
+ bx lr
+_020314F4:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+_020314F8: .word 0x021C59FC
+
+ thumb_func_start FUN_020314FC
+FUN_020314FC: ; 0x020314FC
+ push {r3-r6, lr}
+ sub sp, #0x4
+ ldrb r1, [r2, #0x0]
+ add r5, r0, #0x0
+ add r0, sp, #0x0
+ strb r1, [r0, #0x0]
+ bl FUN_02031190
+ cmp r0, #0x0
+ bne _02031556
+ add r0, sp, #0x0
+ strb r5, [r0, #0x1]
+ ldrb r1, [r0, #0x0]
+ strb r1, [r0, #0x2]
+ add r1, sp, #0x0
+ mov r0, #0x12
+ add r1, #0x1
+ bl FUN_02030C4C
+ ldr r6, _0203155C ; =0x021C59FC
+ add r4, sp, #0x0
+ ldr r0, [r6, #0x0]
+ ldrb r1, [r4, #0x0]
+ add r0, r0, r5
+ mov r5, #0x0
+ strb r1, [r0, #0x10]
+_02031530:
+ lsl r0, r5, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_02030E7C
+ cmp r0, #0x0
+ beq _02031548
+ ldr r0, [r6, #0x0]
+ ldrb r1, [r4, #0x0]
+ add r0, r0, r5
+ ldrb r0, [r0, #0x10]
+ cmp r1, r0
+ bne _02031556
+_02031548:
+ add r5, r5, #0x1
+ cmp r5, #0x8
+ blt _02031530
+ mov r0, #0x11
+ add r1, sp, #0x0
+ bl FUN_02030C4C
+_02031556:
+ add sp, #0x4
+ pop {r3-r6, pc}
+ nop
+_0203155C: .word 0x021C59FC
+
+ thumb_func_start FUN_02031560
+FUN_02031560: ; 0x02031560
+ ldr r0, _02031570 ; =0x021C59FC
+ ldrb r3, [r2, #0x1]
+ ldr r1, [r0, #0x0]
+ ldrb r0, [r2, #0x0]
+ add r0, r1, r0
+ strb r3, [r0, #0x10]
+ bx lr
+ nop
+_02031570: .word 0x021C59FC
+
+ thumb_func_start FUN_02031574
+FUN_02031574: ; 0x02031574
+ ldr r0, _02031584 ; =0x021C59FC
+ ldrb r2, [r2, #0x0]
+ ldr r1, [r0, #0x0]
+ mov r0, #0x25
+ lsl r0, r0, #0x4
+ strb r2, [r1, r0]
+ bx lr
+ nop
+_02031584: .word 0x021C59FC
+
+ thumb_func_start FUN_02031588
+FUN_02031588: ; 0x02031588
+ ldr r2, _0203159C ; =0x021C59FC
+ ldr r1, _020315A0 ; =0x00000251
+ ldr r3, [r2, #0x0]
+ strb r0, [r3, r1]
+ ldr r2, [r2, #0x0]
+ mov r3, #0x1
+ add r0, r1, #0x1
+ strb r3, [r2, r0]
+ bx lr
+ nop
+_0203159C: .word 0x021C59FC
+_020315A0: .word 0x00000251
+
+ thumb_func_start FUN_020315A4
+FUN_020315A4: ; 0x020315A4
+ push {r3, lr}
+ ldr r0, _020315D0 ; =0x021C59FC
+ ldr r2, [r0, #0x0]
+ cmp r2, #0x0
+ beq _020315CE
+ ldr r1, _020315D4 ; =0x00000252
+ ldrb r0, [r2, r1]
+ cmp r0, #0x0
+ beq _020315CE
+ sub r1, r1, #0x1
+ mov r0, #0x10
+ add r1, r2, r1
+ bl FUN_020311D0
+ cmp r0, #0x0
+ beq _020315CE
+ ldr r0, _020315D0 ; =0x021C59FC
+ mov r2, #0x0
+ ldr r1, [r0, #0x0]
+ ldr r0, _020315D4 ; =0x00000252
+ strb r2, [r1, r0]
+_020315CE:
+ pop {r3, pc}
+ .balign 4
+_020315D0: .word 0x021C59FC
+_020315D4: .word 0x00000252
+
+ thumb_func_start FUN_020315D8
+FUN_020315D8: ; 0x020315D8
+ ldr r1, _020315F8 ; =0x021C59FC
+ ldr r2, [r1, #0x0]
+ cmp r2, #0x0
+ bne _020315E4
+ mov r0, #0x1
+ bx lr
+_020315E4:
+ mov r1, #0x25
+ lsl r1, r1, #0x4
+ ldrb r1, [r2, r1]
+ cmp r1, r0
+ bne _020315F2
+ mov r0, #0x1
+ bx lr
+_020315F2:
+ mov r0, #0x0
+ bx lr
+ nop
+_020315F8: .word 0x021C59FC
+
+ thumb_func_start FUN_020315FC
+FUN_020315FC: ; 0x020315FC
+ ldr r1, _02031608 ; =0x021C59FC
+ ldr r1, [r1, #0x0]
+ add r0, r1, r0
+ ldrb r0, [r0, #0x10]
+ bx lr
+ nop
+_02031608: .word 0x021C59FC
+
+ thumb_func_start FUN_0203160C
+FUN_0203160C: ; 0x0203160C
+ push {r3-r4}
+ lsl r4, r0, #0x1
+ ldr r0, _02031624 ; =0x021C59FC
+ ldrb r3, [r2, #0x0]
+ ldr r1, [r0, #0x0]
+ strb r3, [r1, r4]
+ ldr r0, [r0, #0x0]
+ ldrb r1, [r2, #0x1]
+ add r0, r0, r4
+ strb r1, [r0, #0x1]
+ pop {r3-r4}
+ bx lr
+ .balign 4
+_02031624: .word 0x021C59FC
+
+ thumb_func_start FUN_02031628
+FUN_02031628: ; 0x02031628
+ mov r0, #0x2
+ bx lr
+
+ thumb_func_start FUN_0203162C
+FUN_0203162C: ; 0x0203162C
+ push {r3, lr}
+ add r2, sp, #0x0
+ strb r0, [r2, #0x0]
+ strb r1, [r2, #0x1]
+ mov r0, #0x13
+ add r1, sp, #0x0
+ bl FUN_020311D0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02031640
+FUN_02031640: ; 0x02031640
+ ldr r2, _02031664 ; =0x021C59FC
+ ldr r3, [r2, #0x0]
+ cmp r3, #0x0
+ bne _0203164E
+ mov r0, #0x0
+ mvn r0, r0
+ bx lr
+_0203164E:
+ lsl r2, r0, #0x1
+ ldrb r0, [r3, r2]
+ cmp r1, r0
+ bne _0203165C
+ add r0, r3, r2
+ ldrb r0, [r0, #0x1]
+ bx lr
+_0203165C:
+ mov r0, #0x0
+ mvn r0, r0
+ bx lr
+ nop
+_02031664: .word 0x021C59FC
+
+ thumb_func_start FUN_02031668
+FUN_02031668: ; 0x02031668
+ push {r3-r7, lr}
+ mov r4, #0x0
+ ldr r6, _02031688 ; =0x021C59FC
+ add r5, r4, #0x0
+ add r7, r4, #0x0
+_02031672:
+ ldr r0, [r6, #0x0]
+ add r1, r7, #0x0
+ add r0, r0, r5
+ mov r2, #0x2
+ blx MI_CpuFill8
+ add r4, r4, #0x1
+ add r5, r5, #0x2
+ cmp r4, #0x8
+ blt _02031672
+ pop {r3-r7, pc}
+ .balign 4
+_02031688: .word 0x021C59FC
+
+ thumb_func_start FUN_0203168C
+FUN_0203168C: ; 0x0203168C
+ push {r3-r4}
+ mov r4, #0x0
+ mov r0, #0x92
+ ldr r1, _020316A8 ; =0x021C59FC
+ add r3, r4, #0x0
+ lsl r0, r0, #0x2
+_02031698:
+ ldr r2, [r1, #0x0]
+ add r2, r2, r4
+ add r4, r4, #0x1
+ strb r3, [r2, r0]
+ cmp r4, #0x8
+ blt _02031698
+ pop {r3-r4}
+ bx lr
+ .balign 4
+_020316A8: .word 0x021C59FC
+
+ thumb_func_start FUN_020316AC
+FUN_020316AC: ; 0x020316AC
+ push {r4, lr}
+ ldr r2, _020316DC ; =0x021C59FC
+ ldr r3, [r2, #0x0]
+ cmp r3, #0x0
+ beq _020316D8
+ add r4, r0, #0x0
+ mov r2, #0x46
+ mul r4, r2
+ add r3, #0x18
+ add r0, r1, #0x0
+ add r1, r3, r4
+ blx MI_CpuCopy8
+ ldr r1, _020316DC ; =0x021C59FC
+ mov r0, #0x14
+ ldr r1, [r1, #0x0]
+ add r1, #0x18
+ add r1, r1, r4
+ bl FUN_020311D0
+ mov r0, #0x1
+ pop {r4, pc}
+_020316D8:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+_020316DC: .word 0x021C59FC
+
+ thumb_func_start FUN_020316E0
+FUN_020316E0: ; 0x020316E0
+ ldr r1, _02031700 ; =0x021C59FC
+ ldr r3, [r1, #0x0]
+ mov r1, #0x92
+ add r2, r3, r0
+ lsl r1, r1, #0x2
+ ldrb r1, [r2, r1]
+ cmp r1, #0x0
+ beq _020316FA
+ mov r1, #0x46
+ add r3, #0x18
+ mul r1, r0
+ add r0, r3, r1
+ bx lr
+_020316FA:
+ mov r0, #0x0
+ bx lr
+ nop
+_02031700: .word 0x021C59FC
+
+ thumb_func_start FUN_02031704
+FUN_02031704: ; 0x02031704
+ push {r3-r5, lr}
+ ldr r3, _0203172C ; =0x021C59FC
+ add r1, r0, #0x0
+ ldr r0, [r3, #0x0]
+ mov r5, #0x1
+ add r4, r0, r1
+ mov r0, #0x92
+ lsl r0, r0, #0x2
+ strb r5, [r4, r0]
+ ldr r4, [r3, #0x0]
+ add r0, r2, #0x0
+ mov r2, #0x46
+ add r3, r1, #0x0
+ add r4, #0x18
+ mul r3, r2
+ add r1, r4, r3
+ blx MI_CpuCopy8
+ pop {r3-r5, pc}
+ nop
+_0203172C: .word 0x021C59FC
+
+ thumb_func_start FUN_02031730
+FUN_02031730: ; 0x02031730
+ mov r0, #0x46
+ bx lr
+
+ thumb_func_start FUN_02031734
+FUN_02031734: ; 0x02031734
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, _020317BC ; =0x021C5A00
+ add r4, r1, #0x0
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _020317B8
+ bl FUN_0202E49C
+ mov r0, #0xf
+ mov r1, #0x50
+ bl FUN_02016998
+ ldr r1, _020317BC ; =0x021C5A00
+ mov r2, #0x50
+ str r0, [r1, #0x0]
+ mov r1, #0x0
+ blx MI_CpuFill8
+ ldr r0, _020317BC ; =0x021C5A00
+ mov r2, #0x32
+ ldr r1, [r0, #0x0]
+ strh r2, [r1, #0x3a]
+ ldr r1, [r0, #0x0]
+ mov r2, #0x1
+ add r1, #0x43
+ strb r2, [r1, #0x0]
+ ldr r0, [r0, #0x0]
+ str r5, [r0, #0x28]
+ add r0, r5, #0x0
+ bl FUN_020238F4
+ ldr r1, _020317BC ; =0x021C5A00
+ ldr r2, [r1, #0x0]
+ str r0, [r2, #0x2c]
+ ldr r0, [r1, #0x0]
+ mov r2, #0x2
+ add r0, #0x3c
+ strb r2, [r0, #0x0]
+ ldr r0, [r1, #0x0]
+ mov r2, #0x0
+ add r0, #0x3d
+ strb r2, [r0, #0x0]
+ ldr r0, [r1, #0x0]
+ add r0, #0x48
+ strb r2, [r0, #0x0]
+ ldr r0, [r1, #0x0]
+ add r0, #0x3f
+ strb r4, [r0, #0x0]
+ ldr r0, [r1, #0x0]
+ add r0, #0xc
+ bl FUN_020312BC
+ mov r0, #0x0
+ add r1, r0, #0x0
+ add r2, r0, #0x0
+ bl FUN_0202D8D0
+ cmp r4, #0x9
+ beq _020317B8
+ cmp r4, #0x11
+ beq _020317B8
+ cmp r4, #0xf
+ beq _020317B8
+ bl FUN_02033E74
+_020317B8:
+ pop {r3-r5, pc}
+ nop
+_020317BC: .word 0x021C5A00
+
+ thumb_func_start FUN_020317C0
+FUN_020317C0: ; 0x020317C0
+ push {r3, lr}
+ ldr r0, _0203180C ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _0203180A
+ bl FUN_0202D918
+ ldr r0, _0203180C ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _020317DC
+ bl FUN_02016A18
+_020317DC:
+ ldr r0, _0203180C ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ add r0, #0x3f
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x13
+ blo _020317EE
+ mov r0, #0x31
+ bl FUN_020168D0
+_020317EE:
+ bl FUN_02033ED0
+ bl FUN_0202E4F0
+ ldr r0, _0203180C ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ bl FUN_02016A18
+ mov r0, #0xf
+ bl FUN_020168D0
+ ldr r0, _0203180C ; =0x021C5A00
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+_0203180A:
+ pop {r3, pc}
+ .balign 4
+_0203180C: .word 0x021C5A00
+
+ thumb_func_start FUN_02031810
+FUN_02031810: ; 0x02031810
+ ldr r0, _02031820 ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _0203181C
+ mov r0, #0x1
+ bx lr
+_0203181C:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+_02031820: .word 0x021C5A00
+
+ thumb_func_start FUN_02031824
+FUN_02031824: ; 0x02031824
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _02031858 ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _02031856
+ mov r2, #0xe
+ mov r0, #0x3
+ mov r1, #0xf
+ lsl r2, r2, #0xc
+ bl FUN_02016828
+ add r0, r4, #0x0
+ mov r1, #0xa
+ bl FUN_02031734
+ ldr r0, _02031858 ; =0x021C5A00
+ mov r1, #0x0
+ ldr r0, [r0, #0x0]
+ add r0, #0x40
+ strb r1, [r0, #0x0]
+ ldr r0, _0203185C ; =FUN_02031D30
+ mov r1, #0x32
+ bl FUN_02031D20
+_02031856:
+ pop {r4, pc}
+ .balign 4
+_02031858: .word 0x021C5A00
+_0203185C: .word FUN_02031D30
+
+ thumb_func_start FUN_02031860
+FUN_02031860: ; 0x02031860
+ push {r3, lr}
+ ldr r0, _02031878 ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _02031876
+ bl FUN_02031468
+ ldr r0, _0203187C ; =FUN_020323CC
+ mov r1, #0x0
+ bl FUN_02031D20
+_02031876:
+ pop {r3, pc}
+ .balign 4
+_02031878: .word 0x021C5A00
+_0203187C: .word FUN_020323CC
+
+ thumb_func_start FUN_02031880
+FUN_02031880: ; 0x02031880
+ push {r3, lr}
+ bl FUN_0202FC60
+ bl FUN_02031190
+ ldr r1, _0203189C ; =0x021C5A00
+ ldr r1, [r1, #0x0]
+ strh r0, [r1, #0x38]
+ ldr r0, _020318A0 ; =FUN_020321B8
+ mov r1, #0x0
+ bl FUN_02031D20
+ pop {r3, pc}
+ nop
+_0203189C: .word 0x021C5A00
+_020318A0: .word FUN_020321B8
+
+ thumb_func_start FUN_020318A4
+FUN_020318A4: ; 0x020318A4
+ ldr r1, _020318B0 ; =0x021C5A00
+ ldr r1, [r1, #0x0]
+ add r1, #0x4f
+ strb r0, [r1, #0x0]
+ bx lr
+ nop
+_020318B0: .word 0x021C5A00
+
+ thumb_func_start FUN_020318B4
+FUN_020318B4: ; 0x020318B4
+ ldr r3, _020318BC ; =FUN_02031D20
+ ldr r0, _020318C0 ; =FUN_02032028
+ mov r1, #0x0
+ bx r3
+ .balign 4
+_020318BC: .word FUN_02031D20
+_020318C0: .word FUN_02032028
+
+ thumb_func_start FUN_020318C4
+FUN_020318C4: ; 0x020318C4
+ push {r4}
+ sub sp, #0xc
+ ldr r4, _0203190C ; =0x020EEC50
+ add r3, sp, #0x0
+ ldmia r4!, {r0-r1}
+ add r2, r3, #0x0
+ stmia r3!, {r0-r1}
+ ldr r0, [r4, #0x0]
+ str r0, [r3, #0x0]
+ ldr r0, _02031910 ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ ldr r1, [r0, #0x24]
+ cmp r0, #0x0
+ bne _020318E8
+ add sp, #0xc
+ mov r0, #0x0
+ pop {r4}
+ bx lr
+_020318E8:
+ ldr r0, [sp, #0x0]
+ cmp r0, #0x0
+ beq _02031904
+_020318EE:
+ ldr r0, [r2, #0x0]
+ cmp r1, r0
+ bne _020318FC
+ add sp, #0xc
+ mov r0, #0x1
+ pop {r4}
+ bx lr
+_020318FC:
+ add r2, r2, #0x4
+ ldr r0, [r2, #0x0]
+ cmp r0, #0x0
+ bne _020318EE
+_02031904:
+ mov r0, #0x0
+ add sp, #0xc
+ pop {r4}
+ bx lr
+ .balign 4
+_0203190C: .word 0x020EEC50
+_02031910: .word 0x021C5A00
+
+ thumb_func_start FUN_02031914
+FUN_02031914: ; 0x02031914
+ ldr r3, _0203191C ; =FUN_02031D20
+ ldr r0, _02031920 ; =FUN_02032178
+ mov r1, #0x0
+ bx r3
+ .balign 4
+_0203191C: .word FUN_02031D20
+_02031920: .word FUN_02032178
+
+ thumb_func_start FUN_02031924
+FUN_02031924: ; 0x02031924
+ ldr r0, _02031930 ; =0x021C5A00
+ mov r1, #0x1
+ ldr r0, [r0, #0x0]
+ add r0, #0x4c
+ strb r1, [r0, #0x0]
+ bx lr
+ .balign 4
+_02031930: .word 0x021C5A00
+
+ thumb_func_start FUN_02031934
+FUN_02031934: ; 0x02031934
+ push {r3, lr}
+ bl FUN_0202E49C
+ ldr r0, _02031944 ; =FUN_02032194
+ mov r1, #0x0
+ bl FUN_02031D20
+ pop {r3, pc}
+ .balign 4
+_02031944: .word FUN_02032194
+
+ thumb_func_start FUN_02031948
+FUN_02031948: ; 0x02031948
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ add r7, r1, #0x0
+ add r5, r2, #0x0
+ add r4, r3, #0x0
+ bl FUN_02030F40
+ cmp r0, #0x0
+ bne _02031980
+ ldr r2, _02031984 ; =0x00007080
+ mov r0, #0x3
+ mov r1, #0xf
+ bl FUN_02016828
+ add r0, r6, #0x0
+ add r1, r7, #0x0
+ bl FUN_02031734
+ ldr r0, _02031988 ; =0x021C5A00
+ ldr r1, [r0, #0x0]
+ add r1, #0x40
+ strb r5, [r1, #0x0]
+ ldr r0, [r0, #0x0]
+ mov r1, #0x0
+ str r4, [r0, #0x30]
+ ldr r0, _0203198C ; =FUN_020321D0
+ bl FUN_02031D20
+_02031980:
+ pop {r3-r7, pc}
+ nop
+_02031984: .word 0x00007080
+_02031988: .word 0x021C5A00
+_0203198C: .word FUN_020321D0
+
+ thumb_func_start FUN_02031990
+FUN_02031990: ; 0x02031990
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ add r7, r1, #0x0
+ add r5, r2, #0x0
+ add r4, r3, #0x0
+ bl FUN_02030F40
+ cmp r0, #0x0
+ bne _020319C8
+ ldr r2, _020319CC ; =0x00007080
+ mov r0, #0x3
+ mov r1, #0xf
+ bl FUN_02016828
+ add r0, r6, #0x0
+ add r1, r7, #0x0
+ bl FUN_02031734
+ ldr r0, _020319D0 ; =0x021C5A00
+ ldr r1, [r0, #0x0]
+ add r1, #0x40
+ strb r5, [r1, #0x0]
+ ldr r0, [r0, #0x0]
+ mov r1, #0x0
+ str r4, [r0, #0x30]
+ ldr r0, _020319D4 ; =FUN_0203224C
+ bl FUN_02031D20
+_020319C8:
+ pop {r3-r7, pc}
+ nop
+_020319CC: .word 0x00007080
+_020319D0: .word 0x021C5A00
+_020319D4: .word FUN_0203224C
+
+ thumb_func_start FUN_020319D8
+FUN_020319D8: ; 0x020319D8
+ ldr r1, _020319E8 ; =0x021C5A00
+ ldr r3, _020319EC ; =FUN_02031D20
+ ldr r1, [r1, #0x0]
+ add r1, #0x3e
+ strb r0, [r1, #0x0]
+ ldr r0, _020319F0 ; =FUN_02032298
+ mov r1, #0x0
+ bx r3
+ .balign 4
+_020319E8: .word 0x021C5A00
+_020319EC: .word FUN_02031D20
+_020319F0: .word FUN_02032298
+
+ thumb_func_start FUN_020319F4
+FUN_020319F4: ; 0x020319F4
+ push {r3, lr}
+ bl FUN_0202FCA8
+ ldr r0, _02031A04 ; =FUN_02032364
+ mov r1, #0x0
+ bl FUN_02031D20
+ pop {r3, pc}
+ .balign 4
+_02031A04: .word FUN_02032364
+
+ thumb_func_start FUN_02031A08
+FUN_02031A08: ; 0x02031A08
+ push {r3, lr}
+ ldr r0, _02031A1C ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _02031A1A
+ ldr r0, _02031A20 ; =FUN_02032440
+ mov r1, #0x5
+ bl FUN_02031D20
+_02031A1A:
+ pop {r3, pc}
+ .balign 4
+_02031A1C: .word 0x021C5A00
+_02031A20: .word FUN_02032440
+
+ thumb_func_start FUN_02031A24
+FUN_02031A24: ; 0x02031A24
+ ldr r3, _02031A28 ; =FUN_0202D298
+ bx r3
+ .balign 4
+_02031A28: .word FUN_0202D298
+
+ thumb_func_start FUN_02031A2C
+FUN_02031A2C: ; 0x02031A2C
+ push {r4}
+ sub sp, #0xc
+ ldr r4, _02031A74 ; =0x020EEC5C
+ add r3, sp, #0x0
+ ldmia r4!, {r0-r1}
+ add r2, r3, #0x0
+ stmia r3!, {r0-r1}
+ ldr r0, [r4, #0x0]
+ str r0, [r3, #0x0]
+ ldr r0, _02031A78 ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ ldr r1, [r0, #0x24]
+ cmp r0, #0x0
+ bne _02031A50
+ add sp, #0xc
+ mov r0, #0x0
+ pop {r4}
+ bx lr
+_02031A50:
+ ldr r0, [sp, #0x0]
+ cmp r0, #0x0
+ beq _02031A6C
+_02031A56:
+ ldr r0, [r2, #0x0]
+ cmp r1, r0
+ bne _02031A64
+ add sp, #0xc
+ mov r0, #0x1
+ pop {r4}
+ bx lr
+_02031A64:
+ add r2, r2, #0x4
+ ldr r0, [r2, #0x0]
+ cmp r0, #0x0
+ bne _02031A56
+_02031A6C:
+ mov r0, #0x0
+ add sp, #0xc
+ pop {r4}
+ bx lr
+ .balign 4
+_02031A74: .word 0x020EEC5C
+_02031A78: .word 0x021C5A00
+
+ thumb_func_start FUN_02031A7C
+FUN_02031A7C: ; 0x02031A7C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _02031ABC ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _02031ABA
+ ldr r2, _02031AC0 ; =0x00007080
+ mov r0, #0x3
+ mov r1, #0xf
+ bl FUN_02016828
+ cmp r0, #0x0
+ bne _02031A9A
+ bl FUN_020335E0
+_02031A9A:
+ add r0, r4, #0x0
+ mov r1, #0x9
+ bl FUN_02031734
+ ldr r0, _02031ABC ; =0x021C5A00
+ mov r2, #0x9
+ ldr r1, [r0, #0x0]
+ add r1, #0x3f
+ strb r2, [r1, #0x0]
+ ldr r0, [r0, #0x0]
+ mov r1, #0x0
+ add r0, #0x40
+ strb r1, [r0, #0x0]
+ ldr r0, _02031AC4 ; =FUN_02032478
+ bl FUN_02031D20
+_02031ABA:
+ pop {r4, pc}
+ .balign 4
+_02031ABC: .word 0x021C5A00
+_02031AC0: .word 0x00007080
+_02031AC4: .word FUN_02032478
+
+ thumb_func_start FUN_02031AC8
+FUN_02031AC8: ; 0x02031AC8
+ push {r3, lr}
+ ldr r1, _02031AEC ; =0x021C5A00
+ ldr r2, [r1, #0x0]
+ add r2, #0x3e
+ strb r0, [r2, #0x0]
+ ldr r0, [r1, #0x0]
+ mov r2, #0x3
+ strh r2, [r0, #0x38]
+ mov r0, #0x1
+ bl FUN_0202D344
+ bl FUN_02033E74
+ ldr r0, _02031AF0 ; =FUN_02032628
+ mov r1, #0x0
+ bl FUN_02031D20
+ pop {r3, pc}
+ .balign 4
+_02031AEC: .word 0x021C5A00
+_02031AF0: .word FUN_02032628
+
+ thumb_func_start FUN_02031AF4
+FUN_02031AF4: ; 0x02031AF4
+ ldr r0, _02031B20 ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _02031B02
+ mov r0, #0x0
+ mvn r0, r0
+ bx lr
+_02031B02:
+ ldr r1, [r0, #0x24]
+ ldr r0, _02031B24 ; =FUN_0203279C
+ cmp r1, r0
+ bne _02031B0E
+ mov r0, #0x1
+ bx lr
+_02031B0E:
+ ldr r0, _02031B28 ; =FUN_020327B4
+ cmp r1, r0
+ bne _02031B18
+ mov r0, #0x1
+ b _02031B1A
+_02031B18:
+ mov r0, #0x0
+_02031B1A:
+ neg r0, r0
+ bx lr
+ nop
+_02031B20: .word 0x021C5A00
+_02031B24: .word FUN_0203279C
+_02031B28: .word FUN_020327B4
+
+ thumb_func_start FUN_02031B2C
+FUN_02031B2C: ; 0x02031B2C
+ ldr r0, _02031B48 ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _02031B38
+ mov r0, #0x0
+ bx lr
+_02031B38:
+ ldr r1, [r0, #0x24]
+ ldr r0, _02031B4C ; =FUN_020327FC
+ cmp r1, r0
+ bne _02031B44
+ mov r0, #0x1
+ bx lr
+_02031B44:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+_02031B48: .word 0x021C5A00
+_02031B4C: .word FUN_020327FC
+
+ thumb_func_start FUN_02031B50
+FUN_02031B50: ; 0x02031B50
+ push {r3, lr}
+ mov r0, #0x0
+ bl FUN_0202D344
+ ldr r0, _02031BC4 ; =0x021C5A00
+ ldr r1, [r0, #0x0]
+ add r0, r1, #0x0
+ add r0, #0x44
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x1
+ bne _02031B78
+ add r0, r1, #0x0
+ add r0, #0x45
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x1
+ bne _02031B78
+ add r1, #0x3f
+ ldrb r0, [r1, #0x0]
+ cmp r0, #0x9
+ bne _02031B80
+_02031B78:
+ mov r0, #0x0
+ add r1, r0, #0x0
+ bl FUN_020334E8
+_02031B80:
+ bl FUN_02033ED0
+ ldr r0, _02031BC4 ; =0x021C5A00
+ mov r2, #0x9
+ ldr r1, [r0, #0x0]
+ add r1, #0x3f
+ strb r2, [r1, #0x0]
+ ldr r1, [r0, #0x0]
+ mov r2, #0x0
+ add r1, #0x48
+ strb r2, [r1, #0x0]
+ ldr r0, [r0, #0x0]
+ add r0, #0x3c
+ ldrb r0, [r0, #0x0]
+ bl FUN_0202D1B0
+ bl FUN_02031190
+ cmp r0, #0x0
+ bne _02031BB8
+ mov r0, #0x1
+ bl FUN_0202D36C
+ ldr r0, _02031BC8 ; =FUN_020323DC
+ mov r1, #0xf
+ bl FUN_02031D20
+ pop {r3, pc}
+_02031BB8:
+ ldr r0, _02031BCC ; =FUN_02032424
+ mov r1, #0x5
+ bl FUN_02031D20
+ pop {r3, pc}
+ nop
+_02031BC4: .word 0x021C5A00
+_02031BC8: .word FUN_020323DC
+_02031BCC: .word FUN_02032424
+
+ thumb_func_start FUN_02031BD0
+FUN_02031BD0: ; 0x02031BD0
+ ldr r0, _02031BEC ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _02031BDC
+ mov r0, #0x1
+ bx lr
+_02031BDC:
+ ldr r1, [r0, #0x24]
+ ldr r0, _02031BF0 ; =FUN_020324F8
+ cmp r1, r0
+ beq _02031BE8
+ mov r0, #0x1
+ bx lr
+_02031BE8:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+_02031BEC: .word 0x021C5A00
+_02031BF0: .word FUN_020324F8
+
+ thumb_func_start FUN_02031BF4
+FUN_02031BF4: ; 0x02031BF4
+ push {r3, lr}
+ ldr r0, _02031C08 ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _02031C06
+ ldr r0, _02031C0C ; =FUN_02032440
+ mov r1, #0x5
+ bl FUN_02031D20
+_02031C06:
+ pop {r3, pc}
+ .balign 4
+_02031C08: .word 0x021C5A00
+_02031C0C: .word FUN_02032440
+
+ thumb_func_start FUN_02031C10
+FUN_02031C10: ; 0x02031C10
+ push {r3, lr}
+ ldr r0, _02031C28 ; =0x021C5A00
+ ldr r1, [r0, #0x0]
+ cmp r1, #0x0
+ beq _02031C24
+ mov r0, #0x1
+ add r1, #0x48
+ strb r0, [r1, #0x0]
+ bl FUN_0202D344
+_02031C24:
+ pop {r3, pc}
+ nop
+_02031C28: .word 0x021C5A00
+
+ thumb_func_start FUN_02031C2C
+FUN_02031C2C: ; 0x02031C2C
+ push {r3, lr}
+ ldr r0, _02031C4C ; =0x021C5A00
+ ldr r1, [r0, #0x0]
+ cmp r1, #0x0
+ beq _02031C48
+ mov r0, #0x1
+ add r1, #0x48
+ strb r0, [r1, #0x0]
+ bl FUN_0202D344
+ ldr r0, _02031C50 ; =FUN_02032850
+ mov r1, #0x0
+ bl FUN_02031D20
+_02031C48:
+ pop {r3, pc}
+ nop
+_02031C4C: .word 0x021C5A00
+_02031C50: .word FUN_02032850
+
+ thumb_func_start FUN_02031C54
+FUN_02031C54: ; 0x02031C54
+ ldr r0, _02031C60 ; =0x021C5A00
+ mov r1, #0x12
+ ldr r0, [r0, #0x0]
+ add r0, #0x3f
+ strb r1, [r0, #0x0]
+ bx lr
+ .balign 4
+_02031C60: .word 0x021C5A00
+
+ thumb_func_start FUN_02031C64
+FUN_02031C64: ; 0x02031C64
+ ldr r0, _02031C70 ; =0x021C5A00
+ mov r1, #0x9
+ ldr r0, [r0, #0x0]
+ add r0, #0x3f
+ strb r1, [r0, #0x0]
+ bx lr
+ .balign 4
+_02031C70: .word 0x021C5A00
+
+ thumb_func_start FUN_02031C74
+FUN_02031C74: ; 0x02031C74
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_02030F40
+ cmp r0, #0x0
+ bne _02031C9C
+ ldr r2, _02031CA0 ; =0x00007080
+ mov r0, #0x3
+ mov r1, #0xf
+ bl FUN_02016828
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02031734
+ ldr r0, _02031CA4 ; =FUN_02032E00
+ mov r1, #0x0
+ bl FUN_02031D20
+_02031C9C:
+ pop {r3-r5, pc}
+ nop
+_02031CA0: .word 0x00007080
+_02031CA4: .word FUN_02032E00
+
+ thumb_func_start FUN_02031CA8
+FUN_02031CA8: ; 0x02031CA8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_02030F40
+ cmp r0, #0x0
+ bne _02031CD0
+ ldr r2, _02031CD4 ; =0x00007080
+ mov r0, #0x3
+ mov r1, #0xf
+ bl FUN_02016828
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02031734
+ ldr r0, _02031CD8 ; =FUN_02032E48
+ mov r1, #0x0
+ bl FUN_02031D20
+_02031CD0:
+ pop {r3-r5, pc}
+ nop
+_02031CD4: .word 0x00007080
+_02031CD8: .word FUN_02032E48
+
+ thumb_func_start FUN_02031CDC
+FUN_02031CDC: ; 0x02031CDC
+ push {r3, lr}
+ ldr r0, _02031D1C ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _02031CEE
+ ldr r0, [r0, #0x24]
+ cmp r0, #0x0
+ beq _02031CEE
+ blx r0
+_02031CEE:
+ bl FUN_02033590
+ cmp r0, #0x0
+ beq _02031D04
+ blx FUN_021DDB08
+ mov r1, #0x3
+ sub r0, r1, r0
+ bl FUN_02033EEC
+ pop {r3, pc}
+_02031D04:
+ bl FUN_0202EDF8
+ cmp r0, #0x0
+ beq _02031D18
+ blx FUN_020D8B94
+ mov r1, #0x3
+ sub r0, r1, r0
+ bl FUN_02033EEC
+_02031D18:
+ pop {r3, pc}
+ nop
+_02031D1C: .word 0x021C5A00
+
+ thumb_func_start FUN_02031D20
+FUN_02031D20: ; 0x02031D20
+ ldr r2, _02031D2C ; =0x021C5A00
+ ldr r3, [r2, #0x0]
+ str r0, [r3, #0x24]
+ ldr r0, [r2, #0x0]
+ strh r1, [r0, #0x3a]
+ bx lr
+ .balign 4
+_02031D2C: .word 0x021C5A00
+
+ thumb_func_start FUN_02031D30
+FUN_02031D30: ; 0x02031D30
+ push {r3-r5, lr}
+ ldr r0, _02031DF8 ; =0x021C5A00
+ ldr r1, [r0, #0x0]
+ ldrh r0, [r1, #0x3a]
+ cmp r0, #0x0
+ beq _02031D42
+ sub r0, r0, #0x1
+ strh r0, [r1, #0x3a]
+ pop {r3-r5, pc}
+_02031D42:
+ bl FUN_0202E4C8
+ cmp r0, #0x0
+ beq _02031DF6
+ ldr r0, _02031DF8 ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x2c]
+ bl FUN_0202E29C
+ ldr r0, _02031DF8 ; =0x021C5A00
+ mov r1, #0x0
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x28]
+ bl FUN_0202DB14
+ mov r0, #0x1
+ bl FUN_02031268
+ bl FUN_02030FA8
+ ldr r0, _02031DF8 ; =0x021C5A00
+ ldr r1, [r0, #0x0]
+ add r0, r1, #0x0
+ add r0, #0x4a
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _02031DC8
+ add r1, #0x43
+ ldrb r1, [r1, #0x0]
+ mov r0, #0x1
+ mov r2, #0x7d
+ lsl r2, r2, #0x2
+ add r3, r0, #0x0
+ bl FUN_0202F918
+ cmp r0, #0x0
+ beq _02031DF6
+ ldr r0, _02031DF8 ; =0x021C5A00
+ ldr r5, [r0, #0x0]
+ add r4, r5, #0x0
+ add r4, #0xc
+ ldr r0, [r4, #0x8]
+ ldr r1, [r4, #0xc]
+ ldr r2, [r5, #0xc]
+ ldr r3, [r4, #0x4]
+ blx _ll_mul
+ ldr r2, [r4, #0x10]
+ ldr r3, [r4, #0x14]
+ add r0, r2, r0
+ adc r3, r1
+ str r0, [r5, #0xc]
+ str r3, [r4, #0x4]
+ add r0, r3, #0x0
+ mov r1, #0x0
+ mov r2, #0x14
+ mov r3, #0x0
+ blx _ll_mul
+ mov r0, #0x0
+ add r5, #0x43
+ strb r0, [r5, #0x0]
+ ldr r0, _02031DFC ; =FUN_020320C4
+ add r1, #0x14
+ bl FUN_02031D20
+ pop {r3-r5, pc}
+_02031DC8:
+ mov r0, #0x1
+ mov r2, #0x7d
+ add r1, r0, #0x0
+ lsl r2, r2, #0x2
+ bl FUN_0202F950
+ cmp r0, #0x0
+ beq _02031DF6
+ ldr r0, _02031DF8 ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ add r0, #0x4c
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _02031DEE
+ ldr r0, _02031E00 ; =FUN_020323B8
+ mov r1, #0x0
+ bl FUN_02031D20
+ pop {r3-r5, pc}
+_02031DEE:
+ ldr r0, _02031E04 ; =FUN_02031EE0
+ mov r1, #0x40
+ bl FUN_02031D20
+_02031DF6:
+ pop {r3-r5, pc}
+ .balign 4
+_02031DF8: .word 0x021C5A00
+_02031DFC: .word FUN_020320C4
+_02031E00: .word FUN_020323B8
+_02031E04: .word FUN_02031EE0
+
+ thumb_func_start FUN_02031E08
+FUN_02031E08: ; 0x02031E08
+ push {r3-r5, lr}
+ bl FUN_0202EE0C
+ cmp r0, #0x0
+ beq _02031E7C
+ mov r0, #0x1
+ bl FUN_02031268
+ bl FUN_02030FA8
+ ldr r0, _02031E80 ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ add r0, #0x4a
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _02031E32
+ ldr r0, _02031E84 ; =FUN_02032058
+ mov r1, #0x0
+ bl FUN_02031D20
+ pop {r3-r5, pc}
+_02031E32:
+ mov r2, #0x7d
+ mov r0, #0x0
+ mov r1, #0x1
+ lsl r2, r2, #0x2
+ bl FUN_0202F950
+ cmp r0, #0x0
+ beq _02031E7C
+ ldr r0, _02031E80 ; =0x021C5A00
+ ldr r5, [r0, #0x0]
+ add r4, r5, #0x0
+ add r4, #0xc
+ ldr r0, [r4, #0x8]
+ ldr r1, [r4, #0xc]
+ ldr r2, [r5, #0xc]
+ ldr r3, [r4, #0x4]
+ blx _ll_mul
+ ldr r2, [r4, #0x10]
+ ldr r3, [r4, #0x14]
+ add r0, r2, r0
+ adc r3, r1
+ str r0, [r5, #0xc]
+ mov r1, #0x0
+ str r3, [r4, #0x4]
+ lsr r0, r3, #0x1a
+ lsl r1, r1, #0x6
+ orr r1, r0
+ ldrh r0, [r5, #0x38]
+ cmp r0, #0x0
+ beq _02031E76
+ lsl r1, r0, #0x6
+ mov r0, #0x0
+ strh r0, [r5, #0x38]
+_02031E76:
+ ldr r0, _02031E88 ; =FUN_02031EE0
+ bl FUN_02031D20
+_02031E7C:
+ pop {r3-r5, pc}
+ nop
+_02031E80: .word 0x021C5A00
+_02031E84: .word FUN_02032058
+_02031E88: .word FUN_02031EE0
+
+ thumb_func_start FUN_02031E8C
+FUN_02031E8C: ; 0x02031E8C
+ push {r3-r5, lr}
+ bl FUN_0202EE0C
+ cmp r0, #0x0
+ beq _02031ED6
+ mov r0, #0x0
+ mov r2, #0x7d
+ add r1, r0, #0x0
+ lsl r2, r2, #0x2
+ bl FUN_0202F950
+ cmp r0, #0x0
+ beq _02031ED6
+ ldr r0, _02031ED8 ; =0x021C5A00
+ ldr r4, [r0, #0x0]
+ add r5, r4, #0x0
+ add r5, #0xc
+ ldr r0, [r5, #0x8]
+ ldr r1, [r5, #0xc]
+ ldr r2, [r4, #0xc]
+ ldr r3, [r5, #0x4]
+ blx _ll_mul
+ ldr r2, [r5, #0x10]
+ ldr r3, [r5, #0x14]
+ add r0, r2, r0
+ adc r3, r1
+ str r0, [r4, #0xc]
+ mov r1, #0x0
+ lsr r2, r3, #0x1b
+ lsl r1, r1, #0x5
+ orr r1, r2
+ ldr r0, _02031EDC ; =FUN_02031EE0
+ add r1, #0x10
+ str r3, [r5, #0x4]
+ bl FUN_02031D20
+_02031ED6:
+ pop {r3-r5, pc}
+ .balign 4
+_02031ED8: .word 0x021C5A00
+_02031EDC: .word FUN_02031EE0
+
+ thumb_func_start FUN_02031EE0
+FUN_02031EE0: ; 0x02031EE0
+ push {r3, lr}
+ bl FUN_0202EA54
+ ldr r0, _02031F54 ; =0x021C5A00
+ ldr r1, [r0, #0x0]
+ add r0, r1, #0x0
+ add r0, #0x4f
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _02031F50
+ add r1, #0x4b
+ ldrb r0, [r1, #0x0]
+ cmp r0, #0x0
+ bne _02031F50
+ bl FUN_0202E8F4
+ mov r1, #0x0
+ mvn r1, r1
+ cmp r0, r1
+ beq _02031F1A
+ ldr r1, _02031F54 ; =0x021C5A00
+ ldr r1, [r1, #0x0]
+ add r1, #0x3e
+ strb r0, [r1, #0x0]
+ ldr r0, _02031F58 ; =FUN_02031F60
+ mov r1, #0x20
+ bl FUN_02031D20
+ pop {r3, pc}
+_02031F1A:
+ ldr r0, _02031F54 ; =0x021C5A00
+ ldr r1, [r0, #0x0]
+ ldrh r0, [r1, #0x3a]
+ cmp r0, #0x0
+ beq _02031F2A
+ sub r0, r0, #0x1
+ strh r0, [r1, #0x3a]
+ pop {r3, pc}
+_02031F2A:
+ bl FUN_0202E950
+ mov r1, #0x0
+ mvn r1, r1
+ cmp r0, r1
+ beq _02031F48
+ ldr r1, _02031F54 ; =0x021C5A00
+ ldr r1, [r1, #0x0]
+ add r1, #0x3e
+ strb r0, [r1, #0x0]
+ ldr r0, _02031F58 ; =FUN_02031F60
+ mov r1, #0x20
+ bl FUN_02031D20
+ pop {r3, pc}
+_02031F48:
+ ldr r0, _02031F5C ; =FUN_02032028
+ mov r1, #0x0
+ bl FUN_02031D20
+_02031F50:
+ pop {r3, pc}
+ nop
+_02031F54: .word 0x021C5A00
+_02031F58: .word FUN_02031F60
+_02031F5C: .word FUN_02032028
+
+ thumb_func_start FUN_02031F60
+FUN_02031F60: ; 0x02031F60
+ push {r3, lr}
+ bl FUN_0202EA54
+ ldr r0, _02031FBC ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ add r0, #0x3e
+ ldrb r0, [r0, #0x0]
+ bl FUN_0202E8A0
+ cmp r0, #0x0
+ beq _02031F90
+ ldr r0, _02031FBC ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ add r0, #0x3e
+ ldrb r0, [r0, #0x0]
+ bl FUN_0202FB18
+ cmp r0, #0x0
+ beq _02031F90
+ ldr r0, _02031FC0 ; =FUN_02031FC8
+ mov r1, #0x64
+ bl FUN_02031D20
+ pop {r3, pc}
+_02031F90:
+ bl FUN_020311F0
+ cmp r0, #0x0
+ beq _02031FA2
+ ldr r0, _02031FC4 ; =FUN_02032028
+ mov r1, #0x0
+ bl FUN_02031D20
+ pop {r3, pc}
+_02031FA2:
+ ldr r0, _02031FBC ; =0x021C5A00
+ ldr r1, [r0, #0x0]
+ ldrh r0, [r1, #0x3a]
+ cmp r0, #0x0
+ beq _02031FB2
+ sub r0, r0, #0x1
+ strh r0, [r1, #0x3a]
+ pop {r3, pc}
+_02031FB2:
+ ldr r0, _02031FC4 ; =FUN_02032028
+ mov r1, #0x0
+ bl FUN_02031D20
+ pop {r3, pc}
+ .balign 4
+_02031FBC: .word 0x021C5A00
+_02031FC0: .word FUN_02031FC8
+_02031FC4: .word FUN_02032028
+
+ thumb_func_start FUN_02031FC8
+FUN_02031FC8: ; 0x02031FC8
+ push {r3, lr}
+ bl FUN_02031190
+ bl FUN_02030E7C
+ cmp r0, #0x0
+ beq _02031FEE
+ bl FUN_0202FC60
+ mov r0, #0x0
+ bl FUN_02031268
+ bl FUN_02030FA8
+ ldr r0, _0203201C ; =FUN_0203213C
+ mov r1, #0x0
+ bl FUN_02031D20
+ pop {r3, pc}
+_02031FEE:
+ bl FUN_020311F0
+ cmp r0, #0x0
+ beq _02032000
+ ldr r0, _02032020 ; =FUN_02032028
+ mov r1, #0x0
+ bl FUN_02031D20
+ pop {r3, pc}
+_02032000:
+ ldr r0, _02032024 ; =0x021C5A00
+ ldr r1, [r0, #0x0]
+ ldrh r0, [r1, #0x3a]
+ cmp r0, #0x0
+ beq _02032010
+ sub r0, r0, #0x1
+ strh r0, [r1, #0x3a]
+ pop {r3, pc}
+_02032010:
+ ldr r0, _02032020 ; =FUN_02032028
+ mov r1, #0x0
+ bl FUN_02031D20
+ pop {r3, pc}
+ nop
+_0203201C: .word FUN_0203213C
+_02032020: .word FUN_02032028
+_02032024: .word 0x021C5A00
+
+ thumb_func_start FUN_02032028
+FUN_02032028: ; 0x02032028
+ push {r3, lr}
+ bl FUN_0202E6F0
+ cmp r0, #0x0
+ beq _0203203A
+ ldr r0, _0203203C ; =FUN_02032058
+ mov r1, #0x0
+ bl FUN_02031D20
+_0203203A:
+ pop {r3, pc}
+ .balign 4
+_0203203C: .word FUN_02032058
+
+ thumb_func_start FUN_02032040
+FUN_02032040: ; 0x02032040
+ push {r3, lr}
+ bl FUN_0202E6F0
+ cmp r0, #0x0
+ beq _02032052
+ ldr r0, _02032054 ; =FUN_02031E8C
+ mov r1, #0x0
+ bl FUN_02031D20
+_02032052:
+ pop {r3, pc}
+ .balign 4
+_02032054: .word FUN_02031E8C
+
+ thumb_func_start FUN_02032058
+FUN_02032058: ; 0x02032058
+ push {r3-r5, lr}
+ bl FUN_0202EE0C
+ cmp r0, #0x0
+ beq _020320BA
+ mov r0, #0x1
+ bl FUN_02031268
+ ldr r1, _020320BC ; =0x021C5A00
+ mov r2, #0x7d
+ ldr r1, [r1, #0x0]
+ mov r0, #0x0
+ add r1, #0x43
+ ldrb r1, [r1, #0x0]
+ lsl r2, r2, #0x2
+ mov r3, #0x1
+ bl FUN_0202F918
+ cmp r0, #0x0
+ beq _020320BA
+ ldr r0, _020320BC ; =0x021C5A00
+ ldr r5, [r0, #0x0]
+ add r4, r5, #0x0
+ add r4, #0xc
+ ldr r0, [r4, #0x8]
+ ldr r1, [r4, #0xc]
+ ldr r2, [r5, #0xc]
+ ldr r3, [r4, #0x4]
+ blx _ll_mul
+ ldr r2, [r4, #0x10]
+ ldr r3, [r4, #0x14]
+ add r0, r2, r0
+ adc r3, r1
+ str r0, [r5, #0xc]
+ str r3, [r4, #0x4]
+ add r0, r3, #0x0
+ mov r1, #0x0
+ mov r2, #0x14
+ mov r3, #0x0
+ blx _ll_mul
+ mov r0, #0x0
+ add r5, #0x43
+ strb r0, [r5, #0x0]
+ ldr r0, _020320C0 ; =FUN_020320C4
+ add r1, #0x14
+ bl FUN_02031D20
+_020320BA:
+ pop {r3-r5, pc}
+ .balign 4
+_020320BC: .word 0x021C5A00
+_020320C0: .word FUN_020320C4
+
+ thumb_func_start FUN_020320C4
+FUN_020320C4: ; 0x020320C4
+ push {r3, lr}
+ bl FUN_020311E8
+ cmp r0, #0x0
+ beq _020320E2
+ ldr r0, _0203210C ; =0x021C5A00
+ mov r1, #0x1
+ ldr r0, [r0, #0x0]
+ add r0, #0x43
+ strb r1, [r0, #0x0]
+ ldr r0, _02032110 ; =FUN_02032118
+ mov r1, #0x0
+ bl FUN_02031D20
+ pop {r3, pc}
+_020320E2:
+ ldr r0, _0203210C ; =0x021C5A00
+ ldr r1, [r0, #0x0]
+ ldrh r0, [r1, #0x3a]
+ cmp r0, #0x0
+ beq _020320F2
+ sub r0, r0, #0x1
+ strh r0, [r1, #0x3a]
+ pop {r3, pc}
+_020320F2:
+ add r1, #0x4a
+ ldrb r0, [r1, #0x0]
+ cmp r0, #0x0
+ bne _0203210A
+ bl FUN_0202E6F0
+ cmp r0, #0x0
+ beq _0203210A
+ ldr r0, _02032114 ; =FUN_02032040
+ mov r1, #0x2
+ bl FUN_02031D20
+_0203210A:
+ pop {r3, pc}
+ .balign 4
+_0203210C: .word 0x021C5A00
+_02032110: .word FUN_02032118
+_02032114: .word FUN_02032040
+
+ thumb_func_start FUN_02032118
+FUN_02032118: ; 0x02032118
+ push {r3, lr}
+ mov r0, #0x0
+ bl FUN_02031268
+ mov r0, #0x1
+ bl FUN_0202EE84
+ bl FUN_02030FA8
+ ldr r0, _02032134 ; =FUN_02032138
+ mov r1, #0x0
+ bl FUN_02031D20
+ pop {r3, pc}
+ .balign 4
+_02032134: .word FUN_02032138
+
+ thumb_func_start FUN_02032138
+FUN_02032138: ; 0x02032138
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0203213C
+FUN_0203213C: ; 0x0203213C
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02032140
+FUN_02032140: ; 0x02032140
+ push {r3, lr}
+ ldr r0, _02032170 ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ add r0, #0x3f
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x13
+ bhs _02032166
+ bl FUN_0202EE0C
+ cmp r0, #0x0
+ beq _0203216E
+ mov r0, #0x1
+ bl FUN_02031268
+ bl FUN_02030FA8
+ mov r0, #0x1
+ bl FUN_0202E7B0
+_02032166:
+ ldr r0, _02032174 ; =FUN_020323B8
+ mov r1, #0x0
+ bl FUN_02031D20
+_0203216E:
+ pop {r3, pc}
+ .balign 4
+_02032170: .word 0x021C5A00
+_02032174: .word FUN_020323B8
+
+ thumb_func_start FUN_02032178
+FUN_02032178: ; 0x02032178
+ push {r3, lr}
+ bl FUN_0202E6F0
+ cmp r0, #0x0
+ beq _0203218E
+ bl FUN_0202FC60
+ ldr r0, _02032190 ; =FUN_02032140
+ mov r1, #0x0
+ bl FUN_02031D20
+_0203218E:
+ pop {r3, pc}
+ .balign 4
+_02032190: .word FUN_02032140
+
+ thumb_func_start FUN_02032194
+FUN_02032194: ; 0x02032194
+ push {r3, lr}
+ bl FUN_0202E4C8
+ cmp r0, #0x0
+ beq _020321B0
+ mov r0, #0x0
+ bl FUN_0202E7B0
+ bl FUN_0202FC60
+ ldr r0, _020321B4 ; =FUN_02031E08
+ mov r1, #0x0
+ bl FUN_02031D20
+_020321B0:
+ pop {r3, pc}
+ nop
+_020321B4: .word FUN_02031E08
+
+ thumb_func_start FUN_020321B8
+FUN_020321B8: ; 0x020321B8
+ push {r3, lr}
+ bl FUN_0202E6F0
+ cmp r0, #0x0
+ beq _020321CA
+ ldr r0, _020321CC ; =FUN_02031E08
+ mov r1, #0x0
+ bl FUN_02031D20
+_020321CA:
+ pop {r3, pc}
+ .balign 4
+_020321CC: .word FUN_02031E08
+
+ thumb_func_start FUN_020321D0
+FUN_020321D0: ; 0x020321D0
+ push {r3, lr}
+ bl FUN_0202E4C8
+ cmp r0, #0x0
+ beq _0203220C
+ ldr r0, _02032210 ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x2c]
+ bl FUN_0202E29C
+ ldr r0, _02032210 ; =0x021C5A00
+ ldr r1, [r0, #0x0]
+ ldr r0, [r1, #0x28]
+ ldr r1, [r1, #0x30]
+ bl FUN_0202DB14
+ mov r0, #0x1
+ add r1, r0, #0x0
+ lsl r2, r0, #0x9
+ add r3, r0, #0x0
+ bl FUN_0202F918
+ cmp r0, #0x0
+ beq _0203220C
+ bl FUN_0202FA10
+ ldr r0, _02032214 ; =FUN_02032218
+ mov r1, #0x0
+ bl FUN_02031D20
+_0203220C:
+ pop {r3, pc}
+ nop
+_02032210: .word 0x021C5A00
+_02032214: .word FUN_02032218
+
+ thumb_func_start FUN_02032218
+FUN_02032218: ; 0x02032218
+ push {r3, lr}
+ bl FUN_02031190
+ bl FUN_02030E7C
+ cmp r0, #0x0
+ beq _0203222E
+ ldr r0, _02032230 ; =FUN_02032234
+ mov r1, #0x0
+ bl FUN_02031D20
+_0203222E:
+ pop {r3, pc}
+ .balign 4
+_02032230: .word FUN_02032234
+
+ thumb_func_start FUN_02032234
+FUN_02032234: ; 0x02032234
+ push {r3, lr}
+ bl FUN_02030F40
+ cmp r0, #0x0
+ bne _02032246
+ ldr r0, _02032248 ; =FUN_020323BC
+ mov r1, #0x0
+ bl FUN_02031D20
+_02032246:
+ pop {r3, pc}
+ .balign 4
+_02032248: .word FUN_020323BC
+
+ thumb_func_start FUN_0203224C
+FUN_0203224C: ; 0x0203224C
+ push {r3, lr}
+ bl FUN_0202E4C8
+ cmp r0, #0x0
+ beq _02032286
+ ldr r0, _02032288 ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x2c]
+ bl FUN_0202E29C
+ ldr r0, _02032288 ; =0x021C5A00
+ ldr r1, [r0, #0x0]
+ ldr r0, [r1, #0x28]
+ ldr r1, [r1, #0x30]
+ bl FUN_0202DB14
+ mov r0, #0x1
+ add r1, r0, #0x0
+ lsl r2, r0, #0x9
+ bl FUN_0202F950
+ cmp r0, #0x0
+ beq _02032286
+ bl FUN_0202FA10
+ ldr r0, _0203228C ; =FUN_02032290
+ mov r1, #0x0
+ bl FUN_02031D20
+_02032286:
+ pop {r3, pc}
+ .balign 4
+_02032288: .word 0x021C5A00
+_0203228C: .word FUN_02032290
+
+ thumb_func_start FUN_02032290
+FUN_02032290: ; 0x02032290
+ ldr r3, _02032294 ; =FUN_0202EA54
+ bx r3
+ .balign 4
+_02032294: .word FUN_0202EA54
+
+ thumb_func_start FUN_02032298
+FUN_02032298: ; 0x02032298
+ push {r3, lr}
+ bl FUN_0202EA54
+ ldr r0, _020322B8 ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ add r0, #0x3e
+ ldrb r0, [r0, #0x0]
+ bl FUN_0202FB18
+ cmp r0, #0x0
+ beq _020322B6
+ ldr r0, _020322BC ; =FUN_020322C0
+ mov r1, #0xa
+ bl FUN_02031D20
+_020322B6:
+ pop {r3, pc}
+ .balign 4
+_020322B8: .word 0x021C5A00
+_020322BC: .word FUN_020322C0
+
+ thumb_func_start FUN_020322C0
+FUN_020322C0: ; 0x020322C0
+ push {r3, lr}
+ bl FUN_020311F0
+ cmp r0, #0x0
+ beq _020322D2
+ ldr r0, _020322F0 ; =FUN_020322F8
+ mov r1, #0x0
+ bl FUN_02031D20
+_020322D2:
+ bl FUN_02031190
+ bl FUN_02030E7C
+ cmp r0, #0x0
+ beq _020322EE
+ bl FUN_02031190
+ cmp r0, #0x0
+ beq _020322EE
+ ldr r0, _020322F4 ; =FUN_0203234C
+ mov r1, #0x0
+ bl FUN_02031D20
+_020322EE:
+ pop {r3, pc}
+ .balign 4
+_020322F0: .word FUN_020322F8
+_020322F4: .word FUN_0203234C
+
+ thumb_func_start FUN_020322F8
+FUN_020322F8: ; 0x020322F8
+ push {r3, lr}
+ bl FUN_0202E6F0
+ ldr r0, _02032308 ; =FUN_0203230C
+ mov r1, #0x2
+ bl FUN_02031D20
+ pop {r3, pc}
+ .balign 4
+_02032308: .word FUN_0203230C
+
+ thumb_func_start FUN_0203230C
+FUN_0203230C: ; 0x0203230C
+ push {r3, lr}
+ ldr r0, _02032344 ; =0x021C5A00
+ ldr r1, [r0, #0x0]
+ ldrh r0, [r1, #0x3a]
+ cmp r0, #0x0
+ beq _0203231E
+ sub r0, r0, #0x1
+ strh r0, [r1, #0x3a]
+ pop {r3, pc}
+_0203231E:
+ bl FUN_0202EE0C
+ cmp r0, #0x0
+ beq _02032340
+ mov r1, #0x1
+ mov r0, #0x0
+ lsl r2, r1, #0x9
+ bl FUN_0202F950
+ cmp r0, #0x0
+ beq _02032340
+ bl FUN_0202FA10
+ ldr r0, _02032348 ; =FUN_02032298
+ mov r1, #0xa
+ bl FUN_02031D20
+_02032340:
+ pop {r3, pc}
+ nop
+_02032344: .word 0x021C5A00
+_02032348: .word FUN_02032298
+
+ thumb_func_start FUN_0203234C
+FUN_0203234C: ; 0x0203234C
+ push {r3, lr}
+ bl FUN_02030F40
+ cmp r0, #0x0
+ bne _0203235E
+ ldr r0, _02032360 ; =FUN_020323BC
+ mov r1, #0x0
+ bl FUN_02031D20
+_0203235E:
+ pop {r3, pc}
+ .balign 4
+_02032360: .word FUN_020323BC
+
+ thumb_func_start FUN_02032364
+FUN_02032364: ; 0x02032364
+ push {r3, lr}
+ bl FUN_0202E6F0
+ ldr r0, _02032374 ; =FUN_02032378
+ mov r1, #0x2
+ bl FUN_02031D20
+ pop {r3, pc}
+ .balign 4
+_02032374: .word FUN_02032378
+
+ thumb_func_start FUN_02032378
+FUN_02032378: ; 0x02032378
+ push {r3, lr}
+ ldr r0, _020323B0 ; =0x021C5A00
+ ldr r1, [r0, #0x0]
+ ldrh r0, [r1, #0x3a]
+ cmp r0, #0x0
+ beq _0203238A
+ sub r0, r0, #0x1
+ strh r0, [r1, #0x3a]
+ pop {r3, pc}
+_0203238A:
+ bl FUN_0202EE0C
+ cmp r0, #0x0
+ beq _020323AC
+ mov r1, #0x1
+ mov r0, #0x0
+ lsl r2, r1, #0x9
+ bl FUN_0202F950
+ cmp r0, #0x0
+ beq _020323AC
+ bl FUN_0202FA10
+ ldr r0, _020323B4 ; =FUN_02032290
+ mov r1, #0xa
+ bl FUN_02031D20
+_020323AC:
+ pop {r3, pc}
+ nop
+_020323B0: .word 0x021C5A00
+_020323B4: .word FUN_02032290
+
+ thumb_func_start FUN_020323B8
+FUN_020323B8: ; 0x020323B8
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020323BC
+FUN_020323BC: ; 0x020323BC
+ push {r3, lr}
+ bl FUN_02030F40
+ cmp r0, #0x0
+ bne _020323CA
+ bl FUN_020317C0
+_020323CA:
+ pop {r3, pc}
+
+ thumb_func_start FUN_020323CC
+FUN_020323CC: ; 0x020323CC
+ ldr r3, _020323D4 ; =FUN_02031D20
+ ldr r0, _020323D8 ; =FUN_02032440
+ mov r1, #0x5
+ bx r3
+ .balign 4
+_020323D4: .word FUN_02031D20
+_020323D8: .word FUN_02032440
+
+ thumb_func_start FUN_020323DC
+FUN_020323DC: ; 0x020323DC
+ push {r3, lr}
+ bl FUN_02030F20
+ cmp r0, #0x1
+ bgt _020323F8
+ mov r0, #0x0
+ bl FUN_0202D36C
+ bl FUN_0202FC80
+ ldr r0, _0203241C ; =FUN_020324F8
+ mov r1, #0x0
+ bl FUN_02031D20
+_020323F8:
+ ldr r0, _02032420 ; =0x021C5A00
+ ldr r1, [r0, #0x0]
+ ldrh r0, [r1, #0x3a]
+ cmp r0, #0x0
+ beq _02032408
+ sub r0, r0, #0x1
+ strh r0, [r1, #0x3a]
+ pop {r3, pc}
+_02032408:
+ mov r0, #0x0
+ bl FUN_0202D36C
+ bl FUN_0202FC80
+ ldr r0, _0203241C ; =FUN_020324F8
+ mov r1, #0x0
+ bl FUN_02031D20
+ pop {r3, pc}
+ .balign 4
+_0203241C: .word FUN_020324F8
+_02032420: .word 0x021C5A00
+
+ thumb_func_start FUN_02032424
+FUN_02032424: ; 0x02032424
+ push {r3, lr}
+ bl FUN_0202E6F0
+ cmp r0, #0x0
+ beq _0203243A
+ bl FUN_0202FC60
+ ldr r0, _0203243C ; =FUN_020324F8
+ mov r1, #0x0
+ bl FUN_02031D20
+_0203243A:
+ pop {r3, pc}
+ .balign 4
+_0203243C: .word FUN_020324F8
+
+ thumb_func_start FUN_02032440
+FUN_02032440: ; 0x02032440
+ push {r3, lr}
+ ldr r0, _02032470 ; =0x021C5A00
+ ldr r1, [r0, #0x0]
+ ldrh r0, [r1, #0x3a]
+ cmp r0, #0x0
+ beq _02032450
+ sub r0, r0, #0x1
+ strh r0, [r1, #0x3a]
+_02032450:
+ bl FUN_0202E6F0
+ cmp r0, #0x0
+ beq _0203246E
+ ldr r0, _02032470 ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ ldrh r0, [r0, #0x3a]
+ cmp r0, #0x0
+ bne _0203246E
+ bl FUN_0202FA5C
+ ldr r0, _02032474 ; =FUN_020323BC
+ mov r1, #0x0
+ bl FUN_02031D20
+_0203246E:
+ pop {r3, pc}
+ .balign 4
+_02032470: .word 0x021C5A00
+_02032474: .word FUN_020323BC
+
+ thumb_func_start FUN_02032478
+FUN_02032478: ; 0x02032478
+ push {r3, lr}
+ bl FUN_0202E4C8
+ cmp r0, #0x0
+ beq _020324BE
+ ldr r0, _020324C0 ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x2c]
+ bl FUN_0202E29C
+ ldr r0, _020324C0 ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ add r0, #0x3c
+ ldrb r0, [r0, #0x0]
+ bl FUN_0202D1B0
+ ldr r0, _020324C0 ; =0x021C5A00
+ mov r1, #0x0
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x28]
+ bl FUN_0202DB14
+ mov r0, #0x1
+ add r1, r0, #0x0
+ lsl r2, r0, #0x9
+ bl FUN_0202F950
+ cmp r0, #0x0
+ beq _020324BE
+ bl FUN_0202FA10
+ ldr r0, _020324C4 ; =FUN_020324C8
+ mov r1, #0x40
+ bl FUN_02031D20
+_020324BE:
+ pop {r3, pc}
+ .balign 4
+_020324C0: .word 0x021C5A00
+_020324C4: .word FUN_020324C8
+
+ thumb_func_start FUN_020324C8
+FUN_020324C8: ; 0x020324C8
+ push {r3, lr}
+ bl FUN_0202EA54
+ ldr r0, _020324F0 ; =0x021C5A00
+ ldr r1, [r0, #0x0]
+ ldrh r0, [r1, #0x3a]
+ cmp r0, #0x0
+ beq _020324DE
+ sub r0, r0, #0x1
+ strh r0, [r1, #0x3a]
+ pop {r3, pc}
+_020324DE:
+ bl FUN_0202E6F0
+ cmp r0, #0x0
+ beq _020324EE
+ ldr r0, _020324F4 ; =FUN_02032510
+ mov r1, #0x0
+ bl FUN_02031D20
+_020324EE:
+ pop {r3, pc}
+ .balign 4
+_020324F0: .word 0x021C5A00
+_020324F4: .word FUN_02032510
+
+ thumb_func_start FUN_020324F8
+FUN_020324F8: ; 0x020324F8
+ push {r3, lr}
+ bl FUN_0202E6F0
+ cmp r0, #0x0
+ beq _0203250A
+ ldr r0, _0203250C ; =FUN_02032510
+ mov r1, #0x0
+ bl FUN_02031D20
+_0203250A:
+ pop {r3, pc}
+ .balign 4
+_0203250C: .word FUN_02032510
+
+ thumb_func_start FUN_02032510
+FUN_02032510: ; 0x02032510
+ push {r3-r5, lr}
+ bl FUN_0202EE0C
+ cmp r0, #0x0
+ beq _02032568
+ ldr r1, _0203256C ; =0x021C5A00
+ mov r2, #0x2
+ ldr r1, [r1, #0x0]
+ mov r0, #0x0
+ add r1, #0x43
+ ldrb r1, [r1, #0x0]
+ lsl r2, r2, #0x8
+ mov r3, #0x1
+ bl FUN_0202F918
+ cmp r0, #0x0
+ beq _02032568
+ ldr r0, _0203256C ; =0x021C5A00
+ ldr r4, [r0, #0x0]
+ add r5, r4, #0x0
+ add r5, #0xc
+ ldr r0, [r5, #0x8]
+ ldr r1, [r5, #0xc]
+ ldr r2, [r4, #0xc]
+ ldr r3, [r5, #0x4]
+ blx _ll_mul
+ ldr r2, [r5, #0x10]
+ ldr r3, [r5, #0x14]
+ add r0, r2, r0
+ adc r3, r1
+ str r0, [r4, #0xc]
+ str r3, [r5, #0x4]
+ bl FUN_0202FA10
+ ldr r0, _0203256C ; =0x021C5A00
+ mov r1, #0x0
+ ldr r0, [r0, #0x0]
+ add r0, #0x43
+ strb r1, [r0, #0x0]
+ ldr r0, _02032570 ; =FUN_02032578
+ ldr r1, _02032574 ; =0x00002710
+ bl FUN_02031D20
+_02032568:
+ pop {r3-r5, pc}
+ nop
+_0203256C: .word 0x021C5A00
+_02032570: .word FUN_02032578
+_02032574: .word 0x00002710
+
+ thumb_func_start FUN_02032578
+FUN_02032578: ; 0x02032578
+ push {r3, lr}
+ bl FUN_0202F104
+ cmp r0, #0x0
+ bne _020325B2
+ bl FUN_020311E8
+ cmp r0, #0x0
+ beq _020325A2
+ ldr r0, _020325C4 ; =0x021C5A00
+ mov r1, #0x1
+ ldr r0, [r0, #0x0]
+ add r0, #0x43
+ strb r1, [r0, #0x0]
+ bl FUN_02033E74
+ ldr r0, _020325C8 ; =FUN_020327FC
+ mov r1, #0x0
+ bl FUN_02031D20
+ pop {r3, pc}
+_020325A2:
+ ldr r0, _020325C4 ; =0x021C5A00
+ ldr r1, [r0, #0x0]
+ ldrh r0, [r1, #0x3a]
+ cmp r0, #0x0
+ beq _020325B2
+ sub r0, r0, #0x1
+ strh r0, [r1, #0x3a]
+ pop {r3, pc}
+_020325B2:
+ bl FUN_0202E6F0
+ cmp r0, #0x0
+ beq _020325C2
+ ldr r0, _020325CC ; =FUN_020325D0
+ mov r1, #0x0
+ bl FUN_02031D20
+_020325C2:
+ pop {r3, pc}
+ .balign 4
+_020325C4: .word 0x021C5A00
+_020325C8: .word FUN_020327FC
+_020325CC: .word FUN_020325D0
+
+ thumb_func_start FUN_020325D0
+FUN_020325D0: ; 0x020325D0
+ push {r3-r5, lr}
+ bl FUN_0202EE0C
+ cmp r0, #0x0
+ beq _0203261C
+ mov r0, #0x0
+ mov r2, #0x2
+ add r1, r0, #0x0
+ lsl r2, r2, #0x8
+ bl FUN_0202F950
+ cmp r0, #0x0
+ beq _0203261C
+ bl FUN_0202FA10
+ ldr r0, _02032620 ; =0x021C5A00
+ ldr r4, [r0, #0x0]
+ add r5, r4, #0x0
+ add r5, #0xc
+ ldr r0, [r5, #0x8]
+ ldr r1, [r5, #0xc]
+ ldr r2, [r4, #0xc]
+ ldr r3, [r5, #0x4]
+ blx _ll_mul
+ ldr r2, [r5, #0x10]
+ ldr r3, [r5, #0x14]
+ add r0, r2, r0
+ adc r3, r1
+ str r0, [r4, #0xc]
+ mov r1, #0x0
+ ldr r0, _02032624 ; =FUN_020324C8
+ lsr r2, r3, #0x1b
+ lsl r1, r1, #0x5
+ orr r1, r2
+ str r3, [r5, #0x4]
+ bl FUN_02031D20
+_0203261C:
+ pop {r3-r5, pc}
+ nop
+_02032620: .word 0x021C5A00
+_02032624: .word FUN_020324C8
+
+ thumb_func_start FUN_02032628
+FUN_02032628: ; 0x02032628
+ push {r3, lr}
+ bl FUN_0202E6F0
+ cmp r0, #0x0
+ beq _0203263A
+ ldr r0, _0203263C ; =FUN_02032640
+ mov r1, #0x0
+ bl FUN_02031D20
+_0203263A:
+ pop {r3, pc}
+ .balign 4
+_0203263C: .word FUN_02032640
+
+ thumb_func_start FUN_02032640
+FUN_02032640: ; 0x02032640
+ push {r3, lr}
+ bl FUN_0202EE0C
+ cmp r0, #0x0
+ beq _02032666
+ mov r0, #0x0
+ mov r2, #0x2
+ add r1, r0, #0x0
+ lsl r2, r2, #0x8
+ bl FUN_0202F950
+ cmp r0, #0x0
+ beq _02032666
+ bl FUN_0202FA10
+ ldr r0, _02032668 ; =FUN_0203266C
+ mov r1, #0x64
+ bl FUN_02031D20
+_02032666:
+ pop {r3, pc}
+ .balign 4
+_02032668: .word FUN_0203266C
+
+ thumb_func_start FUN_0203266C
+FUN_0203266C: ; 0x0203266C
+ push {r3, lr}
+ ldr r0, _020326C4 ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ add r0, #0x3e
+ ldrb r0, [r0, #0x0]
+ bl FUN_0202E8A0
+ cmp r0, #0x0
+ beq _02032698
+ ldr r0, _020326C4 ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ add r0, #0x3e
+ ldrb r0, [r0, #0x0]
+ bl FUN_0202FB18
+ cmp r0, #0x0
+ beq _02032698
+ ldr r0, _020326C8 ; =FUN_020326D0
+ mov r1, #0x64
+ bl FUN_02031D20
+ pop {r3, pc}
+_02032698:
+ bl FUN_020311F0
+ cmp r0, #0x0
+ beq _020326AA
+ ldr r0, _020326CC ; =FUN_020327B8
+ mov r1, #0x0
+ bl FUN_02031D20
+ pop {r3, pc}
+_020326AA:
+ ldr r0, _020326C4 ; =0x021C5A00
+ ldr r1, [r0, #0x0]
+ ldrh r0, [r1, #0x3a]
+ cmp r0, #0x0
+ beq _020326BA
+ sub r0, r0, #0x1
+ strh r0, [r1, #0x3a]
+ pop {r3, pc}
+_020326BA:
+ ldr r0, _020326CC ; =FUN_020327B8
+ mov r1, #0x0
+ bl FUN_02031D20
+ pop {r3, pc}
+ .balign 4
+_020326C4: .word 0x021C5A00
+_020326C8: .word FUN_020326D0
+_020326CC: .word FUN_020327B8
+
+ thumb_func_start FUN_020326D0
+FUN_020326D0: ; 0x020326D0
+ push {r3, lr}
+ bl FUN_020311F0
+ cmp r0, #0x0
+ beq _020326E4
+ ldr r0, _02032728 ; =FUN_020327B8
+ mov r1, #0x0
+ bl FUN_02031D20
+ pop {r3, pc}
+_020326E4:
+ bl FUN_02031190
+ bl FUN_02030E7C
+ cmp r0, #0x0
+ beq _0203270C
+ ldr r0, _0203272C ; =0x021C5A00
+ mov r1, #0x0
+ ldr r0, [r0, #0x0]
+ add r0, #0x3d
+ strb r1, [r0, #0x0]
+ ldr r1, _02032730 ; =0x02105D5C
+ mov r0, #0x6
+ bl FUN_020311D0
+ ldr r0, _02032734 ; =FUN_02032738
+ mov r1, #0x78
+ bl FUN_02031D20
+ pop {r3, pc}
+_0203270C:
+ ldr r0, _0203272C ; =0x021C5A00
+ ldr r1, [r0, #0x0]
+ ldrh r0, [r1, #0x3a]
+ cmp r0, #0x0
+ beq _0203271C
+ sub r0, r0, #0x1
+ strh r0, [r1, #0x3a]
+ pop {r3, pc}
+_0203271C:
+ ldr r0, _02032728 ; =FUN_020327B8
+ mov r1, #0x0
+ bl FUN_02031D20
+ pop {r3, pc}
+ nop
+_02032728: .word FUN_020327B8
+_0203272C: .word 0x021C5A00
+_02032730: .word 0x02105D5C
+_02032734: .word FUN_02032738
+
+ thumb_func_start FUN_02032738
+FUN_02032738: ; 0x02032738
+ push {r3, lr}
+ bl FUN_020311F0
+ cmp r0, #0x0
+ beq _0203274C
+ ldr r0, _0203278C ; =FUN_020327B8
+ mov r1, #0x0
+ bl FUN_02031D20
+ pop {r3, pc}
+_0203274C:
+ ldr r0, _02032790 ; =0x021C5A00
+ ldr r1, [r0, #0x0]
+ add r0, r1, #0x0
+ add r0, #0x3d
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x2
+ bne _02032764
+ ldr r0, _02032794 ; =FUN_020327B4
+ mov r1, #0x0
+ bl FUN_02031D20
+ pop {r3, pc}
+_02032764:
+ cmp r0, #0x1
+ bne _02032776
+ bl FUN_0202DBE0
+ ldr r0, _02032798 ; =FUN_0203279C
+ mov r1, #0x0
+ bl FUN_02031D20
+ pop {r3, pc}
+_02032776:
+ ldrh r0, [r1, #0x3a]
+ cmp r0, #0x0
+ beq _02032782
+ sub r0, r0, #0x1
+ strh r0, [r1, #0x3a]
+ pop {r3, pc}
+_02032782:
+ ldr r0, _0203278C ; =FUN_020327B8
+ mov r1, #0x0
+ bl FUN_02031D20
+ pop {r3, pc}
+ .balign 4
+_0203278C: .word FUN_020327B8
+_02032790: .word 0x021C5A00
+_02032794: .word FUN_020327B4
+_02032798: .word FUN_0203279C
+
+ thumb_func_start FUN_0203279C
+FUN_0203279C: ; 0x0203279C
+ push {r3, lr}
+ bl FUN_020311F0
+ cmp r0, #0x0
+ beq _020327AE
+ ldr r0, _020327B0 ; =FUN_020327B8
+ mov r1, #0x0
+ bl FUN_02031D20
+_020327AE:
+ pop {r3, pc}
+ .balign 4
+_020327B0: .word FUN_020327B8
+
+ thumb_func_start FUN_020327B4
+FUN_020327B4: ; 0x020327B4
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020327B8
+FUN_020327B8: ; 0x020327B8
+ push {r3, lr}
+ ldr r0, _020327F0 ; =0x021C5A00
+ mov r1, #0x0
+ ldr r0, [r0, #0x0]
+ add r0, #0x3d
+ strb r1, [r0, #0x0]
+ bl FUN_0202E6F0
+ cmp r0, #0x0
+ beq _020327EC
+ ldr r0, _020327F0 ; =0x021C5A00
+ ldr r1, [r0, #0x0]
+ ldrh r0, [r1, #0x38]
+ cmp r0, #0x0
+ beq _020327E4
+ sub r0, r0, #0x1
+ strh r0, [r1, #0x38]
+ ldr r0, _020327F4 ; =FUN_02032640
+ mov r1, #0x0
+ bl FUN_02031D20
+ pop {r3, pc}
+_020327E4:
+ ldr r0, _020327F8 ; =FUN_020327B4
+ mov r1, #0x0
+ bl FUN_02031D20
+_020327EC:
+ pop {r3, pc}
+ nop
+_020327F0: .word 0x021C5A00
+_020327F4: .word FUN_02032640
+_020327F8: .word FUN_020327B4
+
+ thumb_func_start FUN_020327FC
+FUN_020327FC: ; 0x020327FC
+ push {r3, lr}
+ bl FUN_020311E8
+ cmp r0, #0x0
+ bne _02032820
+ bl FUN_02033510
+ cmp r0, #0x0
+ bne _0203282C
+ bl FUN_0202E6F0
+ cmp r0, #0x0
+ beq _0203282C
+ ldr r0, _02032848 ; =FUN_020325D0
+ mov r1, #0x0
+ bl FUN_02031D20
+ b _0203282C
+_02032820:
+ bl FUN_02031190
+ cmp r0, #0x0
+ bne _0203282C
+ bl FUN_0202DDE8
+_0203282C:
+ bl FUN_020311F0
+ cmp r0, #0x0
+ beq _02032844
+ bl FUN_02033510
+ cmp r0, #0x0
+ bne _02032844
+ ldr r0, _0203284C ; =FUN_020327B8
+ mov r1, #0x0
+ bl FUN_02031D20
+_02032844:
+ pop {r3, pc}
+ nop
+_02032848: .word FUN_020325D0
+_0203284C: .word FUN_020327B8
+
+ thumb_func_start FUN_02032850
+FUN_02032850: ; 0x02032850
+ push {r3, lr}
+ bl FUN_0202EE0C
+ cmp r0, #0x0
+ beq _0203287E
+ ldr r1, _02032880 ; =0x021C5A00
+ mov r0, #0x0
+ ldr r1, [r1, #0x0]
+ mov r2, #0x2
+ add r1, #0x43
+ ldrb r1, [r1, #0x0]
+ lsl r2, r2, #0x8
+ add r3, r0, #0x0
+ bl FUN_0202F918
+ cmp r0, #0x0
+ beq _0203287E
+ bl FUN_0202FA10
+ ldr r0, _02032884 ; =FUN_020323B8
+ mov r1, #0x0
+ bl FUN_02031D20
+_0203287E:
+ pop {r3, pc}
+ .balign 4
+_02032880: .word 0x021C5A00
+_02032884: .word FUN_020323B8
+
+ thumb_func_start FUN_02032888
+FUN_02032888: ; 0x02032888
+ push {r3, lr}
+ ldr r0, _020328BC ; =0x021C5A00
+ mov r1, #0xd
+ ldr r0, [r0, #0x0]
+ add r0, #0x3f
+ strb r1, [r0, #0x0]
+ bl FUN_02031190
+ cmp r0, #0x0
+ add r0, sp, #0x0
+ bne _020328AE
+ mov r1, #0x0
+ strb r1, [r0, #0x1]
+ add r1, sp, #0x0
+ mov r0, #0xa
+ add r1, #0x1
+ bl FUN_020311D0
+ pop {r3, pc}
+_020328AE:
+ mov r1, #0x0
+ strb r1, [r0, #0x0]
+ mov r0, #0xa
+ add r1, sp, #0x0
+ bl FUN_020311D0
+ pop {r3, pc}
+ .balign 4
+_020328BC: .word 0x021C5A00
+
+ thumb_func_start FUN_020328C0
+FUN_020328C0: ; 0x020328C0
+ ldr r1, _020328D8 ; =0x021C5A00
+ ldr r3, _020328DC ; =FUN_02031D20
+ ldr r2, [r1, #0x0]
+ add r2, #0x3e
+ strb r0, [r2, #0x0]
+ ldr r0, [r1, #0x0]
+ mov r2, #0x3
+ strh r2, [r0, #0x38]
+ ldr r0, _020328E0 ; =FUN_02032924
+ mov r1, #0x0
+ bx r3
+ nop
+_020328D8: .word 0x021C5A00
+_020328DC: .word FUN_02031D20
+_020328E0: .word FUN_02032924
+
+ thumb_func_start FUN_020328E4
+FUN_020328E4: ; 0x020328E4
+ ldr r0, _020328F0 ; =0x021C5A00
+ mov r1, #0x7
+ ldr r0, [r0, #0x0]
+ add r0, #0x3f
+ strb r1, [r0, #0x0]
+ bx lr
+ .balign 4
+_020328F0: .word 0x021C5A00
+
+ thumb_func_start FUN_020328F4
+FUN_020328F4: ; 0x020328F4
+ push {r3, lr}
+ ldr r1, _0203291C ; =0x021C5A00
+ ldr r2, [r1, #0x0]
+ add r2, #0x3e
+ strb r0, [r2, #0x0]
+ ldr r0, [r1, #0x0]
+ mov r2, #0x7
+ add r0, #0x3f
+ strb r2, [r0, #0x0]
+ ldr r0, [r1, #0x0]
+ mov r2, #0x3
+ strh r2, [r0, #0x38]
+ bl FUN_02033E74
+ ldr r0, _02032920 ; =FUN_02032628
+ mov r1, #0x0
+ bl FUN_02031D20
+ pop {r3, pc}
+ nop
+_0203291C: .word 0x021C5A00
+_02032920: .word FUN_02032628
+
+ thumb_func_start FUN_02032924
+FUN_02032924: ; 0x02032924
+ push {r3, lr}
+ bl FUN_0202E6F0
+ cmp r0, #0x0
+ beq _02032936
+ ldr r0, _02032938 ; =FUN_0203293C
+ mov r1, #0x0
+ bl FUN_02031D20
+_02032936:
+ pop {r3, pc}
+ .balign 4
+_02032938: .word FUN_0203293C
+
+ thumb_func_start FUN_0203293C
+FUN_0203293C: ; 0x0203293C
+ push {r3, lr}
+ bl FUN_0202EE0C
+ cmp r0, #0x0
+ beq _0203296C
+ ldr r0, _02032970 ; =0x021C5A00
+ mov r2, #0x2
+ ldr r0, [r0, #0x0]
+ mov r1, #0xd
+ add r0, #0x3f
+ strb r1, [r0, #0x0]
+ mov r0, #0x0
+ add r1, r0, #0x0
+ lsl r2, r2, #0x8
+ bl FUN_0202F950
+ cmp r0, #0x0
+ beq _0203296C
+ bl FUN_0202FA1C
+ ldr r0, _02032974 ; =FUN_02032978
+ mov r1, #0x64
+ bl FUN_02031D20
+_0203296C:
+ pop {r3, pc}
+ nop
+_02032970: .word 0x021C5A00
+_02032974: .word FUN_02032978
+
+ thumb_func_start FUN_02032978
+FUN_02032978: ; 0x02032978
+ push {r3, lr}
+ ldr r0, _020329E4 ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ add r0, #0x3e
+ ldrb r0, [r0, #0x0]
+ bl FUN_0202E8A0
+ cmp r0, #0x0
+ beq _020329A4
+ ldr r0, _020329E4 ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ add r0, #0x3e
+ ldrb r0, [r0, #0x0]
+ bl FUN_0202FB18
+ cmp r0, #0x0
+ beq _020329A4
+ ldr r0, _020329E8 ; =FUN_020329F4
+ mov r1, #0x64
+ bl FUN_02031D20
+ pop {r3, pc}
+_020329A4:
+ bl FUN_020311F0
+ cmp r0, #0x0
+ bne _020329B6
+ ldr r0, _020329E4 ; =0x021C5A00
+ ldr r1, [r0, #0x0]
+ ldrh r0, [r1, #0x3a]
+ cmp r0, #0x0
+ bne _020329DC
+_020329B6:
+ ldr r0, _020329E4 ; =0x021C5A00
+ ldr r2, [r0, #0x0]
+ ldrh r1, [r2, #0x38]
+ sub r1, r1, #0x1
+ strh r1, [r2, #0x38]
+ ldr r0, [r0, #0x0]
+ ldrh r0, [r0, #0x38]
+ cmp r0, #0x0
+ bne _020329D2
+ ldr r0, _020329EC ; =FUN_020327B4
+ mov r1, #0x0
+ bl FUN_02031D20
+ pop {r3, pc}
+_020329D2:
+ ldr r0, _020329F0 ; =FUN_02032924
+ mov r1, #0x0
+ bl FUN_02031D20
+ pop {r3, pc}
+_020329DC:
+ beq _020329E2
+ sub r0, r0, #0x1
+ strh r0, [r1, #0x3a]
+_020329E2:
+ pop {r3, pc}
+ .balign 4
+_020329E4: .word 0x021C5A00
+_020329E8: .word FUN_020329F4
+_020329EC: .word FUN_020327B4
+_020329F0: .word FUN_02032924
+
+ thumb_func_start FUN_020329F4
+FUN_020329F4: ; 0x020329F4
+ push {r3, lr}
+ ldr r0, _02032A7C ; =0x021C5A00
+ ldr r1, [r0, #0x0]
+ ldrh r0, [r1, #0x3a]
+ cmp r0, #0x5a
+ bls _02032A06
+ sub r0, r0, #0x1
+ strh r0, [r1, #0x3a]
+ pop {r3, pc}
+_02032A06:
+ bl FUN_020311F0
+ cmp r0, #0x0
+ beq _02032A34
+ ldr r0, _02032A7C ; =0x021C5A00
+ ldr r2, [r0, #0x0]
+ ldrh r1, [r2, #0x38]
+ sub r1, r1, #0x1
+ strh r1, [r2, #0x38]
+ ldr r0, [r0, #0x0]
+ ldrh r0, [r0, #0x38]
+ cmp r0, #0x0
+ bne _02032A2A
+ ldr r0, _02032A80 ; =FUN_020327B4
+ mov r1, #0x0
+ bl FUN_02031D20
+ pop {r3, pc}
+_02032A2A:
+ ldr r0, _02032A84 ; =FUN_02032924
+ mov r1, #0x0
+ bl FUN_02031D20
+ pop {r3, pc}
+_02032A34:
+ bl FUN_02031190
+ bl FUN_02030E7C
+ cmp r0, #0x0
+ beq _02032A4A
+ ldr r0, _02032A88 ; =FUN_0203279C
+ mov r1, #0x0
+ bl FUN_02031D20
+ pop {r3, pc}
+_02032A4A:
+ ldr r0, _02032A7C ; =0x021C5A00
+ ldr r2, [r0, #0x0]
+ ldrh r1, [r2, #0x3a]
+ cmp r1, #0x0
+ beq _02032A5A
+ sub r0, r1, #0x1
+ strh r0, [r2, #0x3a]
+ pop {r3, pc}
+_02032A5A:
+ ldrh r1, [r2, #0x38]
+ sub r1, r1, #0x1
+ strh r1, [r2, #0x38]
+ ldr r0, [r0, #0x0]
+ ldrh r0, [r0, #0x38]
+ cmp r0, #0x0
+ bne _02032A72
+ ldr r0, _02032A80 ; =FUN_020327B4
+ mov r1, #0x0
+ bl FUN_02031D20
+ pop {r3, pc}
+_02032A72:
+ ldr r0, _02032A84 ; =FUN_02032924
+ mov r1, #0x0
+ bl FUN_02031D20
+ pop {r3, pc}
+ .balign 4
+_02032A7C: .word 0x021C5A00
+_02032A80: .word FUN_020327B4
+_02032A84: .word FUN_02032924
+_02032A88: .word FUN_0203279C
+
+ thumb_func_start FUN_02032A8C
+FUN_02032A8C: ; 0x02032A8C
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r2, #0x0
+ bl FUN_02031190
+ cmp r0, #0x0
+ bne _02032ADA
+ ldr r6, _02032ADC ; =0x02105D5C
+ mov r3, #0x1
+ mov r2, #0x0
+_02032AA0:
+ ldrb r1, [r6, #0x0]
+ ldrb r0, [r4, r2]
+ cmp r1, r0
+ beq _02032AAC
+ mov r3, #0x0
+ b _02032AB4
+_02032AAC:
+ add r2, r2, #0x1
+ add r6, r6, #0x1
+ cmp r2, #0x6
+ blo _02032AA0
+_02032AB4:
+ cmp r3, #0x0
+ beq _02032AD0
+ ldr r0, _02032AE0 ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ add r0, #0x48
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _02032AD0
+ ldr r1, _02032AE4 ; =0x02105D6C
+ mov r0, #0x7
+ strb r5, [r1, #0x0]
+ bl FUN_02030C4C
+ pop {r4-r6, pc}
+_02032AD0:
+ ldr r1, _02032AE8 ; =0x02105D64
+ mov r0, #0x7
+ strb r5, [r1, #0x0]
+ bl FUN_02030C4C
+_02032ADA:
+ pop {r4-r6, pc}
+ .balign 4
+_02032ADC: .word 0x02105D5C
+_02032AE0: .word 0x021C5A00
+_02032AE4: .word 0x02105D6C
+_02032AE8: .word 0x02105D64
+
+ thumb_func_start FUN_02032AEC
+FUN_02032AEC: ; 0x02032AEC
+ push {r3-r5, lr}
+ mov r4, #0x1
+ ldr r5, _02032B5C ; =0x02105D6D
+ add r3, r4, #0x0
+_02032AF4:
+ ldrb r1, [r5, #0x0]
+ ldrb r0, [r2, r3]
+ cmp r1, r0
+ beq _02032B00
+ mov r4, #0x0
+ b _02032B08
+_02032B00:
+ add r3, r3, #0x1
+ add r5, r5, #0x1
+ cmp r3, #0x6
+ blo _02032AF4
+_02032B08:
+ cmp r4, #0x0
+ beq _02032B22
+ ldrb r4, [r2, #0x0]
+ bl FUN_02031190
+ cmp r4, r0
+ bne _02032B58
+ ldr r0, _02032B60 ; =0x021C5A00
+ mov r1, #0x1
+ ldr r0, [r0, #0x0]
+ add r0, #0x3d
+ strb r1, [r0, #0x0]
+ pop {r3-r5, pc}
+_02032B22:
+ mov r4, #0x1
+ ldr r3, _02032B64 ; =0x02105D65
+ add r5, r4, #0x0
+_02032B28:
+ ldrb r1, [r3, #0x0]
+ ldrb r0, [r2, r5]
+ cmp r1, r0
+ beq _02032B34
+ mov r4, #0x0
+ b _02032B3C
+_02032B34:
+ add r5, r5, #0x1
+ add r3, r3, #0x1
+ cmp r5, #0x6
+ blo _02032B28
+_02032B3C:
+ cmp r4, #0x0
+ beq _02032B58
+ ldrb r4, [r2, #0x0]
+ bl FUN_02031190
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r4, r0
+ bne _02032B58
+ ldr r0, _02032B60 ; =0x021C5A00
+ mov r1, #0x2
+ ldr r0, [r0, #0x0]
+ add r0, #0x3d
+ strb r1, [r0, #0x0]
+_02032B58:
+ pop {r3-r5, pc}
+ nop
+_02032B5C: .word 0x02105D6D
+_02032B60: .word 0x021C5A00
+_02032B64: .word 0x02105D65
+
+ thumb_func_start FUN_02032B68
+FUN_02032B68: ; 0x02032B68
+ mov r0, #0x6
+ bx lr
+
+ thumb_func_start FUN_02032B6C
+FUN_02032B6C: ; 0x02032B6C
+ push {r3, lr}
+ ldr r1, _02032B80 ; =0x021C5A00
+ ldr r1, [r1, #0x0]
+ cmp r1, #0x0
+ beq _02032B7E
+ add r1, #0x3c
+ strb r0, [r1, #0x0]
+ bl FUN_0202D1B0
+_02032B7E:
+ pop {r3, pc}
+ .balign 4
+_02032B80: .word 0x021C5A00
+
+ thumb_func_start FUN_02032B84
+FUN_02032B84: ; 0x02032B84
+ ldr r3, _02032B88 ; =FUN_0202EA54
+ bx r3
+ .balign 4
+_02032B88: .word FUN_0202EA54
+
+ thumb_func_start FUN_02032B8C
+FUN_02032B8C: ; 0x02032B8C
+ push {r3, lr}
+ bl FUN_0202E4C8
+ cmp r0, #0x0
+ beq _02032BC6
+ ldr r0, _02032BC8 ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x2c]
+ bl FUN_0202E29C
+ ldr r0, _02032BC8 ; =0x021C5A00
+ mov r1, #0x0
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x28]
+ bl FUN_0202DB14
+ mov r0, #0x1
+ add r1, r0, #0x0
+ mov r2, #0x20
+ bl FUN_0202F950
+ cmp r0, #0x0
+ beq _02032BC6
+ bl FUN_0202FA10
+ ldr r0, _02032BCC ; =FUN_02032B84
+ mov r1, #0x0
+ bl FUN_02031D20
+_02032BC6:
+ pop {r3, pc}
+ .balign 4
+_02032BC8: .word 0x021C5A00
+_02032BCC: .word FUN_02032B84
+
+ thumb_func_start FUN_02032BD0
+FUN_02032BD0: ; 0x02032BD0
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02030F40
+ cmp r0, #0x0
+ bne _02032C00
+ mov r2, #0x7
+ mov r0, #0x3
+ mov r1, #0xf
+ lsl r2, r2, #0xc
+ bl FUN_02016828
+ add r0, r4, #0x0
+ mov r1, #0xe
+ bl FUN_02031734
+ ldr r0, _02032C04 ; =0x021C5A00
+ mov r1, #0x0
+ ldr r0, [r0, #0x0]
+ add r0, #0x40
+ strb r1, [r0, #0x0]
+ ldr r0, _02032C08 ; =FUN_02032B8C
+ bl FUN_02031D20
+_02032C00:
+ pop {r4, pc}
+ nop
+_02032C04: .word 0x021C5A00
+_02032C08: .word FUN_02032B8C
+
+ thumb_func_start FUN_02032C0C
+FUN_02032C0C: ; 0x02032C0C
+ push {r3, lr}
+ ldr r0, _02032C20 ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _02032C1E
+ ldr r0, _02032C24 ; =FUN_02032440
+ mov r1, #0x5
+ bl FUN_02031D20
+_02032C1E:
+ pop {r3, pc}
+ .balign 4
+_02032C20: .word 0x021C5A00
+_02032C24: .word FUN_02032440
+
+ thumb_func_start FUN_02032C28
+FUN_02032C28: ; 0x02032C28
+ sub sp, #0x8
+ ldr r1, _02032C64 ; =0x020EEC48
+ add r0, sp, #0x0
+ ldr r2, [r1, #0x0]
+ ldr r1, [r1, #0x4]
+ str r2, [sp, #0x0]
+ str r1, [sp, #0x4]
+ ldr r1, _02032C68 ; =0x021C5A00
+ ldr r1, [r1, #0x0]
+ ldr r3, [r1, #0x24]
+ cmp r1, #0x0
+ bne _02032C46
+ mov r0, #0x0
+ add sp, #0x8
+ bx lr
+_02032C46:
+ cmp r2, #0x0
+ beq _02032C5E
+_02032C4A:
+ ldr r1, [r0, #0x0]
+ cmp r3, r1
+ bne _02032C56
+ mov r0, #0x1
+ add sp, #0x8
+ bx lr
+_02032C56:
+ add r0, r0, #0x4
+ ldr r1, [r0, #0x0]
+ cmp r1, #0x0
+ bne _02032C4A
+_02032C5E:
+ mov r0, #0x0
+ add sp, #0x8
+ bx lr
+ .balign 4
+_02032C64: .word 0x020EEC48
+_02032C68: .word 0x021C5A00
+
+ thumb_func_start FUN_02032C6C
+FUN_02032C6C: ; 0x02032C6C
+ ldr r2, _02032CE4 ; =0x00400131
+ cmp r0, r2
+ bhi _02032C7C
+ bhs _02032CBA
+ ldr r2, _02032CE8 ; =0x00000333
+ cmp r0, r2
+ beq _02032C8E
+ bx lr
+_02032C7C:
+ ldr r1, _02032CEC ; =0x00400286
+ cmp r0, r1
+ bhi _02032C86
+ beq _02032CCE
+ bx lr
+_02032C86:
+ add r1, #0x92
+ cmp r0, r1
+ beq _02032CA6
+ bx lr
+_02032C8E:
+ cmp r1, #0xf
+ bne _02032CE0
+ ldr r0, _02032CF0 ; =0x021C5A00
+ ldr r2, [r0, #0x0]
+ add r0, r2, #0x0
+ add r0, #0x49
+ ldrb r1, [r0, #0x0]
+ mov r0, #0x1
+ add r2, #0x49
+ orr r0, r1
+ strb r0, [r2, #0x0]
+ bx lr
+_02032CA6:
+ ldr r0, _02032CF0 ; =0x021C5A00
+ ldr r2, [r0, #0x0]
+ add r0, r2, #0x0
+ add r0, #0x49
+ ldrb r1, [r0, #0x0]
+ mov r0, #0x1
+ add r2, #0x49
+ orr r0, r1
+ strb r0, [r2, #0x0]
+ bx lr
+_02032CBA:
+ ldr r0, _02032CF0 ; =0x021C5A00
+ ldr r2, [r0, #0x0]
+ add r0, r2, #0x0
+ add r0, #0x49
+ ldrb r1, [r0, #0x0]
+ mov r0, #0x2
+ add r2, #0x49
+ orr r0, r1
+ strb r0, [r2, #0x0]
+ bx lr
+_02032CCE:
+ ldr r0, _02032CF0 ; =0x021C5A00
+ ldr r2, [r0, #0x0]
+ add r0, r2, #0x0
+ add r0, #0x49
+ ldrb r1, [r0, #0x0]
+ mov r0, #0x4
+ add r2, #0x49
+ orr r0, r1
+ strb r0, [r2, #0x0]
+_02032CE0:
+ bx lr
+ nop
+_02032CE4: .word 0x00400131
+_02032CE8: .word 0x00000333
+_02032CEC: .word 0x00400286
+_02032CF0: .word 0x021C5A00
+
+ thumb_func_start FUN_02032CF4
+FUN_02032CF4: ; 0x02032CF4
+ push {r3, lr}
+ bl FUN_0202E4C8
+ cmp r0, #0x0
+ beq _02032D34
+ ldr r0, _02032D38 ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x2c]
+ bl FUN_0202E29C
+ ldr r0, _02032D38 ; =0x021C5A00
+ mov r1, #0x0
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x28]
+ bl FUN_0202DB14
+ ldr r0, _02032D3C ; =FUN_02032C6C
+ bl FUN_0202D308
+ mov r0, #0x1
+ add r1, r0, #0x0
+ mov r2, #0x20
+ bl FUN_0202F950
+ cmp r0, #0x0
+ beq _02032D34
+ bl FUN_0202FA10
+ ldr r0, _02032D40 ; =FUN_02032B84
+ mov r1, #0x0
+ bl FUN_02031D20
+_02032D34:
+ pop {r3, pc}
+ nop
+_02032D38: .word 0x021C5A00
+_02032D3C: .word FUN_02032C6C
+_02032D40: .word FUN_02032B84
+
+ thumb_func_start FUN_02032D44
+FUN_02032D44: ; 0x02032D44
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02030F40
+ cmp r0, #0x0
+ bne _02032D74
+ mov r2, #0x7
+ mov r0, #0x3
+ mov r1, #0xf
+ lsl r2, r2, #0xc
+ bl FUN_02016828
+ add r0, r4, #0x0
+ mov r1, #0x11
+ bl FUN_02031734
+ ldr r0, _02032D78 ; =0x021C5A00
+ mov r1, #0x0
+ ldr r0, [r0, #0x0]
+ add r0, #0x40
+ strb r1, [r0, #0x0]
+ ldr r0, _02032D7C ; =FUN_02032CF4
+ bl FUN_02031D20
+_02032D74:
+ pop {r4, pc}
+ nop
+_02032D78: .word 0x021C5A00
+_02032D7C: .word FUN_02032CF4
+
+ thumb_func_start FUN_02032D80
+FUN_02032D80: ; 0x02032D80
+ push {r3, lr}
+ ldr r0, _02032D94 ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _02032D92
+ ldr r0, _02032D98 ; =FUN_02032440
+ mov r1, #0x5
+ bl FUN_02031D20
+_02032D92:
+ pop {r3, pc}
+ .balign 4
+_02032D94: .word 0x021C5A00
+_02032D98: .word FUN_02032440
+
+ thumb_func_start FUN_02032D9C
+FUN_02032D9C: ; 0x02032D9C
+ ldr r0, _02032DA8 ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ add r0, #0x49
+ ldrb r0, [r0, #0x0]
+ bx lr
+ nop
+_02032DA8: .word 0x021C5A00
+
+ thumb_func_start FUN_02032DAC
+FUN_02032DAC: ; 0x02032DAC
+ push {r3, lr}
+ bl FUN_02031468
+ ldr r0, _02032DF4 ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _02032DBE
+ mov r0, #0x1
+ pop {r3, pc}
+_02032DBE:
+ add r0, #0x3f
+ ldrb r0, [r0, #0x0]
+ add r0, #0xe8
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x1
+ bhi _02032DD4
+ bl FUN_021D83C0
+ mov r0, #0x1
+ pop {r3, pc}
+_02032DD4:
+ bl FUN_02033590
+ cmp r0, #0x0
+ beq _02032DE6
+ ldr r0, _02032DF8 ; =FUN_0203318C
+ mov r1, #0x0
+ bl FUN_02031D20
+ b _02032DEE
+_02032DE6:
+ ldr r0, _02032DFC ; =FUN_02032178
+ mov r1, #0x0
+ bl FUN_02031D20
+_02032DEE:
+ mov r0, #0x0
+ pop {r3, pc}
+ nop
+_02032DF4: .word 0x021C5A00
+_02032DF8: .word FUN_0203318C
+_02032DFC: .word FUN_02032178
+
+ thumb_func_start FUN_02032E00
+FUN_02032E00: ; 0x02032E00
+ push {r3, lr}
+ bl FUN_0202E4C8
+ cmp r0, #0x0
+ beq _02032E3C
+ ldr r0, _02032E40 ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x2c]
+ bl FUN_0202E29C
+ ldr r0, _02032E40 ; =0x021C5A00
+ mov r1, #0x0
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x28]
+ bl FUN_0202DB14
+ mov r0, #0x1
+ add r1, r0, #0x0
+ lsl r2, r0, #0x9
+ add r3, r0, #0x0
+ bl FUN_0202F918
+ cmp r0, #0x0
+ beq _02032E3C
+ bl FUN_0202FA10
+ ldr r0, _02032E44 ; =FUN_02032218
+ mov r1, #0x0
+ bl FUN_02031D20
+_02032E3C:
+ pop {r3, pc}
+ nop
+_02032E40: .word 0x021C5A00
+_02032E44: .word FUN_02032218
+
+ thumb_func_start FUN_02032E48
+FUN_02032E48: ; 0x02032E48
+ push {r3, lr}
+ bl FUN_0202E4C8
+ cmp r0, #0x0
+ beq _02032E82
+ ldr r0, _02032E84 ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x2c]
+ bl FUN_0202E29C
+ ldr r0, _02032E84 ; =0x021C5A00
+ mov r1, #0x0
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x28]
+ bl FUN_0202DB14
+ mov r0, #0x1
+ add r1, r0, #0x0
+ lsl r2, r0, #0x9
+ bl FUN_0202F950
+ cmp r0, #0x0
+ beq _02032E82
+ bl FUN_0202FA10
+ ldr r0, _02032E88 ; =FUN_02032290
+ mov r1, #0x0
+ bl FUN_02031D20
+_02032E82:
+ pop {r3, pc}
+ .balign 4
+_02032E84: .word 0x021C5A00
+_02032E88: .word FUN_02032290
+
+ thumb_func_start FUN_02032E8C
+FUN_02032E8C: ; 0x02032E8C
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02032E90
+FUN_02032E90: ; 0x02032E90
+ push {r3, lr}
+ bl FUN_021D7F8C
+ cmp r0, #0x0
+ bge _02032EA2
+ ldr r0, _02032EA4 ; =FUN_02032E8C
+ mov r1, #0x0
+ bl FUN_02031D20
+_02032EA2:
+ pop {r3, pc}
+ .balign 4
+_02032EA4: .word FUN_02032E8C
+
+ thumb_func_start FUN_02032EA8
+FUN_02032EA8: ; 0x02032EA8
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02032EAC
+FUN_02032EAC: ; 0x02032EAC
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02032EB0
+FUN_02032EB0: ; 0x02032EB0
+ push {r3, lr}
+ mov r0, #0x1
+ bl FUN_020313A0
+ bl FUN_021D7F8C
+ cmp r0, #0xa
+ blt _02032ECA
+ ldr r0, _02032F0C ; =FUN_02032EAC
+ mov r1, #0x0
+ bl FUN_02031D20
+ pop {r3, pc}
+_02032ECA:
+ cmp r0, #0x0
+ bge _02032ED8
+ ldr r0, _02032F10 ; =FUN_02032E8C
+ mov r1, #0x0
+ bl FUN_02031D20
+ pop {r3, pc}
+_02032ED8:
+ cmp r0, #0x1
+ bne _02032EE6
+ ldr r0, _02032F14 ; =FUN_02032E90
+ mov r1, #0x0
+ bl FUN_02031D20
+ pop {r3, pc}
+_02032EE6:
+ cmp r0, #0x2
+ bne _02032F08
+ ldr r0, _02032F18 ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ add r0, #0x44
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _02032F00
+ ldr r0, _02032F10 ; =FUN_02032E8C
+ mov r1, #0x0
+ bl FUN_02031D20
+ pop {r3, pc}
+_02032F00:
+ ldr r0, _02032F1C ; =FUN_02032EA8
+ mov r1, #0x0
+ bl FUN_02031D20
+_02032F08:
+ pop {r3, pc}
+ nop
+_02032F0C: .word FUN_02032EAC
+_02032F10: .word FUN_02032E8C
+_02032F14: .word FUN_02032E90
+_02032F18: .word 0x021C5A00
+_02032F1C: .word FUN_02032EA8
+
+ thumb_func_start FUN_02032F20
+FUN_02032F20: ; 0x02032F20
+ add r1, r0, #0x2
+ cmp r1, #0x1
+ bls _02032F28
+ neg r0, r0
+_02032F28:
+ ldr r1, _02032F30 ; =0x021C5A00
+ ldr r1, [r1, #0x0]
+ str r0, [r1, #0x34]
+ bx lr
+ .balign 4
+_02032F30: .word 0x021C5A00
+
+ thumb_func_start FUN_02032F34
+FUN_02032F34: ; 0x02032F34
+ push {r3, lr}
+ mov r0, #0x0
+ bl FUN_021D7800
+ cmp r0, #0xa
+ blt _02032F4A
+ ldr r0, _02032F88 ; =FUN_02032EAC
+ mov r1, #0x0
+ bl FUN_02031D20
+ pop {r3, pc}
+_02032F4A:
+ cmp r0, #0x0
+ bge _02032F5C
+ bl FUN_02032F20
+ ldr r0, _02032F8C ; =FUN_02032E8C
+ mov r1, #0x0
+ bl FUN_02031D20
+ pop {r3, pc}
+_02032F5C:
+ cmp r0, #0x1
+ bne _02032F6A
+ ldr r0, _02032F90 ; =FUN_02032EB0
+ mov r1, #0x0
+ bl FUN_02031D20
+ pop {r3, pc}
+_02032F6A:
+ cmp r0, #0x2
+ bne _02032F78
+ ldr r0, _02032F94 ; =FUN_02032EA8
+ mov r1, #0x0
+ bl FUN_02031D20
+ pop {r3, pc}
+_02032F78:
+ cmp r0, #0x3
+ bne _02032F84
+ ldr r0, _02032F88 ; =FUN_02032EAC
+ mov r1, #0x0
+ bl FUN_02031D20
+_02032F84:
+ pop {r3, pc}
+ nop
+_02032F88: .word FUN_02032EAC
+_02032F8C: .word FUN_02032E8C
+_02032F90: .word FUN_02032EB0
+_02032F94: .word FUN_02032EA8
+
+ thumb_func_start FUN_02032F98
+FUN_02032F98: ; 0x02032F98
+ push {r3, lr}
+ mov r0, #0x1
+ bl FUN_021D7800
+ cmp r0, #0x0
+ bge _02032FB2
+ bl FUN_02032F20
+ ldr r0, _02032FD0 ; =FUN_02032E8C
+ mov r1, #0x0
+ bl FUN_02031D20
+ pop {r3, pc}
+_02032FB2:
+ ldr r0, _02032FD4 ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ add r0, #0x42
+ ldrb r0, [r0, #0x0]
+ bl FUN_021D8494
+ cmp r0, #0x0
+ beq _02032FCE
+ bl FUN_0202FC60
+ ldr r0, _02032FD8 ; =FUN_02032F34
+ mov r1, #0x0
+ bl FUN_02031D20
+_02032FCE:
+ pop {r3, pc}
+ .balign 4
+_02032FD0: .word FUN_02032E8C
+_02032FD4: .word 0x021C5A00
+_02032FD8: .word FUN_02032F34
+
+ thumb_func_start FUN_02032FDC
+FUN_02032FDC: ; 0x02032FDC
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _02032FFC ; =FUN_020303BC
+ ldr r1, _02033000 ; =FUN_02030238
+ bl FUN_021D77C4
+ ldr r0, _02033004 ; =0x021C5A00
+ mov r1, #0x0
+ ldr r0, [r0, #0x0]
+ add r0, #0x42
+ strb r4, [r0, #0x0]
+ ldr r0, _02033008 ; =FUN_02032F98
+ bl FUN_02031D20
+ mov r0, #0x1
+ pop {r4, pc}
+ .balign 4
+_02032FFC: .word FUN_020303BC
+_02033000: .word FUN_02030238
+_02033004: .word 0x021C5A00
+_02033008: .word FUN_02032F98
+
+ thumb_func_start FUN_0203300C
+FUN_0203300C: ; 0x0203300C
+ ldr r0, _02033048 ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ ldr r1, [r0, #0x24]
+ ldr r0, _0203304C ; =FUN_02032F34
+ cmp r1, r0
+ bne _0203301C
+ mov r0, #0x0
+ bx lr
+_0203301C:
+ ldr r0, _02033050 ; =FUN_02032EB0
+ cmp r1, r0
+ bne _02033026
+ mov r0, #0x1
+ bx lr
+_02033026:
+ ldr r0, _02033054 ; =FUN_02032E90
+ cmp r1, r0
+ bne _02033030
+ mov r0, #0x3
+ bx lr
+_02033030:
+ ldr r0, _02033058 ; =FUN_02032EA8
+ cmp r1, r0
+ bne _0203303A
+ mov r0, #0x4
+ bx lr
+_0203303A:
+ ldr r0, _0203305C ; =FUN_02032EAC
+ cmp r1, r0
+ bne _02033044
+ mov r0, #0x5
+ bx lr
+_02033044:
+ mov r0, #0x2
+ bx lr
+ .balign 4
+_02033048: .word 0x021C5A00
+_0203304C: .word FUN_02032F34
+_02033050: .word FUN_02032EB0
+_02033054: .word FUN_02032E90
+_02033058: .word FUN_02032EA8
+_0203305C: .word FUN_02032EAC
+
+ thumb_func_start FUN_02033060
+FUN_02033060: ; 0x02033060
+ push {r3, lr}
+ ldr r0, _02033090 ; =FUN_020303BC
+ ldr r1, _02033094 ; =FUN_02030238
+ bl FUN_021D77C4
+ mov r0, #0x0
+ mvn r0, r0
+ bl FUN_021D8494
+ cmp r0, #0x0
+ beq _0203308C
+ ldr r0, _02033098 ; =0x021C5A00
+ mov r1, #0x0
+ ldr r0, [r0, #0x0]
+ add r0, #0x4d
+ strb r1, [r0, #0x0]
+ bl FUN_0202FC60
+ ldr r0, _0203309C ; =FUN_02032F34
+ mov r1, #0x0
+ bl FUN_02031D20
+_0203308C:
+ pop {r3, pc}
+ nop
+_02033090: .word FUN_020303BC
+_02033094: .word FUN_02030238
+_02033098: .word 0x021C5A00
+_0203309C: .word FUN_02032F34
+
+ thumb_func_start FUN_020330A0
+FUN_020330A0: ; 0x020330A0
+ push {r3, lr}
+ mov r0, #0x0
+ bl FUN_020313A0
+ ldr r0, _020330D8 ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ add r0, #0x41
+ ldrb r0, [r0, #0x0]
+ bl FUN_021D82BC
+ cmp r0, #0x0
+ beq _020330C6
+ bl FUN_021D836C
+ ldr r0, _020330DC ; =FUN_02033060
+ mov r1, #0x0
+ bl FUN_02031D20
+ pop {r3, pc}
+_020330C6:
+ bl FUN_021D7F8C
+ cmp r0, #0x0
+ bge _020330D6
+ ldr r0, _020330E0 ; =FUN_02032E8C
+ mov r1, #0x0
+ bl FUN_02031D20
+_020330D6:
+ pop {r3, pc}
+ .balign 4
+_020330D8: .word 0x021C5A00
+_020330DC: .word FUN_02033060
+_020330E0: .word FUN_02032E8C
+
+ thumb_func_start FUN_020330E4
+FUN_020330E4: ; 0x020330E4
+ push {r3, lr}
+ bl FUN_02031190
+ cmp r0, #0x0
+ bne _02033100
+ ldr r0, _02033120 ; =0x021C5A00
+ mov r1, #0x0
+ ldr r0, [r0, #0x0]
+ add r0, #0x41
+ strb r1, [r0, #0x0]
+ ldr r0, _02033124 ; =FUN_020330A0
+ bl FUN_02031D20
+ b _02033112
+_02033100:
+ ldr r0, _02033120 ; =0x021C5A00
+ mov r1, #0x1
+ ldr r0, [r0, #0x0]
+ add r0, #0x41
+ strb r1, [r0, #0x0]
+ ldr r0, _02033124 ; =FUN_020330A0
+ mov r1, #0x0
+ bl FUN_02031D20
+_02033112:
+ ldr r0, _02033120 ; =0x021C5A00
+ mov r1, #0x1
+ ldr r0, [r0, #0x0]
+ add r0, #0x4d
+ strb r1, [r0, #0x0]
+ pop {r3, pc}
+ nop
+_02033120: .word 0x021C5A00
+_02033124: .word FUN_020330A0
+
+ thumb_func_start FUN_02033128
+FUN_02033128: ; 0x02033128
+ ldr r0, _02033134 ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ add r0, #0x4d
+ ldrb r0, [r0, #0x0]
+ bx lr
+ nop
+_02033134: .word 0x021C5A00
+
+ thumb_func_start FUN_02033138
+FUN_02033138: ; 0x02033138
+ ldr r0, _0203314C ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ ldr r1, [r0, #0x24]
+ ldr r0, _02033150 ; =FUN_02033060
+ cmp r1, r0
+ bne _02033148
+ mov r0, #0x1
+ bx lr
+_02033148:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+_0203314C: .word 0x021C5A00
+_02033150: .word FUN_02033060
+
+ thumb_func_start FUN_02033154
+FUN_02033154: ; 0x02033154
+ ldr r0, _02033174 ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ ldr r1, [r0, #0x24]
+ ldr r0, _02033178 ; =FUN_02032F34
+ cmp r1, r0
+ bne _02033164
+ mov r0, #0x1
+ bx lr
+_02033164:
+ ldr r0, _0203317C ; =FUN_02033060
+ cmp r1, r0
+ bne _0203316E
+ mov r0, #0x1
+ bx lr
+_0203316E:
+ mov r0, #0x0
+ bx lr
+ nop
+_02033174: .word 0x021C5A00
+_02033178: .word FUN_02032F34
+_0203317C: .word FUN_02033060
+
+ thumb_func_start FUN_02033180
+FUN_02033180: ; 0x02033180
+ ldr r0, _02033188 ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x34]
+ bx lr
+ .balign 4
+_02033188: .word 0x021C5A00
+
+ thumb_func_start FUN_0203318C
+FUN_0203318C: ; 0x0203318C
+ push {r3, lr}
+ mov r0, #0x0
+ bl FUN_020313A0
+ mov r0, #0x0
+ bl FUN_021D82BC
+ cmp r0, #0x0
+ beq _020331AA
+ bl FUN_021D836C
+ ldr r0, _020331BC ; =FUN_02032440
+ mov r1, #0x0
+ bl FUN_02031D20
+_020331AA:
+ bl FUN_021D7F8C
+ cmp r0, #0x0
+ bge _020331BA
+ ldr r0, _020331C0 ; =FUN_02032E8C
+ mov r1, #0x0
+ bl FUN_02031D20
+_020331BA:
+ pop {r3, pc}
+ .balign 4
+_020331BC: .word FUN_02032440
+_020331C0: .word FUN_02032E8C
+
+ thumb_func_start FUN_020331C4
+FUN_020331C4: ; 0x020331C4
+ push {r3, lr}
+ ldr r0, _020331E0 ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _020331DC
+ mov r0, #0x1
+ bl FUN_020166B8
+ ldr r0, _020331E4 ; =FUN_02032440
+ mov r1, #0x5
+ bl FUN_02031D20
+_020331DC:
+ pop {r3, pc}
+ nop
+_020331E0: .word 0x021C5A00
+_020331E4: .word FUN_02032440
+
+ thumb_func_start FUN_020331E8
+FUN_020331E8: ; 0x020331E8
+ push {r3, lr}
+ ldr r0, _02033200 ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _020331FE
+ mov r1, #0x0
+ add r0, #0x41
+ strb r1, [r0, #0x0]
+ ldr r0, _02033204 ; =FUN_020330A0
+ bl FUN_02031D20
+_020331FE:
+ pop {r3, pc}
+ .balign 4
+_02033200: .word 0x021C5A00
+_02033204: .word FUN_020330A0
+
+ thumb_func_start FUN_02033208
+FUN_02033208: ; 0x02033208
+ push {r3, lr}
+ ldr r0, _02033234 ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _02033232
+ bl FUN_02031190
+ cmp r0, #0x0
+ bne _02033220
+ mov r1, #0x0
+ ldr r0, _02033234 ; =0x021C5A00
+ b _02033224
+_02033220:
+ ldr r0, _02033234 ; =0x021C5A00
+ mov r1, #0x1
+_02033224:
+ ldr r0, [r0, #0x0]
+ add r0, #0x41
+ strb r1, [r0, #0x0]
+ ldr r0, _02033238 ; =FUN_020330A0
+ mov r1, #0x0
+ bl FUN_02031D20
+_02033232:
+ pop {r3, pc}
+ .balign 4
+_02033234: .word 0x021C5A00
+_02033238: .word FUN_020330A0
+
+ thumb_func_start FUN_0203323C
+FUN_0203323C: ; 0x0203323C
+ push {r3, lr}
+ bl FUN_02031190
+ add r1, sp, #0x0
+ strb r0, [r1, #0x0]
+ mov r0, #0x15
+ add r1, sp, #0x0
+ bl FUN_020311D0
+ pop {r3, pc}
+
+ thumb_func_start FUN_02033250
+FUN_02033250: ; 0x02033250
+ ldr r0, _0203327C ; =0x021C5A00
+ ldr r2, [r0, #0x0]
+ cmp r2, #0x0
+ beq _02033276
+ ldr r1, [r2, #0x24]
+ ldr r0, _02033280 ; =FUN_02032E8C
+ cmp r1, r0
+ bne _02033264
+ mov r0, #0x1
+ bx lr
+_02033264:
+ ldr r0, _02033284 ; =FUN_02032E90
+ cmp r1, r0
+ bne _02033276
+ add r2, #0x44
+ ldrb r0, [r2, #0x0]
+ cmp r0, #0x0
+ beq _02033276
+ mov r0, #0x1
+ bx lr
+_02033276:
+ mov r0, #0x0
+ bx lr
+ nop
+_0203327C: .word 0x021C5A00
+_02033280: .word FUN_02032E8C
+_02033284: .word FUN_02032E90
+
+ thumb_func_start FUN_02033288
+FUN_02033288: ; 0x02033288
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _020332D8 ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _020332D6
+ mov r1, #0xf
+ add r2, r1, #0x0
+ mov r0, #0x3
+ add r2, #0xf1
+ bl FUN_02016828
+ mov r0, #0xf
+ mov r1, #0x50
+ bl FUN_02016998
+ ldr r1, _020332D8 ; =0x021C5A00
+ mov r2, #0x50
+ str r0, [r1, #0x0]
+ mov r1, #0x0
+ blx MI_CpuFill8
+ ldr r0, _020332D8 ; =0x021C5A00
+ mov r2, #0x18
+ ldr r1, [r0, #0x0]
+ add r1, #0x3f
+ strb r2, [r1, #0x0]
+ ldr r2, [r0, #0x0]
+ mov r1, #0x1
+ add r2, #0x46
+ strb r1, [r2, #0x0]
+ ldr r0, [r0, #0x0]
+ str r4, [r0, #0x28]
+ mov r0, #0x0
+ bl FUN_020334E8
+ mov r0, #0x1
+ bl FUN_020166A8
+_020332D6:
+ pop {r4, pc}
+ .balign 4
+_020332D8: .word 0x021C5A00
+
+ thumb_func_start FUN_020332DC
+FUN_020332DC: ; 0x020332DC
+ push {r3, lr}
+ ldr r0, _0203330C ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _02033308
+ mov r0, #0x1
+ bl FUN_020166B8
+ mov r0, #0x0
+ add r1, r0, #0x0
+ bl FUN_020334E8
+ ldr r0, _0203330C ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ bl FUN_02016A18
+ ldr r0, _0203330C ; =0x021C5A00
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+ mov r0, #0xf
+ bl FUN_020168D0
+_02033308:
+ pop {r3, pc}
+ nop
+_0203330C: .word 0x021C5A00
+
+ thumb_func_start FUN_02033310
+FUN_02033310: ; 0x02033310
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _02033360 ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _0203335E
+ mov r1, #0xf
+ add r2, r1, #0x0
+ mov r0, #0x3
+ add r2, #0xf1
+ bl FUN_02016828
+ mov r0, #0xf
+ mov r1, #0x50
+ bl FUN_02016998
+ ldr r1, _02033360 ; =0x021C5A00
+ mov r2, #0x50
+ str r0, [r1, #0x0]
+ mov r1, #0x0
+ blx MI_CpuFill8
+ ldr r0, _02033360 ; =0x021C5A00
+ mov r2, #0x19
+ ldr r1, [r0, #0x0]
+ add r1, #0x3f
+ strb r2, [r1, #0x0]
+ ldr r2, [r0, #0x0]
+ mov r1, #0x1
+ add r2, #0x46
+ strb r1, [r2, #0x0]
+ ldr r0, [r0, #0x0]
+ str r4, [r0, #0x28]
+ mov r0, #0x0
+ bl FUN_020334E8
+ mov r0, #0x1
+ bl FUN_020166A8
+_0203335E:
+ pop {r4, pc}
+ .balign 4
+_02033360: .word 0x021C5A00
+
+ thumb_func_start FUN_02033364
+FUN_02033364: ; 0x02033364
+ push {r3, lr}
+ ldr r0, _02033394 ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _02033390
+ mov r0, #0x1
+ bl FUN_020166B8
+ mov r0, #0x0
+ add r1, r0, #0x0
+ bl FUN_020334E8
+ ldr r0, _02033394 ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ bl FUN_02016A18
+ ldr r0, _02033394 ; =0x021C5A00
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+ mov r0, #0xf
+ bl FUN_020168D0
+_02033390:
+ pop {r3, pc}
+ nop
+_02033394: .word 0x021C5A00
+
+ thumb_func_start FUN_02033398
+FUN_02033398: ; 0x02033398
+ push {r3, lr}
+ sub sp, #0x8
+ ldr r0, _020333EC ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _020333AA
+ add sp, #0x8
+ mov r0, #0x0
+ pop {r3, pc}
+_020333AA:
+ add r0, #0x3f
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x18
+ bne _020333C8
+ add r0, sp, #0x4
+ add r1, sp, #0x0
+ blx FUN_021DD718
+ cmp r0, #0x0
+ beq _020333E4
+ blx FUN_021DD6F0
+ add sp, #0x8
+ mov r0, #0x1
+ pop {r3, pc}
+_020333C8:
+ cmp r0, #0x19
+ bne _020333E4
+ add r0, sp, #0x4
+ add r1, sp, #0x0
+ blx FUN_021DD718
+ cmp r0, #0x0
+ beq _020333E4
+ ldr r0, [sp, #0x0]
+ cmp r0, #0x7
+ bne _020333E4
+ add sp, #0x8
+ mov r0, #0x1
+ pop {r3, pc}
+_020333E4:
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r3, pc}
+ nop
+_020333EC: .word 0x021C5A00
+
+ thumb_func_start FUN_020333F0
+FUN_020333F0: ; 0x020333F0
+ push {r3, lr}
+ bl FUN_021D76AC
+ cmp r0, #0x0
+ bge _02033408
+ bl FUN_02032F20
+ ldr r0, _02033414 ; =FUN_02032E8C
+ mov r1, #0x0
+ bl FUN_02031D20
+ pop {r3, pc}
+_02033408:
+ ble _02033412
+ ldr r0, _02033418 ; =FUN_02033060
+ mov r1, #0x0
+ bl FUN_02031D20
+_02033412:
+ pop {r3, pc}
+ .balign 4
+_02033414: .word FUN_02032E8C
+_02033418: .word FUN_02033060
+
+ thumb_func_start FUN_0203341C
+FUN_0203341C: ; 0x0203341C
+ push {r3, lr}
+ bl FUN_0202E4C8
+ cmp r0, #0x0
+ beq _0203345E
+ mov r1, #0x31
+ mov r0, #0x3
+ lsl r2, r1, #0xc
+ bl FUN_02016828
+ mov r0, #0x1
+ add r1, r0, #0x0
+ lsl r2, r0, #0x9
+ add r3, r0, #0x0
+ bl FUN_0202F918
+ cmp r0, #0x0
+ beq _0203345E
+ ldr r0, _02033460 ; =0x021C5A00
+ mov r1, #0x31
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x28]
+ bl FUN_021D74E0
+ ldr r0, _02033464 ; =FUN_020335D0
+ bl FUN_021D83A8
+ bl FUN_0202FA10
+ ldr r0, _02033468 ; =FUN_020333F0
+ mov r1, #0x0
+ bl FUN_02031D20
+_0203345E:
+ pop {r3, pc}
+ .balign 4
+_02033460: .word 0x021C5A00
+_02033464: .word FUN_020335D0
+_02033468: .word FUN_020333F0
+
+ thumb_func_start FUN_0203346C
+FUN_0203346C: ; 0x0203346C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_020238F4
+ bl FUN_02030F40
+ cmp r0, #0x0
+ beq _02033482
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_02033482:
+ mov r0, #0x1
+ bl FUN_020166A8
+ ldr r2, _020334D0 ; =0x00007080
+ mov r0, #0x3
+ mov r1, #0xf
+ bl FUN_02016828
+ add r0, r5, #0x0
+ mov r1, #0x17
+ bl FUN_02031734
+ mov r0, #0xf
+ add r1, r4, #0x0
+ bl FUN_02016998
+ ldr r1, _020334D4 ; =0x021C5A00
+ ldr r2, [r1, #0x0]
+ str r0, [r2, #0x0]
+ ldr r0, [r1, #0x0]
+ mov r1, #0x0
+ ldr r0, [r0, #0x0]
+ add r2, r4, #0x0
+ blx MI_CpuFill8
+ ldr r0, _020334D4 ; =0x021C5A00
+ mov r1, #0x0
+ ldr r2, [r0, #0x0]
+ add r2, #0x40
+ strb r1, [r2, #0x0]
+ ldr r0, [r0, #0x0]
+ str r5, [r0, #0x28]
+ ldr r0, _020334D8 ; =FUN_0203341C
+ bl FUN_02031D20
+ ldr r0, _020334D4 ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x0]
+ pop {r3-r5, pc}
+ .balign 4
+_020334D0: .word 0x00007080
+_020334D4: .word 0x021C5A00
+_020334D8: .word FUN_0203341C
+
+ thumb_func_start FUN_020334DC
+FUN_020334DC: ; 0x020334DC
+ ldr r0, _020334E4 ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x0]
+ bx lr
+ .balign 4
+_020334E4: .word 0x021C5A00
+
+ thumb_func_start FUN_020334E8
+FUN_020334E8: ; 0x020334E8
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _0203350C ; =0x021C5A00
+ ldr r2, [r0, #0x0]
+ cmp r2, #0x0
+ beq _020334FE
+ add r2, #0x44
+ strb r4, [r2, #0x0]
+ ldr r0, [r0, #0x0]
+ add r0, #0x45
+ strb r1, [r0, #0x0]
+_020334FE:
+ add r0, r4, #0x0
+ bl FUN_0202EE84
+ add r0, r4, #0x0
+ bl FUN_0202EEB0
+ pop {r4, pc}
+ .balign 4
+_0203350C: .word 0x021C5A00
+
+ thumb_func_start FUN_02033510
+FUN_02033510: ; 0x02033510
+ ldr r0, _02033530 ; =0x021C5A00
+ ldr r1, [r0, #0x0]
+ cmp r1, #0x0
+ beq _0203352C
+ add r0, r1, #0x0
+ add r0, #0x4e
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _02033526
+ mov r0, #0x1
+ bx lr
+_02033526:
+ add r1, #0x45
+ ldrb r0, [r1, #0x0]
+ bx lr
+_0203352C:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+_02033530: .word 0x021C5A00
+
+ thumb_func_start FUN_02033534
+FUN_02033534: ; 0x02033534
+ ldr r0, _02033548 ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _02033542
+ add r0, #0x3f
+ ldrb r0, [r0, #0x0]
+ bx lr
+_02033542:
+ mov r0, #0x1
+ bx lr
+ nop
+_02033548: .word 0x021C5A00
+
+ thumb_func_start FUN_0203354C
+FUN_0203354C: ; 0x0203354C
+ ldr r0, _02033560 ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _0203355A
+ add r0, #0x40
+ ldrb r0, [r0, #0x0]
+ bx lr
+_0203355A:
+ mov r0, #0x0
+ bx lr
+ nop
+_02033560: .word 0x021C5A00
+
+ thumb_func_start FUN_02033564
+FUN_02033564: ; 0x02033564
+ ldr r1, _02033570 ; =0x021C5A00
+ ldr r3, _02033574 ; =MI_CpuCopy8
+ ldr r1, [r1, #0x0]
+ mov r2, #0x6
+ add r1, r1, #0x4
+ bx r3
+ .balign 4
+_02033570: .word 0x021C5A00
+_02033574: .word MI_CpuCopy8
+
+ thumb_func_start FUN_02033578
+FUN_02033578: ; 0x02033578
+ add r1, r0, #0x0
+ ldr r0, _02033588 ; =0x021C5A00
+ ldr r3, _0203358C ; =MI_CpuCopy8
+ ldr r0, [r0, #0x0]
+ mov r2, #0x6
+ add r0, r0, #0x4
+ bx r3
+ nop
+_02033588: .word 0x021C5A00
+_0203358C: .word MI_CpuCopy8
+
+ thumb_func_start FUN_02033590
+FUN_02033590: ; 0x02033590
+ push {r3, lr}
+ bl FUN_02033534
+ cmp r0, #0x13
+ blt _0203359E
+ mov r0, #0x1
+ pop {r3, pc}
+_0203359E:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_020335A4
+FUN_020335A4: ; 0x020335A4
+ ldr r1, _020335B4 ; =0x021C5A00
+ ldr r1, [r1, #0x0]
+ cmp r1, #0x0
+ beq _020335B0
+ add r1, #0x47
+ strb r0, [r1, #0x0]
+_020335B0:
+ bx lr
+ nop
+_020335B4: .word 0x021C5A00
+
+ thumb_func_start FUN_020335B8
+FUN_020335B8: ; 0x020335B8
+ ldr r0, _020335CC ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _020335C6
+ add r0, #0x47
+ ldrb r0, [r0, #0x0]
+ bx lr
+_020335C6:
+ mov r0, #0x0
+ bx lr
+ nop
+_020335CC: .word 0x021C5A00
+
+ thumb_func_start FUN_020335D0
+FUN_020335D0: ; 0x020335D0
+ push {r3, lr}
+ add r2, r0, #0x0
+ mov r0, #0x0
+ mov r1, #0x1
+ bl FUN_02033F70
+_020335DC:
+ b _020335DC
+ .balign 4
+
+ thumb_func_start FUN_020335E0
+FUN_020335E0: ; 0x020335E0
+ push {r3, lr}
+ mov r0, #0x0
+ mov r1, #0x4
+ add r2, r0, #0x0
+ bl FUN_02033F70
+_020335EC:
+ b _020335EC
+ .balign 4
+
+ thumb_func_start FUN_020335F0
+FUN_020335F0: ; 0x020335F0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020335F4
+FUN_020335F4: ; 0x020335F4
+ push {r3, lr}
+ bl FUN_02033510
+ cmp r0, #0x0
+ beq _0203366C
+ bl FUN_020311F0
+ cmp r0, #0x0
+ bne _02033622
+ bl FUN_02033250
+ cmp r0, #0x0
+ bne _02033622
+ bl FUN_02033398
+ cmp r0, #0x0
+ bne _02033622
+ ldr r0, _02033670 ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ add r0, #0x4e
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _0203366C
+_02033622:
+ bl FUN_020335B8
+ cmp r0, #0x0
+ bne _0203366C
+ bl FUN_0200541C
+ ldr r0, _02033670 ; =0x021C5A00
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x28]
+ bl FUN_0202287C
+ ldr r1, _02033674 ; =0x021C4918
+ mov r0, #0x1
+ strb r0, [r1, #0x4]
+ ldr r1, _02033670 ; =0x021C5A00
+ ldr r2, [r1, #0x0]
+ add r1, r2, #0x0
+ add r1, #0x4e
+ ldrb r1, [r1, #0x0]
+ cmp r1, #0x3
+ bne _02033654
+ mov r0, #0x3
+ bl FUN_020335A4
+ pop {r3, pc}
+_02033654:
+ add r2, #0x3f
+ ldrb r1, [r2, #0x0]
+ cmp r1, #0x19
+ beq _02033660
+ cmp r1, #0xf
+ bne _02033668
+_02033660:
+ mov r0, #0x2
+ bl FUN_020335A4
+ pop {r3, pc}
+_02033668:
+ bl FUN_020335A4
+_0203366C:
+ pop {r3, pc}
+ nop
+_02033670: .word 0x021C5A00
+_02033674: .word 0x021C4918
+
+ thumb_func_start FUN_02033678
+FUN_02033678: ; 0x02033678
+ push {r3, lr}
+ bl FUN_0202EDD8
+ cmp r0, #0x0
+ bne _0203368A
+ bl FUN_02031810
+ cmp r0, #0x0
+ bne _0203368E
+_0203368A:
+ mov r0, #0x1
+ pop {r3, pc}
+_0203368E:
+ bl FUN_0202E344
+ cmp r0, #0x0
+ bne _0203369A
+ mov r0, #0x1
+ pop {r3, pc}
+_0203369A:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_020336A0
+FUN_020336A0: ; 0x020336A0
+ push {r3, lr}
+ ldr r1, _020336BC ; =0x021C5A00
+ ldr r1, [r1, #0x0]
+ cmp r1, #0x0
+ beq _020336B6
+ add r1, #0x4e
+ strb r0, [r1, #0x0]
+ bl FUN_02031468
+ mov r0, #0x1
+ pop {r3, pc}
+_020336B6:
+ mov r0, #0x0
+ pop {r3, pc}
+ nop
+_020336BC: .word 0x021C5A00
+
+ thumb_func_start FUN_020336C0
+FUN_020336C0: ; 0x020336C0
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020336C8
+FUN_020336C8: ; 0x020336C8
+ push {r4-r6, lr}
+ add r4, r2, #0x0
+ add r6, r1, #0x0
+ ldr r1, [r4, #0x0]
+ add r5, r0, #0x0
+ cmp r1, #0x6
+ bhi _02033774
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_020336E2: ; jump table (using 16-bit offset)
+ .short _020336F0 - _020336E2 - 2; case 0
+ .short _020336FC - _020336E2 - 2; case 1
+ .short _02033714 - _020336E2 - 2; case 2
+ .short _0203373A - _020336E2 - 2; case 3
+ .short _0203374A - _020336E2 - 2; case 4
+ .short _0203376A - _020336E2 - 2; case 5
+ .short _02033770 - _020336E2 - 2; case 6
+_020336F0:
+ mov r0, #0x6f
+ bl FUN_02031588
+ mov r0, #0x1
+ str r0, [r4, #0x0]
+ b _02033774
+_020336FC:
+ mov r0, #0x6f
+ bl FUN_020315D8
+ cmp r0, #0x0
+ beq _02033774
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02022840
+ mov r0, #0x2
+ str r0, [r4, #0x0]
+ b _02033774
+_02033714:
+ bl FUN_02022854
+ add r5, r0, #0x0
+ cmp r5, #0x2
+ bne _02033722
+ bl ErrorHandling
+_02033722:
+ cmp r5, #0x3
+ bne _0203372A
+ bl ErrorHandling
+_0203372A:
+ cmp r5, #0x1
+ bne _02033774
+ mov r0, #0x3
+ str r0, [r4, #0x0]
+ mov r0, #0x70
+ bl FUN_02031588
+ b _02033774
+_0203373A:
+ mov r0, #0x70
+ bl FUN_020315D8
+ cmp r0, #0x0
+ beq _02033774
+ mov r0, #0x4
+ str r0, [r4, #0x0]
+ b _02033774
+_0203374A:
+ bl FUN_02022854
+ add r5, r0, #0x0
+ cmp r5, #0x3
+ bne _02033758
+ bl ErrorHandling
+_02033758:
+ cmp r5, #0x1
+ bne _02033760
+ bl ErrorHandling
+_02033760:
+ cmp r5, #0x2
+ bne _02033774
+ mov r0, #0x5
+ str r0, [r4, #0x0]
+ b _02033774
+_0203376A:
+ mov r0, #0x6
+ str r0, [r4, #0x0]
+ b _02033774
+_02033770:
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_02033774:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02033778
+FUN_02033778: ; 0x02033778
+ push {r3-r7, lr}
+ str r0, [sp, #0x0]
+ bl FUN_02030F20
+ add r7, r0, #0x0
+ mov r0, #0x0
+ bl FUN_0202DFA4
+ cmp r0, #0x0
+ beq _020337C6
+ mov r5, #0x0
+ cmp r7, #0x0
+ ble _020337C6
+_02033792:
+ bl FUN_02031190
+ cmp r5, r0
+ beq _020337C0
+ add r0, r5, #0x0
+ bl FUN_0202E020
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0202E044
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0202DFA4
+ bl FUN_02023A70
+ add r3, r0, #0x0
+ ldr r0, [sp, #0x0]
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_020337C8
+_020337C0:
+ add r5, r5, #0x1
+ cmp r5, r7
+ blt _02033792
+_020337C6:
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_020337C8
+FUN_020337C8: ; 0x020337C8
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_02029B40
+ cmp r0, #0x0
+ bne _020337E4
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ mov r3, #0x1
+ bl FUN_02029B90
+_020337E4:
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_020337E8
+FUN_020337E8: ; 0x020337E8
+ push {r3-r5, lr}
+ mov r1, #0x72
+ lsl r1, r1, #0x4
+ bl FUN_02016998
+ add r4, r0, #0x0
+ add r0, #0x1f
+ mov r1, #0x1f
+ bic r0, r1
+ blx FUN_02096B14
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add r0, r5, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203380C
+FUN_0203380C: ; 0x0203380C
+ push {r4, lr}
+ bl FUN_02028228
+ add r4, r0, #0x0
+ blx FUN_02096FB0
+ cmp r0, #0x0
+ bne _0203382A
+ ldr r1, _0203382C ; =0x4144414A
+ add r0, r4, #0x0
+ blx FUN_02096FF4
+ add r0, r4, #0x0
+ blx FUN_02096E90
+_0203382A:
+ pop {r4, pc}
+ .balign 4
+_0203382C: .word 0x4144414A
+
+ thumb_func_start FUN_02033830
+FUN_02033830: ; 0x02033830
+ push {r3-r4, lr}
+ sub sp, #0xc
+ bl FUN_02028228
+ add r4, r0, #0x0
+ add r1, sp, #0x0
+ blx FUN_02096CCC
+ add r0, r4, #0x0
+ add r1, sp, #0x0
+ blx FUN_02096DA0
+ add sp, #0xc
+ pop {r3-r4, pc}
+
+ thumb_func_start FUN_0203384C
+FUN_0203384C: ; 0x0203384C
+ push {r4, lr}
+ bl FUN_020286EC
+ bl FUN_02028228
+ add r4, r0, #0x0
+ blx FUN_02096F80
+ cmp r0, #0x0
+ beq _0203386E
+ add r0, r4, #0x0
+ blx FUN_02096F18
+ cmp r0, #0x0
+ beq _0203386E
+ mov r0, #0x1
+ pop {r4, pc}
+_0203386E:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02033874
+FUN_02033874: ; 0x02033874
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r4, r0, #0x0
+ add r5, r1, #0x0
+ str r2, [sp, #0x0]
+ bl FUN_020286EC
+ bl FUN_02028228
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_020286EC
+ mov r1, #0x0
+ bl FUN_0202838C
+ add r4, r0, #0x0
+ mov r1, #0x0
+ ldr r0, [sp, #0x0]
+ mvn r1, r1
+ str r1, [r0, #0x0]
+ add r0, r5, #0x0
+ blx FUN_0209700C
+ cmp r0, #0x0
+ bne _020338AE
+ add sp, #0x8
+ mov r0, #0x3
+ pop {r3-r7, pc}
+_020338AE:
+ mov r7, #0x0
+_020338B0:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ blx FUN_02096B78
+ cmp r0, #0x0
+ beq _020338C6
+ ldr r0, [sp, #0x0]
+ add sp, #0x8
+ str r7, [r0, #0x0]
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_020338C6:
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ blx FUN_02096DA0
+ cmp r0, #0x0
+ ble _020338F4
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ blx FUN_02096DA0
+ str r0, [sp, #0x4]
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ blx FUN_02096DA0
+ ldr r1, [sp, #0x4]
+ cmp r1, r0
+ bne _020338F4
+ ldr r0, [sp, #0x0]
+ add sp, #0x8
+ str r7, [r0, #0x0]
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_020338F4:
+ ldr r0, [sp, #0x0]
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bge _0203390A
+ add r0, r4, #0x0
+ blx FUN_0209700C
+ cmp r0, #0x0
+ bne _0203390A
+ ldr r0, [sp, #0x0]
+ str r7, [r0, #0x0]
+_0203390A:
+ add r7, r7, #0x1
+ add r4, #0xc
+ cmp r7, #0x20
+ blt _020338B0
+ mov r0, #0x2
+ add sp, #0x8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02033918
+FUN_02033918: ; 0x02033918
+ push {r3-r7, lr}
+ sub sp, #0x18
+ add r4, r0, #0x0
+ str r1, [sp, #0x0]
+ str r2, [sp, #0x4]
+ add r6, r3, #0x0
+ bl FUN_020286EC
+ bl FUN_02028228
+ add r7, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_020286EC
+ mov r1, #0x0
+ bl FUN_0202838C
+ add r5, r0, #0x0
+ ldr r1, [sp, #0x0]
+ ldr r2, [sp, #0x4]
+ add r0, r7, #0x0
+ blx FUN_020973B4
+ cmp r0, #0x0
+ bne _02033950
+ add sp, #0x18
+ mov r0, #0x3
+ pop {r3-r7, pc}
+_02033950:
+ ldr r1, [sp, #0x0]
+ ldr r2, [sp, #0x4]
+ add r0, sp, #0xc
+ blx FUN_02096D2C
+ add r0, r7, #0x0
+ add r1, sp, #0xc
+ blx FUN_02096DA0
+ cmp r0, #0x0
+ bgt _0203396C
+ add sp, #0x18
+ mov r0, #0x3
+ pop {r3-r7, pc}
+_0203396C:
+ mov r0, #0x0
+ mvn r0, r0
+ str r0, [r6, #0x0]
+ mov r4, #0x0
+_02033974:
+ add r0, r7, #0x0
+ add r1, sp, #0xc
+ blx FUN_02096DA0
+ str r0, [sp, #0x8]
+ add r0, r7, #0x0
+ add r1, r5, #0x0
+ blx FUN_02096DA0
+ ldr r1, [sp, #0x8]
+ cmp r1, r0
+ bne _02033994
+ add sp, #0x18
+ str r4, [r6, #0x0]
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_02033994:
+ ldr r0, [r6, #0x0]
+ cmp r0, #0x0
+ bge _020339A6
+ add r0, r5, #0x0
+ blx FUN_0209700C
+ cmp r0, #0x0
+ bne _020339A6
+ str r4, [r6, #0x0]
+_020339A6:
+ add r4, r4, #0x1
+ add r5, #0xc
+ cmp r4, #0x20
+ blt _02033974
+ mov r0, #0x2
+ add sp, #0x18
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_020339B4
+FUN_020339B4: ; 0x020339B4
+ push {r4-r7, lr}
+ sub sp, #0x14
+ add r6, r1, #0x0
+ mov r1, #0x0
+ add r5, r0, #0x0
+ str r2, [sp, #0x4]
+ str r1, [sp, #0xc]
+ bl FUN_020286EC
+ mov r1, #0x0
+ bl FUN_0202838C
+ str r0, [sp, #0x8]
+ mov r4, #0x0
+ bl FUN_02030F20
+ cmp r0, #0x0
+ ble _02033A68
+_020339D8:
+ bl FUN_02031190
+ cmp r4, r0
+ beq _02033A5C
+ add r0, r4, #0x0
+ bl FUN_0202DFD8
+ add r7, r0, #0x0
+ beq _02033A5C
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ add r2, sp, #0x10
+ bl FUN_02033874
+ str r0, [r6, #0x0]
+ cmp r0, #0x3
+ bne _020339FE
+ bl ErrorHandling
+_020339FE:
+ ldr r0, [r6, #0x0]
+ cmp r0, #0x0
+ bne _02033A1C
+ mov r0, #0x2
+ str r0, [sp, #0x0]
+ ldr r2, [sp, #0x10]
+ ldr r3, [sp, #0x4]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02033A70
+ add r0, r5, #0x0
+ bl FUN_0202E1BC
+ b _02033A5C
+_02033A1C:
+ cmp r0, #0x1
+ bne _02033A54
+ bl FUN_02033590
+ cmp r0, #0x0
+ bne _02033A5C
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ ldr r2, [sp, #0x10]
+ ldr r3, [sp, #0x4]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02033A70
+ ldr r2, [sp, #0x10]
+ mov r1, #0xc
+ add r3, r2, #0x0
+ mul r3, r1
+ ldr r1, [sp, #0x8]
+ add r0, r7, #0x0
+ add r1, r1, r3
+ mov r2, #0xc
+ blx MI_CpuCopy8
+ add r0, r5, #0x0
+ bl FUN_0202E1BC
+ b _02033A5C
+_02033A54:
+ cmp r0, #0x2
+ bne _02033A5C
+ mov r0, #0x1
+ str r0, [sp, #0xc]
+_02033A5C:
+ add r6, r6, #0x4
+ add r4, r4, #0x1
+ bl FUN_02030F20
+ cmp r4, r0
+ blt _020339D8
+_02033A68:
+ ldr r0, [sp, #0xc]
+ add sp, #0x14
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02033A70
+FUN_02033A70: ; 0x02033A70
+ push {r4-r7, lr}
+ sub sp, #0x14
+ add r5, r2, #0x0
+ str r0, [sp, #0x0]
+ add r7, r1, #0x0
+ str r3, [sp, #0x4]
+ bl FUN_020286EC
+ add r1, r5, #0x0
+ add r4, r0, #0x0
+ bl FUN_0202838C
+ str r0, [sp, #0x8]
+ add r0, r7, #0x0
+ bl FUN_0202DFA4
+ add r6, r0, #0x0
+ ldr r0, [sp, #0x28]
+ cmp r0, #0x2
+ beq _02033AA6
+ add r0, r7, #0x0
+ bl FUN_0202DFD8
+ ldr r1, [sp, #0x8]
+ mov r2, #0xc
+ blx MI_CpuCopy8
+_02033AA6:
+ ldr r0, [sp, #0x28]
+ cmp r0, #0x0
+ bne _02033AEC
+ ldr r1, [sp, #0x4]
+ add r0, r6, #0x0
+ bl FUN_020239A0
+ str r0, [sp, #0xc]
+ ldr r2, [sp, #0xc]
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ bl FUN_020283C0
+ ldr r0, [sp, #0xc]
+ bl FUN_02021A20
+ add r0, r6, #0x0
+ bl FUN_020239CC
+ add r3, r0, #0x0
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ mov r2, #0x8
+ bl FUN_020282E8
+ add r0, r6, #0x0
+ bl FUN_020239BC
+ add r3, r0, #0x0
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ mov r2, #0x0
+ bl FUN_020282E8
+ b _02033B22
+_02033AEC:
+ cmp r0, #0x1
+ bne _02033B22
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ mov r2, #0x8
+ bl FUN_0202822C
+ cmp r0, #0x2
+ bne _02033B22
+ add r0, r6, #0x0
+ bl FUN_020239CC
+ add r3, r0, #0x0
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ mov r2, #0x8
+ bl FUN_020282E8
+ add r0, r6, #0x0
+ bl FUN_020239BC
+ add r3, r0, #0x0
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ mov r2, #0x0
+ bl FUN_020282E8
+_02033B22:
+ ldr r1, [sp, #0x4]
+ mov r0, #0x78
+ bl FUN_020219F4
+ str r0, [sp, #0x10]
+ add r0, r7, #0x0
+ bl FUN_0202DFFC
+ add r1, r0, #0x0
+ ldr r0, [sp, #0x10]
+ bl FUN_02021E28
+ ldr r2, [sp, #0x10]
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ bl FUN_02028404
+ ldr r0, [sp, #0x10]
+ bl FUN_02021A20
+ add r0, r6, #0x0
+ bl FUN_02023A28
+ add r3, r0, #0x0
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ mov r2, #0x7
+ bl FUN_020282E8
+ ldr r0, [sp, #0x0]
+ bl FUN_0202E1BC
+ add sp, #0x14
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02033B68
+FUN_02033B68: ; 0x02033B68
+ push {r4-r6, lr}
+ add r4, r1, #0x0
+ add r5, r2, #0x0
+ mov r2, #0x7
+ add r6, r3, #0x0
+ ldr r1, [sp, #0x10]
+ mov r0, #0x1
+ lsl r2, r2, #0x6
+ add r3, r4, #0x0
+ bl FUN_02033D3C
+ ldr r1, [sp, #0x10]
+ mov r0, #0x1
+ add r2, r4, #0x0
+ bl FUN_02033D9C
+ add r0, r4, #0x0
+ mov r1, #0x20
+ bl FUN_020169D8
+ add r4, r0, #0x0
+ ldr r0, _02033BC4 ; =FUN_02033BC8
+ add r1, r4, #0x0
+ mov r2, #0x5
+ bl FUN_0200CA98
+ str r0, [r4, #0x18]
+ strh r5, [r4, #0xc]
+ strh r6, [r4, #0xe]
+ mov r1, #0x0
+ str r1, [r4, #0x0]
+ mov r0, #0x3
+ str r0, [r4, #0x4]
+ ldr r0, [sp, #0x14]
+ str r0, [r4, #0x14]
+ ldr r0, [sp, #0x10]
+ str r1, [r4, #0x8]
+ strb r0, [r4, #0x10]
+ strb r1, [r4, #0x12]
+ mov r0, #0x7
+ strb r1, [r4, #0x11]
+ lsl r0, r0, #0x18
+ str r0, [r4, #0x1c]
+ add r0, r4, #0x0
+ pop {r4-r6, pc}
+ nop
+_02033BC4: .word FUN_02033BC8
+
+ thumb_func_start FUN_02033BC8
+FUN_02033BC8: ; 0x02033BC8
+ push {r3-r7, lr}
+ add r5, r1, #0x0
+ ldrb r0, [r5, #0x11]
+ cmp r0, #0x1
+ beq _02033BD8
+ cmp r0, #0x2
+ beq _02033BEE
+ b _02033C04
+_02033BD8:
+ ldr r0, _02033CB0 ; =0x04000304
+ ldrh r1, [r0, #0x0]
+ lsr r0, r0, #0xb
+ and r0, r1
+ asr r0, r0, #0xf
+ cmp r0, #0x1
+ bne _02033BEA
+ mov r6, #0x1
+ b _02033C06
+_02033BEA:
+ mov r6, #0x2
+ b _02033C06
+_02033BEE:
+ ldr r0, _02033CB0 ; =0x04000304
+ ldrh r1, [r0, #0x0]
+ lsr r0, r0, #0xb
+ and r0, r1
+ asr r0, r0, #0xf
+ cmp r0, #0x1
+ bne _02033C00
+ mov r6, #0x2
+ b _02033C06
+_02033C00:
+ mov r6, #0x1
+ b _02033C06
+_02033C04:
+ mov r6, #0x1
+_02033C06:
+ ldr r4, [r5, #0x4]
+ cmp r6, #0x1
+ bne _02033C1E
+ mov r0, #0x1
+ lsl r0, r0, #0x1a
+ ldr r1, [r0, #0x0]
+ ldr r0, _02033CB4 ; =0x00300010
+ add r7, r1, #0x0
+ and r7, r0
+ blx FUN_020C5DBC
+ b _02033C2C
+_02033C1E:
+ ldr r0, _02033CB8 ; =0x04001000
+ ldr r1, [r0, #0x0]
+ ldr r0, _02033CB4 ; =0x00300010
+ add r7, r1, #0x0
+ and r7, r0
+ blx FUN_020C5D4C
+_02033C2C:
+ cmp r7, #0x10
+ beq _02033C38
+ ldr r1, _02033CBC ; =0x00200010
+ cmp r7, r1
+ beq _02033C54
+ b _02033C6C
+_02033C38:
+ cmp r0, #0x40
+ beq _02033C40
+ cmp r0, #0x20
+ bne _02033C4A
+_02033C40:
+ mov r0, #0x1f
+ lsl r1, r4, #0x2
+ lsl r0, r0, #0x4
+ add r1, r1, r0
+ b _02033C74
+_02033C4A:
+ mov r0, #0x3f
+ lsl r1, r4, #0x2
+ lsl r0, r0, #0x4
+ add r1, r1, r0
+ b _02033C74
+_02033C54:
+ cmp r0, #0x30
+ beq _02033C5C
+ cmp r0, #0x50
+ bne _02033C64
+_02033C5C:
+ mov r0, #0x9f
+ lsl r0, r0, #0x2
+ add r1, r4, r0
+ b _02033C74
+_02033C64:
+ mov r0, #0xff
+ lsl r0, r0, #0x2
+ add r1, r4, r0
+ b _02033C74
+_02033C6C:
+ mov r0, #0xfe
+ lsl r1, r4, #0x1
+ lsl r0, r0, #0x2
+ add r1, r1, r0
+_02033C74:
+ cmp r6, #0x1
+ bne _02033C7E
+ mov r2, #0x7
+ lsl r2, r2, #0x18
+ b _02033C80
+_02033C7E:
+ ldr r2, _02033CC0 ; =0x07000400
+_02033C80:
+ ldrh r3, [r5, #0xe]
+ ldrh r0, [r5, #0xc]
+ lsl r3, r3, #0x18
+ lsr r4, r3, #0x18
+ mov r3, #0x1
+ lsl r0, r0, #0x17
+ lsl r3, r3, #0x1e
+ lsr r0, r0, #0x7
+ orr r3, r4
+ orr r0, r3
+ str r0, [r2, #0x0]
+ mov r0, #0xe
+ lsl r0, r0, #0xc
+ orr r0, r1
+ strh r0, [r2, #0x4]
+ ldr r1, [r5, #0x1c]
+ cmp r2, r1
+ beq _02033CAE
+ ldr r0, _02033CC4 ; =0x40000200
+ str r0, [r1, #0x0]
+ mov r0, #0x0
+ strh r0, [r1, #0x4]
+ str r2, [r5, #0x1c]
+_02033CAE:
+ pop {r3-r7, pc}
+ .balign 4
+_02033CB0: .word 0x04000304
+_02033CB4: .word 0x00300010
+_02033CB8: .word 0x04001000
+_02033CBC: .word 0x00200010
+_02033CC0: .word 0x07000400
+_02033CC4: .word 0x40000200
+
+ thumb_func_start FUN_02033CC8
+FUN_02033CC8: ; 0x02033CC8
+ cmp r1, #0x4
+ bge _02033CD2
+ str r1, [r0, #0x4]
+ mov r1, #0x0
+ str r1, [r0, #0x8]
+_02033CD2:
+ bx lr
+
+ thumb_func_start FUN_02033CD4
+FUN_02033CD4: ; 0x02033CD4
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x18]
+ bl FUN_0200CAB4
+ mov r0, #0x7
+ ldr r2, _02033D00 ; =0x40000200
+ lsl r0, r0, #0x18
+ str r2, [r0, #0x0]
+ mov r1, #0x0
+ strh r1, [r0, #0x4]
+ ldrb r0, [r4, #0x12]
+ cmp r0, #0x0
+ beq _02033CF6
+ ldr r0, _02033D04 ; =0x07000400
+ str r2, [r0, #0x0]
+ strh r1, [r0, #0x4]
+_02033CF6:
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r4, pc}
+ nop
+_02033D00: .word 0x40000200
+_02033D04: .word 0x07000400
+
+ thumb_func_start FUN_02033D08
+FUN_02033D08: ; 0x02033D08
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ mov r2, #0x7
+ ldrb r1, [r5, #0x10]
+ mov r0, #0x2
+ lsl r2, r2, #0x6
+ add r3, r6, #0x0
+ bl FUN_02033D3C
+ ldrb r1, [r5, #0x10]
+ mov r0, #0x2
+ add r2, r6, #0x0
+ bl FUN_02033D9C
+ cmp r4, #0x0
+ beq _02033D30
+ mov r0, #0x1
+ b _02033D32
+_02033D30:
+ mov r0, #0x2
+_02033D32:
+ strb r0, [r5, #0x11]
+ mov r0, #0x1
+ strb r0, [r5, #0x12]
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02033D3C
+FUN_02033D3C: ; 0x02033D3C
+ push {r3-r5, lr}
+ sub sp, #0x8
+ mov r1, #0x96
+ add r5, r0, #0x0
+ add r0, r3, #0x0
+ lsl r1, r1, #0x2
+ add r4, r2, #0x0
+ bl FUN_020169D8
+ str r0, [sp, #0x4]
+ cmp r0, #0x0
+ beq _02033D92
+ ldr r0, _02033D98 ; =0x02105D88
+ add r1, sp, #0x4
+ bl FUN_020161F8
+ mov r1, #0x96
+ ldr r0, [sp, #0x4]
+ lsl r1, r1, #0x2
+ blx DC_FlushRange
+ ldr r0, [sp, #0x4]
+ add r1, sp, #0x0
+ blx FUN_020B0138
+ cmp r5, #0x1
+ bne _02033D80
+ ldr r0, [sp, #0x0]
+ add r1, r4, #0x0
+ ldr r0, [r0, #0xc]
+ mov r2, #0x20
+ blx FUN_020C9480
+ b _02033D8C
+_02033D80:
+ ldr r0, [sp, #0x0]
+ add r1, r4, #0x0
+ ldr r0, [r0, #0xc]
+ mov r2, #0x20
+ blx FUN_020C9418
+_02033D8C:
+ ldr r0, [sp, #0x4]
+ bl FUN_02016A18
+_02033D92:
+ add sp, #0x8
+ pop {r3-r5, pc}
+ nop
+_02033D98: .word 0x02105D88
+
+ thumb_func_start FUN_02033D9C
+FUN_02033D9C: ; 0x02033D9C
+ push {r3-r5, lr}
+ sub sp, #0x8
+ add r4, r1, #0x0
+ mov r1, #0x96
+ add r5, r0, #0x0
+ add r0, r2, #0x0
+ lsl r1, r1, #0x2
+ bl FUN_020169D8
+ str r0, [sp, #0x4]
+ cmp r0, #0x0
+ beq _02033E58
+ cmp r4, #0x0
+ add r1, sp, #0x4
+ beq _02033DC2
+ ldr r0, _02033E5C ; =0x02105D98
+ bl FUN_020161F8
+ b _02033DC8
+_02033DC2:
+ ldr r0, _02033E60 ; =0x02105DA8
+ bl FUN_020161F8
+_02033DC8:
+ mov r1, #0x96
+ ldr r0, [sp, #0x4]
+ lsl r1, r1, #0x2
+ blx DC_FlushRange
+ ldr r0, [sp, #0x4]
+ add r1, sp, #0x0
+ blx FUN_020B0088
+ cmp r5, #0x1
+ bne _02033DF0
+ mov r0, #0x1
+ lsl r0, r0, #0x1a
+ ldr r1, [r0, #0x0]
+ ldr r0, _02033E64 ; =0x00300010
+ add r4, r1, #0x0
+ and r4, r0
+ blx FUN_020C5DBC
+ b _02033E00
+_02033DF0:
+ mov r0, #0x1
+ lsl r0, r0, #0x1a
+ ldr r1, [r0, #0x0]
+ ldr r0, _02033E64 ; =0x00300010
+ add r4, r1, #0x0
+ and r4, r0
+ blx FUN_020C5DBC
+_02033E00:
+ cmp r4, #0x10
+ beq _02033E0C
+ ldr r1, _02033E68 ; =0x00200010
+ cmp r4, r1
+ beq _02033E20
+ b _02033E30
+_02033E0C:
+ cmp r0, #0x40
+ beq _02033E14
+ cmp r0, #0x20
+ bne _02033E1A
+_02033E14:
+ mov r1, #0x3e
+ lsl r1, r1, #0x8
+ b _02033E34
+_02033E1A:
+ mov r1, #0x7e
+ lsl r1, r1, #0x8
+ b _02033E34
+_02033E20:
+ cmp r0, #0x30
+ beq _02033E28
+ cmp r0, #0x50
+ bne _02033E2C
+_02033E28:
+ ldr r1, _02033E6C ; =0x00013E00
+ b _02033E34
+_02033E2C:
+ ldr r1, _02033E70 ; =0x0001FE00
+ b _02033E34
+_02033E30:
+ mov r1, #0xfe
+ lsl r1, r1, #0x8
+_02033E34:
+ cmp r5, #0x1
+ bne _02033E46
+ ldr r0, [sp, #0x0]
+ mov r2, #0x2
+ ldr r0, [r0, #0x14]
+ lsl r2, r2, #0x8
+ blx FUN_020C92F4
+ b _02033E52
+_02033E46:
+ ldr r0, [sp, #0x0]
+ mov r2, #0x2
+ ldr r0, [r0, #0x14]
+ lsl r2, r2, #0x8
+ blx FUN_020C9294
+_02033E52:
+ ldr r0, [sp, #0x4]
+ bl FUN_02016A18
+_02033E58:
+ add sp, #0x8
+ pop {r3-r5, pc}
+ .balign 4
+_02033E5C: .word 0x02105D98
+_02033E60: .word 0x02105DA8
+_02033E64: .word 0x00300010
+_02033E68: .word 0x00200010
+_02033E6C: .word 0x00013E00
+_02033E70: .word 0x0001FE00
+
+ thumb_func_start FUN_02033E74
+FUN_02033E74: ; 0x02033E74
+ push {r4, lr}
+ mov r4, #0x0
+ bl FUN_02033590
+ cmp r0, #0x0
+ beq _02033E82
+ mov r4, #0x1
+_02033E82:
+ mov r0, #0xf0
+ mov r1, #0x0
+ add r2, r4, #0x0
+ bl FUN_02033E90
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02033E90
+FUN_02033E90: ; 0x02033E90
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ add r4, r2, #0x0
+ bl FUN_0202E4DC
+ cmp r0, #0x0
+ beq _02033EC4
+ ldr r0, _02033EC8 ; =0x021C5A04
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _02033EAE
+ bl FUN_02033ED0
+_02033EAE:
+ ldr r0, _02033ECC ; =0x02105D74
+ str r4, [sp, #0x0]
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x5b
+ add r2, r5, #0x0
+ add r3, r6, #0x0
+ bl FUN_02033B68
+ ldr r1, _02033EC8 ; =0x021C5A04
+ str r0, [r1, #0x0]
+_02033EC4:
+ add sp, #0x8
+ pop {r4-r6, pc}
+ .balign 4
+_02033EC8: .word 0x021C5A04
+_02033ECC: .word 0x02105D74
+
+ thumb_func_start FUN_02033ED0
+FUN_02033ED0: ; 0x02033ED0
+ push {r3, lr}
+ ldr r0, _02033EE8 ; =0x021C5A04
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _02033EE4
+ bl FUN_02033CD4
+ ldr r0, _02033EE8 ; =0x021C5A04
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+_02033EE4:
+ pop {r3, pc}
+ nop
+_02033EE8: .word 0x021C5A04
+
+ thumb_func_start FUN_02033EEC
+FUN_02033EEC: ; 0x02033EEC
+ push {r3, lr}
+ add r1, r0, #0x0
+ ldr r0, _02033F00 ; =0x021C5A04
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _02033EFC
+ bl FUN_02033CC8
+_02033EFC:
+ pop {r3, pc}
+ nop
+_02033F00: .word 0x021C5A04
+
+ thumb_func_start FUN_02033F04
+FUN_02033F04: ; 0x02033F04
+ push {r3, lr}
+ add r3, r0, #0x0
+ ldr r0, _02033F1C ; =0x021C5A04
+ add r2, r1, #0x0
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _02033F18
+ add r1, r3, #0x0
+ bl FUN_02033D08
+_02033F18:
+ pop {r3, pc}
+ nop
+_02033F1C: .word 0x021C5A04
+
+ thumb_func_start FUN_02033F20
+FUN_02033F20: ; 0x02033F20
+ push {r3, lr}
+ bl FUN_02030F40
+ cmp r0, #0x0
+ beq _02033F40
+ bl FUN_02030F20
+ cmp r0, #0x1
+ bgt _02033F3A
+ bl FUN_02033590
+ cmp r0, #0x0
+ beq _02033F4C
+_02033F3A:
+ bl FUN_02033E74
+ pop {r3, pc}
+_02033F40:
+ bl FUN_02033590
+ cmp r0, #0x0
+ beq _02033F4C
+ bl FUN_02033E74
+_02033F4C:
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02033F50
+FUN_02033F50: ; 0x02033F50
+ ldr r3, _02033F64 ; =0x027E0000
+ ldr r1, _02033F68 ; =0x00003FF8
+ mov r0, #0x1
+ ldr r2, [r3, r1]
+ orr r0, r2
+ str r0, [r3, r1]
+ ldr r3, _02033F6C ; =MI_WaitDma
+ mov r0, #0x3
+ bx r3
+ nop
+_02033F64: .word 0x027E0000
+_02033F68: .word 0x00003FF8
+_02033F6C: .word MI_WaitDma
+
+ thumb_func_start FUN_02033F70
+FUN_02033F70: ; 0x02033F70
+ push {r3-r7, lr}
+ sub sp, #0x28
+ add r4, r0, #0x0
+ str r2, [sp, #0xc]
+ cmp r1, #0x4
+ bhi _02033F92
+ add r0, r1, r1
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02033F88: ; jump table (using 16-bit offset)
+ .short _02033F92 - _02033F88 - 2; case 0
+ .short _02033F96 - _02033F88 - 2; case 1
+ .short _02033F9A - _02033F88 - 2; case 2
+ .short _02033F9E - _02033F88 - 2; case 3
+ .short _02033FA2 - _02033F88 - 2; case 4
+_02033F92:
+ mov r5, #0x1
+ b _02033FA4
+_02033F96:
+ mov r5, #0x2
+ b _02033FA4
+_02033F9A:
+ mov r5, #0x3
+ b _02033FA4
+_02033F9E:
+ mov r5, #0x4
+ b _02033FA4
+_02033FA2:
+ mov r5, #0x5
+_02033FA4:
+ mov r0, #0x0
+ add r1, r0, #0x0
+ bl FUN_0200E3A0
+ mov r0, #0x1
+ mov r1, #0x0
+ bl FUN_0200E3A0
+ mov r0, #0x1
+ blx OS_DisableIrqMask
+ ldr r1, _02034154 ; =FUN_02033F50
+ mov r0, #0x1
+ blx OS_SetIrqFunction
+ mov r0, #0x1
+ blx OS_EnableIrqMask
+ mov r0, #0x0
+ add r1, r0, #0x0
+ bl FUN_02015F10
+ mov r0, #0x0
+ add r1, r0, #0x0
+ bl FUN_02015F34
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ mov r2, #0x1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2, #0x0]
+ ldr r0, _02034158 ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2, #0x0]
+ ldr r2, _0203415C ; =0x04001000
+ ldr r1, [r2, #0x0]
+ and r0, r1
+ str r0, [r2, #0x0]
+ mov r0, #0x4
+ mov r1, #0x8
+ bl FUN_0201669C
+ ldr r0, _02034160 ; =0x021C4918
+ mov r1, #0x0
+ strb r1, [r0, #0x5]
+ bl FUN_0201E7A0
+ ldr r3, _02034164 ; =0x04000050
+ mov r1, #0x0
+ strh r1, [r3, #0x0]
+ ldr r0, _02034168 ; =0x04001050
+ sub r3, #0x50
+ strh r1, [r0, #0x0]
+ ldr r2, [r3, #0x0]
+ ldr r1, _0203416C ; =0xFFFF1FFF
+ sub r0, #0x50
+ and r2, r1
+ str r2, [r3, #0x0]
+ ldr r2, [r0, #0x0]
+ and r1, r2
+ str r1, [r0, #0x0]
+ ldr r0, _02034170 ; =0x020EECD0
+ bl FUN_0201E66C
+ add r0, r4, #0x0
+ bl FUN_02016B94
+ add r6, r0, #0x0
+ ldr r0, _02034174 ; =0x020EECA4
+ bl FUN_02016BBC
+ mov r1, #0x0
+ ldr r2, _02034178 ; =0x020EECB4
+ add r0, r6, #0x0
+ add r3, r1, #0x0
+ bl FUN_02016C18
+ add r0, r6, #0x0
+ mov r1, #0x0
+ bl FUN_02018744
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ ldr r2, _0203417C ; =0x000001F7
+ add r0, r6, #0x0
+ mov r3, #0x2
+ str r4, [sp, #0x4]
+ bl FUN_0200CB00
+ mov r0, #0x0
+ mov r1, #0x20
+ add r2, r4, #0x0
+ bl FUN_02002ED0
+ mov r0, #0x0
+ mov r1, #0x20
+ add r2, r0, #0x0
+ add r3, r4, #0x0
+ bl FUN_02017F18
+ ldr r1, _02034180 ; =0x00006C21
+ mov r0, #0x0
+ bl FUN_02017FE4
+ ldr r1, _02034180 ; =0x00006C21
+ mov r0, #0x4
+ bl FUN_02017FE4
+ mov r0, #0x1
+ mov r1, #0x1a
+ mov r2, #0xc8
+ add r3, r4, #0x0
+ bl FUN_0200A86C
+ str r0, [sp, #0x10]
+ mov r0, #0x6
+ lsl r0, r0, #0x6
+ add r1, r4, #0x0
+ bl FUN_020219F4
+ add r7, r0, #0x0
+ mov r0, #0x6
+ lsl r0, r0, #0x6
+ add r1, r4, #0x0
+ bl FUN_020219F4
+ str r0, [sp, #0x14]
+ bl FUN_0201BD5C
+ add r0, r4, #0x0
+ bl FUN_0200AA80
+ add r4, r0, #0x0
+ ldr r2, _02034184 ; =0x020EEC9C
+ add r0, r6, #0x0
+ add r1, sp, #0x18
+ bl FUN_02019150
+ mov r0, #0xd0
+ str r0, [sp, #0x0]
+ mov r0, #0x90
+ mov r2, #0x0
+ str r0, [sp, #0x4]
+ add r0, sp, #0x18
+ mov r1, #0xf
+ add r3, r2, #0x0
+ bl FUN_020196F4
+ ldr r2, _0203417C ; =0x000001F7
+ add r0, sp, #0x18
+ mov r1, #0x0
+ mov r3, #0x2
+ bl FUN_0200CCA4
+ mov r0, #0x2
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ ldr r2, [sp, #0xc]
+ add r0, r4, #0x0
+ mov r1, #0x0
+ mov r3, #0x5
+ bl FUN_0200AD38
+ ldr r0, [sp, #0x10]
+ ldr r2, [sp, #0x14]
+ add r1, r5, #0x0
+ bl FUN_0200A8E0
+ ldr r2, [sp, #0x14]
+ add r0, r4, #0x0
+ add r1, r7, #0x0
+ bl FUN_0200B7B8
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ str r1, [sp, #0x4]
+ add r0, sp, #0x18
+ add r2, r7, #0x0
+ add r3, r1, #0x0
+ str r1, [sp, #0x8]
+ bl FUN_0201BD84
+ add r0, r7, #0x0
+ bl FUN_02021A20
+ bl FUN_0201E788
+ mov r0, #0x0
+ bl FUN_0200E394
+ mov r0, #0x1
+ bl FUN_0200E394
+ mov r0, #0x0
+ mov r1, #0x3f
+ mov r2, #0x3
+ bl FUN_0200A274
+ add r0, sp, #0x18
+ bl FUN_02019178
+ ldr r0, [sp, #0x10]
+ bl FUN_0200A8B8
+ add r0, r4, #0x0
+ bl FUN_0200AB18
+ add r0, r6, #0x0
+ bl FUN_02016A18
+ add sp, #0x28
+ pop {r3-r7, pc}
+ nop
+_02034154: .word FUN_02033F50
+_02034158: .word 0xFFFFE0FF
+_0203415C: .word 0x04001000
+_02034160: .word 0x021C4918
+_02034164: .word 0x04000050
+_02034168: .word 0x04001050
+_0203416C: .word 0xFFFF1FFF
+_02034170: .word 0x020EECD0
+_02034174: .word 0x020EECA4
+_02034178: .word 0x020EECB4
+_0203417C: .word 0x000001F7
+_02034180: .word 0x00006C21
+_02034184: .word 0x020EEC9C
+
+ thumb_func_start FUN_02034188
+FUN_02034188: ; 0x02034188
+ push {r4-r7, lr}
+ sub sp, #0x24
+ add r4, r0, #0x0
+ mov r0, #0x0
+ add r1, r0, #0x0
+ bl FUN_0200E3A0
+ mov r0, #0x1
+ mov r1, #0x0
+ bl FUN_0200E3A0
+ bl FUN_02015EF4
+ mov r0, #0x0
+ add r1, r0, #0x0
+ bl FUN_02015F10
+ mov r0, #0x0
+ add r1, r0, #0x0
+ bl FUN_02015F34
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ mov r2, #0x1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2, #0x0]
+ ldr r0, _02034368 ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2, #0x0]
+ ldr r2, _0203436C ; =0x04001000
+ ldr r1, [r2, #0x0]
+ and r0, r1
+ str r0, [r2, #0x0]
+ mov r0, #0x4
+ mov r1, #0x8
+ bl FUN_0201669C
+ ldr r0, _02034370 ; =0x021C4918
+ mov r1, #0x0
+ strb r1, [r0, #0x5]
+ bl FUN_0201E7A0
+ ldr r3, _02034374 ; =0x04000050
+ mov r0, #0x0
+ strh r0, [r3, #0x0]
+ ldr r2, _02034378 ; =0x04001050
+ sub r3, #0x50
+ strh r0, [r2, #0x0]
+ ldr r1, [r3, #0x0]
+ ldr r0, _0203437C ; =0xFFFF1FFF
+ sub r2, #0x50
+ and r1, r0
+ str r1, [r3, #0x0]
+ ldr r1, [r2, #0x0]
+ and r0, r1
+ str r0, [r2, #0x0]
+ ldr r0, _02034380 ; =0x020EED2C
+ bl FUN_0201E66C
+ add r0, r4, #0x0
+ bl FUN_02016B94
+ str r0, [sp, #0x10]
+ ldr r0, _02034384 ; =0x020EED00
+ bl FUN_02016BBC
+ mov r1, #0x0
+ ldr r0, [sp, #0x10]
+ ldr r2, _02034388 ; =0x020EED10
+ add r3, r1, #0x0
+ bl FUN_02016C18
+ ldr r0, [sp, #0x10]
+ mov r1, #0x0
+ bl FUN_02018744
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ ldr r0, [sp, #0x10]
+ ldr r2, _0203438C ; =0x000001F7
+ mov r3, #0x2
+ str r4, [sp, #0x4]
+ bl FUN_0200CB00
+ mov r0, #0x0
+ mov r1, #0x20
+ add r2, r4, #0x0
+ bl FUN_02002ED0
+ mov r0, #0x0
+ mov r1, #0x20
+ add r2, r0, #0x0
+ add r3, r4, #0x0
+ bl FUN_02017F18
+ ldr r1, _02034390 ; =0x00006C21
+ mov r0, #0x0
+ bl FUN_02017FE4
+ ldr r1, _02034390 ; =0x00006C21
+ mov r0, #0x4
+ bl FUN_02017FE4
+ ldr r2, _02034394 ; =0x00000265
+ mov r0, #0x1
+ mov r1, #0x1a
+ add r3, r4, #0x0
+ bl FUN_0200A86C
+ str r0, [sp, #0xc]
+ mov r0, #0x6
+ lsl r0, r0, #0x6
+ add r1, r4, #0x0
+ bl FUN_020219F4
+ add r4, r0, #0x0
+ bl FUN_0201BD5C
+ ldr r0, [sp, #0x10]
+ ldr r2, _02034398 ; =0x020EECF8
+ add r1, sp, #0x14
+ bl FUN_02019150
+ mov r0, #0xd0
+ str r0, [sp, #0x0]
+ mov r0, #0x90
+ mov r2, #0x0
+ str r0, [sp, #0x4]
+ add r0, sp, #0x14
+ mov r1, #0xf
+ add r3, r2, #0x0
+ bl FUN_020196F4
+ ldr r2, _0203438C ; =0x000001F7
+ add r0, sp, #0x14
+ mov r1, #0x0
+ mov r3, #0x2
+ bl FUN_0200CCA4
+ ldr r0, [sp, #0xc]
+ mov r1, #0xf
+ add r2, r4, #0x0
+ bl FUN_0200A8E0
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ str r1, [sp, #0x4]
+ add r0, sp, #0x14
+ add r2, r4, #0x0
+ add r3, r1, #0x0
+ str r1, [sp, #0x8]
+ bl FUN_0201BD84
+ add r0, r4, #0x0
+ bl FUN_02021A20
+ bl FUN_0201E788
+ mov r0, #0x0
+ bl FUN_0200E394
+ mov r0, #0x1
+ bl FUN_0200E394
+ mov r0, #0x0
+ mov r1, #0x3f
+ mov r2, #0x3
+ bl FUN_0200A274
+ ldr r4, _0203439C ; =0x04000130
+ ldr r6, _020343A0 ; =0x027FFFA8
+ mov r7, #0x1
+_020342E4:
+ ldrh r1, [r4, #0x0]
+ ldrh r0, [r6, #0x0]
+ orr r1, r0
+ ldr r0, _020343A4 ; =0x00002FFF
+ eor r1, r0
+ and r0, r1
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ bl FUN_02000FE8
+ add r0, r5, #0x0
+ tst r0, r7
+ bne _02034308
+ mov r0, #0x1
+ add r1, r0, #0x0
+ blx OS_WaitIrq
+ b _020342E4
+_02034308:
+ add r0, sp, #0x14
+ bl FUN_02019178
+ ldr r0, [sp, #0xc]
+ bl FUN_0200A8B8
+ mov r0, #0x0
+ add r1, r0, #0x0
+ bl FUN_0201797C
+ mov r0, #0x1
+ mov r1, #0x0
+ bl FUN_0201797C
+ mov r0, #0x2
+ mov r1, #0x0
+ bl FUN_0201797C
+ mov r0, #0x3
+ mov r1, #0x0
+ bl FUN_0201797C
+ mov r0, #0x4
+ mov r1, #0x0
+ bl FUN_0201797C
+ mov r0, #0x5
+ mov r1, #0x0
+ bl FUN_0201797C
+ mov r0, #0x6
+ mov r1, #0x0
+ bl FUN_0201797C
+ mov r0, #0x7
+ mov r1, #0x0
+ bl FUN_0201797C
+ ldr r0, [sp, #0x10]
+ mov r1, #0x0
+ bl FUN_020178A0
+ ldr r0, [sp, #0x10]
+ bl FUN_02016A18
+ add sp, #0x24
+ pop {r4-r7, pc}
+ nop
+_02034368: .word 0xFFFFE0FF
+_0203436C: .word 0x04001000
+_02034370: .word 0x021C4918
+_02034374: .word 0x04000050
+_02034378: .word 0x04001050
+_0203437C: .word 0xFFFF1FFF
+_02034380: .word 0x020EED2C
+_02034384: .word 0x020EED00
+_02034388: .word 0x020EED10
+_0203438C: .word 0x000001F7
+_02034390: .word 0x00006C21
+_02034394: .word 0x00000265
+_02034398: .word 0x020EECF8
+_0203439C: .word 0x04000130
+_020343A0: .word 0x027FFFA8
+_020343A4: .word 0x00002FFF
+
+ thumb_func_start FUN_020343A8
+FUN_020343A8: ; 0x020343A8
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r4, r0, #0x0
+ str r2, [sp, #0x0]
+ mov r2, #0x0
+ strb r2, [r4, #0x1]
+ mov r0, #0xe1
+ ldr r7, _02034488 ; =0x0000070A
+ ldr r6, _0203448C ; =0x00000A8E
+ mov r12, r1
+ strb r2, [r4, #0x0]
+ add r3, r4, #0x0
+ add r5, r2, #0x0
+ lsl r0, r0, #0x2
+_020343C4:
+ add r1, r4, r2
+ strh r5, [r3, #0x2]
+ strb r5, [r1, r7]
+ strh r5, [r3, r6]
+ add r2, r2, #0x1
+ add r3, r3, #0x2
+ cmp r2, r0
+ blt _020343C4
+ ldr r0, _02034490 ; =0x00001196
+ mov r2, #0x0
+_020343D8:
+ add r1, r4, r5
+ add r5, r5, #0x1
+ strb r2, [r1, r0]
+ cmp r5, #0x10
+ blt _020343D8
+ mov r0, #0x29
+ mov r1, r12
+ mov r2, #0xb
+ bl FUN_02006528
+ add r6, r0, #0x0
+ ldrb r0, [r6, #0x0]
+ add r5, r6, #0x5
+ strb r0, [r4, #0x1]
+ ldrb r0, [r6, #0x1]
+ strb r0, [r4, #0x0]
+ ldrb r0, [r6, #0x2]
+ str r0, [sp, #0x8]
+ ldrb r0, [r6, #0x3]
+ str r0, [sp, #0x4]
+ ldrb r7, [r6, #0x4]
+ cmp r7, #0x10
+ bls _0203440A
+ bl ErrorHandling
+_0203440A:
+ ldr r1, _02034490 ; =0x00001196
+ add r0, r5, #0x0
+ add r1, r4, r1
+ add r2, r7, #0x0
+ blx MI_CpuCopy8
+ ldr r0, [sp, #0x8]
+ add r5, r5, r7
+ cmp r0, #0x0
+ beq _0203443A
+ ldrb r3, [r4, #0x1]
+ ldrb r2, [r4, #0x0]
+ add r0, r5, #0x0
+ add r1, r4, #0x2
+ mul r2, r3
+ lsl r2, r2, #0x1
+ blx MI_CpuCopy8
+ ldrb r1, [r4, #0x1]
+ ldrb r0, [r4, #0x0]
+ mul r0, r1
+ lsl r0, r0, #0x1
+ add r5, r5, r0
+ b _0203444E
+_0203443A:
+ ldrb r3, [r4, #0x1]
+ ldrb r2, [r4, #0x0]
+ ldr r0, [sp, #0x0]
+ add r1, r4, #0x2
+ lsl r0, r0, #0x10
+ mul r2, r3
+ lsr r0, r0, #0x10
+ lsl r2, r2, #0x1
+ blx MIi_CpuClear16
+_0203444E:
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ beq _0203446C
+ ldrb r3, [r4, #0x1]
+ ldrb r2, [r4, #0x0]
+ ldr r1, _02034488 ; =0x0000070A
+ add r0, r5, #0x0
+ add r1, r4, r1
+ mul r2, r3
+ blx MI_CpuCopy8
+ ldrb r1, [r4, #0x1]
+ ldrb r0, [r4, #0x0]
+ mul r0, r1
+ add r5, r5, r0
+_0203446C:
+ ldrb r3, [r4, #0x1]
+ ldrb r2, [r4, #0x0]
+ ldr r1, _0203448C ; =0x00000A8E
+ add r0, r5, #0x0
+ mul r2, r3
+ add r1, r4, r1
+ lsl r2, r2, #0x1
+ blx MI_CpuCopy8
+ add r0, r6, #0x0
+ bl FUN_02016A18
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+_02034488: .word 0x0000070A
+_0203448C: .word 0x00000A8E
+_02034490: .word 0x00001196
+
+ thumb_func_start FUN_02034494
+FUN_02034494: ; 0x02034494
+ push {r3, lr}
+ ldr r1, _020344A8 ; =0x000011AA
+ mov r0, #0xb
+ bl FUN_02016998
+ mov r1, #0x0
+ strb r1, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ strb r1, [r0, #0x2]
+ pop {r3, pc}
+ .balign 4
+_020344A8: .word 0x000011AA
+
+ thumb_func_start FUN_020344AC
+FUN_020344AC: ; 0x020344AC
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_0203474C
+ add r6, r0, #0x0
+ add r0, r4, #0x4
+ add r1, r6, #0x0
+ add r2, r5, #0x0
+ bl FUN_020343A8
+ strb r6, [r4, #0x2]
+ ldrb r0, [r4, #0x4]
+ strb r0, [r4, #0x1]
+ ldrb r0, [r4, #0x5]
+ strb r0, [r4, #0x0]
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_020344D0
+FUN_020344D0: ; 0x020344D0
+ ldr r3, _020344D4 ; =FUN_02016A18
+ bx r3
+ .balign 4
+_020344D4: .word FUN_02016A18
+
+ thumb_func_start FUN_020344D8
+FUN_020344D8: ; 0x020344D8
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ ldrb r1, [r4, #0x0]
+ ldrb r0, [r4, #0x1]
+ mul r0, r1
+ cmp r5, r0
+ blt _020344EC
+ bl ErrorHandling
+_020344EC:
+ lsl r0, r5, #0x1
+ add r1, r4, r0
+ ldr r0, _020344F8 ; =0x00000A92
+ ldrh r0, [r1, r0]
+ pop {r3-r5, pc}
+ nop
+_020344F8: .word 0x00000A92
+
+ thumb_func_start FUN_020344FC
+FUN_020344FC: ; 0x020344FC
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _02034506
+ bl ErrorHandling
+_02034506:
+ ldrb r0, [r4, #0x0]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203450C
+FUN_0203450C: ; 0x0203450C
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _02034516
+ bl ErrorHandling
+_02034516:
+ ldrb r0, [r4, #0x1]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203451C
+FUN_0203451C: ; 0x0203451C
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ ldrb r0, [r7, #0x1]
+ add r5, r1, #0x0
+ add r4, r2, #0x0
+ ldrb r6, [r7, #0x0]
+ str r0, [sp, #0x0]
+ cmp r5, #0x0
+ blt _02034532
+ cmp r5, r6
+ blt _02034536
+_02034532:
+ bl ErrorHandling
+_02034536:
+ cmp r4, #0x0
+ blt _02034540
+ ldr r0, [sp, #0x0]
+ cmp r4, r0
+ blt _02034544
+_02034540:
+ bl ErrorHandling
+_02034544:
+ add r0, r4, #0x0
+ mul r0, r6
+ add r0, r5, r0
+ lsl r0, r0, #0x1
+ add r0, r7, r0
+ ldrh r0, [r0, #0x6]
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02034554
+FUN_02034554: ; 0x02034554
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ ldrb r1, [r5, #0x0]
+ ldrb r0, [r5, #0x1]
+ mul r0, r1
+ cmp r4, #0x0
+ blt _02034568
+ cmp r4, r0
+ blt _0203456C
+_02034568:
+ bl ErrorHandling
+_0203456C:
+ lsl r0, r4, #0x1
+ add r0, r5, r0
+ ldrh r0, [r0, #0x6]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02034574
+FUN_02034574: ; 0x02034574
+ ldrb r0, [r0, #0x2]
+ bx lr
+
+ thumb_func_start FUN_02034578
+FUN_02034578: ; 0x02034578
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [sp, #0x10]
+ add r4, r2, #0x0
+ add r6, r3, #0x0
+ cmp r4, r0
+ blt _0203458A
+ bl ErrorHandling
+_0203458A:
+ ldr r0, [sp, #0x10]
+ mul r0, r6
+ add r4, r4, r0
+ mov r0, #0xe1
+ lsl r0, r0, #0x2
+ cmp r4, r0
+ blt _0203459C
+ bl ErrorHandling
+_0203459C:
+ ldr r0, _020345A4 ; =0x0000070E
+ add r1, r5, r4
+ ldrb r0, [r1, r0]
+ pop {r4-r6, pc}
+ .balign 4
+_020345A4: .word 0x0000070E
+
+ thumb_func_start FUN_020345A8
+FUN_020345A8: ; 0x020345A8
+ push {r3-r5, lr}
+ ldr r1, _020345D8 ; =0x00000708
+ add r4, r0, #0x0
+ bl FUN_02016998
+ add r5, r0, #0x0
+ mov r0, #0x29
+ mov r1, #0x0
+ add r2, r4, #0x0
+ bl FUN_02006528
+ add r4, r0, #0x0
+ ldrb r1, [r4, #0x4]
+ add r0, r4, #0x5
+ ldr r2, _020345D8 ; =0x00000708
+ add r0, r0, r1
+ add r1, r5, #0x0
+ blx MI_CpuCopy8
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add r0, r5, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+_020345D8: .word 0x00000708
+
+ thumb_func_start FUN_020345DC
+FUN_020345DC: ; 0x020345DC
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _020345E6
+ bl ErrorHandling
+_020345E6:
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020345F0
+FUN_020345F0: ; 0x020345F0
+ mov r3, #0x1e
+ mul r3, r2
+ add r1, r1, r3
+ lsl r1, r1, #0x1
+ ldrh r0, [r0, r1]
+ bx lr
+
+ thumb_func_start FUN_020345FC
+FUN_020345FC: ; 0x020345FC
+ push {r3-r5, lr}
+ sub sp, #0x1fc
+ sub sp, #0x1fc
+ sub sp, #0x1fc
+ sub sp, #0x1fc
+ sub sp, #0x1fc
+ sub sp, #0x1fc
+ sub sp, #0x1fc
+ sub sp, #0x1fc
+ sub sp, #0x1c8
+ add r3, r0, #0x0
+ add r5, r1, #0x0
+ lsl r1, r3, #0x10
+ add r4, r2, #0x0
+ add r0, sp, #0x0
+ lsr r1, r1, #0x10
+ mov r2, #0x0
+ bl FUN_020343A8
+ add r0, sp, #0x0
+ ldrb r0, [r0, #0x1]
+ cmp r5, r0
+ blt _0203462E
+ bl ErrorHandling
+_0203462E:
+ add r0, sp, #0x0
+ ldrb r0, [r0, #0x0]
+ cmp r4, r0
+ blt _0203463A
+ bl ErrorHandling
+_0203463A:
+ add r0, sp, #0x0
+ ldrb r0, [r0, #0x1]
+ mul r0, r4
+ add r0, r5, r0
+ lsl r1, r0, #0x1
+ add r0, sp, #0x0
+ add r0, #0x2
+ ldrh r0, [r0, r1]
+ add sp, #0x1fc
+ add sp, #0x1fc
+ add sp, #0x1fc
+ add sp, #0x1fc
+ add sp, #0x1fc
+ add sp, #0x1fc
+ add sp, #0x1fc
+ add sp, #0x1fc
+ add sp, #0x1c8
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02034660
+FUN_02034660: ; 0x02034660
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bne _0203466C
+ bl ErrorHandling
+_0203466C:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_020344D8
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02034678
+FUN_02034678: ; 0x02034678
+ push {r4-r7}
+ ldr r1, _020346C4 ; =0x00000A92
+ ldrb r7, [r0, #0x0]
+ add r2, r0, r1
+ ldr r1, _020346C8 ; =0x0000070E
+ add r1, r0, r1
+ ldrb r0, [r0, #0x2]
+ cmp r0, #0x0
+ bne _020346BE
+ mov r0, #0x15
+ add r6, r7, #0x0
+ mul r6, r0
+ add r5, r6, #0x0
+ add r5, #0x17
+ mov r4, #0xb0
+ lsl r0, r5, #0x1
+ add r6, #0x18
+ strh r4, [r2, r0]
+ lsl r0, r6, #0x1
+ strh r4, [r2, r0]
+ mov r0, #0x16
+ add r3, r7, #0x0
+ mul r3, r0
+ add r0, r3, #0x0
+ add r0, #0x17
+ lsl r7, r0, #0x1
+ add r3, #0x18
+ strh r4, [r2, r7]
+ lsl r7, r3, #0x1
+ strh r4, [r2, r7]
+ mov r2, #0x2
+ strb r2, [r1, r5]
+ strb r2, [r1, r6]
+ strb r2, [r1, r0]
+ strb r2, [r1, r3]
+_020346BE:
+ pop {r4-r7}
+ bx lr
+ nop
+_020346C4: .word 0x00000A92
+_020346C8: .word 0x0000070E
+
+ thumb_func_start FUN_020346CC
+FUN_020346CC: ; 0x020346CC
+ push {r3-r4}
+ ldr r1, _0203470C ; =0x00000A92
+ add r2, r0, r1
+ ldrb r1, [r0, #0x0]
+ ldrb r0, [r0, #0x2]
+ cmp r0, #0x0
+ bne _02034706
+ mov r0, #0xf
+ mul r0, r1
+ add r0, #0x1c
+ mov r3, #0x77
+ lsl r0, r0, #0x1
+ strh r3, [r2, r0]
+ lsl r0, r1, #0x4
+ add r3, r0, #0x0
+ add r3, #0x1b
+ mov r4, #0x78
+ lsl r3, r3, #0x1
+ strh r4, [r2, r3]
+ add r3, r0, #0x0
+ add r3, #0x1c
+ add r0, r1, r0
+ add r0, #0x1b
+ mov r4, #0x79
+ lsl r3, r3, #0x1
+ strh r4, [r2, r3]
+ mov r3, #0x7a
+ lsl r0, r0, #0x1
+ strh r3, [r2, r0]
+_02034706:
+ pop {r3-r4}
+ bx lr
+ nop
+_0203470C: .word 0x00000A92
+
+ thumb_func_start FUN_02034710
+FUN_02034710: ; 0x02034710
+ push {r3, lr}
+ ldr r1, _02034720 ; =0x0000022F
+ cmp r0, r1
+ blo _0203471E
+ bl ErrorHandling
+ mov r0, #0x3
+_0203471E:
+ pop {r3, pc}
+ .balign 4
+_02034720: .word 0x0000022F
+
+ thumb_func_start FUN_02034724
+FUN_02034724: ; 0x02034724
+ push {r3, lr}
+ bl FUN_02034710
+ mov r1, #0x18
+ mul r1, r0
+ ldr r0, _02034734 ; =0x020EEDBC
+ ldrb r0, [r0, r1]
+ pop {r3, pc}
+ .balign 4
+_02034734: .word 0x020EEDBC
+
+ thumb_func_start FUN_02034738
+FUN_02034738: ; 0x02034738
+ push {r3, lr}
+ bl FUN_02034710
+ mov r1, #0x18
+ mul r1, r0
+ ldr r0, _02034748 ; =0x020EEDBD
+ ldrb r0, [r0, r1]
+ pop {r3, pc}
+ .balign 4
+_02034748: .word 0x020EEDBD
+
+ thumb_func_start FUN_0203474C
+FUN_0203474C: ; 0x0203474C
+ push {r3, lr}
+ bl FUN_02034710
+ mov r1, #0x18
+ mul r1, r0
+ ldr r0, _0203476C ; =0x020EEDBE
+ ldrh r0, [r0, r1]
+ cmp r0, #0x16
+ bne _02034768
+ ldr r1, _02034770 ; =0x020ECAC0
+ ldrb r1, [r1, #0x0]
+ cmp r1, #0xb
+ bne _02034768
+ mov r0, #0x17
+_02034768:
+ pop {r3, pc}
+ nop
+_0203476C: .word 0x020EEDBE
+_02034770: .word 0x020ECAC0
+
+ thumb_func_start FUN_02034774
+FUN_02034774: ; 0x02034774
+ push {r3, lr}
+ bl FUN_02034710
+ mov r1, #0x18
+ mul r1, r0
+ ldr r0, _02034784 ; =0x020EEDC4
+ ldrh r0, [r0, r1]
+ pop {r3, pc}
+ .balign 4
+_02034784: .word 0x020EEDC4
+
+ thumb_func_start FUN_02034788
+FUN_02034788: ; 0x02034788
+ push {r3, lr}
+ bl FUN_02034710
+ mov r1, #0x18
+ mul r1, r0
+ ldr r0, _02034798 ; =0x020EEDC0
+ ldrh r0, [r0, r1]
+ pop {r3, pc}
+ .balign 4
+_02034798: .word 0x020EEDC0
+
+ thumb_func_start FUN_0203479C
+FUN_0203479C: ; 0x0203479C
+ push {r3, lr}
+ bl FUN_02034710
+ mov r1, #0x18
+ mul r1, r0
+ ldr r0, _020347AC ; =0x020EEDC2
+ ldrh r0, [r0, r1]
+ pop {r3, pc}
+ .balign 4
+_020347AC: .word 0x020EEDC2
+
+ thumb_func_start FUN_020347B0
+FUN_020347B0: ; 0x020347B0
+ push {r3, lr}
+ bl FUN_02034710
+ mov r1, #0x18
+ mul r1, r0
+ ldr r0, _020347C0 ; =0x020EEDC6
+ ldrh r0, [r0, r1]
+ pop {r3, pc}
+ .balign 4
+_020347C0: .word 0x020EEDC6
+
+ thumb_func_start FUN_020347C4
+FUN_020347C4: ; 0x020347C4
+ push {r3, lr}
+ bl FUN_02034710
+ mov r1, #0x18
+ mul r1, r0
+ ldr r0, _020347D4 ; =0x020EEDC8
+ ldrh r0, [r0, r1]
+ pop {r3, pc}
+ .balign 4
+_020347D4: .word 0x020EEDC8
+
+ thumb_func_start FUN_020347D8
+FUN_020347D8: ; 0x020347D8
+ push {r3, lr}
+ bl FUN_02034710
+ mov r1, #0x18
+ mul r1, r0
+ ldr r0, _020347F4 ; =0x020EEDCA
+ ldrh r1, [r0, r1]
+ ldr r0, _020347F8 ; =0x0000FFFF
+ cmp r1, r0
+ beq _020347F0
+ mov r0, #0x1
+ pop {r3, pc}
+_020347F0:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+_020347F4: .word 0x020EEDCA
+_020347F8: .word 0x0000FFFF
+
+ thumb_func_start FUN_020347FC
+FUN_020347FC: ; 0x020347FC
+ push {r3, lr}
+ bl FUN_02034710
+ mov r1, #0x18
+ mul r1, r0
+ ldr r0, _0203480C ; =0x020EEDCA
+ ldrh r0, [r0, r1]
+ pop {r3, pc}
+ .balign 4
+_0203480C: .word 0x020EEDCA
+
+ thumb_func_start FUN_02034810
+FUN_02034810: ; 0x02034810
+ push {r3, lr}
+ bl FUN_02034710
+ mov r1, #0x18
+ mul r1, r0
+ ldr r0, _02034820 ; =0x020EEDCC
+ ldrh r0, [r0, r1]
+ pop {r3, pc}
+ .balign 4
+_02034820: .word 0x020EEDCC
+
+ thumb_func_start FUN_02034824
+FUN_02034824: ; 0x02034824
+ push {r3, lr}
+ bl FUN_02034710
+ mov r1, #0x18
+ mul r1, r0
+ ldr r0, _02034834 ; =0x020EEDCE
+ ldrh r0, [r0, r1]
+ pop {r3, pc}
+ .balign 4
+_02034834: .word 0x020EEDCE
+
+ thumb_func_start FUN_02034838
+FUN_02034838: ; 0x02034838
+ push {r3, lr}
+ bl FUN_02034710
+ mov r1, #0x18
+ mul r1, r0
+ ldr r0, _02034848 ; =0x020EEDD0
+ ldrb r0, [r0, r1]
+ pop {r3, pc}
+ .balign 4
+_02034848: .word 0x020EEDD0
+
+ thumb_func_start FUN_0203484C
+FUN_0203484C: ; 0x0203484C
+ push {r3, lr}
+ bl FUN_02034710
+ mov r1, #0x18
+ mul r1, r0
+ ldr r0, _0203485C ; =0x020EEDD1
+ ldrb r0, [r0, r1]
+ pop {r3, pc}
+ .balign 4
+_0203485C: .word 0x020EEDD1
+
+ thumb_func_start FUN_02034860
+FUN_02034860: ; 0x02034860
+ push {r3, lr}
+ bl FUN_02034710
+ mov r1, #0x18
+ mul r1, r0
+ ldr r0, _02034878 ; =0x020EEDBC
+ add r0, r0, r1
+ ldrb r0, [r0, #0x17]
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1c
+ pop {r3, pc}
+ nop
+_02034878: .word 0x020EEDBC
+
+ thumb_func_start FUN_0203487C
+FUN_0203487C: ; 0x0203487C
+ push {r3, lr}
+ bl FUN_02034710
+ mov r1, #0x18
+ mul r1, r0
+ ldr r0, _02034894 ; =0x020EEDBC
+ add r0, r0, r1
+ ldrb r0, [r0, #0x17]
+ lsl r0, r0, #0x19
+ lsr r0, r0, #0x1f
+ pop {r3, pc}
+ nop
+_02034894: .word 0x020EEDBC
+
+ thumb_func_start FUN_02034898
+FUN_02034898: ; 0x02034898
+ push {r3, lr}
+ bl FUN_02034710
+ mov r1, #0x18
+ mul r1, r0
+ ldr r0, _020348B0 ; =0x020EEDBC
+ add r0, r0, r1
+ ldrb r0, [r0, #0x17]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1f
+ pop {r3, pc}
+ nop
+_020348B0: .word 0x020EEDBC
+
+ thumb_func_start FUN_020348B4
+FUN_020348B4: ; 0x020348B4
+ push {r3, lr}
+ bl FUN_02034710
+ mov r1, #0x18
+ mul r1, r0
+ ldr r0, _020348CC ; =0x020EEDBC
+ add r0, r0, r1
+ ldrb r0, [r0, #0x17]
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x1f
+ pop {r3, pc}
+ nop
+_020348CC: .word 0x020EEDBC
+
+ thumb_func_start FUN_020348D0
+FUN_020348D0: ; 0x020348D0
+ push {r3, lr}
+ bl FUN_02034710
+ mov r1, #0x18
+ mul r1, r0
+ ldr r0, _020348E0 ; =0x020EEDD2
+ ldrb r0, [r0, r1]
+ pop {r3, pc}
+ .balign 4
+_020348E0: .word 0x020EEDD2
+
+ thumb_func_start FUN_020348E4
+FUN_020348E4: ; 0x020348E4
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02034898
+ cmp r0, #0x0
+ bne _020348F4
+ mov r0, #0x0
+ pop {r4, pc}
+_020348F4:
+ add r0, r4, #0x0
+ bl FUN_020348D0
+ cmp r0, #0x1
+ beq _02034902
+ mov r0, #0x1
+ pop {r4, pc}
+_02034902:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02034908
+FUN_02034908: ; 0x02034908
+ push {r3, lr}
+ bl FUN_0203474C
+ cmp r0, #0x0
+ bne _02034916
+ mov r0, #0x1
+ pop {r3, pc}
+_02034916:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203491C
+FUN_0203491C: ; 0x0203491C
+ push {r3, lr}
+ bl FUN_020348D0
+ cmp r0, #0x5
+ bne _0203492A
+ mov r0, #0x1
+ pop {r3, pc}
+_0203492A:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02034930
+FUN_02034930: ; 0x02034930
+ push {r3, lr}
+ bl FUN_020348D0
+ cmp r0, #0x3
+ bne _0203493E
+ mov r0, #0x1
+ pop {r3, pc}
+_0203493E:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02034944
+FUN_02034944: ; 0x02034944
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_020348D0
+ cmp r0, #0x4
+ beq _0203495A
+ add r0, r4, #0x0
+ bl FUN_020348D0
+ cmp r0, #0x5
+ bne _0203495E
+_0203495A:
+ mov r0, #0x1
+ pop {r4, pc}
+_0203495E:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02034964
+FUN_02034964: ; 0x02034964
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_020348D0
+ cmp r0, #0x1
+ beq _0203497A
+ add r0, r4, #0x0
+ bl FUN_020348D0
+ cmp r0, #0x2
+ bne _0203497E
+_0203497A:
+ mov r0, #0x1
+ pop {r4, pc}
+_0203497E:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02034984
+FUN_02034984: ; 0x02034984
+ push {r3, lr}
+ bl FUN_0203491C
+ cmp r0, #0x0
+ beq _02034992
+ mov r0, #0x1
+ pop {r3, pc}
+_02034992:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02034998
+FUN_02034998: ; 0x02034998
+ ldr r1, _020349A8 ; =0x000001D2
+ cmp r0, r1
+ bne _020349A2
+ mov r0, #0x1
+ bx lr
+_020349A2:
+ mov r0, #0x0
+ bx lr
+ nop
+_020349A8: .word 0x000001D2
+
+ thumb_func_start FUN_020349AC
+FUN_020349AC: ; 0x020349AC
+ cmp r0, #0xdb
+ bne _020349B4
+ mov r0, #0x1
+ bx lr
+_020349B4:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_020349B8
+FUN_020349B8: ; 0x020349B8
+ ldr r1, _020349C8 ; =0x0000011F
+ cmp r0, r1
+ bne _020349C2
+ mov r0, #0x1
+ bx lr
+_020349C2:
+ mov r0, #0x0
+ bx lr
+ nop
+_020349C8: .word 0x0000011F
+
+ thumb_func_start FUN_020349CC
+FUN_020349CC: ; 0x020349CC
+ cmp r0, #0xfd
+ bne _020349D4
+ mov r0, #0x1
+ bx lr
+_020349D4:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_020349D8
+FUN_020349D8: ; 0x020349D8
+ cmp r0, #0xdc
+ bne _020349E0
+ mov r0, #0x1
+ bx lr
+_020349E0:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_020349E4
+FUN_020349E4: ; 0x020349E4
+ ldr r3, _02034A00 ; =0x020EED54
+ mov r2, #0x0
+_020349E8:
+ ldrh r1, [r3, #0x0]
+ cmp r0, r1
+ bne _020349F2
+ mov r0, #0x1
+ bx lr
+_020349F2:
+ add r2, r2, #0x1
+ add r3, r3, #0x2
+ cmp r2, #0x12
+ blo _020349E8
+ mov r0, #0x0
+ bx lr
+ nop
+_02034A00: .word 0x020EED54
+
+ thumb_func_start FUN_02034A04
+FUN_02034A04: ; 0x02034A04
+ ldr r3, _02034A24 ; =0x020EED78
+ mov r2, #0x0
+_02034A08:
+ ldrh r1, [r3, #0x0]
+ cmp r0, r1
+ bne _02034A18
+ add r0, r2, #0x1
+ lsl r1, r0, #0x1
+ ldr r0, _02034A24 ; =0x020EED78
+ ldrh r0, [r0, r1]
+ bx lr
+_02034A18:
+ add r2, r2, #0x2
+ add r3, r3, #0x4
+ cmp r2, #0x22
+ blo _02034A08
+ mov r0, #0x0
+ bx lr
+ .balign 4
+_02034A24: .word 0x020EED78
+
+ thumb_func_start FUN_02034A28
+FUN_02034A28: ; 0x02034A28
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x14]
+ add r4, r1, #0x0
+ cmp r0, #0x0
+ beq _02034A38
+ bl ErrorHandling
+_02034A38:
+ ldr r1, _02034A44 ; =0x00000AC8
+ add r0, r4, #0x0
+ bl FUN_02016998
+ str r0, [r5, #0x14]
+ pop {r3-r5, pc}
+ .balign 4
+_02034A44: .word 0x00000AC8
+
+ thumb_func_start FUN_02034A48
+FUN_02034A48: ; 0x02034A48
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x14]
+ cmp r0, #0x0
+ bne _02034A56
+ bl ErrorHandling
+_02034A56:
+ ldr r0, [r4, #0x14]
+ bl FUN_02016A18
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02034A60
+FUN_02034A60: ; 0x02034A60
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x14]
+ add r4, r1, #0x0
+ cmp r0, #0x0
+ bne _02034A70
+ bl ErrorHandling
+_02034A70:
+ ldr r0, [r5, #0x14]
+ add r1, r4, #0x0
+ bl FUN_02034A98
+ ldr r0, [r5, #0x14]
+ bl FUN_02034C50
+ mov r0, #0x92
+ ldr r1, [r5, #0x14]
+ lsl r0, r0, #0x4
+ add r0, r1, r0
+ add r1, r4, #0x0
+ bl FUN_02034CB4
+ ldr r0, [r5, #0x14]
+ add r1, r4, #0x0
+ bl FUN_02034CEC
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02034A98
+FUN_02034A98: ; 0x02034A98
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, r1, #0x0
+ bl FUN_02034810
+ add r4, r0, #0x0
+ mov r0, #0x20
+ add r1, r4, #0x0
+ bl LoadFromNARC_7
+ mov r1, #0x2
+ lsl r1, r1, #0xa
+ cmp r0, r1
+ blo _02034AB8
+ bl ErrorHandling
+_02034AB8:
+ add r5, #0x20
+ add r0, r5, #0x0
+ mov r1, #0x20
+ add r2, r4, #0x0
+ bl LoadFromNARC
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02034AC8
+FUN_02034AC8: ; 0x02034AC8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x14]
+ ldr r4, [r0, #0x4]
+ cmp r0, #0x0
+ bne _02034AD8
+ bl ErrorHandling
+_02034AD8:
+ cmp r4, #0x0
+ beq _02034AEC
+ ldr r1, [r5, #0x1c]
+ ldr r3, [r5, #0x14]
+ ldr r0, [r5, #0x34]
+ ldr r1, [r1, #0x0]
+ ldr r3, [r3, #0x14]
+ add r2, r4, #0x0
+ bl FUN_02057BAC
+_02034AEC:
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02034AF0
+FUN_02034AF0: ; 0x02034AF0
+ ldr r0, [r0, #0x14]
+ ldr r0, [r0, #0x10]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02034AF8
+FUN_02034AF8: ; 0x02034AF8
+ ldr r0, [r0, #0x14]
+ ldr r0, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02034B00
+FUN_02034B00: ; 0x02034B00
+ ldr r2, [r0, #0x14]
+ ldr r0, [r2, #0x8]
+ cmp r1, r0
+ blo _02034B0C
+ mov r0, #0x0
+ bx lr
+_02034B0C:
+ mov r0, #0xc
+ ldr r2, [r2, #0x18]
+ mul r0, r1
+ add r0, r2, r0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02034B18
+FUN_02034B18: ; 0x02034B18
+ push {r4-r7}
+ ldr r5, [r0, #0x14]
+ mov r3, #0x0
+ ldr r0, [r5, #0x8]
+ cmp r0, #0x0
+ bls _02034B4A
+ ldr r6, [r5, #0x18]
+ add r4, r3, #0x0
+ add r0, r6, #0x0
+_02034B2A:
+ ldrh r7, [r0, #0x0]
+ cmp r1, r7
+ bne _02034B3E
+ add r7, r6, r4
+ ldrh r7, [r7, #0x2]
+ cmp r2, r7
+ bne _02034B3E
+ add r0, r3, #0x0
+ pop {r4-r7}
+ bx lr
+_02034B3E:
+ ldr r7, [r5, #0x8]
+ add r3, r3, #0x1
+ add r0, #0xc
+ add r4, #0xc
+ cmp r3, r7
+ blo _02034B2A
+_02034B4A:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4-r7}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02034B54
+FUN_02034B54: ; 0x02034B54
+ ldr r0, [r0, #0x14]
+ ldr r0, [r0, #0xc]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02034B5C
+FUN_02034B5C: ; 0x02034B5C
+ ldr r0, [r0, #0x14]
+ ldr r0, [r0, #0x1c]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02034B64
+FUN_02034B64: ; 0x02034B64
+ ldr r0, [r0, #0x14]
+ ldr r0, [r0, #0x4]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02034B6C
+FUN_02034B6C: ; 0x02034B6C
+ ldr r0, [r0, #0x14]
+ ldr r0, [r0, #0x14]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02034B74
+FUN_02034B74: ; 0x02034B74
+ push {r3-r7, lr}
+ ldr r0, [r0, #0x14]
+ add r4, r1, #0x0
+ ldr r5, [r0, #0x4]
+ add r7, r2, #0x0
+ add r1, r3, #0x0
+ mov r2, #0x0
+ ldr r3, [r0, #0x14]
+ cmp r5, #0x0
+ bls _02034BA4
+ add r6, r3, #0x0
+_02034B8A:
+ ldrh r0, [r6, #0x0]
+ cmp r4, r0
+ bne _02034B9C
+ lsl r0, r2, #0x5
+ add r0, r3, r0
+ strh r7, [r0, #0x18]
+ strh r1, [r0, #0x1a]
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02034B9C:
+ add r2, r2, #0x1
+ add r6, #0x20
+ cmp r2, r5
+ blo _02034B8A
+_02034BA4:
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02034BAC
+FUN_02034BAC: ; 0x02034BAC
+ push {r4-r6, lr}
+ ldr r0, [r0, #0x14]
+ mov r3, #0x0
+ ldr r5, [r0, #0x4]
+ ldr r4, [r0, #0x14]
+ cmp r5, #0x0
+ bls _02034BD4
+ add r6, r4, #0x0
+_02034BBC:
+ ldrh r0, [r6, #0x0]
+ cmp r1, r0
+ bne _02034BCC
+ lsl r0, r3, #0x5
+ add r0, r4, r0
+ strh r2, [r0, #0xc]
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_02034BCC:
+ add r3, r3, #0x1
+ add r6, #0x20
+ cmp r3, r5
+ blo _02034BBC
+_02034BD4:
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02034BDC
+FUN_02034BDC: ; 0x02034BDC
+ push {r4-r6, lr}
+ ldr r0, [r0, #0x14]
+ mov r3, #0x0
+ ldr r5, [r0, #0x4]
+ ldr r4, [r0, #0x14]
+ cmp r5, #0x0
+ bls _02034C04
+ add r6, r4, #0x0
+_02034BEC:
+ ldrh r0, [r6, #0x0]
+ cmp r1, r0
+ bne _02034BFC
+ lsl r0, r3, #0x5
+ add r0, r4, r0
+ strh r2, [r0, #0x4]
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_02034BFC:
+ add r3, r3, #0x1
+ add r6, #0x20
+ cmp r3, r5
+ blo _02034BEC
+_02034C04:
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02034C0C
+FUN_02034C0C: ; 0x02034C0C
+ push {r3-r4}
+ ldr r0, [r0, #0x14]
+ ldr r4, [r0, #0x18]
+ mov r0, #0xc
+ mul r0, r1
+ strh r2, [r4, r0]
+ add r0, r4, r0
+ strh r3, [r0, #0x2]
+ mov r0, #0x1
+ pop {r3-r4}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02034C24
+FUN_02034C24: ; 0x02034C24
+ ldr r0, [r0, #0x14]
+ ldr r3, [r0, #0x18]
+ mov r0, #0xc
+ mul r0, r1
+ add r0, r3, r0
+ strh r2, [r0, #0x4]
+ mov r0, #0x1
+ bx lr
+
+ thumb_func_start FUN_02034C34
+FUN_02034C34: ; 0x02034C34
+ push {r4-r6, lr}
+ add r5, r1, #0x0
+ add r4, r2, #0x0
+ add r6, r3, #0x0
+ bl FUN_02034AF0
+ mov r1, #0x14
+ mul r1, r5
+ add r0, r0, r1
+ str r4, [r0, #0x4]
+ str r6, [r0, #0x8]
+ mov r0, #0x1
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02034C50
+FUN_02034C50: ; 0x02034C50
+ add r1, r0, #0x0
+ ldr r2, [r0, #0x20]
+ add r1, #0x20
+ add r1, r1, #0x4
+ str r2, [r0, #0x0]
+ cmp r2, #0x0
+ beq _02034C62
+ str r1, [r0, #0x10]
+ b _02034C66
+_02034C62:
+ mov r2, #0x0
+ str r2, [r0, #0x10]
+_02034C66:
+ ldr r3, [r0, #0x0]
+ mov r2, #0x14
+ mul r2, r3
+ add r3, r1, r2
+ ldr r2, [r1, r2]
+ add r1, r3, #0x4
+ str r2, [r0, #0x4]
+ cmp r2, #0x0
+ beq _02034C7C
+ str r1, [r0, #0x14]
+ b _02034C80
+_02034C7C:
+ mov r2, #0x0
+ str r2, [r0, #0x14]
+_02034C80:
+ ldr r2, [r0, #0x4]
+ lsl r2, r2, #0x5
+ add r3, r1, r2
+ ldr r2, [r1, r2]
+ add r1, r3, #0x4
+ str r2, [r0, #0x8]
+ cmp r2, #0x0
+ beq _02034C94
+ str r1, [r0, #0x18]
+ b _02034C98
+_02034C94:
+ mov r2, #0x0
+ str r2, [r0, #0x18]
+_02034C98:
+ ldr r3, [r0, #0x8]
+ mov r2, #0xc
+ mul r2, r3
+ add r3, r1, r2
+ ldr r1, [r1, r2]
+ str r1, [r0, #0xc]
+ cmp r1, #0x0
+ beq _02034CAE
+ add r1, r3, #0x4
+ str r1, [r0, #0x1c]
+ bx lr
+_02034CAE:
+ mov r1, #0x0
+ str r1, [r0, #0x1c]
+ bx lr
+
+ thumb_func_start FUN_02034CB4
+FUN_02034CB4: ; 0x02034CB4
+ push {r3-r5, lr}
+ mov r2, #0x6a
+ add r4, r1, #0x0
+ mov r1, #0x0
+ lsl r2, r2, #0x2
+ add r5, r0, #0x0
+ blx FUN_020DF4A4
+ add r0, r4, #0x0
+ bl FUN_020347D8
+ cmp r0, #0x0
+ beq _02034CDE
+ add r0, r4, #0x0
+ bl FUN_020347FC
+ add r2, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x25
+ bl LoadFromNARC
+_02034CDE:
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02034CE0
+FUN_02034CE0: ; 0x02034CE0
+ ldr r1, [r0, #0x14]
+ mov r0, #0x92
+ lsl r0, r0, #0x4
+ add r0, r1, r0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02034CEC
+FUN_02034CEC: ; 0x02034CEC
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, r1, #0x0
+ bl FUN_0203479C
+ mov r1, #0x82
+ lsl r1, r1, #0x4
+ mov r2, #0x1
+ add r4, r0, #0x0
+ mov r0, #0x0
+ add r1, r5, r1
+ lsl r2, r2, #0x8
+ blx MIi_CpuClearFast
+ mov r0, #0xa
+ add r1, r4, #0x0
+ bl LoadFromNARC_7
+ mov r1, #0x1
+ lsl r1, r1, #0x8
+ cmp r0, r1
+ blo _02034D1C
+ bl ErrorHandling
+_02034D1C:
+ mov r0, #0x82
+ lsl r0, r0, #0x4
+ add r0, r5, r0
+ mov r1, #0xa
+ add r2, r4, #0x0
+ bl LoadFromNARC
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02034D2C
+FUN_02034D2C: ; 0x02034D2C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x14]
+ cmp r0, #0x0
+ bne _02034D3A
+ bl ErrorHandling
+_02034D3A:
+ mov r0, #0x82
+ ldr r1, [r4, #0x14]
+ lsl r0, r0, #0x4
+ add r0, r1, r0
+ pop {r4, pc}
+
+ thumb_func_start FUN_02034D44
+FUN_02034D44: ; 0x02034D44
+ push {r4-r7}
+ ldr r0, [r0, #0x14]
+ mov r3, #0x0
+ ldr r4, [r0, #0x4]
+ cmp r4, #0x0
+ bls _02034D76
+ ldr r6, [r0, #0x14]
+ add r5, r3, #0x0
+ add r4, r6, #0x0
+_02034D56:
+ ldrh r7, [r4, #0x18]
+ cmp r1, r7
+ bne _02034D6A
+ add r7, r6, r5
+ ldrh r7, [r7, #0x1a]
+ cmp r2, r7
+ bne _02034D6A
+ mov r0, #0x0
+ pop {r4-r7}
+ bx lr
+_02034D6A:
+ ldr r7, [r0, #0x4]
+ add r3, r3, #0x1
+ add r4, #0x20
+ add r5, #0x20
+ cmp r3, r7
+ blo _02034D56
+_02034D76:
+ mov r0, #0x1
+ pop {r4-r7}
+ bx lr
+
+ thumb_func_start FUN_02034D7C
+FUN_02034D7C: ; 0x02034D7C
+ mov r0, #0xa0
+ bx lr
+
+ thumb_func_start FUN_02034D80
+FUN_02034D80: ; 0x02034D80
+ mov r0, #0x5
+ lsl r0, r0, #0xa
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02034D88
+FUN_02034D88: ; 0x02034D88
+ ldr r3, _02034D94 ; =MIi_CpuClear32
+ mov r2, #0x5
+ add r1, r0, #0x0
+ mov r0, #0x0
+ lsl r2, r2, #0xa
+ bx r3
+ .balign 4
+_02034D94: .word MIi_CpuClear32
+
+ thumb_func_start FUN_02034D98
+FUN_02034D98: ; 0x02034D98
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r1, #0x0
+ mov r2, #0xa0
+ blx FUN_020DF4A4
+ add r0, r4, #0x0
+ add r0, #0x6c
+ bl FUN_0204ADE0
+ add r0, r4, #0x0
+ add r0, #0x8c
+ bl FUN_02055468
+ bl FUN_02034E8C
+ add r4, #0x68
+ strh r0, [r4, #0x0]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02034DC0
+FUN_02034DC0: ; 0x02034DC0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02034DC4
+FUN_02034DC4: ; 0x02034DC4
+ add r0, #0x14
+ bx lr
+
+ thumb_func_start FUN_02034DC8
+FUN_02034DC8: ; 0x02034DC8
+ add r0, #0x28
+ bx lr
+
+ thumb_func_start FUN_02034DCC
+FUN_02034DCC: ; 0x02034DCC
+ add r0, #0x50
+ bx lr
+
+ thumb_func_start FUN_02034DD0
+FUN_02034DD0: ; 0x02034DD0
+ add r0, #0x3c
+ bx lr
+
+ thumb_func_start FUN_02034DD4
+FUN_02034DD4: ; 0x02034DD4
+ add r3, r1, #0x0
+ add r2, r0, #0x0
+ ldmia r3!, {r0-r1}
+ add r2, #0x3c
+ stmia r2!, {r0-r1}
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldr r0, [r3, #0x0]
+ str r0, [r2, #0x0]
+ bx lr
+
+ thumb_func_start FUN_02034DE8
+FUN_02034DE8: ; 0x02034DE8
+ add r0, #0x64
+ bx lr
+
+ thumb_func_start FUN_02034DEC
+FUN_02034DEC: ; 0x02034DEC
+ add r0, #0x66
+ ldrh r0, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02034DF4
+FUN_02034DF4: ; 0x02034DF4
+ add r0, #0x66
+ strh r1, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02034DFC
+FUN_02034DFC: ; 0x02034DFC
+ add r0, #0x68
+ ldrh r0, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02034E04
+FUN_02034E04: ; 0x02034E04
+ add r0, #0x68
+ strh r1, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02034E0C
+FUN_02034E0C: ; 0x02034E0C
+ add r0, #0x6c
+ bx lr
+
+ thumb_func_start FUN_02034E10
+FUN_02034E10: ; 0x02034E10
+ add r0, #0x6a
+ ldrb r0, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02034E18
+FUN_02034E18: ; 0x02034E18
+ add r0, #0x6a
+ strb r1, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02034E20
+FUN_02034E20: ; 0x02034E20
+ add r0, #0x8c
+ bx lr
+
+ thumb_func_start FUN_02034E24
+FUN_02034E24: ; 0x02034E24
+ add r0, #0x98
+ bx lr
+
+ thumb_func_start FUN_02034E28
+FUN_02034E28: ; 0x02034E28
+ add r0, #0x96
+ bx lr
+
+ thumb_func_start FUN_02034E2C
+FUN_02034E2C: ; 0x02034E2C
+ add r0, #0x94
+ bx lr
+
+ thumb_func_start FUN_02034E30
+FUN_02034E30: ; 0x02034E30
+ ldr r3, _02034E38 ; =FUN_02022610
+ mov r1, #0x6
+ bx r3
+ nop
+_02034E38: .word FUN_02022610
+
+ thumb_func_start FUN_02034E3C
+FUN_02034E3C: ; 0x02034E3C
+ ldr r3, _02034E44 ; =FUN_02022610
+ mov r1, #0xb
+ bx r3
+ nop
+_02034E44: .word FUN_02022610
+
+ thumb_func_start FUN_02034E48
+FUN_02034E48: ; 0x02034E48
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0xc]
+ bl FUN_02034E3C
+ add r2, r0, #0x0
+ ldr r1, [r4, #0x34]
+ add r0, r4, #0x0
+ mov r3, #0x40
+ bl FUN_02057800
+ pop {r4, pc}
+
+ thumb_func_start FUN_02034E60
+FUN_02034E60: ; 0x02034E60
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0xc]
+ bl FUN_02034E3C
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x34]
+ mov r2, #0x40
+ bl FUN_0205785C
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02034E78
+FUN_02034E78: ; 0x02034E78
+ push {r3, lr}
+ cmp r0, #0x0
+ ble _02034E82
+ cmp r0, #0x14
+ bls _02034E88
+_02034E82:
+ bl ErrorHandling
+ mov r0, #0x1
+_02034E88:
+ sub r0, r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_02034E8C
+FUN_02034E8C: ; 0x02034E8C
+ mov r0, #0x1
+ bx lr
+
+ thumb_func_start FUN_02034E90
+FUN_02034E90: ; 0x02034E90
+ push {r4, lr}
+ add r4, r1, #0x0
+ bl FUN_02034E78
+ lsl r1, r0, #0x4
+ ldr r0, _02034EB8 ; =0x020F222A
+ ldrh r0, [r0, r1]
+ str r0, [r4, #0x0]
+ mov r0, #0x0
+ mvn r0, r0
+ str r0, [r4, #0x4]
+ ldr r0, _02034EBC ; =0x020F222C
+ ldrh r0, [r0, r1]
+ str r0, [r4, #0x8]
+ ldr r0, _02034EC0 ; =0x020F222E
+ ldrh r0, [r0, r1]
+ str r0, [r4, #0xc]
+ mov r0, #0x1
+ str r0, [r4, #0x10]
+ pop {r4, pc}
+ .balign 4
+_02034EB8: .word 0x020F222A
+_02034EBC: .word 0x020F222C
+_02034EC0: .word 0x020F222E
+
+ thumb_func_start FUN_02034EC4
+FUN_02034EC4: ; 0x02034EC4
+ push {r4, lr}
+ add r4, r1, #0x0
+ bl FUN_02034E78
+ lsl r1, r0, #0x4
+ ldr r0, _02034EEC ; =0x020F2224
+ ldrh r0, [r0, r1]
+ str r0, [r4, #0x0]
+ mov r0, #0x0
+ mvn r0, r0
+ str r0, [r4, #0x4]
+ ldr r0, _02034EF0 ; =0x020F2226
+ ldrh r0, [r0, r1]
+ str r0, [r4, #0x8]
+ ldr r0, _02034EF4 ; =0x020F2228
+ ldrh r0, [r0, r1]
+ str r0, [r4, #0xc]
+ mov r0, #0x0
+ str r0, [r4, #0x10]
+ pop {r4, pc}
+ .balign 4
+_02034EEC: .word 0x020F2224
+_02034EF0: .word 0x020F2226
+_02034EF4: .word 0x020F2228
+
+ thumb_func_start FUN_02034EF8
+FUN_02034EF8: ; 0x02034EF8
+ ldr r3, _02034F18 ; =0x020F2224
+ mov r2, #0x0
+_02034EFC:
+ ldrh r1, [r3, #0x0]
+ cmp r0, r1
+ bne _02034F0C
+ ldrb r1, [r3, #0xc]
+ cmp r1, #0x0
+ beq _02034F0C
+ add r0, r2, #0x1
+ bx lr
+_02034F0C:
+ add r2, r2, #0x1
+ add r3, #0x10
+ cmp r2, #0x14
+ blo _02034EFC
+ mov r0, #0x0
+ bx lr
+ .balign 4
+_02034F18: .word 0x020F2224
+
+ thumb_func_start FUN_02034F1C
+FUN_02034F1C: ; 0x02034F1C
+ ldr r3, _02034F3C ; =0x020F2224
+ mov r2, #0x0
+_02034F20:
+ ldrh r1, [r3, #0x6]
+ cmp r0, r1
+ bne _02034F30
+ ldrb r1, [r3, #0xc]
+ cmp r1, #0x0
+ beq _02034F30
+ add r0, r2, #0x1
+ bx lr
+_02034F30:
+ add r2, r2, #0x1
+ add r3, #0x10
+ cmp r2, #0x14
+ blo _02034F20
+ mov r0, #0x0
+ bx lr
+ .balign 4
+_02034F3C: .word 0x020F2224
+
+ thumb_func_start FUN_02034F40
+FUN_02034F40: ; 0x02034F40
+ push {r3-r6}
+ asr r3, r1, #0x4
+ lsr r3, r3, #0x1b
+ add r3, r1, r3
+ asr r1, r2, #0x4
+ lsr r1, r1, #0x1b
+ add r1, r2, r1
+ mov r4, #0x0
+ asr r2, r1, #0x5
+ ldr r5, _02034F84 ; =0x020F2224
+ asr r3, r3, #0x5
+ add r1, r4, #0x0
+_02034F58:
+ ldrh r6, [r5, #0x6]
+ cmp r0, r6
+ bne _02034F76
+ ldrh r6, [r5, #0x8]
+ add r4, r1, #0x1
+ lsr r6, r6, #0x5
+ cmp r3, r6
+ bne _02034F76
+ ldrh r6, [r5, #0xa]
+ lsr r6, r6, #0x5
+ cmp r2, r6
+ bne _02034F76
+ add r0, r4, #0x0
+ pop {r3-r6}
+ bx lr
+_02034F76:
+ add r1, r1, #0x1
+ add r5, #0x10
+ cmp r1, #0x14
+ blo _02034F58
+ add r0, r4, #0x0
+ pop {r3-r6}
+ bx lr
+ .balign 4
+_02034F84: .word 0x020F2224
+
+ thumb_func_start FUN_02034F88
+FUN_02034F88: ; 0x02034F88
+ push {r4, lr}
+ ldr r3, _02034FB8 ; =0x020F2224
+ mov r4, #0x0
+_02034F8E:
+ ldrh r2, [r3, #0x6]
+ cmp r1, r2
+ bne _02034FAE
+ ldrb r2, [r3, #0xd]
+ cmp r2, #0x0
+ beq _02034FAE
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ ldr r2, _02034FBC ; =0x020F2232
+ lsl r3, r4, #0x4
+ ldrh r2, [r2, r3]
+ mov r1, #0x1
+ bl FUN_0205F2E4
+ pop {r4, pc}
+_02034FAE:
+ add r4, r4, #0x1
+ add r3, #0x10
+ cmp r4, #0x14
+ blo _02034F8E
+ pop {r4, pc}
+ .balign 4
+_02034FB8: .word 0x020F2224
+_02034FBC: .word 0x020F2232
+
+ thumb_func_start FUN_02034FC0
+FUN_02034FC0: ; 0x02034FC0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, r1, #0x0
+ bl FUN_02034E78
+ add r4, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_020462AC
+ ldr r2, _02034FE0 ; =0x020F2232
+ lsl r3, r4, #0x4
+ ldrh r2, [r2, r3]
+ mov r1, #0x2
+ bl FUN_0205F2E4
+ pop {r3-r5, pc}
+ .balign 4
+_02034FE0: .word 0x020F2232
+
+ thumb_func_start FUN_02034FE4
+FUN_02034FE4: ; 0x02034FE4
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ add r0, r1, #0x0
+ bl FUN_02034838
+ add r4, r0, #0x0
+ cmp r4, #0x18
+ blt _0203505C
+ ldr r0, [r7, #0xc]
+ bl FUN_02023794
+ add r6, r0, #0x0
+ add r0, r6, #0x4
+ bl FUN_02012710
+ sub r5, r0, #0x1
+ bmi _0203500C
+ ldr r0, _02035060 ; =0x0000016E
+ cmp r5, r0
+ blt _02035010
+_0203500C:
+ bl ErrorHandling
+_02035010:
+ ldr r0, [r6, #0x8]
+ cmp r0, #0x2
+ bls _02035044
+ ldr r6, [r6, #0x4]
+ mov r0, #0x3
+ tst r0, r6
+ bne _0203502A
+ add r0, r6, #0x0
+ mov r1, #0x64
+ blx _u32_div_f
+ cmp r1, #0x0
+ bne _02035038
+_0203502A:
+ mov r1, #0x19
+ add r0, r6, #0x0
+ lsl r1, r1, #0x4
+ blx _u32_div_f
+ cmp r1, #0x0
+ bne _0203503C
+_02035038:
+ mov r0, #0x1
+ b _0203503E
+_0203503C:
+ mov r0, #0x0
+_0203503E:
+ cmp r0, #0x0
+ bne _02035044
+ add r5, r5, #0x1
+_02035044:
+ add r0, r7, #0x0
+ bl FUN_0204B33C
+ cmp r0, #0x0
+ beq _02035050
+ mov r5, #0x1
+_02035050:
+ lsl r0, r5, #0x2
+ sub r4, #0x18
+ add r0, r5, r0
+ add r1, r4, r0
+ ldr r0, _02035064 ; =0x020F2364
+ ldrb r0, [r0, r1]
+_0203505C:
+ pop {r3-r7, pc}
+ nop
+_02035060: .word 0x0000016E
+_02035064: .word 0x020F2364
+
+ thumb_func_start FUN_02035068
+FUN_02035068: ; 0x02035068
+ push {r3, lr}
+ ldr r0, [r0, #0x1c]
+ ldr r0, [r0, #0x0]
+ bl FUN_02034824
+ cmp r0, #0x0
+ beq _0203507A
+ mov r0, #0x1
+ pop {r3, pc}
+_0203507A:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02035080
+FUN_02035080: ; 0x02035080
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_02035254
+ add r4, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205F214
+ cmp r0, #0x1
+ bne _020350A6
+ add r0, r5, #0x0
+ bl FUN_020352C4
+ mov r1, #0x7
+ lsl r1, r1, #0x6
+ str r0, [r4, r1]
+ b _020350E6
+_020350A6:
+ ldr r0, [r5, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205F244
+ cmp r0, #0x1
+ bne _020350C2
+ add r0, r5, #0x0
+ bl FUN_020352C8
+ mov r1, #0x7
+ lsl r1, r1, #0x6
+ str r0, [r4, r1]
+ b _020350E6
+_020350C2:
+ add r0, r5, #0x0
+ bl FUN_02060144
+ cmp r0, #0x1
+ bne _020350DA
+ add r0, r5, #0x0
+ bl FUN_020352CC
+ mov r1, #0x7
+ lsl r1, r1, #0x6
+ str r0, [r4, r1]
+ b _020350E6
+_020350DA:
+ add r0, r5, #0x0
+ bl FUN_02035270
+ mov r1, #0x7
+ lsl r1, r1, #0x6
+ str r0, [r4, r1]
+_020350E6:
+ mov r0, #0x71
+ mov r1, #0x0
+ lsl r0, r0, #0x2
+ str r1, [r4, r0]
+ ldr r0, [r5, #0x38]
+ bl FUN_02055B30
+ cmp r0, #0x1
+ bne _02035106
+ ldr r0, [r5, #0x38]
+ bl FUN_020552F8
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x38]
+ bl FUN_02055B8C
+_02035106:
+ ldr r1, _02035114 ; =FUN_020352E4
+ add r0, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_020463CC
+ pop {r3-r5, pc}
+ nop
+_02035114: .word FUN_020352E4
+
+ thumb_func_start FUN_02035118
+FUN_02035118: ; 0x02035118
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_02035254
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_020352D4
+ mov r1, #0x7
+ lsl r1, r1, #0x6
+ str r0, [r4, r1]
+ mov r2, #0x1
+ add r0, r1, #0x4
+ str r2, [r4, r0]
+ ldr r0, [r5, #0x38]
+ bl FUN_02055B30
+ cmp r0, #0x1
+ bne _0203514C
+ ldr r0, [r5, #0x38]
+ bl FUN_020552F8
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x38]
+ bl FUN_02055B8C
+_0203514C:
+ ldr r1, _02035158 ; =FUN_020352E4
+ add r0, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_020463CC
+ pop {r3-r5, pc}
+ .balign 4
+_02035158: .word FUN_020352E4
+
+ thumb_func_start FUN_0203515C
+FUN_0203515C: ; 0x0203515C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_02035254
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_020352DC
+ mov r1, #0x7
+ lsl r1, r1, #0x6
+ str r0, [r4, r1]
+ mov r2, #0x0
+ add r0, r1, #0x4
+ str r2, [r4, r0]
+ ldr r0, [r5, #0x38]
+ bl FUN_02055B30
+ cmp r0, #0x1
+ bne _02035190
+ ldr r0, [r5, #0x38]
+ bl FUN_020552F8
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x38]
+ bl FUN_02055B8C
+_02035190:
+ ldr r1, _0203519C ; =FUN_020352E4
+ add r0, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_020463CC
+ pop {r3-r5, pc}
+ .balign 4
+_0203519C: .word FUN_020352E4
+
+ thumb_func_start FUN_020351A0
+FUN_020351A0: ; 0x020351A0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, _0203524C ; =0x000005FD
+ bl FUN_020054C8
+ bl FUN_02035254
+ add r4, r0, #0x0
+ mov r0, #0x71
+ mov r1, #0x0
+ lsl r0, r0, #0x2
+ str r1, [r4, r0]
+ ldr r0, [r5, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205F214
+ cmp r0, #0x1
+ bne _020351D4
+ add r0, r5, #0x0
+ bl FUN_020352C4
+ mov r1, #0x7
+ lsl r1, r1, #0x6
+ str r0, [r4, r1]
+ b _02035240
+_020351D4:
+ ldr r0, [r5, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205F244
+ cmp r0, #0x1
+ bne _020351F0
+ add r0, r5, #0x0
+ bl FUN_020352C8
+ mov r1, #0x7
+ lsl r1, r1, #0x6
+ str r0, [r4, r1]
+ b _02035240
+_020351F0:
+ add r0, r5, #0x0
+ bl FUN_02060144
+ cmp r0, #0x1
+ bne _02035208
+ add r0, r5, #0x0
+ bl FUN_020352CC
+ mov r1, #0x7
+ lsl r1, r1, #0x6
+ str r0, [r4, r1]
+ b _02035240
+_02035208:
+ ldr r0, [r5, #0x6c]
+ cmp r0, #0x3
+ bne _0203521C
+ add r0, r5, #0x0
+ bl FUN_020352DC
+ mov r1, #0x7
+ lsl r1, r1, #0x6
+ str r0, [r4, r1]
+ b _02035240
+_0203521C:
+ cmp r0, #0x2
+ bne _02035234
+ add r0, r5, #0x0
+ bl FUN_020352D4
+ mov r1, #0x7
+ lsl r1, r1, #0x6
+ str r0, [r4, r1]
+ mov r2, #0x1
+ add r0, r1, #0x4
+ str r2, [r4, r0]
+ b _02035240
+_02035234:
+ add r0, r5, #0x0
+ bl FUN_02035270
+ mov r1, #0x7
+ lsl r1, r1, #0x6
+ str r0, [r4, r1]
+_02035240:
+ ldr r0, [r5, #0x10]
+ ldr r1, _02035250 ; =FUN_020352E4
+ add r2, r4, #0x0
+ bl FUN_020463EC
+ pop {r3-r5, pc}
+ .balign 4
+_0203524C: .word 0x000005FD
+_02035250: .word FUN_020352E4
+
+ thumb_func_start FUN_02035254
+FUN_02035254: ; 0x02035254
+ push {r3, lr}
+ mov r1, #0x2
+ mov r0, #0xb
+ lsl r1, r1, #0x8
+ bl FUN_02016998
+ mov r2, #0x0
+ strh r2, [r0, #0x2a]
+ mov r1, #0x7e
+ strh r2, [r0, #0x28]
+ lsl r1, r1, #0x2
+ str r2, [r0, r1]
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02035270
+FUN_02035270: ; 0x02035270
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0xc]
+ mov r4, #0x0
+ bl FUN_02024DA0
+ bl FUN_02024D64
+ cmp r0, #0x0
+ bne _02035288
+ mov r0, #0x1
+ orr r4, r0
+_02035288:
+ ldr r0, [r5, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205F388
+ cmp r0, #0x0
+ bne _0203529A
+ mov r0, #0x2
+ orr r4, r0
+_0203529A:
+ ldr r0, [r5, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205ECE0
+ cmp r0, #0x0
+ bne _020352AC
+ mov r0, #0x4
+ orr r4, r0
+_020352AC:
+ ldr r0, [r5, #0x1c]
+ ldr r0, [r0, #0x0]
+ bl FUN_020349CC
+ cmp r0, #0x1
+ bne _020352BC
+ mov r0, #0x6
+ orr r4, r0
+_020352BC:
+ mov r0, #0x6
+ lsl r0, r0, #0x6
+ orr r0, r4
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_020352C4
+FUN_020352C4: ; 0x020352C4
+ mov r0, #0x90
+ bx lr
+
+ thumb_func_start FUN_020352C8
+FUN_020352C8: ; 0x020352C8
+ mov r0, #0x94
+ bx lr
+
+ thumb_func_start FUN_020352CC
+FUN_020352CC: ; 0x020352CC
+ ldr r0, _020352D0 ; =0x00000195
+ bx lr
+ .balign 4
+_020352D0: .word 0x00000195
+
+ thumb_func_start FUN_020352D4
+FUN_020352D4: ; 0x020352D4
+ mov r0, #0x11
+ lsl r0, r0, #0x4
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020352DC
+FUN_020352DC: ; 0x020352DC
+ ldr r0, _020352E0 ; =0x00000191
+ bx lr
+ .balign 4
+_020352E0: .word 0x00000191
+
+ thumb_func_start FUN_020352E4
+FUN_020352E4: ; 0x020352E4
+ push {r4-r6, lr}
+ add r6, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldrh r1, [r4, #0x2a]
+ cmp r1, #0xf
+ bhi _02035362
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02035308: ; jump table (using 16-bit offset)
+ .short _02035328 - _02035308 - 2; case 0
+ .short _02035358 - _02035308 - 2; case 1
+ .short _02035368 - _02035308 - 2; case 2
+ .short _02035370 - _02035308 - 2; case 3
+ .short _02035378 - _02035308 - 2; case 4
+ .short _02035380 - _02035308 - 2; case 5
+ .short _02035388 - _02035308 - 2; case 6
+ .short _02035390 - _02035308 - 2; case 7
+ .short _020353C0 - _02035308 - 2; case 8
+ .short _020353D6 - _02035308 - 2; case 9
+ .short _020353F6 - _02035308 - 2; case 10
+ .short _02035412 - _02035308 - 2; case 11
+ .short _02035398 - _02035308 - 2; case 12
+ .short _02035440 - _02035308 - 2; case 13
+ .short _02035478 - _02035308 - 2; case 14
+ .short _02035432 - _02035308 - 2; case 15
+_02035328:
+ ldr r0, [r5, #0x34]
+ bl FUN_02058780
+ mov r1, #0x73
+ lsl r1, r1, #0x2
+ add r0, r5, #0x0
+ add r1, r4, r1
+ bl FUN_0205CE80
+ mov r1, #0x7a
+ lsl r1, r1, #0x2
+ add r0, r5, #0x0
+ add r1, r4, r1
+ bl FUN_02063964
+ add r0, r6, #0x0
+ bl FUN_0203549C
+ add r0, r6, #0x0
+ bl FUN_02035734
+ mov r0, #0x1
+ strh r0, [r4, #0x2a]
+ b _02035484
+_02035358:
+ add r0, r6, #0x0
+ bl FUN_020358E4
+ cmp r0, #0x0
+ beq _02035364
+_02035362:
+ b _02035484
+_02035364:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_02035368:
+ add r0, r6, #0x0
+ bl FUN_02035CA0
+ b _02035484
+_02035370:
+ add r0, r6, #0x0
+ bl FUN_02035CDC
+ b _02035484
+_02035378:
+ add r0, r6, #0x0
+ bl FUN_020365F0
+ b _02035484
+_02035380:
+ add r0, r6, #0x0
+ bl FUN_02036644
+ b _02035484
+_02035388:
+ add r0, r6, #0x0
+ bl FUN_02036E08
+ b _02035484
+_02035390:
+ add r0, r6, #0x0
+ bl FUN_02036F1C
+ b _02035484
+_02035398:
+ add r0, r5, #0x0
+ bl FUN_020464A4
+ cmp r0, #0x0
+ beq _02035484
+ ldr r0, [r5, #0x34]
+ bl FUN_02058780
+ add r0, r6, #0x0
+ bl FUN_0203549C
+ add r0, r6, #0x0
+ bl FUN_02035734
+ mov r0, #0x1
+ bl FUN_021D7CA4
+ mov r0, #0xe
+ strh r0, [r4, #0x2a]
+ b _02035484
+_020353C0:
+ add r0, r5, #0x0
+ bl FUN_020464A4
+ cmp r0, #0x0
+ beq _02035484
+ mov r0, #0x1
+ bl FUN_021D7CA4
+ mov r0, #0x9
+ strh r0, [r4, #0x2a]
+ b _02035484
+_020353D6:
+ bl FUN_0200E308
+ cmp r0, #0x0
+ beq _02035484
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ bl FUN_0203598C
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ ldr r0, [r5, #0x34]
+ bl FUN_020587B0
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_020353F6:
+ add r0, r5, #0x0
+ bl FUN_020464A4
+ cmp r0, #0x0
+ beq _02035484
+ ldr r0, [r5, #0x34]
+ bl FUN_02058780
+ mov r0, #0x1
+ bl FUN_021D7CA4
+ mov r0, #0xb
+ strh r0, [r4, #0x2a]
+ b _02035484
+_02035412:
+ bl FUN_0200E308
+ cmp r0, #0x0
+ beq _02035484
+ mov r2, #0x72
+ lsl r2, r2, #0x2
+ ldr r1, [r4, r2]
+ add r2, #0x30
+ ldr r2, [r4, r2]
+ add r0, r6, #0x0
+ bl FUN_020463EC
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ b _02035484
+_02035432:
+ bl FUN_02016A18
+ ldr r0, [r5, #0x34]
+ bl FUN_020587B0
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_02035440:
+ add r1, r5, #0x0
+ bl FUN_0203598C
+ add r0, r4, #0x0
+ bl FUN_02035718
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_0200CCF8
+ add r0, r4, #0x0
+ bl FUN_02019178
+ add r0, r6, #0x0
+ bl FUN_020358A0
+ ldr r0, [r5, #0x8]
+ mov r1, #0x3
+ bl FUN_0201AC68
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ ldr r0, [r5, #0x34]
+ bl FUN_020587B0
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_02035478:
+ bl FUN_0200E308
+ cmp r0, #0x0
+ beq _02035484
+ mov r0, #0x1
+ strh r0, [r4, #0x2a]
+_02035484:
+ ldr r0, [r4, #0x20]
+ cmp r0, #0x0
+ beq _02035496
+ add r0, r4, #0x0
+ bl FUN_02035BB0
+ ldr r0, [r4, #0x38]
+ bl FUN_0201FDEC
+_02035496:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203549C
+FUN_0203549C: ; 0x0203549C
+ push {r3-r7, lr}
+ sub sp, #0x30
+ add r4, r0, #0x0
+ bl FUN_02046528
+ str r0, [sp, #0x1c]
+ add r0, r4, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ add r1, r4, #0x0
+ add r1, #0x30
+ bl FUN_0203566C
+ str r0, [sp, #0x14]
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ mov r0, #0xb
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x14]
+ mov r2, #0x3
+ lsl r1, r0, #0x1
+ add r0, r0, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x8]
+ mov r0, #0xc
+ str r0, [sp, #0xc]
+ ldr r0, _02035658 ; =0x0000023B
+ add r1, r4, #0x0
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x1c]
+ mov r3, #0x14
+ ldr r0, [r0, #0x8]
+ bl FUN_02019064
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ mov r3, #0xb
+ ldr r0, [sp, #0x1c]
+ str r3, [sp, #0x4]
+ ldr r0, [r0, #0x8]
+ ldr r2, _0203565C ; =0x000003D9
+ mov r1, #0x3
+ bl FUN_0200CB00
+ ldr r2, _0203565C ; =0x000003D9
+ add r0, r4, #0x0
+ mov r1, #0x1
+ mov r3, #0xb
+ bl FUN_0200CCA4
+ ldr r2, _02035660 ; =0x00000143
+ mov r0, #0x0
+ mov r1, #0x1a
+ mov r3, #0xb
+ bl FUN_0200A86C
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x14]
+ mov r1, #0xb
+ bl FUN_02012838
+ str r0, [r4, #0x24]
+ mov r5, #0x0
+ ldr r0, [sp, #0x14]
+ strh r5, [r4, #0x28]
+ cmp r0, #0x0
+ bls _020355BC
+_02035526:
+ add r0, r4, r5
+ add r0, #0x30
+ ldrb r3, [r0, #0x0]
+ cmp r3, #0x3
+ bne _02035594
+ mov r0, #0xb
+ bl FUN_0200AA80
+ add r6, r0, #0x0
+ mov r0, #0x8
+ mov r1, #0xb
+ bl FUN_020219F4
+ add r1, r4, r5
+ add r1, #0x30
+ ldrb r1, [r1, #0x0]
+ add r7, r0, #0x0
+ ldr r0, [sp, #0x18]
+ lsl r2, r1, #0x3
+ ldr r1, _02035664 ; =0x020F2ACC
+ ldr r1, [r1, r2]
+ bl FUN_0200A914
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x1c]
+ ldr r0, [r0, #0xc]
+ bl FUN_020238F4
+ add r2, r0, #0x0
+ add r0, r6, #0x0
+ mov r1, #0x0
+ bl FUN_0200ABC0
+ ldr r2, [sp, #0x20]
+ add r0, r6, #0x0
+ add r1, r7, #0x0
+ bl FUN_0200B7B8
+ add r2, r4, r5
+ add r2, #0x30
+ ldrb r2, [r2, #0x0]
+ ldr r0, [r4, #0x24]
+ add r1, r7, #0x0
+ bl FUN_020128A0
+ ldr r0, [sp, #0x20]
+ bl FUN_02021A20
+ add r0, r7, #0x0
+ bl FUN_02021A20
+ add r0, r6, #0x0
+ bl FUN_0200AB18
+ b _020355A2
+_02035594:
+ ldr r2, _02035664 ; =0x020F2ACC
+ lsl r6, r3, #0x3
+ ldr r0, [r4, #0x24]
+ ldr r1, [sp, #0x18]
+ ldr r2, [r2, r6]
+ bl FUN_02012880
+_020355A2:
+ ldr r0, [sp, #0x1c]
+ add r0, #0x8c
+ ldr r1, [r0, #0x0]
+ add r0, r4, r5
+ add r0, #0x30
+ ldrb r0, [r0, #0x0]
+ cmp r1, r0
+ bne _020355B4
+ strh r5, [r4, #0x28]
+_020355B4:
+ ldr r0, [sp, #0x14]
+ add r5, r5, #0x1
+ cmp r5, r0
+ blo _02035526
+_020355BC:
+ ldrh r0, [r4, #0x28]
+ add r0, r4, r0
+ add r0, #0x30
+ ldrb r1, [r0, #0x0]
+ ldr r0, [sp, #0x1c]
+ add r0, #0x8c
+ str r1, [r0, #0x0]
+ ldr r0, [sp, #0x18]
+ bl FUN_0200A8B8
+ ldr r0, [r4, #0x24]
+ mov r1, #0x1
+ str r0, [sp, #0x24]
+ str r4, [sp, #0x28]
+ add r0, sp, #0x24
+ strb r1, [r0, #0x8]
+ strb r1, [r0, #0x9]
+ ldr r1, [sp, #0x14]
+ strb r1, [r0, #0xa]
+ ldrb r2, [r0, #0xb]
+ mov r1, #0xf
+ bic r2, r1
+ mov r1, #0x8
+ orr r1, r2
+ strb r1, [r0, #0xb]
+ ldrb r2, [r0, #0xb]
+ mov r1, #0x30
+ bic r2, r1
+ mov r1, #0x10
+ orr r1, r2
+ strb r1, [r0, #0xb]
+ ldr r1, [sp, #0x14]
+ ldrb r2, [r0, #0xb]
+ cmp r1, #0x4
+ blo _0203560E
+ mov r1, #0xc0
+ bic r2, r1
+ mov r1, #0x40
+ orr r1, r2
+ strb r1, [r0, #0xb]
+ b _02035614
+_0203560E:
+ mov r1, #0xc0
+ bic r2, r1
+ strb r2, [r0, #0xb]
+_02035614:
+ mov r0, #0xb
+ str r0, [sp, #0x0]
+ ldr r0, _02035668 ; =0x00000402
+ mov r1, #0x1c
+ str r0, [sp, #0x4]
+ ldrh r3, [r4, #0x28]
+ add r0, sp, #0x24
+ mov r2, #0x4
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_02001B8C
+ str r0, [r4, #0x20]
+ add r0, r4, #0x0
+ bl FUN_02019220
+ ldr r0, [sp, #0x1c]
+ ldr r0, [r0, #0xc]
+ bl FUN_020238F4
+ bl FUN_020239CC
+ add r3, r0, #0x0
+ add r0, r4, #0x0
+ add r4, #0x30
+ lsl r3, r3, #0x18
+ ldr r2, [sp, #0x14]
+ add r1, r4, #0x0
+ lsr r3, r3, #0x18
+ bl FUN_020359B8
+ add sp, #0x30
+ pop {r3-r7, pc}
+ nop
+_02035658: .word 0x0000023B
+_0203565C: .word 0x000003D9
+_02035660: .word 0x00000143
+_02035664: .word 0x020F2ACC
+_02035668: .word 0x00000402
+
+ thumb_func_start FUN_0203566C
+FUN_0203566C: ; 0x0203566C
+ push {r3-r4}
+ mov r3, #0x7
+ lsl r3, r3, #0x6
+ ldr r4, [r0, r3]
+ sub r3, #0xc0
+ mov r2, #0x0
+ tst r3, r4
+ bne _02035682
+ mov r3, #0x8
+ strb r3, [r1, #0x0]
+ add r2, r2, #0x1
+_02035682:
+ mov r3, #0x7
+ lsl r3, r3, #0x6
+ ldr r4, [r0, r3]
+ mov r3, #0x80
+ tst r3, r4
+ bne _02035694
+ mov r3, #0x7
+ strb r3, [r1, r2]
+ add r2, r2, #0x1
+_02035694:
+ mov r3, #0x7
+ lsl r3, r3, #0x6
+ ldr r4, [r0, r3]
+ mov r3, #0x1
+ tst r3, r4
+ bne _020356A6
+ mov r3, #0x0
+ strb r3, [r1, r2]
+ add r2, r2, #0x1
+_020356A6:
+ mov r3, #0x7
+ lsl r3, r3, #0x6
+ ldr r4, [r0, r3]
+ mov r3, #0x2
+ tst r3, r4
+ bne _020356B8
+ mov r3, #0x1
+ strb r3, [r1, r2]
+ add r2, r2, #0x1
+_020356B8:
+ mov r3, #0x7
+ lsl r3, r3, #0x6
+ ldr r4, [r0, r3]
+ mov r3, #0x4
+ tst r3, r4
+ bne _020356CA
+ mov r3, #0x2
+ strb r3, [r1, r2]
+ add r2, r2, #0x1
+_020356CA:
+ mov r3, #0x7
+ lsl r3, r3, #0x6
+ ldr r4, [r0, r3]
+ mov r3, #0x8
+ tst r3, r4
+ bne _020356DC
+ mov r3, #0x3
+ strb r3, [r1, r2]
+ add r2, r2, #0x1
+_020356DC:
+ mov r3, #0x7
+ lsl r3, r3, #0x6
+ ldr r4, [r0, r3]
+ mov r3, #0x10
+ tst r3, r4
+ bne _020356EE
+ mov r3, #0x4
+ strb r3, [r1, r2]
+ add r2, r2, #0x1
+_020356EE:
+ mov r3, #0x7
+ lsl r3, r3, #0x6
+ ldr r4, [r0, r3]
+ mov r3, #0x20
+ tst r3, r4
+ bne _02035700
+ mov r3, #0x5
+ strb r3, [r1, r2]
+ add r2, r2, #0x1
+_02035700:
+ mov r3, #0x7
+ lsl r3, r3, #0x6
+ ldr r3, [r0, r3]
+ mov r0, #0x40
+ tst r0, r3
+ bne _02035712
+ mov r0, #0x6
+ strb r0, [r1, r2]
+ add r2, r2, #0x1
+_02035712:
+ add r0, r2, #0x0
+ pop {r3-r4}
+ bx lr
+
+ thumb_func_start FUN_02035718
+FUN_02035718: ; 0x02035718
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02035B78
+ ldr r0, [r4, #0x20]
+ mov r1, #0x0
+ bl FUN_02001C5C
+ ldr r0, [r4, #0x24]
+ bl FUN_02012870
+ mov r0, #0x0
+ str r0, [r4, #0x20]
+ pop {r4, pc}
+
+ thumb_func_start FUN_02035734
+FUN_02035734: ; 0x02035734
+ push {r3-r7, lr}
+ sub sp, #0x20
+ add r5, r0, #0x0
+ bl FUN_02046528
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0204652C
+ add r5, r0, #0x0
+ ldr r0, [r4, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205F214
+ cmp r0, #0x1
+ bne _0203575A
+ mov r6, #0x0
+ b _0203576C
+_0203575A:
+ ldr r0, [r4, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205F244
+ cmp r0, #0x1
+ beq _0203576A
+ b _0203588E
+_0203576A:
+ mov r6, #0x1
+_0203576C:
+ mov r3, #0x1
+ str r3, [sp, #0x0]
+ mov r0, #0xc
+ str r0, [sp, #0x4]
+ mov r0, #0x4
+ str r0, [sp, #0x8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ ldr r0, _02035894 ; =0x0000032D
+ add r1, r5, #0x0
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #0x8]
+ add r1, #0x10
+ mov r2, #0x3
+ bl FUN_02019064
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ mov r3, #0xb
+ str r3, [sp, #0x4]
+ ldr r0, [r4, #0x8]
+ ldr r2, _02035898 ; =0x000003D9
+ mov r1, #0x3
+ bl FUN_0200CB00
+ add r0, r5, #0x0
+ ldr r2, _02035898 ; =0x000003D9
+ add r0, #0x10
+ mov r1, #0x1
+ mov r3, #0xb
+ bl FUN_0200CCA4
+ add r0, r5, #0x0
+ add r0, #0x10
+ mov r1, #0xf
+ bl FUN_02019620
+ ldr r2, _0203589C ; =0x00000143
+ mov r0, #0x0
+ mov r1, #0x1a
+ mov r3, #0xb
+ bl FUN_0200A86C
+ str r0, [sp, #0x1c]
+ cmp r6, #0x0
+ bne _020357D0
+ mov r1, #0x9
+ bl FUN_0200A914
+ b _020357D6
+_020357D0:
+ mov r1, #0xa
+ bl FUN_0200A914
+_020357D6:
+ mov r1, #0x0
+ add r7, r0, #0x0
+ str r1, [sp, #0x0]
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ add r0, #0x10
+ add r2, r7, #0x0
+ add r3, r1, #0x0
+ str r1, [sp, #0x8]
+ bl FUN_0201BD84
+ add r0, r7, #0x0
+ bl FUN_02021A20
+ mov r0, #0xb
+ bl FUN_0200AA80
+ add r7, r0, #0x0
+ mov r0, #0x20
+ mov r1, #0xb
+ bl FUN_020219F4
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x1c]
+ mov r1, #0xb
+ bl FUN_0200A914
+ str r0, [sp, #0x14]
+ cmp r6, #0x0
+ bne _02035834
+ ldr r0, [r4, #0xc]
+ bl FUN_02034E30
+ bl FUN_02034E24
+ mov r1, #0x0
+ add r2, r0, #0x0
+ str r1, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ ldrh r2, [r2, #0x0]
+ add r0, r7, #0x0
+ mov r3, #0x2
+ bl FUN_0200AD38
+ b _0203584C
+_02035834:
+ add r0, r4, #0x0
+ bl FUN_0204BAB0
+ mov r1, #0x0
+ add r2, r0, #0x0
+ str r1, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ add r0, r7, #0x0
+ mov r3, #0x2
+ bl FUN_0200AD38
+_0203584C:
+ ldr r1, [sp, #0x18]
+ ldr r2, [sp, #0x14]
+ add r0, r7, #0x0
+ bl FUN_0200B7B8
+ mov r0, #0x10
+ str r0, [sp, #0x0]
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ mov r1, #0x0
+ add r0, r5, #0x0
+ ldr r2, [sp, #0x18]
+ add r0, #0x10
+ add r3, r1, #0x0
+ str r1, [sp, #0x8]
+ bl FUN_0201BD84
+ ldr r0, [sp, #0x18]
+ bl FUN_02021A20
+ ldr r0, [sp, #0x14]
+ bl FUN_02021A20
+ add r0, r7, #0x0
+ bl FUN_0200AB18
+ ldr r0, [sp, #0x1c]
+ bl FUN_0200A8B8
+ add r5, #0x10
+ add r0, r5, #0x0
+ bl FUN_02019220
+_0203588E:
+ add sp, #0x20
+ pop {r3-r7, pc}
+ nop
+_02035894: .word 0x0000032D
+_02035898: .word 0x000003D9
+_0203589C: .word 0x00000143
+
+ thumb_func_start FUN_020358A0
+FUN_020358A0: ; 0x020358A0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_02046528
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0204652C
+ add r5, r0, #0x0
+ ldr r0, [r4, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205F214
+ cmp r0, #0x0
+ bne _020358CE
+ ldr r0, [r4, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205F244
+ cmp r0, #0x0
+ beq _020358E0
+_020358CE:
+ add r0, r5, #0x0
+ add r0, #0x10
+ mov r1, #0x1
+ bl FUN_0200CCF8
+ add r5, #0x10
+ add r0, r5, #0x0
+ bl FUN_02019178
+_020358E0:
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020358E4
+FUN_020358E4: ; 0x020358E4
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ bl FUN_02046528
+ add r4, r0, #0x0
+ add r0, r7, #0x0
+ bl FUN_0204652C
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x20]
+ bl FUN_02001E5C
+ add r6, r0, #0x0
+ mov r1, #0x5e
+ ldr r0, [r5, #0x20]
+ lsl r1, r1, #0x4
+ bl FUN_02001D2C
+ str r0, [r5, #0x2c]
+ ldr r0, [r5, #0x20]
+ bl FUN_02001E5C
+ strh r0, [r5, #0x28]
+ ldrh r1, [r5, #0x28]
+ cmp r6, r1
+ beq _0203593A
+ mov r0, #0x67
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ ldr r0, [r0, #0x0]
+ bl FUN_02035BE8
+ ldrh r2, [r5, #0x28]
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02035C44
+ ldrh r0, [r5, #0x28]
+ add r4, #0x8c
+ add r0, r5, r0
+ add r0, #0x30
+ ldrb r0, [r0, #0x0]
+ str r0, [r4, #0x0]
+_0203593A:
+ ldrh r0, [r5, #0x28]
+ add r0, r0, #0x1
+ lsl r0, r0, #0x2
+ add r1, r5, r0
+ mov r0, #0x67
+ lsl r0, r0, #0x2
+ ldr r0, [r1, r0]
+ ldr r0, [r0, #0x0]
+ bl FUN_02035C78
+ mov r1, #0x1
+ ldr r2, [r5, #0x2c]
+ mvn r1, r1
+ cmp r2, r1
+ beq _02035960
+ add r0, r1, #0x1
+ cmp r2, r0
+ beq _02035982
+ b _02035966
+_02035960:
+ mov r0, #0xd
+ strh r0, [r5, #0x2a]
+ b _02035982
+_02035966:
+ ldr r0, _02035988 ; =0x020F2AD0
+ lsl r2, r2, #0x3
+ ldr r2, [r0, r2]
+ cmp r2, r1
+ bne _02035976
+ mov r0, #0xd
+ strh r0, [r5, #0x2a]
+ b _02035982
+_02035976:
+ add r0, r1, #0x1
+ cmp r2, r0
+ beq _02035982
+ add r0, r7, #0x0
+ blx r2
+ pop {r3-r7, pc}
+_02035982:
+ mov r0, #0x1
+ pop {r3-r7, pc}
+ nop
+_02035988: .word 0x020F2AD0
+
+ thumb_func_start FUN_0203598C
+FUN_0203598C: ; 0x0203598C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_0202EDF8
+ cmp r0, #0x0
+ beq _020359B4
+ mov r0, #0x71
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ cmp r0, #0x0
+ beq _020359B4
+ ldr r0, [r4, #0x7c]
+ bl FUN_02052F74
+ bl FUN_02031B50
+ mov r0, #0x0
+ bl FUN_02052B74
+_020359B4:
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020359B8
+FUN_020359B8: ; 0x020359B8
+ push {r4-r7, lr}
+ sub sp, #0xb4
+ ldr r4, _02035B60 ; =0x020F2AB4
+ str r3, [sp, #0x18]
+ add r3, sp, #0x9c
+ str r2, [sp, #0x14]
+ str r0, [sp, #0xc]
+ str r1, [sp, #0x10]
+ add r2, r3, #0x0
+ ldmia r4!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldmia r4!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldmia r4!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldr r0, [sp, #0xc]
+ add r1, r2, #0x0
+ add r0, #0x38
+ mov r2, #0x8
+ mov r3, #0xb
+ bl FUN_021D959C
+ mov r0, #0x2
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ ldr r0, _02035B64 ; =0x000034D8
+ mov r1, #0x42
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0xc]
+ mov r2, #0x5
+ add r0, #0x38
+ mov r3, #0x0
+ bl FUN_021D967C
+ ldr r0, _02035B64 ; =0x000034D8
+ mov r1, #0x42
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0xc]
+ mov r2, #0x1
+ add r0, #0x38
+ mov r3, #0x0
+ bl FUN_021D96F4
+ ldr r0, _02035B64 ; =0x000034D8
+ mov r2, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0xc]
+ mov r1, #0x42
+ add r0, #0x38
+ add r3, r2, #0x0
+ bl FUN_021D9708
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ ldr r0, _02035B64 ; =0x000034D8
+ mov r1, #0x42
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0xc]
+ mov r2, #0x2
+ add r0, #0x38
+ mov r3, #0x0
+ bl FUN_021D971C
+ ldr r0, [sp, #0xc]
+ ldr r1, _02035B68 ; =0x020F2B14
+ add r0, #0x38
+ bl FUN_021D9820
+ mov r2, #0x67
+ ldr r1, [sp, #0xc]
+ lsl r2, r2, #0x2
+ str r0, [r1, r2]
+ add r0, r1, #0x0
+ ldr r0, [r0, r2]
+ ldrh r1, [r1, #0x28]
+ ldr r0, [r0, #0x0]
+ bl FUN_02035BE8
+ ldr r0, _02035B6C ; =0x000034D9
+ mov r1, #0x42
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0xc]
+ mov r2, #0x4
+ add r0, #0x38
+ mov r3, #0x0
+ bl FUN_021D96F4
+ ldr r0, _02035B6C ; =0x000034D9
+ mov r1, #0x42
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0xc]
+ mov r2, #0x3
+ add r0, #0x38
+ mov r3, #0x0
+ bl FUN_021D9708
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ ldr r0, _02035B6C ; =0x000034D9
+ mov r1, #0x42
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0xc]
+ mov r2, #0x6
+ add r0, #0x38
+ mov r3, #0x0
+ bl FUN_021D971C
+ ldr r0, [sp, #0x14]
+ mov r4, #0x0
+ cmp r0, #0x0
+ bls _02035B2C
+ ldr r5, [sp, #0xc]
+ ldr r3, _02035B70 ; =0x020F2B48
+ add r7, r4, #0x0
+ add r2, sp, #0x28
+ mov r6, #0x6
+_02035AA2:
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ sub r6, r6, #0x1
+ bne _02035AA2
+ ldr r0, [r3, #0x0]
+ ldr r3, _02035B74 ; =0x020F2AA8
+ str r0, [r2, #0x0]
+ ldmia r3!, {r0-r1}
+ add r2, sp, #0x1c
+ stmia r2!, {r0-r1}
+ ldr r0, [r3, #0x0]
+ str r0, [r2, #0x0]
+_02035ABA:
+ add r6, sp, #0x28
+ add r3, sp, #0x68
+ mov r2, #0x6
+_02035AC0:
+ ldmia r6!, {r0-r1}
+ stmia r3!, {r0-r1}
+ sub r2, r2, #0x1
+ bne _02035AC0
+ ldr r0, [r6, #0x0]
+ add r1, sp, #0x68
+ str r0, [r3, #0x0]
+ mov r0, #0x2
+ ldrsh r0, [r1, r0]
+ add r0, r0, r7
+ strh r0, [r1, #0x2]
+ ldr r0, [sp, #0x10]
+ ldrb r2, [r0, r4]
+ cmp r2, #0x2
+ bne _02035AEA
+ ldr r0, [sp, #0x18]
+ cmp r0, #0x1
+ bne _02035AEA
+ mov r0, #0x1b
+ strh r0, [r1, #0x6]
+ b _02035AF2
+_02035AEA:
+ lsl r0, r2, #0x1
+ add r1, r2, r0
+ add r0, sp, #0x68
+ strh r1, [r0, #0x6]
+_02035AF2:
+ ldr r0, [sp, #0xc]
+ add r1, sp, #0x68
+ add r0, #0x38
+ bl FUN_021D9820
+ mov r1, #0x1a
+ lsl r1, r1, #0x4
+ add r2, sp, #0x5c
+ add r3, sp, #0x1c
+ str r0, [r5, r1]
+ ldmia r3!, {r0-r1}
+ add r6, r2, #0x0
+ stmia r2!, {r0-r1}
+ ldr r0, [r3, #0x0]
+ add r1, r6, #0x0
+ str r0, [r2, #0x0]
+ mov r0, #0x1a
+ lsl r0, r0, #0x4
+ ldr r0, [r5, r0]
+ mov r2, #0x1
+ ldr r0, [r0, #0x0]
+ bl FUN_02020074
+ ldr r0, [sp, #0x14]
+ add r4, r4, #0x1
+ add r7, #0x18
+ add r5, r5, #0x4
+ cmp r4, r0
+ blo _02035ABA
+_02035B2C:
+ ldr r0, [sp, #0xc]
+ mov r2, #0x1
+ ldrh r0, [r0, #0x28]
+ add r0, r0, #0x1
+ lsl r1, r0, #0x2
+ ldr r0, [sp, #0xc]
+ add r1, r0, r1
+ mov r0, #0x67
+ lsl r0, r0, #0x2
+ ldr r0, [r1, r0]
+ mov r1, #0x2
+ ldr r0, [r0, #0x0]
+ bl FUN_02035C18
+ ldr r0, [sp, #0x14]
+ mov r1, #0x6f
+ add r2, r0, #0x1
+ ldr r0, [sp, #0xc]
+ lsl r1, r1, #0x2
+ str r2, [r0, r1]
+ mov r0, #0x10
+ mov r1, #0x1
+ bl FUN_0201E6E4
+ add sp, #0xb4
+ pop {r4-r7, pc}
+ .balign 4
+_02035B60: .word 0x020F2AB4
+_02035B64: .word 0x000034D8
+_02035B68: .word 0x020F2B14
+_02035B6C: .word 0x000034D9
+_02035B70: .word 0x020F2B48
+_02035B74: .word 0x020F2AA8
+
+ thumb_func_start FUN_02035B78
+FUN_02035B78: ; 0x02035B78
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ mov r0, #0x6f
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ mov r4, #0x0
+ cmp r0, #0x0
+ bls _02035BA6
+ mov r7, #0x67
+ lsl r7, r7, #0x2
+ add r6, r7, #0x0
+ add r6, #0x20
+_02035B90:
+ lsl r0, r4, #0x2
+ add r0, r5, r0
+ ldr r0, [r0, r7]
+ bl FUN_0200C3DC
+ add r0, r4, #0x1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ ldr r0, [r5, r6]
+ cmp r4, r0
+ blo _02035B90
+_02035BA6:
+ add r5, #0x38
+ add r0, r5, #0x0
+ bl FUN_021D99F8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02035BB0
+FUN_02035BB0: ; 0x02035BB0
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ mov r0, #0x6f
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ mov r4, #0x0
+ cmp r0, #0x0
+ bls _02035BE4
+ mov r7, #0x67
+ lsl r7, r7, #0x2
+ add r6, r7, #0x0
+ add r6, #0x20
+_02035BC8:
+ lsl r0, r4, #0x2
+ add r0, r5, r0
+ ldr r0, [r0, r7]
+ mov r1, #0x1
+ ldr r0, [r0, #0x0]
+ lsl r1, r1, #0xc
+ bl FUN_020201E4
+ add r0, r4, #0x1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ ldr r0, [r5, r6]
+ cmp r4, r0
+ blo _02035BC8
+_02035BE4:
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02035BE8
+FUN_02035BE8: ; 0x02035BE8
+ push {r3-r6, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_0202011C
+ add r6, r0, #0x0
+ add r3, sp, #0x0
+ ldmia r6!, {r0-r1}
+ add r2, r3, #0x0
+ stmia r3!, {r0-r1}
+ ldr r0, [r6, #0x0]
+ add r1, r2, #0x0
+ str r0, [r3, #0x0]
+ mov r0, #0x18
+ mul r0, r4
+ add r0, #0x14
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ bl FUN_02020044
+ add sp, #0xc
+ pop {r3-r6, pc}
+
+ thumb_func_start FUN_02035C18
+FUN_02035C18: ; 0x02035C18
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_020201DC
+ mov r1, #0x3
+ blx _u32_div_f
+ add r2, r0, #0x0
+ lsl r1, r2, #0x1
+ add r1, r2, r1
+ add r0, r5, #0x0
+ add r1, r4, r1
+ bl FUN_02020130
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_0202027C
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02035C44
+FUN_02035C44: ; 0x02035C44
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, r1, #0x1
+ lsl r0, r0, #0x2
+ add r1, r5, r0
+ mov r0, #0x67
+ lsl r0, r0, #0x2
+ ldr r0, [r1, r0]
+ mov r1, #0x0
+ add r4, r2, #0x0
+ ldr r0, [r0, #0x0]
+ add r2, r1, #0x0
+ bl FUN_02035C18
+ add r0, r4, #0x1
+ lsl r0, r0, #0x2
+ add r1, r5, r0
+ mov r0, #0x67
+ lsl r0, r0, #0x2
+ ldr r0, [r1, r0]
+ mov r1, #0x1
+ ldr r0, [r0, #0x0]
+ add r2, r1, #0x0
+ bl FUN_02035C18
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02035C78
+FUN_02035C78: ; 0x02035C78
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_020201DC
+ mov r1, #0x3
+ blx _u32_div_f
+ cmp r1, #0x1
+ bne _02035C9E
+ add r0, r4, #0x0
+ bl FUN_02020388
+ cmp r0, #0x0
+ bne _02035C9E
+ add r0, r4, #0x0
+ mov r1, #0x2
+ mov r2, #0x1
+ bl FUN_02035C18
+_02035C9E:
+ pop {r4, pc}
+
+ thumb_func_start FUN_02035CA0
+FUN_02035CA0: ; 0x02035CA0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_0200E308
+ cmp r0, #0x0
+ beq _02035CD8
+ add r0, r5, #0x0
+ bl FUN_02046528
+ add r0, r5, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ bl FUN_02035718
+ add r0, r4, #0x0
+ bl FUN_02019178
+ add r0, r5, #0x0
+ bl FUN_020358A0
+ mov r1, #0x72
+ lsl r1, r1, #0x2
+ ldr r1, [r4, r1]
+ add r0, r5, #0x0
+ blx r1
+ mov r0, #0x3
+ strh r0, [r4, #0x2a]
+_02035CD8:
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02035CDC
+FUN_02035CDC: ; 0x02035CDC
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl FUN_02046528
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_0204647C
+ cmp r0, #0x0
+ bne _02035D02
+ mov r1, #0x72
+ lsl r1, r1, #0x2
+ ldr r1, [r4, r1]
+ add r0, r5, #0x0
+ blx r1
+_02035D02:
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02035D04
+FUN_02035D04: ; 0x02035D04
+ mov r2, #0x72
+ lsl r2, r2, #0x2
+ str r1, [r0, r2]
+ mov r1, #0x3
+ strh r1, [r0, #0x2a]
+ bx lr
+
+ thumb_func_start FUN_02035D10
+FUN_02035D10: ; 0x02035D10
+ push {r4, lr}
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ mov r0, #0x0
+ bl FUN_021D7CA4
+ mov r0, #0x72
+ ldr r1, _02035D30 ; =FUN_02035D34
+ lsl r0, r0, #0x2
+ str r1, [r4, r0]
+ mov r0, #0x2
+ strh r0, [r4, #0x2a]
+ mov r0, #0x1
+ pop {r4, pc}
+ nop
+_02035D30: .word FUN_02035D34
+
+ thumb_func_start FUN_02035D34
+FUN_02035D34: ; 0x02035D34
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r4, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0204652C
+ add r6, r0, #0x0
+ mov r0, #0xb
+ mov r1, #0x20
+ bl FUN_02016998
+ add r4, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_02024DA0
+ str r0, [sp, #0x0]
+ ldr r0, [r5, #0xc]
+ bl FUN_020238F4
+ str r0, [sp, #0x4]
+ ldr r0, [r5, #0xc]
+ bl FUN_020462AC
+ add r7, r0, #0x0
+ ldr r0, [sp, #0x0]
+ str r0, [r4, #0x0]
+ ldr r0, [sp, #0x4]
+ str r0, [r4, #0x4]
+ add r0, r5, #0x0
+ bl FUN_0204B2A4
+ str r0, [r4, #0x8]
+ add r0, r7, #0x0
+ mov r1, #0x0
+ bl FUN_0205F524
+ str r0, [r4, #0xc]
+ add r0, r7, #0x0
+ mov r1, #0x1
+ bl FUN_0205F524
+ str r0, [r4, #0x10]
+ add r0, r7, #0x0
+ mov r1, #0x2
+ bl FUN_0205F524
+ str r0, [r4, #0x14]
+ add r0, r7, #0x0
+ mov r1, #0x3
+ bl FUN_0205F524
+ str r0, [r4, #0x18]
+ add r0, r5, #0x0
+ add r0, #0xb0
+ ldr r0, [r0, #0x0]
+ add r1, r4, #0x0
+ str r0, [r4, #0x1c]
+ add r0, r5, #0x0
+ bl FUN_02038690
+ mov r0, #0x7e
+ lsl r0, r0, #0x2
+ str r4, [r6, r0]
+ ldr r1, _02035DC4 ; =FUN_02035DC8
+ sub r0, #0x30
+ str r1, [r6, r0]
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+_02035DC4: .word FUN_02035DC8
+
+ thumb_func_start FUN_02035DC8
+FUN_02035DC8: ; 0x02035DC8
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0204649C
+ mov r0, #0x7e
+ lsl r0, r0, #0x2
+ ldr r1, [r4, r0]
+ cmp r1, #0x0
+ beq _02035DF0
+ mov r0, #0xb
+ bl FUN_02016A8C
+_02035DF0:
+ mov r0, #0xc
+ strh r0, [r4, #0x2a]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02035DF8
+FUN_02035DF8: ; 0x02035DF8
+ push {r4, lr}
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ mov r0, #0x0
+ bl FUN_021D7CA4
+ mov r0, #0x72
+ ldr r1, _02035E18 ; =FUN_02035E1C
+ lsl r0, r0, #0x2
+ str r1, [r4, r0]
+ mov r0, #0x2
+ strh r0, [r4, #0x2a]
+ mov r0, #0x1
+ pop {r4, pc}
+ nop
+_02035E18: .word FUN_02035E1C
+
+ thumb_func_start FUN_02035E1C
+FUN_02035E1C: ; 0x02035E1C
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0204652C
+ mov r1, #0x7a
+ add r4, r0, #0x0
+ lsl r1, r1, #0x2
+ add r0, r5, #0x0
+ add r1, r4, r1
+ mov r2, #0x0
+ bl FUN_020379C8
+ mov r1, #0x7e
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ ldr r0, _02035E4C ; =FUN_02035E50
+ sub r1, #0x30
+ str r0, [r4, r1]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+_02035E4C: .word FUN_02035E50
+
+ thumb_func_start FUN_02035E50
+FUN_02035E50: ; 0x02035E50
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r7, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, r7, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ mov r0, #0xb
+ mov r1, #0x40
+ bl FUN_02016998
+ mov r1, #0x7e
+ lsl r1, r1, #0x2
+ ldr r1, [r4, r1]
+ mov r2, #0x40
+ add r6, r0, #0x0
+ blx FUN_020DF438
+ mov r0, #0x7e
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ add r0, r6, #0x0
+ add r0, #0x23
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x17
+ bls _02035E90
+ b _020361E6
+_02035E90:
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02035E9C: ; jump table (using 16-bit offset)
+ .short _020361E6 - _02035E9C - 2; case 0
+ .short _02035ECC - _02035E9C - 2; case 1
+ .short _020361E6 - _02035E9C - 2; case 2
+ .short _020360EA - _02035E9C - 2; case 3
+ .short _02035F4A - _02035E9C - 2; case 4
+ .short _02035FD0 - _02035E9C - 2; case 5
+ .short _02036056 - _02035E9C - 2; case 6
+ .short _020360AC - _02035E9C - 2; case 7
+ .short _02036144 - _02035E9C - 2; case 8
+ .short _02036170 - _02035E9C - 2; case 9
+ .short _020361CA - _02035E9C - 2; case 10
+ .short _020361A4 - _02035E9C - 2; case 11
+ .short _020361A4 - _02035E9C - 2; case 12
+ .short _020361A4 - _02035E9C - 2; case 13
+ .short _020361A4 - _02035E9C - 2; case 14
+ .short _020361A4 - _02035E9C - 2; case 15
+ .short _020361A4 - _02035E9C - 2; case 16
+ .short _020361A4 - _02035E9C - 2; case 17
+ .short _020361A4 - _02035E9C - 2; case 18
+ .short _020361A4 - _02035E9C - 2; case 19
+ .short _020361A4 - _02035E9C - 2; case 20
+ .short _020361A4 - _02035E9C - 2; case 21
+ .short _020361A4 - _02035E9C - 2; case 22
+ .short _020361A4 - _02035E9C - 2; case 23
+_02035ECC:
+ mov r0, #0xb
+ mov r1, #0x30
+ bl FUN_02016998
+ add r7, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_0206BB1C
+ str r0, [r7, #0x0]
+ ldr r0, [r5, #0xc]
+ bl LoadPlayerDataAddress
+ str r0, [r7, #0x4]
+ mov r0, #0x1
+ strb r0, [r7, #0x11]
+ add r0, r6, #0x0
+ add r0, #0x22
+ ldrb r0, [r0, #0x0]
+ strb r0, [r7, #0x14]
+ ldr r0, [r7, #0x0]
+ bl FUN_0206B9AC
+ strb r0, [r7, #0x13]
+ mov r0, #0x0
+ strh r0, [r7, #0x18]
+ strb r0, [r7, #0x12]
+ ldr r0, [r5, #0xc]
+ bl FUN_0202A918
+ str r0, [r7, #0x20]
+ ldr r0, [r5, #0xc]
+ bl FUN_0206BB28
+ str r0, [r7, #0x1c]
+ ldr r0, [r5, #0xc]
+ bl FUN_02079C70
+ str r0, [r7, #0x2c]
+ mov r0, #0x0
+ str r0, [r7, #0x28]
+ ldr r1, _0203626C ; =0x020F2A9C
+ add r0, r7, #0x0
+ bl FUN_0207B000
+ ldr r0, [r5, #0xc]
+ bl FUN_020238F4
+ add r1, r0, #0x0
+ add r0, r7, #0x0
+ bl FUN_0207C2A4
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ bl FUN_0203796C
+ mov r0, #0x7e
+ lsl r0, r0, #0x2
+ str r7, [r4, r0]
+ ldr r1, _02036270 ; =FUN_0203684C
+ add r0, r4, #0x0
+ bl FUN_02035D04
+ b _0203625E
+_02035F4A:
+ mov r0, #0xb
+ mov r1, #0x30
+ bl FUN_02016998
+ add r7, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_0206BB1C
+ str r0, [r7, #0x0]
+ ldr r0, [r5, #0xc]
+ bl LoadPlayerDataAddress
+ str r0, [r7, #0x4]
+ mov r1, #0x1
+ add r0, r6, #0x0
+ strb r1, [r7, #0x11]
+ add r0, #0x22
+ ldrb r0, [r0, #0x0]
+ strb r0, [r7, #0x14]
+ strb r1, [r7, #0x13]
+ ldrh r0, [r6, #0x26]
+ strh r0, [r7, #0x18]
+ mov r0, #0x2
+ strb r0, [r7, #0x12]
+ ldr r0, [r5, #0xc]
+ bl FUN_0206BB28
+ str r0, [r7, #0x1c]
+ ldr r0, [r5, #0xc]
+ bl FUN_02079C70
+ str r0, [r7, #0x2c]
+ mov r0, #0x0
+ str r0, [r7, #0x28]
+ ldr r1, _02036274 ; =0x020F2A8C
+ add r0, r7, #0x0
+ bl FUN_0207B000
+ ldr r0, [r5, #0xc]
+ bl FUN_020238F4
+ add r1, r0, #0x0
+ add r0, r7, #0x0
+ bl FUN_0207C2A4
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ bl FUN_0203796C
+ mov r0, #0xb
+ mov r1, #0x4
+ bl FUN_02016998
+ ldrh r1, [r6, #0x24]
+ strh r1, [r0, #0x0]
+ mov r1, #0x0
+ strh r1, [r0, #0x2]
+ mov r1, #0x7f
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ sub r0, r1, #0x4
+ str r7, [r4, r0]
+ ldr r1, _02036270 ; =FUN_0203684C
+ add r0, r4, #0x0
+ bl FUN_02035D04
+ b _0203625E
+_02035FD0:
+ mov r0, #0xb
+ mov r1, #0x30
+ bl FUN_02016998
+ add r7, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_0206BB1C
+ str r0, [r7, #0x0]
+ ldr r0, [r5, #0xc]
+ bl LoadPlayerDataAddress
+ str r0, [r7, #0x4]
+ mov r1, #0x1
+ add r0, r6, #0x0
+ strb r1, [r7, #0x11]
+ add r0, #0x22
+ ldrb r0, [r0, #0x0]
+ strb r0, [r7, #0x14]
+ strb r1, [r7, #0x13]
+ ldrh r0, [r6, #0x26]
+ strh r0, [r7, #0x18]
+ mov r0, #0x2
+ strb r0, [r7, #0x12]
+ ldr r0, [r5, #0xc]
+ bl FUN_0206BB28
+ str r0, [r7, #0x1c]
+ ldr r0, [r5, #0xc]
+ bl FUN_02079C70
+ str r0, [r7, #0x2c]
+ mov r0, #0x0
+ str r0, [r7, #0x28]
+ ldr r1, _02036274 ; =0x020F2A8C
+ add r0, r7, #0x0
+ bl FUN_0207B000
+ ldr r0, [r5, #0xc]
+ bl FUN_020238F4
+ add r1, r0, #0x0
+ add r0, r7, #0x0
+ bl FUN_0207C2A4
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ bl FUN_0203796C
+ mov r0, #0xb
+ mov r1, #0x4
+ bl FUN_02016998
+ mov r1, #0x0
+ strh r1, [r0, #0x0]
+ ldr r1, [r6, #0x34]
+ strh r1, [r0, #0x2]
+ mov r1, #0x7f
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ sub r0, r1, #0x4
+ str r7, [r4, r0]
+ ldr r1, _02036270 ; =FUN_0203684C
+ add r0, r4, #0x0
+ bl FUN_02035D04
+ b _0203625E
+_02036056:
+ ldrh r0, [r6, #0x24]
+ bl FUN_0206EAB8
+ add r3, r0, #0x0
+ mov r0, #0xb
+ add r2, r6, #0x0
+ str r0, [sp, #0x0]
+ add r2, #0x22
+ ldrb r2, [r2, #0x0]
+ add r0, r5, #0x0
+ mov r1, #0x2
+ bl FUN_02037F2C
+ mov r1, #0x7e
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ add r0, r6, #0x0
+ add r0, #0x20
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0xa
+ ldrh r0, [r6, #0x24]
+ bne _02036090
+ add r2, r6, #0x0
+ add r2, #0x22
+ ldrb r2, [r2, #0x0]
+ mov r1, #0x0
+ bl FUN_02036BC4
+ b _0203609C
+_02036090:
+ add r2, r6, #0x0
+ add r2, #0x22
+ ldrb r2, [r2, #0x0]
+ mov r1, #0x1
+ bl FUN_02036BC4
+_0203609C:
+ mov r1, #0x7f
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ ldr r1, _02036278 ; =FUN_02036BDC
+ add r0, r4, #0x0
+ bl FUN_02035D04
+ b _0203625E
+_020360AC:
+ ldr r0, [r5, #0xc]
+ bl FUN_0206BB1C
+ add r1, r6, #0x0
+ add r1, #0x22
+ ldrb r1, [r1, #0x0]
+ bl FUN_0206B9B0
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ mov r2, #0xb
+ bl FUN_02037F90
+ mov r1, #0x7e
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ add r2, r6, #0x0
+ add r2, #0x22
+ ldrh r0, [r6, #0x24]
+ ldrb r2, [r2, #0x0]
+ mov r1, #0x2
+ bl FUN_02036BC4
+ mov r1, #0x7f
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ ldr r1, _02036278 ; =FUN_02036BDC
+ add r0, r4, #0x0
+ bl FUN_02035D04
+ b _0203625E
+_020360EA:
+ mov r0, #0xb
+ mov r1, #0x4
+ bl FUN_02016998
+ add r1, r6, #0x0
+ add r1, #0x22
+ ldrb r1, [r1, #0x0]
+ str r1, [r0, #0x0]
+ mov r1, #0x7f
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ ldr r0, [r5, #0xc]
+ bl FUN_0206F158
+ add r7, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_020238F4
+ ldr r1, _0203627C ; =0x020F2A90
+ add r0, r7, #0x0
+ mov r2, #0xb
+ bl FUN_0206EFEC
+ mov r1, #0x7e
+ lsl r1, r1, #0x2
+ add r3, r5, #0x0
+ str r0, [r4, r1]
+ add r3, #0x94
+ ldr r0, [r4, r1]
+ ldr r1, [r5, #0xc]
+ ldr r3, [r3, #0x0]
+ mov r2, #0x1
+ bl FUN_0206E314
+ mov r1, #0x7e
+ lsl r1, r1, #0x2
+ ldr r1, [r4, r1]
+ add r0, r5, #0x0
+ bl FUN_0203781C
+ ldr r1, _02036280 ; =FUN_020362E4
+ add r0, r4, #0x0
+ bl FUN_02035D04
+ b _0203625E
+_02036144:
+ mov r0, #0xb
+ mov r1, #0xc
+ bl FUN_02016998
+ ldrh r1, [r6, #0x24]
+ strh r1, [r0, #0x2]
+ mov r1, #0x3
+ strb r1, [r0, #0x1]
+ add r1, r6, #0x0
+ add r1, #0x22
+ ldrb r1, [r1, #0x0]
+ strb r1, [r0, #0x0]
+ ldrh r1, [r6, #0x38]
+ strh r1, [r0, #0x4]
+ ldr r1, [r6, #0x3c]
+ str r1, [r0, #0x8]
+ mov r1, #0x7e
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ mov r0, #0x6
+ strh r0, [r4, #0x2a]
+ b _0203625E
+_02036170:
+ mov r0, #0xb
+ mov r1, #0xc
+ bl FUN_02016998
+ add r7, r0, #0x0
+ ldr r0, [r5, #0x1c]
+ ldr r0, [r0, #0x0]
+ bl FUN_02034A04
+ strh r0, [r7, #0x2]
+ mov r0, #0x0
+ strb r0, [r7, #0x1]
+ add r0, r6, #0x0
+ add r0, #0x22
+ ldrb r0, [r0, #0x0]
+ strb r0, [r7, #0x0]
+ ldrh r0, [r6, #0x38]
+ strh r0, [r7, #0x4]
+ ldr r0, [r6, #0x3c]
+ str r0, [r7, #0x8]
+ mov r0, #0x7e
+ lsl r0, r0, #0x2
+ str r7, [r4, r0]
+ mov r0, #0x6
+ strh r0, [r4, #0x2a]
+ b _0203625E
+_020361A4:
+ sub r0, #0xb
+ add r1, sp, #0x4
+ strh r0, [r1, #0x6]
+ add r0, r6, #0x0
+ add r0, #0x22
+ ldrb r0, [r0, #0x0]
+ strh r0, [r1, #0x4]
+ str r7, [sp, #0x4]
+ ldrh r1, [r1, #0x6]
+ mov r0, #0x0
+ bl FUN_02063948
+ mov r1, #0x7a
+ lsl r1, r1, #0x2
+ add r2, r0, #0x0
+ add r0, sp, #0x4
+ add r1, r4, r1
+ blx r2
+ b _0203625E
+_020361CA:
+ mov r1, #0x73
+ lsl r1, r1, #0x2
+ add r0, r5, #0x0
+ add r1, r4, r1
+ bl FUN_02037844
+ mov r1, #0x7e
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ ldr r1, _02036280 ; =FUN_020362E4
+ add r0, r4, #0x0
+ bl FUN_02035D04
+ b _0203625E
+_020361E6:
+ add r0, r6, #0x0
+ add r0, #0x20
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x5
+ beq _02036200
+ cmp r0, #0x6
+ beq _02036200
+ cmp r0, #0x7
+ beq _02036200
+ cmp r0, #0x10
+ beq _02036200
+ cmp r0, #0x8
+ bne _02036234
+_02036200:
+ mov r1, #0x73
+ lsl r1, r1, #0x2
+ add r0, r5, #0x0
+ add r1, r4, r1
+ bl FUN_02037844
+ mov r2, #0x7e
+ lsl r2, r2, #0x2
+ str r0, [r4, r2]
+ add r0, r6, #0x0
+ add r0, #0x22
+ ldrb r1, [r0, #0x0]
+ ldr r0, [r4, r2]
+ cmp r1, #0x6
+ blo _02036226
+ mov r1, #0x0
+ bl FUN_0206E358
+ b _0203622A
+_02036226:
+ bl FUN_0206E358
+_0203622A:
+ ldr r1, _02036280 ; =FUN_020362E4
+ add r0, r4, #0x0
+ bl FUN_02035D04
+ b _0203625E
+_02036234:
+ cmp r0, #0x9
+ bne _02036254
+ mov r1, #0x73
+ lsl r1, r1, #0x2
+ add r0, r5, #0x0
+ add r1, r4, r1
+ bl FUN_02037844
+ mov r1, #0x7e
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ ldr r1, _02036280 ; =FUN_020362E4
+ add r0, r4, #0x0
+ bl FUN_02035D04
+ b _0203625E
+_02036254:
+ add r0, r5, #0x0
+ bl FUN_0204649C
+ mov r0, #0xc
+ strh r0, [r4, #0x2a]
+_0203625E:
+ add r0, r6, #0x0
+ bl FUN_02016A18
+ mov r0, #0x0
+ add sp, #0xc
+ pop {r4-r7, pc}
+ nop
+_0203626C: .word 0x020F2A9C
+_02036270: .word FUN_0203684C
+_02036274: .word 0x020F2A8C
+_02036278: .word FUN_02036BDC
+_0203627C: .word 0x020F2A90
+_02036280: .word FUN_020362E4
+
+ thumb_func_start FUN_02036284
+FUN_02036284: ; 0x02036284
+ push {r4, lr}
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ mov r0, #0x0
+ bl FUN_021D7CA4
+ mov r0, #0x72
+ ldr r1, _020362A4 ; =FUN_020362A8
+ lsl r0, r0, #0x2
+ str r1, [r4, r0]
+ mov r0, #0x2
+ strh r0, [r4, #0x2a]
+ mov r0, #0x1
+ pop {r4, pc}
+ nop
+_020362A4: .word FUN_020362A8
+
+ thumb_func_start FUN_020362A8
+FUN_020362A8: ; 0x020362A8
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0204652C
+ mov r1, #0x73
+ add r4, r0, #0x0
+ lsl r1, r1, #0x2
+ add r0, r5, #0x0
+ add r1, r4, r1
+ bl FUN_02037844
+ mov r1, #0x7e
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ ldr r0, [r4, r1]
+ mov r1, #0x0
+ bl FUN_0206E358
+ mov r0, #0x72
+ ldr r1, _020362E0 ; =FUN_020362E4
+ lsl r0, r0, #0x2
+ str r1, [r4, r0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+_020362E0: .word FUN_020362E4
+
+ thumb_func_start FUN_020362E4
+FUN_020362E4: ; 0x020362E4
+ push {r3-r7, lr}
+ sub sp, #0x18
+ add r5, r0, #0x0
+ bl FUN_02046528
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ mov r0, #0xb
+ bl FUN_0206E2F0
+ str r0, [sp, #0x8]
+ bl FUN_0206E308
+ mov r1, #0x7e
+ lsl r1, r1, #0x2
+ add r2, r0, #0x0
+ ldr r0, [sp, #0x8]
+ ldr r1, [r4, r1]
+ blx FUN_020DF438
+ mov r0, #0x7e
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ ldr r0, [sp, #0x8]
+ bl FUN_0206E384
+ cmp r0, #0x5
+ bls _02036328
+ b _020364EE
+_02036328:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02036334: ; jump table (using 16-bit offset)
+ .short _02036340 - _02036334 - 2; case 0
+ .short _0203637A - _02036334 - 2; case 1
+ .short _0203638A - _02036334 - 2; case 2
+ .short _020364EE - _02036334 - 2; case 3
+ .short _020363F6 - _02036334 - 2; case 4
+ .short _020364EE - _02036334 - 2; case 5
+_02036340:
+ ldr r0, [sp, #0x8]
+ bl FUN_0206E37C
+ add r1, sp, #0x10
+ strh r0, [r1, #0x4]
+ ldr r0, [sp, #0x8]
+ bl FUN_0206E38C
+ add r1, sp, #0x10
+ strb r0, [r1, #0x6]
+ str r5, [sp, #0x10]
+ ldrh r0, [r1, #0x4]
+ mov r1, #0x6
+ mov r2, #0xb
+ bl FUN_0206E7B8
+ add r1, r0, #0x0
+ lsl r1, r1, #0x10
+ mov r0, #0x0
+ lsr r1, r1, #0x10
+ bl FUN_0205CE48
+ mov r1, #0x73
+ lsl r1, r1, #0x2
+ add r2, r0, #0x0
+ add r0, sp, #0x10
+ add r1, r4, r1
+ blx r2
+ b _020364F8
+_0203637A:
+ ldr r0, [sp, #0x8]
+ bl FUN_0206E37C
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0203695C
+ b _020364F8
+_0203638A:
+ mov r0, #0xb
+ mov r1, #0x40
+ bl FUN_02016998
+ mov r1, #0x0
+ mov r2, #0x40
+ add r5, r0, #0x0
+ blx FUN_020DF4A4
+ ldr r0, [r6, #0xc]
+ bl FUN_0206BB1C
+ str r0, [r5, #0x0]
+ ldr r0, [r6, #0xc]
+ bl FUN_0206F158
+ str r0, [r5, #0x4]
+ ldr r0, [r6, #0xc]
+ bl FUN_02025838
+ str r0, [r5, #0x8]
+ ldr r0, [r6, #0xc]
+ bl LoadPlayerDataAddress
+ str r0, [r5, #0xc]
+ mov r0, #0x7a
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ str r0, [r5, #0x18]
+ add r0, r5, #0x0
+ mov r1, #0x0
+ add r0, #0x21
+ strb r1, [r0, #0x0]
+ add r0, r5, #0x0
+ mov r1, #0x9
+ add r0, #0x20
+ strb r1, [r0, #0x0]
+ ldr r0, [sp, #0x8]
+ bl FUN_0206E37C
+ strh r0, [r5, #0x24]
+ ldr r1, _02036504 ; =0x020F96DC
+ add r0, r6, #0x0
+ add r2, r5, #0x0
+ bl FUN_020373D4
+ mov r0, #0x7e
+ lsl r0, r0, #0x2
+ str r5, [r4, r0]
+ ldr r1, _02036508 ; =FUN_02035E50
+ add r0, r4, #0x0
+ bl FUN_02035D04
+ b _020364F8
+_020363F6:
+ ldr r0, [r6, #0xc]
+ bl FUN_0206BB1C
+ str r0, [sp, #0x4]
+ mov r0, #0x7f
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ ldr r7, [r0, #0x0]
+ ldr r0, [sp, #0x8]
+ bl FUN_0206E37C
+ add r5, r0, #0x0
+ ldr r0, [sp, #0x4]
+ add r1, r7, #0x0
+ bl FUN_0206B9B0
+ str r0, [sp, #0xc]
+ mov r0, #0x7f
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ add r0, r5, #0x0
+ bl FUN_0206EA98
+ cmp r0, #0x1
+ bne _02036474
+ ldr r0, [sp, #0xc]
+ mov r1, #0x6
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ bne _02036474
+ add r0, r5, #0x0
+ bl FUN_0206EAB8
+ add r3, r0, #0x0
+ mov r0, #0xb
+ lsl r2, r7, #0x18
+ str r0, [sp, #0x0]
+ add r0, r6, #0x0
+ mov r1, #0x2
+ lsr r2, r2, #0x18
+ bl FUN_02037F2C
+ mov r1, #0x7e
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ lsl r2, r7, #0x18
+ add r0, r5, #0x0
+ mov r1, #0x0
+ lsr r2, r2, #0x18
+ bl FUN_02036BC4
+ mov r1, #0x7f
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ ldr r1, _0203650C ; =FUN_02036BDC
+ add r0, r4, #0x0
+ bl FUN_02035D04
+ b _020364F8
+_02036474:
+ mov r0, #0xb
+ mov r1, #0x40
+ bl FUN_02016998
+ mov r1, #0x0
+ mov r2, #0x40
+ add r5, r0, #0x0
+ blx FUN_020DF4A4
+ ldr r0, [sp, #0x4]
+ str r0, [r5, #0x0]
+ ldr r0, [r6, #0xc]
+ bl FUN_0206F158
+ str r0, [r5, #0x4]
+ ldr r0, [r6, #0xc]
+ bl FUN_02025838
+ str r0, [r5, #0x8]
+ ldr r0, [r6, #0xc]
+ bl LoadPlayerDataAddress
+ str r0, [r5, #0xc]
+ mov r0, #0x7a
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ str r0, [r5, #0x18]
+ add r0, r5, #0x0
+ mov r1, #0x0
+ add r0, #0x21
+ strb r1, [r0, #0x0]
+ ldr r0, [sp, #0x8]
+ bl FUN_0206E37C
+ strh r0, [r5, #0x24]
+ add r0, r5, #0x0
+ add r0, #0x22
+ strb r7, [r0, #0x0]
+ str r6, [r5, #0x1c]
+ ldrh r0, [r5, #0x24]
+ cmp r0, #0x0
+ bne _020364CC
+ mov r1, #0x0
+ b _020364CE
+_020364CC:
+ mov r1, #0xa
+_020364CE:
+ add r0, r5, #0x0
+ add r0, #0x20
+ strb r1, [r0, #0x0]
+ ldr r1, _02036504 ; =0x020F96DC
+ add r0, r6, #0x0
+ add r2, r5, #0x0
+ bl FUN_020373D4
+ mov r0, #0x7e
+ lsl r0, r0, #0x2
+ str r5, [r4, r0]
+ ldr r1, _02036508 ; =FUN_02035E50
+ add r0, r4, #0x0
+ bl FUN_02035D04
+ b _020364F8
+_020364EE:
+ add r0, r6, #0x0
+ bl FUN_0204649C
+ mov r0, #0xc
+ strh r0, [r4, #0x2a]
+_020364F8:
+ ldr r0, [sp, #0x8]
+ bl FUN_02016A18
+ mov r0, #0x0
+ add sp, #0x18
+ pop {r3-r7, pc}
+ .balign 4
+_02036504: .word 0x020F96DC
+_02036508: .word FUN_02035E50
+_0203650C: .word FUN_02036BDC
+
+ thumb_func_start FUN_02036510
+FUN_02036510: ; 0x02036510
+ push {r4, lr}
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ mov r0, #0x0
+ bl FUN_021D7CA4
+ mov r0, #0x72
+ ldr r1, _02036530 ; =FUN_02036534
+ lsl r0, r0, #0x2
+ str r1, [r4, r0]
+ mov r0, #0x2
+ strh r0, [r4, #0x2a]
+ mov r0, #0x1
+ pop {r4, pc}
+ nop
+_02036530: .word FUN_02036534
+
+ thumb_func_start FUN_02036534
+FUN_02036534: ; 0x02036534
+ push {r3-r5, lr}
+ sub sp, #0x8
+ add r4, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ mov r0, #0xb
+ bl FUN_02065054
+ mov r1, #0x7e
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ str r5, [sp, #0x0]
+ ldr r0, [r4, r1]
+ mov r2, #0x0
+ str r0, [sp, #0x4]
+ mov r0, #0x1
+ add r1, r0, #0x0
+ mov r3, #0xff
+ bl FUN_02064E90
+ mov r1, #0x7e
+ lsl r1, r1, #0x2
+ ldr r1, [r4, r1]
+ add r0, r5, #0x0
+ bl FUN_02038680
+ mov r0, #0x72
+ ldr r1, _02036580 ; =FUN_02036584
+ lsl r0, r0, #0x2
+ str r1, [r4, r0]
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r3-r5, pc}
+ .balign 4
+_02036580: .word FUN_02036584
+
+ thumb_func_start FUN_02036584
+FUN_02036584: ; 0x02036584
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0204652C
+ mov r1, #0x7e
+ add r4, r0, #0x0
+ lsl r1, r1, #0x2
+ ldr r1, [r4, r1]
+ add r0, r5, #0x0
+ bl FUN_02065314
+ mov r0, #0x7e
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_02065070
+ add r0, r5, #0x0
+ bl FUN_0204649C
+ mov r0, #0xc
+ strh r0, [r4, #0x2a]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020365BC
+FUN_020365BC: ; 0x020365BC
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ bl FUN_02035718
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_0200CCF8
+ ldrb r1, [r4, #0x4]
+ ldr r0, [r4, #0x0]
+ bl FUN_0201AC68
+ add r0, r4, #0x0
+ bl FUN_02019178
+ add r0, r5, #0x0
+ bl FUN_020358A0
+ mov r0, #0x4
+ strh r0, [r4, #0x2a]
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020365F0
+FUN_020365F0: ; 0x020365F0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02046528
+ ldr r0, [r0, #0xc]
+ bl FUN_0202280C
+ cmp r0, #0x0
+ beq _02036618
+ mov r2, #0x0
+ ldr r1, _0203663C ; =0x000007F2
+ add r0, r5, #0x0
+ add r3, r2, #0x0
+ bl FUN_02038CD8
+ b _02036636
+_02036618:
+ mov r0, #0x20
+ mov r1, #0x8
+ bl FUN_02016998
+ mov r1, #0x7e
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ ldr r3, [r4, r1]
+ mov r2, #0x0
+ strh r2, [r3, #0x4]
+ ldr r1, _02036640 ; =0x000007D5
+ add r0, r5, #0x0
+ add r3, r3, #0x4
+ bl FUN_02038CD8
+_02036636:
+ mov r0, #0x5
+ strh r0, [r4, #0x2a]
+ pop {r3-r5, pc}
+ .balign 4
+_0203663C: .word 0x000007F2
+_02036640: .word 0x000007D5
+
+ thumb_func_start FUN_02036644
+FUN_02036644: ; 0x02036644
+ push {r4-r6, lr}
+ add r4, r0, #0x0
+ bl FUN_02046528
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ mov r0, #0x7e
+ lsl r0, r0, #0x2
+ ldr r5, [r4, r0]
+ ldr r0, [r6, #0xc]
+ bl FUN_0202280C
+ cmp r0, #0x0
+ beq _0203666C
+ mov r0, #0x0
+ strh r0, [r4, #0x2a]
+ pop {r4-r6, pc}
+_0203666C:
+ ldrh r0, [r5, #0x4]
+ cmp r0, #0x0
+ bne _02036676
+ mov r0, #0x0
+ b _02036678
+_02036676:
+ mov r0, #0xf
+_02036678:
+ strh r0, [r4, #0x2a]
+ add r0, r5, #0x0
+ bl FUN_02016A18
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02036684
+FUN_02036684: ; 0x02036684
+ push {r4, lr}
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ mov r0, #0x0
+ bl FUN_021D7CA4
+ mov r0, #0x72
+ ldr r1, _020366A4 ; =FUN_020366A8
+ lsl r0, r0, #0x2
+ str r1, [r4, r0]
+ mov r0, #0x2
+ strh r0, [r4, #0x2a]
+ mov r0, #0x1
+ pop {r4, pc}
+ nop
+_020366A4: .word FUN_020366A8
+
+ thumb_func_start FUN_020366A8
+FUN_020366A8: ; 0x020366A8
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02037EF8
+ mov r1, #0x7e
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ ldr r0, _020366D0 ; =FUN_020366D4
+ sub r1, #0x30
+ str r0, [r4, r1]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+_020366D0: .word FUN_020366D4
+
+ thumb_func_start FUN_020366D4
+FUN_020366D4: ; 0x020366D4
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ mov r0, #0x7e
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ add r0, r5, #0x0
+ bl FUN_0204649C
+ mov r0, #0xc
+ strh r0, [r4, #0x2a]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02036700
+FUN_02036700: ; 0x02036700
+ push {r4, lr}
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ mov r0, #0x0
+ bl FUN_021D7CA4
+ mov r0, #0x72
+ ldr r1, _02036720 ; =FUN_02036724
+ lsl r0, r0, #0x2
+ str r1, [r4, r0]
+ mov r0, #0x2
+ strh r0, [r4, #0x2a]
+ mov r0, #0x1
+ pop {r4, pc}
+ nop
+_02036720: .word FUN_02036724
+
+ thumb_func_start FUN_02036724
+FUN_02036724: ; 0x02036724
+ push {r3-r5, lr}
+ sub sp, #0x8
+ add r4, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldr r2, [r5, #0xc]
+ mov r0, #0x2
+ mov r1, #0x0
+ mov r3, #0xb
+ bl FUN_02085338
+ mov r1, #0x7e
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ add r0, sp, #0x0
+ mov r1, #0x4
+ bl FUN_0201373C
+ mov r0, #0x7e
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ add r1, sp, #0x0
+ bl FUN_020853BC
+ mov r1, #0x7e
+ lsl r1, r1, #0x2
+ ldr r1, [r4, r1]
+ add r0, r5, #0x0
+ bl FUN_02037E80
+ mov r0, #0x72
+ ldr r1, _02036778 ; =FUN_0203677C
+ lsl r0, r0, #0x2
+ str r1, [r4, r0]
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r3-r5, pc}
+ .balign 4
+_02036778: .word FUN_0203677C
+
+ thumb_func_start FUN_0203677C
+FUN_0203677C: ; 0x0203677C
+ push {r3-r5, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ bl FUN_02046528
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0204652C
+ add r5, r0, #0x0
+ mov r0, #0x7e
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ bl FUN_020853E4
+ cmp r0, #0x0
+ bne _020367C6
+ mov r0, #0x7e
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ add r1, sp, #0x0
+ bl FUN_020853FC
+ bl FUN_0202EDF8
+ cmp r0, #0x0
+ beq _020367C0
+ add r0, sp, #0x0
+ bl FUN_02052DE8
+ ldr r0, [r4, #0x78]
+ add r1, sp, #0x0
+ bl FUN_02052CD8
+_020367C0:
+ mov r0, #0x8
+ strh r0, [r5, #0x2a]
+ b _020367CA
+_020367C6:
+ mov r0, #0xc
+ strh r0, [r5, #0x2a]
+_020367CA:
+ mov r0, #0x7e
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ bl FUN_020853A8
+ add r0, r4, #0x0
+ bl FUN_0204649C
+ ldr r0, [r4, #0x7c]
+ bl FUN_02052F74
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020367E8
+FUN_020367E8: ; 0x020367E8
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl FUN_02046528
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ bl FUN_02035718
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_0200CCF8
+ ldrb r1, [r4, #0x4]
+ ldr r0, [r4, #0x0]
+ bl FUN_0201AC68
+ add r0, r4, #0x0
+ bl FUN_02019178
+ add r0, r5, #0x0
+ bl FUN_020358A0
+ ldr r0, [r6, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205F214
+ cmp r0, #0x1
+ bne _02036834
+ ldr r1, _02036848 ; =0x00002275
+ add r0, r5, #0x0
+ mov r2, #0x0
+ bl FUN_02038D10
+ b _0203683E
+_02036834:
+ add r0, r5, #0x0
+ mov r1, #0x4
+ mov r2, #0x0
+ bl FUN_02038D10
+_0203683E:
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+_02036848: .word 0x00002275
+
+ thumb_func_start FUN_0203684C
+FUN_0203684C: ; 0x0203684C
+ push {r3-r7, lr}
+ add r4, r0, #0x0
+ bl FUN_02046528
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ mov r0, #0xb
+ mov r1, #0x30
+ bl FUN_02016998
+ mov r1, #0x7e
+ lsl r1, r1, #0x2
+ ldr r1, [r4, r1]
+ mov r2, #0x30
+ add r7, r0, #0x0
+ blx FUN_020DF438
+ mov r0, #0x7e
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ ldrb r0, [r7, #0x12]
+ cmp r0, #0x2
+ bne _0203692E
+ mov r0, #0xb
+ mov r1, #0x40
+ bl FUN_02016998
+ mov r1, #0x7f
+ lsl r1, r1, #0x2
+ ldr r1, [r4, r1]
+ mov r2, #0x40
+ str r1, [sp, #0x0]
+ mov r1, #0x0
+ add r5, r0, #0x0
+ blx FUN_020DF4A4
+ ldr r0, [r6, #0xc]
+ bl FUN_0206BB1C
+ str r0, [r5, #0x0]
+ ldr r0, [r6, #0xc]
+ bl FUN_0206F158
+ str r0, [r5, #0x4]
+ ldr r0, [r6, #0xc]
+ bl FUN_02025838
+ str r0, [r5, #0x8]
+ ldr r0, [r6, #0xc]
+ bl LoadPlayerDataAddress
+ str r0, [r5, #0xc]
+ mov r0, #0x7a
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ add r1, r5, #0x0
+ str r0, [r5, #0x18]
+ mov r0, #0x0
+ add r1, #0x21
+ strb r0, [r1, #0x0]
+ ldr r1, [sp, #0x0]
+ str r6, [r5, #0x1c]
+ ldrh r1, [r1, #0x0]
+ cmp r1, #0x0
+ beq _020368E2
+ add r1, r5, #0x0
+ mov r2, #0x7
+ add r1, #0x20
+ strb r2, [r1, #0x0]
+ b _020368EE
+_020368E2:
+ add r0, r5, #0x0
+ mov r1, #0x8
+ add r0, #0x20
+ strb r1, [r0, #0x0]
+ ldr r0, [sp, #0x0]
+ ldrh r0, [r0, #0x2]
+_020368EE:
+ str r0, [r5, #0x34]
+ ldr r0, [sp, #0x0]
+ add r2, r5, #0x0
+ ldrh r0, [r0, #0x0]
+ strh r0, [r5, #0x24]
+ add r0, r5, #0x0
+ ldrb r1, [r7, #0x14]
+ add r0, #0x22
+ strb r1, [r0, #0x0]
+ ldrh r0, [r7, #0x18]
+ strh r0, [r5, #0x26]
+ add r0, r5, #0x0
+ ldrb r1, [r7, #0x16]
+ add r0, #0x28
+ strb r1, [r0, #0x0]
+ ldr r1, _02036954 ; =0x020F96DC
+ add r0, r6, #0x0
+ bl FUN_020373D4
+ mov r0, #0x7f
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ mov r0, #0x7e
+ lsl r0, r0, #0x2
+ str r5, [r4, r0]
+ ldr r1, _02036958 ; =FUN_02035E50
+ add r0, r4, #0x0
+ bl FUN_02035D04
+ b _0203694A
+_0203692E:
+ mov r1, #0x7a
+ lsl r1, r1, #0x2
+ ldrb r2, [r7, #0x14]
+ add r0, r6, #0x0
+ add r1, r4, r1
+ bl FUN_020379C8
+ mov r1, #0x7e
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ ldr r1, _02036958 ; =FUN_02035E50
+ add r0, r4, #0x0
+ bl FUN_02035D04
+_0203694A:
+ add r0, r7, #0x0
+ bl FUN_02016A18
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+_02036954: .word 0x020F96DC
+_02036958: .word FUN_02035E50
+
+ thumb_func_start FUN_0203695C
+FUN_0203695C: ; 0x0203695C
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_02046528
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ bl FUN_0204652C
+ add r6, r0, #0x0
+ mov r0, #0xb
+ bl FUN_020851B8
+ mov r1, #0x7e
+ lsl r1, r1, #0x2
+ str r0, [r6, r1]
+ ldr r0, [sp, #0x4]
+ ldr r0, [r0, #0xc]
+ bl FUN_0206F158
+ str r0, [sp, #0x0]
+ mov r0, #0x7e
+ lsl r0, r0, #0x2
+ ldr r0, [r6, r0]
+ add r1, r4, #0x0
+ mov r2, #0x1
+ bl FUN_020851DC
+ mov r5, #0x0
+ add r4, r5, #0x0
+_0203699A:
+ add r0, r4, #0x0
+ bl FUN_0206EB1C
+ add r7, r0, #0x0
+ ldr r0, [sp, #0x0]
+ add r1, r7, #0x0
+ mov r2, #0x1
+ mov r3, #0xb
+ bl FUN_0206EE50
+ cmp r0, #0x1
+ bne _020369C6
+ mov r0, #0x7e
+ lsl r0, r0, #0x2
+ ldr r0, [r6, r0]
+ add r1, r7, #0x0
+ mov r2, #0x0
+ bl FUN_020851DC
+ add r0, r5, #0x1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+_020369C6:
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0x40
+ blo _0203699A
+ ldr r0, [sp, #0x4]
+ add r3, sp, #0x8
+ add r0, #0x94
+ ldr r0, [r0, #0x0]
+ mov r1, #0x4
+ add r2, sp, #0x8
+ add r3, #0x1
+ bl FUN_0206F17C
+ mov r0, #0x7e
+ add r2, sp, #0x8
+ lsl r0, r0, #0x2
+ ldrb r1, [r2, #0x1]
+ add r3, r5, #0x3
+ lsl r3, r3, #0x18
+ ldrb r2, [r2, #0x0]
+ ldr r0, [r6, r0]
+ lsr r3, r3, #0x18
+ bl FUN_020851F8
+ mov r1, #0x7e
+ lsl r1, r1, #0x2
+ ldr r0, [sp, #0x4]
+ ldr r1, [r6, r1]
+ bl FUN_0203791C
+ ldr r1, _02036A10 ; =FUN_02036A14
+ add r0, r6, #0x0
+ bl FUN_02035D04
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+_02036A10: .word FUN_02036A14
+
+ thumb_func_start FUN_02036A14
+FUN_02036A14: ; 0x02036A14
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ mov r0, #0x7e
+ lsl r0, r0, #0x2
+ add r1, sp, #0x0
+ ldr r0, [r4, r0]
+ add r1, #0x1
+ add r2, sp, #0x0
+ bl FUN_0208524C
+ add r0, r5, #0x0
+ add r3, sp, #0x0
+ add r0, #0x94
+ ldrb r2, [r3, #0x0]
+ ldrb r3, [r3, #0x1]
+ ldr r0, [r0, #0x0]
+ mov r1, #0x4
+ bl FUN_0206F190
+ mov r1, #0x7e
+ lsl r1, r1, #0x2
+ ldr r1, [r4, r1]
+ mov r0, #0xb
+ bl FUN_02016A8C
+ mov r1, #0x73
+ lsl r1, r1, #0x2
+ add r0, r5, #0x0
+ add r1, r4, r1
+ bl FUN_02037844
+ mov r1, #0x7e
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ ldr r1, _02036A74 ; =FUN_020362E4
+ add r0, r4, #0x0
+ bl FUN_02035D04
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ nop
+_02036A74: .word FUN_020362E4
+
+ thumb_func_start FUN_02036A78
+FUN_02036A78: ; 0x02036A78
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0204652C
+ mov r1, #0x7e
+ add r4, r0, #0x0
+ lsl r1, r1, #0x2
+ ldr r1, [r4, r1]
+ mov r0, #0xb
+ bl FUN_02016A8C
+ mov r1, #0x73
+ lsl r1, r1, #0x2
+ add r0, r5, #0x0
+ add r1, r4, r1
+ bl FUN_02037844
+ mov r1, #0x7e
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ ldr r1, _02036AB4 ; =FUN_020362E4
+ add r0, r4, #0x0
+ bl FUN_02035D04
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+_02036AB4: .word FUN_020362E4
+
+ thumb_func_start FUN_02036AB8
+FUN_02036AB8: ; 0x02036AB8
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r4, r0, #0x0
+ bl FUN_02046528
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ mov r0, #0x7f
+ lsl r0, r0, #0x2
+ ldr r1, [r4, r0]
+ mov r0, #0xb
+ ldr r7, [r1, #0x0]
+ bl FUN_02016A8C
+ mov r0, #0x7e
+ lsl r0, r0, #0x2
+ ldr r5, [r4, r0]
+ ldr r0, [r5, #0x10]
+ cmp r0, #0x0
+ bne _02036B0E
+ mov r0, #0xb
+ add r1, r5, #0x0
+ bl FUN_02016A8C
+ mov r1, #0x7a
+ lsl r1, r1, #0x2
+ lsl r2, r7, #0x18
+ add r0, r6, #0x0
+ add r1, r4, r1
+ lsr r2, r2, #0x18
+ bl FUN_020379C8
+ mov r1, #0x7e
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ ldr r1, _02036B88 ; =FUN_02035E50
+ add r0, r4, #0x0
+ bl FUN_02035D04
+ b _02036B82
+_02036B0E:
+ ldr r0, [r6, #0xc]
+ bl FUN_0206BB1C
+ add r1, r7, #0x0
+ bl FUN_0206B9B0
+ add r2, r0, #0x0
+ ldr r0, [r5, #0x14]
+ add r1, r6, #0x0
+ lsl r0, r0, #0x5
+ add r0, #0x10
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ str r0, [sp, #0x0]
+ ldr r0, [r5, #0x18]
+ lsl r0, r0, #0x5
+ add r0, #0x10
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ str r0, [sp, #0x4]
+ ldr r3, [r5, #0x1c]
+ mov r0, #0xb
+ lsl r3, r3, #0x10
+ lsr r3, r3, #0x10
+ bl FUN_02063888
+ ldr r1, [r5, #0x1c]
+ add r7, r0, #0x0
+ lsl r1, r1, #0x10
+ mov r0, #0x1
+ lsr r1, r1, #0x10
+ mov r2, #0xb
+ bl FUN_0202914C
+ add r1, r0, #0x0
+ add r0, r6, #0x0
+ add r0, #0x98
+ ldr r0, [r0, #0x0]
+ mov r2, #0x1
+ bl FUN_02028AD4
+ mov r1, #0x7e
+ lsl r1, r1, #0x2
+ ldr r1, [r4, r1]
+ mov r0, #0xb
+ bl FUN_02016A8C
+ add r0, r6, #0x0
+ bl FUN_0204649C
+ mov r0, #0x72
+ ldr r1, _02036B8C ; =FUN_020638BC
+ lsl r0, r0, #0x2
+ str r1, [r4, r0]
+ add r0, #0x30
+ str r7, [r4, r0]
+ mov r0, #0xa
+ strh r0, [r4, #0x2a]
+_02036B82:
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+_02036B88: .word FUN_02035E50
+_02036B8C: .word FUN_020638BC
+
+ thumb_func_start FUN_02036B90
+FUN_02036B90: ; 0x02036B90
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0204652C
+ mov r1, #0x73
+ add r4, r0, #0x0
+ lsl r1, r1, #0x2
+ add r0, r5, #0x0
+ add r1, r4, r1
+ bl FUN_02037844
+ mov r1, #0x7e
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ ldr r1, _02036BC0 ; =FUN_020362E4
+ add r0, r4, #0x0
+ bl FUN_02035D04
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+_02036BC0: .word FUN_020362E4
+
+ thumb_func_start FUN_02036BC4
+FUN_02036BC4: ; 0x02036BC4
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ mov r0, #0xb
+ mov r1, #0x4
+ add r6, r2, #0x0
+ bl FUN_02016998
+ strh r5, [r0, #0x0]
+ strb r6, [r0, #0x2]
+ strb r4, [r0, #0x3]
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02036BDC
+FUN_02036BDC: ; 0x02036BDC
+ push {r4-r6, lr}
+ add r4, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ mov r0, #0x7f
+ lsl r0, r0, #0x2
+ ldr r6, [r4, r0]
+ ldrb r1, [r6, #0x3]
+ cmp r1, #0x3
+ bhi _02036CD4
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02036C06: ; jump table (using 16-bit offset)
+ .short _02036C58 - _02036C06 - 2; case 0
+ .short _02036C98 - _02036C06 - 2; case 1
+ .short _02036C32 - _02036C06 - 2; case 2
+ .short _02036C0E - _02036C06 - 2; case 3
+_02036C0E:
+ sub r0, r0, #0x4
+ ldr r0, [r4, r0]
+ bl FUN_0208562C
+ mov r1, #0x73
+ lsl r1, r1, #0x2
+ add r0, r5, #0x0
+ add r1, r4, r1
+ bl FUN_02037844
+ mov r1, #0x7e
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ ldr r1, _02036CE4 ; =FUN_020362E4
+ add r0, r4, #0x0
+ bl FUN_02035D04
+ b _02036CD4
+_02036C32:
+ sub r0, r0, #0x4
+ ldr r0, [r4, r0]
+ bl FUN_0208562C
+ mov r1, #0x7a
+ lsl r1, r1, #0x2
+ ldrb r2, [r6, #0x2]
+ add r0, r5, #0x0
+ add r1, r4, r1
+ bl FUN_020379C8
+ mov r1, #0x7e
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ ldr r1, _02036CE8 ; =FUN_02035E50
+ add r0, r4, #0x0
+ bl FUN_02035D04
+ b _02036CD4
+_02036C58:
+ sub r0, r0, #0x4
+ ldr r0, [r4, r0]
+ bl FUN_020855E4
+ cmp r0, #0x1
+ bne _02036C70
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r2, #0xc
+ bl FUN_02036CEC
+ b _02036CD4
+_02036C70:
+ mov r0, #0x7e
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_0208562C
+ mov r1, #0x7a
+ lsl r1, r1, #0x2
+ ldrb r2, [r6, #0x2]
+ add r0, r5, #0x0
+ add r1, r4, r1
+ bl FUN_020379C8
+ mov r1, #0x7e
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ ldr r1, _02036CE8 ; =FUN_02035E50
+ add r0, r4, #0x0
+ bl FUN_02035D04
+ b _02036CD4
+_02036C98:
+ sub r0, r0, #0x4
+ ldr r0, [r4, r0]
+ bl FUN_020855E4
+ cmp r0, #0x1
+ bne _02036CB0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r2, #0xb
+ bl FUN_02036CEC
+ b _02036CD4
+_02036CB0:
+ mov r0, #0x7e
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_0208562C
+ mov r1, #0x73
+ lsl r1, r1, #0x2
+ add r0, r5, #0x0
+ add r1, r4, r1
+ bl FUN_02037844
+ mov r1, #0x7e
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ ldr r1, _02036CE4 ; =FUN_020362E4
+ add r0, r4, #0x0
+ bl FUN_02035D04
+_02036CD4:
+ mov r0, #0x7f
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ nop
+_02036CE4: .word FUN_020362E4
+_02036CE8: .word FUN_02035E50
+
+ thumb_func_start FUN_02036CEC
+FUN_02036CEC: ; 0x02036CEC
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ mov r0, #0x7f
+ add r6, r1, #0x0
+ str r2, [sp, #0x0]
+ lsl r0, r0, #0x2
+ ldr r7, [r6, r0]
+ mov r0, #0xb
+ mov r1, #0x40
+ bl FUN_02016998
+ mov r1, #0x0
+ mov r2, #0x40
+ add r4, r0, #0x0
+ blx FUN_020DF4A4
+ ldr r0, [r5, #0xc]
+ bl FUN_0206BB1C
+ str r0, [r4, #0x0]
+ ldr r0, [r5, #0xc]
+ bl FUN_0206F158
+ str r0, [r4, #0x4]
+ ldr r0, [r5, #0xc]
+ bl FUN_02025838
+ str r0, [r4, #0x8]
+ ldr r0, [r5, #0xc]
+ bl LoadPlayerDataAddress
+ str r0, [r4, #0xc]
+ mov r0, #0x7a
+ lsl r0, r0, #0x2
+ add r0, r6, r0
+ str r0, [r4, #0x18]
+ add r0, r4, #0x0
+ mov r1, #0x0
+ add r0, #0x21
+ strb r1, [r0, #0x0]
+ ldrh r0, [r7, #0x0]
+ strh r0, [r4, #0x24]
+ add r0, r4, #0x0
+ ldrb r1, [r7, #0x2]
+ add r0, #0x22
+ strb r1, [r0, #0x0]
+ add r1, r4, #0x0
+ ldr r0, [sp, #0x0]
+ add r1, #0x20
+ strb r0, [r1, #0x0]
+ str r5, [r4, #0x1c]
+ ldrb r1, [r7, #0x2]
+ ldr r0, [r4, #0x0]
+ bl FUN_0206B9B0
+ add r1, r0, #0x0
+ mov r0, #0x7e
+ lsl r0, r0, #0x2
+ ldr r0, [r6, r0]
+ bl FUN_0208560C
+ mov r0, #0x7e
+ lsl r0, r0, #0x2
+ ldr r0, [r6, r0]
+ bl FUN_0208562C
+ ldr r1, _02036D8C ; =0x020F96DC
+ add r0, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_020373D4
+ mov r0, #0x7e
+ lsl r0, r0, #0x2
+ str r4, [r6, r0]
+ ldr r1, _02036D90 ; =FUN_02035E50
+ add r0, r6, #0x0
+ bl FUN_02035D04
+ pop {r3-r7, pc}
+ nop
+_02036D8C: .word 0x020F96DC
+_02036D90: .word FUN_02035E50
+
+ thumb_func_start FUN_02036D94
+FUN_02036D94: ; 0x02036D94
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ mov r0, #0x7e
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_02087E14
+ mov r1, #0x73
+ lsl r1, r1, #0x2
+ add r0, r5, #0x0
+ add r1, r4, r1
+ bl FUN_02037844
+ mov r1, #0x7e
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ ldr r1, _02036DD0 ; =FUN_020362E4
+ add r0, r4, #0x0
+ bl FUN_02035D04
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ nop
+_02036DD0: .word FUN_020362E4
+
+ thumb_func_start FUN_02036DD4
+FUN_02036DD4: ; 0x02036DD4
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0204652C
+ mov r1, #0x73
+ add r4, r0, #0x0
+ lsl r1, r1, #0x2
+ add r0, r5, #0x0
+ add r1, r4, r1
+ bl FUN_02037844
+ mov r1, #0x7e
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ ldr r1, _02036E04 ; =FUN_020362E4
+ add r0, r4, #0x0
+ bl FUN_02035D04
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+_02036E04: .word FUN_020362E4
+
+ thumb_func_start FUN_02036E08
+FUN_02036E08: ; 0x02036E08
+ push {r3-r7, lr}
+ sub sp, #0x48
+ add r5, r0, #0x0
+ bl FUN_02046528
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0204652C
+ add r6, r0, #0x0
+ mov r0, #0x7e
+ lsl r0, r0, #0x2
+ ldr r5, [r6, r0]
+ bl FUN_0200541C
+ mov r0, #0x3
+ mov r1, #0x49
+ lsl r2, r0, #0x10
+ bl FUN_0201681C
+ ldr r0, [r4, #0xc]
+ bl FUN_0206BB1C
+ ldrb r1, [r5, #0x0]
+ str r0, [sp, #0x20]
+ bl FUN_0206B9B0
+ str r0, [sp, #0x24]
+ ldrb r0, [r5, #0x1]
+ cmp r0, #0x0
+ ldr r0, [r4, #0xc]
+ bne _02036E9E
+ bl LoadPlayerDataAddress
+ str r0, [sp, #0x28]
+ ldr r0, [r4, #0xc]
+ bl FUN_02079C70
+ add r7, r0, #0x0
+ ldr r0, [r4, #0xc]
+ bl FUN_02024DA0
+ str r0, [sp, #0x2c]
+ ldr r0, [r4, #0xc]
+ bl FUN_0206F158
+ str r0, [sp, #0x30]
+ ldr r0, [r4, #0xc]
+ bl FUN_02029FC8
+ str r0, [sp, #0x34]
+ ldr r0, [r4, #0xc]
+ bl FUN_0204C1A8
+ ldr r1, [sp, #0x2c]
+ str r7, [sp, #0x0]
+ str r1, [sp, #0x4]
+ ldr r1, [sp, #0x30]
+ ldr r3, [sp, #0x28]
+ str r1, [sp, #0x8]
+ ldr r1, [sp, #0x34]
+ str r1, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x8]
+ ldr r1, [sp, #0x24]
+ str r0, [sp, #0x14]
+ mov r0, #0x1
+ str r0, [sp, #0x18]
+ mov r0, #0x49
+ str r0, [sp, #0x1c]
+ ldrh r2, [r5, #0x4]
+ ldr r0, [sp, #0x20]
+ bl FUN_0206C700
+ b _02036EF2
+_02036E9E:
+ bl LoadPlayerDataAddress
+ str r0, [sp, #0x38]
+ ldr r0, [r4, #0xc]
+ bl FUN_02079C70
+ add r7, r0, #0x0
+ ldr r0, [r4, #0xc]
+ bl FUN_02024DA0
+ str r0, [sp, #0x3c]
+ ldr r0, [r4, #0xc]
+ bl FUN_0206F158
+ str r0, [sp, #0x40]
+ ldr r0, [r4, #0xc]
+ bl FUN_02029FC8
+ str r0, [sp, #0x44]
+ ldr r0, [r4, #0xc]
+ bl FUN_0204C1A8
+ ldr r1, [sp, #0x3c]
+ str r7, [sp, #0x0]
+ str r1, [sp, #0x4]
+ ldr r1, [sp, #0x40]
+ ldr r3, [sp, #0x38]
+ str r1, [sp, #0x8]
+ ldr r1, [sp, #0x44]
+ str r1, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x8]
+ ldr r1, [sp, #0x24]
+ str r0, [sp, #0x14]
+ mov r0, #0x0
+ str r0, [sp, #0x18]
+ mov r0, #0x49
+ str r0, [sp, #0x1c]
+ ldrh r2, [r5, #0x4]
+ ldr r0, [sp, #0x20]
+ bl FUN_0206C700
+_02036EF2:
+ add r4, r0, #0x0
+ mov r0, #0xb
+ mov r1, #0x4
+ bl FUN_02016998
+ ldrb r1, [r5, #0x0]
+ str r1, [r0, #0x0]
+ mov r1, #0x7f
+ lsl r1, r1, #0x2
+ str r0, [r6, r1]
+ sub r0, r1, #0x4
+ ldr r0, [r6, r0]
+ bl FUN_02016A18
+ mov r0, #0x7e
+ lsl r0, r0, #0x2
+ str r4, [r6, r0]
+ mov r0, #0x7
+ strh r0, [r6, #0x2a]
+ add sp, #0x48
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02036F1C
+FUN_02036F1C: ; 0x02036F1C
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ mov r0, #0x7e
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_0206C91C
+ cmp r0, #0x1
+ bne _02036F98
+ mov r0, #0x7e
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_0206C92C
+ mov r0, #0x49
+ bl FUN_020168D0
+ ldr r0, _02036F9C ; =0x00000475
+ mov r1, #0x0
+ bl FUN_02005350
+ mov r0, #0x0
+ bl FUN_0200415C
+ ldr r1, [r5, #0x1c]
+ add r0, r5, #0x0
+ ldr r1, [r1, #0x0]
+ bl FUN_0204ADBC
+ mov r1, #0x73
+ lsl r1, r1, #0x2
+ add r0, r5, #0x0
+ add r1, r4, r1
+ bl FUN_02037844
+ mov r1, #0x7e
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ ldr r0, [r4, r1]
+ add r1, r1, #0x4
+ ldr r1, [r4, r1]
+ ldr r1, [r1, #0x0]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl FUN_0206E358
+ mov r0, #0x7f
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ ldr r1, _02036FA0 ; =FUN_020362E4
+ add r0, r4, #0x0
+ bl FUN_02035D04
+_02036F98:
+ pop {r3-r5, pc}
+ nop
+_02036F9C: .word 0x00000475
+_02036FA0: .word FUN_020362E4
+
+ thumb_func_start FUN_02036FA4
+FUN_02036FA4: ; 0x02036FA4
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ ldr r0, [r6, #0x38]
+ add r4, r1, #0x0
+ add r5, r2, #0x0
+ bl FUN_020552F8
+ add r7, r0, #0x0
+ ldr r0, [r6, #0x38]
+ bl FUN_02055320
+ str r0, [r4, #0x0]
+ ldr r0, [r6, #0x38]
+ bl FUN_0205532C
+ str r0, [r5, #0x0]
+ cmp r7, #0x3
+ bhi _02036FFA
+ add r0, r7, r7
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02036FD4: ; jump table (using 16-bit offset)
+ .short _02036FDC - _02036FD4 - 2; case 0
+ .short _02036FE4 - _02036FD4 - 2; case 1
+ .short _02036FEC - _02036FD4 - 2; case 2
+ .short _02036FF4 - _02036FD4 - 2; case 3
+_02036FDC:
+ ldr r0, [r5, #0x0]
+ sub r0, r0, #0x1
+ str r0, [r5, #0x0]
+ b _02036FFA
+_02036FE4:
+ ldr r0, [r5, #0x0]
+ add r0, r0, #0x1
+ str r0, [r5, #0x0]
+ b _02036FFA
+_02036FEC:
+ ldr r0, [r4, #0x0]
+ sub r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02036FFA
+_02036FF4:
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+_02036FFA:
+ add r0, r7, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02037000
+FUN_02037000: ; 0x02037000
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ bl FUN_020553A0
+ bl FUN_02058BE4
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058BE4
+ cmp r4, r0
+ bne _0203701C
+ mov r0, #0x1
+ b _0203701E
+_0203701C:
+ mov r0, #0x0
+_0203701E:
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02037024
+FUN_02037024: ; 0x02037024
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r6, r1, #0x0
+ add r1, sp, #0x4
+ add r2, sp, #0x0
+ add r5, r0, #0x0
+ bl FUN_02036FA4
+ add r4, r0, #0x0
+ ldr r1, [sp, #0x4]
+ ldr r2, [sp, #0x0]
+ add r0, r5, #0x0
+ bl FUN_0204A6E0
+ bl FUN_020547A4
+ cmp r0, #0x1
+ bne _0203707E
+ cmp r4, #0x3
+ bhi _0203707E
+ add r0, r4, r4
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02037058: ; jump table (using 16-bit offset)
+ .short _02037060 - _02037058 - 2; case 0
+ .short _02037068 - _02037058 - 2; case 1
+ .short _02037070 - _02037058 - 2; case 2
+ .short _02037078 - _02037058 - 2; case 3
+_02037060:
+ ldr r0, [sp, #0x0]
+ sub r0, r0, #0x1
+ str r0, [sp, #0x0]
+ b _0203707E
+_02037068:
+ ldr r0, [sp, #0x0]
+ add r0, r0, #0x1
+ str r0, [sp, #0x0]
+ b _0203707E
+_02037070:
+ ldr r0, [sp, #0x4]
+ sub r0, r0, #0x1
+ str r0, [sp, #0x4]
+ b _0203707E
+_02037078:
+ ldr r0, [sp, #0x4]
+ add r0, r0, #0x1
+ str r0, [sp, #0x4]
+_0203707E:
+ ldr r0, [r5, #0x34]
+ ldr r1, [sp, #0x4]
+ ldr r2, [sp, #0x0]
+ bl FUN_02058D74
+ str r0, [r6, #0x0]
+ add sp, #0x8
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02037090
+FUN_02037090: ; 0x02037090
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ bl FUN_02037024
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ beq _020370B8
+ bl FUN_020588D4
+ cmp r0, #0x1
+ bne _020370B8
+ ldr r0, [r5, #0x38]
+ ldr r1, [r4, #0x0]
+ bl FUN_02037000
+ cmp r0, #0x1
+ bne _020370B8
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_020370B8:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_020370BC
+FUN_020370BC: ; 0x020370BC
+ push {r3-r7, lr}
+ sub sp, #0x10
+ str r1, [sp, #0x0]
+ str r2, [sp, #0x4]
+ add r1, sp, #0xc
+ add r2, sp, #0x8
+ add r6, r0, #0x0
+ bl FUN_02036FA4
+ ldr r0, [sp, #0x4]
+ mov r7, #0x0
+ cmp r0, #0x0
+ ble _02037130
+ ldr r4, [sp, #0x0]
+ add r5, r4, #0x0
+_020370DA:
+ ldr r1, [sp, #0xc]
+ ldr r0, [r4, #0x4]
+ cmp r1, r0
+ bne _02037124
+ ldr r1, [sp, #0x8]
+ ldr r0, [r4, #0x8]
+ cmp r1, r0
+ bne _02037124
+ ldrh r0, [r4, #0x2]
+ cmp r0, #0x2
+ bne _0203710A
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ bl FUN_0203713C
+ cmp r0, #0x1
+ bne _02037124
+ mov r0, #0x14
+ add r1, r7, #0x0
+ mul r1, r0
+ ldr r0, [sp, #0x0]
+ add sp, #0x10
+ ldrh r0, [r0, r1]
+ pop {r3-r7, pc}
+_0203710A:
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ bl FUN_02037168
+ cmp r0, #0x1
+ bne _02037124
+ mov r0, #0x14
+ add r1, r7, #0x0
+ mul r1, r0
+ ldr r0, [sp, #0x0]
+ add sp, #0x10
+ ldrh r0, [r0, r1]
+ pop {r3-r7, pc}
+_02037124:
+ ldr r0, [sp, #0x4]
+ add r7, r7, #0x1
+ add r4, #0x14
+ add r5, #0x14
+ cmp r7, r0
+ blt _020370DA
+_02037130:
+ ldr r0, _02037138 ; =0x0000FFFF
+ add sp, #0x10
+ pop {r3-r7, pc}
+ nop
+_02037138: .word 0x0000FFFF
+
+ thumb_func_start FUN_0203713C
+FUN_0203713C: ; 0x0203713C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldrh r0, [r1, #0x2]
+ cmp r0, #0x2
+ beq _0203714A
+ mov r0, #0x0
+ pop {r4, pc}
+_0203714A:
+ ldrh r0, [r1, #0x0]
+ bl FUN_02039694
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02039528
+ cmp r0, #0x1
+ beq _02037160
+ mov r0, #0x1
+ b _02037162
+_02037160:
+ mov r0, #0x0
+_02037162:
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ pop {r4, pc}
+
+ thumb_func_start FUN_02037168
+FUN_02037168: ; 0x02037168
+ push {r4, lr}
+ add r4, r1, #0x0
+ ldrh r1, [r4, #0x10]
+ cmp r1, #0x4
+ bne _02037176
+ mov r0, #0x1
+ pop {r4, pc}
+_02037176:
+ ldr r0, [r0, #0x38]
+ bl FUN_020552F8
+ cmp r0, #0x3
+ bhi _020371CC
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0203718C: ; jump table (using 16-bit offset)
+ .short _02037194 - _0203718C - 2; case 0
+ .short _020371A2 - _0203718C - 2; case 1
+ .short _020371B0 - _0203718C - 2; case 2
+ .short _020371BE - _0203718C - 2; case 3
+_02037194:
+ ldrh r0, [r4, #0x10]
+ cmp r0, #0x0
+ beq _0203719E
+ cmp r0, #0x6
+ bne _020371CC
+_0203719E:
+ mov r0, #0x1
+ pop {r4, pc}
+_020371A2:
+ ldrh r0, [r4, #0x10]
+ cmp r0, #0x3
+ beq _020371AC
+ cmp r0, #0x6
+ bne _020371CC
+_020371AC:
+ mov r0, #0x1
+ pop {r4, pc}
+_020371B0:
+ ldrh r0, [r4, #0x10]
+ cmp r0, #0x2
+ beq _020371BA
+ cmp r0, #0x5
+ bne _020371CC
+_020371BA:
+ mov r0, #0x1
+ pop {r4, pc}
+_020371BE:
+ ldrh r0, [r4, #0x10]
+ cmp r0, #0x1
+ beq _020371C8
+ cmp r0, #0x5
+ bne _020371CC
+_020371C8:
+ mov r0, #0x1
+ pop {r4, pc}
+_020371CC:
+ mov r0, #0x0
+ pop {r4, pc}
+
+ thumb_func_start FUN_020371D0
+FUN_020371D0: ; 0x020371D0
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x38]
+ add r6, r1, #0x0
+ add r4, r2, #0x0
+ bl FUN_020552F8
+ cmp r0, #0x0
+ beq _020371EA
+ add sp, #0x8
+ ldr r0, _0203722C ; =0x0000FFFF
+ pop {r4-r6, pc}
+_020371EA:
+ add r0, r5, #0x0
+ add r1, sp, #0x4
+ add r2, sp, #0x0
+ bl FUN_02036FA4
+ mov r0, #0x0
+ cmp r4, #0x0
+ ble _02037224
+ ldr r2, [sp, #0x4]
+ ldr r3, [sp, #0x0]
+ add r1, r6, #0x0
+_02037200:
+ ldr r5, [r1, #0x4]
+ cmp r2, r5
+ bne _0203721C
+ ldr r5, [r1, #0x8]
+ cmp r3, r5
+ bne _0203721C
+ ldrh r5, [r1, #0x2]
+ cmp r5, #0x1
+ bne _0203721C
+ mov r1, #0x14
+ mul r1, r0
+ add sp, #0x8
+ ldrh r0, [r6, r1]
+ pop {r4-r6, pc}
+_0203721C:
+ add r0, r0, #0x1
+ add r1, #0x14
+ cmp r0, r4
+ blt _02037200
+_02037224:
+ ldr r0, _0203722C ; =0x0000FFFF
+ add sp, #0x8
+ pop {r4-r6, pc}
+ nop
+_0203722C: .word 0x0000FFFF
+
+ thumb_func_start FUN_02037230
+FUN_02037230: ; 0x02037230
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x38]
+ add r4, r1, #0x0
+ bl FUN_020552F8
+ cmp r0, #0x0
+ beq _02037244
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_02037244:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02037090
+ cmp r0, #0x1
+ bne _02037260
+ ldr r0, [r4, #0x0]
+ bl FUN_02058458
+ sub r0, #0x5b
+ cmp r0, #0x5
+ bhi _02037260
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_02037260:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02037264
+FUN_02037264: ; 0x02037264
+ push {r4-r7, lr}
+ sub sp, #0xc
+ str r0, [sp, #0x0]
+ ldr r0, [r0, #0x38]
+ str r1, [sp, #0x4]
+ str r2, [sp, #0x8]
+ bl FUN_02055320
+ add r6, r0, #0x0
+ ldr r0, [sp, #0x0]
+ ldr r0, [r0, #0x38]
+ bl FUN_0205532C
+ add r4, r0, #0x0
+ ldr r0, [sp, #0x8]
+ mov r7, #0x0
+ cmp r0, #0x0
+ ble _020372C8
+ ldr r5, [sp, #0x4]
+_0203728A:
+ ldrh r1, [r5, #0x2]
+ cmp r6, r1
+ blt _020372BE
+ ldrh r0, [r5, #0x6]
+ add r0, r1, r0
+ cmp r6, r0
+ bge _020372BE
+ ldrh r1, [r5, #0x4]
+ cmp r4, r1
+ blt _020372BE
+ ldrh r0, [r5, #0x8]
+ add r0, r1, r0
+ cmp r4, r0
+ bge _020372BE
+ ldrh r1, [r5, #0xe]
+ ldr r0, [sp, #0x0]
+ bl FUN_020394F0
+ ldrh r1, [r5, #0xc]
+ cmp r1, r0
+ bne _020372BE
+ ldr r0, [sp, #0x4]
+ lsl r1, r7, #0x4
+ add sp, #0xc
+ ldrh r0, [r0, r1]
+ pop {r4-r7, pc}
+_020372BE:
+ ldr r0, [sp, #0x8]
+ add r7, r7, #0x1
+ add r5, #0x10
+ cmp r7, r0
+ blt _0203728A
+_020372C8:
+ ldr r0, _020372D0 ; =0x0000FFFF
+ add sp, #0xc
+ pop {r4-r7, pc}
+ nop
+_020372D0: .word 0x0000FFFF
+
+ thumb_func_start FUN_020372D4
+FUN_020372D4: ; 0x020372D4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_0200628C
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02037400
+ ldr r1, _02037300 ; =0x021C5A08
+ str r0, [r1, #0x0]
+ ldr r1, [r4, #0x4]
+ cmp r1, #0x0
+ beq _020372F4
+ bl FUN_02048FC8
+ b _020372F8
+_020372F4:
+ bl FUN_02048EC8
+_020372F8:
+ mov r0, #0x0
+ str r0, [r4, #0x4]
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ .balign 4
+_02037300: .word 0x021C5A08
+
+ thumb_func_start FUN_02037304
+FUN_02037304: ; 0x02037304
+ push {r3, lr}
+ bl FUN_02037400
+ ldr r1, _02037318 ; =0x021C5A08
+ str r0, [r1, #0x0]
+ bl FUN_02048D90
+ mov r0, #0x1
+ pop {r3, pc}
+ nop
+_02037318: .word 0x021C5A08
+
+ thumb_func_start FUN_0203731C
+FUN_0203731C: ; 0x0203731C
+ push {r3, lr}
+ bl FUN_02006278
+ bl FUN_02037524
+ cmp r0, #0x0
+ beq _0203732E
+ mov r0, #0x1
+ pop {r3, pc}
+_0203732E:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02037334
+FUN_02037334: ; 0x02037334
+ push {r3, lr}
+ bl FUN_020374B0
+ ldr r0, _02037348 ; =0x0000003F
+ ldr r1, _0203734C ; =0x021DBAB8
+ bl FUN_02000E7C
+ mov r0, #0x1
+ pop {r3, pc}
+ nop
+_02037348: .word 0x0000003F
+_0203734C: .word 0x021DBAB8
+
+ thumb_func_start FUN_02037350
+FUN_02037350: ; 0x02037350
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ ldr r0, [r0, #0x4]
+ cmp r0, #0x0
+ beq _02037360
+ bl ErrorHandling
+_02037360:
+ ldr r0, [r4, #0x0]
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _0203736C
+ bl ErrorHandling
+_0203736C:
+ ldr r0, _0203738C ; =0x00000005
+ mov r1, #0x2
+ bl FUN_02005FDC
+ mov r1, #0x0
+ str r1, [r4, #0x64]
+ ldr r0, [r4, #0x0]
+ mov r2, #0xb
+ str r1, [r0, #0x8]
+ ldr r0, _02037390 ; =0x021F64C8
+ add r1, r4, #0x0
+ bl FUN_02006234
+ ldr r1, [r4, #0x0]
+ str r0, [r1, #0x0]
+ pop {r4, pc}
+ .balign 4
+_0203738C: .word 0x00000005
+_02037390: .word 0x021F64C8
+
+ thumb_func_start FUN_02037394
+FUN_02037394: ; 0x02037394
+ mov r1, #0x0
+ str r1, [r0, #0x64]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0203739C
+FUN_0203739C: ; 0x0203739C
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _020373A8
+ mov r0, #0x1
+ bx lr
+_020373A8:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_020373AC
+FUN_020373AC: ; 0x020373AC
+ ldr r1, [r0, #0x0]
+ ldr r1, [r1, #0x0]
+ cmp r1, #0x0
+ beq _020373BE
+ ldr r0, [r0, #0x64]
+ cmp r0, #0x0
+ beq _020373BE
+ mov r0, #0x1
+ bx lr
+_020373BE:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020373C4
+FUN_020373C4: ; 0x020373C4
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x4]
+ cmp r0, #0x0
+ beq _020373D0
+ mov r0, #0x1
+ bx lr
+_020373D0:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_020373D4
+FUN_020373D4: ; 0x020373D4
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ add r4, r1, #0x0
+ ldr r0, [r0, #0x4]
+ add r6, r2, #0x0
+ cmp r0, #0x0
+ beq _020373E8
+ bl ErrorHandling
+_020373E8:
+ add r0, r5, #0x0
+ bl FUN_02037394
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ mov r2, #0xb
+ bl FUN_02006234
+ ldr r1, [r5, #0x0]
+ str r0, [r1, #0x4]
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02037400
+FUN_02037400: ; 0x02037400
+ push {r3-r5, lr}
+ mov r2, #0x7
+ add r5, r0, #0x0
+ mov r0, #0x3
+ mov r1, #0xb
+ lsl r2, r2, #0xe
+ bl FUN_0201681C
+ mov r1, #0x20
+ mov r0, #0x3
+ lsl r2, r1, #0x9
+ bl FUN_0201681C
+ mov r2, #0x3
+ mov r0, #0x0
+ mov r1, #0x5b
+ lsl r2, r2, #0x8
+ bl FUN_0201681C
+ add r0, r5, #0x0
+ mov r1, #0xb8
+ mov r2, #0xb
+ bl FUN_02006268
+ mov r1, #0x0
+ mov r2, #0xb8
+ add r4, r0, #0x0
+ blx MI_CpuFill8
+ mov r0, #0xb
+ mov r1, #0x10
+ bl FUN_02016998
+ str r0, [r4, #0x0]
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+ ldr r0, [r4, #0x0]
+ str r1, [r0, #0x4]
+ ldr r0, [r4, #0x0]
+ str r1, [r0, #0x8]
+ ldr r0, [r4, #0x0]
+ str r1, [r0, #0xc]
+ add r0, r5, #0x0
+ bl FUN_0200628C
+ ldr r0, [r0, #0x8]
+ str r0, [r4, #0xc]
+ mov r0, #0x0
+ str r0, [r4, #0x10]
+ ldr r0, [r4, #0xc]
+ bl FUN_02034E30
+ bl FUN_02034DC0
+ str r0, [r4, #0x1c]
+ bl FUN_02034494
+ str r0, [r4, #0x28]
+ add r0, r4, #0x0
+ mov r1, #0xb
+ bl FUN_02034A28
+ mov r0, #0xb
+ bl FUN_0206F164
+ add r1, r4, #0x0
+ add r1, #0x94
+ str r0, [r1, #0x0]
+ mov r0, #0xb
+ bl FUN_0205DD18
+ add r1, r4, #0x0
+ add r1, #0x90
+ str r0, [r1, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x90
+ ldr r0, [r0, #0x0]
+ bl FUN_0205DD40
+ mov r0, #0xb
+ bl FUN_0208A300
+ add r1, r4, #0x0
+ add r1, #0xb0
+ str r0, [r1, #0x0]
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020374B0
+FUN_020374B0: ; 0x020374B0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_02006278
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x28]
+ bl FUN_020344D0
+ add r0, r4, #0x0
+ bl FUN_02034A48
+ add r0, r4, #0x0
+ add r0, #0x94
+ ldr r0, [r0, #0x0]
+ bl FUN_02016A18
+ add r0, r4, #0x0
+ add r0, #0x90
+ ldr r0, [r0, #0x0]
+ bl FUN_0205DD38
+ add r0, r4, #0x0
+ add r0, #0xb0
+ ldr r0, [r0, #0x0]
+ bl FUN_0208A320
+ ldr r0, [r4, #0x0]
+ bl FUN_02016A18
+ add r0, r5, #0x0
+ bl FUN_0200627C
+ mov r0, #0x5b
+ bl FUN_020168D0
+ mov r0, #0xb
+ bl FUN_020168D0
+ mov r0, #0x20
+ bl FUN_020168D0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02037504
+FUN_02037504: ; 0x02037504
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ beq _02037520
+ bl FUN_02006290
+ cmp r0, #0x0
+ beq _02037520
+ ldr r0, [r4, #0x0]
+ bl FUN_02006260
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+_02037520:
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02037524
+FUN_02037524: ; 0x02037524
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02037594
+ add r0, r4, #0x0
+ bl FUN_02046420
+ cmp r0, #0x1
+ bne _02037546
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x0
+ beq _02037546
+ mov r1, #0x0
+ add r0, r4, #0x0
+ add r2, r1, #0x0
+ bl FUN_021EFA9C
+_02037546:
+ ldr r0, [r4, #0x0]
+ ldr r1, [r0, #0x0]
+ cmp r1, #0x0
+ beq _02037562
+ bl FUN_02037504
+ ldr r0, [r4, #0x0]
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _0203756E
+ ldr r0, _02037590 ; =0x00000005
+ bl FUN_02005F60
+ b _0203756E
+_02037562:
+ ldr r1, [r0, #0x4]
+ cmp r1, #0x0
+ beq _0203756E
+ add r0, r0, #0x4
+ bl FUN_02037504
+_0203756E:
+ ldr r1, [r4, #0x0]
+ ldr r0, [r1, #0xc]
+ cmp r0, #0x0
+ beq _0203758C
+ ldr r0, [r4, #0x10]
+ cmp r0, #0x0
+ bne _0203758C
+ ldr r0, [r1, #0x0]
+ cmp r0, #0x0
+ bne _0203758C
+ ldr r0, [r1, #0x4]
+ cmp r0, #0x0
+ bne _0203758C
+ mov r0, #0x1
+ pop {r4, pc}
+_0203758C:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+_02037590: .word 0x00000005
+
+ thumb_func_start FUN_02037594
+FUN_02037594: ; 0x02037594
+ push {r3-r5, lr}
+ sub sp, #0x10
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x0]
+ mov r5, #0x0
+ ldr r1, [r1, #0x8]
+ cmp r1, #0x0
+ bne _020375B4
+ ldr r1, [r4, #0x64]
+ cmp r1, #0x0
+ beq _020375B4
+ bl FUN_0204646C
+ cmp r0, #0x0
+ bne _020375B4
+ mov r5, #0x1
+_020375B4:
+ cmp r5, #0x0
+ beq _020375D4
+ ldr r0, [r4, #0x38]
+ bl FUN_02055A38
+ ldr r3, _02037758 ; =0x021C48B8
+ add r0, sp, #0x8
+ ldr r2, [r3, #0x48]
+ ldr r3, [r3, #0x44]
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x10
+ add r1, r4, #0x0
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x10
+ bl FUN_021D8164
+_020375D4:
+ ldr r0, [r4, #0x1c]
+ ldr r2, [r4, #0x6c]
+ ldr r1, [r0, #0x0]
+ ldr r0, _0203775C ; =0x00000146
+ cmp r1, r0
+ bne _020375E2
+ mov r2, #0x0
+_020375E2:
+ cmp r2, #0x4
+ bhi _020376E2
+ add r0, r2, r2
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_020375F2: ; jump table (using 16-bit offset)
+ .short _020376E2 - _020375F2 - 2; case 0
+ .short _020375FC - _020375F2 - 2; case 1
+ .short _02037646 - _020375F2 - 2; case 2
+ .short _0203761C - _020375F2 - 2; case 3
+ .short _02037672 - _020375F2 - 2; case 4
+_020375FC:
+ cmp r5, #0x0
+ beq _02037610
+ bl FUN_0204E2FC
+ cmp r0, #0x0
+ beq _02037610
+ add r0, sp, #0x8
+ add r1, r4, #0x0
+ bl FUN_021D85FC
+_02037610:
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ bl FUN_0204D6C0
+ add sp, #0x10
+ pop {r3-r5, pc}
+_0203761C:
+ cmp r5, #0x0
+ beq _0203763A
+ bl FUN_0204E2FC
+ cmp r0, #0x0
+ beq _02037638
+ add r0, sp, #0x8
+ add r1, r4, #0x0
+ bl FUN_021D865C
+ cmp r0, #0x1
+ bne _0203763A
+ mov r5, #0x0
+ b _0203763A
+_02037638:
+ mov r5, #0x0
+_0203763A:
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ bl FUN_0204D6C0
+ add sp, #0x10
+ pop {r3-r5, pc}
+_02037646:
+ cmp r5, #0x0
+ bne _0203764C
+ b _02037754
+_0203764C:
+ add r0, sp, #0x8
+ add r1, r4, #0x0
+ bl FUN_021D8758
+ cmp r0, #0x1
+ beq _02037754
+ add r3, sp, #0x8
+ ldrh r0, [r3, #0x6]
+ mov r2, #0x0
+ str r0, [sp, #0x0]
+ str r2, [sp, #0x4]
+ ldrh r3, [r3, #0x4]
+ ldr r0, [r4, #0x38]
+ ldr r1, [r4, #0x24]
+ sub r2, r2, #0x1
+ bl FUN_020557F4
+ add sp, #0x10
+ pop {r3-r5, pc}
+_02037672:
+ cmp r5, #0x0
+ beq _02037754
+ add r0, sp, #0x8
+ add r1, r4, #0x0
+ bl FUN_021D8820
+ cmp r0, #0x1
+ bne _020376A6
+ ldr r0, [r4, #0x4]
+ ldr r0, [r0, #0x8]
+ bl FUN_021E32F0
+ add r0, r4, #0x0
+ mov r1, #0x4
+ bl FUN_021E81BC
+ ldr r0, [r4, #0x38]
+ bl FUN_021E7138
+ add r0, r4, #0x0
+ mov r1, #0x0
+ mov r2, #0x1
+ bl FUN_021EFA9C
+ add sp, #0x10
+ pop {r3-r5, pc}
+_020376A6:
+ ldr r0, _02037758 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x1
+ tst r0, r1
+ beq _020376B8
+ ldr r0, [r4, #0x4]
+ ldr r0, [r0, #0x8]
+ bl FUN_021E32F0
+_020376B8:
+ mov r5, #0x0
+ bl FUN_02037790
+ cmp r0, #0x0
+ beq _020376C8
+ bl FUN_02252534
+ add r5, r0, #0x0
+_020376C8:
+ add r3, sp, #0x8
+ ldrh r0, [r3, #0x6]
+ mov r2, #0x0
+ mvn r2, r2
+ str r0, [sp, #0x0]
+ str r5, [sp, #0x4]
+ ldrh r3, [r3, #0x4]
+ ldr r0, [r4, #0x38]
+ ldr r1, [r4, #0x24]
+ bl FUN_020557F4
+ add sp, #0x10
+ pop {r3-r5, pc}
+_020376E2:
+ cmp r5, #0x0
+ beq _02037754
+ add r0, sp, #0x8
+ add r1, r4, #0x0
+ bl FUN_021D8320
+ cmp r0, #0x1
+ bne _0203771C
+ ldr r0, [r4, #0x4]
+ ldr r0, [r0, #0x8]
+ bl FUN_021E32F0
+ add r0, r4, #0x0
+ mov r1, #0x4
+ bl FUN_021E81BC
+ ldr r0, [r4, #0x38]
+ bl FUN_02055B14
+ ldr r0, [r4, #0x38]
+ bl FUN_021E7138
+ add r0, r4, #0x0
+ mov r1, #0x0
+ mov r2, #0x1
+ bl FUN_021EFA9C
+ add sp, #0x10
+ pop {r3-r5, pc}
+_0203771C:
+ ldr r0, _02037758 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x1
+ tst r0, r1
+ beq _0203772E
+ ldr r0, [r4, #0x4]
+ ldr r0, [r0, #0x8]
+ bl FUN_021E32F0
+_0203772E:
+ mov r5, #0x0
+ bl FUN_02037790
+ cmp r0, #0x0
+ beq _0203773E
+ bl FUN_02252534
+ add r5, r0, #0x0
+_0203773E:
+ add r3, sp, #0x8
+ ldrh r0, [r3, #0x6]
+ mov r2, #0x0
+ mvn r2, r2
+ str r0, [sp, #0x0]
+ str r5, [sp, #0x4]
+ ldrh r3, [r3, #0x4]
+ ldr r0, [r4, #0x38]
+ ldr r1, [r4, #0x24]
+ bl FUN_020557F4
+_02037754:
+ add sp, #0x10
+ pop {r3-r5, pc}
+ .balign 4
+_02037758: .word 0x021C48B8
+_0203775C: .word 0x00000146
+
+ thumb_func_start FUN_02037760
+FUN_02037760: ; 0x02037760
+ ldr r0, _02037770 ; =0x021C5A08
+ ldr r3, _02037774 ; =FUN_02030FC8
+ ldr r0, [r0, #0x0]
+ mov r1, #0x1
+ ldr r0, [r0, #0x0]
+ str r1, [r0, #0x8]
+ bx r3
+ nop
+_02037770: .word 0x021C5A08
+_02037774: .word FUN_02030FC8
+
+ thumb_func_start FUN_02037778
+FUN_02037778: ; 0x02037778
+ ldr r0, _02037788 ; =0x021C5A08
+ ldr r3, _0203778C ; =FUN_02030FA8
+ ldr r0, [r0, #0x0]
+ mov r1, #0x0
+ ldr r0, [r0, #0x0]
+ str r1, [r0, #0x8]
+ bx r3
+ nop
+_02037788: .word 0x021C5A08
+_0203778C: .word FUN_02030FA8
+
+ thumb_func_start FUN_02037790
+FUN_02037790: ; 0x02037790
+ ldr r0, _020377A4 ; =0x021C5A08
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x4]
+ cmp r0, #0x0
+ bne _0203779E
+ mov r0, #0x0
+ bx lr
+_0203779E:
+ ldr r0, [r0, #0x14]
+ bx lr
+ nop
+_020377A4: .word 0x021C5A08
+
+ thumb_func_start FUN_020377A8
+FUN_020377A8: ; 0x020377A8
+ ldr r0, [r0, #0x8]
+ bx lr
+
+ thumb_func_start FUN_020377AC
+FUN_020377AC: ; 0x020377AC
+ ldr r0, [r0, #0xc]
+ bx lr
+
+ thumb_func_start FUN_020377B0
+FUN_020377B0: ; 0x020377B0
+ ldr r2, _020377C4 ; =0x020F2B9C
+ add r3, r0, #0x0
+ ldmia r2!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldmia r2!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldr r0, [r2, #0x0]
+ str r0, [r3, #0x0]
+ bx lr
+ nop
+_020377C4: .word 0x020F2B9C
+
+ thumb_func_start FUN_020377C8
+FUN_020377C8: ; 0x020377C8
+ ldr r2, _020377DC ; =0x020F2BB0
+ add r3, r0, #0x0
+ ldmia r2!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldmia r2!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldr r0, [r2, #0x0]
+ str r0, [r3, #0x0]
+ bx lr
+ nop
+_020377DC: .word 0x020F2BB0
+
+ thumb_func_start FUN_020377E0
+FUN_020377E0: ; 0x020377E0
+ push {r3, lr}
+ bl FUN_02034E30
+ bl FUN_02034DC0
+ bl FUN_020377B0
+ pop {r3, pc}
+
+ thumb_func_start FUN_020377F0
+FUN_020377F0: ; 0x020377F0
+ mov r0, #0x1
+ bx lr
+
+ thumb_func_start FUN_020377F4
+FUN_020377F4: ; 0x020377F4
+ push {r3, lr}
+ bl FUN_0222D5C0
+ cmp r0, #0x0
+ beq _02037802
+ mov r0, #0x1
+ pop {r3, pc}
+_02037802:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02037808
+FUN_02037808: ; 0x02037808
+ mov r0, #0x1
+ bx lr
+
+ thumb_func_start FUN_0203780C
+FUN_0203780C: ; 0x0203780C
+ ldr r3, _02037814 ; =FUN_020373D4
+ add r2, r1, #0x0
+ ldr r1, _02037818 ; =0x020F2D94
+ bx r3
+ .balign 4
+_02037814: .word FUN_020373D4
+_02037818: .word 0x020F2D94
+
+ thumb_func_start FUN_0203781C
+FUN_0203781C: ; 0x0203781C
+ push {r4-r6, lr}
+ sub sp, #0x10
+ ldr r5, _02037840 ; =0x020F2D74
+ add r4, sp, #0x0
+ add r6, r0, #0x0
+ add r2, r1, #0x0
+ add r3, r4, #0x0
+ ldmia r5!, {r0-r1}
+ stmia r4!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r4!, {r0-r1}
+ add r0, r6, #0x0
+ add r1, r3, #0x0
+ bl FUN_020373D4
+ add sp, #0x10
+ pop {r4-r6, pc}
+ nop
+_02037840: .word 0x020F2D74
+
+ thumb_func_start FUN_02037844
+FUN_02037844: ; 0x02037844
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0xc]
+ add r6, r1, #0x0
+ bl FUN_0206F158
+ ldr r1, _02037898 ; =0x020F2BDC
+ mov r2, #0xb
+ bl FUN_0206EFEC
+ add r3, r5, #0x0
+ add r3, #0x94
+ ldr r1, [r5, #0xc]
+ ldr r3, [r3, #0x0]
+ mov r2, #0x0
+ add r4, r0, #0x0
+ bl FUN_0206E314
+ ldr r1, [r5, #0x6c]
+ add r0, r4, #0x0
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ bl FUN_0206E360
+ ldr r0, [r5, #0x38]
+ bl FUN_020553C4
+ cmp r0, #0x1
+ bne _02037884
+ add r0, r4, #0x0
+ bl FUN_0206E340
+_02037884:
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ bl FUN_0206E354
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0203781C
+ add r0, r4, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+_02037898: .word 0x020F2BDC
+
+ thumb_func_start FUN_0203789C
+FUN_0203789C: ; 0x0203789C
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0xc]
+ add r4, r1, #0x0
+ bl FUN_0206F158
+ add r6, r0, #0x0
+ cmp r4, #0x0
+ beq _020378B4
+ cmp r4, #0x1
+ beq _020378BC
+ b _020378C4
+_020378B4:
+ ldr r1, _020378F0 ; =0x020F2BC8
+ ldr r0, _020378F4 ; =0x02105DB8
+ str r1, [r0, #0x0]
+ b _020378C8
+_020378BC:
+ ldr r1, _020378F8 ; =0x020F2BC4
+ ldr r0, _020378F4 ; =0x02105DB8
+ str r1, [r0, #0x0]
+ b _020378C8
+_020378C4:
+ bl ErrorHandling
+_020378C8:
+ ldr r1, _020378F4 ; =0x02105DB8
+ add r0, r6, #0x0
+ ldr r1, [r1, #0x0]
+ mov r2, #0x20
+ bl FUN_0206EFEC
+ add r3, r5, #0x0
+ add r3, #0x94
+ ldr r1, [r5, #0xc]
+ ldr r3, [r3, #0x0]
+ add r4, r0, #0x0
+ mov r2, #0x3
+ bl FUN_0206E314
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0203781C
+ add r0, r4, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+_020378F0: .word 0x020F2BC8
+_020378F4: .word 0x02105DB8
+_020378F8: .word 0x020F2BC4
+
+ thumb_func_start FUN_020378FC
+FUN_020378FC: ; 0x020378FC
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_0206E37C
+ add r4, r0, #0x0
+ beq _02037916
+ add r0, r5, #0x0
+ bl FUN_0206E384
+ cmp r0, #0x5
+ bne _02037916
+ bl ErrorHandling
+_02037916:
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203791C
+FUN_0203791C: ; 0x0203791C
+ push {r4-r6, lr}
+ sub sp, #0x10
+ ldr r5, _02037940 ; =0x020F2D44
+ add r4, sp, #0x0
+ add r6, r0, #0x0
+ add r2, r1, #0x0
+ add r3, r4, #0x0
+ ldmia r5!, {r0-r1}
+ stmia r4!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r4!, {r0-r1}
+ add r0, r6, #0x0
+ add r1, r3, #0x0
+ bl FUN_020373D4
+ add sp, #0x10
+ pop {r4-r6, pc}
+ nop
+_02037940: .word 0x020F2D44
+
+ thumb_func_start FUN_02037944
+FUN_02037944: ; 0x02037944
+ push {r3-r5, lr}
+ sub sp, #0x10
+ ldr r4, _02037968 ; =0x020F2D24
+ add r3, sp, #0x0
+ add r5, r0, #0x0
+ add r2, r3, #0x0
+ ldmia r4!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldmia r4!, {r0-r1}
+ stmia r3!, {r0-r1}
+ add r1, r2, #0x0
+ ldr r2, [r5, #0xc]
+ add r0, r5, #0x0
+ bl FUN_020373D4
+ add sp, #0x10
+ pop {r3-r5, pc}
+ nop
+_02037968: .word 0x020F2D24
+
+ thumb_func_start FUN_0203796C
+FUN_0203796C: ; 0x0203796C
+ ldr r3, _02037974 ; =FUN_020373D4
+ add r2, r1, #0x0
+ ldr r1, _02037978 ; =0x020FA6E8
+ bx r3
+ .balign 4
+_02037974: .word FUN_020373D4
+_02037978: .word 0x020FA6E8
+
+ thumb_func_start FUN_0203797C
+FUN_0203797C: ; 0x0203797C
+ push {r3-r7, lr}
+ add r5, r1, #0x0
+ mov r1, #0x40
+ add r6, r2, #0x0
+ add r7, r3, #0x0
+ bl FUN_02016998
+ add r4, r0, #0x0
+ mov r0, #0x0
+ add r1, r4, #0x0
+ mov r2, #0x40
+ blx MIi_CpuClearFast
+ ldr r0, [r5, #0xc]
+ bl FUN_0206BB1C
+ str r0, [r4, #0x0]
+ ldr r0, [r5, #0xc]
+ bl FUN_0206F158
+ str r0, [r4, #0x4]
+ ldr r0, [r5, #0xc]
+ bl FUN_02025838
+ str r0, [r4, #0x8]
+ ldr r0, [r5, #0xc]
+ bl LoadPlayerDataAddress
+ str r0, [r4, #0xc]
+ add r0, r4, #0x0
+ add r0, #0x21
+ strb r6, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x20
+ strb r7, [r0, #0x0]
+ str r5, [r4, #0x1c]
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_020379C8
+FUN_020379C8: ; 0x020379C8
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r7, r2, #0x0
+ mov r2, #0x0
+ add r6, r1, #0x0
+ mov r0, #0xb
+ add r1, r5, #0x0
+ add r3, r2, #0x0
+ bl FUN_0203797C
+ add r4, r0, #0x0
+ str r6, [r4, #0x18]
+ add r0, #0x22
+ strb r7, [r0, #0x0]
+ ldr r1, _020379F4 ; =0x020F96DC
+ add r0, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_020373D4
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+ nop
+_020379F4: .word 0x020F96DC
+
+ thumb_func_start FUN_020379F8
+FUN_020379F8: ; 0x020379F8
+ push {r3-r5, lr}
+ mov r0, #0xb
+ mov r2, #0x0
+ mov r3, #0x3
+ add r5, r1, #0x0
+ bl FUN_0203797C
+ add r4, r0, #0x0
+ ldr r1, _02037A18 ; =0x020F96DC
+ add r0, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_020373D4
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ nop
+_02037A18: .word 0x020F96DC
+
+ thumb_func_start FUN_02037A1C
+FUN_02037A1C: ; 0x02037A1C
+ push {r3-r5, lr}
+ mov r0, #0xb
+ mov r2, #0x0
+ mov r3, #0x13
+ add r5, r1, #0x0
+ bl FUN_0203797C
+ add r4, r0, #0x0
+ ldr r1, _02037A3C ; =0x020F96DC
+ add r0, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_020373D4
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ nop
+_02037A3C: .word 0x020F96DC
+
+ thumb_func_start FUN_02037A40
+FUN_02037A40: ; 0x02037A40
+ add r0, #0x22
+ ldrb r0, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02037A48
+FUN_02037A48: ; 0x02037A48
+ push {r4-r6, lr}
+ add r4, r2, #0x0
+ mov r0, #0xb
+ mov r2, #0x0
+ mov r3, #0x12
+ add r5, r1, #0x0
+ bl FUN_0203797C
+ add r6, r0, #0x0
+ add r0, #0x22
+ strb r4, [r0, #0x0]
+ ldr r1, _02037A6C ; =0x020F96DC
+ add r0, r5, #0x0
+ add r2, r6, #0x0
+ bl FUN_020373D4
+ add r0, r6, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+_02037A6C: .word 0x020F96DC
+
+ thumb_func_start FUN_02037A70
+FUN_02037A70: ; 0x02037A70
+ add r0, #0x23
+ ldrb r0, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02037A78
+FUN_02037A78: ; 0x02037A78
+ ldrb r0, [r0, #0x14]
+ bx lr
+
+ thumb_func_start FUN_02037A7C
+FUN_02037A7C: ; 0x02037A7C
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl FUN_02046528
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02046530
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ cmp r0, #0x4
+ bhi _02037B3A
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02037AA8: ; jump table (using 16-bit offset)
+ .short _02037AB2 - _02037AA8 - 2; case 0
+ .short _02037AC2 - _02037AA8 - 2; case 1
+ .short _02037AF8 - _02037AA8 - 2; case 2
+ .short _02037B1A - _02037AA8 - 2; case 3
+ .short _02037B30 - _02037AA8 - 2; case 4
+_02037AB2:
+ ldr r1, _02037B40 ; =0x020F96DC
+ ldr r2, [r4, #0x4]
+ add r0, r6, #0x0
+ bl FUN_020373D4
+ mov r0, #0x1
+ str r0, [r5, #0x0]
+ b _02037B3A
+_02037AC2:
+ add r0, r6, #0x0
+ bl FUN_0204647C
+ cmp r0, #0x0
+ bne _02037B3A
+ ldr r0, [r4, #0x4]
+ add r0, #0x22
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x6
+ beq _02037AE6
+ cmp r0, #0x7
+ bne _02037AF2
+ mov r0, #0x2
+ bl FUN_020527D8
+ mov r0, #0x4
+ str r0, [r5, #0x0]
+ b _02037B3A
+_02037AE6:
+ mov r0, #0x1
+ bl FUN_020527D8
+ mov r0, #0x4
+ str r0, [r5, #0x0]
+ b _02037B3A
+_02037AF2:
+ mov r0, #0x2
+ str r0, [r5, #0x0]
+ b _02037B3A
+_02037AF8:
+ ldr r1, [r4, #0x0]
+ add r0, r6, #0x0
+ mov r2, #0x0
+ bl FUN_02037C7C
+ str r0, [r4, #0x8]
+ ldr r1, [r4, #0x4]
+ add r1, #0x22
+ ldrb r1, [r1, #0x0]
+ strb r1, [r0, #0x14]
+ ldr r1, [r4, #0x8]
+ add r0, r6, #0x0
+ bl FUN_0203796C
+ mov r0, #0x3
+ str r0, [r5, #0x0]
+ b _02037B3A
+_02037B1A:
+ add r0, r6, #0x0
+ bl FUN_0204647C
+ cmp r0, #0x0
+ bne _02037B3A
+ ldr r0, [r4, #0x8]
+ bl FUN_02016A18
+ mov r0, #0x0
+ str r0, [r5, #0x0]
+ b _02037B3A
+_02037B30:
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_02037B3A:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ nop
+_02037B40: .word 0x020F96DC
+
+ thumb_func_start FUN_02037B44
+FUN_02037B44: ; 0x02037B44
+ push {r3-r7, lr}
+ add r5, r1, #0x0
+ add r7, r0, #0x0
+ bl FUN_02046528
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0xc
+ bl FUN_02016998
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ mov r2, #0x0
+ mov r3, #0x2
+ str r5, [r4, #0x0]
+ bl FUN_0203797C
+ add r5, r0, #0x0
+ add r0, #0x32
+ ldrb r1, [r0, #0x0]
+ mov r0, #0xf
+ add r2, r4, #0x0
+ bic r1, r0
+ mov r0, #0x2
+ orr r1, r0
+ add r0, r5, #0x0
+ add r0, #0x32
+ strb r1, [r0, #0x0]
+ add r0, r5, #0x0
+ add r0, #0x32
+ ldrb r1, [r0, #0x0]
+ mov r0, #0xf0
+ bic r1, r0
+ mov r0, #0x20
+ orr r1, r0
+ add r0, r5, #0x0
+ add r0, #0x32
+ strb r1, [r0, #0x0]
+ add r0, r5, #0x0
+ mov r1, #0x1e
+ add r0, #0x33
+ strb r1, [r0, #0x0]
+ mov r0, #0x0
+ str r0, [r5, #0x14]
+ ldr r1, _02037BAC ; =FUN_02037A7C
+ add r0, r7, #0x0
+ str r5, [r4, #0x4]
+ bl FUN_0204640C
+ add r0, r5, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+_02037BAC: .word FUN_02037A7C
+
+ thumb_func_start FUN_02037BB0
+FUN_02037BB0: ; 0x02037BB0
+ push {r3-r7, lr}
+ add r5, r2, #0x0
+ add r6, r3, #0x0
+ mov r0, #0xb
+ mov r2, #0x0
+ mov r3, #0xd
+ add r7, r1, #0x0
+ bl FUN_0203797C
+ add r4, r0, #0x0
+ ldr r1, [sp, #0x1c]
+ add r0, #0x22
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0x2
+ add r0, #0x29
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x2a
+ strb r5, [r0, #0x0]
+ ldr r0, [sp, #0x18]
+ cmp r0, #0x0
+ bne _02037BE6
+ add r0, r4, #0x0
+ add r0, #0x2b
+ strb r6, [r0, #0x0]
+ b _02037BEE
+_02037BE6:
+ add r0, r4, #0x0
+ mov r1, #0x0
+ add r0, #0x2b
+ strb r1, [r0, #0x0]
+_02037BEE:
+ ldr r1, _02037BFC ; =0x020F96DC
+ add r0, r7, #0x0
+ add r2, r4, #0x0
+ bl FUN_020373D4
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+_02037BFC: .word 0x020F96DC
+
+ thumb_func_start FUN_02037C00
+FUN_02037C00: ; 0x02037C00
+ push {r4-r6, lr}
+ add r5, r1, #0x0
+ mov r0, #0xb
+ mov r1, #0x30
+ add r6, r2, #0x0
+ bl FUN_02016998
+ add r4, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_0206BB1C
+ str r0, [r4, #0x0]
+ ldr r0, [r5, #0xc]
+ bl LoadPlayerDataAddress
+ str r0, [r4, #0x4]
+ mov r0, #0x1
+ strb r0, [r4, #0x11]
+ strb r6, [r4, #0x14]
+ ldr r0, [r4, #0x0]
+ bl FUN_0206B9AC
+ strb r0, [r4, #0x13]
+ mov r0, #0x0
+ strh r0, [r4, #0x18]
+ strb r0, [r4, #0x12]
+ ldr r0, [r5, #0xc]
+ bl FUN_0202A918
+ str r0, [r4, #0x20]
+ ldr r0, [r5, #0xc]
+ bl FUN_0206BB28
+ str r0, [r4, #0x1c]
+ ldr r0, [r5, #0xc]
+ bl FUN_02079C70
+ str r0, [r4, #0x2c]
+ mov r0, #0x0
+ str r0, [r4, #0x28]
+ ldr r1, _02037C74 ; =0x020F2A9C
+ add r0, r4, #0x0
+ bl FUN_0207B000
+ ldr r0, [r5, #0xc]
+ bl FUN_020238F4
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0207C2A4
+ ldr r1, _02037C78 ; =0x020FA6E8
+ add r0, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_020373D4
+ add r0, r4, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+_02037C74: .word 0x020F2A9C
+_02037C78: .word 0x020FA6E8
+
+ thumb_func_start FUN_02037C7C
+FUN_02037C7C: ; 0x02037C7C
+ push {r4-r6, lr}
+ ldr r5, [r0, #0xc]
+ add r0, r1, #0x0
+ mov r1, #0x30
+ add r6, r2, #0x0
+ bl FUN_020169D8
+ mov r1, #0x0
+ mov r2, #0x30
+ add r4, r0, #0x0
+ blx MI_CpuFill8
+ add r0, r5, #0x0
+ bl LoadPlayerDataAddress
+ str r0, [r4, #0x4]
+ add r0, r5, #0x0
+ bl FUN_0206BB1C
+ str r0, [r4, #0x0]
+ mov r0, #0x1
+ strb r0, [r4, #0x11]
+ mov r0, #0x0
+ strb r0, [r4, #0x14]
+ ldr r0, [r4, #0x0]
+ bl FUN_0206B9AC
+ strb r0, [r4, #0x13]
+ mov r0, #0x0
+ strh r0, [r4, #0x18]
+ strb r6, [r4, #0x12]
+ add r0, r5, #0x0
+ bl FUN_0206BB28
+ str r0, [r4, #0x1c]
+ add r0, r5, #0x0
+ bl FUN_02079C70
+ str r0, [r4, #0x2c]
+ add r0, r5, #0x0
+ bl FUN_0202A918
+ str r0, [r4, #0x20]
+ ldr r1, _02037CEC ; =0x020F2BD0
+ add r0, r4, #0x0
+ bl FUN_0207B000
+ add r0, r5, #0x0
+ bl FUN_020238F4
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0207C2A4
+ add r0, r4, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+_02037CEC: .word 0x020F2BD0
+
+ thumb_func_start FUN_02037CF0
+FUN_02037CF0: ; 0x02037CF0
+ push {r4-r6, lr}
+ add r5, r1, #0x0
+ mov r1, #0x30
+ add r6, r2, #0x0
+ bl FUN_02016998
+ mov r1, #0x0
+ mov r2, #0x30
+ add r4, r0, #0x0
+ blx FUN_020DF4A4
+ ldr r0, [r5, #0xc]
+ bl FUN_0206BB1C
+ str r0, [r4, #0x0]
+ ldr r0, [r5, #0xc]
+ bl LoadPlayerDataAddress
+ str r0, [r4, #0x4]
+ mov r0, #0x1
+ strb r0, [r4, #0x11]
+ strb r6, [r4, #0x14]
+ strb r0, [r4, #0x13]
+ mov r0, #0x0
+ strh r0, [r4, #0x18]
+ mov r0, #0x2
+ strb r0, [r4, #0x12]
+ ldr r0, [r5, #0xc]
+ bl FUN_0206BB28
+ str r0, [r4, #0x1c]
+ ldr r0, [r5, #0xc]
+ bl FUN_02079C70
+ str r0, [r4, #0x2c]
+ ldr r1, _02037D58 ; =0x020F2BCC
+ add r0, r4, #0x0
+ bl FUN_0207B000
+ ldr r0, [r5, #0xc]
+ bl FUN_020238F4
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0207C2A4
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0203796C
+ add r0, r4, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+_02037D58: .word 0x020F2BCC
+
+ thumb_func_start FUN_02037D5C
+FUN_02037D5C: ; 0x02037D5C
+ ldrb r0, [r0, #0x16]
+ bx lr
+
+ thumb_func_start FUN_02037D60
+FUN_02037D60: ; 0x02037D60
+ ldr r3, _02037D68 ; =FUN_020373D4
+ add r2, r1, #0x0
+ ldr r1, _02037D6C ; =0x020F2CF4
+ bx r3
+ .balign 4
+_02037D68: .word FUN_020373D4
+_02037D6C: .word 0x020F2CF4
+
+ thumb_func_start FUN_02037D70
+FUN_02037D70: ; 0x02037D70
+ push {r3-r6, lr}
+ sub sp, #0x4
+ add r6, r0, #0x0
+ bl FUN_02046530
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_0204652C
+ add r5, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_02046528
+ ldr r1, [r4, #0x0]
+ cmp r1, #0x0
+ beq _02037D9A
+ cmp r1, #0x1
+ beq _02037DA8
+ cmp r1, #0x2
+ beq _02037DB8
+ b _02037E12
+_02037D9A:
+ ldr r1, [r5, #0xc]
+ bl FUN_02037E80
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02037E12
+_02037DA8:
+ bl FUN_0204647C
+ cmp r0, #0x0
+ bne _02037E12
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02037E12
+_02037DB8:
+ ldr r0, [r5, #0xc]
+ bl FUN_020853E4
+ cmp r0, #0x0
+ bne _02037DCC
+ ldr r0, [r5, #0xc]
+ bl FUN_020853E8
+ cmp r0, #0x0
+ bne _02037DD4
+_02037DCC:
+ ldr r0, [r5, #0x0]
+ mov r1, #0x0
+ strh r1, [r0, #0x0]
+ b _02037E00
+_02037DD4:
+ ldr r0, [r5, #0x0]
+ mov r1, #0x1
+ strh r1, [r0, #0x0]
+ ldr r0, [r5, #0x8]
+ cmp r0, #0x0
+ ldr r0, [r5, #0xc]
+ bne _02037DEC
+ bl FUN_020853EC
+ ldr r1, [r5, #0x4]
+ strh r0, [r1, #0x0]
+ b _02037E00
+_02037DEC:
+ add r1, sp, #0x0
+ bl FUN_020853F0
+ add r0, sp, #0x0
+ ldrh r2, [r0, #0x0]
+ ldr r1, [r5, #0x4]
+ strh r2, [r1, #0x0]
+ ldrh r1, [r0, #0x2]
+ ldr r0, [r5, #0x8]
+ strh r1, [r0, #0x0]
+_02037E00:
+ ldr r0, [r5, #0xc]
+ bl FUN_020853A8
+ add r0, r5, #0x0
+ bl FUN_02016A18
+ add sp, #0x4
+ mov r0, #0x1
+ pop {r3-r6, pc}
+_02037E12:
+ mov r0, #0x0
+ add sp, #0x4
+ pop {r3-r6, pc}
+
+ thumb_func_start FUN_02037E18
+FUN_02037E18: ; 0x02037E18
+ push {r3-r7, lr}
+ sub sp, #0x8
+ str r0, [sp, #0x0]
+ str r1, [sp, #0x4]
+ add r5, r2, #0x0
+ add r6, r3, #0x0
+ bl FUN_02046528
+ add r7, r0, #0x0
+ mov r0, #0x20
+ mov r1, #0x10
+ bl FUN_02016998
+ add r4, r0, #0x0
+ ldr r0, [sp, #0x4]
+ cmp r6, #0x0
+ str r0, [r4, #0x0]
+ str r5, [r4, #0x4]
+ str r6, [r4, #0x8]
+ bne _02037E56
+ mov r0, #0x0
+ ldr r2, [r7, #0xc]
+ add r1, r0, #0x0
+ mov r3, #0x20
+ bl FUN_02085338
+ str r0, [r4, #0xc]
+ ldrh r1, [r5, #0x0]
+ bl FUN_020853B0
+ b _02037E6C
+_02037E56:
+ ldr r2, [r7, #0xc]
+ mov r0, #0x1
+ mov r1, #0x0
+ mov r3, #0x20
+ bl FUN_02085338
+ str r0, [r4, #0xc]
+ ldrh r1, [r5, #0x0]
+ ldrh r2, [r6, #0x0]
+ bl FUN_020853B4
+_02037E6C:
+ ldr r0, [sp, #0x0]
+ ldr r1, _02037E7C ; =FUN_02037D70
+ add r2, r4, #0x0
+ bl FUN_0204640C
+ add sp, #0x8
+ pop {r3-r7, pc}
+ nop
+_02037E7C: .word FUN_02037D70
+
+ thumb_func_start FUN_02037E80
+FUN_02037E80: ; 0x02037E80
+ ldr r3, _02037E88 ; =FUN_020373D4
+ add r2, r1, #0x0
+ ldr r1, _02037E8C ; =0x020F2CE4
+ bx r3
+ .balign 4
+_02037E88: .word FUN_020373D4
+_02037E8C: .word 0x020F2CE4
+
+ thumb_func_start FUN_02037E90
+FUN_02037E90: ; 0x02037E90
+ push {r4-r6, lr}
+ sub sp, #0x10
+ ldr r5, _02037EB4 ; =0x020F2CD4
+ add r4, sp, #0x0
+ add r6, r0, #0x0
+ add r2, r1, #0x0
+ add r3, r4, #0x0
+ ldmia r5!, {r0-r1}
+ stmia r4!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r4!, {r0-r1}
+ add r0, r6, #0x0
+ add r1, r3, #0x0
+ bl FUN_020373D4
+ add sp, #0x10
+ pop {r4-r6, pc}
+ nop
+_02037EB4: .word 0x020F2CD4
+
+ thumb_func_start FUN_02037EB8
+FUN_02037EB8: ; 0x02037EB8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_02034E30
+ bl FUN_02034E0C
+ mov r1, #0x5
+ mov r0, #0xb
+ lsl r1, r1, #0x6
+ bl FUN_020169D8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r2, #0x0
+ bl FUN_0205F7A0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02037E90
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02037EE8
+FUN_02037EE8: ; 0x02037EE8
+ ldr r3, _02037EF0 ; =FUN_020373D4
+ add r2, r1, #0x0
+ ldr r1, _02037EF4 ; =0x020F2CC4
+ bx r3
+ .balign 4
+_02037EF0: .word FUN_020373D4
+_02037EF4: .word 0x020F2CC4
+
+ thumb_func_start FUN_02037EF8
+FUN_02037EF8: ; 0x02037EF8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r0, #0xb
+ mov r1, #0x2
+ bl FUN_020169D8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_020377AC
+ bl LoadPlayerDataAddress
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02037EE8
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02037F1C
+FUN_02037F1C: ; 0x02037F1C
+ ldr r3, _02037F24 ; =FUN_020373D4
+ add r2, r1, #0x0
+ ldr r1, _02037F28 ; =0x020FCAC8
+ bx r3
+ .balign 4
+_02037F24: .word FUN_020373D4
+_02037F28: .word 0x020FCAC8
+
+ thumb_func_start FUN_02037F2C
+FUN_02037F2C: ; 0x02037F2C
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ add r7, r3, #0x0
+ bl FUN_020377AC
+ mov r1, #0xb
+ str r1, [sp, #0x0]
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ add r3, r7, #0x0
+ bl FUN_020854E0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02037F1C
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02037F58
+FUN_02037F58: ; 0x02037F58
+ push {r3-r7, lr}
+ add r5, r1, #0x0
+ add r7, r0, #0x0
+ add r4, r2, #0x0
+ add r6, r3, #0x0
+ cmp r5, #0x3
+ bne _02037F74
+ bl FUN_020377AC
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_020855B0
+ b _02037F82
+_02037F74:
+ bl FUN_020377AC
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ add r3, r6, #0x0
+ bl FUN_02085538
+_02037F82:
+ add r4, r0, #0x0
+ add r0, r7, #0x0
+ add r1, r4, #0x0
+ bl FUN_02037F1C
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02037F90
+FUN_02037F90: ; 0x02037F90
+ push {r4-r6, lr}
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ add r5, r0, #0x0
+ bl FUN_020377AC
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_02085578
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02037F1C
+ add r0, r4, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02037FB4
+FUN_02037FB4: ; 0x02037FB4
+ ldr r3, _02037FBC ; =FUN_020373D4
+ add r2, r1, #0x0
+ ldr r1, _02037FC0 ; =0x020FD1B0
+ bx r3
+ .balign 4
+_02037FBC: .word FUN_020373D4
+_02037FC0: .word 0x020FD1B0
+
+ thumb_func_start FUN_02037FC4
+FUN_02037FC4: ; 0x02037FC4
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ add r4, r0, #0x0
+ bl FUN_020377AC
+ add r1, r5, #0x0
+ bl FUN_02087D00
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ bl FUN_02037FB4
+ add r0, r5, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02037FE4
+FUN_02037FE4: ; 0x02037FE4
+ push {r4-r6, lr}
+ sub sp, #0x10
+ ldr r5, _02038008 ; =0x020F2CB4
+ add r4, sp, #0x0
+ add r6, r0, #0x0
+ add r2, r1, #0x0
+ add r3, r4, #0x0
+ ldmia r5!, {r0-r1}
+ stmia r4!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r4!, {r0-r1}
+ add r0, r6, #0x0
+ add r1, r3, #0x0
+ bl FUN_020373D4
+ add sp, #0x10
+ pop {r4-r6, pc}
+ nop
+_02038008: .word 0x020F2CB4
+
+ thumb_func_start FUN_0203800C
+FUN_0203800C: ; 0x0203800C
+ push {r3-r7, lr}
+ add r5, r1, #0x0
+ mov r1, #0x20
+ add r7, r2, #0x0
+ add r6, r3, #0x0
+ bl FUN_02016998
+ mov r1, #0x0
+ mov r2, #0x20
+ add r4, r0, #0x0
+ blx FUN_020DF4A4
+ add r0, r5, #0x0
+ bl FUN_0206BB1C
+ add r1, r7, #0x0
+ bl FUN_0206B9B0
+ str r0, [r4, #0x0]
+ add r0, r5, #0x0
+ bl FUN_02027E24
+ str r0, [sp, #0x0]
+ mov r1, #0x0
+ bl FUN_02027008
+ add r7, r0, #0x0
+ ldr r0, [sp, #0x0]
+ bl FUN_0202708C
+ str r7, [r4, #0x4]
+ str r0, [r4, #0x8]
+ add r0, r5, #0x0
+ bl LoadPlayerDataAddress
+ str r0, [r4, #0xc]
+ add r0, r5, #0x0
+ bl FUN_02029FC8
+ str r0, [r4, #0x10]
+ add r0, r5, #0x0
+ bl FUN_020238F4
+ str r0, [r4, #0x14]
+ ldr r0, [sp, #0x18]
+ str r6, [r4, #0x18]
+ str r0, [r4, #0x1c]
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02038070
+FUN_02038070: ; 0x02038070
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_02046528
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0204652C
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ cmp r0, #0x0
+ beq _0203808E
+ cmp r0, #0x1
+ beq _0203809E
+ b _020380C8
+_0203808E:
+ ldr r1, [r5, #0xc]
+ add r0, r4, #0x0
+ bl FUN_0203811C
+ ldr r0, [r5, #0x0]
+ add r0, r0, #0x1
+ str r0, [r5, #0x0]
+ b _020380C8
+_0203809E:
+ add r0, r4, #0x0
+ bl FUN_0204647C
+ cmp r0, #0x0
+ bne _020380C8
+ ldr r0, [r5, #0x8]
+ cmp r0, #0x1
+ bne _020380B2
+ mov r1, #0x1
+ b _020380B4
+_020380B2:
+ mov r1, #0x0
+_020380B4:
+ ldr r0, [r5, #0x4]
+ strh r1, [r0, #0x0]
+ ldr r0, [r5, #0xc]
+ bl FUN_02016A18
+ add r0, r5, #0x0
+ bl FUN_02016A18
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_020380C8:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_020380CC
+FUN_020380CC: ; 0x020380CC
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r6, r0, #0x0
+ add r5, r1, #0x0
+ mov r0, #0x20
+ mov r1, #0x10
+ add r7, r2, #0x0
+ str r3, [sp, #0x4]
+ bl FUN_02016998
+ add r4, r0, #0x0
+ add r2, r4, #0x0
+ mov r1, #0x10
+ mov r0, #0x0
+_020380E8:
+ strb r0, [r2, #0x0]
+ add r2, r2, #0x1
+ sub r1, r1, #0x1
+ bne _020380E8
+ add r0, sp, #0x10
+ ldrh r0, [r0, #0x10]
+ add r3, r4, #0x0
+ add r1, r7, #0x0
+ str r0, [sp, #0x0]
+ ldr r2, [sp, #0x4]
+ mov r0, #0x20
+ add r3, #0x8
+ bl FUN_0203800C
+ str r0, [r4, #0xc]
+ ldr r1, _02038118 ; =FUN_02038070
+ add r0, r6, #0x0
+ add r2, r4, #0x0
+ str r5, [r4, #0x4]
+ bl FUN_0204640C
+ add sp, #0x8
+ pop {r3-r7, pc}
+ nop
+_02038118: .word FUN_02038070
+
+ thumb_func_start FUN_0203811C
+FUN_0203811C: ; 0x0203811C
+ push {r3, lr}
+ add r2, r1, #0x0
+ ldr r1, _0203812C ; =0x02105DDC
+ bl FUN_020373D4
+ mov r0, #0x1
+ pop {r3, pc}
+ nop
+_0203812C: .word 0x02105DDC
+
+ thumb_func_start FUN_02038130
+FUN_02038130: ; 0x02038130
+ push {r3, lr}
+ add r2, r1, #0x0
+ ldr r1, _02038140 ; =0x02105DCC
+ bl FUN_020373D4
+ mov r0, #0x1
+ pop {r3, pc}
+ nop
+_02038140: .word 0x02105DCC
+
+ thumb_func_start FUN_02038144
+FUN_02038144: ; 0x02038144
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ ldr r0, [r4, #0xc]
+ bl FUN_020238F4
+ str r0, [r5, #0x4]
+ ldr r0, [r4, #0xc]
+ bl FUN_0206BB1C
+ str r0, [r5, #0x8]
+ ldr r0, [r4, #0xc]
+ mov r1, #0x9
+ bl FUN_02022610
+ str r0, [r5, #0xc]
+ ldr r0, [r4, #0xc]
+ bl FUN_02029AFC
+ str r0, [r5, #0x14]
+ ldr r0, [r4, #0xc]
+ bl LoadPlayerDataAddress
+ str r0, [r5, #0x18]
+ ldr r0, [r4, #0xc]
+ bl FUN_02024DA0
+ str r0, [r5, #0x24]
+ ldr r0, [r4, #0xc]
+ bl FUN_0206BB28
+ str r0, [r5, #0x30]
+ ldr r0, [r4, #0xc]
+ str r0, [r5, #0x10]
+ add r0, r4, #0x0
+ add r0, #0x98
+ ldr r0, [r0, #0x0]
+ str r0, [r5, #0x1c]
+ ldr r0, [r4, #0xc]
+ bl FUN_02029FC8
+ str r0, [r5, #0x20]
+ bl FUN_02023924
+ add r1, r0, #0x0
+ mov r0, #0x20
+ bl FUN_02016998
+ str r0, [r5, #0x38]
+ bl FUN_020690C4
+ add r1, r0, #0x0
+ mov r0, #0x20
+ bl FUN_02016998
+ str r0, [r5, #0x3c]
+ bl FUN_020690C4
+ add r1, r0, #0x0
+ mov r0, #0x20
+ bl FUN_02016998
+ str r0, [r5, #0x40]
+ str r4, [r5, #0x0]
+ mov r0, #0x0
+ str r0, [r5, #0x34]
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020381CC
+FUN_020381CC: ; 0x020381CC
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x38]
+ cmp r0, #0x0
+ beq _020381DE
+ bl FUN_02016A18
+ mov r0, #0x0
+ str r0, [r4, #0x38]
+_020381DE:
+ ldr r0, [r4, #0x3c]
+ cmp r0, #0x0
+ beq _020381EC
+ bl FUN_02016A18
+ mov r0, #0x0
+ str r0, [r4, #0x3c]
+_020381EC:
+ ldr r0, [r4, #0x40]
+ cmp r0, #0x0
+ beq _020381FA
+ bl FUN_02016A18
+ mov r0, #0x0
+ str r0, [r4, #0x40]
+_020381FA:
+ pop {r4, pc}
+
+ thumb_func_start FUN_020381FC
+FUN_020381FC: ; 0x020381FC
+ push {r4-r7, lr}
+ sub sp, #0x34
+ add r6, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x7
+ bls _02038218
+ b _020383C8
+_02038218:
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02038224: ; jump table (using 16-bit offset)
+ .short _02038234 - _02038224 - 2; case 0
+ .short _0203824A - _02038224 - 2; case 1
+ .short _02038258 - _02038224 - 2; case 2
+ .short _0203826A - _02038224 - 2; case 3
+ .short _02038288 - _02038224 - 2; case 4
+ .short _020382F6 - _02038224 - 2; case 5
+ .short _02038386 - _02038224 - 2; case 6
+ .short _020383B2 - _02038224 - 2; case 7
+_02038234:
+ bl FUN_02033590
+ cmp r0, #0x0
+ bne _02038242
+ add r0, r6, #0x0
+ bl FUN_0204AF3C
+_02038242:
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _020383C8
+_0203824A:
+ add r0, r4, #0x4
+ add r1, r5, #0x0
+ bl FUN_02038144
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+_02038258:
+ ldr r1, _020383D0 ; =0x02105DBC
+ add r0, r6, #0x0
+ add r2, r4, #0x4
+ bl FUN_02046500
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _020383C8
+_0203826A:
+ ldr r1, [r4, #0x2c]
+ cmp r1, #0x0
+ bne _02038282
+ add r0, r4, #0x4
+ bl FUN_020381CC
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x34
+ mov r0, #0x1
+ pop {r4-r7, pc}
+_02038282:
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _020383C8
+_02038288:
+ ldr r0, [r4, #0x3c]
+ str r0, [r4, #0x50]
+ ldr r0, [r4, #0x40]
+ bl FUN_020690E4
+ str r0, [r4, #0x48]
+ ldr r0, [r4, #0x44]
+ bl FUN_020690E4
+ str r0, [r4, #0x4c]
+ ldr r0, [r5, #0xc]
+ bl LoadPlayerDataAddress
+ str r0, [r4, #0x5c]
+ mov r0, #0x1
+ str r0, [r4, #0x58]
+ add r0, r5, #0x0
+ bl FUN_0204B2A4
+ cmp r0, #0x4
+ bhi _020382C8
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_020382BE: ; jump table (using 16-bit offset)
+ .short _020382C8 - _020382BE - 2; case 0
+ .short _020382C8 - _020382BE - 2; case 1
+ .short _020382CE - _020382BE - 2; case 2
+ .short _020382D4 - _020382BE - 2; case 3
+ .short _020382D4 - _020382BE - 2; case 4
+_020382C8:
+ mov r0, #0x0
+ str r0, [r4, #0x54]
+ b _020382D8
+_020382CE:
+ mov r0, #0x1
+ str r0, [r4, #0x54]
+ b _020382D8
+_020382D4:
+ mov r0, #0x2
+ str r0, [r4, #0x54]
+_020382D8:
+ bl FUN_02033590
+ cmp r0, #0x0
+ beq _020382E4
+ mov r0, #0x3
+ str r0, [r4, #0x54]
+_020382E4:
+ add r2, r4, #0x0
+ ldr r1, _020383D4 ; =0x020F2CA4
+ add r0, r6, #0x0
+ add r2, #0x48
+ bl FUN_02046500
+ mov r0, #0x5
+ str r0, [r4, #0x0]
+ b _020383C8
+_020382F6:
+ ldr r0, [r4, #0x44]
+ mov r1, #0x6
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r3, r0, #0x0
+ add r0, sp, #0x30
+ str r0, [sp, #0x0]
+ lsl r3, r3, #0x10
+ ldr r1, [r4, #0x44]
+ mov r0, #0x0
+ mov r2, #0x1
+ lsr r3, r3, #0x10
+ bl FUN_02069168
+ str r0, [sp, #0x20]
+ cmp r0, #0x0
+ beq _02038380
+ mov r0, #0x3
+ mov r1, #0x1a
+ lsl r2, r0, #0x10
+ bl FUN_0201681C
+ ldr r0, [r5, #0xc]
+ bl LoadPlayerDataAddress
+ str r0, [sp, #0x24]
+ ldr r0, [r5, #0xc]
+ bl FUN_02079C70
+ add r6, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_02024DA0
+ add r7, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_0206F158
+ str r0, [sp, #0x28]
+ ldr r0, [r5, #0xc]
+ bl FUN_02029FC8
+ str r0, [sp, #0x2c]
+ ldr r0, [r5, #0xc]
+ bl FUN_0204C1A8
+ str r6, [sp, #0x0]
+ ldr r1, [sp, #0x28]
+ str r7, [sp, #0x4]
+ str r1, [sp, #0x8]
+ ldr r1, [sp, #0x2c]
+ ldr r2, [sp, #0x20]
+ str r1, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x30]
+ ldr r3, [sp, #0x24]
+ str r0, [sp, #0x14]
+ mov r0, #0x4
+ str r0, [sp, #0x18]
+ mov r0, #0x1a
+ str r0, [sp, #0x1c]
+ ldr r1, [r4, #0x44]
+ mov r0, #0x0
+ bl FUN_0206C700
+ str r0, [r4, #0x60]
+ mov r0, #0x6
+ str r0, [r4, #0x0]
+ b _020383C8
+_02038380:
+ mov r0, #0x7
+ str r0, [r4, #0x0]
+ b _020383C8
+_02038386:
+ ldr r0, [r4, #0x60]
+ bl FUN_0206C91C
+ cmp r0, #0x0
+ beq _020383C8
+ ldr r0, [r4, #0xc]
+ ldr r1, [r4, #0x30]
+ bl FUN_0206B9B0
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x44]
+ bl FUN_02069B88
+ ldr r0, [r4, #0x60]
+ bl FUN_0206C92C
+ mov r0, #0x1a
+ bl FUN_020168D0
+ mov r0, #0x7
+ str r0, [r4, #0x0]
+ b _020383C8
+_020383B2:
+ ldr r0, [r4, #0x38]
+ add r0, r0, #0x1
+ str r0, [r4, #0x38]
+ mov r0, #0x2
+ str r0, [r4, #0x0]
+ ldr r0, [r5, #0xc]
+ bl FUN_02029FC8
+ mov r1, #0x10
+ bl FUN_0202A170
+_020383C8:
+ mov r0, #0x0
+ add sp, #0x34
+ pop {r4-r7, pc}
+ nop
+_020383D0: .word 0x02105DBC
+_020383D4: .word 0x020F2CA4
+
+ thumb_func_start FUN_020383D8
+FUN_020383D8: ; 0x020383D8
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x20
+ mov r1, #0x68
+ bl FUN_02016998
+ add r2, r0, #0x0
+ mov r0, #0x0
+ str r0, [r2, #0x0]
+ ldr r1, _020383F4 ; =FUN_020381FC
+ add r0, r4, #0x0
+ bl FUN_0204640C
+ pop {r4, pc}
+ .balign 4
+_020383F4: .word FUN_020381FC
+
+ thumb_func_start FUN_020383F8
+FUN_020383F8: ; 0x020383F8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r0, #0x20
+ mov r1, #0xc
+ bl FUN_02016998
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x7c]
+ str r0, [r4, #0x0]
+ add r0, r5, #0x0
+ add r0, #0x98
+ ldr r0, [r0, #0x0]
+ str r0, [r4, #0x4]
+ ldr r0, [r5, #0xc]
+ bl LoadPlayerDataAddress
+ str r0, [r4, #0x8]
+ ldr r1, _02038428 ; =0x020F2C94
+ add r0, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_020373D4
+ pop {r3-r5, pc}
+ nop
+_02038428: .word 0x020F2C94
+
+ thumb_func_start FUN_0203842C
+FUN_0203842C: ; 0x0203842C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r0, #0xb
+ mov r1, #0x14
+ bl FUN_02016998
+ add r4, r0, #0x0
+ ldr r0, [r5, #0xc]
+ str r0, [r4, #0x0]
+ ldr r0, [r5, #0x7c]
+ str r0, [r4, #0x4]
+ ldr r0, [r5, #0xc]
+ bl LoadPlayerDataAddress
+ str r0, [r4, #0x8]
+ ldr r0, [r5, #0xc]
+ bl FUN_02029FC8
+ str r0, [r4, #0xc]
+ add r0, r5, #0x0
+ add r0, #0x98
+ ldr r0, [r0, #0x0]
+ ldr r1, _02038468 ; =0x020F2D04
+ str r0, [r4, #0x10]
+ add r0, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_020373D4
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+_02038468: .word 0x020F2D04
+
+ thumb_func_start FUN_0203846C
+FUN_0203846C: ; 0x0203846C
+ ldr r3, _02038474 ; =FUN_020373D4
+ add r2, r1, #0x0
+ ldr r1, _02038478 ; =0x020F2D54
+ bx r3
+ .balign 4
+_02038474: .word FUN_020373D4
+_02038478: .word 0x020F2D54
+
+ thumb_func_start FUN_0203847C
+FUN_0203847C: ; 0x0203847C
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ bl FUN_02046528
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x3
+ bhi _02038544
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_020384A0: ; jump table (using 16-bit offset)
+ .short _020384A8 - _020384A0 - 2; case 0
+ .short _020384B6 - _020384A0 - 2; case 1
+ .short _020384C8 - _020384A0 - 2; case 2
+ .short _020384D6 - _020384A0 - 2; case 3
+_020384A8:
+ add r0, r5, #0x0
+ bl FUN_0204AF3C
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02038544
+_020384B6:
+ ldr r1, _02038548 ; =0x020FA5FC
+ ldr r2, [r4, #0xc]
+ add r0, r5, #0x0
+ bl FUN_02046500
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02038544
+_020384C8:
+ add r0, r5, #0x0
+ bl FUN_0204AF84
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02038544
+_020384D6:
+ ldr r1, [r4, #0xc]
+ ldr r0, [r1, #0x0]
+ cmp r0, #0x1
+ bne _020384F2
+ ldr r0, [r1, #0x18]
+ ldr r1, [r4, #0x10]
+ bl FUN_02021CE0
+ cmp r0, #0x0
+ bne _02038514
+ ldr r0, [r4, #0xc]
+ mov r1, #0x1
+ str r1, [r0, #0x14]
+ b _02038514
+_020384F2:
+ cmp r0, #0x5
+ bne _02038514
+ ldr r0, [r1, #0x18]
+ bl FUN_02021F2C
+ add r7, r0, #0x0
+ ldr r0, [r6, #0xc]
+ bl FUN_0202881C
+ add r1, r7, #0x0
+ bl FUN_02028854
+ cmp r0, #0x0
+ beq _02038514
+ ldr r0, [r4, #0xc]
+ mov r1, #0x2
+ str r1, [r0, #0x14]
+_02038514:
+ ldr r0, [r4, #0xc]
+ ldr r0, [r0, #0x14]
+ cmp r0, #0x0
+ bne _02038522
+ add r0, r5, #0x0
+ bl FUN_0203854C
+_02038522:
+ ldr r1, [r4, #0x8]
+ cmp r1, #0x0
+ beq _0203852E
+ ldr r0, [r4, #0xc]
+ ldr r0, [r0, #0x14]
+ strh r0, [r1, #0x0]
+_0203852E:
+ ldr r0, [r4, #0xc]
+ bl FUN_02077AC4
+ ldr r0, [r4, #0x10]
+ bl FUN_02021A20
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02038544:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+_02038548: .word 0x020FA5FC
+
+ thumb_func_start FUN_0203854C
+FUN_0203854C: ; 0x0203854C
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldr r0, [r4, #0xc]
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x6
+ bhi _020385CA
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02038572: ; jump table (using 16-bit offset)
+ .short _02038580 - _02038572 - 2; case 0
+ .short _02038590 - _02038572 - 2; case 1
+ .short _020385CA - _02038572 - 2; case 2
+ .short _020385CA - _02038572 - 2; case 3
+ .short _020385CA - _02038572 - 2; case 4
+ .short _020385A8 - _02038572 - 2; case 5
+ .short _020385BC - _02038572 - 2; case 6
+_02038580:
+ ldr r0, [r5, #0xc]
+ bl FUN_020238F4
+ ldr r1, [r4, #0xc]
+ add r1, #0x1c
+ bl FUN_0202395C
+ pop {r3-r5, pc}
+_02038590:
+ ldr r0, [r5, #0xc]
+ bl FUN_0206BB1C
+ ldr r1, [r4, #0x4]
+ bl FUN_0206B9B0
+ ldr r2, [r4, #0xc]
+ mov r1, #0x75
+ add r2, #0x1c
+ bl FUN_02067830
+ pop {r3-r5, pc}
+_020385A8:
+ ldr r0, [r5, #0xc]
+ bl FUN_0202881C
+ ldr r3, [r4, #0xc]
+ mov r1, #0x0
+ ldr r3, [r3, #0x18]
+ add r2, r1, #0x0
+ bl FUN_020287C0
+ pop {r3-r5, pc}
+_020385BC:
+ ldr r0, [r5, #0xc]
+ bl FUN_02024EB4
+ ldr r1, [r4, #0xc]
+ ldr r1, [r1, #0x18]
+ bl FUN_02024F18
+_020385CA:
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_020385CC
+FUN_020385CC: ; 0x020385CC
+ push {r3-r7, lr}
+ sub sp, #0x10
+ str r0, [sp, #0x4]
+ add r6, r1, #0x0
+ str r2, [sp, #0x8]
+ str r3, [sp, #0xc]
+ ldr r5, [sp, #0x2c]
+ bl FUN_02046528
+ add r7, r0, #0x0
+ mov r0, #0xb
+ mov r1, #0x14
+ bl FUN_020169D8
+ add r4, r0, #0x0
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+ ldr r0, [sp, #0x28]
+ str r0, [r4, #0x4]
+ ldr r0, [sp, #0x30]
+ str r0, [r4, #0x8]
+ ldr r0, [r7, #0xc]
+ bl LoadPlayerDataAddress
+ str r0, [sp, #0x0]
+ ldr r2, [sp, #0x8]
+ ldr r3, [sp, #0xc]
+ mov r0, #0xb
+ add r1, r6, #0x0
+ bl FUN_02077A84
+ str r0, [r4, #0xc]
+ mov r0, #0xc
+ mov r1, #0xb
+ bl FUN_020219F4
+ str r0, [r4, #0x10]
+ cmp r6, #0x1
+ beq _02038620
+ cmp r6, #0x5
+ beq _02038656
+ b _02038660
+_02038620:
+ ldr r0, [r7, #0xc]
+ bl FUN_0206BB1C
+ ldr r1, [r4, #0x4]
+ bl FUN_0206B9B0
+ mov r1, #0x6f
+ mov r2, #0x0
+ add r6, r0, #0x0
+ bl FUN_020671BC
+ ldr r1, [r4, #0xc]
+ mov r2, #0x0
+ str r0, [r1, #0x10]
+ add r0, r6, #0x0
+ mov r1, #0x70
+ bl FUN_020671BC
+ ldr r1, [r4, #0xc]
+ cmp r5, #0x0
+ str r0, [r1, #0x8]
+ beq _0203866E
+ ldr r0, [r4, #0x10]
+ add r1, r5, #0x0
+ bl FUN_02021E28
+ b _0203866E
+_02038656:
+ ldr r0, [r4, #0x10]
+ add r1, r5, #0x0
+ bl FUN_02021E28
+ b _0203866E
+_02038660:
+ cmp r5, #0x0
+ beq _0203866E
+ ldr r0, [r4, #0xc]
+ add r1, r5, #0x0
+ ldr r0, [r0, #0x18]
+ bl FUN_02021E28
+_0203866E:
+ ldr r0, [sp, #0x4]
+ ldr r1, _0203867C ; =FUN_0203847C
+ add r2, r4, #0x0
+ bl FUN_0204640C
+ add sp, #0x10
+ pop {r3-r7, pc}
+ .balign 4
+_0203867C: .word FUN_0203847C
+
+ thumb_func_start FUN_02038680
+FUN_02038680: ; 0x02038680
+ ldr r3, _02038688 ; =FUN_020373D4
+ add r2, r1, #0x0
+ ldr r1, _0203868C ; =0x020F2C54
+ bx r3
+ .balign 4
+_02038688: .word FUN_020373D4
+_0203868C: .word 0x020F2C54
+
+ thumb_func_start FUN_02038690
+FUN_02038690: ; 0x02038690
+ push {r3, lr}
+ add r2, r1, #0x0
+ ldr r1, _020386A0 ; =0x020F2C44
+ bl FUN_020373D4
+ mov r0, #0x1
+ pop {r3, pc}
+ nop
+_020386A0: .word 0x020F2C44
+
+ thumb_func_start FUN_020386A4
+FUN_020386A4: ; 0x020386A4
+ ldr r3, _020386AC ; =FUN_020373D4
+ add r2, r1, #0x0
+ ldr r1, _020386B0 ; =0x020F2C34
+ bx r3
+ .balign 4
+_020386AC: .word FUN_020373D4
+_020386B0: .word 0x020F2C34
+
+ thumb_func_start FUN_020386B4
+FUN_020386B4: ; 0x020386B4
+ push {r3-r5, lr}
+ sub sp, #0x10
+ add r4, r0, #0x0
+ ldr r0, [r4, #0xc]
+ bl FUN_02029ABC
+ ldr r5, _020386DC ; =0x020F2C24
+ add r3, sp, #0x0
+ add r2, r3, #0x0
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ add r1, r2, #0x0
+ ldr r2, [r4, #0xc]
+ add r0, r4, #0x0
+ bl FUN_020373D4
+ add sp, #0x10
+ pop {r3-r5, pc}
+ .balign 4
+_020386DC: .word 0x020F2C24
+
+ thumb_func_start FUN_020386E0
+FUN_020386E0: ; 0x020386E0
+ push {r4-r6, lr}
+ sub sp, #0x10
+ ldr r3, _0203878C ; =0x020F2C64
+ add r2, sp, #0x0
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ mov r0, #0xb
+ mov r1, #0x44
+ bl FUN_020169D8
+ add r4, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_0202ABBC
+ str r0, [r4, #0x0]
+ ldr r0, [r5, #0xc]
+ bl FUN_02023788
+ str r0, [r4, #0x4]
+ ldr r0, [r5, #0xc]
+ mov r1, #0x2
+ bl FUN_02022610
+ str r0, [r4, #0x8]
+ ldr r0, [r5, #0xc]
+ bl FUN_02022510
+ str r0, [r4, #0xc]
+ ldr r0, [r5, #0xc]
+ bl FUN_02024DA0
+ str r0, [r4, #0x10]
+ ldr r0, [r5, #0xc]
+ bl FUN_020286EC
+ str r0, [r4, #0x14]
+ ldr r0, [r5, #0xc]
+ bl FUN_02029AFC
+ str r0, [r4, #0x18]
+ ldr r0, [r5, #0xc]
+ bl FUN_020238F4
+ str r0, [r4, #0x1c]
+ ldr r0, [r5, #0xc]
+ bl LoadPlayerDataAddress
+ str r0, [r4, #0x24]
+ ldr r0, [r5, #0xc]
+ bl FUN_02029FC8
+ str r0, [r4, #0x28]
+ add r0, r5, #0x0
+ add r0, #0x98
+ ldr r0, [r0, #0x0]
+ str r0, [r4, #0x2c]
+ ldr r0, [r5, #0xc]
+ bl FUN_02079C70
+ str r0, [r4, #0x3c]
+ ldr r0, [r5, #0xc]
+ str r0, [r4, #0x20]
+ ldr r0, [r5, #0xc]
+ bl FUN_0206BB28
+ str r0, [r4, #0x34]
+ ldr r0, [r4, #0x14]
+ bl FUN_02033830
+ str r0, [r4, #0x38]
+ ldr r0, [r5, #0xc]
+ bl FUN_0206F158
+ str r0, [r4, #0x30]
+ add r0, r5, #0x0
+ add r1, sp, #0x0
+ add r2, r4, #0x0
+ str r6, [r4, #0x40]
+ bl FUN_020373D4
+ add sp, #0x10
+ pop {r4-r6, pc}
+ .balign 4
+_0203878C: .word 0x020F2C64
+
+ thumb_func_start FUN_02038790
+FUN_02038790: ; 0x02038790
+ push {r3-r7, lr}
+ sub sp, #0x10
+ ldr r3, _02038800 ; =0x020F2C74
+ add r7, r2, #0x0
+ add r2, sp, #0x0
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ mov r0, #0xb
+ mov r1, #0x28
+ bl FUN_020169D8
+ add r4, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_0202A8D8
+ str r0, [r4, #0x0]
+ ldr r0, [r5, #0xc]
+ bl FUN_0202A8E4
+ str r0, [r4, #0x4]
+ ldr r0, [r5, #0xc]
+ bl FUN_02023788
+ str r0, [r4, #0x8]
+ ldr r0, [r5, #0xc]
+ bl LoadPlayerDataAddress
+ str r0, [r4, #0x10]
+ ldr r0, [r5, #0xc]
+ bl FUN_020286EC
+ bl FUN_02028228
+ str r0, [r4, #0x14]
+ ldr r0, [r5, #0xc]
+ str r0, [r4, #0xc]
+ ldr r0, [r5, #0xc]
+ bl FUN_020286EC
+ bl FUN_02033830
+ str r0, [r4, #0x1c]
+ str r6, [r4, #0x18]
+ add r0, r5, #0x0
+ add r1, sp, #0x0
+ add r2, r4, #0x0
+ str r7, [r4, #0x24]
+ bl FUN_020373D4
+ add r0, r4, #0x0
+ add sp, #0x10
+ pop {r3-r7, pc}
+ .balign 4
+_02038800: .word 0x020F2C74
+
+ thumb_func_start FUN_02038804
+FUN_02038804: ; 0x02038804
+ ldr r3, _0203880C ; =FUN_020373D4
+ ldr r1, _02038810 ; =0x020F2D14
+ ldr r2, [r0, #0xc]
+ bx r3
+ .balign 4
+_0203880C: .word FUN_020373D4
+_02038810: .word 0x020F2D14
+
+ thumb_func_start FUN_02038814
+FUN_02038814: ; 0x02038814
+ ldr r3, _0203881C ; =FUN_020373D4
+ add r2, r1, #0x0
+ ldr r1, _02038820 ; =0x020F2D64
+ bx r3
+ .balign 4
+_0203881C: .word FUN_020373D4
+_02038820: .word 0x020F2D64
+
+ thumb_func_start FUN_02038824
+FUN_02038824: ; 0x02038824
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0xc]
+ mov r1, #0xb
+ add r2, sp, #0x0
+ bl FUN_02022534
+ ldr r1, [sp, #0x0]
+ add r4, r0, #0x0
+ cmp r1, #0x2
+ bne _02038842
+ bl FUN_02016A18
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_02038842:
+ ldr r1, _02038850 ; =0x020F2BF4
+ add r0, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_020373D4
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+_02038850: .word 0x020F2BF4
+
+ thumb_func_start FUN_02038854
+FUN_02038854: ; 0x02038854
+ ldr r3, _0203885C ; =FUN_020373D4
+ add r2, r1, #0x0
+ ldr r1, _02038860 ; =0x020F2C04
+ bx r3
+ .balign 4
+_0203885C: .word FUN_020373D4
+_02038860: .word 0x020F2C04
+
+ thumb_func_start FUN_02038864
+FUN_02038864: ; 0x02038864
+ push {r4-r6, lr}
+ sub sp, #0x10
+ ldr r5, _02038888 ; =0x020F2C84
+ add r4, sp, #0x0
+ add r6, r0, #0x0
+ add r2, r1, #0x0
+ add r3, r4, #0x0
+ ldmia r5!, {r0-r1}
+ stmia r4!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r4!, {r0-r1}
+ add r0, r6, #0x0
+ add r1, r3, #0x0
+ bl FUN_020373D4
+ add sp, #0x10
+ pop {r4-r6, pc}
+ nop
+_02038888: .word 0x020F2C84
+
+ thumb_func_start FUN_0203888C
+FUN_0203888C: ; 0x0203888C
+ push {r4-r6, lr}
+ sub sp, #0x10
+ ldr r5, _020388B0 ; =0x020F2D84
+ add r4, sp, #0x0
+ add r6, r0, #0x0
+ add r2, r1, #0x0
+ add r3, r4, #0x0
+ ldmia r5!, {r0-r1}
+ stmia r4!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r4!, {r0-r1}
+ add r0, r6, #0x0
+ add r1, r3, #0x0
+ bl FUN_020373D4
+ add sp, #0x10
+ pop {r4-r6, pc}
+ nop
+_020388B0: .word 0x020F2D84
+
+ thumb_func_start FUN_020388B4
+FUN_020388B4: ; 0x020388B4
+ push {r3-r5, lr}
+ sub sp, #0x10
+ add r4, r0, #0x0
+ ldr r0, [r4, #0xc]
+ bl FUN_0206BB1C
+ bl FUN_021ED49C
+ add r5, r0, #0x0
+ bne _020388CC
+ bl ErrorHandling
+_020388CC:
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ bl FUN_020613CC
+ str r5, [sp, #0x0]
+ ldr r0, [r4, #0xc]
+ bl LoadPlayerDataAddress
+ str r0, [sp, #0x4]
+ ldr r0, [r4, #0xc]
+ bl FUN_020238F4
+ str r0, [sp, #0x8]
+ ldr r1, [r4, #0x1c]
+ add r0, r4, #0x0
+ ldr r1, [r1, #0x0]
+ bl FUN_0204AB58
+ add r1, sp, #0x0
+ strh r0, [r1, #0xc]
+ ldr r0, [r4, #0x10]
+ add r1, sp, #0x0
+ bl FUN_020863DC
+ add sp, #0x10
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02038900
+FUN_02038900: ; 0x02038900
+ push {r3, lr}
+ add r2, r1, #0x0
+ ldr r1, _02038910 ; =0x020F2C14
+ bl FUN_020373D4
+ mov r0, #0x1
+ pop {r3, pc}
+ nop
+_02038910: .word 0x020F2C14
+
+ thumb_func_start FUN_02038914
+FUN_02038914: ; 0x02038914
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r6, r0, #0x0
+ bl FUN_02046528
+ add r4, r0, #0x0
+ ldr r0, [r4, #0xc]
+ bl FUN_020462AC
+ add r7, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_0204652C
+ add r5, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_02046530
+ add r6, r0, #0x0
+ ldr r0, [r6, #0x0]
+ cmp r0, #0x0
+ beq _02038944
+ cmp r0, #0x1
+ beq _02038956
+ b _020389C6
+_02038944:
+ add r5, #0xc
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ bl FUN_02038900
+ ldr r0, [r6, #0x0]
+ add r0, r0, #0x1
+ str r0, [r6, #0x0]
+ b _020389C6
+_02038956:
+ add r0, r4, #0x0
+ bl FUN_0204647C
+ cmp r0, #0x0
+ bne _020389C6
+ ldr r0, [r4, #0xc]
+ bl FUN_0202390C
+ str r0, [sp, #0x0]
+ bl FUN_020126FC
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x0]
+ add r6, r1, #0x0
+ bl FUN_02028930
+ str r0, [sp, #0x8]
+ ldr r0, [r5, #0x4]
+ ldr r1, [r5, #0x8]
+ ldr r2, [sp, #0x4]
+ add r3, r6, #0x0
+ bl FUN_020127C0
+ mov r2, #0x3c
+ mov r3, #0x0
+ blx FUN_020EBA38
+ add r3, r0, #0x0
+ ldr r1, [sp, #0x8]
+ ldr r2, [r5, #0x0]
+ add r0, r4, #0x0
+ bl FUN_02061A8C
+ ldr r0, [r4, #0xc]
+ bl FUN_0202390C
+ ldr r1, [r5, #0x0]
+ bl FUN_02028918
+ add r0, r7, #0x0
+ bl FUN_0205F6C8
+ ldr r1, [r5, #0x18]
+ cmp r1, r0
+ ble _020389BA
+ lsl r1, r1, #0x10
+ add r0, r7, #0x0
+ lsr r1, r1, #0x10
+ bl FUN_0205F6D8
+_020389BA:
+ add r0, r5, #0x0
+ bl FUN_02016A18
+ add sp, #0xc
+ mov r0, #0x1
+ pop {r4-r7, pc}
+_020389C6:
+ mov r0, #0x0
+ add sp, #0xc
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_020389CC
+FUN_020389CC: ; 0x020389CC
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ add r6, r1, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl LoadPlayerDataAddress
+ str r0, [sp, #0x0]
+ mov r0, #0x20
+ add r1, r0, #0x0
+ bl FUN_02016998
+ add r4, r0, #0x0
+ str r4, [r4, #0xc]
+ ldr r0, [r5, #0xc]
+ bl FUN_0202390C
+ bl FUN_02028930
+ str r0, [r4, #0x0]
+ bl FUN_020126FC
+ str r0, [r4, #0x4]
+ str r1, [r4, #0x8]
+ ldr r0, [r5, #0xc]
+ bl FUN_02029FC8
+ str r0, [r4, #0x14]
+ mov r0, #0x0
+ str r0, [r4, #0x18]
+ ldr r0, [sp, #0x0]
+ bl FUN_02025084
+ str r0, [r4, #0x1c]
+ lsl r1, r6, #0x18
+ ldr r0, [r5, #0xc]
+ lsr r1, r1, #0x18
+ bl FUN_02038A3C
+ str r0, [r4, #0x10]
+ ldr r0, [r5, #0xc]
+ bl FUN_02029FC8
+ mov r1, #0x5
+ bl FUN_0202A170
+ ldr r1, _02038A38 ; =FUN_02038914
+ add r0, r7, #0x0
+ add r2, r4, #0x0
+ bl FUN_0204640C
+ pop {r3-r7, pc}
+ .balign 4
+_02038A38: .word FUN_02038914
+
+ thumb_func_start FUN_02038A3C
+FUN_02038A3C: ; 0x02038A3C
+ push {r4-r7, lr}
+ sub sp, #0x14
+ str r1, [sp, #0x0]
+ bl FUN_0202881C
+ add r4, r0, #0x0
+ bl FUN_0201B9D4
+ str r0, [sp, #0x4]
+ add r0, r4, #0x0
+ bl FUN_020287A4
+ bl FUN_0201B9E0
+ ldr r0, _02038AAC ; =0x020F2BE8
+ add r1, sp, #0x8
+ mov r2, #0xc
+ blx MI_CpuCopy8
+ mov r4, #0x0
+ mov r7, #0xc
+ add r6, sp, #0x8
+_02038A68:
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #0xc
+ bhs _02038A92
+_02038A72:
+ bl FUN_0201B9EC
+ add r1, r7, #0x0
+ blx _s32_div_f
+ lsl r0, r1, #0x18
+ lsr r2, r0, #0x18
+ ldrb r1, [r6, r4]
+ ldrb r0, [r6, r2]
+ strb r0, [r6, r4]
+ add r0, r5, #0x1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ strb r1, [r6, r2]
+ cmp r5, #0xc
+ blo _02038A72
+_02038A92:
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0xc
+ blo _02038A68
+ ldr r0, [sp, #0x4]
+ bl FUN_0201B9E0
+ ldr r0, [sp, #0x0]
+ add r1, sp, #0x8
+ ldrb r0, [r1, r0]
+ add sp, #0x14
+ pop {r4-r7, pc}
+ .balign 4
+_02038AAC: .word 0x020F2BE8
+
+ thumb_func_start FUN_02038AB0
+FUN_02038AB0: ; 0x02038AB0
+ push {r4, lr}
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ bl FUN_0224D79C
+ cmp r0, #0x1
+ bne _02038ACA
+ add r0, r4, #0x0
+ bl FUN_0224D76C
+ mov r0, #0x1
+ pop {r4, pc}
+_02038ACA:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02038AD0
+FUN_02038AD0: ; 0x02038AD0
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02046528
+ add r2, r0, #0x0
+ ldr r1, [r2, #0xc]
+ ldr r2, [r2, #0x8]
+ mov r0, #0x4
+ bl FUN_0224D70C
+ add r2, r0, #0x0
+ ldr r1, _02038AF0 ; =FUN_02038AB0
+ add r0, r4, #0x0
+ bl FUN_0204640C
+ pop {r4, pc}
+ .balign 4
+_02038AF0: .word FUN_02038AB0
+
+ thumb_func_start FUN_02038AF4
+FUN_02038AF4: ; 0x02038AF4
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, r1, #0x0
+ mov r1, #0x8
+ add r6, r2, #0x0
+ bl FUN_02016998
+ add r4, r0, #0x0
+ str r6, [r4, #0x4]
+ ldr r0, [r5, #0xc]
+ ldr r1, _02038B18 ; =0x020F2DA4
+ str r0, [r4, #0x0]
+ add r0, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_020373D4
+ add r0, r4, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+_02038B18: .word 0x020F2DA4
diff --git a/asm/unk_02038C78.s b/asm/unk_02038C78.s
new file mode 100644
index 00000000..5b3a52bf
--- /dev/null
+++ b/asm/unk_02038C78.s
@@ -0,0 +1,1744 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ thumb_func_start FUN_02038C78
+FUN_02038C78: ; 0x02038C78
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ add r7, r2, #0x0
+ bl FUN_02038E20
+ add r4, r0, #0x0
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ add r3, r7, #0x0
+ bl FUN_02038E60
+ ldr r1, _02038CA4 ; =FUN_02038D48
+ add r0, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_020463CC
+ pop {r3-r7, pc}
+ nop
+_02038CA4: .word FUN_02038D48
+
+ thumb_func_start FUN_02038CA8
+FUN_02038CA8: ; 0x02038CA8
+ push {r4-r6, lr}
+ ldr r0, [r0, #0x10]
+ add r5, r1, #0x0
+ add r4, r2, #0x0
+ add r6, r3, #0x0
+ bl FUN_0204652C
+ ldr r2, [sp, #0x1c]
+ mov r1, #0x1c
+ add r3, r2, #0x0
+ add r0, #0x50
+ mul r3, r1
+ add r1, r0, r3
+ str r4, [r0, r3]
+ ldr r0, [sp, #0x10]
+ str r6, [r1, #0x4]
+ str r0, [r1, #0x8]
+ ldr r0, [sp, #0x14]
+ str r0, [r1, #0xc]
+ ldr r0, [sp, #0x18]
+ str r0, [r1, #0x10]
+ str r5, [r1, #0x14]
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02038CD8
+FUN_02038CD8: ; 0x02038CD8
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r6, r0, #0x0
+ add r7, r1, #0x0
+ str r2, [sp, #0x4]
+ add r5, r3, #0x0
+ bl FUN_02046528
+ str r0, [sp, #0x8]
+ bl FUN_02038E20
+ add r4, r0, #0x0
+ ldr r0, [sp, #0x8]
+ ldr r3, [sp, #0x4]
+ add r1, r4, #0x0
+ add r2, r7, #0x0
+ str r5, [sp, #0x0]
+ bl FUN_02038E60
+ ldr r1, _02038D0C ; =FUN_02038D48
+ add r0, r6, #0x0
+ add r2, r4, #0x0
+ bl FUN_0204640C
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+_02038D0C: .word FUN_02038D48
+
+ thumb_func_start FUN_02038D10
+FUN_02038D10: ; 0x02038D10
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ add r7, r2, #0x0
+ bl FUN_02046528
+ str r0, [sp, #0x4]
+ bl FUN_02038E20
+ add r4, r0, #0x0
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x4]
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ add r3, r7, #0x0
+ bl FUN_02038E60
+ ldr r1, _02038D44 ; =FUN_02038D48
+ add r0, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_020463EC
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+_02038D44: .word FUN_02038D48
+
+ thumb_func_start FUN_02038D48
+FUN_02038D48: ; 0x02038D48
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02046528
+ ldrb r1, [r4, #0x4]
+ str r0, [sp, #0x0]
+ cmp r1, #0x0
+ beq _02038D68
+ cmp r1, #0x1
+ beq _02038D9E
+ b _02038E1A
+_02038D68:
+ ldrh r1, [r4, #0xa]
+ bl FUN_02038EB0
+ str r0, [r4, #0x38]
+ mov r0, #0x1
+ strb r0, [r4, #0x9]
+ mov r0, #0x8
+ mov r1, #0x40
+ mov r2, #0xb
+ bl FUN_0200AA90
+ str r0, [r4, #0x40]
+ mov r0, #0x1
+ lsl r0, r0, #0xa
+ mov r1, #0xb
+ bl FUN_020219F4
+ str r0, [r4, #0x44]
+ mov r0, #0x1
+ lsl r0, r0, #0xa
+ mov r1, #0xb
+ bl FUN_020219F4
+ str r0, [r4, #0x48]
+ ldrb r0, [r4, #0x4]
+ add r0, r0, #0x1
+ strb r0, [r4, #0x4]
+_02038D9E:
+ mov r0, #0x0
+ add r7, r4, #0x0
+ str r0, [sp, #0x4]
+ add r5, r4, #0x0
+ add r7, #0x9
+_02038DA8:
+ ldr r6, [r5, #0x38]
+ cmp r6, #0x0
+ beq _02038DD2
+ add r0, r6, #0x0
+ bl RunScriptCommand
+ cmp r0, #0x0
+ bne _02038DD2
+ add r0, r6, #0x0
+ bl FUN_02038E48
+ ldrb r0, [r4, #0x9]
+ cmp r0, #0x0
+ bne _02038DC8
+ bl ErrorHandling
+_02038DC8:
+ mov r0, #0x0
+ str r0, [r5, #0x38]
+ ldrb r0, [r7, #0x0]
+ sub r0, r0, #0x1
+ strb r0, [r7, #0x0]
+_02038DD2:
+ ldr r0, [sp, #0x4]
+ add r5, r5, #0x4
+ add r0, r0, #0x1
+ str r0, [sp, #0x4]
+ cmp r0, #0x2
+ blt _02038DA8
+ ldrb r0, [r4, #0x9]
+ cmp r0, #0x0
+ bne _02038E1A
+ add r0, r4, #0x0
+ add r0, #0xa4
+ ldr r5, [r0, #0x0]
+ ldr r0, [r4, #0x40]
+ bl FUN_0200AB18
+ ldr r0, [r4, #0x44]
+ bl FUN_02021A20
+ ldr r0, [r4, #0x48]
+ bl FUN_02021A20
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ cmp r5, #0x0
+ beq _02038E14
+ ldr r0, [sp, #0x0]
+ blx r5
+ add sp, #0x8
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_02038E14:
+ add sp, #0x8
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02038E1A:
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02038E20
+FUN_02038E20: ; 0x02038E20
+ push {r4, lr}
+ mov r0, #0xb
+ mov r1, #0xdc
+ bl FUN_02016998
+ add r4, r0, #0x0
+ bne _02038E32
+ bl ErrorHandling
+_02038E32:
+ add r0, r4, #0x0
+ mov r1, #0x0
+ mov r2, #0xdc
+ blx FUN_020DF4A4
+ ldr r0, _02038E44 ; =0x0003643F
+ str r0, [r4, #0x0]
+ add r0, r4, #0x0
+ pop {r4, pc}
+ .balign 4
+_02038E44: .word 0x0003643F
+
+ thumb_func_start FUN_02038E48
+FUN_02038E48: ; 0x02038E48
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x78]
+ bl FUN_0200A8B8
+ ldr r0, [r4, #0x7c]
+ bl FUN_02016A18
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r4, pc}
+
+ thumb_func_start FUN_02038E60
+FUN_02038E60: ; 0x02038E60
+ push {r3-r7, lr}
+ add r5, r1, #0x0
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x36
+ add r4, r2, #0x0
+ add r6, r3, #0x0
+ bl FUN_02039300
+ str r0, [sp, #0x0]
+ ldr r0, [r7, #0x38]
+ bl FUN_020552F8
+ str r0, [r5, #0x28]
+ str r6, [r5, #0x2c]
+ ldr r0, [sp, #0x18]
+ strh r4, [r5, #0xa]
+ str r0, [r5, #0x34]
+ cmp r6, #0x0
+ beq _02038E92
+ add r0, r6, #0x0
+ bl FUN_02058448
+ ldr r1, [sp, #0x0]
+ strh r0, [r1, #0x0]
+_02038E92:
+ mov r0, #0x7d
+ lsl r0, r0, #0x6
+ cmp r4, r0
+ blo _02038EA8
+ ldr r0, _02038EAC ; =0x0000225F
+ cmp r4, r0
+ bhi _02038EA8
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_020396E8
+_02038EA8:
+ pop {r3-r7, pc}
+ nop
+_02038EAC: .word 0x0000225F
+
+ thumb_func_start FUN_02038EB0
+FUN_02038EB0: ; 0x02038EB0
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ mov r0, #0xb
+ mov r1, #0x84
+ bl FUN_02016998
+ add r4, r0, #0x0
+ bne _02038EC6
+ bl ErrorHandling
+_02038EC6:
+ ldr r2, _02038EE4 ; =0x020F34DC
+ ldr r1, _02038EE8 ; =gScriptCmdTable
+ ldr r2, [r2, #0x0]
+ add r0, r4, #0x0
+ bl InitScriptContext
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ mov r3, #0x0
+ bl FUN_02038EEC
+ add r0, r4, #0x0
+ pop {r4-r6, pc}
+ nop
+_02038EE4: .word 0x020F34DC
+_02038EE8: .word gScriptCmdTable
+
+ thumb_func_start FUN_02038EEC
+FUN_02038EEC: ; 0x02038EEC
+ push {r4-r6, lr}
+ add r4, r1, #0x0
+ add r3, r4, #0x0
+ add r5, r0, #0x0
+ add r3, #0x80
+ str r5, [r3, #0x0]
+ bl FUN_02038F18
+ add r6, r0, #0x0
+ ldr r1, [r4, #0x7c]
+ add r0, r4, #0x0
+ bl SetupBytecodeScript
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ bl FUN_02039484
+ ldr r1, [r5, #0x10]
+ add r0, r4, #0x0
+ bl FUN_02038B6C
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02038F18
+FUN_02038F18: ; 0x02038F18
+ push {r3-r5, lr}
+ ldr r3, _02039210 ; =0x0000283C
+ add r4, r2, #0x0
+ cmp r4, r3
+ blo _02038F36
+ mov r3, #0x1f
+ ldr r2, _02039214 ; =0x000003D1
+ lsl r3, r3, #0x4
+ bl FUN_020392B4
+ ldr r0, _02039210 ; =0x0000283C
+ sub r0, r4, r0
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ b _0203920A
+_02038F36:
+ add r2, r3, #0x0
+ sub r2, #0x64
+ cmp r4, r2
+ blo _02038F52
+ ldr r2, _02039218 ; =0x00000175
+ add r3, r2, #0x0
+ sub r3, #0x29
+ bl FUN_020392B4
+ ldr r0, _0203921C ; =0x000027D8
+ sub r0, r4, r0
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ b _0203920A
+_02038F52:
+ add r2, r3, #0x0
+ sub r2, #0x96
+ cmp r4, r2
+ blo _02038F6C
+ ldr r2, _02039220 ; =0x00000412
+ ldr r3, _02039224 ; =0x00000232
+ bl FUN_020392B4
+ ldr r0, _02039228 ; =0x000027A6
+ sub r0, r4, r0
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ b _0203920A
+_02038F6C:
+ sub r3, #0xc8
+ cmp r4, r3
+ blo _02038F84
+ ldr r2, _0203922C ; =0x00000411
+ ldr r3, _02039230 ; =0x00000233
+ bl FUN_020392B4
+ ldr r0, _02039234 ; =0x00002774
+ sub r0, r4, r0
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ b _0203920A
+_02038F84:
+ ldr r3, _02039238 ; =0x00002710
+ cmp r4, r3
+ blo _02038F9E
+ ldr r2, _0203923C ; =0x00000177
+ add r3, r2, #0x0
+ sub r3, #0x29
+ bl FUN_020392B4
+ ldr r0, _02039238 ; =0x00002710
+ sub r0, r4, r0
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ b _0203920A
+_02038F9E:
+ add r2, r3, #0x0
+ sub r2, #0x32
+ cmp r4, r2
+ blo _02038FBC
+ mov r2, #0x5e
+ lsl r2, r2, #0x2
+ add r3, r2, #0x0
+ sub r3, #0x29
+ bl FUN_020392B4
+ ldr r0, _02039240 ; =0x000026DE
+ sub r0, r4, r0
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ b _0203920A
+_02038FBC:
+ add r2, r3, #0x0
+ sub r2, #0x64
+ cmp r4, r2
+ blo _02038FD6
+ ldr r2, _02039244 ; =0x0000016D
+ mov r3, #0xc7
+ bl FUN_020392B4
+ ldr r0, _02039248 ; =0x000026AC
+ sub r0, r4, r0
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ b _0203920A
+_02038FD6:
+ add r2, r3, #0x0
+ sub r2, #0xc8
+ cmp r4, r2
+ blo _02038FF0
+ mov r2, #0xce
+ mov r3, #0xcb
+ bl FUN_020392B4
+ ldr r0, _0203924C ; =0x00002648
+ sub r0, r4, r0
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ b _0203920A
+_02038FF0:
+ ldr r5, _02039250 ; =0x000025E4
+ cmp r4, r5
+ blo _0203900A
+ ldr r2, _02039254 ; =0x00000183
+ add r3, r2, #0x0
+ sub r3, #0x9
+ bl FUN_020392B4
+ add r0, r5, #0x0
+ sub r0, r4, r0
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ b _0203920A
+_0203900A:
+ add r2, r5, #0x0
+ sub r2, #0x64
+ cmp r4, r2
+ blo _02039026
+ ldr r2, _02039258 ; =0x00000179
+ mov r3, #0xc7
+ bl FUN_020392B4
+ add r0, r5, #0x0
+ sub r0, #0x64
+ sub r0, r4, r0
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ b _0203920A
+_02039026:
+ sub r5, #0xc8
+ cmp r4, r5
+ blo _02039042
+ mov r2, #0x1d
+ lsl r2, r2, #0x4
+ add r3, r2, #0x0
+ add r3, #0x1c
+ bl FUN_020392B4
+ ldr r0, _0203925C ; =0x0000251C
+ sub r0, r4, r0
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ b _0203920A
+_02039042:
+ ldr r5, _02039260 ; =0x000024B8
+ cmp r4, r5
+ blo _0203905C
+ ldr r2, _02039264 ; =0x00000187
+ add r3, r2, #0x0
+ sub r3, #0xa
+ bl FUN_020392B4
+ add r0, r5, #0x0
+ sub r0, r4, r0
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ b _0203920A
+_0203905C:
+ add r2, r5, #0x0
+ sub r2, #0x64
+ cmp r4, r2
+ blo _0203907C
+ mov r2, #0x5d
+ lsl r2, r2, #0x2
+ add r3, r2, #0x0
+ sub r3, #0x2b
+ bl FUN_020392B4
+ add r0, r5, #0x0
+ sub r0, #0x64
+ sub r0, r4, r0
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ b _0203920A
+_0203907C:
+ sub r5, #0xc8
+ cmp r4, r5
+ blo _02039098
+ mov r2, #0x61
+ lsl r2, r2, #0x2
+ add r3, r2, #0x0
+ sub r3, #0x9
+ bl FUN_020392B4
+ ldr r0, _02039268 ; =0x000023F0
+ sub r0, r4, r0
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ b _0203920A
+_02039098:
+ ldr r2, _0203926C ; =0x0000238C
+ cmp r4, r2
+ blo _020390B0
+ mov r2, #0x0
+ mov r3, #0x9
+ bl FUN_020392B4
+ ldr r0, _0203926C ; =0x0000238C
+ sub r0, r4, r0
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ b _0203920A
+_020390B0:
+ add r5, r2, #0x0
+ sub r5, #0x64
+ cmp r4, r5
+ blo _020390CA
+ mov r2, #0xcf
+ add r3, r2, #0x0
+ bl FUN_020392B4
+ ldr r0, _02039270 ; =0x00002328
+ sub r0, r4, r0
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ b _0203920A
+_020390CA:
+ add r5, r2, #0x0
+ sub r5, #0x82
+ cmp r4, r5
+ blo _020390E4
+ ldr r2, _02039274 ; =0x00000186
+ mov r3, #0x7
+ bl FUN_020392B4
+ ldr r0, _02039278 ; =0x0000230A
+ sub r0, r4, r0
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ b _0203920A
+_020390E4:
+ add r5, r2, #0x0
+ sub r5, #0x96
+ cmp r4, r5
+ blo _02039100
+ ldr r2, _0203927C ; =0x000001CF
+ add r3, r2, #0x0
+ add r3, #0x17
+ bl FUN_020392B4
+ ldr r0, _02039280 ; =0x000022F6
+ sub r0, r4, r0
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ b _0203920A
+_02039100:
+ sub r2, #0xc8
+ cmp r4, r2
+ blo _0203911A
+ ldr r2, _02039284 ; =0x00000185
+ add r3, r2, #0x0
+ sub r3, #0x9
+ bl FUN_020392B4
+ ldr r0, _02039288 ; =0x000022C4
+ sub r0, r4, r0
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ b _0203920A
+_0203911A:
+ ldr r2, _0203928C ; =0x00002260
+ cmp r4, r2
+ blo _02039134
+ ldr r2, _02039290 ; =0x000001CE
+ add r3, r2, #0x0
+ add r3, #0x17
+ bl FUN_020392B4
+ ldr r0, _0203928C ; =0x00002260
+ sub r0, r4, r0
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ b _0203920A
+_02039134:
+ mov r2, #0x7d
+ lsl r2, r2, #0x6
+ cmp r4, r2
+ blo _02039152
+ ldr r2, _02039294 ; =0x00000176
+ add r3, r2, #0x0
+ sub r3, #0x29
+ bl FUN_020392B4
+ mov r0, #0x7d
+ lsl r0, r0, #0x6
+ sub r0, r4, r0
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ b _0203920A
+_02039152:
+ ldr r5, _02039298 ; =0x00001B58
+ cmp r4, r5
+ blo _0203916C
+ ldr r2, _0203929C ; =0x00000172
+ add r3, r2, #0x0
+ sub r3, #0x2d
+ bl FUN_020392B4
+ add r0, r5, #0x0
+ sub r0, r4, r0
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ b _0203920A
+_0203916C:
+ lsr r5, r3, #0x1
+ cmp r4, r5
+ blo _02039186
+ mov r2, #0x41
+ lsl r2, r2, #0x4
+ mov r3, #0xc7
+ bl FUN_020392B4
+ ldr r0, _020392A0 ; =0x00001388
+ sub r0, r4, r0
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ b _0203920A
+_02039186:
+ ldr r5, _020392A4 ; =0x00000BB8
+ cmp r4, r5
+ blo _020391A0
+ mov r2, #0x41
+ lsl r2, r2, #0x4
+ mov r3, #0xc7
+ bl FUN_020392B4
+ add r0, r5, #0x0
+ sub r0, r4, r0
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ b _0203920A
+_020391A0:
+ sub r5, #0xc8
+ cmp r4, r5
+ blo _020391BC
+ ldr r2, _020392A8 ; =0x0000017A
+ add r3, r2, #0x0
+ sub r3, #0x1c
+ bl FUN_020392B4
+ mov r0, #0xaf
+ lsl r0, r0, #0x4
+ sub r0, r4, r0
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ b _0203920A
+_020391BC:
+ lsr r3, r3, #0x2
+ cmp r4, r3
+ blo _020391D4
+ mov r2, #0x1
+ mov r3, #0xd
+ bl FUN_020392B4
+ ldr r0, _020392AC ; =0x000009C4
+ sub r0, r4, r0
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ b _0203920A
+_020391D4:
+ lsr r2, r2, #0x2
+ cmp r4, r2
+ blo _020391EE
+ mov r2, #0xcd
+ mov r3, #0xc7
+ bl FUN_020392B4
+ mov r0, #0x7d
+ lsl r0, r0, #0x4
+ sub r0, r4, r0
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ b _0203920A
+_020391EE:
+ cmp r4, #0x1
+ blo _020391FE
+ bl FUN_020392D8
+ sub r0, r4, #0x1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ b _0203920A
+_020391FE:
+ ldr r2, _020392B0 ; =0x00000171
+ add r3, r2, #0x0
+ sub r3, #0x34
+ bl FUN_020392B4
+ mov r4, #0x0
+_0203920A:
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ nop
+_02039210: .word 0x0000283C
+_02039214: .word 0x000003D1
+_02039218: .word 0x00000175
+_0203921C: .word 0x000027D8
+_02039220: .word 0x00000412
+_02039224: .word 0x00000232
+_02039228: .word 0x000027A6
+_0203922C: .word 0x00000411
+_02039230: .word 0x00000233
+_02039234: .word 0x00002774
+_02039238: .word 0x00002710
+_0203923C: .word 0x00000177
+_02039240: .word 0x000026DE
+_02039244: .word 0x0000016D
+_02039248: .word 0x000026AC
+_0203924C: .word 0x00002648
+_02039250: .word 0x000025E4
+_02039254: .word 0x00000183
+_02039258: .word 0x00000179
+_0203925C: .word 0x0000251C
+_02039260: .word 0x000024B8
+_02039264: .word 0x00000187
+_02039268: .word 0x000023F0
+_0203926C: .word 0x0000238C
+_02039270: .word 0x00002328
+_02039274: .word 0x00000186
+_02039278: .word 0x0000230A
+_0203927C: .word 0x000001CF
+_02039280: .word 0x000022F6
+_02039284: .word 0x00000185
+_02039288: .word 0x000022C4
+_0203928C: .word 0x00002260
+_02039290: .word 0x000001CE
+_02039294: .word 0x00000176
+_02039298: .word 0x00001B58
+_0203929C: .word 0x00000172
+_020392A0: .word 0x00001388
+_020392A4: .word 0x00000BB8
+_020392A8: .word 0x0000017A
+_020392AC: .word 0x000009C4
+_020392B0: .word 0x00000171
+
+ thumb_func_start FUN_020392B4
+FUN_020392B4: ; 0x020392B4
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ add r1, r2, #0x0
+ add r4, r3, #0x0
+ mov r0, #0xa
+ mov r2, #0xb
+ bl LoadFromNarc_2
+ str r0, [r5, #0x7c]
+ mov r0, #0x1
+ mov r1, #0x1a
+ add r2, r4, #0x0
+ mov r3, #0xb
+ bl FUN_0200A86C
+ str r0, [r5, #0x78]
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020392D8
+FUN_020392D8: ; 0x020392D8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x1c]
+ add r4, r1, #0x0
+ ldr r0, [r0, #0x0]
+ bl FUN_0203949C
+ str r0, [r4, #0x7c]
+ ldr r0, [r5, #0x1c]
+ ldr r0, [r0, #0x0]
+ bl FUN_020394B0
+ add r2, r0, #0x0
+ mov r0, #0x1
+ mov r1, #0x1a
+ mov r3, #0xb
+ bl FUN_0200A86C
+ str r0, [r4, #0x78]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02039300
+FUN_02039300: ; 0x02039300
+ push {r3, lr}
+ cmp r1, #0x36
+ bls _02039308
+ b _02039430
+_02039308:
+ add r2, r1, r1
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_02039314: ; jump table (using 16-bit offset)
+ .short _02039382 - _02039314 - 2; case 0
+ .short _02039386 - _02039314 - 2; case 1
+ .short _0203938A - _02039314 - 2; case 2
+ .short _0203938E - _02039314 - 2; case 3
+ .short _02039392 - _02039314 - 2; case 4
+ .short _02039396 - _02039314 - 2; case 5
+ .short _0203939A - _02039314 - 2; case 6
+ .short _0203939E - _02039314 - 2; case 7
+ .short _020393A2 - _02039314 - 2; case 8
+ .short _020393A6 - _02039314 - 2; case 9
+ .short _020393AA - _02039314 - 2; case 10
+ .short _020393AE - _02039314 - 2; case 11
+ .short _020393B2 - _02039314 - 2; case 12
+ .short _020393B6 - _02039314 - 2; case 13
+ .short _020393BA - _02039314 - 2; case 14
+ .short _020393BE - _02039314 - 2; case 15
+ .short _020393C2 - _02039314 - 2; case 16
+ .short _020393C6 - _02039314 - 2; case 17
+ .short _020393CA - _02039314 - 2; case 18
+ .short _020393CE - _02039314 - 2; case 19
+ .short _020393D2 - _02039314 - 2; case 20
+ .short _020393D6 - _02039314 - 2; case 21
+ .short _020393DA - _02039314 - 2; case 22
+ .short _020393DE - _02039314 - 2; case 23
+ .short _020393E2 - _02039314 - 2; case 24
+ .short _020393E6 - _02039314 - 2; case 25
+ .short _020393EA - _02039314 - 2; case 26
+ .short _020393EE - _02039314 - 2; case 27
+ .short _020393F2 - _02039314 - 2; case 28
+ .short _020393F6 - _02039314 - 2; case 29
+ .short _020393FA - _02039314 - 2; case 30
+ .short _020393FE - _02039314 - 2; case 31
+ .short _02039402 - _02039314 - 2; case 32
+ .short _02039406 - _02039314 - 2; case 33
+ .short _0203940A - _02039314 - 2; case 34
+ .short _0203940E - _02039314 - 2; case 35
+ .short _02039412 - _02039314 - 2; case 36
+ .short _02039416 - _02039314 - 2; case 37
+ .short _0203941A - _02039314 - 2; case 38
+ .short _0203941E - _02039314 - 2; case 39
+ .short _02039422 - _02039314 - 2; case 40
+ .short _02039426 - _02039314 - 2; case 41
+ .short _02039426 - _02039314 - 2; case 42
+ .short _02039426 - _02039314 - 2; case 43
+ .short _02039426 - _02039314 - 2; case 44
+ .short _02039426 - _02039314 - 2; case 45
+ .short _02039426 - _02039314 - 2; case 46
+ .short _02039426 - _02039314 - 2; case 47
+ .short _02039426 - _02039314 - 2; case 48
+ .short _02039426 - _02039314 - 2; case 49
+ .short _02039426 - _02039314 - 2; case 50
+ .short _02039426 - _02039314 - 2; case 51
+ .short _02039426 - _02039314 - 2; case 52
+ .short _02039426 - _02039314 - 2; case 53
+ .short _02039426 - _02039314 - 2; case 54
+_02039382:
+ add r0, #0x10
+ pop {r3, pc}
+_02039386:
+ add r0, #0x14
+ pop {r3, pc}
+_0203938A:
+ add r0, #0x24
+ pop {r3, pc}
+_0203938E:
+ add r0, r0, #0x5
+ pop {r3, pc}
+_02039392:
+ add r0, r0, #0x6
+ pop {r3, pc}
+_02039396:
+ add r0, r0, #0x7
+ pop {r3, pc}
+_0203939A:
+ add r0, #0x8
+ pop {r3, pc}
+_0203939E:
+ add r0, #0x9
+ pop {r3, pc}
+_020393A2:
+ add r0, #0xa
+ pop {r3, pc}
+_020393A6:
+ add r0, #0x28
+ pop {r3, pc}
+_020393AA:
+ add r0, #0x2c
+ pop {r3, pc}
+_020393AE:
+ add r0, #0x30
+ pop {r3, pc}
+_020393B2:
+ add r0, #0x34
+ pop {r3, pc}
+_020393B6:
+ add r0, #0x38
+ pop {r3, pc}
+_020393BA:
+ add r0, #0x3c
+ pop {r3, pc}
+_020393BE:
+ add r0, #0x40
+ pop {r3, pc}
+_020393C2:
+ add r0, #0x44
+ pop {r3, pc}
+_020393C6:
+ add r0, #0x48
+ pop {r3, pc}
+_020393CA:
+ add r0, #0x4c
+ pop {r3, pc}
+_020393CE:
+ add r0, #0xa8
+ pop {r3, pc}
+_020393D2:
+ add r0, #0xac
+ pop {r3, pc}
+_020393D6:
+ add r0, #0xb0
+ pop {r3, pc}
+_020393DA:
+ add r0, #0xb4
+ pop {r3, pc}
+_020393DE:
+ add r0, #0xc
+ pop {r3, pc}
+_020393E2:
+ add r0, #0x50
+ pop {r3, pc}
+_020393E6:
+ add r0, #0x54
+ pop {r3, pc}
+_020393EA:
+ add r0, #0x58
+ pop {r3, pc}
+_020393EE:
+ add r0, #0x5c
+ pop {r3, pc}
+_020393F2:
+ add r0, #0x60
+ pop {r3, pc}
+_020393F6:
+ add r0, #0x64
+ pop {r3, pc}
+_020393FA:
+ add r0, #0x68
+ pop {r3, pc}
+_020393FE:
+ add r0, #0x6c
+ pop {r3, pc}
+_02039402:
+ add r0, #0x70
+ pop {r3, pc}
+_02039406:
+ add r0, #0x74
+ pop {r3, pc}
+_0203940A:
+ add r0, #0x78
+ pop {r3, pc}
+_0203940E:
+ add r0, #0x7c
+ pop {r3, pc}
+_02039412:
+ add r0, #0x80
+ pop {r3, pc}
+_02039416:
+ add r0, #0x84
+ pop {r3, pc}
+_0203941A:
+ add r0, #0xb8
+ pop {r3, pc}
+_0203941E:
+ add r0, #0xc8
+ pop {r3, pc}
+_02039422:
+ add r0, #0xd8
+ pop {r3, pc}
+_02039426:
+ sub r1, #0x29
+ add r0, #0x88
+ lsl r1, r1, #0x1
+ add r0, r0, r1
+ pop {r3, pc}
+_02039430:
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_02039438
+FUN_02039438: ; 0x02039438
+ push {r3-r5, lr}
+ ldr r0, [r0, #0x10]
+ add r5, r1, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x0]
+ ldr r0, _0203945C ; =0x0003643F
+ cmp r1, r0
+ beq _02039450
+ bl ErrorHandling
+_02039450:
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ bl FUN_02039300
+ pop {r3-r5, pc}
+ nop
+_0203945C: .word 0x0003643F
+
+ thumb_func_start FUN_02039460
+FUN_02039460: ; 0x02039460
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x10]
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02035068
+ cmp r0, #0x1
+ bne _0203947C
+ ldr r0, _02039480 ; =FUN_020351A0
+ add r4, #0xa4
+ str r0, [r4, #0x0]
+_0203947C:
+ pop {r3-r5, pc}
+ nop
+_02039480: .word FUN_020351A0
+
+ thumb_func_start FUN_02039484
+FUN_02039484: ; 0x02039484
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r2, [r4, #0x8]
+ lsl r1, r1, #0x2
+ add r1, r2, r1
+ str r1, [r4, #0x8]
+ bl ScriptReadWord
+ ldr r1, [r4, #0x8]
+ add r0, r1, r0
+ str r0, [r4, #0x8]
+ pop {r4, pc}
+
+ thumb_func_start FUN_0203949C
+FUN_0203949C: ; 0x0203949C
+ push {r3, lr}
+ bl FUN_02034788
+ add r1, r0, #0x0
+ mov r0, #0xa
+ mov r2, #0xb
+ bl LoadFromNarc_2
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_020394B0
+FUN_020394B0: ; 0x020394B0
+ ldr r3, _020394B4 ; =FUN_02034774
+ bx r3
+ .balign 4
+_020394B4: .word FUN_02034774
+
+ thumb_func_start FUN_020394B8
+FUN_020394B8: ; 0x020394B8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0xc]
+ add r4, r1, #0x0
+ bl FUN_020462AC
+ mov r1, #0x1
+ lsl r1, r1, #0xe
+ cmp r4, r1
+ bhs _020394D0
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_020394D0:
+ lsl r1, r1, #0x1
+ cmp r4, r1
+ bhs _020394DE
+ add r1, r4, #0x0
+ bl FUN_02046380
+ pop {r3-r5, pc}
+_020394DE:
+ ldr r1, _020394EC ; =0x00007FD7
+ add r0, r5, #0x0
+ sub r1, r4, r1
+ bl FUN_02039438
+ pop {r3-r5, pc}
+ nop
+_020394EC: .word 0x00007FD7
+
+ thumb_func_start FUN_020394F0
+FUN_020394F0: ; 0x020394F0
+ push {r4, lr}
+ add r4, r1, #0x0
+ bl FUN_020394B8
+ cmp r0, #0x0
+ beq _020394FE
+ ldrh r4, [r0, #0x0]
+_020394FE:
+ add r0, r4, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02039504
+FUN_02039504: ; 0x02039504
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ cmp r4, #0x10
+ blo _02039512
+ bl ErrorHandling
+_02039512:
+ ldr r1, _02039524 ; =0x00004020
+ add r0, r5, #0x0
+ add r1, r4, r1
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ bl FUN_020394F0
+ pop {r3-r5, pc}
+ nop
+_02039524: .word 0x00004020
+
+ thumb_func_start FUN_02039528
+FUN_02039528: ; 0x02039528
+ push {r4, lr}
+ ldr r0, [r0, #0xc]
+ add r4, r1, #0x0
+ bl FUN_020462AC
+ add r1, r4, #0x0
+ bl FUN_020462B8
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203953C
+FUN_0203953C: ; 0x0203953C
+ push {r4, lr}
+ ldr r0, [r0, #0xc]
+ add r4, r1, #0x0
+ bl FUN_020462AC
+ add r1, r4, #0x0
+ bl FUN_020462E4
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02039550
+FUN_02039550: ; 0x02039550
+ push {r4, lr}
+ ldr r0, [r0, #0xc]
+ add r4, r1, #0x0
+ bl FUN_020462AC
+ add r1, r4, #0x0
+ bl FUN_0204630C
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02039564
+FUN_02039564: ; 0x02039564
+ push {r4, lr}
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ mov r1, #0x1
+ add r4, r0, #0x0
+ bl FUN_02046338
+ mov r1, #0x0
+ strb r1, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ strb r1, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ strb r1, [r0, #0x4]
+ strb r1, [r0, #0x5]
+ strb r1, [r0, #0x6]
+ strb r1, [r0, #0x7]
+ mov r1, #0x1
+ add r0, r4, #0x0
+ lsl r1, r1, #0xe
+ bl FUN_02046380
+ mov r1, #0x0
+ mov r2, #0x40
+ blx FUN_020DF4A4
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203959C
+FUN_0203959C: ; 0x0203959C
+ push {r3, lr}
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ mov r1, #0xaa
+ lsl r1, r1, #0x4
+ bl FUN_02046338
+ mov r2, #0x18
+ mov r1, #0x0
+_020395B0:
+ strb r1, [r0, #0x0]
+ add r0, r0, #0x1
+ sub r2, r2, #0x1
+ bne _020395B0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_020395BC
+FUN_020395BC: ; 0x020395BC
+ push {r3-r7, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ mov r1, #0x29
+ add r6, r2, #0x0
+ add r7, r3, #0x0
+ bl FUN_02039438
+ strh r4, [r0, #0x0]
+ add r0, r5, #0x0
+ mov r1, #0x2a
+ bl FUN_02039438
+ strh r6, [r0, #0x0]
+ add r0, r5, #0x0
+ mov r1, #0x2b
+ bl FUN_02039438
+ strh r7, [r0, #0x0]
+ add r0, r5, #0x0
+ mov r1, #0x2c
+ bl FUN_02039438
+ add r1, sp, #0x8
+ ldrh r1, [r1, #0x10]
+ strh r1, [r0, #0x0]
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020395F4
+FUN_020395F4: ; 0x020395F4
+ ldr r1, _02039610 ; =0x00001388
+ cmp r0, r1
+ bhs _02039604
+ ldr r1, _02039614 ; =0x00000BB7
+ sub r0, r0, r1
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bx lr
+_02039604:
+ sub r1, r1, #0x1
+ sub r0, r0, r1
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bx lr
+ nop
+_02039610: .word 0x00001388
+_02039614: .word 0x00000BB7
+
+ thumb_func_start FUN_02039618
+FUN_02039618: ; 0x02039618
+ ldr r1, _02039628 ; =0x00001388
+ cmp r0, r1
+ blo _02039622
+ mov r0, #0x1
+ bx lr
+_02039622:
+ mov r0, #0x0
+ bx lr
+ nop
+_02039628: .word 0x00001388
+
+ thumb_func_start FUN_0203962C
+FUN_0203962C: ; 0x0203962C
+ push {r3, lr}
+ mov r1, #0x9
+ bl FUN_0206AC74
+ cmp r0, #0x0
+ beq _0203963C
+ mov r0, #0x1
+ pop {r3, pc}
+_0203963C:
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_02039640
+FUN_02039640: ; 0x02039640
+ push {r4, lr}
+ ldr r0, [r0, #0xc]
+ add r4, r1, #0x0
+ bl FUN_020462AC
+ mov r1, #0x55
+ lsl r1, r1, #0x4
+ add r1, r4, r1
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ bl FUN_020462B8
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203965C
+FUN_0203965C: ; 0x0203965C
+ push {r4, lr}
+ ldr r0, [r0, #0xc]
+ add r4, r1, #0x0
+ bl FUN_020462AC
+ mov r1, #0x55
+ lsl r1, r1, #0x4
+ add r1, r4, r1
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ bl FUN_020462E4
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02039678
+FUN_02039678: ; 0x02039678
+ push {r4, lr}
+ ldr r0, [r0, #0xc]
+ add r4, r1, #0x0
+ bl FUN_020462AC
+ mov r1, #0x55
+ lsl r1, r1, #0x4
+ add r1, r4, r1
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ bl FUN_0204630C
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02039694
+FUN_02039694: ; 0x02039694
+ ldr r1, _020396A0 ; =0x00001C66
+ sub r0, r0, r1
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bx lr
+ nop
+_020396A0: .word 0x00001C66
+
+ thumb_func_start FUN_020396A4
+FUN_020396A4: ; 0x020396A4
+ mov r1, #0x7d
+ lsl r1, r1, #0x6
+ sub r0, r0, r1
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bx lr
+
+ thumb_func_start FUN_020396B0
+FUN_020396B0: ; 0x020396B0
+ push {r4, lr}
+ ldr r4, _020396E4 ; =0x020F2DB4
+ bl FUN_020396A4
+ lsl r0, r0, #0x18
+ lsr r3, r0, #0x18
+ mov r1, #0x0
+ add r2, r4, #0x0
+_020396C0:
+ ldrh r0, [r2, #0x6]
+ cmp r3, r0
+ beq _020396CE
+ add r1, r1, #0x1
+ add r2, #0x8
+ cmp r1, #0xe5
+ blo _020396C0
+_020396CE:
+ cmp r1, #0xe5
+ blo _020396DA
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r4, pc}
+_020396DA:
+ lsl r0, r1, #0x3
+ add r0, r4, r0
+ ldrb r0, [r0, #0x3]
+ pop {r4, pc}
+ nop
+_020396E4: .word 0x020F2DB4
+
+ thumb_func_start FUN_020396E8
+FUN_020396E8: ; 0x020396E8
+ push {r3-r7, lr}
+ add r5, r1, #0x0
+ add r4, r0, #0x0
+ mov r1, #0x29
+ bl FUN_02039300
+ add r7, r0, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x2a
+ bl FUN_02039300
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x2b
+ bl FUN_02039300
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_020396A4
+ lsl r0, r0, #0x18
+ ldr r2, _02039750 ; =0x020F2DB4
+ lsr r3, r0, #0x18
+ mov r1, #0x0
+_02039718:
+ ldrh r0, [r2, #0x6]
+ cmp r3, r0
+ beq _02039726
+ add r1, r1, #0x1
+ add r2, #0x8
+ cmp r1, #0xe5
+ blo _02039718
+_02039726:
+ cmp r1, #0xe5
+ blo _02039732
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_02039732:
+ lsl r0, r1, #0x3
+ ldr r1, _02039750 ; =0x020F2DB4
+ ldrh r1, [r1, r0]
+ strh r1, [r7, #0x0]
+ ldr r1, _02039750 ; =0x020F2DB4
+ add r0, r1, r0
+ ldrb r0, [r0, #0x2]
+ strh r0, [r6, #0x0]
+ add r0, r5, #0x0
+ bl FUN_02039694
+ strh r0, [r4, #0x0]
+ mov r0, #0x1
+ pop {r3-r7, pc}
+ nop
+_02039750: .word 0x020F2DB4
+
+ thumb_func_start FUN_02039754
+FUN_02039754: ; 0x02039754
+ push {r4-r7, lr}
+ sub sp, #0x24
+ str r0, [sp, #0x0]
+ add r4, r1, #0x0
+ mov r6, #0x0
+ bl FUN_02034AF8
+ add r5, r0, #0x0
+ add r2, r5, #0x1
+ mov r1, #0x6
+ add r0, r4, #0x0
+ mul r1, r2
+ bl FUN_02016998
+ str r0, [sp, #0x1c]
+ cmp r5, #0x0
+ bne _02039786
+ mov r2, #0xff
+ add r1, r0, #0x0
+ strb r2, [r1, #0x4]
+ ldr r2, _02039870 ; =0x0000FFFF
+ add sp, #0x24
+ strh r2, [r1, #0x0]
+ strh r2, [r1, #0x2]
+ pop {r4-r7, pc}
+_02039786:
+ ldr r0, [sp, #0x0]
+ bl FUN_02034AF0
+ add r4, r0, #0x0
+ bne _020397A0
+ ldr r0, [sp, #0x1c]
+ mov r1, #0xff
+ strb r1, [r0, #0x4]
+ ldr r1, _02039870 ; =0x0000FFFF
+ add sp, #0x24
+ strh r1, [r0, #0x0]
+ strh r1, [r0, #0x2]
+ pop {r4-r7, pc}
+_020397A0:
+ ldr r0, [sp, #0x0]
+ ldr r0, [r0, #0x38]
+ bl FUN_02055320
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x0]
+ ldr r0, [r0, #0x38]
+ bl FUN_0205532C
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x18]
+ sub r0, r0, #0x7
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x18]
+ add r0, r0, #0x7
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x14]
+ sub r0, r0, #0x7
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x14]
+ add r0, r0, #0x6
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x10]
+ cmp r0, #0x0
+ bge _020397D6
+ add r0, r6, #0x0
+ str r0, [sp, #0x10]
+_020397D6:
+ ldr r0, [sp, #0x8]
+ cmp r0, #0x0
+ bge _020397E0
+ mov r0, #0x0
+ str r0, [sp, #0x8]
+_020397E0:
+ add r0, r5, #0x1
+ mov r7, #0x0
+ str r0, [sp, #0x20]
+ cmp r0, #0x0
+ ble _02039856
+ ldr r5, [sp, #0x1c]
+_020397EC:
+ ldrh r0, [r4, #0x2]
+ cmp r0, #0x2
+ bne _0203984C
+ ldrh r0, [r4, #0x0]
+ bl FUN_02039694
+ add r1, r0, #0x0
+ ldr r0, [sp, #0x0]
+ bl FUN_02039528
+ cmp r0, #0x0
+ bne _0203984C
+ ldr r1, [r4, #0x4]
+ ldr r0, [sp, #0x10]
+ cmp r1, r0
+ blt _0203984C
+ ldr r0, [sp, #0xc]
+ cmp r1, r0
+ bgt _0203984C
+ ldr r1, [r4, #0x8]
+ ldr r0, [sp, #0x8]
+ cmp r1, r0
+ blt _0203984C
+ ldr r0, [sp, #0x4]
+ cmp r1, r0
+ bgt _0203984C
+ ldrh r0, [r4, #0x0]
+ bl FUN_020396B0
+ strb r0, [r5, #0x4]
+ ldr r1, [r4, #0x4]
+ ldr r0, [sp, #0x18]
+ sub r1, r0, r1
+ mov r0, #0x7
+ sub r0, r0, r1
+ blx FUN_020DE3F0
+ strh r0, [r5, #0x0]
+ ldr r1, [r4, #0x8]
+ ldr r0, [sp, #0x14]
+ sub r1, r0, r1
+ mov r0, #0x7
+ sub r0, r0, r1
+ blx FUN_020DE3F0
+ strh r0, [r5, #0x2]
+ add r5, r5, #0x6
+ add r6, r6, #0x1
+_0203984C:
+ ldr r0, [sp, #0x20]
+ add r7, r7, #0x1
+ add r4, #0x14
+ cmp r7, r0
+ blt _020397EC
+_02039856:
+ mov r0, #0x6
+ add r3, r6, #0x0
+ mul r3, r0
+ ldr r0, [sp, #0x1c]
+ mov r1, #0xff
+ add r2, r0, r3
+ strb r1, [r2, #0x4]
+ ldr r1, _02039870 ; =0x0000FFFF
+ strh r1, [r0, r3]
+ strh r1, [r2, #0x2]
+ add sp, #0x24
+ pop {r4-r7, pc}
+ nop
+_02039870: .word 0x0000FFFF
+
+ thumb_func_start FUN_02039874
+FUN_02039874: ; 0x02039874
+ ldr r3, _0203987C ; =FUN_02039880
+ mov r1, #0x96
+ lsl r1, r1, #0x6
+ bx r3
+ .balign 4
+_0203987C: .word FUN_02039880
+
+ thumb_func_start FUN_02039880
+FUN_02039880: ; 0x02039880
+ push {r4, lr}
+ bl FUN_02038EB0
+ add r4, r0, #0x0
+_02039888:
+ add r0, r4, #0x0
+ bl RunScriptCommand
+ cmp r0, #0x1
+ beq _02039888
+ add r0, r4, #0x0
+ bl FUN_02038E48
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0203989C
+FUN_0203989C: ; 0x0203989C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_02034D2C
+ add r1, r0, #0x0
+ bne _020398AE
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_020398AE:
+ cmp r4, #0x1
+ bne _020398BC
+ add r0, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_02039914
+ b _020398C2
+_020398BC:
+ add r1, r4, #0x0
+ bl _020398EC
+_020398C2:
+ add r1, r0, #0x0
+ ldr r0, _020398E8 ; =0x0000FFFF
+ cmp r1, r0
+ bne _020398CE
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_020398CE:
+ cmp r4, #0x1
+ bne _020398DC
+ add r0, r5, #0x0
+ mov r2, #0x0
+ bl FUN_02038C78
+ b _020398E2
+_020398DC:
+ add r0, r5, #0x0
+ bl FUN_02039880
+_020398E2:
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ nop
+_020398E8: .word 0x0000FFFF
+_020398EC:
+ ldrb r2, [r0, #0x0]
+ cmp r2, #0x0
+ bne _020398F6
+ ldr r0, _02039910 ; =0x0000FFFF
+ bx lr
+_020398F6:
+ cmp r2, r1
+ bne _02039908
+ ldrb r1, [r0, #0x1]
+ ldrb r0, [r0, #0x2]
+ lsl r0, r0, #0x8
+ add r0, r1, r0
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bx lr
+_02039908:
+ add r0, r0, #0x5
+ b _020398EC
+_0203990C: ; 0x0203990C
+ bx lr
+ nop
+_02039910: .word 0x0000FFFF
+
+ thumb_func_start FUN_02039914
+FUN_02039914: ; 0x02039914
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+_0203991A:
+ ldrb r0, [r4, #0x0]
+ cmp r0, #0x0
+ bne _02039924
+ ldr r0, _0203999C ; =0x0000FFFF
+ pop {r3-r7, pc}
+_02039924:
+ cmp r0, r2
+ bne _02039940
+ ldrb r0, [r4, #0x4]
+ ldrb r2, [r4, #0x2]
+ ldrb r3, [r4, #0x1]
+ lsl r1, r0, #0x18
+ ldrb r0, [r4, #0x3]
+ lsl r2, r2, #0x8
+ add r2, r3, r2
+ lsl r0, r0, #0x10
+ add r0, r0, r2
+ add r1, r1, r0
+ add r0, r4, #0x5
+ b _02039944
+_02039940:
+ add r4, r4, #0x5
+ b _0203991A
+_02039944:
+ cmp r1, #0x0
+ bne _0203994C
+ ldr r0, _0203999C ; =0x0000FFFF
+ pop {r3-r7, pc}
+_0203994C:
+ add r4, r0, r1
+_0203994E:
+ ldrb r1, [r4, #0x0]
+ cmp r1, #0x0
+ bne _02039958
+ ldr r0, _0203999C ; =0x0000FFFF
+ pop {r3-r7, pc}
+_02039958:
+ ldrb r0, [r4, #0x1]
+ lsl r0, r0, #0x8
+ add r0, r1, r0
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ bne _02039968
+ ldr r0, _0203999C ; =0x0000FFFF
+ pop {r3-r7, pc}
+_02039968:
+ ldrb r0, [r4, #0x3]
+ ldrb r2, [r4, #0x2]
+ lsl r0, r0, #0x8
+ add r0, r2, r0
+ lsl r0, r0, #0x10
+ lsr r6, r0, #0x10
+ add r0, r5, #0x0
+ bl FUN_020394F0
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_020394F0
+ cmp r7, r0
+ bne _02039996
+ ldrb r0, [r4, #0x5]
+ ldrb r1, [r4, #0x4]
+ lsl r0, r0, #0x8
+ add r0, r1, r0
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ pop {r3-r7, pc}
+_02039996:
+ add r4, r4, #0x6
+ b _0203994E
+ pop {r3-r7, pc}
+ .balign 4
+_0203999C: .word 0x0000FFFF
diff --git a/asm/unk_02046030.s b/asm/unk_02046030.s
new file mode 100644
index 00000000..dfeeba8a
--- /dev/null
+++ b/asm/unk_02046030.s
@@ -0,0 +1,142185 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ thumb_func_start FUN_02046030
+FUN_02046030: ; 0x02046030
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0xb
+ mov r1, #0xc
+ bl FUN_020169D8
+ add r2, r0, #0x0
+ mov r0, #0x0
+ strb r0, [r2, #0x0]
+ strb r0, [r2, #0x1]
+ strb r0, [r2, #0x2]
+ strb r0, [r2, #0x3]
+ strb r0, [r2, #0x4]
+ strb r0, [r2, #0x5]
+ strb r0, [r2, #0x6]
+ strb r0, [r2, #0x7]
+ strb r0, [r2, #0x8]
+ strb r0, [r2, #0x9]
+ strb r0, [r2, #0xa]
+ strb r0, [r2, #0xb]
+ ldr r0, [r4, #0x10]
+ ldr r1, _02046064 ; =FUN_02046068
+ bl FUN_0204640C
+ pop {r4, pc}
+ nop
+_02046064: .word FUN_02046068
+
+ thumb_func_start FUN_02046068
+FUN_02046068: ; 0x02046068
+ push {r4-r6, lr}
+ sub sp, #0x38
+ add r6, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_020462AC
+ ldrb r1, [r4, #0x8]
+ cmp r1, #0xb
+ bls _0204608A
+ b _020461F8
+_0204608A:
+ add r2, r1, r1
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_02046096: ; jump table (using 16-bit offset)
+ .short _020460AE - _02046096 - 2; case 0
+ .short _020460D4 - _02046096 - 2; case 1
+ .short _020460E2 - _02046096 - 2; case 2
+ .short _0204610A - _02046096 - 2; case 3
+ .short _02046118 - _02046096 - 2; case 4
+ .short _02046150 - _02046096 - 2; case 5
+ .short _02046160 - _02046096 - 2; case 6
+ .short _0204618A - _02046096 - 2; case 7
+ .short _02046198 - _02046096 - 2; case 8
+ .short _020461C0 - _02046096 - 2; case 9
+ .short _020461CE - _02046096 - 2; case 10
+ .short _020461E4 - _02046096 - 2; case 11
+_020460AE:
+ ldr r0, [r5, #0x38]
+ bl FUN_02055320
+ strh r0, [r4, #0x4]
+ ldr r0, [r5, #0x38]
+ bl FUN_0205532C
+ strh r0, [r4, #0x6]
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_0206367C
+ add r0, r6, #0x0
+ bl FUN_0204AFC8
+ ldrb r0, [r4, #0x8]
+ add r0, r0, #0x1
+ strb r0, [r4, #0x8]
+ b _020461F8
+_020460D4:
+ add r0, r6, #0x0
+ bl FUN_0204AF3C
+ ldrb r0, [r4, #0x8]
+ add r0, r0, #0x1
+ strb r0, [r4, #0x8]
+ b _020461F8
+_020460E2:
+ bl FUN_0205F1C4
+ mov r0, #0xac
+ str r0, [sp, #0x24]
+ sub r0, #0xad
+ str r0, [sp, #0x28]
+ ldr r0, _02046200 ; =0x0000034F
+ add r1, sp, #0x24
+ str r0, [sp, #0x2c]
+ ldr r0, _02046204 ; =0x00000231
+ str r0, [sp, #0x30]
+ mov r0, #0x1
+ str r0, [sp, #0x34]
+ add r0, r6, #0x0
+ bl FUN_02049160
+ ldrb r0, [r4, #0x8]
+ add r0, r0, #0x1
+ strb r0, [r4, #0x8]
+ b _020461F8
+_0204610A:
+ add r0, r6, #0x0
+ bl FUN_0204AF84
+ ldrb r0, [r4, #0x8]
+ add r0, r0, #0x1
+ strb r0, [r4, #0x8]
+ b _020461F8
+_02046118:
+ ldr r0, [r5, #0x38]
+ mov r1, #0x1
+ bl FUN_02046214
+ add r0, r5, #0x0
+ bl FUN_02046224
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x6
+ str r0, [sp, #0x4]
+ mov r0, #0x1
+ str r0, [sp, #0x8]
+ mov r0, #0xb
+ str r0, [sp, #0xc]
+ ldr r3, _02046208 ; =0x0000FFFF
+ add r0, r6, #0x0
+ mov r1, #0x3
+ mov r2, #0x11
+ bl FUN_0204C1B4
+ ldr r0, _0204620C ; =0x00000679
+ bl FUN_020054C8
+ ldrb r0, [r4, #0x8]
+ add r0, r0, #0x1
+ strb r0, [r4, #0x8]
+ b _020461F8
+_02046150:
+ ldr r0, _02046210 ; =0x021C48B8
+ ldr r2, [r0, #0x48]
+ mov r0, #0x3
+ tst r0, r2
+ beq _020461F8
+ add r0, r1, #0x1
+ strb r0, [r4, #0x8]
+ b _020461F8
+_02046160:
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x6
+ str r0, [sp, #0x4]
+ mov r0, #0x1
+ str r0, [sp, #0x8]
+ mov r0, #0xb
+ str r0, [sp, #0xc]
+ ldr r3, _02046208 ; =0x0000FFFF
+ add r0, r6, #0x0
+ mov r1, #0x3
+ mov r2, #0x10
+ bl FUN_0204C1B4
+ ldr r0, _0204620C ; =0x00000679
+ bl FUN_020054C8
+ ldrb r0, [r4, #0x8]
+ add r0, r0, #0x1
+ strb r0, [r4, #0x8]
+ b _020461F8
+_0204618A:
+ add r0, r6, #0x0
+ bl FUN_0204AF3C
+ ldrb r0, [r4, #0x8]
+ add r0, r0, #0x1
+ strb r0, [r4, #0x8]
+ b _020461F8
+_02046198:
+ bl FUN_0205F1D4
+ ldrh r2, [r4, #0x6]
+ ldrh r1, [r4, #0x4]
+ mov r0, #0xa4
+ str r0, [sp, #0x10]
+ sub r0, #0xa5
+ str r0, [sp, #0x14]
+ mov r0, #0x0
+ str r1, [sp, #0x18]
+ str r0, [sp, #0x20]
+ str r2, [sp, #0x1c]
+ add r0, r6, #0x0
+ add r1, sp, #0x10
+ bl FUN_02049160
+ ldrb r0, [r4, #0x8]
+ add r0, r0, #0x1
+ strb r0, [r4, #0x8]
+ b _020461F8
+_020461C0:
+ add r0, r6, #0x0
+ bl FUN_0204AF84
+ ldrb r0, [r4, #0x8]
+ add r0, r0, #0x1
+ strb r0, [r4, #0x8]
+ b _020461F8
+_020461CE:
+ ldr r0, [r5, #0x38]
+ mov r1, #0x0
+ bl FUN_02046214
+ add r0, r6, #0x0
+ bl FUN_0204B00C
+ ldrb r0, [r4, #0x8]
+ add r0, r0, #0x1
+ strb r0, [r4, #0x8]
+ b _020461F8
+_020461E4:
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_0206367C
+ add sp, #0x38
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_020461F8:
+ mov r0, #0x0
+ add sp, #0x38
+ pop {r4-r6, pc}
+ nop
+_02046200: .word 0x0000034F
+_02046204: .word 0x00000231
+_02046208: .word 0x0000FFFF
+_0204620C: .word 0x00000679
+_02046210: .word 0x021C48B8
+
+ thumb_func_start FUN_02046214
+FUN_02046214: ; 0x02046214
+ push {r4, lr}
+ add r4, r1, #0x0
+ bl FUN_020553A0
+ add r1, r4, #0x0
+ bl FUN_0205889C
+ pop {r4, pc}
+
+ thumb_func_start FUN_02046224
+FUN_02046224: ; 0x02046224
+ push {r3-r4, lr}
+ sub sp, #0x14
+ add r4, r0, #0x0
+ ldr r0, _02046278 ; =0x000008C1
+ ldr r1, [r4, #0x20]
+ bl FUN_0201EEF0
+ ldr r0, _0204627C ; =0x000F81B8
+ ldr r1, [r4, #0x20]
+ bl FUN_0201EFE0
+ ldr r0, _02046280 ; =0x0350523D
+ str r0, [sp, #0x8]
+ ldr r0, _02046284 ; =0x0015EDB7
+ str r0, [sp, #0xc]
+ ldr r0, _02046288 ; =0x023DA40E
+ str r0, [sp, #0x10]
+ ldr r1, [r4, #0x20]
+ add r0, sp, #0x8
+ bl FUN_0201F04C
+ ldr r1, _0204628C ; =0x00000823
+ add r0, sp, #0x0
+ strh r1, [r0, #0x0]
+ mov r1, #0x52
+ lsl r1, r1, #0x4
+ strh r1, [r0, #0x2]
+ mov r1, #0x0
+ strh r1, [r0, #0x4]
+ ldr r1, [r4, #0x20]
+ add r0, sp, #0x0
+ bl FUN_0201EF90
+ mov r0, #0x3
+ ldr r1, _02046290 ; =0x0061C000
+ ldr r2, [r4, #0x20]
+ lsl r0, r0, #0xe
+ bl FUN_0201EC94
+ add sp, #0x14
+ pop {r3-r4, pc}
+ nop
+_02046278: .word 0x000008C1
+_0204627C: .word 0x000F81B8
+_02046280: .word 0x0350523D
+_02046284: .word 0x0015EDB7
+_02046288: .word 0x023DA40E
+_0204628C: .word 0x00000823
+_02046290: .word 0x0061C000
+
+ thumb_func_start FUN_02046294
+FUN_02046294: ; 0x02046294
+ mov r0, #0xeb
+ lsl r0, r0, #0x2
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0204629C
+FUN_0204629C: ; 0x0204629C
+ ldr r3, _020462A8 ; =FUN_020DF4A4
+ mov r2, #0xeb
+ mov r1, #0x0
+ lsl r2, r2, #0x2
+ bx r3
+ nop
+_020462A8: .word FUN_020DF4A4
+
+ thumb_func_start FUN_020462AC
+FUN_020462AC: ; 0x020462AC
+ ldr r3, _020462B4 ; =FUN_02022610
+ mov r1, #0x4
+ bx r3
+ nop
+_020462B4: .word FUN_02022610
+
+ thumb_func_start FUN_020462B8
+FUN_020462B8: ; 0x020462B8
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ bl FUN_02046338
+ cmp r0, #0x0
+ beq _020462DE
+ lsr r3, r4, #0x1f
+ lsl r2, r4, #0x1d
+ ldrb r5, [r0, #0x0]
+ sub r2, r2, r3
+ mov r1, #0x1d
+ ror r2, r1
+ mov r0, #0x1
+ add r1, r3, r2
+ add r2, r0, #0x0
+ lsl r2, r1
+ add r1, r5, #0x0
+ tst r1, r2
+ bne _020462E0
+_020462DE:
+ mov r0, #0x0
+_020462E0:
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020462E4
+FUN_020462E4: ; 0x020462E4
+ push {r4-r6, lr}
+ add r4, r1, #0x0
+ bl FUN_02046338
+ cmp r0, #0x0
+ beq _02046308
+ lsr r5, r4, #0x1f
+ lsl r3, r4, #0x1d
+ sub r3, r3, r5
+ mov r2, #0x1d
+ ror r3, r2
+ mov r6, #0x1
+ add r2, r5, r3
+ add r3, r6, #0x0
+ ldrb r1, [r0, #0x0]
+ lsl r3, r2
+ orr r1, r3
+ strb r1, [r0, #0x0]
+_02046308:
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204630C
+FUN_0204630C: ; 0x0204630C
+ push {r4-r6, lr}
+ add r4, r1, #0x0
+ bl FUN_02046338
+ cmp r0, #0x0
+ beq _02046334
+ lsr r5, r4, #0x1f
+ lsl r3, r4, #0x1d
+ sub r3, r3, r5
+ mov r2, #0x1d
+ ror r3, r2
+ mov r6, #0x1
+ add r2, r5, r3
+ add r3, r6, #0x0
+ lsl r3, r2
+ mov r2, #0xff
+ ldrb r1, [r0, #0x0]
+ eor r2, r3
+ and r1, r2
+ strb r1, [r0, #0x0]
+_02046334:
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02046338
+FUN_02046338: ; 0x02046338
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ cmp r1, #0x0
+ bne _02046344
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_02046344:
+ mov r0, #0x1
+ lsl r0, r0, #0xe
+ cmp r1, r0
+ bhs _02046364
+ mov r0, #0x5b
+ lsr r4, r1, #0x3
+ lsl r0, r0, #0x2
+ cmp r4, r0
+ blt _0204635A
+ bl ErrorHandling
+_0204635A:
+ mov r0, #0x9
+ lsl r0, r0, #0x6
+ add r0, r5, r0
+ add r0, r0, r4
+ pop {r3-r5, pc}
+_02046364:
+ sub r1, r1, r0
+ asr r0, r1, #0x2
+ lsr r0, r0, #0x1d
+ add r0, r1, r0
+ asr r4, r0, #0x3
+ cmp r4, #0x8
+ blt _02046376
+ bl ErrorHandling
+_02046376:
+ ldr r0, _0204637C ; =0x021C5A14
+ add r0, r0, r4
+ pop {r3-r5, pc}
+ .balign 4
+_0204637C: .word 0x021C5A14
+
+ thumb_func_start FUN_02046380
+FUN_02046380: ; 0x02046380
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r0, #0x1
+ lsl r0, r0, #0xe
+ sub r4, r1, r0
+ mov r0, #0x12
+ lsl r0, r0, #0x4
+ cmp r4, r0
+ blt _02046396
+ bl ErrorHandling
+_02046396:
+ lsl r0, r4, #0x1
+ add r0, r5, r0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0204639C
+FUN_0204639C: ; 0x0204639C
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ mov r0, #0x20
+ add r6, r1, #0x0
+ add r1, r0, #0x0
+ add r7, r2, #0x0
+ bl FUN_020169D8
+ add r4, r0, #0x0
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+ str r6, [r4, #0x4]
+ str r0, [r4, #0x8]
+ str r7, [r4, #0xc]
+ str r0, [r4, #0x10]
+ str r0, [r4, #0x14]
+ mov r0, #0x20
+ mov r1, #0x4
+ str r5, [r4, #0x18]
+ bl FUN_020169D8
+ str r0, [r4, #0x1c]
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_020463CC
+FUN_020463CC: ; 0x020463CC
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x10]
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ cmp r0, #0x0
+ beq _020463DE
+ bl ErrorHandling
+_020463DE:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_0204639C
+ str r0, [r5, #0x10]
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_020463EC
+FUN_020463EC: ; 0x020463EC
+ push {r4, lr}
+ add r4, r0, #0x0
+ str r1, [r4, #0x4]
+ mov r0, #0x0
+ str r0, [r4, #0x8]
+ str r2, [r4, #0xc]
+ ldr r0, [r4, #0x14]
+ cmp r0, #0x0
+ bne _02046400
+ beq _0204640A
+_02046400:
+ bl FUN_02016A18
+ mov r0, #0x0
+ str r0, [r4, #0x10]
+ str r0, [r4, #0x14]
+_0204640A:
+ pop {r4, pc}
+
+ thumb_func_start FUN_0204640C
+FUN_0204640C: ; 0x0204640C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x18]
+ bl FUN_0204639C
+ str r4, [r0, #0x0]
+ ldr r1, [r4, #0x18]
+ str r0, [r1, #0x10]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02046420
+FUN_02046420: ; 0x02046420
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x10]
+ cmp r0, #0x0
+ bne _0204642E
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0204642E:
+ ldr r1, [r0, #0x4]
+ blx r1
+ cmp r0, #0x1
+ bne _02046466
+_02046436:
+ ldr r0, [r5, #0x10]
+ ldr r4, [r0, #0x0]
+ ldr r0, [r0, #0x14]
+ cmp r0, #0x0
+ beq _02046444
+ bl FUN_02016A18
+_02046444:
+ ldr r0, [r5, #0x10]
+ ldr r0, [r0, #0x1c]
+ bl FUN_02016A18
+ ldr r0, [r5, #0x10]
+ bl FUN_02016A18
+ str r4, [r5, #0x10]
+ cmp r4, #0x0
+ bne _0204645C
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0204645C:
+ ldr r0, [r5, #0x10]
+ ldr r1, [r0, #0x4]
+ blx r1
+ cmp r0, #0x1
+ beq _02046436
+_02046466:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204646C
+FUN_0204646C: ; 0x0204646C
+ ldr r0, [r0, #0x10]
+ cmp r0, #0x0
+ beq _02046476
+ mov r0, #0x1
+ bx lr
+_02046476:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0204647C
+FUN_0204647C: ; 0x0204647C
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_0203739C
+ cmp r0, #0x0
+ bne _02046492
+ add r0, r4, #0x0
+ bl FUN_020373C4
+ cmp r0, #0x0
+ beq _02046496
+_02046492:
+ mov r0, #0x1
+ pop {r4, pc}
+_02046496:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204649C
+FUN_0204649C: ; 0x0204649C
+ ldr r3, _020464A0 ; =FUN_02037350
+ bx r3
+ .balign 4
+_020464A0: .word FUN_02037350
+
+ thumb_func_start FUN_020464A4
+FUN_020464A4: ; 0x020464A4
+ push {r3, lr}
+ bl FUN_020373AC
+ cmp r0, #0x0
+ beq _020464B2
+ mov r0, #0x1
+ pop {r3, pc}
+_020464B2:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_020464B8
+FUN_020464B8: ; 0x020464B8
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ beq _020464D6
+ cmp r0, #0x1
+ beq _020464E8
+ b _020464FC
+_020464D6:
+ ldr r1, [r4, #0x4]
+ ldr r2, [r4, #0x8]
+ add r0, r5, #0x0
+ bl FUN_020373D4
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _020464FC
+_020464E8:
+ add r0, r5, #0x0
+ bl FUN_0204647C
+ cmp r0, #0x0
+ bne _020464FC
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_020464FC:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02046500
+FUN_02046500: ; 0x02046500
+ push {r4-r6, lr}
+ add r6, r0, #0x0
+ add r5, r1, #0x0
+ mov r0, #0x20
+ mov r1, #0xc
+ add r4, r2, #0x0
+ bl FUN_020169D8
+ add r2, r0, #0x0
+ mov r0, #0x0
+ str r0, [r2, #0x0]
+ str r5, [r2, #0x4]
+ ldr r1, _02046524 ; =FUN_020464B8
+ add r0, r6, #0x0
+ str r4, [r2, #0x8]
+ bl FUN_0204640C
+ pop {r4-r6, pc}
+ .balign 4
+_02046524: .word FUN_020464B8
+
+ thumb_func_start FUN_02046528
+FUN_02046528: ; 0x02046528
+ ldr r0, [r0, #0x18]
+ bx lr
+
+ thumb_func_start FUN_0204652C
+FUN_0204652C: ; 0x0204652C
+ ldr r0, [r0, #0xc]
+ bx lr
+
+ thumb_func_start FUN_02046530
+FUN_02046530: ; 0x02046530
+ add r0, #0x8
+ bx lr
+
+ thumb_func_start FUN_02046534
+FUN_02046534: ; 0x02046534
+ ldr r0, [r0, #0x1c]
+ ldr r0, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0204653C
+FUN_0204653C: ; 0x0204653C
+ push {r4-r6, lr}
+ add r4, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0204652C
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02046530
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ beq _02046562
+ cmp r0, #0x1
+ beq _02046572
+ b _02046580
+_02046562:
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_0203780C
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02046580
+_02046572:
+ add r0, r5, #0x0
+ bl FUN_0204647C
+ cmp r0, #0x0
+ bne _02046580
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_02046580:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02046584
+FUN_02046584: ; 0x02046584
+ ldr r3, _0204658C ; =FUN_0204640C
+ add r2, r1, #0x0
+ ldr r1, _02046590 ; =FUN_0204653C
+ bx r3
+ .balign 4
+_0204658C: .word FUN_0204640C
+_02046590: .word FUN_0204653C
+
+ thumb_func_start FUN_02046594
+FUN_02046594: ; 0x02046594
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ mov r0, #0xb
+ mov r1, #0x14
+ add r7, r2, #0x0
+ add r4, r3, #0x0
+ bl FUN_020169D8
+ str r4, [r0, #0x0]
+ cmp r4, #0x0
+ beq _020465B0
+ mov r1, #0x0
+ str r1, [r4, #0x0]
+_020465B0:
+ str r6, [r0, #0x4]
+ str r7, [r0, #0x8]
+ str r5, [r0, #0x10]
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_020465B8
+FUN_020465B8: ; 0x020465B8
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x10]
+ bl FUN_02047964
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020465CC
+FUN_020465CC: ; 0x020465CC
+ ldr r2, [r0, #0x0]
+ cmp r2, #0x0
+ beq _020465D8
+ ldr r1, [r0, #0x10]
+ ldr r1, [r1, #0x14]
+ str r1, [r2, #0x0]
+_020465D8:
+ ldr r0, [r0, #0x10]
+ ldr r3, _020465E0 ; =FUN_020480B8
+ ldr r0, [r0, #0x14]
+ bx r3
+ .balign 4
+_020465E0: .word FUN_020480B8
+
+ thumb_func_start FUN_020465E4
+FUN_020465E4: ; 0x020465E4
+ push {r3, lr}
+ mov r2, #0x2
+ ldr r3, [r0, #0x0]
+ lsl r2, r2, #0x1e
+ tst r2, r3
+ bne _020465F4
+ bl FUN_02047F38
+_020465F4:
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_020465F8
+FUN_020465F8: ; 0x020465F8
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ bl FUN_02046528
+ add r6, r0, #0x0
+ add r0, r7, #0x0
+ bl FUN_0204652C
+ add r5, r0, #0x0
+ add r0, r7, #0x0
+ bl FUN_02046530
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x5
+ bhi _020466F8
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02046624: ; jump table (using 16-bit offset)
+ .short _02046630 - _02046624 - 2; case 0
+ .short _02046648 - _02046624 - 2; case 1
+ .short _02046656 - _02046624 - 2; case 2
+ .short _02046666 - _02046624 - 2; case 3
+ .short _020466DA - _02046624 - 2; case 4
+ .short _020466EE - _02046624 - 2; case 5
+_02046630:
+ ldr r0, [r6, #0x34]
+ bl FUN_02058780
+ ldr r1, [r5, #0x4]
+ ldr r2, [r5, #0x8]
+ add r0, r7, #0x0
+ bl FUN_0204AEF8
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _020466F8
+_02046648:
+ add r0, r7, #0x0
+ bl FUN_0204AF3C
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _020466F8
+_02046656:
+ ldr r1, [r5, #0x10]
+ add r0, r7, #0x0
+ bl FUN_02046584
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _020466F8
+_02046666:
+ ldr r0, [r5, #0x10]
+ add r1, r6, #0x0
+ bl FUN_020465E4
+ ldr r2, [r5, #0x10]
+ ldr r1, [r2, #0x0]
+ cmp r1, #0x0
+ beq _02046682
+ mov r0, #0x1
+ lsl r0, r0, #0x8
+ cmp r1, r0
+ beq _02046682
+ cmp r1, #0x4a
+ bne _02046690
+_02046682:
+ mov r1, #0x4d
+ lsl r1, r1, #0x2
+ ldr r1, [r2, r1]
+ ldr r2, [r2, #0x14]
+ add r0, r6, #0x0
+ bl FUN_02061080
+_02046690:
+ add r0, r5, #0x0
+ bl FUN_020465CC
+ cmp r0, #0x0
+ bne _020466A4
+ add r0, r5, #0x0
+ bl FUN_020465B8
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_020466A4:
+ ldr r0, [r6, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205ED3C
+ cmp r0, #0x0
+ beq _020466BC
+ ldr r0, [r6, #0xc]
+ bl FUN_0206BB1C
+ bl FUN_02085140
+_020466BC:
+ ldr r1, [r5, #0x10]
+ add r0, r6, #0x0
+ bl FUN_020472F4
+ ldr r1, [r5, #0x10]
+ add r0, r6, #0x0
+ bl FUN_020473CC
+ add r0, r7, #0x0
+ bl FUN_0204AF84
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _020466F8
+_020466DA:
+ ldr r0, [r6, #0x34]
+ bl FUN_020587B0
+ add r0, r7, #0x0
+ bl FUN_0204B00C
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _020466F8
+_020466EE:
+ add r0, r5, #0x0
+ bl FUN_020465B8
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_020466F8:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_020466FC
+FUN_020466FC: ; 0x020466FC
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, r1, #0x0
+ add r1, r2, #0x0
+ add r2, r3, #0x0
+ ldr r3, [sp, #0x8]
+ bl FUN_02046594
+ add r2, r0, #0x0
+ ldr r1, _02046718 ; =FUN_020465F8
+ add r0, r4, #0x0
+ bl FUN_0204640C
+ pop {r4, pc}
+ .balign 4
+_02046718: .word FUN_020465F8
+
+ thumb_func_start FUN_0204671C
+FUN_0204671C: ; 0x0204671C
+ push {r3, lr}
+ mov r2, #0xf
+ and r0, r2
+ cmp r0, #0x6
+ bhi _02046754
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02046732: ; jump table (using 16-bit offset)
+ .short _02046754 - _02046732 - 2; case 0
+ .short _02046740 - _02046732 - 2; case 1
+ .short _0204674A - _02046732 - 2; case 2
+ .short _02046754 - _02046732 - 2; case 3
+ .short _02046754 - _02046732 - 2; case 4
+ .short _0204674A - _02046732 - 2; case 5
+ .short _02046740 - _02046732 - 2; case 6
+_02046740:
+ ldr r0, [r1, #0xc]
+ mov r1, #0x1
+ bl FUN_0202E25C
+ pop {r3, pc}
+_0204674A:
+ ldr r0, [r1, #0xc]
+ sub r2, #0x10
+ add r1, r2, #0x0
+ bl FUN_0202E25C
+_02046754:
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02046758
+FUN_02046758: ; 0x02046758
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ bl FUN_02046528
+ add r7, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_0204652C
+ add r5, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_02046530
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x5
+ bhi _020467F6
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02046784: ; jump table (using 16-bit offset)
+ .short _02046790 - _02046784 - 2; case 0
+ .short _020467A2 - _02046784 - 2; case 1
+ .short _020467B0 - _02046784 - 2; case 2
+ .short _020467C0 - _02046784 - 2; case 3
+ .short _020467EC - _02046784 - 2; case 4
+ .short _020467EC - _02046784 - 2; case 5
+_02046790:
+ ldr r1, [r5, #0x4]
+ ldr r2, [r5, #0x8]
+ add r0, r6, #0x0
+ bl FUN_0204AEF8
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _020467F6
+_020467A2:
+ add r0, r6, #0x0
+ bl FUN_0204AF3C
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _020467F6
+_020467B0:
+ ldr r1, [r5, #0x10]
+ add r0, r6, #0x0
+ bl FUN_02046584
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _020467F6
+_020467C0:
+ ldr r0, [r5, #0x10]
+ add r1, r7, #0x0
+ ldr r0, [r0, #0x14]
+ bl FUN_0204671C
+ ldr r0, [r5, #0x10]
+ add r1, r7, #0x0
+ bl FUN_02047FA4
+ ldr r0, [r7, #0xc]
+ bl FUN_02029FC8
+ mov r1, #0x15
+ bl FUN_0202A170
+ add r0, r6, #0x0
+ bl FUN_0204AF84
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _020467F6
+_020467EC:
+ add r0, r5, #0x0
+ bl FUN_020465B8
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_020467F6:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020467FC
+FUN_020467FC: ; 0x020467FC
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ bl FUN_02046528
+ add r6, r0, #0x0
+ add r0, r7, #0x0
+ bl FUN_0204652C
+ add r5, r0, #0x0
+ add r0, r7, #0x0
+ bl FUN_02046530
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ beq _02046826
+ cmp r0, #0x1
+ beq _02046844
+ cmp r0, #0x2
+ beq _0204686A
+ b _02046874
+_02046826:
+ ldr r1, [r5, #0x8]
+ mov r0, #0x5
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ mov r2, #0x1
+ bl FUN_0200433C
+ ldr r1, [r5, #0x10]
+ add r0, r7, #0x0
+ bl FUN_02046584
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02046874
+_02046844:
+ ldr r0, [r5, #0x10]
+ add r1, r6, #0x0
+ ldr r0, [r0, #0x14]
+ bl FUN_0204671C
+ ldr r0, [r5, #0x10]
+ add r1, r6, #0x0
+ bl FUN_02047FA4
+ ldr r0, [r6, #0xc]
+ bl FUN_02029FC8
+ mov r1, #0x15
+ bl FUN_0202A170
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02046874
+_0204686A:
+ add r0, r5, #0x0
+ bl FUN_020465B8
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02046874:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02046878
+FUN_02046878: ; 0x02046878
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ bl FUN_02046528
+ add r7, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_0204652C
+ add r5, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_02046530
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x5
+ bhi _02046922
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_020468A4: ; jump table (using 16-bit offset)
+ .short _020468B0 - _020468A4 - 2; case 0
+ .short _020468C2 - _020468A4 - 2; case 1
+ .short _020468D0 - _020468A4 - 2; case 2
+ .short _020468E0 - _020468A4 - 2; case 3
+ .short _0204690A - _020468A4 - 2; case 4
+ .short _02046918 - _020468A4 - 2; case 5
+_020468B0:
+ ldr r1, [r5, #0x4]
+ ldr r2, [r5, #0x8]
+ add r0, r6, #0x0
+ bl FUN_0204AEF8
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02046922
+_020468C2:
+ add r0, r6, #0x0
+ bl FUN_0204AF3C
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02046922
+_020468D0:
+ ldr r1, [r5, #0x10]
+ add r0, r6, #0x0
+ bl FUN_02046584
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02046922
+_020468E0:
+ ldr r0, [r5, #0x10]
+ add r1, r7, #0x0
+ bl FUN_02047FA4
+ mov r1, #0x4e
+ ldr r2, [r5, #0x10]
+ lsl r1, r1, #0x2
+ add r0, r7, #0x0
+ add r1, r2, r1
+ bl FUN_02060044
+ add r0, r5, #0x0
+ bl FUN_020465CC
+ add r0, r6, #0x0
+ bl FUN_0204AF84
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02046922
+_0204690A:
+ add r0, r6, #0x0
+ bl FUN_0204B00C
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02046922
+_02046918:
+ add r0, r5, #0x0
+ bl FUN_020465B8
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02046922:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02046928
+FUN_02046928: ; 0x02046928
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, r1, #0x0
+ add r1, r2, #0x0
+ add r2, r3, #0x0
+ ldr r3, [sp, #0x8]
+ bl FUN_02046594
+ add r2, r0, #0x0
+ ldr r1, _02046944 ; =FUN_02046878
+ add r0, r4, #0x0
+ bl FUN_0204640C
+ pop {r4, pc}
+ .balign 4
+_02046944: .word FUN_02046878
+
+ thumb_func_start FUN_02046948
+FUN_02046948: ; 0x02046948
+ push {r3-r7, lr}
+ add r4, r1, #0x0
+ add r7, r0, #0x0
+ add r5, r2, #0x0
+ bl FUN_02046528
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02244558
+ add r4, r0, #0x0
+ bl FUN_020475A0
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_020475B0
+ add r3, r0, #0x0
+ add r0, r7, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ str r5, [sp, #0x0]
+ bl FUN_02046928
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204697C
+FUN_0204697C: ; 0x0204697C
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ mov r0, #0xb
+ mov r1, #0x14
+ add r7, r2, #0x0
+ add r4, r3, #0x0
+ bl FUN_020169D8
+ str r4, [r0, #0xc]
+ cmp r4, #0x0
+ beq _02046998
+ mov r1, #0x0
+ str r1, [r4, #0x0]
+_02046998:
+ str r6, [r0, #0x4]
+ str r7, [r0, #0x8]
+ str r5, [r0, #0x10]
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_020469A4
+FUN_020469A4: ; 0x020469A4
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x10]
+ bl FUN_02047964
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020469B8
+FUN_020469B8: ; 0x020469B8
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0xc]
+ add r4, r1, #0x0
+ bl FUN_020462AC
+ bl FUN_0205F214
+ cmp r0, #0x0
+ beq _020469F2
+ add r0, r4, #0x0
+ bl FUN_020475A0
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_020475B0
+ add r2, r0, #0x0
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ mov r3, #0x0
+ bl FUN_02046594
+ add r2, r0, #0x0
+ ldr r1, _02046A18 ; =FUN_02046C1C
+ add r0, r5, #0x0
+ bl FUN_020463CC
+ pop {r4-r6, pc}
+_020469F2:
+ add r0, r4, #0x0
+ bl FUN_020475A0
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_020475B0
+ add r2, r0, #0x0
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ mov r3, #0x0
+ bl FUN_0204697C
+ add r2, r0, #0x0
+ ldr r1, _02046A1C ; =FUN_02046A88
+ add r0, r5, #0x0
+ bl FUN_020463CC
+ pop {r4-r6, pc}
+ .balign 4
+_02046A18: .word FUN_02046C1C
+_02046A1C: .word FUN_02046A88
+
+ thumb_func_start FUN_02046A20
+FUN_02046A20: ; 0x02046A20
+ push {r4-r6, lr}
+ ldr r0, [r0, #0xc]
+ add r5, r1, #0x0
+ add r4, r2, #0x0
+ bl FUN_020462AC
+ bl FUN_0205F214
+ cmp r0, #0x0
+ beq _02046A5A
+ add r0, r4, #0x0
+ bl FUN_020475A0
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_020475B0
+ add r2, r0, #0x0
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ mov r3, #0x0
+ bl FUN_02046594
+ add r2, r0, #0x0
+ ldr r1, _02046A80 ; =FUN_02046C1C
+ add r0, r5, #0x0
+ bl FUN_020463EC
+ pop {r4-r6, pc}
+_02046A5A:
+ add r0, r4, #0x0
+ bl FUN_020475A0
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_020475B0
+ add r2, r0, #0x0
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ mov r3, #0x0
+ bl FUN_0204697C
+ add r2, r0, #0x0
+ ldr r1, _02046A84 ; =FUN_02046A88
+ add r0, r5, #0x0
+ bl FUN_020463EC
+ pop {r4-r6, pc}
+ .balign 4
+_02046A80: .word FUN_02046C1C
+_02046A84: .word FUN_02046A88
+
+ thumb_func_start FUN_02046A88
+FUN_02046A88: ; 0x02046A88
+ push {r4-r6, lr}
+ add r6, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x6
+ bls _02046AA2
+ b _02046C12
+_02046AA2:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02046AAE: ; jump table (using 16-bit offset)
+ .short _02046ABC - _02046AAE - 2; case 0
+ .short _02046AE0 - _02046AAE - 2; case 1
+ .short _02046AEE - _02046AAE - 2; case 2
+ .short _02046AFE - _02046AAE - 2; case 3
+ .short _02046BAE - _02046AAE - 2; case 4
+ .short _02046BC4 - _02046AAE - 2; case 5
+ .short _02046BF4 - _02046AAE - 2; case 6
+_02046ABC:
+ ldr r0, [r5, #0x34]
+ bl FUN_02058780
+ ldr r0, [r5, #0xc]
+ bl FUN_02029FC8
+ mov r1, #0x7
+ bl FUN_0202A0E8
+ ldr r1, [r4, #0x4]
+ ldr r2, [r4, #0x8]
+ add r0, r6, #0x0
+ bl FUN_0204AEF8
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02046C12
+_02046AE0:
+ add r0, r6, #0x0
+ bl FUN_0204AF3C
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02046C12
+_02046AEE:
+ ldr r1, [r4, #0x10]
+ add r0, r6, #0x0
+ bl FUN_02046584
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02046C12
+_02046AFE:
+ ldr r0, [r4, #0x10]
+ add r1, r5, #0x0
+ bl FUN_020465E4
+ mov r1, #0x4d
+ ldr r2, [r4, #0x10]
+ lsl r1, r1, #0x2
+ ldr r1, [r2, r1]
+ ldr r2, [r2, #0x14]
+ add r0, r5, #0x0
+ bl FUN_02061080
+ ldr r0, [r4, #0x10]
+ ldr r0, [r0, #0x14]
+ bl FUN_020480B8
+ cmp r0, #0x0
+ bne _02046B3E
+ add r0, r4, #0x0
+ bl FUN_020469A4
+ add r5, #0x90
+ ldr r0, [r5, #0x0]
+ bl FUN_0205DD40
+ ldr r1, _02046C18 ; =FUN_0204837C
+ add r0, r6, #0x0
+ mov r2, #0x0
+ bl FUN_020463EC
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_02046B3E:
+ ldr r0, [r5, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205ED3C
+ cmp r0, #0x0
+ beq _02046B56
+ ldr r0, [r5, #0xc]
+ bl FUN_0206BB1C
+ bl FUN_02085140
+_02046B56:
+ ldr r1, [r4, #0x10]
+ add r0, r5, #0x0
+ bl FUN_020472F4
+ ldr r1, [r4, #0x10]
+ add r0, r5, #0x0
+ bl FUN_020473CC
+ add r0, r5, #0x0
+ add r0, #0x90
+ ldr r0, [r0, #0x0]
+ bl FUN_0205E128
+ cmp r0, #0x0
+ beq _02046BA0
+ add r0, r5, #0x0
+ add r0, #0x90
+ ldr r0, [r0, #0x0]
+ bl FUN_0205E0A4
+ cmp r0, #0x0
+ beq _02046B98
+ ldr r0, [r4, #0x10]
+ ldr r0, [r0, #0x14]
+ cmp r0, #0x1
+ beq _02046BA0
+ cmp r0, #0x4
+ beq _02046BA0
+ add r5, #0x90
+ ldr r0, [r5, #0x0]
+ bl FUN_0205DD40
+ b _02046BA0
+_02046B98:
+ add r5, #0x90
+ ldr r0, [r5, #0x0]
+ bl FUN_0205DD40
+_02046BA0:
+ add r0, r6, #0x0
+ bl FUN_0204AF84
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02046C12
+_02046BAE:
+ ldr r1, [r4, #0x10]
+ add r0, r5, #0x0
+ bl FUN_02248724
+ add r0, r6, #0x0
+ bl FUN_0204B00C
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02046C12
+_02046BC4:
+ add r0, r5, #0x0
+ add r0, #0x90
+ ldr r0, [r0, #0x0]
+ bl FUN_0205E128
+ cmp r0, #0x0
+ beq _02046BEC
+ ldr r1, [r4, #0x10]
+ add r2, r5, #0x0
+ add r2, #0x90
+ ldr r1, [r1, #0x14]
+ ldr r2, [r2, #0x0]
+ add r0, r5, #0x0
+ bl FUN_0205DED4
+ add r0, r5, #0x0
+ add r5, #0x90
+ ldr r1, [r5, #0x0]
+ bl FUN_0205DF44
+_02046BEC:
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02046C12
+_02046BF4:
+ add r0, r5, #0x0
+ add r0, #0x90
+ ldr r0, [r0, #0x0]
+ bl FUN_0205DF9C
+ cmp r0, #0x0
+ beq _02046C12
+ ldr r0, [r5, #0x34]
+ bl FUN_020587B0
+ add r0, r4, #0x0
+ bl FUN_020469A4
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_02046C12:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ nop
+_02046C18: .word FUN_0204837C
+
+ thumb_func_start FUN_02046C1C
+FUN_02046C1C: ; 0x02046C1C
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r7, r0, #0x0
+ bl FUN_02046528
+ add r6, r0, #0x0
+ add r0, r7, #0x0
+ bl FUN_0204652C
+ add r5, r0, #0x0
+ add r0, r7, #0x0
+ bl FUN_02046530
+ add r4, r0, #0x0
+ ldr r0, [r6, #0xc]
+ bl FUN_02034E30
+ bl FUN_02034E24
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x7
+ bls _02046C4C
+ b _02046DA0
+_02046C4C:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02046C58: ; jump table (using 16-bit offset)
+ .short _02046C68 - _02046C58 - 2; case 0
+ .short _02046C8C - _02046C58 - 2; case 1
+ .short _02046C9A - _02046C58 - 2; case 2
+ .short _02046CAA - _02046C58 - 2; case 3
+ .short _02046D0E - _02046C58 - 2; case 4
+ .short _02046D1C - _02046C58 - 2; case 5
+ .short _02046D30 - _02046C58 - 2; case 6
+ .short _02046D94 - _02046C58 - 2; case 7
+_02046C68:
+ ldr r0, [r6, #0x34]
+ bl FUN_02058780
+ ldr r0, [r6, #0xc]
+ bl FUN_02029FC8
+ mov r1, #0x7
+ bl FUN_0202A0E8
+ ldr r1, [r5, #0x4]
+ ldr r2, [r5, #0x8]
+ add r0, r7, #0x0
+ bl FUN_0204AEF8
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02046DA0
+_02046C8C:
+ add r0, r7, #0x0
+ bl FUN_0204AF3C
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02046DA0
+_02046C9A:
+ ldr r1, [r5, #0x10]
+ add r0, r7, #0x0
+ bl FUN_02046584
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02046DA0
+_02046CAA:
+ ldr r0, [r5, #0x10]
+ add r1, r6, #0x0
+ bl FUN_020465E4
+ ldr r0, [r5, #0x10]
+ ldr r0, [r0, #0x14]
+ cmp r0, #0x4
+ bne _02046CD4
+ ldr r0, [r6, #0xc]
+ bl FUN_02022504
+ str r0, [sp, #0x4]
+ ldr r0, [r5, #0x10]
+ mov r1, #0x0
+ ldr r0, [r0, #0x8]
+ bl FUN_0206B9B0
+ add r1, r0, #0x0
+ ldr r0, [sp, #0x4]
+ bl FUN_02060FE0
+_02046CD4:
+ ldr r1, [r5, #0x10]
+ add r0, r6, #0x0
+ bl FUN_020472F4
+ ldr r0, [sp, #0x0]
+ ldrh r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _02046CFE
+ ldr r0, [r5, #0x10]
+ ldr r0, [r0, #0x14]
+ cmp r0, #0x4
+ beq _02046CFE
+ ldr r0, [r6, #0xc]
+ bl FUN_02034E30
+ bl FUN_02034DD0
+ add r1, r0, #0x0
+ add r0, r7, #0x0
+ bl FUN_02049160
+_02046CFE:
+ ldr r1, [r5, #0x10]
+ add r0, r6, #0x0
+ bl FUN_020473CC
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02046DA0
+_02046D0E:
+ add r0, r7, #0x0
+ bl FUN_0204AF84
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02046DA0
+_02046D1C:
+ ldr r0, [r6, #0x34]
+ bl FUN_020587B0
+ add r0, r7, #0x0
+ bl FUN_0204B00C
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02046DA0
+_02046D30:
+ ldr r0, [sp, #0x0]
+ ldrh r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _02046D5C
+ ldr r0, [r5, #0x10]
+ ldr r0, [r0, #0x14]
+ cmp r0, #0x4
+ bne _02046D4E
+ mov r2, #0x0
+ ldr r1, _02046DA8 ; =0x00002262
+ add r0, r7, #0x0
+ add r3, r2, #0x0
+ bl FUN_02038CD8
+ b _02046D8C
+_02046D4E:
+ mov r2, #0x0
+ ldr r1, _02046DAC ; =0x00002269
+ add r0, r7, #0x0
+ add r3, r2, #0x0
+ bl FUN_02038CD8
+ b _02046D8C
+_02046D5C:
+ ldr r0, [r6, #0xc]
+ bl FUN_02022510
+ str r0, [sp, #0x8]
+ ldr r0, [r6, #0xc]
+ bl FUN_0206BB1C
+ add r5, r0, #0x0
+ ldr r0, [sp, #0x8]
+ bl FUN_0206B334
+ cmp r0, #0x12
+ bne _02046D8C
+ add r0, r5, #0x0
+ bl FUN_0206B9AC
+ cmp r0, #0x6
+ bne _02046D8C
+ mov r2, #0x0
+ ldr r1, _02046DB0 ; =0x00002276
+ add r0, r7, #0x0
+ add r3, r2, #0x0
+ bl FUN_02038CD8
+_02046D8C:
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02046DA0
+_02046D94:
+ add r0, r5, #0x0
+ bl FUN_020465B8
+ add sp, #0xc
+ mov r0, #0x1
+ pop {r4-r7, pc}
+_02046DA0:
+ mov r0, #0x0
+ add sp, #0xc
+ pop {r4-r7, pc}
+ nop
+_02046DA8: .word 0x00002262
+_02046DAC: .word 0x00002269
+_02046DB0: .word 0x00002276
+
+ thumb_func_start FUN_02046DB4
+FUN_02046DB4: ; 0x02046DB4
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ add r6, r1, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, #0x90
+ ldr r0, [r0, #0x0]
+ bl FUN_0205DD40
+ mov r0, #0xb
+ mov r1, #0x0
+ bl FUN_020476CC
+ add r1, r5, #0x0
+ add r4, r0, #0x0
+ bl FUN_02047BB0
+ mov r0, #0x15
+ mov r1, #0x0
+ lsl r0, r0, #0x4
+ str r1, [r4, r0]
+ add r0, r0, #0x4
+ str r1, [r4, r0]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0223CCDC
+ ldr r0, [r5, #0xc]
+ bl FUN_02029FC8
+ mov r1, #0x7
+ bl FUN_0202A0E8
+ add r0, r4, #0x0
+ bl FUN_020475A0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_020475B0
+ add r3, r0, #0x0
+ add r0, r7, #0x0
+ add r1, r4, #0x0
+ add r2, r5, #0x0
+ str r6, [sp, #0x0]
+ bl FUN_020466FC
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02046E18
+FUN_02046E18: ; 0x02046E18
+ push {r4-r7, lr}
+ sub sp, #0xc
+ str r0, [sp, #0x4]
+ add r7, r1, #0x0
+ str r2, [sp, #0x8]
+ add r6, r3, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, #0x90
+ ldr r0, [r0, #0x0]
+ bl FUN_0205DD40
+ mov r0, #0xb
+ mov r1, #0x0
+ bl FUN_020476CC
+ add r1, r5, #0x0
+ add r4, r0, #0x0
+ bl FUN_02047BB0
+ ldr r2, [sp, #0x8]
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ add r3, r4, #0x0
+ bl FUN_0223CD7C
+ ldr r0, [sp, #0x20]
+ cmp r0, #0x0
+ beq _02046E60
+ mov r1, #0x63
+ lsl r1, r1, #0x2
+ ldr r2, [r4, r1]
+ mov r0, #0x8
+ orr r0, r2
+ str r0, [r4, r1]
+_02046E60:
+ ldr r0, [r5, #0xc]
+ bl FUN_02029FC8
+ mov r1, #0x7
+ bl FUN_0202A0E8
+ add r0, r4, #0x0
+ bl FUN_020475A0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_020475B0
+ add r3, r0, #0x0
+ ldr r0, [sp, #0x4]
+ add r1, r4, #0x0
+ add r2, r5, #0x0
+ str r6, [sp, #0x0]
+ bl FUN_020466FC
+ add sp, #0xc
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_02046E8C
+FUN_02046E8C: ; 0x02046E8C
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ bl FUN_02046528
+ add r6, r0, #0x0
+ add r0, r7, #0x0
+ bl FUN_0204652C
+ add r5, r0, #0x0
+ add r0, r7, #0x0
+ bl FUN_02046530
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x6
+ bhi _02046F6C
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02046EB8: ; jump table (using 16-bit offset)
+ .short _02046EC6 - _02046EB8 - 2; case 0
+ .short _02046EEA - _02046EB8 - 2; case 1
+ .short _02046EF8 - _02046EB8 - 2; case 2
+ .short _02046F08 - _02046EB8 - 2; case 3
+ .short _02046F28 - _02046EB8 - 2; case 4
+ .short _02046F36 - _02046EB8 - 2; case 5
+ .short _02046F4A - _02046EB8 - 2; case 6
+_02046EC6:
+ ldr r0, [r6, #0x34]
+ bl FUN_02058780
+ ldr r0, [r6, #0xc]
+ bl FUN_02029FC8
+ mov r1, #0x7
+ bl FUN_0202A0E8
+ ldr r1, [r5, #0x4]
+ ldr r2, [r5, #0x8]
+ add r0, r7, #0x0
+ bl FUN_0204AEF8
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02046F6C
+_02046EEA:
+ add r0, r7, #0x0
+ bl FUN_0204AF3C
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02046F6C
+_02046EF8:
+ ldr r1, [r5, #0x10]
+ add r0, r7, #0x0
+ bl FUN_02046584
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02046F6C
+_02046F08:
+ ldr r0, [r5, #0x10]
+ add r1, r6, #0x0
+ bl FUN_020465E4
+ ldr r1, [r5, #0x10]
+ add r0, r6, #0x0
+ bl FUN_0204BAA0
+ ldr r1, [r5, #0x10]
+ add r0, r6, #0x0
+ bl FUN_020472F4
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02046F6C
+_02046F28:
+ add r0, r7, #0x0
+ bl FUN_0204AF84
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02046F6C
+_02046F36:
+ ldr r0, [r6, #0x34]
+ bl FUN_020587B0
+ add r0, r7, #0x0
+ bl FUN_0204B00C
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02046F6C
+_02046F4A:
+ add r0, r5, #0x0
+ bl FUN_020465B8
+ add r0, r6, #0x0
+ bl FUN_0204BAB0
+ cmp r0, #0x0
+ bne _02046F68
+ add r0, r7, #0x0
+ mov r1, #0x3
+ mov r2, #0x0
+ bl FUN_02038D10
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_02046F68:
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02046F6C:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02046F70
+FUN_02046F70: ; 0x02046F70
+ push {r4-r6, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_020475A0
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_020475B0
+ add r2, r0, #0x0
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ mov r3, #0x0
+ bl FUN_02046594
+ add r2, r0, #0x0
+ ldr r1, _02046F9C ; =FUN_02046E8C
+ add r0, r5, #0x0
+ bl FUN_020463CC
+ pop {r4-r6, pc}
+ .balign 4
+_02046F9C: .word FUN_02046E8C
+
+ thumb_func_start FUN_02046FA0
+FUN_02046FA0: ; 0x02046FA0
+ push {r3-r7, lr}
+ sub sp, #0x8
+ str r0, [sp, #0x4]
+ add r6, r1, #0x0
+ add r7, r2, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ mov r0, #0xb
+ mov r1, #0x0
+ bl FUN_020476CC
+ add r4, r0, #0x0
+ add r1, r5, #0x0
+ bl FUN_02047BB0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r7, #0x0
+ add r3, r4, #0x0
+ bl FUN_0223CD7C
+ mov r0, #0x63
+ mov r1, #0x1
+ lsl r0, r0, #0x2
+ str r1, [r4, r0]
+ ldr r0, [r5, #0xc]
+ bl FUN_02029FC8
+ mov r1, #0x7
+ bl FUN_0202A0E8
+ add r0, r4, #0x0
+ bl FUN_020475A0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_020475B0
+ add r3, r0, #0x0
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x4]
+ add r1, r4, #0x0
+ add r2, r5, #0x0
+ bl FUN_020466FC
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02047004
+FUN_02047004: ; 0x02047004
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ bl FUN_0204652C
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02046528
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02046530
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x6
+ bhi _020470A6
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02047030: ; jump table (using 16-bit offset)
+ .short _0204703E - _02047030 - 2; case 0
+ .short _02047056 - _02047030 - 2; case 1
+ .short _02047064 - _02047030 - 2; case 2
+ .short _02047074 - _02047030 - 2; case 3
+ .short _0204707A - _02047030 - 2; case 4
+ .short _02047088 - _02047030 - 2; case 5
+ .short _0204709C - _02047030 - 2; case 6
+_0204703E:
+ ldr r0, [r7, #0x34]
+ bl FUN_02058780
+ ldr r1, [r6, #0x4]
+ ldr r2, [r6, #0x8]
+ add r0, r5, #0x0
+ bl FUN_0204AEF8
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _020470A6
+_02047056:
+ add r0, r5, #0x0
+ bl FUN_0204AF3C
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _020470A6
+_02047064:
+ ldr r1, [r6, #0x10]
+ add r0, r5, #0x0
+ bl FUN_02046584
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _020470A6
+_02047074:
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _020470A6
+_0204707A:
+ add r0, r5, #0x0
+ bl FUN_0204AF84
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _020470A6
+_02047088:
+ ldr r0, [r7, #0x34]
+ bl FUN_020587B0
+ add r0, r5, #0x0
+ bl FUN_0204B00C
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _020470A6
+_0204709C:
+ add r0, r6, #0x0
+ bl FUN_020465B8
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_020470A6:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020470AC
+FUN_020470AC: ; 0x020470AC
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl FUN_02046528
+ add r1, r0, #0x0
+ mov r0, #0xb
+ bl FUN_02047814
+ add r4, r0, #0x0
+ bl FUN_020475A0
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_020475B0
+ add r2, r0, #0x0
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ mov r3, #0x0
+ bl FUN_02046594
+ add r2, r0, #0x0
+ ldr r1, _020470E4 ; =FUN_02047004
+ add r0, r5, #0x0
+ bl FUN_0204640C
+ pop {r4-r6, pc}
+ nop
+_020470E4: .word FUN_02047004
+
+ thumb_func_start FUN_020470E8
+FUN_020470E8: ; 0x020470E8
+ push {r4-r7, lr}
+ sub sp, #0xc
+ str r0, [sp, #0x4]
+ add r6, r1, #0x0
+ add r5, r2, #0x0
+ str r3, [sp, #0x8]
+ bl FUN_02046528
+ add r7, r0, #0x0
+ cmp r5, #0x0
+ beq _02047110
+ cmp r6, r5
+ beq _02047110
+ ldr r0, [sp, #0x8]
+ cmp r0, #0x0
+ bne _0204710C
+ mov r4, #0x13
+ b _0204711A
+_0204710C:
+ mov r4, #0x4b
+ b _0204711A
+_02047110:
+ cmp r6, r5
+ bne _02047118
+ mov r4, #0x3
+ b _0204711A
+_02047118:
+ mov r4, #0x1
+_0204711A:
+ add r0, r7, #0x0
+ add r0, #0x90
+ ldr r0, [r0, #0x0]
+ bl FUN_0205DD40
+ mov r0, #0xb
+ add r1, r4, #0x0
+ bl FUN_020476CC
+ add r4, r0, #0x0
+ add r1, r7, #0x0
+ bl FUN_02047BB0
+ str r6, [r4, #0x1c]
+ ldr r0, [sp, #0x8]
+ str r5, [r4, #0x24]
+ str r0, [r4, #0x20]
+ ldr r1, [r7, #0xc]
+ ldr r2, [sp, #0x20]
+ add r0, r4, #0x0
+ bl FUN_0206ABC4
+ ldr r0, [r7, #0xc]
+ bl FUN_02029FC8
+ mov r1, #0x8
+ bl FUN_0202A0E8
+ add r0, r4, #0x0
+ bl FUN_020475A0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_020475B0
+ add r3, r0, #0x0
+ ldr r0, [sp, #0x24]
+ add r1, r4, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x4]
+ add r2, r5, #0x0
+ bl FUN_020466FC
+ add sp, #0xc
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_02047174
+FUN_02047174: ; 0x02047174
+ push {r3-r7, lr}
+ add r5, r2, #0x0
+ add r7, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_02046528
+ add r6, r0, #0x0
+ mov r0, #0xb
+ add r1, r5, #0x0
+ bl FUN_020476CC
+ add r5, r0, #0x0
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ bl FUN_02047F1C
+ add r0, r5, #0x0
+ bl FUN_020475A0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_020475B0
+ add r2, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r3, #0x0
+ bl FUN_02046594
+ add r2, r0, #0x0
+ ldr r1, _020471BC ; =FUN_02046758
+ add r0, r7, #0x0
+ bl FUN_0204640C
+ pop {r3-r7, pc}
+ nop
+_020471BC: .word FUN_02046758
+
+ thumb_func_start FUN_020471C0
+FUN_020471C0: ; 0x020471C0
+ push {r3-r7, lr}
+ str r0, [sp, #0x0]
+ add r5, r1, #0x0
+ add r6, r2, #0x0
+ add r4, r3, #0x0
+ bl FUN_02046528
+ add r7, r0, #0x0
+ cmp r4, #0x0
+ beq _020471DE
+ mov r0, #0xb
+ mov r1, #0x5
+ bl FUN_020476CC
+ b _020471E6
+_020471DE:
+ mov r0, #0xb
+ mov r1, #0x7
+ bl FUN_020476CC
+_020471E6:
+ add r4, r0, #0x0
+ add r0, r4, #0x0
+ add r1, r7, #0x0
+ add r2, r6, #0x0
+ bl FUN_02047BC0
+ add r0, r4, #0x0
+ bl FUN_020475A0
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_020475B0
+ add r2, r0, #0x0
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ mov r3, #0x0
+ bl FUN_02046594
+ add r2, r0, #0x0
+ ldr r0, [sp, #0x0]
+ ldr r1, _0204721C ; =FUN_020467FC
+ str r5, [r2, #0xc]
+ bl FUN_0204640C
+ pop {r3-r7, pc}
+ nop
+_0204721C: .word FUN_020467FC
+
+ thumb_func_start FUN_02047220
+FUN_02047220: ; 0x02047220
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ bl FUN_02046528
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0204652C
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02046530
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ beq _02047246
+ cmp r0, #0x1
+ beq _02047258
+ b _02047262
+_02047246:
+ ldr r1, _02047268 ; =FUN_02046758
+ add r0, r5, #0x0
+ add r2, r7, #0x0
+ bl FUN_0204640C
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02047262
+_02047258:
+ add r0, r6, #0x0
+ bl FUN_0204FF5C
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02047262:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ nop
+_02047268: .word FUN_02046758
+
+ thumb_func_start FUN_0204726C
+FUN_0204726C: ; 0x0204726C
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ mov r0, #0xb
+ add r1, r2, #0x0
+ bl FUN_020476CC
+ add r4, r0, #0x0
+ add r1, r5, #0x0
+ add r2, r6, #0x0
+ bl FUN_02047F1C
+ add r0, r4, #0x0
+ bl FUN_020475A0
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_020475B0
+ add r2, r0, #0x0
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ mov r3, #0x0
+ bl FUN_02046594
+ add r2, r0, #0x0
+ ldr r1, _020472AC ; =FUN_02047220
+ add r0, r5, #0x0
+ bl FUN_020463CC
+ pop {r4-r6, pc}
+ nop
+_020472AC: .word FUN_02047220
+
+ thumb_func_start FUN_020472B0
+FUN_020472B0: ; 0x020472B0
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ mov r0, #0xb
+ add r1, r2, #0x0
+ bl FUN_020476CC
+ add r4, r0, #0x0
+ add r1, r5, #0x0
+ add r2, r6, #0x0
+ mov r3, #0x0
+ bl FUN_02047D48
+ add r0, r4, #0x0
+ bl FUN_020475A0
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_020475B0
+ add r2, r0, #0x0
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ mov r3, #0x0
+ bl FUN_02046594
+ add r2, r0, #0x0
+ ldr r1, _020472F0 ; =FUN_02047220
+ add r0, r5, #0x0
+ bl FUN_020463CC
+ pop {r4-r6, pc}
+ .balign 4
+_020472F0: .word FUN_02047220
+
+ thumb_func_start FUN_020472F4
+FUN_020472F4: ; 0x020472F4
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ ldr r0, [r1, #0x0]
+ mov r3, #0x4
+ ldr r2, [r1, #0x14]
+ tst r3, r0
+ bne _020473C8
+ mov r3, #0x80
+ add r5, r0, #0x0
+ tst r5, r3
+ bne _020473C8
+ cmp r0, #0x0
+ beq _02047318
+ add r3, #0x80
+ cmp r0, r3
+ beq _02047318
+ cmp r0, #0x4a
+ bne _02047364
+_02047318:
+ cmp r2, #0x1
+ bne _0204732A
+ ldr r0, [r4, #0xc]
+ bl FUN_02029FC8
+ mov r1, #0x8
+ bl FUN_0202A170
+ pop {r3-r5, pc}
+_0204732A:
+ cmp r2, #0x4
+ bne _020473C8
+ ldr r0, [r1, #0x8]
+ mov r1, #0x0
+ bl FUN_0206B9B0
+ mov r1, #0x5
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r1, r0, #0x0
+ mov r0, #0x0
+ bl FUN_0206BB48
+ cmp r0, #0x0
+ ldr r0, [r4, #0xc]
+ beq _02047358
+ bl FUN_02029FC8
+ mov r1, #0x9
+ bl FUN_0202A170
+ pop {r3-r5, pc}
+_02047358:
+ bl FUN_02029FC8
+ mov r1, #0xa
+ bl FUN_0202A170
+ pop {r3-r5, pc}
+_02047364:
+ mov r3, #0x1
+ tst r3, r0
+ bne _02047370
+ mov r3, #0x10
+ tst r3, r0
+ beq _02047382
+_02047370:
+ cmp r2, #0x1
+ bne _020473C8
+ ldr r0, [r4, #0xc]
+ bl FUN_02029FC8
+ mov r1, #0xb
+ bl FUN_0202A170
+ pop {r3-r5, pc}
+_02047382:
+ mov r3, #0x20
+ add r5, r0, #0x0
+ tst r5, r3
+ bne _02047390
+ lsl r3, r3, #0x4
+ tst r0, r3
+ beq _020473C8
+_02047390:
+ cmp r2, #0x4
+ bne _020473C8
+ ldr r0, [r1, #0x8]
+ mov r1, #0x0
+ bl FUN_0206B9B0
+ mov r1, #0x5
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r1, r0, #0x0
+ mov r0, #0x0
+ bl FUN_0206BB48
+ cmp r0, #0x0
+ ldr r0, [r4, #0xc]
+ beq _020473BE
+ bl FUN_02029FC8
+ mov r1, #0x9
+ bl FUN_0202A170
+ pop {r3-r5, pc}
+_020473BE:
+ bl FUN_02029FC8
+ mov r1, #0xa
+ bl FUN_0202A170
+_020473C8:
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020473CC
+FUN_020473CC: ; 0x020473CC
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ mov r2, #0x4
+ ldr r1, [r4, #0x14]
+ tst r2, r0
+ bne _020473EC
+ mov r3, #0x80
+ add r2, r0, #0x0
+ tst r2, r3
+ bne _020473EC
+ lsl r2, r3, #0x2
+ tst r2, r0
+ beq _020473EE
+_020473EC:
+ b _020474FC
+_020473EE:
+ cmp r0, #0x0
+ beq _02047400
+ add r3, #0x80
+ cmp r0, r3
+ beq _02047400
+ cmp r0, #0x4a
+ beq _02047400
+ cmp r0, #0x20
+ bne _020474D2
+_02047400:
+ cmp r1, #0x1
+ bne _02047470
+ add r0, r5, #0x0
+ add r0, #0x76
+ ldrh r0, [r0, #0x0]
+ add r1, r0, #0x1
+ add r0, r5, #0x0
+ add r0, #0x76
+ strh r1, [r0, #0x0]
+ add r0, r5, #0x0
+ add r0, #0x76
+ ldrh r0, [r0, #0x0]
+ cmp r0, #0x5
+ blo _020474FC
+ ldr r0, [r4, #0x8]
+ mov r1, #0x0
+ bl FUN_0206B9B0
+ add r6, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_02023918
+ str r0, [sp, #0x4]
+ add r0, r6, #0x0
+ mov r1, #0x5
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r7, r0, #0x0
+ add r0, r6, #0x0
+ mov r1, #0x6f
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r2, r0, #0x0
+ mov r3, #0xb
+ str r3, [sp, #0x0]
+ lsl r3, r3, #0x5
+ ldr r3, [r4, r3]
+ lsl r1, r7, #0x10
+ lsl r2, r2, #0x18
+ lsl r3, r3, #0x18
+ ldr r0, [sp, #0x4]
+ lsr r1, r1, #0x10
+ lsr r2, r2, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_0202920C
+ add r5, #0x98
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ mov r2, #0x2
+ bl FUN_02028AD4
+ add sp, #0xc
+ pop {r4-r7, pc}
+_02047470:
+ cmp r1, #0x4
+ bne _020474FC
+ mov r0, #0x17
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ ldr r0, [r0, #0x4]
+ bl FUN_0206B9B0
+ add r6, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_02023918
+ str r0, [sp, #0x8]
+ add r0, r6, #0x0
+ mov r1, #0x5
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r7, r0, #0x0
+ add r0, r6, #0x0
+ mov r1, #0x6f
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r2, r0, #0x0
+ mov r3, #0xb
+ str r3, [sp, #0x0]
+ lsl r3, r3, #0x5
+ ldr r3, [r4, r3]
+ lsl r1, r7, #0x10
+ lsl r2, r2, #0x18
+ lsl r3, r3, #0x18
+ ldr r0, [sp, #0x8]
+ lsr r1, r1, #0x10
+ lsr r2, r2, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_0202918C
+ add r5, #0x98
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ mov r2, #0x2
+ bl FUN_02028AD4
+ add sp, #0xc
+ pop {r4-r7, pc}
+_020474D2:
+ mov r2, #0x1
+ tst r2, r0
+ bne _020474DE
+ mov r2, #0x10
+ tst r0, r2
+ beq _020474FC
+_020474DE:
+ cmp r1, #0x1
+ bne _020474FC
+ ldr r1, [r5, #0x1c]
+ add r0, r5, #0x0
+ ldr r1, [r1, #0x0]
+ ldr r2, [r4, #0x1c]
+ add r0, #0x98
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0x10
+ ldr r0, [r0, #0x0]
+ lsr r1, r1, #0x10
+ lsr r2, r2, #0x10
+ mov r3, #0xb
+ bl FUN_020299DC
+_020474FC:
+ add sp, #0xc
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_02047500
+FUN_02047500: ; 0x02047500
+ push {r4, lr}
+ ldr r4, [r0, #0x0]
+ mov r1, #0x1
+ tst r1, r4
+ beq _02047546
+ add r0, #0x5d
+ ldrb r0, [r0, #0x0]
+ bl FUN_020475C0
+ mov r1, #0x80
+ tst r1, r4
+ beq _0204752A
+ cmp r0, #0x1c
+ beq _02047558
+ mov r0, #0x2
+ tst r0, r4
+ beq _02047526
+ mov r0, #0x1a
+ pop {r4, pc}
+_02047526:
+ mov r0, #0x18
+ pop {r4, pc}
+_0204752A:
+ add r1, r0, #0x0
+ sub r1, #0x15
+ cmp r1, #0x2
+ bls _02047558
+ mov r1, #0x2
+ tst r1, r4
+ beq _0204753C
+ mov r0, #0x1a
+ pop {r4, pc}
+_0204753C:
+ mov r1, #0x4
+ tst r1, r4
+ beq _02047558
+ mov r0, #0x19
+ pop {r4, pc}
+_02047546:
+ ldr r0, [r0, #0x8]
+ bl FUN_02047668
+ cmp r0, #0x1e
+ blo _02047558
+ mov r1, #0x2
+ tst r1, r4
+ beq _02047558
+ mov r0, #0x1b
+_02047558:
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204755C
+FUN_0204755C: ; 0x0204755C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r5, #0x1f
+ blo _0204756A
+ bl ErrorHandling
+_0204756A:
+ ldr r0, _02047580 ; =0x020F457C
+ lsl r1, r5, #0x2
+ ldrh r0, [r0, r1]
+ ldr r1, _02047584 ; =0x0000FFFF
+ cmp r0, r1
+ bne _0204757C
+ add r0, r4, #0x0
+ bl FUN_021E495C
+_0204757C:
+ pop {r3-r5, pc}
+ nop
+_02047580: .word 0x020F457C
+_02047584: .word 0x0000FFFF
+
+ thumb_func_start FUN_02047588
+FUN_02047588: ; 0x02047588
+ push {r4, lr}
+ add r4, r0, #0x0
+ cmp r4, #0x1f
+ blo _02047594
+ bl ErrorHandling
+_02047594:
+ ldr r0, _0204759C ; =0x020F457E
+ lsl r1, r4, #0x2
+ ldrh r0, [r0, r1]
+ pop {r4, pc}
+ .balign 4
+_0204759C: .word 0x020F457E
+
+ thumb_func_start FUN_020475A0
+FUN_020475A0: ; 0x020475A0
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02047500
+ add r1, r4, #0x0
+ bl FUN_0204755C
+ pop {r4, pc}
+
+ thumb_func_start FUN_020475B0
+FUN_020475B0: ; 0x020475B0
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02047500
+ add r1, r4, #0x0
+ bl FUN_02047588
+ pop {r4, pc}
+
+ thumb_func_start FUN_020475C0
+FUN_020475C0: ; 0x020475C0
+ sub r0, #0x3e
+ mov r1, #0x1d
+ cmp r0, #0x23
+ bhi _02047662
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_020475D4: ; jump table (using 16-bit offset)
+ .short _0204761C - _020475D4 - 2; case 0
+ .short _02047650 - _020475D4 - 2; case 1
+ .short _02047634 - _020475D4 - 2; case 2
+ .short _0204763C - _020475D4 - 2; case 3
+ .short _02047640 - _020475D4 - 2; case 4
+ .short _02047644 - _020475D4 - 2; case 5
+ .short _02047648 - _020475D4 - 2; case 6
+ .short _0204764C - _020475D4 - 2; case 7
+ .short _02047662 - _020475D4 - 2; case 8
+ .short _02047662 - _020475D4 - 2; case 9
+ .short _02047658 - _020475D4 - 2; case 10
+ .short _0204765C - _020475D4 - 2; case 11
+ .short _02047620 - _020475D4 - 2; case 12
+ .short _02047624 - _020475D4 - 2; case 13
+ .short _02047628 - _020475D4 - 2; case 14
+ .short _0204762C - _020475D4 - 2; case 15
+ .short _02047630 - _020475D4 - 2; case 16
+ .short _02047638 - _020475D4 - 2; case 17
+ .short _02047662 - _020475D4 - 2; case 18
+ .short _02047662 - _020475D4 - 2; case 19
+ .short _02047662 - _020475D4 - 2; case 20
+ .short _02047662 - _020475D4 - 2; case 21
+ .short _02047662 - _020475D4 - 2; case 22
+ .short _02047662 - _020475D4 - 2; case 23
+ .short _02047654 - _020475D4 - 2; case 24
+ .short _02047658 - _020475D4 - 2; case 25
+ .short _02047658 - _020475D4 - 2; case 26
+ .short _0204765C - _020475D4 - 2; case 27
+ .short _02047662 - _020475D4 - 2; case 28
+ .short _02047662 - _020475D4 - 2; case 29
+ .short _02047662 - _020475D4 - 2; case 30
+ .short _02047662 - _020475D4 - 2; case 31
+ .short _02047662 - _020475D4 - 2; case 32
+ .short _02047662 - _020475D4 - 2; case 33
+ .short _02047662 - _020475D4 - 2; case 34
+ .short _02047660 - _020475D4 - 2; case 35
+_0204761C:
+ mov r1, #0x0
+ b _02047662
+_02047620:
+ mov r1, #0x1
+ b _02047662
+_02047624:
+ mov r1, #0x2
+ b _02047662
+_02047628:
+ mov r1, #0x3
+ b _02047662
+_0204762C:
+ mov r1, #0x4
+ b _02047662
+_02047630:
+ mov r1, #0x5
+ b _02047662
+_02047634:
+ mov r1, #0x6
+ b _02047662
+_02047638:
+ mov r1, #0x7
+ b _02047662
+_0204763C:
+ mov r1, #0x8
+ b _02047662
+_02047640:
+ mov r1, #0x9
+ b _02047662
+_02047644:
+ mov r1, #0xa
+ b _02047662
+_02047648:
+ mov r1, #0xb
+ b _02047662
+_0204764C:
+ mov r1, #0xc
+ b _02047662
+_02047650:
+ mov r1, #0xd
+ b _02047662
+_02047654:
+ mov r1, #0x17
+ b _02047662
+_02047658:
+ mov r1, #0x16
+ b _02047662
+_0204765C:
+ mov r1, #0x15
+ b _02047662
+_02047660:
+ mov r1, #0x1c
+_02047662:
+ add r0, r1, #0x0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02047668
+FUN_02047668: ; 0x02047668
+ push {r4, lr}
+ mov r4, #0x1e
+ bl FUN_0204A1D8
+ mov r1, #0x5
+ mov r2, #0x0
+ bl FUN_020671BC
+ ldr r1, _020476C8 ; =0x000001DF
+ sub r0, r0, r1
+ cmp r0, #0xe
+ bhi _020476C4
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0204768C: ; jump table (using 16-bit offset)
+ .short _020476B2 - _0204768C - 2; case 0
+ .short _020476BA - _0204768C - 2; case 1
+ .short _020476B6 - _0204768C - 2; case 2
+ .short _020476BA - _0204768C - 2; case 3
+ .short _020476BE - _0204768C - 2; case 4
+ .short _020476BE - _0204768C - 2; case 5
+ .short _020476B2 - _0204768C - 2; case 6
+ .short _020476B2 - _0204768C - 2; case 7
+ .short _020476B2 - _0204768C - 2; case 8
+ .short _020476AE - _0204768C - 2; case 9
+ .short _020476C4 - _0204768C - 2; case 10
+ .short _020476C4 - _0204768C - 2; case 11
+ .short _020476B2 - _0204768C - 2; case 12
+ .short _020476AA - _0204768C - 2; case 13
+ .short _020476C2 - _0204768C - 2; case 14
+_020476AA:
+ mov r4, #0xe
+ b _020476C4
+_020476AE:
+ mov r4, #0x14
+ b _020476C4
+_020476B2:
+ mov r4, #0x13
+ b _020476C4
+_020476B6:
+ mov r4, #0x11
+ b _020476C4
+_020476BA:
+ mov r4, #0x10
+ b _020476C4
+_020476BE:
+ mov r4, #0xf
+ b _020476C4
+_020476C2:
+ mov r4, #0x12
+_020476C4:
+ add r0, r4, #0x0
+ pop {r4, pc}
+ .balign 4
+_020476C8: .word 0x000001DF
+
+ thumb_func_start FUN_020476CC
+FUN_020476CC: ; 0x020476CC
+ push {r3-r7, lr}
+ add r4, r1, #0x0
+ mov r1, #0x67
+ lsl r1, r1, #0x2
+ add r5, r0, #0x0
+ bl FUN_02016998
+ mov r2, #0x67
+ mov r1, #0x0
+ lsl r2, r2, #0x2
+ add r7, r0, #0x0
+ blx MI_CpuFill8
+ mov r1, #0x63
+ str r4, [r7, #0x0]
+ mov r0, #0x0
+ lsl r1, r1, #0x2
+ str r0, [r7, r1]
+ add r4, r7, #0x0
+ str r0, [sp, #0x0]
+ str r0, [r7, #0x14]
+ add r6, r7, #0x0
+ add r4, #0x28
+_020476FA:
+ mov r0, #0x0
+ add r1, r4, #0x0
+ mov r2, #0x34
+ str r0, [r6, #0x18]
+ blx MIi_CpuClear32
+ ldr r0, [sp, #0x0]
+ add r6, r6, #0x4
+ add r0, r0, #0x1
+ add r4, #0x34
+ str r0, [sp, #0x0]
+ cmp r0, #0x4
+ blt _020476FA
+ mov r0, #0x15
+ lsl r0, r0, #0x4
+ mov r6, #0x0
+ str r6, [r7, r0]
+ mov r2, #0xc
+ add r1, r0, #0x4
+ str r2, [r7, r1]
+ add r1, r0, #0x0
+ add r1, #0x8
+ str r6, [r7, r1]
+ add r1, r0, #0x0
+ add r1, #0x10
+ str r6, [r7, r1]
+ add r1, r0, #0x0
+ add r1, #0x14
+ str r6, [r7, r1]
+ add r1, r0, #0x0
+ mov r2, #0x1
+ add r1, #0x18
+ str r2, [r7, r1]
+ add r1, r0, #0x0
+ add r1, #0x1c
+ str r2, [r7, r1]
+ add r0, #0x24
+ str r6, [r7, r0]
+ add r4, r7, #0x0
+_02047748:
+ add r0, r5, #0x0
+ bl FUN_0206B8AC
+ str r0, [r4, #0x4]
+ add r6, r6, #0x1
+ add r4, r4, #0x4
+ cmp r6, #0x4
+ blt _02047748
+ mov r6, #0x0
+ add r4, r7, #0x0
+_0204775C:
+ add r0, r5, #0x0
+ bl FUN_02023928
+ add r1, r4, #0x0
+ add r1, #0xf8
+ add r6, r6, #0x1
+ add r4, r4, #0x4
+ str r0, [r1, #0x0]
+ cmp r6, #0x4
+ blt _0204775C
+ mov r6, #0x0
+ add r4, r7, #0x0
+_02047774:
+ add r0, r5, #0x0
+ bl FUN_02029EE4
+ mov r1, #0x46
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ add r6, r6, #0x1
+ add r4, r4, #0x4
+ cmp r6, #0x4
+ blt _02047774
+ add r0, r5, #0x0
+ bl FUN_0206EB88
+ mov r1, #0x42
+ lsl r1, r1, #0x2
+ str r0, [r7, r1]
+ add r0, r5, #0x0
+ bl FUN_02023D6C
+ mov r1, #0x11
+ lsl r1, r1, #0x4
+ str r0, [r7, r1]
+ add r0, r5, #0x0
+ bl FUN_02024F30
+ mov r1, #0x13
+ lsl r1, r1, #0x4
+ str r0, [r7, r1]
+ add r0, r5, #0x0
+ bl FUN_02061008
+ mov r2, #0x4d
+ lsl r2, r2, #0x2
+ str r0, [r7, r2]
+ add r0, r2, #0x0
+ mov r1, #0x0
+ sub r0, #0x28
+ str r1, [r7, r0]
+ add r0, r2, #0x0
+ add r0, #0x5c
+ str r1, [r7, r0]
+ add r0, r2, #0x0
+ sub r0, #0x8
+ str r1, [r7, r0]
+ add r0, r2, #0x0
+ add r0, #0x10
+ str r1, [r7, r0]
+ add r0, r2, #0x0
+ add r0, #0x14
+ str r1, [r7, r0]
+ add r0, r2, #0x0
+ add r0, #0x60
+ str r1, [r7, r0]
+ add r0, r2, #0x4
+ add r0, r7, r0
+ mov r2, #0xc
+ blx MI_CpuFill8
+ add r0, r7, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_020477EC
+FUN_020477EC: ; 0x020477EC
+ push {r4, lr}
+ add r4, r1, #0x0
+ mov r1, #0x20
+ bl FUN_020476CC
+ mov r1, #0x19
+ lsl r1, r1, #0x4
+ str r4, [r0, r1]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02047800
+FUN_02047800: ; 0x02047800
+ push {r4, lr}
+ add r4, r1, #0x0
+ mov r1, #0x2
+ lsl r1, r1, #0x8
+ bl FUN_020476CC
+ mov r1, #0x19
+ lsl r1, r1, #0x4
+ str r4, [r0, r1]
+ pop {r4, pc}
+
+ thumb_func_start FUN_02047814
+FUN_02047814: ; 0x02047814
+ push {r4-r7, lr}
+ sub sp, #0x1c
+ add r5, r1, #0x0
+ add r6, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_020238F4
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0xc]
+ bl LoadPlayerDataAddress
+ mov r1, #0x1
+ str r0, [sp, #0x14]
+ add r0, r6, #0x0
+ lsl r1, r1, #0xa
+ bl FUN_020476CC
+ add r4, r0, #0x0
+ ldr r2, _0204795C ; =0x000001F1
+ mov r0, #0x1
+ mov r1, #0x1a
+ add r3, r6, #0x0
+ bl FUN_0200A86C
+ str r0, [sp, #0x18]
+ mov r0, #0x8
+ add r1, r6, #0x0
+ bl FUN_020219F4
+ add r7, r0, #0x0
+ ldr r0, [sp, #0x10]
+ bl FUN_020239CC
+ add r2, r0, #0x0
+ mov r1, #0x1
+ eor r1, r2
+ ldr r0, [sp, #0x18]
+ add r2, r7, #0x0
+ bl FUN_0200A8E0
+ add r0, r7, #0x0
+ bl FUN_02021F2C
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0xf8
+ ldr r0, [r0, #0x0]
+ bl FUN_0202395C
+ add r0, r7, #0x0
+ bl FUN_02021A20
+ ldr r0, [sp, #0x18]
+ bl FUN_0200A8B8
+ ldr r0, [sp, #0x10]
+ bl FUN_020239CC
+ add r2, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0xf8
+ mov r1, #0x1
+ ldr r0, [r0, #0x0]
+ eor r1, r2
+ bl FUN_020239C8
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ bl FUN_0204806C
+ mov r1, #0x13
+ lsl r1, r1, #0x4
+ ldr r0, [sp, #0x14]
+ ldr r1, [r4, r1]
+ bl FUN_02024F44
+ add r0, r5, #0x0
+ bl FUN_0204B2A4
+ mov r1, #0x16
+ lsl r1, r1, #0x4
+ str r0, [r4, r1]
+ sub r1, #0x58
+ ldr r0, [r4, r1]
+ mov r1, #0x4
+ mov r2, #0x14
+ add r3, r6, #0x0
+ bl FUN_0206ED38
+ add r0, r6, #0x0
+ bl FUN_020669C0
+ add r6, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205F3C0
+ mov r2, #0x0
+ str r2, [sp, #0x0]
+ add r1, r0, #0x0
+ str r2, [sp, #0x4]
+ mov r0, #0x2
+ str r0, [sp, #0x8]
+ str r2, [sp, #0xc]
+ add r0, r6, #0x0
+ mov r2, #0x5
+ mov r3, #0x20
+ bl FUN_02066ACC
+ ldr r0, [r4, #0x4]
+ add r1, r6, #0x0
+ bl FUN_0206B900
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ str r0, [sp, #0x4]
+ mov r2, #0x2
+ str r2, [sp, #0x8]
+ str r0, [sp, #0xc]
+ ldr r1, _02047960 ; =0x0000018F
+ add r0, r6, #0x0
+ mov r3, #0x20
+ bl FUN_02066ACC
+ ldr r0, [r4, #0x8]
+ add r1, r6, #0x0
+ bl FUN_0206B900
+ add r0, r6, #0x0
+ bl FUN_02016A18
+ ldr r0, [r5, #0xc]
+ bl FUN_02022510
+ mov r1, #0x45
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ add r0, r5, #0x0
+ add r0, #0x94
+ ldr r0, [r0, #0x0]
+ sub r1, #0x8
+ str r0, [r4, r1]
+ ldr r0, [r5, #0xc]
+ bl FUN_02029FC8
+ mov r1, #0x51
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ add r0, r5, #0x0
+ add r0, #0x98
+ ldr r2, [r0, #0x0]
+ add r0, r1, #0x4
+ str r2, [r4, r0]
+ ldr r0, [r5, #0x1c]
+ add r1, #0x18
+ ldr r0, [r0, #0x0]
+ str r0, [r4, r1]
+ add r0, r4, #0x0
+ bl FUN_020480E4
+ add r0, r4, #0x0
+ add sp, #0x1c
+ pop {r4-r7, pc}
+ .balign 4
+_0204795C: .word 0x000001F1
+_02047960: .word 0x0000018F
+
+ thumb_func_start FUN_02047964
+FUN_02047964: ; 0x02047964
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ mov r4, #0x0
+ add r5, r7, #0x0
+_0204796C:
+ ldr r0, [r5, #0x4]
+ cmp r0, #0x0
+ bne _02047976
+ bl ErrorHandling
+_02047976:
+ ldr r0, [r5, #0x4]
+ bl FUN_02016A18
+ add r4, r4, #0x1
+ add r5, r5, #0x4
+ cmp r4, #0x4
+ blt _0204796C
+ mov r5, #0x0
+ add r4, r7, #0x0
+_02047988:
+ add r0, r4, #0x0
+ add r0, #0xf8
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _02047996
+ bl ErrorHandling
+_02047996:
+ add r0, r4, #0x0
+ add r0, #0xf8
+ ldr r0, [r0, #0x0]
+ bl FUN_02016A18
+ add r5, r5, #0x1
+ add r4, r4, #0x4
+ cmp r5, #0x4
+ blt _02047988
+ mov r6, #0x46
+ mov r5, #0x0
+ add r4, r7, #0x0
+ lsl r6, r6, #0x2
+_020479B0:
+ ldr r0, [r4, r6]
+ cmp r0, #0x0
+ bne _020479BA
+ bl ErrorHandling
+_020479BA:
+ mov r0, #0x46
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ add r5, r5, #0x1
+ add r4, r4, #0x4
+ cmp r5, #0x4
+ blt _020479B0
+ mov r0, #0x42
+ lsl r0, r0, #0x2
+ ldr r0, [r7, r0]
+ bl FUN_02016A18
+ mov r0, #0x11
+ lsl r0, r0, #0x4
+ ldr r0, [r7, r0]
+ bl FUN_02016A18
+ mov r0, #0x13
+ lsl r0, r0, #0x4
+ ldr r0, [r7, r0]
+ bl FUN_02016A18
+ mov r0, #0x4d
+ lsl r0, r0, #0x2
+ ldr r0, [r7, r0]
+ bl FUN_02061020
+ add r0, r7, #0x0
+ bl FUN_02016A18
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_020479FC
+FUN_020479FC: ; 0x020479FC
+ push {r4-r6, lr}
+ add r4, r2, #0x0
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ cmp r4, #0x4
+ blt _02047A0C
+ bl ErrorHandling
+_02047A0C:
+ lsl r0, r4, #0x2
+ add r0, r5, r0
+ ldr r0, [r0, #0x4]
+ add r1, r6, #0x0
+ bl FUN_0206B900
+ cmp r0, #0x0
+ bne _02047A20
+ bl ErrorHandling
+_02047A20:
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02047A24
+FUN_02047A24: ; 0x02047A24
+ push {r4-r6, lr}
+ add r4, r2, #0x0
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ cmp r4, #0x4
+ blt _02047A34
+ bl ErrorHandling
+_02047A34:
+ lsl r1, r4, #0x2
+ add r1, r5, r1
+ ldr r1, [r1, #0x4]
+ add r0, r6, #0x0
+ bl FUN_0206BAD0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02047A44
+FUN_02047A44: ; 0x02047A44
+ push {r4-r6, lr}
+ add r4, r2, #0x0
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ cmp r4, #0x4
+ blt _02047A54
+ bl ErrorHandling
+_02047A54:
+ lsl r1, r4, #0x2
+ add r1, r5, r1
+ add r1, #0xf8
+ ldr r1, [r1, #0x0]
+ add r0, r6, #0x0
+ bl FUN_0202393C
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02047A64
+FUN_02047A64: ; 0x02047A64
+ lsl r2, r2, #0x2
+ add r2, r0, r2
+ mov r0, #0x46
+ lsl r0, r0, #0x2
+ ldr r3, _02047A74 ; =FUN_02029F9C
+ ldr r0, [r2, r0]
+ bx r3
+ nop
+_02047A74: .word FUN_02029F9C
+
+ thumb_func_start FUN_02047A78
+FUN_02047A78: ; 0x02047A78
+ push {r4-r7, lr}
+ sub sp, #0x14
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ ldr r0, [r4, #0xc]
+ bl FUN_020238F4
+ add r6, r0, #0x0
+ ldr r0, [r4, #0xc]
+ bl FUN_0206BB1C
+ add r7, r0, #0x0
+ ldr r0, [r4, #0xc]
+ bl FUN_0206F158
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0xc]
+ bl FUN_02024DA0
+ str r0, [sp, #0x4]
+ ldr r0, [r4, #0xc]
+ bl FUN_02029EF8
+ str r0, [sp, #0x8]
+ ldr r0, [r4, #0xc]
+ bl LoadPlayerDataAddress
+ str r0, [sp, #0xc]
+ ldr r0, [r4, #0xc]
+ bl FUN_02034E30
+ str r0, [sp, #0x10]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0204806C
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ mov r2, #0x0
+ bl FUN_02047A44
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ mov r2, #0x0
+ bl FUN_02047A24
+ mov r1, #0x42
+ lsl r1, r1, #0x2
+ ldr r0, [sp, #0x0]
+ ldr r1, [r5, r1]
+ bl FUN_0206EBB4
+ mov r1, #0x11
+ lsl r1, r1, #0x4
+ ldr r0, [sp, #0x4]
+ ldr r1, [r5, r1]
+ bl FUN_02023D80
+ mov r1, #0x13
+ lsl r1, r1, #0x4
+ ldr r0, [sp, #0xc]
+ ldr r1, [r5, r1]
+ bl FUN_02024F44
+ ldr r1, [sp, #0x8]
+ add r0, r5, #0x0
+ mov r2, #0x0
+ bl FUN_02047A64
+ ldr r0, [r4, #0xc]
+ bl FUN_02022510
+ mov r1, #0x45
+ lsl r1, r1, #0x2
+ str r0, [r5, r1]
+ ldr r0, [r4, #0x1c]
+ ldr r0, [r0, #0x0]
+ bl FUN_02034824
+ mov r1, #0x56
+ lsl r1, r1, #0x2
+ str r0, [r5, r1]
+ add r0, r4, #0x0
+ bl FUN_0204B2A4
+ mov r1, #0x16
+ lsl r1, r1, #0x4
+ str r0, [r5, r1]
+ ldr r0, [r4, #0x1c]
+ ldr r0, [r0, #0x0]
+ bl FUN_02034A04
+ mov r1, #0x59
+ lsl r1, r1, #0x2
+ str r0, [r5, r1]
+ ldr r0, [r4, #0xc]
+ bl FUN_02079C70
+ mov r1, #0x5a
+ lsl r1, r1, #0x2
+ str r0, [r5, r1]
+ ldr r0, [r4, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205F1B4
+ mov r1, #0x5b
+ lsl r1, r1, #0x2
+ str r0, [r5, r1]
+ ldr r0, [sp, #0x10]
+ bl FUN_02034DEC
+ mov r1, #0x5d
+ lsl r1, r1, #0x2
+ str r0, [r5, r1]
+ add r0, r4, #0x0
+ add r0, #0x94
+ ldr r0, [r0, #0x0]
+ sub r1, #0x68
+ str r0, [r5, r1]
+ ldr r0, [r4, #0xc]
+ bl FUN_0204C1A8
+ mov r1, #0x4a
+ lsl r1, r1, #0x2
+ str r0, [r5, r1]
+ ldr r0, [r4, #0xc]
+ bl FUN_02029AFC
+ mov r1, #0x4b
+ lsl r1, r1, #0x2
+ str r0, [r5, r1]
+ ldr r0, [r4, #0xc]
+ bl FUN_02029FC8
+ mov r1, #0x51
+ lsl r1, r1, #0x2
+ str r0, [r5, r1]
+ add r0, r4, #0x0
+ add r0, #0x98
+ ldr r2, [r0, #0x0]
+ add r0, r1, #0x4
+ str r2, [r5, r0]
+ ldr r0, [r4, #0xc]
+ bl FUN_020254C0
+ mov r1, #0x53
+ lsl r1, r1, #0x2
+ str r0, [r5, r1]
+ ldr r0, [r4, #0x1c]
+ add r1, #0x10
+ ldr r0, [r0, #0x0]
+ str r0, [r5, r1]
+ add sp, #0x14
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02047BB0
+FUN_02047BB0: ; 0x02047BB0
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02047A78
+ add r0, r4, #0x0
+ bl FUN_020480E4
+ pop {r4, pc}
+
+ thumb_func_start FUN_02047BC0
+FUN_02047BC0: ; 0x02047BC0
+ push {r4-r7, lr}
+ sub sp, #0x1c
+ add r6, r0, #0x0
+ add r0, r1, #0x0
+ ldr r0, [r0, #0xc]
+ str r1, [sp, #0x0]
+ add r7, r2, #0x0
+ bl FUN_020238F4
+ add r4, r0, #0x0
+ ldr r0, [sp, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_0206BB1C
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_0206F158
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02024DA0
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02029EF8
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x0]
+ ldr r0, [r0, #0xc]
+ bl LoadPlayerDataAddress
+ str r0, [sp, #0x4]
+ mov r0, #0x15
+ mov r1, #0x6
+ lsl r0, r0, #0x4
+ str r1, [r6, r0]
+ mov r1, #0x9
+ add r0, r0, #0x4
+ str r1, [r6, r0]
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ mov r2, #0x0
+ bl FUN_02047A44
+ mov r0, #0xb
+ bl FUN_020669C0
+ add r5, r0, #0x0
+ ldr r0, [sp, #0x14]
+ bl FUN_0206B9AC
+ add r1, r0, #0x0
+ ldr r0, [r6, #0x4]
+ bl FUN_0206B8CC
+ ldr r0, [sp, #0x14]
+ mov r4, #0x0
+ bl FUN_0206B9AC
+ cmp r0, #0x0
+ ble _02047C98
+_02047C40:
+ ldr r0, [sp, #0x14]
+ add r1, r4, #0x0
+ bl FUN_0206B9B0
+ add r1, r5, #0x0
+ bl FUN_02069B88
+ add r0, r5, #0x0
+ mov r1, #0xa0
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r7, r0
+ beq _02047C82
+ cmp r7, #0x0
+ beq _02047C82
+ add r0, r5, #0x0
+ mov r1, #0x5
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r1, r7, #0x0
+ bl FUN_02068758
+ str r0, [sp, #0x18]
+ add r0, r5, #0x0
+ mov r1, #0x8
+ add r2, sp, #0x18
+ bl FUN_02067830
+ add r0, r5, #0x0
+ bl FUN_02066ED8
+_02047C82:
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ mov r2, #0x0
+ bl FUN_020479FC
+ ldr r0, [sp, #0x14]
+ add r4, r4, #0x1
+ bl FUN_0206B9AC
+ cmp r4, r0
+ blt _02047C40
+_02047C98:
+ add r0, r5, #0x0
+ bl FUN_02016A18
+ mov r1, #0x42
+ lsl r1, r1, #0x2
+ ldr r0, [sp, #0x10]
+ ldr r1, [r6, r1]
+ bl FUN_0206EBB4
+ mov r1, #0x11
+ lsl r1, r1, #0x4
+ ldr r0, [sp, #0xc]
+ ldr r1, [r6, r1]
+ bl FUN_02023D80
+ mov r1, #0x13
+ lsl r1, r1, #0x4
+ ldr r0, [sp, #0x4]
+ ldr r1, [r6, r1]
+ bl FUN_02024F44
+ ldr r1, [sp, #0x8]
+ add r0, r6, #0x0
+ mov r2, #0x0
+ bl FUN_02047A64
+ ldr r0, [sp, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02022510
+ mov r1, #0x45
+ lsl r1, r1, #0x2
+ str r0, [r6, r1]
+ ldr r0, [sp, #0x0]
+ bl FUN_0204B2A4
+ mov r1, #0x16
+ lsl r1, r1, #0x4
+ str r0, [r6, r1]
+ ldr r0, [sp, #0x0]
+ sub r1, #0x54
+ add r0, #0x94
+ ldr r0, [r0, #0x0]
+ str r0, [r6, r1]
+ ldr r0, [sp, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_0204C1A8
+ mov r1, #0x4a
+ lsl r1, r1, #0x2
+ str r0, [r6, r1]
+ ldr r0, [sp, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02029AFC
+ mov r1, #0x4b
+ lsl r1, r1, #0x2
+ str r0, [r6, r1]
+ ldr r0, [sp, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02029FC8
+ mov r1, #0x51
+ lsl r1, r1, #0x2
+ str r0, [r6, r1]
+ ldr r0, [sp, #0x0]
+ add r0, #0x98
+ ldr r2, [r0, #0x0]
+ add r0, r1, #0x4
+ str r2, [r6, r0]
+ ldr r0, [sp, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020254C0
+ mov r1, #0x53
+ lsl r1, r1, #0x2
+ str r0, [r6, r1]
+ ldr r0, [sp, #0x0]
+ add r1, #0x10
+ ldr r0, [r0, #0x1c]
+ ldr r0, [r0, #0x0]
+ str r0, [r6, r1]
+ add r0, r6, #0x0
+ bl FUN_020480E4
+ add sp, #0x1c
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02047D48
+FUN_02047D48: ; 0x02047D48
+ push {r4-r7, lr}
+ sub sp, #0x24
+ add r5, r0, #0x0
+ add r0, r1, #0x0
+ ldr r0, [r0, #0xc]
+ str r1, [sp, #0x0]
+ str r2, [sp, #0x4]
+ add r7, r3, #0x0
+ bl FUN_020238F4
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_0206F158
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02024DA0
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02029EF8
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x0]
+ ldr r0, [r0, #0xc]
+ bl LoadPlayerDataAddress
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x0]
+ mov r1, #0x6
+ add r0, #0xac
+ ldr r0, [r0, #0x0]
+ mov r2, #0x0
+ str r0, [sp, #0xc]
+ mov r0, #0x15
+ lsl r0, r0, #0x4
+ str r1, [r5, r0]
+ mov r1, #0x9
+ add r0, r0, #0x4
+ str r1, [r5, r0]
+ ldr r1, [sp, #0x20]
+ add r0, r5, #0x0
+ bl FUN_02047A44
+ cmp r7, #0x0
+ bne _02047DB6
+ ldr r1, [sp, #0x4]
+ add r0, r5, #0x0
+ mov r2, #0x0
+ bl FUN_02047A24
+ b _02047E14
+_02047DB6:
+ mov r4, #0x0
+ add r1, r4, #0x0
+_02047DBA:
+ ldrb r0, [r7, r1]
+ cmp r0, #0x0
+ beq _02047DC2
+ add r4, r4, #0x1
+_02047DC2:
+ add r1, r1, #0x1
+ cmp r1, #0x6
+ blt _02047DBA
+ cmp r4, #0x0
+ bne _02047DD8
+ ldr r1, [sp, #0x4]
+ add r0, r5, #0x0
+ mov r2, #0x0
+ bl FUN_02047A24
+ b _02047E14
+_02047DD8:
+ mov r0, #0xb
+ bl FUN_020669C0
+ str r0, [sp, #0x8]
+ ldr r0, [r5, #0x4]
+ add r1, r4, #0x0
+ bl FUN_0206B8CC
+ mov r6, #0x0
+ cmp r4, #0x0
+ ble _02047E0E
+_02047DEE:
+ ldrb r1, [r7, r6]
+ ldr r0, [sp, #0x4]
+ sub r1, r1, #0x1
+ bl FUN_0206B9B0
+ ldr r1, [sp, #0x8]
+ bl FUN_02069B88
+ ldr r1, [sp, #0x8]
+ add r0, r5, #0x0
+ mov r2, #0x0
+ bl FUN_020479FC
+ add r6, r6, #0x1
+ cmp r6, r4
+ blt _02047DEE
+_02047E0E:
+ ldr r0, [sp, #0x8]
+ bl FUN_02016A18
+_02047E14:
+ ldr r0, [sp, #0xc]
+ cmp r0, #0x0
+ beq _02047E2C
+ mov r1, #0xc
+ bl FUN_02023B0C
+ cmp r0, #0x0
+ beq _02047E2C
+ mov r0, #0x65
+ mov r1, #0x1
+ lsl r0, r0, #0x2
+ str r1, [r5, r0]
+_02047E2C:
+ mov r1, #0x42
+ lsl r1, r1, #0x2
+ ldr r0, [sp, #0x1c]
+ ldr r1, [r5, r1]
+ bl FUN_0206EBB4
+ mov r1, #0x11
+ lsl r1, r1, #0x4
+ ldr r0, [sp, #0x18]
+ ldr r1, [r5, r1]
+ bl FUN_02023D80
+ mov r1, #0x13
+ lsl r1, r1, #0x4
+ ldr r0, [sp, #0x10]
+ ldr r1, [r5, r1]
+ bl FUN_02024F44
+ ldr r1, [sp, #0x14]
+ add r0, r5, #0x0
+ mov r2, #0x0
+ bl FUN_02047A64
+ ldr r0, [sp, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02022510
+ mov r1, #0x45
+ lsl r1, r1, #0x2
+ str r0, [r5, r1]
+ ldr r0, [sp, #0x0]
+ bl FUN_0204B2A4
+ mov r1, #0x16
+ lsl r1, r1, #0x4
+ str r0, [r5, r1]
+ ldr r0, [sp, #0x0]
+ sub r1, #0x54
+ add r0, #0x94
+ ldr r0, [r0, #0x0]
+ str r0, [r5, r1]
+ ldr r0, [sp, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02029AFC
+ mov r1, #0x4b
+ lsl r1, r1, #0x2
+ str r0, [r5, r1]
+ ldr r0, [sp, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02029FC8
+ mov r1, #0x51
+ lsl r1, r1, #0x2
+ str r0, [r5, r1]
+ ldr r0, [sp, #0x0]
+ add r0, #0x98
+ ldr r2, [r0, #0x0]
+ add r0, r1, #0x4
+ str r2, [r5, r0]
+ ldr r0, [sp, #0x0]
+ add r1, #0x18
+ ldr r0, [r0, #0x1c]
+ ldr r0, [r0, #0x0]
+ str r0, [r5, r1]
+ ldr r0, [sp, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020254C0
+ mov r1, #0x53
+ lsl r1, r1, #0x2
+ str r0, [r5, r1]
+ bl FUN_02033534
+ bl FUN_0202D8B0
+ cmp r0, #0x0
+ beq _02047F10
+ ldr r0, [sp, #0x20]
+ bl FUN_02023A28
+ add r4, r0, #0x0
+ ldr r0, [sp, #0x20]
+ bl FUN_020239CC
+ add r1, r4, #0x0
+ mov r2, #0x1
+ bl FUN_020536D0
+ add r1, r5, #0x0
+ add r1, #0x29
+ strb r0, [r1, #0x0]
+ add r0, r5, #0x0
+ add r0, #0xf8
+ ldr r0, [r0, #0x0]
+ bl FUN_0202398C
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x3c
+ bl StringCopy
+ add r3, r5, #0x0
+ add r3, #0x28
+ add r5, #0x90
+ mov r2, #0x6
+_02047F00:
+ ldmia r3!, {r0-r1}
+ stmia r5!, {r0-r1}
+ sub r2, r2, #0x1
+ bne _02047F00
+ ldr r0, [r3, #0x0]
+ add sp, #0x24
+ str r0, [r5, #0x0]
+ pop {r4-r7, pc}
+_02047F10:
+ add r0, r5, #0x0
+ bl FUN_020480E4
+ add sp, #0x24
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02047F1C
+FUN_02047F1C: ; 0x02047F1C
+ push {r4-r6, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ ldr r0, [r4, #0xc]
+ add r6, r2, #0x0
+ bl FUN_0206BB1C
+ add r2, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r3, r6, #0x0
+ bl FUN_02047D48
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02047F38
+FUN_02047F38: ; 0x02047F38
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r1, #0x0
+ add r4, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_020238F4
+ add r6, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_0206BB1C
+ add r7, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_0206F158
+ str r0, [sp, #0x0]
+ ldr r0, [r5, #0xc]
+ bl FUN_02024DA0
+ str r0, [sp, #0x4]
+ ldr r0, [r5, #0xc]
+ bl FUN_02034E30
+ bl FUN_02034E24
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0xf8
+ ldr r0, [r0, #0x0]
+ add r1, r6, #0x0
+ bl FUN_0202393C
+ ldr r0, [r4, #0x4]
+ add r1, r7, #0x0
+ bl FUN_0206BAD0
+ mov r0, #0x42
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ ldr r1, [sp, #0x0]
+ bl FUN_0206EBB4
+ mov r0, #0x11
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ ldr r1, [sp, #0x4]
+ bl FUN_02023D80
+ mov r0, #0x19
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ strh r0, [r5, #0x0]
+ add sp, #0x8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02047FA4
+FUN_02047FA4: ; 0x02047FA4
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ add r4, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_020238F4
+ ldr r0, [r5, #0xc]
+ bl FUN_0206BB1C
+ ldr r0, [r5, #0xc]
+ bl FUN_0206F158
+ ldr r0, [r5, #0xc]
+ bl FUN_02024DA0
+ add r1, r0, #0x0
+ mov r0, #0x11
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ bl FUN_02023D80
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02047FD0
+FUN_02047FD0: ; 0x02047FD0
+ push {r3-r5, lr}
+ ldr r2, [r0, #0x1c]
+ add r4, r1, #0x0
+ ldr r1, [r2, #0x8]
+ ldr r2, [r2, #0xc]
+ bl FUN_0204A6E0
+ add r5, r0, #0x0
+ bl FUN_020548F0
+ cmp r0, #0x0
+ beq _02047FEC
+ mov r0, #0x8
+ pop {r3-r5, pc}
+_02047FEC:
+ add r0, r5, #0x0
+ bl FUN_0205478C
+ cmp r0, #0x0
+ bne _02048000
+ add r0, r5, #0x0
+ bl FUN_02054798
+ cmp r0, #0x0
+ beq _02048004
+_02048000:
+ mov r0, #0x2
+ pop {r3-r5, pc}
+_02048004:
+ add r0, r5, #0x0
+ bl FUN_02054830
+ cmp r0, #0x0
+ beq _02048012
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_02048012:
+ add r0, r5, #0x0
+ bl FUN_020549AC
+ cmp r0, #0x0
+ beq _02048020
+ mov r0, #0x6
+ pop {r3-r5, pc}
+_02048020:
+ add r0, r5, #0x0
+ bl FUN_02054974
+ cmp r0, #0x0
+ bne _02048034
+ add r0, r5, #0x0
+ bl FUN_02054990
+ cmp r0, #0x0
+ beq _02048038
+_02048034:
+ mov r0, #0xa
+ pop {r3-r5, pc}
+_02048038:
+ add r0, r5, #0x0
+ bl FUN_02054A3C
+ cmp r0, #0x0
+ beq _02048046
+ mov r0, #0x5
+ pop {r3-r5, pc}
+_02048046:
+ add r0, r5, #0x0
+ bl FUN_0205481C
+ cmp r0, #0x0
+ beq _02048054
+ mov r0, #0x7
+ pop {r3-r5, pc}
+_02048054:
+ cmp r4, #0xc
+ bhs _02048060
+ ldr r0, _02048068 ; =0x020F45F8
+ lsl r1, r4, #0x2
+ ldr r0, [r0, r1]
+ pop {r3-r5, pc}
+_02048060:
+ bl ErrorHandling
+ mov r0, #0xc
+ pop {r3-r5, pc}
+ .balign 4
+_02048068: .word 0x020F45F8
+
+ thumb_func_start FUN_0204806C
+FUN_0204806C: ; 0x0204806C
+ push {r4-r6, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ ldr r0, [r4, #0xc]
+ bl FUN_02034E30
+ bl FUN_02034E20
+ add r6, r0, #0x0
+ ldr r0, [r4, #0x1c]
+ ldr r0, [r0, #0x0]
+ bl FUN_02034860
+ mov r1, #0x15
+ lsl r1, r1, #0x4
+ str r0, [r5, r1]
+ ldr r0, [r6, #0x4]
+ cmp r0, #0x2
+ bne _02048096
+ mov r0, #0x1
+ str r0, [r5, r1]
+_02048096:
+ mov r1, #0x15
+ lsl r1, r1, #0x4
+ ldr r1, [r5, r1]
+ add r0, r4, #0x0
+ bl FUN_02047FD0
+ mov r1, #0x55
+ lsl r1, r1, #0x2
+ str r0, [r5, r1]
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_020480AC
+FUN_020480AC: ; 0x020480AC
+ mov r1, #0x55
+ mov r2, #0x7
+ lsl r1, r1, #0x2
+ str r2, [r0, r1]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020480B8
+FUN_020480B8: ; 0x020480B8
+ cmp r0, #0x2
+ beq _020480C0
+ cmp r0, #0x3
+ bne _020480C4
+_020480C0:
+ mov r0, #0x0
+ bx lr
+_020480C4:
+ mov r0, #0x1
+ bx lr
+
+ thumb_func_start FUN_020480C8
+FUN_020480C8: ; 0x020480C8
+ cmp r0, #0x1
+ beq _020480D0
+ cmp r0, #0x4
+ bne _020480D4
+_020480D0:
+ mov r0, #0x0
+ bx lr
+_020480D4:
+ mov r0, #0x1
+ bx lr
+
+ thumb_func_start FUN_020480D8
+FUN_020480D8: ; 0x020480D8
+ cmp r0, #0x4
+ bne _020480E0
+ mov r0, #0x0
+ bx lr
+_020480E0:
+ mov r0, #0x1
+ bx lr
+
+ thumb_func_start FUN_020480E4
+FUN_020480E4: ; 0x020480E4
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, #0xf8
+ ldr r0, [r0, #0x0]
+ bl FUN_020239CC
+ add r1, r4, #0x0
+ add r1, #0x29
+ strb r0, [r1, #0x0]
+ add r0, r4, #0x0
+ add r0, #0xf8
+ ldr r0, [r0, #0x0]
+ bl FUN_0202398C
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x3c
+ bl StringCopy
+ add r3, r4, #0x0
+ add r3, #0x28
+ add r4, #0x90
+ mov r2, #0x6
+_02048112:
+ ldmia r3!, {r0-r1}
+ stmia r4!, {r0-r1}
+ sub r2, r2, #0x1
+ bne _02048112
+ ldr r0, [r3, #0x0]
+ str r0, [r4, #0x0]
+ pop {r4, pc}
+
+ thumb_func_start FUN_02048120
+FUN_02048120: ; 0x02048120
+ push {r4, lr}
+ sub sp, #0x8
+ add r4, r0, #0x0
+ ldr r0, _02048158 ; =0x020F465C
+ bl FUN_0201E66C
+ ldr r0, _0204815C ; =0x020F4630
+ bl FUN_02016BBC
+ ldr r2, _02048160 ; =0x020F4640
+ add r0, r4, #0x0
+ mov r1, #0x3
+ mov r3, #0x0
+ bl FUN_02016C18
+ mov r0, #0x20
+ str r0, [sp, #0x0]
+ mov r0, #0xb
+ mov r3, #0x1a
+ str r0, [sp, #0x4]
+ mov r0, #0xe
+ mov r1, #0x6
+ mov r2, #0x0
+ lsl r3, r3, #0x4
+ bl FUN_02006930
+ add sp, #0x8
+ pop {r4, pc}
+ .balign 4
+_02048158: .word 0x020F465C
+_0204815C: .word 0x020F4630
+_02048160: .word 0x020F4640
+
+ thumb_func_start FUN_02048164
+FUN_02048164: ; 0x02048164
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ mov r0, #0xb
+ mov r1, #0x24
+ bl FUN_02016998
+ add r4, r0, #0x0
+ bne _0204817A
+ bl ErrorHandling
+_0204817A:
+ add r0, r4, #0x0
+ mov r1, #0x0
+ mov r2, #0x24
+ blx FUN_020DF4A4
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+ str r5, [r4, #0x4]
+ mov r0, #0xb
+ bl FUN_02016B94
+ str r0, [r4, #0x8]
+ bl FUN_02048120
+ mov r2, #0x52
+ mov r0, #0x1
+ mov r1, #0x1a
+ lsl r2, r2, #0x2
+ mov r3, #0xb
+ bl FUN_0200A86C
+ str r0, [r4, #0x1c]
+ mov r0, #0xb
+ bl FUN_0200AA80
+ str r0, [r4, #0x20]
+ add r1, r4, #0x0
+ ldr r0, [r4, #0x8]
+ ldr r2, _02048208 ; =0x020F4628
+ add r1, #0xc
+ bl FUN_02019150
+ add r0, r5, #0x0
+ bl FUN_020377AC
+ bl FUN_020238F4
+ add r2, r0, #0x0
+ ldr r0, [r4, #0x20]
+ mov r1, #0x0
+ bl FUN_0200ABC0
+ ldr r0, [r5, #0x1c]
+ ldr r1, [r0, #0x0]
+ ldr r0, _0204820C ; =0x0000019E
+ cmp r1, r0
+ bne _020481E6
+ mov r2, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x4
+ add r3, r2, #0x0
+ bl FUN_020482F4
+ b _020481F2
+_020481E6:
+ mov r2, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x3
+ add r3, r2, #0x0
+ bl FUN_020482F4
+_020481F2:
+ add r0, r4, #0x0
+ add r0, #0xc
+ bl FUN_020191D0
+ ldr r1, _02048210 ; =FUN_02048214
+ add r0, r6, #0x0
+ add r2, r4, #0x0
+ bl FUN_0204640C
+ pop {r4-r6, pc}
+ nop
+_02048208: .word 0x020F4628
+_0204820C: .word 0x0000019E
+_02048210: .word FUN_02048214
+
+ thumb_func_start FUN_02048214
+FUN_02048214: ; 0x02048214
+ push {r3-r4, lr}
+ sub sp, #0xc
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x4
+ bhi _020482EA
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02048230: ; jump table (using 16-bit offset)
+ .short _0204823A - _02048230 - 2; case 0
+ .short _02048258 - _02048230 - 2; case 1
+ .short _02048268 - _02048230 - 2; case 2
+ .short _02048298 - _02048230 - 2; case 3
+ .short _020482B2 - _02048230 - 2; case 4
+_0204823A:
+ mov r0, #0x8
+ str r0, [sp, #0x0]
+ mov r1, #0x1
+ str r1, [sp, #0x4]
+ mov r0, #0x20
+ str r0, [sp, #0x8]
+ mov r0, #0x3
+ mov r2, #0x2a
+ mov r3, #0x0
+ bl FUN_0200E1D0
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _020482EA
+_02048258:
+ bl FUN_0200E308
+ cmp r0, #0x0
+ beq _020482EA
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _020482EA
+_02048268:
+ ldr r0, _020482F0 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x1
+ tst r0, r1
+ bne _02048278
+ mov r0, #0x2
+ tst r0, r1
+ beq _020482EA
+_02048278:
+ mov r0, #0x8
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ mov r0, #0x20
+ str r0, [sp, #0x8]
+ mov r0, #0x0
+ add r1, r0, #0x0
+ add r2, r0, #0x0
+ add r3, r0, #0x0
+ bl FUN_0200E1D0
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _020482EA
+_02048298:
+ bl FUN_0200E308
+ cmp r0, #0x0
+ beq _020482EA
+ add r0, r4, #0x0
+ add r0, #0xc
+ mov r1, #0x0
+ bl FUN_02019620
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _020482EA
+_020482B2:
+ add r0, r4, #0x0
+ add r0, #0xc
+ mov r1, #0x0
+ bl FUN_0200D0E0
+ add r0, r4, #0x0
+ add r0, #0xc
+ bl FUN_02019178
+ ldr r0, [r4, #0x20]
+ bl FUN_0200AB18
+ ldr r0, [r4, #0x1c]
+ bl FUN_0200A8B8
+ ldr r0, [r4, #0x8]
+ mov r1, #0x3
+ bl FUN_020178A0
+ ldr r0, [r4, #0x8]
+ bl FUN_02016A18
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0xc
+ mov r0, #0x1
+ pop {r3-r4, pc}
+_020482EA:
+ mov r0, #0x0
+ add sp, #0xc
+ pop {r3-r4, pc}
+ .balign 4
+_020482F0: .word 0x021C48B8
+
+ thumb_func_start FUN_020482F4
+FUN_020482F4: ; 0x020482F4
+ push {r4-r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0x0
+ mov r0, #0x1
+ str r1, [sp, #0x10]
+ lsl r0, r0, #0xa
+ mov r1, #0xb
+ add r7, r3, #0x0
+ bl FUN_020219F4
+ add r6, r0, #0x0
+ mov r0, #0x1
+ lsl r0, r0, #0xa
+ mov r1, #0xb
+ bl FUN_020219F4
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0xc
+ mov r1, #0x0
+ bl FUN_02019620
+ ldr r0, [r5, #0x1c]
+ ldr r1, [sp, #0x10]
+ add r2, r6, #0x0
+ bl FUN_0200A8E0
+ ldr r0, [r5, #0x20]
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_0200B7B8
+ mov r0, #0x0
+ add r1, r4, #0x0
+ add r2, r0, #0x0
+ bl FUN_02002F08
+ add r3, r0, #0x0
+ str r7, [sp, #0x0]
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ ldr r0, _02048378 ; =0x000F0200
+ mov r1, #0x0
+ str r0, [sp, #0x8]
+ add r0, r5, #0x0
+ str r1, [sp, #0xc]
+ ldrb r5, [r5, #0x13]
+ add r0, #0xc
+ add r2, r4, #0x0
+ lsl r5, r5, #0x3
+ sub r3, r5, r3
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x19
+ sub r3, r3, #0x4
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_0201BDE0
+ add r0, r6, #0x0
+ bl FUN_02021A20
+ add r0, r4, #0x0
+ bl FUN_02021A20
+ add sp, #0x14
+ pop {r4-r7, pc}
+ .balign 4
+_02048378: .word 0x000F0200
+
+ thumb_func_start FUN_0204837C
+FUN_0204837C: ; 0x0204837C
+ push {r3-r7, lr}
+ sub sp, #0x18
+ add r5, r0, #0x0
+ bl FUN_02046528
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02046530
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x6
+ bhi _02048488
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_020483A2: ; jump table (using 16-bit offset)
+ .short _020483B0 - _020483A2 - 2; case 0
+ .short _020483E8 - _020483A2 - 2; case 1
+ .short _020483F8 - _020483A2 - 2; case 2
+ .short _0204840C - _020483A2 - 2; case 3
+ .short _02048434 - _020483A2 - 2; case 4
+ .short _02048442 - _020483A2 - 2; case 5
+ .short _02048482 - _020483A2 - 2; case 6
+_020483B0:
+ ldr r0, [r6, #0xc]
+ bl FUN_02034E30
+ add r7, r0, #0x0
+ bl FUN_02034DFC
+ add r1, sp, #0x4
+ str r0, [sp, #0x0]
+ bl FUN_02034EC4
+ add r0, r7, #0x0
+ bl FUN_02034DCC
+ add r1, r0, #0x0
+ ldr r0, [sp, #0x0]
+ bl FUN_02034E90
+ add r0, r5, #0x0
+ add r1, sp, #0x4
+ bl FUN_02049160
+ add r0, r6, #0x0
+ bl FUN_020637F0
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02048488
+_020483E8:
+ mov r0, #0x0
+ mov r1, #0x14
+ bl FUN_020053CC
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02048488
+_020483F8:
+ bl FUN_02005404
+ cmp r0, #0x0
+ bne _02048488
+ bl FUN_0204AB0C
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02048488
+_0204840C:
+ mov r0, #0xf
+ mvn r0, r0
+ mov r1, #0x37
+ mov r2, #0x1
+ bl FUN_0200A274
+ mov r0, #0xf
+ mvn r0, r0
+ mov r1, #0x3f
+ mov r2, #0x2
+ bl FUN_0200A274
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ bl FUN_02048164
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02048488
+_02048434:
+ add r0, r5, #0x0
+ bl FUN_0204AF84
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02048488
+_02048442:
+ mov r0, #0x0
+ mov r1, #0x3f
+ mov r2, #0x3
+ bl FUN_0200A274
+ bl FUN_02034E8C
+ add r7, r0, #0x0
+ ldr r0, [r6, #0xc]
+ bl FUN_02034E30
+ bl FUN_02034DFC
+ cmp r7, r0
+ bne _0204846E
+ mov r2, #0x0
+ ldr r1, _02048490 ; =0x000007E4
+ add r0, r5, #0x0
+ add r3, r2, #0x0
+ bl FUN_02038CD8
+ b _0204847A
+_0204846E:
+ mov r2, #0x0
+ ldr r1, _02048494 ; =0x000007E5
+ add r0, r5, #0x0
+ add r3, r2, #0x0
+ bl FUN_02038CD8
+_0204847A:
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02048488
+_02048482:
+ add sp, #0x18
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02048488:
+ mov r0, #0x0
+ add sp, #0x18
+ pop {r3-r7, pc}
+ nop
+_02048490: .word 0x000007E4
+_02048494: .word 0x000007E5
+
+ thumb_func_start FUN_02048498
+FUN_02048498: ; 0x02048498
+ ldr r3, _020484A0 ; =FUN_0204640C
+ ldr r1, _020484A4 ; =FUN_0204837C
+ mov r2, #0x0
+ bx r3
+ .balign 4
+_020484A0: .word FUN_0204640C
+_020484A4: .word FUN_0204837C
+
+ thumb_func_start FUN_020484A8
+FUN_020484A8: ; 0x020484A8
+ push {r3-r6, lr}
+ sub sp, #0x14
+ add r5, r0, #0x0
+ ldr r0, [r5, #0xc]
+ add r6, r1, #0x0
+ mov r1, #0xb
+ add r2, sp, #0x0
+ bl FUN_02022534
+ add r4, r0, #0x0
+ ldr r0, [sp, #0x0]
+ cmp r0, #0x1
+ bne _020484C6
+ cmp r6, #0x0
+ bne _020484CC
+_020484C6:
+ add r0, r4, #0x0
+ bl FUN_0202B03C
+_020484CC:
+ ldr r0, [r5, #0xc]
+ bl FUN_0206BB1C
+ add r6, r0, #0x0
+ add r0, sp, #0x4
+ bl FUN_020126B4
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ add r2, sp, #0x4
+ bl FUN_0202B050
+ ldr r0, [r5, #0xc]
+ add r1, r4, #0x0
+ bl FUN_02022540
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x14
+ pop {r3-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_020484F8
+FUN_020484F8: ; 0x020484F8
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r4, r0, #0x0
+ bl FUN_02046528
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0204652C
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02046530
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x9
+ bhi _02048554
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02048526: ; jump table (using 16-bit offset)
+ .short _0204853A - _02048526 - 2; case 0
+ .short _0204854A - _02048526 - 2; case 1
+ .short _02048586 - _02048526 - 2; case 2
+ .short _020485AE - _02048526 - 2; case 3
+ .short _020485C0 - _02048526 - 2; case 4
+ .short _020485F6 - _02048526 - 2; case 5
+ .short _02048612 - _02048526 - 2; case 6
+ .short _02048624 - _02048526 - 2; case 7
+ .short _02048644 - _02048526 - 2; case 8
+ .short _02048666 - _02048526 - 2; case 9
+_0204853A:
+ add r0, r6, #0x0
+ add r1, r5, #0x4
+ bl FUN_02038814
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02048688
+_0204854A:
+ add r0, r6, #0x0
+ bl FUN_0204647C
+ cmp r0, #0x0
+ beq _02048556
+_02048554:
+ b _02048688
+_02048556:
+ mov r1, #0x4
+ mov r0, #0x3
+ lsl r2, r1, #0xf
+ bl FUN_0201681C
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ bl FUN_02048764
+ mov r0, #0x8
+ str r0, [sp, #0x0]
+ mov r1, #0x1
+ str r1, [sp, #0x4]
+ mov r0, #0x20
+ str r0, [sp, #0x8]
+ mov r0, #0x3
+ add r2, r1, #0x0
+ mov r3, #0x0
+ bl FUN_0200E1D0
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02048688
+_02048586:
+ bl FUN_0200E308
+ cmp r0, #0x0
+ beq _02048688
+ ldr r0, [r6, #0xc]
+ bl FUN_0202280C
+ cmp r0, #0x0
+ bne _020485A8
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ bl FUN_020487E4
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02048688
+_020485A8:
+ mov r0, #0x7
+ str r0, [r4, #0x0]
+ b _02048688
+_020485AE:
+ add r0, r5, #0x0
+ bl FUN_02048838
+ cmp r0, #0x0
+ beq _02048688
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02048688
+_020485C0:
+ ldr r0, [r6, #0xc]
+ bl FUN_0206BB1C
+ bl FUN_02085140
+ bl FUN_02022830
+ ldr r0, [r6, #0xc]
+ bl FUN_02022720
+ add r7, r0, #0x0
+ ldr r1, [r5, #0x0]
+ add r0, r6, #0x0
+ bl FUN_020484A8
+ add r0, r5, #0x0
+ bl FUN_02048848
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ add r2, r7, #0x0
+ bl FUN_02048864
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02048688
+_020485F6:
+ add r0, r5, #0x0
+ bl FUN_02048838
+ cmp r0, #0x0
+ beq _02048688
+ ldr r0, _02048690 ; =0x0000061B
+ bl FUN_020054C8
+ mov r0, #0x12
+ str r0, [r5, #0x38]
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02048688
+_02048612:
+ ldr r1, [r5, #0x38]
+ cmp r1, #0x0
+ beq _0204861E
+ sub r0, r1, #0x1
+ str r0, [r5, #0x38]
+ b _02048688
+_0204861E:
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02048688
+_02048624:
+ mov r0, #0x8
+ str r0, [sp, #0x0]
+ mov r1, #0x0
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ mov r0, #0x20
+ str r0, [sp, #0x8]
+ mov r0, #0x3
+ add r2, r1, #0x0
+ add r3, r1, #0x0
+ bl FUN_0200E1D0
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02048688
+_02048644:
+ bl FUN_0200E308
+ cmp r0, #0x0
+ beq _02048688
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ bl FUN_020488D4
+ add r5, #0x10
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ bl FUN_02038854
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02048688
+_02048666:
+ add r0, r6, #0x0
+ bl FUN_0204647C
+ cmp r0, #0x0
+ bne _02048688
+ add r0, r5, #0x0
+ bl FUN_02016A18
+ mov r0, #0x4
+ bl FUN_020168D0
+ mov r0, #0x0
+ blx OS_ResetSystem
+ add sp, #0xc
+ mov r0, #0x1
+ pop {r4-r7, pc}
+_02048688:
+ mov r0, #0x0
+ add sp, #0xc
+ pop {r4-r7, pc}
+ nop
+_02048690: .word 0x0000061B
+
+ thumb_func_start FUN_02048694
+FUN_02048694: ; 0x02048694
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r7, r0, #0x0
+ bl FUN_02046528
+ add r4, r0, #0x0
+ mov r0, #0x20
+ mov r1, #0x3c
+ bl FUN_02016998
+ add r5, r0, #0x0
+ ldr r0, [r4, #0xc]
+ bl FUN_020462AC
+ add r6, r0, #0x0
+ ldr r0, [r4, #0xc]
+ bl FUN_020238F4
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0xc]
+ bl FUN_02034E30
+ bl FUN_02034DD0
+ str r0, [sp, #0x8]
+ ldr r0, [r4, #0xc]
+ bl FUN_02034E30
+ bl FUN_02034DCC
+ str r0, [sp, #0x4]
+ add r0, r6, #0x0
+ bl FUN_0205ED0C
+ str r0, [r5, #0x0]
+ ldr r0, [r4, #0xc]
+ bl FUN_020238F4
+ str r0, [r5, #0x4]
+ ldr r0, [r4, #0xc]
+ bl FUN_0206BB1C
+ str r0, [r5, #0x8]
+ ldr r0, [r4, #0xc]
+ bl FUN_02023918
+ str r0, [r5, #0xc]
+ ldr r0, [r4, #0xc]
+ bl FUN_020238F4
+ bl FUN_020239CC
+ str r0, [r5, #0x10]
+ add r0, r6, #0x0
+ bl FUN_0205ED0C
+ str r0, [r5, #0x14]
+ ldr r0, [r4, #0xc]
+ bl FUN_02024DA0
+ str r0, [r5, #0x18]
+ add r0, r6, #0x0
+ bl FUN_0205ED0C
+ cmp r0, #0x0
+ bne _0204871E
+ add r0, r4, #0x0
+ bl FUN_0204B328
+_0204871E:
+ ldr r0, [r4, #0xc]
+ bl FUN_0206BB1C
+ bl FUN_0204A25C
+ ldr r0, [sp, #0x8]
+ bl FUN_020377B0
+ ldr r0, [sp, #0x4]
+ bl FUN_020377C8
+ add r0, r6, #0x0
+ bl FUN_0205F154
+ add r0, r6, #0x0
+ bl FUN_0205ECFC
+ ldr r0, [sp, #0x0]
+ bl FUN_02023A78
+ ldr r0, [r4, #0xc]
+ bl FUN_02029FC8
+ mov r1, #0x2e
+ bl FUN_0202A0E8
+ ldr r1, _02048760 ; =FUN_020484F8
+ add r0, r7, #0x0
+ add r2, r5, #0x0
+ bl FUN_0204640C
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+_02048760: .word FUN_020484F8
+
+ thumb_func_start FUN_02048764
+FUN_02048764: ; 0x02048764
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0x0
+ mov r0, #0x0
+ str r0, [r1, #0x2c]
+ str r0, [r1, #0x30]
+ add r1, #0x1c
+ add r0, r1, #0x0
+ bl FUN_0201901C
+ ldr r0, _020487D4 ; =0x020F46B0
+ bl FUN_0201E66C
+ ldr r2, _020487D8 ; =0x04000304
+ ldrh r1, [r2, #0x0]
+ lsr r0, r2, #0xb
+ orr r0, r1
+ strh r0, [r2, #0x0]
+ ldr r0, _020487DC ; =0x020F4684
+ bl FUN_02016BBC
+ mov r0, #0x3
+ mov r1, #0x0
+ bl FUN_02017FE4
+ ldr r0, [r4, #0x8]
+ ldr r2, _020487E0 ; =0x020F4694
+ mov r1, #0x3
+ mov r3, #0x0
+ bl FUN_02016C18
+ mov r1, #0x20
+ mov r0, #0x3
+ mov r2, #0x0
+ add r3, r1, #0x0
+ bl FUN_02017F18
+ mov r2, #0x0
+ str r2, [sp, #0x0]
+ mov r0, #0x20
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ mov r0, #0x11
+ str r0, [sp, #0xc]
+ ldr r0, [r4, #0x8]
+ mov r1, #0x3
+ add r3, r2, #0x0
+ bl FUN_02018540
+ ldr r0, [r4, #0x8]
+ mov r1, #0x3
+ bl FUN_02017CD0
+ add sp, #0x10
+ pop {r4, pc}
+ nop
+_020487D4: .word 0x020F46B0
+_020487D8: .word 0x04000304
+_020487DC: .word 0x020F4684
+_020487E0: .word 0x020F4694
+
+ thumb_func_start FUN_020487E4
+FUN_020487E4: ; 0x020487E4
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0xc]
+ add r4, r1, #0x0
+ bl LoadPlayerDataAddress
+ add r6, r0, #0x0
+ mov r0, #0x1a
+ mov r1, #0xc7
+ mov r2, #0xf
+ mov r3, #0x20
+ bl FUN_0200A738
+ str r0, [r4, #0x2c]
+ add r1, r4, #0x0
+ ldr r0, [r5, #0x8]
+ add r1, #0x1c
+ mov r2, #0x3
+ bl FUN_020545B8
+ add r0, r4, #0x0
+ add r0, #0x1c
+ add r1, r6, #0x0
+ bl FUN_02054608
+ add r0, r4, #0x0
+ ldr r1, [r4, #0x2c]
+ add r0, #0x1c
+ add r2, r6, #0x0
+ mov r3, #0x1
+ bl FUN_02054658
+ str r0, [r4, #0x34]
+ add r0, r4, #0x0
+ ldr r1, _02048834 ; =0x000003E2
+ add r0, #0x1c
+ bl FUN_0200D858
+ str r0, [r4, #0x30]
+ pop {r4-r6, pc}
+ .balign 4
+_02048834: .word 0x000003E2
+
+ thumb_func_start FUN_02048838
+FUN_02048838: ; 0x02048838
+ ldr r0, [r0, #0x34]
+ ldr r3, _02048844 ; =FUN_020546C8
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bx r3
+ nop
+_02048844: .word FUN_020546C8
+
+ thumb_func_start FUN_02048848
+FUN_02048848: ; 0x02048848
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x2c]
+ bl FUN_02021A20
+ ldr r0, [r4, #0x30]
+ bl FUN_0200DBFC
+ add r4, #0x1c
+ add r0, r4, #0x0
+ bl FUN_0205464C
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02048864
+FUN_02048864: ; 0x02048864
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ mov r0, #0x1
+ mov r1, #0x1a
+ mov r2, #0xc7
+ mov r3, #0x4
+ bl FUN_0200A86C
+ add r7, r0, #0x0
+ cmp r6, #0x2
+ bne _020488AC
+ mov r0, #0x4
+ bl FUN_0200AA80
+ add r6, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_020238F4
+ add r2, r0, #0x0
+ add r0, r6, #0x0
+ mov r1, #0x0
+ bl FUN_0200ABC0
+ add r0, r6, #0x0
+ add r1, r7, #0x0
+ mov r2, #0x10
+ mov r3, #0x4
+ bl FUN_0200A9C4
+ str r0, [r4, #0x2c]
+ add r0, r6, #0x0
+ bl FUN_0200AB18
+ b _020488B4
+_020488AC:
+ mov r1, #0x12
+ bl FUN_0200A914
+ str r0, [r4, #0x2c]
+_020488B4:
+ add r0, r7, #0x0
+ bl FUN_0200A8B8
+ ldr r0, [r5, #0xc]
+ bl LoadPlayerDataAddress
+ add r2, r0, #0x0
+ add r0, r4, #0x0
+ ldr r1, [r4, #0x2c]
+ add r0, #0x1c
+ mov r3, #0x1
+ bl FUN_02054658
+ str r0, [r4, #0x34]
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020488D4
+FUN_020488D4: ; 0x020488D4
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x2c]
+ cmp r0, #0x0
+ beq _020488E4
+ bl FUN_02021A20
+_020488E4:
+ add r0, r4, #0x0
+ add r0, #0x1c
+ bl FUN_02019048
+ cmp r0, #0x0
+ beq _020488F8
+ add r4, #0x1c
+ add r0, r4, #0x0
+ bl FUN_02019178
+_020488F8:
+ ldr r0, [r5, #0x8]
+ mov r1, #0x3
+ bl FUN_020178A0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02048904
+FUN_02048904: ; 0x02048904
+ ldr r1, [r0, #0x1c]
+ ldr r2, _02048950 ; =0x0000014B
+ ldr r1, [r1, #0x0]
+ cmp r1, r2
+ bgt _0204892C
+ sub r2, r2, #0x5
+ sub r2, r1, r2
+ bmi _02048936
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_02048920: ; jump table (using 16-bit offset)
+ .short _02048932 - _02048920 - 2; case 0
+ .short _02048932 - _02048920 - 2; case 1
+ .short _02048932 - _02048920 - 2; case 2
+ .short _02048932 - _02048920 - 2; case 3
+ .short _02048932 - _02048920 - 2; case 4
+ .short _02048932 - _02048920 - 2; case 5
+_0204892C:
+ ldr r2, _02048954 ; =0x000001ED
+ cmp r1, r2
+ bne _02048936
+_02048932:
+ mov r2, #0x1
+ b _02048938
+_02048936:
+ mov r2, #0x0
+_02048938:
+ cmp r2, #0x0
+ bne _02048946
+ ldr r1, [r0, #0x6c]
+ cmp r1, #0x4
+ bne _02048946
+ mov r1, #0x0
+ str r1, [r0, #0x6c]
+_02048946:
+ cmp r2, #0x0
+ beq _0204894E
+ mov r1, #0x4
+ str r1, [r0, #0x6c]
+_0204894E:
+ bx lr
+ .balign 4
+_02048950: .word 0x0000014B
+_02048954: .word 0x000001ED
+
+ thumb_func_start FUN_02048958
+FUN_02048958: ; 0x02048958
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0xc]
+ add r4, r1, #0x0
+ bl FUN_02034E30
+ add r6, r0, #0x0
+ bl FUN_02034DC8
+ add r2, r0, #0x0
+ cmp r4, #0x0
+ beq _0204898C
+ ldr r3, [r5, #0x1c]
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldr r0, [r3, #0x0]
+ str r0, [r2, #0x0]
+ ldr r2, [r5, #0x1c]
+ ldmia r4!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldmia r4!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldr r0, [r4, #0x0]
+ str r0, [r2, #0x0]
+_0204898C:
+ ldr r1, [r5, #0x1c]
+ add r0, r5, #0x0
+ ldr r1, [r1, #0x0]
+ bl FUN_02034A60
+ ldr r0, [r5, #0x1c]
+ ldr r1, [r0, #0x4]
+ mov r0, #0x0
+ mvn r0, r0
+ cmp r1, r0
+ beq _020489DA
+ add r0, r5, #0x0
+ bl FUN_02034B00
+ ldrh r2, [r0, #0x0]
+ ldr r1, [r5, #0x1c]
+ str r2, [r1, #0x8]
+ ldrh r2, [r0, #0x2]
+ ldr r1, [r5, #0x1c]
+ str r2, [r1, #0xc]
+ ldrh r1, [r0, #0x6]
+ mov r0, #0x1
+ lsl r0, r0, #0x8
+ cmp r1, r0
+ bne _020489DA
+ add r0, r6, #0x0
+ bl FUN_02034DD0
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_02034DC4
+ add r2, r0, #0x0
+ ldmia r2!, {r0-r1}
+ stmia r4!, {r0-r1}
+ ldmia r2!, {r0-r1}
+ stmia r4!, {r0-r1}
+ ldr r0, [r2, #0x0]
+ str r0, [r4, #0x0]
+_020489DA:
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_020489DC
+FUN_020489DC: ; 0x020489DC
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x6c]
+ cmp r0, #0x5
+ blt _020489EA
+ bl ErrorHandling
+_020489EA:
+ ldr r0, [r4, #0x70]
+ ldr r0, [r0, #0x0]
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x1c
+ ldr r0, _020489F8 ; =0x021C4918
+ strb r1, [r0, #0x5]
+ pop {r4, pc}
+ .balign 4
+_020489F8: .word 0x021C4918
+
+ thumb_func_start FUN_020489FC
+FUN_020489FC: ; 0x020489FC
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x1c]
+ add r4, r1, #0x0
+ ldr r7, [r0, #0x0]
+ ldr r0, [r5, #0xc]
+ bl FUN_02034E30
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ bl FUN_0204AB44
+ add r0, r5, #0x0
+ bl FUN_02039564
+ cmp r4, #0x0
+ bne _02048A28
+ add r0, r5, #0x0
+ bl FUN_020636DC
+ b _02048A2E
+_02048A28:
+ add r0, r5, #0x0
+ bl FUN_02063684
+_02048A2E:
+ ldr r0, [r5, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205F408
+ cmp r4, #0x0
+ bne _02048A42
+ add r0, r5, #0x0
+ bl FUN_0204B0F8
+_02048A42:
+ cmp r4, #0x0
+ bne _02048A50
+ ldr r0, [r5, #0xc]
+ bl FUN_02024ED8
+ bl FUN_02025484
+_02048A50:
+ ldr r0, [r5, #0xc]
+ bl FUN_020462AC
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ bl FUN_02034FE4
+ lsl r0, r0, #0x10
+ lsr r6, r0, #0x10
+ cmp r6, #0xe
+ bne _02048A72
+ ldr r0, [sp, #0x0]
+ bl FUN_0205F2C4
+ cmp r0, #0x1
+ beq _02048A80
+_02048A72:
+ cmp r6, #0x10
+ bne _02048A82
+ ldr r0, [sp, #0x0]
+ bl FUN_0205F294
+ cmp r0, #0x1
+ bne _02048A82
+_02048A80:
+ mov r6, #0x0
+_02048A82:
+ ldr r0, [sp, #0x4]
+ add r1, r6, #0x0
+ bl FUN_02034DF4
+ cmp r4, #0x0
+ beq _02048AA6
+ ldr r0, [sp, #0x4]
+ bl FUN_02034E10
+ add r6, r0, #0x0
+ add r0, r7, #0x0
+ bl FUN_0203484C
+ cmp r6, r0
+ beq _02048AB4
+ bl ErrorHandling
+ b _02048AB4
+_02048AA6:
+ add r0, r7, #0x0
+ bl FUN_0203484C
+ add r1, r0, #0x0
+ ldr r0, [sp, #0x4]
+ bl FUN_02034E18
+_02048AB4:
+ cmp r4, #0x0
+ bne _02048ACA
+ add r0, r7, #0x0
+ bl FUN_02034EF8
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ beq _02048ACA
+ ldr r0, [sp, #0x4]
+ bl FUN_02034E04
+_02048ACA:
+ add r0, r5, #0x0
+ mov r1, #0x2
+ bl FUN_0203989C
+ add r0, r5, #0x0
+ mov r1, #0x0
+ add r0, #0x74
+ strh r1, [r0, #0x0]
+ add r5, #0x76
+ strh r1, [r5, #0x0]
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02048AE4
+FUN_02048AE4: ; 0x02048AE4
+ push {r4-r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ mov r1, #0x40
+ mov r2, #0x5
+ bl FUN_02057380
+ str r0, [r5, #0x34]
+ ldr r0, [r5, #0xc]
+ bl FUN_020238F4
+ bl FUN_020239CC
+ add r4, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_02034E30
+ bl FUN_02034E20
+ ldr r3, [r5, #0x1c]
+ ldr r1, [r0, #0x4]
+ str r1, [sp, #0x0]
+ str r4, [sp, #0x4]
+ str r0, [sp, #0x8]
+ ldr r0, [r5, #0x34]
+ ldr r1, [r3, #0x8]
+ ldr r2, [r3, #0xc]
+ ldr r3, [r3, #0x10]
+ bl FUN_02055068
+ str r0, [r5, #0x38]
+ add r0, r5, #0x0
+ bl FUN_02034AC8
+ ldr r0, [r5, #0x34]
+ bl FUN_02058768
+ add sp, #0xc
+ pop {r4-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02048B34
+FUN_02048B34: ; 0x02048B34
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_0204CC48
+ ldr r0, [r4, #0x38]
+ bl FUN_02055160
+ ldr r0, [r4, #0x34]
+ bl FUN_0205771C
+ ldr r0, [r4, #0x34]
+ bl FUN_020573AC
+ pop {r4, pc}
+
+ thumb_func_start FUN_02048B50
+FUN_02048B50: ; 0x02048B50
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r1, #0x40
+ mov r2, #0x5
+ bl FUN_02057380
+ str r0, [r5, #0x34]
+ add r0, r5, #0x0
+ bl FUN_02034E60
+ ldr r0, [r5, #0xc]
+ bl FUN_02034E30
+ bl FUN_02034E20
+ add r4, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_020238F4
+ bl FUN_020239CC
+ add r2, r0, #0x0
+ ldr r0, [r5, #0x34]
+ add r1, r4, #0x0
+ bl FUN_020550A4
+ str r0, [r5, #0x38]
+ ldr r0, [r5, #0x34]
+ bl FUN_02058768
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02048B90
+FUN_02048B90: ; 0x02048B90
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02048904
+ ldr r0, [r4, #0x58]
+ cmp r0, #0x0
+ beq _02048BA2
+ bl ErrorHandling
+_02048BA2:
+ ldr r0, [r4, #0x1c]
+ ldr r1, [r4, #0x28]
+ ldr r0, [r0, #0x0]
+ bl FUN_020344AC
+ ldr r0, [r4, #0xc]
+ bl FUN_020462AC
+ mov r1, #0x3
+ bl FUN_0205F524
+ cmp r0, #0x0
+ beq _02048BC2
+ ldr r0, [r4, #0x28]
+ bl FUN_020346CC
+_02048BC2:
+ ldr r0, [r4, #0xc]
+ bl FUN_020462AC
+ mov r1, #0x2
+ bl FUN_0205F524
+ cmp r0, #0x0
+ bne _02048BD8
+ ldr r0, [r4, #0x28]
+ bl FUN_02034678
+_02048BD8:
+ ldr r0, [r4, #0x6c]
+ cmp r0, #0x5
+ blt _02048BE2
+ bl ErrorHandling
+_02048BE2:
+ ldr r0, [r4, #0x6c]
+ ldr r1, _02048C28 ; =0x020F46E0
+ lsl r0, r0, #0x3
+ add r0, r1, r0
+ str r0, [r4, #0x70]
+ ldr r0, [r0, #0x0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1c
+ str r0, [r4, #0x5c]
+ ldr r0, [r4, #0x70]
+ ldr r0, [r0, #0x0]
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1c
+ str r0, [r4, #0x18]
+ ldr r1, [r4, #0x70]
+ add r0, r4, #0x0
+ ldr r1, [r1, #0x0]
+ add r0, #0x58
+ lsl r1, r1, #0x14
+ lsr r1, r1, #0x1c
+ bl FUN_0204A690
+ ldr r0, [r4, #0x70]
+ ldr r1, [r0, #0x0]
+ lsl r0, r1, #0xc
+ lsr r0, r0, #0x1c
+ beq _02048C24
+ lsr r1, r1, #0x18
+ lsl r1, r1, #0x18
+ add r0, r4, #0x0
+ lsr r1, r1, #0x18
+ bl FUN_0204A368
+_02048C24:
+ pop {r4, pc}
+ nop
+_02048C28: .word 0x020F46E0
+
+ thumb_func_start FUN_02048C2C
+FUN_02048C2C: ; 0x02048C2C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x58]
+ cmp r0, #0x0
+ bne _02048C3A
+ bl ErrorHandling
+_02048C3A:
+ mov r0, #0x0
+ str r0, [r4, #0x58]
+ mov r0, #0x5
+ str r0, [r4, #0x18]
+ ldr r0, [r4, #0x70]
+ ldr r0, [r0, #0x0]
+ lsl r0, r0, #0xc
+ lsr r0, r0, #0x1c
+ beq _02048C52
+ add r0, r4, #0x0
+ bl FUN_0204A390
+_02048C52:
+ mov r0, #0x0
+ str r0, [r4, #0x70]
+ pop {r4, pc}
+
+ thumb_func_start FUN_02048C58
+FUN_02048C58: ; 0x02048C58
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, #0x98
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _02048C7E
+ ldr r0, [r4, #0x1c]
+ mov r1, #0xb
+ ldr r0, [r0, #0x0]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_02028FA4
+ add r4, #0x98
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ mov r2, #0x0
+ bl FUN_02028AD4
+_02048C7E:
+ pop {r4, pc}
+
+ thumb_func_start FUN_02048C80
+FUN_02048C80: ; 0x02048C80
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, #0x98
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _02048CAE
+ ldr r0, [r4, #0xc]
+ bl FUN_02034E30
+ bl FUN_02034DD0
+ ldr r0, [r0, #0x0]
+ mov r1, #0xb
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_02028FA4
+ add r4, #0x98
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ mov r2, #0x0
+ bl FUN_02028AD4
+_02048CAE:
+ pop {r4, pc}
+
+ thumb_func_start FUN_02048CB0
+FUN_02048CB0: ; 0x02048CB0
+ push {r4-r6, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x38]
+ bl FUN_0205532C
+ add r6, r0, #0x0
+ ldr r0, [r4, #0x38]
+ bl FUN_02055320
+ ldr r1, [r4, #0x1c]
+ ldr r1, [r1, #0x0]
+ str r1, [r5, #0x0]
+ mov r1, #0x0
+ mvn r1, r1
+ str r1, [r5, #0x4]
+ str r0, [r5, #0x8]
+ str r6, [r5, #0xc]
+ mov r0, #0x1
+ str r0, [r5, #0x10]
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02048CDC
+FUN_02048CDC: ; 0x02048CDC
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x1c]
+ ldr r0, [r0, #0x0]
+ bl FUN_020349E4
+ cmp r0, #0x0
+ beq _02048CFE
+ ldr r1, [r4, #0x1c]
+ ldr r0, [r1, #0x8]
+ cmp r0, #0x7
+ bne _02048CFE
+ ldr r0, [r1, #0xc]
+ cmp r0, #0x6
+ bne _02048CFE
+ mov r0, #0x1
+ pop {r4, pc}
+_02048CFE:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02048D04
+FUN_02048D04: ; 0x02048D04
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_02034E30
+ bl FUN_02034DD0
+ add r4, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_020462AC
+ ldr r0, [r5, #0x1c]
+ ldr r0, [r0, #0x0]
+ str r0, [r4, #0x0]
+ mov r0, #0x0
+ mvn r0, r0
+ str r0, [r4, #0x4]
+ mov r0, #0x8
+ str r0, [r4, #0x8]
+ mov r0, #0x2
+ str r0, [r4, #0xc]
+ mov r0, #0x1
+ str r0, [r4, #0x10]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02048D34
+FUN_02048D34: ; 0x02048D34
+ push {r4-r6, lr}
+ add r6, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_02046530
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ beq _02048D56
+ cmp r0, #0x1
+ beq _02048D7A
+ cmp r0, #0x2
+ beq _02048D88
+ b _02048D8C
+_02048D56:
+ ldr r1, [r5, #0x1c]
+ add r0, r5, #0x0
+ bl FUN_02048958
+ add r0, r5, #0x0
+ bl FUN_02048B90
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_020489FC
+ add r0, r5, #0x0
+ bl FUN_02048AE4
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02048D8C
+_02048D7A:
+ add r0, r6, #0x0
+ bl FUN_0204B0E8
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02048D8C
+_02048D88:
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_02048D8C:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02048D90
+FUN_02048D90: ; 0x02048D90
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r1, #0x0
+ str r1, [r4, #0x6c]
+ bl FUN_02039874
+ ldr r1, _02048DA8 ; =FUN_02048D34
+ add r0, r4, #0x0
+ mov r2, #0x0
+ bl FUN_020463CC
+ pop {r4, pc}
+ .balign 4
+_02048DA8: .word FUN_02048D34
+
+ thumb_func_start FUN_02048DAC
+FUN_02048DAC: ; 0x02048DAC
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ bl FUN_02046528
+ add r4, r0, #0x0
+ ldr r0, [r4, #0xc]
+ bl FUN_020462AC
+ add r6, r0, #0x0
+ add r0, r7, #0x0
+ bl FUN_02046530
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ cmp r0, #0x4
+ bhi _02048EC2
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02048DD8: ; jump table (using 16-bit offset)
+ .short _02048DE2 - _02048DD8 - 2; case 0
+ .short _02048E10 - _02048DD8 - 2; case 1
+ .short _02048EA4 - _02048DD8 - 2; case 2
+ .short _02048EB0 - _02048DD8 - 2; case 3
+ .short _02048EB4 - _02048DD8 - 2; case 4
+_02048DE2:
+ ldr r0, [r4, #0xc]
+ bl FUN_02025B94
+ add r0, r6, #0x0
+ mov r1, #0x2
+ bl FUN_0205F2D4
+ add r7, r0, #0x0
+ ldr r0, [r4, #0xc]
+ bl FUN_020289A4
+ add r1, r7, #0x0
+ bl FUN_02028A20
+ cmp r0, #0x0
+ beq _02048E10
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_02037944
+ mov r0, #0x4
+ str r0, [r5, #0x0]
+ b _02048EC2
+_02048E10:
+ add r0, r6, #0x0
+ mov r1, #0x2
+ bl FUN_0205F2D4
+ add r7, r0, #0x0
+ ldr r0, [r4, #0xc]
+ bl FUN_020289A4
+ add r1, r7, #0x0
+ bl FUN_020289B0
+ add r1, r4, #0x0
+ add r1, #0x98
+ str r0, [r1, #0x0]
+ add r0, r6, #0x0
+ bl FUN_0205F174
+ cmp r0, #0x0
+ beq _02048E78
+ ldr r0, [r4, #0xc]
+ bl FUN_02034E30
+ add r7, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02048CDC
+ cmp r0, #0x0
+ beq _02048E4E
+ add r0, r4, #0x0
+ bl FUN_02048D04
+_02048E4E:
+ add r0, r6, #0x0
+ bl FUN_0205F164
+ add r0, r7, #0x0
+ bl FUN_02034DD0
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02048958
+ add r0, r4, #0x0
+ bl FUN_02048B90
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_020489FC
+ add r0, r4, #0x0
+ bl FUN_02048AE4
+ b _02048E92
+_02048E78:
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_02048958
+ add r0, r4, #0x0
+ bl FUN_02048B90
+ add r0, r4, #0x0
+ bl FUN_0204B0F8
+ add r0, r4, #0x0
+ bl FUN_02048B50
+_02048E92:
+ add r0, r4, #0x0
+ bl FUN_02048C58
+ add r0, r4, #0x0
+ bl FUN_02063808
+ mov r0, #0x2
+ str r0, [r5, #0x0]
+ b _02048EC2
+_02048EA4:
+ add r0, r7, #0x0
+ bl FUN_0204B0E8
+ mov r0, #0x3
+ str r0, [r5, #0x0]
+ b _02048EC2
+_02048EB0:
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02048EB4:
+ add r0, r4, #0x0
+ bl FUN_0204647C
+ cmp r0, #0x0
+ bne _02048EC2
+ mov r0, #0x1
+ str r0, [r5, #0x0]
+_02048EC2:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02048EC8
+FUN_02048EC8: ; 0x02048EC8
+ ldr r3, _02048ED4 ; =FUN_020463CC
+ mov r2, #0x0
+ str r2, [r0, #0x6c]
+ ldr r1, _02048ED8 ; =FUN_02048DAC
+ bx r3
+ nop
+_02048ED4: .word FUN_020463CC
+_02048ED8: .word FUN_02048DAC
+
+ thumb_func_start FUN_02048EDC
+FUN_02048EDC: ; 0x02048EDC
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ bl FUN_02046528
+ add r4, r0, #0x0
+ add r0, r7, #0x0
+ bl FUN_0204652C
+ add r6, r0, #0x0
+ ldr r0, [r4, #0xc]
+ bl FUN_020462AC
+ str r0, [sp, #0x0]
+ add r0, r7, #0x0
+ bl FUN_02046530
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ cmp r0, #0x5
+ bhi _02048FC4
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02048F10: ; jump table (using 16-bit offset)
+ .short _02048F1C - _02048F10 - 2; case 0
+ .short _02048F54 - _02048F10 - 2; case 1
+ .short _02048F7E - _02048F10 - 2; case 2
+ .short _02048F9A - _02048F10 - 2; case 3
+ .short _02048FAE - _02048F10 - 2; case 4
+ .short _02048FBA - _02048F10 - 2; case 5
+_02048F1C:
+ mov r0, #0x0
+ add r1, r0, #0x0
+ bl FUN_0200E3A0
+ mov r0, #0x1
+ mov r1, #0x0
+ bl FUN_0200E3A0
+ ldr r0, [r4, #0xc]
+ bl FUN_02025B94
+ ldr r0, [sp, #0x0]
+ mov r1, #0x2
+ bl FUN_0205F2D4
+ add r6, r0, #0x0
+ ldr r0, [r4, #0xc]
+ bl FUN_020289A4
+ add r1, r6, #0x0
+ bl FUN_020289B0
+ add r4, #0x98
+ str r0, [r4, #0x0]
+ ldr r0, [r5, #0x0]
+ add r0, r0, #0x1
+ str r0, [r5, #0x0]
+ b _02048FC4
+_02048F54:
+ add r0, r4, #0x0
+ add r1, r6, #0x4
+ bl FUN_02048958
+ add r0, r4, #0x0
+ bl FUN_02048B90
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_020489FC
+ add r0, r4, #0x0
+ bl FUN_02048AE4
+ add r0, r4, #0x0
+ bl FUN_02048C80
+ ldr r0, [r5, #0x0]
+ add r0, r0, #0x1
+ str r0, [r5, #0x0]
+ b _02048FC4
+_02048F7E:
+ add r0, r4, #0x0
+ bl FUN_020520AC
+ str r0, [r4, #0x78]
+ bl FUN_02052EE8
+ str r0, [r4, #0x7c]
+ add r0, r7, #0x0
+ bl FUN_0204AF84
+ ldr r0, [r5, #0x0]
+ add r0, r0, #0x1
+ str r0, [r5, #0x0]
+ b _02048FC4
+_02048F9A:
+ mov r1, #0x0
+ str r1, [r6, #0x0]
+ add r0, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_021E7750
+ ldr r0, [r5, #0x0]
+ add r0, r0, #0x1
+ str r0, [r5, #0x0]
+ b _02048FC4
+_02048FAE:
+ ldr r1, [r6, #0x0]
+ cmp r1, #0x0
+ beq _02048FC4
+ add r0, r0, #0x1
+ str r0, [r5, #0x0]
+ b _02048FC4
+_02048FBA:
+ add r0, r6, #0x0
+ bl FUN_02016A18
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02048FC4:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02048FC8
+FUN_02048FC8: ; 0x02048FC8
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x1c]
+ ldr r0, [r0, #0x0]
+ bl FUN_02034998
+ cmp r0, #0x0
+ bne _02049000
+ add r0, r4, #0x0
+ bl FUN_02048CDC
+ cmp r0, #0x0
+ beq _02048FF8
+ ldr r0, [r4, #0xc]
+ bl FUN_020462AC
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02048D04
+ add r0, r5, #0x0
+ bl FUN_0205F154
+ b _02049000
+_02048FF8:
+ add r0, r4, #0x0
+ bl FUN_02048EC8
+ pop {r3-r5, pc}
+_02049000:
+ mov r0, #0xb
+ mov r1, #0x18
+ bl FUN_020169D8
+ add r2, r0, #0x0
+ mov r1, #0x0
+ ldr r0, _02049030 ; =0x000001D2
+ str r1, [r2, #0x0]
+ str r0, [r2, #0x4]
+ sub r0, r1, #0x1
+ str r0, [r2, #0x8]
+ mov r0, #0x8
+ str r0, [r2, #0xc]
+ mov r0, #0xe
+ str r0, [r2, #0x10]
+ str r1, [r2, #0x14]
+ mov r0, #0x2
+ str r0, [r4, #0x6c]
+ ldr r1, _02049034 ; =FUN_02048EDC
+ add r0, r4, #0x0
+ bl FUN_020463CC
+ pop {r3-r5, pc}
+ nop
+_02049030: .word 0x000001D2
+_02049034: .word FUN_02048EDC
+
+ thumb_func_start FUN_02049038
+FUN_02049038: ; 0x02049038
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl FUN_02046528
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x0]
+ cmp r1, #0x3
+ bhi _020490B6
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0204905C: ; jump table (using 16-bit offset)
+ .short _02049064 - _0204905C - 2; case 0
+ .short _02049080 - _0204905C - 2; case 1
+ .short _02049090 - _0204905C - 2; case 2
+ .short _020490AE - _0204905C - 2; case 3
+_02049064:
+ ldr r0, _020490BC ; =0x00000603
+ bl FUN_020054C8
+ ldr r1, [r4, #0x4]
+ add r0, r6, #0x0
+ bl FUN_0204AD60
+ add r0, r5, #0x0
+ bl FUN_0204B090
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _020490B6
+_02049080:
+ add r0, r5, #0x0
+ add r1, r4, #0x4
+ bl FUN_02049160
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _020490B6
+_02049090:
+ bl FUN_02005404
+ cmp r0, #0x0
+ bne _020490B6
+ ldr r1, [r4, #0x4]
+ add r0, r6, #0x0
+ bl FUN_0204AD8C
+ add r0, r5, #0x0
+ bl FUN_0204B0E8
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _020490B6
+_020490AE:
+ bl FUN_02016A18
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_020490B6:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ nop
+_020490BC: .word 0x00000603
+
+ thumb_func_start FUN_020490C0
+FUN_020490C0: ; 0x020490C0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ mov r0, #0xb
+ mov r1, #0x1c
+ bl FUN_020169D8
+ add r2, r0, #0x0
+ mov r0, #0x0
+ str r0, [r2, #0x0]
+ ldmia r4!, {r0-r1}
+ add r3, r2, #0x4
+ stmia r3!, {r0-r1}
+ ldmia r4!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldr r0, [r4, #0x0]
+ ldr r1, _020490EC ; =FUN_02049038
+ str r0, [r3, #0x0]
+ add r0, r5, #0x0
+ bl FUN_0204640C
+ pop {r3-r5, pc}
+ .balign 4
+_020490EC: .word FUN_02049038
+
+ thumb_func_start FUN_020490F0
+FUN_020490F0: ; 0x020490F0
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ beq _02049112
+ cmp r0, #0x1
+ beq _02049126
+ cmp r0, #0x2
+ beq _0204914C
+ b _0204915C
+_02049112:
+ add r0, r5, #0x0
+ bl FUN_02048B34
+ add r0, r5, #0x0
+ bl FUN_02048C2C
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _0204915C
+_02049126:
+ add r0, r5, #0x0
+ add r1, r4, #0x4
+ bl FUN_02048958
+ add r0, r5, #0x0
+ bl FUN_02048B90
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_020489FC
+ add r5, #0x90
+ ldr r0, [r5, #0x0]
+ bl FUN_0205DD40
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _0204915C
+_0204914C:
+ add r0, r5, #0x0
+ bl FUN_02048AE4
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0204915C:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02049160
+FUN_02049160: ; 0x02049160
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ add r5, r1, #0x0
+ bl FUN_02046528
+ add r7, r0, #0x0
+ mov r0, #0xb
+ mov r1, #0x18
+ bl FUN_020169D8
+ add r4, r0, #0x0
+ add r0, r7, #0x0
+ bl FUN_0203739C
+ cmp r0, #0x0
+ beq _02049186
+ bl ErrorHandling
+ pop {r3-r7, pc}
+_02049186:
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+ ldmia r5!, {r0-r1}
+ add r2, r4, #0x4
+ stmia r2!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldr r0, [r5, #0x0]
+ ldr r1, _020491A4 ; =FUN_020490F0
+ str r0, [r2, #0x0]
+ add r0, r6, #0x0
+ add r2, r4, #0x0
+ bl FUN_0204640C
+ pop {r3-r7, pc}
+ .balign 4
+_020491A4: .word FUN_020490F0
+
+ thumb_func_start FUN_020491A8
+FUN_020491A8: ; 0x020491A8
+ push {lr}
+ sub sp, #0x14
+ str r1, [sp, #0x0]
+ ldr r1, [sp, #0x18]
+ str r2, [sp, #0x4]
+ str r1, [sp, #0xc]
+ ldr r1, [sp, #0x1c]
+ str r3, [sp, #0x8]
+ str r1, [sp, #0x10]
+ add r1, sp, #0x0
+ bl FUN_02049160
+ add sp, #0x14
+ pop {pc}
+
+ thumb_func_start FUN_020491C4
+FUN_020491C4: ; 0x020491C4
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl FUN_02046528
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x0]
+ cmp r1, #0x3
+ bhi _0204923C
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_020491E8: ; jump table (using 16-bit offset)
+ .short _020491F0 - _020491E8 - 2; case 0
+ .short _02049206 - _020491E8 - 2; case 1
+ .short _02049216 - _020491E8 - 2; case 2
+ .short _02049234 - _020491E8 - 2; case 3
+_020491F0:
+ ldr r1, [r4, #0x4]
+ add r0, r6, #0x0
+ bl FUN_0204AD60
+ add r0, r5, #0x0
+ bl FUN_0204AF3C
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _0204923C
+_02049206:
+ add r0, r5, #0x0
+ add r1, r4, #0x4
+ bl FUN_02049160
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _0204923C
+_02049216:
+ bl FUN_02005404
+ cmp r0, #0x0
+ bne _0204923C
+ ldr r1, [r4, #0x4]
+ add r0, r6, #0x0
+ bl FUN_0204AD8C
+ add r0, r5, #0x0
+ bl FUN_0204AF84
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _0204923C
+_02049234:
+ bl FUN_02016A18
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_0204923C:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02049240
+FUN_02049240: ; 0x02049240
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ add r5, r1, #0x0
+ mov r0, #0xb
+ mov r1, #0x18
+ add r4, r2, #0x0
+ add r6, r3, #0x0
+ bl FUN_020169D8
+ add r2, r0, #0x0
+ mov r0, #0x0
+ str r0, [r2, #0x0]
+ str r5, [r2, #0x4]
+ str r4, [r2, #0x8]
+ ldr r0, [sp, #0x18]
+ str r6, [r2, #0xc]
+ str r0, [r2, #0x10]
+ ldr r0, [sp, #0x1c]
+ ldr r1, _02049270 ; =FUN_020491C4
+ str r0, [r2, #0x14]
+ add r0, r7, #0x0
+ bl FUN_0204640C
+ pop {r3-r7, pc}
+ .balign 4
+_02049270: .word FUN_020491C4
+
+ thumb_func_start FUN_02049274
+FUN_02049274: ; 0x02049274
+ push {r4-r5, lr}
+ sub sp, #0x14
+ add r4, r0, #0x0
+ ldr r0, [sp, #0x20]
+ str r1, [sp, #0x0]
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x24]
+ mov r1, #0x20
+ str r0, [sp, #0x10]
+ mov r0, #0xb
+ str r2, [sp, #0x4]
+ str r3, [sp, #0x8]
+ bl FUN_020169D8
+ add r2, r0, #0x0
+ mov r0, #0x0
+ str r0, [r2, #0x0]
+ add r3, r2, #0x0
+ add r5, sp, #0x0
+ str r0, [r2, #0x4]
+ ldmia r5!, {r0-r1}
+ add r3, #0x8
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldr r0, [r5, #0x0]
+ ldr r1, _020492B8 ; =FUN_02049304
+ str r0, [r3, #0x0]
+ add r0, r4, #0x0
+ bl FUN_020463CC
+ add sp, #0x14
+ pop {r4-r5, pc}
+ nop
+_020492B8: .word FUN_02049304
+
+ thumb_func_start FUN_020492BC
+FUN_020492BC: ; 0x020492BC
+ push {r4-r5, lr}
+ sub sp, #0x14
+ add r4, r0, #0x0
+ ldr r0, [sp, #0x20]
+ str r1, [sp, #0x0]
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x24]
+ mov r1, #0x20
+ str r0, [sp, #0x10]
+ mov r0, #0xb
+ str r2, [sp, #0x4]
+ str r3, [sp, #0x8]
+ bl FUN_020169D8
+ add r2, r0, #0x0
+ mov r0, #0x0
+ str r0, [r2, #0x0]
+ add r3, r2, #0x0
+ add r5, sp, #0x0
+ str r0, [r2, #0x4]
+ ldmia r5!, {r0-r1}
+ add r3, #0x8
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldr r0, [r5, #0x0]
+ ldr r1, _02049300 ; =FUN_02049304
+ str r0, [r3, #0x0]
+ add r0, r4, #0x0
+ bl FUN_020463EC
+ add sp, #0x14
+ pop {r4-r5, pc}
+ nop
+_02049300: .word FUN_02049304
+
+ thumb_func_start FUN_02049304
+FUN_02049304: ; 0x02049304
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ bl FUN_02046528
+ add r6, r0, #0x0
+ add r0, r7, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ add r5, r4, #0x0
+ ldr r1, [r4, #0x0]
+ add r5, #0x8
+ cmp r1, #0x3
+ bhi _02049390
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0204932C: ; jump table (using 16-bit offset)
+ .short _02049334 - _0204932C - 2; case 0
+ .short _0204934A - _0204932C - 2; case 1
+ .short _02049364 - _0204932C - 2; case 2
+ .short _02049388 - _0204932C - 2; case 3
+_02049334:
+ ldr r1, [r5, #0x0]
+ add r0, r6, #0x0
+ bl FUN_0204AD60
+ add r0, r7, #0x0
+ bl FUN_02049394
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02049390
+_0204934A:
+ ldr r0, [r6, #0x38]
+ mov r1, #0x0
+ bl FUN_020553A8
+ add r1, r4, #0x0
+ add r0, r7, #0x0
+ add r1, #0x8
+ bl FUN_02049160
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02049390
+_02049364:
+ bl FUN_02005404
+ cmp r0, #0x0
+ bne _02049390
+ ldr r1, [r5, #0x0]
+ add r0, r6, #0x0
+ bl FUN_0204AD8C
+ add r0, r6, #0x0
+ bl FUN_020637A8
+ add r0, r7, #0x0
+ bl FUN_020493D0
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02049390
+_02049388:
+ bl FUN_02016A18
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02049390:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02049394
+FUN_02049394: ; 0x02049394
+ ldr r3, _0204939C ; =FUN_0204640C
+ ldr r1, _020493A0 ; =FUN_020493A4
+ mov r2, #0x0
+ bx r3
+ .balign 4
+_0204939C: .word FUN_0204640C
+_020493A0: .word FUN_020493A4
+
+ thumb_func_start FUN_020493A4
+FUN_020493A4: ; 0x020493A4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_02046530
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ beq _020493BA
+ cmp r0, #0x1
+ beq _020493C8
+ b _020493CC
+_020493BA:
+ add r0, r5, #0x0
+ bl FUN_0204AF3C
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _020493CC
+_020493C8:
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_020493CC:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_020493D0
+FUN_020493D0: ; 0x020493D0
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_0204652C
+ add r2, r0, #0x0
+ ldr r1, _020493E4 ; =FUN_020493E8
+ add r0, r4, #0x0
+ bl FUN_0204640C
+ pop {r4, pc}
+ .balign 4
+_020493E4: .word FUN_020493E8
+
+ thumb_func_start FUN_020493E8
+FUN_020493E8: ; 0x020493E8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_02046530
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02046528
+ ldr r1, [r4, #0x0]
+ cmp r1, #0x0
+ beq _02049408
+ cmp r1, #0x1
+ beq _02049416
+ cmp r1, #0x2
+ beq _02049428
+ b _0204942C
+_02049408:
+ add r0, r5, #0x0
+ bl FUN_0204AF84
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _0204942C
+_02049416:
+ bl FUN_021E331C
+ add r0, r5, #0x0
+ bl FUN_02049430
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _0204942C
+_02049428:
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0204942C:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02049430
+FUN_02049430: ; 0x02049430
+ push {r4-r6, lr}
+ add r6, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0203739C
+ cmp r0, #0x0
+ bne _02049452
+ bl ErrorHandling
+ pop {r4-r6, pc}
+_02049452:
+ ldr r0, [r5, #0x38]
+ bl FUN_020553E8
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_022483BC
+ str r0, [r4, #0x4]
+ ldr r1, _02049470 ; =FUN_02049474
+ add r0, r6, #0x0
+ add r2, r4, #0x0
+ bl FUN_0204640C
+ pop {r4-r6, pc}
+ nop
+_02049470: .word FUN_02049474
+
+ thumb_func_start FUN_02049474
+FUN_02049474: ; 0x02049474
+ push {r4, lr}
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x4]
+ bl FUN_022483E0
+ cmp r0, #0x1
+ bne _02049490
+ ldr r0, [r4, #0x4]
+ bl FUN_022483EC
+ mov r0, #0x1
+ pop {r4, pc}
+_02049490:
+ mov r0, #0x0
+ pop {r4, pc}
+
+ thumb_func_start FUN_02049494
+FUN_02049494: ; 0x02049494
+ push {r4-r6, lr}
+ add r6, r0, #0x0
+ add r5, r1, #0x0
+ mov r0, #0xb
+ mov r1, #0x20
+ add r4, r2, #0x0
+ bl FUN_020169D8
+ add r2, r0, #0x0
+ mov r0, #0x0
+ str r0, [r2, #0x0]
+ str r4, [r2, #0x4]
+ str r0, [r2, #0x8]
+ add r3, r2, #0x0
+ ldmia r5!, {r0-r1}
+ add r3, #0xc
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldr r0, [r5, #0x0]
+ ldr r1, _020494C8 ; =FUN_020494CC
+ str r0, [r3, #0x0]
+ add r0, r6, #0x0
+ bl FUN_020463EC
+ pop {r4-r6, pc}
+ .balign 4
+_020494C8: .word FUN_020494CC
+
+ thumb_func_start FUN_020494CC
+FUN_020494CC: ; 0x020494CC
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, r7, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ add r6, r4, #0x0
+ ldr r1, [r4, #0x0]
+ add r6, #0xc
+ cmp r1, #0x3
+ bhi _02049570
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_020494F4: ; jump table (using 16-bit offset)
+ .short _020494FC - _020494F4 - 2; case 0
+ .short _02049512 - _020494F4 - 2; case 1
+ .short _0204952C - _020494F4 - 2; case 2
+ .short _02049568 - _020494F4 - 2; case 3
+_020494FC:
+ ldr r1, [r6, #0x0]
+ add r0, r5, #0x0
+ bl FUN_0204AD60
+ add r0, r7, #0x0
+ bl FUN_02049574
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02049570
+_02049512:
+ ldr r0, [r5, #0x38]
+ mov r1, #0x0
+ bl FUN_020553A8
+ add r1, r4, #0x0
+ add r0, r7, #0x0
+ add r1, #0xc
+ bl FUN_02049160
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02049570
+_0204952C:
+ bl FUN_02005404
+ cmp r0, #0x0
+ bne _02049570
+ ldr r1, [r6, #0x0]
+ add r0, r5, #0x0
+ bl FUN_0204AD8C
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x2
+ bne _0204954A
+ add r0, r5, #0x0
+ bl FUN_020637C4
+ b _0204955A
+_0204954A:
+ cmp r0, #0x1
+ bhi _02049556
+ add r0, r5, #0x0
+ bl FUN_020637E0
+ b _0204955A
+_02049556:
+ bl ErrorHandling
+_0204955A:
+ add r0, r7, #0x0
+ bl FUN_020495B0
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02049570
+_02049568:
+ bl FUN_02016A18
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02049570:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02049574
+FUN_02049574: ; 0x02049574
+ ldr r3, _0204957C ; =FUN_0204640C
+ ldr r1, _02049580 ; =FUN_02049584
+ mov r2, #0x0
+ bx r3
+ .balign 4
+_0204957C: .word FUN_0204640C
+_02049580: .word FUN_02049584
+
+ thumb_func_start FUN_02049584
+FUN_02049584: ; 0x02049584
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_02046530
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ beq _0204959A
+ cmp r0, #0x1
+ beq _020495A8
+ b _020495AC
+_0204959A:
+ add r0, r5, #0x0
+ bl FUN_0204AF3C
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _020495AC
+_020495A8:
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_020495AC:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_020495B0
+FUN_020495B0: ; 0x020495B0
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_0204652C
+ add r2, r0, #0x0
+ ldr r1, _020495C4 ; =FUN_020495C8
+ add r0, r4, #0x0
+ bl FUN_0204640C
+ pop {r4, pc}
+ .balign 4
+_020495C4: .word FUN_020495C8
+
+ thumb_func_start FUN_020495C8
+FUN_020495C8: ; 0x020495C8
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl FUN_02046530
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02046528
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0204652C
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ beq _020495F0
+ cmp r0, #0x1
+ beq _020495FE
+ cmp r0, #0x2
+ beq _02049612
+ b _02049616
+_020495F0:
+ add r0, r5, #0x0
+ bl FUN_0204AF84
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02049616
+_020495FE:
+ add r0, r6, #0x0
+ bl FUN_021E331C
+ add r0, r5, #0x0
+ bl FUN_0204961C
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02049616
+_02049612:
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_02049616:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204961C
+FUN_0204961C: ; 0x0204961C
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl FUN_02046528
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0204652C
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0203739C
+ cmp r0, #0x0
+ bne _0204963E
+ bl ErrorHandling
+ pop {r4-r6, pc}
+_0204963E:
+ ldr r2, [r6, #0x4]
+ add r0, r4, #0x0
+ mov r1, #0x4
+ bl FUN_0224C8C8
+ add r2, r0, #0x0
+ ldr r1, _02049654 ; =0x0224C8E9
+ add r0, r5, #0x0
+ bl FUN_0204640C
+ pop {r4-r6, pc}
+ .balign 4
+_02049654: .word 0x0224C8E9
+
+ thumb_func_start FUN_02049658
+FUN_02049658: ; 0x02049658
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ bl FUN_02046528
+ add r7, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ add r5, r4, #0x0
+ ldr r1, [r4, #0x0]
+ add r5, #0x8
+ cmp r1, #0x6
+ bhi _02049712
+ add r2, r1, r1
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_02049680: ; jump table (using 16-bit offset)
+ .short _0204968E - _02049680 - 2; case 0
+ .short _020496A0 - _02049680 - 2; case 1
+ .short _020496BC - _02049680 - 2; case 2
+ .short _020496CC - _02049680 - 2; case 3
+ .short _020496EA - _02049680 - 2; case 4
+ .short _020496FE - _02049680 - 2; case 5
+ .short _0204970A - _02049680 - 2; case 6
+_0204968E:
+ add r0, r7, #0x0
+ mov r1, #0x1
+ add r2, r4, #0x4
+ bl FUN_021E7750
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02049712
+_020496A0:
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x0
+ beq _02049712
+ ldr r1, [r5, #0x0]
+ add r0, r7, #0x0
+ bl FUN_0204AD60
+ add r0, r6, #0x0
+ bl FUN_0204AF3C
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02049712
+_020496BC:
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ bl FUN_02049160
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02049712
+_020496CC:
+ bl FUN_02005404
+ cmp r0, #0x0
+ bne _02049712
+ ldr r1, [r5, #0x0]
+ add r0, r7, #0x0
+ bl FUN_0204AD8C
+ add r0, r6, #0x0
+ bl FUN_0204AF84
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02049712
+_020496EA:
+ mov r1, #0x0
+ str r1, [r4, #0x4]
+ add r0, r7, #0x0
+ add r2, r4, #0x4
+ bl FUN_021E7750
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02049712
+_020496FE:
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x0
+ beq _02049712
+ add r0, r1, #0x1
+ str r0, [r4, #0x0]
+ b _02049712
+_0204970A:
+ bl FUN_02016A18
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02049712:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02049718
+FUN_02049718: ; 0x02049718
+ push {r4-r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ mov r0, #0xb
+ mov r1, #0x1c
+ add r6, r2, #0x0
+ bl FUN_020169D8
+ mov r1, #0x0
+ mov r2, #0x1c
+ add r7, r0, #0x0
+ blx MI_CpuFill8
+ ldr r0, [r5, #0x38]
+ bl FUN_020552F8
+ mov r1, #0x0
+ add r2, r7, #0x0
+ str r4, [sp, #0x0]
+ str r6, [sp, #0x4]
+ add r3, sp, #0x0
+ str r1, [sp, #0x8]
+ str r1, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldmia r3!, {r0-r1}
+ add r2, #0x8
+ stmia r2!, {r0-r1}
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldr r0, [r3, #0x0]
+ ldr r1, _02049768 ; =FUN_02049658
+ str r0, [r2, #0x0]
+ add r0, r5, #0x0
+ add r2, r7, #0x0
+ bl FUN_020463CC
+ add sp, #0x14
+ pop {r4-r7, pc}
+ nop
+_02049768: .word FUN_02049658
+
+ thumb_func_start FUN_0204976C
+FUN_0204976C: ; 0x0204976C
+ push {r4-r6, lr}
+ add r6, r0, #0x0
+ ldr r0, [r6, #0xc]
+ bl FUN_02034E30
+ bl FUN_02034DD0
+ add r4, r0, #0x0
+ mov r0, #0xb
+ mov r1, #0x40
+ bl FUN_020169D8
+ add r5, r0, #0x0
+ mov r1, #0x0
+ str r1, [r5, #0x0]
+ str r1, [r5, #0x4]
+ ldr r0, [r6, #0x6c]
+ cmp r0, #0x1
+ bne _020497A4
+ ldr r0, [r4, #0x0]
+ str r0, [r5, #0x8]
+ sub r0, r1, #0x1
+ str r0, [r5, #0xc]
+ ldr r0, [r4, #0x8]
+ str r0, [r5, #0x10]
+ ldr r0, [r4, #0xc]
+ str r0, [r5, #0x14]
+ b _02049820
+_020497A4:
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ bl FUN_02048CB0
+ mov r0, #0x2
+ str r0, [r5, #0x8]
+ sub r0, r0, #0x3
+ str r0, [r5, #0xc]
+ ldr r1, [r4, #0x8]
+ asr r0, r1, #0x4
+ lsr r0, r0, #0x1b
+ add r0, r1, r0
+ asr r0, r0, #0x5
+ ldr r1, [r4, #0xc]
+ sub r6, r0, #0x1
+ asr r0, r1, #0x4
+ lsr r0, r0, #0x1b
+ add r0, r1, r0
+ asr r0, r0, #0x5
+ sub r4, r0, #0x6
+ cmp r6, #0x0
+ bge _020497D4
+ bl ErrorHandling
+_020497D4:
+ cmp r4, #0x0
+ bge _020497DC
+ bl ErrorHandling
+_020497DC:
+ lsr r2, r6, #0x1f
+ lsl r1, r6, #0x1f
+ sub r1, r1, r2
+ mov r0, #0x1f
+ ror r1, r0
+ add r0, r2, r1
+ bne _020497EE
+ mov r0, #0x8
+ b _020497F0
+_020497EE:
+ mov r0, #0x17
+_020497F0:
+ lsr r3, r4, #0x1f
+ lsl r2, r4, #0x1f
+ sub r2, r2, r3
+ mov r1, #0x1f
+ ror r2, r1
+ add r1, r3, r2
+ bne _02049802
+ mov r1, #0x8
+ b _02049804
+_02049802:
+ mov r1, #0x17
+_02049804:
+ lsr r2, r6, #0x1f
+ add r2, r6, r2
+ asr r2, r2, #0x1
+ add r6, r2, #0x1
+ lsr r2, r4, #0x1f
+ add r2, r4, r2
+ asr r2, r2, #0x1
+ add r3, r2, #0x3
+ lsl r2, r6, #0x5
+ add r0, r0, r2
+ str r0, [r5, #0x10]
+ lsl r0, r3, #0x5
+ add r0, r1, r0
+ str r0, [r5, #0x14]
+_02049820:
+ add r0, r5, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02049824
+FUN_02049824: ; 0x02049824
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_0204976C
+ add r4, r0, #0x0
+ beq _02049840
+ add r0, r5, #0x0
+ bl FUN_02049BE8
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_020463CC
+_02049840:
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02049844
+FUN_02049844: ; 0x02049844
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r6, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0xc
+ bhi _0204992C
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0204986A: ; jump table (using 16-bit offset)
+ .short _02049884 - _0204986A - 2; case 0
+ .short _020498DC - _0204986A - 2; case 1
+ .short _02049918 - _0204986A - 2; case 2
+ .short _0204995E - _0204986A - 2; case 3
+ .short _020499A2 - _0204986A - 2; case 4
+ .short _020499D0 - _0204986A - 2; case 5
+ .short _020499E2 - _0204986A - 2; case 6
+ .short _020499F2 - _0204986A - 2; case 7
+ .short _02049A06 - _0204986A - 2; case 8
+ .short _02049A14 - _0204986A - 2; case 9
+ .short _02049A42 - _0204986A - 2; case 10
+ .short _02049A64 - _0204986A - 2; case 11
+ .short _02049A96 - _0204986A - 2; case 12
+_02049884:
+ mov r0, #0x1
+ mov r1, #0x1a
+ mov r2, #0xcf
+ mov r3, #0xb
+ bl FUN_0200A86C
+ add r6, r0, #0x0
+ mov r1, #0x7c
+ bl FUN_0200A914
+ str r0, [r4, #0x34]
+ add r0, r6, #0x0
+ bl FUN_0200A8B8
+ add r1, r4, #0x0
+ ldr r0, [r5, #0x8]
+ add r1, #0x24
+ mov r2, #0x3
+ bl FUN_020545B8
+ ldr r0, [r5, #0xc]
+ bl LoadPlayerDataAddress
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x24
+ bl FUN_02054608
+ ldr r0, [r5, #0xc]
+ bl LoadPlayerDataAddress
+ add r2, r0, #0x0
+ add r0, r4, #0x0
+ ldr r1, [r4, #0x34]
+ add r0, #0x24
+ mov r3, #0x1
+ bl FUN_02054658
+ add r1, r4, #0x0
+ add r1, #0x38
+ strb r0, [r1, #0x0]
+ mov r0, #0x1
+ str r0, [r4, #0x0]
+ b _02049AB2
+_020498DC:
+ add r0, r4, #0x0
+ add r0, #0x38
+ ldrb r0, [r0, #0x0]
+ bl FUN_020546C8
+ cmp r0, #0x1
+ bne _0204992C
+ ldr r0, [r4, #0x34]
+ bl FUN_02021A20
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r3, #0xb
+ str r3, [sp, #0x4]
+ ldr r0, [r5, #0x8]
+ ldr r2, _02049AB8 ; =0x000003D9
+ mov r1, #0x3
+ bl FUN_0200CB00
+ mov r3, #0xb
+ str r3, [sp, #0x0]
+ ldr r0, [r5, #0x8]
+ ldr r1, _02049ABC ; =0x020F46D8
+ ldr r2, _02049AB8 ; =0x000003D9
+ bl FUN_02002198
+ str r0, [r4, #0x3c]
+ mov r0, #0x2
+ str r0, [r4, #0x0]
+ b _02049AB2
+_02049918:
+ ldr r0, [r4, #0x3c]
+ mov r1, #0xb
+ bl FUN_020021AC
+ cmp r0, #0x0
+ beq _0204992E
+ mov r1, #0x1
+ mvn r1, r1
+ cmp r0, r1
+ beq _02049946
+_0204992C:
+ b _02049AB2
+_0204992E:
+ add r0, r4, #0x0
+ add r0, #0x24
+ mov r1, #0x0
+ bl FUN_0200D0E0
+ add r0, r4, #0x0
+ add r0, #0x24
+ bl FUN_02019178
+ mov r0, #0x3
+ str r0, [r4, #0x0]
+ b _02049AB2
+_02049946:
+ add r0, r4, #0x0
+ add r0, #0x24
+ mov r1, #0x0
+ bl FUN_0200D0E0
+ add r0, r4, #0x0
+ add r0, #0x24
+ bl FUN_02019178
+ mov r0, #0x5
+ str r0, [r4, #0x0]
+ b _02049AB2
+_0204995E:
+ ldr r0, [r5, #0xc]
+ bl FUN_0202280C
+ cmp r0, #0x0
+ beq _02049976
+ mov r2, #0x0
+ ldr r1, _02049AC0 ; =0x000007F2
+ add r0, r6, #0x0
+ add r3, r2, #0x0
+ bl FUN_02038CD8
+ b _0204999C
+_02049976:
+ ldr r0, [r5, #0xc]
+ bl FUN_02025BE8
+ add r0, r5, #0x0
+ mov r1, #0xb
+ mov r2, #0x3
+ bl FUN_021E8588
+ str r0, [r4, #0x20]
+ bl FUN_021E84F4
+ add r3, r4, #0x0
+ mov r2, #0x0
+ ldr r1, _02049AC4 ; =0x000007D5
+ add r0, r6, #0x0
+ add r3, #0x1c
+ strh r2, [r4, #0x1c]
+ bl FUN_02038CD8
+_0204999C:
+ mov r0, #0x4
+ str r0, [r4, #0x0]
+ b _02049AB2
+_020499A2:
+ ldr r0, [r5, #0xc]
+ bl FUN_0202280C
+ cmp r0, #0x0
+ beq _020499B2
+ mov r0, #0x5
+ str r0, [r4, #0x0]
+ b _02049AB2
+_020499B2:
+ ldr r0, [r4, #0x20]
+ bl FUN_021E856C
+ ldr r0, [r4, #0x20]
+ bl FUN_021E85E4
+ ldrh r0, [r4, #0x1c]
+ cmp r0, #0x0
+ bne _020499CA
+ mov r0, #0x5
+ str r0, [r4, #0x0]
+ b _02049AB2
+_020499CA:
+ mov r0, #0x6
+ str r0, [r4, #0x0]
+ b _02049AB2
+_020499D0:
+ ldr r0, [r5, #0x34]
+ bl FUN_020587B0
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x8
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_020499E2:
+ mov r0, #0x0
+ mov r1, #0x1e
+ bl FUN_020053CC
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02049AB2
+_020499F2:
+ add r0, r6, #0x0
+ mov r1, #0x0
+ bl FUN_02049C0C
+ cmp r0, #0x0
+ beq _02049AB2
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02049AB2
+_02049A06:
+ add r0, r6, #0x0
+ bl FUN_0204AF3C
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02049AB2
+_02049A14:
+ mov r0, #0x1
+ str r0, [r5, #0x6c]
+ ldr r0, _02049AC8 ; =0x00000012
+ mov r1, #0x2
+ bl FUN_02005FDC
+ add r0, r5, #0x0
+ bl FUN_0204FC5C
+ ldr r0, [r4, #0x14]
+ mov r2, #0x1
+ str r0, [sp, #0x0]
+ str r2, [sp, #0x4]
+ ldr r1, [r4, #0x8]
+ ldr r3, [r4, #0x10]
+ add r0, r6, #0x0
+ sub r2, r2, #0x2
+ bl FUN_020491A8
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02049AB2
+_02049A42:
+ bl FUN_02005404
+ cmp r0, #0x0
+ bne _02049AB2
+ mov r0, #0x0
+ bl FUN_0200415C
+ add r0, r5, #0x0
+ bl FUN_0204AB44
+ add r0, r6, #0x0
+ bl FUN_0204AF84
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02049AB2
+_02049A64:
+ add r0, r6, #0x0
+ mov r1, #0x1
+ bl FUN_02049C0C
+ cmp r0, #0x0
+ beq _02049AB2
+ bl FUN_0204FCA0
+ add r0, r5, #0x0
+ bl FUN_02244824
+ mov r1, #0x0
+ str r0, [r5, #0x68]
+ mov r0, #0x2
+ add r2, r1, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x1e
+ sub r2, #0x10
+ mov r3, #0x19
+ bl FUN_0200A208
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02049AB2
+_02049A96:
+ mov r0, #0x2
+ bl FUN_0200A344
+ cmp r0, #0x0
+ beq _02049AB2
+ mov r0, #0x1
+ bl FUN_02247970
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x8
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_02049AB2:
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r4-r6, pc}
+ .balign 4
+_02049AB8: .word 0x000003D9
+_02049ABC: .word 0x020F46D8
+_02049AC0: .word 0x000007F2
+_02049AC4: .word 0x000007D5
+_02049AC8: .word 0x00000012
+
+ thumb_func_start FUN_02049ACC
+FUN_02049ACC: ; 0x02049ACC
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r6, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x0]
+ cmp r1, #0x7
+ bhi _02049BDC
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02049AF2: ; jump table (using 16-bit offset)
+ .short _02049B02 - _02049AF2 - 2; case 0
+ .short _02049B2C - _02049AF2 - 2; case 1
+ .short _02049B54 - _02049AF2 - 2; case 2
+ .short _02049B68 - _02049AF2 - 2; case 3
+ .short _02049B76 - _02049AF2 - 2; case 4
+ .short _02049B9C - _02049AF2 - 2; case 5
+ .short _02049BBE - _02049AF2 - 2; case 6
+ .short _02049BD2 - _02049AF2 - 2; case 7
+_02049B02:
+ mov r0, #0x0
+ bl FUN_02247970
+ bl FUN_0204FCD8
+ ldr r0, [r5, #0x68]
+ bl FUN_0224484C
+ mov r0, #0x2
+ str r0, [sp, #0x0]
+ mov r0, #0x1e
+ add r1, r0, #0x0
+ sub r1, #0x2e
+ mov r2, #0x0
+ mov r3, #0x1
+ bl FUN_0200A208
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02049BDC
+_02049B2C:
+ mov r0, #0x2
+ bl FUN_0200A344
+ cmp r0, #0x0
+ beq _02049BDC
+ ldr r0, [r5, #0x68]
+ cmp r0, #0x0
+ bne _02049BDC
+ bl FUN_02030F40
+ cmp r0, #0x0
+ bne _02049BDC
+ mov r0, #0x0
+ mov r1, #0x1e
+ bl FUN_020053CC
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02049BDC
+_02049B54:
+ add r0, r6, #0x0
+ mov r1, #0x2
+ bl FUN_02049C0C
+ cmp r0, #0x0
+ beq _02049BDC
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02049BDC
+_02049B68:
+ add r0, r6, #0x0
+ bl FUN_0204AF3C
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02049BDC
+_02049B76:
+ mov r0, #0x0
+ str r0, [r5, #0x6c]
+ ldr r0, _02049BE4 ; =0x00000012
+ bl FUN_02005F60
+ ldr r0, [r4, #0x14]
+ mov r2, #0x1
+ str r0, [sp, #0x0]
+ str r2, [sp, #0x4]
+ ldr r1, [r4, #0x8]
+ ldr r3, [r4, #0x10]
+ add r0, r6, #0x0
+ sub r2, r2, #0x2
+ bl FUN_020491A8
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02049BDC
+_02049B9C:
+ bl FUN_02005404
+ cmp r0, #0x0
+ bne _02049BDC
+ mov r0, #0x0
+ bl FUN_0200415C
+ add r0, r5, #0x0
+ bl FUN_0204AB44
+ add r0, r6, #0x0
+ bl FUN_0204AF84
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02049BDC
+_02049BBE:
+ add r0, r6, #0x0
+ mov r1, #0x3
+ bl FUN_02049C0C
+ cmp r0, #0x0
+ beq _02049BDC
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02049BDC
+_02049BD2:
+ bl FUN_02016A18
+ add sp, #0x8
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_02049BDC:
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r4-r6, pc}
+ nop
+_02049BE4: .word 0x00000012
+
+ thumb_func_start FUN_02049BE8
+FUN_02049BE8: ; 0x02049BE8
+ push {r3, lr}
+ ldr r0, [r0, #0x6c]
+ cmp r0, #0x0
+ bne _02049BF4
+ ldr r0, _02049C04 ; =FUN_02049844
+ pop {r3, pc}
+_02049BF4:
+ cmp r0, #0x1
+ bne _02049BFC
+ ldr r0, _02049C08 ; =FUN_02049ACC
+ pop {r3, pc}
+_02049BFC:
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+_02049C04: .word FUN_02049844
+_02049C08: .word FUN_02049ACC
+
+ thumb_func_start FUN_02049C0C
+FUN_02049C0C: ; 0x02049C0C
+ push {r3-r7, lr}
+ add r4, r0, #0x0
+ add r6, r1, #0x0
+ bl FUN_02046528
+ add r7, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x4]
+ mov r5, #0x0
+ cmp r0, #0x0
+ beq _02049C2E
+ cmp r0, #0x1
+ beq _02049C44
+ b _02049C4E
+_02049C2E:
+ add r2, r4, #0x0
+ str r5, [r4, #0x18]
+ add r0, r7, #0x0
+ add r1, r6, #0x0
+ add r2, #0x18
+ bl FUN_02053C98
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _02049C4E
+_02049C44:
+ ldr r0, [r4, #0x18]
+ cmp r0, #0x0
+ beq _02049C4E
+ str r5, [r4, #0x4]
+ mov r5, #0x1
+_02049C4E:
+ add r0, r5, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02049C54
+FUN_02049C54: ; 0x02049C54
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ beq _02049C76
+ cmp r0, #0x1
+ beq _02049C84
+ cmp r0, #0x2
+ beq _02049C9C
+ b _02049CAC
+_02049C76:
+ add r0, r5, #0x0
+ bl FUN_02048B34
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02049CAC
+_02049C84:
+ add r0, r5, #0x0
+ add r1, r4, #0x4
+ bl FUN_02048958
+ add r0, r5, #0x0
+ mov r1, #0x2
+ bl FUN_0203989C
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02049CAC
+_02049C9C:
+ add r0, r5, #0x0
+ bl FUN_02048AE4
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_02049CAC:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02049CB0
+FUN_02049CB0: ; 0x02049CB0
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ add r5, r1, #0x0
+ bl FUN_02046528
+ add r7, r0, #0x0
+ mov r0, #0xb
+ mov r1, #0x18
+ bl FUN_020169D8
+ add r4, r0, #0x0
+ add r0, r7, #0x0
+ bl FUN_0203739C
+ cmp r0, #0x0
+ beq _02049CD6
+ bl ErrorHandling
+ pop {r3-r7, pc}
+_02049CD6:
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+ ldmia r5!, {r0-r1}
+ add r2, r4, #0x4
+ stmia r2!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldr r0, [r5, #0x0]
+ ldr r1, _02049CF4 ; =FUN_02049C54
+ str r0, [r2, #0x0]
+ add r0, r6, #0x0
+ add r2, r4, #0x0
+ bl FUN_0204640C
+ pop {r3-r7, pc}
+ .balign 4
+_02049CF4: .word FUN_02049C54
+
+ thumb_func_start FUN_02049CF8
+FUN_02049CF8: ; 0x02049CF8
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ bl FUN_02046528
+ add r7, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_0204652C
+ add r5, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_02046530
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x5
+ bhi _02049D98
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02049D24: ; jump table (using 16-bit offset)
+ .short _02049D30 - _02049D24 - 2; case 0
+ .short _02049D4C - _02049D24 - 2; case 1
+ .short _02049D60 - _02049D24 - 2; case 2
+ .short _02049D72 - _02049D24 - 2; case 3
+ .short _02049D80 - _02049D24 - 2; case 4
+ .short _02049D8E - _02049D24 - 2; case 5
+_02049D30:
+ ldr r1, [r5, #0x8]
+ add r0, r7, #0x0
+ mov r2, #0x0
+ bl FUN_0204ACA8
+ add r0, r7, #0x0
+ mov r1, #0x1
+ add r2, r5, #0x4
+ bl FUN_021E7750
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02049D98
+_02049D4C:
+ ldr r0, [r5, #0x4]
+ cmp r0, #0x0
+ beq _02049D98
+ add r0, r6, #0x0
+ bl FUN_0204AF3C
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02049D98
+_02049D60:
+ add r5, #0x8
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ bl FUN_02049160
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02049D98
+_02049D72:
+ add r0, r6, #0x0
+ bl FUN_0204AF84
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02049D98
+_02049D80:
+ add r0, r6, #0x0
+ bl FUN_0204B00C
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02049D98
+_02049D8E:
+ add r0, r5, #0x0
+ bl FUN_02016A18
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02049D98:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02049D9C
+FUN_02049D9C: ; 0x02049D9C
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_02034E30
+ bl FUN_02034DD0
+ add r4, r0, #0x0
+ mov r0, #0xb
+ mov r1, #0x1c
+ bl FUN_020169D8
+ add r6, r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1c
+ blx MI_CpuFill8
+ add r2, r6, #0x0
+ ldmia r4!, {r0-r1}
+ add r2, #0x8
+ stmia r2!, {r0-r1}
+ ldmia r4!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldr r0, [r4, #0x0]
+ str r0, [r2, #0x0]
+ add r0, r5, #0x0
+ bl FUN_020520F8
+ ldr r0, [r5, #0x7c]
+ bl FUN_02052FA4
+ mov r0, #0x0
+ str r0, [r5, #0x6c]
+ ldr r1, _02049DF0 ; =FUN_02049CF8
+ add r0, r5, #0x0
+ add r2, r6, #0x0
+ bl FUN_020463CC
+ mov r0, #0x0
+ str r0, [r5, #0x78]
+ pop {r4-r6, pc}
+ nop
+_02049DF0: .word FUN_02049CF8
+
+ thumb_func_start FUN_02049DF4
+FUN_02049DF4: ; 0x02049DF4
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ bl FUN_02046528
+ add r7, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_0204652C
+ add r5, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_02046530
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x6
+ bhi _02049E9E
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02049E20: ; jump table (using 16-bit offset)
+ .short _02049E2E - _02049E20 - 2; case 0
+ .short _02049E46 - _02049E20 - 2; case 1
+ .short _02049E54 - _02049E20 - 2; case 2
+ .short _02049E66 - _02049E20 - 2; case 3
+ .short _02049E74 - _02049E20 - 2; case 4
+ .short _02049E88 - _02049E20 - 2; case 5
+ .short _02049E94 - _02049E20 - 2; case 6
+_02049E2E:
+ ldr r1, [r5, #0x8]
+ add r0, r7, #0x0
+ mov r2, #0x0
+ bl FUN_0204ACA8
+ add r0, r6, #0x0
+ bl FUN_0204AFC8
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02049E9E
+_02049E46:
+ add r0, r6, #0x0
+ bl FUN_0204AF3C
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02049E9E
+_02049E54:
+ add r5, #0x8
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ bl FUN_02049160
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02049E9E
+_02049E66:
+ add r0, r6, #0x0
+ bl FUN_0204AF84
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02049E9E
+_02049E74:
+ mov r1, #0x0
+ str r1, [r5, #0x4]
+ add r0, r7, #0x0
+ add r2, r5, #0x4
+ bl FUN_021E7750
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02049E9E
+_02049E88:
+ ldr r1, [r5, #0x4]
+ cmp r1, #0x0
+ beq _02049E9E
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02049E9E
+_02049E94:
+ add r0, r5, #0x0
+ bl FUN_02016A18
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02049E9E:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02049EA4
+FUN_02049EA4: ; 0x02049EA4
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_02034E30
+ bl FUN_02034DD0
+ add r7, r0, #0x0
+ mov r0, #0xb
+ mov r1, #0x1c
+ bl FUN_020169D8
+ mov r1, #0x0
+ mov r2, #0x1c
+ add r4, r0, #0x0
+ blx MI_CpuFill8
+ add r0, r7, #0x0
+ add r1, r5, #0x0
+ bl FUN_02048CB0
+ ldr r0, _02049F08 ; =0x000001D2
+ str r0, [r4, #0x8]
+ mov r0, #0x0
+ mvn r0, r0
+ str r0, [r4, #0xc]
+ mov r0, #0x8
+ str r0, [r4, #0x10]
+ mov r0, #0xe
+ str r0, [r4, #0x14]
+ mov r0, #0x0
+ str r0, [r4, #0x18]
+ add r0, r5, #0x0
+ bl FUN_020520AC
+ str r0, [r5, #0x78]
+ bl FUN_02052EE8
+ str r0, [r5, #0x7c]
+ mov r0, #0x2
+ str r0, [r5, #0x6c]
+ ldr r1, _02049F0C ; =FUN_02049DF4
+ add r0, r6, #0x0
+ add r2, r4, #0x0
+ bl FUN_0204640C
+ pop {r3-r7, pc}
+ .balign 4
+_02049F08: .word 0x000001D2
+_02049F0C: .word FUN_02049DF4
+
+ thumb_func_start FUN_02049F10
+FUN_02049F10: ; 0x02049F10
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl FUN_02046528
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x0]
+ cmp r1, #0x3
+ bhi _02049F8E
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02049F34: ; jump table (using 16-bit offset)
+ .short _02049F3C - _02049F34 - 2; case 0
+ .short _02049F58 - _02049F34 - 2; case 1
+ .short _02049F68 - _02049F34 - 2; case 2
+ .short _02049F86 - _02049F34 - 2; case 3
+_02049F3C:
+ ldr r0, _02049F94 ; =0x00000603
+ bl FUN_020054C8
+ ldr r1, [r4, #0x4]
+ add r0, r6, #0x0
+ bl FUN_0204AD60
+ add r0, r5, #0x0
+ bl FUN_0204B090
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02049F8E
+_02049F58:
+ add r0, r5, #0x0
+ add r1, r4, #0x4
+ bl FUN_02049160
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02049F8E
+_02049F68:
+ bl FUN_02005404
+ cmp r0, #0x0
+ bne _02049F8E
+ ldr r1, [r4, #0x4]
+ add r0, r6, #0x0
+ bl FUN_0204AD8C
+ add r0, r5, #0x0
+ bl FUN_0204AF84
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02049F8E
+_02049F86:
+ bl FUN_02016A18
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_02049F8E:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ nop
+_02049F94: .word 0x00000603
+
+ thumb_func_start FUN_02049F98
+FUN_02049F98: ; 0x02049F98
+ push {r3-r7, lr}
+ sub sp, #0x18
+ str r0, [sp, #0x0]
+ add r5, r1, #0x0
+ add r6, r2, #0x0
+ add r7, r3, #0x0
+ bl FUN_02046528
+ add r4, r0, #0x0
+ ldr r0, [r4, #0xc]
+ bl FUN_02034E30
+ bl FUN_02034DD0
+ add r1, r4, #0x0
+ bl FUN_02048CB0
+ mov r0, #0x3
+ str r0, [r4, #0x6c]
+ mov r0, #0xb
+ mov r1, #0x1c
+ bl FUN_020169D8
+ add r2, r0, #0x0
+ ldr r0, [sp, #0x30]
+ str r5, [sp, #0x4]
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x34]
+ str r6, [sp, #0x8]
+ str r0, [sp, #0x14]
+ mov r0, #0x0
+ str r7, [sp, #0xc]
+ add r4, sp, #0x4
+ str r0, [r2, #0x0]
+ ldmia r4!, {r0-r1}
+ add r3, r2, #0x4
+ stmia r3!, {r0-r1}
+ ldmia r4!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldr r0, [r4, #0x0]
+ ldr r1, _02049FF8 ; =FUN_02049F10
+ str r0, [r3, #0x0]
+ ldr r0, [sp, #0x0]
+ bl FUN_0204640C
+ add sp, #0x18
+ pop {r3-r7, pc}
+ nop
+_02049FF8: .word FUN_02049F10
+
+ thumb_func_start FUN_02049FFC
+FUN_02049FFC: ; 0x02049FFC
+ push {r4, lr}
+ bl FUN_02046528
+ add r4, r0, #0x0
+ ldr r0, [r4, #0xc]
+ bl FUN_02034E30
+ bl FUN_02034DD0
+ add r1, r0, #0x0
+ mov r0, #0x0
+ str r0, [r4, #0x6c]
+ ldr r0, [r4, #0x10]
+ bl FUN_020490C0
+ pop {r4, pc}
+
+ thumb_func_start FUN_0204A01C
+FUN_0204A01C: ; 0x0204A01C
+ push {r4, lr}
+ mov r1, #0xa2
+ mov r2, #0x0
+ add r4, r0, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ bne _0204A030
+ mov r0, #0x0
+ pop {r4, pc}
+_0204A030:
+ add r0, r4, #0x0
+ mov r1, #0x4c
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ bne _0204A042
+ mov r0, #0x1
+ pop {r4, pc}
+_0204A042:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204A048
+FUN_0204A048: ; 0x0204A048
+ push {r3-r7, lr}
+ sub sp, #0x20
+ add r6, r1, #0x0
+ add r5, r0, #0x0
+ add r0, r6, #0x0
+ add r7, r2, #0x0
+ str r3, [sp, #0x10]
+ bl FUN_020238F4
+ str r0, [sp, #0x14]
+ add r0, r6, #0x0
+ bl FUN_0206BB1C
+ str r0, [sp, #0x18]
+ add r0, r5, #0x0
+ bl FUN_020669C0
+ add r4, r0, #0x0
+ bl FUN_02066978
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ str r0, [sp, #0xc]
+ ldr r2, [sp, #0x10]
+ add r0, r4, #0x0
+ add r1, r7, #0x0
+ mov r3, #0x20
+ bl FUN_02066ACC
+ ldr r0, [sp, #0x40]
+ ldr r1, [sp, #0x14]
+ str r0, [sp, #0x0]
+ ldr r3, [sp, #0x3c]
+ add r0, r4, #0x0
+ mov r2, #0x4
+ str r5, [sp, #0x4]
+ bl FUN_0206A014
+ add r0, sp, #0x28
+ ldrh r0, [r0, #0x10]
+ mov r1, #0x6
+ add r2, sp, #0x1c
+ str r0, [sp, #0x1c]
+ add r0, r4, #0x0
+ bl FUN_02067830
+ ldr r0, [sp, #0x18]
+ add r1, r4, #0x0
+ bl FUN_0206B900
+ add r5, r0, #0x0
+ beq _0204A0BC
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ bl FUN_0202C144
+_0204A0BC:
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add r0, r5, #0x0
+ add sp, #0x20
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0204A0C8
+FUN_0204A0C8: ; 0x0204A0C8
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r4, r1, #0x0
+ add r0, r4, #0x0
+ add r5, r2, #0x0
+ add r7, r3, #0x0
+ bl FUN_020238F4
+ str r0, [sp, #0x8]
+ add r0, r4, #0x0
+ bl FUN_0206BB1C
+ add r6, r0, #0x0
+ mov r0, #0x20
+ bl FUN_020669C0
+ add r4, r0, #0x0
+ bl FUN_02066978
+ ldr r0, [sp, #0x20]
+ ldr r1, [sp, #0x24]
+ bl FUN_02015CF8
+ mov r1, #0x4
+ str r1, [sp, #0x0]
+ str r0, [sp, #0x4]
+ ldr r3, [sp, #0x8]
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ add r2, r7, #0x0
+ bl FUN_021ECF14
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ bl FUN_0206B900
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add r0, r5, #0x0
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204A120
+FUN_0204A120: ; 0x0204A120
+ push {r3-r5, lr}
+ add r5, r2, #0x0
+ add r4, r3, #0x0
+ bl FUN_0206B9B0
+ lsl r2, r5, #0x18
+ add r1, r4, #0x0
+ lsr r2, r2, #0x18
+ bl FUN_020697CC
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204A138
+FUN_0204A138: ; 0x0204A138
+ push {r3-r7, lr}
+ str r0, [sp, #0x0]
+ add r5, r1, #0x0
+ bl FUN_0206B9AC
+ add r7, r0, #0x0
+ mov r6, #0x0
+ cmp r7, #0x0
+ ble _0204A1A2
+_0204A14A:
+ ldr r0, [sp, #0x0]
+ add r1, r6, #0x0
+ bl FUN_0206B9B0
+ mov r1, #0x4c
+ mov r2, #0x0
+ add r4, r0, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ bne _0204A19C
+ add r0, r4, #0x0
+ mov r1, #0x36
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r5, r0
+ beq _0204A198
+ add r0, r4, #0x0
+ mov r1, #0x37
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r5, r0
+ beq _0204A198
+ add r0, r4, #0x0
+ mov r1, #0x38
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r5, r0
+ beq _0204A198
+ add r0, r4, #0x0
+ mov r1, #0x39
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r5, r0
+ bne _0204A19C
+_0204A198:
+ add r0, r6, #0x0
+ pop {r3-r7, pc}
+_0204A19C:
+ add r6, r6, #0x1
+ cmp r6, r7
+ blt _0204A14A
+_0204A1A2:
+ mov r0, #0xff
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204A1A8
+FUN_0204A1A8: ; 0x0204A1A8
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ bl FUN_0206B9AC
+ mov r5, #0x0
+ add r6, r0, #0x0
+ add r4, r5, #0x0
+ cmp r6, #0x0
+ ble _0204A1D2
+_0204A1BA:
+ add r0, r7, #0x0
+ add r1, r4, #0x0
+ bl FUN_0206B9B0
+ bl FUN_0204A01C
+ cmp r0, #0x0
+ beq _0204A1CC
+ add r5, r5, #0x1
+_0204A1CC:
+ add r4, r4, #0x1
+ cmp r4, r6
+ blt _0204A1BA
+_0204A1D2:
+ add r0, r5, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204A1D8
+FUN_0204A1D8: ; 0x0204A1D8
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ bl FUN_0206B9AC
+ add r5, r0, #0x0
+ mov r4, #0x0
+ cmp r5, #0x0
+ ble _0204A204
+_0204A1E8:
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ bl FUN_0206B9B0
+ add r7, r0, #0x0
+ bl FUN_0204A01C
+ cmp r0, #0x0
+ beq _0204A1FE
+ add r0, r7, #0x0
+ pop {r3-r7, pc}
+_0204A1FE:
+ add r4, r4, #0x1
+ cmp r4, r5
+ blt _0204A1E8
+_0204A204:
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0204A20C
+FUN_0204A20C: ; 0x0204A20C
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ bl FUN_0206B9AC
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ ldr r4, _0204A244 ; =0x00000000
+ beq _0204A240
+_0204A21C:
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ bl FUN_0206B9B0
+ mov r1, #0x4c
+ mov r2, #0x0
+ add r7, r0, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ bne _0204A236
+ add r0, r7, #0x0
+ pop {r3-r7, pc}
+_0204A236:
+ add r0, r4, #0x1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, r5
+ blo _0204A21C
+_0204A240:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+_0204A244: .word 0x00000000
+
+ thumb_func_start FUN_0204A248
+FUN_0204A248: ; 0x0204A248
+ push {r3, lr}
+ bl FUN_0204A1A8
+ cmp r0, #0x2
+ blt _0204A256
+ mov r0, #0x1
+ pop {r3, pc}
+_0204A256:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204A25C
+FUN_0204A25C: ; 0x0204A25C
+ push {r3-r7, lr}
+ mov r2, #0x1
+ add r1, sp, #0x0
+ add r7, r0, #0x0
+ strb r2, [r1, #0x0]
+ bl FUN_0206B9AC
+ add r6, r0, #0x0
+ mov r5, #0x0
+ cmp r6, #0x0
+ ble _0204A298
+_0204A272:
+ add r0, r7, #0x0
+ add r1, r5, #0x0
+ bl FUN_0206B9B0
+ mov r1, #0x4c
+ mov r2, #0x0
+ add r4, r0, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ bne _0204A292
+ add r0, r4, #0x0
+ mov r1, #0x19
+ add r2, sp, #0x0
+ bl FUN_02067830
+_0204A292:
+ add r5, r5, #0x1
+ cmp r5, r6
+ blt _0204A272
+_0204A298:
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204A29C
+FUN_0204A29C: ; 0x0204A29C
+ push {r3-r7, lr}
+ sub sp, #0x10
+ mov r7, #0x0
+ str r0, [sp, #0x0]
+ str r1, [sp, #0x4]
+ add r6, r7, #0x0
+ bl FUN_0206B9AC
+ add r4, r7, #0x0
+ str r0, [sp, #0x8]
+ cmp r0, #0x0
+ ble _0204A310
+_0204A2B4:
+ ldr r0, [sp, #0x0]
+ add r1, r4, #0x0
+ bl FUN_0206B9B0
+ add r5, r0, #0x0
+ bl FUN_0204A01C
+ cmp r0, #0x0
+ beq _0204A308
+ add r0, r5, #0x0
+ mov r1, #0x9f
+ mov r2, #0x0
+ bl FUN_020671BC
+ mov r1, #0x88
+ tst r0, r1
+ beq _0204A308
+ add r0, r5, #0x0
+ mov r1, #0xa2
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0xc]
+ cmp r0, #0x1
+ bls _0204A2EA
+ sub r0, r0, #0x1
+ str r0, [sp, #0xc]
+_0204A2EA:
+ add r0, r5, #0x0
+ mov r1, #0xa2
+ add r2, sp, #0xc
+ bl FUN_02067830
+ ldr r0, [sp, #0xc]
+ cmp r0, #0x1
+ bne _0204A306
+ ldr r2, [sp, #0x4]
+ add r0, r5, #0x0
+ mov r1, #0x7
+ add r6, r6, #0x1
+ bl FUN_020688E8
+_0204A306:
+ add r7, r7, #0x1
+_0204A308:
+ ldr r0, [sp, #0x8]
+ add r4, r4, #0x1
+ cmp r4, r0
+ blt _0204A2B4
+_0204A310:
+ cmp r6, #0x0
+ beq _0204A31A
+ add sp, #0x10
+ mov r0, #0x2
+ pop {r3-r7, pc}
+_0204A31A:
+ cmp r7, #0x0
+ beq _0204A324
+ add sp, #0x10
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0204A324:
+ mov r0, #0x0
+ add sp, #0x10
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204A32C
+FUN_0204A32C: ; 0x0204A32C
+ push {r3-r4, lr}
+ sub sp, #0x4
+ mov r1, #0x9f
+ mov r2, #0x0
+ add r4, r0, #0x0
+ bl FUN_020671BC
+ mov r1, #0x88
+ tst r0, r1
+ beq _0204A362
+ add r0, r4, #0x0
+ mov r1, #0xa2
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x1
+ bne _0204A362
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0x9f
+ add r2, sp, #0x0
+ bl FUN_02067830
+ add sp, #0x4
+ mov r0, #0x1
+ pop {r3-r4, pc}
+_0204A362:
+ mov r0, #0x0
+ add sp, #0x4
+ pop {r3-r4, pc}
+
+ thumb_func_start FUN_0204A368
+FUN_0204A368: ; 0x0204A368
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x54]
+ add r4, r1, #0x0
+ cmp r0, #0x0
+ bne _0204A388
+ ldr r1, _0204A38C ; =0x000080E2
+ mov r0, #0xb
+ bl FUN_02016998
+ str r0, [r5, #0x54]
+ ldr r0, [r5, #0x28]
+ ldr r1, [r5, #0x54]
+ add r2, r4, #0x0
+ bl FUN_0204A3B0
+_0204A388:
+ pop {r3-r5, pc}
+ nop
+_0204A38C: .word 0x000080E2
+
+ thumb_func_start FUN_0204A390
+FUN_0204A390: ; 0x0204A390
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x54]
+ cmp r0, #0x0
+ beq _0204A3A2
+ bl FUN_02016A18
+ mov r0, #0x0
+ str r0, [r4, #0x54]
+_0204A3A2:
+ pop {r4, pc}
+
+ thumb_func_start FUN_0204A3A4
+FUN_0204A3A4: ; 0x0204A3A4
+ ldrb r0, [r1, r0]
+ add r2, r1, #0x0
+ add r2, #0xe2
+ lsl r0, r0, #0xb
+ add r0, r2, r0
+ bx lr
+
+ thumb_func_start FUN_0204A3B0
+FUN_0204A3B0: ; 0x0204A3B0
+ push {r4-r7, lr}
+ sub sp, #0x3c
+ str r1, [sp, #0x8]
+ str r2, [sp, #0xc]
+ str r0, [sp, #0x4]
+ mov r2, #0x0
+ add r1, sp, #0x18
+ strb r2, [r1, #0x0]
+ bl FUN_020344FC
+ add r6, r0, #0x0
+ ldr r0, [sp, #0x4]
+ bl FUN_0203450C
+ str r0, [sp, #0x10]
+ mov r0, #0x0
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x10]
+ cmp r0, #0x0
+ ble _0204A410
+ ldr r7, [sp, #0x14]
+_0204A3DA:
+ mov r5, #0x0
+ cmp r6, #0x0
+ ble _0204A402
+_0204A3E0:
+ add r0, r5, r7
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ ldr r1, [sp, #0x4]
+ add r0, r4, #0x0
+ bl FUN_020344D8
+ add r1, sp, #0x18
+ add r1, #0x2
+ add r2, sp, #0x18
+ bl FUN_0204A45C
+ ldr r1, [sp, #0x8]
+ add r5, r5, #0x1
+ strb r0, [r1, r4]
+ cmp r5, r6
+ blt _0204A3E0
+_0204A402:
+ ldr r0, [sp, #0x14]
+ add r7, r7, r6
+ add r1, r0, #0x1
+ ldr r0, [sp, #0x10]
+ str r1, [sp, #0x14]
+ cmp r1, r0
+ blt _0204A3DA
+_0204A410:
+ mov r0, #0x43
+ mov r1, #0xb
+ bl FUN_02006670
+ add r7, r0, #0x0
+ ldr r0, [sp, #0xc]
+ mov r6, #0x0
+ cmp r0, #0x0
+ ble _0204A452
+ ldr r0, [sp, #0x8]
+ add r4, sp, #0x18
+ add r0, #0xe2
+ add r4, #0x2
+ add r5, r6, #0x0
+ str r0, [sp, #0x8]
+_0204A42E:
+ ldr r0, [sp, #0x8]
+ lsl r1, r5, #0x1
+ add r0, r0, r1
+ str r0, [sp, #0x0]
+ ldrh r1, [r4, #0x0]
+ mov r2, #0x10
+ add r0, r7, #0x0
+ lsl r3, r2, #0x7
+ bl FUN_02006814
+ mov r0, #0x1
+ lsl r0, r0, #0xa
+ add r5, r5, r0
+ ldr r0, [sp, #0xc]
+ add r6, r6, #0x1
+ add r4, r4, #0x2
+ cmp r6, r0
+ blt _0204A42E
+_0204A452:
+ add r0, r7, #0x0
+ bl FUN_020066F4
+ add sp, #0x3c
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_0204A45C
+FUN_0204A45C: ; 0x0204A45C
+ push {r3-r7, lr}
+ add r7, r2, #0x0
+ add r5, r0, #0x0
+ ldrb r0, [r7, #0x0]
+ add r6, r1, #0x0
+ mov r4, #0x0
+ cmp r0, #0x0
+ bls _0204A482
+_0204A46C:
+ lsl r1, r4, #0x1
+ ldrh r1, [r6, r1]
+ cmp r5, r1
+ bne _0204A478
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+_0204A478:
+ add r1, r4, #0x1
+ lsl r1, r1, #0x18
+ lsr r4, r1, #0x18
+ cmp r4, r0
+ blo _0204A46C
+_0204A482:
+ cmp r4, #0x10
+ blo _0204A48A
+ bl ErrorHandling
+_0204A48A:
+ lsl r0, r4, #0x1
+ strh r5, [r6, r0]
+ ldrb r0, [r7, #0x0]
+ add r0, r0, #0x1
+ strb r0, [r7, #0x0]
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0204A498
+FUN_0204A498: ; 0x0204A498
+ cmp r0, r1
+ blt _0204A4A0
+ sub r0, r0, r1
+ bx lr
+_0204A4A0:
+ sub r0, r1, r0
+ bx lr
+
+ thumb_func_start FUN_0204A4A4
+FUN_0204A4A4: ; 0x0204A4A4
+ push {r3-r7, lr}
+ sub sp, #0x38
+ add r4, r2, #0x0
+ add r6, r3, #0x0
+ add r5, r0, #0x0
+ mov r0, #0x0
+ str r4, [sp, #0x2c]
+ str r6, [sp, #0x34]
+ str r0, [sp, #0x10]
+ str r0, [sp, #0x30]
+ ldr r0, [r5, #0x24]
+ str r1, [sp, #0x4]
+ str r0, [sp, #0x8]
+ ldr r0, [r5, #0x28]
+ bl FUN_020344FC
+ str r0, [sp, #0x24]
+ lsl r0, r0, #0x5
+ str r0, [sp, #0xc]
+ asr r0, r4, #0xf
+ lsr r0, r0, #0x10
+ add r0, r4, r0
+ asr r7, r0, #0x10
+ asr r0, r6, #0xf
+ lsr r0, r0, #0x10
+ add r0, r6, r0
+ asr r0, r0, #0x10
+ str r0, [sp, #0x1c]
+ add r2, r5, #0x0
+ add r2, #0x9c
+ ldr r1, [sp, #0x1c]
+ ldr r2, [r2, #0x0]
+ add r0, r7, #0x0
+ add r3, sp, #0x28
+ bl FUN_021F4520
+ str r0, [sp, #0x20]
+ lsr r0, r7, #0x5
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x1c]
+ ldr r1, [sp, #0x1c]
+ lsr r0, r0, #0x5
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x18]
+ lsl r0, r0, #0x5
+ add r0, #0x10
+ lsl r0, r0, #0x10
+ sub r0, r4, r0
+ str r0, [sp, #0x2c]
+ ldr r0, [sp, #0x14]
+ lsl r0, r0, #0x5
+ add r0, #0x10
+ lsl r0, r0, #0x10
+ sub r0, r6, r0
+ str r0, [sp, #0x34]
+ ldr r0, [sp, #0xc]
+ mul r0, r1
+ ldr r1, [sp, #0xc]
+ add r0, r7, r0
+ bl FUN_021EF620
+ ldr r2, [sp, #0x14]
+ add r1, r0, #0x0
+ add r3, r2, #0x0
+ ldr r0, [sp, #0x24]
+ ldr r2, [sp, #0x8]
+ mul r3, r0
+ ldr r0, [sp, #0x18]
+ add r0, r0, r3
+ bl FUN_021EF654
+ add r1, r0, #0x0
+ cmp r1, #0x3
+ bls _0204A53C
+ mov r4, #0x0
+ b _0204A558
+_0204A53C:
+ lsl r1, r1, #0x18
+ ldr r0, [sp, #0x8]
+ lsr r1, r1, #0x18
+ bl FUN_021EF8C8
+ add r3, r0, #0x0
+ add r0, sp, #0x30
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x4]
+ ldr r1, [sp, #0x2c]
+ ldr r2, [sp, #0x34]
+ bl FUN_021F3DA4
+ add r4, r0, #0x0
+_0204A558:
+ ldr r0, [sp, #0x20]
+ cmp r0, #0x0
+ beq _0204A5A4
+ add r0, sp, #0x28
+ add r5, #0x9c
+ ldrb r0, [r0, #0x0]
+ ldr r1, [r5, #0x0]
+ bl FUN_021F4568
+ add r5, r0, #0x0
+ cmp r4, #0x0
+ beq _0204A59E
+ ldr r0, [sp, #0x30]
+ str r0, [sp, #0x10]
+ cmp r5, r0
+ bgt _0204A57C
+ mov r1, #0x1
+ b _0204A5B2
+_0204A57C:
+ ldr r1, [sp, #0x4]
+ bl FUN_0204A498
+ add r4, r0, #0x0
+ ldr r1, [sp, #0x4]
+ add r0, r5, #0x0
+ bl FUN_0204A498
+ cmp r4, r0
+ bgt _0204A598
+ ldr r0, [sp, #0x30]
+ mov r1, #0x1
+ str r0, [sp, #0x10]
+ b _0204A5B2
+_0204A598:
+ str r5, [sp, #0x10]
+ mov r1, #0x2
+ b _0204A5B2
+_0204A59E:
+ mov r1, #0x2
+ str r5, [sp, #0x10]
+ b _0204A5B2
+_0204A5A4:
+ cmp r4, #0x0
+ beq _0204A5B0
+ ldr r0, [sp, #0x30]
+ mov r1, #0x1
+ str r0, [sp, #0x10]
+ b _0204A5B2
+_0204A5B0:
+ mov r1, #0x0
+_0204A5B2:
+ ldr r0, [sp, #0x50]
+ cmp r0, #0x0
+ beq _0204A5BA
+ strb r1, [r0, #0x0]
+_0204A5BA:
+ ldr r0, [sp, #0x10]
+ add sp, #0x38
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0204A5C0
+FUN_0204A5C0: ; 0x0204A5C0
+ push {r3, lr}
+ asr r1, r2, #0xf
+ lsr r1, r1, #0x10
+ add r1, r2, r1
+ asr r2, r3, #0xf
+ lsr r2, r2, #0x10
+ add r2, r3, r2
+ ldr r0, [r0, #0x24]
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ mov r3, #0x0
+ bl FUN_021EF844
+ ldr r1, [sp, #0x8]
+ cmp r1, #0x0
+ beq _0204A5EE
+ cmp r0, #0x0
+ beq _0204A5E8
+ mov r1, #0x1
+ b _0204A5EA
+_0204A5E8:
+ mov r1, #0x0
+_0204A5EA:
+ ldr r0, [sp, #0x8]
+ strb r1, [r0, #0x0]
+_0204A5EE:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204A5F4
+FUN_0204A5F4: ; 0x0204A5F4
+ push {r3-r7, lr}
+ ldr r7, [r0, #0x24]
+ add r4, r3, #0x0
+ add r0, r7, #0x0
+ add r3, sp, #0x0
+ add r5, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_021EF844
+ cmp r0, #0x0
+ bne _0204A612
+ mov r0, #0xff
+ strh r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0204A612:
+ add r1, sp, #0x0
+ ldrb r1, [r1, #0x0]
+ add r0, r7, #0x0
+ bl FUN_021EF8DC
+ lsr r2, r5, #0x1f
+ lsl r1, r5, #0x1b
+ sub r1, r1, r2
+ mov r3, #0x1b
+ ror r1, r3
+ add r1, r2, r1
+ lsr r5, r6, #0x1f
+ lsl r2, r6, #0x1b
+ sub r2, r2, r5
+ ror r2, r3
+ add r2, r5, r2
+ lsl r2, r2, #0x5
+ add r1, r1, r2
+ lsl r1, r1, #0x1
+ ldrh r0, [r0, r1]
+ strh r0, [r4, #0x0]
+ mov r0, #0x1
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0204A640
+FUN_0204A640: ; 0x0204A640
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ ldr r0, [r6, #0x28]
+ add r4, r2, #0x0
+ add r5, r1, #0x0
+ add r7, r3, #0x0
+ bl FUN_020344FC
+ asr r2, r4, #0x4
+ asr r1, r5, #0x4
+ lsr r2, r2, #0x1b
+ lsr r1, r1, #0x1b
+ add r2, r4, r2
+ add r1, r5, r1
+ asr r2, r2, #0x5
+ asr r1, r1, #0x5
+ mul r0, r2
+ add r0, r1, r0
+ ldr r1, [r6, #0x54]
+ bl FUN_0204A3A4
+ lsr r2, r5, #0x1f
+ lsl r1, r5, #0x1b
+ sub r1, r1, r2
+ mov r3, #0x1b
+ ror r1, r3
+ add r1, r2, r1
+ lsr r5, r4, #0x1f
+ lsl r2, r4, #0x1b
+ sub r2, r2, r5
+ ror r2, r3
+ add r2, r5, r2
+ lsl r2, r2, #0x5
+ add r1, r1, r2
+ lsl r1, r1, #0x1
+ ldrh r0, [r0, r1]
+ strh r0, [r7, #0x0]
+ mov r0, #0x1
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204A690
+FUN_0204A690: ; 0x0204A690
+ push {r3, lr}
+ cmp r1, #0x0
+ bne _0204A69C
+ ldr r1, _0204A6AC ; =0x020F4708
+ str r1, [r0, #0x0]
+ pop {r3, pc}
+_0204A69C:
+ cmp r1, #0x1
+ bne _0204A6A6
+ ldr r1, _0204A6B0 ; =0x020F4710
+ str r1, [r0, #0x0]
+ pop {r3, pc}
+_0204A6A6:
+ bl ErrorHandling
+ pop {r3, pc}
+ .balign 4
+_0204A6AC: .word 0x020F4708
+_0204A6B0: .word 0x020F4710
+
+ thumb_func_start FUN_0204A6B4
+FUN_0204A6B4: ; 0x0204A6B4
+ push {r3-r4, lr}
+ sub sp, #0x4
+ ldr r4, [r0, #0x58]
+ add r3, sp, #0x0
+ ldr r4, [r4, #0x4]
+ blx r4
+ cmp r0, #0x0
+ beq _0204A6DA
+ add r0, sp, #0x0
+ ldrh r0, [r0, #0x0]
+ asr r0, r0, #0xf
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ mov r0, #0x1
+ and r1, r0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ cmp r1, #0x1
+ beq _0204A6DC
+_0204A6DA:
+ mov r0, #0x0
+_0204A6DC:
+ add sp, #0x4
+ pop {r3-r4, pc}
+
+ thumb_func_start FUN_0204A6E0
+FUN_0204A6E0: ; 0x0204A6E0
+ push {r3-r4, lr}
+ sub sp, #0x4
+ ldr r4, [r0, #0x58]
+ add r3, sp, #0x0
+ ldr r4, [r4, #0x4]
+ blx r4
+ cmp r0, #0x0
+ beq _0204A700
+ add r0, sp, #0x0
+ ldrh r0, [r0, #0x0]
+ add sp, #0x4
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ pop {r3-r4, pc}
+_0204A700:
+ mov r0, #0xff
+ add sp, #0x4
+ pop {r3-r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204A708
+FUN_0204A708: ; 0x0204A708
+ push {r3-r4, lr}
+ sub sp, #0x4
+ ldr r4, [sp, #0x10]
+ str r4, [sp, #0x0]
+ ldr r4, [r0, #0x58]
+ ldr r4, [r4, #0x0]
+ blx r4
+ add sp, #0x4
+ pop {r3-r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204A71C
+FUN_0204A71C: ; 0x0204A71C
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ ldr r1, [sp, #0x10]
+ mov r5, #0x2
+ str r1, [sp, #0x0]
+ ldr r1, [r4, #0x4]
+ lsl r2, r2, #0x10
+ lsl r5, r5, #0xe
+ lsl r3, r3, #0x10
+ add r2, r2, r5
+ add r3, r3, r5
+ bl FUN_0204A708
+ ldr r1, [r4, #0x4]
+ cmp r0, r1
+ bge _0204A744
+ mov r4, #0x0
+ add r2, r1, #0x0
+ mvn r4, r4
+ b _0204A754
+_0204A744:
+ cmp r0, r1
+ ble _0204A750
+ add r2, r0, #0x0
+ add r0, r1, #0x0
+ mov r4, #0x1
+ b _0204A754
+_0204A750:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0204A754:
+ sub r1, r2, r0
+ mov r0, #0x5
+ lsl r0, r0, #0xe
+ cmp r1, r0
+ blt _0204A768
+ cmp r4, #0x0
+ bne _0204A76A
+ bl ErrorHandling
+ b _0204A76A
+_0204A768:
+ mov r4, #0x0
+_0204A76A:
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204A770
+FUN_0204A770: ; 0x0204A770
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r6, sp, #0x4
+ add r5, r0, #0x0
+ add r4, r2, #0x0
+ add r7, r3, #0x0
+ str r6, [sp, #0x0]
+ bl FUN_0204A71C
+ ldr r1, [sp, #0x20]
+ cmp r1, #0x0
+ beq _0204A78A
+ strb r0, [r1, #0x0]
+_0204A78A:
+ cmp r0, #0x0
+ bne _0204A7C2
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r7, #0x0
+ bl FUN_0204A6B4
+ add r6, r0, #0x0
+ bne _0204A7BC
+ add r0, sp, #0x4
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x2
+ bne _0204A7BC
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r7, #0x0
+ bl FUN_0204A6E0
+ bl FUN_020548B4
+ cmp r0, #0x0
+ beq _0204A7BC
+ add sp, #0x8
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0204A7BC:
+ add sp, #0x8
+ add r0, r6, #0x0
+ pop {r3-r7, pc}
+_0204A7C2:
+ mov r0, #0x1
+ add sp, #0x8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0204A7C8
+FUN_0204A7C8: ; 0x0204A7C8
+ push {r3-r7, lr}
+ sub sp, #0x10
+ add r6, sp, #0x8
+ add r5, r0, #0x0
+ str r1, [sp, #0x4]
+ add r4, r2, #0x0
+ add r7, r3, #0x0
+ str r6, [sp, #0x0]
+ bl FUN_0204A71C
+ ldr r1, [sp, #0x28]
+ cmp r1, #0x0
+ beq _0204A7E4
+ strb r0, [r1, #0x0]
+_0204A7E4:
+ cmp r0, #0x0
+ bne _0204A83A
+ add r0, sp, #0xc
+ str r0, [sp, #0x0]
+ ldr r3, [sp, #0x4]
+ add r0, r5, #0x0
+ ldr r3, [r3, #0x4]
+ add r1, r4, #0x0
+ add r2, r7, #0x0
+ bl FUN_0205CE00
+ cmp r0, #0x0
+ bne _0204A834
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r7, #0x0
+ bl FUN_0204A6B4
+ str r0, [sp, #0xc]
+ cmp r0, #0x0
+ bne _0204A82E
+ add r0, sp, #0x8
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x2
+ bne _0204A82E
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r7, #0x0
+ bl FUN_0204A6E0
+ bl FUN_020548B4
+ cmp r0, #0x0
+ beq _0204A82E
+ add sp, #0x10
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0204A82E:
+ ldr r0, [sp, #0xc]
+ add sp, #0x10
+ pop {r3-r7, pc}
+_0204A834:
+ ldr r0, [sp, #0xc]
+ add sp, #0x10
+ pop {r3-r7, pc}
+_0204A83A:
+ mov r0, #0x1
+ add sp, #0x10
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0204A840
+FUN_0204A840: ; 0x0204A840
+ push {r3-r7, lr}
+ add r6, r0, r2
+ ldr r0, [sp, #0x18]
+ add r4, r1, r3
+ add r0, r6, r0
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x1c]
+ ldr r5, [sp, #0x20]
+ add r7, r4, r0
+ cmp r6, #0x0
+ blt _0204A864
+ cmp r4, #0x0
+ blt _0204A864
+ ldr r0, [sp, #0x0]
+ cmp r0, #0x0
+ blt _0204A864
+ cmp r7, #0x0
+ bge _0204A868
+_0204A864:
+ bl ErrorHandling
+_0204A868:
+ lsl r0, r6, #0x10
+ str r0, [r5, #0x0]
+ lsl r0, r4, #0x10
+ str r0, [r5, #0x4]
+ ldr r0, [sp, #0x0]
+ lsl r0, r0, #0x10
+ str r0, [r5, #0x8]
+ lsl r0, r7, #0x10
+ str r0, [r5, #0xc]
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0204A87C
+FUN_0204A87C: ; 0x0204A87C
+ push {r4-r5, lr}
+ sub sp, #0xc
+ add r3, r0, #0x0
+ add r5, r1, #0x0
+ add r4, r2, #0x0
+ add r0, sp, #0x0
+ add r1, r3, #0x0
+ bl FUN_021E7EA0
+ ldr r1, [sp, #0x0]
+ ldr r0, [r4, #0x0]
+ ldr r2, [sp, #0x8]
+ add r0, r1, r0
+ str r0, [sp, #0x0]
+ ldr r1, [r4, #0x8]
+ add r2, r2, r1
+ str r2, [sp, #0x8]
+ ldr r1, [r5, #0x0]
+ cmp r1, r0
+ bgt _0204A8BC
+ ldr r1, [r5, #0x8]
+ cmp r0, r1
+ bgt _0204A8BC
+ ldr r0, [r5, #0x4]
+ cmp r0, r2
+ bgt _0204A8BC
+ ldr r0, [r5, #0xc]
+ cmp r2, r0
+ bgt _0204A8BC
+ add sp, #0xc
+ mov r0, #0x1
+ pop {r4-r5, pc}
+_0204A8BC:
+ mov r0, #0x0
+ add sp, #0xc
+ pop {r4-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204A8C4
+FUN_0204A8C4: ; 0x0204A8C4
+ push {r4-r7, lr}
+ sub sp, #0x1c
+ str r0, [sp, #0x0]
+ mov r0, #0x0
+ add r6, r1, #0x0
+ add r7, r2, #0x0
+ str r3, [sp, #0x4]
+ str r0, [sp, #0x8]
+_0204A8D4:
+ ldr r1, [sp, #0x0]
+ ldr r0, [sp, #0x8]
+ ldr r1, [r1, #0x24]
+ add r2, sp, #0xc
+ bl FUN_021EF604
+ ldr r0, [sp, #0x0]
+ ldr r1, [sp, #0x8]
+ ldr r0, [r0, #0x24]
+ bl FUN_021EF824
+ add r4, r0, #0x0
+ ldr r0, [sp, #0x0]
+ ldr r0, [r0, #0x28]
+ bl FUN_020344FC
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r2, sp, #0x10
+ bl FUN_0204AAD4
+ mov r5, #0x0
+_0204A900:
+ ldr r0, [sp, #0xc]
+ add r1, r5, #0x0
+ bl FUN_021E7ED0
+ add r1, r7, #0x0
+ add r2, sp, #0x10
+ add r4, r0, #0x0
+ bl FUN_0204A87C
+ cmp r0, #0x0
+ beq _0204A92E
+ add r0, r4, #0x0
+ bl FUN_021E7EC4
+ cmp r0, r6
+ bne _0204A92E
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ beq _0204A928
+ str r4, [r0, #0x0]
+_0204A928:
+ add sp, #0x1c
+ mov r0, #0x1
+ pop {r4-r7, pc}
+_0204A92E:
+ add r0, r5, #0x1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #0x20
+ blo _0204A900
+ ldr r0, [sp, #0x8]
+ add r0, r0, #0x1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x8]
+ cmp r0, #0x4
+ blo _0204A8D4
+ mov r0, #0x0
+ add sp, #0x1c
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_0204A94C
+FUN_0204A94C: ; 0x0204A94C
+ push {r4-r7, lr}
+ sub sp, #0x1c
+ str r0, [sp, #0x0]
+ mov r0, #0x0
+ add r5, r1, #0x0
+ add r4, r2, #0x0
+ str r3, [sp, #0x4]
+ str r0, [sp, #0x8]
+_0204A95C:
+ ldr r1, [sp, #0x0]
+ ldr r0, [sp, #0x8]
+ ldr r1, [r1, #0x24]
+ add r2, sp, #0xc
+ bl FUN_021EF604
+ ldr r0, [sp, #0x0]
+ ldr r1, [sp, #0x8]
+ ldr r0, [r0, #0x24]
+ bl FUN_021EF824
+ add r6, r0, #0x0
+ ldr r0, [sp, #0x0]
+ ldr r0, [r0, #0x28]
+ bl FUN_020344FC
+ add r1, r0, #0x0
+ add r0, r6, #0x0
+ add r2, sp, #0x10
+ bl FUN_0204AAD4
+ mov r6, #0x0
+_0204A988:
+ ldr r0, [sp, #0xc]
+ add r1, r6, #0x0
+ bl FUN_021E7ED0
+ ldr r1, [sp, #0x4]
+ add r2, sp, #0x10
+ add r7, r0, #0x0
+ bl FUN_0204A87C
+ cmp r0, #0x0
+ beq _0204A9D2
+ add r0, r7, #0x0
+ bl FUN_021E7EC4
+ mov r1, #0x0
+ cmp r4, #0x0
+ bls _0204A9D2
+_0204A9AA:
+ lsl r2, r1, #0x2
+ ldr r2, [r5, r2]
+ cmp r0, r2
+ bne _0204A9C8
+ ldr r1, [sp, #0x30]
+ cmp r1, #0x0
+ beq _0204A9BA
+ str r7, [r1, #0x0]
+_0204A9BA:
+ ldr r1, [sp, #0x34]
+ cmp r1, #0x0
+ beq _0204A9C2
+ str r0, [r1, #0x0]
+_0204A9C2:
+ add sp, #0x1c
+ mov r0, #0x1
+ pop {r4-r7, pc}
+_0204A9C8:
+ add r1, r1, #0x1
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ cmp r1, r4
+ blo _0204A9AA
+_0204A9D2:
+ add r0, r6, #0x1
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ cmp r6, #0x20
+ blo _0204A988
+ ldr r0, [sp, #0x8]
+ add r0, r0, #0x1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x8]
+ cmp r0, #0x4
+ blo _0204A95C
+ mov r0, #0x0
+ add sp, #0x1c
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_0204A9F0
+FUN_0204A9F0: ; 0x0204A9F0
+ push {r3-r7, lr}
+ sub sp, #0x10
+ str r0, [sp, #0x0]
+ add r5, r1, #0x0
+ str r2, [sp, #0x4]
+ str r3, [sp, #0x8]
+ mov r7, #0x0
+_0204A9FE:
+ ldr r1, [sp, #0x0]
+ add r0, r7, #0x0
+ ldr r1, [r1, #0x24]
+ add r2, sp, #0xc
+ bl FUN_021EF604
+ mov r4, #0x0
+_0204AA0C:
+ ldr r0, [sp, #0xc]
+ add r1, r4, #0x0
+ bl FUN_021E7ED0
+ add r6, r0, #0x0
+ bl FUN_021E7EC4
+ cmp r0, r5
+ bne _0204AA40
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ beq _0204AA26
+ str r6, [r0, #0x0]
+_0204AA26:
+ ldr r0, [sp, #0x8]
+ cmp r0, #0x0
+ beq _0204AA3A
+ ldr r0, [sp, #0x0]
+ add r1, r7, #0x0
+ ldr r0, [r0, #0x24]
+ bl FUN_021EF824
+ ldr r1, [sp, #0x8]
+ str r0, [r1, #0x0]
+_0204AA3A:
+ add sp, #0x10
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0204AA40:
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0x20
+ blo _0204AA0C
+ add r0, r7, #0x1
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+ cmp r7, #0x4
+ blo _0204A9FE
+ mov r0, #0x0
+ add sp, #0x10
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204AA5C
+FUN_0204AA5C: ; 0x0204AA5C
+ push {r3-r7, lr}
+ sub sp, #0x10
+ str r0, [sp, #0x0]
+ mov r0, #0x0
+ add r5, r1, #0x0
+ add r4, r2, #0x0
+ str r3, [sp, #0x4]
+ str r0, [sp, #0x8]
+_0204AA6C:
+ ldr r1, [sp, #0x0]
+ ldr r0, [sp, #0x8]
+ ldr r1, [r1, #0x24]
+ add r2, sp, #0xc
+ bl FUN_021EF604
+ mov r6, #0x0
+_0204AA7A:
+ ldr r0, [sp, #0xc]
+ add r1, r6, #0x0
+ bl FUN_021E7ED0
+ add r7, r0, #0x0
+ bl FUN_021E7EC4
+ mov r1, #0x0
+ cmp r4, #0x0
+ bls _0204AAB6
+_0204AA8E:
+ lsl r2, r1, #0x2
+ ldr r2, [r5, r2]
+ cmp r0, r2
+ bne _0204AAAC
+ ldr r1, [sp, #0x4]
+ cmp r1, #0x0
+ beq _0204AA9E
+ str r7, [r1, #0x0]
+_0204AA9E:
+ ldr r1, [sp, #0x28]
+ cmp r1, #0x0
+ beq _0204AAA6
+ str r0, [r1, #0x0]
+_0204AAA6:
+ add sp, #0x10
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0204AAAC:
+ add r1, r1, #0x1
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ cmp r1, r4
+ blo _0204AA8E
+_0204AAB6:
+ add r0, r6, #0x1
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ cmp r6, #0x20
+ blo _0204AA7A
+ ldr r0, [sp, #0x8]
+ add r0, r0, #0x1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x8]
+ cmp r0, #0x4
+ blo _0204AA6C
+ mov r0, #0x0
+ add sp, #0x10
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0204AAD4
+FUN_0204AAD4: ; 0x0204AAD4
+ push {r4-r6, lr}
+ add r4, r2, #0x0
+ mov r2, #0x1
+ lsl r2, r2, #0x14
+ str r2, [r4, #0x0]
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ str r2, [r4, #0x8]
+ blx _s32_div_f
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ ldr r0, [r4, #0x0]
+ lsl r1, r1, #0x15
+ add r0, r0, r1
+ str r0, [r4, #0x0]
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ blx _s32_div_f
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ ldr r1, [r4, #0x8]
+ lsl r0, r0, #0x15
+ add r0, r1, r0
+ str r0, [r4, #0x8]
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204AB0C
+FUN_0204AB0C: ; 0x0204AB0C
+ push {r3, lr}
+ bl FUN_0200541C
+ bl FUN_02004810
+ mov r0, #0x0
+ bl FUN_0200415C
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204AB20
+FUN_0204AB20: ; 0x0204AB20
+ push {r4, lr}
+ ldr r0, [r0, #0xc]
+ add r4, r1, #0x0
+ bl FUN_02034E30
+ bl FUN_02034DE8
+ strh r4, [r0, #0x0]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204AB34
+FUN_0204AB34: ; 0x0204AB34
+ push {r3, lr}
+ ldr r0, [r0, #0xc]
+ bl FUN_02034E30
+ bl FUN_02034DE8
+ ldrh r0, [r0, #0x0]
+ pop {r3, pc}
+
+ thumb_func_start FUN_0204AB44
+FUN_0204AB44: ; 0x0204AB44
+ push {r3, lr}
+ ldr r0, [r0, #0xc]
+ bl FUN_02034E30
+ bl FUN_02034DE8
+ mov r1, #0x0
+ strh r1, [r0, #0x0]
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204AB58
+FUN_0204AB58: ; 0x0204AB58
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x38]
+ add r4, r1, #0x0
+ bl FUN_020553C4
+ cmp r0, #0x2
+ bne _0204AB6C
+ ldr r0, _0204ABA0 ; =0x0000047F
+ pop {r3-r5, pc}
+_0204AB6C:
+ add r0, r5, #0x0
+ add r0, #0x90
+ ldr r0, [r0, #0x0]
+ bl FUN_0205E128
+ cmp r0, #0x1
+ bne _0204AB7E
+ ldr r0, _0204ABA4 ; =0x0000047E
+ pop {r3-r5, pc}
+_0204AB7E:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0204ABA8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0204AB34
+ cmp r0, #0x0
+ beq _0204AB9A
+ add r0, r5, #0x0
+ bl FUN_0204AB34
+ add r4, r0, #0x0
+_0204AB9A:
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ nop
+_0204ABA0: .word 0x0000047F
+_0204ABA4: .word 0x0000047E
+
+ thumb_func_start FUN_0204ABA8
+FUN_0204ABA8: ; 0x0204ABA8
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_0201277C
+ cmp r0, #0x0
+ bne _0204ABBE
+ add r0, r4, #0x0
+ bl FUN_020347B0
+ b _0204ABC4
+_0204ABBE:
+ add r0, r4, #0x0
+ bl FUN_020347C4
+_0204ABC4:
+ add r6, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_020462AC
+ add r1, r4, #0x0
+ bl FUN_0205EF20
+ cmp r0, #0x0
+ beq _0204ABD8
+ add r6, r0, #0x0
+_0204ABD8:
+ add r0, r6, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0204ABDC
+FUN_0204ABDC: ; 0x0204ABDC
+ push {r4-r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x38]
+ add r4, r1, #0x0
+ add r7, r2, #0x0
+ bl FUN_020553C4
+ add r6, r0, #0x0
+ bl FUN_02004104
+ cmp r0, #0x1
+ bne _0204ABFC
+ add sp, #0x14
+ mov r0, #0x0
+ pop {r4-r7, pc}
+_0204ABFC:
+ add r0, r5, #0x0
+ bl FUN_02004124
+ cmp r4, r0
+ bne _0204AC0C
+ add sp, #0x14
+ mov r0, #0x0
+ pop {r4-r7, pc}
+_0204AC0C:
+ bl FUN_02004810
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ add r2, sp, #0x10
+ add r3, sp, #0xc
+ bl FUN_0204ACCC
+ cmp r6, #0x1
+ beq _0204AC22
+ bne _0204AC3A
+_0204AC22:
+ mov r0, #0x1e
+ str r0, [sp, #0x0]
+ mov r0, #0x0
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ ldr r2, [sp, #0x10]
+ ldr r3, [sp, #0xc]
+ mov r0, #0x4
+ add r1, r4, #0x0
+ bl FUN_02004E08
+ b _0204AC4C
+_0204AC3A:
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ str r0, [sp, #0x4]
+ ldr r2, [sp, #0x10]
+ ldr r3, [sp, #0xc]
+ mov r0, #0x4
+ add r1, r4, #0x0
+ bl FUN_02004DCC
+_0204AC4C:
+ mov r0, #0x1
+ add sp, #0x14
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204AC54
+FUN_0204AC54: ; 0x0204AC54
+ push {r4-r6, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_02004104
+ cmp r0, #0x1
+ bne _0204AC6C
+ add sp, #0x10
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_0204AC6C:
+ add r0, r5, #0x0
+ bl FUN_02004124
+ cmp r4, r0
+ bne _0204AC7C
+ add sp, #0x10
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_0204AC7C:
+ bl FUN_02004810
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, sp, #0xc
+ add r3, sp, #0x8
+ bl FUN_0204ACCC
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ mov r0, #0x0
+ str r0, [sp, #0x4]
+ ldr r2, [sp, #0xc]
+ ldr r3, [sp, #0x8]
+ mov r0, #0x4
+ add r1, r4, #0x0
+ bl FUN_02004DCC
+ mov r0, #0x1
+ add sp, #0x10
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204ACA8
+FUN_0204ACA8: ; 0x0204ACA8
+ push {r3-r7, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ bl FUN_0204AB58
+ add r7, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0204AD44
+ bl FUN_0200414C
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ add r2, r6, #0x0
+ bl FUN_0204AC54
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0204ACCC
+FUN_0204ACCC: ; 0x0204ACCC
+ cmp r1, #0x3
+ bhi _0204AD0A
+ add r0, r1, r1
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0204ACDC: ; jump table (using 16-bit offset)
+ .short _0204ACE4 - _0204ACDC - 2; case 0
+ .short _0204ACEE - _0204ACDC - 2; case 1
+ .short _0204ACF8 - _0204ACDC - 2; case 2
+ .short _0204AD02 - _0204ACDC - 2; case 3
+_0204ACE4:
+ mov r0, #0x1e
+ str r0, [r2, #0x0]
+ mov r0, #0x0
+ str r0, [r3, #0x0]
+ bx lr
+_0204ACEE:
+ mov r0, #0x3c
+ str r0, [r2, #0x0]
+ mov r0, #0x0
+ str r0, [r3, #0x0]
+ bx lr
+_0204ACF8:
+ mov r0, #0x3c
+ str r0, [r2, #0x0]
+ mov r0, #0xf
+ str r0, [r3, #0x0]
+ bx lr
+_0204AD02:
+ mov r0, #0x3c
+ str r0, [r2, #0x0]
+ mov r0, #0x0
+ str r0, [r3, #0x0]
+_0204AD0A:
+ bx lr
+
+ thumb_func_start FUN_0204AD0C
+FUN_0204AD0C: ; 0x0204AD0C
+ push {r3-r5, lr}
+ mov r1, #0x1
+ bl FUN_0206AC74
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ ldr r0, _0204AD38 ; =0x0000044D
+ ldr r2, _0204AD3C ; =0x020F4718
+ mov r4, #0x0
+_0204AD1E:
+ lsl r3, r4, #0x2
+ ldrh r1, [r2, r3]
+ cmp r5, r1
+ bne _0204AD2C
+ ldr r0, _0204AD40 ; =0x020F471A
+ ldrh r0, [r0, r3]
+ pop {r3-r5, pc}
+_0204AD2C:
+ add r1, r4, #0x1
+ lsl r1, r1, #0x10
+ lsr r4, r1, #0x10
+ cmp r4, #0x4e
+ blo _0204AD1E
+ pop {r3-r5, pc}
+ .balign 4
+_0204AD38: .word 0x0000044D
+_0204AD3C: .word 0x020F4718
+_0204AD40: .word 0x020F471A
+
+ thumb_func_start FUN_0204AD44
+FUN_0204AD44: ; 0x0204AD44
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_0201277C
+ cmp r0, #0x0
+ bne _0204AD58
+ add r0, r4, #0x0
+ bl FUN_020347B0
+ pop {r4, pc}
+_0204AD58:
+ add r0, r4, #0x0
+ bl FUN_020347C4
+ pop {r4, pc}
+
+ thumb_func_start FUN_0204AD60
+FUN_0204AD60: ; 0x0204AD60
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ bl FUN_02004104
+ cmp r0, #0x1
+ beq _0204AD88
+ bl FUN_02004124
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_0204ABA8
+ cmp r4, r0
+ beq _0204AD88
+ mov r0, #0x0
+ mov r1, #0x28
+ bl FUN_020053CC
+_0204AD88:
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204AD8C
+FUN_0204AD8C: ; 0x0204AD8C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_02004104
+ cmp r0, #0x1
+ beq _0204ADB8
+ mov r0, #0x0
+ bl FUN_0200415C
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0204ABA8
+ add r4, r0, #0x0
+ bl FUN_0200414C
+ mov r0, #0x4
+ add r1, r4, #0x0
+ mov r2, #0x1
+ bl FUN_0200433C
+_0204ADB8:
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204ADBC
+FUN_0204ADBC: ; 0x0204ADBC
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_0204AB58
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0204ABA8
+ bl FUN_0200414C
+ mov r0, #0x4
+ add r1, r6, #0x0
+ mov r2, #0x1
+ bl FUN_0200433C
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0204ADE0
+FUN_0204ADE0: ; 0x0204ADE0
+ mov r3, #0x0
+ add r2, r3, #0x0
+_0204ADE4:
+ lsl r1, r3, #0x2
+ add r1, r0, r1
+ strb r2, [r1, #0x6]
+ strb r2, [r1, #0x7]
+ strb r2, [r1, #0x8]
+ strb r2, [r1, #0x9]
+ add r1, r3, #0x1
+ lsl r1, r1, #0x18
+ lsr r3, r1, #0x18
+ cmp r3, #0x6
+ blo _0204ADE4
+ str r2, [r0, #0x0]
+ strb r2, [r0, #0x4]
+ strb r2, [r0, #0x5]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0204AE04
+FUN_0204AE04: ; 0x0204AE04
+ push {r4, lr}
+ add r4, r0, #0x0
+ asr r0, r1, #0x4
+ lsr r0, r0, #0x1b
+ add r0, r1, r0
+ asr r1, r2, #0x4
+ lsr r1, r1, #0x1b
+ add r1, r2, r1
+ lsl r0, r0, #0x13
+ lsl r1, r1, #0x13
+ ldrb r2, [r4, #0x4]
+ lsr r0, r0, #0x18
+ lsr r1, r1, #0x18
+ cmp r0, r2
+ bne _0204AE28
+ ldrb r2, [r4, #0x5]
+ cmp r1, r2
+ beq _0204AE58
+_0204AE28:
+ ldr r2, [r4, #0x0]
+ lsl r2, r2, #0x2
+ add r2, r4, r2
+ strb r0, [r2, #0x6]
+ ldr r0, [r4, #0x0]
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ strb r1, [r0, #0x7]
+ ldr r0, [r4, #0x0]
+ mov r1, #0xff
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ strb r1, [r0, #0x8]
+ ldr r0, [r4, #0x0]
+ mov r1, #0x1
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ strb r1, [r0, #0x9]
+ ldr r0, [r4, #0x0]
+ mov r1, #0x6
+ add r0, r0, #0x1
+ blx _s32_div_f
+ str r1, [r4, #0x0]
+_0204AE58:
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204AE5C
+FUN_0204AE5C: ; 0x0204AE5C
+ push {r4, lr}
+ add r4, r0, #0x0
+ lsl r0, r1, #0x18
+ lsl r1, r2, #0x18
+ ldrb r2, [r4, #0x4]
+ lsr r0, r0, #0x18
+ lsr r1, r1, #0x18
+ cmp r0, r2
+ bne _0204AE74
+ ldrb r2, [r4, #0x5]
+ cmp r1, r2
+ beq _0204AEA6
+_0204AE74:
+ ldr r2, [r4, #0x0]
+ lsl r2, r2, #0x2
+ add r2, r4, r2
+ strb r0, [r2, #0x6]
+ ldr r2, [r4, #0x0]
+ lsl r2, r2, #0x2
+ add r2, r4, r2
+ strb r1, [r2, #0x7]
+ ldr r2, [r4, #0x0]
+ lsl r2, r2, #0x2
+ add r2, r4, r2
+ strb r3, [r2, #0x8]
+ ldr r2, [r4, #0x0]
+ mov r3, #0x1
+ lsl r2, r2, #0x2
+ add r2, r4, r2
+ strb r3, [r2, #0x9]
+ strb r0, [r4, #0x4]
+ strb r1, [r4, #0x5]
+ ldr r0, [r4, #0x0]
+ mov r1, #0x6
+ add r0, r0, #0x1
+ blx _s32_div_f
+ str r1, [r4, #0x0]
+_0204AEA6:
+ pop {r4, pc}
+
+ thumb_func_start FUN_0204AEA8
+FUN_0204AEA8: ; 0x0204AEA8
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x0]
+ cmp r1, #0x0
+ beq _0204AEC6
+ cmp r1, #0x1
+ beq _0204AEE6
+ b _0204AEF4
+_0204AEC6:
+ ldr r0, [r4, #0x8]
+ add r1, r5, #0x0
+ add r2, r4, #0x4
+ bl FUN_021E3444
+ ldr r1, [r4, #0xc]
+ mov r0, #0x5
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ mov r2, #0x1
+ bl FUN_0200433C
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _0204AEF4
+_0204AEE6:
+ ldr r1, [r4, #0x4]
+ cmp r1, #0x1
+ bne _0204AEF4
+ bl FUN_02016A18
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0204AEF4:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0204AEF8
+FUN_0204AEF8: ; 0x0204AEF8
+ push {r4-r6, lr}
+ add r6, r0, #0x0
+ add r5, r1, #0x0
+ mov r0, #0xb
+ mov r1, #0x10
+ add r4, r2, #0x0
+ bl FUN_020169D8
+ add r2, r0, #0x0
+ mov r0, #0x0
+ str r0, [r2, #0x0]
+ str r0, [r2, #0x4]
+ str r5, [r2, #0x8]
+ ldr r1, _0204AF20 ; =FUN_0204AEA8
+ add r0, r6, #0x0
+ str r4, [r2, #0xc]
+ bl FUN_0204640C
+ pop {r4-r6, pc}
+ nop
+_0204AF20: .word FUN_0204AEA8
+
+ thumb_func_start FUN_0204AF24
+FUN_0204AF24: ; 0x0204AF24
+ push {r3, lr}
+ bl FUN_02046528
+ bl FUN_0203739C
+ cmp r0, #0x0
+ bne _0204AF36
+ mov r0, #0x1
+ pop {r3, pc}
+_0204AF36:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204AF3C
+FUN_0204AF3C: ; 0x0204AF3C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_02046528
+ add r4, r0, #0x0
+ bl FUN_0203739C
+ cmp r0, #0x0
+ bne _0204AF54
+ bl ErrorHandling
+ pop {r3-r5, pc}
+_0204AF54:
+ add r0, r4, #0x0
+ bl FUN_02037394
+ ldr r1, _0204AF68 ; =FUN_0204AF24
+ add r0, r5, #0x0
+ mov r2, #0x0
+ bl FUN_0204640C
+ pop {r3-r5, pc}
+ nop
+_0204AF68: .word FUN_0204AF24
+
+ thumb_func_start FUN_0204AF6C
+FUN_0204AF6C: ; 0x0204AF6C
+ push {r3, lr}
+ bl FUN_02046528
+ bl FUN_020464A4
+ cmp r0, #0x0
+ beq _0204AF7E
+ mov r0, #0x1
+ pop {r3, pc}
+_0204AF7E:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204AF84
+FUN_0204AF84: ; 0x0204AF84
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_02046528
+ add r4, r0, #0x0
+ bl FUN_0203739C
+ cmp r0, #0x0
+ beq _0204AF9C
+ bl ErrorHandling
+ pop {r3-r5, pc}
+_0204AF9C:
+ add r0, r4, #0x0
+ bl FUN_0204649C
+ ldr r1, _0204AFB0 ; =FUN_0204AF6C
+ add r0, r5, #0x0
+ mov r2, #0x0
+ bl FUN_0204640C
+ pop {r3-r5, pc}
+ nop
+_0204AFB0: .word FUN_0204AF6C
+
+ thumb_func_start FUN_0204AFB4
+FUN_0204AFB4: ; 0x0204AFB4
+ push {r3, lr}
+ bl FUN_0200E308
+ cmp r0, #0x0
+ beq _0204AFC2
+ mov r0, #0x1
+ pop {r3, pc}
+_0204AFC2:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204AFC8
+FUN_0204AFC8: ; 0x0204AFC8
+ push {r3-r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0x0
+ bl FUN_02046528
+ bl FUN_0203739C
+ cmp r0, #0x0
+ bne _0204AFE2
+ bl ErrorHandling
+ add sp, #0xc
+ pop {r3-r4, pc}
+_0204AFE2:
+ mov r0, #0x6
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ mov r0, #0x4
+ str r0, [sp, #0x8]
+ mov r0, #0x0
+ add r1, r0, #0x0
+ add r2, r0, #0x0
+ add r3, r0, #0x0
+ bl FUN_0200E1D0
+ ldr r1, _0204B008 ; =FUN_0204AFB4
+ add r0, r4, #0x0
+ mov r2, #0x0
+ bl FUN_0204640C
+ add sp, #0xc
+ pop {r3-r4, pc}
+ .balign 4
+_0204B008: .word FUN_0204AFB4
+
+ thumb_func_start FUN_0204B00C
+FUN_0204B00C: ; 0x0204B00C
+ push {r3-r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0x0
+ bl FUN_02046528
+ bl FUN_0203739C
+ cmp r0, #0x0
+ bne _0204B026
+ bl ErrorHandling
+ add sp, #0xc
+ pop {r3-r4, pc}
+_0204B026:
+ mov r0, #0x6
+ str r0, [sp, #0x0]
+ mov r1, #0x1
+ str r1, [sp, #0x4]
+ mov r0, #0x4
+ str r0, [sp, #0x8]
+ mov r0, #0x0
+ add r2, r1, #0x0
+ add r3, r0, #0x0
+ bl FUN_0200E1D0
+ ldr r1, _0204B04C ; =FUN_0204AFB4
+ add r0, r4, #0x0
+ mov r2, #0x0
+ bl FUN_0204640C
+ add sp, #0xc
+ pop {r3-r4, pc}
+ nop
+_0204B04C: .word FUN_0204AFB4
+
+ thumb_func_start FUN_0204B050
+FUN_0204B050: ; 0x0204B050
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_02046530
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ beq _0204B06A
+ cmp r0, #0x1
+ beq _0204B078
+ cmp r0, #0x2
+ beq _0204B086
+ b _0204B08A
+_0204B06A:
+ add r0, r5, #0x0
+ bl FUN_0204AFC8
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _0204B08A
+_0204B078:
+ add r0, r5, #0x0
+ bl FUN_0204AF3C
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _0204B08A
+_0204B086:
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0204B08A:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204B090
+FUN_0204B090: ; 0x0204B090
+ ldr r3, _0204B098 ; =FUN_0204640C
+ ldr r1, _0204B09C ; =FUN_0204B050
+ mov r2, #0x0
+ bx r3
+ .balign 4
+_0204B098: .word FUN_0204640C
+_0204B09C: .word FUN_0204B050
+
+ thumb_func_start FUN_0204B0A0
+FUN_0204B0A0: ; 0x0204B0A0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_02046530
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02046528
+ ldr r1, [r4, #0x0]
+ cmp r1, #0x0
+ beq _0204B0C0
+ cmp r1, #0x1
+ beq _0204B0CE
+ cmp r1, #0x2
+ beq _0204B0E0
+ b _0204B0E4
+_0204B0C0:
+ add r0, r5, #0x0
+ bl FUN_0204AF84
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _0204B0E4
+_0204B0CE:
+ bl FUN_021E331C
+ add r0, r5, #0x0
+ bl FUN_0204B00C
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _0204B0E4
+_0204B0E0:
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0204B0E4:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0204B0E8
+FUN_0204B0E8: ; 0x0204B0E8
+ ldr r3, _0204B0F0 ; =FUN_0204640C
+ ldr r1, _0204B0F4 ; =FUN_0204B0A0
+ mov r2, #0x0
+ bx r3
+ .balign 4
+_0204B0F0: .word FUN_0204640C
+_0204B0F4: .word FUN_0204B0A0
+
+ thumb_func_start FUN_0204B0F8
+FUN_0204B0F8: ; 0x0204B0F8
+ push {r4-r5, lr}
+ sub sp, #0x1c
+ add r5, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_02023794
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ beq _0204B12A
+ add r0, sp, #0xc
+ add r1, sp, #0x0
+ bl FUN_0201265C
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, sp, #0xc
+ bl FUN_0204B130
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, sp, #0xc
+ add r3, sp, #0x0
+ bl FUN_0204B158
+_0204B12A:
+ add sp, #0x1c
+ pop {r4-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204B130
+FUN_0204B130: ; 0x0204B130
+ push {r4-r6, lr}
+ add r6, r0, #0x0
+ add r5, r1, #0x0
+ add r0, r2, #0x0
+ blx FUN_020D660C
+ ldr r1, [r5, #0x20]
+ add r4, r0, #0x0
+ cmp r4, r1
+ bhs _0204B148
+ str r4, [r5, #0x20]
+ pop {r4-r6, pc}
+_0204B148:
+ cmp r4, r1
+ bls _0204B156
+ add r0, r6, #0x0
+ sub r1, r4, r1
+ bl FUN_0204B1DC
+ str r4, [r5, #0x20]
+_0204B156:
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0204B158
+FUN_0204B158: ; 0x0204B158
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r4, r2, #0x0
+ str r0, [sp, #0x0]
+ add r6, r3, #0x0
+ add r5, r1, #0x0
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ blx FUN_020D6578
+ str r1, [sp, #0x8]
+ add r1, r5, #0x0
+ add r7, r0, #0x0
+ add r0, r5, #0x4
+ add r1, #0x14
+ blx FUN_020D6578
+ add r2, r1, #0x0
+ sub r1, r7, r0
+ ldr r1, [sp, #0x8]
+ sbc r1, r2
+ bge _0204B19C
+ add r2, r5, #0x4
+ ldmia r4!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldmia r4!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldmia r6!, {r0-r1}
+ add r5, #0x14
+ stmia r5!, {r0-r1}
+ ldr r0, [r6, #0x0]
+ add sp, #0xc
+ str r0, [r5, #0x0]
+ pop {r4-r7, pc}
+_0204B19C:
+ ldr r1, [sp, #0x8]
+ sub r0, r7, r0
+ sbc r1, r2
+ mov r2, #0x3c
+ mov r3, #0x0
+ str r1, [sp, #0x8]
+ blx FUN_020EBA38
+ add r7, r0, #0x0
+ cmp r7, #0x0
+ ble _0204B1D8
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ bl FUN_02023884
+ ldr r0, [sp, #0x0]
+ add r1, r7, #0x0
+ add r2, r6, #0x0
+ bl FUN_0204B270
+ add r2, r5, #0x4
+ ldmia r4!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldmia r4!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldmia r6!, {r0-r1}
+ add r5, #0x14
+ stmia r5!, {r0-r1}
+ ldr r0, [r6, #0x0]
+ str r0, [r5, #0x0]
+_0204B1D8:
+ add sp, #0xc
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_0204B1DC
+FUN_0204B1DC: ; 0x0204B1DC
+ push {r4-r6, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ bl FUN_020377AC
+ add r1, r4, #0x0
+ bl FUN_02025A60
+ add r0, r5, #0x0
+ bl FUN_0203959C
+ ldr r0, [r5, #0xc]
+ add r1, r4, #0x0
+ bl FUN_02060344
+ ldr r0, [r5, #0xc]
+ bl FUN_0202881C
+ add r1, r4, #0x0
+ bl FUN_02028754
+ ldr r0, [r5, #0xc]
+ bl FUN_0202A9B0
+ add r6, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_0202881C
+ bl FUN_020287A4
+ add r1, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_0202A988
+ ldr r0, [r5, #0xc]
+ bl FUN_0206BB1C
+ add r1, r4, #0x0
+ bl FUN_02069D50
+ ldr r0, [r5, #0xc]
+ bl FUN_020462AC
+ add r6, r0, #0x0
+ bl FUN_0205F594
+ cmp r0, r4
+ ble _0204B244
+ sub r0, r0, r4
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ b _0204B246
+_0204B244:
+ mov r1, #0x0
+_0204B246:
+ add r0, r6, #0x0
+ bl FUN_0205F5A4
+ lsl r1, r4, #0x10
+ ldr r0, [r5, #0xc]
+ lsr r1, r1, #0x10
+ bl FUN_0205F618
+ ldr r0, [r5, #0xc]
+ bl FUN_0205F668
+ ldr r0, [r5, #0xc]
+ bl FUN_0206007C
+ ldr r0, [r5, #0xc]
+ bl FUN_02029AFC
+ bl FUN_02029C08
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204B270
+FUN_0204B270: ; 0x0204B270
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_0204B3D0
+ ldr r0, [r5, #0xc]
+ add r1, r4, #0x0
+ bl FUN_0202A9D0
+ add r0, r5, #0x0
+ bl FUN_0204B33C
+ add r2, r0, #0x0
+ ldr r0, [r5, #0xc]
+ add r1, r4, #0x0
+ bl FUN_02025B60
+ ldr r0, [r5, #0xc]
+ bl FUN_02022504
+ ldr r2, [r6, #0x4]
+ add r1, r4, #0x0
+ bl FUN_0202B3C4
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0204B2A4
+FUN_0204B2A4: ; 0x0204B2A4
+ push {r3, lr}
+ ldr r0, [r0, #0xc]
+ bl FUN_02023794
+ ldr r0, [r0, #0x14]
+ bl FUN_020127A8
+ pop {r3, pc}
+
+ thumb_func_start FUN_0204B2B4
+FUN_0204B2B4: ; 0x0204B2B4
+ push {r3, lr}
+ ldr r0, [r0, #0xc]
+ bl FUN_02023794
+ ldr r0, [r0, #0x8]
+ pop {r3, pc}
+
+ thumb_func_start FUN_0204B2C0
+FUN_0204B2C0: ; 0x0204B2C0
+ push {r3, lr}
+ ldr r0, [r0, #0xc]
+ bl FUN_02023794
+ ldr r0, [r0, #0xc]
+ pop {r3, pc}
+
+ thumb_func_start FUN_0204B2CC
+FUN_0204B2CC: ; 0x0204B2CC
+ push {r3, lr}
+ ldr r0, [r0, #0xc]
+ bl FUN_02023794
+ ldr r0, [r0, #0x10]
+ pop {r3, pc}
+
+ thumb_func_start FUN_0204B2D8
+FUN_0204B2D8: ; 0x0204B2D8
+ push {r3, lr}
+ ldr r0, [r0, #0xc]
+ bl FUN_02023794
+ ldr r0, [r0, #0x14]
+ pop {r3, pc}
+
+ thumb_func_start FUN_0204B2E4
+FUN_0204B2E4: ; 0x0204B2E4
+ push {r3, lr}
+ ldr r0, [r0, #0xc]
+ bl FUN_02023794
+ ldr r0, [r0, #0x18]
+ pop {r3, pc}
+
+ thumb_func_start FUN_0204B2F0
+FUN_0204B2F0: ; 0x0204B2F0
+ push {r3-r5, lr}
+ ldr r0, [r0, #0xc]
+ add r5, r1, #0x0
+ add r4, r2, #0x0
+ bl FUN_02023794
+ add r3, r0, #0x0
+ ldr r2, [r3, #0x24]
+ ldr r3, [r3, #0x28]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ blx FUN_020D6320
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0204B30C
+FUN_0204B30C: ; 0x0204B30C
+ push {r3-r5, lr}
+ ldr r0, [r0, #0xc]
+ add r5, r1, #0x0
+ add r4, r2, #0x0
+ bl FUN_02023794
+ add r3, r0, #0x0
+ ldr r2, [r3, #0x2c]
+ ldr r3, [r3, #0x30]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ blx FUN_020D6320
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0204B328
+FUN_0204B328: ; 0x0204B328
+ push {r4, lr}
+ ldr r0, [r0, #0xc]
+ bl FUN_02023794
+ add r4, r0, #0x0
+ bl FUN_020126FC
+ str r0, [r4, #0x2c]
+ str r1, [r4, #0x30]
+ pop {r4, pc}
+
+ thumb_func_start FUN_0204B33C
+FUN_0204B33C: ; 0x0204B33C
+ push {r3, lr}
+ ldr r0, [r0, #0xc]
+ bl FUN_02023794
+ bl FUN_02023874
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204B34C
+FUN_0204B34C: ; 0x0204B34C
+ cmp r0, #0x0
+ bne _0204B354
+ mov r0, #0x0
+ bx lr
+_0204B354:
+ add r0, #0x94
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bx lr
+
+ thumb_func_start FUN_0204B35C
+FUN_0204B35C: ; 0x0204B35C
+ cmp r0, #0x0
+ bne _0204B364
+ mov r0, #0x0
+ bx lr
+_0204B364:
+ sub r0, #0x94
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bx lr
+
+ thumb_func_start FUN_0204B36C
+FUN_0204B36C: ; 0x0204B36C
+ cmp r0, #0x0
+ bne _0204B374
+ mov r0, #0x0
+ bx lr
+_0204B374:
+ add r0, #0x5e
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bx lr
+
+ thumb_func_start FUN_0204B37C
+FUN_0204B37C: ; 0x0204B37C
+ cmp r0, #0x0
+ bne _0204B384
+ mov r0, #0x0
+ bx lr
+_0204B384:
+ sub r0, #0x5e
+ bx lr
+
+ thumb_func_start FUN_0204B388
+FUN_0204B388: ; 0x0204B388
+ push {r4-r6, lr}
+ add r6, r1, #0x0
+ add r5, r0, #0x0
+ add r0, r6, #0x0
+ mov r1, #0x64
+ bl FUN_02016998
+ add r4, r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x64
+ blx MI_CpuFill8
+ str r6, [r4, #0x0]
+ add r0, r6, #0x0
+ bl FUN_02025128
+ str r0, [r4, #0x4]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0204B410
+ add r0, r4, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204B3B8
+FUN_0204B3B8: ; 0x0204B3B8
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_0204B444
+ ldr r0, [r4, #0x4]
+ bl FUN_02016A18
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204B3D0
+FUN_0204B3D0: ; 0x0204B3D0
+ push {r4-r6, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x4]
+ add r6, r1, #0x0
+ cmp r0, #0x0
+ bne _0204B3FA
+ mov r0, #0xb
+ bl FUN_02025128
+ add r5, r0, #0x0
+ ldr r0, [r4, #0xc]
+ bl FUN_02024ECC
+ add r1, r5, #0x0
+ add r2, r6, #0x0
+ bl FUN_020253E0
+ add r0, r5, #0x0
+ bl FUN_02016A18
+ pop {r4-r6, pc}
+_0204B3FA:
+ ldr r0, [r0, #0x18]
+ ldr r5, [r0, #0x4]
+ ldr r0, [r4, #0xc]
+ bl FUN_02024ECC
+ add r1, r5, #0x0
+ add r2, r6, #0x0
+ bl FUN_020253E0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204B410
+FUN_0204B410: ; 0x0204B410
+ push {r3-r5, lr}
+ ldr r4, [r0, #0x3c]
+ add r5, r1, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x11
+ bl FUN_021E4C54
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_02016998
+ str r0, [r5, #0x60]
+ ldr r2, [r5, #0x60]
+ add r0, r4, #0x0
+ mov r1, #0x11
+ bl FUN_021E4C60
+ add r0, r5, #0x0
+ add r1, r5, #0x0
+ add r5, #0x60
+ add r0, #0x8
+ add r1, #0x5c
+ add r2, r5, #0x0
+ bl FUN_0201B234
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0204B444
+FUN_0204B444: ; 0x0204B444
+ ldr r3, _0204B44C ; =0x021E4C01
+ ldr r0, [r0, #0x60]
+ bx r3
+ nop
+_0204B44C: .word 0x021E4C01
+
+ thumb_func_start FUN_0204B450
+FUN_0204B450: ; 0x0204B450
+ push {r3-r5, lr}
+ sub sp, #0x30
+ ldr r3, _0204B48C ; =0x020F4860
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ ldmia r3!, {r0-r1}
+ add r2, sp, #0x24
+ stmia r2!, {r0-r1}
+ ldr r0, [r3, #0x0]
+ str r0, [r2, #0x0]
+ add r0, sp, #0x0
+ blx FUN_020C3F14
+ ldr r0, [r5, #0x4]
+ add r1, r4, #0x0
+ ldr r0, [r0, #0x18]
+ add r2, sp, #0x0
+ ldr r0, [r0, #0x5c]
+ add r3, sp, #0x24
+ bl FUN_0201B6D0
+ cmp r0, #0x0
+ beq _0204B484
+ add sp, #0x30
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0204B484:
+ mov r0, #0x0
+ add sp, #0x30
+ pop {r3-r5, pc}
+ nop
+_0204B48C: .word 0x020F4860
+
+ thumb_func_start FUN_0204B490
+FUN_0204B490: ; 0x0204B490
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ mov r0, #0x0
+ str r0, [sp, #0x4]
+ ldr r0, [r5, #0xc]
+ bl FUN_02024ECC
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x34]
+ add r1, sp, #0x0
+ add r2, sp, #0x4
+ mov r3, #0x1
+ bl FUN_020580F4
+ cmp r0, #0x1
+ bne _0204B4F8
+ mov r6, #0x0
+ mov r7, #0x1
+_0204B4B6:
+ ldr r0, [sp, #0x0]
+ bl FUN_02058458
+ bl FUN_0205C334
+ cmp r0, #0x1
+ bne _0204B4E8
+ ldr r0, [sp, #0x0]
+ bl FUN_02058B7C
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0204B450
+ cmp r0, #0x0
+ beq _0204B4E8
+ ldr r0, [sp, #0x0]
+ add r1, r6, #0x0
+ bl FUN_02058510
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r2, r7, #0x0
+ bl FUN_020252C4
+_0204B4E8:
+ ldr r0, [r5, #0x34]
+ add r1, sp, #0x0
+ add r2, sp, #0x4
+ mov r3, #0x1
+ bl FUN_020580F4
+ cmp r0, #0x1
+ beq _0204B4B6
+_0204B4F8:
+ add sp, #0x8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0204B4FC
+FUN_0204B4FC: ; 0x0204B4FC
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ ldr r0, [r5, #0xc]
+ add r7, r1, #0x0
+ bl FUN_02024ECC
+ add r4, r0, #0x0
+ add r0, r7, #0x0
+ mov r1, #0x0
+ bl FUN_02058510
+ str r0, [sp, #0x0]
+ ldr r1, [sp, #0x0]
+ add r0, r4, #0x0
+ bl FUN_02025244
+ str r0, [sp, #0x4]
+ ldr r1, [sp, #0x0]
+ add r0, r4, #0x0
+ bl FUN_020252E8
+ add r6, r0, #0x0
+ ldr r0, [sp, #0x4]
+ bl FUN_0204B34C
+ str r0, [sp, #0x8]
+ ldr r1, [sp, #0x0]
+ add r0, r4, #0x0
+ bl FUN_02025268
+ add r2, r0, #0x0
+ lsl r2, r2, #0x18
+ lsl r3, r6, #0x10
+ ldr r1, [sp, #0x8]
+ add r0, r5, #0x0
+ lsr r2, r2, #0x18
+ lsr r3, r3, #0x10
+ bl FUN_020616A4
+ ldr r1, [sp, #0x0]
+ add r0, r4, #0x0
+ bl FUN_020252F4
+ add r0, r7, #0x0
+ bl FUN_0205C374
+ ldr r0, [r5, #0xc]
+ bl FUN_0206F158
+ add r4, r0, #0x0
+ ldr r0, [sp, #0x4]
+ bl FUN_0204B34C
+ lsl r2, r6, #0x10
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ lsr r2, r2, #0x10
+ mov r3, #0x4
+ bl FUN_0206ED38
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204B57C
+FUN_0204B57C: ; 0x0204B57C
+ push {r4-r6, lr}
+ ldr r0, [r0, #0xc]
+ add r4, r1, #0x0
+ add r5, r2, #0x0
+ bl FUN_02024ECC
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_02058510
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0204B37C
+ add r2, r0, #0x0
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ bl FUN_020252DC
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204B5A8
+FUN_0204B5A8: ; 0x0204B5A8
+ push {r3-r7, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0xc]
+ add r5, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_02024ECC
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_02058510
+ add r5, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_0204B35C
+ ldr r2, [r4, #0x4]
+ add r3, r0, #0x0
+ ldr r2, [r2, #0x18]
+ add r0, r7, #0x0
+ ldr r2, [r2, #0x4]
+ add r1, r5, #0x0
+ bl FUN_02025274
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204B5DC
+FUN_0204B5DC: ; 0x0204B5DC
+ push {r3-r5, lr}
+ ldr r0, [r0, #0xc]
+ add r5, r1, #0x0
+ bl FUN_02024ECC
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_02058510
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_020252AC
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204B5FC
+FUN_0204B5FC: ; 0x0204B5FC
+ push {r3-r5, lr}
+ ldr r0, [r0, #0xc]
+ add r5, r1, #0x0
+ bl FUN_02024ECC
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_02058510
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02025238
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204B61C
+FUN_0204B61C: ; 0x0204B61C
+ push {r3-r5, lr}
+ ldr r0, [r0, #0xc]
+ add r5, r1, #0x0
+ bl FUN_02024ECC
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_02058510
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02025244
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204B63C
+FUN_0204B63C: ; 0x0204B63C
+ push {r3-r5, lr}
+ ldr r0, [r0, #0xc]
+ add r5, r1, #0x0
+ bl FUN_02024ECC
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_02058510
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02025244
+ bl FUN_0204B34C
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204B660
+FUN_0204B660: ; 0x0204B660
+ push {r3-r5, lr}
+ ldr r0, [r0, #0xc]
+ add r5, r1, #0x0
+ bl FUN_02024ECC
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_02058510
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_020252D0
+ bl FUN_0204B36C
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204B684
+FUN_0204B684: ; 0x0204B684
+ push {r3-r5, lr}
+ ldr r0, [r0, #0xc]
+ add r5, r1, #0x0
+ bl FUN_02024ECC
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_02058510
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0202524C
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204B6A4
+FUN_0204B6A4: ; 0x0204B6A4
+ push {r3-r5, lr}
+ ldr r0, [r0, #0xc]
+ add r5, r1, #0x0
+ bl FUN_02024ECC
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_02058510
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_020252E8
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204B6C4
+FUN_0204B6C4: ; 0x0204B6C4
+ push {r4-r6, lr}
+ add r6, r0, #0x0
+ add r5, r1, #0x0
+ ldr r4, _0204B708 ; =0x00000000
+ beq _0204B6D8
+ add r0, r5, #0x0
+ bl FUN_02058458
+ cmp r0, #0x64
+ beq _0204B6DC
+_0204B6D8:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_0204B6DC:
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ bl FUN_0204B5FC
+ cmp r0, #0x0
+ bne _0204B6FE
+ mov r0, #0x1
+ orr r4, r0
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ bl FUN_0204B660
+ cmp r0, #0x0
+ bne _0204B702
+ mov r0, #0x2
+ orr r4, r0
+ b _0204B702
+_0204B6FE:
+ mov r0, #0x4
+ orr r4, r0
+_0204B702:
+ add r0, r4, #0x0
+ pop {r4-r6, pc}
+ nop
+_0204B708: .word 0x00000000
+
+ thumb_func_start FUN_0204B70C
+FUN_0204B70C: ; 0x0204B70C
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ ldr r0, [r7, #0x38]
+ add r5, r2, #0x0
+ bl FUN_02055320
+ add r6, r0, #0x0
+ ldr r0, [r7, #0x38]
+ bl FUN_0205532C
+ add r4, r0, #0x0
+ cmp r5, #0x2
+ bne _0204B72A
+ sub r6, r6, #0x1
+ b _0204B746
+_0204B72A:
+ cmp r5, #0x3
+ bne _0204B732
+ add r6, r6, #0x1
+ b _0204B746
+_0204B732:
+ cmp r5, #0x0
+ bne _0204B73A
+ sub r4, r4, #0x1
+ b _0204B746
+_0204B73A:
+ cmp r5, #0x1
+ bne _0204B742
+ add r4, r4, #0x1
+ b _0204B746
+_0204B742:
+ bl ErrorHandling
+_0204B746:
+ add r0, r7, #0x0
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ bl FUN_0204A6B4
+ cmp r0, #0x0
+ beq _0204B758
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0204B758:
+ ldr r0, [r7, #0x34]
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ bl FUN_02058D74
+ cmp r0, #0x0
+ beq _0204B76A
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0204B76A:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204B770
+FUN_0204B770: ; 0x0204B770
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x38]
+ add r6, r1, #0x0
+ bl FUN_02055320
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x38]
+ bl FUN_0205532C
+ add r2, r0, #0x0
+ cmp r6, #0x2
+ bne _0204B78E
+ sub r4, r4, #0x1
+ b _0204B794
+_0204B78E:
+ cmp r6, #0x3
+ bne _0204B794
+ add r4, r4, #0x1
+_0204B794:
+ ldr r0, [r5, #0x34]
+ add r1, r4, #0x0
+ sub r2, r2, #0x1
+ bl FUN_02058D74
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0204B7A0
+FUN_0204B7A0: ; 0x0204B7A0
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x38]
+ add r6, r1, #0x0
+ bl FUN_02055320
+ add r7, r0, #0x0
+ ldr r0, [r5, #0x38]
+ bl FUN_0205532C
+ add r4, r0, #0x0
+ ldr r0, [r6, #0x4]
+ cmp r0, #0x0
+ bne _0204B7C0
+ sub r4, r4, #0x1
+ b _0204B7CC
+_0204B7C0:
+ cmp r0, #0x1
+ bne _0204B7C8
+ add r4, r4, #0x1
+ b _0204B7CC
+_0204B7C8:
+ bl ErrorHandling
+_0204B7CC:
+ ldr r0, [r5, #0x34]
+ add r1, r7, #0x0
+ add r2, r4, #0x0
+ bl FUN_02058D74
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0204B7D8
+FUN_0204B7D8: ; 0x0204B7D8
+ push {r3, lr}
+ bl FUN_02058458
+ cmp r0, #0x64
+ bne _0204B7E6
+ mov r0, #0x1
+ pop {r3, pc}
+_0204B7E6:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204B7EC
+FUN_0204B7EC: ; 0x0204B7EC
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_0204B7A0
+ add r1, r0, #0x0
+ beq _0204B7FE
+ add r0, r4, #0x0
+ bl FUN_0204B5DC
+_0204B7FE:
+ pop {r4, pc}
+
+ thumb_func_start FUN_0204B800
+FUN_0204B800: ; 0x0204B800
+ push {r3-r5, lr}
+ ldr r0, [r0, #0x38]
+ add r4, r2, #0x0
+ add r5, r1, #0x0
+ bl FUN_020553A0
+ add r1, r4, #0x0
+ bl FUN_0205AEA4
+ str r0, [r5, #0xc]
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204B818
+FUN_0204B818: ; 0x0204B818
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x4
+ bls _0204B832
+ b _0204B98E
+_0204B832:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0204B83E: ; jump table (using 16-bit offset)
+ .short _0204B848 - _0204B83E - 2; case 0
+ .short _0204B866 - _0204B83E - 2; case 1
+ .short _0204B876 - _0204B83E - 2; case 2
+ .short _0204B93A - _0204B83E - 2; case 3
+ .short _0204B972 - _0204B83E - 2; case 4
+_0204B848:
+ ldr r0, [r5, #0x38]
+ mov r1, #0x10
+ bl FUN_021E5FD8
+ ldr r0, [r5, #0x38]
+ bl FUN_021E5FE0
+ ldr r0, [r5, #0x38]
+ bl FUN_020553A0
+ bl FUN_02058914
+ mov r0, #0x1
+ str r0, [r4, #0x0]
+ b _0204B98E
+_0204B866:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0204B7EC
+ mov r0, #0x0
+ str r0, [r4, #0x8]
+ mov r0, #0x2
+ str r0, [r4, #0x0]
+_0204B876:
+ ldr r0, _0204B994 ; =0x021C48B8
+ mov r1, #0x20
+ ldr r0, [r0, #0x44]
+ tst r1, r0
+ beq _0204B8B8
+ add r0, r5, #0x0
+ mov r1, #0x2
+ bl FUN_0204B770
+ cmp r0, #0x0
+ beq _0204B894
+ bl FUN_0204B7D8
+ cmp r0, #0x0
+ bne _0204B89A
+_0204B894:
+ mov r0, #0x4
+ str r0, [r4, #0x0]
+ b _0204B98E
+_0204B89A:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r2, #0x2
+ bl FUN_0204B70C
+ cmp r0, #0x0
+ bne _0204B922
+ ldr r2, _0204B998 ; =0x020F4850
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0204B800
+ mov r0, #0x3
+ str r0, [r4, #0x0]
+ b _0204B98E
+_0204B8B8:
+ mov r1, #0x10
+ tst r1, r0
+ beq _0204B8F6
+ add r0, r5, #0x0
+ mov r1, #0x3
+ bl FUN_0204B770
+ cmp r0, #0x0
+ beq _0204B8D2
+ bl FUN_0204B7D8
+ cmp r0, #0x0
+ bne _0204B8D8
+_0204B8D2:
+ mov r0, #0x4
+ str r0, [r4, #0x0]
+ b _0204B98E
+_0204B8D8:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r2, #0x3
+ bl FUN_0204B70C
+ cmp r0, #0x0
+ bne _0204B922
+ ldr r2, _0204B99C ; =0x020F4858
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0204B800
+ mov r0, #0x3
+ str r0, [r4, #0x0]
+ b _0204B98E
+_0204B8F6:
+ mov r1, #0x40
+ tst r1, r0
+ beq _0204B910
+ ldr r1, [r4, #0x4]
+ cmp r1, #0x1
+ bne _0204B910
+ ldr r0, [r5, #0x38]
+ mov r1, #0x0
+ bl FUN_02055304
+ mov r0, #0x4
+ str r0, [r4, #0x0]
+ b _0204B98E
+_0204B910:
+ mov r1, #0x80
+ tst r0, r1
+ beq _0204B922
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x0
+ bne _0204B922
+ mov r0, #0x4
+ str r0, [r4, #0x0]
+ b _0204B98E
+_0204B922:
+ ldr r0, [r4, #0x8]
+ add r0, r0, #0x1
+ str r0, [r4, #0x8]
+ cmp r0, #0x5a
+ ble _0204B98E
+ ldr r0, [r5, #0x38]
+ ldr r1, [r4, #0x4]
+ bl FUN_02055304
+ mov r0, #0x4
+ str r0, [r4, #0x0]
+ b _0204B98E
+_0204B93A:
+ ldr r0, [r4, #0xc]
+ bl FUN_0205AEF0
+ cmp r0, #0x0
+ beq _0204B98E
+ ldr r0, [r4, #0xc]
+ bl FUN_0205AEFC
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0204B7A0
+ cmp r0, #0x0
+ beq _0204B964
+ bl FUN_0204B7D8
+ cmp r0, #0x0
+ beq _0204B964
+ mov r0, #0x1
+ str r0, [r4, #0x0]
+ b _0204B98E
+_0204B964:
+ ldr r0, [r5, #0x38]
+ ldr r1, [r4, #0x4]
+ bl FUN_02055304
+ mov r0, #0x4
+ str r0, [r4, #0x0]
+ b _0204B98E
+_0204B972:
+ ldr r0, [r5, #0x38]
+ ldr r1, [r4, #0x4]
+ bl FUN_02055304
+ ldr r0, [r5, #0x38]
+ bl FUN_020553A0
+ bl FUN_02058908
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0204B98E:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ nop
+_0204B994: .word 0x021C48B8
+_0204B998: .word 0x020F4850
+_0204B99C: .word 0x020F4858
+
+ thumb_func_start FUN_0204B9A0
+FUN_0204B9A0: ; 0x0204B9A0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r0, #0x20
+ mov r1, #0x10
+ bl FUN_02016998
+ add r4, r0, #0x0
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+ str r0, [r4, #0xc]
+ ldr r0, [r5, #0x38]
+ bl FUN_020552F8
+ str r0, [r4, #0x4]
+ ldr r0, [r5, #0x10]
+ ldr r1, _0204B9C8 ; =FUN_0204B818
+ add r2, r4, #0x0
+ bl FUN_0204640C
+ pop {r3-r5, pc}
+ .balign 4
+_0204B9C8: .word FUN_0204B818
+
+ thumb_func_start FUN_0204B9CC
+FUN_0204B9CC: ; 0x0204B9CC
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x38]
+ bl FUN_020553C4
+ bl FUN_02055648
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x38]
+ bl FUN_021E5FD8
+ ldr r0, [r4, #0x38]
+ bl FUN_021E5FE0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204B9EC
+FUN_0204B9EC: ; 0x0204B9EC
+ push {r4, lr}
+ ldr r1, _0204BA14 ; =0x021C5A1C
+ add r4, r0, #0x0
+ mov r0, #0x0
+ mov r2, #0x4c
+ blx MIi_CpuClearFast
+ ldr r1, _0204BA14 ; =0x021C5A1C
+ add r0, r4, #0x0
+ bl FUN_0204BB20
+ ldr r0, _0204BA14 ; =0x021C5A1C
+ bl FUN_0204BBC4
+ bl FUN_020126FC
+ ldr r2, _0204BA18 ; =0x021C5A1C
+ str r0, [r2, #0x40]
+ str r1, [r2, #0x44]
+ pop {r4, pc}
+ .balign 4
+_0204BA14: .word 0x021C5A1C
+_0204BA18: .word 0x021C5A1C
+
+ thumb_func_start FUN_0204BA1C
+FUN_0204BA1C: ; 0x0204BA1C
+ push {r3-r5, lr}
+ ldr r0, [r0, #0xc]
+ ldr r4, _0204BA60 ; =0x021C5A1C
+ bl FUN_02029FC8
+ add r5, r0, #0x0
+ bl FUN_020126FC
+ add r3, r1, #0x0
+ ldr r1, _0204BA64 ; =0x021C5A1C
+ add r2, r0, #0x0
+ ldr r0, [r1, #0x40]
+ ldr r1, [r1, #0x44]
+ bl FUN_020127C0
+ mov r2, #0xfa
+ mov r3, #0x0
+ lsl r2, r2, #0x2
+ sub r2, r0, r2
+ sbc r1, r3
+ bge _0204BA50
+ mov r1, #0xfa
+ lsl r1, r1, #0x2
+ sub r0, r1, r0
+ lsl r0, r0, #0x1
+ b _0204BA52
+_0204BA50:
+ mov r0, #0x0
+_0204BA52:
+ str r0, [r4, #0x48]
+ add r0, r5, #0x0
+ mov r1, #0x11
+ bl FUN_0202A170
+ pop {r3-r5, pc}
+ nop
+_0204BA60: .word 0x021C5A1C
+_0204BA64: .word 0x021C5A1C
+
+ thumb_func_start FUN_0204BA68
+FUN_0204BA68: ; 0x0204BA68
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, _0204BA8C ; =0x021C5A1C
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_0204BBE8
+ cmp r0, #0x1
+ bne _0204BA88
+ ldr r1, _0204BA8C ; =0x021C5A1C
+ add r0, r5, #0x0
+ add r2, r4, #0x0
+ add r3, r6, #0x0
+ bl FUN_0204BC48
+ pop {r4-r6, pc}
+_0204BA88:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+_0204BA8C: .word 0x021C5A1C
+
+ thumb_func_start FUN_0204BA90
+FUN_0204BA90: ; 0x0204BA90
+ ldr r3, _0204BA98 ; =FUN_0204BD40
+ ldr r1, _0204BA9C ; =0x021C5A1C
+ bx r3
+ nop
+_0204BA98: .word FUN_0204BD40
+_0204BA9C: .word 0x021C5A1C
+
+ thumb_func_start FUN_0204BAA0
+FUN_0204BAA0: ; 0x0204BAA0
+ ldr r3, _0204BAA8 ; =FUN_0204BD18
+ ldr r2, _0204BAAC ; =0x021C5A1C
+ bx r3
+ nop
+_0204BAA8: .word FUN_0204BD18
+_0204BAAC: .word 0x021C5A1C
+
+ thumb_func_start FUN_0204BAB0
+FUN_0204BAB0: ; 0x0204BAB0
+ push {r3, lr}
+ ldr r0, _0204BAC0 ; =0x021C5A1C
+ bl FUN_0204BBA8
+ mov r1, #0x6
+ sub r0, r1, r0
+ pop {r3, pc}
+ nop
+_0204BAC0: .word 0x021C5A1C
+
+ thumb_func_start FUN_0204BAC4
+FUN_0204BAC4: ; 0x0204BAC4
+ ldr r3, _0204BACC ; =FUN_0204BD8C
+ ldr r0, _0204BAD0 ; =0x021C5A1C
+ bx r3
+ nop
+_0204BACC: .word FUN_0204BD8C
+_0204BAD0: .word 0x021C5A1C
+
+ thumb_func_start FUN_0204BAD4
+FUN_0204BAD4: ; 0x0204BAD4
+ ldr r3, _0204BADC ; =0x0204BE11
+ ldr r0, _0204BAE0 ; =0x021C5A1C
+ bx r3
+ nop
+_0204BADC: .word 0x0204BE11
+_0204BAE0: .word 0x021C5A1C
+
+ thumb_func_start FUN_0204BAE4
+FUN_0204BAE4: ; 0x0204BAE4
+ ldr r3, _0204BAEC ; =FUN_0204BDA0
+ ldr r0, _0204BAF0 ; =0x021C5A1C
+ bx r3
+ nop
+_0204BAEC: .word FUN_0204BDA0
+_0204BAF0: .word 0x021C5A1C
+
+ thumb_func_start FUN_0204BAF4
+FUN_0204BAF4: ; 0x0204BAF4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r5, #0x0
+ beq _0204BB04
+ ldr r0, _0204BB1C ; =0x000001ED
+ cmp r5, r0
+ bls _0204BB08
+_0204BB04:
+ bl ErrorHandling
+_0204BB08:
+ mov r3, #0x6
+ add r0, r4, #0x0
+ sub r4, r5, #0x1
+ str r3, [sp, #0x0]
+ mov r1, #0x83
+ mov r2, #0x0
+ mul r3, r4
+ bl FUN_02006548
+ pop {r3-r5, pc}
+ .balign 4
+_0204BB1C: .word 0x000001ED
+
+ thumb_func_start FUN_0204BB20
+FUN_0204BB20: ; 0x0204BB20
+ push {r3-r7, lr}
+ sub sp, #0x10
+ ldr r0, [r0, #0xc]
+ str r1, [sp, #0x0]
+ bl FUN_02022528
+ str r0, [sp, #0x4]
+ mov r0, #0x4
+ bl FUN_020669C0
+ ldr r5, [sp, #0x0]
+ add r4, r0, #0x0
+ mov r6, #0x0
+ add r7, sp, #0x8
+_0204BB3C:
+ ldr r0, [sp, #0x0]
+ add r2, r4, #0x0
+ add r1, r0, r6
+ add r1, #0x30
+ mov r0, #0x0
+ strb r0, [r1, #0x0]
+ ldr r0, [sp, #0x4]
+ add r1, r6, #0x0
+ bl FUN_0202BFD8
+ add r0, r4, #0x0
+ mov r1, #0x5
+ mov r2, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ strh r0, [r5, #0x0]
+ add r1, sp, #0x8
+ bl FUN_0204BAF4
+ ldrb r0, [r7, #0x0]
+ cmp r0, #0x0
+ beq _0204BB6E
+ b _0204BB72
+_0204BB6E:
+ ldrb r0, [r7, #0x1]
+ add r0, r0, #0x4
+_0204BB72:
+ strb r0, [r5, #0x2]
+ ldrb r0, [r7, #0x3]
+ mov r1, #0xb0
+ mov r2, #0x0
+ strb r0, [r5, #0x3]
+ ldrb r0, [r7, #0x2]
+ strh r0, [r5, #0x4]
+ add r0, r4, #0x0
+ bl FUN_020671BC
+ strb r0, [r5, #0x6]
+ add r0, r4, #0x0
+ mov r1, #0xb1
+ mov r2, #0x0
+ bl FUN_020671BC
+ strb r0, [r5, #0x7]
+ add r6, r6, #0x1
+ add r5, #0x8
+ cmp r6, #0x6
+ blt _0204BB3C
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x10
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204BBA8
+FUN_0204BBA8: ; 0x0204BBA8
+ mov r3, #0x0
+ add r2, r3, #0x0
+_0204BBAC:
+ add r1, r0, r2
+ add r1, #0x30
+ ldrb r1, [r1, #0x0]
+ cmp r1, #0x0
+ beq _0204BBB8
+ add r3, r3, #0x1
+_0204BBB8:
+ add r2, r2, #0x1
+ cmp r2, #0x6
+ blt _0204BBAC
+ add r0, r3, #0x0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0204BBC4
+FUN_0204BBC4: ; 0x0204BBC4
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl FUN_0201B9EC
+ ldr r1, _0204BBE4 ; =0x0000199A
+ blx _s32_div_f
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ cmp r5, #0xa
+ blo _0204BBDE
+ bl ErrorHandling
+_0204BBDE:
+ add r0, r5, #0x5
+ str r0, [r4, #0x38]
+ pop {r3-r5, pc}
+ .balign 4
+_0204BBE4: .word 0x0000199A
+
+ thumb_func_start FUN_0204BBE8
+FUN_0204BBE8: ; 0x0204BBE8
+ push {r3, lr}
+ ldr r1, [r0, #0x38]
+ sub r1, r1, #0x1
+ str r1, [r0, #0x38]
+ bne _0204BBFA
+ bl FUN_0204BBC4
+ mov r0, #0x1
+ pop {r3, pc}
+_0204BBFA:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204BC00
+FUN_0204BC00: ; 0x0204BC00
+ push {r4-r6, lr}
+ add r5, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_0204A6E0
+ add r4, r0, #0x0
+ cmp r5, #0x20
+ blt _0204BC14
+ mov r5, #0x1
+ b _0204BC16
+_0204BC14:
+ mov r5, #0x0
+_0204BC16:
+ cmp r6, #0x20
+ bge _0204BC1E
+ mov r0, #0x0
+ b _0204BC20
+_0204BC1E:
+ mov r0, #0x2
+_0204BC20:
+ add r5, r5, r0
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0205478C
+ cmp r0, #0x0
+ beq _0204BC32
+ add r0, r5, #0x1
+ pop {r4-r6, pc}
+_0204BC32:
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0205481C
+ cmp r0, #0x0
+ beq _0204BC42
+ add r0, r5, #0x5
+ pop {r4-r6, pc}
+_0204BC42:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204BC48
+FUN_0204BC48: ; 0x0204BC48
+ push {r3-r7, lr}
+ add r5, r1, #0x0
+ add r1, r2, #0x0
+ add r2, r3, #0x0
+ mov r6, #0x0
+ bl FUN_0204BC00
+ add r7, r0, #0x0
+ bne _0204BC5E
+ add r0, r6, #0x0
+ pop {r3-r7, pc}
+_0204BC5E:
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+_0204BC62:
+ add r2, r5, r0
+ add r2, #0x30
+ ldrb r2, [r2, #0x0]
+ cmp r2, #0x0
+ bne _0204BC76
+ ldrb r2, [r1, #0x2]
+ cmp r7, r2
+ bne _0204BC76
+ ldrb r2, [r1, #0x3]
+ add r6, r6, r2
+_0204BC76:
+ add r0, r0, #0x1
+ add r1, #0x8
+ cmp r0, #0x6
+ blt _0204BC62
+ cmp r6, #0x0
+ bne _0204BC86
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0204BC86:
+ add r0, r6, #0x0
+ add r0, #0x14
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bne _0204BC94
+ bl ErrorHandling
+_0204BC94:
+ add r0, r6, #0x0
+ add r0, #0x14
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ cmp r0, #0x1
+ bhi _0204BCA4
+ mov r4, #0x0
+ b _0204BCD8
+_0204BCA4:
+ bl FUN_0201B9EC
+ add r1, r6, #0x0
+ add r1, #0x14
+ add r4, r0, #0x0
+ lsl r1, r1, #0x10
+ ldr r0, _0204BD14 ; =0x0000FFFF
+ lsr r1, r1, #0x10
+ blx _s32_div_f
+ add r1, r0, #0x0
+ add r1, r1, #0x1
+ lsl r1, r1, #0x10
+ add r0, r4, #0x0
+ lsr r1, r1, #0x10
+ blx _s32_div_f
+ lsl r0, r0, #0x10
+ add r6, #0x14
+ lsr r4, r0, #0x10
+ lsl r0, r6, #0x10
+ lsr r0, r0, #0x10
+ cmp r4, r0
+ blo _0204BCD8
+ bl ErrorHandling
+_0204BCD8:
+ cmp r4, #0x14
+ bge _0204BCE0
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0204BCE0:
+ sub r4, #0x14
+ mov r1, #0x0
+ add r0, r5, #0x0
+_0204BCE6:
+ add r2, r5, r1
+ add r2, #0x30
+ ldrb r2, [r2, #0x0]
+ cmp r2, #0x0
+ bne _0204BD04
+ ldrb r2, [r0, #0x2]
+ cmp r7, r2
+ bne _0204BD04
+ ldrb r2, [r0, #0x3]
+ cmp r4, r2
+ bge _0204BD02
+ str r1, [r5, #0x3c]
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0204BD02:
+ sub r4, r4, r2
+_0204BD04:
+ add r1, r1, #0x1
+ add r0, #0x8
+ cmp r1, #0x6
+ blt _0204BCE6
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+_0204BD14: .word 0x0000FFFF
+
+ thumb_func_start FUN_0204BD18
+FUN_0204BD18: ; 0x0204BD18
+ push {r4, lr}
+ ldr r0, [r1, #0x14]
+ add r4, r2, #0x0
+ cmp r0, #0x4
+ beq _0204BD28
+ cmp r0, #0x5
+ beq _0204BD3E
+ b _0204BD3A
+_0204BD28:
+ add r0, r4, #0x0
+ bl FUN_0204BBA8
+ add r1, r0, #0x1
+ ldr r0, [r4, #0x3c]
+ add r0, r4, r0
+ add r0, #0x30
+ strb r1, [r0, #0x0]
+ pop {r4, pc}
+_0204BD3A:
+ bl ErrorHandling
+_0204BD3E:
+ pop {r4, pc}
+
+ thumb_func_start FUN_0204BD40
+FUN_0204BD40: ; 0x0204BD40
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ mov r0, #0x20
+ add r6, r1, #0x0
+ bl FUN_020669C0
+ add r4, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_02022528
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ bl FUN_0204BAB0
+ add r1, r0, #0x0
+ mov r0, #0xb
+ bl FUN_02047800
+ add r1, r5, #0x0
+ add r7, r0, #0x0
+ bl FUN_02047BB0
+ ldr r0, [sp, #0x0]
+ ldr r1, [r6, #0x3c]
+ add r2, r4, #0x0
+ bl FUN_0202BFD8
+ add r0, r7, #0x0
+ add r1, r4, #0x0
+ mov r2, #0x1
+ bl FUN_020479FC
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add r0, r7, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204BD8C
+FUN_0204BD8C: ; 0x0204BD8C
+ mov r3, #0x0
+ add r2, r3, #0x0
+_0204BD90:
+ ldrh r1, [r0, #0x4]
+ add r2, r2, #0x1
+ add r0, #0x8
+ add r3, r3, r1
+ cmp r2, #0x6
+ blt _0204BD90
+ add r0, r3, #0x0
+ bx lr
+
+ thumb_func_start FUN_0204BDA0
+FUN_0204BDA0: ; 0x0204BDA0
+ push {r4-r7}
+ mov r3, #0x0
+ add r5, r0, #0x0
+ add r4, r3, #0x0
+ mov r0, #0x1
+_0204BDAA:
+ mov r1, #0x0
+_0204BDAC:
+ add r2, r5, r1
+ add r2, #0x30
+ ldrb r2, [r2, #0x0]
+ cmp r0, r2
+ bne _0204BDEC
+ lsl r1, r1, #0x3
+ add r2, r5, r1
+ ldrb r1, [r2, #0x6]
+ ldrb r2, [r2, #0x7]
+ cmp r0, #0x1
+ beq _0204BDD8
+ mov r6, r12
+ cmp r6, r1
+ beq _0204BDD8
+ mov r6, r12
+ cmp r6, r2
+ beq _0204BDD8
+ cmp r7, r1
+ beq _0204BDD8
+ cmp r7, r2
+ beq _0204BDD8
+ add r4, #0xc8
+_0204BDD8:
+ mov r6, #0x1
+ mov r12, r1
+ lsl r6, r1
+ add r1, r3, #0x0
+ mov r3, #0x1
+ lsl r3, r2
+ orr r1, r6
+ add r7, r2, #0x0
+ orr r3, r1
+ b _0204BDF2
+_0204BDEC:
+ add r1, r1, #0x1
+ cmp r1, #0x6
+ blt _0204BDAC
+_0204BDF2:
+ add r0, r0, #0x1
+ cmp r0, #0x7
+ blt _0204BDAA
+ cmp r3, #0x0
+ beq _0204BE0A
+ mov r0, #0x1
+_0204BDFE:
+ add r1, r3, #0x0
+ tst r1, r0
+ beq _0204BE06
+ add r4, #0x32
+_0204BE06:
+ lsr r3, r3, #0x1
+ bne _0204BDFE
+_0204BE0A:
+ add r0, r4, #0x0
+ pop {r4-r7}
+ bx lr
+
+ thumb_func_start FUN_0204BE10
+FUN_0204BE10: ; 0x0204BE10
+ ldr r0, [r0, #0x48]
+ bx lr
+
+ thumb_func_start FUN_0204BE14
+FUN_0204BE14: ; 0x0204BE14
+ mov r0, #0xe8
+ bx lr
+
+ thumb_func_start FUN_0204BE18
+FUN_0204BE18: ; 0x0204BE18
+ push {r3-r5, lr}
+ mov r2, #0x0
+ add r3, r2, #0x0
+_0204BE1E:
+ add r1, r0, r2
+ add r2, r2, #0x1
+ strb r3, [r1, #0x3]
+ cmp r2, #0x20
+ blt _0204BE1E
+ strb r3, [r0, #0x1]
+ strb r3, [r0, #0x2]
+ ldrb r1, [r0, #0x0]
+ mov r2, #0x1
+ bic r1, r2
+ strb r1, [r0, #0x0]
+ ldrb r4, [r0, #0x0]
+ mov r1, #0x38
+ bic r4, r1
+ strb r4, [r0, #0x0]
+ ldrb r4, [r0, #0x0]
+ mov r1, #0x2
+ bic r4, r1
+ strb r4, [r0, #0x0]
+ str r3, [r0, #0x24]
+ ldrh r1, [r0, #0x28]
+ bic r1, r2
+ strh r1, [r0, #0x28]
+ ldrh r2, [r0, #0x28]
+ mov r1, #0x3e
+ bic r2, r1
+ strh r2, [r0, #0x28]
+ ldrh r2, [r0, #0x28]
+ ldr r1, _0204BEB0 ; =0xFFFFF03F
+ and r1, r2
+ strh r1, [r0, #0x28]
+ add r1, r0, #0x0
+ mov r2, #0x1
+ add r1, #0xa8
+ strb r2, [r1, #0x0]
+ add r1, r0, #0x0
+ add r1, #0xa4
+ str r3, [r1, #0x0]
+ ldr r1, _0204BEB4 ; =0x020F486C
+ add r2, r0, #0x0
+_0204BE6E:
+ ldrb r5, [r1, #0x0]
+ add r4, r2, #0x0
+ add r4, #0xa9
+ strb r5, [r4, #0x0]
+ add r4, r2, #0x0
+ ldrb r5, [r1, #0x1]
+ add r4, #0xaa
+ add r3, r3, #0x1
+ strb r5, [r4, #0x0]
+ add r1, r1, #0x2
+ add r2, r2, #0x2
+ cmp r3, #0x6
+ blt _0204BE6E
+ mov r4, #0x0
+ add r3, r0, #0x0
+ add r1, r4, #0x0
+_0204BE8E:
+ add r2, r3, #0x0
+ add r2, #0xb6
+ strh r1, [r2, #0x0]
+ add r2, r3, #0x0
+ add r2, #0xb8
+ add r4, r4, #0x1
+ add r3, r3, #0x4
+ strh r1, [r2, #0x0]
+ cmp r4, #0xc
+ blt _0204BE8E
+ ldrb r3, [r0, #0x0]
+ mov r2, #0x4
+ bic r3, r2
+ strb r3, [r0, #0x0]
+ bl FUN_0204BED8
+ pop {r3-r5, pc}
+ .balign 4
+_0204BEB0: .word 0xFFFFF03F
+_0204BEB4: .word 0x020F486C
+
+ thumb_func_start FUN_0204BEB8
+FUN_0204BEB8: ; 0x0204BEB8
+ ldrb r2, [r0, #0x0]
+ mov r1, #0x1
+ bic r2, r1
+ mov r1, #0x1
+ orr r1, r2
+ strb r1, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0204BEC8
+FUN_0204BEC8: ; 0x0204BEC8
+ ldrb r0, [r0, #0x0]
+ lsl r0, r0, #0x1f
+ lsr r0, r0, #0x1f
+ bx lr
+
+ thumb_func_start FUN_0204BED0
+FUN_0204BED0: ; 0x0204BED0
+ add r0, r0, r1
+ ldrb r0, [r0, #0x3]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0204BED8
+FUN_0204BED8: ; 0x0204BED8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bmi _0204BEE4
+ cmp r4, #0x19
+ blt _0204BEE8
+_0204BEE4:
+ bl ErrorHandling
+_0204BEE8:
+ mov r0, #0x1
+ ldrsb r1, [r5, r0]
+ cmp r1, #0x19
+ bge _0204BF10
+ add r2, r5, #0x3
+ ldrb r1, [r2, r4]
+ cmp r1, #0x0
+ bne _0204BF10
+ strb r0, [r2, r4]
+ ldrsb r0, [r5, r0]
+ add r0, r0, #0x1
+ strb r0, [r5, #0x1]
+ cmp r4, #0x3
+ bne _0204BF0C
+ ldrb r1, [r5, #0x0]
+ mov r0, #0x2
+ orr r0, r1
+ strb r0, [r5, #0x0]
+_0204BF0C:
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0204BF10:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0204BF14
+FUN_0204BF14: ; 0x0204BF14
+ mov r1, #0x2
+ ldrsb r0, [r0, r1]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0204BF1C
+FUN_0204BF1C: ; 0x0204BF1C
+ push {r3-r4}
+ mov r1, #0x2
+ ldrsb r3, [r0, r1]
+ mov r2, #0x0
+ add r4, r3, #0x0
+_0204BF26:
+ add r3, r3, #0x1
+ cmp r3, #0x19
+ blt _0204BF2E
+ add r3, r2, #0x0
+_0204BF2E:
+ cmp r3, r4
+ beq _0204BF3A
+ add r1, r0, r3
+ ldrb r1, [r1, #0x3]
+ cmp r1, #0x0
+ beq _0204BF26
+_0204BF3A:
+ mov r1, #0x2
+ strb r3, [r0, #0x2]
+ ldrsb r0, [r0, r1]
+ pop {r3-r4}
+ bx lr
+
+ thumb_func_start FUN_0204BF44
+FUN_0204BF44: ; 0x0204BF44
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _0204BF4E
+ bl ErrorHandling
+_0204BF4E:
+ ldrb r0, [r4, #0x0]
+ lsl r0, r0, #0x1a
+ lsr r0, r0, #0x1d
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204BF58
+FUN_0204BF58: ; 0x0204BF58
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r5, #0x0
+ bne _0204BF66
+ bl ErrorHandling
+_0204BF66:
+ cmp r4, #0x8
+ blo _0204BF6E
+ bl ErrorHandling
+_0204BF6E:
+ ldrb r1, [r5, #0x0]
+ mov r0, #0x38
+ bic r1, r0
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ lsl r0, r0, #0x1d
+ lsr r0, r0, #0x1a
+ orr r0, r1
+ strb r0, [r5, #0x0]
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204BF84
+FUN_0204BF84: ; 0x0204BF84
+ ldr r0, [r0, #0x24]
+ bx lr
+
+ thumb_func_start FUN_0204BF88
+FUN_0204BF88: ; 0x0204BF88
+ ldrb r2, [r0, #0x0]
+ lsl r2, r2, #0x1e
+ lsr r2, r2, #0x1f
+ beq _0204BF92
+ str r1, [r0, #0x24]
+_0204BF92:
+ bx lr
+
+ thumb_func_start FUN_0204BF94
+FUN_0204BF94: ; 0x0204BF94
+ ldrh r0, [r0, #0x28]
+ lsl r0, r0, #0x1f
+ lsr r0, r0, #0x1f
+ bx lr
+
+ thumb_func_start FUN_0204BF9C
+FUN_0204BF9C: ; 0x0204BF9C
+ ldrh r3, [r0, #0x28]
+ lsl r3, r3, #0x1a
+ lsr r3, r3, #0x1b
+ str r3, [r1, #0x0]
+ ldrh r0, [r0, #0x28]
+ lsl r0, r0, #0x14
+ lsr r0, r0, #0x1a
+ str r0, [r2, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0204BFB0
+FUN_0204BFB0: ; 0x0204BFB0
+ push {r4-r5}
+ ldrh r4, [r0, #0x28]
+ mov r5, #0x1
+ lsl r1, r1, #0x10
+ bic r4, r5
+ lsr r5, r1, #0x10
+ mov r1, #0x1
+ and r1, r5
+ orr r1, r4
+ strh r1, [r0, #0x28]
+ lsl r2, r2, #0x10
+ lsr r2, r2, #0x10
+ lsl r2, r2, #0x1b
+ ldrh r1, [r0, #0x28]
+ mov r4, #0x3e
+ lsr r2, r2, #0x1a
+ bic r1, r4
+ orr r1, r2
+ strh r1, [r0, #0x28]
+ ldrh r2, [r0, #0x28]
+ ldr r1, _0204BFEC ; =0xFFFFF03F
+ and r2, r1
+ lsl r1, r3, #0x10
+ lsr r1, r1, #0x10
+ lsl r1, r1, #0x1a
+ lsr r1, r1, #0x14
+ orr r1, r2
+ strh r1, [r0, #0x28]
+ pop {r4-r5}
+ bx lr
+ .balign 4
+_0204BFEC: .word 0xFFFFF03F
+
+ thumb_func_start FUN_0204BFF0
+FUN_0204BFF0: ; 0x0204BFF0
+ push {r3-r4}
+ add r3, r0, #0x0
+ add r3, #0xa8
+ ldrb r3, [r3, #0x0]
+ cmp r3, r1
+ bne _0204C016
+ add r1, r0, #0x0
+ add r1, #0xa4
+ ldr r4, [r1, #0x0]
+ mov r3, #0x1
+ sub r1, r2, #0x1
+ add r2, r3, #0x0
+ lsl r2, r1
+ add r1, r4, #0x0
+ orr r1, r2
+ add r0, #0xa4
+ str r1, [r0, #0x0]
+ pop {r3-r4}
+ bx lr
+_0204C016:
+ add r3, r0, #0x0
+ add r3, #0xa8
+ strb r1, [r3, #0x0]
+ mov r3, #0x1
+ sub r1, r2, #0x1
+ add r2, r3, #0x0
+ lsl r2, r1
+ add r0, #0xa4
+ str r2, [r0, #0x0]
+ pop {r3-r4}
+ bx lr
+
+ thumb_func_start FUN_0204C02C
+FUN_0204C02C: ; 0x0204C02C
+ push {r3-r4}
+ add r3, r0, #0x0
+ add r3, #0xa8
+ ldrb r3, [r3, #0x0]
+ cmp r3, r1
+ bne _0204C052
+ add r1, r0, #0x0
+ add r1, #0xa4
+ ldr r4, [r1, #0x0]
+ mov r3, #0x1
+ sub r1, r2, #0x1
+ add r2, r3, #0x0
+ lsl r2, r1
+ mvn r1, r2
+ and r1, r4
+ add r0, #0xa4
+ str r1, [r0, #0x0]
+ pop {r3-r4}
+ bx lr
+_0204C052:
+ add r2, r0, #0x0
+ add r2, #0xa8
+ strb r1, [r2, #0x0]
+ mov r1, #0x0
+ add r0, #0xa4
+ str r1, [r0, #0x0]
+ pop {r3-r4}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0204C064
+FUN_0204C064: ; 0x0204C064
+ add r3, r0, #0x0
+ add r3, #0xa8
+ ldrb r3, [r3, #0x0]
+ cmp r3, r1
+ bne _0204C07C
+ add r0, #0xa4
+ ldr r1, [r0, #0x0]
+ sub r0, r2, #0x1
+ lsr r1, r0
+ mov r0, #0x1
+ and r0, r1
+ bx lr
+_0204C07C:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_0204C080
+FUN_0204C080: ; 0x0204C080
+ push {r3-r7, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ add r7, r3, #0x0
+ cmp r4, #0x6
+ blt _0204C092
+ bl ErrorHandling
+_0204C092:
+ lsl r1, r4, #0x1
+ add r0, r5, r1
+ add r0, #0xa9
+ strb r6, [r0, #0x0]
+ add r0, r5, r1
+ add r0, #0xaa
+ strb r7, [r0, #0x0]
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204C0A4
+FUN_0204C0A4: ; 0x0204C0A4
+ push {r3-r7, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ add r7, r3, #0x0
+ cmp r4, #0x6
+ blt _0204C0B6
+ bl ErrorHandling
+_0204C0B6:
+ lsl r1, r4, #0x1
+ add r0, r5, r1
+ add r0, #0xa9
+ ldrb r0, [r0, #0x0]
+ strb r0, [r6, #0x0]
+ add r0, r5, r1
+ add r0, #0xaa
+ ldrb r0, [r0, #0x0]
+ strb r0, [r7, #0x0]
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204C0CC
+FUN_0204C0CC: ; 0x0204C0CC
+ ldrb r0, [r0, #0x0]
+ lsl r0, r0, #0x1d
+ lsr r0, r0, #0x1f
+ bx lr
+
+ thumb_func_start FUN_0204C0D4
+FUN_0204C0D4: ; 0x0204C0D4
+ push {r3, lr}
+ ldrb r2, [r0, #0x0]
+ lsl r2, r2, #0x1d
+ lsr r2, r2, #0x1f
+ beq _0204C0E6
+ add r0, #0x2a
+ mov r2, #0x78
+ blx MI_CpuCopy8
+_0204C0E6:
+ pop {r3, pc}
+
+ thumb_func_start FUN_0204C0E8
+FUN_0204C0E8: ; 0x0204C0E8
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, r1, #0x0
+ add r1, r4, #0x0
+ add r1, #0x2a
+ mov r2, #0x78
+ blx MI_CpuCopy8
+ ldrb r1, [r4, #0x0]
+ mov r0, #0x4
+ orr r0, r1
+ strb r0, [r4, #0x0]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204C104
+FUN_0204C104: ; 0x0204C104
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ bl FUN_0204C158
+ cmp r0, #0xc
+ blt _0204C138
+ mov r0, #0x0
+ add r1, r5, #0x0
+_0204C116:
+ add r2, r1, #0x0
+ add r2, #0xba
+ ldrh r3, [r2, #0x0]
+ add r2, r1, #0x0
+ add r2, #0xb6
+ strh r3, [r2, #0x0]
+ add r2, r1, #0x0
+ add r2, #0xbc
+ ldrh r3, [r2, #0x0]
+ add r2, r1, #0x0
+ add r2, #0xb8
+ add r0, r0, #0x1
+ add r1, r1, #0x4
+ strh r3, [r2, #0x0]
+ cmp r0, #0xb
+ blt _0204C116
+ mov r0, #0xb
+_0204C138:
+ lsl r4, r0, #0x2
+ add r0, r6, #0x0
+ mov r1, #0x5
+ mov r2, #0x0
+ bl FUN_020672BC
+ add r1, r5, r4
+ add r1, #0xb6
+ strh r0, [r1, #0x0]
+ add r0, r6, #0x0
+ bl FUN_0206B754
+ add r1, r5, r4
+ add r1, #0xb8
+ strh r0, [r1, #0x0]
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0204C158
+FUN_0204C158: ; 0x0204C158
+ mov r2, #0x0
+_0204C15A:
+ add r1, r0, #0x0
+ add r1, #0xb6
+ ldrh r1, [r1, #0x0]
+ cmp r1, #0x0
+ bne _0204C168
+ add r0, r2, #0x0
+ bx lr
+_0204C168:
+ add r2, r2, #0x1
+ add r0, r0, #0x4
+ cmp r2, #0xc
+ blt _0204C15A
+ add r0, r2, #0x0
+ bx lr
+
+ thumb_func_start FUN_0204C174
+FUN_0204C174: ; 0x0204C174
+ push {r3-r7, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r7, r2, #0x0
+ str r3, [sp, #0x0]
+ cmp r4, #0xc
+ blt _0204C186
+ bl ErrorHandling
+_0204C186:
+ add r6, r5, #0x0
+ lsl r4, r4, #0x2
+ add r6, #0xb6
+ ldrh r0, [r6, r4]
+ cmp r0, #0x0
+ bne _0204C196
+ bl ErrorHandling
+_0204C196:
+ ldrh r0, [r6, r4]
+ str r0, [r7, #0x0]
+ add r0, r5, r4
+ add r0, #0xb8
+ ldrh r1, [r0, #0x0]
+ ldr r0, [sp, #0x0]
+ str r1, [r0, #0x0]
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204C1A8
+FUN_0204C1A8: ; 0x0204C1A8
+ ldr r3, _0204C1B0 ; =FUN_02022610
+ mov r1, #0x5
+ bx r3
+ nop
+_0204C1B0: .word FUN_02022610
+
+ thumb_func_start FUN_0204C1B4
+FUN_0204C1B4: ; 0x0204C1B4
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ add r5, r1, #0x0
+ ldr r0, [sp, #0x24]
+ mov r1, #0x20
+ add r4, r2, #0x0
+ add r6, r3, #0x0
+ bl FUN_02016998
+ add r2, r0, #0x0
+ str r5, [r2, #0x4]
+ str r4, [r2, #0x8]
+ str r6, [r2, #0xc]
+ add r0, sp, #0x8
+ ldrh r0, [r0, #0x10]
+ ldr r1, _0204C1F0 ; =FUN_0204C1F4
+ strh r0, [r2, #0x10]
+ ldr r0, [sp, #0x1c]
+ str r0, [r2, #0x14]
+ ldr r0, [sp, #0x20]
+ str r0, [r2, #0x18]
+ ldr r0, [sp, #0x24]
+ str r0, [r2, #0x1c]
+ mov r0, #0x0
+ str r0, [r2, #0x0]
+ add r0, r7, #0x0
+ bl FUN_0204640C
+ pop {r3-r7, pc}
+ nop
+_0204C1F0: .word FUN_0204C1F4
+
+ thumb_func_start FUN_0204C1F4
+FUN_0204C1F4: ; 0x0204C1F4
+ push {r4-r5, lr}
+ sub sp, #0xc
+ add r4, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ beq _0204C214
+ cmp r0, #0x1
+ beq _0204C23C
+ b _0204C258
+_0204C214:
+ ldr r0, [r5, #0x4]
+ ldr r0, [r0, #0x1c]
+ bl FUN_021F4608
+ ldr r0, [r4, #0x14]
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x18]
+ str r0, [sp, #0x4]
+ ldr r0, [r4, #0x1c]
+ str r0, [sp, #0x8]
+ ldrh r3, [r4, #0x10]
+ ldr r0, [r4, #0x4]
+ ldr r1, [r4, #0x8]
+ ldr r2, [r4, #0xc]
+ bl FUN_0200E1D0
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _0204C258
+_0204C23C:
+ bl FUN_0200E308
+ cmp r0, #0x0
+ beq _0204C258
+ ldr r0, [r5, #0x4]
+ ldr r0, [r0, #0x1c]
+ bl FUN_021F45E8
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0xc
+ mov r0, #0x1
+ pop {r4-r5, pc}
+_0204C258:
+ mov r0, #0x0
+ add sp, #0xc
+ pop {r4-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204C260
+FUN_0204C260: ; 0x0204C260
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ add r5, r1, #0x0
+ mov r0, #0xb
+ mov r1, #0x24
+ add r4, r2, #0x0
+ add r6, r3, #0x0
+ bl FUN_020169D8
+ add r2, r0, #0x0
+ mov r0, #0x0
+ str r0, [r2, #0x0]
+ str r0, [r2, #0x4]
+ str r5, [r2, #0x8]
+ str r4, [r2, #0xc]
+ ldr r0, [sp, #0x18]
+ str r6, [r2, #0x10]
+ str r0, [r2, #0x14]
+ ldr r0, [sp, #0x1c]
+ ldr r1, _0204C298 ; =FUN_0204C380
+ str r0, [r2, #0x18]
+ ldr r0, [sp, #0x20]
+ str r0, [r2, #0x20]
+ add r0, r7, #0x0
+ bl FUN_020463CC
+ pop {r3-r7, pc}
+ nop
+_0204C298: .word FUN_0204C380
+
+ thumb_func_start FUN_0204C29C
+FUN_0204C29C: ; 0x0204C29C
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r7, r0, #0x0
+ add r5, r1, #0x0
+ mov r0, #0xb
+ mov r1, #0x24
+ str r2, [sp, #0x0]
+ str r3, [sp, #0x4]
+ bl FUN_020169D8
+ add r6, r0, #0x0
+ mov r4, #0x0
+ str r4, [r6, #0x0]
+ str r4, [r6, #0x4]
+ ldr r0, [sp, #0x0]
+ str r5, [r6, #0x8]
+ str r0, [r6, #0xc]
+ ldr r0, [sp, #0x4]
+ str r0, [r6, #0x10]
+ ldr r0, [sp, #0x20]
+ str r0, [r6, #0x14]
+ ldr r0, [sp, #0x24]
+ str r0, [r6, #0x18]
+ ldr r0, [r7, #0x1c]
+ ldr r0, [r0, #0x0]
+ str r0, [sp, #0x8]
+ bl FUN_02034930
+ cmp r0, #0x0
+ beq _0204C308
+ add r0, r5, #0x0
+ bl FUN_02034930
+ cmp r0, #0x0
+ beq _0204C2E6
+ mov r4, #0x6
+ b _0204C36A
+_0204C2E6:
+ add r0, r5, #0x0
+ bl FUN_02034964
+ cmp r0, #0x0
+ beq _0204C2F4
+ mov r4, #0x5
+ b _0204C36A
+_0204C2F4:
+ add r0, r5, #0x0
+ bl FUN_02034944
+ cmp r0, #0x0
+ beq _0204C302
+ mov r4, #0x6
+ b _0204C36A
+_0204C302:
+ bl ErrorHandling
+ b _0204C36A
+_0204C308:
+ ldr r0, [sp, #0x8]
+ bl FUN_02034964
+ cmp r0, #0x0
+ beq _0204C334
+ add r0, r5, #0x0
+ bl FUN_02034930
+ cmp r0, #0x0
+ beq _0204C320
+ mov r4, #0x4
+ b _0204C36A
+_0204C320:
+ add r0, r5, #0x0
+ bl FUN_02034944
+ cmp r0, #0x0
+ beq _0204C32E
+ mov r4, #0x6
+ b _0204C36A
+_0204C32E:
+ bl ErrorHandling
+ b _0204C36A
+_0204C334:
+ ldr r0, [sp, #0x8]
+ bl FUN_02034944
+ cmp r0, #0x0
+ beq _0204C366
+ add r0, r5, #0x0
+ bl FUN_02034964
+ cmp r0, #0x0
+ bne _0204C36A
+ add r0, r5, #0x0
+ bl FUN_02034944
+ cmp r0, #0x0
+ beq _0204C356
+ mov r4, #0x6
+ b _0204C36A
+_0204C356:
+ add r0, r5, #0x0
+ bl FUN_02034930
+ cmp r0, #0x0
+ bne _0204C36A
+ bl ErrorHandling
+ b _0204C36A
+_0204C366:
+ bl ErrorHandling
+_0204C36A:
+ ldr r1, _0204C37C ; =FUN_0204C380
+ add r0, r7, #0x0
+ add r2, r6, #0x0
+ str r4, [r6, #0x20]
+ bl FUN_020463CC
+ add sp, #0xc
+ pop {r4-r7, pc}
+ nop
+_0204C37C: .word FUN_0204C380
+
+ thumb_func_start FUN_0204C380
+FUN_0204C380: ; 0x0204C380
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ bl FUN_02046528
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ add r6, r4, #0x0
+ ldr r1, [r4, #0x0]
+ add r6, #0x8
+ cmp r1, #0x6
+ bhi _0204C458
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0204C3A8: ; jump table (using 16-bit offset)
+ .short _0204C3B6 - _0204C3A8 - 2; case 0
+ .short _0204C3DA - _0204C3A8 - 2; case 1
+ .short _0204C3E8 - _0204C3A8 - 2; case 2
+ .short _0204C3F8 - _0204C3A8 - 2; case 3
+ .short _0204C406 - _0204C3A8 - 2; case 4
+ .short _0204C41E - _0204C3A8 - 2; case 5
+ .short _0204C450 - _0204C3A8 - 2; case 6
+_0204C3B6:
+ mov r0, #0x0
+ str r0, [r4, #0x4]
+ ldr r1, [r6, #0x0]
+ add r0, r7, #0x0
+ bl FUN_0204AD60
+ ldr r1, [r4, #0x20]
+ add r0, r5, #0x0
+ lsl r2, r1, #0x2
+ ldr r1, _0204C45C ; =0x020F4894
+ ldr r1, [r1, r2]
+ add r2, r4, #0x0
+ bl FUN_0204640C
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _0204C458
+_0204C3DA:
+ add r0, r5, #0x0
+ bl FUN_0204AF3C
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _0204C458
+_0204C3E8:
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02049160
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _0204C458
+_0204C3F8:
+ add r0, r5, #0x0
+ bl FUN_0204AF84
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _0204C458
+_0204C406:
+ ldr r0, [r4, #0x20]
+ lsl r1, r0, #0x2
+ ldr r0, _0204C460 ; =0x020F48B0
+ ldr r1, [r0, r1]
+ cmp r1, #0x0
+ beq _0204C416
+ add r0, r7, #0x0
+ blx r1
+_0204C416:
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _0204C458
+_0204C41E:
+ bl FUN_02005404
+ cmp r0, #0x0
+ bne _0204C458
+ ldr r1, [r6, #0x0]
+ add r0, r7, #0x0
+ bl FUN_0204AD8C
+ add r0, r7, #0x0
+ bl FUN_021E331C
+ mov r0, #0x0
+ str r0, [r4, #0x4]
+ ldr r1, [r4, #0x20]
+ add r0, r5, #0x0
+ lsl r2, r1, #0x2
+ ldr r1, _0204C464 ; =0x020F4878
+ ldr r1, [r1, r2]
+ add r2, r4, #0x0
+ bl FUN_0204640C
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _0204C458
+_0204C450:
+ bl FUN_02016A18
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0204C458:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+_0204C45C: .word 0x020F4894
+_0204C460: .word 0x020F48B0
+_0204C464: .word 0x020F4878
+
+ thumb_func_start FUN_0204C468
+FUN_0204C468: ; 0x0204C468
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_02046528
+ add r0, r5, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x0
+ beq _0204C484
+ cmp r0, #0x1
+ beq _0204C498
+ b _0204C49C
+_0204C484:
+ ldr r0, _0204C4A0 ; =0x00000603
+ bl FUN_020054C8
+ add r0, r5, #0x0
+ bl FUN_0204AFC8
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _0204C49C
+_0204C498:
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0204C49C:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+_0204C4A0: .word 0x00000603
+
+ thumb_func_start FUN_0204C4A4
+FUN_0204C4A4: ; 0x0204C4A4
+ push {r4-r6, lr}
+ add r6, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x3
+ bhi _0204C522
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0204C4C8: ; jump table (using 16-bit offset)
+ .short _0204C4D0 - _0204C4C8 - 2; case 0
+ .short _0204C4F6 - _0204C4C8 - 2; case 1
+ .short _0204C510 - _0204C4C8 - 2; case 2
+ .short _0204C51E - _0204C4C8 - 2; case 3
+_0204C4D0:
+ bl FUN_021DA5B8
+ str r0, [r4, #0x1c]
+ ldr r0, [r5, #0x38]
+ bl FUN_02055320
+ add r6, r0, #0x0
+ ldr r0, [r5, #0x38]
+ bl FUN_0205532C
+ add r1, r0, #0x0
+ ldr r2, [r4, #0x1c]
+ add r0, r6, #0x0
+ bl FUN_021DA5D0
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _0204C522
+_0204C4F6:
+ ldr r1, [r4, #0x1c]
+ add r0, r5, #0x0
+ bl FUN_021DA5D8
+ cmp r0, #0x0
+ beq _0204C522
+ ldr r0, [r4, #0x1c]
+ bl FUN_021DA5C8
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _0204C522
+_0204C510:
+ add r0, r6, #0x0
+ bl FUN_0204AFC8
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _0204C522
+_0204C51E:
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_0204C522:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204C528
+FUN_0204C528: ; 0x0204C528
+ push {r4-r6, lr}
+ add r4, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x0
+ beq _0204C54A
+ cmp r0, #0x1
+ beq _0204C570
+ cmp r0, #0x2
+ beq _0204C598
+ b _0204C59C
+_0204C54A:
+ bl FUN_021DA5B8
+ str r0, [r4, #0x1c]
+ ldr r0, [r5, #0x38]
+ bl FUN_02055320
+ add r6, r0, #0x0
+ ldr r0, [r5, #0x38]
+ bl FUN_0205532C
+ add r1, r0, #0x0
+ ldr r2, [r4, #0x1c]
+ add r0, r6, #0x0
+ bl FUN_021DA5D0
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _0204C59C
+_0204C570:
+ ldr r0, [r5, #0x38]
+ ldr r6, [r4, #0x1c]
+ bl FUN_020552F8
+ add r2, r0, #0x0
+ lsl r2, r2, #0x18
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ lsr r2, r2, #0x18
+ bl FUN_021DAC70
+ cmp r0, #0x0
+ beq _0204C59C
+ ldr r0, [r4, #0x1c]
+ bl FUN_021DA5C8
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _0204C59C
+_0204C598:
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_0204C59C:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0204C5A0
+FUN_0204C5A0: ; 0x0204C5A0
+ push {r4-r6, lr}
+ add r4, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x3
+ bhi _0204C63C
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0204C5C4: ; jump table (using 16-bit offset)
+ .short _0204C5CC - _0204C5C4 - 2; case 0
+ .short _0204C5FE - _0204C5C4 - 2; case 1
+ .short _0204C61C - _0204C5C4 - 2; case 2
+ .short _0204C630 - _0204C5C4 - 2; case 3
+_0204C5CC:
+ ldr r0, [r5, #0x38]
+ bl FUN_020552F8
+ add r6, r0, #0x0
+ ldr r0, [r5, #0x38]
+ bl FUN_020553A0
+ cmp r6, #0x2
+ bne _0204C5E6
+ mov r1, #0xa
+ bl FUN_0205ADDC
+ b _0204C5F6
+_0204C5E6:
+ cmp r6, #0x3
+ bne _0204C5F2
+ mov r1, #0xb
+ bl FUN_0205ADDC
+ b _0204C5F6
+_0204C5F2:
+ bl ErrorHandling
+_0204C5F6:
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _0204C63C
+_0204C5FE:
+ ldr r0, [r5, #0x38]
+ bl FUN_020553A0
+ add r5, r0, #0x0
+ bl FUN_0205AE28
+ cmp r0, #0x1
+ bne _0204C63C
+ add r0, r5, #0x0
+ bl FUN_0205AE50
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _0204C63C
+_0204C61C:
+ ldr r0, _0204C640 ; =0x00000603
+ bl FUN_020054C8
+ mov r0, #0x0
+ bl FUN_021D7CA4
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _0204C63C
+_0204C630:
+ bl FUN_0200E308
+ cmp r0, #0x0
+ beq _0204C63C
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_0204C63C:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+_0204C640: .word 0x00000603
+
+ thumb_func_start FUN_0204C644
+FUN_0204C644: ; 0x0204C644
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl FUN_02046528
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldr r0, [r6, #0x38]
+ bl FUN_020553A0
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x0
+ beq _0204C668
+ cmp r0, #0x1
+ beq _0204C67E
+ b _0204C682
+_0204C668:
+ bl FUN_021DB030
+ add r2, r0, #0x0
+ ldr r1, _0204C688 ; =0x021DB1D1
+ add r0, r5, #0x0
+ bl FUN_0204640C
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _0204C682
+_0204C67E:
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_0204C682:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ nop
+_0204C688: .word 0x021DB1D1
+
+ thumb_func_start FUN_0204C68C
+FUN_0204C68C: ; 0x0204C68C
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl FUN_02046528
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldr r0, [r6, #0x38]
+ bl FUN_020553A0
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x0
+ beq _0204C6B0
+ cmp r0, #0x1
+ beq _0204C6C6
+ b _0204C6CA
+_0204C6B0:
+ bl FUN_021DB030
+ add r2, r0, #0x0
+ ldr r1, _0204C6D0 ; =0x021DB145
+ add r0, r5, #0x0
+ bl FUN_0204640C
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _0204C6CA
+_0204C6C6:
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_0204C6CA:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ nop
+_0204C6D0: .word 0x021DB145
+
+ thumb_func_start FUN_0204C6D4
+FUN_0204C6D4: ; 0x0204C6D4
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ bl FUN_02046528
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_0204652C
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x4]
+ cmp r0, #0x3
+ bhi _0204C798
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0204C6F8: ; jump table (using 16-bit offset)
+ .short _0204C700 - _0204C6F8 - 2; case 0
+ .short _0204C74A - _0204C6F8 - 2; case 1
+ .short _0204C770 - _0204C6F8 - 2; case 2
+ .short _0204C794 - _0204C6F8 - 2; case 3
+_0204C700:
+ ldr r0, [r4, #0x38]
+ bl FUN_020553A0
+ add r7, r0, #0x0
+ ldr r0, [r4, #0x38]
+ bl FUN_02055320
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x38]
+ bl FUN_0205532C
+ add r2, r0, #0x0
+ ldr r1, [sp, #0x0]
+ add r0, r4, #0x0
+ bl FUN_0204A6E0
+ bl FUN_020547B0
+ cmp r0, #0x0
+ beq _0204C736
+ add r0, r7, #0x0
+ mov r1, #0x1
+ bl FUN_0205889C
+ mov r0, #0x1
+ str r0, [r5, #0x4]
+ b _0204C798
+_0204C736:
+ bl FUN_021DB030
+ add r2, r0, #0x0
+ ldr r1, _0204C79C ; =0x021DB251
+ add r0, r6, #0x0
+ bl FUN_0204640C
+ mov r0, #0x3
+ str r0, [r5, #0x4]
+ b _0204C798
+_0204C74A:
+ bl FUN_021DA5B8
+ str r0, [r5, #0x1c]
+ ldr r0, [r4, #0x38]
+ bl FUN_02055320
+ add r6, r0, #0x0
+ ldr r0, [r4, #0x38]
+ bl FUN_0205532C
+ add r1, r0, #0x0
+ ldr r2, [r5, #0x1c]
+ add r0, r6, #0x0
+ bl FUN_021DA5D0
+ ldr r0, [r5, #0x4]
+ add r0, r0, #0x1
+ str r0, [r5, #0x4]
+ b _0204C798
+_0204C770:
+ ldr r5, [r5, #0x1c]
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ bl FUN_021DA7B4
+ cmp r0, #0x0
+ beq _0204C798
+ add r0, r5, #0x0
+ bl FUN_021DA5C8
+ ldr r0, [r4, #0x38]
+ bl FUN_020553A0
+ mov r1, #0x0
+ bl FUN_0205889C
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0204C794:
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0204C798:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+_0204C79C: .word 0x021DB251
+
+ thumb_func_start FUN_0204C7A0
+FUN_0204C7A0: ; 0x0204C7A0
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x0
+ beq _0204C7BE
+ cmp r0, #0x1
+ beq _0204C814
+ b _0204C818
+_0204C7BE:
+ ldr r0, [r5, #0x38]
+ bl FUN_020553A0
+ add r7, r0, #0x0
+ ldr r0, [r5, #0x38]
+ bl FUN_02055320
+ str r0, [sp, #0x0]
+ ldr r0, [r5, #0x38]
+ bl FUN_0205532C
+ add r2, r0, #0x0
+ ldr r1, [sp, #0x0]
+ add r0, r5, #0x0
+ bl FUN_0204A6E0
+ bl FUN_020547B0
+ cmp r0, #0x0
+ beq _0204C7FE
+ add r0, r7, #0x0
+ mov r1, #0x1
+ bl FUN_0205889C
+ mov r0, #0x1
+ str r0, [r4, #0x4]
+ ldr r1, _0204C81C ; =FUN_0204C6D4
+ add r0, r6, #0x0
+ add r2, r4, #0x0
+ bl FUN_020463EC
+ b _0204C818
+_0204C7FE:
+ bl FUN_021DB030
+ add r2, r0, #0x0
+ ldr r1, _0204C820 ; =0x021DB381
+ add r0, r6, #0x0
+ bl FUN_0204640C
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _0204C818
+_0204C814:
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0204C818:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+_0204C81C: .word FUN_0204C6D4
+_0204C820: .word 0x021DB381
+
+ thumb_func_start FUN_0204C824
+FUN_0204C824: ; 0x0204C824
+ push {r4-r6, lr}
+ add r4, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x0
+ beq _0204C846
+ cmp r0, #0x1
+ beq _0204C86C
+ cmp r0, #0x2
+ beq _0204C894
+ b _0204C898
+_0204C846:
+ bl FUN_021DA5B8
+ str r0, [r4, #0x1c]
+ ldr r0, [r5, #0x38]
+ bl FUN_02055320
+ add r6, r0, #0x0
+ ldr r0, [r5, #0x38]
+ bl FUN_0205532C
+ add r1, r0, #0x0
+ ldr r2, [r4, #0x1c]
+ add r0, r6, #0x0
+ bl FUN_021DA5D0
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _0204C898
+_0204C86C:
+ ldr r0, [r5, #0x38]
+ ldr r6, [r4, #0x1c]
+ bl FUN_020552F8
+ add r2, r0, #0x0
+ lsl r2, r2, #0x18
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ lsr r2, r2, #0x18
+ bl FUN_021DAAA4
+ cmp r0, #0x0
+ beq _0204C898
+ ldr r0, [r4, #0x1c]
+ bl FUN_021DA5C8
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _0204C898
+_0204C894:
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_0204C898:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0204C89C
+FUN_0204C89C: ; 0x0204C89C
+ push {r4-r6, lr}
+ add r4, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x3
+ bhi _0204C936
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0204C8C0: ; jump table (using 16-bit offset)
+ .short _0204C8C8 - _0204C8C0 - 2; case 0
+ .short _0204C904 - _0204C8C0 - 2; case 1
+ .short _0204C922 - _0204C8C0 - 2; case 2
+ .short _0204C932 - _0204C8C0 - 2; case 3
+_0204C8C8:
+ mov r0, #0x1
+ bl FUN_021D7CA4
+ ldr r0, [r5, #0x38]
+ bl FUN_020553A0
+ add r6, r0, #0x0
+ ldr r0, [r5, #0x38]
+ bl FUN_020552F8
+ cmp r0, #0x2
+ bne _0204C8EA
+ add r0, r6, #0x0
+ mov r1, #0xa
+ bl FUN_0205ADDC
+ b _0204C8FC
+_0204C8EA:
+ cmp r0, #0x3
+ bne _0204C8F8
+ add r0, r6, #0x0
+ mov r1, #0xb
+ bl FUN_0205ADDC
+ b _0204C8FC
+_0204C8F8:
+ bl ErrorHandling
+_0204C8FC:
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _0204C936
+_0204C904:
+ ldr r0, [r5, #0x38]
+ bl FUN_020553A0
+ add r5, r0, #0x0
+ bl FUN_0205AE28
+ cmp r0, #0x1
+ bne _0204C936
+ add r0, r5, #0x0
+ bl FUN_0205AE50
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _0204C936
+_0204C922:
+ bl FUN_0200E308
+ cmp r0, #0x0
+ beq _0204C936
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _0204C936
+_0204C932:
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_0204C936:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204C93C
+FUN_0204C93C: ; 0x0204C93C
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl FUN_02046528
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldr r0, [r6, #0x38]
+ bl FUN_020553A0
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x0
+ beq _0204C960
+ cmp r0, #0x1
+ beq _0204C976
+ b _0204C97A
+_0204C960:
+ bl FUN_021DB030
+ add r2, r0, #0x0
+ ldr r1, _0204C980 ; =0x021DB041
+ add r0, r5, #0x0
+ bl FUN_0204640C
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _0204C97A
+_0204C976:
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_0204C97A:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ nop
+_0204C980: .word 0x021DB041
+
+ thumb_func_start FUN_0204C984
+FUN_0204C984: ; 0x0204C984
+ push {r3-r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x38]
+ bl FUN_020552F8
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x38]
+ add r1, sp, #0x4
+ bl FUN_02055350
+ cmp r4, #0x3
+ bne _0204C9AA
+ mov r0, #0x1
+ ldr r1, [sp, #0x4]
+ lsl r0, r0, #0x10
+ sub r0, r1, r0
+ str r0, [sp, #0x4]
+ b _0204C9B4
+_0204C9AA:
+ mov r0, #0x1
+ ldr r1, [sp, #0x4]
+ lsl r0, r0, #0x10
+ add r0, r1, r0
+ str r0, [sp, #0x4]
+_0204C9B4:
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldr r1, [sp, #0x8]
+ ldr r2, [sp, #0x4]
+ ldr r3, [sp, #0xc]
+ add r0, r5, #0x0
+ bl FUN_0204A708
+ str r0, [sp, #0x8]
+ ldr r0, [r5, #0x38]
+ add r1, sp, #0x4
+ add r2, r4, #0x0
+ bl FUN_020554EC
+ ldr r0, [r5, #0x38]
+ bl FUN_02055360
+ ldr r1, [r5, #0x20]
+ bl FUN_0201EFEC
+ ldr r0, [r5, #0x38]
+ bl FUN_02055360
+ ldr r1, [r5, #0x20]
+ bl FUN_0201EC68
+ add sp, #0x10
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0204C9EC
+FUN_0204C9EC: ; 0x0204C9EC
+ push {r4-r6, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x38]
+ bl FUN_020552F8
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x38]
+ add r1, sp, #0x4
+ bl FUN_02055350
+ ldr r0, [r5, #0x38]
+ bl FUN_02055320
+ add r6, r0, #0x0
+ ldr r0, [r5, #0x38]
+ bl FUN_0205532C
+ add r2, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_0204A6E0
+ add r6, r0, #0x0
+ bl FUN_020548D8
+ cmp r0, #0x0
+ beq _0204CA32
+ mov r0, #0x1
+ ldr r1, [sp, #0x4]
+ lsl r0, r0, #0x10
+ add r0, r1, r0
+ str r0, [sp, #0x4]
+ mov r4, #0x2
+ b _0204CA48
+_0204CA32:
+ add r0, r6, #0x0
+ bl FUN_020548E4
+ cmp r0, #0x0
+ beq _0204CA48
+ mov r0, #0x1
+ ldr r1, [sp, #0x4]
+ lsl r0, r0, #0x10
+ sub r0, r1, r0
+ str r0, [sp, #0x4]
+ mov r4, #0x3
+_0204CA48:
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldr r1, [sp, #0x8]
+ ldr r2, [sp, #0x4]
+ ldr r3, [sp, #0xc]
+ add r0, r5, #0x0
+ bl FUN_0204A708
+ str r0, [sp, #0x8]
+ ldr r0, [r5, #0x38]
+ add r1, sp, #0x4
+ add r2, r4, #0x0
+ bl FUN_020554EC
+ ldr r0, [r5, #0x38]
+ bl FUN_02055360
+ ldr r1, [r5, #0x20]
+ bl FUN_0201EFEC
+ ldr r0, [r5, #0x38]
+ bl FUN_02055360
+ ldr r1, [r5, #0x20]
+ bl FUN_0201EC68
+ add sp, #0x10
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0204CA80
+FUN_0204CA80: ; 0x0204CA80
+ mov r1, #0x1c
+ mul r1, r0
+ ldr r0, _0204CA8C ; =0x020F48CC
+ ldrb r0, [r0, r1]
+ bx lr
+ nop
+_0204CA8C: .word 0x020F48CC
+
+ thumb_func_start FUN_0204CA90
+FUN_0204CA90: ; 0x0204CA90
+ mov r1, #0x1c
+ mul r1, r0
+ ldr r0, _0204CA9C ; =0x020F48CD
+ ldrb r0, [r0, r1]
+ bx lr
+ nop
+_0204CA9C: .word 0x020F48CD
+
+ thumb_func_start FUN_0204CAA0
+FUN_0204CAA0: ; 0x0204CAA0
+ mov r1, #0x1c
+ ldr r2, _0204CAAC ; =0x020F48CC
+ mul r1, r0
+ add r0, r2, r1
+ add r0, r0, #0x2
+ bx lr
+ .balign 4
+_0204CAAC: .word 0x020F48CC
+
+ thumb_func_start FUN_0204CAB0
+FUN_0204CAB0: ; 0x0204CAB0
+ mov r1, #0x1c
+ mul r1, r0
+ ldr r0, _0204CABC ; =0x020F48D7
+ ldrb r0, [r0, r1]
+ bx lr
+ nop
+_0204CABC: .word 0x020F48D7
+
+ thumb_func_start FUN_0204CAC0
+FUN_0204CAC0: ; 0x0204CAC0
+ mov r1, #0x1c
+ mul r1, r0
+ ldr r0, _0204CACC ; =0x020F48D8
+ ldrb r0, [r0, r1]
+ bx lr
+ nop
+_0204CACC: .word 0x020F48D8
+
+ thumb_func_start FUN_0204CAD0
+FUN_0204CAD0: ; 0x0204CAD0
+ mov r1, #0x1c
+ mul r1, r0
+ ldr r0, _0204CADC ; =0x020F48D9
+ ldrb r0, [r0, r1]
+ bx lr
+ nop
+_0204CADC: .word 0x020F48D9
+
+ thumb_func_start FUN_0204CAE0
+FUN_0204CAE0: ; 0x0204CAE0
+ mov r1, #0x1c
+ mul r1, r0
+ ldr r0, _0204CAEC ; =0x020F48DC
+ ldr r0, [r0, r1]
+ bx lr
+ nop
+_0204CAEC: .word 0x020F48DC
+
+ thumb_func_start FUN_0204CAF0
+FUN_0204CAF0: ; 0x0204CAF0
+ mov r1, #0x1c
+ mul r1, r0
+ ldr r0, _0204CAFC ; =0x020F48E0
+ ldr r0, [r0, r1]
+ bx lr
+ nop
+_0204CAFC: .word 0x020F48E0
+
+ thumb_func_start FUN_0204CB00
+FUN_0204CB00: ; 0x0204CB00
+ mov r1, #0x1c
+ mul r1, r0
+ ldr r0, _0204CB0C ; =0x020F48E4
+ ldrb r0, [r0, r1]
+ bx lr
+ nop
+_0204CB0C: .word 0x020F48E4
+
+ thumb_func_start FUN_0204CB10
+FUN_0204CB10: ; 0x0204CB10
+ mov r1, #0x1c
+ mul r1, r0
+ ldr r0, _0204CB1C ; =0x020F48E5
+ ldrb r0, [r0, r1]
+ bx lr
+ nop
+_0204CB1C: .word 0x020F48E5
+
+ thumb_func_start FUN_0204CB20
+FUN_0204CB20: ; 0x0204CB20
+ push {r3-r7, lr}
+ add r4, r1, #0x0
+ ldr r1, _0204CC34 ; =0x021C5A68
+ add r5, r2, #0x0
+ ldr r2, [r1, #0x0]
+ cmp r2, #0x0
+ beq _0204CB32
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0204CB32:
+ bne _0204CB40
+ mov r2, #0xb1
+ str r0, [r1, #0x0]
+ mov r1, #0x0
+ lsl r2, r2, #0x2
+ blx MI_CpuFill8
+_0204CB40:
+ ldr r1, _0204CC34 ; =0x021C5A68
+ ldr r0, _0204CC38 ; =0x000002BE
+ ldr r2, [r1, #0x0]
+ strb r5, [r2, r0]
+ mov r2, #0x0
+ ldr r0, [r1, #0x0]
+ cmp r5, #0x0
+ str r2, [r0, #0x4]
+ beq _0204CB6C
+ bl FUN_02244D1C
+ add r1, r0, #0x0
+ mov r0, #0xf
+ bl FUN_02016998
+ ldr r1, _0204CC34 ; =0x021C5A68
+ ldr r2, [r1, #0x0]
+ str r0, [r2, #0x4]
+ ldr r0, [r1, #0x0]
+ ldr r0, [r0, #0x4]
+ bl FUN_02244D20
+_0204CB6C:
+ ldr r0, _0204CC34 ; =0x021C5A68
+ ldr r7, _0204CC3C ; =0x0000FFFF
+ ldr r1, [r0, #0x0]
+ str r4, [r1, #0x54]
+ mov r1, #0x0
+ add r2, r1, #0x0
+ add r3, r1, #0x0
+_0204CB7A:
+ ldr r4, [r0, #0x0]
+ add r5, r4, r2
+ mov r4, #0x0
+ add r5, #0xa6
+ mvn r4, r4
+ strb r4, [r5, #0x0]
+ ldr r4, [r0, #0x0]
+ add r4, r4, r2
+ add r4, #0xa2
+ strh r7, [r4, #0x0]
+ ldr r4, [r0, #0x0]
+ add r4, r4, r2
+ add r4, #0xa4
+ strh r7, [r4, #0x0]
+ ldr r4, [r0, #0x0]
+ add r5, r4, r2
+ add r5, #0xa7
+ mov r4, #0x2
+ strb r4, [r5, #0x0]
+ ldr r4, [r0, #0x0]
+ add r5, r4, r2
+ mov r4, #0x0
+ add r5, #0x66
+ mvn r4, r4
+ strb r4, [r5, #0x0]
+ ldr r4, [r0, #0x0]
+ add r4, r4, r2
+ add r4, #0x62
+ strh r7, [r4, #0x0]
+ ldr r4, [r0, #0x0]
+ add r4, r4, r2
+ add r4, #0x64
+ strh r7, [r4, #0x0]
+ ldr r4, [r0, #0x0]
+ add r5, r4, r2
+ add r5, #0x67
+ mov r4, #0x2
+ strb r4, [r5, #0x0]
+ ldr r4, [r0, #0x0]
+ ldr r5, _0204CC40 ; =0x00000102
+ add r6, r4, r1
+ mov r4, #0x0
+ mvn r4, r4
+ strb r4, [r6, r5]
+ ldr r4, [r0, #0x0]
+ add r2, #0x8
+ add r5, r4, r1
+ add r5, #0xe2
+ mov r4, #0x0
+ strb r4, [r5, #0x0]
+ ldr r4, [r0, #0x0]
+ add r5, r4, r1
+ add r5, #0xea
+ mov r4, #0x1
+ strb r4, [r5, #0x0]
+ ldr r4, [r0, #0x0]
+ add r5, r4, r1
+ add r5, #0xf2
+ mov r4, #0x0
+ strb r4, [r5, #0x0]
+ ldr r4, [r0, #0x0]
+ mov r5, #0xff
+ add r6, r4, r3
+ add r4, r5, #0x0
+ add r4, #0x6b
+ add r1, r1, #0x1
+ add r3, #0x22
+ strh r5, [r6, r4]
+ cmp r1, #0x8
+ blt _0204CB7A
+ ldr r2, _0204CC34 ; =0x021C5A68
+ mov r1, #0xaf
+ ldr r3, [r2, #0x0]
+ lsl r1, r1, #0x2
+ mov r0, #0x0
+ strb r0, [r3, r1]
+ ldr r2, [r2, #0x0]
+ add r1, r1, #0x3
+ strb r0, [r2, r1]
+ ldr r0, _0204CC44 ; =FUN_0204D4F0
+ mov r1, #0x0
+ mov r2, #0xc8
+ bl FUN_0200CA44
+ ldr r1, _0204CC34 ; =0x021C5A68
+ ldr r1, [r1, #0x0]
+ str r0, [r1, #0x50]
+ bl FUN_02030FA8
+ bl FUN_0204CF60
+ mov r0, #0x1
+ pop {r3-r7, pc}
+ .balign 4
+_0204CC34: .word 0x021C5A68
+_0204CC38: .word 0x000002BE
+_0204CC3C: .word 0x0000FFFF
+_0204CC40: .word 0x00000102
+_0204CC44: .word FUN_0204D4F0
+
+ thumb_func_start FUN_0204CC48
+FUN_0204CC48: ; 0x0204CC48
+ push {r3-r7, lr}
+ ldr r4, _0204CC94 ; =0x021C5A68
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ beq _0204CC92
+ ldr r6, _0204CC98 ; =0x000002BE
+ mov r5, #0x0
+ mov r7, #0x1
+_0204CC58:
+ ldr r0, [r4, #0x0]
+ ldrb r0, [r0, r6]
+ cmp r0, #0x0
+ beq _0204CC6E
+ lsl r0, r5, #0x18
+ lsr r0, r0, #0x18
+ add r1, r7, #0x0
+ mov r2, #0x0
+ bl FUN_0204D43C
+ b _0204CC7A
+_0204CC6E:
+ lsl r0, r5, #0x18
+ mov r1, #0x1
+ lsr r0, r0, #0x18
+ add r2, r1, #0x0
+ bl FUN_0204D43C
+_0204CC7A:
+ add r5, r5, #0x1
+ cmp r5, #0x8
+ blt _0204CC58
+ ldr r0, _0204CC94 ; =0x021C5A68
+ ldr r2, [r0, #0x0]
+ ldr r0, _0204CC98 ; =0x000002BE
+ ldrb r1, [r2, r0]
+ cmp r1, #0x0
+ beq _0204CC92
+ mov r1, #0x1
+ sub r0, r0, #0x1
+ strb r1, [r2, r0]
+_0204CC92:
+ pop {r3-r7, pc}
+ .balign 4
+_0204CC94: .word 0x021C5A68
+_0204CC98: .word 0x000002BE
+
+ thumb_func_start FUN_0204CC9C
+FUN_0204CC9C: ; 0x0204CC9C
+ push {r3, lr}
+ ldr r1, _0204CCD8 ; =0x021C5A68
+ ldr r3, [r1, #0x0]
+ cmp r3, #0x0
+ beq _0204CCD6
+ ldr r0, _0204CCDC ; =0x000002BB
+ mov r2, #0x1
+ strb r2, [r3, r0]
+ ldr r1, [r1, #0x0]
+ mov r2, #0x0
+ add r0, r0, #0x2
+ strb r2, [r1, r0]
+ bl FUN_0204CF60
+ mov r0, #0x1
+ bl FUN_0204D168
+ ldr r0, _0204CCD8 ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x54]
+ ldr r0, [r0, #0x38]
+ bl FUN_02055320
+ ldr r0, _0204CCD8 ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x54]
+ ldr r0, [r0, #0x38]
+ bl FUN_0205532C
+_0204CCD6:
+ pop {r3, pc}
+ .balign 4
+_0204CCD8: .word 0x021C5A68
+_0204CCDC: .word 0x000002BB
+
+ thumb_func_start FUN_0204CCE0
+FUN_0204CCE0: ; 0x0204CCE0
+ push {r3-r7, lr}
+ ldr r7, _0204CD70 ; =0x021C5A68
+ add r6, r0, #0x0
+ ldr r0, [r7, #0x0]
+ cmp r0, #0x0
+ beq _0204CD6E
+ mov r4, #0x0
+ add r5, r4, #0x0
+_0204CCF0:
+ ldr r0, [r7, #0x0]
+ add r1, r0, r5
+ mov r0, #0x9f
+ lsl r0, r0, #0x2
+ ldr r0, [r1, r0]
+ cmp r0, #0x0
+ beq _0204CD0E
+ bl FUN_02016A18
+ ldr r0, [r7, #0x0]
+ mov r1, #0x0
+ add r2, r0, r5
+ mov r0, #0x9f
+ lsl r0, r0, #0x2
+ str r1, [r2, r0]
+_0204CD0E:
+ add r4, r4, #0x1
+ add r5, r5, #0x4
+ cmp r4, #0x5
+ blt _0204CCF0
+ ldr r0, _0204CD70 ; =0x021C5A68
+ ldr r2, [r0, #0x0]
+ ldr r0, _0204CD74 ; =0x000002B2
+ ldrh r1, [r2, r0]
+ cmp r1, #0x5
+ blo _0204CD28
+ ldr r0, [r2, #0x54]
+ bl FUN_02061B64
+_0204CD28:
+ mov r4, #0x0
+ add r5, r4, #0x0
+_0204CD2C:
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ add r1, r5, #0x0
+ add r2, r6, #0x0
+ bl FUN_0204D43C
+ add r4, r4, #0x1
+ cmp r4, #0x8
+ blt _0204CD2C
+ ldr r0, _0204CD70 ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x50]
+ bl FUN_0200CAB4
+ ldr r0, _0204CD70 ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x4]
+ cmp r0, #0x0
+ beq _0204CD60
+ bl FUN_02244D3C
+ ldr r0, _0204CD70 ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x4]
+ bl FUN_02016A18
+_0204CD60:
+ ldr r0, _0204CD70 ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ bl FUN_02016A18
+ ldr r0, _0204CD70 ; =0x021C5A68
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+_0204CD6E:
+ pop {r3-r7, pc}
+ .balign 4
+_0204CD70: .word 0x021C5A68
+_0204CD74: .word 0x000002B2
+
+ thumb_func_start FUN_0204CD78
+FUN_0204CD78: ; 0x0204CD78
+ push {r4, lr}
+ lsl r4, r0, #0x2
+ ldr r0, _0204CDB0 ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ add r0, r0, r4
+ ldr r0, [r0, #0x28]
+ cmp r0, #0x0
+ beq _0204CDAC
+ bl FUN_020646A0
+ cmp r0, #0x0
+ beq _0204CD9E
+ ldr r0, _0204CDB0 ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ add r0, r0, r4
+ ldr r0, [r0, #0x28]
+ bl FUN_02064520
+ b _0204CDA2
+_0204CD9E:
+ bl ErrorHandling
+_0204CDA2:
+ ldr r0, _0204CDB0 ; =0x021C5A68
+ mov r1, #0x0
+ ldr r0, [r0, #0x0]
+ add r0, r0, r4
+ str r1, [r0, #0x28]
+_0204CDAC:
+ pop {r4, pc}
+ nop
+_0204CDB0: .word 0x021C5A68
+
+ thumb_func_start FUN_0204CDB4
+FUN_0204CDB4: ; 0x0204CDB4
+ push {r3-r7, lr}
+ mov r4, #0x0
+ ldr r6, _0204CED4 ; =0x021C5A68
+ add r7, r4, #0x0
+ add r5, r4, #0x0
+_0204CDBE:
+ add r0, r4, #0x0
+ bl FUN_0204E778
+ add r0, r4, #0x0
+ bl FUN_0204CD78
+ cmp r4, #0x0
+ beq _0204CDD4
+ add r0, r4, #0x0
+ bl FUN_0204ED9C
+_0204CDD4:
+ ldr r1, [r6, #0x0]
+ add r0, r1, r7
+ ldr r0, [r0, #0x8]
+ cmp r0, #0x0
+ beq _0204CDFA
+ ldr r2, [r1, #0x54]
+ ldr r2, [r2, #0x38]
+ cmp r2, r0
+ beq _0204CDF2
+ ldr r2, _0204CED8 ; =0x000002BE
+ ldrb r1, [r1, r2]
+ cmp r1, #0x0
+ beq _0204CDF2
+ bl FUN_02055168
+_0204CDF2:
+ ldr r0, [r6, #0x0]
+ add r1, r0, r7
+ mov r0, #0x0
+ str r0, [r1, #0x8]
+_0204CDFA:
+ ldr r0, [r6, #0x0]
+ add r7, r7, #0x4
+ add r1, r0, r4
+ add r1, #0x48
+ mov r0, #0x0
+ strb r0, [r1, #0x0]
+ ldr r0, [r6, #0x0]
+ add r1, r0, r5
+ mov r0, #0x0
+ add r1, #0xa6
+ mvn r0, r0
+ strb r0, [r1, #0x0]
+ ldr r0, [r6, #0x0]
+ add r1, r0, r5
+ ldr r0, _0204CEDC ; =0x0000FFFF
+ add r1, #0xa2
+ strh r0, [r1, #0x0]
+ ldr r0, [r6, #0x0]
+ add r1, r0, r5
+ ldr r0, _0204CEDC ; =0x0000FFFF
+ add r1, #0xa4
+ strh r0, [r1, #0x0]
+ ldr r0, [r6, #0x0]
+ add r1, r0, r5
+ add r1, #0xa7
+ mov r0, #0x2
+ strb r0, [r1, #0x0]
+ ldr r0, [r6, #0x0]
+ add r1, r0, r5
+ mov r0, #0x0
+ add r1, #0x66
+ mvn r0, r0
+ strb r0, [r1, #0x0]
+ ldr r0, [r6, #0x0]
+ add r1, r0, r5
+ ldr r0, _0204CEDC ; =0x0000FFFF
+ add r1, #0x62
+ strh r0, [r1, #0x0]
+ ldr r0, [r6, #0x0]
+ add r1, r0, r5
+ ldr r0, _0204CEDC ; =0x0000FFFF
+ add r1, #0x64
+ strh r0, [r1, #0x0]
+ ldr r0, [r6, #0x0]
+ add r1, r0, r5
+ add r1, #0x67
+ mov r0, #0x2
+ strb r0, [r1, #0x0]
+ ldr r0, [r6, #0x0]
+ mov r1, #0x0
+ add r2, r0, r4
+ ldr r0, _0204CEE0 ; =0x00000102
+ mvn r1, r1
+ strb r1, [r2, r0]
+ ldr r0, [r6, #0x0]
+ mov r1, #0x0
+ add r2, r0, r4
+ ldr r0, _0204CEE4 ; =0x0000010A
+ add r5, #0x8
+ strb r1, [r2, r0]
+ ldr r0, [r6, #0x0]
+ add r1, r0, r4
+ add r1, #0xe2
+ mov r0, #0x0
+ strb r0, [r1, #0x0]
+ ldr r0, [r6, #0x0]
+ add r1, r0, r4
+ add r1, #0xea
+ mov r0, #0x1
+ strb r0, [r1, #0x0]
+ ldr r0, [r6, #0x0]
+ add r1, r0, r4
+ add r1, #0xf2
+ mov r0, #0x0
+ strb r0, [r1, #0x0]
+ ldr r0, [r6, #0x0]
+ mov r1, #0x0
+ add r2, r0, r4
+ ldr r0, _0204CEE8 ; =0x0000013A
+ strb r1, [r2, r0]
+ ldr r0, [r6, #0x0]
+ add r2, r0, r4
+ ldr r0, _0204CEEC ; =0x00000142
+ add r4, r4, #0x1
+ strb r1, [r2, r0]
+ cmp r4, #0x8
+ blt _0204CDBE
+ ldr r0, _0204CED4 ; =0x021C5A68
+ ldr r1, _0204CEF0 ; =0x000002BF
+ ldr r2, [r0, #0x0]
+ mov r0, #0x0
+ strb r0, [r2, r1]
+ bl FUN_0204CF60
+ ldr r0, _0204CED4 ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x50]
+ cmp r0, #0x0
+ bne _0204CED0
+ ldr r0, _0204CEF4 ; =FUN_0204D4F0
+ mov r1, #0x0
+ mov r2, #0xc8
+ bl FUN_0200CA44
+ ldr r1, _0204CED4 ; =0x021C5A68
+ ldr r1, [r1, #0x0]
+ str r0, [r1, #0x50]
+_0204CED0:
+ pop {r3-r7, pc}
+ nop
+_0204CED4: .word 0x021C5A68
+_0204CED8: .word 0x000002BE
+_0204CEDC: .word 0x0000FFFF
+_0204CEE0: .word 0x00000102
+_0204CEE4: .word 0x0000010A
+_0204CEE8: .word 0x0000013A
+_0204CEEC: .word 0x00000142
+_0204CEF0: .word 0x000002BF
+_0204CEF4: .word FUN_0204D4F0
+
+ thumb_func_start FUN_0204CEF8
+FUN_0204CEF8: ; 0x0204CEF8
+ push {r3, lr}
+ ldr r0, _0204CF20 ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x50]
+ cmp r0, #0x0
+ beq _0204CF16
+ mov r0, #0x0
+ add r1, r0, #0x0
+ bl FUN_0204D4F0
+ ldr r0, _0204CF20 ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x50]
+ bl FUN_0200CAB4
+_0204CF16:
+ ldr r0, _0204CF20 ; =0x021C5A68
+ mov r1, #0x0
+ ldr r0, [r0, #0x0]
+ str r1, [r0, #0x50]
+ pop {r3, pc}
+ .balign 4
+_0204CF20: .word 0x021C5A68
+
+ thumb_func_start FUN_0204CF24
+FUN_0204CF24: ; 0x0204CF24
+ push {r3-r5, lr}
+ ldr r0, _0204CF58 ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _0204CF54
+ mov r5, #0x0
+ add r4, r5, #0x0
+_0204CF32:
+ lsl r0, r5, #0x18
+ lsr r0, r0, #0x18
+ add r1, r4, #0x0
+ add r2, r4, #0x0
+ bl FUN_0204D43C
+ add r0, r5, #0x0
+ bl FUN_0204F69C
+ add r5, r5, #0x1
+ cmp r5, #0x8
+ blt _0204CF32
+ ldr r0, _0204CF58 ; =0x021C5A68
+ mov r2, #0x1
+ ldr r1, [r0, #0x0]
+ ldr r0, _0204CF5C ; =0x000002BD
+ strb r2, [r1, r0]
+_0204CF54:
+ pop {r3-r5, pc}
+ nop
+_0204CF58: .word 0x021C5A68
+_0204CF5C: .word 0x000002BD
+
+ thumb_func_start FUN_0204CF60
+FUN_0204CF60: ; 0x0204CF60
+ push {r4, lr}
+ bl FUN_02031190
+ ldr r1, _0204D03C ; =0x021C5A68
+ lsl r0, r0, #0x2
+ ldr r2, [r1, #0x0]
+ ldr r1, [r2, #0x54]
+ add r0, r2, r0
+ ldr r1, [r1, #0x38]
+ str r1, [r0, #0x8]
+ bl FUN_02031190
+ ldr r1, _0204D03C ; =0x021C5A68
+ mov r2, #0x1
+ ldr r1, [r1, #0x0]
+ add r0, r1, r0
+ add r0, #0x48
+ strb r2, [r0, #0x0]
+ bl FUN_02031190
+ add r4, r0, #0x0
+ ldr r0, _0204D03C ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x54]
+ ldr r0, [r0, #0x38]
+ bl FUN_02055320
+ ldr r1, _0204D03C ; =0x021C5A68
+ ldr r2, [r1, #0x0]
+ lsl r1, r4, #0x3
+ add r1, r2, r1
+ add r1, #0xa2
+ strh r0, [r1, #0x0]
+ bl FUN_02031190
+ add r4, r0, #0x0
+ ldr r0, _0204D03C ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x54]
+ ldr r0, [r0, #0x38]
+ bl FUN_0205532C
+ ldr r1, _0204D03C ; =0x021C5A68
+ ldr r2, [r1, #0x0]
+ lsl r1, r4, #0x3
+ add r1, r2, r1
+ add r1, #0xa4
+ strh r0, [r1, #0x0]
+ bl FUN_02031190
+ add r4, r0, #0x0
+ ldr r0, _0204D03C ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x54]
+ ldr r0, [r0, #0x38]
+ bl FUN_020552F8
+ ldr r1, _0204D03C ; =0x021C5A68
+ ldr r2, [r1, #0x0]
+ lsl r1, r4, #0x3
+ add r1, r2, r1
+ add r1, #0xa6
+ strb r0, [r1, #0x0]
+ bl FUN_02031190
+ add r4, r0, #0x0
+ ldr r0, _0204D03C ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x54]
+ ldr r0, [r0, #0x38]
+ bl FUN_02055320
+ ldr r1, _0204D03C ; =0x021C5A68
+ ldr r2, [r1, #0x0]
+ lsl r1, r4, #0x3
+ add r1, r2, r1
+ add r1, #0x62
+ strh r0, [r1, #0x0]
+ bl FUN_02031190
+ add r4, r0, #0x0
+ ldr r0, _0204D03C ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x54]
+ ldr r0, [r0, #0x38]
+ bl FUN_0205532C
+ ldr r1, _0204D03C ; =0x021C5A68
+ ldr r2, [r1, #0x0]
+ lsl r1, r4, #0x3
+ add r1, r2, r1
+ add r1, #0x64
+ strh r0, [r1, #0x0]
+ bl FUN_02031190
+ add r4, r0, #0x0
+ ldr r0, _0204D03C ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x54]
+ ldr r0, [r0, #0x38]
+ bl FUN_020552F8
+ ldr r1, _0204D03C ; =0x021C5A68
+ ldr r2, [r1, #0x0]
+ lsl r1, r4, #0x3
+ add r1, r2, r1
+ add r1, #0x66
+ strb r0, [r1, #0x0]
+ pop {r4, pc}
+ nop
+_0204D03C: .word 0x021C5A68
+
+ thumb_func_start FUN_0204D040
+FUN_0204D040: ; 0x0204D040
+ push {r3-r7, lr}
+ str r0, [sp, #0x0]
+ ldr r0, _0204D110 ; =0x021C5A68
+ mov r2, #0x0
+ ldr r1, [r0, #0x0]
+ ldr r0, _0204D114 ; =0x000002BF
+ strb r2, [r1, r0]
+ bl FUN_02031190
+ ldr r2, _0204D110 ; =0x021C5A68
+ add r1, r0, #0x0
+ ldr r4, [r2, #0x0]
+ lsl r6, r1, #0x2
+ ldr r0, [r4, #0x54]
+ ldr r3, [r0, #0x38]
+ add r0, r4, r6
+ str r3, [r0, #0x8]
+ ldr r0, [r2, #0x0]
+ mov r3, #0x1
+ add r0, r0, r1
+ add r0, #0x48
+ strb r3, [r0, #0x0]
+ ldr r0, [sp, #0x0]
+ ldr r3, [r2, #0x0]
+ lsl r5, r0, #0x3
+ add r0, r3, r5
+ add r0, #0xa2
+ lsl r4, r1, #0x3
+ add r3, r3, r4
+ ldrh r0, [r0, #0x0]
+ add r3, #0xa2
+ strh r0, [r3, #0x0]
+ ldr r3, [r2, #0x0]
+ add r0, r3, r5
+ add r0, #0xa4
+ add r3, r3, r4
+ ldrh r0, [r0, #0x0]
+ add r3, #0xa4
+ strh r0, [r3, #0x0]
+ ldr r7, [r2, #0x0]
+ mov r0, #0xa6
+ add r3, r7, r5
+ ldrsb r0, [r3, r0]
+ add r3, r7, r4
+ add r3, #0xa6
+ strb r0, [r3, #0x0]
+ ldr r3, [r2, #0x0]
+ mov r7, #0x29
+ add r0, r3, r5
+ add r0, #0x62
+ add r3, r3, r4
+ ldrh r0, [r0, #0x0]
+ add r3, #0x62
+ lsl r7, r7, #0x4
+ strh r0, [r3, #0x0]
+ ldr r3, [r2, #0x0]
+ add r0, r3, r5
+ add r0, #0x64
+ add r3, r3, r4
+ ldrh r0, [r0, #0x0]
+ add r3, #0x64
+ strh r0, [r3, #0x0]
+ ldr r0, [r2, #0x0]
+ mov r3, #0x66
+ add r5, r0, r5
+ add r0, r0, r4
+ ldrsb r5, [r5, r3]
+ add r0, #0x66
+ strb r5, [r0, #0x0]
+ ldr r0, [sp, #0x0]
+ ldr r4, [r2, #0x0]
+ lsl r5, r0, #0x2
+ add r0, r4, r5
+ ldr r0, [r0, r7]
+ add r4, r4, r6
+ str r0, [r4, r7]
+ ldr r0, [r2, #0x0]
+ mov r4, #0x0
+ add r0, r0, r5
+ str r4, [r0, r7]
+ ldr r2, [r2, #0x0]
+ add r0, r2, r6
+ ldr r0, [r0, r7]
+ cmp r0, #0x0
+ beq _0204D0F8
+ add r3, #0xe4
+ add r3, r2, r3
+ mov r2, #0x22
+ mul r2, r1
+ add r1, r3, r2
+ bl FUN_0202393C
+_0204D0F8:
+ ldr r1, _0204D110 ; =0x021C5A68
+ mov r0, #0xff
+ ldr r3, [r1, #0x0]
+ ldr r1, [sp, #0x0]
+ mov r2, #0x22
+ mul r2, r1
+ add r1, r0, #0x0
+ add r2, r3, r2
+ add r1, #0x6b
+ strh r0, [r2, r1]
+ pop {r3-r7, pc}
+ nop
+_0204D110: .word 0x021C5A68
+_0204D114: .word 0x000002BF
+
+ thumb_func_start FUN_0204D118
+FUN_0204D118: ; 0x0204D118
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ ldr r0, _0204D160 ; =0x021C5A68
+ add r4, r1, #0x0
+ ldr r0, [r0, #0x0]
+ add r6, r2, #0x0
+ ldr r0, [r0, #0x54]
+ ldr r0, [r0, #0x38]
+ bl FUN_020552F8
+ add r1, sp, #0x0
+ strb r4, [r1, #0x0]
+ asr r2, r4, #0x8
+ strb r2, [r1, #0x1]
+ asr r2, r6, #0x8
+ strb r6, [r1, #0x2]
+ strb r2, [r1, #0x3]
+ strb r0, [r1, #0x4]
+ cmp r5, #0x0
+ beq _0204D14A
+ ldrb r2, [r1, #0x4]
+ mov r0, #0x80
+ orr r0, r2
+ strb r0, [r1, #0x4]
+_0204D14A:
+ mov r0, #0x16
+ add r1, sp, #0x0
+ bl FUN_020311D0
+ ldr r0, _0204D160 ; =0x021C5A68
+ mov r2, #0x1
+ ldr r1, [r0, #0x0]
+ ldr r0, _0204D164 ; =0x000002BB
+ strb r2, [r1, r0]
+ add sp, #0x8
+ pop {r4-r6, pc}
+ .balign 4
+_0204D160: .word 0x021C5A68
+_0204D164: .word 0x000002BB
+
+ thumb_func_start FUN_0204D168
+FUN_0204D168: ; 0x0204D168
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, _0204D194 ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x54]
+ ldr r0, [r0, #0x38]
+ bl FUN_02055320
+ add r4, r0, #0x0
+ ldr r0, _0204D194 ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x54]
+ ldr r0, [r0, #0x38]
+ bl FUN_0205532C
+ add r2, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0204D118
+ pop {r3-r5, pc}
+ nop
+_0204D194: .word 0x021C5A68
+
+ thumb_func_start FUN_0204D198
+FUN_0204D198: ; 0x0204D198
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_02031190
+ ldr r1, _0204D1C8 ; =0x021C5A68
+ lsl r0, r0, #0x3
+ ldr r1, [r1, #0x0]
+ add r0, r1, r0
+ add r0, #0x62
+ ldrh r4, [r0, #0x0]
+ bl FUN_02031190
+ ldr r1, _0204D1C8 ; =0x021C5A68
+ lsl r0, r0, #0x3
+ ldr r1, [r1, #0x0]
+ add r0, r1, r0
+ add r0, #0x64
+ ldrh r2, [r0, #0x0]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0204D118
+ pop {r3-r5, pc}
+ nop
+_0204D1C8: .word 0x021C5A68
+
+ thumb_func_start FUN_0204D1CC
+FUN_0204D1CC: ; 0x0204D1CC
+ push {r3-r5, lr}
+ sub sp, #0x8
+ ldrh r2, [r1, #0x0]
+ mov r4, #0xf
+ lsl r4, r4, #0xc
+ ldrh r3, [r1, #0x2]
+ cmp r2, r4
+ blo _0204D1DE
+ sub r2, r4, #0x1
+_0204D1DE:
+ mov r4, #0xf
+ lsl r4, r4, #0xc
+ cmp r3, r4
+ blo _0204D1E8
+ sub r3, r4, #0x1
+_0204D1E8:
+ mov r4, #0xf
+ and r0, r4
+ add r4, sp, #0x0
+ strb r0, [r4, #0x0]
+ strb r2, [r4, #0x1]
+ asr r2, r2, #0x8
+ add r5, r2, #0x0
+ mov r0, #0x1
+ and r5, r0
+ asr r2, r3, #0x7
+ mov r0, #0x2
+ and r0, r2
+ add r0, r5, r0
+ strb r0, [r4, #0x2]
+ strb r3, [r4, #0x3]
+ ldrb r0, [r1, #0x7]
+ cmp r0, #0x0
+ beq _0204D214
+ ldrb r2, [r4, #0x2]
+ mov r0, #0x80
+ orr r0, r2
+ strb r0, [r4, #0x2]
+_0204D214:
+ mov r2, #0x4
+ ldrsb r2, [r1, r2]
+ add r5, sp, #0x0
+ ldrb r0, [r5, #0x0]
+ lsr r4, r2, #0x1f
+ lsl r3, r2, #0x1e
+ sub r3, r3, r4
+ mov r2, #0x1e
+ ror r3, r2
+ add r2, r4, r3
+ lsl r2, r2, #0x4
+ add r0, r0, r2
+ strb r0, [r5, #0x0]
+ ldrb r0, [r1, #0x5]
+ ldrb r2, [r5, #0x0]
+ add r1, sp, #0x0
+ lsl r0, r0, #0x6
+ add r0, r2, r0
+ strb r0, [r5, #0x0]
+ mov r0, #0x17
+ mov r2, #0x0
+ bl FUN_02030BC4
+ add sp, #0x8
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204D248
+FUN_0204D248: ; 0x0204D248
+ push {r3-r5, lr}
+ ldr r0, _0204D2A8 ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x54]
+ ldr r0, [r0, #0x38]
+ bl FUN_02055370
+ add r4, r0, #0x0
+ ldr r0, _0204D2A8 ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x54]
+ ldr r0, [r0, #0x38]
+ bl FUN_02055378
+ add r5, r0, #0x0
+ cmp r4, #0x0
+ bne _0204D292
+ bl FUN_02031190
+ bl FUN_02030E7C
+ cmp r0, #0x0
+ beq _0204D292
+ ldr r0, _0204D2A8 ; =0x021C5A68
+ ldr r1, [r0, #0x0]
+ ldr r0, _0204D2AC ; =0x000002BA
+ ldrb r0, [r1, r0]
+ cmp r0, #0x0
+ bne _0204D292
+ mov r0, #0x1
+ bl FUN_0204D168
+ ldr r0, _0204D2A8 ; =0x021C5A68
+ mov r2, #0x1
+ ldr r1, [r0, #0x0]
+ ldr r0, _0204D2AC ; =0x000002BA
+ strb r2, [r1, r0]
+_0204D292:
+ cmp r4, #0x1
+ bne _0204D2A4
+ cmp r5, #0x1
+ bne _0204D2A4
+ ldr r0, _0204D2A8 ; =0x021C5A68
+ mov r2, #0x0
+ ldr r1, [r0, #0x0]
+ ldr r0, _0204D2AC ; =0x000002BA
+ strb r2, [r1, r0]
+_0204D2A4:
+ pop {r3-r5, pc}
+ nop
+_0204D2A8: .word 0x021C5A68
+_0204D2AC: .word 0x000002BA
+
+ thumb_func_start FUN_0204D2B0
+FUN_0204D2B0: ; 0x0204D2B0
+ push {r3-r7, lr}
+ mov r4, #0x0
+ ldr r7, _0204D2FC ; =0x021C5A68
+ add r5, r4, #0x0
+ add r6, r4, #0x0
+_0204D2BA:
+ ldr r0, [r7, #0x0]
+ add r2, r0, r4
+ add r1, r2, #0x0
+ add r1, #0x48
+ ldrb r1, [r1, #0x0]
+ cmp r1, #0x0
+ beq _0204D2E8
+ ldr r3, _0204D300 ; =0x00000132
+ add r1, r0, #0x0
+ ldrb r3, [r2, r3]
+ add r1, #0x62
+ cmp r3, #0x0
+ bne _0204D2DC
+ ldr r3, _0204D304 ; =0x000002BB
+ ldrb r0, [r0, r3]
+ cmp r0, #0x0
+ beq _0204D2E8
+_0204D2DC:
+ ldr r0, _0204D300 ; =0x00000132
+ add r1, r1, r5
+ strb r6, [r2, r0]
+ add r0, r4, #0x0
+ bl FUN_0204D1CC
+_0204D2E8:
+ add r4, r4, #0x1
+ add r5, #0x8
+ cmp r4, #0x8
+ blt _0204D2BA
+ ldr r0, _0204D2FC ; =0x021C5A68
+ mov r2, #0x0
+ ldr r1, [r0, #0x0]
+ ldr r0, _0204D304 ; =0x000002BB
+ strb r2, [r1, r0]
+ pop {r3-r7, pc}
+ .balign 4
+_0204D2FC: .word 0x021C5A68
+_0204D300: .word 0x00000132
+_0204D304: .word 0x000002BB
+
+ thumb_func_start FUN_0204D308
+FUN_0204D308: ; 0x0204D308
+ ldr r0, _0204D31C ; =0x021C5A68
+ ldr r2, [r0, #0x0]
+ cmp r2, #0x0
+ beq _0204D318
+ mov r0, #0xae
+ mov r1, #0x0
+ lsl r0, r0, #0x2
+ strb r1, [r2, r0]
+_0204D318:
+ bx lr
+ nop
+_0204D31C: .word 0x021C5A68
+
+ thumb_func_start FUN_0204D320
+FUN_0204D320: ; 0x0204D320
+ mov r0, #0xb1
+ lsl r0, r0, #0x2
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0204D328
+FUN_0204D328: ; 0x0204D328
+ push {r3-r7, lr}
+ sub sp, #0x10
+ ldr r1, _0204D430 ; =0x021C5A68
+ add r5, r0, #0x0
+ ldr r2, [r1, #0x0]
+ lsl r6, r5, #0x2
+ add r1, r2, r6
+ ldr r1, [r1, #0x8]
+ cmp r1, #0x0
+ bne _0204D42A
+ ldr r1, _0204D434 ; =0x000002BD
+ ldrb r1, [r2, r1]
+ cmp r1, #0x0
+ bne _0204D42A
+ bl FUN_0202DFA4
+ str r0, [sp, #0xc]
+ cmp r0, #0x0
+ beq _0204D42A
+ ldr r0, _0204D430 ; =0x021C5A68
+ ldr r1, [r0, #0x0]
+ ldr r0, _0204D438 ; =0x000002BE
+ ldrb r0, [r1, r0]
+ cmp r0, #0x0
+ bne _0204D37C
+ bl FUN_02031190
+ cmp r5, r0
+ beq _0204D37C
+ ldr r0, _0204D430 ; =0x021C5A68
+ mov r1, #0x1
+ ldr r0, [r0, #0x0]
+ lsl r1, r1, #0x8
+ ldr r0, [r0, #0x54]
+ add r1, r5, r1
+ ldr r0, [r0, #0x34]
+ bl FUN_02058060
+ cmp r0, #0x0
+ beq _0204D37C
+ bl FUN_02057654
+_0204D37C:
+ ldr r0, _0204D430 ; =0x021C5A68
+ lsl r4, r5, #0x3
+ ldr r7, [r0, #0x0]
+ ldr r0, [sp, #0xc]
+ bl FUN_020239CC
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ str r0, [sp, #0x4]
+ str r1, [sp, #0x8]
+ ldr r0, [r7, #0x54]
+ add r7, r7, r4
+ add r1, r7, #0x0
+ add r2, r7, #0x0
+ add r1, #0xa2
+ add r2, #0xa4
+ mov r3, #0xa6
+ ldrh r1, [r1, #0x0]
+ ldrh r2, [r2, #0x0]
+ ldrsb r3, [r7, r3]
+ ldr r0, [r0, #0x34]
+ bl FUN_02055068
+ add r7, r0, #0x0
+ bne _0204D3B2
+ bl ErrorHandling
+_0204D3B2:
+ ldr r0, _0204D430 ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ add r0, r0, r6
+ str r7, [r0, #0x8]
+ add r0, r7, #0x0
+ bl FUN_020553A0
+ mov r1, #0x1
+ lsl r1, r1, #0x8
+ add r1, r5, r1
+ bl FUN_02058444
+ ldr r0, _0204D430 ; =0x021C5A68
+ ldr r1, [r0, #0x0]
+ ldr r0, _0204D438 ; =0x000002BE
+ ldrb r0, [r1, r0]
+ cmp r0, #0x0
+ beq _0204D3DC
+ add r0, r5, #0x0
+ bl FUN_0223E4D4
+_0204D3DC:
+ ldr r0, _0204D430 ; =0x021C5A68
+ ldr r1, _0204D438 ; =0x000002BE
+ ldr r3, [r0, #0x0]
+ ldrb r2, [r3, r1]
+ cmp r2, #0x0
+ beq _0204D41E
+ add r0, r3, r5
+ add r0, #0x48
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _0204D41E
+ sub r0, r1, #0x1
+ ldrb r0, [r3, r0]
+ cmp r0, #0x0
+ bne _0204D40E
+ add r1, r3, r4
+ ldr r0, [r3, #0x54]
+ add r3, r3, r4
+ add r1, #0xa2
+ add r3, #0xa4
+ ldrh r1, [r1, #0x0]
+ ldrh r3, [r3, #0x0]
+ mov r2, #0x0
+ bl FUN_021E5B30
+_0204D40E:
+ ldr r0, _0204D430 ; =0x021C5A68
+ mov r1, #0x1
+ ldr r0, [r0, #0x0]
+ add sp, #0x10
+ add r0, r0, r5
+ add r0, #0x48
+ strb r1, [r0, #0x0]
+ pop {r3-r7, pc}
+_0204D41E:
+ cmp r2, #0x0
+ bne _0204D42A
+ add r0, r3, r5
+ mov r1, #0x1
+ add r0, #0x48
+ strb r1, [r0, #0x0]
+_0204D42A:
+ add sp, #0x10
+ pop {r3-r7, pc}
+ nop
+_0204D430: .word 0x021C5A68
+_0204D434: .word 0x000002BD
+_0204D438: .word 0x000002BE
+
+ thumb_func_start FUN_0204D43C
+FUN_0204D43C: ; 0x0204D43C
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldr r0, _0204D4CC ; =0x021C5A68
+ add r6, r1, #0x0
+ ldr r0, [r0, #0x0]
+ add r7, r2, #0x0
+ cmp r0, #0x0
+ beq _0204D4C8
+ add r0, #0x5a
+ mov r1, #0x0
+ mov r2, #0x8
+ blx MI_CpuFill8
+ add r0, r5, #0x0
+ bl FUN_0204CD78
+ ldr r0, _0204D4CC ; =0x021C5A68
+ lsl r4, r5, #0x2
+ ldr r1, [r0, #0x0]
+ add r0, r1, r4
+ ldr r0, [r0, #0x8]
+ cmp r0, #0x0
+ beq _0204D492
+ ldr r2, [r1, #0x54]
+ ldr r2, [r2, #0x38]
+ cmp r2, r0
+ beq _0204D488
+ ldr r2, _0204D4D0 ; =0x000002BE
+ ldrb r1, [r1, r2]
+ cmp r1, #0x0
+ bne _0204D47E
+ cmp r7, #0x0
+ beq _0204D484
+_0204D47E:
+ bl FUN_02055168
+ b _0204D488
+_0204D484:
+ bl FUN_02055160
+_0204D488:
+ ldr r0, _0204D4CC ; =0x021C5A68
+ mov r1, #0x0
+ ldr r0, [r0, #0x0]
+ add r0, r0, r4
+ str r1, [r0, #0x8]
+_0204D492:
+ ldr r0, _0204D4CC ; =0x021C5A68
+ ldr r1, [r0, #0x0]
+ add r1, #0x48
+ ldrb r0, [r1, r5]
+ cmp r0, #0x0
+ beq _0204D4A6
+ cmp r6, #0x0
+ bne _0204D4A6
+ mov r0, #0x0
+ strb r0, [r1, r5]
+_0204D4A6:
+ ldr r0, _0204D4CC ; =0x021C5A68
+ mov r2, #0x1
+ ldr r0, [r0, #0x0]
+ add r1, r0, r5
+ ldr r0, _0204D4D4 ; =0x00000132
+ cmp r6, #0x0
+ strb r2, [r1, r0]
+ bne _0204D4C8
+ add r0, r5, #0x0
+ bl FUN_0204ED9C
+ ldr r0, _0204D4CC ; =0x021C5A68
+ mov r1, #0x0
+ ldr r0, [r0, #0x0]
+ add r0, r0, r5
+ add r0, #0xfa
+ strb r1, [r0, #0x0]
+_0204D4C8:
+ pop {r3-r7, pc}
+ nop
+_0204D4CC: .word 0x021C5A68
+_0204D4D0: .word 0x000002BE
+_0204D4D4: .word 0x00000132
+
+ thumb_func_start FUN_0204D4D8
+FUN_0204D4D8: ; 0x0204D4D8
+ ldr r1, _0204D4E8 ; =0x021C48B8
+ mov r0, #0x2
+ ldr r1, [r1, #0x44]
+ tst r1, r0
+ beq _0204D4E4
+ mov r0, #0x1
+_0204D4E4:
+ ldr r3, _0204D4EC ; =FUN_02030F60
+ bx r3
+ .balign 4
+_0204D4E8: .word 0x021C48B8
+_0204D4EC: .word FUN_02030F60
+
+ thumb_func_start FUN_0204D4F0
+FUN_0204D4F0: ; 0x0204D4F0
+ push {r4-r6, lr}
+ add r4, r1, #0x0
+ bl FUN_02030F40
+ cmp r0, #0x0
+ beq _0204D530
+ bl FUN_0204D4D8
+ bl FUN_02031190
+ cmp r0, #0x0
+ bne _0204D524
+ add r0, r4, #0x0
+ bl FUN_0204D2B0
+ add r0, r4, #0x0
+ bl FUN_0204D248
+ ldr r0, _0204D560 ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x4]
+ cmp r0, #0x0
+ beq _0204D52A
+ bl FUN_02244D58
+ b _0204D52A
+_0204D524:
+ add r0, r4, #0x0
+ bl FUN_0204D248
+_0204D52A:
+ add r0, r4, #0x0
+ bl FUN_0204D568
+_0204D530:
+ ldr r4, _0204D560 ; =0x021C5A68
+ ldr r6, _0204D564 ; =0x000002BE
+ mov r5, #0x0
+_0204D536:
+ ldr r0, [r4, #0x0]
+ ldrb r0, [r0, r6]
+ cmp r0, #0x0
+ beq _0204D556
+ bl FUN_02031190
+ cmp r0, #0x0
+ bne _0204D556
+ add r0, r5, #0x0
+ bl FUN_0202DFA4
+ cmp r0, #0x0
+ bne _0204D556
+ add r0, r5, #0x0
+ bl FUN_02245358
+_0204D556:
+ add r5, r5, #0x1
+ cmp r5, #0x8
+ blt _0204D536
+ pop {r4-r6, pc}
+ nop
+_0204D560: .word 0x021C5A68
+_0204D564: .word 0x000002BE
+
+ thumb_func_start FUN_0204D568
+FUN_0204D568: ; 0x0204D568
+ push {r3-r7, lr}
+ ldr r4, _0204D608 ; =0x021C5A68
+ ldr r7, _0204D60C ; =0x000002BE
+ mov r5, #0x0
+ add r6, sp, #0x0
+_0204D572:
+ lsl r0, r5, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_02030E7C
+ cmp r0, #0x0
+ bne _0204D5A0
+ bl FUN_02031280
+ cmp r0, #0x0
+ beq _0204D58A
+ cmp r5, #0x0
+ beq _0204D5A0
+_0204D58A:
+ bl FUN_02031190
+ cmp r0, #0x0
+ bne _0204D5A0
+ ldr r0, [r4, #0x0]
+ ldrb r0, [r0, r7]
+ cmp r0, #0x0
+ beq _0204D5A0
+ add r0, r5, #0x0
+ bl FUN_02247614
+_0204D5A0:
+ lsl r0, r5, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_02030E7C
+ cmp r0, #0x0
+ bne _0204D5B8
+ bl FUN_02031280
+ cmp r0, #0x0
+ beq _0204D5C6
+ cmp r5, #0x0
+ bne _0204D5C6
+_0204D5B8:
+ add r0, r5, #0x0
+ bl FUN_0204DE30
+ add r0, r5, #0x0
+ bl FUN_0204EFCC
+ b _0204D600
+_0204D5C6:
+ ldr r0, [r4, #0x0]
+ add r0, r0, r5
+ add r0, #0x48
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _0204D600
+ bl FUN_02031190
+ cmp r0, #0x0
+ bne _0204D5F0
+ ldr r1, [r4, #0x0]
+ ldr r0, _0204D60C ; =0x000002BE
+ ldrb r0, [r1, r0]
+ cmp r0, #0x0
+ beq _0204D5F0
+ add r0, r5, #0x0
+ bl FUN_0223EB8C
+ add r0, r5, #0x0
+ bl FUN_0223CB08
+_0204D5F0:
+ strb r5, [r6, #0x0]
+ ldr r3, [r4, #0x0]
+ mov r0, #0x0
+ ldr r3, [r3, #0x54]
+ mov r1, #0x1
+ add r2, sp, #0x0
+ bl FUN_0204DBCC
+_0204D600:
+ add r5, r5, #0x1
+ cmp r5, #0x8
+ blt _0204D572
+ pop {r3-r7, pc}
+ .balign 4
+_0204D608: .word 0x021C5A68
+_0204D60C: .word 0x000002BE
+
+ thumb_func_start FUN_0204D610
+FUN_0204D610: ; 0x0204D610
+ ldr r0, _0204D624 ; =0x021C5A68
+ ldr r1, [r0, #0x0]
+ cmp r1, #0x0
+ beq _0204D620
+ mov r0, #0xaf
+ lsl r0, r0, #0x2
+ ldrb r0, [r1, r0]
+ bx lr
+_0204D620:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+_0204D624: .word 0x021C5A68
+
+ thumb_func_start FUN_0204D628
+FUN_0204D628: ; 0x0204D628
+ push {r3, lr}
+ ldr r1, _0204D650 ; =0x021C5A68
+ ldr r3, [r1, #0x0]
+ cmp r3, #0x0
+ beq _0204D64E
+ mov r1, #0xaf
+ lsl r1, r1, #0x2
+ ldrb r2, [r3, r1]
+ cmp r2, r0
+ beq _0204D63E
+ strb r0, [r3, r1]
+_0204D63E:
+ ldr r1, _0204D650 ; =0x021C5A68
+ mov r0, #0x3e
+ ldr r2, [r1, #0x0]
+ mov r1, #0xaf
+ lsl r1, r1, #0x2
+ add r1, r2, r1
+ bl FUN_020311D0
+_0204D64E:
+ pop {r3, pc}
+ .balign 4
+_0204D650: .word 0x021C5A68
+
+ thumb_func_start FUN_0204D654
+FUN_0204D654: ; 0x0204D654
+ push {r4, lr}
+ ldr r2, _0204D678 ; =0x021C5A68
+ ldr r4, [r2, #0x0]
+ cmp r4, #0x0
+ beq _0204D674
+ mov r1, #0xaf
+ lsl r1, r1, #0x2
+ ldrb r3, [r4, r1]
+ cmp r3, r0
+ beq _0204D674
+ strb r0, [r4, r1]
+ ldr r2, [r2, #0x0]
+ mov r0, #0x3e
+ add r1, r2, r1
+ bl FUN_020311D0
+_0204D674:
+ pop {r4, pc}
+ nop
+_0204D678: .word 0x021C5A68
+
+ thumb_func_start FUN_0204D67C
+FUN_0204D67C: ; 0x0204D67C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, _0204D6BC ; =0x021C5A68
+ add r4, r2, #0x0
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _0204D6B8
+ cmp r1, #0x1
+ beq _0204D692
+ bl ErrorHandling
+_0204D692:
+ cmp r5, #0x8
+ blt _0204D69A
+ bl ErrorHandling
+_0204D69A:
+ ldrb r0, [r4, #0x0]
+ mov r1, #0x1
+ cmp r0, #0x1
+ beq _0204D6A8
+ cmp r0, #0x0
+ beq _0204D6A8
+ mov r1, #0x0
+_0204D6A8:
+ cmp r1, #0x0
+ bne _0204D6B0
+ bl ErrorHandling
+_0204D6B0:
+ ldrb r1, [r4, #0x0]
+ add r0, r5, #0x0
+ bl FUN_0204EAD8
+_0204D6B8:
+ pop {r3-r5, pc}
+ nop
+_0204D6BC: .word 0x021C5A68
+
+ thumb_func_start FUN_0204D6C0
+FUN_0204D6C0: ; 0x0204D6C0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, _0204D734 ; =0x021C5A68
+ add r4, r1, #0x0
+ ldr r1, [r0, #0x0]
+ cmp r1, #0x0
+ beq _0204D732
+ ldr r0, _0204D738 ; =0x000002BE
+ ldrb r0, [r1, r0]
+ cmp r0, #0x0
+ bne _0204D6E4
+ add r0, r4, #0x0
+ bl FUN_0204D654
+ ldr r0, _0204D734 ; =0x021C5A68
+ ldr r1, [r0, #0x0]
+ ldr r0, _0204D73C ; =0x000002C1
+ strb r4, [r1, r0]
+_0204D6E4:
+ ldr r4, [r5, #0x38]
+ cmp r4, #0x0
+ beq _0204D6F8
+ bl FUN_02031190
+ ldr r1, _0204D734 ; =0x021C5A68
+ lsl r0, r0, #0x2
+ ldr r1, [r1, #0x0]
+ add r0, r1, r0
+ str r4, [r0, #0x8]
+_0204D6F8:
+ bl FUN_02030F40
+ cmp r0, #0x0
+ beq _0204D712
+ bl FUN_02031190
+ cmp r0, #0x0
+ bne _0204D712
+ ldr r1, _0204D734 ; =0x021C5A68
+ mov r0, #0x0
+ ldr r1, [r1, #0x0]
+ bl FUN_0204D89C
+_0204D712:
+ bl FUN_02030F40
+ cmp r0, #0x0
+ beq _0204D732
+ bl FUN_02031190
+ cmp r0, #0x0
+ bne _0204D732
+ ldr r0, _0204D734 ; =0x021C5A68
+ ldr r1, [r0, #0x0]
+ ldr r0, _0204D738 ; =0x000002BE
+ ldrb r0, [r1, r0]
+ cmp r0, #0x0
+ bne _0204D732
+ bl FUN_0204EC28
+_0204D732:
+ pop {r3-r5, pc}
+ .balign 4
+_0204D734: .word 0x021C5A68
+_0204D738: .word 0x000002BE
+_0204D73C: .word 0x000002C1
+
+ thumb_func_start FUN_0204D740
+FUN_0204D740: ; 0x0204D740
+ mov r0, #0x20
+ tst r0, r1
+ beq _0204D74A
+ mov r0, #0x2
+ bx lr
+_0204D74A:
+ mov r0, #0x10
+ tst r0, r1
+ beq _0204D754
+ mov r0, #0x3
+ bx lr
+_0204D754:
+ mov r0, #0x40
+ tst r0, r1
+ beq _0204D75E
+ mov r0, #0x0
+ bx lr
+_0204D75E:
+ mov r0, #0x80
+ tst r1, r0
+ beq _0204D768
+ mov r0, #0x1
+ bx lr
+_0204D768:
+ sub r0, #0x81
+ bx lr
+
+ thumb_func_start FUN_0204D76C
+FUN_0204D76C: ; 0x0204D76C
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, _0204D7AC ; =0x021C5A68
+ add r6, r1, #0x0
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x54]
+ bl FUN_02034B64
+ add r4, r0, #0x0
+ ldr r0, _0204D7AC ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x54]
+ bl FUN_02034B6C
+ mov r2, #0x0
+ cmp r4, #0x0
+ ble _0204D7A6
+_0204D78E:
+ ldrh r1, [r0, #0x18]
+ cmp r5, r1
+ bne _0204D79E
+ ldrh r1, [r0, #0x1a]
+ cmp r6, r1
+ bne _0204D79E
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_0204D79E:
+ add r2, r2, #0x1
+ add r0, #0x20
+ cmp r2, r4
+ blt _0204D78E
+_0204D7A6:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ nop
+_0204D7AC: .word 0x021C5A68
+
+ thumb_func_start FUN_0204D7B0
+FUN_0204D7B0: ; 0x0204D7B0
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldr r0, _0204D824 ; =0x0000FFFF
+ add r6, r1, #0x0
+ add r7, r2, #0x0
+ cmp r5, r0
+ beq _0204D812
+ cmp r6, r0
+ beq _0204D812
+ mov r4, #0x0
+_0204D7C4:
+ cmp r4, r7
+ beq _0204D7E0
+ add r0, r4, #0x0
+ bl FUN_0204E544
+ cmp r5, r0
+ bne _0204D7E0
+ add r0, r4, #0x0
+ bl FUN_0204E598
+ cmp r6, r0
+ bne _0204D7E0
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0204D7E0:
+ add r4, r4, #0x1
+ cmp r4, #0x8
+ blt _0204D7C4
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_0204D76C
+ cmp r0, #0x0
+ beq _0204D7F6
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0204D7F6:
+ ldr r0, _0204D828 ; =0x021C5A68
+ ldr r1, [r0, #0x0]
+ ldr r0, _0204D82C ; =0x000002BE
+ ldrb r0, [r1, r0]
+ cmp r0, #0x0
+ beq _0204D812
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02246F1C
+ cmp r0, #0x0
+ bne _0204D812
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0204D812:
+ ldr r0, _0204D828 ; =0x021C5A68
+ add r1, r5, #0x0
+ ldr r0, [r0, #0x0]
+ add r2, r6, #0x0
+ ldr r0, [r0, #0x54]
+ bl FUN_0204A6B4
+ pop {r3-r7, pc}
+ nop
+_0204D824: .word 0x0000FFFF
+_0204D828: .word 0x021C5A68
+_0204D82C: .word 0x000002BE
+
+ thumb_func_start FUN_0204D830
+FUN_0204D830: ; 0x0204D830
+ push {r3, lr}
+ add r1, r0, #0x0
+ ldr r0, _0204D858 ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x4]
+ cmp r0, #0x0
+ beq _0204D852
+ bl FUN_02244D40
+ bl FUN_02244DA0
+ cmp r0, #0x0
+ bne _0204D84E
+ mov r0, #0x1
+ pop {r3, pc}
+_0204D84E:
+ mov r0, #0x0
+ pop {r3, pc}
+_0204D852:
+ mov r0, #0x0
+ pop {r3, pc}
+ nop
+_0204D858: .word 0x021C5A68
+
+ thumb_func_start FUN_0204D85C
+FUN_0204D85C: ; 0x0204D85C
+ cmp r0, #0x5
+ bge _0204D864
+ mov r0, #0x8
+ bx lr
+_0204D864:
+ cmp r0, #0xa
+ bge _0204D86C
+ mov r0, #0x4
+ bx lr
+_0204D86C:
+ mov r0, #0x2
+ bx lr
+
+ thumb_func_start FUN_0204D870
+FUN_0204D870: ; 0x0204D870
+ push {r3-r4, lr}
+ sub sp, #0x14
+ ldr r3, _0204D898 ; =0x020F5824
+ add r4, r0, #0x0
+ ldmia r3!, {r0-r1}
+ add r2, sp, #0x0
+ stmia r2!, {r0-r1}
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldr r0, [r3, #0x0]
+ cmp r4, #0x5
+ str r0, [r2, #0x0]
+ blt _0204D88E
+ bl ErrorHandling
+_0204D88E:
+ lsl r1, r4, #0x2
+ add r0, sp, #0x0
+ ldr r0, [r0, r1]
+ add sp, #0x14
+ pop {r3-r4, pc}
+ .balign 4
+_0204D898: .word 0x020F5824
+
+ thumb_func_start FUN_0204D89C
+FUN_0204D89C: ; 0x0204D89C
+ push {r3-r7, lr}
+ sub sp, #0x18
+ mov r5, #0x0
+ add r0, r5, #0x0
+ ldr r6, _0204DAF4 ; =0x021C5A68
+ str r5, [sp, #0x4]
+ str r0, [sp, #0x0]
+_0204D8AA:
+ ldr r0, [r6, #0x0]
+ add r1, r0, r5
+ add r1, #0x48
+ ldrb r1, [r1, #0x0]
+ cmp r1, #0x0
+ beq _0204D976
+ add r1, r0, r5
+ add r1, #0xe2
+ ldrb r1, [r1, #0x0]
+ cmp r1, #0x0
+ beq _0204D976
+ add r1, r0, r5
+ add r1, #0xea
+ ldrb r1, [r1, #0x0]
+ cmp r1, #0x0
+ beq _0204D976
+ add r2, r0, #0x0
+ ldr r1, [sp, #0x0]
+ add r2, #0x62
+ ldr r0, [r0, #0x4]
+ add r4, r2, r1
+ cmp r0, #0x0
+ beq _0204D8E0
+ add r1, r5, #0x0
+ bl FUN_02244D40
+ str r0, [sp, #0x4]
+_0204D8E0:
+ ldr r1, [r6, #0x0]
+ ldr r0, _0204DAF8 ; =0x000002BE
+ ldrb r0, [r1, r0]
+ cmp r0, #0x0
+ beq _0204D8F4
+ add r0, r5, #0x0
+ bl FUN_02245F4C
+ cmp r0, #0x0
+ bne _0204D976
+_0204D8F4:
+ ldr r0, [r6, #0x0]
+ ldr r1, _0204DAFC ; =0x0000013A
+ add r0, r0, r5
+ ldrb r1, [r0, r1]
+ cmp r1, #0x0
+ beq _0204D90A
+ ldr r1, _0204DAFC ; =0x0000013A
+ ldrb r1, [r0, r1]
+ sub r2, r1, #0x1
+ ldr r1, _0204DAFC ; =0x0000013A
+ strb r2, [r0, r1]
+_0204D90A:
+ ldr r0, [r6, #0x0]
+ ldr r1, _0204DAFC ; =0x0000013A
+ add r2, r0, r5
+ ldrb r1, [r2, r1]
+ cmp r1, #0x0
+ bne _0204D93C
+ ldr r1, _0204DAF8 ; =0x000002BE
+ ldrb r0, [r0, r1]
+ cmp r0, #0x0
+ beq _0204D93C
+ add r0, r5, #0x0
+ bl FUN_0223F8D8
+ cmp r0, #0x0
+ bne _0204D976
+ add r0, r5, #0x0
+ bl FUN_0204D830
+ cmp r0, #0x0
+ bne _0204D93C
+ add r0, r5, #0x0
+ bl FUN_02247544
+ cmp r0, #0x0
+ bne _0204D976
+_0204D93C:
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ beq _0204D94A
+ bl FUN_02244DB0
+ cmp r0, #0x0
+ beq _0204D976
+_0204D94A:
+ ldr r0, [r6, #0x0]
+ add r0, r0, r5
+ add r0, #0xf2
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _0204D95A
+ mov r7, #0x0
+ b _0204D962
+_0204D95A:
+ add r0, r5, #0x0
+ bl FUN_02030F88
+ add r7, r0, #0x0
+_0204D962:
+ add r0, r5, #0x0
+ bl FUN_02030F74
+ strb r0, [r4, #0x5]
+ ldr r0, [r6, #0x0]
+ add r1, r0, r5
+ ldr r0, _0204DAFC ; =0x0000013A
+ ldrb r0, [r1, r0]
+ cmp r0, #0x0
+ beq _0204D978
+_0204D976:
+ b _0204DAE2
+_0204D978:
+ ldr r0, _0204DB00 ; =0x0000010A
+ ldr r2, _0204DB04 ; =0x0000012A
+ ldrb r0, [r1, r0]
+ ldrb r1, [r1, r2]
+ bl FUN_0204D85C
+ str r0, [sp, #0x10]
+ ldr r1, [sp, #0x10]
+ add r0, r5, #0x0
+ bl FUN_0204E084
+ cmp r0, #0x0
+ beq _0204D9A8
+ ldr r0, [r6, #0x0]
+ ldr r1, [sp, #0x10]
+ add r2, r0, r5
+ ldr r0, _0204DAFC ; =0x0000013A
+ strb r1, [r2, r0]
+ ldr r0, [r6, #0x0]
+ mov r1, #0x1
+ add r2, r0, r5
+ ldr r0, _0204DB08 ; =0x00000132
+ strb r1, [r2, r0]
+ b _0204DAE2
+_0204D9A8:
+ ldrb r0, [r4, #0x7]
+ cmp r0, #0x1
+ bne _0204D9B8
+ ldr r0, [r6, #0x0]
+ mov r1, #0x1
+ add r2, r0, r5
+ ldr r0, _0204DB08 ; =0x00000132
+ strb r1, [r2, r0]
+_0204D9B8:
+ mov r0, #0x0
+ strb r0, [r4, #0x7]
+ ldr r0, [r6, #0x0]
+ ldr r1, _0204DB0C ; =0x00000122
+ add r0, r0, r5
+ ldrb r1, [r0, r1]
+ cmp r1, #0x2
+ bne _0204D9DE
+ add r1, sp, #0x14
+ strb r5, [r1, #0x1]
+ ldr r1, _0204DB0C ; =0x00000122
+ mov r2, #0x1
+ strb r2, [r0, r1]
+ add r1, sp, #0x14
+ mov r0, #0x28
+ add r1, #0x1
+ bl FUN_02030C4C
+ b _0204DAE2
+_0204D9DE:
+ add r0, r7, #0x0
+ add r1, r7, #0x0
+ bl FUN_0204D740
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0204E62C
+ str r0, [sp, #0xc]
+ add r0, r5, #0x0
+ bl FUN_0204E664
+ str r0, [sp, #0x8]
+ ldr r1, [sp, #0xc]
+ ldr r0, _0204DB10 ; =0x0000FFFF
+ cmp r1, r0
+ beq _0204DAE2
+ ldr r1, [sp, #0x8]
+ cmp r1, r0
+ beq _0204DAE2
+ mov r0, #0x0
+ mvn r0, r0
+ cmp r7, r0
+ beq _0204DAE2
+ mov r0, #0x4
+ ldrsb r0, [r4, r0]
+ cmp r0, r7
+ beq _0204DA44
+ strb r7, [r4, #0x4]
+ ldr r0, [r6, #0x0]
+ mov r1, #0x4
+ add r2, r0, r5
+ ldr r0, _0204DAFC ; =0x0000013A
+ strb r1, [r2, r0]
+ ldr r0, [r6, #0x0]
+ mov r1, #0x1
+ add r2, r0, r5
+ ldr r0, _0204DB08 ; =0x00000132
+ strb r1, [r2, r0]
+ ldr r0, [r6, #0x0]
+ ldr r1, _0204DB0C ; =0x00000122
+ add r0, r0, r5
+ ldrb r1, [r0, r1]
+ cmp r1, #0x2
+ bls _0204DAE2
+ ldr r1, _0204DB0C ; =0x00000122
+ ldrb r1, [r0, r1]
+ sub r2, r1, #0x1
+ ldr r1, _0204DB0C ; =0x00000122
+ strb r2, [r0, r1]
+ b _0204DAE2
+_0204DA44:
+ ldr r0, [r6, #0x0]
+ ldr r1, _0204DB0C ; =0x00000122
+ add r2, r0, r5
+ ldrb r1, [r2, r1]
+ cmp r1, #0x0
+ bne _0204DAE2
+ ldr r1, _0204DAF8 ; =0x000002BE
+ ldrb r0, [r0, r1]
+ cmp r0, #0x0
+ beq _0204DA66
+ ldr r1, [sp, #0xc]
+ ldr r2, [sp, #0x8]
+ add r0, r5, #0x0
+ bl FUN_0224566C
+ cmp r0, #0x1
+ beq _0204DAE2
+_0204DA66:
+ ldr r0, [sp, #0xc]
+ ldr r1, [sp, #0x8]
+ add r2, r5, #0x0
+ bl FUN_0204D7B0
+ cmp r0, #0x0
+ beq _0204DA8E
+ mov r0, #0x1
+ strb r0, [r4, #0x7]
+ ldr r0, [r6, #0x0]
+ mov r1, #0x1
+ add r2, r0, r5
+ ldr r0, _0204DB08 ; =0x00000132
+ strb r1, [r2, r0]
+ ldr r0, [r6, #0x0]
+ mov r1, #0x4
+ add r2, r0, r5
+ ldr r0, _0204DAFC ; =0x0000013A
+ strb r1, [r2, r0]
+ b _0204DAE2
+_0204DA8E:
+ ldr r0, [r6, #0x0]
+ mov r1, #0x1
+ add r2, r0, r5
+ ldr r0, _0204DB08 ; =0x00000132
+ strb r1, [r2, r0]
+ ldr r0, [sp, #0xc]
+ strh r0, [r4, #0x0]
+ ldr r0, [sp, #0x8]
+ strh r0, [r4, #0x2]
+ strb r7, [r4, #0x4]
+ ldrb r0, [r4, #0x5]
+ bl FUN_0204D870
+ ldr r1, [r6, #0x0]
+ add r2, r1, r5
+ ldr r1, _0204DAFC ; =0x0000013A
+ strb r0, [r2, r1]
+ ldr r0, [r6, #0x0]
+ sub r1, #0x20
+ add r0, r0, r5
+ ldrb r1, [r0, r1]
+ cmp r1, #0x0
+ beq _0204DAE2
+ ldr r1, _0204DB14 ; =0x0000011A
+ ldrb r1, [r0, r1]
+ sub r2, r1, #0x1
+ ldr r1, _0204DB14 ; =0x0000011A
+ strb r2, [r0, r1]
+ ldr r0, [r6, #0x0]
+ add r1, r0, r5
+ ldr r0, _0204DB14 ; =0x0000011A
+ ldrb r0, [r1, r0]
+ cmp r0, #0x0
+ bne _0204DAE2
+ mov r1, #0x1
+ add r0, sp, #0x14
+ strb r1, [r0, #0x0]
+ add r0, r5, #0x0
+ add r2, sp, #0x14
+ mov r3, #0x0
+ bl FUN_0224089C
+_0204DAE2:
+ ldr r0, [sp, #0x0]
+ add r5, r5, #0x1
+ add r0, #0x8
+ str r0, [sp, #0x0]
+ cmp r5, #0x8
+ bge _0204DAF0
+ b _0204D8AA
+_0204DAF0:
+ add sp, #0x18
+ pop {r3-r7, pc}
+ .balign 4
+_0204DAF4: .word 0x021C5A68
+_0204DAF8: .word 0x000002BE
+_0204DAFC: .word 0x0000013A
+_0204DB00: .word 0x0000010A
+_0204DB04: .word 0x0000012A
+_0204DB08: .word 0x00000132
+_0204DB0C: .word 0x00000122
+_0204DB10: .word 0x0000FFFF
+_0204DB14: .word 0x0000011A
+
+ thumb_func_start FUN_0204DB18
+FUN_0204DB18: ; 0x0204DB18
+ push {r3-r7, lr}
+ ldr r5, _0204DBC0 ; =0x021C5A68
+ add r7, r0, #0x0
+ ldr r0, [r5, #0x0]
+ add r3, r2, #0x0
+ cmp r0, #0x0
+ beq _0204DBBC
+ add r2, r0, #0x0
+ ldrb r4, [r3, #0x4]
+ add r2, #0x62
+ lsl r1, r7, #0x3
+ add r2, r2, r1
+ mov r1, #0x80
+ tst r1, r4
+ beq _0204DB3E
+ ldr r1, _0204DBC4 ; =0x000002BB
+ mov r2, #0x1
+ strb r2, [r0, r1]
+ pop {r3-r7, pc}
+_0204DB3E:
+ mov r0, #0x4
+ ldrsb r1, [r2, r0]
+ sub r0, r0, #0x5
+ cmp r1, r0
+ bne _0204DB5A
+ ldr r4, _0204DBC8 ; =0x00000132
+ mov r1, #0x0
+ mov r0, #0x1
+_0204DB4E:
+ ldr r6, [r5, #0x0]
+ add r6, r6, r1
+ add r1, r1, #0x1
+ strb r0, [r6, r4]
+ cmp r1, #0x8
+ blt _0204DB4E
+_0204DB5A:
+ mov r0, #0x0
+ strh r0, [r2, #0x0]
+ strh r0, [r2, #0x2]
+ ldrh r1, [r2, #0x0]
+ ldrb r0, [r3, #0x0]
+ add r0, r1, r0
+ strh r0, [r2, #0x0]
+ ldrb r1, [r3, #0x1]
+ ldrh r0, [r2, #0x0]
+ lsl r4, r1, #0x8
+ mov r1, #0xff
+ lsl r1, r1, #0x8
+ and r4, r1
+ add r0, r0, r4
+ strh r0, [r2, #0x0]
+ ldrh r4, [r2, #0x2]
+ ldrb r0, [r3, #0x2]
+ add r0, r4, r0
+ strh r0, [r2, #0x2]
+ ldrb r4, [r3, #0x3]
+ ldrh r0, [r2, #0x2]
+ lsl r4, r4, #0x8
+ and r1, r4
+ add r0, r0, r1
+ strh r0, [r2, #0x2]
+ ldrb r1, [r3, #0x4]
+ mov r0, #0xf
+ ldr r3, _0204DBC0 ; =0x021C5A68
+ and r0, r1
+ strb r0, [r2, #0x4]
+ ldr r1, [r3, #0x0]
+ mov r0, #0x1
+ add r1, r1, r7
+ add r1, #0x48
+ strb r0, [r1, #0x0]
+ ldr r1, [r3, #0x0]
+ add r4, r1, r7
+ ldr r1, _0204DBC8 ; =0x00000132
+ strb r0, [r4, r1]
+ ldr r0, [r3, #0x0]
+ ldrh r1, [r2, #0x0]
+ ldrh r2, [r2, #0x2]
+ ldr r0, [r0, #0x54]
+ bl FUN_0204A6B4
+ cmp r0, #0x0
+ beq _0204DBBC
+ bl ErrorHandling
+_0204DBBC:
+ pop {r3-r7, pc}
+ nop
+_0204DBC0: .word 0x021C5A68
+_0204DBC4: .word 0x000002BB
+_0204DBC8: .word 0x00000132
+
+ thumb_func_start FUN_0204DBCC
+FUN_0204DBCC: ; 0x0204DBCC
+ push {r3-r5, lr}
+ ldr r0, _0204DC28 ; =0x021C5A68
+ ldrb r4, [r2, #0x0]
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _0204DC24
+ bl FUN_02031190
+ cmp r4, r0
+ beq _0204DC24
+ ldr r0, _0204DC28 ; =0x021C5A68
+ ldr r1, [r0, #0x0]
+ ldr r0, _0204DC2C ; =0x000002BE
+ ldrb r0, [r1, r0]
+ cmp r0, #0x0
+ beq _0204DC14
+ add r0, r4, #0x0
+ bl FUN_0223E554
+ ldr r0, _0204DC28 ; =0x021C5A68
+ ldr r3, [r0, #0x0]
+ ldr r0, _0204DC30 ; =0x000002BD
+ ldrb r0, [r3, r0]
+ cmp r0, #0x0
+ bne _0204DC14
+ lsl r5, r4, #0x3
+ add r1, r3, r5
+ ldr r0, [r3, #0x54]
+ add r3, r3, r5
+ add r1, #0xa2
+ add r3, #0xa4
+ ldrh r1, [r1, #0x0]
+ ldrh r3, [r3, #0x0]
+ mov r2, #0x0
+ bl FUN_021E5B30
+_0204DC14:
+ mov r1, #0x0
+ add r0, r4, #0x0
+ add r2, r1, #0x0
+ bl FUN_0204D43C
+ add r0, r4, #0x0
+ bl FUN_0202DE78
+_0204DC24:
+ pop {r3-r5, pc}
+ nop
+_0204DC28: .word 0x021C5A68
+_0204DC2C: .word 0x000002BE
+_0204DC30: .word 0x000002BD
+
+ thumb_func_start FUN_0204DC34
+FUN_0204DC34: ; 0x0204DC34
+ mov r0, #0x5
+ bx lr
+
+ thumb_func_start FUN_0204DC38
+FUN_0204DC38: ; 0x0204DC38
+ push {r3-r5, lr}
+ ldrb r1, [r2, #0x0]
+ mov r0, #0xf
+ add r3, r1, #0x0
+ and r3, r0
+ ldr r0, _0204DCB0 ; =0x021C5A68
+ ldr r1, [r0, #0x0]
+ cmp r1, #0x0
+ beq _0204DCAC
+ ldrb r4, [r2, #0x2]
+ add r1, #0xa2
+ lsl r0, r3, #0x3
+ add r1, r1, r0
+ mov r0, #0x80
+ tst r0, r4
+ beq _0204DC5C
+ mov r0, #0x1
+ b _0204DC5E
+_0204DC5C:
+ mov r0, #0x0
+_0204DC5E:
+ strb r0, [r1, #0x7]
+ mov r0, #0x0
+ strh r0, [r1, #0x0]
+ strh r0, [r1, #0x2]
+ ldrh r4, [r1, #0x0]
+ ldrb r0, [r2, #0x1]
+ add r0, r4, r0
+ strh r0, [r1, #0x0]
+ ldrb r4, [r2, #0x2]
+ ldrh r0, [r1, #0x0]
+ lsl r5, r4, #0x8
+ mov r4, #0x1
+ lsl r4, r4, #0x8
+ and r5, r4
+ add r0, r0, r5
+ strh r0, [r1, #0x0]
+ ldrh r5, [r1, #0x2]
+ ldrb r0, [r2, #0x3]
+ add r0, r5, r0
+ strh r0, [r1, #0x2]
+ ldrb r5, [r2, #0x2]
+ ldrh r0, [r1, #0x2]
+ lsl r5, r5, #0x7
+ and r4, r5
+ add r0, r0, r4
+ strh r0, [r1, #0x2]
+ ldrb r0, [r2, #0x0]
+ asr r4, r0, #0x4
+ mov r0, #0x3
+ and r4, r0
+ strb r4, [r1, #0x4]
+ ldrb r2, [r2, #0x0]
+ asr r2, r2, #0x6
+ and r0, r2
+ strb r0, [r1, #0x5]
+ lsl r0, r3, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0204D328
+_0204DCAC:
+ pop {r3-r5, pc}
+ nop
+_0204DCB0: .word 0x021C5A68
+
+ thumb_func_start FUN_0204DCB4
+FUN_0204DCB4: ; 0x0204DCB4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, _0204DD10 ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x54]
+ bl FUN_020377AC
+ bl FUN_02026CC4
+ add r4, r0, #0x0
+ ldr r0, _0204DD10 ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x54]
+ bl FUN_020377AC
+ bl FUN_02026CB4
+ ldr r0, _0204DD10 ; =0x021C5A68
+ ldr r1, [r0, #0x0]
+ ldr r0, _0204DD14 ; =0x000002BE
+ ldrb r0, [r1, r0]
+ cmp r0, #0x0
+ beq _0204DD0C
+ bl FUN_02031190
+ cmp r5, r0
+ bne _0204DD0C
+ add r0, r4, #0x0
+ bl FUN_020266B0
+ add r0, r4, #0x0
+ bl FUN_020266C8
+ cmp r0, #0x32
+ bne _0204DD0C
+ ldr r0, _0204DD10 ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x54]
+ ldr r0, [r0, #0xc]
+ bl FUN_02029FC8
+ mov r1, #0x25
+ bl FUN_0202A170
+_0204DD0C:
+ pop {r3-r5, pc}
+ nop
+_0204DD10: .word 0x021C5A68
+_0204DD14: .word 0x000002BE
+
+ thumb_func_start FUN_0204DD18
+FUN_0204DD18: ; 0x0204DD18
+ push {r3-r7, lr}
+ sub sp, #0x10
+ ldr r4, _0204DE24 ; =0x020F5808
+ add r6, r3, #0x0
+ add r5, r0, #0x0
+ add r3, sp, #0x4
+ mov r2, #0xc
+_0204DD26:
+ ldrb r0, [r4, #0x0]
+ add r4, r4, #0x1
+ strb r0, [r3, #0x0]
+ add r3, r3, #0x1
+ sub r2, r2, #0x1
+ bne _0204DD26
+ ldr r0, _0204DE28 ; =0x021C5A68
+ ldr r2, _0204DE2C ; =0x00000102
+ ldr r0, [r0, #0x0]
+ add r3, r0, r5
+ ldrsb r3, [r3, r2]
+ mov r2, #0x0
+ mvn r2, r2
+ cmp r3, r2
+ beq _0204DD4E
+ lsl r7, r5, #0x2
+ add r0, r0, r7
+ ldr r0, [r0, #0x8]
+ cmp r0, #0x0
+ bne _0204DD54
+_0204DD4E:
+ add sp, #0x10
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0204DD54:
+ cmp r1, #0x0
+ bne _0204DD5E
+ add sp, #0x10
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0204DD5E:
+ bl FUN_020553A0
+ add r4, r0, #0x0
+ ldr r0, _0204DE28 ; =0x021C5A68
+ ldr r1, [r0, #0x0]
+ add r0, r7, #0x0
+ add r0, r1, r0
+ ldr r0, [r0, #0x8]
+ bl FUN_020552F8
+ str r0, [sp, #0x0]
+ ldr r0, _0204DE28 ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ add r1, r0, r5
+ ldr r0, _0204DE2C ; =0x00000102
+ ldrsb r0, [r1, r0]
+ bl FUN_0204F610
+ ldr r1, [sp, #0x0]
+ cmp r1, r0
+ beq _0204DDB4
+ add r0, r4, #0x0
+ mov r1, #0x80
+ bl FUN_02058418
+ ldr r0, _0204DE28 ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ add r1, r0, r5
+ ldr r0, _0204DE2C ; =0x00000102
+ ldrsb r0, [r1, r0]
+ bl FUN_0204F610
+ add r1, r0, #0x0
+ ldr r0, _0204DE28 ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ add r0, r0, r7
+ ldr r0, [r0, #0x8]
+ bl FUN_02055304
+ add r0, r4, #0x0
+ mov r1, #0x80
+ bl FUN_02058410
+_0204DDB4:
+ add r0, r4, #0x0
+ bl FUN_0205AE28
+ add r0, r4, #0x0
+ bl FUN_0205AD98
+ cmp r0, #0x1
+ bne _0204DE1C
+ add r0, r5, #0x0
+ bl FUN_0204DCB4
+ cmp r6, #0x0
+ beq _0204DDD8
+ cmp r6, #0x1
+ beq _0204DDEE
+ cmp r6, #0x2
+ beq _0204DE06
+ b _0204DE1C
+_0204DDD8:
+ ldr r1, _0204DE28 ; =0x021C5A68
+ add r0, r4, #0x0
+ ldr r1, [r1, #0x0]
+ add r2, r1, r5
+ ldr r1, _0204DE2C ; =0x00000102
+ ldrsb r2, [r2, r1]
+ add r1, sp, #0x4
+ ldrb r1, [r1, r2]
+ bl FUN_0205ADDC
+ b _0204DE1C
+_0204DDEE:
+ ldr r1, _0204DE28 ; =0x021C5A68
+ add r0, r4, #0x0
+ ldr r1, [r1, #0x0]
+ add r2, r1, r5
+ ldr r1, _0204DE2C ; =0x00000102
+ ldrsb r1, [r2, r1]
+ add r2, r1, #0x4
+ add r1, sp, #0x4
+ ldrb r1, [r1, r2]
+ bl FUN_0205ADDC
+ b _0204DE1C
+_0204DE06:
+ ldr r1, _0204DE28 ; =0x021C5A68
+ add r0, r4, #0x0
+ ldr r1, [r1, #0x0]
+ add r2, r1, r5
+ ldr r1, _0204DE2C ; =0x00000102
+ ldrsb r2, [r2, r1]
+ add r1, sp, #0x4
+ add r2, #0x8
+ ldrb r1, [r1, r2]
+ bl FUN_0205ADDC
+_0204DE1C:
+ mov r0, #0x1
+ add sp, #0x10
+ pop {r3-r7, pc}
+ nop
+_0204DE24: .word 0x020F5808
+_0204DE28: .word 0x021C5A68
+_0204DE2C: .word 0x00000102
+
+ thumb_func_start FUN_0204DE30
+FUN_0204DE30: ; 0x0204DE30
+ push {r4-r7, lr}
+ sub sp, #0x1c
+ add r4, r0, #0x0
+ ldr r0, _0204E06C ; =0x021C5A68
+ lsl r1, r4, #0x3
+ ldr r0, [r0, #0x0]
+ add r2, r0, #0x0
+ add r2, #0xa2
+ add r5, r2, r1
+ ldr r1, _0204E070 ; =0x00000142
+ add r2, r0, r1
+ ldrb r1, [r2, r4]
+ cmp r1, #0x0
+ beq _0204DE54
+ sub r0, r1, #0x1
+ add sp, #0x1c
+ strb r0, [r2, r4]
+ pop {r4-r7, pc}
+_0204DE54:
+ ldrh r2, [r5, #0x0]
+ ldr r1, _0204E074 ; =0x0000FFFF
+ cmp r2, r1
+ beq _0204DF08
+ ldrh r2, [r5, #0x2]
+ cmp r2, r1
+ beq _0204DF08
+ ldr r1, _0204E078 ; =0x000002BD
+ ldrb r2, [r0, r1]
+ cmp r2, #0x0
+ bne _0204DF08
+ add r1, r1, #0x1
+ ldrb r0, [r0, r1]
+ cmp r0, #0x0
+ bne _0204DE86
+ bl FUN_02031190
+ cmp r4, r0
+ bne _0204DE86
+ ldr r0, _0204E06C ; =0x021C5A68
+ ldr r1, [r0, #0x0]
+ ldr r0, _0204E07C ; =0x000002C1
+ ldrb r0, [r1, r0]
+ cmp r0, #0x0
+ beq _0204DF08
+_0204DE86:
+ ldr r0, _0204E06C ; =0x021C5A68
+ ldr r1, [r0, #0x0]
+ lsl r0, r4, #0x2
+ add r0, r1, r0
+ ldr r0, [r0, #0x8]
+ str r0, [sp, #0x18]
+ cmp r0, #0x0
+ bne _0204DE98
+ b _0204E068
+_0204DE98:
+ bl FUN_02055320
+ ldrh r1, [r5, #0x0]
+ sub r0, r0, r1
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x18]
+ bl FUN_0205532C
+ ldrh r1, [r5, #0x2]
+ sub r7, r0, r1
+ ldr r0, [sp, #0x18]
+ bl FUN_020552F8
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x10]
+ cmp r0, #0x0
+ bne _0204DEC2
+ cmp r7, #0x0
+ bne _0204DEC2
+ mov r6, #0x0
+ b _0204DEEC
+_0204DEC2:
+ ldr r0, [sp, #0x10]
+ blx FUN_020DE3F0
+ add r6, r0, #0x0
+ add r0, r7, #0x0
+ blx FUN_020DE3F0
+ cmp r6, r0
+ ble _0204DEE2
+ ldr r0, [sp, #0x10]
+ cmp r0, #0x0
+ ble _0204DEDE
+ mov r6, #0x20
+ b _0204DEEC
+_0204DEDE:
+ mov r6, #0x10
+ b _0204DEEC
+_0204DEE2:
+ cmp r7, #0x0
+ ble _0204DEEA
+ mov r6, #0x40
+ b _0204DEEC
+_0204DEEA:
+ mov r6, #0x80
+_0204DEEC:
+ add r0, r7, #0x0
+ blx FUN_020DE3F0
+ ldr r0, [sp, #0x10]
+ blx FUN_020DE3F0
+ ldrb r3, [r5, #0x5]
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ add r2, r6, #0x0
+ bl FUN_0204DD18
+ cmp r0, #0x0
+ beq _0204DF0A
+_0204DF08:
+ b _0204E068
+_0204DF0A:
+ ldrb r0, [r5, #0x5]
+ mov r7, #0xff
+ str r0, [sp, #0x14]
+ cmp r0, #0x3
+ bhi _0204DF46
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0204DF20: ; jump table (using 16-bit offset)
+ .short _0204DF28 - _0204DF20 - 2; case 0
+ .short _0204DF2E - _0204DF20 - 2; case 1
+ .short _0204DF3C - _0204DF20 - 2; case 2
+ .short _0204DF42 - _0204DF20 - 2; case 3
+_0204DF28:
+ mov r0, #0x5
+ str r0, [sp, #0x8]
+ b _0204DF46
+_0204DF2E:
+ mov r0, #0x4
+ str r0, [sp, #0x8]
+ mov r0, #0x2
+ orr r0, r6
+ lsl r0, r0, #0x10
+ lsr r6, r0, #0x10
+ b _0204DF46
+_0204DF3C:
+ mov r0, #0x2
+ str r0, [sp, #0x8]
+ b _0204DF46
+_0204DF42:
+ mov r0, #0x1
+ str r0, [sp, #0x8]
+_0204DF46:
+ ldr r0, _0204E06C ; =0x021C5A68
+ ldr r1, [r0, #0x0]
+ mov r0, #0xb
+ lsl r0, r0, #0x6
+ ldrb r0, [r1, r0]
+ cmp r0, #0x0
+ beq _0204DF6C
+ bl FUN_02031190
+ cmp r4, r0
+ bne _0204DF6C
+ ldr r0, _0204E06C ; =0x021C5A68
+ ldr r2, [r0, #0x0]
+ mov r0, #0xb
+ lsl r0, r0, #0x6
+ ldrb r1, [r2, r0]
+ sub r1, r1, #0x1
+ strb r1, [r2, r0]
+ b _0204E00C
+_0204DF6C:
+ bl FUN_02030FE0
+ cmp r0, #0x0
+ bne _0204DFA0
+ ldr r0, _0204E06C ; =0x021C5A68
+ ldr r1, [r0, #0x0]
+ ldr r0, _0204E080 ; =0x000002BE
+ ldrb r0, [r1, r0]
+ cmp r0, #0x0
+ beq _0204DFA0
+ bl FUN_02031190
+ cmp r4, r0
+ bne _0204DFA0
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ mov r0, #0x0
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x18]
+ ldr r3, [sp, #0x8]
+ add r1, r6, #0x0
+ add r2, r6, #0x0
+ bl FUN_02057194
+ add r7, r0, #0x0
+ b _0204E00C
+_0204DFA0:
+ mov r0, #0x2
+ add r1, r6, #0x0
+ bic r1, r0
+ bne _0204DFDE
+ ldrb r0, [r5, #0x7]
+ cmp r0, #0x0
+ beq _0204DFDE
+ mov r0, #0x3
+ str r0, [sp, #0x14]
+ mov r0, #0x4
+ ldrsb r0, [r5, r0]
+ cmp r0, #0x3
+ bhi _0204DFD2
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0204DFC6: ; jump table (using 16-bit offset)
+ .short _0204DFCE - _0204DFC6 - 2; case 0
+ .short _0204DFD2 - _0204DFC6 - 2; case 1
+ .short _0204DFD6 - _0204DFC6 - 2; case 2
+ .short _0204DFDA - _0204DFC6 - 2; case 3
+_0204DFCE:
+ mov r7, #0x1c
+ b _0204E00C
+_0204DFD2:
+ mov r7, #0x1d
+ b _0204E00C
+_0204DFD6:
+ mov r7, #0x1e
+ b _0204E00C
+_0204DFDA:
+ mov r7, #0x1f
+ b _0204E00C
+_0204DFDE:
+ cmp r1, #0x0
+ bne _0204DFF6
+ mov r0, #0x4
+ ldrsb r0, [r5, r0]
+ ldr r1, [sp, #0xc]
+ cmp r0, r1
+ beq _0204DFF6
+ mov r1, #0x24
+ bl FUN_0205AFDC
+ add r7, r0, #0x0
+ b _0204E00C
+_0204DFF6:
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ mov r0, #0x0
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x18]
+ ldr r3, [sp, #0x8]
+ add r1, r6, #0x0
+ add r2, r6, #0x0
+ bl FUN_02057194
+ add r7, r0, #0x0
+_0204E00C:
+ ldr r0, [sp, #0x18]
+ bl FUN_02057254
+ cmp r0, #0x0
+ bne _0204E020
+ ldr r0, [sp, #0x18]
+ bl FUN_020570C4
+ cmp r0, #0x0
+ beq _0204E068
+_0204E020:
+ cmp r7, #0xff
+ beq _0204E068
+ ldr r0, [sp, #0x18]
+ add r1, r7, #0x0
+ bl FUN_02057260
+ mov r0, #0x2
+ bic r6, r0
+ beq _0204E068
+ ldr r0, _0204E06C ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ add r1, r0, r4
+ ldr r0, _0204E070 ; =0x00000142
+ ldrb r0, [r1, r0]
+ cmp r0, #0x0
+ bne _0204E050
+ ldr r0, [sp, #0x14]
+ bl FUN_0204D870
+ ldr r1, _0204E06C ; =0x021C5A68
+ ldr r1, [r1, #0x0]
+ add r2, r1, r4
+ ldr r1, _0204E070 ; =0x00000142
+ strb r0, [r2, r1]
+_0204E050:
+ ldr r0, _0204E06C ; =0x021C5A68
+ ldr r1, [r0, #0x0]
+ ldr r0, _0204E070 ; =0x00000142
+ add r1, r1, r0
+ ldrb r0, [r1, r4]
+ cmp r0, #0x0
+ beq _0204E062
+ sub r0, r0, #0x1
+ strb r0, [r1, r4]
+_0204E062:
+ add r0, r4, #0x0
+ bl FUN_0204DCB4
+_0204E068:
+ add sp, #0x1c
+ pop {r4-r7, pc}
+ .balign 4
+_0204E06C: .word 0x021C5A68
+_0204E070: .word 0x00000142
+_0204E074: .word 0x0000FFFF
+_0204E078: .word 0x000002BD
+_0204E07C: .word 0x000002C1
+_0204E080: .word 0x000002BE
+
+ thumb_func_start FUN_0204E084
+FUN_0204E084: ; 0x0204E084
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r4, r1, #0x0
+ ldr r1, _0204E16C ; =0x021C5A68
+ add r5, r0, #0x0
+ ldr r2, [r1, #0x0]
+ ldr r1, _0204E170 ; =0x0000010A
+ add r2, r2, r1
+ ldrb r1, [r2, r5]
+ cmp r1, #0x0
+ bne _0204E0A0
+ add sp, #0x8
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0204E0A0:
+ cmp r1, #0xff
+ bne _0204E0AA
+ add sp, #0x8
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0204E0AA:
+ sub r1, r1, #0x1
+ strb r1, [r2, r5]
+ cmp r4, #0x1
+ bne _0204E0B8
+ add sp, #0x8
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0204E0B8:
+ bl FUN_0204E544
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0204E598
+ str r0, [sp, #0x0]
+ ldr r0, _0204E16C ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ add r1, r0, r5
+ ldr r0, _0204E174 ; =0x00000112
+ ldrb r0, [r1, r0]
+ bl FUN_02059BF4
+ add r7, r6, r0
+ ldr r0, _0204E16C ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ add r1, r0, r5
+ ldr r0, _0204E174 ; =0x00000112
+ ldrb r0, [r1, r0]
+ bl FUN_02059C00
+ ldr r1, [sp, #0x0]
+ add r6, r1, r0
+ ldr r0, _0204E16C ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ add r1, r0, r5
+ ldr r0, _0204E170 ; =0x0000010A
+ ldrb r0, [r1, r0]
+ cmp r0, #0x0
+ beq _0204E110
+ add r0, r7, #0x0
+ add r1, r6, #0x0
+ add r2, r5, #0x0
+ bl FUN_0204D7B0
+ cmp r0, #0x0
+ beq _0204E110
+ ldr r1, _0204E16C ; =0x021C5A68
+ mov r0, #0x1
+ ldr r1, [r1, #0x0]
+ add r2, r1, r5
+ ldr r1, _0204E170 ; =0x0000010A
+ strb r0, [r2, r1]
+_0204E110:
+ ldr r0, _0204E16C ; =0x021C5A68
+ ldr r1, [r0, #0x0]
+ ldr r0, _0204E170 ; =0x0000010A
+ add r2, r1, r5
+ ldrb r0, [r2, r0]
+ cmp r0, #0x1
+ bne _0204E124
+ add sp, #0x8
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0204E124:
+ cmp r0, #0x0
+ bne _0204E13E
+ mov r1, #0x1
+ add r0, sp, #0x4
+ strb r1, [r0, #0x0]
+ add r0, r5, #0x0
+ add r2, sp, #0x4
+ mov r3, #0x0
+ bl FUN_0224089C
+ add sp, #0x8
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0204E13E:
+ add r1, #0x62
+ lsl r2, r5, #0x3
+ add r0, r1, r2
+ strh r7, [r1, r2]
+ strh r6, [r0, #0x2]
+ cmp r4, #0x2
+ beq _0204E156
+ cmp r4, #0x4
+ beq _0204E15C
+ cmp r4, #0x8
+ beq _0204E162
+ b _0204E166
+_0204E156:
+ mov r1, #0x0
+ strb r1, [r0, #0x5]
+ b _0204E166
+_0204E15C:
+ mov r1, #0x1
+ strb r1, [r0, #0x5]
+ b _0204E166
+_0204E162:
+ mov r1, #0x2
+ strb r1, [r0, #0x5]
+_0204E166:
+ mov r0, #0x1
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+_0204E16C: .word 0x021C5A68
+_0204E170: .word 0x0000010A
+_0204E174: .word 0x00000112
+
+ thumb_func_start FUN_0204E178
+FUN_0204E178: ; 0x0204E178
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldr r0, _0204E1DC ; =0x021C5A68
+ add r4, r1, #0x0
+ ldr r1, [r0, #0x0]
+ lsl r0, r5, #0x3
+ add r1, #0x62
+ add r6, r1, r0
+ add r0, r4, #0x0
+ add r7, r2, #0x0
+ bl FUN_0204F610
+ ldr r1, _0204E1DC ; =0x021C5A68
+ strb r0, [r6, #0x4]
+ ldr r0, [r1, #0x0]
+ add r2, r0, r5
+ ldr r0, _0204E1E0 ; =0x00000112
+ cmp r7, #0x0
+ strb r4, [r2, r0]
+ beq _0204E1B6
+ ldr r2, [r1, #0x0]
+ mov r3, #0x1
+ add r2, r2, r5
+ add r0, #0x18
+ strb r3, [r2, r0]
+ ldr r0, [r1, #0x0]
+ mov r2, #0x2d
+ add r1, r0, r5
+ add r0, r2, #0x0
+ add r0, #0xdd
+ b _0204E1CA
+_0204E1B6:
+ ldr r2, [r1, #0x0]
+ mov r3, #0x0
+ add r2, r2, r5
+ add r0, #0x18
+ strb r3, [r2, r0]
+ ldr r0, [r1, #0x0]
+ mov r2, #0x1b
+ add r1, r0, r5
+ add r0, r2, #0x0
+ add r0, #0xef
+_0204E1CA:
+ strb r2, [r1, r0]
+ ldr r0, _0204E1DC ; =0x021C5A68
+ mov r2, #0x1
+ ldr r0, [r0, #0x0]
+ add r1, r0, r5
+ ldr r0, _0204E1E4 ; =0x00000132
+ strb r2, [r1, r0]
+ pop {r3-r7, pc}
+ nop
+_0204E1DC: .word 0x021C5A68
+_0204E1E0: .word 0x00000112
+_0204E1E4: .word 0x00000132
+
+ thumb_func_start FUN_0204E1E8
+FUN_0204E1E8: ; 0x0204E1E8
+ ldr r1, _0204E1F8 ; =0x021C5A68
+ mov r2, #0x0
+ ldr r1, [r1, #0x0]
+ add r1, r1, r0
+ ldr r0, _0204E1FC ; =0x0000010A
+ strb r2, [r1, r0]
+ bx lr
+ nop
+_0204E1F8: .word 0x021C5A68
+_0204E1FC: .word 0x0000010A
+
+ thumb_func_start FUN_0204E200
+FUN_0204E200: ; 0x0204E200
+ ldr r1, _0204E210 ; =0x021C5A68
+ mov r2, #0xff
+ ldr r1, [r1, #0x0]
+ add r1, r1, r0
+ add r0, r2, #0x0
+ add r0, #0xb
+ strb r2, [r1, r0]
+ bx lr
+ .balign 4
+_0204E210: .word 0x021C5A68
+
+ thumb_func_start FUN_0204E214
+FUN_0204E214: ; 0x0204E214
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, _0204E24C ; =0x021C5A68
+ add r4, r1, #0x0
+ ldr r1, [r0, #0x0]
+ lsl r0, r5, #0x2
+ add r0, r1, r0
+ ldr r0, [r0, #0x8]
+ cmp r0, #0x0
+ beq _0204E248
+ bl FUN_020553A0
+ mov r1, #0x80
+ add r6, r0, #0x0
+ bl FUN_02058410
+ mov r1, #0x1
+ add r0, r6, #0x0
+ lsl r1, r1, #0x8
+ bl FUN_02058410
+ ldr r0, _0204E24C ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ add r1, r0, r5
+ ldr r0, _0204E250 ; =0x00000102
+ strb r4, [r1, r0]
+_0204E248:
+ pop {r4-r6, pc}
+ nop
+_0204E24C: .word 0x021C5A68
+_0204E250: .word 0x00000102
+
+ thumb_func_start FUN_0204E254
+FUN_0204E254: ; 0x0204E254
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ ldr r0, _0204E2A0 ; =0x021C5A68
+ ldr r1, [r0, #0x0]
+ lsl r0, r4, #0x2
+ add r0, r1, r0
+ ldr r0, [r0, #0x8]
+ cmp r0, #0x0
+ beq _0204E29E
+ add r2, r1, r4
+ ldr r1, _0204E2A4 ; =0x00000102
+ ldrsb r2, [r2, r1]
+ mov r1, #0x0
+ mvn r1, r1
+ cmp r2, r1
+ beq _0204E29E
+ bl FUN_020553A0
+ add r5, r0, #0x0
+ bl FUN_0205AE50
+ add r0, r5, #0x0
+ mov r1, #0x80
+ bl FUN_02058418
+ mov r1, #0x1
+ add r0, r5, #0x0
+ lsl r1, r1, #0x8
+ bl FUN_02058418
+ ldr r0, _0204E2A0 ; =0x021C5A68
+ mov r2, #0x0
+ ldr r0, [r0, #0x0]
+ mvn r2, r2
+ add r1, r0, r4
+ ldr r0, _0204E2A4 ; =0x00000102
+ strb r2, [r1, r0]
+_0204E29E:
+ pop {r3-r5, pc}
+ .balign 4
+_0204E2A0: .word 0x021C5A68
+_0204E2A4: .word 0x00000102
+
+ thumb_func_start FUN_0204E2A8
+FUN_0204E2A8: ; 0x0204E2A8
+ mov r0, #0x4
+ bx lr
+
+ thumb_func_start FUN_0204E2AC
+FUN_0204E2AC: ; 0x0204E2AC
+ ldr r3, _0204E2B0 ; =FUN_0204F7FC
+ bx r3
+ .balign 4
+_0204E2B0: .word FUN_0204F7FC
+
+ thumb_func_start FUN_0204E2B4
+FUN_0204E2B4: ; 0x0204E2B4
+ ldr r3, _0204E2B8 ; =FUN_0204F7FC
+ bx r3
+ .balign 4
+_0204E2B8: .word FUN_0204F7FC
+
+ thumb_func_start FUN_0204E2BC
+FUN_0204E2BC: ; 0x0204E2BC
+ ldr r3, _0204E2C4 ; =FUN_0204F774
+ mov r0, #0x2
+ bx r3
+ nop
+_0204E2C4: .word FUN_0204F774
+
+ thumb_func_start FUN_0204E2C8
+FUN_0204E2C8: ; 0x0204E2C8
+ ldr r3, _0204E2D0 ; =FUN_0204F774
+ mov r0, #0x20
+ bx r3
+ nop
+_0204E2D0: .word FUN_0204F774
+
+ thumb_func_start FUN_0204E2D4
+FUN_0204E2D4: ; 0x0204E2D4
+ ldr r3, _0204E2DC ; =FUN_0204F774
+ mov r0, #0x1
+ bx r3
+ nop
+_0204E2DC: .word FUN_0204F774
+
+ thumb_func_start FUN_0204E2E0
+FUN_0204E2E0: ; 0x0204E2E0
+ push {r3, lr}
+ add r1, sp, #0x0
+ strb r0, [r1, #0x0]
+ mov r0, #0x1a
+ add r1, sp, #0x0
+ bl FUN_02030C4C
+ pop {r3, pc}
+
+ thumb_func_start FUN_0204E2F0
+FUN_0204E2F0: ; 0x0204E2F0
+ ldr r3, _0204E2F8 ; =0x0223E4BD
+ ldrb r0, [r2, #0x0]
+ bx r3
+ nop
+_0204E2F8: .word 0x0223E4BD
+
+ thumb_func_start FUN_0204E2FC
+FUN_0204E2FC: ; 0x0204E2FC
+ push {r3, lr}
+ bl FUN_02031280
+ cmp r0, #0x0
+ beq _0204E30A
+ mov r0, #0x1
+ pop {r3, pc}
+_0204E30A:
+ ldr r0, _0204E344 ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _0204E316
+ mov r0, #0x0
+ pop {r3, pc}
+_0204E316:
+ bl FUN_02031190
+ bl FUN_02030E7C
+ cmp r0, #0x0
+ bne _0204E326
+ mov r0, #0x0
+ pop {r3, pc}
+_0204E326:
+ ldr r0, _0204E344 ; =0x021C5A68
+ ldr r1, [r0, #0x0]
+ ldr r0, _0204E348 ; =0x000002BE
+ ldrb r0, [r1, r0]
+ cmp r0, #0x0
+ beq _0204E33E
+ bl FUN_0204FE5C
+ cmp r0, #0x0
+ bne _0204E33E
+ mov r0, #0x0
+ pop {r3, pc}
+_0204E33E:
+ mov r0, #0x1
+ pop {r3, pc}
+ nop
+_0204E344: .word 0x021C5A68
+_0204E348: .word 0x000002BE
+
+ thumb_func_start FUN_0204E34C
+FUN_0204E34C: ; 0x0204E34C
+ ldr r1, _0204E358 ; =0x021C5A68
+ ldr r1, [r1, #0x0]
+ add r0, r1, r0
+ add r0, #0x48
+ ldrb r0, [r0, #0x0]
+ bx lr
+ .balign 4
+_0204E358: .word 0x021C5A68
+
+ thumb_func_start FUN_0204E35C
+FUN_0204E35C: ; 0x0204E35C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _0204E39C ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _0204E36C
+ ldr r0, _0204E3A0 ; =0x0000FFFF
+ pop {r4, pc}
+_0204E36C:
+ bl FUN_02031190
+ cmp r4, r0
+ bne _0204E382
+ ldr r0, _0204E39C ; =0x021C5A68
+ ldr r1, [r0, #0x0]
+ lsl r0, r4, #0x3
+ add r0, r1, r0
+ add r0, #0xa2
+ ldrh r0, [r0, #0x0]
+ pop {r4, pc}
+_0204E382:
+ bl FUN_0204E2FC
+ cmp r0, #0x0
+ beq _0204E398
+ ldr r0, _0204E39C ; =0x021C5A68
+ ldr r1, [r0, #0x0]
+ lsl r0, r4, #0x3
+ add r0, r1, r0
+ add r0, #0xa2
+ ldrh r0, [r0, #0x0]
+ pop {r4, pc}
+_0204E398:
+ ldr r0, _0204E3A0 ; =0x0000FFFF
+ pop {r4, pc}
+ .balign 4
+_0204E39C: .word 0x021C5A68
+_0204E3A0: .word 0x0000FFFF
+
+ thumb_func_start FUN_0204E3A4
+FUN_0204E3A4: ; 0x0204E3A4
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _0204E3E4 ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _0204E3B4
+ ldr r0, _0204E3E8 ; =0x0000FFFF
+ pop {r4, pc}
+_0204E3B4:
+ bl FUN_02031190
+ cmp r4, r0
+ bne _0204E3CA
+ ldr r0, _0204E3E4 ; =0x021C5A68
+ ldr r1, [r0, #0x0]
+ lsl r0, r4, #0x3
+ add r0, r1, r0
+ add r0, #0xa4
+ ldrh r0, [r0, #0x0]
+ pop {r4, pc}
+_0204E3CA:
+ bl FUN_0204E2FC
+ cmp r0, #0x0
+ beq _0204E3E0
+ ldr r0, _0204E3E4 ; =0x021C5A68
+ ldr r1, [r0, #0x0]
+ lsl r0, r4, #0x3
+ add r0, r1, r0
+ add r0, #0xa4
+ ldrh r0, [r0, #0x0]
+ pop {r4, pc}
+_0204E3E0:
+ ldr r0, _0204E3E8 ; =0x0000FFFF
+ pop {r4, pc}
+ .balign 4
+_0204E3E4: .word 0x021C5A68
+_0204E3E8: .word 0x0000FFFF
+
+ thumb_func_start FUN_0204E3EC
+FUN_0204E3EC: ; 0x0204E3EC
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _0204E438 ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _0204E3FC
+ ldr r0, _0204E43C ; =0x0000FFFF
+ pop {r4, pc}
+_0204E3FC:
+ bl FUN_02031190
+ cmp r4, r0
+ bne _0204E412
+ ldr r0, _0204E438 ; =0x021C5A68
+ ldr r1, [r0, #0x0]
+ lsl r0, r4, #0x3
+ add r0, r1, r0
+ add r0, #0xa2
+ ldrh r0, [r0, #0x0]
+ pop {r4, pc}
+_0204E412:
+ bl FUN_0204E2FC
+ cmp r0, #0x0
+ beq _0204E428
+ ldr r0, _0204E438 ; =0x021C5A68
+ ldr r1, [r0, #0x0]
+ add r0, r1, r4
+ add r0, #0x48
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _0204E42C
+_0204E428:
+ ldr r0, _0204E43C ; =0x0000FFFF
+ pop {r4, pc}
+_0204E42C:
+ lsl r0, r4, #0x3
+ add r0, r1, r0
+ add r0, #0xa2
+ ldrh r0, [r0, #0x0]
+ pop {r4, pc}
+ nop
+_0204E438: .word 0x021C5A68
+_0204E43C: .word 0x0000FFFF
+
+ thumb_func_start FUN_0204E440
+FUN_0204E440: ; 0x0204E440
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _0204E48C ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _0204E450
+ ldr r0, _0204E490 ; =0x0000FFFF
+ pop {r4, pc}
+_0204E450:
+ bl FUN_02031190
+ cmp r4, r0
+ bne _0204E466
+ ldr r0, _0204E48C ; =0x021C5A68
+ ldr r1, [r0, #0x0]
+ lsl r0, r4, #0x3
+ add r0, r1, r0
+ add r0, #0xa4
+ ldrh r0, [r0, #0x0]
+ pop {r4, pc}
+_0204E466:
+ bl FUN_0204E2FC
+ cmp r0, #0x0
+ beq _0204E47C
+ ldr r0, _0204E48C ; =0x021C5A68
+ ldr r1, [r0, #0x0]
+ add r0, r1, r4
+ add r0, #0x48
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _0204E480
+_0204E47C:
+ ldr r0, _0204E490 ; =0x0000FFFF
+ pop {r4, pc}
+_0204E480:
+ lsl r0, r4, #0x3
+ add r0, r1, r0
+ add r0, #0xa4
+ ldrh r0, [r0, #0x0]
+ pop {r4, pc}
+ nop
+_0204E48C: .word 0x021C5A68
+_0204E490: .word 0x0000FFFF
+
+ thumb_func_start FUN_0204E494
+FUN_0204E494: ; 0x0204E494
+ ldr r1, _0204E4AC ; =0x021C5A68
+ ldr r1, [r1, #0x0]
+ cmp r1, #0x0
+ beq _0204E4A6
+ lsl r0, r0, #0x3
+ add r0, r1, r0
+ add r0, #0xa2
+ ldrh r0, [r0, #0x0]
+ bx lr
+_0204E4A6:
+ ldr r0, _0204E4B0 ; =0x0000FFFF
+ bx lr
+ nop
+_0204E4AC: .word 0x021C5A68
+_0204E4B0: .word 0x0000FFFF
+
+ thumb_func_start FUN_0204E4B4
+FUN_0204E4B4: ; 0x0204E4B4
+ ldr r1, _0204E4CC ; =0x021C5A68
+ ldr r1, [r1, #0x0]
+ cmp r1, #0x0
+ beq _0204E4C6
+ lsl r0, r0, #0x3
+ add r0, r1, r0
+ add r0, #0xa4
+ ldrh r0, [r0, #0x0]
+ bx lr
+_0204E4C6:
+ ldr r0, _0204E4D0 ; =0x0000FFFF
+ bx lr
+ nop
+_0204E4CC: .word 0x021C5A68
+_0204E4D0: .word 0x0000FFFF
+
+ thumb_func_start FUN_0204E4D4
+FUN_0204E4D4: ; 0x0204E4D4
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_0204E3EC
+ ldr r1, _0204E504 ; =0x0000FFFF
+ cmp r0, r1
+ bne _0204E4E6
+ add r0, r1, #0x0
+ pop {r4, pc}
+_0204E4E6:
+ ldr r0, _0204E508 ; =0x021C5A68
+ lsl r4, r4, #0x3
+ ldr r0, [r0, #0x0]
+ add r1, r0, r4
+ mov r0, #0xa6
+ ldrsb r0, [r1, r0]
+ bl FUN_02059BF4
+ ldr r1, _0204E508 ; =0x021C5A68
+ ldr r1, [r1, #0x0]
+ add r1, r1, r4
+ add r1, #0xa2
+ ldrh r1, [r1, #0x0]
+ add r0, r1, r0
+ pop {r4, pc}
+ .balign 4
+_0204E504: .word 0x0000FFFF
+_0204E508: .word 0x021C5A68
+
+ thumb_func_start FUN_0204E50C
+FUN_0204E50C: ; 0x0204E50C
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_0204E440
+ ldr r1, _0204E53C ; =0x0000FFFF
+ cmp r0, r1
+ bne _0204E51E
+ add r0, r1, #0x0
+ pop {r4, pc}
+_0204E51E:
+ ldr r0, _0204E540 ; =0x021C5A68
+ lsl r4, r4, #0x3
+ ldr r0, [r0, #0x0]
+ add r1, r0, r4
+ mov r0, #0xa6
+ ldrsb r0, [r1, r0]
+ bl FUN_02059C00
+ ldr r1, _0204E540 ; =0x021C5A68
+ ldr r1, [r1, #0x0]
+ add r1, r1, r4
+ add r1, #0xa4
+ ldrh r1, [r1, #0x0]
+ add r0, r1, r0
+ pop {r4, pc}
+ .balign 4
+_0204E53C: .word 0x0000FFFF
+_0204E540: .word 0x021C5A68
+
+ thumb_func_start FUN_0204E544
+FUN_0204E544: ; 0x0204E544
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _0204E590 ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _0204E554
+ ldr r0, _0204E594 ; =0x0000FFFF
+ pop {r4, pc}
+_0204E554:
+ bl FUN_02031190
+ cmp r4, r0
+ bne _0204E56A
+ ldr r0, _0204E590 ; =0x021C5A68
+ ldr r1, [r0, #0x0]
+ lsl r0, r4, #0x3
+ add r0, r1, r0
+ add r0, #0x62
+ ldrh r0, [r0, #0x0]
+ pop {r4, pc}
+_0204E56A:
+ bl FUN_0204E2FC
+ cmp r0, #0x0
+ beq _0204E580
+ ldr r0, _0204E590 ; =0x021C5A68
+ ldr r1, [r0, #0x0]
+ add r0, r1, r4
+ add r0, #0x48
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _0204E584
+_0204E580:
+ ldr r0, _0204E594 ; =0x0000FFFF
+ pop {r4, pc}
+_0204E584:
+ lsl r0, r4, #0x3
+ add r0, r1, r0
+ add r0, #0x62
+ ldrh r0, [r0, #0x0]
+ pop {r4, pc}
+ nop
+_0204E590: .word 0x021C5A68
+_0204E594: .word 0x0000FFFF
+
+ thumb_func_start FUN_0204E598
+FUN_0204E598: ; 0x0204E598
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _0204E5E4 ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _0204E5A8
+ ldr r0, _0204E5E8 ; =0x0000FFFF
+ pop {r4, pc}
+_0204E5A8:
+ bl FUN_02031190
+ cmp r4, r0
+ bne _0204E5BE
+ ldr r0, _0204E5E4 ; =0x021C5A68
+ ldr r1, [r0, #0x0]
+ lsl r0, r4, #0x3
+ add r0, r1, r0
+ add r0, #0x64
+ ldrh r0, [r0, #0x0]
+ pop {r4, pc}
+_0204E5BE:
+ bl FUN_0204E2FC
+ cmp r0, #0x0
+ beq _0204E5D4
+ ldr r0, _0204E5E4 ; =0x021C5A68
+ ldr r1, [r0, #0x0]
+ add r0, r1, r4
+ add r0, #0x48
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _0204E5D8
+_0204E5D4:
+ ldr r0, _0204E5E8 ; =0x0000FFFF
+ pop {r4, pc}
+_0204E5D8:
+ lsl r0, r4, #0x3
+ add r0, r1, r0
+ add r0, #0x64
+ ldrh r0, [r0, #0x0]
+ pop {r4, pc}
+ nop
+_0204E5E4: .word 0x021C5A68
+_0204E5E8: .word 0x0000FFFF
+
+ thumb_func_start FUN_0204E5EC
+FUN_0204E5EC: ; 0x0204E5EC
+ ldr r1, _0204E604 ; =0x021C5A68
+ ldr r1, [r1, #0x0]
+ cmp r1, #0x0
+ beq _0204E5FE
+ lsl r0, r0, #0x3
+ add r0, r1, r0
+ add r0, #0x62
+ ldrh r0, [r0, #0x0]
+ bx lr
+_0204E5FE:
+ ldr r0, _0204E608 ; =0x0000FFFF
+ bx lr
+ nop
+_0204E604: .word 0x021C5A68
+_0204E608: .word 0x0000FFFF
+
+ thumb_func_start FUN_0204E60C
+FUN_0204E60C: ; 0x0204E60C
+ ldr r1, _0204E624 ; =0x021C5A68
+ ldr r1, [r1, #0x0]
+ cmp r1, #0x0
+ beq _0204E61E
+ lsl r0, r0, #0x3
+ add r0, r1, r0
+ add r0, #0x64
+ ldrh r0, [r0, #0x0]
+ bx lr
+_0204E61E:
+ ldr r0, _0204E628 ; =0x0000FFFF
+ bx lr
+ nop
+_0204E624: .word 0x021C5A68
+_0204E628: .word 0x0000FFFF
+
+ thumb_func_start FUN_0204E62C
+FUN_0204E62C: ; 0x0204E62C
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_0204E544
+ ldr r1, _0204E65C ; =0x0000FFFF
+ cmp r0, r1
+ bne _0204E63E
+ add r0, r1, #0x0
+ pop {r4, pc}
+_0204E63E:
+ ldr r0, _0204E660 ; =0x021C5A68
+ lsl r4, r4, #0x3
+ ldr r0, [r0, #0x0]
+ add r1, r0, r4
+ mov r0, #0x66
+ ldrsb r0, [r1, r0]
+ bl FUN_02059BF4
+ ldr r1, _0204E660 ; =0x021C5A68
+ ldr r1, [r1, #0x0]
+ add r1, r1, r4
+ add r1, #0x62
+ ldrh r1, [r1, #0x0]
+ add r0, r1, r0
+ pop {r4, pc}
+ .balign 4
+_0204E65C: .word 0x0000FFFF
+_0204E660: .word 0x021C5A68
+
+ thumb_func_start FUN_0204E664
+FUN_0204E664: ; 0x0204E664
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_0204E598
+ ldr r1, _0204E694 ; =0x0000FFFF
+ cmp r0, r1
+ bne _0204E676
+ add r0, r1, #0x0
+ pop {r4, pc}
+_0204E676:
+ ldr r0, _0204E698 ; =0x021C5A68
+ lsl r4, r4, #0x3
+ ldr r0, [r0, #0x0]
+ add r1, r0, r4
+ mov r0, #0x66
+ ldrsb r0, [r1, r0]
+ bl FUN_02059C00
+ ldr r1, _0204E698 ; =0x021C5A68
+ ldr r1, [r1, #0x0]
+ add r1, r1, r4
+ add r1, #0x64
+ ldrh r1, [r1, #0x0]
+ add r0, r1, r0
+ pop {r4, pc}
+ .balign 4
+_0204E694: .word 0x0000FFFF
+_0204E698: .word 0x021C5A68
+
+ thumb_func_start FUN_0204E69C
+FUN_0204E69C: ; 0x0204E69C
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_0204E2FC
+ cmp r0, #0x0
+ beq _0204E6B6
+ ldr r0, _0204E6C8 ; =0x021C5A68
+ ldr r1, [r0, #0x0]
+ add r0, r1, r4
+ add r0, #0x48
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _0204E6BC
+_0204E6B6:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4, pc}
+_0204E6BC:
+ lsl r0, r4, #0x3
+ add r1, r1, r0
+ mov r0, #0xa6
+ ldrsb r0, [r1, r0]
+ pop {r4, pc}
+ nop
+_0204E6C8: .word 0x021C5A68
+
+ thumb_func_start FUN_0204E6CC
+FUN_0204E6CC: ; 0x0204E6CC
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_0204E2FC
+ cmp r0, #0x0
+ beq _0204E6E6
+ ldr r0, _0204E6F8 ; =0x021C5A68
+ ldr r1, [r0, #0x0]
+ add r0, r1, r4
+ add r0, #0x48
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _0204E6EC
+_0204E6E6:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4, pc}
+_0204E6EC:
+ lsl r0, r4, #0x3
+ add r1, r1, r0
+ mov r0, #0x66
+ ldrsb r0, [r1, r0]
+ pop {r4, pc}
+ nop
+_0204E6F8: .word 0x021C5A68
+
+ thumb_func_start FUN_0204E6FC
+FUN_0204E6FC: ; 0x0204E6FC
+ push {r4, lr}
+ add r4, r1, #0x0
+ ldr r1, _0204E728 ; =0x021C5A68
+ lsl r0, r0, #0x3
+ ldr r1, [r1, #0x0]
+ add r1, r1, r0
+ mov r0, #0x66
+ ldrsb r0, [r1, r0]
+ bl FUN_0204F610
+ ldr r2, _0204E728 ; =0x021C5A68
+ lsl r1, r4, #0x3
+ ldr r3, [r2, #0x0]
+ add r1, r3, r1
+ add r1, #0x66
+ strb r0, [r1, #0x0]
+ ldr r0, [r2, #0x0]
+ mov r3, #0x1
+ add r1, r0, r4
+ ldr r0, _0204E72C ; =0x00000132
+ strb r3, [r1, r0]
+ pop {r4, pc}
+ .balign 4
+_0204E728: .word 0x021C5A68
+_0204E72C: .word 0x00000132
+
+ thumb_func_start FUN_0204E730
+FUN_0204E730: ; 0x0204E730
+ push {r4, lr}
+ add r4, r1, #0x0
+ ldr r1, _0204E754 ; =0x021C5A68
+ lsl r0, r0, #0x3
+ ldr r1, [r1, #0x0]
+ add r1, r1, r0
+ mov r0, #0xa6
+ ldrsb r0, [r1, r0]
+ bl FUN_0204F610
+ ldr r1, _0204E754 ; =0x021C5A68
+ ldr r2, [r1, #0x0]
+ lsl r1, r4, #0x3
+ add r1, r2, r1
+ add r1, #0xa6
+ strb r0, [r1, #0x0]
+ pop {r4, pc}
+ nop
+_0204E754: .word 0x021C5A68
+
+ thumb_func_start FUN_0204E758
+FUN_0204E758: ; 0x0204E758
+ push {r4, lr}
+ add r2, r0, #0x0
+ ldr r0, _0204E774 ; =0x021C5A68
+ add r4, r1, #0x0
+ ldr r0, [r0, #0x0]
+ add r1, r2, #0x0
+ ldr r0, [r0, #0x4]
+ bl FUN_02244D40
+ add r1, r4, #0x0
+ bl FUN_02244D98
+ pop {r4, pc}
+ nop
+_0204E774: .word 0x021C5A68
+
+ thumb_func_start FUN_0204E778
+FUN_0204E778: ; 0x0204E778
+ push {r3, lr}
+ add r1, r0, #0x0
+ ldr r0, _0204E790 ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x4]
+ bl FUN_02244D40
+ mov r1, #0x0
+ bl FUN_02244D98
+ pop {r3, pc}
+ nop
+_0204E790: .word 0x021C5A68
+
+ thumb_func_start FUN_0204E794
+FUN_0204E794: ; 0x0204E794
+ push {r3-r7, lr}
+ sub sp, #0x8
+ str r1, [sp, #0x0]
+ ldr r1, _0204E7C8 ; =0x021C5A68
+ add r6, r3, #0x0
+ ldr r4, [r1, #0x0]
+ lsl r7, r0, #0x3
+ add r4, #0x62
+ add r0, r6, #0x0
+ str r2, [sp, #0x4]
+ add r5, r4, r7
+ bl FUN_02059BF4
+ ldr r1, [sp, #0x0]
+ add r0, r1, r0
+ strh r0, [r4, r7]
+ add r0, r6, #0x0
+ bl FUN_02059C00
+ ldr r1, [sp, #0x4]
+ add r0, r1, r0
+ strh r0, [r5, #0x2]
+ strb r6, [r5, #0x4]
+ add sp, #0x8
+ pop {r3-r7, pc}
+ nop
+_0204E7C8: .word 0x021C5A68
+
+ thumb_func_start FUN_0204E7CC
+FUN_0204E7CC: ; 0x0204E7CC
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldr r0, _0204E848 ; =0x021C5A68
+ add r6, r1, #0x0
+ ldr r0, [r0, #0x0]
+ add r7, r2, #0x0
+ str r3, [sp, #0x0]
+ cmp r0, #0x0
+ beq _0204E844
+ add r2, r0, #0x0
+ add r2, #0xa2
+ lsl r1, r5, #0x3
+ add r4, r2, r1
+ ldr r1, _0204E84C ; =0x000002BD
+ ldrb r1, [r0, r1]
+ cmp r1, #0x0
+ bne _0204E7FA
+ ldrh r1, [r4, #0x0]
+ ldrh r3, [r4, #0x2]
+ ldr r0, [r0, #0x54]
+ mov r2, #0x0
+ bl FUN_021E5B30
+_0204E7FA:
+ strh r6, [r4, #0x0]
+ ldr r0, [sp, #0x0]
+ strh r7, [r4, #0x2]
+ strb r0, [r4, #0x4]
+ ldr r0, _0204E848 ; =0x021C5A68
+ ldr r1, [r0, #0x0]
+ lsl r0, r5, #0x2
+ add r0, r1, r0
+ ldr r0, [r0, #0x8]
+ cmp r0, #0x0
+ beq _0204E81A
+ ldr r3, [sp, #0x0]
+ add r1, r6, #0x0
+ add r2, r7, #0x0
+ bl FUN_02055514
+_0204E81A:
+ ldr r0, _0204E848 ; =0x021C5A68
+ ldr r1, [r0, #0x0]
+ ldr r0, _0204E84C ; =0x000002BD
+ ldrb r0, [r1, r0]
+ cmp r0, #0x0
+ bne _0204E832
+ ldr r0, [r1, #0x54]
+ ldrh r1, [r4, #0x0]
+ ldrh r3, [r4, #0x2]
+ mov r2, #0x0
+ bl FUN_021E5B30
+_0204E832:
+ ldr r0, _0204E848 ; =0x021C5A68
+ ldr r1, [r0, #0x0]
+ ldr r0, _0204E84C ; =0x000002BD
+ ldrb r0, [r1, r0]
+ cmp r0, #0x0
+ bne _0204E844
+ add r0, r5, #0x0
+ bl FUN_0204F0A8
+_0204E844:
+ pop {r3-r7, pc}
+ nop
+_0204E848: .word 0x021C5A68
+_0204E84C: .word 0x000002BD
+
+ thumb_func_start FUN_0204E850
+FUN_0204E850: ; 0x0204E850
+ push {r3-r4, lr}
+ sub sp, #0x4
+ mov r2, #0x2
+ add r1, sp, #0x0
+ add r4, r0, #0x0
+ strb r2, [r1, #0x0]
+ strb r4, [r1, #0x1]
+ ldr r1, _0204E8AC ; =0x021C5A68
+ ldr r1, [r1, #0x0]
+ add r1, r1, r4
+ add r1, #0xe2
+ ldrb r1, [r1, #0x0]
+ cmp r1, #0x0
+ beq _0204E88A
+ bl FUN_0204D830
+ cmp r0, #0x0
+ bne _0204E88A
+ add r0, r4, #0x0
+ bl FUN_0204EE9C
+ cmp r0, #0x0
+ add r0, sp, #0x0
+ beq _0204E886
+ mov r1, #0x3
+ strb r1, [r0, #0x0]
+ b _0204E88A
+_0204E886:
+ mov r1, #0x1
+ strb r1, [r0, #0x0]
+_0204E88A:
+ mov r0, #0x1d
+ add r1, sp, #0x0
+ mov r2, #0x2
+ bl FUN_02030BC4
+ cmp r0, #0x0
+ beq _0204E8A8
+ add r0, sp, #0x0
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x2
+ beq _0204E8A8
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_0204EAD8
+_0204E8A8:
+ add sp, #0x4
+ pop {r3-r4, pc}
+ .balign 4
+_0204E8AC: .word 0x021C5A68
+
+ thumb_func_start FUN_0204E8B0
+FUN_0204E8B0: ; 0x0204E8B0
+ push {r3-r6}
+ ldr r2, _0204E8F8 ; =0x021C5A68
+ ldr r3, [r2, #0x0]
+ cmp r3, #0x0
+ bne _0204E8C0
+ mov r0, #0xff
+ pop {r3-r6}
+ bx lr
+_0204E8C0:
+ mov r2, #0x0
+ add r4, r3, #0x0
+_0204E8C4:
+ add r5, r3, #0x0
+ add r5, #0x48
+ ldrb r5, [r5, #0x0]
+ cmp r5, #0x0
+ beq _0204E8E8
+ add r5, r4, #0x0
+ add r5, #0x64
+ ldrh r6, [r5, #0x0]
+ add r5, r4, #0x0
+ add r5, #0x62
+ ldrh r5, [r5, #0x0]
+ cmp r0, r5
+ bne _0204E8E8
+ cmp r1, r6
+ bne _0204E8E8
+ add r0, r2, #0x0
+ pop {r3-r6}
+ bx lr
+_0204E8E8:
+ add r2, r2, #0x1
+ add r3, r3, #0x1
+ add r4, #0x8
+ cmp r2, #0x8
+ blt _0204E8C4
+ mov r0, #0xff
+ pop {r3-r6}
+ bx lr
+ .balign 4
+_0204E8F8: .word 0x021C5A68
+
+ thumb_func_start FUN_0204E8FC
+FUN_0204E8FC: ; 0x0204E8FC
+ push {r4, lr}
+ add r4, r2, #0x0
+ bl FUN_02030FE0
+ cmp r0, #0x0
+ beq _0204E962
+ ldrb r0, [r4, #0x0]
+ cmp r0, #0x1
+ bne _0204E936
+ bl FUN_02031190
+ ldrb r1, [r4, #0x1]
+ cmp r1, r0
+ bne _0204E936
+ ldr r1, _0204E964 ; =0x021C5A68
+ mov r0, #0xae
+ ldr r3, [r1, #0x0]
+ lsl r0, r0, #0x2
+ ldrb r2, [r3, r0]
+ cmp r2, #0x0
+ bne _0204E962
+ mov r2, #0x1
+ strb r2, [r3, r0]
+ ldr r1, [r1, #0x0]
+ ldr r0, _0204E968 ; =FUN_0204D308
+ ldr r1, [r1, #0x54]
+ bl FUN_022494C8
+ pop {r4, pc}
+_0204E936:
+ ldrb r0, [r4, #0x0]
+ cmp r0, #0x3
+ bne _0204E962
+ bl FUN_02031190
+ ldrb r1, [r4, #0x1]
+ cmp r1, r0
+ bne _0204E962
+ ldr r1, _0204E964 ; =0x021C5A68
+ mov r0, #0xae
+ ldr r3, [r1, #0x0]
+ lsl r0, r0, #0x2
+ ldrb r2, [r3, r0]
+ cmp r2, #0x0
+ bne _0204E962
+ mov r2, #0x1
+ strb r2, [r3, r0]
+ ldr r1, [r1, #0x0]
+ ldr r0, _0204E968 ; =FUN_0204D308
+ ldr r1, [r1, #0x54]
+ bl FUN_0224A7C8
+_0204E962:
+ pop {r4, pc}
+ .balign 4
+_0204E964: .word 0x021C5A68
+_0204E968: .word FUN_0204D308
+
+ thumb_func_start FUN_0204E96C
+FUN_0204E96C: ; 0x0204E96C
+ push {r4-r6, lr}
+ ldr r0, _0204EACC ; =0x021C5A68
+ add r5, r2, #0x0
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x54]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ add r6, r0, #0x0
+ ldrb r0, [r5, #0x1]
+ cmp r0, #0x8
+ blo _0204E988
+ bl ErrorHandling
+_0204E988:
+ ldrb r0, [r5, #0x0]
+ cmp r0, #0x4
+ bne _0204E9AA
+ bl FUN_02031190
+ ldrb r1, [r5, #0x1]
+ cmp r1, r0
+ bne _0204E9AA
+ bl FUN_0204F7E4
+ bl FUN_0223D638
+ ldr r3, _0204EAD0 ; =FUN_0204E2AC
+ mov r1, #0x48
+ mov r2, #0x1
+ bl FUN_0224DCB8
+_0204E9AA:
+ ldrb r0, [r5, #0x0]
+ cmp r0, #0x1
+ bne _0204E9B8
+ ldrb r0, [r5, #0x1]
+ ldrb r1, [r5, #0x2]
+ bl FUN_0204E730
+_0204E9B8:
+ ldrb r0, [r5, #0x0]
+ cmp r0, #0x1
+ bne _0204EA7C
+ bl FUN_02031190
+ ldrb r1, [r5, #0x1]
+ cmp r1, r0
+ bne _0204EA7C
+ ldr r2, _0204EACC ; =0x021C5A68
+ ldrb r0, [r5, #0x2]
+ ldr r2, [r2, #0x0]
+ ldr r1, _0204EAD4 ; =FUN_0204D308
+ ldr r2, [r2, #0x54]
+ bl FUN_02247A34
+ ldr r0, _0204EACC ; =0x021C5A68
+ ldrb r4, [r5, #0x1]
+ ldr r2, [r0, #0x0]
+ mov r3, #0xf
+ add r1, r2, #0x0
+ add r1, #0x58
+ ldrb r1, [r1, #0x0]
+ add r2, #0x58
+ bic r1, r3
+ mov r3, #0xf
+ and r3, r4
+ orr r1, r3
+ strb r1, [r2, #0x0]
+ ldr r2, [r0, #0x0]
+ mov r3, #0xf0
+ add r1, r2, #0x0
+ add r1, #0x58
+ ldrb r1, [r1, #0x0]
+ add r2, #0x58
+ bic r1, r3
+ ldrb r3, [r5, #0x2]
+ lsl r3, r3, #0x1c
+ lsr r3, r3, #0x18
+ orr r1, r3
+ strb r1, [r2, #0x0]
+ ldr r3, [r0, #0x0]
+ add r1, r3, #0x0
+ add r1, #0x59
+ ldrb r2, [r1, #0x0]
+ mov r1, #0x1
+ add r3, #0x59
+ bic r2, r1
+ strb r2, [r3, #0x0]
+ ldr r3, [r0, #0x0]
+ add r1, r3, #0x0
+ add r1, #0x59
+ ldrb r2, [r1, #0x0]
+ mov r1, #0x2
+ add r3, #0x59
+ bic r2, r1
+ strb r2, [r3, #0x0]
+ ldrb r4, [r5, #0x2]
+ ldr r1, [r0, #0x0]
+ add r0, r1, r4
+ add r0, #0x5a
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _0204EA7C
+ ldr r0, [r1, #0x54]
+ bl FUN_020377AC
+ bl FUN_02026CB4
+ add r1, r4, #0x0
+ bl FUN_02026908
+ add r0, r6, #0x0
+ bl FUN_0205F688
+ add r1, r0, #0x0
+ add r1, r1, #0x1
+ lsl r1, r1, #0x10
+ add r0, r6, #0x0
+ lsr r1, r1, #0x10
+ bl FUN_0205F698
+ add r0, r6, #0x0
+ bl FUN_0205F6A8
+ add r1, r0, #0x0
+ add r1, r1, #0x1
+ lsl r1, r1, #0x10
+ add r0, r6, #0x0
+ lsr r1, r1, #0x10
+ bl FUN_0205F6B8
+ ldr r0, _0204EACC ; =0x021C5A68
+ ldrb r1, [r5, #0x2]
+ ldr r2, [r0, #0x0]
+ add r2, #0x5a
+ ldrb r0, [r2, r1]
+ add r0, r0, #0x1
+ strb r0, [r2, r1]
+_0204EA7C:
+ ldrb r0, [r5, #0x0]
+ cmp r0, #0x1
+ bne _0204EA9A
+ ldrb r4, [r5, #0x2]
+ bl FUN_02031190
+ cmp r4, r0
+ bne _0204EA9A
+ ldr r2, _0204EACC ; =0x021C5A68
+ ldrb r1, [r5, #0x1]
+ ldr r2, [r2, #0x0]
+ add r0, r4, #0x0
+ ldr r2, [r2, #0x54]
+ bl FUN_02248DF8
+_0204EA9A:
+ ldrb r0, [r5, #0x0]
+ cmp r0, #0x2
+ bne _0204EABC
+ bl FUN_02031190
+ ldrb r1, [r5, #0x1]
+ cmp r1, r0
+ bne _0204EABC
+ bl FUN_0204F7E4
+ bl FUN_0223D638
+ ldr r3, _0204EAD0 ; =FUN_0204E2AC
+ mov r1, #0x2
+ mov r2, #0x1
+ bl FUN_0224DCB8
+_0204EABC:
+ ldrb r0, [r5, #0x0]
+ cmp r0, #0x1
+ bne _0204EACA
+ ldrb r0, [r5, #0x1]
+ ldrb r1, [r5, #0x2]
+ bl FUN_0223E4A8
+_0204EACA:
+ pop {r4-r6, pc}
+ .balign 4
+_0204EACC: .word 0x021C5A68
+_0204EAD0: .word FUN_0204E2AC
+_0204EAD4: .word FUN_0204D308
+
+ thumb_func_start FUN_0204EAD8
+FUN_0204EAD8: ; 0x0204EAD8
+ push {r3-r4}
+ ldr r3, _0204EB0C ; =0x021C5A68
+ ldr r4, [r3, #0x0]
+ add r4, #0xe2
+ ldrb r2, [r4, r0]
+ cmp r1, r2
+ beq _0204EB08
+ strb r1, [r4, r0]
+ ldr r2, [r3, #0x0]
+ lsl r1, r0, #0x3
+ add r2, r2, r1
+ mov r4, #0x0
+ add r2, #0x69
+ strb r4, [r2, #0x0]
+ ldr r2, [r3, #0x0]
+ mov r4, #0x1
+ add r2, r2, r0
+ ldr r0, _0204EB10 ; =0x00000132
+ strb r4, [r2, r0]
+ ldr r0, [r3, #0x0]
+ mov r2, #0x2
+ add r0, r0, r1
+ add r0, #0x67
+ strb r2, [r0, #0x0]
+_0204EB08:
+ pop {r3-r4}
+ bx lr
+ .balign 4
+_0204EB0C: .word 0x021C5A68
+_0204EB10: .word 0x00000132
+
+ thumb_func_start FUN_0204EB14
+FUN_0204EB14: ; 0x0204EB14
+ ldr r1, _0204EB3C ; =0x021C5A68
+ ldr r2, [r1, #0x0]
+ ldr r1, _0204EB40 ; =0x000002C2
+ ldrb r1, [r2, r1]
+ cmp r1, #0x0
+ beq _0204EB24
+ mov r0, #0x0
+ bx lr
+_0204EB24:
+ add r1, r2, r0
+ add r1, #0xea
+ ldrb r1, [r1, #0x0]
+ cmp r1, #0x0
+ beq _0204EB36
+ add r0, r2, r0
+ add r0, #0xe2
+ ldrb r0, [r0, #0x0]
+ bx lr
+_0204EB36:
+ mov r0, #0x0
+ bx lr
+ nop
+_0204EB3C: .word 0x021C5A68
+_0204EB40: .word 0x000002C2
+
+ thumb_func_start FUN_0204EB44
+FUN_0204EB44: ; 0x0204EB44
+ push {r3-r7, lr}
+ sub sp, #0x30
+ ldr r1, _0204EBF8 ; =0x020F5800
+ add r0, sp, #0x8
+ ldrh r2, [r1, #0x0]
+ ldr r3, _0204EBFC ; =0x020F5814
+ strh r2, [r0, #0x0]
+ ldrh r2, [r1, #0x2]
+ strh r2, [r0, #0x2]
+ ldrh r2, [r1, #0x4]
+ ldrh r1, [r1, #0x6]
+ strh r2, [r0, #0x4]
+ strh r1, [r0, #0x6]
+ add r2, sp, #0x20
+ mov r1, #0x8
+_0204EB62:
+ ldrh r0, [r3, #0x0]
+ add r3, r3, #0x2
+ strh r0, [r2, #0x0]
+ add r2, r2, #0x2
+ sub r1, r1, #0x1
+ bne _0204EB62
+ bl FUN_02033534
+ bl FUN_02031248
+ add r6, r0, #0x0
+ mov r0, #0x0
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x0]
+ cmp r6, #0x2
+ bne _0204EB86
+ add r5, sp, #0x8
+ b _0204EB88
+_0204EB86:
+ add r5, sp, #0x20
+_0204EB88:
+ mov r7, #0x0
+ cmp r6, #0x0
+ ble _0204EBD4
+_0204EB8E:
+ mov r4, #0x0
+ cmp r6, #0x0
+ ble _0204EBCC
+_0204EB94:
+ add r0, r4, #0x0
+ bl FUN_0204E3EC
+ ldrh r1, [r5, #0x0]
+ cmp r1, r0
+ bne _0204EBC6
+ add r0, r4, #0x0
+ bl FUN_0204E440
+ ldrh r1, [r5, #0x2]
+ cmp r1, r0
+ bne _0204EBC6
+ ldr r0, [sp, #0x4]
+ lsl r1, r4, #0x2
+ add r0, r0, #0x1
+ str r0, [sp, #0x4]
+ add r0, sp, #0x10
+ str r7, [r0, r1]
+ bl FUN_02031190
+ cmp r4, r0
+ bne _0204EBCC
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ b _0204EBCC
+_0204EBC6:
+ add r4, r4, #0x1
+ cmp r4, r6
+ blt _0204EB94
+_0204EBCC:
+ add r7, r7, #0x1
+ add r5, r5, #0x4
+ cmp r7, r6
+ blt _0204EB8E
+_0204EBD4:
+ ldr r0, [sp, #0x4]
+ cmp r0, r6
+ bne _0204EBF2
+ mov r5, #0x0
+ cmp r6, #0x0
+ ble _0204EBF2
+ add r4, sp, #0x10
+_0204EBE2:
+ ldr r0, [r4, #0x0]
+ add r1, r5, #0x0
+ bl FUN_020313B4
+ add r5, r5, #0x1
+ add r4, r4, #0x4
+ cmp r5, r6
+ blt _0204EBE2
+_0204EBF2:
+ ldr r0, [sp, #0x0]
+ add sp, #0x30
+ pop {r3-r7, pc}
+ .balign 4
+_0204EBF8: .word 0x020F5800
+_0204EBFC: .word 0x020F5814
+
+ thumb_func_start FUN_0204EC00
+FUN_0204EC00: ; 0x0204EC00
+ ldrb r2, [r2, #0x0]
+ cmp r2, #0x3
+ bne _0204EC14
+ ldr r1, _0204EC24 ; =0x021C5A68
+ mov r2, #0x0
+ ldr r1, [r1, #0x0]
+ add r0, r1, r0
+ add r0, #0xf2
+ strb r2, [r0, #0x0]
+ bx lr
+_0204EC14:
+ ldr r1, _0204EC24 ; =0x021C5A68
+ ldr r1, [r1, #0x0]
+ add r1, r1, r0
+ mov r0, #0xad
+ lsl r0, r0, #0x2
+ strb r2, [r1, r0]
+ bx lr
+ nop
+_0204EC24: .word 0x021C5A68
+
+ thumb_func_start FUN_0204EC28
+FUN_0204EC28: ; 0x0204EC28
+ push {r3-r7, lr}
+ sub sp, #0x8
+ bl FUN_02033534
+ bl FUN_02031248
+ add r7, r0, #0x0
+ cmp r7, #0x2
+ bne _0204EC40
+ ldr r0, _0204ECB4 ; =0x02105E5C
+ str r0, [sp, #0x0]
+ b _0204EC44
+_0204EC40:
+ ldr r0, _0204ECB8 ; =0x02105E64
+ str r0, [sp, #0x0]
+_0204EC44:
+ mov r1, #0x0
+ add r0, sp, #0x4
+ strb r1, [r0, #0x0]
+ cmp r7, #0x0
+ ble _0204ECAE
+_0204EC4E:
+ ldr r0, _0204ECBC ; =0x021C5A68
+ add r6, sp, #0x4
+ ldr r1, [r0, #0x0]
+ ldrb r0, [r6, #0x0]
+ add r1, r1, r0
+ mov r0, #0xad
+ lsl r0, r0, #0x2
+ ldrb r0, [r1, r0]
+ cmp r0, #0x0
+ beq _0204ECA0
+ mov r4, #0x0
+ cmp r7, #0x0
+ ble _0204ECA0
+ ldr r5, [sp, #0x0]
+_0204EC6A:
+ ldrb r0, [r6, #0x0]
+ bl FUN_0204E544
+ ldrh r1, [r5, #0x0]
+ cmp r1, r0
+ bne _0204EC98
+ ldrb r0, [r6, #0x0]
+ bl FUN_0204E598
+ ldrh r1, [r5, #0x2]
+ cmp r1, r0
+ bne _0204EC98
+ ldr r0, _0204ECBC ; =0x021C5A68
+ ldr r1, [r0, #0x0]
+ ldrb r0, [r6, #0x0]
+ add r1, r1, r0
+ add r1, #0xf2
+ mov r0, #0x1
+ strb r0, [r1, #0x0]
+ mov r0, #0x5f
+ add r1, sp, #0x4
+ bl FUN_02030C4C
+_0204EC98:
+ add r4, r4, #0x1
+ add r5, r5, #0x4
+ cmp r4, r7
+ blt _0204EC6A
+_0204ECA0:
+ add r0, sp, #0x4
+ ldrb r1, [r0, #0x0]
+ add r1, r1, #0x1
+ strb r1, [r0, #0x0]
+ ldrb r0, [r0, #0x0]
+ cmp r0, r7
+ blt _0204EC4E
+_0204ECAE:
+ add sp, #0x8
+ pop {r3-r7, pc}
+ nop
+_0204ECB4: .word 0x02105E5C
+_0204ECB8: .word 0x02105E64
+_0204ECBC: .word 0x021C5A68
+
+ thumb_func_start FUN_0204ECC0
+FUN_0204ECC0: ; 0x0204ECC0
+ push {r4, lr}
+ bl FUN_02031190
+ add r4, r0, #0x0
+ bl FUN_0204E3EC
+ cmp r0, #0x8
+ ble _0204ECE0
+ mov r0, #0x2
+ bl FUN_0204F6DC
+ mov r0, #0x2
+ mov r1, #0x24
+ bl FUN_0205AFDC
+ b _0204ECEE
+_0204ECE0:
+ mov r0, #0x3
+ bl FUN_0204F6DC
+ mov r0, #0x3
+ mov r1, #0x24
+ bl FUN_0205AFDC
+_0204ECEE:
+ add r1, r0, #0x0
+ ldr r0, _0204ED04 ; =0x021C5A68
+ ldr r2, [r0, #0x0]
+ lsl r0, r4, #0x2
+ add r0, r2, r0
+ ldr r0, [r0, #0x8]
+ bl FUN_02057260
+ bl FUN_0204FB14
+ pop {r4, pc}
+ .balign 4
+_0204ED04: .word 0x021C5A68
+
+ thumb_func_start FUN_0204ED08
+FUN_0204ED08: ; 0x0204ED08
+ push {r3-r7, lr}
+ sub sp, #0x8
+ bl FUN_02033534
+ bl FUN_02031248
+ mov r3, #0x0
+ str r0, [sp, #0x0]
+ cmp r0, #0x0
+ ble _0204ED3C
+ ldr r0, _0204ED94 ; =0x021C5A68
+ mov r1, #0x66
+ add r2, r1, #0x0
+ ldr r4, [r0, #0x0]
+ sub r2, #0x67
+_0204ED26:
+ ldrsb r0, [r4, r1]
+ cmp r0, r2
+ bne _0204ED32
+ add sp, #0x8
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0204ED32:
+ ldr r0, [sp, #0x0]
+ add r3, r3, #0x1
+ add r4, #0x8
+ cmp r3, r0
+ blt _0204ED26
+_0204ED3C:
+ ldr r0, [sp, #0x0]
+ mov r5, #0x0
+ cmp r0, #0x0
+ ble _0204ED8E
+ add r4, r5, #0x0
+_0204ED46:
+ ldr r0, _0204ED94 ; =0x021C5A68
+ ldr r7, [r0, #0x0]
+ mov r0, #0x4
+ add r7, #0x62
+ add r6, r7, r4
+ ldrsb r0, [r6, r0]
+ bl FUN_0204F610
+ str r0, [sp, #0x4]
+ bl FUN_02059BF4
+ ldrh r1, [r7, r4]
+ add r0, r1, r0
+ strh r0, [r7, r4]
+ ldr r0, [sp, #0x4]
+ bl FUN_02059C00
+ ldrh r1, [r6, #0x2]
+ add r0, r1, r0
+ strh r0, [r6, #0x2]
+ mov r0, #0x2
+ strb r0, [r6, #0x5]
+ ldr r0, _0204ED94 ; =0x021C5A68
+ mov r1, #0x1
+ ldr r0, [r0, #0x0]
+ add r2, r0, r5
+ ldr r0, _0204ED98 ; =0x00000132
+ strb r1, [r2, r0]
+ add r0, r5, #0x0
+ bl FUN_0204EAD8
+ ldr r0, [sp, #0x0]
+ add r5, r5, #0x1
+ add r4, #0x8
+ cmp r5, r0
+ blt _0204ED46
+_0204ED8E:
+ mov r0, #0x1
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+_0204ED94: .word 0x021C5A68
+_0204ED98: .word 0x00000132
+
+ thumb_func_start FUN_0204ED9C
+FUN_0204ED9C: ; 0x0204ED9C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _0204EDE8 ; =0x021C5A68
+ ldr r1, [r0, #0x0]
+ lsl r0, r4, #0x2
+ add r1, r1, r0
+ mov r0, #0x29
+ lsl r0, r0, #0x4
+ ldr r0, [r1, r0]
+ cmp r0, #0x0
+ beq _0204EDE2
+ bl FUN_02016A18
+ ldr r2, _0204EDE8 ; =0x021C5A68
+ lsl r1, r4, #0x2
+ ldr r3, [r2, #0x0]
+ mov r0, #0x0
+ add r3, r3, r1
+ mov r1, #0x29
+ lsl r1, r1, #0x4
+ str r0, [r3, r1]
+ ldr r1, [r2, #0x0]
+ mov r3, #0xff
+ add r1, r1, r4
+ add r1, #0xfa
+ strb r0, [r1, #0x0]
+ mov r0, #0x22
+ ldr r1, [r2, #0x0]
+ mul r0, r4
+ add r1, r1, r0
+ add r0, r3, #0x0
+ add r0, #0x6b
+ strh r3, [r1, r0]
+ mov r0, #0x1
+ pop {r4, pc}
+_0204EDE2:
+ mov r0, #0x0
+ pop {r4, pc}
+ nop
+_0204EDE8: .word 0x021C5A68
+
+ thumb_func_start FUN_0204EDEC
+FUN_0204EDEC: ; 0x0204EDEC
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ bl FUN_02031190
+ cmp r7, r0
+ bne _0204EE90
+ ldr r0, _0204EE98 ; =0x021C5A68
+ ldr r2, [r0, #0x0]
+ lsl r0, r7, #0x2
+ add r1, r2, r0
+ mov r0, #0x29
+ lsl r0, r0, #0x4
+ ldr r0, [r1, r0]
+ cmp r0, #0x0
+ beq _0204EE96
+ ldr r0, [r2, #0x54]
+ ldr r0, [r0, #0xc]
+ bl FUN_02029FC8
+ mov r1, #0x1c
+ bl FUN_0202A170
+ ldr r0, _0204EE98 ; =0x021C5A68
+ ldr r1, [r0, #0x0]
+ mov r0, #0xa3
+ lsl r0, r0, #0x2
+ ldr r0, [r1, r0]
+ cmp r0, #0x0
+ beq _0204EE2A
+ bl FUN_02016A18
+_0204EE2A:
+ mov r0, #0x9e
+ lsl r0, r0, #0x2
+ ldr r2, _0204EE98 ; =0x021C5A68
+ mov r5, #0x4
+ mov r6, #0x10
+ add r1, r0, #0x4
+_0204EE36:
+ ldr r3, [r2, #0x0]
+ sub r5, r5, #0x1
+ add r4, r3, r6
+ ldr r3, [r4, r0]
+ sub r6, r6, #0x4
+ str r3, [r4, r1]
+ cmp r5, #0x1
+ bge _0204EE36
+ ldr r1, _0204EE98 ; =0x021C5A68
+ mov r0, #0x29
+ ldr r3, [r1, #0x0]
+ lsl r4, r7, #0x2
+ add r2, r3, r4
+ lsl r0, r0, #0x4
+ ldr r2, [r2, r0]
+ sub r0, #0x14
+ str r2, [r3, r0]
+ ldr r5, [r1, #0x0]
+ ldr r0, [r5, #0x54]
+ bl FUN_020377AC
+ bl FUN_02026CC4
+ mov r1, #0x29
+ add r2, r5, r4
+ lsl r1, r1, #0x4
+ ldr r1, [r2, r1]
+ bl FUN_02025C40
+ ldr r1, _0204EE98 ; =0x021C5A68
+ mov r3, #0x0
+ ldr r0, [r1, #0x0]
+ add r2, r0, r4
+ mov r0, #0x29
+ lsl r0, r0, #0x4
+ str r3, [r2, r0]
+ mov r0, #0x22
+ ldr r1, [r1, #0x0]
+ mul r0, r7
+ mov r2, #0xff
+ add r1, r1, r0
+ add r0, r2, #0x0
+ add r0, #0x6b
+ strh r2, [r1, r0]
+ pop {r3-r7, pc}
+_0204EE90:
+ add r0, r7, #0x0
+ bl FUN_0204ED9C
+_0204EE96:
+ pop {r3-r7, pc}
+ .balign 4
+_0204EE98: .word 0x021C5A68
+
+ thumb_func_start FUN_0204EE9C
+FUN_0204EE9C: ; 0x0204EE9C
+ ldr r1, _0204EEB8 ; =0x021C5A68
+ lsl r0, r0, #0x2
+ ldr r1, [r1, #0x0]
+ add r1, r1, r0
+ mov r0, #0x29
+ lsl r0, r0, #0x4
+ ldr r0, [r1, r0]
+ cmp r0, #0x0
+ beq _0204EEB2
+ mov r0, #0x1
+ bx lr
+_0204EEB2:
+ mov r0, #0x0
+ bx lr
+ nop
+_0204EEB8: .word 0x021C5A68
+
+ thumb_func_start FUN_0204EEBC
+FUN_0204EEBC: ; 0x0204EEBC
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldr r0, _0204EF48 ; =0x021C5A68
+ add r6, r1, #0x0
+ ldr r1, [r0, #0x0]
+ lsl r0, r5, #0x2
+ add r1, r1, r0
+ mov r0, #0x29
+ lsl r0, r0, #0x4
+ ldr r0, [r1, r0]
+ cmp r0, #0x0
+ bne _0204EF44
+ add r0, r6, #0x0
+ bl FUN_0202DFA4
+ add r7, r0, #0x0
+ beq _0204EF44
+ mov r0, #0xf
+ lsl r4, r5, #0x2
+ bl FUN_02023928
+ mov r3, #0x29
+ ldr r1, _0204EF48 ; =0x021C5A68
+ add r2, r0, #0x0
+ ldr r0, [r1, #0x0]
+ lsl r3, r3, #0x4
+ add r0, r0, r4
+ str r2, [r0, r3]
+ ldr r1, [r1, #0x0]
+ add r0, r7, #0x0
+ add r1, r1, r4
+ ldr r1, [r1, r3]
+ bl FUN_0202393C
+ ldr r1, _0204EF48 ; =0x021C5A68
+ mov r2, #0x1
+ ldr r0, [r1, #0x0]
+ ldr r3, _0204EF4C ; =0x0000016A
+ add r0, r0, r5
+ add r0, #0xfa
+ strb r2, [r0, #0x0]
+ mov r0, #0x22
+ add r2, r5, #0x0
+ mul r2, r0
+ ldr r0, [r1, #0x0]
+ add r0, r0, r2
+ strh r5, [r0, r3]
+ ldr r1, [r1, #0x0]
+ sub r3, #0x20
+ add r1, r1, r3
+ add r0, r7, #0x0
+ add r1, r1, r2
+ bl FUN_0202393C
+ bl FUN_02031190
+ cmp r6, r0
+ bne _0204EF40
+ ldr r0, _0204EF48 ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x54]
+ ldr r0, [r0, #0xc]
+ bl FUN_02026CB4
+ bl FUN_02026BC8
+_0204EF40:
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0204EF44:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+_0204EF48: .word 0x021C5A68
+_0204EF4C: .word 0x0000016A
+
+ thumb_func_start FUN_0204EF50
+FUN_0204EF50: ; 0x0204EF50
+ push {r3-r7, lr}
+ ldr r4, _0204EFC4 ; =0x021C5A68
+ mov r7, #0x29
+ ldr r6, [r4, #0x0]
+ add r3, r0, #0x0
+ lsl r7, r7, #0x4
+ add r5, r6, r7
+ lsl r0, r3, #0x2
+ add r2, r1, #0x0
+ ldr r1, [r5, r0]
+ cmp r1, #0x0
+ bne _0204EFBE
+ lsl r1, r2, #0x2
+ add r6, r6, r1
+ ldr r6, [r6, r7]
+ cmp r6, #0x0
+ beq _0204EFBE
+ str r6, [r5, r0]
+ ldr r5, [r4, #0x0]
+ mov r6, #0x0
+ add r1, r5, r1
+ str r6, [r1, r7]
+ ldr r1, [r4, #0x0]
+ mov r5, #0x1
+ add r1, r1, r3
+ add r1, #0xfa
+ strb r5, [r1, #0x0]
+ ldr r1, [r4, #0x0]
+ add r1, r1, r2
+ add r1, #0xfa
+ strb r6, [r1, #0x0]
+ mov r1, #0x22
+ ldr r5, [r4, #0x0]
+ mul r1, r3
+ add r6, r5, r1
+ ldr r5, _0204EFC8 ; =0x0000016A
+ strh r3, [r6, r5]
+ mov r6, #0x22
+ mov r5, #0xff
+ mul r6, r2
+ ldr r3, [r4, #0x0]
+ add r2, r5, #0x0
+ add r3, r3, r6
+ add r2, #0x6b
+ strh r5, [r3, r2]
+ ldr r2, [r4, #0x0]
+ add r5, #0x4b
+ add r0, r2, r0
+ add r2, r2, r5
+ ldr r0, [r0, r7]
+ add r1, r2, r1
+ bl FUN_0202393C
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0204EFBE:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ nop
+_0204EFC4: .word 0x021C5A68
+_0204EFC8: .word 0x0000016A
+
+ thumb_func_start FUN_0204EFCC
+FUN_0204EFCC: ; 0x0204EFCC
+ push {r4, lr}
+ ldr r1, _0204F06C ; =0x021C5A68
+ add r4, r0, #0x0
+ ldr r3, [r1, #0x0]
+ ldr r1, _0204F070 ; =0x000002BD
+ ldrb r1, [r3, r1]
+ cmp r1, #0x0
+ bne _0204F068
+ lsl r1, r4, #0x2
+ add r2, r3, r1
+ ldr r1, [r2, #0x8]
+ cmp r1, #0x0
+ beq _0204F068
+ add r3, r3, r4
+ add r3, #0xfa
+ ldrb r3, [r3, #0x0]
+ cmp r3, #0x3
+ bhi _0204F068
+ add r3, r3, r3
+ add r3, pc
+ ldrh r3, [r3, #0x6]
+ lsl r3, r3, #0x10
+ asr r3, r3, #0x10
+ add pc, r3
+_0204EFFC: ; jump table (using 16-bit offset)
+ .short _0204F064 - _0204EFFC - 2; case 0
+ .short _0204F048 - _0204EFFC - 2; case 1
+ .short _0204F02C - _0204EFFC - 2; case 2
+ .short _0204F004 - _0204EFFC - 2; case 3
+_0204F004:
+ ldr r0, [r2, #0x28]
+ cmp r0, #0x0
+ bne _0204F01E
+ add r0, r1, #0x0
+ bl FUN_020553A0
+ bl FUN_021E5970
+ ldr r1, _0204F06C ; =0x021C5A68
+ ldr r2, [r1, #0x0]
+ lsl r1, r4, #0x2
+ add r1, r2, r1
+ str r0, [r1, #0x28]
+_0204F01E:
+ ldr r0, _0204F06C ; =0x021C5A68
+ mov r1, #0x0
+ ldr r0, [r0, #0x0]
+ add r0, r0, r4
+ add r0, #0xfa
+ strb r1, [r0, #0x0]
+ pop {r4, pc}
+_0204F02C:
+ ldr r0, [r2, #0x28]
+ cmp r0, #0x0
+ bne _0204F068
+ add r0, r1, #0x0
+ bl FUN_020553A0
+ bl FUN_021E57D4
+ ldr r1, _0204F06C ; =0x021C5A68
+ ldr r2, [r1, #0x0]
+ lsl r1, r4, #0x2
+ add r1, r2, r1
+ str r0, [r1, #0x28]
+ pop {r4, pc}
+_0204F048:
+ ldr r0, [r2, #0x28]
+ cmp r0, #0x0
+ bne _0204F068
+ add r0, r1, #0x0
+ bl FUN_020553A0
+ bl FUN_021E5614
+ ldr r1, _0204F06C ; =0x021C5A68
+ ldr r2, [r1, #0x0]
+ lsl r1, r4, #0x2
+ add r1, r2, r1
+ str r0, [r1, #0x28]
+ pop {r4, pc}
+_0204F064:
+ bl FUN_0204CD78
+_0204F068:
+ pop {r4, pc}
+ nop
+_0204F06C: .word 0x021C5A68
+_0204F070: .word 0x000002BD
+
+ thumb_func_start FUN_0204F074
+FUN_0204F074: ; 0x0204F074
+ ldr r1, _0204F088 ; =0x021C5A68
+ ldr r2, [r1, #0x0]
+ add r2, #0xfa
+ ldrb r1, [r2, r0]
+ cmp r1, #0x1
+ beq _0204F084
+ mov r1, #0x2
+ strb r1, [r2, r0]
+_0204F084:
+ bx lr
+ nop
+_0204F088: .word 0x021C5A68
+
+ thumb_func_start FUN_0204F08C
+FUN_0204F08C: ; 0x0204F08C
+ ldr r1, _0204F0A0 ; =0x021C5A68
+ ldr r2, [r1, #0x0]
+ add r2, #0xfa
+ ldrb r1, [r2, r0]
+ cmp r1, #0x1
+ beq _0204F09C
+ mov r1, #0x3
+ strb r1, [r2, r0]
+_0204F09C:
+ ldr r3, _0204F0A4 ; =FUN_0204CD78
+ bx r3
+ .balign 4
+_0204F0A0: .word 0x021C5A68
+_0204F0A4: .word FUN_0204CD78
+
+ thumb_func_start FUN_0204F0A8
+FUN_0204F0A8: ; 0x0204F0A8
+ ldr r1, _0204F0BC ; =0x021C5A68
+ ldr r2, [r1, #0x0]
+ add r2, #0xfa
+ ldrb r1, [r2, r0]
+ cmp r1, #0x1
+ beq _0204F0B8
+ mov r1, #0x0
+ strb r1, [r2, r0]
+_0204F0B8:
+ ldr r3, _0204F0C0 ; =FUN_0204CD78
+ bx r3
+ .balign 4
+_0204F0BC: .word 0x021C5A68
+_0204F0C0: .word FUN_0204CD78
+
+ thumb_func_start FUN_0204F0C4
+FUN_0204F0C4: ; 0x0204F0C4
+ mov r0, #0x3
+ bx lr
+
+ thumb_func_start FUN_0204F0C8
+FUN_0204F0C8: ; 0x0204F0C8
+ push {r3-r4, lr}
+ sub sp, #0x4
+ add r4, r0, #0x0
+ add r0, sp, #0x0
+ strb r4, [r0, #0x1]
+ ldrb r1, [r2, #0x0]
+ cmp r1, #0x0
+ beq _0204F0E0
+ cmp r1, #0x3
+ beq _0204F0F0
+ add sp, #0x4
+ pop {r3-r4, pc}
+_0204F0E0:
+ mov r1, #0x0
+ strb r1, [r0, #0x0]
+ mov r0, #0x55
+ add r1, sp, #0x0
+ bl FUN_02030C4C
+ add sp, #0x4
+ pop {r3-r4, pc}
+_0204F0F0:
+ mov r1, #0x3
+ strb r1, [r0, #0x0]
+ mov r0, #0x55
+ add r1, sp, #0x0
+ bl FUN_02030C4C
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_0204EAD8
+ add sp, #0x4
+ pop {r3-r4, pc}
+
+ thumb_func_start FUN_0204F108
+FUN_0204F108: ; 0x0204F108
+ push {r3, lr}
+ bl FUN_02031190
+ bl FUN_0204F0A8
+ bl FUN_0223D648
+ bl FUN_0224DD94
+ mov r0, #0x4
+ bl FUN_0204F774
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204F124
+FUN_0204F124: ; 0x0204F124
+ push {r3-r7, lr}
+ add r5, r1, #0x0
+ add r6, r0, #0x0
+ ldr r0, [r5, #0x4]
+ mov r4, #0x0
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+ add r0, r7, #0x0
+ bl FUN_02030E7C
+ cmp r0, #0x0
+ bne _0204F14A
+ add r0, r5, #0x0
+ bl FUN_02016A18
+ add r0, r6, #0x0
+ bl FUN_0200CAB4
+ pop {r3-r7, pc}
+_0204F14A:
+ ldr r0, [r5, #0x0]
+ add r0, r0, #0x1
+ str r0, [r5, #0x0]
+ cmp r0, #0x3c
+ ble _0204F156
+ mov r4, #0x1
+_0204F156:
+ cmp r4, #0x0
+ beq _0204F172
+ ldr r0, _0204F174 ; =0x021C5A68
+ mov r1, #0x1
+ ldr r0, [r0, #0x0]
+ add r0, r0, r7
+ add r0, #0xea
+ strb r1, [r0, #0x0]
+ add r0, r5, #0x0
+ bl FUN_02016A18
+ add r0, r6, #0x0
+ bl FUN_0200CAB4
+_0204F172:
+ pop {r3-r7, pc}
+ .balign 4
+_0204F174: .word 0x021C5A68
+
+ thumb_func_start FUN_0204F178
+FUN_0204F178: ; 0x0204F178
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0xb
+ mov r1, #0x8
+ bl FUN_02016998
+ add r1, r0, #0x0
+ mov r2, #0x0
+ str r2, [r1, #0x0]
+ ldr r0, _0204F1A8 ; =0x021C5A68
+ str r4, [r1, #0x4]
+ ldr r0, [r0, #0x0]
+ add r0, r0, r4
+ add r0, #0xea
+ strb r2, [r0, #0x0]
+ ldr r0, _0204F1AC ; =FUN_0204F124
+ mov r2, #0x64
+ bl FUN_0200CA44
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_0204EAD8
+ pop {r4, pc}
+ .balign 4
+_0204F1A8: .word 0x021C5A68
+_0204F1AC: .word FUN_0204F124
+
+ thumb_func_start FUN_0204F1B0
+FUN_0204F1B0: ; 0x0204F1B0
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ mov r1, #0x1
+ add r5, r0, #0x0
+ tst r1, r2
+ beq _0204F1C4
+ mov r1, #0xb
+ add r0, sp, #0x0
+ strb r1, [r0, #0x0]
+ b _0204F1F6
+_0204F1C4:
+ bl FUN_0204EE9C
+ cmp r0, #0x0
+ beq _0204F1D4
+ mov r1, #0xb
+ add r0, sp, #0x0
+ strb r1, [r0, #0x0]
+ b _0204F1F6
+_0204F1D4:
+ cmp r4, #0xff
+ bne _0204F1DC
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0204F1DC:
+ add r0, r4, #0x0
+ bl FUN_0204EE9C
+ cmp r0, #0x0
+ bne _0204F1EA
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0204F1EA:
+ mov r1, #0x5
+ add r0, sp, #0x0
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ bl FUN_0204F178
+_0204F1F6:
+ add r0, sp, #0x0
+ strb r5, [r0, #0x1]
+ strb r4, [r0, #0x2]
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_0204EAD8
+ mov r0, #0x55
+ add r1, sp, #0x0
+ bl FUN_02030C4C
+ mov r0, #0x1
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0204F210
+FUN_0204F210: ; 0x0204F210
+ push {r3-r4, lr}
+ sub sp, #0x4
+ add r4, r0, #0x0
+ bl FUN_0204EE9C
+ cmp r0, #0x0
+ beq _0204F226
+ mov r1, #0xc
+ add r0, sp, #0x0
+ strb r1, [r0, #0x0]
+ b _0204F22C
+_0204F226:
+ add sp, #0x4
+ mov r0, #0x0
+ pop {r3-r4, pc}
+_0204F22C:
+ strb r4, [r0, #0x1]
+ mov r0, #0x55
+ add r1, sp, #0x0
+ bl FUN_02030C4C
+ mov r0, #0x1
+ add sp, #0x4
+ pop {r3-r4, pc}
+
+ thumb_func_start FUN_0204F23C
+FUN_0204F23C: ; 0x0204F23C
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_0223E6B8
+ mov r0, #0x0
+ bl FUN_0204D628
+ mov r0, #0x4
+ bl FUN_0204F74C
+ bl FUN_0223D648
+ add r6, r0, #0x0
+ ldrb r0, [r5, #0x1]
+ bl FUN_0202DFA4
+ add r1, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_0224DDB8
+ cmp r4, #0x0
+ beq _0204F29C
+ bl FUN_02031190
+ ldr r1, _0204F2C8 ; =0x021C5A68
+ mov r2, #0x0
+ ldr r1, [r1, #0x0]
+ add r0, r1, r0
+ add r0, #0xfa
+ strb r2, [r0, #0x0]
+ bl FUN_02031190
+ bl FUN_0204F0A8
+ bl FUN_02031190
+ bl FUN_0204F074
+ bl FUN_0223D648
+ ldr r3, _0204F2CC ; =FUN_0204F108
+ mov r1, #0xa
+ mov r2, #0x1
+ bl FUN_0224DCB8
+ b _0204F2AA
+_0204F29C:
+ bl FUN_0223D648
+ ldr r3, _0204F2CC ; =FUN_0204F108
+ mov r1, #0xb
+ mov r2, #0x1
+ bl FUN_0224DCB8
+_0204F2AA:
+ mov r0, #0xff
+ str r0, [sp, #0x0]
+ mov r3, #0x0
+ ldr r1, _0204F2D0 ; =0x00000424
+ mov r0, #0x4
+ mov r2, #0x3c
+ str r3, [sp, #0x4]
+ bl FUN_02004DCC
+ ldr r0, _0204F2D4 ; =0x000005F6
+ bl FUN_020054C8
+ add sp, #0x8
+ pop {r4-r6, pc}
+ nop
+_0204F2C8: .word 0x021C5A68
+_0204F2CC: .word FUN_0204F108
+_0204F2D0: .word 0x00000424
+_0204F2D4: .word 0x000005F6
+
+ thumb_func_start FUN_0204F2D8
+FUN_0204F2D8: ; 0x0204F2D8
+ push {r4-r5, lr}
+ sub sp, #0xc
+ ldr r0, _0204F5E0 ; =0x021C5A68
+ add r5, r2, #0x0
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x54]
+ bl FUN_020377AC
+ bl FUN_02026CB4
+ add r4, r0, #0x0
+ ldrb r0, [r5, #0x0]
+ cmp r0, #0x5
+ bgt _0204F308
+ cmp r0, #0x0
+ blt _0204F346
+ beq _0204F31E
+ cmp r0, #0x3
+ bne _0204F300
+ b _0204F4D2
+_0204F300:
+ cmp r0, #0x5
+ beq _0204F370
+ add sp, #0xc
+ pop {r4-r5, pc}
+_0204F308:
+ cmp r0, #0xc
+ bgt _0204F346
+ cmp r0, #0xb
+ blt _0204F346
+ bne _0204F314
+ b _0204F48C
+_0204F314:
+ cmp r0, #0xc
+ bne _0204F31A
+ b _0204F4AE
+_0204F31A:
+ add sp, #0xc
+ pop {r4-r5, pc}
+_0204F31E:
+ ldr r1, _0204F5E0 ; =0x021C5A68
+ ldrb r0, [r5, #0x1]
+ ldr r2, [r1, #0x0]
+ lsl r1, r0, #0x2
+ add r2, r2, r1
+ mov r1, #0x29
+ lsl r1, r1, #0x4
+ ldr r1, [r2, r1]
+ cmp r1, #0x0
+ beq _0204F346
+ bl FUN_0204ED9C
+ ldrb r0, [r5, #0x1]
+ bl FUN_0204F0A8
+ bl FUN_02031190
+ ldrb r1, [r5, #0x1]
+ cmp r1, r0
+ beq _0204F348
+_0204F346:
+ b _0204F5DA
+_0204F348:
+ bl FUN_0204F7E4
+ bl FUN_0223D648
+ ldr r3, _0204F5E4 ; =FUN_0204E2B4
+ mov r1, #0x2
+ mov r2, #0x1
+ bl FUN_0224DCB8
+ mov r0, #0xff
+ str r0, [sp, #0x0]
+ mov r3, #0x0
+ ldr r1, _0204F5E8 ; =0x00000424
+ mov r0, #0x4
+ mov r2, #0x3c
+ str r3, [sp, #0x4]
+ bl FUN_02004DCC
+ add sp, #0xc
+ pop {r4-r5, pc}
+_0204F370:
+ ldrb r0, [r5, #0x1]
+ bl FUN_0202DFA4
+ cmp r0, #0x0
+ bne _0204F384
+ ldrb r0, [r5, #0x2]
+ bl FUN_0204ED9C
+ add sp, #0xc
+ pop {r4-r5, pc}
+_0204F384:
+ ldr r0, _0204F5E0 ; =0x021C5A68
+ ldr r1, [r0, #0x0]
+ ldrb r0, [r5, #0x2]
+ lsl r0, r0, #0x2
+ add r1, r1, r0
+ mov r0, #0x29
+ lsl r0, r0, #0x4
+ ldr r0, [r1, r0]
+ cmp r0, #0x0
+ bne _0204F3AC
+ bl FUN_02031190
+ ldrb r1, [r5, #0x1]
+ cmp r1, r0
+ beq _0204F3A4
+ b _0204F5DA
+_0204F3A4:
+ bl FUN_0204F7FC
+ add sp, #0xc
+ pop {r4-r5, pc}
+_0204F3AC:
+ ldrb r0, [r5, #0x1]
+ bl FUN_0202DFA4
+ add r1, r0, #0x0
+ ldr r0, _0204F5E0 ; =0x021C5A68
+ ldr r2, [r0, #0x0]
+ ldrb r0, [r5, #0x2]
+ lsl r0, r0, #0x2
+ add r2, r2, r0
+ mov r0, #0x29
+ lsl r0, r0, #0x4
+ ldr r0, [r2, r0]
+ bl FUN_02023AA4
+ cmp r0, #0x1
+ bne _0204F41A
+ ldrb r0, [r5, #0x2]
+ bl FUN_0204ED9C
+ bl FUN_02031190
+ ldrb r1, [r5, #0x1]
+ cmp r1, r0
+ bne _0204F3FC
+ add r0, r4, #0x0
+ bl FUN_02026C00
+ bl FUN_0204F7E4
+ bl FUN_0223D648
+ ldr r3, _0204F5EC ; =FUN_0204E2AC
+ mov r1, #0xd
+ mov r2, #0x1
+ bl FUN_0224DCB8
+ ldr r0, _0204F5F0 ; =0x00000625
+ bl FUN_020054C8
+ b _0204F410
+_0204F3FC:
+ bl FUN_02031190
+ ldrb r1, [r5, #0x2]
+ cmp r1, r0
+ bne _0204F410
+ add r0, r5, #0x0
+ mov r1, #0x0
+ add r2, r4, #0x0
+ bl FUN_0204F23C
+_0204F410:
+ ldrb r0, [r5, #0x1]
+ bl FUN_022472AC
+ add sp, #0xc
+ pop {r4-r5, pc}
+_0204F41A:
+ ldrb r0, [r5, #0x1]
+ ldrb r1, [r5, #0x2]
+ bl FUN_0204EF50
+ cmp r0, #0x0
+ beq _0204F4B8
+ bl FUN_02031190
+ ldrb r1, [r5, #0x1]
+ cmp r1, r0
+ bne _0204F46C
+ add r0, r4, #0x0
+ bl FUN_02026970
+ mov r0, #0x1
+ bl FUN_0204F74C
+ bl FUN_0223D648
+ add r4, r0, #0x0
+ ldrb r0, [r5, #0x2]
+ bl FUN_0202DFA4
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0224DDB8
+ bl FUN_0223D648
+ ldr r3, _0204F5F4 ; =FUN_0204E2D4
+ mov r1, #0xc
+ mov r2, #0x1
+ bl FUN_0224DCB8
+ ldr r0, _0204F5F8 ; =0x00000425
+ bl FUN_0200521C
+ ldr r0, _0204F5F0 ; =0x00000625
+ bl FUN_020054C8
+ b _0204F480
+_0204F46C:
+ bl FUN_02031190
+ ldrb r1, [r5, #0x2]
+ cmp r1, r0
+ bne _0204F480
+ add r0, r5, #0x0
+ mov r1, #0x1
+ add r2, r4, #0x0
+ bl FUN_0204F23C
+_0204F480:
+ ldrb r0, [r5, #0x1]
+ ldrb r1, [r5, #0x2]
+ bl FUN_02247294
+ add sp, #0xc
+ pop {r4-r5, pc}
+_0204F48C:
+ bl FUN_02031190
+ ldrb r1, [r5, #0x1]
+ cmp r1, r0
+ bne _0204F4B8
+ mov r0, #0x2
+ bl FUN_0204F74C
+ bl FUN_0223D648
+ ldr r3, _0204F5FC ; =FUN_0204E2BC
+ mov r1, #0x6
+ mov r2, #0x1
+ bl FUN_0224DCB8
+ add sp, #0xc
+ pop {r4-r5, pc}
+_0204F4AE:
+ bl FUN_02031190
+ ldrb r1, [r5, #0x1]
+ cmp r1, r0
+ beq _0204F4BA
+_0204F4B8:
+ b _0204F5DA
+_0204F4BA:
+ mov r0, #0x20
+ bl FUN_0204F74C
+ bl FUN_0223D648
+ ldr r3, _0204F600 ; =FUN_0204E2C8
+ mov r1, #0x5
+ mov r2, #0x1
+ bl FUN_0224DCB8
+ add sp, #0xc
+ pop {r4-r5, pc}
+_0204F4D2:
+ ldr r0, _0204F5E0 ; =0x021C5A68
+ mov r2, #0x0
+ ldr r1, [r0, #0x0]
+ ldrb r0, [r5, #0x1]
+ add r0, r1, r0
+ add r0, #0xfa
+ strb r2, [r0, #0x0]
+ ldrb r0, [r5, #0x1]
+ bl FUN_0204F0A8
+ bl FUN_02031190
+ ldrb r1, [r5, #0x1]
+ cmp r1, r0
+ bne _0204F58C
+ ldr r0, _0204F5E0 ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x54]
+ bl FUN_020377AC
+ bl FUN_02026CB4
+ add r4, r0, #0x0
+ bl FUN_020269A0
+ add r1, sp, #0x8
+ strb r0, [r1, #0x0]
+ add r0, r4, #0x0
+ bl FUN_020269D4
+ ldr r0, _0204F5E0 ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x54]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205EDF8
+ ldr r0, _0204F5E0 ; =0x021C5A68
+ ldrb r1, [r5, #0x1]
+ ldr r0, [r0, #0x0]
+ lsl r1, r1, #0x2
+ add r2, r0, r1
+ mov r1, #0x29
+ lsl r1, r1, #0x4
+ ldr r1, [r2, r1]
+ cmp r1, #0x0
+ beq _0204F54A
+ ldr r0, [r0, #0x54]
+ bl FUN_0206189C
+ ldr r0, _0204F5E0 ; =0x021C5A68
+ ldr r1, _0204F604 ; =0x0000FFFF
+ ldr r3, [r0, #0x0]
+ ldr r0, _0204F608 ; =0x000002B2
+ ldrh r2, [r3, r0]
+ cmp r2, r1
+ beq _0204F54A
+ add r1, r2, #0x1
+ strh r1, [r3, r0]
+_0204F54A:
+ bl FUN_0204F7E4
+ ldr r0, _0204F60C ; =0x0000062B
+ bl FUN_020054C8
+ add r0, r4, #0x0
+ bl FUN_020269A0
+ add r1, sp, #0x8
+ ldrb r1, [r1, #0x0]
+ cmp r1, r0
+ bne _0204F572
+ bl FUN_0223D648
+ ldr r3, _0204F5EC ; =FUN_0204E2AC
+ mov r1, #0x7
+ mov r2, #0x1
+ bl FUN_0224DCB8
+ b _0204F57A
+_0204F572:
+ mov r0, #0x60
+ add r1, sp, #0x8
+ bl FUN_020311D0
+_0204F57A:
+ mov r0, #0xff
+ str r0, [sp, #0x0]
+ mov r3, #0x0
+ ldr r1, _0204F5E8 ; =0x00000424
+ mov r0, #0x4
+ mov r2, #0x3c
+ str r3, [sp, #0x4]
+ bl FUN_02004DCC
+_0204F58C:
+ ldr r0, _0204F5E0 ; =0x021C5A68
+ ldr r1, [r0, #0x0]
+ ldrb r0, [r5, #0x1]
+ lsl r0, r0, #0x2
+ add r1, r1, r0
+ mov r0, #0x29
+ lsl r0, r0, #0x4
+ ldr r0, [r1, r0]
+ cmp r0, #0x0
+ beq _0204F5D4
+ bl FUN_02031190
+ bl FUN_0202DFA4
+ add r1, r0, #0x0
+ ldr r0, _0204F5E0 ; =0x021C5A68
+ ldr r2, [r0, #0x0]
+ ldrb r0, [r5, #0x1]
+ lsl r0, r0, #0x2
+ add r2, r2, r0
+ mov r0, #0x29
+ lsl r0, r0, #0x4
+ ldr r0, [r2, r0]
+ bl FUN_02023AA4
+ cmp r0, #0x1
+ bne _0204F5D4
+ ldrb r0, [r5, #0x1]
+ bl FUN_0202DFA4
+ add r1, r0, #0x0
+ ldr r0, _0204F5E0 ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x54]
+ bl FUN_020618B8
+_0204F5D4:
+ ldrb r0, [r5, #0x1]
+ bl FUN_0204EDEC
+_0204F5DA:
+ add sp, #0xc
+ pop {r4-r5, pc}
+ nop
+_0204F5E0: .word 0x021C5A68
+_0204F5E4: .word FUN_0204E2B4
+_0204F5E8: .word 0x00000424
+_0204F5EC: .word FUN_0204E2AC
+_0204F5F0: .word 0x00000625
+_0204F5F4: .word FUN_0204E2D4
+_0204F5F8: .word 0x00000425
+_0204F5FC: .word FUN_0204E2BC
+_0204F600: .word FUN_0204E2C8
+_0204F604: .word 0x0000FFFF
+_0204F608: .word 0x000002B2
+_0204F60C: .word 0x0000062B
+
+ thumb_func_start FUN_0204F610
+FUN_0204F610: ; 0x0204F610
+ push {r3, lr}
+ cmp r0, #0x0
+ bne _0204F61A
+ mov r0, #0x1
+ pop {r3, pc}
+_0204F61A:
+ cmp r0, #0x1
+ bne _0204F622
+ mov r0, #0x0
+ pop {r3, pc}
+_0204F622:
+ cmp r0, #0x2
+ bne _0204F62A
+ mov r0, #0x3
+ pop {r3, pc}
+_0204F62A:
+ cmp r0, #0x3
+ bne _0204F632
+ mov r0, #0x2
+ pop {r3, pc}
+_0204F632:
+ bl ErrorHandling
+ mov r0, #0x2
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204F63C
+FUN_0204F63C: ; 0x0204F63C
+ push {r3-r4}
+ ldr r3, _0204F658 ; =0x021C5A68
+ ldr r2, [r3, #0x0]
+ add r4, r2, r0
+ ldr r2, _0204F65C ; =0x0000011A
+ strb r1, [r4, r2]
+ ldr r1, [r3, #0x0]
+ mov r4, #0xf
+ add r0, r1, r0
+ add r2, #0x20
+ strb r4, [r0, r2]
+ pop {r3-r4}
+ bx lr
+ nop
+_0204F658: .word 0x021C5A68
+_0204F65C: .word 0x0000011A
+
+ thumb_func_start FUN_0204F660
+FUN_0204F660: ; 0x0204F660
+ ldr r1, _0204F670 ; =0x021C5A68
+ mov r2, #0x0
+ ldr r1, [r1, #0x0]
+ add r1, r1, r0
+ ldr r0, _0204F674 ; =0x0000011A
+ strb r2, [r1, r0]
+ bx lr
+ nop
+_0204F670: .word 0x021C5A68
+_0204F674: .word 0x0000011A
+
+ thumb_func_start FUN_0204F678
+FUN_0204F678: ; 0x0204F678
+ push {r3-r4}
+ ldr r3, _0204F694 ; =0x021C5A68
+ ldr r2, [r3, #0x0]
+ add r4, r2, r0
+ ldr r2, _0204F698 ; =0x00000122
+ strb r1, [r4, r2]
+ ldr r1, [r3, #0x0]
+ mov r4, #0xf
+ add r0, r1, r0
+ add r2, #0x18
+ strb r4, [r0, r2]
+ pop {r3-r4}
+ bx lr
+ nop
+_0204F694: .word 0x021C5A68
+_0204F698: .word 0x00000122
+
+ thumb_func_start FUN_0204F69C
+FUN_0204F69C: ; 0x0204F69C
+ ldr r1, _0204F6AC ; =0x021C5A68
+ mov r2, #0x0
+ ldr r1, [r1, #0x0]
+ add r1, r1, r0
+ ldr r0, _0204F6B0 ; =0x00000122
+ strb r2, [r1, r0]
+ bx lr
+ nop
+_0204F6AC: .word 0x021C5A68
+_0204F6B0: .word 0x00000122
+
+ thumb_func_start FUN_0204F6B4
+FUN_0204F6B4: ; 0x0204F6B4
+ ldr r1, _0204F6C0 ; =0x021C5A68
+ ldr r1, [r1, #0x0]
+ add r1, r1, r0
+ ldr r0, _0204F6C4 ; =0x00000142
+ ldrb r0, [r1, r0]
+ bx lr
+ .balign 4
+_0204F6C0: .word 0x021C5A68
+_0204F6C4: .word 0x00000142
+
+ thumb_func_start FUN_0204F6C8
+FUN_0204F6C8: ; 0x0204F6C8
+ ldr r1, _0204F6D4 ; =0x021C5A68
+ ldr r1, [r1, #0x0]
+ add r1, r1, r0
+ ldr r0, _0204F6D8 ; =0x0000013A
+ ldrb r0, [r1, r0]
+ bx lr
+ .balign 4
+_0204F6D4: .word 0x021C5A68
+_0204F6D8: .word 0x0000013A
+
+ thumb_func_start FUN_0204F6DC
+FUN_0204F6DC: ; 0x0204F6DC
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _0204F708 ; =0x021C5A68
+ add r1, r4, #0x0
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x54]
+ ldr r0, [r0, #0x38]
+ bl FUN_02055304
+ bl FUN_02031190
+ ldr r1, _0204F708 ; =0x021C5A68
+ lsl r0, r0, #0x3
+ ldr r1, [r1, #0x0]
+ add r0, r1, r0
+ add r0, #0xa6
+ strb r4, [r0, #0x0]
+ mov r0, #0x0
+ bl FUN_0204D168
+ pop {r4, pc}
+ nop
+_0204F708: .word 0x021C5A68
+
+ thumb_func_start FUN_0204F70C
+FUN_0204F70C: ; 0x0204F70C
+ push {r4, lr}
+ ldr r3, _0204F728 ; =0x021C5A68
+ lsl r2, r0, #0x3
+ ldr r4, [r3, #0x0]
+ lsl r0, r0, #0x2
+ add r2, r4, r2
+ add r2, #0xa6
+ strb r1, [r2, #0x0]
+ ldr r2, [r3, #0x0]
+ add r0, r2, r0
+ ldr r0, [r0, #0x8]
+ bl FUN_02055304
+ pop {r4, pc}
+ .balign 4
+_0204F728: .word 0x021C5A68
+
+ thumb_func_start FUN_0204F72C
+FUN_0204F72C: ; 0x0204F72C
+ push {r3, lr}
+ ldr r1, _0204F748 ; =0x021C5A68
+ lsl r0, r0, #0x2
+ ldr r1, [r1, #0x0]
+ add r0, r1, r0
+ ldr r0, [r0, #0x8]
+ cmp r0, #0x0
+ beq _0204F742
+ bl FUN_020552F8
+ pop {r3, pc}
+_0204F742:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3, pc}
+ .balign 4
+_0204F748: .word 0x021C5A68
+
+ thumb_func_start FUN_0204F74C
+FUN_0204F74C: ; 0x0204F74C
+ push {r3, lr}
+ cmp r0, #0x0
+ beq _0204F75C
+ ldr r1, _0204F770 ; =0x021C5A68
+ ldr r2, [r1, #0x0]
+ ldr r1, [r2, #0x0]
+ orr r0, r1
+ str r0, [r2, #0x0]
+_0204F75C:
+ bl FUN_02037760
+ ldr r0, _0204F770 ; =0x021C5A68
+ mov r2, #0x0
+ ldr r1, [r0, #0x0]
+ mov r0, #0xaf
+ lsl r0, r0, #0x2
+ strb r2, [r1, r0]
+ pop {r3, pc}
+ nop
+_0204F770: .word 0x021C5A68
+
+ thumb_func_start FUN_0204F774
+FUN_0204F774: ; 0x0204F774
+ push {r3-r4, lr}
+ sub sp, #0x4
+ add r4, r0, #0x0
+ beq _0204F788
+ ldr r0, _0204F7D0 ; =0x021C5A68
+ ldr r2, [r0, #0x0]
+ mvn r0, r4
+ ldr r1, [r2, #0x0]
+ and r0, r1
+ str r0, [r2, #0x0]
+_0204F788:
+ ldr r0, _0204F7D0 ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x10
+ bne _0204F7A0
+ mov r1, #0x1
+ add r0, sp, #0x0
+ strb r1, [r0, #0x0]
+ mov r0, #0x3e
+ add r1, sp, #0x0
+ bl FUN_020311D0
+_0204F7A0:
+ ldr r0, _0204F7D0 ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _0204F7CC
+ cmp r4, #0x10
+ beq _0204F7BC
+ bl FUN_02037778
+ mov r0, #0x1
+ bl FUN_0204D628
+ add sp, #0x4
+ pop {r3-r4, pc}
+_0204F7BC:
+ bl FUN_02037778
+ ldr r0, _0204F7D0 ; =0x021C5A68
+ mov r2, #0x1
+ ldr r1, [r0, #0x0]
+ mov r0, #0xaf
+ lsl r0, r0, #0x2
+ strb r2, [r1, r0]
+_0204F7CC:
+ add sp, #0x4
+ pop {r3-r4, pc}
+ .balign 4
+_0204F7D0: .word 0x021C5A68
+
+ thumb_func_start FUN_0204F7D4
+FUN_0204F7D4: ; 0x0204F7D4
+ ldr r0, _0204F7E0 ; =0x021C5A68
+ mov r1, #0x0
+ ldr r0, [r0, #0x0]
+ str r1, [r0, #0x0]
+ bx lr
+ nop
+_0204F7E0: .word 0x021C5A68
+
+ thumb_func_start FUN_0204F7E4
+FUN_0204F7E4: ; 0x0204F7E4
+ push {r3, lr}
+ bl FUN_02037760
+ ldr r0, _0204F7F8 ; =0x021C5A68
+ mov r2, #0x0
+ ldr r1, [r0, #0x0]
+ mov r0, #0xaf
+ lsl r0, r0, #0x2
+ strb r2, [r1, r0]
+ pop {r3, pc}
+ .balign 4
+_0204F7F8: .word 0x021C5A68
+
+ thumb_func_start FUN_0204F7FC
+FUN_0204F7FC: ; 0x0204F7FC
+ push {r3, lr}
+ bl FUN_02037778
+ mov r0, #0x1
+ bl FUN_0204D628
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0204F80C
+FUN_0204F80C: ; 0x0204F80C
+ push {r3, lr}
+ ldr r0, _0204F850 ; =0x021C5A68
+ ldr r2, [r0, #0x0]
+ ldr r0, _0204F854 ; =0x000002BF
+ ldrb r1, [r2, r0]
+ cmp r1, #0x0
+ bne _0204F84C
+ sub r0, r0, #0x1
+ ldrb r0, [r2, r0]
+ cmp r0, #0x0
+ bne _0204F832
+ bl FUN_0204F7FC
+ ldr r0, _0204F850 ; =0x021C5A68
+ mov r2, #0x1
+ ldr r1, [r0, #0x0]
+ ldr r0, _0204F854 ; =0x000002BF
+ strb r2, [r1, r0]
+ pop {r3, pc}
+_0204F832:
+ bl FUN_02031190
+ bl FUN_0223E734
+ cmp r0, #0x0
+ beq _0204F84C
+ bl FUN_0204F7FC
+ ldr r0, _0204F850 ; =0x021C5A68
+ mov r2, #0x1
+ ldr r1, [r0, #0x0]
+ ldr r0, _0204F854 ; =0x000002BF
+ strb r2, [r1, r0]
+_0204F84C:
+ pop {r3, pc}
+ nop
+_0204F850: .word 0x021C5A68
+_0204F854: .word 0x000002BF
+
+ thumb_func_start FUN_0204F858
+FUN_0204F858: ; 0x0204F858
+ push {r3, lr}
+ ldr r0, _0204F884 ; =0x021C5A68
+ ldr r2, [r0, #0x0]
+ ldr r0, _0204F888 ; =0x000002BF
+ ldrb r1, [r2, r0]
+ cmp r1, #0x0
+ bne _0204F880
+ sub r0, r0, #0x1
+ ldrb r0, [r2, r0]
+ cmp r0, #0x0
+ beq _0204F880
+ bl FUN_02031190
+ bl FUN_0223E734
+ cmp r0, #0x0
+ bne _0204F880
+ mov r0, #0x0
+ bl FUN_0204D628
+_0204F880:
+ pop {r3, pc}
+ nop
+_0204F884: .word 0x021C5A68
+_0204F888: .word 0x000002BF
+
+ thumb_func_start FUN_0204F88C
+FUN_0204F88C: ; 0x0204F88C
+ push {r3-r7, lr}
+ sub sp, #0x10
+ ldr r0, _0204F908 ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _0204F902
+ mov r6, #0x0
+ add r4, r6, #0x0
+ add r5, r6, #0x0
+_0204F89E:
+ ldr r0, _0204F908 ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ add r0, r0, r4
+ ldr r0, [r0, #0x8]
+ cmp r0, #0x0
+ beq _0204F8F8
+ bl FUN_02031190
+ cmp r6, r0
+ beq _0204F8F8
+ ldr r0, _0204F908 ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ add r0, r0, r4
+ ldr r0, [r0, #0x8]
+ bl FUN_020553A0
+ ldr r1, _0204F908 ; =0x021C5A68
+ str r0, [sp, #0xc]
+ ldr r1, [r1, #0x0]
+ add r1, r1, r5
+ add r2, r1, #0x0
+ add r2, #0xa2
+ ldrh r2, [r2, #0x0]
+ str r2, [sp, #0x8]
+ add r2, r1, #0x0
+ add r2, #0xa4
+ ldrh r7, [r2, #0x0]
+ mov r2, #0xa6
+ ldrsb r1, [r1, r2]
+ str r1, [sp, #0x4]
+ ldr r1, [sp, #0x8]
+ bl FUN_02058B30
+ ldr r0, [sp, #0xc]
+ add r1, r7, #0x0
+ bl FUN_02058B50
+ ldr r0, [sp, #0x4]
+ ldr r1, [sp, #0x8]
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0xc]
+ mov r2, #0x0
+ add r3, r7, #0x0
+ bl FUN_02058E28
+_0204F8F8:
+ add r6, r6, #0x1
+ add r4, r4, #0x4
+ add r5, #0x8
+ cmp r6, #0x8
+ blt _0204F89E
+_0204F902:
+ add sp, #0x10
+ pop {r3-r7, pc}
+ nop
+_0204F908: .word 0x021C5A68
+
+ thumb_func_start FUN_0204F90C
+FUN_0204F90C: ; 0x0204F90C
+ push {r4-r5}
+ mov r3, #0xff
+ mov r4, #0x0
+ add r0, r3, #0x0
+ ldr r1, _0204F92C ; =0x021C5A68
+ add r5, r4, #0x0
+ add r0, #0x6b
+_0204F91A:
+ ldr r2, [r1, #0x0]
+ add r4, r4, #0x1
+ add r2, r2, r5
+ add r5, #0x22
+ strh r3, [r2, r0]
+ cmp r4, #0x8
+ blt _0204F91A
+ pop {r4-r5}
+ bx lr
+ .balign 4
+_0204F92C: .word 0x021C5A68
+
+ thumb_func_start FUN_0204F930
+FUN_0204F930: ; 0x0204F930
+ push {r3-r5, lr}
+ ldr r0, _0204F9B0 ; =0x021C5A68
+ mov r2, #0x0
+ ldr r1, [r0, #0x0]
+ ldr r0, _0204F9B4 ; =0x000002B9
+ strb r2, [r1, r0]
+ bl FUN_02031190
+ ldr r1, _0204F9B0 ; =0x021C5A68
+ lsl r0, r0, #0x2
+ ldr r1, [r1, #0x0]
+ add r1, r1, r0
+ mov r0, #0x29
+ lsl r0, r0, #0x4
+ ldr r0, [r1, r0]
+ cmp r0, #0x0
+ beq _0204F96E
+ bl FUN_02031190
+ ldr r1, _0204F9B0 ; =0x021C5A68
+ add r3, r0, #0x0
+ ldr r2, [r1, #0x0]
+ lsl r1, r3, #0x2
+ add r2, r2, r1
+ mov r1, #0x29
+ lsl r1, r1, #0x4
+ ldr r1, [r2, r1]
+ mov r0, #0x5b
+ bl FUN_020311D0
+ pop {r3-r5, pc}
+_0204F96E:
+ mov r0, #0xf
+ bl FUN_02023928
+ add r4, r0, #0x0
+ mov r0, #0x14
+ mov r1, #0xf
+ bl FUN_020219F4
+ add r5, r0, #0x0
+ cmp r4, #0x0
+ bne _0204F988
+ bl ErrorHandling
+_0204F988:
+ cmp r5, #0x0
+ bne _0204F990
+ bl ErrorHandling
+_0204F990:
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ bl FUN_0202397C
+ mov r0, #0x5b
+ add r1, r4, #0x0
+ bl FUN_020311D0
+ add r0, r5, #0x0
+ bl FUN_02021A20
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r3-r5, pc}
+ nop
+_0204F9B0: .word 0x021C5A68
+_0204F9B4: .word 0x000002B9
+
+ thumb_func_start FUN_0204F9B8
+FUN_0204F9B8: ; 0x0204F9B8
+ mov r0, #0x20
+ bx lr
+
+ thumb_func_start FUN_0204F9BC
+FUN_0204F9BC: ; 0x0204F9BC
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ add r0, sp, #0x4
+ strb r5, [r0, #0x0]
+ ldr r0, _0204FA54 ; =0x021C5A68
+ add r6, r2, #0x0
+ ldr r2, [r0, #0x0]
+ cmp r2, #0x0
+ beq _0204FA4C
+ ldr r1, _0204FA58 ; =0x0000014A
+ mov r0, #0x22
+ add r4, r5, #0x0
+ mul r4, r0
+ add r1, r2, r1
+ add r0, r6, #0x0
+ add r1, r1, r4
+ bl FUN_0202393C
+ add r0, r6, #0x0
+ mov r1, #0xf
+ bl FUN_020239A0
+ str r0, [sp, #0x0]
+ bl FUN_02021D3C
+ cmp r0, #0x0
+ beq _0204F9FE
+ ldr r0, _0204FA54 ; =0x021C5A68
+ ldr r0, [r0, #0x0]
+ add r1, r0, r4
+ ldr r0, _0204FA5C ; =0x0000016A
+ strh r5, [r1, r0]
+_0204F9FE:
+ mov r4, #0x0
+ ldr r6, _0204FA54 ; =0x021C5A68
+ ldr r7, _0204FA5C ; =0x0000016A
+ add r5, r4, #0x0
+_0204FA06:
+ ldr r0, [r6, #0x0]
+ add r1, r0, r5
+ ldrh r0, [r1, r7]
+ cmp r0, #0xff
+ beq _0204FA26
+ ldr r0, _0204FA5C ; =0x0000016A
+ strh r4, [r1, r0]
+ mov r0, #0x5c
+ add r1, r0, #0x0
+ ldr r2, [r6, #0x0]
+ add r1, #0xee
+ add r1, r2, r1
+ add r1, r1, r5
+ mov r2, #0x22
+ bl FUN_02030B3C
+_0204FA26:
+ add r4, r4, #0x1
+ add r5, #0x22
+ cmp r4, #0x8
+ blt _0204FA06
+ mov r0, #0x5d
+ add r1, sp, #0x4
+ mov r2, #0x1
+ bl FUN_02030BC4
+ ldr r0, [sp, #0x0]
+ bl FUN_02021A20
+ ldr r0, _0204FA54 ; =0x021C5A68
+ mov r2, #0x1
+ ldr r1, [r0, #0x0]
+ ldr r0, _0204FA60 ; =0x000002C2
+ add sp, #0x8
+ strb r2, [r1, r0]
+ pop {r3-r7, pc}
+_0204FA4C:
+ bl ErrorHandling
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+_0204FA54: .word 0x021C5A68
+_0204FA58: .word 0x0000014A
+_0204FA5C: .word 0x0000016A
+_0204FA60: .word 0x000002C2
+
+ thumb_func_start FUN_0204FA64
+FUN_0204FA64: ; 0x0204FA64
+ ldr r0, _0204FA70 ; =0x021C5A68
+ ldr r1, [r0, #0x0]
+ ldr r0, _0204FA74 ; =0x0000025A
+ add r0, r1, r0
+ bx lr
+ nop
+_0204FA70: .word 0x021C5A68
+_0204FA74: .word 0x0000025A
+
+ thumb_func_start FUN_0204FA78
+FUN_0204FA78: ; 0x0204FA78
+ push {r4-r6, lr}
+ ldr r0, _0204FAC8 ; =0x021C5A68
+ add r6, r2, #0x0
+ ldr r1, [r0, #0x0]
+ cmp r1, #0x0
+ beq _0204FAC4
+ ldrh r5, [r6, #0x20]
+ lsl r0, r5, #0x2
+ add r1, r1, r0
+ mov r0, #0x29
+ lsl r0, r0, #0x4
+ ldr r0, [r1, r0]
+ cmp r0, #0x0
+ beq _0204FA98
+ bl FUN_02016A18
+_0204FA98:
+ mov r0, #0xf
+ lsl r4, r5, #0x2
+ bl FUN_02023928
+ ldr r2, _0204FAC8 ; =0x021C5A68
+ ldr r1, [r2, #0x0]
+ add r3, r1, r4
+ mov r1, #0x29
+ lsl r1, r1, #0x4
+ str r0, [r3, r1]
+ ldr r2, [r2, #0x0]
+ add r0, r6, #0x0
+ add r2, r2, r4
+ ldr r1, [r2, r1]
+ bl FUN_0202393C
+ ldr r0, _0204FAC8 ; =0x021C5A68
+ mov r1, #0x1
+ ldr r0, [r0, #0x0]
+ add r0, r0, r5
+ add r0, #0xfa
+ strb r1, [r0, #0x0]
+_0204FAC4:
+ pop {r4-r6, pc}
+ nop
+_0204FAC8: .word 0x021C5A68
+
+ thumb_func_start FUN_0204FACC
+FUN_0204FACC: ; 0x0204FACC
+ mov r0, #0x22
+ bx lr
+
+ thumb_func_start FUN_0204FAD0
+FUN_0204FAD0: ; 0x0204FAD0
+ push {r4, lr}
+ add r4, r2, #0x0
+ bl FUN_02031190
+ ldrb r1, [r4, #0x0]
+ cmp r1, r0
+ bne _0204FAE8
+ ldr r0, _0204FAF4 ; =0x021C5A68
+ mov r2, #0x1
+ ldr r1, [r0, #0x0]
+ ldr r0, _0204FAF8 ; =0x000002B9
+ strb r2, [r1, r0]
+_0204FAE8:
+ ldr r0, _0204FAF4 ; =0x021C5A68
+ mov r2, #0x0
+ ldr r1, [r0, #0x0]
+ ldr r0, _0204FAFC ; =0x000002C2
+ strb r2, [r1, r0]
+ pop {r4, pc}
+ .balign 4
+_0204FAF4: .word 0x021C5A68
+_0204FAF8: .word 0x000002B9
+_0204FAFC: .word 0x000002C2
+
+ thumb_func_start FUN_0204FB00
+FUN_0204FB00: ; 0x0204FB00
+ ldr r0, _0204FB0C ; =0x021C5A68
+ ldr r1, [r0, #0x0]
+ ldr r0, _0204FB10 ; =0x000002B9
+ ldrb r0, [r1, r0]
+ bx lr
+ nop
+_0204FB0C: .word 0x021C5A68
+_0204FB10: .word 0x000002B9
+
+ thumb_func_start FUN_0204FB14
+FUN_0204FB14: ; 0x0204FB14
+ ldr r0, _0204FB24 ; =0x021C5A68
+ mov r2, #0x8
+ ldr r1, [r0, #0x0]
+ mov r0, #0xb
+ lsl r0, r0, #0x6
+ strb r2, [r1, r0]
+ bx lr
+ nop
+_0204FB24: .word 0x021C5A68
+
+ thumb_func_start FUN_0204FB28
+FUN_0204FB28: ; 0x0204FB28
+ push {r3-r5, lr}
+ mov r4, #0x0
+ bl FUN_02031190
+ ldr r2, _0204FB9C ; =0x021C5A68
+ lsl r1, r0, #0x2
+ ldr r3, [r2, #0x0]
+ add r5, r3, r1
+ mov r1, #0x29
+ lsl r1, r1, #0x4
+ ldr r3, [r5, r1]
+ cmp r3, #0x0
+ beq _0204FB60
+ add r4, r3, #0x0
+ mov r3, #0x0
+ str r3, [r5, r1]
+ ldr r1, [r2, #0x0]
+ add r1, r1, r0
+ add r1, #0xfa
+ strb r3, [r1, #0x0]
+ ldr r3, [r2, #0x0]
+ mov r2, #0x22
+ mul r2, r0
+ mov r1, #0xff
+ add r0, r1, #0x0
+ add r2, r3, r2
+ add r0, #0x6b
+ strh r1, [r2, r0]
+_0204FB60:
+ mov r5, #0x0
+_0204FB62:
+ add r0, r5, #0x0
+ bl FUN_0204ED9C
+ add r5, r5, #0x1
+ cmp r5, #0x8
+ blt _0204FB62
+ cmp r4, #0x0
+ beq _0204FB9A
+ ldr r1, _0204FB9C ; =0x021C5A68
+ mov r0, #0x29
+ ldr r2, [r1, #0x0]
+ lsl r0, r0, #0x4
+ str r4, [r2, r0]
+ ldr r0, [r1, #0x0]
+ mov r2, #0x1
+ add r0, #0xfa
+ strb r2, [r0, #0x0]
+ ldr r2, [r1, #0x0]
+ ldr r1, _0204FBA0 ; =0x0000014A
+ add r0, r4, #0x0
+ add r1, r2, r1
+ bl FUN_0202393C
+ ldr r0, _0204FB9C ; =0x021C5A68
+ mov r2, #0x0
+ ldr r1, [r0, #0x0]
+ ldr r0, _0204FBA4 ; =0x0000016A
+ strh r2, [r1, r0]
+_0204FB9A:
+ pop {r3-r5, pc}
+ .balign 4
+_0204FB9C: .word 0x021C5A68
+_0204FBA0: .word 0x0000014A
+_0204FBA4: .word 0x0000016A
+
+ thumb_func_start FUN_0204FBA8
+FUN_0204FBA8: ; 0x0204FBA8
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0204FBAC
+FUN_0204FBAC: ; 0x0204FBAC
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0204FBB0
+FUN_0204FBB0: ; 0x0204FBB0
+ push {r4, lr}
+ ldr r1, _0204FC08 ; =0x021C5A6C
+ add r4, r0, #0x0
+ ldr r1, [r1, #0x0]
+ cmp r1, #0x0
+ bne _0204FC04
+ bl FUN_0208881C
+ mov r0, #0xf
+ mov r1, #0x48
+ bl FUN_02016998
+ ldr r1, _0204FC08 ; =0x021C5A6C
+ mov r2, #0x48
+ str r0, [r1, #0x0]
+ mov r1, #0x0
+ blx MI_CpuFill8
+ ldr r0, _0204FC08 ; =0x021C5A6C
+ mov r1, #0x32
+ ldr r0, [r0, #0x0]
+ mov r2, #0xa
+ strh r1, [r0, #0x3c]
+ ldr r0, _0204FC0C ; =FUN_0205006C
+ mov r1, #0x0
+ bl FUN_0200CA44
+ ldr r1, _0204FC08 ; =0x021C5A6C
+ ldr r2, [r1, #0x0]
+ str r0, [r2, #0x38]
+ ldr r0, [r1, #0x0]
+ mov r2, #0x0
+ str r4, [r0, #0x18]
+ ldr r0, [r1, #0x0]
+ str r2, [r0, #0x44]
+ bl FUN_0204FBA8
+ ldr r0, _0204FC08 ; =0x021C5A6C
+ ldr r0, [r0, #0x0]
+ add r0, #0x1c
+ bl FUN_020312BC
+_0204FC04:
+ pop {r4, pc}
+ nop
+_0204FC08: .word 0x021C5A6C
+_0204FC0C: .word FUN_0205006C
+
+ thumb_func_start FUN_0204FC10
+FUN_0204FC10: ; 0x0204FC10
+ push {r4-r6, lr}
+ ldr r0, _0204FC58 ; =0x021C5A6C
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _0204FC56
+ ldr r0, [r0, #0x38]
+ bl FUN_0200CAB4
+ mov r4, #0x0
+ ldr r6, _0204FC58 ; =0x021C5A6C
+ add r5, r4, #0x0
+_0204FC26:
+ ldr r0, [r6, #0x0]
+ ldr r0, [r0, r5]
+ cmp r0, #0x0
+ beq _0204FC32
+ bl FUN_02016A18
+_0204FC32:
+ add r4, r4, #0x1
+ add r5, r5, #0x4
+ cmp r4, #0x4
+ blt _0204FC26
+ ldr r0, _0204FC58 ; =0x021C5A6C
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x44]
+ cmp r0, #0x0
+ beq _0204FC48
+ bl FUN_02016A18
+_0204FC48:
+ ldr r0, _0204FC58 ; =0x021C5A6C
+ ldr r0, [r0, #0x0]
+ bl FUN_02016A18
+ ldr r0, _0204FC58 ; =0x021C5A6C
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+_0204FC56:
+ pop {r4-r6, pc}
+ .balign 4
+_0204FC58: .word 0x021C5A6C
+
+ thumb_func_start FUN_0204FC5C
+FUN_0204FC5C: ; 0x0204FC5C
+ push {r4, lr}
+ ldr r1, _0204FC9C ; =0x021C5A6C
+ add r4, r0, #0x0
+ ldr r1, [r1, #0x0]
+ cmp r1, #0x0
+ bne _0204FC9A
+ bl FUN_020377AC
+ bl FUN_02031824
+ add r0, r4, #0x0
+ bl FUN_0204FBB0
+ mov r2, #0x3a
+ mov r0, #0x3
+ mov r1, #0x21
+ lsl r2, r2, #0xa
+ bl FUN_0201681C
+ ldr r0, _0204FC9C ; =0x021C5A6C
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x18]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205F194
+ cmp r0, #0x0
+ bne _0204FC9A
+ bl FUN_02031924
+_0204FC9A:
+ pop {r4, pc}
+ .balign 4
+_0204FC9C: .word 0x021C5A6C
+
+ thumb_func_start FUN_0204FCA0
+FUN_0204FCA0: ; 0x0204FCA0
+ push {r3, lr}
+ ldr r0, _0204FCD0 ; =0x021C5A6C
+ mov r2, #0x1
+ ldr r1, [r0, #0x0]
+ add r1, #0x41
+ strb r2, [r1, #0x0]
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x18]
+ ldr r0, [r0, #0xc]
+ bl FUN_02029FC8
+ mov r1, #0x24
+ bl FUN_0202A170
+ ldr r0, _0204FCD0 ; =0x021C5A6C
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x18]
+ bl FUN_0223E060
+ ldr r0, _0204FCD4 ; =FUN_020500A4
+ mov r1, #0x0
+ bl FUN_02050094
+ pop {r3, pc}
+ .balign 4
+_0204FCD0: .word 0x021C5A6C
+_0204FCD4: .word FUN_020500A4
+
+ thumb_func_start FUN_0204FCD8
+FUN_0204FCD8: ; 0x0204FCD8
+ push {r3, lr}
+ ldr r0, _0204FCEC ; =0x021C5A6C
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _0204FCEA
+ ldr r0, _0204FCF0 ; =FUN_02050D54
+ mov r1, #0x3
+ bl FUN_02050094
+_0204FCEA:
+ pop {r3, pc}
+ .balign 4
+_0204FCEC: .word 0x021C5A6C
+_0204FCF0: .word FUN_02050D54
+
+ thumb_func_start FUN_0204FCF4
+FUN_0204FCF4: ; 0x0204FCF4
+ push {r3, lr}
+ bl FUN_02031914
+ ldr r0, _0204FD04 ; =FUN_020504D8
+ mov r1, #0x0
+ bl FUN_02050094
+ pop {r3, pc}
+ .balign 4
+_0204FD04: .word FUN_020504D8
+
+ thumb_func_start FUN_0204FD08
+FUN_0204FD08: ; 0x0204FD08
+ push {r3, lr}
+ bl FUN_0202EDD8
+ cmp r0, #0x0
+ bne _0204FD1E
+ bl FUN_02245F1C
+ ldr r0, _0204FD20 ; =FUN_020500A4
+ mov r1, #0x0
+ bl FUN_02050094
+_0204FD1E:
+ pop {r3, pc}
+ .balign 4
+_0204FD20: .word FUN_020500A4
+
+ thumb_func_start FUN_0204FD24
+FUN_0204FD24: ; 0x0204FD24
+ push {r3, lr}
+ bl FUN_02031934
+ ldr r0, _0204FD34 ; =FUN_0204FD08
+ mov r1, #0x0
+ bl FUN_02050094
+ pop {r3, pc}
+ .balign 4
+_0204FD34: .word FUN_0204FD08
+
+ thumb_func_start FUN_0204FD38
+FUN_0204FD38: ; 0x0204FD38
+ push {r3-r7, lr}
+ sub sp, #0x10
+ ldr r0, _0204FDBC ; =0x021C5A6C
+ add r2, sp, #0x0
+ ldr r0, [r0, #0x0]
+ ldr r3, _0204FDC0 ; =0x020F5838
+ ldr r5, [r0, #0x34]
+ add r6, r2, #0x0
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldr r0, _0204FDC4 ; =FUN_020502AC
+ ldr r4, _0204FDC8 ; =FUN_02050548
+ ldr r7, _0204FDCC ; =FUN_02050168
+ cmp r5, r0
+ bne _0204FD68
+ ldr r0, _0204FDD0 ; =FUN_0205031C
+ mov r1, #0x0
+ bl FUN_02050094
+ add sp, #0x10
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0204FD68:
+ cmp r4, r5
+ bne _0204FD7A
+ ldr r0, _0204FDD4 ; =FUN_02050578
+ mov r1, #0x0
+ bl FUN_02050094
+ add sp, #0x10
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0204FD7A:
+ cmp r7, r5
+ bne _0204FD8C
+ ldr r0, _0204FDD8 ; =FUN_020505E0
+ mov r1, #0x0
+ bl FUN_02050094
+ add sp, #0x10
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0204FD8C:
+ ldr r0, _0204FDDC ; =FUN_020504D0
+ cmp r0, r5
+ bne _0204FDA0
+ ldr r0, _0204FDE0 ; =FUN_02050610
+ mov r1, #0x0
+ bl FUN_02050094
+ add sp, #0x10
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0204FDA0:
+ mov r1, #0x0
+_0204FDA2:
+ ldr r0, [r6, #0x0]
+ cmp r5, r0
+ bne _0204FDAE
+ add sp, #0x10
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0204FDAE:
+ add r1, r1, #0x1
+ add r6, r6, #0x4
+ cmp r1, #0x4
+ blo _0204FDA2
+ mov r0, #0x0
+ add sp, #0x10
+ pop {r3-r7, pc}
+ .balign 4
+_0204FDBC: .word 0x021C5A6C
+_0204FDC0: .word 0x020F5838
+_0204FDC4: .word FUN_020502AC
+_0204FDC8: .word FUN_02050548
+_0204FDCC: .word FUN_02050168
+_0204FDD0: .word FUN_0205031C
+_0204FDD4: .word FUN_02050578
+_0204FDD8: .word FUN_020505E0
+_0204FDDC: .word FUN_020504D0
+_0204FDE0: .word FUN_02050610
+
+ thumb_func_start FUN_0204FDE4
+FUN_0204FDE4: ; 0x0204FDE4
+ push {r4, lr}
+ ldr r0, _0204FE38 ; =0x021C5A6C
+ ldr r3, _0204FE3C ; =FUN_0205058C
+ ldr r0, [r0, #0x0]
+ ldr r2, _0204FE40 ; =FUN_020505F4
+ ldr r4, [r0, #0x34]
+ ldr r0, _0204FE44 ; =FUN_02050330
+ ldr r1, _0204FE48 ; =FUN_02050624
+ cmp r4, r0
+ bne _0204FE04
+ ldr r0, _0204FE4C ; =FUN_02050338
+ mov r1, #0x0
+ bl FUN_02050094
+ mov r0, #0x1
+ pop {r4, pc}
+_0204FE04:
+ cmp r3, r4
+ bne _0204FE14
+ ldr r0, _0204FE50 ; =FUN_02050594
+ mov r1, #0x0
+ bl FUN_02050094
+ mov r0, #0x1
+ pop {r4, pc}
+_0204FE14:
+ cmp r2, r4
+ bne _0204FE24
+ ldr r0, _0204FE54 ; =FUN_020505F8
+ mov r1, #0x0
+ bl FUN_02050094
+ mov r0, #0x1
+ pop {r4, pc}
+_0204FE24:
+ cmp r1, r4
+ bne _0204FE34
+ ldr r0, _0204FE58 ; =FUN_02050628
+ mov r1, #0x0
+ bl FUN_02050094
+ mov r0, #0x1
+ pop {r4, pc}
+_0204FE34:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+_0204FE38: .word 0x021C5A6C
+_0204FE3C: .word FUN_0205058C
+_0204FE40: .word FUN_020505F4
+_0204FE44: .word FUN_02050330
+_0204FE48: .word FUN_02050624
+_0204FE4C: .word FUN_02050338
+_0204FE50: .word FUN_02050594
+_0204FE54: .word FUN_020505F8
+_0204FE58: .word FUN_02050628
+
+ thumb_func_start FUN_0204FE5C
+FUN_0204FE5C: ; 0x0204FE5C
+ push {r3-r4}
+ sub sp, #0x38
+ ldr r4, _0204FEA8 ; =0x020F5848
+ add r3, sp, #0x0
+ mov r2, #0x7
+_0204FE66:
+ ldmia r4!, {r0-r1}
+ stmia r3!, {r0-r1}
+ sub r2, r2, #0x1
+ bne _0204FE66
+ ldr r0, _0204FEAC ; =0x021C5A6C
+ ldr r0, [r0, #0x0]
+ ldr r1, [r0, #0x34]
+ cmp r0, #0x0
+ bne _0204FE80
+ add sp, #0x38
+ mov r0, #0x0
+ pop {r3-r4}
+ bx lr
+_0204FE80:
+ ldr r0, [sp, #0x0]
+ cmp r0, #0x0
+ beq _0204FE9E
+ add r2, sp, #0x0
+_0204FE88:
+ ldr r0, [r2, #0x0]
+ cmp r1, r0
+ bne _0204FE96
+ add sp, #0x38
+ mov r0, #0x1
+ pop {r3-r4}
+ bx lr
+_0204FE96:
+ add r2, r2, #0x4
+ ldr r0, [r2, #0x0]
+ cmp r0, #0x0
+ bne _0204FE88
+_0204FE9E:
+ mov r0, #0x0
+ add sp, #0x38
+ pop {r3-r4}
+ bx lr
+ nop
+_0204FEA8: .word 0x020F5848
+_0204FEAC: .word 0x021C5A6C
+
+ thumb_func_start FUN_0204FEB0
+FUN_0204FEB0: ; 0x0204FEB0
+ push {r3-r6, lr}
+ sub sp, #0x4
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_02030F40
+ cmp r0, #0x0
+ bne _0204FEE8
+ add r0, r5, #0x0
+ bl FUN_020377AC
+ mov r1, #0x0
+ add r3, r5, #0x0
+ str r1, [sp, #0x0]
+ add r3, #0xac
+ ldr r3, [r3, #0x0]
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_02031948
+ add r0, r5, #0x0
+ bl FUN_0204FBB0
+ ldr r0, _0204FEEC ; =FUN_02050640
+ mov r1, #0x0
+ bl FUN_02050094
+_0204FEE8:
+ add sp, #0x4
+ pop {r3-r6, pc}
+ .balign 4
+_0204FEEC: .word FUN_02050640
+
+ thumb_func_start FUN_0204FEF0
+FUN_0204FEF0: ; 0x0204FEF0
+ push {r3-r6, lr}
+ sub sp, #0x4
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_02030F40
+ cmp r0, #0x0
+ bne _0204FF28
+ add r0, r5, #0x0
+ bl FUN_020377AC
+ mov r1, #0x0
+ add r3, r5, #0x0
+ str r1, [sp, #0x0]
+ add r3, #0xac
+ ldr r3, [r3, #0x0]
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_02031990
+ add r0, r5, #0x0
+ bl FUN_0204FBB0
+ ldr r0, _0204FF2C ; =FUN_02050668
+ mov r1, #0x0
+ bl FUN_02050094
+_0204FF28:
+ add sp, #0x4
+ pop {r3-r6, pc}
+ .balign 4
+_0204FF2C: .word FUN_02050668
+
+ thumb_func_start FUN_0204FF30
+FUN_0204FF30: ; 0x0204FF30
+ ldr r1, _0204FF40 ; =0x021C5A6C
+ ldr r3, _0204FF44 ; =FUN_02050094
+ ldr r1, [r1, #0x0]
+ add r1, #0x3e
+ strb r0, [r1, #0x0]
+ ldr r0, _0204FF48 ; =FUN_02050688
+ mov r1, #0x0
+ bx r3
+ .balign 4
+_0204FF40: .word 0x021C5A6C
+_0204FF44: .word FUN_02050094
+_0204FF48: .word FUN_02050688
+
+ thumb_func_start FUN_0204FF4C
+FUN_0204FF4C: ; 0x0204FF4C
+ ldr r3, _0204FF54 ; =FUN_02050094
+ ldr r0, _0204FF58 ; =FUN_02050BBC
+ mov r1, #0x0
+ bx r3
+ .balign 4
+_0204FF54: .word FUN_02050094
+_0204FF58: .word FUN_02050BBC
+
+ thumb_func_start FUN_0204FF5C
+FUN_0204FF5C: ; 0x0204FF5C
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r4, r0, #0x0
+ mov r0, #0x0
+ add r1, r0, #0x0
+ bl FUN_0200E3BC
+ mov r0, #0x1
+ mov r1, #0x0
+ bl FUN_0200E3BC
+ mov r0, #0x1
+ add r1, r0, #0x0
+ bl FUN_020334E8
+ bl FUN_02031810
+ cmp r0, #0x0
+ beq _02050014
+ ldr r0, _02050018 ; =0x021C5A6C
+ ldr r1, [r0, #0x0]
+ cmp r1, #0x0
+ bne _0204FF9C
+ add r0, r4, #0x0
+ bl FUN_0204FBB0
+ ldr r0, _02050018 ; =0x021C5A6C
+ mov r1, #0x1
+ ldr r0, [r0, #0x0]
+ add r0, #0x42
+ strb r1, [r0, #0x0]
+ b _0204FFA2
+_0204FF9C:
+ mov r0, #0x0
+ add r1, #0x42
+ strb r0, [r1, #0x0]
+_0204FFA2:
+ ldr r0, _02050018 ; =0x021C5A6C
+ mov r1, #0x0
+ ldr r0, [r0, #0x0]
+ add r0, #0x43
+ strb r1, [r0, #0x0]
+ bl FUN_02031190
+ str r0, [sp, #0x8]
+ bl FUN_02031190
+ bl FUN_0202DFA4
+ mov r4, #0x0
+ bl FUN_02030F20
+ cmp r0, #0x0
+ ble _0204FFEA
+ ldr r6, _02050018 ; =0x021C5A6C
+ add r5, r4, #0x0
+ add r7, r4, #0x0
+_0204FFCA:
+ ldr r0, [r6, #0x0]
+ ldr r0, [r0, r5]
+ cmp r0, #0x0
+ bne _0204FFDE
+ ldr r1, _0205001C ; =0x0000066C
+ add r0, r7, #0x0
+ bl FUN_02016998
+ ldr r1, [r6, #0x0]
+ str r0, [r1, r5]
+_0204FFDE:
+ add r5, r5, #0x4
+ add r4, r4, #0x1
+ bl FUN_02030F20
+ cmp r4, r0
+ blt _0204FFCA
+_0204FFEA:
+ ldr r0, _02050018 ; =0x021C5A6C
+ mov r3, #0xff
+ ldr r1, [r0, #0x0]
+ ldr r0, [r1, #0x18]
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x8]
+ lsl r0, r0, #0x2
+ ldr r0, [r1, r0]
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ add r1, r0, #0x0
+ add r2, r0, #0x0
+ bl FUN_02064E90
+ mov r0, #0x5f
+ bl FUN_02031588
+ ldr r0, _02050020 ; =FUN_02050C14
+ mov r1, #0x0
+ bl FUN_02050094
+_02050014:
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+_02050018: .word 0x021C5A6C
+_0205001C: .word 0x0000066C
+_02050020: .word FUN_02050C14
+
+ thumb_func_start FUN_02050024
+FUN_02050024: ; 0x02050024
+ push {r3, lr}
+ ldr r0, _02050040 ; =0x021C5A6C
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _0205003E
+ mov r0, #0x0
+ add r1, r0, #0x0
+ bl FUN_020334E8
+ ldr r0, _02050044 ; =FUN_02050DB0
+ mov r1, #0x5
+ bl FUN_02050094
+_0205003E:
+ pop {r3, pc}
+ .balign 4
+_02050040: .word 0x021C5A6C
+_02050044: .word FUN_02050DB0
+
+ thumb_func_start FUN_02050048
+FUN_02050048: ; 0x02050048
+ push {r3, lr}
+ ldr r0, _02050064 ; =0x021C5A6C
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _02050060
+ mov r0, #0x5b
+ bl FUN_02031588
+ ldr r0, _02050068 ; =FUN_02050D88
+ mov r1, #0x5
+ bl FUN_02050094
+_02050060:
+ pop {r3, pc}
+ nop
+_02050064: .word 0x021C5A6C
+_02050068: .word FUN_02050D88
+
+ thumb_func_start FUN_0205006C
+FUN_0205006C: ; 0x0205006C
+ push {r3, lr}
+ ldr r1, _02050090 ; =0x021C5A6C
+ ldr r2, [r1, #0x0]
+ cmp r2, #0x0
+ bne _0205007C
+ bl FUN_0200CAB4
+ pop {r3, pc}
+_0205007C:
+ ldr r1, [r2, #0x34]
+ cmp r1, #0x0
+ beq _0205008C
+ add r2, #0x40
+ ldrb r0, [r2, #0x0]
+ cmp r0, #0x0
+ bne _0205008C
+ blx r1
+_0205008C:
+ pop {r3, pc}
+ nop
+_02050090: .word 0x021C5A6C
+
+ thumb_func_start FUN_02050094
+FUN_02050094: ; 0x02050094
+ ldr r2, _020500A0 ; =0x021C5A6C
+ ldr r3, [r2, #0x0]
+ str r0, [r3, #0x34]
+ ldr r0, [r2, #0x0]
+ strh r1, [r0, #0x3c]
+ bx lr
+ .balign 4
+_020500A0: .word 0x021C5A6C
+
+ thumb_func_start FUN_020500A4
+FUN_020500A4: ; 0x020500A4
+ push {r3, lr}
+ ldr r0, _02050108 ; =0x021C5A6C
+ ldr r1, [r0, #0x0]
+ ldrh r0, [r1, #0x3c]
+ cmp r0, #0x0
+ beq _020500B6
+ sub r0, r0, #0x1
+ strh r0, [r1, #0x3c]
+ pop {r3, pc}
+_020500B6:
+ bl FUN_02030F40
+ cmp r0, #0x0
+ beq _02050104
+ ldr r0, _02050108 ; =0x021C5A6C
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x18]
+ bl FUN_0223E1E0
+ bl FUN_0202DBE0
+ mov r0, #0x0
+ bl FUN_0204D168
+ bl FUN_0223EF7C
+ bl FUN_02245FA0
+ ldr r0, _02050108 ; =0x021C5A6C
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x18]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205F194
+ cmp r0, #0x0
+ bne _020500F8
+ ldr r0, _0205010C ; =FUN_02050114
+ mov r1, #0x0
+ bl FUN_02050094
+ pop {r3, pc}
+_020500F8:
+ bl FUN_0204F80C
+ ldr r0, _02050110 ; =FUN_02050144
+ mov r1, #0x18
+ bl FUN_02050094
+_02050104:
+ pop {r3, pc}
+ nop
+_02050108: .word 0x021C5A6C
+_0205010C: .word FUN_02050114
+_02050110: .word FUN_02050144
+
+ thumb_func_start FUN_02050114
+FUN_02050114: ; 0x02050114
+ push {r3, lr}
+ ldr r0, _0205013C ; =0x021C5A6C
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x18]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205F194
+ cmp r0, #0x0
+ beq _0205013A
+ bl FUN_02031880
+ bl FUN_0204F80C
+ ldr r0, _02050140 ; =FUN_02050168
+ mov r1, #0x18
+ bl FUN_02050094
+_0205013A:
+ pop {r3, pc}
+ .balign 4
+_0205013C: .word 0x021C5A6C
+_02050140: .word FUN_02050168
+
+ thumb_func_start FUN_02050144
+FUN_02050144: ; 0x02050144
+ push {r3, lr}
+ ldr r0, _02050160 ; =0x021C5A6C
+ ldr r1, [r0, #0x0]
+ ldrh r0, [r1, #0x3c]
+ cmp r0, #0x0
+ beq _02050156
+ sub r0, r0, #0x1
+ strh r0, [r1, #0x3c]
+ pop {r3, pc}
+_02050156:
+ ldr r0, _02050164 ; =FUN_02050168
+ mov r1, #0x18
+ bl FUN_02050094
+ pop {r3, pc}
+ .balign 4
+_02050160: .word 0x021C5A6C
+_02050164: .word FUN_02050168
+
+ thumb_func_start FUN_02050168
+FUN_02050168: ; 0x02050168
+ push {r3, lr}
+ bl FUN_0223DFB4
+ bl FUN_0204F80C
+ bl FUN_020318C4
+ cmp r0, #0x0
+ beq _02050198
+ bl FUN_02031190
+ cmp r0, #0x0
+ bne _02050190
+ bl FUN_02245324
+ ldr r0, _0205019C ; =FUN_0205024C
+ mov r1, #0x3c
+ bl FUN_02050094
+ pop {r3, pc}
+_02050190:
+ ldr r0, _020501A0 ; =FUN_020501A4
+ mov r1, #0x78
+ bl FUN_02050094
+_02050198:
+ pop {r3, pc}
+ nop
+_0205019C: .word FUN_0205024C
+_020501A0: .word FUN_020501A4
+
+ thumb_func_start FUN_020501A4
+FUN_020501A4: ; 0x020501A4
+ push {r3, lr}
+ ldr r0, _02050240 ; =0x021C5A6C
+ ldr r1, [r0, #0x0]
+ ldrh r0, [r1, #0x3c]
+ cmp r0, #0x0
+ beq _020501B4
+ sub r0, r0, #0x1
+ strh r0, [r1, #0x3c]
+_020501B4:
+ bl FUN_0202EE44
+ cmp r0, #0x0
+ bne _020501CE
+ bl FUN_020311F0
+ cmp r0, #0x0
+ bne _020501CE
+ ldr r0, _02050240 ; =0x021C5A6C
+ ldr r0, [r0, #0x0]
+ ldrh r0, [r0, #0x3c]
+ cmp r0, #0x0
+ bne _020501DC
+_020501CE:
+ bl FUN_02031880
+ ldr r0, _02050244 ; =FUN_020504A4
+ mov r1, #0x0
+ bl FUN_02050094
+ pop {r3, pc}
+_020501DC:
+ bl FUN_02031190
+ bl FUN_02030E7C
+ cmp r0, #0x0
+ beq _0205023C
+ ldr r0, _02050240 ; =0x021C5A6C
+ ldr r1, [r0, #0x0]
+ ldrh r0, [r1, #0x3c]
+ cmp r0, #0x0
+ beq _02050202
+ sub r0, r0, #0x1
+ strh r0, [r1, #0x3c]
+ bl FUN_02030C58
+ mov r1, #0x42
+ lsl r1, r1, #0x2
+ cmp r0, r1
+ bne _0205023C
+_02050202:
+ bl FUN_0223E6B8
+ mov r0, #0x0
+ bl FUN_0204D040
+ mov r0, #0x0
+ add r1, r0, #0x0
+ add r2, r0, #0x0
+ add r3, r0, #0x0
+ bl FUN_022408FC
+ mov r0, #0x0
+ mov r1, #0x1
+ bl FUN_0223FCE8
+ mov r0, #0x0
+ bl FUN_0202DE78
+ mov r0, #0x0
+ add r1, r0, #0x0
+ add r2, r0, #0x0
+ bl FUN_0204D43C
+ bl FUN_0204F858
+ ldr r0, _02050248 ; =FUN_02050350
+ mov r1, #0xa
+ bl FUN_02050094
+_0205023C:
+ pop {r3, pc}
+ nop
+_02050240: .word 0x021C5A6C
+_02050244: .word FUN_020504A4
+_02050248: .word FUN_02050350
+
+ thumb_func_start FUN_0205024C
+FUN_0205024C: ; 0x0205024C
+ push {r3, lr}
+ bl FUN_0223DFB4
+ ldr r0, _020502A0 ; =0x021C5A6C
+ ldr r1, [r0, #0x0]
+ ldrh r0, [r1, #0x3c]
+ cmp r0, #0x0
+ beq _02050260
+ sub r0, r0, #0x1
+ strh r0, [r1, #0x3c]
+_02050260:
+ bl FUN_020311E8
+ cmp r0, #0x0
+ bne _02050272
+ ldr r0, _020502A0 ; =0x021C5A6C
+ ldr r0, [r0, #0x0]
+ ldrh r0, [r0, #0x3c]
+ cmp r0, #0x0
+ bne _0205029E
+_02050272:
+ bl FUN_0223E6B8
+ cmp r0, #0x0
+ beq _0205027E
+ bl FUN_0204F7FC
+_0205027E:
+ ldr r0, _020502A4 ; =0x02105E74
+ bl FUN_0204FBAC
+ mov r0, #0x0
+ bl FUN_0204D168
+ bl FUN_0204F930
+ bl FUN_02245FA0
+ bl FUN_0223E7FC
+ ldr r0, _020502A8 ; =FUN_020502AC
+ mov r1, #0x0
+ bl FUN_02050094
+_0205029E:
+ pop {r3, pc}
+ .balign 4
+_020502A0: .word 0x021C5A6C
+_020502A4: .word 0x02105E74
+_020502A8: .word FUN_020502AC
+
+ thumb_func_start FUN_020502AC
+FUN_020502AC: ; 0x020502AC
+ push {r3, lr}
+ bl FUN_0223DFB4
+ ldr r0, _02050314 ; =0x021C5A6C
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x18]
+ ldr r0, [r0, #0x10]
+ cmp r0, #0x0
+ bne _02050310
+ bl FUN_020311F0
+ cmp r0, #0x0
+ bne _020502E2
+ bl FUN_0202EE24
+ cmp r0, #0x0
+ beq _020502E2
+ bl FUN_02031190
+ bl FUN_02030E7C
+ cmp r0, #0x0
+ bne _02050310
+ bl FUN_02031280
+ cmp r0, #0x0
+ bne _02050310
+_020502E2:
+ mov r0, #0x0
+ bl FUN_02245358
+ bl FUN_0204F90C
+ bl FUN_02247808
+ mov r0, #0x2b
+ bl FUN_020311DC
+ bl FUN_02031190
+ mov r1, #0x1
+ bl FUN_0223FCE8
+ bl FUN_0223E6B8
+ bl FUN_020318B4
+ ldr r0, _02050318 ; =FUN_02050458
+ mov r1, #0x0
+ bl FUN_02050094
+_02050310:
+ pop {r3, pc}
+ nop
+_02050314: .word 0x021C5A6C
+_02050318: .word FUN_02050458
+
+ thumb_func_start FUN_0205031C
+FUN_0205031C: ; 0x0205031C
+ push {r3, lr}
+ bl FUN_0204CC48
+ ldr r0, _0205032C ; =FUN_02050330
+ mov r1, #0x0
+ bl FUN_02050094
+ pop {r3, pc}
+ .balign 4
+_0205032C: .word FUN_02050330
+
+ thumb_func_start FUN_02050330
+FUN_02050330: ; 0x02050330
+ ldr r3, _02050334 ; =FUN_0223DFB4
+ bx r3
+ .balign 4
+_02050334: .word FUN_0223DFB4 + 1
+
+ thumb_func_start FUN_02050338
+FUN_02050338: ; 0x02050338
+ push {r3, lr}
+ bl FUN_02245F1C
+ bl FUN_0204CC9C
+ ldr r0, _0205034C ; =FUN_020502AC
+ mov r1, #0x0
+ bl FUN_02050094
+ pop {r3, pc}
+ .balign 4
+_0205034C: .word FUN_020502AC
+
+ thumb_func_start FUN_02050350
+FUN_02050350: ; 0x02050350
+ push {r3, lr}
+ ldr r0, _020503A8 ; =0x021C5A6C
+ ldr r0, [r0, #0x0]
+ ldrh r0, [r0, #0x3c]
+ cmp r0, #0x9
+ bne _02050364
+ bl FUN_0202DBE0
+ bl FUN_0223E7FC
+_02050364:
+ ldr r0, _020503A8 ; =0x021C5A6C
+ ldr r0, [r0, #0x0]
+ ldrh r0, [r0, #0x3c]
+ cmp r0, #0x1
+ bne _02050374
+ mov r0, #0x0
+ bl FUN_0204D198
+_02050374:
+ ldr r0, _020503A8 ; =0x021C5A6C
+ ldr r1, [r0, #0x0]
+ ldrh r0, [r1, #0x3c]
+ cmp r0, #0x0
+ beq _02050384
+ sub r0, r0, #0x1
+ strh r0, [r1, #0x3c]
+ pop {r3, pc}
+_02050384:
+ bl FUN_0202DCF8
+ cmp r0, #0x0
+ beq _020503A0
+ ldr r0, _020503AC ; =0x02105E80
+ bl FUN_0204FBAC
+ bl FUN_0204F930
+ ldr r0, _020503B0 ; =FUN_020503B4
+ mov r1, #0xc8
+ bl FUN_02050094
+ pop {r3, pc}
+_020503A0:
+ bl FUN_02050548
+ pop {r3, pc}
+ nop
+_020503A8: .word 0x021C5A6C
+_020503AC: .word 0x02105E80
+_020503B0: .word FUN_020503B4
+
+ thumb_func_start FUN_020503B4
+FUN_020503B4: ; 0x020503B4
+ push {r3, lr}
+ bl FUN_0204FB00
+ cmp r0, #0x0
+ beq _020503CC
+ bl FUN_0223EF7C
+ ldr r0, _020503E8 ; =FUN_020503F0
+ mov r1, #0x0
+ bl FUN_02050094
+ pop {r3, pc}
+_020503CC:
+ bl FUN_02050548
+ ldr r0, _020503EC ; =0x021C5A6C
+ ldr r1, [r0, #0x0]
+ ldrh r0, [r1, #0x3c]
+ cmp r0, #0x0
+ beq _020503E0
+ sub r0, r0, #0x1
+ strh r0, [r1, #0x3c]
+ pop {r3, pc}
+_020503E0:
+ bl FUN_02050510
+ pop {r3, pc}
+ nop
+_020503E8: .word FUN_020503F0
+_020503EC: .word 0x021C5A6C
+
+ thumb_func_start FUN_020503F0
+FUN_020503F0: ; 0x020503F0
+ push {r3, lr}
+ bl FUN_0223F4D8
+ cmp r0, #0x0
+ beq _02050412
+ ldr r0, _02050418 ; =0x02105E94
+ bl FUN_0204FBAC
+ bl FUN_0223F4F4
+ bl FUN_02245FA0
+ ldr r0, _0205041C ; =FUN_02050420
+ mov r1, #0x0
+ bl FUN_02050094
+ pop {r3, pc}
+_02050412:
+ bl FUN_02050548
+ pop {r3, pc}
+ .balign 4
+_02050418: .word 0x02105E94
+_0205041C: .word FUN_02050420
+
+ thumb_func_start FUN_02050420
+FUN_02050420: ; 0x02050420
+ push {r3, lr}
+ bl FUN_022461A4
+ cmp r0, #0x0
+ beq _0205044A
+ ldr r0, _02050450 ; =0x02105EB0
+ bl FUN_0204FBAC
+ bl FUN_022461B8
+ mov r0, #0x1
+ bl FUN_0204D168
+ mov r0, #0x1f
+ bl FUN_020311DC
+ ldr r0, _02050454 ; =FUN_02050548
+ mov r1, #0x0
+ bl FUN_02050094
+ pop {r3, pc}
+_0205044A:
+ bl FUN_02050548
+ pop {r3, pc}
+ .balign 4
+_02050450: .word 0x02105EB0
+_02050454: .word FUN_02050548
+
+ thumb_func_start FUN_02050458
+FUN_02050458: ; 0x02050458
+ push {r3, lr}
+ bl FUN_02031280
+ cmp r0, #0x0
+ beq _02050472
+ mov r0, #0x0
+ add r1, r0, #0x0
+ bl FUN_0204EAD8
+ ldr r0, _02050474 ; =FUN_02050478
+ mov r1, #0x1e
+ bl FUN_02050094
+_02050472:
+ pop {r3, pc}
+ .balign 4
+_02050474: .word FUN_02050478
+
+ thumb_func_start FUN_02050478
+FUN_02050478: ; 0x02050478
+ push {r3, lr}
+ ldr r0, _0205049C ; =0x021C5A6C
+ ldr r1, [r0, #0x0]
+ ldrh r0, [r1, #0x3c]
+ cmp r0, #0x0
+ beq _0205048A
+ sub r0, r0, #0x1
+ strh r0, [r1, #0x3c]
+ pop {r3, pc}
+_0205048A:
+ bl FUN_02031190
+ cmp r0, #0x0
+ bne _0205049A
+ ldr r0, _020504A0 ; =FUN_020500A4
+ mov r1, #0x0
+ bl FUN_02050094
+_0205049A:
+ pop {r3, pc}
+ .balign 4
+_0205049C: .word 0x021C5A6C
+_020504A0: .word FUN_020500A4
+
+ thumb_func_start FUN_020504A4
+FUN_020504A4: ; 0x020504A4
+ push {r3, lr}
+ ldr r0, _020504C8 ; =0x021C5A6C
+ ldr r1, [r0, #0x0]
+ ldrh r0, [r1, #0x3c]
+ cmp r0, #0x0
+ beq _020504B6
+ sub r0, r0, #0x1
+ strh r0, [r1, #0x3c]
+ pop {r3, pc}
+_020504B6:
+ bl FUN_02031190
+ cmp r0, #0x0
+ bne _020504C6
+ ldr r0, _020504CC ; =FUN_020500A4
+ mov r1, #0x0
+ bl FUN_02050094
+_020504C6:
+ pop {r3, pc}
+ .balign 4
+_020504C8: .word 0x021C5A6C
+_020504CC: .word FUN_020500A4
+
+ thumb_func_start FUN_020504D0
+FUN_020504D0: ; 0x020504D0
+ ldr r3, _020504D4 ; =FUN_0223DFB4
+ bx r3
+ .balign 4
+_020504D4: .word FUN_0223DFB4 + 1
+
+ thumb_func_start FUN_020504D8
+FUN_020504D8: ; 0x020504D8
+ push {r3, lr}
+ bl FUN_02031190
+ cmp r0, #0x0
+ bne _02050506
+ ldr r0, _02050508 ; =0x021C5A6C
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x18]
+ bl FUN_0223E1E0
+ bl FUN_0202DBE0
+ mov r0, #0x0
+ bl FUN_0204D168
+ bl FUN_0223EF7C
+ bl FUN_02245FA0
+ ldr r0, _0205050C ; =FUN_020504D0
+ mov r1, #0x0
+ bl FUN_02050094
+_02050506:
+ pop {r3, pc}
+ .balign 4
+_02050508: .word 0x021C5A6C
+_0205050C: .word FUN_020504D0
+
+ thumb_func_start FUN_02050510
+FUN_02050510: ; 0x02050510
+ push {r3, lr}
+ bl FUN_02031190
+ mov r1, #0x1
+ bl FUN_0223FCE8
+ bl FUN_02031190
+ mov r1, #0x1
+ bl FUN_02247728
+ bl FUN_0223CACC
+ bl FUN_0204CEF8
+ bl FUN_0223E6B8
+ bl FUN_02031880
+ bl FUN_0204FB28
+ ldr r0, _02050544 ; =FUN_020504A4
+ mov r1, #0x0
+ bl FUN_02050094
+ pop {r3, pc}
+ .balign 4
+_02050544: .word FUN_020504A4
+
+ thumb_func_start FUN_02050548
+FUN_02050548: ; 0x02050548
+ push {r3, lr}
+ bl FUN_0223DFB4
+ bl FUN_0204F80C
+ ldr r0, _02050574 ; =0x021C5A6C
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x18]
+ ldr r0, [r0, #0x10]
+ cmp r0, #0x0
+ bne _02050572
+ bl FUN_0202EE44
+ cmp r0, #0x0
+ bne _0205056E
+ bl FUN_020311F0
+ cmp r0, #0x0
+ beq _02050572
+_0205056E:
+ bl FUN_02050510
+_02050572:
+ pop {r3, pc}
+ .balign 4
+_02050574: .word 0x021C5A6C
+
+ thumb_func_start FUN_02050578
+FUN_02050578: ; 0x02050578
+ push {r3, lr}
+ bl FUN_0204CC48
+ ldr r0, _02050588 ; =FUN_0205058C
+ mov r1, #0x0
+ bl FUN_02050094
+ pop {r3, pc}
+ .balign 4
+_02050588: .word FUN_0205058C
+
+ thumb_func_start FUN_0205058C
+FUN_0205058C: ; 0x0205058C
+ ldr r3, _02050590 ; =0x02247831
+ bx r3
+ .balign 4
+_02050590: .word 0x02247831
+
+ thumb_func_start FUN_02050594
+FUN_02050594: ; 0x02050594
+ push {r3, lr}
+ bl FUN_02245F1C
+ bl FUN_0204CC9C
+ bl FUN_0202EE44
+ cmp r0, #0x0
+ bne _020505AE
+ bl FUN_020311F0
+ cmp r0, #0x0
+ beq _020505CC
+_020505AE:
+ bl FUN_022452A4
+ bl FUN_0204CEF8
+ bl FUN_0223E6B8
+ bl FUN_02031880
+ bl FUN_0204FB28
+ ldr r0, _020505D8 ; =FUN_020504A4
+ mov r1, #0x0
+ bl FUN_02050094
+ pop {r3, pc}
+_020505CC:
+ ldr r0, _020505DC ; =FUN_02050548
+ mov r1, #0x0
+ bl FUN_02050094
+ pop {r3, pc}
+ nop
+_020505D8: .word FUN_020504A4
+_020505DC: .word FUN_02050548
+
+ thumb_func_start FUN_020505E0
+FUN_020505E0: ; 0x020505E0
+ push {r3, lr}
+ bl FUN_0204CC48
+ ldr r0, _020505F0 ; =FUN_020505F4
+ mov r1, #0x0
+ bl FUN_02050094
+ pop {r3, pc}
+ .balign 4
+_020505F0: .word FUN_020505F4
+
+ thumb_func_start FUN_020505F4
+FUN_020505F4: ; 0x020505F4
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020505F8
+FUN_020505F8: ; 0x020505F8
+ push {r3, lr}
+ bl FUN_02245F1C
+ bl FUN_0204CC9C
+ ldr r0, _0205060C ; =FUN_02050168
+ mov r1, #0x0
+ bl FUN_02050094
+ pop {r3, pc}
+ .balign 4
+_0205060C: .word FUN_02050168
+
+ thumb_func_start FUN_02050610
+FUN_02050610: ; 0x02050610
+ push {r3, lr}
+ bl FUN_0204CF24
+ ldr r0, _02050620 ; =FUN_02050624
+ mov r1, #0x0
+ bl FUN_02050094
+ pop {r3, pc}
+ .balign 4
+_02050620: .word FUN_02050624
+
+ thumb_func_start FUN_02050624
+FUN_02050624: ; 0x02050624
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02050628
+FUN_02050628: ; 0x02050628
+ push {r3, lr}
+ bl FUN_02245F1C
+ bl FUN_0204CC9C
+ ldr r0, _0205063C ; =FUN_020504D0
+ mov r1, #0x0
+ bl FUN_02050094
+ pop {r3, pc}
+ .balign 4
+_0205063C: .word FUN_020504D0
+
+ thumb_func_start FUN_02050640
+FUN_02050640: ; 0x02050640
+ push {r3, lr}
+ bl FUN_02031190
+ bl FUN_02030E7C
+ cmp r0, #0x0
+ beq _0205065E
+ bl FUN_02240834
+ bl FUN_0202DBE0
+ ldr r0, _02050660 ; =FUN_02050664
+ mov r1, #0x0
+ bl FUN_02050094
+_0205065E:
+ pop {r3, pc}
+ .balign 4
+_02050660: .word FUN_02050664
+
+ thumb_func_start FUN_02050664
+FUN_02050664: ; 0x02050664
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02050668
+FUN_02050668: ; 0x02050668
+ push {r3, lr}
+ bl FUN_0202E4C8
+ cmp r0, #0x0
+ beq _0205067E
+ bl FUN_022407CC
+ ldr r0, _02050680 ; =FUN_02050684
+ mov r1, #0x0
+ bl FUN_02050094
+_0205067E:
+ pop {r3, pc}
+ .balign 4
+_02050680: .word FUN_02050684
+
+ thumb_func_start FUN_02050684
+FUN_02050684: ; 0x02050684
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02050688
+FUN_02050688: ; 0x02050688
+ push {r3, lr}
+ ldr r0, _020506A0 ; =0x021C5A6C
+ ldr r0, [r0, #0x0]
+ add r0, #0x3e
+ ldrb r0, [r0, #0x0]
+ bl FUN_020319D8
+ ldr r0, _020506A4 ; =FUN_020506A8
+ mov r1, #0x0
+ bl FUN_02050094
+ pop {r3, pc}
+ .balign 4
+_020506A0: .word 0x021C5A6C
+_020506A4: .word FUN_020506A8
+
+ thumb_func_start FUN_020506A8
+FUN_020506A8: ; 0x020506A8
+ push {r3, lr}
+ bl FUN_02031A2C
+ cmp r0, #0x0
+ beq _020506BE
+ bl FUN_0202DBE0
+ ldr r0, _020506C0 ; =FUN_020506C4
+ mov r1, #0x0
+ bl FUN_02050094
+_020506BE:
+ pop {r3, pc}
+ .balign 4
+_020506C0: .word FUN_020506C4
+
+ thumb_func_start FUN_020506C4
+FUN_020506C4: ; 0x020506C4
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020506C8
+FUN_020506C8: ; 0x020506C8
+ push {r3, lr}
+ mov r0, #0x62
+ bl FUN_020315D8
+ cmp r0, #0x0
+ beq _02050704
+ bl FUN_0204D320
+ add r1, r0, #0x0
+ mov r0, #0xf
+ bl FUN_02016998
+ ldr r1, _02050720 ; =0x021C5A6C
+ mov r2, #0x0
+ ldr r1, [r1, #0x0]
+ ldr r1, [r1, #0x18]
+ bl FUN_0204CB20
+ bl FUN_0204F80C
+ bl FUN_02030FC8
+ mov r0, #0x5c
+ bl FUN_02031588
+ ldr r0, _02050724 ; =FUN_02050728
+ mov r1, #0x0
+ bl FUN_02050094
+ pop {r3, pc}
+_02050704:
+ ldr r0, _02050720 ; =0x021C5A6C
+ ldr r1, [r0, #0x0]
+ ldrh r0, [r1, #0x3c]
+ cmp r0, #0x0
+ beq _02050714
+ sub r0, r0, #0x1
+ strh r0, [r1, #0x3c]
+ pop {r3, pc}
+_02050714:
+ mov r0, #0x1e
+ strh r0, [r1, #0x3c]
+ mov r0, #0x62
+ bl FUN_02031588
+ pop {r3, pc}
+ .balign 4
+_02050720: .word 0x021C5A6C
+_02050724: .word FUN_02050728
+
+ thumb_func_start FUN_02050728
+FUN_02050728: ; 0x02050728
+ push {lr}
+ sub sp, #0xc
+ bl FUN_02031190
+ cmp r0, #0x0
+ bne _02050738
+ bl FUN_0202DDE8
+_02050738:
+ mov r0, #0x5c
+ bl FUN_020315D8
+ cmp r0, #0x0
+ beq _02050776
+ mov r0, #0x6
+ str r0, [sp, #0x0]
+ mov r1, #0x1
+ str r1, [sp, #0x4]
+ mov r0, #0x4
+ str r0, [sp, #0x8]
+ mov r0, #0x0
+ add r2, r1, #0x0
+ add r3, r0, #0x0
+ bl FUN_0200E1D0
+ mov r0, #0x0
+ bl FUN_0200E388
+ mov r0, #0x1
+ bl FUN_0200E388
+ bl FUN_0204CC9C
+ mov r0, #0x0
+ bl FUN_0204D168
+ ldr r0, _0205077C ; =FUN_020507B4
+ mov r1, #0x1
+ bl FUN_02050094
+_02050776:
+ add sp, #0xc
+ pop {pc}
+ nop
+_0205077C: .word FUN_020507B4
+
+ thumb_func_start FUN_02050780
+FUN_02050780: ; 0x02050780
+ push {r3, lr}
+ ldr r0, _020507AC ; =0x021C5A6C
+ ldr r1, [r0, #0x0]
+ ldrh r0, [r1, #0x3c]
+ cmp r0, #0x0
+ beq _02050792
+ sub r0, r0, #0x1
+ strh r0, [r1, #0x3c]
+ pop {r3, pc}
+_02050792:
+ mov r0, #0x1e
+ bl FUN_020315D8
+ cmp r0, #0x0
+ beq _020507A8
+ bl FUN_02030FA8
+ ldr r0, _020507B0 ; =FUN_02050930
+ mov r1, #0x0
+ bl FUN_02050094
+_020507A8:
+ pop {r3, pc}
+ nop
+_020507AC: .word 0x021C5A6C
+_020507B0: .word FUN_02050930
+
+ thumb_func_start FUN_020507B4
+FUN_020507B4: ; 0x020507B4
+ push {r3, lr}
+ ldr r0, _020507F0 ; =0x021C5A6C
+ ldr r1, [r0, #0x0]
+ ldrh r0, [r1, #0x3c]
+ cmp r0, #0x0
+ beq _020507C6
+ sub r0, r0, #0x1
+ strh r0, [r1, #0x3c]
+ pop {r3, pc}
+_020507C6:
+ bl FUN_02031190
+ cmp r0, #0x0
+ bne _020507DE
+ bl FUN_0204ED08
+ cmp r0, #0x0
+ beq _020507EC
+ mov r0, #0x1e
+ bl FUN_02031588
+ b _020507E4
+_020507DE:
+ mov r0, #0x1e
+ bl FUN_02031588
+_020507E4:
+ ldr r0, _020507F4 ; =FUN_02050780
+ mov r1, #0x14
+ bl FUN_02050094
+_020507EC:
+ pop {r3, pc}
+ nop
+_020507F0: .word 0x021C5A6C
+_020507F4: .word FUN_02050780
+
+ thumb_func_start FUN_020507F8
+FUN_020507F8: ; 0x020507F8
+ push {r3, lr}
+ mov r0, #0x62
+ bl FUN_020315D8
+ cmp r0, #0x0
+ beq _02050830
+ bl FUN_0204D320
+ add r1, r0, #0x0
+ mov r0, #0xf
+ bl FUN_02016998
+ ldr r1, _0205084C ; =0x021C5A6C
+ mov r2, #0x0
+ ldr r1, [r1, #0x0]
+ ldr r1, [r1, #0x18]
+ bl FUN_0204CB20
+ bl FUN_0204F80C
+ mov r0, #0x5c
+ bl FUN_02031588
+ ldr r0, _02050850 ; =FUN_02050854
+ mov r1, #0x0
+ bl FUN_02050094
+ pop {r3, pc}
+_02050830:
+ ldr r0, _0205084C ; =0x021C5A6C
+ ldr r1, [r0, #0x0]
+ ldrh r0, [r1, #0x3c]
+ cmp r0, #0x0
+ beq _02050840
+ sub r0, r0, #0x1
+ strh r0, [r1, #0x3c]
+ pop {r3, pc}
+_02050840:
+ mov r0, #0x1e
+ strh r0, [r1, #0x3c]
+ mov r0, #0x62
+ bl FUN_02031588
+ pop {r3, pc}
+ .balign 4
+_0205084C: .word 0x021C5A6C
+_02050850: .word FUN_02050854
+
+ thumb_func_start FUN_02050854
+FUN_02050854: ; 0x02050854
+ push {r3, lr}
+ sub sp, #0x10
+ bl FUN_02031190
+ cmp r0, #0x0
+ bne _02050864
+ bl FUN_0202DDE8
+_02050864:
+ mov r0, #0x5c
+ bl FUN_020315D8
+ cmp r0, #0x0
+ beq _020508B0
+ bl FUN_0204CC9C
+ mov r0, #0x0
+ bl FUN_0204D168
+ mov r1, #0x1
+ add r0, sp, #0xc
+ strb r1, [r0, #0x0]
+ mov r0, #0x5e
+ add r1, sp, #0xc
+ bl FUN_020311D0
+ mov r0, #0x6
+ str r0, [sp, #0x0]
+ mov r1, #0x1
+ str r1, [sp, #0x4]
+ mov r0, #0x4
+ str r0, [sp, #0x8]
+ mov r0, #0x0
+ add r2, r1, #0x0
+ add r3, r0, #0x0
+ bl FUN_0200E1D0
+ mov r0, #0x0
+ bl FUN_0200E388
+ mov r0, #0x1
+ bl FUN_0200E388
+ ldr r0, _020508B4 ; =FUN_02050A14
+ mov r1, #0x0
+ bl FUN_02050094
+_020508B0:
+ add sp, #0x10
+ pop {r3, pc}
+ .balign 4
+_020508B4: .word FUN_02050A14
+
+ thumb_func_start FUN_020508B8
+FUN_020508B8: ; 0x020508B8
+ push {r3-r7, lr}
+ mov r7, #0x0
+ bl FUN_02030F20
+ cmp r0, #0x0
+ ble _02050916
+ ldr r6, _02050928 ; =0x021C5A6C
+_020508C6:
+ bl FUN_02031190
+ cmp r7, r0
+ beq _0205090C
+ add r0, r7, #0x0
+ bl FUN_020315FC
+ cmp r0, #0x5e
+ bne _0205090C
+ ldr r0, [r6, #0x0]
+ ldr r0, [r0, #0x18]
+ ldr r0, [r0, #0x10]
+ cmp r0, #0x0
+ bne _0205090C
+ mov r4, #0x0
+ add r5, r4, #0x0
+_020508E6:
+ ldr r0, [r6, #0x0]
+ ldr r0, [r0, r5]
+ cmp r0, #0x0
+ beq _020508F8
+ bl FUN_02016A18
+ ldr r1, [r6, #0x0]
+ mov r0, #0x0
+ str r0, [r1, r5]
+_020508F8:
+ add r4, r4, #0x1
+ add r5, r5, #0x4
+ cmp r4, #0x4
+ blt _020508E6
+ ldr r0, [r6, #0x0]
+ ldr r1, _0205092C ; =0x0000238E
+ ldr r0, [r0, #0x18]
+ mov r2, #0x0
+ bl FUN_02038C78
+_0205090C:
+ add r7, r7, #0x1
+ bl FUN_02030F20
+ cmp r7, r0
+ blt _020508C6
+_02050916:
+ ldr r1, _02050928 ; =0x021C5A6C
+ mov r0, #0x4
+ ldr r1, [r1, #0x0]
+ ldr r1, [r1, #0x18]
+ ldr r1, [r1, #0x8]
+ bl FUN_020335F0
+ pop {r3-r7, pc}
+ nop
+_02050928: .word 0x021C5A6C
+_0205092C: .word 0x0000238E
+
+ thumb_func_start FUN_02050930
+FUN_02050930: ; 0x02050930
+ push {r3, lr}
+ bl FUN_0204EB44
+ cmp r0, #0x0
+ bne _0205095A
+ ldr r0, _02050960 ; =0x021C5A6C
+ mov r1, #0x0
+ ldr r0, [r0, #0x0]
+ add r0, #0x43
+ strb r1, [r0, #0x0]
+ mov r1, #0x1
+ add r0, sp, #0x0
+ strb r1, [r0, #0x0]
+ mov r0, #0x5e
+ add r1, sp, #0x0
+ bl FUN_020311D0
+ ldr r0, _02050964 ; =FUN_02050A14
+ mov r1, #0x0
+ bl FUN_02050094
+_0205095A:
+ bl FUN_020508B8
+ pop {r3, pc}
+ .balign 4
+_02050960: .word 0x021C5A6C
+_02050964: .word FUN_02050A14
+
+ thumb_func_start FUN_02050968
+FUN_02050968: ; 0x02050968
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ beq _02050986
+ mov r0, #0xb
+ bl FUN_0206B8AC
+ ldr r1, _020509AC ; =0x021C5A6C
+ ldr r2, [r1, #0x0]
+ str r0, [r2, #0x44]
+ ldr r1, [r1, #0x0]
+ add r0, r4, #0x0
+ ldr r1, [r1, #0x44]
+ bl FUN_0206BAD0
+_02050986:
+ cmp r5, #0x0
+ beq _02050994
+ ldr r0, _020509B0 ; =FUN_02050B8C
+ mov r1, #0x3
+ bl FUN_02050094
+ pop {r3-r5, pc}
+_02050994:
+ mov r1, #0x3
+ add r0, sp, #0x0
+ strb r1, [r0, #0x0]
+ mov r0, #0x5e
+ add r1, sp, #0x0
+ bl FUN_020311D0
+ ldr r0, _020509B4 ; =FUN_02050930
+ mov r1, #0x0
+ bl FUN_02050094
+ pop {r3-r5, pc}
+ .balign 4
+_020509AC: .word 0x021C5A6C
+_020509B0: .word FUN_02050B8C
+_020509B4: .word FUN_02050930
+
+ thumb_func_start FUN_020509B8
+FUN_020509B8: ; 0x020509B8
+ ldr r3, _020509C0 ; =FUN_02050094
+ ldr r0, _020509C4 ; =FUN_02050930
+ mov r1, #0x0
+ bx r3
+ .balign 4
+_020509C0: .word FUN_02050094
+_020509C4: .word FUN_02050930
+
+ thumb_func_start FUN_020509C8
+FUN_020509C8: ; 0x020509C8
+ push {r3, lr}
+ bl FUN_02031438
+ cmp r0, #0x0
+ bne _02050A06
+ bl FUN_02031190
+ bl FUN_0204F6B4
+ cmp r0, #0x0
+ bne _02050A06
+ ldr r0, _02050A08 ; =0x021C5A6C
+ ldr r1, [r0, #0x0]
+ ldrh r0, [r1, #0x3c]
+ cmp r0, #0x0
+ beq _020509EE
+ sub r0, r0, #0x1
+ strh r0, [r1, #0x3c]
+ pop {r3, pc}
+_020509EE:
+ bl FUN_0204F7E4
+ ldr r0, _02050A08 ; =0x021C5A6C
+ ldr r1, _02050A0C ; =FUN_02050968
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x18]
+ bl FUN_02051880
+ ldr r0, _02050A10 ; =FUN_020509B8
+ mov r1, #0x0
+ bl FUN_02050094
+_02050A06:
+ pop {r3, pc}
+ .balign 4
+_02050A08: .word 0x021C5A6C
+_02050A0C: .word FUN_02050968
+_02050A10: .word FUN_020509B8
+
+ thumb_func_start FUN_02050A14
+FUN_02050A14: ; 0x02050A14
+ push {r3, lr}
+ ldr r0, _02050A40 ; =0x021C5A6C
+ ldr r0, [r0, #0x0]
+ add r0, #0x43
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _02050A38
+ ldr r0, _02050A44 ; =FUN_020509C8
+ mov r1, #0x5
+ bl FUN_02050094
+ mov r1, #0x0
+ add r0, sp, #0x0
+ strb r1, [r0, #0x0]
+ mov r0, #0x5e
+ add r1, sp, #0x0
+ bl FUN_020311D0
+_02050A38:
+ bl FUN_020508B8
+ pop {r3, pc}
+ nop
+_02050A40: .word 0x021C5A6C
+_02050A44: .word FUN_020509C8
+
+ thumb_func_start FUN_02050A48
+FUN_02050A48: ; 0x02050A48
+ push {r4, lr}
+ add r4, r2, #0x0
+ bl FUN_02031190
+ ldrb r1, [r4, #0x0]
+ cmp r1, r0
+ bne _02050A60
+ ldr r0, _02050A64 ; =0x021C5A6C
+ mov r1, #0x1
+ ldr r0, [r0, #0x0]
+ add r0, #0x43
+ strb r1, [r0, #0x0]
+_02050A60:
+ pop {r4, pc}
+ nop
+_02050A64: .word 0x021C5A6C
+
+ thumb_func_start FUN_02050A68
+FUN_02050A68: ; 0x02050A68
+ ldr r0, _02050A88 ; =0x021C5A6C
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _02050A82
+ ldr r1, [r0, #0x34]
+ ldr r0, _02050A8C ; =FUN_02050A14
+ cmp r1, r0
+ beq _02050A7E
+ ldr r0, _02050A90 ; =FUN_02050930
+ cmp r1, r0
+ bne _02050A82
+_02050A7E:
+ mov r0, #0x1
+ bx lr
+_02050A82:
+ mov r0, #0x0
+ bx lr
+ nop
+_02050A88: .word 0x021C5A6C
+_02050A8C: .word FUN_02050A14
+_02050A90: .word FUN_02050930
+
+ thumb_func_start FUN_02050A94
+FUN_02050A94: ; 0x02050A94
+ push {r4, lr}
+ sub sp, #0x8
+ ldr r0, _02050B00 ; =0x021C5A6C
+ ldr r1, [r0, #0x0]
+ ldrh r0, [r1, #0x3c]
+ cmp r0, #0x0
+ beq _02050AAA
+ sub r0, r0, #0x1
+ strh r0, [r1, #0x3c]
+ add sp, #0x8
+ pop {r4, pc}
+_02050AAA:
+ mov r4, #0x5
+ bl FUN_02033534
+ cmp r0, #0x2
+ beq _02050AC0
+ cmp r0, #0x4
+ beq _02050ABC
+ cmp r0, #0x5
+ bne _02050AC2
+_02050ABC:
+ mov r4, #0xf
+ b _02050AC2
+_02050AC0:
+ mov r4, #0x7
+_02050AC2:
+ add r0, sp, #0x0
+ bl FUN_02033578
+ ldr r0, _02050B00 ; =0x021C5A6C
+ ldr r0, [r0, #0x0]
+ ldr r1, [r0, #0x44]
+ ldr r0, [r0, #0x18]
+ cmp r1, #0x0
+ bne _02050ADE
+ add r1, sp, #0x0
+ add r2, r4, #0x0
+ bl FUN_0204726C
+ b _02050AF6
+_02050ADE:
+ add r2, r4, #0x0
+ bl FUN_020472B0
+ ldr r0, _02050B00 ; =0x021C5A6C
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x44]
+ bl FUN_02016A18
+ ldr r0, _02050B00 ; =0x021C5A6C
+ mov r1, #0x0
+ ldr r0, [r0, #0x0]
+ str r1, [r0, #0x44]
+_02050AF6:
+ bl FUN_0204FC10
+ add sp, #0x8
+ pop {r4, pc}
+ nop
+_02050B00: .word 0x021C5A6C
+
+ thumb_func_start FUN_02050B04
+FUN_02050B04: ; 0x02050B04
+ push {r3, lr}
+ bl FUN_0202FA48
+ cmp r0, #0x0
+ beq _02050B3E
+ ldr r0, _02050B40 ; =0x021C5A6C
+ ldr r1, [r0, #0x0]
+ ldrh r0, [r1, #0x3c]
+ cmp r0, #0x0
+ beq _02050B1C
+ sub r0, r0, #0x1
+ strh r0, [r1, #0x3c]
+_02050B1C:
+ ldr r0, _02050B40 ; =0x021C5A6C
+ ldr r0, [r0, #0x0]
+ ldrh r0, [r0, #0x3c]
+ cmp r0, #0x5a
+ bne _02050B2C
+ mov r0, #0x4
+ bl FUN_02031588
+_02050B2C:
+ mov r0, #0x4
+ bl FUN_020315D8
+ cmp r0, #0x0
+ beq _02050B3E
+ ldr r0, _02050B44 ; =FUN_02050A94
+ mov r1, #0x0
+ bl FUN_02050094
+_02050B3E:
+ pop {r3, pc}
+ .balign 4
+_02050B40: .word 0x021C5A6C
+_02050B44: .word FUN_02050A94
+
+ thumb_func_start FUN_02050B48
+FUN_02050B48: ; 0x02050B48
+ push {r3, lr}
+ ldr r0, _02050B68 ; =0x021C5A6C
+ ldr r1, [r0, #0x0]
+ ldrh r0, [r1, #0x3c]
+ cmp r0, #0x0
+ beq _02050B5A
+ sub r0, r0, #0x1
+ strh r0, [r1, #0x3c]
+ pop {r3, pc}
+_02050B5A:
+ bl FUN_0202FA10
+ ldr r0, _02050B6C ; =FUN_02050B04
+ mov r1, #0x78
+ bl FUN_02050094
+ pop {r3, pc}
+ .balign 4
+_02050B68: .word 0x021C5A6C
+_02050B6C: .word FUN_02050B04
+
+ thumb_func_start FUN_02050B70
+FUN_02050B70: ; 0x02050B70
+ push {r3, lr}
+ mov r0, #0x3
+ bl FUN_020315D8
+ cmp r0, #0x0
+ beq _02050B84
+ ldr r0, _02050B88 ; =FUN_02050B48
+ mov r1, #0x2
+ bl FUN_02050094
+_02050B84:
+ pop {r3, pc}
+ nop
+_02050B88: .word FUN_02050B48
+
+ thumb_func_start FUN_02050B8C
+FUN_02050B8C: ; 0x02050B8C
+ push {r3, lr}
+ ldr r0, _02050BB4 ; =0x021C5A6C
+ ldr r1, [r0, #0x0]
+ ldrh r0, [r1, #0x3c]
+ cmp r0, #0x0
+ beq _02050B9E
+ sub r0, r0, #0x1
+ strh r0, [r1, #0x3c]
+ pop {r3, pc}
+_02050B9E:
+ mov r0, #0x0
+ bl FUN_0204CCE0
+ mov r0, #0x3
+ bl FUN_02031588
+ ldr r0, _02050BB8 ; =FUN_02050B70
+ mov r1, #0x0
+ bl FUN_02050094
+ pop {r3, pc}
+ .balign 4
+_02050BB4: .word 0x021C5A6C
+_02050BB8: .word FUN_02050B70
+
+ thumb_func_start FUN_02050BBC
+FUN_02050BBC: ; 0x02050BBC
+ push {r3, lr}
+ bl FUN_020319F4
+ ldr r0, _02050BCC ; =FUN_02050BD0
+ mov r1, #0x2
+ bl FUN_02050094
+ pop {r3, pc}
+ .balign 4
+_02050BCC: .word FUN_02050BD0
+
+ thumb_func_start FUN_02050BD0
+FUN_02050BD0: ; 0x02050BD0
+ push {r3, lr}
+ bl FUN_0202EE0C
+ cmp r0, #0x0
+ beq _02050BE2
+ ldr r0, _02050BE4 ; =FUN_020506A8
+ mov r1, #0xa
+ bl FUN_02050094
+_02050BE2:
+ pop {r3, pc}
+ .balign 4
+_02050BE4: .word FUN_020506A8
+
+ thumb_func_start FUN_02050BE8
+FUN_02050BE8: ; 0x02050BE8
+ ldr r1, _02050BF4 ; =0x021C5A6C
+ mov r2, #0x1
+ ldr r1, [r1, #0x0]
+ add r0, r1, r0
+ strb r2, [r0, #0x10]
+ bx lr
+ .balign 4
+_02050BF4: .word 0x021C5A6C
+
+ thumb_func_start FUN_02050BF8
+FUN_02050BF8: ; 0x02050BF8
+ push {r4, lr}
+ add r4, r0, #0x0
+ cmp r4, #0x4
+ blt _02050C04
+ bl ErrorHandling
+_02050C04:
+ ldr r0, _02050C10 ; =0x021C5A6C
+ ldr r1, [r0, #0x0]
+ lsl r0, r4, #0x2
+ ldr r0, [r1, r0]
+ pop {r4, pc}
+ nop
+_02050C10: .word 0x021C5A6C
+
+ thumb_func_start FUN_02050C14
+FUN_02050C14: ; 0x02050C14
+ push {r4, lr}
+ bl FUN_02031190
+ add r4, r0, #0x0
+ mov r0, #0x5f
+ bl FUN_020315D8
+ cmp r0, #0x0
+ beq _02050C3E
+ ldr r1, _02050C40 ; =0x021C5A6C
+ mov r0, #0x58
+ ldr r2, [r1, #0x0]
+ lsl r1, r4, #0x2
+ ldr r1, [r2, r1]
+ ldr r2, _02050C44 ; =0x0000066C
+ bl FUN_02030A78
+ ldr r0, _02050C48 ; =FUN_02050C4C
+ mov r1, #0x0
+ bl FUN_02050094
+_02050C3E:
+ pop {r4, pc}
+ .balign 4
+_02050C40: .word 0x021C5A6C
+_02050C44: .word 0x0000066C
+_02050C48: .word FUN_02050C4C
+
+ thumb_func_start FUN_02050C4C
+FUN_02050C4C: ; 0x02050C4C
+ push {r3-r5, lr}
+ mov r4, #0x0
+ bl FUN_02030F20
+ cmp r0, #0x0
+ ble _02050C6E
+ ldr r5, _02050C80 ; =0x021C5A6C
+_02050C5A:
+ ldr r0, [r5, #0x0]
+ add r0, r0, r4
+ ldrb r0, [r0, #0x10]
+ cmp r0, #0x0
+ beq _02050C7C
+ add r4, r4, #0x1
+ bl FUN_02030F20
+ cmp r4, r0
+ blt _02050C5A
+_02050C6E:
+ mov r0, #0x61
+ bl FUN_02031588
+ ldr r0, _02050C84 ; =FUN_02050CF4
+ mov r1, #0x0
+ bl FUN_02050094
+_02050C7C:
+ pop {r3-r5, pc}
+ nop
+_02050C80: .word 0x021C5A6C
+_02050C84: .word FUN_02050CF4
+
+ thumb_func_start FUN_02050C88
+FUN_02050C88: ; 0x02050C88
+ push {r3, lr}
+ bl FUN_0202FA48
+ cmp r0, #0x0
+ bne _02050CC2
+ ldr r0, _02050CC4 ; =0x021C5A6C
+ ldr r1, [r0, #0x0]
+ ldrh r0, [r1, #0x3c]
+ cmp r0, #0x0
+ beq _02050CA0
+ sub r0, r0, #0x1
+ strh r0, [r1, #0x3c]
+_02050CA0:
+ ldr r0, _02050CC4 ; =0x021C5A6C
+ ldr r0, [r0, #0x0]
+ ldrh r0, [r0, #0x3c]
+ cmp r0, #0x5a
+ bne _02050CB0
+ mov r0, #0x5
+ bl FUN_02031588
+_02050CB0:
+ mov r0, #0x5
+ bl FUN_020315D8
+ cmp r0, #0x0
+ beq _02050CC2
+ ldr r0, _02050CC8 ; =FUN_02050D10
+ mov r1, #0x0
+ bl FUN_02050094
+_02050CC2:
+ pop {r3, pc}
+ .balign 4
+_02050CC4: .word 0x021C5A6C
+_02050CC8: .word FUN_02050D10
+
+ thumb_func_start FUN_02050CCC
+FUN_02050CCC: ; 0x02050CCC
+ push {r3, lr}
+ ldr r0, _02050CEC ; =0x021C5A6C
+ ldr r1, [r0, #0x0]
+ ldrh r0, [r1, #0x3c]
+ cmp r0, #0x0
+ beq _02050CDE
+ sub r0, r0, #0x1
+ strh r0, [r1, #0x3c]
+ pop {r3, pc}
+_02050CDE:
+ bl FUN_0202FA1C
+ ldr r0, _02050CF0 ; =FUN_02050C88
+ mov r1, #0x78
+ bl FUN_02050094
+ pop {r3, pc}
+ .balign 4
+_02050CEC: .word 0x021C5A6C
+_02050CF0: .word FUN_02050C88
+
+ thumb_func_start FUN_02050CF4
+FUN_02050CF4: ; 0x02050CF4
+ push {r3, lr}
+ mov r0, #0x61
+ bl FUN_020315D8
+ cmp r0, #0x0
+ beq _02050D08
+ ldr r0, _02050D0C ; =FUN_02050CCC
+ mov r1, #0x2
+ bl FUN_02050094
+_02050D08:
+ pop {r3, pc}
+ nop
+_02050D0C: .word FUN_02050CCC
+
+ thumb_func_start FUN_02050D10
+FUN_02050D10: ; 0x02050D10
+ push {r3, lr}
+ ldr r0, _02050D48 ; =0x021C5A6C
+ ldr r1, [r0, #0x0]
+ ldrh r0, [r1, #0x3c]
+ cmp r0, #0x0
+ beq _02050D22
+ sub r0, r0, #0x1
+ strh r0, [r1, #0x3c]
+ pop {r3, pc}
+_02050D22:
+ mov r0, #0x62
+ bl FUN_02031588
+ ldr r0, _02050D48 ; =0x021C5A6C
+ ldr r0, [r0, #0x0]
+ add r0, #0x42
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _02050D3E
+ ldr r0, _02050D4C ; =FUN_020506C8
+ mov r1, #0x1e
+ bl FUN_02050094
+ pop {r3, pc}
+_02050D3E:
+ ldr r0, _02050D50 ; =FUN_020507F8
+ mov r1, #0x1e
+ bl FUN_02050094
+ pop {r3, pc}
+ .balign 4
+_02050D48: .word 0x021C5A6C
+_02050D4C: .word FUN_020506C8
+_02050D50: .word FUN_020507F8
+
+ thumb_func_start FUN_02050D54
+FUN_02050D54: ; 0x02050D54
+ push {r3, lr}
+ ldr r0, _02050D84 ; =0x021C5A6C
+ ldr r1, [r0, #0x0]
+ ldrh r0, [r1, #0x3c]
+ cmp r0, #0x0
+ beq _02050D66
+ sub r0, r0, #0x1
+ strh r0, [r1, #0x3c]
+ pop {r3, pc}
+_02050D66:
+ bl FUN_0223E1A4
+ bl FUN_02031860
+ mov r0, #0x21
+ bl FUN_020168D0
+ ldr r0, _02050D84 ; =0x021C5A6C
+ mov r1, #0x0
+ ldr r0, [r0, #0x0]
+ add r0, #0x41
+ strb r1, [r0, #0x0]
+ bl FUN_0204FC10
+ pop {r3, pc}
+ .balign 4
+_02050D84: .word 0x021C5A6C
+
+ thumb_func_start FUN_02050D88
+FUN_02050D88: ; 0x02050D88
+ push {r3, lr}
+ mov r0, #0x5b
+ bl FUN_020315D8
+ cmp r0, #0x0
+ beq _02050DAA
+ mov r0, #0x0
+ add r1, r0, #0x0
+ bl FUN_020334E8
+ mov r0, #0x1
+ bl FUN_0204CCE0
+ ldr r0, _02050DAC ; =FUN_02050DC8
+ mov r1, #0x5
+ bl FUN_02050094
+_02050DAA:
+ pop {r3, pc}
+ .balign 4
+_02050DAC: .word FUN_02050DC8
+
+ thumb_func_start FUN_02050DB0
+FUN_02050DB0: ; 0x02050DB0
+ push {r3, lr}
+ mov r0, #0x1
+ bl FUN_0204CCE0
+ ldr r0, _02050DC4 ; =FUN_02050DC8
+ mov r1, #0x5
+ bl FUN_02050094
+ pop {r3, pc}
+ nop
+_02050DC4: .word FUN_02050DC8
+
+ thumb_func_start FUN_02050DC8
+FUN_02050DC8: ; 0x02050DC8
+ push {r3, lr}
+ ldr r0, _02050DE8 ; =0x021C5A6C
+ ldr r1, [r0, #0x0]
+ ldrh r0, [r1, #0x3c]
+ cmp r0, #0x0
+ beq _02050DDA
+ sub r0, r0, #0x1
+ strh r0, [r1, #0x3c]
+ pop {r3, pc}
+_02050DDA:
+ bl FUN_02031A08
+ ldr r0, _02050DEC ; =FUN_0204FC10
+ mov r1, #0x0
+ bl FUN_02050094
+ pop {r3, pc}
+ .balign 4
+_02050DE8: .word 0x021C5A6C
+_02050DEC: .word FUN_0204FC10
+
+ thumb_func_start FUN_02050DF0
+FUN_02050DF0: ; 0x02050DF0
+ push {r3, lr}
+ ldr r1, _02050E0C ; =0x021C5A6C
+ ldr r1, [r1, #0x0]
+ cmp r1, #0x0
+ beq _02050E02
+ add r1, #0x41
+ ldrb r1, [r1, #0x0]
+ cmp r1, #0x0
+ bne _02050E06
+_02050E02:
+ mov r0, #0x0
+ pop {r3, pc}
+_02050E06:
+ bl FUN_0223E2AC
+ pop {r3, pc}
+ .balign 4
+_02050E0C: .word 0x021C5A6C
+
+ thumb_func_start FUN_02050E10
+FUN_02050E10: ; 0x02050E10
+ push {r3, lr}
+ ldr r0, _02050E28 ; =0x021C5A6C
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _02050E26
+ add r0, #0x41
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _02050E26
+ bl FUN_0223E118
+_02050E26:
+ pop {r3, pc}
+ .balign 4
+_02050E28: .word 0x021C5A6C
+
+ thumb_func_start FUN_02050E2C
+FUN_02050E2C: ; 0x02050E2C
+ push {r3, lr}
+ ldr r0, _02050E44 ; =0x021C5A6C
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _02050E42
+ add r0, #0x41
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _02050E42
+ bl FUN_0223E154
+_02050E42:
+ pop {r3, pc}
+ .balign 4
+_02050E44: .word 0x021C5A6C
+
+ thumb_func_start FUN_02050E48
+FUN_02050E48: ; 0x02050E48
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r7, r0, #0x0
+ add r5, r1, #0x0
+ ldr r0, [sp, #0x24]
+ mov r1, #0x30
+ str r2, [sp, #0x0]
+ str r3, [sp, #0x4]
+ ldr r6, [r5, #0xc]
+ bl FUN_020169D8
+ mov r1, #0x0
+ mov r2, #0x30
+ add r4, r0, #0x0
+ blx MI_CpuFill8
+ ldr r0, [r5, #0xc]
+ bl FUN_020238F4
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0207C2A4
+ add r0, r6, #0x0
+ bl FUN_0206BB28
+ str r0, [r4, #0x1c]
+ add r0, r6, #0x0
+ bl FUN_02079C70
+ str r0, [r4, #0x2c]
+ add r0, r6, #0x0
+ bl LoadPlayerDataAddress
+ str r0, [r4, #0x4]
+ ldr r0, [sp, #0x0]
+ str r0, [r4, #0x0]
+ mov r0, #0x1
+ strb r0, [r4, #0x11]
+ ldr r0, [sp, #0x4]
+ strb r0, [r4, #0x14]
+ ldr r0, [r4, #0x0]
+ bl FUN_0206B9AC
+ strb r0, [r4, #0x13]
+ mov r0, #0x0
+ strh r0, [r4, #0x18]
+ ldr r0, [sp, #0x20]
+ strb r0, [r4, #0x12]
+ add r0, r6, #0x0
+ bl FUN_0202A918
+ str r0, [r4, #0x20]
+ ldr r1, _02050ECC ; =0x020F5880
+ add r0, r4, #0x0
+ bl FUN_0207B000
+ ldr r1, _02050ED0 ; =0x020FA6E8
+ add r0, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_020373D4
+ str r4, [r7, #0x0]
+ add sp, #0x8
+ pop {r3-r7, pc}
+ nop
+_02050ECC: .word 0x020F5880
+_02050ED0: .word 0x020FA6E8
+
+ thumb_func_start FUN_02050ED4
+FUN_02050ED4: ; 0x02050ED4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, r1, #0x0
+ mov r1, #0x40
+ bl FUN_02016998
+ mov r1, #0x0
+ mov r2, #0x40
+ add r4, r0, #0x0
+ blx MI_CpuFill8
+ ldr r0, [r5, #0x24]
+ ldr r0, [r0, #0xc]
+ bl LoadPlayerDataAddress
+ str r0, [r4, #0xc]
+ ldr r0, [r5, #0x24]
+ add r0, #0xac
+ ldr r0, [r0, #0x0]
+ str r0, [r4, #0x14]
+ ldr r0, [r5, #0x24]
+ ldr r0, [r0, #0xc]
+ bl FUN_0206BB1C
+ str r0, [r4, #0x0]
+ ldr r0, [r5, #0x24]
+ ldr r0, [r0, #0xc]
+ bl FUN_0206F158
+ str r0, [r4, #0x4]
+ add r0, r4, #0x0
+ mov r1, #0x0
+ add r0, #0x21
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0x2
+ add r0, #0x20
+ strb r1, [r0, #0x0]
+ ldr r0, [r5, #0x24]
+ add r0, #0xac
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _02050F64
+ mov r1, #0x1
+ bl FUN_02023B0C
+ add r1, r4, #0x0
+ add r1, #0x32
+ ldrb r1, [r1, #0x0]
+ mov r2, #0xf
+ lsl r0, r0, #0x18
+ bic r1, r2
+ lsr r2, r0, #0x18
+ mov r0, #0xf
+ and r0, r2
+ orr r1, r0
+ add r0, r4, #0x0
+ add r0, #0x32
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x32
+ ldrb r0, [r0, #0x0]
+ mov r1, #0xf0
+ bic r0, r1
+ add r1, r4, #0x0
+ add r1, #0x32
+ ldrb r1, [r1, #0x0]
+ lsl r1, r1, #0x1c
+ lsr r1, r1, #0x1c
+ lsl r1, r1, #0x1c
+ lsr r1, r1, #0x18
+ b _02050F84
+_02050F64:
+ add r0, r4, #0x0
+ add r0, #0x32
+ ldrb r1, [r0, #0x0]
+ mov r0, #0xf
+ bic r1, r0
+ mov r0, #0x3
+ orr r1, r0
+ add r0, r4, #0x0
+ add r0, #0x32
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x32
+ ldrb r1, [r0, #0x0]
+ mov r0, #0xf0
+ bic r1, r0
+ mov r0, #0x30
+_02050F84:
+ orr r1, r0
+ add r0, r4, #0x0
+ add r0, #0x32
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0x64
+ add r0, #0x33
+ strb r1, [r0, #0x0]
+ add r0, r5, #0x0
+ add r0, #0x3c
+ ldrb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x22
+ strb r1, [r0, #0x0]
+ mov r2, #0x0
+_02050FA2:
+ add r0, r5, r2
+ add r0, #0x3d
+ ldrb r1, [r0, #0x0]
+ add r0, r4, r2
+ add r0, #0x2c
+ add r2, r2, #0x1
+ strb r1, [r0, #0x0]
+ cmp r2, #0x6
+ blt _02050FA2
+ ldr r0, [r5, #0x24]
+ ldr r1, _02050FC4 ; =0x020F96DC
+ add r2, r4, #0x0
+ bl FUN_020373D4
+ str r4, [r5, #0x4]
+ pop {r3-r5, pc}
+ nop
+_02050FC4: .word 0x020F96DC
+
+ thumb_func_start FUN_02050FC8
+FUN_02050FC8: ; 0x02050FC8
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, r1, #0x0
+ bl FUN_0204647C
+ cmp r0, #0x0
+ beq _02050FDA
+ mov r0, #0x0
+ pop {r4, pc}
+_02050FDA:
+ ldr r0, [r4, #0x4]
+ add r1, r4, #0x0
+ add r0, #0x2c
+ add r1, #0x3d
+ mov r2, #0x6
+ blx MI_CpuCopy8
+ ldr r0, [r4, #0x4]
+ add r0, #0x22
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x6
+ beq _02050FFC
+ cmp r0, #0x7
+ bne _02051002
+ mov r0, #0x0
+ str r0, [r4, #0x38]
+ b _02051006
+_02050FFC:
+ mov r0, #0x1
+ str r0, [r4, #0x38]
+ b _02051006
+_02051002:
+ mov r0, #0x2
+ str r0, [r4, #0x38]
+_02051006:
+ ldr r0, [r4, #0x4]
+ add r0, #0x22
+ ldrb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x3c
+ strb r1, [r0, #0x0]
+ ldr r0, [r4, #0x4]
+ bl FUN_02016A18
+ mov r0, #0x0
+ str r0, [r4, #0x4]
+ mov r0, #0x1
+ pop {r4, pc}
+
+ thumb_func_start FUN_02051020
+FUN_02051020: ; 0x02051020
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, r1, #0x0
+ bl FUN_0204647C
+ cmp r0, #0x0
+ beq _02051032
+ mov r0, #0x0
+ pop {r4, pc}
+_02051032:
+ ldr r0, [r4, #0x0]
+ ldrb r1, [r0, #0x14]
+ add r0, r4, #0x0
+ add r0, #0x3c
+ strb r1, [r0, #0x0]
+ ldr r0, [r4, #0x0]
+ bl FUN_02016A18
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+ mov r0, #0x1
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205104C
+FUN_0205104C: ; 0x0205104C
+ push {r3, lr}
+ ldr r0, [r0, #0x24]
+ bl FUN_020464A4
+ cmp r0, #0x0
+ beq _02051066
+ mov r0, #0x1
+ bl FUN_021D7CA4
+ bl FUN_0204CC9C
+ mov r0, #0x1
+ pop {r3, pc}
+_02051066:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205106C
+FUN_0205106C: ; 0x0205106C
+ push {r3-r5, lr}
+ bl FUN_02030F20
+ add r5, r0, #0x0
+ mov r4, #0x0
+ cmp r5, #0x0
+ ble _0205108E
+_0205107A:
+ add r0, r4, #0x0
+ bl FUN_020315FC
+ cmp r0, #0x5e
+ bne _02051088
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_02051088:
+ add r4, r4, #0x1
+ cmp r4, r5
+ blt _0205107A
+_0205108E:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02051094
+FUN_02051094: ; 0x02051094
+ push {r3-r5, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02046528
+ ldr r1, [r4, #0x34]
+ cmp r1, #0x2c
+ bls _020510AE
+ b _020517B8
+_020510AE:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_020510BA: ; jump table (using 16-bit offset)
+ .short _02051114 - _020510BA - 2; case 0
+ .short _02051136 - _020510BA - 2; case 1
+ .short _02051150 - _020510BA - 2; case 2
+ .short _0205116A - _020510BA - 2; case 3
+ .short _020511A6 - _020510BA - 2; case 4
+ .short _020511F6 - _020510BA - 2; case 5
+ .short _020517B8 - _020510BA - 2; case 6
+ .short _020511E4 - _020510BA - 2; case 7
+ .short _0205120C - _020510BA - 2; case 8
+ .short _02051232 - _020510BA - 2; case 9
+ .short _0205123E - _020510BA - 2; case 10
+ .short _0205126A - _020510BA - 2; case 11
+ .short _02051288 - _020510BA - 2; case 12
+ .short _0205129C - _020510BA - 2; case 13
+ .short _020512A8 - _020510BA - 2; case 14
+ .short _020512CA - _020510BA - 2; case 15
+ .short _020512E0 - _020510BA - 2; case 16
+ .short _0205130E - _020510BA - 2; case 17
+ .short _02051334 - _020510BA - 2; case 18
+ .short _02051346 - _020510BA - 2; case 19
+ .short _0205138A - _020510BA - 2; case 20
+ .short _0205136A - _020510BA - 2; case 21
+ .short _020513A6 - _020510BA - 2; case 22
+ .short _020513B6 - _020510BA - 2; case 23
+ .short _020513D4 - _020510BA - 2; case 24
+ .short _020513F2 - _020510BA - 2; case 25
+ .short _02051406 - _020510BA - 2; case 26
+ .short _02051472 - _020510BA - 2; case 27
+ .short _020514A8 - _020510BA - 2; case 28
+ .short _020514BE - _020510BA - 2; case 29
+ .short _02051508 - _020510BA - 2; case 30
+ .short _02051540 - _020510BA - 2; case 31
+ .short _02051566 - _020510BA - 2; case 32
+ .short _02051686 - _020510BA - 2; case 33
+ .short _020516B6 - _020510BA - 2; case 34
+ .short _020516CE - _020510BA - 2; case 35
+ .short _020515BA - _020510BA - 2; case 36
+ .short _020515F8 - _020510BA - 2; case 37
+ .short _02051614 - _020510BA - 2; case 38
+ .short _020516DE - _020510BA - 2; case 39
+ .short _020517B8 - _020510BA - 2; case 40
+ .short _02051702 - _020510BA - 2; case 41
+ .short _02051744 - _020510BA - 2; case 42
+ .short _02051766 - _020510BA - 2; case 43
+ .short _02051798 - _020510BA - 2; case 44
+_02051114:
+ add r0, r4, #0x0
+ add r0, #0x43
+ ldrb r0, [r0, #0x0]
+ sub r1, r0, #0x1
+ add r0, r4, #0x0
+ add r0, #0x43
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x43
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _020511DC
+ mov r0, #0x1
+ str r0, [r4, #0x34]
+ bl FUN_0204ECC0
+ b _020517B8
+_02051136:
+ ldr r0, [r4, #0x2c]
+ ldr r2, [r4, #0xc]
+ mov r1, #0x1
+ bl FUN_0200A8E0
+ ldr r1, [r4, #0xc]
+ add r0, r4, #0x0
+ bl FUN_020517C0
+ str r0, [r4, #0x30]
+ mov r0, #0x2
+ str r0, [r4, #0x34]
+ b _020517B8
+_02051150:
+ ldr r0, [r4, #0x30]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_020546C8
+ cmp r0, #0x0
+ beq _020511DC
+ mov r0, #0x5d
+ bl FUN_02031588
+ mov r0, #0x3
+ str r0, [r4, #0x34]
+ b _020517B8
+_0205116A:
+ mov r0, #0x5d
+ bl FUN_020315D8
+ cmp r0, #0x0
+ beq _0205118A
+ mov r0, #0x7
+ str r0, [r4, #0x34]
+ ldr r0, [r4, #0x24]
+ ldr r0, [r0, #0x34]
+ bl FUN_02058768
+ ldr r1, [r4, #0x50]
+ ldr r2, [r4, #0x8]
+ mov r0, #0x1
+ blx r2
+ b _020517B8
+_0205118A:
+ ldr r0, _020514A4 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x2
+ tst r0, r1
+ beq _020511DC
+ mov r0, #0x4
+ str r0, [r4, #0x34]
+ mov r0, #0x5c
+ bl FUN_02031588
+ mov r0, #0x5
+ add r4, #0x43
+ strb r0, [r4, #0x0]
+ b _020517B8
+_020511A6:
+ mov r0, #0x5d
+ bl FUN_020315D8
+ cmp r0, #0x0
+ beq _020511C4
+ mov r0, #0x7
+ str r0, [r4, #0x34]
+ ldr r0, [r4, #0x24]
+ ldr r0, [r0, #0x34]
+ bl FUN_02058768
+ ldr r1, [r4, #0x50]
+ ldr r2, [r4, #0x8]
+ mov r0, #0x1
+ blx r2
+_020511C4:
+ add r0, r4, #0x0
+ add r0, #0x43
+ ldrb r0, [r0, #0x0]
+ sub r1, r0, #0x1
+ add r0, r4, #0x0
+ add r0, #0x43
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x43
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _020511DE
+_020511DC:
+ b _020517B8
+_020511DE:
+ mov r0, #0x8
+ str r0, [r4, #0x34]
+ b _020517B8
+_020511E4:
+ add r0, r4, #0x0
+ bl FUN_02051998
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x8
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_020511F6:
+ add r0, r4, #0x0
+ bl FUN_02051998
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ bl FUN_0204F7FC
+ add sp, #0x8
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0205120C:
+ mov r0, #0x5d
+ bl FUN_020315D8
+ cmp r0, #0x0
+ beq _02051224
+ mov r0, #0x5
+ str r0, [r4, #0x34]
+ ldr r1, [r4, #0x50]
+ ldr r2, [r4, #0x8]
+ mov r0, #0x1
+ blx r2
+ b _020517B8
+_02051224:
+ ldr r1, [r4, #0x50]
+ ldr r2, [r4, #0x8]
+ mov r0, #0x0
+ blx r2
+ mov r0, #0x5
+ str r0, [r4, #0x34]
+ b _020517B8
+_02051232:
+ mov r0, #0xa
+ str r0, [r4, #0x34]
+ mov r0, #0x5
+ add r4, #0x44
+ strb r0, [r4, #0x0]
+ b _020517B8
+_0205123E:
+ add r1, r4, #0x0
+ add r1, #0x44
+ ldrb r1, [r1, #0x0]
+ cmp r1, #0x0
+ beq _02051256
+ add r0, r4, #0x0
+ add r0, #0x44
+ ldrb r0, [r0, #0x0]
+ add r4, #0x44
+ sub r0, r0, #0x1
+ strb r0, [r4, #0x0]
+ b _020517B8
+_02051256:
+ ldr r0, [r0, #0x38]
+ bl FUN_020553A0
+ bl FUN_0205AE28
+ cmp r0, #0x0
+ beq _020512FA
+ mov r0, #0xb
+ str r0, [r4, #0x34]
+ b _020517B8
+_0205126A:
+ bl FUN_0204ECC0
+ ldr r0, [r4, #0x2c]
+ ldr r2, [r4, #0xc]
+ mov r1, #0xd
+ bl FUN_0200A8E0
+ ldr r1, [r4, #0xc]
+ add r0, r4, #0x0
+ bl FUN_020517C0
+ str r0, [r4, #0x30]
+ mov r0, #0xc
+ str r0, [r4, #0x34]
+ b _020517B8
+_02051288:
+ ldr r0, [r4, #0x30]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_020546C8
+ cmp r0, #0x0
+ beq _020512FA
+ mov r0, #0xd
+ str r0, [r4, #0x34]
+ b _020517B8
+_0205129C:
+ mov r0, #0x0
+ bl FUN_021D7CA4
+ mov r0, #0xe
+ str r0, [r4, #0x34]
+ b _020517B8
+_020512A8:
+ add r0, r4, #0x0
+ add r0, #0x43
+ ldrb r0, [r0, #0x0]
+ sub r1, r0, #0x1
+ add r0, r4, #0x0
+ add r0, #0x43
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x43
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _020512FA
+ bl FUN_0204ECC0
+ mov r0, #0xf
+ str r0, [r4, #0x34]
+ b _020517B8
+_020512CA:
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_02051810
+ add r0, r4, #0x0
+ mov r1, #0xb
+ bl FUN_02050ED4
+ mov r0, #0x10
+ str r0, [r4, #0x34]
+ b _020517B8
+_020512E0:
+ ldr r1, [r4, #0x24]
+ add r0, r4, #0x0
+ bl FUN_02050FC8
+ cmp r0, #0x0
+ beq _020512FA
+ ldr r0, [r4, #0x38]
+ cmp r0, #0x0
+ beq _020512FC
+ cmp r0, #0x1
+ beq _02051302
+ cmp r0, #0x2
+ beq _02051308
+_020512FA:
+ b _020517B8
+_020512FC:
+ mov r0, #0x14
+ str r0, [r4, #0x34]
+ b _020517B8
+_02051302:
+ mov r0, #0x13
+ str r0, [r4, #0x34]
+ b _020517B8
+_02051308:
+ mov r0, #0x11
+ str r0, [r4, #0x34]
+ b _020517B8
+_0205130E:
+ ldr r0, [r4, #0x24]
+ ldr r0, [r0, #0xc]
+ bl FUN_0206BB1C
+ add r2, r0, #0x0
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0xb
+ str r0, [sp, #0x4]
+ add r3, r4, #0x0
+ add r3, #0x3c
+ ldrb r3, [r3, #0x0]
+ ldr r1, [r4, #0x24]
+ add r0, r4, #0x0
+ bl FUN_02050E48
+ mov r0, #0x12
+ str r0, [r4, #0x34]
+ b _020517B8
+_02051334:
+ ldr r1, [r4, #0x24]
+ add r0, r4, #0x0
+ bl FUN_02051020
+ cmp r0, #0x0
+ beq _02051410
+ mov r0, #0xf
+ str r0, [r4, #0x34]
+ b _020517B8
+_02051346:
+ ldr r0, [r4, #0x24]
+ bl FUN_0204649C
+ add r0, r4, #0x0
+ add r0, #0x88
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x3
+ beq _02051364
+ add r0, r4, #0x0
+ mov r1, #0x5
+ add r0, #0x43
+ strb r1, [r0, #0x0]
+ mov r0, #0x15
+ str r0, [r4, #0x34]
+ b _020517B8
+_02051364:
+ mov r0, #0x1a
+ str r0, [r4, #0x34]
+ b _020517B8
+_0205136A:
+ add r0, r4, #0x0
+ add r0, #0x3d
+ bl FUN_02033564
+ add r0, r4, #0x0
+ bl FUN_0205104C
+ cmp r0, #0x0
+ beq _02051410
+ add r0, r4, #0x0
+ mov r1, #0x5
+ add r0, #0x43
+ strb r1, [r0, #0x0]
+ mov r0, #0x0
+ str r0, [r4, #0x34]
+ b _020517B8
+_0205138A:
+ ldr r0, [r4, #0x24]
+ bl FUN_0204649C
+ add r0, r4, #0x0
+ add r0, #0x88
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x3
+ beq _020513A0
+ mov r0, #0x16
+ str r0, [r4, #0x34]
+ b _020517B8
+_020513A0:
+ mov r0, #0x1a
+ str r0, [r4, #0x34]
+ b _020517B8
+_020513A6:
+ add r0, r4, #0x0
+ bl FUN_0205104C
+ cmp r0, #0x0
+ beq _02051410
+ mov r0, #0x8
+ str r0, [r4, #0x34]
+ b _020517B8
+_020513B6:
+ add r0, r4, #0x0
+ add r0, #0x44
+ ldrb r0, [r0, #0x0]
+ sub r1, r0, #0x1
+ add r0, r4, #0x0
+ add r0, #0x44
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x44
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _02051410
+ mov r0, #0x18
+ str r0, [r4, #0x34]
+ b _020517B8
+_020513D4:
+ bl FUN_0204ECC0
+ ldr r0, [r4, #0x2c]
+ ldr r2, [r4, #0xc]
+ mov r1, #0x13
+ bl FUN_0200A8E0
+ ldr r1, [r4, #0xc]
+ add r0, r4, #0x0
+ bl FUN_020517C0
+ str r0, [r4, #0x30]
+ mov r0, #0x19
+ str r0, [r4, #0x34]
+ b _020517B8
+_020513F2:
+ ldr r0, [r4, #0x30]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_020546C8
+ cmp r0, #0x0
+ beq _02051410
+ mov r0, #0xd
+ str r0, [r4, #0x34]
+ b _020517B8
+_02051406:
+ add r0, r4, #0x0
+ bl FUN_0205104C
+ cmp r0, #0x0
+ bne _02051412
+_02051410:
+ b _020517B8
+_02051412:
+ bl FUN_0205106C
+ cmp r0, #0x0
+ beq _02051420
+ mov r0, #0x5
+ str r0, [r4, #0x34]
+ b _020517B8
+_02051420:
+ ldr r0, [r4, #0x38]
+ cmp r0, #0x0
+ beq _0205142A
+ mov r1, #0x1
+ b _0205142C
+_0205142A:
+ mov r1, #0x0
+_0205142C:
+ add r0, r4, #0x0
+ add r0, #0x82
+ strb r1, [r0, #0x0]
+ add r1, r4, #0x0
+ add r1, #0x82
+ ldrb r1, [r1, #0x0]
+ add r0, r4, #0x0
+ bl FUN_020519F0
+ mov r0, #0x0
+ bl FUN_02031588
+ ldr r0, [r4, #0x28]
+ ldr r2, [r4, #0x74]
+ mov r1, #0x0
+ bl FUN_0200ABC0
+ ldr r0, [r4, #0x2c]
+ ldr r2, [r4, #0xc]
+ mov r1, #0xe
+ bl FUN_0200A8E0
+ ldr r0, [r4, #0x28]
+ ldr r1, [r4, #0x10]
+ ldr r2, [r4, #0xc]
+ bl FUN_0200B7B8
+ ldr r1, [r4, #0x10]
+ add r0, r4, #0x0
+ bl FUN_020517C0
+ str r0, [r4, #0x30]
+ mov r0, #0x1b
+ str r0, [r4, #0x34]
+ b _020517B8
+_02051472:
+ ldr r0, [r4, #0x30]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_020546C8
+ cmp r0, #0x0
+ beq _02051574
+ bl FUN_0205106C
+ cmp r0, #0x0
+ beq _0205148E
+ mov r0, #0x5
+ str r0, [r4, #0x34]
+ b _020517B8
+_0205148E:
+ mov r0, #0x0
+ bl FUN_020315D8
+ cmp r0, #0x0
+ beq _02051574
+ add r0, r4, #0x0
+ bl FUN_02051A38
+ mov r0, #0x1c
+ str r0, [r4, #0x34]
+ b _020517B8
+ .balign 4
+_020514A4: .word 0x021C48B8
+_020514A8:
+ add r0, r4, #0x0
+ bl FUN_02051A80
+ cmp r0, #0x0
+ beq _02051574
+ mov r0, #0x1
+ bl FUN_02031588
+ mov r0, #0x1d
+ str r0, [r4, #0x34]
+ b _020517B8
+_020514BE:
+ mov r0, #0x1
+ bl FUN_020315D8
+ cmp r0, #0x0
+ beq _02051574
+ add r0, r4, #0x0
+ bl FUN_02051A90
+ add r1, r4, #0x0
+ add r1, #0x83
+ strb r0, [r1, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x82
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _02051502
+ add r0, r4, #0x0
+ add r0, #0x83
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _02051502
+ ldr r0, [r4, #0x2c]
+ ldr r2, [r4, #0xc]
+ mov r1, #0x14
+ bl FUN_0200A8E0
+ ldr r1, [r4, #0xc]
+ add r0, r4, #0x0
+ bl FUN_020517C0
+ str r0, [r4, #0x30]
+ mov r0, #0x1e
+ str r0, [r4, #0x34]
+ b _020517B8
+_02051502:
+ mov r0, #0x2a
+ str r0, [r4, #0x34]
+ b _020517B8
+_02051508:
+ ldr r0, [r4, #0x30]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_020546C8
+ cmp r0, #0x0
+ beq _02051574
+ add r0, r4, #0x0
+ mov r1, #0x0
+ add r0, #0x89
+ strb r1, [r0, #0x0]
+ ldr r0, [r4, #0x2c]
+ ldr r2, [r4, #0xc]
+ mov r1, #0x11
+ bl FUN_0200A8E0
+ ldr r1, [r4, #0xc]
+ add r0, r4, #0x0
+ bl FUN_020517C0
+ str r0, [r4, #0x30]
+ add r0, r4, #0x0
+ mov r1, #0x0
+ add r0, #0x84
+ strb r1, [r0, #0x0]
+ mov r0, #0x1f
+ str r0, [r4, #0x34]
+ b _020517B8
+_02051540:
+ ldr r0, [r4, #0x30]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_020546C8
+ cmp r0, #0x0
+ beq _02051574
+ add r0, r4, #0x0
+ bl FUN_02051AF0
+ add r1, r4, #0x0
+ add r1, #0x84
+ ldrb r1, [r1, #0x0]
+ add r0, r4, #0x0
+ bl FUN_02051B68
+ mov r0, #0x20
+ str r0, [r4, #0x34]
+ b _020517B8
+_02051566:
+ add r0, r4, #0x0
+ bl FUN_02051D54
+ cmp r0, #0x1
+ beq _02051576
+ cmp r0, #0x2
+ beq _0205158C
+_02051574:
+ b _020517B8
+_02051576:
+ add r0, r4, #0x0
+ bl FUN_02051E24
+ mov r0, #0x81
+ ldrsb r1, [r4, r0]
+ add r0, r4, #0x0
+ add r0, #0x84
+ strb r1, [r0, #0x0]
+ mov r0, #0x24
+ str r0, [r4, #0x34]
+ b _020517B8
+_0205158C:
+ add r0, r4, #0x0
+ bl FUN_02051E24
+ add r0, r4, #0x0
+ mov r1, #0xff
+ add r0, #0x84
+ strb r1, [r0, #0x0]
+ ldr r0, [r4, #0x2c]
+ ldr r2, [r4, #0xc]
+ mov r1, #0xf
+ bl FUN_0200A8E0
+ ldr r1, [r4, #0xc]
+ add r0, r4, #0x0
+ bl FUN_020517C0
+ str r0, [r4, #0x30]
+ mov r0, #0x2
+ bl FUN_02031588
+ mov r0, #0x27
+ str r0, [r4, #0x34]
+ b _020517B8
+_020515BA:
+ add r1, r4, #0x0
+ add r1, #0x84
+ ldrb r1, [r1, #0x0]
+ ldr r0, [r4, #0x50]
+ bl FUN_0206B9B0
+ bl FUN_020690E4
+ add r2, r0, #0x0
+ ldr r0, [r4, #0x28]
+ mov r1, #0x1
+ bl FUN_0200AC60
+ ldr r0, [r4, #0x2c]
+ ldr r2, [r4, #0xc]
+ mov r1, #0x12
+ bl FUN_0200A8E0
+ ldr r0, [r4, #0x28]
+ ldr r1, [r4, #0x10]
+ ldr r2, [r4, #0xc]
+ bl FUN_0200B7B8
+ ldr r1, [r4, #0x10]
+ add r0, r4, #0x0
+ bl FUN_020517C0
+ str r0, [r4, #0x30]
+ mov r0, #0x25
+ str r0, [r4, #0x34]
+ b _020517B8
+_020515F8:
+ ldr r0, [r4, #0x30]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_020546C8
+ cmp r0, #0x0
+ beq _0205168E
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_02051C88
+ mov r0, #0x26
+ str r0, [r4, #0x34]
+ b _020517B8
+_02051614:
+ add r0, r4, #0x0
+ bl FUN_02051D54
+ cmp r0, #0x1
+ beq _02051642
+ cmp r0, #0x2
+ bne _0205168E
+ add r0, r4, #0x0
+ bl FUN_02051E24
+ ldr r0, [r4, #0x2c]
+ ldr r2, [r4, #0xc]
+ mov r1, #0x11
+ bl FUN_0200A8E0
+ ldr r1, [r4, #0xc]
+ add r0, r4, #0x0
+ bl FUN_020517C0
+ str r0, [r4, #0x30]
+ mov r0, #0x1f
+ str r0, [r4, #0x34]
+ b _020517B8
+_02051642:
+ mov r0, #0x81
+ ldrsb r0, [r4, r0]
+ cmp r0, #0x1
+ bne _0205167A
+ add r0, r4, #0x0
+ bl FUN_02051E24
+ ldr r0, [r4, #0x2c]
+ ldr r2, [r4, #0xc]
+ mov r1, #0xe
+ bl FUN_0200A8E0
+ ldr r0, [r4, #0x28]
+ ldr r1, [r4, #0x10]
+ ldr r2, [r4, #0xc]
+ bl FUN_0200B7B8
+ ldr r1, [r4, #0x10]
+ add r0, r4, #0x0
+ bl FUN_020517C0
+ str r0, [r4, #0x30]
+ mov r0, #0x2
+ bl FUN_02031588
+ mov r0, #0x27
+ str r0, [r4, #0x34]
+ b _020517B8
+_0205167A:
+ mov r0, #0x0
+ bl FUN_021D7CA4
+ mov r0, #0x21
+ str r0, [r4, #0x34]
+ b _020517B8
+_02051686:
+ bl FUN_0200E308
+ cmp r0, #0x0
+ bne _02051690
+_0205168E:
+ b _020517B8
+_02051690:
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_02051810
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ mov r0, #0xb
+ str r0, [sp, #0x4]
+ add r3, r4, #0x0
+ add r3, #0x84
+ ldrb r3, [r3, #0x0]
+ ldr r1, [r4, #0x24]
+ ldr r2, [r4, #0x50]
+ add r0, r4, #0x0
+ bl FUN_02050E48
+ mov r0, #0x22
+ str r0, [r4, #0x34]
+ b _020517B8
+_020516B6:
+ ldr r1, [r4, #0x24]
+ add r0, r4, #0x0
+ bl FUN_02051020
+ cmp r0, #0x0
+ beq _020517B8
+ ldr r0, [r4, #0x24]
+ bl FUN_0204649C
+ mov r0, #0x23
+ str r0, [r4, #0x34]
+ b _020517B8
+_020516CE:
+ add r0, r4, #0x0
+ bl FUN_0205104C
+ cmp r0, #0x0
+ beq _020517B8
+ mov r0, #0x24
+ str r0, [r4, #0x34]
+ b _020517B8
+_020516DE:
+ ldr r0, [r4, #0x30]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_020546C8
+ cmp r0, #0x0
+ beq _020517B8
+ mov r0, #0x2
+ bl FUN_020315D8
+ cmp r0, #0x0
+ beq _020517B8
+ add r0, r4, #0x0
+ bl FUN_02051AA4
+ mov r0, #0x29
+ str r0, [r4, #0x34]
+ b _020517B8
+_02051702:
+ add r0, r4, #0x0
+ bl FUN_02051AE0
+ cmp r0, #0x0
+ beq _020517B8
+ add r0, r4, #0x0
+ add r0, #0x84
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0xff
+ bne _02051722
+ mov r0, #0x4
+ bl FUN_02031588
+ mov r0, #0x2c
+ str r0, [r4, #0x34]
+ b _020517B8
+_02051722:
+ add r0, r4, #0x0
+ add r0, #0x85
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0xff
+ bne _02051732
+ mov r0, #0x2a
+ str r0, [r4, #0x34]
+ b _020517B8
+_02051732:
+ add r0, r4, #0x0
+ bl FUN_02051B1C
+ mov r0, #0x5d
+ bl FUN_02031588
+ mov r0, #0x2
+ str r0, [r4, #0x34]
+ b _020517B8
+_02051744:
+ ldr r0, [r4, #0x2c]
+ ldr r2, [r4, #0xc]
+ mov r1, #0xf
+ bl FUN_0200A8E0
+ ldr r1, [r4, #0xc]
+ add r0, r4, #0x0
+ bl FUN_020517C0
+ str r0, [r4, #0x30]
+ add r0, r4, #0x0
+ mov r1, #0x0
+ add r0, #0x43
+ strb r1, [r0, #0x0]
+ mov r0, #0x2b
+ str r0, [r4, #0x34]
+ b _020517B8
+_02051766:
+ ldr r0, [r4, #0x30]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_020546C8
+ cmp r0, #0x0
+ beq _020517B8
+ add r0, r4, #0x0
+ add r0, #0x43
+ ldrb r0, [r0, #0x0]
+ add r1, r0, #0x1
+ add r0, r4, #0x0
+ add r0, #0x43
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x43
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x3c
+ bls _020517B8
+ mov r0, #0x4
+ bl FUN_02031588
+ mov r0, #0x2c
+ str r0, [r4, #0x34]
+ b _020517B8
+_02051798:
+ mov r0, #0x4
+ bl FUN_020315D8
+ cmp r0, #0x0
+ beq _020517B8
+ add r0, r4, #0x0
+ add r0, #0x14
+ mov r1, #0x0
+ bl FUN_0200D0E0
+ mov r0, #0x0
+ ldr r2, [r4, #0x8]
+ add r1, r0, #0x0
+ blx r2
+ mov r0, #0x5
+ str r0, [r4, #0x34]
+_020517B8:
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020517C0
+FUN_020517C0: ; 0x020517C0
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r5, #0x0
+ add r4, #0x14
+ add r0, r4, #0x0
+ add r6, r1, #0x0
+ bl FUN_02019048
+ cmp r0, #0x0
+ bne _020517F2
+ ldr r0, [r5, #0x24]
+ add r1, r4, #0x0
+ ldr r0, [r0, #0x8]
+ mov r2, #0x3
+ bl FUN_020545B8
+ ldr r0, [r5, #0x24]
+ ldr r0, [r0, #0xc]
+ bl LoadPlayerDataAddress
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02054608
+ b _020517F8
+_020517F2:
+ add r0, r4, #0x0
+ bl FUN_0205464C
+_020517F8:
+ ldr r0, [r5, #0x24]
+ ldr r0, [r0, #0xc]
+ bl LoadPlayerDataAddress
+ add r2, r0, #0x0
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ mov r3, #0x1
+ bl FUN_02054658
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02051810
+FUN_02051810: ; 0x02051810
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x14
+ add r4, r1, #0x0
+ bl FUN_02019048
+ cmp r0, #0x0
+ beq _02051846
+ cmp r4, #0x0
+ beq _02051836
+ add r0, r5, #0x0
+ add r0, #0x14
+ mov r1, #0x0
+ bl FUN_0200D0E0
+ add r0, r5, #0x0
+ add r0, #0x14
+ bl FUN_02019570
+_02051836:
+ add r0, r5, #0x0
+ add r0, #0x14
+ bl FUN_02019178
+ add r0, r5, #0x0
+ add r0, #0x14
+ bl FUN_0201901C
+_02051846:
+ add r0, r5, #0x0
+ add r0, #0x54
+ bl FUN_02019048
+ cmp r0, #0x0
+ beq _02051862
+ add r0, r5, #0x0
+ add r0, #0x54
+ bl FUN_02019178
+ add r0, r5, #0x0
+ add r0, #0x54
+ bl FUN_0201901C
+_02051862:
+ add r0, r5, #0x0
+ add r0, #0x64
+ bl FUN_02019048
+ cmp r0, #0x0
+ beq _0205187E
+ add r0, r5, #0x0
+ add r0, #0x64
+ bl FUN_02019178
+ add r5, #0x64
+ add r0, r5, #0x0
+ bl FUN_0201901C
+_0205187E:
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02051880
+FUN_02051880: ; 0x02051880
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x10]
+ add r6, r1, #0x0
+ cmp r0, #0x0
+ beq _0205188E
+ b _02051992
+_0205188E:
+ mov r0, #0xb
+ mov r1, #0x8c
+ bl FUN_020169D8
+ add r4, r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x8c
+ blx MI_CpuFill8
+ add r0, r4, #0x0
+ mov r1, #0x5
+ add r0, #0x43
+ strb r1, [r0, #0x0]
+ str r5, [r4, #0x24]
+ str r6, [r4, #0x8]
+ mov r0, #0xb
+ bl FUN_0200AA80
+ str r0, [r4, #0x28]
+ mov r0, #0x0
+ mov r1, #0x1a
+ mov r2, #0x9
+ mov r3, #0xb
+ bl FUN_0200A86C
+ str r0, [r4, #0x2c]
+ mov r0, #0xc8
+ mov r1, #0xb
+ bl FUN_020219F4
+ str r0, [r4, #0xc]
+ mov r0, #0xc8
+ mov r1, #0xb
+ bl FUN_020219F4
+ str r0, [r4, #0x10]
+ add r0, r4, #0x0
+ add r0, #0x14
+ bl FUN_0201901C
+ add r0, r4, #0x0
+ add r0, #0x54
+ bl FUN_0201901C
+ add r0, r4, #0x0
+ add r0, #0x64
+ bl FUN_0201901C
+ mov r0, #0xb
+ bl FUN_02013690
+ str r0, [r4, #0x78]
+ bl FUN_02033534
+ add r1, r4, #0x0
+ add r1, #0x88
+ strb r0, [r1, #0x0]
+ mov r1, #0x0
+ str r1, [r4, #0x4c]
+ str r1, [r4, #0x48]
+ add r0, r4, #0x0
+ str r1, [r4, #0x50]
+ add r0, #0x89
+ strb r1, [r0, #0x0]
+ bl FUN_02031190
+ add r1, r4, #0x0
+ add r1, #0x86
+ strh r0, [r1, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x86
+ ldrh r1, [r0, #0x0]
+ mov r0, #0x1
+ eor r0, r1
+ bl FUN_0202DFA4
+ str r0, [r4, #0x74]
+ add r0, r4, #0x0
+ add r0, #0x88
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x3
+ beq _02051938
+ cmp r0, #0x4
+ beq _0205196E
+ b _02051974
+_02051938:
+ bl FUN_02051E54
+ add r6, r0, #0x0
+ mov r0, #0xb
+ add r1, r6, #0x0
+ bl FUN_020169D8
+ str r0, [r4, #0x4c]
+ mov r0, #0xb
+ add r1, r6, #0x0
+ bl FUN_020169D8
+ str r0, [r4, #0x48]
+ mov r0, #0xb
+ bl FUN_0206B8AC
+ mov r1, #0x3
+ str r0, [r4, #0x50]
+ bl FUN_0206B8CC
+ add r0, r4, #0x0
+ mov r1, #0x5
+ add r0, #0x44
+ strb r1, [r0, #0x0]
+ mov r0, #0x17
+ str r0, [r4, #0x34]
+ b _02051988
+_0205196E:
+ mov r0, #0x9
+ str r0, [r4, #0x34]
+ b _02051988
+_02051974:
+ ldr r0, [r4, #0x24]
+ add r0, #0xac
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _02051984
+ mov r0, #0x9
+ str r0, [r4, #0x34]
+ b _02051988
+_02051984:
+ mov r0, #0x0
+ str r0, [r4, #0x34]
+_02051988:
+ ldr r1, _02051994 ; =FUN_02051094
+ add r0, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_020463CC
+_02051992:
+ pop {r4-r6, pc}
+ .balign 4
+_02051994: .word FUN_02051094
+
+ thumb_func_start FUN_02051998
+FUN_02051998: ; 0x02051998
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x50]
+ cmp r0, #0x0
+ beq _020519A6
+ bl FUN_02016A18
+_020519A6:
+ ldr r0, [r4, #0x4c]
+ cmp r0, #0x0
+ beq _020519B0
+ bl FUN_02016A18
+_020519B0:
+ ldr r0, [r4, #0x48]
+ cmp r0, #0x0
+ beq _020519BA
+ bl FUN_02016A18
+_020519BA:
+ ldr r0, [r4, #0x2c]
+ bl FUN_0200A8B8
+ ldr r0, [r4, #0x28]
+ bl FUN_0200AB18
+ ldr r0, [r4, #0xc]
+ bl FUN_02021A20
+ ldr r0, [r4, #0x10]
+ bl FUN_02021A20
+ ldr r0, [r4, #0x78]
+ bl FUN_020136C0
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_02051810
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020519E4
+FUN_020519E4: ; 0x020519E4
+ ldr r3, _020519EC ; =FUN_0204652C
+ ldr r0, [r0, #0x10]
+ bx r3
+ nop
+_020519EC: .word FUN_0204652C
+
+ thumb_func_start FUN_020519F0
+FUN_020519F0: ; 0x020519F0
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ ldr r0, [r7, #0x24]
+ add r5, r1, #0x0
+ ldr r0, [r0, #0xc]
+ bl FUN_0206BB1C
+ str r0, [sp, #0x0]
+ ldr r4, [r7, #0x4c]
+ bl FUN_020690C4
+ add r6, r0, #0x0
+ lsl r0, r6, #0x1
+ add r0, r6, r0
+ str r5, [r4, r0]
+ ldr r0, [r4, r0]
+ cmp r0, #0x0
+ beq _02051A34
+ mov r5, #0x0
+_02051A16:
+ add r1, r7, r5
+ add r1, #0x3d
+ ldrb r1, [r1, #0x0]
+ ldr r0, [sp, #0x0]
+ sub r1, r1, #0x1
+ bl FUN_0206B9B0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ blx MI_CpuCopy8
+ add r5, r5, #0x1
+ add r4, r4, r6
+ cmp r5, #0x3
+ blt _02051A16
+_02051A34:
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02051A38
+FUN_02051A38: ; 0x02051A38
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x89
+ ldrb r1, [r0, #0x0]
+ mov r0, #0x1
+ tst r1, r0
+ bne _02051A7C
+ ldr r4, [r5, #0x4c]
+ bl FUN_02051E54
+ add r2, r0, #0x0
+ add r0, r5, #0x0
+ add r0, #0x86
+ ldrh r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _02051A62
+ mov r0, #0x6a
+ add r1, r4, #0x0
+ bl FUN_02030B3C
+ b _02051A6A
+_02051A62:
+ mov r0, #0x6a
+ add r1, r4, #0x0
+ bl FUN_02030A78
+_02051A6A:
+ cmp r0, #0x0
+ beq _02051A7C
+ add r1, r5, #0x0
+ add r1, #0x89
+ ldrb r2, [r1, #0x0]
+ mov r1, #0x1
+ add r5, #0x89
+ orr r1, r2
+ strb r1, [r5, #0x0]
+_02051A7C:
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02051A80
+FUN_02051A80: ; 0x02051A80
+ add r0, #0x89
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x3
+ bne _02051A8C
+ mov r0, #0x1
+ bx lr
+_02051A8C:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02051A90
+FUN_02051A90: ; 0x02051A90
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_020690C4
+ lsl r1, r0, #0x1
+ ldr r2, [r4, #0x48]
+ add r0, r0, r1
+ ldr r0, [r2, r0]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02051AA4
+FUN_02051AA4: ; 0x02051AA4
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, #0x86
+ ldrh r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _02051ABE
+ add r1, r4, #0x0
+ mov r0, #0x6b
+ add r1, #0x84
+ mov r2, #0x1
+ bl FUN_02030BC4
+ b _02051ACA
+_02051ABE:
+ add r1, r4, #0x0
+ mov r0, #0x6b
+ add r1, #0x84
+ mov r2, #0x1
+ bl FUN_02030ADC
+_02051ACA:
+ cmp r0, #0x0
+ beq _02051ADC
+ add r1, r4, #0x0
+ add r1, #0x89
+ ldrb r2, [r1, #0x0]
+ mov r1, #0x1
+ add r4, #0x89
+ orr r1, r2
+ strb r1, [r4, #0x0]
+_02051ADC:
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02051AE0
+FUN_02051AE0: ; 0x02051AE0
+ add r0, #0x89
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x3
+ bne _02051AEC
+ mov r0, #0x1
+ bx lr
+_02051AEC:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02051AF0
+FUN_02051AF0: ; 0x02051AF0
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl FUN_020690C4
+ add r6, r0, #0x0
+ ldr r0, [r5, #0x50]
+ mov r1, #0x3
+ bl FUN_0206B8CC
+ mov r4, #0x0
+_02051B04:
+ add r1, r4, #0x0
+ ldr r2, [r5, #0x48]
+ mul r1, r6
+ ldr r0, [r5, #0x50]
+ add r1, r2, r1
+ bl FUN_0206B900
+ add r4, r4, #0x1
+ cmp r4, #0x3
+ blt _02051B04
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02051B1C
+FUN_02051B1C: ; 0x02051B1C
+ push {r4-r6, lr}
+ add r6, r0, #0x0
+ bl FUN_020690C4
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ add r0, #0x84
+ ldrb r0, [r0, #0x0]
+ ldr r2, [r6, #0x48]
+ ldr r3, [r6, #0x4c]
+ add r1, r0, #0x0
+ mul r1, r4
+ add r0, r2, r1
+ add r1, r6, #0x0
+ add r1, #0x85
+ ldrb r1, [r1, #0x0]
+ add r2, r1, #0x0
+ mul r2, r4
+ add r1, r3, r2
+ add r2, r4, #0x0
+ blx MI_CpuCopy8
+ ldr r0, [r6, #0x50]
+ mov r1, #0x3
+ bl FUN_0206B8CC
+ mov r5, #0x0
+_02051B52:
+ add r1, r5, #0x0
+ ldr r2, [r6, #0x4c]
+ mul r1, r4
+ ldr r0, [r6, #0x50]
+ add r1, r2, r1
+ bl FUN_0206B900
+ add r5, r5, #0x1
+ cmp r5, #0x3
+ blt _02051B52
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02051B68
+FUN_02051B68: ; 0x02051B68
+ push {r4-r7, lr}
+ sub sp, #0x24
+ add r5, r0, #0x0
+ str r0, [sp, #0x20]
+ add r0, #0x54
+ str r1, [sp, #0x14]
+ str r0, [sp, #0x20]
+ bl FUN_02019048
+ cmp r0, #0x0
+ bne _02051C34
+ ldr r2, _02051C84 ; =0x0000016A
+ mov r0, #0x1
+ mov r1, #0x1a
+ mov r3, #0x4
+ bl FUN_0200A86C
+ str r0, [sp, #0x18]
+ bl FUN_020690C4
+ str r0, [sp, #0x1c]
+ mov r0, #0x9
+ str r0, [sp, #0x0]
+ mov r1, #0xa
+ str r1, [sp, #0x4]
+ mov r0, #0x8
+ str r0, [sp, #0x8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ str r1, [sp, #0x10]
+ ldr r0, [r5, #0x24]
+ ldr r1, [sp, #0x20]
+ ldr r0, [r0, #0x8]
+ mov r2, #0x3
+ mov r3, #0x15
+ bl FUN_02019064
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x4
+ str r0, [sp, #0x4]
+ ldr r0, [r5, #0x24]
+ mov r1, #0x3
+ ldr r0, [r0, #0x8]
+ mov r2, #0x1
+ mov r3, #0xb
+ bl FUN_0200CB00
+ ldr r0, [sp, #0x20]
+ mov r1, #0xf
+ bl FUN_02019620
+ mov r7, #0x0
+ add r6, r7, #0x0
+ add r4, r7, #0x0
+_02051BD6:
+ ldr r0, [r5, #0x48]
+ mov r1, #0x5
+ add r0, r0, r6
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r1, r0, #0x0
+ ldr r0, [sp, #0x18]
+ ldr r2, [r5, #0xc]
+ bl FUN_0200A8E0
+ str r4, [sp, #0x0]
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x20]
+ ldr r2, [r5, #0xc]
+ mov r1, #0x0
+ mov r3, #0x10
+ bl FUN_0201BD84
+ ldr r0, [sp, #0x1c]
+ add r7, r7, #0x1
+ add r6, r6, r0
+ add r4, #0x10
+ cmp r7, #0x3
+ blt _02051BD6
+ ldr r0, [r5, #0x2c]
+ ldr r2, [r5, #0xc]
+ mov r1, #0x15
+ bl FUN_0200A8E0
+ lsl r0, r7, #0x4
+ str r0, [sp, #0x0]
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ mov r1, #0x0
+ str r1, [sp, #0x8]
+ ldr r0, [sp, #0x20]
+ ldr r2, [r5, #0xc]
+ mov r3, #0x10
+ bl FUN_0201BD84
+ ldr r0, [sp, #0x18]
+ bl FUN_0200A8B8
+_02051C34:
+ mov r0, #0x10
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x20]
+ mov r2, #0x0
+ ldrb r0, [r0, #0x8]
+ mov r1, #0xf
+ add r3, r2, #0x0
+ lsl r0, r0, #0x13
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x20]
+ bl FUN_020196F4
+ ldr r3, [sp, #0x14]
+ add r1, r5, #0x0
+ ldr r0, [r5, #0x78]
+ add r1, #0x54
+ mov r2, #0x0
+ lsl r3, r3, #0x4
+ bl FUN_020136F8
+ add r0, r5, #0x0
+ add r0, #0x54
+ mov r1, #0x0
+ mov r2, #0x1
+ mov r3, #0xb
+ bl FUN_0200CCA4
+ add r1, r5, #0x0
+ ldr r0, [sp, #0x14]
+ add r1, #0x81
+ strb r0, [r1, #0x0]
+ add r0, r5, #0x0
+ mov r1, #0x4
+ add r0, #0x80
+ strb r1, [r0, #0x0]
+ ldr r0, [sp, #0x20]
+ str r0, [r5, #0x7c]
+ add sp, #0x24
+ pop {r4-r7, pc}
+ .balign 4
+_02051C84: .word 0x0000016A
+
+ thumb_func_start FUN_02051C88
+FUN_02051C88: ; 0x02051C88
+ push {r3-r7, lr}
+ sub sp, #0x18
+ add r5, r0, #0x0
+ add r7, r5, #0x0
+ add r7, #0x64
+ add r0, r7, #0x0
+ str r1, [sp, #0x14]
+ bl FUN_02019048
+ cmp r0, #0x0
+ bne _02051D0A
+ mov r0, #0xb
+ str r0, [sp, #0x0]
+ str r0, [sp, #0x4]
+ mov r0, #0x6
+ str r0, [sp, #0x8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ mov r0, #0x5a
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x24]
+ add r1, r7, #0x0
+ ldr r0, [r0, #0x8]
+ mov r2, #0x3
+ mov r3, #0x14
+ bl FUN_02019064
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x4
+ str r0, [sp, #0x4]
+ ldr r0, [r5, #0x24]
+ mov r1, #0x3
+ ldr r0, [r0, #0x8]
+ mov r2, #0x1
+ mov r3, #0xb
+ bl FUN_0200CB00
+ add r0, r7, #0x0
+ mov r1, #0xf
+ bl FUN_02019620
+ mov r6, #0x0
+ add r4, r6, #0x0
+_02051CE0:
+ add r1, r6, #0x0
+ ldr r0, [r5, #0x2c]
+ ldr r2, [r5, #0xc]
+ add r1, #0x16
+ bl FUN_0200A8E0
+ str r4, [sp, #0x0]
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ str r0, [sp, #0x8]
+ ldr r2, [r5, #0xc]
+ add r0, r7, #0x0
+ mov r1, #0x0
+ mov r3, #0x10
+ bl FUN_0201BD84
+ add r6, r6, #0x1
+ add r4, #0x10
+ cmp r6, #0x3
+ blt _02051CE0
+_02051D0A:
+ add r0, r5, #0x0
+ mov r1, #0x3
+ add r0, #0x80
+ strb r1, [r0, #0x0]
+ add r1, r5, #0x0
+ ldr r0, [sp, #0x14]
+ str r7, [r5, #0x7c]
+ add r1, #0x81
+ strb r0, [r1, #0x0]
+ mov r0, #0x10
+ str r0, [sp, #0x0]
+ ldrb r0, [r7, #0x8]
+ mov r2, #0x0
+ mov r1, #0xf
+ lsl r0, r0, #0x13
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x4]
+ add r0, r7, #0x0
+ add r3, r2, #0x0
+ bl FUN_020196F4
+ ldr r3, [sp, #0x14]
+ ldr r0, [r5, #0x78]
+ ldr r1, [r5, #0x7c]
+ mov r2, #0x0
+ lsl r3, r3, #0x4
+ bl FUN_020136F8
+ ldr r0, [r5, #0x7c]
+ mov r1, #0x0
+ mov r2, #0x1
+ mov r3, #0xb
+ bl FUN_0200CCA4
+ add sp, #0x18
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02051D54
+FUN_02051D54: ; 0x02051D54
+ push {r4, lr}
+ sub sp, #0x8
+ add r4, r0, #0x0
+ ldr r0, _02051E1C ; =0x021C48B8
+ mov r1, #0x40
+ ldr r0, [r0, #0x48]
+ tst r1, r0
+ beq _02051D7E
+ mov r0, #0x81
+ ldrsb r0, [r4, r0]
+ cmp r0, #0x0
+ bne _02051D74
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldrb r0, [r0, #0x0]
+ b _02051D74
+_02051D74:
+ sub r1, r0, #0x1
+ add r0, r4, #0x0
+ add r0, #0x81
+ strb r1, [r0, #0x0]
+ b _02051DE0
+_02051D7E:
+ mov r1, #0x80
+ tst r1, r0
+ beq _02051DA2
+ mov r0, #0x81
+ ldrsb r1, [r4, r0]
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldrb r0, [r0, #0x0]
+ sub r0, r0, #0x1
+ cmp r1, r0
+ bne _02051D98
+ mov r1, #0x0
+ b _02051D9A
+_02051D98:
+ add r1, r1, #0x1
+_02051D9A:
+ add r0, r4, #0x0
+ add r0, #0x81
+ strb r1, [r0, #0x0]
+ b _02051DE0
+_02051DA2:
+ mov r1, #0x1
+ tst r1, r0
+ beq _02051DC8
+ ldr r0, _02051E20 ; =0x000005DC
+ bl FUN_020054C8
+ mov r0, #0x81
+ ldrsb r1, [r4, r0]
+ add r4, #0x80
+ ldrb r0, [r4, #0x0]
+ sub r0, r0, #0x1
+ cmp r1, r0
+ bge _02051DC2
+ add sp, #0x8
+ mov r0, #0x1
+ pop {r4, pc}
+_02051DC2:
+ add sp, #0x8
+ mov r0, #0x2
+ pop {r4, pc}
+_02051DC8:
+ mov r1, #0x2
+ tst r0, r1
+ beq _02051DDA
+ ldr r0, _02051E20 ; =0x000005DC
+ bl FUN_020054C8
+ add sp, #0x8
+ mov r0, #0x2
+ pop {r4, pc}
+_02051DDA:
+ add sp, #0x8
+ mov r0, #0x0
+ pop {r4, pc}
+_02051DE0:
+ ldr r0, _02051E20 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r0, [r4, #0x7c]
+ mov r1, #0x10
+ str r1, [sp, #0x0]
+ ldrb r1, [r0, #0x8]
+ mov r2, #0x0
+ add r3, r2, #0x0
+ lsl r1, r1, #0x13
+ lsr r1, r1, #0x10
+ str r1, [sp, #0x4]
+ mov r1, #0xf
+ bl FUN_020196F4
+ mov r3, #0x81
+ ldrsb r3, [r4, r3]
+ ldr r0, [r4, #0x78]
+ ldr r1, [r4, #0x7c]
+ mov r2, #0x0
+ lsl r3, r3, #0x4
+ bl FUN_020136F8
+ ldr r0, [r4, #0x7c]
+ bl FUN_02019548
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r4, pc}
+ nop
+_02051E1C: .word 0x021C48B8
+_02051E20: .word 0x000005DC
+
+ thumb_func_start FUN_02051E24
+FUN_02051E24: ; 0x02051E24
+ ldr r3, _02051E2C ; =FUN_0200CCF8
+ ldr r0, [r0, #0x7c]
+ mov r1, #0x1
+ bx r3
+ .balign 4
+_02051E2C: .word FUN_0200CCF8
+
+ thumb_func_start FUN_02051E30
+FUN_02051E30: ; 0x02051E30
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, r3, #0x0
+ bl FUN_020519E4
+ add r1, r0, #0x0
+ add r1, #0x86
+ ldrh r1, [r1, #0x0]
+ cmp r1, r4
+ beq _02051E52
+ add r1, r0, #0x0
+ add r1, #0x89
+ ldrb r2, [r1, #0x0]
+ mov r1, #0x2
+ add r0, #0x89
+ orr r1, r2
+ strb r1, [r0, #0x0]
+_02051E52:
+ pop {r4, pc}
+
+ thumb_func_start FUN_02051E54
+FUN_02051E54: ; 0x02051E54
+ push {r3, lr}
+ bl FUN_020690C4
+ lsl r1, r0, #0x1
+ add r0, r0, r1
+ add r0, r0, #0x4
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02051E64
+FUN_02051E64: ; 0x02051E64
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, r1, #0x0
+ bl FUN_020519E4
+ add r1, r0, #0x0
+ add r1, #0x86
+ ldrh r1, [r1, #0x0]
+ cmp r1, r4
+ beq _02051E7C
+ ldr r0, [r0, #0x48]
+ pop {r4, pc}
+_02051E7C:
+ mov r0, #0x0
+ pop {r4, pc}
+
+ thumb_func_start FUN_02051E80
+FUN_02051E80: ; 0x02051E80
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, r3, #0x0
+ add r4, r2, #0x0
+ bl FUN_020519E4
+ add r1, r0, #0x0
+ add r1, #0x86
+ ldrh r1, [r1, #0x0]
+ cmp r1, r5
+ beq _02051EAC
+ ldrb r2, [r4, #0x0]
+ add r1, r0, #0x0
+ add r1, #0x85
+ strb r2, [r1, #0x0]
+ add r1, r0, #0x0
+ add r1, #0x89
+ ldrb r2, [r1, #0x0]
+ mov r1, #0x2
+ add r0, #0x89
+ orr r1, r2
+ strb r1, [r0, #0x0]
+_02051EAC:
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02051EB0
+FUN_02051EB0: ; 0x02051EB0
+ push {r4-r6, lr}
+ add r4, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ mov r1, #0x0
+ ldr r0, [r4, #0x24]
+ add r2, r1, #0x0
+ bl FUN_02050BF8
+ add r6, r0, #0x0
+ ldr r0, [r4, #0x28]
+ cmp r0, #0x7
+ bls _02051ED6
+ b _02052036
+_02051ED6:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02051EE2: ; jump table (using 16-bit offset)
+ .short _02051EF2 - _02051EE2 - 2; case 0
+ .short _02051F7C - _02051EE2 - 2; case 1
+ .short _02051FCC - _02051EE2 - 2; case 2
+ .short _02051FDC - _02051EE2 - 2; case 3
+ .short _02051FEC - _02051EE2 - 2; case 4
+ .short _02051FFE - _02051EE2 - 2; case 5
+ .short _0205200C - _02051EE2 - 2; case 6
+ .short _02052028 - _02051EE2 - 2; case 7
+_02051EF2:
+ mov r0, #0x4
+ bl FUN_0200AA80
+ str r0, [r4, #0x18]
+ mov r0, #0x0
+ mov r1, #0x1a
+ mov r2, #0x9
+ mov r3, #0x4
+ bl FUN_0200A86C
+ str r0, [r4, #0x1c]
+ mov r0, #0xc8
+ mov r1, #0x4
+ bl FUN_020219F4
+ str r0, [r4, #0x0]
+ mov r0, #0xc8
+ mov r1, #0x4
+ bl FUN_020219F4
+ str r0, [r4, #0x4]
+ ldrb r1, [r6, #0x3]
+ ldr r0, [r4, #0x1c]
+ ldr r2, [r4, #0x0]
+ add r1, r1, #0x2
+ bl FUN_0200A8E0
+ ldr r0, [r4, #0x24]
+ bl FUN_0202DFA4
+ add r2, r0, #0x0
+ ldr r0, [r4, #0x18]
+ mov r1, #0x0
+ bl FUN_0200ABC0
+ ldr r0, [r4, #0x18]
+ ldr r1, [r4, #0x4]
+ ldr r2, [r4, #0x0]
+ bl FUN_0200B7B8
+ add r1, r4, #0x0
+ ldr r0, [r5, #0x8]
+ add r1, #0x8
+ mov r2, #0x3
+ bl FUN_020545B8
+ ldr r0, [r5, #0xc]
+ bl LoadPlayerDataAddress
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x8
+ bl FUN_02054608
+ ldr r0, [r5, #0xc]
+ bl LoadPlayerDataAddress
+ add r2, r0, #0x0
+ add r0, r4, #0x0
+ ldr r1, [r4, #0x4]
+ add r0, #0x8
+ mov r3, #0x1
+ bl FUN_02054658
+ str r0, [r4, #0x20]
+ ldr r0, [r4, #0x28]
+ add r0, r0, #0x1
+ str r0, [r4, #0x28]
+ b _0205203A
+_02051F7C:
+ ldr r0, [r4, #0x20]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_020546C8
+ cmp r0, #0x0
+ beq _0205203A
+ ldr r0, _02052040 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x1
+ tst r0, r1
+ beq _0205203A
+ ldr r0, [r4, #0x1c]
+ bl FUN_0200A8B8
+ ldr r0, [r4, #0x18]
+ bl FUN_0200AB18
+ ldr r0, [r4, #0x0]
+ bl FUN_02021A20
+ ldr r0, [r4, #0x4]
+ bl FUN_02021A20
+ add r0, r4, #0x0
+ add r0, #0x8
+ mov r1, #0x0
+ bl FUN_0200D0E0
+ add r0, r4, #0x0
+ add r0, #0x8
+ bl FUN_02019178
+ mov r0, #0x0
+ bl FUN_021D7CA4
+ ldr r0, [r4, #0x28]
+ add r0, r0, #0x1
+ str r0, [r4, #0x28]
+ b _0205203A
+_02051FCC:
+ bl FUN_0200E308
+ cmp r0, #0x0
+ beq _0205203A
+ ldr r0, [r4, #0x28]
+ add r0, r0, #0x1
+ str r0, [r4, #0x28]
+ b _0205203A
+_02051FDC:
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02038680
+ ldr r0, [r4, #0x28]
+ add r0, r0, #0x1
+ str r0, [r4, #0x28]
+ b _0205203A
+_02051FEC:
+ add r0, r5, #0x0
+ bl FUN_0204647C
+ cmp r0, #0x0
+ bne _0205203A
+ ldr r0, [r4, #0x28]
+ add r0, r0, #0x1
+ str r0, [r4, #0x28]
+ b _0205203A
+_02051FFE:
+ add r0, r5, #0x0
+ bl FUN_0204649C
+ ldr r0, [r4, #0x28]
+ add r0, r0, #0x1
+ str r0, [r4, #0x28]
+ b _0205203A
+_0205200C:
+ add r0, r5, #0x0
+ bl FUN_020464A4
+ cmp r0, #0x0
+ bne _0205203A
+ mov r0, #0x1
+ bl FUN_021D7CA4
+ bl FUN_0204CC9C
+ ldr r0, [r4, #0x28]
+ add r0, r0, #0x1
+ str r0, [r4, #0x28]
+ b _0205203A
+_02052028:
+ bl FUN_0204F7FC
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_02052036:
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_0205203A:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ nop
+_02052040: .word 0x021C48B8
+
+ thumb_func_start FUN_02052044
+FUN_02052044: ; 0x02052044
+ push {r3-r7, lr}
+ str r0, [sp, #0x0]
+ bl FUN_02031190
+ add r5, r0, #0x0
+ bl FUN_0204E4D4
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0204E50C
+ add r6, r0, #0x0
+ mov r4, #0x0
+ bl FUN_02030F20
+ cmp r0, #0x0
+ ble _020520A6
+_02052066:
+ cmp r4, r5
+ beq _0205209C
+ add r0, r4, #0x0
+ bl FUN_0204E3EC
+ cmp r7, r0
+ bne _0205209C
+ add r0, r4, #0x0
+ bl FUN_0204E440
+ cmp r6, r0
+ bne _0205209C
+ mov r0, #0xb
+ mov r1, #0x2c
+ bl FUN_020169D8
+ add r2, r0, #0x0
+ str r4, [r2, #0x24]
+ mov r0, #0x0
+ str r0, [r2, #0x28]
+ ldr r0, [sp, #0x0]
+ ldr r1, _020520A8 ; =FUN_02051EB0
+ bl FUN_020463CC
+ bl FUN_02037760
+ pop {r3-r7, pc}
+_0205209C:
+ add r4, r4, #0x1
+ bl FUN_02030F20
+ cmp r4, r0
+ blt _02052066
+_020520A6:
+ pop {r3-r7, pc}
+ .balign 4
+_020520A8: .word FUN_02051EB0
+
+ thumb_func_start FUN_020520AC
+FUN_020520AC: ; 0x020520AC
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bne _020520B6
+ bl ErrorHandling
+_020520B6:
+ ldr r0, [r4, #0x78]
+ cmp r0, #0x0
+ beq _020520C0
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_020520C0:
+ mov r2, #0x2a
+ mov r0, #0x3
+ mov r1, #0x1f
+ lsl r2, r2, #0x6
+ bl FUN_02016828
+ add r0, r4, #0x0
+ bl FUN_02052110
+ add r5, r0, #0x0
+ bne _020520D8
+ ldr r5, [r4, #0x78]
+_020520D8:
+ add r0, r4, #0x0
+ bl FUN_0208881C
+ mov r0, #0x2
+ bl FUN_02032B6C
+ ldr r1, _020520F4 ; =FUN_02052178
+ add r0, r5, #0x0
+ mov r2, #0x28
+ bl FUN_02052300
+ add r0, r5, #0x0
+ pop {r3-r5, pc}
+ nop
+_020520F4: .word FUN_02052178
+
+ thumb_func_start FUN_020520F8
+FUN_020520F8: ; 0x020520F8
+ push {r3, lr}
+ ldr r0, [r0, #0x78]
+ cmp r0, #0x0
+ beq _02052108
+ ldr r1, _0205210C ; =FUN_02052348
+ mov r2, #0x5
+ bl FUN_02052300
+_02052108:
+ pop {r3, pc}
+ nop
+_0205210C: .word FUN_02052348
+
+ thumb_func_start FUN_02052110
+FUN_02052110: ; 0x02052110
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r1, [r5, #0x78]
+ cmp r1, #0x0
+ beq _0205211E
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_0205211E:
+ bl FUN_020377AC
+ add r6, r0, #0x0
+ bl FUN_02031A7C
+ mov r1, #0x19
+ mov r0, #0x1f
+ lsl r1, r1, #0x4
+ bl FUN_02016998
+ mov r2, #0x19
+ mov r1, #0x0
+ lsl r2, r2, #0x4
+ add r4, r0, #0x0
+ blx MI_CpuFill8
+ mov r0, #0x0
+ str r0, [r4, #0x10]
+ mov r0, #0x28
+ str r0, [r4, #0x14]
+ ldr r0, _02052174 ; =FUN_02052308
+ add r1, r4, #0x0
+ mov r2, #0xa
+ bl FUN_0200CA44
+ str r0, [r4, #0xc]
+ str r5, [r4, #0x0]
+ str r6, [r4, #0x4]
+ add r0, r6, #0x0
+ bl FUN_020238F4
+ str r0, [r4, #0x8]
+ add r0, r4, #0x0
+ bl FUN_02052E1C
+ mov r0, #0x15
+ lsl r0, r0, #0x4
+ add r0, r4, r0
+ bl FUN_020312BC
+ add r0, r4, #0x0
+ pop {r4-r6, pc}
+ nop
+_02052174: .word FUN_02052308
+
+ thumb_func_start FUN_02052178
+FUN_02052178: ; 0x02052178
+ push {r4, lr}
+ sub sp, #0x8
+ add r4, r0, #0x0
+ bl FUN_0202EDF8
+ cmp r0, #0x0
+ beq _020521A4
+ add r0, sp, #0x0
+ bl FUN_02013754
+ add r0, sp, #0x0
+ bl FUN_02052DE8
+ add r0, r4, #0x0
+ add r1, sp, #0x0
+ bl FUN_02052CD8
+ ldr r1, _020521A8 ; =FUN_020521AC
+ add r0, r4, #0x0
+ mov r2, #0x28
+ bl FUN_02052300
+_020521A4:
+ add sp, #0x8
+ pop {r4, pc}
+ .balign 4
+_020521A8: .word FUN_020521AC
+
+ thumb_func_start FUN_020521AC
+FUN_020521AC: ; 0x020521AC
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02031B2C
+ cmp r0, #0x0
+ beq _020521C8
+ ldr r0, _02052208 ; =0x021C5A70
+ mov r2, #0x0
+ str r2, [r0, #0x0]
+ ldr r1, _0205220C ; =FUN_0205225C
+ add r0, r4, #0x0
+ bl FUN_02052300
+ pop {r4, pc}
+_020521C8:
+ ldr r0, [r4, #0x20]
+ cmp r0, #0x0
+ beq _02052206
+ mov r0, #0x2
+ str r0, [r4, #0x28]
+ ldr r0, [r4, #0x20]
+ cmp r0, #0x1
+ bne _020521EC
+ ldr r0, [r4, #0x30]
+ cmp r0, #0x5
+ ldr r0, [r4, #0x18]
+ bne _020521E6
+ bl FUN_020328F4
+ b _020521FC
+_020521E6:
+ bl FUN_02031AC8
+ b _020521FC
+_020521EC:
+ cmp r0, #0x2
+ bne _020521FC
+ mov r0, #0x0
+ bl FUN_02083D48
+ ldr r0, [r4, #0x18]
+ bl FUN_020328C0
+_020521FC:
+ ldr r1, _02052210 ; =FUN_02052380
+ add r0, r4, #0x0
+ mov r2, #0xc
+ bl FUN_02052300
+_02052206:
+ pop {r4, pc}
+ .balign 4
+_02052208: .word 0x021C5A70
+_0205220C: .word FUN_0205225C
+_02052210: .word FUN_02052380
+
+ thumb_func_start FUN_02052214
+FUN_02052214: ; 0x02052214
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02031BD0
+ cmp r0, #0x1
+ bne _02052230
+ ldr r0, [r4, #0x0]
+ bl FUN_0208881C
+ ldr r1, _02052234 ; =FUN_020521AC
+ add r0, r4, #0x0
+ mov r2, #0x2
+ bl FUN_02052300
+_02052230:
+ pop {r4, pc}
+ nop
+_02052234: .word FUN_020521AC
+
+ thumb_func_start FUN_02052238
+FUN_02052238: ; 0x02052238
+ push {r3-r5, lr}
+ mov r5, #0x0
+ mov r4, #0x1
+_0205223E:
+ add r0, r4, #0x0
+ bl FUN_0202DFA4
+ cmp r0, #0x0
+ beq _0205224A
+ add r5, r5, #0x1
+_0205224A:
+ add r4, r4, #0x1
+ cmp r4, #0x5
+ blt _0205223E
+ cmp r5, #0x1
+ blt _02052258
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_02052258:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0205225C
+FUN_0205225C: ; 0x0205225C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x14]
+ cmp r0, #0x0
+ ble _0205226C
+ sub r0, r0, #0x1
+ str r0, [r4, #0x14]
+ pop {r4, pc}
+_0205226C:
+ ldr r0, _020522C4 ; =0x021C5A70
+ ldr r1, [r0, #0x0]
+ add r1, r1, #0x1
+ str r1, [r0, #0x0]
+ bl FUN_020311E8
+ cmp r0, #0x0
+ beq _020522A0
+ bl FUN_02052238
+ cmp r0, #0x1
+ bne _020522A0
+ bl FUN_0202DBE0
+ mov r0, #0x1
+ add r1, r0, #0x0
+ bl FUN_020334E8
+ mov r0, #0xb
+ bl FUN_02052B74
+ ldr r1, _020522C8 ; =FUN_020522D0
+ add r0, r4, #0x0
+ mov r2, #0x0
+ bl FUN_02052300
+_020522A0:
+ bl FUN_02031B2C
+ cmp r0, #0x0
+ bne _020522C2
+ bl FUN_02031B50
+ add r0, r4, #0x0
+ bl FUN_02052E1C
+ mov r0, #0x0
+ bl FUN_02052B74
+ ldr r1, _020522CC ; =FUN_02052214
+ add r0, r4, #0x0
+ mov r2, #0x2
+ bl FUN_02052300
+_020522C2:
+ pop {r4, pc}
+ .balign 4
+_020522C4: .word 0x021C5A70
+_020522C8: .word FUN_020522D0
+_020522CC: .word FUN_02052214
+
+ thumb_func_start FUN_020522D0
+FUN_020522D0: ; 0x020522D0
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_020311E8
+ bl FUN_020311E8
+ cmp r0, #0x0
+ bne _020522FA
+ bl FUN_02031B50
+ add r0, r4, #0x0
+ bl FUN_02052E1C
+ mov r0, #0x0
+ bl FUN_02052B74
+ ldr r1, _020522FC ; =FUN_02052214
+ add r0, r4, #0x0
+ mov r2, #0x2
+ bl FUN_02052300
+_020522FA:
+ pop {r4, pc}
+ .balign 4
+_020522FC: .word FUN_02052214
+
+ thumb_func_start FUN_02052300
+FUN_02052300: ; 0x02052300
+ str r1, [r0, #0x10]
+ str r2, [r0, #0x14]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02052308
+FUN_02052308: ; 0x02052308
+ push {r3-r7, lr}
+ str r1, [sp, #0x0]
+ cmp r1, #0x0
+ bne _02052316
+ bl FUN_0200CAB4
+ pop {r3-r7, pc}
+_02052316:
+ mov r7, #0x11
+ ldr r5, _02052344 ; =0x021C5A7C
+ mov r6, #0x0
+ add r4, r1, #0x0
+ lsl r7, r7, #0x4
+_02052320:
+ add r0, r6, #0x0
+ bl FUN_0202EF18
+ mov r1, #0x11
+ lsl r1, r1, #0x4
+ str r0, [r4, r1]
+ ldr r0, [r4, r7]
+ add r6, r6, #0x1
+ add r4, r4, #0x4
+ stmia r5!, {r0}
+ cmp r6, #0x10
+ blt _02052320
+ ldr r0, [sp, #0x0]
+ ldr r1, [r0, #0x10]
+ cmp r1, #0x0
+ beq _02052342
+ blx r1
+_02052342:
+ pop {r3-r7, pc}
+ .balign 4
+_02052344: .word 0x021C5A7C
+
+ thumb_func_start FUN_02052348
+FUN_02052348: ; 0x02052348
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x14]
+ cmp r0, #0x0
+ beq _02052358
+ sub r0, r0, #0x1
+ str r0, [r4, #0x14]
+ pop {r4, pc}
+_02052358:
+ bl FUN_02031BF4
+ ldr r1, _02052368 ; =FUN_0205236C
+ add r0, r4, #0x0
+ mov r2, #0x0
+ bl FUN_02052300
+ pop {r4, pc}
+ .balign 4
+_02052368: .word FUN_0205236C
+
+ thumb_func_start FUN_0205236C
+FUN_0205236C: ; 0x0205236C
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02030F40
+ cmp r0, #0x0
+ bne _0205237E
+ add r0, r4, #0x0
+ bl FUN_020524A0
+_0205237E:
+ pop {r4, pc}
+
+ thumb_func_start FUN_02052380
+FUN_02052380: ; 0x02052380
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02031AF4
+ cmp r0, #0x1
+ bne _0205239C
+ bl FUN_0202DBE0
+ ldr r1, _020523D4 ; =FUN_02052410
+ add r0, r4, #0x0
+ mov r2, #0x3
+ bl FUN_02052300
+ pop {r4, pc}
+_0205239C:
+ bl FUN_020311E8
+ cmp r0, #0x0
+ beq _020523B4
+ mov r2, #0x0
+ str r2, [r4, #0x20]
+ mov r0, #0x3
+ str r0, [r4, #0x1c]
+ ldr r1, _020523D8 ; =FUN_0205225C
+ add r0, r4, #0x0
+ bl FUN_02052300
+_020523B4:
+ bl FUN_02031AF4
+ cmp r0, #0x0
+ beq _020523D2
+ ldr r1, _020523DC ; =FUN_020523E0
+ add r0, r4, #0x0
+ mov r2, #0x2
+ bl FUN_02052300
+ mov r1, #0x0
+ str r1, [r4, #0x24]
+ mov r0, #0x2
+ str r0, [r4, #0x1c]
+ str r1, [r4, #0x20]
+ str r1, [r4, #0x44]
+_020523D2:
+ pop {r4, pc}
+ .balign 4
+_020523D4: .word FUN_02052410
+_020523D8: .word FUN_0205225C
+_020523DC: .word FUN_020523E0
+
+ thumb_func_start FUN_020523E0
+FUN_020523E0: ; 0x020523E0
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_0204646C
+ cmp r0, #0x0
+ bne _02052408
+ bl FUN_02031B50
+ add r0, r4, #0x0
+ bl FUN_02052E1C
+ mov r0, #0x0
+ bl FUN_02052B74
+ ldr r1, _0205240C ; =FUN_02052214
+ add r0, r4, #0x0
+ mov r2, #0x2
+ bl FUN_02052300
+_02052408:
+ pop {r4, pc}
+ nop
+_0205240C: .word FUN_02052214
+
+ thumb_func_start FUN_02052410
+FUN_02052410: ; 0x02052410
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02031AF4
+ cmp r0, #0x1
+ bne _02052444
+ bl FUN_02031190
+ bl FUN_0202DFA4
+ cmp r0, #0x0
+ beq _0205246C
+ mov r1, #0x0
+ str r1, [r4, #0x20]
+ mov r0, #0x1
+ str r0, [r4, #0x1c]
+ str r1, [r4, #0x44]
+ add r1, r0, #0x0
+ bl FUN_020334E8
+ ldr r1, _02052470 ; =FUN_02052478
+ add r0, r4, #0x0
+ mov r2, #0x3
+ bl FUN_02052300
+ pop {r4, pc}
+_02052444:
+ bl FUN_02031AF4
+ cmp r0, #0x0
+ bne _0205246C
+ bl FUN_02031B50
+ add r0, r4, #0x0
+ bl FUN_02052E1C
+ ldr r1, _02052474 ; =FUN_02052214
+ add r0, r4, #0x0
+ mov r2, #0x2
+ bl FUN_02052300
+ mov r1, #0x0
+ str r1, [r4, #0x24]
+ mov r0, #0x2
+ str r0, [r4, #0x1c]
+ str r1, [r4, #0x20]
+ str r1, [r4, #0x44]
+_0205246C:
+ pop {r4, pc}
+ nop
+_02052470: .word FUN_02052478
+_02052474: .word FUN_02052214
+
+ thumb_func_start FUN_02052478
+FUN_02052478: ; 0x02052478
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02031AF4
+ cmp r0, #0x0
+ bne _02052498
+ bl FUN_02031B50
+ add r0, r4, #0x0
+ bl FUN_02052E1C
+ ldr r1, _0205249C ; =FUN_02052214
+ add r0, r4, #0x0
+ mov r2, #0x2
+ bl FUN_02052300
+_02052498:
+ pop {r4, pc}
+ nop
+_0205249C: .word FUN_02052214
+
+ thumb_func_start FUN_020524A0
+FUN_020524A0: ; 0x020524A0
+ push {r4, lr}
+ add r4, r0, #0x0
+ beq _020524B8
+ ldr r0, [r4, #0xc]
+ bl FUN_0200CAB4
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0x1f
+ bl FUN_020168D0
+_020524B8:
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020524BC
+FUN_020524BC: ; 0x020524BC
+ ldr r0, [r0, #0x0]
+ bx lr
+
+ thumb_func_start FUN_020524C0
+FUN_020524C0: ; 0x020524C0
+ lsl r1, r1, #0x2
+ add r1, r0, r1
+ mov r0, #0x11
+ lsl r0, r0, #0x4
+ ldr r0, [r1, r0]
+ bx lr
+
+ thumb_func_start FUN_020524CC
+FUN_020524CC: ; 0x020524CC
+ push {r4-r6, lr}
+ add r5, r1, #0x0
+ add r4, r0, #0x0
+ sub r0, r5, #0x1
+ bl FUN_0202EF84
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02052E10
+ cmp r6, #0x0
+ bne _020524E8
+ mov r0, #0x5
+ pop {r4-r6, pc}
+_020524E8:
+ sub r0, r5, #0x1
+ lsl r0, r0, #0x2
+ add r1, r4, r0
+ mov r0, #0x11
+ lsl r0, r0, #0x4
+ ldr r1, [r1, r0]
+ ldr r0, _02052540 ; =0x021C5A70
+ add r1, #0x50
+ add r1, #0x30
+ str r1, [r0, #0x4]
+ ldrb r0, [r1, #0x1c]
+ cmp r0, #0xb
+ bhi _0205253A
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0205250E: ; jump table (using 16-bit offset)
+ .short _02052526 - _0205250E - 2; case 0
+ .short _0205252A - _0205250E - 2; case 1
+ .short _0205252E - _0205250E - 2; case 2
+ .short _02052532 - _0205250E - 2; case 3
+ .short _02052536 - _0205250E - 2; case 4
+ .short _02052536 - _0205250E - 2; case 5
+ .short _02052536 - _0205250E - 2; case 6
+ .short _02052536 - _0205250E - 2; case 7
+ .short _02052536 - _0205250E - 2; case 8
+ .short _0205253A - _0205250E - 2; case 9
+ .short _0205253A - _0205250E - 2; case 10
+ .short _02052536 - _0205250E - 2; case 11
+_02052526:
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_0205252A:
+ mov r0, #0x2
+ pop {r4-r6, pc}
+_0205252E:
+ mov r0, #0x3
+ pop {r4-r6, pc}
+_02052532:
+ mov r0, #0x4
+ pop {r4-r6, pc}
+_02052536:
+ mov r0, #0x5
+ pop {r4-r6, pc}
+_0205253A:
+ mov r0, #0x5
+ pop {r4-r6, pc}
+ nop
+_02052540: .word 0x021C5A70
+
+ thumb_func_start FUN_02052544
+FUN_02052544: ; 0x02052544
+ push {r4-r6, lr}
+ add r6, r1, #0x0
+ add r4, r0, #0x0
+ sub r0, r6, #0x1
+ add r5, r2, #0x0
+ bl FUN_0202EF84
+ sub r0, r6, #0x1
+ lsl r1, r0, #0x2
+ add r2, r4, r1
+ mov r1, #0x11
+ lsl r1, r1, #0x4
+ ldr r2, [r2, r1]
+ ldr r1, _02052600 ; =0x021C5A70
+ add r2, #0x50
+ add r2, #0x30
+ str r2, [r1, #0x4]
+ ldrb r1, [r2, #0x1c]
+ cmp r1, #0xb
+ bhi _020525F8
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02052578: ; jump table (using 16-bit offset)
+ .short _020525C6 - _02052578 - 2; case 0
+ .short _020525DC - _02052578 - 2; case 1
+ .short _020525AC - _02052578 - 2; case 2
+ .short _02052590 - _02052578 - 2; case 3
+ .short _020525F4 - _02052578 - 2; case 4
+ .short _020525F4 - _02052578 - 2; case 5
+ .short _020525F4 - _02052578 - 2; case 6
+ .short _020525F4 - _02052578 - 2; case 7
+ .short _020525F4 - _02052578 - 2; case 8
+ .short _020525F8 - _02052578 - 2; case 9
+ .short _020525F8 - _02052578 - 2; case 10
+ .short _020525F4 - _02052578 - 2; case 11
+_02052590:
+ cmp r5, #0x4
+ beq _02052598
+ mov r0, #0x5
+ pop {r4-r6, pc}
+_02052598:
+ mov r1, #0x6
+ str r1, [r4, #0x30]
+ str r0, [r4, #0x18]
+ mov r0, #0x2
+ str r0, [r4, #0x20]
+ mov r0, #0x0
+ str r0, [r4, #0x24]
+ str r0, [r4, #0x1c]
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_020525AC:
+ cmp r5, #0x3
+ beq _020525B4
+ mov r0, #0x5
+ pop {r4-r6, pc}
+_020525B4:
+ mov r1, #0x5
+ str r1, [r4, #0x30]
+ str r0, [r4, #0x18]
+ mov r0, #0x1
+ str r0, [r4, #0x20]
+ mov r1, #0x0
+ str r1, [r4, #0x24]
+ str r1, [r4, #0x1c]
+ pop {r4-r6, pc}
+_020525C6:
+ cmp r5, #0x1
+ beq _020525CE
+ mov r0, #0x5
+ pop {r4-r6, pc}
+_020525CE:
+ str r0, [r4, #0x18]
+ mov r0, #0x1
+ str r0, [r4, #0x20]
+ mov r1, #0x0
+ str r1, [r4, #0x24]
+ str r1, [r4, #0x1c]
+ pop {r4-r6, pc}
+_020525DC:
+ cmp r5, #0x2
+ beq _020525E4
+ mov r0, #0x5
+ pop {r4-r6, pc}
+_020525E4:
+ str r0, [r4, #0x18]
+ mov r0, #0x2
+ str r0, [r4, #0x20]
+ mov r0, #0x0
+ str r0, [r4, #0x24]
+ str r0, [r4, #0x1c]
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_020525F4:
+ mov r0, #0x5
+ pop {r4-r6, pc}
+_020525F8:
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+_02052600: .word 0x021C5A70
+
+ thumb_func_start FUN_02052604
+FUN_02052604: ; 0x02052604
+ ldr r0, [r0, #0x1c]
+ bx lr
+
+ thumb_func_start FUN_02052608
+FUN_02052608: ; 0x02052608
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x44]
+ cmp r0, #0x0
+ beq _02052616
+ mov r0, #0x7
+ pop {r4, pc}
+_02052616:
+ bl FUN_02030F20
+ cmp r0, #0x2
+ bge _02052622
+ mov r0, #0x7
+ pop {r4, pc}
+_02052622:
+ bl FUN_02031190
+ cmp r0, #0x0
+ bne _02052636
+ bl FUN_02031B2C
+ cmp r0, #0x1
+ bne _02052642
+ ldr r0, [r4, #0x40]
+ pop {r4, pc}
+_02052636:
+ bl FUN_02031AF4
+ cmp r0, #0x1
+ bne _02052642
+ ldr r0, [r4, #0x40]
+ pop {r4, pc}
+_02052642:
+ mov r0, #0x7
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02052648
+FUN_02052648: ; 0x02052648
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02031B2C
+ cmp r0, #0x1
+ bne _02052658
+ ldr r0, [r4, #0x30]
+ pop {r4, pc}
+_02052658:
+ mov r0, #0x7
+ pop {r4, pc}
+
+ thumb_func_start FUN_0205265C
+FUN_0205265C: ; 0x0205265C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r2, #0x0
+ add r0, sp, #0x0
+ strb r4, [r0, #0x2]
+ cmp r1, #0x0
+ beq _02052670
+ cmp r1, #0x1
+ beq _02052688
+ pop {r3-r5, pc}
+_02052670:
+ ldr r1, [r5, #0x44]
+ cmp r1, #0x0
+ bne _020526B0
+ ldrb r0, [r0, #0x2]
+ add r1, sp, #0x0
+ add r1, #0x2
+ str r0, [r5, #0x34]
+ mov r0, #0x63
+ mov r2, #0x1
+ bl FUN_02030ADC
+ pop {r3-r5, pc}
+_02052688:
+ cmp r4, #0x0
+ bne _020526A0
+ ldr r1, [r5, #0x30]
+ mov r2, #0x1
+ strb r1, [r0, #0x1]
+ add r1, sp, #0x0
+ mov r0, #0x67
+ add r1, #0x1
+ bl FUN_02030BC4
+ str r4, [r5, #0x3c]
+ pop {r3-r5, pc}
+_020526A0:
+ mov r1, #0x7
+ strb r1, [r0, #0x0]
+ mov r0, #0x67
+ add r1, sp, #0x0
+ mov r2, #0x1
+ bl FUN_02030BC4
+ str r4, [r5, #0x3c]
+_020526B0:
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020526B4
+FUN_020526B4: ; 0x020526B4
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020526B8
+FUN_020526B8: ; 0x020526B8
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020526BC
+FUN_020526BC: ; 0x020526BC
+ push {r4, lr}
+ add r4, r3, #0x0
+ ldr r0, [r4, #0x78]
+ ldr r1, _020526D4 ; =FUN_020521AC
+ mov r2, #0x2
+ bl FUN_02052300
+ ldr r0, [r4, #0x78]
+ bl FUN_02052E1C
+ pop {r4, pc}
+ nop
+_020526D4: .word FUN_020521AC
+
+ thumb_func_start FUN_020526D8
+FUN_020526D8: ; 0x020526D8
+ ldr r1, [r3, #0x78]
+ ldr r0, [r1, #0x44]
+ cmp r0, #0x0
+ bne _020526EA
+ ldrb r0, [r2, #0x0]
+ str r0, [r1, #0x30]
+ ldrb r1, [r2, #0x0]
+ ldr r0, _020526EC ; =0x021C5A70
+ str r1, [r0, #0x8]
+_020526EA:
+ bx lr
+ .balign 4
+_020526EC: .word 0x021C5A70
+
+ thumb_func_start FUN_020526F0
+FUN_020526F0: ; 0x020526F0
+ push {r3, lr}
+ ldr r0, [r3, #0x78]
+ mov r1, #0x1
+ str r1, [r0, #0x2c]
+ ldrb r1, [r2, #0x0]
+ ldr r0, [r3, #0x78]
+ str r1, [r0, #0x40]
+ ldrb r0, [r2, #0x0]
+ cmp r0, #0x4
+ bne _02052708
+ bl FUN_02032888
+_02052708:
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205270C
+FUN_0205270C: ; 0x0205270C
+ ldr r0, [r3, #0x78]
+ mov r1, #0x1
+ str r1, [r0, #0x44]
+ bx lr
+
+ thumb_func_start FUN_02052714
+FUN_02052714: ; 0x02052714
+ ldr r0, [r0, #0x44]
+ bx lr
+
+ thumb_func_start FUN_02052718
+FUN_02052718: ; 0x02052718
+ push {r4, lr}
+ ldr r0, [r0, #0x30]
+ add r4, r1, #0x0
+ cmp r0, #0x0
+ bne _02052730
+ mov r1, #0x0
+ mov r0, #0x68
+ add r2, r1, #0x0
+ bl FUN_02030ADC
+ add r0, r4, #0x0
+ pop {r4, pc}
+_02052730:
+ mov r0, #0x0
+ pop {r4, pc}
+
+ thumb_func_start FUN_02052734
+FUN_02052734: ; 0x02052734
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ add r4, r3, #0x0
+ bl FUN_02031190
+ mov r1, #0x1
+ eor r0, r1
+ bl FUN_0202DFA4
+ add r7, r0, #0x0
+ ldr r0, _02052784 ; =0x0000066A
+ mov r1, #0x1
+ strh r1, [r6, r0]
+ bl FUN_02031190
+ cmp r5, r0
+ beq _02052780
+ add r0, r7, #0x0
+ bl FUN_0202398C
+ add r5, r0, #0x0
+ add r0, r7, #0x0
+ bl FUN_020239CC
+ add r1, r0, #0x0
+ lsl r1, r1, #0x18
+ add r0, r5, #0x0
+ lsr r1, r1, #0x18
+ mov r2, #0x1f
+ bl FUN_0202942C
+ add r4, #0x98
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ mov r2, #0x4
+ bl FUN_02028AD4
+_02052780:
+ pop {r3-r7, pc}
+ nop
+_02052784: .word 0x0000066A
+
+ thumb_func_start FUN_02052788
+FUN_02052788: ; 0x02052788
+ ldr r1, [r1, #0x78]
+ lsl r0, r0, #0x2
+ add r1, r1, r0
+ mov r0, #0x62
+ lsl r0, r0, #0x2
+ ldr r0, [r1, r0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02052798
+FUN_02052798: ; 0x02052798
+ ldr r1, [r3, #0x78]
+ ldrb r2, [r2, #0x0]
+ add r1, r1, r0
+ ldr r0, _020527A4 ; =0x00000176
+ strb r2, [r1, r0]
+ bx lr
+ .balign 4
+_020527A4: .word 0x00000176
+
+ thumb_func_start FUN_020527A8
+FUN_020527A8: ; 0x020527A8
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02031190
+ ldr r2, _020527D4 ; =0x00000176
+ add r1, r4, r0
+ ldrb r1, [r1, r2]
+ cmp r1, #0x2
+ bne _020527BE
+ mov r0, #0x1
+ pop {r4, pc}
+_020527BE:
+ mov r1, #0x1
+ eor r0, r1
+ add r0, r4, r0
+ ldrb r0, [r0, r2]
+ cmp r0, #0x2
+ bne _020527CE
+ mov r0, #0x2
+ pop {r4, pc}
+_020527CE:
+ mov r0, #0x0
+ pop {r4, pc}
+ nop
+_020527D4: .word 0x00000176
+
+ thumb_func_start FUN_020527D8
+FUN_020527D8: ; 0x020527D8
+ push {r3, lr}
+ add r1, sp, #0x0
+ strb r0, [r1, #0x0]
+ mov r0, #0x65
+ add r1, sp, #0x0
+ mov r2, #0x1
+ bl FUN_02030ADC
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_020527EC
+FUN_020527EC: ; 0x020527EC
+ ldr r3, _02052810 ; =0x020F58D4
+ mov r2, #0x0
+_020527F0:
+ ldrh r1, [r3, #0x0]
+ cmp r1, r0
+ bgt _02052800
+ add r1, r1, #0x4
+ cmp r1, r0
+ ble _02052800
+ add r0, r2, #0x0
+ bx lr
+_02052800:
+ add r2, r2, #0x1
+ add r3, r3, #0x2
+ cmp r2, #0xa
+ blt _020527F0
+ mov r0, #0x0
+ mvn r0, r0
+ bx lr
+ nop
+_02052810: .word 0x020F58D4
+
+ thumb_func_start FUN_02052814
+FUN_02052814: ; 0x02052814
+ push {r4-r6, lr}
+ add r4, r1, #0x0
+ add r6, r0, #0x0
+ cmp r4, #0x9
+ ble _02052834
+ add r0, r4, #0x0
+ bl FUN_020527EC
+ add r5, r0, #0x0
+ mov r0, #0x0
+ mvn r0, r0
+ cmp r4, r0
+ bne _02052836
+ bl ErrorHandling
+ b _02052836
+_02052834:
+ add r5, r4, #0x0
+_02052836:
+ add r0, r5, #0x0
+ bl FUN_0202EF84
+ lsl r1, r5, #0x2
+ add r2, r6, r1
+ mov r1, #0x11
+ lsl r1, r1, #0x4
+ ldr r5, [r2, r1]
+ add r5, #0x50
+ add r5, #0x30
+ cmp r0, #0x0
+ bne _02052852
+ mov r0, #0x28
+ pop {r4-r6, pc}
+_02052852:
+ cmp r4, #0x9
+ ble _0205286C
+ sub r4, #0xa
+ lsr r2, r4, #0x1f
+ lsl r1, r4, #0x1e
+ sub r1, r1, r2
+ mov r0, #0x1e
+ ror r1, r0
+ add r0, r2, r1
+ add r0, r5, r0
+ ldrb r0, [r0, #0x18]
+ asr r4, r0, #0x7
+ b _02052872
+_0205286C:
+ bl FUN_020239CC
+ add r4, r0, #0x0
+_02052872:
+ ldrb r0, [r5, #0x1c]
+ cmp r0, #0xb
+ bhi _0205294C
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02052884: ; jump table (using 16-bit offset)
+ .short _0205294C - _02052884 - 2; case 0
+ .short _020528F8 - _02052884 - 2; case 1
+ .short _02052914 - _02052884 - 2; case 2
+ .short _02052930 - _02052884 - 2; case 3
+ .short _0205289C - _02052884 - 2; case 4
+ .short _020528A4 - _02052884 - 2; case 5
+ .short _020528C0 - _02052884 - 2; case 6
+ .short _020528DC - _02052884 - 2; case 7
+ .short _020528F8 - _02052884 - 2; case 8
+ .short _02052914 - _02052884 - 2; case 9
+ .short _02052930 - _02052884 - 2; case 10
+ .short _0205289C - _02052884 - 2; case 11
+_0205289C:
+ ldr r0, _02052950 ; =0x020F5894
+ lsl r1, r4, #0x2
+ ldr r0, [r0, r1]
+ pop {r4-r6, pc}
+_020528A4:
+ bl FUN_0201B9EC
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x1f
+ sub r1, r1, r2
+ mov r0, #0x1f
+ ror r1, r0
+ add r0, r2, r1
+ lsl r2, r0, #0x3
+ ldr r0, _02052954 ; =0x020F58C4
+ lsl r1, r4, #0x2
+ add r0, r0, r2
+ ldr r0, [r1, r0]
+ pop {r4-r6, pc}
+_020528C0:
+ bl FUN_0201B9EC
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x1e
+ sub r1, r1, r2
+ mov r0, #0x1e
+ ror r1, r0
+ add r0, r2, r1
+ lsl r2, r0, #0x3
+ ldr r0, _02052958 ; =0x020F5984
+ lsl r1, r4, #0x2
+ add r0, r0, r2
+ ldr r0, [r1, r0]
+ pop {r4-r6, pc}
+_020528DC:
+ bl FUN_0201B9EC
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x1f
+ sub r1, r1, r2
+ mov r0, #0x1f
+ ror r1, r0
+ add r0, r2, r1
+ lsl r2, r0, #0x3
+ ldr r0, _0205295C ; =0x020F58B4
+ lsl r1, r4, #0x2
+ add r0, r0, r2
+ ldr r0, [r1, r0]
+ pop {r4-r6, pc}
+_020528F8:
+ bl FUN_0201B9EC
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x1e
+ sub r1, r1, r2
+ mov r0, #0x1e
+ ror r1, r0
+ add r0, r2, r1
+ lsl r2, r0, #0x3
+ ldr r0, _02052960 ; =0x020F5964
+ lsl r1, r4, #0x2
+ add r0, r0, r2
+ ldr r0, [r1, r0]
+ pop {r4-r6, pc}
+_02052914:
+ bl FUN_0201B9EC
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x1e
+ sub r1, r1, r2
+ mov r0, #0x1e
+ ror r1, r0
+ add r0, r2, r1
+ lsl r2, r0, #0x3
+ ldr r0, _02052964 ; =0x020F59A4
+ lsl r1, r4, #0x2
+ add r0, r0, r2
+ ldr r0, [r1, r0]
+ pop {r4-r6, pc}
+_02052930:
+ bl FUN_0201B9EC
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x1e
+ sub r1, r1, r2
+ mov r0, #0x1e
+ ror r1, r0
+ add r0, r2, r1
+ lsl r2, r0, #0x3
+ ldr r0, _02052968 ; =0x020F59C4
+ lsl r1, r4, #0x2
+ add r0, r0, r2
+ ldr r0, [r1, r0]
+ pop {r4-r6, pc}
+_0205294C:
+ mov r0, #0x28
+ pop {r4-r6, pc}
+ .balign 4
+_02052950: .word 0x020F5894
+_02052954: .word 0x020F58C4
+_02052958: .word 0x020F5984
+_0205295C: .word 0x020F58B4
+_02052960: .word 0x020F5964
+_02052964: .word 0x020F59A4
+_02052968: .word 0x020F59C4
+
+ thumb_func_start FUN_0205296C
+FUN_0205296C: ; 0x0205296C
+ push {r3-r7, lr}
+ str r0, [sp, #0x0]
+ bl FUN_02031190
+ bl FUN_0202E020
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+ bl FUN_02031190
+ mov r1, #0x1
+ eor r0, r1
+ bl FUN_0202E020
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ bl FUN_02031190
+ bl FUN_0202E044
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ bl FUN_02031190
+ mov r1, #0x1
+ eor r0, r1
+ bl FUN_0202E044
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r4, #0x0
+ bne _020529B0
+ mov r0, #0xf
+ pop {r3-r7, pc}
+_020529B0:
+ beq _020529CC
+ ldr r0, [sp, #0x0]
+ mov r1, #0x3
+ add r2, r4, #0x0
+ bl FUN_0200B4A0
+ cmp r5, #0x0
+ beq _020529CC
+ ldr r0, [sp, #0x0]
+ mov r1, #0x4
+ add r2, r4, #0x0
+ add r3, r5, #0x0
+ bl FUN_0200B4D8
+_020529CC:
+ cmp r7, r4
+ beq _020529E4
+ cmp r5, #0x0
+ bne _020529D8
+ mov r0, #0xd
+ pop {r3-r7, pc}
+_020529D8:
+ cmp r6, r5
+ bne _020529E0
+ mov r0, #0xd
+ pop {r3-r7, pc}
+_020529E0:
+ mov r0, #0xc
+ pop {r3-r7, pc}
+_020529E4:
+ cmp r6, r5
+ beq _020529EC
+ mov r0, #0xe
+ pop {r3-r7, pc}
+_020529EC:
+ mov r0, #0xf
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_020529F0
+FUN_020529F0: ; 0x020529F0
+ push {r3, lr}
+ cmp r0, #0x0
+ beq _02052A02
+ lsl r2, r0, #0x3
+ ldr r0, _02052A0C ; =0x020F5A14
+ lsl r1, r1, #0x2
+ add r0, r0, r2
+ ldr r0, [r1, r0]
+ pop {r3, pc}
+_02052A02:
+ add r0, r2, #0x0
+ bl FUN_0205296C
+ pop {r3, pc}
+ nop
+_02052A0C: .word 0x020F5A14
+
+ thumb_func_start FUN_02052A10
+FUN_02052A10: ; 0x02052A10
+ push {r4-r6, lr}
+ add r4, r2, #0x0
+ add r5, r0, #0x0
+ add r6, r3, #0x0
+ cmp r4, #0x0
+ bne _02052A24
+ sub r1, r1, #0x1
+ bl FUN_02052814
+ pop {r4-r6, pc}
+_02052A24:
+ sub r0, r1, #0x1
+ bl FUN_0202EF84
+ bl FUN_020239CC
+ add r1, r0, #0x0
+ cmp r4, #0x18
+ bhi _02052AFA
+ add r0, r4, r4
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02052A40: ; jump table (using 16-bit offset)
+ .short _02052AFA - _02052A40 - 2; case 0
+ .short _02052A72 - _02052A40 - 2; case 1
+ .short _02052A7E - _02052A40 - 2; case 2
+ .short _02052AAA - _02052A40 - 2; case 3
+ .short _02052AAA - _02052A40 - 2; case 4
+ .short _02052AAA - _02052A40 - 2; case 5
+ .short _02052AAA - _02052A40 - 2; case 6
+ .short _02052AAA - _02052A40 - 2; case 7
+ .short _02052AAA - _02052A40 - 2; case 8
+ .short _02052A86 - _02052A40 - 2; case 9
+ .short _02052AB8 - _02052A40 - 2; case 10
+ .short _02052AB8 - _02052A40 - 2; case 11
+ .short _02052AB8 - _02052A40 - 2; case 12
+ .short _02052AC6 - _02052A40 - 2; case 13
+ .short _02052AC6 - _02052A40 - 2; case 14
+ .short _02052AC6 - _02052A40 - 2; case 15
+ .short _02052AD4 - _02052A40 - 2; case 16
+ .short _02052AD4 - _02052A40 - 2; case 17
+ .short _02052AD4 - _02052A40 - 2; case 18
+ .short _02052A9C - _02052A40 - 2; case 19
+ .short _02052A9C - _02052A40 - 2; case 20
+ .short _02052A9C - _02052A40 - 2; case 21
+ .short _02052AE2 - _02052A40 - 2; case 22
+ .short _02052AEA - _02052A40 - 2; case 23
+ .short _02052AF2 - _02052A40 - 2; case 24
+_02052A72:
+ ldr r0, [r5, #0x34]
+ add r2, r6, #0x0
+ sub r0, r0, #0x1
+ bl FUN_020529F0
+ pop {r4-r6, pc}
+_02052A7E:
+ ldr r0, _02052B04 ; =0x020F58AC
+ lsl r1, r1, #0x2
+ ldr r0, [r0, r1]
+ pop {r4-r6, pc}
+_02052A86:
+ ldr r0, [r5, #0x34]
+ cmp r0, #0x0
+ bne _02052A90
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_02052A90:
+ lsl r2, r0, #0x3
+ ldr r0, _02052B08 ; =0x020F59DC
+ lsl r1, r1, #0x2
+ add r0, r0, r2
+ ldr r0, [r1, r0]
+ pop {r4-r6, pc}
+_02052A9C:
+ sub r4, #0x13
+ ldr r0, _02052B0C ; =0x020F58E8
+ lsl r2, r4, #0x3
+ lsl r1, r1, #0x2
+ add r0, r0, r2
+ ldr r0, [r1, r0]
+ pop {r4-r6, pc}
+_02052AAA:
+ sub r0, r4, #0x3
+ lsl r2, r0, #0x3
+ ldr r0, _02052B10 ; =0x020F5A44
+ lsl r1, r1, #0x2
+ add r0, r0, r2
+ ldr r0, [r1, r0]
+ pop {r4-r6, pc}
+_02052AB8:
+ sub r4, #0xa
+ ldr r0, _02052B14 ; =0x020F5900
+ lsl r2, r4, #0x3
+ lsl r1, r1, #0x2
+ add r0, r0, r2
+ ldr r0, [r1, r0]
+ pop {r4-r6, pc}
+_02052AC6:
+ sub r4, #0xd
+ ldr r0, _02052B18 ; =0x020F5918
+ lsl r2, r4, #0x3
+ lsl r1, r1, #0x2
+ add r0, r0, r2
+ ldr r0, [r1, r0]
+ pop {r4-r6, pc}
+_02052AD4:
+ sub r4, #0x10
+ ldr r0, _02052B1C ; =0x020F5930
+ lsl r2, r4, #0x3
+ lsl r1, r1, #0x2
+ add r0, r0, r2
+ ldr r0, [r1, r0]
+ pop {r4-r6, pc}
+_02052AE2:
+ ldr r0, _02052B20 ; =0x020F588C
+ lsl r1, r1, #0x2
+ ldr r0, [r0, r1]
+ pop {r4-r6, pc}
+_02052AEA:
+ ldr r0, _02052B24 ; =0x020F58A4
+ lsl r1, r1, #0x2
+ ldr r0, [r0, r1]
+ pop {r4-r6, pc}
+_02052AF2:
+ ldr r0, _02052B28 ; =0x020F589C
+ lsl r1, r1, #0x2
+ ldr r0, [r0, r1]
+ pop {r4-r6, pc}
+_02052AFA:
+ bl ErrorHandling
+ mov r0, #0x28
+ pop {r4-r6, pc}
+ nop
+_02052B04: .word 0x020F58AC
+_02052B08: .word 0x020F59DC
+_02052B0C: .word 0x020F58E8
+_02052B10: .word 0x020F5A44
+_02052B14: .word 0x020F5900
+_02052B18: .word 0x020F5918
+_02052B1C: .word 0x020F5930
+_02052B20: .word 0x020F588C
+_02052B24: .word 0x020F58A4
+_02052B28: .word 0x020F589C
+
+ thumb_func_start FUN_02052B2C
+FUN_02052B2C: ; 0x02052B2C
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ mov r6, #0x1
+_02052B32:
+ add r0, r6, #0x0
+ sub r4, r6, #0x1
+ bl FUN_0202DFA4
+ add r7, r0, #0x0
+ beq _02052B60
+ bl FUN_020239BC
+ lsl r1, r4, #0x2
+ str r0, [r5, r1]
+ add r0, r7, #0x0
+ bl FUN_02023A28
+ str r0, [sp, #0x0]
+ add r0, r7, #0x0
+ bl FUN_020239CC
+ lsl r1, r0, #0x7
+ ldr r0, [sp, #0x0]
+ orr r1, r0
+ add r0, r5, r4
+ strb r1, [r0, #0x18]
+ b _02052B6A
+_02052B60:
+ lsl r1, r4, #0x2
+ mov r0, #0x0
+ str r0, [r5, r1]
+ add r1, r5, r4
+ strb r0, [r1, #0x18]
+_02052B6A:
+ add r6, r6, #0x1
+ cmp r6, #0x5
+ blt _02052B32
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02052B74
+FUN_02052B74: ; 0x02052B74
+ push {r4, lr}
+ sub sp, #0x20
+ add r4, r0, #0x0
+ add r0, sp, #0x0
+ mov r1, #0x0
+ mov r2, #0x20
+ blx MI_CpuFill8
+ cmp r4, #0xb
+ bhi _02052BFA
+ add r0, r4, r4
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02052B94: ; jump table (using 16-bit offset)
+ .short _02052BFA - _02052B94 - 2; case 0
+ .short _02052BCA - _02052B94 - 2; case 1
+ .short _02052BDE - _02052B94 - 2; case 2
+ .short _02052BF2 - _02052B94 - 2; case 3
+ .short _02052BFA - _02052B94 - 2; case 4
+ .short _02052BB6 - _02052B94 - 2; case 5
+ .short _02052BB6 - _02052B94 - 2; case 6
+ .short _02052BB6 - _02052B94 - 2; case 7
+ .short _02052BC0 - _02052B94 - 2; case 8
+ .short _02052BD4 - _02052B94 - 2; case 9
+ .short _02052BE8 - _02052B94 - 2; case 10
+ .short _02052BAC - _02052B94 - 2; case 11
+_02052BAC:
+ add r0, sp, #0x0
+ mov r1, #0x2
+ bl FUN_02052B2C
+ b _02052BFA
+_02052BB6:
+ add r0, sp, #0x0
+ mov r1, #0x2
+ bl FUN_02052B2C
+ b _02052BFA
+_02052BC0:
+ add r0, sp, #0x0
+ mov r1, #0x5
+ bl FUN_02052B2C
+ b _02052BFA
+_02052BCA:
+ add r0, sp, #0x0
+ mov r1, #0x4
+ bl FUN_02052B2C
+ b _02052BFA
+_02052BD4:
+ add r0, sp, #0x0
+ mov r1, #0x5
+ bl FUN_02052B2C
+ b _02052BFA
+_02052BDE:
+ add r0, sp, #0x0
+ mov r1, #0x4
+ bl FUN_02052B2C
+ b _02052BFA
+_02052BE8:
+ add r0, sp, #0x0
+ mov r1, #0x4
+ bl FUN_02052B2C
+ b _02052BFA
+_02052BF2:
+ add r0, sp, #0x0
+ mov r1, #0x4
+ bl FUN_02052B2C
+_02052BFA:
+ add r0, sp, #0x0
+ strb r4, [r0, #0x1c]
+ add r0, sp, #0x0
+ bl FUN_0202F094
+ bl FUN_0202F0B8
+ add sp, #0x20
+ pop {r4, pc}
+
+ thumb_func_start FUN_02052C0C
+FUN_02052C0C: ; 0x02052C0C
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ mov r3, #0x0
+ mov r0, #0x11
+ add r6, r1, #0x0
+ add r2, r3, #0x0
+ add r4, r5, #0x0
+ lsl r0, r0, #0x4
+_02052C1C:
+ ldr r1, [r4, r0]
+ cmp r1, #0x0
+ beq _02052C24
+ add r3, r3, #0x1
+_02052C24:
+ add r2, r2, #0x1
+ add r4, r4, #0x4
+ cmp r2, #0xa
+ blt _02052C1C
+ cmp r3, #0x0
+ beq _02052C34
+ mov r0, #0xa4
+ pop {r4-r6, pc}
+_02052C34:
+ mov r0, #0x5e
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ bl FUN_0201385C
+ cmp r0, #0x0
+ bne _02052C46
+ mov r0, #0xa5
+ pop {r4-r6, pc}
+_02052C46:
+ mov r0, #0x5e
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ bl FUN_02013920
+ cmp r0, #0x4
+ beq _02052C78
+ ldr r0, [r5, #0x8]
+ bl FUN_02023A28
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x8]
+ bl FUN_020239CC
+ add r1, r4, #0x0
+ mov r2, #0x2
+ bl FUN_020536D0
+ add r2, r0, #0x0
+ add r0, r6, #0x0
+ mov r1, #0x0
+ bl FUN_0200B064
+ mov r0, #0xa6
+ pop {r4-r6, pc}
+_02052C78:
+ mov r0, #0x5e
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ bl FUN_02013924
+ add r4, r0, #0x0
+ cmp r4, #0x14
+ blt _02052C8A
+ mov r4, #0x0
+_02052C8A:
+ mov r0, #0x5e
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ mov r1, #0x0
+ bl FUN_02013918
+ add r2, r0, #0x0
+ ldr r0, _02052CB0 ; =0x0000FFFF
+ cmp r2, r0
+ beq _02052CA6
+ add r0, r6, #0x0
+ mov r1, #0x0
+ bl FUN_0200B518
+_02052CA6:
+ ldr r0, _02052CB4 ; =0x020F5A74
+ lsl r1, r4, #0x2
+ ldr r0, [r0, r1]
+ pop {r4-r6, pc}
+ nop
+_02052CB0: .word 0x0000FFFF
+_02052CB4: .word 0x020F5A74
+
+ thumb_func_start FUN_02052CB8
+FUN_02052CB8: ; 0x02052CB8
+ push {r3-r4}
+ mov r3, #0x0
+ strb r3, [r0, #0x1c]
+ add r4, r0, #0x0
+ add r2, r3, #0x0
+_02052CC2:
+ stmia r4!, {r2}
+ add r1, r0, r3
+ strb r2, [r1, #0x18]
+ strb r2, [r1, #0x10]
+ add r3, r3, #0x1
+ strb r2, [r1, #0x14]
+ cmp r3, #0x4
+ blt _02052CC2
+ pop {r3-r4}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02052CD8
+FUN_02052CD8: ; 0x02052CD8
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x5e
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_02013960
+ mov r0, #0x6
+ mov r1, #0x1
+ lsl r0, r0, #0x6
+ str r1, [r4, r0]
+ pop {r4, pc}
+
+ thumb_func_start FUN_02052CF0
+FUN_02052CF0: ; 0x02052CF0
+ mov r1, #0x6
+ lsl r1, r1, #0x6
+ ldr r2, [r0, r1]
+ cmp r2, #0x0
+ bne _02052CFE
+ mov r0, #0x0
+ bx lr
+_02052CFE:
+ mov r2, #0x0
+ str r2, [r0, r1]
+ sub r1, #0x8
+ add r0, r0, r1
+ bx lr
+
+ thumb_func_start FUN_02052D08
+FUN_02052D08: ; 0x02052D08
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r6, r2, #0x0
+ mov r2, #0x9
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ str r3, [sp, #0x8]
+ mov r0, #0x1
+ mov r1, #0x1a
+ lsl r2, r2, #0x6
+ mov r3, #0x4
+ bl FUN_0200A86C
+ add r7, r0, #0x0
+ cmp r4, #0x0
+ bne _02052D30
+ sub r0, r6, #0x1
+ bl FUN_0202EF84
+ b _02052D3C
+_02052D30:
+ bl FUN_02031190
+ mov r1, #0x1
+ eor r0, r1
+ bl FUN_0202DFA4
+_02052D3C:
+ add r4, r0, #0x0
+ cmp r4, #0x0
+ beq _02052DE0
+ add r0, r5, #0x0
+ mov r1, #0x0
+ add r2, r4, #0x0
+ bl FUN_0200ABC0
+ ldr r2, [sp, #0x8]
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_0200ABC0
+ add r0, r4, #0x0
+ bl FUN_02023A70
+ add r4, r0, #0x0
+ cmp r4, #0x1
+ blt _02052D80
+ cmp r4, #0x7
+ bgt _02052D80
+ sub r0, r4, #0x1
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ cmp r0, #0x7
+ bhs _02052D80
+ lsl r1, r0, #0x2
+ ldr r0, _02052DE4 ; =0x020F5948
+ ldr r1, [r0, r1]
+ cmp r1, #0x0
+ blt _02052D80
+ ldr r0, [sp, #0x20]
+ bl FUN_02013C18
+_02052D80:
+ cmp r4, #0x7
+ bhi _02052DB8
+ add r0, r4, r4
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02052D90: ; jump table (using 16-bit offset)
+ .short _02052DB8 - _02052D90 - 2; case 0
+ .short _02052DA0 - _02052D90 - 2; case 1
+ .short _02052DA4 - _02052D90 - 2; case 2
+ .short _02052DA8 - _02052D90 - 2; case 3
+ .short _02052DAC - _02052D90 - 2; case 4
+ .short _02052DB0 - _02052D90 - 2; case 5
+ .short _02052DB8 - _02052D90 - 2; case 6
+ .short _02052DB4 - _02052D90 - 2; case 7
+_02052DA0:
+ mov r1, #0xd1
+ b _02052DBA
+_02052DA4:
+ mov r1, #0xd2
+ b _02052DBA
+_02052DA8:
+ mov r1, #0xd3
+ b _02052DBA
+_02052DAC:
+ mov r1, #0xd4
+ b _02052DBA
+_02052DB0:
+ mov r1, #0xd5
+ b _02052DBA
+_02052DB4:
+ mov r1, #0xd6
+ b _02052DBA
+_02052DB8:
+ mov r1, #0xd7
+_02052DBA:
+ add r0, r7, #0x0
+ bl FUN_0200A914
+ add r6, r0, #0x0
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ mov r1, #0x2
+ add r2, r6, #0x0
+ mov r3, #0x0
+ str r4, [sp, #0x4]
+ bl FUN_0200ABB4
+ add r0, r6, #0x0
+ bl FUN_02016A18
+ add r0, r7, #0x0
+ bl FUN_0200A8B8
+_02052DE0:
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+_02052DE4: .word 0x020F5948
+
+ thumb_func_start FUN_02052DE8
+FUN_02052DE8: ; 0x02052DE8
+ push {r4, lr}
+ sub sp, #0x20
+ add r4, r0, #0x0
+ add r0, sp, #0x0
+ bl FUN_02052CB8
+ mov r1, #0x0
+ add r0, sp, #0x0
+ strb r1, [r0, #0x1c]
+ add r0, r4, #0x0
+ bl FUN_0202F078
+ add r0, sp, #0x0
+ bl FUN_0202F094
+ bl FUN_0202F0B8
+ add sp, #0x20
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02052E10
+FUN_02052E10: ; 0x02052E10
+ mov r1, #0x0
+ str r1, [r0, #0x30]
+ str r1, [r0, #0x40]
+ str r1, [r0, #0x44]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02052E1C
+FUN_02052E1C: ; 0x02052E1C
+ mov r2, #0x0
+ str r2, [r0, #0x20]
+ str r2, [r0, #0x24]
+ str r2, [r0, #0x2c]
+ str r2, [r0, #0x30]
+ mov r1, #0x5d
+ str r2, [r0, #0x40]
+ lsl r1, r1, #0x2
+ strh r2, [r0, r1]
+ add r1, #0xc
+ str r2, [r0, r1]
+ str r2, [r0, #0x44]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02052E38
+FUN_02052E38: ; 0x02052E38
+ push {r3-r5, lr}
+ sub sp, #0x8
+ add r4, r0, #0x0
+ mov r0, #0x0
+ bl FUN_02065054
+ mov r1, #0x61
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ mov r0, #0x0
+ bl FUN_02065054
+ mov r1, #0x62
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ mov r0, #0x0
+ bl FUN_02065054
+ mov r1, #0x63
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ ldr r0, [r4, #0x8]
+ bl FUN_020239CC
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x8]
+ bl FUN_02023A28
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ mov r2, #0x0
+ bl FUN_020536D0
+ add r3, r0, #0x0
+ ldr r0, [r4, #0x0]
+ lsl r3, r3, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x61
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ lsr r3, r3, #0x18
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ add r1, r0, #0x0
+ add r2, r0, #0x0
+ bl FUN_02064E90
+ bl FUN_02031190
+ mov r1, #0x1
+ eor r0, r1
+ lsl r0, r0, #0x2
+ add r1, r4, r0
+ mov r0, #0x62
+ lsl r0, r0, #0x2
+ ldr r0, [r1, r0]
+ add sp, #0x8
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02052EAC
+FUN_02052EAC: ; 0x02052EAC
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x62
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ mov r0, #0x63
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ mov r0, #0x61
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ pop {r4, pc}
+
+ thumb_func_start FUN_02052ED0
+FUN_02052ED0: ; 0x02052ED0
+ mov r1, #0x61
+ add r2, r0, #0x0
+ lsl r1, r1, #0x2
+ ldr r1, [r2, r1]
+ ldr r3, _02052EE0 ; =FUN_02030A78
+ mov r0, #0x69
+ ldr r2, _02052EE4 ; =0x0000066C
+ bx r3
+ .balign 4
+_02052EE0: .word FUN_02030A78
+_02052EE4: .word 0x0000066C
+
+ thumb_func_start FUN_02052EE8
+FUN_02052EE8: ; 0x02052EE8
+ push {r3-r5, lr}
+ ldr r1, _02052F58 ; =0x000004E8
+ add r5, r0, #0x0
+ mov r0, #0x1f
+ bl FUN_02016998
+ add r4, r0, #0x0
+ ldr r2, _02052F58 ; =0x000004E8
+ mov r0, #0x0
+ add r1, r4, #0x0
+ blx MIi_CpuClearFast
+ mov r0, #0x4e
+ str r5, [r4, #0x0]
+ mov r1, #0x1
+ lsl r0, r0, #0x4
+ str r1, [r4, r0]
+ ldr r0, _02052F5C ; =FUN_02052FC8
+ add r1, r4, #0x0
+ mov r2, #0xb
+ bl FUN_0200CA44
+ str r0, [r4, #0x4]
+ add r0, r5, #0x0
+ bl FUN_020524BC
+ ldr r1, _02052F60 ; =0x000004D4
+ str r0, [r4, r1]
+ ldr r0, [r4, r1]
+ mov r1, #0x9
+ ldr r0, [r0, #0xc]
+ bl FUN_02022610
+ ldr r1, _02052F64 ; =0x000004D8
+ ldr r2, _02052F68 ; =0x00002710
+ str r0, [r4, r1]
+ sub r0, r1, #0x4
+ ldr r0, [r4, r0]
+ mov r1, #0x59
+ ldr r0, [r0, #0x38]
+ str r0, [r4, #0x8]
+ mov r0, #0xb
+ bl FUN_02016828
+ mov r0, #0x59
+ bl FUN_02053618
+ ldr r1, _02052F6C ; =0x000004DC
+ str r0, [r4, r1]
+ add r0, r4, #0x0
+ bl FUN_02052F8C
+ ldr r0, _02052F70 ; =0x021C5ABC
+ str r4, [r0, #0x0]
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+_02052F58: .word 0x000004E8
+_02052F5C: .word FUN_02052FC8
+_02052F60: .word 0x000004D4
+_02052F64: .word 0x000004D8
+_02052F68: .word 0x00002710
+_02052F6C: .word 0x000004DC
+_02052F70: .word 0x021C5ABC
+
+ thumb_func_start FUN_02052F74
+FUN_02052F74: ; 0x02052F74
+ mov r3, #0x0
+ mov r1, #0x3
+_02052F78:
+ ldrb r2, [r0, #0xd]
+ cmp r2, #0x0
+ beq _02052F80
+ strb r1, [r0, #0xc]
+_02052F80:
+ add r3, r3, #0x1
+ add r0, #0x18
+ cmp r3, #0x33
+ blt _02052F78
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02052F8C
+FUN_02052F8C: ; 0x02052F8C
+ mov r2, #0x0
+ add r1, r2, #0x0
+_02052F90:
+ strb r1, [r0, #0xc]
+ strb r1, [r0, #0xd]
+ strb r1, [r0, #0xe]
+ strb r1, [r0, #0xf]
+ add r2, r2, #0x1
+ add r0, #0x18
+ cmp r2, #0x33
+ blt _02052F90
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02052FA4
+FUN_02052FA4: ; 0x02052FA4
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x4]
+ bl FUN_0200CAB4
+ ldr r0, _02052FC4 ; =0x000004DC
+ ldr r0, [r4, r0]
+ bl FUN_0205362C
+ mov r0, #0x59
+ bl FUN_020168D0
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .balign 4
+_02052FC4: .word 0x000004DC
+
+ thumb_func_start FUN_02052FC8
+FUN_02052FC8: ; 0x02052FC8
+ push {r3-r5, lr}
+ ldr r0, _02052FFC ; =0x000004D4
+ add r5, r1, #0x0
+ ldr r0, [r5, r0]
+ ldr r4, [r5, #0x0]
+ bl FUN_0204646C
+ cmp r0, #0x0
+ bne _02052FF8
+ ldr r3, _02052FFC ; =0x000004D4
+ add r0, r5, #0x0
+ ldr r2, [r5, r3]
+ add r3, r3, #0x4
+ ldr r2, [r2, #0x34]
+ ldr r3, [r5, r3]
+ add r1, r4, #0x0
+ bl FUN_0205312C
+ ldr r1, _02052FFC ; =0x000004D4
+ add r0, r5, #0x0
+ ldr r1, [r5, r1]
+ ldr r1, [r1, #0x34]
+ bl FUN_020531E4
+_02052FF8:
+ pop {r3-r5, pc}
+ nop
+_02052FFC: .word 0x000004D4
+
+ thumb_func_start FUN_02053000
+FUN_02053000: ; 0x02053000
+ push {r4-r7, lr}
+ sub sp, #0x14
+ mov r5, #0x0
+ str r0, [sp, #0x0]
+ str r3, [sp, #0x4]
+ cmp r2, #0x0
+ bne _02053034
+ ldr r0, _02053100 ; =0x020F58D4
+ lsl r1, r1, #0x1
+ ldrh r4, [r0, r1]
+ ldr r0, [sp, #0x0]
+ mov r6, #0x3
+ add r0, #0xc
+ str r0, [sp, #0x0]
+_0205301C:
+ ldr r0, [sp, #0x0]
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_02053104
+ add r5, r5, #0x1
+ add r4, r4, #0x1
+ cmp r5, #0x4
+ blt _0205301C
+ add sp, #0x14
+ mov r0, #0x0
+ pop {r4-r7, pc}
+_02053034:
+ add r0, r2, #0x0
+ str r0, [sp, #0xc]
+ add r0, #0x50
+ str r0, [sp, #0xc]
+ add r0, #0x30
+ str r0, [sp, #0xc]
+ ldr r0, [r2, #0x50]
+ mov r2, #0x18
+ add r3, r1, #0x0
+ mul r3, r2
+ ldr r2, [sp, #0x0]
+ add r2, r2, r3
+ ldr r2, [r2, #0x18]
+ cmp r0, r2
+ beq _02053078
+ ldr r0, _02053100 ; =0x020F58D4
+ lsl r1, r1, #0x1
+ ldrh r4, [r0, r1]
+ ldr r0, [sp, #0x0]
+ mov r6, #0x3
+ add r0, #0xc
+ str r0, [sp, #0x0]
+_02053060:
+ ldr r0, [sp, #0x0]
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_02053104
+ add r5, r5, #0x1
+ add r4, r4, #0x1
+ cmp r5, #0x4
+ blt _02053060
+ add sp, #0x14
+ mov r0, #0x0
+ pop {r4-r7, pc}
+_02053078:
+ ldr r0, _02053100 ; =0x020F58D4
+ lsl r1, r1, #0x1
+ ldrh r7, [r0, r1]
+ ldr r0, [sp, #0xc]
+ add r6, r5, #0x0
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x0]
+ str r0, [sp, #0x10]
+ add r0, #0xc
+ str r0, [sp, #0x10]
+_0205308C:
+ mov r0, #0x18
+ add r1, r7, #0x0
+ mul r1, r0
+ ldr r0, [sp, #0x0]
+ add r4, r0, r1
+ ldrb r0, [r4, #0xd]
+ cmp r0, #0x0
+ beq _020530A6
+ cmp r0, #0x2
+ beq _020530CC
+ cmp r0, #0x4
+ beq _020530E6
+ b _020530EA
+_020530A6:
+ ldr r0, [sp, #0xc]
+ add r1, r0, r6
+ ldrb r0, [r1, #0x18]
+ cmp r0, #0x0
+ beq _020530EA
+ mov r0, #0x2
+ strb r0, [r4, #0xc]
+ ldrb r1, [r1, #0x18]
+ mov r0, #0x7f
+ and r0, r1
+ strb r0, [r4, #0x14]
+ ldr r1, [sp, #0x8]
+ ldr r0, [sp, #0x4]
+ ldr r1, [r1, #0x0]
+ bl FUN_02025614
+ strb r0, [r4, #0xe]
+ mov r5, #0x1
+ b _020530EA
+_020530CC:
+ ldr r0, [sp, #0xc]
+ add r0, r0, r6
+ ldrb r0, [r0, #0x18]
+ cmp r0, #0x0
+ bne _020530E2
+ ldr r0, [sp, #0x10]
+ add r1, r7, #0x0
+ mov r2, #0x3
+ bl FUN_02053104
+ b _020530EA
+_020530E2:
+ mov r5, #0x1
+ b _020530EA
+_020530E6:
+ mov r0, #0x0
+ strb r0, [r4, #0xc]
+_020530EA:
+ ldr r0, [sp, #0x8]
+ add r6, r6, #0x1
+ add r0, r0, #0x4
+ add r7, r7, #0x1
+ str r0, [sp, #0x8]
+ cmp r6, #0x4
+ blt _0205308C
+ add r0, r5, #0x0
+ add sp, #0x14
+ pop {r4-r7, pc}
+ nop
+_02053100: .word 0x020F58D4
+
+ thumb_func_start FUN_02053104
+FUN_02053104: ; 0x02053104
+ push {r4-r6, lr}
+ ldr r6, _02053124 ; =0x021C5ABC
+ mov r4, #0x18
+ ldr r3, [r6, #0x0]
+ ldr r5, _02053128 ; =0x000004D4
+ mul r4, r1
+ ldr r3, [r3, r5]
+ strb r2, [r0, r4]
+ ldr r0, [r6, #0x0]
+ ldr r0, [r0, r5]
+ cmp r3, r0
+ beq _02053120
+ bl ErrorHandling
+_02053120:
+ pop {r4-r6, pc}
+ nop
+_02053124: .word 0x021C5ABC
+_02053128: .word 0x000004D4
+
+ thumb_func_start FUN_0205312C
+FUN_0205312C: ; 0x0205312C
+ push {r4-r7, lr}
+ sub sp, #0x14
+ str r0, [sp, #0x0]
+ add r5, r0, #0x0
+ str r0, [sp, #0x10]
+ add r0, #0xc
+ str r1, [sp, #0x4]
+ str r3, [sp, #0x8]
+ mov r4, #0x0
+ str r0, [sp, #0x10]
+_02053140:
+ ldr r0, [sp, #0x4]
+ add r1, r4, #0x0
+ bl FUN_020524C0
+ add r6, r0, #0x0
+ add r7, r6, #0x0
+ add r7, #0x50
+ add r0, r7, #0x0
+ str r0, [sp, #0xc]
+ add r0, #0x10
+ str r0, [sp, #0xc]
+ ldrb r0, [r5, #0xd]
+ cmp r0, #0x0
+ beq _02053166
+ cmp r0, #0x2
+ beq _020531A2
+ cmp r0, #0x4
+ beq _020531D4
+ b _020531D8
+_02053166:
+ cmp r6, #0x0
+ beq _020531D8
+ ldr r0, [sp, #0xc]
+ bl FUN_02023A28
+ strb r0, [r5, #0x14]
+ ldr r0, [sp, #0xc]
+ bl FUN_020239BC
+ add r1, r0, #0x0
+ ldr r0, [sp, #0x8]
+ bl FUN_02025614
+ strb r0, [r5, #0xe]
+ ldr r0, [r7, #0x0]
+ ldr r3, [sp, #0x8]
+ str r0, [r5, #0x18]
+ ldr r0, [sp, #0x0]
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_02053000
+ cmp r0, #0x0
+ beq _0205319C
+ mov r0, #0x2
+ strb r0, [r5, #0xc]
+ b _020531D8
+_0205319C:
+ mov r0, #0x1
+ strb r0, [r5, #0xc]
+ b _020531D8
+_020531A2:
+ cmp r6, #0x0
+ beq _020531AE
+ ldr r1, [r7, #0x0]
+ ldr r0, [r5, #0x18]
+ cmp r1, r0
+ beq _020531B8
+_020531AE:
+ ldr r0, [sp, #0x10]
+ add r1, r4, #0x0
+ mov r2, #0x3
+ bl FUN_02053104
+_020531B8:
+ ldr r0, [sp, #0x0]
+ ldr r3, [sp, #0x8]
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_02053000
+ cmp r0, #0x0
+ beq _020531D8
+ ldrb r0, [r5, #0x15]
+ cmp r0, #0x1
+ bne _020531D8
+ mov r0, #0x3
+ strb r0, [r5, #0xc]
+ b _020531D8
+_020531D4:
+ mov r0, #0x0
+ strb r0, [r5, #0xc]
+_020531D8:
+ add r4, r4, #0x1
+ add r5, #0x18
+ cmp r4, #0xa
+ blt _02053140
+ add sp, #0x14
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_020531E4
+FUN_020531E4: ; 0x020531E4
+ push {r3-r7, lr}
+ sub sp, #0x10
+ str r0, [sp, #0x0]
+ ldr r0, [r0, #0x8]
+ str r1, [sp, #0x4]
+ bl FUN_02055320
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x0]
+ ldr r0, [r0, #0x8]
+ bl FUN_0205532C
+ ldr r4, [sp, #0x0]
+ str r0, [sp, #0x8]
+ add r6, r4, #0x0
+ mov r7, #0x0
+ add r6, #0xc
+_02053206:
+ ldr r0, [sp, #0x4]
+ add r1, r7, #0x1
+ bl FUN_02058060
+ add r5, r0, #0x0
+ bne _02053216
+ bl ErrorHandling
+_02053216:
+ ldrb r0, [r4, #0xd]
+ cmp r0, #0x4
+ bhi _0205330A
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02053228: ; jump table (using 16-bit offset)
+ .short _02053232 - _02053228 - 2; case 0
+ .short _02053252 - _02053228 - 2; case 1
+ .short _020532B2 - _02053228 - 2; case 2
+ .short _020532DA - _02053228 - 2; case 3
+ .short _02053306 - _02053228 - 2; case 4
+_02053232:
+ add r0, r5, #0x0
+ bl FUN_0205AD98
+ cmp r0, #0x1
+ bne _0205330A
+ ldrb r0, [r4, #0xc]
+ sub r0, r0, #0x1
+ cmp r0, #0x1
+ bhi _0205330A
+ ldr r2, [sp, #0xc]
+ ldr r3, [sp, #0x8]
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ bl FUN_0205339C
+ b _0205330A
+_02053252:
+ add r0, r5, #0x0
+ bl FUN_0205AD98
+ cmp r0, #0x1
+ bne _0205330A
+ ldrb r0, [r4, #0xc]
+ cmp r0, #0x3
+ bne _02053272
+ mov r0, #0x0
+ strb r0, [r4, #0xd]
+ strb r0, [r4, #0xc]
+ add r0, r6, #0x0
+ mov r1, #0x1
+ bl FUN_0205333C
+ b _0205330A
+_02053272:
+ add r0, r5, #0x0
+ bl FUN_0205AE50
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_020588EC
+ ldrb r0, [r4, #0xc]
+ cmp r0, #0x1
+ bne _020532A8
+ ldrb r0, [r4, #0x15]
+ cmp r0, #0x0
+ bne _020532A8
+ add r0, r5, #0x0
+ mov r1, #0x3
+ bl FUN_02058E90
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_02058534
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_0205853C
+ mov r0, #0x1
+ strb r0, [r4, #0x15]
+_020532A8:
+ mov r0, #0x2
+ strb r0, [r4, #0xd]
+ mov r0, #0x0
+ strb r0, [r4, #0xc]
+ b _0205330A
+_020532B2:
+ add r0, r5, #0x0
+ bl FUN_0205AD98
+ cmp r0, #0x1
+ bne _0205330A
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ bl FUN_02053478
+ ldrb r0, [r4, #0xc]
+ cmp r0, #0x3
+ bne _020532D2
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ bl FUN_02053444
+_020532D2:
+ add r0, r6, #0x0
+ bl FUN_02053378
+ b _0205330A
+_020532DA:
+ add r0, r5, #0x0
+ bl FUN_0205AD98
+ cmp r0, #0x1
+ bne _0205330A
+ add r0, r5, #0x0
+ bl FUN_0205AE50
+ mov r0, #0x4
+ strb r0, [r4, #0xd]
+ mov r0, #0x0
+ strb r0, [r4, #0xc]
+ strb r0, [r4, #0x15]
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_0205889C
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_020588B8
+ b _0205330A
+_02053306:
+ mov r0, #0x0
+ strb r0, [r4, #0xd]
+_0205330A:
+ add r7, r7, #0x1
+ add r4, #0x18
+ add r6, #0x18
+ cmp r7, #0x32
+ bge _02053316
+ b _02053206
+_02053316:
+ ldr r0, [sp, #0x0]
+ ldr r0, [r0, #0x8]
+ bl FUN_020553A0
+ add r1, r0, #0x0
+ ldr r2, _02053338 ; =0x000004BC
+ ldr r0, [sp, #0x0]
+ add r0, r0, r2
+ bl FUN_02053478
+ ldr r1, _02053338 ; =0x000004BC
+ ldr r0, [sp, #0x0]
+ add r0, r0, r1
+ bl FUN_02053378
+ add sp, #0x10
+ pop {r3-r7, pc}
+ .balign 4
+_02053338: .word 0x000004BC
+
+ thumb_func_start FUN_0205333C
+FUN_0205333C: ; 0x0205333C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x10]
+ add r4, r1, #0x0
+ cmp r0, #0x0
+ beq _0205335A
+ bl FUN_020646A0
+ cmp r0, #0x0
+ beq _02053356
+ ldr r0, [r5, #0x10]
+ bl FUN_02064520
+_02053356:
+ mov r0, #0x0
+ str r0, [r5, #0x10]
+_0205335A:
+ cmp r4, #0x0
+ beq _02053376
+ ldr r0, [r5, #0x14]
+ cmp r0, #0x0
+ beq _02053376
+ bl FUN_020646A0
+ cmp r0, #0x0
+ beq _02053372
+ ldr r0, [r5, #0x14]
+ bl FUN_02064520
+_02053372:
+ mov r0, #0x0
+ str r0, [r5, #0x14]
+_02053376:
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02053378
+FUN_02053378: ; 0x02053378
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldrb r1, [r4, #0x4]
+ cmp r1, #0x0
+ beq _02053398
+ ldrh r1, [r4, #0x6]
+ sub r1, r1, #0x1
+ strh r1, [r4, #0x6]
+ ldrh r1, [r4, #0x6]
+ cmp r1, #0x0
+ bne _02053398
+ mov r1, #0x0
+ bl FUN_0205333C
+ mov r0, #0x0
+ strb r0, [r4, #0x4]
+_02053398:
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205339C
+FUN_0205339C: ; 0x0205339C
+ push {r3-r7, lr}
+ sub sp, #0x10
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ str r2, [sp, #0x4]
+ str r3, [sp, #0x8]
+ bl FUN_02058AFC
+ add r7, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02058B04
+ str r0, [sp, #0xc]
+ add r0, r4, #0x0
+ bl FUN_02058B0C
+ add r6, r0, #0x0
+ ldr r0, [sp, #0x4]
+ cmp r7, r0
+ bne _020533CC
+ ldr r0, [sp, #0x8]
+ cmp r6, r0
+ beq _0205343C
+_020533CC:
+ ldr r0, _02053440 ; =0x0000064F
+ bl FUN_020054C8
+ ldrb r1, [r5, #0x8]
+ add r0, r4, #0x0
+ bl FUN_02057634
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_0205333C
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ ldr r2, [sp, #0xc]
+ add r0, r4, #0x0
+ add r1, r7, #0x0
+ add r3, r6, #0x0
+ bl FUN_02058E28
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_020584A4
+ add r0, r4, #0x0
+ mov r1, #0x44
+ bl FUN_0205ADDC
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_0205889C
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_020588B8
+ mov r1, #0x1
+ strb r1, [r5, #0x1]
+ ldrb r0, [r5, #0x2]
+ cmp r0, #0x0
+ beq _0205343C
+ cmp r0, #0x1
+ bne _0205342A
+ add r0, r4, #0x0
+ bl FUN_02249668
+ str r0, [r5, #0x14]
+ b _02053438
+_0205342A:
+ cmp r0, #0x2
+ blo _02053438
+ add r0, r4, #0x0
+ mov r1, #0x2
+ bl FUN_02249668
+ str r0, [r5, #0x14]
+_02053438:
+ mov r0, #0x0
+ strb r0, [r5, #0x2]
+_0205343C:
+ add sp, #0x10
+ pop {r3-r7, pc}
+ .balign 4
+_02053440: .word 0x0000064F
+
+ thumb_func_start FUN_02053444
+FUN_02053444: ; 0x02053444
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x43
+ bl FUN_0205ADDC
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_020588EC
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_02058E90
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_0205333C
+ mov r0, #0x0
+ strb r0, [r4, #0x4]
+ strh r0, [r4, #0x6]
+ mov r0, #0x3
+ strb r0, [r4, #0x1]
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02053478
+FUN_02053478: ; 0x02053478
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldrb r0, [r4, #0x3]
+ cmp r0, #0x1
+ bne _0205349C
+ ldrb r0, [r4, #0x4]
+ cmp r0, #0x0
+ bne _0205349C
+ add r0, r1, #0x0
+ bl FUN_021EDA48
+ str r0, [r4, #0x10]
+ mov r0, #0x1e
+ strh r0, [r4, #0x6]
+ mov r0, #0x0
+ strb r0, [r4, #0x3]
+ mov r0, #0x1
+ strb r0, [r4, #0x4]
+_0205349C:
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020534A0
+FUN_020534A0: ; 0x020534A0
+ push {r3-r7, lr}
+ add r5, r1, #0x0
+ add r6, r2, #0x0
+ add r7, r0, #0x0
+ cmp r5, r6
+ bge _020534DA
+_020534AC:
+ add r0, r7, #0x0
+ add r1, r5, #0x0
+ bl FUN_02058060
+ add r4, r0, #0x0
+ bne _020534BC
+ bl ErrorHandling
+_020534BC:
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_0205889C
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_020588B8
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_020588EC
+ add r5, r5, #0x1
+ cmp r5, r6
+ blt _020534AC
+_020534DA:
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_020534DC
+FUN_020534DC: ; 0x020534DC
+ push {r3-r7, lr}
+ add r5, r1, #0x0
+ mov r1, #0x0
+ add r7, r0, #0x0
+ bl FUN_02058060
+ add r4, r0, #0x0
+ bne _020534F0
+ bl ErrorHandling
+_020534F0:
+ add r0, r4, #0x0
+ bl FUN_0205AD98
+ cmp r0, #0x1
+ bne _02053596
+ bl FUN_02031B2C
+ cmp r0, #0x0
+ bne _0205350A
+ bl FUN_02031AF4
+ cmp r0, #0x0
+ beq _0205358C
+_0205350A:
+ mov r6, #0x0
+ add r5, #0xc
+_0205350E:
+ ldrb r0, [r5, #0x1]
+ cmp r0, #0x1
+ bne _02053578
+ add r0, r7, #0x0
+ add r1, r6, #0x1
+ bl FUN_02058060
+ add r4, r0, #0x0
+ bne _02053524
+ bl ErrorHandling
+_02053524:
+ ldrb r1, [r5, #0x8]
+ add r0, r4, #0x0
+ bl FUN_02057634
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_020584A4
+ add r0, r4, #0x0
+ mov r1, #0x44
+ bl FUN_0205ADDC
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_0205889C
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_020588B8
+ mov r0, #0x1
+ strb r0, [r5, #0x1]
+ ldrb r0, [r5, #0x2]
+ cmp r0, #0x0
+ beq _02053578
+ cmp r0, #0x1
+ bne _02053566
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_02249668
+ str r0, [r5, #0x14]
+ b _02053574
+_02053566:
+ cmp r0, #0x2
+ blo _02053574
+ add r0, r4, #0x0
+ mov r1, #0x2
+ bl FUN_02249668
+ str r0, [r5, #0x14]
+_02053574:
+ mov r0, #0x0
+ strb r0, [r5, #0x2]
+_02053578:
+ add r6, r6, #0x1
+ add r5, #0x18
+ cmp r6, #0xa
+ blt _0205350E
+ add r0, r7, #0x0
+ mov r1, #0xb
+ mov r2, #0x33
+ bl FUN_020534A0
+ pop {r3-r7, pc}
+_0205358C:
+ add r0, r7, #0x0
+ mov r1, #0x1
+ mov r2, #0x33
+ bl FUN_020534A0
+_02053596:
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02053598
+FUN_02053598: ; 0x02053598
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x8
+ mov r1, #0x59
+ bl FUN_020219F4
+ str r0, [r4, #0x0]
+ mov r1, #0x0
+ add r0, r4, #0x0
+ str r1, [r4, #0x4]
+ add r0, #0x14
+ str r1, [r4, #0x8]
+ bl FUN_0201373C
+ mov r0, #0x0
+ str r0, [r4, #0x10]
+ str r0, [r4, #0xc]
+ pop {r4, pc}
+
+ thumb_func_start FUN_020535BC
+FUN_020535BC: ; 0x020535BC
+ push {r4-r6, lr}
+ add r6, r0, #0x0
+ mov r4, #0x0
+ add r5, r6, #0x0
+_020535C4:
+ add r0, r5, #0x0
+ bl FUN_02053598
+ add r4, r4, #0x1
+ add r5, #0x1c
+ cmp r4, #0x1e
+ blt _020535C4
+ mov r0, #0xd2
+ mov r1, #0x0
+ lsl r0, r0, #0x2
+ str r1, [r6, r0]
+ add r0, r0, #0x4
+ str r1, [r6, r0]
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_020535E0
+FUN_020535E0: ; 0x020535E0
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_02016A18
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x0
+ beq _020535F4
+ bl FUN_02021A20
+_020535F4:
+ ldr r0, [r4, #0x8]
+ cmp r0, #0x0
+ beq _020535FE
+ bl FUN_02021A20
+_020535FE:
+ pop {r4, pc}
+
+ thumb_func_start FUN_02053600
+FUN_02053600: ; 0x02053600
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r4, #0x0
+_02053606:
+ add r0, r5, #0x0
+ bl FUN_020535E0
+ add r4, r4, #0x1
+ add r5, #0x1c
+ cmp r4, #0x1e
+ blt _02053606
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02053618
+FUN_02053618: ; 0x02053618
+ push {r4, lr}
+ mov r1, #0x35
+ lsl r1, r1, #0x4
+ bl FUN_02016998
+ add r4, r0, #0x0
+ bl FUN_020535BC
+ add r0, r4, #0x0
+ pop {r4, pc}
+
+ thumb_func_start FUN_0205362C
+FUN_0205362C: ; 0x0205362C
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02053600
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r4, pc}
+
+ thumb_func_start FUN_0205363C
+FUN_0205363C: ; 0x0205363C
+ push {r3-r7, lr}
+ add r7, r2, #0x0
+ lsl r0, r0, #0x1d
+ ldr r2, _02053670 ; =0x020F5AC4
+ lsr r0, r0, #0x19
+ add r5, r2, r0
+ lsl r2, r1, #0x3
+ mov r1, #0xc
+ ldr r0, _02053674 ; =0x020F5B44
+ mul r1, r2
+ mov r4, #0x0
+ add r6, r0, r1
+_02053654:
+ ldr r3, [r5, #0x0]
+ mov r2, #0xc
+ mul r2, r3
+ add r2, r6, r2
+ ldr r2, [r2, #0x4]
+ add r0, r7, #0x0
+ add r1, r4, #0x0
+ bl FUN_0200B064
+ add r4, r4, #0x1
+ add r5, r5, #0x4
+ cmp r4, #0x4
+ blt _02053654
+ pop {r3-r7, pc}
+ .balign 4
+_02053670: .word 0x020F5AC4
+_02053674: .word 0x020F5B44
+
+ thumb_func_start FUN_02053678
+FUN_02053678: ; 0x02053678
+ lsl r0, r0, #0x1d
+ lsr r3, r0, #0x19
+ ldr r0, _02053694 ; =0x020F5AC4
+ lsl r2, r2, #0x2
+ add r0, r0, r3
+ ldr r0, [r2, r0]
+ lsl r1, r1, #0x3
+ add r1, r1, r0
+ mov r0, #0xc
+ add r2, r1, #0x0
+ mul r2, r0
+ ldr r0, _02053698 ; =0x020F5B44
+ ldr r0, [r0, r2]
+ bx lr
+ .balign 4
+_02053694: .word 0x020F5AC4
+_02053698: .word 0x020F5B44
+
+ thumb_func_start FUN_0205369C
+FUN_0205369C: ; 0x0205369C
+ push {r3-r4}
+ lsl r4, r0, #0x3
+ mov r0, #0xc
+ ldr r2, _020536C4 ; =0x020F5B44
+ mul r0, r4
+ mov r3, #0x0
+ add r2, r2, r0
+_020536AA:
+ ldr r0, [r2, #0x0]
+ cmp r1, r0
+ bne _020536B6
+ add r0, r3, r4
+ pop {r3-r4}
+ bx lr
+_020536B6:
+ add r3, r3, #0x1
+ add r2, #0xc
+ cmp r3, #0x8
+ blt _020536AA
+ mov r0, #0x0
+ pop {r3-r4}
+ bx lr
+ .balign 4
+_020536C4: .word 0x020F5B44
+
+ thumb_func_start FUN_020536C8
+FUN_020536C8: ; 0x020536C8
+ ldr r3, _020536CC ; =FUN_0205369C
+ bx r3
+ .balign 4
+_020536CC: .word FUN_0205369C
+
+ thumb_func_start FUN_020536D0
+FUN_020536D0: ; 0x020536D0
+ push {r4, lr}
+ add r4, r2, #0x0
+ bl FUN_0205369C
+ cmp r4, #0x0
+ beq _020536FE
+ cmp r4, #0x1
+ beq _020536EE
+ cmp r4, #0x2
+ bne _020536F8
+ mov r1, #0xc
+ mul r1, r0
+ ldr r0, _02053700 ; =0x020F5B48
+ ldr r0, [r0, r1]
+ pop {r4, pc}
+_020536EE:
+ mov r1, #0xc
+ mul r1, r0
+ ldr r0, _02053704 ; =0x020F5B4C
+ ldr r0, [r0, r1]
+ pop {r4, pc}
+_020536F8:
+ bl ErrorHandling
+ mov r0, #0x0
+_020536FE:
+ pop {r4, pc}
+ .balign 4
+_02053700: .word 0x020F5B48
+_02053704: .word 0x020F5B4C
+
+ thumb_func_start FUN_02053708
+FUN_02053708: ; 0x02053708
+ push {r3-r6, lr}
+ sub sp, #0x4
+ add r5, r0, #0x0
+ mov r0, #0x56
+ mov r1, #0x7
+ add r2, sp, #0x0
+ add r3, r5, #0x0
+ bl FUN_02006C08
+ mov r1, #0x9
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ lsl r1, r1, #0x6
+ bl FUN_02016998
+ add r5, r0, #0x0
+ ldr r0, [sp, #0x0]
+ mov r2, #0x0
+ ldr r3, [r0, #0xc]
+ mov r0, #0x1
+ add r6, r5, #0x0
+ lsl r0, r0, #0x8
+_02053734:
+ ldrh r1, [r3, #0x0]
+ add r2, r2, #0x1
+ add r3, r3, #0x2
+ strh r1, [r6, #0x0]
+ add r6, r6, #0x2
+ cmp r2, r0
+ blt _02053734
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add r0, r5, #0x0
+ add sp, #0x4
+ pop {r3-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02053750
+FUN_02053750: ; 0x02053750
+ push {r3-r7, lr}
+ sub sp, #0x18
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x0
+ beq _02053762
+ bl FUN_0201FDEC
+_02053762:
+ mov r1, #0x6
+ lsl r1, r1, #0x6
+ ldr r0, [r4, r1]
+ cmp r0, #0x5
+ bls _0205376E
+ b _020538B2
+_0205376E:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0205377A: ; jump table (using 16-bit offset)
+ .short _02053786 - _0205377A - 2; case 0
+ .short _020537AA - _0205377A - 2; case 1
+ .short _020537DA - _0205377A - 2; case 2
+ .short _0205385C - _0205377A - 2; case 3
+ .short _02053872 - _0205377A - 2; case 4
+ .short _020538A2 - _0205377A - 2; case 5
+_02053786:
+ ldr r0, [r4, #0x0]
+ ldr r0, [r0, #0x38]
+ bl FUN_020553A0
+ bl FUN_02058914
+ ldr r0, [r4, #0x0]
+ mov r1, #0x0
+ ldr r0, [r0, #0x38]
+ bl FUN_0205537C
+ mov r0, #0x6
+ lsl r0, r0, #0x6
+ ldr r1, [r4, r0]
+ add sp, #0x18
+ add r1, r1, #0x1
+ str r1, [r4, r0]
+ pop {r3-r7, pc}
+_020537AA:
+ sub r1, #0x24
+ add r0, r4, #0x0
+ add r1, r4, r1
+ mov r2, #0x0
+ bl FUN_02053F38
+ mov r1, #0x5b
+ lsl r1, r1, #0x2
+ add r0, r4, #0x0
+ add r1, r4, r1
+ mov r2, #0x1
+ bl FUN_02053F38
+ mov r0, #0x5f
+ mov r1, #0x2
+ lsl r0, r0, #0x2
+ str r1, [r4, r0]
+ add r1, r0, #0x4
+ ldr r1, [r4, r1]
+ add r0, r0, #0x4
+ add r1, r1, #0x1
+ add sp, #0x18
+ str r1, [r4, r0]
+ pop {r3-r7, pc}
+_020537DA:
+ mov r0, #0x0
+ str r0, [sp, #0xc]
+ sub r0, r1, #0x4
+ ldr r0, [r4, r0]
+ cmp r0, #0x0
+ ble _02053810
+ sub r1, #0x24
+ add r7, r4, r1
+ add r6, r4, #0x0
+ add r5, sp, #0x10
+_020537EE:
+ mov r1, #0x5a
+ lsl r1, r1, #0x2
+ ldr r1, [r6, r1]
+ add r0, r7, #0x0
+ blx r1
+ stmia r5!, {r0}
+ ldr r0, [sp, #0xc]
+ add r7, #0x10
+ add r0, r0, #0x1
+ str r0, [sp, #0xc]
+ mov r0, #0x5f
+ lsl r0, r0, #0x2
+ ldr r1, [r4, r0]
+ ldr r0, [sp, #0xc]
+ add r6, #0x10
+ cmp r0, r1
+ blt _020537EE
+_02053810:
+ ldr r0, [sp, #0x10]
+ cmp r0, #0x2
+ bne _0205382E
+ mov r0, #0x6
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ mov r0, #0x4
+ str r0, [sp, #0x8]
+ mov r0, #0x0
+ add r1, r0, #0x0
+ add r2, r0, #0x0
+ add r3, r0, #0x0
+ bl FUN_0200E1D0
+_0205382E:
+ mov r0, #0x5f
+ lsl r0, r0, #0x2
+ ldr r2, [r4, r0]
+ mov r3, #0x0
+ cmp r2, #0x0
+ ble _0205384A
+ add r1, sp, #0x10
+_0205383C:
+ ldr r0, [r1, #0x0]
+ cmp r0, #0x0
+ bne _0205384A
+ add r3, r3, #0x1
+ add r1, r1, #0x4
+ cmp r3, r2
+ blt _0205383C
+_0205384A:
+ cmp r3, r2
+ bne _020538B2
+ mov r0, #0x6
+ lsl r0, r0, #0x6
+ ldr r1, [r4, r0]
+ add sp, #0x18
+ add r1, r1, #0x1
+ str r1, [r4, r0]
+ pop {r3-r7, pc}
+_0205385C:
+ bl FUN_0200E308
+ cmp r0, #0x0
+ beq _020538B2
+ mov r0, #0x6
+ lsl r0, r0, #0x6
+ ldr r1, [r4, r0]
+ add sp, #0x18
+ add r1, r1, #0x1
+ str r1, [r4, r0]
+ pop {r3-r7, pc}
+_02053872:
+ sub r0, r1, #0x4
+ ldr r0, [r4, r0]
+ mov r6, #0x0
+ cmp r0, #0x0
+ ble _02053894
+ sub r1, #0x24
+ mov r7, #0x5f
+ add r5, r4, r1
+ lsl r7, r7, #0x2
+_02053884:
+ add r0, r5, #0x0
+ bl FUN_02054070
+ ldr r0, [r4, r7]
+ add r6, r6, #0x1
+ add r5, #0x10
+ cmp r6, r0
+ blt _02053884
+_02053894:
+ mov r0, #0x6
+ lsl r0, r0, #0x6
+ ldr r1, [r4, r0]
+ add sp, #0x18
+ add r1, r1, #0x1
+ str r1, [r4, r0]
+ pop {r3-r7, pc}
+_020538A2:
+ add r1, #0x8
+ ldr r0, [r4, r1]
+ mov r2, #0x1
+ str r2, [r0, #0x0]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02053D3C
+_020538B2:
+ add sp, #0x18
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020538B8
+FUN_020538B8: ; 0x020538B8
+ push {r3-r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ mov r1, #0x0
+ add r0, sp, #0xc
+ strh r1, [r0, #0x0]
+ mov r0, #0x6
+ lsl r0, r0, #0x6
+ ldr r0, [r4, r0]
+ cmp r0, #0x5
+ beq _020538D6
+ ldr r0, [r4, #0x4]
+ bl FUN_0201FDEC
+_020538D6:
+ mov r1, #0x6
+ lsl r1, r1, #0x6
+ ldr r0, [r4, r1]
+ cmp r0, #0x5
+ bls _020538E2
+ b _020539EA
+_020538E2:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_020538EE: ; jump table (using 16-bit offset)
+ .short _020538FA - _020538EE - 2; case 0
+ .short _02053912 - _020538EE - 2; case 1
+ .short _0205396E - _020538EE - 2; case 2
+ .short _020539A2 - _020538EE - 2; case 3
+ .short _020539C4 - _020538EE - 2; case 4
+ .short _020539DA - _020538EE - 2; case 5
+_020538FA:
+ ldr r0, [r4, #0x0]
+ mov r1, #0x0
+ ldr r0, [r0, #0x38]
+ bl FUN_0205537C
+ mov r0, #0x6
+ lsl r0, r0, #0x6
+ ldr r1, [r4, r0]
+ add sp, #0x10
+ add r1, r1, #0x1
+ str r1, [r4, r0]
+ pop {r3-r5, pc}
+_02053912:
+ mov r0, #0x4
+ add r1, sp, #0xc
+ mov r2, #0x2
+ mov r3, #0x0
+ bl FUN_02017FB4
+ mov r0, #0x1
+ mov r1, #0x0
+ bl FUN_0201E74C
+ mov r0, #0x2
+ mov r1, #0x0
+ bl FUN_0201E74C
+ mov r1, #0x57
+ lsl r1, r1, #0x2
+ add r0, r4, #0x0
+ add r1, r4, r1
+ mov r2, #0x2
+ bl FUN_02053F38
+ mov r0, #0x6
+ str r0, [sp, #0x0]
+ mov r1, #0x1
+ str r1, [sp, #0x4]
+ mov r0, #0x4
+ str r0, [sp, #0x8]
+ mov r0, #0x0
+ add r2, r1, #0x0
+ add r3, r0, #0x0
+ bl FUN_0200E1D0
+ ldr r0, _020539F0 ; =0x0000062F
+ bl FUN_020054C8
+ mov r0, #0x5f
+ mov r1, #0x1
+ lsl r0, r0, #0x2
+ str r1, [r4, r0]
+ add r1, r0, #0x4
+ ldr r1, [r4, r1]
+ add r0, r0, #0x4
+ add r1, r1, #0x1
+ add sp, #0x10
+ str r1, [r4, r0]
+ pop {r3-r5, pc}
+_0205396E:
+ add r0, r1, #0x0
+ sub r1, #0x18
+ sub r0, #0x24
+ ldr r1, [r4, r1]
+ add r0, r4, r0
+ blx r1
+ cmp r0, #0x0
+ bne _020539EA
+ bl FUN_0200E308
+ cmp r0, #0x0
+ beq _020539EA
+ ldr r0, _020539F4 ; =0x00000631
+ bl FUN_020054C8
+ mov r0, #0x6
+ lsl r0, r0, #0x6
+ ldr r1, [r4, r0]
+ add sp, #0x10
+ add r1, r1, #0x1
+ str r1, [r4, r0]
+ mov r1, #0xfe
+ mvn r1, r1
+ add r0, r0, #0x4
+ str r1, [r4, r0]
+ pop {r3-r5, pc}
+_020539A2:
+ add r0, r1, #0x4
+ ldr r2, [r4, r0]
+ add r2, #0x10
+ str r2, [r4, r0]
+ ldr r0, [r4, r0]
+ cmp r0, #0x0
+ ble _020539EA
+ ldr r0, [r4, r1]
+ add r0, r0, #0x1
+ str r0, [r4, r1]
+ ldr r0, [r4, #0x0]
+ mov r1, #0x1
+ ldr r0, [r0, #0x38]
+ bl FUN_0205537C
+ add sp, #0x10
+ pop {r3-r5, pc}
+_020539C4:
+ sub r1, #0x24
+ add r0, r4, r1
+ bl FUN_02054070
+ mov r0, #0x6
+ lsl r0, r0, #0x6
+ ldr r1, [r4, r0]
+ add sp, #0x10
+ add r1, r1, #0x1
+ str r1, [r4, r0]
+ pop {r3-r5, pc}
+_020539DA:
+ add r1, #0x8
+ ldr r0, [r4, r1]
+ mov r2, #0x1
+ str r2, [r0, #0x0]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02053D3C
+_020539EA:
+ add sp, #0x10
+ pop {r3-r5, pc}
+ nop
+_020539F0: .word 0x0000062F
+_020539F4: .word 0x00000631
+
+ thumb_func_start FUN_020539F8
+FUN_020539F8: ; 0x020539F8
+ push {r4-r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ mov r0, #0x6
+ add r4, r1, #0x0
+ lsl r0, r0, #0x6
+ ldr r0, [r4, r0]
+ cmp r0, #0x6
+ beq _02053A10
+ ldr r0, [r4, #0x4]
+ bl FUN_0201FDEC
+_02053A10:
+ mov r1, #0x6
+ lsl r1, r1, #0x6
+ ldr r0, [r4, r1]
+ cmp r0, #0x6
+ bls _02053A1C
+ b _02053B30
+_02053A1C:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02053A28: ; jump table (using 16-bit offset)
+ .short _02053A36 - _02053A28 - 2; case 0
+ .short _02053A4E - _02053A28 - 2; case 1
+ .short _02053A78 - _02053A28 - 2; case 2
+ .short _02053AA0 - _02053A28 - 2; case 3
+ .short _02053AE2 - _02053A28 - 2; case 4
+ .short _02053B00 - _02053A28 - 2; case 5
+ .short _02053B16 - _02053A28 - 2; case 6
+_02053A36:
+ ldr r0, [r4, #0x0]
+ mov r1, #0x0
+ ldr r0, [r0, #0x38]
+ bl FUN_0205537C
+ mov r0, #0x6
+ lsl r0, r0, #0x6
+ ldr r1, [r4, r0]
+ add sp, #0xc
+ add r1, r1, #0x1
+ str r1, [r4, r0]
+ pop {r4-r5, pc}
+_02053A4E:
+ sub r1, #0x24
+ add r0, r4, #0x0
+ add r1, r4, r1
+ mov r2, #0x3
+ bl FUN_02053F38
+ mov r0, #0x63
+ lsl r0, r0, #0x4
+ bl FUN_020054C8
+ mov r0, #0x5f
+ mov r1, #0x1
+ lsl r0, r0, #0x2
+ str r1, [r4, r0]
+ add r1, r0, #0x4
+ ldr r1, [r4, r1]
+ add r0, r0, #0x4
+ add r1, r1, #0x1
+ add sp, #0xc
+ str r1, [r4, r0]
+ pop {r4-r5, pc}
+_02053A78:
+ add r0, r1, #0x4
+ ldr r2, [r4, r0]
+ sub r2, #0x20
+ str r2, [r4, r0]
+ ldr r1, [r4, r0]
+ mov r0, #0xfe
+ mvn r0, r0
+ cmp r1, r0
+ bge _02053B30
+ mov r0, #0x1
+ mov r1, #0x0
+ bl FUN_0201E74C
+ mov r0, #0x6
+ lsl r0, r0, #0x6
+ ldr r1, [r4, r0]
+ add sp, #0xc
+ add r1, r1, #0x1
+ str r1, [r4, r0]
+ pop {r4-r5, pc}
+_02053AA0:
+ add r0, r1, #0x0
+ sub r1, #0x18
+ sub r0, #0x24
+ ldr r1, [r4, r1]
+ add r0, r4, r0
+ blx r1
+ add r5, r0, #0x0
+ cmp r5, #0x2
+ bne _02053AD0
+ mov r1, #0x61
+ mov r0, #0x0
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ mov r1, #0x6
+ str r1, [sp, #0x0]
+ mov r1, #0x1
+ str r1, [sp, #0x4]
+ mov r1, #0x4
+ str r1, [sp, #0x8]
+ ldr r3, _02053B34 ; =0x00007FFF
+ add r1, r0, #0x0
+ add r2, r0, #0x0
+ bl FUN_0200E1D0
+_02053AD0:
+ cmp r5, #0x0
+ bne _02053B30
+ mov r0, #0x6
+ lsl r0, r0, #0x6
+ ldr r1, [r4, r0]
+ add sp, #0xc
+ add r1, r1, #0x1
+ str r1, [r4, r0]
+ pop {r4-r5, pc}
+_02053AE2:
+ bl FUN_0200E308
+ cmp r0, #0x0
+ beq _02053B30
+ mov r0, #0x61
+ mov r1, #0x0
+ lsl r0, r0, #0x2
+ str r1, [r4, r0]
+ sub r1, r0, #0x4
+ ldr r1, [r4, r1]
+ sub r0, r0, #0x4
+ add r1, r1, #0x1
+ add sp, #0xc
+ str r1, [r4, r0]
+ pop {r4-r5, pc}
+_02053B00:
+ sub r1, #0x24
+ add r0, r4, r1
+ bl FUN_02054070
+ mov r0, #0x6
+ lsl r0, r0, #0x6
+ ldr r1, [r4, r0]
+ add sp, #0xc
+ add r1, r1, #0x1
+ str r1, [r4, r0]
+ pop {r4-r5, pc}
+_02053B16:
+ mov r0, #0x2
+ mov r1, #0x0
+ bl FUN_0201E74C
+ mov r0, #0x62
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x1
+ str r1, [r0, #0x0]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02053D3C
+_02053B30:
+ add sp, #0xc
+ pop {r4-r5, pc}
+ .balign 4
+_02053B34: .word 0x00007FFF
+
+ thumb_func_start FUN_02053B38
+FUN_02053B38: ; 0x02053B38
+ push {r4-r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ mov r0, #0x6
+ add r4, r1, #0x0
+ lsl r0, r0, #0x6
+ ldr r0, [r4, r0]
+ cmp r0, #0x6
+ beq _02053B50
+ ldr r0, [r4, #0x4]
+ bl FUN_0201FDEC
+_02053B50:
+ mov r1, #0x6
+ lsl r1, r1, #0x6
+ ldr r0, [r4, r1]
+ cmp r0, #0x6
+ bls _02053B5C
+ b _02053C8C
+_02053B5C:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02053B68: ; jump table (using 16-bit offset)
+ .short _02053B76 - _02053B68 - 2; case 0
+ .short _02053BB2 - _02053B68 - 2; case 1
+ .short _02053BD6 - _02053B68 - 2; case 2
+ .short _02053BF2 - _02053B68 - 2; case 3
+ .short _02053C22 - _02053B68 - 2; case 4
+ .short _02053C66 - _02053B68 - 2; case 5
+ .short _02053C7C - _02053B68 - 2; case 6
+_02053B76:
+ ldr r0, [r4, #0x0]
+ mov r1, #0x0
+ ldr r0, [r0, #0x38]
+ bl FUN_0205537C
+ mov r1, #0x57
+ lsl r1, r1, #0x2
+ add r0, r4, #0x0
+ add r1, r4, r1
+ mov r2, #0x4
+ bl FUN_02053F38
+ mov r1, #0x5b
+ lsl r1, r1, #0x2
+ add r0, r4, #0x0
+ add r1, r4, r1
+ mov r2, #0x5
+ bl FUN_02053F38
+ mov r0, #0x5f
+ mov r1, #0x2
+ lsl r0, r0, #0x2
+ str r1, [r4, r0]
+ add r1, r0, #0x4
+ ldr r1, [r4, r1]
+ add r0, r0, #0x4
+ add r1, r1, #0x1
+ add sp, #0xc
+ str r1, [r4, r0]
+ pop {r4-r5, pc}
+_02053BB2:
+ mov r0, #0x6
+ str r0, [sp, #0x0]
+ mov r1, #0x1
+ str r1, [sp, #0x4]
+ mov r0, #0x4
+ str r0, [sp, #0x8]
+ ldr r3, _02053C90 ; =0x00007FFF
+ mov r0, #0x0
+ add r2, r1, #0x0
+ bl FUN_0200E1D0
+ mov r0, #0x6
+ lsl r0, r0, #0x6
+ ldr r1, [r4, r0]
+ add sp, #0xc
+ add r1, r1, #0x1
+ str r1, [r4, r0]
+ pop {r4-r5, pc}
+_02053BD6:
+ bl FUN_0200E308
+ cmp r0, #0x0
+ beq _02053C8C
+ ldr r0, _02053C94 ; =0x00000632
+ bl FUN_020054C8
+ mov r0, #0x6
+ lsl r0, r0, #0x6
+ ldr r1, [r4, r0]
+ add sp, #0xc
+ add r1, r1, #0x1
+ str r1, [r4, r0]
+ pop {r4-r5, pc}
+_02053BF2:
+ add r0, r1, #0x0
+ sub r1, #0x18
+ sub r0, #0x24
+ ldr r1, [r4, r1]
+ add r0, r4, r0
+ blx r1
+ cmp r0, #0x0
+ bne _02053C8C
+ ldr r0, [r4, #0x0]
+ mov r1, #0x1
+ ldr r0, [r0, #0x38]
+ bl FUN_0205537C
+ mov r0, #0x61
+ mov r1, #0x6
+ lsl r0, r0, #0x2
+ str r1, [r4, r0]
+ sub r1, r0, #0x4
+ ldr r1, [r4, r1]
+ sub r0, r0, #0x4
+ add r1, r1, #0x1
+ add sp, #0xc
+ str r1, [r4, r0]
+ pop {r4-r5, pc}
+_02053C22:
+ add r0, r1, #0x0
+ sub r1, #0x8
+ sub r0, #0x14
+ ldr r1, [r4, r1]
+ add r0, r4, r0
+ blx r1
+ add r5, r0, #0x0
+ mov r0, #0x61
+ lsl r0, r0, #0x2
+ ldr r1, [r4, r0]
+ cmp r1, #0x0
+ bgt _02053C50
+ bne _02053C54
+ sub r0, #0x28
+ add r0, r4, r0
+ bl FUN_02054070
+ mov r0, #0x61
+ lsl r0, r0, #0x2
+ ldr r1, [r4, r0]
+ sub r1, r1, #0x1
+ str r1, [r4, r0]
+ b _02053C54
+_02053C50:
+ sub r1, r1, #0x1
+ str r1, [r4, r0]
+_02053C54:
+ cmp r5, #0x0
+ bne _02053C8C
+ mov r0, #0x6
+ lsl r0, r0, #0x6
+ ldr r1, [r4, r0]
+ add sp, #0xc
+ add r1, r1, #0x1
+ str r1, [r4, r0]
+ pop {r4-r5, pc}
+_02053C66:
+ sub r1, #0x14
+ add r0, r4, r1
+ bl FUN_02054070
+ mov r0, #0x6
+ lsl r0, r0, #0x6
+ ldr r1, [r4, r0]
+ add sp, #0xc
+ add r1, r1, #0x1
+ str r1, [r4, r0]
+ pop {r4-r5, pc}
+_02053C7C:
+ add r1, #0x8
+ ldr r0, [r4, r1]
+ mov r2, #0x1
+ str r2, [r0, #0x0]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02053D3C
+_02053C8C:
+ add sp, #0xc
+ pop {r4-r5, pc}
+ .balign 4
+_02053C90: .word 0x00007FFF
+_02053C94: .word 0x00000632
+
+ thumb_func_start FUN_02053C98
+FUN_02053C98: ; 0x02053C98
+ push {r3-r5, lr}
+ add r3, r1, #0x0
+ add r4, r0, #0x0
+ add r5, r2, #0x0
+ cmp r3, #0x3
+ bhi _02053CEE
+ add r1, r3, r3
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02053CB0: ; jump table (using 16-bit offset)
+ .short _02053CB8 - _02053CB0 - 2; case 0
+ .short _02053CC6 - _02053CB0 - 2; case 1
+ .short _02053CD4 - _02053CB0 - 2; case 2
+ .short _02053CE2 - _02053CB0 - 2; case 3
+_02053CB8:
+ ldr r2, _02053CF8 ; =0x020F5C04
+ ldr r0, _02053CFC ; =FUN_02053750
+ ldrb r2, [r2, r3]
+ add r1, r4, #0x0
+ bl FUN_02053D0C
+ b _02053CEE
+_02053CC6:
+ ldr r2, _02053CF8 ; =0x020F5C04
+ ldr r0, _02053D00 ; =FUN_020538B8
+ ldrb r2, [r2, r3]
+ add r1, r4, #0x0
+ bl FUN_02053D0C
+ b _02053CEE
+_02053CD4:
+ ldr r2, _02053CF8 ; =0x020F5C04
+ ldr r0, _02053D04 ; =FUN_020539F8
+ ldrb r2, [r2, r3]
+ add r1, r4, #0x0
+ bl FUN_02053D0C
+ b _02053CEE
+_02053CE2:
+ ldr r2, _02053CF8 ; =0x020F5C04
+ ldr r0, _02053D08 ; =FUN_02053B38
+ ldrb r2, [r2, r3]
+ add r1, r4, #0x0
+ bl FUN_02053D0C
+_02053CEE:
+ mov r1, #0x62
+ lsl r1, r1, #0x2
+ str r5, [r0, r1]
+ str r4, [r0, #0x0]
+ pop {r3-r5, pc}
+ .balign 4
+_02053CF8: .word 0x020F5C04
+_02053CFC: .word FUN_02053750
+_02053D00: .word FUN_020538B8
+_02053D04: .word FUN_020539F8
+_02053D08: .word FUN_02053B38
+
+ thumb_func_start FUN_02053D0C
+FUN_02053D0C: ; 0x02053D0C
+ push {r4-r6, lr}
+ add r5, r1, #0x0
+ mov r1, #0x63
+ add r6, r2, #0x0
+ lsl r1, r1, #0x2
+ mov r2, #0x5
+ mov r3, #0x4
+ bl FUN_020061E8
+ bl FUN_0201B6C8
+ add r4, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_020238F4
+ bl FUN_020239CC
+ add r1, r0, #0x0
+ add r0, r4, #0x4
+ add r2, r6, #0x0
+ bl FUN_02053D50
+ add r0, r4, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02053D3C
+FUN_02053D3C: ; 0x02053D3C
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, r1, #0x4
+ bl FUN_02053D68
+ add r0, r4, #0x0
+ bl FUN_0200621C
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02053D50
+FUN_02053D50: ; 0x02053D50
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_02053D70
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_02053D94
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02053D68
+FUN_02053D68: ; 0x02053D68
+ ldr r3, _02053D6C ; =FUN_02053EF0
+ bx r3
+ .balign 4
+_02053D6C: .word FUN_02053EF0
+
+ thumb_func_start FUN_02053D70
+FUN_02053D70: ; 0x02053D70
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r1, r4, #0x0
+ mov r0, #0x2
+ add r1, #0x30
+ mov r2, #0x4
+ bl FUN_02008C9C
+ str r0, [r4, #0x0]
+ mov r0, #0x10
+ mov r1, #0x1
+ bl FUN_0201E6E4
+ mov r0, #0x10
+ mov r1, #0x1
+ bl FUN_0201E74C
+ pop {r4, pc}
+
+ thumb_func_start FUN_02053D94
+FUN_02053D94: ; 0x02053D94
+ push {r3-r7, lr}
+ sub sp, #0x18
+ add r5, r0, #0x0
+ str r1, [sp, #0x10]
+ add r7, r2, #0x0
+ mov r6, #0x0
+ add r4, r5, #0x0
+_02053DA2:
+ mov r0, #0x2
+ add r1, r6, #0x0
+ mov r2, #0x4
+ bl FUN_02008DEC
+ str r0, [r4, #0x8]
+ add r6, r6, #0x1
+ add r4, r4, #0x4
+ cmp r6, #0x4
+ blt _02053DA2
+ ldr r0, [sp, #0x10]
+ add r1, r5, #0x0
+ lsl r0, r0, #0x2
+ str r0, [sp, #0x14]
+ ldr r3, _02053E78 ; =0x02105EC8
+ ldr r2, [sp, #0x14]
+ ldr r0, [r5, #0x8]
+ ldr r2, [r3, r2]
+ add r1, #0x18
+ bl FUN_02053E8C
+ str r0, [r5, #0x20]
+ ldr r1, [r5, #0x18]
+ mov r6, #0x0
+ ldr r0, [r1, #0x8]
+ cmp r0, #0x0
+ ble _02053DF0
+ add r4, r6, #0x0
+_02053DDA:
+ ldr r0, [r1, #0x0]
+ add r1, r7, #0x0
+ ldr r0, [r0, r4]
+ bl FUN_02009630
+ ldr r1, [r5, #0x18]
+ add r6, r6, #0x1
+ ldr r0, [r1, #0x8]
+ add r4, r4, #0x4
+ cmp r6, r0
+ blt _02053DDA
+_02053DF0:
+ ldr r3, _02053E7C ; =0x02105ED0
+ ldr r2, [sp, #0x14]
+ add r1, r5, #0x0
+ ldr r0, [r5, #0xc]
+ ldr r2, [r3, r2]
+ add r1, #0x1c
+ bl FUN_02053E8C
+ str r0, [r5, #0x24]
+ ldr r1, [r5, #0x1c]
+ mov r6, #0x0
+ ldr r0, [r1, #0x8]
+ cmp r0, #0x0
+ ble _02053E24
+ add r4, r6, #0x0
+_02053E0E:
+ ldr r0, [r1, #0x0]
+ add r1, r7, #0x0
+ ldr r0, [r0, r4]
+ bl FUN_02009630
+ ldr r1, [r5, #0x1c]
+ add r6, r6, #0x1
+ ldr r0, [r1, #0x8]
+ add r4, r4, #0x4
+ cmp r6, r0
+ blt _02053E0E
+_02053E24:
+ ldr r0, [r5, #0x10]
+ ldr r2, _02053E80 ; =0x02105F48
+ mov r1, #0x0
+ bl FUN_02053E8C
+ str r0, [r5, #0x28]
+ ldr r0, [r5, #0x14]
+ ldr r2, _02053E84 ; =0x02105F64
+ mov r1, #0x0
+ bl FUN_02053E8C
+ str r0, [r5, #0x2c]
+ ldr r0, [r5, #0x18]
+ bl FUN_02009B44
+ ldr r0, [r5, #0x1c]
+ bl FUN_02009DAC
+ ldr r1, _02053E88 ; =0x02105F80
+ mov r0, #0x4
+ bl FUN_020161A4
+ ldr r1, [r5, #0x10]
+ add r4, r0, #0x0
+ str r1, [sp, #0x0]
+ ldr r1, [r5, #0x14]
+ str r1, [sp, #0x4]
+ mov r1, #0x0
+ str r1, [sp, #0x8]
+ str r1, [sp, #0xc]
+ ldr r2, [r5, #0x8]
+ ldr r3, [r5, #0xc]
+ mov r1, #0x4
+ bl FUN_02008BE0
+ str r0, [r5, #0x4]
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x18
+ pop {r3-r7, pc}
+ nop
+_02053E78: .word 0x02105EC8
+_02053E7C: .word 0x02105ED0
+_02053E80: .word 0x02105F48
+_02053E84: .word 0x02105F64
+_02053E88: .word 0x02105F80
+
+ thumb_func_start FUN_02053E8C
+FUN_02053E8C: ; 0x02053E8C
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ add r5, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_0200965C
+ add r1, r0, #0x0
+ mov r0, #0x4
+ bl FUN_020169D8
+ add r4, r0, #0x0
+ mov r0, #0x4
+ add r1, r6, #0x0
+ bl FUN_020161A4
+ add r6, r0, #0x0
+ add r1, r4, #0x0
+ mov r2, #0x4
+ bl FUN_02009668
+ add r0, r6, #0x0
+ bl FUN_02016A18
+ cmp r5, #0x0
+ beq _02053ED0
+ add r0, r4, #0x0
+ bl FUN_020096CC
+ mov r1, #0x4
+ bl FUN_02009424
+ str r0, [r5, #0x0]
+ add r2, r0, #0x0
+ b _02053ED2
+_02053ED0:
+ mov r2, #0x0
+_02053ED2:
+ add r0, r7, #0x0
+ add r1, r4, #0x0
+ mov r3, #0x4
+ bl FUN_020093A8
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_020096B4
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add r0, r5, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02053EF0
+FUN_02053EF0: ; 0x02053EF0
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_0201FD58
+ mov r0, #0x0
+ str r0, [r5, #0x0]
+ ldr r0, [r5, #0x4]
+ bl FUN_02008C80
+ mov r0, #0x0
+ str r0, [r5, #0x4]
+ ldr r0, [r5, #0x18]
+ bl FUN_02009C30
+ ldr r0, [r5, #0x1c]
+ bl FUN_02009E28
+ mov r6, #0x0
+ add r4, r5, #0x0
+_02053F18:
+ ldr r0, [r4, #0x18]
+ bl FUN_02009448
+ add r6, r6, #0x1
+ add r4, r4, #0x4
+ cmp r6, #0x2
+ blt _02053F18
+ mov r4, #0x0
+_02053F28:
+ ldr r0, [r5, #0x8]
+ bl FUN_02008E2C
+ add r4, r4, #0x1
+ add r5, r5, #0x4
+ cmp r4, #0x4
+ blt _02053F28
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02053F38
+FUN_02053F38: ; 0x02053F38
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ mov r4, #0x10
+ mov r3, #0x0
+_02053F40:
+ strb r3, [r5, #0x0]
+ add r5, r5, #0x1
+ sub r4, r4, #0x1
+ bne _02053F40
+ cmp r2, #0x5
+ bhi _02053FB6
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_02053F58: ; jump table (using 16-bit offset)
+ .short _02053F64 - _02053F58 - 2; case 0
+ .short _02053F72 - _02053F58 - 2; case 1
+ .short _02053F80 - _02053F58 - 2; case 2
+ .short _02053F8E - _02053F58 - 2; case 3
+ .short _02053F9C - _02053F58 - 2; case 4
+ .short _02053FAA - _02053F58 - 2; case 5
+_02053F64:
+ ldr r2, _02053FC0 ; =FUN_02054088
+ str r2, [r1, #0x4]
+ ldr r2, _02053FC4 ; =FUN_020540C8
+ str r2, [r1, #0x8]
+ ldr r2, _02053FC8 ; =FUN_020540E8
+ str r2, [r1, #0xc]
+ b _02053FB6
+_02053F72:
+ ldr r2, _02053FCC ; =FUN_02054168
+ str r2, [r1, #0x4]
+ ldr r2, _02053FD0 ; =FUN_020541A4
+ str r2, [r1, #0x8]
+ ldr r2, _02053FD4 ; =FUN_020541C4
+ str r2, [r1, #0xc]
+ b _02053FB6
+_02053F80:
+ ldr r2, _02053FD8 ; =FUN_020541E8
+ str r2, [r1, #0x4]
+ ldr r2, _02053FDC ; =FUN_02054228
+ str r2, [r1, #0x8]
+ ldr r2, _02053FE0 ; =FUN_02054248
+ str r2, [r1, #0xc]
+ b _02053FB6
+_02053F8E:
+ ldr r2, _02053FE4 ; =FUN_020542A4
+ str r2, [r1, #0x4]
+ ldr r2, _02053FE8 ; =FUN_020542E8
+ str r2, [r1, #0x8]
+ ldr r2, _02053FEC ; =FUN_02054308
+ str r2, [r1, #0xc]
+ b _02053FB6
+_02053F9C:
+ ldr r2, _02053FF0 ; =FUN_020543D8
+ str r2, [r1, #0x4]
+ ldr r2, _02053FF4 ; =FUN_0205442C
+ str r2, [r1, #0x8]
+ ldr r2, _02053FF8 ; =FUN_0205444C
+ str r2, [r1, #0xc]
+ b _02053FB6
+_02053FAA:
+ ldr r2, _02053FFC ; =FUN_02054508
+ str r2, [r1, #0x4]
+ ldr r2, _02054000 ; =FUN_0205454C
+ str r2, [r1, #0x8]
+ ldr r2, _02054004 ; =FUN_0205456C
+ str r2, [r1, #0xc]
+_02053FB6:
+ ldr r2, [r1, #0x4]
+ add r0, r0, #0x4
+ blx r2
+ pop {r3-r5, pc}
+ nop
+_02053FC0: .word FUN_02054088
+_02053FC4: .word FUN_020540C8
+_02053FC8: .word FUN_020540E8
+_02053FCC: .word FUN_02054168
+_02053FD0: .word FUN_020541A4
+_02053FD4: .word FUN_020541C4
+_02053FD8: .word FUN_020541E8
+_02053FDC: .word FUN_02054228
+_02053FE0: .word FUN_02054248
+_02053FE4: .word FUN_020542A4
+_02053FE8: .word FUN_020542E8
+_02053FEC: .word FUN_02054308
+_02053FF0: .word FUN_020543D8
+_02053FF4: .word FUN_0205442C
+_02053FF8: .word FUN_0205444C
+_02053FFC: .word FUN_02054508
+_02054000: .word FUN_0205454C
+_02054004: .word FUN_0205456C
+
+ thumb_func_start FUN_02054008
+FUN_02054008: ; 0x02054008
+ push {r3-r7, lr}
+ sub sp, #0x30
+ add r5, r0, #0x0
+ add r7, sp, #0x0
+ add r6, r3, #0x0
+ mov r0, #0x0
+ add r4, r1, #0x0
+ add r3, r7, #0x0
+ add r1, r0, #0x0
+ stmia r3!, {r0-r1}
+ stmia r3!, {r0-r1}
+ stmia r3!, {r0-r1}
+ stmia r3!, {r0-r1}
+ stmia r3!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldr r0, [r5, #0x0]
+ add r3, sp, #0x8
+ str r0, [sp, #0x0]
+ ldr r0, [r5, #0x4]
+ ldr r1, [r0, #0x0]
+ mov r0, #0x24
+ mul r0, r4
+ add r0, r1, r0
+ str r0, [sp, #0x4]
+ ldmia r2!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldr r0, [r2, #0x0]
+ add r2, sp, #0x14
+ str r0, [r3, #0x0]
+ ldr r3, _0205406C ; =0x020F5C08
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldr r0, [r3, #0x0]
+ str r0, [r2, #0x0]
+ ldr r0, [sp, #0x48]
+ str r6, [sp, #0x24]
+ str r0, [sp, #0x28]
+ mov r0, #0x4
+ str r0, [sp, #0x2c]
+ add r0, r7, #0x0
+ bl FUN_0201FE94
+ add r4, r0, #0x0
+ bne _02054064
+ bl ErrorHandling
+_02054064:
+ add r0, r4, #0x0
+ add sp, #0x30
+ pop {r3-r7, pc}
+ nop
+_0205406C: .word 0x020F5C08
+
+ thumb_func_start FUN_02054070
+FUN_02054070: ; 0x02054070
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x8]
+ blx r1
+ mov r1, #0x10
+ mov r0, #0x0
+_0205407C:
+ strb r0, [r4, #0x0]
+ add r4, r4, #0x1
+ sub r1, r1, #0x1
+ bne _0205407C
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02054088
+FUN_02054088: ; 0x02054088
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ add r5, r1, #0x0
+ mov r0, #0x4
+ mov r1, #0x14
+ bl FUN_02016998
+ str r0, [r5, #0x0]
+ mov r2, #0x14
+ mov r1, #0x0
+_0205409C:
+ strb r1, [r0, #0x0]
+ add r0, r0, #0x1
+ sub r2, r2, #0x1
+ bne _0205409C
+ ldr r5, [r5, #0x0]
+ mov r0, #0x7
+ lsl r0, r0, #0x10
+ str r0, [r5, #0x0]
+ mov r0, #0x45
+ lsl r0, r0, #0xc
+ str r0, [r5, #0x4]
+ mov r0, #0x1
+ mov r1, #0x0
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ add r2, r5, #0x0
+ add r3, r1, #0x0
+ bl FUN_02054008
+ str r0, [r5, #0xc]
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020540C8
+FUN_020540C8: ; 0x020540C8
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ beq _020540E4
+ ldr r0, [r0, #0xc]
+ bl FUN_0201FFC8
+ ldr r1, [r4, #0x0]
+ mov r0, #0x4
+ bl FUN_02016A8C
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+_020540E4:
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020540E8
+FUN_020540E8: ; 0x020540E8
+ push {r3-r6, lr}
+ sub sp, #0xc
+ ldr r4, [r0, #0x0]
+ mov r2, #0x2
+ ldr r0, [r4, #0x10]
+ lsl r2, r2, #0xe
+ cmp r0, r2
+ bgt _0205415E
+ add r6, r4, #0x0
+ ldmia r6!, {r0-r1}
+ add r5, sp, #0x0
+ add r3, r5, #0x0
+ stmia r5!, {r0-r1}
+ ldr r0, [r6, #0x0]
+ lsr r2, r2, #0x4
+ str r0, [r5, #0x0]
+ ldr r0, [r4, #0x10]
+ ldr r1, [sp, #0x4]
+ asr r0, r0, #0x4
+ lsl r5, r0, #0x2
+ ldr r0, _02054164 ; =0x020FFA38
+ ldrsh r5, [r0, r5]
+ asr r0, r5, #0x1f
+ lsr r6, r5, #0x10
+ lsl r0, r0, #0x10
+ orr r0, r6
+ lsl r6, r5, #0x10
+ mov r5, #0x0
+ add r2, r6, r2
+ adc r0, r5
+ lsl r0, r0, #0x14
+ lsr r2, r2, #0xc
+ orr r2, r0
+ sub r0, r1, r2
+ str r0, [sp, #0x4]
+ ldr r0, [r4, #0xc]
+ add r1, r3, #0x0
+ bl FUN_02020044
+ mov r1, #0x2
+ ldr r0, [r4, #0x10]
+ lsl r1, r1, #0xa
+ add r0, r0, r1
+ str r0, [r4, #0x10]
+ ldr r0, [r4, #0xc]
+ lsl r1, r1, #0x1
+ bl FUN_020201E4
+ mov r0, #0x2
+ ldr r1, [r4, #0x10]
+ lsl r0, r0, #0xe
+ cmp r1, r0
+ bne _02054158
+ add sp, #0xc
+ mov r0, #0x2
+ pop {r3-r6, pc}
+_02054158:
+ add sp, #0xc
+ mov r0, #0x1
+ pop {r3-r6, pc}
+_0205415E:
+ mov r0, #0x0
+ add sp, #0xc
+ pop {r3-r6, pc}
+ .balign 4
+_02054164: .word 0x020FFA38
+
+ thumb_func_start FUN_02054168
+FUN_02054168: ; 0x02054168
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ add r5, r1, #0x0
+ mov r0, #0x4
+ mov r1, #0x14
+ bl FUN_02016998
+ str r0, [r5, #0x0]
+ mov r2, #0x14
+ mov r1, #0x0
+_0205417C:
+ strb r1, [r0, #0x0]
+ add r0, r0, #0x1
+ sub r2, r2, #0x1
+ bne _0205417C
+ ldr r5, [r5, #0x0]
+ mov r0, #0x7
+ lsl r0, r0, #0x10
+ str r0, [r5, #0x0]
+ mov r0, #0x6
+ lsl r0, r0, #0x10
+ mov r1, #0x1
+ str r0, [r5, #0x4]
+ add r0, r4, #0x0
+ add r2, r5, #0x0
+ add r3, r1, #0x0
+ str r1, [sp, #0x0]
+ bl FUN_02054008
+ str r0, [r5, #0xc]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_020541A4
+FUN_020541A4: ; 0x020541A4
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ beq _020541C0
+ ldr r0, [r0, #0xc]
+ bl FUN_0201FFC8
+ ldr r1, [r4, #0x0]
+ mov r0, #0x4
+ bl FUN_02016A8C
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+_020541C0:
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020541C4
+FUN_020541C4: ; 0x020541C4
+ push {r4, lr}
+ ldr r4, [r0, #0x0]
+ ldr r0, [r4, #0x10]
+ cmp r0, #0x7
+ bge _020541E2
+ mov r1, #0x1
+ ldr r0, [r4, #0xc]
+ lsl r1, r1, #0xc
+ bl FUN_020201E4
+ ldr r0, [r4, #0x10]
+ add r0, r0, #0x1
+ str r0, [r4, #0x10]
+ mov r0, #0x1
+ pop {r4, pc}
+_020541E2:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020541E8
+FUN_020541E8: ; 0x020541E8
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ add r5, r1, #0x0
+ mov r0, #0x4
+ mov r1, #0x14
+ bl FUN_02016998
+ str r0, [r5, #0x0]
+ mov r2, #0x14
+ mov r1, #0x0
+_020541FC:
+ strb r1, [r0, #0x0]
+ add r0, r0, #0x1
+ sub r2, r2, #0x1
+ bne _020541FC
+ ldr r5, [r5, #0x0]
+ mov r0, #0x7
+ lsl r0, r0, #0x10
+ str r0, [r5, #0x0]
+ mov r0, #0x3
+ lsl r0, r0, #0x12
+ str r0, [r5, #0x4]
+ mov r0, #0x1
+ mov r1, #0x0
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ add r2, r5, #0x0
+ add r3, r1, #0x0
+ bl FUN_02054008
+ str r0, [r5, #0xc]
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02054228
+FUN_02054228: ; 0x02054228
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ beq _02054244
+ ldr r0, [r0, #0xc]
+ bl FUN_0201FFC8
+ ldr r1, [r4, #0x0]
+ mov r0, #0x4
+ bl FUN_02016A8C
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+_02054244:
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02054248
+FUN_02054248: ; 0x02054248
+ push {r4, lr}
+ ldr r4, [r0, #0x0]
+ mov r0, #0x2
+ ldr r1, [r4, #0x4]
+ lsl r0, r0, #0xe
+ add r0, r1, r0
+ str r0, [r4, #0x4]
+ ldr r0, [r4, #0xc]
+ add r1, r4, #0x0
+ bl FUN_02020044
+ mov r1, #0x1
+ ldr r0, [r4, #0xc]
+ lsl r1, r1, #0xc
+ bl FUN_020201E4
+ ldr r0, [r4, #0x10]
+ ldr r1, [r4, #0x4]
+ cmp r0, #0x0
+ bne _02054284
+ mov r0, #0x6
+ lsl r0, r0, #0x12
+ cmp r1, r0
+ blt _0205429A
+ ldr r0, _020542A0 ; =0xFFFE0000
+ str r0, [r4, #0x4]
+ ldr r0, [r4, #0x10]
+ add r0, r0, #0x1
+ str r0, [r4, #0x10]
+ b _0205429A
+_02054284:
+ mov r0, #0x45
+ lsl r0, r0, #0xc
+ cmp r1, r0
+ blt _0205429A
+ str r0, [r4, #0x4]
+ ldr r0, [r4, #0xc]
+ add r1, r4, #0x0
+ bl FUN_02020044
+ mov r0, #0x0
+ pop {r4, pc}
+_0205429A:
+ mov r0, #0x1
+ pop {r4, pc}
+ nop
+_020542A0: .word 0xFFFE0000
+
+ thumb_func_start FUN_020542A4
+FUN_020542A4: ; 0x020542A4
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ add r5, r1, #0x0
+ mov r0, #0x4
+ mov r1, #0x18
+ bl FUN_02016998
+ str r0, [r5, #0x0]
+ mov r2, #0x18
+ mov r1, #0x0
+_020542B8:
+ strb r1, [r0, #0x0]
+ add r0, r0, #0x1
+ sub r2, r2, #0x1
+ bne _020542B8
+ ldr r5, [r5, #0x0]
+ mov r0, #0x7
+ lsl r0, r0, #0x10
+ str r0, [r5, #0x0]
+ mov r0, #0x45
+ lsl r0, r0, #0xc
+ str r0, [r5, #0x4]
+ mov r0, #0x1
+ mov r1, #0x0
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ add r2, r5, #0x0
+ add r3, r1, #0x0
+ bl FUN_02054008
+ mov r1, #0x1
+ str r0, [r5, #0xc]
+ bl FUN_02020130
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_020542E8
+FUN_020542E8: ; 0x020542E8
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ beq _02054304
+ ldr r0, [r0, #0xc]
+ bl FUN_0201FFC8
+ ldr r1, [r4, #0x0]
+ mov r0, #0x4
+ bl FUN_02016A8C
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+_02054304:
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02054308
+FUN_02054308: ; 0x02054308
+ push {r3-r5, lr}
+ ldr r4, [r0, #0x0]
+ mov r5, #0x1
+ ldr r0, [r4, #0x10]
+ cmp r0, #0x4
+ bhi _020543CC
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02054320: ; jump table (using 16-bit offset)
+ .short _0205432A - _02054320 - 2; case 0
+ .short _02054348 - _02054320 - 2; case 1
+ .short _02054376 - _02054320 - 2; case 2
+ .short _020543A2 - _02054320 - 2; case 3
+ .short _020543CA - _02054320 - 2; case 4
+_0205432A:
+ ldr r1, [r4, #0x14]
+ ldr r0, _020543D0 ; =0x00000333
+ add r1, r1, r0
+ str r1, [r4, #0x14]
+ ldr r0, [r4, #0xc]
+ bl FUN_020201E4
+ ldr r1, [r4, #0x14]
+ lsl r0, r5, #0xd
+ cmp r1, r0
+ blt _020543CC
+ ldr r0, [r4, #0x10]
+ add r0, r0, #0x1
+ str r0, [r4, #0x10]
+ b _020543CC
+_02054348:
+ ldr r1, [r4, #0x4]
+ ldr r0, _020543D4 ; =0xFFFE0000
+ cmp r1, r0
+ ble _02054368
+ lsl r0, r5, #0xf
+ sub r0, r1, r0
+ str r0, [r4, #0x4]
+ ldr r0, [r4, #0xc]
+ add r1, r4, #0x0
+ bl FUN_02020044
+ ldr r0, [r4, #0xc]
+ ldr r1, [r4, #0x14]
+ bl FUN_020201E4
+ b _020543CC
+_02054368:
+ mov r0, #0x6
+ lsl r0, r0, #0x12
+ str r0, [r4, #0x4]
+ ldr r0, [r4, #0x10]
+ add r0, r0, #0x1
+ str r0, [r4, #0x10]
+ b _020543CC
+_02054376:
+ ldr r1, [r4, #0x4]
+ lsl r0, r5, #0xf
+ sub r0, r1, r0
+ str r0, [r4, #0x4]
+ ldr r0, [r4, #0xc]
+ add r1, r4, #0x0
+ bl FUN_02020044
+ ldr r0, [r4, #0xc]
+ ldr r1, [r4, #0x14]
+ bl FUN_020201E4
+ mov r0, #0x4b
+ ldr r1, [r4, #0x4]
+ lsl r0, r0, #0xe
+ cmp r1, r0
+ bge _020543CC
+ ldr r0, [r4, #0x10]
+ mov r5, #0x2
+ add r0, r0, #0x1
+ str r0, [r4, #0x10]
+ b _020543CC
+_020543A2:
+ mov r1, #0x3
+ ldr r2, [r4, #0x4]
+ lsl r1, r1, #0x12
+ cmp r2, r1
+ ble _020543C4
+ lsl r0, r5, #0xf
+ sub r0, r2, r0
+ str r0, [r4, #0x4]
+ ldr r0, [r4, #0xc]
+ add r1, r4, #0x0
+ bl FUN_02020044
+ ldr r0, [r4, #0xc]
+ ldr r1, [r4, #0x14]
+ bl FUN_020201E4
+ b _020543CC
+_020543C4:
+ add r0, r0, #0x1
+ str r0, [r4, #0x10]
+ b _020543CC
+_020543CA:
+ mov r5, #0x0
+_020543CC:
+ add r0, r5, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+_020543D0: .word 0x00000333
+_020543D4: .word 0xFFFE0000
+
+ thumb_func_start FUN_020543D8
+FUN_020543D8: ; 0x020543D8
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ add r5, r1, #0x0
+ mov r0, #0x4
+ mov r1, #0x18
+ bl FUN_02016998
+ str r0, [r5, #0x0]
+ mov r2, #0x18
+ mov r1, #0x0
+_020543EC:
+ strb r1, [r0, #0x0]
+ add r0, r0, #0x1
+ sub r2, r2, #0x1
+ bne _020543EC
+ ldr r5, [r5, #0x0]
+ mov r0, #0x7
+ lsl r0, r0, #0x10
+ str r0, [r5, #0x0]
+ mov r0, #0x45
+ lsl r0, r0, #0xc
+ str r0, [r5, #0x4]
+ mov r0, #0x1
+ mov r1, #0x0
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ add r2, r5, #0x0
+ add r3, r1, #0x0
+ bl FUN_02054008
+ mov r1, #0x1
+ str r0, [r5, #0xc]
+ bl FUN_02020130
+ mov r0, #0x2
+ lsl r0, r0, #0xc
+ str r0, [r5, #0x14]
+ ldr r0, [r5, #0xc]
+ mov r1, #0x0
+ bl FUN_020200A0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205442C
+FUN_0205442C: ; 0x0205442C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ beq _02054448
+ ldr r0, [r0, #0xc]
+ bl FUN_0201FFC8
+ ldr r1, [r4, #0x0]
+ mov r0, #0x4
+ bl FUN_02016A8C
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+_02054448:
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205444C
+FUN_0205444C: ; 0x0205444C
+ push {r4-r7, lr}
+ sub sp, #0xc
+ ldr r4, [r0, #0x0]
+ mov r5, #0x1
+ ldr r0, [r4, #0x10]
+ cmp r0, #0x3
+ bhi _020544F8
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02054466: ; jump table (using 16-bit offset)
+ .short _0205446E - _02054466 - 2; case 0
+ .short _0205447E - _02054466 - 2; case 1
+ .short _020544DA - _02054466 - 2; case 2
+ .short _020544F6 - _02054466 - 2; case 3
+_0205446E:
+ ldr r0, [r4, #0xc]
+ add r1, r5, #0x0
+ bl FUN_020200A0
+ ldr r0, [r4, #0x10]
+ add r0, r0, #0x1
+ str r0, [r4, #0x10]
+ b _020544F8
+_0205447E:
+ ldr r2, [r4, #0x14]
+ lsl r1, r5, #0xf
+ cmp r2, r1
+ bgt _020544D4
+ add r6, r4, #0x0
+ ldmia r6!, {r0-r1}
+ add r3, sp, #0x0
+ add r2, r3, #0x0
+ stmia r3!, {r0-r1}
+ ldr r0, [r6, #0x0]
+ mov r7, #0x0
+ str r0, [r3, #0x0]
+ ldr r0, [r4, #0x14]
+ ldr r6, [sp, #0x4]
+ asr r0, r0, #0x4
+ lsl r1, r0, #0x2
+ ldr r0, _02054500 ; =0x020FFA38
+ ldrsh r0, [r0, r1]
+ asr r3, r0, #0x1f
+ lsr r1, r0, #0xf
+ lsl r3, r3, #0x11
+ orr r3, r1
+ lsl r1, r0, #0x11
+ lsl r0, r5, #0xb
+ add r0, r1, r0
+ adc r3, r7
+ lsl r1, r3, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r1
+ sub r0, r6, r0
+ str r0, [sp, #0x4]
+ ldr r0, [r4, #0xc]
+ add r1, r2, #0x0
+ bl FUN_02020044
+ ldr r0, [r4, #0x14]
+ lsl r1, r5, #0xc
+ add r0, r0, r1
+ str r0, [r4, #0x14]
+ ldr r0, [r4, #0xc]
+ bl FUN_020201E4
+ b _020544F8
+_020544D4:
+ add r0, r0, #0x1
+ str r0, [r4, #0x10]
+ b _020544F8
+_020544DA:
+ ldr r1, [r4, #0x14]
+ ldr r0, _02054504 ; =0x00000666
+ sub r1, r1, r0
+ str r1, [r4, #0x14]
+ ldr r0, [r4, #0xc]
+ bl FUN_020201E4
+ ldr r0, [r4, #0x14]
+ cmp r0, #0x0
+ bgt _020544F8
+ ldr r0, [r4, #0x10]
+ add r0, r0, #0x1
+ str r0, [r4, #0x10]
+ b _020544F8
+_020544F6:
+ mov r5, #0x0
+_020544F8:
+ add r0, r5, #0x0
+ add sp, #0xc
+ pop {r4-r7, pc}
+ nop
+_02054500: .word 0x020FFA38
+_02054504: .word 0x00000666
+
+ thumb_func_start FUN_02054508
+FUN_02054508: ; 0x02054508
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ add r5, r1, #0x0
+ mov r0, #0x4
+ mov r1, #0x14
+ bl FUN_02016998
+ str r0, [r5, #0x0]
+ mov r2, #0x14
+ mov r1, #0x0
+_0205451C:
+ strb r1, [r0, #0x0]
+ add r0, r0, #0x1
+ sub r2, r2, #0x1
+ bne _0205451C
+ ldr r5, [r5, #0x0]
+ mov r0, #0x7
+ lsl r0, r0, #0x10
+ str r0, [r5, #0x0]
+ mov r0, #0x6
+ lsl r0, r0, #0x10
+ mov r1, #0x1
+ str r0, [r5, #0x4]
+ add r0, r4, #0x0
+ add r2, r5, #0x0
+ add r3, r1, #0x0
+ str r1, [sp, #0x0]
+ bl FUN_02054008
+ mov r1, #0x1
+ str r0, [r5, #0xc]
+ bl FUN_02020130
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205454C
+FUN_0205454C: ; 0x0205454C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ beq _02054568
+ ldr r0, [r0, #0xc]
+ bl FUN_0201FFC8
+ ldr r1, [r4, #0x0]
+ mov r0, #0x4
+ bl FUN_02016A8C
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+_02054568:
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205456C
+FUN_0205456C: ; 0x0205456C
+ push {r4, lr}
+ ldr r4, [r0, #0x0]
+ ldr r0, [r4, #0x10]
+ cmp r0, #0x8
+ bge _0205458A
+ mov r1, #0x1
+ ldr r0, [r4, #0xc]
+ lsl r1, r1, #0xc
+ bl FUN_020201E4
+ ldr r0, [r4, #0x10]
+ add r0, r0, #0x1
+ str r0, [r4, #0x10]
+ mov r0, #0x1
+ pop {r4, pc}
+_0205458A:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02054590
+FUN_02054590: ; 0x02054590
+ push {r4, lr}
+ add r4, r0, #0x0
+ cmp r1, #0x1
+ bne _0205459C
+ bl FUN_0201BD5C
+_0205459C:
+ mov r1, #0x1a
+ add r0, r4, #0x0
+ lsl r1, r1, #0x4
+ mov r2, #0x4
+ bl FUN_02002ED0
+ mov r1, #0x6
+ add r0, r4, #0x0
+ lsl r1, r1, #0x6
+ mov r2, #0x4
+ bl FUN_02002EEC
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020545B8
+FUN_020545B8: ; 0x020545B8
+ push {lr}
+ sub sp, #0x14
+ cmp r2, #0x3
+ bne _020545E0
+ mov r2, #0x13
+ str r2, [sp, #0x0]
+ mov r2, #0x1b
+ str r2, [sp, #0x4]
+ mov r2, #0x4
+ str r2, [sp, #0x8]
+ mov r2, #0xc
+ str r2, [sp, #0xc]
+ ldr r2, _02054604 ; =0x0000032D
+ mov r3, #0x2
+ str r2, [sp, #0x10]
+ mov r2, #0x3
+ bl FUN_02019064
+ add sp, #0x14
+ pop {pc}
+_020545E0:
+ mov r2, #0x13
+ str r2, [sp, #0x0]
+ mov r2, #0x1b
+ str r2, [sp, #0x4]
+ mov r2, #0x4
+ str r2, [sp, #0x8]
+ mov r2, #0xc
+ str r2, [sp, #0xc]
+ mov r2, #0x65
+ lsl r2, r2, #0x2
+ str r2, [sp, #0x10]
+ mov r2, #0x7
+ mov r3, #0x2
+ bl FUN_02019064
+ add sp, #0x14
+ pop {pc}
+ nop
+_02054604: .word 0x0000032D
+
+ thumb_func_start FUN_02054608
+FUN_02054608: ; 0x02054608
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ bl FUN_0201AB08
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02025084
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x4
+ str r0, [sp, #0x4]
+ ldr r0, [r5, #0x0]
+ ldr r2, _02054648 ; =0x000003E2
+ add r1, r6, #0x0
+ mov r3, #0xa
+ bl FUN_0200CD68
+ add r0, r5, #0x0
+ bl FUN_0205464C
+ ldr r2, _02054648 ; =0x000003E2
+ add r0, r5, #0x0
+ mov r1, #0x0
+ mov r3, #0xa
+ bl FUN_0200D0BC
+ add sp, #0x8
+ pop {r4-r6, pc}
+ .balign 4
+_02054648: .word 0x000003E2
+
+ thumb_func_start FUN_0205464C
+FUN_0205464C: ; 0x0205464C
+ ldr r3, _02054654 ; =FUN_02019620
+ mov r1, #0xf
+ bx r3
+ nop
+_02054654: .word FUN_02019620
+
+ thumb_func_start FUN_02054658
+FUN_02054658: ; 0x02054658
+ push {r3-r6, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ add r0, r3, #0x0
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_02002B60
+ mov r0, #0x0
+ bl FUN_02002B7C
+ mov r0, #0x0
+ bl FUN_02002BB8
+ add r0, r6, #0x0
+ bl FUN_02024FF4
+ mov r3, #0x0
+ str r3, [sp, #0x0]
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ mov r1, #0x1
+ add r2, r4, #0x0
+ str r3, [sp, #0x8]
+ bl FUN_0201BD84
+ add sp, #0xc
+ pop {r3-r6, pc}
+
+ thumb_func_start FUN_02054690
+FUN_02054690: ; 0x02054690
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ add r0, sp, #0x10
+ ldrb r0, [r0, #0x10]
+ add r6, r1, #0x0
+ add r7, r2, #0x0
+ add r4, r3, #0x0
+ bl FUN_02002B60
+ ldr r0, [sp, #0x24]
+ bl FUN_02002B7C
+ mov r0, #0x0
+ bl FUN_02002BB8
+ mov r3, #0x0
+ str r3, [sp, #0x0]
+ str r4, [sp, #0x4]
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ add r2, r6, #0x0
+ str r3, [sp, #0x8]
+ bl FUN_0201BD84
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020546C8
+FUN_020546C8: ; 0x020546C8
+ push {r3, lr}
+ bl FUN_0201BD70
+ cmp r0, #0x0
+ bne _020546D6
+ mov r0, #0x1
+ b _020546D8
+_020546D6:
+ mov r0, #0x0
+_020546D8:
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_020546E0
+FUN_020546E0: ; 0x020546E0
+ push {r4-r5, lr}
+ sub sp, #0x14
+ cmp r2, #0x1
+ bhi _020546EE
+ mov r4, #0x9
+ mov r5, #0x14
+ b _020546F2
+_020546EE:
+ mov r4, #0x2
+ mov r5, #0x1b
+_020546F2:
+ cmp r3, #0x3
+ bne _0205471A
+ mov r2, #0x13
+ str r2, [sp, #0x0]
+ lsl r2, r5, #0x18
+ lsr r2, r2, #0x18
+ str r2, [sp, #0x4]
+ mov r2, #0x4
+ str r2, [sp, #0x8]
+ mov r2, #0x9
+ str r2, [sp, #0xc]
+ ldr r2, _02054740 ; =0x0000032D
+ lsl r3, r4, #0x18
+ str r2, [sp, #0x10]
+ mov r2, #0x3
+ lsr r3, r3, #0x18
+ bl FUN_02019064
+ add sp, #0x14
+ pop {r4-r5, pc}
+_0205471A:
+ mov r2, #0x13
+ str r2, [sp, #0x0]
+ lsl r2, r5, #0x18
+ lsr r2, r2, #0x18
+ str r2, [sp, #0x4]
+ mov r2, #0x4
+ str r2, [sp, #0x8]
+ mov r2, #0x9
+ str r2, [sp, #0xc]
+ mov r2, #0x65
+ lsl r2, r2, #0x2
+ lsl r3, r4, #0x18
+ str r2, [sp, #0x10]
+ mov r2, #0x7
+ lsr r3, r3, #0x18
+ bl FUN_02019064
+ add sp, #0x14
+ pop {r4-r5, pc}
+ .balign 4
+_02054740: .word 0x0000032D
+
+ thumb_func_start FUN_02054744
+FUN_02054744: ; 0x02054744
+ push {r3-r6, lr}
+ sub sp, #0xc
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ bl FUN_0201AB08
+ add r1, r0, #0x0
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ str r6, [sp, #0x4]
+ mov r0, #0x4
+ str r0, [sp, #0x8]
+ ldr r0, [r5, #0x0]
+ ldr r2, _02054788 ; =0x00000399
+ mov r3, #0x9
+ bl FUN_0200D300
+ add r0, r5, #0x0
+ mov r1, #0xf
+ bl FUN_02019620
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ ldr r2, _02054788 ; =0x00000399
+ add r0, r5, #0x0
+ mov r1, #0x0
+ mov r3, #0x9
+ bl FUN_0200D6F8
+ add sp, #0xc
+ pop {r3-r6, pc}
+ .balign 4
+_02054788: .word 0x00000399
+
+ thumb_func_start FUN_0205478C
+FUN_0205478C: ; 0x0205478C
+ cmp r0, #0x2
+ bne _02054794
+ mov r0, #0x1
+ bx lr
+_02054794:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02054798
+FUN_02054798: ; 0x02054798
+ cmp r0, #0x3
+ bne _020547A0
+ mov r0, #0x1
+ bx lr
+_020547A0:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_020547A4
+FUN_020547A4: ; 0x020547A4
+ cmp r0, #0x80
+ bne _020547AC
+ mov r0, #0x1
+ bx lr
+_020547AC:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_020547B0
+FUN_020547B0: ; 0x020547B0
+ cmp r0, #0x69
+ bne _020547B8
+ mov r0, #0x1
+ bx lr
+_020547B8:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_020547BC
+FUN_020547BC: ; 0x020547BC
+ cmp r0, #0x62
+ bne _020547C4
+ mov r0, #0x1
+ bx lr
+_020547C4:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_020547C8
+FUN_020547C8: ; 0x020547C8
+ cmp r0, #0x63
+ bne _020547D0
+ mov r0, #0x1
+ bx lr
+_020547D0:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_020547D4
+FUN_020547D4: ; 0x020547D4
+ cmp r0, #0x64
+ bne _020547DC
+ mov r0, #0x1
+ bx lr
+_020547DC:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_020547E0
+FUN_020547E0: ; 0x020547E0
+ cmp r0, #0x65
+ bne _020547E8
+ mov r0, #0x1
+ bx lr
+_020547E8:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_020547EC
+FUN_020547EC: ; 0x020547EC
+ cmp r0, #0x6c
+ bne _020547F4
+ mov r0, #0x1
+ bx lr
+_020547F4:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_020547F8
+FUN_020547F8: ; 0x020547F8
+ cmp r0, #0x6d
+ bne _02054800
+ mov r0, #0x1
+ bx lr
+_02054800:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02054804
+FUN_02054804: ; 0x02054804
+ cmp r0, #0x6e
+ bne _0205480C
+ mov r0, #0x1
+ bx lr
+_0205480C:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02054810
+FUN_02054810: ; 0x02054810
+ cmp r0, #0x6f
+ bne _02054818
+ mov r0, #0x1
+ bx lr
+_02054818:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_0205481C
+FUN_0205481C: ; 0x0205481C
+ ldr r1, _0205482C ; =0x020F5C14
+ ldrb r1, [r1, r0]
+ mov r0, #0x1
+ tst r1, r0
+ bne _02054828
+ mov r0, #0x0
+_02054828:
+ bx lr
+ nop
+_0205482C: .word 0x020F5C14
+
+ thumb_func_start FUN_02054830
+FUN_02054830: ; 0x02054830
+ cmp r0, #0x21
+ bne _02054838
+ mov r0, #0x1
+ bx lr
+_02054838:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_0205483C
+FUN_0205483C: ; 0x0205483C
+ cmp r0, #0x17
+ bne _02054844
+ mov r0, #0x1
+ bx lr
+_02054844:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02054848
+FUN_02054848: ; 0x02054848
+ cmp r0, #0x3a
+ bne _02054850
+ mov r0, #0x1
+ bx lr
+_02054850:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02054854
+FUN_02054854: ; 0x02054854
+ cmp r0, #0x3b
+ bne _0205485C
+ mov r0, #0x1
+ bx lr
+_0205485C:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02054860
+FUN_02054860: ; 0x02054860
+ cmp r0, #0x39
+ bne _02054868
+ mov r0, #0x1
+ bx lr
+_02054868:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_0205486C
+FUN_0205486C: ; 0x0205486C
+ cmp r0, #0x38
+ bne _02054874
+ mov r0, #0x1
+ bx lr
+_02054874:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02054878
+FUN_02054878: ; 0x02054878
+ cmp r0, #0x83
+ bne _02054880
+ mov r0, #0x1
+ bx lr
+_02054880:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02054884
+FUN_02054884: ; 0x02054884
+ cmp r0, #0x85
+ bne _0205488C
+ mov r0, #0x1
+ bx lr
+_0205488C:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02054890
+FUN_02054890: ; 0x02054890
+ cmp r0, #0x56
+ bne _02054898
+ mov r0, #0x1
+ bx lr
+_02054898:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_0205489C
+FUN_0205489C: ; 0x0205489C
+ cmp r0, #0x57
+ bne _020548A4
+ mov r0, #0x1
+ bx lr
+_020548A4:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_020548A8
+FUN_020548A8: ; 0x020548A8
+ cmp r0, #0x58
+ bne _020548B0
+ mov r0, #0x1
+ bx lr
+_020548B0:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_020548B4
+FUN_020548B4: ; 0x020548B4
+ cmp r0, #0x59
+ bne _020548BC
+ mov r0, #0x1
+ bx lr
+_020548BC:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_020548C0
+FUN_020548C0: ; 0x020548C0
+ cmp r0, #0x6a
+ bne _020548C8
+ mov r0, #0x1
+ bx lr
+_020548C8:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_020548CC
+FUN_020548CC: ; 0x020548CC
+ cmp r0, #0x6b
+ bne _020548D4
+ mov r0, #0x1
+ bx lr
+_020548D4:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_020548D8
+FUN_020548D8: ; 0x020548D8
+ cmp r0, #0x5e
+ bne _020548E0
+ mov r0, #0x1
+ bx lr
+_020548E0:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_020548E4
+FUN_020548E4: ; 0x020548E4
+ cmp r0, #0x5f
+ bne _020548EC
+ mov r0, #0x1
+ bx lr
+_020548EC:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_020548F0
+FUN_020548F0: ; 0x020548F0
+ cmp r0, #0x20
+ bne _020548F8
+ mov r0, #0x1
+ bx lr
+_020548F8:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_020548FC
+FUN_020548FC: ; 0x020548FC
+ cmp r0, #0x4b
+ bne _02054904
+ mov r0, #0x1
+ bx lr
+_02054904:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02054908
+FUN_02054908: ; 0x02054908
+ cmp r0, #0x4c
+ bne _02054910
+ mov r0, #0x1
+ bx lr
+_02054910:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02054914
+FUN_02054914: ; 0x02054914
+ cmp r0, #0xe0
+ bne _0205491C
+ mov r0, #0x1
+ bx lr
+_0205491C:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02054920
+FUN_02054920: ; 0x02054920
+ cmp r0, #0xea
+ bne _02054928
+ mov r0, #0x1
+ bx lr
+_02054928:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_0205492C
+FUN_0205492C: ; 0x0205492C
+ cmp r0, #0xe1
+ bne _02054934
+ mov r0, #0x1
+ bx lr
+_02054934:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02054938
+FUN_02054938: ; 0x02054938
+ cmp r0, #0xe2
+ bne _02054940
+ mov r0, #0x1
+ bx lr
+_02054940:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02054944
+FUN_02054944: ; 0x02054944
+ cmp r0, #0xe4
+ bne _0205494C
+ mov r0, #0x1
+ bx lr
+_0205494C:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02054950
+FUN_02054950: ; 0x02054950
+ cmp r0, #0xe5
+ bne _02054958
+ mov r0, #0x1
+ bx lr
+_02054958:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_0205495C
+FUN_0205495C: ; 0x0205495C
+ cmp r0, #0xeb
+ bne _02054964
+ mov r0, #0x1
+ bx lr
+_02054964:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02054968
+FUN_02054968: ; 0x02054968
+ cmp r0, #0xec
+ bne _02054970
+ mov r0, #0x1
+ bx lr
+_02054970:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02054974
+FUN_02054974: ; 0x02054974
+ cmp r0, #0xa4
+ beq _0205497C
+ cmp r0, #0xa5
+ bne _02054980
+_0205497C:
+ mov r0, #0x1
+ bx lr
+_02054980:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02054984
+FUN_02054984: ; 0x02054984
+ cmp r0, #0xa5
+ bne _0205498C
+ mov r0, #0x1
+ bx lr
+_0205498C:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02054990
+FUN_02054990: ; 0x02054990
+ cmp r0, #0xa6
+ beq _02054998
+ cmp r0, #0xa7
+ bne _0205499C
+_02054998:
+ mov r0, #0x1
+ bx lr
+_0205499C:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_020549A0
+FUN_020549A0: ; 0x020549A0
+ cmp r0, #0xa7
+ bne _020549A8
+ mov r0, #0x1
+ bx lr
+_020549A8:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_020549AC
+FUN_020549AC: ; 0x020549AC
+ add r0, #0x5f
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r3, #0x0
+ cmp r0, #0x7
+ bhi _020549C6
+ mov r1, #0x1
+ add r2, r1, #0x0
+ lsl r2, r0
+ mov r0, #0x87
+ tst r0, r2
+ beq _020549C6
+ add r3, r1, #0x0
+_020549C6:
+ add r0, r3, #0x0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020549CC
+FUN_020549CC: ; 0x020549CC
+ cmp r0, #0xa8
+ bne _020549D4
+ mov r0, #0x1
+ bx lr
+_020549D4:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_020549D8
+FUN_020549D8: ; 0x020549D8
+ cmp r0, #0xa1
+ bne _020549E0
+ mov r0, #0x1
+ bx lr
+_020549E0:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_020549E4
+FUN_020549E4: ; 0x020549E4
+ cmp r0, #0xa2
+ bne _020549EC
+ mov r0, #0x1
+ bx lr
+_020549EC:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_020549F0
+FUN_020549F0: ; 0x020549F0
+ cmp r0, #0xa3
+ bne _020549F8
+ mov r0, #0x1
+ bx lr
+_020549F8:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_020549FC
+FUN_020549FC: ; 0x020549FC
+ cmp r0, #0xd9
+ beq _02054A04
+ cmp r0, #0xda
+ bne _02054A08
+_02054A04:
+ mov r0, #0x1
+ bx lr
+_02054A08:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02054A0C
+FUN_02054A0C: ; 0x02054A0C
+ cmp r0, #0xd9
+ bne _02054A14
+ mov r0, #0x1
+ bx lr
+_02054A14:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02054A18
+FUN_02054A18: ; 0x02054A18
+ cmp r0, #0xda
+ bne _02054A20
+ mov r0, #0x1
+ bx lr
+_02054A20:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02054A24
+FUN_02054A24: ; 0x02054A24
+ cmp r0, #0xd7
+ bne _02054A2C
+ mov r0, #0x1
+ bx lr
+_02054A2C:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02054A30
+FUN_02054A30: ; 0x02054A30
+ cmp r0, #0xd8
+ bne _02054A38
+ mov r0, #0x1
+ bx lr
+_02054A38:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02054A3C
+FUN_02054A3C: ; 0x02054A3C
+ cmp r0, #0x8
+ bne _02054A44
+ mov r0, #0x1
+ bx lr
+_02054A44:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02054A48
+FUN_02054A48: ; 0x02054A48
+ cmp r0, #0x13
+ bne _02054A50
+ mov r0, #0x1
+ bx lr
+_02054A50:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02054A54
+FUN_02054A54: ; 0x02054A54
+ cmp r0, #0xdb
+ bne _02054A5C
+ mov r0, #0x1
+ bx lr
+_02054A5C:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02054A60
+FUN_02054A60: ; 0x02054A60
+ add r0, #0xce
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r3, #0x0
+ cmp r0, #0x17
+ bhi _02054A7A
+ mov r1, #0x1
+ add r2, r1, #0x0
+ lsl r2, r0
+ ldr r0, _02054A80 ; =0x0080000D
+ tst r0, r2
+ beq _02054A7A
+ add r3, r1, #0x0
+_02054A7A:
+ add r0, r3, #0x0
+ bx lr
+ nop
+_02054A80: .word 0x0080000D
+
+ thumb_func_start FUN_02054A84
+FUN_02054A84: ; 0x02054A84
+ add r0, #0xcd
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r3, #0x0
+ cmp r0, #0x16
+ bhi _02054A9E
+ mov r1, #0x1
+ add r2, r1, #0x0
+ lsl r2, r0
+ ldr r0, _02054AA4 ; =0x00400019
+ tst r0, r2
+ beq _02054A9E
+ add r3, r1, #0x0
+_02054A9E:
+ add r0, r3, #0x0
+ bx lr
+ nop
+_02054AA4: .word 0x00400019
+
+ thumb_func_start FUN_02054AA8
+FUN_02054AA8: ; 0x02054AA8
+ add r0, #0xcf
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r3, #0x0
+ cmp r0, #0x19
+ bhi _02054AC2
+ mov r1, #0x1
+ add r2, r1, #0x0
+ lsl r2, r0
+ ldr r0, _02054AC8 ; =0x02000051
+ tst r0, r2
+ beq _02054AC2
+ add r3, r1, #0x0
+_02054AC2:
+ add r0, r3, #0x0
+ bx lr
+ nop
+_02054AC8: .word 0x02000051
+
+ thumb_func_start FUN_02054ACC
+FUN_02054ACC: ; 0x02054ACC
+ add r0, #0xd0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r3, #0x0
+ cmp r0, #0x1a
+ bhi _02054AE6
+ mov r1, #0x1
+ add r2, r1, #0x0
+ lsl r2, r0
+ ldr r0, _02054AEC ; =0x04000051
+ tst r0, r2
+ beq _02054AE6
+ add r3, r1, #0x0
+_02054AE6:
+ add r0, r3, #0x0
+ bx lr
+ nop
+_02054AEC: .word 0x04000051
+
+ thumb_func_start FUN_02054AF0
+FUN_02054AF0: ; 0x02054AF0
+ cmp r0, #0x16
+ bne _02054AF8
+ mov r0, #0x1
+ bx lr
+_02054AF8:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02054AFC
+FUN_02054AFC: ; 0x02054AFC
+ ldr r1, _02054B10 ; =0x020F5C14
+ ldrb r1, [r1, r0]
+ mov r0, #0x2
+ tst r0, r1
+ beq _02054B0A
+ mov r0, #0x1
+ bx lr
+_02054B0A:
+ mov r0, #0x0
+ bx lr
+ nop
+_02054B10: .word 0x020F5C14
+
+ thumb_func_start FUN_02054B14
+FUN_02054B14: ; 0x02054B14
+ cmp r0, #0x86
+ bne _02054B1C
+ mov r0, #0x1
+ bx lr
+_02054B1C:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02054B20
+FUN_02054B20: ; 0x02054B20
+ cmp r0, #0x16
+ beq _02054B28
+ cmp r0, #0x10
+ bne _02054B2C
+_02054B28:
+ mov r0, #0x1
+ bx lr
+_02054B2C:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02054B30
+FUN_02054B30: ; 0x02054B30
+ cmp r0, #0x40
+ bne _02054B38
+ mov r0, #0x1
+ bx lr
+_02054B38:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02054B3C
+FUN_02054B3C: ; 0x02054B3C
+ cmp r0, #0x41
+ bne _02054B44
+ mov r0, #0x1
+ bx lr
+_02054B44:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02054B48
+FUN_02054B48: ; 0x02054B48
+ cmp r0, #0x42
+ bne _02054B50
+ mov r0, #0x1
+ bx lr
+_02054B50:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02054B54
+FUN_02054B54: ; 0x02054B54
+ cmp r0, #0x43
+ bne _02054B5C
+ mov r0, #0x1
+ bx lr
+_02054B5C:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02054B60
+FUN_02054B60: ; 0x02054B60
+ cmp r0, #0x67
+ bne _02054B68
+ mov r0, #0x1
+ bx lr
+_02054B68:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02054B6C
+FUN_02054B6C: ; 0x02054B6C
+ cmp r0, #0x70
+ bne _02054B74
+ mov r0, #0x1
+ bx lr
+_02054B74:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02054B78
+FUN_02054B78: ; 0x02054B78
+ add r0, #0x8f
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0xc
+ bhi _02054B86
+ mov r0, #0x1
+ bx lr
+_02054B86:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02054B8C
+FUN_02054B8C: ; 0x02054B8C
+ add r0, #0x8d
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r3, #0x0
+ cmp r0, #0x9
+ bhi _02054BA6
+ mov r1, #0x1
+ add r2, r1, #0x0
+ lsl r2, r0
+ ldr r0, _02054BAC ; =0x00000221
+ tst r0, r2
+ beq _02054BA6
+ add r3, r1, #0x0
+_02054BA6:
+ add r0, r3, #0x0
+ bx lr
+ nop
+_02054BAC: .word 0x00000221
+
+ thumb_func_start FUN_02054BB0
+FUN_02054BB0: ; 0x02054BB0
+ add r0, #0x8c
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r3, #0x0
+ cmp r0, #0x9
+ bhi _02054BCA
+ mov r1, #0x1
+ add r2, r1, #0x0
+ lsl r2, r0
+ ldr r0, _02054BD0 ; =0x00000221
+ tst r0, r2
+ beq _02054BCA
+ add r3, r1, #0x0
+_02054BCA:
+ add r0, r3, #0x0
+ bx lr
+ nop
+_02054BD0: .word 0x00000221
+
+ thumb_func_start FUN_02054BD4
+FUN_02054BD4: ; 0x02054BD4
+ cmp r0, #0x75
+ bne _02054BDC
+ mov r0, #0x1
+ bx lr
+_02054BDC:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02054BE0
+FUN_02054BE0: ; 0x02054BE0
+ add r0, #0x8a
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x3
+ bhi _02054BEE
+ mov r0, #0x1
+ bx lr
+_02054BEE:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02054BF4
+FUN_02054BF4: ; 0x02054BF4
+ add r0, #0x86
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x3
+ bhi _02054C02
+ mov r0, #0x1
+ bx lr
+_02054C02:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02054C08
+FUN_02054C08: ; 0x02054C08
+ cmp r0, #0xff
+ bne _02054C10
+ mov r0, #0x1
+ bx lr
+_02054C10:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02054C14
+FUN_02054C14: ; 0x02054C14
+ push {r4, lr}
+ mov r1, #0xa
+ add r4, r0, #0x0
+ blx _u32_div_f
+ cmp r0, #0x0
+ bne _02054C26
+ mov r0, #0x1
+ pop {r4, pc}
+_02054C26:
+ add r0, r4, #0x0
+ mov r1, #0x64
+ blx _u32_div_f
+ cmp r0, #0x0
+ bne _02054C36
+ mov r0, #0x2
+ pop {r4, pc}
+_02054C36:
+ mov r1, #0xfa
+ add r0, r4, #0x0
+ lsl r1, r1, #0x2
+ blx _u32_div_f
+ cmp r0, #0x0
+ bne _02054C48
+ mov r0, #0x3
+ pop {r4, pc}
+_02054C48:
+ ldr r1, _02054C9C ; =0x00002710
+ add r0, r4, #0x0
+ blx _u32_div_f
+ cmp r0, #0x0
+ bne _02054C58
+ mov r0, #0x4
+ pop {r4, pc}
+_02054C58:
+ ldr r1, _02054CA0 ; =0x000186A0
+ add r0, r4, #0x0
+ blx _u32_div_f
+ cmp r0, #0x0
+ bne _02054C68
+ mov r0, #0x5
+ pop {r4, pc}
+_02054C68:
+ ldr r1, _02054CA4 ; =0x000F4240
+ add r0, r4, #0x0
+ blx _u32_div_f
+ cmp r0, #0x0
+ bne _02054C78
+ mov r0, #0x6
+ pop {r4, pc}
+_02054C78:
+ ldr r1, _02054CA8 ; =0x00989680
+ add r0, r4, #0x0
+ blx _u32_div_f
+ cmp r0, #0x0
+ bne _02054C88
+ mov r0, #0x7
+ pop {r4, pc}
+_02054C88:
+ ldr r1, _02054CAC ; =0x05F5E100
+ add r0, r4, #0x0
+ blx _u32_div_f
+ cmp r0, #0x0
+ bne _02054C98
+ mov r0, #0x8
+ pop {r4, pc}
+_02054C98:
+ mov r0, #0x1
+ pop {r4, pc}
+ .balign 4
+_02054C9C: .word 0x00002710
+_02054CA0: .word 0x000186A0
+_02054CA4: .word 0x000F4240
+_02054CA8: .word 0x00989680
+_02054CAC: .word 0x05F5E100
+
+ thumb_func_start FUN_02054CB0
+FUN_02054CB0: ; 0x02054CB0
+ mov r1, #0x52
+ lsl r1, r1, #0x2
+ cmp r0, r1
+ blo _02054CC2
+ add r1, #0x63
+ cmp r0, r1
+ bhi _02054CC2
+ mov r0, #0x1
+ bx lr
+_02054CC2:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02054CC8
+FUN_02054CC8: ; 0x02054CC8
+ cmp r0, #0xe
+ bhi _02054CD0
+ mov r0, #0x6
+ bx lr
+_02054CD0:
+ cmp r0, #0x18
+ bhi _02054CD8
+ mov r0, #0x7
+ bx lr
+_02054CD8:
+ cmp r0, #0x27
+ bhi _02054CE0
+ mov r0, #0x8
+ bx lr
+_02054CE0:
+ cmp r0, #0x3b
+ bhi _02054CE8
+ mov r0, #0x9
+ bx lr
+_02054CE8:
+ cmp r0, #0x59
+ bhi _02054CF0
+ mov r0, #0xa
+ bx lr
+_02054CF0:
+ cmp r0, #0x72
+ bhi _02054CF8
+ mov r0, #0xb
+ bx lr
+_02054CF8:
+ cmp r0, #0x86
+ bhi _02054D00
+ mov r0, #0xc
+ bx lr
+_02054D00:
+ cmp r0, #0x90
+ bhi _02054D08
+ mov r0, #0xd
+ bx lr
+_02054D08:
+ cmp r0, #0x95
+ bhi _02054D10
+ mov r0, #0xe
+ bx lr
+_02054D10:
+ cmp r1, #0x0
+ beq _02054D18
+ mov r0, #0x4
+ bx lr
+_02054D18:
+ mov r0, #0x5
+ bx lr
+
+ thumb_func_start FUN_02054D1C
+FUN_02054D1C: ; 0x02054D1C
+ cmp r0, #0x27
+ bhi _02054D24
+ mov r0, #0x13
+ bx lr
+_02054D24:
+ cmp r0, #0x3b
+ bhi _02054D2C
+ mov r0, #0x14
+ bx lr
+_02054D2C:
+ cmp r0, #0x59
+ bhi _02054D34
+ mov r0, #0x15
+ bx lr
+_02054D34:
+ cmp r0, #0x77
+ bhi _02054D3C
+ mov r0, #0x16
+ bx lr
+_02054D3C:
+ cmp r0, #0x95
+ bhi _02054D44
+ mov r0, #0x17
+ bx lr
+_02054D44:
+ cmp r0, #0xbd
+ bhi _02054D4C
+ mov r0, #0x18
+ bx lr
+_02054D4C:
+ cmp r0, #0xe5
+ bhi _02054D54
+ mov r0, #0x19
+ bx lr
+_02054D54:
+ ldr r2, _02054DE8 ; =0x0000010D
+ cmp r0, r2
+ bhi _02054D5E
+ mov r0, #0x1a
+ bx lr
+_02054D5E:
+ add r3, r2, #0x0
+ add r3, #0x28
+ cmp r0, r3
+ bhi _02054D6A
+ mov r0, #0x1b
+ bx lr
+_02054D6A:
+ add r3, r2, #0x0
+ add r3, #0x50
+ cmp r0, r3
+ bhi _02054D76
+ mov r0, #0x1c
+ bx lr
+_02054D76:
+ add r3, r2, #0x0
+ add r3, #0x6e
+ cmp r0, r3
+ bhi _02054D82
+ mov r0, #0x1d
+ bx lr
+_02054D82:
+ add r3, r2, #0x0
+ add r3, #0x8c
+ cmp r0, r3
+ bhi _02054D8E
+ mov r0, #0x1e
+ bx lr
+_02054D8E:
+ add r3, r2, #0x0
+ add r3, #0xa0
+ cmp r0, r3
+ bhi _02054DA2
+ cmp r1, #0x0
+ beq _02054D9E
+ mov r0, #0x20
+ bx lr
+_02054D9E:
+ mov r0, #0x1f
+ bx lr
+_02054DA2:
+ add r3, r2, #0x0
+ add r3, #0xb4
+ cmp r0, r3
+ bhi _02054DAE
+ mov r0, #0x21
+ bx lr
+_02054DAE:
+ add r3, r2, #0x0
+ add r3, #0xbe
+ cmp r0, r3
+ bhi _02054DBA
+ mov r0, #0x22
+ bx lr
+_02054DBA:
+ add r3, r2, #0x0
+ add r3, #0xc8
+ cmp r0, r3
+ bhi _02054DC6
+ mov r0, #0x23
+ bx lr
+_02054DC6:
+ add r3, r2, #0x0
+ add r3, #0xce
+ cmp r0, r3
+ bhi _02054DD2
+ mov r0, #0x24
+ bx lr
+_02054DD2:
+ add r2, #0xd4
+ cmp r0, r2
+ bhi _02054DDC
+ mov r0, #0x25
+ bx lr
+_02054DDC:
+ cmp r1, #0x0
+ beq _02054DE4
+ mov r0, #0x27
+ bx lr
+_02054DE4:
+ mov r0, #0x26
+ bx lr
+ .balign 4
+_02054DE8: .word 0x0000010D
+
+ thumb_func_start FUN_02054DEC
+FUN_02054DEC: ; 0x02054DEC
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ bl FUN_0206BB1C
+ bl FUN_0206B9AC
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ ldr r4, _02054E2C ; =0x00000000
+ beq _02054E28
+ mov r7, #0x4c
+_02054E02:
+ add r0, r6, #0x0
+ bl FUN_0206BB1C
+ add r1, r4, #0x0
+ bl FUN_0206B9B0
+ add r1, r7, #0x0
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ bne _02054E1E
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+_02054E1E:
+ add r0, r4, #0x1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, r5
+ blo _02054E02
+_02054E28:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+_02054E2C: .word 0x00000000
+
+ thumb_func_start FUN_02054E30
+FUN_02054E30: ; 0x02054E30
+ push {r3-r7, lr}
+ sub sp, #0x10
+ mov r7, #0x0
+ bl FUN_0206BB1C
+ str r0, [sp, #0x0]
+ bl FUN_0206B9AC
+ add r4, r0, #0x0
+ add r6, r7, #0x0
+ cmp r4, #0x0
+ ble _02054E64
+ add r5, sp, #0x4
+_02054E4A:
+ ldr r0, [sp, #0x0]
+ add r1, r6, #0x0
+ bl FUN_0206B9B0
+ mov r1, #0x5
+ mov r2, #0x0
+ bl FUN_020671BC
+ strh r0, [r5, #0x0]
+ add r6, r6, #0x1
+ add r5, r5, #0x2
+ cmp r6, r4
+ blt _02054E4A
+_02054E64:
+ ldr r2, _02054E9C ; =0x020F5D14
+ mov r6, #0x0
+_02054E68:
+ mov r1, #0x0
+ cmp r4, #0x0
+ ble _02054E84
+ ldrh r5, [r2, #0x0]
+ add r3, sp, #0x4
+_02054E72:
+ ldrh r0, [r3, #0x0]
+ cmp r0, r5
+ bne _02054E7C
+ add r7, r7, #0x1
+ b _02054E84
+_02054E7C:
+ add r1, r1, #0x1
+ add r3, r3, #0x2
+ cmp r1, r4
+ blt _02054E72
+_02054E84:
+ add r6, r6, #0x1
+ add r2, r2, #0x2
+ cmp r6, #0x3
+ blt _02054E68
+ cmp r7, #0x3
+ bne _02054E96
+ add sp, #0x10
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02054E96:
+ mov r0, #0x0
+ add sp, #0x10
+ pop {r3-r7, pc}
+ .balign 4
+_02054E9C: .word 0x020F5D14
+
+ thumb_func_start FUN_02054EA0
+FUN_02054EA0: ; 0x02054EA0
+ push {r4-r5, lr}
+ sub sp, #0xc
+ add r4, r0, #0x0
+ bl FUN_02046528
+ add r0, r4, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ mov r0, #0x2
+ lsl r0, r0, #0xe
+ str r0, [sp, #0x0]
+ str r0, [sp, #0x8]
+ ldrh r0, [r4, #0xe]
+ ldr r5, [r4, #0x4]
+ bl FUN_0201B93C
+ asr r1, r0, #0x1f
+ asr r3, r5, #0x1f
+ add r2, r5, #0x0
+ blx _ll_mul
+ mov r2, #0x2
+ mov r3, #0x0
+ lsl r2, r2, #0xa
+ add r2, r0, r2
+ adc r1, r3
+ lsl r0, r1, #0x14
+ lsr r1, r2, #0xc
+ orr r1, r0
+ str r1, [sp, #0x0]
+ ldrh r0, [r4, #0xe]
+ ldr r5, [r4, #0x8]
+ bl FUN_0201B93C
+ asr r1, r0, #0x1f
+ asr r3, r5, #0x1f
+ add r2, r5, #0x0
+ blx _ll_mul
+ mov r2, #0x2
+ mov r3, #0x0
+ lsl r2, r2, #0xa
+ add r2, r0, r2
+ adc r1, r3
+ lsl r0, r1, #0x14
+ lsr r1, r2, #0xc
+ orr r1, r0
+ str r1, [sp, #0x8]
+ str r3, [sp, #0x4]
+ ldr r0, [r4, #0x0]
+ add r1, sp, #0x0
+ bl FUN_02058BB4
+ ldrh r1, [r4, #0xe]
+ ldrh r0, [r4, #0x10]
+ add r0, r1, r0
+ strh r0, [r4, #0xe]
+ mov r0, #0x5a
+ ldrh r1, [r4, #0xe]
+ lsl r0, r0, #0x2
+ cmp r1, r0
+ blo _02054F28
+ mov r0, #0x0
+ strh r0, [r4, #0xe]
+ ldrh r0, [r4, #0xc]
+ sub r0, r0, #0x1
+ strh r0, [r4, #0xc]
+_02054F28:
+ ldrh r0, [r4, #0xc]
+ cmp r0, #0x0
+ bne _02054F4A
+ mov r0, #0x0
+ str r0, [sp, #0x8]
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x0]
+ add r1, sp, #0x0
+ bl FUN_02058BB4
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0xc
+ mov r0, #0x1
+ pop {r4-r5, pc}
+_02054F4A:
+ mov r0, #0x0
+ add sp, #0xc
+ pop {r4-r5, pc}
+
+ thumb_func_start FUN_02054F50
+FUN_02054F50: ; 0x02054F50
+ push {r3-r7, lr}
+ add r5, r1, #0x0
+ add r6, r2, #0x0
+ add r7, r3, #0x0
+ bl FUN_02046528
+ str r0, [sp, #0x0]
+ mov r0, #0xb
+ mov r1, #0x14
+ bl FUN_020169D8
+ mov r1, #0x0
+ mov r2, #0x14
+ add r4, r0, #0x0
+ blx MI_CpuFill8
+ add r0, sp, #0x8
+ ldrh r0, [r0, #0x10]
+ cmp r0, #0x0
+ beq _02054F8A
+ lsl r0, r0, #0xc
+ blx FUN_020EB534
+ add r1, r0, #0x0
+ mov r0, #0x3f
+ lsl r0, r0, #0x18
+ blx FUN_020EA980
+ b _02054F98
+_02054F8A:
+ lsl r0, r0, #0xc
+ blx FUN_020EB534
+ mov r1, #0x3f
+ lsl r1, r1, #0x18
+ blx FUN_020EB7B0
+_02054F98:
+ blx FUN_020EB4C0
+ str r0, [r4, #0x4]
+ add r0, sp, #0x8
+ ldrh r0, [r0, #0x14]
+ cmp r0, #0x0
+ beq _02054FB8
+ lsl r0, r0, #0xc
+ blx FUN_020EB534
+ add r1, r0, #0x0
+ mov r0, #0x3f
+ lsl r0, r0, #0x18
+ blx FUN_020EA980
+ b _02054FC6
+_02054FB8:
+ lsl r0, r0, #0xc
+ blx FUN_020EB534
+ mov r1, #0x3f
+ lsl r1, r1, #0x18
+ blx FUN_020EB7B0
+_02054FC6:
+ blx FUN_020EB4C0
+ str r0, [r4, #0x8]
+ strh r6, [r4, #0xc]
+ strh r7, [r4, #0x10]
+ ldr r0, [sp, #0x0]
+ str r5, [r4, #0x0]
+ ldr r0, [r0, #0x10]
+ ldr r1, _02054FE0 ; =FUN_02054EA0
+ add r2, r4, #0x0
+ bl FUN_0204640C
+ pop {r3-r7, pc}
+ .balign 4
+_02054FE0: .word FUN_02054EA0
+
+ thumb_func_start FUN_02054FE4
+FUN_02054FE4: ; 0x02054FE4
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02046528
+ add r0, r4, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldrb r1, [r4, #0x9]
+ ldr r0, [r4, #0x0]
+ bl FUN_0205889C
+ ldrb r1, [r4, #0x8]
+ add r0, r1, #0x1
+ strb r0, [r4, #0x8]
+ ldrh r0, [r4, #0x6]
+ cmp r1, r0
+ blt _02055028
+ ldrb r1, [r4, #0x9]
+ mov r0, #0x1
+ eor r0, r1
+ strb r0, [r4, #0x9]
+ mov r0, #0x0
+ strb r0, [r4, #0x8]
+ ldrh r1, [r4, #0x4]
+ sub r0, r1, #0x1
+ strh r0, [r4, #0x4]
+ cmp r1, #0x0
+ bne _02055028
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0x1
+ pop {r4, pc}
+_02055028:
+ mov r0, #0x0
+ pop {r4, pc}
+
+ thumb_func_start FUN_0205502C
+FUN_0205502C: ; 0x0205502C
+ push {r3-r7, lr}
+ add r5, r1, #0x0
+ add r6, r2, #0x0
+ add r7, r3, #0x0
+ bl FUN_02046528
+ str r0, [sp, #0x0]
+ mov r0, #0xb
+ mov r1, #0xc
+ bl FUN_020169D8
+ add r4, r0, #0x0
+ mov r1, #0x0
+ mov r2, #0xc
+ blx MI_CpuFill8
+ strh r6, [r4, #0x4]
+ strh r7, [r4, #0x6]
+ str r5, [r4, #0x0]
+ mov r0, #0x0
+ strb r0, [r4, #0x9]
+ ldr r0, [sp, #0x0]
+ ldr r1, _02055064 ; =FUN_02054FE4
+ ldr r0, [r0, #0x10]
+ add r2, r4, #0x0
+ bl FUN_0204640C
+ pop {r3-r7, pc}
+ .balign 4
+_02055064: .word FUN_02054FE4
+
+ thumb_func_start FUN_02055068
+FUN_02055068: ; 0x02055068
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r7, r0, #0x0
+ add r5, r1, #0x0
+ add r4, r2, #0x0
+ str r3, [sp, #0x8]
+ bl FUN_0205517C
+ ldr r1, [sp, #0x20]
+ ldr r2, [sp, #0x24]
+ ldr r3, [sp, #0x28]
+ add r6, r0, #0x0
+ bl FUN_0205519C
+ ldr r0, [sp, #0x20]
+ ldr r1, [sp, #0x24]
+ bl FUN_020555A0
+ add r2, r0, #0x0
+ str r5, [sp, #0x0]
+ ldr r3, [sp, #0x8]
+ add r0, r6, #0x0
+ add r1, r7, #0x0
+ str r4, [sp, #0x4]
+ bl FUN_02055208
+ add r0, r6, #0x0
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020550A4
+FUN_020550A4: ; 0x020550A4
+ push {r3-r7, lr}
+ add r4, r1, #0x0
+ add r7, r0, #0x0
+ add r6, r2, #0x0
+ bl FUN_0205517C
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_020554C8
+ str r0, [sp, #0x0]
+ ldr r1, [sp, #0x0]
+ add r0, r5, #0x0
+ add r2, r6, #0x0
+ add r3, r4, #0x0
+ bl FUN_0205519C
+ add r0, r7, #0x0
+ bl FUN_020552E4
+ add r4, r0, #0x0
+ ldr r0, [sp, #0x0]
+ add r1, r6, #0x0
+ bl FUN_020555A0
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02058454
+ mov r1, #0x9
+ add r0, r4, #0x0
+ lsl r1, r1, #0xa
+ bl FUN_02058410
+ mov r1, #0x6
+ add r0, r4, #0x0
+ lsl r1, r1, #0x6
+ bl FUN_02058418
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_02058AC8
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0205539C
+ add r0, r5, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02055108
+FUN_02055108: ; 0x02055108
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ bl FUN_020553A0
+ add r4, r0, #0x0
+ bne _02055118
+ bl ErrorHandling
+_02055118:
+ add r0, r4, #0x0
+ bl FUN_02058578
+ add r0, r5, #0x0
+ bl FUN_021EDBC8
+ add r0, r5, #0x0
+ bl FUN_020553C4
+ cmp r0, #0x2
+ bne _0205515C
+ add r0, r5, #0x0
+ bl FUN_02055320
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0205532C
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_020552F8
+ add r3, r0, #0x0
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ add r2, r7, #0x0
+ bl FUN_0224ABAC
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02055450
+_0205515C:
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02055160
+FUN_02055160: ; 0x02055160
+ ldr r3, _02055164 ; =FUN_02016A18
+ bx r3
+ .balign 4
+_02055164: .word FUN_02016A18
+
+ thumb_func_start FUN_02055168
+FUN_02055168: ; 0x02055168
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_020553A0
+ bl FUN_02057654
+ add r0, r4, #0x0
+ bl FUN_02055160
+ pop {r4, pc}
+
+ thumb_func_start FUN_0205517C
+FUN_0205517C: ; 0x0205517C
+ push {r4, lr}
+ mov r0, #0xb
+ mov r1, #0x3c
+ bl FUN_02016998
+ add r4, r0, #0x0
+ bne _0205518E
+ bl ErrorHandling
+_0205518E:
+ add r0, r4, #0x0
+ mov r1, #0x0
+ mov r2, #0x3c
+ blx FUN_020DF4A4
+ add r0, r4, #0x0
+ pop {r4, pc}
+
+ thumb_func_start FUN_0205519C
+FUN_0205519C: ; 0x0205519C
+ push {r4-r6, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r1, r3, #0x0
+ add r6, r2, #0x0
+ bl FUN_02055458
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_0205536C
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_02055374
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_020553A8
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_020553E4
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_020553DC
+ add r0, r5, #0x0
+ bl FUN_02055410
+ mov r1, #0x0
+ add r0, r5, #0x0
+ mvn r1, r1
+ bl FUN_0205542C
+ mov r1, #0x0
+ add r0, r5, #0x0
+ mvn r1, r1
+ bl FUN_02055434
+ add r0, r5, #0x0
+ mov r1, #0xff
+ bl FUN_02055460
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_020556C8
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_0205574C
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02055208
+FUN_02055208: ; 0x02055208
+ push {r4-r5, lr}
+ sub sp, #0xc
+ add r4, r0, #0x0
+ str r2, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ add r0, r1, #0x0
+ ldr r1, [sp, #0x18]
+ ldr r2, [sp, #0x1c]
+ bl FUN_0205753C
+ add r5, r0, #0x0
+ bne _02055228
+ bl ErrorHandling
+_02055228:
+ add r0, r5, #0x0
+ mov r1, #0xff
+ bl FUN_02058444
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_02058484
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_0205848C
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_02058494
+ mov r1, #0x0
+ add r0, r5, #0x0
+ add r2, r1, #0x0
+ bl FUN_020584EC
+ add r0, r5, #0x0
+ mov r1, #0x0
+ mov r2, #0x1
+ bl FUN_020584EC
+ add r0, r5, #0x0
+ mov r1, #0x0
+ mov r2, #0x2
+ bl FUN_020584EC
+ mov r1, #0x0
+ add r0, r5, #0x0
+ mvn r1, r1
+ bl FUN_02058534
+ mov r1, #0x0
+ add r0, r5, #0x0
+ mvn r1, r1
+ bl FUN_0205853C
+ mov r1, #0x9
+ add r0, r5, #0x0
+ lsl r1, r1, #0xa
+ bl FUN_02058410
+ mov r1, #0x6
+ add r0, r5, #0x0
+ lsl r1, r1, #0x6
+ bl FUN_02058418
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_02058AC8
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ bl FUN_0205539C
+ add sp, #0xc
+ pop {r4-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020552A4
+FUN_020552A4: ; 0x020552A4
+ push {r3-r7, lr}
+ sub sp, #0x8
+ mov r1, #0x0
+ str r1, [sp, #0x4]
+ str r1, [sp, #0x0]
+ add r1, sp, #0x0
+ add r2, sp, #0x4
+ mov r3, #0x1
+ add r5, r0, #0x0
+ bl FUN_020580F4
+ cmp r0, #0x0
+ beq _020552DE
+ add r4, sp, #0x0
+ add r6, sp, #0x4
+ mov r7, #0x1
+_020552C4:
+ ldr r0, [sp, #0x0]
+ bl FUN_02058480
+ cmp r0, #0x1
+ beq _020552DE
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ add r3, r7, #0x0
+ bl FUN_020580F4
+ cmp r0, #0x0
+ bne _020552C4
+_020552DE:
+ ldr r0, [sp, #0x0]
+ add sp, #0x8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_020552E4
+FUN_020552E4: ; 0x020552E4
+ push {r4, lr}
+ bl FUN_020552A4
+ add r4, r0, #0x0
+ bne _020552F2
+ bl ErrorHandling
+_020552F2:
+ add r0, r4, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020552F8
+FUN_020552F8: ; 0x020552F8
+ push {r3, lr}
+ bl FUN_020553A0
+ bl FUN_020584C4
+ pop {r3, pc}
+
+ thumb_func_start FUN_02055304
+FUN_02055304: ; 0x02055304
+ push {r4, lr}
+ add r4, r1, #0x0
+ bl FUN_020553A0
+ add r1, r4, #0x0
+ bl FUN_020584AC
+ pop {r4, pc}
+
+ thumb_func_start FUN_02055314
+FUN_02055314: ; 0x02055314
+ push {r3, lr}
+ bl FUN_020553A0
+ bl FUN_020584D4
+ pop {r3, pc}
+
+ thumb_func_start FUN_02055320
+FUN_02055320: ; 0x02055320
+ push {r3, lr}
+ bl FUN_020553A0
+ bl FUN_02058B2C
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205532C
+FUN_0205532C: ; 0x0205532C
+ push {r3, lr}
+ bl FUN_020553A0
+ bl FUN_02058B4C
+ pop {r3, pc}
+
+ thumb_func_start FUN_02055338
+FUN_02055338: ; 0x02055338
+ push {r3, lr}
+ bl FUN_020553A0
+ bl FUN_02058B14
+ pop {r3, pc}
+
+ thumb_func_start FUN_02055344
+FUN_02055344: ; 0x02055344
+ push {r3, lr}
+ bl FUN_020553A0
+ bl FUN_02058B24
+ pop {r3, pc}
+
+ thumb_func_start FUN_02055350
+FUN_02055350: ; 0x02055350
+ push {r4, lr}
+ add r4, r1, #0x0
+ bl FUN_020553A0
+ add r1, r4, #0x0
+ bl FUN_02058B5C
+ pop {r4, pc}
+
+ thumb_func_start FUN_02055360
+FUN_02055360: ; 0x02055360
+ push {r3, lr}
+ bl FUN_020553A4
+ bl FUN_02058B7C
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205536C
+FUN_0205536C: ; 0x0205536C
+ str r1, [r0, #0x10]
+ bx lr
+
+ thumb_func_start FUN_02055370
+FUN_02055370: ; 0x02055370
+ ldr r0, [r0, #0x10]
+ bx lr
+
+ thumb_func_start FUN_02055374
+FUN_02055374: ; 0x02055374
+ str r1, [r0, #0x14]
+ bx lr
+
+ thumb_func_start FUN_02055378
+FUN_02055378: ; 0x02055378
+ ldr r0, [r0, #0x14]
+ bx lr
+
+ thumb_func_start FUN_0205537C
+FUN_0205537C: ; 0x0205537C
+ push {r4, lr}
+ add r4, r1, #0x0
+ bl FUN_020553A0
+ cmp r4, #0x1
+ bne _02055392
+ mov r1, #0x2
+ lsl r1, r1, #0x8
+ bl FUN_02058418
+ pop {r4, pc}
+_02055392:
+ mov r1, #0x2
+ lsl r1, r1, #0x8
+ bl FUN_02058410
+ pop {r4, pc}
+
+ thumb_func_start FUN_0205539C
+FUN_0205539C: ; 0x0205539C
+ str r1, [r0, #0x2c]
+ bx lr
+
+ thumb_func_start FUN_020553A0
+FUN_020553A0: ; 0x020553A0
+ ldr r0, [r0, #0x2c]
+ bx lr
+
+ thumb_func_start FUN_020553A4
+FUN_020553A4: ; 0x020553A4
+ ldr r0, [r0, #0x2c]
+ bx lr
+
+ thumb_func_start FUN_020553A8
+FUN_020553A8: ; 0x020553A8
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ cmp r4, #0x3
+ blt _020553B6
+ bl ErrorHandling
+_020553B6:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ str r4, [r5, #0x18]
+ bl FUN_020554DC
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020553C4
+FUN_020553C4: ; 0x020553C4
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _020553CE
+ bl ErrorHandling
+_020553CE:
+ ldr r0, [r4, #0x18]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020553D4
+FUN_020553D4: ; 0x020553D4
+ ldr r2, [r0, #0x4]
+ orr r1, r2
+ str r1, [r0, #0x4]
+ bx lr
+
+ thumb_func_start FUN_020553DC
+FUN_020553DC: ; 0x020553DC
+ str r1, [r0, #0x4]
+ bx lr
+
+ thumb_func_start FUN_020553E0
+FUN_020553E0: ; 0x020553E0
+ ldr r0, [r0, #0x4]
+ bx lr
+
+ thumb_func_start FUN_020553E4
+FUN_020553E4: ; 0x020553E4
+ str r1, [r0, #0x1c]
+ bx lr
+
+ thumb_func_start FUN_020553E8
+FUN_020553E8: ; 0x020553E8
+ ldr r0, [r0, #0x1c]
+ bx lr
+
+ thumb_func_start FUN_020553EC
+FUN_020553EC: ; 0x020553EC
+ ldr r2, [r0, #0x0]
+ orr r1, r2
+ str r1, [r0, #0x0]
+ bx lr
+
+ thumb_func_start FUN_020553F4
+FUN_020553F4: ; 0x020553F4
+ ldr r2, [r0, #0x0]
+ mvn r1, r1
+ and r1, r2
+ str r1, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02055400
+FUN_02055400: ; 0x02055400
+ ldr r0, [r0, #0x0]
+ and r0, r1
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02055408
+FUN_02055408: ; 0x02055408
+ ldr r0, [r0, #0x20]
+ bx lr
+
+ thumb_func_start FUN_0205540C
+FUN_0205540C: ; 0x0205540C
+ str r1, [r0, #0x20]
+ bx lr
+
+ thumb_func_start FUN_02055410
+FUN_02055410: ; 0x02055410
+ ldr r3, _02055418 ; =FUN_020556F4
+ mov r1, #0x0
+ str r1, [r0, #0x20]
+ bx r3
+ .balign 4
+_02055418: .word FUN_020556F4
+
+ thumb_func_start FUN_0205541C
+FUN_0205541C: ; 0x0205541C
+ ldr r3, [r0, #0x20]
+ add r1, r3, r1
+ str r1, [r0, #0x20]
+ cmp r1, r2
+ ble _02055428
+ str r2, [r0, #0x20]
+_02055428:
+ ldr r0, [r0, #0x20]
+ bx lr
+
+ thumb_func_start FUN_0205542C
+FUN_0205542C: ; 0x0205542C
+ str r1, [r0, #0x24]
+ bx lr
+
+ thumb_func_start FUN_02055430
+FUN_02055430: ; 0x02055430
+ ldr r0, [r0, #0x24]
+ bx lr
+
+ thumb_func_start FUN_02055434
+FUN_02055434: ; 0x02055434
+ str r1, [r0, #0x28]
+ bx lr
+
+ thumb_func_start FUN_02055438
+FUN_02055438: ; 0x02055438
+ ldr r0, [r0, #0x28]
+ bx lr
+
+ thumb_func_start FUN_0205543C
+FUN_0205543C: ; 0x0205543C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r2, #0x0
+ bl FUN_0205542C
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02055434
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02055450
+FUN_02055450: ; 0x02055450
+ str r1, [r0, #0x30]
+ bx lr
+
+ thumb_func_start FUN_02055454
+FUN_02055454: ; 0x02055454
+ ldr r0, [r0, #0x30]
+ bx lr
+
+ thumb_func_start FUN_02055458
+FUN_02055458: ; 0x02055458
+ str r1, [r0, #0x34]
+ bx lr
+
+ thumb_func_start FUN_0205545C
+FUN_0205545C: ; 0x0205545C
+ ldr r0, [r0, #0x34]
+ bx lr
+
+ thumb_func_start FUN_02055460
+FUN_02055460: ; 0x02055460
+ str r1, [r0, #0x8]
+ bx lr
+
+ thumb_func_start FUN_02055464
+FUN_02055464: ; 0x02055464
+ ldr r0, [r0, #0x8]
+ bx lr
+
+ thumb_func_start FUN_02055468
+FUN_02055468: ; 0x02055468
+ mov r1, #0x0
+ strh r1, [r0, #0x0]
+ strh r1, [r0, #0x2]
+ str r1, [r0, #0x4]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02055474
+FUN_02055474: ; 0x02055474
+ cmp r0, #0x0
+ beq _02055482
+ ldrh r0, [r0, #0x2]
+ cmp r0, #0x1
+ bne _02055482
+ mov r0, #0x1
+ bx lr
+_02055482:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02055488
+FUN_02055488: ; 0x02055488
+ cmp r1, #0x1
+ bne _02055492
+ mov r1, #0x1
+ strh r1, [r0, #0x2]
+ bx lr
+_02055492:
+ mov r1, #0x0
+ strh r1, [r0, #0x2]
+ bx lr
+
+ thumb_func_start FUN_02055498
+FUN_02055498: ; 0x02055498
+ cmp r0, #0x0
+ bne _020554A0
+ mov r0, #0x0
+ bx lr
+_020554A0:
+ ldrh r0, [r0, #0x0]
+ bx lr
+
+ thumb_func_start FUN_020554A4
+FUN_020554A4: ; 0x020554A4
+ cmp r0, #0x0
+ beq _020554AA
+ strh r1, [r0, #0x0]
+_020554AA:
+ bx lr
+
+ thumb_func_start FUN_020554AC
+FUN_020554AC: ; 0x020554AC
+ push {r4, lr}
+ add r4, r1, #0x0
+ bl FUN_0205545C
+ add r1, r4, #0x0
+ bl FUN_020554A4
+ pop {r4, pc}
+
+ thumb_func_start FUN_020554BC
+FUN_020554BC: ; 0x020554BC
+ push {r3, lr}
+ bl FUN_0205545C
+ bl FUN_02055498
+ pop {r3, pc}
+
+ thumb_func_start FUN_020554C8
+FUN_020554C8: ; 0x020554C8
+ cmp r0, #0x0
+ beq _020554D0
+ ldr r0, [r0, #0x4]
+ bx lr
+_020554D0:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_020554D4
+FUN_020554D4: ; 0x020554D4
+ cmp r0, #0x0
+ beq _020554DA
+ str r1, [r0, #0x4]
+_020554DA:
+ bx lr
+
+ thumb_func_start FUN_020554DC
+FUN_020554DC: ; 0x020554DC
+ push {r4, lr}
+ add r4, r1, #0x0
+ bl FUN_0205545C
+ add r1, r4, #0x0
+ bl FUN_020554D4
+ pop {r4, pc}
+
+ thumb_func_start FUN_020554EC
+FUN_020554EC: ; 0x020554EC
+ push {r4-r6, lr}
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ add r5, r0, #0x0
+ bl FUN_020553A0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_02058DBC
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_0205536C
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_02055374
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02055514
+FUN_02055514: ; 0x02055514
+ push {r3-r7, lr}
+ add r6, r1, #0x0
+ add r7, r2, #0x0
+ add r5, r0, #0x0
+ add r4, r3, #0x0
+ bl FUN_020553A0
+ add r1, r6, #0x0
+ mov r2, #0x0
+ add r3, r7, #0x0
+ str r4, [sp, #0x0]
+ bl FUN_02058E28
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_0205536C
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_02055374
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02055540
+FUN_02055540: ; 0x02055540
+ push {r4-r5, lr}
+ sub sp, #0xc
+ add r5, r1, #0x0
+ bl FUN_020553A0
+ add r4, r0, #0x0
+ add r1, sp, #0x0
+ bl FUN_02058B5C
+ add r0, r4, #0x0
+ add r1, sp, #0x0
+ str r5, [sp, #0x4]
+ bl FUN_02058B6C
+ add sp, #0xc
+ pop {r4-r5, pc}
+
+ thumb_func_start FUN_02055560
+FUN_02055560: ; 0x02055560
+ push {r4, lr}
+ add r4, r1, #0x0
+ bl FUN_020553A0
+ cmp r4, #0x1
+ bne _02055574
+ mov r1, #0x0
+ bl FUN_02058960
+ pop {r4, pc}
+_02055574:
+ mov r1, #0x1
+ bl FUN_02058960
+ pop {r4, pc}
+
+ thumb_func_start FUN_0205557C
+FUN_0205557C: ; 0x0205557C
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ bl FUN_020553A0
+ add r4, r0, #0x0
+ cmp r5, #0x1
+ bne _02055598
+ mov r1, #0x0
+ bl FUN_02058960
+ add r0, r4, #0x0
+ bl FUN_02059D1C
+ pop {r3-r5, pc}
+_02055598:
+ mov r1, #0x1
+ bl FUN_02058960
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_020555A0
+FUN_020555A0: ; 0x020555A0
+ push {r3, lr}
+ cmp r1, #0x0
+ bne _020555F2
+ cmp r0, #0x9
+ bhi _0205563E
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_020555B6: ; jump table (using 16-bit offset)
+ .short _020555CA - _020555B6 - 2; case 0
+ .short _020555CE - _020555B6 - 2; case 1
+ .short _020555D2 - _020555B6 - 2; case 2
+ .short _020555D6 - _020555B6 - 2; case 3
+ .short _020555DA - _020555B6 - 2; case 4
+ .short _020555DE - _020555B6 - 2; case 5
+ .short _020555E2 - _020555B6 - 2; case 6
+ .short _020555E6 - _020555B6 - 2; case 7
+ .short _020555EA - _020555B6 - 2; case 8
+ .short _020555EE - _020555B6 - 2; case 9
+_020555CA:
+ mov r0, #0x0
+ pop {r3, pc}
+_020555CE:
+ mov r0, #0x15
+ pop {r3, pc}
+_020555D2:
+ mov r0, #0xb2
+ pop {r3, pc}
+_020555D6:
+ mov r0, #0xb0
+ pop {r3, pc}
+_020555DA:
+ mov r0, #0xb4
+ pop {r3, pc}
+_020555DE:
+ mov r0, #0xba
+ pop {r3, pc}
+_020555E2:
+ mov r0, #0xbc
+ pop {r3, pc}
+_020555E6:
+ mov r0, #0xc4
+ pop {r3, pc}
+_020555EA:
+ mov r0, #0xc6
+ pop {r3, pc}
+_020555EE:
+ mov r0, #0xc8
+ pop {r3, pc}
+_020555F2:
+ cmp r0, #0x9
+ bhi _0205563E
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02055602: ; jump table (using 16-bit offset)
+ .short _02055616 - _02055602 - 2; case 0
+ .short _0205561A - _02055602 - 2; case 1
+ .short _0205561E - _02055602 - 2; case 2
+ .short _02055622 - _02055602 - 2; case 3
+ .short _02055626 - _02055602 - 2; case 4
+ .short _0205562A - _02055602 - 2; case 5
+ .short _0205562E - _02055602 - 2; case 6
+ .short _02055632 - _02055602 - 2; case 7
+ .short _02055636 - _02055602 - 2; case 8
+ .short _0205563A - _02055602 - 2; case 9
+_02055616:
+ mov r0, #0x61
+ pop {r3, pc}
+_0205561A:
+ mov r0, #0x62
+ pop {r3, pc}
+_0205561E:
+ mov r0, #0xb3
+ pop {r3, pc}
+_02055622:
+ mov r0, #0xb1
+ pop {r3, pc}
+_02055626:
+ mov r0, #0xb5
+ pop {r3, pc}
+_0205562A:
+ mov r0, #0xbb
+ pop {r3, pc}
+_0205562E:
+ mov r0, #0xbd
+ pop {r3, pc}
+_02055632:
+ mov r0, #0xc5
+ pop {r3, pc}
+_02055636:
+ mov r0, #0xc7
+ pop {r3, pc}
+_0205563A:
+ mov r0, #0xc9
+ pop {r3, pc}
+_0205563E:
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02055648
+FUN_02055648: ; 0x02055648
+ push {r3, lr}
+ cmp r0, #0x9
+ bhi _02055690
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0205565A: ; jump table (using 16-bit offset)
+ .short _0205566E - _0205565A - 2; case 0
+ .short _02055672 - _0205565A - 2; case 1
+ .short _02055676 - _0205565A - 2; case 2
+ .short _02055690 - _0205565A - 2; case 3
+ .short _0205567A - _0205565A - 2; case 4
+ .short _02055690 - _0205565A - 2; case 5
+ .short _0205567E - _0205565A - 2; case 6
+ .short _02055682 - _0205565A - 2; case 7
+ .short _02055686 - _0205565A - 2; case 8
+ .short _0205568A - _0205565A - 2; case 9
+_0205566E:
+ mov r0, #0x1
+ pop {r3, pc}
+_02055672:
+ mov r0, #0x2
+ pop {r3, pc}
+_02055676:
+ mov r0, #0x4
+ pop {r3, pc}
+_0205567A:
+ mov r0, #0x10
+ pop {r3, pc}
+_0205567E:
+ mov r0, #0x20
+ pop {r3, pc}
+_02055682:
+ mov r0, #0x40
+ pop {r3, pc}
+_02055686:
+ mov r0, #0x80
+ pop {r3, pc}
+_0205568A:
+ mov r0, #0x1
+ lsl r0, r0, #0x8
+ pop {r3, pc}
+_02055690:
+ bl ErrorHandling
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_02055698
+FUN_02055698: ; 0x02055698
+ ldr r0, [r0, #0x38]
+ bx lr
+
+ thumb_func_start FUN_0205569C
+FUN_0205569C: ; 0x0205569C
+ push {r3, lr}
+ cmp r1, #0x1
+ bne _020556AA
+ mov r1, #0x1
+ bl FUN_020553EC
+ pop {r3, pc}
+_020556AA:
+ mov r1, #0x1
+ bl FUN_020553F4
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_020556B4
+FUN_020556B4: ; 0x020556B4
+ push {r3, lr}
+ mov r1, #0x1
+ bl FUN_02055400
+ cmp r0, #0x0
+ beq _020556C4
+ mov r0, #0x1
+ pop {r3, pc}
+_020556C4:
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_020556C8
+FUN_020556C8: ; 0x020556C8
+ push {r3, lr}
+ cmp r1, #0x1
+ bne _020556D6
+ mov r1, #0x2
+ bl FUN_020553EC
+ pop {r3, pc}
+_020556D6:
+ mov r1, #0x2
+ bl FUN_020553F4
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_020556E0
+FUN_020556E0: ; 0x020556E0
+ push {r3, lr}
+ mov r1, #0x2
+ bl FUN_02055400
+ cmp r0, #0x0
+ beq _020556F0
+ mov r0, #0x1
+ pop {r3, pc}
+_020556F0:
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_020556F4
+FUN_020556F4: ; 0x020556F4
+ push {r3, lr}
+ cmp r1, #0x1
+ bne _02055702
+ mov r1, #0x4
+ bl FUN_020553EC
+ pop {r3, pc}
+_02055702:
+ mov r1, #0x4
+ bl FUN_020553F4
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205570C
+FUN_0205570C: ; 0x0205570C
+ push {r3, lr}
+ mov r1, #0x4
+ bl FUN_02055400
+ cmp r0, #0x0
+ beq _0205571C
+ mov r0, #0x1
+ pop {r3, pc}
+_0205571C:
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_02055720
+FUN_02055720: ; 0x02055720
+ push {r3, lr}
+ cmp r1, #0x1
+ bne _0205572E
+ mov r1, #0x8
+ bl FUN_020553EC
+ pop {r3, pc}
+_0205572E:
+ mov r1, #0x8
+ bl FUN_020553F4
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02055738
+FUN_02055738: ; 0x02055738
+ push {r3, lr}
+ mov r1, #0x8
+ bl FUN_02055400
+ cmp r0, #0x0
+ beq _02055748
+ mov r0, #0x1
+ pop {r3, pc}
+_02055748:
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205574C
+FUN_0205574C: ; 0x0205574C
+ push {r3, lr}
+ cmp r1, #0x1
+ bne _0205575A
+ mov r1, #0x10
+ bl FUN_020553EC
+ pop {r3, pc}
+_0205575A:
+ mov r1, #0x10
+ bl FUN_020553F4
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02055764
+FUN_02055764: ; 0x02055764
+ push {r3, lr}
+ mov r1, #0x10
+ bl FUN_02055400
+ cmp r0, #0x0
+ beq _02055774
+ mov r0, #0x1
+ pop {r3, pc}
+_02055774:
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_02055778
+FUN_02055778: ; 0x02055778
+ push {r3, lr}
+ cmp r1, #0x1
+ bne _02055786
+ mov r1, #0x20
+ bl FUN_020553EC
+ pop {r3, pc}
+_02055786:
+ mov r1, #0x20
+ bl FUN_020553F4
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02055790
+FUN_02055790: ; 0x02055790
+ push {r3, lr}
+ mov r1, #0x20
+ bl FUN_02055400
+ cmp r0, #0x0
+ beq _020557A0
+ mov r0, #0x1
+ pop {r3, pc}
+_020557A0:
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_020557A4
+FUN_020557A4: ; 0x020557A4
+ ldr r3, _020557AC ; =FUN_020553EC
+ mov r1, #0x40
+ bx r3
+ nop
+_020557AC: .word FUN_020553EC
+
+ thumb_func_start FUN_020557B0
+FUN_020557B0: ; 0x020557B0
+ ldr r3, _020557B8 ; =FUN_020553F4
+ mov r1, #0x40
+ bx r3
+ nop
+_020557B8: .word FUN_020553F4
+
+ thumb_func_start FUN_020557BC
+FUN_020557BC: ; 0x020557BC
+ push {r3, lr}
+ mov r1, #0x40
+ bl FUN_02055400
+ cmp r0, #0x0
+ beq _020557CC
+ mov r0, #0x1
+ pop {r3, pc}
+_020557CC:
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_020557D0
+FUN_020557D0: ; 0x020557D0
+ push {r3, lr}
+ cmp r1, #0x1
+ bne _020557DE
+ mov r1, #0x80
+ bl FUN_020553EC
+ pop {r3, pc}
+_020557DE:
+ mov r1, #0x80
+ bl FUN_020553F4
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_020557E8
+FUN_020557E8: ; 0x020557E8
+ ldr r3, _020557F0 ; =FUN_02055400
+ mov r1, #0x80
+ bx r3
+ nop
+_020557F0: .word FUN_02055400
+
+ thumb_func_start FUN_020557F4
+FUN_020557F4: ; 0x020557F4
+ push {r3-r7, lr}
+ add r7, r1, #0x0
+ mov r1, #0x0
+ add r4, r2, #0x0
+ mvn r1, r1
+ add r5, r0, #0x0
+ add r6, r3, #0x0
+ cmp r4, r1
+ bne _02055812
+ add r2, sp, #0x8
+ ldrh r2, [r2, #0x10]
+ add r1, r6, #0x0
+ bl FUN_02057060
+ add r4, r0, #0x0
+_02055812:
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_020563F0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_020558A0
+ cmp r0, #0x0
+ beq _02055896
+ add r3, sp, #0x8
+ ldrh r3, [r3, #0x10]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_02055900
+ add r0, r5, #0x0
+ bl FUN_021E5FE0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02055BD4
+ cmp r0, #0x1
+ bne _0205584E
+ add r0, r5, #0x0
+ bl FUN_021E7138
+ pop {r3-r7, pc}
+_0205584E:
+ add r0, r5, #0x0
+ bl FUN_020553C4
+ cmp r0, #0x0
+ bne _02055878
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_020561D0
+ cmp r0, #0x0
+ beq _0205586C
+ add r0, r5, #0x0
+ bl FUN_021E7138
+ b _02055878
+_0205586C:
+ ldr r0, [sp, #0x1c]
+ cmp r0, #0x1
+ bne _02055878
+ add r0, r5, #0x0
+ bl FUN_021E70F0
+_02055878:
+ add r0, sp, #0x8
+ ldrh r0, [r0, #0x10]
+ add r1, r7, #0x0
+ add r2, r4, #0x0
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ add r3, r6, #0x0
+ bl FUN_02056110
+ add r0, r5, #0x0
+ bl FUN_02055928
+ add r0, r5, #0x0
+ bl FUN_02055968
+_02055896:
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02055898
+FUN_02055898: ; 0x02055898
+ ldr r3, _0205589C ; =FUN_020558A0
+ bx r3
+ .balign 4
+_0205589C: .word FUN_020558A0
+
+ thumb_func_start FUN_020558A0
+FUN_020558A0: ; 0x020558A0
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_020553A0
+ add r6, r0, #0x0
+ bl FUN_0205AD98
+ cmp r0, #0x1
+ bne _020558B8
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_020558B8:
+ mov r0, #0x0
+ mvn r0, r0
+ cmp r4, r0
+ bne _020558C4
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_020558C4:
+ add r0, r6, #0x0
+ bl FUN_020586F0
+ bl FUN_020570F0
+ cmp r0, #0x1
+ bne _020558FA
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ bl FUN_02056B74
+ cmp r0, #0x0
+ bne _020558E4
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_020558E4:
+ cmp r0, #0x20
+ bne _020558F6
+ add r0, r5, #0x0
+ bl FUN_020553C4
+ cmp r0, #0x2
+ bne _020558F6
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_020558F6:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_020558FA:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02055900
+FUN_02055900: ; 0x02055900
+ push {r4-r6, lr}
+ add r6, r3, #0x0
+ add r5, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_02057028
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_02057044
+ add r2, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0205543C
+ add r0, r5, #0x0
+ bl FUN_020557B0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02055928
+FUN_02055928: ; 0x02055928
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_020557BC
+ cmp r0, #0x1
+ bne _02055964
+ add r0, r4, #0x0
+ bl FUN_02055370
+ cmp r0, #0x1
+ bne _02055964
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_020556C8
+ add r0, r4, #0x0
+ bl FUN_02055764
+ cmp r0, #0x1
+ bne _02055964
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_0205574C
+ add r0, r4, #0x0
+ bl FUN_020553A0
+ mov r1, #0x0
+ bl FUN_02058A18
+_02055964:
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02055968
+FUN_02055968: ; 0x02055968
+ push {r4-r6, lr}
+ add r4, r0, #0x0
+ bl FUN_02055370
+ cmp r0, #0x1
+ bne _02055A20
+ add r0, r4, #0x0
+ bl FUN_020553A0
+ add r4, r0, #0x0
+ bl FUN_02058720
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ add r0, r4, #0x0
+ bl FUN_020586F0
+ bl FUN_0205B020
+ add r1, r0, #0x0
+ mov r0, #0x0
+ mvn r0, r0
+ cmp r1, r0
+ bne _0205599C
+ add r6, r5, #0x0
+ b _020559A6
+_0205599C:
+ add r0, r4, #0x0
+ bl FUN_02059C90
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+_020559A6:
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ bl FUN_02059B2C
+ cmp r0, #0x1
+ bne _020559B8
+ ldr r0, _02055A24 ; =0x0000061F
+ bl FUN_020054C8
+_020559B8:
+ add r0, r5, #0x0
+ bl FUN_02054AF0
+ cmp r0, #0x1
+ bne _020559C8
+ ldr r0, _02055A28 ; =0x00000641
+ bl FUN_020054C8
+_020559C8:
+ add r0, r5, #0x0
+ bl FUN_0205483C
+ cmp r0, #0x1
+ bne _020559D8
+ ldr r0, _02055A2C ; =0x00000642
+ bl FUN_020054C8
+_020559D8:
+ add r0, r5, #0x0
+ bl FUN_02054830
+ add r0, r5, #0x0
+ bl FUN_02054974
+ cmp r0, #0x1
+ bne _020559F8
+ add r0, r5, #0x0
+ bl FUN_02054984
+ cmp r0, #0x1
+ beq _020559F8
+ ldr r0, _02055A30 ; =0x00000655
+ bl FUN_020054C8
+_020559F8:
+ add r0, r4, #0x0
+ bl FUN_020586F0
+ bl FUN_020570F0
+ cmp r0, #0x0
+ bne _02055A20
+ add r0, r5, #0x0
+ bl FUN_02054798
+ cmp r0, #0x1
+ beq _02055A1A
+ add r0, r6, #0x0
+ bl FUN_02054798
+ cmp r0, #0x1
+ bne _02055A20
+_02055A1A:
+ ldr r0, _02055A34 ; =0x00000653
+ bl FUN_020054C8
+_02055A20:
+ pop {r4-r6, pc}
+ nop
+_02055A24: .word 0x0000061F
+_02055A28: .word 0x00000641
+_02055A2C: .word 0x00000642
+_02055A30: .word 0x00000655
+_02055A34: .word 0x00000653
+
+ thumb_func_start FUN_02055A38
+FUN_02055A38: ; 0x02055A38
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ bl FUN_02055370
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02055378
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_020553A0
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_02055374
+ mov r1, #0x0
+ add r0, r5, #0x0
+ mvn r1, r1
+ bl FUN_02055BEC
+ cmp r0, #0x0
+ beq _02055A76
+ cmp r0, #0x5
+ beq _02055A76
+ add r0, r5, #0x0
+ mov r1, #0x2
+ bl FUN_02055374
+ pop {r3-r7, pc}
+_02055A76:
+ add r0, r7, #0x0
+ bl FUN_0205AD98
+ cmp r0, #0x0
+ bne _02055AC2
+ cmp r6, #0x0
+ beq _02055B10
+ cmp r6, #0x1
+ beq _02055A8E
+ cmp r6, #0x2
+ beq _02055AB8
+ pop {r3-r7, pc}
+_02055A8E:
+ add r0, r7, #0x0
+ bl FUN_020586F0
+ bl FUN_020570F0
+ cmp r0, #0x1
+ beq _02055B10
+ cmp r4, #0x0
+ beq _02055AA4
+ cmp r4, #0x3
+ bne _02055AAE
+_02055AA4:
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_02055374
+ pop {r3-r7, pc}
+_02055AAE:
+ add r0, r5, #0x0
+ mov r1, #0x2
+ bl FUN_02055374
+ pop {r3-r7, pc}
+_02055AB8:
+ add r0, r5, #0x0
+ mov r1, #0x2
+ bl FUN_02055374
+ pop {r3-r7, pc}
+_02055AC2:
+ add r0, r7, #0x0
+ bl FUN_0205AE28
+ cmp r0, #0x1
+ bne _02055B10
+ cmp r6, #0x0
+ beq _02055B10
+ cmp r6, #0x1
+ beq _02055ADA
+ cmp r6, #0x2
+ beq _02055AF6
+ pop {r3-r7, pc}
+_02055ADA:
+ cmp r4, #0x0
+ beq _02055B10
+ cmp r4, #0x3
+ bne _02055AEC
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_02055374
+ pop {r3-r7, pc}
+_02055AEC:
+ add r0, r5, #0x0
+ mov r1, #0x3
+ bl FUN_02055374
+ pop {r3-r7, pc}
+_02055AF6:
+ cmp r4, #0x0
+ beq _02055B10
+ cmp r4, #0x3
+ bne _02055B08
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_02055374
+ pop {r3-r7, pc}
+_02055B08:
+ add r0, r5, #0x0
+ mov r1, #0x3
+ bl FUN_02055374
+_02055B10:
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02055B14
+FUN_02055B14: ; 0x02055B14
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r1, #0x0
+ bl FUN_0205536C
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_02055374
+ add r0, r4, #0x0
+ bl FUN_02055410
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02055B30
+FUN_02055B30: ; 0x02055B30
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_02055370
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02055378
+ cmp r4, #0x0
+ bne _02055B48
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_02055B48:
+ cmp r4, #0x2
+ bne _02055B50
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_02055B50:
+ cmp r4, #0x1
+ bne _02055B86
+ cmp r0, #0x0
+ beq _02055B5C
+ cmp r0, #0x3
+ bne _02055B60
+_02055B5C:
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_02055B60:
+ add r0, r5, #0x0
+ bl FUN_020553A0
+ add r4, r0, #0x0
+ bl FUN_0205AD98
+ cmp r0, #0x1
+ bne _02055B74
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_02055B74:
+ add r0, r4, #0x0
+ bl FUN_020586F0
+ bl FUN_020570F0
+ cmp r0, #0x1
+ bne _02055B86
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_02055B86:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02055B8C
+FUN_02055B8C: ; 0x02055B8C
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ add r4, r0, #0x0
+ mov r1, #0x0
+ bl FUN_0205536C
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_02055374
+ add r0, r4, #0x0
+ bl FUN_020553A0
+ add r4, r0, #0x0
+ add r1, r5, #0x0
+ bl FUN_020584AC
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_02058544
+ add r0, r4, #0x0
+ bl FUN_02059C60
+ add r0, r4, #0x0
+ bl FUN_0205AE80
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_0205AFDC
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0205ADDC
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02055BD4
+FUN_02055BD4: ; 0x02055BD4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_02055BEC
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_02055C4C
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02055BEC
+FUN_02055BEC: ; 0x02055BEC
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ mov r4, #0x0
+ bl FUN_020553A0
+ bl FUN_02058720
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ add r2, r6, #0x0
+ bl FUN_0205733C
+ cmp r0, #0x1
+ bne _02055C10
+ mov r0, #0x5
+ pop {r3-r7, pc}
+_02055C10:
+ add r0, r5, #0x0
+ bl FUN_020556E0
+ cmp r0, #0x1
+ bne _02055C1E
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+_02055C1E:
+ lsl r0, r7, #0x18
+ ldr r5, _02055C44 ; =0x020F5D34
+ lsr r6, r0, #0x18
+_02055C24:
+ ldr r1, [r5, #0x0]
+ add r0, r6, #0x0
+ blx r1
+ cmp r0, #0x1
+ bne _02055C36
+ ldr r0, _02055C48 ; =0x020F5D38
+ lsl r1, r4, #0x3
+ ldr r0, [r0, r1]
+ pop {r3-r7, pc}
+_02055C36:
+ add r5, #0x8
+ ldr r0, [r5, #0x0]
+ add r4, r4, #0x1
+ cmp r0, #0x0
+ bne _02055C24
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+_02055C44: .word 0x020F5D34
+_02055C48: .word 0x020F5D38
+
+ thumb_func_start FUN_02055C4C
+FUN_02055C4C: ; 0x02055C4C
+ push {r3, lr}
+ add r3, r1, #0x0
+ add r1, r2, #0x0
+ ldr r2, _02055C68 ; =0x020F5D1C
+ lsl r3, r3, #0x2
+ ldr r2, [r2, r3]
+ blx r2
+ cmp r0, #0x1
+ bne _02055C62
+ mov r0, #0x1
+ pop {r3, pc}
+_02055C62:
+ mov r0, #0x0
+ pop {r3, pc}
+ nop
+_02055C68: .word 0x020F5D1C
+
+ thumb_func_start FUN_02055C6C
+FUN_02055C6C: ; 0x02055C6C
+ push {r3, lr}
+ bl FUN_02055FFC
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02055C78
+FUN_02055C78: ; 0x02055C78
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ bl FUN_020553A0
+ add r4, r0, #0x0
+ bl FUN_020584D4
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02056040
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_02056B74
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_0205569C
+ ldr r0, [sp, #0x0]
+ cmp r0, #0x0
+ beq _02055D28
+ add r0, r5, #0x0
+ bl FUN_02055FFC
+ cmp r7, #0x1
+ beq _02055CCA
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_020556C8
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_0205536C
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_02055CCA:
+ add r0, r6, #0x0
+ bl FUN_02059E74
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_02056B74
+ cmp r0, #0x0
+ beq _02055CE4
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_02055CE4:
+ mov r1, #0x6
+ add r0, r4, #0x0
+ lsl r1, r1, #0x6
+ bl FUN_02058410
+ add r0, r6, #0x0
+ mov r1, #0x8
+ bl FUN_0205AFDC
+ add r2, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02056B5C
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_020556C8
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_0205569C
+ mov r1, #0x0
+ mvn r1, r1
+ add r0, r5, #0x0
+ add r2, r1, #0x0
+ bl FUN_0205543C
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_0205536C
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02055D28:
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ bl FUN_020560A0
+ cmp r0, #0x0
+ bne _02055D8E
+ add r0, r5, #0x0
+ bl FUN_02055FFC
+ add r0, r6, #0x0
+ bl FUN_02059E74
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_02056B74
+ cmp r0, #0x0
+ beq _02055D54
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_02055D54:
+ mov r1, #0x6
+ add r0, r4, #0x0
+ lsl r1, r1, #0x6
+ bl FUN_02058410
+ add r0, r6, #0x0
+ mov r1, #0x8
+ bl FUN_0205AFDC
+ add r2, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02056B5C
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_020556C8
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_0205569C
+ mov r1, #0x0
+ mvn r1, r1
+ add r0, r5, #0x0
+ add r2, r1, #0x0
+ bl FUN_0205543C
+ b _02055DA0
+_02055D8E:
+ mov r1, #0x6
+ add r0, r4, #0x0
+ lsl r1, r1, #0x6
+ bl FUN_02058410
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_020560D0
+_02055DA0:
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_0205536C
+ mov r0, #0x1
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02055DAC
+FUN_02055DAC: ; 0x02055DAC
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r7, r1, #0x0
+ bl FUN_020553A0
+ add r6, r0, #0x0
+ bl FUN_020584D4
+ add r4, r0, #0x0
+ ldr r0, _02055EF4 ; =0x00000654
+ bl FUN_020054C8
+ cmp r4, #0x0
+ bne _02055E62
+ add r0, r5, #0x0
+ bl FUN_020553C4
+ cmp r0, #0x1
+ bne _02055DFE
+ add r0, r5, #0x0
+ bl FUN_02055408
+ cmp r0, #0x3
+ blt _02055DFE
+ cmp r7, #0x0
+ bne _02055DFE
+ add r0, r4, #0x0
+ mov r1, #0x15
+ bl FUN_0205AFDC
+ add r2, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02056B5C
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_0205536C
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02055DFE:
+ add r0, r4, #0x0
+ bl FUN_02059E74
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ bl FUN_02056B74
+ cmp r0, #0x0
+ beq _02055E18
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_02055E18:
+ mov r1, #0x6
+ add r0, r6, #0x0
+ lsl r1, r1, #0x6
+ bl FUN_02058410
+ add r0, r4, #0x0
+ mov r1, #0x8
+ bl FUN_0205AFDC
+ add r2, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02056B5C
+ add r0, r5, #0x0
+ bl FUN_02055410
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_0205569C
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_0205536C
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_02055778
+ mov r1, #0x0
+ mvn r1, r1
+ add r0, r5, #0x0
+ add r2, r1, #0x0
+ bl FUN_0205543C
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02055E62:
+ cmp r4, #0x1
+ bne _02055EF0
+ add r0, r5, #0x0
+ bl FUN_02055790
+ cmp r0, #0x0
+ bne _02055EAC
+ add r0, r4, #0x0
+ mov r1, #0x15
+ bl FUN_0205AFDC
+ add r2, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02056B5C
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_0205536C
+ add r0, r5, #0x0
+ bl FUN_020554BC
+ cmp r0, #0x1
+ bne _02055E9C
+ add r0, r5, #0x0
+ mov r1, #0x3
+ bl FUN_0205540C
+_02055E9C:
+ mov r1, #0x0
+ mvn r1, r1
+ add r0, r5, #0x0
+ add r2, r1, #0x0
+ bl FUN_0205543C
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02055EAC:
+ mov r1, #0x6
+ add r0, r6, #0x0
+ lsl r1, r1, #0x6
+ bl FUN_02058410
+ add r0, r4, #0x0
+ mov r1, #0x8
+ bl FUN_0205AFDC
+ add r2, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02056B5C
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_0205569C
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_0205536C
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_02055778
+ mov r1, #0x0
+ mvn r1, r1
+ add r0, r5, #0x0
+ add r2, r1, #0x0
+ bl FUN_0205543C
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02055EF0:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+_02055EF4: .word 0x00000654
+
+ thumb_func_start FUN_02055EF8
+FUN_02055EF8: ; 0x02055EF8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_020553A0
+ add r4, r0, #0x0
+ bl FUN_020584D4
+ add r0, r5, #0x0
+ bl FUN_020554BC
+ cmp r0, #0x1
+ bne _02055F22
+ ldr r0, _02055F40 ; =0x00000656
+ bl FUN_020054C8
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r2, #0x5f
+ bl FUN_02056B5C
+ b _02055F2C
+_02055F22:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r2, #0x5d
+ bl FUN_02056B5C
+_02055F2C:
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_0205569C
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_020557D0
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ .balign 4
+_02055F40: .word 0x00000656
+
+ thumb_func_start FUN_02055F44
+FUN_02055F44: ; 0x02055F44
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_020553A0
+ add r4, r0, #0x0
+ bl FUN_020584D4
+ add r0, r5, #0x0
+ bl FUN_020554BC
+ cmp r0, #0x1
+ bne _02055F6E
+ ldr r0, _02055F8C ; =0x00000656
+ bl FUN_020054C8
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r2, #0x5e
+ bl FUN_02056B5C
+ b _02055F78
+_02055F6E:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r2, #0x5c
+ bl FUN_02056B5C
+_02055F78:
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_0205569C
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_020557D0
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ .balign 4
+_02055F8C: .word 0x00000656
+
+ thumb_func_start FUN_02055F90
+FUN_02055F90: ; 0x02055F90
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_020553A0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r2, #0x1
+ bl FUN_02056B74
+ cmp r0, #0x0
+ bne _02055FCE
+ mov r0, #0x1
+ mov r1, #0x14
+ bl FUN_0205AFDC
+ add r2, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02056B5C
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_0205536C
+ add r0, r5, #0x0
+ mov r1, #0x3
+ bl FUN_0205540C
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_02055FCE:
+ mov r0, #0x1
+ add r1, r0, #0x0
+ bl FUN_0205AFDC
+ add r2, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02056B5C
+ add r0, r5, #0x0
+ bl FUN_02055410
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_0205536C
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_020556F4
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02055FFC
+FUN_02055FFC: ; 0x02055FFC
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_020556B4
+ cmp r0, #0x1
+ bne _0205603E
+ add r0, r4, #0x0
+ bl FUN_020553A0
+ mov r1, #0x6
+ lsl r1, r1, #0x6
+ bl FUN_02058418
+ add r0, r4, #0x0
+ bl FUN_020557E8
+ cmp r0, #0x0
+ bne _02056026
+ add r0, r4, #0x0
+ bl FUN_02055410
+_02056026:
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_0205569C
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_020557D0
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_02055778
+_0205603E:
+ pop {r4, pc}
+
+ thumb_func_start FUN_02056040
+FUN_02056040: ; 0x02056040
+ push {r4-r6, lr}
+ sub sp, #0x18
+ add r5, r1, #0x0
+ bl FUN_020553A0
+ add r4, r0, #0x0
+ bl FUN_02058738
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ add r1, sp, #0xc
+ bl FUN_02058B5C
+ add r4, sp, #0xc
+ add r3, sp, #0x0
+ ldmia r4!, {r0-r1}
+ add r2, r3, #0x0
+ stmia r3!, {r0-r1}
+ ldr r0, [r4, #0x0]
+ add r1, r2, #0x0
+ mov r2, #0x1
+ str r0, [r3, #0x0]
+ add r0, r5, #0x0
+ lsl r2, r2, #0xe
+ bl FUN_02059E28
+ add r0, r6, #0x0
+ add r1, sp, #0x0
+ bl FUN_02059E9C
+ cmp r0, #0x0
+ beq _02056088
+ ldr r1, [sp, #0x4]
+ ldr r0, [sp, #0x10]
+ cmp r0, r1
+ bne _0205608E
+_02056088:
+ add sp, #0x18
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_0205608E:
+ cmp r0, r1
+ ble _02056098
+ add sp, #0x18
+ mov r0, #0x2
+ pop {r4-r6, pc}
+_02056098:
+ mov r0, #0x1
+ add sp, #0x18
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_020560A0
+FUN_020560A0: ; 0x020560A0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_02055408
+ add r1, r0, #0x0
+ cmp r4, #0x1
+ bne _020560B8
+ sub r1, r1, #0x1
+ bpl _020560C4
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_020560B8:
+ cmp r4, #0x2
+ bne _020560C4
+ add r1, r1, #0x1
+ cmp r1, #0x3
+ ble _020560C4
+ mov r1, #0x3
+_020560C4:
+ add r0, r5, #0x0
+ bl FUN_0205540C
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020560D0
+FUN_020560D0: ; 0x020560D0
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ bl FUN_020553A0
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ mov r4, #0x10
+ bl FUN_02055408
+ cmp r0, #0x1
+ beq _020560F2
+ cmp r0, #0x2
+ beq _020560F6
+ cmp r0, #0x3
+ beq _020560FA
+ b _020560FC
+_020560F2:
+ mov r4, #0x50
+ b _020560FC
+_020560F6:
+ mov r4, #0x14
+ b _020560FC
+_020560FA:
+ mov r4, #0x14
+_020560FC:
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ bl FUN_0205AFDC
+ add r2, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ bl FUN_02056B5C
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02056110
+FUN_02056110: ; 0x02056110
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r6, r0, #0x0
+ add r7, r1, #0x0
+ str r2, [sp, #0x8]
+ add r5, r3, #0x0
+ bl FUN_020553C4
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_020553A0
+ add r1, r0, #0x0
+ cmp r4, #0x0
+ beq _02056136
+ cmp r4, #0x1
+ beq _0205614C
+ cmp r4, #0x2
+ bne _02056162
+_02056136:
+ str r5, [sp, #0x0]
+ add r0, sp, #0x10
+ ldrh r0, [r0, #0x10]
+ ldr r3, [sp, #0x8]
+ add r2, r7, #0x0
+ str r0, [sp, #0x4]
+ add r0, r6, #0x0
+ bl FUN_0205616C
+ add sp, #0xc
+ pop {r4-r7, pc}
+_0205614C:
+ str r5, [sp, #0x0]
+ add r0, sp, #0x10
+ ldrh r0, [r0, #0x10]
+ ldr r3, [sp, #0x8]
+ add r2, r7, #0x0
+ str r0, [sp, #0x4]
+ add r0, r6, #0x0
+ bl FUN_020563A8
+ add sp, #0xc
+ pop {r4-r7, pc}
+_02056162:
+ bl ErrorHandling
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205616C
+FUN_0205616C: ; 0x0205616C
+ push {r3-r6, lr}
+ sub sp, #0x4
+ add r6, r3, #0x0
+ add r4, r1, #0x0
+ add r1, r6, #0x0
+ add r5, r0, #0x0
+ bl FUN_020561D0
+ cmp r0, #0x0
+ beq _0205618C
+ cmp r0, #0x1
+ beq _020561A2
+ cmp r0, #0x2
+ beq _020561B8
+ add sp, #0x4
+ pop {r3-r6, pc}
+_0205618C:
+ add r3, sp, #0x8
+ ldrh r0, [r3, #0x14]
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ str r0, [sp, #0x0]
+ ldrh r3, [r3, #0x10]
+ add r0, r5, #0x0
+ bl FUN_02056288
+ add sp, #0x4
+ pop {r3-r6, pc}
+_020561A2:
+ add r3, sp, #0x8
+ ldrh r0, [r3, #0x14]
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ str r0, [sp, #0x0]
+ ldrh r3, [r3, #0x10]
+ add r0, r5, #0x0
+ bl FUN_020562A8
+ add sp, #0x4
+ pop {r3-r6, pc}
+_020561B8:
+ add r3, sp, #0x8
+ ldrh r0, [r3, #0x14]
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ str r0, [sp, #0x0]
+ ldrh r3, [r3, #0x10]
+ add r0, r5, #0x0
+ bl FUN_02056384
+ add sp, #0x4
+ pop {r3-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_020561D0
+FUN_020561D0: ; 0x020561D0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_02056244
+ add r4, r0, #0x0
+ bl FUN_020561EC
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0205536C
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020561EC
+FUN_020561EC: ; 0x020561EC
+ push {r3, lr}
+ cmp r0, #0x0
+ beq _020561FC
+ cmp r0, #0x1
+ beq _02056200
+ cmp r0, #0x2
+ beq _02056204
+ b _02056208
+_020561FC:
+ mov r0, #0x0
+ pop {r3, pc}
+_02056200:
+ mov r0, #0x1
+ pop {r3, pc}
+_02056204:
+ mov r0, #0x2
+ pop {r3, pc}
+_02056208:
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_02056210
+FUN_02056210: ; 0x02056210
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ add r0, r5, #0x0
+ add r4, r2, #0x0
+ bl FUN_020549F0
+ cmp r0, #0x1
+ bne _02056224
+ mov r0, #0x4
+ pop {r3-r5, pc}
+_02056224:
+ add r0, r5, #0x0
+ bl FUN_020549E4
+ cmp r0, #0x1
+ bne _02056232
+ mov r0, #0x8
+ pop {r3-r5, pc}
+_02056232:
+ add r0, r5, #0x0
+ bl FUN_020549D8
+ cmp r0, #0x1
+ bne _0205623E
+ mov r4, #0xc
+_0205623E:
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02056244
+FUN_02056244: ; 0x02056244
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ mov r1, #0x0
+ mvn r1, r1
+ add r5, r0, #0x0
+ cmp r4, r1
+ bne _0205625C
+ mov r1, #0x0
+ bl FUN_0205536C
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0205625C:
+ bl FUN_020552F8
+ cmp r0, r4
+ beq _0205627A
+ add r0, r5, #0x0
+ bl FUN_02055370
+ cmp r0, #0x1
+ beq _0205627A
+ add r0, r5, #0x0
+ mov r1, #0x2
+ bl FUN_0205536C
+ mov r0, #0x2
+ pop {r3-r5, pc}
+_0205627A:
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_0205536C
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02056288
+FUN_02056288: ; 0x02056288
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_020584C4
+ mov r1, #0x0
+ bl FUN_0205AFDC
+ add r2, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02056B5C
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020562A8
+FUN_020562A8: ; 0x020562A8
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ str r2, [sp, #0x0]
+ bl FUN_02056B74
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_020553C4
+ cmp r0, #0x2
+ beq _0205632A
+ mov r0, #0x4
+ tst r0, r4
+ beq _020562CA
+ mov r7, #0x38
+ b _0205636C
+_020562CA:
+ cmp r4, #0x0
+ beq _020562E6
+ mov r0, #0x8
+ mov r7, #0x1c
+ tst r0, r4
+ bne _020562DC
+ ldr r0, _02056380 ; =0x00000601
+ bl FUN_020054C8
+_020562DC:
+ ldr r1, [sp, #0x0]
+ add r0, r6, #0x0
+ bl FUN_020584CC
+ b _0205636C
+_020562E6:
+ add r0, r5, #0x0
+ mov r4, #0xc
+ bl FUN_0205545C
+ bl FUN_02055474
+ cmp r0, #0x1
+ bne _02056306
+ add r1, sp, #0x8
+ ldrh r1, [r1, #0x10]
+ add r0, r5, #0x0
+ bl FUN_02057114
+ cmp r0, #0x1
+ bne _02056306
+ mov r4, #0x58
+_02056306:
+ add r0, r6, #0x0
+ bl FUN_02058720
+ add r1, r0, #0x0
+ lsl r1, r1, #0x18
+ add r0, r6, #0x0
+ lsr r1, r1, #0x18
+ add r2, r4, #0x0
+ bl FUN_02056210
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_020572D4
+ add r0, r5, #0x0
+ bl FUN_020557A4
+ b _0205636C
+_0205632A:
+ cmp r4, #0x0
+ beq _02056332
+ cmp r4, #0x20
+ bne _02056356
+_02056332:
+ add r0, r6, #0x0
+ bl FUN_02058720
+ add r1, r0, #0x0
+ lsl r1, r1, #0x18
+ add r0, r6, #0x0
+ lsr r1, r1, #0x18
+ mov r2, #0xc
+ bl FUN_02056210
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_020572D4
+ add r0, r5, #0x0
+ bl FUN_020557A4
+ b _0205636C
+_02056356:
+ mov r0, #0x8
+ mov r7, #0x1c
+ tst r0, r4
+ bne _02056364
+ ldr r0, _02056380 ; =0x00000601
+ bl FUN_020054C8
+_02056364:
+ ldr r1, [sp, #0x0]
+ add r0, r6, #0x0
+ bl FUN_020584CC
+_0205636C:
+ ldr r0, [sp, #0x0]
+ add r1, r7, #0x0
+ bl FUN_0205AFDC
+ add r2, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02056B5C
+ pop {r3-r7, pc}
+ .balign 4
+_02056380: .word 0x00000601
+
+ thumb_func_start FUN_02056384
+FUN_02056384: ; 0x02056384
+ push {r4-r6, lr}
+ add r6, r2, #0x0
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r0, r6, #0x0
+ mov r1, #0x28
+ bl FUN_0205AFDC
+ add r2, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02056B5C
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ bl FUN_020584CC
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_020563A8
+FUN_020563A8: ; 0x020563A8
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ add r7, r3, #0x0
+ bl FUN_020554BC
+ cmp r0, #0x1
+ add r0, sp, #0x10
+ bne _020563D6
+ ldrh r1, [r0, #0x10]
+ add r2, r6, #0x0
+ add r3, r7, #0x0
+ str r1, [sp, #0x0]
+ ldrh r0, [r0, #0x14]
+ add r1, r4, #0x0
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ bl FUN_020567E4
+ add sp, #0x8
+ pop {r3-r7, pc}
+_020563D6:
+ ldrh r1, [r0, #0x10]
+ add r2, r6, #0x0
+ add r3, r7, #0x0
+ str r1, [sp, #0x0]
+ ldrh r0, [r0, #0x14]
+ add r1, r4, #0x0
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ bl FUN_020564C8
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020563F0
+FUN_020563F0: ; 0x020563F0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_020553C4
+ cmp r0, #0x1
+ bne _0205642C
+ mov r0, #0x2
+ tst r0, r4
+ beq _0205642C
+ add r0, r5, #0x0
+ mov r4, #0x1
+ bl FUN_020554BC
+ cmp r0, #0x1
+ bne _02056412
+ mov r4, #0x0
+_02056412:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_020554AC
+ cmp r4, #0x0
+ bne _02056426
+ ldr r0, _02056430 ; =0x0000061C
+ bl FUN_020054C8
+ pop {r3-r5, pc}
+_02056426:
+ ldr r0, _02056434 ; =0x00000619
+ bl FUN_020054C8
+_0205642C:
+ pop {r3-r5, pc}
+ nop
+_02056430: .word 0x0000061C
+_02056434: .word 0x00000619
+
+ thumb_func_start FUN_02056438
+FUN_02056438: ; 0x02056438
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ mov r4, #0x4c
+ bl FUN_02055408
+ cmp r0, #0x1
+ beq _02056450
+ cmp r0, #0x2
+ beq _02056454
+ cmp r0, #0x3
+ beq _02056458
+ b _0205645A
+_02056450:
+ mov r4, #0x10
+ b _0205645A
+_02056454:
+ mov r4, #0x50
+ b _0205645A
+_02056458:
+ mov r4, #0x14
+_0205645A:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0205AFDC
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02056464
+FUN_02056464: ; 0x02056464
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x3
+ bl FUN_0205541C
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0205570C
+ cmp r0, #0x0
+ bne _02056488
+ cmp r4, #0x2
+ blt _02056488
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_020556F4
+_02056488:
+ cmp r4, #0x3
+ bne _02056490
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_02056490:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02056494
+FUN_02056494: ; 0x02056494
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ mov r6, #0x1
+ bl FUN_02055408
+ sub r4, r0, #0x1
+ bpl _020564A6
+ mov r4, #0x0
+ add r6, r4, #0x0
+_020564A6:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0205540C
+ add r0, r5, #0x0
+ bl FUN_0205570C
+ cmp r0, #0x1
+ bne _020564C4
+ cmp r4, #0x0
+ bne _020564C4
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_020556F4
+_020564C4:
+ add r0, r6, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_020564C8
+FUN_020564C8: ; 0x020564C8
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r7, r1, #0x0
+ add r1, r3, #0x0
+ add r6, r0, #0x0
+ str r3, [sp, #0x4]
+ ldr r5, [sp, #0x20]
+ ldr r4, [sp, #0x24]
+ bl FUN_0205653C
+ cmp r0, #0x3
+ bhi _02056538
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_020564EC: ; jump table (using 16-bit offset)
+ .short _020564F4 - _020564EC - 2; case 0
+ .short _02056506 - _020564EC - 2; case 1
+ .short _02056518 - _020564EC - 2; case 2
+ .short _0205652A - _020564EC - 2; case 3
+_020564F4:
+ ldr r2, [sp, #0x4]
+ add r0, r6, #0x0
+ add r1, r7, #0x0
+ add r3, r5, #0x0
+ str r4, [sp, #0x0]
+ bl FUN_020565F0
+ add sp, #0x8
+ pop {r3-r7, pc}
+_02056506:
+ ldr r2, [sp, #0x4]
+ add r0, r6, #0x0
+ add r1, r7, #0x0
+ add r3, r5, #0x0
+ str r4, [sp, #0x0]
+ bl FUN_02056614
+ add sp, #0x8
+ pop {r3-r7, pc}
+_02056518:
+ ldr r2, [sp, #0x4]
+ add r0, r6, #0x0
+ add r1, r7, #0x0
+ add r3, r5, #0x0
+ str r4, [sp, #0x0]
+ bl FUN_02056704
+ add sp, #0x8
+ pop {r3-r7, pc}
+_0205652A:
+ ldr r2, [sp, #0x4]
+ add r0, r6, #0x0
+ add r1, r7, #0x0
+ add r3, r5, #0x0
+ str r4, [sp, #0x0]
+ bl FUN_02056740
+_02056538:
+ add sp, #0x8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0205653C
+FUN_0205653C: ; 0x0205653C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_0205658C
+ add r4, r0, #0x0
+ bl FUN_02056558
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0205536C
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02056558
+FUN_02056558: ; 0x02056558
+ push {r3, lr}
+ cmp r0, #0x3
+ bhi _02056582
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0205656A: ; jump table (using 16-bit offset)
+ .short _02056572 - _0205656A - 2; case 0
+ .short _02056576 - _0205656A - 2; case 1
+ .short _0205657A - _0205656A - 2; case 2
+ .short _0205657E - _0205656A - 2; case 3
+_02056572:
+ mov r0, #0x0
+ pop {r3, pc}
+_02056576:
+ mov r0, #0x1
+ pop {r3, pc}
+_0205657A:
+ mov r0, #0x2
+ pop {r3, pc}
+_0205657E:
+ mov r0, #0x1
+ pop {r3, pc}
+_02056582:
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205658C
+FUN_0205658C: ; 0x0205658C
+ push {r4-r6, lr}
+ add r4, r1, #0x0
+ mov r1, #0x0
+ mvn r1, r1
+ add r5, r0, #0x0
+ cmp r4, r1
+ bne _020565BA
+ bl FUN_0205570C
+ cmp r0, #0x1
+ bne _020565AE
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_0205536C
+ mov r0, #0x3
+ pop {r4-r6, pc}
+_020565AE:
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_0205536C
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_020565BA:
+ bl FUN_020552F8
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_020556F4
+ cmp r6, r4
+ beq _020565E2
+ add r0, r5, #0x0
+ bl FUN_02055370
+ cmp r0, #0x1
+ beq _020565E2
+ add r0, r5, #0x0
+ mov r1, #0x2
+ bl FUN_0205536C
+ mov r0, #0x2
+ pop {r4-r6, pc}
+_020565E2:
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_0205536C
+ mov r0, #0x1
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_020565F0
+FUN_020565F0: ; 0x020565F0
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_020584C4
+ mov r1, #0x0
+ bl FUN_0205AFDC
+ add r2, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02056B5C
+ add r0, r5, #0x0
+ bl FUN_02055410
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02056614
+FUN_02056614: ; 0x02056614
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ str r2, [sp, #0x0]
+ bl FUN_02056B74
+ add r4, r0, #0x0
+ mov r0, #0x4
+ tst r0, r4
+ beq _02056638
+ add r0, r5, #0x0
+ mov r7, #0x38
+ bl FUN_020572D4
+ add r0, r5, #0x0
+ bl FUN_020557A4
+ b _020566EA
+_02056638:
+ mov r0, #0x10
+ tst r0, r4
+ beq _02056656
+ add r0, r5, #0x0
+ mov r7, #0x50
+ bl FUN_020572D4
+ add r0, r5, #0x0
+ bl FUN_020557A4
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_0205569C
+ b _020566EA
+_02056656:
+ mov r0, #0x40
+ tst r0, r4
+ beq _02056680
+ add r0, r6, #0x0
+ mov r7, #0x0
+ bl FUN_020584D4
+ str r0, [sp, #0x0]
+ ldr r1, [sp, #0x0]
+ add r0, r6, #0x0
+ bl FUN_020584CC
+ add r0, r5, #0x0
+ bl FUN_02055410
+ sub r1, r7, #0x1
+ add r0, r5, #0x0
+ add r2, r1, #0x0
+ bl FUN_0205543C
+ b _020566EA
+_02056680:
+ cmp r4, #0x0
+ beq _020566D4
+ ldr r2, [sp, #0x0]
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_020572EC
+ cmp r0, #0x0
+ bne _020566B0
+ mov r0, #0x8
+ mov r7, #0x1c
+ tst r0, r4
+ bne _020566A0
+ ldr r0, _02056700 ; =0x00000601
+ bl FUN_020054C8
+_020566A0:
+ ldr r1, [sp, #0x0]
+ add r0, r6, #0x0
+ bl FUN_020584CC
+ add r0, r5, #0x0
+ bl FUN_02055410
+ b _020566EA
+_020566B0:
+ add r0, r6, #0x0
+ mov r7, #0x0
+ bl FUN_020584D4
+ str r0, [sp, #0x0]
+ ldr r1, [sp, #0x0]
+ add r0, r6, #0x0
+ bl FUN_020584CC
+ add r0, r5, #0x0
+ bl FUN_02055410
+ sub r1, r7, #0x1
+ add r0, r5, #0x0
+ add r2, r1, #0x0
+ bl FUN_0205543C
+ b _020566EA
+_020566D4:
+ add r0, r5, #0x0
+ mov r7, #0x50
+ bl FUN_020572D4
+ add r0, r5, #0x0
+ bl FUN_020557A4
+ add r0, r5, #0x0
+ mov r1, #0x2
+ bl FUN_0205540C
+_020566EA:
+ ldr r0, [sp, #0x0]
+ add r1, r7, #0x0
+ bl FUN_0205AFDC
+ add r2, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02056B5C
+ pop {r3-r7, pc}
+ nop
+_02056700: .word 0x00000601
+
+ thumb_func_start FUN_02056704
+FUN_02056704: ; 0x02056704
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_02055410
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_020572EC
+ cmp r0, #0x1
+ beq _0205673E
+ add r0, r6, #0x0
+ mov r1, #0x28
+ bl FUN_0205AFDC
+ add r2, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02056B5C
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ bl FUN_020584CC
+ add r0, r5, #0x0
+ bl FUN_02055410
+_0205673E:
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02056740
+FUN_02056740: ; 0x02056740
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ add r7, r1, #0x0
+ bl FUN_02056494
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ bl FUN_02055314
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ add r2, r6, #0x0
+ bl FUN_02056B74
+ add r4, r0, #0x0
+ mov r0, #0x4
+ tst r0, r4
+ beq _02056774
+ add r0, r6, #0x0
+ mov r1, #0x38
+ bl FUN_0205AFDC
+ str r0, [sp, #0x4]
+ b _020567C4
+_02056774:
+ mov r0, #0x40
+ tst r0, r4
+ beq _0205678C
+ add r0, r6, #0x0
+ mov r1, #0x0
+ bl FUN_0205AFDC
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ bl FUN_02055410
+ b _020567C4
+_0205678C:
+ cmp r4, #0x0
+ beq _020567BA
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ add r0, r6, #0x0
+ mov r1, #0x1c
+ bl FUN_0205AFDC
+ str r0, [sp, #0x4]
+ mov r0, #0x8
+ tst r0, r4
+ bne _020567AA
+ ldr r0, _020567E0 ; =0x00000601
+ bl FUN_020054C8
+_020567AA:
+ add r0, r7, #0x0
+ add r1, r6, #0x0
+ bl FUN_020584CC
+ add r0, r5, #0x0
+ bl FUN_02055410
+ b _020567C4
+_020567BA:
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02056438
+ str r0, [sp, #0x4]
+_020567C4:
+ ldr r0, [sp, #0x0]
+ cmp r0, #0x0
+ bne _020567D2
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_020556F4
+_020567D2:
+ ldr r2, [sp, #0x4]
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ bl FUN_02056B5C
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+_020567E0: .word 0x00000601
+
+ thumb_func_start FUN_020567E4
+FUN_020567E4: ; 0x020567E4
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r7, r1, #0x0
+ add r1, r3, #0x0
+ add r6, r0, #0x0
+ str r3, [sp, #0x4]
+ ldr r5, [sp, #0x20]
+ ldr r4, [sp, #0x24]
+ bl FUN_02056858
+ cmp r0, #0x3
+ bhi _02056854
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02056808: ; jump table (using 16-bit offset)
+ .short _02056810 - _02056808 - 2; case 0
+ .short _02056822 - _02056808 - 2; case 1
+ .short _02056834 - _02056808 - 2; case 2
+ .short _02056846 - _02056808 - 2; case 3
+_02056810:
+ ldr r2, [sp, #0x4]
+ add r0, r6, #0x0
+ add r1, r7, #0x0
+ add r3, r5, #0x0
+ str r4, [sp, #0x0]
+ bl FUN_02056914
+ add sp, #0x8
+ pop {r3-r7, pc}
+_02056822:
+ ldr r2, [sp, #0x4]
+ add r0, r6, #0x0
+ add r1, r7, #0x0
+ add r3, r5, #0x0
+ str r4, [sp, #0x0]
+ bl FUN_02056938
+ add sp, #0x8
+ pop {r3-r7, pc}
+_02056834:
+ ldr r2, [sp, #0x4]
+ add r0, r6, #0x0
+ add r1, r7, #0x0
+ add r3, r5, #0x0
+ str r4, [sp, #0x0]
+ bl FUN_02056A7C
+ add sp, #0x8
+ pop {r3-r7, pc}
+_02056846:
+ ldr r2, [sp, #0x4]
+ add r0, r6, #0x0
+ add r1, r7, #0x0
+ add r3, r5, #0x0
+ str r4, [sp, #0x0]
+ bl FUN_02056AB8
+_02056854:
+ add sp, #0x8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02056858
+FUN_02056858: ; 0x02056858
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_020568A8
+ add r4, r0, #0x0
+ bl FUN_02056874
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0205536C
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02056874
+FUN_02056874: ; 0x02056874
+ push {r3, lr}
+ cmp r0, #0x3
+ bhi _0205689E
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02056886: ; jump table (using 16-bit offset)
+ .short _0205688E - _02056886 - 2; case 0
+ .short _02056892 - _02056886 - 2; case 1
+ .short _02056896 - _02056886 - 2; case 2
+ .short _0205689A - _02056886 - 2; case 3
+_0205688E:
+ mov r0, #0x0
+ pop {r3, pc}
+_02056892:
+ mov r0, #0x1
+ pop {r3, pc}
+_02056896:
+ mov r0, #0x2
+ pop {r3, pc}
+_0205689A:
+ mov r0, #0x1
+ pop {r3, pc}
+_0205689E:
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_020568A8
+FUN_020568A8: ; 0x020568A8
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_02055408
+ add r6, r0, #0x0
+ mov r0, #0x0
+ mvn r0, r0
+ cmp r4, r0
+ bne _020568D8
+ cmp r6, #0x2
+ bge _020568CC
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_0205536C
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_020568CC:
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_0205536C
+ mov r0, #0x3
+ pop {r4-r6, pc}
+_020568D8:
+ add r0, r5, #0x0
+ bl FUN_020552F8
+ cmp r0, r4
+ beq _02056908
+ add r0, r5, #0x0
+ bl FUN_02055370
+ cmp r0, #0x1
+ beq _02056908
+ cmp r6, #0x2
+ bge _020568FC
+ add r0, r5, #0x0
+ mov r1, #0x2
+ bl FUN_0205536C
+ mov r0, #0x2
+ pop {r4-r6, pc}
+_020568FC:
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_0205536C
+ mov r0, #0x3
+ pop {r4-r6, pc}
+_02056908:
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_0205536C
+ mov r0, #0x1
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02056914
+FUN_02056914: ; 0x02056914
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_020584C4
+ mov r1, #0x0
+ bl FUN_0205AFDC
+ add r2, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02056B5C
+ add r0, r5, #0x0
+ bl FUN_02055410
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02056938
+FUN_02056938: ; 0x02056938
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ add r7, r2, #0x0
+ bl FUN_02056B74
+ add r4, r0, #0x0
+ mov r0, #0x4
+ tst r0, r4
+ beq _0205696A
+ add r0, r7, #0x0
+ mov r1, #0x38
+ bl FUN_0205AFDC
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ bl FUN_02056464
+ add r0, r5, #0x0
+ bl FUN_020572D4
+ add r0, r5, #0x0
+ bl FUN_020557A4
+ b _02056A6C
+_0205696A:
+ mov r0, #0x10
+ tst r0, r4
+ beq _020569BA
+ add r0, r5, #0x0
+ bl FUN_02055408
+ cmp r0, #0x3
+ blt _02056994
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ bl FUN_02056438
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ bl FUN_020557A4
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_0205569C
+ b _02056A6C
+_02056994:
+ add r0, r7, #0x0
+ mov r1, #0x1c
+ bl FUN_0205AFDC
+ str r0, [sp, #0x0]
+ mov r0, #0x8
+ tst r0, r4
+ bne _020569AA
+ ldr r0, _02056A78 ; =0x00000601
+ bl FUN_020054C8
+_020569AA:
+ add r0, r6, #0x0
+ add r1, r7, #0x0
+ bl FUN_020584CC
+ add r0, r5, #0x0
+ bl FUN_02055410
+ b _02056A6C
+_020569BA:
+ mov r0, #0x40
+ tst r0, r4
+ beq _020569EC
+ add r0, r6, #0x0
+ bl FUN_020584D4
+ add r4, r0, #0x0
+ mov r1, #0x0
+ bl FUN_0205AFDC
+ str r0, [sp, #0x0]
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ bl FUN_020584CC
+ add r0, r5, #0x0
+ bl FUN_02055410
+ mov r1, #0x0
+ mvn r1, r1
+ add r0, r5, #0x0
+ add r2, r1, #0x0
+ bl FUN_0205543C
+ b _02056A6C
+_020569EC:
+ cmp r4, #0x0
+ beq _02056A50
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r7, #0x0
+ bl FUN_020572EC
+ cmp r0, #0x0
+ bne _02056A24
+ add r0, r7, #0x0
+ mov r1, #0x1c
+ bl FUN_0205AFDC
+ str r0, [sp, #0x0]
+ mov r0, #0x8
+ tst r0, r4
+ bne _02056A14
+ ldr r0, _02056A78 ; =0x00000601
+ bl FUN_020054C8
+_02056A14:
+ add r0, r6, #0x0
+ add r1, r7, #0x0
+ bl FUN_020584CC
+ add r0, r5, #0x0
+ bl FUN_02055410
+ b _02056A6C
+_02056A24:
+ add r0, r6, #0x0
+ bl FUN_020584D4
+ add r4, r0, #0x0
+ mov r1, #0x0
+ bl FUN_0205AFDC
+ str r0, [sp, #0x0]
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ bl FUN_020584CC
+ add r0, r5, #0x0
+ bl FUN_02055410
+ mov r1, #0x0
+ mvn r1, r1
+ add r0, r5, #0x0
+ add r2, r1, #0x0
+ bl FUN_0205543C
+ b _02056A6C
+_02056A50:
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ bl FUN_02056438
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ bl FUN_02056464
+ add r0, r5, #0x0
+ bl FUN_020572D4
+ add r0, r5, #0x0
+ bl FUN_020557A4
+_02056A6C:
+ ldr r2, [sp, #0x0]
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02056B5C
+ pop {r3-r7, pc}
+ .balign 4
+_02056A78: .word 0x00000601
+
+ thumb_func_start FUN_02056A7C
+FUN_02056A7C: ; 0x02056A7C
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_02055410
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_020572EC
+ cmp r0, #0x1
+ beq _02056AB6
+ add r0, r6, #0x0
+ mov r1, #0x28
+ bl FUN_0205AFDC
+ add r2, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02056B5C
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ bl FUN_020584CC
+ add r0, r5, #0x0
+ bl FUN_02055410
+_02056AB6:
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02056AB8
+FUN_02056AB8: ; 0x02056AB8
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ add r7, r1, #0x0
+ bl FUN_02056494
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ bl FUN_02055314
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ add r2, r6, #0x0
+ bl FUN_02056B74
+ add r4, r0, #0x0
+ mov r0, #0x4
+ tst r0, r4
+ beq _02056AEC
+ add r0, r6, #0x0
+ mov r1, #0x38
+ bl FUN_0205AFDC
+ str r0, [sp, #0x4]
+ b _02056B3C
+_02056AEC:
+ mov r0, #0x40
+ tst r0, r4
+ beq _02056B04
+ add r0, r6, #0x0
+ mov r1, #0x0
+ bl FUN_0205AFDC
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ bl FUN_02055410
+ b _02056B3C
+_02056B04:
+ cmp r4, #0x0
+ beq _02056B32
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ add r0, r6, #0x0
+ mov r1, #0x1c
+ bl FUN_0205AFDC
+ str r0, [sp, #0x4]
+ mov r0, #0x8
+ tst r0, r4
+ bne _02056B22
+ ldr r0, _02056B58 ; =0x00000601
+ bl FUN_020054C8
+_02056B22:
+ add r0, r7, #0x0
+ add r1, r6, #0x0
+ bl FUN_020584CC
+ add r0, r5, #0x0
+ bl FUN_02055410
+ b _02056B3C
+_02056B32:
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02056438
+ str r0, [sp, #0x4]
+_02056B3C:
+ ldr r0, [sp, #0x0]
+ cmp r0, #0x0
+ bne _02056B4A
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_020556F4
+_02056B4A:
+ ldr r2, [sp, #0x4]
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ bl FUN_02056B5C
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+_02056B58: .word 0x00000601
+
+ thumb_func_start FUN_02056B5C
+FUN_02056B5C: ; 0x02056B5C
+ push {r3-r5, lr}
+ add r4, r2, #0x0
+ add r5, r1, #0x0
+ add r1, r4, #0x0
+ bl FUN_02055460
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0205ADDC
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02056B74
+FUN_02056B74: ; 0x02056B74
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ add r7, r2, #0x0
+ mov r4, #0x0
+ bl FUN_02056C0C
+ mov r1, #0xa
+ str r0, [sp, #0x0]
+ tst r0, r1
+ beq _02056BA0
+ mov r0, #0x1
+ orr r4, r0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r7, #0x0
+ bl FUN_02056D58
+ cmp r0, #0x0
+ beq _02056BA0
+ mov r0, #0x8
+ orr r4, r0
+_02056BA0:
+ ldr r0, [sp, #0x0]
+ mov r1, #0x4
+ tst r0, r1
+ beq _02056BAC
+ mov r0, #0x2
+ orr r4, r0
+_02056BAC:
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r7, #0x0
+ bl FUN_02056CCC
+ cmp r0, #0x0
+ beq _02056BBE
+ mov r0, #0x4
+ orr r4, r0
+_02056BBE:
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r7, #0x0
+ bl FUN_02056E04
+ cmp r0, #0x1
+ bne _02056BD0
+ mov r0, #0x10
+ orr r4, r0
+_02056BD0:
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r7, #0x0
+ bl FUN_02056E6C
+ cmp r0, #0x1
+ bne _02056BE2
+ mov r0, #0x20
+ orr r4, r0
+_02056BE2:
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r7, #0x0
+ bl FUN_02056EC8
+ cmp r0, #0x1
+ bne _02056BF4
+ mov r0, #0x41
+ orr r4, r0
+_02056BF4:
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r7, #0x0
+ bl FUN_02056F78
+ cmp r0, #0x1
+ bne _02056C06
+ mov r0, #0x1
+ orr r4, r0
+_02056C06:
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02056C0C
+FUN_02056C0C: ; 0x02056C0C
+ push {r3-r7, lr}
+ sub sp, #0x28
+ add r5, r1, #0x0
+ str r2, [sp, #0x4]
+ add r0, r5, #0x0
+ bl FUN_02058B2C
+ add r7, r0, #0x0
+ ldr r0, [sp, #0x4]
+ bl FUN_02059BF4
+ str r0, [sp, #0x14]
+ add r0, r5, #0x0
+ bl FUN_02058B3C
+ str r0, [sp, #0x8]
+ add r0, r5, #0x0
+ bl FUN_02058B4C
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x4]
+ bl FUN_02059C00
+ str r0, [sp, #0x10]
+ add r0, r5, #0x0
+ add r1, sp, #0x1c
+ bl FUN_02058B5C
+ ldr r1, [sp, #0x14]
+ ldr r6, [sp, #0xc]
+ ldr r3, [sp, #0x10]
+ ldr r2, [sp, #0x8]
+ add r0, r5, #0x0
+ add r1, r7, r1
+ add r3, r6, r3
+ mov r4, #0x0
+ bl FUN_02059A08
+ cmp r0, #0x1
+ bne _02056C60
+ mov r0, #0x1
+ orr r4, r0
+_02056C60:
+ add r0, r5, #0x0
+ bl FUN_02058738
+ ldr r2, [sp, #0x14]
+ add r1, sp, #0x18
+ str r1, [sp, #0x0]
+ ldr r6, [sp, #0xc]
+ ldr r3, [sp, #0x10]
+ add r1, sp, #0x1c
+ add r2, r7, r2
+ add r3, r6, r3
+ bl FUN_0204A7C8
+ cmp r0, #0x1
+ bne _02056C90
+ mov r0, #0x2
+ orr r4, r0
+ add r1, sp, #0x18
+ mov r0, #0x0
+ ldrsb r0, [r1, r0]
+ cmp r0, #0x0
+ beq _02056C90
+ mov r0, #0x8
+ orr r4, r0
+_02056C90:
+ ldr r3, [sp, #0xc]
+ ldr r2, [sp, #0x10]
+ ldr r1, [sp, #0x14]
+ add r2, r3, r2
+ ldr r3, [sp, #0x4]
+ add r0, r5, #0x0
+ add r1, r7, r1
+ bl FUN_02059A60
+ cmp r0, #0x1
+ bne _02056CAA
+ mov r0, #0x2
+ orr r4, r0
+_02056CAA:
+ add r0, r5, #0x0
+ ldr r1, [sp, #0x14]
+ ldr r5, [sp, #0xc]
+ ldr r3, [sp, #0x10]
+ ldr r2, [sp, #0x8]
+ add r1, r7, r1
+ add r3, r5, r3
+ bl FUN_0205995C
+ cmp r0, #0x1
+ bne _02056CC4
+ mov r0, #0x4
+ orr r4, r0
+_02056CC4:
+ add r0, r4, #0x0
+ add sp, #0x28
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02056CCC
+FUN_02056CCC: ; 0x02056CCC
+ push {r3-r7, lr}
+ mov r0, #0x0
+ add r4, r2, #0x0
+ mvn r0, r0
+ add r5, r1, #0x0
+ cmp r4, r0
+ beq _02056D54
+ add r0, r5, #0x0
+ bl FUN_02058738
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ bl FUN_02058B2C
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02059BF4
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058B4C
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02059C00
+ add r2, r0, #0x0
+ ldr r0, [sp, #0x0]
+ add r1, r6, r7
+ add r2, r5, r2
+ bl FUN_0204A6E0
+ cmp r4, #0x3
+ bhi _02056D54
+ add r1, r4, r4
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02056D1C: ; jump table (using 16-bit offset)
+ .short _02056D24 - _02056D1C - 2; case 0
+ .short _02056D30 - _02056D1C - 2; case 1
+ .short _02056D3C - _02056D1C - 2; case 2
+ .short _02056D48 - _02056D1C - 2; case 3
+_02056D24:
+ bl FUN_02054848
+ cmp r0, #0x1
+ bne _02056D54
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02056D30:
+ bl FUN_02054854
+ cmp r0, #0x1
+ bne _02056D54
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02056D3C:
+ bl FUN_02054860
+ cmp r0, #0x1
+ bne _02056D54
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02056D48:
+ bl FUN_0205486C
+ cmp r0, #0x1
+ bne _02056D54
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02056D54:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02056D58
+FUN_02056D58: ; 0x02056D58
+ push {r3-r7, lr}
+ mov r0, #0x0
+ add r4, r2, #0x0
+ mvn r0, r0
+ add r5, r1, #0x0
+ cmp r4, r0
+ beq _02056E00
+ add r0, r5, #0x0
+ bl FUN_02058738
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058B2C
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058B4C
+ str r0, [sp, #0x0]
+ ldr r2, [sp, #0x0]
+ add r0, r7, #0x0
+ add r1, r6, #0x0
+ bl FUN_0204A6E0
+ add r5, r0, #0x0
+ cmp r4, #0x3
+ bhi _02056DD8
+ add r1, r4, r4
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02056D9A: ; jump table (using 16-bit offset)
+ .short _02056DA2 - _02056D9A - 2; case 0
+ .short _02056DAE - _02056D9A - 2; case 1
+ .short _02056DBC - _02056D9A - 2; case 2
+ .short _02056DCA - _02056D9A - 2; case 3
+_02056DA2:
+ bl FUN_020547D4
+ cmp r0, #0x1
+ bne _02056DAE
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02056DAE:
+ add r0, r5, #0x0
+ bl FUN_020547E0
+ cmp r0, #0x1
+ bne _02056DBC
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02056DBC:
+ add r0, r5, #0x0
+ bl FUN_020547C8
+ cmp r0, #0x1
+ bne _02056DCA
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02056DCA:
+ add r0, r5, #0x0
+ bl FUN_020547BC
+ cmp r0, #0x1
+ bne _02056DD8
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02056DD8:
+ add r0, r4, #0x0
+ bl FUN_02059BF4
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02059C00
+ add r3, r0, #0x0
+ ldr r2, [sp, #0x0]
+ add r0, r7, #0x0
+ add r1, r6, r5
+ add r2, r2, r3
+ bl FUN_0204A6E0
+ bl FUN_020547B0
+ cmp r0, #0x1
+ bne _02056E00
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02056E00:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02056E04
+FUN_02056E04: ; 0x02056E04
+ push {r3-r7, lr}
+ mov r0, #0x0
+ add r5, r2, #0x0
+ mvn r0, r0
+ add r4, r1, #0x0
+ cmp r5, r0
+ beq _02056E68
+ add r0, r4, #0x0
+ bl FUN_02058738
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ bl FUN_02058B2C
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02059BF4
+ add r7, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02058B4C
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02059C00
+ add r2, r0, #0x0
+ ldr r0, [sp, #0x0]
+ add r1, r6, r7
+ add r2, r4, r2
+ bl FUN_0204A6E0
+ add r4, r0, #0x0
+ cmp r5, #0x3
+ bne _02056E56
+ bl FUN_02054A24
+ cmp r0, #0x0
+ beq _02056E56
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02056E56:
+ cmp r5, #0x2
+ bne _02056E68
+ add r0, r4, #0x0
+ bl FUN_02054A30
+ cmp r0, #0x0
+ beq _02056E68
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02056E68:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02056E6C
+FUN_02056E6C: ; 0x02056E6C
+ push {r3-r7, lr}
+ sub sp, #0x8
+ mov r0, #0x0
+ add r4, r2, #0x0
+ mvn r0, r0
+ add r5, r1, #0x0
+ cmp r4, r0
+ beq _02056EC2
+ add r0, r5, #0x0
+ bl FUN_02058738
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ bl FUN_02058B2C
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02059BF4
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058B4C
+ str r0, [sp, #0x4]
+ add r0, r4, #0x0
+ bl FUN_02059C00
+ add r3, r0, #0x0
+ ldr r2, [sp, #0x4]
+ ldr r0, [sp, #0x0]
+ add r1, r6, r7
+ add r2, r2, r3
+ bl FUN_0204A6E0
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02059AC4
+ cmp r0, #0x0
+ beq _02056EC2
+ add sp, #0x8
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02056EC2:
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02056EC8
+FUN_02056EC8: ; 0x02056EC8
+ push {r4-r7, lr}
+ sub sp, #0xc
+ str r0, [sp, #0x0]
+ mov r0, #0x0
+ add r4, r2, #0x0
+ mvn r0, r0
+ add r5, r1, #0x0
+ cmp r4, r0
+ beq _02056F72
+ add r0, r5, #0x0
+ bl FUN_02058738
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ bl FUN_02058B2C
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02059BF4
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058B4C
+ str r0, [sp, #0x8]
+ add r0, r4, #0x0
+ bl FUN_02059C00
+ add r2, r0, #0x0
+ ldr r3, [sp, #0x8]
+ ldr r0, [sp, #0x4]
+ add r1, r6, r7
+ add r2, r3, r2
+ bl FUN_0204A6E0
+ add r6, r0, #0x0
+ ldr r0, [sp, #0x0]
+ bl FUN_020553C4
+ cmp r0, #0x1
+ bne _02056F54
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02059BB4
+ cmp r0, #0x1
+ bne _02056F36
+ cmp r4, #0x1
+ bls _02056F30
+ add sp, #0xc
+ mov r0, #0x1
+ pop {r4-r7, pc}
+_02056F30:
+ add sp, #0xc
+ mov r0, #0x0
+ pop {r4-r7, pc}
+_02056F36:
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02059BD4
+ cmp r0, #0x1
+ bne _02056F72
+ sub r0, r4, #0x2
+ cmp r0, #0x1
+ bls _02056F4E
+ add sp, #0xc
+ mov r0, #0x1
+ pop {r4-r7, pc}
+_02056F4E:
+ add sp, #0xc
+ mov r0, #0x0
+ pop {r4-r7, pc}
+_02056F54:
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02059BB4
+ cmp r0, #0x1
+ beq _02056F6C
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02059BD4
+ cmp r0, #0x1
+ bne _02056F72
+_02056F6C:
+ add sp, #0xc
+ mov r0, #0x1
+ pop {r4-r7, pc}
+_02056F72:
+ mov r0, #0x0
+ add sp, #0xc
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_02056F78
+FUN_02056F78: ; 0x02056F78
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r1, #0x0
+ mov r1, #0x0
+ add r4, r2, #0x0
+ mvn r1, r1
+ cmp r4, r1
+ beq _0205701A
+ bl FUN_020553C4
+ cmp r0, #0x1
+ bne _0205701A
+ add r0, r5, #0x0
+ bl FUN_02058738
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ bl FUN_02058B2C
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02059BF4
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058B4C
+ str r0, [sp, #0x4]
+ add r0, r4, #0x0
+ bl FUN_02059C00
+ add r3, r0, #0x0
+ ldr r2, [sp, #0x4]
+ ldr r0, [sp, #0x0]
+ add r1, r6, r7
+ add r2, r2, r3
+ bl FUN_0204A6E0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02059AC4
+ cmp r0, #0x0
+ beq _02056FD8
+ add sp, #0x8
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02056FD8:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02059B2C
+ cmp r0, #0x0
+ beq _02056FEA
+ add sp, #0x8
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02056FEA:
+ add r0, r4, #0x0
+ bl FUN_02054798
+ cmp r0, #0x0
+ beq _02056FFA
+ add sp, #0x8
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02056FFA:
+ add r0, r4, #0x0
+ bl FUN_02054974
+ cmp r0, #0x0
+ beq _0205700A
+ add sp, #0x8
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0205700A:
+ add r0, r4, #0x0
+ bl FUN_02054990
+ cmp r0, #0x0
+ beq _0205701A
+ add sp, #0x8
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0205701A:
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02057020
+FUN_02057020: ; 0x02057020
+ ldr r3, _02057024 ; =FUN_02057060
+ bx r3
+ .balign 4
+_02057024: .word FUN_02057060
+
+ thumb_func_start FUN_02057028
+FUN_02057028: ; 0x02057028
+ mov r1, #0x20
+ tst r1, r0
+ beq _02057032
+ mov r0, #0x2
+ bx lr
+_02057032:
+ mov r1, #0x10
+ tst r0, r1
+ beq _0205703C
+ mov r1, #0x3
+ b _0205703E
+_0205703C:
+ sub r1, #0x11
+_0205703E:
+ add r0, r1, #0x0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02057044
+FUN_02057044: ; 0x02057044
+ mov r1, #0x40
+ tst r1, r0
+ beq _0205704E
+ mov r0, #0x0
+ bx lr
+_0205704E:
+ mov r1, #0x80
+ tst r0, r1
+ beq _02057058
+ mov r1, #0x1
+ b _0205705A
+_02057058:
+ sub r1, #0x81
+_0205705A:
+ add r0, r1, #0x0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02057060
+FUN_02057060: ; 0x02057060
+ push {r3-r7, lr}
+ add r5, r2, #0x0
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02057028
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02057044
+ mov r1, #0x0
+ mvn r1, r1
+ add r5, r0, #0x0
+ cmp r4, r1
+ beq _020570C0
+ cmp r5, r1
+ bne _02057086
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+_02057086:
+ add r0, r6, #0x0
+ bl FUN_02055314
+ add r7, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_02055430
+ str r0, [sp, #0x0]
+ add r0, r6, #0x0
+ bl FUN_02055438
+ mov r1, #0x0
+ mvn r1, r1
+ cmp r7, r1
+ beq _020570BE
+ ldr r1, [sp, #0x0]
+ cmp r4, r1
+ bne _020570B2
+ cmp r5, r0
+ bne _020570B2
+ add r0, r7, #0x0
+ pop {r3-r7, pc}
+_020570B2:
+ cmp r5, r0
+ beq _020570BA
+ add r0, r5, #0x0
+ pop {r3-r7, pc}
+_020570BA:
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+_020570BE:
+ add r0, r5, #0x0
+_020570C0:
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020570C4
+FUN_020570C4: ; 0x020570C4
+ push {r4, lr}
+ bl FUN_020553A0
+ add r4, r0, #0x0
+ bl FUN_0205AD98
+ cmp r0, #0x1
+ bne _020570D8
+ mov r0, #0x1
+ pop {r4, pc}
+_020570D8:
+ add r0, r4, #0x0
+ bl FUN_020586F0
+ bl FUN_020570F0
+ cmp r0, #0x1
+ bne _020570EA
+ mov r0, #0x1
+ pop {r4, pc}
+_020570EA:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020570F0
+FUN_020570F0: ; 0x020570F0
+ sub r0, #0x1c
+ cmp r0, #0x3
+ bhi _0205710E
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02057102: ; jump table (using 16-bit offset)
+ .short _0205710A - _02057102 - 2; case 0
+ .short _0205710A - _02057102 - 2; case 1
+ .short _0205710A - _02057102 - 2; case 2
+ .short _0205710A - _02057102 - 2; case 3
+_0205710A:
+ mov r0, #0x1
+ bx lr
+_0205710E:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02057114
+FUN_02057114: ; 0x02057114
+ mov r0, #0x2
+ tst r0, r1
+ beq _0205711E
+ mov r0, #0x1
+ bx lr
+_0205711E:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02057124
+FUN_02057124: ; 0x02057124
+ push {r3, lr}
+ bl FUN_02055464
+ sub r0, #0x58
+ cmp r0, #0x3
+ bhi _02057148
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0205713C: ; jump table (using 16-bit offset)
+ .short _02057144 - _0205713C - 2; case 0
+ .short _02057144 - _0205713C - 2; case 1
+ .short _02057144 - _0205713C - 2; case 2
+ .short _02057144 - _0205713C - 2; case 3
+_02057144:
+ mov r0, #0x1
+ pop {r3, pc}
+_02057148:
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205714C
+FUN_0205714C: ; 0x0205714C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_020553C4
+ cmp r0, #0x0
+ beq _02057162
+ cmp r0, #0x1
+ beq _02057172
+ cmp r0, #0x2
+ bne _02057188
+_02057162:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02056244
+ bl FUN_020561EC
+ add r4, r0, #0x0
+ b _0205718E
+_02057172:
+ add r0, r5, #0x0
+ bl FUN_020554BC
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_020568A8
+ bl FUN_02056874
+ add r4, r0, #0x0
+ b _0205718E
+_02057188:
+ mov r4, #0x0
+ bl ErrorHandling
+_0205718E:
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02057194
+FUN_02057194: ; 0x02057194
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r7, r2, #0x0
+ add r6, r3, #0x0
+ bl FUN_02057060
+ str r0, [sp, #0x0]
+ ldr r1, [sp, #0x0]
+ add r0, r5, #0x0
+ bl FUN_0205714C
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0205536C
+ cmp r4, #0x0
+ bne _020571C6
+ add r0, r5, #0x0
+ bl FUN_020552F8
+ mov r1, #0x0
+ bl FUN_0205AFDC
+ pop {r3-r7, pc}
+_020571C6:
+ cmp r4, #0x2
+ bne _020571D4
+ ldr r0, [sp, #0x0]
+ mov r1, #0x28
+ bl FUN_0205AFDC
+ pop {r3-r7, pc}
+_020571D4:
+ add r0, r5, #0x0
+ bl FUN_020553A0
+ ldr r0, [sp, #0x1c]
+ mov r4, #0x4
+ add r1, r0, #0x0
+ tst r1, r4
+ beq _020571E8
+ mov r4, #0x38
+ b _02057244
+_020571E8:
+ cmp r0, #0x0
+ beq _020571FC
+ mov r1, #0x8
+ mov r4, #0x1c
+ tst r0, r1
+ bne _02057244
+ ldr r0, _02057250 ; =0x00000601
+ bl FUN_020054C8
+ b _02057244
+_020571FC:
+ cmp r6, #0x5
+ bhi _0205722E
+ add r0, r6, r6
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0205720C: ; jump table (using 16-bit offset)
+ .short _02057218 - _0205720C - 2; case 0
+ .short _0205721A - _0205720C - 2; case 1
+ .short _0205721E - _0205720C - 2; case 2
+ .short _02057222 - _0205720C - 2; case 3
+ .short _02057226 - _0205720C - 2; case 4
+ .short _0205722A - _0205720C - 2; case 5
+_02057218:
+ b _02057230
+_0205721A:
+ mov r4, #0x8
+ b _02057230
+_0205721E:
+ mov r4, #0xc
+ b _02057230
+_02057222:
+ mov r4, #0x4c
+ b _02057230
+_02057226:
+ mov r4, #0x10
+ b _02057230
+_0205722A:
+ mov r4, #0x14
+ b _02057230
+_0205722E:
+ mov r4, #0x4
+_02057230:
+ ldr r0, [sp, #0x18]
+ cmp r0, #0x1
+ bne _02057244
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ bl FUN_02057114
+ cmp r0, #0x1
+ bne _02057244
+ mov r4, #0x58
+_02057244:
+ ldr r0, [sp, #0x0]
+ add r1, r4, #0x0
+ bl FUN_0205AFDC
+ pop {r3-r7, pc}
+ nop
+_02057250: .word 0x00000601
+
+ thumb_func_start FUN_02057254
+FUN_02057254: ; 0x02057254
+ push {r3, lr}
+ bl FUN_020553A0
+ bl FUN_0205AD98
+ pop {r3, pc}
+
+ thumb_func_start FUN_02057260
+FUN_02057260: ; 0x02057260
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_020553A0
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_02056B5C
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02057278
+FUN_02057278: ; 0x02057278
+ push {r4, lr}
+ add r4, r1, #0x0
+ bl FUN_020553A0
+ add r1, r4, #0x0
+ bl FUN_02059C90
+ pop {r4, pc}
+
+ thumb_func_start FUN_02057288
+FUN_02057288: ; 0x02057288
+ push {r3-r7, lr}
+ add r5, r1, #0x0
+ str r0, [sp, #0x0]
+ add r4, r2, #0x0
+ add r7, r3, #0x0
+ bl FUN_02055320
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02059BF4
+ add r0, r6, r0
+ str r0, [r4, #0x0]
+ ldr r0, [sp, #0x0]
+ bl FUN_0205532C
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02059C00
+ add r0, r4, r0
+ str r0, [r7, #0x0]
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020572B8
+FUN_020572B8: ; 0x020572B8
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_020552F8
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r2, r4, #0x0
+ add r3, r6, #0x0
+ bl FUN_02057288
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_020572D4
+FUN_020572D4: ; 0x020572D4
+ push {r3, lr}
+ bl FUN_020553A0
+ bl FUN_02058738
+ ldr r0, [r0, #0xc]
+ bl FUN_02029FC8
+ mov r1, #0x5
+ bl FUN_0202A0E8
+ pop {r3, pc}
+
+ thumb_func_start FUN_020572EC
+FUN_020572EC: ; 0x020572EC
+ push {r4-r6, lr}
+ mov r0, #0x0
+ add r4, r2, #0x0
+ mvn r0, r0
+ add r5, r1, #0x0
+ cmp r4, r0
+ beq _02057336
+ add r0, r5, #0x0
+ bl FUN_02058720
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02059BB4
+ cmp r0, #0x1
+ bne _0205731C
+ cmp r4, #0x1
+ bls _02057318
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_02057318:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_0205731C:
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02059BD4
+ cmp r0, #0x1
+ bne _02057336
+ sub r0, r4, #0x2
+ cmp r0, #0x1
+ bls _02057332
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_02057332:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_02057336:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205733C
+FUN_0205733C: ; 0x0205733C
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ mov r1, #0x0
+ mvn r1, r1
+ add r5, r0, #0x0
+ cmp r2, r1
+ beq _0205734E
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0205734E:
+ bl FUN_020553C4
+ cmp r0, #0x1
+ beq _0205735A
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0205735A:
+ add r0, r5, #0x0
+ bl FUN_02055738
+ cmp r0, #0x0
+ bne _02057368
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_02057368:
+ add r0, r5, #0x0
+ bl FUN_020553A0
+ add r1, r4, #0x0
+ bl FUN_02059B94
+ cmp r0, #0x1
+ bne _0205737C
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0205737C:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02057380
+FUN_02057380: ; 0x02057380
+ push {r3-r7, lr}
+ add r5, r1, #0x0
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ add r7, r2, #0x0
+ bl FUN_02057444
+ add r4, r0, #0x0
+ add r1, r6, #0x0
+ bl FUN_020583E0
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ bl FUN_02058364
+ add r0, r4, #0x0
+ add r1, r7, #0x0
+ bl FUN_02058398
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020573AC
+FUN_020573AC: ; 0x020573AC
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_020583CC
+ add r1, r0, #0x0
+ mov r0, #0xb
+ bl FUN_02016A8C
+ mov r0, #0xb
+ add r1, r4, #0x0
+ bl FUN_02016A8C
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020573C8
+FUN_020573C8: ; 0x020573C8
+ push {r3-r7, lr}
+ sub sp, #0x8
+ str r0, [sp, #0x0]
+ add r5, r2, #0x0
+ str r3, [sp, #0x4]
+ ldr r7, [sp, #0x20]
+ bl FUN_02058368
+ add r6, r0, #0x0
+ ldr r0, [sp, #0x0]
+ bl FUN_020583CC
+ add r4, r0, #0x0
+ cmp r6, #0x0
+ beq _02057430
+_020573E6:
+ add r0, r4, #0x0
+ bl FUN_02058830
+ cmp r0, #0x1
+ bne _02057426
+ ldr r2, [sp, #0x4]
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ add r3, r7, #0x0
+ bl FUN_02057F90
+ cmp r0, #0x0
+ beq _02057408
+ cmp r0, #0x1
+ beq _02057426
+ cmp r0, #0x2
+ b _02057426
+_02057408:
+ add r0, r4, #0x0
+ bl FUN_02058450
+ cmp r5, r0
+ beq _02057426
+ mov r1, #0x1
+ add r0, r4, #0x0
+ lsl r1, r1, #0xa
+ bl FUN_0205842C
+ cmp r0, #0x0
+ bne _02057426
+ add r0, r4, #0x0
+ bl FUN_02057654
+_02057426:
+ mov r0, #0x4a
+ lsl r0, r0, #0x2
+ add r4, r4, r0
+ sub r6, r6, #0x1
+ bne _020573E6
+_02057430:
+ ldr r0, [sp, #0x0]
+ bl FUN_020583A0
+ add r1, r0, #0x0
+ ldr r0, [sp, #0x0]
+ bl FUN_021F2AF4
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02057444
+FUN_02057444: ; 0x02057444
+ push {r4-r6, lr}
+ mov r1, #0x4b
+ add r4, r0, #0x0
+ mov r0, #0xb
+ lsl r1, r1, #0x2
+ bl FUN_02016998
+ add r5, r0, #0x0
+ bne _0205745A
+ bl ErrorHandling
+_0205745A:
+ mov r2, #0x4b
+ add r0, r5, #0x0
+ mov r1, #0x0
+ lsl r2, r2, #0x2
+ blx FUN_020DF4A4
+ mov r0, #0x4a
+ lsl r0, r0, #0x2
+ add r6, r4, #0x0
+ mul r6, r0
+ mov r0, #0xb
+ add r1, r6, #0x0
+ bl FUN_02016998
+ add r4, r0, #0x0
+ bne _0205747E
+ bl ErrorHandling
+_0205747E:
+ add r0, r4, #0x0
+ mov r1, #0x0
+ add r2, r6, #0x0
+ blx FUN_020DF4A4
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_020583B4
+ add r0, r5, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02057494
+FUN_02057494: ; 0x02057494
+ push {r3-r7, lr}
+ add r6, r1, #0x0
+ add r5, r0, #0x0
+ add r0, r6, #0x0
+ add r7, r2, #0x0
+ bl FUN_02058BFC
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_02058CE0
+ cmp r0, #0x0
+ bne _020574C8
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r7, #0x0
+ bl FUN_02057C98
+ add r4, r0, #0x0
+ beq _020574E8
+ add r1, r6, #0x0
+ add r2, r7, #0x0
+ bl FUN_02058214
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+_020574C8:
+ add r0, r6, #0x0
+ bl FUN_02058CFC
+ add r2, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02058010
+ add r4, r0, #0x0
+ beq _020574E8
+ add r1, r7, #0x0
+ add r2, r6, #0x0
+ bl FUN_02058258
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+_020574E8:
+ add r0, r5, #0x0
+ bl FUN_02057C64
+ add r4, r0, #0x0
+ beq _0205753A
+ add r0, r5, #0x0
+ bl FUN_020583E8
+ add r2, r0, #0x0
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ bl FUN_02057D2C
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ bl FUN_02057E90
+ add r0, r4, #0x0
+ add r1, r7, #0x0
+ bl FUN_0205844C
+ add r0, r4, #0x0
+ bl FUN_020581A4
+ add r0, r4, #0x0
+ bl FUN_020581B4
+ add r0, r4, #0x0
+ mov r1, #0x4
+ bl FUN_02058410
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02057CF0
+ add r0, r5, #0x0
+ bl FUN_02058360
+ bl FUN_0205836C
+ add r0, r4, #0x0
+_0205753A:
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0205753C
+FUN_0205753C: ; 0x0205753C
+ push {r3-r7, lr}
+ sub sp, #0x20
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r0, sp, #0x0
+ mov r1, #0x0
+ add r6, r2, #0x0
+ add r7, r3, #0x0
+ bl FUN_02058BF8
+ ldr r1, [sp, #0x38]
+ add r0, sp, #0x0
+ bl FUN_02058C00
+ ldr r1, [sp, #0x3c]
+ add r0, sp, #0x0
+ bl FUN_02058C08
+ add r0, sp, #0x0
+ mov r1, #0x0
+ bl FUN_02058C10
+ add r0, sp, #0x0
+ mov r1, #0x0
+ bl FUN_02058C18
+ add r0, sp, #0x0
+ mov r1, #0x0
+ bl FUN_02058C20
+ add r0, sp, #0x0
+ add r1, r7, #0x0
+ bl FUN_02058C28
+ mov r1, #0x0
+ add r0, sp, #0x0
+ add r2, r1, #0x0
+ bl FUN_02058C34
+ add r0, sp, #0x0
+ mov r1, #0x0
+ mov r2, #0x1
+ bl FUN_02058C34
+ add r0, sp, #0x0
+ mov r1, #0x0
+ mov r2, #0x2
+ bl FUN_02058C34
+ add r0, sp, #0x0
+ mov r1, #0x0
+ bl FUN_02058C7C
+ add r0, sp, #0x0
+ mov r1, #0x0
+ bl FUN_02058C88
+ add r0, sp, #0x0
+ add r1, r4, #0x0
+ bl FUN_02058C94
+ add r0, sp, #0x0
+ add r1, r6, #0x0
+ bl FUN_02058CA4
+ add r0, sp, #0x0
+ mov r1, #0x0
+ bl FUN_02058C9C
+ ldr r2, [sp, #0x40]
+ add r0, r5, #0x0
+ add r1, sp, #0x0
+ bl FUN_02057494
+ add sp, #0x20
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_020575D4
+FUN_020575D4: ; 0x020575D4
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r0, r1, #0x0
+ add r1, r2, #0x0
+ ldr r2, [sp, #0x18]
+ add r7, r3, #0x0
+ mov r4, #0x0
+ bl FUN_02058CAC
+ str r0, [sp, #0x0]
+ cmp r0, #0x0
+ beq _02057610
+ bl FUN_02058C1C
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_020583E8
+ lsl r1, r6, #0x10
+ lsr r1, r1, #0x10
+ bl FUN_02039528
+ cmp r0, #0x0
+ bne _02057610
+ ldr r1, [sp, #0x0]
+ add r0, r5, #0x0
+ add r2, r7, #0x0
+ bl FUN_02057494
+ add r4, r0, #0x0
+_02057610:
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02057614
+FUN_02057614: ; 0x02057614
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02058454
+ add r0, r4, #0x0
+ bl FUN_02058148
+ mov r1, #0x1
+ add r0, r4, #0x0
+ lsl r1, r1, #0xe
+ bl FUN_02058418
+ add r0, r4, #0x0
+ bl FUN_020581B4
+ pop {r4, pc}
+
+ thumb_func_start FUN_02057634
+FUN_02057634: ; 0x02057634
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_02058934
+ cmp r0, #0x1
+ bne _02057648
+ add r0, r5, #0x0
+ bl FUN_020576A8
+_02057648:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02057614
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02057654
+FUN_02057654: ; 0x02057654
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02058578
+ bl FUN_020587E0
+ cmp r0, #0x1
+ bne _0205766A
+ add r0, r4, #0x0
+ bl FUN_020586B4
+_0205766A:
+ add r0, r4, #0x0
+ bl FUN_02058660
+ add r0, r4, #0x0
+ bl FUN_02058564
+ add r0, r4, #0x0
+ bl FUN_02058580
+ bl FUN_02058374
+ add r0, r4, #0x0
+ bl FUN_02057F80
+ pop {r4, pc}
+
+ thumb_func_start FUN_02057688
+FUN_02057688: ; 0x02057688
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl FUN_02058490
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02058738
+ lsl r1, r5, #0x10
+ lsr r1, r1, #0x10
+ bl FUN_0203953C
+ add r0, r4, #0x0
+ bl FUN_02057654
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_020576A8
+FUN_020576A8: ; 0x020576A8
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02058578
+ bl FUN_020587E0
+ cmp r0, #0x1
+ bne _020576D6
+ mov r1, #0x1
+ add r0, r4, #0x0
+ lsl r1, r1, #0xe
+ bl FUN_02058424
+ cmp r0, #0x0
+ beq _020576CC
+ add r0, r4, #0x0
+ bl FUN_020586B4
+_020576CC:
+ mov r1, #0x1
+ add r0, r4, #0x0
+ lsl r1, r1, #0xe
+ bl FUN_02058418
+_020576D6:
+ ldr r1, _02057708 ; =0x0000FFFF
+ add r0, r4, #0x0
+ bl FUN_02058454
+ ldr r1, _0205770C ; =FUN_02058ED8
+ add r0, r4, #0x0
+ bl FUN_02058684
+ ldr r1, _02057710 ; =FUN_02058EDC
+ add r0, r4, #0x0
+ bl FUN_02058698
+ ldr r1, _02057710 ; =FUN_02058EDC
+ add r0, r4, #0x0
+ bl FUN_020586AC
+ ldr r1, _02057714 ; =FUN_02058EE0
+ add r0, r4, #0x0
+ bl FUN_020586C0
+ ldr r1, _02057718 ; =FUN_02058EE4
+ add r0, r4, #0x0
+ bl FUN_020586D4
+ pop {r4, pc}
+ .balign 4
+_02057708: .word 0x0000FFFF
+_0205770C: .word FUN_02058ED8
+_02057710: .word FUN_02058EDC
+_02057714: .word FUN_02058EE0
+_02057718: .word FUN_02058EE4
+
+ thumb_func_start FUN_0205771C
+FUN_0205771C: ; 0x0205771C
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ mov r4, #0x0
+ bl FUN_02058368
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_020583CC
+ mov r7, #0x4a
+ add r5, r0, #0x0
+ lsl r7, r7, #0x2
+_02057734:
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_02058424
+ cmp r0, #0x0
+ beq _02057746
+ add r0, r5, #0x0
+ bl FUN_02057654
+_02057746:
+ add r4, r4, #0x1
+ add r5, r5, r7
+ cmp r4, r6
+ blt _02057734
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02057750
+FUN_02057750: ; 0x02057750
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ bl FUN_020587E0
+ cmp r0, #0x1
+ beq _02057760
+ bl ErrorHandling
+_02057760:
+ add r0, r5, #0x0
+ mov r4, #0x0
+ bl FUN_02058368
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_020583CC
+ mov r7, #0x4a
+ add r5, r0, #0x0
+ lsl r7, r7, #0x2
+_02057776:
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_02058424
+ cmp r0, #0x0
+ beq _0205779C
+ mov r1, #0x1
+ add r0, r5, #0x0
+ lsl r1, r1, #0xe
+ bl FUN_02058424
+ cmp r0, #0x0
+ beq _0205779C
+ add r0, r5, #0x0
+ bl FUN_020586C8
+ add r0, r5, #0x0
+ bl FUN_0205816C
+_0205779C:
+ add r4, r4, #0x1
+ add r5, r5, r7
+ cmp r4, r6
+ blt _02057776
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020577A8
+FUN_020577A8: ; 0x020577A8
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ bl FUN_020587E0
+ cmp r0, #0x1
+ beq _020577B8
+ bl ErrorHandling
+_020577B8:
+ add r0, r5, #0x0
+ mov r4, #0x0
+ bl FUN_02058368
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_020583CC
+ mov r7, #0x4a
+ add r5, r0, #0x0
+ lsl r7, r7, #0x2
+_020577CE:
+ add r0, r5, #0x0
+ bl FUN_02058830
+ cmp r0, #0x1
+ bne _020577F6
+ add r0, r5, #0x0
+ bl FUN_02058884
+ cmp r0, #0x1
+ bne _020577EA
+ add r0, r5, #0x0
+ bl FUN_020586DC
+ b _020577F0
+_020577EA:
+ add r0, r5, #0x0
+ bl FUN_020581B4
+_020577F0:
+ add r0, r5, #0x0
+ bl FUN_02058148
+_020577F6:
+ add r4, r4, #0x1
+ add r5, r5, r7
+ cmp r4, r6
+ blt _020577CE
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02057800
+FUN_02057800: ; 0x02057800
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r7, r0, #0x0
+ add r6, r1, #0x0
+ mov r0, #0x0
+ add r5, r2, #0x0
+ add r4, r3, #0x0
+ str r0, [sp, #0x4]
+ add r0, r6, #0x0
+ add r1, sp, #0x0
+ add r2, sp, #0x4
+ mov r3, #0x1
+ bl FUN_020580F4
+ cmp r0, #0x0
+ beq _02057846
+_02057820:
+ ldr r1, [sp, #0x0]
+ add r0, r7, #0x0
+ add r2, r5, #0x0
+ bl FUN_02057894
+ sub r4, r4, #0x1
+ add r5, #0x50
+ cmp r4, #0x0
+ bgt _02057836
+ bl ErrorHandling
+_02057836:
+ add r0, r6, #0x0
+ add r1, sp, #0x0
+ add r2, sp, #0x4
+ mov r3, #0x1
+ bl FUN_020580F4
+ cmp r0, #0x0
+ bne _02057820
+_02057846:
+ cmp r4, #0x0
+ beq _02057856
+ mov r2, #0x50
+ add r0, r5, #0x0
+ mov r1, #0x0
+ mul r2, r4
+ blx FUN_020DF4A4
+_02057856:
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205785C
+FUN_0205785C: ; 0x0205785C
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ add r5, r1, #0x0
+ add r7, r2, #0x0
+ beq _02057892
+_02057866:
+ ldr r1, [r5, #0x0]
+ mov r0, #0x1
+ tst r0, r1
+ beq _0205788C
+ add r0, r6, #0x0
+ bl FUN_02057C64
+ add r4, r0, #0x0
+ bne _0205787C
+ bl ErrorHandling
+_0205787C:
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ bl FUN_020579C4
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ bl FUN_02057AEC
+_0205788C:
+ add r5, #0x50
+ sub r7, r7, #0x1
+ bne _02057866
+_02057892:
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02057894
+FUN_02057894: ; 0x02057894
+ push {r3-r6, lr}
+ sub sp, #0xc
+ add r5, r1, #0x0
+ add r6, r0, #0x0
+ add r4, r2, #0x0
+ add r0, r5, #0x0
+ bl FUN_0205840C
+ str r0, [r4, #0x0]
+ add r0, r5, #0x0
+ bl FUN_02058440
+ str r0, [r4, #0x4]
+ add r0, r5, #0x0
+ bl FUN_02058448
+ strb r0, [r4, #0x8]
+ add r0, r5, #0x0
+ bl FUN_02058450
+ strh r0, [r4, #0x10]
+ add r0, r5, #0x0
+ bl FUN_02058458
+ strh r0, [r4, #0x12]
+ add r0, r5, #0x0
+ bl FUN_02058480
+ strb r0, [r4, #0x9]
+ add r0, r5, #0x0
+ bl FUN_02058488
+ strh r0, [r4, #0x14]
+ add r0, r5, #0x0
+ bl FUN_02058490
+ strh r0, [r4, #0x16]
+ add r0, r5, #0x0
+ bl FUN_02058498
+ strh r0, [r4, #0x18]
+ add r0, r5, #0x0
+ bl FUN_020584A0
+ strb r0, [r4, #0xc]
+ add r0, r5, #0x0
+ bl FUN_020584C4
+ strb r0, [r4, #0xd]
+ add r0, r5, #0x0
+ bl FUN_020584D4
+ strb r0, [r4, #0xe]
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_02058510
+ strh r0, [r4, #0x1a]
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_02058510
+ strh r0, [r4, #0x1c]
+ add r0, r5, #0x0
+ mov r1, #0x2
+ bl FUN_02058510
+ strh r0, [r4, #0x1e]
+ add r0, r5, #0x0
+ bl FUN_02058538
+ strb r0, [r4, #0xa]
+ add r0, r5, #0x0
+ bl FUN_02058540
+ strb r0, [r4, #0xb]
+ add r0, r5, #0x0
+ bl FUN_02058AFC
+ strh r0, [r4, #0x20]
+ add r0, r5, #0x0
+ bl FUN_02058B04
+ strh r0, [r4, #0x22]
+ add r0, r5, #0x0
+ bl FUN_02058B0C
+ strh r0, [r4, #0x24]
+ add r0, r5, #0x0
+ bl FUN_02058B2C
+ strh r0, [r4, #0x26]
+ add r0, r5, #0x0
+ bl FUN_02058B3C
+ strh r0, [r4, #0x28]
+ add r0, r5, #0x0
+ bl FUN_02058B4C
+ strh r0, [r4, #0x2a]
+ mov r0, #0x26
+ mov r1, #0x2a
+ ldrsh r0, [r4, r0]
+ ldrsh r1, [r4, r1]
+ add r2, sp, #0x0
+ bl FUN_02059E60
+ add r0, r5, #0x0
+ bl FUN_02058B80
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ bl FUN_02058AE4
+ add r2, r0, #0x0
+ add r0, r6, #0x0
+ add r1, sp, #0x0
+ bl FUN_02059EC8
+ cmp r0, #0x0
+ bne _0205798E
+ add r0, r5, #0x0
+ bl FUN_02058B80
+ b _02057990
+_0205798E:
+ ldr r0, [sp, #0x4]
+_02057990:
+ str r0, [r4, #0x2c]
+ add r0, r5, #0x0
+ bl FUN_020585B0
+ add r3, r4, #0x0
+ add r3, #0x30
+ mov r2, #0x10
+_0205799E:
+ ldrb r1, [r0, #0x0]
+ add r0, r0, #0x1
+ strb r1, [r3, #0x0]
+ add r3, r3, #0x1
+ sub r2, r2, #0x1
+ bne _0205799E
+ add r0, r5, #0x0
+ bl FUN_020585D8
+ add r4, #0x40
+ mov r2, #0x10
+_020579B4:
+ ldrb r1, [r0, #0x0]
+ add r0, r0, #0x1
+ strb r1, [r4, #0x0]
+ add r4, r4, #0x1
+ sub r2, r2, #0x1
+ bne _020579B4
+ add sp, #0xc
+ pop {r3-r6, pc}
+
+ thumb_func_start FUN_020579C4
+FUN_020579C4: ; 0x020579C4
+ push {r4-r5, lr}
+ sub sp, #0xc
+ add r4, r1, #0x0
+ ldr r1, [r4, #0x0]
+ add r5, r0, #0x0
+ bl FUN_02058408
+ ldr r1, [r4, #0x4]
+ add r0, r5, #0x0
+ bl FUN_0205843C
+ ldrb r1, [r4, #0x8]
+ add r0, r5, #0x0
+ bl FUN_02058444
+ ldrh r1, [r4, #0x10]
+ add r0, r5, #0x0
+ bl FUN_0205844C
+ ldrh r1, [r4, #0x12]
+ add r0, r5, #0x0
+ bl FUN_02058454
+ ldrb r1, [r4, #0x9]
+ add r0, r5, #0x0
+ bl FUN_0205847C
+ ldrh r1, [r4, #0x14]
+ add r0, r5, #0x0
+ bl FUN_02058484
+ ldrh r1, [r4, #0x16]
+ add r0, r5, #0x0
+ bl FUN_0205848C
+ ldrh r1, [r4, #0x18]
+ add r0, r5, #0x0
+ bl FUN_02058494
+ mov r1, #0xc
+ ldrsb r1, [r4, r1]
+ add r0, r5, #0x0
+ bl FUN_0205849C
+ mov r1, #0xd
+ ldrsb r1, [r4, r1]
+ add r0, r5, #0x0
+ bl FUN_020584A4
+ mov r1, #0xe
+ ldrsb r1, [r4, r1]
+ add r0, r5, #0x0
+ bl FUN_020584CC
+ mov r1, #0x1a
+ ldrsh r1, [r4, r1]
+ add r0, r5, #0x0
+ mov r2, #0x0
+ bl FUN_020584EC
+ mov r1, #0x1c
+ ldrsh r1, [r4, r1]
+ add r0, r5, #0x0
+ mov r2, #0x1
+ bl FUN_020584EC
+ mov r1, #0x1e
+ ldrsh r1, [r4, r1]
+ add r0, r5, #0x0
+ mov r2, #0x2
+ bl FUN_020584EC
+ mov r1, #0xa
+ ldrsb r1, [r4, r1]
+ add r0, r5, #0x0
+ bl FUN_02058534
+ mov r1, #0xb
+ ldrsb r1, [r4, r1]
+ add r0, r5, #0x0
+ bl FUN_0205853C
+ mov r1, #0x20
+ ldrsh r1, [r4, r1]
+ add r0, r5, #0x0
+ bl FUN_02058B00
+ mov r1, #0x22
+ ldrsh r1, [r4, r1]
+ add r0, r5, #0x0
+ bl FUN_02058B08
+ mov r1, #0x24
+ ldrsh r1, [r4, r1]
+ add r0, r5, #0x0
+ bl FUN_02058B10
+ mov r1, #0x26
+ ldrsh r1, [r4, r1]
+ add r0, r5, #0x0
+ bl FUN_02058B30
+ mov r1, #0x28
+ ldrsh r1, [r4, r1]
+ add r0, r5, #0x0
+ bl FUN_02058B40
+ mov r1, #0x2a
+ ldrsh r1, [r4, r1]
+ add r0, r5, #0x0
+ bl FUN_02058B50
+ add r1, sp, #0x0
+ mov r0, #0x0
+ str r0, [r1, #0x0]
+ str r0, [r1, #0x4]
+ str r0, [r1, #0x8]
+ ldr r0, [r4, #0x2c]
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ bl FUN_02058B6C
+ add r0, r5, #0x0
+ bl FUN_020585B0
+ add r3, r4, #0x0
+ add r3, #0x30
+ mov r2, #0x10
+_02057AC4:
+ ldrb r1, [r3, #0x0]
+ add r3, r3, #0x1
+ strb r1, [r0, #0x0]
+ add r0, r0, #0x1
+ sub r2, r2, #0x1
+ bne _02057AC4
+ add r0, r5, #0x0
+ bl FUN_020585D8
+ add r4, #0x40
+ mov r2, #0x10
+_02057ADA:
+ ldrb r1, [r4, #0x0]
+ add r4, r4, #0x1
+ strb r1, [r0, #0x0]
+ add r0, r0, #0x1
+ sub r2, r2, #0x1
+ bne _02057ADA
+ add sp, #0xc
+ pop {r4-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02057AEC
+FUN_02057AEC: ; 0x02057AEC
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02057B34
+ add r0, r4, #0x0
+ bl FUN_02057B54
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ bl FUN_02058570
+ add r0, r4, #0x0
+ bl FUN_02057EE0
+ add r0, r4, #0x0
+ bl FUN_0205AE80
+ add r0, r4, #0x0
+ bl FUN_020581B4
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02057CF0
+ add r0, r4, #0x0
+ bl FUN_0205866C
+ add r0, r5, #0x0
+ bl FUN_02058360
+ bl FUN_0205836C
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02057B34
+FUN_02057B34: ; 0x02057B34
+ push {r4, lr}
+ mov r1, #0x5
+ add r4, r0, #0x0
+ bl FUN_02058410
+ ldr r1, _02057B50 ; =0x00EF4248
+ add r0, r4, #0x0
+ bl FUN_02058418
+ add r0, r4, #0x0
+ bl FUN_0205815C
+ pop {r4, pc}
+ nop
+_02057B50: .word 0x00EF4248
+
+ thumb_func_start FUN_02057B54
+FUN_02057B54: ; 0x02057B54
+ push {r3-r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0x0
+ add r1, sp, #0x0
+ bl FUN_02058B5C
+ add r0, r4, #0x0
+ bl FUN_02058B2C
+ add r1, r0, #0x0
+ mov r0, #0x2
+ lsl r2, r1, #0x10
+ lsl r0, r0, #0xe
+ add r0, r2, r0
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ bl FUN_02058B18
+ add r0, r4, #0x0
+ bl FUN_02058B3C
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02058B20
+ add r0, r4, #0x0
+ bl FUN_02058B4C
+ add r1, r0, #0x0
+ mov r0, #0x2
+ lsl r2, r1, #0x10
+ lsl r0, r0, #0xe
+ add r0, r2, r0
+ str r0, [sp, #0x8]
+ add r0, r4, #0x0
+ bl FUN_02058B28
+ add r0, r4, #0x0
+ add r1, sp, #0x0
+ bl FUN_02058B6C
+ add sp, #0xc
+ pop {r3-r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02057BAC
+FUN_02057BAC: ; 0x02057BAC
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r2, #0x0
+ add r7, r0, #0x0
+ add r4, r3, #0x0
+ str r1, [sp, #0x0]
+ cmp r5, #0x0
+ bne _02057BC0
+ bl ErrorHandling
+_02057BC0:
+ lsl r0, r5, #0x5
+ str r0, [sp, #0x4]
+ ldr r1, [sp, #0x4]
+ mov r0, #0xb
+ bl FUN_020169D8
+ add r6, r0, #0x0
+ bne _02057BD4
+ bl ErrorHandling
+_02057BD4:
+ ldr r2, [sp, #0x4]
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ blx FUN_020DF438
+ mov r0, #0xb
+ mov r1, #0x14
+ bl FUN_020169D8
+ add r4, r0, #0x0
+ bne _02057BEE
+ bl ErrorHandling
+_02057BEE:
+ ldr r0, [sp, #0x0]
+ str r0, [r4, #0x0]
+ str r5, [r4, #0x4]
+ mov r0, #0x0
+ str r0, [r4, #0x8]
+ str r7, [r4, #0xc]
+ add r0, r4, #0x0
+ str r6, [r4, #0x10]
+ bl FUN_02057C08
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02057C08
+FUN_02057C08: ; 0x02057C08
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_020583E8
+ add r6, r5, #0x0
+ ldr r4, [r5, #0x10]
+ add r7, r0, #0x0
+ add r6, #0x8
+_02057C1A:
+ add r0, r4, #0x0
+ bl FUN_02058CE0
+ cmp r0, #0x1
+ beq _02057C30
+ ldrh r1, [r4, #0x8]
+ add r0, r7, #0x0
+ bl FUN_02039528
+ cmp r0, #0x0
+ bne _02057C42
+_02057C30:
+ ldr r0, [r5, #0xc]
+ ldr r2, [r5, #0x0]
+ add r1, r4, #0x0
+ bl FUN_02057494
+ cmp r0, #0x0
+ bne _02057C42
+ bl ErrorHandling
+_02057C42:
+ ldr r0, [r6, #0x0]
+ add r4, #0x20
+ add r0, r0, #0x1
+ str r0, [r6, #0x0]
+ ldr r1, [r5, #0x8]
+ ldr r0, [r5, #0x4]
+ cmp r1, r0
+ blt _02057C1A
+ ldr r1, [r5, #0x10]
+ mov r0, #0xb
+ bl FUN_02016A8C
+ mov r0, #0xb
+ add r1, r5, #0x0
+ bl FUN_02016A8C
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02057C64
+FUN_02057C64: ; 0x02057C64
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ mov r4, #0x0
+ bl FUN_02058368
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_020583CC
+ mov r7, #0x4a
+ add r5, r0, #0x0
+ lsl r7, r7, #0x2
+_02057C7C:
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_02058424
+ cmp r0, #0x0
+ bne _02057C8C
+ add r0, r5, #0x0
+ pop {r3-r7, pc}
+_02057C8C:
+ add r4, r4, #0x1
+ add r5, r5, r7
+ cmp r4, r6
+ blt _02057C7C
+ mov r0, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02057C98
+FUN_02057C98: ; 0x02057C98
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r1, #0x0
+ mov r1, #0x0
+ add r4, r2, #0x0
+ str r1, [sp, #0x4]
+ add r1, sp, #0x0
+ add r2, sp, #0x4
+ mov r3, #0x1
+ add r6, r0, #0x0
+ bl FUN_020580F4
+ cmp r0, #0x1
+ bne _02057CEA
+ add r7, sp, #0x0
+_02057CB6:
+ ldr r0, [sp, #0x0]
+ bl FUN_020589CC
+ cmp r0, #0x1
+ bne _02057CDA
+ ldr r0, [sp, #0x0]
+ bl FUN_02058448
+ cmp r5, r0
+ bne _02057CDA
+ ldr r0, [sp, #0x0]
+ bl FUN_02058750
+ cmp r4, r0
+ bne _02057CDA
+ ldr r0, [sp, #0x0]
+ add sp, #0x8
+ pop {r3-r7, pc}
+_02057CDA:
+ add r0, r6, #0x0
+ add r1, r7, #0x0
+ add r2, sp, #0x4
+ mov r3, #0x1
+ bl FUN_020580F4
+ cmp r0, #0x1
+ beq _02057CB6
+_02057CEA:
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02057CF0
+FUN_02057CF0: ; 0x02057CF0
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ bl FUN_0205839C
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02058480
+ cmp r0, #0x30
+ beq _02057D08
+ cmp r0, #0x32
+ bne _02057D0A
+_02057D08:
+ add r5, r5, #0x2
+_02057D0A:
+ ldr r0, _02057D28 ; =FUN_0205832C
+ add r1, r4, #0x0
+ add r2, r5, #0x0
+ bl FUN_0200CA44
+ add r5, r0, #0x0
+ bne _02057D1C
+ bl ErrorHandling
+_02057D1C:
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ bl FUN_02058554
+ pop {r3-r5, pc}
+ nop
+_02057D28: .word FUN_0205832C
+
+ thumb_func_start FUN_02057D2C
+FUN_02057D2C: ; 0x02057D2C
+ push {r4-r6, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ add r6, r2, #0x0
+ bl FUN_02058BFC
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058444
+ add r0, r4, #0x0
+ bl FUN_02058C04
+ add r1, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_02058170
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058454
+ add r0, r4, #0x0
+ bl FUN_02058C0C
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0205847C
+ add r0, r4, #0x0
+ bl FUN_02058C14
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058484
+ add r0, r4, #0x0
+ bl FUN_02058C1C
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0205848C
+ add r0, r4, #0x0
+ bl FUN_02058C24
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058494
+ add r0, r4, #0x0
+ bl FUN_02058C2C
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0205849C
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_02058C58
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ mov r2, #0x0
+ bl FUN_020584EC
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_02058C58
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ mov r2, #0x1
+ bl FUN_020584EC
+ add r0, r4, #0x0
+ mov r1, #0x2
+ bl FUN_02058C58
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ mov r2, #0x2
+ bl FUN_020584EC
+ add r0, r4, #0x0
+ bl FUN_02058C80
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058534
+ add r0, r4, #0x0
+ bl FUN_02058C8C
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0205853C
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02057DFC
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02057DFC
+FUN_02057DFC: ; 0x02057DFC
+ push {r3-r6, lr}
+ sub sp, #0xc
+ add r6, r1, #0x0
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_02058C98
+ add r5, r0, #0x0
+ mov r0, #0x2
+ lsl r1, r5, #0x10
+ lsl r0, r0, #0xe
+ add r0, r1, r0
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ bl FUN_02058B00
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ bl FUN_02058B18
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ bl FUN_02058B30
+ add r0, r6, #0x0
+ bl FUN_02058CA0
+ asr r1, r0, #0x3
+ str r0, [sp, #0x4]
+ asr r0, r1, #0xb
+ lsr r0, r0, #0x14
+ add r0, r1, r0
+ asr r5, r0, #0xc
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ bl FUN_02058B08
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ bl FUN_02058B20
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ bl FUN_02058B40
+ add r0, r6, #0x0
+ bl FUN_02058CA8
+ add r5, r0, #0x0
+ mov r0, #0x2
+ lsl r1, r5, #0x10
+ lsl r0, r0, #0xe
+ add r0, r1, r0
+ str r0, [sp, #0x8]
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ bl FUN_02058B10
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ bl FUN_02058B28
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ bl FUN_02058B50
+ add r0, r4, #0x0
+ add r1, sp, #0x0
+ bl FUN_02058B6C
+ add sp, #0xc
+ pop {r3-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02057E90
+FUN_02057E90: ; 0x02057E90
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ ldr r1, _02057EDC ; =0x00001801
+ add r5, r0, #0x0
+ bl FUN_02058410
+ add r0, r5, #0x0
+ bl FUN_020581F8
+ cmp r0, #0x1
+ bne _02057EAE
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_020589B0
+_02057EAE:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02058570
+ add r0, r5, #0x0
+ bl FUN_020584A0
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_020584A4
+ add r0, r5, #0x0
+ bl FUN_020584A0
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_020584CC
+ add r0, r5, #0x0
+ bl FUN_0205AE80
+ pop {r3-r5, pc}
+ nop
+_02057EDC: .word 0x00001801
+
+ thumb_func_start FUN_02057EE0
+FUN_02057EE0: ; 0x02057EE0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_02058480
+ bl FUN_02058D14
+ add r4, r0, #0x0
+ bl FUN_02058D2C
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058630
+ add r0, r4, #0x0
+ bl FUN_02058D30
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058644
+ add r0, r4, #0x0
+ bl FUN_02058D34
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058658
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02057F18
+FUN_02057F18: ; 0x02057F18
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl FUN_02058458
+ mov r1, #0x2
+ lsl r1, r1, #0xc
+ cmp r0, r1
+ bne _02057F2C
+ ldr r5, _02057F7C ; =0x021F9080
+ b _02057F32
+_02057F2C:
+ bl FUN_02058D4C
+ add r5, r0, #0x0
+_02057F32:
+ add r0, r5, #0x0
+ bl FUN_02058D38
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02058684
+ add r0, r5, #0x0
+ bl FUN_02058D3C
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02058698
+ add r0, r5, #0x0
+ bl FUN_02058D40
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_020586AC
+ add r0, r5, #0x0
+ bl FUN_02058D44
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_020586C0
+ add r0, r5, #0x0
+ bl FUN_02058D48
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_020586D4
+ pop {r3-r5, pc}
+ nop
+_02057F7C: .word 0x021F9080
+
+ thumb_func_start FUN_02057F80
+FUN_02057F80: ; 0x02057F80
+ ldr r3, _02057F8C ; =FUN_020DF4A4
+ mov r2, #0x4a
+ mov r1, #0x0
+ lsl r2, r2, #0x2
+ bx r3
+ nop
+_02057F8C: .word FUN_020DF4A4
+
+ thumb_func_start FUN_02057F90
+FUN_02057F90: ; 0x02057F90
+ push {r3-r7, lr}
+ add r6, r2, #0x0
+ add r5, r0, #0x0
+ add r4, r3, #0x0
+ str r1, [sp, #0x0]
+ cmp r6, #0x0
+ beq _0205800A
+_02057F9E:
+ add r0, r4, #0x0
+ bl FUN_02058BFC
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058448
+ cmp r7, r0
+ bne _02058002
+ add r0, r4, #0x0
+ bl FUN_02058CE0
+ cmp r0, #0x1
+ bne _02057FE8
+ add r0, r4, #0x0
+ bl FUN_02058CFC
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_020589CC
+ cmp r0, #0x1
+ bne _02057FDA
+ add r0, r5, #0x0
+ bl FUN_02058750
+ cmp r7, r0
+ bne _02058002
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02057FDA:
+ add r0, r5, #0x0
+ bl FUN_02058450
+ cmp r7, r0
+ bne _02058002
+ mov r0, #0x2
+ pop {r3-r7, pc}
+_02057FE8:
+ add r0, r5, #0x0
+ bl FUN_020589CC
+ cmp r0, #0x1
+ bne _02058002
+ add r0, r5, #0x0
+ bl FUN_02058750
+ ldr r1, [sp, #0x0]
+ cmp r1, r0
+ bne _02058002
+ mov r0, #0x2
+ pop {r3-r7, pc}
+_02058002:
+ sub r6, r6, #0x1
+ add r4, #0x20
+ cmp r6, #0x0
+ bne _02057F9E
+_0205800A:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02058010
+FUN_02058010: ; 0x02058010
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r1, #0x0
+ mov r1, #0x0
+ add r4, r2, #0x0
+ str r1, [sp, #0x4]
+ add r1, sp, #0x0
+ add r2, sp, #0x4
+ mov r3, #0x1
+ add r6, r0, #0x0
+ bl FUN_020580F4
+ cmp r0, #0x1
+ bne _02058058
+ add r7, sp, #0x0
+_0205802E:
+ ldr r0, [sp, #0x0]
+ bl FUN_02058448
+ cmp r5, r0
+ bne _02058048
+ ldr r0, [sp, #0x0]
+ bl FUN_02058450
+ cmp r4, r0
+ bne _02058048
+ ldr r0, [sp, #0x0]
+ add sp, #0x8
+ pop {r3-r7, pc}
+_02058048:
+ add r0, r6, #0x0
+ add r1, r7, #0x0
+ add r2, sp, #0x4
+ mov r3, #0x1
+ bl FUN_020580F4
+ cmp r0, #0x1
+ beq _0205802E
+_02058058:
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02058060
+FUN_02058060: ; 0x02058060
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ cmp r5, #0x0
+ bne _0205806E
+ bl ErrorHandling
+_0205806E:
+ add r0, r5, #0x0
+ bl FUN_02058368
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_020583C4
+ mov r7, #0x4a
+ add r5, r0, #0x0
+ lsl r7, r7, #0x2
+_02058082:
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_0205842C
+ cmp r0, #0x1
+ bne _020580A6
+ add r0, r5, #0x0
+ bl FUN_020589CC
+ cmp r0, #0x0
+ bne _020580A6
+ add r0, r5, #0x0
+ bl FUN_02058448
+ cmp r6, r0
+ bne _020580A6
+ add r0, r5, #0x0
+ pop {r3-r7, pc}
+_020580A6:
+ sub r4, r4, #0x1
+ add r5, r5, r7
+ cmp r4, #0x0
+ bgt _02058082
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020580B4
+FUN_020580B4: ; 0x020580B4
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ bl FUN_02058368
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_020583C4
+ mov r7, #0x4a
+ add r5, r0, #0x0
+ lsl r7, r7, #0x2
+_020580CC:
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_0205842C
+ cmp r0, #0x1
+ bne _020580E6
+ add r0, r5, #0x0
+ bl FUN_02058480
+ cmp r6, r0
+ bne _020580E6
+ add r0, r5, #0x0
+ pop {r3-r7, pc}
+_020580E6:
+ sub r4, r4, #0x1
+ add r5, r5, r7
+ cmp r4, #0x0
+ bgt _020580CC
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020580F4
+FUN_020580F4: ; 0x020580F4
+ push {r3-r7, lr}
+ add r5, r2, #0x0
+ add r4, r0, #0x0
+ str r1, [sp, #0x0]
+ add r6, r3, #0x0
+ bl FUN_02058368
+ add r7, r0, #0x0
+ ldr r0, [r5, #0x0]
+ cmp r0, r7
+ blt _0205810E
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0205810E:
+ add r0, r4, #0x0
+ bl FUN_020583C4
+ mov r1, #0x4a
+ ldr r2, [r5, #0x0]
+ lsl r1, r1, #0x2
+ mul r1, r2
+ add r4, r0, r1
+_0205811E:
+ ldr r0, [r5, #0x0]
+ add r1, r6, #0x0
+ add r0, r0, #0x1
+ str r0, [r5, #0x0]
+ add r0, r4, #0x0
+ bl FUN_02058424
+ cmp r6, r0
+ bne _02058138
+ ldr r0, [sp, #0x0]
+ str r4, [r0, #0x0]
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02058138:
+ mov r0, #0x4a
+ lsl r0, r0, #0x2
+ add r4, r4, r0
+ ldr r0, [r5, #0x0]
+ cmp r0, r7
+ blt _0205811E
+ mov r0, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02058148
+FUN_02058148: ; 0x02058148
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r1, #0x4
+ bl FUN_02058410
+ add r0, r4, #0x0
+ bl FUN_0205815C
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205815C
+FUN_0205815C: ; 0x0205815C
+ ldr r3, _02058164 ; =FUN_02058418
+ ldr r1, _02058168 ; =0x05108000
+ bx r3
+ nop
+_02058164: .word FUN_02058418
+_02058168: .word 0x05108000
+
+ thumb_func_start FUN_0205816C
+FUN_0205816C: ; 0x0205816C
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02058170
+FUN_02058170: ; 0x02058170
+ push {r3, lr}
+ cmp r1, #0x65
+ blt _02058186
+ cmp r1, #0x75
+ bgt _02058186
+ sub r1, #0x65
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ bl FUN_02039504
+ add r1, r0, #0x0
+_02058186:
+ add r0, r1, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205818C
+FUN_0205818C: ; 0x0205818C
+ push {r4, lr}
+ mov r1, #0x1
+ lsl r1, r1, #0xc
+ add r4, r0, #0x0
+ bl FUN_02058424
+ cmp r0, #0x0
+ beq _020581A2
+ add r0, r4, #0x0
+ bl FUN_02059D1C
+_020581A2:
+ pop {r4, pc}
+
+ thumb_func_start FUN_020581A4
+FUN_020581A4: ; 0x020581A4
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02057EE0
+ add r0, r4, #0x0
+ bl FUN_02058EE8
+ pop {r4, pc}
+
+ thumb_func_start FUN_020581B4
+FUN_020581B4: ; 0x020581B4
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02058578
+ bl FUN_020587E0
+ cmp r0, #0x0
+ beq _020581F6
+ add r0, r4, #0x0
+ bl FUN_0205818C
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_02058544
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_021F2E0C
+ add r0, r4, #0x0
+ bl FUN_02058884
+ cmp r0, #0x0
+ bne _020581F6
+ add r0, r4, #0x0
+ bl FUN_02057F18
+ add r0, r4, #0x0
+ bl FUN_0205868C
+ add r0, r4, #0x0
+ bl FUN_02058878
+_020581F6:
+ pop {r4, pc}
+
+ thumb_func_start FUN_020581F8
+FUN_020581F8: ; 0x020581F8
+ push {r3, lr}
+ bl FUN_02058498
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ ldr r0, _02058210 ; =0x0000FFFF
+ cmp r1, r0
+ bne _0205820C
+ mov r0, #0x1
+ pop {r3, pc}
+_0205820C:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+_02058210: .word 0x0000FFFF
+
+ thumb_func_start FUN_02058214
+FUN_02058214: ; 0x02058214
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_020589CC
+ cmp r0, #0x1
+ beq _02058228
+ bl ErrorHandling
+_02058228:
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_020589B0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_0205844C
+ add r0, r4, #0x0
+ bl FUN_02058C24
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058494
+ add r0, r4, #0x0
+ bl FUN_02058C1C
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0205848C
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02058258
+FUN_02058258: ; 0x02058258
+ push {r4-r6, lr}
+ add r6, r2, #0x0
+ add r5, r0, #0x0
+ add r0, r6, #0x0
+ add r4, r1, #0x0
+ bl FUN_02058CE0
+ cmp r0, #0x1
+ beq _0205826E
+ bl ErrorHandling
+_0205826E:
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_020589B0
+ add r0, r6, #0x0
+ bl FUN_02058C24
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058494
+ add r0, r6, #0x0
+ bl FUN_02058CFC
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0205848C
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0205844C
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0205829C
+FUN_0205829C: ; 0x0205829C
+ push {r4, lr}
+ add r4, r1, #0x0
+ bl FUN_02058744
+ add r0, r0, r4
+ pop {r4, pc}
+
+ thumb_func_start FUN_020582A8
+FUN_020582A8: ; 0x020582A8
+ push {r4-r6, lr}
+ add r6, r1, #0x0
+ mov r1, #0x1
+ add r5, r0, #0x0
+ add r4, r2, #0x0
+ bl FUN_0205842C
+ cmp r0, #0x0
+ bne _020582BE
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_020582BE:
+ add r0, r5, #0x0
+ bl FUN_02058448
+ cmp r6, r0
+ beq _020582CC
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_020582CC:
+ add r0, r5, #0x0
+ bl FUN_02058450
+ cmp r4, r0
+ beq _020582F2
+ add r0, r5, #0x0
+ bl FUN_020589CC
+ cmp r0, #0x0
+ bne _020582E4
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_020582E4:
+ add r0, r5, #0x0
+ bl FUN_02058750
+ cmp r4, r0
+ beq _020582F2
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_020582F2:
+ mov r0, #0x1
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_020582F8
+FUN_020582F8: ; 0x020582F8
+ push {r3-r7, lr}
+ add r4, r1, #0x0
+ mov r1, #0x1
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ add r7, r3, #0x0
+ bl FUN_0205842C
+ cmp r0, #0x0
+ bne _02058310
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_02058310:
+ add r0, r5, #0x0
+ bl FUN_0205845C
+ cmp r0, r4
+ beq _0205831E
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0205831E:
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r7, #0x0
+ bl FUN_020582A8
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205832C
+FUN_0205832C: ; 0x0205832C
+ push {r4, lr}
+ add r4, r1, #0x0
+ add r0, r4, #0x0
+ bl FUN_02058EF8
+ add r0, r4, #0x0
+ bl FUN_02058830
+ cmp r0, #0x0
+ beq _02058346
+ add r0, r4, #0x0
+ bl FUN_02058348
+_02058346:
+ pop {r4, pc}
+
+ thumb_func_start FUN_02058348
+FUN_02058348: ; 0x02058348
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02058578
+ bl FUN_020587E0
+ cmp r0, #0x1
+ bne _0205835E
+ add r0, r4, #0x0
+ bl FUN_021F1D8C
+_0205835E:
+ pop {r4, pc}
+
+ thumb_func_start FUN_02058360
+FUN_02058360: ; 0x02058360
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02058364
+FUN_02058364: ; 0x02058364
+ str r1, [r0, #0x4]
+ bx lr
+
+ thumb_func_start FUN_02058368
+FUN_02058368: ; 0x02058368
+ ldr r0, [r0, #0x4]
+ bx lr
+
+ thumb_func_start FUN_0205836C
+FUN_0205836C: ; 0x0205836C
+ ldr r1, [r0, #0x8]
+ add r1, r1, #0x1
+ str r1, [r0, #0x8]
+ bx lr
+
+ thumb_func_start FUN_02058374
+FUN_02058374: ; 0x02058374
+ ldr r1, [r0, #0x8]
+ sub r1, r1, #0x1
+ str r1, [r0, #0x8]
+ bx lr
+
+ thumb_func_start FUN_0205837C
+FUN_0205837C: ; 0x0205837C
+ ldr r2, [r0, #0x0]
+ orr r1, r2
+ str r1, [r0, #0x0]
+ bx lr
+
+ thumb_func_start FUN_02058384
+FUN_02058384: ; 0x02058384
+ ldr r2, [r0, #0x0]
+ mvn r1, r1
+ and r1, r2
+ str r1, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02058390
+FUN_02058390: ; 0x02058390
+ ldr r0, [r0, #0x0]
+ and r0, r1
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02058398
+FUN_02058398: ; 0x02058398
+ str r1, [r0, #0xc]
+ bx lr
+
+ thumb_func_start FUN_0205839C
+FUN_0205839C: ; 0x0205839C
+ ldr r0, [r0, #0xc]
+ bx lr
+
+ thumb_func_start FUN_020583A0
+FUN_020583A0: ; 0x020583A0
+ add r0, #0x18
+ bx lr
+
+ thumb_func_start FUN_020583A4
+FUN_020583A4: ; 0x020583A4
+ mov r2, #0x12
+ lsl r2, r2, #0x4
+ str r1, [r0, r2]
+ bx lr
+
+ thumb_func_start FUN_020583AC
+FUN_020583AC: ; 0x020583AC
+ mov r1, #0x12
+ lsl r1, r1, #0x4
+ ldr r0, [r0, r1]
+ bx lr
+
+ thumb_func_start FUN_020583B4
+FUN_020583B4: ; 0x020583B4
+ mov r2, #0x49
+ lsl r2, r2, #0x2
+ str r1, [r0, r2]
+ bx lr
+
+ thumb_func_start FUN_020583BC
+FUN_020583BC: ; 0x020583BC
+ mov r1, #0x49
+ lsl r1, r1, #0x2
+ ldr r0, [r0, r1]
+ bx lr
+
+ thumb_func_start FUN_020583C4
+FUN_020583C4: ; 0x020583C4
+ mov r1, #0x49
+ lsl r1, r1, #0x2
+ ldr r0, [r0, r1]
+ bx lr
+
+ thumb_func_start FUN_020583CC
+FUN_020583CC: ; 0x020583CC
+ mov r1, #0x49
+ lsl r1, r1, #0x2
+ ldr r0, [r0, r1]
+ bx lr
+
+ thumb_func_start FUN_020583D4
+FUN_020583D4: ; 0x020583D4
+ mov r1, #0x4a
+ ldr r2, [r0, #0x0]
+ lsl r1, r1, #0x2
+ add r1, r2, r1
+ str r1, [r0, #0x0]
+ bx lr
+
+ thumb_func_start FUN_020583E0
+FUN_020583E0: ; 0x020583E0
+ mov r2, #0x4a
+ lsl r2, r2, #0x2
+ str r1, [r0, r2]
+ bx lr
+
+ thumb_func_start FUN_020583E8
+FUN_020583E8: ; 0x020583E8
+ mov r1, #0x4a
+ lsl r1, r1, #0x2
+ ldr r0, [r0, r1]
+ bx lr
+
+ thumb_func_start FUN_020583F0
+FUN_020583F0: ; 0x020583F0
+ str r1, [r0, #0x14]
+ bx lr
+
+ thumb_func_start FUN_020583F4
+FUN_020583F4: ; 0x020583F4
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x14]
+ cmp r0, #0x0
+ bne _02058402
+ bl ErrorHandling
+_02058402:
+ ldr r0, [r4, #0x14]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02058408
+FUN_02058408: ; 0x02058408
+ str r1, [r0, #0x0]
+ bx lr
+
+ thumb_func_start FUN_0205840C
+FUN_0205840C: ; 0x0205840C
+ ldr r0, [r0, #0x0]
+ bx lr
+
+ thumb_func_start FUN_02058410
+FUN_02058410: ; 0x02058410
+ ldr r2, [r0, #0x0]
+ orr r1, r2
+ str r1, [r0, #0x0]
+ bx lr
+
+ thumb_func_start FUN_02058418
+FUN_02058418: ; 0x02058418
+ ldr r2, [r0, #0x0]
+ mvn r1, r1
+ and r1, r2
+ str r1, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02058424
+FUN_02058424: ; 0x02058424
+ ldr r0, [r0, #0x0]
+ and r0, r1
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0205842C
+FUN_0205842C: ; 0x0205842C
+ ldr r0, [r0, #0x0]
+ tst r0, r1
+ beq _02058436
+ mov r0, #0x1
+ bx lr
+_02058436:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0205843C
+FUN_0205843C: ; 0x0205843C
+ str r1, [r0, #0x4]
+ bx lr
+
+ thumb_func_start FUN_02058440
+FUN_02058440: ; 0x02058440
+ ldr r0, [r0, #0x4]
+ bx lr
+
+ thumb_func_start FUN_02058444
+FUN_02058444: ; 0x02058444
+ str r1, [r0, #0x8]
+ bx lr
+
+ thumb_func_start FUN_02058448
+FUN_02058448: ; 0x02058448
+ ldr r0, [r0, #0x8]
+ bx lr
+
+ thumb_func_start FUN_0205844C
+FUN_0205844C: ; 0x0205844C
+ str r1, [r0, #0xc]
+ bx lr
+
+ thumb_func_start FUN_02058450
+FUN_02058450: ; 0x02058450
+ ldr r0, [r0, #0xc]
+ bx lr
+
+ thumb_func_start FUN_02058454
+FUN_02058454: ; 0x02058454
+ str r1, [r0, #0x10]
+ bx lr
+
+ thumb_func_start FUN_02058458
+FUN_02058458: ; 0x02058458
+ ldr r0, [r0, #0x10]
+ bx lr
+
+ thumb_func_start FUN_0205845C
+FUN_0205845C: ; 0x0205845C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_02058458
+ add r4, r0, #0x0
+ bl FUN_0205C334
+ cmp r0, #0x1
+ bne _02058476
+ add r0, r5, #0x0
+ bl FUN_0205C340
+ add r4, r0, #0x0
+_02058476:
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205847C
+FUN_0205847C: ; 0x0205847C
+ str r1, [r0, #0x14]
+ bx lr
+
+ thumb_func_start FUN_02058480
+FUN_02058480: ; 0x02058480
+ ldr r0, [r0, #0x14]
+ bx lr
+
+ thumb_func_start FUN_02058484
+FUN_02058484: ; 0x02058484
+ str r1, [r0, #0x18]
+ bx lr
+
+ thumb_func_start FUN_02058488
+FUN_02058488: ; 0x02058488
+ ldr r0, [r0, #0x18]
+ bx lr
+
+ thumb_func_start FUN_0205848C
+FUN_0205848C: ; 0x0205848C
+ str r1, [r0, #0x1c]
+ bx lr
+
+ thumb_func_start FUN_02058490
+FUN_02058490: ; 0x02058490
+ ldr r0, [r0, #0x1c]
+ bx lr
+
+ thumb_func_start FUN_02058494
+FUN_02058494: ; 0x02058494
+ str r1, [r0, #0x20]
+ bx lr
+
+ thumb_func_start FUN_02058498
+FUN_02058498: ; 0x02058498
+ ldr r0, [r0, #0x20]
+ bx lr
+
+ thumb_func_start FUN_0205849C
+FUN_0205849C: ; 0x0205849C
+ str r1, [r0, #0x24]
+ bx lr
+
+ thumb_func_start FUN_020584A0
+FUN_020584A0: ; 0x020584A0
+ ldr r0, [r0, #0x24]
+ bx lr
+
+ thumb_func_start FUN_020584A4
+FUN_020584A4: ; 0x020584A4
+ ldr r2, [r0, #0x28]
+ str r2, [r0, #0x30]
+ str r1, [r0, #0x28]
+ bx lr
+
+ thumb_func_start FUN_020584AC
+FUN_020584AC: ; 0x020584AC
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ mov r1, #0x80
+ add r5, r0, #0x0
+ bl FUN_02058424
+ cmp r0, #0x0
+ bne _020584C2
+ ldr r0, [r5, #0x28]
+ str r0, [r5, #0x30]
+ str r4, [r5, #0x28]
+_020584C2:
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_020584C4
+FUN_020584C4: ; 0x020584C4
+ ldr r0, [r0, #0x28]
+ bx lr
+
+ thumb_func_start FUN_020584C8
+FUN_020584C8: ; 0x020584C8
+ ldr r0, [r0, #0x30]
+ bx lr
+
+ thumb_func_start FUN_020584CC
+FUN_020584CC: ; 0x020584CC
+ ldr r2, [r0, #0x2c]
+ str r2, [r0, #0x34]
+ str r1, [r0, #0x2c]
+ bx lr
+
+ thumb_func_start FUN_020584D4
+FUN_020584D4: ; 0x020584D4
+ ldr r0, [r0, #0x2c]
+ bx lr
+
+ thumb_func_start FUN_020584D8
+FUN_020584D8: ; 0x020584D8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_020584AC
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_020584CC
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_020584EC
+FUN_020584EC: ; 0x020584EC
+ push {r3, lr}
+ cmp r2, #0x0
+ beq _020584FC
+ cmp r2, #0x1
+ beq _02058500
+ cmp r2, #0x2
+ beq _02058504
+ b _02058508
+_020584FC:
+ str r1, [r0, #0x38]
+ pop {r3, pc}
+_02058500:
+ str r1, [r0, #0x3c]
+ pop {r3, pc}
+_02058504:
+ str r1, [r0, #0x40]
+ pop {r3, pc}
+_02058508:
+ bl ErrorHandling
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02058510
+FUN_02058510: ; 0x02058510
+ push {r3, lr}
+ cmp r1, #0x0
+ beq _02058520
+ cmp r1, #0x1
+ beq _02058524
+ cmp r1, #0x2
+ beq _02058528
+ b _0205852C
+_02058520:
+ ldr r0, [r0, #0x38]
+ pop {r3, pc}
+_02058524:
+ ldr r0, [r0, #0x3c]
+ pop {r3, pc}
+_02058528:
+ ldr r0, [r0, #0x40]
+ pop {r3, pc}
+_0205852C:
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_02058534
+FUN_02058534: ; 0x02058534
+ str r1, [r0, #0x44]
+ bx lr
+
+ thumb_func_start FUN_02058538
+FUN_02058538: ; 0x02058538
+ ldr r0, [r0, #0x44]
+ bx lr
+
+ thumb_func_start FUN_0205853C
+FUN_0205853C: ; 0x0205853C
+ str r1, [r0, #0x48]
+ bx lr
+
+ thumb_func_start FUN_02058540
+FUN_02058540: ; 0x02058540
+ ldr r0, [r0, #0x48]
+ bx lr
+
+ thumb_func_start FUN_02058544
+FUN_02058544: ; 0x02058544
+ add r0, #0xa0
+ str r1, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0205854C
+FUN_0205854C: ; 0x0205854C
+ add r0, #0xa0
+ ldr r0, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02058554
+FUN_02058554: ; 0x02058554
+ add r0, #0xb0
+ str r1, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0205855C
+FUN_0205855C: ; 0x0205855C
+ add r0, #0xb0
+ ldr r0, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02058564
+FUN_02058564: ; 0x02058564
+ push {r3, lr}
+ bl FUN_0205855C
+ bl FUN_0200CAB4
+ pop {r3, pc}
+
+ thumb_func_start FUN_02058570
+FUN_02058570: ; 0x02058570
+ add r0, #0xb4
+ str r1, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02058578
+FUN_02058578: ; 0x02058578
+ add r0, #0xb4
+ ldr r0, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02058580
+FUN_02058580: ; 0x02058580
+ ldr r3, _02058588 ; =FUN_02058360
+ add r0, #0xb4
+ ldr r0, [r0, #0x0]
+ bx r3
+ .balign 4
+_02058588: .word FUN_02058360
+
+ thumb_func_start FUN_0205858C
+FUN_0205858C: ; 0x0205858C
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ add r4, r0, #0x0
+ cmp r5, #0x10
+ ble _0205859A
+ bl ErrorHandling
+_0205859A:
+ add r0, r4, #0x0
+ bl FUN_020585B0
+ mov r1, #0x0
+ add r2, r5, #0x0
+ add r4, r0, #0x0
+ blx FUN_020DF4A4
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020585B0
+FUN_020585B0: ; 0x020585B0
+ add r0, #0xd8
+ bx lr
+
+ thumb_func_start FUN_020585B4
+FUN_020585B4: ; 0x020585B4
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ add r4, r0, #0x0
+ cmp r5, #0x10
+ ble _020585C2
+ bl ErrorHandling
+_020585C2:
+ add r0, r4, #0x0
+ bl FUN_020585D8
+ mov r1, #0x0
+ add r2, r5, #0x0
+ add r4, r0, #0x0
+ blx FUN_020DF4A4
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020585D8
+FUN_020585D8: ; 0x020585D8
+ add r0, #0xe8
+ bx lr
+
+ thumb_func_start FUN_020585DC
+FUN_020585DC: ; 0x020585DC
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ add r4, r0, #0x0
+ cmp r5, #0x10
+ ble _020585EA
+ bl ErrorHandling
+_020585EA:
+ add r0, r4, #0x0
+ bl FUN_02058600
+ mov r1, #0x0
+ add r2, r5, #0x0
+ add r4, r0, #0x0
+ blx FUN_020DF4A4
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02058600
+FUN_02058600: ; 0x02058600
+ add r0, #0xf8
+ bx lr
+
+ thumb_func_start FUN_02058604
+FUN_02058604: ; 0x02058604
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ add r4, r0, #0x0
+ cmp r5, #0x20
+ ble _02058612
+ bl ErrorHandling
+_02058612:
+ add r0, r4, #0x0
+ bl FUN_02058628
+ mov r1, #0x0
+ add r2, r5, #0x0
+ add r4, r0, #0x0
+ blx FUN_020DF4A4
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02058628
+FUN_02058628: ; 0x02058628
+ mov r1, #0x42
+ lsl r1, r1, #0x2
+ add r0, r0, r1
+ bx lr
+
+ thumb_func_start FUN_02058630
+FUN_02058630: ; 0x02058630
+ add r0, #0xb8
+ str r1, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02058638
+FUN_02058638: ; 0x02058638
+ push {r3, lr}
+ add r1, r0, #0x0
+ add r1, #0xb8
+ ldr r1, [r1, #0x0]
+ blx r1
+ pop {r3, pc}
+
+ thumb_func_start FUN_02058644
+FUN_02058644: ; 0x02058644
+ add r0, #0xbc
+ str r1, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0205864C
+FUN_0205864C: ; 0x0205864C
+ push {r3, lr}
+ add r1, r0, #0x0
+ add r1, #0xbc
+ ldr r1, [r1, #0x0]
+ blx r1
+ pop {r3, pc}
+
+ thumb_func_start FUN_02058658
+FUN_02058658: ; 0x02058658
+ add r0, #0xc0
+ str r1, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02058660
+FUN_02058660: ; 0x02058660
+ push {r3, lr}
+ add r1, r0, #0x0
+ add r1, #0xc0
+ ldr r1, [r1, #0x0]
+ blx r1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205866C
+FUN_0205866C: ; 0x0205866C
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02058480
+ bl FUN_02058D14
+ add r1, r0, #0x0
+ ldr r1, [r1, #0x10]
+ add r0, r4, #0x0
+ blx r1
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02058684
+FUN_02058684: ; 0x02058684
+ add r0, #0xc4
+ str r1, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0205868C
+FUN_0205868C: ; 0x0205868C
+ push {r3, lr}
+ add r1, r0, #0x0
+ add r1, #0xc4
+ ldr r1, [r1, #0x0]
+ blx r1
+ pop {r3, pc}
+
+ thumb_func_start FUN_02058698
+FUN_02058698: ; 0x02058698
+ add r0, #0xc8
+ str r1, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020586A0
+FUN_020586A0: ; 0x020586A0
+ push {r3, lr}
+ add r1, r0, #0x0
+ add r1, #0xc8
+ ldr r1, [r1, #0x0]
+ blx r1
+ pop {r3, pc}
+
+ thumb_func_start FUN_020586AC
+FUN_020586AC: ; 0x020586AC
+ add r0, #0xcc
+ str r1, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020586B4
+FUN_020586B4: ; 0x020586B4
+ push {r3, lr}
+ add r1, r0, #0x0
+ add r1, #0xcc
+ ldr r1, [r1, #0x0]
+ blx r1
+ pop {r3, pc}
+
+ thumb_func_start FUN_020586C0
+FUN_020586C0: ; 0x020586C0
+ add r0, #0xd0
+ str r1, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020586C8
+FUN_020586C8: ; 0x020586C8
+ push {r3, lr}
+ add r1, r0, #0x0
+ add r1, #0xd0
+ ldr r1, [r1, #0x0]
+ blx r1
+ pop {r3, pc}
+
+ thumb_func_start FUN_020586D4
+FUN_020586D4: ; 0x020586D4
+ add r0, #0xd4
+ str r1, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020586DC
+FUN_020586DC: ; 0x020586DC
+ push {r3, lr}
+ add r1, r0, #0x0
+ add r1, #0xd4
+ ldr r1, [r1, #0x0]
+ blx r1
+ pop {r3, pc}
+
+ thumb_func_start FUN_020586E8
+FUN_020586E8: ; 0x020586E8
+ add r0, #0xa4
+ str r1, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020586F0
+FUN_020586F0: ; 0x020586F0
+ add r0, #0xa4
+ ldr r0, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020586F8
+FUN_020586F8: ; 0x020586F8
+ add r0, #0xa8
+ str r1, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02058700
+FUN_02058700: ; 0x02058700
+ add r1, r0, #0x0
+ add r1, #0xa8
+ ldr r1, [r1, #0x0]
+ add r0, #0xa8
+ add r1, r1, #0x1
+ str r1, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02058710
+FUN_02058710: ; 0x02058710
+ add r0, #0xa8
+ ldr r0, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02058718
+FUN_02058718: ; 0x02058718
+ add r0, #0xac
+ strh r1, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02058720
+FUN_02058720: ; 0x02058720
+ add r0, #0xac
+ ldrh r0, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02058728
+FUN_02058728: ; 0x02058728
+ add r0, #0xae
+ strh r1, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02058730
+FUN_02058730: ; 0x02058730
+ add r0, #0xae
+ ldrh r0, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02058738
+FUN_02058738: ; 0x02058738
+ push {r3, lr}
+ bl FUN_02058580
+ bl FUN_020583E8
+ pop {r3, pc}
+
+ thumb_func_start FUN_02058744
+FUN_02058744: ; 0x02058744
+ push {r3, lr}
+ bl FUN_02058578
+ bl FUN_0205839C
+ pop {r3, pc}
+
+ thumb_func_start FUN_02058750
+FUN_02058750: ; 0x02058750
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_020589CC
+ cmp r0, #0x1
+ beq _02058760
+ bl ErrorHandling
+_02058760:
+ add r0, r4, #0x0
+ bl FUN_02058490
+ pop {r4, pc}
+
+ thumb_func_start FUN_02058768
+FUN_02058768: ; 0x02058768
+ ldr r3, _02058770 ; =FUN_0205837C
+ mov r1, #0x6
+ bx r3
+ nop
+_02058770: .word FUN_0205837C
+
+ thumb_func_start FUN_02058774
+FUN_02058774: ; 0x02058774
+ ldr r3, _0205877C ; =FUN_02058384
+ mov r1, #0x6
+ bx r3
+ nop
+_0205877C: .word FUN_02058384
+
+ thumb_func_start FUN_02058780
+FUN_02058780: ; 0x02058780
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl FUN_02058368
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_020583CC
+ mov r6, #0x4a
+ add r5, r0, #0x0
+ lsl r6, r6, #0x2
+_02058796:
+ add r0, r5, #0x0
+ bl FUN_02058830
+ cmp r0, #0x0
+ beq _020587A6
+ add r0, r5, #0x0
+ bl FUN_02058908
+_020587A6:
+ add r5, r5, r6
+ sub r4, r4, #0x1
+ bne _02058796
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_020587B0
+FUN_020587B0: ; 0x020587B0
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl FUN_02058368
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_020583CC
+ mov r6, #0x4a
+ add r5, r0, #0x0
+ lsl r6, r6, #0x2
+_020587C6:
+ add r0, r5, #0x0
+ bl FUN_02058830
+ cmp r0, #0x0
+ beq _020587D6
+ add r0, r5, #0x0
+ bl FUN_02058914
+_020587D6:
+ add r5, r5, r6
+ sub r4, r4, #0x1
+ bne _020587C6
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_020587E0
+FUN_020587E0: ; 0x020587E0
+ push {r3, lr}
+ mov r1, #0x1
+ bl FUN_02058390
+ cmp r0, #0x0
+ beq _020587F0
+ mov r0, #0x1
+ pop {r3, pc}
+_020587F0:
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_020587F4
+FUN_020587F4: ; 0x020587F4
+ push {r4, lr}
+ add r4, r1, #0x0
+ bl FUN_02058578
+ add r1, r4, #0x0
+ bl FUN_02058390
+ pop {r4, pc}
+
+ thumb_func_start FUN_02058804
+FUN_02058804: ; 0x02058804
+ push {r3, lr}
+ cmp r1, #0x0
+ bne _02058812
+ mov r1, #0x8
+ bl FUN_0205837C
+ pop {r3, pc}
+_02058812:
+ mov r1, #0x8
+ bl FUN_02058384
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205881C
+FUN_0205881C: ; 0x0205881C
+ push {r3, lr}
+ mov r1, #0x8
+ bl FUN_02058390
+ cmp r0, #0x0
+ bne _0205882C
+ mov r0, #0x1
+ pop {r3, pc}
+_0205882C:
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_02058830
+FUN_02058830: ; 0x02058830
+ ldr r3, _02058838 ; =FUN_0205842C
+ mov r1, #0x1
+ bx r3
+ nop
+_02058838: .word FUN_0205842C
+
+ thumb_func_start FUN_0205883C
+FUN_0205883C: ; 0x0205883C
+ ldr r3, _02058844 ; =FUN_02058410
+ mov r1, #0x2
+ bx r3
+ nop
+_02058844: .word FUN_02058410
+
+ thumb_func_start FUN_02058848
+FUN_02058848: ; 0x02058848
+ ldr r3, _02058850 ; =FUN_02058418
+ mov r1, #0x2
+ bx r3
+ nop
+_02058850: .word FUN_02058418
+
+ thumb_func_start FUN_02058854
+FUN_02058854: ; 0x02058854
+ ldr r3, _0205885C ; =FUN_0205842C
+ mov r1, #0x2
+ bx r3
+ nop
+_0205885C: .word FUN_0205842C
+
+ thumb_func_start FUN_02058860
+FUN_02058860: ; 0x02058860
+ ldr r3, _02058868 ; =FUN_02058410
+ mov r1, #0x4
+ bx r3
+ nop
+_02058868: .word FUN_02058410
+
+ thumb_func_start FUN_0205886C
+FUN_0205886C: ; 0x0205886C
+ ldr r3, _02058874 ; =FUN_02058418
+ mov r1, #0x8
+ bx r3
+ nop
+_02058874: .word FUN_02058418
+
+ thumb_func_start FUN_02058878
+FUN_02058878: ; 0x02058878
+ ldr r3, _02058880 ; =FUN_02058410
+ mov r1, #0x1
+ lsl r1, r1, #0xe
+ bx r3
+ .balign 4
+_02058880: .word FUN_02058410
+
+ thumb_func_start FUN_02058884
+FUN_02058884: ; 0x02058884
+ ldr r3, _0205888C ; =FUN_0205842C
+ mov r1, #0x1
+ lsl r1, r1, #0xe
+ bx r3
+ .balign 4
+_0205888C: .word FUN_0205842C
+
+ thumb_func_start FUN_02058890
+FUN_02058890: ; 0x02058890
+ ldr r3, _02058898 ; =FUN_0205842C
+ mov r1, #0x2
+ lsl r1, r1, #0x8
+ bx r3
+ .balign 4
+_02058898: .word FUN_0205842C
+
+ thumb_func_start FUN_0205889C
+FUN_0205889C: ; 0x0205889C
+ push {r3, lr}
+ cmp r1, #0x1
+ bne _020588AC
+ mov r1, #0x2
+ lsl r1, r1, #0x8
+ bl FUN_02058410
+ pop {r3, pc}
+_020588AC:
+ mov r1, #0x2
+ lsl r1, r1, #0x8
+ bl FUN_02058418
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_020588B8
+FUN_020588B8: ; 0x020588B8
+ push {r3, lr}
+ cmp r1, #0x1
+ bne _020588C8
+ mov r1, #0x1
+ lsl r1, r1, #0x12
+ bl FUN_02058418
+ pop {r3, pc}
+_020588C8:
+ mov r1, #0x1
+ lsl r1, r1, #0x12
+ bl FUN_02058410
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_020588D4
+FUN_020588D4: ; 0x020588D4
+ push {r3, lr}
+ mov r1, #0x2
+ lsl r1, r1, #0x12
+ bl FUN_0205842C
+ cmp r0, #0x1
+ beq _020588E6
+ mov r0, #0x1
+ pop {r3, pc}
+_020588E6:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_020588EC
+FUN_020588EC: ; 0x020588EC
+ push {r3, lr}
+ cmp r1, #0x1
+ bne _020588FC
+ mov r1, #0x2
+ lsl r1, r1, #0x12
+ bl FUN_02058410
+ pop {r3, pc}
+_020588FC:
+ mov r1, #0x2
+ lsl r1, r1, #0x12
+ bl FUN_02058418
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02058908
+FUN_02058908: ; 0x02058908
+ ldr r3, _02058910 ; =FUN_02058410
+ mov r1, #0x40
+ bx r3
+ nop
+_02058910: .word FUN_02058410
+
+ thumb_func_start FUN_02058914
+FUN_02058914: ; 0x02058914
+ ldr r3, _0205891C ; =FUN_02058418
+ mov r1, #0x40
+ bx r3
+ nop
+_0205891C: .word FUN_02058418
+
+ thumb_func_start FUN_02058920
+FUN_02058920: ; 0x02058920
+ push {r3, lr}
+ mov r1, #0x40
+ bl FUN_0205842C
+ cmp r0, #0x1
+ bne _02058930
+ mov r0, #0x1
+ pop {r3, pc}
+_02058930:
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_02058934
+FUN_02058934: ; 0x02058934
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02058578
+ bl FUN_020587E0
+ cmp r0, #0x0
+ bne _02058948
+ mov r0, #0x0
+ pop {r4, pc}
+_02058948:
+ mov r1, #0x1
+ add r0, r4, #0x0
+ lsl r1, r1, #0xe
+ bl FUN_02058424
+ cmp r0, #0x0
+ beq _0205895A
+ mov r0, #0x1
+ pop {r4, pc}
+_0205895A:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02058960
+FUN_02058960: ; 0x02058960
+ push {r3, lr}
+ cmp r1, #0x1
+ bne _02058970
+ mov r1, #0x2
+ lsl r1, r1, #0x16
+ bl FUN_02058410
+ pop {r3, pc}
+_02058970:
+ mov r1, #0x2
+ lsl r1, r1, #0x16
+ bl FUN_02058418
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205897C
+FUN_0205897C: ; 0x0205897C
+ push {r3, lr}
+ mov r1, #0x2
+ lsl r1, r1, #0x16
+ bl FUN_02058424
+ cmp r0, #0x0
+ beq _0205898E
+ mov r0, #0x1
+ pop {r3, pc}
+_0205898E:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02058994
+FUN_02058994: ; 0x02058994
+ push {r3, lr}
+ cmp r1, #0x1
+ bne _020589A4
+ mov r1, #0x1
+ lsl r1, r1, #0xa
+ bl FUN_02058410
+ pop {r3, pc}
+_020589A4:
+ mov r1, #0x1
+ lsl r1, r1, #0xa
+ bl FUN_02058418
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_020589B0
+FUN_020589B0: ; 0x020589B0
+ push {r3, lr}
+ cmp r1, #0x1
+ bne _020589C0
+ mov r1, #0x2
+ lsl r1, r1, #0x18
+ bl FUN_02058410
+ pop {r3, pc}
+_020589C0:
+ mov r1, #0x2
+ lsl r1, r1, #0x18
+ bl FUN_02058418
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_020589CC
+FUN_020589CC: ; 0x020589CC
+ push {r3, lr}
+ mov r1, #0x2
+ lsl r1, r1, #0x18
+ bl FUN_02058424
+ cmp r0, #0x0
+ beq _020589DE
+ mov r0, #0x1
+ pop {r3, pc}
+_020589DE:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_020589E4
+FUN_020589E4: ; 0x020589E4
+ push {r3, lr}
+ cmp r1, #0x1
+ bne _020589F4
+ mov r1, #0x1
+ lsl r1, r1, #0x1a
+ bl FUN_02058410
+ pop {r3, pc}
+_020589F4:
+ mov r1, #0x1
+ lsl r1, r1, #0x1a
+ bl FUN_02058418
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02058A00
+FUN_02058A00: ; 0x02058A00
+ push {r3, lr}
+ mov r1, #0x1
+ lsl r1, r1, #0x1a
+ bl FUN_02058424
+ cmp r0, #0x0
+ beq _02058A12
+ mov r0, #0x1
+ pop {r3, pc}
+_02058A12:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02058A18
+FUN_02058A18: ; 0x02058A18
+ push {r3, lr}
+ cmp r1, #0x1
+ bne _02058A28
+ mov r1, #0x2
+ lsl r1, r1, #0x1a
+ bl FUN_02058410
+ pop {r3, pc}
+_02058A28:
+ mov r1, #0x2
+ lsl r1, r1, #0x1a
+ bl FUN_02058418
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02058A34
+FUN_02058A34: ; 0x02058A34
+ push {r3, lr}
+ mov r1, #0x2
+ lsl r1, r1, #0x1a
+ bl FUN_02058424
+ cmp r0, #0x0
+ beq _02058A46
+ mov r0, #0x1
+ pop {r3, pc}
+_02058A46:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02058A4C
+FUN_02058A4C: ; 0x02058A4C
+ push {r3, lr}
+ cmp r1, #0x1
+ bne _02058A5C
+ mov r1, #0x1
+ lsl r1, r1, #0x1c
+ bl FUN_02058410
+ pop {r3, pc}
+_02058A5C:
+ mov r1, #0x1
+ lsl r1, r1, #0x1c
+ bl FUN_02058418
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02058A68
+FUN_02058A68: ; 0x02058A68
+ push {r3, lr}
+ mov r1, #0x1
+ lsl r1, r1, #0x1c
+ bl FUN_02058424
+ cmp r0, #0x0
+ beq _02058A7A
+ mov r0, #0x1
+ pop {r3, pc}
+_02058A7A:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02058A80
+FUN_02058A80: ; 0x02058A80
+ push {r3, lr}
+ cmp r1, #0x1
+ bne _02058A90
+ mov r1, #0x1
+ lsl r1, r1, #0x18
+ bl FUN_02058410
+ pop {r3, pc}
+_02058A90:
+ mov r1, #0x1
+ lsl r1, r1, #0x18
+ bl FUN_02058418
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02058A9C
+FUN_02058A9C: ; 0x02058A9C
+ push {r3, lr}
+ mov r1, #0x1
+ lsl r1, r1, #0x18
+ bl FUN_02058424
+ cmp r0, #0x0
+ beq _02058AAE
+ mov r0, #0x1
+ pop {r3, pc}
+_02058AAE:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02058AB4
+FUN_02058AB4: ; 0x02058AB4
+ push {r3, lr}
+ mov r1, #0x10
+ bl FUN_02058424
+ cmp r0, #0x0
+ beq _02058AC4
+ mov r0, #0x1
+ pop {r3, pc}
+_02058AC4:
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_02058AC8
+FUN_02058AC8: ; 0x02058AC8
+ push {r3, lr}
+ cmp r1, #0x1
+ bne _02058AD8
+ mov r1, #0x2
+ lsl r1, r1, #0x1c
+ bl FUN_02058410
+ pop {r3, pc}
+_02058AD8:
+ mov r1, #0x2
+ lsl r1, r1, #0x1c
+ bl FUN_02058418
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02058AE4
+FUN_02058AE4: ; 0x02058AE4
+ push {r3, lr}
+ mov r1, #0x2
+ lsl r1, r1, #0x1c
+ bl FUN_02058424
+ cmp r0, #0x0
+ beq _02058AF6
+ mov r0, #0x1
+ pop {r3, pc}
+_02058AF6:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02058AFC
+FUN_02058AFC: ; 0x02058AFC
+ ldr r0, [r0, #0x4c]
+ bx lr
+
+ thumb_func_start FUN_02058B00
+FUN_02058B00: ; 0x02058B00
+ str r1, [r0, #0x4c]
+ bx lr
+
+ thumb_func_start FUN_02058B04
+FUN_02058B04: ; 0x02058B04
+ ldr r0, [r0, #0x50]
+ bx lr
+
+ thumb_func_start FUN_02058B08
+FUN_02058B08: ; 0x02058B08
+ str r1, [r0, #0x50]
+ bx lr
+
+ thumb_func_start FUN_02058B0C
+FUN_02058B0C: ; 0x02058B0C
+ ldr r0, [r0, #0x54]
+ bx lr
+
+ thumb_func_start FUN_02058B10
+FUN_02058B10: ; 0x02058B10
+ str r1, [r0, #0x54]
+ bx lr
+
+ thumb_func_start FUN_02058B14
+FUN_02058B14: ; 0x02058B14
+ ldr r0, [r0, #0x58]
+ bx lr
+
+ thumb_func_start FUN_02058B18
+FUN_02058B18: ; 0x02058B18
+ str r1, [r0, #0x58]
+ bx lr
+
+ thumb_func_start FUN_02058B1C
+FUN_02058B1C: ; 0x02058B1C
+ ldr r0, [r0, #0x5c]
+ bx lr
+
+ thumb_func_start FUN_02058B20
+FUN_02058B20: ; 0x02058B20
+ str r1, [r0, #0x5c]
+ bx lr
+
+ thumb_func_start FUN_02058B24
+FUN_02058B24: ; 0x02058B24
+ ldr r0, [r0, #0x60]
+ bx lr
+
+ thumb_func_start FUN_02058B28
+FUN_02058B28: ; 0x02058B28
+ str r1, [r0, #0x60]
+ bx lr
+
+ thumb_func_start FUN_02058B2C
+FUN_02058B2C: ; 0x02058B2C
+ ldr r0, [r0, #0x64]
+ bx lr
+
+ thumb_func_start FUN_02058B30
+FUN_02058B30: ; 0x02058B30
+ str r1, [r0, #0x64]
+ bx lr
+
+ thumb_func_start FUN_02058B34
+FUN_02058B34: ; 0x02058B34
+ ldr r2, [r0, #0x64]
+ add r1, r2, r1
+ str r1, [r0, #0x64]
+ bx lr
+
+ thumb_func_start FUN_02058B3C
+FUN_02058B3C: ; 0x02058B3C
+ ldr r0, [r0, #0x68]
+ bx lr
+
+ thumb_func_start FUN_02058B40
+FUN_02058B40: ; 0x02058B40
+ str r1, [r0, #0x68]
+ bx lr
+
+ thumb_func_start FUN_02058B44
+FUN_02058B44: ; 0x02058B44
+ ldr r2, [r0, #0x68]
+ add r1, r2, r1
+ str r1, [r0, #0x68]
+ bx lr
+
+ thumb_func_start FUN_02058B4C
+FUN_02058B4C: ; 0x02058B4C
+ ldr r0, [r0, #0x6c]
+ bx lr
+
+ thumb_func_start FUN_02058B50
+FUN_02058B50: ; 0x02058B50
+ str r1, [r0, #0x6c]
+ bx lr
+
+ thumb_func_start FUN_02058B54
+FUN_02058B54: ; 0x02058B54
+ ldr r2, [r0, #0x6c]
+ add r1, r2, r1
+ str r1, [r0, #0x6c]
+ bx lr
+
+ thumb_func_start FUN_02058B5C
+FUN_02058B5C: ; 0x02058B5C
+ add r2, r0, #0x0
+ add r2, #0x70
+ add r3, r1, #0x0
+ ldmia r2!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldr r0, [r2, #0x0]
+ str r0, [r3, #0x0]
+ bx lr
+
+ thumb_func_start FUN_02058B6C
+FUN_02058B6C: ; 0x02058B6C
+ add r3, r1, #0x0
+ add r2, r0, #0x0
+ ldmia r3!, {r0-r1}
+ add r2, #0x70
+ stmia r2!, {r0-r1}
+ ldr r0, [r3, #0x0]
+ str r0, [r2, #0x0]
+ bx lr
+
+ thumb_func_start FUN_02058B7C
+FUN_02058B7C: ; 0x02058B7C
+ add r0, #0x70
+ bx lr
+
+ thumb_func_start FUN_02058B80
+FUN_02058B80: ; 0x02058B80
+ ldr r0, [r0, #0x74]
+ bx lr
+
+ thumb_func_start FUN_02058B84
+FUN_02058B84: ; 0x02058B84
+ add r2, r0, #0x0
+ add r2, #0x7c
+ add r3, r1, #0x0
+ ldmia r2!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldr r0, [r2, #0x0]
+ str r0, [r3, #0x0]
+ bx lr
+
+ thumb_func_start FUN_02058B94
+FUN_02058B94: ; 0x02058B94
+ add r3, r1, #0x0
+ add r2, r0, #0x0
+ ldmia r3!, {r0-r1}
+ add r2, #0x7c
+ stmia r2!, {r0-r1}
+ ldr r0, [r3, #0x0]
+ str r0, [r2, #0x0]
+ bx lr
+
+ thumb_func_start FUN_02058BA4
+FUN_02058BA4: ; 0x02058BA4
+ add r2, r0, #0x0
+ add r2, #0x88
+ add r3, r1, #0x0
+ ldmia r2!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldr r0, [r2, #0x0]
+ str r0, [r3, #0x0]
+ bx lr
+
+ thumb_func_start FUN_02058BB4
+FUN_02058BB4: ; 0x02058BB4
+ add r3, r1, #0x0
+ add r2, r0, #0x0
+ ldmia r3!, {r0-r1}
+ add r2, #0x88
+ stmia r2!, {r0-r1}
+ ldr r0, [r3, #0x0]
+ str r0, [r2, #0x0]
+ bx lr
+
+ thumb_func_start FUN_02058BC4
+FUN_02058BC4: ; 0x02058BC4
+ add r2, r0, #0x0
+ add r2, #0x94
+ add r3, r1, #0x0
+ ldmia r2!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldr r0, [r2, #0x0]
+ str r0, [r3, #0x0]
+ bx lr
+
+ thumb_func_start FUN_02058BD4
+FUN_02058BD4: ; 0x02058BD4
+ add r3, r1, #0x0
+ add r2, r0, #0x0
+ ldmia r3!, {r0-r1}
+ add r2, #0x94
+ stmia r2!, {r0-r1}
+ ldr r0, [r3, #0x0]
+ str r0, [r2, #0x0]
+ bx lr
+
+ thumb_func_start FUN_02058BE4
+FUN_02058BE4: ; 0x02058BE4
+ push {r3, lr}
+ bl FUN_02058B80
+ asr r1, r0, #0x3
+ asr r0, r1, #0xb
+ lsr r0, r0, #0x14
+ add r0, r1, r0
+ asr r0, r0, #0xc
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02058BF8
+FUN_02058BF8: ; 0x02058BF8
+ strh r1, [r0, #0x0]
+ bx lr
+
+ thumb_func_start FUN_02058BFC
+FUN_02058BFC: ; 0x02058BFC
+ ldrh r0, [r0, #0x0]
+ bx lr
+
+ thumb_func_start FUN_02058C00
+FUN_02058C00: ; 0x02058C00
+ strh r1, [r0, #0x2]
+ bx lr
+
+ thumb_func_start FUN_02058C04
+FUN_02058C04: ; 0x02058C04
+ ldrh r0, [r0, #0x2]
+ bx lr
+
+ thumb_func_start FUN_02058C08
+FUN_02058C08: ; 0x02058C08
+ strh r1, [r0, #0x4]
+ bx lr
+
+ thumb_func_start FUN_02058C0C
+FUN_02058C0C: ; 0x02058C0C
+ ldrh r0, [r0, #0x4]
+ bx lr
+
+ thumb_func_start FUN_02058C10
+FUN_02058C10: ; 0x02058C10
+ strh r1, [r0, #0x6]
+ bx lr
+
+ thumb_func_start FUN_02058C14
+FUN_02058C14: ; 0x02058C14
+ ldrh r0, [r0, #0x6]
+ bx lr
+
+ thumb_func_start FUN_02058C18
+FUN_02058C18: ; 0x02058C18
+ strh r1, [r0, #0x8]
+ bx lr
+
+ thumb_func_start FUN_02058C1C
+FUN_02058C1C: ; 0x02058C1C
+ ldrh r0, [r0, #0x8]
+ bx lr
+
+ thumb_func_start FUN_02058C20
+FUN_02058C20: ; 0x02058C20
+ strh r1, [r0, #0xa]
+ bx lr
+
+ thumb_func_start FUN_02058C24
+FUN_02058C24: ; 0x02058C24
+ ldrh r0, [r0, #0xa]
+ bx lr
+
+ thumb_func_start FUN_02058C28
+FUN_02058C28: ; 0x02058C28
+ strh r1, [r0, #0xc]
+ bx lr
+
+ thumb_func_start FUN_02058C2C
+FUN_02058C2C: ; 0x02058C2C
+ mov r1, #0xc
+ ldrsh r0, [r0, r1]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02058C34
+FUN_02058C34: ; 0x02058C34
+ push {r3, lr}
+ cmp r2, #0x0
+ beq _02058C44
+ cmp r2, #0x1
+ beq _02058C48
+ cmp r2, #0x2
+ beq _02058C4C
+ b _02058C50
+_02058C44:
+ strh r1, [r0, #0xe]
+ pop {r3, pc}
+_02058C48:
+ strh r1, [r0, #0x10]
+ pop {r3, pc}
+_02058C4C:
+ strh r1, [r0, #0x12]
+ pop {r3, pc}
+_02058C50:
+ bl ErrorHandling
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02058C58
+FUN_02058C58: ; 0x02058C58
+ push {r3, lr}
+ cmp r1, #0x0
+ beq _02058C68
+ cmp r1, #0x1
+ beq _02058C6C
+ cmp r1, #0x2
+ beq _02058C70
+ b _02058C74
+_02058C68:
+ ldrh r0, [r0, #0xe]
+ pop {r3, pc}
+_02058C6C:
+ ldrh r0, [r0, #0x10]
+ pop {r3, pc}
+_02058C70:
+ ldrh r0, [r0, #0x12]
+ pop {r3, pc}
+_02058C74:
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_02058C7C
+FUN_02058C7C: ; 0x02058C7C
+ strh r1, [r0, #0x14]
+ bx lr
+
+ thumb_func_start FUN_02058C80
+FUN_02058C80: ; 0x02058C80
+ mov r1, #0x14
+ ldrsh r0, [r0, r1]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02058C88
+FUN_02058C88: ; 0x02058C88
+ strh r1, [r0, #0x16]
+ bx lr
+
+ thumb_func_start FUN_02058C8C
+FUN_02058C8C: ; 0x02058C8C
+ mov r1, #0x16
+ ldrsh r0, [r0, r1]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02058C94
+FUN_02058C94: ; 0x02058C94
+ strh r1, [r0, #0x18]
+ bx lr
+
+ thumb_func_start FUN_02058C98
+FUN_02058C98: ; 0x02058C98
+ ldrh r0, [r0, #0x18]
+ bx lr
+
+ thumb_func_start FUN_02058C9C
+FUN_02058C9C: ; 0x02058C9C
+ str r1, [r0, #0x1c]
+ bx lr
+
+ thumb_func_start FUN_02058CA0
+FUN_02058CA0: ; 0x02058CA0
+ ldr r0, [r0, #0x1c]
+ bx lr
+
+ thumb_func_start FUN_02058CA4
+FUN_02058CA4: ; 0x02058CA4
+ strh r1, [r0, #0x1a]
+ bx lr
+
+ thumb_func_start FUN_02058CA8
+FUN_02058CA8: ; 0x02058CA8
+ ldrh r0, [r0, #0x1a]
+ bx lr
+
+ thumb_func_start FUN_02058CAC
+FUN_02058CAC: ; 0x02058CAC
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ add r7, r1, #0x0
+ str r2, [sp, #0x0]
+ mov r4, #0x0
+ add r5, r2, #0x0
+_02058CB8:
+ add r0, r5, #0x0
+ bl FUN_02058CE0
+ cmp r0, #0x0
+ bne _02058CD4
+ add r0, r5, #0x0
+ bl FUN_02058BFC
+ cmp r6, r0
+ bne _02058CD4
+ ldr r0, [sp, #0x0]
+ lsl r1, r4, #0x5
+ add r0, r0, r1
+ pop {r3-r7, pc}
+_02058CD4:
+ add r4, r4, #0x1
+ add r5, #0x20
+ cmp r4, r7
+ blt _02058CB8
+ mov r0, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02058CE0
+FUN_02058CE0: ; 0x02058CE0
+ push {r3, lr}
+ bl FUN_02058C24
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ ldr r0, _02058CF8 ; =0x0000FFFF
+ cmp r1, r0
+ bne _02058CF4
+ mov r0, #0x1
+ pop {r3, pc}
+_02058CF4:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+_02058CF8: .word 0x0000FFFF
+
+ thumb_func_start FUN_02058CFC
+FUN_02058CFC: ; 0x02058CFC
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02058CE0
+ cmp r0, #0x1
+ beq _02058D0C
+ bl ErrorHandling
+_02058D0C:
+ add r0, r4, #0x0
+ bl FUN_02058C1C
+ pop {r4, pc}
+
+ thumb_func_start FUN_02058D14
+FUN_02058D14: ; 0x02058D14
+ push {r4, lr}
+ add r4, r0, #0x0
+ cmp r4, #0x37
+ blo _02058D20
+ bl ErrorHandling
+_02058D20:
+ ldr r0, _02058D28 ; =0x020F6364
+ lsl r1, r4, #0x2
+ ldr r0, [r0, r1]
+ pop {r4, pc}
+ .balign 4
+_02058D28: .word 0x020F6364
+
+ thumb_func_start FUN_02058D2C
+FUN_02058D2C: ; 0x02058D2C
+ ldr r0, [r0, #0x4]
+ bx lr
+
+ thumb_func_start FUN_02058D30
+FUN_02058D30: ; 0x02058D30
+ ldr r0, [r0, #0x8]
+ bx lr
+
+ thumb_func_start FUN_02058D34
+FUN_02058D34: ; 0x02058D34
+ ldr r0, [r0, #0xc]
+ bx lr
+
+ thumb_func_start FUN_02058D38
+FUN_02058D38: ; 0x02058D38
+ ldr r0, [r0, #0x0]
+ bx lr
+
+ thumb_func_start FUN_02058D3C
+FUN_02058D3C: ; 0x02058D3C
+ ldr r0, [r0, #0x4]
+ bx lr
+
+ thumb_func_start FUN_02058D40
+FUN_02058D40: ; 0x02058D40
+ ldr r0, [r0, #0x8]
+ bx lr
+
+ thumb_func_start FUN_02058D44
+FUN_02058D44: ; 0x02058D44
+ ldr r0, [r0, #0xc]
+ bx lr
+
+ thumb_func_start FUN_02058D48
+FUN_02058D48: ; 0x02058D48
+ ldr r0, [r0, #0x10]
+ bx lr
+
+ thumb_func_start FUN_02058D4C
+FUN_02058D4C: ; 0x02058D4C
+ push {r3, lr}
+ ldr r3, _02058D6C ; =0x021F9494
+ ldr r1, _02058D70 ; =0x0000FFFF
+_02058D52:
+ ldr r2, [r3, #0x0]
+ cmp r2, r0
+ bne _02058D5C
+ ldr r0, [r3, #0x4]
+ pop {r3, pc}
+_02058D5C:
+ add r3, #0x8
+ ldr r2, [r3, #0x0]
+ cmp r2, r1
+ bne _02058D52
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+_02058D6C: .word 0x021F9494
+_02058D70: .word 0x0000FFFF
+
+ thumb_func_start FUN_02058D74
+FUN_02058D74: ; 0x02058D74
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ add r7, r2, #0x0
+ bl FUN_02058368
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_020583CC
+ add r5, r0, #0x0
+_02058D8A:
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_02058424
+ cmp r0, #0x0
+ beq _02058DAE
+ add r0, r5, #0x0
+ bl FUN_02058B2C
+ cmp r6, r0
+ bne _02058DAE
+ add r0, r5, #0x0
+ bl FUN_02058B4C
+ cmp r7, r0
+ bne _02058DAE
+ add r0, r5, #0x0
+ pop {r3-r7, pc}
+_02058DAE:
+ mov r0, #0x4a
+ lsl r0, r0, #0x2
+ add r5, r5, r0
+ sub r4, r4, #0x1
+ bne _02058D8A
+ mov r0, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02058DBC
+FUN_02058DBC: ; 0x02058DBC
+ push {r4-r6, lr}
+ add r4, r1, #0x0
+ ldr r1, [r4, #0x0]
+ add r6, r2, #0x0
+ asr r2, r1, #0x4
+ asr r1, r2, #0xb
+ lsr r1, r1, #0x14
+ add r1, r2, r1
+ asr r1, r1, #0xc
+ add r5, r0, #0x0
+ bl FUN_02058B30
+ ldr r1, [r4, #0x4]
+ add r0, r5, #0x0
+ asr r2, r1, #0x3
+ asr r1, r2, #0xb
+ lsr r1, r1, #0x14
+ add r1, r2, r1
+ asr r1, r1, #0xc
+ bl FUN_02058B40
+ ldr r1, [r4, #0x8]
+ add r0, r5, #0x0
+ asr r2, r1, #0x4
+ asr r1, r2, #0xb
+ lsr r1, r1, #0x14
+ add r1, r2, r1
+ asr r1, r1, #0xc
+ bl FUN_02058B50
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02058B6C
+ add r0, r5, #0x0
+ bl FUN_02059C60
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_020584A4
+ add r0, r5, #0x0
+ bl FUN_0205AE80
+ add r0, r5, #0x0
+ mov r1, #0x4
+ bl FUN_02058410
+ add r0, r5, #0x0
+ mov r1, #0xa
+ bl FUN_02058418
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02058E28
+FUN_02058E28: ; 0x02058E28
+ push {r3-r6, lr}
+ sub sp, #0xc
+ add r4, r2, #0x0
+ mov r2, #0x2
+ add r6, r3, #0x0
+ lsl r3, r1, #0x10
+ lsl r2, r2, #0xe
+ add r2, r3, r2
+ add r5, r0, #0x0
+ str r2, [sp, #0x0]
+ bl FUN_02058B30
+ lsl r0, r4, #0xf
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02058B40
+ mov r0, #0x2
+ lsl r1, r6, #0x10
+ lsl r0, r0, #0xe
+ add r0, r1, r0
+ str r0, [sp, #0x8]
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02058B50
+ add r0, r5, #0x0
+ add r1, sp, #0x0
+ bl FUN_02058B6C
+ add r0, r5, #0x0
+ bl FUN_02059C60
+ ldr r1, [sp, #0x20]
+ add r0, r5, #0x0
+ bl FUN_020584A4
+ add r0, r5, #0x0
+ mov r1, #0x4
+ bl FUN_02058410
+ add r0, r5, #0x0
+ mov r1, #0xa
+ bl FUN_02058418
+ add r0, r5, #0x0
+ bl FUN_0205AE80
+ add sp, #0xc
+ pop {r3-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02058E90
+FUN_02058E90: ; 0x02058E90
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_02058660
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0205847C
+ add r0, r5, #0x0
+ bl FUN_02057EE0
+ add r0, r5, #0x0
+ bl FUN_02058EE8
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02058EB0
+FUN_02058EB0: ; 0x02058EB0
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02058444
+ add r0, r4, #0x0
+ bl FUN_02058860
+ add r0, r4, #0x0
+ bl FUN_0205815C
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02058EC8
+FUN_02058EC8: ; 0x02058EC8
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02058ECC
+FUN_02058ECC: ; 0x02058ECC
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02058ED0
+FUN_02058ED0: ; 0x02058ED0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02058ED4
+FUN_02058ED4: ; 0x02058ED4
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02058ED8
+FUN_02058ED8: ; 0x02058ED8
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02058EDC
+FUN_02058EDC: ; 0x02058EDC
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02058EE0
+FUN_02058EE0: ; 0x02058EE0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02058EE4
+FUN_02058EE4: ; 0x02058EE4
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02058EE8
+FUN_02058EE8: ; 0x02058EE8
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02058638
+ add r0, r4, #0x0
+ bl FUN_0205BEF8
+ pop {r4, pc}
+
+ thumb_func_start FUN_02058EF8
+FUN_02058EF8: ; 0x02058EF8
+ push {r4, lr}
+ mov r1, #0x2
+ add r4, r0, #0x0
+ bl FUN_020587F4
+ cmp r0, #0x0
+ bne _02058F5C
+ add r0, r4, #0x0
+ bl FUN_02058F94
+ add r0, r4, #0x0
+ bl FUN_02058FAC
+ add r0, r4, #0x0
+ bl FUN_02058FD0
+ add r0, r4, #0x0
+ mov r1, #0x10
+ bl FUN_02058424
+ cmp r0, #0x0
+ beq _02058F2C
+ add r0, r4, #0x0
+ bl FUN_0205B058
+ b _02058F50
+_02058F2C:
+ add r0, r4, #0x0
+ bl FUN_02058920
+ cmp r0, #0x0
+ bne _02058F50
+ add r0, r4, #0x0
+ bl FUN_02058F60
+ cmp r0, #0x1
+ bne _02058F50
+ add r0, r4, #0x0
+ bl FUN_0205BF00
+ cmp r0, #0x0
+ bne _02058F50
+ add r0, r4, #0x0
+ bl FUN_0205864C
+_02058F50:
+ add r0, r4, #0x0
+ bl FUN_02058FF4
+ add r0, r4, #0x0
+ bl FUN_0205902C
+_02058F5C:
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02058F60
+FUN_02058F60: ; 0x02058F60
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02058854
+ cmp r0, #0x1
+ bne _02058F70
+ mov r0, #0x1
+ pop {r4, pc}
+_02058F70:
+ mov r1, #0x6
+ add r0, r4, #0x0
+ lsl r1, r1, #0xa
+ bl FUN_02058424
+ cmp r0, #0x0
+ bne _02058F82
+ mov r0, #0x1
+ pop {r4, pc}
+_02058F82:
+ add r0, r4, #0x0
+ bl FUN_02058480
+ cmp r0, #0x32
+ bne _02058F90
+ mov r0, #0x1
+ pop {r4, pc}
+_02058F90:
+ mov r0, #0x0
+ pop {r4, pc}
+
+ thumb_func_start FUN_02058F94
+FUN_02058F94: ; 0x02058F94
+ push {r4, lr}
+ mov r1, #0x1
+ lsl r1, r1, #0xc
+ add r4, r0, #0x0
+ bl FUN_02058424
+ cmp r0, #0x0
+ beq _02058FAA
+ add r0, r4, #0x0
+ bl FUN_02059D1C
+_02058FAA:
+ pop {r4, pc}
+
+ thumb_func_start FUN_02058FAC
+FUN_02058FAC: ; 0x02058FAC
+ push {r4, lr}
+ mov r1, #0x2
+ lsl r1, r1, #0xa
+ add r4, r0, #0x0
+ bl FUN_02058424
+ cmp r0, #0x0
+ beq _02058FCC
+ add r0, r4, #0x0
+ bl FUN_02059DB4
+ cmp r0, #0x1
+ bne _02058FCC
+ add r0, r4, #0x0
+ bl FUN_02058860
+_02058FCC:
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02058FD0
+FUN_02058FD0: ; 0x02058FD0
+ push {r4, lr}
+ mov r1, #0x4
+ add r4, r0, #0x0
+ bl FUN_02058424
+ cmp r0, #0x0
+ beq _02058FE4
+ add r0, r4, #0x0
+ bl FUN_02059064
+_02058FE4:
+ ldr r1, _02058FF0 ; =0x00010004
+ add r0, r4, #0x0
+ bl FUN_02058418
+ pop {r4, pc}
+ nop
+_02058FF0: .word 0x00010004
+
+ thumb_func_start FUN_02058FF4
+FUN_02058FF4: ; 0x02058FF4
+ push {r4, lr}
+ mov r1, #0x1
+ lsl r1, r1, #0x10
+ add r4, r0, #0x0
+ bl FUN_02058424
+ cmp r0, #0x0
+ beq _0205900C
+ add r0, r4, #0x0
+ bl FUN_020591A8
+ b _0205901E
+_0205900C:
+ add r0, r4, #0x0
+ mov r1, #0x4
+ bl FUN_02058424
+ cmp r0, #0x0
+ beq _0205901E
+ add r0, r4, #0x0
+ bl FUN_020590F4
+_0205901E:
+ ldr r1, _02059028 ; =0x00010004
+ add r0, r4, #0x0
+ bl FUN_02058418
+ pop {r4, pc}
+ .balign 4
+_02059028: .word 0x00010004
+
+ thumb_func_start FUN_0205902C
+FUN_0205902C: ; 0x0205902C
+ push {r4, lr}
+ mov r1, #0x2
+ lsl r1, r1, #0x10
+ add r4, r0, #0x0
+ bl FUN_02058424
+ cmp r0, #0x0
+ beq _02059044
+ add r0, r4, #0x0
+ bl FUN_0205928C
+ b _02059056
+_02059044:
+ add r0, r4, #0x0
+ mov r1, #0x8
+ bl FUN_02058424
+ cmp r0, #0x0
+ beq _02059056
+ add r0, r4, #0x0
+ bl FUN_02059214
+_02059056:
+ ldr r1, _02059060 ; =0x00020008
+ add r0, r4, #0x0
+ bl FUN_02058418
+ pop {r4, pc}
+ .balign 4
+_02059060: .word 0x00020008
+
+ thumb_func_start FUN_02059064
+FUN_02059064: ; 0x02059064
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ bl FUN_02059DB4
+ add r0, r5, #0x0
+ bl FUN_02058934
+ cmp r0, #0x1
+ bne _020590F2
+ add r0, r5, #0x0
+ bl FUN_02058720
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ add r0, r5, #0x0
+ bl FUN_02058730
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ add r0, r5, #0x0
+ bl FUN_021F1DC8
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ add r3, r7, #0x0
+ bl FUN_02059838
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ add r3, r7, #0x0
+ bl FUN_0205941C
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ add r3, r7, #0x0
+ bl FUN_020594C0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ add r3, r7, #0x0
+ bl FUN_02059500
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ add r3, r7, #0x0
+ bl FUN_0205931C
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ add r3, r7, #0x0
+ bl FUN_02059678
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ add r3, r7, #0x0
+ bl FUN_020596A8
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ add r3, r7, #0x0
+ bl FUN_020597A8
+_020590F2:
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_020590F4
+FUN_020590F4: ; 0x020590F4
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ bl FUN_02059DB4
+ add r0, r5, #0x0
+ bl FUN_02058934
+ cmp r0, #0x1
+ bne _020591A6
+ add r0, r5, #0x0
+ bl FUN_02058720
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ add r0, r5, #0x0
+ bl FUN_02058730
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ add r0, r5, #0x0
+ bl FUN_021F1DC8
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ add r3, r7, #0x0
+ bl FUN_02059838
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ add r3, r7, #0x0
+ bl FUN_02059434
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ add r3, r7, #0x0
+ bl FUN_0205944C
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ add r3, r7, #0x0
+ bl FUN_020594C0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ add r3, r7, #0x0
+ bl FUN_02059508
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ add r3, r7, #0x0
+ bl FUN_02059690
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ add r3, r7, #0x0
+ bl FUN_020596C0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ add r3, r7, #0x0
+ bl FUN_020596D8
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ add r3, r7, #0x0
+ bl FUN_02059740
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ add r3, r7, #0x0
+ bl FUN_020597A8
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ add r3, r7, #0x0
+ bl FUN_02059870
+_020591A6:
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_020591A8
+FUN_020591A8: ; 0x020591A8
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ bl FUN_02059DB4
+ add r0, r5, #0x0
+ bl FUN_02058934
+ cmp r0, #0x1
+ bne _02059212
+ add r0, r5, #0x0
+ bl FUN_02058720
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ add r0, r5, #0x0
+ bl FUN_02058730
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ add r0, r5, #0x0
+ bl FUN_021F1DC8
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ add r3, r7, #0x0
+ bl FUN_02059838
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ add r3, r7, #0x0
+ bl FUN_02059508
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ add r3, r7, #0x0
+ bl FUN_020597A8
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ add r3, r7, #0x0
+ bl FUN_020594F4
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ add r3, r7, #0x0
+ bl FUN_02059870
+_02059212:
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02059214
+FUN_02059214: ; 0x02059214
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ bl FUN_02059DB4
+ add r0, r5, #0x0
+ bl FUN_02058934
+ cmp r0, #0x1
+ bne _0205928A
+ add r0, r5, #0x0
+ bl FUN_02058720
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ add r0, r5, #0x0
+ bl FUN_02058730
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ add r0, r5, #0x0
+ bl FUN_021F1DC8
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ add r3, r7, #0x0
+ bl FUN_0205931C
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ add r3, r7, #0x0
+ bl FUN_0205970C
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ add r3, r7, #0x0
+ bl FUN_02059774
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ add r3, r7, #0x0
+ bl FUN_020594C0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ add r3, r7, #0x0
+ bl FUN_02059804
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ add r3, r7, #0x0
+ bl FUN_020595A4
+_0205928A:
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0205928C
+FUN_0205928C: ; 0x0205928C
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ bl FUN_02059DB4
+ add r0, r5, #0x0
+ bl FUN_02058934
+ cmp r0, #0x1
+ bne _0205931A
+ add r0, r5, #0x0
+ bl FUN_02058720
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ add r0, r5, #0x0
+ bl FUN_02058730
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ add r0, r5, #0x0
+ bl FUN_021F1DC8
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ add r3, r7, #0x0
+ bl FUN_0205931C
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ add r3, r7, #0x0
+ bl FUN_0205970C
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ add r3, r7, #0x0
+ bl FUN_02059774
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ add r3, r7, #0x0
+ bl FUN_020594C0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ add r3, r7, #0x0
+ bl FUN_02059804
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ add r3, r7, #0x0
+ bl FUN_020595A4
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ add r3, r7, #0x0
+ bl FUN_02059434
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ add r3, r7, #0x0
+ bl FUN_0205962C
+_0205931A:
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0205931C
+FUN_0205931C: ; 0x0205931C
+ push {r3-r5, lr}
+ sub sp, #0x48
+ add r4, r0, #0x0
+ add r5, r1, #0x0
+ bl FUN_02058A34
+ cmp r0, #0x0
+ bne _020593F4
+ add r0, r5, #0x0
+ bl FUN_02054984
+ cmp r0, #0x1
+ beq _02059340
+ add r0, r5, #0x0
+ bl FUN_020549A0
+ cmp r0, #0x1
+ bne _0205935A
+_02059340:
+ ldr r5, _02059408 ; =0x020F65FC
+ add r3, sp, #0x3c
+ ldmia r5!, {r0-r1}
+ add r2, r3, #0x0
+ stmia r3!, {r0-r1}
+ ldr r0, [r5, #0x0]
+ add r1, r2, #0x0
+ str r0, [r3, #0x0]
+ add r0, r4, #0x0
+ bl FUN_02058BD4
+ add sp, #0x48
+ pop {r3-r5, pc}
+_0205935A:
+ add r0, r5, #0x0
+ bl FUN_02054974
+ cmp r0, #0x1
+ beq _0205936E
+ add r0, r5, #0x0
+ bl FUN_02054990
+ cmp r0, #0x1
+ bne _02059388
+_0205936E:
+ ldr r5, _0205940C ; =0x020F6608
+ add r3, sp, #0x30
+ ldmia r5!, {r0-r1}
+ add r2, r3, #0x0
+ stmia r3!, {r0-r1}
+ ldr r0, [r5, #0x0]
+ add r1, r2, #0x0
+ str r0, [r3, #0x0]
+ add r0, r4, #0x0
+ bl FUN_02058BD4
+ add sp, #0x48
+ pop {r3-r5, pc}
+_02059388:
+ add r0, r5, #0x0
+ bl FUN_020549F0
+ cmp r0, #0x1
+ bne _020593AC
+ ldr r5, _02059410 ; =0x020F65E4
+ add r3, sp, #0x24
+ ldmia r5!, {r0-r1}
+ add r2, r3, #0x0
+ stmia r3!, {r0-r1}
+ ldr r0, [r5, #0x0]
+ add r1, r2, #0x0
+ str r0, [r3, #0x0]
+ add r0, r4, #0x0
+ bl FUN_02058BD4
+ add sp, #0x48
+ pop {r3-r5, pc}
+_020593AC:
+ add r0, r5, #0x0
+ bl FUN_020549E4
+ cmp r0, #0x1
+ bne _020593D0
+ ldr r5, _02059414 ; =0x020F65F0
+ add r3, sp, #0x18
+ ldmia r5!, {r0-r1}
+ add r2, r3, #0x0
+ stmia r3!, {r0-r1}
+ ldr r0, [r5, #0x0]
+ add r1, r2, #0x0
+ str r0, [r3, #0x0]
+ add r0, r4, #0x0
+ bl FUN_02058BD4
+ add sp, #0x48
+ pop {r3-r5, pc}
+_020593D0:
+ add r0, r5, #0x0
+ bl FUN_020549D8
+ cmp r0, #0x1
+ bne _020593F4
+ ldr r5, _02059418 ; =0x020F6614
+ add r3, sp, #0xc
+ ldmia r5!, {r0-r1}
+ add r2, r3, #0x0
+ stmia r3!, {r0-r1}
+ ldr r0, [r5, #0x0]
+ add r1, r2, #0x0
+ str r0, [r3, #0x0]
+ add r0, r4, #0x0
+ bl FUN_02058BD4
+ add sp, #0x48
+ pop {r3-r5, pc}
+_020593F4:
+ add r1, sp, #0x0
+ mov r0, #0x0
+ str r0, [r1, #0x0]
+ str r0, [r1, #0x4]
+ str r0, [r1, #0x8]
+ add r0, r4, #0x0
+ bl FUN_02058BD4
+ add sp, #0x48
+ pop {r3-r5, pc}
+ .balign 4
+_02059408: .word 0x020F65FC
+_0205940C: .word 0x020F6608
+_02059410: .word 0x020F65E4
+_02059414: .word 0x020F65F0
+_02059418: .word 0x020F6614
+
+ thumb_func_start FUN_0205941C
+FUN_0205941C: ; 0x0205941C
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, r1, #0x0
+ bl FUN_0205478C
+ cmp r0, #0x1
+ bne _02059432
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_0224B568
+_02059432:
+ pop {r4, pc}
+
+ thumb_func_start FUN_02059434
+FUN_02059434: ; 0x02059434
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, r1, #0x0
+ bl FUN_0205478C
+ cmp r0, #0x1
+ bne _0205944A
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_0224B568
+_0205944A:
+ pop {r4, pc}
+
+ thumb_func_start FUN_0205944C
+FUN_0205944C: ; 0x0205944C
+ push {r4-r6, lr}
+ add r6, r3, #0x0
+ ldr r1, [r6, #0x4]
+ add r5, r0, #0x0
+ lsl r1, r1, #0x16
+ add r4, r2, #0x0
+ lsr r1, r1, #0x1c
+ beq _020594BC
+ add r1, r4, #0x0
+ bl FUN_02059AF8
+ cmp r0, #0x1
+ bne _02059484
+ ldr r0, [r6, #0x4]
+ lsl r0, r0, #0x16
+ lsr r0, r0, #0x1c
+ cmp r0, #0x1
+ bne _02059478
+ add r0, r5, #0x0
+ bl FUN_02249E6C
+ pop {r4-r6, pc}
+_02059478:
+ cmp r0, #0x2
+ bne _020594BC
+ add r0, r5, #0x0
+ bl FUN_02249E78
+ pop {r4-r6, pc}
+_02059484:
+ add r0, r4, #0x0
+ bl FUN_020549E4
+ cmp r0, #0x1
+ beq _020594A2
+ add r0, r4, #0x0
+ bl FUN_020549F0
+ cmp r0, #0x1
+ beq _020594A2
+ add r0, r4, #0x0
+ bl FUN_020549D8
+ cmp r0, #0x0
+ beq _020594AA
+_020594A2:
+ add r0, r5, #0x0
+ bl FUN_02249E90
+ pop {r4-r6, pc}
+_020594AA:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02059B60
+ cmp r0, #0x1
+ bne _020594BC
+ add r0, r5, #0x0
+ bl FUN_02249E84
+_020594BC:
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_020594C0
+FUN_020594C0: ; 0x020594C0
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, r1, #0x0
+ bl FUN_0205483C
+ cmp r0, #0x1
+ bne _020594EA
+ add r0, r4, #0x0
+ bl FUN_02058A00
+ cmp r0, #0x0
+ bne _020594F2
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_0224B9E0
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_020589E4
+ pop {r4, pc}
+_020594EA:
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_020589E4
+_020594F2:
+ pop {r4, pc}
+
+ thumb_func_start FUN_020594F4
+FUN_020594F4: ; 0x020594F4
+ ldr r3, _020594FC ; =FUN_020589E4
+ mov r1, #0x0
+ bx r3
+ nop
+_020594FC: .word FUN_020589E4
+
+ thumb_func_start FUN_02059500
+FUN_02059500: ; 0x02059500
+ push {r3, lr}
+ bl FUN_02059508
+ pop {r3, pc}
+
+ thumb_func_start FUN_02059508
+FUN_02059508: ; 0x02059508
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r6, r3, #0x0
+ bl FUN_02058578
+ bl FUN_0205881C
+ cmp r0, #0x0
+ beq _020595A2
+ ldr r0, [r6, #0x4]
+ lsl r0, r0, #0x1a
+ lsr r0, r0, #0x1e
+ beq _020595A2
+ add r0, r4, #0x0
+ bl FUN_0205478C
+ cmp r0, #0x1
+ beq _02059578
+ add r0, r4, #0x0
+ bl FUN_02054798
+ cmp r0, #0x1
+ beq _02059578
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02059AC4
+ cmp r0, #0x1
+ beq _02059578
+ add r0, r4, #0x0
+ bl FUN_02054AF0
+ cmp r0, #0x1
+ beq _02059578
+ add r0, r4, #0x0
+ bl FUN_0205483C
+ cmp r0, #0x1
+ beq _02059578
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02059B2C
+ cmp r0, #0x1
+ beq _02059578
+ add r0, r4, #0x0
+ bl FUN_02054974
+ cmp r0, #0x1
+ beq _02059578
+ add r0, r4, #0x0
+ bl FUN_02054990
+ cmp r0, #0x1
+ bne _02059584
+_02059578:
+ mov r1, #0x1
+ add r0, r5, #0x0
+ lsl r1, r1, #0x14
+ bl FUN_02058410
+ pop {r4-r6, pc}
+_02059584:
+ mov r1, #0x2
+ add r0, r5, #0x0
+ lsl r1, r1, #0xe
+ bl FUN_02058424
+ cmp r0, #0x0
+ bne _020595A2
+ add r0, r5, #0x0
+ bl FUN_02249508
+ mov r1, #0x2
+ add r0, r5, #0x0
+ lsl r1, r1, #0xe
+ bl FUN_02058410
+_020595A2:
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_020595A4
+FUN_020595A4: ; 0x020595A4
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r6, r3, #0x0
+ bl FUN_02058578
+ bl FUN_0205881C
+ cmp r0, #0x0
+ beq _0205962A
+ ldr r0, [r6, #0x4]
+ lsl r0, r0, #0x1a
+ lsr r0, r0, #0x1e
+ beq _0205962A
+ add r0, r4, #0x0
+ bl FUN_0205478C
+ cmp r0, #0x1
+ beq _02059614
+ add r0, r4, #0x0
+ bl FUN_02054798
+ cmp r0, #0x1
+ beq _02059614
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02059AC4
+ cmp r0, #0x1
+ beq _02059614
+ add r0, r4, #0x0
+ bl FUN_02054AF0
+ cmp r0, #0x1
+ beq _02059614
+ add r0, r4, #0x0
+ bl FUN_0205483C
+ cmp r0, #0x1
+ beq _02059614
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02059B2C
+ cmp r0, #0x1
+ beq _02059614
+ add r0, r4, #0x0
+ bl FUN_02054974
+ cmp r0, #0x1
+ beq _02059614
+ add r0, r4, #0x0
+ bl FUN_02054990
+ cmp r0, #0x1
+ bne _02059620
+_02059614:
+ mov r1, #0x1
+ add r0, r5, #0x0
+ lsl r1, r1, #0x14
+ bl FUN_02058410
+ pop {r4-r6, pc}
+_02059620:
+ mov r1, #0x1
+ add r0, r5, #0x0
+ lsl r1, r1, #0x14
+ bl FUN_02058418
+_0205962A:
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0205962C
+FUN_0205962C: ; 0x0205962C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_02059AC4
+ cmp r0, #0x1
+ beq _02059674
+ add r0, r4, #0x0
+ bl FUN_0205483C
+ cmp r0, #0x1
+ beq _02059674
+ add r0, r4, #0x0
+ bl FUN_020548F0
+ cmp r0, #0x1
+ beq _02059674
+ add r0, r4, #0x0
+ bl FUN_02054974
+ cmp r0, #0x1
+ beq _02059674
+ add r0, r4, #0x0
+ bl FUN_02054990
+ cmp r0, #0x1
+ beq _02059674
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02059B2C
+ cmp r0, #0x1
+ beq _02059674
+ add r0, r5, #0x0
+ bl FUN_0224BBEC
+_02059674:
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02059678
+FUN_02059678: ; 0x02059678
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, r1, #0x0
+ bl FUN_02054798
+ cmp r0, #0x1
+ bne _0205968E
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_0224BD90
+_0205968E:
+ pop {r4, pc}
+
+ thumb_func_start FUN_02059690
+FUN_02059690: ; 0x02059690
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, r1, #0x0
+ bl FUN_02054798
+ cmp r0, #0x1
+ bne _020596A6
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_0224BD90
+_020596A6:
+ pop {r4, pc}
+
+ thumb_func_start FUN_020596A8
+FUN_020596A8: ; 0x020596A8
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, r1, #0x0
+ bl FUN_02054990
+ cmp r0, #0x1
+ bne _020596BE
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_0224C038
+_020596BE:
+ pop {r4, pc}
+
+ thumb_func_start FUN_020596C0
+FUN_020596C0: ; 0x020596C0
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, r1, #0x0
+ bl FUN_02054990
+ cmp r0, #0x1
+ bne _020596D6
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_0224C038
+_020596D6:
+ pop {r4, pc}
+
+ thumb_func_start FUN_020596D8
+FUN_020596D8: ; 0x020596D8
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, r2, #0x0
+ bl FUN_02054AF0
+ cmp r0, #0x1
+ bne _02059708
+ add r0, r5, #0x0
+ bl FUN_02058B14
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058B1C
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058B24
+ add r3, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_0224B124
+_02059708:
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205970C
+FUN_0205970C: ; 0x0205970C
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, r1, #0x0
+ bl FUN_02054AF0
+ cmp r0, #0x1
+ bne _0205973C
+ add r0, r5, #0x0
+ bl FUN_02058B2C
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058B3C
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058B4C
+ add r3, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_0224B124
+_0205973C:
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02059740
+FUN_02059740: ; 0x02059740
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, r2, #0x0
+ bl FUN_02054974
+ cmp r0, #0x1
+ bne _02059770
+ add r0, r5, #0x0
+ bl FUN_02058B14
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058B1C
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058B24
+ add r3, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_0224B2C4
+_02059770:
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02059774
+FUN_02059774: ; 0x02059774
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, r1, #0x0
+ bl FUN_02054974
+ cmp r0, #0x1
+ bne _020597A4
+ add r0, r5, #0x0
+ bl FUN_02058B2C
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058B3C
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058B4C
+ add r3, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_0224B2C4
+_020597A4:
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_020597A8
+FUN_020597A8: ; 0x020597A8
+ push {r4-r6, lr}
+ add r6, r1, #0x0
+ ldr r1, [r3, #0x4]
+ add r5, r0, #0x0
+ lsl r1, r1, #0x14
+ lsr r1, r1, #0x1e
+ beq _02059802
+ mov r1, #0x1
+ bl FUN_02059C90
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ add r0, r5, #0x0
+ bl FUN_02058A9C
+ cmp r0, #0x0
+ bne _02059802
+ add r0, r4, #0x0
+ bl FUN_02054B20
+ cmp r0, #0x1
+ beq _020597DE
+ add r0, r6, #0x0
+ bl FUN_02054B20
+ cmp r0, #0x1
+ bne _02059802
+_020597DE:
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_02058A80
+ add r0, r4, #0x0
+ bl FUN_02054AF0
+ cmp r0, #0x1
+ bne _020597FA
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_022497E8
+ pop {r4-r6, pc}
+_020597FA:
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_022497E8
+_02059802:
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02059804
+FUN_02059804: ; 0x02059804
+ push {r4, lr}
+ ldr r1, [r3, #0x4]
+ add r4, r0, #0x0
+ lsl r1, r1, #0x14
+ lsr r1, r1, #0x1e
+ beq _02059834
+ bl FUN_02058A9C
+ cmp r0, #0x0
+ beq _02059834
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_02059C90
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_02054B20
+ cmp r0, #0x0
+ bne _02059834
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_02058A80
+_02059834:
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02059838
+FUN_02059838: ; 0x02059838
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02054B6C
+ cmp r0, #0x1
+ bne _02059852
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_02058A4C
+ pop {r3-r5, pc}
+_02059852:
+ add r0, r5, #0x0
+ bl FUN_02058A68
+ cmp r0, #0x1
+ bne _0205986E
+ add r0, r4, #0x0
+ bl FUN_02054B78
+ cmp r0, #0x0
+ bne _0205986E
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_02058A4C
+_0205986E:
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02059870
+FUN_02059870: ; 0x02059870
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02059874
+FUN_02059874: ; 0x02059874
+ push {r3-r7, lr}
+ sub sp, #0x10
+ ldr r7, [sp, #0x28]
+ add r5, r2, #0x0
+ str r1, [sp, #0x4]
+ str r3, [sp, #0x8]
+ add r2, r3, #0x0
+ add r1, r5, #0x0
+ add r3, r7, #0x0
+ add r6, r0, #0x0
+ mov r4, #0x0
+ bl FUN_02059A08
+ cmp r0, #0x1
+ bne _02059896
+ mov r0, #0x1
+ orr r4, r0
+_02059896:
+ add r0, r6, #0x0
+ bl FUN_02058738
+ add r1, sp, #0xc
+ str r1, [sp, #0x0]
+ ldr r1, [sp, #0x4]
+ add r2, r5, #0x0
+ add r3, r7, #0x0
+ bl FUN_0204A770
+ cmp r0, #0x1
+ bne _020598C0
+ mov r0, #0x2
+ orr r4, r0
+ add r1, sp, #0xc
+ mov r0, #0x0
+ ldrsb r0, [r1, r0]
+ cmp r0, #0x0
+ beq _020598C0
+ mov r0, #0x8
+ orr r4, r0
+_020598C0:
+ ldr r3, [sp, #0x2c]
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ add r2, r7, #0x0
+ bl FUN_02059A60
+ cmp r0, #0x1
+ bne _020598D4
+ mov r0, #0x2
+ orr r4, r0
+_020598D4:
+ ldr r2, [sp, #0x8]
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ add r3, r7, #0x0
+ bl FUN_0205995C
+ cmp r0, #0x1
+ bne _020598E8
+ mov r0, #0x4
+ orr r4, r0
+_020598E8:
+ add r0, r4, #0x0
+ add sp, #0x10
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020598F0
+FUN_020598F0: ; 0x020598F0
+ push {r4-r7, lr}
+ sub sp, #0x14
+ add r6, r1, #0x0
+ add r1, sp, #0x8
+ add r5, r0, #0x0
+ add r7, r2, #0x0
+ add r4, r3, #0x0
+ bl FUN_02058B5C
+ ldr r0, [sp, #0x28]
+ str r4, [sp, #0x0]
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ add r1, sp, #0x8
+ add r2, r6, #0x0
+ add r3, r7, #0x0
+ bl FUN_02059874
+ add sp, #0x14
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_02059918
+FUN_02059918: ; 0x02059918
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ bl FUN_02058B2C
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02059BF4
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058B3C
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ bl FUN_02058B4C
+ str r0, [sp, #0x8]
+ add r0, r4, #0x0
+ bl FUN_02059C00
+ str r4, [sp, #0x0]
+ add r3, r0, #0x0
+ ldr r4, [sp, #0x8]
+ ldr r2, [sp, #0x4]
+ add r0, r5, #0x0
+ add r1, r6, r7
+ add r3, r4, r3
+ bl FUN_020598F0
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205995C
+FUN_0205995C: ; 0x0205995C
+ push {r4-r7, lr}
+ sub sp, #0xc
+ str r0, [sp, #0x0]
+ add r5, r1, #0x0
+ add r4, r2, #0x0
+ add r6, r3, #0x0
+ bl FUN_02058578
+ add r7, r0, #0x0
+ bl FUN_020583BC
+ str r0, [sp, #0x8]
+ add r0, r7, #0x0
+ bl FUN_02058368
+ str r0, [sp, #0x4]
+_0205997C:
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0x0]
+ cmp r0, r1
+ beq _020599F4
+ mov r1, #0x1
+ bl FUN_02058424
+ cmp r0, #0x0
+ beq _020599F4
+ mov r1, #0x1
+ ldr r0, [sp, #0x8]
+ lsl r1, r1, #0x12
+ bl FUN_02058424
+ cmp r0, #0x0
+ bne _020599F4
+ ldr r0, [sp, #0x8]
+ bl FUN_02058B2C
+ add r7, r0, #0x0
+ ldr r0, [sp, #0x8]
+ bl FUN_02058B4C
+ cmp r7, r5
+ bne _020599C8
+ cmp r0, r6
+ bne _020599C8
+ ldr r0, [sp, #0x8]
+ bl FUN_02058B3C
+ sub r0, r0, r4
+ bpl _020599BE
+ neg r0, r0
+_020599BE:
+ cmp r0, #0x2
+ bge _020599C8
+ add sp, #0xc
+ mov r0, #0x1
+ pop {r4-r7, pc}
+_020599C8:
+ ldr r0, [sp, #0x8]
+ bl FUN_02058B14
+ add r7, r0, #0x0
+ ldr r0, [sp, #0x8]
+ bl FUN_02058B24
+ cmp r7, r5
+ bne _020599F4
+ cmp r0, r6
+ bne _020599F4
+ ldr r0, [sp, #0x8]
+ bl FUN_02058B3C
+ sub r0, r0, r4
+ bpl _020599EA
+ neg r0, r0
+_020599EA:
+ cmp r0, #0x2
+ bge _020599F4
+ add sp, #0xc
+ mov r0, #0x1
+ pop {r4-r7, pc}
+_020599F4:
+ add r0, sp, #0x8
+ bl FUN_020583D4
+ ldr r0, [sp, #0x4]
+ sub r0, r0, #0x1
+ str r0, [sp, #0x4]
+ bne _0205997C
+ mov r0, #0x0
+ add sp, #0xc
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_02059A08
+FUN_02059A08: ; 0x02059A08
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ add r5, r1, #0x0
+ add r4, r3, #0x0
+ bl FUN_02058AFC
+ add r7, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_02058538
+ mov r1, #0x0
+ mvn r1, r1
+ cmp r0, r1
+ beq _02059A34
+ add r1, r7, r0
+ sub r0, r7, r0
+ cmp r0, r5
+ bgt _02059A30
+ cmp r1, r5
+ bge _02059A34
+_02059A30:
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02059A34:
+ add r0, r6, #0x0
+ bl FUN_02058B0C
+ add r5, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_02058540
+ mov r1, #0x0
+ mvn r1, r1
+ cmp r0, r1
+ beq _02059A5A
+ add r1, r5, r0
+ sub r0, r5, r0
+ cmp r0, r4
+ bgt _02059A56
+ cmp r1, r4
+ bge _02059A5A
+_02059A56:
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02059A5A:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02059A60
+FUN_02059A60: ; 0x02059A60
+ push {r3-r7, lr}
+ add r4, r0, #0x0
+ add r6, r1, #0x0
+ add r7, r2, #0x0
+ add r5, r3, #0x0
+ bl FUN_02058738
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ bl FUN_02058720
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ ldr r0, [sp, #0x0]
+ add r1, r6, #0x0
+ add r2, r7, #0x0
+ bl FUN_0204A6E0
+ add r6, r0, #0x0
+ mov r0, #0x0
+ mvn r0, r0
+ cmp r5, r0
+ bne _02059A92
+ bl ErrorHandling
+_02059A92:
+ cmp r5, #0x4
+ blt _02059A9A
+ bl ErrorHandling
+_02059A9A:
+ ldr r1, _02059ABC ; =0x020F6630
+ lsl r5, r5, #0x2
+ ldr r1, [r1, r5]
+ add r0, r4, #0x0
+ blx r1
+ cmp r0, #0x1
+ beq _02059AB4
+ ldr r1, _02059AC0 ; =0x020F6640
+ add r0, r6, #0x0
+ ldr r1, [r1, r5]
+ blx r1
+ cmp r0, #0x1
+ bne _02059AB8
+_02059AB4:
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02059AB8:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+_02059ABC: .word 0x020F6630
+_02059AC0: .word 0x020F6640
+
+ thumb_func_start FUN_02059AC4
+FUN_02059AC4: ; 0x02059AC4
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_02054B8C
+ cmp r0, #0x0
+ beq _02059AE4
+ add r0, r5, #0x0
+ bl FUN_02058A68
+ cmp r0, #0x0
+ bne _02059AF4
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_02059AE4:
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0205481C
+ cmp r0, #0x0
+ beq _02059AF4
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_02059AF4:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02059AF8
+FUN_02059AF8: ; 0x02059AF8
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_02054BB0
+ cmp r0, #0x0
+ beq _02059B18
+ add r0, r5, #0x0
+ bl FUN_02058A68
+ cmp r0, #0x0
+ bne _02059B28
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_02059B18:
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_02054830
+ cmp r0, #0x0
+ beq _02059B28
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_02059B28:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02059B2C
+FUN_02059B2C: ; 0x02059B2C
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_02054BD4
+ cmp r0, #0x0
+ beq _02059B4C
+ add r0, r5, #0x0
+ bl FUN_02058A68
+ cmp r0, #0x0
+ bne _02059B5C
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_02059B4C:
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_020549AC
+ cmp r0, #0x0
+ beq _02059B5C
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_02059B5C:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02059B60
+FUN_02059B60: ; 0x02059B60
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_02054BD4
+ cmp r0, #0x0
+ beq _02059B80
+ add r0, r5, #0x0
+ bl FUN_02058A68
+ cmp r0, #0x0
+ bne _02059B90
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_02059B80:
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_020549CC
+ cmp r0, #0x0
+ beq _02059B90
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_02059B90:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02059B94
+FUN_02059B94: ; 0x02059B94
+ push {r4, lr}
+ add r4, r1, #0x0
+ bl FUN_02058A68
+ cmp r0, #0x1
+ bne _02059BB0
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_02054B78
+ cmp r0, #0x1
+ bne _02059BB0
+ mov r0, #0x1
+ pop {r4, pc}
+_02059BB0:
+ mov r0, #0x0
+ pop {r4, pc}
+
+ thumb_func_start FUN_02059BB4
+FUN_02059BB4: ; 0x02059BB4
+ push {r4, lr}
+ add r4, r1, #0x0
+ bl FUN_02058A68
+ cmp r0, #0x1
+ bne _02059BD0
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_02054BE0
+ cmp r0, #0x1
+ bne _02059BD0
+ mov r0, #0x1
+ pop {r4, pc}
+_02059BD0:
+ mov r0, #0x0
+ pop {r4, pc}
+
+ thumb_func_start FUN_02059BD4
+FUN_02059BD4: ; 0x02059BD4
+ push {r4, lr}
+ add r4, r1, #0x0
+ bl FUN_02058A68
+ cmp r0, #0x1
+ bne _02059BF0
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_02054BF4
+ cmp r0, #0x1
+ bne _02059BF0
+ mov r0, #0x1
+ pop {r4, pc}
+_02059BF0:
+ mov r0, #0x0
+ pop {r4, pc}
+
+ thumb_func_start FUN_02059BF4
+FUN_02059BF4: ; 0x02059BF4
+ lsl r1, r0, #0x2
+ ldr r0, _02059BFC ; =0x020F6620
+ ldr r0, [r0, r1]
+ bx lr
+ .balign 4
+_02059BFC: .word 0x020F6620
+
+ thumb_func_start FUN_02059C00
+FUN_02059C00: ; 0x02059C00
+ lsl r1, r0, #0x2
+ ldr r0, _02059C08 ; =0x020F6650
+ ldr r0, [r0, r1]
+ bx lr
+ .balign 4
+_02059C08: .word 0x020F6650
+
+ thumb_func_start FUN_02059C0C
+FUN_02059C0C: ; 0x02059C0C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_02058B2C
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058B18
+ add r0, r5, #0x0
+ bl FUN_02058B3C
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058B20
+ add r0, r5, #0x0
+ bl FUN_02058B4C
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058B28
+ add r0, r4, #0x0
+ bl FUN_02059BF4
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058B34
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_02058B44
+ add r0, r4, #0x0
+ bl FUN_02059C00
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058B54
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02059C60
+FUN_02059C60: ; 0x02059C60
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02058B2C
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02058B18
+ add r0, r4, #0x0
+ bl FUN_02058B3C
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02058B20
+ add r0, r4, #0x0
+ bl FUN_02058B4C
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02058B28
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02059C90
+FUN_02059C90: ; 0x02059C90
+ push {r3-r7, lr}
+ add r5, r1, #0x0
+ add r4, r0, #0x0
+ bl FUN_02058B2C
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02059BF4
+ add r7, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02058B4C
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ bl FUN_02059C00
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02058738
+ ldr r2, [sp, #0x0]
+ add r1, r6, r7
+ add r2, r2, r5
+ bl FUN_0204A6E0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02059CC8
+FUN_02059CC8: ; 0x02059CC8
+ push {r3-r6, lr}
+ sub sp, #0xc
+ add r5, r1, #0x0
+ add r1, sp, #0x0
+ add r6, r0, #0x0
+ add r4, r2, #0x0
+ bl FUN_02058B5C
+ cmp r5, #0x3
+ bhi _02059D0E
+ add r0, r5, r5
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02059CE8: ; jump table (using 16-bit offset)
+ .short _02059CF0 - _02059CE8 - 2; case 0
+ .short _02059CF8 - _02059CE8 - 2; case 1
+ .short _02059D00 - _02059CE8 - 2; case 2
+ .short _02059D08 - _02059CE8 - 2; case 3
+_02059CF0:
+ ldr r0, [sp, #0x8]
+ sub r0, r0, r4
+ str r0, [sp, #0x8]
+ b _02059D0E
+_02059CF8:
+ ldr r0, [sp, #0x8]
+ add r0, r0, r4
+ str r0, [sp, #0x8]
+ b _02059D0E
+_02059D00:
+ ldr r0, [sp, #0x0]
+ sub r0, r0, r4
+ str r0, [sp, #0x0]
+ b _02059D0E
+_02059D08:
+ ldr r0, [sp, #0x0]
+ add r0, r0, r4
+ str r0, [sp, #0x0]
+_02059D0E:
+ add r0, r6, #0x0
+ add r1, sp, #0x0
+ bl FUN_02058B6C
+ add sp, #0xc
+ pop {r3-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02059D1C
+FUN_02059D1C: ; 0x02059D1C
+ push {r3-r5, lr}
+ sub sp, #0x18
+ add r1, sp, #0xc
+ add r5, r0, #0x0
+ bl FUN_02058B5C
+ add r3, sp, #0xc
+ ldmia r3!, {r0-r1}
+ add r2, sp, #0x0
+ stmia r2!, {r0-r1}
+ ldr r0, [r3, #0x0]
+ str r0, [r2, #0x0]
+ add r0, r5, #0x0
+ bl FUN_0205897C
+ cmp r0, #0x1
+ bne _02059D4E
+ mov r1, #0x1
+ add r0, r5, #0x0
+ lsl r1, r1, #0xc
+ bl FUN_02058418
+ add sp, #0x18
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_02059D4E:
+ add r0, r5, #0x0
+ bl FUN_02058AE4
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058738
+ add r1, sp, #0x0
+ add r2, r4, #0x0
+ bl FUN_02059EC8
+ add r4, r0, #0x0
+ cmp r4, #0x1
+ bne _02059DA2
+ ldr r0, [sp, #0x4]
+ add r1, sp, #0xc
+ str r0, [sp, #0x10]
+ add r0, r5, #0x0
+ bl FUN_02058B6C
+ add r0, r5, #0x0
+ bl FUN_02058B3C
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058B20
+ ldr r1, [sp, #0x10]
+ add r0, r5, #0x0
+ asr r2, r1, #0x3
+ asr r1, r2, #0xb
+ lsr r1, r1, #0x14
+ add r1, r2, r1
+ asr r1, r1, #0xc
+ bl FUN_02058B40
+ mov r1, #0x1
+ add r0, r5, #0x0
+ lsl r1, r1, #0xc
+ bl FUN_02058418
+ b _02059DAC
+_02059DA2:
+ mov r1, #0x1
+ add r0, r5, #0x0
+ lsl r1, r1, #0xc
+ bl FUN_02058410
+_02059DAC:
+ add r0, r4, #0x0
+ add sp, #0x18
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02059DB4
+FUN_02059DB4: ; 0x02059DB4
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ bl FUN_02058B14
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058B24
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058738
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ add r7, r0, #0x0
+ bl FUN_0204A6E0
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058728
+ add r0, r5, #0x0
+ bl FUN_02058B2C
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058B4C
+ add r2, r0, #0x0
+ add r0, r7, #0x0
+ add r1, r4, #0x0
+ bl FUN_0204A6E0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02058718
+ add r0, r4, #0x0
+ bl FUN_02054C08
+ cmp r0, #0x1
+ bne _02059E18
+ mov r1, #0x2
+ add r0, r5, #0x0
+ lsl r1, r1, #0xa
+ bl FUN_02058410
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_02059E18:
+ mov r1, #0x2
+ add r0, r5, #0x0
+ lsl r1, r1, #0xa
+ bl FUN_02058418
+ mov r0, #0x1
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02059E28
+FUN_02059E28: ; 0x02059E28
+ cmp r0, #0x3
+ bhi _02059E5E
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02059E38: ; jump table (using 16-bit offset)
+ .short _02059E40 - _02059E38 - 2; case 0
+ .short _02059E48 - _02059E38 - 2; case 1
+ .short _02059E50 - _02059E38 - 2; case 2
+ .short _02059E58 - _02059E38 - 2; case 3
+_02059E40:
+ ldr r0, [r1, #0x8]
+ sub r0, r0, r2
+ str r0, [r1, #0x8]
+ bx lr
+_02059E48:
+ ldr r0, [r1, #0x8]
+ add r0, r0, r2
+ str r0, [r1, #0x8]
+ bx lr
+_02059E50:
+ ldr r0, [r1, #0x0]
+ sub r0, r0, r2
+ str r0, [r1, #0x0]
+ bx lr
+_02059E58:
+ ldr r0, [r1, #0x0]
+ add r0, r0, r2
+ str r0, [r1, #0x0]
+_02059E5E:
+ bx lr
+
+ thumb_func_start FUN_02059E60
+FUN_02059E60: ; 0x02059E60
+ lsl r3, r0, #0x10
+ mov r0, #0x2
+ lsl r0, r0, #0xe
+ add r3, r3, r0
+ lsl r1, r1, #0x10
+ str r3, [r2, #0x0]
+ add r0, r1, r0
+ str r0, [r2, #0x8]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02059E74
+FUN_02059E74: ; 0x02059E74
+ lsl r1, r0, #0x2
+ ldr r0, _02059E7C ; =0x020F6660
+ ldr r0, [r0, r1]
+ bx lr
+ .balign 4
+_02059E7C: .word 0x020F6660
+
+ thumb_func_start FUN_02059E80
+FUN_02059E80: ; 0x02059E80
+ cmp r0, r2
+ ble _02059E88
+ mov r0, #0x2
+ bx lr
+_02059E88:
+ cmp r0, r2
+ bge _02059E90
+ mov r0, #0x3
+ bx lr
+_02059E90:
+ cmp r1, r3
+ bgt _02059E98
+ mov r0, #0x1
+ bx lr
+_02059E98:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_02059E9C
+FUN_02059E9C: ; 0x02059E9C
+ push {r4, lr}
+ sub sp, #0x8
+ add r4, r1, #0x0
+ add r1, sp, #0x4
+ str r1, [sp, #0x0]
+ ldr r1, [r4, #0x4]
+ ldr r2, [r4, #0x0]
+ ldr r3, [r4, #0x8]
+ bl FUN_0204A708
+ add r1, sp, #0x4
+ ldrb r1, [r1, #0x0]
+ cmp r1, #0x0
+ bne _02059EBE
+ add sp, #0x8
+ mov r0, #0x0
+ pop {r4, pc}
+_02059EBE:
+ str r0, [r4, #0x4]
+ mov r0, #0x1
+ add sp, #0x8
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02059EC8
+FUN_02059EC8: ; 0x02059EC8
+ push {r3-r5, lr}
+ sub sp, #0x8
+ add r5, r1, #0x0
+ add r1, sp, #0x4
+ str r1, [sp, #0x0]
+ add r4, r2, #0x0
+ ldr r1, [r5, #0x4]
+ ldr r2, [r5, #0x0]
+ ldr r3, [r5, #0x8]
+ bl FUN_0204A708
+ add r1, sp, #0x4
+ ldrb r1, [r1, #0x0]
+ cmp r1, #0x0
+ bne _02059EEC
+ add sp, #0x8
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_02059EEC:
+ cmp r1, #0x2
+ bne _02059EFA
+ cmp r4, #0x0
+ bne _02059EFA
+ add sp, #0x8
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_02059EFA:
+ str r0, [r5, #0x4]
+ mov r0, #0x1
+ add sp, #0x8
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02059F04
+FUN_02059F04: ; 0x02059F04
+ push {r4-r6, lr}
+ add r6, r1, #0x0
+ mov r1, #0x8
+ add r5, r0, #0x0
+ bl FUN_0205858C
+ add r4, r0, #0x0
+ mov r1, #0x0
+ ldr r0, _02059F30 ; =0x020F693C
+ mvn r1, r1
+ bl FUN_0205AAB0
+ strh r0, [r4, #0x2]
+ add r0, r5, #0x0
+ mov r1, #0x0
+ str r6, [r4, #0x4]
+ bl FUN_02058544
+ add r0, r5, #0x0
+ bl FUN_02058848
+ pop {r4-r6, pc}
+ .balign 4
+_02059F30: .word 0x020F693C
+
+ thumb_func_start FUN_02059F34
+FUN_02059F34: ; 0x02059F34
+ ldr r3, _02059F3C ; =FUN_02059F04
+ mov r1, #0x0
+ bx r3
+ nop
+_02059F3C: .word FUN_02059F04
+
+ thumb_func_start FUN_02059F40
+FUN_02059F40: ; 0x02059F40
+ ldr r3, _02059F48 ; =FUN_02059F04
+ mov r1, #0x1
+ bx r3
+ nop
+_02059F48: .word FUN_02059F04
+
+ thumb_func_start FUN_02059F4C
+FUN_02059F4C: ; 0x02059F4C
+ ldr r3, _02059F54 ; =FUN_02059F04
+ mov r1, #0x2
+ bx r3
+ nop
+_02059F54: .word FUN_02059F04
+
+ thumb_func_start FUN_02059F58
+FUN_02059F58: ; 0x02059F58
+ ldr r3, _02059F60 ; =FUN_02059F04
+ mov r1, #0x3
+ bx r3
+ nop
+_02059F60: .word FUN_02059F04
+
+ thumb_func_start FUN_02059F64
+FUN_02059F64: ; 0x02059F64
+ ldr r3, _02059F6C ; =FUN_02059F04
+ mov r1, #0x4
+ bx r3
+ nop
+_02059F6C: .word FUN_02059F04
+
+ thumb_func_start FUN_02059F70
+FUN_02059F70: ; 0x02059F70
+ ldr r3, _02059F78 ; =FUN_02059F04
+ mov r1, #0x5
+ bx r3
+ nop
+_02059F78: .word FUN_02059F04
+
+ thumb_func_start FUN_02059F7C
+FUN_02059F7C: ; 0x02059F7C
+ ldr r3, _02059F84 ; =FUN_02059F04
+ mov r1, #0x6
+ bx r3
+ nop
+_02059F84: .word FUN_02059F04
+
+ thumb_func_start FUN_02059F88
+FUN_02059F88: ; 0x02059F88
+ ldr r3, _02059F90 ; =FUN_02059F04
+ mov r1, #0x7
+ bx r3
+ nop
+_02059F90: .word FUN_02059F04
+
+ thumb_func_start FUN_02059F94
+FUN_02059F94: ; 0x02059F94
+ ldr r3, _02059F9C ; =FUN_02059F04
+ mov r1, #0x8
+ bx r3
+ nop
+_02059F9C: .word FUN_02059F04
+
+ thumb_func_start FUN_02059FA0
+FUN_02059FA0: ; 0x02059FA0
+ ldr r3, _02059FA8 ; =FUN_02059F04
+ mov r1, #0x9
+ bx r3
+ nop
+_02059FA8: .word FUN_02059F04
+
+ thumb_func_start FUN_02059FAC
+FUN_02059FAC: ; 0x02059FAC
+ ldr r3, _02059FB4 ; =FUN_02059F04
+ mov r1, #0xa
+ bx r3
+ nop
+_02059FB4: .word FUN_02059F04
+
+ thumb_func_start FUN_02059FB8
+FUN_02059FB8: ; 0x02059FB8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_020585B0
+ add r4, r0, #0x0
+ mov r2, #0x0
+ ldr r1, [r4, #0x4]
+ add r0, r5, #0x0
+ mvn r2, r2
+ bl FUN_0205ABEC
+ mov r2, #0x0
+ add r1, r0, #0x0
+ mvn r2, r2
+ cmp r1, r2
+ beq _02059FE0
+ add r0, r5, #0x0
+ bl FUN_020584AC
+ b _0205A010
+_02059FE0:
+ ldrh r0, [r4, #0x0]
+ cmp r0, #0x0
+ bne _0205A010
+ mov r0, #0x2
+ ldrsh r1, [r4, r0]
+ sub r1, r1, #0x1
+ strh r1, [r4, #0x2]
+ ldrsh r0, [r4, r0]
+ cmp r0, #0x0
+ bgt _0205A010
+ ldr r0, _0205A018 ; =0x020F693C
+ add r1, r2, #0x0
+ bl FUN_0205AAB0
+ strh r0, [r4, #0x2]
+ mov r1, #0x0
+ ldr r0, [r4, #0x4]
+ mvn r1, r1
+ bl FUN_0205AAD4
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_020584AC
+_0205A010:
+ add r0, r5, #0x0
+ bl FUN_02059C60
+ pop {r3-r5, pc}
+ .balign 4
+_0205A018: .word 0x020F693C
+
+ thumb_func_start FUN_0205A01C
+FUN_0205A01C: ; 0x0205A01C
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0205A020
+FUN_0205A020: ; 0x0205A020
+ push {r3, lr}
+ mov r1, #0xc
+ mov r2, #0xb
+ mov r3, #0x0
+ bl FUN_0205A050
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205A030
+FUN_0205A030: ; 0x0205A030
+ push {r3, lr}
+ mov r1, #0xc
+ add r2, r1, #0x0
+ mov r3, #0x0
+ bl FUN_0205A050
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205A040
+FUN_0205A040: ; 0x0205A040
+ push {r3, lr}
+ mov r1, #0xc
+ mov r2, #0xd
+ mov r3, #0x0
+ bl FUN_0205A050
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205A050
+FUN_0205A050: ; 0x0205A050
+ push {r3-r7, lr}
+ add r4, r1, #0x0
+ add r7, r3, #0x0
+ mov r1, #0x10
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ bl FUN_0205858C
+ str r7, [r0, #0x4]
+ str r4, [r0, #0x8]
+ str r6, [r0, #0xc]
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_02058544
+ add r0, r5, #0x0
+ bl FUN_02058848
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205A078
+FUN_0205A078: ; 0x0205A078
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl FUN_020585B0
+ add r4, r0, #0x0
+ mov r0, #0x0
+ ldrsh r0, [r4, r0]
+ cmp r0, #0x4
+ bhi _0205A16E
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0205A096: ; jump table (using 16-bit offset)
+ .short _0205A0A0 - _0205A096 - 2; case 0
+ .short _0205A0CA - _0205A096 - 2; case 1
+ .short _0205A0E8 - _0205A096 - 2; case 2
+ .short _0205A0FE - _0205A096 - 2; case 3
+ .short _0205A15A - _0205A096 - 2; case 4
+_0205A0A0:
+ add r0, r5, #0x0
+ bl FUN_02058848
+ add r0, r5, #0x0
+ bl FUN_0205886C
+ add r0, r5, #0x0
+ bl FUN_020584C4
+ mov r1, #0x0
+ bl FUN_0205AFDC
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0205AE0C
+ mov r0, #0x0
+ ldrsh r0, [r4, r0]
+ add r0, r0, #0x1
+ strh r0, [r4, #0x0]
+ pop {r4-r6, pc}
+_0205A0CA:
+ add r0, r5, #0x0
+ bl FUN_0205B080
+ cmp r0, #0x0
+ beq _0205A16E
+ mov r1, #0x0
+ ldr r0, _0205A170 ; =0x020F693C
+ mvn r1, r1
+ bl FUN_0205AAB0
+ strh r0, [r4, #0x2]
+ mov r0, #0x0
+ ldrsh r0, [r4, r0]
+ add r0, r0, #0x1
+ strh r0, [r4, #0x0]
+_0205A0E8:
+ mov r0, #0x2
+ ldrsh r1, [r4, r0]
+ sub r1, r1, #0x1
+ strh r1, [r4, #0x2]
+ ldrsh r0, [r4, r0]
+ cmp r0, #0x0
+ bne _0205A16E
+ mov r0, #0x0
+ ldrsh r0, [r4, r0]
+ add r0, r0, #0x1
+ strh r0, [r4, #0x0]
+_0205A0FE:
+ mov r1, #0x0
+ ldr r0, [r4, #0xc]
+ mvn r1, r1
+ bl FUN_0205AAD4
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_020584D8
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x1
+ bne _0205A12A
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_0205A270
+ cmp r0, #0x0
+ bne _0205A12A
+ mov r0, #0x0
+ strh r0, [r4, #0x0]
+ pop {r4-r6, pc}
+_0205A12A:
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02059918
+ cmp r0, #0x0
+ beq _0205A13C
+ mov r0, #0x0
+ strh r0, [r4, #0x0]
+ pop {r4-r6, pc}
+_0205A13C:
+ ldr r1, [r4, #0x8]
+ add r0, r6, #0x0
+ bl FUN_0205AFDC
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0205AE0C
+ add r0, r5, #0x0
+ bl FUN_0205883C
+ mov r0, #0x0
+ ldrsh r0, [r4, r0]
+ add r0, r0, #0x1
+ strh r0, [r4, #0x0]
+_0205A15A:
+ add r0, r5, #0x0
+ bl FUN_0205B080
+ cmp r0, #0x0
+ beq _0205A16E
+ add r0, r5, #0x0
+ bl FUN_02058848
+ mov r0, #0x0
+ strh r0, [r4, #0x0]
+_0205A16E:
+ pop {r4-r6, pc}
+ .balign 4
+_0205A170: .word 0x020F693C
+
+ thumb_func_start FUN_0205A174
+FUN_0205A174: ; 0x0205A174
+ push {r3-r7, lr}
+ sub sp, #0x8
+ str r0, [sp, #0x0]
+ add r4, r1, #0x0
+ bl FUN_02058AFC
+ add r6, r0, #0x0
+ ldr r0, [sp, #0x0]
+ bl FUN_02058B0C
+ add r5, r0, #0x0
+ ldr r0, [sp, #0x0]
+ bl FUN_02058538
+ add r7, r0, #0x0
+ ldr r0, [sp, #0x0]
+ bl FUN_02058540
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x0]
+ bl FUN_02058480
+ cmp r0, #0xd
+ bhi _0205A268
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0205A1B0: ; jump table (using 16-bit offset)
+ .short _0205A268 - _0205A1B0 - 2; case 0
+ .short _0205A268 - _0205A1B0 - 2; case 1
+ .short _0205A268 - _0205A1B0 - 2; case 2
+ .short _0205A268 - _0205A1B0 - 2; case 3
+ .short _0205A268 - _0205A1B0 - 2; case 4
+ .short _0205A268 - _0205A1B0 - 2; case 5
+ .short _0205A1CC - _0205A1B0 - 2; case 6
+ .short _0205A1DE - _0205A1B0 - 2; case 7
+ .short _0205A1F0 - _0205A1B0 - 2; case 8
+ .short _0205A202 - _0205A1B0 - 2; case 9
+ .short _0205A214 - _0205A1B0 - 2; case 10
+ .short _0205A22A - _0205A1B0 - 2; case 11
+ .short _0205A240 - _0205A1B0 - 2; case 12
+ .short _0205A254 - _0205A1B0 - 2; case 13
+_0205A1CC:
+ sub r0, r6, r7
+ str r0, [r4, #0x0]
+ ldr r0, [sp, #0x4]
+ str r6, [r4, #0x8]
+ sub r0, r5, r0
+ str r0, [r4, #0x4]
+ add sp, #0x8
+ str r5, [r4, #0xc]
+ pop {r3-r7, pc}
+_0205A1DE:
+ str r6, [r4, #0x0]
+ add r0, r6, r7
+ str r0, [r4, #0x8]
+ ldr r0, [sp, #0x4]
+ add sp, #0x8
+ sub r0, r5, r0
+ str r0, [r4, #0x4]
+ str r5, [r4, #0xc]
+ pop {r3-r7, pc}
+_0205A1F0:
+ sub r0, r6, r7
+ str r0, [r4, #0x0]
+ ldr r0, [sp, #0x4]
+ str r6, [r4, #0x8]
+ str r5, [r4, #0x4]
+ add r0, r5, r0
+ add sp, #0x8
+ str r0, [r4, #0xc]
+ pop {r3-r7, pc}
+_0205A202:
+ str r6, [r4, #0x0]
+ add r0, r6, r7
+ str r0, [r4, #0x8]
+ ldr r0, [sp, #0x4]
+ str r5, [r4, #0x4]
+ add r0, r5, r0
+ add sp, #0x8
+ str r0, [r4, #0xc]
+ pop {r3-r7, pc}
+_0205A214:
+ sub r0, r6, r7
+ str r0, [r4, #0x0]
+ ldr r0, [sp, #0x4]
+ str r6, [r4, #0x8]
+ sub r0, r5, r0
+ str r0, [r4, #0x4]
+ ldr r0, [sp, #0x4]
+ add sp, #0x8
+ add r0, r5, r0
+ str r0, [r4, #0xc]
+ pop {r3-r7, pc}
+_0205A22A:
+ str r6, [r4, #0x0]
+ add r0, r6, r7
+ str r0, [r4, #0x8]
+ ldr r0, [sp, #0x4]
+ sub r0, r5, r0
+ str r0, [r4, #0x4]
+ ldr r0, [sp, #0x4]
+ add sp, #0x8
+ add r0, r5, r0
+ str r0, [r4, #0xc]
+ pop {r3-r7, pc}
+_0205A240:
+ sub r0, r6, r7
+ str r0, [r4, #0x0]
+ add r0, r6, r7
+ str r0, [r4, #0x8]
+ ldr r0, [sp, #0x4]
+ add sp, #0x8
+ sub r0, r5, r0
+ str r0, [r4, #0x4]
+ str r5, [r4, #0xc]
+ pop {r3-r7, pc}
+_0205A254:
+ sub r0, r6, r7
+ str r0, [r4, #0x0]
+ add r0, r6, r7
+ str r0, [r4, #0x8]
+ ldr r0, [sp, #0x4]
+ str r5, [r4, #0x4]
+ add r0, r5, r0
+ add sp, #0x8
+ str r0, [r4, #0xc]
+ pop {r3-r7, pc}
+_0205A268:
+ bl ErrorHandling
+ add sp, #0x8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0205A270
+FUN_0205A270: ; 0x0205A270
+ push {r4-r6, lr}
+ sub sp, #0x10
+ add r6, r1, #0x0
+ add r5, r0, #0x0
+ add r1, sp, #0x0
+ bl FUN_0205A174
+ add r0, r5, #0x0
+ bl FUN_02058B2C
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_02059BF4
+ add r4, r4, r0
+ add r0, r5, #0x0
+ bl FUN_02058B4C
+ add r5, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_02059C00
+ add r1, r5, r0
+ ldr r0, [sp, #0x0]
+ cmp r0, r4
+ bgt _0205A2AA
+ ldr r0, [sp, #0x8]
+ cmp r0, r4
+ bge _0205A2B0
+_0205A2AA:
+ add sp, #0x10
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_0205A2B0:
+ ldr r0, [sp, #0x4]
+ cmp r0, r1
+ bgt _0205A2BC
+ ldr r0, [sp, #0xc]
+ cmp r0, r1
+ bge _0205A2C2
+_0205A2BC:
+ add sp, #0x10
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_0205A2C2:
+ mov r0, #0x1
+ add sp, #0x10
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0205A2C8
+FUN_0205A2C8: ; 0x0205A2C8
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ mov r1, #0x8
+ bl FUN_0205858C
+ str r4, [r0, #0x0]
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_02058544
+ add r0, r5, #0x0
+ bl FUN_02058848
+ add r0, r5, #0x0
+ bl FUN_02059C60
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0205A2EC
+FUN_0205A2EC: ; 0x0205A2EC
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_020585B0
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x0
+ beq _0205A300
+ cmp r0, #0x1
+ pop {r3-r5, pc}
+_0205A300:
+ ldr r1, [r4, #0x0]
+ add r0, r5, #0x0
+ bl FUN_020584AC
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0205A310
+FUN_0205A310: ; 0x0205A310
+ ldr r3, _0205A318 ; =FUN_0205A2C8
+ mov r1, #0x0
+ bx r3
+ nop
+_0205A318: .word FUN_0205A2C8
+
+ thumb_func_start FUN_0205A31C
+FUN_0205A31C: ; 0x0205A31C
+ ldr r3, _0205A324 ; =FUN_0205A2C8
+ mov r1, #0x1
+ bx r3
+ nop
+_0205A324: .word FUN_0205A2C8
+
+ thumb_func_start FUN_0205A328
+FUN_0205A328: ; 0x0205A328
+ ldr r3, _0205A330 ; =FUN_0205A2C8
+ mov r1, #0x2
+ bx r3
+ nop
+_0205A330: .word FUN_0205A2C8
+
+ thumb_func_start FUN_0205A334
+FUN_0205A334: ; 0x0205A334
+ ldr r3, _0205A33C ; =FUN_0205A2C8
+ mov r1, #0x3
+ bx r3
+ nop
+_0205A33C: .word FUN_0205A2C8
+
+ thumb_func_start FUN_0205A340
+FUN_0205A340: ; 0x0205A340
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ mov r1, #0x8
+ bl FUN_0205858C
+ strb r4, [r0, #0x0]
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_02058544
+ add r0, r5, #0x0
+ bl FUN_02058848
+ add r0, r5, #0x0
+ bl FUN_02059C60
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0205A364
+FUN_0205A364: ; 0x0205A364
+ ldr r3, _0205A36C ; =FUN_0205A340
+ mov r1, #0x2
+ bx r3
+ nop
+_0205A36C: .word FUN_0205A340
+
+ thumb_func_start FUN_0205A370
+FUN_0205A370: ; 0x0205A370
+ ldr r3, _0205A378 ; =FUN_0205A340
+ mov r1, #0x3
+ bx r3
+ nop
+_0205A378: .word FUN_0205A340
+
+ thumb_func_start FUN_0205A37C
+FUN_0205A37C: ; 0x0205A37C
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ bl FUN_020585B0
+ ldr r6, _0205A39C ; =0x020F6754
+ add r4, r0, #0x0
+ mov r7, #0x2
+_0205A38A:
+ ldrsb r2, [r4, r7]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ lsl r2, r2, #0x2
+ ldr r2, [r6, r2]
+ blx r2
+ cmp r0, #0x1
+ beq _0205A38A
+ pop {r3-r7, pc}
+ .balign 4
+_0205A39C: .word 0x020F6754
+
+ thumb_func_start FUN_0205A3A0
+FUN_0205A3A0: ; 0x0205A3A0
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ mov r1, #0x26
+ add r2, r1, #0x0
+ sub r2, #0x27
+ add r5, r0, #0x0
+ bl FUN_0205ABEC
+ mov r1, #0x0
+ mvn r1, r1
+ cmp r0, r1
+ bne _0205A3BE
+ add r0, r5, #0x0
+ bl FUN_020584C4
+_0205A3BE:
+ mov r1, #0x0
+ bl FUN_0205AFDC
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0205AE0C
+ mov r0, #0x1
+ strb r0, [r4, #0x2]
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205A3D4
+FUN_0205A3D4: ; 0x0205A3D4
+ push {r4, lr}
+ add r4, r1, #0x0
+ bl FUN_0205B080
+ cmp r0, #0x0
+ bne _0205A3E4
+ mov r0, #0x0
+ pop {r4, pc}
+_0205A3E4:
+ mov r0, #0x0
+ str r0, [r4, #0x4]
+ mov r0, #0x2
+ strb r0, [r4, #0x2]
+ mov r0, #0x1
+ pop {r4, pc}
+
+ thumb_func_start FUN_0205A3F0
+FUN_0205A3F0: ; 0x0205A3F0
+ push {r4, lr}
+ add r4, r1, #0x0
+ ldr r1, [r4, #0x4]
+ cmp r1, #0x0
+ beq _0205A414
+ mov r1, #0x26
+ add r2, r1, #0x0
+ sub r2, #0x27
+ bl FUN_0205ABEC
+ mov r1, #0x0
+ mvn r1, r1
+ cmp r0, r1
+ beq _0205A414
+ mov r0, #0x0
+ strb r0, [r4, #0x2]
+ mov r0, #0x1
+ pop {r4, pc}
+_0205A414:
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ cmp r0, #0x18
+ bge _0205A422
+ mov r0, #0x0
+ pop {r4, pc}
+_0205A422:
+ mov r0, #0x3
+ strb r0, [r4, #0x2]
+ mov r0, #0x1
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205A42C
+FUN_0205A42C: ; 0x0205A42C
+ push {r3-r7, lr}
+ sub sp, #0x28
+ ldr r3, _0205A4BC ; =0x020F68D8
+ add r2, sp, #0x14
+ add r7, r0, #0x0
+ add r6, r1, #0x0
+ ldmia r3!, {r0-r1}
+ add r5, r2, #0x0
+ stmia r2!, {r0-r1}
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldr r0, [r3, #0x0]
+ ldr r4, _0205A4C0 ; =0x020F68EC
+ str r0, [r2, #0x0]
+ add r3, sp, #0x0
+ ldmia r4!, {r0-r1}
+ add r2, r3, #0x0
+ stmia r3!, {r0-r1}
+ ldmia r4!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldr r0, [r4, #0x0]
+ str r0, [r3, #0x0]
+ mov r0, #0x0
+ ldrsb r0, [r6, r0]
+ cmp r0, #0x2
+ beq _0205A462
+ add r5, r2, #0x0
+_0205A462:
+ add r0, r7, #0x0
+ bl FUN_020584C4
+ mov r4, #0x0
+ ldr r2, [r5, #0x0]
+ sub r1, r4, #0x1
+ cmp r2, r1
+ beq _0205A486
+ add r1, r5, #0x0
+ sub r2, r4, #0x1
+_0205A476:
+ ldr r3, [r1, #0x0]
+ cmp r0, r3
+ beq _0205A486
+ add r1, r1, #0x4
+ ldr r3, [r1, #0x0]
+ add r4, r4, #0x1
+ cmp r3, r2
+ bne _0205A476
+_0205A486:
+ lsl r0, r4, #0x2
+ ldr r1, [r5, r0]
+ mov r0, #0x0
+ mvn r0, r0
+ cmp r1, r0
+ bne _0205A496
+ bl ErrorHandling
+_0205A496:
+ add r4, r4, #0x1
+ lsl r0, r4, #0x2
+ ldr r1, [r5, r0]
+ mov r0, #0x0
+ mvn r0, r0
+ cmp r1, r0
+ bne _0205A4A6
+ mov r4, #0x0
+_0205A4A6:
+ lsl r1, r4, #0x2
+ ldr r1, [r5, r1]
+ add r0, r7, #0x0
+ bl FUN_020584AC
+ mov r0, #0x0
+ strb r0, [r6, #0x2]
+ mov r0, #0x1
+ add sp, #0x28
+ pop {r3-r7, pc}
+ nop
+_0205A4BC: .word 0x020F68D8
+_0205A4C0: .word 0x020F68EC
+
+ thumb_func_start FUN_0205A4C4
+FUN_0205A4C4: ; 0x0205A4C4
+ ldr r3, _0205A4CC ; =FUN_0205A340
+ mov r1, #0x3
+ bx r3
+ nop
+_0205A4CC: .word FUN_0205A340
+
+ thumb_func_start FUN_0205A4D0
+FUN_0205A4D0: ; 0x0205A4D0
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ bl FUN_020585B0
+ ldr r6, _0205A4F0 ; =0x020F6724
+ add r4, r0, #0x0
+ mov r7, #0x2
+_0205A4DE:
+ ldrsb r2, [r4, r7]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ lsl r2, r2, #0x2
+ ldr r2, [r6, r2]
+ blx r2
+ cmp r0, #0x1
+ beq _0205A4DE
+ pop {r3-r7, pc}
+ .balign 4
+_0205A4F0: .word 0x020F6724
+
+ thumb_func_start FUN_0205A4F4
+FUN_0205A4F4: ; 0x0205A4F4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_020584C4
+ mov r1, #0x0
+ bl FUN_0205AFDC
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0205AE0C
+ mov r0, #0x1
+ strb r0, [r4, #0x2]
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205A514
+FUN_0205A514: ; 0x0205A514
+ push {r4, lr}
+ add r4, r1, #0x0
+ bl FUN_0205B080
+ cmp r0, #0x0
+ bne _0205A524
+ mov r0, #0x0
+ pop {r4, pc}
+_0205A524:
+ mov r0, #0x0
+ str r0, [r4, #0x4]
+ mov r0, #0x2
+ strb r0, [r4, #0x2]
+ mov r0, #0x1
+ pop {r4, pc}
+
+ thumb_func_start FUN_0205A530
+FUN_0205A530: ; 0x0205A530
+ ldr r0, [r1, #0x4]
+ add r0, r0, #0x1
+ str r0, [r1, #0x4]
+ cmp r0, #0x18
+ bge _0205A53E
+ mov r0, #0x0
+ bx lr
+_0205A53E:
+ mov r0, #0x3
+ strb r0, [r1, #0x2]
+ mov r0, #0x1
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0205A548
+FUN_0205A548: ; 0x0205A548
+ push {r3-r7, lr}
+ sub sp, #0x28
+ ldr r3, _0205A5F4 ; =0x020F6900
+ add r2, sp, #0x14
+ add r7, r0, #0x0
+ add r6, r1, #0x0
+ ldmia r3!, {r0-r1}
+ add r5, r2, #0x0
+ stmia r2!, {r0-r1}
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldr r0, [r3, #0x0]
+ ldr r3, _0205A5F8 ; =0x020F6928
+ str r0, [r2, #0x0]
+ add r2, sp, #0x0
+ ldmia r3!, {r0-r1}
+ add r4, r2, #0x0
+ stmia r2!, {r0-r1}
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldr r0, [r3, #0x0]
+ str r0, [r2, #0x0]
+ mov r0, #0x0
+ ldrsb r0, [r6, r0]
+ cmp r0, #0x2
+ beq _0205A57E
+ add r5, r4, #0x0
+_0205A57E:
+ add r0, r7, #0x0
+ bl FUN_020584C4
+ mov r4, #0x0
+ ldr r2, [r5, #0x0]
+ sub r1, r4, #0x1
+ cmp r2, r1
+ beq _0205A5A2
+ add r1, r5, #0x0
+ sub r2, r4, #0x1
+_0205A592:
+ ldr r3, [r1, #0x0]
+ cmp r0, r3
+ beq _0205A5A2
+ add r1, r1, #0x4
+ ldr r3, [r1, #0x0]
+ add r4, r4, #0x1
+ cmp r3, r2
+ bne _0205A592
+_0205A5A2:
+ lsl r0, r4, #0x2
+ ldr r1, [r5, r0]
+ mov r0, #0x0
+ mvn r0, r0
+ cmp r1, r0
+ bne _0205A5B2
+ bl ErrorHandling
+_0205A5B2:
+ add r4, r4, #0x1
+ lsl r0, r4, #0x2
+ ldr r1, [r5, r0]
+ mov r0, #0x0
+ mvn r0, r0
+ cmp r1, r0
+ bne _0205A5C2
+ mov r4, #0x0
+_0205A5C2:
+ lsl r1, r4, #0x2
+ ldr r1, [r5, r1]
+ add r0, r7, #0x0
+ bl FUN_020584AC
+ add r0, r7, #0x0
+ bl FUN_020584C4
+ add r4, r0, #0x0
+ add r0, r7, #0x0
+ bl FUN_020584A0
+ cmp r4, r0
+ bne _0205A5E8
+ mov r0, #0x0
+ ldrsb r0, [r6, r0]
+ bl FUN_02059E74
+ strb r0, [r6, #0x0]
+_0205A5E8:
+ mov r0, #0x0
+ strb r0, [r6, #0x2]
+ mov r0, #0x1
+ add sp, #0x28
+ pop {r3-r7, pc}
+ nop
+_0205A5F4: .word 0x020F6900
+_0205A5F8: .word 0x020F6928
+
+ thumb_func_start FUN_0205A5FC
+FUN_0205A5FC: ; 0x0205A5FC
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r1, #0x8
+ bl FUN_0205858C
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0205ACE0
+ cmp r0, #0x1
+ bne _0205A61A
+ add r0, r5, #0x0
+ add r1, r4, #0x4
+ bl FUN_0205ACF4
+_0205A61A:
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0205A61C
+FUN_0205A61C: ; 0x0205A61C
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ bl FUN_020585B0
+ ldr r6, _0205A63C ; =0x020F66CC
+ add r4, r0, #0x0
+ mov r7, #0x0
+_0205A62A:
+ ldrsh r2, [r4, r7]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ lsl r2, r2, #0x2
+ ldr r2, [r6, r2]
+ blx r2
+ cmp r0, #0x1
+ beq _0205A62A
+ pop {r3-r7, pc}
+ .balign 4
+_0205A63C: .word 0x020F66CC
+
+ thumb_func_start FUN_0205A640
+FUN_0205A640: ; 0x0205A640
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_020584A0
+ mov r1, #0x2
+ ldrsh r1, [r4, r1]
+ add r6, r0, #0x0
+ cmp r1, #0x1
+ bne _0205A65A
+ bl FUN_02059E74
+ add r6, r0, #0x0
+_0205A65A:
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_020584CC
+ add r0, r5, #0x0
+ bl FUN_0205ACE0
+ cmp r0, #0x0
+ bne _0205A674
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_020584AC
+_0205A674:
+ mov r0, #0x1
+ strh r0, [r4, #0x0]
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205A67C
+FUN_0205A67C: ; 0x0205A67C
+ push {r3-r7, lr}
+ add r4, r1, #0x0
+ mov r1, #0x2
+ ldrsh r1, [r4, r1]
+ add r5, r0, #0x0
+ cmp r1, #0x0
+ beq _0205A6DA
+ bl FUN_02058AFC
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058B0C
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058B2C
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ bl FUN_02058B4C
+ ldr r1, [sp, #0x0]
+ cmp r6, r1
+ bne _0205A6DA
+ cmp r7, r0
+ bne _0205A6DA
+ add r0, r5, #0x0
+ bl FUN_020584D4
+ bl FUN_02059E74
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_020584CC
+ add r0, r5, #0x0
+ bl FUN_0205ACE0
+ cmp r0, #0x0
+ bne _0205A6D6
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_020584AC
+_0205A6D6:
+ mov r0, #0x0
+ strh r0, [r4, #0x2]
+_0205A6DA:
+ add r0, r5, #0x0
+ bl FUN_020584D4
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02059918
+ mov r1, #0x1
+ add r2, r0, #0x0
+ tst r2, r1
+ beq _0205A704
+ add r0, r6, #0x0
+ strh r1, [r4, #0x2]
+ bl FUN_02059E74
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02059918
+_0205A704:
+ mov r1, #0xc
+ cmp r0, #0x0
+ beq _0205A70C
+ mov r1, #0x20
+_0205A70C:
+ add r0, r6, #0x0
+ bl FUN_0205AFDC
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0205AE0C
+ add r0, r5, #0x0
+ bl FUN_0205ACE0
+ cmp r0, #0x1
+ bne _0205A72C
+ add r0, r5, #0x0
+ add r1, r4, #0x4
+ bl FUN_0205AD0C
+_0205A72C:
+ add r0, r5, #0x0
+ bl FUN_0205883C
+ mov r0, #0x2
+ strh r0, [r4, #0x0]
+ mov r0, #0x1
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205A73C
+FUN_0205A73C: ; 0x0205A73C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_0205B080
+ cmp r0, #0x1
+ bne _0205A766
+ add r0, r5, #0x0
+ bl FUN_02058848
+ add r0, r5, #0x0
+ bl FUN_0205ACE0
+ cmp r0, #0x1
+ bne _0205A762
+ add r0, r5, #0x0
+ add r1, r4, #0x4
+ bl FUN_0205AD88
+_0205A762:
+ mov r0, #0x0
+ strh r0, [r4, #0x0]
+_0205A766:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205A76C
+FUN_0205A76C: ; 0x0205A76C
+ push {r3-r7, lr}
+ add r6, r1, #0x0
+ mov r1, #0x10
+ add r5, r0, #0x0
+ add r7, r2, #0x0
+ str r3, [sp, #0x0]
+ bl FUN_0205858C
+ add r4, r0, #0x0
+ strh r6, [r4, #0x4]
+ ldr r0, [sp, #0x0]
+ strh r7, [r4, #0x6]
+ str r0, [r4, #0x8]
+ add r0, r5, #0x0
+ bl FUN_0205ACE0
+ cmp r0, #0x1
+ bne _0205A79A
+ add r4, #0xc
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0205ACF4
+_0205A79A:
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0205A79C
+FUN_0205A79C: ; 0x0205A79C
+ push {r3, lr}
+ mov r1, #0x2
+ mov r2, #0x0
+ mov r3, #0xe
+ bl FUN_0205A76C
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205A7AC
+FUN_0205A7AC: ; 0x0205A7AC
+ push {r3, lr}
+ mov r1, #0x2
+ mov r2, #0x0
+ mov r3, #0xf
+ bl FUN_0205A76C
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205A7BC
+FUN_0205A7BC: ; 0x0205A7BC
+ push {r3, lr}
+ mov r1, #0x2
+ mov r2, #0x1
+ mov r3, #0x10
+ bl FUN_0205A76C
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205A7CC
+FUN_0205A7CC: ; 0x0205A7CC
+ push {r3, lr}
+ mov r1, #0x2
+ mov r2, #0x1
+ mov r3, #0x11
+ bl FUN_0205A76C
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205A7DC
+FUN_0205A7DC: ; 0x0205A7DC
+ push {r3, lr}
+ mov r1, #0x2
+ mov r2, #0x0
+ mov r3, #0x12
+ bl FUN_0205A76C
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205A7EC
+FUN_0205A7EC: ; 0x0205A7EC
+ push {r3, lr}
+ mov r1, #0x2
+ mov r2, #0x0
+ mov r3, #0x13
+ bl FUN_0205A76C
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205A7FC
+FUN_0205A7FC: ; 0x0205A7FC
+ push {r3, lr}
+ mov r1, #0x2
+ mov r2, #0x1
+ mov r3, #0x14
+ bl FUN_0205A76C
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205A80C
+FUN_0205A80C: ; 0x0205A80C
+ push {r3, lr}
+ mov r1, #0x2
+ mov r2, #0x1
+ mov r3, #0x15
+ bl FUN_0205A76C
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205A81C
+FUN_0205A81C: ; 0x0205A81C
+ push {r3, lr}
+ mov r1, #0x2
+ mov r2, #0x1
+ mov r3, #0x16
+ bl FUN_0205A76C
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205A82C
+FUN_0205A82C: ; 0x0205A82C
+ push {r3, lr}
+ mov r1, #0x2
+ mov r2, #0x1
+ mov r3, #0x17
+ bl FUN_0205A76C
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205A83C
+FUN_0205A83C: ; 0x0205A83C
+ push {r3, lr}
+ mov r1, #0x2
+ mov r2, #0x0
+ mov r3, #0x18
+ bl FUN_0205A76C
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205A84C
+FUN_0205A84C: ; 0x0205A84C
+ push {r3, lr}
+ mov r1, #0x2
+ mov r2, #0x0
+ mov r3, #0x19
+ bl FUN_0205A76C
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205A85C
+FUN_0205A85C: ; 0x0205A85C
+ push {r3, lr}
+ mov r1, #0x2
+ mov r2, #0x1
+ mov r3, #0x1a
+ bl FUN_0205A76C
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205A86C
+FUN_0205A86C: ; 0x0205A86C
+ push {r3, lr}
+ mov r1, #0x2
+ mov r2, #0x1
+ mov r3, #0x1b
+ bl FUN_0205A76C
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205A87C
+FUN_0205A87C: ; 0x0205A87C
+ push {r3, lr}
+ mov r1, #0x2
+ mov r2, #0x0
+ mov r3, #0x1c
+ bl FUN_0205A76C
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205A88C
+FUN_0205A88C: ; 0x0205A88C
+ push {r3, lr}
+ mov r1, #0x2
+ mov r2, #0x0
+ mov r3, #0x1d
+ bl FUN_0205A76C
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205A89C
+FUN_0205A89C: ; 0x0205A89C
+ push {r3, lr}
+ mov r1, #0x2
+ mov r2, #0x1
+ mov r3, #0x1e
+ bl FUN_0205A76C
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205A8AC
+FUN_0205A8AC: ; 0x0205A8AC
+ push {r3, lr}
+ mov r1, #0x2
+ mov r2, #0x1
+ mov r3, #0x1f
+ bl FUN_0205A76C
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205A8BC
+FUN_0205A8BC: ; 0x0205A8BC
+ push {r3, lr}
+ mov r1, #0x2
+ mov r2, #0x0
+ mov r3, #0x20
+ bl FUN_0205A76C
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205A8CC
+FUN_0205A8CC: ; 0x0205A8CC
+ push {r3, lr}
+ mov r1, #0x2
+ mov r2, #0x0
+ mov r3, #0x21
+ bl FUN_0205A76C
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205A8DC
+FUN_0205A8DC: ; 0x0205A8DC
+ push {r3, lr}
+ mov r1, #0x2
+ mov r2, #0x1
+ mov r3, #0x22
+ bl FUN_0205A76C
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205A8EC
+FUN_0205A8EC: ; 0x0205A8EC
+ push {r3, lr}
+ mov r1, #0x2
+ mov r2, #0x1
+ mov r3, #0x23
+ bl FUN_0205A76C
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205A8FC
+FUN_0205A8FC: ; 0x0205A8FC
+ push {r3, lr}
+ mov r1, #0x2
+ mov r2, #0x0
+ mov r3, #0x24
+ bl FUN_0205A76C
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205A90C
+FUN_0205A90C: ; 0x0205A90C
+ push {r3, lr}
+ mov r1, #0x2
+ mov r2, #0x0
+ mov r3, #0x25
+ bl FUN_0205A76C
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205A91C
+FUN_0205A91C: ; 0x0205A91C
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ bl FUN_020585B0
+ ldr r6, _0205A93C ; =0x020F6670
+ add r4, r0, #0x0
+ mov r7, #0x0
+_0205A92A:
+ ldrsh r2, [r4, r7]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ lsl r2, r2, #0x2
+ ldr r2, [r6, r2]
+ blx r2
+ cmp r0, #0x1
+ beq _0205A92A
+ pop {r3-r7, pc}
+ .balign 4
+_0205A93C: .word 0x020F6670
+
+ thumb_func_start FUN_0205A940
+FUN_0205A940: ; 0x0205A940
+ push {r3-r7, lr}
+ add r4, r1, #0x0
+ mov r1, #0x2
+ ldrsh r2, [r4, r1]
+ mov r1, #0x4
+ ldrsh r1, [r4, r1]
+ add r5, r0, #0x0
+ cmp r2, r1
+ bne _0205A98C
+ mov r1, #0x6
+ ldrsh r1, [r4, r1]
+ cmp r1, #0x0
+ bne _0205A974
+ bl FUN_02058AFC
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058B2C
+ cmp r6, r0
+ bne _0205A98C
+ mov r0, #0x2
+ ldrsh r0, [r4, r0]
+ add r0, r0, #0x1
+ strh r0, [r4, #0x2]
+ b _0205A98C
+_0205A974:
+ bl FUN_02058B0C
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058B4C
+ cmp r6, r0
+ bne _0205A98C
+ mov r0, #0x2
+ ldrsh r0, [r4, r0]
+ add r0, r0, #0x1
+ strh r0, [r4, #0x2]
+_0205A98C:
+ mov r0, #0x2
+ ldrsh r0, [r4, r0]
+ cmp r0, #0x3
+ bne _0205A9C0
+ add r0, r5, #0x0
+ bl FUN_02058AFC
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058B0C
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058B2C
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ bl FUN_02058B4C
+ ldr r1, [sp, #0x0]
+ cmp r6, r1
+ bne _0205A9C0
+ cmp r7, r0
+ bne _0205A9C0
+ mov r0, #0x0
+ strh r0, [r4, #0x2]
+_0205A9C0:
+ ldr r0, [r4, #0x8]
+ bl FUN_0205AAFC
+ add r7, r0, #0x0
+ mov r0, #0x2
+ ldrsh r0, [r4, r0]
+ lsl r0, r0, #0x2
+ ldr r6, [r7, r0]
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_020584CC
+ add r0, r5, #0x0
+ bl FUN_0205ACE0
+ cmp r0, #0x0
+ bne _0205A9EA
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_020584AC
+_0205A9EA:
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02059918
+ mov r1, #0x1
+ tst r1, r0
+ beq _0205AA28
+ mov r0, #0x2
+ ldrsh r1, [r4, r0]
+ add r1, r1, #0x1
+ strh r1, [r4, #0x2]
+ ldrsh r0, [r4, r0]
+ lsl r0, r0, #0x2
+ ldr r6, [r7, r0]
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_020584CC
+ add r0, r5, #0x0
+ bl FUN_0205ACE0
+ cmp r0, #0x0
+ bne _0205AA20
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_020584AC
+_0205AA20:
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02059918
+_0205AA28:
+ mov r1, #0xc
+ cmp r0, #0x0
+ beq _0205AA30
+ mov r1, #0x20
+_0205AA30:
+ add r0, r6, #0x0
+ bl FUN_0205AFDC
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0205AE0C
+ add r0, r5, #0x0
+ bl FUN_0205ACE0
+ cmp r0, #0x1
+ bne _0205AA52
+ add r1, r4, #0x0
+ add r0, r5, #0x0
+ add r1, #0xc
+ bl FUN_0205AD0C
+_0205AA52:
+ add r0, r5, #0x0
+ bl FUN_0205883C
+ mov r0, #0x1
+ strh r0, [r4, #0x0]
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205AA60
+FUN_0205AA60: ; 0x0205AA60
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_0205B080
+ cmp r0, #0x1
+ bne _0205AA8C
+ add r0, r5, #0x0
+ bl FUN_02058848
+ add r0, r5, #0x0
+ bl FUN_0205ACE0
+ cmp r0, #0x1
+ bne _0205AA88
+ add r1, r4, #0x0
+ add r0, r5, #0x0
+ add r1, #0xc
+ bl FUN_0205AD88
+_0205AA88:
+ mov r0, #0x0
+ strh r0, [r4, #0x0]
+_0205AA8C:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0205AA90
+FUN_0205AA90: ; 0x0205AA90
+ push {r4, lr}
+ ldr r2, [r0, #0x0]
+ mov r4, #0x0
+ cmp r1, r2
+ beq _0205AAA4
+_0205AA9A:
+ add r0, r0, #0x4
+ ldr r2, [r0, #0x0]
+ add r4, r4, #0x1
+ cmp r1, r2
+ bne _0205AA9A
+_0205AAA4:
+ cmp r4, #0x0
+ bne _0205AAAC
+ bl ErrorHandling
+_0205AAAC:
+ add r0, r4, #0x0
+ pop {r4, pc}
+
+ thumb_func_start FUN_0205AAB0
+FUN_0205AAB0: ; 0x0205AAB0
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_0201B9EC
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0205AA90
+ add r1, r0, #0x0
+ add r0, r6, #0x0
+ blx _s32_div_f
+ lsl r0, r1, #0x2
+ ldr r0, [r5, r0]
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205AAD4
+FUN_0205AAD4: ; 0x0205AAD4
+ push {r4-r6, lr}
+ add r5, r1, #0x0
+ bl FUN_0205AAFC
+ add r4, r0, #0x0
+ bl FUN_0201B9EC
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ bl FUN_0205AA90
+ add r1, r0, #0x0
+ add r0, r6, #0x0
+ blx _s32_div_f
+ lsl r0, r1, #0x2
+ ldr r0, [r4, r0]
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205AAFC
+FUN_0205AAFC: ; 0x0205AAFC
+ push {r3, lr}
+ ldr r1, _0205AB1C ; =0x020F69BC
+ mov r2, #0x0
+_0205AB02:
+ cmp r2, r0
+ bne _0205AB0A
+ ldr r0, [r1, #0x4]
+ pop {r3, pc}
+_0205AB0A:
+ add r1, #0x8
+ ldr r2, [r1, #0x0]
+ cmp r2, #0x27
+ bne _0205AB02
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r3, pc}
+ nop
+_0205AB1C: .word 0x020F69BC
+
+ thumb_func_start FUN_0205AB20
+FUN_0205AB20: ; 0x0205AB20
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ bl FUN_02058488
+ cmp r0, #0x1
+ beq _0205AB36
+ cmp r0, #0x2
+ beq _0205AB36
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r7, pc}
+_0205AB36:
+ add r0, r5, #0x0
+ bl FUN_02058738
+ bl FUN_02055698
+ add r6, r0, #0x0
+ bl FUN_02057124
+ cmp r0, #0x0
+ bne _0205AB50
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r7, pc}
+_0205AB50:
+ add r0, r5, #0x0
+ mov r4, #0x0
+ bl FUN_02058480
+ ldr r1, _0205ABE8 ; =0x020F6984
+_0205AB5A:
+ lsl r2, r4, #0x2
+ ldr r2, [r1, r2]
+ add r4, r4, #0x1
+ cmp r2, r0
+ beq _0205AB68
+ cmp r2, #0xff
+ bne _0205AB5A
+_0205AB68:
+ cmp r0, r2
+ beq _0205AB72
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r7, pc}
+_0205AB72:
+ add r0, r6, #0x0
+ bl FUN_020553A0
+ bl FUN_02058BE4
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058BE4
+ cmp r4, r0
+ beq _0205AB8E
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r7, pc}
+_0205AB8E:
+ add r0, r6, #0x0
+ bl FUN_02055320
+ add r7, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_0205532C
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_02058510
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ bl FUN_02058B2C
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058B4C
+ add r3, r0, #0x0
+ ldr r0, [sp, #0x0]
+ ldr r5, [sp, #0x0]
+ sub r2, r6, r0
+ add r1, r6, r0
+ sub r5, r3, r5
+ add r0, r3, r0
+ cmp r5, r4
+ bgt _0205ABE2
+ cmp r0, r4
+ blt _0205ABE2
+ cmp r2, r7
+ bgt _0205ABE2
+ cmp r1, r7
+ blt _0205ABE2
+ add r1, r3, #0x0
+ add r0, r6, #0x0
+ add r2, r7, #0x0
+ add r3, r4, #0x0
+ bl FUN_02059E80
+ pop {r3-r7, pc}
+_0205ABE2:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r7, pc}
+ .balign 4
+_0205ABE8: .word 0x020F6984
+
+ thumb_func_start FUN_0205ABEC
+FUN_0205ABEC: ; 0x0205ABEC
+ push {r4-r7, lr}
+ sub sp, #0x14
+ str r0, [sp, #0x0]
+ add r4, r2, #0x0
+ add r0, r1, #0x0
+ bl FUN_0205AAFC
+ add r1, r4, #0x0
+ add r5, r0, #0x0
+ bl FUN_0205AA90
+ add r4, r0, #0x0
+ cmp r4, #0x1
+ bne _0205AC10
+ mov r0, #0x0
+ add sp, #0x14
+ mvn r0, r0
+ pop {r4-r7, pc}
+_0205AC10:
+ ldr r0, [sp, #0x0]
+ bl FUN_0205AB20
+ mov r1, #0x0
+ mvn r1, r1
+ cmp r0, r1
+ beq _0205ACDA
+ mov r2, #0x0
+ add r3, r5, #0x0
+_0205AC22:
+ ldr r1, [r3, #0x0]
+ cmp r0, r1
+ beq _0205ACDA
+ add r2, r2, #0x1
+ add r3, r3, #0x4
+ cmp r2, r4
+ blt _0205AC22
+ mov r7, #0x0
+ mvn r7, r7
+ ldr r0, [sp, #0x0]
+ add r6, r7, #0x0
+ bl FUN_02058B2C
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x0]
+ bl FUN_02058B4C
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x0]
+ bl FUN_02058738
+ bl FUN_02055698
+ str r0, [sp, #0xc]
+ bl FUN_02055320
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0xc]
+ bl FUN_0205532C
+ ldr r2, [sp, #0x8]
+ ldr r1, [sp, #0x10]
+ cmp r2, r1
+ ble _0205AC6A
+ mov r7, #0x2
+ b _0205AC70
+_0205AC6A:
+ cmp r2, r1
+ bge _0205AC70
+ mov r7, #0x3
+_0205AC70:
+ ldr r1, [sp, #0x4]
+ cmp r1, r0
+ ble _0205AC7A
+ mov r6, #0x0
+ b _0205AC80
+_0205AC7A:
+ cmp r1, r0
+ bge _0205AC80
+ mov r6, #0x1
+_0205AC80:
+ mov r0, #0x0
+ sub r1, r0, #0x1
+ cmp r7, r1
+ bne _0205AC9E
+_0205AC88:
+ ldr r1, [r5, #0x0]
+ cmp r6, r1
+ bne _0205AC94
+ add sp, #0x14
+ add r0, r6, #0x0
+ pop {r4-r7, pc}
+_0205AC94:
+ add r0, r0, #0x1
+ add r5, r5, #0x4
+ cmp r0, r4
+ blt _0205AC88
+ b _0205ACD6
+_0205AC9E:
+ cmp r6, r1
+ bne _0205ACB8
+_0205ACA2:
+ ldr r1, [r5, #0x0]
+ cmp r7, r1
+ bne _0205ACAE
+ add sp, #0x14
+ add r0, r7, #0x0
+ pop {r4-r7, pc}
+_0205ACAE:
+ add r0, r0, #0x1
+ add r5, r5, #0x4
+ cmp r0, r4
+ blt _0205ACA2
+ b _0205ACD6
+_0205ACB8:
+ ldr r1, [r5, #0x0]
+ cmp r7, r1
+ bne _0205ACC4
+ add sp, #0x14
+ add r0, r7, #0x0
+ pop {r4-r7, pc}
+_0205ACC4:
+ cmp r6, r1
+ bne _0205ACCE
+ add sp, #0x14
+ add r0, r6, #0x0
+ pop {r4-r7, pc}
+_0205ACCE:
+ add r0, r0, #0x1
+ add r5, r5, #0x4
+ cmp r0, r4
+ blt _0205ACB8
+_0205ACD6:
+ mov r0, #0x0
+ mvn r0, r0
+_0205ACDA:
+ add sp, #0x14
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205ACE0
+FUN_0205ACE0: ; 0x0205ACE0
+ push {r3, lr}
+ bl FUN_02058488
+ sub r0, r0, #0x7
+ cmp r0, #0x1
+ bhi _0205ACF0
+ mov r0, #0x1
+ pop {r3, pc}
+_0205ACF0:
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205ACF4
+FUN_0205ACF4: ; 0x0205ACF4
+ push {r4, lr}
+ add r4, r1, #0x0
+ bl FUN_02058488
+ cmp r0, #0x7
+ bne _0205AD06
+ mov r0, #0x0
+ strb r0, [r4, #0x1]
+ pop {r4, pc}
+_0205AD06:
+ mov r0, #0x1
+ strb r0, [r4, #0x1]
+ pop {r4, pc}
+
+ thumb_func_start FUN_0205AD0C
+FUN_0205AD0C: ; 0x0205AD0C
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ add r5, r1, #0x0
+ bl FUN_020584C4
+ mov r4, #0x0
+ add r6, r0, #0x0
+ add r1, r4, #0x0
+ ldr r0, _0205AD84 ; =0x020F6964
+ mov r2, #0x1
+ b _0205AD26
+_0205AD22:
+ add r1, r1, #0x4
+ add r4, r4, #0x1
+_0205AD26:
+ cmp r4, #0x4
+ bge _0205AD36
+ ldrsb r3, [r5, r2]
+ lsl r3, r3, #0x4
+ add r3, r0, r3
+ ldr r3, [r1, r3]
+ cmp r6, r3
+ bne _0205AD22
+_0205AD36:
+ cmp r4, #0x4
+ blt _0205AD3E
+ bl ErrorHandling
+_0205AD3E:
+ add r0, r4, #0x1
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x1e
+ sub r1, r1, r2
+ mov r0, #0x1e
+ ror r1, r0
+ strb r6, [r5, #0x0]
+ mov r0, #0x1
+ add r1, r2, r1
+ ldrsb r0, [r5, r0]
+ lsl r1, r1, #0x2
+ lsl r2, r0, #0x4
+ ldr r0, _0205AD84 ; =0x020F6964
+ add r0, r0, r2
+ ldr r4, [r1, r0]
+ add r0, r7, #0x0
+ mov r1, #0x80
+ bl FUN_02058424
+ cmp r0, #0x0
+ beq _0205AD6C
+ mov r0, #0x1
+ b _0205AD6E
+_0205AD6C:
+ mov r0, #0x0
+_0205AD6E:
+ strb r0, [r5, #0x2]
+ add r0, r7, #0x0
+ add r1, r4, #0x0
+ bl FUN_020584AC
+ add r0, r7, #0x0
+ mov r1, #0x80
+ bl FUN_02058410
+ pop {r3-r7, pc}
+ nop
+_0205AD84: .word 0x020F6964
+
+ thumb_func_start FUN_0205AD88
+FUN_0205AD88: ; 0x0205AD88
+ push {r3, lr}
+ ldrb r1, [r1, #0x2]
+ cmp r1, #0x0
+ bne _0205AD96
+ mov r1, #0x80
+ bl FUN_02058418
+_0205AD96:
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205AD98
+FUN_0205AD98: ; 0x0205AD98
+ push {r4, lr}
+ mov r1, #0x1
+ add r4, r0, #0x0
+ bl FUN_0205842C
+ cmp r0, #0x0
+ bne _0205ADAA
+ mov r0, #0x0
+ pop {r4, pc}
+_0205ADAA:
+ add r0, r4, #0x0
+ mov r1, #0x2
+ bl FUN_0205842C
+ cmp r0, #0x1
+ bne _0205ADBA
+ mov r0, #0x0
+ pop {r4, pc}
+_0205ADBA:
+ add r0, r4, #0x0
+ mov r1, #0x10
+ bl FUN_0205842C
+ cmp r0, #0x1
+ bne _0205ADD6
+ add r0, r4, #0x0
+ mov r1, #0x20
+ bl FUN_0205842C
+ cmp r0, #0x0
+ bne _0205ADD6
+ mov r0, #0x0
+ pop {r4, pc}
+_0205ADD6:
+ mov r0, #0x1
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205ADDC
+FUN_0205ADDC: ; 0x0205ADDC
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ cmp r4, #0x69
+ blt _0205ADEA
+ bl ErrorHandling
+_0205ADEA:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_020586E8
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_020586F8
+ add r0, r5, #0x0
+ mov r1, #0x10
+ bl FUN_02058410
+ add r0, r5, #0x0
+ mov r1, #0x20
+ bl FUN_02058418
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0205AE0C
+FUN_0205AE0C: ; 0x0205AE0C
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_020586E8
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_020586F8
+ add r0, r4, #0x0
+ mov r1, #0x20
+ bl FUN_02058418
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205AE28
+FUN_0205AE28: ; 0x0205AE28
+ push {r4, lr}
+ mov r1, #0x10
+ add r4, r0, #0x0
+ bl FUN_0205842C
+ cmp r0, #0x0
+ bne _0205AE3A
+ mov r0, #0x1
+ pop {r4, pc}
+_0205AE3A:
+ add r0, r4, #0x0
+ mov r1, #0x20
+ bl FUN_0205842C
+ cmp r0, #0x0
+ beq _0205AE4A
+ mov r0, #0x1
+ pop {r4, pc}
+_0205AE4A:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205AE50
+FUN_0205AE50: ; 0x0205AE50
+ push {r4, lr}
+ mov r1, #0x10
+ add r4, r0, #0x0
+ bl FUN_0205842C
+ cmp r0, #0x0
+ bne _0205AE62
+ mov r0, #0x1
+ pop {r4, pc}
+_0205AE62:
+ add r0, r4, #0x0
+ mov r1, #0x20
+ bl FUN_0205842C
+ cmp r0, #0x0
+ bne _0205AE72
+ mov r0, #0x0
+ pop {r4, pc}
+_0205AE72:
+ add r0, r4, #0x0
+ mov r1, #0x30
+ bl FUN_02058418
+ mov r0, #0x1
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205AE80
+FUN_0205AE80: ; 0x0205AE80
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r1, #0x10
+ bl FUN_02058418
+ add r0, r4, #0x0
+ mov r1, #0x20
+ bl FUN_02058410
+ add r0, r4, #0x0
+ mov r1, #0xff
+ bl FUN_020586E8
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_020586F8
+ pop {r4, pc}
+
+ thumb_func_start FUN_0205AEA4
+FUN_0205AEA4: ; 0x0205AEA4
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ mov r0, #0x4
+ mov r1, #0x14
+ bl FUN_020169D8
+ add r4, r0, #0x0
+ bne _0205AEBA
+ bl ErrorHandling
+_0205AEBA:
+ add r2, r4, #0x0
+ mov r1, #0x14
+ mov r0, #0x0
+_0205AEC0:
+ strb r0, [r2, #0x0]
+ add r2, r2, #0x1
+ sub r1, r1, #0x1
+ bne _0205AEC0
+ add r0, r5, #0x0
+ bl FUN_02058578
+ bl FUN_0205839C
+ sub r2, r0, #0x1
+ ldr r0, _0205AEEC ; =FUN_0205AF2C
+ add r1, r4, #0x0
+ bl FUN_0200CA44
+ add r7, r0, #0x0
+ bne _0205AEE4
+ bl ErrorHandling
+_0205AEE4:
+ str r5, [r4, #0xc]
+ str r6, [r4, #0x10]
+ add r0, r7, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+_0205AEEC: .word FUN_0205AF2C
+
+ thumb_func_start FUN_0205AEF0
+FUN_0205AEF0: ; 0x0205AEF0
+ push {r3, lr}
+ bl FUN_0201B6C8
+ ldr r0, [r0, #0x4]
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205AEFC
+FUN_0205AEFC: ; 0x0205AEFC
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_0201B6C8
+ add r4, r0, #0x0
+ ldr r0, [r4, #0xc]
+ bl FUN_0205AE28
+ cmp r0, #0x1
+ beq _0205AF14
+ bl ErrorHandling
+_0205AF14:
+ ldr r0, [r4, #0xc]
+ bl FUN_0205AE50
+ mov r0, #0x4
+ add r1, r4, #0x0
+ bl FUN_02016A8C
+ add r0, r5, #0x0
+ bl FUN_0200CAB4
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205AF2C
+FUN_0205AF2C: ; 0x0205AF2C
+ push {r3-r5, lr}
+ ldr r4, _0205AF44 ; =0x020F6C54
+ add r5, r1, #0x0
+_0205AF32:
+ ldr r1, [r5, #0x0]
+ add r0, r5, #0x0
+ lsl r1, r1, #0x2
+ ldr r1, [r4, r1]
+ blx r1
+ cmp r0, #0x1
+ beq _0205AF32
+ pop {r3-r5, pc}
+ nop
+_0205AF44: .word 0x020F6C54
+
+ thumb_func_start FUN_0205AF48
+FUN_0205AF48: ; 0x0205AF48
+ mov r1, #0x0
+ str r1, [r0, #0x8]
+ mov r1, #0x1
+ str r1, [r0, #0x0]
+ add r0, r1, #0x0
+ bx lr
+
+ thumb_func_start FUN_0205AF54
+FUN_0205AF54: ; 0x0205AF54
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0xc]
+ bl FUN_0205AD98
+ cmp r0, #0x0
+ bne _0205AF66
+ mov r0, #0x0
+ pop {r4, pc}
+_0205AF66:
+ mov r0, #0x2
+ str r0, [r4, #0x0]
+ mov r0, #0x1
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205AF70
+FUN_0205AF70: ; 0x0205AF70
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x10]
+ ldr r0, [r4, #0xc]
+ ldrh r1, [r1, #0x0]
+ bl FUN_0205ADDC
+ mov r0, #0x3
+ str r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205AF88
+FUN_0205AF88: ; 0x0205AF88
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0xc]
+ bl FUN_0205AE28
+ cmp r0, #0x0
+ bne _0205AF9A
+ mov r0, #0x0
+ pop {r4, pc}
+_0205AF9A:
+ mov r0, #0x4
+ str r0, [r4, #0x0]
+ mov r0, #0x1
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205AFA4
+FUN_0205AFA4: ; 0x0205AFA4
+ ldr r1, [r0, #0x8]
+ ldr r3, [r0, #0x10]
+ add r2, r1, #0x1
+ str r2, [r0, #0x8]
+ ldrh r1, [r3, #0x2]
+ cmp r2, r1
+ bge _0205AFBA
+ mov r1, #0x1
+ str r1, [r0, #0x0]
+ add r0, r1, #0x0
+ bx lr
+_0205AFBA:
+ add r1, r3, #0x4
+ str r1, [r0, #0x10]
+ ldrh r1, [r3, #0x4]
+ cmp r1, #0xfe
+ beq _0205AFCC
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+ mov r0, #0x1
+ bx lr
+_0205AFCC:
+ mov r1, #0x1
+ str r1, [r0, #0x4]
+ mov r1, #0x5
+ str r1, [r0, #0x0]
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_0205AFD8
+FUN_0205AFD8: ; 0x0205AFD8
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_0205AFDC
+FUN_0205AFDC: ; 0x0205AFDC
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ add r4, r1, #0x0
+ cmp r7, #0x4
+ blt _0205AFEA
+ bl ErrorHandling
+_0205AFEA:
+ ldr r3, _0205B01C ; =0x020F6308
+ ldr r6, [r3, #0x0]
+ cmp r6, #0x0
+ beq _0205B014
+ mov r1, #0x0
+_0205AFF4:
+ add r2, r1, #0x0
+ add r5, r6, #0x0
+_0205AFF8:
+ ldr r0, [r5, #0x0]
+ cmp r4, r0
+ bne _0205B004
+ lsl r0, r7, #0x2
+ ldr r0, [r6, r0]
+ pop {r3-r7, pc}
+_0205B004:
+ add r2, r2, #0x1
+ add r5, r5, #0x4
+ cmp r2, #0x4
+ blt _0205AFF8
+ add r3, r3, #0x4
+ ldr r6, [r3, #0x0]
+ cmp r6, #0x0
+ bne _0205AFF4
+_0205B014:
+ bl ErrorHandling
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+_0205B01C: .word 0x020F6308
+
+ thumb_func_start FUN_0205B020
+FUN_0205B020: ; 0x0205B020
+ push {r4-r5}
+ ldr r4, _0205B054 ; =0x020F6308
+ ldr r5, [r4, #0x0]
+ cmp r5, #0x0
+ beq _0205B04A
+ mov r2, #0x0
+_0205B02C:
+ add r3, r2, #0x0
+_0205B02E:
+ ldr r1, [r5, #0x0]
+ cmp r0, r1
+ bne _0205B03A
+ add r0, r3, #0x0
+ pop {r4-r5}
+ bx lr
+_0205B03A:
+ add r3, r3, #0x1
+ add r5, r5, #0x4
+ cmp r3, #0x4
+ blt _0205B02E
+ add r4, r4, #0x4
+ ldr r5, [r4, #0x0]
+ cmp r5, #0x0
+ bne _0205B02C
+_0205B04A:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4-r5}
+ bx lr
+ nop
+_0205B054: .word 0x020F6308
+
+ thumb_func_start FUN_0205B058
+FUN_0205B058: ; 0x0205B058
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+_0205B05C:
+ add r0, r5, #0x0
+ bl FUN_020586F0
+ add r4, r0, #0x0
+ cmp r4, #0xff
+ beq _0205B07C
+ add r0, r5, #0x0
+ bl FUN_02058710
+ add r2, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0205B0B4
+ cmp r0, #0x0
+ bne _0205B05C
+_0205B07C:
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205B080
+FUN_0205B080: ; 0x0205B080
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_0205B058
+ add r0, r4, #0x0
+ mov r1, #0x20
+ bl FUN_0205842C
+ cmp r0, #0x0
+ bne _0205B098
+ mov r0, #0x0
+ pop {r4, pc}
+_0205B098:
+ add r0, r4, #0x0
+ mov r1, #0x20
+ bl FUN_02058418
+ add r0, r4, #0x0
+ mov r1, #0xff
+ bl FUN_020586E8
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_020586F8
+ mov r0, #0x1
+ pop {r4, pc}
+
+ thumb_func_start FUN_0205B0B4
+FUN_0205B0B4: ; 0x0205B0B4
+ push {r3, lr}
+ lsl r3, r1, #0x2
+ ldr r1, _0205B0C4 ; =0x020F6440
+ ldr r3, [r1, r3]
+ lsl r1, r2, #0x2
+ ldr r1, [r3, r1]
+ blx r1
+ pop {r3, pc}
+ .balign 4
+_0205B0C4: .word 0x020F6440
+
+ thumb_func_start FUN_0205B0C8
+FUN_0205B0C8: ; 0x0205B0C8
+ push {r3, lr}
+ mov r1, #0x20
+ bl FUN_02058410
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205B0D4
+FUN_0205B0D4: ; 0x0205B0D4
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_020584AC
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_02058544
+ add r0, r4, #0x0
+ bl FUN_02059C60
+ add r0, r4, #0x0
+ bl FUN_02058700
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205B0F4
+FUN_0205B0F4: ; 0x0205B0F4
+ push {r3, lr}
+ mov r1, #0x0
+ bl FUN_0205B0D4
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205B100
+FUN_0205B100: ; 0x0205B100
+ push {r3, lr}
+ mov r1, #0x1
+ bl FUN_0205B0D4
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205B10C
+FUN_0205B10C: ; 0x0205B10C
+ push {r3, lr}
+ mov r1, #0x2
+ bl FUN_0205B0D4
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205B118
+FUN_0205B118: ; 0x0205B118
+ push {r3, lr}
+ mov r1, #0x3
+ bl FUN_0205B0D4
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205B124
+FUN_0205B124: ; 0x0205B124
+ push {r3-r7, lr}
+ add r4, r1, #0x0
+ mov r1, #0xc
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ add r7, r3, #0x0
+ bl FUN_020585DC
+ add r1, sp, #0x8
+ ldrh r1, [r1, #0x10]
+ strh r1, [r0, #0x0]
+ strh r7, [r0, #0x2]
+ str r4, [r0, #0x4]
+ str r6, [r0, #0x8]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02059C0C
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_020584D8
+ add r1, sp, #0x8
+ ldrh r1, [r1, #0x10]
+ add r0, r5, #0x0
+ bl FUN_02058544
+ add r0, r5, #0x0
+ mov r1, #0x4
+ bl FUN_02058410
+ add r0, r5, #0x0
+ bl FUN_02058700
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205B16C
+FUN_0205B16C: ; 0x0205B16C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_02058600
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x4]
+ ldr r2, [r4, #0x8]
+ add r0, r5, #0x0
+ bl FUN_02059CC8
+ add r0, r5, #0x0
+ bl FUN_02059D1C
+ mov r0, #0x2
+ ldrsh r1, [r4, r0]
+ sub r1, r1, #0x1
+ strh r1, [r4, #0x2]
+ ldrsh r0, [r4, r0]
+ cmp r0, #0x0
+ ble _0205B198
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0205B198:
+ add r0, r5, #0x0
+ mov r1, #0x28
+ bl FUN_02058410
+ add r0, r5, #0x0
+ bl FUN_02059C60
+ add r0, r5, #0x0
+ bl FUN_020586A0
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_02058544
+ add r0, r5, #0x0
+ bl FUN_02058700
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205B1C0
+FUN_0205B1C0: ; 0x0205B1C0
+ push {r3, lr}
+ mov r2, #0x1
+ str r2, [sp, #0x0]
+ mov r1, #0x0
+ lsl r2, r2, #0xb
+ mov r3, #0x20
+ bl FUN_0205B124
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205B1D4
+FUN_0205B1D4: ; 0x0205B1D4
+ push {r3, lr}
+ mov r1, #0x1
+ lsl r2, r1, #0xb
+ mov r3, #0x20
+ str r1, [sp, #0x0]
+ bl FUN_0205B124
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205B1E8
+FUN_0205B1E8: ; 0x0205B1E8
+ push {r3, lr}
+ mov r1, #0x1
+ str r1, [sp, #0x0]
+ mov r1, #0x2
+ lsl r2, r1, #0xa
+ mov r3, #0x20
+ bl FUN_0205B124
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205B1FC
+FUN_0205B1FC: ; 0x0205B1FC
+ push {r3, lr}
+ mov r2, #0x1
+ str r2, [sp, #0x0]
+ mov r1, #0x3
+ lsl r2, r2, #0xb
+ mov r3, #0x20
+ bl FUN_0205B124
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205B210
+FUN_0205B210: ; 0x0205B210
+ push {r3, lr}
+ mov r2, #0x2
+ str r2, [sp, #0x0]
+ mov r1, #0x0
+ lsl r2, r2, #0xb
+ mov r3, #0x10
+ bl FUN_0205B124
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205B224
+FUN_0205B224: ; 0x0205B224
+ push {r3, lr}
+ mov r1, #0x2
+ str r1, [sp, #0x0]
+ mov r1, #0x1
+ lsl r2, r1, #0xc
+ mov r3, #0x10
+ bl FUN_0205B124
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205B238
+FUN_0205B238: ; 0x0205B238
+ push {r3, lr}
+ mov r1, #0x2
+ lsl r2, r1, #0xb
+ mov r3, #0x10
+ str r1, [sp, #0x0]
+ bl FUN_0205B124
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205B24C
+FUN_0205B24C: ; 0x0205B24C
+ push {r3, lr}
+ mov r2, #0x2
+ str r2, [sp, #0x0]
+ mov r1, #0x3
+ lsl r2, r2, #0xb
+ mov r3, #0x10
+ bl FUN_0205B124
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205B260
+FUN_0205B260: ; 0x0205B260
+ push {r3, lr}
+ mov r1, #0x3
+ mov r2, #0x2
+ str r1, [sp, #0x0]
+ mov r1, #0x0
+ lsl r2, r2, #0xc
+ mov r3, #0x8
+ bl FUN_0205B124
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205B278
+FUN_0205B278: ; 0x0205B278
+ push {r3, lr}
+ mov r1, #0x3
+ str r1, [sp, #0x0]
+ mov r1, #0x1
+ lsl r2, r1, #0xd
+ mov r3, #0x8
+ bl FUN_0205B124
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205B28C
+FUN_0205B28C: ; 0x0205B28C
+ push {r3, lr}
+ mov r1, #0x3
+ str r1, [sp, #0x0]
+ mov r1, #0x2
+ lsl r2, r1, #0xc
+ mov r3, #0x8
+ bl FUN_0205B124
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205B2A0
+FUN_0205B2A0: ; 0x0205B2A0
+ push {r3, lr}
+ mov r2, #0x2
+ mov r1, #0x3
+ lsl r2, r2, #0xc
+ mov r3, #0x8
+ str r1, [sp, #0x0]
+ bl FUN_0205B124
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205B2B4
+FUN_0205B2B4: ; 0x0205B2B4
+ push {r3, lr}
+ mov r3, #0x4
+ mov r1, #0x0
+ lsl r2, r3, #0xc
+ str r3, [sp, #0x0]
+ bl FUN_0205B124
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205B2C8
+FUN_0205B2C8: ; 0x0205B2C8
+ push {r3, lr}
+ mov r1, #0x1
+ mov r3, #0x4
+ lsl r2, r1, #0xe
+ str r3, [sp, #0x0]
+ bl FUN_0205B124
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205B2DC
+FUN_0205B2DC: ; 0x0205B2DC
+ push {r3, lr}
+ mov r1, #0x2
+ mov r3, #0x4
+ lsl r2, r1, #0xd
+ str r3, [sp, #0x0]
+ bl FUN_0205B124
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205B2F0
+FUN_0205B2F0: ; 0x0205B2F0
+ push {r3, lr}
+ mov r3, #0x4
+ mov r1, #0x3
+ lsl r2, r3, #0xc
+ str r3, [sp, #0x0]
+ bl FUN_0205B124
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205B304
+FUN_0205B304: ; 0x0205B304
+ push {r3, lr}
+ mov r1, #0x5
+ mov r2, #0x2
+ str r1, [sp, #0x0]
+ mov r1, #0x0
+ lsl r2, r2, #0xe
+ mov r3, #0x2
+ bl FUN_0205B124
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205B31C
+FUN_0205B31C: ; 0x0205B31C
+ push {r3, lr}
+ mov r1, #0x5
+ str r1, [sp, #0x0]
+ mov r1, #0x1
+ lsl r2, r1, #0xf
+ mov r3, #0x2
+ bl FUN_0205B124
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205B330
+FUN_0205B330: ; 0x0205B330
+ push {r3, lr}
+ mov r1, #0x5
+ str r1, [sp, #0x0]
+ mov r1, #0x2
+ lsl r2, r1, #0xe
+ add r3, r1, #0x0
+ bl FUN_0205B124
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205B344
+FUN_0205B344: ; 0x0205B344
+ push {r3, lr}
+ mov r1, #0x5
+ mov r2, #0x2
+ str r1, [sp, #0x0]
+ mov r1, #0x3
+ lsl r2, r2, #0xe
+ mov r3, #0x2
+ bl FUN_0205B124
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205B35C
+FUN_0205B35C: ; 0x0205B35C
+ push {r3, lr}
+ mov r2, #0x1
+ mov r1, #0x0
+ lsl r2, r2, #0x10
+ mov r3, #0x1
+ str r1, [sp, #0x0]
+ bl FUN_0205B124
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205B370
+FUN_0205B370: ; 0x0205B370
+ push {r3, lr}
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ mov r1, #0x1
+ lsl r2, r1, #0x10
+ add r3, r1, #0x0
+ bl FUN_0205B124
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205B384
+FUN_0205B384: ; 0x0205B384
+ push {r3, lr}
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ mov r1, #0x2
+ lsl r2, r1, #0xf
+ mov r3, #0x1
+ bl FUN_0205B124
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205B398
+FUN_0205B398: ; 0x0205B398
+ push {r3, lr}
+ mov r1, #0x0
+ mov r2, #0x1
+ str r1, [sp, #0x0]
+ mov r1, #0x3
+ lsl r2, r2, #0x10
+ mov r3, #0x1
+ bl FUN_0205B124
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205B3B0
+FUN_0205B3B0: ; 0x0205B3B0
+ push {r3, lr}
+ mov r1, #0x9
+ mov r2, #0x1
+ str r1, [sp, #0x0]
+ mov r1, #0x0
+ lsl r2, r2, #0xe
+ mov r3, #0x4
+ bl FUN_0205B124
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205B3C8
+FUN_0205B3C8: ; 0x0205B3C8
+ push {r3, lr}
+ mov r1, #0x9
+ str r1, [sp, #0x0]
+ mov r1, #0x1
+ lsl r2, r1, #0xe
+ mov r3, #0x4
+ bl FUN_0205B124
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205B3DC
+FUN_0205B3DC: ; 0x0205B3DC
+ push {r3, lr}
+ mov r1, #0x9
+ str r1, [sp, #0x0]
+ mov r1, #0x2
+ lsl r2, r1, #0xd
+ mov r3, #0x4
+ bl FUN_0205B124
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205B3F0
+FUN_0205B3F0: ; 0x0205B3F0
+ push {r3, lr}
+ mov r1, #0x9
+ mov r2, #0x1
+ str r1, [sp, #0x0]
+ mov r1, #0x3
+ lsl r2, r2, #0xe
+ mov r3, #0x4
+ bl FUN_0205B124
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205B408
+FUN_0205B408: ; 0x0205B408
+ push {r3-r7, lr}
+ add r7, r1, #0x0
+ add r6, r2, #0x0
+ add r4, r3, #0x0
+ mov r1, #0xc
+ add r5, r0, #0x0
+ bl FUN_020585DC
+ strh r4, [r0, #0x0]
+ add r1, r6, #0x1
+ strh r1, [r0, #0x2]
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ bl FUN_020584AC
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02058544
+ add r0, r5, #0x0
+ bl FUN_02059C60
+ add r0, r5, #0x0
+ bl FUN_02058700
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0205B43C
+FUN_0205B43C: ; 0x0205B43C
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02058600
+ mov r1, #0x2
+ ldrsh r2, [r0, r1]
+ sub r2, r2, #0x1
+ strh r2, [r0, #0x2]
+ ldrsh r0, [r0, r1]
+ cmp r0, #0x0
+ ble _0205B456
+ mov r0, #0x0
+ pop {r4, pc}
+_0205B456:
+ add r0, r4, #0x0
+ mov r1, #0x20
+ bl FUN_02058410
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_02058544
+ add r0, r4, #0x0
+ bl FUN_02058700
+ mov r0, #0x1
+ pop {r4, pc}
+
+ thumb_func_start FUN_0205B470
+FUN_0205B470: ; 0x0205B470
+ push {r3, lr}
+ mov r1, #0x0
+ mov r2, #0x20
+ mov r3, #0x1
+ bl FUN_0205B408
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205B480
+FUN_0205B480: ; 0x0205B480
+ push {r3, lr}
+ mov r1, #0x1
+ mov r2, #0x20
+ add r3, r1, #0x0
+ bl FUN_0205B408
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205B490
+FUN_0205B490: ; 0x0205B490
+ push {r3, lr}
+ mov r1, #0x2
+ mov r2, #0x20
+ mov r3, #0x1
+ bl FUN_0205B408
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205B4A0
+FUN_0205B4A0: ; 0x0205B4A0
+ push {r3, lr}
+ mov r1, #0x3
+ mov r2, #0x20
+ mov r3, #0x1
+ bl FUN_0205B408
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205B4B0
+FUN_0205B4B0: ; 0x0205B4B0
+ push {r3, lr}
+ mov r1, #0x0
+ mov r2, #0x10
+ mov r3, #0x2
+ bl FUN_0205B408
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205B4C0
+FUN_0205B4C0: ; 0x0205B4C0
+ push {r3, lr}
+ mov r1, #0x1
+ mov r2, #0x10
+ mov r3, #0x2
+ bl FUN_0205B408
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205B4D0
+FUN_0205B4D0: ; 0x0205B4D0
+ push {r3, lr}
+ mov r1, #0x2
+ mov r2, #0x10
+ add r3, r1, #0x0
+ bl FUN_0205B408
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205B4E0
+FUN_0205B4E0: ; 0x0205B4E0
+ push {r3, lr}
+ mov r1, #0x3
+ mov r2, #0x10
+ mov r3, #0x2
+ bl FUN_0205B408
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205B4F0
+FUN_0205B4F0: ; 0x0205B4F0
+ push {r3, lr}
+ mov r1, #0x0
+ mov r2, #0x8
+ mov r3, #0x3
+ bl FUN_0205B408
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205B500
+FUN_0205B500: ; 0x0205B500
+ push {r3, lr}
+ mov r1, #0x1
+ mov r2, #0x8
+ mov r3, #0x3
+ bl FUN_0205B408
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205B510
+FUN_0205B510: ; 0x0205B510
+ push {r3, lr}
+ mov r1, #0x2
+ mov r2, #0x8
+ mov r3, #0x3
+ bl FUN_0205B408
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205B520
+FUN_0205B520: ; 0x0205B520
+ push {r3, lr}
+ mov r1, #0x3
+ mov r2, #0x8
+ add r3, r1, #0x0
+ bl FUN_0205B408
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205B530
+FUN_0205B530: ; 0x0205B530
+ push {r3, lr}
+ mov r2, #0x4
+ mov r1, #0x0
+ add r3, r2, #0x0
+ bl FUN_0205B408
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205B540
+FUN_0205B540: ; 0x0205B540
+ push {r3, lr}
+ mov r2, #0x4
+ mov r1, #0x1
+ add r3, r2, #0x0
+ bl FUN_0205B408
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205B550
+FUN_0205B550: ; 0x0205B550
+ push {r3, lr}
+ mov r2, #0x4
+ mov r1, #0x2
+ add r3, r2, #0x0
+ bl FUN_0205B408
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205B560
+FUN_0205B560: ; 0x0205B560
+ push {r3, lr}
+ mov r2, #0x4
+ mov r1, #0x3
+ add r3, r2, #0x0
+ bl FUN_0205B408
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205B570
+FUN_0205B570: ; 0x0205B570
+ push {r3, lr}
+ mov r1, #0x0
+ mov r2, #0x2
+ mov r3, #0x5
+ bl FUN_0205B408
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205B580
+FUN_0205B580: ; 0x0205B580
+ push {r3, lr}
+ mov r1, #0x1
+ mov r2, #0x2
+ mov r3, #0x5
+ bl FUN_0205B408
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205B590
+FUN_0205B590: ; 0x0205B590
+ push {r3, lr}
+ mov r1, #0x2
+ add r2, r1, #0x0
+ mov r3, #0x5
+ bl FUN_0205B408
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205B5A0
+FUN_0205B5A0: ; 0x0205B5A0
+ push {r3, lr}
+ mov r1, #0x3
+ mov r2, #0x2
+ mov r3, #0x5
+ bl FUN_0205B408
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205B5B0
+FUN_0205B5B0: ; 0x0205B5B0
+ push {r3-r7, lr}
+ add r4, r1, #0x0
+ mov r1, #0x10
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ add r7, r3, #0x0
+ bl FUN_020585DC
+ strb r4, [r0, #0xc]
+ str r6, [r0, #0x0]
+ strb r7, [r0, #0xd]
+ add r2, sp, #0x8
+ ldrh r1, [r2, #0x10]
+ strb r1, [r0, #0xe]
+ mov r1, #0x14
+ ldrsh r1, [r2, r1]
+ cmp r6, #0x0
+ strb r1, [r0, #0xf]
+ ldrh r1, [r2, #0x18]
+ strh r1, [r0, #0x8]
+ bne _0205B5E2
+ add r0, r5, #0x0
+ bl FUN_02059C60
+ b _0205B5EA
+_0205B5E2:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02059C0C
+_0205B5EA:
+ ldr r1, _0205B614 ; =0x00010004
+ add r0, r5, #0x0
+ bl FUN_02058410
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_020584D8
+ add r1, sp, #0x8
+ ldrh r1, [r1, #0x10]
+ add r0, r5, #0x0
+ bl FUN_02058544
+ add r0, r5, #0x0
+ bl FUN_02058700
+ ldr r0, _0205B618 ; =0x0000060B
+ bl FUN_020054C8
+ pop {r3-r7, pc}
+ nop
+_0205B614: .word 0x00010004
+_0205B618: .word 0x0000060B
+
+ thumb_func_start FUN_0205B61C
+FUN_0205B61C: ; 0x0205B61C
+ push {r3-r5, lr}
+ sub sp, #0x18
+ add r5, r0, #0x0
+ bl FUN_02058600
+ add r4, r0, #0x0
+ ldr r2, [r4, #0x0]
+ cmp r2, #0x0
+ beq _0205B66C
+ mov r1, #0xc
+ ldrsb r1, [r4, r1]
+ add r0, r5, #0x0
+ bl FUN_02059CC8
+ add r0, r5, #0x0
+ bl FUN_02059D1C
+ mov r0, #0x1
+ ldr r1, [r4, #0x4]
+ lsl r0, r0, #0x10
+ cmp r1, r0
+ blt _0205B65E
+ mov r0, #0x0
+ str r0, [r4, #0x4]
+ mov r1, #0xc
+ ldrsb r1, [r4, r1]
+ add r0, r5, #0x0
+ bl FUN_02059C0C
+ add r0, r5, #0x0
+ mov r1, #0x4
+ bl FUN_02058410
+_0205B65E:
+ ldr r1, [r4, #0x0]
+ cmp r1, #0x0
+ bge _0205B666
+ neg r1, r1
+_0205B666:
+ ldr r0, [r4, #0x4]
+ add r0, r0, r1
+ str r0, [r4, #0x4]
+_0205B66C:
+ ldrh r1, [r4, #0xa]
+ ldrh r0, [r4, #0x8]
+ add r0, r1, r0
+ strh r0, [r4, #0xa]
+ mov r0, #0xf
+ ldrh r1, [r4, #0xa]
+ lsl r0, r0, #0x8
+ cmp r1, r0
+ bls _0205B680
+ strh r0, [r4, #0xa]
+_0205B680:
+ mov r1, #0xf
+ ldrsb r1, [r4, r1]
+ ldrh r0, [r4, #0xa]
+ lsl r2, r1, #0x2
+ ldr r1, _0205B6F8 ; =0x02105F9C
+ lsr r0, r0, #0x8
+ lsl r0, r0, #0x10
+ ldr r2, [r1, r2]
+ mov r1, #0x0
+ str r1, [sp, #0xc]
+ lsr r0, r0, #0xe
+ ldr r0, [r2, r0]
+ str r0, [sp, #0x10]
+ str r1, [sp, #0x14]
+ add r0, r5, #0x0
+ add r1, sp, #0xc
+ bl FUN_02058B94
+ mov r0, #0xd
+ ldrsb r1, [r4, r0]
+ sub r1, r1, #0x1
+ strb r1, [r4, #0xd]
+ ldrsb r0, [r4, r0]
+ cmp r0, #0x0
+ ble _0205B6B8
+ add sp, #0x18
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0205B6B8:
+ add r1, sp, #0x0
+ mov r0, #0x0
+ str r0, [r1, #0x0]
+ str r0, [r1, #0x4]
+ str r0, [r1, #0x8]
+ add r0, r5, #0x0
+ bl FUN_02058B94
+ ldr r1, _0205B6FC ; =0x00020028
+ add r0, r5, #0x0
+ bl FUN_02058410
+ add r0, r5, #0x0
+ bl FUN_02059C60
+ add r0, r5, #0x0
+ bl FUN_020586A0
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_02058544
+ add r0, r5, #0x0
+ bl FUN_02058700
+ ldr r0, _0205B700 ; =0x00000647
+ bl FUN_020054C8
+ mov r0, #0x1
+ add sp, #0x18
+ pop {r3-r5, pc}
+ nop
+_0205B6F8: .word 0x02105F9C
+_0205B6FC: .word 0x00020028
+_0205B700: .word 0x00000647
+
+ thumb_func_start FUN_0205B704
+FUN_0205B704: ; 0x0205B704
+ push {lr}
+ sub sp, #0xc
+ mov r2, #0x2
+ str r2, [sp, #0x0]
+ mov r1, #0x0
+ str r1, [sp, #0x4]
+ add r2, #0xfe
+ str r2, [sp, #0x8]
+ add r2, r1, #0x0
+ mov r3, #0x10
+ bl FUN_0205B5B0
+ mov r0, #0x1
+ add sp, #0xc
+ pop {pc}
+ .balign 4
+
+ thumb_func_start FUN_0205B724
+FUN_0205B724: ; 0x0205B724
+ push {lr}
+ sub sp, #0xc
+ mov r1, #0x2
+ str r1, [sp, #0x0]
+ mov r2, #0x0
+ str r2, [sp, #0x4]
+ add r1, #0xfe
+ str r1, [sp, #0x8]
+ mov r1, #0x1
+ mov r3, #0x10
+ bl FUN_0205B5B0
+ mov r0, #0x1
+ add sp, #0xc
+ pop {pc}
+ .balign 4
+
+ thumb_func_start FUN_0205B744
+FUN_0205B744: ; 0x0205B744
+ push {lr}
+ sub sp, #0xc
+ mov r1, #0x2
+ add r3, r1, #0x0
+ str r1, [sp, #0x0]
+ mov r2, #0x0
+ str r2, [sp, #0x4]
+ add r3, #0xfe
+ str r3, [sp, #0x8]
+ mov r3, #0x10
+ bl FUN_0205B5B0
+ mov r0, #0x1
+ add sp, #0xc
+ pop {pc}
+ .balign 4
+
+ thumb_func_start FUN_0205B764
+FUN_0205B764: ; 0x0205B764
+ push {lr}
+ sub sp, #0xc
+ mov r1, #0x2
+ str r1, [sp, #0x0]
+ mov r2, #0x0
+ str r2, [sp, #0x4]
+ add r1, #0xfe
+ str r1, [sp, #0x8]
+ mov r1, #0x3
+ mov r3, #0x10
+ bl FUN_0205B5B0
+ mov r0, #0x1
+ add sp, #0xc
+ pop {pc}
+ .balign 4
+
+ thumb_func_start FUN_0205B784
+FUN_0205B784: ; 0x0205B784
+ push {lr}
+ sub sp, #0xc
+ mov r1, #0x3
+ str r1, [sp, #0x0]
+ mov r1, #0x0
+ mov r2, #0x2
+ str r1, [sp, #0x4]
+ lsl r2, r2, #0x8
+ str r2, [sp, #0x8]
+ add r2, r1, #0x0
+ mov r3, #0x8
+ bl FUN_0205B5B0
+ mov r0, #0x1
+ add sp, #0xc
+ pop {pc}
+
+ thumb_func_start FUN_0205B7A4
+FUN_0205B7A4: ; 0x0205B7A4
+ push {lr}
+ sub sp, #0xc
+ mov r1, #0x3
+ str r1, [sp, #0x0]
+ mov r2, #0x0
+ mov r1, #0x2
+ str r2, [sp, #0x4]
+ lsl r1, r1, #0x8
+ str r1, [sp, #0x8]
+ mov r1, #0x1
+ mov r3, #0x8
+ bl FUN_0205B5B0
+ mov r0, #0x1
+ add sp, #0xc
+ pop {pc}
+
+ thumb_func_start FUN_0205B7C4
+FUN_0205B7C4: ; 0x0205B7C4
+ push {lr}
+ sub sp, #0xc
+ mov r1, #0x3
+ str r1, [sp, #0x0]
+ mov r2, #0x0
+ mov r1, #0x2
+ str r2, [sp, #0x4]
+ lsl r1, r1, #0x8
+ str r1, [sp, #0x8]
+ mov r1, #0x2
+ mov r3, #0x8
+ bl FUN_0205B5B0
+ mov r0, #0x1
+ add sp, #0xc
+ pop {pc}
+
+ thumb_func_start FUN_0205B7E4
+FUN_0205B7E4: ; 0x0205B7E4
+ push {lr}
+ sub sp, #0xc
+ mov r1, #0x3
+ mov r3, #0x2
+ str r1, [sp, #0x0]
+ mov r2, #0x0
+ str r2, [sp, #0x4]
+ lsl r3, r3, #0x8
+ str r3, [sp, #0x8]
+ mov r3, #0x8
+ bl FUN_0205B5B0
+ mov r0, #0x1
+ add sp, #0xc
+ pop {pc}
+ .balign 4
+
+ thumb_func_start FUN_0205B804
+FUN_0205B804: ; 0x0205B804
+ push {lr}
+ sub sp, #0xc
+ mov r1, #0x3
+ str r1, [sp, #0x0]
+ mov r1, #0x0
+ mov r2, #0x2
+ str r1, [sp, #0x4]
+ lsl r2, r2, #0x8
+ str r2, [sp, #0x8]
+ lsl r2, r2, #0x4
+ mov r3, #0x8
+ bl FUN_0205B5B0
+ mov r0, #0x1
+ add sp, #0xc
+ pop {pc}
+
+ thumb_func_start FUN_0205B824
+FUN_0205B824: ; 0x0205B824
+ push {lr}
+ sub sp, #0xc
+ mov r1, #0x3
+ str r1, [sp, #0x0]
+ mov r1, #0x0
+ str r1, [sp, #0x4]
+ mov r1, #0x2
+ lsl r1, r1, #0x8
+ str r1, [sp, #0x8]
+ mov r1, #0x1
+ lsl r2, r1, #0xd
+ mov r3, #0x8
+ bl FUN_0205B5B0
+ mov r0, #0x1
+ add sp, #0xc
+ pop {pc}
+ .balign 4
+
+ thumb_func_start FUN_0205B848
+FUN_0205B848: ; 0x0205B848
+ push {lr}
+ sub sp, #0xc
+ mov r1, #0x3
+ str r1, [sp, #0x0]
+ mov r1, #0x0
+ str r1, [sp, #0x4]
+ mov r1, #0x2
+ lsl r1, r1, #0x8
+ str r1, [sp, #0x8]
+ mov r1, #0x2
+ lsl r2, r1, #0xc
+ mov r3, #0x8
+ bl FUN_0205B5B0
+ mov r0, #0x1
+ add sp, #0xc
+ pop {pc}
+ .balign 4
+
+ thumb_func_start FUN_0205B86C
+FUN_0205B86C: ; 0x0205B86C
+ push {lr}
+ sub sp, #0xc
+ mov r1, #0x3
+ str r1, [sp, #0x0]
+ mov r2, #0x0
+ str r2, [sp, #0x4]
+ mov r2, #0x2
+ lsl r2, r2, #0x8
+ str r2, [sp, #0x8]
+ lsl r2, r2, #0x4
+ mov r3, #0x8
+ bl FUN_0205B5B0
+ mov r0, #0x1
+ add sp, #0xc
+ pop {pc}
+
+ thumb_func_start FUN_0205B88C
+FUN_0205B88C: ; 0x0205B88C
+ push {lr}
+ sub sp, #0xc
+ mov r2, #0x3
+ str r2, [sp, #0x0]
+ mov r1, #0x0
+ str r1, [sp, #0x4]
+ add r2, #0xfd
+ str r2, [sp, #0x8]
+ mov r2, #0x2
+ lsl r2, r2, #0xc
+ mov r3, #0x10
+ bl FUN_0205B5B0
+ mov r0, #0x1
+ add sp, #0xc
+ pop {pc}
+
+ thumb_func_start FUN_0205B8AC
+FUN_0205B8AC: ; 0x0205B8AC
+ push {lr}
+ sub sp, #0xc
+ mov r2, #0x3
+ str r2, [sp, #0x0]
+ mov r1, #0x0
+ str r1, [sp, #0x4]
+ add r2, #0xfd
+ mov r1, #0x1
+ str r2, [sp, #0x8]
+ lsl r2, r1, #0xd
+ mov r3, #0x10
+ bl FUN_0205B5B0
+ mov r0, #0x1
+ add sp, #0xc
+ pop {pc}
+
+ thumb_func_start FUN_0205B8CC
+FUN_0205B8CC: ; 0x0205B8CC
+ push {lr}
+ sub sp, #0xc
+ mov r2, #0x3
+ str r2, [sp, #0x0]
+ mov r1, #0x0
+ str r1, [sp, #0x4]
+ add r2, #0xfd
+ mov r1, #0x2
+ str r2, [sp, #0x8]
+ lsl r2, r1, #0xc
+ mov r3, #0x10
+ bl FUN_0205B5B0
+ mov r0, #0x1
+ add sp, #0xc
+ pop {pc}
+
+ thumb_func_start FUN_0205B8EC
+FUN_0205B8EC: ; 0x0205B8EC
+ push {lr}
+ sub sp, #0xc
+ mov r1, #0x3
+ str r1, [sp, #0x0]
+ mov r2, #0x0
+ str r2, [sp, #0x4]
+ add r2, r1, #0x0
+ add r2, #0xfd
+ str r2, [sp, #0x8]
+ mov r2, #0x2
+ lsl r2, r2, #0xc
+ mov r3, #0x10
+ bl FUN_0205B5B0
+ mov r0, #0x1
+ add sp, #0xc
+ pop {pc}
+ .balign 4
+
+ thumb_func_start FUN_0205B910
+FUN_0205B910: ; 0x0205B910
+ push {lr}
+ sub sp, #0xc
+ mov r1, #0xa
+ str r1, [sp, #0x0]
+ mov r1, #0x0
+ str r1, [sp, #0x4]
+ mov r1, #0xf0
+ str r1, [sp, #0x8]
+ mov r1, #0x2
+ lsl r2, r1, #0xb
+ mov r3, #0x10
+ bl FUN_0205B5B0
+ mov r0, #0x1
+ add sp, #0xc
+ pop {pc}
+
+ thumb_func_start FUN_0205B930
+FUN_0205B930: ; 0x0205B930
+ push {lr}
+ sub sp, #0xc
+ mov r1, #0xa
+ str r1, [sp, #0x0]
+ mov r1, #0x0
+ str r1, [sp, #0x4]
+ mov r1, #0xf0
+ mov r2, #0x1
+ str r1, [sp, #0x8]
+ mov r1, #0x3
+ lsl r2, r2, #0xc
+ mov r3, #0x10
+ bl FUN_0205B5B0
+ mov r0, #0x1
+ add sp, #0xc
+ pop {pc}
+ .balign 4
+
+ thumb_func_start FUN_0205B954
+FUN_0205B954: ; 0x0205B954
+ push {lr}
+ sub sp, #0xc
+ mov r1, #0xb
+ str r1, [sp, #0x0]
+ mov r1, #0x0
+ str r1, [sp, #0x4]
+ mov r1, #0x5
+ lsl r1, r1, #0x6
+ str r1, [sp, #0x8]
+ mov r1, #0x2
+ lsl r2, r1, #0xd
+ mov r3, #0xc
+ bl FUN_0205B5B0
+ mov r0, #0x1
+ add sp, #0xc
+ pop {pc}
+ .balign 4
+
+ thumb_func_start FUN_0205B978
+FUN_0205B978: ; 0x0205B978
+ push {lr}
+ sub sp, #0xc
+ mov r1, #0xb
+ str r1, [sp, #0x0]
+ mov r1, #0x0
+ str r1, [sp, #0x4]
+ mov r1, #0x5
+ lsl r1, r1, #0x6
+ mov r2, #0x1
+ str r1, [sp, #0x8]
+ mov r1, #0x3
+ lsl r2, r2, #0xe
+ mov r3, #0xc
+ bl FUN_0205B5B0
+ mov r0, #0x1
+ add sp, #0xc
+ pop {pc}
+
+ thumb_func_start FUN_0205B99C
+FUN_0205B99C: ; 0x0205B99C
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ mov r1, #0x4
+ bl FUN_020585DC
+ str r4, [r0, #0x0]
+ add r0, r5, #0x0
+ bl FUN_02058700
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205B9B4
+FUN_0205B9B4: ; 0x0205B9B4
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02058600
+ ldr r1, [r0, #0x0]
+ cmp r1, #0x0
+ beq _0205B9CA
+ sub r1, r1, #0x1
+ str r1, [r0, #0x0]
+ mov r0, #0x0
+ pop {r4, pc}
+_0205B9CA:
+ add r0, r4, #0x0
+ bl FUN_02058700
+ mov r0, #0x1
+ pop {r4, pc}
+
+ thumb_func_start FUN_0205B9D4
+FUN_0205B9D4: ; 0x0205B9D4
+ push {r3, lr}
+ mov r1, #0x1
+ bl FUN_0205B99C
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205B9E0
+FUN_0205B9E0: ; 0x0205B9E0
+ push {r3, lr}
+ mov r1, #0x2
+ bl FUN_0205B99C
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205B9EC
+FUN_0205B9EC: ; 0x0205B9EC
+ push {r3, lr}
+ mov r1, #0x4
+ bl FUN_0205B99C
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205B9F8
+FUN_0205B9F8: ; 0x0205B9F8
+ push {r3, lr}
+ mov r1, #0x8
+ bl FUN_0205B99C
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205BA04
+FUN_0205BA04: ; 0x0205BA04
+ push {r3, lr}
+ mov r1, #0xf
+ bl FUN_0205B99C
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205BA10
+FUN_0205BA10: ; 0x0205BA10
+ push {r3, lr}
+ mov r1, #0x10
+ bl FUN_0205B99C
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205BA1C
+FUN_0205BA1C: ; 0x0205BA1C
+ push {r3, lr}
+ mov r1, #0x20
+ bl FUN_0205B99C
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205BA28
+FUN_0205BA28: ; 0x0205BA28
+ push {r4, lr}
+ mov r1, #0x8
+ add r4, r0, #0x0
+ bl FUN_020585DC
+ mov r1, #0x1
+ lsl r1, r1, #0x10
+ str r1, [r0, #0x4]
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_02058544
+ add r0, r4, #0x0
+ bl FUN_02058700
+ mov r0, #0x1
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205BA4C
+FUN_0205BA4C: ; 0x0205BA4C
+ push {r4-r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ bl FUN_02058600
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x0]
+ ldr r0, [r4, #0x4]
+ add r0, r1, r0
+ str r0, [r4, #0x0]
+ add r1, sp, #0x0
+ mov r0, #0x0
+ str r0, [r1, #0x0]
+ str r0, [r1, #0x4]
+ str r0, [r1, #0x8]
+ ldr r0, [r4, #0x0]
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ bl FUN_02058B94
+ ldr r1, [r4, #0x0]
+ asr r0, r1, #0xe
+ lsr r0, r0, #0x11
+ add r0, r1, r0
+ asr r0, r0, #0xf
+ cmp r0, #0x28
+ bge _0205BA88
+ add sp, #0xc
+ mov r0, #0x0
+ pop {r4-r5, pc}
+_0205BA88:
+ add r0, r5, #0x0
+ bl FUN_02058700
+ mov r0, #0x1
+ add sp, #0xc
+ pop {r4-r5, pc}
+
+ thumb_func_start FUN_0205BA94
+FUN_0205BA94: ; 0x0205BA94
+ push {r4, lr}
+ mov r1, #0x8
+ add r4, r0, #0x0
+ bl FUN_020585DC
+ mov r1, #0x5
+ lsl r1, r1, #0x12
+ str r1, [r0, #0x0]
+ ldr r1, _0205BABC ; =0xFFFF0000
+ str r1, [r0, #0x4]
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_02058544
+ add r0, r4, #0x0
+ bl FUN_02058700
+ mov r0, #0x1
+ pop {r4, pc}
+ nop
+_0205BABC: .word 0xFFFF0000
+
+ thumb_func_start FUN_0205BAC0
+FUN_0205BAC0: ; 0x0205BAC0
+ push {r4-r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ bl FUN_02058600
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x0]
+ ldr r0, [r4, #0x4]
+ add r0, r1, r0
+ str r0, [r4, #0x0]
+ bpl _0205BADA
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+_0205BADA:
+ add r1, sp, #0x0
+ mov r0, #0x0
+ str r0, [r1, #0x0]
+ str r0, [r1, #0x4]
+ str r0, [r1, #0x8]
+ ldr r0, [r4, #0x0]
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ bl FUN_02058B94
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ ble _0205BAFA
+ add sp, #0xc
+ mov r0, #0x0
+ pop {r4-r5, pc}
+_0205BAFA:
+ add r0, r5, #0x0
+ bl FUN_02058700
+ mov r0, #0x1
+ add sp, #0xc
+ pop {r4-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205BB08
+FUN_0205BB08: ; 0x0205BB08
+ push {r4, lr}
+ mov r1, #0x2
+ add r4, r0, #0x0
+ lsl r1, r1, #0x8
+ bl FUN_02058410
+ add r0, r4, #0x0
+ bl FUN_02058700
+ mov r0, #0x1
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205BB20
+FUN_0205BB20: ; 0x0205BB20
+ push {r4, lr}
+ mov r1, #0x2
+ add r4, r0, #0x0
+ lsl r1, r1, #0x8
+ bl FUN_02058418
+ add r0, r4, #0x0
+ bl FUN_02058700
+ mov r0, #0x1
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205BB38
+FUN_0205BB38: ; 0x0205BB38
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r1, #0x80
+ bl FUN_02058410
+ add r0, r4, #0x0
+ bl FUN_02058700
+ mov r0, #0x1
+ pop {r4, pc}
+
+ thumb_func_start FUN_0205BB4C
+FUN_0205BB4C: ; 0x0205BB4C
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r1, #0x80
+ bl FUN_02058418
+ add r0, r4, #0x0
+ bl FUN_02058700
+ mov r0, #0x1
+ pop {r4, pc}
+
+ thumb_func_start FUN_0205BB60
+FUN_0205BB60: ; 0x0205BB60
+ push {r4, lr}
+ mov r1, #0x1
+ add r4, r0, #0x0
+ lsl r1, r1, #0x8
+ bl FUN_02058410
+ add r0, r4, #0x0
+ bl FUN_02058700
+ mov r0, #0x1
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205BB78
+FUN_0205BB78: ; 0x0205BB78
+ push {r4, lr}
+ mov r1, #0x1
+ add r4, r0, #0x0
+ lsl r1, r1, #0x8
+ bl FUN_02058418
+ add r0, r4, #0x0
+ bl FUN_02058700
+ mov r0, #0x1
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205BB90
+FUN_0205BB90: ; 0x0205BB90
+ push {r4-r6, lr}
+ add r6, r1, #0x0
+ mov r1, #0x8
+ add r5, r0, #0x0
+ bl FUN_020585DC
+ add r4, r0, #0x0
+ str r6, [r4, #0x0]
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ mov r2, #0x1
+ bl FUN_021E7AC0
+ str r0, [r4, #0x4]
+ add r0, r5, #0x0
+ bl FUN_02058700
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0205BBB4
+FUN_0205BBB4: ; 0x0205BBB4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_02058600
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x4]
+ bl FUN_021E799C
+ cmp r0, #0x1
+ bne _0205BBD8
+ ldr r0, [r4, #0x4]
+ bl FUN_02064520
+ add r0, r5, #0x0
+ bl FUN_02058700
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0205BBD8:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0205BBDC
+FUN_0205BBDC: ; 0x0205BBDC
+ push {r3, lr}
+ mov r1, #0x0
+ bl FUN_0205BB90
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205BBE8
+FUN_0205BBE8: ; 0x0205BBE8
+ push {r3, lr}
+ mov r1, #0x1
+ bl FUN_0205BB90
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205BBF4
+FUN_0205BBF4: ; 0x0205BBF4
+ push {r3-r7, lr}
+ add r4, r1, #0x0
+ mov r1, #0x8
+ add r5, r0, #0x0
+ add r7, r2, #0x0
+ add r6, r3, #0x0
+ bl FUN_020585DC
+ strh r4, [r0, #0x0]
+ strh r6, [r0, #0x2]
+ strh r7, [r0, #0x4]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02059C0C
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_020584D8
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02058544
+ add r0, r5, #0x0
+ mov r1, #0x4
+ bl FUN_02058410
+ add r0, r5, #0x0
+ bl FUN_02058700
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205BC34
+FUN_0205BC34: ; 0x0205BC34
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ bl FUN_02058600
+ add r4, r0, #0x0
+ mov r2, #0x6
+ ldrsh r2, [r4, r2]
+ mov r1, #0x0
+ ldrsh r1, [r4, r1]
+ lsl r2, r2, #0x2
+ ldr r2, [r6, r2]
+ add r0, r5, #0x0
+ bl FUN_02059CC8
+ add r0, r5, #0x0
+ bl FUN_02059D1C
+ mov r0, #0x6
+ ldrsh r1, [r4, r0]
+ add r1, r1, #0x1
+ strh r1, [r4, #0x6]
+ ldrsh r1, [r4, r0]
+ mov r0, #0x4
+ ldrsh r0, [r4, r0]
+ cmp r1, r0
+ bge _0205BC6E
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_0205BC6E:
+ add r0, r5, #0x0
+ mov r1, #0x28
+ bl FUN_02058410
+ add r0, r5, #0x0
+ bl FUN_02059C60
+ add r0, r5, #0x0
+ bl FUN_020586A0
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_02058544
+ add r0, r5, #0x0
+ bl FUN_02058700
+ mov r0, #0x1
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0205BC94
+FUN_0205BC94: ; 0x0205BC94
+ push {r3, lr}
+ mov r2, #0x6
+ mov r1, #0x0
+ add r3, r2, #0x0
+ bl FUN_0205BBF4
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205BCA4
+FUN_0205BCA4: ; 0x0205BCA4
+ push {r3, lr}
+ mov r2, #0x6
+ mov r1, #0x1
+ add r3, r2, #0x0
+ bl FUN_0205BBF4
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205BCB4
+FUN_0205BCB4: ; 0x0205BCB4
+ push {r3, lr}
+ mov r2, #0x6
+ mov r1, #0x2
+ add r3, r2, #0x0
+ bl FUN_0205BBF4
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205BCC4
+FUN_0205BCC4: ; 0x0205BCC4
+ push {r3, lr}
+ mov r2, #0x6
+ mov r1, #0x3
+ add r3, r2, #0x0
+ bl FUN_0205BBF4
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205BCD4
+FUN_0205BCD4: ; 0x0205BCD4
+ push {r3, lr}
+ ldr r1, _0205BCE8 ; =0x020F6C6C
+ bl FUN_0205BC34
+ cmp r0, #0x1
+ bne _0205BCE4
+ mov r0, #0x1
+ pop {r3, pc}
+_0205BCE4:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+_0205BCE8: .word 0x020F6C6C
+
+ thumb_func_start FUN_0205BCEC
+FUN_0205BCEC: ; 0x0205BCEC
+ push {r3, lr}
+ mov r1, #0x0
+ mov r2, #0x3
+ mov r3, #0x7
+ bl FUN_0205BBF4
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205BCFC
+FUN_0205BCFC: ; 0x0205BCFC
+ push {r3, lr}
+ mov r1, #0x1
+ mov r2, #0x3
+ mov r3, #0x7
+ bl FUN_0205BBF4
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205BD0C
+FUN_0205BD0C: ; 0x0205BD0C
+ push {r3, lr}
+ mov r1, #0x2
+ mov r2, #0x3
+ mov r3, #0x7
+ bl FUN_0205BBF4
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205BD1C
+FUN_0205BD1C: ; 0x0205BD1C
+ push {r3, lr}
+ mov r1, #0x3
+ add r2, r1, #0x0
+ mov r3, #0x7
+ bl FUN_0205BBF4
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205BD2C
+FUN_0205BD2C: ; 0x0205BD2C
+ push {r3, lr}
+ ldr r1, _0205BD40 ; =0x020F6C48
+ bl FUN_0205BC34
+ cmp r0, #0x1
+ bne _0205BD3C
+ mov r0, #0x1
+ pop {r3, pc}
+_0205BD3C:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+_0205BD40: .word 0x020F6C48
+
+ thumb_func_start FUN_0205BD44
+FUN_0205BD44: ; 0x0205BD44
+ push {r3, lr}
+ mov r1, #0x0
+ mov r2, #0x7
+ mov r3, #0x8
+ bl FUN_0205BBF4
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205BD54
+FUN_0205BD54: ; 0x0205BD54
+ push {r3, lr}
+ mov r1, #0x1
+ mov r2, #0x7
+ mov r3, #0x8
+ bl FUN_0205BBF4
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205BD64
+FUN_0205BD64: ; 0x0205BD64
+ push {r3, lr}
+ mov r1, #0x2
+ mov r2, #0x7
+ mov r3, #0x8
+ bl FUN_0205BBF4
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205BD74
+FUN_0205BD74: ; 0x0205BD74
+ push {r3, lr}
+ mov r1, #0x3
+ mov r2, #0x7
+ mov r3, #0x8
+ bl FUN_0205BBF4
+ mov r0, #0x1
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205BD84
+FUN_0205BD84: ; 0x0205BD84
+ push {r3, lr}
+ ldr r1, _0205BD98 ; =0x020F6C84
+ bl FUN_0205BC34
+ cmp r0, #0x1
+ bne _0205BD94
+ mov r0, #0x1
+ pop {r3, pc}
+_0205BD94:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+_0205BD98: .word 0x020F6C84
+
+ thumb_func_start FUN_0205BD9C
+FUN_0205BD9C: ; 0x0205BD9C
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r1, #0x4
+ bl FUN_020585DC
+ add r0, r4, #0x0
+ mov r1, #0x9
+ bl FUN_02058544
+ add r0, r4, #0x0
+ bl FUN_02058700
+ mov r0, #0x0
+ pop {r4, pc}
+
+ thumb_func_start FUN_0205BDB8
+FUN_0205BDB8: ; 0x0205BDB8
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02058600
+ ldr r1, [r0, #0x0]
+ add r1, r1, #0x1
+ str r1, [r0, #0x0]
+ cmp r1, #0x8
+ blt _0205BDE0
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_020584AC
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_02058544
+ add r0, r4, #0x0
+ bl FUN_02058700
+_0205BDE0:
+ mov r0, #0x0
+ pop {r4, pc}
+
+ thumb_func_start FUN_0205BDE4
+FUN_0205BDE4: ; 0x0205BDE4
+ push {r3-r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0x0
+ mov r1, #0x4
+ bl FUN_020585DC
+ add r0, r4, #0x0
+ bl FUN_0205EB20
+ cmp r0, #0x0
+ beq _0205BDFE
+ bl FUN_02064520
+_0205BDFE:
+ add r1, sp, #0x0
+ mov r0, #0x0
+ str r0, [r1, #0x0]
+ str r0, [r1, #0x4]
+ str r0, [r1, #0x8]
+ add r0, r4, #0x0
+ bl FUN_02058B94
+ add r0, r4, #0x0
+ bl FUN_0224D2E0
+ ldr r1, _0205BE34 ; =0x00010004
+ add r0, r4, #0x0
+ bl FUN_02058410
+ mov r1, #0x1
+ add r0, r4, #0x0
+ lsl r1, r1, #0x14
+ bl FUN_02058418
+ add r0, r4, #0x0
+ bl FUN_02058700
+ mov r0, #0x0
+ add sp, #0xc
+ pop {r3-r4, pc}
+ nop
+_0205BE34: .word 0x00010004
+
+ thumb_func_start FUN_0205BE38
+FUN_0205BE38: ; 0x0205BE38
+ push {r4-r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ bl FUN_02058600
+ add r4, r0, #0x0
+ ldr r0, _0205BE98 ; =0x02105F9C
+ add r1, sp, #0x0
+ ldr r2, [r0, #0x0]
+ mov r0, #0x0
+ str r0, [r1, #0x0]
+ str r0, [r1, #0x4]
+ str r0, [r1, #0x8]
+ ldr r0, [r4, #0x0]
+ lsl r0, r0, #0x2
+ ldr r0, [r2, r0]
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ bl FUN_02058B94
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x2
+ str r0, [r4, #0x0]
+ cmp r0, #0x10
+ bhs _0205BE70
+ add sp, #0xc
+ mov r0, #0x0
+ pop {r4-r5, pc}
+_0205BE70:
+ mov r0, #0x0
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ add r1, sp, #0x0
+ bl FUN_02058B94
+ ldr r1, _0205BE9C ; =0x00020028
+ add r0, r5, #0x0
+ bl FUN_02058410
+ add r0, r5, #0x0
+ bl FUN_0205EB2C
+ add r0, r5, #0x0
+ bl FUN_02058700
+ mov r0, #0x1
+ add sp, #0xc
+ pop {r4-r5, pc}
+ nop
+_0205BE98: .word 0x02105F9C
+_0205BE9C: .word 0x00020028
+
+ thumb_func_start FUN_0205BEA0
+FUN_0205BEA0: ; 0x0205BEA0
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r1, #0x4
+ bl FUN_020585DC
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_02058544
+ add r0, r4, #0x0
+ bl FUN_02058700
+ mov r0, #0x0
+ pop {r4, pc}
+
+ thumb_func_start FUN_0205BEBC
+FUN_0205BEBC: ; 0x0205BEBC
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r1, #0x4
+ bl FUN_020585DC
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_02058544
+ add r0, r4, #0x0
+ bl FUN_02058700
+ mov r0, #0x0
+ pop {r4, pc}
+
+ thumb_func_start FUN_0205BED8
+FUN_0205BED8: ; 0x0205BED8
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02058600
+ ldr r1, [r0, #0x0]
+ add r1, r1, #0x1
+ str r1, [r0, #0x0]
+ cmp r1, #0x15
+ bhs _0205BEEE
+ mov r0, #0x0
+ pop {r4, pc}
+_0205BEEE:
+ add r0, r4, #0x0
+ bl FUN_02058700
+ mov r0, #0x1
+ pop {r4, pc}
+
+ thumb_func_start FUN_0205BEF8
+FUN_0205BEF8: ; 0x0205BEF8
+ ldr r3, _0205BEFC ; =FUN_0205BF24
+ bx r3
+ .balign 4
+_0205BEFC: .word FUN_0205BF24
+
+ thumb_func_start FUN_0205BF00
+FUN_0205BF00: ; 0x0205BF00
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_0205BF40
+ cmp r0, #0x0
+ bne _0205BF10
+ mov r0, #0x0
+ pop {r4, pc}
+_0205BF10:
+ add r0, r4, #0x0
+ bl FUN_0205BF5C
+ cmp r0, #0x0
+ beq _0205BF1E
+ mov r0, #0x1
+ pop {r4, pc}
+_0205BF1E:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205BF24
+FUN_0205BF24: ; 0x0205BF24
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02058488
+ add r1, r0, #0x0
+ lsl r2, r1, #0x2
+ ldr r1, _0205BF3C ; =0x020F7118
+ add r0, r4, #0x0
+ ldr r1, [r1, r2]
+ blx r1
+ pop {r4, pc}
+ nop
+_0205BF3C: .word 0x020F7118
+
+ thumb_func_start FUN_0205BF40
+FUN_0205BF40: ; 0x0205BF40
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02058488
+ add r1, r0, #0x0
+ lsl r2, r1, #0x2
+ ldr r1, _0205BF58 ; =0x020F7148
+ add r0, r4, #0x0
+ ldr r1, [r1, r2]
+ blx r1
+ pop {r4, pc}
+ nop
+_0205BF58: .word 0x020F7148
+
+ thumb_func_start FUN_0205BF5C
+FUN_0205BF5C: ; 0x0205BF5C
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02058488
+ add r1, r0, #0x0
+ lsl r2, r1, #0x2
+ ldr r1, _0205BF74 ; =0x020F7178
+ add r0, r4, #0x0
+ ldr r1, [r1, r2]
+ blx r1
+ pop {r4, pc}
+ nop
+_0205BF74: .word 0x020F7178
+
+ thumb_func_start FUN_0205BF78
+FUN_0205BF78: ; 0x0205BF78
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl FUN_02058B2C
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02058B14
+ cmp r5, r0
+ beq _0205BF90
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0205BF90:
+ add r0, r4, #0x0
+ bl FUN_02058B4C
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02058B24
+ cmp r5, r0
+ beq _0205BFA6
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0205BFA6:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205BFAC
+FUN_0205BFAC: ; 0x0205BFAC
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl FUN_02058B2C
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02058B14
+ cmp r5, r0
+ beq _0205BFC4
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0205BFC4:
+ add r0, r4, #0x0
+ bl FUN_02058B4C
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02058B24
+ cmp r5, r0
+ bne _0205BFDA
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0205BFDA:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205BFE0
+FUN_0205BFE0: ; 0x0205BFE0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0205BFE4
+FUN_0205BFE4: ; 0x0205BFE4
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_0205BFE8
+FUN_0205BFE8: ; 0x0205BFE8
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_0205BFEC
+FUN_0205BFEC: ; 0x0205BFEC
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r1, #0x9
+ bl FUN_020585B4
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_02058510
+ strb r0, [r4, #0x3]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0205C004
+FUN_0205C004: ; 0x0205C004
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_020585D8
+ add r4, r0, #0x0
+ ldrb r0, [r4, #0x0]
+ cmp r0, #0x3
+ bhi _0205C07C
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0205C020: ; jump table (using 16-bit offset)
+ .short _0205C028 - _0205C020 - 2; case 0
+ .short _0205C03A - _0205C020 - 2; case 1
+ .short _0205C062 - _0205C020 - 2; case 2
+ .short _0205C078 - _0205C020 - 2; case 3
+_0205C028:
+ add r0, r5, #0x0
+ bl FUN_0205BF78
+ cmp r0, #0x1
+ bne _0205C07C
+ ldrb r0, [r4, #0x0]
+ add r0, r0, #0x1
+ strb r0, [r4, #0x0]
+ b _0205C07C
+_0205C03A:
+ add r0, r5, #0x0
+ bl FUN_0205BFAC
+ cmp r0, #0x0
+ beq _0205C07C
+ mov r0, #0x2
+ ldrsb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, #0x2]
+ ldrsb r1, [r4, r0]
+ mov r0, #0x3
+ ldrsb r0, [r4, r0]
+ cmp r1, r0
+ bge _0205C05C
+ mov r0, #0x0
+ strb r0, [r4, #0x0]
+ b _0205C07C
+_0205C05C:
+ ldrb r0, [r4, #0x0]
+ add r0, r0, #0x1
+ strb r0, [r4, #0x0]
+_0205C062:
+ add r0, r5, #0x0
+ bl FUN_02058854
+ cmp r0, #0x1
+ beq _0205C07C
+ ldrb r0, [r4, #0x0]
+ add r0, r0, #0x1
+ strb r0, [r4, #0x0]
+ mov r0, #0x0
+ strb r0, [r4, #0x2]
+ strb r0, [r4, #0x1]
+_0205C078:
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0205C07C:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0205C080
+FUN_0205C080: ; 0x0205C080
+ push {r4-r6, lr}
+ sub sp, #0x20
+ add r5, r0, #0x0
+ bl FUN_020585D8
+ add r4, r0, #0x0
+ ldrb r0, [r4, #0x1]
+ cmp r0, #0x3
+ bhi _0205C15E
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0205C09E: ; jump table (using 16-bit offset)
+ .short _0205C0A6 - _0205C09E - 2; case 0
+ .short _0205C0C8 - _0205C09E - 2; case 1
+ .short _0205C0FA - _0205C09E - 2; case 2
+ .short _0205C110 - _0205C09E - 2; case 3
+_0205C0A6:
+ ldr r3, _0205C164 ; =0x020F70D8
+ add r2, sp, #0x10
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ add r0, r5, #0x0
+ bl FUN_020584C4
+ strb r0, [r4, #0x4]
+ lsl r1, r0, #0x2
+ add r0, sp, #0x10
+ ldr r0, [r0, r1]
+ strb r0, [r4, #0x5]
+ ldrb r0, [r4, #0x1]
+ add r0, r0, #0x1
+ strb r0, [r4, #0x1]
+_0205C0C8:
+ ldr r6, _0205C168 ; =0x020F70E8
+ add r3, sp, #0x0
+ add r2, r3, #0x0
+ ldmia r6!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldmia r6!, {r0-r1}
+ stmia r3!, {r0-r1}
+ mov r0, #0x5
+ ldrsb r0, [r4, r0]
+ lsl r3, r0, #0x3
+ mov r0, #0x6
+ ldrsb r0, [r4, r0]
+ lsl r1, r0, #0x2
+ add r0, r2, r3
+ ldr r0, [r1, r0]
+ mov r1, #0x0
+ bl FUN_0205AFDC
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0205AE0C
+ ldrb r0, [r4, #0x1]
+ add r0, r0, #0x1
+ strb r0, [r4, #0x1]
+_0205C0FA:
+ add r0, r5, #0x0
+ bl FUN_0205B080
+ cmp r0, #0x0
+ bne _0205C10A
+ add sp, #0x20
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_0205C10A:
+ ldrb r0, [r4, #0x1]
+ add r0, r0, #0x1
+ strb r0, [r4, #0x1]
+_0205C110:
+ mov r0, #0x8
+ ldrsb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, #0x8]
+ ldrsb r0, [r4, r0]
+ cmp r0, #0x8
+ bge _0205C124
+ add sp, #0x20
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_0205C124:
+ mov r0, #0x0
+ strb r0, [r4, #0x8]
+ mov r0, #0x7
+ ldrsb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, #0x7]
+ ldrsb r0, [r4, r0]
+ cmp r0, #0x4
+ bge _0205C148
+ mov r0, #0x6
+ ldrsb r0, [r4, r0]
+ add sp, #0x20
+ add r1, r0, #0x1
+ mov r0, #0x1
+ and r1, r0
+ strb r1, [r4, #0x6]
+ strb r0, [r4, #0x1]
+ pop {r4-r6, pc}
+_0205C148:
+ mov r1, #0x4
+ ldrsb r1, [r4, r1]
+ add r0, r5, #0x0
+ bl FUN_020584AC
+ ldrb r0, [r4, #0x1]
+ add r0, r0, #0x1
+ strb r0, [r4, #0x1]
+ mov r0, #0x0
+ strb r0, [r4, #0x7]
+ strb r0, [r4, #0x0]
+_0205C15E:
+ mov r0, #0x0
+ add sp, #0x20
+ pop {r4-r6, pc}
+ .balign 4
+_0205C164: .word 0x020F70D8
+_0205C168: .word 0x020F70E8
+
+ thumb_func_start FUN_0205C16C
+FUN_0205C16C: ; 0x0205C16C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r1, #0x9
+ bl FUN_020585B4
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_02058510
+ strb r0, [r4, #0x3]
+ add r0, r5, #0x0
+ bl FUN_02058488
+ cmp r0, #0x5
+ beq _0205C190
+ mov r0, #0x1
+ b _0205C192
+_0205C190:
+ mov r0, #0x0
+_0205C192:
+ strb r0, [r4, #0x5]
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205C198
+FUN_0205C198: ; 0x0205C198
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_020585D8
+ add r4, r0, #0x0
+ ldrb r0, [r4, #0x0]
+ cmp r0, #0x3
+ bhi _0205C210
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0205C1B4: ; jump table (using 16-bit offset)
+ .short _0205C1BC - _0205C1B4 - 2; case 0
+ .short _0205C1CE - _0205C1B4 - 2; case 1
+ .short _0205C1F6 - _0205C1B4 - 2; case 2
+ .short _0205C20C - _0205C1B4 - 2; case 3
+_0205C1BC:
+ add r0, r5, #0x0
+ bl FUN_0205BF78
+ cmp r0, #0x1
+ bne _0205C210
+ ldrb r0, [r4, #0x0]
+ add r0, r0, #0x1
+ strb r0, [r4, #0x0]
+ b _0205C210
+_0205C1CE:
+ add r0, r5, #0x0
+ bl FUN_0205BFAC
+ cmp r0, #0x0
+ beq _0205C210
+ mov r0, #0x2
+ ldrsb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, #0x2]
+ ldrsb r1, [r4, r0]
+ mov r0, #0x3
+ ldrsb r0, [r4, r0]
+ cmp r1, r0
+ bge _0205C1F0
+ mov r0, #0x0
+ strb r0, [r4, #0x0]
+ b _0205C210
+_0205C1F0:
+ ldrb r0, [r4, #0x0]
+ add r0, r0, #0x1
+ strb r0, [r4, #0x0]
+_0205C1F6:
+ add r0, r5, #0x0
+ bl FUN_02058854
+ cmp r0, #0x1
+ beq _0205C210
+ ldrb r0, [r4, #0x0]
+ add r0, r0, #0x1
+ strb r0, [r4, #0x0]
+ mov r0, #0x0
+ strb r0, [r4, #0x2]
+ strb r0, [r4, #0x1]
+_0205C20C:
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0205C210:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0205C214
+FUN_0205C214: ; 0x0205C214
+ push {r3-r7, lr}
+ sub sp, #0x20
+ ldr r3, _0205C330 ; =0x020F70F8
+ add r2, sp, #0x0
+ add r7, r0, #0x0
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ add r0, r7, #0x0
+ bl FUN_020585D8
+ add r4, r0, #0x0
+ ldrb r0, [r4, #0x1]
+ cmp r0, #0x3
+ bhi _0205C32A
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0205C248: ; jump table (using 16-bit offset)
+ .short _0205C250 - _0205C248 - 2; case 0
+ .short _0205C296 - _0205C248 - 2; case 1
+ .short _0205C2BC - _0205C248 - 2; case 2
+ .short _0205C2D2 - _0205C248 - 2; case 3
+_0205C250:
+ add r0, r7, #0x0
+ bl FUN_020584C4
+ mov r5, #0x0
+ add r6, r0, #0x0
+ add r1, r5, #0x0
+ add r0, sp, #0x0
+ mov r2, #0x5
+ b _0205C266
+_0205C262:
+ add r1, r1, #0x4
+ add r5, r5, #0x1
+_0205C266:
+ cmp r5, #0x4
+ bge _0205C276
+ ldrsb r3, [r4, r2]
+ lsl r3, r3, #0x4
+ add r3, r0, r3
+ ldr r3, [r1, r3]
+ cmp r6, r3
+ bne _0205C262
+_0205C276:
+ cmp r5, #0x4
+ blt _0205C27E
+ bl ErrorHandling
+_0205C27E:
+ add r0, r5, #0x1
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x1e
+ sub r1, r1, r2
+ mov r0, #0x1e
+ ror r1, r0
+ strb r6, [r4, #0x4]
+ add r0, r2, r1
+ strb r0, [r4, #0x6]
+ ldrb r0, [r4, #0x1]
+ add r0, r0, #0x1
+ strb r0, [r4, #0x1]
+_0205C296:
+ mov r0, #0x5
+ ldrsb r0, [r4, r0]
+ add r2, sp, #0x0
+ lsl r3, r0, #0x4
+ mov r0, #0x6
+ ldrsb r0, [r4, r0]
+ lsl r1, r0, #0x2
+ add r0, r2, r3
+ ldr r0, [r1, r0]
+ mov r1, #0x0
+ bl FUN_0205AFDC
+ add r1, r0, #0x0
+ add r0, r7, #0x0
+ bl FUN_0205AE0C
+ ldrb r0, [r4, #0x1]
+ add r0, r0, #0x1
+ strb r0, [r4, #0x1]
+_0205C2BC:
+ add r0, r7, #0x0
+ bl FUN_0205B080
+ cmp r0, #0x0
+ bne _0205C2CC
+ add sp, #0x20
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0205C2CC:
+ ldrb r0, [r4, #0x1]
+ add r0, r0, #0x1
+ strb r0, [r4, #0x1]
+_0205C2D2:
+ mov r0, #0x8
+ ldrsb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, #0x8]
+ ldrsb r0, [r4, r0]
+ cmp r0, #0x8
+ bge _0205C2E6
+ add sp, #0x20
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0205C2E6:
+ mov r0, #0x0
+ strb r0, [r4, #0x8]
+ mov r0, #0x7
+ ldrsb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, #0x7]
+ ldrsb r0, [r4, r0]
+ cmp r0, #0x4
+ bge _0205C314
+ mov r0, #0x6
+ ldrsb r0, [r4, r0]
+ add sp, #0x20
+ add r0, r0, #0x1
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x1e
+ sub r1, r1, r2
+ mov r0, #0x1e
+ ror r1, r0
+ add r0, r2, r1
+ strb r0, [r4, #0x6]
+ mov r0, #0x1
+ strb r0, [r4, #0x1]
+ pop {r3-r7, pc}
+_0205C314:
+ mov r1, #0x4
+ ldrsb r1, [r4, r1]
+ add r0, r7, #0x0
+ bl FUN_020584AC
+ ldrb r0, [r4, #0x1]
+ add r0, r0, #0x1
+ strb r0, [r4, #0x1]
+ mov r0, #0x0
+ strb r0, [r4, #0x7]
+ strb r0, [r4, #0x0]
+_0205C32A:
+ mov r0, #0x0
+ add sp, #0x20
+ pop {r3-r7, pc}
+ .balign 4
+_0205C330: .word 0x020F70F8
+
+ thumb_func_start FUN_0205C334
+FUN_0205C334: ; 0x0205C334
+ cmp r0, #0x64
+ bne _0205C33C
+ mov r0, #0x1
+ bx lr
+_0205C33C:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_0205C340
+FUN_0205C340: ; 0x0205C340
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_020585B0
+ ldrh r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _0205C352
+ ldr r0, _0205C370 ; =0x0000FFFF
+ pop {r4, pc}
+_0205C352:
+ add r0, r4, #0x0
+ bl FUN_02058934
+ cmp r0, #0x1
+ bne _0205C36C
+ add r0, r4, #0x0
+ bl FUN_02058628
+ ldr r1, [r0, #0x4]
+ cmp r1, #0x0
+ beq _0205C36C
+ ldr r0, [r0, #0x0]
+ pop {r4, pc}
+_0205C36C:
+ ldr r0, _0205C370 ; =0x0000FFFF
+ pop {r4, pc}
+ .balign 4
+_0205C370: .word 0x0000FFFF
+
+ thumb_func_start FUN_0205C374
+FUN_0205C374: ; 0x0205C374
+ push {r3, lr}
+ bl FUN_020585B0
+ mov r1, #0x1
+ strh r1, [r0, #0x2]
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205C380
+FUN_0205C380: ; 0x0205C380
+ push {r3, lr}
+ mov r1, #0x4
+ bl FUN_0205858C
+ mov r1, #0x0
+ strh r1, [r0, #0x0]
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205C390
+FUN_0205C390: ; 0x0205C390
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_020585B0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058738
+ add r1, r5, #0x0
+ bl FUN_0204B5FC
+ strh r0, [r4, #0x0]
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205C3AC
+FUN_0205C3AC: ; 0x0205C3AC
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0205C3B0
+FUN_0205C3B0: ; 0x0205C3B0
+ push {r4, lr}
+ mov r1, #0x18
+ add r4, r0, #0x0
+ bl FUN_02058604
+ ldr r1, _0205C3CC ; =0x0000FFFF
+ str r1, [r0, #0x0]
+ mov r1, #0x0
+ str r1, [r0, #0x4]
+ add r0, r4, #0x0
+ bl FUN_0224A310
+ pop {r4, pc}
+ nop
+_0205C3CC: .word 0x0000FFFF
+
+ thumb_func_start FUN_0205C3D0
+FUN_0205C3D0: ; 0x0205C3D0
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ bl FUN_020585B0
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058628
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058738
+ add r1, r5, #0x0
+ bl FUN_0204B5FC
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_021F2E28
+ cmp r0, #0x1
+ beq _0205C488
+ ldr r0, [r4, #0x4]
+ cmp r6, r0
+ beq _0205C454
+ add r1, r4, #0x0
+ ldr r2, [r4, #0x0]
+ add r0, r5, #0x0
+ add r1, #0x8
+ bl FUN_021F2094
+ add r0, r5, #0x0
+ bl FUN_02058738
+ add r1, r5, #0x0
+ bl FUN_0204B61C
+ add r1, r6, #0x0
+ bl FUN_0205C53C
+ ldr r1, _0205C48C ; =0x0000FFFF
+ str r0, [r4, #0x0]
+ cmp r0, r1
+ ldr r0, [r4, #0x4]
+ beq _0205C440
+ cmp r0, #0x0
+ beq _0205C432
+ add r0, r5, #0x0
+ bl FUN_0224A528
+_0205C432:
+ add r1, r4, #0x0
+ ldr r2, [r4, #0x0]
+ add r0, r5, #0x0
+ add r1, #0x8
+ bl FUN_021F1F78
+ b _0205C450
+_0205C440:
+ cmp r0, #0x0
+ beq _0205C450
+ ldrh r0, [r7, #0x2]
+ cmp r0, #0x0
+ bne _0205C450
+ add r0, r5, #0x0
+ bl FUN_0224A528
+_0205C450:
+ mov r0, #0x0
+ strh r0, [r7, #0x2]
+_0205C454:
+ add r0, r5, #0x0
+ str r6, [r4, #0x4]
+ bl FUN_021F2E28
+ cmp r0, #0x1
+ beq _0205C488
+ ldr r1, [r4, #0x8]
+ cmp r1, #0x0
+ beq _0205C488
+ add r0, r5, #0x0
+ bl FUN_021F2F48
+ add r0, r5, #0x0
+ bl FUN_021F1DFC
+ cmp r0, #0x0
+ bne _0205C480
+ mov r1, #0x1
+ ldr r0, [r4, #0x8]
+ lsl r1, r1, #0xc
+ bl FUN_0201F854
+_0205C480:
+ ldr r1, [r4, #0x8]
+ add r0, r5, #0x0
+ bl FUN_021F2F6C
+_0205C488:
+ pop {r3-r7, pc}
+ nop
+_0205C48C: .word 0x0000FFFF
+
+ thumb_func_start FUN_0205C490
+FUN_0205C490: ; 0x0205C490
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02058628
+ add r2, r0, #0x0
+ add r1, r2, #0x0
+ ldr r2, [r2, #0x0]
+ add r0, r4, #0x0
+ add r1, #0x8
+ bl FUN_021F2094
+ pop {r4, pc}
+
+ thumb_func_start FUN_0205C4A8
+FUN_0205C4A8: ; 0x0205C4A8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_02058628
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x8]
+ cmp r0, #0x0
+ beq _0205C4C0
+ add r1, r4, #0x0
+ add r1, #0xc
+ bl FUN_021F20D8
+_0205C4C0:
+ add r1, r4, #0x0
+ ldr r2, [r4, #0x0]
+ add r0, r5, #0x0
+ add r1, #0x8
+ bl FUN_021F2094
+ mov r1, #0x2
+ add r0, r5, #0x0
+ lsl r1, r1, #0x14
+ bl FUN_02058410
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0205C4D8
+FUN_0205C4D8: ; 0x0205C4D8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_02058628
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_021F2E28
+ cmp r0, #0x1
+ beq _0205C536
+ ldr r0, [r4, #0x8]
+ cmp r0, #0x0
+ bne _0205C516
+ ldr r2, [r4, #0x0]
+ ldr r0, _0205C538 ; =0x0000FFFF
+ cmp r2, r0
+ beq _0205C506
+ add r1, r4, #0x0
+ add r0, r5, #0x0
+ add r1, #0x8
+ bl FUN_021F1F78
+ b _0205C510
+_0205C506:
+ mov r1, #0x2
+ add r0, r5, #0x0
+ lsl r1, r1, #0x14
+ bl FUN_02058418
+_0205C510:
+ add r0, r5, #0x0
+ bl FUN_0224A310
+_0205C516:
+ ldr r0, [r4, #0x8]
+ cmp r0, #0x0
+ beq _0205C536
+ add r1, r4, #0x0
+ add r1, #0xc
+ bl FUN_021F20F8
+ ldr r1, [r4, #0x8]
+ add r0, r5, #0x0
+ bl FUN_021F2F48
+ mov r1, #0x2
+ add r0, r5, #0x0
+ lsl r1, r1, #0x14
+ bl FUN_02058418
+_0205C536:
+ pop {r3-r5, pc}
+ .balign 4
+_0205C538: .word 0x0000FFFF
+
+ thumb_func_start FUN_0205C53C
+FUN_0205C53C: ; 0x0205C53C
+ push {r3, lr}
+ cmp r1, #0x0
+ beq _0205C548
+ cmp r1, #0x1
+ beq _0205C54C
+ b _0205C550
+_0205C548:
+ ldr r0, _0205C590 ; =0x0000FFFF
+ pop {r3, pc}
+_0205C54C:
+ ldr r0, _0205C590 ; =0x0000FFFF
+ pop {r3, pc}
+_0205C550:
+ sub r2, r0, #0x1
+ mov r0, #0xc
+ ldr r3, _0205C594 ; =0x021F9194
+ mul r0, r2
+ add r2, r3, r0
+ cmp r1, #0x5
+ bhi _0205C588
+ add r0, r1, r1
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0205C56A: ; jump table (using 16-bit offset)
+ .short _0205C588 - _0205C56A - 2; case 0
+ .short _0205C588 - _0205C56A - 2; case 1
+ .short _0205C576 - _0205C56A - 2; case 2
+ .short _0205C57C - _0205C56A - 2; case 3
+ .short _0205C580 - _0205C56A - 2; case 4
+ .short _0205C584 - _0205C56A - 2; case 5
+_0205C576:
+ mov r0, #0x1
+ lsl r0, r0, #0xc
+ pop {r3, pc}
+_0205C57C:
+ ldr r0, [r2, #0x0]
+ pop {r3, pc}
+_0205C580:
+ ldr r0, [r2, #0x4]
+ pop {r3, pc}
+_0205C584:
+ ldr r0, [r2, #0x8]
+ pop {r3, pc}
+_0205C588:
+ bl ErrorHandling
+ ldr r0, _0205C590 ; =0x0000FFFF
+ pop {r3, pc}
+ .balign 4
+_0205C590: .word 0x0000FFFF
+_0205C594: .word 0x021F9194
+
+ thumb_func_start FUN_0205C598
+FUN_0205C598: ; 0x0205C598
+ push {r3-r7, lr}
+ sub sp, #0x58
+ add r5, r0, #0x0
+ ldr r7, [r5, #0x38]
+ add r4, r1, #0x0
+ ldr r6, [r5, #0x34]
+ add r1, sp, #0x40
+ str r1, [sp, #0x0]
+ add r1, r6, #0x0
+ add r2, r7, #0x0
+ mov r3, #0x0
+ bl FUN_0205C6BC
+ cmp r0, #0x0
+ bne _0205C5BC
+ add sp, #0x58
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0205C5BC:
+ ldr r0, [sp, #0x50]
+ cmp r0, #0x0
+ bne _0205C642
+ ldr r1, _0205C6B8 ; =0x00000F0A
+ ldr r2, [sp, #0x54]
+ add r0, r5, #0x0
+ bl FUN_02038C78
+ cmp r4, #0x0
+ beq _0205C5E4
+ add r0, sp, #0x28
+ str r0, [sp, #0x0]
+ ldr r3, [sp, #0x54]
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r7, #0x0
+ bl FUN_0205C6BC
+ cmp r0, #0x0
+ bne _0205C604
+_0205C5E4:
+ ldr r0, [sp, #0x48]
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x4c]
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ str r0, [sp, #0x8]
+ str r0, [sp, #0xc]
+ ldr r1, [sp, #0x54]
+ ldr r2, [sp, #0x40]
+ ldr r3, [sp, #0x44]
+ add r0, r5, #0x0
+ bl FUN_02038CA8
+ add sp, #0x58
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0205C604:
+ ldr r0, [sp, #0x48]
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x4c]
+ str r0, [sp, #0x4]
+ mov r0, #0x2
+ str r0, [sp, #0x8]
+ mov r0, #0x0
+ str r0, [sp, #0xc]
+ ldr r1, [sp, #0x54]
+ ldr r2, [sp, #0x40]
+ ldr r3, [sp, #0x44]
+ add r0, r5, #0x0
+ bl FUN_02038CA8
+ ldr r0, [sp, #0x30]
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x34]
+ str r0, [sp, #0x4]
+ mov r0, #0x2
+ str r0, [sp, #0x8]
+ mov r0, #0x1
+ str r0, [sp, #0xc]
+ ldr r1, [sp, #0x3c]
+ ldr r2, [sp, #0x28]
+ ldr r3, [sp, #0x2c]
+ add r0, r5, #0x0
+ bl FUN_02038CA8
+ add sp, #0x58
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0205C642:
+ cmp r0, #0x1
+ bne _0205C6AE
+ cmp r4, #0x0
+ bne _0205C650
+ add sp, #0x58
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0205C650:
+ ldr r2, [sp, #0x54]
+ ldr r3, [sp, #0x4c]
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_0205C9F0
+ add r1, r0, #0x0
+ ldr r2, [sp, #0x40]
+ ldr r3, [sp, #0x44]
+ add r0, sp, #0x10
+ bl FUN_0205C73C
+ ldr r1, _0205C6B8 ; =0x00000F0A
+ ldr r2, [sp, #0x54]
+ add r0, r5, #0x0
+ bl FUN_02038C78
+ ldr r0, [sp, #0x48]
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x4c]
+ str r0, [sp, #0x4]
+ mov r0, #0x1
+ str r0, [sp, #0x8]
+ mov r0, #0x0
+ str r0, [sp, #0xc]
+ ldr r1, [sp, #0x54]
+ ldr r2, [sp, #0x40]
+ ldr r3, [sp, #0x44]
+ add r0, r5, #0x0
+ bl FUN_02038CA8
+ ldr r0, [sp, #0x18]
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x1c]
+ str r0, [sp, #0x4]
+ mov r0, #0x1
+ str r0, [sp, #0x8]
+ str r0, [sp, #0xc]
+ ldr r1, [sp, #0x24]
+ ldr r2, [sp, #0x10]
+ ldr r3, [sp, #0x14]
+ add r0, r5, #0x0
+ bl FUN_02038CA8
+ add sp, #0x58
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0205C6AE:
+ bl ErrorHandling
+ mov r0, #0x0
+ add sp, #0x58
+ pop {r3-r7, pc}
+ .balign 4
+_0205C6B8: .word 0x00000F0A
+
+ thumb_func_start FUN_0205C6BC
+FUN_0205C6BC: ; 0x0205C6BC
+ push {r3-r7, lr}
+ sub sp, #0x10
+ add r6, r0, #0x0
+ mov r0, #0x0
+ add r5, r1, #0x0
+ add r7, r2, #0x0
+ add r4, r3, #0x0
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ add r1, sp, #0x4
+ add r2, sp, #0xc
+ mov r3, #0x1
+ bl FUN_020580F4
+ cmp r0, #0x0
+ beq _0205C734
+_0205C6DE:
+ cmp r4, #0x0
+ beq _0205C6E8
+ ldr r0, [sp, #0x4]
+ cmp r4, r0
+ beq _0205C724
+_0205C6E8:
+ ldr r0, [sp, #0x4]
+ add r1, r7, #0x0
+ add r2, sp, #0x8
+ bl FUN_0205C794
+ mov r1, #0x0
+ mvn r1, r1
+ str r0, [sp, #0x0]
+ cmp r0, r1
+ beq _0205C724
+ ldr r0, [sp, #0x4]
+ bl FUN_0205C9D8
+ add r1, r0, #0x0
+ lsl r1, r1, #0x10
+ add r0, r6, #0x0
+ lsr r1, r1, #0x10
+ bl FUN_02039640
+ cmp r0, #0x0
+ bne _0205C724
+ ldr r0, [sp, #0x28]
+ ldr r1, [sp, #0x4]
+ ldr r2, [sp, #0x0]
+ ldr r3, [sp, #0x8]
+ bl FUN_0205C73C
+ add sp, #0x10
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0205C724:
+ add r0, r5, #0x0
+ add r1, sp, #0x4
+ add r2, sp, #0xc
+ mov r3, #0x1
+ bl FUN_020580F4
+ cmp r0, #0x0
+ bne _0205C6DE
+_0205C734:
+ mov r0, #0x0
+ add sp, #0x10
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205C73C
+FUN_0205C73C: ; 0x0205C73C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ str r2, [r5, #0x0]
+ str r3, [r5, #0x4]
+ add r0, r4, #0x0
+ bl FUN_02058498
+ str r0, [r5, #0x8]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_020395F4
+ str r0, [r5, #0xc]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_0203962C
+ str r0, [r5, #0x10]
+ str r4, [r5, #0x14]
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205C768
+FUN_0205C768: ; 0x0205C768
+ push {r3, lr}
+ bl FUN_02058488
+ cmp r0, #0x8
+ bhi _0205C792
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0205C77E: ; jump table (using 16-bit offset)
+ .short _0205C792 - _0205C77E - 2; case 0
+ .short _0205C792 - _0205C77E - 2; case 1
+ .short _0205C792 - _0205C77E - 2; case 2
+ .short _0205C792 - _0205C77E - 2; case 3
+ .short _0205C790 - _0205C77E - 2; case 4
+ .short _0205C790 - _0205C77E - 2; case 5
+ .short _0205C790 - _0205C77E - 2; case 6
+ .short _0205C790 - _0205C77E - 2; case 7
+ .short _0205C790 - _0205C77E - 2; case 8
+_0205C790:
+ mov r0, #0x1
+_0205C792:
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205C794
+FUN_0205C794: ; 0x0205C794
+ push {r4-r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ str r2, [sp, #0x8]
+ bl FUN_0205C768
+ cmp r0, #0x1
+ bne _0205C802
+ add r0, r4, #0x0
+ bl FUN_02055320
+ add r7, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0205532C
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_020584C4
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_02058510
+ add r2, r0, #0x0
+ str r6, [sp, #0x0]
+ mov r0, #0x0
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r3, r7, #0x0
+ bl FUN_0205C86C
+ add r6, r0, #0x0
+ mov r0, #0x0
+ mvn r0, r0
+ cmp r6, r0
+ beq _0205C7FA
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_0205C938
+ cmp r0, #0x0
+ bne _0205C7FA
+ ldr r0, [sp, #0x8]
+ add sp, #0x14
+ str r4, [r0, #0x0]
+ add r0, r6, #0x0
+ pop {r4-r7, pc}
+_0205C7FA:
+ mov r0, #0x0
+ add sp, #0x14
+ mvn r0, r0
+ pop {r4-r7, pc}
+_0205C802:
+ cmp r0, #0x2
+ bne _0205C864
+ add r0, r4, #0x0
+ bl FUN_02055320
+ str r0, [sp, #0x10]
+ add r0, r4, #0x0
+ bl FUN_0205532C
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_02058510
+ str r0, [sp, #0xc]
+ mov r4, #0x0
+_0205C822:
+ str r7, [sp, #0x0]
+ mov r0, #0x0
+ str r0, [sp, #0x4]
+ ldr r2, [sp, #0xc]
+ ldr r3, [sp, #0x10]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0205C86C
+ add r6, r0, #0x0
+ mov r0, #0x0
+ mvn r0, r0
+ cmp r6, r0
+ beq _0205C856
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_0205C938
+ cmp r0, #0x0
+ bne _0205C856
+ ldr r0, [sp, #0x8]
+ add sp, #0x14
+ str r4, [r0, #0x0]
+ add r0, r6, #0x0
+ pop {r4-r7, pc}
+_0205C856:
+ add r4, r4, #0x1
+ cmp r4, #0x4
+ blt _0205C822
+ mov r0, #0x0
+ add sp, #0x14
+ mvn r0, r0
+ pop {r4-r7, pc}
+_0205C864:
+ mov r0, #0x0
+ mvn r0, r0
+ add sp, #0x14
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_0205C86C
+FUN_0205C86C: ; 0x0205C86C
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ ldr r1, [sp, #0x14]
+ lsl r5, r4, #0x2
+ ldr r4, _0205C884 ; =0x020F71A8
+ str r1, [sp, #0x0]
+ add r1, r2, #0x0
+ add r2, r3, #0x0
+ ldr r3, [sp, #0x10]
+ ldr r4, [r4, r5]
+ blx r4
+ pop {r3-r5, pc}
+ .balign 4
+_0205C884: .word 0x020F71A8
+
+ thumb_func_start FUN_0205C888
+FUN_0205C888: ; 0x0205C888
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ add r5, r1, #0x0
+ add r6, r2, #0x0
+ add r4, r3, #0x0
+ bl FUN_02058B2C
+ cmp r0, r6
+ bne _0205C8AE
+ add r0, r7, #0x0
+ bl FUN_02058B4C
+ cmp r4, r0
+ bge _0205C8AE
+ sub r1, r0, r5
+ cmp r4, r1
+ blt _0205C8AE
+ sub r0, r0, r4
+ pop {r3-r7, pc}
+_0205C8AE:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0205C8B4
+FUN_0205C8B4: ; 0x0205C8B4
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ add r5, r1, #0x0
+ add r6, r2, #0x0
+ add r4, r3, #0x0
+ bl FUN_02058B2C
+ cmp r0, r6
+ bne _0205C8DA
+ add r0, r7, #0x0
+ bl FUN_02058B4C
+ cmp r4, r0
+ ble _0205C8DA
+ add r1, r0, r5
+ cmp r4, r1
+ bgt _0205C8DA
+ sub r0, r4, r0
+ pop {r3-r7, pc}
+_0205C8DA:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0205C8E0
+FUN_0205C8E0: ; 0x0205C8E0
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ add r5, r1, #0x0
+ add r4, r2, #0x0
+ add r6, r3, #0x0
+ bl FUN_02058B4C
+ cmp r0, r6
+ bne _0205C906
+ add r0, r7, #0x0
+ bl FUN_02058B2C
+ cmp r4, r0
+ bge _0205C906
+ sub r1, r0, r5
+ cmp r4, r1
+ blt _0205C906
+ sub r0, r0, r4
+ pop {r3-r7, pc}
+_0205C906:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0205C90C
+FUN_0205C90C: ; 0x0205C90C
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ add r5, r1, #0x0
+ add r4, r2, #0x0
+ add r6, r3, #0x0
+ bl FUN_02058B4C
+ cmp r0, r6
+ bne _0205C932
+ add r0, r7, #0x0
+ bl FUN_02058B2C
+ cmp r4, r0
+ ble _0205C932
+ add r1, r0, r5
+ cmp r4, r1
+ bgt _0205C932
+ sub r0, r4, r0
+ pop {r3-r7, pc}
+_0205C932:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0205C938
+FUN_0205C938: ; 0x0205C938
+ push {r3-r7, lr}
+ sub sp, #0x18
+ add r5, r1, #0x0
+ str r0, [sp, #0x4]
+ str r2, [sp, #0x8]
+ cmp r2, #0x0
+ bne _0205C94C
+ add sp, #0x18
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0205C94C:
+ bl FUN_02058B2C
+ add r4, r0, #0x0
+ ldr r0, [sp, #0x4]
+ bl FUN_02058B4C
+ add r7, r0, #0x0
+ ldr r0, [sp, #0x4]
+ bl FUN_02058B3C
+ str r0, [sp, #0xc]
+ add r0, r5, #0x0
+ bl FUN_02059BF4
+ add r6, r4, r0
+ add r0, r5, #0x0
+ bl FUN_02059C00
+ add r4, r7, r0
+ ldr r0, [sp, #0x8]
+ mov r7, #0x0
+ sub r0, r0, #0x1
+ str r0, [sp, #0x10]
+ cmp r0, #0x0
+ ble _0205C9B4
+ mov r0, #0x1
+ str r0, [sp, #0x14]
+_0205C982:
+ ldr r0, [sp, #0x4]
+ ldr r2, [sp, #0xc]
+ add r1, r6, #0x0
+ add r3, r4, #0x0
+ str r5, [sp, #0x0]
+ bl FUN_020598F0
+ ldr r1, [sp, #0x14]
+ bic r0, r1
+ beq _0205C99C
+ add sp, #0x18
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0205C99C:
+ add r0, r5, #0x0
+ bl FUN_02059BF4
+ add r6, r6, r0
+ add r0, r5, #0x0
+ bl FUN_02059C00
+ add r4, r4, r0
+ ldr r0, [sp, #0x10]
+ add r7, r7, #0x1
+ cmp r7, r0
+ blt _0205C982
+_0205C9B4:
+ ldr r0, [sp, #0x4]
+ ldr r2, [sp, #0xc]
+ add r1, r6, #0x0
+ add r3, r4, #0x0
+ str r5, [sp, #0x0]
+ bl FUN_020598F0
+ mov r1, #0x1
+ bic r0, r1
+ cmp r0, #0x4
+ bne _0205C9D0
+ add sp, #0x18
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0205C9D0:
+ mov r0, #0x1
+ add sp, #0x18
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205C9D8
+FUN_0205C9D8: ; 0x0205C9D8
+ push {r3, lr}
+ bl FUN_02058498
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_020395F4
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205C9E8
+FUN_0205C9E8: ; 0x0205C9E8
+ ldr r3, _0205C9EC ; =FUN_0205C9D8
+ bx r3
+ .balign 4
+_0205C9EC: .word FUN_0205C9D8
+
+ thumb_func_start FUN_0205C9F0
+FUN_0205C9F0: ; 0x0205C9F0
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r1, #0x0
+ mov r0, #0x0
+ add r4, r2, #0x0
+ add r6, r3, #0x0
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ add r1, sp, #0x0
+ add r2, sp, #0x4
+ mov r3, #0x1
+ bl FUN_020580F4
+ cmp r0, #0x0
+ beq _0205CA40
+ add r7, sp, #0x0
+_0205CA10:
+ ldr r0, [sp, #0x0]
+ cmp r0, r4
+ beq _0205CA30
+ bl FUN_0205C768
+ sub r0, r0, #0x1
+ cmp r0, #0x1
+ bhi _0205CA30
+ ldr r0, [sp, #0x0]
+ bl FUN_0205C9D8
+ cmp r6, r0
+ bne _0205CA30
+ ldr r0, [sp, #0x0]
+ add sp, #0x8
+ pop {r3-r7, pc}
+_0205CA30:
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ add r2, sp, #0x4
+ mov r3, #0x1
+ bl FUN_020580F4
+ cmp r0, #0x0
+ bne _0205CA10
+_0205CA40:
+ bl ErrorHandling
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205CA4C
+FUN_0205CA4C: ; 0x0205CA4C
+ push {r3-r4, lr}
+ sub sp, #0xc
+ ldr r4, [sp, #0x18]
+ str r4, [sp, #0x0]
+ ldr r4, [sp, #0x1c]
+ str r4, [sp, #0x4]
+ ldr r4, [sp, #0x20]
+ str r4, [sp, #0x8]
+ bl FUN_0205CA80
+ add sp, #0xc
+ pop {r3-r4, pc}
+
+ thumb_func_start FUN_0205CA64
+FUN_0205CA64: ; 0x0205CA64
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _0205CA6E
+ bl ErrorHandling
+_0205CA6E:
+ add r0, r4, #0x0
+ bl FUN_0205CAD4
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205CA78
+FUN_0205CA78: ; 0x0205CA78
+ ldr r3, _0205CA7C ; =FUN_0205CAE0
+ bx r3
+ .balign 4
+_0205CA7C: .word FUN_0205CAE0
+
+ thumb_func_start FUN_0205CA80
+FUN_0205CA80: ; 0x0205CA80
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ mov r0, #0x4
+ mov r1, #0x2c
+ add r7, r2, #0x0
+ str r3, [sp, #0x0]
+ bl FUN_020169D8
+ add r4, r0, #0x0
+ bne _0205CA9A
+ bl ErrorHandling
+_0205CA9A:
+ add r0, r4, #0x0
+ mov r1, #0x0
+ mov r2, #0x2c
+ blx FUN_020DF4A4
+ ldr r0, [sp, #0x0]
+ str r7, [r4, #0x8]
+ str r0, [r4, #0xc]
+ ldr r0, [sp, #0x18]
+ add r1, r4, #0x0
+ str r0, [r4, #0x10]
+ ldr r0, [sp, #0x1c]
+ mov r2, #0xff
+ str r0, [r4, #0x14]
+ ldr r0, [sp, #0x20]
+ str r0, [r4, #0x18]
+ str r5, [r4, #0x24]
+ ldr r0, _0205CAD0 ; =FUN_0205CAF8
+ str r6, [r4, #0x28]
+ bl FUN_0200CA44
+ add r4, r0, #0x0
+ bne _0205CACC
+ bl ErrorHandling
+_0205CACC:
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+_0205CAD0: .word FUN_0205CAF8
+
+ thumb_func_start FUN_0205CAD4
+FUN_0205CAD4: ; 0x0205CAD4
+ push {r3, lr}
+ bl FUN_0201B6C8
+ ldr r0, [r0, #0x4]
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205CAE0
+FUN_0205CAE0: ; 0x0205CAE0
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_0201B6C8
+ add r1, r0, #0x0
+ mov r0, #0x4
+ bl FUN_02016A8C
+ add r0, r4, #0x0
+ bl FUN_0200CAB4
+ pop {r4, pc}
+
+ thumb_func_start FUN_0205CAF8
+FUN_0205CAF8: ; 0x0205CAF8
+ push {r3-r5, lr}
+ ldr r4, _0205CB10 ; =0x020F71B8
+ add r5, r1, #0x0
+_0205CAFE:
+ ldr r1, [r5, #0x0]
+ add r0, r5, #0x0
+ lsl r1, r1, #0x2
+ ldr r1, [r4, r1]
+ blx r1
+ cmp r0, #0x1
+ beq _0205CAFE
+ pop {r3-r5, pc}
+ nop
+_0205CB10: .word 0x020F71B8
+
+ thumb_func_start FUN_0205CB14
+FUN_0205CB14: ; 0x0205CB14
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r4, [r5, #0x24]
+ add r0, r4, #0x0
+ bl FUN_02058854
+ cmp r0, #0x1
+ bne _0205CB2A
+ add r0, r4, #0x0
+ bl FUN_02058914
+_0205CB2A:
+ mov r0, #0x1
+ str r0, [r5, #0x0]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0205CB30
+FUN_0205CB30: ; 0x0205CB30
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ ldr r5, [r4, #0x24]
+ add r0, r5, #0x0
+ bl FUN_02058854
+ cmp r0, #0x1
+ bne _0205CB44
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0205CB44:
+ ldr r0, [r4, #0x24]
+ ldr r1, [r4, #0x8]
+ bl FUN_021F1EC0
+ add r0, r5, #0x0
+ mov r1, #0x40
+ bl FUN_02058410
+ mov r0, #0x2
+ str r0, [r4, #0x0]
+ mov r0, #0x1
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0205CB5C
+FUN_0205CB5C: ; 0x0205CB5C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x28]
+ bl FUN_020553A0
+ bl FUN_0205AE28
+ cmp r0, #0x0
+ bne _0205CB72
+ mov r0, #0x0
+ pop {r4, pc}
+_0205CB72:
+ ldr r0, [r4, #0x24]
+ bl FUN_02058480
+ sub r0, #0x33
+ cmp r0, #0x3
+ bhi _0205CB9A
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0205CB8A: ; jump table (using 16-bit offset)
+ .short _0205CB92 - _0205CB8A - 2; case 0
+ .short _0205CB92 - _0205CB8A - 2; case 1
+ .short _0205CB92 - _0205CB8A - 2; case 2
+ .short _0205CB92 - _0205CB8A - 2; case 3
+_0205CB92:
+ mov r0, #0x7
+ str r0, [r4, #0x0]
+ mov r0, #0x1
+ pop {r4, pc}
+_0205CB9A:
+ mov r0, #0x3
+ str r0, [r4, #0x0]
+ mov r0, #0x1
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205CBA4
+FUN_0205CBA4: ; 0x0205CBA4
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x24]
+ bl FUN_0205AD98
+ cmp r0, #0x0
+ bne _0205CBB6
+ mov r0, #0x0
+ pop {r4, pc}
+_0205CBB6:
+ mov r0, #0x0
+ ldr r1, [r4, #0x8]
+ mvn r0, r0
+ cmp r1, r0
+ bne _0205CBC4
+ bl ErrorHandling
+_0205CBC4:
+ ldr r0, [r4, #0x8]
+ mov r1, #0x0
+ bl FUN_0205AFDC
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x24]
+ bl FUN_0205ADDC
+ mov r0, #0x4
+ str r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r4, pc}
+
+ thumb_func_start FUN_0205CBDC
+FUN_0205CBDC: ; 0x0205CBDC
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x24]
+ bl FUN_0205AE28
+ cmp r0, #0x0
+ bne _0205CBEE
+ mov r0, #0x0
+ pop {r4, pc}
+_0205CBEE:
+ mov r0, #0x5
+ str r0, [r4, #0x0]
+ mov r0, #0x1
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205CBF8
+FUN_0205CBF8: ; 0x0205CBF8
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r1, #0x0
+ ldr r0, [r4, #0x24]
+ add r2, r1, #0x0
+ bl FUN_021E7AC0
+ str r0, [r4, #0x20]
+ mov r0, #0x6
+ str r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r4, pc}
+
+ thumb_func_start FUN_0205CC10
+FUN_0205CC10: ; 0x0205CC10
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x20]
+ bl FUN_021E799C
+ cmp r0, #0x1
+ bne _0205CC28
+ ldr r0, [r4, #0x20]
+ bl FUN_02064520
+ mov r0, #0x9
+ str r0, [r4, #0x0]
+_0205CC28:
+ mov r0, #0x0
+ pop {r4, pc}
+
+ thumb_func_start FUN_0205CC2C
+FUN_0205CC2C: ; 0x0205CC2C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x24]
+ mov r1, #0x65
+ bl FUN_0205ADDC
+ mov r0, #0x8
+ str r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r4, pc}
+
+ thumb_func_start FUN_0205CC40
+FUN_0205CC40: ; 0x0205CC40
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x24]
+ bl FUN_0205AE28
+ cmp r0, #0x1
+ bne _0205CC52
+ mov r0, #0x9
+ str r0, [r4, #0x0]
+_0205CC52:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205CC58
+FUN_0205CC58: ; 0x0205CC58
+ ldr r1, [r0, #0x1c]
+ add r1, r1, #0x1
+ str r1, [r0, #0x1c]
+ cmp r1, #0x1e
+ blt _0205CC6A
+ mov r1, #0x0
+ str r1, [r0, #0x1c]
+ mov r1, #0xa
+ str r1, [r0, #0x0]
+_0205CC6A:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0205CC70
+FUN_0205CC70: ; 0x0205CC70
+ ldr r1, [r0, #0xc]
+ cmp r1, #0x1
+ bgt _0205CC7E
+ mov r1, #0xd
+ str r1, [r0, #0x0]
+ mov r0, #0x1
+ bx lr
+_0205CC7E:
+ mov r1, #0xb
+ str r1, [r0, #0x0]
+ mov r0, #0x1
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0205CC88
+FUN_0205CC88: ; 0x0205CC88
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x24]
+ bl FUN_0205AD98
+ cmp r0, #0x1
+ bne _0205CCAA
+ ldr r0, [r4, #0x8]
+ mov r1, #0xc
+ bl FUN_0205AFDC
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x24]
+ bl FUN_0205ADDC
+ mov r0, #0xc
+ str r0, [r4, #0x0]
+_0205CCAA:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205CCB0
+FUN_0205CCB0: ; 0x0205CCB0
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x24]
+ bl FUN_0205AE28
+ cmp r0, #0x0
+ bne _0205CCC2
+ mov r0, #0x0
+ pop {r4, pc}
+_0205CCC2:
+ ldr r0, [r4, #0xc]
+ sub r0, r0, #0x1
+ str r0, [r4, #0xc]
+ mov r0, #0xa
+ str r0, [r4, #0x0]
+ mov r0, #0x1
+ pop {r4, pc}
+
+ thumb_func_start FUN_0205CCD0
+FUN_0205CCD0: ; 0x0205CCD0
+ ldr r1, [r0, #0x1c]
+ add r1, r1, #0x1
+ str r1, [r0, #0x1c]
+ cmp r1, #0x8
+ bge _0205CCDE
+ mov r0, #0x0
+ bx lr
+_0205CCDE:
+ mov r1, #0x0
+ str r1, [r0, #0x1c]
+ mov r1, #0xe
+ str r1, [r0, #0x0]
+ mov r0, #0x1
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0205CCEC
+FUN_0205CCEC: ; 0x0205CCEC
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x28]
+ bl FUN_020553A0
+ add r4, r0, #0x0
+ bl FUN_02058B2C
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02058B4C
+ add r7, r0, #0x0
+ ldr r0, [r5, #0x24]
+ bl FUN_02058B2C
+ str r0, [sp, #0x0]
+ ldr r0, [r5, #0x24]
+ bl FUN_02058B4C
+ add r3, r0, #0x0
+ ldr r2, [sp, #0x0]
+ add r0, r6, #0x0
+ add r1, r7, #0x0
+ bl FUN_02059E80
+ add r6, r0, #0x0
+ ldr r0, [r5, #0x28]
+ bl FUN_020552F8
+ cmp r6, r0
+ beq _0205CD60
+ ldr r0, [r5, #0x18]
+ cmp r0, #0x0
+ beq _0205CD38
+ ldr r0, [r5, #0x14]
+ cmp r0, #0x2
+ bne _0205CD60
+_0205CD38:
+ add r0, r4, #0x0
+ bl FUN_0205AD98
+ cmp r0, #0x1
+ bne _0205CD64
+ add r0, r4, #0x0
+ mov r1, #0x80
+ bl FUN_02058418
+ add r0, r6, #0x0
+ mov r1, #0x0
+ bl FUN_0205AFDC
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0205ADDC
+ mov r0, #0xf
+ str r0, [r5, #0x0]
+ b _0205CD64
+_0205CD60:
+ mov r0, #0x10
+ str r0, [r5, #0x0]
+_0205CD64:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0205CD68
+FUN_0205CD68: ; 0x0205CD68
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x28]
+ bl FUN_020553A0
+ add r5, r0, #0x0
+ bl FUN_0205AE28
+ cmp r0, #0x0
+ bne _0205CD80
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0205CD80:
+ add r0, r5, #0x0
+ bl FUN_0205AE50
+ mov r0, #0x10
+ str r0, [r4, #0x0]
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205CD90
+FUN_0205CD90: ; 0x0205CD90
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x24]
+ bl FUN_0205AE50
+ ldr r0, [r4, #0x24]
+ mov r1, #0x0
+ bl FUN_02058E90
+ mov r0, #0x11
+ str r0, [r4, #0x0]
+ mov r0, #0x1
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205CDAC
+FUN_0205CDAC: ; 0x0205CDAC
+ mov r1, #0x1
+ str r1, [r0, #0x4]
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_0205CDB4
+FUN_0205CDB4: ; 0x0205CDB4
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_020377AC
+ bl FUN_02024ED8
+ bl FUN_020254B4
+ add r1, r0, #0x0
+ beq _0205CDD2
+ lsl r2, r1, #0x2
+ ldr r1, _0205CDD4 ; =0x020F7220
+ add r0, r4, #0x0
+ ldr r1, [r1, r2]
+ blx r1
+_0205CDD2:
+ pop {r4, pc}
+ .balign 4
+_0205CDD4: .word 0x020F7220
+
+ thumb_func_start FUN_0205CDD8
+FUN_0205CDD8: ; 0x0205CDD8
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_020377AC
+ bl FUN_02024ED8
+ bl FUN_020254B4
+ cmp r0, #0x0
+ beq _0205CDFA
+ lsl r1, r0, #0x2
+ ldr r0, _0205CDFC ; =0x020F7200
+ ldr r1, [r0, r1]
+ cmp r1, #0x0
+ beq _0205CDFA
+ add r0, r4, #0x0
+ blx r1
+_0205CDFA:
+ pop {r4, pc}
+ .balign 4
+_0205CDFC: .word 0x020F7200
+
+ thumb_func_start FUN_0205CE00
+FUN_0205CE00: ; 0x0205CE00
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r7, r2, #0x0
+ str r3, [sp, #0x4]
+ bl FUN_020377AC
+ bl FUN_02024ED8
+ bl FUN_020254B4
+ cmp r0, #0x0
+ bne _0205CE22
+ add sp, #0x8
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0205CE22:
+ lsl r1, r0, #0x2
+ ldr r0, _0205CE44 ; =0x020F7240
+ ldr r6, [r0, r1]
+ cmp r6, #0x0
+ beq _0205CE3E
+ ldr r0, [sp, #0x20]
+ ldr r3, [sp, #0x4]
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r7, #0x0
+ blx r6
+ add sp, #0x8
+ pop {r3-r7, pc}
+_0205CE3E:
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+_0205CE44: .word 0x020F7240
+
+ thumb_func_start FUN_0205CE48
+FUN_0205CE48: ; 0x0205CE48
+ cmp r0, #0x0
+ bne _0205CE58
+ mov r0, #0xc
+ add r2, r1, #0x0
+ mul r2, r0
+ ldr r0, _0205CE74 ; =0x020F7260
+ ldr r0, [r0, r2]
+ bx lr
+_0205CE58:
+ cmp r0, #0x1
+ bne _0205CE68
+ mov r0, #0xc
+ add r2, r1, #0x0
+ mul r2, r0
+ ldr r0, _0205CE78 ; =0x020F7264
+ ldr r0, [r0, r2]
+ bx lr
+_0205CE68:
+ mov r0, #0xc
+ add r2, r1, #0x0
+ mul r2, r0
+ ldr r0, _0205CE7C ; =0x020F7268
+ ldr r0, [r0, r2]
+ bx lr
+ .balign 4
+_0205CE74: .word 0x020F7260
+_0205CE78: .word 0x020F7264
+_0205CE7C: .word 0x020F7268
+
+ thumb_func_start FUN_0205CE80
+FUN_0205CE80: ; 0x0205CE80
+ push {r3-r7, lr}
+ add r4, r0, #0x0
+ add r5, r1, #0x0
+ str r4, [r5, #0x18]
+ ldr r0, [r4, #0x1c]
+ ldr r0, [r0, #0x0]
+ str r0, [r5, #0x0]
+ ldr r0, [r4, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205ED3C
+ str r0, [r5, #0x4]
+ ldr r0, [r4, #0x38]
+ bl FUN_020553C4
+ str r0, [r5, #0x8]
+ ldr r0, [r4, #0x38]
+ bl FUN_02055320
+ add r6, r0, #0x0
+ ldr r0, [r4, #0x38]
+ bl FUN_0205532C
+ add r7, r0, #0x0
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ add r2, r7, #0x0
+ bl FUN_0204A6E0
+ strh r0, [r5, #0xe]
+ ldr r0, [r4, #0x38]
+ bl FUN_020552F8
+ cmp r0, #0x3
+ bhi _0205CEEA
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0205CED4: ; jump table (using 16-bit offset)
+ .short _0205CEDC - _0205CED4 - 2; case 0
+ .short _0205CEE0 - _0205CED4 - 2; case 1
+ .short _0205CEE8 - _0205CED4 - 2; case 2
+ .short _0205CEE4 - _0205CED4 - 2; case 3
+_0205CEDC:
+ sub r7, r7, #0x1
+ b _0205CEEA
+_0205CEE0:
+ add r7, r7, #0x1
+ b _0205CEEA
+_0205CEE4:
+ add r6, r6, #0x1
+ b _0205CEEA
+_0205CEE8:
+ sub r6, r6, #0x1
+_0205CEEA:
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ add r2, r7, #0x0
+ bl FUN_0204A6E0
+ strh r0, [r5, #0xc]
+ add r0, r4, #0x0
+ add r1, sp, #0x0
+ bl FUN_02037024
+ ldr r1, [sp, #0x0]
+ add r0, r4, #0x0
+ bl FUN_0204B6C4
+ strh r0, [r5, #0x10]
+ ldr r0, [r4, #0x38]
+ str r0, [r5, #0x14]
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205CF10
+FUN_0205CF10: ; 0x0205CF10
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ mov r0, #0x20
+ mov r1, #0xc
+ add r6, r2, #0x0
+ add r7, r3, #0x0
+ bl FUN_02016998
+ str r5, [r0, #0x0]
+ strh r4, [r0, #0x4]
+ strh r6, [r0, #0x6]
+ strh r7, [r0, #0x8]
+ add r1, sp, #0x8
+ ldrh r1, [r1, #0x10]
+ strh r1, [r0, #0xa]
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205CF34
+FUN_0205CF34: ; 0x0205CF34
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ add r6, r2, #0x0
+ bl FUN_02046528
+ add r7, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ add r0, r7, #0x0
+ bl FUN_0204649C
+ mov r0, #0x72
+ mov r2, #0x0
+ ldr r1, _0205CF74 ; =FUN_0205CFA0
+ lsl r0, r0, #0x2
+ str r1, [r4, r0]
+ str r2, [sp, #0x0]
+ ldrh r1, [r5, #0x4]
+ add r0, r6, #0x0
+ add r3, r2, #0x0
+ bl FUN_0205CF10
+ mov r1, #0x7e
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ mov r0, #0xa
+ strh r0, [r4, #0x2a]
+ pop {r3-r7, pc}
+ nop
+_0205CF74: .word FUN_0205CFA0
+
+ thumb_func_start FUN_0205CF78
+FUN_0205CF78: ; 0x0205CF78
+ push {r3-r4, lr}
+ sub sp, #0x4
+ mov r2, #0x0
+ add r4, r0, #0x0
+ str r2, [sp, #0x0]
+ add r0, r1, #0x0
+ ldrh r1, [r4, #0x28]
+ add r3, r2, #0x0
+ bl FUN_0205CF10
+ add r2, r0, #0x0
+ ldr r0, [r4, #0x0]
+ ldr r1, _0205CF9C ; =FUN_0205CFA0
+ bl FUN_020463CC
+ add sp, #0x4
+ pop {r3-r4, pc}
+ nop
+_0205CF9C: .word FUN_0205CFA0
+
+ thumb_func_start FUN_0205CFA0
+FUN_0205CFA0: ; 0x0205CFA0
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, r7, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ add r0, r7, #0x0
+ bl FUN_02046530
+ add r6, r0, #0x0
+ ldr r0, [r6, #0x0]
+ cmp r0, #0x0
+ beq _0205CFC6
+ cmp r0, #0x1
+ beq _0205D016
+ b _0205D020
+_0205CFC6:
+ add r0, r5, #0x0
+ add r1, sp, #0x0
+ bl FUN_02037024
+ ldr r1, [r4, #0x0]
+ ldr r2, [sp, #0x0]
+ lsl r1, r1, #0x10
+ add r0, r7, #0x0
+ lsr r1, r1, #0x10
+ mov r3, #0x0
+ bl FUN_02038CD8
+ add r0, r5, #0x0
+ mov r1, #0x29
+ bl FUN_02039438
+ ldrh r1, [r4, #0x4]
+ strh r1, [r0, #0x0]
+ add r0, r5, #0x0
+ mov r1, #0x2a
+ bl FUN_02039438
+ ldrh r1, [r4, #0x6]
+ strh r1, [r0, #0x0]
+ add r0, r5, #0x0
+ mov r1, #0x2b
+ bl FUN_02039438
+ ldrh r1, [r4, #0x8]
+ strh r1, [r0, #0x0]
+ add r0, r5, #0x0
+ mov r1, #0x2c
+ bl FUN_02039438
+ ldrh r1, [r4, #0xa]
+ strh r1, [r0, #0x0]
+ ldr r0, [r6, #0x0]
+ add r0, r0, #0x1
+ str r0, [r6, #0x0]
+ b _0205D020
+_0205D016:
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0205D020:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0205D024
+FUN_0205D024: ; 0x0205D024
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ ldr r0, [r6, #0x0]
+ bl FUN_02046528
+ add r5, r0, #0x0
+ ldr r0, [r6, #0x0]
+ bl FUN_0204652C
+ add r7, r0, #0x0
+ mov r0, #0xb
+ mov r1, #0x40
+ bl FUN_02016998
+ mov r1, #0x0
+ mov r2, #0x40
+ add r4, r0, #0x0
+ blx FUN_020DF4A4
+ ldr r0, [r5, #0xc]
+ bl FUN_0206BB1C
+ str r0, [r4, #0x0]
+ ldr r0, [r5, #0xc]
+ bl FUN_0206F158
+ str r0, [r4, #0x4]
+ ldr r0, [r5, #0xc]
+ bl FUN_02025838
+ str r0, [r4, #0x8]
+ ldr r0, [r5, #0xc]
+ bl LoadPlayerDataAddress
+ str r0, [r4, #0xc]
+ ldr r0, [r5, #0xc]
+ bl FUN_02022504
+ str r0, [r4, #0x10]
+ mov r0, #0x7a
+ lsl r0, r0, #0x2
+ add r0, r7, r0
+ str r0, [r4, #0x18]
+ add r0, r4, #0x0
+ mov r1, #0x0
+ add r0, #0x21
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0x5
+ add r0, #0x20
+ strb r1, [r0, #0x0]
+ str r5, [r4, #0x1c]
+ ldrh r0, [r6, #0x4]
+ add r2, r4, #0x0
+ strh r0, [r4, #0x24]
+ add r0, r4, #0x0
+ ldrb r1, [r6, #0x6]
+ add r0, #0x22
+ strb r1, [r0, #0x0]
+ ldr r1, _0205D0B4 ; =0x020F96DC
+ add r0, r5, #0x0
+ bl FUN_020373D4
+ mov r0, #0x7e
+ lsl r0, r0, #0x2
+ str r4, [r7, r0]
+ ldr r1, _0205D0B8 ; =FUN_02035E50
+ add r0, r7, #0x0
+ bl FUN_02035D04
+ pop {r3-r7, pc}
+ nop
+_0205D0B4: .word 0x020F96DC
+_0205D0B8: .word FUN_02035E50
+
+ thumb_func_start FUN_0205D0BC
+FUN_0205D0BC: ; 0x0205D0BC
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_02046528
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02037EB8
+ mov r1, #0x7e
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ ldr r1, _0205D0E8 ; =FUN_02036A78
+ add r0, r4, #0x0
+ bl FUN_02035D04
+ pop {r3-r5, pc}
+ nop
+_0205D0E8: .word FUN_02036A78
+
+ thumb_func_start FUN_0205D0EC
+FUN_0205D0EC: ; 0x0205D0EC
+ push {r3, lr}
+ ldr r1, _0205D0F8 ; =FUN_0205D0FC
+ bl FUN_0205DD04
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+_0205D0F8: .word FUN_0205D0FC
+
+ thumb_func_start FUN_0205D0FC
+FUN_0205D0FC: ; 0x0205D0FC
+ ldr r3, _0205D100 ; =FUN_02037EB8
+ bx r3
+ .balign 4
+_0205D100: .word FUN_02037EB8
+
+ thumb_func_start FUN_0205D104
+FUN_0205D104: ; 0x0205D104
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_02046528
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0204649C
+ mov r0, #0x72
+ ldr r1, _0205D140 ; =FUN_02049844
+ lsl r0, r0, #0x2
+ str r1, [r4, r0]
+ add r0, r5, #0x0
+ bl FUN_0204976C
+ mov r1, #0x7e
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ mov r0, #0xa
+ strh r0, [r4, #0x2a]
+ mov r0, #0x0
+ add r5, #0x8c
+ str r0, [r5, #0x0]
+ pop {r3-r5, pc}
+ nop
+_0205D140: .word FUN_02049844
+
+ thumb_func_start FUN_0205D144
+FUN_0205D144: ; 0x0205D144
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_0204976C
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0x34]
+ bl FUN_02058780
+ ldr r0, [r5, #0x0]
+ ldr r1, _0205D16C ; =FUN_02049844
+ add r2, r4, #0x0
+ bl FUN_020463CC
+ ldr r1, [r5, #0x0]
+ mov r0, #0x0
+ add r1, #0x8c
+ str r0, [r1, #0x0]
+ pop {r3-r5, pc}
+ .balign 4
+_0205D16C: .word FUN_02049844
+
+ thumb_func_start FUN_0205D170
+FUN_0205D170: ; 0x0205D170
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_02034824
+ cmp r0, #0x0
+ bne _0205D184
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r5, pc}
+_0205D184:
+ ldr r0, [r5, #0x0]
+ bl FUN_02034908
+ cmp r0, #0x0
+ bne _0205D194
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r5, pc}
+_0205D194:
+ ldr r0, [r5, #0x14]
+ bl FUN_02055738
+ cmp r0, #0x1
+ bne _0205D1A4
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r5, pc}
+_0205D1A4:
+ ldr r0, [r5, #0x18]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205F214
+ cmp r0, #0x1
+ beq _0205D1C4
+ ldr r0, [r5, #0x18]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205F244
+ cmp r0, #0x1
+ bne _0205D1CA
+_0205D1C4:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r5, pc}
+_0205D1CA:
+ ldr r0, [r5, #0x14]
+ bl FUN_020553C4
+ cmp r0, #0x2
+ bne _0205D1DA
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r5, pc}
+_0205D1DA:
+ ldrh r0, [r5, #0xe]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_02054B78
+ cmp r0, #0x1
+ bne _0205D1EE
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r5, pc}
+_0205D1EE:
+ ldr r0, [r5, #0x18]
+ ldr r0, [r0, #0x38]
+ bl FUN_02055320
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ ldr r0, [r5, #0x18]
+ ldr r0, [r0, #0x38]
+ bl FUN_0205532C
+ lsl r0, r0, #0x10
+ lsr r2, r0, #0x10
+ ldr r0, [r5, #0x18]
+ add r1, r4, #0x0
+ bl FUN_02034D44
+ cmp r0, #0x0
+ bne _0205D218
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r5, pc}
+_0205D218:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0205D21C
+FUN_0205D21C: ; 0x0205D21C
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_02046528
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0204649C
+ mov r0, #0x72
+ ldr r1, _0205D24C ; =FUN_0205D264
+ lsl r0, r0, #0x2
+ str r1, [r4, r0]
+ mov r1, #0x0
+ add r0, #0x30
+ str r1, [r4, r0]
+ mov r0, #0xa
+ strh r0, [r4, #0x2a]
+ pop {r3-r5, pc}
+ nop
+_0205D24C: .word FUN_0205D264
+
+ thumb_func_start FUN_0205D250
+FUN_0205D250: ; 0x0205D250
+ push {r3, lr}
+ ldr r0, [r0, #0x0]
+ ldr r1, _0205D260 ; =FUN_0205D264
+ mov r2, #0x0
+ bl FUN_020463CC
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+_0205D260: .word FUN_0205D264
+
+ thumb_func_start FUN_0205D264
+FUN_0205D264: ; 0x0205D264
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_02046528
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02046530
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ cmp r0, #0x3
+ bhi _0205D324
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0205D288: ; jump table (using 16-bit offset)
+ .short _0205D290 - _0205D288 - 2; case 0
+ .short _0205D296 - _0205D288 - 2; case 1
+ .short _0205D314 - _0205D288 - 2; case 2
+ .short _0205D31A - _0205D288 - 2; case 3
+_0205D290:
+ add r0, r0, #0x1
+ str r0, [r5, #0x0]
+ b _0205D324
+_0205D296:
+ ldr r0, [r4, #0x38]
+ bl FUN_020553C4
+ cmp r0, #0x1
+ bne _0205D2D6
+ ldr r0, [r4, #0x38]
+ bl FUN_020553A0
+ bl FUN_02058914
+ ldr r0, [r4, #0x38]
+ mov r1, #0x1
+ bl FUN_021E5FD8
+ ldr r0, [r4, #0x38]
+ bl FUN_021E5FE0
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_0204AB20
+ ldr r1, [r4, #0x1c]
+ add r0, r4, #0x0
+ ldr r1, [r1, #0x0]
+ bl FUN_0204AB58
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ mov r2, #0x1
+ bl FUN_0204ABDC
+ b _0205D30C
+_0205D2D6:
+ mov r1, #0x12
+ add r0, r4, #0x0
+ lsl r1, r1, #0x6
+ bl FUN_0204AB20
+ mov r1, #0x12
+ add r0, r4, #0x0
+ lsl r1, r1, #0x6
+ mov r2, #0x1
+ bl FUN_0204ABDC
+ ldr r0, [r4, #0x38]
+ bl FUN_020553A0
+ bl FUN_02058914
+ ldr r0, [r4, #0x38]
+ mov r1, #0x2
+ bl FUN_021E5FD8
+ ldr r0, [r4, #0x38]
+ bl FUN_021E5FE0
+ add r4, #0x90
+ ldr r0, [r4, #0x0]
+ bl FUN_0205DD40
+_0205D30C:
+ ldr r0, [r5, #0x0]
+ add r0, r0, #0x1
+ str r0, [r5, #0x0]
+ b _0205D324
+_0205D314:
+ add r0, r0, #0x1
+ str r0, [r5, #0x0]
+ b _0205D324
+_0205D31A:
+ ldr r0, [r4, #0x34]
+ bl FUN_020587B0
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0205D324:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0205D328
+FUN_0205D328: ; 0x0205D328
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x1
+ bne _0205D336
+ mov r0, #0x2
+ pop {r3-r5, pc}
+_0205D336:
+ ldr r0, [r4, #0x14]
+ bl FUN_02055738
+ cmp r0, #0x1
+ bne _0205D344
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0205D344:
+ ldr r0, [r4, #0x14]
+ bl FUN_020553A0
+ ldrh r1, [r4, #0xe]
+ add r5, r0, #0x0
+ bl FUN_02059BB4
+ cmp r0, #0x1
+ beq _0205D362
+ ldrh r1, [r4, #0xe]
+ add r0, r5, #0x0
+ bl FUN_02059BD4
+ cmp r0, #0x1
+ bne _0205D366
+_0205D362:
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0205D366:
+ ldrh r0, [r4, #0xe]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_02054798
+ cmp r0, #0x1
+ beq _0205D390
+ ldrh r0, [r4, #0xe]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_02054974
+ cmp r0, #0x1
+ beq _0205D390
+ ldrh r0, [r4, #0xe]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_02054990
+ cmp r0, #0x1
+ bne _0205D396
+_0205D390:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r5, pc}
+_0205D396:
+ ldr r0, [r4, #0x0]
+ bl FUN_020348B4
+ cmp r0, #0x0
+ bne _0205D3A6
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r5, pc}
+_0205D3A6:
+ ldr r0, [r4, #0x8]
+ cmp r0, #0x2
+ bne _0205D3B2
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r5, pc}
+_0205D3B2:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205D3B8
+FUN_0205D3B8: ; 0x0205D3B8
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_02046528
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_02037944
+ ldr r1, _0205D3E0 ; =FUN_02036B90
+ add r0, r4, #0x0
+ bl FUN_02035D04
+ pop {r3-r5, pc}
+ nop
+_0205D3E0: .word FUN_02036B90
+
+ thumb_func_start FUN_0205D3E4
+FUN_0205D3E4: ; 0x0205D3E4
+ push {r3, lr}
+ ldr r1, _0205D3F0 ; =FUN_0205D3F4
+ bl FUN_0205DD04
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+_0205D3F0: .word FUN_0205D3F4
+
+ thumb_func_start FUN_0205D3F4
+FUN_0205D3F4: ; 0x0205D3F4
+ push {r3, lr}
+ mov r1, #0x0
+ bl FUN_02037944
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205D400
+FUN_0205D400: ; 0x0205D400
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ ldr r0, [r6, #0x0]
+ bl FUN_02046528
+ add r5, r0, #0x0
+ ldr r0, [r6, #0x0]
+ bl FUN_0204652C
+ add r7, r0, #0x0
+ mov r0, #0xb
+ mov r1, #0x40
+ bl FUN_02016998
+ mov r1, #0x0
+ mov r2, #0x40
+ add r4, r0, #0x0
+ blx FUN_020DF4A4
+ ldr r0, [r5, #0xc]
+ bl FUN_0206BB1C
+ str r0, [r4, #0x0]
+ ldr r0, [r5, #0xc]
+ bl FUN_0206F158
+ str r0, [r4, #0x4]
+ ldr r0, [r5, #0xc]
+ bl FUN_02025838
+ str r0, [r4, #0x8]
+ ldr r0, [r5, #0xc]
+ bl LoadPlayerDataAddress
+ str r0, [r4, #0xc]
+ mov r0, #0x7a
+ lsl r0, r0, #0x2
+ add r0, r7, r0
+ str r0, [r4, #0x18]
+ add r0, r4, #0x0
+ mov r1, #0x0
+ add r0, #0x21
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0x6
+ add r0, #0x20
+ strb r1, [r0, #0x0]
+ str r5, [r4, #0x1c]
+ ldrh r0, [r6, #0x4]
+ strh r0, [r4, #0x24]
+ add r0, r4, #0x0
+ ldrb r1, [r6, #0x6]
+ add r0, #0x22
+ strb r1, [r0, #0x0]
+ ldrh r0, [r6, #0x4]
+ bl FUN_0206EA30
+ strh r0, [r4, #0x26]
+ ldr r1, _0205D490 ; =0x020F96DC
+ add r0, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_020373D4
+ mov r0, #0x7e
+ lsl r0, r0, #0x2
+ str r4, [r7, r0]
+ ldr r1, _0205D494 ; =FUN_02035E50
+ add r0, r7, #0x0
+ bl FUN_02035D04
+ pop {r3-r7, pc}
+ nop
+_0205D490: .word 0x020F96DC
+_0205D494: .word FUN_02035E50
+
+ thumb_func_start FUN_0205D498
+FUN_0205D498: ; 0x0205D498
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_02046528
+ add r6, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldrh r0, [r5, #0x4]
+ bl FUN_0206EAB8
+ add r2, r0, #0x0
+ add r0, r6, #0x0
+ mov r1, #0x3
+ mov r3, #0xb
+ bl FUN_02037F58
+ add r6, r0, #0x0
+ ldrh r0, [r5, #0x4]
+ mov r1, #0x3
+ mov r2, #0x0
+ bl FUN_02036BC4
+ mov r1, #0x7f
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ sub r0, r1, #0x4
+ str r6, [r4, r0]
+ ldr r1, _0205D4E0 ; =FUN_02036BDC
+ add r0, r4, #0x0
+ bl FUN_02035D04
+ pop {r4-r6, pc}
+ nop
+_0205D4E0: .word FUN_02036BDC
+
+ thumb_func_start FUN_0205D4E4
+FUN_0205D4E4: ; 0x0205D4E4
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_0205D4E8
+FUN_0205D4E8: ; 0x0205D4E8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ add r4, r1, #0x0
+ bl FUN_02046528
+ ldr r0, [r5, #0x0]
+ bl FUN_0204652C
+ ldrh r1, [r4, #0x10]
+ mov r0, #0x1
+ tst r0, r1
+ beq _0205D50E
+ ldr r2, _0205D518 ; =0x00000AF1
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0205CF34
+ pop {r3-r5, pc}
+_0205D50E:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0205D024
+ pop {r3-r5, pc}
+ .balign 4
+_0205D518: .word 0x00000AF1
+
+ thumb_func_start FUN_0205D51C
+FUN_0205D51C: ; 0x0205D51C
+ ldrh r1, [r0, #0x10]
+ mov r0, #0x1
+ tst r1, r0
+ bne _0205D526
+ mov r0, #0x0
+_0205D526:
+ bx lr
+
+ thumb_func_start FUN_0205D528
+FUN_0205D528: ; 0x0205D528
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_02046528
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0xb
+ bl FUN_02037FC4
+ mov r1, #0x7e
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ ldr r1, _0205D554 ; =FUN_02036D94
+ add r0, r4, #0x0
+ bl FUN_02035D04
+ pop {r3-r5, pc}
+ .balign 4
+_0205D554: .word FUN_02036D94
+
+ thumb_func_start FUN_0205D558
+FUN_0205D558: ; 0x0205D558
+ push {r3, lr}
+ ldr r1, _0205D564 ; =FUN_0205D568
+ bl FUN_0205DD04
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+_0205D564: .word FUN_0205D568
+
+ thumb_func_start FUN_0205D568
+FUN_0205D568: ; 0x0205D568
+ ldr r3, _0205D570 ; =FUN_02037FC4
+ mov r1, #0xb
+ bx r3
+ nop
+_0205D570: .word FUN_02037FC4
+
+ thumb_func_start FUN_0205D574
+FUN_0205D574: ; 0x0205D574
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_02046528
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldr r1, [r5, #0xc]
+ add r0, r5, #0x0
+ bl FUN_0203846C
+ mov r0, #0x7e
+ mov r1, #0x0
+ lsl r0, r0, #0x2
+ str r1, [r4, r0]
+ ldr r1, _0205D5A4 ; =FUN_02036DD4
+ add r0, r4, #0x0
+ bl FUN_02035D04
+ pop {r3-r5, pc}
+ nop
+_0205D5A4: .word FUN_02036DD4
+
+ thumb_func_start FUN_0205D5A8
+FUN_0205D5A8: ; 0x0205D5A8
+ push {r3, lr}
+ ldr r1, _0205D5B4 ; =FUN_0205D5B8
+ bl FUN_0205DD04
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+_0205D5B4: .word FUN_0205D5B8
+
+ thumb_func_start FUN_0205D5B8
+FUN_0205D5B8: ; 0x0205D5B8
+ push {r3, lr}
+ ldr r1, [r0, #0xc]
+ bl FUN_0203846C
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205D5C4
+FUN_0205D5C4: ; 0x0205D5C4
+ push {r4-r6, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_02046528
+ add r6, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_0204652C
+ add r5, r0, #0x0
+ mov r0, #0xb
+ mov r1, #0x4
+ bl FUN_020169D8
+ add r4, r0, #0x0
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+ add r0, r6, #0x0
+ bl FUN_0204649C
+ mov r0, #0x72
+ ldr r1, _0205D600 ; =FUN_0205E30C
+ lsl r0, r0, #0x2
+ str r1, [r5, r0]
+ add r0, #0x30
+ str r4, [r5, r0]
+ mov r0, #0xa
+ strh r0, [r5, #0x2a]
+ pop {r4-r6, pc}
+ nop
+_0205D600: .word FUN_0205E30C
+
+ thumb_func_start FUN_0205D604
+FUN_0205D604: ; 0x0205D604
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0xb
+ mov r1, #0x4
+ bl FUN_020169D8
+ add r2, r0, #0x0
+ mov r0, #0x0
+ str r0, [r2, #0x0]
+ ldr r0, [r4, #0x0]
+ ldr r1, _0205D624 ; =FUN_0205E30C
+ bl FUN_020463CC
+ mov r0, #0x0
+ pop {r4, pc}
+ nop
+_0205D624: .word FUN_0205E30C
+
+ thumb_func_start FUN_0205D628
+FUN_0205D628: ; 0x0205D628
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x1
+ bne _0205D636
+ mov r0, #0x2
+ pop {r4, pc}
+_0205D636:
+ ldr r0, [r4, #0x18]
+ ldr r0, [r0, #0x38]
+ bl FUN_020553C4
+ cmp r0, #0x1
+ bne _0205D648
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4, pc}
+_0205D648:
+ ldrh r0, [r4, #0xe]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0205478C
+ cmp r0, #0x0
+ beq _0205D65A
+ mov r0, #0x0
+ pop {r4, pc}
+_0205D65A:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4, pc}
+
+ thumb_func_start FUN_0205D660
+FUN_0205D660: ; 0x0205D660
+ ldr r3, _0205D668 ; =FUN_0205CF34
+ ldr r2, _0205D66C ; =0x00000AF2
+ bx r3
+ nop
+_0205D668: .word FUN_0205CF34
+_0205D66C: .word 0x00000AF2
+
+ thumb_func_start FUN_0205D670
+FUN_0205D670: ; 0x0205D670
+ push {r3, lr}
+ ldr r1, _0205D67C ; =0x00000AF2
+ bl FUN_0205CF78
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+_0205D67C: .word 0x00000AF2
+
+ thumb_func_start FUN_0205D680
+FUN_0205D680: ; 0x0205D680
+ ldr r1, [r0, #0x4]
+ cmp r1, #0x1
+ bne _0205D68A
+ mov r0, #0x2
+ bx lr
+_0205D68A:
+ ldrh r1, [r0, #0x10]
+ mov r0, #0x4
+ tst r1, r0
+ beq _0205D696
+ mov r0, #0x0
+ bx lr
+_0205D696:
+ sub r0, r0, #0x5
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0205D69C
+FUN_0205D69C: ; 0x0205D69C
+ ldr r3, _0205D6A4 ; =FUN_0205CF34
+ ldr r2, _0205D6A8 ; =0x00000AF3
+ bx r3
+ nop
+_0205D6A4: .word FUN_0205CF34
+_0205D6A8: .word 0x00000AF3
+
+ thumb_func_start FUN_0205D6AC
+FUN_0205D6AC: ; 0x0205D6AC
+ ldrh r1, [r0, #0x10]
+ mov r0, #0x2
+ tst r1, r0
+ beq _0205D6B8
+ mov r0, #0x0
+ bx lr
+_0205D6B8:
+ sub r0, r0, #0x3
+ bx lr
+
+ thumb_func_start FUN_0205D6BC
+FUN_0205D6BC: ; 0x0205D6BC
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_02046528
+ add r6, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_0204649C
+ bl FUN_021F57EC
+ str r0, [sp, #0x0]
+ ldr r1, [sp, #0x0]
+ mov r0, #0xb
+ bl FUN_020169D8
+ ldr r2, [sp, #0x0]
+ mov r1, #0x0
+ add r7, r0, #0x0
+ blx FUN_020DF4A4
+ mov r0, #0x72
+ ldr r1, _0205D710 ; =0x021F57F1
+ lsl r0, r0, #0x2
+ str r1, [r4, r0]
+ add r0, #0x30
+ str r7, [r4, r0]
+ mov r0, #0xa
+ strh r0, [r4, #0x2a]
+ ldr r0, [r6, #0xc]
+ bl FUN_0206F158
+ ldrh r1, [r5, #0x4]
+ mov r2, #0x1
+ mov r3, #0xb
+ bl FUN_0206EDD4
+ pop {r3-r7, pc}
+ .balign 4
+_0205D710: .word 0x021F57F1
+
+ thumb_func_start FUN_0205D714
+FUN_0205D714: ; 0x0205D714
+ ldr r3, _0205D71C ; =FUN_0205CF34
+ ldr r2, _0205D720 ; =0x000022F6
+ bx r3
+ nop
+_0205D71C: .word FUN_0205CF34
+_0205D720: .word 0x000022F6
+
+ thumb_func_start FUN_0205D724
+FUN_0205D724: ; 0x0205D724
+ push {r3, lr}
+ ldr r1, _0205D730 ; =0x000022F6
+ bl FUN_0205CF78
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+_0205D730: .word 0x000022F6
+
+ thumb_func_start FUN_0205D734
+FUN_0205D734: ; 0x0205D734
+ push {r3, lr}
+ ldr r0, [r0, #0x0]
+ bl FUN_02034908
+ cmp r0, #0x0
+ beq _0205D744
+ mov r0, #0x0
+ pop {r3, pc}
+_0205D744:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205D74C
+FUN_0205D74C: ; 0x0205D74C
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_02046528
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0204649C
+ mov r0, #0x72
+ ldr r1, _0205D784 ; =0x021F5C71
+ lsl r0, r0, #0x2
+ str r1, [r4, r0]
+ add r0, r5, #0x0
+ mov r1, #0xb
+ mov r2, #0x0
+ bl FUN_021F5C44
+ mov r1, #0x7e
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ mov r0, #0xa
+ strh r0, [r4, #0x2a]
+ pop {r3-r5, pc}
+ .balign 4
+_0205D784: .word 0x021F5C71
+
+ thumb_func_start FUN_0205D788
+FUN_0205D788: ; 0x0205D788
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ mov r1, #0x4
+ mov r2, #0x0
+ bl FUN_021F5C44
+ add r2, r0, #0x0
+ ldr r0, [r4, #0x0]
+ ldr r1, _0205D7A4 ; =0x021F5C71
+ bl FUN_020463CC
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+_0205D7A4: .word 0x021F5C71
+
+ thumb_func_start FUN_0205D7A8
+FUN_0205D7A8: ; 0x0205D7A8
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_02046528
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0204649C
+ mov r0, #0x72
+ ldr r1, _0205D7E0 ; =0x021F5C71
+ lsl r0, r0, #0x2
+ str r1, [r4, r0]
+ add r0, r5, #0x0
+ mov r1, #0xb
+ mov r2, #0x1
+ bl FUN_021F5C44
+ mov r1, #0x7e
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ mov r0, #0xa
+ strh r0, [r4, #0x2a]
+ pop {r3-r5, pc}
+ .balign 4
+_0205D7E0: .word 0x021F5C71
+
+ thumb_func_start FUN_0205D7E4
+FUN_0205D7E4: ; 0x0205D7E4
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ mov r1, #0x4
+ mov r2, #0x1
+ bl FUN_021F5C44
+ add r2, r0, #0x0
+ ldr r0, [r4, #0x0]
+ ldr r1, _0205D800 ; =0x021F5C71
+ bl FUN_020463CC
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+_0205D800: .word 0x021F5C71
+
+ thumb_func_start FUN_0205D804
+FUN_0205D804: ; 0x0205D804
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_02046528
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0204649C
+ mov r0, #0x72
+ ldr r1, _0205D83C ; =0x021F5C71
+ lsl r0, r0, #0x2
+ str r1, [r4, r0]
+ add r0, r5, #0x0
+ mov r1, #0xb
+ mov r2, #0x2
+ bl FUN_021F5C44
+ mov r1, #0x7e
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ mov r0, #0xa
+ strh r0, [r4, #0x2a]
+ pop {r3-r5, pc}
+ .balign 4
+_0205D83C: .word 0x021F5C71
+
+ thumb_func_start FUN_0205D840
+FUN_0205D840: ; 0x0205D840
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ mov r1, #0x4
+ mov r2, #0x2
+ bl FUN_021F5C44
+ add r2, r0, #0x0
+ ldr r0, [r4, #0x0]
+ ldr r1, _0205D85C ; =0x021F5C71
+ bl FUN_020463CC
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+_0205D85C: .word 0x021F5C71
+
+ thumb_func_start FUN_0205D860
+FUN_0205D860: ; 0x0205D860
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x1
+ bne _0205D86E
+ mov r0, #0x2
+ pop {r4, pc}
+_0205D86E:
+ ldrh r0, [r4, #0xc]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0205481C
+ cmp r0, #0x1
+ bne _0205D8B0
+ ldrh r0, [r4, #0xe]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_02054B78
+ cmp r0, #0x1
+ beq _0205D898
+ ldrh r0, [r4, #0xe]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_02054B6C
+ cmp r0, #0x1
+ bne _0205D8AC
+_0205D898:
+ ldr r0, [r4, #0x14]
+ bl FUN_020553A0
+ bl FUN_02058A68
+ cmp r0, #0x1
+ bne _0205D8AC
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4, pc}
+_0205D8AC:
+ mov r0, #0x0
+ pop {r4, pc}
+_0205D8B0:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205D8B8
+FUN_0205D8B8: ; 0x0205D8B8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r0, #0xb
+ mov r1, #0x18
+ bl FUN_02016998
+ add r4, r0, #0x0
+ mov r0, #0x0
+ strh r0, [r4, #0x16]
+ mov r0, #0x80
+ mov r1, #0xb
+ bl FUN_020219F4
+ str r0, [r4, #0x10]
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_0206F158
+ bl FUN_0206EBC4
+ add r2, r0, #0x0
+ ldr r0, [r5, #0x0]
+ lsl r2, r2, #0x10
+ ldr r0, [r0, #0xc]
+ ldr r1, [r4, #0x10]
+ lsr r2, r2, #0x10
+ mov r3, #0xb
+ bl FUN_0206E3F8
+ ldr r0, [r5, #0x0]
+ ldr r1, _0205D900 ; =FUN_0205D904
+ add r2, r4, #0x0
+ bl FUN_020463CC
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+_0205D900: .word FUN_0205D904
+
+ thumb_func_start FUN_0205D904
+FUN_0205D904: ; 0x0205D904
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldrh r0, [r4, #0x16]
+ cmp r0, #0x0
+ beq _0205D926
+ cmp r0, #0x1
+ beq _0205D95C
+ cmp r0, #0x2
+ beq _0205D984
+ b _0205D9A0
+_0205D926:
+ ldr r0, [r5, #0x34]
+ bl FUN_02058780
+ ldr r0, [r5, #0x8]
+ add r1, r4, #0x0
+ mov r2, #0x3
+ bl FUN_020545B8
+ ldr r0, [r5, #0xc]
+ bl LoadPlayerDataAddress
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ bl FUN_02054608
+ ldr r1, [r4, #0x10]
+ add r0, r4, #0x0
+ add r2, r5, #0x0
+ mov r3, #0x1
+ bl FUN_02054658
+ strh r0, [r4, #0x14]
+ ldrh r0, [r4, #0x16]
+ add r0, r0, #0x1
+ strh r0, [r4, #0x16]
+ b _0205D9A0
+_0205D95C:
+ ldrh r0, [r4, #0x14]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_020546C8
+ cmp r0, #0x1
+ bne _0205D9A0
+ ldr r0, _0205D9A4 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0xf3
+ tst r0, r1
+ beq _0205D9A0
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_0200D0E0
+ ldrh r0, [r4, #0x16]
+ add r0, r0, #0x1
+ strh r0, [r4, #0x16]
+ b _0205D9A0
+_0205D984:
+ ldr r0, [r5, #0x34]
+ bl FUN_020587B0
+ add r0, r4, #0x0
+ bl FUN_02019178
+ ldr r0, [r4, #0x10]
+ bl FUN_02021A20
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0205D9A0:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+_0205D9A4: .word 0x021C48B8
+
+ thumb_func_start FUN_0205D9A8
+FUN_0205D9A8: ; 0x0205D9A8
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ ldr r0, [r6, #0x0]
+ bl FUN_02046528
+ add r5, r0, #0x0
+ ldr r0, [r6, #0x0]
+ bl FUN_0204652C
+ add r7, r0, #0x0
+ mov r0, #0xb
+ mov r1, #0x40
+ bl FUN_02016998
+ mov r1, #0x0
+ mov r2, #0x40
+ add r4, r0, #0x0
+ blx FUN_020DF4A4
+ ldr r0, [r5, #0xc]
+ bl FUN_0206BB1C
+ str r0, [r4, #0x0]
+ ldr r0, [r5, #0xc]
+ bl FUN_0206F158
+ str r0, [r4, #0x4]
+ ldr r0, [r5, #0xc]
+ bl FUN_02025838
+ str r0, [r4, #0x8]
+ ldr r0, [r5, #0xc]
+ bl LoadPlayerDataAddress
+ str r0, [r4, #0xc]
+ ldr r0, [r5, #0xc]
+ bl FUN_02022504
+ str r0, [r4, #0x10]
+ mov r0, #0x7a
+ lsl r0, r0, #0x2
+ add r0, r7, r0
+ str r0, [r4, #0x18]
+ add r0, r4, #0x0
+ mov r1, #0x0
+ add r0, #0x21
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0x10
+ add r0, #0x20
+ strb r1, [r0, #0x0]
+ ldrh r0, [r6, #0x4]
+ add r2, r4, #0x0
+ strh r0, [r4, #0x24]
+ add r0, r4, #0x0
+ ldrb r1, [r6, #0x6]
+ add r0, #0x22
+ strb r1, [r0, #0x0]
+ ldr r1, _0205DA34 ; =0x020F96DC
+ add r0, r5, #0x0
+ bl FUN_020373D4
+ mov r0, #0x7e
+ lsl r0, r0, #0x2
+ str r4, [r7, r0]
+ ldr r1, _0205DA38 ; =FUN_02035E50
+ add r0, r7, #0x0
+ bl FUN_02035D04
+ pop {r3-r7, pc}
+ .balign 4
+_0205DA34: .word 0x020F96DC
+_0205DA38: .word FUN_02035E50
+
+ thumb_func_start FUN_0205DA3C
+FUN_0205DA3C: ; 0x0205DA3C
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_02046528
+ add r6, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_0204649C
+ mov r0, #0x72
+ ldr r1, _0205DA7C ; =FUN_0205DAAC
+ lsl r0, r0, #0x2
+ str r1, [r4, r0]
+ mov r1, #0x0
+ add r0, #0x30
+ str r1, [r4, r0]
+ mov r0, #0xa
+ strh r0, [r4, #0x2a]
+ ldr r0, [r6, #0xc]
+ bl FUN_0206F158
+ ldrh r1, [r5, #0x4]
+ mov r2, #0x1
+ mov r3, #0xb
+ bl FUN_0206EDD4
+ pop {r4-r6, pc}
+ nop
+_0205DA7C: .word FUN_0205DAAC
+
+ thumb_func_start FUN_0205DA80
+FUN_0205DA80: ; 0x0205DA80
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x1
+ bne _0205DA8E
+ mov r0, #0x2
+ pop {r4, pc}
+_0205DA8E:
+ ldr r0, [r4, #0x0]
+ bl FUN_02034930
+ cmp r0, #0x1
+ bne _0205DAA6
+ ldr r0, [r4, #0x0]
+ bl FUN_0203487C
+ cmp r0, #0x1
+ bne _0205DAA6
+ mov r0, #0x0
+ pop {r4, pc}
+_0205DAA6:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4, pc}
+
+ thumb_func_start FUN_0205DAAC
+FUN_0205DAAC: ; 0x0205DAAC
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02046528
+ mov r1, #0xb
+ bl FUN_0224C700
+ add r2, r0, #0x0
+ ldr r1, _0205DAC8 ; =0x0224C721
+ add r0, r4, #0x0
+ bl FUN_020463EC
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+_0205DAC8: .word 0x0224C721
+
+ thumb_func_start FUN_0205DACC
+FUN_0205DACC: ; 0x0205DACC
+ ldr r3, _0205DAD4 ; =FUN_0205CF34
+ ldr r2, _0205DAD8 ; =0x000007F7
+ bx r3
+ nop
+_0205DAD4: .word FUN_0205CF34
+_0205DAD8: .word 0x000007F7
+
+ thumb_func_start FUN_0205DADC
+FUN_0205DADC: ; 0x0205DADC
+ push {r3, lr}
+ ldr r1, _0205DAE8 ; =0x000007F7
+ bl FUN_0205CF78
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+_0205DAE8: .word 0x000007F7
+
+ thumb_func_start FUN_0205DAEC
+FUN_0205DAEC: ; 0x0205DAEC
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x18]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ add r5, r0, #0x0
+ bl FUN_0205ED0C
+ cmp r0, #0x0
+ bne _0205DB08
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r5, pc}
+_0205DB08:
+ add r0, r5, #0x0
+ mov r1, #0x2
+ bl FUN_0205F4A0
+ cmp r0, #0x0
+ bne _0205DB1A
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r5, pc}
+_0205DB1A:
+ ldr r0, [r4, #0x18]
+ ldr r0, [r0, #0xc]
+ bl FUN_02024DA0
+ bl FUN_02024CA4
+ cmp r0, #0x0
+ bne _0205DB30
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r5, pc}
+_0205DB30:
+ ldr r0, [r4, #0x0]
+ bl FUN_020349D8
+ cmp r0, #0x0
+ beq _0205DB3E
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0205DB3E:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0205DB44
+FUN_0205DB44: ; 0x0205DB44
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ bl FUN_02060144
+ cmp r0, #0x1
+ bne _0205DB54
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0205DB54:
+ ldr r0, [r5, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205F244
+ cmp r0, #0x1
+ bne _0205DB66
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0205DB66:
+ ldr r0, [r5, #0xc]
+ bl FUN_0206F158
+ bl FUN_0206EBC4
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ mov r1, #0x6
+ mov r2, #0xb
+ str r0, [sp, #0x0]
+ bl FUN_0206E7B8
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ mov r0, #0x2
+ add r1, r4, #0x0
+ bl FUN_0205CE48
+ add r6, r0, #0x0
+ mov r0, #0x1
+ add r1, r4, #0x0
+ bl FUN_0205CE48
+ add r7, r0, #0x0
+ bne _0205DB9C
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0205DB9C:
+ mov r0, #0xb
+ mov r1, #0x2c
+ bl FUN_02016998
+ add r4, r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x2c
+ blx FUN_020DF4A4
+ str r5, [r4, #0x0]
+ ldr r0, [sp, #0x0]
+ add r1, r4, #0x4
+ strh r0, [r4, #0x28]
+ add r0, r5, #0x0
+ bl FUN_0205CE80
+ mov r5, #0x0
+ cmp r6, #0x0
+ bne _0205DBCA
+ add r0, r4, #0x0
+ blx r7
+ add r5, r0, #0x0
+ b _0205DBE0
+_0205DBCA:
+ add r0, r4, #0x4
+ blx r6
+ add r1, r0, #0x0
+ bne _0205DBDA
+ add r0, r4, #0x0
+ blx r7
+ add r5, r0, #0x0
+ b _0205DBE0
+_0205DBDA:
+ add r0, r4, #0x0
+ bl FUN_0205DBF0
+_0205DBE0:
+ cmp r5, #0x0
+ bne _0205DBEA
+ add r0, r4, #0x0
+ bl FUN_02016A18
+_0205DBEA:
+ mov r0, #0x1
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205DBF0
+FUN_0205DBF0: ; 0x0205DBF0
+ push {r3-r6, lr}
+ sub sp, #0x4
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ mov r0, #0xb
+ mov r1, #0x18
+ bl FUN_02016998
+ add r4, r0, #0x0
+ mov r0, #0x0
+ strh r0, [r4, #0x16]
+ mov r0, #0x80
+ mov r1, #0xb
+ bl FUN_020219F4
+ str r0, [r4, #0x10]
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020238F4
+ mov r1, #0xb
+ str r1, [sp, #0x0]
+ ldrh r2, [r5, #0x28]
+ ldr r1, [r4, #0x10]
+ add r3, r6, #0x0
+ bl FUN_0206E51C
+ ldr r0, [r5, #0x0]
+ ldr r1, _0205DC34 ; =FUN_0205D904
+ add r2, r4, #0x0
+ bl FUN_020463CC
+ add sp, #0x4
+ pop {r3-r6, pc}
+ .balign 4
+_0205DC34: .word FUN_0205D904
+
+ thumb_func_start FUN_0205DC38
+FUN_0205DC38: ; 0x0205DC38
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ add r0, #0x2a
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x4
+ bhi _0205DCFA
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0205DC5E: ; jump table (using 16-bit offset)
+ .short _0205DC68 - _0205DC5E - 2; case 0
+ .short _0205DC7C - _0205DC5E - 2; case 1
+ .short _0205DC94 - _0205DC5E - 2; case 2
+ .short _0205DCC4 - _0205DC5E - 2; case 3
+ .short _0205DCE2 - _0205DC5E - 2; case 4
+_0205DC68:
+ ldr r0, [r5, #0x34]
+ bl FUN_02058780
+ mov r0, #0x0
+ bl FUN_021D7CA4
+ mov r0, #0x1
+ add r4, #0x2a
+ strb r0, [r4, #0x0]
+ b _0205DCFA
+_0205DC7C:
+ bl FUN_0200E308
+ cmp r0, #0x0
+ beq _0205DCFA
+ ldr r1, [r4, #0x20]
+ add r0, r5, #0x0
+ blx r1
+ str r0, [r4, #0x24]
+ mov r0, #0x2
+ add r4, #0x2a
+ strb r0, [r4, #0x0]
+ b _0205DCFA
+_0205DC94:
+ add r0, r5, #0x0
+ bl FUN_0204647C
+ cmp r0, #0x0
+ bne _0205DCFA
+ ldr r0, [r4, #0x24]
+ cmp r0, #0x0
+ beq _0205DCB6
+ ldr r2, [r4, #0x20]
+ ldr r1, _0205DD00 ; =FUN_0205D568
+ cmp r2, r1
+ bne _0205DCB2
+ bl FUN_02087E14
+ b _0205DCB6
+_0205DCB2:
+ bl FUN_02016A18
+_0205DCB6:
+ add r0, r5, #0x0
+ bl FUN_0204649C
+ mov r0, #0x3
+ add r4, #0x2a
+ strb r0, [r4, #0x0]
+ b _0205DCFA
+_0205DCC4:
+ add r0, r5, #0x0
+ bl FUN_020464A4
+ cmp r0, #0x0
+ beq _0205DCFA
+ ldr r0, [r5, #0x34]
+ bl FUN_02058780
+ mov r0, #0x1
+ bl FUN_021D7CA4
+ mov r0, #0x4
+ add r4, #0x2a
+ strb r0, [r4, #0x0]
+ b _0205DCFA
+_0205DCE2:
+ bl FUN_0200E308
+ cmp r0, #0x0
+ beq _0205DCFA
+ ldr r0, [r5, #0x34]
+ bl FUN_020587B0
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0205DCFA:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ nop
+_0205DD00: .word FUN_0205D568
+
+ thumb_func_start FUN_0205DD04
+FUN_0205DD04: ; 0x0205DD04
+ add r2, r0, #0x0
+ str r1, [r2, #0x20]
+ ldr r3, _0205DD10 ; =FUN_020463CC
+ ldr r0, [r2, #0x0]
+ ldr r1, _0205DD14 ; =FUN_0205DC38
+ bx r3
+ .balign 4
+_0205DD10: .word FUN_020463CC
+_0205DD14: .word FUN_0205DC38
+
+ thumb_func_start FUN_0205DD18
+FUN_0205DD18: ; 0x0205DD18
+ push {r4, lr}
+ mov r1, #0xd4
+ bl FUN_02016998
+ add r4, r0, #0x0
+ mov r0, #0x1
+ lsl r0, r0, #0x10
+ add r3, r4, #0x0
+ lsr r1, r0, #0x1
+ add r2, r0, #0x0
+ add r3, #0xbc
+ bl FUN_0201B7DC
+ add r0, r4, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205DD38
+FUN_0205DD38: ; 0x0205DD38
+ ldr r3, _0205DD3C ; =FUN_02016A18
+ bx r3
+ .balign 4
+_0205DD3C: .word FUN_02016A18
+
+ thumb_func_start FUN_0205DD40
+FUN_0205DD40: ; 0x0205DD40
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r1, #0x0
+ str r1, [r4, #0x4]
+ str r1, [r4, #0x0]
+ str r1, [r4, #0x8]
+ str r1, [r4, #0xc]
+ str r1, [r4, #0x10]
+ add r0, #0xd0
+ strb r1, [r0, #0x0]
+ mov r0, #0x1
+ str r0, [r4, #0x14]
+ add r0, r4, #0x0
+ add r0, #0x1c
+ mov r2, #0xa0
+ str r1, [r4, #0x18]
+ blx MI_CpuFill8
+ mov r3, #0x0
+ add r2, r3, #0x0
+ mov r0, #0x28
+_0205DD6A:
+ add r1, r3, #0x0
+ mul r1, r0
+ add r1, r4, r1
+ str r2, [r1, #0x28]
+ add r1, r3, #0x1
+ lsl r1, r1, #0x18
+ lsr r3, r1, #0x18
+ cmp r3, #0x4
+ blo _0205DD6A
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205DD80
+FUN_0205DD80: ; 0x0205DD80
+ push {r4-r7, lr}
+ sub sp, #0x2c
+ str r1, [sp, #0x10]
+ ldr r1, _0205DECC ; =0x020F7374
+ str r2, [sp, #0x14]
+ ldrb r2, [r1, #0x4]
+ str r0, [sp, #0xc]
+ add r0, sp, #0x28
+ strb r2, [r0, #0x0]
+ ldrb r2, [r1, #0x5]
+ str r3, [sp, #0x18]
+ strb r2, [r0, #0x1]
+ ldrb r2, [r1, #0x6]
+ ldrb r1, [r1, #0x7]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldr r0, [sp, #0xc]
+ ldr r0, [r0, #0x38]
+ bl FUN_02055360
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x18]
+ mov r5, #0x0
+ str r0, [sp, #0x24]
+ add r0, #0x1c
+ str r5, [sp, #0x20]
+ str r0, [sp, #0x24]
+_0205DDB6:
+ add r0, sp, #0x28
+ ldrb r4, [r0, r5]
+ cmp r4, #0x0
+ bne _0205DDC2
+ bl ErrorHandling
+_0205DDC2:
+ cmp r4, #0x1
+ bhi _0205DDCA
+ mov r6, #0x0
+ b _0205DDF2
+_0205DDCA:
+ bl FUN_0201B9EC
+ add r6, r0, #0x0
+ ldr r0, _0205DED0 ; =0x0000FFFF
+ add r1, r4, #0x0
+ blx _s32_div_f
+ add r1, r0, #0x0
+ add r1, r1, #0x1
+ lsl r1, r1, #0x10
+ add r0, r6, #0x0
+ lsr r1, r1, #0x10
+ blx _s32_div_f
+ lsl r0, r0, #0x10
+ lsr r6, r0, #0x10
+ cmp r6, r4
+ blo _0205DDF2
+ bl ErrorHandling
+_0205DDF2:
+ lsl r1, r5, #0x1
+ mov r0, #0x9
+ sub r0, r0, r1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ lsl r0, r6, #0x18
+ lsr r6, r0, #0x18
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ blx _s32_div_f
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bne _0205DE1C
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ blx _s32_div_f
+ add r1, r5, r1
+ add r0, r5, #0x0
+ b _0205DE5C
+_0205DE1C:
+ cmp r0, #0x1
+ bne _0205DE30
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ blx _s32_div_f
+ add r0, r5, r4
+ add r1, r5, r1
+ sub r0, r0, #0x1
+ b _0205DE5C
+_0205DE30:
+ lsl r7, r4, #0x1
+ cmp r6, r7
+ bge _0205DE3A
+ bl ErrorHandling
+_0205DE3A:
+ sub r0, r6, r7
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ lsr r3, r1, #0x1f
+ lsl r2, r1, #0x1f
+ lsr r0, r1, #0x1
+ add r0, r5, r0
+ sub r2, r2, r3
+ mov r1, #0x1f
+ ror r2, r1
+ add r0, r0, #0x1
+ add r1, r3, r2
+ bne _0205DE58
+ add r1, r5, #0x0
+ b _0205DE5C
+_0205DE58:
+ add r1, r5, r4
+ sub r1, r1, #0x1
+_0205DE5C:
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ lsl r0, r0, #0x18
+ str r1, [sp, #0x0]
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x4]
+ mov r0, #0x28
+ add r1, r5, #0x0
+ mul r1, r0
+ ldr r0, [sp, #0x24]
+ ldr r2, [sp, #0x10]
+ add r0, r0, r1
+ str r0, [sp, #0x8]
+ ldr r1, [sp, #0x1c]
+ ldr r0, [sp, #0xc]
+ ldr r1, [r1, #0x4]
+ ldr r3, [sp, #0x14]
+ bl FUN_0205E12C
+ cmp r0, #0x0
+ beq _0205DE90
+ ldr r0, [sp, #0x20]
+ add r0, r0, #0x1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x20]
+_0205DE90:
+ add r0, r5, #0x1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #0x4
+ blo _0205DDB6
+ ldr r0, [sp, #0x20]
+ cmp r0, #0x0
+ bne _0205DEBE
+ ldr r0, [sp, #0x18]
+ bl FUN_0205DD40
+ ldr r0, [sp, #0xc]
+ add r1, r0, #0x0
+ ldr r1, [r1, #0x1c]
+ ldr r1, [r1, #0x0]
+ bl FUN_0204AB58
+ add r1, r0, #0x0
+ ldr r0, [sp, #0xc]
+ mov r2, #0x1
+ bl FUN_0204ABDC
+ b _0205DEC4
+_0205DEBE:
+ ldr r0, [sp, #0x18]
+ mov r1, #0x1
+ str r1, [r0, #0x10]
+_0205DEC4:
+ ldr r0, [sp, #0x18]
+ ldr r0, [r0, #0x10]
+ add sp, #0x2c
+ pop {r4-r7, pc}
+ .balign 4
+_0205DECC: .word 0x020F7374
+_0205DED0: .word 0x0000FFFF
+
+ thumb_func_start FUN_0205DED4
+FUN_0205DED4: ; 0x0205DED4
+ push {r3-r7, lr}
+ sub sp, #0x8
+ str r0, [sp, #0x0]
+ str r1, [sp, #0x4]
+ add r6, r2, #0x0
+ mov r4, #0x0
+_0205DEE0:
+ mov r0, #0x28
+ mul r0, r4
+ add r5, r6, r0
+ ldr r0, [r5, #0x28]
+ cmp r0, #0x0
+ beq _0205DF36
+ ldr r1, [sp, #0x4]
+ add r0, r4, #0x0
+ bl FUN_0205E2A0
+ str r0, [r5, #0x2c]
+ cmp r0, #0x0
+ bne _0205DF24
+ bl FUN_0201B9EC
+ mov r1, #0x29
+ lsl r1, r1, #0x4
+ blx _s32_div_f
+ lsl r0, r0, #0x10
+ lsr r7, r0, #0x10
+ cmp r7, #0x64
+ blo _0205DF12
+ bl ErrorHandling
+_0205DF12:
+ cmp r7, #0x32
+ bhs _0205DF1A
+ mov r0, #0x0
+ b _0205DF1C
+_0205DF1A:
+ mov r0, #0x1
+_0205DF1C:
+ str r0, [r5, #0x24]
+ mov r0, #0x0
+ str r0, [r5, #0x30]
+ b _0205DF36
+_0205DF24:
+ ldr r0, [r6, #0x0]
+ str r0, [r5, #0x24]
+ ldr r0, [sp, #0x0]
+ add r0, #0x90
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x4]
+ bl FUN_0205E40C
+ str r0, [r5, #0x30]
+_0205DF36:
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0x4
+ blo _0205DEE0
+ add sp, #0x8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0205DF44
+FUN_0205DF44: ; 0x0205DF44
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r7, r1, #0x0
+ mov r6, #0x0
+_0205DF4C:
+ mov r0, #0x28
+ mul r0, r6
+ add r4, r7, r0
+ ldr r0, [r4, #0x28]
+ cmp r0, #0x0
+ beq _0205DF8C
+ ldr r0, [r4, #0x30]
+ ldr r1, [r4, #0x1c]
+ ldr r2, [r4, #0x20]
+ cmp r0, #0x0
+ beq _0205DF6E
+ add r0, r5, #0x0
+ mov r3, #0x2
+ bl FUN_0224B818
+ str r0, [r4, #0x34]
+ b _0205DF90
+_0205DF6E:
+ ldr r0, [r4, #0x24]
+ cmp r0, #0x0
+ bne _0205DF80
+ add r0, r5, #0x0
+ mov r3, #0x0
+ bl FUN_0224B818
+ str r0, [r4, #0x34]
+ b _0205DF90
+_0205DF80:
+ add r0, r5, #0x0
+ mov r3, #0x1
+ bl FUN_0224B818
+ str r0, [r4, #0x34]
+ b _0205DF90
+_0205DF8C:
+ mov r0, #0x0
+ str r0, [r4, #0x34]
+_0205DF90:
+ add r0, r6, #0x1
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ cmp r6, #0x4
+ blo _0205DF4C
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0205DF9C
+FUN_0205DF9C: ; 0x0205DF9C
+ push {r3-r7, lr}
+ mov r4, #0x0
+ add r7, r0, #0x0
+ add r6, r4, #0x0
+_0205DFA4:
+ mov r0, #0x28
+ mul r0, r6
+ add r5, r7, r0
+ ldr r0, [r5, #0x34]
+ cmp r0, #0x0
+ beq _0205DFCA
+ bl FUN_0224B86C
+ cmp r0, #0x0
+ beq _0205DFD0
+ ldr r0, [r5, #0x34]
+ bl FUN_02064520
+ mov r0, #0x0
+ str r0, [r5, #0x34]
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ b _0205DFD0
+_0205DFCA:
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+_0205DFD0:
+ add r0, r6, #0x1
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ cmp r6, #0x4
+ blo _0205DFA4
+ cmp r4, #0x4
+ blo _0205DFE2
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0205DFE2:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205DFE8
+FUN_0205DFE8: ; 0x0205DFE8
+ push {r3-r7, lr}
+ sub sp, #0x8
+ ldr r7, [sp, #0x24]
+ add r6, r0, #0x0
+ mov r12, r1
+ ldr r0, [sp, #0x28]
+ mov r1, #0x0
+ add r4, r3, #0x0
+ str r1, [r7, #0x0]
+ str r2, [sp, #0x0]
+ str r1, [r0, #0x0]
+ str r0, [sp, #0x28]
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ mov r2, r12
+ add r3, sp, #0x4
+ ldr r5, [sp, #0x20]
+ bl FUN_0205E1B8
+ cmp r0, #0x0
+ bne _0205E018
+ add sp, #0x8
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0205E018:
+ mov r0, #0x1
+ str r0, [r4, #0x18]
+ add r0, sp, #0x4
+ ldrb r1, [r0, #0x0]
+ mov r0, #0x28
+ mul r0, r1
+ add r0, r4, r0
+ ldr r1, [r0, #0x2c]
+ ldr r6, [r0, #0x24]
+ ldr r0, [r4, #0x14]
+ cmp r0, #0x0
+ bne _0205E062
+ cmp r1, #0x0
+ beq _0205E05E
+ add r0, r4, #0x4
+ bl FUN_0205E4D8
+ str r6, [r5, #0x0]
+ mov r0, #0x1
+ str r0, [r7, #0x0]
+ ldr r0, [sp, #0x0]
+ add r1, r4, #0x0
+ bl FUN_0205E1F0
+ add r0, sp, #0x4
+ ldrb r1, [r0, #0x0]
+ mov r0, #0x28
+ mul r0, r1
+ add r0, r4, r0
+ ldr r1, [r0, #0x30]
+ ldr r0, [sp, #0x28]
+ add sp, #0x8
+ str r1, [r0, #0x0]
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0205E05E:
+ str r6, [r5, #0x0]
+ b _0205E074
+_0205E062:
+ str r6, [r5, #0x0]
+ mov r0, #0x0
+ str r0, [r4, #0x14]
+ ldr r0, [sp, #0x0]
+ bl FUN_0205E258
+ add r1, r4, #0x0
+ add r1, #0xd0
+ strb r0, [r1, #0x0]
+_0205E074:
+ ldr r0, [r5, #0x0]
+ str r0, [r4, #0x0]
+ mov r0, #0x1
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205E080
+FUN_0205E080: ; 0x0205E080
+ push {r4-r6, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ cmp r4, #0x0
+ bne _0205E090
+ bl ErrorHandling
+_0205E090:
+ str r4, [r5, #0x8]
+ str r6, [r5, #0xc]
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205E098
+FUN_0205E098: ; 0x0205E098
+ ldr r3, [r0, #0x8]
+ str r3, [r1, #0x0]
+ ldr r0, [r0, #0xc]
+ str r0, [r2, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0205E0A4
+FUN_0205E0A4: ; 0x0205E0A4
+ ldr r0, [r0, #0x18]
+ bx lr
+
+ thumb_func_start FUN_0205E0A8
+FUN_0205E0A8: ; 0x0205E0A8
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ add r0, #0x90
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x10]
+ cmp r0, #0x0
+ beq _0205E126
+ ldr r0, [r7, #0x10]
+ cmp r0, #0x0
+ bne _0205E126
+ mov r6, #0x0
+ add r5, r6, #0x0
+_0205E0C0:
+ add r0, r7, #0x0
+ add r0, #0x90
+ ldr r1, [r0, #0x0]
+ add r0, r1, #0x0
+ add r0, #0x1c
+ add r4, r0, r5
+ add r0, r4, #0x0
+ add r0, #0x1c
+ add r1, #0xbc
+ bl FUN_0201B76C
+ ldr r1, [r4, #0xc]
+ cmp r1, #0x0
+ beq _0205E0E4
+ cmp r0, #0x0
+ bne _0205E0E4
+ mov r0, #0x0
+ str r0, [r4, #0xc]
+_0205E0E4:
+ add r6, r6, #0x1
+ add r5, #0x28
+ cmp r6, #0x4
+ blt _0205E0C0
+ add r0, r7, #0x0
+ add r0, #0x90
+ ldr r0, [r0, #0x0]
+ mov r2, #0x0
+ add r3, r0, #0x0
+ add r4, r2, #0x0
+ add r3, #0x1c
+_0205E0FA:
+ ldr r1, [r3, #0xc]
+ cmp r1, #0x0
+ bne _0205E102
+ add r2, r2, #0x1
+_0205E102:
+ add r4, r4, #0x1
+ add r3, #0x28
+ cmp r4, #0x4
+ blt _0205E0FA
+ cmp r2, #0x4
+ bne _0205E126
+ bl FUN_0205DD40
+ ldr r1, [r7, #0x1c]
+ add r0, r7, #0x0
+ ldr r1, [r1, #0x0]
+ bl FUN_0204AB58
+ add r1, r0, #0x0
+ add r0, r7, #0x0
+ mov r2, #0x1
+ bl FUN_0204ABDC
+_0205E126:
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0205E128
+FUN_0205E128: ; 0x0205E128
+ ldr r0, [r0, #0x10]
+ bx lr
+
+ thumb_func_start FUN_0205E12C
+FUN_0205E12C: ; 0x0205E12C
+ push {r4-r7, lr}
+ sub sp, #0xc
+ str r1, [sp, #0x4]
+ add r1, sp, #0x10
+ sub r4, r2, #0x4
+ ldrb r2, [r1, #0x10]
+ ldrb r1, [r1, #0x14]
+ ldr r5, [sp, #0x28]
+ add r4, r4, r2
+ sub r2, r3, #0x4
+ add r6, r2, r1
+ str r4, [r5, #0x0]
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ add r7, r0, #0x0
+ str r6, [r5, #0x4]
+ bl FUN_0204A6E0
+ bl FUN_0205478C
+ cmp r0, #0x0
+ beq _0205E1AE
+ lsl r0, r4, #0x10
+ str r0, [r5, #0x1c]
+ lsl r0, r6, #0x10
+ str r0, [r5, #0x24]
+ add r0, sp, #0x8
+ str r0, [sp, #0x0]
+ ldr r2, [r5, #0x1c]
+ ldr r3, [r5, #0x24]
+ add r0, r7, #0x0
+ mov r1, #0x0
+ bl FUN_0204A708
+ ldr r1, [sp, #0x4]
+ str r0, [r5, #0x20]
+ cmp r1, r0
+ beq _0205E180
+ mov r0, #0x0
+ add sp, #0xc
+ str r0, [r5, #0xc]
+ pop {r4-r7, pc}
+_0205E180:
+ asr r1, r4, #0x4
+ asr r2, r6, #0x4
+ lsr r1, r1, #0x1b
+ lsr r2, r2, #0x1b
+ add r1, r4, r1
+ add r2, r6, r2
+ ldr r0, [r7, #0x28]
+ asr r1, r1, #0x5
+ asr r2, r2, #0x5
+ bl FUN_0203451C
+ ldr r1, [r7, #0x1c]
+ ldr r1, [r1, #0x0]
+ cmp r1, r0
+ beq _0205E1A6
+ mov r0, #0x0
+ add sp, #0xc
+ str r0, [r5, #0xc]
+ pop {r4-r7, pc}
+_0205E1A6:
+ mov r0, #0x1
+ add sp, #0xc
+ str r0, [r5, #0xc]
+ pop {r4-r7, pc}
+_0205E1AE:
+ mov r0, #0x0
+ str r0, [r5, #0xc]
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205E1B8
+FUN_0205E1B8: ; 0x0205E1B8
+ push {r4-r7}
+ mov r5, #0x0
+ mov r6, #0x28
+_0205E1BE:
+ add r4, r5, #0x0
+ mul r4, r6
+ add r4, r0, r4
+ ldr r7, [r4, #0x28]
+ cmp r7, #0x0
+ beq _0205E1DE
+ ldr r7, [r4, #0x1c]
+ cmp r1, r7
+ bne _0205E1DE
+ ldr r4, [r4, #0x20]
+ cmp r2, r4
+ bne _0205E1DE
+ strb r5, [r3, #0x0]
+ mov r0, #0x1
+ pop {r4-r7}
+ bx lr
+_0205E1DE:
+ add r4, r5, #0x1
+ lsl r4, r4, #0x18
+ lsr r5, r4, #0x18
+ cmp r5, #0x4
+ blo _0205E1BE
+ mov r0, #0x0
+ pop {r4-r7}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0205E1F0
+FUN_0205E1F0: ; 0x0205E1F0
+ push {r4-r6, lr}
+ ldr r0, [r0, #0xc]
+ add r5, r1, #0x0
+ bl FUN_0202A9B0
+ bl FUN_0202A9AC
+ add r3, r5, #0x0
+ add r3, #0xd0
+ ldrb r3, [r3, #0x0]
+ add r4, r0, #0x0
+ add r1, r4, #0x2
+ lsl r6, r3, #0x2
+ ldrh r3, [r1, r6]
+ ldr r2, [r5, #0x4]
+ cmp r3, r2
+ bge _0205E256
+ strh r2, [r1, r6]
+ add r1, r5, #0x0
+ add r1, #0xd0
+ ldrb r1, [r1, #0x0]
+ ldr r2, [r5, #0x8]
+ lsl r1, r1, #0x2
+ strh r2, [r4, r1]
+ bl FUN_02245844
+ add r0, r5, #0x0
+ add r0, #0xd0
+ ldrb r0, [r0, #0x0]
+ ldr r2, [r5, #0x4]
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ ldrh r0, [r0, #0x2]
+ cmp r0, r2
+ bgt _0205E256
+ mov r1, #0x0
+ mov r3, #0x2
+_0205E23A:
+ sub r0, r3, r1
+ lsl r6, r0, #0x2
+ add r6, r4, r6
+ ldrh r6, [r6, #0x2]
+ cmp r2, r6
+ bne _0205E24C
+ add r5, #0xd0
+ strb r0, [r5, #0x0]
+ pop {r4-r6, pc}
+_0205E24C:
+ add r1, r1, #0x1
+ cmp r1, #0x3
+ blt _0205E23A
+ bl ErrorHandling
+_0205E256:
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0205E258
+FUN_0205E258: ; 0x0205E258
+ push {r3, lr}
+ ldr r0, [r0, #0xc]
+ bl FUN_0202A9B0
+ bl FUN_0202A9AC
+ mov r2, #0x0
+_0205E266:
+ lsl r1, r2, #0x2
+ ldrh r1, [r0, r1]
+ cmp r1, #0x0
+ bne _0205E272
+ add r0, r2, #0x0
+ pop {r3, pc}
+_0205E272:
+ add r1, r2, #0x1
+ lsl r1, r1, #0x18
+ lsr r2, r1, #0x18
+ cmp r2, #0x3
+ blo _0205E266
+ ldrh r2, [r0, #0x2]
+ ldrh r1, [r0, #0x6]
+ cmp r2, r1
+ blo _0205E288
+ mov r1, #0x1
+ b _0205E28A
+_0205E288:
+ mov r1, #0x0
+_0205E28A:
+ lsl r1, r1, #0x18
+ lsr r2, r1, #0x18
+ lsl r1, r2, #0x2
+ add r1, r0, r1
+ ldrh r1, [r1, #0x2]
+ ldrh r0, [r0, #0xa]
+ cmp r1, r0
+ blo _0205E29C
+ mov r2, #0x2
+_0205E29C:
+ add r0, r2, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205E2A0
+FUN_0205E2A0: ; 0x0205E2A0
+ push {r3-r7, lr}
+ sub sp, #0x8
+ ldr r3, _0205E308 ; =0x020F7374
+ add r5, r0, #0x0
+ ldrb r4, [r3, #0x0]
+ add r2, sp, #0x0
+ add r0, sp, #0x4
+ strb r4, [r2, #0x4]
+ ldrb r4, [r3, #0x1]
+ add r7, sp, #0x0
+ cmp r1, #0x1
+ strb r4, [r2, #0x5]
+ ldrb r4, [r3, #0x2]
+ strb r4, [r2, #0x6]
+ ldrb r4, [r3, #0x3]
+ strb r4, [r2, #0x7]
+ ldrb r4, [r3, #0x8]
+ strb r4, [r2, #0x0]
+ ldrb r4, [r3, #0x9]
+ strb r4, [r2, #0x1]
+ ldrb r4, [r3, #0xa]
+ strb r4, [r2, #0x2]
+ ldrb r3, [r3, #0xb]
+ strb r3, [r2, #0x3]
+ bne _0205E2D6
+ add r6, r0, #0x0
+ b _0205E2DC
+_0205E2D6:
+ cmp r1, #0x4
+ bne _0205E2DC
+ add r6, r7, #0x0
+_0205E2DC:
+ bl FUN_0201B9EC
+ mov r1, #0x29
+ lsl r1, r1, #0x4
+ blx _s32_div_f
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #0x64
+ blo _0205E2F4
+ bl ErrorHandling
+_0205E2F4:
+ ldrb r0, [r6, r5]
+ cmp r4, r0
+ bge _0205E300
+ add sp, #0x8
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0205E300:
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r3-r7, pc}
+ nop
+_0205E308: .word 0x020F7374
+
+ thumb_func_start FUN_0205E30C
+FUN_0205E30C: ; 0x0205E30C
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ bl FUN_02046528
+ add r4, r0, #0x0
+ add r0, r7, #0x0
+ bl FUN_0204652C
+ add r5, r0, #0x0
+ ldr r1, [r5, #0x0]
+ cmp r1, #0x4
+ bhi _0205E3FC
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0205E330: ; jump table (using 16-bit offset)
+ .short _0205E33A - _0205E330 - 2; case 0
+ .short _0205E3C0 - _0205E330 - 2; case 1
+ .short _0205E3CC - _0205E330 - 2; case 2
+ .short _0205E3EC - _0205E330 - 2; case 3
+ .short _0205E3DE - _0205E330 - 2; case 4
+_0205E33A:
+ ldr r0, [r4, #0x34]
+ bl FUN_02058780
+ ldr r0, [r4, #0xc]
+ bl FUN_0202A9B0
+ bl FUN_0202AB40
+ add r6, r0, #0x0
+ ldrb r0, [r6, #0x0]
+ cmp r0, #0x32
+ bhs _0205E374
+ mov r2, #0x0
+ ldr r1, _0205E400 ; =0x0000230A
+ add r0, r7, #0x0
+ add r3, r2, #0x0
+ bl FUN_02038CD8
+ add r0, r4, #0x0
+ mov r1, #0x29
+ bl FUN_02039438
+ ldrb r2, [r6, #0x0]
+ mov r1, #0x32
+ sub r1, r1, r2
+ strh r1, [r0, #0x0]
+ mov r0, #0x4
+ str r0, [r5, #0x0]
+ b _0205E3FC
+_0205E374:
+ mov r0, #0x0
+ strb r0, [r6, #0x0]
+ ldr r0, [r4, #0x38]
+ bl FUN_02055320
+ add r6, r0, #0x0
+ ldr r0, [r4, #0x38]
+ bl FUN_0205532C
+ add r3, r4, #0x0
+ add r3, #0x90
+ add r2, r0, #0x0
+ ldr r3, [r3, #0x0]
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ bl FUN_0205DD80
+ add r0, r4, #0x0
+ add r0, #0x90
+ ldr r2, [r0, #0x0]
+ ldr r0, [r2, #0x10]
+ cmp r0, #0x0
+ beq _0205E3BA
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_0205DED4
+ add r0, r4, #0x0
+ add r4, #0x90
+ ldr r1, [r4, #0x0]
+ bl FUN_0205DF44
+ mov r0, #0x1
+ str r0, [r5, #0x0]
+ b _0205E3FC
+_0205E3BA:
+ mov r0, #0x3
+ str r0, [r5, #0x0]
+ b _0205E3FC
+_0205E3C0:
+ ldr r0, _0205E404 ; =0x0000047E
+ bl FUN_0200521C
+ mov r0, #0x2
+ str r0, [r5, #0x0]
+ b _0205E3FC
+_0205E3CC:
+ add r4, #0x90
+ ldr r0, [r4, #0x0]
+ bl FUN_0205DF9C
+ cmp r0, #0x0
+ beq _0205E3FC
+ mov r0, #0x4
+ str r0, [r5, #0x0]
+ b _0205E3FC
+_0205E3DE:
+ bl FUN_02016A18
+ ldr r0, [r4, #0x34]
+ bl FUN_020587B0
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0205E3EC:
+ mov r2, #0x0
+ ldr r1, _0205E408 ; =0x0000230B
+ add r0, r7, #0x0
+ add r3, r2, #0x0
+ bl FUN_02038CD8
+ mov r0, #0x4
+ str r0, [r5, #0x0]
+_0205E3FC:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+_0205E400: .word 0x0000230A
+_0205E404: .word 0x0000047E
+_0205E408: .word 0x0000230B
+
+ thumb_func_start FUN_0205E40C
+FUN_0205E40C: ; 0x0205E40C
+ push {r3-r5, lr}
+ cmp r0, #0x0
+ bne _0205E416
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0205E416:
+ add r2, r0, #0x0
+ mov r1, #0xc8
+ ldr r0, _0205E478 ; =0x00002008
+ mul r2, r1
+ sub r5, r0, r2
+ cmp r5, #0xc8
+ bge _0205E426
+ add r5, r1, #0x0
+_0205E426:
+ lsl r0, r5, #0x10
+ lsr r0, r0, #0x10
+ bne _0205E430
+ bl ErrorHandling
+_0205E430:
+ lsl r0, r5, #0x10
+ lsr r0, r0, #0x10
+ cmp r0, #0x1
+ bhi _0205E43C
+ mov r4, #0x0
+ b _0205E46A
+_0205E43C:
+ bl FUN_0201B9EC
+ add r4, r0, #0x0
+ lsl r1, r5, #0x10
+ ldr r0, _0205E47C ; =0x0000FFFF
+ lsr r1, r1, #0x10
+ blx _s32_div_f
+ add r1, r0, #0x0
+ add r1, r1, #0x1
+ lsl r1, r1, #0x10
+ add r0, r4, #0x0
+ lsr r1, r1, #0x10
+ blx _s32_div_f
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ lsl r0, r5, #0x10
+ lsr r0, r0, #0x10
+ cmp r4, r0
+ blo _0205E46A
+ bl ErrorHandling
+_0205E46A:
+ cmp r4, #0x0
+ bne _0205E472
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0205E472:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ nop
+_0205E478: .word 0x00002008
+_0205E47C: .word 0x0000FFFF
+
+ thumb_func_start FUN_0205E480
+FUN_0205E480: ; 0x0205E480
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, #0x90
+ ldr r0, [r0, #0x0]
+ add r0, r0, #0x4
+ bl FUN_0205E4D8
+ add r0, r4, #0x0
+ add r4, #0x90
+ ldr r1, [r4, #0x0]
+ bl FUN_0205E1F0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205E49C
+FUN_0205E49C: ; 0x0205E49C
+ add r0, #0x90
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x4]
+ bx lr
+
+ thumb_func_start FUN_0205E4A4
+FUN_0205E4A4: ; 0x0205E4A4
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0xc]
+ bl FUN_0206F158
+ ldr r1, _0205E4D4 ; =0x000001AF
+ mov r2, #0x1
+ mov r3, #0x4
+ bl FUN_0206EE50
+ cmp r0, #0x1
+ bne _0205E4D0
+ ldr r0, [r4, #0xc]
+ bl FUN_0202A9B0
+ bl FUN_0202AB40
+ ldrb r1, [r0, #0x0]
+ cmp r1, #0x32
+ bhs _0205E4D0
+ add r1, r1, #0x1
+ strb r1, [r0, #0x0]
+_0205E4D0:
+ pop {r4, pc}
+ nop
+_0205E4D4: .word 0x000001AF
+
+ thumb_func_start FUN_0205E4D8
+FUN_0205E4D8: ; 0x0205E4D8
+ ldr r1, [r0, #0x0]
+ add r2, r1, #0x1
+ ldr r1, _0205E4E8 ; =0x000003E7
+ str r2, [r0, #0x0]
+ cmp r2, r1
+ ble _0205E4E6
+ str r1, [r0, #0x0]
+_0205E4E6:
+ bx lr
+ .balign 4
+_0205E4E8: .word 0x000003E7
+
+ thumb_func_start FUN_0205E4EC
+FUN_0205E4EC: ; 0x0205E4EC
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r1, #0x8
+ bl FUN_0205858C
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0205E5B4
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_02058544
+ add r0, r4, #0x0
+ bl FUN_02058848
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_020588B8
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205E518
+FUN_0205E518: ; 0x0205E518
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl FUN_020585B0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0205E5B4
+ cmp r0, #0x0
+ beq _0205E548
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_020588B8
+ ldr r6, _0205E54C ; =0x020F7388
+_0205E538:
+ ldrb r2, [r4, #0x0]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ lsl r2, r2, #0x2
+ ldr r2, [r6, r2]
+ blx r2
+ cmp r0, #0x1
+ beq _0205E538
+_0205E548:
+ pop {r4-r6, pc}
+ nop
+_0205E54C: .word 0x020F7388
+
+ thumb_func_start FUN_0205E550
+FUN_0205E550: ; 0x0205E550
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0205E554
+FUN_0205E554: ; 0x0205E554
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_02058848
+ add r0, r5, #0x0
+ bl FUN_0205886C
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0205E608
+ cmp r0, #0x1
+ bne _0205E592
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0205E63C
+ add r0, r5, #0x0
+ bl FUN_0205E698
+ cmp r0, #0x1
+ bne _0205E592
+ add r0, r5, #0x0
+ bl FUN_0205883C
+ ldrb r0, [r4, #0x0]
+ add r0, r0, #0x1
+ strb r0, [r4, #0x0]
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0205E592:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205E598
+FUN_0205E598: ; 0x0205E598
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_0205B080
+ cmp r0, #0x1
+ bne _0205E5B0
+ add r0, r5, #0x0
+ bl FUN_02058848
+ mov r0, #0x0
+ strb r0, [r4, #0x0]
+_0205E5B0:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0205E5B4
+FUN_0205E5B4: ; 0x0205E5B4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_02058578
+ bl FUN_020552A4
+ cmp r0, #0x0
+ bne _0205E5CC
+ mov r0, #0x0
+ strb r0, [r4, #0x1]
+ pop {r3-r5, pc}
+_0205E5CC:
+ ldrb r0, [r4, #0x1]
+ cmp r0, #0x0
+ bne _0205E5DA
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0205E5E0
+_0205E5DA:
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205E5E0
+FUN_0205E5E0: ; 0x0205E5E0
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ bl FUN_02058738
+ bl FUN_02055698
+ mov r1, #0x1
+ add r4, r0, #0x0
+ strb r1, [r5, #0x1]
+ bl FUN_02055320
+ strh r0, [r5, #0x2]
+ add r0, r4, #0x0
+ bl FUN_0205532C
+ strh r0, [r5, #0x4]
+ mov r0, #0xff
+ strh r0, [r5, #0x6]
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205E608
+FUN_0205E608: ; 0x0205E608
+ push {r4-r6, lr}
+ add r5, r1, #0x0
+ bl FUN_02058738
+ bl FUN_02055698
+ add r6, r0, #0x0
+ beq _0205E638
+ bl FUN_02055320
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_0205532C
+ mov r1, #0x2
+ ldrsh r1, [r5, r1]
+ cmp r4, r1
+ bne _0205E634
+ mov r1, #0x4
+ ldrsh r1, [r5, r1]
+ cmp r0, r1
+ beq _0205E638
+_0205E634:
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_0205E638:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0205E63C
+FUN_0205E63C: ; 0x0205E63C
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ bl FUN_02058738
+ bl FUN_02055698
+ add r4, r0, #0x0
+ bl FUN_02055320
+ strh r0, [r5, #0x2]
+ add r0, r4, #0x0
+ bl FUN_0205532C
+ strh r0, [r5, #0x4]
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205E65C
+FUN_0205E65C: ; 0x0205E65C
+ push {r3, lr}
+ bl FUN_02058738
+ bl FUN_02055698
+ bl FUN_02055464
+ add r1, r0, #0x0
+ sub r1, #0x58
+ cmp r1, #0x3
+ bhi _0205E694
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0205E67E: ; jump table (using 16-bit offset)
+ .short _0205E686 - _0205E67E - 2; case 0
+ .short _0205E68A - _0205E67E - 2; case 1
+ .short _0205E68E - _0205E67E - 2; case 2
+ .short _0205E692 - _0205E67E - 2; case 3
+_0205E686:
+ mov r0, #0x10
+ pop {r3, pc}
+_0205E68A:
+ mov r0, #0x11
+ pop {r3, pc}
+_0205E68E:
+ mov r0, #0x12
+ pop {r3, pc}
+_0205E692:
+ mov r0, #0x13
+_0205E694:
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205E698
+FUN_0205E698: ; 0x0205E698
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ bl FUN_02058738
+ bl FUN_02055698
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058B2C
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ bl FUN_02058B4C
+ add r7, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02055338
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02055344
+ add r4, r0, #0x0
+ ldr r0, [sp, #0x0]
+ cmp r0, r6
+ bne _0205E6D2
+ cmp r7, r4
+ beq _0205E6FA
+_0205E6D2:
+ add r0, r5, #0x0
+ bl FUN_0205E65C
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x0]
+ add r1, r7, #0x0
+ add r2, r6, #0x0
+ add r3, r4, #0x0
+ bl FUN_02059E80
+ ldr r1, [sp, #0x4]
+ bl FUN_0205AFDC
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0205AE0C
+ add sp, #0x8
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0205E6FA:
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0205E700
+FUN_0205E700: ; 0x0205E700
+ push {r3-r5, lr}
+ mov r1, #0xc
+ add r5, r0, #0x0
+ bl FUN_0205858C
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0205E854
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_02058544
+ add r0, r5, #0x0
+ bl FUN_02058848
+ mov r0, #0x0
+ strb r0, [r4, #0x1]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0205E728
+FUN_0205E728: ; 0x0205E728
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl FUN_020585B0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0205E854
+ cmp r0, #0x0
+ beq _0205E750
+ ldr r6, _0205E754 ; =0x020F7390
+_0205E740:
+ ldrb r2, [r4, #0x0]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ lsl r2, r2, #0x2
+ ldr r2, [r6, r2]
+ blx r2
+ cmp r0, #0x1
+ beq _0205E740
+_0205E750:
+ pop {r4-r6, pc}
+ nop
+_0205E754: .word 0x020F7390
+
+ thumb_func_start FUN_0205E758
+FUN_0205E758: ; 0x0205E758
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0205E75C
+FUN_0205E75C: ; 0x0205E75C
+ push {r3, lr}
+ bl FUN_020585B0
+ mov r1, #0x0
+ strb r1, [r0, #0x1]
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205E768
+FUN_0205E768: ; 0x0205E768
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_02058848
+ add r0, r5, #0x0
+ bl FUN_0205886C
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0205E8F4
+ cmp r0, #0x1
+ bne _0205E7A0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0205E940
+ cmp r0, #0x1
+ bne _0205E7A0
+ add r0, r5, #0x0
+ bl FUN_0205883C
+ ldrb r0, [r4, #0x0]
+ add r0, r0, #0x1
+ strb r0, [r4, #0x0]
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0205E7A0:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0205E7A4
+FUN_0205E7A4: ; 0x0205E7A4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_0205B080
+ cmp r0, #0x0
+ bne _0205E7B6
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0205E7B6:
+ add r0, r5, #0x0
+ bl FUN_02058848
+ mov r0, #0x0
+ strb r0, [r4, #0x0]
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205E7C4
+FUN_0205E7C4: ; 0x0205E7C4
+ push {r4-r7, lr}
+ sub sp, #0xc
+ mov r1, #0x0
+ add r4, r0, #0x0
+ str r1, [sp, #0x8]
+ bl FUN_02058488
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ bl FUN_02058450
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0205C9E8
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02058578
+ ldr r1, [sp, #0x0]
+ add r7, r0, #0x0
+ cmp r1, #0x8
+ bhi _0205E84C
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0205E7FE: ; jump table (using 16-bit offset)
+ .short _0205E84C - _0205E7FE - 2; case 0
+ .short _0205E810 - _0205E7FE - 2; case 1
+ .short _0205E810 - _0205E7FE - 2; case 2
+ .short _0205E810 - _0205E7FE - 2; case 3
+ .short _0205E810 - _0205E7FE - 2; case 4
+ .short _0205E810 - _0205E7FE - 2; case 5
+ .short _0205E810 - _0205E7FE - 2; case 6
+ .short _0205E810 - _0205E7FE - 2; case 7
+ .short _0205E810 - _0205E7FE - 2; case 8
+_0205E810:
+ add r1, sp, #0x4
+ add r2, sp, #0x8
+ mov r3, #0x1
+ bl FUN_020580F4
+ cmp r0, #0x1
+ bne _0205E84C
+_0205E81E:
+ ldr r0, [sp, #0x4]
+ cmp r4, r0
+ beq _0205E83C
+ bl FUN_02058450
+ cmp r6, r0
+ bne _0205E83C
+ ldr r0, [sp, #0x4]
+ bl FUN_0205C9E8
+ cmp r5, r0
+ bne _0205E83C
+ ldr r0, [sp, #0x4]
+ add sp, #0xc
+ pop {r4-r7, pc}
+_0205E83C:
+ add r0, r7, #0x0
+ add r1, sp, #0x4
+ add r2, sp, #0x8
+ mov r3, #0x1
+ bl FUN_020580F4
+ cmp r0, #0x1
+ beq _0205E81E
+_0205E84C:
+ mov r0, #0x0
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205E854
+FUN_0205E854: ; 0x0205E854
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ str r1, [sp, #0x0]
+ bl FUN_02058578
+ add r4, r0, #0x0
+ mov r0, #0x0
+ str r0, [sp, #0x8]
+ add r0, r5, #0x0
+ bl FUN_02058450
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0205C9E8
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ add r1, sp, #0x4
+ add r2, sp, #0x8
+ mov r3, #0x1
+ bl FUN_020580F4
+ cmp r0, #0x1
+ bne _0205E8C6
+_0205E886:
+ ldr r0, [sp, #0x4]
+ cmp r5, r0
+ beq _0205E8B6
+ bl FUN_02058450
+ cmp r7, r0
+ bne _0205E8B6
+ ldr r0, [sp, #0x4]
+ bl FUN_0205C9E8
+ cmp r6, r0
+ bne _0205E8B6
+ ldr r0, [sp, #0x0]
+ ldrb r0, [r0, #0x1]
+ cmp r0, #0x0
+ bne _0205E8B0
+ ldr r1, [sp, #0x0]
+ ldr r2, [sp, #0x4]
+ add r0, r5, #0x0
+ bl FUN_0205E8D0
+_0205E8B0:
+ add sp, #0xc
+ mov r0, #0x1
+ pop {r4-r7, pc}
+_0205E8B6:
+ add r0, r4, #0x0
+ add r1, sp, #0x4
+ add r2, sp, #0x8
+ mov r3, #0x1
+ bl FUN_020580F4
+ cmp r0, #0x1
+ beq _0205E886
+_0205E8C6:
+ ldr r1, [sp, #0x0]
+ mov r0, #0x0
+ strb r0, [r1, #0x1]
+ add sp, #0xc
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_0205E8D0
+FUN_0205E8D0: ; 0x0205E8D0
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ mov r0, #0x1
+ add r4, r2, #0x0
+ strb r0, [r5, #0x1]
+ add r0, r4, #0x0
+ bl FUN_02058B2C
+ strh r0, [r5, #0x2]
+ add r0, r4, #0x0
+ bl FUN_02058B4C
+ strh r0, [r5, #0x4]
+ mov r0, #0xff
+ strh r0, [r5, #0x6]
+ str r4, [r5, #0x8]
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205E8F4
+FUN_0205E8F4: ; 0x0205E8F4
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ ldr r5, [r1, #0x8]
+ bl FUN_02058B2C
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_02058B4C
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058B14
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02058B24
+ cmp r4, r7
+ bne _0205E91E
+ cmp r6, r0
+ beq _0205E93A
+_0205E91E:
+ add r0, r5, #0x0
+ bl FUN_02058854
+ cmp r0, #0x1
+ beq _0205E936
+ mov r1, #0x61
+ add r0, r5, #0x0
+ lsl r1, r1, #0x6
+ bl FUN_02058424
+ cmp r0, #0x0
+ bne _0205E93A
+_0205E936:
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0205E93A:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205E940
+FUN_0205E940: ; 0x0205E940
+ push {r4-r7, lr}
+ sub sp, #0xc
+ str r0, [sp, #0x0]
+ add r5, r1, #0x0
+ bl FUN_02058B2C
+ add r4, r0, #0x0
+ ldr r0, [sp, #0x0]
+ bl FUN_02058B4C
+ add r6, r0, #0x0
+ ldr r0, [r5, #0x8]
+ bl FUN_02058B2C
+ str r0, [sp, #0x8]
+ ldr r0, [r5, #0x8]
+ bl FUN_02058B4C
+ add r7, r0, #0x0
+ ldr r0, [r5, #0x8]
+ bl FUN_02058B14
+ str r0, [sp, #0x4]
+ ldr r0, [r5, #0x8]
+ bl FUN_02058B24
+ add r3, r0, #0x0
+ ldr r0, [sp, #0x8]
+ cmp r4, r0
+ bne _0205E986
+ cmp r6, r7
+ bne _0205E986
+ add sp, #0xc
+ mov r0, #0x0
+ pop {r4-r7, pc}
+_0205E986:
+ ldr r2, [sp, #0x4]
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ bl FUN_02059E80
+ add r5, r0, #0x0
+ bl FUN_02059BF4
+ add r4, r4, r0
+ add r0, r5, #0x0
+ bl FUN_02059C00
+ add r1, r6, r0
+ ldr r0, [sp, #0x8]
+ cmp r4, r0
+ bne _0205E9AA
+ cmp r1, r7
+ beq _0205E9C0
+_0205E9AA:
+ add r0, r5, #0x0
+ mov r1, #0xc
+ bl FUN_0205AFDC
+ add r1, r0, #0x0
+ ldr r0, [sp, #0x0]
+ bl FUN_0205AE0C
+ add sp, #0xc
+ mov r0, #0x1
+ pop {r4-r7, pc}
+_0205E9C0:
+ mov r0, #0x0
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205E9C8
+FUN_0205E9C8: ; 0x0205E9C8
+ push {r4-r5, lr}
+ sub sp, #0xc
+ add r5, r1, #0x0
+ add r4, r0, #0x0
+ mov r1, #0x8
+ bl FUN_0205858C
+ strb r5, [r0, #0x1]
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_02058544
+ add r0, r4, #0x0
+ bl FUN_02058848
+ mov r1, #0x1
+ add r0, r4, #0x0
+ lsl r1, r1, #0x14
+ bl FUN_02058410
+ ldr r5, _0205EA0C ; =0x020F7398
+ add r3, sp, #0x0
+ ldmia r5!, {r0-r1}
+ add r2, r3, #0x0
+ stmia r3!, {r0-r1}
+ ldr r0, [r5, #0x0]
+ add r1, r2, #0x0
+ str r0, [r3, #0x0]
+ add r0, r4, #0x0
+ bl FUN_02058B94
+ add sp, #0xc
+ pop {r4-r5, pc}
+ nop
+_0205EA0C: .word 0x020F7398
+
+ thumb_func_start FUN_0205EA10
+FUN_0205EA10: ; 0x0205EA10
+ ldr r3, _0205EA18 ; =FUN_0205E9C8
+ mov r1, #0x0
+ bx r3
+ nop
+_0205EA18: .word FUN_0205E9C8
+
+ thumb_func_start FUN_0205EA1C
+FUN_0205EA1C: ; 0x0205EA1C
+ ldr r3, _0205EA24 ; =FUN_0205E9C8
+ mov r1, #0x1
+ bx r3
+ nop
+_0205EA24: .word FUN_0205E9C8
+
+ thumb_func_start FUN_0205EA28
+FUN_0205EA28: ; 0x0205EA28
+ ldr r3, _0205EA30 ; =FUN_0205E9C8
+ mov r1, #0x2
+ bx r3
+ nop
+_0205EA30: .word FUN_0205E9C8
+
+ thumb_func_start FUN_0205EA34
+FUN_0205EA34: ; 0x0205EA34
+ ldr r3, _0205EA3C ; =FUN_0205E9C8
+ mov r1, #0x3
+ bx r3
+ nop
+_0205EA3C: .word FUN_0205E9C8
+
+ thumb_func_start FUN_0205EA40
+FUN_0205EA40: ; 0x0205EA40
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl FUN_020585B0
+ ldr r6, _0205EA60 ; =0x020F7380
+ add r4, r0, #0x0
+_0205EA4C:
+ ldrb r2, [r4, #0x0]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ lsl r2, r2, #0x2
+ ldr r2, [r6, r2]
+ blx r2
+ cmp r0, #0x1
+ beq _0205EA4C
+ pop {r4-r6, pc}
+ nop
+_0205EA60: .word 0x020F7380
+
+ thumb_func_start FUN_0205EA64
+FUN_0205EA64: ; 0x0205EA64
+ push {r3, lr}
+ bl FUN_0205EB20
+ cmp r0, #0x0
+ beq _0205EA72
+ bl FUN_021E4DE4
+_0205EA72:
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205EA74
+FUN_0205EA74: ; 0x0205EA74
+ push {r4-r5, lr}
+ sub sp, #0xc
+ add r4, r0, #0x0
+ bl FUN_020585B0
+ add r5, r0, #0x0
+ mov r1, #0x0
+ strb r1, [r5, #0x0]
+ add r0, r4, #0x0
+ bl FUN_0205EB14
+ ldrb r0, [r5, #0x2]
+ cmp r0, #0x0
+ bne _0205EAA6
+ ldr r5, _0205EAAC ; =0x020F73A4
+ add r3, sp, #0x0
+ ldmia r5!, {r0-r1}
+ add r2, r3, #0x0
+ stmia r3!, {r0-r1}
+ ldr r0, [r5, #0x0]
+ add r1, r2, #0x0
+ str r0, [r3, #0x0]
+ add r0, r4, #0x0
+ bl FUN_02058B94
+_0205EAA6:
+ add sp, #0xc
+ pop {r4-r5, pc}
+ nop
+_0205EAAC: .word 0x020F73A4
+
+ thumb_func_start FUN_0205EAB0
+FUN_0205EAB0: ; 0x0205EAB0
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ ldrb r1, [r4, #0x2]
+ add r5, r0, #0x0
+ cmp r1, #0x0
+ bne _0205EACA
+ ldrb r1, [r4, #0x1]
+ bl FUN_0224CECC
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0205EB14
+_0205EACA:
+ add r0, r5, #0x0
+ bl FUN_02058848
+ add r0, r5, #0x0
+ bl FUN_0205886C
+ ldrb r0, [r4, #0x0]
+ add r0, r0, #0x1
+ strb r0, [r4, #0x0]
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0205EAE0
+FUN_0205EAE0: ; 0x0205EAE0
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ ldrb r1, [r4, #0x2]
+ add r5, r0, #0x0
+ cmp r1, #0x0
+ bne _0205EB0E
+ bl FUN_0205EB20
+ cmp r0, #0x0
+ bne _0205EB0E
+ add r0, r5, #0x0
+ bl FUN_02058934
+ cmp r0, #0x1
+ bne _0205EB0E
+ ldrb r1, [r4, #0x1]
+ add r0, r5, #0x0
+ bl FUN_0224CECC
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0205EB14
+_0205EB0E:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205EB14
+FUN_0205EB14: ; 0x0205EB14
+ push {r4, lr}
+ add r4, r1, #0x0
+ bl FUN_020585B0
+ str r4, [r0, #0x4]
+ pop {r4, pc}
+
+ thumb_func_start FUN_0205EB20
+FUN_0205EB20: ; 0x0205EB20
+ push {r3, lr}
+ bl FUN_020585B0
+ ldr r0, [r0, #0x4]
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205EB2C
+FUN_0205EB2C: ; 0x0205EB2C
+ push {r3, lr}
+ bl FUN_020585B0
+ mov r1, #0x1
+ strb r1, [r0, #0x2]
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205EB38
+FUN_0205EB38: ; 0x0205EB38
+ push {r4-r7, lr}
+ sub sp, #0x24
+ ldr r3, _0205EBE0 ; =0x020F73B0
+ add r2, sp, #0xc
+ add r4, r0, #0x0
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ mov r1, #0x5b
+ add r0, r4, #0x0
+ lsl r1, r1, #0x2
+ bl FUN_02016998
+ mov r2, #0x5b
+ add r7, r0, #0x0
+ mov r1, #0x0
+ lsl r2, r2, #0x2
+ blx MI_CpuFill8
+ add r0, r7, #0x0
+ add r1, sp, #0xc
+ mov r2, #0x2
+ mov r3, #0xb
+ bl FUN_021D959C
+ mov r0, #0x2
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ ldr r0, _0205EBE4 ; =0x000034D8
+ mov r2, #0x0
+ str r0, [sp, #0x8]
+ add r0, r7, #0x0
+ mov r1, #0x55
+ add r3, r2, #0x0
+ bl FUN_021D967C
+ ldr r0, _0205EBE4 ; =0x000034D8
+ mov r1, #0x55
+ str r0, [sp, #0x0]
+ add r0, r7, #0x0
+ mov r2, #0x2
+ mov r3, #0x0
+ bl FUN_021D96F4
+ ldr r0, _0205EBE4 ; =0x000034D8
+ mov r1, #0x55
+ str r0, [sp, #0x0]
+ add r0, r7, #0x0
+ mov r2, #0x3
+ mov r3, #0x0
+ bl FUN_021D9708
+ mov r2, #0x1
+ ldr r0, _0205EBE4 ; =0x000034D8
+ str r2, [sp, #0x0]
+ str r0, [sp, #0x4]
+ add r0, r7, #0x0
+ mov r1, #0x55
+ mov r3, #0x0
+ bl FUN_021D971C
+ ldr r4, _0205EBE8 ; =0x020F73C8
+ mov r6, #0x0
+ add r5, r7, #0x0
+_0205EBC0:
+ add r0, r7, #0x0
+ add r1, r4, #0x0
+ bl FUN_021D9820
+ mov r1, #0x59
+ lsl r1, r1, #0x2
+ str r0, [r5, r1]
+ add r6, r6, #0x1
+ add r4, #0x34
+ add r5, r5, #0x4
+ cmp r6, #0x2
+ blo _0205EBC0
+ add r0, r7, #0x0
+ add sp, #0x24
+ pop {r4-r7, pc}
+ nop
+_0205EBE0: .word 0x020F73B0
+_0205EBE4: .word 0x000034D8
+_0205EBE8: .word 0x020F73C8
+
+ thumb_func_start FUN_0205EBEC
+FUN_0205EBEC: ; 0x0205EBEC
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ mov r6, #0x59
+ mov r4, #0x0
+ add r5, r7, #0x0
+ lsl r6, r6, #0x2
+_0205EBF8:
+ ldr r0, [r5, r6]
+ cmp r0, #0x0
+ beq _0205EC02
+ bl FUN_0200C3DC
+_0205EC02:
+ add r4, r4, #0x1
+ add r5, r5, #0x4
+ cmp r4, #0x2
+ blt _0205EBF8
+ add r0, r7, #0x0
+ bl FUN_021D99F8
+ add r0, r7, #0x0
+ bl FUN_02016A18
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0205EC18
+FUN_0205EC18: ; 0x0205EC18
+ push {r3-r7, lr}
+ mov r7, #0x1
+ mov r6, #0x59
+ str r0, [sp, #0x0]
+ mov r4, #0x0
+ add r5, r0, #0x0
+ lsl r7, r7, #0xc
+ lsl r6, r6, #0x2
+_0205EC28:
+ ldr r0, [r5, r6]
+ cmp r0, #0x0
+ beq _0205EC36
+ ldr r0, [r0, #0x0]
+ add r1, r7, #0x0
+ bl FUN_020201E4
+_0205EC36:
+ add r4, r4, #0x1
+ add r5, r5, #0x4
+ cmp r4, #0x2
+ blt _0205EC28
+ ldr r0, [sp, #0x0]
+ ldr r0, [r0, #0x0]
+ bl FUN_0201FDEC
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0205EC48
+FUN_0205EC48: ; 0x0205EC48
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ mov r0, #0x59
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ add r4, r1, #0x0
+ add r6, r3, #0x0
+ bl FUN_0200C714
+ mov r0, #0x5a
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_0200C714
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205EC6C
+FUN_0205EC6C: ; 0x0205EC6C
+ push {r3, lr}
+ cmp r1, #0x2
+ bhs _0205EC82
+ lsl r1, r1, #0x2
+ add r1, r0, r1
+ mov r0, #0x59
+ lsl r0, r0, #0x2
+ ldr r0, [r1, r0]
+ add r1, r2, #0x0
+ bl FUN_0200C644
+_0205EC82:
+ pop {r3, pc}
+
+ thumb_func_start FUN_0205EC84
+FUN_0205EC84: ; 0x0205EC84
+ ldr r3, _0205EC88 ; =FUN_020462E4
+ bx r3
+ .balign 4
+_0205EC88: .word FUN_020462E4
+
+ thumb_func_start FUN_0205EC8C
+FUN_0205EC8C: ; 0x0205EC8C
+ ldr r3, _0205EC90 ; =FUN_0204630C
+ bx r3
+ .balign 4
+_0205EC90: .word FUN_0204630C
+
+ thumb_func_start FUN_0205EC94
+FUN_0205EC94: ; 0x0205EC94
+ ldr r3, _0205EC98 ; =FUN_020462B8
+ bx r3
+ .balign 4
+_0205EC98: .word FUN_020462B8
+
+ thumb_func_start FUN_0205EC9C
+FUN_0205EC9C: ; 0x0205EC9C
+ push {r3, lr}
+ cmp r1, #0x0
+ beq _0205ECB6
+ cmp r1, #0x1
+ beq _0205ECAC
+ cmp r1, #0x2
+ beq _0205ECC0
+ b _0205ECCA
+_0205ECAC:
+ lsl r1, r2, #0x10
+ lsr r1, r1, #0x10
+ bl FUN_0205EC84
+ b _0205ECCE
+_0205ECB6:
+ lsl r1, r2, #0x10
+ lsr r1, r1, #0x10
+ bl FUN_0205EC8C
+ b _0205ECCE
+_0205ECC0:
+ lsl r1, r2, #0x10
+ lsr r1, r1, #0x10
+ bl FUN_0205EC94
+ pop {r3, pc}
+_0205ECCA:
+ bl ErrorHandling
+_0205ECCE:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205ECD4
+FUN_0205ECD4: ; 0x0205ECD4
+ ldr r3, _0205ECDC ; =FUN_0205EC84
+ mov r1, #0x96
+ lsl r1, r1, #0x4
+ bx r3
+ .balign 4
+_0205ECDC: .word FUN_0205EC84
+
+ thumb_func_start FUN_0205ECE0
+FUN_0205ECE0: ; 0x0205ECE0
+ ldr r3, _0205ECE8 ; =FUN_0205EC94
+ mov r1, #0x96
+ lsl r1, r1, #0x4
+ bx r3
+ .balign 4
+_0205ECE8: .word FUN_0205EC94
+
+ thumb_func_start FUN_0205ECEC
+FUN_0205ECEC: ; 0x0205ECEC
+ ldr r3, _0205ECF4 ; =FUN_0205EC94
+ ldr r1, _0205ECF8 ; =0x0000098D
+ bx r3
+ nop
+_0205ECF4: .word FUN_0205EC94
+_0205ECF8: .word 0x0000098D
+
+ thumb_func_start FUN_0205ECFC
+FUN_0205ECFC: ; 0x0205ECFC
+ ldr r3, _0205ED04 ; =FUN_0205EC84
+ ldr r1, _0205ED08 ; =0x00000964
+ bx r3
+ nop
+_0205ED04: .word FUN_0205EC84
+_0205ED08: .word 0x00000964
+
+ thumb_func_start FUN_0205ED0C
+FUN_0205ED0C: ; 0x0205ED0C
+ ldr r3, _0205ED14 ; =FUN_0205EC94
+ ldr r1, _0205ED18 ; =0x00000964
+ bx r3
+ nop
+_0205ED14: .word FUN_0205EC94
+_0205ED18: .word 0x00000964
+
+ thumb_func_start FUN_0205ED1C
+FUN_0205ED1C: ; 0x0205ED1C
+ ldr r3, _0205ED24 ; =FUN_0205EC84
+ ldr r1, _0205ED28 ; =0x00000961
+ bx r3
+ nop
+_0205ED24: .word FUN_0205EC84
+_0205ED28: .word 0x00000961
+
+ thumb_func_start FUN_0205ED2C
+FUN_0205ED2C: ; 0x0205ED2C
+ ldr r3, _0205ED34 ; =FUN_0205EC8C
+ ldr r1, _0205ED38 ; =0x00000961
+ bx r3
+ nop
+_0205ED34: .word FUN_0205EC8C
+_0205ED38: .word 0x00000961
+
+ thumb_func_start FUN_0205ED3C
+FUN_0205ED3C: ; 0x0205ED3C
+ ldr r3, _0205ED44 ; =FUN_0205EC94
+ ldr r1, _0205ED48 ; =0x00000961
+ bx r3
+ nop
+_0205ED44: .word FUN_0205EC94
+_0205ED48: .word 0x00000961
+
+ thumb_func_start FUN_0205ED4C
+FUN_0205ED4C: ; 0x0205ED4C
+ ldr r3, _0205ED54 ; =FUN_0205EC84
+ ldr r1, _0205ED58 ; =0x00000965
+ bx r3
+ nop
+_0205ED54: .word FUN_0205EC84
+_0205ED58: .word 0x00000965
+
+ thumb_func_start FUN_0205ED5C
+FUN_0205ED5C: ; 0x0205ED5C
+ ldr r3, _0205ED64 ; =FUN_0205EC8C
+ ldr r1, _0205ED68 ; =0x00000965
+ bx r3
+ nop
+_0205ED64: .word FUN_0205EC8C
+_0205ED68: .word 0x00000965
+
+ thumb_func_start FUN_0205ED6C
+FUN_0205ED6C: ; 0x0205ED6C
+ ldr r3, _0205ED74 ; =FUN_0205EC94
+ ldr r1, _0205ED78 ; =0x00000965
+ bx r3
+ nop
+_0205ED74: .word FUN_0205EC94
+_0205ED78: .word 0x00000965
+
+ thumb_func_start FUN_0205ED7C
+FUN_0205ED7C: ; 0x0205ED7C
+ ldr r3, _0205ED84 ; =FUN_0205EC84
+ ldr r1, _0205ED88 ; =0x0000096D
+ bx r3
+ nop
+_0205ED84: .word FUN_0205EC84
+_0205ED88: .word 0x0000096D
+
+ thumb_func_start FUN_0205ED8C
+FUN_0205ED8C: ; 0x0205ED8C
+ ldr r3, _0205ED94 ; =FUN_0205EC8C
+ ldr r1, _0205ED98 ; =0x0000096D
+ bx r3
+ nop
+_0205ED94: .word FUN_0205EC8C
+_0205ED98: .word 0x0000096D
+
+ thumb_func_start FUN_0205ED9C
+FUN_0205ED9C: ; 0x0205ED9C
+ ldr r3, _0205EDA4 ; =FUN_0205EC94
+ ldr r1, _0205EDA8 ; =0x0000096D
+ bx r3
+ nop
+_0205EDA4: .word FUN_0205EC94
+_0205EDA8: .word 0x0000096D
+
+ thumb_func_start FUN_0205EDAC
+FUN_0205EDAC: ; 0x0205EDAC
+ ldr r3, _0205EDB4 ; =FUN_0205EC84
+ ldr r1, _0205EDB8 ; =0x0000096E
+ bx r3
+ nop
+_0205EDB4: .word FUN_0205EC84
+_0205EDB8: .word 0x0000096E
+
+ thumb_func_start FUN_0205EDBC
+FUN_0205EDBC: ; 0x0205EDBC
+ ldr r3, _0205EDC4 ; =FUN_0205EC84
+ ldr r1, _0205EDC8 ; =0x0000096F
+ bx r3
+ nop
+_0205EDC4: .word FUN_0205EC84
+_0205EDC8: .word 0x0000096F
+
+ thumb_func_start FUN_0205EDCC
+FUN_0205EDCC: ; 0x0205EDCC
+ ldr r3, _0205EDD4 ; =FUN_0205EC84
+ mov r1, #0x97
+ lsl r1, r1, #0x4
+ bx r3
+ .balign 4
+_0205EDD4: .word FUN_0205EC84
+
+ thumb_func_start FUN_0205EDD8
+FUN_0205EDD8: ; 0x0205EDD8
+ ldr r3, _0205EDE0 ; =FUN_0205EC84
+ ldr r1, _0205EDE4 ; =0x00000971
+ bx r3
+ nop
+_0205EDE0: .word FUN_0205EC84
+_0205EDE4: .word 0x00000971
+
+ thumb_func_start FUN_0205EDE8
+FUN_0205EDE8: ; 0x0205EDE8
+ ldr r3, _0205EDF0 ; =FUN_0205EC84
+ ldr r1, _0205EDF4 ; =0x00000972
+ bx r3
+ nop
+_0205EDF0: .word FUN_0205EC84
+_0205EDF4: .word 0x00000972
+
+ thumb_func_start FUN_0205EDF8
+FUN_0205EDF8: ; 0x0205EDF8
+ ldr r3, _0205EE00 ; =FUN_0205EC84
+ ldr r1, _0205EE04 ; =0x00000973
+ bx r3
+ nop
+_0205EE00: .word FUN_0205EC84
+_0205EE04: .word 0x00000973
+
+ thumb_func_start FUN_0205EE08
+FUN_0205EE08: ; 0x0205EE08
+ push {r3, lr}
+ cmp r1, #0x4
+ bhi _0205EE4A
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0205EE1A: ; jump table (using 16-bit offset)
+ .short _0205EE24 - _0205EE1A - 2; case 0
+ .short _0205EE2C - _0205EE1A - 2; case 1
+ .short _0205EE34 - _0205EE1A - 2; case 2
+ .short _0205EE3C - _0205EE1A - 2; case 3
+ .short _0205EE44 - _0205EE1A - 2; case 4
+_0205EE24:
+ ldr r1, _0205EE4C ; =0x00000968
+ bl FUN_0205EC84
+ pop {r3, pc}
+_0205EE2C:
+ ldr r1, _0205EE50 ; =0x00000969
+ bl FUN_0205EC84
+ pop {r3, pc}
+_0205EE34:
+ ldr r1, _0205EE54 ; =0x0000096A
+ bl FUN_0205EC84
+ pop {r3, pc}
+_0205EE3C:
+ ldr r1, _0205EE58 ; =0x0000096B
+ bl FUN_0205EC84
+ pop {r3, pc}
+_0205EE44:
+ ldr r1, _0205EE5C ; =0x0000096C
+ bl FUN_0205EC84
+_0205EE4A:
+ pop {r3, pc}
+ .balign 4
+_0205EE4C: .word 0x00000968
+_0205EE50: .word 0x00000969
+_0205EE54: .word 0x0000096A
+_0205EE58: .word 0x0000096B
+_0205EE5C: .word 0x0000096C
+
+ thumb_func_start FUN_0205EE60
+FUN_0205EE60: ; 0x0205EE60
+ push {r3, lr}
+ cmp r1, #0x4
+ bhi _0205EEA2
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0205EE72: ; jump table (using 16-bit offset)
+ .short _0205EE7C - _0205EE72 - 2; case 0
+ .short _0205EE84 - _0205EE72 - 2; case 1
+ .short _0205EE8C - _0205EE72 - 2; case 2
+ .short _0205EE94 - _0205EE72 - 2; case 3
+ .short _0205EE9C - _0205EE72 - 2; case 4
+_0205EE7C:
+ ldr r1, _0205EEA4 ; =0x00000968
+ bl FUN_0205EC94
+ pop {r3, pc}
+_0205EE84:
+ ldr r1, _0205EEA8 ; =0x00000969
+ bl FUN_0205EC94
+ pop {r3, pc}
+_0205EE8C:
+ ldr r1, _0205EEAC ; =0x0000096A
+ bl FUN_0205EC94
+ pop {r3, pc}
+_0205EE94:
+ ldr r1, _0205EEB0 ; =0x0000096B
+ bl FUN_0205EC94
+ pop {r3, pc}
+_0205EE9C:
+ ldr r1, _0205EEB4 ; =0x0000096C
+ bl FUN_0205EC94
+_0205EEA2:
+ pop {r3, pc}
+ .balign 4
+_0205EEA4: .word 0x00000968
+_0205EEA8: .word 0x00000969
+_0205EEAC: .word 0x0000096A
+_0205EEB0: .word 0x0000096B
+_0205EEB4: .word 0x0000096C
+
+ thumb_func_start FUN_0205EEB8
+FUN_0205EEB8: ; 0x0205EEB8
+ push {r3, lr}
+ mov r2, #0x0
+ cmp r1, #0x5
+ bhi _0205EF0A
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0205EECC: ; jump table (using 16-bit offset)
+ .short _0205EF0A - _0205EECC - 2; case 0
+ .short _0205EED8 - _0205EECC - 2; case 1
+ .short _0205EEE2 - _0205EECC - 2; case 2
+ .short _0205EEEE - _0205EECC - 2; case 3
+ .short _0205EEF8 - _0205EECC - 2; case 4
+ .short _0205EF02 - _0205EECC - 2; case 5
+_0205EED8:
+ ldr r1, _0205EF10 ; =0x0000097F
+ bl FUN_0205EC94
+ add r2, r0, #0x0
+ b _0205EF0A
+_0205EEE2:
+ mov r1, #0x26
+ lsl r1, r1, #0x6
+ bl FUN_0205EC94
+ add r2, r0, #0x0
+ b _0205EF0A
+_0205EEEE:
+ ldr r1, _0205EF14 ; =0x00000981
+ bl FUN_0205EC94
+ add r2, r0, #0x0
+ b _0205EF0A
+_0205EEF8:
+ ldr r1, _0205EF18 ; =0x00000982
+ bl FUN_0205EC94
+ add r2, r0, #0x0
+ b _0205EF0A
+_0205EF02:
+ ldr r1, _0205EF1C ; =0x00000983
+ bl FUN_0205EC94
+ add r2, r0, #0x0
+_0205EF0A:
+ add r0, r2, #0x0
+ pop {r3, pc}
+ nop
+_0205EF10: .word 0x0000097F
+_0205EF14: .word 0x00000981
+_0205EF18: .word 0x00000982
+_0205EF1C: .word 0x00000983
+
+ thumb_func_start FUN_0205EF20
+FUN_0205EF20: ; 0x0205EF20
+ push {r4-r6, lr}
+ add r4, r1, #0x0
+ ldr r1, _0205F0E4 ; =0x00000132
+ add r6, r0, #0x0
+ mov r5, #0x0
+ cmp r4, r1
+ bgt _0205EF7E
+ blt _0205EF32
+ b _0205F036
+_0205EF32:
+ cmp r4, #0xc9
+ bgt _0205EF60
+ blt _0205EF3A
+ b _0205F084
+_0205EF3A:
+ cmp r4, #0x4b
+ bgt _0205EF58
+ add r1, r4, #0x0
+ sub r1, #0x48
+ bmi _0205EF5E
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0205EF50: ; jump table (using 16-bit offset)
+ .short _0205F06A - _0205EF50 - 2; case 0
+ .short _0205F06A - _0205EF50 - 2; case 1
+ .short _0205F06A - _0205EF50 - 2; case 2
+ .short _0205F06A - _0205EF50 - 2; case 3
+_0205EF58:
+ cmp r4, #0xb9
+ bne _0205EF5E
+ b _0205F0D2
+_0205EF5E:
+ b _0205F0E0
+_0205EF60:
+ add r2, r1, #0x0
+ sub r2, #0x32
+ cmp r4, r2
+ bgt _0205EF76
+ sub r1, #0x32
+ cmp r4, r1
+ blt _0205EF70
+ b _0205F09E
+_0205EF70:
+ cmp r4, #0xfb
+ beq _0205F018
+ b _0205F0E0
+_0205EF76:
+ sub r0, r1, #0x1
+ cmp r4, r0
+ beq _0205F036
+ b _0205F0E0
+_0205EF7E:
+ add r2, r1, #0x0
+ add r2, #0x5d
+ cmp r4, r2
+ bgt _0205EFC8
+ add r2, r1, #0x0
+ add r2, #0x5d
+ cmp r4, r2
+ blt _0205EF90
+ b _0205F0B8
+_0205EF90:
+ add r2, r1, #0x1
+ cmp r4, r2
+ bgt _0205EF9E
+ add r0, r2, #0x0
+ cmp r4, r0
+ beq _0205F036
+ b _0205F0E0
+_0205EF9E:
+ add r1, r1, #0x2
+ sub r1, r4, r1
+ cmp r1, #0xa
+ bhi _0205EFD6
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0205EFB2: ; jump table (using 16-bit offset)
+ .short _0205F036 - _0205EFB2 - 2; case 0
+ .short _0205F036 - _0205EFB2 - 2; case 1
+ .short _0205F036 - _0205EFB2 - 2; case 2
+ .short _0205F0E0 - _0205EFB2 - 2; case 3
+ .short _0205EFFC - _0205EFB2 - 2; case 4
+ .short _0205F0E0 - _0205EFB2 - 2; case 5
+ .short _0205EFE0 - _0205EFB2 - 2; case 6
+ .short _0205F0E0 - _0205EFB2 - 2; case 7
+ .short _0205EFEE - _0205EFB2 - 2; case 8
+ .short _0205F0E0 - _0205EFB2 - 2; case 9
+ .short _0205F00A - _0205EFB2 - 2; case 10
+_0205EFC8:
+ ldr r0, _0205F0E8 ; =0x000001EE
+ cmp r4, r0
+ bgt _0205EFD8
+ bge _0205F036
+ sub r0, #0x48
+ cmp r4, r0
+ beq _0205F026
+_0205EFD6:
+ b _0205F0E0
+_0205EFD8:
+ add r0, r0, #0x3
+ cmp r4, r0
+ beq _0205F036
+ b _0205F0E0
+_0205EFE0:
+ ldr r1, _0205F0EC ; =0x00000984
+ bl FUN_0205EC94
+ cmp r0, #0x1
+ bne _0205F0E0
+ ldr r5, _0205F0F0 ; =0x0000042E
+ b _0205F0E0
+_0205EFEE:
+ ldr r1, _0205F0EC ; =0x00000984
+ bl FUN_0205EC94
+ cmp r0, #0x1
+ bne _0205F0E0
+ ldr r5, _0205F0F4 ; =0x00000429
+ b _0205F0E0
+_0205EFFC:
+ ldr r1, _0205F0F8 ; =0x0000098E
+ bl FUN_0205EC94
+ cmp r0, #0x1
+ bne _0205F0E0
+ ldr r5, _0205F0F0 ; =0x0000042E
+ b _0205F0E0
+_0205F00A:
+ ldr r1, _0205F0FC ; =0x0000098F
+ bl FUN_0205EC94
+ cmp r0, #0x1
+ bne _0205F0E0
+ ldr r5, _0205F0F0 ; =0x0000042E
+ b _0205F0E0
+_0205F018:
+ ldr r1, _0205F100 ; =0x00000995
+ bl FUN_0205EC94
+ cmp r0, #0x1
+ bne _0205F0E0
+ ldr r5, _0205F104 ; =0x0000042D
+ b _0205F0E0
+_0205F026:
+ ldr r1, _0205F108 ; =0x00000993
+ add r0, r6, #0x0
+ bl FUN_0205EC94
+ cmp r0, #0x1
+ bne _0205F0E0
+ ldr r5, _0205F10C ; =0x0000044A
+ b _0205F0E0
+_0205F036:
+ ldr r1, _0205F110 ; =0x00000985
+ add r0, r6, #0x0
+ bl FUN_0205EC94
+ cmp r0, #0x1
+ bne _0205F054
+ bl FUN_0201277C
+ cmp r0, #0x0
+ bne _0205F050
+ mov r5, #0xfe
+ lsl r5, r5, #0x2
+ b _0205F0E0
+_0205F050:
+ ldr r5, _0205F114 ; =0x00000415
+ b _0205F0E0
+_0205F054:
+ ldr r0, _0205F118 ; =0x00000131
+ cmp r4, r0
+ bne _0205F0E0
+ ldr r1, _0205F11C ; =0x00000986
+ add r0, r6, #0x0
+ bl FUN_0205EC94
+ cmp r0, #0x1
+ bne _0205F0E0
+ ldr r5, _0205F120 ; =0x0000042B
+ b _0205F0E0
+_0205F06A:
+ ldr r1, _0205F124 ; =0x00000987
+ bl FUN_0205EC94
+ cmp r0, #0x1
+ bne _0205F0E0
+ bl FUN_0201277C
+ cmp r0, #0x0
+ bne _0205F080
+ ldr r5, _0205F128 ; =0x000003F5
+ b _0205F0E0
+_0205F080:
+ ldr r5, _0205F12C ; =0x00000412
+ b _0205F0E0
+_0205F084:
+ ldr r1, _0205F130 ; =0x00000988
+ bl FUN_0205EC94
+ cmp r0, #0x1
+ bne _0205F0E0
+ bl FUN_0201277C
+ cmp r0, #0x0
+ bne _0205F09A
+ ldr r5, _0205F134 ; =0x000003FF
+ b _0205F0E0
+_0205F09A:
+ ldr r5, _0205F138 ; =0x0000041C
+ b _0205F0E0
+_0205F09E:
+ ldr r1, _0205F13C ; =0x00000989
+ bl FUN_0205EC94
+ cmp r0, #0x1
+ bne _0205F0E0
+ bl FUN_0201277C
+ cmp r0, #0x0
+ bne _0205F0B4
+ ldr r5, _0205F140 ; =0x000003EE
+ b _0205F0E0
+_0205F0B4:
+ ldr r5, _0205F144 ; =0x0000040B
+ b _0205F0E0
+_0205F0B8:
+ ldr r1, _0205F148 ; =0x0000098A
+ bl FUN_0205EC94
+ cmp r0, #0x1
+ bne _0205F0E0
+ bl FUN_0201277C
+ cmp r0, #0x0
+ bne _0205F0CE
+ ldr r5, _0205F140 ; =0x000003EE
+ b _0205F0E0
+_0205F0CE:
+ ldr r5, _0205F144 ; =0x0000040B
+ b _0205F0E0
+_0205F0D2:
+ ldr r1, _0205F14C ; =0x0000098B
+ add r0, r6, #0x0
+ bl FUN_0205EC94
+ cmp r0, #0x1
+ bne _0205F0E0
+ ldr r5, _0205F150 ; =0x000003E9
+_0205F0E0:
+ add r0, r5, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+_0205F0E4: .word 0x00000132
+_0205F0E8: .word 0x000001EE
+_0205F0EC: .word 0x00000984
+_0205F0F0: .word 0x0000042E
+_0205F0F4: .word 0x00000429
+_0205F0F8: .word 0x0000098E
+_0205F0FC: .word 0x0000098F
+_0205F100: .word 0x00000995
+_0205F104: .word 0x0000042D
+_0205F108: .word 0x00000993
+_0205F10C: .word 0x0000044A
+_0205F110: .word 0x00000985
+_0205F114: .word 0x00000415
+_0205F118: .word 0x00000131
+_0205F11C: .word 0x00000986
+_0205F120: .word 0x0000042B
+_0205F124: .word 0x00000987
+_0205F128: .word 0x000003F5
+_0205F12C: .word 0x00000412
+_0205F130: .word 0x00000988
+_0205F134: .word 0x000003FF
+_0205F138: .word 0x0000041C
+_0205F13C: .word 0x00000989
+_0205F140: .word 0x000003EE
+_0205F144: .word 0x0000040B
+_0205F148: .word 0x0000098A
+_0205F14C: .word 0x0000098B
+_0205F150: .word 0x000003E9
+
+ thumb_func_start FUN_0205F154
+FUN_0205F154: ; 0x0205F154
+ ldr r3, _0205F15C ; =FUN_0205EC84
+ ldr r1, _0205F160 ; =0x00000966
+ bx r3
+ nop
+_0205F15C: .word FUN_0205EC84
+_0205F160: .word 0x00000966
+
+ thumb_func_start FUN_0205F164
+FUN_0205F164: ; 0x0205F164
+ ldr r3, _0205F16C ; =FUN_0205EC8C
+ ldr r1, _0205F170 ; =0x00000966
+ bx r3
+ nop
+_0205F16C: .word FUN_0205EC8C
+_0205F170: .word 0x00000966
+
+ thumb_func_start FUN_0205F174
+FUN_0205F174: ; 0x0205F174
+ ldr r3, _0205F17C ; =FUN_0205EC94
+ ldr r1, _0205F180 ; =0x00000966
+ bx r3
+ nop
+_0205F17C: .word FUN_0205EC94
+_0205F180: .word 0x00000966
+
+ thumb_func_start FUN_0205F184
+FUN_0205F184: ; 0x0205F184
+ ldr r3, _0205F18C ; =FUN_0205EC94
+ ldr r1, _0205F190 ; =0x00000978
+ bx r3
+ nop
+_0205F18C: .word FUN_0205EC94
+_0205F190: .word 0x00000978
+
+ thumb_func_start FUN_0205F194
+FUN_0205F194: ; 0x0205F194
+ ldr r3, _0205F19C ; =FUN_0205EC94
+ ldr r1, _0205F1A0 ; =0x00000992
+ bx r3
+ nop
+_0205F19C: .word FUN_0205EC94
+_0205F1A0: .word 0x00000992
+
+ thumb_func_start FUN_0205F1A4
+FUN_0205F1A4: ; 0x0205F1A4
+ ldr r3, _0205F1AC ; =FUN_0205EC94
+ ldr r1, _0205F1B0 ; =0x0000097D
+ bx r3
+ nop
+_0205F1AC: .word FUN_0205EC94
+_0205F1B0: .word 0x0000097D
+
+ thumb_func_start FUN_0205F1B4
+FUN_0205F1B4: ; 0x0205F1B4
+ ldr r3, _0205F1BC ; =FUN_0205EC94
+ ldr r1, _0205F1C0 ; =0x0000097E
+ bx r3
+ nop
+_0205F1BC: .word FUN_0205EC94
+_0205F1C0: .word 0x0000097E
+
+ thumb_func_start FUN_0205F1C4
+FUN_0205F1C4: ; 0x0205F1C4
+ ldr r3, _0205F1CC ; =FUN_0205EC84
+ ldr r1, _0205F1D0 ; =0x0000097C
+ bx r3
+ nop
+_0205F1CC: .word FUN_0205EC84
+_0205F1D0: .word 0x0000097C
+
+ thumb_func_start FUN_0205F1D4
+FUN_0205F1D4: ; 0x0205F1D4
+ ldr r3, _0205F1DC ; =FUN_0205EC8C
+ ldr r1, _0205F1E0 ; =0x0000097C
+ bx r3
+ nop
+_0205F1DC: .word FUN_0205EC8C
+_0205F1E0: .word 0x0000097C
+
+ thumb_func_start FUN_0205F1E4
+FUN_0205F1E4: ; 0x0205F1E4
+ ldr r3, _0205F1EC ; =FUN_0205EC94
+ ldr r1, _0205F1F0 ; =0x0000097C
+ bx r3
+ nop
+_0205F1EC: .word FUN_0205EC94
+_0205F1F0: .word 0x0000097C
+
+ thumb_func_start FUN_0205F1F4
+FUN_0205F1F4: ; 0x0205F1F4
+ ldr r3, _0205F1FC ; =FUN_0205EC84
+ ldr r1, _0205F200 ; =0x00000967
+ bx r3
+ nop
+_0205F1FC: .word FUN_0205EC84
+_0205F200: .word 0x00000967
+
+ thumb_func_start FUN_0205F204
+FUN_0205F204: ; 0x0205F204
+ ldr r3, _0205F20C ; =FUN_0205EC8C
+ ldr r1, _0205F210 ; =0x00000967
+ bx r3
+ nop
+_0205F20C: .word FUN_0205EC8C
+_0205F210: .word 0x00000967
+
+ thumb_func_start FUN_0205F214
+FUN_0205F214: ; 0x0205F214
+ ldr r3, _0205F21C ; =FUN_0205EC94
+ ldr r1, _0205F220 ; =0x00000967
+ bx r3
+ nop
+_0205F21C: .word FUN_0205EC94
+_0205F220: .word 0x00000967
+
+ thumb_func_start FUN_0205F224
+FUN_0205F224: ; 0x0205F224
+ ldr r3, _0205F22C ; =FUN_0205EC84
+ ldr r1, _0205F230 ; =0x00000979
+ bx r3
+ nop
+_0205F22C: .word FUN_0205EC84
+_0205F230: .word 0x00000979
+
+ thumb_func_start FUN_0205F234
+FUN_0205F234: ; 0x0205F234
+ ldr r3, _0205F23C ; =FUN_0205EC8C
+ ldr r1, _0205F240 ; =0x00000979
+ bx r3
+ nop
+_0205F23C: .word FUN_0205EC8C
+_0205F240: .word 0x00000979
+
+ thumb_func_start FUN_0205F244
+FUN_0205F244: ; 0x0205F244
+ ldr r3, _0205F24C ; =FUN_0205EC94
+ ldr r1, _0205F250 ; =0x00000979
+ bx r3
+ nop
+_0205F24C: .word FUN_0205EC94
+_0205F250: .word 0x00000979
+
+ thumb_func_start FUN_0205F254
+FUN_0205F254: ; 0x0205F254
+ ldr r3, _0205F25C ; =FUN_0205EC8C
+ ldr r1, _0205F260 ; =0x00000994
+ bx r3
+ nop
+_0205F25C: .word FUN_0205EC8C
+_0205F260: .word 0x00000994
+
+ thumb_func_start FUN_0205F264
+FUN_0205F264: ; 0x0205F264
+ ldr r3, _0205F26C ; =FUN_0205EC9C
+ ldr r2, _0205F270 ; =0x00000962
+ bx r3
+ nop
+_0205F26C: .word FUN_0205EC9C
+_0205F270: .word 0x00000962
+
+ thumb_func_start FUN_0205F274
+FUN_0205F274: ; 0x0205F274
+ ldr r3, _0205F27C ; =FUN_0205EC84
+ ldr r1, _0205F280 ; =0x0000097A
+ bx r3
+ nop
+_0205F27C: .word FUN_0205EC84
+_0205F280: .word 0x0000097A
+
+ thumb_func_start FUN_0205F284
+FUN_0205F284: ; 0x0205F284
+ ldr r3, _0205F28C ; =FUN_0205EC8C
+ ldr r1, _0205F290 ; =0x0000097A
+ bx r3
+ nop
+_0205F28C: .word FUN_0205EC8C
+_0205F290: .word 0x0000097A
+
+ thumb_func_start FUN_0205F294
+FUN_0205F294: ; 0x0205F294
+ ldr r3, _0205F29C ; =FUN_0205EC94
+ ldr r1, _0205F2A0 ; =0x0000097A
+ bx r3
+ nop
+_0205F29C: .word FUN_0205EC94
+_0205F2A0: .word 0x0000097A
+
+ thumb_func_start FUN_0205F2A4
+FUN_0205F2A4: ; 0x0205F2A4
+ ldr r3, _0205F2AC ; =FUN_0205EC84
+ ldr r1, _0205F2B0 ; =0x0000097B
+ bx r3
+ nop
+_0205F2AC: .word FUN_0205EC84
+_0205F2B0: .word 0x0000097B
+
+ thumb_func_start FUN_0205F2B4
+FUN_0205F2B4: ; 0x0205F2B4
+ ldr r3, _0205F2BC ; =FUN_0205EC8C
+ ldr r1, _0205F2C0 ; =0x0000097B
+ bx r3
+ nop
+_0205F2BC: .word FUN_0205EC8C
+_0205F2C0: .word 0x0000097B
+
+ thumb_func_start FUN_0205F2C4
+FUN_0205F2C4: ; 0x0205F2C4
+ ldr r3, _0205F2CC ; =FUN_0205EC94
+ ldr r1, _0205F2D0 ; =0x0000097B
+ bx r3
+ nop
+_0205F2CC: .word FUN_0205EC94
+_0205F2D0: .word 0x0000097B
+
+ thumb_func_start FUN_0205F2D4
+FUN_0205F2D4: ; 0x0205F2D4
+ ldr r3, _0205F2DC ; =FUN_0205EC9C
+ ldr r2, _0205F2E0 ; =0x00000963
+ bx r3
+ nop
+_0205F2DC: .word FUN_0205EC9C
+_0205F2E0: .word 0x00000963
+
+ thumb_func_start FUN_0205F2E4
+FUN_0205F2E4: ; 0x0205F2E4
+ push {r4-r6, lr}
+ add r4, r2, #0x0
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ cmp r4, #0x45
+ blo _0205F2F4
+ bl ErrorHandling
+_0205F2F4:
+ mov r2, #0x9b
+ lsl r2, r2, #0x4
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r4, r2
+ bl FUN_0205EC9C
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0205F304
+FUN_0205F304: ; 0x0205F304
+ ldr r3, _0205F30C ; =FUN_0205EC84
+ ldr r1, _0205F310 ; =0x0000098C
+ bx r3
+ nop
+_0205F30C: .word FUN_0205EC84
+_0205F310: .word 0x0000098C
+
+ thumb_func_start FUN_0205F314
+FUN_0205F314: ; 0x0205F314
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ add r4, r2, #0x0
+ bl FUN_02046380
+ mov r1, #0x1
+ lsl r1, r1, #0xe
+ cmp r5, r1
+ blo _0205F32C
+ lsl r1, r1, #0x1
+ cmp r5, r1
+ bls _0205F334
+_0205F32C:
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0205F334:
+ cmp r0, #0x0
+ bne _0205F33C
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0205F33C:
+ strh r4, [r0, #0x0]
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205F344
+FUN_0205F344: ; 0x0205F344
+ push {r3, lr}
+ bl FUN_02046380
+ cmp r0, #0x0
+ bne _0205F352
+ mov r0, #0x0
+ pop {r3, pc}
+_0205F352:
+ ldrh r0, [r0, #0x0]
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205F358
+FUN_0205F358: ; 0x0205F358
+ ldr r3, _0205F360 ; =FUN_0205F314
+ add r2, r1, #0x0
+ ldr r1, _0205F364 ; =0x0000403F
+ bx r3
+ .balign 4
+_0205F360: .word FUN_0205F314
+_0205F364: .word 0x0000403F
+
+ thumb_func_start FUN_0205F368
+FUN_0205F368: ; 0x0205F368
+ ldr r3, _0205F370 ; =FUN_0205F344
+ ldr r1, _0205F374 ; =0x0000403F
+ bx r3
+ nop
+_0205F370: .word FUN_0205F344
+_0205F374: .word 0x0000403F
+
+ thumb_func_start FUN_0205F378
+FUN_0205F378: ; 0x0205F378
+ ldr r3, _0205F380 ; =FUN_0205F314
+ add r2, r1, #0x0
+ ldr r1, _0205F384 ; =0x00004030
+ bx r3
+ .balign 4
+_0205F380: .word FUN_0205F314
+_0205F384: .word 0x00004030
+
+ thumb_func_start FUN_0205F388
+FUN_0205F388: ; 0x0205F388
+ ldr r3, _0205F390 ; =FUN_0205F344
+ ldr r1, _0205F394 ; =0x00004030
+ bx r3
+ nop
+_0205F390: .word FUN_0205F344
+_0205F394: .word 0x00004030
+
+ thumb_func_start FUN_0205F398
+FUN_0205F398: ; 0x0205F398
+ push {r3, lr}
+ ldr r1, _0205F3B8 ; =0x00004030
+ bl FUN_0205F344
+ ldr r2, _0205F3BC ; =0x00000183
+ cmp r0, r2
+ bne _0205F3AA
+ add r2, r2, #0x3
+ b _0205F3B2
+_0205F3AA:
+ add r1, r2, #0x3
+ cmp r0, r1
+ bne _0205F3B2
+ add r2, r2, #0x6
+_0205F3B2:
+ add r0, r2, #0x0
+ pop {r3, pc}
+ nop
+_0205F3B8: .word 0x00004030
+_0205F3BC: .word 0x00000183
+
+ thumb_func_start FUN_0205F3C0
+FUN_0205F3C0: ; 0x0205F3C0
+ push {r3, lr}
+ ldr r1, _0205F3E0 ; =0x00004030
+ bl FUN_0205F344
+ ldr r2, _0205F3E4 ; =0x00000183
+ cmp r0, r2
+ bne _0205F3D2
+ add r2, r2, #0x6
+ b _0205F3DA
+_0205F3D2:
+ add r1, r2, #0x3
+ cmp r0, r1
+ beq _0205F3DA
+ add r2, r2, #0x3
+_0205F3DA:
+ add r0, r2, #0x0
+ pop {r3, pc}
+ nop
+_0205F3E0: .word 0x00004030
+_0205F3E4: .word 0x00000183
+
+ thumb_func_start FUN_0205F3E8
+FUN_0205F3E8: ; 0x0205F3E8
+ ldr r3, _0205F3F0 ; =FUN_0205F344
+ ldr r1, _0205F3F4 ; =0x00004035
+ bx r3
+ nop
+_0205F3F0: .word FUN_0205F344
+_0205F3F4: .word 0x00004035
+
+ thumb_func_start FUN_0205F3F8
+FUN_0205F3F8: ; 0x0205F3F8
+ ldr r3, _0205F400 ; =FUN_0205F314
+ add r2, r1, #0x0
+ ldr r1, _0205F404 ; =0x00004035
+ bx r3
+ .balign 4
+_0205F400: .word FUN_0205F314
+_0205F404: .word 0x00004035
+
+ thumb_func_start FUN_0205F408
+FUN_0205F408: ; 0x0205F408
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_0205ED8C
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_0205F44C
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205F41C
+FUN_0205F41C: ; 0x0205F41C
+ ldr r3, _0205F424 ; =FUN_0205F344
+ ldr r1, _0205F428 ; =0x00004033
+ bx r3
+ nop
+_0205F424: .word FUN_0205F344
+_0205F428: .word 0x00004033
+
+ thumb_func_start FUN_0205F42C
+FUN_0205F42C: ; 0x0205F42C
+ ldr r3, _0205F434 ; =FUN_0205F314
+ add r2, r1, #0x0
+ ldr r1, _0205F438 ; =0x00004033
+ bx r3
+ .balign 4
+_0205F434: .word FUN_0205F314
+_0205F438: .word 0x00004033
+
+ thumb_func_start FUN_0205F43C
+FUN_0205F43C: ; 0x0205F43C
+ ldr r3, _0205F444 ; =FUN_0205F344
+ ldr r1, _0205F448 ; =0x00004034
+ bx r3
+ nop
+_0205F444: .word FUN_0205F344
+_0205F448: .word 0x00004034
+
+ thumb_func_start FUN_0205F44C
+FUN_0205F44C: ; 0x0205F44C
+ ldr r3, _0205F454 ; =FUN_0205F314
+ add r2, r1, #0x0
+ ldr r1, _0205F458 ; =0x00004034
+ bx r3
+ .balign 4
+_0205F454: .word FUN_0205F314
+_0205F458: .word 0x00004034
+
+ thumb_func_start FUN_0205F45C
+FUN_0205F45C: ; 0x0205F45C
+ push {r4, lr}
+ add r4, r0, #0x0
+ bmi _0205F466
+ cmp r4, #0x3
+ blo _0205F46A
+_0205F466:
+ bl ErrorHandling
+_0205F46A:
+ ldr r0, _0205F474 ; =0x020F7430
+ lsl r1, r4, #0x1
+ ldrh r0, [r0, r1]
+ pop {r4, pc}
+ nop
+_0205F474: .word 0x020F7430
+
+ thumb_func_start FUN_0205F478
+FUN_0205F478: ; 0x0205F478
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0205F45C
+ add r2, r0, #0x0
+ ldr r1, _0205F49C ; =0x00004043
+ lsl r2, r2, #0x10
+ add r1, r4, r1
+ lsl r1, r1, #0x10
+ add r0, r5, #0x0
+ lsr r1, r1, #0x10
+ lsr r2, r2, #0x10
+ bl FUN_0205F314
+ pop {r3-r5, pc}
+ nop
+_0205F49C: .word 0x00004043
+
+ thumb_func_start FUN_0205F4A0
+FUN_0205F4A0: ; 0x0205F4A0
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ ldr r1, _0205F4C4 ; =0x00004043
+ add r1, r4, r1
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ bl FUN_0205F344
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0205F45C
+ cmp r5, r0
+ bne _0205F4C0
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0205F4C0:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+_0205F4C4: .word 0x00004043
+
+ thumb_func_start FUN_0205F4C8
+FUN_0205F4C8: ; 0x0205F4C8
+ push {r4, lr}
+ add r4, r0, #0x0
+ bmi _0205F4D2
+ cmp r4, #0x4
+ blt _0205F4D6
+_0205F4D2:
+ bl ErrorHandling
+_0205F4D6:
+ ldr r0, _0205F4E0 ; =0x020F7436
+ lsl r1, r4, #0x1
+ ldrh r0, [r0, r1]
+ pop {r4, pc}
+ nop
+_0205F4E0: .word 0x020F7436
+
+ thumb_func_start FUN_0205F4E4
+FUN_0205F4E4: ; 0x0205F4E4
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0205F4C8
+ add r2, r0, #0x0
+ ldr r1, _0205F508 ; =0x00004036
+ lsl r2, r2, #0x10
+ add r1, r4, r1
+ lsl r1, r1, #0x10
+ add r0, r5, #0x0
+ lsr r1, r1, #0x10
+ lsr r2, r2, #0x10
+ bl FUN_0205F314
+ pop {r3-r5, pc}
+ nop
+_0205F508: .word 0x00004036
+
+ thumb_func_start FUN_0205F50C
+FUN_0205F50C: ; 0x0205F50C
+ ldr r2, _0205F51C ; =0x00004036
+ ldr r3, _0205F520 ; =FUN_0205F314
+ add r1, r1, r2
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ mov r2, #0x0
+ bx r3
+ nop
+_0205F51C: .word 0x00004036
+_0205F520: .word FUN_0205F314
+
+ thumb_func_start FUN_0205F524
+FUN_0205F524: ; 0x0205F524
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ ldr r1, _0205F548 ; =0x00004036
+ add r1, r4, r1
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ bl FUN_0205F344
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0205F4C8
+ cmp r5, r0
+ bne _0205F544
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0205F544:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+_0205F548: .word 0x00004036
+
+ thumb_func_start FUN_0205F54C
+FUN_0205F54C: ; 0x0205F54C
+ ldr r3, _0205F554 ; =FUN_0205F314
+ ldr r1, _0205F558 ; =0x0000403A
+ mov r2, #0x0
+ bx r3
+ .balign 4
+_0205F554: .word FUN_0205F314
+_0205F558: .word 0x0000403A
+
+ thumb_func_start FUN_0205F55C
+FUN_0205F55C: ; 0x0205F55C
+ ldr r3, _0205F564 ; =FUN_0205F344
+ ldr r1, _0205F568 ; =0x0000403A
+ bx r3
+ nop
+_0205F564: .word FUN_0205F344
+_0205F568: .word 0x0000403A
+
+ thumb_func_start FUN_0205F56C
+FUN_0205F56C: ; 0x0205F56C
+ push {r4, lr}
+ ldr r1, _0205F58C ; =0x0000403A
+ add r4, r0, #0x0
+ bl FUN_0205F344
+ ldr r2, _0205F590 ; =0x00002710
+ cmp r0, r2
+ bhs _0205F582
+ add r0, r0, #0x1
+ lsl r0, r0, #0x10
+ lsr r2, r0, #0x10
+_0205F582:
+ ldr r1, _0205F58C ; =0x0000403A
+ add r0, r4, #0x0
+ bl FUN_0205F314
+ pop {r4, pc}
+ .balign 4
+_0205F58C: .word 0x0000403A
+_0205F590: .word 0x00002710
+
+ thumb_func_start FUN_0205F594
+FUN_0205F594: ; 0x0205F594
+ ldr r3, _0205F59C ; =FUN_0205F344
+ ldr r1, _0205F5A0 ; =0x0000403B
+ bx r3
+ nop
+_0205F59C: .word FUN_0205F344
+_0205F5A0: .word 0x0000403B
+
+ thumb_func_start FUN_0205F5A4
+FUN_0205F5A4: ; 0x0205F5A4
+ ldr r3, _0205F5AC ; =FUN_0205F314
+ add r2, r1, #0x0
+ ldr r1, _0205F5B0 ; =0x0000403B
+ bx r3
+ .balign 4
+_0205F5AC: .word FUN_0205F314
+_0205F5B0: .word 0x0000403B
+
+ thumb_func_start FUN_0205F5B4
+FUN_0205F5B4: ; 0x0205F5B4
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ lsl r2, r4, #0x10
+ ldr r1, _0205F5D4 ; =0x0000403C
+ lsr r2, r2, #0x10
+ add r5, r0, #0x0
+ bl FUN_0205F314
+ lsr r2, r4, #0x10
+ lsl r2, r2, #0x10
+ ldr r1, _0205F5D4 ; =0x0000403C
+ add r0, r5, #0x0
+ lsr r2, r2, #0x10
+ bl FUN_0205F314
+ pop {r3-r5, pc}
+ .balign 4
+_0205F5D4: .word 0x0000403C
+
+ thumb_func_start FUN_0205F5D8
+FUN_0205F5D8: ; 0x0205F5D8
+ push {r3-r5, lr}
+ ldr r1, _0205F5F4 ; =0x0000403C
+ add r5, r0, #0x0
+ bl FUN_0205F344
+ add r4, r0, #0x0
+ ldr r1, _0205F5F8 ; =0x0000403D
+ add r0, r5, #0x0
+ bl FUN_0205F344
+ lsl r0, r0, #0x10
+ orr r0, r4
+ pop {r3-r5, pc}
+ nop
+_0205F5F4: .word 0x0000403C
+_0205F5F8: .word 0x0000403D
+
+ thumb_func_start FUN_0205F5FC
+FUN_0205F5FC: ; 0x0205F5FC
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_0201B9EC
+ add r4, r0, #0x0
+ bl FUN_0201B9EC
+ add r1, r0, #0x0
+ lsl r1, r1, #0x10
+ add r0, r5, #0x0
+ orr r1, r4
+ bl FUN_0205F5B4
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0205F618
+FUN_0205F618: ; 0x0205F618
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_020462AC
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0202881C
+ bl FUN_020287A4
+ add r2, r0, #0x0
+ ldr r1, _0205F640 ; =0x41C64E6D
+ add r0, r4, #0x0
+ mul r2, r1
+ ldr r1, _0205F644 ; =0x00003039
+ add r1, r2, r1
+ bl FUN_0205F5B4
+ pop {r3-r5, pc}
+ nop
+_0205F640: .word 0x41C64E6D
+_0205F644: .word 0x00003039
+
+ thumb_func_start FUN_0205F648
+FUN_0205F648: ; 0x0205F648
+ ldr r3, _0205F650 ; =FUN_0205F344
+ ldr r1, _0205F654 ; =0x00004041
+ bx r3
+ nop
+_0205F650: .word FUN_0205F344
+_0205F654: .word 0x00004041
+
+ thumb_func_start FUN_0205F658
+FUN_0205F658: ; 0x0205F658
+ ldr r3, _0205F660 ; =FUN_0205F314
+ add r2, r1, #0x0
+ ldr r1, _0205F664 ; =0x00004041
+ bx r3
+ .balign 4
+_0205F660: .word FUN_0205F314
+_0205F664: .word 0x00004041
+
+ thumb_func_start FUN_0205F668
+FUN_0205F668: ; 0x0205F668
+ push {r4, lr}
+ bl FUN_020462AC
+ add r4, r0, #0x0
+ bl FUN_0201B9EC
+ mov r1, #0x62
+ blx _s32_div_f
+ add r1, r1, #0x2
+ lsl r1, r1, #0x10
+ add r0, r4, #0x0
+ lsr r1, r1, #0x10
+ bl FUN_0205F658
+ pop {r4, pc}
+
+ thumb_func_start FUN_0205F688
+FUN_0205F688: ; 0x0205F688
+ ldr r3, _0205F690 ; =FUN_0205F344
+ ldr r1, _0205F694 ; =0x0000403E
+ bx r3
+ nop
+_0205F690: .word FUN_0205F344
+_0205F694: .word 0x0000403E
+
+ thumb_func_start FUN_0205F698
+FUN_0205F698: ; 0x0205F698
+ ldr r3, _0205F6A0 ; =FUN_0205F314
+ add r2, r1, #0x0
+ ldr r1, _0205F6A4 ; =0x0000403E
+ bx r3
+ .balign 4
+_0205F6A0: .word FUN_0205F314
+_0205F6A4: .word 0x0000403E
+
+ thumb_func_start FUN_0205F6A8
+FUN_0205F6A8: ; 0x0205F6A8
+ ldr r3, _0205F6B0 ; =FUN_0205F344
+ ldr r1, _0205F6B4 ; =0x00004049
+ bx r3
+ nop
+_0205F6B0: .word FUN_0205F344
+_0205F6B4: .word 0x00004049
+
+ thumb_func_start FUN_0205F6B8
+FUN_0205F6B8: ; 0x0205F6B8
+ ldr r3, _0205F6C0 ; =FUN_0205F314
+ add r2, r1, #0x0
+ ldr r1, _0205F6C4 ; =0x00004049
+ bx r3
+ .balign 4
+_0205F6C0: .word FUN_0205F314
+_0205F6C4: .word 0x00004049
+
+ thumb_func_start FUN_0205F6C8
+FUN_0205F6C8: ; 0x0205F6C8
+ ldr r3, _0205F6D0 ; =FUN_0205F344
+ ldr r1, _0205F6D4 ; =0x00004040
+ bx r3
+ nop
+_0205F6D0: .word FUN_0205F344
+_0205F6D4: .word 0x00004040
+
+ thumb_func_start FUN_0205F6D8
+FUN_0205F6D8: ; 0x0205F6D8
+ ldr r3, _0205F6E0 ; =FUN_0205F314
+ add r2, r1, #0x0
+ ldr r1, _0205F6E4 ; =0x00004040
+ bx r3
+ .balign 4
+_0205F6E0: .word FUN_0205F314
+_0205F6E4: .word 0x00004040
+
+ thumb_func_start FUN_0205F6E8
+FUN_0205F6E8: ; 0x0205F6E8
+ push {r4, lr}
+ ldr r1, _0205F708 ; =0x00004042
+ add r4, r0, #0x0
+ bl FUN_0205F344
+ ldr r2, _0205F70C ; =0x00002710
+ cmp r0, r2
+ bhs _0205F6FE
+ add r0, r0, #0x1
+ lsl r0, r0, #0x10
+ lsr r2, r0, #0x10
+_0205F6FE:
+ ldr r1, _0205F708 ; =0x00004042
+ add r0, r4, #0x0
+ bl FUN_0205F314
+ pop {r4, pc}
+ .balign 4
+_0205F708: .word 0x00004042
+_0205F70C: .word 0x00002710
+
+ thumb_func_start FUN_0205F710
+FUN_0205F710: ; 0x0205F710
+ ldr r3, _0205F718 ; =FUN_0205F344
+ ldr r1, _0205F71C ; =0x00004042
+ bx r3
+ nop
+_0205F718: .word FUN_0205F344
+_0205F71C: .word 0x00004042
+
+ thumb_func_start FUN_0205F720
+FUN_0205F720: ; 0x0205F720
+ ldr r3, _0205F728 ; =FUN_0205F344
+ ldr r1, _0205F72C ; =0x00004046
+ bx r3
+ nop
+_0205F728: .word FUN_0205F344
+_0205F72C: .word 0x00004046
+
+ thumb_func_start FUN_0205F730
+FUN_0205F730: ; 0x0205F730
+ ldr r3, _0205F738 ; =FUN_0205F314
+ add r2, r1, #0x0
+ ldr r1, _0205F73C ; =0x00004046
+ bx r3
+ .balign 4
+_0205F738: .word FUN_0205F314
+_0205F73C: .word 0x00004046
+
+ thumb_func_start FUN_0205F740
+FUN_0205F740: ; 0x0205F740
+ ldr r3, _0205F748 ; =FUN_0205F344
+ ldr r1, _0205F74C ; =0x00004047
+ bx r3
+ nop
+_0205F748: .word FUN_0205F344
+_0205F74C: .word 0x00004047
+
+ thumb_func_start FUN_0205F750
+FUN_0205F750: ; 0x0205F750
+ ldr r3, _0205F758 ; =FUN_0205F314
+ add r2, r1, #0x0
+ ldr r1, _0205F75C ; =0x00004047
+ bx r3
+ .balign 4
+_0205F758: .word FUN_0205F314
+_0205F75C: .word 0x00004047
+
+ thumb_func_start FUN_0205F760
+FUN_0205F760: ; 0x0205F760
+ ldr r3, _0205F768 ; =FUN_0205F344
+ ldr r1, _0205F76C ; =0x00004048
+ bx r3
+ nop
+_0205F768: .word FUN_0205F344
+_0205F76C: .word 0x00004048
+
+ thumb_func_start FUN_0205F770
+FUN_0205F770: ; 0x0205F770
+ ldr r3, _0205F778 ; =FUN_0205F314
+ add r2, r1, #0x0
+ ldr r1, _0205F77C ; =0x00004048
+ bx r3
+ .balign 4
+_0205F778: .word FUN_0205F314
+_0205F77C: .word 0x00004048
+
+ thumb_func_start FUN_0205F780
+FUN_0205F780: ; 0x0205F780
+ ldr r3, _0205F788 ; =FUN_0205F344
+ ldr r1, _0205F78C ; =0x0000404A
+ bx r3
+ nop
+_0205F788: .word FUN_0205F344
+_0205F78C: .word 0x0000404A
+
+ thumb_func_start FUN_0205F790
+FUN_0205F790: ; 0x0205F790
+ ldr r3, _0205F798 ; =FUN_0205F314
+ add r2, r1, #0x0
+ ldr r1, _0205F79C ; =0x0000404A
+ bx r3
+ .balign 4
+_0205F798: .word FUN_0205F314
+_0205F79C: .word 0x0000404A
+
+ thumb_func_start FUN_0205F7A0
+FUN_0205F7A0: ; 0x0205F7A0
+ push {r3-r7, lr}
+ sub sp, #0x10
+ str r0, [sp, #0x0]
+ ldr r0, [r0, #0xc]
+ add r5, r1, #0x0
+ str r2, [sp, #0x4]
+ bl FUN_020462AC
+ add r7, r0, #0x0
+ ldr r0, [sp, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02034E30
+ bl FUN_02034DCC
+ mov r2, #0x5
+ str r0, [sp, #0xc]
+ add r0, r5, #0x0
+ mov r1, #0x0
+ lsl r2, r2, #0x6
+ blx FUN_020DF4A4
+ ldr r0, [sp, #0x0]
+ ldr r0, [r0, #0x38]
+ bl FUN_02055320
+ add r4, r0, #0x0
+ ldr r0, [sp, #0x0]
+ ldr r0, [r0, #0x38]
+ bl FUN_0205532C
+ add r6, r0, #0x0
+ ldr r0, [sp, #0x0]
+ asr r1, r4, #0x4
+ asr r2, r6, #0x4
+ lsr r1, r1, #0x1b
+ lsr r2, r2, #0x1b
+ add r1, r4, r1
+ add r2, r6, r2
+ ldr r0, [r0, #0x28]
+ asr r1, r1, #0x5
+ asr r2, r2, #0x5
+ bl FUN_0203451C
+ bl FUN_02034908
+ cmp r0, #0x0
+ beq _0205F806
+ str r4, [r5, #0x0]
+ str r6, [r5, #0x4]
+ b _0205F812
+_0205F806:
+ ldr r0, [sp, #0xc]
+ ldr r0, [r0, #0x8]
+ str r0, [r5, #0x0]
+ ldr r0, [sp, #0xc]
+ ldr r0, [r0, #0xc]
+ str r0, [r5, #0x4]
+_0205F812:
+ ldr r0, [sp, #0x0]
+ bl FUN_020377AC
+ bl FUN_020238F4
+ bl FUN_020239CC
+ str r0, [r5, #0xc]
+ ldr r0, [sp, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02034E30
+ bl FUN_02034E0C
+ str r0, [sp, #0x8]
+ ldr r0, [r0, #0x0]
+ mov r1, #0x6
+ add r0, r0, #0x4
+ blx _s32_div_f
+ mov r6, #0x0
+ add r4, r5, #0x0
+_0205F83E:
+ ldr r0, [sp, #0x8]
+ lsl r2, r1, #0x2
+ add r0, r0, r2
+ ldrb r2, [r0, #0x6]
+ str r2, [r4, #0x20]
+ ldrb r2, [r0, #0x7]
+ str r2, [r4, #0x24]
+ ldrb r2, [r0, #0x9]
+ strh r2, [r4, #0x2a]
+ ldrb r0, [r0, #0x8]
+ cmp r0, #0x3
+ bls _0205F85A
+ mov r0, #0x4
+ b _0205F85A
+_0205F85A:
+ strh r0, [r4, #0x28]
+ add r0, r1, #0x5
+ mov r1, #0x6
+ blx _s32_div_f
+ add r6, r6, #0x1
+ add r4, #0xc
+ cmp r6, #0x5
+ blt _0205F83E
+ mov r6, #0x4f
+ mov r4, #0x0
+ lsl r6, r6, #0x2
+_0205F872:
+ add r0, r7, #0x0
+ add r1, r4, #0x0
+ bl FUN_0205F524
+ cmp r0, #0x0
+ beq _0205F888
+ mov r0, #0x1
+ ldrh r1, [r5, r6]
+ lsl r0, r4
+ orr r0, r1
+ strh r0, [r5, r6]
+_0205F888:
+ add r4, r4, #0x1
+ cmp r4, #0x4
+ blt _0205F872
+ ldr r6, _0205F8C0 ; =0x020F7440
+ mov r4, #0x0
+_0205F892:
+ ldrb r2, [r6, #0x0]
+ add r0, r7, #0x0
+ mov r1, #0x2
+ bl FUN_0205F2E4
+ mov r1, #0x49
+ add r2, r5, r4
+ lsl r1, r1, #0x2
+ add r4, r4, #0x1
+ add r6, r6, #0x1
+ strb r0, [r2, r1]
+ cmp r4, #0x14
+ blt _0205F892
+ ldr r0, [sp, #0x0]
+ ldr r2, _0205F8C4 ; =0x02105FA8
+ add r1, r5, #0x0
+ bl FUN_0205F8CC
+ ldr r1, _0205F8C8 ; =0x00000139
+ ldr r0, [sp, #0x4]
+ strb r0, [r5, r1]
+ add sp, #0x10
+ pop {r3-r7, pc}
+ .balign 4
+_0205F8C0: .word 0x020F7440
+_0205F8C4: .word 0x02105FA8
+_0205F8C8: .word 0x00000139
+
+ thumb_func_start FUN_0205F8CC
+FUN_0205F8CC: ; 0x0205F8CC
+ push {r3-r7, lr}
+ sub sp, #0x70
+ add r7, r0, #0x0
+ ldr r0, [r7, #0xc]
+ add r5, r1, #0x0
+ add r4, r2, #0x0
+ bl FUN_020462AC
+ str r0, [sp, #0x0]
+ add r0, sp, #0x28
+ blx FS_InitFile
+ add r0, sp, #0x28
+ add r1, r4, #0x0
+ blx FS_OpenFile
+ cmp r0, #0x0
+ bne _0205F8F8
+ bl ErrorHandling
+ add sp, #0x70
+ pop {r3-r7, pc}
+_0205F8F8:
+ add r0, sp, #0x28
+ add r1, sp, #0x24
+ mov r2, #0x4
+ blx FS_ReadFile
+ cmp r0, #0x0
+ bge _0205F90A
+ bl ErrorHandling
+_0205F90A:
+ mov r0, #0xb
+ mov r1, #0x4
+ bl FUN_020169D8
+ mov r1, #0x0
+ mov r2, #0x4
+ add r6, r0, #0x0
+ blx MI_CpuFill8
+ ldr r1, [sp, #0x24]
+ ldr r0, _0205FA28 ; =0x0000013A
+ mov r4, #0x0
+ strb r1, [r5, r0]
+ ldr r0, [sp, #0x24]
+ cmp r0, #0x0
+ ble _0205FA16
+ mov r0, #0xc
+ str r0, [sp, #0x10]
+ mov r0, #0x3
+ str r0, [sp, #0xc]
+ mov r0, #0xc
+ str r0, [sp, #0x8]
+ mov r0, #0x3
+ str r0, [sp, #0x4]
+ mov r0, #0xc0
+ str r0, [sp, #0x20]
+ mov r0, #0x30
+ str r0, [sp, #0x1c]
+ mov r0, #0xc0
+ str r0, [sp, #0x18]
+ mov r0, #0x30
+ add r5, #0x5c
+ str r0, [sp, #0x14]
+_0205F94C:
+ add r0, sp, #0x28
+ add r1, r6, #0x0
+ mov r2, #0x4
+ blx FS_ReadFile
+ ldrb r0, [r6, #0x0]
+ cmp r0, #0x1
+ beq _0205F962
+ cmp r0, #0x2
+ beq _0205F98C
+ b _0205F9B2
+_0205F962:
+ ldrb r2, [r6, #0x1]
+ ldr r0, [sp, #0x0]
+ mov r1, #0x2
+ bl FUN_0205F2E4
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ lsl r0, r0, #0x1e
+ ldrb r1, [r5, r4]
+ ldr r2, [sp, #0x8]
+ lsr r0, r0, #0x1c
+ bic r1, r2
+ orr r0, r1
+ strb r0, [r5, r4]
+ ldrb r1, [r5, r4]
+ ldr r0, [sp, #0x4]
+ bic r1, r0
+ mov r0, #0x1
+ orr r0, r1
+ strb r0, [r5, r4]
+ b _0205F9B2
+_0205F98C:
+ ldrb r1, [r6, #0x1]
+ add r0, r7, #0x0
+ bl FUN_02039528
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ lsl r0, r0, #0x1e
+ ldrb r1, [r5, r4]
+ ldr r2, [sp, #0x10]
+ lsr r0, r0, #0x1c
+ bic r1, r2
+ orr r0, r1
+ strb r0, [r5, r4]
+ ldrb r1, [r5, r4]
+ ldr r0, [sp, #0xc]
+ bic r1, r0
+ mov r0, #0x1
+ orr r0, r1
+ strb r0, [r5, r4]
+_0205F9B2:
+ ldrb r0, [r6, #0x2]
+ cmp r0, #0x1
+ beq _0205F9BE
+ cmp r0, #0x2
+ beq _0205F9E8
+ b _0205FA0E
+_0205F9BE:
+ ldrb r2, [r6, #0x3]
+ ldr r0, [sp, #0x0]
+ mov r1, #0x2
+ bl FUN_0205F2E4
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ lsl r0, r0, #0x1e
+ ldrb r1, [r5, r4]
+ ldr r2, [sp, #0x18]
+ lsr r0, r0, #0x18
+ bic r1, r2
+ orr r0, r1
+ strb r0, [r5, r4]
+ ldrb r1, [r5, r4]
+ ldr r0, [sp, #0x14]
+ bic r1, r0
+ mov r0, #0x10
+ orr r0, r1
+ strb r0, [r5, r4]
+ b _0205FA0E
+_0205F9E8:
+ ldrb r1, [r6, #0x3]
+ add r0, r7, #0x0
+ bl FUN_02039528
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ lsl r0, r0, #0x1e
+ ldrb r1, [r5, r4]
+ ldr r2, [sp, #0x20]
+ lsr r0, r0, #0x18
+ bic r1, r2
+ orr r0, r1
+ strb r0, [r5, r4]
+ ldrb r1, [r5, r4]
+ ldr r0, [sp, #0x1c]
+ bic r1, r0
+ mov r0, #0x10
+ orr r0, r1
+ strb r0, [r5, r4]
+_0205FA0E:
+ ldr r0, [sp, #0x24]
+ add r4, r4, #0x1
+ cmp r4, r0
+ blt _0205F94C
+_0205FA16:
+ add r0, sp, #0x28
+ blx FS_CloseFile
+ add r0, r6, #0x0
+ bl FUN_02016A18
+ add sp, #0x70
+ pop {r3-r7, pc}
+ nop
+_0205FA28: .word 0x0000013A
+
+ thumb_func_start FUN_0205FA2C
+FUN_0205FA2C: ; 0x0205FA2C
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r7, r1, #0x0
+ add r0, r2, #0x0
+ mov r1, #0x40
+ bl FUN_020169D8
+ ldr r6, [r7, #0xc]
+ mov r1, #0x0
+ mov r2, #0x40
+ add r4, r0, #0x0
+ blx MI_CpuFill8
+ add r0, r6, #0x0
+ bl LoadPlayerDataAddress
+ str r0, [r4, #0xc]
+ add r0, r6, #0x0
+ bl FUN_0206BB1C
+ str r0, [r4, #0x0]
+ add r0, r6, #0x0
+ bl FUN_0206F158
+ str r0, [r4, #0x4]
+ add r0, r4, #0x0
+ mov r1, #0x0
+ add r0, #0x21
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ ldrb r2, [r5, #0x8]
+ add r0, #0x20
+ strb r2, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x32
+ ldrb r0, [r0, #0x0]
+ mov r2, #0xf
+ ldrb r3, [r5, #0xa]
+ bic r0, r2
+ mov r2, #0xf
+ and r2, r3
+ orr r2, r0
+ add r0, r4, #0x0
+ add r0, #0x32
+ strb r2, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x32
+ ldrb r0, [r0, #0x0]
+ mov r2, #0xf0
+ bic r0, r2
+ ldrb r2, [r5, #0xb]
+ lsl r2, r2, #0x1c
+ lsr r2, r2, #0x18
+ orr r2, r0
+ add r0, r4, #0x0
+ add r0, #0x32
+ strb r2, [r0, #0x0]
+ add r0, r4, #0x0
+ ldrb r2, [r5, #0xc]
+ add r0, #0x33
+ strb r2, [r0, #0x0]
+ add r0, r4, #0x0
+ ldrb r2, [r5, #0xd]
+ add r0, #0x22
+ strb r2, [r0, #0x0]
+_0205FAAE:
+ add r0, r5, r1
+ ldrb r2, [r0, #0xe]
+ add r0, r4, r1
+ add r0, #0x2c
+ strb r2, [r0, #0x0]
+ add r0, r1, #0x1
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ cmp r1, #0x6
+ blo _0205FAAE
+ ldr r1, _0205FAD4 ; =0x020F96DC
+ add r0, r7, #0x0
+ add r2, r4, #0x0
+ bl FUN_020373D4
+ ldr r0, [r5, #0x14]
+ str r4, [r0, #0x0]
+ mov r0, #0x1
+ pop {r3-r7, pc}
+ .balign 4
+_0205FAD4: .word 0x020F96DC
+
+ thumb_func_start FUN_0205FAD8
+FUN_0205FAD8: ; 0x0205FAD8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, r1, #0x0
+ bl FUN_0204647C
+ cmp r0, #0x0
+ beq _0205FAEA
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0205FAEA:
+ ldr r0, [r5, #0x14]
+ ldr r4, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x22
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x6
+ beq _0205FB04
+ cmp r0, #0x7
+ bne _0205FB0C
+ mov r0, #0x0
+ str r0, [r5, #0x0]
+ mov r0, #0x4
+ pop {r3-r5, pc}
+_0205FB04:
+ mov r0, #0x1
+ str r0, [r5, #0x0]
+ mov r0, #0x4
+ pop {r3-r5, pc}
+_0205FB0C:
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ add r0, #0x2c
+ add r1, #0xe
+ mov r2, #0x6
+ blx MI_CpuCopy8
+ add r0, r4, #0x0
+ add r0, #0x22
+ ldrb r0, [r0, #0x0]
+ strb r0, [r5, #0xd]
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ ldr r0, [r5, #0x14]
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+ mov r0, #0x2
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205FB34
+FUN_0205FB34: ; 0x0205FB34
+ push {r3-r7, lr}
+ add r7, r1, #0x0
+ add r6, r0, #0x0
+ ldr r5, [r7, #0xc]
+ add r0, r2, #0x0
+ mov r1, #0x30
+ bl FUN_020169D8
+ mov r1, #0x0
+ mov r2, #0x30
+ add r4, r0, #0x0
+ blx MI_CpuFill8
+ add r0, r5, #0x0
+ bl LoadPlayerDataAddress
+ str r0, [r4, #0x4]
+ add r0, r5, #0x0
+ bl FUN_0206BB1C
+ str r0, [r4, #0x0]
+ add r0, r5, #0x0
+ bl FUN_0206BB28
+ str r0, [r4, #0x1c]
+ add r0, r5, #0x0
+ bl FUN_02079C70
+ str r0, [r4, #0x2c]
+ mov r0, #0x1
+ strb r0, [r4, #0x11]
+ ldrb r0, [r6, #0xd]
+ strb r0, [r4, #0x14]
+ ldr r0, [r4, #0x0]
+ bl FUN_0206B9AC
+ strb r0, [r4, #0x13]
+ mov r0, #0x0
+ strh r0, [r4, #0x18]
+ ldrb r0, [r6, #0x9]
+ strb r0, [r4, #0x12]
+ add r0, r5, #0x0
+ bl FUN_0202A918
+ str r0, [r4, #0x20]
+ ldr r1, _0205FBB8 ; =0x020F7454
+ add r0, r4, #0x0
+ bl FUN_0207B000
+ add r0, r5, #0x0
+ bl FUN_020238F4
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0207C2A4
+ ldr r1, _0205FBBC ; =0x020FA6E8
+ add r0, r7, #0x0
+ add r2, r4, #0x0
+ bl FUN_020373D4
+ ldr r0, [r6, #0x14]
+ str r4, [r0, #0x0]
+ mov r0, #0x3
+ pop {r3-r7, pc}
+ nop
+_0205FBB8: .word 0x020F7454
+_0205FBBC: .word 0x020FA6E8
+
+ thumb_func_start FUN_0205FBC0
+FUN_0205FBC0: ; 0x0205FBC0
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, r1, #0x0
+ bl FUN_0204647C
+ cmp r0, #0x0
+ beq _0205FBD2
+ mov r0, #0x3
+ pop {r4, pc}
+_0205FBD2:
+ ldr r0, [r4, #0x14]
+ ldr r0, [r0, #0x0]
+ ldrb r1, [r0, #0x14]
+ strb r1, [r4, #0xd]
+ bl FUN_02016A18
+ ldr r1, [r4, #0x14]
+ mov r0, #0x0
+ str r0, [r1, #0x0]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205FBE8
+FUN_0205FBE8: ; 0x0205FBE8
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x4]
+ cmp r1, #0x4
+ bhi _0205FC4A
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0205FC0C: ; jump table (using 16-bit offset)
+ .short _0205FC16 - _0205FC0C - 2; case 0
+ .short _0205FC22 - _0205FC0C - 2; case 1
+ .short _0205FC2C - _0205FC0C - 2; case 2
+ .short _0205FC38 - _0205FC0C - 2; case 3
+ .short _0205FC42 - _0205FC0C - 2; case 4
+_0205FC16:
+ add r1, r5, #0x0
+ mov r2, #0xb
+ bl FUN_0205FA2C
+ str r0, [r4, #0x4]
+ b _0205FC4A
+_0205FC22:
+ add r1, r5, #0x0
+ bl FUN_0205FAD8
+ str r0, [r4, #0x4]
+ b _0205FC4A
+_0205FC2C:
+ add r1, r5, #0x0
+ mov r2, #0xb
+ bl FUN_0205FB34
+ str r0, [r4, #0x4]
+ b _0205FC4A
+_0205FC38:
+ add r1, r5, #0x0
+ bl FUN_0205FBC0
+ str r0, [r4, #0x4]
+ b _0205FC4A
+_0205FC42:
+ bl FUN_02016A18
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0205FC4A:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205FC50
+FUN_0205FC50: ; 0x0205FC50
+ push {r3-r7, lr}
+ add r5, r1, #0x0
+ add r6, r2, #0x0
+ add r7, r3, #0x0
+ bl FUN_02046528
+ str r0, [sp, #0x0]
+ mov r0, #0xb
+ mov r1, #0x18
+ bl FUN_02016998
+ add r4, r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x18
+ blx MI_CpuFill8
+ strb r6, [r4, #0x8]
+ strb r7, [r4, #0x9]
+ add r0, sp, #0x8
+ ldrb r1, [r0, #0x10]
+ add r2, r4, #0x0
+ strb r1, [r4, #0xa]
+ ldrb r1, [r0, #0x14]
+ strb r1, [r4, #0xb]
+ ldrb r1, [r0, #0x18]
+ strb r1, [r4, #0xc]
+ ldrb r0, [r0, #0x1c]
+ ldr r1, _0205FC98 ; =FUN_0205FBE8
+ strb r0, [r4, #0xd]
+ ldr r0, [sp, #0x0]
+ str r5, [r4, #0x14]
+ ldr r0, [r0, #0x10]
+ bl FUN_0204640C
+ pop {r3-r7, pc}
+ nop
+_0205FC98: .word FUN_0205FBE8
+
+ thumb_func_start FUN_0205FC9C
+FUN_0205FC9C: ; 0x0205FC9C
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ add r4, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_0203384C
+ cmp r0, #0x0
+ beq _0205FCBC
+ ldrh r1, [r4, #0x12]
+ ldrh r2, [r4, #0x14]
+ add r0, r5, #0x0
+ bl FUN_02038790
+ str r0, [r4, #0x8]
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0205FCBC:
+ mov r0, #0x1
+ str r0, [r4, #0x0]
+ mov r0, #0x2
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0205FCC4
+FUN_0205FCC4: ; 0x0205FCC4
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, r1, #0x0
+ bl FUN_0204647C
+ cmp r0, #0x0
+ beq _0205FCD6
+ mov r0, #0x1
+ pop {r4, pc}
+_0205FCD6:
+ ldr r0, [r4, #0x8]
+ ldr r0, [r0, #0x20]
+ str r0, [r4, #0x0]
+ ldr r0, [r4, #0x8]
+ bl FUN_02016A18
+ mov r0, #0x2
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205FCE8
+FUN_0205FCE8: ; 0x0205FCE8
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x4]
+ cmp r1, #0x0
+ beq _0205FD0A
+ cmp r1, #0x1
+ beq _0205FD14
+ cmp r1, #0x2
+ beq _0205FD1E
+ b _0205FD34
+_0205FD0A:
+ add r1, r5, #0x0
+ bl FUN_0205FC9C
+ str r0, [r4, #0x4]
+ b _0205FD34
+_0205FD14:
+ add r1, r5, #0x0
+ bl FUN_0205FCC4
+ str r0, [r4, #0x4]
+ b _0205FD34
+_0205FD1E:
+ ldrh r1, [r4, #0x10]
+ add r0, r5, #0x0
+ bl FUN_020394B8
+ ldr r1, [r4, #0x0]
+ strh r1, [r0, #0x0]
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0205FD34:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0205FD38
+FUN_0205FD38: ; 0x0205FD38
+ push {r3-r7, lr}
+ add r5, r1, #0x0
+ add r6, r2, #0x0
+ add r7, r3, #0x0
+ bl FUN_02046528
+ str r0, [sp, #0x0]
+ mov r0, #0xb
+ mov r1, #0x18
+ bl FUN_02016998
+ add r4, r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x18
+ blx MI_CpuFill8
+ strh r5, [r4, #0x12]
+ strh r7, [r4, #0x14]
+ ldr r0, [sp, #0x0]
+ strh r6, [r4, #0x10]
+ ldr r0, [r0, #0x10]
+ ldr r1, _0205FD6C ; =FUN_0205FCE8
+ add r2, r4, #0x0
+ bl FUN_0204640C
+ pop {r3-r7, pc}
+ .balign 4
+_0205FD6C: .word FUN_0205FCE8
+
+ thumb_func_start FUN_0205FD70
+FUN_0205FD70: ; 0x0205FD70
+ push {r3-r7, lr}
+ add r4, r0, #0x0
+ bl FUN_02046528
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0204652C
+ add r5, r0, #0x0
+ bl FUN_02031190
+ mov r1, #0x1
+ sub r0, r1, r0
+ bl FUN_020316E0
+ add r7, r0, #0x0
+ bne _0205FD96
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0205FD96:
+ ldrh r1, [r5, #0x2]
+ add r0, r6, #0x0
+ bl FUN_020394B8
+ add r4, r0, #0x0
+ ldrh r0, [r5, #0x0]
+ cmp r0, #0x0
+ beq _0205FDB0
+ cmp r0, #0x1
+ beq _0205FDBC
+ cmp r0, #0x2
+ beq _0205FDC8
+ b _0205FDD2
+_0205FDB0:
+ add r0, r6, #0x0
+ add r1, r7, #0x0
+ bl FUN_02244660
+ strh r0, [r4, #0x0]
+ b _0205FDD2
+_0205FDBC:
+ add r0, r6, #0x0
+ add r1, r7, #0x0
+ bl FUN_022446BC
+ strh r0, [r4, #0x0]
+ b _0205FDD2
+_0205FDC8:
+ add r0, r6, #0x0
+ add r1, r7, #0x0
+ bl FUN_022446E0
+ strh r0, [r4, #0x0]
+_0205FDD2:
+ add r0, r5, #0x0
+ bl FUN_02016A18
+ mov r0, #0x1
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0205FDDC
+FUN_0205FDDC: ; 0x0205FDDC
+ push {r3-r7, lr}
+ add r5, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_02046528
+ add r7, r0, #0x0
+ mov r0, #0xb
+ mov r1, #0x4
+ bl FUN_02016998
+ add r4, r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x4
+ blx MI_CpuFill8
+ strh r5, [r4, #0x0]
+ strh r6, [r4, #0x2]
+ ldr r0, [r7, #0x10]
+ ldr r1, _0205FE0C ; =FUN_0205FD70
+ add r2, r4, #0x0
+ bl FUN_0204640C
+ pop {r3-r7, pc}
+ nop
+_0205FE0C: .word FUN_0205FD70
+
+ thumb_func_start FUN_0205FE10
+FUN_0205FE10: ; 0x0205FE10
+ push {r4-r7, lr}
+ sub sp, #0x14
+ str r0, [sp, #0x0]
+ bl FUN_02029FC8
+ mov r1, #0x35
+ bl FUN_0202A150
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ cmp r0, #0x14
+ bhs _0205FE30
+ add sp, #0x14
+ mov r0, #0x0
+ pop {r4-r7, pc}
+_0205FE30:
+ ldr r0, [sp, #0x0]
+ bl FUN_0202A8D8
+ mov r1, #0xd
+ mov r2, #0x0
+ add r4, r0, #0x0
+ bl FUN_0202A578
+ lsl r0, r0, #0x18
+ mov r1, #0x0
+ lsr r7, r0, #0x18
+ add r0, r4, #0x0
+ add r2, r1, #0x0
+ bl FUN_0202A578
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ add r0, r4, #0x0
+ mov r1, #0x1
+ mov r2, #0x0
+ bl FUN_0202A578
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ add r0, r4, #0x0
+ mov r1, #0xe
+ mov r2, #0x0
+ bl FUN_0202A578
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0xc]
+ add r0, r4, #0x0
+ mov r1, #0x2
+ mov r2, #0x0
+ bl FUN_0202A578
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x8]
+ add r0, r4, #0x0
+ mov r1, #0x3
+ mov r2, #0x0
+ bl FUN_0202A578
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x4]
+ cmp r7, #0x0
+ beq _0205FEA2
+ cmp r6, #0x0
+ beq _0205FEA2
+ cmp r5, #0x0
+ beq _0205FEA2
+ add sp, #0x14
+ mov r0, #0x0
+ pop {r4-r7, pc}
+_0205FEA2:
+ ldr r0, [sp, #0x0]
+ bl FUN_02026CC4
+ cmp r7, #0x0
+ bne _0205FEDC
+ mov r1, #0x55
+ bl FUN_02025D94
+ cmp r0, #0x0
+ beq _0205FEC6
+ add r0, r4, #0x0
+ mov r1, #0xd
+ mov r2, #0x1
+ bl FUN_0202A578
+ add sp, #0x14
+ mov r0, #0x1
+ pop {r4-r7, pc}
+_0205FEC6:
+ ldr r0, [sp, #0xc]
+ cmp r0, #0x0
+ bne _0205FED6
+ add r0, r4, #0x0
+ mov r1, #0xe
+ mov r2, #0x1
+ bl FUN_0202A578
+_0205FED6:
+ add sp, #0x14
+ mov r0, #0x4
+ pop {r4-r7, pc}
+_0205FEDC:
+ ldr r1, [sp, #0x10]
+ cmp r1, #0x32
+ bhs _0205FEE8
+ add sp, #0x14
+ mov r0, #0x0
+ pop {r4-r7, pc}
+_0205FEE8:
+ cmp r6, #0x0
+ bne _0205FF1C
+ mov r1, #0x56
+ bl FUN_02025D94
+ cmp r0, #0x0
+ beq _0205FF06
+ add r0, r4, #0x0
+ mov r1, #0x0
+ mov r2, #0x1
+ bl FUN_0202A578
+ add sp, #0x14
+ mov r0, #0x2
+ pop {r4-r7, pc}
+_0205FF06:
+ ldr r0, [sp, #0x8]
+ cmp r0, #0x0
+ bne _0205FF16
+ add r0, r4, #0x0
+ mov r1, #0x2
+ mov r2, #0x1
+ bl FUN_0202A578
+_0205FF16:
+ add sp, #0x14
+ mov r0, #0x4
+ pop {r4-r7, pc}
+_0205FF1C:
+ cmp r1, #0x64
+ blo _0205FF24
+ cmp r5, #0x0
+ beq _0205FF2A
+_0205FF24:
+ add sp, #0x14
+ mov r0, #0x0
+ pop {r4-r7, pc}
+_0205FF2A:
+ mov r1, #0x57
+ bl FUN_02025D94
+ cmp r0, #0x0
+ beq _0205FF44
+ mov r1, #0x1
+ add r0, r4, #0x0
+ add r2, r1, #0x0
+ bl FUN_0202A578
+ add sp, #0x14
+ mov r0, #0x3
+ pop {r4-r7, pc}
+_0205FF44:
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ bne _0205FF54
+ add r0, r4, #0x0
+ mov r1, #0x3
+ mov r2, #0x1
+ bl FUN_0202A578
+_0205FF54:
+ mov r0, #0x4
+ add sp, #0x14
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0205FF5C
+FUN_0205FF5C: ; 0x0205FF5C
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r4, r0, #0x0
+ bl FUN_02029FC8
+ mov r1, #0x35
+ bl FUN_0202A150
+ lsl r0, r0, #0x10
+ lsr r7, r0, #0x10
+ cmp r7, #0x14
+ bhs _0205FF7A
+ add sp, #0xc
+ mov r0, #0x0
+ pop {r4-r7, pc}
+_0205FF7A:
+ add r0, r4, #0x0
+ bl FUN_0202A8D8
+ mov r1, #0xd
+ mov r2, #0x0
+ str r0, [sp, #0x8]
+ bl FUN_0202A578
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ mov r1, #0x0
+ ldr r0, [sp, #0x8]
+ add r2, r1, #0x0
+ bl FUN_0202A578
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ ldr r0, [sp, #0x8]
+ mov r1, #0x1
+ mov r2, #0x0
+ bl FUN_0202A578
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ ldr r0, [sp, #0x8]
+ mov r1, #0xe
+ mov r2, #0x0
+ bl FUN_0202A578
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x8]
+ mov r1, #0x2
+ mov r2, #0x0
+ bl FUN_0202A578
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x8]
+ mov r1, #0x3
+ mov r2, #0x0
+ bl FUN_0202A578
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r6, #0x0
+ beq _0205FFEA
+ cmp r4, #0x0
+ beq _0205FFEA
+ cmp r5, #0x0
+ beq _0205FFEA
+ add sp, #0xc
+ mov r0, #0x0
+ pop {r4-r7, pc}
+_0205FFEA:
+ cmp r6, #0x0
+ bne _02060000
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ beq _0205FFFA
+ add sp, #0xc
+ mov r0, #0x4
+ pop {r4-r7, pc}
+_0205FFFA:
+ add sp, #0xc
+ mov r0, #0x1
+ pop {r4-r7, pc}
+_02060000:
+ cmp r7, #0x32
+ bhs _0206000A
+ add sp, #0xc
+ mov r0, #0x0
+ pop {r4-r7, pc}
+_0206000A:
+ cmp r4, #0x0
+ bne _02060020
+ ldr r0, [sp, #0x0]
+ cmp r0, #0x0
+ beq _0206001A
+ add sp, #0xc
+ mov r0, #0x5
+ pop {r4-r7, pc}
+_0206001A:
+ add sp, #0xc
+ mov r0, #0x2
+ pop {r4-r7, pc}
+_02060020:
+ cmp r7, #0x64
+ bhs _0206002A
+ add sp, #0xc
+ mov r0, #0x0
+ pop {r4-r7, pc}
+_0206002A:
+ cmp r5, #0x0
+ beq _02060034
+ add sp, #0xc
+ mov r0, #0x0
+ pop {r4-r7, pc}
+_02060034:
+ cmp r0, #0x0
+ beq _0206003E
+ add sp, #0xc
+ mov r0, #0x6
+ pop {r4-r7, pc}
+_0206003E:
+ mov r0, #0x3
+ add sp, #0xc
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_02060044
+FUN_02060044: ; 0x02060044
+ add r0, #0xa8
+ ldr r0, [r0, #0x0]
+ ldr r2, [r1, #0x0]
+ ldrh r3, [r0, #0x24]
+ add r2, r3, r2
+ strh r2, [r0, #0x24]
+ ldrh r3, [r0, #0x28]
+ ldr r2, [r1, #0x4]
+ add r2, r3, r2
+ strh r2, [r0, #0x28]
+ ldrh r2, [r0, #0x26]
+ ldr r1, [r1, #0x8]
+ add r1, r2, r1
+ strh r1, [r0, #0x26]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02060064
+FUN_02060064: ; 0x02060064
+ ldr r1, _0206006C ; =0x02E90EDD
+ mul r1, r0
+ add r0, r1, #0x1
+ bx lr
+ .balign 4
+_0206006C: .word 0x02E90EDD
+
+ thumb_func_start FUN_02060070
+FUN_02060070: ; 0x02060070
+ ldr r1, _02060078 ; =0x5D588B65
+ mul r1, r0
+ add r0, r1, #0x1
+ bx lr
+ .balign 4
+_02060078: .word 0x5D588B65
+
+ thumb_func_start FUN_0206007C
+FUN_0206007C: ; 0x0206007C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_0202881C
+ bl FUN_020287A4
+ bl FUN_02060070
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0202A8D8
+ add r1, r4, #0x0
+ bl FUN_0202A5CC
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020600A0
+FUN_020600A0: ; 0x020600A0
+ push {r3-r6, lr}
+ sub sp, #0x4
+ add r5, r0, #0x0
+ bl FUN_0202A8D8
+ add r6, r0, #0x0
+ bl FUN_0202A5D0
+ bl FUN_02060070
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ bl FUN_0202A5CC
+ add r0, r4, #0x0
+ bl FUN_02060064
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ bl FUN_0202A8CC
+ mov r1, #0xa
+ add r2, sp, #0x0
+ bl FUN_0202A2C4
+ ldr r0, [sp, #0x0]
+ add sp, #0x4
+ pop {r3-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_020600DC
+FUN_020600DC: ; 0x020600DC
+ push {r3-r6, lr}
+ sub sp, #0x4
+ add r6, r0, #0x0
+ bl FUN_0202A8D8
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_0202A8CC
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0202A5D0
+ bl FUN_02060064
+ mov r1, #0x0
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ add r2, r1, #0x0
+ bl FUN_0202A240
+ add r1, r0, #0x0
+ lsl r1, r1, #0x10
+ add r0, r4, #0x0
+ lsr r1, r1, #0x10
+ mov r2, #0x0
+ bl FUN_0202A538
+ mov r1, #0x18
+ add r5, r0, #0x0
+ mul r5, r1
+ mov r4, #0x0
+ cmp r5, #0x0
+ ble _0206012E
+ ldr r0, [sp, #0x0]
+_02060122:
+ bl FUN_02060064
+ add r4, r4, #0x1
+ str r0, [sp, #0x0]
+ cmp r4, r5
+ blt _02060122
+_0206012E:
+ add r0, r6, #0x0
+ bl FUN_0202A8CC
+ mov r1, #0xa
+ add r2, sp, #0x0
+ bl FUN_0202A2C4
+ ldr r0, [sp, #0x0]
+ add sp, #0x4
+ pop {r3-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02060144
+FUN_02060144: ; 0x02060144
+ ldr r0, [r0, #0x1c]
+ ldr r1, [r0, #0x0]
+ ldr r0, _02060158 ; =0x000001ED
+ cmp r1, r0
+ bne _02060152
+ mov r0, #0x1
+ bx lr
+_02060152:
+ mov r0, #0x0
+ bx lr
+ nop
+_02060158: .word 0x000001ED
+
+ thumb_func_start FUN_0206015C
+FUN_0206015C: ; 0x0206015C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r0, #0xb
+ mov r1, #0x10
+ bl FUN_020169D8
+ add r4, r0, #0x0
+ mov r0, #0xb
+ bl FUN_02244DB0
+ str r0, [r4, #0x0]
+ mov r0, #0xb
+ add r1, r5, #0x0
+ bl FUN_02245114
+ str r0, [r4, #0x4]
+ mov r0, #0x0
+ strb r0, [r4, #0xc]
+ strb r0, [r4, #0xd]
+ ldr r0, [r5, #0x10]
+ ldr r1, _02060190 ; =FUN_02060194
+ add r2, r4, #0x0
+ bl FUN_0204640C
+ pop {r3-r5, pc}
+ nop
+_02060190: .word FUN_02060194
+
+ thumb_func_start FUN_02060194
+FUN_02060194: ; 0x02060194
+ push {r3-r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ bl FUN_02046528
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldrb r0, [r4, #0xc]
+ cmp r0, #0x8
+ bls _020601B0
+ b _02060332
+_020601B0:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_020601BC: ; jump table (using 16-bit offset)
+ .short _020601CE - _020601BC - 2; case 0
+ .short _020601F2 - _020601BC - 2; case 1
+ .short _020601FE - _020601BC - 2; case 2
+ .short _02060226 - _020601BC - 2; case 3
+ .short _02060232 - _020601BC - 2; case 4
+ .short _020602A2 - _020601BC - 2; case 5
+ .short _020602F0 - _020601BC - 2; case 6
+ .short _020602FC - _020601BC - 2; case 7
+ .short _02060312 - _020601BC - 2; case 8
+_020601CE:
+ add r0, r6, #0x0
+ mov r1, #0x1
+ bl FUN_0206367C
+ ldrb r0, [r4, #0xd]
+ ldr r1, [r4, #0x4]
+ bl FUN_02245198
+ ldr r0, [r4, #0x4]
+ bl FUN_022451F0
+ str r0, [r4, #0x8]
+ add r0, r5, #0x0
+ bl FUN_0204AFC8
+ mov r0, #0x1
+ strb r0, [r4, #0xc]
+ b _02060332
+_020601F2:
+ add r0, r5, #0x0
+ bl FUN_0204AF3C
+ mov r0, #0x2
+ strb r0, [r4, #0xc]
+ b _02060332
+_020601FE:
+ ldr r0, [r6, #0xc]
+ bl FUN_020462AC
+ ldrb r1, [r4, #0xd]
+ cmp r1, #0x0
+ bne _02060210
+ bl FUN_0205F1C4
+ b _02060218
+_02060210:
+ cmp r1, #0x5
+ bne _02060218
+ bl FUN_0205F1D4
+_02060218:
+ ldr r1, [r4, #0x8]
+ add r0, r5, #0x0
+ bl FUN_02049160
+ mov r0, #0x3
+ strb r0, [r4, #0xc]
+ b _02060332
+_02060226:
+ add r0, r5, #0x0
+ bl FUN_0204AF84
+ mov r0, #0x4
+ strb r0, [r4, #0xc]
+ b _02060332
+_02060232:
+ ldr r0, [r6, #0x38]
+ bl FUN_020553A0
+ ldrb r1, [r4, #0xd]
+ add r7, r0, #0x0
+ add r1, r1, #0x1
+ strb r1, [r4, #0xd]
+ ldrb r1, [r4, #0xd]
+ cmp r1, #0x5
+ bhi _02060290
+ add r0, r6, #0x0
+ bl FUN_02245088
+ add r6, r0, #0x0
+ add r0, r7, #0x0
+ mov r1, #0x1
+ bl FUN_0205889C
+ ldr r0, [r4, #0x0]
+ add r1, r6, #0x0
+ bl FUN_02244DC4
+ ldr r0, [r4, #0x0]
+ bl FUN_02244EF8
+ mov r0, #0x0
+ strb r0, [r4, #0xe]
+ ldr r0, _02060338 ; =0x00000679
+ bl FUN_020054C8
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x6
+ str r0, [sp, #0x4]
+ mov r0, #0x1
+ str r0, [sp, #0x8]
+ mov r0, #0xb
+ str r0, [sp, #0xc]
+ ldr r3, _0206033C ; =0x0000FFFF
+ add r0, r5, #0x0
+ mov r1, #0x3
+ mov r2, #0x11
+ bl FUN_0204C1B4
+ mov r0, #0x5
+ strb r0, [r4, #0xc]
+ b _02060332
+_02060290:
+ mov r1, #0x0
+ bl FUN_0205889C
+ add r0, r5, #0x0
+ bl FUN_0204B00C
+ mov r0, #0x8
+ strb r0, [r4, #0xc]
+ b _02060332
+_020602A2:
+ ldrb r0, [r4, #0xe]
+ add r0, r0, #0x1
+ strb r0, [r4, #0xe]
+ ldrb r0, [r4, #0xe]
+ cmp r0, #0x3c
+ bhs _020602B8
+ ldr r0, _02060340 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x1
+ tst r0, r1
+ beq _02060332
+_020602B8:
+ ldrb r0, [r4, #0xd]
+ ldr r1, [r4, #0x4]
+ bl FUN_02245198
+ ldr r0, [r4, #0x4]
+ bl FUN_022451F0
+ str r0, [r4, #0x8]
+ ldr r0, _02060338 ; =0x00000679
+ bl FUN_020054C8
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x6
+ str r0, [sp, #0x4]
+ mov r0, #0x1
+ str r0, [sp, #0x8]
+ mov r0, #0xb
+ str r0, [sp, #0xc]
+ ldr r3, _0206033C ; =0x0000FFFF
+ add r0, r5, #0x0
+ mov r1, #0x3
+ mov r2, #0x10
+ bl FUN_0204C1B4
+ mov r0, #0x6
+ strb r0, [r4, #0xc]
+ b _02060332
+_020602F0:
+ ldr r0, [r4, #0x0]
+ bl FUN_02244F18
+ mov r0, #0x7
+ strb r0, [r4, #0xc]
+ b _02060332
+_020602FC:
+ ldr r0, [r4, #0x0]
+ bl FUN_02244F24
+ cmp r0, #0x0
+ beq _02060332
+ ldr r0, [r4, #0x0]
+ bl FUN_02244F2C
+ mov r0, #0x1
+ strb r0, [r4, #0xc]
+ b _02060332
+_02060312:
+ add r0, r6, #0x0
+ mov r1, #0x0
+ bl FUN_0206367C
+ ldr r0, [r4, #0x4]
+ bl FUN_02245190
+ ldr r0, [r4, #0x0]
+ bl FUN_02244DBC
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x10
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02060332:
+ mov r0, #0x0
+ add sp, #0x10
+ pop {r3-r7, pc}
+ .balign 4
+_02060338: .word 0x00000679
+_0206033C: .word 0x0000FFFF
+_02060340: .word 0x021C48B8
+
+ thumb_func_start FUN_02060344
+FUN_02060344: ; 0x02060344
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ str r1, [sp, #0x0]
+ cmp r1, #0x0
+ ble _020603AE
+ bl FUN_02029ABC
+ bl FUN_02029ACC
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_020238F4
+ add r7, r0, #0x0
+ ldr r0, [sp, #0x0]
+ mov r1, #0xa
+ add r6, r0, #0x0
+ mov r5, #0x0
+ mul r6, r1
+_0206036A:
+ add r0, r7, #0x0
+ add r1, r5, #0x0
+ bl FUN_020239D0
+ cmp r0, #0x0
+ beq _020603A4
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02029AD0
+ add r1, r0, #0x0
+ cmp r1, #0x0
+ ble _0206038C
+ cmp r1, #0xc8
+ bge _0206038C
+ sub r1, r1, r6
+ b _02060396
+_0206038C:
+ cmp r1, #0xc8
+ blt _02060394
+ bl ErrorHandling
+_02060394:
+ mov r1, #0x0
+_02060396:
+ cmp r1, #0x0
+ bge _0206039C
+ mov r1, #0x0
+_0206039C:
+ add r0, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_02029AD8
+_020603A4:
+ add r0, r5, #0x1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #0x8
+ blo _0206036A
+_020603AE:
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_020603B0
+FUN_020603B0: ; 0x020603B0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_0202AA38
+ add r2, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02060588
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020603C8
+FUN_020603C8: ; 0x020603C8
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ mov r5, #0x0
+_020603CE:
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ bl FUN_0202AA74
+ cmp r0, #0x0
+ beq _020603E2
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ bl FUN_020603B0
+_020603E2:
+ add r0, r5, #0x1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #0x3
+ blo _020603CE
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020603F0
+FUN_020603F0: ; 0x020603F0
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ mov r4, #0x0
+_020603F6:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0202AA74
+ cmp r0, #0x0
+ beq _02060430
+ bl FUN_0201B9EC
+ lsl r0, r0, #0x4
+ lsr r6, r0, #0x10
+ cmp r6, #0x10
+ blo _02060412
+ bl ErrorHandling
+_02060412:
+ cmp r6, #0x0
+ bne _02060420
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_020603B0
+ b _02060430
+_02060420:
+ add r0, r5, #0x0
+ bl FUN_0202AA38
+ add r2, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_020605D8
+_02060430:
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0x3
+ blo _020603F6
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0206043C
+FUN_0206043C: ; 0x0206043C
+ push {r4, lr}
+ add r4, r0, #0x0
+ cmp r4, #0x1d
+ blo _02060448
+ bl ErrorHandling
+_02060448:
+ ldr r0, _02060450 ; =0x020F7460
+ lsl r1, r4, #0x2
+ ldr r0, [r0, r1]
+ pop {r4, pc}
+ .balign 4
+_02060450: .word 0x020F7460
+
+ thumb_func_start FUN_02060454
+FUN_02060454: ; 0x02060454
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ mov r5, #0x0
+_0206045A:
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ bl FUN_0202AA74
+ cmp r0, #0x0
+ beq _0206046A
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0206046A:
+ add r0, r5, #0x1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #0x3
+ blo _0206045A
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02060478
+FUN_02060478: ; 0x02060478
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_02060454
+ cmp r0, #0x0
+ beq _0206048E
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0202AA20
+_0206048E:
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02060490
+FUN_02060490: ; 0x02060490
+ push {r3-r7, lr}
+ sub sp, #0x20
+ add r5, r1, #0x0
+ str r0, [sp, #0x10]
+ bl FUN_0202A9B0
+ add r1, r5, #0x0
+ str r0, [sp, #0x14]
+ bl FUN_0202AAA0
+ add r4, r0, #0x0
+ cmp r5, #0x0
+ beq _020604B4
+ cmp r5, #0x1
+ beq _020604BA
+ cmp r5, #0x2
+ beq _020604C2
+ b _020604C8
+_020604B4:
+ ldr r7, _02060580 ; =0x000001E1
+ mov r6, #0x32
+ b _020604D0
+_020604BA:
+ mov r7, #0x7a
+ lsl r7, r7, #0x2
+ mov r6, #0x32
+ b _020604D0
+_020604C2:
+ ldr r7, _02060584 ; =0x000001EB
+ mov r6, #0x28
+ b _020604D0
+_020604C8:
+ bl ErrorHandling
+ add sp, #0x20
+ pop {r3-r7, pc}
+_020604D0:
+ add r0, r4, #0x0
+ mov r1, #0x4
+ add r2, r7, #0x0
+ bl FUN_0202AAFC
+ add r0, r4, #0x0
+ mov r1, #0x6
+ add r2, r6, #0x0
+ bl FUN_0202AAFC
+ ldr r0, [sp, #0x10]
+ bl FUN_020238F4
+ str r0, [sp, #0x18]
+ mov r0, #0x4
+ bl FUN_020669C0
+ str r0, [sp, #0x1c]
+ bl FUN_02066978
+ ldr r0, [sp, #0x18]
+ bl FUN_020239C0
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ str r1, [sp, #0x4]
+ mov r1, #0x1
+ str r1, [sp, #0x8]
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x1c]
+ add r1, r7, #0x0
+ add r2, r6, #0x0
+ mov r3, #0x20
+ bl FUN_02066ACC
+ add r0, r4, #0x0
+ mov r1, #0x7
+ mov r2, #0x0
+ bl FUN_0202AAFC
+ add r0, r4, #0x0
+ mov r1, #0x8
+ mov r2, #0x1
+ bl FUN_0202AAFC
+ ldr r0, [sp, #0x1c]
+ mov r1, #0xae
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r2, r0, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x2
+ bl FUN_0202AAFC
+ mov r1, #0x0
+ ldr r0, [sp, #0x1c]
+ add r2, r1, #0x0
+ bl FUN_020671BC
+ add r2, r0, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x3
+ bl FUN_0202AAFC
+ ldr r0, [sp, #0x1c]
+ mov r1, #0xa3
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r2, r0, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x5
+ bl FUN_0202AAFC
+ ldr r0, [sp, #0x1c]
+ bl FUN_02016A18
+ ldr r0, [sp, #0x14]
+ bl FUN_0202AA38
+ add r2, r0, #0x0
+ ldr r0, [sp, #0x14]
+ add r1, r5, #0x0
+ bl FUN_02060588
+ add sp, #0x20
+ pop {r3-r7, pc}
+ .balign 4
+_02060580: .word 0x000001E1
+_02060584: .word 0x000001EB
+
+ thumb_func_start FUN_02060588
+FUN_02060588: ; 0x02060588
+ push {r3-r7, lr}
+ sub sp, #0x8
+ str r0, [sp, #0x0]
+ str r1, [sp, #0x4]
+ add r6, r2, #0x0
+ bl FUN_0202AA40
+ ldr r7, _020605D0 ; =0x020F7460
+ lsl r0, r0, #0x2
+ ldr r4, [r7, r0]
+_0206059C:
+ bl FUN_0201B9EC
+ ldr r1, _020605D4 ; =0x000008D4
+ blx _s32_div_f
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ cmp r5, #0x1d
+ blo _020605B2
+ bl ErrorHandling
+_020605B2:
+ lsl r0, r5, #0x18
+ lsr r2, r0, #0x18
+ lsl r0, r2, #0x2
+ ldr r3, [r7, r0]
+ cmp r3, r6
+ beq _0206059C
+ cmp r3, r4
+ beq _0206059C
+ ldr r0, [sp, #0x0]
+ ldr r1, [sp, #0x4]
+ bl FUN_02060688
+ add sp, #0x8
+ pop {r3-r7, pc}
+ nop
+_020605D0: .word 0x020F7460
+_020605D4: .word 0x000008D4
+
+ thumb_func_start FUN_020605D8
+FUN_020605D8: ; 0x020605D8
+ push {r3-r7, lr}
+ sub sp, #0x8
+ str r0, [sp, #0x0]
+ str r1, [sp, #0x4]
+ add r7, r2, #0x0
+ bl FUN_0202AA40
+ mov r1, #0xc
+ ldr r2, _0206067C ; =0x020F74D4
+ mul r1, r0
+ ldrh r0, [r2, r1]
+ add r4, r2, r1
+ cmp r0, #0x1
+ bne _0206061E
+ ldrh r0, [r4, #0x2]
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ ldr r0, _02060680 ; =0x020F7460
+ lsl r1, r2, #0x2
+ ldr r3, [r0, r1]
+ cmp r3, r7
+ bne _02060612
+ ldr r0, [sp, #0x0]
+ ldr r1, [sp, #0x4]
+ add r2, r7, #0x0
+ bl FUN_02060588
+ add sp, #0x8
+ pop {r3-r7, pc}
+_02060612:
+ ldr r0, [sp, #0x0]
+ ldr r1, [sp, #0x4]
+ bl FUN_02060688
+ add sp, #0x8
+ pop {r3-r7, pc}
+_0206061E:
+ ldrh r5, [r4, #0x0]
+ cmp r5, #0x0
+ bne _02060628
+ bl ErrorHandling
+_02060628:
+ cmp r5, #0x1
+ bhi _02060630
+ mov r6, #0x0
+ b _02060658
+_02060630:
+ bl FUN_0201B9EC
+ add r6, r0, #0x0
+ ldr r0, _02060684 ; =0x0000FFFF
+ add r1, r5, #0x0
+ blx _s32_div_f
+ add r1, r0, #0x0
+ add r1, r1, #0x1
+ lsl r1, r1, #0x10
+ add r0, r6, #0x0
+ lsr r1, r1, #0x10
+ blx _s32_div_f
+ lsl r0, r0, #0x10
+ lsr r6, r0, #0x10
+ cmp r6, r5
+ blo _02060658
+ bl ErrorHandling
+_02060658:
+ lsl r0, r6, #0x18
+ lsr r0, r0, #0x17
+ add r0, r4, r0
+ ldrh r0, [r0, #0x2]
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ ldr r0, _02060680 ; =0x020F7460
+ lsl r1, r2, #0x2
+ ldr r3, [r0, r1]
+ cmp r3, r7
+ beq _0206061E
+ ldr r0, [sp, #0x0]
+ ldr r1, [sp, #0x4]
+ bl FUN_02060688
+ add sp, #0x8
+ pop {r3-r7, pc}
+ nop
+_0206067C: .word 0x020F74D4
+_02060680: .word 0x020F7460
+_02060684: .word 0x0000FFFF
+
+ thumb_func_start FUN_02060688
+FUN_02060688: ; 0x02060688
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ add r7, r3, #0x0
+ bl FUN_0202AAA0
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_0202AA58
+ ldr r0, [sp, #0x0]
+ mov r1, #0x1
+ add r2, r7, #0x0
+ bl FUN_0202AAFC
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020606B0
+FUN_020606B0: ; 0x020606B0
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02046528
+ add r0, r4, #0x0
+ bl FUN_0204652C
+ add r2, r0, #0x0
+ ldr r1, _020606CC ; =0x020F7630
+ add r0, r4, #0x0
+ add r2, #0xc
+ bl FUN_02046500
+ pop {r4, pc}
+ .balign 4
+_020606CC: .word 0x020F7630
+
+ thumb_func_start FUN_020606D0
+FUN_020606D0: ; 0x020606D0
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ bl FUN_02046528
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x6
+ bhi _0206078A
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_020606F6: ; jump table (using 16-bit offset)
+ .short _02060704 - _020606F6 - 2; case 0
+ .short _0206072C - _020606F6 - 2; case 1
+ .short _0206073A - _020606F6 - 2; case 2
+ .short _02060748 - _020606F6 - 2; case 3
+ .short _02060756 - _020606F6 - 2; case 4
+ .short _02060764 - _020606F6 - 2; case 5
+ .short _02060772 - _020606F6 - 2; case 6
+_02060704:
+ ldr r0, [r4, #0x24]
+ add r3, r4, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x28]
+ add r3, #0xc
+ str r0, [sp, #0x4]
+ ldr r1, [r4, #0x0]
+ ldr r2, [r4, #0x8]
+ add r0, r6, #0x0
+ bl FUN_0224891C
+ ldr r1, [r4, #0x0]
+ ldr r2, [r4, #0x8]
+ add r0, r6, #0x0
+ bl FUN_022488FC
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _0206078A
+_0206072C:
+ add r0, r5, #0x0
+ bl FUN_0204AFC8
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _0206078A
+_0206073A:
+ add r0, r5, #0x0
+ bl FUN_0204AF3C
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _0206078A
+_02060748:
+ add r0, r5, #0x0
+ bl FUN_020606B0
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _0206078A
+_02060756:
+ add r0, r5, #0x0
+ bl FUN_0204AF84
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _0206078A
+_02060764:
+ add r0, r5, #0x0
+ bl FUN_0204B00C
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _0206078A
+_02060772:
+ ldr r0, [r4, #0x24]
+ bl FUN_02016A18
+ ldr r0, [r4, #0x28]
+ bl FUN_02016A18
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x8
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_0206078A:
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02060790
+FUN_02060790: ; 0x02060790
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ add r5, r1, #0x0
+ add r0, r3, #0x0
+ mov r1, #0x2c
+ add r6, r2, #0x0
+ str r3, [sp, #0x0]
+ bl FUN_02016998
+ mov r1, #0x0
+ mov r2, #0x2c
+ add r4, r0, #0x0
+ blx FUN_020DF4A4
+ mov r0, #0x0
+ str r0, [r4, #0x4]
+ str r5, [r4, #0x0]
+ ldr r0, [sp, #0x0]
+ str r6, [r4, #0x8]
+ bl FUN_020669C0
+ str r0, [r4, #0x24]
+ ldr r0, [sp, #0x0]
+ bl FUN_020669C0
+ str r0, [r4, #0x28]
+ ldr r1, _020607D0 ; =FUN_020606D0
+ add r0, r7, #0x0
+ add r2, r4, #0x0
+ bl FUN_0204640C
+ pop {r3-r7, pc}
+ .balign 4
+_020607D0: .word FUN_020606D0
+
+ thumb_func_start FUN_020607D4
+FUN_020607D4: ; 0x020607D4
+ push {r3-r7, lr}
+ sub sp, #0x28
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ mov r0, #0xb
+ mov r1, #0x80
+ add r7, r2, #0x0
+ str r3, [sp, #0xc]
+ bl FUN_020169D8
+ add r4, r0, #0x0
+ strb r6, [r4, #0x1]
+ strb r7, [r4, #0x4]
+ ldr r0, [sp, #0xc]
+ add r2, r4, #0x0
+ str r0, [r4, #0x18]
+ ldr r0, [sp, #0x40]
+ add r2, #0x34
+ str r0, [r4, #0x1c]
+ ldr r0, [sp, #0x44]
+ mov r7, #0x9
+ str r0, [r4, #0x20]
+ ldr r3, [r5, #0x40]
+_02060802:
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ sub r7, r7, #0x1
+ bne _02060802
+ mov r7, #0x0
+ sub r0, r7, #0x1
+ str r0, [r4, #0x10]
+ strb r7, [r4, #0x5]
+ mov r0, #0x40
+ add r1, r7, #0x0
+ add r2, r7, #0x0
+ str r7, [r4, #0x8]
+ bl FUN_0200433C
+ cmp r6, #0x3
+ bne _0206085C
+ mov r0, #0x22
+ str r0, [sp, #0x14]
+ ldr r0, [r5, #0x38]
+ bl FUN_02055320
+ add r6, r0, #0x0
+ ldr r0, [r5, #0x38]
+ bl FUN_0205532C
+ add r1, r0, #0x0
+ mov r0, #0x3
+ str r0, [sp, #0x0]
+ mov r0, #0x6
+ str r0, [sp, #0x4]
+ add r0, sp, #0x18
+ mov r2, #0x1
+ str r0, [sp, #0x8]
+ add r0, r6, #0x0
+ sub r3, r2, #0x4
+ bl FUN_0204A840
+ mov r0, #0x19
+ lsl r0, r0, #0x10
+ str r0, [sp, #0x10]
+ mov r0, #0xe
+ lsl r0, r0, #0x10
+ mov r7, #0x1
+ str r0, [r4, #0x10]
+ b _02060892
+_0206085C:
+ cmp r6, #0x2
+ bne _02060892
+ ldr r0, _02060918 ; =0x000001C1
+ str r0, [sp, #0x14]
+ ldr r0, [r5, #0x38]
+ bl FUN_02055320
+ add r6, r0, #0x0
+ ldr r0, [r5, #0x38]
+ bl FUN_0205532C
+ add r1, r0, #0x0
+ mov r0, #0x6
+ str r0, [sp, #0x0]
+ mov r2, #0x3
+ str r2, [sp, #0x4]
+ add r0, sp, #0x18
+ str r0, [sp, #0x8]
+ add r0, r6, #0x0
+ sub r2, r2, #0x5
+ mov r3, #0x2
+ bl FUN_0204A840
+ mov r0, #0x3
+ lsl r0, r0, #0x12
+ mov r7, #0x1
+ str r0, [sp, #0x10]
+_02060892:
+ cmp r7, #0x0
+ beq _02060906
+ add r3, r4, #0x0
+ ldr r1, [sp, #0x14]
+ add r0, r5, #0x0
+ add r2, sp, #0x18
+ add r3, #0x30
+ bl FUN_0204A8C4
+ cmp r0, #0x0
+ beq _020608F8
+ ldr r0, [sp, #0x10]
+ add r1, r4, #0x0
+ str r0, [r4, #0xc]
+ mov r0, #0x0
+ str r0, [r4, #0x14]
+ strb r0, [r4, #0x3]
+ mov r0, #0x1
+ lsl r0, r0, #0xa
+ str r0, [r4, #0x7c]
+ ldr r0, [r5, #0x38]
+ add r1, #0x24
+ bl FUN_02055350
+ ldr r0, [r5, #0x20]
+ bl FUN_0201EC88
+ add r0, r4, #0x0
+ ldr r1, [r5, #0x20]
+ add r0, #0x24
+ bl FUN_0201EC68
+ mov r0, #0x0
+ ldr r1, [r4, #0x10]
+ mvn r0, r0
+ cmp r1, r0
+ beq _020608EC
+ mov r0, #0x0
+ strb r0, [r4, #0x2]
+ mov r0, #0x1
+ strb r0, [r4, #0x0]
+ add r0, r5, #0x0
+ bl FUN_02060BDC
+ b _020608F0
+_020608EC:
+ mov r0, #0x0
+ strb r0, [r4, #0x0]
+_020608F0:
+ ldr r0, _0206091C ; =0x000006DD
+ bl FUN_020054C8
+ b _0206090A
+_020608F8:
+ bl ErrorHandling
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x28
+ pop {r3-r7, pc}
+_02060906:
+ mov r0, #0x2
+ strb r0, [r4, #0x0]
+_0206090A:
+ ldr r0, [r5, #0x10]
+ ldr r1, _02060920 ; =FUN_020609A0
+ add r2, r4, #0x0
+ bl FUN_0204640C
+ add sp, #0x28
+ pop {r3-r7, pc}
+ .balign 4
+_02060918: .word 0x000001C1
+_0206091C: .word 0x000006DD
+_02060920: .word FUN_020609A0
+
+ thumb_func_start FUN_02060924
+FUN_02060924: ; 0x02060924
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ mov r0, #0xb
+ mov r1, #0x8
+ add r6, r2, #0x0
+ bl FUN_020169D8
+ add r2, r0, #0x0
+ str r6, [r2, #0x4]
+ strb r4, [r2, #0x0]
+ ldr r0, [r5, #0x10]
+ ldr r1, _02060944 ; =FUN_02060948
+ bl FUN_0204640C
+ pop {r4-r6, pc}
+ .balign 4
+_02060944: .word FUN_02060948
+
+ thumb_func_start FUN_02060948
+FUN_02060948: ; 0x02060948
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl FUN_02046528
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0204652C
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02046530
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ cmp r0, #0x0
+ beq _02060972
+ cmp r0, #0x1
+ beq _0206097C
+ cmp r0, #0x2
+ beq _0206098A
+ b _02060994
+_02060972:
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ bl FUN_0203888C
+ b _02060994
+_0206097C:
+ add r0, r4, #0x0
+ bl FUN_0204647C
+ cmp r0, #0x0
+ beq _02060994
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_0206098A:
+ add r0, r6, #0x0
+ bl FUN_02016A18
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_02060994:
+ ldr r0, [r5, #0x0]
+ add r0, r0, #0x1
+ str r0, [r5, #0x0]
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_020609A0
+FUN_020609A0: ; 0x020609A0
+ push {r3-r6, lr}
+ sub sp, #0xc
+ add r6, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldrb r1, [r4, #0x0]
+ cmp r1, #0x7
+ bhi _020609E4
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_020609C6: ; jump table (using 16-bit offset)
+ .short _020609D6 - _020609C6 - 2; case 0
+ .short _020609EC - _020609C6 - 2; case 1
+ .short _02060A4E - _020609C6 - 2; case 2
+ .short _02060A74 - _020609C6 - 2; case 3
+ .short _02060AB4 - _020609C6 - 2; case 4
+ .short _02060AC6 - _020609C6 - 2; case 5
+ .short _02060AE2 - _020609C6 - 2; case 6
+ .short _02060AF6 - _020609C6 - 2; case 7
+_020609D6:
+ bl FUN_02060C80
+ add r0, r4, #0x0
+ bl FUN_02060B0C
+ cmp r0, #0x0
+ bne _020609E6
+_020609E4:
+ b _02060B00
+_020609E6:
+ mov r0, #0x2
+ strb r0, [r4, #0x0]
+ b _02060B00
+_020609EC:
+ bl FUN_02060C80
+ add r0, r4, #0x0
+ bl FUN_02060B0C
+ add r6, r0, #0x0
+ ldrb r0, [r4, #0x2]
+ cmp r0, #0x0
+ bne _02060A2C
+ add r0, r4, #0x0
+ add r1, r4, #0x0
+ add r0, #0x10
+ add r1, #0x14
+ add r2, r4, #0x2
+ bl FUN_02060BC8
+ cmp r0, #0x0
+ beq _02060B00
+ ldr r0, [r5, #0x50]
+ mov r1, #0x1
+ mov r2, #0x0
+ bl FUN_021DA4EC
+ ldr r0, [r5, #0x50]
+ mov r1, #0x2
+ mov r2, #0x0
+ bl FUN_021DA4EC
+ ldr r0, _02060B08 ; =0x000006DE
+ bl FUN_020054C8
+ b _02060B00
+_02060A2C:
+ ldr r0, [r5, #0x50]
+ mov r1, #0x1
+ bl FUN_021DA58C
+ cmp r0, #0x0
+ beq _02060B00
+ ldr r0, [r5, #0x50]
+ mov r1, #0x2
+ bl FUN_021DA58C
+ cmp r0, #0x0
+ beq _02060B00
+ cmp r6, #0x0
+ beq _02060B00
+ mov r0, #0x2
+ strb r0, [r4, #0x0]
+ b _02060B00
+_02060A4E:
+ mov r0, #0x6
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ mov r0, #0xb
+ str r0, [sp, #0x8]
+ mov r0, #0x0
+ add r1, r0, #0x0
+ add r2, r0, #0x0
+ add r3, r0, #0x0
+ bl FUN_0200E1D0
+ mov r0, #0x0
+ mov r1, #0x6
+ bl FUN_020053CC
+ mov r0, #0x3
+ strb r0, [r4, #0x0]
+ b _02060B00
+_02060A74:
+ bl FUN_0200E308
+ cmp r0, #0x0
+ beq _02060A84
+ bl FUN_02005404
+ cmp r0, #0x0
+ beq _02060A8A
+_02060A84:
+ add sp, #0xc
+ mov r0, #0x0
+ pop {r3-r6, pc}
+_02060A8A:
+ mov r0, #0x0
+ ldr r1, [r4, #0x10]
+ mvn r0, r0
+ cmp r1, r0
+ beq _02060AA8
+ ldr r0, [r5, #0x4c]
+ ldr r1, [r5, #0x50]
+ mov r2, #0x1
+ bl FUN_021DA54C
+ ldr r0, [r5, #0x4c]
+ ldr r1, [r5, #0x50]
+ mov r2, #0x2
+ bl FUN_021DA54C
+_02060AA8:
+ add r0, r6, #0x0
+ bl FUN_0204AF3C
+ mov r0, #0x4
+ strb r0, [r4, #0x0]
+ b _02060B00
+_02060AB4:
+ ldrb r1, [r4, #0x1]
+ add r2, r4, #0x0
+ add r0, r5, #0x0
+ add r2, #0x34
+ bl FUN_02060924
+ mov r0, #0x5
+ strb r0, [r4, #0x0]
+ b _02060B00
+_02060AC6:
+ ldr r0, [r4, #0x20]
+ mov r2, #0x0
+ str r0, [sp, #0x0]
+ ldrb r0, [r4, #0x4]
+ mvn r2, r2
+ str r0, [sp, #0x4]
+ ldr r1, [r4, #0x18]
+ ldr r3, [r4, #0x1c]
+ add r0, r6, #0x0
+ bl FUN_020491A8
+ mov r0, #0x6
+ strb r0, [r4, #0x0]
+ b _02060B00
+_02060AE2:
+ ldr r1, [r4, #0x18]
+ add r0, r5, #0x0
+ bl FUN_0204AD8C
+ add r0, r6, #0x0
+ bl FUN_0204B0E8
+ mov r0, #0x7
+ strb r0, [r4, #0x0]
+ b _02060B00
+_02060AF6:
+ bl FUN_02016A18
+ add sp, #0xc
+ mov r0, #0x1
+ pop {r3-r6, pc}
+_02060B00:
+ mov r0, #0x0
+ add sp, #0xc
+ pop {r3-r6, pc}
+ nop
+_02060B08: .word 0x000006DE
+
+ thumb_func_start FUN_02060B0C
+FUN_02060B0C: ; 0x02060B0C
+ push {r3-r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x30]
+ add r0, sp, #0x0
+ bl FUN_021E7EA0
+ ldrb r0, [r4, #0x1]
+ cmp r0, #0x3
+ bhi _02060B7C
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02060B2C: ; jump table (using 16-bit offset)
+ .short _02060B34 - _02060B2C - 2; case 0
+ .short _02060B6A - _02060B2C - 2; case 1
+ .short _02060B58 - _02060B2C - 2; case 2
+ .short _02060B46 - _02060B2C - 2; case 3
+_02060B34:
+ ldr r1, [sp, #0x8]
+ ldr r0, [r4, #0x7c]
+ add r0, r1, r0
+ str r0, [sp, #0x8]
+ ldr r1, [r4, #0x2c]
+ ldr r0, [r4, #0x7c]
+ add r0, r1, r0
+ str r0, [r4, #0x2c]
+ b _02060B86
+_02060B46:
+ ldr r1, [sp, #0x8]
+ ldr r0, [r4, #0x7c]
+ sub r0, r1, r0
+ str r0, [sp, #0x8]
+ ldr r1, [r4, #0x2c]
+ ldr r0, [r4, #0x7c]
+ sub r0, r1, r0
+ str r0, [r4, #0x2c]
+ b _02060B86
+_02060B58:
+ ldr r1, [sp, #0x0]
+ ldr r0, [r4, #0x7c]
+ add r0, r1, r0
+ str r0, [sp, #0x0]
+ ldr r1, [r4, #0x24]
+ ldr r0, [r4, #0x7c]
+ add r0, r1, r0
+ str r0, [r4, #0x24]
+ b _02060B86
+_02060B6A:
+ ldr r1, [sp, #0x0]
+ ldr r0, [r4, #0x7c]
+ sub r0, r1, r0
+ str r0, [sp, #0x0]
+ ldr r1, [r4, #0x24]
+ ldr r0, [r4, #0x7c]
+ sub r0, r1, r0
+ str r0, [r4, #0x24]
+ b _02060B86
+_02060B7C:
+ bl ErrorHandling
+ add sp, #0xc
+ mov r0, #0x1
+ pop {r3-r4, pc}
+_02060B86:
+ mov r0, #0x1
+ ldr r1, [r4, #0x7c]
+ lsl r0, r0, #0xc
+ cmp r1, r0
+ bge _02060BA6
+ ldrb r1, [r4, #0x3]
+ add r1, r1, #0x1
+ strb r1, [r4, #0x3]
+ ldrb r1, [r4, #0x3]
+ cmp r1, #0x18
+ blo _02060BA6
+ ldr r1, [r4, #0x7c]
+ add r0, r1, r0
+ str r0, [r4, #0x7c]
+ mov r0, #0x0
+ strb r0, [r4, #0x3]
+_02060BA6:
+ ldr r0, [r4, #0x30]
+ add r1, sp, #0x0
+ bl FUN_021E7EB0
+ ldr r1, [r4, #0x14]
+ ldr r0, [r4, #0x7c]
+ add r1, r1, r0
+ str r1, [r4, #0x14]
+ ldr r0, [r4, #0xc]
+ cmp r0, r1
+ bgt _02060BC2
+ add sp, #0xc
+ mov r0, #0x1
+ pop {r3-r4, pc}
+_02060BC2:
+ mov r0, #0x0
+ add sp, #0xc
+ pop {r3-r4, pc}
+
+ thumb_func_start FUN_02060BC8
+FUN_02060BC8: ; 0x02060BC8
+ ldr r3, [r0, #0x0]
+ ldr r0, [r1, #0x0]
+ cmp r3, r0
+ bgt _02060BD6
+ mov r0, #0x1
+ strb r0, [r2, #0x0]
+ bx lr
+_02060BD6:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02060BDC
+FUN_02060BDC: ; 0x02060BDC
+ push {r4-r7, lr}
+ sub sp, #0x34
+ add r5, r0, #0x0
+ ldr r0, _02060C7C ; =0x020F7640
+ mov r6, #0x0
+ ldr r2, [r0, #0x0]
+ ldr r1, [r0, #0x4]
+ str r2, [sp, #0x2c]
+ str r1, [sp, #0x30]
+ ldr r1, [r0, #0x8]
+ ldr r0, [r0, #0xc]
+ str r1, [sp, #0x24]
+ str r0, [sp, #0x28]
+_02060BF6:
+ lsl r7, r6, #0x2
+ add r0, sp, #0x2c
+ ldr r4, [r0, r7]
+ mov r2, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r3, r2, #0x0
+ bl FUN_0204A9F0
+ cmp r0, #0x0
+ beq _02060C6A
+ ldr r1, [r5, #0x2c]
+ add r0, r4, #0x0
+ bl FUN_021F4BD0
+ ldr r0, [r0, #0x0]
+ blx FUN_020BC13C
+ ldrh r1, [r0, #0xe]
+ add r2, sp, #0x20
+ mov r3, #0x0
+ add r1, r0, r1
+ ldr r1, [r1, #0xc]
+ add r0, r0, r1
+ str r0, [sp, #0x18]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0204A9F0
+ cmp r0, #0x0
+ bne _02060C38
+ bl ErrorHandling
+_02060C38:
+ ldr r0, [sp, #0x20]
+ bl FUN_021E7EC8
+ str r0, [sp, #0x1c]
+ ldr r0, [r5, #0x2c]
+ bl FUN_021F4C88
+ ldr r1, [sp, #0x1c]
+ add r2, sp, #0x24
+ str r1, [sp, #0x0]
+ ldr r1, [sp, #0x18]
+ ldr r2, [r2, r7]
+ str r1, [sp, #0x4]
+ str r0, [sp, #0x8]
+ mov r0, #0x1
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ mov r0, #0x0
+ str r0, [sp, #0x14]
+ ldr r0, [r5, #0x4c]
+ ldr r1, [r5, #0x50]
+ add r3, r4, #0x0
+ bl FUN_021DA464
+ b _02060C6E
+_02060C6A:
+ bl ErrorHandling
+_02060C6E:
+ add r0, r6, #0x1
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ cmp r6, #0x2
+ blo _02060BF6
+ add sp, #0x34
+ pop {r4-r7, pc}
+ .balign 4
+_02060C7C: .word 0x020F7640
+
+ thumb_func_start FUN_02060C80
+FUN_02060C80: ; 0x02060C80
+ push {r3, lr}
+ ldrb r1, [r0, #0x1]
+ cmp r1, #0x2
+ beq _02060CA8
+ cmp r1, #0x3
+ bne _02060CC4
+ mov r2, #0x2
+ ldr r1, [r0, #0x8]
+ lsl r2, r2, #0x10
+ cmp r1, r2
+ bge _02060CC8
+ ldr r3, [r0, #0x24]
+ lsr r1, r2, #0x5
+ add r1, r3, r1
+ str r1, [r0, #0x24]
+ ldr r3, [r0, #0x8]
+ lsr r1, r2, #0x5
+ add r1, r3, r1
+ str r1, [r0, #0x8]
+ pop {r3, pc}
+_02060CA8:
+ mov r1, #0x3
+ ldr r2, [r0, #0x8]
+ lsl r1, r1, #0x10
+ cmp r2, r1
+ bge _02060CC8
+ mov r1, #0x2
+ ldr r2, [r0, #0x2c]
+ lsl r1, r1, #0xa
+ add r2, r2, r1
+ str r2, [r0, #0x2c]
+ ldr r2, [r0, #0x8]
+ add r1, r2, r1
+ str r1, [r0, #0x8]
+ pop {r3, pc}
+_02060CC4:
+ bl ErrorHandling
+_02060CC8:
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02060CCC
+FUN_02060CCC: ; 0x02060CCC
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ cmp r5, #0x0
+ ble _02060CD8
+ cmp r5, #0x5
+ blt _02060CDC
+_02060CD8:
+ bl ErrorHandling
+_02060CDC:
+ sub r1, r5, #0x1
+ ldr r6, _02060CF4 ; =0x020F767C
+ mov r0, #0xc
+ add r4, r1, #0x0
+ mul r4, r0
+ ldr r0, [r6, r4]
+ cmp r0, r5
+ beq _02060CF0
+ bl ErrorHandling
+_02060CF0:
+ add r0, r6, r4
+ pop {r4-r6, pc}
+ .balign 4
+_02060CF4: .word 0x020F767C
+
+ thumb_func_start FUN_02060CF8
+FUN_02060CF8: ; 0x02060CF8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, r1, #0x0
+ bl FUN_02248B6C
+ add r4, r0, #0x0
+ cmp r4, #0x0
+ ble _02060D0E
+ ldrh r0, [r5, #0x6]
+ cmp r4, r0
+ blt _02060D12
+_02060D0E:
+ bl ErrorHandling
+_02060D12:
+ sub r0, r4, #0x1
+ ldr r1, [r5, #0x8]
+ lsl r0, r0, #0x3
+ add r0, r1, r0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02060D1C
+FUN_02060D1C: ; 0x02060D1C
+ push {r3-r7, lr}
+ add r6, r1, #0x0
+ add r7, r2, #0x0
+ add r5, r3, #0x0
+ bl FUN_02060CCC
+ ldrh r2, [r0, #0x4]
+ ldr r1, [sp, #0x18]
+ strh r2, [r1, #0x0]
+ add r1, r5, #0x0
+ bl FUN_02060CF8
+ ldr r4, [r0, #0x0]
+ cmp r4, #0x0
+ bne _02060D3E
+ bl ErrorHandling
+_02060D3E:
+ add r0, r6, #0x0
+ add r1, r7, #0x0
+ add r2, r5, #0x0
+ blx r4
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02060D48
+FUN_02060D48: ; 0x02060D48
+ push {r3-r5, lr}
+ add r4, r2, #0x0
+ add r5, r1, #0x0
+ bl FUN_02060CCC
+ add r1, r4, #0x0
+ bl FUN_02060CF8
+ ldr r1, [r0, #0x0]
+ cmp r1, #0x0
+ bne _02060D62
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_02060D62:
+ ldr r2, [r0, #0x4]
+ cmp r2, #0x0
+ bne _02060D6C
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_02060D6C:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ blx r2
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02060D74
+FUN_02060D74: ; 0x02060D74
+ push {r4-r6, lr}
+ ldr r0, [r0, #0xc]
+ add r5, r1, #0x0
+ add r4, r2, #0x0
+ add r6, r3, #0x0
+ bl FUN_02022504
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ add r3, r6, #0x0
+ bl FUN_0202B4B0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02060D90
+FUN_02060D90: ; 0x02060D90
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ add r7, r2, #0x0
+ mov r0, #0x40
+ mov r1, #0x4
+ str r3, [sp, #0x8]
+ bl FUN_020219F4
+ add r1, r7, #0x0
+ add r4, r0, #0x0
+ bl FUN_02021E28
+ ldr r0, [sp, #0x24]
+ ldr r3, [sp, #0x8]
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x20]
+ add r1, r6, #0x0
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_0200ABB4
+ add r0, r4, #0x0
+ bl FUN_02021A20
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02060DCC
+FUN_02060DCC: ; 0x02060DCC
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r6, r2, #0x0
+ add r5, r0, #0x0
+ add r0, r6, #0x0
+ add r4, r1, #0x0
+ bl FUN_02248B5C
+ add r7, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_02248B54
+ str r0, [sp, #0x8]
+ add r0, r6, #0x0
+ bl FUN_02248B58
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ ldr r3, [sp, #0x8]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r7, #0x0
+ bl FUN_02060D90
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02060E04
+FUN_02060E04: ; 0x02060E04
+ push {r4-r6, lr}
+ add r3, r0, #0x0
+ add r5, r1, #0x0
+ mov r0, #0x40
+ add r1, r3, #0x0
+ add r6, r2, #0x0
+ bl FUN_020219F4
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ mov r1, #0x76
+ add r2, r4, #0x0
+ bl FUN_020671BC
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ mov r2, #0xb
+ bl FUN_02021EF0
+ add r0, r4, #0x0
+ bl FUN_02021A20
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02060E34
+FUN_02060E34: ; 0x02060E34
+ push {r3-r7, lr}
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ add r5, r0, #0x0
+ mov r1, #0x5
+ mov r2, #0x0
+ add r7, r3, #0x0
+ bl FUN_020671BC
+ strh r0, [r4, #0x0]
+ add r0, r5, #0x0
+ mov r1, #0x6f
+ mov r2, #0x0
+ bl FUN_020671BC
+ strb r0, [r6, #0x0]
+ add r0, r5, #0x0
+ mov r1, #0xc
+ mov r2, #0x0
+ bl FUN_020671BC
+ strb r0, [r7, #0x0]
+ add r0, r5, #0x0
+ mov r1, #0x79
+ mov r2, #0x0
+ bl FUN_020671BC
+ ldr r1, [sp, #0x18]
+ strb r0, [r1, #0x0]
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02060E70
+FUN_02060E70: ; 0x02060E70
+ push {r4-r6, lr}
+ sub sp, #0x20
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r0, r2, #0x0
+ mov r1, #0x4
+ add r2, sp, #0x8
+ add r6, r3, #0x0
+ bl FUN_0200A99C
+ add r0, sp, #0x20
+ ldrb r0, [r0, #0x10]
+ add r1, r4, #0x0
+ add r2, sp, #0x8
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ add r3, r6, #0x0
+ bl FUN_02060D90
+ add sp, #0x20
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02060EA0
+FUN_02060EA0: ; 0x02060EA0
+ push {r3-r5, lr}
+ sub sp, #0x20
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r0, r2, #0x0
+ mov r1, #0x4
+ add r2, sp, #0x8
+ bl FUN_0200A99C
+ mov r0, #0x2
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, sp, #0x8
+ mov r3, #0x0
+ bl FUN_02060D90
+ add sp, #0x20
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02060ECC
+FUN_02060ECC: ; 0x02060ECC
+ push {r3-r7, lr}
+ add r5, r1, #0x0
+ add r6, r0, #0x0
+ add r4, r2, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x4d
+ mov r2, #0x0
+ add r7, r3, #0x0
+ bl FUN_020671BC
+ strb r0, [r4, #0x0]
+ ldrb r0, [r4, #0x0]
+ cmp r0, #0x0
+ beq _02060F0C
+ mov r0, #0x40
+ add r1, r6, #0x0
+ bl FUN_020219F4
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x76
+ add r2, r4, #0x0
+ bl FUN_020671BC
+ add r0, r4, #0x0
+ add r1, r7, #0x0
+ mov r2, #0xb
+ bl FUN_02021EF0
+ add r0, r4, #0x0
+ bl FUN_02021A20
+_02060F0C:
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02060F10
+FUN_02060F10: ; 0x02060F10
+ push {r3-r7, lr}
+ add r7, r1, #0x0
+ add r5, r2, #0x0
+ add r6, r3, #0x0
+ bl FUN_0202B838
+ add r4, r0, #0x0
+ mov r0, #0x1
+ strb r0, [r4, #0x0]
+ add r0, r4, #0x6
+ str r0, [sp, #0x0]
+ add r0, r7, #0x0
+ add r1, r4, #0x2
+ add r2, r4, #0x4
+ add r3, r4, #0x5
+ bl FUN_02060E34
+ strb r5, [r4, #0x8]
+ ldr r0, [sp, #0x18]
+ strb r6, [r4, #0x7]
+ strb r0, [r4, #0x9]
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02060F3C
+FUN_02060F3C: ; 0x02060F3C
+ push {r3-r6, lr}
+ sub sp, #0x4
+ add r5, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_0202B844
+ add r4, r0, #0x0
+ mov r0, #0x1
+ strb r0, [r4, #0x0]
+ mov r0, #0x0
+ strb r0, [r4, #0x1f]
+ add r0, r5, #0x0
+ bl FUN_02068854
+ strb r0, [r4, #0x1e]
+ add r0, r4, #0x6
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ add r1, r4, #0x2
+ add r2, r4, #0x4
+ add r3, r4, #0x5
+ bl FUN_02060E34
+ add r0, r5, #0x0
+ mov r1, #0x4d
+ mov r2, #0x0
+ bl FUN_020671BC
+ strb r0, [r4, #0x7]
+ add r2, r4, #0x7
+ add r4, #0x8
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ add r3, r4, #0x0
+ bl FUN_02060ECC
+ add sp, #0x4
+ pop {r3-r6, pc}
+
+ thumb_func_start FUN_02060F88
+FUN_02060F88: ; 0x02060F88
+ push {r4, lr}
+ add r4, r1, #0x0
+ bl FUN_0202B844
+ mov r1, #0x2
+ strb r1, [r0, #0x1f]
+ add r0, #0x20
+ strb r4, [r0, #0x0]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02060F9C
+FUN_02060F9C: ; 0x02060F9C
+ push {r4, lr}
+ add r4, r1, #0x0
+ bl FUN_0202B844
+ mov r1, #0x1
+ strb r1, [r0, #0x1f]
+ strh r4, [r0, #0x22]
+ pop {r4, pc}
+
+ thumb_func_start FUN_02060FAC
+FUN_02060FAC: ; 0x02060FAC
+ push {r4, lr}
+ add r4, r1, #0x0
+ bl FUN_0202B850
+ mov r1, #0x1
+ strb r1, [r0, #0x0]
+ strb r4, [r0, #0x1]
+ pop {r4, pc}
+
+ thumb_func_start FUN_02060FBC
+FUN_02060FBC: ; 0x02060FBC
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ add r4, r2, #0x0
+ bl FUN_0202B85C
+ mov r1, #0x1
+ strb r1, [r0, #0x0]
+ strb r5, [r0, #0x1]
+ strh r4, [r0, #0x2]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02060FD0
+FUN_02060FD0: ; 0x02060FD0
+ push {r3, lr}
+ bl FUN_0202B868
+ mov r1, #0x1
+ strb r1, [r0, #0x0]
+ mov r1, #0x0
+ strb r1, [r0, #0x7]
+ pop {r3, pc}
+
+ thumb_func_start FUN_02060FE0
+FUN_02060FE0: ; 0x02060FE0
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ bl FUN_0202B868
+ add r4, r0, #0x0
+ ldrb r0, [r4, #0x7]
+ cmp r0, #0x0
+ bne _02061000
+ add r0, r4, #0x6
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ add r1, r4, #0x2
+ add r2, r4, #0x4
+ add r3, r4, #0x5
+ bl FUN_02060E34
+_02061000:
+ ldrb r0, [r4, #0x7]
+ add r0, r0, #0x1
+ strb r0, [r4, #0x7]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02061008
+FUN_02061008: ; 0x02061008
+ push {r4, lr}
+ mov r1, #0x24
+ bl FUN_02016998
+ add r4, r0, #0x0
+ mov r0, #0x0
+ add r1, r4, #0x0
+ mov r2, #0x24
+ blx MIi_CpuClearFast
+ add r0, r4, #0x0
+ pop {r4, pc}
+
+ thumb_func_start FUN_02061020
+FUN_02061020: ; 0x02061020
+ ldr r3, _02061024 ; =FUN_02016A18
+ bx r3
+ .balign 4
+_02061024: .word FUN_02016A18
+
+ thumb_func_start FUN_02061028
+FUN_02061028: ; 0x02061028
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ mov r0, #0x0
+ add r1, r5, #0x0
+ mov r2, #0x24
+ add r7, r3, #0x0
+ blx MIi_CpuClear32
+ str r6, [r5, #0x0]
+ add r0, r5, #0x0
+ add r2, r5, #0x0
+ add r3, r5, #0x0
+ strh r7, [r5, #0x4]
+ add r0, #0xa
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ add r1, r5, #0x6
+ add r2, #0x8
+ add r3, #0x9
+ bl FUN_02060E34
+ add r0, r4, #0x0
+ mov r1, #0x9a
+ mov r2, #0x0
+ bl FUN_020671BC
+ strh r0, [r5, #0x22]
+ ldrh r0, [r5, #0x22]
+ cmp r0, #0x0
+ bne _0206106C
+ bl ErrorHandling
+_0206106C:
+ add r2, r5, #0x0
+ add r5, #0xc
+ ldr r0, [sp, #0x18]
+ add r1, r4, #0x0
+ add r2, #0xb
+ add r3, r5, #0x0
+ bl FUN_02060ECC
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02061080
+FUN_02061080: ; 0x02061080
+ push {r3-r7, lr}
+ sub sp, #0x28
+ add r7, sp, #0x0
+ add r5, r2, #0x0
+ add r6, r0, #0x0
+ add r3, r1, #0x0
+ add r4, r7, #0x0
+ mov r2, #0x4
+_02061090:
+ ldmia r3!, {r0-r1}
+ stmia r4!, {r0-r1}
+ sub r2, r2, #0x1
+ bne _02061090
+ ldr r0, [r3, #0x0]
+ str r0, [r4, #0x0]
+ str r5, [sp, #0x0]
+ add r0, sp, #0x0
+ ldrh r0, [r0, #0x4]
+ cmp r0, #0x0
+ beq _020610F0
+ ldrh r1, [r7, #0x4]
+ ldr r0, _020610F4 ; =0x000003E7
+ cmp r1, r0
+ bls _020610B0
+ strh r0, [r7, #0x4]
+_020610B0:
+ cmp r5, #0x6
+ bhi _020610F0
+ add r0, r5, r5
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_020610C0: ; jump table (using 16-bit offset)
+ .short _020610F0 - _020610C0 - 2; case 0
+ .short _020610DE - _020610C0 - 2; case 1
+ .short _020610F0 - _020610C0 - 2; case 2
+ .short _020610F0 - _020610C0 - 2; case 3
+ .short _020610CE - _020610C0 - 2; case 4
+ .short _020610DE - _020610C0 - 2; case 5
+ .short _020610DE - _020610C0 - 2; case 6
+_020610CE:
+ add r0, r6, #0x0
+ mov r1, #0x2
+ mov r2, #0x1
+ add r3, r7, #0x0
+ bl FUN_02060D74
+ add sp, #0x28
+ pop {r3-r7, pc}
+_020610DE:
+ ldrh r0, [r7, #0x4]
+ cmp r0, #0x2
+ bls _020610F0
+ mov r1, #0x2
+ add r0, r6, #0x0
+ add r2, r1, #0x0
+ add r3, r7, #0x0
+ bl FUN_02060D74
+_020610F0:
+ add sp, #0x28
+ pop {r3-r7, pc}
+ .balign 4
+_020610F4: .word 0x000003E7
+
+ thumb_func_start FUN_020610F8
+FUN_020610F8: ; 0x020610F8
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r6, r2, #0x0
+ add r0, r6, #0x0
+ add r5, r1, #0x0
+ bl FUN_02248B60
+ add r4, r0, #0x0
+ ldrb r0, [r4, #0xb]
+ cmp r0, #0x0
+ beq _02061166
+ add r0, r5, #0x0
+ mov r1, #0x0
+ add r2, r6, #0x0
+ bl FUN_02060DCC
+ ldrb r0, [r4, #0x9]
+ mov r1, #0x1
+ str r0, [sp, #0x0]
+ ldrb r0, [r4, #0xa]
+ str r0, [sp, #0x4]
+ ldrh r2, [r4, #0x6]
+ ldrb r3, [r4, #0x8]
+ add r0, r5, #0x0
+ bl FUN_02060E70
+ ldrh r2, [r4, #0x22]
+ add r0, r5, #0x0
+ mov r1, #0x2
+ bl FUN_0200AE38
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ mov r1, #0x3
+ ldrh r2, [r4, #0x4]
+ add r0, r5, #0x0
+ add r3, r1, #0x0
+ bl FUN_0200AD38
+ ldrb r0, [r4, #0x9]
+ add r2, r4, #0x0
+ mov r1, #0x4
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ ldrb r3, [r4, #0x8]
+ add r0, r5, #0x0
+ add r2, #0xc
+ bl FUN_02060D90
+ add sp, #0x8
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_02061166:
+ add r0, r5, #0x0
+ mov r1, #0x0
+ add r2, r6, #0x0
+ bl FUN_02060DCC
+ ldrb r0, [r4, #0x9]
+ mov r1, #0x1
+ str r0, [sp, #0x0]
+ ldrb r0, [r4, #0xa]
+ str r0, [sp, #0x4]
+ ldrh r2, [r4, #0x6]
+ ldrb r3, [r4, #0x8]
+ add r0, r5, #0x0
+ bl FUN_02060E70
+ ldrh r2, [r4, #0x22]
+ add r0, r5, #0x0
+ mov r1, #0x2
+ bl FUN_0200AE38
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ mov r1, #0x3
+ ldrh r2, [r4, #0x4]
+ add r0, r5, #0x0
+ add r3, r1, #0x0
+ bl FUN_0200AD38
+ mov r0, #0x1
+ add sp, #0x8
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_020611A8
+FUN_020611A8: ; 0x020611A8
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r6, r2, #0x0
+ add r5, r1, #0x0
+ add r0, r6, #0x0
+ bl FUN_02248B60
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x0
+ add r2, r6, #0x0
+ bl FUN_02060DCC
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r1, #0x1
+ str r1, [sp, #0x4]
+ ldrh r2, [r4, #0x4]
+ add r0, r5, #0x0
+ mov r3, #0x3
+ bl FUN_0200AD38
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x1
+ bne _020611E0
+ add sp, #0x8
+ mov r0, #0x2
+ pop {r4-r6, pc}
+_020611E0:
+ mov r0, #0x3
+ add sp, #0x8
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_020611E8
+FUN_020611E8: ; 0x020611E8
+ push {r3-r5, lr}
+ ldr r0, [r0, #0xc]
+ add r5, r1, #0x0
+ bl FUN_02024DA0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02248B60
+ add r1, r0, #0x0
+ ldrh r1, [r1, #0x6]
+ add r0, r4, #0x0
+ bl FUN_020245F0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02061208
+FUN_02061208: ; 0x02061208
+ push {r4-r7, lr}
+ sub sp, #0x2c
+ add r5, r1, #0x0
+ add r7, r0, #0x0
+ add r4, r2, #0x0
+ add r6, sp, #0x4
+ cmp r5, #0x0
+ beq _02061228
+ add r0, r6, #0x4
+ str r0, [sp, #0x0]
+ add r0, r3, #0x0
+ add r1, r6, #0x0
+ add r2, r6, #0x2
+ add r3, r6, #0x3
+ bl FUN_02060E34
+_02061228:
+ strh r4, [r6, #0x6]
+ add r0, r7, #0x0
+ mov r1, #0x2
+ mov r2, #0x3
+ add r3, r6, #0x0
+ str r5, [r6, #0x8]
+ bl FUN_02060D74
+ add sp, #0x2c
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_0206123C
+FUN_0206123C: ; 0x0206123C
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r6, r2, #0x0
+ add r5, r1, #0x0
+ add r0, r6, #0x0
+ bl FUN_02248B60
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x0
+ add r2, r6, #0x0
+ bl FUN_02060DCC
+ ldr r0, [r4, #0x8]
+ cmp r0, #0x0
+ beq _02061280
+ ldrh r2, [r4, #0x6]
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_0200AE38
+ ldrb r0, [r4, #0x3]
+ mov r1, #0x2
+ str r0, [sp, #0x0]
+ ldrb r0, [r4, #0x4]
+ str r0, [sp, #0x4]
+ ldrh r2, [r4, #0x0]
+ ldrb r3, [r4, #0x2]
+ add r0, r5, #0x0
+ bl FUN_02060E70
+ add sp, #0x8
+ mov r0, #0x4
+ pop {r4-r6, pc}
+_02061280:
+ mov r0, #0x5
+ add sp, #0x8
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02061288
+FUN_02061288: ; 0x02061288
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, r1, #0x0
+ bl FUN_02248B60
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x8]
+ cmp r0, #0x0
+ bne _0206129E
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0206129E:
+ ldr r0, [r5, #0xc]
+ bl FUN_02024DA0
+ ldrh r1, [r4, #0x0]
+ bl FUN_020245F0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_020612AC
+FUN_020612AC: ; 0x020612AC
+ push {r4-r6, lr}
+ sub sp, #0x28
+ add r5, r0, #0x0
+ ldr r0, [r5, #0xc]
+ add r4, r1, #0x0
+ bl FUN_0202881C
+ add r6, r0, #0x0
+ mov r0, #0x0
+ add r1, sp, #0x0
+ mov r2, #0x28
+ blx MIi_CpuClearFast
+ add r0, r6, #0x0
+ mov r1, #0x1
+ mov r2, #0x0
+ bl FUN_020287A8
+ add r1, r0, #0x0
+ add r0, sp, #0x0
+ mov r2, #0xb
+ bl StringCopyN
+ add r0, r5, #0x0
+ mov r1, #0x2
+ add r2, r4, #0x0
+ add r3, sp, #0x0
+ bl FUN_02060D74
+ add sp, #0x28
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_020612EC
+FUN_020612EC: ; 0x020612EC
+ ldr r3, _020612F4 ; =FUN_020612AC
+ mov r1, #0x14
+ bx r3
+ nop
+_020612F4: .word FUN_020612AC
+
+ thumb_func_start FUN_020612F8
+FUN_020612F8: ; 0x020612F8
+ ldr r3, _02061300 ; =FUN_020612AC
+ mov r1, #0x4
+ bx r3
+ nop
+_02061300: .word FUN_020612AC
+
+ thumb_func_start FUN_02061304
+FUN_02061304: ; 0x02061304
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r4, r2, #0x0
+ add r0, r4, #0x0
+ add r5, r1, #0x0
+ bl FUN_02248B60
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02248B58
+ str r0, [sp, #0x0]
+ mov r1, #0x1
+ add r0, r5, #0x0
+ add r2, r6, #0x0
+ mov r3, #0x0
+ str r1, [sp, #0x4]
+ bl FUN_02060D90
+ add r0, r5, #0x0
+ mov r1, #0x0
+ add r2, r4, #0x0
+ bl FUN_02060DCC
+ mov r0, #0x6
+ add sp, #0x8
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206133C
+FUN_0206133C: ; 0x0206133C
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r4, r2, #0x0
+ add r0, r4, #0x0
+ add r5, r1, #0x0
+ bl FUN_02248B60
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02248B58
+ str r0, [sp, #0x0]
+ mov r1, #0x1
+ add r0, r5, #0x0
+ add r2, r6, #0x0
+ mov r3, #0x0
+ str r1, [sp, #0x4]
+ bl FUN_02060D90
+ add r0, r5, #0x0
+ mov r1, #0x0
+ add r2, r4, #0x0
+ bl FUN_02060DCC
+ mov r0, #0x20
+ add sp, #0x8
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02061374
+FUN_02061374: ; 0x02061374
+ push {r4, lr}
+ sub sp, #0x28
+ add r4, r0, #0x0
+ add r0, sp, #0x0
+ strh r1, [r0, #0x0]
+ ldr r0, [r4, #0x1c]
+ ldr r0, [r0, #0x0]
+ bl FUN_02034824
+ add r1, sp, #0x0
+ strh r0, [r1, #0x2]
+ add r0, r4, #0x0
+ mov r1, #0x2
+ mov r2, #0x6
+ add r3, sp, #0x0
+ bl FUN_02060D74
+ add sp, #0x28
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206139C
+FUN_0206139C: ; 0x0206139C
+ push {r4-r6, lr}
+ add r6, r2, #0x0
+ add r0, r6, #0x0
+ add r5, r1, #0x0
+ bl FUN_02248B60
+ add r4, r0, #0x0
+ ldrh r2, [r4, #0x2]
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_0200AFF4
+ add r0, r5, #0x0
+ mov r1, #0x1
+ add r2, r6, #0x0
+ bl FUN_02060DCC
+ ldrh r2, [r4, #0x0]
+ add r0, r5, #0x0
+ mov r1, #0x2
+ bl FUN_0200AE38
+ mov r0, #0xa
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_020613CC
+FUN_020613CC: ; 0x020613CC
+ push {r3-r4, lr}
+ sub sp, #0x2c
+ add r4, r0, #0x0
+ add r0, sp, #0x8
+ add r2, sp, #0x4
+ add r3, sp, #0x4
+ str r0, [sp, #0x0]
+ add r0, r1, #0x0
+ add r1, sp, #0x4
+ add r2, #0x2
+ add r3, #0x3
+ bl FUN_02060E34
+ ldr r0, [r4, #0x1c]
+ ldr r0, [r0, #0x0]
+ bl FUN_02034824
+ add r1, sp, #0x4
+ strh r0, [r1, #0x6]
+ add r0, r4, #0x0
+ mov r1, #0x2
+ mov r2, #0x8
+ add r3, sp, #0x4
+ bl FUN_02060D74
+ add sp, #0x2c
+ pop {r3-r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02061404
+FUN_02061404: ; 0x02061404
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r6, r2, #0x0
+ add r0, r6, #0x0
+ add r5, r1, #0x0
+ bl FUN_02248B60
+ add r4, r0, #0x0
+ ldrh r2, [r4, #0x6]
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_0200AFF4
+ add r0, r5, #0x0
+ mov r1, #0x0
+ add r2, r6, #0x0
+ bl FUN_02060DCC
+ ldrb r0, [r4, #0x3]
+ mov r1, #0x2
+ str r0, [sp, #0x0]
+ ldrb r0, [r4, #0x4]
+ str r0, [sp, #0x4]
+ ldrh r2, [r4, #0x0]
+ ldrb r3, [r4, #0x2]
+ add r0, r5, #0x0
+ bl FUN_02060E70
+ mov r0, #0xc
+ add sp, #0x8
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02061444
+FUN_02061444: ; 0x02061444
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, r1, #0x0
+ bl FUN_02248B60
+ add r4, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_02024DA0
+ ldrh r1, [r4, #0x0]
+ bl FUN_020245F0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02061460
+FUN_02061460: ; 0x02061460
+ push {r4-r5, lr}
+ sub sp, #0x2c
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r0, sp, #0x8
+ add r2, sp, #0x4
+ add r3, sp, #0x4
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ add r1, sp, #0x4
+ add r2, #0x2
+ add r3, #0x3
+ bl FUN_02060E34
+ add r1, sp, #0x8
+ mov r0, #0x4
+ add r1, #0x2
+ add r2, r4, #0x0
+ bl FUN_02060E04
+ add r0, r5, #0x0
+ mov r1, #0x2
+ mov r2, #0xa
+ add r3, sp, #0x4
+ bl FUN_02060D74
+ add sp, #0x2c
+ pop {r4-r5, pc}
+
+ thumb_func_start FUN_02061498
+FUN_02061498: ; 0x02061498
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r6, r2, #0x0
+ add r5, r1, #0x0
+ add r0, r6, #0x0
+ bl FUN_02248B60
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x0
+ add r2, r6, #0x0
+ bl FUN_02060DCC
+ ldrb r0, [r4, #0x3]
+ mov r1, #0x1
+ str r0, [sp, #0x0]
+ ldrb r0, [r4, #0x4]
+ str r0, [sp, #0x4]
+ ldrh r2, [r4, #0x0]
+ ldrb r3, [r4, #0x2]
+ add r0, r5, #0x0
+ bl FUN_02060E70
+ ldrb r0, [r4, #0x3]
+ mov r1, #0x2
+ add r2, r4, #0x6
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ ldrb r3, [r4, #0x2]
+ add r0, r5, #0x0
+ bl FUN_02060D90
+ bl FUN_0201B9EC
+ ldr r1, _020614F8 ; =0x00003334
+ blx _s32_div_f
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #0x5
+ blo _020614F0
+ bl ErrorHandling
+_020614F0:
+ add r4, #0x11
+ add r0, r4, #0x0
+ add sp, #0x8
+ pop {r4-r6, pc}
+ .balign 4
+_020614F8: .word 0x00003334
+
+ thumb_func_start FUN_020614FC
+FUN_020614FC: ; 0x020614FC
+ push {r3-r5, lr}
+ ldr r0, [r0, #0xc]
+ add r5, r1, #0x0
+ bl FUN_02024DA0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02248B60
+ add r1, r0, #0x0
+ ldrh r1, [r1, #0x0]
+ add r0, r4, #0x0
+ bl FUN_020245F0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206151C
+FUN_0206151C: ; 0x0206151C
+ push {r3, lr}
+ sub sp, #0x28
+ add r3, sp, #0x0
+ strh r1, [r3, #0x0]
+ strh r2, [r3, #0x2]
+ mov r1, #0x2
+ mov r2, #0xd
+ add r3, sp, #0x0
+ bl FUN_02060D74
+ add sp, #0x28
+ pop {r3, pc}
+
+ thumb_func_start FUN_02061534
+FUN_02061534: ; 0x02061534
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r6, r2, #0x0
+ add r5, r1, #0x0
+ add r0, r6, #0x0
+ bl FUN_02248B60
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x0
+ add r2, r6, #0x0
+ bl FUN_02060DCC
+ ldrh r2, [r4, #0x0]
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_0200B164
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ ldrh r2, [r4, #0x2]
+ add r0, r5, #0x0
+ mov r1, #0x2
+ mov r3, #0x3
+ bl FUN_0200AD38
+ mov r0, #0x18
+ add sp, #0x8
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02061574
+FUN_02061574: ; 0x02061574
+ push {r3-r5, lr}
+ sub sp, #0x28
+ add r5, r0, #0x0
+ ldr r0, [r5, #0xc]
+ add r4, sp, #0x0
+ bl FUN_02022504
+ bl FUN_0202B868
+ ldrb r1, [r0, #0x7]
+ cmp r1, #0x0
+ beq _020615AC
+ ldrh r1, [r0, #0x2]
+ mov r2, #0xf
+ add r3, r4, #0x0
+ strh r1, [r4, #0x0]
+ ldrb r1, [r0, #0x4]
+ strb r1, [r4, #0x2]
+ ldrb r1, [r0, #0x5]
+ strb r1, [r4, #0x3]
+ ldrb r1, [r0, #0x6]
+ strb r1, [r4, #0x4]
+ ldrb r0, [r0, #0x7]
+ mov r1, #0x2
+ strb r0, [r4, #0x5]
+ add r0, r5, #0x0
+ bl FUN_02060D74
+_020615AC:
+ add sp, #0x28
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_020615B0
+FUN_020615B0: ; 0x020615B0
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r6, r2, #0x0
+ add r5, r1, #0x0
+ add r0, r6, #0x0
+ bl FUN_02248B60
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x0
+ add r2, r6, #0x0
+ bl FUN_02060DCC
+ ldrb r0, [r4, #0x3]
+ mov r1, #0x1
+ str r0, [sp, #0x0]
+ ldrb r0, [r4, #0x4]
+ str r0, [sp, #0x4]
+ ldrh r2, [r4, #0x0]
+ ldrb r3, [r4, #0x2]
+ add r0, r5, #0x0
+ bl FUN_02060E70
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ mov r1, #0x2
+ ldrb r2, [r4, #0x5]
+ add r0, r5, #0x0
+ add r3, r1, #0x0
+ bl FUN_0200AD38
+ mov r0, #0x1a
+ add sp, #0x8
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_020615F8
+FUN_020615F8: ; 0x020615F8
+ push {r3-r5, lr}
+ ldr r0, [r0, #0xc]
+ add r5, r1, #0x0
+ bl FUN_02024DA0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02248B60
+ add r1, r0, #0x0
+ ldrh r1, [r1, #0x0]
+ add r0, r4, #0x0
+ bl FUN_020245F0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02061618
+FUN_02061618: ; 0x02061618
+ push {r4-r5, lr}
+ sub sp, #0x2c
+ add r5, r0, #0x0
+ add r4, r2, #0x0
+ add r0, sp, #0x8
+ add r2, sp, #0x4
+ add r3, sp, #0x4
+ str r0, [sp, #0x0]
+ add r0, r1, #0x0
+ add r1, sp, #0x4
+ add r2, #0x2
+ add r3, #0x3
+ bl FUN_02060E34
+ add r0, sp, #0x4
+ strh r4, [r0, #0x6]
+ add r0, r5, #0x0
+ mov r1, #0x2
+ mov r2, #0x11
+ add r3, sp, #0x4
+ bl FUN_0202B4B0
+ add sp, #0x2c
+ pop {r4-r5, pc}
+
+ thumb_func_start FUN_02061648
+FUN_02061648: ; 0x02061648
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r6, r2, #0x0
+ add r5, r1, #0x0
+ add r0, r6, #0x0
+ bl FUN_02248B60
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x0
+ add r2, r6, #0x0
+ bl FUN_02060DCC
+ ldrb r0, [r4, #0x3]
+ mov r1, #0x1
+ str r0, [sp, #0x0]
+ ldrb r0, [r4, #0x4]
+ str r0, [sp, #0x4]
+ ldrh r2, [r4, #0x0]
+ ldrb r3, [r4, #0x2]
+ add r0, r5, #0x0
+ bl FUN_02060E70
+ ldrh r2, [r4, #0x6]
+ add r0, r5, #0x0
+ mov r1, #0x2
+ bl FUN_0200AE38
+ mov r0, #0x1d
+ add sp, #0x8
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02061688
+FUN_02061688: ; 0x02061688
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, r1, #0x0
+ bl FUN_02248B60
+ add r4, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_02024DA0
+ ldrh r1, [r4, #0x0]
+ bl FUN_020245F0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020616A4
+FUN_020616A4: ; 0x020616A4
+ push {r3-r5, lr}
+ sub sp, #0x28
+ add r4, sp, #0x0
+ strh r1, [r4, #0x0]
+ strb r2, [r4, #0x2]
+ add r5, sp, #0x0
+ strh r3, [r4, #0x4]
+ cmp r2, #0x5
+ bne _020616C4
+ mov r1, #0x3
+ mov r2, #0x6
+ add r3, r5, #0x0
+ bl FUN_02060D74
+ add sp, #0x28
+ pop {r3-r5, pc}
+_020616C4:
+ cmp r2, #0x4
+ bne _020616D6
+ mov r1, #0x2
+ mov r2, #0x12
+ add r3, r5, #0x0
+ bl FUN_02060D74
+ add sp, #0x28
+ pop {r3-r5, pc}
+_020616D6:
+ cmp r2, #0x0
+ bne _020616E4
+ mov r1, #0x2
+ mov r2, #0x13
+ add r3, r5, #0x0
+ bl FUN_02060D74
+_020616E4:
+ add sp, #0x28
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_020616E8
+FUN_020616E8: ; 0x020616E8
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r6, r2, #0x0
+ add r5, r1, #0x0
+ add r0, r6, #0x0
+ bl FUN_02248B60
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x0
+ add r2, r6, #0x0
+ bl FUN_02060DCC
+ ldrh r2, [r4, #0x0]
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_0200AE38
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ mov r1, #0x2
+ ldrh r2, [r4, #0x4]
+ add r0, r5, #0x0
+ add r3, r1, #0x0
+ bl FUN_0200AD38
+ mov r0, #0x1e
+ add sp, #0x8
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02061728
+FUN_02061728: ; 0x02061728
+ push {r4-r6, lr}
+ add r6, r2, #0x0
+ add r5, r1, #0x0
+ add r0, r6, #0x0
+ bl FUN_02248B60
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x0
+ add r2, r6, #0x0
+ bl FUN_02060DCC
+ ldrh r2, [r4, #0x0]
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_0200AE38
+ mov r0, #0x1f
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02061750
+FUN_02061750: ; 0x02061750
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r6, r2, #0x0
+ add r5, r1, #0x0
+ add r0, r6, #0x0
+ bl FUN_02248B60
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x0
+ add r2, r6, #0x0
+ bl FUN_02060DCC
+ ldrh r0, [r4, #0x0]
+ mov r1, #0x4
+ sub r0, #0x95
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_020852E8
+ add r4, r0, #0x0
+ mov r1, #0x1
+ str r1, [sp, #0x0]
+ mov r0, #0x2
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ add r2, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0200ABB4
+ add r0, r4, #0x0
+ bl FUN_02021A20
+ mov r0, #0x5
+ add sp, #0x8
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02061798
+FUN_02061798: ; 0x02061798
+ push {r4-r5, lr}
+ sub sp, #0x2c
+ add r5, r0, #0x0
+ add r0, sp, #0x4
+ add r4, r1, #0x0
+ strb r2, [r0, #0x6]
+ bl FUN_0201BA60
+ mov r1, #0x3
+ blx _u32_div_f
+ add r0, sp, #0x4
+ strb r1, [r0, #0x5]
+ add r0, sp, #0x8
+ add r2, sp, #0x4
+ add r3, sp, #0x4
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ add r1, sp, #0x4
+ add r2, #0x2
+ add r3, #0x3
+ bl FUN_02060E34
+ add r0, r5, #0x0
+ mov r1, #0x2
+ mov r2, #0x15
+ add r3, sp, #0x4
+ bl FUN_0202B4B0
+ add sp, #0x2c
+ pop {r4-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020617D8
+FUN_020617D8: ; 0x020617D8
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r6, r2, #0x0
+ add r5, r1, #0x0
+ add r0, r6, #0x0
+ bl FUN_02248B60
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x0
+ add r2, r6, #0x0
+ bl FUN_02060DCC
+ ldrb r2, [r4, #0x6]
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_0200B534
+ ldrb r0, [r4, #0x3]
+ mov r1, #0x2
+ str r0, [sp, #0x0]
+ ldrb r0, [r4, #0x4]
+ str r0, [sp, #0x4]
+ ldrh r2, [r4, #0x0]
+ ldrb r3, [r4, #0x2]
+ add r0, r5, #0x0
+ bl FUN_02060E70
+ bl FUN_0201B9EC
+ ldr r1, _02061830 ; =0x00005556
+ blx _s32_div_f
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #0x3
+ blo _02061826
+ bl ErrorHandling
+_02061826:
+ add r4, #0x21
+ add r0, r4, #0x0
+ add sp, #0x8
+ pop {r4-r6, pc}
+ nop
+_02061830: .word 0x00005556
+
+ thumb_func_start FUN_02061834
+FUN_02061834: ; 0x02061834
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, r1, #0x0
+ bl FUN_02248B60
+ add r4, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_02024DA0
+ ldrh r1, [r4, #0x0]
+ bl FUN_020245F0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02061850
+FUN_02061850: ; 0x02061850
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_02023924
+ str r0, [r5, #0x0]
+ add r0, r4, #0x0
+ add r1, r5, #0x4
+ bl FUN_0202393C
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02061868
+FUN_02061868: ; 0x02061868
+ push {r4-r6, lr}
+ add r6, r2, #0x0
+ add r0, r6, #0x0
+ add r5, r1, #0x0
+ bl FUN_02248B60
+ add r4, r0, #0x0
+ bl FUN_02023924
+ ldr r1, [r4, #0x0]
+ cmp r1, r0
+ beq _02061884
+ bl ErrorHandling
+_02061884:
+ add r0, r5, #0x0
+ mov r1, #0x0
+ add r2, r6, #0x0
+ bl FUN_02060DCC
+ add r0, r5, #0x0
+ mov r1, #0x1
+ add r2, r4, #0x4
+ bl FUN_0200ABC0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206189C
+FUN_0206189C: ; 0x0206189C
+ push {r4, lr}
+ sub sp, #0x28
+ add r4, r0, #0x0
+ add r0, sp, #0x0
+ bl FUN_02061850
+ add r0, r4, #0x0
+ mov r1, #0x2
+ mov r2, #0x16
+ add r3, sp, #0x0
+ bl FUN_02060D74
+ add sp, #0x28
+ pop {r4, pc}
+
+ thumb_func_start FUN_020618B8
+FUN_020618B8: ; 0x020618B8
+ push {r4, lr}
+ sub sp, #0x28
+ add r4, r0, #0x0
+ add r0, sp, #0x0
+ bl FUN_02061850
+ add r0, r4, #0x0
+ mov r1, #0x2
+ mov r2, #0x17
+ add r3, sp, #0x0
+ bl FUN_02060D74
+ add sp, #0x28
+ pop {r4, pc}
+
+ thumb_func_start FUN_020618D4
+FUN_020618D4: ; 0x020618D4
+ push {r3, lr}
+ bl FUN_02061868
+ mov r0, #0x24
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_020618E0
+FUN_020618E0: ; 0x020618E0
+ push {r3, lr}
+ bl FUN_02061868
+ mov r0, #0x25
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_020618EC
+FUN_020618EC: ; 0x020618EC
+ push {r3, lr}
+ ldr r0, [r0, #0xc]
+ bl FUN_0206F158
+ mov r1, #0x6b
+ lsl r1, r1, #0x2
+ mov r2, #0x1
+ mov r3, #0x20
+ bl FUN_0206EE50
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02061904
+FUN_02061904: ; 0x02061904
+ push {r3-r6, lr}
+ sub sp, #0x2c
+ add r6, r0, #0x0
+ add r0, sp, #0x8
+ add r5, r1, #0x0
+ add r4, r3, #0x0
+ add r0, #0x2
+ add r1, sp, #0x4
+ add r3, sp, #0x8
+ str r0, [sp, #0x0]
+ add r0, r2, #0x0
+ add r1, #0x2
+ add r2, sp, #0x8
+ add r3, #0x1
+ bl FUN_02060E34
+ add r0, sp, #0x4
+ strh r5, [r0, #0x0]
+ strb r4, [r0, #0x7]
+ add r0, r6, #0x0
+ mov r1, #0x3
+ mov r2, #0x1
+ add r3, sp, #0x4
+ bl FUN_02060D74
+ add sp, #0x2c
+ pop {r3-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206193C
+FUN_0206193C: ; 0x0206193C
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r6, r2, #0x0
+ add r5, r1, #0x0
+ add r0, r6, #0x0
+ bl FUN_02248B60
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x0
+ add r2, r6, #0x0
+ bl FUN_02060DCC
+ ldrb r0, [r4, #0x5]
+ mov r1, #0x1
+ str r0, [sp, #0x0]
+ ldrb r0, [r4, #0x6]
+ str r0, [sp, #0x4]
+ ldrh r2, [r4, #0x2]
+ ldrb r3, [r4, #0x4]
+ add r0, r5, #0x0
+ bl FUN_02060E70
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ ldrh r2, [r4, #0x0]
+ add r0, r5, #0x0
+ mov r1, #0x2
+ mov r3, #0x4
+ bl FUN_0200AD38
+ ldrb r0, [r4, #0x7]
+ cmp r0, #0x0
+ bne _0206198A
+ add sp, #0x8
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_0206198A:
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02061990
+FUN_02061990: ; 0x02061990
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, r1, #0x0
+ bl FUN_02248B60
+ add r4, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_02024DA0
+ ldrh r1, [r4, #0x2]
+ bl FUN_020245F0
+ cmp r0, #0x0
+ bne _020619B0
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_020619B0:
+ ldr r0, [r5, #0xc]
+ bl FUN_020462AC
+ mov r1, #0x2
+ mov r2, #0x11
+ bl FUN_0205F2E4
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_020619C0
+FUN_020619C0: ; 0x020619C0
+ push {r4-r5, lr}
+ sub sp, #0x2c
+ add r5, r0, #0x0
+ add r0, sp, #0x8
+ str r0, [sp, #0x0]
+ add r0, r2, #0x0
+ add r2, sp, #0x4
+ add r3, sp, #0x4
+ add r4, r1, #0x0
+ add r1, sp, #0x4
+ add r2, #0x2
+ add r3, #0x3
+ bl FUN_02060E34
+ mov r1, #0x3
+ add r0, r5, #0x0
+ add r2, r1, #0x0
+ add r3, sp, #0x4
+ str r4, [sp, #0xc]
+ bl FUN_02060D74
+ add sp, #0x2c
+ pop {r4-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020619F0
+FUN_020619F0: ; 0x020619F0
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r6, r2, #0x0
+ add r5, r1, #0x0
+ add r0, r6, #0x0
+ bl FUN_02248B60
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x0
+ add r2, r6, #0x0
+ bl FUN_02060DCC
+ ldrb r0, [r4, #0x3]
+ mov r1, #0x1
+ str r0, [sp, #0x0]
+ ldrb r0, [r4, #0x4]
+ str r0, [sp, #0x4]
+ ldrh r2, [r4, #0x0]
+ ldrb r3, [r4, #0x2]
+ add r0, r5, #0x0
+ bl FUN_02060E70
+ mov r0, #0xfa
+ ldr r1, [r4, #0x8]
+ lsl r0, r0, #0x2
+ mul r0, r1
+ mov r1, #0xfe
+ blx _u32_div_f
+ add r0, r0, #0x5
+ mov r1, #0xa
+ blx _u32_div_f
+ mov r1, #0xa
+ add r4, r0, #0x0
+ blx _u32_div_f
+ add r2, r0, #0x0
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ mov r1, #0x2
+ mov r3, #0x3
+ bl FUN_0200AD38
+ add r0, r4, #0x0
+ mov r1, #0xa
+ blx _u32_div_f
+ mov r0, #0x0
+ add r2, r1, #0x0
+ str r0, [sp, #0x0]
+ mov r3, #0x1
+ add r0, r5, #0x0
+ mov r1, #0x3
+ str r3, [sp, #0x4]
+ bl FUN_0200AD38
+ mov r0, #0x2
+ add sp, #0x8
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02061A70
+FUN_02061A70: ; 0x02061A70
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, r1, #0x0
+ bl FUN_02248B60
+ add r4, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_02024DA0
+ ldrh r1, [r4, #0x0]
+ bl FUN_020245F0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02061A8C
+FUN_02061A8C: ; 0x02061A8C
+ push {r3-r5, lr}
+ sub sp, #0x28
+ mov r4, #0xfa
+ lsl r4, r4, #0x2
+ add r4, r1, r4
+ add r5, sp, #0x0
+ cmp r2, r4
+ blo _02061AAC
+ str r1, [r5, #0x0]
+ str r2, [r5, #0x4]
+ str r3, [r5, #0x8]
+ mov r1, #0x3
+ mov r2, #0x4
+ add r3, r5, #0x0
+ bl FUN_02060D74
+_02061AAC:
+ add sp, #0x28
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02061AB0
+FUN_02061AB0: ; 0x02061AB0
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r6, r2, #0x0
+ add r5, r1, #0x0
+ add r0, r6, #0x0
+ bl FUN_02248B60
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x0
+ add r2, r6, #0x0
+ bl FUN_02060DCC
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r1, #0x1
+ str r1, [sp, #0x4]
+ ldr r2, [r4, #0x8]
+ add r0, r5, #0x0
+ mov r3, #0xa
+ bl FUN_0200AD38
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ ldr r2, [r4, #0x0]
+ add r0, r5, #0x0
+ mov r1, #0x2
+ mov r3, #0x6
+ bl FUN_0200AD38
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ ldr r2, [r4, #0x4]
+ add r0, r5, #0x0
+ mov r1, #0x3
+ mov r3, #0x6
+ bl FUN_0200AD38
+ mov r0, #0x3
+ add sp, #0x8
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02061B0C
+FUN_02061B0C: ; 0x02061B0C
+ push {r3, lr}
+ sub sp, #0x28
+ add r3, sp, #0x0
+ strh r1, [r3, #0x0]
+ strh r2, [r3, #0x2]
+ mov r1, #0x3
+ mov r2, #0x8
+ add r3, sp, #0x0
+ bl FUN_02060D74
+ add sp, #0x28
+ pop {r3, pc}
+
+ thumb_func_start FUN_02061B24
+FUN_02061B24: ; 0x02061B24
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r6, r2, #0x0
+ add r5, r1, #0x0
+ add r0, r6, #0x0
+ bl FUN_02248B60
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x0
+ add r2, r6, #0x0
+ bl FUN_02060DCC
+ ldrh r2, [r4, #0x0]
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_0200B1D4
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ ldrh r2, [r4, #0x2]
+ add r0, r5, #0x0
+ mov r1, #0x2
+ mov r3, #0x3
+ bl FUN_0200AD38
+ mov r0, #0x7
+ add sp, #0x8
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02061B64
+FUN_02061B64: ; 0x02061B64
+ push {r3, lr}
+ sub sp, #0x28
+ add r2, sp, #0x0
+ add r3, sp, #0x0
+ strh r1, [r2, #0x0]
+ cmp r1, #0x1
+ bls _02061B7A
+ mov r1, #0x3
+ mov r2, #0x9
+ bl FUN_02060D74
+_02061B7A:
+ add sp, #0x28
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02061B80
+FUN_02061B80: ; 0x02061B80
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r6, r2, #0x0
+ add r5, r1, #0x0
+ add r0, r6, #0x0
+ bl FUN_02248B60
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x0
+ add r2, r6, #0x0
+ bl FUN_02060DCC
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r1, #0x1
+ str r1, [sp, #0x4]
+ ldrh r2, [r4, #0x0]
+ add r0, r5, #0x0
+ mov r3, #0x3
+ bl FUN_0200AD38
+ mov r0, #0x8
+ add sp, #0x8
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02061BB4
+FUN_02061BB4: ; 0x02061BB4
+ push {r3, lr}
+ ldr r0, [r0, #0xc]
+ bl FUN_0206F158
+ mov r1, #0x6b
+ lsl r1, r1, #0x2
+ mov r2, #0x1
+ mov r3, #0x20
+ bl FUN_0206EE50
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02061BCC
+FUN_02061BCC: ; 0x02061BCC
+ push {r3-r5, lr}
+ sub sp, #0x28
+ add r5, r0, #0x0
+ ldr r0, [r5, #0xc]
+ add r4, r1, #0x0
+ bl FUN_02022504
+ bl FUN_0202B85C
+ ldrh r2, [r0, #0x0]
+ add r1, sp, #0x0
+ add r3, sp, #0x0
+ strh r2, [r1, #0x0]
+ ldrh r2, [r0, #0x2]
+ strh r2, [r1, #0x2]
+ mov r2, #0x0
+ strb r2, [r0, #0x0]
+ strh r4, [r1, #0x4]
+ add r0, r5, #0x0
+ mov r1, #0x1
+ mov r2, #0x2
+ bl FUN_02060D74
+ add sp, #0x28
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02061C00
+FUN_02061C00: ; 0x02061C00
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r6, r2, #0x0
+ add r0, r6, #0x0
+ add r5, r1, #0x0
+ bl FUN_02248B60
+ mov r1, #0x0
+ add r4, r0, #0x0
+ str r1, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ ldrh r2, [r4, #0x2]
+ add r0, r5, #0x0
+ mov r3, #0x4
+ bl FUN_0200AD38
+ add r0, r5, #0x0
+ mov r1, #0x1
+ add r2, r6, #0x0
+ bl FUN_02060DCC
+ ldrh r2, [r4, #0x4]
+ add r0, r5, #0x0
+ mov r1, #0x2
+ bl FUN_0200B518
+ ldrb r0, [r4, #0x1]
+ cmp r0, #0x1
+ bne _02061C42
+ add sp, #0x8
+ mov r0, #0x8
+ pop {r4-r6, pc}
+_02061C42:
+ mov r0, #0x9
+ add sp, #0x8
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02061C48
+FUN_02061C48: ; 0x02061C48
+ push {r3, lr}
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ mov r1, #0x2
+ mov r2, #0x11
+ bl FUN_0205F2E4
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02061C5C
+FUN_02061C5C: ; 0x02061C5C
+ push {r3-r6, lr}
+ sub sp, #0x2c
+ add r5, r0, #0x0
+ ldr r0, [r5, #0xc]
+ add r4, r1, #0x0
+ bl FUN_0206BB1C
+ bl FUN_0204A20C
+ add r1, sp, #0x8
+ add r2, sp, #0x4
+ add r3, sp, #0x4
+ str r1, [sp, #0x0]
+ add r1, sp, #0x4
+ add r2, #0x2
+ add r3, #0x3
+ add r6, r0, #0x0
+ bl FUN_02060E34
+ add r2, sp, #0x8
+ add r3, sp, #0x8
+ mov r0, #0x20
+ add r1, r6, #0x0
+ add r2, #0x1
+ add r3, #0x2
+ bl FUN_02060ECC
+ add r0, sp, #0x4
+ strh r4, [r0, #0x1c]
+ add r0, r5, #0x0
+ mov r1, #0x1
+ mov r2, #0x4
+ add r3, sp, #0x4
+ bl FUN_02060D74
+ add sp, #0x2c
+ pop {r3-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02061CA8
+FUN_02061CA8: ; 0x02061CA8
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r6, r2, #0x0
+ add r0, r6, #0x0
+ add r5, r1, #0x0
+ bl FUN_02248B60
+ add r4, r0, #0x0
+ ldrb r0, [r4, #0x5]
+ cmp r0, #0x0
+ beq _02061D00
+ add r0, r5, #0x0
+ mov r1, #0x0
+ add r2, r6, #0x0
+ bl FUN_02060DCC
+ ldrb r0, [r4, #0x3]
+ mov r1, #0x1
+ str r0, [sp, #0x0]
+ ldrb r0, [r4, #0x4]
+ str r0, [sp, #0x4]
+ ldrh r2, [r4, #0x0]
+ ldrb r3, [r4, #0x2]
+ add r0, r5, #0x0
+ bl FUN_02060E70
+ ldrb r0, [r4, #0x3]
+ mov r1, #0x2
+ add r2, r4, #0x6
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ ldrb r3, [r4, #0x2]
+ add r0, r5, #0x0
+ bl FUN_02060D90
+ ldrh r2, [r4, #0x1c]
+ add r0, r5, #0x0
+ mov r1, #0x3
+ bl FUN_0200B518
+ add sp, #0x8
+ mov r0, #0xa
+ pop {r4-r6, pc}
+_02061D00:
+ add r0, r5, #0x0
+ mov r1, #0x0
+ add r2, r6, #0x0
+ bl FUN_02060DCC
+ ldrb r0, [r4, #0x3]
+ mov r1, #0x1
+ str r0, [sp, #0x0]
+ ldrb r0, [r4, #0x4]
+ str r0, [sp, #0x4]
+ ldrh r2, [r4, #0x0]
+ ldrb r3, [r4, #0x2]
+ add r0, r5, #0x0
+ bl FUN_02060E70
+ ldrh r2, [r4, #0x1c]
+ add r0, r5, #0x0
+ mov r1, #0x3
+ bl FUN_0200B518
+ mov r0, #0xb
+ add sp, #0x8
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02061D30
+FUN_02061D30: ; 0x02061D30
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, r1, #0x0
+ bl FUN_02248B60
+ add r4, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_02024DA0
+ ldrh r1, [r4, #0x0]
+ bl FUN_020245F0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02061D4C
+FUN_02061D4C: ; 0x02061D4C
+ push {r3-r5, lr}
+ sub sp, #0x28
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x4]
+ add r4, r1, #0x0
+ ldr r0, [r0, #0x14]
+ bl FUN_02252538
+ str r0, [sp, #0x0]
+ add r0, sp, #0x0
+ strh r4, [r0, #0x4]
+ add r0, r5, #0x0
+ mov r1, #0x1
+ mov r2, #0x6
+ add r3, sp, #0x0
+ bl FUN_02060D74
+ add sp, #0x28
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02061D74
+FUN_02061D74: ; 0x02061D74
+ push {r4-r6, lr}
+ add r6, r2, #0x0
+ add r5, r1, #0x0
+ add r0, r6, #0x0
+ bl FUN_02248B60
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x0
+ add r2, r6, #0x0
+ bl FUN_02060DCC
+ ldr r2, [r4, #0x0]
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_0200B02C
+ ldrh r2, [r4, #0x4]
+ add r0, r5, #0x0
+ mov r1, #0x2
+ bl FUN_0200B518
+ mov r0, #0x10
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02061DA4
+FUN_02061DA4: ; 0x02061DA4
+ push {r3-r5, lr}
+ sub sp, #0x28
+ add r5, r0, #0x0
+ ldr r0, [r5, #0xc]
+ add r4, r1, #0x0
+ bl FUN_02022504
+ bl FUN_0202B838
+ ldrh r2, [r0, #0x0]
+ add r1, sp, #0x0
+ add r3, sp, #0x0
+ strh r2, [r1, #0x0]
+ ldrh r2, [r0, #0x2]
+ strh r2, [r1, #0x2]
+ ldrh r2, [r0, #0x4]
+ strh r2, [r1, #0x4]
+ ldrh r2, [r0, #0x6]
+ strh r2, [r1, #0x6]
+ ldrh r2, [r0, #0x8]
+ strh r2, [r1, #0x8]
+ mov r2, #0x0
+ strb r2, [r0, #0x0]
+ strh r4, [r1, #0xa]
+ add r0, r5, #0x0
+ mov r1, #0x1
+ mov r2, #0x7
+ bl FUN_02060D74
+ add sp, #0x28
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02061DE4
+FUN_02061DE4: ; 0x02061DE4
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r6, r2, #0x0
+ add r0, r6, #0x0
+ add r5, r1, #0x0
+ bl FUN_02248B60
+ add r4, r0, #0x0
+ ldrb r0, [r4, #0x5]
+ mov r1, #0x0
+ str r0, [sp, #0x0]
+ ldrb r0, [r4, #0x6]
+ str r0, [sp, #0x4]
+ ldrh r2, [r4, #0x2]
+ ldrb r3, [r4, #0x4]
+ add r0, r5, #0x0
+ bl FUN_02060E70
+ ldrb r0, [r4, #0x8]
+ bl FUN_02083298
+ add r2, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_0200B2AC
+ ldrb r0, [r4, #0x7]
+ bl FUN_02083268
+ add r2, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x2
+ bl FUN_0200B278
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r3, #0x1
+ str r3, [sp, #0x4]
+ ldrb r2, [r4, #0x9]
+ add r0, r5, #0x0
+ mov r1, #0x3
+ bl FUN_0200AD38
+ add r0, r5, #0x0
+ mov r1, #0x4
+ add r2, r6, #0x0
+ bl FUN_02060DCC
+ ldrh r2, [r4, #0xa]
+ add r0, r5, #0x0
+ mov r1, #0x5
+ bl FUN_0200B518
+ ldrb r0, [r4, #0x9]
+ cmp r0, #0x1
+ bne _02061E5A
+ add sp, #0x8
+ mov r0, #0x12
+ pop {r4-r6, pc}
+_02061E5A:
+ mov r0, #0x11
+ add sp, #0x8
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02061E60
+FUN_02061E60: ; 0x02061E60
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, r1, #0x0
+ bl FUN_02248B60
+ add r4, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_02024DA0
+ ldrh r1, [r4, #0x2]
+ bl FUN_020245F0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02061E7C
+FUN_02061E7C: ; 0x02061E7C
+ push {r4, lr}
+ sub sp, #0x28
+ add r4, r0, #0x0
+ add r0, sp, #0x0
+ strh r1, [r0, #0x2]
+ ldr r0, [r4, #0xc]
+ bl FUN_02027E24
+ mov r1, #0x0
+ bl FUN_02027008
+ bl FUN_020275D8
+ add r1, sp, #0x0
+ strh r0, [r1, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0x1
+ mov r2, #0x9
+ add r3, sp, #0x0
+ bl FUN_02060D74
+ add sp, #0x28
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02061EAC
+FUN_02061EAC: ; 0x02061EAC
+ push {r4-r6, lr}
+ add r6, r2, #0x0
+ add r5, r1, #0x0
+ add r0, r6, #0x0
+ bl FUN_02248B60
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x0
+ add r2, r6, #0x0
+ bl FUN_02060DCC
+ ldrh r2, [r4, #0x0]
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_02060EA0
+ ldrh r2, [r4, #0x2]
+ add r0, r5, #0x0
+ mov r1, #0x2
+ bl FUN_0200B518
+ mov r0, #0x14
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02061EDC
+FUN_02061EDC: ; 0x02061EDC
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, r1, #0x0
+ bl FUN_02248B60
+ add r4, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_02024DA0
+ ldrh r1, [r4, #0x0]
+ bl FUN_020245F0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02061EF8
+FUN_02061EF8: ; 0x02061EF8
+ push {r3, lr}
+ sub sp, #0x28
+ str r1, [sp, #0x0]
+ mov r1, #0x1
+ mov r2, #0xa
+ add r3, sp, #0x0
+ bl FUN_02060D74
+ add sp, #0x28
+ pop {r3, pc}
+
+ thumb_func_start FUN_02061F0C
+FUN_02061F0C: ; 0x02061F0C
+ push {r4-r6, lr}
+ add r6, r2, #0x0
+ add r5, r1, #0x0
+ add r0, r6, #0x0
+ bl FUN_02248B60
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x0
+ add r2, r6, #0x0
+ bl FUN_02060DCC
+ ldr r0, [r4, #0x0]
+ add r0, #0x14
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02061F2C
+FUN_02061F2C: ; 0x02061F2C
+ push {r3-r5, lr}
+ sub sp, #0x28
+ add r5, r0, #0x0
+ ldr r0, [r5, #0xc]
+ add r4, r1, #0x0
+ bl FUN_02022504
+ bl FUN_0202B850
+ ldrb r2, [r0, #0x0]
+ add r1, sp, #0x0
+ add r3, sp, #0x0
+ strb r2, [r1, #0x0]
+ ldrb r2, [r0, #0x1]
+ strb r2, [r1, #0x1]
+ strh r4, [r1, #0x2]
+ mov r1, #0x0
+ strb r1, [r0, #0x0]
+ add r0, r5, #0x0
+ mov r1, #0x1
+ mov r2, #0xb
+ bl FUN_02060D74
+ add sp, #0x28
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02061F60
+FUN_02061F60: ; 0x02061F60
+ push {r3-r7, lr}
+ add r7, r2, #0x0
+ add r0, r7, #0x0
+ add r5, r1, #0x0
+ bl FUN_02248B60
+ add r6, r0, #0x0
+ ldrb r4, [r6, #0x1]
+ add r0, r5, #0x0
+ mov r1, #0x0
+ add r2, r7, #0x0
+ bl FUN_02060DCC
+ add r0, r5, #0x0
+ mov r1, #0x1
+ add r2, r4, #0x0
+ bl FUN_0200B628
+ ldrh r2, [r6, #0x2]
+ add r0, r5, #0x0
+ mov r1, #0x2
+ bl FUN_0200B518
+ sub r4, #0x19
+ cmp r4, #0x3
+ bhi _02061FB8
+ add r0, r4, r4
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02061FA0: ; jump table (using 16-bit offset)
+ .short _02061FA8 - _02061FA0 - 2; case 0
+ .short _02061FAC - _02061FA0 - 2; case 1
+ .short _02061FB0 - _02061FA0 - 2; case 2
+ .short _02061FB4 - _02061FA0 - 2; case 3
+_02061FA8:
+ mov r0, #0x27
+ pop {r3-r7, pc}
+_02061FAC:
+ mov r0, #0x28
+ pop {r3-r7, pc}
+_02061FB0:
+ mov r0, #0x29
+ pop {r3-r7, pc}
+_02061FB4:
+ mov r0, #0x2a
+ pop {r3-r7, pc}
+_02061FB8:
+ mov r0, #0x26
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02061FBC
+FUN_02061FBC: ; 0x02061FBC
+ push {r4-r6, lr}
+ sub sp, #0x28
+ add r5, r0, #0x0
+ ldr r0, [r5, #0xc]
+ add r4, r1, #0x0
+ bl FUN_02022504
+ bl FUN_0202B844
+ add r6, r0, #0x0
+ add r3, sp, #0x0
+ mov r2, #0x12
+_02061FD4:
+ ldrh r1, [r6, #0x0]
+ add r6, r6, #0x2
+ strh r1, [r3, #0x0]
+ add r3, r3, #0x2
+ sub r2, r2, #0x1
+ bne _02061FD4
+ add r1, sp, #0x0
+ strh r4, [r1, #0x24]
+ mov r1, #0x0
+ strb r1, [r0, #0x0]
+ add r0, r5, #0x0
+ mov r1, #0x1
+ mov r2, #0xd
+ add r3, sp, #0x0
+ bl FUN_02060D74
+ add sp, #0x28
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02061FF8
+FUN_02061FF8: ; 0x02061FF8
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r6, r2, #0x0
+ add r5, r1, #0x0
+ add r0, r6, #0x0
+ bl FUN_02248B60
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x0
+ add r2, r6, #0x0
+ bl FUN_02060DCC
+ ldrb r0, [r4, #0x5]
+ mov r1, #0x1
+ str r0, [sp, #0x0]
+ ldrb r0, [r4, #0x6]
+ str r0, [sp, #0x4]
+ ldrh r2, [r4, #0x2]
+ ldrb r3, [r4, #0x4]
+ add r0, r5, #0x0
+ bl FUN_02060E70
+ ldrb r2, [r4, #0x1e]
+ add r0, r5, #0x0
+ mov r1, #0x2
+ bl FUN_0200AE04
+ ldrh r2, [r4, #0x24]
+ add r0, r5, #0x0
+ mov r1, #0x5
+ bl FUN_0200B518
+ ldrb r0, [r4, #0x1f]
+ cmp r0, #0x0
+ beq _0206204A
+ cmp r0, #0x1
+ beq _02062062
+ cmp r0, #0x2
+ beq _02062050
+ b _02062072
+_0206204A:
+ add sp, #0x8
+ mov r0, #0x2d
+ pop {r4-r6, pc}
+_02062050:
+ add r4, #0x20
+ ldrb r2, [r4, #0x0]
+ add r0, r5, #0x0
+ mov r1, #0x3
+ bl FUN_0200B660
+ add sp, #0x8
+ mov r0, #0x2c
+ pop {r4-r6, pc}
+_02062062:
+ ldrh r2, [r4, #0x22]
+ add r0, r5, #0x0
+ mov r1, #0x3
+ bl FUN_0200AE38
+ add sp, #0x8
+ mov r0, #0x2e
+ pop {r4-r6, pc}
+_02062072:
+ mov r0, #0x2d
+ add sp, #0x8
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02062078
+FUN_02062078: ; 0x02062078
+ push {r3-r7, lr}
+ mov r6, #0x0
+ ldr r5, _0206209C ; =0x020F7650
+ add r7, r0, #0x0
+ add r4, r6, #0x0
+_02062082:
+ ldrb r1, [r5, #0x0]
+ add r0, r7, #0x0
+ bl FUN_02028828
+ cmp r0, #0x0
+ beq _02062090
+ add r4, r4, #0x1
+_02062090:
+ add r6, r6, #0x1
+ add r5, r5, #0x1
+ cmp r6, #0x5
+ blo _02062082
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+_0206209C: .word 0x020F7650
+
+ thumb_func_start FUN_020620A0
+FUN_020620A0: ; 0x020620A0
+ push {r3-r7, lr}
+ sub sp, #0x10
+ str r0, [sp, #0x4]
+ ldr r0, [r0, #0xc]
+ str r1, [sp, #0x8]
+ bl FUN_0202881C
+ add r7, r0, #0x0
+ bl FUN_02062078
+ add r4, r0, #0x0
+ cmp r4, #0x0
+ bgt _020620BE
+ bl ErrorHandling
+_020620BE:
+ cmp r4, #0x1
+ ble _020620D0
+ bl FUN_0201BA60
+ add r1, r4, #0x0
+ blx _u32_div_f
+ add r5, r1, #0x0
+ b _020620D2
+_020620D0:
+ mov r5, #0x0
+_020620D2:
+ ldr r4, _02062154 ; =0x020F7650
+ mov r6, #0x0
+_020620D6:
+ ldrb r1, [r4, #0x0]
+ add r0, r7, #0x0
+ bl FUN_02028828
+ cmp r0, #0x0
+ beq _020620F0
+ cmp r5, #0x0
+ bne _020620EE
+ ldr r0, _02062154 ; =0x020F7650
+ ldrb r0, [r0, r6]
+ str r0, [sp, #0xc]
+ b _020620F8
+_020620EE:
+ sub r5, r5, #0x1
+_020620F0:
+ add r6, r6, #0x1
+ add r4, r4, #0x1
+ cmp r6, #0x5
+ blo _020620D6
+_020620F8:
+ cmp r5, #0x0
+ beq _02062100
+ bl ErrorHandling
+_02062100:
+ bl FUN_0201B9EC
+ mov r1, #0xf1
+ lsl r1, r1, #0x4
+ blx _s32_div_f
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #0x11
+ blo _02062118
+ bl ErrorHandling
+_02062118:
+ cmp r4, #0x9
+ blt _0206211E
+ add r4, r4, #0x1
+_0206211E:
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ ldr r1, [sp, #0x4]
+ ldr r0, [sp, #0x8]
+ ldr r1, [r1, #0xc]
+ ldr r2, [sp, #0xc]
+ mov r3, #0x0
+ bl FUN_0200B708
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldr r1, [sp, #0x4]
+ ldr r0, [sp, #0x8]
+ ldr r1, [r1, #0xc]
+ ldr r2, [sp, #0xc]
+ mov r3, #0x1
+ bl FUN_0200B708
+ ldr r0, [sp, #0x8]
+ mov r1, #0x2
+ add r2, r4, #0x0
+ bl FUN_0200AF18
+ mov r0, #0x0
+ add sp, #0x10
+ pop {r3-r7, pc}
+ nop
+_02062154: .word 0x020F7650
+
+ thumb_func_start FUN_02062158
+FUN_02062158: ; 0x02062158
+ push {r3, lr}
+ ldr r0, [r0, #0xc]
+ bl FUN_0202881C
+ bl FUN_02062078
+ cmp r0, #0x0
+ beq _0206216C
+ mov r0, #0x1
+ pop {r3, pc}
+_0206216C:
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_02062170
+FUN_02062170: ; 0x02062170
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ add r7, r1, #0x0
+ bl FUN_0201B9EC
+ ldr r1, _02062234 ; =0x00003334
+ blx _s32_div_f
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #0x5
+ blo _0206218C
+ bl ErrorHandling
+_0206218C:
+ ldr r0, _02062238 ; =0x02105FBC
+ lsl r1, r4, #0x1
+ ldrh r5, [r0, r1]
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ bl FUN_02034FE4
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02034824
+ add r2, r0, #0x0
+ add r0, r7, #0x0
+ mov r1, #0x0
+ bl FUN_0200AFF4
+ cmp r4, #0xb
+ bhi _0206222C
+ add r0, r4, r4
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_020621BC: ; jump table (using 16-bit offset)
+ .short _020621D4 - _020621BC - 2; case 0
+ .short _0206220C - _020621BC - 2; case 1
+ .short _02062210 - _020621BC - 2; case 2
+ .short _02062214 - _020621BC - 2; case 3
+ .short _02062224 - _020621BC - 2; case 4
+ .short _02062218 - _020621BC - 2; case 5
+ .short _0206221C - _020621BC - 2; case 6
+ .short _02062220 - _020621BC - 2; case 7
+ .short _0206222C - _020621BC - 2; case 8
+ .short _0206222C - _020621BC - 2; case 9
+ .short _0206222C - _020621BC - 2; case 10
+ .short _02062228 - _020621BC - 2; case 11
+_020621D4:
+ bl FUN_0201B9EC
+ lsl r0, r0, #0x2
+ lsr r4, r0, #0x10
+ cmp r4, #0x4
+ blo _020621E4
+ bl ErrorHandling
+_020621E4:
+ cmp r4, #0x3
+ bhi _0206220C
+ add r0, r4, r4
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_020621F4: ; jump table (using 16-bit offset)
+ .short _020621FC - _020621F4 - 2; case 0
+ .short _02062200 - _020621F4 - 2; case 1
+ .short _02062204 - _020621F4 - 2; case 2
+ .short _02062208 - _020621F4 - 2; case 3
+_020621FC:
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02062200:
+ mov r0, #0x2
+ pop {r3-r7, pc}
+_02062204:
+ mov r0, #0x3
+ pop {r3-r7, pc}
+_02062208:
+ mov r0, #0x4
+ pop {r3-r7, pc}
+_0206220C:
+ mov r0, #0x5
+ pop {r3-r7, pc}
+_02062210:
+ mov r0, #0x6
+ pop {r3-r7, pc}
+_02062214:
+ mov r0, #0x7
+ pop {r3-r7, pc}
+_02062218:
+ mov r0, #0x8
+ pop {r3-r7, pc}
+_0206221C:
+ mov r0, #0x9
+ pop {r3-r7, pc}
+_02062220:
+ mov r0, #0xa
+ pop {r3-r7, pc}
+_02062224:
+ mov r0, #0xb
+ pop {r3-r7, pc}
+_02062228:
+ mov r0, #0xc
+ pop {r3-r7, pc}
+_0206222C:
+ bl ErrorHandling
+ mov r0, #0x1
+ pop {r3-r7, pc}
+ .balign 4
+_02062234: .word 0x00003334
+_02062238: .word 0x02105FBC
+
+ thumb_func_start FUN_0206223C
+FUN_0206223C: ; 0x0206223C
+ mov r0, #0x1
+ bx lr
+
+ thumb_func_start FUN_02062240
+FUN_02062240: ; 0x02062240
+ push {r3-r4, lr}
+ sub sp, #0x4
+ ldr r0, [r0, #0xc]
+ add r4, r1, #0x0
+ bl FUN_0202A9B0
+ mov r1, #0x2
+ bl FUN_0202A990
+ add r1, sp, #0x0
+ add r1, #0x2
+ add r2, sp, #0x0
+ bl FUN_02245910
+ add r0, sp, #0x0
+ ldrh r0, [r0, #0x2]
+ bl FUN_02034824
+ add r2, r0, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_0200AFF4
+ add r2, sp, #0x0
+ ldrh r2, [r2, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_02060EA0
+ mov r0, #0x1c
+ add sp, #0x4
+ pop {r3-r4, pc}
+
+ thumb_func_start FUN_02062280
+FUN_02062280: ; 0x02062280
+ push {r3, lr}
+ ldr r0, [r0, #0xc]
+ bl FUN_0202A9B0
+ bl FUN_0202AA14
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02062290
+FUN_02062290: ; 0x02062290
+ push {r3-r4}
+ ldr r4, _020622BC ; =0x020F78A4
+ mov r3, #0x0
+_02062296:
+ ldrb r2, [r4, #0x0]
+ cmp r0, r2
+ bne _020622AE
+ ldrb r2, [r4, #0x1]
+ cmp r1, r2
+ bne _020622AE
+ lsl r0, r3, #0x1
+ add r1, r3, r0
+ ldr r0, _020622C0 ; =0x020F78A6
+ ldrb r0, [r0, r1]
+ pop {r3-r4}
+ bx lr
+_020622AE:
+ add r3, r3, #0x1
+ add r4, r4, #0x3
+ cmp r3, #0x6e
+ blo _02062296
+ mov r0, #0x3
+ pop {r3-r4}
+ bx lr
+ .balign 4
+_020622BC: .word 0x020F78A4
+_020622C0: .word 0x020F78A6
+
+ thumb_func_start FUN_020622C4
+FUN_020622C4: ; 0x020622C4
+ push {r4-r6, lr}
+ add r6, r1, #0x0
+ bl FUN_0201B9EC
+ mov r1, #0xf1
+ lsl r1, r1, #0x4
+ blx _s32_div_f
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ cmp r5, #0x11
+ blo _020622E0
+ bl ErrorHandling
+_020622E0:
+ cmp r5, #0x9
+ blt _020622E6
+ add r5, r5, #0x1
+_020622E6:
+ bl FUN_0201B9EC
+ mov r1, #0xf1
+ lsl r1, r1, #0x4
+ blx _s32_div_f
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #0x11
+ blo _020622FE
+ bl ErrorHandling
+_020622FE:
+ cmp r4, #0x9
+ blt _02062304
+ add r4, r4, #0x1
+_02062304:
+ add r0, r6, #0x0
+ mov r1, #0x0
+ add r2, r5, #0x0
+ bl FUN_0200AF18
+ add r0, r6, #0x0
+ mov r1, #0x1
+ add r2, r4, #0x0
+ bl FUN_0200AF18
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02062290
+ cmp r0, #0x3
+ bhi _0206233C
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02062330: ; jump table (using 16-bit offset)
+ .short _02062344 - _02062330 - 2; case 0
+ .short _02062340 - _02062330 - 2; case 1
+ .short _02062338 - _02062330 - 2; case 2
+ .short _0206233C - _02062330 - 2; case 3
+_02062338:
+ mov r0, #0x1e
+ pop {r4-r6, pc}
+_0206233C:
+ mov r0, #0x1f
+ pop {r4-r6, pc}
+_02062340:
+ mov r0, #0x20
+ pop {r4-r6, pc}
+_02062344:
+ mov r0, #0x21
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02062348
+FUN_02062348: ; 0x02062348
+ mov r0, #0x1
+ bx lr
+
+ thumb_func_start FUN_0206234C
+FUN_0206234C: ; 0x0206234C
+ push {r3-r7, lr}
+ sub sp, #0x88
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ ldr r4, _020623E8 ; =0x020F7658
+ add r7, r0, #0x0
+ mov r6, #0x0
+ add r5, sp, #0x0
+_0206235E:
+ ldrh r2, [r4, #0x0]
+ add r0, r7, #0x0
+ mov r1, #0x2
+ bl FUN_0205F2E4
+ strb r0, [r5, #0x0]
+ add r6, r6, #0x1
+ add r4, r4, #0x2
+ add r5, r5, #0x1
+ cmp r6, #0x12
+ blo _0206235E
+ mov r3, #0x0
+ add r2, sp, #0x10
+ ldr r0, _020623EC ; =0x020F79EE
+ add r4, r3, #0x0
+ add r1, r3, #0x0
+ add r2, #0x2
+ add r6, sp, #0x0
+_02062382:
+ lsl r5, r1, #0x1
+ ldrh r5, [r0, r5]
+ ldrb r5, [r6, r5]
+ cmp r5, #0x0
+ beq _02062392
+ strb r3, [r2, #0x0]
+ add r2, r2, #0x1
+ add r4, r4, #0x1
+_02062392:
+ add r3, r3, #0x1
+ add r1, r1, #0x2
+ cmp r3, #0x76
+ blo _02062382
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ bne _020623A4
+ bl ErrorHandling
+_020623A4:
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ cmp r0, #0x1
+ bhi _020623B0
+ mov r5, #0x0
+ b _020623DE
+_020623B0:
+ bl FUN_0201B9EC
+ add r5, r0, #0x0
+ lsl r1, r4, #0x10
+ ldr r0, _020623F0 ; =0x0000FFFF
+ lsr r1, r1, #0x10
+ blx _s32_div_f
+ add r1, r0, #0x0
+ add r1, r1, #0x1
+ lsl r1, r1, #0x10
+ add r0, r5, #0x0
+ lsr r1, r1, #0x10
+ blx _s32_div_f
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ cmp r5, r0
+ blo _020623DE
+ bl ErrorHandling
+_020623DE:
+ add r0, sp, #0x10
+ add r0, #0x2
+ ldrb r0, [r0, r5]
+ add sp, #0x88
+ pop {r3-r7, pc}
+ .balign 4
+_020623E8: .word 0x020F7658
+_020623EC: .word 0x020F79EE
+_020623F0: .word 0x0000FFFF
+
+ thumb_func_start FUN_020623F4
+FUN_020623F4: ; 0x020623F4
+ push {r4-r6, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0xc]
+ add r5, r1, #0x0
+ bl FUN_02024ECC
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0206234C
+ add r4, r0, #0x0
+ lsl r0, r4, #0x1
+ add r0, r0, #0x1
+ lsl r1, r0, #0x1
+ ldr r0, _0206245C ; =0x020F79EE
+ ldrh r0, [r0, r1]
+ bl FUN_02034824
+ add r2, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_0200AFF4
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ bl FUN_02025238
+ cmp r0, #0x5
+ bhi _02062456
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0206243A: ; jump table (using 16-bit offset)
+ .short _02062456 - _0206243A - 2; case 0
+ .short _02062456 - _0206243A - 2; case 1
+ .short _02062452 - _0206243A - 2; case 2
+ .short _0206244E - _0206243A - 2; case 3
+ .short _0206244A - _0206243A - 2; case 4
+ .short _02062446 - _0206243A - 2; case 5
+_02062446:
+ mov r0, #0x23
+ pop {r4-r6, pc}
+_0206244A:
+ mov r0, #0x24
+ pop {r4-r6, pc}
+_0206244E:
+ mov r0, #0x25
+ pop {r4-r6, pc}
+_02062452:
+ mov r0, #0x26
+ pop {r4-r6, pc}
+_02062456:
+ mov r0, #0x27
+ pop {r4-r6, pc}
+ nop
+_0206245C: .word 0x020F79EE
+
+ thumb_func_start FUN_02062460
+FUN_02062460: ; 0x02062460
+ push {r3, lr}
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ mov r1, #0x2
+ mov r2, #0x9
+ bl FUN_0205F2E4
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02062474
+FUN_02062474: ; 0x02062474
+ push {r3-r6, lr}
+ sub sp, #0xc
+ mov r0, #0x4
+ add r6, r1, #0x0
+ str r0, [sp, #0x0]
+ add r0, sp, #0x8
+ mov r1, #0x7e
+ mov r2, #0x2
+ mov r3, #0x0
+ bl FUN_02006548
+ ldr r0, [sp, #0x8]
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ bne _02062496
+ bl ErrorHandling
+_02062496:
+ cmp r4, #0x1
+ bhi _0206249E
+ mov r5, #0x0
+ b _020624C6
+_0206249E:
+ bl FUN_0201B9EC
+ add r5, r0, #0x0
+ ldr r0, _02062504 ; =0x0000FFFF
+ add r1, r4, #0x0
+ blx _s32_div_f
+ add r1, r0, #0x0
+ add r1, r1, #0x1
+ lsl r1, r1, #0x10
+ add r0, r5, #0x0
+ lsr r1, r1, #0x10
+ blx _s32_div_f
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ cmp r5, r4
+ blo _020624C6
+ bl ErrorHandling
+_020624C6:
+ lsl r4, r5, #0x2
+ add r0, sp, #0x4
+ mov r2, #0x2
+ add r0, #0x2
+ mov r1, #0x7e
+ add r3, r4, #0x4
+ str r2, [sp, #0x0]
+ bl FUN_02006548
+ mov r2, #0x2
+ add r0, sp, #0x4
+ mov r1, #0x7e
+ add r3, r4, #0x6
+ str r2, [sp, #0x0]
+ bl FUN_02006548
+ add r2, sp, #0x4
+ ldrh r2, [r2, #0x2]
+ add r0, r6, #0x0
+ mov r1, #0x0
+ bl FUN_02060EA0
+ add r2, sp, #0x4
+ ldrh r2, [r2, #0x0]
+ add r0, r6, #0x0
+ mov r1, #0x1
+ bl FUN_0200AE38
+ mov r0, #0x2a
+ add sp, #0xc
+ pop {r3-r6, pc}
+ .balign 4
+_02062504: .word 0x0000FFFF
+
+ thumb_func_start FUN_02062508
+FUN_02062508: ; 0x02062508
+ mov r0, #0x1
+ bx lr
+
+ thumb_func_start FUN_0206250C
+FUN_0206250C: ; 0x0206250C
+ push {r4-r6, lr}
+ mov r4, #0x0
+ add r6, r0, #0x0
+ add r5, r4, #0x0
+_02062514:
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ bl FUN_02027098
+ cmp r0, #0x1
+ bne _02062522
+ add r5, r5, #0x1
+_02062522:
+ add r4, r4, #0x1
+ cmp r4, #0xb
+ blt _02062514
+ add r0, r5, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0206252C
+FUN_0206252C: ; 0x0206252C
+ push {r4-r7, lr}
+ sub sp, #0xc
+ ldr r0, [r0, #0xc]
+ add r7, r1, #0x0
+ bl FUN_02027E24
+ add r6, r0, #0x0
+ bl FUN_0206250C
+ add r4, r0, #0x0
+ cmp r4, #0x1
+ ble _02062552
+ bl FUN_0201BA60
+ add r1, r4, #0x0
+ blx _u32_div_f
+ add r5, r1, #0x0
+ b _02062554
+_02062552:
+ mov r5, #0x0
+_02062554:
+ mov r4, #0x0
+_02062556:
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ bl FUN_02027098
+ cmp r0, #0x1
+ bne _0206256C
+ cmp r5, #0x0
+ bne _0206256A
+ str r4, [sp, #0x8]
+ b _02062572
+_0206256A:
+ sub r5, r5, #0x1
+_0206256C:
+ add r4, r4, #0x1
+ cmp r4, #0xb
+ blt _02062556
+_02062572:
+ cmp r4, #0xb
+ blt _0206257A
+ bl ErrorHandling
+_0206257A:
+ ldr r1, [sp, #0x8]
+ add r0, r6, #0x0
+ bl FUN_02027008
+ add r5, r0, #0x0
+ mov r0, #0x8
+ mov r1, #0x4
+ bl FUN_020219F4
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0202763C
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02027608
+ add r0, r5, #0x0
+ bl FUN_020276A8
+ mov r1, #0x1
+ str r1, [sp, #0x0]
+ str r0, [sp, #0x4]
+ add r0, r7, #0x0
+ mov r1, #0x0
+ add r2, r4, #0x0
+ add r3, r6, #0x0
+ bl FUN_0200ABB4
+ add r0, r4, #0x0
+ bl FUN_02021A20
+ add r0, r5, #0x0
+ bl FUN_0202769C
+ add r2, r0, #0x0
+ add r0, r7, #0x0
+ mov r1, #0x1
+ bl FUN_0200B518
+ mov r0, #0x32
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020625D4
+FUN_020625D4: ; 0x020625D4
+ push {r3, lr}
+ ldr r0, [r0, #0xc]
+ bl FUN_02027E24
+ bl FUN_0206250C
+ cmp r0, #0x0
+ beq _020625E8
+ mov r0, #0x1
+ pop {r3, pc}
+_020625E8:
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_020625EC
+FUN_020625EC: ; 0x020625EC
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ add r5, r1, #0x0
+ str r2, [sp, #0x0]
+ mov r0, #0x3
+ mov r1, #0x50
+ lsl r2, r0, #0xd
+ ldr r6, [r5, #0xc]
+ bl FUN_0201681C
+ mov r1, #0x2d
+ mov r0, #0x50
+ lsl r1, r1, #0x4
+ bl FUN_02016998
+ mov r2, #0x2d
+ mov r1, #0x0
+ lsl r2, r2, #0x4
+ add r4, r0, #0x0
+ blx MI_CpuFill8
+ mov r0, #0x50
+ str r0, [r4, #0x0]
+ ldr r0, [sp, #0x0]
+ mov r1, #0x3
+ blx _s32_div_f
+ strb r1, [r4, #0x16]
+ ldr r0, [sp, #0x0]
+ mov r1, #0x3
+ blx _s32_div_f
+ strb r0, [r4, #0x17]
+ ldrb r0, [r4, #0x16]
+ bl FUN_0202B870
+ strb r0, [r4, #0x18]
+ ldrb r0, [r4, #0x16]
+ bl FUN_0202B87C
+ strb r0, [r4, #0x19]
+ add r0, r4, #0x0
+ add r0, #0xcc
+ str r5, [r0, #0x0]
+ add r0, r4, #0x0
+ ldr r1, [r5, #0x8]
+ add r0, #0xd0
+ str r1, [r0, #0x0]
+ add r0, r6, #0x0
+ bl FUN_0202B8E4
+ mov r1, #0x2a
+ lsl r1, r1, #0x4
+ str r0, [r4, r1]
+ add r0, r6, #0x0
+ bl LoadPlayerDataAddress
+ bl FUN_02024FF4
+ strh r0, [r4, #0x1a]
+ add r0, r6, #0x0
+ bl LoadPlayerDataAddress
+ bl FUN_02025084
+ strh r0, [r4, #0x1c]
+ str r4, [r7, #0x8]
+ mov r0, #0x1
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02062678
+FUN_02062678: ; 0x02062678
+ push {r3-r7, lr}
+ sub sp, #0x8
+ ldr r4, [r0, #0x8]
+ mov r0, #0x0
+ str r0, [sp, #0x4]
+ ldrb r0, [r4, #0x18]
+ cmp r0, #0x0
+ ble _020626FE
+ ldr r0, [sp, #0x4]
+ str r0, [sp, #0x0]
+_0206268C:
+ mov r0, #0xb
+ lsl r0, r0, #0x6
+ ldr r2, [r4, r0]
+ ldr r0, [sp, #0x0]
+ mov r6, #0x0
+ add r1, r2, r0
+ ldr r0, [r2, r0]
+ add r7, r6, #0x0
+ cmp r0, #0x0
+ ble _020626EC
+ add r5, r6, #0x0
+_020626A2:
+ add r0, r1, #0x4
+ add r1, r0, r5
+ ldrb r0, [r1, #0x6]
+ mov r12, r0
+ cmp r0, #0xff
+ beq _020626D6
+ ldrh r0, [r1, #0x4]
+ cmp r0, #0x0
+ bne _020626D6
+ ldrb r2, [r4, #0x17]
+ ldrb r3, [r4, #0x19]
+ mov r1, #0xd
+ mul r1, r2
+ add r2, r3, r1
+ ldr r1, [sp, #0x4]
+ mov r0, #0x2a
+ add r1, r1, r2
+ mov r2, r12
+ lsl r0, r0, #0x4
+ sub r2, r2, r6
+ lsl r2, r2, #0x18
+ ldr r0, [r4, r0]
+ lsr r2, r2, #0x18
+ bl FUN_0202B8F0
+ add r6, r6, #0x1
+_020626D6:
+ mov r0, #0xb
+ lsl r0, r0, #0x6
+ ldr r0, [r4, r0]
+ ldr r1, [sp, #0x0]
+ ldr r2, [sp, #0x0]
+ add r1, r1, r0
+ ldr r0, [r2, r0]
+ add r7, r7, #0x1
+ add r5, #0x8
+ cmp r7, r0
+ blt _020626A2
+_020626EC:
+ ldr r0, [sp, #0x0]
+ ldrb r1, [r4, #0x18]
+ add r0, #0x3c
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x4]
+ add r0, r0, #0x1
+ str r0, [sp, #0x4]
+ cmp r0, r1
+ blt _0206268C
+_020626FE:
+ add r0, r4, #0x0
+ ldr r5, [r4, #0x0]
+ bl FUN_02016A18
+ mov r2, #0x2d
+ add r0, r4, #0x0
+ mov r1, #0x0
+ lsl r2, r2, #0x4
+ blx MI_CpuFill8
+ add r0, r5, #0x0
+ bl FUN_020168D0
+ mov r0, #0xc
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02062720
+FUN_02062720: ; 0x02062720
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02062A70
+ add r0, r4, #0x0
+ bl FUN_02062C80
+ add r0, r4, #0x0
+ bl FUN_02062DB0
+ add r0, r4, #0x0
+ bl FUN_02062F3C
+ mov r0, #0x2
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02062740
+FUN_02062740: ; 0x02062740
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02062FFC
+ add r0, r4, #0x0
+ bl FUN_02062EC4
+ add r0, r4, #0x0
+ bl FUN_02062D38
+ add r0, r4, #0x0
+ bl FUN_02062C4C
+ mov r0, #0xb
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02062760
+FUN_02062760: ; 0x02062760
+ push {r3, lr}
+ ldrh r1, [r0, #0x22]
+ ldrh r2, [r0, #0x24]
+ bl FUN_02063028
+ mov r0, #0x3
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02062770
+FUN_02062770: ; 0x02062770
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, #0xc0
+ ldr r0, [r0, #0x0]
+ bl FUN_02001204
+ ldr r1, _020627C8 ; =0x021C48B8
+ ldr r3, [r1, #0x48]
+ mov r1, #0x2
+ tst r1, r3
+ beq _02062790
+ add r0, r4, #0x0
+ bl FUN_02063178
+ mov r0, #0xa
+ pop {r4, pc}
+_02062790:
+ mov r2, #0x1
+ add r1, r3, #0x0
+ tst r1, r2
+ bne _0206279C
+ mov r0, #0x3
+ pop {r4, pc}
+_0206279C:
+ sub r1, r2, #0x3
+ cmp r0, r1
+ beq _020627AE
+ sub r1, r2, #0x2
+ cmp r0, r1
+ beq _020627AE
+ ldr r1, _020627CC ; =0x0000FFFF
+ cmp r0, r1
+ bne _020627B8
+_020627AE:
+ add r0, r4, #0x0
+ bl FUN_02063178
+ mov r0, #0xa
+ pop {r4, pc}
+_020627B8:
+ strb r0, [r4, #0x1f]
+ mov r0, #0x0
+ strh r0, [r4, #0x28]
+ add r0, r4, #0x0
+ bl FUN_02063178
+ mov r0, #0x4
+ pop {r4, pc}
+ .balign 4
+_020627C8: .word 0x021C48B8
+_020627CC: .word 0x0000FFFF
+
+ thumb_func_start FUN_020627D0
+FUN_020627D0: ; 0x020627D0
+ push {r3, lr}
+ ldrh r1, [r0, #0x28]
+ bl FUN_02063430
+ mov r0, #0x5
+ pop {r3, pc}
+
+ thumb_func_start FUN_020627DC
+FUN_020627DC: ; 0x020627DC
+ push {r3, lr}
+ ldr r1, _02062804 ; =0x021C48B8
+ ldr r2, [r1, #0x48]
+ mov r1, #0x3
+ tst r1, r2
+ beq _020627F0
+ bl FUN_020634DC
+ mov r0, #0x2
+ pop {r3, pc}
+_020627F0:
+ mov r1, #0x4
+ tst r1, r2
+ beq _020627FE
+ bl FUN_02063238
+ mov r0, #0x6
+ pop {r3, pc}
+_020627FE:
+ mov r0, #0x5
+ pop {r3, pc}
+ nop
+_02062804: .word 0x021C48B8
+
+ thumb_func_start FUN_02062808
+FUN_02062808: ; 0x02062808
+ push {r4, lr}
+ ldr r1, _020628B8 ; =0x021C48B8
+ mov r2, #0x2
+ ldr r1, [r1, #0x48]
+ add r4, r0, #0x0
+ tst r2, r1
+ beq _0206281E
+ bl FUN_02063264
+ mov r0, #0x5
+ pop {r4, pc}
+_0206281E:
+ mov r0, #0x1
+ tst r0, r1
+ beq _0206285C
+ mov r0, #0x0
+ str r0, [r4, #0xc]
+ mov r0, #0xb
+ lsl r0, r0, #0x6
+ ldrb r2, [r4, #0x1f]
+ mov r1, #0x3c
+ ldr r3, [r4, r0]
+ mul r1, r2
+ add r1, r3, r1
+ add r3, r1, #0x4
+ ldrh r1, [r4, #0x28]
+ add r2, r4, r1
+ add r1, r0, #0x0
+ add r1, #0x8
+ ldrb r1, [r2, r1]
+ lsl r1, r1, #0x3
+ add r2, r3, r1
+ add r1, r0, #0x4
+ str r2, [r4, r1]
+ add r0, r0, #0x4
+ ldr r0, [r4, r0]
+ ldrb r0, [r0, #0x6]
+ cmp r0, #0xff
+ bne _02062858
+ mov r0, #0x8
+ pop {r4, pc}
+_02062858:
+ mov r0, #0x7
+ pop {r4, pc}
+_0206285C:
+ mov r0, #0x40
+ tst r0, r1
+ beq _02062882
+ ldrh r0, [r4, #0x28]
+ cmp r0, #0x0
+ beq _02062882
+ sub r0, r0, #0x1
+ strh r0, [r4, #0x28]
+ ldrh r2, [r4, #0x28]
+ mov r0, #0xa6
+ lsl r0, r0, #0x2
+ lsl r2, r2, #0x4
+ add r2, #0x10
+ lsl r2, r2, #0x10
+ ldr r0, [r4, r0]
+ mov r1, #0x7e
+ asr r2, r2, #0x10
+ bl FUN_0200C714
+_02062882:
+ ldr r0, _020628B8 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x80
+ tst r0, r1
+ beq _020628B4
+ add r0, r4, #0x0
+ add r0, #0x21
+ ldrb r0, [r0, #0x0]
+ ldrh r1, [r4, #0x28]
+ sub r0, r0, #0x1
+ cmp r1, r0
+ bge _020628B4
+ add r0, r1, #0x1
+ strh r0, [r4, #0x28]
+ ldrh r2, [r4, #0x28]
+ mov r0, #0xa6
+ lsl r0, r0, #0x2
+ lsl r2, r2, #0x4
+ add r2, #0x10
+ lsl r2, r2, #0x10
+ ldr r0, [r4, r0]
+ mov r1, #0x7e
+ asr r2, r2, #0x10
+ bl FUN_0200C714
+_020628B4:
+ mov r0, #0x6
+ pop {r4, pc}
+ .balign 4
+_020628B8: .word 0x021C48B8
+
+ thumb_func_start FUN_020628BC
+FUN_020628BC: ; 0x020628BC
+ push {r3-r4, lr}
+ sub sp, #0x4
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ ldr r1, _020628E0 ; =0x020F7BC8
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ add r0, #0xd0
+ ldr r0, [r0, #0x0]
+ ldr r2, _020628E4 ; =0x000003D9
+ mov r3, #0xb
+ bl FUN_02002198
+ add r4, #0xc8
+ str r0, [r4, #0x0]
+ add sp, #0x4
+ pop {r3-r4, pc}
+ nop
+_020628E0: .word 0x020F7BC8
+_020628E4: .word 0x000003D9
+
+ thumb_func_start FUN_020628E8
+FUN_020628E8: ; 0x020628E8
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0x0
+ ldr r1, [r4, #0xc]
+ cmp r1, #0x3
+ bgt _0206290C
+ cmp r1, #0x0
+ blt _020629CE
+ add r2, r1, r1
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_02062904: ; jump table (using 16-bit offset)
+ .short _02062912 - _02062904 - 2; case 0
+ .short _0206294E - _02062904 - 2; case 1
+ .short _02062966 - _02062904 - 2; case 2
+ .short _0206298C - _02062904 - 2; case 3
+_0206290C:
+ cmp r1, #0xff
+ beq _020629B2
+ b _020629CE
+_02062912:
+ add r0, #0xe4
+ mov r1, #0xff
+ bl FUN_02019620
+ mov r3, #0x0
+ str r3, [sp, #0x0]
+ ldrh r0, [r4, #0x1a]
+ add r2, r4, #0x0
+ add r2, #0x98
+ str r0, [sp, #0x4]
+ ldr r0, _020629D4 ; =0x0001020F
+ mov r1, #0x1
+ str r0, [sp, #0x8]
+ str r3, [sp, #0xc]
+ add r0, r4, #0x0
+ ldr r2, [r2, #0x0]
+ add r0, #0xe4
+ bl FUN_0201BDE0
+ strb r0, [r4, #0x1e]
+ mov r0, #0xa6
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x2
+ bl FUN_0200C66C
+ ldr r0, [r4, #0xc]
+ add r0, r0, #0x1
+ str r0, [r4, #0xc]
+ b _020629CE
+_0206294E:
+ ldrb r0, [r4, #0x1e]
+ bl FUN_0201BD70
+ cmp r0, #0x0
+ bne _020629CE
+ add r0, r4, #0x0
+ bl FUN_020628BC
+ ldr r0, [r4, #0xc]
+ add r0, r0, #0x1
+ str r0, [r4, #0xc]
+ b _020629CE
+_02062966:
+ add r0, #0xc8
+ ldr r0, [r0, #0x0]
+ ldr r1, [r4, #0x0]
+ bl FUN_020021AC
+ cmp r0, #0x0
+ beq _0206297E
+ mov r1, #0x1
+ mvn r1, r1
+ cmp r0, r1
+ beq _02062986
+ b _020629CE
+_0206297E:
+ ldr r0, [r4, #0xc]
+ add r0, r0, #0x1
+ str r0, [r4, #0xc]
+ b _020629CE
+_02062986:
+ mov r0, #0xff
+ str r0, [r4, #0xc]
+ b _020629CE
+_0206298C:
+ mov r1, #0xb1
+ lsl r1, r1, #0x2
+ ldr r1, [r4, r1]
+ mov r2, #0x0
+ strh r2, [r1, #0x4]
+ mov r1, #0x1
+ bl FUN_020632A4
+ mov r0, #0xa6
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x1
+ bl FUN_0200C66C
+ mov r0, #0x0
+ str r0, [r4, #0xc]
+ add sp, #0x10
+ mov r0, #0x6
+ pop {r4, pc}
+_020629B2:
+ add r0, r4, #0x0
+ bl FUN_02063208
+ mov r0, #0xa6
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x1
+ bl FUN_0200C66C
+ mov r0, #0x0
+ str r0, [r4, #0xc]
+ add sp, #0x10
+ mov r0, #0x6
+ pop {r4, pc}
+_020629CE:
+ mov r0, #0x7
+ add sp, #0x10
+ pop {r4, pc}
+ .balign 4
+_020629D4: .word 0x0001020F
+
+ thumb_func_start FUN_020629D8
+FUN_020629D8: ; 0x020629D8
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0x0
+ ldr r1, [r4, #0xc]
+ cmp r1, #0x0
+ beq _020629EE
+ cmp r1, #0x1
+ beq _02062A2A
+ cmp r1, #0x2
+ beq _02062A3C
+ b _02062A60
+_020629EE:
+ add r0, #0xe4
+ mov r1, #0xff
+ bl FUN_02019620
+ mov r3, #0x0
+ str r3, [sp, #0x0]
+ ldrh r0, [r4, #0x1a]
+ add r2, r4, #0x0
+ add r2, #0x9c
+ str r0, [sp, #0x4]
+ ldr r0, _02062A68 ; =0x0001020F
+ mov r1, #0x1
+ str r0, [sp, #0x8]
+ str r3, [sp, #0xc]
+ add r0, r4, #0x0
+ ldr r2, [r2, #0x0]
+ add r0, #0xe4
+ bl FUN_0201BDE0
+ strb r0, [r4, #0x1e]
+ mov r0, #0xa6
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x2
+ bl FUN_0200C66C
+ ldr r0, [r4, #0xc]
+ add r0, r0, #0x1
+ str r0, [r4, #0xc]
+ b _02062A60
+_02062A2A:
+ ldrb r0, [r4, #0x1e]
+ bl FUN_0201BD70
+ cmp r0, #0x0
+ bne _02062A60
+ ldr r0, [r4, #0xc]
+ add r0, r0, #0x1
+ str r0, [r4, #0xc]
+ b _02062A60
+_02062A3C:
+ ldr r1, _02062A6C ; =0x021C48B8
+ ldr r2, [r1, #0x48]
+ mov r1, #0x3
+ tst r1, r2
+ beq _02062A60
+ bl FUN_02063208
+ mov r0, #0xa6
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x1
+ bl FUN_0200C66C
+ mov r0, #0x0
+ str r0, [r4, #0xc]
+ add sp, #0x10
+ mov r0, #0x6
+ pop {r4, pc}
+_02062A60:
+ mov r0, #0x8
+ add sp, #0x10
+ pop {r4, pc}
+ nop
+_02062A68: .word 0x0001020F
+_02062A6C: .word 0x021C48B8
+
+ thumb_func_start FUN_02062A70
+FUN_02062A70: ; 0x02062A70
+ push {r4-r7, lr}
+ sub sp, #0x14
+ add r4, r0, #0x0
+ ldrb r2, [r4, #0x18]
+ add r5, r1, #0x0
+ mov r1, #0x3c
+ ldr r0, [r4, #0x0]
+ mul r1, r2
+ bl FUN_02016998
+ mov r1, #0xb
+ lsl r1, r1, #0x6
+ str r0, [r4, r1]
+ ldr r0, [r4, r1]
+ ldrb r3, [r4, #0x18]
+ mov r2, #0x3c
+ mov r1, #0x0
+ mul r2, r3
+ blx MI_CpuFill8
+ ldrb r1, [r4, #0x16]
+ ldr r2, [r4, #0x0]
+ add r0, r5, #0x0
+ bl FUN_0202BD6C
+ mov r1, #0xa9
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ mov r0, #0x0
+ str r0, [sp, #0x10]
+ ldrb r0, [r4, #0x18]
+ cmp r0, #0x0
+ bgt _02062AB4
+ b _02062C48
+_02062AB4:
+ ldr r0, [sp, #0x10]
+ str r4, [sp, #0x8]
+ str r0, [sp, #0x4]
+ add r5, r0, #0x0
+_02062ABC:
+ ldrb r2, [r4, #0x17]
+ ldrb r3, [r4, #0x19]
+ mov r1, #0xd
+ mul r1, r2
+ mov r0, #0x2a
+ add r2, r3, r1
+ ldr r1, [sp, #0x10]
+ lsl r0, r0, #0x4
+ add r1, r1, r2
+ ldr r0, [r4, r0]
+ ldr r2, [r4, #0x0]
+ bl FUN_0202BDF0
+ mov r1, #0xaa
+ mov r3, #0x0
+ ldr r2, [sp, #0x8]
+ lsl r1, r1, #0x2
+ str r0, [r2, r1]
+ add r0, r2, #0x0
+ ldr r0, [r0, r1]
+ mov r12, r3
+ str r0, [sp, #0xc]
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _02062B22
+ sub r0, r1, #0x4
+ ldr r0, [r4, r0]
+ add r3, r1, #0x0
+ add r2, r0, #0x4
+ ldr r0, [sp, #0x4]
+ add r3, #0x18
+ add r2, r2, r0
+ add r0, r1, #0x0
+ add r0, #0x18
+ ldr r0, [r4, r0]
+ add r0, r0, r5
+ str r2, [r0, #0x4]
+ add r0, r1, #0x0
+ add r0, #0x18
+ ldr r0, [r4, r0]
+ mov r2, #0x1
+ add r0, r0, r5
+ strh r2, [r0, #0x8]
+ ldr r3, [r4, r3]
+ mov r0, #0xff
+ add r3, r3, r5
+ add r1, #0x18
+ strb r0, [r3, #0xa]
+ ldr r0, [r4, r1]
+ str r2, [r0, r5]
+ b _02062C2C
+_02062B22:
+ add r2, r3, #0x0
+ cmp r0, #0x0
+ ble _02062BE4
+ ldr r0, [sp, #0xc]
+ str r0, [sp, #0x0]
+ add r7, r0, #0x4
+_02062B2E:
+ mov r0, r12
+ cmp r0, #0x0
+ bne _02062BA8
+ mov r0, #0xa9
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ ldr r1, [sp, #0x4]
+ add r1, r1, r0
+ ldr r6, [r1, #0x8]
+ ldr r1, [sp, #0x0]
+ ldr r1, [r1, #0x8]
+ cmp r6, r1
+ blo _02062BA8
+ add r6, r0, #0x4
+ ldr r0, [sp, #0x4]
+ lsl r1, r3, #0x3
+ add r0, r6, r0
+ mov r6, #0xb
+ lsl r6, r6, #0x6
+ ldr r6, [r4, r6]
+ add r3, r3, #0x1
+ add r6, r5, r6
+ add r6, r1, r6
+ str r0, [r6, #0x4]
+ mov r0, #0xb
+ lsl r0, r0, #0x6
+ ldr r0, [r4, r0]
+ add r0, r5, r0
+ add r6, r1, r0
+ mov r0, #0x1
+ strh r0, [r6, #0x8]
+ mov r0, #0xb
+ lsl r0, r0, #0x6
+ ldr r0, [r4, r0]
+ lsl r6, r3, #0x3
+ add r0, r5, r0
+ add r1, r1, r0
+ mov r0, #0xff
+ strb r0, [r1, #0xa]
+ mov r0, #0xb
+ lsl r0, r0, #0x6
+ ldr r0, [r4, r0]
+ add r0, r5, r0
+ add r0, r6, r0
+ str r7, [r0, #0x4]
+ mov r0, #0xb
+ lsl r0, r0, #0x6
+ ldr r0, [r4, r0]
+ add r0, r5, r0
+ add r1, r6, r0
+ mov r0, #0x1
+ strh r0, [r1, #0x8]
+ mov r0, #0xb
+ lsl r0, r0, #0x6
+ ldr r0, [r4, r0]
+ add r0, r5, r0
+ add r0, r6, r0
+ strb r2, [r0, #0xa]
+ mov r0, #0x1
+ mov r12, r0
+ b _02062BD0
+_02062BA8:
+ mov r0, #0xb
+ lsl r0, r0, #0x6
+ ldr r0, [r4, r0]
+ lsl r6, r3, #0x3
+ add r0, r5, r0
+ add r0, r6, r0
+ str r7, [r0, #0x4]
+ mov r0, #0xb
+ lsl r0, r0, #0x6
+ ldr r0, [r4, r0]
+ add r0, r5, r0
+ add r1, r6, r0
+ mov r0, #0x1
+ strh r0, [r1, #0x8]
+ mov r0, #0xb
+ lsl r0, r0, #0x6
+ ldr r0, [r4, r0]
+ add r0, r5, r0
+ add r0, r6, r0
+ strb r2, [r0, #0xa]
+_02062BD0:
+ ldr r0, [sp, #0x0]
+ add r2, r2, #0x1
+ add r0, #0xc
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0xc]
+ add r3, r3, #0x1
+ ldr r0, [r0, #0x0]
+ add r7, #0xc
+ cmp r2, r0
+ blt _02062B2E
+_02062BE4:
+ mov r0, r12
+ cmp r0, #0x0
+ bne _02062C1E
+ mov r0, #0xa9
+ lsl r0, r0, #0x2
+ ldr r1, [r4, r0]
+ lsl r2, r3, #0x3
+ add r3, r1, #0x4
+ ldr r1, [sp, #0x4]
+ add r1, r3, r1
+ add r3, r0, #0x0
+ add r3, #0x1c
+ ldr r3, [r4, r3]
+ add r3, r3, r5
+ add r3, r2, r3
+ str r1, [r3, #0x4]
+ add r3, r0, #0x0
+ add r3, #0x1c
+ ldr r3, [r4, r3]
+ mov r1, #0x1
+ add r3, r3, r5
+ add r3, r2, r3
+ strh r1, [r3, #0x8]
+ add r0, #0x1c
+ ldr r0, [r4, r0]
+ mov r1, #0xff
+ add r0, r0, r5
+ add r0, r2, r0
+ strb r1, [r0, #0xa]
+_02062C1E:
+ ldr r0, [sp, #0xc]
+ ldr r0, [r0, #0x0]
+ add r1, r0, #0x1
+ mov r0, #0xb
+ lsl r0, r0, #0x6
+ ldr r0, [r4, r0]
+ str r1, [r0, r5]
+_02062C2C:
+ ldr r0, [sp, #0x8]
+ ldrb r1, [r4, #0x18]
+ add r0, r0, #0x4
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x4]
+ add r5, #0x3c
+ add r0, #0xc
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x10]
+ add r0, r0, #0x1
+ str r0, [sp, #0x10]
+ cmp r0, r1
+ bge _02062C48
+ b _02062ABC
+_02062C48:
+ add sp, #0x14
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_02062C4C
+FUN_02062C4C: ; 0x02062C4C
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ ldrb r0, [r6, #0x18]
+ mov r4, #0x0
+ add r0, r0, #0x1
+ cmp r0, #0x0
+ ble _02062C72
+ mov r7, #0xa9
+ add r5, r6, #0x0
+ lsl r7, r7, #0x2
+_02062C60:
+ ldr r0, [r5, r7]
+ bl FUN_0202BE6C
+ ldrb r0, [r6, #0x18]
+ add r4, r4, #0x1
+ add r5, r5, #0x4
+ add r0, r0, #0x1
+ cmp r4, r0
+ blt _02062C60
+_02062C72:
+ mov r0, #0xb
+ lsl r0, r0, #0x6
+ ldr r0, [r6, r0]
+ bl FUN_02016A18
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02062C80
+FUN_02062C80: ; 0x02062C80
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r2, _02062D34 ; =0x000001E1
+ ldr r3, [r5, #0x0]
+ mov r0, #0x0
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ str r0, [r5, #0x2c]
+ ldr r2, [r5, #0x0]
+ mov r0, #0x2
+ mov r1, #0x4c
+ bl FUN_0200AA90
+ str r0, [r5, #0x30]
+ ldr r1, [r5, #0x0]
+ mov r0, #0x4c
+ bl FUN_020219F4
+ str r0, [r5, #0x34]
+ ldr r0, [r5, #0x2c]
+ mov r1, #0xd
+ bl FUN_0200A914
+ str r0, [r5, #0x38]
+ ldr r0, [r5, #0x2c]
+ mov r1, #0x16
+ bl FUN_0200A914
+ str r0, [r5, #0x3c]
+ ldr r0, [r5, #0x2c]
+ mov r1, #0x24
+ bl FUN_0200A914
+ str r0, [r5, #0x40]
+ ldr r0, [r5, #0x2c]
+ mov r1, #0xe
+ bl FUN_0200A914
+ str r0, [r5, #0x44]
+ ldrb r0, [r5, #0x18]
+ mov r4, #0x0
+ cmp r0, #0x0
+ ble _02062CFE
+ add r6, r5, #0x0
+_02062CDA:
+ ldrb r1, [r5, #0x19]
+ ldr r0, [r5, #0x2c]
+ add r1, r1, r4
+ bl FUN_0200A914
+ str r0, [r6, #0x64]
+ ldrb r1, [r5, #0x19]
+ ldr r0, [r5, #0x2c]
+ add r1, #0x17
+ add r1, r1, r4
+ bl FUN_0200A914
+ str r0, [r6, #0x7c]
+ ldrb r0, [r5, #0x18]
+ add r4, r4, #0x1
+ add r6, r6, #0x4
+ cmp r4, r0
+ blt _02062CDA
+_02062CFE:
+ mov r4, #0x0
+ add r6, r5, #0x0
+_02062D02:
+ add r1, r4, #0x0
+ ldr r0, [r5, #0x2c]
+ add r1, #0xf
+ bl FUN_0200A914
+ str r0, [r6, #0x48]
+ add r4, r4, #0x1
+ add r6, r6, #0x4
+ cmp r4, #0x7
+ blt _02062D02
+ mov r4, #0x0
+ add r6, r5, #0x0
+_02062D1A:
+ add r1, r4, #0x0
+ ldr r0, [r5, #0x2c]
+ add r1, #0x25
+ bl FUN_0200A914
+ add r1, r6, #0x0
+ add r1, #0x94
+ add r4, r4, #0x1
+ add r6, r6, #0x4
+ str r0, [r1, #0x0]
+ cmp r4, #0x3
+ blt _02062D1A
+ pop {r4-r6, pc}
+ .balign 4
+_02062D34: .word 0x000001E1
+
+ thumb_func_start FUN_02062D38
+FUN_02062D38: ; 0x02062D38
+ push {r4-r6, lr}
+ add r6, r0, #0x0
+ mov r4, #0x0
+ add r5, r6, #0x0
+_02062D40:
+ add r0, r5, #0x0
+ add r0, #0x94
+ ldr r0, [r0, #0x0]
+ bl FUN_02021A20
+ add r4, r4, #0x1
+ add r5, r5, #0x4
+ cmp r4, #0x3
+ blt _02062D40
+ mov r5, #0x0
+ add r4, r6, #0x0
+_02062D56:
+ ldr r0, [r4, #0x48]
+ bl FUN_02021A20
+ add r5, r5, #0x1
+ add r4, r4, #0x4
+ cmp r5, #0x7
+ blt _02062D56
+ ldrb r0, [r6, #0x18]
+ mov r5, #0x0
+ cmp r0, #0x0
+ ble _02062D84
+ add r4, r6, #0x0
+_02062D6E:
+ ldr r0, [r4, #0x64]
+ bl FUN_02021A20
+ ldr r0, [r4, #0x7c]
+ bl FUN_02021A20
+ ldrb r0, [r6, #0x18]
+ add r5, r5, #0x1
+ add r4, r4, #0x4
+ cmp r5, r0
+ blt _02062D6E
+_02062D84:
+ ldr r0, [r6, #0x44]
+ bl FUN_02021A20
+ ldr r0, [r6, #0x40]
+ bl FUN_02021A20
+ ldr r0, [r6, #0x3c]
+ bl FUN_02021A20
+ ldr r0, [r6, #0x38]
+ bl FUN_02021A20
+ ldr r0, [r6, #0x34]
+ bl FUN_02021A20
+ ldr r0, [r6, #0x30]
+ bl FUN_0200AB18
+ ldr r0, [r6, #0x2c]
+ bl FUN_0200A8B8
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02062DB0
+FUN_02062DB0: ; 0x02062DB0
+ push {r3-r4, lr}
+ sub sp, #0x14
+ add r4, r0, #0x0
+ mov r1, #0xad
+ ldr r3, [r4, #0x0]
+ mov r0, #0x1
+ lsl r1, r1, #0x6
+ mov r2, #0x0
+ bl FUN_02017F18
+ mov r2, #0x0
+ str r2, [sp, #0x0]
+ mov r0, #0x20
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ mov r0, #0x11
+ str r0, [sp, #0xc]
+ add r0, r4, #0x0
+ add r0, #0xd0
+ ldr r0, [r0, #0x0]
+ mov r1, #0x1
+ add r3, r2, #0x0
+ bl FUN_02018540
+ add r0, r4, #0x0
+ add r0, #0xd0
+ ldr r0, [r0, #0x0]
+ mov r1, #0x1
+ bl FUN_0201AC68
+ mov r0, #0x1
+ add r1, r0, #0x0
+ bl FUN_0201797C
+ add r0, r4, #0x0
+ add r0, #0xd0
+ ldr r0, [r0, #0x0]
+ mov r1, #0x0
+ bl FUN_02018884
+ strh r0, [r4, #0x10]
+ add r0, r4, #0x0
+ add r0, #0xd0
+ ldr r0, [r0, #0x0]
+ mov r1, #0x1
+ bl FUN_02018884
+ strh r0, [r4, #0x12]
+ mov r0, #0x0
+ mov r1, #0x2
+ bl FUN_020178BC
+ mov r0, #0x1
+ add r1, r0, #0x0
+ bl FUN_020178BC
+ ldrh r0, [r4, #0x1c]
+ ldr r2, _02062EB8 ; =0x000003E2
+ mov r1, #0x3
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x0]
+ mov r3, #0xa
+ str r0, [sp, #0x4]
+ add r0, r4, #0x0
+ add r0, #0xd0
+ ldr r0, [r0, #0x0]
+ bl FUN_0200CD68
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x0]
+ ldr r2, _02062EBC ; =0x000003D9
+ str r0, [sp, #0x4]
+ add r0, r4, #0x0
+ add r0, #0xd0
+ ldr r0, [r0, #0x0]
+ mov r1, #0x3
+ mov r3, #0xb
+ bl FUN_0200CB00
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x0]
+ ldr r2, _02062EBC ; =0x000003D9
+ str r0, [sp, #0x4]
+ add r0, r4, #0x0
+ add r0, #0xd0
+ ldr r0, [r0, #0x0]
+ mov r1, #0x1
+ mov r3, #0xb
+ bl FUN_0200CB00
+ mov r1, #0x1a
+ ldr r2, [r4, #0x0]
+ mov r0, #0x0
+ lsl r1, r1, #0x4
+ bl FUN_02002ED0
+ mov r1, #0x6
+ ldr r2, [r4, #0x0]
+ mov r0, #0x0
+ lsl r1, r1, #0x6
+ bl FUN_02002EEC
+ mov r0, #0x13
+ str r0, [sp, #0x0]
+ mov r0, #0x1b
+ str r0, [sp, #0x4]
+ mov r0, #0x4
+ str r0, [sp, #0x8]
+ mov r0, #0xc
+ str r0, [sp, #0xc]
+ ldr r0, _02062EC0 ; =0x0000036D
+ add r1, r4, #0x0
+ str r0, [sp, #0x10]
+ add r0, r4, #0x0
+ add r0, #0xd0
+ ldr r0, [r0, #0x0]
+ add r1, #0xe4
+ mov r2, #0x3
+ mov r3, #0x2
+ bl FUN_02019064
+ add r4, #0xe4
+ add r0, r4, #0x0
+ mov r1, #0xff
+ bl FUN_02019620
+ add sp, #0x14
+ pop {r3-r4, pc}
+ .balign 4
+_02062EB8: .word 0x000003E2
+_02062EBC: .word 0x000003D9
+_02062EC0: .word 0x0000036D
+
+ thumb_func_start FUN_02062EC4
+FUN_02062EC4: ; 0x02062EC4
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0x0
+ add r0, #0xe4
+ mov r1, #0x1
+ bl FUN_0200D0E0
+ add r0, r4, #0x0
+ add r0, #0xe4
+ bl FUN_02019570
+ add r0, r4, #0x0
+ add r0, #0xe4
+ bl FUN_02019178
+ mov r1, #0xad
+ ldr r3, [r4, #0x0]
+ mov r0, #0x1
+ lsl r1, r1, #0x6
+ mov r2, #0x0
+ bl FUN_02017F18
+ mov r2, #0x0
+ str r2, [sp, #0x0]
+ mov r0, #0x20
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ mov r0, #0x11
+ str r0, [sp, #0xc]
+ add r0, r4, #0x0
+ add r0, #0xd0
+ ldr r0, [r0, #0x0]
+ mov r1, #0x1
+ add r3, r2, #0x0
+ bl FUN_02018540
+ add r0, r4, #0x0
+ add r0, #0xd0
+ ldr r0, [r0, #0x0]
+ mov r1, #0x1
+ bl FUN_0201AC68
+ mov r0, #0x1
+ mov r1, #0x0
+ bl FUN_0201797C
+ ldrh r1, [r4, #0x10]
+ mov r0, #0x0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl FUN_020178BC
+ ldrh r1, [r4, #0x12]
+ mov r0, #0x1
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl FUN_020178BC
+ add sp, #0x10
+ pop {r4, pc}
+
+ thumb_func_start FUN_02062F3C
+FUN_02062F3C: ; 0x02062F3C
+ push {r4-r7, lr}
+ sub sp, #0x24
+ ldr r4, _02062FF0 ; =0x020F7BDC
+ add r3, sp, #0xc
+ add r6, r0, #0x0
+ add r2, r3, #0x0
+ ldmia r4!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldmia r4!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldmia r4!, {r0-r1}
+ stmia r3!, {r0-r1}
+ mov r0, #0x4d
+ lsl r0, r0, #0x2
+ add r1, r2, #0x0
+ ldr r3, [r6, #0x0]
+ add r0, r6, r0
+ mov r2, #0x2
+ bl FUN_021D959C
+ mov r0, #0x3
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ ldr r0, _02062FF4 ; =0x000034D8
+ mov r2, #0x0
+ str r0, [sp, #0x8]
+ mov r0, #0x4d
+ lsl r0, r0, #0x2
+ add r0, r6, r0
+ mov r1, #0x82
+ add r3, r2, #0x0
+ bl FUN_021D967C
+ ldr r0, _02062FF4 ; =0x000034D8
+ mov r1, #0x82
+ str r0, [sp, #0x0]
+ mov r0, #0x4d
+ lsl r0, r0, #0x2
+ add r0, r6, r0
+ mov r2, #0x2
+ mov r3, #0x0
+ bl FUN_021D96F4
+ ldr r0, _02062FF4 ; =0x000034D8
+ mov r1, #0x82
+ str r0, [sp, #0x0]
+ mov r0, #0x4d
+ lsl r0, r0, #0x2
+ add r0, r6, r0
+ mov r2, #0x3
+ mov r3, #0x0
+ bl FUN_021D9708
+ mov r2, #0x1
+ ldr r0, _02062FF4 ; =0x000034D8
+ str r2, [sp, #0x0]
+ str r0, [sp, #0x4]
+ mov r0, #0x4d
+ lsl r0, r0, #0x2
+ add r0, r6, r0
+ mov r1, #0x82
+ mov r3, #0x0
+ bl FUN_021D971C
+ ldr r4, _02062FF8 ; =0x020F7C7C
+ mov r7, #0x0
+ add r5, r6, #0x0
+_02062FC4:
+ mov r0, #0x4d
+ lsl r0, r0, #0x2
+ add r0, r6, r0
+ add r1, r4, #0x0
+ bl FUN_021D9820
+ mov r1, #0xa6
+ lsl r1, r1, #0x2
+ str r0, [r5, r1]
+ add r7, r7, #0x1
+ add r4, #0x34
+ add r5, r5, #0x4
+ cmp r7, #0x2
+ blt _02062FC4
+ add r0, r1, #0x4
+ ldr r0, [r6, r0]
+ mov r1, #0x0
+ bl FUN_0200C644
+ add sp, #0x24
+ pop {r4-r7, pc}
+ nop
+_02062FF0: .word 0x020F7BDC
+_02062FF4: .word 0x000034D8
+_02062FF8: .word 0x020F7C7C
+
+ thumb_func_start FUN_02062FFC
+FUN_02062FFC: ; 0x02062FFC
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ mov r6, #0xa6
+ mov r4, #0x0
+ add r5, r7, #0x0
+ lsl r6, r6, #0x2
+_02063008:
+ ldr r0, [r5, r6]
+ cmp r0, #0x0
+ beq _02063012
+ bl FUN_0200C3DC
+_02063012:
+ add r4, r4, #0x1
+ add r5, r5, #0x4
+ cmp r4, #0x2
+ blt _02063008
+ mov r0, #0x4d
+ lsl r0, r0, #0x2
+ add r0, r7, r0
+ bl FUN_021D99F8
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02063028
+FUN_02063028: ; 0x02063028
+ push {r4-r7, lr}
+ sub sp, #0x1c
+ str r1, [sp, #0x14]
+ add r5, r0, #0x0
+ str r2, [sp, #0x18]
+ ldrb r0, [r5, #0x18]
+ ldr r1, [r5, #0x0]
+ add r7, r0, #0x1
+ add r0, r7, #0x0
+ bl FUN_02012838
+ add r1, r5, #0x0
+ add r1, #0xc4
+ str r0, [r1, #0x0]
+ mov r2, #0x1
+ add r1, r5, #0x0
+ str r2, [sp, #0x0]
+ mov r0, #0x18
+ str r0, [sp, #0x4]
+ lsl r0, r7, #0x19
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ add r0, r5, #0x0
+ str r2, [sp, #0x10]
+ add r0, #0xd0
+ ldr r0, [r0, #0x0]
+ add r1, #0xd4
+ mov r3, #0x4
+ bl FUN_02019064
+ add r0, r5, #0x0
+ add r0, #0xd4
+ mov r1, #0xff
+ bl FUN_02019620
+ ldrb r0, [r5, #0x18]
+ mov r6, #0x0
+ cmp r0, #0x0
+ ble _02063094
+ add r4, r5, #0x0
+_0206307C:
+ add r0, r5, #0x0
+ add r0, #0xc4
+ ldr r0, [r0, #0x0]
+ ldr r1, [r4, #0x64]
+ add r2, r6, #0x0
+ bl FUN_020128A0
+ ldrb r0, [r5, #0x18]
+ add r6, r6, #0x1
+ add r4, r4, #0x4
+ cmp r6, r0
+ blt _0206307C
+_02063094:
+ add r0, r5, #0x0
+ add r0, #0xc4
+ ldr r0, [r0, #0x0]
+ ldr r1, [r5, #0x38]
+ ldr r2, _02063160 ; =0x0000FFFF
+ bl FUN_020128A0
+ add r1, r5, #0x0
+ ldr r0, _02063164 ; =0x020F7C2C
+ add r1, #0xa0
+ mov r2, #0x20
+ blx MI_CpuCopy8
+ add r1, r5, #0x0
+ add r0, r5, #0x0
+ add r1, #0xd4
+ add r0, #0xac
+ str r1, [r0, #0x0]
+ add r0, r5, #0x0
+ add r0, #0xc4
+ ldr r1, [r0, #0x0]
+ add r0, r5, #0x0
+ add r0, #0xa0
+ str r1, [r0, #0x0]
+ add r0, r5, #0x0
+ add r0, #0xbc
+ str r5, [r0, #0x0]
+ add r0, r5, #0x0
+ add r0, #0xb0
+ strh r7, [r0, #0x0]
+ add r0, r5, #0x0
+ add r0, #0xb7
+ ldrb r1, [r0, #0x0]
+ mov r0, #0xf
+ bic r1, r0
+ add r0, r5, #0x0
+ add r0, #0xb7
+ strb r1, [r0, #0x0]
+ add r0, r5, #0x0
+ ldr r1, _02063168 ; =FUN_020631C8
+ add r0, #0xa4
+ str r1, [r0, #0x0]
+ add r0, r5, #0x0
+ mov r1, #0x0
+ add r0, #0xa8
+ str r1, [r0, #0x0]
+ ldr r3, [r5, #0x0]
+ add r0, r5, #0x0
+ lsl r3, r3, #0x18
+ ldr r1, [sp, #0x14]
+ ldr r2, [sp, #0x18]
+ add r0, #0xa0
+ lsr r3, r3, #0x18
+ bl FUN_020010A8
+ add r1, r5, #0x0
+ add r1, #0xc0
+ str r0, [r1, #0x0]
+ add r0, r5, #0x0
+ ldr r2, _0206316C ; =0x000003D9
+ add r0, #0xd4
+ mov r1, #0x0
+ mov r3, #0xb
+ bl FUN_0200CCA4
+ add r0, r5, #0x0
+ ldr r2, _02063170 ; =0x000003E2
+ add r0, #0xe4
+ mov r1, #0x1
+ mov r3, #0xa
+ bl FUN_0200D0BC
+ add r0, r5, #0x0
+ add r0, #0xe4
+ mov r1, #0xff
+ bl FUN_02019620
+ mov r3, #0x0
+ str r3, [sp, #0x0]
+ ldr r0, _02063174 ; =0x0001020F
+ str r3, [sp, #0x4]
+ str r0, [sp, #0x8]
+ str r3, [sp, #0xc]
+ add r0, r5, #0x0
+ ldr r2, [r5, #0x3c]
+ add r0, #0xe4
+ mov r1, #0x1
+ bl FUN_0201BDE0
+ mov r0, #0xa6
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ mov r1, #0x1
+ bl FUN_0200C644
+ add r5, #0xd0
+ ldr r0, [r5, #0x0]
+ mov r1, #0x3
+ bl FUN_0201AC68
+ add sp, #0x1c
+ pop {r4-r7, pc}
+ .balign 4
+_02063160: .word 0x0000FFFF
+_02063164: .word 0x020F7C2C
+_02063168: .word FUN_020631C8
+_0206316C: .word 0x000003D9
+_02063170: .word 0x000003E2
+_02063174: .word 0x0001020F
+
+ thumb_func_start FUN_02063178
+FUN_02063178: ; 0x02063178
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, #0xc0
+ add r1, r4, #0x0
+ add r2, r4, #0x0
+ ldr r0, [r0, #0x0]
+ add r1, #0x22
+ add r2, #0x24
+ bl FUN_02001300
+ add r0, r4, #0x0
+ add r0, #0xc4
+ ldr r0, [r0, #0x0]
+ bl FUN_02012870
+ add r0, r4, #0x0
+ add r0, #0xd4
+ bl FUN_02019570
+ add r0, r4, #0x0
+ add r0, #0xd4
+ mov r1, #0x0
+ bl FUN_0200CCF8
+ add r0, r4, #0x0
+ add r0, #0xd4
+ bl FUN_02019178
+ mov r0, #0xa6
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ bl FUN_0200C644
+ add r4, #0xd0
+ ldr r0, [r4, #0x0]
+ mov r1, #0x3
+ bl FUN_0201AC68
+ pop {r4, pc}
+
+ thumb_func_start FUN_020631C8
+FUN_020631C8: ; 0x020631C8
+ push {r3-r5, lr}
+ mov r1, #0x13
+ add r5, r0, #0x0
+ bl FUN_02001470
+ add r1, sp, #0x0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r1, #0x2
+ add r2, sp, #0x0
+ bl FUN_02001448
+ add r0, r5, #0x0
+ mov r1, #0x2
+ bl FUN_02001470
+ add r2, sp, #0x0
+ ldrh r3, [r2, #0x0]
+ ldrh r2, [r2, #0x2]
+ mov r0, #0xa6
+ lsl r0, r0, #0x2
+ add r2, r3, r2
+ lsl r2, r2, #0x4
+ add r2, #0x10
+ lsl r2, r2, #0x10
+ ldr r0, [r4, r0]
+ mov r1, #0x7e
+ asr r2, r2, #0x10
+ bl FUN_0200C714
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02063208
+FUN_02063208: ; 0x02063208
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0x0
+ add r0, #0xe4
+ mov r1, #0xff
+ bl FUN_02019620
+ mov r3, #0x0
+ str r3, [sp, #0x0]
+ ldr r0, _02063234 ; =0x0001020F
+ str r3, [sp, #0x4]
+ str r0, [sp, #0x8]
+ add r0, r4, #0x0
+ str r3, [sp, #0xc]
+ add r4, #0x94
+ ldr r2, [r4, #0x0]
+ add r0, #0xe4
+ mov r1, #0x1
+ bl FUN_0201BDE0
+ add sp, #0x10
+ pop {r4, pc}
+ .balign 4
+_02063234: .word 0x0001020F
+
+ thumb_func_start FUN_02063238
+FUN_02063238: ; 0x02063238
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02063208
+ ldrh r2, [r4, #0x28]
+ mov r0, #0xa6
+ lsl r0, r0, #0x2
+ lsl r2, r2, #0x4
+ add r2, #0x10
+ lsl r2, r2, #0x10
+ ldr r0, [r4, r0]
+ mov r1, #0x7e
+ asr r2, r2, #0x10
+ bl FUN_0200C714
+ mov r0, #0xa6
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x1
+ bl FUN_0200C644
+ pop {r4, pc}
+
+ thumb_func_start FUN_02063264
+FUN_02063264: ; 0x02063264
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0x0
+ add r0, #0xe4
+ mov r1, #0xff
+ bl FUN_02019620
+ mov r3, #0x0
+ str r3, [sp, #0x0]
+ ldr r0, _020632A0 ; =0x0001020F
+ str r3, [sp, #0x4]
+ str r0, [sp, #0x8]
+ str r3, [sp, #0xc]
+ ldrb r2, [r4, #0x1f]
+ add r0, r4, #0x0
+ add r0, #0xe4
+ lsl r2, r2, #0x2
+ add r2, r4, r2
+ ldr r2, [r2, #0x7c]
+ mov r1, #0x1
+ bl FUN_0201BDE0
+ mov r0, #0xa6
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ bl FUN_0200C644
+ add sp, #0x10
+ pop {r4, pc}
+ .balign 4
+_020632A0: .word 0x0001020F
+
+ thumb_func_start FUN_020632A4
+FUN_020632A4: ; 0x020632A4
+ push {r4-r7, lr}
+ sub sp, #0x34
+ str r1, [sp, #0x10]
+ mov r1, #0xb
+ add r4, r0, #0x0
+ lsl r1, r1, #0x6
+ ldr r1, [r4, r1]
+ ldrb r0, [r4, #0x1f]
+ str r1, [sp, #0x24]
+ mov r1, #0x3c
+ mul r1, r0
+ str r1, [sp, #0x28]
+ ldrb r1, [r4, #0x16]
+ lsl r0, r0, #0x3
+ lsl r2, r1, #0x2
+ ldr r1, _02063428 ; =0x020F7BD0
+ ldr r1, [r1, r2]
+ add r0, r1, r0
+ str r0, [sp, #0x14]
+ add r0, r4, #0x0
+ add r0, #0xd4
+ mov r1, #0xff
+ bl FUN_02019620
+ mov r0, #0x1
+ str r0, [sp, #0x1c]
+ mov r0, #0x0
+ add r1, r0, #0x0
+ str r1, [sp, #0x20]
+ ldr r2, [sp, #0x24]
+ ldr r1, [sp, #0x28]
+ str r0, [sp, #0x18]
+ ldr r1, [r2, r1]
+ cmp r1, #0x0
+ ble _020633EA
+ ldr r1, [sp, #0x28]
+ add r7, r2, r1
+ add r1, r0, #0x0
+ str r1, [sp, #0x30]
+ add r1, r4, #0x0
+ str r1, [sp, #0x2c]
+ add r1, #0xd4
+ str r1, [sp, #0x2c]
+_020632FA:
+ ldrh r1, [r7, #0x8]
+ cmp r1, #0x0
+ beq _020633D6
+ ldr r1, [r7, #0x4]
+ ldr r5, [r1, #0x4]
+ ldr r1, [sp, #0x14]
+ ldr r1, [r1, #0x0]
+ cmp r5, r1
+ bls _0206330E
+ add r5, r1, #0x0
+_0206330E:
+ cmp r5, r0
+ bge _02063318
+ ldr r0, [sp, #0x1c]
+ add r0, r0, #0x1
+ str r0, [sp, #0x1c]
+_02063318:
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ str r0, [sp, #0x4]
+ ldr r0, [r4, #0x30]
+ ldr r2, [sp, #0x1c]
+ mov r1, #0x0
+ mov r3, #0x1
+ bl FUN_0200AD38
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ mov r0, #0x2
+ str r0, [sp, #0x4]
+ ldr r2, [r7, #0x4]
+ ldr r0, [r4, #0x30]
+ ldr r2, [r2, #0x8]
+ mov r1, #0x1
+ mov r3, #0x2
+ bl FUN_0200ABB4
+ ldr r0, [r4, #0x30]
+ ldr r1, [r4, #0x34]
+ ldr r2, [r4, #0x44]
+ bl FUN_0200B7B8
+ ldr r0, [sp, #0x30]
+ mov r1, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ ldr r0, _0206342C ; =0x0001020F
+ mov r3, #0x8
+ str r0, [sp, #0x8]
+ mov r0, #0x0
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x2c]
+ ldr r2, [r4, #0x34]
+ bl FUN_0201BDE0
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ str r0, [sp, #0x4]
+ ldr r3, [sp, #0x14]
+ ldr r0, [r4, #0x30]
+ ldrh r3, [r3, #0x4]
+ mov r1, #0x0
+ add r2, r5, #0x0
+ bl FUN_0200AD38
+ ldr r2, [sp, #0x14]
+ ldr r0, [r4, #0x30]
+ ldrh r2, [r2, #0x6]
+ ldr r1, [r4, #0x34]
+ lsl r2, r2, #0x2
+ add r2, r4, r2
+ ldr r2, [r2, #0xc]
+ bl FUN_0200B7B8
+ mov r0, #0x0
+ ldr r1, [r4, #0x34]
+ add r2, r0, #0x0
+ bl FUN_02002E14
+ mov r12, r0
+ ldr r0, [sp, #0x30]
+ mov r3, #0xb8
+ str r0, [sp, #0x0]
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ ldr r0, _0206342C ; =0x0001020F
+ mov r6, r12
+ str r0, [sp, #0x8]
+ mov r0, #0x0
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x2c]
+ ldr r2, [r4, #0x34]
+ mov r1, #0x0
+ sub r3, r3, r6
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x18]
+ ldr r1, [sp, #0x20]
+ add r2, r4, r0
+ mov r0, #0xb2
+ lsl r0, r0, #0x2
+ strb r1, [r2, r0]
+ ldr r1, [sp, #0x30]
+ add r0, r5, #0x0
+ add r1, #0x10
+ str r1, [sp, #0x30]
+ ldr r1, [sp, #0x18]
+ add r1, r1, #0x1
+ str r1, [sp, #0x18]
+ cmp r1, #0x6
+ bge _020633EA
+_020633D6:
+ ldr r1, [sp, #0x20]
+ ldr r2, [sp, #0x24]
+ add r1, r1, #0x1
+ str r1, [sp, #0x20]
+ ldr r1, [sp, #0x28]
+ add r7, #0x8
+ ldr r2, [r2, r1]
+ ldr r1, [sp, #0x20]
+ cmp r1, r2
+ blt _020632FA
+_020633EA:
+ add r0, r4, #0x0
+ add r0, #0xd4
+ bl FUN_020191D0
+ add r1, r4, #0x0
+ ldr r0, [sp, #0x18]
+ add r1, #0x21
+ strb r0, [r1, #0x0]
+ ldrh r1, [r4, #0x28]
+ cmp r1, #0x0
+ beq _0206340E
+ add r0, r4, #0x0
+ add r0, #0x21
+ ldrb r0, [r0, #0x0]
+ cmp r1, r0
+ blt _0206340E
+ sub r0, r1, #0x1
+ strh r0, [r4, #0x28]
+_0206340E:
+ ldr r0, [sp, #0x10]
+ cmp r0, #0x0
+ beq _0206341E
+ add r0, r4, #0x0
+ bl FUN_02063238
+ add sp, #0x34
+ pop {r4-r7, pc}
+_0206341E:
+ add r0, r4, #0x0
+ bl FUN_02063264
+ add sp, #0x34
+ pop {r4-r7, pc}
+ .balign 4
+_02063428: .word 0x020F7BD0
+_0206342C: .word 0x0001020F
+
+ thumb_func_start FUN_02063430
+FUN_02063430: ; 0x02063430
+ push {r3-r4, lr}
+ sub sp, #0x14
+ mov r2, #0x1
+ add r4, r0, #0x0
+ str r2, [sp, #0x0]
+ mov r0, #0x18
+ str r0, [sp, #0x4]
+ mov r0, #0xc
+ str r0, [sp, #0x8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ add r0, r4, #0x0
+ add r1, r4, #0x0
+ str r2, [sp, #0x10]
+ add r0, #0xd0
+ ldr r0, [r0, #0x0]
+ add r1, #0xd4
+ mov r3, #0x4
+ bl FUN_02019064
+ add r0, r4, #0x0
+ ldr r2, _020634D0 ; =0x000003D9
+ add r0, #0xd4
+ mov r1, #0x1
+ mov r3, #0xb
+ bl FUN_0200CCA4
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_020632A4
+ mov r0, #0xa7
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x1
+ bl FUN_0200C644
+ mov r0, #0xe
+ str r0, [sp, #0x0]
+ mov r3, #0x8
+ add r1, r4, #0x0
+ str r3, [sp, #0x4]
+ mov r0, #0x2
+ str r0, [sp, #0x8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ ldr r0, _020634D4 ; =0x00000345
+ add r1, #0xf4
+ str r0, [sp, #0x10]
+ add r0, r4, #0x0
+ add r0, #0xd0
+ ldr r0, [r0, #0x0]
+ mov r2, #0x3
+ bl FUN_02019064
+ add r0, r4, #0x0
+ add r0, #0xf4
+ mov r1, #0x0
+ bl FUN_02019620
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ ldr r0, _020634D8 ; =0x00010200
+ str r1, [sp, #0x4]
+ str r0, [sp, #0x8]
+ str r1, [sp, #0xc]
+ add r0, r4, #0x0
+ ldr r2, [r4, #0x40]
+ add r0, #0xf4
+ add r3, r1, #0x0
+ bl FUN_0201BDE0
+ add r4, #0xd0
+ ldr r0, [r4, #0x0]
+ mov r1, #0x3
+ bl FUN_0201AC68
+ add sp, #0x14
+ pop {r3-r4, pc}
+ nop
+_020634D0: .word 0x000003D9
+_020634D4: .word 0x00000345
+_020634D8: .word 0x00010200
+
+ thumb_func_start FUN_020634DC
+FUN_020634DC: ; 0x020634DC
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, #0xd4
+ bl FUN_02019570
+ add r0, r4, #0x0
+ add r0, #0xd4
+ mov r1, #0x0
+ bl FUN_0200CCF8
+ add r0, r4, #0x0
+ add r0, #0xd4
+ bl FUN_02019178
+ add r0, r4, #0x0
+ add r0, #0xf4
+ bl FUN_02019570
+ add r0, r4, #0x0
+ add r0, #0xf4
+ bl FUN_02019178
+ mov r0, #0xa6
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ bl FUN_0200C644
+ mov r0, #0xa7
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ bl FUN_0200C644
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02063524
+FUN_02063524: ; 0x02063524
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldr r2, [r4, #0x0]
+ ldr r1, [r4, #0x8]
+ cmp r2, #0xc
+ bls _02063540
+ b _02063646
+_02063540:
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_0206354C: ; jump table (using 16-bit offset)
+ .short _02063566 - _0206354C - 2; case 0
+ .short _02063572 - _0206354C - 2; case 1
+ .short _0206357E - _0206354C - 2; case 2
+ .short _02063594 - _0206354C - 2; case 3
+ .short _020635AA - _0206354C - 2; case 4
+ .short _020635C0 - _0206354C - 2; case 5
+ .short _020635D6 - _0206354C - 2; case 6
+ .short _020635EC - _0206354C - 2; case 7
+ .short _02063602 - _0206354C - 2; case 8
+ .short _02063618 - _0206354C - 2; case 9
+ .short _0206362C - _0206354C - 2; case 10
+ .short _02063636 - _0206354C - 2; case 11
+ .short _0206363E - _0206354C - 2; case 12
+_02063566:
+ ldrh r2, [r4, #0x4]
+ add r1, r5, #0x0
+ bl FUN_020625EC
+ str r0, [r4, #0x0]
+ b _02063646
+_02063572:
+ add r0, r1, #0x0
+ ldr r1, [r5, #0xc]
+ bl FUN_02062720
+ str r0, [r4, #0x0]
+ b _02063646
+_0206357E:
+ add r0, r1, #0x0
+ bl FUN_02062760
+ str r0, [r4, #0x0]
+ mov r0, #0x4d
+ ldr r1, [r4, #0x8]
+ lsl r0, r0, #0x2
+ ldr r0, [r1, r0]
+ bl FUN_0201FDEC
+ b _02063646
+_02063594:
+ add r0, r1, #0x0
+ bl FUN_02062770
+ str r0, [r4, #0x0]
+ mov r0, #0x4d
+ ldr r1, [r4, #0x8]
+ lsl r0, r0, #0x2
+ ldr r0, [r1, r0]
+ bl FUN_0201FDEC
+ b _02063646
+_020635AA:
+ add r0, r1, #0x0
+ bl FUN_020627D0
+ str r0, [r4, #0x0]
+ mov r0, #0x4d
+ ldr r1, [r4, #0x8]
+ lsl r0, r0, #0x2
+ ldr r0, [r1, r0]
+ bl FUN_0201FDEC
+ b _02063646
+_020635C0:
+ add r0, r1, #0x0
+ bl FUN_020627DC
+ str r0, [r4, #0x0]
+ mov r0, #0x4d
+ ldr r1, [r4, #0x8]
+ lsl r0, r0, #0x2
+ ldr r0, [r1, r0]
+ bl FUN_0201FDEC
+ b _02063646
+_020635D6:
+ add r0, r1, #0x0
+ bl FUN_02062808
+ str r0, [r4, #0x0]
+ mov r0, #0x4d
+ ldr r1, [r4, #0x8]
+ lsl r0, r0, #0x2
+ ldr r0, [r1, r0]
+ bl FUN_0201FDEC
+ b _02063646
+_020635EC:
+ add r0, r1, #0x0
+ bl FUN_020628E8
+ str r0, [r4, #0x0]
+ mov r0, #0x4d
+ ldr r1, [r4, #0x8]
+ lsl r0, r0, #0x2
+ ldr r0, [r1, r0]
+ bl FUN_0201FDEC
+ b _02063646
+_02063602:
+ add r0, r1, #0x0
+ bl FUN_020629D8
+ str r0, [r4, #0x0]
+ mov r0, #0x4d
+ ldr r1, [r4, #0x8]
+ lsl r0, r0, #0x2
+ ldr r0, [r1, r0]
+ bl FUN_0201FDEC
+ b _02063646
+_02063618:
+ ldr r0, _0206364C ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x1
+ tst r0, r1
+ bne _02063626
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_02063626:
+ mov r0, #0xa
+ str r0, [r4, #0x0]
+ b _02063646
+_0206362C:
+ add r0, r1, #0x0
+ bl FUN_02062740
+ str r0, [r4, #0x0]
+ b _02063646
+_02063636:
+ bl FUN_02062678
+ str r0, [r4, #0x0]
+ b _02063646
+_0206363E:
+ bl FUN_02016A18
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_02063646:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ nop
+_0206364C: .word 0x021C48B8
+
+ thumb_func_start FUN_02063650
+FUN_02063650: ; 0x02063650
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ bl FUN_02046528
+ add r4, r0, #0x0
+ mov r0, #0xb
+ mov r1, #0xc
+ bl FUN_02016998
+ add r2, r0, #0x0
+ mov r0, #0x0
+ str r0, [r2, #0x0]
+ strh r5, [r2, #0x4]
+ str r0, [r2, #0x8]
+ ldr r0, [r4, #0x10]
+ ldr r1, _02063678 ; =FUN_02063524
+ bl FUN_0204640C
+ pop {r3-r5, pc}
+ nop
+_02063678: .word FUN_02063524
+
+ thumb_func_start FUN_0206367C
+FUN_0206367C: ; 0x0206367C
+ add r0, #0xb4
+ str r1, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02063684
+FUN_02063684: ; 0x02063684
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_02063818
+ ldr r0, [r5, #0xc]
+ bl FUN_020462AC
+ mov r1, #0x0
+ bl FUN_0205F264
+ ldr r1, [r5, #0x1c]
+ add r0, r5, #0x0
+ ldr r1, [r1, #0x0]
+ bl FUN_02034F88
+ ldr r0, [r5, #0xc]
+ bl FUN_0202A9B0
+ mov r1, #0x0
+ bl FUN_0202AB68
+ add r0, r5, #0x0
+ mov r1, #0x0
+ add r0, #0x74
+ strh r1, [r0, #0x0]
+ ldr r0, [r5, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205F214
+ cmp r0, #0x0
+ bne _020636DA
+ ldr r0, [r5, #0xc]
+ bl FUN_0202A9B0
+ ldr r1, [r5, #0x1c]
+ add r4, r0, #0x0
+ ldr r1, [r1, #0x0]
+ bl FUN_02060478
+ add r0, r4, #0x0
+ bl FUN_020603F0
+_020636DA:
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_020636DC
+FUN_020636DC: ; 0x020636DC
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r1, r5, #0x0
+ add r1, #0xb4
+ ldr r1, [r1, #0x0]
+ cmp r1, #0x1
+ beq _020637A6
+ bl FUN_02063818
+ cmp r0, #0x0
+ bne _020636F8
+ add r0, r5, #0x0
+ bl FUN_0206384C
+_020636F8:
+ ldr r0, [r5, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205F254
+ ldr r0, [r5, #0xc]
+ bl FUN_020462AC
+ mov r1, #0x0
+ bl FUN_0205F264
+ ldr r1, [r5, #0x1c]
+ add r0, r5, #0x0
+ ldr r1, [r1, #0x0]
+ bl FUN_02034F88
+ ldr r0, [r5, #0xc]
+ bl FUN_0202A9B0
+ mov r1, #0x0
+ bl FUN_0202AB68
+ add r0, r5, #0x0
+ mov r1, #0x0
+ add r0, #0x74
+ strh r1, [r0, #0x0]
+ ldr r0, [r5, #0xc]
+ bl FUN_0202A9B0
+ ldr r1, [r5, #0x1c]
+ ldr r1, [r1, #0x0]
+ bl FUN_02060478
+ ldr r0, [r5, #0x1c]
+ ldr r0, [r0, #0x0]
+ bl FUN_02034930
+ cmp r0, #0x0
+ bne _02063758
+ ldr r0, [r5, #0xc]
+ bl FUN_020462AC
+ add r4, r0, #0x0
+ bl FUN_0205F284
+ add r0, r4, #0x0
+ bl FUN_0205F2B4
+_02063758:
+ ldr r0, [r5, #0xc]
+ bl FUN_02034E30
+ bl FUN_02034E20
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x1
+ bne _0206377C
+ ldr r0, [r5, #0x1c]
+ ldr r0, [r0, #0x0]
+ bl FUN_020348B4
+ cmp r0, #0x0
+ bne _0206377C
+ mov r0, #0x0
+ str r0, [r4, #0x4]
+ b _02063786
+_0206377C:
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x2
+ bne _02063786
+ mov r0, #0x0
+ str r0, [r4, #0x4]
+_02063786:
+ ldr r0, [r5, #0x1c]
+ ldr r0, [r0, #0x0]
+ bl FUN_02034908
+ cmp r0, #0x0
+ beq _020637A6
+ ldr r0, [r5, #0xc]
+ bl FUN_02034E30
+ bl FUN_02034E0C
+ ldr r2, [r5, #0x1c]
+ ldr r1, [r2, #0x8]
+ ldr r2, [r2, #0xc]
+ bl FUN_0204AE04
+_020637A6:
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_020637A8
+FUN_020637A8: ; 0x020637A8
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205F204
+ ldr r0, [r4, #0xc]
+ bl FUN_0202A9B0
+ bl FUN_020603C8
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020637C4
+FUN_020637C4: ; 0x020637C4
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205F204
+ ldr r0, [r4, #0xc]
+ bl FUN_0202A9B0
+ bl FUN_020603C8
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020637E0
+FUN_020637E0: ; 0x020637E0
+ push {r3, lr}
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205F204
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_020637F0
+FUN_020637F0: ; 0x020637F0
+ push {r4, lr}
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ add r4, r0, #0x0
+ bl FUN_0205ED2C
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_0205F358
+ pop {r4, pc}
+
+ thumb_func_start FUN_02063808
+FUN_02063808: ; 0x02063808
+ push {r3, lr}
+ ldr r0, [r0, #0xc]
+ bl FUN_0202A9B0
+ bl FUN_020603C8
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02063818
+FUN_02063818: ; 0x02063818
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x1c]
+ ldr r0, [r0, #0x0]
+ bl FUN_02034F1C
+ add r1, r0, #0x0
+ beq _02063846
+ add r0, r4, #0x0
+ bl FUN_02034FC0
+ cmp r0, #0x0
+ bne _02063846
+ add r0, r4, #0x0
+ ldr r1, [r4, #0x1c]
+ add r0, #0x98
+ ldr r0, [r0, #0x0]
+ ldr r1, [r1, #0x0]
+ mov r2, #0x20
+ bl FUN_020299C0
+ mov r0, #0x1
+ pop {r4, pc}
+_02063846:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206384C
+FUN_0206384C: ; 0x0206384C
+ push {r3-r6, lr}
+ sub sp, #0x4
+ add r5, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_02034E30
+ bl FUN_02034DC8
+ ldr r1, [r5, #0x1c]
+ ldr r6, [r0, #0x0]
+ ldr r4, [r1, #0x0]
+ cmp r6, r4
+ beq _02063882
+ ldr r0, [r5, #0xc]
+ bl FUN_020238F4
+ mov r1, #0x20
+ add r5, #0x98
+ str r1, [sp, #0x0]
+ ldr r1, [r5, #0x0]
+ add r2, r4, #0x0
+ add r3, r6, #0x0
+ bl FUN_02029880
+ add sp, #0x4
+ mov r0, #0x1
+ pop {r3-r6, pc}
+_02063882:
+ mov r0, #0x0
+ add sp, #0x4
+ pop {r3-r6, pc}
+
+ thumb_func_start FUN_02063888
+FUN_02063888: ; 0x02063888
+ push {r4-r6, lr}
+ add r5, r1, #0x0
+ mov r1, #0x18
+ add r4, r2, #0x0
+ add r6, r3, #0x0
+ bl FUN_020169D8
+ add r3, r0, #0x0
+ mov r2, #0x18
+ mov r1, #0x0
+_0206389C:
+ strb r1, [r3, #0x0]
+ add r3, r3, #0x1
+ sub r2, r2, #0x1
+ bne _0206389C
+ str r5, [r0, #0x0]
+ str r4, [r0, #0x10]
+ strh r6, [r0, #0x8]
+ add r2, sp, #0x0
+ mov r1, #0x10
+ ldrsh r1, [r2, r1]
+ strh r1, [r0, #0xa]
+ mov r1, #0x14
+ ldrsh r1, [r2, r1]
+ strh r1, [r0, #0xc]
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_020638BC
+FUN_020638BC: ; 0x020638BC
+ push {r3-r6, lr}
+ sub sp, #0x1c
+ add r5, r0, #0x0
+ bl FUN_02046528
+ add r0, r5, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x0
+ beq _020638DA
+ cmp r0, #0x1
+ beq _020638F8
+ b _02063942
+_020638DA:
+ ldr r0, [r4, #0x0]
+ ldr r0, [r0, #0x38]
+ bl FUN_020553E8
+ add r3, r0, #0x0
+ ldr r0, [r4, #0x0]
+ ldr r2, [r4, #0x10]
+ mov r1, #0x1
+ bl FUN_0224666C
+ str r0, [r4, #0x14]
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _02063942
+_020638F8:
+ ldr r0, [r4, #0x14]
+ bl FUN_022466A0
+ cmp r0, #0x0
+ beq _02063942
+ ldr r0, [r4, #0x14]
+ bl FUN_022466AC
+ mov r1, #0xa
+ mov r2, #0xc
+ ldrh r0, [r4, #0x8]
+ ldrsh r1, [r4, r1]
+ ldrsh r2, [r4, r2]
+ bl FUN_02034F40
+ lsl r0, r0, #0x10
+ lsr r6, r0, #0x10
+ bne _02063920
+ bl ErrorHandling
+_02063920:
+ add r0, r6, #0x0
+ add r1, sp, #0x8
+ bl FUN_02034E90
+ ldr r0, [sp, #0x14]
+ mov r2, #0x1
+ str r0, [sp, #0x0]
+ str r2, [sp, #0x4]
+ ldr r1, [sp, #0x8]
+ ldr r3, [sp, #0x10]
+ add r0, r5, #0x0
+ sub r2, r2, #0x2
+ bl FUN_020492BC
+ add r0, r4, #0x0
+ bl FUN_02016A18
+_02063942:
+ mov r0, #0x0
+ add sp, #0x1c
+ pop {r3-r6, pc}
+
+ thumb_func_start FUN_02063948
+FUN_02063948: ; 0x02063948
+ cmp r0, #0x0
+ bne _02063954
+ ldr r0, _0206395C ; =0x020F7CE4
+ lsl r1, r1, #0x3
+ ldr r0, [r0, r1]
+ bx lr
+_02063954:
+ ldr r0, _02063960 ; =0x020F7CE8
+ lsl r1, r1, #0x3
+ ldr r0, [r0, r1]
+ bx lr
+ .balign 4
+_0206395C: .word 0x020F7CE4
+_02063960: .word 0x020F7CE8
+
+ thumb_func_start FUN_02063964
+FUN_02063964: ; 0x02063964
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ str r5, [r4, #0x4]
+ ldr r1, [r5, #0x1c]
+ ldr r1, [r1, #0x0]
+ str r1, [r4, #0x0]
+ mov r1, #0x0
+ strh r1, [r4, #0xc]
+ add r1, sp, #0x8
+ bl FUN_02037024
+ ldr r0, [sp, #0x8]
+ str r0, [r4, #0x8]
+ ldr r0, [sp, #0x8]
+ cmp r0, #0x0
+ beq _020639B6
+ bl FUN_02058458
+ cmp r0, #0x54
+ beq _0206399A
+ cmp r0, #0x55
+ beq _020639A4
+ cmp r0, #0x56
+ beq _020639AE
+ b _020639B6
+_0206399A:
+ ldrh r1, [r4, #0xc]
+ mov r0, #0x8
+ orr r0, r1
+ strh r0, [r4, #0xc]
+ b _020639B6
+_020639A4:
+ ldrh r1, [r4, #0xc]
+ mov r0, #0x20
+ orr r0, r1
+ strh r0, [r4, #0xc]
+ b _020639B6
+_020639AE:
+ ldrh r1, [r4, #0xc]
+ mov r0, #0x1
+ orr r0, r1
+ strh r0, [r4, #0xc]
+_020639B6:
+ ldr r0, [r5, #0x38]
+ bl FUN_02055320
+ str r0, [sp, #0x4]
+ ldr r0, [r5, #0x38]
+ bl FUN_0205532C
+ add r2, r0, #0x0
+ ldr r1, [sp, #0x4]
+ str r2, [sp, #0x0]
+ add r0, r5, #0x0
+ bl FUN_0204A6E0
+ add r7, r0, #0x0
+ ldr r0, [r5, #0x38]
+ add r1, sp, #0x4
+ add r2, sp, #0x0
+ bl FUN_020572B8
+ ldr r1, [sp, #0x4]
+ ldr r2, [sp, #0x0]
+ add r0, r5, #0x0
+ bl FUN_0204A6E0
+ add r6, r0, #0x0
+ ldr r0, [r5, #0x38]
+ add r1, r7, #0x0
+ add r2, r6, #0x0
+ bl FUN_021E643C
+ cmp r0, #0x0
+ beq _020639FE
+ ldrh r1, [r4, #0xc]
+ mov r0, #0x4
+ orr r0, r1
+ strh r0, [r4, #0xc]
+_020639FE:
+ ldr r0, [r5, #0x38]
+ bl FUN_020552F8
+ add r1, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_021E69BC
+ cmp r0, #0x0
+ beq _02063A18
+ ldrh r1, [r4, #0xc]
+ mov r0, #0x80
+ orr r0, r1
+ strh r0, [r4, #0xc]
+_02063A18:
+ lsl r0, r6, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_02054A48
+ cmp r0, #0x0
+ beq _02063A2C
+ ldrh r1, [r4, #0xc]
+ mov r0, #0x40
+ orr r0, r1
+ strh r0, [r4, #0xc]
+_02063A2C:
+ ldr r0, [r5, #0xc]
+ bl FUN_02034E30
+ bl FUN_02034DEC
+ cmp r0, #0xe
+ beq _02063A42
+ cmp r0, #0x10
+ beq _02063A4E
+ add sp, #0xc
+ pop {r4-r7, pc}
+_02063A42:
+ ldrh r1, [r4, #0xc]
+ mov r0, #0x10
+ add sp, #0xc
+ orr r0, r1
+ strh r0, [r4, #0xc]
+ pop {r4-r7, pc}
+_02063A4E:
+ ldrh r1, [r4, #0xc]
+ mov r0, #0x1
+ lsl r0, r0, #0x8
+ orr r0, r1
+ strh r0, [r4, #0xc]
+ add sp, #0xc
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_02063A5C
+FUN_02063A5C: ; 0x02063A5C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ mov r0, #0x20
+ mov r1, #0x10
+ bl FUN_02016998
+ ldr r1, _02063A7C ; =0x19740205
+ str r1, [r0, #0x0]
+ ldr r1, [r4, #0x8]
+ str r1, [r0, #0x4]
+ ldr r2, [r5, #0x0]
+ ldr r1, [r5, #0x4]
+ str r2, [r0, #0x8]
+ str r1, [r0, #0xc]
+ pop {r3-r5, pc}
+ .balign 4
+_02063A7C: .word 0x19740205
+
+ thumb_func_start FUN_02063A80
+FUN_02063A80: ; 0x02063A80
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x0]
+ ldr r0, _02063A98 ; =0x19740205
+ cmp r1, r0
+ beq _02063A90
+ bl ErrorHandling
+_02063A90:
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .balign 4
+_02063A98: .word 0x19740205
+
+ thumb_func_start FUN_02063A9C
+FUN_02063A9C: ; 0x02063A9C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x4]
+ ldr r0, [r1, #0x6c]
+ sub r0, r0, #0x2
+ cmp r0, #0x1
+ bhi _02063AAE
+ mov r0, #0x1
+ pop {r4, pc}
+_02063AAE:
+ ldr r0, [r1, #0xc]
+ bl FUN_020238F4
+ mov r1, #0x1
+ bl FUN_020239D0
+ cmp r0, #0x0
+ bne _02063AC2
+ mov r0, #0x2
+ pop {r4, pc}
+_02063AC2:
+ ldrh r1, [r4, #0xc]
+ mov r0, #0x1
+ tst r1, r0
+ beq _02063ACC
+ mov r0, #0x0
+_02063ACC:
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02063AD0
+FUN_02063AD0: ; 0x02063AD0
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ add r6, r1, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02063A5C
+ add r5, r0, #0x0
+ ldr r0, [r6, #0x4]
+ bl FUN_0204649C
+ mov r0, #0x72
+ ldr r1, _02063B00 ; =FUN_02063B04
+ lsl r0, r0, #0x2
+ str r1, [r4, r0]
+ add r0, #0x30
+ str r5, [r4, r0]
+ mov r0, #0xa
+ strh r0, [r4, #0x2a]
+ pop {r4-r6, pc}
+ .balign 4
+_02063B00: .word FUN_02063B04
+
+ thumb_func_start FUN_02063B04
+FUN_02063B04: ; 0x02063B04
+ push {r3-r6, lr}
+ sub sp, #0x4
+ add r5, r0, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02046528
+ add r6, r0, #0x0
+ ldr r1, _02063B3C ; =0x00002718
+ ldr r2, [r4, #0x4]
+ add r0, r5, #0x0
+ bl FUN_02038D10
+ mov r2, #0x0
+ str r2, [sp, #0x0]
+ ldrh r1, [r4, #0xc]
+ add r0, r6, #0x0
+ add r3, r2, #0x0
+ bl FUN_020395BC
+ add r0, r4, #0x0
+ bl FUN_02063A80
+ mov r0, #0x0
+ add sp, #0x4
+ pop {r3-r6, pc}
+ .balign 4
+_02063B3C: .word 0x00002718
+
+ thumb_func_start FUN_02063B40
+FUN_02063B40: ; 0x02063B40
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x4]
+ ldr r0, [r1, #0x6c]
+ sub r0, r0, #0x2
+ cmp r0, #0x1
+ bhi _02063B52
+ mov r0, #0x1
+ pop {r4, pc}
+_02063B52:
+ ldr r0, [r1, #0xc]
+ bl FUN_020238F4
+ mov r1, #0x2
+ bl FUN_020239D0
+ cmp r0, #0x0
+ bne _02063B66
+ mov r0, #0x2
+ pop {r4, pc}
+_02063B66:
+ ldr r0, [r4, #0x0]
+ bl FUN_02034898
+ cmp r0, #0x0
+ bne _02063B74
+ mov r0, #0x1
+ pop {r4, pc}
+_02063B74:
+ ldr r0, [r4, #0x4]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205ED3C
+ cmp r0, #0x1
+ bne _02063B88
+ mov r0, #0x3
+ pop {r4, pc}
+_02063B88:
+ ldr r0, [r4, #0x4]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205F214
+ cmp r0, #0x1
+ beq _02063BA8
+ ldr r0, [r4, #0x4]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205F244
+ cmp r0, #0x1
+ bne _02063BAC
+_02063BA8:
+ mov r0, #0x1
+ b _02063BAE
+_02063BAC:
+ mov r0, #0x0
+_02063BAE:
+ cmp r0, #0x1
+ bne _02063BB6
+ mov r0, #0x1
+ pop {r4, pc}
+_02063BB6:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02063BBC
+FUN_02063BBC: ; 0x02063BBC
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_02046528
+ add r6, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ mov r0, #0xb
+ mov r1, #0x4
+ bl FUN_02016998
+ ldrh r1, [r5, #0x4]
+ str r1, [r0, #0x0]
+ mov r1, #0x7f
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ mov r0, #0xb
+ sub r1, #0xbc
+ bl FUN_02016998
+ mov r1, #0x7e
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ ldr r1, [r4, r1]
+ add r0, r6, #0x0
+ mov r2, #0x1
+ bl FUN_0205F7A0
+ mov r1, #0x7e
+ lsl r1, r1, #0x2
+ ldr r1, [r4, r1]
+ add r0, r6, #0x0
+ bl FUN_02037E90
+ ldr r1, _02063C10 ; =FUN_02036AB8
+ add r0, r4, #0x0
+ bl FUN_02035D04
+ pop {r4-r6, pc}
+ .balign 4
+_02063C10: .word FUN_02036AB8
+
+ thumb_func_start FUN_02063C14
+FUN_02063C14: ; 0x02063C14
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x4]
+ ldr r0, [r1, #0x6c]
+ sub r0, r0, #0x2
+ cmp r0, #0x1
+ bhi _02063C26
+ mov r0, #0x1
+ pop {r4, pc}
+_02063C26:
+ ldr r0, [r1, #0xc]
+ bl FUN_020238F4
+ mov r1, #0x4
+ bl FUN_020239D0
+ cmp r0, #0x0
+ bne _02063C3A
+ mov r0, #0x2
+ pop {r4, pc}
+_02063C3A:
+ ldr r0, [r4, #0x4]
+ ldr r0, [r0, #0x38]
+ bl FUN_020553C4
+ cmp r0, #0x2
+ bne _02063C4A
+ mov r0, #0x4
+ pop {r4, pc}
+_02063C4A:
+ ldrh r1, [r4, #0xc]
+ mov r0, #0x4
+ tst r0, r1
+ bne _02063C56
+ mov r0, #0x1
+ pop {r4, pc}
+_02063C56:
+ ldr r0, [r4, #0x4]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205ED3C
+ cmp r0, #0x1
+ bne _02063C6A
+ mov r0, #0x3
+ pop {r4, pc}
+_02063C6A:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02063C70
+FUN_02063C70: ; 0x02063C70
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ add r6, r1, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02063A5C
+ add r5, r0, #0x0
+ ldr r0, [r6, #0x4]
+ bl FUN_0204649C
+ mov r0, #0x72
+ ldr r1, _02063CA0 ; =FUN_02063CA4
+ lsl r0, r0, #0x2
+ str r1, [r4, r0]
+ add r0, #0x30
+ str r5, [r4, r0]
+ mov r0, #0xa
+ strh r0, [r4, #0x2a]
+ pop {r4-r6, pc}
+ .balign 4
+_02063CA0: .word FUN_02063CA4
+
+ thumb_func_start FUN_02063CA4
+FUN_02063CA4: ; 0x02063CA4
+ push {r3-r6, lr}
+ sub sp, #0x4
+ add r5, r0, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02046528
+ add r6, r0, #0x0
+ ldr r1, _02063CDC ; =0x0000271C
+ add r0, r5, #0x0
+ mov r2, #0x0
+ bl FUN_02038D10
+ mov r2, #0x0
+ str r2, [sp, #0x0]
+ ldrh r1, [r4, #0xc]
+ add r0, r6, #0x0
+ add r3, r2, #0x0
+ bl FUN_020395BC
+ add r0, r4, #0x0
+ bl FUN_02063A80
+ mov r0, #0x0
+ add sp, #0x4
+ pop {r3-r6, pc}
+ .balign 4
+_02063CDC: .word 0x0000271C
+
+ thumb_func_start FUN_02063CE0
+FUN_02063CE0: ; 0x02063CE0
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x4]
+ ldr r0, [r1, #0x6c]
+ sub r0, r0, #0x2
+ cmp r0, #0x1
+ bhi _02063CF2
+ mov r0, #0x1
+ pop {r4, pc}
+_02063CF2:
+ ldr r0, [r1, #0xc]
+ bl FUN_020238F4
+ mov r1, #0x5
+ bl FUN_020239D0
+ cmp r0, #0x0
+ bne _02063D06
+ mov r0, #0x2
+ pop {r4, pc}
+_02063D06:
+ ldrh r1, [r4, #0xc]
+ mov r0, #0x8
+ tst r0, r1
+ beq _02063D12
+ mov r0, #0x0
+ pop {r4, pc}
+_02063D12:
+ mov r0, #0x1
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02063D18
+FUN_02063D18: ; 0x02063D18
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ add r6, r1, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02063A5C
+ add r5, r0, #0x0
+ ldr r0, [r6, #0x4]
+ bl FUN_0204649C
+ mov r0, #0x72
+ ldr r1, _02063D48 ; =FUN_02063D4C
+ lsl r0, r0, #0x2
+ str r1, [r4, r0]
+ add r0, #0x30
+ str r5, [r4, r0]
+ mov r0, #0xa
+ strh r0, [r4, #0x2a]
+ pop {r4-r6, pc}
+ .balign 4
+_02063D48: .word FUN_02063D4C
+
+ thumb_func_start FUN_02063D4C
+FUN_02063D4C: ; 0x02063D4C
+ push {r3-r6, lr}
+ sub sp, #0x4
+ add r5, r0, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02046528
+ add r6, r0, #0x0
+ ldr r1, _02063D84 ; =0x0000271A
+ ldr r2, [r4, #0x4]
+ add r0, r5, #0x0
+ bl FUN_02038D10
+ mov r2, #0x0
+ str r2, [sp, #0x0]
+ ldrh r1, [r4, #0xc]
+ add r0, r6, #0x0
+ add r3, r2, #0x0
+ bl FUN_020395BC
+ add r0, r4, #0x0
+ bl FUN_02063A80
+ mov r0, #0x0
+ add sp, #0x4
+ pop {r3-r6, pc}
+ .balign 4
+_02063D84: .word 0x0000271A
+
+ thumb_func_start FUN_02063D88
+FUN_02063D88: ; 0x02063D88
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x4]
+ ldr r0, [r1, #0x6c]
+ sub r0, r0, #0x2
+ cmp r0, #0x1
+ bhi _02063D9A
+ mov r0, #0x1
+ pop {r4, pc}
+_02063D9A:
+ ldr r0, [r1, #0xc]
+ bl FUN_020238F4
+ mov r1, #0x3
+ bl FUN_020239D0
+ cmp r0, #0x0
+ bne _02063DAE
+ mov r0, #0x2
+ pop {r4, pc}
+_02063DAE:
+ ldrh r1, [r4, #0xc]
+ mov r0, #0x10
+ tst r0, r1
+ beq _02063DBA
+ mov r0, #0x0
+ pop {r4, pc}
+_02063DBA:
+ mov r0, #0x1
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02063DC0
+FUN_02063DC0: ; 0x02063DC0
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ add r6, r1, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02063A5C
+ add r5, r0, #0x0
+ ldr r0, [r6, #0x4]
+ bl FUN_0204649C
+ mov r0, #0x72
+ ldr r1, _02063DF0 ; =FUN_02063DF4
+ lsl r0, r0, #0x2
+ str r1, [r4, r0]
+ add r0, #0x30
+ str r5, [r4, r0]
+ mov r0, #0xa
+ strh r0, [r4, #0x2a]
+ pop {r4-r6, pc}
+ .balign 4
+_02063DF0: .word FUN_02063DF4
+
+ thumb_func_start FUN_02063DF4
+FUN_02063DF4: ; 0x02063DF4
+ push {r3-r6, lr}
+ sub sp, #0x4
+ add r5, r0, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02046528
+ add r6, r0, #0x0
+ ldr r1, _02063E2C ; =0x0000271E
+ add r0, r5, #0x0
+ mov r2, #0x0
+ bl FUN_02038D10
+ mov r2, #0x0
+ str r2, [sp, #0x0]
+ ldrh r1, [r4, #0xc]
+ add r0, r6, #0x0
+ add r3, r2, #0x0
+ bl FUN_020395BC
+ add r0, r4, #0x0
+ bl FUN_02063A80
+ mov r0, #0x0
+ add sp, #0x4
+ pop {r3-r6, pc}
+ .balign 4
+_02063E2C: .word 0x0000271E
+
+ thumb_func_start FUN_02063E30
+FUN_02063E30: ; 0x02063E30
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x4]
+ ldr r0, [r1, #0x6c]
+ sub r0, r0, #0x2
+ cmp r0, #0x1
+ bhi _02063E42
+ mov r0, #0x1
+ pop {r4, pc}
+_02063E42:
+ ldr r0, [r1, #0xc]
+ bl FUN_020238F4
+ mov r1, #0x0
+ bl FUN_020239D0
+ cmp r0, #0x0
+ bne _02063E56
+ mov r0, #0x2
+ pop {r4, pc}
+_02063E56:
+ ldrh r1, [r4, #0xc]
+ mov r0, #0x20
+ tst r0, r1
+ beq _02063E62
+ mov r0, #0x0
+ pop {r4, pc}
+_02063E62:
+ mov r0, #0x1
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02063E68
+FUN_02063E68: ; 0x02063E68
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ add r6, r1, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02063A5C
+ add r5, r0, #0x0
+ ldr r0, [r6, #0x4]
+ bl FUN_0204649C
+ mov r0, #0x72
+ ldr r1, _02063E98 ; =FUN_02063E9C
+ lsl r0, r0, #0x2
+ str r1, [r4, r0]
+ add r0, #0x30
+ str r5, [r4, r0]
+ mov r0, #0xa
+ strh r0, [r4, #0x2a]
+ pop {r4-r6, pc}
+ .balign 4
+_02063E98: .word FUN_02063E9C
+
+ thumb_func_start FUN_02063E9C
+FUN_02063E9C: ; 0x02063E9C
+ push {r3-r6, lr}
+ sub sp, #0x4
+ add r5, r0, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02046528
+ add r6, r0, #0x0
+ ldr r1, _02063ED4 ; =0x00002719
+ ldr r2, [r4, #0x4]
+ add r0, r5, #0x0
+ bl FUN_02038D10
+ mov r2, #0x0
+ str r2, [sp, #0x0]
+ ldrh r1, [r4, #0xc]
+ add r0, r6, #0x0
+ add r3, r2, #0x0
+ bl FUN_020395BC
+ add r0, r4, #0x0
+ bl FUN_02063A80
+ mov r0, #0x0
+ add sp, #0x4
+ pop {r3-r6, pc}
+ .balign 4
+_02063ED4: .word 0x00002719
+
+ thumb_func_start FUN_02063ED8
+FUN_02063ED8: ; 0x02063ED8
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x4]
+ ldr r0, [r1, #0x6c]
+ sub r0, r0, #0x2
+ cmp r0, #0x1
+ bhi _02063EEA
+ mov r0, #0x1
+ pop {r4, pc}
+_02063EEA:
+ ldr r0, [r1, #0xc]
+ bl FUN_020238F4
+ mov r1, #0x7
+ bl FUN_020239D0
+ cmp r0, #0x0
+ bne _02063EFE
+ mov r0, #0x2
+ pop {r4, pc}
+_02063EFE:
+ ldrh r1, [r4, #0xc]
+ mov r0, #0x40
+ tst r0, r1
+ beq _02063F0A
+ mov r0, #0x0
+ pop {r4, pc}
+_02063F0A:
+ mov r0, #0x1
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02063F10
+FUN_02063F10: ; 0x02063F10
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ add r6, r1, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02063A5C
+ add r5, r0, #0x0
+ ldr r0, [r6, #0x4]
+ bl FUN_0204649C
+ mov r0, #0x72
+ ldr r1, _02063F40 ; =FUN_02063F44
+ lsl r0, r0, #0x2
+ str r1, [r4, r0]
+ add r0, #0x30
+ str r5, [r4, r0]
+ mov r0, #0xa
+ strh r0, [r4, #0x2a]
+ pop {r4-r6, pc}
+ .balign 4
+_02063F40: .word FUN_02063F44
+
+ thumb_func_start FUN_02063F44
+FUN_02063F44: ; 0x02063F44
+ push {r3-r6, lr}
+ sub sp, #0x4
+ add r5, r0, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02046528
+ add r6, r0, #0x0
+ ldr r1, _02063F7C ; =0x0000271D
+ add r0, r5, #0x0
+ mov r2, #0x0
+ bl FUN_02038D10
+ mov r2, #0x0
+ str r2, [sp, #0x0]
+ ldrh r1, [r4, #0xc]
+ add r0, r6, #0x0
+ add r3, r2, #0x0
+ bl FUN_020395BC
+ add r0, r4, #0x0
+ bl FUN_02063A80
+ mov r0, #0x0
+ add sp, #0x4
+ pop {r3-r6, pc}
+ .balign 4
+_02063F7C: .word 0x0000271D
+
+ thumb_func_start FUN_02063F80
+FUN_02063F80: ; 0x02063F80
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x4]
+ ldr r0, [r1, #0x6c]
+ sub r0, r0, #0x2
+ cmp r0, #0x1
+ bhi _02063F92
+ mov r0, #0x1
+ pop {r4, pc}
+_02063F92:
+ ldr r0, [r1, #0xc]
+ bl FUN_020238F4
+ mov r1, #0x6
+ bl FUN_020239D0
+ cmp r0, #0x0
+ bne _02063FA6
+ mov r0, #0x2
+ pop {r4, pc}
+_02063FA6:
+ ldrh r1, [r4, #0xc]
+ mov r0, #0x80
+ tst r0, r1
+ bne _02063FB2
+ mov r0, #0x1
+ pop {r4, pc}
+_02063FB2:
+ ldr r0, [r4, #0x4]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205ED3C
+ cmp r0, #0x1
+ bne _02063FC6
+ mov r0, #0x3
+ pop {r4, pc}
+_02063FC6:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02063FCC
+FUN_02063FCC: ; 0x02063FCC
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ add r6, r1, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02063A5C
+ add r5, r0, #0x0
+ ldr r0, [r6, #0x4]
+ bl FUN_0204649C
+ mov r0, #0x72
+ ldr r1, _02063FFC ; =FUN_02064000
+ lsl r0, r0, #0x2
+ str r1, [r4, r0]
+ add r0, #0x30
+ str r5, [r4, r0]
+ mov r0, #0xa
+ strh r0, [r4, #0x2a]
+ pop {r4-r6, pc}
+ .balign 4
+_02063FFC: .word FUN_02064000
+
+ thumb_func_start FUN_02064000
+FUN_02064000: ; 0x02064000
+ push {r3-r6, lr}
+ sub sp, #0x4
+ add r5, r0, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02046528
+ add r6, r0, #0x0
+ ldr r1, _02064038 ; =0x0000271B
+ add r0, r5, #0x0
+ mov r2, #0x0
+ bl FUN_02038D10
+ mov r2, #0x0
+ str r2, [sp, #0x0]
+ ldrh r1, [r4, #0xc]
+ add r0, r6, #0x0
+ add r3, r2, #0x0
+ bl FUN_020395BC
+ add r0, r4, #0x0
+ bl FUN_02063A80
+ mov r0, #0x0
+ add sp, #0x4
+ pop {r3-r6, pc}
+ .balign 4
+_02064038: .word 0x0000271B
+
+ thumb_func_start FUN_0206403C
+FUN_0206403C: ; 0x0206403C
+ ldr r1, [r0, #0x4]
+ ldr r1, [r1, #0x6c]
+ sub r1, r1, #0x2
+ cmp r1, #0x1
+ bhi _0206404A
+ mov r0, #0x1
+ bx lr
+_0206404A:
+ ldrh r1, [r0, #0xc]
+ mov r0, #0x1
+ lsl r0, r0, #0x8
+ tst r0, r1
+ beq _02064058
+ mov r0, #0x0
+ bx lr
+_02064058:
+ mov r0, #0x1
+ bx lr
+
+ thumb_func_start FUN_0206405C
+FUN_0206405C: ; 0x0206405C
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ add r6, r1, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02063A5C
+ add r5, r0, #0x0
+ ldr r0, [r6, #0x4]
+ bl FUN_0204649C
+ mov r0, #0x72
+ ldr r1, _0206408C ; =FUN_02064090
+ lsl r0, r0, #0x2
+ str r1, [r4, r0]
+ add r0, #0x30
+ str r5, [r4, r0]
+ mov r0, #0xa
+ strh r0, [r4, #0x2a]
+ pop {r4-r6, pc}
+ .balign 4
+_0206408C: .word FUN_02064090
+
+ thumb_func_start FUN_02064090
+FUN_02064090: ; 0x02064090
+ push {r3-r6, lr}
+ sub sp, #0x4
+ add r5, r0, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02046528
+ add r6, r0, #0x0
+ ldr r1, _020640C8 ; =0x0000271F
+ add r0, r5, #0x0
+ mov r2, #0x0
+ bl FUN_02038D10
+ mov r2, #0x0
+ str r2, [sp, #0x0]
+ ldrh r1, [r4, #0xc]
+ add r0, r6, #0x0
+ add r3, r2, #0x0
+ bl FUN_020395BC
+ add r0, r4, #0x0
+ bl FUN_02063A80
+ mov r0, #0x0
+ add sp, #0x4
+ pop {r3-r6, pc}
+ .balign 4
+_020640C8: .word 0x0000271F
+
+ thumb_func_start FUN_020640CC
+FUN_020640CC: ; 0x020640CC
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x4]
+ ldr r0, [r0, #0x6c]
+ sub r0, r0, #0x2
+ cmp r0, #0x1
+ bhi _020640DE
+ mov r0, #0x1
+ pop {r4, pc}
+_020640DE:
+ ldr r0, [r4, #0x0]
+ bl FUN_020348E4
+ cmp r0, #0x0
+ bne _020640EC
+ mov r0, #0x1
+ pop {r4, pc}
+_020640EC:
+ ldr r0, [r4, #0x4]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205ED3C
+ cmp r0, #0x1
+ bne _02064100
+ mov r0, #0x3
+ pop {r4, pc}
+_02064100:
+ ldr r0, [r4, #0x4]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205F214
+ cmp r0, #0x1
+ beq _02064120
+ ldr r0, [r4, #0x4]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205F244
+ cmp r0, #0x1
+ bne _02064124
+_02064120:
+ mov r0, #0x1
+ b _02064126
+_02064124:
+ mov r0, #0x0
+_02064126:
+ cmp r0, #0x1
+ bne _0206412E
+ mov r0, #0x1
+ pop {r4, pc}
+_0206412E:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02064134
+FUN_02064134: ; 0x02064134
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_02046528
+ add r6, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_0204649C
+ ldrh r1, [r5, #0x4]
+ ldr r2, [r6, #0xc]
+ mov r0, #0xb
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl FUN_0206439C
+ mov r1, #0x72
+ ldr r2, _02064170 ; =FUN_02064174
+ lsl r1, r1, #0x2
+ str r2, [r4, r1]
+ add r1, #0x30
+ str r0, [r4, r1]
+ mov r0, #0xa
+ strh r0, [r4, #0x2a]
+ pop {r4-r6, pc}
+ nop
+_02064170: .word FUN_02064174
+
+ thumb_func_start FUN_02064174
+FUN_02064174: ; 0x02064174
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl FUN_02046528
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x0]
+ add r0, r6, #0x0
+ mov r2, #0x4
+ bl FUN_0224CB30
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ ldr r1, _020641A8 ; =0x0224CB55
+ add r0, r5, #0x0
+ add r2, r6, #0x0
+ bl FUN_020463EC
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ nop
+_020641A8: .word 0x0224CB55
+
+ thumb_func_start FUN_020641AC
+FUN_020641AC: ; 0x020641AC
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x4]
+ ldr r0, [r0, #0x6c]
+ sub r0, r0, #0x2
+ cmp r0, #0x1
+ bhi _020641BE
+ mov r0, #0x1
+ pop {r4, pc}
+_020641BE:
+ ldr r0, [r4, #0x0]
+ bl FUN_02034930
+ cmp r0, #0x1
+ bne _020641D2
+ ldr r0, [r4, #0x0]
+ bl FUN_0203487C
+ cmp r0, #0x1
+ beq _020641D6
+_020641D2:
+ mov r0, #0x1
+ pop {r4, pc}
+_020641D6:
+ ldr r0, [r4, #0x4]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205ED3C
+ cmp r0, #0x1
+ bne _020641EA
+ mov r0, #0x3
+ pop {r4, pc}
+_020641EA:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020641F0
+FUN_020641F0: ; 0x020641F0
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_02046528
+ add r6, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_0204649C
+ ldrh r1, [r5, #0x4]
+ ldr r2, [r6, #0xc]
+ mov r0, #0xb
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl FUN_0206439C
+ mov r1, #0x72
+ ldr r2, _0206422C ; =FUN_02064230
+ lsl r1, r1, #0x2
+ str r2, [r4, r1]
+ add r1, #0x30
+ str r0, [r4, r1]
+ mov r0, #0xa
+ strh r0, [r4, #0x2a]
+ pop {r4-r6, pc}
+ nop
+_0206422C: .word FUN_02064230
+
+ thumb_func_start FUN_02064230
+FUN_02064230: ; 0x02064230
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ bl FUN_02046528
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0204652C
+ add r6, r0, #0x0
+ ldr r1, [r6, #0x0]
+ add r0, r4, #0x0
+ mov r2, #0xb
+ bl FUN_0224CA88
+ ldr r1, [r4, #0x1c]
+ add r7, r0, #0x0
+ ldr r1, [r1, #0x0]
+ mov r0, #0xa
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ mov r2, #0x4
+ bl FUN_0202914C
+ add r4, #0x98
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ mov r2, #0x1
+ bl FUN_02028AD4
+ add r0, r6, #0x0
+ bl FUN_02016A18
+ ldr r1, _02064280 ; =0x0224CAAD
+ add r0, r5, #0x0
+ add r2, r7, #0x0
+ bl FUN_020463EC
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ nop
+_02064280: .word 0x0224CAAD
+
+ thumb_func_start FUN_02064284
+FUN_02064284: ; 0x02064284
+ push {r3, lr}
+ ldr r1, [r0, #0x4]
+ ldr r0, [r1, #0x6c]
+ sub r0, r0, #0x2
+ cmp r0, #0x1
+ bhi _02064294
+ mov r0, #0x1
+ pop {r3, pc}
+_02064294:
+ ldr r0, [r1, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205F244
+ cmp r0, #0x1
+ bne _020642A6
+ mov r0, #0x1
+ b _020642A8
+_020642A6:
+ mov r0, #0x0
+_020642A8:
+ cmp r0, #0x1
+ bne _020642B0
+ mov r0, #0x1
+ pop {r3, pc}
+_020642B0:
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_020642B4
+FUN_020642B4: ; 0x020642B4
+ push {r4-r6, lr}
+ add r6, r0, #0x0
+ ldr r0, [r6, #0x0]
+ bl FUN_02046528
+ add r5, r0, #0x0
+ ldr r0, [r6, #0x0]
+ bl FUN_0204652C
+ ldrh r1, [r6, #0x4]
+ add r4, r0, #0x0
+ ldr r2, [r5, #0xc]
+ lsl r1, r1, #0x18
+ mov r0, #0xb
+ lsr r1, r1, #0x18
+ bl FUN_0206439C
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0204649C
+ mov r0, #0x72
+ ldr r1, _0206430C ; =0x021F6361
+ lsl r0, r0, #0x2
+ str r1, [r4, r0]
+ add r0, #0x30
+ str r6, [r4, r0]
+ mov r0, #0xa
+ strh r0, [r4, #0x2a]
+ ldr r1, [r5, #0x1c]
+ mov r0, #0xb
+ ldr r1, [r1, #0x0]
+ add r2, r0, #0x0
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ bl FUN_0202914C
+ add r5, #0x98
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x0]
+ mov r2, #0x1
+ bl FUN_02028AD4
+ pop {r4-r6, pc}
+ .balign 4
+_0206430C: .word 0x021F6361
+
+ thumb_func_start FUN_02064310
+FUN_02064310: ; 0x02064310
+ ldr r0, [r0, #0x4]
+ ldr r0, [r0, #0x6c]
+ sub r0, r0, #0x2
+ cmp r0, #0x1
+ bhi _0206431E
+ mov r0, #0x1
+ bx lr
+_0206431E:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02064324
+FUN_02064324: ; 0x02064324
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ add r6, r1, #0x0
+ bl FUN_02046528
+ add r7, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02063A5C
+ add r5, r0, #0x0
+ add r0, r7, #0x0
+ bl FUN_0204649C
+ mov r0, #0x72
+ ldr r1, _0206435C ; =FUN_02064360
+ lsl r0, r0, #0x2
+ str r1, [r4, r0]
+ add r0, #0x30
+ str r5, [r4, r0]
+ mov r0, #0xa
+ strh r0, [r4, #0x2a]
+ pop {r3-r7, pc}
+ .balign 4
+_0206435C: .word FUN_02064360
+
+ thumb_func_start FUN_02064360
+FUN_02064360: ; 0x02064360
+ push {r3-r6, lr}
+ sub sp, #0x4
+ add r5, r0, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02046528
+ add r6, r0, #0x0
+ ldr r1, _02064398 ; =0x000022C4
+ add r0, r5, #0x0
+ mov r2, #0x0
+ bl FUN_02038D10
+ mov r2, #0x0
+ str r2, [sp, #0x0]
+ ldrh r1, [r4, #0xc]
+ add r0, r6, #0x0
+ add r3, r2, #0x0
+ bl FUN_020395BC
+ add r0, r4, #0x0
+ bl FUN_02063A80
+ mov r0, #0x0
+ add sp, #0x4
+ pop {r3-r6, pc}
+ .balign 4
+_02064398: .word 0x000022C4
+
+ thumb_func_start FUN_0206439C
+FUN_0206439C: ; 0x0206439C
+ push {r4-r6, lr}
+ add r5, r1, #0x0
+ add r6, r2, #0x0
+ mov r1, #0x8
+ bl FUN_020169D8
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_0206BB1C
+ add r1, r5, #0x0
+ bl FUN_0206B9B0
+ str r0, [r4, #0x0]
+ mov r0, #0x0
+ str r0, [r4, #0x4]
+ add r0, r4, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_020643C0
+FUN_020643C0: ; 0x020643C0
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ bl FUN_020645DC
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_0206460C
+ str r0, [r4, #0xc]
+ str r6, [r4, #0x0]
+ str r5, [r4, #0x8]
+ add r0, r4, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_020643E0
+FUN_020643E0: ; 0x020643E0
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02064630
+ add r0, r4, #0x0
+ bl FUN_02064600
+ pop {r4, pc}
+
+ thumb_func_start FUN_020643F0
+FUN_020643F0: ; 0x020643F0
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02064558
+ add r0, r4, #0x0
+ bl FUN_020643E0
+ pop {r4, pc}
+
+ thumb_func_start FUN_02064400
+FUN_02064400: ; 0x02064400
+ push {r4-r7, lr}
+ sub sp, #0xc
+ str r0, [sp, #0x0]
+ add r7, r1, #0x0
+ str r2, [sp, #0x4]
+ str r3, [sp, #0x8]
+ mov r4, #0x0
+ bl FUN_02064698
+ add r6, r0, #0x0
+ ldr r0, [sp, #0x0]
+ bl FUN_0206469C
+ add r5, r0, #0x0
+_0206441C:
+ add r0, r5, #0x0
+ bl FUN_020646A0
+ cmp r0, #0x0
+ beq _0206442E
+ add r4, r4, #0x1
+ add r5, #0xc8
+ cmp r4, r6
+ blt _0206441C
+_0206442E:
+ cmp r4, r6
+ blt _02064438
+ add sp, #0xc
+ mov r0, #0x0
+ pop {r4-r7, pc}
+_02064438:
+ add r0, r5, #0x0
+ bl FUN_020646AC
+ ldr r1, [sp, #0x8]
+ add r0, r5, #0x0
+ bl FUN_02064750
+ ldr r1, [sp, #0x20]
+ add r0, r5, #0x0
+ bl FUN_02064758
+ ldr r1, [sp, #0x0]
+ add r0, r5, #0x0
+ bl FUN_02064768
+ ldr r1, [sp, #0x4]
+ add r0, r5, #0x0
+ bl FUN_0206476C
+ ldr r1, [r7, #0x0]
+ add r0, r5, #0x0
+ bl FUN_0206473C
+ ldr r1, [r7, #0x4]
+ add r0, r5, #0x0
+ bl FUN_020646B8
+ ldr r1, [r7, #0x8]
+ add r0, r5, #0x0
+ bl FUN_0206470C
+ ldr r1, [r7, #0xc]
+ add r0, r5, #0x0
+ bl FUN_020646D4
+ ldr r1, [r7, #0x10]
+ add r0, r5, #0x0
+ bl FUN_020646F0
+ ldr r1, [r7, #0x14]
+ add r0, r5, #0x0
+ bl FUN_02064728
+ ldr r1, [r7, #0x18]
+ add r0, r5, #0x0
+ bl FUN_02064730
+ ldr r1, [sp, #0x24]
+ add r0, r5, #0x0
+ bl FUN_020645B0
+ add r4, r0, #0x0
+ bne _020644AE
+ add r0, r5, #0x0
+ bl FUN_02064640
+ add sp, #0xc
+ mov r0, #0x0
+ pop {r4-r7, pc}
+_020644AE:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02064760
+ add r0, r5, #0x0
+ bl FUN_020646C0
+ cmp r0, #0x0
+ bne _020644D2
+ add r0, r4, #0x0
+ bl FUN_0200CAB4
+ add r0, r5, #0x0
+ bl FUN_02064640
+ add sp, #0xc
+ mov r0, #0x0
+ pop {r4-r7, pc}
+_020644D2:
+ ldr r0, [sp, #0x0]
+ ldr r0, [r0, #0x4]
+ add r1, r0, #0x1
+ ldr r0, [sp, #0x0]
+ str r1, [r0, #0x4]
+ add r0, r5, #0x0
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020644E4
+FUN_020644E4: ; 0x020644E4
+ push {r4-r7, lr}
+ sub sp, #0x24
+ add r5, r1, #0x0
+ add r6, r0, #0x0
+ add r4, sp, #0x8
+ ldmia r5!, {r0-r1}
+ add r7, r4, #0x0
+ stmia r4!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r4!, {r0-r1}
+ ldr r0, [r5, #0x0]
+ add r1, r7, #0x0
+ str r0, [r4, #0x0]
+ ldr r0, _02064518 ; =FUN_0206479C
+ str r0, [sp, #0x1c]
+ ldr r0, _0206451C ; =FUN_020647A0
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x38]
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x3c]
+ str r0, [sp, #0x4]
+ add r0, r6, #0x0
+ bl FUN_02064400
+ add sp, #0x24
+ pop {r4-r7, pc}
+ .balign 4
+_02064518: .word FUN_0206479C
+_0206451C: .word FUN_020647A0
+
+ thumb_func_start FUN_02064520
+FUN_02064520: ; 0x02064520
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _0206452A
+ bl ErrorHandling
+_0206452A:
+ add r0, r4, #0x0
+ bl FUN_020646A0
+ cmp r0, #0x0
+ beq _02064556
+ add r0, r4, #0x0
+ bl FUN_02064714
+ ldr r1, [r4, #0x14]
+ ldr r0, [r1, #0x4]
+ sub r0, r0, #0x1
+ str r0, [r1, #0x4]
+ add r0, r4, #0x0
+ bl FUN_02064764
+ cmp r0, #0x0
+ beq _02064550
+ bl FUN_0200CAB4
+_02064550:
+ add r0, r4, #0x0
+ bl FUN_02064640
+_02064556:
+ pop {r4, pc}
+
+ thumb_func_start FUN_02064558
+FUN_02064558: ; 0x02064558
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_02064698
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0206469C
+ add r5, r0, #0x0
+_0206456A:
+ add r0, r5, #0x0
+ bl FUN_020646A0
+ cmp r0, #0x1
+ bne _0206457A
+ add r0, r5, #0x0
+ bl FUN_02064520
+_0206457A:
+ add r5, #0xc8
+ sub r4, r4, #0x1
+ bne _0206456A
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02064584
+FUN_02064584: ; 0x02064584
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_02064698
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0206469C
+ add r5, r0, #0x0
+_02064596:
+ add r0, r5, #0x0
+ bl FUN_020646A0
+ cmp r0, #0x1
+ bne _020645A6
+ add r0, r5, #0x0
+ bl FUN_020646F8
+_020645A6:
+ add r5, #0xc8
+ sub r4, r4, #0x1
+ bne _02064596
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020645B0
+FUN_020645B0: ; 0x020645B0
+ push {r4, lr}
+ add r3, r0, #0x0
+ add r2, r1, #0x0
+ ldr r0, _020645CC ; =FUN_020645D0
+ add r1, r3, #0x0
+ bl FUN_0200CA44
+ add r4, r0, #0x0
+ bne _020645C6
+ bl ErrorHandling
+_020645C6:
+ add r0, r4, #0x0
+ pop {r4, pc}
+ nop
+_020645CC: .word FUN_020645D0
+
+ thumb_func_start FUN_020645D0
+FUN_020645D0: ; 0x020645D0
+ ldr r3, _020645D8 ; =FUN_020646DC
+ add r0, r1, #0x0
+ bx r3
+ nop
+_020645D8: .word FUN_020646DC
+
+ thumb_func_start FUN_020645DC
+FUN_020645DC: ; 0x020645DC
+ push {r4, lr}
+ mov r1, #0x10
+ bl FUN_02016998
+ add r4, r0, #0x0
+ bne _020645EC
+ bl ErrorHandling
+_020645EC:
+ add r2, r4, #0x0
+ mov r1, #0x10
+ mov r0, #0x0
+_020645F2:
+ strb r0, [r2, #0x0]
+ add r2, r2, #0x1
+ sub r1, r1, #0x1
+ bne _020645F2
+ add r0, r4, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02064600
+FUN_02064600: ; 0x02064600
+ ldr r3, _02064608 ; =FUN_02016A8C
+ add r1, r0, #0x0
+ ldr r0, [r1, #0x8]
+ bx r3
+ .balign 4
+_02064608: .word FUN_02016A8C
+
+ thumb_func_start FUN_0206460C
+FUN_0206460C: ; 0x0206460C
+ push {r3-r5, lr}
+ mov r2, #0xc8
+ add r5, r1, #0x0
+ mul r5, r2
+ add r1, r5, #0x0
+ bl FUN_02016998
+ add r4, r0, #0x0
+ bne _02064622
+ bl ErrorHandling
+_02064622:
+ add r0, r4, #0x0
+ mov r1, #0x0
+ add r2, r5, #0x0
+ blx FUN_020DF4A4
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02064630
+FUN_02064630: ; 0x02064630
+ ldr r3, _0206463C ; =FUN_02016A8C
+ add r1, r0, #0x0
+ ldr r0, [r1, #0x8]
+ ldr r1, [r1, #0xc]
+ bx r3
+ nop
+_0206463C: .word FUN_02016A8C
+
+ thumb_func_start FUN_02064640
+FUN_02064640: ; 0x02064640
+ push {r4, lr}
+ mov r1, #0x0
+ mov r2, #0xc8
+ add r4, r0, #0x0
+ blx FUN_020DF4A4
+ ldr r1, _02064680 ; =FUN_0206478C
+ add r0, r4, #0x0
+ bl FUN_020646B8
+ ldr r1, _02064684 ; =FUN_02064798
+ add r0, r4, #0x0
+ bl FUN_0206470C
+ ldr r1, _02064688 ; =FUN_02064790
+ add r0, r4, #0x0
+ bl FUN_020646D4
+ ldr r1, _0206468C ; =FUN_02064794
+ add r0, r4, #0x0
+ bl FUN_020646F0
+ ldr r1, _02064690 ; =FUN_0206479C
+ add r0, r4, #0x0
+ bl FUN_02064728
+ ldr r1, _02064694 ; =FUN_020647A0
+ add r0, r4, #0x0
+ bl FUN_02064730
+ pop {r4, pc}
+ nop
+_02064680: .word FUN_0206478C
+_02064684: .word FUN_02064798
+_02064688: .word FUN_02064790
+_0206468C: .word FUN_02064794
+_02064690: .word FUN_0206479C
+_02064694: .word FUN_020647A0
+
+ thumb_func_start FUN_02064698
+FUN_02064698: ; 0x02064698
+ ldr r0, [r0, #0x0]
+ bx lr
+
+ thumb_func_start FUN_0206469C
+FUN_0206469C: ; 0x0206469C
+ ldr r0, [r0, #0xc]
+ bx lr
+
+ thumb_func_start FUN_020646A0
+FUN_020646A0: ; 0x020646A0
+ ldr r1, [r0, #0x0]
+ mov r0, #0x1
+ tst r1, r0
+ bne _020646AA
+ mov r0, #0x0
+_020646AA:
+ bx lr
+
+ thumb_func_start FUN_020646AC
+FUN_020646AC: ; 0x020646AC
+ ldr r2, [r0, #0x0]
+ mov r1, #0x1
+ orr r1, r2
+ str r1, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020646B8
+FUN_020646B8: ; 0x020646B8
+ add r0, #0xb0
+ str r1, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020646C0
+FUN_020646C0: ; 0x020646C0
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02064738
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r4, #0xb0
+ ldr r2, [r4, #0x0]
+ blx r2
+ pop {r4, pc}
+
+ thumb_func_start FUN_020646D4
+FUN_020646D4: ; 0x020646D4
+ add r0, #0xb4
+ str r1, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020646DC
+FUN_020646DC: ; 0x020646DC
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02064738
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r4, #0xb4
+ ldr r2, [r4, #0x0]
+ blx r2
+ pop {r4, pc}
+
+ thumb_func_start FUN_020646F0
+FUN_020646F0: ; 0x020646F0
+ add r0, #0xb8
+ str r1, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020646F8
+FUN_020646F8: ; 0x020646F8
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02064738
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r4, #0xb8
+ ldr r2, [r4, #0x0]
+ blx r2
+ pop {r4, pc}
+
+ thumb_func_start FUN_0206470C
+FUN_0206470C: ; 0x0206470C
+ add r0, #0xbc
+ str r1, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02064714
+FUN_02064714: ; 0x02064714
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02064738
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r4, #0xbc
+ ldr r2, [r4, #0x0]
+ blx r2
+ pop {r4, pc}
+
+ thumb_func_start FUN_02064728
+FUN_02064728: ; 0x02064728
+ add r0, #0xc0
+ str r1, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02064730
+FUN_02064730: ; 0x02064730
+ add r0, #0xc4
+ str r1, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02064738
+FUN_02064738: ; 0x02064738
+ add r0, #0x30
+ bx lr
+
+ thumb_func_start FUN_0206473C
+FUN_0206473C: ; 0x0206473C
+ push {r4, lr}
+ add r4, r1, #0x0
+ bl FUN_02064738
+ mov r1, #0x0
+ add r2, r4, #0x0
+ blx FUN_020DF4A4
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02064750
+FUN_02064750: ; 0x02064750
+ str r1, [r0, #0x4]
+ bx lr
+
+ thumb_func_start FUN_02064754
+FUN_02064754: ; 0x02064754
+ ldr r0, [r0, #0x4]
+ bx lr
+
+ thumb_func_start FUN_02064758
+FUN_02064758: ; 0x02064758
+ str r1, [r0, #0xc]
+ bx lr
+
+ thumb_func_start FUN_0206475C
+FUN_0206475C: ; 0x0206475C
+ ldr r0, [r0, #0xc]
+ bx lr
+
+ thumb_func_start FUN_02064760
+FUN_02064760: ; 0x02064760
+ str r1, [r0, #0x10]
+ bx lr
+
+ thumb_func_start FUN_02064764
+FUN_02064764: ; 0x02064764
+ ldr r0, [r0, #0x10]
+ bx lr
+
+ thumb_func_start FUN_02064768
+FUN_02064768: ; 0x02064768
+ str r1, [r0, #0x14]
+ bx lr
+
+ thumb_func_start FUN_0206476C
+FUN_0206476C: ; 0x0206476C
+ add r3, r1, #0x0
+ add r2, r0, #0x0
+ ldmia r3!, {r0-r1}
+ add r2, #0x24
+ stmia r2!, {r0-r1}
+ ldr r0, [r3, #0x0]
+ str r0, [r2, #0x0]
+ bx lr
+
+ thumb_func_start FUN_0206477C
+FUN_0206477C: ; 0x0206477C
+ add r2, r0, #0x0
+ add r2, #0x24
+ add r3, r1, #0x0
+ ldmia r2!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldr r0, [r2, #0x0]
+ str r0, [r3, #0x0]
+ bx lr
+
+ thumb_func_start FUN_0206478C
+FUN_0206478C: ; 0x0206478C
+ mov r0, #0x1
+ bx lr
+
+ thumb_func_start FUN_02064790
+FUN_02064790: ; 0x02064790
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02064794
+FUN_02064794: ; 0x02064794
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02064798
+FUN_02064798: ; 0x02064798
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0206479C
+FUN_0206479C: ; 0x0206479C
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020647A0
+FUN_020647A0: ; 0x020647A0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020647A4
+FUN_020647A4: ; 0x020647A4
+ push {r3-r7, lr}
+ sub sp, #0x30
+ add r4, r0, #0x0
+ bl FUN_020377AC
+ bl FUN_02024ED8
+ mov r1, #0x7
+ bl FUN_020254A0
+ ldrh r1, [r0, #0x2]
+ ldrh r0, [r0, #0x0]
+ ldr r3, _0206485C ; =0x020F7D70
+ mov r7, #0x18
+ add r2, r1, #0x0
+ mul r2, r7
+ add r6, r3, r2
+ lsl r0, r0, #0x2
+ ldr r5, [r6, r0]
+ ldr r0, [r6, #0x14]
+ cmp r0, #0x0
+ beq _0206480A
+ ldr r3, _02064860 ; =0x020F7D64
+ add r2, sp, #0x24
+ ldmia r3!, {r0-r1}
+ mov r12, r2
+ stmia r2!, {r0-r1}
+ ldr r0, [r3, #0x0]
+ add r7, #0xea
+ str r0, [r2, #0x0]
+ str r5, [sp, #0x28]
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x4c]
+ add r2, r7, #0x0
+ str r0, [sp, #0x4]
+ add r0, r4, #0x0
+ add r0, #0xa0
+ ldr r0, [r0, #0x0]
+ ldr r1, [r4, #0x2c]
+ mov r3, r12
+ bl FUN_021E7FBC
+ add r0, r4, #0x0
+ add r0, #0xa0
+ ldr r0, [r0, #0x0]
+ ldr r1, _02064864 ; =0x00000102
+ bl FUN_021E7ED8
+ str r0, [sp, #0x14]
+ b _0206482C
+_0206480A:
+ ldr r0, _02064868 ; =0x020F7D4C
+ add r1, sp, #0xc
+ ldr r2, [r0, #0x8]
+ ldr r0, [r0, #0xc]
+ str r2, [sp, #0xc]
+ str r0, [sp, #0x10]
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ mov r2, #0x2
+ add r3, sp, #0x14
+ bl FUN_0204AA5C
+ cmp r0, #0x0
+ bne _0206482C
+ bl ErrorHandling
+_0206482C:
+ ldr r1, [sp, #0x14]
+ add r0, sp, #0x18
+ bl FUN_021E7EA0
+ ldr r0, [sp, #0x14]
+ add r1, sp, #0x18
+ str r5, [sp, #0x1c]
+ bl FUN_021E7EB0
+ mov r0, #0x2
+ str r0, [sp, #0x0]
+ str r5, [sp, #0x4]
+ add r4, #0x9c
+ ldr r0, [r4, #0x0]
+ mov r3, #0x3
+ str r0, [sp, #0x8]
+ ldr r1, [r6, #0x8]
+ ldr r2, [r6, #0xc]
+ mov r0, #0x0
+ bl FUN_021F44D8
+ add sp, #0x30
+ pop {r3-r7, pc}
+ nop
+_0206485C: .word 0x020F7D70
+_02064860: .word 0x020F7D64
+_02064864: .word 0x00000102
+_02064868: .word 0x020F7D4C
+
+ thumb_func_start FUN_0206486C
+FUN_0206486C: ; 0x0206486C
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl FUN_020377AC
+ bl FUN_02024ED8
+ add r5, r0, #0x0
+ mov r1, #0x7
+ bl FUN_02025490
+ add r0, r5, #0x0
+ mov r1, #0x7
+ bl FUN_020254A0
+ mov r3, #0x1
+ str r3, [r0, #0x4]
+ mov r2, #0x0
+ str r2, [r0, #0x8]
+ ldr r4, [r4, #0x1c]
+ ldr r5, _020649A8 ; =0x00000123
+ ldr r1, [r4, #0x0]
+ cmp r1, r5
+ bgt _020648C4
+ bge _020648D6
+ add r5, r1, #0x0
+ sub r5, #0xb0
+ cmp r5, #0x9
+ bhi _020649A0
+ add r5, r5, r5
+ add r5, pc
+ ldrh r5, [r5, #0x6]
+ lsl r5, r5, #0x10
+ asr r5, r5, #0x10
+ add pc, r5
+_020648B0: ; jump table (using 16-bit offset)
+ .short _02064910 - _020648B0 - 2; case 0
+ .short _020649A0 - _020648B0 - 2; case 1
+ .short _02064928 - _020648B0 - 2; case 2
+ .short _020649A0 - _020648B0 - 2; case 3
+ .short _02064940 - _020648B0 - 2; case 4
+ .short _020649A0 - _020648B0 - 2; case 5
+ .short _02064958 - _020648B0 - 2; case 6
+ .short _020649A0 - _020648B0 - 2; case 7
+ .short _02064970 - _020648B0 - 2; case 8
+ .short _02064988 - _020648B0 - 2; case 9
+_020648C4:
+ ldr r2, _020649AC ; =0x00000125
+ cmp r1, r2
+ bgt _020648CE
+ beq _020648E8
+ b _020649A0
+_020648CE:
+ add r2, r2, #0x1
+ cmp r1, r2
+ beq _020648FC
+ b _020649A0
+_020648D6:
+ ldr r1, [r4, #0xc]
+ cmp r1, #0x1a
+ bne _020648E0
+ strh r2, [r0, #0x0]
+ b _020648E2
+_020648E0:
+ strh r3, [r0, #0x0]
+_020648E2:
+ mov r1, #0x0
+ strh r1, [r0, #0x2]
+ pop {r3-r5, pc}
+_020648E8:
+ ldr r1, [r4, #0xc]
+ cmp r1, #0x30
+ bne _020648F2
+ mov r1, #0x0
+ b _020648F4
+_020648F2:
+ mov r1, #0x1
+_020648F4:
+ strh r1, [r0, #0x0]
+ mov r1, #0x1
+ strh r1, [r0, #0x2]
+ pop {r3-r5, pc}
+_020648FC:
+ ldr r1, [r4, #0xc]
+ cmp r1, #0xf
+ bne _02064906
+ mov r1, #0x0
+ b _02064908
+_02064906:
+ mov r1, #0x1
+_02064908:
+ strh r1, [r0, #0x0]
+ mov r1, #0x2
+ strh r1, [r0, #0x2]
+ pop {r3-r5, pc}
+_02064910:
+ ldr r1, [r4, #0xc]
+ cmp r1, #0xf
+ bne _0206491A
+ strh r2, [r0, #0x0]
+ b _0206491E
+_0206491A:
+ strh r3, [r0, #0x0]
+ str r2, [r0, #0x4]
+_0206491E:
+ mov r1, #0x3
+ strh r1, [r0, #0x2]
+ mov r1, #0x1
+ str r1, [r0, #0x8]
+ pop {r3-r5, pc}
+_02064928:
+ ldr r1, [r4, #0xc]
+ cmp r1, #0xf
+ bne _02064932
+ strh r2, [r0, #0x0]
+ b _02064936
+_02064932:
+ strh r3, [r0, #0x0]
+ str r2, [r0, #0x4]
+_02064936:
+ mov r1, #0x4
+ strh r1, [r0, #0x2]
+ mov r1, #0x1
+ str r1, [r0, #0x8]
+ pop {r3-r5, pc}
+_02064940:
+ ldr r1, [r4, #0xc]
+ cmp r1, #0xf
+ bne _0206494A
+ strh r2, [r0, #0x0]
+ b _0206494E
+_0206494A:
+ strh r3, [r0, #0x0]
+ str r2, [r0, #0x4]
+_0206494E:
+ mov r1, #0x5
+ strh r1, [r0, #0x2]
+ mov r1, #0x1
+ str r1, [r0, #0x8]
+ pop {r3-r5, pc}
+_02064958:
+ ldr r1, [r4, #0xc]
+ cmp r1, #0xf
+ bne _02064962
+ strh r2, [r0, #0x0]
+ b _02064966
+_02064962:
+ strh r3, [r0, #0x0]
+ str r2, [r0, #0x4]
+_02064966:
+ mov r1, #0x6
+ strh r1, [r0, #0x2]
+ mov r1, #0x1
+ str r1, [r0, #0x8]
+ pop {r3-r5, pc}
+_02064970:
+ ldr r1, [r4, #0xc]
+ cmp r1, #0x17
+ bne _0206497A
+ strh r2, [r0, #0x0]
+ b _0206497E
+_0206497A:
+ strh r3, [r0, #0x0]
+ str r2, [r0, #0x4]
+_0206497E:
+ mov r1, #0x7
+ strh r1, [r0, #0x2]
+ mov r1, #0x1
+ str r1, [r0, #0x8]
+ pop {r3-r5, pc}
+_02064988:
+ ldr r1, [r4, #0xc]
+ cmp r1, #0x12
+ bne _02064992
+ strh r2, [r0, #0x0]
+ b _02064996
+_02064992:
+ strh r3, [r0, #0x0]
+ str r2, [r0, #0x4]
+_02064996:
+ mov r1, #0x8
+ strh r1, [r0, #0x2]
+ mov r1, #0x1
+ str r1, [r0, #0x8]
+ pop {r3-r5, pc}
+_020649A0:
+ bl ErrorHandling
+ pop {r3-r5, pc}
+ nop
+_020649A8: .word 0x00000123
+_020649AC: .word 0x00000125
+
+ thumb_func_start FUN_020649B0
+FUN_020649B0: ; 0x020649B0
+ push {r3, lr}
+ bl FUN_020377AC
+ bl FUN_02024ED8
+ mov r1, #0x7
+ bl FUN_020254A0
+ ldr r0, [r0, #0x4]
+ cmp r0, #0x0
+ beq _020649CA
+ mov r0, #0x1
+ b _020649CC
+_020649CA:
+ mov r0, #0x0
+_020649CC:
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_020649D4
+FUN_020649D4: ; 0x020649D4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_020377AC
+ bl FUN_02024ED8
+ mov r1, #0x7
+ bl FUN_020254A0
+ add r4, r0, #0x0
+ ldrh r1, [r4, #0x2]
+ mov r0, #0x18
+ add r2, r1, #0x0
+ mul r2, r0
+ ldr r0, _02064A58 ; =0x020F7D80
+ ldr r0, [r0, r2]
+ cmp r0, #0x0
+ beq _020649FE
+ ldrh r0, [r4, #0x0]
+ cmp r0, #0x1
+ beq _02064A54
+_020649FE:
+ mov r0, #0xb
+ mov r1, #0x10
+ bl FUN_020169D8
+ add r2, r0, #0x0
+ mov r0, #0x0
+ str r0, [r2, #0x0]
+ ldrh r1, [r4, #0x2]
+ mov r0, #0x18
+ add r3, r1, #0x0
+ ldr r1, _02064A5C ; =0x020F7D84
+ mul r3, r0
+ ldr r1, [r1, r3]
+ str r1, [r2, #0x8]
+ ldr r1, [r4, #0x8]
+ str r1, [r2, #0xc]
+ ldrh r1, [r4, #0x0]
+ cmp r1, #0x0
+ ldrh r1, [r4, #0x2]
+ bne _02064A3E
+ add r3, r1, #0x0
+ mul r3, r0
+ ldr r0, _02064A60 ; =0x020F7D74
+ ldr r1, _02064A64 ; =FUN_02064A70
+ ldr r0, [r0, r3]
+ str r0, [r2, #0x4]
+ ldr r0, [r5, #0x10]
+ bl FUN_0204640C
+ mov r0, #0x1
+ strh r0, [r4, #0x0]
+ pop {r3-r5, pc}
+_02064A3E:
+ add r3, r1, #0x0
+ mul r3, r0
+ ldr r0, _02064A68 ; =0x020F7D70
+ ldr r1, _02064A6C ; =FUN_02064B70
+ ldr r0, [r0, r3]
+ str r0, [r2, #0x4]
+ ldr r0, [r5, #0x10]
+ bl FUN_0204640C
+ mov r0, #0x0
+ strh r0, [r4, #0x0]
+_02064A54:
+ pop {r3-r5, pc}
+ nop
+_02064A58: .word 0x020F7D80
+_02064A5C: .word 0x020F7D84
+_02064A60: .word 0x020F7D74
+_02064A64: .word FUN_02064A70
+_02064A68: .word 0x020F7D70
+_02064A6C: .word FUN_02064B70
+
+ thumb_func_start FUN_02064A70
+FUN_02064A70: ; 0x02064A70
+ push {r4-r5, lr}
+ sub sp, #0x1c
+ add r4, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x0]
+ cmp r1, #0x3
+ bhi _02064B5C
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02064A96: ; jump table (using 16-bit offset)
+ .short _02064A9E - _02064A96 - 2; case 0
+ .short _02064AB4 - _02064A96 - 2; case 1
+ .short _02064B2E - _02064A96 - 2; case 2
+ .short _02064B52 - _02064A96 - 2; case 3
+_02064A9E:
+ ldr r0, [r5, #0x38]
+ mov r1, #0x0
+ bl FUN_02055560
+ ldr r0, [r4, #0xc]
+ bl FUN_02064C64
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02064B5C
+_02064AB4:
+ ldr r0, [r4, #0x8]
+ cmp r0, #0x0
+ beq _02064ACA
+ add r0, r5, #0x0
+ add r0, #0xa0
+ ldr r0, [r0, #0x0]
+ ldr r1, _02064B64 ; =0x00000102
+ bl FUN_021E7ED8
+ str r0, [sp, #0xc]
+ b _02064AEC
+_02064ACA:
+ ldr r0, _02064B68 ; =0x020F7D4C
+ add r1, sp, #0x4
+ ldr r2, [r0, #0x0]
+ ldr r0, [r0, #0x4]
+ str r2, [sp, #0x4]
+ str r0, [sp, #0x8]
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ mov r2, #0x2
+ add r3, sp, #0xc
+ bl FUN_0204AA5C
+ cmp r0, #0x0
+ bne _02064AEC
+ bl ErrorHandling
+_02064AEC:
+ ldr r1, [sp, #0xc]
+ add r0, sp, #0x10
+ bl FUN_021E7EA0
+ ldr r0, [r4, #0xc]
+ cmp r0, #0x0
+ bne _02064AFE
+ mov r1, #0x1
+ b _02064B00
+_02064AFE:
+ mov r1, #0x2
+_02064B00:
+ ldr r0, [sp, #0x14]
+ lsl r1, r1, #0xc
+ add r1, r0, r1
+ str r1, [sp, #0x14]
+ ldr r0, [r4, #0x4]
+ cmp r1, r0
+ blt _02064B1C
+ str r0, [sp, #0x14]
+ ldr r0, [r4, #0xc]
+ bl FUN_02064C84
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+_02064B1C:
+ ldr r0, [r5, #0x38]
+ ldr r1, [sp, #0x14]
+ bl FUN_02055540
+ ldr r0, [sp, #0xc]
+ add r1, sp, #0x10
+ bl FUN_021E7EB0
+ b _02064B5C
+_02064B2E:
+ add r2, r5, #0x0
+ add r2, #0x9c
+ ldr r1, [r4, #0x4]
+ ldr r2, [r2, #0x0]
+ mov r0, #0x0
+ bl FUN_021F4594
+ ldr r0, [r5, #0x38]
+ mov r1, #0x1
+ bl FUN_0205557C
+ ldr r0, _02064B6C ; =0x0000061A
+ bl FUN_020054C8
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02064B5C
+_02064B52:
+ bl FUN_02016A18
+ add sp, #0x1c
+ mov r0, #0x1
+ pop {r4-r5, pc}
+_02064B5C:
+ mov r0, #0x0
+ add sp, #0x1c
+ pop {r4-r5, pc}
+ nop
+_02064B64: .word 0x00000102
+_02064B68: .word 0x020F7D4C
+_02064B6C: .word 0x0000061A
+
+ thumb_func_start FUN_02064B70
+FUN_02064B70: ; 0x02064B70
+ push {r4-r5, lr}
+ sub sp, #0x1c
+ add r4, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x0]
+ cmp r1, #0x3
+ bhi _02064C52
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02064B96: ; jump table (using 16-bit offset)
+ .short _02064B9E - _02064B96 - 2; case 0
+ .short _02064BB4 - _02064B96 - 2; case 1
+ .short _02064C24 - _02064B96 - 2; case 2
+ .short _02064C48 - _02064B96 - 2; case 3
+_02064B9E:
+ ldr r0, [r5, #0x38]
+ mov r1, #0x0
+ bl FUN_02055560
+ ldr r0, [r4, #0xc]
+ bl FUN_02064C64
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02064C52
+_02064BB4:
+ ldr r0, [r4, #0x8]
+ cmp r0, #0x0
+ beq _02064BCA
+ add r0, r5, #0x0
+ add r0, #0xa0
+ ldr r0, [r0, #0x0]
+ ldr r1, _02064C58 ; =0x00000102
+ bl FUN_021E7ED8
+ str r0, [sp, #0xc]
+ b _02064BEC
+_02064BCA:
+ ldr r0, _02064C5C ; =0x020F7D4C
+ add r1, sp, #0x4
+ ldr r2, [r0, #0x10]
+ ldr r0, [r0, #0x14]
+ str r2, [sp, #0x4]
+ str r0, [sp, #0x8]
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ mov r2, #0x2
+ add r3, sp, #0xc
+ bl FUN_0204AA5C
+ cmp r0, #0x0
+ bne _02064BEC
+ bl ErrorHandling
+_02064BEC:
+ ldr r1, [sp, #0xc]
+ add r0, sp, #0x10
+ bl FUN_021E7EA0
+ mov r0, #0x1
+ ldr r1, [sp, #0x14]
+ lsl r0, r0, #0xc
+ sub r1, r1, r0
+ str r1, [sp, #0x14]
+ ldr r0, [r4, #0x4]
+ cmp r1, r0
+ bgt _02064C12
+ str r0, [sp, #0x14]
+ ldr r0, [r4, #0xc]
+ bl FUN_02064C84
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+_02064C12:
+ ldr r0, [r5, #0x38]
+ ldr r1, [sp, #0x14]
+ bl FUN_02055540
+ ldr r0, [sp, #0xc]
+ add r1, sp, #0x10
+ bl FUN_021E7EB0
+ b _02064C52
+_02064C24:
+ add r2, r5, #0x0
+ add r2, #0x9c
+ ldr r1, [r4, #0x4]
+ ldr r2, [r2, #0x0]
+ mov r0, #0x0
+ bl FUN_021F4594
+ ldr r0, [r5, #0x38]
+ mov r1, #0x1
+ bl FUN_0205557C
+ ldr r0, _02064C60 ; =0x0000061A
+ bl FUN_020054C8
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _02064C52
+_02064C48:
+ bl FUN_02016A18
+ add sp, #0x1c
+ mov r0, #0x1
+ pop {r4-r5, pc}
+_02064C52:
+ mov r0, #0x0
+ add sp, #0x1c
+ pop {r4-r5, pc}
+ .balign 4
+_02064C58: .word 0x00000102
+_02064C5C: .word 0x020F7D4C
+_02064C60: .word 0x0000061A
+
+ thumb_func_start FUN_02064C64
+FUN_02064C64: ; 0x02064C64
+ push {r3, lr}
+ cmp r0, #0x0
+ bne _02064C72
+ ldr r0, _02064C7C ; =0x00000611
+ bl FUN_020054C8
+ pop {r3, pc}
+_02064C72:
+ ldr r0, _02064C80 ; =0x00000614
+ bl FUN_020054C8
+ pop {r3, pc}
+ nop
+_02064C7C: .word 0x00000611
+_02064C80: .word 0x00000614
+
+ thumb_func_start FUN_02064C84
+FUN_02064C84: ; 0x02064C84
+ push {r3, lr}
+ cmp r0, #0x0
+ bne _02064C94
+ ldr r0, _02064CA0 ; =0x00000611
+ mov r1, #0x0
+ bl FUN_020054F0
+ pop {r3, pc}
+_02064C94:
+ ldr r0, _02064CA4 ; =0x00000614
+ mov r1, #0x0
+ bl FUN_020054F0
+ pop {r3, pc}
+ nop
+_02064CA0: .word 0x00000611
+_02064CA4: .word 0x00000614
+
+ thumb_func_start FUN_02064CA8
+FUN_02064CA8: ; 0x02064CA8
+ push {r4, lr}
+ bl FUN_020377AC
+ bl FUN_02024ED8
+ add r4, r0, #0x0
+ mov r1, #0x1
+ bl FUN_02025490
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_020254A0
+ mov r1, #0x1
+ strb r1, [r0, #0x0]
+ pop {r4, pc}
+
+ thumb_func_start FUN_02064CC8
+FUN_02064CC8: ; 0x02064CC8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_020377AC
+ bl FUN_02024ED8
+ add r4, r0, #0x0
+ mov r1, #0x2
+ bl FUN_02025490
+ add r0, r4, #0x0
+ mov r1, #0x2
+ bl FUN_020254A0
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x1c]
+ ldr r0, [r0, #0xc]
+ cmp r0, #0x16
+ bne _02064D08
+ ldr r0, [r5, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205ECEC
+ cmp r0, #0x0
+ beq _02064D02
+ mov r0, #0x0
+ strb r0, [r4, #0x0]
+ pop {r3-r5, pc}
+_02064D02:
+ mov r0, #0x1
+ strb r0, [r4, #0x0]
+ pop {r3-r5, pc}
+_02064D08:
+ mov r0, #0x1
+ strb r0, [r4, #0x0]
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02064D10
+FUN_02064D10: ; 0x02064D10
+ push {r4-r6, lr}
+ bl FUN_020377AC
+ bl FUN_02024ED8
+ add r4, r0, #0x0
+ mov r1, #0x3
+ bl FUN_02025490
+ add r0, r4, #0x0
+ mov r1, #0x3
+ bl FUN_020254A0
+ ldr r5, _02064D48 ; =0x020F7E54
+ add r6, r0, #0x0
+ mov r4, #0x0
+_02064D30:
+ ldrb r1, [r5, #0x0]
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ add r2, r6, #0x0
+ bl FUN_02064DEC
+ add r4, r4, #0x1
+ add r5, r5, #0x1
+ cmp r4, #0x18
+ blt _02064D30
+ pop {r4-r6, pc}
+ nop
+_02064D48: .word 0x020F7E54
+
+ thumb_func_start FUN_02064D4C
+FUN_02064D4C: ; 0x02064D4C
+ push {r4-r6, lr}
+ bl FUN_020377AC
+ bl FUN_02024ED8
+ add r4, r0, #0x0
+ mov r1, #0x4
+ bl FUN_02025490
+ add r0, r4, #0x0
+ mov r1, #0x4
+ bl FUN_020254A0
+ ldr r5, _02064D84 ; =0x020F7E48
+ add r6, r0, #0x0
+ mov r4, #0x0
+_02064D6C:
+ ldrb r1, [r5, #0x0]
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ add r2, r6, #0x0
+ bl FUN_02064DEC
+ add r4, r4, #0x1
+ add r5, r5, #0x1
+ cmp r4, #0xc
+ blt _02064D6C
+ pop {r4-r6, pc}
+ nop
+_02064D84: .word 0x020F7E48
+
+ thumb_func_start FUN_02064D88
+FUN_02064D88: ; 0x02064D88
+ push {r3-r7, lr}
+ add r5, r1, #0x0
+ add r7, r0, #0x0
+ cmp r5, #0x3
+ blo _02064D96
+ bl ErrorHandling
+_02064D96:
+ add r0, r7, #0x0
+ bl FUN_020377AC
+ bl FUN_02024ED8
+ add r4, r0, #0x0
+ mov r1, #0x5
+ bl FUN_02025490
+ add r0, r4, #0x0
+ mov r1, #0x5
+ bl FUN_020254A0
+ add r4, r0, #0x0
+ str r5, [r4, #0x4]
+ cmp r5, #0x0
+ beq _02064DC2
+ cmp r5, #0x1
+ beq _02064DCA
+ cmp r5, #0x2
+ beq _02064DD2
+ b _02064DDA
+_02064DC2:
+ mov r0, #0x2
+ str r0, [r4, #0x0]
+ mov r6, #0xe
+ b _02064DDE
+_02064DCA:
+ mov r0, #0x1
+ str r0, [r4, #0x0]
+ mov r6, #0x15
+ b _02064DDE
+_02064DD2:
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+ mov r6, #0x19
+ b _02064DDE
+_02064DDA:
+ bl ErrorHandling
+_02064DDE:
+ ldr r0, [r7, #0x1c]
+ ldr r0, [r0, #0xc]
+ cmp r0, r6
+ bne _02064DEA
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+_02064DEA:
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02064DEC
+FUN_02064DEC: ; 0x02064DEC
+ push {r4-r6, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ cmp r4, #0x1
+ bls _02064DFC
+ bl ErrorHandling
+_02064DFC:
+ mov r0, #0x0
+ mvn r0, r0
+ mov r1, #0x20
+ ldr r2, [r6, #0x0]
+ sub r1, r1, r5
+ add r3, r0, #0x0
+ lsr r3, r1
+ add r1, r2, #0x0
+ and r1, r3
+ add r3, r5, #0x1
+ lsl r0, r3
+ and r2, r0
+ add r0, r4, #0x0
+ lsl r0, r5
+ orr r0, r2
+ orr r0, r1
+ str r0, [r6, #0x0]
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02064E20
+FUN_02064E20: ; 0x02064E20
+ push {r4, lr}
+ bl FUN_020377AC
+ bl FUN_02024ED8
+ add r4, r0, #0x0
+ bl FUN_020254B4
+ cmp r0, #0x6
+ beq _02064E48
+ add r0, r4, #0x0
+ mov r1, #0x6
+ bl FUN_02025490
+ add r0, r4, #0x0
+ mov r1, #0x6
+ bl FUN_020254A0
+ mov r1, #0x2
+ strh r1, [r0, #0x0]
+_02064E48:
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02064E4C
+FUN_02064E4C: ; 0x02064E4C
+ push {r4, lr}
+ add r4, r2, #0x0
+ bl FUN_0200A8E0
+ mov r0, #0x0
+ add r1, r4, #0x0
+ add r2, r0, #0x0
+ bl FUN_02002E14
+ pop {r4, pc}
+
+ thumb_func_start FUN_02064E60
+FUN_02064E60: ; 0x02064E60
+ push {r4-r6, lr}
+ add r6, r2, #0x0
+ add r5, r0, #0x0
+ add r3, r1, #0x0
+ ldr r2, _02064E8C ; =0x0000017E
+ mov r0, #0x1
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02034824
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_02064E4C
+ add r0, r4, #0x0
+ bl FUN_0200A8B8
+ pop {r4-r6, pc}
+ .balign 4
+_02064E8C: .word 0x0000017E
+
+ thumb_func_start FUN_02064E90
+FUN_02064E90: ; 0x02064E90
+ push {r3-r7, lr}
+ sub sp, #0xa0
+ str r0, [sp, #0x10]
+ ldr r6, [sp, #0xb8]
+ str r1, [sp, #0x14]
+ str r2, [sp, #0x18]
+ add r0, r6, #0x0
+ str r3, [sp, #0x1c]
+ ldr r5, [sp, #0xbc]
+ bl FUN_020377AC
+ str r0, [sp, #0x20]
+ bl FUN_020238F4
+ add r7, r0, #0x0
+ ldr r0, [sp, #0x20]
+ bl FUN_02029FC8
+ add r4, r0, #0x0
+ ldr r0, [sp, #0x1c]
+ strb r0, [r5, #0x5]
+ add r0, r6, #0x0
+ bl FUN_02065078
+ str r0, [sp, #0x24]
+ add r0, r7, #0x0
+ bl FUN_02023A70
+ str r0, [sp, #0x0]
+ str r5, [sp, #0x4]
+ ldr r0, [sp, #0x10]
+ ldr r2, [sp, #0x24]
+ ldr r3, [sp, #0x18]
+ mov r1, #0xa
+ bl FUN_02065154
+ add r0, r7, #0x0
+ bl FUN_020239C0
+ str r0, [sp, #0x28]
+ add r0, r7, #0x0
+ bl FUN_020239CC
+ str r0, [sp, #0x2c]
+ add r0, r7, #0x0
+ bl FUN_0202398C
+ str r0, [sp, #0x30]
+ add r0, r7, #0x0
+ bl FUN_02023A10
+ str r0, [sp, #0x34]
+ ldr r0, [r6, #0xc]
+ bl FUN_02024DA0
+ bl FUN_02024440
+ str r0, [sp, #0x38]
+ ldr r0, [r6, #0xc]
+ bl FUN_02024DA0
+ bl FUN_02024D64
+ str r0, [sp, #0x3c]
+ add r0, r4, #0x0
+ bl FUN_0202A1B8
+ ldr r1, [sp, #0x38]
+ ldr r2, [sp, #0x30]
+ str r1, [sp, #0x0]
+ ldr r1, [sp, #0x3c]
+ ldr r3, [sp, #0x34]
+ str r1, [sp, #0x4]
+ str r0, [sp, #0x8]
+ ldr r1, [sp, #0x2c]
+ ldr r0, [sp, #0x28]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ str r5, [sp, #0xc]
+ bl FUN_02065178
+ ldr r0, [sp, #0x20]
+ bl FUN_02023918
+ str r0, [sp, #0x40]
+ add r0, r6, #0x0
+ add r1, sp, #0x90
+ add r2, sp, #0x74
+ bl FUN_0204B2F0
+ add r0, r6, #0x0
+ add r1, sp, #0x80
+ add r2, sp, #0x74
+ bl FUN_0204B30C
+ ldr r0, [r6, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205ED0C
+ add r1, sp, #0x74
+ str r1, [sp, #0x0]
+ ldr r1, [sp, #0x14]
+ lsl r0, r0, #0x18
+ str r1, [sp, #0x4]
+ ldr r1, [sp, #0x40]
+ str r5, [sp, #0x8]
+ lsr r0, r0, #0x18
+ add r2, sp, #0x90
+ add r3, sp, #0x80
+ bl FUN_020651BC
+ ldr r0, [r6, #0xc]
+ bl FUN_02029ABC
+ str r0, [sp, #0x44]
+ add r0, r4, #0x0
+ mov r1, #0x20
+ bl FUN_0202A150
+ str r0, [sp, #0x48]
+ add r0, r4, #0x0
+ mov r1, #0x19
+ bl FUN_0202A150
+ str r0, [sp, #0x4c]
+ add r0, r4, #0x0
+ mov r1, #0x14
+ bl FUN_0202A150
+ str r0, [sp, #0x50]
+ add r0, r4, #0x0
+ mov r1, #0x18
+ bl FUN_0202A150
+ str r0, [sp, #0x54]
+ add r0, r4, #0x0
+ mov r1, #0x40
+ bl FUN_0202A150
+ str r0, [sp, #0x58]
+ add r0, r4, #0x0
+ mov r1, #0x13
+ bl FUN_0202A150
+ ldr r1, [sp, #0x58]
+ add r1, r1, r0
+ ldr r0, [sp, #0x54]
+ add r1, r0, r1
+ ldr r0, [sp, #0x50]
+ add r1, r0, r1
+ ldr r0, [sp, #0x4c]
+ add r0, r0, r1
+ str r0, [sp, #0x5c]
+ add r0, r4, #0x0
+ mov r1, #0x15
+ bl FUN_0202A150
+ str r0, [sp, #0x60]
+ add r0, r4, #0x0
+ mov r1, #0x1a
+ bl FUN_0202A150
+ str r0, [sp, #0x64]
+ add r0, r4, #0x0
+ mov r1, #0x16
+ bl FUN_0202A150
+ str r0, [sp, #0x68]
+ add r0, r4, #0x0
+ mov r1, #0x1b
+ bl FUN_0202A150
+ str r0, [sp, #0x6c]
+ add r0, r4, #0x0
+ mov r1, #0x13
+ bl FUN_0202A150
+ str r0, [sp, #0x70]
+ add r0, r4, #0x0
+ mov r1, #0x18
+ bl FUN_0202A150
+ add r4, r0, #0x0
+ ldr r0, [sp, #0x44]
+ bl FUN_02029AC8
+ str r0, [sp, #0x0]
+ ldr r1, [sp, #0x48]
+ ldr r0, [sp, #0x5c]
+ ldr r2, [sp, #0x60]
+ add r0, r1, r0
+ ldr r1, [sp, #0x64]
+ ldr r3, [sp, #0x68]
+ add r1, r2, r1
+ ldr r2, [sp, #0x6c]
+ str r5, [sp, #0x4]
+ add r2, r3, r2
+ ldr r3, [sp, #0x70]
+ add r3, r3, r4
+ bl FUN_02065260
+ add r0, r7, #0x0
+ add r1, r6, #0x0
+ add r2, r5, #0x0
+ bl FUN_020652AC
+ mov r3, #0x0
+ ldr r0, _0206504C ; =0x0000066C
+ add r2, r3, #0x0
+_02065034:
+ ldrb r1, [r5, r2]
+ add r2, r2, #0x1
+ eor r3, r1
+ cmp r2, r0
+ blo _02065034
+ ldr r0, _02065050 ; =0x00000668
+ mov r1, #0x0
+ strh r3, [r5, r0]
+ add r0, r0, #0x2
+ strh r1, [r5, r0]
+ add sp, #0xa0
+ pop {r3-r7, pc}
+ .balign 4
+_0206504C: .word 0x0000066C
+_02065050: .word 0x00000668
+
+ thumb_func_start FUN_02065054
+FUN_02065054: ; 0x02065054
+ push {r4, lr}
+ ldr r1, _0206506C ; =0x0000066C
+ bl FUN_02016998
+ ldr r2, _0206506C ; =0x0000066C
+ mov r1, #0x0
+ add r4, r0, #0x0
+ blx FUN_020DF4A4
+ add r0, r4, #0x0
+ pop {r4, pc}
+ nop
+_0206506C: .word 0x0000066C
+
+ thumb_func_start FUN_02065070
+FUN_02065070: ; 0x02065070
+ ldr r3, _02065074 ; =FUN_02016A18
+ bx r3
+ .balign 4
+_02065074: .word FUN_02016A18
+
+ thumb_func_start FUN_02065078
+FUN_02065078: ; 0x02065078
+ push {r3-r7, lr}
+ bl FUN_020377AC
+ add r7, r0, #0x0
+ bl FUN_02029FC8
+ add r6, r0, #0x0
+ add r0, r7, #0x0
+ bl FUN_020462AC
+ add r5, r0, #0x0
+ add r0, r7, #0x0
+ bl FUN_02026CB4
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ mov r4, #0x0
+ bl FUN_0205ED0C
+ cmp r0, #0x0
+ beq _020650A8
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+_020650A8:
+ add r0, r7, #0x0
+ bl FUN_02024DA0
+ bl FUN_020244EC
+ cmp r0, #0x0
+ beq _020650BC
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+_020650BC:
+ add r0, r6, #0x0
+ mov r1, #0x35
+ bl FUN_0202A150
+ cmp r0, #0x64
+ bhs _020650F8
+ add r0, r6, #0x0
+ mov r1, #0x37
+ bl FUN_0202A150
+ cmp r0, #0x64
+ bhs _020650F8
+ add r0, r6, #0x0
+ mov r1, #0x39
+ bl FUN_0202A150
+ cmp r0, #0x64
+ bhs _020650F8
+ add r0, r6, #0x0
+ mov r1, #0x3b
+ bl FUN_0202A150
+ cmp r0, #0x64
+ bhs _020650F8
+ add r0, r6, #0x0
+ mov r1, #0x3d
+ bl FUN_0202A150
+ cmp r0, #0x64
+ blo _020650FE
+_020650F8:
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+_020650FE:
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_0205EE60
+ cmp r0, #0x0
+ bne _0206513A
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_0205EE60
+ cmp r0, #0x0
+ bne _0206513A
+ add r0, r5, #0x0
+ mov r1, #0x3
+ bl FUN_0205EE60
+ cmp r0, #0x0
+ bne _0206513A
+ add r0, r5, #0x0
+ mov r1, #0x4
+ bl FUN_0205EE60
+ cmp r0, #0x0
+ bne _0206513A
+ add r0, r5, #0x0
+ mov r1, #0x2
+ bl FUN_0205EE60
+ cmp r0, #0x0
+ beq _02065140
+_0206513A:
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+_02065140:
+ ldr r0, [sp, #0x0]
+ bl FUN_020268D4
+ cmp r0, #0x1
+ bne _02065150
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+_02065150:
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02065154
+FUN_02065154: ; 0x02065154
+ push {r3-r6}
+ ldr r5, [sp, #0x14]
+ mov r6, #0x1
+ ldrb r4, [r5, #0x4]
+ bic r4, r6
+ mov r6, #0x1
+ and r0, r6
+ orr r0, r4
+ strb r0, [r5, #0x4]
+ strb r1, [r5, #0x0]
+ strb r2, [r5, #0x3]
+ add r0, sp, #0x0
+ ldrb r0, [r0, #0x10]
+ strb r0, [r5, #0x1]
+ strb r3, [r5, #0x2]
+ pop {r3-r6}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02065178
+FUN_02065178: ; 0x02065178
+ push {r4-r6, lr}
+ ldr r4, [sp, #0x1c]
+ add r6, r1, #0x0
+ strh r0, [r4, #0x28]
+ ldrb r0, [r4, #0x4]
+ add r1, r2, #0x0
+ mov r2, #0x4
+ bic r0, r2
+ lsl r2, r6, #0x1f
+ lsr r2, r2, #0x1d
+ orr r0, r2
+ strb r0, [r4, #0x4]
+ add r0, r4, #0x0
+ add r0, #0x8
+ mov r2, #0x8
+ add r5, r3, #0x0
+ bl StringCopyN
+ ldr r0, [sp, #0x10]
+ str r5, [r4, #0x1c]
+ str r0, [r4, #0x20]
+ ldrb r0, [r4, #0x4]
+ mov r1, #0x8
+ bic r0, r1
+ ldr r1, [sp, #0x14]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ lsl r1, r1, #0x1f
+ lsr r1, r1, #0x1c
+ orr r0, r1
+ strb r0, [r4, #0x4]
+ ldr r0, [sp, #0x18]
+ str r0, [r4, #0x24]
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_020651BC
+FUN_020651BC: ; 0x020651BC
+ push {r3-r7, lr}
+ sub sp, #0x8
+ ldr r4, [sp, #0x28]
+ str r0, [sp, #0x0]
+ str r1, [sp, #0x4]
+ add r0, r1, #0x0
+ add r5, r2, #0x0
+ add r6, r3, #0x0
+ ldr r7, [sp, #0x20]
+ bl FUN_02029EBC
+ strh r0, [r4, #0x2a]
+ ldr r0, [sp, #0x4]
+ bl FUN_02029EC0
+ add r1, r4, #0x0
+ add r1, #0x2e
+ strb r0, [r1, #0x0]
+ add r0, r4, #0x0
+ ldr r1, [r5, #0x0]
+ add r0, #0x2f
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ ldr r1, [r5, #0x4]
+ add r0, #0x30
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ ldr r1, [r5, #0x8]
+ add r0, #0x31
+ strb r1, [r0, #0x0]
+ ldr r0, [sp, #0x0]
+ cmp r0, #0x0
+ beq _0206521E
+ add r0, r4, #0x0
+ ldr r1, [r6, #0x0]
+ add r0, #0x32
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ ldr r1, [r6, #0x4]
+ add r0, #0x33
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ ldr r1, [r6, #0x8]
+ add r0, #0x34
+ strb r1, [r0, #0x0]
+ ldr r0, [r7, #0x0]
+ strh r0, [r4, #0x2c]
+ ldr r1, [r7, #0x4]
+ b _02065234
+_0206521E:
+ add r0, r4, #0x0
+ mov r1, #0x0
+ add r0, #0x32
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x33
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x34
+ strb r1, [r0, #0x0]
+ strh r1, [r4, #0x2c]
+_02065234:
+ add r0, r4, #0x0
+ add r0, #0x35
+ strb r1, [r0, #0x0]
+ ldrb r2, [r4, #0x4]
+ mov r0, #0x2
+ bic r2, r0
+ add r0, sp, #0x10
+ ldrb r0, [r0, #0x14]
+ lsl r1, r0, #0x1f
+ lsr r1, r1, #0x1e
+ orr r1, r2
+ strb r1, [r4, #0x4]
+ cmp r0, #0x0
+ beq _02065258
+ ldr r0, [sp, #0x4]
+ add sp, #0x8
+ str r0, [r4, #0x18]
+ pop {r3-r7, pc}
+_02065258:
+ mov r0, #0x0
+ str r0, [r4, #0x18]
+ add sp, #0x8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02065260
+FUN_02065260: ; 0x02065260
+ push {r3-r5, lr}
+ ldr r4, [sp, #0x14]
+ ldr r5, _020652A0 ; =0x000F423F
+ str r0, [r4, #0x38]
+ cmp r0, r5
+ bls _0206526E
+ str r5, [r4, #0x38]
+_0206526E:
+ str r1, [r4, #0x3c]
+ str r2, [r4, #0x40]
+ ldr r1, [r4, #0x3c]
+ ldr r0, _020652A4 ; =0x0000270F
+ cmp r1, r0
+ bls _0206527C
+ str r0, [r4, #0x3c]
+_0206527C:
+ ldr r1, [r4, #0x40]
+ ldr r0, _020652A4 ; =0x0000270F
+ cmp r1, r0
+ bls _02065286
+ str r0, [r4, #0x40]
+_02065286:
+ ldr r0, _020652A8 ; =0x0001869F
+ str r3, [r4, #0x44]
+ cmp r3, r0
+ bls _02065290
+ str r0, [r4, #0x44]
+_02065290:
+ add r4, #0x68
+ mov r2, #0x6
+ ldr r0, [sp, #0x10]
+ add r1, r4, #0x0
+ lsl r2, r2, #0x8
+ blx MI_CpuCopy8
+ pop {r3-r5, pc}
+ .balign 4
+_020652A0: .word 0x000F423F
+_020652A4: .word 0x0000270F
+_020652A8: .word 0x0001869F
+
+ thumb_func_start FUN_020652AC
+FUN_020652AC: ; 0x020652AC
+ push {r4-r7, lr}
+ sub sp, #0xc
+ str r0, [sp, #0x0]
+ ldr r0, [r1, #0xc]
+ add r5, r2, #0x0
+ bl FUN_02029ABC
+ bl FUN_02029ACC
+ str r0, [sp, #0x4]
+ mov r0, #0x1
+ mov r4, #0x0
+ add r5, #0x48
+ str r0, [sp, #0x8]
+ add r7, r0, #0x0
+_020652CA:
+ ldr r0, [sp, #0x0]
+ add r1, r4, #0x0
+ bl FUN_020239D0
+ cmp r0, #0x0
+ beq _020652E6
+ lsl r0, r4, #0x2
+ ldr r2, [r5, r0]
+ mov r1, #0x1
+ bic r2, r7
+ orr r1, r2
+ add r6, r5, r0
+ str r1, [r5, r0]
+ b _020652F2
+_020652E6:
+ lsl r2, r4, #0x2
+ ldr r1, [r5, r2]
+ ldr r0, [sp, #0x8]
+ add r6, r5, r2
+ bic r1, r0
+ str r1, [r5, r2]
+_020652F2:
+ ldr r1, [sp, #0x4]
+ add r0, r4, #0x0
+ bl FUN_02029AD0
+ ldr r2, [r6, #0x0]
+ mov r1, #0x1
+ and r1, r2
+ lsl r0, r0, #0x1
+ orr r0, r1
+ str r0, [r6, #0x0]
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0x8
+ blo _020652CA
+ add sp, #0xc
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_02065314
+FUN_02065314: ; 0x02065314
+ push {r4-r6, lr}
+ ldr r0, [r0, #0xc]
+ add r5, r1, #0x0
+ bl FUN_02029ABC
+ bl FUN_02029ACC
+ add r6, r0, #0x0
+ mov r4, #0x0
+_02065326:
+ lsl r1, r4, #0x2
+ add r1, r5, r1
+ ldr r1, [r1, #0x48]
+ add r0, r4, #0x0
+ asr r1, r1, #0x1
+ add r2, r6, #0x0
+ bl FUN_02029AD8
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0x8
+ blo _02065326
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02065344
+FUN_02065344: ; 0x02065344
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r0, #0xb
+ mov r1, #0x8
+ bl FUN_020169D8
+ add r4, r0, #0x0
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+ ldr r0, [r5, #0x78]
+ bl FUN_02052E38
+ str r0, [r4, #0x4]
+ ldr r0, [r5, #0x10]
+ ldr r1, _0206536C ; =FUN_02065370
+ add r2, r4, #0x0
+ bl FUN_0204640C
+ pop {r3-r5, pc}
+ nop
+_0206536C: .word FUN_02065370
+
+ thumb_func_start FUN_02065370
+FUN_02065370: ; 0x02065370
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_02046528
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0204652C
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ cmp r0, #0xa
+ bgt _0206539A
+ bge _020653BA
+ cmp r0, #0x1
+ bgt _020653E2
+ cmp r0, #0x0
+ blt _020653E2
+ beq _020653A0
+ cmp r0, #0x1
+ beq _020653AA
+ b _020653E2
+_0206539A:
+ cmp r0, #0xb
+ beq _020653C8
+ b _020653E2
+_020653A0:
+ ldr r0, [r4, #0x78]
+ bl FUN_02052ED0
+ mov r0, #0x1
+ str r0, [r5, #0x0]
+_020653AA:
+ ldr r1, [r5, #0x4]
+ ldr r0, _020653E8 ; =0x0000066A
+ ldrh r0, [r1, r0]
+ cmp r0, #0x0
+ beq _020653E2
+ mov r0, #0xa
+ str r0, [r5, #0x0]
+ b _020653E2
+_020653BA:
+ ldr r1, [r5, #0x4]
+ add r0, r4, #0x0
+ bl FUN_02038680
+ mov r0, #0xb
+ str r0, [r5, #0x0]
+ b _020653E2
+_020653C8:
+ add r0, r4, #0x0
+ bl FUN_0204647C
+ cmp r0, #0x0
+ bne _020653E2
+ ldr r0, [r4, #0x78]
+ bl FUN_02052EAC
+ add r0, r5, #0x0
+ bl FUN_02016A18
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_020653E2:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ nop
+_020653E8: .word 0x0000066A
+
+ thumb_func_start FUN_020653EC
+FUN_020653EC: ; 0x020653EC
+ push {r4-r6, lr}
+ mov r2, #0x5
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ mov r0, #0x3
+ mov r1, #0x2b
+ lsl r2, r2, #0xc
+ bl FUN_0201681C
+ mov r1, #0x6e
+ mov r0, #0x2b
+ lsl r1, r1, #0x2
+ bl FUN_02016998
+ mov r2, #0x6e
+ mov r1, #0x0
+ lsl r2, r2, #0x2
+ add r4, r0, #0x0
+ blx MI_CpuFill8
+ add r0, r5, #0x0
+ str r6, [r4, #0x4]
+ bl FUN_020377AC
+ mov r1, #0x5b
+ lsl r1, r1, #0x2
+ str r5, [r4, r1]
+ mov r1, #0x2b
+ str r1, [r4, #0x0]
+ mov r1, #0x0
+ strb r1, [r4, #0x19]
+ mov r1, #0xff
+ add r6, r0, #0x0
+ strb r1, [r4, #0x1a]
+ bl LoadPlayerDataAddress
+ bl FUN_02024FF4
+ strb r0, [r4, #0x16]
+ add r0, r6, #0x0
+ bl LoadPlayerDataAddress
+ bl FUN_02025084
+ strh r0, [r4, #0x14]
+ add r0, r4, #0x0
+ ldr r2, [r4, #0x0]
+ add r0, #0x1c
+ mov r1, #0x14
+ bl FUN_02066010
+ ldr r2, [r4, #0x0]
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ bl FUN_02066070
+ add r0, r4, #0x0
+ bl FUN_02066270
+ ldr r0, _02065470 ; =FUN_020654B0
+ add r1, r4, #0x0
+ mov r2, #0x0
+ bl FUN_0200CA44
+ str r0, [r4, #0x8]
+ pop {r4-r6, pc}
+ .balign 4
+_02065470: .word FUN_020654B0
+
+ thumb_func_start FUN_02065474
+FUN_02065474: ; 0x02065474
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x8]
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0x4]
+ mov r1, #0x1
+ str r1, [r0, #0x0]
+ add r0, r4, #0x0
+ bl FUN_020662E4
+ add r0, r4, #0x0
+ add r0, #0x1c
+ mov r1, #0x14
+ bl FUN_02066044
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ ldr r0, [r4, #0x0]
+ bl FUN_020168D0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020654A4
+FUN_020654A4: ; 0x020654A4
+ ldr r3, _020654AC ; =FUN_02065474
+ add r0, r1, #0x0
+ bx r3
+ nop
+_020654AC: .word FUN_02065474
+
+ thumb_func_start FUN_020654B0
+FUN_020654B0: ; 0x020654B0
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02066334
+ add r0, r4, #0x0
+ bl FUN_02065AF4
+ ldr r1, _020654CC ; =FUN_020654D0
+ add r0, r5, #0x0
+ bl FUN_0201B6C4
+ pop {r3-r5, pc}
+ .balign 4
+_020654CC: .word FUN_020654D0
+
+ thumb_func_start FUN_020654D0
+FUN_020654D0: ; 0x020654D0
+ push {r3-r5, lr}
+ mov r0, #0x16
+ add r5, r1, #0x0
+ lsl r0, r0, #0x4
+ ldr r0, [r5, r0]
+ bl FUN_02001204
+ add r4, r0, #0x0
+ mov r0, #0x69
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ cmp r0, #0x0
+ beq _020654EE
+ bl FUN_0205EC18
+_020654EE:
+ ldr r0, _02065544 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x2
+ tst r0, r1
+ beq _0206550A
+ ldr r1, _02065548 ; =FUN_02065658
+ ldr r2, _0206554C ; =FUN_020654A4
+ add r0, r5, #0x0
+ bl FUN_02065FE4
+ ldr r0, _02065550 ; =0x000005DC
+ bl FUN_020054C8
+ pop {r3-r5, pc}
+_0206550A:
+ mov r0, #0x1
+ tst r0, r1
+ beq _02065542
+ ldr r0, _02065550 ; =0x000005DC
+ bl FUN_020054C8
+ mov r1, #0x1
+ mvn r1, r1
+ cmp r4, r1
+ beq _0206552A
+ add r0, r1, #0x1
+ cmp r4, r0
+ beq _0206552A
+ lsr r0, r1, #0x10
+ cmp r4, r0
+ bne _02065536
+_0206552A:
+ ldr r1, _02065548 ; =FUN_02065658
+ ldr r2, _0206554C ; =FUN_020654A4
+ add r0, r5, #0x0
+ bl FUN_02065FE4
+ pop {r3-r5, pc}
+_02065536:
+ ldr r1, _02065548 ; =FUN_02065658
+ ldr r2, _02065554 ; =FUN_02065558
+ add r0, r5, #0x0
+ strb r4, [r5, #0x18]
+ bl FUN_02065FE4
+_02065542:
+ pop {r3-r5, pc}
+ .balign 4
+_02065544: .word 0x021C48B8
+_02065548: .word FUN_02065658
+_0206554C: .word FUN_020654A4
+_02065550: .word 0x000005DC
+_02065554: .word FUN_02065558
+
+ thumb_func_start FUN_02065558
+FUN_02065558: ; 0x02065558
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ ldrh r0, [r4, #0x10]
+ cmp r0, #0x0
+ beq _0206556A
+ cmp r0, #0x1
+ beq _02065592
+ pop {r3-r5, pc}
+_0206556A:
+ add r0, r4, #0x0
+ bl FUN_02066334
+ mov r1, #0x0
+ add r0, r4, #0x0
+ add r2, r1, #0x0
+ bl FUN_02065DD8
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ mov r1, #0x0
+ ldrb r2, [r4, #0x16]
+ add r0, r4, #0x0
+ add r3, r1, #0x0
+ bl FUN_02066404
+ ldrh r0, [r4, #0x10]
+ add r0, r0, #0x1
+ strh r0, [r4, #0x10]
+ pop {r3-r5, pc}
+_02065592:
+ add r0, r4, #0x0
+ bl FUN_020664F4
+ cmp r0, #0x0
+ beq _020655A8
+ ldr r1, _020655AC ; =FUN_020655B0
+ add r0, r5, #0x0
+ bl FUN_0201B6C4
+ mov r0, #0x0
+ strh r0, [r4, #0x10]
+_020655A8:
+ pop {r3-r5, pc}
+ nop
+_020655AC: .word FUN_020655B0
+
+ thumb_func_start FUN_020655B0
+FUN_020655B0: ; 0x020655B0
+ push {r4-r6, lr}
+ add r6, r0, #0x0
+ mov r0, #0x16
+ add r4, r1, #0x0
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ bl FUN_02001204
+ add r5, r0, #0x0
+ ldr r0, _02065638 ; =0x021C48B8
+ mov r1, #0x2
+ ldr r0, [r0, #0x48]
+ tst r1, r0
+ beq _020655DE
+ ldr r1, _0206563C ; =FUN_02065674
+ ldr r2, _02065640 ; =FUN_020654B0
+ add r0, r4, #0x0
+ bl FUN_02065FE4
+ ldr r0, _02065644 ; =0x000005DC
+ bl FUN_020054C8
+ pop {r4-r6, pc}
+_020655DE:
+ mov r1, #0x1
+ tst r0, r1
+ beq _02065634
+ ldr r0, _02065644 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r5, #0x2
+ cmp r0, #0x5
+ bhi _0206562C
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_020655FC: ; jump table (using 16-bit offset)
+ .short _02065608 - _020655FC - 2; case 0
+ .short _02065608 - _020655FC - 2; case 1
+ .short _0206562C - _020655FC - 2; case 2
+ .short _02065614 - _020655FC - 2; case 3
+ .short _02065620 - _020655FC - 2; case 4
+ .short _02065608 - _020655FC - 2; case 5
+_02065608:
+ ldr r1, _0206563C ; =FUN_02065674
+ ldr r2, _02065640 ; =FUN_020654B0
+ add r0, r4, #0x0
+ bl FUN_02065FE4
+ pop {r4-r6, pc}
+_02065614:
+ ldr r1, _02065648 ; =FUN_02065710
+ add r0, r4, #0x0
+ mov r2, #0x0
+ bl FUN_02065FE4
+ pop {r4-r6, pc}
+_02065620:
+ ldr r1, _0206564C ; =FUN_02065894
+ ldr r2, _02065650 ; =FUN_02065938
+ add r0, r4, #0x0
+ bl FUN_02065FE4
+ pop {r4-r6, pc}
+_0206562C:
+ ldr r1, _02065654 ; =FUN_02065690
+ add r0, r6, #0x0
+ bl FUN_0201B6C4
+_02065634:
+ pop {r4-r6, pc}
+ nop
+_02065638: .word 0x021C48B8
+_0206563C: .word FUN_02065674
+_02065640: .word FUN_020654B0
+_02065644: .word 0x000005DC
+_02065648: .word FUN_02065710
+_0206564C: .word FUN_02065894
+_02065650: .word FUN_02065938
+_02065654: .word FUN_02065690
+
+ thumb_func_start FUN_02065658
+FUN_02065658: ; 0x02065658
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02065EF8
+ add r0, r4, #0x0
+ bl FUN_020663D4
+ ldr r1, [r4, #0xc]
+ add r0, r5, #0x0
+ bl FUN_0201B6C4
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02065674
+FUN_02065674: ; 0x02065674
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02065F8C
+ add r0, r4, #0x0
+ bl FUN_020663D4
+ ldr r1, [r4, #0xc]
+ add r0, r5, #0x0
+ bl FUN_0201B6C4
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02065690
+FUN_02065690: ; 0x02065690
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ ldrh r0, [r4, #0x10]
+ cmp r0, #0x3
+ bhi _02065704
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_020656A8: ; jump table (using 16-bit offset)
+ .short _020656B0 - _020656A8 - 2; case 0
+ .short _020656C6 - _020656A8 - 2; case 1
+ .short _020656D2 - _020656A8 - 2; case 2
+ .short _020656DE - _020656A8 - 2; case 3
+_020656B0:
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_02066578
+ cmp r0, #0x0
+ beq _0206570A
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_02066634
+ b _02065704
+_020656C6:
+ add r0, r4, #0x0
+ bl FUN_02066728
+ cmp r0, #0x0
+ bne _02065704
+ pop {r3-r5, pc}
+_020656D2:
+ add r0, r4, #0x0
+ bl FUN_020665C0
+ cmp r0, #0x0
+ bne _02065704
+ pop {r3-r5, pc}
+_020656DE:
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_02066578
+ cmp r0, #0x0
+ beq _0206570A
+ add r0, r4, #0x0
+ bl FUN_02066334
+ add r0, r4, #0x0
+ bl FUN_02065AF4
+ mov r0, #0x0
+ strh r0, [r4, #0x10]
+ ldr r1, _0206570C ; =FUN_020654D0
+ add r0, r5, #0x0
+ bl FUN_0201B6C4
+ pop {r3-r5, pc}
+_02065704:
+ ldrh r0, [r4, #0x10]
+ add r0, r0, #0x1
+ strh r0, [r4, #0x10]
+_0206570A:
+ pop {r3-r5, pc}
+ .balign 4
+_0206570C: .word FUN_020654D0
+
+ thumb_func_start FUN_02065710
+FUN_02065710: ; 0x02065710
+ push {r3-r4, lr}
+ sub sp, #0x4
+ add r4, r1, #0x0
+ ldrh r0, [r4, #0x10]
+ cmp r0, #0x5
+ bhi _020657DA
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02065728: ; jump table (using 16-bit offset)
+ .short _02065734 - _02065728 - 2; case 0
+ .short _02065744 - _02065728 - 2; case 1
+ .short _02065756 - _02065728 - 2; case 2
+ .short _02065780 - _02065728 - 2; case 3
+ .short _02065798 - _02065728 - 2; case 4
+ .short _020657AA - _02065728 - 2; case 5
+_02065734:
+ mov r1, #0x1
+ str r1, [sp, #0x0]
+ ldrb r2, [r4, #0x16]
+ add r0, r4, #0x0
+ mov r3, #0x0
+ bl FUN_02066404
+ b _020657DA
+_02065744:
+ add r0, r4, #0x0
+ bl FUN_020664F4
+ cmp r0, #0x0
+ beq _020657E0
+ add r0, r4, #0x0
+ bl FUN_02066520
+ b _020657DA
+_02065756:
+ add r0, r4, #0x0
+ bl FUN_0206654C
+ cmp r0, #0x0
+ blt _020657E0
+ beq _02065778
+ mov r3, #0x0
+ str r3, [sp, #0x0]
+ ldrb r2, [r4, #0x16]
+ add r0, r4, #0x0
+ mov r1, #0x2
+ bl FUN_02066404
+ mov r0, #0x4
+ add sp, #0x4
+ strh r0, [r4, #0x10]
+ pop {r3-r4, pc}
+_02065778:
+ mov r0, #0x3
+ add sp, #0x4
+ strh r0, [r4, #0x10]
+ pop {r3-r4, pc}
+_02065780:
+ add r0, r4, #0x0
+ bl FUN_020664D8
+ ldr r1, _020657E4 ; =FUN_02065674
+ ldr r2, _020657E8 ; =FUN_020654B0
+ add r0, r4, #0x0
+ bl FUN_02065FE4
+ mov r0, #0x0
+ add sp, #0x4
+ strh r0, [r4, #0x10]
+ pop {r3-r4, pc}
+_02065798:
+ add r0, r4, #0x0
+ bl FUN_020664F4
+ cmp r0, #0x0
+ beq _020657E0
+ add r0, r4, #0x0
+ bl FUN_02066520
+ b _020657DA
+_020657AA:
+ add r0, r4, #0x0
+ bl FUN_0206654C
+ cmp r0, #0x0
+ blt _020657E0
+ beq _020657C2
+ ldr r1, _020657EC ; =FUN_020659B8
+ add r0, r4, #0x0
+ mov r2, #0x0
+ bl FUN_02065FE4
+ b _020657CC
+_020657C2:
+ ldr r1, _020657F0 ; =FUN_020657F4
+ ldr r2, _020657E4 ; =FUN_02065674
+ add r0, r4, #0x0
+ bl FUN_02065FE4
+_020657CC:
+ add r0, r4, #0x0
+ bl FUN_020664D8
+ mov r0, #0x0
+ add sp, #0x4
+ strh r0, [r4, #0x10]
+ pop {r3-r4, pc}
+_020657DA:
+ ldrh r0, [r4, #0x10]
+ add r0, r0, #0x1
+ strh r0, [r4, #0x10]
+_020657E0:
+ add sp, #0x4
+ pop {r3-r4, pc}
+ .balign 4
+_020657E4: .word FUN_02065674
+_020657E8: .word FUN_020654B0
+_020657EC: .word FUN_020659B8
+_020657F0: .word FUN_020657F4
+
+ thumb_func_start FUN_020657F4
+FUN_020657F4: ; 0x020657F4
+ push {r3-r4, lr}
+ sub sp, #0x4
+ add r4, r1, #0x0
+ ldrh r0, [r4, #0x10]
+ cmp r0, #0x0
+ beq _0206580A
+ cmp r0, #0x1
+ beq _0206584E
+ cmp r0, #0x2
+ beq _0206585C
+ b _0206587E
+_0206580A:
+ ldr r0, [r4, #0xc]
+ cmp r0, #0x0
+ bne _02065820
+ add r0, r4, #0x0
+ bl FUN_02066334
+ add r0, r4, #0x0
+ mov r1, #0x0
+ mov r2, #0x1
+ bl FUN_02065DD8
+_02065820:
+ add r0, r4, #0x0
+ bl FUN_020661A0
+ cmp r0, #0x0
+ beq _0206583C
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ ldrb r2, [r4, #0x16]
+ add r0, r4, #0x0
+ mov r1, #0x3
+ mov r3, #0x0
+ bl FUN_02066404
+ b _0206587E
+_0206583C:
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ ldrb r2, [r4, #0x16]
+ add r0, r4, #0x0
+ mov r1, #0x4
+ mov r3, #0x0
+ bl FUN_02066404
+ b _0206587E
+_0206584E:
+ add r0, r4, #0x0
+ bl FUN_020664F4
+ cmp r0, #0x0
+ bne _0206587E
+ add sp, #0x4
+ pop {r3-r4, pc}
+_0206585C:
+ ldr r0, _02065888 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x3
+ tst r0, r1
+ beq _02065884
+ add r0, r4, #0x0
+ bl FUN_020664D8
+ ldr r1, _0206588C ; =FUN_02065674
+ ldr r2, _02065890 ; =FUN_020654B0
+ add r0, r4, #0x0
+ bl FUN_02065FE4
+ mov r0, #0x0
+ add sp, #0x4
+ strh r0, [r4, #0x10]
+ pop {r3-r4, pc}
+_0206587E:
+ ldrh r0, [r4, #0x10]
+ add r0, r0, #0x1
+ strh r0, [r4, #0x10]
+_02065884:
+ add sp, #0x4
+ pop {r3-r4, pc}
+ .balign 4
+_02065888: .word 0x021C48B8
+_0206588C: .word FUN_02065674
+_02065890: .word FUN_020654B0
+
+ thumb_func_start FUN_02065894
+FUN_02065894: ; 0x02065894
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ ldrh r0, [r4, #0x10]
+ cmp r0, #0x3
+ bhi _0206592C
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_020658AA: ; jump table (using 16-bit offset)
+ .short _020658B2 - _020658AA - 2; case 0
+ .short _020658C8 - _020658AA - 2; case 1
+ .short _020658D6 - _020658AA - 2; case 2
+ .short _020658E2 - _020658AA - 2; case 3
+_020658B2:
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_02066578
+ cmp r0, #0x0
+ beq _02065932
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_02066634
+ b _0206592C
+_020658C8:
+ add r0, r4, #0x0
+ mov r1, #0xe
+ bl FUN_02066664
+ cmp r0, #0x0
+ bne _0206592C
+ pop {r3-r5, pc}
+_020658D6:
+ add r0, r4, #0x0
+ bl FUN_020665C0
+ cmp r0, #0x0
+ bne _0206592C
+ pop {r3-r5, pc}
+_020658E2:
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_02066578
+ cmp r0, #0x0
+ beq _02065932
+ mov r0, #0x6d
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ add r1, r0, #0x0
+ add r1, #0x22
+ ldrb r5, [r1, #0x0]
+ bl FUN_02016A18
+ cmp r5, #0x7
+ bne _02065912
+ ldr r1, [r4, #0xc]
+ add r0, r4, #0x0
+ mov r2, #0x0
+ bl FUN_02065FE4
+ mov r0, #0x0
+ strh r0, [r4, #0x10]
+ pop {r3-r5, pc}
+_02065912:
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ mov r2, #0x0
+ bl FUN_020661F8
+ ldr r1, _02065934 ; =FUN_020654B0
+ add r0, r4, #0x0
+ mov r2, #0x0
+ bl FUN_02065FE4
+ mov r0, #0x0
+ strh r0, [r4, #0x10]
+ pop {r3-r5, pc}
+_0206592C:
+ ldrh r0, [r4, #0x10]
+ add r0, r0, #0x1
+ strh r0, [r4, #0x10]
+_02065932:
+ pop {r3-r5, pc}
+ .balign 4
+_02065934: .word FUN_020654B0
+
+ thumb_func_start FUN_02065938
+FUN_02065938: ; 0x02065938
+ push {r3-r4, lr}
+ sub sp, #0x4
+ add r4, r1, #0x0
+ ldrh r0, [r4, #0x10]
+ cmp r0, #0x0
+ beq _0206594E
+ cmp r0, #0x1
+ beq _02065970
+ cmp r0, #0x2
+ beq _0206597E
+ b _020659A0
+_0206594E:
+ add r0, r4, #0x0
+ bl FUN_02066334
+ add r0, r4, #0x0
+ mov r1, #0x0
+ mov r2, #0x2
+ bl FUN_02065DD8
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ ldrb r2, [r4, #0x16]
+ add r0, r4, #0x0
+ mov r1, #0x5
+ mov r3, #0x0
+ bl FUN_02066404
+ b _020659A0
+_02065970:
+ add r0, r4, #0x0
+ bl FUN_020664F4
+ cmp r0, #0x0
+ bne _020659A0
+ add sp, #0x4
+ pop {r3-r4, pc}
+_0206597E:
+ ldr r0, _020659AC ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x3
+ tst r0, r1
+ beq _020659A6
+ add r0, r4, #0x0
+ bl FUN_020664D8
+ ldr r1, _020659B0 ; =FUN_02065674
+ ldr r2, _020659B4 ; =FUN_020654B0
+ add r0, r4, #0x0
+ bl FUN_02065FE4
+ mov r0, #0x0
+ add sp, #0x4
+ strh r0, [r4, #0x10]
+ pop {r3-r4, pc}
+_020659A0:
+ ldrh r0, [r4, #0x10]
+ add r0, r0, #0x1
+ strh r0, [r4, #0x10]
+_020659A6:
+ add sp, #0x4
+ pop {r3-r4, pc}
+ nop
+_020659AC: .word 0x021C48B8
+_020659B0: .word FUN_02065674
+_020659B4: .word FUN_020654B0
+
+ thumb_func_start FUN_020659B8
+FUN_020659B8: ; 0x020659B8
+ push {r4-r6, lr}
+ add r4, r1, #0x0
+ ldrh r0, [r4, #0x10]
+ cmp r0, #0x5
+ bls _020659C4
+ b _02065AE0
+_020659C4:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_020659D0: ; jump table (using 16-bit offset)
+ .short _020659DC - _020659D0 - 2; case 0
+ .short _02065A24 - _020659D0 - 2; case 1
+ .short _02065A68 - _020659D0 - 2; case 2
+ .short _02065A86 - _020659D0 - 2; case 3
+ .short _02065AB8 - _020659D0 - 2; case 4
+ .short _02065AC4 - _020659D0 - 2; case 5
+_020659DC:
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_02066578
+ cmp r0, #0x0
+ beq _02065AE6
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_02066634
+ mov r0, #0x1b
+ lsl r0, r0, #0x4
+ ldrb r2, [r4, #0x18]
+ mov r1, #0xc
+ ldr r0, [r4, r0]
+ mul r1, r2
+ add r1, r4, r1
+ ldrh r1, [r1, #0x22]
+ ldr r2, [r4, #0x0]
+ bl FUN_0206EEF8
+ cmp r0, #0x0
+ ldr r1, _02065AE8 ; =0x0000013B
+ beq _02065A1A
+ ldrb r2, [r4, r1]
+ mov r0, #0xc0
+ bic r2, r0
+ mov r0, #0x40
+ orr r0, r2
+ strb r0, [r4, r1]
+ b _02065AE0
+_02065A1A:
+ ldrb r2, [r4, r1]
+ mov r0, #0xc0
+ bic r2, r0
+ strb r2, [r4, r1]
+ b _02065AE0
+_02065A24:
+ add r0, r4, #0x0
+ mov r1, #0x9
+ bl FUN_02066664
+ cmp r0, #0x0
+ beq _02065AE6
+ mov r0, #0x6d
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ add r1, r0, #0x0
+ add r1, #0x22
+ ldrb r5, [r1, #0x0]
+ add r1, r0, #0x0
+ add r1, #0x23
+ ldrb r6, [r1, #0x0]
+ bl FUN_02016A18
+ cmp r6, #0x6
+ bne _02065A4E
+ cmp r5, #0x7
+ bne _02065A58
+_02065A4E:
+ ldr r0, _02065AEC ; =FUN_020657F4
+ str r0, [r4, #0xc]
+ mov r0, #0x4
+ strh r0, [r4, #0x10]
+ pop {r4-r6, pc}
+_02065A58:
+ strb r5, [r4, #0x17]
+ ldrb r1, [r4, #0x18]
+ mov r0, #0xc
+ mov r2, #0x0
+ mul r0, r1
+ add r0, r4, r0
+ strb r2, [r0, #0x1d]
+ b _02065AE0
+_02065A68:
+ add r0, r4, #0x0
+ bl FUN_02066728
+ cmp r0, #0x0
+ beq _02065AE6
+ cmp r0, #0x1
+ bne _02065A80
+ ldr r0, _02065AEC ; =FUN_020657F4
+ str r0, [r4, #0xc]
+ mov r0, #0x4
+ strh r0, [r4, #0x10]
+ pop {r4-r6, pc}
+_02065A80:
+ ldr r0, _02065AF0 ; =FUN_020654B0
+ str r0, [r4, #0xc]
+ b _02065AE0
+_02065A86:
+ add r0, r4, #0x0
+ mov r1, #0xb
+ bl FUN_02066664
+ cmp r0, #0x0
+ beq _02065AE6
+ mov r0, #0x6d
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ ldr r2, _02065AE8 ; =0x0000013B
+ ldrb r1, [r4, #0x17]
+ ldrb r2, [r4, r2]
+ add r0, r4, #0x0
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x1e
+ bl FUN_020661F8
+ ldr r1, _02065AE8 ; =0x0000013B
+ mov r0, #0xc0
+ ldrb r2, [r4, r1]
+ bic r2, r0
+ strb r2, [r4, r1]
+ b _02065AE0
+_02065AB8:
+ add r0, r4, #0x0
+ bl FUN_020665C0
+ cmp r0, #0x0
+ bne _02065AE0
+ pop {r4-r6, pc}
+_02065AC4:
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_02066578
+ cmp r0, #0x0
+ beq _02065AE6
+ ldr r1, [r4, #0xc]
+ add r0, r4, #0x0
+ mov r2, #0x0
+ bl FUN_02065FE4
+ mov r0, #0x0
+ strh r0, [r4, #0x10]
+ pop {r4-r6, pc}
+_02065AE0:
+ ldrh r0, [r4, #0x10]
+ add r0, r0, #0x1
+ strh r0, [r4, #0x10]
+_02065AE6:
+ pop {r4-r6, pc}
+ .balign 4
+_02065AE8: .word 0x0000013B
+_02065AEC: .word FUN_020657F4
+_02065AF0: .word FUN_020654B0
+
+ thumb_func_start FUN_02065AF4
+FUN_02065AF4: ; 0x02065AF4
+ push {r3-r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ mov r6, #0x0
+ bl FUN_0205EB38
+ mov r1, #0x69
+ lsl r1, r1, #0x2
+ str r0, [r5, r1]
+ ldr r0, [r5, r1]
+ mov r1, #0xc8
+ mov r2, #0xa
+ mov r3, #0x8a
+ bl FUN_0205EC48
+ mov r0, #0x69
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ add r1, r6, #0x0
+ mov r2, #0x1
+ bl FUN_0205EC6C
+ mov r0, #0x69
+ lsl r0, r0, #0x2
+ mov r1, #0x1
+ ldr r0, [r5, r0]
+ add r2, r1, #0x0
+ bl FUN_0205EC6C
+ mov r1, #0x17
+ lsl r1, r1, #0x4
+ ldr r0, [r5, r1]
+ add r1, r1, #0x4
+ ldr r2, _02065CD8 ; =0x020F7E7C
+ add r1, r5, r1
+ bl FUN_02019150
+ mov r1, #0x17
+ lsl r1, r1, #0x4
+ ldr r0, [r5, r1]
+ add r1, #0x24
+ ldr r2, _02065CDC ; =0x020F7E84
+ add r1, r5, r1
+ bl FUN_02019150
+ mov r0, #0x5d
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ mov r1, #0xff
+ bl FUN_02019620
+ mov r0, #0x65
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ mov r1, #0xff
+ bl FUN_02019620
+ ldrb r0, [r5, #0x1b]
+ ldr r1, [r5, #0x0]
+ add r0, r0, #0x1
+ bl FUN_02012838
+ mov r1, #0x59
+ lsl r1, r1, #0x2
+ add r7, r5, #0x0
+ str r0, [r5, r1]
+ add r4, r6, #0x0
+ add r7, #0x1c
+_02065B7E:
+ mov r0, #0xc
+ mul r0, r4
+ add r2, r7, r0
+ ldrb r0, [r2, #0x1]
+ cmp r0, #0x0
+ beq _02065B9E
+ mov r0, #0x59
+ lsl r0, r0, #0x2
+ ldr r1, [r2, #0x8]
+ ldrb r2, [r2, #0x0]
+ ldr r0, [r5, r0]
+ bl FUN_020128A0
+ add r0, r6, #0x1
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+_02065B9E:
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0x14
+ blo _02065B7E
+ mov r1, #0x59
+ lsl r1, r1, #0x2
+ ldr r0, [r5, r1]
+ sub r1, #0x4c
+ ldr r1, [r5, r1]
+ ldr r2, _02065CE0 ; =0x0000FFFF
+ bl FUN_020128A0
+ add r0, r6, #0x1
+ lsl r0, r0, #0x18
+ mov r1, #0x5
+ lsr r6, r0, #0x18
+ lsl r1, r1, #0x6
+ ldr r0, _02065CE4 ; =0x020F7E8C
+ add r1, r5, r1
+ mov r2, #0x20
+ blx MI_CpuCopy8
+ mov r1, #0x5d
+ lsl r1, r1, #0x2
+ add r0, r1, #0x0
+ add r2, r5, r1
+ sub r0, #0x28
+ str r2, [r5, r0]
+ add r0, r1, #0x0
+ sub r0, #0x10
+ ldr r2, [r5, r0]
+ add r0, r1, #0x0
+ sub r0, #0x34
+ str r2, [r5, r0]
+ add r0, r1, #0x0
+ sub r0, #0x18
+ str r5, [r5, r0]
+ add r0, r1, #0x0
+ sub r0, #0x24
+ strh r6, [r5, r0]
+ add r0, r1, #0x0
+ sub r0, #0x1d
+ ldrb r2, [r5, r0]
+ mov r0, #0xf
+ bic r2, r0
+ mov r0, #0x6
+ orr r2, r0
+ add r0, r1, #0x0
+ sub r0, #0x1d
+ strb r2, [r5, r0]
+ add r0, r1, #0x0
+ ldr r2, _02065CE8 ; =FUN_02065D4C
+ sub r0, #0x30
+ str r2, [r5, r0]
+ add r0, r1, #0x0
+ ldr r2, _02065CEC ; =FUN_02065CFC
+ sub r0, #0x2c
+ str r2, [r5, r0]
+ add r0, r1, #0x0
+ sub r0, #0x39
+ ldrb r0, [r5, r0]
+ lsl r0, r0, #0x1a
+ lsr r0, r0, #0x1e
+ beq _02065C64
+ add r0, r1, #0x0
+ sub r0, #0x38
+ ldrh r0, [r5, r0]
+ cmp r0, #0x0
+ bne _02065C48
+ add r0, r1, #0x0
+ sub r0, #0x36
+ ldrh r2, [r5, r0]
+ cmp r2, #0x0
+ beq _02065C5A
+ sub r0, r6, #0x1
+ cmp r2, r0
+ blt _02065C5A
+ add r0, r1, #0x0
+ sub r0, #0x36
+ ldrh r0, [r5, r0]
+ sub r1, #0x36
+ sub r0, r0, #0x1
+ strh r0, [r5, r1]
+ b _02065C5A
+_02065C48:
+ add r0, r0, #0x7
+ cmp r0, r6
+ blt _02065C5A
+ add r0, r1, #0x0
+ sub r0, #0x38
+ ldrh r0, [r5, r0]
+ sub r1, #0x38
+ sub r0, r0, #0x1
+ strh r0, [r5, r1]
+_02065C5A:
+ ldr r1, _02065CF0 ; =0x0000013B
+ mov r0, #0x30
+ ldrb r2, [r5, r1]
+ bic r2, r0
+ strb r2, [r5, r1]
+_02065C64:
+ mov r2, #0x5
+ lsl r2, r2, #0x6
+ sub r1, r2, #0x4
+ add r0, r5, r2
+ sub r2, r2, #0x2
+ ldr r3, [r5, #0x0]
+ ldrh r1, [r5, r1]
+ lsl r3, r3, #0x18
+ ldrh r2, [r5, r2]
+ lsr r3, r3, #0x18
+ bl FUN_020010A8
+ mov r1, #0x16
+ lsl r1, r1, #0x4
+ str r0, [r5, r1]
+ add r1, #0x14
+ add r0, r5, r1
+ ldr r2, _02065CF4 ; =0x000003D9
+ mov r1, #0x0
+ mov r3, #0xb
+ bl FUN_0200CCA4
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ mov r2, #0x65
+ ldr r0, _02065CF8 ; =0x0001020F
+ str r1, [sp, #0x4]
+ str r0, [sp, #0x8]
+ lsl r2, r2, #0x2
+ add r0, r5, r2
+ str r1, [sp, #0xc]
+ sub r2, #0x78
+ ldr r2, [r5, r2]
+ mov r3, #0x2
+ bl FUN_0201BDE0
+ mov r0, #0x65
+ lsl r0, r0, #0x2
+ ldr r2, _02065CF4 ; =0x000003D9
+ add r0, r5, r0
+ mov r1, #0x0
+ mov r3, #0xb
+ bl FUN_0200CCA4
+ mov r0, #0x17
+ lsl r0, r0, #0x4
+ ldr r0, [r5, r0]
+ mov r1, #0x3
+ bl FUN_0201AC68
+ ldr r1, _02065CF0 ; =0x0000013B
+ mov r0, #0xf
+ ldrb r2, [r5, r1]
+ bic r2, r0
+ strb r2, [r5, r1]
+ add sp, #0x10
+ pop {r3-r7, pc}
+ nop
+_02065CD8: .word 0x020F7E7C
+_02065CDC: .word 0x020F7E84
+_02065CE0: .word 0x0000FFFF
+_02065CE4: .word 0x020F7E8C
+_02065CE8: .word FUN_02065D4C
+_02065CEC: .word FUN_02065CFC
+_02065CF0: .word 0x0000013B
+_02065CF4: .word 0x000003D9
+_02065CF8: .word 0x0001020F
+
+ thumb_func_start FUN_02065CFC
+FUN_02065CFC: ; 0x02065CFC
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ mov r1, #0x13
+ add r5, r0, #0x0
+ bl FUN_02001470
+ ldr r1, _02065D48 ; =0x0000FFFF
+ cmp r4, r1
+ bne _02065D1C
+ add r0, r5, #0x0
+ mov r1, #0x1
+ mov r2, #0xf
+ mov r3, #0x2
+ bl FUN_020013E8
+ pop {r3-r5, pc}
+_02065D1C:
+ mov r1, #0xc
+ mul r1, r4
+ add r0, r0, r1
+ add r0, #0x20
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _02065D38
+ add r0, r5, #0x0
+ mov r1, #0x3
+ mov r2, #0xf
+ mov r3, #0x4
+ bl FUN_020013E8
+ pop {r3-r5, pc}
+_02065D38:
+ add r0, r5, #0x0
+ mov r1, #0x7
+ mov r2, #0xf
+ mov r3, #0x8
+ bl FUN_020013E8
+ pop {r3-r5, pc}
+ nop
+_02065D48: .word 0x0000FFFF
+
+ thumb_func_start FUN_02065D4C
+FUN_02065D4C: ; 0x02065D4C
+ push {r3-r6, lr}
+ sub sp, #0x4
+ mov r1, #0x13
+ add r4, r0, #0x0
+ add r6, r2, #0x0
+ bl FUN_02001470
+ add r1, sp, #0x0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ add r1, #0x2
+ add r2, sp, #0x0
+ bl FUN_02001448
+ add r0, r4, #0x0
+ mov r1, #0x2
+ bl FUN_02001470
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r6, #0x0
+ bne _02065D7E
+ ldr r0, _02065DD4 ; =0x000005DC
+ bl FUN_020054C8
+_02065D7E:
+ add r0, sp, #0x0
+ ldrh r0, [r0, #0x2]
+ cmp r0, #0x0
+ bne _02065D96
+ mov r0, #0x69
+ lsl r0, r0, #0x2
+ mov r1, #0x0
+ ldr r0, [r5, r0]
+ add r2, r1, #0x0
+ bl FUN_0205EC6C
+ b _02065DA4
+_02065D96:
+ mov r0, #0x69
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ mov r1, #0x0
+ mov r2, #0x1
+ bl FUN_0205EC6C
+_02065DA4:
+ add r0, sp, #0x0
+ ldrh r1, [r0, #0x2]
+ sub r0, r4, #0x7
+ cmp r1, r0
+ bge _02065DC0
+ mov r0, #0x69
+ lsl r0, r0, #0x2
+ mov r1, #0x1
+ ldr r0, [r5, r0]
+ add r2, r1, #0x0
+ bl FUN_0205EC6C
+ add sp, #0x4
+ pop {r3-r6, pc}
+_02065DC0:
+ mov r0, #0x69
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ mov r1, #0x1
+ mov r2, #0x0
+ bl FUN_0205EC6C
+ add sp, #0x4
+ pop {r3-r6, pc}
+ nop
+_02065DD4: .word 0x000005DC
+
+ thumb_func_start FUN_02065DD8
+FUN_02065DD8: ; 0x02065DD8
+ push {r3-r7, lr}
+ sub sp, #0x8
+ str r1, [sp, #0x0]
+ add r5, r0, #0x0
+ str r2, [sp, #0x4]
+ ldr r1, [r5, #0x0]
+ mov r0, #0x4
+ bl FUN_02012838
+ mov r1, #0x59
+ lsl r1, r1, #0x2
+ str r0, [r5, r1]
+ add r0, r1, #0x0
+ add r0, #0xc
+ add r1, #0x10
+ ldr r0, [r5, r0]
+ ldr r2, _02065EC8 ; =0x020F7E74
+ add r1, r5, r1
+ bl FUN_02019150
+ mov r0, #0x5d
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ mov r1, #0xff
+ bl FUN_02019620
+ mov r7, #0x43
+ ldr r6, _02065ECC ; =0x020F7EAC
+ mov r4, #0x0
+ lsl r7, r7, #0x2
+_02065E14:
+ lsl r2, r4, #0x3
+ add r3, r6, r2
+ mov r0, #0x59
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ ldr r1, [r5, r7]
+ ldr r2, [r6, r2]
+ ldr r3, [r3, #0x4]
+ bl FUN_02012880
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0x4
+ blo _02065E14
+ mov r1, #0x5
+ lsl r1, r1, #0x6
+ ldr r0, _02065ED0 ; =0x020F7E8C
+ add r1, r5, r1
+ mov r2, #0x20
+ blx MI_CpuCopy8
+ mov r0, #0x5d
+ lsl r0, r0, #0x2
+ add r1, r0, #0x0
+ add r2, r5, r0
+ sub r1, #0x28
+ str r2, [r5, r1]
+ add r1, r0, #0x0
+ sub r1, #0x10
+ ldr r2, [r5, r1]
+ add r1, r0, #0x0
+ sub r1, #0x34
+ str r2, [r5, r1]
+ add r1, r0, #0x0
+ sub r1, #0x18
+ str r5, [r5, r1]
+ add r1, r0, #0x0
+ mov r2, #0x4
+ sub r1, #0x24
+ strh r2, [r5, r1]
+ add r1, r0, #0x0
+ sub r1, #0x22
+ strh r2, [r5, r1]
+ add r1, r0, #0x0
+ sub r1, #0x1a
+ ldrh r2, [r5, r1]
+ ldr r1, _02065ED4 ; =0xFFFFFE7F
+ and r2, r1
+ add r1, r0, #0x0
+ sub r1, #0x1a
+ strh r2, [r5, r1]
+ add r1, r0, #0x0
+ sub r0, #0x34
+ ldr r2, _02065ED8 ; =FUN_02065EE4
+ sub r1, #0x30
+ str r2, [r5, r1]
+ ldr r3, [r5, #0x0]
+ ldr r1, [sp, #0x0]
+ lsl r3, r3, #0x18
+ ldr r2, [sp, #0x4]
+ add r0, r5, r0
+ lsr r3, r3, #0x18
+ bl FUN_020010A8
+ mov r1, #0x16
+ lsl r1, r1, #0x4
+ str r0, [r5, r1]
+ add r1, #0x14
+ add r0, r5, r1
+ ldr r2, _02065EDC ; =0x000003D9
+ mov r1, #0x0
+ mov r3, #0xb
+ bl FUN_0200CCA4
+ mov r0, #0x17
+ lsl r0, r0, #0x4
+ ldr r0, [r5, r0]
+ mov r1, #0x3
+ bl FUN_0201AC68
+ ldr r1, _02065EE0 ; =0x0000013B
+ mov r0, #0xf
+ ldrb r2, [r5, r1]
+ bic r2, r0
+ mov r0, #0x1
+ orr r0, r2
+ strb r0, [r5, r1]
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+_02065EC8: .word 0x020F7E74
+_02065ECC: .word 0x020F7EAC
+_02065ED0: .word 0x020F7E8C
+_02065ED4: .word 0xFFFFFE7F
+_02065ED8: .word FUN_02065EE4
+_02065EDC: .word 0x000003D9
+_02065EE0: .word 0x0000013B
+
+ thumb_func_start FUN_02065EE4
+FUN_02065EE4: ; 0x02065EE4
+ push {r3, lr}
+ cmp r2, #0x0
+ bne _02065EF0
+ ldr r0, _02065EF4 ; =0x000005DC
+ bl FUN_020054C8
+_02065EF0:
+ pop {r3, pc}
+ nop
+_02065EF4: .word 0x000005DC
+
+ thumb_func_start FUN_02065EF8
+FUN_02065EF8: ; 0x02065EF8
+ push {r3-r4, lr}
+ sub sp, #0x4
+ add r4, r0, #0x0
+ mov r0, #0x16
+ lsl r0, r0, #0x4
+ add r1, sp, #0x0
+ ldr r0, [r4, r0]
+ add r1, #0x2
+ add r2, sp, #0x0
+ bl FUN_02001300
+ mov r0, #0x59
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_02012870
+ mov r0, #0x65
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_02019570
+ mov r0, #0x65
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ mov r1, #0x0
+ bl FUN_0200CCF8
+ mov r0, #0x65
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_02019178
+ mov r0, #0x5d
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_02019570
+ mov r0, #0x5d
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ mov r1, #0x0
+ bl FUN_0200CCF8
+ mov r0, #0x5d
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_02019178
+ add r0, sp, #0x0
+ mov r1, #0x4f
+ ldrh r2, [r0, #0x2]
+ lsl r1, r1, #0x2
+ strh r2, [r4, r1]
+ ldrh r2, [r0, #0x0]
+ add r0, r1, #0x2
+ add r1, #0x68
+ strh r2, [r4, r0]
+ ldr r0, [r4, r1]
+ cmp r0, #0x0
+ beq _02065F7C
+ bl FUN_0205EBEC
+ mov r0, #0x69
+ mov r1, #0x0
+ lsl r0, r0, #0x2
+ str r1, [r4, r0]
+_02065F7C:
+ mov r0, #0x17
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ mov r1, #0x3
+ bl FUN_0201AC68
+ add sp, #0x4
+ pop {r3-r4, pc}
+
+ thumb_func_start FUN_02065F8C
+FUN_02065F8C: ; 0x02065F8C
+ push {r3-r4, lr}
+ sub sp, #0x4
+ add r4, r0, #0x0
+ mov r0, #0x5d
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_02019570
+ mov r0, #0x5d
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ mov r1, #0x0
+ bl FUN_0200CCF8
+ mov r0, #0x16
+ lsl r0, r0, #0x4
+ add r1, sp, #0x0
+ ldr r0, [r4, r0]
+ add r1, #0x2
+ add r2, sp, #0x0
+ bl FUN_02001300
+ mov r0, #0x59
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_02012870
+ mov r0, #0x5d
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_02019178
+ add r0, r4, #0x0
+ bl FUN_020664D8
+ mov r0, #0x17
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ mov r1, #0x3
+ bl FUN_0201AC68
+ add sp, #0x4
+ pop {r3-r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02065FE4
+FUN_02065FE4: ; 0x02065FE4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x8]
+ add r4, r2, #0x0
+ bl FUN_0201B6C4
+ mov r0, #0x0
+ strh r0, [r5, #0x10]
+ str r4, [r5, #0xc]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02065FF8
+FUN_02065FF8: ; 0x02065FF8
+ push {r3, lr}
+ strb r1, [r0, #0x0]
+ mov r1, #0x0
+ strb r1, [r0, #0x1]
+ strb r1, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldr r0, [r0, #0x8]
+ cmp r0, #0x0
+ beq _0206600E
+ bl FUN_02021A4C
+_0206600E:
+ pop {r3, pc}
+
+ thumb_func_start FUN_02066010
+FUN_02066010: ; 0x02066010
+ push {r3-r7, lr}
+ add r6, r1, #0x0
+ add r5, r0, #0x0
+ add r7, r2, #0x0
+ mov r4, #0x0
+ cmp r6, #0x0
+ bls _02066040
+_0206601E:
+ mov r0, #0x8
+ add r1, r7, #0x0
+ bl FUN_020219F4
+ mov r1, #0xc
+ mul r1, r4
+ add r1, r5, r1
+ str r0, [r1, #0x8]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02065FF8
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, r6
+ blo _0206601E
+_02066040:
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02066044
+FUN_02066044: ; 0x02066044
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ ldr r4, _0206606C ; =0x00000000
+ beq _0206606A
+ mov r7, #0xc
+_02066050:
+ add r0, r4, #0x0
+ mul r0, r7
+ add r0, r5, r0
+ ldr r0, [r0, #0x8]
+ cmp r0, #0x0
+ beq _02066060
+ bl FUN_02021A20
+_02066060:
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, r6
+ blo _02066050
+_0206606A:
+ pop {r3-r7, pc}
+ .balign 4
+_0206606C: .word 0x00000000
+
+ thumb_func_start FUN_02066070
+FUN_02066070: ; 0x02066070
+ push {r4-r7, lr}
+ sub sp, #0x14
+ add r4, r1, #0x0
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ add r5, r2, #0x0
+ bl FUN_02025838
+ mov r1, #0x6b
+ lsl r1, r1, #0x2
+ str r0, [sp, #0x4]
+ str r0, [r6, r1]
+ add r0, r4, #0x0
+ bl FUN_0206F158
+ mov r1, #0x1b
+ lsl r1, r1, #0x4
+ str r0, [r6, r1]
+ add r0, r5, #0x0
+ bl FUN_020256BC
+ add r7, r0, #0x0
+ add r0, r6, #0x0
+ str r0, [sp, #0x10]
+ add r0, #0x1b
+ str r0, [sp, #0x10]
+ add r0, r6, #0x0
+ str r0, [sp, #0x8]
+ add r0, #0x1c
+ mov r4, #0x0
+ str r0, [sp, #0x8]
+_020660AE:
+ ldr r0, [sp, #0x4]
+ mov r1, #0x0
+ add r2, r4, #0x0
+ add r3, r7, #0x0
+ bl FUN_020258D4
+ mov r0, #0xc
+ mul r0, r4
+ ldr r1, [sp, #0x8]
+ str r0, [sp, #0xc]
+ add r5, r1, r0
+ ldrb r1, [r6, #0x19]
+ mov r0, #0xc
+ add r2, r1, #0x0
+ mul r2, r0
+ ldr r0, [sp, #0x8]
+ add r1, r4, #0x0
+ add r0, r0, r2
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ bl FUN_02065FF8
+ ldr r1, [sp, #0x8]
+ ldr r0, [sp, #0xc]
+ strb r4, [r1, r0]
+ add r0, r7, #0x0
+ bl FUN_020256AC
+ cmp r0, #0x0
+ beq _02066134
+ mov r0, #0x1
+ strb r0, [r5, #0x1]
+ add r0, r7, #0x0
+ bl FUN_020257C8
+ strb r0, [r5, #0x4]
+ add r0, r7, #0x0
+ bl FUN_020257CC
+ strb r0, [r5, #0x5]
+ ldrb r0, [r5, #0x5]
+ bl FUN_0206EAD8
+ strh r0, [r5, #0x6]
+ add r0, r7, #0x0
+ bl FUN_020257C4
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x8]
+ bl FUN_02021E28
+ ldrb r0, [r6, #0x19]
+ strb r0, [r5, #0x2]
+ ldrb r1, [r5, #0x0]
+ ldr r0, [sp, #0x0]
+ strb r1, [r0, #0x3]
+ ldrb r0, [r5, #0x0]
+ strb r0, [r6, #0x19]
+ ldr r0, [sp, #0x10]
+ ldrb r0, [r0, #0x0]
+ add r1, r0, #0x1
+ ldr r0, [sp, #0x10]
+ strb r1, [r0, #0x0]
+ ldrb r0, [r6, #0x1a]
+ cmp r0, #0xff
+ bne _02066134
+ strb r4, [r6, #0x1a]
+_02066134:
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0x14
+ blo _020660AE
+ ldrb r1, [r6, #0x19]
+ ldrb r3, [r6, #0x1a]
+ mov r0, #0xc
+ add r2, r1, #0x0
+ mul r2, r0
+ add r1, r6, r2
+ strb r3, [r1, #0x1f]
+ ldrb r1, [r6, #0x1a]
+ ldrb r2, [r6, #0x19]
+ mul r0, r1
+ add r0, r6, r0
+ strb r2, [r0, #0x1e]
+ add r0, r7, #0x0
+ bl FUN_02016A18
+ add sp, #0x14
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_02066160
+FUN_02066160: ; 0x02066160
+ push {r3-r6}
+ add r2, r1, #0x0
+ mov r3, #0xc
+ add r1, r0, #0x0
+ mul r2, r3
+ add r1, #0x1c
+ add r1, r1, r2
+ ldrb r4, [r1, #0x2]
+ ldrb r6, [r1, #0x3]
+ add r5, r4, #0x0
+ mul r5, r3
+ add r4, r0, r5
+ strb r6, [r4, #0x1f]
+ ldrb r4, [r1, #0x2]
+ ldrb r1, [r1, #0x3]
+ mul r3, r1
+ add r1, r0, r3
+ strb r4, [r1, #0x1e]
+ add r1, r0, r2
+ mov r3, #0x0
+ strb r3, [r1, #0x1d]
+ ldr r2, _0206619C ; =0x0000013B
+ mov r1, #0x30
+ ldrb r3, [r0, r2]
+ bic r3, r1
+ mov r1, #0x10
+ orr r1, r3
+ strb r1, [r0, r2]
+ pop {r3-r6}
+ bx lr
+ .balign 4
+_0206619C: .word 0x0000013B
+
+ thumb_func_start FUN_020661A0
+FUN_020661A0: ; 0x020661A0
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldrb r1, [r5, #0x18]
+ add r2, r5, #0x0
+ mov r0, #0xc
+ add r2, #0x1c
+ mul r0, r1
+ add r4, r2, r0
+ mov r0, #0x1b
+ lsl r0, r0, #0x4
+ ldrh r1, [r4, #0x6]
+ ldr r0, [r5, r0]
+ ldr r3, [r5, #0x0]
+ mov r2, #0x1
+ bl FUN_0206ED24
+ add r6, r0, #0x0
+ beq _020661D4
+ mov r0, #0x1b
+ lsl r0, r0, #0x4
+ ldrh r1, [r4, #0x6]
+ ldr r0, [r5, r0]
+ ldr r3, [r5, #0x0]
+ mov r2, #0x1
+ bl FUN_0206ED38
+_020661D4:
+ mov r0, #0x6b
+ lsl r0, r0, #0x2
+ ldrb r2, [r5, #0x18]
+ ldr r0, [r5, r0]
+ mov r1, #0x0
+ bl FUN_02025878
+ ldrb r1, [r5, #0x18]
+ add r0, r5, #0x0
+ bl FUN_02066160
+ ldrb r1, [r5, #0x18]
+ add r0, r4, #0x0
+ bl FUN_02065FF8
+ add r0, r6, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_020661F8
+FUN_020661F8: ; 0x020661F8
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r7, r1, #0x0
+ ldrb r1, [r5, #0x18]
+ add r6, r2, #0x0
+ add r2, r5, #0x0
+ mov r0, #0xc
+ add r2, #0x1c
+ mul r0, r1
+ add r4, r2, r0
+ ldrb r0, [r4, #0x1]
+ cmp r0, #0x0
+ beq _0206626E
+ mov r0, #0x5b
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ bl FUN_020377AC
+ bl FUN_0206BB1C
+ add r1, r7, #0x0
+ bl FUN_0206B9B0
+ add r2, r0, #0x0
+ mov r0, #0x6b
+ lsl r0, r0, #0x2
+ ldrb r1, [r5, #0x18]
+ ldr r0, [r5, r0]
+ ldr r3, [r5, #0x0]
+ bl FUN_020856A0
+ cmp r6, #0x0
+ beq _0206625E
+ mov r0, #0x1b
+ lsl r0, r0, #0x4
+ ldrh r1, [r4, #0x6]
+ ldr r0, [r5, r0]
+ ldr r3, [r5, #0x0]
+ mov r2, #0x1
+ bl FUN_0206ED24
+ cmp r0, #0x0
+ beq _0206625E
+ mov r0, #0x1b
+ lsl r0, r0, #0x4
+ ldrh r1, [r4, #0x6]
+ ldr r0, [r5, r0]
+ ldr r3, [r5, #0x0]
+ mov r2, #0x1
+ bl FUN_0206ED38
+_0206625E:
+ ldrb r1, [r5, #0x18]
+ add r0, r5, #0x0
+ bl FUN_02066160
+ ldrb r1, [r5, #0x18]
+ add r0, r4, #0x0
+ bl FUN_02065FF8
+_0206626E:
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02066270
+FUN_02066270: ; 0x02066270
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ mov r2, #0x5a
+ ldr r3, [r6, #0x0]
+ mov r0, #0x1
+ mov r1, #0x1a
+ lsl r2, r2, #0x2
+ bl FUN_0200A86C
+ mov r1, #0x43
+ lsl r1, r1, #0x2
+ str r0, [r6, r1]
+ ldr r2, [r6, #0x0]
+ mov r0, #0x1
+ mov r1, #0x80
+ bl FUN_0200AA90
+ mov r1, #0x11
+ lsl r1, r1, #0x4
+ str r0, [r6, r1]
+ ldr r1, [r6, #0x0]
+ mov r0, #0x80
+ bl FUN_020219F4
+ mov r1, #0x45
+ lsl r1, r1, #0x2
+ str r0, [r6, r1]
+ sub r1, #0x8
+ ldr r0, [r6, r1]
+ mov r1, #0x4
+ bl FUN_0200A914
+ mov r1, #0x46
+ lsl r1, r1, #0x2
+ str r0, [r6, r1]
+ sub r1, #0xc
+ ldr r0, [r6, r1]
+ mov r1, #0x0
+ bl FUN_0200A914
+ mov r1, #0x47
+ lsl r1, r1, #0x2
+ str r0, [r6, r1]
+ mov r4, #0x0
+ add r5, r6, #0x0
+ add r7, r1, #0x4
+_020662CC:
+ mov r0, #0x43
+ lsl r0, r0, #0x2
+ ldr r0, [r6, r0]
+ add r1, r4, #0x6
+ bl FUN_0200A914
+ str r0, [r5, r7]
+ add r4, r4, #0x1
+ add r5, r5, #0x4
+ cmp r4, #0x6
+ blt _020662CC
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_020662E4
+FUN_020662E4: ; 0x020662E4
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ mov r7, #0x12
+ mov r4, #0x0
+ add r5, r6, #0x0
+ lsl r7, r7, #0x4
+_020662F0:
+ ldr r0, [r5, r7]
+ bl FUN_02021A20
+ add r4, r4, #0x1
+ add r5, r5, #0x4
+ cmp r4, #0x6
+ blt _020662F0
+ mov r0, #0x47
+ lsl r0, r0, #0x2
+ ldr r0, [r6, r0]
+ bl FUN_02021A20
+ mov r0, #0x46
+ lsl r0, r0, #0x2
+ ldr r0, [r6, r0]
+ bl FUN_02021A20
+ mov r0, #0x45
+ lsl r0, r0, #0x2
+ ldr r0, [r6, r0]
+ bl FUN_02021A20
+ mov r0, #0x11
+ lsl r0, r0, #0x4
+ ldr r0, [r6, r0]
+ bl FUN_0200AB18
+ mov r0, #0x43
+ lsl r0, r0, #0x2
+ ldr r0, [r6, r0]
+ bl FUN_0200A8B8
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02066334
+FUN_02066334: ; 0x02066334
+ push {r3-r4, lr}
+ sub sp, #0x14
+ add r4, r0, #0x0
+ mov r0, #0x5b
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_020377A8
+ mov r1, #0x17
+ lsl r1, r1, #0x4
+ str r0, [r4, r1]
+ ldrh r0, [r4, #0x14]
+ ldr r2, _020663C8 ; =0x000003E2
+ mov r3, #0xa
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x0]
+ str r0, [sp, #0x4]
+ ldr r0, [r4, r1]
+ mov r1, #0x3
+ bl FUN_0200CD68
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x0]
+ ldr r2, _020663CC ; =0x000003D9
+ str r0, [sp, #0x4]
+ mov r0, #0x17
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ mov r1, #0x3
+ mov r3, #0xb
+ bl FUN_0200CB00
+ mov r1, #0x1a
+ ldr r2, [r4, #0x0]
+ mov r0, #0x0
+ lsl r1, r1, #0x4
+ bl FUN_02002ED0
+ mov r1, #0x6
+ ldr r2, [r4, #0x0]
+ mov r0, #0x0
+ lsl r1, r1, #0x6
+ bl FUN_02002EEC
+ mov r0, #0x13
+ str r0, [sp, #0x0]
+ mov r0, #0x1b
+ str r0, [sp, #0x4]
+ mov r0, #0x4
+ str r0, [sp, #0x8]
+ mov r0, #0xc
+ str r0, [sp, #0xc]
+ ldr r0, _020663D0 ; =0x0000036D
+ mov r1, #0x17
+ lsl r1, r1, #0x4
+ str r0, [sp, #0x10]
+ ldr r0, [r4, r1]
+ add r1, #0x14
+ add r1, r4, r1
+ mov r2, #0x3
+ mov r3, #0x2
+ bl FUN_02019064
+ mov r0, #0x61
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ mov r1, #0x0
+ bl FUN_02019620
+ add sp, #0x14
+ pop {r3-r4, pc}
+ .balign 4
+_020663C8: .word 0x000003E2
+_020663CC: .word 0x000003D9
+_020663D0: .word 0x0000036D
+
+ thumb_func_start FUN_020663D4
+FUN_020663D4: ; 0x020663D4
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x61
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_02019570
+ mov r0, #0x61
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_02019178
+ mov r0, #0x61
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ mov r1, #0x0
+ mov r2, #0x10
+ blx MI_CpuFill8
+ mov r0, #0x17
+ mov r1, #0x0
+ lsl r0, r0, #0x4
+ str r1, [r4, r0]
+ pop {r4, pc}
+
+ thumb_func_start FUN_02066404
+FUN_02066404: ; 0x02066404
+ push {r3-r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ ldr r0, [sp, #0x28]
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ add r7, r3, #0x0
+ cmp r0, #0x0
+ beq _02066426
+ mov r0, #0x61
+ lsl r0, r0, #0x2
+ ldr r2, _020664CC ; =0x000003E2
+ add r0, r5, r0
+ mov r1, #0x1
+ mov r3, #0xa
+ bl FUN_0200D0BC
+_02066426:
+ mov r1, #0xd8
+ str r1, [sp, #0x0]
+ mov r0, #0x20
+ mov r2, #0x0
+ add r1, #0xac
+ str r0, [sp, #0x4]
+ add r0, r5, r1
+ mov r1, #0xff
+ add r3, r2, #0x0
+ bl FUN_020196F4
+ mov r0, #0x1
+ bl FUN_02002B60
+ mov r0, #0x0
+ bl FUN_02002B7C
+ cmp r4, #0x0
+ bne _02066494
+ mov r0, #0x45
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ bl FUN_02021A4C
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ mov r0, #0x2
+ str r0, [sp, #0x4]
+ mov r0, #0x11
+ lsl r0, r0, #0x4
+ ldrb r3, [r5, #0x18]
+ mov r2, #0xc
+ ldr r0, [r5, r0]
+ mul r2, r3
+ add r2, r5, r2
+ ldr r2, [r2, #0x24]
+ mov r1, #0x0
+ mov r3, #0x2
+ bl FUN_0200ABB4
+ mov r2, #0x11
+ lsl r2, r2, #0x4
+ lsl r3, r4, #0x2
+ add r1, r2, #0x4
+ ldr r0, [r5, r2]
+ add r3, r5, r3
+ add r2, #0x10
+ ldr r1, [r5, r1]
+ ldr r2, [r3, r2]
+ bl FUN_0200B7B8
+ mov r0, #0x45
+ lsl r0, r0, #0x2
+ ldr r2, [r5, r0]
+ b _0206649E
+_02066494:
+ lsl r0, r4, #0x2
+ add r1, r5, r0
+ mov r0, #0x12
+ lsl r0, r0, #0x4
+ ldr r2, [r1, r0]
+_0206649E:
+ mov r3, #0x0
+ str r3, [sp, #0x0]
+ ldr r0, _020664D0 ; =0x0001020F
+ str r6, [sp, #0x4]
+ str r0, [sp, #0x8]
+ mov r0, #0x61
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ mov r1, #0x1
+ str r3, [sp, #0xc]
+ bl FUN_0201BDE0
+ mov r1, #0x4e
+ lsl r1, r1, #0x2
+ strb r0, [r5, r1]
+ add r1, #0x4c
+ add r0, r5, r1
+ bl FUN_020191D0
+ ldr r0, _020664D4 ; =0x00000139
+ strb r7, [r5, r0]
+ add sp, #0x10
+ pop {r3-r7, pc}
+ .balign 4
+_020664CC: .word 0x000003E2
+_020664D0: .word 0x0001020F
+_020664D4: .word 0x00000139
+
+ thumb_func_start FUN_020664D8
+FUN_020664D8: ; 0x020664D8
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x61
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ mov r1, #0x1
+ bl FUN_0200D0E0
+ mov r0, #0x61
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_02019570
+ pop {r4, pc}
+
+ thumb_func_start FUN_020664F4
+FUN_020664F4: ; 0x020664F4
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x4e
+ lsl r0, r0, #0x2
+ ldrb r0, [r4, r0]
+ bl FUN_0201BD70
+ cmp r0, #0x0
+ beq _0206650A
+ mov r0, #0x0
+ pop {r4, pc}
+_0206650A:
+ ldr r0, _0206651C ; =0x00000139
+ ldrb r0, [r4, r0]
+ cmp r0, #0x0
+ beq _02066518
+ add r0, r4, #0x0
+ bl FUN_020664D8
+_02066518:
+ mov r0, #0x1
+ pop {r4, pc}
+ .balign 4
+_0206651C: .word 0x00000139
+
+ thumb_func_start FUN_02066520
+FUN_02066520: ; 0x02066520
+ push {r3-r4, lr}
+ sub sp, #0x4
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ ldr r1, _02066544 ; =0x020F7E6C
+ str r0, [sp, #0x0]
+ mov r0, #0x17
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ ldr r2, _02066548 ; =0x000003D9
+ mov r3, #0xb
+ bl FUN_02002198
+ mov r1, #0x5a
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ add sp, #0x4
+ pop {r3-r4, pc}
+ .balign 4
+_02066544: .word 0x020F7E6C
+_02066548: .word 0x000003D9
+
+ thumb_func_start FUN_0206654C
+FUN_0206654C: ; 0x0206654C
+ push {r3, lr}
+ add r1, r0, #0x0
+ mov r0, #0x5a
+ lsl r0, r0, #0x2
+ ldr r0, [r1, r0]
+ ldr r1, [r1, #0x0]
+ bl FUN_020021AC
+ cmp r0, #0x0
+ beq _0206656A
+ mov r1, #0x1
+ mvn r1, r1
+ cmp r0, r1
+ beq _0206656E
+ b _02066572
+_0206656A:
+ mov r0, #0x1
+ pop {r3, pc}
+_0206656E:
+ mov r0, #0x0
+ pop {r3, pc}
+_02066572:
+ add r0, r1, #0x1
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02066578
+FUN_02066578: ; 0x02066578
+ push {r3-r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0x0
+ ldrh r0, [r4, #0x12]
+ cmp r0, #0x0
+ beq _0206658A
+ cmp r0, #0x1
+ beq _020665A8
+ b _020665BA
+_0206658A:
+ mov r0, #0x6
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ ldr r0, [r4, #0x0]
+ add r2, r1, #0x0
+ str r0, [sp, #0x8]
+ mov r0, #0x0
+ add r3, r0, #0x0
+ bl FUN_0200E1D0
+ ldrh r0, [r4, #0x12]
+ add r0, r0, #0x1
+ strh r0, [r4, #0x12]
+ b _020665BA
+_020665A8:
+ bl FUN_0200E308
+ cmp r0, #0x0
+ beq _020665BA
+ mov r0, #0x0
+ strh r0, [r4, #0x12]
+ add sp, #0xc
+ mov r0, #0x1
+ pop {r3-r4, pc}
+_020665BA:
+ mov r0, #0x0
+ add sp, #0xc
+ pop {r3-r4, pc}
+
+ thumb_func_start FUN_020665C0
+FUN_020665C0: ; 0x020665C0
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldrh r0, [r4, #0x12]
+ cmp r0, #0x0
+ beq _020665D4
+ cmp r0, #0x1
+ beq _020665E6
+ cmp r0, #0x2
+ beq _02066614
+ b _0206662E
+_020665D4:
+ mov r0, #0x5b
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_0204649C
+ ldrh r0, [r4, #0x12]
+ add r0, r0, #0x1
+ strh r0, [r4, #0x12]
+ b _0206662E
+_020665E6:
+ mov r0, #0x5b
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_020464A4
+ cmp r0, #0x0
+ beq _0206662E
+ mov r0, #0x5b
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x5a
+ bl FUN_0224C678
+ mov r0, #0x5b
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x5a
+ bl FUN_0224C6E8
+ ldrh r0, [r4, #0x12]
+ add r0, r0, #0x1
+ strh r0, [r4, #0x12]
+ b _0206662E
+_02066614:
+ mov r0, #0x5b
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x5a
+ ldr r0, [r0, #0x50]
+ bl FUN_021DA58C
+ cmp r0, #0x0
+ beq _0206662E
+ mov r0, #0x0
+ strh r0, [r4, #0x12]
+ mov r0, #0x1
+ pop {r4, pc}
+_0206662E:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02066634
+FUN_02066634: ; 0x02066634
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r0, #0x5b
+ lsl r0, r0, #0x2
+ add r4, r1, #0x0
+ ldr r0, [r5, r0]
+ mov r1, #0x5a
+ bl FUN_021DAF98
+ cmp r4, #0x0
+ bne _02066652
+ add r0, r5, #0x0
+ bl FUN_02065EF8
+ b _02066658
+_02066652:
+ add r0, r5, #0x0
+ bl FUN_02065F8C
+_02066658:
+ add r0, r5, #0x0
+ bl FUN_020663D4
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02066664
+FUN_02066664: ; 0x02066664
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldrh r0, [r5, #0x12]
+ add r6, r1, #0x0
+ cmp r0, #0x0
+ beq _02066676
+ cmp r0, #0x1
+ beq _02066708
+ b _0206671E
+_02066676:
+ ldr r0, [r5, #0x0]
+ mov r1, #0x40
+ bl FUN_02016998
+ mov r1, #0x0
+ mov r2, #0x40
+ add r4, r0, #0x0
+ blx MI_CpuFill8
+ mov r0, #0x5b
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ bl FUN_020377AC
+ bl FUN_0206BB1C
+ str r0, [r4, #0x0]
+ mov r0, #0x5b
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ bl FUN_020377AC
+ bl FUN_0206F158
+ str r0, [r4, #0x4]
+ mov r0, #0x5b
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ bl FUN_020377AC
+ bl LoadPlayerDataAddress
+ str r0, [r4, #0xc]
+ mov r0, #0x5b
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02025838
+ str r0, [r4, #0x8]
+ add r0, r4, #0x0
+ mov r1, #0x0
+ add r0, #0x21
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x20
+ strb r6, [r0, #0x0]
+ ldrb r1, [r5, #0x18]
+ mov r0, #0xc
+ mul r0, r1
+ add r0, r5, r0
+ ldrh r0, [r0, #0x22]
+ cmp r6, #0xb
+ strh r0, [r4, #0x24]
+ bne _020666EC
+ ldrb r1, [r5, #0x17]
+ add r0, r4, #0x0
+ add r0, #0x22
+ strb r1, [r0, #0x0]
+_020666EC:
+ mov r0, #0x5b
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ ldr r1, _02066724 ; =0x020F96DC
+ add r2, r4, #0x0
+ bl FUN_020373D4
+ mov r0, #0x6d
+ lsl r0, r0, #0x2
+ str r4, [r5, r0]
+ ldrh r0, [r5, #0x12]
+ add r0, r0, #0x1
+ strh r0, [r5, #0x12]
+ b _0206671E
+_02066708:
+ mov r0, #0x5b
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ bl FUN_0204647C
+ cmp r0, #0x0
+ bne _0206671E
+ mov r0, #0x0
+ strh r0, [r5, #0x12]
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_0206671E:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ nop
+_02066724: .word 0x020F96DC
+
+ thumb_func_start FUN_02066728
+FUN_02066728: ; 0x02066728
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ ldrh r0, [r4, #0x12]
+ cmp r0, #0x0
+ beq _02066738
+ cmp r0, #0x1
+ beq _0206677A
+ b _020667D0
+_02066738:
+ ldrb r2, [r4, #0x18]
+ mov r0, #0xc
+ mul r0, r2
+ add r3, r4, r0
+ ldrb r0, [r3, #0x1d]
+ cmp r0, #0x0
+ beq _02066756
+ mov r0, #0x5b
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ ldr r3, [r4, #0x0]
+ mov r1, #0x0
+ bl FUN_02037F58
+ b _0206676C
+_02066756:
+ ldr r0, [r4, #0x0]
+ add r3, #0x21
+ str r0, [sp, #0x0]
+ mov r0, #0x5b
+ lsl r0, r0, #0x2
+ ldrb r2, [r4, #0x17]
+ ldrb r3, [r3, #0x0]
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ bl FUN_02037F2C
+_0206676C:
+ mov r1, #0x6a
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ ldrh r0, [r4, #0x12]
+ add r0, r0, #0x1
+ strh r0, [r4, #0x12]
+ b _020667D0
+_0206677A:
+ mov r0, #0x5b
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_0204647C
+ cmp r0, #0x0
+ bne _020667D0
+ mov r0, #0x6a
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_020855E4
+ cmp r0, #0x0
+ beq _020667BC
+ ldrb r0, [r4, #0x18]
+ mov r2, #0xc
+ mov r3, #0x1
+ add r1, r0, #0x0
+ mul r1, r2
+ add r0, r4, r1
+ strb r3, [r0, #0x1d]
+ ldrb r3, [r4, #0x18]
+ mov r0, #0x6a
+ lsl r0, r0, #0x2
+ mul r2, r3
+ add r2, r4, r2
+ ldrb r2, [r2, #0x1c]
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ bl FUN_020855E8
+ mov r5, #0x2
+ b _020667BE
+_020667BC:
+ mov r5, #0x1
+_020667BE:
+ mov r0, #0x6a
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_0208562C
+ mov r0, #0x0
+ strh r0, [r4, #0x12]
+ add r0, r5, #0x0
+ pop {r3-r5, pc}
+_020667D0:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_020667D4
+FUN_020667D4: ; 0x020667D4
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x4]
+ cmp r1, #0x0
+ beq _020667F2
+ cmp r1, #0x1
+ beq _02066802
+ b _02066814
+_020667F2:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_020653EC
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _02066814
+_02066802:
+ ldr r1, [r4, #0x0]
+ cmp r1, #0x0
+ bne _0206680C
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0206680C:
+ bl FUN_02016A18
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_02066814:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02066818
+FUN_02066818: ; 0x02066818
+ push {r4, lr}
+ bl FUN_02046528
+ add r4, r0, #0x0
+ mov r0, #0xb
+ mov r1, #0x8
+ bl FUN_020169D8
+ add r2, r0, #0x0
+ mov r0, #0x0
+ str r0, [r2, #0x0]
+ str r0, [r2, #0x4]
+ ldr r0, [r4, #0x10]
+ ldr r1, _0206683C ; =FUN_020667D4
+ bl FUN_0204640C
+ pop {r4, pc}
+ nop
+_0206683C: .word FUN_020667D4
+
+ thumb_func_start FUN_02066840
+FUN_02066840: ; 0x02066840
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r6, r0, #0x0
+ str r1, [sp, #0x0]
+ add r7, r2, #0x0
+ bl FUN_020238F4
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_02029AFC
+ add r5, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_0202A8D8
+ str r0, [sp, #0x4]
+ add r0, r7, #0x0
+ mov r1, #0x0
+ mov r2, #0xe4
+ blx MI_CpuFill8
+ add r0, r4, #0x0
+ bl FUN_0202398C
+ add r1, r7, #0x0
+ add r1, #0xa8
+ mov r2, #0x10
+ blx MI_CpuCopy8
+ add r0, r4, #0x0
+ bl FUN_020239BC
+ add r1, r7, #0x0
+ add r1, #0xbc
+ str r0, [r1, #0x0]
+ ldr r0, _02066970 ; =0x020ECAC0
+ ldrb r1, [r0, #0x0]
+ add r0, r7, #0x0
+ add r0, #0xb8
+ strb r1, [r0, #0x0]
+ ldr r0, _02066974 ; =0x020ECAC4
+ ldrb r1, [r0, #0x0]
+ add r0, r7, #0x0
+ add r0, #0xb9
+ strb r1, [r0, #0x0]
+ add r0, r5, #0x0
+ bl FUN_02029B38
+ add r1, r7, #0x0
+ add r1, #0xba
+ strb r0, [r1, #0x0]
+ add r0, r5, #0x0
+ bl FUN_02029B3C
+ add r1, r7, #0x0
+ add r1, #0xbb
+ strb r0, [r1, #0x0]
+ add r0, r4, #0x0
+ bl FUN_020239CC
+ add r1, r7, #0x0
+ add r1, #0xc8
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ lsl r0, r0, #0x1f
+ ldrb r1, [r1, #0x0]
+ mov r2, #0x2
+ lsr r0, r0, #0x1e
+ bic r1, r2
+ orr r1, r0
+ add r0, r7, #0x0
+ add r0, #0xc8
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ bl FUN_02023A28
+ add r1, r0, #0x0
+ add r0, r7, #0x0
+ add r0, #0xc8
+ ldrb r0, [r0, #0x0]
+ mov r2, #0x1
+ lsl r0, r0, #0x1e
+ lsr r0, r0, #0x1f
+ bl FUN_020536D0
+ add r1, r7, #0x0
+ add r1, #0xc9
+ strb r0, [r1, #0x0]
+ add r0, r7, #0x0
+ mov r4, #0x0
+ str r0, [sp, #0x8]
+ add r0, #0xca
+ add r5, r4, #0x0
+ str r0, [sp, #0x8]
+_020668FC:
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ bl FUN_0202A5F4
+ ldr r1, [sp, #0x8]
+ mov r2, #0x8
+ add r1, r1, r5
+ blx MI_CpuCopy8
+ add r4, r4, #0x1
+ add r5, #0x8
+ cmp r4, #0x3
+ blt _020668FC
+ add r0, r6, #0x0
+ mov r1, #0x3
+ bl FUN_0202A5F4
+ add r1, r7, #0x0
+ add r1, #0xc0
+ mov r2, #0x8
+ blx MI_CpuCopy8
+ ldr r0, [sp, #0x0]
+ cmp r0, #0x0
+ bne _02066956
+ ldr r0, [sp, #0x4]
+ mov r1, #0x7
+ mov r2, #0x0
+ bl FUN_0202A578
+ add r1, r7, #0x0
+ add r1, #0xe2
+ strh r0, [r1, #0x0]
+ add r0, r7, #0x0
+ add r0, #0xe2
+ ldrh r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _0206696C
+ ldr r0, [sp, #0x4]
+ ldr r1, [sp, #0x0]
+ add r2, r7, #0x0
+ bl FUN_0202A498
+ add sp, #0xc
+ pop {r4-r7, pc}
+_02066956:
+ ldr r0, [sp, #0x4]
+ bl FUN_0202A520
+ add r1, r7, #0x0
+ add r1, #0xe2
+ strh r0, [r1, #0x0]
+ ldr r0, [sp, #0x4]
+ ldr r1, [sp, #0x0]
+ add r2, r7, #0x0
+ bl FUN_0202A498
+_0206696C:
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+_02066970: .word 0x020ECAC0
+_02066974: .word 0x020ECAC4
+
+ thumb_func_start FUN_02066978
+FUN_02066978: ; 0x02066978
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x0
+ add r1, r4, #0x0
+ mov r2, #0xec
+ blx MIi_CpuClearFast
+ add r0, r4, #0x0
+ ldrh r2, [r4, #0x6]
+ add r0, #0x8
+ mov r1, #0x80
+ bl FUN_0206A3A4
+ add r0, r4, #0x0
+ ldr r2, [r4, #0x0]
+ add r0, #0x88
+ mov r1, #0x64
+ bl FUN_0206A3A4
+ pop {r4, pc}
+
+ thumb_func_start FUN_020669A0
+FUN_020669A0: ; 0x020669A0
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x0
+ add r1, r4, #0x0
+ mov r2, #0x88
+ blx MIi_CpuClearFast
+ add r0, r4, #0x0
+ ldrh r2, [r4, #0x6]
+ add r0, #0x8
+ mov r1, #0x80
+ bl FUN_0206A3A4
+ pop {r4, pc}
+
+ thumb_func_start FUN_020669BC
+FUN_020669BC: ; 0x020669BC
+ mov r0, #0xec
+ bx lr
+
+ thumb_func_start FUN_020669C0
+FUN_020669C0: ; 0x020669C0
+ push {r4, lr}
+ mov r1, #0xec
+ bl FUN_02016998
+ add r4, r0, #0x0
+ bl FUN_02066978
+ add r0, r4, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020669D4
+FUN_020669D4: ; 0x020669D4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldrh r0, [r5, #0x4]
+ mov r4, #0x0
+ lsl r1, r0, #0x1f
+ lsr r1, r1, #0x1f
+ bne _02066A1A
+ lsl r0, r0, #0x1e
+ mov r4, #0x1
+ lsr r0, r0, #0x1f
+ beq _020669EE
+ bl ErrorHandling
+_020669EE:
+ ldrh r1, [r5, #0x4]
+ mov r0, #0x1
+ bic r1, r0
+ mov r0, #0x1
+ orr r0, r1
+ strh r0, [r5, #0x4]
+ ldrh r1, [r5, #0x4]
+ mov r0, #0x2
+ orr r0, r1
+ strh r0, [r5, #0x4]
+ add r0, r5, #0x0
+ ldr r2, [r5, #0x0]
+ add r0, #0x88
+ mov r1, #0x64
+ bl FUN_0206A3D0
+ add r0, r5, #0x0
+ ldrh r2, [r5, #0x6]
+ add r0, #0x8
+ mov r1, #0x80
+ bl FUN_0206A3D0
+_02066A1A:
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02066A20
+FUN_02066A20: ; 0x02066A20
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldrh r2, [r5, #0x4]
+ mov r4, #0x0
+ lsl r0, r2, #0x1f
+ lsr r0, r0, #0x1f
+ cmp r0, #0x1
+ bne _02066A68
+ cmp r1, #0x1
+ bne _02066A68
+ mov r0, #0x1
+ bic r2, r0
+ strh r2, [r5, #0x4]
+ ldrh r1, [r5, #0x4]
+ mov r0, #0x2
+ mov r4, #0x1
+ bic r1, r0
+ strh r1, [r5, #0x4]
+ add r0, r5, #0x0
+ ldr r2, [r5, #0x0]
+ add r0, #0x88
+ mov r1, #0x64
+ bl FUN_0206A3A4
+ add r0, r5, #0x0
+ add r0, #0x8
+ mov r1, #0x80
+ bl FUN_0206A3F8
+ strh r0, [r5, #0x6]
+ add r0, r5, #0x0
+ ldrh r2, [r5, #0x6]
+ add r0, #0x8
+ mov r1, #0x80
+ bl FUN_0206A3A4
+_02066A68:
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02066A6C
+FUN_02066A6C: ; 0x02066A6C
+ push {r4, lr}
+ add r2, r0, #0x0
+ ldrh r1, [r2, #0x4]
+ mov r4, #0x0
+ lsl r0, r1, #0x1e
+ lsr r0, r0, #0x1f
+ bne _02066A8E
+ mov r0, #0x2
+ orr r0, r1
+ strh r0, [r2, #0x4]
+ add r0, r2, #0x0
+ ldrh r2, [r2, #0x6]
+ add r0, #0x8
+ mov r1, #0x80
+ mov r4, #0x1
+ bl FUN_0206A3D0
+_02066A8E:
+ add r0, r4, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02066A94
+FUN_02066A94: ; 0x02066A94
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldrh r2, [r5, #0x4]
+ mov r4, #0x0
+ lsl r0, r2, #0x1e
+ lsr r0, r0, #0x1f
+ cmp r0, #0x1
+ bne _02066AC8
+ cmp r1, #0x1
+ bne _02066AC8
+ mov r0, #0x2
+ bic r2, r0
+ add r0, r5, #0x0
+ strh r2, [r5, #0x4]
+ add r0, #0x8
+ mov r1, #0x80
+ mov r4, #0x1
+ bl FUN_0206A3F8
+ strh r0, [r5, #0x6]
+ add r0, r5, #0x0
+ ldrh r2, [r5, #0x6]
+ add r0, #0x8
+ mov r1, #0x80
+ bl FUN_0206A3A4
+_02066AC8:
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02066ACC
+FUN_02066ACC: ; 0x02066ACC
+ push {r0-r3}
+ push {r3-r6, lr}
+ sub sp, #0x2c
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r6, r3, #0x0
+ bl FUN_02066978
+ ldr r0, [sp, #0x50]
+ add r1, r4, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x54]
+ add r3, r6, #0x0
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x58]
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x5c]
+ str r0, [sp, #0xc]
+ ldr r2, [sp, #0x48]
+ add r0, r5, #0x0
+ bl FUN_02066B64
+ add r0, r5, #0x0
+ add r0, #0x88
+ mov r1, #0x64
+ mov r2, #0x0
+ bl FUN_0206A3A4
+ add r0, r5, #0x0
+ ldr r2, [r5, #0x0]
+ add r0, #0x88
+ mov r1, #0x64
+ bl FUN_0206A3A4
+ add r0, r5, #0x0
+ mov r1, #0xa0
+ add r2, sp, #0x48
+ bl FUN_02067830
+ mov r0, #0x0
+ bl FUN_020256BC
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0xa9
+ add r2, r4, #0x0
+ bl FUN_02067830
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0x0
+ str r0, [sp, #0x10]
+ add r0, r5, #0x0
+ mov r1, #0xa1
+ add r2, sp, #0x10
+ bl FUN_02067830
+ mov r0, #0x0
+ add r1, sp, #0x14
+ mov r2, #0x18
+ blx MIi_CpuClearFast
+ add r0, r5, #0x0
+ mov r1, #0xaa
+ add r2, sp, #0x14
+ bl FUN_02067830
+ add r0, r5, #0x0
+ bl FUN_02066ED8
+ add sp, #0x2c
+ pop {r3-r6}
+ pop {r3}
+ add sp, #0x10
+ bx r3
+
+ thumb_func_start FUN_02066B64
+FUN_02066B64: ; 0x02066B64
+ push {r0-r3}
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ bl FUN_020669A0
+ add r0, r5, #0x0
+ bl FUN_02066A6C
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x30]
+ cmp r0, #0x0
+ bne _02066B8E
+ bl FUN_0201B9EC
+ add r4, r0, #0x0
+ bl FUN_0201B9EC
+ lsl r0, r0, #0x10
+ orr r0, r4
+ str r0, [sp, #0x34]
+_02066B8E:
+ add r0, r5, #0x0
+ mov r1, #0x0
+ add r2, sp, #0x34
+ bl FUN_02067960
+ ldr r0, [sp, #0x38]
+ cmp r0, #0x2
+ bne _02066BD6
+ ldr r7, _02066D84 ; =0xFFFF0000
+ add r6, r7, #0x0
+_02066BA2:
+ bl FUN_0201B9EC
+ add r4, r0, #0x0
+ bl FUN_0201B9EC
+ ldr r1, [sp, #0x34]
+ lsl r0, r0, #0x10
+ add r3, r4, #0x0
+ orr r3, r0
+ lsl r0, r1, #0x10
+ lsr r2, r0, #0x10
+ add r0, r1, #0x0
+ and r0, r7
+ lsr r1, r0, #0x10
+ add r0, r3, #0x0
+ str r3, [sp, #0x3c]
+ and r0, r6
+ lsl r3, r3, #0x10
+ lsr r0, r0, #0x10
+ lsr r3, r3, #0x10
+ eor r0, r3
+ eor r0, r1
+ eor r0, r2
+ cmp r0, #0x8
+ blo _02066BA2
+ b _02066BDE
+_02066BD6:
+ cmp r0, #0x1
+ beq _02066BDE
+ mov r0, #0x0
+ str r0, [sp, #0x3c]
+_02066BDE:
+ add r0, r5, #0x0
+ mov r1, #0x7
+ add r2, sp, #0x3c
+ bl FUN_02067960
+ ldr r2, _02066D88 ; =0x020ECAC4
+ add r0, r5, #0x0
+ mov r1, #0xc
+ bl FUN_02067960
+ add r0, r5, #0x0
+ mov r1, #0x5
+ add r2, sp, #0x24
+ bl FUN_02067960
+ add r0, r5, #0x0
+ mov r1, #0xb2
+ mov r2, #0x0
+ bl FUN_02067960
+ ldr r0, [sp, #0x24]
+ ldr r1, [sp, #0x28]
+ bl FUN_02068758
+ str r0, [sp, #0x8]
+ add r0, r5, #0x0
+ mov r1, #0x8
+ add r2, sp, #0x8
+ bl FUN_02067960
+ ldr r0, [sp, #0x24]
+ mov r1, #0x14
+ bl FUN_02068678
+ str r0, [sp, #0x8]
+ add r0, r5, #0x0
+ mov r1, #0x9
+ add r2, sp, #0x8
+ bl FUN_02067960
+ add r0, r5, #0x0
+ mov r1, #0x9b
+ add r2, sp, #0x28
+ bl FUN_02067960
+ ldr r2, _02066D8C ; =0x020ECAC0
+ add r0, r5, #0x0
+ mov r1, #0x79
+ bl FUN_02067960
+ mov r0, #0x4
+ str r0, [sp, #0x8]
+ add r0, r5, #0x0
+ mov r1, #0x9a
+ add r2, sp, #0x8
+ bl FUN_02067960
+ ldr r0, [sp, #0x2c]
+ cmp r0, #0x20
+ bge _02066C94
+ add r0, r5, #0x0
+ mov r1, #0x46
+ add r2, sp, #0x2c
+ bl FUN_02067960
+ add r0, r5, #0x0
+ mov r1, #0x47
+ add r2, sp, #0x2c
+ bl FUN_02067960
+ add r0, r5, #0x0
+ mov r1, #0x48
+ add r2, sp, #0x2c
+ bl FUN_02067960
+ add r0, r5, #0x0
+ mov r1, #0x49
+ add r2, sp, #0x2c
+ bl FUN_02067960
+ add r0, r5, #0x0
+ mov r1, #0x4a
+ add r2, sp, #0x2c
+ bl FUN_02067960
+ add r0, r5, #0x0
+ mov r1, #0x4b
+ add r2, sp, #0x2c
+ bl FUN_02067960
+ b _02066D18
+_02066C94:
+ bl FUN_0201B9EC
+ mov r1, #0x1f
+ str r0, [sp, #0x8]
+ and r0, r1
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ mov r1, #0x46
+ add r2, sp, #0x4
+ bl FUN_02067960
+ mov r0, #0x3e
+ ldr r1, [sp, #0x8]
+ lsl r0, r0, #0x4
+ and r0, r1
+ lsr r0, r0, #0x5
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ mov r1, #0x47
+ add r2, sp, #0x4
+ bl FUN_02067960
+ mov r0, #0x1f
+ ldr r1, [sp, #0x8]
+ lsl r0, r0, #0xa
+ and r0, r1
+ lsr r0, r0, #0xa
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ mov r1, #0x48
+ add r2, sp, #0x4
+ bl FUN_02067960
+ bl FUN_0201B9EC
+ mov r1, #0x1f
+ str r0, [sp, #0x8]
+ and r0, r1
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ mov r1, #0x49
+ add r2, sp, #0x4
+ bl FUN_02067960
+ mov r0, #0x3e
+ ldr r1, [sp, #0x8]
+ lsl r0, r0, #0x4
+ and r0, r1
+ lsr r0, r0, #0x5
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ mov r1, #0x4a
+ add r2, sp, #0x4
+ bl FUN_02067960
+ mov r0, #0x1f
+ ldr r1, [sp, #0x8]
+ lsl r0, r0, #0xa
+ and r0, r1
+ lsr r0, r0, #0xa
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ mov r1, #0x4b
+ add r2, sp, #0x4
+ bl FUN_02067960
+_02066D18:
+ ldr r0, [sp, #0x24]
+ mov r1, #0x18
+ bl FUN_02068678
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x24]
+ mov r1, #0x19
+ bl FUN_02068678
+ str r0, [sp, #0x4]
+ cmp r0, #0x0
+ beq _02066D50
+ ldr r1, [sp, #0x34]
+ mov r0, #0x1
+ tst r0, r1
+ beq _02066D44
+ add r0, r5, #0x0
+ mov r1, #0xa
+ add r2, sp, #0x4
+ bl FUN_02067960
+ b _02066D5A
+_02066D44:
+ add r0, r5, #0x0
+ mov r1, #0xa
+ add r2, sp, #0x8
+ bl FUN_02067960
+ b _02066D5A
+_02066D50:
+ add r0, r5, #0x0
+ mov r1, #0xa
+ add r2, sp, #0x8
+ bl FUN_02067960
+_02066D5A:
+ add r0, r5, #0x0
+ bl FUN_020689E8
+ str r0, [sp, #0x8]
+ add r0, r5, #0x0
+ mov r1, #0x6f
+ add r2, sp, #0x8
+ bl FUN_02067960
+ add r0, r5, #0x0
+ bl FUN_020695F4
+ ldr r1, [sp, #0x0]
+ add r0, r5, #0x0
+ bl FUN_02066A94
+ add sp, #0xc
+ pop {r4-r7}
+ pop {r3}
+ add sp, #0x10
+ bx r3
+ .balign 4
+_02066D84: .word 0xFFFF0000
+_02066D88: .word 0x020ECAC4
+_02066D8C: .word 0x020ECAC0
+
+ thumb_func_start FUN_02066D90
+FUN_02066D90: ; 0x02066D90
+ push {r3-r7, lr}
+ sub sp, #0x18
+ str r2, [sp, #0x10]
+ str r3, [sp, #0x14]
+ ldr r4, [sp, #0x30]
+ add r6, r0, #0x0
+ add r7, r1, #0x0
+_02066D9E:
+ bl FUN_0201B9EC
+ add r5, r0, #0x0
+ bl FUN_0201B9EC
+ lsl r0, r0, #0x10
+ orr r5, r0
+ add r0, r5, #0x0
+ bl FUN_02068884
+ cmp r4, r0
+ bne _02066D9E
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ str r5, [sp, #0x4]
+ mov r0, #0x0
+ str r0, [sp, #0x8]
+ str r0, [sp, #0xc]
+ ldr r2, [sp, #0x10]
+ ldr r3, [sp, #0x14]
+ add r0, r6, #0x0
+ add r1, r7, #0x0
+ bl FUN_02066ACC
+ add sp, #0x18
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02066DD4
+FUN_02066DD4: ; 0x02066DD4
+ push {r4-r7, lr}
+ sub sp, #0x24
+ str r1, [sp, #0x14]
+ str r2, [sp, #0x18]
+ str r3, [sp, #0x1c]
+ str r0, [sp, #0x10]
+ add r0, sp, #0x28
+ ldrb r0, [r0, #0x18]
+ ldr r6, [sp, #0x38]
+ ldr r7, [sp, #0x3c]
+ cmp r0, #0x0
+ beq _02066E4C
+ cmp r0, #0x1d
+ bhs _02066E4C
+ sub r0, r0, #0x1
+ str r0, [sp, #0x20]
+_02066DF4:
+ bl FUN_0201B9EC
+ add r4, r0, #0x0
+ bl FUN_0201B9EC
+ lsl r0, r0, #0x10
+ orr r4, r0
+ mov r3, #0x3
+ lsl r3, r3, #0x10
+ and r3, r4
+ mov r0, #0x3
+ add r2, r4, #0x0
+ and r2, r0
+ lsl r0, r0, #0x8
+ and r0, r4
+ lsr r1, r0, #0x6
+ mov r0, #0x3
+ lsl r0, r0, #0x18
+ and r0, r4
+ lsr r0, r0, #0x12
+ lsr r3, r3, #0xc
+ orr r0, r3
+ orr r0, r1
+ orr r0, r2
+ mov r1, #0x1c
+ blx _u32_div_f
+ lsl r0, r1, #0x10
+ lsr r5, r0, #0x10
+ add r0, r4, #0x0
+ bl FUN_02068884
+ cmp r7, r0
+ bne _02066DF4
+ ldr r0, [sp, #0x14]
+ add r1, r4, #0x0
+ bl FUN_02068A20
+ cmp r6, r0
+ bne _02066DF4
+ ldr r0, [sp, #0x20]
+ cmp r5, r0
+ bne _02066DF4
+ b _02066E58
+_02066E4C:
+ ldr r0, [sp, #0x14]
+ add r1, r6, #0x0
+ add r2, r7, #0x0
+ bl FUN_02066E74
+ add r4, r0, #0x0
+_02066E58:
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ str r4, [sp, #0x4]
+ mov r0, #0x0
+ str r0, [sp, #0x8]
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x14]
+ ldr r2, [sp, #0x18]
+ ldr r3, [sp, #0x1c]
+ bl FUN_02066ACC
+ add sp, #0x24
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_02066E74
+FUN_02066E74: ; 0x02066E74
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ mov r1, #0x12
+ add r4, r2, #0x0
+ bl FUN_02068678
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ beq _02066EA0
+ cmp r0, #0xfe
+ beq _02066EA0
+ cmp r0, #0xff
+ beq _02066EA0
+ cmp r5, #0x0
+ bne _02066EA0
+ mov r1, #0x19
+ blx _s32_div_f
+ add r1, r0, #0x1
+ mov r0, #0x19
+ mul r0, r1
+ add r4, r0, r4
+_02066EA0:
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02066EA4
+FUN_02066EA4: ; 0x02066EA4
+ push {r0-r3}
+ push {r4, lr}
+ sub sp, #0x10
+ mov r3, #0x1
+ str r3, [sp, #0x0]
+ ldr r3, [sp, #0x28]
+ add r4, r0, #0x0
+ str r3, [sp, #0x4]
+ mov r3, #0x0
+ str r3, [sp, #0x8]
+ str r3, [sp, #0xc]
+ bl FUN_02066ACC
+ add r0, r4, #0x0
+ mov r1, #0xae
+ add r2, sp, #0x24
+ bl FUN_02067830
+ add r0, r4, #0x0
+ bl FUN_02066ED8
+ add sp, #0x10
+ pop {r4}
+ pop {r3}
+ add sp, #0x10
+ bx r3
+
+ thumb_func_start FUN_02066ED8
+FUN_02066ED8: ; 0x02066ED8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_020669D4
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_020687C0
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ mov r1, #0xa0
+ add r2, sp, #0x0
+ bl FUN_02067830
+ add r0, r5, #0x0
+ bl FUN_02066F04
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02066A20
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02066F04
+FUN_02066F04: ; 0x02066F04
+ push {r3-r7, lr}
+ sub sp, #0x58
+ add r5, r0, #0x0
+ bl FUN_020669D4
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ mov r1, #0xa0
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0xa3
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0x2c]
+ add r0, r5, #0x0
+ mov r1, #0xa2
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0x54]
+ add r0, r5, #0x0
+ mov r1, #0x46
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0x30]
+ add r0, r5, #0x0
+ mov r1, #0xd
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0x34]
+ add r0, r5, #0x0
+ mov r1, #0x47
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0x28]
+ add r0, r5, #0x0
+ mov r1, #0xe
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0x14]
+ add r0, r5, #0x0
+ mov r1, #0x48
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0x24]
+ add r0, r5, #0x0
+ mov r1, #0xf
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0x10]
+ add r0, r5, #0x0
+ mov r1, #0x49
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0x20]
+ add r0, r5, #0x0
+ mov r1, #0x10
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0xc]
+ add r0, r5, #0x0
+ mov r1, #0x4a
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0x1c]
+ add r0, r5, #0x0
+ mov r1, #0x11
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0x8]
+ add r0, r5, #0x0
+ mov r1, #0x4b
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0x18]
+ add r0, r5, #0x0
+ mov r1, #0x12
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ mov r1, #0x70
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0x38]
+ add r0, r5, #0x0
+ mov r1, #0x5
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r7, r0, #0x0
+ mov r0, #0x0
+ mov r1, #0x2c
+ bl FUN_02016998
+ add r6, r0, #0x0
+ ldr r1, [sp, #0x38]
+ add r0, r7, #0x0
+ add r2, r6, #0x0
+ bl FUN_0206A380
+ mov r0, #0x49
+ lsl r0, r0, #0x2
+ cmp r7, r0
+ bne _02066FFC
+ mov r0, #0x1
+ b _0206701E
+_02066FFC:
+ ldr r0, [sp, #0x34]
+ asr r0, r0, #0x1
+ lsr r1, r0, #0x1e
+ ldr r0, [sp, #0x34]
+ add r1, r0, r1
+ asr r0, r1, #0x2
+ ldrb r1, [r6, #0x0]
+ lsl r2, r1, #0x1
+ ldr r1, [sp, #0x30]
+ add r1, r1, r2
+ add r0, r0, r1
+ mul r0, r4
+ mov r1, #0x64
+ blx _s32_div_f
+ add r0, r4, r0
+ add r0, #0xa
+_0206701E:
+ str r0, [sp, #0x50]
+ add r0, r5, #0x0
+ mov r1, #0xa3
+ add r2, sp, #0x50
+ bl FUN_02067830
+ ldr r0, [sp, #0x14]
+ asr r0, r0, #0x1
+ lsr r1, r0, #0x1e
+ ldr r0, [sp, #0x14]
+ add r1, r0, r1
+ asr r0, r1, #0x2
+ ldrb r1, [r6, #0x1]
+ lsl r2, r1, #0x1
+ ldr r1, [sp, #0x28]
+ add r1, r1, r2
+ add r0, r0, r1
+ mul r0, r4
+ mov r1, #0x64
+ blx _s32_div_f
+ add r0, r0, #0x5
+ str r0, [sp, #0x4c]
+ add r0, r5, #0x0
+ bl FUN_02068854
+ ldr r1, [sp, #0x4c]
+ mov r2, #0x1
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ bl FUN_02068894
+ str r0, [sp, #0x4c]
+ add r0, r5, #0x0
+ mov r1, #0xa4
+ add r2, sp, #0x4c
+ bl FUN_02067830
+ ldr r0, [sp, #0x10]
+ asr r0, r0, #0x1
+ lsr r1, r0, #0x1e
+ ldr r0, [sp, #0x10]
+ add r1, r0, r1
+ asr r0, r1, #0x2
+ ldrb r1, [r6, #0x2]
+ lsl r2, r1, #0x1
+ ldr r1, [sp, #0x24]
+ add r1, r1, r2
+ add r0, r0, r1
+ mul r0, r4
+ mov r1, #0x64
+ blx _s32_div_f
+ add r0, r0, #0x5
+ str r0, [sp, #0x48]
+ add r0, r5, #0x0
+ bl FUN_02068854
+ ldr r1, [sp, #0x48]
+ mov r2, #0x2
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ bl FUN_02068894
+ str r0, [sp, #0x48]
+ add r0, r5, #0x0
+ mov r1, #0xa5
+ add r2, sp, #0x48
+ bl FUN_02067830
+ ldr r0, [sp, #0xc]
+ asr r0, r0, #0x1
+ lsr r1, r0, #0x1e
+ ldr r0, [sp, #0xc]
+ add r1, r0, r1
+ asr r0, r1, #0x2
+ ldrb r1, [r6, #0x3]
+ lsl r2, r1, #0x1
+ ldr r1, [sp, #0x20]
+ add r1, r1, r2
+ add r0, r0, r1
+ mul r0, r4
+ mov r1, #0x64
+ blx _s32_div_f
+ add r0, r0, #0x5
+ str r0, [sp, #0x44]
+ add r0, r5, #0x0
+ bl FUN_02068854
+ ldr r1, [sp, #0x44]
+ mov r2, #0x3
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ bl FUN_02068894
+ str r0, [sp, #0x44]
+ add r0, r5, #0x0
+ mov r1, #0xa6
+ add r2, sp, #0x44
+ bl FUN_02067830
+ ldr r0, [sp, #0x8]
+ asr r0, r0, #0x1
+ lsr r1, r0, #0x1e
+ ldr r0, [sp, #0x8]
+ add r1, r0, r1
+ asr r0, r1, #0x2
+ ldrb r1, [r6, #0x4]
+ lsl r2, r1, #0x1
+ ldr r1, [sp, #0x1c]
+ add r1, r1, r2
+ add r0, r0, r1
+ mul r0, r4
+ mov r1, #0x64
+ blx _s32_div_f
+ add r0, r0, #0x5
+ str r0, [sp, #0x40]
+ add r0, r5, #0x0
+ bl FUN_02068854
+ ldr r1, [sp, #0x40]
+ mov r2, #0x4
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ bl FUN_02068894
+ str r0, [sp, #0x40]
+ add r0, r5, #0x0
+ mov r1, #0xa7
+ add r2, sp, #0x40
+ bl FUN_02067830
+ ldr r0, [sp, #0x4]
+ asr r0, r0, #0x1
+ lsr r1, r0, #0x1e
+ ldr r0, [sp, #0x4]
+ add r1, r0, r1
+ asr r0, r1, #0x2
+ ldrb r1, [r6, #0x5]
+ lsl r2, r1, #0x1
+ ldr r1, [sp, #0x18]
+ add r1, r1, r2
+ add r0, r0, r1
+ mul r0, r4
+ mov r1, #0x64
+ blx _s32_div_f
+ add r0, r0, #0x5
+ str r0, [sp, #0x3c]
+ add r0, r5, #0x0
+ bl FUN_02068854
+ ldr r1, [sp, #0x3c]
+ mov r2, #0x5
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ bl FUN_02068894
+ str r0, [sp, #0x3c]
+ add r0, r5, #0x0
+ mov r1, #0xa8
+ add r2, sp, #0x3c
+ bl FUN_02067830
+ add r0, r6, #0x0
+ bl FUN_02016A18
+ ldr r1, [sp, #0x54]
+ cmp r1, #0x0
+ bne _0206717C
+ ldr r0, [sp, #0x2c]
+ cmp r0, #0x0
+ bne _020671A0
+_0206717C:
+ mov r0, #0x49
+ lsl r0, r0, #0x2
+ cmp r7, r0
+ bne _0206718A
+ mov r0, #0x1
+ str r0, [sp, #0x54]
+ b _020671A0
+_0206718A:
+ cmp r1, #0x0
+ bne _02067194
+ ldr r0, [sp, #0x50]
+ str r0, [sp, #0x54]
+ b _020671A0
+_02067194:
+ ldr r1, [sp, #0x50]
+ ldr r0, [sp, #0x2c]
+ ldr r2, [sp, #0x54]
+ sub r0, r1, r0
+ add r0, r2, r0
+ str r0, [sp, #0x54]
+_020671A0:
+ ldr r0, [sp, #0x54]
+ cmp r0, #0x0
+ beq _020671B0
+ add r0, r5, #0x0
+ mov r1, #0xa2
+ add r2, sp, #0x54
+ bl FUN_02067830
+_020671B0:
+ ldr r1, [sp, #0x0]
+ add r0, r5, #0x0
+ bl FUN_02066A20
+ add sp, #0x58
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_020671BC
+FUN_020671BC: ; 0x020671BC
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldrh r0, [r5, #0x4]
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ lsl r0, r0, #0x1f
+ lsr r0, r0, #0x1f
+ bne _02067204
+ add r0, r5, #0x0
+ ldr r2, [r5, #0x0]
+ add r0, #0x88
+ mov r1, #0x64
+ bl FUN_0206A3D0
+ add r0, r5, #0x0
+ ldrh r2, [r5, #0x6]
+ add r0, #0x8
+ mov r1, #0x80
+ bl FUN_0206A3D0
+ add r0, r5, #0x0
+ add r0, #0x8
+ mov r1, #0x80
+ bl FUN_0206A3F8
+ ldrh r1, [r5, #0x6]
+ cmp r0, r1
+ beq _02067204
+ cmp r0, r1
+ beq _020671FC
+ bl ErrorHandling
+_020671FC:
+ ldrh r1, [r5, #0x4]
+ mov r0, #0x4
+ orr r0, r1
+ strh r0, [r5, #0x4]
+_02067204:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_02067234
+ add r4, r0, #0x0
+ ldrh r0, [r5, #0x4]
+ lsl r0, r0, #0x1f
+ lsr r0, r0, #0x1f
+ bne _02067230
+ add r0, r5, #0x0
+ ldr r2, [r5, #0x0]
+ add r0, #0x88
+ mov r1, #0x64
+ bl FUN_0206A3A4
+ add r0, r5, #0x0
+ ldrh r2, [r5, #0x6]
+ add r0, #0x8
+ mov r1, #0x80
+ bl FUN_0206A3A4
+_02067230:
+ add r0, r4, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02067234
+FUN_02067234: ; 0x02067234
+ push {r3, lr}
+ add r3, r1, #0x0
+ sub r3, #0x9f
+ cmp r3, #0xb
+ bhi _020672B6
+ add r3, r3, r3
+ add r3, pc
+ ldrh r3, [r3, #0x6]
+ lsl r3, r3, #0x10
+ asr r3, r3, #0x10
+ add pc, r3
+_0206724A: ; jump table (using 16-bit offset)
+ .short _02067262 - _0206724A - 2; case 0
+ .short _02067268 - _0206724A - 2; case 1
+ .short _0206726E - _0206724A - 2; case 2
+ .short _02067274 - _0206724A - 2; case 3
+ .short _0206727A - _0206724A - 2; case 4
+ .short _02067280 - _0206724A - 2; case 5
+ .short _02067286 - _0206724A - 2; case 6
+ .short _0206728C - _0206724A - 2; case 7
+ .short _02067292 - _0206724A - 2; case 8
+ .short _02067298 - _0206724A - 2; case 9
+ .short _0206729E - _0206724A - 2; case 10
+ .short _020672AA - _0206724A - 2; case 11
+_02067262:
+ add r0, #0x88
+ ldr r0, [r0, #0x0]
+ pop {r3, pc}
+_02067268:
+ add r0, #0x8c
+ ldrb r0, [r0, #0x0]
+ pop {r3, pc}
+_0206726E:
+ add r0, #0x8d
+ ldrb r0, [r0, #0x0]
+ pop {r3, pc}
+_02067274:
+ add r0, #0x8e
+ ldrh r0, [r0, #0x0]
+ pop {r3, pc}
+_0206727A:
+ add r0, #0x90
+ ldrh r0, [r0, #0x0]
+ pop {r3, pc}
+_02067280:
+ add r0, #0x92
+ ldrh r0, [r0, #0x0]
+ pop {r3, pc}
+_02067286:
+ add r0, #0x94
+ ldrh r0, [r0, #0x0]
+ pop {r3, pc}
+_0206728C:
+ add r0, #0x96
+ ldrh r0, [r0, #0x0]
+ pop {r3, pc}
+_02067292:
+ add r0, #0x98
+ ldrh r0, [r0, #0x0]
+ pop {r3, pc}
+_02067298:
+ add r0, #0x9a
+ ldrh r0, [r0, #0x0]
+ pop {r3, pc}
+_0206729E:
+ add r0, #0x9c
+ add r1, r2, #0x0
+ bl FUN_020256D0
+ mov r0, #0x1
+ pop {r3, pc}
+_020672AA:
+ add r0, #0xd4
+ add r1, r2, #0x0
+ bl FUN_02029C74
+ mov r0, #0x1
+ pop {r3, pc}
+_020672B6:
+ bl FUN_0206731C
+ pop {r3, pc}
+
+ thumb_func_start FUN_020672BC
+FUN_020672BC: ; 0x020672BC
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldrh r0, [r5, #0x4]
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ lsl r0, r0, #0x1e
+ lsr r0, r0, #0x1f
+ bne _020672F8
+ ldrh r2, [r5, #0x6]
+ add r0, r5, #0x0
+ add r0, #0x8
+ mov r1, #0x80
+ bl FUN_0206A3D0
+ add r0, r5, #0x0
+ add r0, #0x8
+ mov r1, #0x80
+ bl FUN_0206A3F8
+ ldrh r1, [r5, #0x6]
+ cmp r0, r1
+ beq _020672F8
+ cmp r0, r1
+ beq _020672F0
+ bl ErrorHandling
+_020672F0:
+ ldrh r1, [r5, #0x4]
+ mov r0, #0x4
+ orr r0, r1
+ strh r0, [r5, #0x4]
+_020672F8:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_0206731C
+ add r4, r0, #0x0
+ ldrh r0, [r5, #0x4]
+ lsl r0, r0, #0x1e
+ lsr r0, r0, #0x1f
+ bne _02067318
+ ldrh r2, [r5, #0x6]
+ add r0, r5, #0x0
+ add r0, #0x8
+ mov r1, #0x80
+ bl FUN_0206A3A4
+_02067318:
+ add r0, r4, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0206731C
+FUN_0206731C: ; 0x0206731C
+ push {r4-r7, lr}
+ sub sp, #0xc
+ str r1, [sp, #0x4]
+ add r1, r0, #0x0
+ mov r4, #0x0
+ str r2, [sp, #0x8]
+ ldr r1, [r1, #0x0]
+ str r0, [sp, #0x0]
+ add r2, r4, #0x0
+ bl FUN_0206A418
+ add r5, r0, #0x0
+ ldr r0, [sp, #0x0]
+ mov r2, #0x1
+ add r1, r0, #0x0
+ ldr r1, [r1, #0x0]
+ bl FUN_0206A418
+ add r6, r0, #0x0
+ ldr r0, [sp, #0x0]
+ mov r2, #0x2
+ add r1, r0, #0x0
+ ldr r1, [r1, #0x0]
+ bl FUN_0206A418
+ add r7, r0, #0x0
+ ldr r0, [sp, #0x0]
+ mov r2, #0x3
+ add r1, r0, #0x0
+ ldr r1, [r1, #0x0]
+ bl FUN_0206A418
+ add r1, r0, #0x0
+ ldr r0, [sp, #0x4]
+ cmp r0, #0xb2
+ bls _02067366
+ b _020674D8
+_02067366:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02067372: ; jump table (using 16-bit offset)
+ .short _020674DC - _02067372 - 2; case 0
+ .short _020674E2 - _02067372 - 2; case 1
+ .short _020674EC - _02067372 - 2; case 2
+ .short _020674F6 - _02067372 - 2; case 3
+ .short _02067500 - _02067372 - 2; case 4
+ .short _0206754C - _02067372 - 2; case 5
+ .short _0206755E - _02067372 - 2; case 6
+ .short _02067562 - _02067372 - 2; case 7
+ .short _02067566 - _02067372 - 2; case 8
+ .short _0206756A - _02067372 - 2; case 9
+ .short _0206756E - _02067372 - 2; case 10
+ .short _02067572 - _02067372 - 2; case 11
+ .short _02067576 - _02067372 - 2; case 12
+ .short _0206757A - _02067372 - 2; case 13
+ .short _0206757E - _02067372 - 2; case 14
+ .short _02067582 - _02067372 - 2; case 15
+ .short _02067586 - _02067372 - 2; case 16
+ .short _0206758A - _02067372 - 2; case 17
+ .short _0206758E - _02067372 - 2; case 18
+ .short _02067592 - _02067372 - 2; case 19
+ .short _02067596 - _02067372 - 2; case 20
+ .short _0206759A - _02067372 - 2; case 21
+ .short _0206759E - _02067372 - 2; case 22
+ .short _020675A2 - _02067372 - 2; case 23
+ .short _020675A6 - _02067372 - 2; case 24
+ .short _020675AA - _02067372 - 2; case 25
+ .short _020675AA - _02067372 - 2; case 26
+ .short _020675AA - _02067372 - 2; case 27
+ .short _020675AA - _02067372 - 2; case 28
+ .short _020675AA - _02067372 - 2; case 29
+ .short _020675AA - _02067372 - 2; case 30
+ .short _020675AA - _02067372 - 2; case 31
+ .short _020675AA - _02067372 - 2; case 32
+ .short _020675AA - _02067372 - 2; case 33
+ .short _020675AA - _02067372 - 2; case 34
+ .short _020675AA - _02067372 - 2; case 35
+ .short _020675AA - _02067372 - 2; case 36
+ .short _020675AA - _02067372 - 2; case 37
+ .short _020675AA - _02067372 - 2; case 38
+ .short _020675AA - _02067372 - 2; case 39
+ .short _020675AA - _02067372 - 2; case 40
+ .short _020675AA - _02067372 - 2; case 41
+ .short _020675AA - _02067372 - 2; case 42
+ .short _020675AA - _02067372 - 2; case 43
+ .short _020675AA - _02067372 - 2; case 44
+ .short _020675AA - _02067372 - 2; case 45
+ .short _020675AA - _02067372 - 2; case 46
+ .short _020675AA - _02067372 - 2; case 47
+ .short _020675AA - _02067372 - 2; case 48
+ .short _020675AA - _02067372 - 2; case 49
+ .short _020675AA - _02067372 - 2; case 50
+ .short _020675AA - _02067372 - 2; case 51
+ .short _020675AA - _02067372 - 2; case 52
+ .short _020675AA - _02067372 - 2; case 53
+ .short _020675D0 - _02067372 - 2; case 54
+ .short _020675D0 - _02067372 - 2; case 55
+ .short _020675D0 - _02067372 - 2; case 56
+ .short _020675D0 - _02067372 - 2; case 57
+ .short _020675DC - _02067372 - 2; case 58
+ .short _020675DC - _02067372 - 2; case 59
+ .short _020675DC - _02067372 - 2; case 60
+ .short _020675DC - _02067372 - 2; case 61
+ .short _020675E8 - _02067372 - 2; case 62
+ .short _020675E8 - _02067372 - 2; case 63
+ .short _020675E8 - _02067372 - 2; case 64
+ .short _020675E8 - _02067372 - 2; case 65
+ .short _020675F4 - _02067372 - 2; case 66
+ .short _020675F4 - _02067372 - 2; case 67
+ .short _020675F4 - _02067372 - 2; case 68
+ .short _020675F4 - _02067372 - 2; case 69
+ .short _0206760C - _02067372 - 2; case 70
+ .short _02067614 - _02067372 - 2; case 71
+ .short _0206761C - _02067372 - 2; case 72
+ .short _02067624 - _02067372 - 2; case 73
+ .short _0206762C - _02067372 - 2; case 74
+ .short _02067634 - _02067372 - 2; case 75
+ .short _0206763C - _02067372 - 2; case 76
+ .short _0206764E - _02067372 - 2; case 77
+ .short _02067654 - _02067372 - 2; case 78
+ .short _02067654 - _02067372 - 2; case 79
+ .short _02067654 - _02067372 - 2; case 80
+ .short _02067654 - _02067372 - 2; case 81
+ .short _02067654 - _02067372 - 2; case 82
+ .short _02067654 - _02067372 - 2; case 83
+ .short _02067654 - _02067372 - 2; case 84
+ .short _02067654 - _02067372 - 2; case 85
+ .short _02067654 - _02067372 - 2; case 86
+ .short _02067654 - _02067372 - 2; case 87
+ .short _02067654 - _02067372 - 2; case 88
+ .short _02067654 - _02067372 - 2; case 89
+ .short _02067654 - _02067372 - 2; case 90
+ .short _02067654 - _02067372 - 2; case 91
+ .short _02067654 - _02067372 - 2; case 92
+ .short _02067654 - _02067372 - 2; case 93
+ .short _02067654 - _02067372 - 2; case 94
+ .short _02067654 - _02067372 - 2; case 95
+ .short _02067654 - _02067372 - 2; case 96
+ .short _02067654 - _02067372 - 2; case 97
+ .short _02067654 - _02067372 - 2; case 98
+ .short _02067654 - _02067372 - 2; case 99
+ .short _02067654 - _02067372 - 2; case 100
+ .short _02067654 - _02067372 - 2; case 101
+ .short _02067654 - _02067372 - 2; case 102
+ .short _02067654 - _02067372 - 2; case 103
+ .short _02067654 - _02067372 - 2; case 104
+ .short _02067654 - _02067372 - 2; case 105
+ .short _02067654 - _02067372 - 2; case 106
+ .short _02067654 - _02067372 - 2; case 107
+ .short _02067654 - _02067372 - 2; case 108
+ .short _02067654 - _02067372 - 2; case 109
+ .short _0206767C - _02067372 - 2; case 110
+ .short _02067684 - _02067372 - 2; case 111
+ .short _0206768C - _02067372 - 2; case 112
+ .short _02067694 - _02067372 - 2; case 113
+ .short _02067698 - _02067372 - 2; case 114
+ .short _020674D8 - _02067372 - 2; case 115
+ .short _0206769C - _02067372 - 2; case 116
+ .short _020674D8 - _02067372 - 2; case 117
+ .short _020676D0 - _02067372 - 2; case 118
+ .short _020676CC - _02067372 - 2; case 119
+ .short _020676FE - _02067372 - 2; case 120
+ .short _02067702 - _02067372 - 2; case 121
+ .short _02067706 - _02067372 - 2; case 122
+ .short _02067706 - _02067372 - 2; case 123
+ .short _02067706 - _02067372 - 2; case 124
+ .short _02067706 - _02067372 - 2; case 125
+ .short _02067706 - _02067372 - 2; case 126
+ .short _02067706 - _02067372 - 2; case 127
+ .short _02067706 - _02067372 - 2; case 128
+ .short _02067706 - _02067372 - 2; case 129
+ .short _02067706 - _02067372 - 2; case 130
+ .short _02067706 - _02067372 - 2; case 131
+ .short _02067706 - _02067372 - 2; case 132
+ .short _02067706 - _02067372 - 2; case 133
+ .short _02067706 - _02067372 - 2; case 134
+ .short _02067706 - _02067372 - 2; case 135
+ .short _02067706 - _02067372 - 2; case 136
+ .short _02067706 - _02067372 - 2; case 137
+ .short _02067706 - _02067372 - 2; case 138
+ .short _02067706 - _02067372 - 2; case 139
+ .short _02067706 - _02067372 - 2; case 140
+ .short _02067706 - _02067372 - 2; case 141
+ .short _02067706 - _02067372 - 2; case 142
+ .short _0206772C - _02067372 - 2; case 143
+ .short _02067746 - _02067372 - 2; case 144
+ .short _0206774E - _02067372 - 2; case 145
+ .short _02067752 - _02067372 - 2; case 146
+ .short _02067756 - _02067372 - 2; case 147
+ .short _0206775A - _02067372 - 2; case 148
+ .short _0206775E - _02067372 - 2; case 149
+ .short _02067762 - _02067372 - 2; case 150
+ .short _02067766 - _02067372 - 2; case 151
+ .short _0206776A - _02067372 - 2; case 152
+ .short _0206776E - _02067372 - 2; case 153
+ .short _02067772 - _02067372 - 2; case 154
+ .short _02067776 - _02067372 - 2; case 155
+ .short _0206777E - _02067372 - 2; case 156
+ .short _02067786 - _02067372 - 2; case 157
+ .short _0206778A - _02067372 - 2; case 158
+ .short _020674D8 - _02067372 - 2; case 159
+ .short _02067540 - _02067372 - 2; case 160
+ .short _020674D8 - _02067372 - 2; case 161
+ .short _020674D8 - _02067372 - 2; case 162
+ .short _020674D8 - _02067372 - 2; case 163
+ .short _020674D8 - _02067372 - 2; case 164
+ .short _020674D8 - _02067372 - 2; case 165
+ .short _020674D8 - _02067372 - 2; case 166
+ .short _020674D8 - _02067372 - 2; case 167
+ .short _020674D8 - _02067372 - 2; case 168
+ .short _020674D8 - _02067372 - 2; case 169
+ .short _020674D8 - _02067372 - 2; case 170
+ .short _02067506 - _02067372 - 2; case 171
+ .short _02067510 - _02067372 - 2; case 172
+ .short _02067522 - _02067372 - 2; case 173
+ .short _0206778E - _02067372 - 2; case 174
+ .short _020677C0 - _02067372 - 2; case 175
+ .short _020677D8 - _02067372 - 2; case 176
+ .short _020677D8 - _02067372 - 2; case 177
+ .short _02067810 - _02067372 - 2; case 178
+_020674D8:
+ mov r4, #0x0
+ b _0206781A
+_020674DC:
+ ldr r0, [sp, #0x0]
+ ldr r4, [r0, #0x0]
+ b _0206781A
+_020674E2:
+ ldr r0, [sp, #0x0]
+ ldrh r0, [r0, #0x4]
+ lsl r0, r0, #0x1f
+ lsr r4, r0, #0x1f
+ b _0206781A
+_020674EC:
+ ldr r0, [sp, #0x0]
+ ldrh r0, [r0, #0x4]
+ lsl r0, r0, #0x1e
+ lsr r4, r0, #0x1f
+ b _0206781A
+_020674F6:
+ ldr r0, [sp, #0x0]
+ ldrh r0, [r0, #0x4]
+ lsl r0, r0, #0x1d
+ lsr r4, r0, #0x1f
+ b _0206781A
+_02067500:
+ ldr r0, [sp, #0x0]
+ ldrh r4, [r0, #0x6]
+ b _0206781A
+_02067506:
+ ldrh r0, [r5, #0x0]
+ cmp r0, #0x0
+ beq _0206753A
+ mov r4, #0x1
+ b _0206781A
+_02067510:
+ ldr r0, [sp, #0x0]
+ ldrh r0, [r0, #0x4]
+ lsl r0, r0, #0x1d
+ lsr r4, r0, #0x1f
+ bne _0206753A
+ ldr r0, [r6, #0x10]
+ lsl r0, r0, #0x1
+ lsr r4, r0, #0x1f
+ b _0206781A
+_02067522:
+ ldrh r4, [r5, #0x0]
+ cmp r4, #0x0
+ beq _0206753A
+ ldr r0, [r6, #0x10]
+ lsl r0, r0, #0x1
+ lsr r0, r0, #0x1f
+ bne _0206753C
+ ldr r0, [sp, #0x0]
+ ldrh r0, [r0, #0x4]
+ lsl r0, r0, #0x1d
+ lsr r0, r0, #0x1f
+ bne _0206753C
+_0206753A:
+ b _0206781A
+_0206753C:
+ ldr r4, _02067820 ; =0x000001EE
+ b _0206781A
+_02067540:
+ ldrh r0, [r5, #0x0]
+ ldr r1, [r5, #0x8]
+ bl FUN_02068800
+ add r4, r0, #0x0
+ b _0206781A
+_0206754C:
+ ldr r0, [sp, #0x0]
+ ldrh r0, [r0, #0x4]
+ lsl r0, r0, #0x1d
+ lsr r0, r0, #0x1f
+ beq _0206755A
+ ldr r4, _02067820 ; =0x000001EE
+ b _0206781A
+_0206755A:
+ ldrh r4, [r5, #0x0]
+ b _0206781A
+_0206755E:
+ ldrh r4, [r5, #0x2]
+ b _0206781A
+_02067562:
+ ldr r4, [r5, #0x4]
+ b _0206781A
+_02067566:
+ ldr r4, [r5, #0x8]
+ b _0206781A
+_0206756A:
+ ldrb r4, [r5, #0xc]
+ b _0206781A
+_0206756E:
+ ldrb r4, [r5, #0xd]
+ b _0206781A
+_02067572:
+ ldrb r4, [r5, #0xe]
+ b _0206781A
+_02067576:
+ ldrb r4, [r5, #0xf]
+ b _0206781A
+_0206757A:
+ ldrb r4, [r5, #0x10]
+ b _0206781A
+_0206757E:
+ ldrb r4, [r5, #0x11]
+ b _0206781A
+_02067582:
+ ldrb r4, [r5, #0x12]
+ b _0206781A
+_02067586:
+ ldrb r4, [r5, #0x13]
+ b _0206781A
+_0206758A:
+ ldrb r4, [r5, #0x14]
+ b _0206781A
+_0206758E:
+ ldrb r4, [r5, #0x15]
+ b _0206781A
+_02067592:
+ ldrb r4, [r5, #0x16]
+ b _0206781A
+_02067596:
+ ldrb r4, [r5, #0x17]
+ b _0206781A
+_0206759A:
+ ldrb r4, [r5, #0x18]
+ b _0206781A
+_0206759E:
+ ldrb r4, [r5, #0x19]
+ b _0206781A
+_020675A2:
+ ldrb r4, [r5, #0x1a]
+ b _0206781A
+_020675A6:
+ ldrb r4, [r5, #0x1b]
+ b _0206781A
+_020675AA:
+ ldr r2, [sp, #0x4]
+ mov r0, #0x1
+ sub r2, #0x19
+ add r1, r4, #0x0
+ str r2, [sp, #0x4]
+ blx _ll_shl
+ ldr r2, [r5, #0x1c]
+ add r3, r4, #0x0
+ and r3, r1
+ and r2, r0
+ mov r1, #0x0
+ mov r0, #0x0
+ eor r1, r3
+ eor r0, r2
+ orr r0, r1
+ beq _02067676
+ mov r4, #0x1
+ b _0206781A
+_020675D0:
+ ldr r0, [sp, #0x4]
+ sub r0, #0x36
+ str r0, [sp, #0x4]
+ lsl r0, r0, #0x1
+ ldrh r4, [r6, r0]
+ b _0206781A
+_020675DC:
+ ldr r0, [sp, #0x4]
+ sub r0, #0x3a
+ str r0, [sp, #0x4]
+ add r0, r6, r0
+ ldrb r4, [r0, #0x8]
+ b _0206781A
+_020675E8:
+ ldr r0, [sp, #0x4]
+ sub r0, #0x3e
+ str r0, [sp, #0x4]
+ add r0, r6, r0
+ ldrb r4, [r0, #0xc]
+ b _0206781A
+_020675F4:
+ ldr r0, [sp, #0x4]
+ sub r0, #0x42
+ str r0, [sp, #0x4]
+ ldr r1, [sp, #0x4]
+ lsl r0, r0, #0x1
+ add r1, r6, r1
+ ldrh r0, [r6, r0]
+ ldrb r1, [r1, #0xc]
+ bl FUN_0206AB30
+ add r4, r0, #0x0
+ b _0206781A
+_0206760C:
+ ldr r0, [r6, #0x10]
+ lsl r0, r0, #0x1b
+ lsr r4, r0, #0x1b
+ b _0206781A
+_02067614:
+ ldr r0, [r6, #0x10]
+ lsl r0, r0, #0x16
+ lsr r4, r0, #0x1b
+ b _0206781A
+_0206761C:
+ ldr r0, [r6, #0x10]
+ lsl r0, r0, #0x11
+ lsr r4, r0, #0x1b
+ b _0206781A
+_02067624:
+ ldr r0, [r6, #0x10]
+ lsl r0, r0, #0xc
+ lsr r4, r0, #0x1b
+ b _0206781A
+_0206762C:
+ ldr r0, [r6, #0x10]
+ lsl r0, r0, #0x7
+ lsr r4, r0, #0x1b
+ b _0206781A
+_02067634:
+ ldr r0, [r6, #0x10]
+ lsl r0, r0, #0x2
+ lsr r4, r0, #0x1b
+ b _0206781A
+_0206763C:
+ ldr r0, [sp, #0x0]
+ ldrh r0, [r0, #0x4]
+ lsl r0, r0, #0x1d
+ lsr r4, r0, #0x1f
+ bne _02067676
+ ldr r0, [r6, #0x10]
+ lsl r0, r0, #0x1
+ lsr r4, r0, #0x1f
+ b _0206781A
+_0206764E:
+ ldr r0, [r6, #0x10]
+ lsr r4, r0, #0x1f
+ b _0206781A
+_02067654:
+ ldr r2, [sp, #0x4]
+ mov r0, #0x1
+ sub r2, #0x4e
+ add r1, r4, #0x0
+ str r2, [sp, #0x4]
+ blx _ll_shl
+ ldr r2, [r6, #0x14]
+ add r3, r4, #0x0
+ and r3, r1
+ and r2, r0
+ mov r1, #0x0
+ mov r0, #0x0
+ eor r1, r3
+ eor r0, r2
+ orr r0, r1
+ bne _02067678
+_02067676:
+ b _0206781A
+_02067678:
+ mov r4, #0x1
+ b _0206781A
+_0206767C:
+ ldrb r0, [r6, #0x18]
+ lsl r0, r0, #0x1f
+ lsr r4, r0, #0x1f
+ b _0206781A
+_02067684:
+ ldrb r0, [r6, #0x18]
+ lsl r0, r0, #0x1d
+ lsr r4, r0, #0x1e
+ b _0206781A
+_0206768C:
+ ldrb r0, [r6, #0x18]
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x1b
+ b _0206781A
+_02067694:
+ ldrb r4, [r6, #0x19]
+ b _0206781A
+_02067698:
+ ldrh r4, [r6, #0x1a]
+ b _0206781A
+_0206769C:
+ ldr r0, [sp, #0x0]
+ ldrh r0, [r0, #0x4]
+ lsl r0, r0, #0x1d
+ lsr r0, r0, #0x1f
+ beq _020676B2
+ ldr r0, _02067824 ; =0x000001EF
+ ldr r2, [sp, #0x8]
+ add r1, r4, #0x0
+ bl FUN_0200A99C
+ b _0206781A
+_020676B2:
+ ldr r1, [sp, #0x8]
+_020676B4:
+ ldrh r0, [r7, #0x0]
+ add r4, r4, #0x1
+ add r7, r7, #0x2
+ strh r0, [r1, #0x0]
+ add r1, r1, #0x2
+ cmp r4, #0xa
+ blo _020676B4
+ ldr r2, _02067828 ; =0x0000FFFF
+ ldr r0, [sp, #0x8]
+ lsl r1, r4, #0x1
+ strh r2, [r0, r1]
+ b _0206781A
+_020676CC:
+ ldr r0, [r6, #0x10]
+ lsr r4, r0, #0x1f
+_020676D0:
+ ldr r0, [sp, #0x0]
+ ldrh r0, [r0, #0x4]
+ lsl r0, r0, #0x1d
+ lsr r0, r0, #0x1f
+ beq _020676F4
+ ldr r0, _02067824 ; =0x000001EF
+ mov r1, #0x0
+ bl FUN_0200AA50
+ add r5, r0, #0x0
+ ldr r0, [sp, #0x8]
+ add r1, r5, #0x0
+ bl FUN_02021A74
+ add r0, r5, #0x0
+ bl FUN_02021A20
+ b _0206781A
+_020676F4:
+ ldr r0, [sp, #0x8]
+ add r1, r7, #0x0
+ bl FUN_02021E28
+ b _0206781A
+_020676FE:
+ ldrb r4, [r7, #0x16]
+ b _0206781A
+_02067702:
+ ldrb r4, [r7, #0x17]
+ b _0206781A
+_02067706:
+ ldr r2, [sp, #0x4]
+ mov r0, #0x1
+ sub r2, #0x7a
+ add r1, r4, #0x0
+ str r2, [sp, #0x4]
+ blx _ll_shl
+ ldr r3, [r7, #0x18]
+ ldr r2, [r7, #0x1c]
+ and r3, r0
+ and r2, r1
+ mov r1, #0x0
+ mov r0, #0x0
+ eor r1, r2
+ eor r0, r3
+ orr r0, r1
+ beq _0206781A
+ mov r4, #0x1
+ b _0206781A
+_0206772C:
+ ldr r2, [sp, #0x8]
+_0206772E:
+ ldrh r0, [r1, #0x0]
+ add r4, r4, #0x1
+ add r1, r1, #0x2
+ strh r0, [r2, #0x0]
+ add r2, r2, #0x2
+ cmp r4, #0x7
+ blo _0206772E
+ ldr r2, _02067828 ; =0x0000FFFF
+ ldr r0, [sp, #0x8]
+ lsl r1, r4, #0x1
+ strh r2, [r0, r1]
+ b _0206781A
+_02067746:
+ ldr r0, [sp, #0x8]
+ bl FUN_02021E28
+ b _0206781A
+_0206774E:
+ ldrb r4, [r1, #0x10]
+ b _0206781A
+_02067752:
+ ldrb r4, [r1, #0x11]
+ b _0206781A
+_02067756:
+ ldrb r4, [r1, #0x12]
+ b _0206781A
+_0206775A:
+ ldrb r4, [r1, #0x13]
+ b _0206781A
+_0206775E:
+ ldrb r4, [r1, #0x14]
+ b _0206781A
+_02067762:
+ ldrb r4, [r1, #0x15]
+ b _0206781A
+_02067766:
+ ldrh r4, [r1, #0x16]
+ b _0206781A
+_0206776A:
+ ldrh r4, [r1, #0x18]
+ b _0206781A
+_0206776E:
+ ldrb r4, [r1, #0x1a]
+ b _0206781A
+_02067772:
+ ldrb r4, [r1, #0x1b]
+ b _0206781A
+_02067776:
+ ldrb r0, [r1, #0x1c]
+ lsl r0, r0, #0x19
+ lsr r4, r0, #0x19
+ b _0206781A
+_0206777E:
+ ldrb r0, [r1, #0x1c]
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x1f
+ b _0206781A
+_02067786:
+ ldrb r4, [r1, #0x1d]
+ b _0206781A
+_0206778A:
+ ldrh r4, [r1, #0x1e]
+ b _0206781A
+_0206778E:
+ ldr r4, [r6, #0x10]
+ lsl r0, r4, #0x2
+ lsr r0, r0, #0x1b
+ lsl r5, r0, #0x19
+ lsl r0, r4, #0x7
+ lsr r0, r0, #0x1b
+ lsl r3, r0, #0x14
+ lsl r0, r4, #0xc
+ lsr r0, r0, #0x1b
+ lsl r2, r0, #0xf
+ lsl r0, r4, #0x11
+ lsr r0, r0, #0x1b
+ lsl r1, r0, #0xa
+ lsl r0, r4, #0x1b
+ lsl r4, r4, #0x16
+ lsr r4, r4, #0x1b
+ lsr r0, r0, #0x1b
+ lsl r4, r4, #0x5
+ orr r0, r4
+ orr r0, r1
+ orr r0, r2
+ orr r0, r3
+ add r4, r5, #0x0
+ orr r4, r0
+ b _0206781A
+_020677C0:
+ ldrh r0, [r5, #0x0]
+ cmp r0, #0x1d
+ beq _020677CA
+ cmp r0, #0x20
+ bne _020677D4
+_020677CA:
+ ldr r0, [r6, #0x10]
+ lsr r0, r0, #0x1f
+ bne _020677D4
+ mov r4, #0x0
+ b _0206781A
+_020677D4:
+ mov r4, #0x1
+ b _0206781A
+_020677D8:
+ ldrh r0, [r5, #0x0]
+ ldr r1, _0206782C ; =0x000001ED
+ cmp r0, r1
+ bne _020677FC
+ ldrb r1, [r5, #0xd]
+ cmp r1, #0x79
+ bne _020677FC
+ ldrh r0, [r5, #0x2]
+ mov r1, #0x1
+ add r2, r4, #0x0
+ bl FUN_0206E7B8
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_02069F24
+ add r4, r0, #0x0
+ b _0206781A
+_020677FC:
+ ldrb r1, [r6, #0x18]
+ ldr r2, [sp, #0x4]
+ lsl r1, r1, #0x18
+ sub r2, #0xaa
+ lsr r1, r1, #0x1b
+ str r2, [sp, #0x4]
+ bl FUN_02068654
+ add r4, r0, #0x0
+ b _0206781A
+_02067810:
+ ldrh r0, [r5, #0x0]
+ ldr r2, [sp, #0x8]
+ add r1, r4, #0x0
+ bl FUN_0200A99C
+_0206781A:
+ add r0, r4, #0x0
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+_02067820: .word 0x000001EE
+_02067824: .word 0x000001EF
+_02067828: .word 0x0000FFFF
+_0206782C: .word 0x000001ED
+
+ thumb_func_start FUN_02067830
+FUN_02067830: ; 0x02067830
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldrh r0, [r5, #0x4]
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ lsl r0, r0, #0x1f
+ lsr r0, r0, #0x1f
+ bne _02067886
+ add r0, r5, #0x0
+ ldr r2, [r5, #0x0]
+ add r0, #0x88
+ mov r1, #0x64
+ bl FUN_0206A3D0
+ add r0, r5, #0x0
+ ldrh r2, [r5, #0x6]
+ add r0, #0x8
+ mov r1, #0x80
+ bl FUN_0206A3D0
+ add r0, r5, #0x0
+ add r0, #0x8
+ mov r1, #0x80
+ bl FUN_0206A3F8
+ ldrh r1, [r5, #0x6]
+ cmp r0, r1
+ beq _02067886
+ cmp r0, r1
+ beq _02067870
+ bl ErrorHandling
+_02067870:
+ ldrh r1, [r5, #0x4]
+ mov r0, #0x4
+ orr r0, r1
+ strh r0, [r5, #0x4]
+ ldrh r2, [r5, #0x6]
+ add r0, r5, #0x0
+ add r0, #0x8
+ mov r1, #0x80
+ bl FUN_0206A3A4
+ pop {r4-r6, pc}
+_02067886:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_020678C0
+ ldrh r0, [r5, #0x4]
+ lsl r0, r0, #0x1f
+ lsr r0, r0, #0x1f
+ bne _020678BC
+ add r0, r5, #0x0
+ ldr r2, [r5, #0x0]
+ add r0, #0x88
+ mov r1, #0x64
+ bl FUN_0206A3A4
+ add r0, r5, #0x0
+ add r0, #0x8
+ mov r1, #0x80
+ bl FUN_0206A3F8
+ strh r0, [r5, #0x6]
+ add r0, r5, #0x0
+ ldrh r2, [r5, #0x6]
+ add r0, #0x8
+ mov r1, #0x80
+ bl FUN_0206A3A4
+_020678BC:
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_020678C0
+FUN_020678C0: ; 0x020678C0
+ push {r3, lr}
+ add r3, r0, #0x0
+ add r0, r1, #0x0
+ sub r0, #0x9f
+ cmp r0, #0xb
+ bhi _02067958
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_020678D8: ; jump table (using 16-bit offset)
+ .short _020678F0 - _020678D8 - 2; case 0
+ .short _020678F8 - _020678D8 - 2; case 1
+ .short _02067900 - _020678D8 - 2; case 2
+ .short _02067908 - _020678D8 - 2; case 3
+ .short _02067910 - _020678D8 - 2; case 4
+ .short _02067918 - _020678D8 - 2; case 5
+ .short _02067920 - _020678D8 - 2; case 6
+ .short _02067928 - _020678D8 - 2; case 7
+ .short _02067930 - _020678D8 - 2; case 8
+ .short _02067938 - _020678D8 - 2; case 9
+ .short _02067940 - _020678D8 - 2; case 10
+ .short _0206794C - _020678D8 - 2; case 11
+_020678F0:
+ ldr r0, [r2, #0x0]
+ add r3, #0x88
+ str r0, [r3, #0x0]
+ pop {r3, pc}
+_020678F8:
+ ldrb r0, [r2, #0x0]
+ add r3, #0x8c
+ strb r0, [r3, #0x0]
+ pop {r3, pc}
+_02067900:
+ ldrb r0, [r2, #0x0]
+ add r3, #0x8d
+ strb r0, [r3, #0x0]
+ pop {r3, pc}
+_02067908:
+ ldrh r0, [r2, #0x0]
+ add r3, #0x8e
+ strh r0, [r3, #0x0]
+ pop {r3, pc}
+_02067910:
+ ldrh r0, [r2, #0x0]
+ add r3, #0x90
+ strh r0, [r3, #0x0]
+ pop {r3, pc}
+_02067918:
+ ldrh r0, [r2, #0x0]
+ add r3, #0x92
+ strh r0, [r3, #0x0]
+ pop {r3, pc}
+_02067920:
+ ldrh r0, [r2, #0x0]
+ add r3, #0x94
+ strh r0, [r3, #0x0]
+ pop {r3, pc}
+_02067928:
+ ldrh r0, [r2, #0x0]
+ add r3, #0x96
+ strh r0, [r3, #0x0]
+ pop {r3, pc}
+_02067930:
+ ldrh r0, [r2, #0x0]
+ add r3, #0x98
+ strh r0, [r3, #0x0]
+ pop {r3, pc}
+_02067938:
+ ldrh r0, [r2, #0x0]
+ add r3, #0x9a
+ strh r0, [r3, #0x0]
+ pop {r3, pc}
+_02067940:
+ add r3, #0x9c
+ add r0, r2, #0x0
+ add r1, r3, #0x0
+ bl FUN_020256D0
+ pop {r3, pc}
+_0206794C:
+ add r3, #0xd4
+ add r0, r2, #0x0
+ add r1, r3, #0x0
+ bl FUN_02029C74
+ pop {r3, pc}
+_02067958:
+ add r0, r3, #0x0
+ bl FUN_020679D8
+ pop {r3, pc}
+
+ thumb_func_start FUN_02067960
+FUN_02067960: ; 0x02067960
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldrh r0, [r5, #0x4]
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ lsl r0, r0, #0x1e
+ lsr r0, r0, #0x1f
+ bne _020679AA
+ ldrh r2, [r5, #0x6]
+ add r0, r5, #0x0
+ add r0, #0x8
+ mov r1, #0x80
+ bl FUN_0206A3D0
+ add r0, r5, #0x0
+ add r0, #0x8
+ mov r1, #0x80
+ bl FUN_0206A3F8
+ ldrh r1, [r5, #0x6]
+ cmp r0, r1
+ beq _020679AA
+ cmp r0, r1
+ beq _02067994
+ bl ErrorHandling
+_02067994:
+ ldrh r1, [r5, #0x4]
+ mov r0, #0x4
+ orr r0, r1
+ strh r0, [r5, #0x4]
+ ldrh r2, [r5, #0x6]
+ add r0, r5, #0x0
+ add r0, #0x8
+ mov r1, #0x80
+ bl FUN_0206A3A4
+ pop {r4-r6, pc}
+_020679AA:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_020679D8
+ ldrh r0, [r5, #0x4]
+ lsl r0, r0, #0x1e
+ lsr r0, r0, #0x1f
+ bne _020679D4
+ add r0, r5, #0x0
+ add r0, #0x8
+ mov r1, #0x80
+ bl FUN_0206A3F8
+ strh r0, [r5, #0x6]
+ add r0, r5, #0x0
+ ldrh r2, [r5, #0x6]
+ add r0, #0x8
+ mov r1, #0x80
+ bl FUN_0206A3A4
+_020679D4:
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_020679D8
+FUN_020679D8: ; 0x020679D8
+ push {r4-r7, lr}
+ sub sp, #0x4c
+ str r1, [sp, #0x4]
+ add r1, r0, #0x0
+ add r4, r2, #0x0
+ ldr r1, [r1, #0x0]
+ str r0, [sp, #0x0]
+ mov r2, #0x0
+ bl FUN_0206A418
+ add r7, r0, #0x0
+ ldr r0, [sp, #0x0]
+ mov r2, #0x1
+ add r1, r0, #0x0
+ ldr r1, [r1, #0x0]
+ bl FUN_0206A418
+ add r5, r0, #0x0
+ ldr r0, [sp, #0x0]
+ mov r2, #0x2
+ add r1, r0, #0x0
+ ldr r1, [r1, #0x0]
+ bl FUN_0206A418
+ add r6, r0, #0x0
+ ldr r0, [sp, #0x0]
+ mov r2, #0x3
+ add r1, r0, #0x0
+ ldr r1, [r1, #0x0]
+ bl FUN_0206A418
+ add r1, r0, #0x0
+ ldr r0, [sp, #0x4]
+ cmp r0, #0xb2
+ bls _02067A20
+ b _02067FF6
+_02067A20:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02067A2C: ; jump table (using 16-bit offset)
+ .short _02067B92 - _02067A2C - 2; case 0
+ .short _02067B9C - _02067A2C - 2; case 1
+ .short _02067BBA - _02067A2C - 2; case 2
+ .short _02067BD6 - _02067A2C - 2; case 3
+ .short _02067BEE - _02067A2C - 2; case 4
+ .short _02067BF8 - _02067A2C - 2; case 5
+ .short _02067C00 - _02067A2C - 2; case 6
+ .short _02067C08 - _02067A2C - 2; case 7
+ .short _02067C10 - _02067A2C - 2; case 8
+ .short _02067C18 - _02067A2C - 2; case 9
+ .short _02067C20 - _02067A2C - 2; case 10
+ .short _02067C28 - _02067A2C - 2; case 11
+ .short _02067C30 - _02067A2C - 2; case 12
+ .short _02067C38 - _02067A2C - 2; case 13
+ .short _02067C40 - _02067A2C - 2; case 14
+ .short _02067C48 - _02067A2C - 2; case 15
+ .short _02067C50 - _02067A2C - 2; case 16
+ .short _02067C58 - _02067A2C - 2; case 17
+ .short _02067C60 - _02067A2C - 2; case 18
+ .short _02067C68 - _02067A2C - 2; case 19
+ .short _02067C70 - _02067A2C - 2; case 20
+ .short _02067C78 - _02067A2C - 2; case 21
+ .short _02067C80 - _02067A2C - 2; case 22
+ .short _02067C88 - _02067A2C - 2; case 23
+ .short _02067C90 - _02067A2C - 2; case 24
+ .short _02067C98 - _02067A2C - 2; case 25
+ .short _02067C98 - _02067A2C - 2; case 26
+ .short _02067C98 - _02067A2C - 2; case 27
+ .short _02067C98 - _02067A2C - 2; case 28
+ .short _02067C98 - _02067A2C - 2; case 29
+ .short _02067C98 - _02067A2C - 2; case 30
+ .short _02067C98 - _02067A2C - 2; case 31
+ .short _02067C98 - _02067A2C - 2; case 32
+ .short _02067C98 - _02067A2C - 2; case 33
+ .short _02067C98 - _02067A2C - 2; case 34
+ .short _02067C98 - _02067A2C - 2; case 35
+ .short _02067C98 - _02067A2C - 2; case 36
+ .short _02067C98 - _02067A2C - 2; case 37
+ .short _02067C98 - _02067A2C - 2; case 38
+ .short _02067C98 - _02067A2C - 2; case 39
+ .short _02067C98 - _02067A2C - 2; case 40
+ .short _02067C98 - _02067A2C - 2; case 41
+ .short _02067C98 - _02067A2C - 2; case 42
+ .short _02067C98 - _02067A2C - 2; case 43
+ .short _02067C98 - _02067A2C - 2; case 44
+ .short _02067C98 - _02067A2C - 2; case 45
+ .short _02067C98 - _02067A2C - 2; case 46
+ .short _02067C98 - _02067A2C - 2; case 47
+ .short _02067C98 - _02067A2C - 2; case 48
+ .short _02067C98 - _02067A2C - 2; case 49
+ .short _02067C98 - _02067A2C - 2; case 50
+ .short _02067C98 - _02067A2C - 2; case 51
+ .short _02067C98 - _02067A2C - 2; case 52
+ .short _02067C98 - _02067A2C - 2; case 53
+ .short _02067CC6 - _02067A2C - 2; case 54
+ .short _02067CC6 - _02067A2C - 2; case 55
+ .short _02067CC6 - _02067A2C - 2; case 56
+ .short _02067CC6 - _02067A2C - 2; case 57
+ .short _02067CD6 - _02067A2C - 2; case 58
+ .short _02067CD6 - _02067A2C - 2; case 59
+ .short _02067CD6 - _02067A2C - 2; case 60
+ .short _02067CD6 - _02067A2C - 2; case 61
+ .short _02067CE6 - _02067A2C - 2; case 62
+ .short _02067CE6 - _02067A2C - 2; case 63
+ .short _02067CE6 - _02067A2C - 2; case 64
+ .short _02067CE6 - _02067A2C - 2; case 65
+ .short _02067FF6 - _02067A2C - 2; case 66
+ .short _02067FF6 - _02067A2C - 2; case 67
+ .short _02067FF6 - _02067A2C - 2; case 68
+ .short _02067FF6 - _02067A2C - 2; case 69
+ .short _02067CF6 - _02067A2C - 2; case 70
+ .short _02067D0A - _02067A2C - 2; case 71
+ .short _02067D1E - _02067A2C - 2; case 72
+ .short _02067D32 - _02067A2C - 2; case 73
+ .short _02067D46 - _02067A2C - 2; case 74
+ .short _02067D5A - _02067A2C - 2; case 75
+ .short _02067D6E - _02067A2C - 2; case 76
+ .short _02067D82 - _02067A2C - 2; case 77
+ .short _02067D94 - _02067A2C - 2; case 78
+ .short _02067D94 - _02067A2C - 2; case 79
+ .short _02067D94 - _02067A2C - 2; case 80
+ .short _02067D94 - _02067A2C - 2; case 81
+ .short _02067D94 - _02067A2C - 2; case 82
+ .short _02067D94 - _02067A2C - 2; case 83
+ .short _02067D94 - _02067A2C - 2; case 84
+ .short _02067D94 - _02067A2C - 2; case 85
+ .short _02067D94 - _02067A2C - 2; case 86
+ .short _02067D94 - _02067A2C - 2; case 87
+ .short _02067D94 - _02067A2C - 2; case 88
+ .short _02067D94 - _02067A2C - 2; case 89
+ .short _02067D94 - _02067A2C - 2; case 90
+ .short _02067D94 - _02067A2C - 2; case 91
+ .short _02067D94 - _02067A2C - 2; case 92
+ .short _02067D94 - _02067A2C - 2; case 93
+ .short _02067D94 - _02067A2C - 2; case 94
+ .short _02067D94 - _02067A2C - 2; case 95
+ .short _02067D94 - _02067A2C - 2; case 96
+ .short _02067D94 - _02067A2C - 2; case 97
+ .short _02067D94 - _02067A2C - 2; case 98
+ .short _02067D94 - _02067A2C - 2; case 99
+ .short _02067D94 - _02067A2C - 2; case 100
+ .short _02067D94 - _02067A2C - 2; case 101
+ .short _02067D94 - _02067A2C - 2; case 102
+ .short _02067D94 - _02067A2C - 2; case 103
+ .short _02067D94 - _02067A2C - 2; case 104
+ .short _02067D94 - _02067A2C - 2; case 105
+ .short _02067D94 - _02067A2C - 2; case 106
+ .short _02067D94 - _02067A2C - 2; case 107
+ .short _02067D94 - _02067A2C - 2; case 108
+ .short _02067D94 - _02067A2C - 2; case 109
+ .short _02067DC2 - _02067A2C - 2; case 110
+ .short _02067DD6 - _02067A2C - 2; case 111
+ .short _02067DEA - _02067A2C - 2; case 112
+ .short _02067DFE - _02067A2C - 2; case 113
+ .short _02067E06 - _02067A2C - 2; case 114
+ .short _02067FF6 - _02067A2C - 2; case 115
+ .short _02067E2C - _02067A2C - 2; case 116
+ .short _02067E0E - _02067A2C - 2; case 117
+ .short _02067E6C - _02067A2C - 2; case 118
+ .short _02067E40 - _02067A2C - 2; case 119
+ .short _02067E7A - _02067A2C - 2; case 120
+ .short _02067E82 - _02067A2C - 2; case 121
+ .short _02067E8A - _02067A2C - 2; case 122
+ .short _02067E8A - _02067A2C - 2; case 123
+ .short _02067E8A - _02067A2C - 2; case 124
+ .short _02067E8A - _02067A2C - 2; case 125
+ .short _02067E8A - _02067A2C - 2; case 126
+ .short _02067E8A - _02067A2C - 2; case 127
+ .short _02067E8A - _02067A2C - 2; case 128
+ .short _02067E8A - _02067A2C - 2; case 129
+ .short _02067E8A - _02067A2C - 2; case 130
+ .short _02067E8A - _02067A2C - 2; case 131
+ .short _02067E8A - _02067A2C - 2; case 132
+ .short _02067E8A - _02067A2C - 2; case 133
+ .short _02067E8A - _02067A2C - 2; case 134
+ .short _02067E8A - _02067A2C - 2; case 135
+ .short _02067E8A - _02067A2C - 2; case 136
+ .short _02067E8A - _02067A2C - 2; case 137
+ .short _02067E8A - _02067A2C - 2; case 138
+ .short _02067E8A - _02067A2C - 2; case 139
+ .short _02067E8A - _02067A2C - 2; case 140
+ .short _02067E8A - _02067A2C - 2; case 141
+ .short _02067E8A - _02067A2C - 2; case 142
+ .short _02067ECE - _02067A2C - 2; case 143
+ .short _02067EE2 - _02067A2C - 2; case 144
+ .short _02067EEE - _02067A2C - 2; case 145
+ .short _02067EF6 - _02067A2C - 2; case 146
+ .short _02067EFE - _02067A2C - 2; case 147
+ .short _02067F06 - _02067A2C - 2; case 148
+ .short _02067F0E - _02067A2C - 2; case 149
+ .short _02067F16 - _02067A2C - 2; case 150
+ .short _02067F1E - _02067A2C - 2; case 151
+ .short _02067F26 - _02067A2C - 2; case 152
+ .short _02067F2E - _02067A2C - 2; case 153
+ .short _02067F36 - _02067A2C - 2; case 154
+ .short _02067F3E - _02067A2C - 2; case 155
+ .short _02067F52 - _02067A2C - 2; case 156
+ .short _02067F66 - _02067A2C - 2; case 157
+ .short _02067F6E - _02067A2C - 2; case 158
+ .short _02067FF6 - _02067A2C - 2; case 159
+ .short _02067FF6 - _02067A2C - 2; case 160
+ .short _02067FF6 - _02067A2C - 2; case 161
+ .short _02067FF6 - _02067A2C - 2; case 162
+ .short _02067FF6 - _02067A2C - 2; case 163
+ .short _02067FF6 - _02067A2C - 2; case 164
+ .short _02067FF6 - _02067A2C - 2; case 165
+ .short _02067FF6 - _02067A2C - 2; case 166
+ .short _02067FF6 - _02067A2C - 2; case 167
+ .short _02067FF6 - _02067A2C - 2; case 168
+ .short _02067FF6 - _02067A2C - 2; case 169
+ .short _02067FF6 - _02067A2C - 2; case 170
+ .short _02067FF6 - _02067A2C - 2; case 171
+ .short _02067FF6 - _02067A2C - 2; case 172
+ .short _02067FF6 - _02067A2C - 2; case 173
+ .short _02067F76 - _02067A2C - 2; case 174
+ .short _02067FF6 - _02067A2C - 2; case 175
+ .short _02067FF6 - _02067A2C - 2; case 176
+ .short _02067FF6 - _02067A2C - 2; case 177
+ .short _02067FDE - _02067A2C - 2; case 178
+_02067B92:
+ ldr r0, [sp, #0x0]
+ ldr r1, [r4, #0x0]
+ add sp, #0x4c
+ str r1, [r0, #0x0]
+ pop {r4-r7, pc}
+_02067B9C:
+ bl ErrorHandling
+ ldr r0, [sp, #0x0]
+ ldrb r1, [r4, #0x0]
+ ldrh r2, [r0, #0x4]
+ mov r0, #0x1
+ bic r2, r0
+ mov r0, #0x1
+ and r0, r1
+ add r1, r2, #0x0
+ orr r1, r0
+ ldr r0, [sp, #0x0]
+ add sp, #0x4c
+ strh r1, [r0, #0x4]
+ pop {r4-r7, pc}
+_02067BBA:
+ bl ErrorHandling
+ ldr r0, [sp, #0x0]
+ ldrh r1, [r0, #0x4]
+ mov r0, #0x2
+ bic r1, r0
+ ldrb r0, [r4, #0x0]
+ lsl r0, r0, #0x1f
+ lsr r0, r0, #0x1e
+ orr r1, r0
+ ldr r0, [sp, #0x0]
+ add sp, #0x4c
+ strh r1, [r0, #0x4]
+ pop {r4-r7, pc}
+_02067BD6:
+ ldr r0, [sp, #0x0]
+ ldrh r1, [r0, #0x4]
+ mov r0, #0x4
+ bic r1, r0
+ ldrb r0, [r4, #0x0]
+ lsl r0, r0, #0x1f
+ lsr r0, r0, #0x1d
+ orr r1, r0
+ ldr r0, [sp, #0x0]
+ add sp, #0x4c
+ strh r1, [r0, #0x4]
+ pop {r4-r7, pc}
+_02067BEE:
+ ldrh r1, [r4, #0x0]
+ ldr r0, [sp, #0x0]
+ add sp, #0x4c
+ strh r1, [r0, #0x6]
+ pop {r4-r7, pc}
+_02067BF8:
+ ldrh r0, [r4, #0x0]
+ add sp, #0x4c
+ strh r0, [r7, #0x0]
+ pop {r4-r7, pc}
+_02067C00:
+ ldrh r0, [r4, #0x0]
+ add sp, #0x4c
+ strh r0, [r7, #0x2]
+ pop {r4-r7, pc}
+_02067C08:
+ ldr r0, [r4, #0x0]
+ add sp, #0x4c
+ str r0, [r7, #0x4]
+ pop {r4-r7, pc}
+_02067C10:
+ ldr r0, [r4, #0x0]
+ add sp, #0x4c
+ str r0, [r7, #0x8]
+ pop {r4-r7, pc}
+_02067C18:
+ ldrb r0, [r4, #0x0]
+ add sp, #0x4c
+ strb r0, [r7, #0xc]
+ pop {r4-r7, pc}
+_02067C20:
+ ldrb r0, [r4, #0x0]
+ add sp, #0x4c
+ strb r0, [r7, #0xd]
+ pop {r4-r7, pc}
+_02067C28:
+ ldrb r0, [r4, #0x0]
+ add sp, #0x4c
+ strb r0, [r7, #0xe]
+ pop {r4-r7, pc}
+_02067C30:
+ ldrb r0, [r4, #0x0]
+ add sp, #0x4c
+ strb r0, [r7, #0xf]
+ pop {r4-r7, pc}
+_02067C38:
+ ldrb r0, [r4, #0x0]
+ add sp, #0x4c
+ strb r0, [r7, #0x10]
+ pop {r4-r7, pc}
+_02067C40:
+ ldrb r0, [r4, #0x0]
+ add sp, #0x4c
+ strb r0, [r7, #0x11]
+ pop {r4-r7, pc}
+_02067C48:
+ ldrb r0, [r4, #0x0]
+ add sp, #0x4c
+ strb r0, [r7, #0x12]
+ pop {r4-r7, pc}
+_02067C50:
+ ldrb r0, [r4, #0x0]
+ add sp, #0x4c
+ strb r0, [r7, #0x13]
+ pop {r4-r7, pc}
+_02067C58:
+ ldrb r0, [r4, #0x0]
+ add sp, #0x4c
+ strb r0, [r7, #0x14]
+ pop {r4-r7, pc}
+_02067C60:
+ ldrb r0, [r4, #0x0]
+ add sp, #0x4c
+ strb r0, [r7, #0x15]
+ pop {r4-r7, pc}
+_02067C68:
+ ldrb r0, [r4, #0x0]
+ add sp, #0x4c
+ strb r0, [r7, #0x16]
+ pop {r4-r7, pc}
+_02067C70:
+ ldrb r0, [r4, #0x0]
+ add sp, #0x4c
+ strb r0, [r7, #0x17]
+ pop {r4-r7, pc}
+_02067C78:
+ ldrb r0, [r4, #0x0]
+ add sp, #0x4c
+ strb r0, [r7, #0x18]
+ pop {r4-r7, pc}
+_02067C80:
+ ldrb r0, [r4, #0x0]
+ add sp, #0x4c
+ strb r0, [r7, #0x19]
+ pop {r4-r7, pc}
+_02067C88:
+ ldrb r0, [r4, #0x0]
+ add sp, #0x4c
+ strb r0, [r7, #0x1a]
+ pop {r4-r7, pc}
+_02067C90:
+ ldrb r0, [r4, #0x0]
+ add sp, #0x4c
+ strb r0, [r7, #0x1b]
+ pop {r4-r7, pc}
+_02067C98:
+ ldrb r4, [r4, #0x0]
+ ldr r2, [sp, #0x4]
+ mov r1, #0x0
+ sub r2, #0x19
+ add r0, r4, #0x0
+ str r2, [sp, #0x4]
+ blx _ll_shl
+ cmp r4, #0x0
+ beq _02067CB6
+ ldr r1, [r7, #0x1c]
+ add sp, #0x4c
+ orr r0, r1
+ str r0, [r7, #0x1c]
+ pop {r4-r7, pc}
+_02067CB6:
+ mov r1, #0x0
+ sub r1, r1, #0x1
+ ldr r2, [r7, #0x1c]
+ eor r0, r1
+ and r0, r2
+ add sp, #0x4c
+ str r0, [r7, #0x1c]
+ pop {r4-r7, pc}
+_02067CC6:
+ ldr r0, [sp, #0x4]
+ ldrh r1, [r4, #0x0]
+ sub r0, #0x36
+ str r0, [sp, #0x4]
+ lsl r0, r0, #0x1
+ add sp, #0x4c
+ strh r1, [r5, r0]
+ pop {r4-r7, pc}
+_02067CD6:
+ ldr r0, [sp, #0x4]
+ ldrb r1, [r4, #0x0]
+ sub r0, #0x3a
+ str r0, [sp, #0x4]
+ add r0, r5, r0
+ strb r1, [r0, #0x8]
+ add sp, #0x4c
+ pop {r4-r7, pc}
+_02067CE6:
+ ldr r0, [sp, #0x4]
+ ldrb r1, [r4, #0x0]
+ sub r0, #0x3e
+ str r0, [sp, #0x4]
+ add r0, r5, r0
+ strb r1, [r0, #0xc]
+ add sp, #0x4c
+ pop {r4-r7, pc}
+_02067CF6:
+ ldr r2, [r5, #0x10]
+ mov r0, #0x1f
+ bic r2, r0
+ ldrb r1, [r4, #0x0]
+ mov r0, #0x1f
+ add sp, #0x4c
+ and r0, r1
+ orr r0, r2
+ str r0, [r5, #0x10]
+ pop {r4-r7, pc}
+_02067D0A:
+ ldr r1, [r5, #0x10]
+ ldr r0, _02067FFC ; =0xFFFFFC1F
+ add sp, #0x4c
+ and r1, r0
+ ldrb r0, [r4, #0x0]
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x16
+ orr r0, r1
+ str r0, [r5, #0x10]
+ pop {r4-r7, pc}
+_02067D1E:
+ ldr r1, [r5, #0x10]
+ ldr r0, _02068000 ; =0xFFFF83FF
+ add sp, #0x4c
+ and r1, r0
+ ldrb r0, [r4, #0x0]
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x11
+ orr r0, r1
+ str r0, [r5, #0x10]
+ pop {r4-r7, pc}
+_02067D32:
+ ldr r1, [r5, #0x10]
+ ldr r0, _02068004 ; =0xFFF07FFF
+ add sp, #0x4c
+ and r1, r0
+ ldrb r0, [r4, #0x0]
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0xc
+ orr r0, r1
+ str r0, [r5, #0x10]
+ pop {r4-r7, pc}
+_02067D46:
+ ldr r1, [r5, #0x10]
+ ldr r0, _02068008 ; =0xFE0FFFFF
+ add sp, #0x4c
+ and r1, r0
+ ldrb r0, [r4, #0x0]
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x7
+ orr r0, r1
+ str r0, [r5, #0x10]
+ pop {r4-r7, pc}
+_02067D5A:
+ ldr r1, [r5, #0x10]
+ ldr r0, _0206800C ; =0xC1FFFFFF
+ add sp, #0x4c
+ and r1, r0
+ ldrb r0, [r4, #0x0]
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x2
+ orr r0, r1
+ str r0, [r5, #0x10]
+ pop {r4-r7, pc}
+_02067D6E:
+ ldr r1, [r5, #0x10]
+ ldr r0, _02068010 ; =0xBFFFFFFF
+ add sp, #0x4c
+ and r1, r0
+ ldrb r0, [r4, #0x0]
+ lsl r0, r0, #0x1f
+ lsr r0, r0, #0x1
+ orr r0, r1
+ str r0, [r5, #0x10]
+ pop {r4-r7, pc}
+_02067D82:
+ ldr r1, [r5, #0x10]
+ ldr r0, _02068014 ; =0x7FFFFFFF
+ add sp, #0x4c
+ and r1, r0
+ ldrb r0, [r4, #0x0]
+ lsl r0, r0, #0x1f
+ orr r0, r1
+ str r0, [r5, #0x10]
+ pop {r4-r7, pc}
+_02067D94:
+ ldrb r4, [r4, #0x0]
+ ldr r2, [sp, #0x4]
+ mov r1, #0x0
+ sub r2, #0x4e
+ add r0, r4, #0x0
+ str r2, [sp, #0x4]
+ blx _ll_shl
+ cmp r4, #0x0
+ beq _02067DB2
+ ldr r1, [r5, #0x14]
+ add sp, #0x4c
+ orr r0, r1
+ str r0, [r5, #0x14]
+ pop {r4-r7, pc}
+_02067DB2:
+ mov r1, #0x0
+ sub r1, r1, #0x1
+ ldr r2, [r5, #0x14]
+ eor r0, r1
+ and r0, r2
+ add sp, #0x4c
+ str r0, [r5, #0x14]
+ pop {r4-r7, pc}
+_02067DC2:
+ ldrb r2, [r5, #0x18]
+ ldrb r1, [r4, #0x0]
+ mov r0, #0x1
+ bic r2, r0
+ mov r0, #0x1
+ and r0, r1
+ orr r0, r2
+ add sp, #0x4c
+ strb r0, [r5, #0x18]
+ pop {r4-r7, pc}
+_02067DD6:
+ ldrb r1, [r5, #0x18]
+ mov r0, #0x6
+ add sp, #0x4c
+ bic r1, r0
+ ldrb r0, [r4, #0x0]
+ lsl r0, r0, #0x1e
+ lsr r0, r0, #0x1d
+ orr r0, r1
+ strb r0, [r5, #0x18]
+ pop {r4-r7, pc}
+_02067DEA:
+ ldrb r1, [r5, #0x18]
+ mov r0, #0xf8
+ add sp, #0x4c
+ bic r1, r0
+ ldrb r0, [r4, #0x0]
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x18
+ orr r0, r1
+ strb r0, [r5, #0x18]
+ pop {r4-r7, pc}
+_02067DFE:
+ ldrb r0, [r4, #0x0]
+ add sp, #0x4c
+ strb r0, [r5, #0x19]
+ pop {r4-r7, pc}
+_02067E06:
+ ldrh r0, [r4, #0x0]
+ add sp, #0x4c
+ strh r0, [r5, #0x1a]
+ pop {r4-r7, pc}
+_02067E0E:
+ ldrh r0, [r7, #0x0]
+ mov r1, #0x0
+ add r2, sp, #0x34
+ bl FUN_0200A99C
+ add r0, sp, #0x34
+ add r1, r4, #0x0
+ bl StringNotEqual
+ ldr r2, [r5, #0x10]
+ ldr r1, _02068014 ; =0x7FFFFFFF
+ lsl r0, r0, #0x1f
+ and r1, r2
+ orr r0, r1
+ str r0, [r5, #0x10]
+_02067E2C:
+ mov r1, #0x0
+_02067E2E:
+ ldrh r0, [r4, #0x0]
+ add r1, r1, #0x1
+ add r4, r4, #0x2
+ strh r0, [r6, #0x0]
+ add r6, r6, #0x2
+ cmp r1, #0xb
+ blo _02067E2E
+ add sp, #0x4c
+ pop {r4-r7, pc}
+_02067E40:
+ ldrh r0, [r7, #0x0]
+ add r2, sp, #0x1c
+ mov r1, #0x0
+ add r2, #0x2
+ bl FUN_0200A99C
+ add r0, r4, #0x0
+ add r1, sp, #0x8
+ mov r2, #0xb
+ bl FUN_02021EF0
+ add r0, sp, #0x1c
+ add r0, #0x2
+ add r1, sp, #0x8
+ bl StringNotEqual
+ ldr r2, [r5, #0x10]
+ ldr r1, _02068014 ; =0x7FFFFFFF
+ lsl r0, r0, #0x1f
+ and r1, r2
+ orr r0, r1
+ str r0, [r5, #0x10]
+_02067E6C:
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ mov r2, #0xb
+ bl FUN_02021EF0
+ add sp, #0x4c
+ pop {r4-r7, pc}
+_02067E7A:
+ ldrb r0, [r4, #0x0]
+ add sp, #0x4c
+ strb r0, [r6, #0x16]
+ pop {r4-r7, pc}
+_02067E82:
+ ldrb r0, [r4, #0x0]
+ add sp, #0x4c
+ strb r0, [r6, #0x17]
+ pop {r4-r7, pc}
+_02067E8A:
+ ldrb r4, [r4, #0x0]
+ ldr r2, [sp, #0x4]
+ mov r1, #0x0
+ sub r2, #0x7a
+ add r0, r4, #0x0
+ str r2, [sp, #0x4]
+ blx _ll_shl
+ cmp r4, #0x0
+ beq _02067EB2
+ add r4, r6, #0x0
+ add r4, #0x18
+ ldr r3, [r6, #0x18]
+ ldr r2, [r4, #0x4]
+ orr r0, r3
+ orr r1, r2
+ str r0, [r6, #0x18]
+ add sp, #0x4c
+ str r1, [r4, #0x4]
+ pop {r4-r7, pc}
+_02067EB2:
+ add r4, r6, #0x0
+ mov r5, #0x0
+ mvn r5, r5
+ add r4, #0x18
+ ldr r3, [r6, #0x18]
+ eor r0, r5
+ ldr r2, [r4, #0x4]
+ eor r1, r5
+ and r0, r3
+ and r1, r2
+ str r0, [r6, #0x18]
+ add sp, #0x4c
+ str r1, [r4, #0x4]
+ pop {r4-r7, pc}
+_02067ECE:
+ mov r2, #0x0
+_02067ED0:
+ ldrh r0, [r4, #0x0]
+ add r2, r2, #0x1
+ add r4, r4, #0x2
+ strh r0, [r1, #0x0]
+ add r1, r1, #0x2
+ cmp r2, #0x8
+ blo _02067ED0
+ add sp, #0x4c
+ pop {r4-r7, pc}
+_02067EE2:
+ add r0, r4, #0x0
+ mov r2, #0x8
+ bl FUN_02021EF0
+ add sp, #0x4c
+ pop {r4-r7, pc}
+_02067EEE:
+ ldrb r0, [r4, #0x0]
+ add sp, #0x4c
+ strb r0, [r1, #0x10]
+ pop {r4-r7, pc}
+_02067EF6:
+ ldrb r0, [r4, #0x0]
+ add sp, #0x4c
+ strb r0, [r1, #0x11]
+ pop {r4-r7, pc}
+_02067EFE:
+ ldrb r0, [r4, #0x0]
+ add sp, #0x4c
+ strb r0, [r1, #0x12]
+ pop {r4-r7, pc}
+_02067F06:
+ ldrb r0, [r4, #0x0]
+ add sp, #0x4c
+ strb r0, [r1, #0x13]
+ pop {r4-r7, pc}
+_02067F0E:
+ ldrb r0, [r4, #0x0]
+ add sp, #0x4c
+ strb r0, [r1, #0x14]
+ pop {r4-r7, pc}
+_02067F16:
+ ldrb r0, [r4, #0x0]
+ add sp, #0x4c
+ strb r0, [r1, #0x15]
+ pop {r4-r7, pc}
+_02067F1E:
+ ldrh r0, [r4, #0x0]
+ add sp, #0x4c
+ strh r0, [r1, #0x16]
+ pop {r4-r7, pc}
+_02067F26:
+ ldrh r0, [r4, #0x0]
+ add sp, #0x4c
+ strh r0, [r1, #0x18]
+ pop {r4-r7, pc}
+_02067F2E:
+ ldrb r0, [r4, #0x0]
+ add sp, #0x4c
+ strb r0, [r1, #0x1a]
+ pop {r4-r7, pc}
+_02067F36:
+ ldrb r0, [r4, #0x0]
+ add sp, #0x4c
+ strb r0, [r1, #0x1b]
+ pop {r4-r7, pc}
+_02067F3E:
+ ldrb r3, [r1, #0x1c]
+ ldrb r2, [r4, #0x0]
+ mov r0, #0x7f
+ bic r3, r0
+ mov r0, #0x7f
+ and r0, r2
+ orr r0, r3
+ strb r0, [r1, #0x1c]
+ add sp, #0x4c
+ pop {r4-r7, pc}
+_02067F52:
+ ldrb r2, [r1, #0x1c]
+ mov r0, #0x80
+ add sp, #0x4c
+ bic r2, r0
+ ldrb r0, [r4, #0x0]
+ lsl r0, r0, #0x1f
+ lsr r0, r0, #0x18
+ orr r0, r2
+ strb r0, [r1, #0x1c]
+ pop {r4-r7, pc}
+_02067F66:
+ ldrb r0, [r4, #0x0]
+ add sp, #0x4c
+ strb r0, [r1, #0x1d]
+ pop {r4-r7, pc}
+_02067F6E:
+ ldrh r0, [r4, #0x0]
+ add sp, #0x4c
+ strh r0, [r1, #0x1e]
+ pop {r4-r7, pc}
+_02067F76:
+ ldr r2, [r5, #0x10]
+ mov r0, #0x1f
+ bic r2, r0
+ ldr r1, [r4, #0x0]
+ mov r0, #0x1f
+ and r1, r0
+ and r0, r1
+ add r1, r2, #0x0
+ orr r1, r0
+ ldr r0, _02067FFC ; =0xFFFFFC1F
+ str r1, [r5, #0x10]
+ and r1, r0
+ ldr r0, [r4, #0x0]
+ add sp, #0x4c
+ lsr r0, r0, #0x5
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x16
+ orr r1, r0
+ ldr r0, _02068000 ; =0xFFFF83FF
+ str r1, [r5, #0x10]
+ and r1, r0
+ ldr r0, [r4, #0x0]
+ lsr r0, r0, #0xa
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x11
+ orr r1, r0
+ ldr r0, _02068004 ; =0xFFF07FFF
+ str r1, [r5, #0x10]
+ and r1, r0
+ ldr r0, [r4, #0x0]
+ lsr r0, r0, #0xf
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0xc
+ orr r1, r0
+ ldr r0, _02068008 ; =0xFE0FFFFF
+ str r1, [r5, #0x10]
+ and r1, r0
+ ldr r0, [r4, #0x0]
+ lsr r0, r0, #0x14
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x7
+ orr r1, r0
+ ldr r0, _0206800C ; =0xC1FFFFFF
+ str r1, [r5, #0x10]
+ and r1, r0
+ ldr r0, [r4, #0x0]
+ lsr r0, r0, #0x19
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x2
+ orr r0, r1
+ str r0, [r5, #0x10]
+ pop {r4-r7, pc}
+_02067FDE:
+ ldrh r0, [r7, #0x0]
+ mov r1, #0x0
+ bl FUN_0200AA50
+ add r4, r0, #0x0
+ add r1, r6, #0x0
+ mov r2, #0xb
+ bl FUN_02021EF0
+ add r0, r4, #0x0
+ bl FUN_02021A20
+_02067FF6:
+ add sp, #0x4c
+ pop {r4-r7, pc}
+ nop
+_02067FFC: .word 0xFFFFFC1F
+_02068000: .word 0xFFFF83FF
+_02068004: .word 0xFFF07FFF
+_02068008: .word 0xFE0FFFFF
+_0206800C: .word 0xC1FFFFFF
+_02068010: .word 0xBFFFFFFF
+_02068014: .word 0x7FFFFFFF
+
+ thumb_func_start FUN_02068018
+FUN_02068018: ; 0x02068018
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldrh r0, [r5, #0x4]
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ lsl r0, r0, #0x1f
+ lsr r0, r0, #0x1f
+ bne _02068066
+ add r0, r5, #0x0
+ ldr r2, [r5, #0x0]
+ add r0, #0x88
+ mov r1, #0x64
+ bl FUN_0206A3D0
+ add r0, r5, #0x0
+ ldrh r2, [r5, #0x6]
+ add r0, #0x8
+ mov r1, #0x80
+ bl FUN_0206A3D0
+ add r0, r5, #0x0
+ add r0, #0x8
+ mov r1, #0x80
+ bl FUN_0206A3F8
+ ldrh r1, [r5, #0x6]
+ cmp r0, r1
+ beq _02068066
+ cmp r0, r1
+ beq _02068058
+ bl ErrorHandling
+_02068058:
+ ldrh r2, [r5, #0x6]
+ add r0, r5, #0x0
+ add r0, #0x8
+ mov r1, #0x80
+ bl FUN_0206A3A4
+ pop {r4-r6, pc}
+_02068066:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_020680A0
+ ldrh r0, [r5, #0x4]
+ lsl r0, r0, #0x1f
+ lsr r0, r0, #0x1f
+ bne _0206809C
+ add r0, r5, #0x0
+ ldr r2, [r5, #0x0]
+ add r0, #0x88
+ mov r1, #0x64
+ bl FUN_0206A3A4
+ add r0, r5, #0x0
+ add r0, #0x8
+ mov r1, #0x80
+ bl FUN_0206A3F8
+ strh r0, [r5, #0x6]
+ add r0, r5, #0x0
+ ldrh r2, [r5, #0x6]
+ add r0, #0x8
+ mov r1, #0x80
+ bl FUN_0206A3A4
+_0206809C:
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_020680A0
+FUN_020680A0: ; 0x020680A0
+ push {r3, lr}
+ add r3, r1, #0x0
+ sub r3, #0x9f
+ cmp r3, #0xa
+ bhi _020680F8
+ add r3, r3, r3
+ add r3, pc
+ ldrh r3, [r3, #0x6]
+ lsl r3, r3, #0x10
+ asr r3, r3, #0x10
+ add pc, r3
+_020680B6: ; jump table (using 16-bit offset)
+ .short _020680F2 - _020680B6 - 2; case 0
+ .short _020680F2 - _020680B6 - 2; case 1
+ .short _020680F2 - _020680B6 - 2; case 2
+ .short _020680CC - _020680B6 - 2; case 3
+ .short _020680F2 - _020680B6 - 2; case 4
+ .short _020680F2 - _020680B6 - 2; case 5
+ .short _020680F2 - _020680B6 - 2; case 6
+ .short _020680F2 - _020680B6 - 2; case 7
+ .short _020680F2 - _020680B6 - 2; case 8
+ .short _020680F2 - _020680B6 - 2; case 9
+ .short _020680F2 - _020680B6 - 2; case 10
+_020680CC:
+ add r1, r0, #0x0
+ add r1, #0x90
+ ldrh r3, [r1, #0x0]
+ add r1, r0, #0x0
+ add r1, #0x8e
+ ldrh r1, [r1, #0x0]
+ add r1, r1, r2
+ cmp r1, r3
+ ble _020680E4
+ add r0, #0x8e
+ strh r3, [r0, #0x0]
+ pop {r3, pc}
+_020680E4:
+ add r1, r0, #0x0
+ add r1, #0x8e
+ ldrh r1, [r1, #0x0]
+ add r0, #0x8e
+ add r1, r1, r2
+ strh r1, [r0, #0x0]
+ pop {r3, pc}
+_020680F2:
+ bl ErrorHandling
+ pop {r3, pc}
+_020680F8:
+ bl FUN_02068100
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02068100
+FUN_02068100: ; 0x02068100
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r7, r1, #0x0
+ add r1, r0, #0x0
+ add r6, r2, #0x0
+ ldr r1, [r1, #0x0]
+ str r0, [sp, #0x0]
+ mov r2, #0x0
+ bl FUN_0206A418
+ add r4, r0, #0x0
+ ldr r0, [sp, #0x0]
+ mov r2, #0x1
+ add r1, r0, #0x0
+ ldr r1, [r1, #0x0]
+ bl FUN_0206A418
+ add r5, r0, #0x0
+ ldr r0, [sp, #0x0]
+ mov r2, #0x2
+ add r1, r0, #0x0
+ ldr r1, [r1, #0x0]
+ bl FUN_0206A418
+ ldr r0, [sp, #0x0]
+ mov r2, #0x3
+ add r1, r0, #0x0
+ ldr r1, [r1, #0x0]
+ bl FUN_0206A418
+ cmp r7, #0xb2
+ bls _02068142
+ b _02068500
+_02068142:
+ add r0, r7, r7
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0206814E: ; jump table (using 16-bit offset)
+ .short _02068500 - _0206814E - 2; case 0
+ .short _02068500 - _0206814E - 2; case 1
+ .short _02068500 - _0206814E - 2; case 2
+ .short _02068500 - _0206814E - 2; case 3
+ .short _02068500 - _0206814E - 2; case 4
+ .short _02068500 - _0206814E - 2; case 5
+ .short _02068500 - _0206814E - 2; case 6
+ .short _02068500 - _0206814E - 2; case 7
+ .short _020682B4 - _0206814E - 2; case 8
+ .short _020682D8 - _0206814E - 2; case 9
+ .short _02068500 - _0206814E - 2; case 10
+ .short _02068500 - _0206814E - 2; case 11
+ .short _02068500 - _0206814E - 2; case 12
+ .short _020682EE - _0206814E - 2; case 13
+ .short _020682F8 - _0206814E - 2; case 14
+ .short _02068302 - _0206814E - 2; case 15
+ .short _0206830C - _0206814E - 2; case 16
+ .short _02068316 - _0206814E - 2; case 17
+ .short _02068320 - _0206814E - 2; case 18
+ .short _0206832A - _0206814E - 2; case 19
+ .short _02068340 - _0206814E - 2; case 20
+ .short _02068356 - _0206814E - 2; case 21
+ .short _0206836C - _0206814E - 2; case 22
+ .short _02068382 - _0206814E - 2; case 23
+ .short _02068398 - _0206814E - 2; case 24
+ .short _02068500 - _0206814E - 2; case 25
+ .short _02068500 - _0206814E - 2; case 26
+ .short _02068500 - _0206814E - 2; case 27
+ .short _02068500 - _0206814E - 2; case 28
+ .short _02068500 - _0206814E - 2; case 29
+ .short _02068500 - _0206814E - 2; case 30
+ .short _02068500 - _0206814E - 2; case 31
+ .short _02068500 - _0206814E - 2; case 32
+ .short _02068500 - _0206814E - 2; case 33
+ .short _02068500 - _0206814E - 2; case 34
+ .short _02068500 - _0206814E - 2; case 35
+ .short _02068500 - _0206814E - 2; case 36
+ .short _02068500 - _0206814E - 2; case 37
+ .short _02068500 - _0206814E - 2; case 38
+ .short _02068500 - _0206814E - 2; case 39
+ .short _02068500 - _0206814E - 2; case 40
+ .short _02068500 - _0206814E - 2; case 41
+ .short _02068500 - _0206814E - 2; case 42
+ .short _02068500 - _0206814E - 2; case 43
+ .short _02068500 - _0206814E - 2; case 44
+ .short _02068500 - _0206814E - 2; case 45
+ .short _02068500 - _0206814E - 2; case 46
+ .short _02068500 - _0206814E - 2; case 47
+ .short _02068500 - _0206814E - 2; case 48
+ .short _02068500 - _0206814E - 2; case 49
+ .short _02068500 - _0206814E - 2; case 50
+ .short _02068500 - _0206814E - 2; case 51
+ .short _02068500 - _0206814E - 2; case 52
+ .short _02068500 - _0206814E - 2; case 53
+ .short _02068500 - _0206814E - 2; case 54
+ .short _02068500 - _0206814E - 2; case 55
+ .short _02068500 - _0206814E - 2; case 56
+ .short _02068500 - _0206814E - 2; case 57
+ .short _020683AE - _0206814E - 2; case 58
+ .short _020683AE - _0206814E - 2; case 59
+ .short _020683AE - _0206814E - 2; case 60
+ .short _020683AE - _0206814E - 2; case 61
+ .short _020683EA - _0206814E - 2; case 62
+ .short _020683EA - _0206814E - 2; case 63
+ .short _020683EA - _0206814E - 2; case 64
+ .short _020683EA - _0206814E - 2; case 65
+ .short _02068504 - _0206814E - 2; case 66
+ .short _02068504 - _0206814E - 2; case 67
+ .short _02068504 - _0206814E - 2; case 68
+ .short _02068504 - _0206814E - 2; case 69
+ .short _02068404 - _0206814E - 2; case 70
+ .short _0206842E - _0206814E - 2; case 71
+ .short _02068458 - _0206814E - 2; case 72
+ .short _02068482 - _0206814E - 2; case 73
+ .short _020684AC - _0206814E - 2; case 74
+ .short _020684D6 - _0206814E - 2; case 75
+ .short _02068500 - _0206814E - 2; case 76
+ .short _02068500 - _0206814E - 2; case 77
+ .short _02068500 - _0206814E - 2; case 78
+ .short _02068500 - _0206814E - 2; case 79
+ .short _02068500 - _0206814E - 2; case 80
+ .short _02068500 - _0206814E - 2; case 81
+ .short _02068500 - _0206814E - 2; case 82
+ .short _02068500 - _0206814E - 2; case 83
+ .short _02068500 - _0206814E - 2; case 84
+ .short _02068500 - _0206814E - 2; case 85
+ .short _02068500 - _0206814E - 2; case 86
+ .short _02068500 - _0206814E - 2; case 87
+ .short _02068500 - _0206814E - 2; case 88
+ .short _02068500 - _0206814E - 2; case 89
+ .short _02068500 - _0206814E - 2; case 90
+ .short _02068500 - _0206814E - 2; case 91
+ .short _02068500 - _0206814E - 2; case 92
+ .short _02068500 - _0206814E - 2; case 93
+ .short _02068500 - _0206814E - 2; case 94
+ .short _02068500 - _0206814E - 2; case 95
+ .short _02068500 - _0206814E - 2; case 96
+ .short _02068500 - _0206814E - 2; case 97
+ .short _02068500 - _0206814E - 2; case 98
+ .short _02068500 - _0206814E - 2; case 99
+ .short _02068500 - _0206814E - 2; case 100
+ .short _02068500 - _0206814E - 2; case 101
+ .short _02068500 - _0206814E - 2; case 102
+ .short _02068500 - _0206814E - 2; case 103
+ .short _02068500 - _0206814E - 2; case 104
+ .short _02068500 - _0206814E - 2; case 105
+ .short _02068500 - _0206814E - 2; case 106
+ .short _02068500 - _0206814E - 2; case 107
+ .short _02068500 - _0206814E - 2; case 108
+ .short _02068500 - _0206814E - 2; case 109
+ .short _02068500 - _0206814E - 2; case 110
+ .short _02068500 - _0206814E - 2; case 111
+ .short _02068500 - _0206814E - 2; case 112
+ .short _02068500 - _0206814E - 2; case 113
+ .short _02068500 - _0206814E - 2; case 114
+ .short _02068500 - _0206814E - 2; case 115
+ .short _02068500 - _0206814E - 2; case 116
+ .short _02068500 - _0206814E - 2; case 117
+ .short _02068500 - _0206814E - 2; case 118
+ .short _02068500 - _0206814E - 2; case 119
+ .short _02068500 - _0206814E - 2; case 120
+ .short _02068500 - _0206814E - 2; case 121
+ .short _02068500 - _0206814E - 2; case 122
+ .short _02068500 - _0206814E - 2; case 123
+ .short _02068500 - _0206814E - 2; case 124
+ .short _02068500 - _0206814E - 2; case 125
+ .short _02068500 - _0206814E - 2; case 126
+ .short _02068500 - _0206814E - 2; case 127
+ .short _02068500 - _0206814E - 2; case 128
+ .short _02068500 - _0206814E - 2; case 129
+ .short _02068500 - _0206814E - 2; case 130
+ .short _02068500 - _0206814E - 2; case 131
+ .short _02068500 - _0206814E - 2; case 132
+ .short _02068500 - _0206814E - 2; case 133
+ .short _02068500 - _0206814E - 2; case 134
+ .short _02068500 - _0206814E - 2; case 135
+ .short _02068500 - _0206814E - 2; case 136
+ .short _02068500 - _0206814E - 2; case 137
+ .short _02068500 - _0206814E - 2; case 138
+ .short _02068500 - _0206814E - 2; case 139
+ .short _02068500 - _0206814E - 2; case 140
+ .short _02068500 - _0206814E - 2; case 141
+ .short _02068500 - _0206814E - 2; case 142
+ .short _02068500 - _0206814E - 2; case 143
+ .short _02068500 - _0206814E - 2; case 144
+ .short _02068500 - _0206814E - 2; case 145
+ .short _02068500 - _0206814E - 2; case 146
+ .short _02068500 - _0206814E - 2; case 147
+ .short _02068500 - _0206814E - 2; case 148
+ .short _02068500 - _0206814E - 2; case 149
+ .short _02068500 - _0206814E - 2; case 150
+ .short _02068500 - _0206814E - 2; case 151
+ .short _02068500 - _0206814E - 2; case 152
+ .short _02068500 - _0206814E - 2; case 153
+ .short _02068500 - _0206814E - 2; case 154
+ .short _02068500 - _0206814E - 2; case 155
+ .short _02068500 - _0206814E - 2; case 156
+ .short _02068500 - _0206814E - 2; case 157
+ .short _02068500 - _0206814E - 2; case 158
+ .short _02068500 - _0206814E - 2; case 159
+ .short _02068500 - _0206814E - 2; case 160
+ .short _02068500 - _0206814E - 2; case 161
+ .short _02068500 - _0206814E - 2; case 162
+ .short _02068500 - _0206814E - 2; case 163
+ .short _02068500 - _0206814E - 2; case 164
+ .short _02068500 - _0206814E - 2; case 165
+ .short _02068500 - _0206814E - 2; case 166
+ .short _02068500 - _0206814E - 2; case 167
+ .short _02068500 - _0206814E - 2; case 168
+ .short _02068500 - _0206814E - 2; case 169
+ .short _02068500 - _0206814E - 2; case 170
+ .short _02068500 - _0206814E - 2; case 171
+ .short _02068500 - _0206814E - 2; case 172
+ .short _02068500 - _0206814E - 2; case 173
+ .short _02068500 - _0206814E - 2; case 174
+ .short _02068500 - _0206814E - 2; case 175
+ .short _02068500 - _0206814E - 2; case 176
+ .short _02068500 - _0206814E - 2; case 177
+ .short _02068500 - _0206814E - 2; case 178
+_020682B4:
+ ldrh r0, [r4, #0x0]
+ mov r1, #0x64
+ bl FUN_02068758
+ ldr r1, [r4, #0x8]
+ add r1, r1, r6
+ cmp r1, r0
+ bls _020682D2
+ ldrh r0, [r4, #0x0]
+ mov r1, #0x64
+ bl FUN_02068758
+ add sp, #0xc
+ str r0, [r4, #0x8]
+ pop {r4-r7, pc}
+_020682D2:
+ add sp, #0xc
+ str r1, [r4, #0x8]
+ pop {r4-r7, pc}
+_020682D8:
+ ldrb r0, [r4, #0xc]
+ add r0, r0, r6
+ cmp r0, #0xff
+ ble _020682E8
+ mov r0, #0xff
+ add sp, #0xc
+ strb r0, [r4, #0xc]
+ pop {r4-r7, pc}
+_020682E8:
+ add sp, #0xc
+ strb r0, [r4, #0xc]
+ pop {r4-r7, pc}
+_020682EE:
+ ldrb r0, [r4, #0x10]
+ add sp, #0xc
+ add r0, r0, r6
+ strb r0, [r4, #0x10]
+ pop {r4-r7, pc}
+_020682F8:
+ ldrb r0, [r4, #0x11]
+ add sp, #0xc
+ add r0, r0, r6
+ strb r0, [r4, #0x11]
+ pop {r4-r7, pc}
+_02068302:
+ ldrb r0, [r4, #0x12]
+ add sp, #0xc
+ add r0, r0, r6
+ strb r0, [r4, #0x12]
+ pop {r4-r7, pc}
+_0206830C:
+ ldrb r0, [r4, #0x13]
+ add sp, #0xc
+ add r0, r0, r6
+ strb r0, [r4, #0x13]
+ pop {r4-r7, pc}
+_02068316:
+ ldrb r0, [r4, #0x14]
+ add sp, #0xc
+ add r0, r0, r6
+ strb r0, [r4, #0x14]
+ pop {r4-r7, pc}
+_02068320:
+ ldrb r0, [r4, #0x15]
+ add sp, #0xc
+ add r0, r0, r6
+ strb r0, [r4, #0x15]
+ pop {r4-r7, pc}
+_0206832A:
+ ldrb r0, [r4, #0x16]
+ add r0, r0, r6
+ cmp r0, #0xff
+ ble _0206833A
+ mov r0, #0xff
+ add sp, #0xc
+ strb r0, [r4, #0x16]
+ pop {r4-r7, pc}
+_0206833A:
+ add sp, #0xc
+ strb r0, [r4, #0x16]
+ pop {r4-r7, pc}
+_02068340:
+ ldrb r0, [r4, #0x17]
+ add r0, r0, r6
+ cmp r0, #0xff
+ ble _02068350
+ mov r0, #0xff
+ add sp, #0xc
+ strb r0, [r4, #0x17]
+ pop {r4-r7, pc}
+_02068350:
+ add sp, #0xc
+ strb r0, [r4, #0x17]
+ pop {r4-r7, pc}
+_02068356:
+ ldrb r0, [r4, #0x18]
+ add r0, r0, r6
+ cmp r0, #0xff
+ ble _02068366
+ mov r0, #0xff
+ add sp, #0xc
+ strb r0, [r4, #0x18]
+ pop {r4-r7, pc}
+_02068366:
+ add sp, #0xc
+ strb r0, [r4, #0x18]
+ pop {r4-r7, pc}
+_0206836C:
+ ldrb r0, [r4, #0x19]
+ add r0, r0, r6
+ cmp r0, #0xff
+ ble _0206837C
+ mov r0, #0xff
+ add sp, #0xc
+ strb r0, [r4, #0x19]
+ pop {r4-r7, pc}
+_0206837C:
+ add sp, #0xc
+ strb r0, [r4, #0x19]
+ pop {r4-r7, pc}
+_02068382:
+ ldrb r0, [r4, #0x1a]
+ add r0, r0, r6
+ cmp r0, #0xff
+ ble _02068392
+ mov r0, #0xff
+ add sp, #0xc
+ strb r0, [r4, #0x1a]
+ pop {r4-r7, pc}
+_02068392:
+ add sp, #0xc
+ strb r0, [r4, #0x1a]
+ pop {r4-r7, pc}
+_02068398:
+ ldrb r0, [r4, #0x1b]
+ add r0, r0, r6
+ cmp r0, #0xff
+ ble _020683A8
+ mov r0, #0xff
+ add sp, #0xc
+ strb r0, [r4, #0x1b]
+ pop {r4-r7, pc}
+_020683A8:
+ add sp, #0xc
+ strb r0, [r4, #0x1b]
+ pop {r4-r7, pc}
+_020683AE:
+ add r0, r5, #0x0
+ str r0, [sp, #0x4]
+ add r0, #0xc
+ str r0, [sp, #0x4]
+ sub r7, #0x3a
+ ldr r1, [sp, #0x4]
+ lsl r0, r7, #0x1
+ str r0, [sp, #0x8]
+ add r4, r5, #0x0
+ ldrh r0, [r5, r0]
+ ldrb r1, [r1, r7]
+ add r4, #0x8
+ bl FUN_0206AB30
+ ldrb r1, [r4, r7]
+ add r1, r6, r1
+ cmp r1, r0
+ ble _020683E4
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0x4]
+ ldrh r0, [r5, r0]
+ ldrb r1, [r1, r7]
+ bl FUN_0206AB30
+ add sp, #0xc
+ strb r0, [r4, r7]
+ pop {r4-r7, pc}
+_020683E4:
+ add sp, #0xc
+ strb r1, [r4, r7]
+ pop {r4-r7, pc}
+_020683EA:
+ add r5, #0xc
+ sub r7, #0x3e
+ ldrb r0, [r5, r7]
+ add r0, r6, r0
+ cmp r0, #0x3
+ ble _020683FE
+ mov r0, #0x3
+ add sp, #0xc
+ strb r0, [r5, r7]
+ pop {r4-r7, pc}
+_020683FE:
+ add sp, #0xc
+ strb r0, [r5, r7]
+ pop {r4-r7, pc}
+_02068404:
+ ldr r1, [r5, #0x10]
+ lsl r0, r1, #0x1b
+ lsr r0, r0, #0x1b
+ add r2, r0, r6
+ cmp r2, #0x1f
+ bls _0206841E
+ mov r0, #0x1f
+ bic r1, r0
+ mov r0, #0x1f
+ orr r0, r1
+ add sp, #0xc
+ str r0, [r5, #0x10]
+ pop {r4-r7, pc}
+_0206841E:
+ mov r0, #0x1f
+ bic r1, r0
+ mov r0, #0x1f
+ and r0, r2
+ orr r0, r1
+ add sp, #0xc
+ str r0, [r5, #0x10]
+ pop {r4-r7, pc}
+_0206842E:
+ ldr r1, [r5, #0x10]
+ lsl r0, r1, #0x16
+ lsr r0, r0, #0x1b
+ add r2, r0, r6
+ cmp r2, #0x1f
+ ldr r0, _02068508 ; =0xFFFFFC1F
+ bls _0206844A
+ and r1, r0
+ mov r0, #0x3e
+ lsl r0, r0, #0x4
+ orr r0, r1
+ add sp, #0xc
+ str r0, [r5, #0x10]
+ pop {r4-r7, pc}
+_0206844A:
+ and r1, r0
+ lsl r0, r2, #0x1b
+ lsr r0, r0, #0x16
+ orr r0, r1
+ add sp, #0xc
+ str r0, [r5, #0x10]
+ pop {r4-r7, pc}
+_02068458:
+ ldr r1, [r5, #0x10]
+ lsl r0, r1, #0x11
+ lsr r0, r0, #0x1b
+ add r2, r0, r6
+ cmp r2, #0x1f
+ ldr r0, _0206850C ; =0xFFFF83FF
+ bls _02068474
+ and r1, r0
+ mov r0, #0x1f
+ lsl r0, r0, #0xa
+ orr r0, r1
+ add sp, #0xc
+ str r0, [r5, #0x10]
+ pop {r4-r7, pc}
+_02068474:
+ and r1, r0
+ lsl r0, r2, #0x1b
+ lsr r0, r0, #0x11
+ orr r0, r1
+ add sp, #0xc
+ str r0, [r5, #0x10]
+ pop {r4-r7, pc}
+_02068482:
+ ldr r1, [r5, #0x10]
+ lsl r0, r1, #0xc
+ lsr r0, r0, #0x1b
+ add r2, r0, r6
+ cmp r2, #0x1f
+ ldr r0, _02068510 ; =0xFFF07FFF
+ bls _0206849E
+ and r1, r0
+ mov r0, #0x3e
+ lsl r0, r0, #0xe
+ orr r0, r1
+ add sp, #0xc
+ str r0, [r5, #0x10]
+ pop {r4-r7, pc}
+_0206849E:
+ and r1, r0
+ lsl r0, r2, #0x1b
+ lsr r0, r0, #0xc
+ orr r0, r1
+ add sp, #0xc
+ str r0, [r5, #0x10]
+ pop {r4-r7, pc}
+_020684AC:
+ ldr r1, [r5, #0x10]
+ lsl r0, r1, #0x7
+ lsr r0, r0, #0x1b
+ add r2, r0, r6
+ cmp r2, #0x1f
+ ldr r0, _02068514 ; =0xFE0FFFFF
+ bls _020684C8
+ and r1, r0
+ mov r0, #0x1f
+ lsl r0, r0, #0x14
+ orr r0, r1
+ add sp, #0xc
+ str r0, [r5, #0x10]
+ pop {r4-r7, pc}
+_020684C8:
+ and r1, r0
+ lsl r0, r2, #0x1b
+ lsr r0, r0, #0x7
+ orr r0, r1
+ add sp, #0xc
+ str r0, [r5, #0x10]
+ pop {r4-r7, pc}
+_020684D6:
+ ldr r1, [r5, #0x10]
+ lsl r0, r1, #0x2
+ lsr r0, r0, #0x1b
+ add r2, r0, r6
+ cmp r2, #0x1f
+ ldr r0, _02068518 ; =0xC1FFFFFF
+ bls _020684F2
+ and r1, r0
+ mov r0, #0x3e
+ lsl r0, r0, #0x18
+ orr r0, r1
+ add sp, #0xc
+ str r0, [r5, #0x10]
+ pop {r4-r7, pc}
+_020684F2:
+ and r1, r0
+ lsl r0, r2, #0x1b
+ lsr r0, r0, #0x2
+ orr r0, r1
+ add sp, #0xc
+ str r0, [r5, #0x10]
+ pop {r4-r7, pc}
+_02068500:
+ bl ErrorHandling
+_02068504:
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+_02068508: .word 0xFFFFFC1F
+_0206850C: .word 0xFFFF83FF
+_02068510: .word 0xFFF07FFF
+_02068514: .word 0xFE0FFFFF
+_02068518: .word 0xC1FFFFFF
+
+ thumb_func_start FUN_0206851C
+FUN_0206851C: ; 0x0206851C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, r1, #0x0
+ mov r1, #0x2c
+ bl FUN_02016998
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0206A370
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02068538
+FUN_02068538: ; 0x02068538
+ push {r4-r6, lr}
+ add r4, r0, #0x0
+ add r6, r1, #0x0
+ cmp r4, #0x0
+ bne _02068546
+ bl ErrorHandling
+_02068546:
+ cmp r6, #0x20
+ bhi _0206863A
+ add r0, r6, r6
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02068556: ; jump table (using 16-bit offset)
+ .short _02068598 - _02068556 - 2; case 0
+ .short _0206859C - _02068556 - 2; case 1
+ .short _020685A0 - _02068556 - 2; case 2
+ .short _020685A4 - _02068556 - 2; case 3
+ .short _020685A8 - _02068556 - 2; case 4
+ .short _020685AC - _02068556 - 2; case 5
+ .short _020685B0 - _02068556 - 2; case 6
+ .short _020685B4 - _02068556 - 2; case 7
+ .short _020685B8 - _02068556 - 2; case 8
+ .short _020685BC - _02068556 - 2; case 9
+ .short _020685C0 - _02068556 - 2; case 10
+ .short _020685C8 - _02068556 - 2; case 11
+ .short _020685D0 - _02068556 - 2; case 12
+ .short _020685D8 - _02068556 - 2; case 13
+ .short _020685E0 - _02068556 - 2; case 14
+ .short _020685E8 - _02068556 - 2; case 15
+ .short _020685F0 - _02068556 - 2; case 16
+ .short _020685F4 - _02068556 - 2; case 17
+ .short _020685F8 - _02068556 - 2; case 18
+ .short _020685FC - _02068556 - 2; case 19
+ .short _02068600 - _02068556 - 2; case 20
+ .short _02068604 - _02068556 - 2; case 21
+ .short _02068608 - _02068556 - 2; case 22
+ .short _0206860C - _02068556 - 2; case 23
+ .short _02068610 - _02068556 - 2; case 24
+ .short _02068614 - _02068556 - 2; case 25
+ .short _02068618 - _02068556 - 2; case 26
+ .short _0206861C - _02068556 - 2; case 27
+ .short _02068624 - _02068556 - 2; case 28
+ .short _0206862C - _02068556 - 2; case 29
+ .short _02068630 - _02068556 - 2; case 30
+ .short _02068634 - _02068556 - 2; case 31
+ .short _02068638 - _02068556 - 2; case 32
+_02068598:
+ ldrb r5, [r4, #0x0]
+ b _0206863A
+_0206859C:
+ ldrb r5, [r4, #0x1]
+ b _0206863A
+_020685A0:
+ ldrb r5, [r4, #0x2]
+ b _0206863A
+_020685A4:
+ ldrb r5, [r4, #0x3]
+ b _0206863A
+_020685A8:
+ ldrb r5, [r4, #0x4]
+ b _0206863A
+_020685AC:
+ ldrb r5, [r4, #0x5]
+ b _0206863A
+_020685B0:
+ ldrb r5, [r4, #0x6]
+ b _0206863A
+_020685B4:
+ ldrb r5, [r4, #0x7]
+ b _0206863A
+_020685B8:
+ ldrb r5, [r4, #0x8]
+ b _0206863A
+_020685BC:
+ ldrb r5, [r4, #0x9]
+ b _0206863A
+_020685C0:
+ ldrh r0, [r4, #0xa]
+ lsl r0, r0, #0x1e
+ lsr r5, r0, #0x1e
+ b _0206863A
+_020685C8:
+ ldrh r0, [r4, #0xa]
+ lsl r0, r0, #0x1c
+ lsr r5, r0, #0x1e
+ b _0206863A
+_020685D0:
+ ldrh r0, [r4, #0xa]
+ lsl r0, r0, #0x1a
+ lsr r5, r0, #0x1e
+ b _0206863A
+_020685D8:
+ ldrh r0, [r4, #0xa]
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x1e
+ b _0206863A
+_020685E0:
+ ldrh r0, [r4, #0xa]
+ lsl r0, r0, #0x16
+ lsr r5, r0, #0x1e
+ b _0206863A
+_020685E8:
+ ldrh r0, [r4, #0xa]
+ lsl r0, r0, #0x14
+ lsr r5, r0, #0x1e
+ b _0206863A
+_020685F0:
+ ldrh r5, [r4, #0xc]
+ b _0206863A
+_020685F4:
+ ldrh r5, [r4, #0xe]
+ b _0206863A
+_020685F8:
+ ldrb r5, [r4, #0x10]
+ b _0206863A
+_020685FC:
+ ldrb r5, [r4, #0x11]
+ b _0206863A
+_02068600:
+ ldrb r5, [r4, #0x12]
+ b _0206863A
+_02068604:
+ ldrb r5, [r4, #0x13]
+ b _0206863A
+_02068608:
+ ldrb r5, [r4, #0x14]
+ b _0206863A
+_0206860C:
+ ldrb r5, [r4, #0x15]
+ b _0206863A
+_02068610:
+ ldrb r5, [r4, #0x16]
+ b _0206863A
+_02068614:
+ ldrb r5, [r4, #0x17]
+ b _0206863A
+_02068618:
+ ldrb r5, [r4, #0x18]
+ b _0206863A
+_0206861C:
+ ldrb r0, [r4, #0x19]
+ lsl r0, r0, #0x19
+ lsr r5, r0, #0x19
+ b _0206863A
+_02068624:
+ ldrb r0, [r4, #0x19]
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x1f
+ b _0206863A
+_0206862C:
+ ldr r5, [r4, #0x1c]
+ b _0206863A
+_02068630:
+ ldr r5, [r4, #0x20]
+ b _0206863A
+_02068634:
+ ldr r5, [r4, #0x24]
+ b _0206863A
+_02068638:
+ ldr r5, [r4, #0x28]
+_0206863A:
+ add r0, r5, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02068640
+FUN_02068640: ; 0x02068640
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _0206864A
+ bl ErrorHandling
+_0206864A:
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02068654
+FUN_02068654: ; 0x02068654
+ push {r3-r5, lr}
+ add r4, r2, #0x0
+ bl FUN_0206A8FC
+ mov r1, #0x0
+ bl FUN_0206851C
+ add r5, r0, #0x0
+ add r1, r4, #0x0
+ bl FUN_02068538
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02068640
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02068678
+FUN_02068678: ; 0x02068678
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ mov r1, #0x0
+ bl FUN_0206851C
+ add r5, r0, #0x0
+ add r1, r4, #0x0
+ bl FUN_02068538
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02068640
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02068698
+FUN_02068698: ; 0x02068698
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ bl FUN_020669D4
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ mov r1, #0x5
+ mov r2, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x10
+ lsr r6, r0, #0x10
+ add r0, r5, #0x0
+ mov r1, #0xa0
+ mov r2, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+ add r0, r6, #0x0
+ add r1, r7, #0x0
+ bl FUN_02068758
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ add r1, r7, #0x1
+ bl FUN_02068758
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x8
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r7, r0, #0x0
+ ldr r1, [sp, #0x0]
+ add r0, r5, #0x0
+ bl FUN_02066A20
+ sub r1, r7, r4
+ mov r0, #0x64
+ mul r0, r1
+ sub r1, r6, r4
+ blx _u32_div_f
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_020686F8
+FUN_020686F8: ; 0x020686F8
+ ldr r3, _020686FC ; =FUN_02068700
+ bx r3
+ .balign 4
+_020686FC: .word FUN_02068700
+
+ thumb_func_start FUN_02068700
+FUN_02068700: ; 0x02068700
+ push {r4-r6, lr}
+ mov r1, #0x5
+ mov r2, #0x0
+ add r4, r0, #0x0
+ bl FUN_020672BC
+ lsl r0, r0, #0x10
+ lsr r6, r0, #0x10
+ add r0, r4, #0x0
+ bl FUN_020687C8
+ add r0, r0, #0x1
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ add r0, r4, #0x0
+ mov r1, #0x8
+ mov r2, #0x0
+ bl FUN_020672BC
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ bl FUN_02068758
+ sub r0, r0, r4
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02068734
+FUN_02068734: ; 0x02068734
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r1, #0x5
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0xa0
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02068758
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02068758
+FUN_02068758: ; 0x02068758
+ push {r4, lr}
+ add r4, r1, #0x0
+ mov r1, #0x15
+ bl FUN_02068678
+ add r1, r4, #0x0
+ bl FUN_02068788
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206876C
+FUN_0206876C: ; 0x0206876C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r5, #0x8
+ blt _0206877A
+ bl ErrorHandling
+_0206877A:
+ add r0, r4, #0x0
+ mov r1, #0x3
+ add r2, r5, #0x0
+ bl LoadFromNARC
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02068788
+FUN_02068788: ; 0x02068788
+ push {r4-r6, lr}
+ add r6, r0, #0x0
+ add r5, r1, #0x0
+ cmp r6, #0x8
+ blt _02068796
+ bl ErrorHandling
+_02068796:
+ cmp r5, #0x65
+ ble _0206879E
+ bl ErrorHandling
+_0206879E:
+ mov r1, #0x65
+ mov r0, #0x0
+ lsl r1, r1, #0x2
+ bl FUN_02016998
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ bl FUN_0206876C
+ lsl r0, r5, #0x2
+ ldr r5, [r4, r0]
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add r0, r5, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_020687C0
+FUN_020687C0: ; 0x020687C0
+ ldr r3, _020687C4 ; =FUN_020687C8
+ bx r3
+ .balign 4
+_020687C4: .word FUN_020687C8
+
+ thumb_func_start FUN_020687C8
+FUN_020687C8: ; 0x020687C8
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ bl FUN_02066A6C
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x5
+ mov r2, #0x0
+ bl FUN_020672BC
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x8
+ mov r2, #0x0
+ bl FUN_020672BC
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02066A94
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ add r1, r7, #0x0
+ bl FUN_02068800
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02068800
+FUN_02068800: ; 0x02068800
+ push {r4-r6, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ mov r1, #0x0
+ bl FUN_0206851C
+ add r6, r0, #0x0
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_02068824
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_02068640
+ add r0, r4, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02068824
+FUN_02068824: ; 0x02068824
+ push {r4, lr}
+ mov r1, #0x15
+ add r4, r2, #0x0
+ bl FUN_02068538
+ ldr r1, _0206884C ; =0x021C5AC0
+ bl FUN_0206876C
+ ldr r2, _02068850 ; =0x021C5AC4
+ mov r1, #0x1
+_02068838:
+ ldr r0, [r2, #0x0]
+ cmp r0, r4
+ bhi _02068846
+ add r1, r1, #0x1
+ add r2, r2, #0x4
+ cmp r1, #0x65
+ blt _02068838
+_02068846:
+ sub r0, r1, #0x1
+ pop {r4, pc}
+ nop
+_0206884C: .word 0x021C5AC0
+_02068850: .word 0x021C5AC4
+
+ thumb_func_start FUN_02068854
+FUN_02068854: ; 0x02068854
+ ldr r3, _02068858 ; =FUN_0206885C
+ bx r3
+ .balign 4
+_02068858: .word FUN_0206885C
+
+ thumb_func_start FUN_0206885C
+FUN_0206885C: ; 0x0206885C
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl FUN_02066A6C
+ mov r1, #0x0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r2, r1, #0x0
+ bl FUN_020672BC
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02066A94
+ add r0, r6, #0x0
+ bl FUN_02068884
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02068884
+FUN_02068884: ; 0x02068884
+ push {r3, lr}
+ mov r1, #0x19
+ blx _u32_div_f
+ lsl r0, r1, #0x18
+ lsr r0, r0, #0x18
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02068894
+FUN_02068894: ; 0x02068894
+ push {r3, lr}
+ cmp r2, #0x1
+ blo _0206889E
+ cmp r2, #0x5
+ bls _020688A2
+_0206889E:
+ add r0, r1, #0x0
+ pop {r3, pc}
+_020688A2:
+ lsl r3, r0, #0x2
+ add r3, r0, r3
+ ldr r0, _020688E4 ; =0x020F7F93
+ sub r2, r2, #0x1
+ add r0, r0, r3
+ ldrsb r2, [r2, r0]
+ mov r0, #0x0
+ mvn r0, r0
+ cmp r2, r0
+ beq _020688CE
+ cmp r2, #0x1
+ bne _020688E0
+ mov r0, #0x6e
+ mul r0, r1
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ mov r1, #0x64
+ blx _s32_div_f
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ b _020688E0
+_020688CE:
+ mov r0, #0x5a
+ mul r0, r1
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ mov r1, #0x64
+ blx _s32_div_f
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+_020688E0:
+ add r0, r1, #0x0
+ pop {r3, pc}
+ .balign 4
+_020688E4: .word 0x020F7F93
+
+ thumb_func_start FUN_020688E8
+FUN_020688E8: ; 0x020688E8
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r6, r1, #0x0
+ add r5, r0, #0x0
+ str r2, [sp, #0x0]
+ cmp r6, #0x5
+ bne _02068900
+ bl FUN_0201B9EC
+ mov r1, #0x1
+ tst r0, r1
+ bne _020689D4
+_02068900:
+ add r0, r5, #0x0
+ mov r1, #0xad
+ mov r2, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ beq _020689D4
+ ldr r0, _020689D8 ; =0x000001EE
+ cmp r1, r0
+ beq _020689D4
+ add r0, r5, #0x0
+ mov r1, #0x6
+ mov r2, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ mov r1, #0x1
+ mov r2, #0x0
+ bl FUN_0206E7B8
+ lsl r0, r0, #0x18
+ mov r4, #0x0
+ lsr r7, r0, #0x18
+ add r0, r5, #0x0
+ mov r1, #0x9
+ add r2, r4, #0x0
+ bl FUN_020671BC
+ add r1, sp, #0x4
+ strh r0, [r1, #0x0]
+ add r0, r4, #0x0
+ ldrsh r1, [r1, r0]
+ cmp r1, #0x64
+ blt _0206894E
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+_0206894E:
+ cmp r1, #0xc8
+ blt _02068958
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+_02068958:
+ lsl r0, r6, #0x1
+ add r1, r6, r0
+ ldr r0, _020689DC ; =0x020F7ED4
+ add r0, r0, r1
+ ldrsb r4, [r4, r0]
+ cmp r4, #0x0
+ ble _0206897A
+ add r0, r5, #0x0
+ mov r1, #0x9a
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0xb
+ bne _0206897A
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ asr r4, r0, #0x18
+_0206897A:
+ cmp r4, #0x0
+ ble _02068994
+ add r0, r5, #0x0
+ mov r1, #0x97
+ mov r2, #0x0
+ bl FUN_020671BC
+ ldr r1, [sp, #0x0]
+ cmp r1, r0
+ bne _02068994
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ asr r4, r0, #0x18
+_02068994:
+ cmp r4, #0x0
+ ble _020689AA
+ cmp r7, #0x34
+ bne _020689AA
+ mov r0, #0x96
+ mul r0, r4
+ mov r1, #0x64
+ blx _s32_div_f
+ lsl r0, r0, #0x18
+ asr r4, r0, #0x18
+_020689AA:
+ add r0, sp, #0x4
+ mov r1, #0x0
+ ldrsh r2, [r0, r1]
+ add r2, r2, r4
+ strh r2, [r0, #0x0]
+ ldrsh r2, [r0, r1]
+ cmp r2, #0x0
+ bge _020689BC
+ strh r1, [r0, #0x0]
+_020689BC:
+ add r1, sp, #0x4
+ mov r0, #0x0
+ ldrsh r0, [r1, r0]
+ cmp r0, #0xff
+ ble _020689CA
+ mov r0, #0xff
+ strh r0, [r1, #0x0]
+_020689CA:
+ add r0, r5, #0x0
+ mov r1, #0x9
+ add r2, sp, #0x4
+ bl FUN_02067830
+_020689D4:
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+_020689D8: .word 0x000001EE
+_020689DC: .word 0x020F7ED4
+
+ thumb_func_start FUN_020689E0
+FUN_020689E0: ; 0x020689E0
+ ldr r3, _020689E4 ; =FUN_020689E8
+ bx r3
+ .balign 4
+_020689E4: .word FUN_020689E8
+
+ thumb_func_start FUN_020689E8
+FUN_020689E8: ; 0x020689E8
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ bl FUN_02066A6C
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x5
+ mov r2, #0x0
+ bl FUN_020672BC
+ lsl r0, r0, #0x10
+ mov r1, #0x0
+ lsr r4, r0, #0x10
+ add r0, r5, #0x0
+ add r2, r1, #0x0
+ bl FUN_020672BC
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02066A94
+ add r0, r4, #0x0
+ add r1, r7, #0x0
+ bl FUN_02068A20
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02068A20
+FUN_02068A20: ; 0x02068A20
+ push {r4-r6, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ mov r1, #0x0
+ bl FUN_0206851C
+ add r6, r0, #0x0
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_02068A44
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_02068640
+ add r0, r4, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02068A44
+FUN_02068A44: ; 0x02068A44
+ push {r4, lr}
+ mov r1, #0x12
+ add r4, r2, #0x0
+ bl FUN_02068538
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ beq _02068A5E
+ cmp r1, #0xfe
+ beq _02068A62
+ cmp r1, #0xff
+ beq _02068A66
+ b _02068A6A
+_02068A5E:
+ mov r0, #0x0
+ pop {r4, pc}
+_02068A62:
+ mov r0, #0x1
+ pop {r4, pc}
+_02068A66:
+ mov r0, #0x2
+ pop {r4, pc}
+_02068A6A:
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ cmp r1, r0
+ bls _02068A76
+ mov r0, #0x1
+ b _02068A78
+_02068A76:
+ mov r0, #0x0
+_02068A78:
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02068A80
+FUN_02068A80: ; 0x02068A80
+ ldr r3, _02068A84 ; =FUN_02068A88
+ bx r3
+ .balign 4
+_02068A84: .word FUN_02068A88
+
+ thumb_func_start FUN_02068A88
+FUN_02068A88: ; 0x02068A88
+ push {r3-r5, lr}
+ mov r1, #0x7
+ mov r2, #0x0
+ add r5, r0, #0x0
+ bl FUN_020672BC
+ mov r1, #0x0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r2, r1, #0x0
+ bl FUN_020672BC
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02068AAC
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02068AAC
+FUN_02068AAC: ; 0x02068AAC
+ ldr r3, _02068AD4 ; =0xFFFF0000
+ lsl r2, r1, #0x10
+ and r1, r3
+ and r3, r0
+ lsl r0, r0, #0x10
+ lsr r3, r3, #0x10
+ lsr r0, r0, #0x10
+ lsr r1, r1, #0x10
+ eor r0, r3
+ lsr r2, r2, #0x10
+ eor r0, r1
+ eor r0, r2
+ cmp r0, #0x8
+ bhs _02068ACC
+ mov r0, #0x1
+ b _02068ACE
+_02068ACC:
+ mov r0, #0x0
+_02068ACE:
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+ .balign 4
+_02068AD4: .word 0xFFFF0000
+
+ thumb_func_start FUN_02068AD8
+FUN_02068AD8: ; 0x02068AD8
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ ldr r0, _02068B64 ; =0xFFFF0000
+ and r0, r7
+ lsr r1, r0, #0x10
+ lsl r0, r7, #0x10
+ lsr r0, r0, #0x10
+ eor r0, r1
+ lsr r7, r0, #0x3
+ bl FUN_0201B9EC
+ mov r1, #0x7
+ and r0, r1
+ lsl r0, r0, #0x10
+ lsr r6, r0, #0x10
+ bl FUN_0201B9EC
+ mov r1, #0x7
+ and r0, r1
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ mov r4, #0x0
+_02068B04:
+ add r0, r4, #0x0
+ bl FUN_0206A92C
+ tst r0, r7
+ beq _02068B34
+ bl FUN_0201B9EC
+ mov r1, #0x1
+ tst r0, r1
+ beq _02068B26
+ add r0, r4, #0x3
+ bl FUN_0206A92C
+ orr r0, r6
+ lsl r0, r0, #0x10
+ lsr r6, r0, #0x10
+ b _02068B56
+_02068B26:
+ add r0, r4, #0x3
+ bl FUN_0206A92C
+ orr r0, r5
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ b _02068B56
+_02068B34:
+ bl FUN_0201B9EC
+ mov r1, #0x1
+ tst r0, r1
+ beq _02068B56
+ add r0, r4, #0x3
+ bl FUN_0206A92C
+ orr r0, r6
+ lsl r0, r0, #0x10
+ lsr r6, r0, #0x10
+ add r0, r4, #0x3
+ bl FUN_0206A92C
+ orr r0, r5
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+_02068B56:
+ add r4, r4, #0x1
+ cmp r4, #0xd
+ blt _02068B04
+ lsl r0, r5, #0x10
+ orr r0, r6
+ pop {r3-r7, pc}
+ nop
+_02068B64: .word 0xFFFF0000
+
+ thumb_func_start FUN_02068B68
+FUN_02068B68: ; 0x02068B68
+ ldr r3, _02068B6C ; =FUN_02068B70
+ bx r3
+ .balign 4
+_02068B6C: .word FUN_02068B70
+
+ thumb_func_start FUN_02068B70
+FUN_02068B70: ; 0x02068B70
+ push {r4-r7, lr}
+ sub sp, #0x1c
+ add r5, r1, #0x0
+ str r0, [sp, #0xc]
+ add r0, r5, #0x0
+ str r2, [sp, #0x10]
+ bl FUN_02066A6C
+ str r0, [sp, #0x18]
+ add r0, r5, #0x0
+ mov r1, #0xad
+ mov r2, #0x0
+ bl FUN_020672BC
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ add r0, r5, #0x0
+ bl FUN_020689E8
+ str r0, [sp, #0x14]
+ add r0, r5, #0x0
+ bl FUN_02068A88
+ mov r1, #0x0
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ add r2, r1, #0x0
+ bl FUN_020672BC
+ add r6, r0, #0x0
+ ldr r0, _02068BF8 ; =0x000001EE
+ cmp r4, r0
+ bne _02068BCA
+ add r0, r5, #0x0
+ mov r1, #0x5
+ mov r2, #0x0
+ bl FUN_020672BC
+ ldr r1, _02068BFC ; =0x000001EA
+ cmp r0, r1
+ bne _02068BC6
+ mov r0, #0x1
+ b _02068BD8
+_02068BC6:
+ mov r0, #0x0
+ b _02068BD8
+_02068BCA:
+ add r0, r5, #0x0
+ mov r1, #0x70
+ mov r2, #0x0
+ bl FUN_020672BC
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+_02068BD8:
+ str r7, [sp, #0x0]
+ str r0, [sp, #0x4]
+ str r6, [sp, #0x8]
+ ldr r0, [sp, #0xc]
+ ldr r2, [sp, #0x14]
+ ldr r3, [sp, #0x10]
+ add r1, r4, #0x0
+ bl FUN_02068C00
+ ldr r1, [sp, #0x18]
+ add r0, r5, #0x0
+ bl FUN_02066A94
+ add sp, #0x1c
+ pop {r4-r7, pc}
+ nop
+_02068BF8: .word 0x000001EE
+_02068BFC: .word 0x000001EA
+
+ thumb_func_start FUN_02068C00
+FUN_02068C00: ; 0x02068C00
+ push {r4-r7}
+ add r7, r2, #0x0
+ add r5, r3, #0x0
+ add r4, r0, #0x0
+ add r0, r1, #0x0
+ ldr r3, [sp, #0x10]
+ ldr r2, [sp, #0x14]
+ mov r1, #0x0
+ strh r1, [r4, #0x6]
+ strb r1, [r4, #0x8]
+ str r1, [r4, #0xc]
+ ldr r1, _02068E0C ; =0x000001A5
+ cmp r0, r1
+ bgt _02068C68
+ bge _02068D1E
+ add r6, r1, #0x0
+ sub r6, #0x46
+ cmp r0, r6
+ bgt _02068C36
+ sub r1, #0x46
+ cmp r0, r1
+ blt _02068C2E
+ b _02068D58
+_02068C2E:
+ cmp r0, #0xc9
+ bne _02068C34
+ b _02068D90
+_02068C34:
+ b _02068DD4
+_02068C36:
+ add r6, r1, #0x0
+ sub r6, #0x23
+ cmp r0, r6
+ bgt _02068C48
+ sub r1, #0x23
+ cmp r0, r1
+ bne _02068C46
+ b _02068D76
+_02068C46:
+ b _02068DD4
+_02068C48:
+ add r6, r1, #0x0
+ sub r6, #0x8
+ cmp r0, r6
+ bgt _02068C66
+ add r6, r1, #0x0
+ sub r6, #0x9
+ cmp r0, r6
+ blt _02068C66
+ add r6, r1, #0x0
+ sub r6, #0x9
+ cmp r0, r6
+ beq _02068CAA
+ sub r1, #0x8
+ cmp r0, r1
+ beq _02068CC8
+_02068C66:
+ b _02068DD4
+_02068C68:
+ add r6, r1, #0x0
+ add r6, #0x48
+ cmp r0, r6
+ bgt _02068C8E
+ add r6, r1, #0x0
+ add r6, #0x48
+ cmp r0, r6
+ bge _02068D3A
+ add r6, r1, #0x2
+ cmp r0, r6
+ bgt _02068C8C
+ add r6, r1, #0x1
+ cmp r0, r6
+ blt _02068C8C
+ beq _02068CE6
+ add r1, r1, #0x2
+ cmp r0, r1
+ beq _02068D02
+_02068C8C:
+ b _02068DD4
+_02068C8E:
+ add r6, r1, #0x0
+ add r6, #0x49
+ cmp r0, r6
+ bgt _02068CA0
+ add r1, #0x49
+ cmp r0, r1
+ bne _02068C9E
+ b _02068DAC
+_02068C9E:
+ b _02068DD4
+_02068CA0:
+ add r1, #0x4a
+ cmp r0, r1
+ bne _02068CA8
+ b _02068DC4
+_02068CA8:
+ b _02068DD4
+_02068CAA:
+ cmp r2, #0x2
+ bls _02068CB0
+ mov r2, #0x0
+_02068CB0:
+ mov r0, #0x75
+ strh r0, [r4, #0x0]
+ lsr r0, r5, #0x1
+ lsl r1, r2, #0x1
+ add r0, #0x48
+ add r0, r0, r1
+ add r3, #0x92
+ strh r0, [r4, #0x2]
+ add r0, r3, r1
+ strh r0, [r4, #0x4]
+ pop {r4-r7}
+ bx lr
+_02068CC8:
+ cmp r2, #0x2
+ bls _02068CCE
+ mov r2, #0x0
+_02068CCE:
+ mov r0, #0x75
+ strh r0, [r4, #0x0]
+ lsr r0, r5, #0x1
+ lsl r1, r2, #0x1
+ add r0, #0x4e
+ add r0, r0, r1
+ add r3, #0x98
+ strh r0, [r4, #0x2]
+ add r0, r3, r1
+ strh r0, [r4, #0x4]
+ pop {r4-r7}
+ bx lr
+_02068CE6:
+ cmp r2, #0x1
+ bls _02068CEC
+ mov r2, #0x0
+_02068CEC:
+ mov r0, #0x75
+ add r5, #0x54
+ strh r0, [r4, #0x0]
+ add r0, r5, r2
+ strh r0, [r4, #0x2]
+ add r3, #0x9e
+ lsl r0, r2, #0x1
+ add r0, r3, r0
+ strh r0, [r4, #0x4]
+ pop {r4-r7}
+ bx lr
+_02068D02:
+ cmp r2, #0x1
+ bls _02068D08
+ mov r2, #0x0
+_02068D08:
+ mov r0, #0x75
+ add r5, #0x58
+ strh r0, [r4, #0x0]
+ add r0, r5, r2
+ strh r0, [r4, #0x2]
+ add r3, #0xa2
+ lsl r0, r2, #0x1
+ add r0, r3, r0
+ strh r0, [r4, #0x4]
+ pop {r4-r7}
+ bx lr
+_02068D1E:
+ cmp r2, #0x1
+ bls _02068D24
+ mov r2, #0x0
+_02068D24:
+ mov r0, #0x75
+ add r5, #0x5c
+ strh r0, [r4, #0x0]
+ add r0, r5, r2
+ strh r0, [r4, #0x2]
+ lsl r0, r3, #0x1
+ add r0, #0xa6
+ add r0, r2, r0
+ strh r0, [r4, #0x4]
+ pop {r4-r7}
+ bx lr
+_02068D3A:
+ cmp r2, #0x11
+ bls _02068D40
+ mov r2, #0x0
+_02068D40:
+ mov r0, #0x75
+ strh r0, [r4, #0x0]
+ lsr r0, r5, #0x1
+ lsl r1, r2, #0x1
+ add r0, #0x60
+ add r0, r0, r1
+ add r3, #0xaa
+ strh r0, [r4, #0x2]
+ add r0, r3, r1
+ strh r0, [r4, #0x4]
+ pop {r4-r7}
+ bx lr
+_02068D58:
+ cmp r2, #0x3
+ bls _02068D5E
+ mov r2, #0x0
+_02068D5E:
+ mov r0, #0x75
+ strh r0, [r4, #0x0]
+ lsl r0, r5, #0x1
+ add r0, #0x40
+ add r0, r2, r0
+ strh r0, [r4, #0x2]
+ lsl r0, r3, #0x2
+ add r0, #0x8a
+ add r0, r2, r0
+ strh r0, [r4, #0x4]
+ pop {r4-r7}
+ bx lr
+_02068D76:
+ cmp r2, #0x3
+ bls _02068D7C
+ mov r2, #0x0
+_02068D7C:
+ mov r0, #0x75
+ strh r0, [r4, #0x0]
+ lsr r1, r5, #0x1
+ lsl r0, r2, #0x1
+ add r0, r1, r0
+ strh r0, [r4, #0x2]
+ add r3, #0x86
+ strh r3, [r4, #0x4]
+ pop {r4-r7}
+ bx lr
+_02068D90:
+ cmp r2, #0x1c
+ blo _02068D96
+ mov r2, #0x0
+_02068D96:
+ mov r0, #0x75
+ lsr r1, r5, #0x1
+ strh r0, [r4, #0x0]
+ add r1, #0x8
+ lsl r0, r2, #0x1
+ add r0, r1, r0
+ strh r0, [r4, #0x2]
+ add r3, #0x88
+ strh r3, [r4, #0x4]
+ pop {r4-r7}
+ bx lr
+_02068DAC:
+ cmp r2, #0x1
+ bls _02068DB2
+ mov r2, #0x0
+_02068DB2:
+ mov r0, #0x75
+ strh r0, [r4, #0x0]
+ add r0, r2, #0x0
+ add r0, #0x84
+ strh r0, [r4, #0x2]
+ add r2, #0xce
+ strh r2, [r4, #0x4]
+ pop {r4-r7}
+ bx lr
+_02068DC4:
+ mov r0, #0x75
+ strh r0, [r4, #0x0]
+ mov r0, #0x84
+ strh r0, [r4, #0x2]
+ mov r0, #0xce
+ strh r0, [r4, #0x4]
+ pop {r4-r7}
+ bx lr
+_02068DD4:
+ mov r1, #0x4
+ strh r1, [r4, #0x0]
+ cmp r7, #0x1
+ beq _02068DE0
+ mov r2, #0x1
+ b _02068DE2
+_02068DE0:
+ mov r2, #0x0
+_02068DE2:
+ mov r1, #0x6
+ mul r1, r0
+ add r6, r5, r1
+ add r2, r6, r2
+ add r1, r1, #0x4
+ strh r2, [r4, #0x2]
+ add r1, r3, r1
+ strh r1, [r4, #0x4]
+ ldr r1, _02068E10 ; =0x00000147
+ cmp r0, r1
+ bne _02068E06
+ cmp r5, #0x2
+ bne _02068E06
+ strh r1, [r4, #0x6]
+ mov r0, #0x0
+ strb r0, [r4, #0x8]
+ ldr r0, [sp, #0x18]
+ str r0, [r4, #0xc]
+_02068E06:
+ pop {r4-r7}
+ bx lr
+ nop
+_02068E0C: .word 0x000001A5
+_02068E10: .word 0x00000147
+
+ thumb_func_start FUN_02068E14
+FUN_02068E14: ; 0x02068E14
+ ldr r3, _02068E18 ; =FUN_02068E1C
+ bx r3
+ .balign 4
+_02068E18: .word FUN_02068E1C
+
+ thumb_func_start FUN_02068E1C
+FUN_02068E1C: ; 0x02068E1C
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r7, r1, #0x0
+ mov r1, #0xad
+ mov r2, #0x0
+ add r5, r0, #0x0
+ bl FUN_020672BC
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ add r0, r5, #0x0
+ bl FUN_020689E8
+ mov r1, #0x0
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ add r2, r1, #0x0
+ bl FUN_020672BC
+ add r6, r0, #0x0
+ ldr r0, _02068E80 ; =0x000001EE
+ cmp r4, r0
+ bne _02068E62
+ add r0, r5, #0x0
+ mov r1, #0x5
+ mov r2, #0x0
+ bl FUN_020672BC
+ ldr r1, _02068E84 ; =0x000001EA
+ cmp r0, r1
+ bne _02068E5E
+ mov r3, #0x1
+ b _02068E70
+_02068E5E:
+ mov r3, #0x0
+ b _02068E70
+_02068E62:
+ add r0, r5, #0x0
+ mov r1, #0x70
+ mov r2, #0x0
+ bl FUN_020672BC
+ lsl r0, r0, #0x18
+ lsr r3, r0, #0x18
+_02068E70:
+ str r6, [sp, #0x0]
+ ldr r1, [sp, #0x4]
+ add r0, r4, #0x0
+ add r2, r7, #0x0
+ bl FUN_02068E88
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+_02068E80: .word 0x000001EE
+_02068E84: .word 0x000001EA
+
+ thumb_func_start FUN_02068E88
+FUN_02068E88: ; 0x02068E88
+ push {r3-r5, lr}
+ ldr r4, _02068FDC ; =0x000001A5
+ cmp r0, r4
+ bgt _02068ED6
+ bge _02068F54
+ add r5, r4, #0x0
+ sub r5, #0x46
+ cmp r0, r5
+ bgt _02068EA6
+ sub r4, #0x46
+ cmp r0, r4
+ bge _02068F74
+ cmp r0, #0xc9
+ beq _02068F94
+ b _02068FB8
+_02068EA6:
+ add r5, r4, #0x0
+ sub r5, #0x23
+ cmp r0, r5
+ bgt _02068EB6
+ sub r4, #0x23
+ cmp r0, r4
+ beq _02068F84
+ b _02068FB8
+_02068EB6:
+ add r5, r4, #0x0
+ sub r5, #0x8
+ cmp r0, r5
+ bgt _02068FB8
+ add r5, r4, #0x0
+ sub r5, #0x9
+ cmp r0, r5
+ blt _02068FB8
+ add r5, r4, #0x0
+ sub r5, #0x9
+ cmp r0, r5
+ beq _02068F14
+ sub r4, #0x8
+ cmp r0, r4
+ beq _02068F26
+ b _02068FB8
+_02068ED6:
+ add r5, r4, #0x0
+ add r5, #0x48
+ cmp r0, r5
+ bgt _02068EFC
+ add r5, r4, #0x0
+ add r5, #0x48
+ cmp r0, r5
+ bge _02068F62
+ add r5, r4, #0x2
+ cmp r0, r5
+ bgt _02068FB8
+ add r5, r4, #0x1
+ cmp r0, r5
+ blt _02068FB8
+ beq _02068F38
+ add r4, r4, #0x2
+ cmp r0, r4
+ beq _02068F46
+ b _02068FB8
+_02068EFC:
+ add r5, r4, #0x0
+ add r5, #0x49
+ cmp r0, r5
+ bgt _02068F0C
+ add r4, #0x49
+ cmp r0, r4
+ beq _02068FA6
+ b _02068FB8
+_02068F0C:
+ add r4, #0x4a
+ cmp r0, r4
+ beq _02068FB2
+ b _02068FB8
+_02068F14:
+ cmp r3, #0x2
+ bls _02068F1A
+ mov r3, #0x0
+_02068F1A:
+ lsr r1, r2, #0x1
+ add r1, #0x48
+ lsl r0, r3, #0x1
+ mov r4, #0x79
+ add r3, r1, r0
+ b _02068FCA
+_02068F26:
+ cmp r3, #0x2
+ bls _02068F2C
+ mov r3, #0x0
+_02068F2C:
+ lsr r1, r2, #0x1
+ add r1, #0x4e
+ lsl r0, r3, #0x1
+ mov r4, #0x79
+ add r3, r1, r0
+ b _02068FCA
+_02068F38:
+ cmp r3, #0x1
+ bls _02068F3E
+ mov r3, #0x0
+_02068F3E:
+ add r2, #0x54
+ mov r4, #0x79
+ add r3, r2, r3
+ b _02068FCA
+_02068F46:
+ cmp r3, #0x1
+ bls _02068F4C
+ mov r3, #0x0
+_02068F4C:
+ add r2, #0x58
+ mov r4, #0x79
+ add r3, r2, r3
+ b _02068FCA
+_02068F54:
+ cmp r3, #0x1
+ bls _02068F5A
+ mov r3, #0x0
+_02068F5A:
+ add r2, #0x5c
+ mov r4, #0x79
+ add r3, r2, r3
+ b _02068FCA
+_02068F62:
+ cmp r3, #0x11
+ bls _02068F68
+ mov r3, #0x0
+_02068F68:
+ lsr r1, r2, #0x1
+ add r1, #0x60
+ lsl r0, r3, #0x1
+ mov r4, #0x79
+ add r3, r1, r0
+ b _02068FCA
+_02068F74:
+ cmp r3, #0x3
+ bls _02068F7A
+ mov r3, #0x0
+_02068F7A:
+ lsl r0, r2, #0x1
+ add r0, #0x40
+ mov r4, #0x79
+ add r3, r3, r0
+ b _02068FCA
+_02068F84:
+ cmp r3, #0x3
+ bls _02068F8A
+ mov r3, #0x0
+_02068F8A:
+ lsr r1, r2, #0x1
+ lsl r0, r3, #0x1
+ mov r4, #0x79
+ add r3, r1, r0
+ b _02068FCA
+_02068F94:
+ cmp r3, #0x1c
+ blo _02068F9A
+ mov r3, #0x0
+_02068F9A:
+ lsr r1, r2, #0x1
+ add r1, #0x8
+ lsl r0, r3, #0x1
+ mov r4, #0x79
+ add r3, r1, r0
+ b _02068FCA
+_02068FA6:
+ cmp r3, #0x1
+ bls _02068FAC
+ mov r3, #0x0
+_02068FAC:
+ mov r4, #0x79
+ add r3, #0x84
+ b _02068FCA
+_02068FB2:
+ mov r4, #0x79
+ mov r3, #0x84
+ b _02068FCA
+_02068FB8:
+ mov r4, #0x5
+ cmp r1, #0x1
+ beq _02068FC2
+ mov r1, #0x1
+ b _02068FC4
+_02068FC2:
+ mov r1, #0x0
+_02068FC4:
+ lsl r0, r0, #0x2
+ add r0, r2, r0
+ add r3, r0, r1
+_02068FCA:
+ add r0, sp, #0x0
+ add r1, r4, #0x0
+ add r2, r3, #0x0
+ bl LoadFromNARC
+ add r0, sp, #0x0
+ ldrb r0, [r0, #0x0]
+ pop {r3-r5, pc}
+ nop
+_02068FDC: .word 0x000001A5
+
+ thumb_func_start FUN_02068FE0
+FUN_02068FE0: ; 0x02068FE0
+ push {r4, lr}
+ add r4, r0, #0x0
+ cmp r2, #0x2
+ bne _02068FEE
+ mov r0, #0x3c
+ strh r0, [r4, #0x0]
+ b _02068FFC
+_02068FEE:
+ mov r0, #0x6
+ strh r0, [r4, #0x0]
+ add r0, r1, #0x0
+ bl FUN_0206AA30
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+_02068FFC:
+ lsl r0, r1, #0x1
+ strh r0, [r4, #0x2]
+ add r0, r0, #0x1
+ strh r0, [r4, #0x4]
+ mov r0, #0x0
+ strh r0, [r4, #0x6]
+ strb r0, [r4, #0x8]
+ str r0, [r4, #0xc]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02069010
+FUN_02069010: ; 0x02069010
+ push {r3-r5, lr}
+ sub sp, #0x20
+ add r5, r1, #0x0
+ mov r3, #0x1c
+ add r4, r0, #0x0
+ str r3, [sp, #0x0]
+ add r0, sp, #0x4
+ mov r1, #0x72
+ mov r2, #0x0
+ mul r3, r5
+ bl FUN_02006548
+ add r0, sp, #0xc
+ add r1, r4, #0x0
+ mov r2, #0x14
+ blx MI_CpuCopy8
+ add sp, #0x20
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02069038
+FUN_02069038: ; 0x02069038
+ push {r3-r7, lr}
+ sub sp, #0x28
+ add r4, r0, #0x0
+ add r6, r2, #0x0
+ add r5, r3, #0x0
+ mov r3, #0x1c
+ add r0, sp, #0x8
+ add r7, r1, #0x0
+ str r3, [sp, #0x0]
+ add r0, #0x2
+ mov r1, #0x72
+ mov r2, #0x0
+ mul r3, r6
+ bl FUN_02006548
+ cmp r5, #0x2
+ bne _0206906C
+ add r1, sp, #0x4
+ mov r0, #0x6
+ ldrsb r0, [r1, r0]
+ strh r0, [r1, #0x0]
+ ldrb r0, [r1, #0x7]
+ strh r0, [r1, #0x2]
+ ldr r0, [sp, #0x44]
+ strb r0, [r1, #0x4]
+ b _02069096
+_0206906C:
+ ldr r0, [sp, #0x40]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_02014C3C
+ add r5, r0, #0x0
+ cmp r5, #0x3
+ blt _02069080
+ bl ErrorHandling
+_02069080:
+ lsl r2, r5, #0x1
+ add r0, sp, #0xc
+ ldrsb r1, [r0, r2]
+ add r0, sp, #0x4
+ strh r1, [r0, #0x0]
+ add r1, sp, #0xc
+ add r1, #0x1
+ ldrb r1, [r1, r2]
+ strh r1, [r0, #0x2]
+ ldr r1, [sp, #0x44]
+ strb r1, [r0, #0x4]
+_02069096:
+ ldr r3, [sp, #0x48]
+ add r0, r4, #0x0
+ lsl r3, r3, #0x18
+ add r1, r7, #0x0
+ add r2, sp, #0x4
+ lsr r3, r3, #0x18
+ bl FUN_02014C54
+ add sp, #0x28
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020690AC
+FUN_020690AC: ; 0x020690AC
+ mov r2, #0x3c
+ strh r2, [r0, #0x0]
+ lsl r1, r1, #0x1
+ strh r1, [r0, #0x2]
+ add r1, r1, #0x1
+ strh r1, [r0, #0x4]
+ mov r1, #0x0
+ strh r1, [r0, #0x6]
+ strb r1, [r0, #0x8]
+ str r1, [r0, #0xc]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020690C4
+FUN_020690C4: ; 0x020690C4
+ mov r0, #0xec
+ bx lr
+
+ thumb_func_start FUN_020690C8
+FUN_020690C8: ; 0x020690C8
+ mov r0, #0x88
+ bx lr
+
+ thumb_func_start FUN_020690CC
+FUN_020690CC: ; 0x020690CC
+ ldr r3, _020690D0 ; =FUN_020690D4
+ bx r3
+ .balign 4
+_020690D0: .word FUN_020690D4
+
+ thumb_func_start FUN_020690D4
+FUN_020690D4: ; 0x020690D4
+ push {r3, lr}
+ mov r1, #0x70
+ mov r2, #0x0
+ bl FUN_020672BC
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ pop {r3, pc}
+
+ thumb_func_start FUN_020690E4
+FUN_020690E4: ; 0x020690E4
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020690E8
+FUN_020690E8: ; 0x020690E8
+ push {r3-r5, lr}
+ sub sp, #0x8
+ mov r1, #0x5
+ mov r2, #0x0
+ add r4, r0, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ add r0, r4, #0x0
+ mov r1, #0xa0
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r1, r0, #0x1
+ add r0, sp, #0x0
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0x8
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ mov r1, #0x15
+ bl FUN_02068678
+ mov r1, #0x64
+ add r5, r0, #0x0
+ bl FUN_02068788
+ ldr r1, [sp, #0x4]
+ cmp r1, r0
+ bls _02069138
+ str r0, [sp, #0x4]
+ add r0, r4, #0x0
+ mov r1, #0x8
+ add r2, sp, #0x4
+ bl FUN_02067830
+_02069138:
+ add r0, sp, #0x0
+ ldrb r1, [r0, #0x0]
+ cmp r1, #0x64
+ bls _02069146
+ add sp, #0x8
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_02069146:
+ add r0, r5, #0x0
+ bl FUN_02068788
+ ldr r1, [sp, #0x4]
+ cmp r1, r0
+ blo _02069162
+ add r0, r4, #0x0
+ mov r1, #0xa0
+ add r2, sp, #0x0
+ bl FUN_02067830
+ add sp, #0x8
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_02069162:
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02069168
+FUN_02069168: ; 0x02069168
+ push {r4-r7, lr}
+ sub sp, #0x44
+ add r7, r1, #0x0
+ str r0, [sp, #0x0]
+ mov r6, #0x0
+ add r4, r2, #0x0
+ add r0, r7, #0x0
+ mov r1, #0x5
+ add r2, r6, #0x0
+ str r3, [sp, #0x4]
+ ldr r5, [sp, #0x58]
+ bl FUN_020671BC
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x2c]
+ add r0, r7, #0x0
+ mov r1, #0x6
+ add r2, r6, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ add r1, r6, #0x0
+ str r0, [sp, #0x28]
+ add r0, r7, #0x0
+ add r2, r1, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0x30]
+ add r0, r7, #0x0
+ mov r1, #0x14
+ add r2, r6, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x10]
+ ldr r1, _020694A0 ; =0xFFFF0000
+ ldr r0, [sp, #0x30]
+ add r2, r6, #0x0
+ and r0, r1
+ lsr r0, r0, #0x10
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x28]
+ mov r1, #0x1
+ bl FUN_0206E7B8
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ ldr r0, [sp, #0x2c]
+ cmp r0, #0x40
+ beq _020691E4
+ cmp r1, #0x3f
+ bne _020691E4
+ cmp r4, #0x3
+ beq _020691E4
+ add sp, #0x44
+ add r0, r6, #0x0
+ pop {r4-r7, pc}
+_020691E4:
+ cmp r5, #0x0
+ bne _020691EA
+ add r5, sp, #0x40
+_020691EA:
+ mov r0, #0x0
+ mov r1, #0x2a
+ bl FUN_02016998
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x2c]
+ ldr r1, [sp, #0x18]
+ bl FUN_0206A394
+ cmp r4, #0x3
+ bls _02069202
+ b _0206954A
+_02069202:
+ add r0, r4, r4
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0206920E: ; jump table (using 16-bit offset)
+ .short _02069216 - _0206920E - 2; case 0
+ .short _02069486 - _0206920E - 2; case 1
+ .short _020694BE - _0206920E - 2; case 2
+ .short _020694BE - _0206920E - 2; case 3
+_02069216:
+ add r0, r7, #0x0
+ mov r1, #0xa0
+ mov r2, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x14]
+ add r0, r7, #0x0
+ mov r1, #0x9
+ mov r2, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x20]
+ mov r0, #0x0
+ str r0, [sp, #0x24]
+ ldr r0, [sp, #0x1c]
+ mov r1, #0xa
+ ldr r4, [sp, #0x18]
+ blx _s32_div_f
+ str r1, [sp, #0x8]
+_02069246:
+ ldrh r0, [r4, #0x0]
+ cmp r0, #0x1a
+ bls _0206924E
+ b _02069472
+_0206924E:
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0206925A: ; jump table (using 16-bit offset)
+ .short _02069472 - _0206925A - 2; case 0
+ .short _02069290 - _0206925A - 2; case 1
+ .short _0206929E - _0206925A - 2; case 2
+ .short _020692B4 - _0206925A - 2; case 3
+ .short _020692CA - _0206925A - 2; case 4
+ .short _02069472 - _0206925A - 2; case 5
+ .short _02069472 - _0206925A - 2; case 6
+ .short _02069472 - _0206925A - 2; case 7
+ .short _020692DA - _0206925A - 2; case 8
+ .short _02069306 - _0206925A - 2; case 9
+ .short _02069332 - _0206925A - 2; case 10
+ .short _0206935E - _0206925A - 2; case 11
+ .short _02069376 - _0206925A - 2; case 12
+ .short _0206938C - _0206925A - 2; case 13
+ .short _0206939C - _0206925A - 2; case 14
+ .short _020693A2 - _0206925A - 2; case 15
+ .short _02069472 - _0206925A - 2; case 16
+ .short _02069472 - _0206925A - 2; case 17
+ .short _020693B2 - _0206925A - 2; case 18
+ .short _020693CA - _0206925A - 2; case 19
+ .short _020693E2 - _0206925A - 2; case 20
+ .short _020693F6 - _0206925A - 2; case 21
+ .short _0206940E - _0206925A - 2; case 22
+ .short _0206942C - _0206925A - 2; case 23
+ .short _0206944A - _0206925A - 2; case 24
+ .short _02069458 - _0206925A - 2; case 25
+ .short _02069466 - _0206925A - 2; case 26
+_02069290:
+ ldr r0, [sp, #0x20]
+ cmp r0, #0xdc
+ blo _0206936C
+ ldrh r6, [r4, #0x4]
+ mov r0, #0x1
+ str r0, [r5, #0x0]
+ b _02069472
+_0206929E:
+ bl FUN_0201277C
+ cmp r0, #0x0
+ bne _0206936C
+ ldr r0, [sp, #0x20]
+ cmp r0, #0xdc
+ blo _0206936C
+ ldrh r6, [r4, #0x4]
+ mov r0, #0x2
+ str r0, [r5, #0x0]
+ b _02069472
+_020692B4:
+ bl FUN_0201277C
+ cmp r0, #0x1
+ bne _0206936C
+ ldr r0, [sp, #0x20]
+ cmp r0, #0xdc
+ blo _0206936C
+ ldrh r6, [r4, #0x4]
+ mov r0, #0x3
+ str r0, [r5, #0x0]
+ b _02069472
+_020692CA:
+ ldrh r1, [r4, #0x2]
+ ldr r0, [sp, #0x14]
+ cmp r1, r0
+ bgt _0206936C
+ ldrh r6, [r4, #0x4]
+ mov r0, #0x4
+ str r0, [r5, #0x0]
+ b _02069472
+_020692DA:
+ ldrh r1, [r4, #0x2]
+ ldr r0, [sp, #0x14]
+ cmp r1, r0
+ bgt _0206936C
+ add r0, r7, #0x0
+ mov r1, #0xa4
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0x34]
+ add r0, r7, #0x0
+ mov r1, #0xa5
+ mov r2, #0x0
+ bl FUN_020671BC
+ ldr r1, [sp, #0x34]
+ cmp r1, r0
+ bls _0206936C
+ ldrh r6, [r4, #0x4]
+ mov r0, #0x8
+ str r0, [r5, #0x0]
+ b _02069472
+_02069306:
+ ldrh r1, [r4, #0x2]
+ ldr r0, [sp, #0x14]
+ cmp r1, r0
+ bgt _0206936C
+ add r0, r7, #0x0
+ mov r1, #0xa4
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0x38]
+ add r0, r7, #0x0
+ mov r1, #0xa5
+ mov r2, #0x0
+ bl FUN_020671BC
+ ldr r1, [sp, #0x38]
+ cmp r1, r0
+ bne _0206936C
+ ldrh r6, [r4, #0x4]
+ mov r0, #0x9
+ str r0, [r5, #0x0]
+ b _02069472
+_02069332:
+ ldrh r1, [r4, #0x2]
+ ldr r0, [sp, #0x14]
+ cmp r1, r0
+ bgt _0206936C
+ add r0, r7, #0x0
+ mov r1, #0xa4
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0x3c]
+ add r0, r7, #0x0
+ mov r1, #0xa5
+ mov r2, #0x0
+ bl FUN_020671BC
+ ldr r1, [sp, #0x3c]
+ cmp r1, r0
+ bhs _0206936C
+ ldrh r6, [r4, #0x4]
+ mov r0, #0xa
+ str r0, [r5, #0x0]
+ b _02069472
+_0206935E:
+ ldrh r1, [r4, #0x2]
+ ldr r0, [sp, #0x14]
+ cmp r1, r0
+ bgt _0206936C
+ ldr r0, [sp, #0x8]
+ cmp r0, #0x5
+ blt _0206936E
+_0206936C:
+ b _02069472
+_0206936E:
+ ldrh r6, [r4, #0x4]
+ mov r0, #0xb
+ str r0, [r5, #0x0]
+ b _02069472
+_02069376:
+ ldrh r1, [r4, #0x2]
+ ldr r0, [sp, #0x14]
+ cmp r1, r0
+ bgt _02069472
+ ldr r0, [sp, #0x8]
+ cmp r0, #0x5
+ blt _02069472
+ ldrh r6, [r4, #0x4]
+ mov r0, #0xc
+ str r0, [r5, #0x0]
+ b _02069472
+_0206938C:
+ ldrh r1, [r4, #0x2]
+ ldr r0, [sp, #0x14]
+ cmp r1, r0
+ bgt _02069472
+ ldrh r6, [r4, #0x4]
+ mov r0, #0xd
+ str r0, [r5, #0x0]
+ b _02069472
+_0206939C:
+ mov r0, #0xe
+ str r0, [r5, #0x0]
+ b _02069472
+_020693A2:
+ ldrh r1, [r4, #0x2]
+ ldr r0, [sp, #0x10]
+ cmp r1, r0
+ bgt _02069472
+ ldrh r6, [r4, #0x4]
+ mov r0, #0xf
+ str r0, [r5, #0x0]
+ b _02069472
+_020693B2:
+ bl FUN_0201277C
+ cmp r0, #0x0
+ bne _02069472
+ ldrh r1, [r4, #0x2]
+ ldr r0, [sp, #0x28]
+ cmp r0, r1
+ bne _02069472
+ ldrh r6, [r4, #0x4]
+ mov r0, #0x12
+ str r0, [r5, #0x0]
+ b _02069472
+_020693CA:
+ bl FUN_0201277C
+ cmp r0, #0x1
+ bne _02069472
+ ldrh r1, [r4, #0x2]
+ ldr r0, [sp, #0x28]
+ cmp r0, r1
+ bne _02069472
+ ldrh r6, [r4, #0x4]
+ mov r0, #0x13
+ str r0, [r5, #0x0]
+ b _02069472
+_020693E2:
+ ldrh r1, [r4, #0x2]
+ add r0, r7, #0x0
+ bl FUN_02069A38
+ cmp r0, #0x1
+ bne _02069472
+ ldrh r6, [r4, #0x4]
+ mov r0, #0x14
+ str r0, [r5, #0x0]
+ b _02069472
+_020693F6:
+ ldr r0, [sp, #0x0]
+ cmp r0, #0x0
+ beq _02069472
+ ldrh r1, [r4, #0x2]
+ bl FUN_0206BAE4
+ cmp r0, #0x1
+ bne _02069472
+ ldrh r6, [r4, #0x4]
+ mov r0, #0x15
+ str r0, [r5, #0x0]
+ b _02069472
+_0206940E:
+ add r0, r7, #0x0
+ mov r1, #0x6f
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ bne _02069472
+ ldrh r1, [r4, #0x2]
+ ldr r0, [sp, #0x14]
+ cmp r1, r0
+ bgt _02069472
+ ldrh r6, [r4, #0x4]
+ mov r0, #0x16
+ str r0, [r5, #0x0]
+ b _02069472
+_0206942C:
+ add r0, r7, #0x0
+ mov r1, #0x6f
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x1
+ bne _02069472
+ ldrh r1, [r4, #0x2]
+ ldr r0, [sp, #0x14]
+ cmp r1, r0
+ bgt _02069472
+ ldrh r6, [r4, #0x4]
+ mov r0, #0x17
+ str r0, [r5, #0x0]
+ b _02069472
+_0206944A:
+ ldr r1, [sp, #0x4]
+ cmp r1, r0
+ bne _02069472
+ ldrh r6, [r4, #0x4]
+ mov r0, #0x18
+ str r0, [r5, #0x0]
+ b _02069472
+_02069458:
+ ldr r1, [sp, #0x4]
+ cmp r1, r0
+ bne _02069472
+ ldrh r6, [r4, #0x4]
+ mov r0, #0x19
+ str r0, [r5, #0x0]
+ b _02069472
+_02069466:
+ ldr r1, [sp, #0x4]
+ cmp r1, r0
+ bne _02069472
+ ldrh r6, [r4, #0x4]
+ mov r0, #0x1a
+ str r0, [r5, #0x0]
+_02069472:
+ cmp r6, #0x0
+ bne _0206954A
+ ldr r0, [sp, #0x24]
+ add r4, r4, #0x6
+ add r0, r0, #0x1
+ str r0, [sp, #0x24]
+ cmp r0, #0x7
+ bge _02069484
+ b _02069246
+_02069484:
+ b _0206954A
+_02069486:
+ ldr r3, [sp, #0x18]
+ mov r4, #0x0
+ mov r7, #0x6
+ mov r2, #0x5
+_0206948E:
+ ldrh r0, [r3, #0x0]
+ cmp r0, #0x5
+ beq _0206949A
+ cmp r0, #0x6
+ beq _020694A4
+ b _020694B0
+_0206949A:
+ ldrh r6, [r3, #0x4]
+ str r2, [r5, #0x0]
+ b _020694B0
+ .balign 4
+_020694A0: .word 0xFFFF0000
+_020694A4:
+ ldrh r1, [r3, #0x2]
+ ldr r0, [sp, #0x28]
+ cmp r0, r1
+ bne _020694B0
+ ldrh r6, [r3, #0x4]
+ str r7, [r5, #0x0]
+_020694B0:
+ cmp r6, #0x0
+ bne _0206954A
+ add r4, r4, #0x1
+ add r3, r3, #0x6
+ cmp r4, #0x7
+ blt _0206948E
+ b _0206954A
+_020694BE:
+ mov r0, #0x0
+ ldr r4, [sp, #0x18]
+ str r0, [sp, #0xc]
+_020694C4:
+ ldrh r2, [r4, #0x0]
+ cmp r2, #0x7
+ bne _020694E4
+ ldrh r1, [r4, #0x2]
+ ldr r0, [sp, #0x4]
+ cmp r0, r1
+ bne _020694E4
+ ldr r0, [sp, #0xc]
+ mov r1, #0x6
+ mul r1, r0
+ ldr r0, [sp, #0x18]
+ add r0, r0, r1
+ ldrh r6, [r0, #0x4]
+ mov r0, #0x0
+ str r0, [r5, #0x0]
+ b _0206954A
+_020694E4:
+ cmp r2, #0x10
+ bne _02069510
+ add r0, r7, #0x0
+ mov r1, #0x6f
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ bne _02069510
+ ldrh r1, [r4, #0x2]
+ ldr r0, [sp, #0x4]
+ cmp r0, r1
+ bne _02069510
+ ldr r0, [sp, #0xc]
+ mov r1, #0x6
+ mul r1, r0
+ ldr r0, [sp, #0x18]
+ add r0, r0, r1
+ ldrh r6, [r0, #0x4]
+ mov r0, #0x0
+ str r0, [r5, #0x0]
+ b _0206954A
+_02069510:
+ ldrh r0, [r4, #0x0]
+ cmp r0, #0x11
+ bne _0206953E
+ add r0, r7, #0x0
+ mov r1, #0x6f
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x1
+ bne _0206953E
+ ldrh r1, [r4, #0x2]
+ ldr r0, [sp, #0x4]
+ cmp r0, r1
+ bne _0206953E
+ ldr r0, [sp, #0xc]
+ mov r1, #0x6
+ mul r1, r0
+ ldr r0, [sp, #0x18]
+ add r0, r0, r1
+ ldrh r6, [r0, #0x4]
+ mov r0, #0x0
+ str r0, [r5, #0x0]
+ b _0206954A
+_0206953E:
+ ldr r0, [sp, #0xc]
+ add r4, r4, #0x6
+ add r0, r0, #0x1
+ str r0, [sp, #0xc]
+ cmp r0, #0x7
+ blt _020694C4
+_0206954A:
+ ldr r0, [sp, #0x18]
+ bl FUN_02016A18
+ add r0, r6, #0x0
+ add sp, #0x44
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02069558
+FUN_02069558: ; 0x02069558
+ push {r3-r4, lr}
+ sub sp, #0x4c
+ add r4, r0, #0x0
+ mov r1, #0x0
+ add r0, sp, #0x0
+ strh r1, [r0, #0x0]
+ ldr r0, _020695A0 ; =0x000001EE
+ cmp r4, r0
+ blo _0206956E
+ bl ErrorHandling
+_0206956E:
+ add r0, sp, #0x4
+ blx FS_InitFile
+ ldr r1, _020695A4 ; =0x02105FC8
+ add r0, sp, #0x4
+ blx FS_OpenFile
+ add r0, sp, #0x4
+ lsl r1, r4, #0x1
+ mov r2, #0x0
+ blx FS_SeekFile
+ add r0, sp, #0x4
+ add r1, sp, #0x0
+ mov r2, #0x2
+ blx FS_ReadFile
+ add r0, sp, #0x4
+ blx FS_CloseFile
+ add r0, sp, #0x0
+ ldrh r0, [r0, #0x0]
+ add sp, #0x4c
+ pop {r3-r4, pc}
+ nop
+_020695A0: .word 0x000001EE
+_020695A4: .word 0x02105FC8
+
+ thumb_func_start FUN_020695A8
+FUN_020695A8: ; 0x020695A8
+ push {r3, lr}
+ cmp r0, #0xb9
+ bgt _020695CC
+ cmp r0, #0xb7
+ blt _020695BA
+ beq _020695EC
+ cmp r0, #0xb9
+ beq _020695EC
+ b _020695E8
+_020695BA:
+ cmp r0, #0x7a
+ bgt _020695C6
+ bge _020695EC
+ cmp r0, #0x71
+ beq _020695EC
+ b _020695E8
+_020695C6:
+ cmp r0, #0x8f
+ beq _020695EC
+ b _020695E8
+_020695CC:
+ cmp r0, #0xe2
+ bgt _020695D8
+ bge _020695EC
+ cmp r0, #0xca
+ beq _020695EC
+ b _020695E8
+_020695D8:
+ ldr r1, _020695F0 ; =0x0000013B
+ cmp r0, r1
+ bgt _020695E2
+ beq _020695EC
+ b _020695E8
+_020695E2:
+ add r1, #0x2b
+ cmp r0, r1
+ beq _020695EC
+_020695E8:
+ bl FUN_02069558
+_020695EC:
+ pop {r3, pc}
+ nop
+_020695F0: .word 0x0000013B
+
+ thumb_func_start FUN_020695F4
+FUN_020695F4: ; 0x020695F4
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ mov r0, #0x0
+ mov r1, #0x2c
+ bl FUN_02016998
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ bl FUN_02066A6C
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ mov r1, #0x5
+ mov r2, #0x0
+ bl FUN_020672BC
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ add r0, r5, #0x0
+ mov r1, #0x70
+ mov r2, #0x0
+ bl FUN_020672BC
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_020687C8
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ ldr r2, [sp, #0x0]
+ add r0, r4, #0x0
+ add r1, r7, #0x0
+ bl FUN_02069F9C
+ ldr r0, [sp, #0x0]
+ ldrh r1, [r0, #0x0]
+ ldr r0, _02069690 ; =0x0000FFFF
+ cmp r1, r0
+ beq _0206967C
+ ldr r4, [sp, #0x0]
+ lsl r7, r6, #0x9
+_02069648:
+ ldrh r1, [r4, #0x0]
+ mov r0, #0xfe
+ lsl r0, r0, #0x8
+ and r0, r1
+ cmp r0, r7
+ bgt _0206967C
+ ldr r0, _02069694 ; =0x000001FF
+ and r0, r1
+ lsl r0, r0, #0x10
+ lsr r6, r0, #0x10
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_020696A8
+ ldr r1, _02069690 ; =0x0000FFFF
+ cmp r0, r1
+ bne _02069672
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02069718
+_02069672:
+ add r4, r4, #0x2
+ ldrh r1, [r4, #0x0]
+ ldr r0, _02069690 ; =0x0000FFFF
+ cmp r1, r0
+ bne _02069648
+_0206967C:
+ ldr r0, [sp, #0x0]
+ bl FUN_02016A18
+ ldr r1, [sp, #0x4]
+ add r0, r5, #0x0
+ bl FUN_02066A94
+ add sp, #0x8
+ pop {r3-r7, pc}
+ nop
+_02069690: .word 0x0000FFFF
+_02069694: .word 0x000001FF
+
+ thumb_func_start FUN_02069698
+FUN_02069698: ; 0x02069698
+ push {r4, lr}
+ add r4, r1, #0x0
+ bl FUN_020690E4
+ add r1, r4, #0x0
+ bl FUN_020696A8
+ pop {r4, pc}
+
+ thumb_func_start FUN_020696A8
+FUN_020696A8: ; 0x020696A8
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r1, #0x0
+ ldr r1, _02069700 ; =0x0000FFFF
+ add r6, r0, #0x0
+ str r1, [sp, #0x4]
+ bl FUN_02066A6C
+ mov r4, #0x0
+ str r0, [sp, #0x0]
+ add r7, r4, #0x0
+_020696BE:
+ add r1, r4, #0x0
+ add r0, r6, #0x0
+ add r1, #0x36
+ add r2, r7, #0x0
+ bl FUN_020672BC
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bne _020696E0
+ lsl r2, r4, #0x18
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ lsr r2, r2, #0x18
+ bl FUN_020697D4
+ str r5, [sp, #0x4]
+ b _020696F0
+_020696E0:
+ cmp r0, r5
+ bne _020696EA
+ ldr r0, _02069704 ; =0x0000FFFE
+ str r0, [sp, #0x4]
+ b _020696F0
+_020696EA:
+ add r4, r4, #0x1
+ cmp r4, #0x4
+ blt _020696BE
+_020696F0:
+ ldr r1, [sp, #0x0]
+ add r0, r6, #0x0
+ bl FUN_02066A94
+ ldr r0, [sp, #0x4]
+ add sp, #0x8
+ pop {r3-r7, pc}
+ nop
+_02069700: .word 0x0000FFFF
+_02069704: .word 0x0000FFFE
+
+ thumb_func_start FUN_02069708
+FUN_02069708: ; 0x02069708
+ push {r4, lr}
+ add r4, r1, #0x0
+ bl FUN_020690E4
+ add r1, r4, #0x0
+ bl FUN_02069718
+ pop {r4, pc}
+
+ thumb_func_start FUN_02069718
+FUN_02069718: ; 0x02069718
+ push {r3-r7, lr}
+ sub sp, #0x20
+ add r5, r0, #0x0
+ str r1, [sp, #0x0]
+ bl FUN_02066A6C
+ str r0, [sp, #0xc]
+ add r0, sp, #0x18
+ mov r4, #0x0
+ str r0, [sp, #0x4]
+ add r7, sp, #0x14
+ add r6, sp, #0x10
+_02069730:
+ add r1, r4, #0x0
+ add r0, r5, #0x0
+ add r1, #0x37
+ mov r2, #0x0
+ bl FUN_020672BC
+ ldr r1, [sp, #0x4]
+ mov r2, #0x0
+ strh r0, [r1, #0x0]
+ add r1, r4, #0x0
+ add r0, r5, #0x0
+ add r1, #0x3b
+ bl FUN_020672BC
+ add r1, r4, #0x0
+ strb r0, [r7, #0x0]
+ add r0, r5, #0x0
+ add r1, #0x3f
+ mov r2, #0x0
+ bl FUN_020672BC
+ strb r0, [r6, #0x0]
+ ldr r0, [sp, #0x4]
+ add r4, r4, #0x1
+ add r0, r0, #0x2
+ str r0, [sp, #0x4]
+ add r7, r7, #0x1
+ add r6, r6, #0x1
+ cmp r4, #0x3
+ blt _02069730
+ ldr r0, [sp, #0x0]
+ add r1, sp, #0x10
+ strh r0, [r1, #0xe]
+ ldr r0, [sp, #0x0]
+ mov r1, #0x5
+ bl FUN_0206AB18
+ add r1, sp, #0x10
+ strb r0, [r1, #0x7]
+ mov r4, #0x0
+ add r0, sp, #0x18
+ strb r4, [r1, #0x3]
+ str r0, [sp, #0x8]
+ add r7, sp, #0x14
+ add r6, sp, #0x10
+_0206978A:
+ add r1, r4, #0x0
+ ldr r2, [sp, #0x8]
+ add r0, r5, #0x0
+ add r1, #0x36
+ bl FUN_02067960
+ add r1, r4, #0x0
+ add r0, r5, #0x0
+ add r1, #0x3a
+ add r2, r7, #0x0
+ bl FUN_02067960
+ add r1, r4, #0x0
+ add r0, r5, #0x0
+ add r1, #0x3e
+ add r2, r6, #0x0
+ bl FUN_02067960
+ ldr r0, [sp, #0x8]
+ add r4, r4, #0x1
+ add r0, r0, #0x2
+ str r0, [sp, #0x8]
+ add r7, r7, #0x1
+ add r6, r6, #0x1
+ cmp r4, #0x4
+ blt _0206978A
+ ldr r1, [sp, #0xc]
+ add r0, r5, #0x0
+ bl FUN_02066A94
+ add sp, #0x20
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020697CC
+FUN_020697CC: ; 0x020697CC
+ ldr r3, _020697D0 ; =FUN_020697D4
+ bx r3
+ .balign 4
+_020697D0: .word FUN_020697D4
+
+ thumb_func_start FUN_020697D4
+FUN_020697D4: ; 0x020697D4
+ push {r0-r3}
+ push {r3-r5, lr}
+ add r4, r2, #0x0
+ add r1, r4, #0x0
+ add r1, #0x36
+ add r2, sp, #0x14
+ add r5, r0, #0x0
+ bl FUN_02067960
+ add r1, r4, #0x0
+ add r0, r5, #0x0
+ add r1, #0x3e
+ mov r2, #0x0
+ bl FUN_020672BC
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ add r0, sp, #0x10
+ ldrh r0, [r0, #0x4]
+ bl FUN_0206AB30
+ add r1, sp, #0x0
+ strb r0, [r1, #0x0]
+ add r4, #0x3a
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, sp, #0x0
+ bl FUN_02067960
+ pop {r3-r5}
+ pop {r3}
+ add sp, #0x10
+ bx r3
+ .balign 4
+
+ thumb_func_start FUN_02069818
+FUN_02069818: ; 0x02069818
+ push {r3-r7, lr}
+ sub sp, #0x10
+ add r7, r0, #0x0
+ add r5, r1, #0x0
+ mov r0, #0x0
+ mov r1, #0x2c
+ str r2, [sp, #0x0]
+ str r0, [sp, #0x8]
+ bl FUN_02016998
+ add r4, r0, #0x0
+ add r0, r7, #0x0
+ mov r1, #0x5
+ mov r2, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x4]
+ add r0, r7, #0x0
+ mov r1, #0x70
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0xc]
+ add r0, r7, #0x0
+ mov r1, #0xa0
+ mov r2, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ ldr r0, [sp, #0x4]
+ ldr r1, [sp, #0xc]
+ add r2, r4, #0x0
+ bl FUN_02069F9C
+ ldr r0, [r5, #0x0]
+ lsl r0, r0, #0x1
+ ldrh r2, [r4, r0]
+ ldr r0, _020698D8 ; =0x0000FFFF
+ cmp r2, r0
+ bne _0206987A
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x10
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0206987A:
+ mov r0, #0xfe
+ lsl r0, r0, #0x8
+ add r3, r2, #0x0
+ and r3, r0
+ lsl r6, r6, #0x9
+ cmp r6, r3
+ beq _020698AC
+ ldr r1, _020698D8 ; =0x0000FFFF
+_0206988A:
+ ldr r2, [r5, #0x0]
+ add r2, r2, #0x1
+ str r2, [r5, #0x0]
+ lsl r2, r2, #0x1
+ ldrh r2, [r4, r2]
+ cmp r2, r1
+ bne _020698A4
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x10
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_020698A4:
+ add r3, r2, #0x0
+ and r3, r0
+ cmp r6, r3
+ bne _0206988A
+_020698AC:
+ cmp r6, r3
+ bne _020698CC
+ ldr r0, _020698DC ; =0x000001FF
+ add r1, r2, #0x0
+ and r1, r0
+ ldr r0, [sp, #0x0]
+ strh r1, [r0, #0x0]
+ ldr r0, [r5, #0x0]
+ ldr r1, [sp, #0x0]
+ add r0, r0, #0x1
+ str r0, [r5, #0x0]
+ ldrh r1, [r1, #0x0]
+ add r0, r7, #0x0
+ bl FUN_02069698
+ str r0, [sp, #0x8]
+_020698CC:
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ ldr r0, [sp, #0x8]
+ add sp, #0x10
+ pop {r3-r7, pc}
+ .balign 4
+_020698D8: .word 0x0000FFFF
+_020698DC: .word 0x000001FF
+
+ thumb_func_start FUN_020698E0
+FUN_020698E0: ; 0x020698E0
+ ldr r3, _020698E4 ; =FUN_020698E8
+ bx r3
+ .balign 4
+_020698E4: .word FUN_020698E8
+
+ thumb_func_start FUN_020698E8
+FUN_020698E8: ; 0x020698E8
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ add r1, #0x36
+ mov r2, #0x0
+ add r5, r0, #0x0
+ bl FUN_020672BC
+ add r1, sp, #0x0
+ strh r0, [r1, #0x4]
+ add r1, r4, #0x0
+ add r0, r5, #0x0
+ add r1, #0x3a
+ mov r2, #0x0
+ bl FUN_020672BC
+ add r1, sp, #0x0
+ strb r0, [r1, #0x2]
+ add r1, r4, #0x0
+ add r0, r5, #0x0
+ add r1, #0x3e
+ mov r2, #0x0
+ bl FUN_020672BC
+ add r1, sp, #0x0
+ strb r0, [r1, #0x0]
+ add r1, r6, #0x0
+ add r0, r5, #0x0
+ add r1, #0x36
+ mov r2, #0x0
+ bl FUN_020672BC
+ add r1, sp, #0x0
+ strh r0, [r1, #0x6]
+ add r1, r6, #0x0
+ add r0, r5, #0x0
+ add r1, #0x3a
+ mov r2, #0x0
+ bl FUN_020672BC
+ add r1, sp, #0x0
+ strb r0, [r1, #0x3]
+ add r1, r6, #0x0
+ add r0, r5, #0x0
+ add r1, #0x3e
+ mov r2, #0x0
+ bl FUN_020672BC
+ add r1, sp, #0x0
+ strb r0, [r1, #0x1]
+ add r1, r4, #0x0
+ add r2, sp, #0x4
+ add r0, r5, #0x0
+ add r1, #0x36
+ add r2, #0x2
+ bl FUN_02067960
+ add r1, r4, #0x0
+ add r2, sp, #0x0
+ add r0, r5, #0x0
+ add r1, #0x3a
+ add r2, #0x3
+ bl FUN_02067960
+ add r4, #0x3e
+ add r2, sp, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, #0x1
+ bl FUN_02067960
+ add r1, r6, #0x0
+ add r0, r5, #0x0
+ add r1, #0x36
+ add r2, sp, #0x4
+ bl FUN_02067960
+ add r1, r6, #0x0
+ add r2, sp, #0x0
+ add r0, r5, #0x0
+ add r1, #0x3a
+ add r2, #0x2
+ bl FUN_02067960
+ add r6, #0x3e
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, sp, #0x0
+ bl FUN_02067960
+ add sp, #0x8
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_020699A4
+FUN_020699A4: ; 0x020699A4
+ push {r3-r7, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ cmp r4, #0x3
+ bhs _02069A0A
+ mov r7, #0x0
+ add r6, sp, #0x0
+_020699B2:
+ add r1, r4, #0x0
+ add r0, r5, #0x0
+ add r1, #0x37
+ add r2, r7, #0x0
+ bl FUN_020671BC
+ add r1, r4, #0x0
+ strh r0, [r6, #0x2]
+ add r0, r5, #0x0
+ add r1, #0x3b
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r1, r4, #0x0
+ strb r0, [r6, #0x1]
+ add r0, r5, #0x0
+ add r1, #0x3f
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r1, r4, #0x0
+ add r2, sp, #0x0
+ strb r0, [r6, #0x0]
+ add r0, r5, #0x0
+ add r1, #0x36
+ add r2, #0x2
+ bl FUN_02067830
+ add r1, r4, #0x0
+ add r2, sp, #0x0
+ add r0, r5, #0x0
+ add r1, #0x3a
+ add r2, #0x1
+ bl FUN_02067830
+ add r1, r4, #0x0
+ add r0, r5, #0x0
+ add r1, #0x3e
+ add r2, sp, #0x0
+ bl FUN_02067830
+ add r4, r4, #0x1
+ cmp r4, #0x3
+ blo _020699B2
+_02069A0A:
+ mov r1, #0x0
+ add r0, sp, #0x0
+ strh r1, [r0, #0x2]
+ strb r1, [r0, #0x1]
+ strb r1, [r0, #0x0]
+ add r2, sp, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x39
+ add r2, #0x2
+ bl FUN_02067830
+ add r2, sp, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x3d
+ add r2, #0x1
+ bl FUN_02067830
+ add r0, r5, #0x0
+ mov r1, #0x41
+ add r2, sp, #0x0
+ bl FUN_02067830
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02069A38
+FUN_02069A38: ; 0x02069A38
+ push {r3-r7, lr}
+ mov r4, #0x0
+ add r6, r0, #0x0
+ add r5, r1, #0x0
+ add r7, r4, #0x0
+_02069A42:
+ add r1, r4, #0x0
+ add r0, r6, #0x0
+ add r1, #0x36
+ add r2, r7, #0x0
+ bl FUN_020671BC
+ cmp r5, r0
+ beq _02069A58
+ add r4, r4, #0x1
+ cmp r4, #0x4
+ blt _02069A42
+_02069A58:
+ cmp r4, #0x4
+ beq _02069A60
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02069A60:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02069A64
+FUN_02069A64: ; 0x02069A64
+ push {r4-r5, lr}
+ sub sp, #0x1c
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ add r3, r4, #0x0
+ mov r2, #0x11
+_02069A74:
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ sub r2, r2, #0x1
+ bne _02069A74
+ ldrh r1, [r4, #0x4]
+ lsl r0, r1, #0x1e
+ lsr r0, r0, #0x1f
+ beq _02069A8E
+ mov r0, #0x1
+ bic r1, r0
+ mov r0, #0x1
+ orr r0, r1
+ strh r0, [r4, #0x4]
+_02069A8E:
+ add r0, r4, #0x0
+ mov r1, #0x9f
+ add r2, sp, #0x0
+ bl FUN_02067830
+ add r0, r4, #0x0
+ mov r1, #0xa2
+ add r2, sp, #0x0
+ bl FUN_02067830
+ add r0, r4, #0x0
+ mov r1, #0xa3
+ add r2, sp, #0x0
+ bl FUN_02067830
+ mov r0, #0x0
+ bl FUN_020256BC
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ mov r1, #0xa9
+ add r2, r5, #0x0
+ bl FUN_02067830
+ add r0, r5, #0x0
+ bl FUN_02016A18
+ add r0, r4, #0x0
+ mov r1, #0xa1
+ add r2, sp, #0x0
+ bl FUN_02067830
+ mov r0, #0x0
+ add r1, sp, #0x4
+ mov r2, #0x18
+ blx MIi_CpuClearFast
+ add r0, r4, #0x0
+ mov r1, #0xaa
+ add r2, sp, #0x4
+ bl FUN_02067830
+ add r0, r4, #0x0
+ bl FUN_02066ED8
+ add sp, #0x1c
+ pop {r4-r5, pc}
+
+ thumb_func_start FUN_02069AEC
+FUN_02069AEC: ; 0x02069AEC
+ push {r3-r7, lr}
+ str r0, [sp, #0x0]
+ bl FUN_0206B9AC
+ add r7, r0, #0x0
+ mov r6, #0x1
+ mov r5, #0x0
+ cmp r7, #0x0
+ ble _02069B3C
+_02069AFE:
+ ldr r0, [sp, #0x0]
+ add r1, r5, #0x0
+ bl FUN_0206B9B0
+ mov r1, #0x5
+ mov r2, #0x0
+ add r4, r0, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ beq _02069B36
+ add r0, r4, #0x0
+ mov r1, #0x4c
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ bne _02069B36
+ add r0, r4, #0x0
+ mov r1, #0xa0
+ mov r2, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, r6
+ bls _02069B36
+ add r6, r0, #0x0
+_02069B36:
+ add r5, r5, #0x1
+ cmp r5, r7
+ blt _02069AFE
+_02069B3C:
+ add r0, r6, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02069B40
+FUN_02069B40: ; 0x02069B40
+ push {r3, lr}
+ sub sp, #0x8
+ add r3, r0, #0x0
+ mov r0, #0x2
+ str r0, [sp, #0x0]
+ add r0, sp, #0x4
+ mov r1, #0x6d
+ mov r2, #0x0
+ lsl r3, r3, #0x1
+ bl FUN_02006548
+ add r0, sp, #0x4
+ ldrh r0, [r0, #0x0]
+ add sp, #0x8
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02069B60
+FUN_02069B60: ; 0x02069B60
+ push {r3, lr}
+ sub sp, #0x8
+ add r3, r0, #0x0
+ mov r2, #0x0
+ add r0, sp, #0x4
+ strh r2, [r0, #0x0]
+ cmp r3, #0x97
+ bhi _02069B7E
+ mov r0, #0x2
+ str r0, [sp, #0x0]
+ add r0, sp, #0x4
+ mov r1, #0x91
+ lsl r3, r3, #0x1
+ bl FUN_02006548
+_02069B7E:
+ add r0, sp, #0x4
+ ldrh r0, [r0, #0x0]
+ add sp, #0x8
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02069B88
+FUN_02069B88: ; 0x02069B88
+ push {r3-r4}
+ add r4, r0, #0x0
+ add r3, r1, #0x0
+ mov r2, #0x1d
+_02069B90:
+ ldmia r4!, {r0-r1}
+ stmia r3!, {r0-r1}
+ sub r2, r2, #0x1
+ bne _02069B90
+ ldr r0, [r4, #0x0]
+ str r0, [r3, #0x0]
+ pop {r3-r4}
+ bx lr
+
+ thumb_func_start FUN_02069BA0
+FUN_02069BA0: ; 0x02069BA0
+ push {r3-r4}
+ add r4, r0, #0x0
+ add r3, r1, #0x0
+ mov r2, #0x11
+_02069BA8:
+ ldmia r4!, {r0-r1}
+ stmia r3!, {r0-r1}
+ sub r2, r2, #0x1
+ bne _02069BA8
+ pop {r3-r4}
+ bx lr
+
+ thumb_func_start FUN_02069BB4
+FUN_02069BB4: ; 0x02069BB4
+ push {r3-r4}
+ add r4, r0, #0x0
+ add r3, r1, #0x0
+ mov r2, #0x11
+_02069BBC:
+ ldmia r4!, {r0-r1}
+ stmia r3!, {r0-r1}
+ sub r2, r2, #0x1
+ bne _02069BBC
+ pop {r3-r4}
+ bx lr
+
+ thumb_func_start FUN_02069BC8
+FUN_02069BC8: ; 0x02069BC8
+ ldr r3, _02069BCC ; =FUN_02069BD0
+ bx r3
+ .balign 4
+_02069BCC: .word FUN_02069BD0
+
+ thumb_func_start FUN_02069BD0
+FUN_02069BD0: ; 0x02069BD0
+ push {r4, lr}
+ add r4, r1, #0x0
+ mov r1, #0x0
+ add r2, r1, #0x0
+ bl FUN_020672BC
+ add r1, r4, #0x0
+ bl FUN_02069BE4
+ pop {r4, pc}
+
+ thumb_func_start FUN_02069BE4
+FUN_02069BE4: ; 0x02069BE4
+ push {r4, lr}
+ add r4, r1, #0x0
+ bl FUN_02068884
+ lsl r1, r0, #0x2
+ add r1, r0, r1
+ ldr r0, _02069BF8 ; =0x020F7F16
+ add r0, r0, r1
+ ldrsb r0, [r4, r0]
+ pop {r4, pc}
+ .balign 4
+_02069BF8: .word 0x020F7F16
+
+ thumb_func_start FUN_02069BFC
+FUN_02069BFC: ; 0x02069BFC
+ push {r3-r7, lr}
+ add r4, r0, #0x0
+ add r7, r1, #0x0
+ mov r0, #0x0
+ mov r1, #0x2c
+ add r5, r2, #0x0
+ bl FUN_02016998
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ add r1, r7, #0x0
+ add r2, r6, #0x0
+ bl FUN_02069F9C
+ ldrh r1, [r6, #0x0]
+ ldr r0, _02069C44 ; =0x0000FFFF
+ mov r4, #0x0
+ cmp r1, r0
+ beq _02069C3A
+ ldr r1, _02069C48 ; =0x000001FF
+ ldr r2, _02069C44 ; =0x0000FFFF
+ add r0, r6, #0x0
+_02069C28:
+ ldrh r3, [r0, #0x0]
+ add r0, r0, #0x2
+ add r4, r4, #0x1
+ and r3, r1
+ strh r3, [r5, #0x0]
+ ldrh r3, [r0, #0x0]
+ add r5, r5, #0x2
+ cmp r3, r2
+ bne _02069C28
+_02069C3A:
+ add r0, r6, #0x0
+ bl FUN_02016A18
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+_02069C44: .word 0x0000FFFF
+_02069C48: .word 0x000001FF
+
+ thumb_func_start FUN_02069C4C
+FUN_02069C4C: ; 0x02069C4C
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ bl FUN_0206B9AC
+ add r6, r0, #0x0
+ bl FUN_0201B9EC
+ mov r1, #0x1
+ lsl r1, r1, #0xe
+ cmp r0, r1
+ beq _02069C70
+ lsl r1, r1, #0x1
+ cmp r0, r1
+ beq _02069C70
+ mov r1, #0x3
+ lsl r1, r1, #0xe
+ cmp r0, r1
+ bne _02069CF2
+_02069C70:
+ bl FUN_0201B9EC
+ add r1, r6, #0x0
+ blx _s32_div_f
+ add r0, r5, #0x0
+ add r7, r1, #0x0
+ bl FUN_0206B9B0
+ mov r1, #0x5
+ mov r2, #0x0
+ add r4, r0, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ beq _02069C70
+ add r0, r4, #0x0
+ mov r1, #0x4c
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ bne _02069C70
+ add r0, r7, #0x0
+ bl FUN_0206A92C
+ add r1, r0, #0x0
+ lsl r1, r1, #0x18
+ add r0, r5, #0x0
+ lsr r1, r1, #0x18
+ bl FUN_02069CF4
+ cmp r0, #0x0
+ bne _02069CF2
+ add r5, sp, #0x0
+ mov r6, #0x7
+_02069CB8:
+ bl FUN_0201B9EC
+ strb r0, [r5, #0x0]
+ ldrb r2, [r5, #0x0]
+ add r1, r2, #0x0
+ and r1, r6
+ beq _02069CB8
+ mov r0, #0xf0
+ tst r0, r2
+ beq _02069CD0
+ add r0, sp, #0x0
+ strb r1, [r0, #0x0]
+_02069CD0:
+ add r1, sp, #0x0
+ ldrb r2, [r1, #0x0]
+ lsl r0, r2, #0x4
+ orr r0, r2
+ strb r0, [r1, #0x0]
+ ldrb r2, [r1, #0x0]
+ mov r0, #0xf3
+ and r0, r2
+ strb r0, [r1, #0x0]
+ ldrb r0, [r1, #0x0]
+ add r2, sp, #0x0
+ add r0, r0, #0x1
+ strb r0, [r1, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0x99
+ bl FUN_02067830
+_02069CF2:
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02069CF4
+FUN_02069CF4: ; 0x02069CF4
+ push {r3-r7, lr}
+ mov r6, #0x0
+ add r5, r1, #0x0
+ str r0, [sp, #0x0]
+ mov r4, #0x1
+ add r7, r6, #0x0
+ cmp r5, #0x0
+ beq _02069D32
+_02069D04:
+ mov r0, #0x1
+ tst r0, r5
+ beq _02069D26
+ ldr r0, [sp, #0x0]
+ add r1, r6, #0x0
+ bl FUN_0206B9B0
+ mov r1, #0x99
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ beq _02069D26
+ add r0, r7, #0x0
+ orr r0, r4
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+_02069D26:
+ lsl r0, r5, #0x17
+ add r6, r6, #0x1
+ lsl r4, r4, #0x1
+ lsr r5, r0, #0x18
+ bne _02069D04
+ b _02069D4A
+_02069D32:
+ add r1, r6, #0x0
+ bl FUN_0206B9B0
+ mov r1, #0x99
+ add r2, r6, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ beq _02069D4A
+ add r0, r7, #0x1
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+_02069D4A:
+ add r0, r7, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02069D50
+FUN_02069D50: ; 0x02069D50
+ push {r4-r7, lr}
+ sub sp, #0xc
+ str r0, [sp, #0x0]
+ add r5, r1, #0x0
+ bl FUN_0206B9AC
+ mov r6, #0x0
+ str r0, [sp, #0x4]
+ cmp r0, #0x0
+ ble _02069DC2
+ add r4, sp, #0x8
+_02069D66:
+ ldr r0, [sp, #0x0]
+ add r1, r6, #0x0
+ bl FUN_0206B9B0
+ mov r1, #0x5
+ mov r2, #0x0
+ add r7, r0, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ beq _02069DBA
+ add r0, r7, #0x0
+ mov r1, #0x99
+ mov r2, #0x0
+ bl FUN_020671BC
+ strb r0, [r4, #0x0]
+ ldrb r1, [r4, #0x0]
+ mov r0, #0xf
+ and r0, r1
+ beq _02069DBA
+ cmp r0, r5
+ blt _02069D98
+ cmp r5, #0x4
+ ble _02069DA2
+_02069D98:
+ ldrb r1, [r4, #0x0]
+ mov r0, #0xf0
+ and r0, r1
+ strb r0, [r4, #0x0]
+ b _02069DA6
+_02069DA2:
+ sub r0, r1, r5
+ strb r0, [r4, #0x0]
+_02069DA6:
+ ldrb r0, [r4, #0x0]
+ cmp r0, #0x0
+ bne _02069DB0
+ mov r0, #0x10
+ strb r0, [r4, #0x0]
+_02069DB0:
+ add r0, r7, #0x0
+ mov r1, #0x99
+ add r2, sp, #0x8
+ bl FUN_02067830
+_02069DBA:
+ ldr r0, [sp, #0x4]
+ add r6, r6, #0x1
+ cmp r6, r0
+ blt _02069D66
+_02069DC2:
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02069DC8
+FUN_02069DC8: ; 0x02069DC8
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ bl FUN_0206B9AC
+ add r7, r0, #0x0
+ bl FUN_0201B9EC
+ mov r1, #0x3
+ blx _s32_div_f
+ cmp r1, #0x0
+ bne _02069E70
+ mov r4, #0x0
+ cmp r7, #0x0
+ ble _02069E70
+ sub r0, r7, #0x1
+ str r0, [sp, #0x0]
+_02069DEC:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0206B9B0
+ mov r1, #0x5
+ mov r2, #0x0
+ add r6, r0, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ beq _02069E6A
+ add r0, r6, #0x0
+ mov r1, #0x99
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r1, sp, #0x4
+ strb r0, [r1, #0x0]
+ add r0, r1, #0x0
+ ldrb r1, [r0, #0x0]
+ mov r0, #0xf
+ tst r0, r1
+ beq _02069E6A
+ cmp r4, #0x0
+ beq _02069E40
+ add r0, r5, #0x0
+ sub r1, r4, #0x1
+ bl FUN_0206B9B0
+ mov r1, #0x99
+ mov r2, #0x0
+ add r6, r0, #0x0
+ bl FUN_020671BC
+ mov r1, #0xf0
+ tst r0, r1
+ bne _02069E40
+ add r0, r6, #0x0
+ mov r1, #0x99
+ add r2, sp, #0x4
+ bl FUN_02067830
+_02069E40:
+ ldr r0, [sp, #0x0]
+ cmp r4, r0
+ bge _02069E6A
+ add r0, r5, #0x0
+ add r1, r4, #0x1
+ bl FUN_0206B9B0
+ mov r1, #0x99
+ mov r2, #0x0
+ add r6, r0, #0x0
+ bl FUN_020671BC
+ mov r1, #0xf0
+ tst r0, r1
+ bne _02069E6A
+ add r0, r6, #0x0
+ mov r1, #0x99
+ add r2, sp, #0x4
+ bl FUN_02067830
+ add r4, r4, #0x1
+_02069E6A:
+ add r4, r4, #0x1
+ cmp r4, r7
+ blt _02069DEC
+_02069E70:
+ add sp, #0x8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02069E74
+FUN_02069E74: ; 0x02069E74
+ ldr r3, _02069E78 ; =FUN_02069E7C
+ bx r3
+ .balign 4
+_02069E78: .word FUN_02069E7C
+
+ thumb_func_start FUN_02069E7C
+FUN_02069E7C: ; 0x02069E7C
+ push {r3, lr}
+ mov r1, #0x99
+ mov r2, #0x0
+ bl FUN_020672BC
+ mov r1, #0xf
+ tst r0, r1
+ beq _02069E90
+ mov r0, #0x1
+ pop {r3, pc}
+_02069E90:
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_02069E94
+FUN_02069E94: ; 0x02069E94
+ ldr r3, _02069E98 ; =FUN_02069E9C
+ bx r3
+ .balign 4
+_02069E98: .word FUN_02069E9C
+
+ thumb_func_start FUN_02069E9C
+FUN_02069E9C: ; 0x02069E9C
+ push {r3, lr}
+ mov r1, #0x99
+ mov r2, #0x0
+ bl FUN_020672BC
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ mov r0, #0xf
+ tst r0, r1
+ beq _02069EB4
+ mov r0, #0x0
+ pop {r3, pc}
+_02069EB4:
+ mov r0, #0xf0
+ tst r0, r1
+ beq _02069EBE
+ mov r0, #0x1
+ pop {r3, pc}
+_02069EBE:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02069EC4
+FUN_02069EC4: ; 0x02069EC4
+ ldr r3, _02069EC8 ; =FUN_02069ECC
+ bx r3
+ .balign 4
+_02069EC8: .word FUN_02069ECC
+
+ thumb_func_start FUN_02069ECC
+FUN_02069ECC: ; 0x02069ECC
+ push {r3-r6, lr}
+ sub sp, #0x4
+ add r5, r0, #0x0
+ mov r1, #0x5
+ mov r2, #0x0
+ bl FUN_020672BC
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0xa
+ mov r2, #0x0
+ bl FUN_020672BC
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x6
+ mov r2, #0x0
+ bl FUN_020672BC
+ ldr r1, _02069F20 ; =0x000001ED
+ cmp r4, r1
+ bne _02069F1C
+ cmp r6, #0x79
+ bne _02069F1C
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ mov r1, #0x1
+ mov r2, #0x0
+ bl FUN_0206E7B8
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_02069F24
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ mov r1, #0x70
+ add r2, sp, #0x0
+ bl FUN_02067960
+_02069F1C:
+ add sp, #0x4
+ pop {r3-r6, pc}
+ .balign 4
+_02069F20: .word 0x000001ED
+
+ thumb_func_start FUN_02069F24
+FUN_02069F24: ; 0x02069F24
+ sub r0, #0x7d
+ cmp r0, #0xf
+ bhi _02069F96
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02069F36: ; jump table (using 16-bit offset)
+ .short _02069F56 - _02069F36 - 2; case 0
+ .short _02069F5A - _02069F36 - 2; case 1
+ .short _02069F5E - _02069F36 - 2; case 2
+ .short _02069F62 - _02069F36 - 2; case 3
+ .short _02069F66 - _02069F36 - 2; case 4
+ .short _02069F6A - _02069F36 - 2; case 5
+ .short _02069F6E - _02069F36 - 2; case 6
+ .short _02069F72 - _02069F36 - 2; case 7
+ .short _02069F76 - _02069F36 - 2; case 8
+ .short _02069F7A - _02069F36 - 2; case 9
+ .short _02069F7E - _02069F36 - 2; case 10
+ .short _02069F82 - _02069F36 - 2; case 11
+ .short _02069F86 - _02069F36 - 2; case 12
+ .short _02069F8A - _02069F36 - 2; case 13
+ .short _02069F8E - _02069F36 - 2; case 14
+ .short _02069F92 - _02069F36 - 2; case 15
+_02069F56:
+ mov r0, #0xa
+ bx lr
+_02069F5A:
+ mov r0, #0xb
+ bx lr
+_02069F5E:
+ mov r0, #0xd
+ bx lr
+_02069F62:
+ mov r0, #0xc
+ bx lr
+_02069F66:
+ mov r0, #0xf
+ bx lr
+_02069F6A:
+ mov r0, #0x1
+ bx lr
+_02069F6E:
+ mov r0, #0x3
+ bx lr
+_02069F72:
+ mov r0, #0x4
+ bx lr
+_02069F76:
+ mov r0, #0x2
+ bx lr
+_02069F7A:
+ mov r0, #0xe
+ bx lr
+_02069F7E:
+ mov r0, #0x6
+ bx lr
+_02069F82:
+ mov r0, #0x5
+ bx lr
+_02069F86:
+ mov r0, #0x7
+ bx lr
+_02069F8A:
+ mov r0, #0x10
+ bx lr
+_02069F8E:
+ mov r0, #0x11
+ bx lr
+_02069F92:
+ mov r0, #0x8
+ bx lr
+_02069F96:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02069F9C
+FUN_02069F9C: ; 0x02069F9C
+ push {r4, lr}
+ add r4, r2, #0x0
+ bl FUN_0206A8FC
+ add r2, r0, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x21
+ bl LoadFromNARC
+ pop {r4, pc}
+
+ thumb_func_start FUN_02069FB0
+FUN_02069FB0: ; 0x02069FB0
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ ldr r0, _0206A010 ; =0x000001B9
+ add r4, r2, #0x0
+ add r5, r1, #0x0
+ add r6, r3, #0x0
+ cmp r4, r0
+ bne _02069FFC
+ add r0, r5, #0x0
+ bl FUN_02005F14
+ cmp r0, #0x0
+ bne _02069FE2
+ mov r0, #0x1
+ bl FUN_02005E80
+ ldr r0, [sp, #0x20]
+ ldr r3, [sp, #0x18]
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_020056AC
+ pop {r3-r7, pc}
+_02069FE2:
+ ldr r0, [sp, #0x1c]
+ cmp r0, #0x0
+ beq _02069FEE
+ mov r0, #0x1
+ bl FUN_02005E80
+_02069FEE:
+ ldr r2, [sp, #0x18]
+ add r0, r7, #0x0
+ mov r1, #0x0
+ add r3, r6, #0x0
+ bl FUN_02005E90
+ pop {r3-r7, pc}
+_02069FFC:
+ ldr r0, [sp, #0x20]
+ ldr r3, [sp, #0x18]
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_020056AC
+ pop {r3-r7, pc}
+ nop
+_0206A010: .word 0x000001B9
+
+ thumb_func_start FUN_0206A014
+FUN_0206A014: ; 0x0206A014
+ push {r3-r6, lr}
+ sub sp, #0xc
+ ldr r6, [sp, #0x20]
+ add r5, r0, #0x0
+ str r6, [sp, #0x0]
+ ldr r6, [sp, #0x24]
+ add r4, r2, #0x0
+ str r6, [sp, #0x4]
+ bl FUN_0206A054
+ cmp r4, #0xe
+ bne _0206A050
+ add r0, r5, #0x0
+ mov r1, #0xa3
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0x8]
+ add r0, r5, #0x0
+ mov r1, #0xa2
+ add r2, sp, #0x8
+ bl FUN_02067830
+ mov r0, #0x0
+ str r0, [sp, #0x8]
+ add r0, r5, #0x0
+ mov r1, #0x9f
+ add r2, sp, #0x8
+ bl FUN_02067830
+_0206A050:
+ add sp, #0xc
+ pop {r3-r6, pc}
+
+ thumb_func_start FUN_0206A054
+FUN_0206A054: ; 0x0206A054
+ push {r0-r3}
+ push {r3-r4, lr}
+ sub sp, #0x4
+ ldr r2, [sp, #0x24]
+ add r4, r0, #0x0
+ str r2, [sp, #0x0]
+ mov r2, #0x0
+ bl FUN_020808AC
+ ldr r2, _0206A090 ; =0x020ECAC0
+ add r0, r4, #0x0
+ mov r1, #0x79
+ bl FUN_02067960
+ add r0, r4, #0x0
+ mov r1, #0x9a
+ add r2, sp, #0x18
+ bl FUN_02067960
+ add r0, r4, #0x0
+ mov r1, #0x9d
+ add r2, sp, #0x20
+ bl FUN_02067960
+ add sp, #0x4
+ pop {r3-r4}
+ pop {r3}
+ add sp, #0x10
+ bx r3
+ nop
+_0206A090: .word 0x020ECAC0
+
+ thumb_func_start FUN_0206A094
+FUN_0206A094: ; 0x0206A094
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ mov r0, #0x81
+ add r7, r2, #0x0
+ tst r0, r1
+ bne _0206A12E
+ bl FUN_0201B9EC
+ mov r1, #0x64
+ blx _s32_div_f
+ add r4, r1, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x5
+ mov r2, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x10
+ lsr r6, r0, #0x10
+ add r0, r5, #0x0
+ mov r1, #0x70
+ mov r2, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x0]
+ ldr r1, [sp, #0x0]
+ add r0, r6, #0x0
+ mov r2, #0x10
+ bl FUN_02068654
+ add r1, sp, #0x4
+ strh r0, [r1, #0x2]
+ ldr r1, [sp, #0x0]
+ add r0, r6, #0x0
+ mov r2, #0x11
+ bl FUN_02068654
+ add r1, sp, #0x4
+ strh r0, [r1, #0x0]
+ ldrh r2, [r1, #0x2]
+ ldrh r0, [r1, #0x0]
+ cmp r2, r0
+ bne _0206A104
+ cmp r2, #0x0
+ beq _0206A104
+ add r2, sp, #0x4
+ add r0, r5, #0x0
+ mov r1, #0x6
+ add r2, #0x2
+ bl FUN_02067830
+ add sp, #0x8
+ pop {r3-r7, pc}
+_0206A104:
+ ldr r0, _0206A134 ; =0x020F7ECC
+ lsl r1, r7, #0x2
+ ldrh r0, [r0, r1]
+ cmp r4, r0
+ blo _0206A12E
+ ldr r0, _0206A138 ; =0x020F7ECE
+ ldrh r0, [r0, r1]
+ cmp r4, r0
+ add r2, sp, #0x4
+ bhs _0206A126
+ add r0, r5, #0x0
+ mov r1, #0x6
+ add r2, #0x2
+ bl FUN_02067830
+ add sp, #0x8
+ pop {r3-r7, pc}
+_0206A126:
+ add r0, r5, #0x0
+ mov r1, #0x6
+ bl FUN_02067830
+_0206A12E:
+ add sp, #0x8
+ pop {r3-r7, pc}
+ nop
+_0206A134: .word 0x020F7ECC
+_0206A138: .word 0x020F7ECE
+
+ thumb_func_start FUN_0206A13C
+FUN_0206A13C: ; 0x0206A13C
+ ldr r3, _0206A140 ; =FUN_0206A144
+ bx r3
+ .balign 4
+_0206A140: .word FUN_0206A144
+
+ thumb_func_start FUN_0206A144
+FUN_0206A144: ; 0x0206A144
+ push {r4-r6, lr}
+ add r6, r1, #0x0
+ mov r1, #0xad
+ mov r2, #0x0
+ add r5, r0, #0x0
+ bl FUN_020672BC
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ add r0, r5, #0x0
+ mov r1, #0x70
+ mov r2, #0x0
+ bl FUN_020672BC
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_0206A16C
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0206A16C
+FUN_0206A16C: ; 0x0206A16C
+ push {r4, lr}
+ ldr r3, _0206A1C0 ; =0x000001EE
+ cmp r0, r3
+ bne _0206A178
+ mov r0, #0x0
+ pop {r4, pc}
+_0206A178:
+ cmp r2, #0x20
+ bhs _0206A186
+ mov r3, #0x1
+ add r4, r3, #0x0
+ lsl r4, r2
+ mov r2, #0x1d
+ b _0206A1B0
+_0206A186:
+ cmp r2, #0x40
+ bhs _0206A196
+ mov r3, #0x1
+ sub r2, #0x20
+ add r4, r3, #0x0
+ lsl r4, r2
+ mov r2, #0x1e
+ b _0206A1B0
+_0206A196:
+ cmp r2, #0x60
+ bhs _0206A1A6
+ mov r3, #0x1
+ sub r2, #0x40
+ add r4, r3, #0x0
+ lsl r4, r2
+ mov r2, #0x1f
+ b _0206A1B0
+_0206A1A6:
+ mov r3, #0x1
+ sub r2, #0x60
+ add r4, r3, #0x0
+ lsl r4, r2
+ mov r2, #0x20
+_0206A1B0:
+ bl FUN_02068654
+ tst r0, r4
+ beq _0206A1BC
+ mov r0, #0x1
+ pop {r4, pc}
+_0206A1BC:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+_0206A1C0: .word 0x000001EE
+
+ thumb_func_start FUN_0206A1C4
+FUN_0206A1C4: ; 0x0206A1C4
+ ldr r3, _0206A1C8 ; =FUN_0206A1CC
+ bx r3
+ .balign 4
+_0206A1C8: .word FUN_0206A1CC
+
+ thumb_func_start FUN_0206A1CC
+FUN_0206A1CC: ; 0x0206A1CC
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ bl FUN_02066A6C
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x5
+ mov r2, #0x0
+ bl FUN_020672BC
+ mov r1, #0x0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r2, r1, #0x0
+ bl FUN_020672BC
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x18
+ bl FUN_02068678
+ str r0, [sp, #0x4]
+ add r0, r4, #0x0
+ mov r1, #0x19
+ bl FUN_02068678
+ str r0, [sp, #0x0]
+ cmp r0, #0x0
+ beq _0206A226
+ mov r0, #0x1
+ tst r0, r6
+ beq _0206A21A
+ add r0, r5, #0x0
+ mov r1, #0xa
+ add r2, sp, #0x0
+ bl FUN_02067960
+ b _0206A230
+_0206A21A:
+ add r0, r5, #0x0
+ mov r1, #0xa
+ add r2, sp, #0x4
+ bl FUN_02067960
+ b _0206A230
+_0206A226:
+ add r0, r5, #0x0
+ mov r1, #0xa
+ add r2, sp, #0x4
+ bl FUN_02067960
+_0206A230:
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ bl FUN_02066A94
+ add sp, #0x8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0206A23C
+FUN_0206A23C: ; 0x0206A23C
+ push {r4-r7, lr}
+ sub sp, #0x1c
+ add r5, r0, #0x0
+ mov r0, #0x0
+ str r1, [sp, #0x0]
+ bl FUN_020669C0
+ str r0, [sp, #0x4]
+ ldr r1, [sp, #0x4]
+ add r0, r5, #0x0
+ bl FUN_02069B88
+ ldr r0, [sp, #0x4]
+ ldr r1, [r5, #0x0]
+ mov r2, #0x0
+ bl FUN_0206A418
+ add r4, r0, #0x0
+ ldr r0, [sp, #0x4]
+ ldr r1, [r5, #0x0]
+ mov r2, #0x1
+ bl FUN_0206A418
+ add r6, r0, #0x0
+ ldr r0, [sp, #0x4]
+ ldr r1, [r5, #0x0]
+ mov r2, #0x2
+ bl FUN_0206A418
+ add r7, r0, #0x0
+ ldr r0, [sp, #0x4]
+ ldr r1, [r5, #0x0]
+ mov r2, #0x3
+ bl FUN_0206A418
+ str r0, [sp, #0x8]
+ ldr r1, [sp, #0x0]
+ add r0, r5, #0x0
+ mov r2, #0x0
+ bl FUN_0206A418
+ str r0, [sp, #0xc]
+ ldr r1, [sp, #0x0]
+ add r0, r5, #0x0
+ mov r2, #0x1
+ bl FUN_0206A418
+ str r0, [sp, #0x10]
+ ldr r1, [sp, #0x0]
+ add r0, r5, #0x0
+ mov r2, #0x2
+ bl FUN_0206A418
+ str r0, [sp, #0x14]
+ ldr r1, [sp, #0x0]
+ add r0, r5, #0x0
+ mov r2, #0x3
+ bl FUN_0206A418
+ ldr r2, [sp, #0x4]
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x4]
+ ldrh r2, [r2, #0x6]
+ add r0, #0x8
+ mov r1, #0x80
+ bl FUN_0206A3D0
+ add r0, r5, #0x0
+ ldr r2, [r5, #0x0]
+ add r0, #0x88
+ mov r1, #0x64
+ bl FUN_0206A3D0
+ add r0, r5, #0x0
+ ldrh r2, [r5, #0x6]
+ add r0, #0x8
+ mov r1, #0x80
+ bl FUN_0206A3D0
+ ldr r0, [sp, #0x0]
+ str r0, [r5, #0x0]
+ ldr r2, [sp, #0xc]
+ ldmia r4!, {r0-r1}
+ stmia r2!, {r0-r1}
+ str r2, [sp, #0xc]
+ ldmia r4!, {r0-r1}
+ stmia r2!, {r0-r1}
+ str r2, [sp, #0xc]
+ ldmia r4!, {r0-r1}
+ stmia r2!, {r0-r1}
+ str r2, [sp, #0xc]
+ ldmia r4!, {r0-r1}
+ stmia r2!, {r0-r1}
+ str r2, [sp, #0xc]
+ ldr r2, [sp, #0x10]
+ ldmia r6!, {r0-r1}
+ stmia r2!, {r0-r1}
+ str r2, [sp, #0x10]
+ ldmia r6!, {r0-r1}
+ stmia r2!, {r0-r1}
+ str r2, [sp, #0x10]
+ ldmia r6!, {r0-r1}
+ stmia r2!, {r0-r1}
+ str r2, [sp, #0x10]
+ ldmia r6!, {r0-r1}
+ stmia r2!, {r0-r1}
+ str r2, [sp, #0x10]
+ ldr r2, [sp, #0x14]
+ ldmia r7!, {r0-r1}
+ stmia r2!, {r0-r1}
+ str r2, [sp, #0x14]
+ ldmia r7!, {r0-r1}
+ stmia r2!, {r0-r1}
+ str r2, [sp, #0x14]
+ ldmia r7!, {r0-r1}
+ stmia r2!, {r0-r1}
+ str r2, [sp, #0x14]
+ ldmia r7!, {r0-r1}
+ stmia r2!, {r0-r1}
+ str r2, [sp, #0x14]
+ mov r0, #0x10
+_0206A32E:
+ ldr r1, [sp, #0x8]
+ ldrh r2, [r1, #0x0]
+ add r1, r1, #0x2
+ str r1, [sp, #0x8]
+ ldr r1, [sp, #0x18]
+ strh r2, [r1, #0x0]
+ add r1, r1, #0x2
+ str r1, [sp, #0x18]
+ sub r0, r0, #0x1
+ bne _0206A32E
+ add r0, r5, #0x0
+ add r0, #0x8
+ mov r1, #0x80
+ bl FUN_0206A3F8
+ strh r0, [r5, #0x6]
+ add r0, r5, #0x0
+ ldrh r2, [r5, #0x6]
+ add r0, #0x8
+ mov r1, #0x80
+ bl FUN_0206A3A4
+ add r0, r5, #0x0
+ ldr r2, [r5, #0x0]
+ add r0, #0x88
+ mov r1, #0x64
+ bl FUN_0206A3A4
+ ldr r0, [sp, #0x4]
+ bl FUN_02016A18
+ add sp, #0x1c
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_0206A370
+FUN_0206A370: ; 0x0206A370
+ ldr r3, _0206A37C ; =LoadFromNARC
+ add r2, r0, #0x0
+ add r0, r1, #0x0
+ mov r1, #0x2
+ bx r3
+ nop
+_0206A37C: .word LoadFromNARC
+
+ thumb_func_start FUN_0206A380
+FUN_0206A380: ; 0x0206A380
+ push {r4, lr}
+ add r4, r2, #0x0
+ bl FUN_0206A8FC
+ add r2, r0, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x2
+ bl LoadFromNARC
+ pop {r4, pc}
+
+ thumb_func_start FUN_0206A394
+FUN_0206A394: ; 0x0206A394
+ ldr r3, _0206A3A0 ; =LoadFromNARC
+ add r2, r0, #0x0
+ add r0, r1, #0x0
+ mov r1, #0x22
+ bx r3
+ nop
+_0206A3A0: .word LoadFromNARC
+
+ thumb_func_start FUN_0206A3A4
+FUN_0206A3A4: ; 0x0206A3A4
+ push {r0-r3}
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ mov r4, #0x0
+ lsr r6, r1, #0x1
+ beq _0206A3C6
+ add r7, sp, #0x20
+_0206A3B2:
+ add r0, r7, #0x0
+ bl FUN_0206A3D8
+ ldrh r1, [r5, #0x0]
+ add r4, r4, #0x1
+ eor r0, r1
+ strh r0, [r5, #0x0]
+ add r5, r5, #0x2
+ cmp r4, r6
+ blo _0206A3B2
+_0206A3C6:
+ pop {r3-r7}
+ pop {r3}
+ add sp, #0x10
+ bx r3
+ .balign 4
+
+ thumb_func_start FUN_0206A3D0
+FUN_0206A3D0: ; 0x0206A3D0
+ ldr r3, _0206A3D4 ; =FUN_0206A3A4
+ bx r3
+ .balign 4
+_0206A3D4: .word FUN_0206A3A4
+
+ thumb_func_start FUN_0206A3D8
+FUN_0206A3D8: ; 0x0206A3D8
+ ldr r2, [r0, #0x0]
+ ldr r1, _0206A3F0 ; =0x41C64E6D
+ add r3, r2, #0x0
+ mul r3, r1
+ ldr r1, _0206A3F4 ; =0x00006073
+ add r1, r3, r1
+ str r1, [r0, #0x0]
+ lsr r0, r1, #0x10
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bx lr
+ nop
+_0206A3F0: .word 0x41C64E6D
+_0206A3F4: .word 0x00006073
+
+ thumb_func_start FUN_0206A3F8
+FUN_0206A3F8: ; 0x0206A3F8
+ push {r3-r4}
+ mov r3, #0x0
+ add r2, r3, #0x0
+ lsr r4, r1, #0x1
+ beq _0206A412
+_0206A402:
+ ldrh r1, [r0, #0x0]
+ add r2, r2, #0x1
+ add r0, r0, #0x2
+ add r1, r3, r1
+ lsl r1, r1, #0x10
+ lsr r3, r1, #0x10
+ cmp r2, r4
+ blo _0206A402
+_0206A412:
+ add r0, r3, #0x0
+ pop {r3-r4}
+ bx lr
+
+ thumb_func_start FUN_0206A418
+FUN_0206A418: ; 0x0206A418
+ push {r3, lr}
+ mov r3, #0x3e
+ lsl r3, r3, #0xc
+ and r3, r1
+ lsr r3, r3, #0xd
+ cmp r3, #0x1f
+ bhi _0206A478
+ add r3, r3, r3
+ add r3, pc
+ ldrh r3, [r3, #0x6]
+ lsl r3, r3, #0x10
+ asr r3, r3, #0x10
+ add pc, r3
+_0206A432: ; jump table (using 16-bit offset)
+ .short _0206A472 - _0206A432 - 2; case 0
+ .short _0206A4A4 - _0206A432 - 2; case 1
+ .short _0206A4D4 - _0206A432 - 2; case 2
+ .short _0206A504 - _0206A432 - 2; case 3
+ .short _0206A534 - _0206A432 - 2; case 4
+ .short _0206A564 - _0206A432 - 2; case 5
+ .short _0206A594 - _0206A432 - 2; case 6
+ .short _0206A5C6 - _0206A432 - 2; case 7
+ .short _0206A5F6 - _0206A432 - 2; case 8
+ .short _0206A626 - _0206A432 - 2; case 9
+ .short _0206A656 - _0206A432 - 2; case 10
+ .short _0206A686 - _0206A432 - 2; case 11
+ .short _0206A6B6 - _0206A432 - 2; case 12
+ .short _0206A6E8 - _0206A432 - 2; case 13
+ .short _0206A718 - _0206A432 - 2; case 14
+ .short _0206A748 - _0206A432 - 2; case 15
+ .short _0206A778 - _0206A432 - 2; case 16
+ .short _0206A7A8 - _0206A432 - 2; case 17
+ .short _0206A7D8 - _0206A432 - 2; case 18
+ .short _0206A80A - _0206A432 - 2; case 19
+ .short _0206A83A - _0206A432 - 2; case 20
+ .short _0206A86A - _0206A432 - 2; case 21
+ .short _0206A89A - _0206A432 - 2; case 22
+ .short _0206A8CA - _0206A432 - 2; case 23
+ .short _0206A472 - _0206A432 - 2; case 24
+ .short _0206A4A4 - _0206A432 - 2; case 25
+ .short _0206A4D4 - _0206A432 - 2; case 26
+ .short _0206A504 - _0206A432 - 2; case 27
+ .short _0206A534 - _0206A432 - 2; case 28
+ .short _0206A564 - _0206A432 - 2; case 29
+ .short _0206A594 - _0206A432 - 2; case 30
+ .short _0206A5C6 - _0206A432 - 2; case 31
+_0206A472:
+ add r0, #0x8
+ cmp r2, #0x3
+ bls _0206A47A
+_0206A478:
+ b _0206A8F8
+_0206A47A:
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_0206A486: ; jump table (using 16-bit offset)
+ .short _0206A48E - _0206A486 - 2; case 0
+ .short _0206A492 - _0206A486 - 2; case 1
+ .short _0206A498 - _0206A486 - 2; case 2
+ .short _0206A49E - _0206A486 - 2; case 3
+_0206A48E:
+ add r1, r0, #0x0
+ b _0206A8F8
+_0206A492:
+ add r1, r0, #0x0
+ add r1, #0x20
+ b _0206A8F8
+_0206A498:
+ add r1, r0, #0x0
+ add r1, #0x40
+ b _0206A8F8
+_0206A49E:
+ add r1, r0, #0x0
+ add r1, #0x60
+ b _0206A8F8
+_0206A4A4:
+ add r0, #0x8
+ cmp r2, #0x3
+ bhi _0206A59A
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_0206A4B6: ; jump table (using 16-bit offset)
+ .short _0206A4BE - _0206A4B6 - 2; case 0
+ .short _0206A4C2 - _0206A4B6 - 2; case 1
+ .short _0206A4C8 - _0206A4B6 - 2; case 2
+ .short _0206A4CE - _0206A4B6 - 2; case 3
+_0206A4BE:
+ add r1, r0, #0x0
+ b _0206A8F8
+_0206A4C2:
+ add r1, r0, #0x0
+ add r1, #0x20
+ b _0206A8F8
+_0206A4C8:
+ add r1, r0, #0x0
+ add r1, #0x60
+ b _0206A8F8
+_0206A4CE:
+ add r1, r0, #0x0
+ add r1, #0x40
+ b _0206A8F8
+_0206A4D4:
+ add r0, #0x8
+ cmp r2, #0x3
+ bhi _0206A59A
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_0206A4E6: ; jump table (using 16-bit offset)
+ .short _0206A4EE - _0206A4E6 - 2; case 0
+ .short _0206A4F2 - _0206A4E6 - 2; case 1
+ .short _0206A4F8 - _0206A4E6 - 2; case 2
+ .short _0206A4FE - _0206A4E6 - 2; case 3
+_0206A4EE:
+ add r1, r0, #0x0
+ b _0206A8F8
+_0206A4F2:
+ add r1, r0, #0x0
+ add r1, #0x40
+ b _0206A8F8
+_0206A4F8:
+ add r1, r0, #0x0
+ add r1, #0x20
+ b _0206A8F8
+_0206A4FE:
+ add r1, r0, #0x0
+ add r1, #0x60
+ b _0206A8F8
+_0206A504:
+ add r0, #0x8
+ cmp r2, #0x3
+ bhi _0206A59A
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_0206A516: ; jump table (using 16-bit offset)
+ .short _0206A51E - _0206A516 - 2; case 0
+ .short _0206A522 - _0206A516 - 2; case 1
+ .short _0206A528 - _0206A516 - 2; case 2
+ .short _0206A52E - _0206A516 - 2; case 3
+_0206A51E:
+ add r1, r0, #0x0
+ b _0206A8F8
+_0206A522:
+ add r1, r0, #0x0
+ add r1, #0x60
+ b _0206A8F8
+_0206A528:
+ add r1, r0, #0x0
+ add r1, #0x20
+ b _0206A8F8
+_0206A52E:
+ add r1, r0, #0x0
+ add r1, #0x40
+ b _0206A8F8
+_0206A534:
+ add r0, #0x8
+ cmp r2, #0x3
+ bhi _0206A59A
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_0206A546: ; jump table (using 16-bit offset)
+ .short _0206A54E - _0206A546 - 2; case 0
+ .short _0206A552 - _0206A546 - 2; case 1
+ .short _0206A558 - _0206A546 - 2; case 2
+ .short _0206A55E - _0206A546 - 2; case 3
+_0206A54E:
+ add r1, r0, #0x0
+ b _0206A8F8
+_0206A552:
+ add r1, r0, #0x0
+ add r1, #0x40
+ b _0206A8F8
+_0206A558:
+ add r1, r0, #0x0
+ add r1, #0x60
+ b _0206A8F8
+_0206A55E:
+ add r1, r0, #0x0
+ add r1, #0x20
+ b _0206A8F8
+_0206A564:
+ add r0, #0x8
+ cmp r2, #0x3
+ bhi _0206A59A
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_0206A576: ; jump table (using 16-bit offset)
+ .short _0206A57E - _0206A576 - 2; case 0
+ .short _0206A582 - _0206A576 - 2; case 1
+ .short _0206A588 - _0206A576 - 2; case 2
+ .short _0206A58E - _0206A576 - 2; case 3
+_0206A57E:
+ add r1, r0, #0x0
+ b _0206A8F8
+_0206A582:
+ add r1, r0, #0x0
+ add r1, #0x60
+ b _0206A8F8
+_0206A588:
+ add r1, r0, #0x0
+ add r1, #0x40
+ b _0206A8F8
+_0206A58E:
+ add r1, r0, #0x0
+ add r1, #0x20
+ b _0206A8F8
+_0206A594:
+ add r0, #0x8
+ cmp r2, #0x3
+ bls _0206A59C
+_0206A59A:
+ b _0206A8F8
+_0206A59C:
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_0206A5A8: ; jump table (using 16-bit offset)
+ .short _0206A5B0 - _0206A5A8 - 2; case 0
+ .short _0206A5B6 - _0206A5A8 - 2; case 1
+ .short _0206A5BA - _0206A5A8 - 2; case 2
+ .short _0206A5C0 - _0206A5A8 - 2; case 3
+_0206A5B0:
+ add r1, r0, #0x0
+ add r1, #0x20
+ b _0206A8F8
+_0206A5B6:
+ add r1, r0, #0x0
+ b _0206A8F8
+_0206A5BA:
+ add r1, r0, #0x0
+ add r1, #0x40
+ b _0206A8F8
+_0206A5C0:
+ add r1, r0, #0x0
+ add r1, #0x60
+ b _0206A8F8
+_0206A5C6:
+ add r0, #0x8
+ cmp r2, #0x3
+ bhi _0206A6BC
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_0206A5D8: ; jump table (using 16-bit offset)
+ .short _0206A5E0 - _0206A5D8 - 2; case 0
+ .short _0206A5E6 - _0206A5D8 - 2; case 1
+ .short _0206A5EA - _0206A5D8 - 2; case 2
+ .short _0206A5F0 - _0206A5D8 - 2; case 3
+_0206A5E0:
+ add r1, r0, #0x0
+ add r1, #0x20
+ b _0206A8F8
+_0206A5E6:
+ add r1, r0, #0x0
+ b _0206A8F8
+_0206A5EA:
+ add r1, r0, #0x0
+ add r1, #0x60
+ b _0206A8F8
+_0206A5F0:
+ add r1, r0, #0x0
+ add r1, #0x40
+ b _0206A8F8
+_0206A5F6:
+ add r0, #0x8
+ cmp r2, #0x3
+ bhi _0206A6BC
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_0206A608: ; jump table (using 16-bit offset)
+ .short _0206A610 - _0206A608 - 2; case 0
+ .short _0206A616 - _0206A608 - 2; case 1
+ .short _0206A61A - _0206A608 - 2; case 2
+ .short _0206A620 - _0206A608 - 2; case 3
+_0206A610:
+ add r1, r0, #0x0
+ add r1, #0x40
+ b _0206A8F8
+_0206A616:
+ add r1, r0, #0x0
+ b _0206A8F8
+_0206A61A:
+ add r1, r0, #0x0
+ add r1, #0x20
+ b _0206A8F8
+_0206A620:
+ add r1, r0, #0x0
+ add r1, #0x60
+ b _0206A8F8
+_0206A626:
+ add r0, #0x8
+ cmp r2, #0x3
+ bhi _0206A6BC
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_0206A638: ; jump table (using 16-bit offset)
+ .short _0206A640 - _0206A638 - 2; case 0
+ .short _0206A646 - _0206A638 - 2; case 1
+ .short _0206A64A - _0206A638 - 2; case 2
+ .short _0206A650 - _0206A638 - 2; case 3
+_0206A640:
+ add r1, r0, #0x0
+ add r1, #0x60
+ b _0206A8F8
+_0206A646:
+ add r1, r0, #0x0
+ b _0206A8F8
+_0206A64A:
+ add r1, r0, #0x0
+ add r1, #0x20
+ b _0206A8F8
+_0206A650:
+ add r1, r0, #0x0
+ add r1, #0x40
+ b _0206A8F8
+_0206A656:
+ add r0, #0x8
+ cmp r2, #0x3
+ bhi _0206A6BC
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_0206A668: ; jump table (using 16-bit offset)
+ .short _0206A670 - _0206A668 - 2; case 0
+ .short _0206A676 - _0206A668 - 2; case 1
+ .short _0206A67A - _0206A668 - 2; case 2
+ .short _0206A680 - _0206A668 - 2; case 3
+_0206A670:
+ add r1, r0, #0x0
+ add r1, #0x40
+ b _0206A8F8
+_0206A676:
+ add r1, r0, #0x0
+ b _0206A8F8
+_0206A67A:
+ add r1, r0, #0x0
+ add r1, #0x60
+ b _0206A8F8
+_0206A680:
+ add r1, r0, #0x0
+ add r1, #0x20
+ b _0206A8F8
+_0206A686:
+ add r0, #0x8
+ cmp r2, #0x3
+ bhi _0206A6BC
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_0206A698: ; jump table (using 16-bit offset)
+ .short _0206A6A0 - _0206A698 - 2; case 0
+ .short _0206A6A6 - _0206A698 - 2; case 1
+ .short _0206A6AA - _0206A698 - 2; case 2
+ .short _0206A6B0 - _0206A698 - 2; case 3
+_0206A6A0:
+ add r1, r0, #0x0
+ add r1, #0x60
+ b _0206A8F8
+_0206A6A6:
+ add r1, r0, #0x0
+ b _0206A8F8
+_0206A6AA:
+ add r1, r0, #0x0
+ add r1, #0x40
+ b _0206A8F8
+_0206A6B0:
+ add r1, r0, #0x0
+ add r1, #0x20
+ b _0206A8F8
+_0206A6B6:
+ add r0, #0x8
+ cmp r2, #0x3
+ bls _0206A6BE
+_0206A6BC:
+ b _0206A8F8
+_0206A6BE:
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_0206A6CA: ; jump table (using 16-bit offset)
+ .short _0206A6D2 - _0206A6CA - 2; case 0
+ .short _0206A6D8 - _0206A6CA - 2; case 1
+ .short _0206A6DE - _0206A6CA - 2; case 2
+ .short _0206A6E2 - _0206A6CA - 2; case 3
+_0206A6D2:
+ add r1, r0, #0x0
+ add r1, #0x20
+ b _0206A8F8
+_0206A6D8:
+ add r1, r0, #0x0
+ add r1, #0x40
+ b _0206A8F8
+_0206A6DE:
+ add r1, r0, #0x0
+ b _0206A8F8
+_0206A6E2:
+ add r1, r0, #0x0
+ add r1, #0x60
+ b _0206A8F8
+_0206A6E8:
+ add r0, #0x8
+ cmp r2, #0x3
+ bhi _0206A7DE
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_0206A6FA: ; jump table (using 16-bit offset)
+ .short _0206A702 - _0206A6FA - 2; case 0
+ .short _0206A708 - _0206A6FA - 2; case 1
+ .short _0206A70E - _0206A6FA - 2; case 2
+ .short _0206A712 - _0206A6FA - 2; case 3
+_0206A702:
+ add r1, r0, #0x0
+ add r1, #0x20
+ b _0206A8F8
+_0206A708:
+ add r1, r0, #0x0
+ add r1, #0x60
+ b _0206A8F8
+_0206A70E:
+ add r1, r0, #0x0
+ b _0206A8F8
+_0206A712:
+ add r1, r0, #0x0
+ add r1, #0x40
+ b _0206A8F8
+_0206A718:
+ add r0, #0x8
+ cmp r2, #0x3
+ bhi _0206A7DE
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_0206A72A: ; jump table (using 16-bit offset)
+ .short _0206A732 - _0206A72A - 2; case 0
+ .short _0206A738 - _0206A72A - 2; case 1
+ .short _0206A73E - _0206A72A - 2; case 2
+ .short _0206A742 - _0206A72A - 2; case 3
+_0206A732:
+ add r1, r0, #0x0
+ add r1, #0x40
+ b _0206A8F8
+_0206A738:
+ add r1, r0, #0x0
+ add r1, #0x20
+ b _0206A8F8
+_0206A73E:
+ add r1, r0, #0x0
+ b _0206A8F8
+_0206A742:
+ add r1, r0, #0x0
+ add r1, #0x60
+ b _0206A8F8
+_0206A748:
+ add r0, #0x8
+ cmp r2, #0x3
+ bhi _0206A7DE
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_0206A75A: ; jump table (using 16-bit offset)
+ .short _0206A762 - _0206A75A - 2; case 0
+ .short _0206A768 - _0206A75A - 2; case 1
+ .short _0206A76E - _0206A75A - 2; case 2
+ .short _0206A772 - _0206A75A - 2; case 3
+_0206A762:
+ add r1, r0, #0x0
+ add r1, #0x60
+ b _0206A8F8
+_0206A768:
+ add r1, r0, #0x0
+ add r1, #0x20
+ b _0206A8F8
+_0206A76E:
+ add r1, r0, #0x0
+ b _0206A8F8
+_0206A772:
+ add r1, r0, #0x0
+ add r1, #0x40
+ b _0206A8F8
+_0206A778:
+ add r0, #0x8
+ cmp r2, #0x3
+ bhi _0206A7DE
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_0206A78A: ; jump table (using 16-bit offset)
+ .short _0206A792 - _0206A78A - 2; case 0
+ .short _0206A798 - _0206A78A - 2; case 1
+ .short _0206A79E - _0206A78A - 2; case 2
+ .short _0206A7A2 - _0206A78A - 2; case 3
+_0206A792:
+ add r1, r0, #0x0
+ add r1, #0x40
+ b _0206A8F8
+_0206A798:
+ add r1, r0, #0x0
+ add r1, #0x60
+ b _0206A8F8
+_0206A79E:
+ add r1, r0, #0x0
+ b _0206A8F8
+_0206A7A2:
+ add r1, r0, #0x0
+ add r1, #0x20
+ b _0206A8F8
+_0206A7A8:
+ add r0, #0x8
+ cmp r2, #0x3
+ bhi _0206A7DE
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_0206A7BA: ; jump table (using 16-bit offset)
+ .short _0206A7C2 - _0206A7BA - 2; case 0
+ .short _0206A7C8 - _0206A7BA - 2; case 1
+ .short _0206A7CE - _0206A7BA - 2; case 2
+ .short _0206A7D2 - _0206A7BA - 2; case 3
+_0206A7C2:
+ add r1, r0, #0x0
+ add r1, #0x60
+ b _0206A8F8
+_0206A7C8:
+ add r1, r0, #0x0
+ add r1, #0x40
+ b _0206A8F8
+_0206A7CE:
+ add r1, r0, #0x0
+ b _0206A8F8
+_0206A7D2:
+ add r1, r0, #0x0
+ add r1, #0x20
+ b _0206A8F8
+_0206A7D8:
+ add r0, #0x8
+ cmp r2, #0x3
+ bls _0206A7E0
+_0206A7DE:
+ b _0206A8F8
+_0206A7E0:
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_0206A7EC: ; jump table (using 16-bit offset)
+ .short _0206A7F4 - _0206A7EC - 2; case 0
+ .short _0206A7FA - _0206A7EC - 2; case 1
+ .short _0206A800 - _0206A7EC - 2; case 2
+ .short _0206A806 - _0206A7EC - 2; case 3
+_0206A7F4:
+ add r1, r0, #0x0
+ add r1, #0x20
+ b _0206A8F8
+_0206A7FA:
+ add r1, r0, #0x0
+ add r1, #0x40
+ b _0206A8F8
+_0206A800:
+ add r1, r0, #0x0
+ add r1, #0x60
+ b _0206A8F8
+_0206A806:
+ add r1, r0, #0x0
+ b _0206A8F8
+_0206A80A:
+ add r0, #0x8
+ cmp r2, #0x3
+ bhi _0206A8F8
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_0206A81C: ; jump table (using 16-bit offset)
+ .short _0206A824 - _0206A81C - 2; case 0
+ .short _0206A82A - _0206A81C - 2; case 1
+ .short _0206A830 - _0206A81C - 2; case 2
+ .short _0206A836 - _0206A81C - 2; case 3
+_0206A824:
+ add r1, r0, #0x0
+ add r1, #0x20
+ b _0206A8F8
+_0206A82A:
+ add r1, r0, #0x0
+ add r1, #0x60
+ b _0206A8F8
+_0206A830:
+ add r1, r0, #0x0
+ add r1, #0x40
+ b _0206A8F8
+_0206A836:
+ add r1, r0, #0x0
+ b _0206A8F8
+_0206A83A:
+ add r0, #0x8
+ cmp r2, #0x3
+ bhi _0206A8F8
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_0206A84C: ; jump table (using 16-bit offset)
+ .short _0206A854 - _0206A84C - 2; case 0
+ .short _0206A85A - _0206A84C - 2; case 1
+ .short _0206A860 - _0206A84C - 2; case 2
+ .short _0206A866 - _0206A84C - 2; case 3
+_0206A854:
+ add r1, r0, #0x0
+ add r1, #0x40
+ b _0206A8F8
+_0206A85A:
+ add r1, r0, #0x0
+ add r1, #0x20
+ b _0206A8F8
+_0206A860:
+ add r1, r0, #0x0
+ add r1, #0x60
+ b _0206A8F8
+_0206A866:
+ add r1, r0, #0x0
+ b _0206A8F8
+_0206A86A:
+ add r0, #0x8
+ cmp r2, #0x3
+ bhi _0206A8F8
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_0206A87C: ; jump table (using 16-bit offset)
+ .short _0206A884 - _0206A87C - 2; case 0
+ .short _0206A88A - _0206A87C - 2; case 1
+ .short _0206A890 - _0206A87C - 2; case 2
+ .short _0206A896 - _0206A87C - 2; case 3
+_0206A884:
+ add r1, r0, #0x0
+ add r1, #0x60
+ b _0206A8F8
+_0206A88A:
+ add r1, r0, #0x0
+ add r1, #0x20
+ b _0206A8F8
+_0206A890:
+ add r1, r0, #0x0
+ add r1, #0x40
+ b _0206A8F8
+_0206A896:
+ add r1, r0, #0x0
+ b _0206A8F8
+_0206A89A:
+ add r0, #0x8
+ cmp r2, #0x3
+ bhi _0206A8F8
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_0206A8AC: ; jump table (using 16-bit offset)
+ .short _0206A8B4 - _0206A8AC - 2; case 0
+ .short _0206A8BA - _0206A8AC - 2; case 1
+ .short _0206A8C0 - _0206A8AC - 2; case 2
+ .short _0206A8C6 - _0206A8AC - 2; case 3
+_0206A8B4:
+ add r1, r0, #0x0
+ add r1, #0x40
+ b _0206A8F8
+_0206A8BA:
+ add r1, r0, #0x0
+ add r1, #0x60
+ b _0206A8F8
+_0206A8C0:
+ add r1, r0, #0x0
+ add r1, #0x20
+ b _0206A8F8
+_0206A8C6:
+ add r1, r0, #0x0
+ b _0206A8F8
+_0206A8CA:
+ add r0, #0x8
+ cmp r2, #0x3
+ bhi _0206A8F8
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_0206A8DC: ; jump table (using 16-bit offset)
+ .short _0206A8E4 - _0206A8DC - 2; case 0
+ .short _0206A8EA - _0206A8DC - 2; case 1
+ .short _0206A8F0 - _0206A8DC - 2; case 2
+ .short _0206A8F6 - _0206A8DC - 2; case 3
+_0206A8E4:
+ add r1, r0, #0x0
+ add r1, #0x60
+ b _0206A8F8
+_0206A8EA:
+ add r1, r0, #0x0
+ add r1, #0x40
+ b _0206A8F8
+_0206A8F0:
+ add r1, r0, #0x0
+ add r1, #0x20
+ b _0206A8F8
+_0206A8F6:
+ add r1, r0, #0x0
+_0206A8F8:
+ add r0, r1, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_0206A8FC
+FUN_0206A8FC: ; 0x0206A8FC
+ ldr r3, _0206A928 ; =0x00000182
+ cmp r0, r3
+ beq _0206A90C
+ add r2, r3, #0x0
+ add r2, #0x1b
+ cmp r0, r2
+ beq _0206A91A
+ bx lr
+_0206A90C:
+ cmp r1, #0x0
+ beq _0206A926
+ cmp r1, #0x3
+ bgt _0206A926
+ add r3, #0x6d
+ add r0, r1, r3
+ bx lr
+_0206A91A:
+ cmp r1, #0x0
+ beq _0206A926
+ cmp r1, #0x2
+ bgt _0206A926
+ add r3, #0x70
+ add r0, r1, r3
+_0206A926:
+ bx lr
+ .balign 4
+_0206A928: .word 0x00000182
+
+ thumb_func_start FUN_0206A92C
+FUN_0206A92C: ; 0x0206A92C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r4, #0x1
+ cmp r5, #0x20
+ blt _0206A93A
+ bl ErrorHandling
+_0206A93A:
+ mov r0, #0x0
+ cmp r5, #0x0
+ ble _0206A948
+_0206A940:
+ add r0, r0, #0x1
+ lsl r4, r4, #0x1
+ cmp r0, r5
+ blt _0206A940
+_0206A948:
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0206A94C
+FUN_0206A94C: ; 0x0206A94C
+ mov r3, #0x1
+ mov r2, #0x0
+_0206A950:
+ add r1, r0, #0x0
+ tst r1, r3
+ bne _0206A95E
+ add r2, r2, #0x1
+ lsl r3, r3, #0x1
+ cmp r2, #0x20
+ blt _0206A950
+_0206A95E:
+ add r0, r2, #0x0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0206A964
+FUN_0206A964: ; 0x0206A964
+ ldr r3, _0206A980 ; =0x020F7EF2
+ mov r2, #0x0
+_0206A968:
+ ldrh r1, [r3, #0x0]
+ cmp r0, r1
+ bne _0206A972
+ mov r0, #0x1
+ bx lr
+_0206A972:
+ add r2, r2, #0x1
+ add r3, r3, #0x2
+ cmp r2, #0x12
+ blo _0206A968
+ mov r0, #0x0
+ bx lr
+ nop
+_0206A980: .word 0x020F7EF2
+
+ thumb_func_start FUN_0206A984
+FUN_0206A984: ; 0x0206A984
+ cmp r0, #0x12
+ blo _0206A98A
+ mov r0, #0x0
+_0206A98A:
+ lsl r1, r0, #0x1
+ ldr r0, _0206A994 ; =0x020F7EF2
+ ldrh r0, [r0, r1]
+ bx lr
+ nop
+_0206A994: .word 0x020F7EF2
+
+ thumb_func_start FUN_0206A998
+FUN_0206A998: ; 0x0206A998
+ push {r3, lr}
+ mov r1, #0x5
+ mov r2, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_0206A964
+ pop {r3, pc}
+
+ thumb_func_start FUN_0206A9AC
+FUN_0206A9AC: ; 0x0206A9AC
+ push {r3-r7, lr}
+ sub sp, #0x10
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ add r6, r2, #0x0
+ bl FUN_020239BC
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ mov r1, #0x7
+ mov r2, #0x0
+ bl FUN_020672BC
+ str r0, [sp, #0x4]
+ add r0, r4, #0x0
+ bl FUN_020239CC
+ str r0, [sp, #0x8]
+ add r0, r5, #0x0
+ mov r1, #0x9c
+ mov r2, #0x0
+ bl FUN_020672BC
+ str r0, [sp, #0xc]
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ bl FUN_020239A0
+ add r7, r0, #0x0
+ mov r0, #0x8
+ add r1, r6, #0x0
+ bl FUN_020219F4
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x90
+ add r2, r6, #0x0
+ mov r4, #0x0
+ bl FUN_020672BC
+ ldr r1, [sp, #0x0]
+ ldr r0, [sp, #0x4]
+ cmp r1, r0
+ bne _0206AA1C
+ ldr r1, [sp, #0x8]
+ ldr r0, [sp, #0xc]
+ cmp r1, r0
+ bne _0206AA1C
+ add r0, r7, #0x0
+ add r1, r6, #0x0
+ bl FUN_02021CE0
+ cmp r0, #0x0
+ bne _0206AA1C
+ mov r4, #0x1
+_0206AA1C:
+ add r0, r6, #0x0
+ bl FUN_02021A20
+ add r0, r7, #0x0
+ bl FUN_02021A20
+ add r0, r4, #0x0
+ add sp, #0x10
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206AA30
+FUN_0206AA30: ; 0x0206AA30
+ push {r3, lr}
+ cmp r0, #0x3f
+ bgt _0206AA48
+ bge _0206AA6C
+ cmp r0, #0x1
+ bgt _0206AA74
+ cmp r0, #0x0
+ blt _0206AA74
+ beq _0206AA82
+ cmp r0, #0x1
+ beq _0206AA82
+ b _0206AA74
+_0206AA48:
+ cmp r0, #0x5a
+ bgt _0206AA50
+ beq _0206AA70
+ b _0206AA74
+_0206AA50:
+ add r1, r0, #0x0
+ sub r1, #0x5b
+ cmp r1, #0x3
+ bhi _0206AA74
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0206AA64: ; jump table (using 16-bit offset)
+ .short _0206AA70 - _0206AA64 - 2; case 0
+ .short _0206AA70 - _0206AA64 - 2; case 1
+ .short _0206AA70 - _0206AA64 - 2; case 2
+ .short _0206AA70 - _0206AA64 - 2; case 3
+_0206AA6C:
+ mov r0, #0x2
+ pop {r3, pc}
+_0206AA70:
+ sub r0, #0x57
+ pop {r3, pc}
+_0206AA74:
+ bl FUN_0206AE00
+ cmp r0, #0x1
+ bne _0206AA80
+ mov r0, #0x1
+ pop {r3, pc}
+_0206AA80:
+ mov r0, #0x0
+_0206AA82:
+ pop {r3, pc}
+
+ thumb_func_start FUN_0206AA84
+FUN_0206AA84: ; 0x0206AA84
+ push {r3-r4, lr}
+ sub sp, #0x1c
+ add r4, r0, #0x0
+ mov r0, #0x0
+ add r1, sp, #0x0
+ strb r0, [r1, #0x0]
+ add r1, sp, #0x0
+ add r1, #0x1
+ mov r2, #0x18
+ blx MIi_CpuClearFast
+ add r0, r4, #0x0
+ mov r1, #0xa1
+ add r2, sp, #0x0
+ bl FUN_02067830
+ add r2, sp, #0x0
+ add r0, r4, #0x0
+ mov r1, #0xaa
+ add r2, #0x1
+ bl FUN_02067830
+ add sp, #0x1c
+ pop {r3-r4, pc}
+
+ thumb_func_start FUN_0206AAB4
+FUN_0206AAB4: ; 0x0206AAB4
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ bl FUN_02066A6C
+ mov r4, #0x0
+ str r0, [sp, #0x0]
+ add r7, r4, #0x0
+ add r6, sp, #0x4
+_0206AAC6:
+ add r1, r4, #0x0
+ add r0, r5, #0x0
+ add r1, #0x36
+ add r2, r7, #0x0
+ bl FUN_020672BC
+ cmp r0, #0x0
+ beq _0206AAF0
+ add r1, r4, #0x0
+ add r0, r5, #0x0
+ add r1, #0x42
+ mov r2, #0x0
+ bl FUN_020672BC
+ add r1, r4, #0x0
+ strb r0, [r6, #0x0]
+ add r0, r5, #0x0
+ add r1, #0x3a
+ add r2, sp, #0x4
+ bl FUN_02067960
+_0206AAF0:
+ add r4, r4, #0x1
+ cmp r4, #0x4
+ blt _0206AAC6
+ ldr r1, [sp, #0x0]
+ add r0, r5, #0x0
+ bl FUN_02066A94
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206AB04
+FUN_0206AB04: ; 0x0206AB04
+ push {r3, lr}
+ mov r1, #0x75
+ lsl r1, r1, #0x6
+ mov r2, #0x0
+ str r1, [sp, #0x0]
+ mov r1, #0x9
+ add r3, r2, #0x0
+ bl FUN_02006548
+ pop {r3, pc}
+
+ thumb_func_start FUN_0206AB18
+FUN_0206AB18: ; 0x0206AB18
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r1, #0x0
+ add r1, sp, #0x0
+ bl FUN_0206ABB4
+ add r0, sp, #0x0
+ add r1, r4, #0x0
+ bl FUN_0206AB58
+ add sp, #0x10
+ pop {r4, pc}
+
+ thumb_func_start FUN_0206AB30
+FUN_0206AB30: ; 0x0206AB30
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ cmp r5, #0x3
+ bls _0206AB3A
+ mov r5, #0x3
+_0206AB3A:
+ mov r1, #0x5
+ bl FUN_0206AB18
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ mov r0, #0x14
+ mul r0, r4
+ mul r0, r5
+ mov r1, #0x64
+ blx _s32_div_f
+ add r0, r4, r0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0206AB58
+FUN_0206AB58: ; 0x0206AB58
+ cmp r1, #0xb
+ bhi _0206ABB0
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0206AB68: ; jump table (using 16-bit offset)
+ .short _0206AB80 - _0206AB68 - 2; case 0
+ .short _0206AB84 - _0206AB68 - 2; case 1
+ .short _0206AB88 - _0206AB68 - 2; case 2
+ .short _0206AB8C - _0206AB68 - 2; case 3
+ .short _0206AB90 - _0206AB68 - 2; case 4
+ .short _0206AB94 - _0206AB68 - 2; case 5
+ .short _0206AB98 - _0206AB68 - 2; case 6
+ .short _0206AB9C - _0206AB68 - 2; case 7
+ .short _0206ABA0 - _0206AB68 - 2; case 8
+ .short _0206ABA6 - _0206AB68 - 2; case 9
+ .short _0206ABAA - _0206AB68 - 2; case 10
+ .short _0206ABAE - _0206AB68 - 2; case 11
+_0206AB80:
+ ldrh r0, [r0, #0x0]
+ bx lr
+_0206AB84:
+ ldrb r0, [r0, #0x2]
+ bx lr
+_0206AB88:
+ ldrb r0, [r0, #0x3]
+ bx lr
+_0206AB8C:
+ ldrb r0, [r0, #0x4]
+ bx lr
+_0206AB90:
+ ldrb r0, [r0, #0x5]
+ bx lr
+_0206AB94:
+ ldrb r0, [r0, #0x6]
+ bx lr
+_0206AB98:
+ ldrb r0, [r0, #0x7]
+ bx lr
+_0206AB9C:
+ ldrh r0, [r0, #0x8]
+ bx lr
+_0206ABA0:
+ mov r1, #0xa
+ ldrsb r0, [r0, r1]
+ bx lr
+_0206ABA6:
+ ldrb r0, [r0, #0xb]
+ bx lr
+_0206ABAA:
+ ldrb r0, [r0, #0xc]
+ bx lr
+_0206ABAE:
+ ldrb r0, [r0, #0xd]
+_0206ABB0:
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0206ABB4
+FUN_0206ABB4: ; 0x0206ABB4
+ ldr r3, _0206ABC0 ; =LoadFromNARC
+ add r2, r0, #0x0
+ add r0, r1, #0x0
+ mov r1, #0x9
+ bx r3
+ nop
+_0206ABC0: .word LoadFromNARC
+
+ thumb_func_start FUN_0206ABC4
+FUN_0206ABC4: ; 0x0206ABC4
+ push {r3-r7, lr}
+ sub sp, #0x48
+ str r2, [sp, #0x4]
+ ldr r2, _0206AC70 ; =0x0000022F
+ str r0, [sp, #0x0]
+ add r4, r1, #0x0
+ ldr r3, [sp, #0x4]
+ mov r0, #0x1
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ str r0, [sp, #0x10]
+ add r0, r4, #0x0
+ bl FUN_02024EC0
+ bl FUN_02024EE8
+ ldr r4, [sp, #0x0]
+ str r0, [sp, #0xc]
+ add r0, r4, #0x0
+ add r5, r4, #0x0
+ mov r7, #0x0
+ str r0, [sp, #0x8]
+ add r5, #0x3c
+_0206ABF4:
+ ldr r0, [r4, #0x18]
+ cmp r0, #0x0
+ beq _0206AC48
+ add r1, sp, #0x14
+ bl FUN_0206ADE0
+ ldr r3, [sp, #0x8]
+ add r6, sp, #0x14
+ add r3, #0x28
+ mov r2, #0x6
+_0206AC08:
+ ldmia r6!, {r0-r1}
+ stmia r3!, {r0-r1}
+ sub r2, r2, #0x1
+ bne _0206AC08
+ ldr r0, [r6, #0x0]
+ str r0, [r3, #0x0]
+ add r0, sp, #0x14
+ ldrb r0, [r0, #0x1]
+ cmp r0, #0x3f
+ bne _0206AC26
+ ldr r1, [sp, #0xc]
+ add r0, r5, #0x0
+ bl StringCopy
+ b _0206AC3E
+_0206AC26:
+ ldr r0, [sp, #0x10]
+ ldr r1, [r4, #0x18]
+ bl FUN_0200A914
+ add r6, r0, #0x0
+ add r1, r5, #0x0
+ mov r2, #0x8
+ bl FUN_02021EF0
+ add r0, r6, #0x0
+ bl FUN_02021A20
+_0206AC3E:
+ ldr r0, [sp, #0x0]
+ ldr r2, [sp, #0x4]
+ add r1, r7, #0x0
+ bl FUN_0206AE0C
+_0206AC48:
+ ldr r0, [sp, #0x8]
+ add r7, r7, #0x1
+ add r0, #0x34
+ add r4, r4, #0x4
+ add r5, #0x34
+ str r0, [sp, #0x8]
+ cmp r7, #0x4
+ blt _0206ABF4
+ ldr r0, [sp, #0x0]
+ ldr r1, [r0, #0x0]
+ ldr r0, [sp, #0x24]
+ orr r1, r0
+ ldr r0, [sp, #0x0]
+ str r1, [r0, #0x0]
+ ldr r0, [sp, #0x10]
+ bl FUN_0200A8B8
+ add sp, #0x48
+ pop {r3-r7, pc}
+ nop
+_0206AC70: .word 0x0000022F
+
+ thumb_func_start FUN_0206AC74
+FUN_0206AC74: ; 0x0206AC74
+ push {r4-r5, lr}
+ sub sp, #0x34
+ add r5, r1, #0x0
+ add r1, sp, #0x0
+ bl FUN_0206ADE0
+ cmp r5, #0x9
+ bhi _0206ACCC
+ add r0, r5, r5
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0206AC90: ; jump table (using 16-bit offset)
+ .short _0206ACA4 - _0206AC90 - 2; case 0
+ .short _0206ACAA - _0206AC90 - 2; case 1
+ .short _0206ACB0 - _0206AC90 - 2; case 2
+ .short _0206ACB6 - _0206AC90 - 2; case 3
+ .short _0206ACBC - _0206AC90 - 2; case 4
+ .short _0206ACBC - _0206AC90 - 2; case 5
+ .short _0206ACBC - _0206AC90 - 2; case 6
+ .short _0206ACBC - _0206AC90 - 2; case 7
+ .short _0206ACC6 - _0206AC90 - 2; case 8
+ .short _0206ACCA - _0206AC90 - 2; case 9
+_0206ACA4:
+ add r0, sp, #0x0
+ ldrb r4, [r0, #0x0]
+ b _0206ACCC
+_0206ACAA:
+ add r0, sp, #0x0
+ ldrb r4, [r0, #0x1]
+ b _0206ACCC
+_0206ACB0:
+ add r0, sp, #0x0
+ ldrb r4, [r0, #0x2]
+ b _0206ACCC
+_0206ACB6:
+ add r0, sp, #0x0
+ ldrb r4, [r0, #0x3]
+ b _0206ACCC
+_0206ACBC:
+ sub r0, r5, #0x4
+ lsl r1, r0, #0x1
+ add r0, sp, #0x4
+ ldrh r4, [r0, r1]
+ b _0206ACCC
+_0206ACC6:
+ ldr r4, [sp, #0xc]
+ b _0206ACCC
+_0206ACCA:
+ ldr r4, [sp, #0x10]
+_0206ACCC:
+ add r0, r4, #0x0
+ add sp, #0x34
+ pop {r4-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206ACD4
+FUN_0206ACD4: ; 0x0206ACD4
+ push {r4-r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0x0
+ mov r0, #0x0
+ str r0, [sp, #0x4]
+ add r7, r1, #0x0
+ ldr r1, [sp, #0x4]
+ mov r0, #0x3b
+ add r4, r2, #0x0
+ bl LoadFromNARC_7
+ add r6, r0, #0x0
+ mov r0, #0x2
+ str r0, [sp, #0x0]
+ add r0, sp, #0xc
+ mov r1, #0x89
+ mov r2, #0x0
+ lsl r3, r5, #0x1
+ bl FUN_02006548
+ mov r0, #0x3b
+ add r1, r4, #0x0
+ bl FUN_02006670
+ add r4, sp, #0xc
+ ldrh r2, [r4, #0x0]
+ str r0, [sp, #0x8]
+ cmp r2, r6
+ beq _0206AD40
+_0206AD0E:
+ add r0, sp, #0xc
+ add r0, #0x2
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x8]
+ mov r1, #0x0
+ mov r3, #0x4
+ bl FUN_02006814
+ ldrh r1, [r4, #0x2]
+ cmp r1, r5
+ bne _0206AD30
+ ldrh r0, [r4, #0x4]
+ cmp r0, r7
+ bne _0206AD30
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ b _0206AD40
+_0206AD30:
+ cmp r1, r5
+ bne _0206AD40
+ ldrh r0, [r4, #0x0]
+ add r0, r0, #0x4
+ strh r0, [r4, #0x0]
+ ldrh r2, [r4, #0x0]
+ cmp r2, r6
+ bne _0206AD0E
+_0206AD40:
+ ldr r0, [sp, #0x8]
+ bl FUN_020066F4
+ ldr r0, [sp, #0x4]
+ add sp, #0x14
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_0206AD4C
+FUN_0206AD4C: ; 0x0206AD4C
+ push {r3-r7, lr}
+ sub sp, #0x18
+ add r6, r0, #0x0
+ add r7, r1, #0x0
+ mov r0, #0x3b
+ mov r1, #0x0
+ str r2, [sp, #0x4]
+ str r3, [sp, #0x8]
+ bl LoadFromNARC_7
+ add r5, r0, #0x0
+ mov r0, #0x2
+ str r0, [sp, #0x0]
+ add r0, sp, #0x10
+ mov r1, #0x89
+ mov r2, #0x0
+ lsl r3, r6, #0x1
+ bl FUN_02006548
+ ldr r1, [sp, #0x8]
+ mov r0, #0x3b
+ bl FUN_02006670
+ add r4, sp, #0x10
+ ldrh r2, [r4, #0x0]
+ str r0, [sp, #0xc]
+ cmp r2, r5
+ beq _0206ADC2
+_0206AD84:
+ add r0, sp, #0x10
+ add r0, #0x2
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0xc]
+ mov r1, #0x0
+ mov r3, #0x4
+ bl FUN_02006814
+ ldrh r0, [r4, #0x2]
+ cmp r0, r6
+ bne _0206ADB6
+ ldrh r0, [r4, #0x4]
+ cmp r0, r7
+ bne _0206ADB6
+ ldr r0, [sp, #0x4]
+ add r2, sp, #0x10
+ str r0, [sp, #0x0]
+ ldrh r2, [r2, #0x0]
+ ldr r1, _0206ADDC ; =0x0000022E
+ ldr r3, [sp, #0x8]
+ mov r0, #0x1a
+ lsr r2, r2, #0x2
+ bl FUN_0200A648
+ b _0206ADC2
+_0206ADB6:
+ ldrh r0, [r4, #0x0]
+ add r0, r0, #0x4
+ strh r0, [r4, #0x0]
+ ldrh r2, [r4, #0x0]
+ cmp r2, r5
+ bne _0206AD84
+_0206ADC2:
+ ldr r0, [sp, #0xc]
+ bl FUN_020066F4
+ add r0, sp, #0x10
+ ldrh r0, [r0, #0x0]
+ cmp r0, r5
+ bne _0206ADD6
+ ldr r0, [sp, #0x4]
+ bl FUN_02021A4C
+_0206ADD6:
+ add sp, #0x18
+ pop {r3-r7, pc}
+ nop
+_0206ADDC: .word 0x0000022E
+
+ thumb_func_start FUN_0206ADE0
+FUN_0206ADE0: ; 0x0206ADE0
+ ldr r3, _0206ADEC ; =LoadFromNARC
+ add r2, r0, #0x0
+ add r0, r1, #0x0
+ mov r1, #0x39
+ bx r3
+ nop
+_0206ADEC: .word LoadFromNARC
+
+ thumb_func_start FUN_0206ADF0
+FUN_0206ADF0: ; 0x0206ADF0
+ ldr r3, _0206ADFC ; =LoadFromNARC
+ add r2, r0, #0x0
+ add r0, r1, #0x0
+ mov r1, #0x3a
+ bx r3
+ nop
+_0206ADFC: .word LoadFromNARC
+
+ thumb_func_start FUN_0206AE00
+FUN_0206AE00: ; 0x0206AE00
+ ldr r1, _0206AE08 ; =0x020F8010
+ ldrb r0, [r1, r0]
+ bx lr
+ nop
+_0206AE08: .word 0x020F8010
+
+ thumb_func_start FUN_0206AE0C
+FUN_0206AE0C: ; 0x0206AE0C
+ push {r3-r7, lr}
+ sub sp, #0x50
+ add r7, r1, #0x0
+ add r4, r0, #0x0
+ add r5, r2, #0x0
+ bl FUN_0201B9D4
+ lsl r6, r7, #0x2
+ str r0, [sp, #0x44]
+ add r0, r4, r6
+ ldr r0, [r0, #0x4]
+ mov r1, #0x6
+ bl FUN_0206B8CC
+ add r0, r5, #0x0
+ mov r1, #0x60
+ bl FUN_02016998
+ str r0, [sp, #0x4c]
+ add r0, r5, #0x0
+ bl FUN_020669C0
+ str r0, [sp, #0x40]
+ add r0, r4, r6
+ ldr r0, [r0, #0x18]
+ ldr r1, [sp, #0x4c]
+ bl FUN_0206ADF0
+ mov r0, #0x34
+ add r5, r7, #0x0
+ mul r5, r0
+ add r0, r4, r5
+ add r0, #0x29
+ ldrb r0, [r0, #0x0]
+ bl FUN_0206AE00
+ cmp r0, #0x1
+ bne _0206AE5E
+ mov r0, #0x78
+ str r0, [sp, #0x10]
+ b _0206AE62
+_0206AE5E:
+ mov r0, #0x88
+ str r0, [sp, #0x10]
+_0206AE62:
+ add r0, r4, r5
+ add r0, #0x28
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x3
+ bhi _0206AF26
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0206AE78: ; jump table (using 16-bit offset)
+ .short _0206AE80 - _0206AE78 - 2; case 0
+ .short _0206AF28 - _0206AE78 - 2; case 1
+ .short _0206AFE8 - _0206AE78 - 2; case 2
+ .short _0206B08C - _0206AE78 - 2; case 3
+_0206AE80:
+ mov r0, #0x0
+ str r0, [sp, #0x48]
+ add r0, r4, r5
+ add r0, #0x2b
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ ble _0206AF26
+ ldr r0, [sp, #0x4c]
+ str r0, [sp, #0x28]
+ add r0, r4, r6
+ str r0, [sp, #0x24]
+_0206AE96:
+ ldr r0, [sp, #0x24]
+ ldr r2, [sp, #0x28]
+ ldr r1, [r0, #0x18]
+ ldr r0, [sp, #0x28]
+ ldrh r3, [r2, #0x0]
+ ldrh r2, [r2, #0x2]
+ ldrh r0, [r0, #0x4]
+ add r2, r3, r2
+ add r0, r0, r2
+ add r7, r1, r0
+ add r0, r7, #0x0
+ bl FUN_0201B9E0
+ add r0, r4, r5
+ add r0, #0x29
+ ldrb r0, [r0, #0x0]
+ mov r6, #0x0
+ cmp r0, #0x0
+ ble _0206AECE
+_0206AEBC:
+ bl FUN_0201B9EC
+ add r7, r0, #0x0
+ add r0, r4, r5
+ add r0, #0x29
+ ldrb r0, [r0, #0x0]
+ add r6, r6, #0x1
+ cmp r6, r0
+ blt _0206AEBC
+_0206AECE:
+ ldr r0, [sp, #0x10]
+ lsl r1, r7, #0x8
+ add r6, r1, r0
+ ldr r0, [sp, #0x28]
+ ldrh r1, [r0, #0x0]
+ mov r0, #0x1f
+ mul r0, r1
+ mov r1, #0xff
+ blx _s32_div_f
+ add r3, r0, #0x0
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ lsl r3, r3, #0x18
+ str r6, [sp, #0x4]
+ mov r0, #0x2
+ str r0, [sp, #0x8]
+ mov r0, #0x0
+ str r0, [sp, #0xc]
+ ldr r1, [sp, #0x28]
+ ldr r2, [sp, #0x28]
+ ldrh r1, [r1, #0x4]
+ ldrh r2, [r2, #0x2]
+ ldr r0, [sp, #0x40]
+ lsr r3, r3, #0x18
+ bl FUN_02066ACC
+ ldr r0, [sp, #0x24]
+ ldr r1, [sp, #0x40]
+ ldr r0, [r0, #0x4]
+ bl FUN_0206B900
+ ldr r0, [sp, #0x28]
+ add r0, r0, #0x6
+ str r0, [sp, #0x28]
+ ldr r0, [sp, #0x48]
+ add r0, r0, #0x1
+ str r0, [sp, #0x48]
+ add r0, r4, r5
+ add r0, #0x2b
+ ldrb r1, [r0, #0x0]
+ ldr r0, [sp, #0x48]
+ cmp r0, r1
+ blt _0206AE96
+_0206AF26:
+ b _0206B156
+_0206AF28:
+ mov r0, #0x0
+ str r0, [sp, #0x18]
+ add r0, r4, r5
+ add r0, #0x2b
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ ble _0206AFE6
+ ldr r0, [sp, #0x4c]
+ str r0, [sp, #0x30]
+ add r0, r4, r6
+ str r0, [sp, #0x2c]
+_0206AF3E:
+ ldr r0, [sp, #0x2c]
+ ldr r2, [sp, #0x30]
+ ldr r1, [r0, #0x18]
+ ldr r0, [sp, #0x30]
+ ldrh r3, [r2, #0x0]
+ ldrh r2, [r2, #0x2]
+ ldrh r0, [r0, #0x4]
+ add r2, r3, r2
+ add r0, r0, r2
+ add r7, r1, r0
+ add r0, r7, #0x0
+ bl FUN_0201B9E0
+ add r0, r4, r5
+ add r0, #0x29
+ ldrb r0, [r0, #0x0]
+ mov r6, #0x0
+ cmp r0, #0x0
+ ble _0206AF76
+_0206AF64:
+ bl FUN_0201B9EC
+ add r7, r0, #0x0
+ add r0, r4, r5
+ add r0, #0x29
+ ldrb r0, [r0, #0x0]
+ add r6, r6, #0x1
+ cmp r6, r0
+ blt _0206AF64
+_0206AF76:
+ ldr r0, [sp, #0x10]
+ lsl r1, r7, #0x8
+ add r6, r1, r0
+ ldr r0, [sp, #0x30]
+ ldrh r1, [r0, #0x0]
+ mov r0, #0x1f
+ mul r0, r1
+ mov r1, #0xff
+ blx _s32_div_f
+ add r3, r0, #0x0
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ lsl r3, r3, #0x18
+ str r6, [sp, #0x4]
+ mov r0, #0x2
+ str r0, [sp, #0x8]
+ mov r0, #0x0
+ str r0, [sp, #0xc]
+ ldr r1, [sp, #0x30]
+ ldr r2, [sp, #0x30]
+ ldrh r1, [r1, #0x4]
+ ldrh r2, [r2, #0x2]
+ ldr r0, [sp, #0x40]
+ lsr r3, r3, #0x18
+ bl FUN_02066ACC
+ ldr r7, [sp, #0x30]
+ mov r6, #0x0
+_0206AFB0:
+ ldrh r1, [r7, #0x6]
+ lsl r2, r6, #0x18
+ ldr r0, [sp, #0x40]
+ lsr r2, r2, #0x18
+ bl FUN_020697CC
+ add r6, r6, #0x1
+ add r7, r7, #0x2
+ cmp r6, #0x4
+ blt _0206AFB0
+ ldr r0, [sp, #0x2c]
+ ldr r1, [sp, #0x40]
+ ldr r0, [r0, #0x4]
+ bl FUN_0206B900
+ ldr r0, [sp, #0x30]
+ add r0, #0xe
+ str r0, [sp, #0x30]
+ ldr r0, [sp, #0x18]
+ add r0, r0, #0x1
+ str r0, [sp, #0x18]
+ add r0, r4, r5
+ add r0, #0x2b
+ ldrb r1, [r0, #0x0]
+ ldr r0, [sp, #0x18]
+ cmp r0, r1
+ blt _0206AF3E
+_0206AFE6:
+ b _0206B156
+_0206AFE8:
+ mov r0, #0x0
+ str r0, [sp, #0x1c]
+ add r0, r4, r5
+ add r0, #0x2b
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ ble _0206B08A
+ add r0, r4, r6
+ ldr r7, [sp, #0x4c]
+ str r0, [sp, #0x34]
+_0206AFFC:
+ ldr r0, [sp, #0x34]
+ ldrh r3, [r7, #0x0]
+ ldrh r2, [r7, #0x2]
+ ldr r1, [r0, #0x18]
+ ldrh r0, [r7, #0x4]
+ add r2, r3, r2
+ add r0, r0, r2
+ add r0, r1, r0
+ str r0, [sp, #0x14]
+ bl FUN_0201B9E0
+ add r0, r4, r5
+ add r0, #0x29
+ ldrb r0, [r0, #0x0]
+ mov r6, #0x0
+ cmp r0, #0x0
+ ble _0206B030
+_0206B01E:
+ bl FUN_0201B9EC
+ str r0, [sp, #0x14]
+ add r0, r4, r5
+ add r0, #0x29
+ ldrb r0, [r0, #0x0]
+ add r6, r6, #0x1
+ cmp r6, r0
+ blt _0206B01E
+_0206B030:
+ ldr r0, [sp, #0x14]
+ lsl r1, r0, #0x8
+ ldr r0, [sp, #0x10]
+ add r6, r1, r0
+ ldrh r1, [r7, #0x0]
+ mov r0, #0x1f
+ mul r0, r1
+ mov r1, #0xff
+ blx _s32_div_f
+ add r3, r0, #0x0
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ lsl r3, r3, #0x18
+ str r6, [sp, #0x4]
+ mov r0, #0x2
+ str r0, [sp, #0x8]
+ mov r0, #0x0
+ str r0, [sp, #0xc]
+ ldrh r1, [r7, #0x4]
+ ldrh r2, [r7, #0x2]
+ ldr r0, [sp, #0x40]
+ lsr r3, r3, #0x18
+ bl FUN_02066ACC
+ ldr r0, [sp, #0x40]
+ mov r1, #0x6
+ add r2, r7, #0x6
+ bl FUN_02067830
+ ldr r0, [sp, #0x34]
+ ldr r1, [sp, #0x40]
+ ldr r0, [r0, #0x4]
+ bl FUN_0206B900
+ ldr r0, [sp, #0x1c]
+ add r7, #0x8
+ add r0, r0, #0x1
+ str r0, [sp, #0x1c]
+ add r0, r4, r5
+ add r0, #0x2b
+ ldrb r1, [r0, #0x0]
+ ldr r0, [sp, #0x1c]
+ cmp r0, r1
+ blt _0206AFFC
+_0206B08A:
+ b _0206B156
+_0206B08C:
+ mov r0, #0x0
+ str r0, [sp, #0x20]
+ add r0, r4, r5
+ add r0, #0x2b
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ ble _0206B156
+ ldr r0, [sp, #0x4c]
+ str r0, [sp, #0x3c]
+ add r0, r4, r6
+ str r0, [sp, #0x38]
+_0206B0A2:
+ ldr r0, [sp, #0x38]
+ ldr r2, [sp, #0x3c]
+ ldr r1, [r0, #0x18]
+ ldr r0, [sp, #0x3c]
+ ldrh r3, [r2, #0x0]
+ ldrh r2, [r2, #0x2]
+ ldrh r0, [r0, #0x4]
+ add r2, r3, r2
+ add r0, r0, r2
+ add r7, r1, r0
+ add r0, r7, #0x0
+ bl FUN_0201B9E0
+ add r0, r4, r5
+ add r0, #0x29
+ ldrb r0, [r0, #0x0]
+ mov r6, #0x0
+ cmp r0, #0x0
+ ble _0206B0DA
+_0206B0C8:
+ bl FUN_0201B9EC
+ add r7, r0, #0x0
+ add r0, r4, r5
+ add r0, #0x29
+ ldrb r0, [r0, #0x0]
+ add r6, r6, #0x1
+ cmp r6, r0
+ blt _0206B0C8
+_0206B0DA:
+ ldr r0, [sp, #0x10]
+ lsl r1, r7, #0x8
+ add r6, r1, r0
+ ldr r0, [sp, #0x3c]
+ ldrh r1, [r0, #0x0]
+ mov r0, #0x1f
+ mul r0, r1
+ mov r1, #0xff
+ blx _s32_div_f
+ add r3, r0, #0x0
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ lsl r3, r3, #0x18
+ str r6, [sp, #0x4]
+ mov r0, #0x2
+ str r0, [sp, #0x8]
+ mov r0, #0x0
+ str r0, [sp, #0xc]
+ ldr r1, [sp, #0x3c]
+ ldr r2, [sp, #0x3c]
+ ldrh r1, [r1, #0x4]
+ ldrh r2, [r2, #0x2]
+ ldr r0, [sp, #0x40]
+ lsr r3, r3, #0x18
+ bl FUN_02066ACC
+ ldr r2, [sp, #0x3c]
+ ldr r0, [sp, #0x40]
+ mov r1, #0x6
+ add r2, r2, #0x6
+ bl FUN_02067830
+ ldr r7, [sp, #0x3c]
+ mov r6, #0x0
+_0206B120:
+ ldrh r1, [r7, #0x8]
+ lsl r2, r6, #0x18
+ ldr r0, [sp, #0x40]
+ lsr r2, r2, #0x18
+ bl FUN_020697CC
+ add r6, r6, #0x1
+ add r7, r7, #0x2
+ cmp r6, #0x4
+ blt _0206B120
+ ldr r0, [sp, #0x38]
+ ldr r1, [sp, #0x40]
+ ldr r0, [r0, #0x4]
+ bl FUN_0206B900
+ ldr r0, [sp, #0x3c]
+ add r0, #0x10
+ str r0, [sp, #0x3c]
+ ldr r0, [sp, #0x20]
+ add r0, r0, #0x1
+ str r0, [sp, #0x20]
+ add r0, r4, r5
+ add r0, #0x2b
+ ldrb r1, [r0, #0x0]
+ ldr r0, [sp, #0x20]
+ cmp r0, r1
+ blt _0206B0A2
+_0206B156:
+ ldr r0, [sp, #0x4c]
+ bl FUN_02016A18
+ ldr r0, [sp, #0x40]
+ bl FUN_02016A18
+ ldr r0, [sp, #0x44]
+ bl FUN_0201B9E0
+ add sp, #0x50
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0206B16C
+FUN_0206B16C: ; 0x0206B16C
+ push {r3, lr}
+ bl FUN_0206B180
+ bl FUN_02022830
+ pop {r3, pc}
+
+ thumb_func_start FUN_0206B178
+FUN_0206B178: ; 0x0206B178
+ ldr r0, _0206B17C ; =0x000121C8
+ bx lr
+ .balign 4
+_0206B17C: .word 0x000121C8
+
+ thumb_func_start FUN_0206B180
+FUN_0206B180: ; 0x0206B180
+ push {r3-r7, lr}
+ str r0, [sp, #0x0]
+ mov r7, #0x0
+ add r6, r0, #0x4
+_0206B188:
+ mov r4, #0x0
+ add r5, r6, #0x0
+_0206B18C:
+ add r0, r5, #0x0
+ bl FUN_020669A0
+ add r4, r4, #0x1
+ add r5, #0x88
+ cmp r4, #0x1e
+ blo _0206B18C
+ mov r0, #0xff
+ lsl r0, r0, #0x4
+ add r7, r7, #0x1
+ add r6, r6, r0
+ cmp r7, #0x12
+ blo _0206B188
+ mov r3, #0x0
+ ldr r1, _0206B200 ; =0x000121B4
+ add r4, r3, #0x0
+ add r2, r3, #0x0
+_0206B1AE:
+ ldr r0, [sp, #0x0]
+ add r0, r0, r3
+ strb r4, [r0, r1]
+ add r4, r4, #0x1
+ cmp r4, #0x10
+ blo _0206B1BC
+ add r4, r2, #0x0
+_0206B1BC:
+ add r3, r3, #0x1
+ cmp r3, #0x12
+ blo _0206B1AE
+ ldr r1, _0206B204 ; =0x000121C6
+ ldr r0, [sp, #0x0]
+ mov r3, #0x0
+ strb r3, [r0, r1]
+ mov r0, #0x1
+ mov r1, #0x1a
+ mov r2, #0xe
+ bl FUN_0200A86C
+ add r6, r0, #0x0
+ beq _0206B1F8
+ ldr r1, _0206B208 ; =0x00011EE4
+ ldr r0, [sp, #0x0]
+ mov r5, #0x0
+ add r4, r0, r1
+_0206B1E0:
+ add r0, r6, #0x0
+ add r1, r5, #0x6
+ add r2, r4, #0x0
+ bl FUN_0200A968
+ add r5, r5, #0x1
+ add r4, #0x28
+ cmp r5, #0x12
+ blo _0206B1E0
+ add r0, r6, #0x0
+ bl FUN_0200A8B8
+_0206B1F8:
+ ldr r0, [sp, #0x0]
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+ pop {r3-r7, pc}
+ .balign 4
+_0206B200: .word 0x000121B4
+_0206B204: .word 0x000121C6
+_0206B208: .word 0x00011EE4
+
+ thumb_func_start FUN_0206B20C
+FUN_0206B20C: ; 0x0206B20C
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldr r4, [r5, #0x0]
+ add r6, r1, #0x0
+ mov r7, #0x0
+_0206B216:
+ add r0, r6, #0x0
+ bl FUN_0206AAB4
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_0206B244
+ cmp r0, #0x0
+ beq _0206B232
+ bl FUN_02022830
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0206B232:
+ add r4, r4, #0x1
+ cmp r4, #0x12
+ blo _0206B23A
+ add r4, r7, #0x0
+_0206B23A:
+ ldr r0, [r5, #0x0]
+ cmp r4, r0
+ bne _0206B216
+ mov r0, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0206B244
+FUN_0206B244: ; 0x0206B244
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r6, r0, #0x0
+ add r0, r2, #0x0
+ add r5, r1, #0x0
+ str r2, [sp, #0x0]
+ bl FUN_0206AAB4
+ mov r0, #0x0
+ mvn r0, r0
+ cmp r5, r0
+ bne _0206B25E
+ ldr r5, [r6, #0x0]
+_0206B25E:
+ mov r0, #0xff
+ lsl r0, r0, #0x4
+ add r1, r6, #0x4
+ mul r0, r5
+ mov r4, #0x0
+ add r5, r1, r0
+ str r5, [sp, #0x4]
+ mov r6, #0x5
+ add r7, r4, #0x0
+_0206B270:
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r7, #0x0
+ bl FUN_020672BC
+ cmp r0, #0x0
+ bne _0206B2A0
+ mov r0, #0x88
+ add r1, r4, #0x0
+ mul r1, r0
+ ldr r0, [sp, #0x4]
+ mov r3, #0x11
+ add r4, r0, r1
+_0206B28A:
+ ldr r2, [sp, #0x0]
+ sub r3, r3, #0x1
+ ldmia r2!, {r0-r1}
+ str r2, [sp, #0x0]
+ stmia r4!, {r0-r1}
+ bne _0206B28A
+ bl FUN_02022830
+ add sp, #0x8
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0206B2A0:
+ add r4, r4, #0x1
+ add r5, #0x88
+ cmp r4, #0x1e
+ blo _0206B270
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206B2B0
+FUN_0206B2B0: ; 0x0206B2B0
+ push {r3-r7, lr}
+ add r7, r3, #0x0
+ add r5, r0, #0x0
+ add r0, r7, #0x0
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_0206AAB4
+ mov r0, #0x0
+ mvn r0, r0
+ cmp r4, r0
+ bne _0206B2CA
+ ldr r4, [r5, #0x0]
+_0206B2CA:
+ cmp r4, #0x12
+ bhs _0206B2F4
+ cmp r6, #0x1e
+ bhs _0206B2F4
+ mov r0, #0xff
+ lsl r0, r0, #0x4
+ mul r0, r4
+ add r1, r5, r0
+ mov r0, #0x88
+ mul r0, r6
+ add r0, r1, r0
+ add r3, r0, #0x4
+ mov r2, #0x11
+_0206B2E4:
+ ldmia r7!, {r0-r1}
+ stmia r3!, {r0-r1}
+ sub r2, r2, #0x1
+ bne _0206B2E4
+ bl FUN_02022830
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0206B2F4:
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0206B2FC
+FUN_0206B2FC: ; 0x0206B2FC
+ push {r3, lr}
+ mov r3, #0x0
+ mvn r3, r3
+ cmp r1, r3
+ bne _0206B308
+ ldr r1, [r0, #0x0]
+_0206B308:
+ cmp r2, #0x1e
+ bhs _0206B32A
+ cmp r1, #0x12
+ bhs _0206B32A
+ add r3, r0, #0x4
+ mov r0, #0xff
+ lsl r0, r0, #0x4
+ mul r0, r1
+ add r1, r3, r0
+ mov r0, #0x88
+ mul r0, r2
+ add r0, r1, r0
+ bl FUN_020669A0
+ bl FUN_02022830
+ pop {r3, pc}
+_0206B32A:
+ bl ErrorHandling
+ pop {r3, pc}
+
+ thumb_func_start FUN_0206B330
+FUN_0206B330: ; 0x0206B330
+ ldr r0, [r0, #0x0]
+ bx lr
+
+ thumb_func_start FUN_0206B334
+FUN_0206B334: ; 0x0206B334
+ push {r3-r7, lr}
+ sub sp, #0x8
+ str r0, [sp, #0x0]
+ ldr r6, [r0, #0x0]
+ add r0, r0, #0x4
+ mov r7, #0xab
+ str r0, [sp, #0x4]
+_0206B342:
+ mov r0, #0xff
+ lsl r0, r0, #0x4
+ add r1, r6, #0x0
+ mul r1, r0
+ ldr r0, [sp, #0x4]
+ mov r4, #0x0
+ add r5, r0, r1
+_0206B350:
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ mov r2, #0x0
+ bl FUN_020672BC
+ cmp r0, #0x0
+ bne _0206B364
+ add sp, #0x8
+ add r0, r6, #0x0
+ pop {r3-r7, pc}
+_0206B364:
+ add r4, r4, #0x1
+ add r5, #0x88
+ cmp r4, #0x1e
+ blt _0206B350
+ add r6, r6, #0x1
+ cmp r6, #0x12
+ blt _0206B374
+ mov r6, #0x0
+_0206B374:
+ ldr r0, [sp, #0x0]
+ ldr r0, [r0, #0x0]
+ cmp r6, r0
+ bne _0206B342
+ mov r0, #0x12
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206B384
+FUN_0206B384: ; 0x0206B384
+ push {r3-r7, lr}
+ add r6, r1, #0x0
+ str r2, [sp, #0x0]
+ mov r1, #0x0
+ ldr r2, [r6, #0x0]
+ mvn r1, r1
+ cmp r2, r1
+ bne _0206B398
+ ldr r1, [r0, #0x0]
+ str r1, [r6, #0x0]
+_0206B398:
+ ldr r1, [sp, #0x0]
+ ldr r4, [r6, #0x0]
+ ldr r5, [r1, #0x0]
+ add r7, r0, #0x4
+ b _0206B3C8
+_0206B3A2:
+ mov r0, #0xff
+ lsl r0, r0, #0x4
+ mul r0, r4
+ add r1, r7, r0
+ mov r0, #0x88
+ mul r0, r5
+ add r0, r1, r0
+ mov r1, #0xab
+ mov r2, #0x0
+ bl FUN_020672BC
+ cmp r0, #0x0
+ bne _0206B3C6
+ ldr r0, [sp, #0x0]
+ str r4, [r6, #0x0]
+ str r5, [r0, #0x0]
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0206B3C6:
+ add r5, r5, #0x1
+_0206B3C8:
+ cmp r5, #0x1e
+ blt _0206B3A2
+ add r4, r4, #0x1
+ cmp r4, #0x12
+ blt _0206B3D4
+ mov r4, #0x0
+_0206B3D4:
+ ldr r0, [r6, #0x0]
+ cmp r4, r0
+ beq _0206B3DE
+ mov r5, #0x0
+ b _0206B3C8
+_0206B3DE:
+ mov r0, #0x12
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206B3E4
+FUN_0206B3E4: ; 0x0206B3E4
+ push {r3-r7, lr}
+ sub sp, #0x8
+ mov r6, #0x0
+ add r0, r0, #0x4
+ str r6, [sp, #0x4]
+ str r0, [sp, #0x0]
+ mov r7, #0xab
+_0206B3F2:
+ ldr r5, [sp, #0x0]
+ mov r4, #0x0
+_0206B3F6:
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ mov r2, #0x0
+ bl FUN_020672BC
+ cmp r0, #0x0
+ beq _0206B406
+ add r6, r6, #0x1
+_0206B406:
+ add r4, r4, #0x1
+ add r5, #0x88
+ cmp r4, #0x1e
+ blt _0206B3F6
+ mov r0, #0xff
+ ldr r1, [sp, #0x0]
+ lsl r0, r0, #0x4
+ add r0, r1, r0
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x4]
+ add r0, r0, #0x1
+ str r0, [sp, #0x4]
+ cmp r0, #0x12
+ blt _0206B3F2
+ add r0, r6, #0x0
+ add sp, #0x8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0206B428
+FUN_0206B428: ; 0x0206B428
+ push {r3, lr}
+ cmp r1, #0x12
+ bhs _0206B436
+ str r1, [r0, #0x0]
+ bl FUN_02022830
+ pop {r3, pc}
+_0206B436:
+ bl ErrorHandling
+ pop {r3, pc}
+
+ thumb_func_start FUN_0206B43C
+FUN_0206B43C: ; 0x0206B43C
+ push {r3, lr}
+ cmp r1, #0x12
+ bhs _0206B44A
+ add r1, r0, r1
+ ldr r0, _0206B454 ; =0x000121B4
+ ldrb r0, [r1, r0]
+ pop {r3, pc}
+_0206B44A:
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r3, pc}
+ nop
+_0206B454: .word 0x000121B4
+
+ thumb_func_start FUN_0206B458
+FUN_0206B458: ; 0x0206B458
+ push {r3, lr}
+ mov r3, #0x0
+ mvn r3, r3
+ cmp r1, r3
+ bne _0206B464
+ ldr r1, [r0, #0x0]
+_0206B464:
+ cmp r1, #0x12
+ bhs _0206B478
+ cmp r2, #0x18
+ bhs _0206B478
+ add r1, r0, r1
+ ldr r0, _0206B480 ; =0x000121B4
+ strb r2, [r1, r0]
+ bl FUN_02022830
+ pop {r3, pc}
+_0206B478:
+ bl ErrorHandling
+ pop {r3, pc}
+ nop
+_0206B480: .word 0x000121B4
+
+ thumb_func_start FUN_0206B484
+FUN_0206B484: ; 0x0206B484
+ push {r3, lr}
+ add r3, r0, #0x0
+ mov r0, #0x0
+ mvn r0, r0
+ cmp r1, r0
+ bne _0206B492
+ ldr r1, [r3, #0x0]
+_0206B492:
+ cmp r1, #0x12
+ bhs _0206B4A8
+ add r0, r2, #0x0
+ ldr r2, _0206B4B0 ; =0x00011EE4
+ add r3, r3, r2
+ mov r2, #0x28
+ mul r2, r1
+ add r1, r3, r2
+ bl FUN_02021E28
+ pop {r3, pc}
+_0206B4A8:
+ bl ErrorHandling
+ pop {r3, pc}
+ nop
+_0206B4B0: .word 0x00011EE4
+
+ thumb_func_start FUN_0206B4B4
+FUN_0206B4B4: ; 0x0206B4B4
+ push {r3, lr}
+ add r3, r0, #0x0
+ mov r0, #0x0
+ mvn r0, r0
+ cmp r1, r0
+ bne _0206B4C2
+ ldr r1, [r3, #0x0]
+_0206B4C2:
+ cmp r1, #0x12
+ bhs _0206B4DC
+ add r0, r2, #0x0
+ ldr r2, _0206B4E0 ; =0x00011EE4
+ add r3, r3, r2
+ mov r2, #0x28
+ mul r2, r1
+ add r1, r3, r2
+ mov r2, #0x14
+ bl FUN_02021EF0
+ bl FUN_02022830
+_0206B4DC:
+ pop {r3, pc}
+ nop
+_0206B4E0: .word 0x00011EE4
+
+ thumb_func_start FUN_0206B4E4
+FUN_0206B4E4: ; 0x0206B4E4
+ push {r3-r7, lr}
+ mov r2, #0x0
+ mvn r2, r2
+ cmp r1, r2
+ bne _0206B4F0
+ ldr r1, [r0, #0x0]
+_0206B4F0:
+ cmp r1, #0x12
+ bhs _0206B520
+ add r2, r0, #0x4
+ mov r0, #0xff
+ lsl r0, r0, #0x4
+ mov r4, #0x0
+ mul r0, r1
+ add r6, r4, #0x0
+ add r5, r2, r0
+ mov r7, #0xab
+_0206B504:
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ mov r2, #0x0
+ bl FUN_020672BC
+ cmp r0, #0x0
+ beq _0206B514
+ add r4, r4, #0x1
+_0206B514:
+ add r6, r6, #0x1
+ add r5, #0x88
+ cmp r6, #0x1e
+ blt _0206B504
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+_0206B520:
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0206B528
+FUN_0206B528: ; 0x0206B528
+ push {r3-r7, lr}
+ mov r2, #0x0
+ mvn r2, r2
+ cmp r1, r2
+ bne _0206B534
+ ldr r1, [r0, #0x0]
+_0206B534:
+ cmp r1, #0x12
+ bhs _0206B572
+ add r2, r0, #0x4
+ mov r0, #0xff
+ lsl r0, r0, #0x4
+ mov r4, #0x0
+ mul r0, r1
+ add r6, r4, #0x0
+ add r5, r2, r0
+ mov r7, #0xab
+_0206B548:
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ mov r2, #0x0
+ bl FUN_020672BC
+ cmp r0, #0x0
+ beq _0206B566
+ add r0, r5, #0x0
+ mov r1, #0x4c
+ mov r2, #0x0
+ bl FUN_020672BC
+ cmp r0, #0x0
+ bne _0206B566
+ add r4, r4, #0x1
+_0206B566:
+ add r6, r6, #0x1
+ add r5, #0x88
+ cmp r6, #0x1e
+ blt _0206B548
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+_0206B572:
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206B57C
+FUN_0206B57C: ; 0x0206B57C
+ push {r4-r6, lr}
+ mov r5, #0x0
+ add r6, r0, #0x0
+ add r4, r5, #0x0
+_0206B584:
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ bl FUN_0206B528
+ add r5, r5, #0x1
+ add r4, r4, r0
+ cmp r5, #0x12
+ blo _0206B584
+ add r0, r4, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0206B598
+FUN_0206B598: ; 0x0206B598
+ push {r3-r7, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ add r7, r3, #0x0
+ cmp r4, #0x12
+ blo _0206B5B2
+ mov r0, #0x0
+ mvn r0, r0
+ cmp r4, r0
+ beq _0206B5B2
+ bl ErrorHandling
+_0206B5B2:
+ cmp r6, #0x1e
+ blo _0206B5BA
+ bl ErrorHandling
+_0206B5BA:
+ mov r0, #0x0
+ mvn r0, r0
+ cmp r4, r0
+ bne _0206B5C4
+ ldr r4, [r5, #0x0]
+_0206B5C4:
+ mov r0, #0xff
+ lsl r0, r0, #0x4
+ add r1, r5, #0x4
+ mul r0, r4
+ add r1, r1, r0
+ mov r0, #0x88
+ mul r0, r6
+ add r0, r1, r0
+ ldr r2, [sp, #0x18]
+ add r1, r7, #0x0
+ bl FUN_02067960
+ bl FUN_02022830
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206B5E4
+FUN_0206B5E4: ; 0x0206B5E4
+ push {r4-r6, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ cmp r4, #0x12
+ blo _0206B5FC
+ mov r0, #0x0
+ mvn r0, r0
+ cmp r4, r0
+ beq _0206B5FC
+ bl ErrorHandling
+_0206B5FC:
+ cmp r6, #0x1e
+ blo _0206B604
+ bl ErrorHandling
+_0206B604:
+ mov r0, #0x0
+ mvn r0, r0
+ cmp r4, r0
+ bne _0206B60E
+ ldr r4, [r5, #0x0]
+_0206B60E:
+ mov r0, #0xff
+ lsl r0, r0, #0x4
+ add r1, r5, #0x4
+ mul r0, r4
+ add r1, r1, r0
+ mov r0, #0x88
+ mul r0, r6
+ add r0, r1, r0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0206B620
+FUN_0206B620: ; 0x0206B620
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ cmp r4, #0x8
+ blo _0206B62E
+ bl ErrorHandling
+_0206B62E:
+ ldr r0, _0206B640 ; =0x000121C6
+ mov r1, #0x1
+ ldrb r2, [r5, r0]
+ lsl r1, r4
+ orr r1, r2
+ strb r1, [r5, r0]
+ bl FUN_02022830
+ pop {r3-r5, pc}
+ .balign 4
+_0206B640: .word 0x000121C6
+
+ thumb_func_start FUN_0206B644
+FUN_0206B644: ; 0x0206B644
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ cmp r4, #0x8
+ blo _0206B652
+ bl ErrorHandling
+_0206B652:
+ ldr r0, _0206B664 ; =0x000121C6
+ ldrb r2, [r5, r0]
+ mov r0, #0x1
+ add r1, r0, #0x0
+ lsl r1, r4
+ tst r1, r2
+ bne _0206B662
+ mov r0, #0x0
+_0206B662:
+ pop {r3-r5, pc}
+ .balign 4
+_0206B664: .word 0x000121C6
+
+ thumb_func_start FUN_0206B668
+FUN_0206B668: ; 0x0206B668
+ push {r4-r6, lr}
+ mov r4, #0x0
+ add r6, r0, #0x0
+ add r5, r4, #0x0
+_0206B670:
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ bl FUN_0206B644
+ cmp r0, #0x0
+ beq _0206B67E
+ add r5, r5, #0x1
+_0206B67E:
+ add r4, r4, #0x1
+ cmp r4, #0x8
+ blo _0206B670
+ add r0, r5, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0206B688
+FUN_0206B688: ; 0x0206B688
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ bl FUN_02066A6C
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x5
+ mov r2, #0x0
+ bl FUN_020672BC
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x4c
+ mov r2, #0x0
+ bl FUN_020672BC
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0206B754
+ add r2, r0, #0x0
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ bl FUN_0206B6D4
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ bl FUN_02066A94
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0206B6C8
+FUN_0206B6C8: ; 0x0206B6C8
+ push {r3, lr}
+ bl FUN_020690E4
+ bl FUN_0206B688
+ pop {r3, pc}
+
+ thumb_func_start FUN_0206B6D4
+FUN_0206B6D4: ; 0x0206B6D4
+ cmp r1, #0x1
+ bne _0206B6E8
+ ldr r1, _0206B748 ; =0x000001EA
+ cmp r0, r1
+ bne _0206B6E2
+ add r1, #0xc
+ b _0206B6E4
+_0206B6E2:
+ add r1, #0xb
+_0206B6E4:
+ add r0, r1, #0x0
+ bx lr
+_0206B6E8:
+ cmp r2, #0x0
+ beq _0206B73A
+ ldr r3, _0206B74C ; =0x00000182
+ cmp r0, r3
+ bne _0206B6F8
+ add r3, #0x74
+ add r0, r2, r3
+ bx lr
+_0206B6F8:
+ cmp r0, #0xc9
+ bne _0206B702
+ add r3, #0x78
+ add r0, r2, r3
+ bx lr
+_0206B702:
+ add r1, r3, #0x0
+ add r1, #0x1a
+ cmp r0, r1
+ bne _0206B710
+ add r3, #0x93
+ add r0, r2, r3
+ bx lr
+_0206B710:
+ add r1, r3, #0x0
+ add r1, #0x1b
+ cmp r0, r1
+ bne _0206B71E
+ add r3, #0x95
+ add r0, r2, r3
+ bx lr
+_0206B71E:
+ add r1, r3, #0x0
+ add r1, #0x24
+ cmp r0, r1
+ bne _0206B72C
+ add r3, #0x97
+ add r0, r2, r3
+ bx lr
+_0206B72C:
+ add r1, r3, #0x0
+ add r1, #0x25
+ cmp r0, r1
+ bne _0206B73A
+ add r3, #0x98
+ add r0, r2, r3
+ bx lr
+_0206B73A:
+ ldr r1, _0206B750 ; =0x000001ED
+ cmp r0, r1
+ bls _0206B742
+ mov r0, #0x0
+_0206B742:
+ add r0, r0, #0x7
+ bx lr
+ nop
+_0206B748: .word 0x000001EA
+_0206B74C: .word 0x00000182
+_0206B750: .word 0x000001ED
+
+ thumb_func_start FUN_0206B754
+FUN_0206B754: ; 0x0206B754
+ push {r4, lr}
+ mov r1, #0xad
+ mov r2, #0x0
+ add r4, r0, #0x0
+ bl FUN_020672BC
+ ldr r2, _0206B7B8 ; =0x0000019D
+ cmp r0, r2
+ bhi _0206B784
+ sub r1, r2, #0x1
+ cmp r0, r1
+ blo _0206B774
+ beq _0206B7A4
+ cmp r0, r2
+ beq _0206B7A4
+ b _0206B7B4
+_0206B774:
+ cmp r0, #0xc9
+ bhi _0206B77C
+ beq _0206B79C
+ b _0206B7B4
+_0206B77C:
+ sub r2, #0x1b
+ cmp r0, r2
+ beq _0206B7A4
+ b _0206B7B4
+_0206B784:
+ add r1, r2, #0x0
+ add r1, #0x9
+ cmp r0, r1
+ bhi _0206B794
+ add r2, #0x9
+ cmp r0, r2
+ beq _0206B7A4
+ b _0206B7B4
+_0206B794:
+ add r2, #0xa
+ cmp r0, r2
+ beq _0206B7A4
+ b _0206B7B4
+_0206B79C:
+ add r0, r4, #0x0
+ bl FUN_020690D4
+ pop {r4, pc}
+_0206B7A4:
+ add r0, r4, #0x0
+ mov r1, #0x70
+ mov r2, #0x0
+ bl FUN_020672BC
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ pop {r4, pc}
+_0206B7B4:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+_0206B7B8: .word 0x0000019D
+
+ thumb_func_start FUN_0206B7BC
+FUN_0206B7BC: ; 0x0206B7BC
+ cmp r2, #0x1
+ bne _0206B7CE
+ ldr r1, _0206B830 ; =0x000001EA
+ cmp r0, r1
+ bne _0206B7CA
+ add r0, r1, #0x5
+ b _0206B82A
+_0206B7CA:
+ add r0, r1, #0x4
+ b _0206B82A
+_0206B7CE:
+ ldr r3, _0206B834 ; =0x000001ED
+ cmp r0, r3
+ bls _0206B7D8
+ mov r0, #0x0
+ b _0206B82A
+_0206B7D8:
+ cmp r1, #0x0
+ beq _0206B82A
+ add r2, r3, #0x0
+ sub r2, #0x6b
+ cmp r0, r2
+ bne _0206B7EA
+ add r0, r3, #0x2
+ add r0, r1, r0
+ b _0206B82A
+_0206B7EA:
+ cmp r0, #0xc9
+ bne _0206B7F4
+ add r0, r3, #0x5
+ add r0, r1, r0
+ b _0206B82A
+_0206B7F4:
+ add r2, r3, #0x0
+ sub r2, #0x51
+ cmp r0, r2
+ bne _0206B802
+ add r3, #0x21
+ add r0, r1, r3
+ b _0206B82A
+_0206B802:
+ add r2, r3, #0x0
+ sub r2, #0x50
+ cmp r0, r2
+ bne _0206B810
+ add r3, #0x23
+ add r0, r1, r3
+ b _0206B82A
+_0206B810:
+ add r2, r3, #0x0
+ sub r2, #0x47
+ cmp r0, r2
+ bne _0206B81E
+ add r3, #0x25
+ add r0, r1, r3
+ b _0206B82A
+_0206B81E:
+ add r2, r3, #0x0
+ sub r2, #0x46
+ cmp r0, r2
+ bne _0206B82A
+ add r3, #0x26
+ add r0, r1, r3
+_0206B82A:
+ ldr r1, _0206B838 ; =0x020F8074
+ ldrb r0, [r1, r0]
+ bx lr
+ .balign 4
+_0206B830: .word 0x000001EA
+_0206B834: .word 0x000001ED
+_0206B838: .word 0x020F8074
+
+ thumb_func_start FUN_0206B83C
+FUN_0206B83C: ; 0x0206B83C
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ bl FUN_02066A6C
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0206B754
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x5
+ mov r2, #0x0
+ bl FUN_020672BC
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x4c
+ mov r2, #0x0
+ bl FUN_020672BC
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02066A94
+ ldr r2, [sp, #0x0]
+ add r0, r7, #0x0
+ add r1, r6, #0x0
+ bl FUN_0206B7BC
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206B87C
+FUN_0206B87C: ; 0x0206B87C
+ push {r3, lr}
+ bl FUN_020690E4
+ bl FUN_0206B83C
+ pop {r3, pc}
+
+ thumb_func_start FUN_0206B888
+FUN_0206B888: ; 0x0206B888
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_0206B88C
+FUN_0206B88C: ; 0x0206B88C
+ mov r0, #0x2
+ bx lr
+
+ thumb_func_start FUN_0206B890
+FUN_0206B890: ; 0x0206B890
+ mov r0, #0x4
+ bx lr
+
+ thumb_func_start FUN_0206B894
+FUN_0206B894: ; 0x0206B894
+ mov r0, #0x6
+ bx lr
+
+ thumb_func_start FUN_0206B898
+FUN_0206B898: ; 0x0206B898
+ mov r0, #0x1
+ bx lr
+
+ thumb_func_start FUN_0206B89C
+FUN_0206B89C: ; 0x0206B89C
+ mov r0, #0x3
+ bx lr
+
+ thumb_func_start FUN_0206B8A0
+FUN_0206B8A0: ; 0x0206B8A0
+ mov r0, #0x5
+ bx lr
+
+ thumb_func_start FUN_0206B8A4
+FUN_0206B8A4: ; 0x0206B8A4
+ mov r0, #0x59
+ lsl r0, r0, #0x4
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0206B8AC
+FUN_0206B8AC: ; 0x0206B8AC
+ push {r4, lr}
+ mov r1, #0x59
+ lsl r1, r1, #0x4
+ bl FUN_02016998
+ add r4, r0, #0x0
+ bl FUN_0206B8C0
+ add r0, r4, #0x0
+ pop {r4, pc}
+
+ thumb_func_start FUN_0206B8C0
+FUN_0206B8C0: ; 0x0206B8C0
+ ldr r3, _0206B8C8 ; =FUN_0206B8CC
+ mov r1, #0x6
+ bx r3
+ nop
+_0206B8C8: .word FUN_0206B8CC
+
+ thumb_func_start FUN_0206B8CC
+FUN_0206B8CC: ; 0x0206B8CC
+ push {r4-r6, lr}
+ add r6, r1, #0x0
+ add r5, r0, #0x0
+ cmp r6, #0x6
+ ble _0206B8DA
+ bl ErrorHandling
+_0206B8DA:
+ mov r2, #0x59
+ add r0, r5, #0x0
+ mov r1, #0x0
+ lsl r2, r2, #0x4
+ blx FUN_020DF4A4
+ mov r4, #0x0
+ str r4, [r5, #0x4]
+ str r6, [r5, #0x0]
+ add r5, #0x8
+_0206B8EE:
+ add r0, r5, #0x0
+ bl FUN_02066978
+ add r4, r4, #0x1
+ add r5, #0xec
+ cmp r4, #0x6
+ blt _0206B8EE
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206B900
+FUN_0206B900: ; 0x0206B900
+ push {r4-r5}
+ add r3, r0, #0x0
+ add r2, r1, #0x0
+ ldr r1, [r3, #0x4]
+ ldr r0, [r3, #0x0]
+ cmp r1, r0
+ blt _0206B914
+ mov r0, #0x0
+ pop {r4-r5}
+ bx lr
+_0206B914:
+ mov r0, #0xec
+ mul r0, r1
+ add r5, r3, r0
+ add r5, #0x8
+ mov r4, #0x1d
+_0206B91E:
+ ldmia r2!, {r0-r1}
+ stmia r5!, {r0-r1}
+ sub r4, r4, #0x1
+ bne _0206B91E
+ ldr r0, [r2, #0x0]
+ str r0, [r5, #0x0]
+ ldr r0, [r3, #0x4]
+ add r0, r0, #0x1
+ str r0, [r3, #0x4]
+ mov r0, #0x1
+ pop {r4-r5}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0206B938
+FUN_0206B938: ; 0x0206B938
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ add r4, r1, #0x0
+ bpl _0206B944
+ bl ErrorHandling
+_0206B944:
+ ldr r0, [r7, #0x4]
+ cmp r4, r0
+ blt _0206B94E
+ bl ErrorHandling
+_0206B94E:
+ ldr r0, [r7, #0x0]
+ cmp r4, r0
+ blt _0206B958
+ bl ErrorHandling
+_0206B958:
+ ldr r0, [r7, #0x4]
+ cmp r0, #0x0
+ bgt _0206B962
+ bl ErrorHandling
+_0206B962:
+ ldr r0, [r7, #0x4]
+ sub r0, r0, #0x1
+ cmp r4, r0
+ bge _0206B992
+ mov r0, #0xec
+ mul r0, r4
+ add r6, r7, r0
+_0206B970:
+ add r5, r6, #0x0
+ add r3, r6, #0x0
+ add r5, #0xf4
+ add r3, #0x8
+ mov r2, #0x1d
+_0206B97A:
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ sub r2, r2, #0x1
+ bne _0206B97A
+ ldr r0, [r5, #0x0]
+ add r4, r4, #0x1
+ str r0, [r3, #0x0]
+ ldr r0, [r7, #0x4]
+ add r6, #0xec
+ sub r0, r0, #0x1
+ cmp r4, r0
+ blt _0206B970
+_0206B992:
+ add r1, r7, #0x0
+ mov r0, #0xec
+ add r1, #0x8
+ mul r0, r4
+ add r0, r1, r0
+ bl FUN_02066978
+ ldr r0, [r7, #0x4]
+ sub r0, r0, #0x1
+ str r0, [r7, #0x4]
+ mov r0, #0x1
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206B9AC
+FUN_0206B9AC: ; 0x0206B9AC
+ ldr r0, [r0, #0x4]
+ bx lr
+
+ thumb_func_start FUN_0206B9B0
+FUN_0206B9B0: ; 0x0206B9B0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bpl _0206B9BC
+ bl ErrorHandling
+_0206B9BC:
+ ldr r0, [r5, #0x4]
+ cmp r4, r0
+ blt _0206B9C6
+ bl ErrorHandling
+_0206B9C6:
+ ldr r0, [r5, #0x0]
+ cmp r4, r0
+ blt _0206B9D0
+ bl ErrorHandling
+_0206B9D0:
+ mov r0, #0xec
+ add r5, #0x8
+ mul r0, r4
+ add r0, r5, r0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206B9DC
+FUN_0206B9DC: ; 0x0206B9DC
+ push {r3-r7, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ cmp r4, #0x0
+ bge _0206B9EC
+ bl ErrorHandling
+_0206B9EC:
+ ldr r0, [r5, #0x4]
+ cmp r4, r0
+ blt _0206B9F6
+ bl ErrorHandling
+_0206B9F6:
+ ldr r0, [r5, #0x0]
+ cmp r4, r0
+ blt _0206BA00
+ bl ErrorHandling
+_0206BA00:
+ add r1, r5, #0x0
+ mov r0, #0xec
+ add r1, #0x8
+ mul r0, r4
+ add r4, r1, r0
+ add r0, r4, #0x0
+ mov r1, #0xab
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r7, r0, #0x0
+ add r0, r6, #0x0
+ mov r1, #0xab
+ mov r2, #0x0
+ bl FUN_020671BC
+ sub r2, r7, r0
+ mov r3, #0x1d
+_0206BA24:
+ ldmia r6!, {r0-r1}
+ stmia r4!, {r0-r1}
+ sub r3, r3, #0x1
+ bne _0206BA24
+ ldr r0, [r6, #0x0]
+ str r0, [r4, #0x0]
+ ldr r0, [r5, #0x4]
+ add r0, r0, r2
+ str r0, [r5, #0x4]
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0206BA38
+FUN_0206BA38: ; 0x0206BA38
+ push {r3-r7, lr}
+ add r5, r1, #0x0
+ add r4, r0, #0x0
+ add r6, r2, #0x0
+ cmp r5, #0x0
+ bge _0206BA48
+ bl ErrorHandling
+_0206BA48:
+ ldr r0, [r4, #0x4]
+ cmp r5, r0
+ blt _0206BA52
+ bl ErrorHandling
+_0206BA52:
+ ldr r0, [r4, #0x0]
+ cmp r5, r0
+ blt _0206BA5C
+ bl ErrorHandling
+_0206BA5C:
+ cmp r6, #0x0
+ bge _0206BA64
+ bl ErrorHandling
+_0206BA64:
+ ldr r0, [r4, #0x4]
+ cmp r6, r0
+ blt _0206BA6E
+ bl ErrorHandling
+_0206BA6E:
+ ldr r0, [r4, #0x0]
+ cmp r6, r0
+ blt _0206BA78
+ bl ErrorHandling
+_0206BA78:
+ mov r0, #0x0
+ mov r1, #0xec
+ bl FUN_02016998
+ mov r12, r0
+ add r1, r4, #0x0
+ mov r0, #0xec
+ add r1, #0x8
+ mul r0, r5
+ add r3, r1, r0
+ add r5, r3, #0x0
+ mov r2, r12
+ mov r7, #0x1d
+_0206BA92:
+ ldmia r5!, {r0-r1}
+ stmia r2!, {r0-r1}
+ sub r7, r7, #0x1
+ bne _0206BA92
+ ldr r0, [r5, #0x0]
+ add r4, #0x8
+ str r0, [r2, #0x0]
+ mov r0, #0xec
+ mul r0, r6
+ add r2, r4, r0
+ add r5, r2, #0x0
+ mov r4, #0x1d
+_0206BAAA:
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ sub r4, r4, #0x1
+ bne _0206BAAA
+ ldr r0, [r5, #0x0]
+ mov r4, r12
+ str r0, [r3, #0x0]
+ mov r3, #0x1d
+_0206BABA:
+ ldmia r4!, {r0-r1}
+ stmia r2!, {r0-r1}
+ sub r3, r3, #0x1
+ bne _0206BABA
+ ldr r0, [r4, #0x0]
+ str r0, [r2, #0x0]
+ mov r0, r12
+ bl FUN_02016A18
+ mov r0, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0206BAD0
+FUN_0206BAD0: ; 0x0206BAD0
+ push {r3-r4}
+ add r4, r0, #0x0
+ add r3, r1, #0x0
+ mov r2, #0xb2
+_0206BAD8:
+ ldmia r4!, {r0-r1}
+ stmia r3!, {r0-r1}
+ sub r2, r2, #0x1
+ bne _0206BAD8
+ pop {r3-r4}
+ bx lr
+
+ thumb_func_start FUN_0206BAE4
+FUN_0206BAE4: ; 0x0206BAE4
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ ldr r0, [r6, #0x4]
+ add r7, r1, #0x0
+ mov r4, #0x0
+ cmp r0, #0x0
+ ble _0206BB0E
+ add r5, r6, #0x0
+ add r5, #0x8
+_0206BAF6:
+ add r0, r5, #0x0
+ mov r1, #0x5
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r7, r0
+ beq _0206BB0E
+ ldr r0, [r6, #0x4]
+ add r4, r4, #0x1
+ add r5, #0xec
+ cmp r4, r0
+ blt _0206BAF6
+_0206BB0E:
+ ldr r0, [r6, #0x4]
+ cmp r4, r0
+ beq _0206BB18
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0206BB18:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0206BB1C
+FUN_0206BB1C: ; 0x0206BB1C
+ ldr r3, _0206BB24 ; =FUN_02022610
+ mov r1, #0x2
+ bx r3
+ nop
+_0206BB24: .word FUN_02022610
+
+ thumb_func_start FUN_0206BB28
+FUN_0206BB28: ; 0x0206BB28
+ push {r3, lr}
+ bl FUN_02024DA0
+ bl FUN_0206BB34
+ pop {r3, pc}
+
+ thumb_func_start FUN_0206BB34
+FUN_0206BB34: ; 0x0206BB34
+ push {r3, lr}
+ bl FUN_02024CA4
+ cmp r0, #0x1
+ bne _0206BB42
+ mov r0, #0x1
+ pop {r3, pc}
+_0206BB42:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206BB48
+FUN_0206BB48: ; 0x0206BB48
+ push {r3, lr}
+ cmp r0, #0x0
+ bne _0206BB58
+ lsl r0, r1, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_02069B40
+ add r1, r0, #0x0
+_0206BB58:
+ add r0, r1, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_0206BB5C
+FUN_0206BB5C: ; 0x0206BB5C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_02087A6C
+ mov r1, #0x0
+ add r2, r5, #0x0
+ add r4, r0, #0x0
+ bl FUN_02087A98
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206BB74
+FUN_0206BB74: ; 0x0206BB74
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02087B0C
+ add r0, r4, #0x0
+ bl FUN_02087A84
+ pop {r4, pc}
+
+ thumb_func_start FUN_0206BB84
+FUN_0206BB84: ; 0x0206BB84
+ push {r3-r7, lr}
+ add r7, r1, #0x0
+ add r4, r0, #0x0
+ str r2, [sp, #0x0]
+ add r0, r7, #0x0
+ mov r1, #0x5
+ mov r2, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x10
+ lsr r6, r0, #0x10
+ cmp r4, #0x0
+ bne _0206BBA2
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0206BBA2:
+ add r0, r4, #0x0
+ mov r1, #0x2
+ bl FUN_02023B0C
+ add r5, r0, #0x0
+ add r0, r7, #0x0
+ mov r1, #0xa0
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, r5
+ bls _0206BBBE
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0206BBBE:
+ add r0, r7, #0x0
+ mov r1, #0x4c
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ beq _0206BBD0
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0206BBD0:
+ add r0, r4, #0x0
+ mov r1, #0x4
+ bl FUN_02023B0C
+ cmp r0, #0x0
+ bne _0206BBEA
+ add r0, r6, #0x0
+ bl FUN_020695A8
+ cmp r6, r0
+ beq _0206BBEA
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0206BBEA:
+ add r0, r4, #0x0
+ mov r1, #0x5
+ bl FUN_02023B0C
+ add r5, r0, #0x0
+ beq _0206BC14
+ ldr r0, [sp, #0x0]
+ add r1, r6, #0x0
+ bl FUN_02087B58
+ cmp r5, #0x0
+ ble _0206BC0A
+ cmp r0, r5
+ bge _0206BC14
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0206BC0A:
+ neg r1, r5
+ cmp r0, r1
+ ble _0206BC14
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0206BC14:
+ add r0, r4, #0x0
+ mov r1, #0x7
+ bl FUN_02023B0C
+ mov r1, #0xa
+ add r5, r0, #0x0
+ mul r5, r1
+ beq _0206BC42
+ ldr r0, [sp, #0x0]
+ add r1, r6, #0x0
+ bl FUN_02087B78
+ cmp r5, #0x0
+ ble _0206BC38
+ cmp r0, r5
+ bge _0206BC42
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0206BC38:
+ neg r1, r5
+ cmp r0, r1
+ ble _0206BC42
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0206BC42:
+ add r0, r4, #0x0
+ mov r1, #0xb
+ bl FUN_02023B0C
+ cmp r0, #0x0
+ bne _0206BC5C
+ add r0, r7, #0x0
+ bl FUN_0206A998
+ cmp r0, #0x0
+ beq _0206BC5C
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0206BC5C:
+ mov r0, #0x1
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0206BC60
+FUN_0206BC60: ; 0x0206BC60
+ push {r3-r7, lr}
+ sub sp, #0x30
+ str r0, [sp, #0x0]
+ mov r0, #0x0
+ str r0, [sp, #0x14]
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x0]
+ str r1, [sp, #0x4]
+ str r2, [sp, #0x8]
+ str r3, [sp, #0xc]
+ cmp r0, #0x0
+ bne _0206BC7E
+ ldr r0, [sp, #0x14]
+ add sp, #0x30
+ pop {r3-r7, pc}
+_0206BC7E:
+ ldr r1, [sp, #0x14]
+ add r2, sp, #0x24
+ add r3, sp, #0x18
+ mov r0, #0x0
+_0206BC86:
+ ldr r4, [sp, #0xc]
+ strh r0, [r2, #0x0]
+ strh r0, [r3, #0x0]
+ ldrb r4, [r4, r1]
+ cmp r4, #0x0
+ beq _0206BC98
+ ldr r4, [sp, #0x14]
+ add r4, r4, #0x1
+ str r4, [sp, #0x14]
+_0206BC98:
+ add r1, r1, #0x1
+ add r2, r2, #0x2
+ add r3, r3, #0x2
+ cmp r1, #0x6
+ blt _0206BC86
+ ldr r0, [sp, #0x0]
+ mov r1, #0x1
+ bl FUN_02023B0C
+ ldr r1, [sp, #0x14]
+ cmp r1, r0
+ beq _0206BCB6
+ add sp, #0x30
+ mov r0, #0x4
+ pop {r3-r7, pc}
+_0206BCB6:
+ mov r5, #0x0
+ add r7, sp, #0x24
+ add r6, sp, #0x18
+_0206BCBC:
+ ldr r0, [sp, #0xc]
+ ldrb r1, [r0, r5]
+ cmp r1, #0x0
+ beq _0206BD0A
+ ldr r0, [sp, #0x4]
+ sub r1, r1, #0x1
+ bl FUN_0206B9B0
+ add r4, r0, #0x0
+ ldr r0, [sp, #0x0]
+ ldr r2, [sp, #0x8]
+ add r1, r4, #0x0
+ bl FUN_0206BB84
+ cmp r0, #0x0
+ bne _0206BCE2
+ add sp, #0x30
+ mov r0, #0x5
+ pop {r3-r7, pc}
+_0206BCE2:
+ add r0, r4, #0x0
+ mov r1, #0x5
+ mov r2, #0x0
+ bl FUN_020671BC
+ strh r0, [r7, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0x6
+ mov r2, #0x0
+ bl FUN_020671BC
+ strh r0, [r6, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0xa0
+ mov r2, #0x0
+ bl FUN_020671BC
+ ldr r1, [sp, #0x10]
+ add r0, r1, r0
+ str r0, [sp, #0x10]
+_0206BD0A:
+ add r5, r5, #0x1
+ add r7, r7, #0x2
+ add r6, r6, #0x2
+ cmp r5, #0x6
+ blt _0206BCBC
+ ldr r0, [sp, #0x0]
+ mov r1, #0x3
+ bl FUN_02023B0C
+ ldr r1, [sp, #0x10]
+ cmp r1, r0
+ ble _0206BD2C
+ cmp r0, #0x0
+ beq _0206BD2C
+ add sp, #0x30
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0206BD2C:
+ ldr r0, [sp, #0x0]
+ mov r1, #0xa
+ bl FUN_02023B0C
+ cmp r0, #0x0
+ bne _0206BD70
+ ldr r0, [sp, #0x14]
+ cmp r0, #0x1
+ ble _0206BD70
+ add r4, sp, #0x24
+ mov r0, #0x0
+ add r2, r4, #0x0
+_0206BD44:
+ add r3, r0, #0x1
+ cmp r3, #0x6
+ bge _0206BD68
+ ldrh r6, [r4, #0x0]
+ lsl r1, r3, #0x1
+ add r5, r2, r1
+_0206BD50:
+ ldrh r1, [r5, #0x0]
+ cmp r6, r1
+ bne _0206BD60
+ cmp r6, #0x0
+ beq _0206BD60
+ add sp, #0x30
+ mov r0, #0x2
+ pop {r3-r7, pc}
+_0206BD60:
+ add r3, r3, #0x1
+ add r5, r5, #0x2
+ cmp r3, #0x6
+ blt _0206BD50
+_0206BD68:
+ add r0, r0, #0x1
+ add r4, r4, #0x2
+ cmp r0, #0x5
+ blt _0206BD44
+_0206BD70:
+ ldr r0, [sp, #0x0]
+ mov r1, #0x9
+ bl FUN_02023B0C
+ cmp r0, #0x0
+ bne _0206BDC0
+ ldr r0, [sp, #0x14]
+ cmp r0, #0x1
+ ble _0206BDC0
+ add r2, sp, #0x18
+ mov r5, #0x0
+ add r7, sp, #0x24
+ mov r12, r2
+_0206BD8A:
+ add r6, r5, #0x1
+ cmp r6, #0x6
+ bge _0206BDB6
+ lsl r1, r6, #0x1
+ mov r0, r12
+ add r3, r0, r1
+ ldrh r4, [r2, #0x0]
+ ldrh r0, [r7, #0x0]
+_0206BD9A:
+ ldrh r1, [r3, #0x0]
+ cmp r4, r1
+ bne _0206BDAE
+ cmp r0, #0x0
+ beq _0206BDAE
+ cmp r4, #0x0
+ beq _0206BDAE
+ add sp, #0x30
+ mov r0, #0x3
+ pop {r3-r7, pc}
+_0206BDAE:
+ add r6, r6, #0x1
+ add r3, r3, #0x2
+ cmp r6, #0x6
+ blt _0206BD9A
+_0206BDB6:
+ add r5, r5, #0x1
+ add r2, r2, #0x2
+ add r7, r7, #0x2
+ cmp r5, #0x5
+ blt _0206BD8A
+_0206BDC0:
+ mov r0, #0x0
+ add sp, #0x30
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206BDC8
+FUN_0206BDC8: ; 0x0206BDC8
+ push {r4-r7, lr}
+ sub sp, #0x1c
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x30]
+ str r1, [sp, #0x10]
+ lsl r0, r0, #0x1
+ ldr r1, [sp, #0xc]
+ str r0, [sp, #0x18]
+ ldrh r0, [r1, r0]
+ add r6, r2, #0x0
+ str r3, [sp, #0x14]
+ ldr r5, [sp, #0x38]
+ ldr r7, [sp, #0x34]
+ cmp r0, #0x0
+ beq _0206BE12
+ ldr r0, [sp, #0x18]
+ ldrh r0, [r6, r0]
+ cmp r0, #0x0
+ bne _0206BE12
+ ldr r1, [sp, #0x10]
+ ldr r0, [sp, #0x18]
+ ldrh r1, [r1, r0]
+ add r0, r3, #0x0
+ sub r0, r0, r1
+ str r0, [sp, #0x14]
+ bpl _0206BE02
+ add sp, #0x1c
+ mov r0, #0x0
+ pop {r4-r7, pc}
+_0206BE02:
+ sub r7, r7, #0x1
+ bne _0206BE0C
+ add sp, #0x1c
+ mov r0, #0x1
+ pop {r4-r7, pc}
+_0206BE0C:
+ ldr r0, [sp, #0x18]
+ mov r1, #0x1
+ strh r1, [r6, r0]
+_0206BE12:
+ ldr r0, [sp, #0x30]
+ add r4, r0, #0x1
+ cmp r4, r5
+ bge _0206BE3C
+_0206BE1A:
+ str r4, [sp, #0x0]
+ str r7, [sp, #0x4]
+ ldr r0, [sp, #0xc]
+ ldr r1, [sp, #0x10]
+ ldr r3, [sp, #0x14]
+ add r2, r6, #0x0
+ str r5, [sp, #0x8]
+ bl FUN_0206BDC8
+ cmp r0, #0x0
+ beq _0206BE36
+ add sp, #0x1c
+ mov r0, #0x1
+ pop {r4-r7, pc}
+_0206BE36:
+ add r4, r4, #0x1
+ cmp r4, r5
+ blt _0206BE1A
+_0206BE3C:
+ ldr r1, [sp, #0x18]
+ mov r0, #0x0
+ strh r0, [r6, r1]
+ add sp, #0x1c
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206BE48
+FUN_0206BE48: ; 0x0206BE48
+ push {r4-r7, lr}
+ sub sp, #0x54
+ str r0, [sp, #0xc]
+ add r0, r1, #0x0
+ str r1, [sp, #0x10]
+ str r2, [sp, #0x14]
+ bl FUN_0206B9AC
+ str r0, [sp, #0x20]
+ add r6, r0, #0x0
+ add r0, sp, #0x30
+ mov r1, #0x0
+ mov r2, #0xc
+ blx MI_CpuFill8
+ ldr r0, [sp, #0x20]
+ mov r7, #0x0
+ cmp r0, #0x0
+ ble _0206BEB2
+ add r4, sp, #0x48
+ add r5, sp, #0x3c
+_0206BE72:
+ ldr r0, [sp, #0x10]
+ add r1, r7, #0x0
+ bl FUN_0206B9B0
+ str r0, [sp, #0x24]
+ mov r1, #0x5
+ mov r2, #0x0
+ bl FUN_020671BC
+ strh r0, [r4, #0x0]
+ ldr r0, [sp, #0x24]
+ mov r1, #0xa0
+ mov r2, #0x0
+ bl FUN_020671BC
+ strh r0, [r5, #0x0]
+ ldr r0, [sp, #0xc]
+ ldr r1, [sp, #0x24]
+ ldr r2, [sp, #0x14]
+ bl FUN_0206BB84
+ cmp r0, #0x0
+ bne _0206BEA6
+ mov r0, #0x0
+ strh r0, [r4, #0x0]
+ sub r6, r6, #0x1
+_0206BEA6:
+ ldr r0, [sp, #0x20]
+ add r7, r7, #0x1
+ add r4, r4, #0x2
+ add r5, r5, #0x2
+ cmp r7, r0
+ blt _0206BE72
+_0206BEB2:
+ ldr r0, [sp, #0xc]
+ mov r1, #0xa
+ bl FUN_02023B0C
+ cmp r0, #0x0
+ bne _0206BF32
+ ldr r0, [sp, #0x20]
+ cmp r0, #0x1
+ ble _0206BF32
+ mov r0, #0x0
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x20]
+ sub r0, r0, #0x1
+ str r0, [sp, #0x28]
+ cmp r0, #0x0
+ ble _0206BF32
+ add r0, sp, #0x3c
+ add r3, sp, #0x48
+ str r0, [sp, #0x1c]
+ str r3, [sp, #0x2c]
+ mov r12, r0
+_0206BEDC:
+ ldr r0, [sp, #0x18]
+ add r2, r0, #0x1
+ ldr r0, [sp, #0x20]
+ cmp r2, r0
+ bge _0206BF1E
+ ldr r1, [sp, #0x2c]
+ lsl r0, r2, #0x1
+ add r4, r1, r0
+ mov r1, r12
+ add r5, r1, r0
+ ldr r0, [sp, #0x1c]
+ ldrh r7, [r0, #0x0]
+_0206BEF4:
+ ldrh r1, [r3, #0x0]
+ ldrh r0, [r4, #0x0]
+ cmp r1, r0
+ bne _0206BF12
+ cmp r1, #0x0
+ beq _0206BF12
+ ldrh r0, [r5, #0x0]
+ cmp r7, r0
+ bls _0206BF0C
+ mov r0, #0x0
+ strh r0, [r3, #0x0]
+ b _0206BF10
+_0206BF0C:
+ mov r0, #0x0
+ strh r0, [r4, #0x0]
+_0206BF10:
+ sub r6, r6, #0x1
+_0206BF12:
+ ldr r0, [sp, #0x20]
+ add r2, r2, #0x1
+ add r4, r4, #0x2
+ add r5, r5, #0x2
+ cmp r2, r0
+ blt _0206BEF4
+_0206BF1E:
+ ldr r0, [sp, #0x1c]
+ add r3, r3, #0x2
+ add r0, r0, #0x2
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x18]
+ add r1, r0, #0x1
+ ldr r0, [sp, #0x28]
+ str r1, [sp, #0x18]
+ cmp r1, r0
+ blt _0206BEDC
+_0206BF32:
+ ldr r0, [sp, #0xc]
+ mov r1, #0x1
+ bl FUN_02023B0C
+ add r7, r0, #0x0
+ cmp r6, r7
+ bge _0206BF46
+ add sp, #0x54
+ mov r0, #0x4
+ pop {r4-r7, pc}
+_0206BF46:
+ ldr r0, [sp, #0xc]
+ mov r1, #0x3
+ bl FUN_02023B0C
+ add r5, r0, #0x0
+ bne _0206BF58
+ add sp, #0x54
+ mov r0, #0x0
+ pop {r4-r7, pc}
+_0206BF58:
+ ldr r0, [sp, #0x20]
+ mov r4, #0x0
+ cmp r0, #0x0
+ ble _0206BF88
+ add r6, sp, #0x48
+_0206BF62:
+ str r4, [sp, #0x0]
+ ldr r0, [sp, #0x20]
+ str r7, [sp, #0x4]
+ str r0, [sp, #0x8]
+ add r0, r6, #0x0
+ add r1, sp, #0x3c
+ add r2, sp, #0x30
+ add r3, r5, #0x0
+ bl FUN_0206BDC8
+ cmp r0, #0x0
+ beq _0206BF80
+ add sp, #0x54
+ mov r0, #0x0
+ pop {r4-r7, pc}
+_0206BF80:
+ ldr r0, [sp, #0x20]
+ add r4, r4, #0x1
+ cmp r4, r0
+ blt _0206BF62
+_0206BF88:
+ mov r0, #0x1
+ add sp, #0x54
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206BF90
+FUN_0206BF90: ; 0x0206BF90
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ mov r0, #0x5
+ mov r1, #0x8
+ bl FUN_02016998
+ add r4, r0, #0x0
+ mov r0, #0x5
+ mov r1, #0x8
+ bl FUN_02016998
+ add r6, r0, #0x0
+ ldr r0, _0206BFE4 ; =0x020F828C
+ mov r1, #0xc
+ add r2, r5, #0x0
+ bl FUN_0202D8D0
+ str r5, [r4, #0x0]
+ mov r0, #0x0
+ strb r0, [r4, #0x4]
+ str r5, [r6, #0x0]
+ strb r0, [r6, #0x4]
+ add r0, r5, #0x0
+ add r1, r4, #0x4
+ bl FUN_02231344
+ add r0, r5, #0x0
+ add r1, r6, #0x4
+ bl FUN_02231350
+ ldr r0, _0206BFE8 ; =FUN_0206C550
+ add r1, r4, #0x0
+ mov r2, #0x0
+ bl FUN_0200CA44
+ ldr r0, _0206BFEC ; =FUN_0206C5DC
+ add r1, r6, #0x0
+ mov r2, #0x0
+ bl FUN_0200CA44
+ pop {r4-r6, pc}
+ nop
+_0206BFE4: .word 0x020F828C
+_0206BFE8: .word FUN_0206C550
+_0206BFEC: .word FUN_0206C5DC
+
+ thumb_func_start FUN_0206BFF0
+FUN_0206BFF0: ; 0x0206BFF0
+ ldr r3, _0206BFFC ; =FUN_0202D8D0
+ add r2, r0, #0x0
+ ldr r0, _0206C000 ; =0x020F828C
+ mov r1, #0xc
+ bx r3
+ nop
+_0206BFFC: .word FUN_0202D8D0
+_0206C000: .word 0x020F828C
+
+ thumb_func_start FUN_0206C004
+FUN_0206C004: ; 0x0206C004
+ mov r0, #0x4
+ bx lr
+
+ thumb_func_start FUN_0206C008
+FUN_0206C008: ; 0x0206C008
+ ldr r3, _0206C00C ; =FUN_02023924
+ bx r3
+ .balign 4
+_0206C00C: .word FUN_02023924
+
+ thumb_func_start FUN_0206C010
+FUN_0206C010: ; 0x0206C010
+ ldr r3, _0206C014 ; =FUN_0206B8A4
+ bx r3
+ .balign 4
+_0206C014: .word FUN_0206B8A4
+
+ thumb_func_start FUN_0206C018
+FUN_0206C018: ; 0x0206C018
+ mov r0, #0xfa
+ lsl r0, r0, #0x2
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0206C020
+FUN_0206C020: ; 0x0206C020
+ mov r0, #0x34
+ bx lr
+
+ thumb_func_start FUN_0206C024
+FUN_0206C024: ; 0x0206C024
+ ldr r3, [r1, #0x0]
+ mov r1, #0x80
+ ldr r2, [r3, #0x0]
+ tst r1, r2
+ beq _0206C038
+ lsl r0, r0, #0x3
+ add r0, r3, r0
+ add r0, #0xf8
+ ldr r0, [r0, #0x0]
+ bx lr
+_0206C038:
+ lsl r0, r0, #0x2
+ add r0, r3, r0
+ add r0, #0xf8
+ ldr r0, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0206C044
+FUN_0206C044: ; 0x0206C044
+ ldr r1, [r1, #0x0]
+ mov r2, #0x80
+ ldr r3, [r1, #0x0]
+ tst r2, r3
+ beq _0206C05A
+ lsl r2, r0, #0x1
+ mov r0, #0x34
+ add r1, #0x28
+ mul r0, r2
+ add r0, r1, r0
+ bx lr
+_0206C05A:
+ mov r2, #0x34
+ add r1, #0x28
+ mul r2, r0
+ add r0, r1, r2
+ bx lr
+
+ thumb_func_start FUN_0206C064
+FUN_0206C064: ; 0x0206C064
+ ldr r3, [r1, #0x0]
+ mov r1, #0x80
+ ldr r2, [r3, #0x0]
+ tst r1, r2
+ beq _0206C076
+ lsl r0, r0, #0x3
+ add r0, r3, r0
+ ldr r0, [r0, #0x4]
+ bx lr
+_0206C076:
+ lsl r0, r0, #0x2
+ add r0, r3, r0
+ ldr r0, [r0, #0x4]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0206C080
+FUN_0206C080: ; 0x0206C080
+ ldr r3, [r1, #0x0]
+ mov r1, #0x80
+ ldr r2, [r3, #0x0]
+ tst r2, r1
+ beq _0206C094
+ lsl r0, r0, #0x3
+ add r0, r3, r0
+ add r1, #0x98
+ ldr r0, [r0, r1]
+ bx lr
+_0206C094:
+ lsl r0, r0, #0x2
+ add r0, r3, r0
+ add r1, #0x98
+ ldr r0, [r0, r1]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0206C0A0
+FUN_0206C0A0: ; 0x0206C0A0
+ ldr r0, [r1, #0x0]
+ add r0, #0x5c
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0206C0A8
+FUN_0206C0A8: ; 0x0206C0A8
+ ldr r0, [r1, #0x0]
+ add r0, #0xc4
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0206C0B0
+FUN_0206C0B0: ; 0x0206C0B0
+ ldr r0, [r1, #0x0]
+ ldr r0, [r0, #0x8]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0206C0B8
+FUN_0206C0B8: ; 0x0206C0B8
+ ldr r0, [r1, #0x0]
+ ldr r0, [r0, #0x10]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0206C0C0
+FUN_0206C0C0: ; 0x0206C0C0
+ lsl r0, r0, #0x2
+ add r0, r1, r0
+ ldr r0, [r0, #0x10]
+ bx lr
+
+ thumb_func_start FUN_0206C0C8
+FUN_0206C0C8: ; 0x0206C0C8
+ push {r4-r7, lr}
+ sub sp, #0xc
+ str r0, [sp, #0x0]
+ str r1, [sp, #0x4]
+ mov r0, #0x5
+ mov r1, #0x4
+ str r2, [sp, #0x8]
+ add r7, r3, #0x0
+ bl FUN_02016998
+ add r6, r0, #0x0
+ ldr r0, [sp, #0x0]
+ bl FUN_022300D4
+ add r5, r0, #0x0
+ ldr r0, [sp, #0x0]
+ bl FUN_022300F4
+ add r4, r0, #0x0
+ ldr r0, [sp, #0x0]
+ bl FUN_02230100
+ mov r12, r0
+ add r0, sp, #0x10
+ ldrh r3, [r4, #0x0]
+ ldrb r0, [r0, #0x10]
+ add r1, r3, #0x5
+ add r2, r1, r0
+ mov r1, #0x1
+ lsl r1, r1, #0xc
+ cmp r2, r1
+ bls _0206C110
+ mov r1, r12
+ strh r3, [r1, #0x0]
+ mov r1, #0x0
+ strh r1, [r4, #0x0]
+_0206C110:
+ ldr r1, [sp, #0x4]
+ mov r3, #0x0
+ strb r1, [r6, #0x0]
+ ldr r1, [sp, #0x8]
+ strb r1, [r6, #0x1]
+ add r1, sp, #0x10
+ ldrb r1, [r1, #0x10]
+ strh r1, [r6, #0x2]
+_0206C120:
+ ldrb r2, [r6, r3]
+ ldrh r1, [r4, #0x0]
+ add r3, r3, #0x1
+ strb r2, [r5, r1]
+ ldrh r1, [r4, #0x0]
+ add r1, r1, #0x1
+ strh r1, [r4, #0x0]
+ cmp r3, #0x4
+ blo _0206C120
+ mov r3, #0x0
+ cmp r0, #0x0
+ ble _0206C14A
+_0206C138:
+ ldrb r2, [r7, r3]
+ ldrh r1, [r4, #0x0]
+ add r3, r3, #0x1
+ strb r2, [r5, r1]
+ ldrh r1, [r4, #0x0]
+ add r1, r1, #0x1
+ strh r1, [r4, #0x0]
+ cmp r3, r0
+ blt _0206C138
+_0206C14A:
+ add r0, r6, #0x0
+ bl FUN_02016A18
+ add sp, #0xc
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_0206C154
+FUN_0206C154: ; 0x0206C154
+ push {r3-r7, lr}
+ str r3, [sp, #0x0]
+ add r0, r3, #0x0
+ add r5, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_022300DC
+ add r7, r0, #0x0
+ ldr r0, [sp, #0x0]
+ bl FUN_02230118
+ add r4, r0, #0x0
+ ldr r0, [sp, #0x0]
+ bl FUN_02230124
+ ldrh r1, [r4, #0x0]
+ add r2, r1, r5
+ add r3, r2, #0x1
+ mov r2, #0x1
+ lsl r2, r2, #0xc
+ cmp r3, r2
+ ble _0206C186
+ strh r1, [r0, #0x0]
+ mov r0, #0x0
+ strh r0, [r4, #0x0]
+_0206C186:
+ mov r0, #0x0
+ cmp r5, #0x0
+ ble _0206C19E
+_0206C18C:
+ ldrb r2, [r6, r0]
+ ldrh r1, [r4, #0x0]
+ add r0, r0, #0x1
+ strb r2, [r7, r1]
+ ldrh r1, [r4, #0x0]
+ add r1, r1, #0x1
+ strh r1, [r4, #0x0]
+ cmp r0, r5
+ blt _0206C18C
+_0206C19E:
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0206C1A0
+FUN_0206C1A0: ; 0x0206C1A0
+ push {r0-r3}
+ push {r3, lr}
+ bl FUN_02030C58
+ mov r1, #0x42
+ lsl r1, r1, #0x2
+ cmp r0, r1
+ beq _0206C1BA
+ mov r0, #0x0
+ pop {r3}
+ pop {r3}
+ add sp, #0x10
+ bx r3
+_0206C1BA:
+ mov r0, #0x33
+ bl FUN_020315D8
+ cmp r0, #0x0
+ bne _0206C1CE
+ mov r0, #0x0
+ pop {r3}
+ pop {r3}
+ add sp, #0x10
+ bx r3
+_0206C1CE:
+ mov r0, #0x18
+ add r1, sp, #0xc
+ mov r2, #0x4
+ bl FUN_02030ADC
+ pop {r3}
+ pop {r3}
+ add sp, #0x10
+ bx r3
+
+ thumb_func_start FUN_0206C1E0
+FUN_0206C1E0: ; 0x0206C1E0
+ ldr r1, [r3, #0x0]
+ lsl r0, r0, #0x2
+ add r1, r1, r0
+ mov r0, #0x5f
+ ldr r2, [r2, #0x0]
+ lsl r0, r0, #0x2
+ str r2, [r1, r0]
+ ldr r0, _0206C1F8 ; =0x00001020
+ ldrb r1, [r3, r0]
+ add r1, r1, #0x1
+ strb r1, [r3, r0]
+ bx lr
+ .balign 4
+_0206C1F8: .word 0x00001020
+
+ thumb_func_start FUN_0206C1FC
+FUN_0206C1FC: ; 0x0206C1FC
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02030C58
+ mov r1, #0x42
+ lsl r1, r1, #0x2
+ cmp r0, r1
+ beq _0206C210
+ mov r0, #0x0
+ pop {r4, pc}
+_0206C210:
+ ldr r0, [r4, #0x0]
+ add r4, #0x20
+ add r0, #0xf8
+ ldr r0, [r0, #0x0]
+ add r1, r4, #0x0
+ bl FUN_0202393C
+ mov r0, #0x1
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206C224
+FUN_0206C224: ; 0x0206C224
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02030C58
+ mov r1, #0x42
+ lsl r1, r1, #0x2
+ cmp r0, r1
+ beq _0206C238
+ mov r0, #0x0
+ pop {r4, pc}
+_0206C238:
+ mov r0, #0x34
+ bl FUN_020315D8
+ cmp r0, #0x0
+ bne _0206C246
+ mov r0, #0x0
+ pop {r4, pc}
+_0206C246:
+ bl FUN_02023924
+ add r4, #0x20
+ add r2, r0, #0x0
+ mov r0, #0x19
+ add r1, r4, #0x0
+ bl FUN_02030A78
+ pop {r4, pc}
+
+ thumb_func_start FUN_0206C258
+FUN_0206C258: ; 0x0206C258
+ ldr r0, _0206C264 ; =0x00001020
+ ldrb r1, [r3, r0]
+ add r1, r1, #0x1
+ strb r1, [r3, r0]
+ bx lr
+ nop
+_0206C264: .word 0x00001020
+
+ thumb_func_start FUN_0206C268
+FUN_0206C268: ; 0x0206C268
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02030C58
+ mov r1, #0x42
+ lsl r1, r1, #0x2
+ cmp r0, r1
+ beq _0206C27C
+ mov r0, #0x0
+ pop {r4, pc}
+_0206C27C:
+ ldr r3, [r4, #0x0]
+ add r4, #0x20
+ add r3, #0x28
+ mov r2, #0x6
+_0206C284:
+ ldmia r3!, {r0-r1}
+ stmia r4!, {r0-r1}
+ sub r2, r2, #0x1
+ bne _0206C284
+ ldr r0, [r3, #0x0]
+ str r0, [r4, #0x0]
+ mov r0, #0x1
+ pop {r4, pc}
+
+ thumb_func_start FUN_0206C294
+FUN_0206C294: ; 0x0206C294
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02030C58
+ mov r1, #0x42
+ lsl r1, r1, #0x2
+ cmp r0, r1
+ beq _0206C2A8
+ mov r0, #0x0
+ pop {r4, pc}
+_0206C2A8:
+ mov r0, #0x35
+ bl FUN_020315D8
+ cmp r0, #0x0
+ bne _0206C2B6
+ mov r0, #0x0
+ pop {r4, pc}
+_0206C2B6:
+ add r4, #0x20
+ mov r0, #0x1a
+ add r1, r4, #0x0
+ mov r2, #0x34
+ bl FUN_02030A78
+ pop {r4, pc}
+
+ thumb_func_start FUN_0206C2C4
+FUN_0206C2C4: ; 0x0206C2C4
+ ldr r0, _0206C2D0 ; =0x00001020
+ ldrb r1, [r3, r0]
+ add r1, r1, #0x1
+ strb r1, [r3, r0]
+ bx lr
+ nop
+_0206C2D0: .word 0x00001020
+
+ thumb_func_start FUN_0206C2D4
+FUN_0206C2D4: ; 0x0206C2D4
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02030C58
+ mov r1, #0x42
+ lsl r1, r1, #0x2
+ cmp r0, r1
+ beq _0206C2E8
+ mov r0, #0x0
+ pop {r4, pc}
+_0206C2E8:
+ ldr r0, [r4, #0x0]
+ add r4, #0x20
+ ldr r0, [r0, #0x4]
+ add r1, r4, #0x0
+ bl FUN_0206BAD0
+ mov r0, #0x1
+ pop {r4, pc}
+
+ thumb_func_start FUN_0206C2F8
+FUN_0206C2F8: ; 0x0206C2F8
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02030C58
+ mov r1, #0x42
+ lsl r1, r1, #0x2
+ cmp r0, r1
+ beq _0206C30C
+ mov r0, #0x0
+ pop {r4, pc}
+_0206C30C:
+ mov r0, #0x36
+ bl FUN_020315D8
+ cmp r0, #0x0
+ bne _0206C31A
+ mov r0, #0x0
+ pop {r4, pc}
+_0206C31A:
+ bl FUN_0206B8A4
+ add r4, #0x20
+ add r2, r0, #0x0
+ mov r0, #0x1b
+ add r1, r4, #0x0
+ bl FUN_02030A78
+ pop {r4, pc}
+
+ thumb_func_start FUN_0206C32C
+FUN_0206C32C: ; 0x0206C32C
+ ldr r0, _0206C338 ; =0x00001020
+ ldrb r1, [r3, r0]
+ add r1, r1, #0x1
+ strb r1, [r3, r0]
+ bx lr
+ nop
+_0206C338: .word 0x00001020
+
+ thumb_func_start FUN_0206C33C
+FUN_0206C33C: ; 0x0206C33C
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02030C58
+ mov r1, #0x42
+ lsl r1, r1, #0x2
+ cmp r0, r1
+ beq _0206C350
+ mov r0, #0x0
+ pop {r4, pc}
+_0206C350:
+ ldr r2, [r4, #0x0]
+ add r1, #0x10
+ add r0, r4, #0x0
+ ldr r1, [r2, r1]
+ add r0, #0x20
+ bl FUN_02029F9C
+ mov r0, #0x1
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206C364
+FUN_0206C364: ; 0x0206C364
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02030C58
+ mov r1, #0x42
+ lsl r1, r1, #0x2
+ cmp r0, r1
+ beq _0206C378
+ mov r0, #0x0
+ pop {r4, pc}
+_0206C378:
+ mov r0, #0x37
+ bl FUN_020315D8
+ cmp r0, #0x0
+ bne _0206C386
+ mov r0, #0x0
+ pop {r4, pc}
+_0206C386:
+ add r4, #0x20
+ mov r2, #0xfa
+ mov r0, #0x1c
+ add r1, r4, #0x0
+ lsl r2, r2, #0x2
+ bl FUN_02030A78
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206C398
+FUN_0206C398: ; 0x0206C398
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ bl FUN_02030C58
+ mov r1, #0x42
+ lsl r1, r1, #0x2
+ cmp r0, r1
+ beq _0206C3AC
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0206C3AC:
+ ldr r4, [r5, #0x0]
+ mov r0, #0x80
+ ldr r1, [r4, #0x0]
+ tst r0, r1
+ beq _0206C3BE
+ bl FUN_02031190
+ lsl r0, r0, #0x3
+ b _0206C3C4
+_0206C3BE:
+ bl FUN_02031190
+ lsl r0, r0, #0x2
+_0206C3C4:
+ add r0, r4, r0
+ mov r1, #0x53
+ add r0, #0xf8
+ lsl r1, r1, #0x2
+ add r2, r5, #0x0
+ ldr r0, [r0, #0x0]
+ ldr r1, [r4, r1]
+ add r2, #0x20
+ bl FUN_0206C66C
+ mov r4, #0x0
+ mov r6, #0x5
+ mov r7, #0x88
+_0206C3DE:
+ add r0, r6, #0x0
+ add r1, r7, #0x0
+ bl FUN_02016998
+ str r0, [r5, #0x10]
+ add r4, r4, #0x1
+ add r5, r5, #0x4
+ cmp r4, #0x4
+ blt _0206C3DE
+ mov r0, #0x1
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0206C3F4
+FUN_0206C3F4: ; 0x0206C3F4
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02030C58
+ mov r1, #0x42
+ lsl r1, r1, #0x2
+ cmp r0, r1
+ beq _0206C408
+ mov r0, #0x0
+ pop {r4, pc}
+_0206C408:
+ mov r0, #0x38
+ bl FUN_020315D8
+ cmp r0, #0x0
+ bne _0206C416
+ mov r0, #0x0
+ pop {r4, pc}
+_0206C416:
+ add r4, #0x20
+ mov r2, #0xfa
+ mov r0, #0x21
+ add r1, r4, #0x0
+ lsl r2, r2, #0x2
+ bl FUN_02030A78
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206C428
+FUN_0206C428: ; 0x0206C428
+ ldr r0, _0206C434 ; =0x00001020
+ ldrb r1, [r3, r0]
+ add r1, r1, #0x1
+ strb r1, [r3, r0]
+ bx lr
+ nop
+_0206C434: .word 0x00001020
+
+ thumb_func_start FUN_0206C438
+FUN_0206C438: ; 0x0206C438
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_02030C58
+ mov r1, #0x42
+ lsl r1, r1, #0x2
+ cmp r0, r1
+ beq _0206C44E
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0206C44E:
+ ldr r1, [r5, #0x0]
+ mov r0, #0x34
+ mul r0, r4
+ add r3, r1, r0
+ add r3, #0x28
+ add r5, #0x20
+ mov r2, #0x6
+_0206C45C:
+ ldmia r3!, {r0-r1}
+ stmia r5!, {r0-r1}
+ sub r2, r2, #0x1
+ bne _0206C45C
+ ldr r0, [r3, #0x0]
+ str r0, [r5, #0x0]
+ mov r0, #0x1
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0206C46C
+FUN_0206C46C: ; 0x0206C46C
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_02030C58
+ mov r1, #0x42
+ lsl r1, r1, #0x2
+ cmp r0, r1
+ beq _0206C484
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_0206C484:
+ lsl r0, r6, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_020315D8
+ cmp r0, #0x0
+ bne _0206C494
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_0206C494:
+ cmp r4, #0x1
+ bne _0206C4A6
+ add r5, #0x20
+ mov r0, #0x1d
+ add r1, r5, #0x0
+ mov r2, #0x34
+ bl FUN_02030A78
+ pop {r4-r6, pc}
+_0206C4A6:
+ add r5, #0x20
+ mov r0, #0x1e
+ add r1, r5, #0x0
+ mov r2, #0x34
+ bl FUN_02030A78
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0206C4B4
+FUN_0206C4B4: ; 0x0206C4B4
+ ldr r0, _0206C4C0 ; =0x00001020
+ ldrb r1, [r3, r0]
+ add r1, r1, #0x1
+ strb r1, [r3, r0]
+ bx lr
+ nop
+_0206C4C0: .word 0x00001020
+
+ thumb_func_start FUN_0206C4C4
+FUN_0206C4C4: ; 0x0206C4C4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_02030C58
+ mov r1, #0x42
+ lsl r1, r1, #0x2
+ cmp r0, r1
+ beq _0206C4DA
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0206C4DA:
+ ldr r1, [r5, #0x0]
+ lsl r0, r4, #0x2
+ add r0, r1, r0
+ add r5, #0x20
+ ldr r0, [r0, #0x4]
+ add r1, r5, #0x0
+ bl FUN_0206BAD0
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206C4F0
+FUN_0206C4F0: ; 0x0206C4F0
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_02030C58
+ mov r1, #0x42
+ lsl r1, r1, #0x2
+ cmp r0, r1
+ beq _0206C508
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_0206C508:
+ lsl r0, r6, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_020315D8
+ cmp r0, #0x0
+ bne _0206C518
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_0206C518:
+ cmp r4, #0x1
+ bne _0206C52E
+ bl FUN_0206B8A4
+ add r5, #0x20
+ add r2, r0, #0x0
+ mov r0, #0x1f
+ add r1, r5, #0x0
+ bl FUN_02030A78
+ pop {r4-r6, pc}
+_0206C52E:
+ bl FUN_0206B8A4
+ add r5, #0x20
+ add r2, r0, #0x0
+ mov r0, #0x20
+ add r1, r5, #0x0
+ bl FUN_02030A78
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0206C540
+FUN_0206C540: ; 0x0206C540
+ ldr r0, _0206C54C ; =0x00001020
+ ldrb r1, [r3, r0]
+ add r1, r1, #0x1
+ strb r1, [r3, r0]
+ bx lr
+ nop
+_0206C54C: .word 0x00001020
+
+ thumb_func_start FUN_0206C550
+FUN_0206C550: ; 0x0206C550
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r1, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [r5, #0x0]
+ bl FUN_022300D4
+ add r6, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_022300E8
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_022300F4
+ str r0, [sp, #0x4]
+ ldr r0, [r5, #0x0]
+ bl FUN_02230100
+ add r7, r0, #0x0
+ ldrb r0, [r5, #0x4]
+ cmp r0, #0x0
+ beq _0206C582
+ cmp r0, #0xff
+ b _0206C5CC
+_0206C582:
+ bl FUN_02030C58
+ mov r1, #0x42
+ lsl r1, r1, #0x2
+ cmp r0, r1
+ bne _0206C5D8
+ ldr r0, [sp, #0x4]
+ ldrh r1, [r4, #0x0]
+ ldrh r0, [r0, #0x0]
+ cmp r1, r0
+ beq _0206C5D8
+ ldrh r0, [r7, #0x0]
+ cmp r1, r0
+ bne _0206C5A4
+ mov r0, #0x0
+ strh r0, [r4, #0x0]
+ strh r0, [r7, #0x0]
+_0206C5A4:
+ ldrh r1, [r4, #0x0]
+ add r0, r1, #0x2
+ ldrb r2, [r6, r0]
+ add r0, r1, #0x3
+ ldrb r0, [r6, r0]
+ add r1, r6, r1
+ lsl r0, r0, #0x8
+ orr r0, r2
+ add r5, r0, #0x4
+ mov r0, #0x17
+ add r2, r5, #0x0
+ bl FUN_02030ADC
+ cmp r0, #0x1
+ bne _0206C5D8
+ ldrh r0, [r4, #0x0]
+ add sp, #0x8
+ add r0, r0, r5
+ strh r0, [r4, #0x0]
+ pop {r3-r7, pc}
+_0206C5CC:
+ add r0, r5, #0x0
+ bl FUN_02016A18
+ ldr r0, [sp, #0x0]
+ bl FUN_0200CAB4
+_0206C5D8:
+ add sp, #0x8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0206C5DC
+FUN_0206C5DC: ; 0x0206C5DC
+ push {r3-r7, lr}
+ add r5, r1, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [r5, #0x0]
+ bl FUN_022300DC
+ add r6, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_0223010C
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_02230118
+ add r7, r0, #0x0
+ ldr r0, [r5, #0x0]
+ bl FUN_02230124
+ ldrb r1, [r5, #0x4]
+ cmp r1, #0x0
+ beq _0206C60A
+ cmp r1, #0xff
+ b _0206C63E
+_0206C60A:
+ ldrh r1, [r4, #0x0]
+ ldrh r2, [r7, #0x0]
+ cmp r1, r2
+ beq _0206C64A
+ ldrh r2, [r0, #0x0]
+ cmp r1, r2
+ bne _0206C61E
+ mov r1, #0x0
+ strh r1, [r4, #0x0]
+ strh r1, [r0, #0x0]
+_0206C61E:
+ ldrh r1, [r4, #0x0]
+ ldr r0, [r5, #0x0]
+ add r1, r6, r1
+ bl FUN_022567E0
+ ldrh r0, [r4, #0x0]
+ add r1, r0, #0x2
+ ldrb r2, [r6, r1]
+ add r1, r0, #0x3
+ ldrb r1, [r6, r1]
+ lsl r1, r1, #0x8
+ orr r1, r2
+ add r1, r1, #0x4
+ add r0, r0, r1
+ strh r0, [r4, #0x0]
+ pop {r3-r7, pc}
+_0206C63E:
+ add r0, r5, #0x0
+ bl FUN_02016A18
+ ldr r0, [sp, #0x0]
+ bl FUN_0200CAB4
+_0206C64A:
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0206C64C
+FUN_0206C64C: ; 0x0206C64C
+ push {r4, lr}
+ add r4, r3, #0x0
+ add r0, r4, #0x0
+ mov r1, #0xff
+ bl FUN_0223135C
+ add r0, r4, #0x0
+ mov r1, #0xff
+ bl FUN_02231368
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_02231374
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206C66C
+FUN_0206C66C: ; 0x0206C66C
+ push {r4-r6, lr}
+ add r4, r2, #0x0
+ add r6, r0, #0x0
+ add r5, r1, #0x0
+ bl FUN_0202398C
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl StringCopy
+ add r0, r6, #0x0
+ bl FUN_020239BC
+ str r0, [r4, #0x10]
+ add r0, r6, #0x0
+ bl FUN_02023A70
+ strb r0, [r4, #0x14]
+ add r0, r6, #0x0
+ bl FUN_02023A68
+ strb r0, [r4, #0x15]
+ add r0, r6, #0x0
+ bl FUN_020239CC
+ strb r0, [r4, #0x16]
+ mov r0, #0x0
+ add r1, r4, #0x0
+_0206C6A4:
+ ldr r2, [r5, #0x10]
+ str r2, [r1, #0x18]
+ ldrb r3, [r5, #0x15]
+ add r2, r4, r0
+ add r2, #0x58
+ strb r3, [r2, #0x0]
+ add r2, r4, r0
+ ldrb r3, [r5, #0x14]
+ add r2, #0x68
+ add r1, r1, #0x4
+ strb r3, [r2, #0x0]
+ add r2, r4, r0
+ ldrb r3, [r5, #0x16]
+ add r2, #0x78
+ add r0, r0, #0x1
+ add r5, #0x88
+ strb r3, [r2, #0x0]
+ cmp r0, #0x10
+ blt _0206C6A4
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0206C6CC
+FUN_0206C6CC: ; 0x0206C6CC
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ add r4, r3, #0x0
+ bl FUN_02031190
+ cmp r5, r0
+ beq _0206C6EE
+ mov r0, #0x53
+ ldr r1, [r4, #0x0]
+ lsl r0, r0, #0x2
+ ldr r0, [r1, r0]
+ add r1, r6, #0x0
+ mov r2, #0x1
+ mov r3, #0x5
+ bl FUN_02025520
+_0206C6EE:
+ ldr r0, _0206C6F8 ; =0x00001020
+ ldrb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, r0]
+ pop {r4-r6, pc}
+ .balign 4
+_0206C6F8: .word 0x00001020
+
+ thumb_func_start FUN_0206C6FC
+FUN_0206C6FC: ; 0x0206C6FC
+ mov r0, #0x88
+ bx lr
+
+ thumb_func_start FUN_0206C700
+FUN_0206C700: ; 0x0206C700
+ push {r4-r7, lr}
+ sub sp, #0x24
+ ldr r5, [sp, #0x54]
+ add r6, r0, #0x0
+ str r1, [sp, #0x14]
+ add r0, r5, #0x0
+ mov r1, #0x80
+ add r7, r2, #0x0
+ str r3, [sp, #0x18]
+ bl FUN_02016998
+ add r4, r0, #0x0
+ mov r0, #0x0
+ add r1, r4, #0x0
+ mov r2, #0x80
+ blx MIi_CpuClearFast
+ bl FUN_020222F0
+ str r0, [sp, #0x1c]
+ bl FUN_020222E8
+ add r1, r0, #0x0
+ ldr r2, [sp, #0x1c]
+ mov r0, #0x0
+ blx MIi_CpuClear16
+ bl FUN_02022300
+ str r0, [sp, #0x20]
+ bl FUN_020222F8
+ add r1, r0, #0x0
+ ldr r2, [sp, #0x20]
+ mov r0, #0x0
+ blx MIi_CpuClear16
+ ldr r0, [sp, #0x14]
+ str r6, [r4, #0x24]
+ mov r1, #0x5
+ mov r2, #0x0
+ str r0, [r4, #0x28]
+ bl FUN_020671BC
+ add r1, r4, #0x0
+ add r1, #0x60
+ strh r0, [r1, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x62
+ strh r7, [r0, #0x0]
+ str r5, [r4, #0x5c]
+ add r0, r5, #0x0
+ bl FUN_02002FD0
+ str r0, [r4, #0x14]
+ mov r1, #0x1
+ bl FUN_020038F0
+ mov r2, #0x2
+ ldr r0, [r4, #0x14]
+ mov r1, #0x0
+ lsl r2, r2, #0x8
+ add r3, r5, #0x0
+ bl FUN_02003008
+ mov r1, #0x1
+ ldr r0, [r4, #0x14]
+ lsl r2, r1, #0x9
+ add r3, r5, #0x0
+ bl FUN_02003008
+ mov r2, #0x7
+ ldr r0, [r4, #0x14]
+ mov r1, #0x2
+ lsl r2, r2, #0x6
+ add r3, r5, #0x0
+ bl FUN_02003008
+ mov r2, #0x2
+ ldr r0, [r4, #0x14]
+ mov r1, #0x3
+ lsl r2, r2, #0x8
+ add r3, r5, #0x0
+ bl FUN_02003008
+ add r0, r5, #0x0
+ bl FUN_02016B94
+ str r0, [r4, #0x0]
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_02018FF4
+ str r0, [r4, #0x4]
+ ldr r0, [sp, #0x18]
+ str r0, [r4, #0x2c]
+ add r0, r5, #0x0
+ bl FUN_0206DE78
+ str r0, [r4, #0x34]
+ bl FUN_0206DE24
+ bl FUN_0206DE4C
+ bl FUN_0206DF18
+ ldr r1, [r4, #0x0]
+ add r0, r4, #0x0
+ bl FUN_0206D9B4
+ mov r0, #0x13
+ str r0, [sp, #0x0]
+ mov r0, #0x1b
+ str r0, [sp, #0x4]
+ mov r0, #0x4
+ str r0, [sp, #0x8]
+ mov r0, #0xb
+ str r0, [sp, #0xc]
+ mov r0, #0x1f
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #0x0]
+ ldr r1, [r4, #0x4]
+ mov r2, #0x1
+ mov r3, #0x2
+ bl FUN_02019064
+ ldr r0, [r4, #0x4]
+ mov r1, #0xff
+ bl FUN_02019620
+ ldr r0, [r4, #0x4]
+ mov r1, #0x0
+ mov r2, #0x1
+ mov r3, #0xa
+ bl FUN_0200D0BC
+ add r0, r5, #0x0
+ bl FUN_02006D98
+ str r0, [r4, #0x18]
+ add r0, r5, #0x0
+ mov r1, #0x1
+ mov r2, #0x0
+ bl FUN_02014BF4
+ str r0, [r4, #0x44]
+ add r0, r4, #0x0
+ mov r2, #0x51
+ mov r1, #0x0
+ add r0, #0x67
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0x2
+ add r0, #0x66
+ strb r1, [r0, #0x0]
+ mov r0, #0x1
+ mov r1, #0x1a
+ lsl r2, r2, #0x2
+ add r3, r5, #0x0
+ bl FUN_0200A86C
+ str r0, [r4, #0x8]
+ add r0, r5, #0x0
+ bl FUN_0200AA80
+ str r0, [r4, #0xc]
+ mov r0, #0x5
+ lsl r0, r0, #0x6
+ add r1, r5, #0x0
+ bl FUN_020219F4
+ str r0, [r4, #0x10]
+ add r0, r5, #0x0
+ mov r1, #0x30
+ bl FUN_02016998
+ str r0, [r4, #0x3c]
+ ldr r1, [r4, #0x3c]
+ mov r0, #0x0
+ mov r2, #0x30
+ blx MIi_CpuClearFast
+ ldr r1, [sp, #0x38]
+ ldr r0, [r4, #0x3c]
+ str r1, [r0, #0x2c]
+ ldr r0, [sp, #0x3c]
+ str r0, [r4, #0x48]
+ ldr r0, [sp, #0x40]
+ str r0, [r4, #0x4c]
+ ldr r0, [sp, #0x44]
+ str r0, [r4, #0x50]
+ ldr r0, [sp, #0x48]
+ str r0, [r4, #0x54]
+ ldr r0, [sp, #0x4c]
+ str r0, [r4, #0x78]
+ ldr r0, [sp, #0x50]
+ str r0, [r4, #0x7c]
+ add r0, r4, #0x0
+ bl FUN_0206DC80
+ mov r0, #0x10
+ str r0, [sp, #0x0]
+ mov r0, #0x0
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ ldr r0, [r4, #0x14]
+ ldr r2, _0206C8E4 ; =0x0000FFFF
+ mov r1, #0xf
+ mov r3, #0x1
+ bl FUN_02003210
+ mov r2, #0x0
+ str r2, [sp, #0x0]
+ ldr r0, [r4, #0x18]
+ mov r1, #0x10
+ add r3, r2, #0x0
+ bl FUN_02007E98
+ ldr r0, [r4, #0x14]
+ mov r1, #0x0
+ mov r2, #0xb
+ add r3, r5, #0x0
+ bl FUN_020142EC
+ mov r1, #0x1
+ str r0, [r4, #0x58]
+ bl FUN_020143A8
+ ldr r0, _0206C8E8 ; =FUN_0206C8EC
+ add r1, r4, #0x0
+ mov r2, #0x0
+ bl FUN_0200CA44
+ mov r0, #0x1
+ bl FUN_02002B60
+ bl FUN_02033E74
+ add r0, r4, #0x0
+ add sp, #0x24
+ pop {r4-r7, pc}
+ nop
+_0206C8E4: .word 0x0000FFFF
+_0206C8E8: .word FUN_0206C8EC
+
+ thumb_func_start FUN_0206C8EC
+FUN_0206C8EC: ; 0x0206C8EC
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0206C9C0
+ ldr r0, [r5, #0x18]
+ bl FUN_02006ED4
+ bl FUN_0206DF58
+ mov r0, #0x1
+ mov r1, #0x0
+ bl FUN_020222B4
+ add r5, #0x67
+ ldrb r0, [r5, #0x0]
+ cmp r0, #0x0
+ beq _0206C918
+ add r0, r4, #0x0
+ bl FUN_0200CAB4
+_0206C918:
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206C91C
+FUN_0206C91C: ; 0x0206C91C
+ add r0, #0x67
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x1
+ bne _0206C928
+ mov r0, #0x1
+ bx lr
+_0206C928:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_0206C92C
+FUN_0206C92C: ; 0x0206C92C
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x0
+ add r1, r0, #0x0
+ bl FUN_0200E3A0
+ mov r0, #0x1
+ mov r1, #0x0
+ bl FUN_0200E3A0
+ mov r0, #0x0
+ add r1, r0, #0x0
+ bl FUN_02015F10
+ ldr r0, [r4, #0x4]
+ mov r1, #0x1
+ bl FUN_020191A4
+ ldr r0, [r4, #0x14]
+ mov r1, #0x0
+ bl FUN_02003038
+ ldr r0, [r4, #0x14]
+ mov r1, #0x1
+ bl FUN_02003038
+ ldr r0, [r4, #0x14]
+ mov r1, #0x2
+ bl FUN_02003038
+ ldr r0, [r4, #0x14]
+ mov r1, #0x3
+ bl FUN_02003038
+ ldr r0, [r4, #0x14]
+ bl FUN_02002FEC
+ ldr r0, [r4, #0x18]
+ bl FUN_020072E8
+ ldr r0, [r4, #0x44]
+ bl FUN_02014C28
+ ldr r0, [r4, #0x34]
+ bl FUN_020223BC
+ ldr r0, [r4, #0x0]
+ bl FUN_0206DC48
+ ldr r0, [r4, #0x8]
+ bl FUN_0200A8B8
+ ldr r0, [r4, #0xc]
+ bl FUN_0200AB18
+ ldr r0, [r4, #0x10]
+ bl FUN_02016A18
+ ldr r0, [r4, #0x3c]
+ bl FUN_02016A18
+ ldr r0, [r4, #0x58]
+ bl FUN_020143D0
+ ldr r0, [r4, #0x0]
+ bl FUN_02016A18
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0x0
+ bl FUN_02002B60
+ pop {r4, pc}
+
+ thumb_func_start FUN_0206C9C0
+FUN_0206C9C0: ; 0x0206C9C0
+ push {r3-r4, lr}
+ sub sp, #0x54
+ add r4, r0, #0x0
+ add r0, #0x70
+ ldrb r1, [r0, #0x0]
+ cmp r1, #0x0
+ beq _0206CA9C
+ mov r0, #0x1
+ tst r0, r1
+ ldr r0, [r4, #0x1c]
+ bne _0206CA2E
+ add r2, r4, #0x0
+ add r2, #0x71
+ ldrb r2, [r2, #0x0]
+ mov r1, #0xc
+ neg r2, r2
+ bl FUN_020079E0
+ add r2, r4, #0x0
+ add r2, #0x71
+ ldrb r2, [r2, #0x0]
+ ldr r0, [r4, #0x1c]
+ mov r1, #0xd
+ neg r2, r2
+ bl FUN_020079E0
+ add r2, r4, #0x0
+ add r2, #0x71
+ ldrb r2, [r2, #0x0]
+ ldr r0, [r4, #0x20]
+ mov r1, #0xc
+ bl FUN_020079E0
+ add r2, r4, #0x0
+ add r2, #0x71
+ ldrb r2, [r2, #0x0]
+ ldr r0, [r4, #0x20]
+ mov r1, #0xd
+ bl FUN_020079E0
+ ldr r0, [r4, #0x1c]
+ mov r1, #0xc
+ bl FUN_0200782C
+ cmp r0, #0x0
+ bne _0206CA9C
+ add r0, r4, #0x0
+ add r0, #0x70
+ ldrb r1, [r0, #0x0]
+ mov r0, #0x1
+ eor r1, r0
+ add r0, r4, #0x0
+ add r0, #0x70
+ strb r1, [r0, #0x0]
+ b _0206CA9C
+_0206CA2E:
+ add r2, r4, #0x0
+ add r2, #0x71
+ ldrb r2, [r2, #0x0]
+ mov r1, #0xc
+ bl FUN_020079E0
+ add r2, r4, #0x0
+ add r2, #0x71
+ ldrb r2, [r2, #0x0]
+ ldr r0, [r4, #0x1c]
+ mov r1, #0xd
+ bl FUN_020079E0
+ add r2, r4, #0x0
+ add r2, #0x71
+ ldrb r2, [r2, #0x0]
+ ldr r0, [r4, #0x20]
+ mov r1, #0xc
+ neg r2, r2
+ bl FUN_020079E0
+ add r2, r4, #0x0
+ add r2, #0x71
+ ldrb r2, [r2, #0x0]
+ ldr r0, [r4, #0x20]
+ mov r1, #0xd
+ neg r2, r2
+ bl FUN_020079E0
+ ldr r0, [r4, #0x20]
+ mov r1, #0xc
+ bl FUN_0200782C
+ cmp r0, #0x0
+ bne _0206CA9C
+ add r0, r4, #0x0
+ add r0, #0x70
+ ldrb r1, [r0, #0x0]
+ mov r0, #0x1
+ eor r1, r0
+ add r0, r4, #0x0
+ add r0, #0x70
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x71
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x40
+ bhs _0206CA9C
+ add r0, r4, #0x0
+ add r0, #0x71
+ ldrb r0, [r0, #0x0]
+ lsl r1, r0, #0x1
+ add r0, r4, #0x0
+ add r0, #0x71
+ strb r1, [r0, #0x0]
+_0206CA9C:
+ ldr r1, [r4, #0x7c]
+ mov r0, #0x1
+ tst r0, r1
+ beq _0206CAD6
+ add r0, r4, #0x0
+ add r0, #0x64
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x8
+ bne _0206CAD6
+ ldr r0, _0206CE0C ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x2
+ tst r0, r1
+ beq _0206CAD6
+ mov r3, #0x0
+ str r3, [sp, #0x0]
+ mov r0, #0x10
+ str r0, [sp, #0x4]
+ ldr r0, _0206CE10 ; =0x00007FFF
+ ldr r2, _0206CE14 ; =0x0000F3FF
+ str r0, [sp, #0x8]
+ ldr r0, [r4, #0x14]
+ mov r1, #0xf
+ bl FUN_02003210
+ add r0, r4, #0x0
+ mov r1, #0x29
+ add r0, #0x64
+ strb r1, [r0, #0x0]
+_0206CAD6:
+ add r0, r4, #0x0
+ add r0, #0x64
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x2d
+ bhi _0206CBA8
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0206CAEC: ; jump table (using 16-bit offset)
+ .short _0206CB48 - _0206CAEC - 2; case 0
+ .short _0206CB70 - _0206CAEC - 2; case 1
+ .short _0206CB9E - _0206CAEC - 2; case 2
+ .short _0206CBCC - _0206CAEC - 2; case 3
+ .short _0206CBE4 - _0206CAEC - 2; case 4
+ .short _0206CC66 - _0206CAEC - 2; case 5
+ .short _0206CCB2 - _0206CAEC - 2; case 6
+ .short _0206CD34 - _0206CAEC - 2; case 7
+ .short _0206CDC8 - _0206CAEC - 2; case 8
+ .short _0206CE8A - _0206CAEC - 2; case 9
+ .short _0206CF18 - _0206CAEC - 2; case 10
+ .short _0206CF7E - _0206CAEC - 2; case 11
+ .short _0206CFFA - _0206CAEC - 2; case 12
+ .short _0206D06E - _0206CAEC - 2; case 13
+ .short _0206D0E8 - _0206CAEC - 2; case 14
+ .short _0206D188 - _0206CAEC - 2; case 15
+ .short _0206D12C - _0206CAEC - 2; case 16
+ .short _0206D188 - _0206CAEC - 2; case 17
+ .short _0206D162 - _0206CAEC - 2; case 18
+ .short _0206D188 - _0206CAEC - 2; case 19
+ .short _0206D1C0 - _0206CAEC - 2; case 20
+ .short _0206D20E - _0206CAEC - 2; case 21
+ .short _0206D260 - _0206CAEC - 2; case 22
+ .short _0206D2E2 - _0206CAEC - 2; case 23
+ .short _0206D360 - _0206CAEC - 2; case 24
+ .short _0206D480 - _0206CAEC - 2; case 25
+ .short _0206D188 - _0206CAEC - 2; case 26
+ .short _0206D4A6 - _0206CAEC - 2; case 27
+ .short _0206D188 - _0206CAEC - 2; case 28
+ .short _0206D4F8 - _0206CAEC - 2; case 29
+ .short _0206D188 - _0206CAEC - 2; case 30
+ .short _0206D51E - _0206CAEC - 2; case 31
+ .short _0206D398 - _0206CAEC - 2; case 32
+ .short _0206D188 - _0206CAEC - 2; case 33
+ .short _0206D3CC - _0206CAEC - 2; case 34
+ .short _0206D3EE - _0206CAEC - 2; case 35
+ .short _0206D44E - _0206CAEC - 2; case 36
+ .short _0206D5AA - _0206CAEC - 2; case 37
+ .short _0206D5C8 - _0206CAEC - 2; case 38
+ .short _0206D5F4 - _0206CAEC - 2; case 39
+ .short _0206D628 - _0206CAEC - 2; case 40
+ .short _0206D648 - _0206CAEC - 2; case 41
+ .short _0206D6EE - _0206CAEC - 2; case 42
+ .short _0206D748 - _0206CAEC - 2; case 43
+ .short _0206D79C - _0206CAEC - 2; case 44
+ .short _0206D7F6 - _0206CAEC - 2; case 45
+_0206CB48:
+ add r0, r4, #0x0
+ add r0, #0x66
+ ldrb r0, [r0, #0x0]
+ sub r1, r0, #0x1
+ add r0, r4, #0x0
+ add r0, #0x66
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x66
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _0206CBA8
+ add r0, r4, #0x0
+ add r0, #0x64
+ ldrb r0, [r0, #0x0]
+ add r4, #0x64
+ add sp, #0x54
+ add r0, r0, #0x1
+ strb r0, [r4, #0x0]
+ pop {r3-r4, pc}
+_0206CB70:
+ mov r0, #0x0
+ bl FUN_0200E394
+ mov r0, #0x1
+ bl FUN_0200E394
+ ldr r0, [r4, #0x58]
+ mov r1, #0x0
+ bl FUN_020143A8
+ ldr r1, [r4, #0x7c]
+ mov r0, #0x2
+ tst r1, r0
+ beq _0206CB94
+ add r4, #0x64
+ add sp, #0x54
+ strb r0, [r4, #0x0]
+ pop {r3-r4, pc}
+_0206CB94:
+ mov r0, #0x4
+ add r4, #0x64
+ add sp, #0x54
+ strb r0, [r4, #0x0]
+ pop {r3-r4, pc}
+_0206CB9E:
+ ldr r0, [r4, #0x14]
+ bl FUN_020038E4
+ cmp r0, #0x0
+ beq _0206CBAC
+_0206CBA8:
+ bl _0206D806
+_0206CBAC:
+ mov r1, #0xe5
+ add r0, r4, #0x0
+ lsl r1, r1, #0x2
+ bl FUN_0206DD6C
+ add r1, r4, #0x0
+ add r1, #0x65
+ strb r0, [r1, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x64
+ ldrb r0, [r0, #0x0]
+ add r4, #0x64
+ add sp, #0x54
+ add r0, r0, #0x1
+ strb r0, [r4, #0x0]
+ pop {r3-r4, pc}
+_0206CBCC:
+ add r0, r4, #0x0
+ add r0, #0x65
+ ldrb r0, [r0, #0x0]
+ bl FUN_0201BD70
+ cmp r0, #0x0
+ bne _0206CCCA
+ mov r0, #0x4
+ add r4, #0x64
+ add sp, #0x54
+ strb r0, [r4, #0x0]
+ pop {r3-r4, pc}
+_0206CBE4:
+ ldr r0, [r4, #0x14]
+ bl FUN_020038E4
+ cmp r0, #0x0
+ bne _0206CCCA
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ add r2, r4, #0x0
+ add r2, #0x60
+ ldrh r2, [r2, #0x0]
+ ldr r0, [r4, #0x44]
+ ldr r1, [r4, #0x1c]
+ mov r3, #0x2
+ bl FUN_02069038
+ add r1, r4, #0x0
+ add r1, #0x60
+ ldrh r1, [r1, #0x0]
+ add r0, sp, #0x40
+ bl FUN_02069010
+ ldr r0, [r4, #0x1c]
+ add r1, sp, #0x40
+ bl FUN_0200737C
+ ldr r0, [r4, #0x1c]
+ mov r1, #0x0
+ bl FUN_02007314
+ add r0, r4, #0x0
+ add r0, #0x60
+ ldrh r0, [r0, #0x0]
+ bl FUN_02005578
+ ldr r0, [r4, #0x28]
+ bl FUN_020690E4
+ add r2, r0, #0x0
+ ldr r0, [r4, #0xc]
+ mov r1, #0x0
+ bl FUN_0200ACF8
+ ldr r1, [r4, #0x7c]
+ mov r0, #0x2
+ tst r0, r1
+ beq _0206CC4E
+ ldr r1, _0206CE18 ; =0x00000395
+ add r0, r4, #0x0
+ bl FUN_0206DD6C
+ b _0206CC56
+_0206CC4E:
+ ldr r1, _0206CE1C ; =0x00000393
+ add r0, r4, #0x0
+ bl FUN_0206DD6C
+_0206CC56:
+ add r1, r4, #0x0
+ add r1, #0x65
+ strb r0, [r1, #0x0]
+ mov r0, #0x5
+ add r4, #0x64
+ add sp, #0x54
+ strb r0, [r4, #0x0]
+ pop {r3-r4, pc}
+_0206CC66:
+ add r0, r4, #0x0
+ add r0, #0x65
+ ldrb r0, [r0, #0x0]
+ bl FUN_0201BD70
+ cmp r0, #0x0
+ bne _0206CCCA
+ bl FUN_02005670
+ cmp r0, #0x0
+ bne _0206CCCA
+ ldr r0, [r4, #0x44]
+ mov r1, #0x0
+ bl FUN_02014D7C
+ cmp r0, #0x1
+ bne _0206CCCA
+ ldr r0, [r4, #0x1c]
+ bl FUN_02007390
+ cmp r0, #0x0
+ bne _0206CCCA
+ ldr r0, [r4, #0x58]
+ mov r1, #0x1
+ bl FUN_020143A8
+ ldr r0, _0206CE20 ; =0x00000475
+ bl FUN_020051F4
+ add r0, r4, #0x0
+ mov r1, #0x14
+ add r0, #0x66
+ strb r1, [r0, #0x0]
+ mov r0, #0x6
+ add r4, #0x64
+ add sp, #0x54
+ strb r0, [r4, #0x0]
+ pop {r3-r4, pc}
+_0206CCB2:
+ add r0, r4, #0x0
+ add r0, #0x66
+ ldrb r0, [r0, #0x0]
+ sub r1, r0, #0x1
+ add r0, r4, #0x0
+ add r0, #0x66
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x66
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _0206CCCE
+_0206CCCA:
+ bl _0206D806
+_0206CCCE:
+ ldr r0, [r4, #0x5c]
+ str r0, [sp, #0x10]
+ mov r0, #0x0
+ str r0, [sp, #0x14]
+ add r0, sp, #0x10
+ bl FUN_0206E07C
+ mov r1, #0x0
+ str r0, [r4, #0x30]
+ bl FUN_0206E0AC
+ ldr r0, _0206CE10 ; =0x00007FFF
+ mov r1, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x1c]
+ mov r2, #0x10
+ mov r3, #0x4
+ bl FUN_02007E68
+ ldr r0, _0206CE10 ; =0x00007FFF
+ mov r1, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x20]
+ mov r2, #0x10
+ mov r3, #0x4
+ bl FUN_02007E68
+ ldr r0, [r4, #0x5c]
+ bl FUN_02016AF8
+ mov r1, #0x2
+ lsl r1, r1, #0xe
+ cmp r0, r1
+ bhi _0206CD16
+ bl ErrorHandling
+_0206CD16:
+ ldr r0, _0206CE24 ; =0x000005F9
+ bl FUN_020054C8
+ add r0, r4, #0x0
+ mov r1, #0x28
+ add r0, #0x66
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x64
+ ldrb r0, [r0, #0x0]
+ add r4, #0x64
+ add sp, #0x54
+ add r0, r0, #0x1
+ strb r0, [r4, #0x0]
+ pop {r3-r4, pc}
+_0206CD34:
+ add r0, r4, #0x0
+ add r0, #0x73
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x28
+ bhs _0206CD5A
+ add r0, r4, #0x0
+ add r0, #0x73
+ ldrb r0, [r0, #0x0]
+ add r1, r0, #0x2
+ add r0, r4, #0x0
+ add r0, #0x73
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x75
+ ldrb r0, [r0, #0x0]
+ sub r1, r0, #0x2
+ add r0, r4, #0x0
+ add r0, #0x75
+ strb r1, [r0, #0x0]
+_0206CD5A:
+ add r0, r4, #0x0
+ add r0, #0x66
+ ldrb r0, [r0, #0x0]
+ sub r1, r0, #0x1
+ add r0, r4, #0x0
+ add r0, #0x66
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x66
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _0206CDD2
+ ldr r0, [r4, #0x30]
+ mov r1, #0x1
+ bl FUN_0206E0AC
+ ldr r0, [r4, #0x30]
+ mov r1, #0x2
+ bl FUN_0206E0AC
+ ldr r0, [r4, #0x30]
+ mov r1, #0x7
+ bl FUN_0206E0AC
+ ldr r0, [r4, #0x30]
+ mov r1, #0x8
+ bl FUN_0206E0AC
+ ldr r0, [r4, #0x30]
+ mov r1, #0x9
+ bl FUN_0206E0AC
+ ldr r0, [r4, #0x30]
+ mov r1, #0xb
+ bl FUN_0206E0AC
+ ldr r0, _0206CE28 ; =0x000005FA
+ bl FUN_020054C8
+ add r0, r4, #0x0
+ mov r1, #0x10
+ add r0, #0x70
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0x8
+ add r0, #0x71
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x64
+ ldrb r0, [r0, #0x0]
+ add r4, #0x64
+ add sp, #0x54
+ add r0, r0, #0x1
+ strb r0, [r4, #0x0]
+ pop {r3-r4, pc}
+_0206CDC8:
+ ldr r0, [r4, #0x30]
+ bl FUN_0206E0C8
+ cmp r0, #0x0
+ beq _0206CDD6
+_0206CDD2:
+ bl _0206D806
+_0206CDD6:
+ ldr r0, [r4, #0x30]
+ mov r1, #0x3
+ bl FUN_0206E0AC
+ ldr r0, [r4, #0x30]
+ mov r1, #0x4
+ bl FUN_0206E0AC
+ ldr r0, [r4, #0x30]
+ mov r1, #0x5
+ bl FUN_0206E0AC
+ ldr r0, [r4, #0x30]
+ mov r1, #0x6
+ bl FUN_0206E0AC
+ ldr r0, [r4, #0x30]
+ mov r1, #0xa
+ bl FUN_0206E0AC
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x10
+ str r0, [sp, #0x4]
+ ldr r0, _0206CE10 ; =0x00007FFF
+ ldr r2, _0206CE14 ; =0x0000F3FF
+ b _0206CE2C
+ .balign 4
+_0206CE0C: .word 0x021C48B8
+_0206CE10: .word 0x00007FFF
+_0206CE14: .word 0x0000F3FF
+_0206CE18: .word 0x00000395
+_0206CE1C: .word 0x00000393
+_0206CE20: .word 0x00000475
+_0206CE24: .word 0x000005F9
+_0206CE28: .word 0x000005FA
+_0206CE2C:
+ str r0, [sp, #0x8]
+ ldr r0, [r4, #0x14]
+ mov r1, #0xf
+ mov r3, #0x2
+ bl FUN_02003210
+ ldr r0, [r4, #0x1c]
+ mov r1, #0xc
+ mov r2, #0x0
+ bl FUN_02007558
+ ldr r0, [r4, #0x1c]
+ mov r1, #0xd
+ mov r2, #0x0
+ bl FUN_02007558
+ mov r1, #0xc
+ add r2, r1, #0x0
+ ldr r0, [r4, #0x20]
+ add r2, #0xf4
+ bl FUN_02007558
+ mov r1, #0xd
+ add r2, r1, #0x0
+ ldr r0, [r4, #0x20]
+ add r2, #0xf3
+ bl FUN_02007558
+ ldr r0, _0206D1C8 ; =0x000005FB
+ bl FUN_020054C8
+ add r0, r4, #0x0
+ mov r1, #0x0
+ add r0, #0x70
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0x8
+ add r0, #0x66
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x64
+ ldrb r0, [r0, #0x0]
+ add r4, #0x64
+ add sp, #0x54
+ add r0, r0, #0x1
+ strb r0, [r4, #0x0]
+ pop {r3-r4, pc}
+_0206CE8A:
+ add r0, r4, #0x0
+ add r0, #0x73
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _0206CEB0
+ add r0, r4, #0x0
+ add r0, #0x73
+ ldrb r0, [r0, #0x0]
+ sub r1, r0, #0x2
+ add r0, r4, #0x0
+ add r0, #0x73
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x75
+ ldrb r0, [r0, #0x0]
+ add r1, r0, #0x2
+ add r0, r4, #0x0
+ add r0, #0x75
+ strb r1, [r0, #0x0]
+_0206CEB0:
+ ldr r0, [r4, #0x14]
+ bl FUN_020038E4
+ cmp r0, #0x0
+ bne _0206CF2C
+ add r0, r4, #0x0
+ add r0, #0x66
+ ldrb r0, [r0, #0x0]
+ sub r1, r0, #0x1
+ add r0, r4, #0x0
+ add r0, #0x66
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x66
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _0206CF2C
+ ldr r0, [r4, #0x30]
+ mov r1, #0xc
+ bl FUN_0206E0AC
+ mov r0, #0x10
+ str r0, [sp, #0x0]
+ mov r0, #0x0
+ str r0, [sp, #0x4]
+ ldr r0, _0206D1CC ; =0x00007FFF
+ ldr r2, _0206D1D0 ; =0x0000F3FF
+ str r0, [sp, #0x8]
+ ldr r0, [r4, #0x14]
+ mov r1, #0xf
+ mov r3, #0x4
+ bl FUN_02003210
+ ldr r0, _0206D1CC ; =0x00007FFF
+ mov r1, #0x10
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x18]
+ mov r2, #0x0
+ mov r3, #0x3
+ bl FUN_02007E98
+ ldr r0, _0206D1D4 ; =0x000005FC
+ bl FUN_020054C8
+ add r0, r4, #0x0
+ add r0, #0x64
+ ldrb r0, [r0, #0x0]
+ add r4, #0x64
+ add sp, #0x54
+ add r0, r0, #0x1
+ strb r0, [r4, #0x0]
+ pop {r3-r4, pc}
+_0206CF18:
+ ldr r0, [r4, #0x14]
+ bl FUN_020038E4
+ cmp r0, #0x0
+ bne _0206CF2C
+ ldr r0, [r4, #0x30]
+ bl FUN_0206E0C8
+ cmp r0, #0x0
+ beq _0206CF30
+_0206CF2C:
+ bl _0206D806
+_0206CF30:
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ add r2, r4, #0x0
+ add r2, #0x62
+ ldrh r2, [r2, #0x0]
+ ldr r0, [r4, #0x44]
+ ldr r1, [r4, #0x20]
+ mov r3, #0x2
+ bl FUN_02069038
+ add r1, r4, #0x0
+ add r1, #0x62
+ ldrh r1, [r1, #0x0]
+ add r0, sp, #0x2c
+ bl FUN_02069010
+ ldr r0, [r4, #0x20]
+ add r1, sp, #0x2c
+ bl FUN_0200737C
+ ldr r0, [r4, #0x20]
+ mov r1, #0x0
+ bl FUN_02007314
+ add r0, r4, #0x0
+ add r0, #0x62
+ ldrh r0, [r0, #0x0]
+ bl FUN_02005578
+ add r0, r4, #0x0
+ add r0, #0x64
+ ldrb r0, [r0, #0x0]
+ add r4, #0x64
+ add sp, #0x54
+ add r0, r0, #0x1
+ strb r0, [r4, #0x0]
+ pop {r3-r4, pc}
+_0206CF7E:
+ bl FUN_02005670
+ cmp r0, #0x0
+ bne _0206D084
+ ldr r0, [r4, #0x44]
+ mov r1, #0x0
+ bl FUN_02014D7C
+ cmp r0, #0x1
+ bne _0206D084
+ ldr r0, [r4, #0x20]
+ bl FUN_02007390
+ cmp r0, #0x0
+ bne _0206D084
+ add r2, r4, #0x0
+ ldr r0, [r4, #0x28]
+ mov r1, #0x5
+ add r2, #0x62
+ bl FUN_02067830
+ ldr r0, [r4, #0x28]
+ bl FUN_0206A1C4
+ ldr r0, [r4, #0x28]
+ bl FUN_02066ED8
+ ldr r0, [r4, #0x28]
+ bl FUN_020690E4
+ add r2, r0, #0x0
+ ldr r0, [r4, #0xc]
+ mov r1, #0x0
+ bl FUN_0200ACF8
+ ldr r0, [r4, #0x28]
+ bl FUN_020690E4
+ add r2, r0, #0x0
+ ldr r0, [r4, #0xc]
+ mov r1, #0x1
+ bl FUN_0200AC60
+ ldr r1, _0206D1D8 ; =0x00000396
+ add r0, r4, #0x0
+ bl FUN_0206DD6C
+ add r1, r4, #0x0
+ add r1, #0x65
+ strb r0, [r1, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0x28
+ add r0, #0x66
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x64
+ ldrb r0, [r0, #0x0]
+ add r4, #0x64
+ add sp, #0x54
+ add r0, r0, #0x1
+ strb r0, [r4, #0x0]
+ pop {r3-r4, pc}
+_0206CFFA:
+ add r0, r4, #0x0
+ add r0, #0x65
+ ldrb r0, [r0, #0x0]
+ bl FUN_0201BD70
+ cmp r0, #0x0
+ bne _0206D084
+ add r0, r4, #0x0
+ add r0, #0x66
+ ldrb r0, [r0, #0x0]
+ sub r1, r0, #0x1
+ add r0, r4, #0x0
+ add r0, #0x66
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x66
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _0206D084
+ ldr r0, [r4, #0x48]
+ ldr r1, [r4, #0x28]
+ bl FUN_02024AF0
+ ldr r0, [r4, #0x50]
+ mov r1, #0xc
+ bl FUN_0202A0E8
+ ldr r0, [r4, #0x50]
+ mov r1, #0x16
+ bl FUN_0202A170
+ ldr r0, [r4, #0x28]
+ bl FUN_020690E4
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x54]
+ bl FUN_0204C104
+ ldr r0, [r4, #0x28]
+ mov r1, #0x4d
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ bne _0206D05E
+ ldr r0, [r4, #0x28]
+ mov r1, #0xb2
+ mov r2, #0x0
+ bl FUN_02067830
+_0206D05E:
+ add r0, r4, #0x0
+ add r0, #0x64
+ ldrb r0, [r0, #0x0]
+ add r4, #0x64
+ add sp, #0x54
+ add r0, r0, #0x1
+ strb r0, [r4, #0x0]
+ pop {r3-r4, pc}
+_0206D06E:
+ add r1, r4, #0x0
+ ldr r0, [r4, #0x28]
+ add r1, #0x68
+ add r2, sp, #0xc
+ bl FUN_02069818
+ cmp r0, #0x0
+ beq _0206D08E
+ ldr r1, _0206D1DC ; =0x0000FFFE
+ cmp r0, r1
+ bne _0206D086
+_0206D084:
+ b _0206D806
+_0206D086:
+ add r1, r1, #0x1
+ cmp r0, r1
+ beq _0206D098
+ b _0206D0AC
+_0206D08E:
+ mov r0, #0x27
+ add r4, #0x64
+ add sp, #0x54
+ strb r0, [r4, #0x0]
+ pop {r3-r4, pc}
+_0206D098:
+ add r0, sp, #0xc
+ ldrh r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x6c
+ strh r1, [r0, #0x0]
+ mov r0, #0xe
+ add r4, #0x64
+ add sp, #0x54
+ strb r0, [r4, #0x0]
+ pop {r3-r4, pc}
+_0206D0AC:
+ ldr r0, [r4, #0x28]
+ bl FUN_020690E4
+ add r2, r0, #0x0
+ ldr r0, [r4, #0xc]
+ mov r1, #0x0
+ bl FUN_0200ACF8
+ add r2, sp, #0xc
+ ldrh r2, [r2, #0x0]
+ ldr r0, [r4, #0xc]
+ mov r1, #0x1
+ bl FUN_0200AD5C
+ add r0, r4, #0x0
+ mov r1, #0x4
+ bl FUN_0206DD6C
+ add r1, r4, #0x0
+ add r1, #0x65
+ strb r0, [r1, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0x14
+ add r0, #0x66
+ strb r1, [r0, #0x0]
+ mov r0, #0x25
+ add r4, #0x64
+ add sp, #0x54
+ strb r0, [r4, #0x0]
+ pop {r3-r4, pc}
+_0206D0E8:
+ ldr r0, [r4, #0x28]
+ bl FUN_020690E4
+ add r2, r0, #0x0
+ ldr r0, [r4, #0xc]
+ mov r1, #0x0
+ bl FUN_0200ACF8
+ add r2, r4, #0x0
+ add r2, #0x6c
+ ldrh r2, [r2, #0x0]
+ ldr r0, [r4, #0xc]
+ mov r1, #0x1
+ bl FUN_0200AD5C
+ ldr r1, _0206D1E0 ; =0x000004A9
+ add r0, r4, #0x0
+ bl FUN_0206DD6C
+ add r1, r4, #0x0
+ add r1, #0x65
+ strb r0, [r1, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0x14
+ add r0, #0x66
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x64
+ ldrb r0, [r0, #0x0]
+ add r4, #0x64
+ add sp, #0x54
+ add r0, r0, #0x1
+ strb r0, [r4, #0x0]
+ pop {r3-r4, pc}
+_0206D12C:
+ ldr r0, [r4, #0x28]
+ bl FUN_020690E4
+ add r2, r0, #0x0
+ ldr r0, [r4, #0xc]
+ mov r1, #0x0
+ bl FUN_0200ACF8
+ ldr r1, _0206D1E4 ; =0x000004AA
+ add r0, r4, #0x0
+ bl FUN_0206DD6C
+ add r1, r4, #0x0
+ add r1, #0x65
+ strb r0, [r1, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0x14
+ add r0, #0x66
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x64
+ ldrb r0, [r0, #0x0]
+ add r4, #0x64
+ add sp, #0x54
+ add r0, r0, #0x1
+ strb r0, [r4, #0x0]
+ pop {r3-r4, pc}
+_0206D162:
+ ldr r1, _0206D1E8 ; =0x000004AB
+ add r0, r4, #0x0
+ bl FUN_0206DD6C
+ add r1, r4, #0x0
+ add r1, #0x65
+ strb r0, [r1, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0x1
+ add r0, #0x66
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x64
+ ldrb r0, [r0, #0x0]
+ add r4, #0x64
+ add sp, #0x54
+ add r0, r0, #0x1
+ strb r0, [r4, #0x0]
+ pop {r3-r4, pc}
+_0206D188:
+ add r0, r4, #0x0
+ add r0, #0x65
+ ldrb r0, [r0, #0x0]
+ bl FUN_0201BD70
+ cmp r0, #0x0
+ bne _0206D1AE
+ add r0, r4, #0x0
+ add r0, #0x66
+ ldrb r0, [r0, #0x0]
+ sub r1, r0, #0x1
+ add r0, r4, #0x0
+ add r0, #0x66
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x66
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _0206D1B0
+_0206D1AE:
+ b _0206D806
+_0206D1B0:
+ add r0, r4, #0x0
+ add r0, #0x64
+ ldrb r0, [r0, #0x0]
+ add r4, #0x64
+ add sp, #0x54
+ add r0, r0, #0x1
+ strb r0, [r4, #0x0]
+ pop {r3-r4, pc}
+_0206D1C0:
+ ldr r0, [r4, #0x5c]
+ ldr r1, _0206D1EC ; =0x020F8320
+ b _0206D1F0
+ nop
+_0206D1C8: .word 0x000005FB
+_0206D1CC: .word 0x00007FFF
+_0206D1D0: .word 0x0000F3FF
+_0206D1D4: .word 0x000005FC
+_0206D1D8: .word 0x00000396
+_0206D1DC: .word 0x0000FFFE
+_0206D1E0: .word 0x000004A9
+_0206D1E4: .word 0x000004AA
+_0206D1E8: .word 0x000004AB
+_0206D1EC: .word 0x020F8320
+_0206D1F0:
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x0]
+ mov r2, #0x1
+ mov r3, #0x8
+ bl FUN_02002198
+ str r0, [r4, #0x40]
+ add r0, r4, #0x0
+ add r0, #0x64
+ ldrb r0, [r0, #0x0]
+ add r4, #0x64
+ add sp, #0x54
+ add r0, r0, #0x1
+ strb r0, [r4, #0x0]
+ pop {r3-r4, pc}
+_0206D20E:
+ ldr r0, [r4, #0x40]
+ ldr r1, [r4, #0x5c]
+ bl FUN_020021AC
+ cmp r0, #0x0
+ beq _0206D226
+ mov r1, #0x1
+ mvn r1, r1
+ cmp r0, r1
+ beq _0206D256
+ add sp, #0x54
+ pop {r3-r4, pc}
+_0206D226:
+ add r0, r4, #0x0
+ mov r1, #0x16
+ add r0, #0x64
+ strb r1, [r0, #0x0]
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ mov r0, #0x10
+ str r0, [sp, #0x4]
+ str r1, [sp, #0x8]
+ ldr r0, [r4, #0x14]
+ ldr r2, _0206D540 ; =0x0000FFFF
+ mov r1, #0xf
+ mov r3, #0x1
+ bl FUN_02003210
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ ldr r0, [r4, #0x18]
+ mov r2, #0x10
+ add r3, r1, #0x0
+ bl FUN_02007E98
+ add sp, #0x54
+ pop {r3-r4, pc}
+_0206D256:
+ mov r0, #0x20
+ add r4, #0x64
+ add sp, #0x54
+ strb r0, [r4, #0x0]
+ pop {r3-r4, pc}
+_0206D260:
+ ldr r0, [r4, #0x14]
+ bl FUN_020038E4
+ cmp r0, #0x0
+ bne _0206D2EC
+ mov r0, #0x0
+ add r1, r0, #0x0
+ bl FUN_0200E3A0
+ mov r0, #0x1
+ mov r1, #0x0
+ bl FUN_0200E3A0
+ ldr r0, [r4, #0x0]
+ bl FUN_0206DC48
+ ldr r0, [r4, #0x1c]
+ mov r1, #0x6
+ mov r2, #0x1
+ bl FUN_02007558
+ ldr r0, [r4, #0x20]
+ mov r1, #0x6
+ mov r2, #0x1
+ bl FUN_02007558
+ ldr r1, [r4, #0x28]
+ ldr r0, [r4, #0x3c]
+ mov r2, #0x1
+ str r1, [r0, #0x0]
+ ldr r1, [r4, #0x2c]
+ ldr r0, [r4, #0x3c]
+ str r1, [r0, #0x4]
+ ldr r1, [r4, #0x3c]
+ mov r0, #0x0
+ strb r0, [r1, #0x11]
+ ldr r1, [r4, #0x3c]
+ strb r0, [r1, #0x14]
+ ldr r1, [r4, #0x3c]
+ strb r2, [r1, #0x13]
+ add r1, r4, #0x0
+ add r1, #0x6c
+ ldrh r2, [r1, #0x0]
+ ldr r1, [r4, #0x3c]
+ strh r2, [r1, #0x18]
+ ldr r1, [r4, #0x3c]
+ mov r2, #0x2
+ strb r2, [r1, #0x12]
+ ldr r1, [r4, #0x3c]
+ str r0, [r1, #0x28]
+ ldr r0, [r4, #0x3c]
+ ldr r1, _0206D544 ; =0x020F831C
+ bl FUN_0207B000
+ add r0, r4, #0x0
+ bl FUN_0206DE0C
+ add r0, r4, #0x0
+ add r0, #0x64
+ ldrb r0, [r0, #0x0]
+ add r4, #0x64
+ add sp, #0x54
+ add r0, r0, #0x1
+ strb r0, [r4, #0x0]
+ pop {r3-r4, pc}
+_0206D2E2:
+ ldr r0, [r4, #0x38]
+ bl FUN_02006290
+ cmp r0, #0x0
+ bne _0206D2EE
+_0206D2EC:
+ b _0206D806
+_0206D2EE:
+ ldr r0, [r4, #0x38]
+ bl FUN_02006260
+ ldr r1, [r4, #0x0]
+ add r0, r4, #0x0
+ bl FUN_0206D9B4
+ ldr r0, [r4, #0x4]
+ mov r1, #0x0
+ mov r2, #0x1
+ mov r3, #0xa
+ bl FUN_0200D0BC
+ ldr r0, [r4, #0x1c]
+ mov r1, #0x6
+ mov r2, #0x0
+ bl FUN_02007558
+ ldr r0, [r4, #0x20]
+ mov r1, #0x6
+ mov r2, #0x0
+ bl FUN_02007558
+ ldr r0, [r4, #0x1c]
+ bl FUN_020080D0
+ ldr r0, [r4, #0x20]
+ bl FUN_020080D0
+ mov r0, #0x10
+ str r0, [sp, #0x0]
+ mov r0, #0x0
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ ldr r0, [r4, #0x14]
+ ldr r2, _0206D540 ; =0x0000FFFF
+ mov r1, #0xf
+ mov r3, #0x1
+ bl FUN_02003210
+ mov r2, #0x0
+ str r2, [sp, #0x0]
+ ldr r0, [r4, #0x18]
+ mov r1, #0x10
+ add r3, r2, #0x0
+ bl FUN_02007E98
+ bl FUN_02033E74
+ add r0, r4, #0x0
+ add r0, #0x64
+ ldrb r0, [r0, #0x0]
+ add r4, #0x64
+ add sp, #0x54
+ add r0, r0, #0x1
+ strb r0, [r4, #0x0]
+ pop {r3-r4, pc}
+_0206D360:
+ mov r0, #0x0
+ bl FUN_0200E394
+ mov r0, #0x1
+ bl FUN_0200E394
+ ldr r0, [r4, #0x14]
+ bl FUN_020038E4
+ cmp r0, #0x0
+ bne _0206D474
+ ldr r0, [r4, #0x3c]
+ ldrb r1, [r0, #0x16]
+ cmp r1, #0x4
+ bne _0206D388
+ mov r0, #0x20
+ add r4, #0x64
+ add sp, #0x54
+ strb r0, [r4, #0x0]
+ pop {r3-r4, pc}
+_0206D388:
+ add r0, r4, #0x0
+ add r0, #0x6e
+ strb r1, [r0, #0x0]
+ mov r0, #0x19
+ add r4, #0x64
+ add sp, #0x54
+ strb r0, [r4, #0x0]
+ pop {r3-r4, pc}
+_0206D398:
+ add r2, r4, #0x0
+ add r2, #0x6c
+ ldrh r2, [r2, #0x0]
+ ldr r0, [r4, #0xc]
+ mov r1, #0x0
+ bl FUN_0200AD5C
+ ldr r1, _0206D548 ; =0x000004AD
+ add r0, r4, #0x0
+ bl FUN_0206DD6C
+ add r1, r4, #0x0
+ add r1, #0x65
+ strb r0, [r1, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0x1
+ add r0, #0x66
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x64
+ ldrb r0, [r0, #0x0]
+ add r4, #0x64
+ add sp, #0x54
+ add r0, r0, #0x1
+ strb r0, [r4, #0x0]
+ pop {r3-r4, pc}
+_0206D3CC:
+ ldr r0, [r4, #0x5c]
+ ldr r1, _0206D54C ; =0x020F8320
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x0]
+ mov r2, #0x1
+ mov r3, #0x8
+ bl FUN_02002198
+ str r0, [r4, #0x40]
+ add r0, r4, #0x0
+ add r0, #0x64
+ ldrb r0, [r0, #0x0]
+ add r4, #0x64
+ add sp, #0x54
+ add r0, r0, #0x1
+ strb r0, [r4, #0x0]
+ pop {r3-r4, pc}
+_0206D3EE:
+ ldr r0, [r4, #0x40]
+ ldr r1, [r4, #0x5c]
+ bl FUN_020021AC
+ cmp r0, #0x0
+ beq _0206D406
+ mov r1, #0x1
+ mvn r1, r1
+ cmp r0, r1
+ beq _0206D444
+ add sp, #0x54
+ pop {r3-r4, pc}
+_0206D406:
+ ldr r0, [r4, #0x28]
+ bl FUN_020690E4
+ add r2, r0, #0x0
+ ldr r0, [r4, #0xc]
+ mov r1, #0x0
+ bl FUN_0200ACF8
+ add r2, r4, #0x0
+ add r2, #0x6c
+ ldrh r2, [r2, #0x0]
+ ldr r0, [r4, #0xc]
+ mov r1, #0x1
+ bl FUN_0200AD5C
+ ldr r1, _0206D550 ; =0x000004AE
+ add r0, r4, #0x0
+ bl FUN_0206DD6C
+ add r1, r4, #0x0
+ add r1, #0x65
+ strb r0, [r1, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0x14
+ add r0, #0x66
+ strb r1, [r0, #0x0]
+ mov r0, #0x24
+ add r4, #0x64
+ add sp, #0x54
+ strb r0, [r4, #0x0]
+ pop {r3-r4, pc}
+_0206D444:
+ mov r0, #0xe
+ add r4, #0x64
+ add sp, #0x54
+ strb r0, [r4, #0x0]
+ pop {r3-r4, pc}
+_0206D44E:
+ add r0, r4, #0x0
+ add r0, #0x65
+ ldrb r0, [r0, #0x0]
+ bl FUN_0201BD70
+ cmp r0, #0x0
+ bne _0206D474
+ add r0, r4, #0x0
+ add r0, #0x66
+ ldrb r0, [r0, #0x0]
+ sub r1, r0, #0x1
+ add r0, r4, #0x0
+ add r0, #0x66
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x66
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _0206D476
+_0206D474:
+ b _0206D806
+_0206D476:
+ mov r0, #0xd
+ add r4, #0x64
+ add sp, #0x54
+ strb r0, [r4, #0x0]
+ pop {r3-r4, pc}
+_0206D480:
+ ldr r1, _0206D554 ; =0x000004AF
+ add r0, r4, #0x0
+ bl FUN_0206DD6C
+ add r1, r4, #0x0
+ add r1, #0x65
+ strb r0, [r1, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0x14
+ add r0, #0x66
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x64
+ ldrb r0, [r0, #0x0]
+ add r4, #0x64
+ add sp, #0x54
+ add r0, r0, #0x1
+ strb r0, [r4, #0x0]
+ pop {r3-r4, pc}
+_0206D4A6:
+ ldr r0, [r4, #0x28]
+ bl FUN_020690E4
+ add r2, r0, #0x0
+ ldr r0, [r4, #0xc]
+ mov r1, #0x0
+ bl FUN_0200ACF8
+ add r1, r4, #0x0
+ add r1, #0x6e
+ ldrb r1, [r1, #0x0]
+ ldr r0, [r4, #0x28]
+ mov r2, #0x0
+ add r1, #0x36
+ bl FUN_020671BC
+ add r2, r0, #0x0
+ ldr r0, [r4, #0xc]
+ mov r1, #0x1
+ bl FUN_0200AD5C
+ mov r1, #0x4b
+ add r0, r4, #0x0
+ lsl r1, r1, #0x4
+ bl FUN_0206DD6C
+ add r1, r4, #0x0
+ add r1, #0x65
+ strb r0, [r1, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0x14
+ add r0, #0x66
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x64
+ ldrb r0, [r0, #0x0]
+ add r4, #0x64
+ add sp, #0x54
+ add r0, r0, #0x1
+ strb r0, [r4, #0x0]
+ pop {r3-r4, pc}
+_0206D4F8:
+ ldr r1, _0206D558 ; =0x000004B1
+ add r0, r4, #0x0
+ bl FUN_0206DD6C
+ add r1, r4, #0x0
+ add r1, #0x65
+ strb r0, [r1, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0x14
+ add r0, #0x66
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x64
+ ldrb r0, [r0, #0x0]
+ add r4, #0x64
+ add sp, #0x54
+ add r0, r0, #0x1
+ strb r0, [r4, #0x0]
+ pop {r3-r4, pc}
+_0206D51E:
+ ldr r0, [r4, #0x28]
+ bl FUN_020690E4
+ add r2, r0, #0x0
+ ldr r0, [r4, #0xc]
+ mov r1, #0x0
+ bl FUN_0200ACF8
+ add r2, r4, #0x0
+ add r2, #0x6c
+ ldrh r2, [r2, #0x0]
+ ldr r0, [r4, #0xc]
+ mov r1, #0x1
+ bl FUN_0200AD5C
+ ldr r1, _0206D55C ; =0x000004B2
+ b _0206D560
+ .balign 4
+_0206D540: .word 0x0000FFFF
+_0206D544: .word 0x020F831C
+_0206D548: .word 0x000004AD
+_0206D54C: .word 0x020F8320
+_0206D550: .word 0x000004AE
+_0206D554: .word 0x000004AF
+_0206D558: .word 0x000004B1
+_0206D55C: .word 0x000004B2
+_0206D560:
+ add r0, r4, #0x0
+ bl FUN_0206DD6C
+ add r1, r4, #0x0
+ add r1, #0x65
+ strb r0, [r1, #0x0]
+ add r0, r4, #0x0
+ add r2, r4, #0x0
+ mov r1, #0x0
+ add r0, #0x66
+ strb r1, [r0, #0x0]
+ add r1, r4, #0x0
+ add r1, #0x6e
+ ldrb r1, [r1, #0x0]
+ ldr r0, [r4, #0x28]
+ add r2, #0x66
+ add r1, #0x3e
+ bl FUN_02067830
+ add r1, r4, #0x0
+ add r2, r4, #0x0
+ add r1, #0x6c
+ add r2, #0x6e
+ ldrh r1, [r1, #0x0]
+ ldrb r2, [r2, #0x0]
+ ldr r0, [r4, #0x28]
+ bl FUN_020697CC
+ add r0, r4, #0x0
+ mov r1, #0x14
+ add r0, #0x66
+ strb r1, [r0, #0x0]
+ mov r0, #0x25
+ add r4, #0x64
+ add sp, #0x54
+ strb r0, [r4, #0x0]
+ pop {r3-r4, pc}
+_0206D5AA:
+ add r0, r4, #0x0
+ add r0, #0x65
+ ldrb r0, [r0, #0x0]
+ bl FUN_0201BD70
+ cmp r0, #0x0
+ bne _0206D5E8
+ add r0, r4, #0x0
+ add r0, #0x64
+ ldrb r0, [r0, #0x0]
+ add r4, #0x64
+ add sp, #0x54
+ add r0, r0, #0x1
+ strb r0, [r4, #0x0]
+ pop {r3-r4, pc}
+_0206D5C8:
+ bl FUN_02005CBC
+ cmp r0, #0x0
+ bne _0206D5E8
+ add r0, r4, #0x0
+ add r0, #0x66
+ ldrb r0, [r0, #0x0]
+ sub r1, r0, #0x1
+ add r0, r4, #0x0
+ add r0, #0x66
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x66
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _0206D5EA
+_0206D5E8:
+ b _0206D806
+_0206D5EA:
+ mov r0, #0xd
+ add r4, #0x64
+ add sp, #0x54
+ strb r0, [r4, #0x0]
+ pop {r3-r4, pc}
+_0206D5F4:
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ mov r0, #0x10
+ str r0, [sp, #0x4]
+ str r1, [sp, #0x8]
+ ldr r0, [r4, #0x14]
+ ldr r2, _0206D80C ; =0x0000FFFF
+ mov r1, #0xf
+ mov r3, #0x1
+ bl FUN_02003210
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ ldr r0, [r4, #0x18]
+ mov r2, #0x10
+ add r3, r1, #0x0
+ bl FUN_02007E98
+ add r0, r4, #0x0
+ add r0, #0x64
+ ldrb r0, [r0, #0x0]
+ add r4, #0x64
+ add sp, #0x54
+ add r0, r0, #0x1
+ strb r0, [r4, #0x0]
+ pop {r3-r4, pc}
+_0206D628:
+ ldr r0, [r4, #0x14]
+ bl FUN_020038E4
+ cmp r0, #0x0
+ bne _0206D6F8
+ ldr r0, [r4, #0x30]
+ bl FUN_0206E0DC
+ add r0, r4, #0x0
+ bl FUN_0206D820
+ mov r0, #0x1
+ add r4, #0x67
+ add sp, #0x54
+ strb r0, [r4, #0x0]
+ pop {r3-r4, pc}
+_0206D648:
+ ldr r0, [r4, #0x14]
+ bl FUN_020038E4
+ cmp r0, #0x0
+ bne _0206D6F8
+ mov r1, #0xc
+ add r2, r1, #0x0
+ ldr r0, [r4, #0x1c]
+ add r2, #0xf4
+ bl FUN_02007558
+ mov r1, #0xd
+ add r2, r1, #0x0
+ ldr r0, [r4, #0x1c]
+ add r2, #0xf3
+ bl FUN_02007558
+ ldr r0, [r4, #0x20]
+ mov r1, #0xc
+ mov r2, #0x0
+ bl FUN_02007558
+ ldr r0, [r4, #0x20]
+ mov r1, #0xd
+ mov r2, #0x0
+ bl FUN_02007558
+ ldr r0, [r4, #0x20]
+ mov r1, #0x6
+ mov r2, #0x1
+ bl FUN_02007558
+ mov r0, #0x10
+ str r0, [sp, #0x0]
+ mov r3, #0x0
+ ldr r0, _0206D810 ; =0x00007FFF
+ str r3, [sp, #0x4]
+ str r0, [sp, #0x8]
+ ldr r0, [r4, #0x14]
+ ldr r2, _0206D814 ; =0x0000F3FF
+ mov r1, #0xf
+ bl FUN_02003210
+ ldr r0, _0206D810 ; =0x00007FFF
+ mov r2, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x18]
+ mov r1, #0x10
+ add r3, r2, #0x0
+ bl FUN_02007E98
+ add r0, r4, #0x0
+ mov r1, #0x0
+ add r0, #0x72
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x73
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ mov r2, #0xff
+ add r0, #0x74
+ strb r2, [r0, #0x0]
+ add r0, r4, #0x0
+ mov r2, #0xa0
+ add r0, #0x75
+ strb r2, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x70
+ strb r1, [r0, #0x0]
+ ldr r0, _0206D818 ; =0x00000475
+ bl FUN_02005350
+ ldr r0, [r4, #0x30]
+ bl FUN_0206E0DC
+ add r0, r4, #0x0
+ add r0, #0x64
+ ldrb r0, [r0, #0x0]
+ add r4, #0x64
+ add sp, #0x54
+ add r0, r0, #0x1
+ strb r0, [r4, #0x0]
+ pop {r3-r4, pc}
+_0206D6EE:
+ ldr r0, [r4, #0x14]
+ bl FUN_020038E4
+ cmp r0, #0x0
+ beq _0206D6FA
+_0206D6F8:
+ b _0206D806
+_0206D6FA:
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ add r2, r4, #0x0
+ add r2, #0x60
+ ldrh r2, [r2, #0x0]
+ ldr r0, [r4, #0x44]
+ ldr r1, [r4, #0x1c]
+ mov r3, #0x2
+ bl FUN_02069038
+ add r1, r4, #0x0
+ add r1, #0x60
+ ldrh r1, [r1, #0x0]
+ add r0, sp, #0x18
+ bl FUN_02069010
+ ldr r0, [r4, #0x1c]
+ add r1, sp, #0x18
+ bl FUN_0200737C
+ ldr r0, [r4, #0x1c]
+ mov r1, #0x0
+ bl FUN_02007314
+ add r0, r4, #0x0
+ add r0, #0x60
+ ldrh r0, [r0, #0x0]
+ bl FUN_02005578
+ add r0, r4, #0x0
+ add r0, #0x64
+ ldrb r0, [r0, #0x0]
+ add r4, #0x64
+ add sp, #0x54
+ add r0, r0, #0x1
+ strb r0, [r4, #0x0]
+ pop {r3-r4, pc}
+_0206D748:
+ bl FUN_02005670
+ cmp r0, #0x0
+ bne _0206D806
+ ldr r0, [r4, #0x44]
+ mov r1, #0x0
+ bl FUN_02014D7C
+ cmp r0, #0x1
+ bne _0206D806
+ ldr r0, [r4, #0x1c]
+ bl FUN_02007390
+ cmp r0, #0x0
+ bne _0206D806
+ ldr r0, [r4, #0x28]
+ bl FUN_020690E4
+ add r2, r0, #0x0
+ ldr r0, [r4, #0xc]
+ mov r1, #0x0
+ bl FUN_0200ACF8
+ ldr r1, _0206D81C ; =0x00000397
+ add r0, r4, #0x0
+ bl FUN_0206DD6C
+ add r1, r4, #0x0
+ add r1, #0x65
+ strb r0, [r1, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0x14
+ add r0, #0x66
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x64
+ ldrb r0, [r0, #0x0]
+ add r4, #0x64
+ add sp, #0x54
+ add r0, r0, #0x1
+ strb r0, [r4, #0x0]
+ pop {r3-r4, pc}
+_0206D79C:
+ add r0, r4, #0x0
+ add r0, #0x65
+ ldrb r0, [r0, #0x0]
+ bl FUN_0201BD70
+ cmp r0, #0x0
+ bne _0206D806
+ add r0, r4, #0x0
+ add r0, #0x66
+ ldrb r0, [r0, #0x0]
+ sub r1, r0, #0x1
+ add r0, r4, #0x0
+ add r0, #0x66
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x66
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _0206D806
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ mov r0, #0x10
+ str r0, [sp, #0x4]
+ str r1, [sp, #0x8]
+ ldr r0, [r4, #0x14]
+ ldr r2, _0206D80C ; =0x0000FFFF
+ mov r1, #0xf
+ mov r3, #0x1
+ bl FUN_02003210
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ ldr r0, [r4, #0x18]
+ mov r2, #0x10
+ add r3, r1, #0x0
+ bl FUN_02007E98
+ add r0, r4, #0x0
+ add r0, #0x64
+ ldrb r0, [r0, #0x0]
+ add r4, #0x64
+ add sp, #0x54
+ add r0, r0, #0x1
+ strb r0, [r4, #0x0]
+ pop {r3-r4, pc}
+_0206D7F6:
+ ldr r0, [r4, #0x14]
+ bl FUN_020038E4
+ cmp r0, #0x0
+ bne _0206D806
+ mov r0, #0x1
+ add r4, #0x67
+ strb r0, [r4, #0x0]
+_0206D806:
+ add sp, #0x54
+ pop {r3-r4, pc}
+ nop
+_0206D80C: .word 0x0000FFFF
+_0206D810: .word 0x00007FFF
+_0206D814: .word 0x0000F3FF
+_0206D818: .word 0x00000475
+_0206D81C: .word 0x00000397
+
+ thumb_func_start FUN_0206D820
+FUN_0206D820: ; 0x0206D820
+ push {r4-r6, lr}
+ sub sp, #0x20
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x78]
+ cmp r0, #0x6
+ bgt _0206D834
+ bne _0206D830
+ b _0206D9A0
+_0206D830:
+ add sp, #0x20
+ pop {r4-r6, pc}
+_0206D834:
+ sub r0, #0xd
+ cmp r0, #0x6
+ bhi _0206D86C
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0206D846: ; jump table (using 16-bit offset)
+ .short _0206D854 - _0206D846 - 2; case 0
+ .short _0206D854 - _0206D846 - 2; case 1
+ .short _0206D9AE - _0206D846 - 2; case 2
+ .short _0206D9AE - _0206D846 - 2; case 3
+ .short _0206D9AE - _0206D846 - 2; case 4
+ .short _0206D9A0 - _0206D846 - 2; case 5
+ .short _0206D9A0 - _0206D846 - 2; case 6
+_0206D854:
+ ldr r0, [r4, #0x4c]
+ ldr r2, [r4, #0x5c]
+ mov r1, #0x4
+ bl FUN_0206EEF8
+ cmp r0, #0x0
+ beq _0206D86C
+ ldr r0, [r4, #0x24]
+ bl FUN_0206B9AC
+ cmp r0, #0x6
+ blt _0206D86E
+_0206D86C:
+ b _0206D9AE
+_0206D86E:
+ ldr r0, [r4, #0x5c]
+ bl FUN_020669C0
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x28]
+ add r1, r5, #0x0
+ bl FUN_02069B88
+ mov r0, #0x49
+ lsl r0, r0, #0x2
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ mov r1, #0x5
+ add r2, sp, #0x0
+ bl FUN_02067830
+ mov r0, #0x4
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ mov r1, #0x9a
+ add r2, sp, #0x0
+ bl FUN_02067830
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ mov r1, #0x6
+ add r2, sp, #0x0
+ bl FUN_02067830
+ add r0, r5, #0x0
+ mov r1, #0xb
+ add r2, sp, #0x0
+ bl FUN_02067830
+ mov r1, #0x19
+ str r1, [sp, #0x4]
+ add r6, sp, #0x0
+_0206D8BA:
+ add r0, r5, #0x0
+ add r2, r6, #0x0
+ bl FUN_02067830
+ ldr r0, [sp, #0x4]
+ add r1, r0, #0x1
+ str r1, [sp, #0x4]
+ cmp r1, #0x36
+ blt _0206D8BA
+ mov r1, #0x4e
+ str r1, [sp, #0x4]
+ add r6, sp, #0x0
+_0206D8D2:
+ add r0, r5, #0x0
+ add r2, r6, #0x0
+ bl FUN_02067830
+ ldr r0, [sp, #0x4]
+ add r1, r0, #0x1
+ str r1, [sp, #0x4]
+ cmp r1, #0x6e
+ blt _0206D8D2
+ mov r1, #0x7a
+ str r1, [sp, #0x4]
+ add r6, sp, #0x0
+_0206D8EA:
+ add r0, r5, #0x0
+ add r2, r6, #0x0
+ bl FUN_02067830
+ ldr r0, [sp, #0x4]
+ add r1, r0, #0x1
+ str r1, [sp, #0x4]
+ cmp r1, #0x8f
+ blt _0206D8EA
+ add r0, r5, #0x0
+ mov r1, #0xb2
+ mov r2, #0x0
+ bl FUN_02067830
+ add r0, r5, #0x0
+ mov r1, #0x4d
+ add r2, sp, #0x0
+ bl FUN_02067830
+ add r0, r5, #0x0
+ mov r1, #0x9f
+ add r2, sp, #0x0
+ bl FUN_02067830
+ ldr r0, [r4, #0x5c]
+ bl FUN_020256BC
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0xa9
+ add r2, r6, #0x0
+ bl FUN_02067830
+ add r0, r6, #0x0
+ bl FUN_02016A18
+ add r0, r5, #0x0
+ mov r1, #0xa1
+ add r2, sp, #0x0
+ bl FUN_02067830
+ mov r0, #0x0
+ add r1, sp, #0x8
+ mov r2, #0x18
+ blx MIi_CpuClearFast
+ add r0, r5, #0x0
+ mov r1, #0xaa
+ add r2, sp, #0x8
+ bl FUN_02067830
+ add r0, r5, #0x0
+ bl FUN_0206A1C4
+ add r0, r5, #0x0
+ bl FUN_02066ED8
+ ldr r0, [r4, #0x24]
+ add r1, r5, #0x0
+ bl FUN_0206B900
+ ldr r0, [r4, #0x48]
+ add r1, r5, #0x0
+ bl FUN_02024AF0
+ ldr r0, [r4, #0x50]
+ mov r1, #0xc
+ bl FUN_0202A0E8
+ ldr r0, [r4, #0x50]
+ mov r1, #0x16
+ bl FUN_0202A170
+ add r0, r5, #0x0
+ bl FUN_020690E4
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x54]
+ bl FUN_0204C104
+ add r0, r5, #0x0
+ bl FUN_02016A18
+ ldr r0, [r4, #0x4c]
+ ldr r3, [r4, #0x5c]
+ mov r1, #0x4
+ mov r2, #0x1
+ bl FUN_0206EDD4
+ add sp, #0x20
+ pop {r4-r6, pc}
+_0206D9A0:
+ mov r0, #0x0
+ str r0, [sp, #0x4]
+ ldr r0, [r4, #0x28]
+ mov r1, #0x6
+ add r2, sp, #0x4
+ bl FUN_02067830
+_0206D9AE:
+ add sp, #0x20
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206D9B4
+FUN_0206D9B4: ; 0x0206D9B4
+ push {r4-r6, lr}
+ sub sp, #0xb8
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_0201E6D8
+ ldr r6, _0206DC28 ; =0x020F8354
+ add r3, sp, #0x3c
+ mov r2, #0x5
+_0206D9C6:
+ ldmia r6!, {r0-r1}
+ stmia r3!, {r0-r1}
+ sub r2, r2, #0x1
+ bne _0206D9C6
+ add r0, sp, #0x3c
+ bl FUN_0201E66C
+ mov r1, #0x6
+ mov r2, #0x2
+ mov r0, #0x0
+ lsl r1, r1, #0x18
+ lsl r2, r2, #0x12
+ blx MIi_CpuClear32
+ mov r1, #0x62
+ mov r2, #0x2
+ mov r0, #0x0
+ lsl r1, r1, #0x14
+ lsl r2, r2, #0x10
+ blx MIi_CpuClear32
+ mov r1, #0x19
+ mov r2, #0x1
+ mov r0, #0x0
+ lsl r1, r1, #0x16
+ lsl r2, r2, #0x12
+ blx MIi_CpuClear32
+ mov r1, #0x66
+ mov r2, #0x2
+ mov r0, #0x0
+ lsl r1, r1, #0x14
+ lsl r2, r2, #0x10
+ blx MIi_CpuClear32
+ ldr r6, _0206DC2C ; =0x020F8328
+ add r3, sp, #0x2c
+ add r2, r3, #0x0
+ ldmia r6!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldmia r6!, {r0-r1}
+ stmia r3!, {r0-r1}
+ add r0, r2, #0x0
+ bl FUN_02016BBC
+ ldr r6, _0206DC30 ; =0x020F837C
+ add r3, sp, #0x64
+ mov r2, #0xa
+_0206DA26:
+ ldmia r6!, {r0-r1}
+ stmia r3!, {r0-r1}
+ sub r2, r2, #0x1
+ bne _0206DA26
+ ldr r0, [r6, #0x0]
+ mov r1, #0x1
+ str r0, [r3, #0x0]
+ add r0, r4, #0x0
+ add r2, sp, #0x64
+ mov r3, #0x0
+ bl FUN_02016C18
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_02018744
+ add r0, r4, #0x0
+ mov r1, #0x2
+ add r2, sp, #0x80
+ mov r3, #0x0
+ bl FUN_02016C18
+ add r0, r4, #0x0
+ mov r1, #0x2
+ bl FUN_02018744
+ add r0, r4, #0x0
+ mov r1, #0x3
+ add r2, sp, #0x9c
+ mov r3, #0x0
+ bl FUN_02016C18
+ add r0, r4, #0x0
+ mov r1, #0x3
+ bl FUN_02018744
+ ldr r1, _0206DC34 ; =0x04000008
+ mov r0, #0x3
+ ldrh r2, [r1, #0x0]
+ bic r2, r0
+ mov r0, #0x1
+ orr r2, r0
+ strh r2, [r1, #0x0]
+ add r1, r0, #0x0
+ bl FUN_0201E6E4
+ ldr r6, _0206DC38 ; =0x020F8338
+ add r3, sp, #0x10
+ ldmia r6!, {r0-r1}
+ add r2, r3, #0x0
+ stmia r3!, {r0-r1}
+ ldmia r6!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldmia r6!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldr r0, [r6, #0x0]
+ mov r1, #0x4
+ str r0, [r3, #0x0]
+ add r0, r4, #0x0
+ mov r3, #0x0
+ bl FUN_02016C18
+ add r0, r4, #0x0
+ mov r1, #0x4
+ bl FUN_02018744
+ ldr r0, [r5, #0x2c]
+ bl FUN_02025084
+ add r6, r0, #0x0
+ lsl r0, r6, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ ldr r0, [r5, #0x5c]
+ mov r1, #0x1
+ str r0, [sp, #0x4]
+ add r0, r4, #0x0
+ add r2, r1, #0x0
+ mov r3, #0xa
+ bl FUN_0200D274
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ str r1, [sp, #0x4]
+ mov r0, #0x1
+ str r0, [sp, #0x8]
+ ldr r0, [r5, #0x5c]
+ add r2, r4, #0x0
+ str r0, [sp, #0xc]
+ mov r0, #0x76
+ mov r3, #0x3
+ bl FUN_0200687C
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ str r0, [sp, #0x4]
+ mov r1, #0x1
+ str r1, [sp, #0x8]
+ ldr r0, [r5, #0x5c]
+ add r2, r4, #0x0
+ str r0, [sp, #0xc]
+ mov r0, #0x76
+ mov r3, #0x3
+ bl FUN_020068C8
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ mov r0, #0x40
+ str r0, [sp, #0x4]
+ str r1, [sp, #0x8]
+ ldr r0, [r5, #0x14]
+ ldr r3, [r5, #0x5c]
+ mov r1, #0x76
+ mov r2, #0x8
+ bl FUN_020030E8
+ add r0, r6, #0x0
+ bl FUN_0200CD64
+ add r2, r0, #0x0
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x20
+ str r0, [sp, #0x4]
+ mov r0, #0xa0
+ str r0, [sp, #0x8]
+ ldr r0, [r5, #0x14]
+ ldr r3, [r5, #0x5c]
+ mov r1, #0x26
+ bl FUN_020030E8
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x20
+ str r0, [sp, #0x4]
+ mov r0, #0xb0
+ str r0, [sp, #0x8]
+ ldr r0, [r5, #0x14]
+ ldr r3, [r5, #0x5c]
+ mov r1, #0xe
+ mov r2, #0x7
+ bl FUN_020030E8
+ ldr r0, [r5, #0x5c]
+ mov r1, #0x2
+ str r0, [sp, #0x0]
+ ldr r0, [r5, #0x0]
+ mov r2, #0x1
+ mov r3, #0x0
+ bl FUN_0200CABC
+ bl FUN_0200CAFC
+ add r2, r0, #0x0
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x20
+ str r0, [sp, #0x4]
+ mov r0, #0x80
+ str r0, [sp, #0x8]
+ ldr r0, [r5, #0x14]
+ ldr r3, [r5, #0x5c]
+ mov r1, #0x26
+ bl FUN_020030E8
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ str r0, [sp, #0x4]
+ mov r0, #0x1
+ str r0, [sp, #0x8]
+ ldr r0, [r5, #0x5c]
+ mov r1, #0xa
+ str r0, [sp, #0xc]
+ mov r0, #0xc
+ add r2, r4, #0x0
+ mov r3, #0x4
+ bl FUN_0200687C
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ str r0, [sp, #0x4]
+ mov r0, #0x1
+ str r0, [sp, #0x8]
+ ldr r0, [r5, #0x5c]
+ mov r1, #0xb
+ str r0, [sp, #0xc]
+ mov r0, #0xc
+ add r2, r4, #0x0
+ mov r3, #0x4
+ bl FUN_020068C8
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ mov r0, #0x20
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ str r0, [sp, #0x8]
+ mov r1, #0xc
+ ldr r0, [r5, #0x14]
+ ldr r3, [r5, #0x5c]
+ add r2, r1, #0x0
+ bl FUN_020030E8
+ mov r0, #0x1
+ lsl r0, r0, #0x1a
+ ldr r1, [r0, #0x0]
+ ldr r2, _0206DC3C ; =0xFFFF1FFF
+ add r3, r1, #0x0
+ and r3, r2
+ lsr r1, r0, #0xd
+ orr r1, r3
+ ldr r3, _0206DC40 ; =0x04001000
+ str r1, [r0, #0x0]
+ ldr r1, [r3, #0x0]
+ and r1, r2
+ str r1, [r3, #0x0]
+ add r3, r0, #0x0
+ add r3, #0x48
+ ldrh r4, [r3, #0x0]
+ mov r2, #0x3f
+ mov r1, #0x1f
+ bic r4, r2
+ orr r1, r4
+ strh r1, [r3, #0x0]
+ add r0, #0x4a
+ ldrh r3, [r0, #0x0]
+ mov r1, #0x12
+ bic r3, r2
+ orr r1, r3
+ strh r1, [r0, #0x0]
+ add r0, r5, #0x0
+ mov r1, #0x0
+ add r0, #0x72
+ strb r1, [r0, #0x0]
+ add r0, r5, #0x0
+ add r0, #0x73
+ strb r1, [r0, #0x0]
+ add r0, r5, #0x0
+ mov r1, #0xff
+ add r0, #0x74
+ strb r1, [r0, #0x0]
+ add r0, r5, #0x0
+ mov r1, #0xa0
+ add r0, #0x75
+ strb r1, [r0, #0x0]
+ bl FUN_0201E788
+ mov r0, #0x10
+ mov r1, #0x1
+ bl FUN_0201E6E4
+ ldr r0, _0206DC44 ; =FUN_0206DD08
+ add r1, r5, #0x0
+ bl FUN_02015F10
+ add sp, #0xb8
+ pop {r4-r6, pc}
+ .balign 4
+_0206DC28: .word 0x020F8354
+_0206DC2C: .word 0x020F8328
+_0206DC30: .word 0x020F837C
+_0206DC34: .word 0x04000008
+_0206DC38: .word 0x020F8338
+_0206DC3C: .word 0xFFFF1FFF
+_0206DC40: .word 0x04001000
+_0206DC44: .word FUN_0206DD08
+
+ thumb_func_start FUN_0206DC48
+FUN_0206DC48: ; 0x0206DC48
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x1
+ mov r1, #0x0
+ bl FUN_0201E6E4
+ mov r0, #0x2
+ mov r1, #0x0
+ bl FUN_0201E6E4
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_020178A0
+ add r0, r4, #0x0
+ mov r1, #0x2
+ bl FUN_020178A0
+ add r0, r4, #0x0
+ mov r1, #0x3
+ bl FUN_020178A0
+ add r0, r4, #0x0
+ mov r1, #0x4
+ bl FUN_020178A0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206DC80
+FUN_0206DC80: ; 0x0206DC80
+ push {r3-r5, lr}
+ sub sp, #0x20
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x28]
+ add r0, sp, #0x10
+ mov r2, #0x2
+ bl FUN_02068B68
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ str r0, [sp, #0xc]
+ ldr r0, [r4, #0x18]
+ add r1, sp, #0x10
+ mov r2, #0x80
+ mov r3, #0x50
+ bl FUN_020073A0
+ str r0, [r4, #0x1c]
+ ldr r0, [r4, #0x5c]
+ bl FUN_020669C0
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x28]
+ add r1, r5, #0x0
+ bl FUN_02069B88
+ add r2, r4, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x5
+ add r2, #0x62
+ bl FUN_02067830
+ add r0, r5, #0x0
+ bl FUN_02066ED8
+ add r0, sp, #0x10
+ add r1, r5, #0x0
+ mov r2, #0x2
+ bl FUN_02068B68
+ add r0, r5, #0x0
+ bl FUN_02016A18
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ str r0, [sp, #0xc]
+ ldr r0, [r4, #0x18]
+ add r1, sp, #0x10
+ mov r2, #0x80
+ mov r3, #0x50
+ bl FUN_020073A0
+ str r0, [r4, #0x20]
+ mov r1, #0xc
+ mov r2, #0x0
+ bl FUN_02007558
+ ldr r0, [r4, #0x20]
+ mov r1, #0xd
+ mov r2, #0x0
+ bl FUN_02007558
+ add sp, #0x20
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0206DD08
+FUN_0206DD08: ; 0x0206DD08
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ add r0, #0x75
+ ldrb r2, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x73
+ ldrb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x72
+ ldrb r0, [r0, #0x0]
+ mov r3, #0xff
+ lsl r3, r3, #0x8
+ lsl r0, r0, #0x8
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x74
+ lsl r1, r1, #0x8
+ and r1, r3
+ ldrb r0, [r0, #0x0]
+ and r5, r3
+ orr r1, r2
+ orr r5, r0
+ ldr r0, _0206DD60 ; =0x04000040
+ strh r5, [r0, #0x0]
+ strh r1, [r0, #0x4]
+ ldr r0, [r4, #0x18]
+ bl FUN_020081C4
+ bl FUN_0201C30C
+ ldr r0, [r4, #0x14]
+ bl FUN_0200372C
+ ldr r0, [r4, #0x0]
+ bl FUN_0201AB60
+ ldr r3, _0206DD64 ; =0x027E0000
+ ldr r1, _0206DD68 ; =0x00003FF8
+ mov r0, #0x1
+ ldr r2, [r3, r1]
+ orr r0, r2
+ str r0, [r3, r1]
+ pop {r3-r5, pc}
+ nop
+_0206DD60: .word 0x04000040
+_0206DD64: .word 0x027E0000
+_0206DD68: .word 0x00003FF8
+
+ thumb_func_start FUN_0206DD6C
+FUN_0206DD6C: ; 0x0206DD6C
+ push {r4-r5, lr}
+ sub sp, #0xc
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x8]
+ bl FUN_0200A914
+ add r5, r0, #0x0
+ ldr r0, [r4, #0xc]
+ ldr r1, [r4, #0x10]
+ add r2, r5, #0x0
+ bl FUN_0200B7B8
+ add r0, r5, #0x0
+ bl FUN_02016A18
+ ldr r0, [r4, #0x4]
+ mov r1, #0xff
+ bl FUN_02019620
+ ldr r0, [r4, #0x2c]
+ bl FUN_02024FF4
+ mov r3, #0x0
+ str r3, [sp, #0x0]
+ str r0, [sp, #0x4]
+ ldr r0, _0206DDB0 ; =FUN_0206DDB4
+ mov r1, #0x1
+ str r0, [sp, #0x8]
+ ldr r0, [r4, #0x4]
+ ldr r2, [r4, #0x10]
+ bl FUN_0201BD84
+ add sp, #0xc
+ pop {r4-r5, pc}
+ .balign 4
+_0206DDB0: .word FUN_0206DDB4
+
+ thumb_func_start FUN_0206DDB4
+FUN_0206DDB4: ; 0x0206DDB4
+ push {r4, lr}
+ mov r4, #0x0
+ cmp r1, #0x5
+ bhi _0206DDFA
+ add r0, r1, r1
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0206DDC8: ; jump table (using 16-bit offset)
+ .short _0206DDFA - _0206DDC8 - 2; case 0
+ .short _0206DDD4 - _0206DDC8 - 2; case 1
+ .short _0206DDDC - _0206DDC8 - 2; case 2
+ .short _0206DDE4 - _0206DDC8 - 2; case 3
+ .short _0206DDEC - _0206DDC8 - 2; case 4
+ .short _0206DDF4 - _0206DDC8 - 2; case 5
+_0206DDD4:
+ bl FUN_02005514
+ add r4, r0, #0x0
+ b _0206DDFA
+_0206DDDC:
+ bl FUN_02005CBC
+ add r4, r0, #0x0
+ b _0206DDFA
+_0206DDE4:
+ ldr r0, _0206DE00 ; =0x00000484
+ bl FUN_02005C28
+ b _0206DDFA
+_0206DDEC:
+ ldr r0, _0206DE04 ; =0x000005E6
+ bl FUN_020054C8
+ b _0206DDFA
+_0206DDF4:
+ ldr r0, _0206DE08 ; =0x00000483
+ bl FUN_02005C28
+_0206DDFA:
+ add r0, r4, #0x0
+ pop {r4, pc}
+ nop
+_0206DE00: .word 0x00000484
+_0206DE04: .word 0x000005E6
+_0206DE08: .word 0x00000483
+
+ thumb_func_start FUN_0206DE0C
+FUN_0206DE0C: ; 0x0206DE0C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _0206DE20 ; =0x020FA6E8
+ ldr r1, [r4, #0x3c]
+ ldr r2, [r4, #0x5c]
+ bl FUN_02006234
+ str r0, [r4, #0x38]
+ pop {r4, pc}
+ nop
+_0206DE20: .word 0x020FA6E8
+
+ thumb_func_start FUN_0206DE24
+FUN_0206DE24: ; 0x0206DE24
+ push {r3, lr}
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ mov r2, #0x1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2, #0x0]
+ ldr r0, _0206DE44 ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2, #0x0]
+ ldr r2, _0206DE48 ; =0x04001000
+ ldr r1, [r2, #0x0]
+ and r0, r1
+ str r0, [r2, #0x0]
+ pop {r3, pc}
+ .balign 4
+_0206DE44: .word 0xFFFFE0FF
+_0206DE48: .word 0x04001000
+
+ thumb_func_start FUN_0206DE4C
+FUN_0206DE4C: ; 0x0206DE4C
+ push {r3, lr}
+ mov r0, #0x7
+ str r0, [sp, #0x0]
+ ldr r0, _0206DE70 ; =0x04000050
+ mov r1, #0x0
+ mov r2, #0xe
+ mov r3, #0xb
+ blx FUN_020C74DC
+ mov r0, #0x8
+ str r0, [sp, #0x0]
+ ldr r0, _0206DE74 ; =0x04001050
+ mov r1, #0x0
+ mov r2, #0xe
+ mov r3, #0x7
+ blx FUN_020C74DC
+ pop {r3, pc}
+ .balign 4
+_0206DE70: .word 0x04000050
+_0206DE74: .word 0x04001050
+
+ thumb_func_start FUN_0206DE78
+FUN_0206DE78: ; 0x0206DE78
+ push {r3, lr}
+ sub sp, #0x8
+ mov r2, #0x2
+ ldr r1, _0206DE90 ; =FUN_0206DE94
+ str r2, [sp, #0x0]
+ str r1, [sp, #0x4]
+ mov r1, #0x0
+ add r3, r1, #0x0
+ bl FUN_02022318
+ add sp, #0x8
+ pop {r3, pc}
+ .balign 4
+_0206DE90: .word FUN_0206DE94
+
+ thumb_func_start FUN_0206DE94
+FUN_0206DE94: ; 0x0206DE94
+ push {r3, lr}
+ mov r0, #0x1
+ add r1, r0, #0x0
+ bl FUN_0201E6E4
+ ldr r0, _0206DF00 ; =0x04000008
+ mov r1, #0x3
+ ldrh r2, [r0, #0x0]
+ bic r2, r1
+ mov r1, #0x1
+ orr r1, r2
+ strh r1, [r0, #0x0]
+ add r0, #0x58
+ ldrh r2, [r0, #0x0]
+ ldr r1, _0206DF04 ; =0xFFFFCFFD
+ and r2, r1
+ strh r2, [r0, #0x0]
+ add r2, r1, #0x2
+ ldrh r3, [r0, #0x0]
+ add r1, r1, #0x2
+ and r3, r2
+ mov r2, #0x10
+ orr r2, r3
+ strh r2, [r0, #0x0]
+ ldrh r3, [r0, #0x0]
+ ldr r2, _0206DF08 ; =0x0000CFFB
+ and r3, r2
+ strh r3, [r0, #0x0]
+ ldrh r3, [r0, #0x0]
+ sub r2, #0x1c
+ and r3, r1
+ mov r1, #0x8
+ orr r1, r3
+ strh r1, [r0, #0x0]
+ ldrh r1, [r0, #0x0]
+ and r1, r2
+ strh r1, [r0, #0x0]
+ mov r0, #0x0
+ add r1, r0, #0x0
+ add r2, r0, #0x0
+ add r3, r0, #0x0
+ blx FUN_020C7C28
+ mov r0, #0x0
+ ldr r2, _0206DF0C ; =0x00007FFF
+ add r1, r0, #0x0
+ mov r3, #0x3f
+ str r0, [sp, #0x0]
+ blx FUN_020C7B3C
+ ldr r1, _0206DF10 ; =0xBFFF0000
+ ldr r0, _0206DF14 ; =0x04000580
+ str r1, [r0, #0x0]
+ pop {r3, pc}
+ .balign 4
+_0206DF00: .word 0x04000008
+_0206DF04: .word 0xFFFFCFFD
+_0206DF08: .word 0x0000CFFB
+_0206DF0C: .word 0x00007FFF
+_0206DF10: .word 0xBFFF0000
+_0206DF14: .word 0x04000580
+
+ thumb_func_start FUN_0206DF18
+FUN_0206DF18: ; 0x0206DF18
+ push {r3-r5, lr}
+ ldr r3, _0206DF50 ; =0x021064B8
+ mov r0, #0x2
+ mov r1, #0x0
+ ldr r3, [r3, #0x0]
+ lsl r0, r0, #0xe
+ add r2, r1, #0x0
+ blx r3
+ ldr r3, _0206DF54 ; =0x021064C0
+ mov r1, #0x0
+ add r4, r0, #0x0
+ ldr r3, [r3, #0x0]
+ mov r0, #0xa0
+ add r2, r1, #0x0
+ blx r3
+ add r5, r0, #0x0
+ cmp r4, #0x0
+ bne _0206DF40
+ bl ErrorHandling
+_0206DF40:
+ cmp r5, #0x0
+ bne _0206DF48
+ bl ErrorHandling
+_0206DF48:
+ bl FUN_02012CC8
+ pop {r3-r5, pc}
+ nop
+_0206DF50: .word 0x021064B8
+_0206DF54: .word 0x021064C0
+
+ thumb_func_start FUN_0206DF58
+FUN_0206DF58: ; 0x0206DF58
+ push {r3, lr}
+ bl FUN_020222AC
+ bl FUN_02013364
+ cmp r0, #0x0
+ ble _0206DF6E
+ bl FUN_020222AC
+ blx FUN_020B02C8
+_0206DF6E:
+ bl FUN_02013388
+ mov r0, #0x1
+ mov r1, #0x0
+ bl FUN_020222B4
+ pop {r3, pc}
+
+ thumb_func_start FUN_0206DF7C
+FUN_0206DF7C: ; 0x0206DF7C
+ push {r4, lr}
+ ldr r3, _0206DF94 ; =0x021064B8
+ mov r2, #0x0
+ ldr r3, [r3, #0x0]
+ blx r3
+ add r4, r0, #0x0
+ bl FUN_0201327C
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0xd
+ pop {r4, pc}
+ nop
+_0206DF94: .word 0x021064B8
+
+ thumb_func_start FUN_0206DF98
+FUN_0206DF98: ; 0x0206DF98
+ push {r4, lr}
+ ldr r3, _0206DFB0 ; =0x021064C0
+ mov r2, #0x0
+ ldr r3, [r3, #0x0]
+ blx r3
+ add r4, r0, #0x0
+ bl FUN_020132BC
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0xd
+ pop {r4, pc}
+ nop
+_0206DFB0: .word 0x021064C0
+
+ thumb_func_start FUN_0206DFB4
+FUN_0206DFB4: ; 0x0206DFB4
+ push {r4, lr}
+ sub sp, #0x8
+ mov r1, #0x12
+ lsl r1, r1, #0xa
+ add r4, r0, #0x0
+ bl FUN_02016998
+ add r2, r0, #0x0
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ mov r3, #0x12
+ ldr r0, _0206DFF4 ; =FUN_0206DF7C
+ ldr r1, _0206DFF8 ; =FUN_0206DF98
+ lsl r3, r3, #0xa
+ str r4, [sp, #0x4]
+ bl FUN_02012CDC
+ add r4, r0, #0x0
+ bl FUN_0201343C
+ add r2, r0, #0x0
+ beq _0206DFEC
+ mov r0, #0x1
+ mov r1, #0xe1
+ lsl r0, r0, #0xc
+ lsl r1, r1, #0xe
+ bl FUN_0201EC94
+_0206DFEC:
+ add r0, r4, #0x0
+ add sp, #0x8
+ pop {r4, pc}
+ nop
+_0206DFF4: .word FUN_0206DF7C
+_0206DFF8: .word FUN_0206DF98
+
+ thumb_func_start FUN_0206DFFC
+FUN_0206DFFC: ; 0x0206DFFC
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ add r7, r2, #0x0
+ bl FUN_0206DFB4
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ add r1, r7, #0x0
+ add r2, r5, #0x0
+ bl FUN_0201318C
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ mov r2, #0xa
+ mov r3, #0x1
+ bl FUN_02013194
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0206E024
+FUN_0206E024: ; 0x0206E024
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_020133E8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02012DE4
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0206E03C
+FUN_0206E03C: ; 0x0206E03C
+ push {r3}
+ sub sp, #0xc
+ add r1, sp, #0x0
+ mov r2, #0x0
+ str r2, [r1, #0x0]
+ str r2, [r1, #0x4]
+ str r2, [r1, #0x8]
+ mov r1, #0x56
+ lsl r1, r1, #0x4
+ str r2, [sp, #0x0]
+ str r2, [sp, #0x8]
+ str r1, [sp, #0x4]
+ ldr r1, [r0, #0x20]
+ ldr r1, [r1, #0x0]
+ ldr r1, [r1, #0x4]
+ add r1, r2, r1
+ str r1, [r0, #0x28]
+ ldr r1, [r0, #0x20]
+ ldr r2, [sp, #0x4]
+ ldr r1, [r1, #0x0]
+ ldr r1, [r1, #0x8]
+ add r1, r2, r1
+ str r1, [r0, #0x2c]
+ ldr r1, [r0, #0x20]
+ ldr r2, [sp, #0x8]
+ ldr r1, [r1, #0x0]
+ ldr r1, [r1, #0xc]
+ add r1, r2, r1
+ str r1, [r0, #0x30]
+ add sp, #0xc
+ pop {r3}
+ bx lr
+
+ thumb_func_start FUN_0206E07C
+FUN_0206E07C: ; 0x0206E07C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ mov r1, #0x10
+ bl FUN_02016998
+ add r4, r0, #0x0
+ bne _0206E090
+ bl ErrorHandling
+_0206E090:
+ ldr r0, [r5, #0x0]
+ ldr r2, [r5, #0x4]
+ mov r1, #0x7c
+ str r0, [r4, #0x0]
+ str r2, [r4, #0x4]
+ ldr r0, [r4, #0x0]
+ bl FUN_0206DFFC
+ mov r1, #0x1
+ str r0, [r4, #0xc]
+ bl FUN_02013440
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0206E0AC
+FUN_0206E0AC: ; 0x0206E0AC
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0xc]
+ ldr r2, _0206E0C4 ; =FUN_0206E03C
+ add r3, r4, #0x0
+ bl FUN_020133AC
+ ldr r0, [r4, #0xc]
+ mov r1, #0x1
+ bl FUN_02013440
+ pop {r4, pc}
+ .balign 4
+_0206E0C4: .word FUN_0206E03C
+
+ thumb_func_start FUN_0206E0C8
+FUN_0206E0C8: ; 0x0206E0C8
+ push {r3, lr}
+ ldr r0, [r0, #0xc]
+ bl FUN_020133C8
+ cmp r0, #0x0
+ beq _0206E0D8
+ mov r0, #0x1
+ pop {r3, pc}
+_0206E0D8:
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_0206E0DC
+FUN_0206E0DC: ; 0x0206E0DC
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0xc]
+ bl FUN_0206E024
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206E0F0
+FUN_0206E0F0: ; 0x0206E0F0
+ push {r4, lr}
+ add r4, r0, #0x0
+ cmp r4, #0x17
+ blo _0206E0FC
+ bl ErrorHandling
+_0206E0FC:
+ ldr r0, _0206E104 ; =0x020F83E0
+ lsl r1, r4, #0x2
+ ldr r0, [r0, r1]
+ pop {r4, pc}
+ .balign 4
+_0206E104: .word 0x020F83E0
+
+ thumb_func_start FUN_0206E108
+FUN_0206E108: ; 0x0206E108
+ mov r0, #0x26
+ bx lr
+
+ thumb_func_start FUN_0206E10C
+FUN_0206E10C: ; 0x0206E10C
+ mov r0, #0xb2
+ bx lr
+
+ thumb_func_start FUN_0206E110
+FUN_0206E110: ; 0x0206E110
+ mov r0, #0xb3
+ bx lr
+
+ thumb_func_start FUN_0206E114
+FUN_0206E114: ; 0x0206E114
+ push {r4, lr}
+ add r4, r0, #0x0
+ cmp r4, #0x17
+ blo _0206E120
+ bl ErrorHandling
+_0206E120:
+ ldr r0, _0206E128 ; =0x020F843C
+ ldrb r0, [r0, r4]
+ pop {r4, pc}
+ nop
+_0206E128: .word 0x020F843C
+
+ thumb_func_start FUN_0206E12C
+FUN_0206E12C: ; 0x0206E12C
+ mov r0, #0x1b
+ bx lr
+
+ thumb_func_start FUN_0206E130
+FUN_0206E130: ; 0x0206E130
+ push {r3-r7, lr}
+ sub sp, #0x10
+ add r7, r3, #0x0
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ add r4, r2, #0x0
+ bl FUN_0206E12C
+ str r0, [sp, #0xc]
+ add r0, r7, #0x0
+ bl FUN_0206E0F0
+ add r3, r0, #0x0
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x28]
+ str r4, [sp, #0x4]
+ str r0, [sp, #0x8]
+ ldr r2, [sp, #0xc]
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_0200C00C
+ add sp, #0x10
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206E164
+FUN_0206E164: ; 0x0206E164
+ push {r4-r7, lr}
+ sub sp, #0x14
+ add r6, r0, #0x0
+ add r7, r1, #0x0
+ add r5, r2, #0x0
+ add r4, r3, #0x0
+ bl FUN_0206E12C
+ str r0, [sp, #0x10]
+ bl FUN_0206E108
+ add r3, r0, #0x0
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x3
+ str r0, [sp, #0x4]
+ str r5, [sp, #0x8]
+ ldr r2, [sp, #0x10]
+ add r0, r6, #0x0
+ add r1, r7, #0x0
+ str r4, [sp, #0xc]
+ bl FUN_0200C06C
+ add sp, #0x14
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206E198
+FUN_0206E198: ; 0x0206E198
+ push {r4-r7, lr}
+ sub sp, #0x1c
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ add r7, r2, #0x0
+ str r3, [sp, #0x18]
+ bl FUN_0206E12C
+ add r4, r0, #0x0
+ bl FUN_0206E108
+ str r4, [sp, #0x0]
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ str r0, [sp, #0x8]
+ mov r0, #0x3
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x30]
+ ldr r3, [sp, #0x18]
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x34]
+ add r1, r6, #0x0
+ str r0, [sp, #0x14]
+ add r0, r5, #0x0
+ add r2, r7, #0x0
+ bl FUN_0200C0DC
+ add sp, #0x1c
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206E1D4
+FUN_0206E1D4: ; 0x0206E1D4
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ add r7, r3, #0x0
+ bl FUN_0206E12C
+ str r0, [sp, #0x8]
+ bl FUN_0206E10C
+ add r3, r0, #0x0
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ ldr r2, [sp, #0x8]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ str r6, [sp, #0x4]
+ bl FUN_0200C124
+ bl FUN_0206E12C
+ add r6, r0, #0x0
+ bl FUN_0206E110
+ add r3, r0, #0x0
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ str r7, [sp, #0x4]
+ bl FUN_0200C13C
+ add sp, #0xc
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_0206E21C
+FUN_0206E21C: ; 0x0206E21C
+ ldr r3, _0206E220 ; =FUN_0200C358
+ bx r3
+ .balign 4
+_0206E220: .word FUN_0200C358
+
+ thumb_func_start FUN_0206E224
+FUN_0206E224: ; 0x0206E224
+ ldr r3, _0206E228 ; =FUN_0200C368
+ bx r3
+ .balign 4
+_0206E228: .word FUN_0200C368
+
+ thumb_func_start FUN_0206E22C
+FUN_0206E22C: ; 0x0206E22C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r2, #0x0
+ bl FUN_0200C378
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0200C388
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0206E240
+FUN_0206E240: ; 0x0206E240
+ push {r4-r7, lr}
+ sub sp, #0x34
+ add r6, r3, #0x0
+ add r4, r0, #0x0
+ add r7, r1, #0x0
+ add r5, sp, #0x0
+ mov r3, #0x6
+_0206E24E:
+ ldmia r6!, {r0-r1}
+ stmia r5!, {r0-r1}
+ sub r3, r3, #0x1
+ bne _0206E24E
+ ldr r0, [r6, #0x0]
+ str r0, [r5, #0x0]
+ add r0, r2, #0x0
+ bl FUN_0206E114
+ str r0, [sp, #0xc]
+ add r0, r4, #0x0
+ add r1, r7, #0x0
+ add r2, sp, #0x0
+ bl FUN_0200C154
+ add sp, #0x34
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_0206E270
+FUN_0206E270: ; 0x0206E270
+ ldr r3, _0206E274 ; =FUN_0200C3DC
+ bx r3
+ .balign 4
+_0206E274: .word FUN_0200C3DC
+
+ thumb_func_start FUN_0206E278
+FUN_0206E278: ; 0x0206E278
+ push {r4, lr}
+ add r4, r0, #0x0
+ cmp r4, #0x3
+ blo _0206E284
+ bl ErrorHandling
+_0206E284:
+ ldr r0, _0206E28C ; =0x020F83D4
+ lsl r1, r4, #0x2
+ ldr r0, [r0, r1]
+ pop {r4, pc}
+ .balign 4
+_0206E28C: .word 0x020F83D4
+
+ thumb_func_start FUN_0206E290
+FUN_0206E290: ; 0x0206E290
+ push {r4, lr}
+ add r4, r0, #0x0
+ cmp r4, #0x3
+ blo _0206E29C
+ bl ErrorHandling
+_0206E29C:
+ ldr r0, _0206E2A4 ; =0x020F83D0
+ ldrb r0, [r0, r4]
+ pop {r4, pc}
+ nop
+_0206E2A4: .word 0x020F83D0
+
+ thumb_func_start FUN_0206E2A8
+FUN_0206E2A8: ; 0x0206E2A8
+ mov r0, #0x1b
+ bx lr
+
+ thumb_func_start FUN_0206E2AC
+FUN_0206E2AC: ; 0x0206E2AC
+ push {r3-r7, lr}
+ sub sp, #0x10
+ add r7, r3, #0x0
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ add r4, r2, #0x0
+ bl FUN_0206E2A8
+ str r0, [sp, #0xc]
+ add r0, r7, #0x0
+ bl FUN_0206E278
+ add r3, r0, #0x0
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x28]
+ str r4, [sp, #0x4]
+ str r0, [sp, #0x8]
+ ldr r2, [sp, #0xc]
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_0200C00C
+ add sp, #0x10
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206E2E0
+FUN_0206E2E0: ; 0x0206E2E0
+ ldr r3, _0206E2E4 ; =FUN_0200C358
+ bx r3
+ .balign 4
+_0206E2E4: .word FUN_0200C358
+
+ thumb_func_start FUN_0206E2E8
+FUN_0206E2E8: ; 0x0206E2E8
+ ldr r3, _0206E2EC ; =FUN_0200C3DC
+ bx r3
+ .balign 4
+_0206E2EC: .word FUN_0200C3DC
+
+ thumb_func_start FUN_0206E2F0
+FUN_0206E2F0: ; 0x0206E2F0
+ push {r4, lr}
+ mov r1, #0x78
+ bl FUN_02016998
+ mov r1, #0x0
+ mov r2, #0x78
+ add r4, r0, #0x0
+ blx FUN_020DF4A4
+ add r0, r4, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206E308
+FUN_0206E308: ; 0x0206E308
+ mov r0, #0x78
+ bx lr
+
+ thumb_func_start FUN_0206E30C
+FUN_0206E30C: ; 0x0206E30C
+ add r0, #0x65
+ strb r1, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0206E314
+FUN_0206E314: ; 0x0206E314
+ push {r4-r6, lr}
+ add r4, r1, #0x0
+ add r1, r2, #0x0
+ add r5, r0, #0x0
+ add r6, r3, #0x0
+ bl FUN_0206E30C
+ str r4, [r5, #0x0]
+ str r6, [r5, #0x6c]
+ mov r0, #0x0
+ add r5, #0x66
+ strh r0, [r5, #0x0]
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206E330
+FUN_0206E330: ; 0x0206E330
+ push {r3-r4}
+ mov r4, #0xc
+ mul r4, r3
+ add r0, r0, r4
+ str r1, [r0, #0x4]
+ strb r2, [r0, #0xc]
+ pop {r3-r4}
+ bx lr
+
+ thumb_func_start FUN_0206E340
+FUN_0206E340: ; 0x0206E340
+ add r1, r0, #0x0
+ add r1, #0x76
+ ldrh r2, [r1, #0x0]
+ mov r1, #0x1
+ add r0, #0x76
+ bic r2, r1
+ mov r1, #0x1
+ orr r1, r2
+ strh r1, [r0, #0x0]
+ bx lr
+
+ thumb_func_start FUN_0206E354
+FUN_0206E354: ; 0x0206E354
+ str r1, [r0, #0x70]
+ bx lr
+
+ thumb_func_start FUN_0206E358
+FUN_0206E358: ; 0x0206E358
+ add r0, #0x74
+ strb r1, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0206E360
+FUN_0206E360: ; 0x0206E360
+ add r2, r0, #0x0
+ add r2, #0x76
+ ldrh r3, [r2, #0x0]
+ ldr r2, _0206E378 ; =0xFFFF0001
+ lsl r1, r1, #0x11
+ and r2, r3
+ lsr r1, r1, #0x10
+ orr r1, r2
+ add r0, #0x76
+ strh r1, [r0, #0x0]
+ bx lr
+ nop
+_0206E378: .word 0xFFFF0001
+
+ thumb_func_start FUN_0206E37C
+FUN_0206E37C: ; 0x0206E37C
+ add r0, #0x66
+ ldrh r0, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0206E384
+FUN_0206E384: ; 0x0206E384
+ add r0, #0x68
+ ldrh r0, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0206E38C
+FUN_0206E38C: ; 0x0206E38C
+ add r0, #0x74
+ ldrb r0, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0206E394
+FUN_0206E394: ; 0x0206E394
+ add r0, #0x75
+ ldrb r0, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0206E39C
+FUN_0206E39C: ; 0x0206E39C
+ push {r3, lr}
+ bl FUN_0202390C
+ bl FUN_02028930
+ pop {r3, pc}
+
+ thumb_func_start FUN_0206E3A8
+FUN_0206E3A8: ; 0x0206E3A8
+ push {r4-r6, lr}
+ bl FUN_02029C80
+ add r6, r0, #0x0
+ mov r5, #0x0
+ mov r4, #0x1
+_0206E3B4:
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ bl FUN_02029E2C
+ add r4, r4, #0x1
+ add r5, r5, r0
+ cmp r4, #0x50
+ bls _0206E3B4
+ add r0, r5, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0206E3C8
+FUN_0206E3C8: ; 0x0206E3C8
+ push {r3, lr}
+ bl FUN_02027E24
+ bl FUN_0202708C
+ bl FUN_02027168
+ pop {r3, pc}
+
+ thumb_func_start FUN_0206E3D8
+FUN_0206E3D8: ; 0x0206E3D8
+ push {r3, lr}
+ bl FUN_02027E24
+ bl FUN_0202708C
+ bl FUN_02027184
+ pop {r3, pc}
+
+ thumb_func_start FUN_0206E3E8
+FUN_0206E3E8: ; 0x0206E3E8
+ push {r3, lr}
+ bl FUN_0202A8D8
+ mov r1, #0x0
+ add r2, r1, #0x0
+ bl FUN_0202A3B4
+ pop {r3, pc}
+
+ thumb_func_start FUN_0206E3F8
+FUN_0206E3F8: ; 0x0206E3F8
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r7, r0, #0x0
+ str r1, [sp, #0x8]
+ add r5, r2, #0x0
+ add r4, r3, #0x0
+ mov r0, #0x0
+ mov r1, #0x1a
+ mov r2, #0x7
+ bl FUN_0200A86C
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0200AA80
+ add r4, r0, #0x0
+ cmp r5, #0x0
+ bne _0206E428
+ add r0, r6, #0x0
+ mov r1, #0x63
+ bl FUN_0200A914
+ add r5, r0, #0x0
+ b _0206E4FA
+_0206E428:
+ mov r1, #0x1b
+ lsl r1, r1, #0x4
+ cmp r5, r1
+ bne _0206E454
+ add r0, r6, #0x0
+ mov r1, #0x61
+ bl FUN_0200A914
+ add r5, r0, #0x0
+ add r0, r7, #0x0
+ bl FUN_0206E3E8
+ mov r1, #0x0
+ add r2, r0, #0x0
+ str r1, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ add r0, r4, #0x0
+ mov r3, #0x4
+ bl FUN_0200AD38
+ b _0206E4FA
+_0206E454:
+ add r2, r1, #0x2
+ cmp r5, r2
+ bne _0206E47E
+ add r0, r6, #0x0
+ mov r1, #0x5c
+ bl FUN_0200A914
+ add r5, r0, #0x0
+ add r0, r7, #0x0
+ bl FUN_0206E3A8
+ mov r1, #0x0
+ add r2, r0, #0x0
+ str r1, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ add r0, r4, #0x0
+ mov r3, #0x4
+ bl FUN_0200AD38
+ b _0206E4FA
+_0206E47E:
+ add r2, r1, #0x3
+ cmp r5, r2
+ bne _0206E4C0
+ add r0, r6, #0x0
+ mov r1, #0x5d
+ bl FUN_0200A914
+ add r5, r0, #0x0
+ add r0, r7, #0x0
+ bl FUN_0206E3C8
+ mov r1, #0x0
+ add r2, r0, #0x0
+ str r1, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ add r0, r4, #0x0
+ mov r3, #0x3
+ bl FUN_0200AD38
+ add r0, r7, #0x0
+ bl FUN_0206E3D8
+ add r2, r0, #0x0
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r1, #0x1
+ add r0, r4, #0x0
+ mov r3, #0x2
+ str r1, [sp, #0x4]
+ bl FUN_0200AD38
+ b _0206E4FA
+_0206E4C0:
+ add r1, #0xc
+ cmp r5, r1
+ bne _0206E4EA
+ add r0, r6, #0x0
+ mov r1, #0x39
+ bl FUN_0200A914
+ add r5, r0, #0x0
+ add r0, r7, #0x0
+ bl FUN_0206E39C
+ mov r1, #0x0
+ add r2, r0, #0x0
+ str r1, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ add r0, r4, #0x0
+ mov r3, #0x5
+ bl FUN_0200AD38
+ b _0206E4FA
+_0206E4EA:
+ bl FUN_0200AB18
+ add r0, r6, #0x0
+ bl FUN_0200A8B8
+ add sp, #0xc
+ mov r0, #0x0
+ pop {r4-r7, pc}
+_0206E4FA:
+ ldr r1, [sp, #0x8]
+ add r0, r4, #0x0
+ add r2, r5, #0x0
+ bl FUN_0200B7B8
+ add r0, r5, #0x0
+ bl FUN_02021A20
+ add r0, r4, #0x0
+ bl FUN_0200AB18
+ add r0, r6, #0x0
+ bl FUN_0200A8B8
+ mov r0, #0x1
+ add sp, #0xc
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_0206E51C
+FUN_0206E51C: ; 0x0206E51C
+ push {r3-r7, lr}
+ add r5, r1, #0x0
+ str r0, [sp, #0x0]
+ ldr r4, [sp, #0x18]
+ cmp r3, #0x1
+ beq _0206E52E
+ cmp r3, #0x2
+ beq _0206E54C
+ b _0206E56A
+_0206E52E:
+ mov r0, #0x1
+ mov r1, #0x1a
+ mov r2, #0x7
+ add r3, r4, #0x0
+ bl FUN_0200A86C
+ add r4, r0, #0x0
+ mov r1, #0x38
+ add r2, r5, #0x0
+ bl FUN_0200A8E0
+ add r0, r4, #0x0
+ bl FUN_0200A8B8
+ pop {r3-r7, pc}
+_0206E54C:
+ mov r0, #0x1
+ mov r1, #0x1a
+ mov r2, #0x7
+ add r3, r4, #0x0
+ bl FUN_0200A86C
+ add r4, r0, #0x0
+ mov r1, #0x6f
+ add r2, r5, #0x0
+ bl FUN_0200A8E0
+ add r0, r4, #0x0
+ bl FUN_0200A8B8
+ pop {r3-r7, pc}
+_0206E56A:
+ mov r0, #0x1
+ mov r1, #0x1a
+ mov r2, #0xc7
+ add r3, r4, #0x0
+ bl FUN_0200A86C
+ add r7, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0200AA80
+ add r4, r0, #0x0
+ add r0, r7, #0x0
+ mov r1, #0x24
+ bl FUN_0200A914
+ add r6, r0, #0x0
+ ldr r2, [sp, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_0200ABC0
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ add r2, r6, #0x0
+ bl FUN_0200B7B8
+ add r0, r6, #0x0
+ bl FUN_02021A20
+ add r0, r4, #0x0
+ bl FUN_0200AB18
+ add r0, r7, #0x0
+ bl FUN_0200A8B8
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206E5B4
+FUN_0206E5B4: ; 0x0206E5B4
+ push {r3-r6}
+ add r3, r0, #0x0
+ add r0, r2, #0x0
+ cmp r1, r0
+ beq _0206E63A
+ lsl r2, r1, #0x2
+ ldrh r4, [r3, r2]
+ add r5, r3, r2
+ add r2, sp, #0x0
+ strh r4, [r2, #0x0]
+ ldrh r4, [r5, #0x2]
+ strh r4, [r2, #0x2]
+ cmp r0, r1
+ bls _0206E600
+ sub r0, r0, #0x1
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ lsl r1, r1, #0x10
+ lsl r2, r0, #0x10
+ asr r1, r1, #0x10
+ asr r5, r2, #0x10
+ cmp r1, r5
+ bge _0206E62C
+ lsl r2, r1, #0x2
+ add r2, r3, r2
+ add r4, r2, #0x0
+_0206E5E8:
+ ldrh r6, [r2, #0x4]
+ add r1, r1, #0x1
+ lsl r1, r1, #0x10
+ strh r6, [r4, #0x0]
+ ldrh r6, [r2, #0x6]
+ asr r1, r1, #0x10
+ add r2, r2, #0x4
+ strh r6, [r4, #0x2]
+ add r4, r4, #0x4
+ cmp r1, r5
+ blt _0206E5E8
+ b _0206E62C
+_0206E600:
+ lsl r1, r1, #0x10
+ asr r5, r1, #0x10
+ lsl r1, r0, #0x10
+ asr r4, r1, #0x10
+ cmp r5, r4
+ ble _0206E62C
+ lsl r1, r5, #0x2
+ add r1, r3, r1
+ add r2, r1, #0x0
+_0206E612:
+ sub r6, r1, #0x4
+ ldrh r6, [r6, #0x0]
+ sub r5, r5, #0x1
+ lsl r5, r5, #0x10
+ strh r6, [r2, #0x0]
+ sub r6, r1, #0x2
+ ldrh r6, [r6, #0x0]
+ asr r5, r5, #0x10
+ sub r1, r1, #0x4
+ strh r6, [r2, #0x2]
+ sub r2, r2, #0x4
+ cmp r5, r4
+ bgt _0206E612
+_0206E62C:
+ lsl r4, r0, #0x2
+ add r0, sp, #0x0
+ ldrh r1, [r0, #0x0]
+ add r2, r3, r4
+ strh r1, [r3, r4]
+ ldrh r0, [r0, #0x2]
+ strh r0, [r2, #0x2]
+_0206E63A:
+ pop {r3-r6}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0206E640
+FUN_0206E640: ; 0x0206E640
+ cmp r1, #0x3
+ bhi _0206E6B2
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0206E650: ; jump table (using 16-bit offset)
+ .short _0206E658 - _0206E650 - 2; case 0
+ .short _0206E66A - _0206E650 - 2; case 1
+ .short _0206E684 - _0206E650 - 2; case 2
+ .short _0206E6A0 - _0206E650 - 2; case 3
+_0206E658:
+ cmp r0, #0x0
+ beq _0206E6B2
+ ldr r1, _0206E6B8 ; =0x0000FFFF
+ cmp r0, r1
+ beq _0206E6B2
+ lsl r1, r0, #0x3
+ ldr r0, _0206E6BC ; =0x020F85B4
+ ldrh r0, [r0, r1]
+ bx lr
+_0206E66A:
+ cmp r0, #0x0
+ bne _0206E672
+ ldr r0, _0206E6C0 ; =0x000002BB
+ bx lr
+_0206E672:
+ ldr r1, _0206E6B8 ; =0x0000FFFF
+ cmp r0, r1
+ bne _0206E67C
+ ldr r0, _0206E6C4 ; =0x000002BD
+ bx lr
+_0206E67C:
+ lsl r1, r0, #0x3
+ ldr r0, _0206E6C8 ; =0x020F85B6
+ ldrh r0, [r0, r1]
+ bx lr
+_0206E684:
+ cmp r0, #0x0
+ bne _0206E68E
+ mov r0, #0xaf
+ lsl r0, r0, #0x2
+ bx lr
+_0206E68E:
+ ldr r1, _0206E6B8 ; =0x0000FFFF
+ cmp r0, r1
+ bne _0206E698
+ ldr r0, _0206E6CC ; =0x000002BE
+ bx lr
+_0206E698:
+ lsl r1, r0, #0x3
+ ldr r0, _0206E6D0 ; =0x020F85B8
+ ldrh r0, [r0, r1]
+ bx lr
+_0206E6A0:
+ cmp r0, #0x0
+ beq _0206E6B2
+ ldr r1, _0206E6B8 ; =0x0000FFFF
+ cmp r0, r1
+ beq _0206E6B2
+ lsl r1, r0, #0x3
+ ldr r0, _0206E6D4 ; =0x020F85BA
+ ldrh r0, [r0, r1]
+ bx lr
+_0206E6B2:
+ mov r0, #0x0
+ bx lr
+ nop
+_0206E6B8: .word 0x0000FFFF
+_0206E6BC: .word 0x020F85B4
+_0206E6C0: .word 0x000002BB
+_0206E6C4: .word 0x000002BD
+_0206E6C8: .word 0x020F85B6
+_0206E6CC: .word 0x000002BE
+_0206E6D0: .word 0x020F85B8
+_0206E6D4: .word 0x020F85BA
+
+ thumb_func_start FUN_0206E6D8
+FUN_0206E6D8: ; 0x0206E6D8
+ push {r3-r4}
+ mov r2, #0x1d
+ ldr r3, _0206E704 ; =0x020F85B4
+ mov r4, #0x1
+ lsl r2, r2, #0x4
+_0206E6E2:
+ lsl r1, r4, #0x3
+ add r1, r3, r1
+ ldrh r1, [r1, #0x6]
+ cmp r0, r1
+ bne _0206E6F2
+ add r0, r4, #0x0
+ pop {r3-r4}
+ bx lr
+_0206E6F2:
+ add r1, r4, #0x1
+ lsl r1, r1, #0x10
+ lsr r4, r1, #0x10
+ cmp r4, r2
+ bls _0206E6E2
+ mov r0, #0x0
+ pop {r3-r4}
+ bx lr
+ nop
+_0206E704: .word 0x020F85B4
+
+ thumb_func_start FUN_0206E708
+FUN_0206E708: ; 0x0206E708
+ mov r0, #0x1
+ bx lr
+
+ thumb_func_start FUN_0206E70C
+FUN_0206E70C: ; 0x0206E70C
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_0206E710
+FUN_0206E710: ; 0x0206E710
+ push {r3, lr}
+ add r3, r0, #0x0
+ mov r0, #0x1d
+ lsl r0, r0, #0x4
+ cmp r3, r0
+ bls _0206E71E
+ mov r3, #0x0
+_0206E71E:
+ cmp r1, #0x0
+ beq _0206E72C
+ cmp r1, #0x1
+ beq _0206E73A
+ cmp r1, #0x2
+ beq _0206E748
+ b _0206E756
+_0206E72C:
+ ldr r1, _0206E75C ; =0x020F85B4
+ lsl r3, r3, #0x3
+ ldrh r1, [r1, r3]
+ mov r0, #0xf
+ bl LoadFromNarc_2
+ pop {r3, pc}
+_0206E73A:
+ ldr r1, _0206E760 ; =0x020F85B6
+ lsl r3, r3, #0x3
+ ldrh r1, [r1, r3]
+ mov r0, #0x10
+ bl LoadFromNarc_2
+ pop {r3, pc}
+_0206E748:
+ ldr r1, _0206E764 ; =0x020F85B8
+ lsl r3, r3, #0x3
+ ldrh r1, [r1, r3]
+ mov r0, #0x10
+ bl LoadFromNarc_2
+ pop {r3, pc}
+_0206E756:
+ mov r0, #0x0
+ pop {r3, pc}
+ nop
+_0206E75C: .word 0x020F85B4
+_0206E760: .word 0x020F85B6
+_0206E764: .word 0x020F85B8
+
+ thumb_func_start FUN_0206E768
+FUN_0206E768: ; 0x0206E768
+ push {r4-r6, lr}
+ add r3, r2, #0x0
+ mov r2, #0x56
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ mov r0, #0x1
+ mov r1, #0x1a
+ lsl r2, r2, #0x2
+ bl FUN_0200A86C
+ add r6, r0, #0x0
+ add r1, r4, #0x0
+ add r2, r5, #0x0
+ bl FUN_0200A8E0
+ add r0, r6, #0x0
+ bl FUN_0200A8B8
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206E790
+FUN_0206E790: ; 0x0206E790
+ push {r4-r6, lr}
+ add r3, r2, #0x0
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ ldr r2, _0206E7B4 ; =0x00000157
+ mov r0, #0x1
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ add r6, r0, #0x0
+ add r1, r4, #0x0
+ add r2, r5, #0x0
+ bl FUN_0200A8E0
+ add r0, r6, #0x0
+ bl FUN_0200A8B8
+ pop {r4-r6, pc}
+ .balign 4
+_0206E7B4: .word 0x00000157
+
+ thumb_func_start FUN_0206E7B8
+FUN_0206E7B8: ; 0x0206E7B8
+ push {r4-r6, lr}
+ add r4, r1, #0x0
+ mov r1, #0x0
+ add r5, r2, #0x0
+ bl FUN_0206E710
+ add r6, r0, #0x0
+ add r1, r4, #0x0
+ bl FUN_0206E7DC
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02016A8C
+ add r0, r4, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206E7DC
+FUN_0206E7DC: ; 0x0206E7DC
+ push {r3, lr}
+ cmp r1, #0xe
+ bhi _0206E85C
+ add r2, r1, r1
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_0206E7EE: ; jump table (using 16-bit offset)
+ .short _0206E80C - _0206E7EE - 2; case 0
+ .short _0206E810 - _0206E7EE - 2; case 1
+ .short _0206E814 - _0206E7EE - 2; case 2
+ .short _0206E818 - _0206E7EE - 2; case 3
+ .short _0206E820 - _0206E7EE - 2; case 4
+ .short _0206E828 - _0206E7EE - 2; case 5
+ .short _0206E830 - _0206E7EE - 2; case 6
+ .short _0206E834 - _0206E7EE - 2; case 7
+ .short _0206E838 - _0206E7EE - 2; case 8
+ .short _0206E83C - _0206E7EE - 2; case 9
+ .short _0206E840 - _0206E7EE - 2; case 10
+ .short _0206E844 - _0206E7EE - 2; case 11
+ .short _0206E848 - _0206E7EE - 2; case 12
+ .short _0206E850 - _0206E7EE - 2; case 13
+ .short _0206E858 - _0206E7EE - 2; case 14
+_0206E80C:
+ ldrh r0, [r0, #0x0]
+ pop {r3, pc}
+_0206E810:
+ ldrb r0, [r0, #0x2]
+ pop {r3, pc}
+_0206E814:
+ ldrb r0, [r0, #0x3]
+ pop {r3, pc}
+_0206E818:
+ ldrh r0, [r0, #0x8]
+ lsl r0, r0, #0x1a
+ lsr r0, r0, #0x1f
+ pop {r3, pc}
+_0206E820:
+ ldrh r0, [r0, #0x8]
+ lsl r0, r0, #0x19
+ lsr r0, r0, #0x1f
+ pop {r3, pc}
+_0206E828:
+ ldrh r0, [r0, #0x8]
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x1c
+ pop {r3, pc}
+_0206E830:
+ ldrb r0, [r0, #0xa]
+ pop {r3, pc}
+_0206E834:
+ ldrb r0, [r0, #0xb]
+ pop {r3, pc}
+_0206E838:
+ ldrb r0, [r0, #0x4]
+ pop {r3, pc}
+_0206E83C:
+ ldrb r0, [r0, #0x5]
+ pop {r3, pc}
+_0206E840:
+ ldrb r0, [r0, #0x6]
+ pop {r3, pc}
+_0206E844:
+ ldrb r0, [r0, #0x7]
+ pop {r3, pc}
+_0206E848:
+ ldrh r0, [r0, #0x8]
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x1b
+ pop {r3, pc}
+_0206E850:
+ ldrh r0, [r0, #0x8]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x1b
+ pop {r3, pc}
+_0206E858:
+ ldrb r0, [r0, #0xc]
+ pop {r3, pc}
+_0206E85C:
+ ldrb r2, [r0, #0xc]
+ cmp r2, #0x0
+ beq _0206E868
+ cmp r2, #0x1
+ beq _0206E86C
+ b _0206E874
+_0206E868:
+ ldrb r0, [r0, #0xe]
+ pop {r3, pc}
+_0206E86C:
+ add r0, #0xe
+ bl FUN_0206E878
+ pop {r3, pc}
+_0206E874:
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_0206E878
+FUN_0206E878: ; 0x0206E878
+ sub r1, #0xf
+ cmp r1, #0x2b
+ bls _0206E880
+ b _0206EA2A
+_0206E880:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0206E88C: ; jump table (using 16-bit offset)
+ .short _0206E8E4 - _0206E88C - 2; case 0
+ .short _0206E8EC - _0206E88C - 2; case 1
+ .short _0206E8F4 - _0206E88C - 2; case 2
+ .short _0206E8FC - _0206E88C - 2; case 3
+ .short _0206E904 - _0206E88C - 2; case 4
+ .short _0206E90C - _0206E88C - 2; case 5
+ .short _0206E914 - _0206E88C - 2; case 6
+ .short _0206E91C - _0206E88C - 2; case 7
+ .short _0206E924 - _0206E88C - 2; case 8
+ .short _0206E92C - _0206E88C - 2; case 9
+ .short _0206E934 - _0206E88C - 2; case 10
+ .short _0206E93C - _0206E88C - 2; case 11
+ .short _0206E944 - _0206E88C - 2; case 12
+ .short _0206E94C - _0206E88C - 2; case 13
+ .short _0206E954 - _0206E88C - 2; case 14
+ .short _0206E95C - _0206E88C - 2; case 15
+ .short _0206E964 - _0206E88C - 2; case 16
+ .short _0206E96C - _0206E88C - 2; case 17
+ .short _0206E974 - _0206E88C - 2; case 18
+ .short _0206E97C - _0206E88C - 2; case 19
+ .short _0206E984 - _0206E88C - 2; case 20
+ .short _0206E98C - _0206E88C - 2; case 21
+ .short _0206E994 - _0206E88C - 2; case 22
+ .short _0206E99C - _0206E88C - 2; case 23
+ .short _0206E9A4 - _0206E88C - 2; case 24
+ .short _0206E9AC - _0206E88C - 2; case 25
+ .short _0206E9B4 - _0206E88C - 2; case 26
+ .short _0206E9BC - _0206E88C - 2; case 27
+ .short _0206E9C4 - _0206E88C - 2; case 28
+ .short _0206E9CC - _0206E88C - 2; case 29
+ .short _0206E9D4 - _0206E88C - 2; case 30
+ .short _0206E9DC - _0206E88C - 2; case 31
+ .short _0206E9E4 - _0206E88C - 2; case 32
+ .short _0206E9EC - _0206E88C - 2; case 33
+ .short _0206E9F2 - _0206E88C - 2; case 34
+ .short _0206E9F8 - _0206E88C - 2; case 35
+ .short _0206E9FE - _0206E88C - 2; case 36
+ .short _0206EA04 - _0206E88C - 2; case 37
+ .short _0206EA0A - _0206E88C - 2; case 38
+ .short _0206EA10 - _0206E88C - 2; case 39
+ .short _0206EA14 - _0206E88C - 2; case 40
+ .short _0206EA18 - _0206E88C - 2; case 41
+ .short _0206EA1E - _0206E88C - 2; case 42
+ .short _0206EA24 - _0206E88C - 2; case 43
+_0206E8E4:
+ ldrb r0, [r0, #0x0]
+ lsl r0, r0, #0x1f
+ lsr r0, r0, #0x1f
+ bx lr
+_0206E8EC:
+ ldrb r0, [r0, #0x0]
+ lsl r0, r0, #0x1e
+ lsr r0, r0, #0x1f
+ bx lr
+_0206E8F4:
+ ldrb r0, [r0, #0x0]
+ lsl r0, r0, #0x1d
+ lsr r0, r0, #0x1f
+ bx lr
+_0206E8FC:
+ ldrb r0, [r0, #0x0]
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1f
+ bx lr
+_0206E904:
+ ldrb r0, [r0, #0x0]
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x1f
+ bx lr
+_0206E90C:
+ ldrb r0, [r0, #0x0]
+ lsl r0, r0, #0x1a
+ lsr r0, r0, #0x1f
+ bx lr
+_0206E914:
+ ldrb r0, [r0, #0x0]
+ lsl r0, r0, #0x19
+ lsr r0, r0, #0x1f
+ bx lr
+_0206E91C:
+ ldrb r0, [r0, #0x0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1f
+ bx lr
+_0206E924:
+ ldrb r0, [r0, #0x1]
+ lsl r0, r0, #0x1f
+ lsr r0, r0, #0x1f
+ bx lr
+_0206E92C:
+ ldrb r0, [r0, #0x1]
+ lsl r0, r0, #0x1e
+ lsr r0, r0, #0x1f
+ bx lr
+_0206E934:
+ ldrb r0, [r0, #0x1]
+ lsl r0, r0, #0x1d
+ lsr r0, r0, #0x1f
+ bx lr
+_0206E93C:
+ ldrb r0, [r0, #0x1]
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1f
+ bx lr
+_0206E944:
+ ldrb r0, [r0, #0x1]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1c
+ bx lr
+_0206E94C:
+ ldrb r0, [r0, #0x2]
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1c
+ bx lr
+_0206E954:
+ ldrb r0, [r0, #0x2]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1c
+ bx lr
+_0206E95C:
+ ldrb r0, [r0, #0x3]
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1c
+ bx lr
+_0206E964:
+ ldrb r0, [r0, #0x3]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1c
+ bx lr
+_0206E96C:
+ ldrb r0, [r0, #0x4]
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1c
+ bx lr
+_0206E974:
+ ldrb r0, [r0, #0x4]
+ lsl r0, r0, #0x1a
+ lsr r0, r0, #0x1e
+ bx lr
+_0206E97C:
+ ldrb r0, [r0, #0x4]
+ lsl r0, r0, #0x19
+ lsr r0, r0, #0x1f
+ bx lr
+_0206E984:
+ ldrb r0, [r0, #0x4]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1f
+ bx lr
+_0206E98C:
+ ldrb r0, [r0, #0x5]
+ lsl r0, r0, #0x1f
+ lsr r0, r0, #0x1f
+ bx lr
+_0206E994:
+ ldrb r0, [r0, #0x5]
+ lsl r0, r0, #0x1e
+ lsr r0, r0, #0x1f
+ bx lr
+_0206E99C:
+ ldrb r0, [r0, #0x5]
+ lsl r0, r0, #0x1d
+ lsr r0, r0, #0x1f
+ bx lr
+_0206E9A4:
+ ldrb r0, [r0, #0x5]
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1f
+ bx lr
+_0206E9AC:
+ ldrb r0, [r0, #0x5]
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x1f
+ bx lr
+_0206E9B4:
+ ldrb r0, [r0, #0x5]
+ lsl r0, r0, #0x1a
+ lsr r0, r0, #0x1f
+ bx lr
+_0206E9BC:
+ ldrb r0, [r0, #0x5]
+ lsl r0, r0, #0x19
+ lsr r0, r0, #0x1f
+ bx lr
+_0206E9C4:
+ ldrb r0, [r0, #0x5]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1f
+ bx lr
+_0206E9CC:
+ ldrb r0, [r0, #0x6]
+ lsl r0, r0, #0x1f
+ lsr r0, r0, #0x1f
+ bx lr
+_0206E9D4:
+ ldrb r0, [r0, #0x6]
+ lsl r0, r0, #0x1e
+ lsr r0, r0, #0x1f
+ bx lr
+_0206E9DC:
+ ldrb r0, [r0, #0x6]
+ lsl r0, r0, #0x1d
+ lsr r0, r0, #0x1f
+ bx lr
+_0206E9E4:
+ ldrb r0, [r0, #0x6]
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1f
+ bx lr
+_0206E9EC:
+ mov r1, #0x7
+ ldrsb r0, [r0, r1]
+ bx lr
+_0206E9F2:
+ mov r1, #0x8
+ ldrsb r0, [r0, r1]
+ bx lr
+_0206E9F8:
+ mov r1, #0x9
+ ldrsb r0, [r0, r1]
+ bx lr
+_0206E9FE:
+ mov r1, #0xa
+ ldrsb r0, [r0, r1]
+ bx lr
+_0206EA04:
+ mov r1, #0xb
+ ldrsb r0, [r0, r1]
+ bx lr
+_0206EA0A:
+ mov r1, #0xc
+ ldrsb r0, [r0, r1]
+ bx lr
+_0206EA10:
+ ldrb r0, [r0, #0xd]
+ bx lr
+_0206EA14:
+ ldrb r0, [r0, #0xe]
+ bx lr
+_0206EA18:
+ mov r1, #0xf
+ ldrsb r0, [r0, r1]
+ bx lr
+_0206EA1E:
+ mov r1, #0x10
+ ldrsb r0, [r0, r1]
+ bx lr
+_0206EA24:
+ mov r1, #0x11
+ ldrsb r0, [r0, r1]
+ bx lr
+_0206EA2A:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0206EA30
+FUN_0206EA30: ; 0x0206EA30
+ mov r2, #0x52
+ lsl r2, r2, #0x2
+ cmp r0, r2
+ blo _0206EA40
+ add r1, r2, #0x0
+ add r1, #0x63
+ cmp r0, r1
+ bls _0206EA44
+_0206EA40:
+ mov r0, #0x0
+ bx lr
+_0206EA44:
+ sub r0, r0, r2
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0xf
+ ldr r0, _0206EA50 ; =0x020F84EC
+ ldrh r0, [r0, r1]
+ bx lr
+ .balign 4
+_0206EA50: .word 0x020F84EC
+
+ thumb_func_start FUN_0206EA54
+FUN_0206EA54: ; 0x0206EA54
+ ldr r2, _0206EA78 ; =0x020F84EC
+ mov r3, #0x0
+_0206EA58:
+ lsl r1, r3, #0x1
+ add r1, r2, r1
+ add r1, #0xb8
+ ldrh r1, [r1, #0x0]
+ cmp r0, r1
+ bne _0206EA68
+ mov r0, #0x1
+ bx lr
+_0206EA68:
+ add r1, r3, #0x1
+ lsl r1, r1, #0x18
+ lsr r3, r1, #0x18
+ cmp r3, #0x8
+ blo _0206EA58
+ mov r0, #0x0
+ bx lr
+ nop
+_0206EA78: .word 0x020F84EC
+
+ thumb_func_start FUN_0206EA7C
+FUN_0206EA7C: ; 0x0206EA7C
+ mov r2, #0x52
+ lsl r2, r2, #0x2
+ cmp r0, r2
+ blo _0206EA8C
+ add r1, r2, #0x0
+ add r1, #0x63
+ cmp r0, r1
+ bls _0206EA90
+_0206EA8C:
+ mov r0, #0x0
+ bx lr
+_0206EA90:
+ sub r0, r0, r2
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+
+ thumb_func_start FUN_0206EA98
+FUN_0206EA98: ; 0x0206EA98
+ ldr r3, _0206EAB4 ; =0x020F8454
+ mov r2, #0x0
+_0206EA9C:
+ ldrh r1, [r3, #0x0]
+ cmp r0, r1
+ bne _0206EAA6
+ mov r0, #0x1
+ bx lr
+_0206EAA6:
+ add r2, r2, #0x1
+ add r3, r3, #0x2
+ cmp r2, #0xc
+ blo _0206EA9C
+ mov r0, #0x0
+ bx lr
+ nop
+_0206EAB4: .word 0x020F8454
+
+ thumb_func_start FUN_0206EAB8
+FUN_0206EAB8: ; 0x0206EAB8
+ ldr r3, _0206EAD4 ; =0x020F8454
+ mov r2, #0x0
+_0206EABC:
+ ldrh r1, [r3, #0x0]
+ cmp r0, r1
+ bne _0206EAC8
+ lsl r0, r2, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+_0206EAC8:
+ add r2, r2, #0x1
+ add r3, r3, #0x2
+ cmp r2, #0xc
+ blo _0206EABC
+ mov r0, #0x0
+ bx lr
+ .balign 4
+_0206EAD4: .word 0x020F8454
+
+ thumb_func_start FUN_0206EAD8
+FUN_0206EAD8: ; 0x0206EAD8
+ cmp r0, #0xc
+ blo _0206EAE0
+ mov r0, #0x0
+ bx lr
+_0206EAE0:
+ lsl r1, r0, #0x1
+ ldr r0, _0206EAE8 ; =0x020F8454
+ ldrh r0, [r0, r1]
+ bx lr
+ .balign 4
+_0206EAE8: .word 0x020F8454
+
+ thumb_func_start FUN_0206EAEC
+FUN_0206EAEC: ; 0x0206EAEC
+ ldr r3, _0206EB08 ; =0x020F846C
+ mov r2, #0x0
+_0206EAF0:
+ ldrh r1, [r3, #0x0]
+ cmp r0, r1
+ bne _0206EAFA
+ mov r0, #0x1
+ bx lr
+_0206EAFA:
+ add r2, r2, #0x1
+ add r3, r3, #0x2
+ cmp r2, #0x40
+ blo _0206EAF0
+ mov r0, #0x0
+ bx lr
+ nop
+_0206EB08: .word 0x020F846C
+
+ thumb_func_start FUN_0206EB0C
+FUN_0206EB0C: ; 0x0206EB0C
+ cmp r0, #0x95
+ bhs _0206EB14
+ mov r0, #0xff
+ bx lr
+_0206EB14:
+ sub r0, #0x95
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+
+ thumb_func_start FUN_0206EB1C
+FUN_0206EB1C: ; 0x0206EB1C
+ cmp r0, #0x40
+ blo _0206EB24
+ ldr r0, _0206EB2C ; =0x0000FFFF
+ bx lr
+_0206EB24:
+ lsl r1, r0, #0x1
+ ldr r0, _0206EB30 ; =0x020F846C
+ ldrh r0, [r0, r1]
+ bx lr
+ .balign 4
+_0206EB2C: .word 0x0000FFFF
+_0206EB30: .word 0x020F846C
+
+ thumb_func_start FUN_0206EB34
+FUN_0206EB34: ; 0x0206EB34
+ ldr r1, _0206EB4C ; =0x0000FFDE
+ add r0, r0, r1
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ cmp r0, #0x3
+ bhi _0206EB44
+ mov r0, #0x1
+ b _0206EB46
+_0206EB44:
+ mov r0, #0x0
+_0206EB46:
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+ .balign 4
+_0206EB4C: .word 0x0000FFDE
+
+ thumb_func_start FUN_0206EB50
+FUN_0206EB50: ; 0x0206EB50
+ push {r3-r4, lr}
+ sub sp, #0x4
+ add r4, r0, #0x0
+ mov r0, #0x1d
+ lsl r0, r0, #0x4
+ mov r1, #0x0
+ bl FUN_0206E640
+ mov r1, #0x24
+ mul r1, r0
+ str r1, [sp, #0x0]
+ mov r1, #0x0
+ mov r0, #0xf
+ add r2, r4, #0x0
+ add r3, r1, #0x0
+ bl FUN_02006564
+ add sp, #0x4
+ pop {r3-r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206EB78
+FUN_0206EB78: ; 0x0206EB78
+ mov r2, #0x24
+ mul r2, r1
+ add r0, r0, r2
+ bx lr
+
+ thumb_func_start FUN_0206EB80
+FUN_0206EB80: ; 0x0206EB80
+ ldr r0, _0206EB84 ; =0x00000774
+ bx lr
+ .balign 4
+_0206EB84: .word 0x00000774
+
+ thumb_func_start FUN_0206EB88
+FUN_0206EB88: ; 0x0206EB88
+ push {r4, lr}
+ ldr r1, _0206EB9C ; =0x00000774
+ bl FUN_02016998
+ add r4, r0, #0x0
+ bl FUN_0206EBA0
+ add r0, r4, #0x0
+ pop {r4, pc}
+ nop
+_0206EB9C: .word 0x00000774
+
+ thumb_func_start FUN_0206EBA0
+FUN_0206EBA0: ; 0x0206EBA0
+ ldr r3, _0206EBAC ; =MIi_CpuClear16
+ add r1, r0, #0x0
+ mov r0, #0x0
+ ldr r2, _0206EBB0 ; =0x00000774
+ bx r3
+ nop
+_0206EBAC: .word MIi_CpuClear16
+_0206EBB0: .word 0x00000774
+
+ thumb_func_start FUN_0206EBB4
+FUN_0206EBB4: ; 0x0206EBB4
+ ldr r3, _0206EBBC ; =MI_CpuCopy8
+ ldr r2, _0206EBC0 ; =0x00000774
+ bx r3
+ nop
+_0206EBBC: .word MI_CpuCopy8
+_0206EBC0: .word 0x00000774
+
+ thumb_func_start FUN_0206EBC4
+FUN_0206EBC4: ; 0x0206EBC4
+ mov r1, #0x77
+ lsl r1, r1, #0x4
+ ldr r0, [r0, r1]
+ bx lr
+
+ thumb_func_start FUN_0206EBCC
+FUN_0206EBCC: ; 0x0206EBCC
+ mov r2, #0x77
+ lsl r2, r2, #0x4
+ str r1, [r0, r2]
+ bx lr
+
+ thumb_func_start FUN_0206EBD4
+FUN_0206EBD4: ; 0x0206EBD4
+ push {r4-r6, lr}
+ add r5, r2, #0x0
+ add r4, r0, #0x0
+ add r0, r1, #0x0
+ ldr r2, [sp, #0x10]
+ mov r1, #0x5
+ add r6, r3, #0x0
+ bl FUN_0206E7B8
+ cmp r0, #0x7
+ bhi _0206EC64
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0206EBF6: ; jump table (using 16-bit offset)
+ .short _0206EC14 - _0206EBF6 - 2; case 0
+ .short _0206EC28 - _0206EBF6 - 2; case 1
+ .short _0206EC34 - _0206EBF6 - 2; case 2
+ .short _0206EC58 - _0206EBF6 - 2; case 3
+ .short _0206EC1C - _0206EBF6 - 2; case 4
+ .short _0206EC4C - _0206EBF6 - 2; case 5
+ .short _0206EC40 - _0206EBF6 - 2; case 6
+ .short _0206EC06 - _0206EBF6 - 2; case 7
+_0206EC06:
+ mov r1, #0xa5
+ lsl r1, r1, #0x2
+ add r1, r4, r1
+ str r1, [r5, #0x0]
+ mov r1, #0x32
+ str r1, [r6, #0x0]
+ pop {r4-r6, pc}
+_0206EC14:
+ str r4, [r5, #0x0]
+ mov r1, #0xa5
+ str r1, [r6, #0x0]
+ pop {r4-r6, pc}
+_0206EC1C:
+ ldr r1, _0206EC68 ; =0x000005BC
+ add r1, r4, r1
+ str r1, [r5, #0x0]
+ mov r1, #0x40
+ str r1, [r6, #0x0]
+ pop {r4-r6, pc}
+_0206EC28:
+ ldr r1, _0206EC6C ; =0x0000051C
+ add r1, r4, r1
+ str r1, [r5, #0x0]
+ mov r1, #0x28
+ str r1, [r6, #0x0]
+ pop {r4-r6, pc}
+_0206EC34:
+ ldr r1, _0206EC70 ; =0x000006BC
+ add r1, r4, r1
+ str r1, [r5, #0x0]
+ mov r1, #0xf
+ str r1, [r6, #0x0]
+ pop {r4-r6, pc}
+_0206EC40:
+ ldr r1, _0206EC74 ; =0x000006F8
+ add r1, r4, r1
+ str r1, [r5, #0x0]
+ mov r1, #0x1e
+ str r1, [r6, #0x0]
+ pop {r4-r6, pc}
+_0206EC4C:
+ ldr r1, _0206EC78 ; =0x000004EC
+ add r1, r4, r1
+ str r1, [r5, #0x0]
+ mov r1, #0xc
+ str r1, [r6, #0x0]
+ pop {r4-r6, pc}
+_0206EC58:
+ mov r1, #0xd7
+ lsl r1, r1, #0x2
+ add r1, r4, r1
+ str r1, [r5, #0x0]
+ mov r1, #0x64
+ str r1, [r6, #0x0]
+_0206EC64:
+ pop {r4-r6, pc}
+ nop
+_0206EC68: .word 0x000005BC
+_0206EC6C: .word 0x0000051C
+_0206EC70: .word 0x000006BC
+_0206EC74: .word 0x000006F8
+_0206EC78: .word 0x000004EC
+
+ thumb_func_start FUN_0206EC7C
+FUN_0206EC7C: ; 0x0206EC7C
+ push {r4-r7}
+ add r5, r1, #0x0
+ mov r1, #0x0
+ add r7, r0, #0x0
+ add r4, r2, #0x0
+ mov r12, r3
+ mvn r1, r1
+ mov r0, #0x0
+ cmp r5, #0x0
+ bls _0206ECCA
+ add r2, r7, #0x0
+ add r3, r1, #0x0
+_0206EC94:
+ ldrh r6, [r2, #0x0]
+ cmp r4, r6
+ bne _0206ECB2
+ lsl r0, r0, #0x2
+ add r0, r7, r0
+ ldrh r2, [r0, #0x2]
+ mov r1, r12
+ add r2, r1, r2
+ add r1, sp, #0x0
+ ldrh r1, [r1, #0x10]
+ cmp r2, r1
+ ble _0206ECDC
+ mov r0, #0x0
+ pop {r4-r7}
+ bx lr
+_0206ECB2:
+ cmp r1, r3
+ bne _0206ECC2
+ cmp r6, #0x0
+ bne _0206ECC2
+ ldrh r6, [r2, #0x2]
+ cmp r6, #0x0
+ bne _0206ECC2
+ add r1, r0, #0x0
+_0206ECC2:
+ add r0, r0, #0x1
+ add r2, r2, #0x4
+ cmp r0, r5
+ blo _0206EC94
+_0206ECCA:
+ mov r0, #0x0
+ mvn r0, r0
+ cmp r1, r0
+ bne _0206ECD8
+ mov r0, #0x0
+ pop {r4-r7}
+ bx lr
+_0206ECD8:
+ lsl r0, r1, #0x2
+ add r0, r7, r0
+_0206ECDC:
+ pop {r4-r7}
+ bx lr
+
+ thumb_func_start FUN_0206ECE0
+FUN_0206ECE0: ; 0x0206ECE0
+ push {r4-r5, lr}
+ sub sp, #0xc
+ add r4, r2, #0x0
+ str r3, [sp, #0x0]
+ add r2, sp, #0x8
+ add r3, sp, #0x4
+ add r5, r1, #0x0
+ bl FUN_0206EBD4
+ cmp r0, #0x3
+ bne _0206ED0A
+ mov r0, #0x63
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0x4]
+ add r2, r5, #0x0
+ add r3, r4, #0x0
+ bl FUN_0206EC7C
+ add sp, #0xc
+ pop {r4-r5, pc}
+_0206ED0A:
+ ldr r0, _0206ED20 ; =0x000003E7
+ add r2, r5, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0x4]
+ add r3, r4, #0x0
+ bl FUN_0206EC7C
+ add sp, #0xc
+ pop {r4-r5, pc}
+ nop
+_0206ED20: .word 0x000003E7
+
+ thumb_func_start FUN_0206ED24
+FUN_0206ED24: ; 0x0206ED24
+ push {r3, lr}
+ bl FUN_0206ECE0
+ cmp r0, #0x0
+ beq _0206ED32
+ mov r0, #0x1
+ pop {r3, pc}
+_0206ED32:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206ED38
+FUN_0206ED38: ; 0x0206ED38
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r7, r0, #0x0
+ add r5, r1, #0x0
+ add r4, r2, #0x0
+ add r6, r3, #0x0
+ bl FUN_0206ECE0
+ str r0, [sp, #0x8]
+ cmp r0, #0x0
+ bne _0206ED54
+ add sp, #0xc
+ mov r0, #0x0
+ pop {r4-r7, pc}
+_0206ED54:
+ strh r5, [r0, #0x0]
+ ldr r1, [sp, #0x8]
+ add r2, sp, #0x8
+ ldrh r0, [r1, #0x2]
+ add r3, sp, #0x4
+ add r0, r0, r4
+ strh r0, [r1, #0x2]
+ add r0, r7, #0x0
+ add r1, r5, #0x0
+ str r6, [sp, #0x0]
+ bl FUN_0206EBD4
+ sub r0, r0, #0x3
+ cmp r0, #0x1
+ bhi _0206ED7A
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0x4]
+ bl FUN_0206EF94
+_0206ED7A:
+ mov r0, #0x1
+ add sp, #0xc
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_0206ED80
+FUN_0206ED80: ; 0x0206ED80
+ push {r3-r6}
+ mov r5, #0x0
+ cmp r1, #0x0
+ bls _0206EDA8
+ add r6, r0, #0x0
+_0206ED8A:
+ ldrh r4, [r6, #0x0]
+ cmp r2, r4
+ bne _0206EDA0
+ lsl r1, r5, #0x2
+ add r0, r0, r1
+ ldrh r1, [r0, #0x2]
+ cmp r1, r3
+ bhs _0206EDAA
+ mov r0, #0x0
+ pop {r3-r6}
+ bx lr
+_0206EDA0:
+ add r5, r5, #0x1
+ add r6, r6, #0x4
+ cmp r5, r1
+ blo _0206ED8A
+_0206EDA8:
+ mov r0, #0x0
+_0206EDAA:
+ pop {r3-r6}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0206EDB0
+FUN_0206EDB0: ; 0x0206EDB0
+ push {r4-r5, lr}
+ sub sp, #0xc
+ add r4, r2, #0x0
+ str r3, [sp, #0x0]
+ add r2, sp, #0x8
+ add r3, sp, #0x4
+ add r5, r1, #0x0
+ bl FUN_0206EBD4
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0x4]
+ add r2, r5, #0x0
+ add r3, r4, #0x0
+ bl FUN_0206ED80
+ add sp, #0xc
+ pop {r4-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206EDD4
+FUN_0206EDD4: ; 0x0206EDD4
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r6, r0, #0x0
+ add r7, r1, #0x0
+ add r5, r2, #0x0
+ add r4, r3, #0x0
+ bl FUN_0206EDB0
+ str r0, [sp, #0x8]
+ cmp r0, #0x0
+ bne _0206EDF0
+ add sp, #0xc
+ mov r0, #0x0
+ pop {r4-r7, pc}
+_0206EDF0:
+ ldrh r1, [r0, #0x2]
+ sub r1, r1, r5
+ strh r1, [r0, #0x2]
+ ldr r1, [sp, #0x8]
+ ldrh r0, [r1, #0x2]
+ cmp r0, #0x0
+ bne _0206EE02
+ mov r0, #0x0
+ strh r0, [r1, #0x0]
+_0206EE02:
+ str r4, [sp, #0x0]
+ add r0, r6, #0x0
+ add r1, r7, #0x0
+ add r2, sp, #0x8
+ add r3, sp, #0x4
+ bl FUN_0206EBD4
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0x4]
+ bl FUN_0206EF48
+ mov r0, #0x1
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206EE20
+FUN_0206EE20: ; 0x0206EE20
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ add r4, r3, #0x0
+ bl FUN_0206ED80
+ cmp r0, #0x0
+ bne _0206EE34
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_0206EE34:
+ ldrh r1, [r0, #0x2]
+ sub r1, r1, r4
+ strh r1, [r0, #0x2]
+ ldrh r1, [r0, #0x2]
+ cmp r1, #0x0
+ bne _0206EE44
+ mov r1, #0x0
+ strh r1, [r0, #0x0]
+_0206EE44:
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_0206EF48
+ mov r0, #0x1
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0206EE50
+FUN_0206EE50: ; 0x0206EE50
+ push {r3, lr}
+ bl FUN_0206EDB0
+ cmp r0, #0x0
+ beq _0206EE5E
+ mov r0, #0x1
+ pop {r3, pc}
+_0206EE5E:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206EE64
+FUN_0206EE64: ; 0x0206EE64
+ cmp r1, #0x7
+ bhi _0206EEC4
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0206EE74: ; jump table (using 16-bit offset)
+ .short _0206EE8E - _0206EE74 - 2; case 0
+ .short _0206EE9A - _0206EE74 - 2; case 1
+ .short _0206EEA2 - _0206EE74 - 2; case 2
+ .short _0206EEBA - _0206EE74 - 2; case 3
+ .short _0206EE92 - _0206EE74 - 2; case 4
+ .short _0206EEB2 - _0206EE74 - 2; case 5
+ .short _0206EEAA - _0206EE74 - 2; case 6
+ .short _0206EE84 - _0206EE74 - 2; case 7
+_0206EE84:
+ mov r1, #0xa5
+ lsl r1, r1, #0x2
+ add r0, r0, r1
+ mov r2, #0x32
+ b _0206EEC8
+_0206EE8E:
+ mov r2, #0xa5
+ b _0206EEC8
+_0206EE92:
+ ldr r1, _0206EEE4 ; =0x000005BC
+ mov r2, #0x40
+ add r0, r0, r1
+ b _0206EEC8
+_0206EE9A:
+ ldr r1, _0206EEE8 ; =0x0000051C
+ mov r2, #0x28
+ add r0, r0, r1
+ b _0206EEC8
+_0206EEA2:
+ ldr r1, _0206EEEC ; =0x000006BC
+ mov r2, #0xf
+ add r0, r0, r1
+ b _0206EEC8
+_0206EEAA:
+ ldr r1, _0206EEF0 ; =0x000006F8
+ mov r2, #0x1e
+ add r0, r0, r1
+ b _0206EEC8
+_0206EEB2:
+ ldr r1, _0206EEF4 ; =0x000004EC
+ mov r2, #0xc
+ add r0, r0, r1
+ b _0206EEC8
+_0206EEBA:
+ mov r1, #0xd7
+ lsl r1, r1, #0x2
+ add r0, r0, r1
+ mov r2, #0x64
+ b _0206EEC8
+_0206EEC4:
+ mov r0, #0x0
+ bx lr
+_0206EEC8:
+ mov r3, #0x0
+ cmp r2, #0x0
+ bls _0206EEE0
+_0206EECE:
+ ldrh r1, [r0, #0x0]
+ cmp r1, #0x0
+ beq _0206EED8
+ mov r0, #0x1
+ bx lr
+_0206EED8:
+ add r3, r3, #0x1
+ add r0, r0, #0x4
+ cmp r3, r2
+ blo _0206EECE
+_0206EEE0:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+_0206EEE4: .word 0x000005BC
+_0206EEE8: .word 0x0000051C
+_0206EEEC: .word 0x000006BC
+_0206EEF0: .word 0x000006F8
+_0206EEF4: .word 0x000004EC
+
+ thumb_func_start FUN_0206EEF8
+FUN_0206EEF8: ; 0x0206EEF8
+ push {r3, lr}
+ add r3, r2, #0x0
+ mov r2, #0x1
+ bl FUN_0206EDB0
+ cmp r0, #0x0
+ bne _0206EF0A
+ mov r0, #0x0
+ pop {r3, pc}
+_0206EF0A:
+ ldrh r0, [r0, #0x2]
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206EF10
+FUN_0206EF10: ; 0x0206EF10
+ push {r3, lr}
+ mov r3, #0x1
+ bl FUN_0206ED80
+ cmp r0, #0x0
+ bne _0206EF20
+ mov r0, #0x0
+ pop {r3, pc}
+_0206EF20:
+ ldrh r0, [r0, #0x2]
+ pop {r3, pc}
+
+ thumb_func_start FUN_0206EF24
+FUN_0206EF24: ; 0x0206EF24
+ push {r3}
+ sub sp, #0x4
+ ldrh r3, [r0, #0x0]
+ add r2, sp, #0x0
+ strh r3, [r2, #0x0]
+ ldrh r3, [r0, #0x2]
+ strh r3, [r2, #0x2]
+ ldrh r3, [r1, #0x0]
+ strh r3, [r0, #0x0]
+ ldrh r3, [r1, #0x2]
+ strh r3, [r0, #0x2]
+ ldrh r0, [r2, #0x0]
+ strh r0, [r1, #0x0]
+ ldrh r0, [r2, #0x2]
+ strh r0, [r1, #0x2]
+ add sp, #0x4
+ pop {r3}
+ bx lr
+
+ thumb_func_start FUN_0206EF48
+FUN_0206EF48: ; 0x0206EF48
+ push {r4-r7, lr}
+ sub sp, #0xc
+ str r0, [sp, #0x0]
+ mov r0, #0x0
+ add r7, r1, #0x0
+ str r0, [sp, #0x4]
+ sub r0, r7, #0x1
+ str r0, [sp, #0x8]
+ beq _0206EF8E
+ ldr r4, [sp, #0x0]
+_0206EF5C:
+ ldr r0, [sp, #0x4]
+ add r6, r0, #0x1
+ cmp r6, r7
+ bhs _0206EF80
+ ldr r0, [sp, #0x0]
+ lsl r1, r6, #0x2
+ add r5, r0, r1
+_0206EF6A:
+ ldrh r0, [r4, #0x2]
+ cmp r0, #0x0
+ bne _0206EF78
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ bl FUN_0206EF24
+_0206EF78:
+ add r6, r6, #0x1
+ add r5, r5, #0x4
+ cmp r6, r7
+ blo _0206EF6A
+_0206EF80:
+ ldr r0, [sp, #0x4]
+ add r4, r4, #0x4
+ add r1, r0, #0x1
+ ldr r0, [sp, #0x8]
+ str r1, [sp, #0x4]
+ cmp r1, r0
+ blo _0206EF5C
+_0206EF8E:
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206EF94
+FUN_0206EF94: ; 0x0206EF94
+ push {r4-r7, lr}
+ sub sp, #0xc
+ str r0, [sp, #0x0]
+ mov r0, #0x0
+ add r7, r1, #0x0
+ str r0, [sp, #0x4]
+ sub r0, r7, #0x1
+ str r0, [sp, #0x8]
+ beq _0206EFE8
+ ldr r4, [sp, #0x0]
+_0206EFA8:
+ ldr r0, [sp, #0x4]
+ add r6, r0, #0x1
+ cmp r6, r7
+ bhs _0206EFDA
+ ldr r0, [sp, #0x0]
+ lsl r1, r6, #0x2
+ add r5, r0, r1
+_0206EFB6:
+ ldrh r0, [r4, #0x2]
+ cmp r0, #0x0
+ beq _0206EFCA
+ ldrh r0, [r5, #0x2]
+ cmp r0, #0x0
+ beq _0206EFD2
+ ldrh r1, [r4, #0x0]
+ ldrh r0, [r5, #0x0]
+ cmp r1, r0
+ bls _0206EFD2
+_0206EFCA:
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ bl FUN_0206EF24
+_0206EFD2:
+ add r6, r6, #0x1
+ add r5, r5, #0x4
+ cmp r6, r7
+ blo _0206EFB6
+_0206EFDA:
+ ldr r0, [sp, #0x4]
+ add r4, r4, #0x4
+ add r1, r0, #0x1
+ ldr r0, [sp, #0x8]
+ str r1, [sp, #0x4]
+ cmp r1, r0
+ blo _0206EFA8
+_0206EFE8:
+ add sp, #0xc
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_0206EFEC
+FUN_0206EFEC: ; 0x0206EFEC
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ lsl r0, r2, #0x18
+ add r7, r1, #0x0
+ lsr r0, r0, #0x18
+ bl FUN_0206E2F0
+ add r6, r0, #0x0
+ ldrb r0, [r7, #0x0]
+ mov r4, #0x0
+ cmp r0, #0xff
+ beq _0206F0BE
+_0206F004:
+ ldrb r0, [r7, r4]
+ cmp r0, #0x7
+ bhi _0206F0B6
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0206F016: ; jump table (using 16-bit offset)
+ .short _0206F03A - _0206F016 - 2; case 0
+ .short _0206F05C - _0206F016 - 2; case 1
+ .short _0206F06E - _0206F016 - 2; case 2
+ .short _0206F0A4 - _0206F016 - 2; case 3
+ .short _0206F04A - _0206F016 - 2; case 4
+ .short _0206F092 - _0206F016 - 2; case 5
+ .short _0206F080 - _0206F016 - 2; case 6
+ .short _0206F026 - _0206F016 - 2; case 7
+_0206F026:
+ mov r1, #0xa5
+ lsl r1, r1, #0x2
+ lsl r3, r4, #0x18
+ add r0, r6, #0x0
+ add r1, r5, r1
+ mov r2, #0x7
+ lsr r3, r3, #0x18
+ bl FUN_0206E330
+ b _0206F0B6
+_0206F03A:
+ lsl r3, r4, #0x18
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ mov r2, #0x0
+ lsr r3, r3, #0x18
+ bl FUN_0206E330
+ b _0206F0B6
+_0206F04A:
+ ldr r1, _0206F0C4 ; =0x000005BC
+ lsl r3, r4, #0x18
+ add r0, r6, #0x0
+ add r1, r5, r1
+ mov r2, #0x4
+ lsr r3, r3, #0x18
+ bl FUN_0206E330
+ b _0206F0B6
+_0206F05C:
+ ldr r1, _0206F0C8 ; =0x0000051C
+ lsl r3, r4, #0x18
+ add r0, r6, #0x0
+ add r1, r5, r1
+ mov r2, #0x1
+ lsr r3, r3, #0x18
+ bl FUN_0206E330
+ b _0206F0B6
+_0206F06E:
+ ldr r1, _0206F0CC ; =0x000006BC
+ lsl r3, r4, #0x18
+ add r0, r6, #0x0
+ add r1, r5, r1
+ mov r2, #0x2
+ lsr r3, r3, #0x18
+ bl FUN_0206E330
+ b _0206F0B6
+_0206F080:
+ ldr r1, _0206F0D0 ; =0x000006F8
+ lsl r3, r4, #0x18
+ add r0, r6, #0x0
+ add r1, r5, r1
+ mov r2, #0x6
+ lsr r3, r3, #0x18
+ bl FUN_0206E330
+ b _0206F0B6
+_0206F092:
+ ldr r1, _0206F0D4 ; =0x000004EC
+ lsl r3, r4, #0x18
+ add r0, r6, #0x0
+ add r1, r5, r1
+ mov r2, #0x5
+ lsr r3, r3, #0x18
+ bl FUN_0206E330
+ b _0206F0B6
+_0206F0A4:
+ mov r1, #0xd7
+ lsl r1, r1, #0x2
+ lsl r3, r4, #0x18
+ add r0, r6, #0x0
+ add r1, r5, r1
+ mov r2, #0x3
+ lsr r3, r3, #0x18
+ bl FUN_0206E330
+_0206F0B6:
+ add r4, r4, #0x1
+ ldrb r0, [r7, r4]
+ cmp r0, #0xff
+ bne _0206F004
+_0206F0BE:
+ add r0, r6, #0x0
+ pop {r3-r7, pc}
+ nop
+_0206F0C4: .word 0x000005BC
+_0206F0C8: .word 0x0000051C
+_0206F0CC: .word 0x000006BC
+_0206F0D0: .word 0x000006F8
+_0206F0D4: .word 0x000004EC
+
+ thumb_func_start FUN_0206F0D8
+FUN_0206F0D8: ; 0x0206F0D8
+ cmp r1, #0x7
+ bhi _0206F136
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0206F0E8: ; jump table (using 16-bit offset)
+ .short _0206F102 - _0206F0E8 - 2; case 0
+ .short _0206F10E - _0206F0E8 - 2; case 1
+ .short _0206F116 - _0206F0E8 - 2; case 2
+ .short _0206F12E - _0206F0E8 - 2; case 3
+ .short _0206F106 - _0206F0E8 - 2; case 4
+ .short _0206F126 - _0206F0E8 - 2; case 5
+ .short _0206F11E - _0206F0E8 - 2; case 6
+ .short _0206F0F8 - _0206F0E8 - 2; case 7
+_0206F0F8:
+ mov r1, #0xa5
+ lsl r1, r1, #0x2
+ add r0, r0, r1
+ mov r3, #0x32
+ b _0206F136
+_0206F102:
+ mov r3, #0xa5
+ b _0206F136
+_0206F106:
+ ldr r1, _0206F144 ; =0x000005BC
+ mov r3, #0x40
+ add r0, r0, r1
+ b _0206F136
+_0206F10E:
+ ldr r1, _0206F148 ; =0x0000051C
+ mov r3, #0x28
+ add r0, r0, r1
+ b _0206F136
+_0206F116:
+ ldr r1, _0206F14C ; =0x000006BC
+ mov r3, #0xf
+ add r0, r0, r1
+ b _0206F136
+_0206F11E:
+ ldr r1, _0206F150 ; =0x000006F8
+ mov r3, #0x1e
+ add r0, r0, r1
+ b _0206F136
+_0206F126:
+ ldr r1, _0206F154 ; =0x000004EC
+ mov r3, #0xc
+ add r0, r0, r1
+ b _0206F136
+_0206F12E:
+ mov r1, #0xd7
+ lsl r1, r1, #0x2
+ add r0, r0, r1
+ mov r3, #0x64
+_0206F136:
+ cmp r2, r3
+ blo _0206F13E
+ mov r0, #0x0
+ bx lr
+_0206F13E:
+ lsl r1, r2, #0x2
+ add r0, r0, r1
+ bx lr
+ .balign 4
+_0206F144: .word 0x000005BC
+_0206F148: .word 0x0000051C
+_0206F14C: .word 0x000006BC
+_0206F150: .word 0x000006F8
+_0206F154: .word 0x000004EC
+
+ thumb_func_start FUN_0206F158
+FUN_0206F158: ; 0x0206F158
+ ldr r3, _0206F160 ; =FUN_02022610
+ mov r1, #0x3
+ bx r3
+ nop
+_0206F160: .word FUN_02022610
+
+ thumb_func_start FUN_0206F164
+FUN_0206F164: ; 0x0206F164
+ push {r4, lr}
+ mov r1, #0x24
+ bl FUN_02016998
+ add r4, r0, #0x0
+ mov r0, #0x0
+ add r1, r4, #0x0
+ mov r2, #0x24
+ blx MIi_CpuClear16
+ add r0, r4, #0x0
+ pop {r4, pc}
+
+ thumb_func_start FUN_0206F17C
+FUN_0206F17C: ; 0x0206F17C
+ push {r3-r4}
+ add r4, r0, r1
+ ldrb r4, [r4, #0x8]
+ strb r4, [r2, #0x0]
+ ldrb r0, [r0, r1]
+ strb r0, [r3, #0x0]
+ pop {r3-r4}
+ bx lr
+
+ thumb_func_start FUN_0206F18C
+FUN_0206F18C: ; 0x0206F18C
+ ldrh r0, [r0, #0x10]
+ bx lr
+
+ thumb_func_start FUN_0206F190
+FUN_0206F190: ; 0x0206F190
+ push {r3-r4}
+ add r4, r0, r1
+ strb r2, [r4, #0x8]
+ strb r3, [r0, r1]
+ pop {r3-r4}
+ bx lr
+
+ thumb_func_start FUN_0206F19C
+FUN_0206F19C: ; 0x0206F19C
+ strh r1, [r0, #0x10]
+ bx lr
+
+ thumb_func_start FUN_0206F1A0
+FUN_0206F1A0: ; 0x0206F1A0
+ add r1, r0, r1
+ ldrb r0, [r1, #0x19]
+ strb r0, [r2, #0x0]
+ ldrb r0, [r1, #0x14]
+ strb r0, [r3, #0x0]
+ bx lr
+
+ thumb_func_start FUN_0206F1AC
+FUN_0206F1AC: ; 0x0206F1AC
+ ldrh r0, [r0, #0x1e]
+ bx lr
+
+ thumb_func_start FUN_0206F1B0
+FUN_0206F1B0: ; 0x0206F1B0
+ ldrh r0, [r0, #0x20]
+ bx lr
+
+ thumb_func_start FUN_0206F1B4
+FUN_0206F1B4: ; 0x0206F1B4
+ ldrh r0, [r0, #0x22]
+ bx lr
+
+ thumb_func_start FUN_0206F1B8
+FUN_0206F1B8: ; 0x0206F1B8
+ add r0, r0, r1
+ strb r2, [r0, #0x19]
+ strb r3, [r0, #0x14]
+ bx lr
+
+ thumb_func_start FUN_0206F1C0
+FUN_0206F1C0: ; 0x0206F1C0
+ push {r4-r6, lr}
+ mov r4, #0x0
+ add r5, r0, #0x0
+ add r6, r4, #0x0
+_0206F1C8:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ add r3, r6, #0x0
+ bl FUN_0206F1B8
+ add r4, r4, #0x1
+ cmp r4, #0x5
+ blo _0206F1C8
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_0206F1EC
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0206F1E4
+FUN_0206F1E4: ; 0x0206F1E4
+ strh r1, [r0, #0x1e]
+ strh r2, [r0, #0x20]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0206F1EC
+FUN_0206F1EC: ; 0x0206F1EC
+ strh r1, [r0, #0x22]
+ bx lr
+
+ thumb_func_start FUN_0206F1F0
+FUN_0206F1F0: ; 0x0206F1F0
+ push {r4-r6, lr}
+ add r6, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x4]
+ cmp r0, #0xb
+ bls _0206F20A
+ b _0206F37C
+_0206F20A:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0206F216: ; jump table (using 16-bit offset)
+ .short _0206F22E - _0206F216 - 2; case 0
+ .short _0206F234 - _0206F216 - 2; case 1
+ .short _0206F25A - _0206F216 - 2; case 2
+ .short _0206F26C - _0206F216 - 2; case 3
+ .short _0206F31A - _0206F216 - 2; case 4
+ .short _0206F330 - _0206F216 - 2; case 5
+ .short _0206F336 - _0206F216 - 2; case 6
+ .short _0206F344 - _0206F216 - 2; case 7
+ .short _0206F34A - _0206F216 - 2; case 8
+ .short _0206F366 - _0206F216 - 2; case 9
+ .short _0206F366 - _0206F216 - 2; case 10
+ .short _0206F366 - _0206F216 - 2; case 11
+_0206F22E:
+ ldr r1, [r5, #0xc]
+ ldr r0, [r4, #0x0]
+ str r1, [r0, #0x0]
+_0206F234:
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ ldr r0, [r4, #0x0]
+ ldr r0, [r0, #0x4]
+ cmp r0, #0x1
+ bne _0206F24C
+ ldr r0, [r5, #0xc]
+ bl FUN_0203384C
+ cmp r0, #0x0
+ bne _0206F24E
+_0206F24C:
+ b _0206F380
+_0206F24E:
+ mov r0, #0xa
+ str r0, [r4, #0x4]
+ ldr r0, [r4, #0x8]
+ mov r1, #0x0
+ strh r1, [r0, #0x0]
+ b _0206F380
+_0206F25A:
+ ldr r1, _0206F384 ; =0x020F943C
+ ldr r2, [r4, #0x0]
+ add r0, r6, #0x0
+ bl FUN_02046500
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _0206F380
+_0206F26C:
+ ldr r0, [r5, #0xc]
+ bl FUN_0203384C
+ cmp r0, #0x0
+ beq _0206F280
+ ldr r0, [r5, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205F304
+_0206F280:
+ ldr r0, [r4, #0x0]
+ ldr r0, [r0, #0x4]
+ cmp r0, #0xa
+ bhi _0206F380
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0206F294: ; jump table (using 16-bit offset)
+ .short _0206F380 - _0206F294 - 2; case 0
+ .short _0206F2B8 - _0206F294 - 2; case 1
+ .short _0206F2C6 - _0206F294 - 2; case 2
+ .short _0206F2AA - _0206F294 - 2; case 3
+ .short _0206F2E0 - _0206F294 - 2; case 4
+ .short _0206F2EE - _0206F294 - 2; case 5
+ .short _0206F2D4 - _0206F294 - 2; case 6
+ .short _0206F2FC - _0206F294 - 2; case 7
+ .short _0206F30E - _0206F294 - 2; case 8
+ .short _0206F314 - _0206F294 - 2; case 9
+ .short _0206F302 - _0206F294 - 2; case 10
+_0206F2AA:
+ mov r0, #0x0
+ strb r0, [r4, #0xc]
+ mov r0, #0x1
+ strb r0, [r4, #0xd]
+ mov r0, #0x4
+ str r0, [r4, #0x4]
+ b _0206F380
+_0206F2B8:
+ mov r0, #0x32
+ strb r0, [r4, #0xc]
+ mov r0, #0x1
+ strb r0, [r4, #0xd]
+ mov r0, #0x4
+ str r0, [r4, #0x4]
+ b _0206F380
+_0206F2C6:
+ mov r0, #0x64
+ strb r0, [r4, #0xc]
+ mov r0, #0x1
+ strb r0, [r4, #0xd]
+ mov r0, #0x4
+ str r0, [r4, #0x4]
+ b _0206F380
+_0206F2D4:
+ mov r0, #0x0
+ strb r0, [r4, #0xc]
+ strb r0, [r4, #0xd]
+ mov r0, #0x4
+ str r0, [r4, #0x4]
+ b _0206F380
+_0206F2E0:
+ mov r0, #0x32
+ strb r0, [r4, #0xc]
+ mov r0, #0x0
+ strb r0, [r4, #0xd]
+ mov r0, #0x4
+ str r0, [r4, #0x4]
+ b _0206F380
+_0206F2EE:
+ mov r0, #0x64
+ strb r0, [r4, #0xc]
+ mov r0, #0x0
+ strb r0, [r4, #0xd]
+ mov r0, #0x4
+ str r0, [r4, #0x4]
+ b _0206F380
+_0206F2FC:
+ mov r0, #0x6
+ str r0, [r4, #0x4]
+ b _0206F380
+_0206F302:
+ ldr r0, [r4, #0x8]
+ mov r1, #0x1
+ strh r1, [r0, #0x0]
+ mov r0, #0xb
+ str r0, [r4, #0x4]
+ b _0206F380
+_0206F30E:
+ mov r0, #0x9
+ str r0, [r4, #0x4]
+ b _0206F380
+_0206F314:
+ mov r0, #0x8
+ str r0, [r4, #0x4]
+ b _0206F380
+_0206F31A:
+ ldr r1, [r4, #0x0]
+ ldrb r2, [r4, #0xc]
+ ldrb r3, [r4, #0xd]
+ ldr r1, [r1, #0x8]
+ add r0, r6, #0x0
+ bl FUN_020471C0
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _0206F380
+_0206F330:
+ mov r0, #0x2
+ str r0, [r4, #0x4]
+ b _0206F380
+_0206F336:
+ add r0, r6, #0x0
+ bl FUN_020383D8
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _0206F380
+_0206F344:
+ mov r0, #0x2
+ str r0, [r4, #0x4]
+ b _0206F380
+_0206F34A:
+ ldr r2, _0206F388 ; =0x00040100
+ mov r0, #0x3
+ mov r1, #0x36
+ bl FUN_0201681C
+ bl FUN_02088878
+ mov r0, #0x36
+ bl FUN_02211E60
+ mov r0, #0x0
+ blx OS_ResetSystem
+ b _0206F380
+_0206F366:
+ ldr r0, [r4, #0x0]
+ bl FUN_02016A18
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_0206F37C:
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_0206F380:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+_0206F384: .word 0x020F943C
+_0206F388: .word 0x00040100
+
+ thumb_func_start FUN_0206F38C
+FUN_0206F38C: ; 0x0206F38C
+ push {r4, lr}
+ mov r0, #0xb
+ mov r1, #0x10
+ bl FUN_020169D8
+ mov r1, #0x0
+ mov r2, #0x10
+ add r4, r0, #0x0
+ blx MI_CpuFill8
+ mov r0, #0xb
+ mov r1, #0xc
+ bl FUN_020169D8
+ mov r1, #0x0
+ mov r2, #0xc
+ str r0, [r4, #0x0]
+ blx MI_CpuFill8
+ add r0, r4, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206F3B8
+FUN_0206F3B8: ; 0x0206F3B8
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_0206F38C
+ add r2, r0, #0x0
+ ldr r0, [r2, #0x0]
+ mov r1, #0x2
+ str r1, [r0, #0x4]
+ ldr r1, _0206F3D4 ; =FUN_0206F1F0
+ add r0, r4, #0x0
+ bl FUN_0204640C
+ pop {r4, pc}
+ nop
+_0206F3D4: .word FUN_0206F1F0
+
+ thumb_func_start FUN_0206F3D8
+FUN_0206F3D8: ; 0x0206F3D8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_0206F38C
+ add r2, r0, #0x0
+ ldr r0, [r2, #0x0]
+ mov r1, #0x1
+ str r1, [r0, #0x4]
+ ldr r1, _0206F3F8 ; =FUN_0206F1F0
+ add r0, r5, #0x0
+ str r4, [r2, #0x8]
+ bl FUN_0204640C
+ pop {r3-r5, pc}
+ nop
+_0206F3F8: .word FUN_0206F1F0
+
+ thumb_func_start FUN_0206F3FC
+FUN_0206F3FC: ; 0x0206F3FC
+ push {r3-r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0x0
+ mov r0, #0x0
+ add r1, r0, #0x0
+ bl FUN_02015F10
+ bl FUN_02015F1C
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ mov r0, #0x1
+ lsl r0, r0, #0x1a
+ ldr r2, [r0, #0x0]
+ ldr r1, _0206F594 ; =0xFFFFE0FF
+ ldr r3, _0206F598 ; =0x04001000
+ and r2, r1
+ str r2, [r0, #0x0]
+ ldr r2, [r3, #0x0]
+ add r0, #0x50
+ and r1, r2
+ str r1, [r3, #0x0]
+ mov r1, #0x0
+ strh r1, [r0, #0x0]
+ add r3, #0x50
+ strh r1, [r3, #0x0]
+ mov r0, #0x4
+ mov r1, #0x8
+ bl FUN_0201669C
+ mov r2, #0x2
+ mov r0, #0x3
+ mov r1, #0xc
+ lsl r2, r2, #0x10
+ bl FUN_0201681C
+ add r0, r4, #0x0
+ bl FUN_0206FE74
+ add r4, r0, #0x0
+ mov r0, #0x6
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ mov r1, #0xc
+ str r1, [sp, #0x8]
+ mov r1, #0x3
+ add r2, r1, #0x0
+ mov r3, #0x0
+ bl FUN_0200E1D0
+ add r0, r4, #0x0
+ bl FUN_0206FF74
+ bl FUN_0206FB80
+ ldr r0, [r4, #0x0]
+ bl FUN_0206FBA0
+ add r0, r4, #0x0
+ bl FUN_0206FD24
+ bl FUN_0201CC08
+ mov r0, #0x4
+ bl FUN_0201CC24
+ mov r1, #0x0
+ mov r0, #0x39
+ add r2, r1, #0x0
+ bl FUN_0200433C
+ add r0, r4, #0x0
+ bl FUN_02072590
+ add r0, r4, #0x0
+ bl FUN_02073710
+ add r0, r4, #0x0
+ bl FUN_0207388C
+ add r0, r4, #0x0
+ bl FUN_0206FFB4
+ add r0, r4, #0x0
+ bl FUN_0207047C
+ ldr r1, _0206F59C ; =0x00000B25
+ add r0, r4, #0x0
+ ldrb r1, [r4, r1]
+ mov r2, #0x1
+ bl FUN_020713EC
+ ldr r1, _0206F5A0 ; =0x000005A4
+ ldr r3, [r4, r1]
+ add r0, r3, #0x0
+ add r0, #0x20
+ ldrb r2, [r0, #0x0]
+ cmp r2, #0x5
+ beq _0206F4CC
+ cmp r2, #0x10
+ bne _0206F4E2
+_0206F4CC:
+ ldrh r0, [r3, #0x24]
+ bl FUN_02076144
+ cmp r0, #0x0
+ bne _0206F564
+ add r0, r4, #0x0
+ mov r1, #0x20
+ mov r2, #0x1
+ bl FUN_020731C0
+ b _0206F564
+_0206F4E2:
+ cmp r2, #0x6
+ bne _0206F4F2
+ add r0, r4, #0x0
+ mov r1, #0x21
+ mov r2, #0x1
+ bl FUN_020731C0
+ b _0206F564
+_0206F4F2:
+ cmp r2, #0x9
+ beq _0206F4FA
+ cmp r2, #0xe
+ bne _0206F506
+_0206F4FA:
+ add r0, r4, #0x0
+ mov r1, #0x1f
+ mov r2, #0x1
+ bl FUN_020731C0
+ b _0206F564
+_0206F506:
+ cmp r2, #0x7
+ beq _0206F51A
+ cmp r2, #0x8
+ beq _0206F51A
+ add r0, r2, #0x0
+ add r0, #0xf5
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x1
+ bhi _0206F526
+_0206F51A:
+ ldr r0, _0206F5A4 ; =0x000005C8
+ mov r1, #0x1
+ ldr r0, [r4, r0]
+ bl FUN_0200C664
+ b _0206F564
+_0206F526:
+ cmp r2, #0x2
+ beq _0206F52E
+ cmp r2, #0x11
+ bne _0206F53A
+_0206F52E:
+ add r0, r4, #0x0
+ mov r1, #0x22
+ mov r2, #0x1
+ bl FUN_020731C0
+ b _0206F564
+_0206F53A:
+ cmp r2, #0xf
+ bne _0206F54A
+ add r0, r4, #0x0
+ mov r1, #0x22
+ mov r2, #0x1
+ bl FUN_020731C0
+ b _0206F564
+_0206F54A:
+ cmp r2, #0xa
+ beq _0206F55A
+ add r0, r4, #0x0
+ mov r1, #0x1d
+ mov r2, #0x1
+ bl FUN_020731C0
+ b _0206F564
+_0206F55A:
+ add r1, #0x24
+ ldr r0, [r4, r1]
+ mov r1, #0x1
+ bl FUN_0200C664
+_0206F564:
+ add r0, r4, #0x0
+ bl FUN_02072720
+ add r0, r4, #0x0
+ bl FUN_02070AA4
+ add r0, r4, #0x0
+ bl FUN_0207248C
+ cmp r0, #0x0
+ bne _0206F582
+ mov r0, #0x1
+ mov r1, #0x0
+ bl FUN_0201E74C
+_0206F582:
+ ldr r0, _0206F5A8 ; =FUN_0206FB58
+ add r1, r4, #0x0
+ bl FUN_02015F10
+ bl FUN_02033F20
+ mov r0, #0x1
+ add sp, #0xc
+ pop {r3-r4, pc}
+ .balign 4
+_0206F594: .word 0xFFFFE0FF
+_0206F598: .word 0x04001000
+_0206F59C: .word 0x00000B25
+_0206F5A0: .word 0x000005A4
+_0206F5A4: .word 0x000005C8
+_0206F5A8: .word FUN_0206FB58
+
+ thumb_func_start FUN_0206F5AC
+FUN_0206F5AC: ; 0x0206F5AC
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ bl FUN_02006278
+ ldr r1, [r4, #0x0]
+ add r5, r0, #0x0
+ cmp r1, #0x1c
+ bhi _0206F61C
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0206F5C8: ; jump table (using 16-bit offset)
+ .short _0206F602 - _0206F5C8 - 2; case 0
+ .short _0206F60A - _0206F5C8 - 2; case 1
+ .short _0206F612 - _0206F5C8 - 2; case 2
+ .short _0206F624 - _0206F5C8 - 2; case 3
+ .short _0206F62C - _0206F5C8 - 2; case 4
+ .short _0206F634 - _0206F5C8 - 2; case 5
+ .short _0206F63E - _0206F5C8 - 2; case 6
+ .short _0206F646 - _0206F5C8 - 2; case 7
+ .short _0206F64E - _0206F5C8 - 2; case 8
+ .short _0206F656 - _0206F5C8 - 2; case 9
+ .short _0206F65E - _0206F5C8 - 2; case 10
+ .short _0206F666 - _0206F5C8 - 2; case 11
+ .short _0206F66E - _0206F5C8 - 2; case 12
+ .short _0206F676 - _0206F5C8 - 2; case 13
+ .short _0206F67E - _0206F5C8 - 2; case 14
+ .short _0206F686 - _0206F5C8 - 2; case 15
+ .short _0206F68E - _0206F5C8 - 2; case 16
+ .short _0206F696 - _0206F5C8 - 2; case 17
+ .short _0206F69E - _0206F5C8 - 2; case 18
+ .short _0206F6A6 - _0206F5C8 - 2; case 19
+ .short _0206F6AE - _0206F5C8 - 2; case 20
+ .short _0206F6B6 - _0206F5C8 - 2; case 21
+ .short _0206F6BE - _0206F5C8 - 2; case 22
+ .short _0206F6C6 - _0206F5C8 - 2; case 23
+ .short _0206F6CE - _0206F5C8 - 2; case 24
+ .short _0206F6E6 - _0206F5C8 - 2; case 25
+ .short _0206F6F4 - _0206F5C8 - 2; case 26
+ .short _0206F6FC - _0206F5C8 - 2; case 27
+ .short _0206F70A - _0206F5C8 - 2; case 28
+_0206F602:
+ bl FUN_0206F750
+ str r0, [r4, #0x0]
+ b _0206F722
+_0206F60A:
+ bl FUN_0206F7D8
+ str r0, [r4, #0x0]
+ b _0206F722
+_0206F612:
+ add r1, r4, #0x0
+ bl FUN_020718CC
+ cmp r0, #0x1
+ beq _0206F61E
+_0206F61C:
+ b _0206F722
+_0206F61E:
+ mov r0, #0x1
+ str r0, [r4, #0x0]
+ b _0206F722
+_0206F624:
+ bl FUN_020754D0
+ str r0, [r4, #0x0]
+ b _0206F722
+_0206F62C:
+ bl FUN_0206F874
+ str r0, [r4, #0x0]
+ b _0206F722
+_0206F634:
+ ldr r1, _0206F740 ; =0x00000B14
+ ldr r1, [r5, r1]
+ blx r1
+ str r0, [r4, #0x0]
+ b _0206F722
+_0206F63E:
+ bl FUN_02077110
+ str r0, [r4, #0x0]
+ b _0206F722
+_0206F646:
+ bl FUN_020761A0
+ str r0, [r4, #0x0]
+ b _0206F722
+_0206F64E:
+ bl FUN_0206F8B4
+ str r0, [r4, #0x0]
+ b _0206F722
+_0206F656:
+ bl FUN_02072170
+ str r0, [r4, #0x0]
+ b _0206F722
+_0206F65E:
+ bl FUN_02072194
+ str r0, [r4, #0x0]
+ b _0206F722
+_0206F666:
+ bl FUN_02072140
+ str r0, [r4, #0x0]
+ b _0206F722
+_0206F66E:
+ bl FUN_0207230C
+ str r0, [r4, #0x0]
+ b _0206F722
+_0206F676:
+ bl FUN_0206F8F4
+ str r0, [r4, #0x0]
+ b _0206F722
+_0206F67E:
+ bl FUN_02071F58
+ str r0, [r4, #0x0]
+ b _0206F722
+_0206F686:
+ bl FUN_0207405C
+ str r0, [r4, #0x0]
+ b _0206F722
+_0206F68E:
+ bl FUN_0207436C
+ str r0, [r4, #0x0]
+ b _0206F722
+_0206F696:
+ bl FUN_0206FA14
+ str r0, [r4, #0x0]
+ b _0206F722
+_0206F69E:
+ bl FUN_02076D3C
+ str r0, [r4, #0x0]
+ b _0206F722
+_0206F6A6:
+ bl FUN_02074F6C
+ str r0, [r4, #0x0]
+ b _0206F722
+_0206F6AE:
+ bl FUN_0206F980
+ str r0, [r4, #0x0]
+ b _0206F722
+_0206F6B6:
+ bl FUN_0206F9A4
+ str r0, [r4, #0x0]
+ b _0206F722
+_0206F6BE:
+ bl FUN_0206F9C8
+ str r0, [r4, #0x0]
+ b _0206F722
+_0206F6C6:
+ bl FUN_0206F9D4
+ str r0, [r4, #0x0]
+ b _0206F722
+_0206F6CE:
+ bl FUN_020714D0
+ cmp r0, #0x0
+ bne _0206F6DC
+ mov r0, #0x19
+ str r0, [r4, #0x0]
+ b _0206F722
+_0206F6DC:
+ cmp r0, #0x3
+ bne _0206F722
+ mov r0, #0x1
+ str r0, [r4, #0x0]
+ b _0206F722
+_0206F6E6:
+ bl FUN_020746D4
+ cmp r0, #0x1
+ bne _0206F722
+ mov r0, #0x1
+ str r0, [r4, #0x0]
+ b _0206F722
+_0206F6F4:
+ bl FUN_02071970
+ str r0, [r4, #0x0]
+ b _0206F722
+_0206F6FC:
+ mov r0, #0x1
+ mov r1, #0xc
+ bl FUN_02079A70
+ mov r0, #0x1c
+ str r0, [r4, #0x0]
+ b _0206F722
+_0206F70A:
+ bl FUN_0200E308
+ cmp r0, #0x1
+ bne _0206F722
+ ldr r0, _0206F744 ; =0x00000B25
+ ldrb r1, [r5, r0]
+ ldr r0, _0206F748 ; =0x000005A4
+ ldr r0, [r5, r0]
+ add r0, #0x22
+ strb r1, [r0, #0x0]
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0206F722:
+ add r0, r5, #0x0
+ bl FUN_02073BEC
+ add r0, r5, #0x0
+ bl FUN_02073D6C
+ add r0, r5, #0x0
+ bl FUN_02070F14
+ ldr r0, _0206F74C ; =0x000005AC
+ ldr r0, [r5, r0]
+ bl FUN_0200BC1C
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+_0206F740: .word 0x00000B14
+_0206F744: .word 0x00000B25
+_0206F748: .word 0x000005A4
+_0206F74C: .word 0x000005AC
+
+ thumb_func_start FUN_0206F750
+FUN_0206F750: ; 0x0206F750
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_0200E308
+ cmp r0, #0x1
+ bne _0206F7CA
+ ldr r0, _0206F7D0 ; =0x000005A4
+ ldr r2, [r4, r0]
+ add r0, r2, #0x0
+ add r0, #0x20
+ ldrb r1, [r0, #0x0]
+ cmp r1, #0x5
+ beq _0206F76E
+ cmp r1, #0x10
+ bne _0206F786
+_0206F76E:
+ ldrh r0, [r2, #0x24]
+ bl FUN_02076144
+ cmp r0, #0x1
+ bne _0206F782
+ ldr r0, _0206F7D4 ; =0x00000B22
+ mov r1, #0x0
+ strb r1, [r4, r0]
+ mov r0, #0x7
+ pop {r4, pc}
+_0206F782:
+ mov r0, #0x4
+ pop {r4, pc}
+_0206F786:
+ cmp r1, #0x6
+ bne _0206F78E
+ mov r0, #0x11
+ pop {r4, pc}
+_0206F78E:
+ cmp r1, #0x7
+ bne _0206F79A
+ add r0, r4, #0x0
+ bl FUN_02076C94
+ pop {r4, pc}
+_0206F79A:
+ cmp r1, #0x8
+ bne _0206F7A6
+ add r0, r4, #0x0
+ bl FUN_02076890
+ pop {r4, pc}
+_0206F7A6:
+ add r0, r1, #0x0
+ add r0, #0xf5
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x1
+ bhi _0206F7B6
+ mov r0, #0xc
+ pop {r4, pc}
+_0206F7B6:
+ cmp r1, #0x9
+ bne _0206F7BE
+ mov r0, #0x8
+ pop {r4, pc}
+_0206F7BE:
+ cmp r1, #0xa
+ bne _0206F7C6
+ mov r0, #0xe
+ pop {r4, pc}
+_0206F7C6:
+ mov r0, #0x1
+ pop {r4, pc}
+_0206F7CA:
+ mov r0, #0x0
+ pop {r4, pc}
+ nop
+_0206F7D0: .word 0x000005A4
+_0206F7D4: .word 0x00000B22
+
+ thumb_func_start FUN_0206F7D8
+FUN_0206F7D8: ; 0x0206F7D8
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02070F94
+ cmp r0, #0x0
+ bne _0206F81E
+ ldr r0, _0206F870 ; =0x000005A4
+ ldr r1, [r4, r0]
+ add r0, r1, #0x0
+ add r0, #0x20
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x3
+ beq _0206F7F6
+ cmp r0, #0x14
+ bne _0206F800
+_0206F7F6:
+ mov r0, #0x0
+ add r1, #0x23
+ strb r0, [r1, #0x0]
+ mov r0, #0x1b
+ pop {r4, pc}
+_0206F800:
+ cmp r0, #0xe
+ bne _0206F80E
+ add r0, r4, #0x0
+ bl FUN_02077248
+ mov r0, #0x14
+ pop {r4, pc}
+_0206F80E:
+ cmp r0, #0x13
+ bne _0206F81A
+ add r0, r4, #0x0
+ bl FUN_02072420
+ pop {r4, pc}
+_0206F81A:
+ mov r0, #0x2
+ pop {r4, pc}
+_0206F81E:
+ cmp r0, #0x4
+ bne _0206F82A
+ add r0, r4, #0x0
+ bl FUN_0207155C
+ pop {r4, pc}
+_0206F82A:
+ cmp r0, #0x3
+ bne _0206F83C
+ ldr r0, _0206F870 ; =0x000005A4
+ mov r1, #0x0
+ ldr r0, [r4, r0]
+ add r0, #0x23
+ strb r1, [r0, #0x0]
+ mov r0, #0x1b
+ pop {r4, pc}
+_0206F83C:
+ cmp r0, #0x2
+ bne _0206F86A
+ ldr r0, _0206F870 ; =0x000005A4
+ ldr r2, [r4, r0]
+ add r1, r2, #0x0
+ add r1, #0x20
+ ldrb r1, [r1, #0x0]
+ cmp r1, #0xf
+ beq _0206F858
+ mov r0, #0x1
+ add r2, #0x23
+ strb r0, [r2, #0x0]
+ mov r0, #0x1b
+ pop {r4, pc}
+_0206F858:
+ add r0, #0x24
+ ldr r0, [r4, r0]
+ mov r1, #0x1
+ bl FUN_0200C664
+ add r0, r4, #0x0
+ bl FUN_02075118
+ pop {r4, pc}
+_0206F86A:
+ mov r0, #0x1
+ pop {r4, pc}
+ nop
+_0206F870: .word 0x000005A4
+
+ thumb_func_start FUN_0206F874
+FUN_0206F874: ; 0x0206F874
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02071D48
+ cmp r0, #0x0
+ beq _0206F884
+ cmp r0, #0x2
+ bne _0206F896
+_0206F884:
+ ldr r0, _0206F8AC ; =0x000005C8
+ mov r1, #0x1
+ ldr r0, [r4, r0]
+ bl FUN_0200C664
+ add r0, r4, #0x0
+ bl FUN_02071DF4
+ pop {r4, pc}
+_0206F896:
+ cmp r0, #0x3
+ bne _0206F8A8
+ ldr r0, _0206F8B0 ; =0x000005A4
+ mov r1, #0x0
+ ldr r0, [r4, r0]
+ add r0, #0x23
+ strb r1, [r0, #0x0]
+ mov r0, #0x1b
+ pop {r4, pc}
+_0206F8A8:
+ mov r0, #0x4
+ pop {r4, pc}
+ .balign 4
+_0206F8AC: .word 0x000005C8
+_0206F8B0: .word 0x000005A4
+
+ thumb_func_start FUN_0206F8B4
+FUN_0206F8B4: ; 0x0206F8B4
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02071D48
+ cmp r0, #0x0
+ beq _0206F8C4
+ cmp r0, #0x2
+ bne _0206F8D6
+_0206F8C4:
+ ldr r0, _0206F8EC ; =0x000005C8
+ mov r1, #0x1
+ ldr r0, [r4, r0]
+ bl FUN_0200C664
+ add r0, r4, #0x0
+ bl FUN_02071F58
+ pop {r4, pc}
+_0206F8D6:
+ cmp r0, #0x3
+ bne _0206F8E8
+ ldr r0, _0206F8F0 ; =0x000005A4
+ mov r1, #0x0
+ ldr r0, [r4, r0]
+ add r0, #0x23
+ strb r1, [r0, #0x0]
+ mov r0, #0x1b
+ pop {r4, pc}
+_0206F8E8:
+ mov r0, #0x8
+ pop {r4, pc}
+ .balign 4
+_0206F8EC: .word 0x000005C8
+_0206F8F0: .word 0x000005A4
+
+ thumb_func_start FUN_0206F8F4
+FUN_0206F8F4: ; 0x0206F8F4
+ push {r3-r4, lr}
+ sub sp, #0x4
+ add r4, r0, #0x0
+ ldr r0, _0206F974 ; =0x000006FC
+ ldr r0, [r4, r0]
+ bl FUN_02001C78
+ add r2, r0, #0x0
+ mov r0, #0x1
+ mvn r0, r0
+ cmp r2, r0
+ beq _0206F914
+ add r0, r0, #0x1
+ cmp r2, r0
+ beq _0206F96E
+ b _0206F962
+_0206F914:
+ mov r0, #0x85
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ mov r1, #0x1
+ bl FUN_0200D0E0
+ mov r0, #0x8d
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ mov r1, #0x1
+ bl FUN_0200CCF8
+ mov r0, #0x8d
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_0201958C
+ ldr r0, _0206F974 ; =0x000006FC
+ mov r1, #0x0
+ ldr r0, [r4, r0]
+ bl FUN_02001C5C
+ ldr r0, _0206F978 ; =0x000006F8
+ ldr r0, [r4, r0]
+ bl FUN_02012870
+ add r0, r4, #0x0
+ mov r1, #0x1d
+ mov r2, #0x1
+ bl FUN_020731C0
+ ldr r0, _0206F97C ; =0x000005C8
+ mov r1, #0x0
+ ldr r0, [r4, r0]
+ bl FUN_0200C664
+ add sp, #0x4
+ mov r0, #0x1
+ pop {r3-r4, pc}
+_0206F962:
+ add r0, r4, #0x0
+ add r1, sp, #0x0
+ blx r2
+ ldr r0, [sp, #0x0]
+ add sp, #0x4
+ pop {r3-r4, pc}
+_0206F96E:
+ mov r0, #0xd
+ add sp, #0x4
+ pop {r3-r4, pc}
+ .balign 4
+_0206F974: .word 0x000006FC
+_0206F978: .word 0x000006F8
+_0206F97C: .word 0x000005C8
+
+ thumb_func_start FUN_0206F980
+FUN_0206F980: ; 0x0206F980
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _0206F99C ; =0x00000B24
+ ldrb r0, [r4, r0]
+ bl FUN_0201BD70
+ cmp r0, #0x0
+ bne _0206F996
+ ldr r0, _0206F9A0 ; =0x00000B22
+ ldrb r0, [r4, r0]
+ pop {r4, pc}
+_0206F996:
+ mov r0, #0x14
+ pop {r4, pc}
+ nop
+_0206F99C: .word 0x00000B24
+_0206F9A0: .word 0x00000B22
+
+ thumb_func_start FUN_0206F9A4
+FUN_0206F9A4: ; 0x0206F9A4
+ push {r3, lr}
+ ldr r0, _0206F9C0 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x3
+ tst r0, r1
+ beq _0206F9BA
+ ldr r0, _0206F9C4 ; =0x000005DC
+ bl FUN_020054C8
+ mov r0, #0x1b
+ pop {r3, pc}
+_0206F9BA:
+ mov r0, #0x15
+ pop {r3, pc}
+ nop
+_0206F9C0: .word 0x021C48B8
+_0206F9C4: .word 0x000005DC
+
+ thumb_func_start FUN_0206F9C8
+FUN_0206F9C8: ; 0x0206F9C8
+ push {r3, lr}
+ bl FUN_020732CC
+ mov r0, #0x17
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206F9D4
+FUN_0206F9D4: ; 0x0206F9D4
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _0206FA08 ; =0x000006FC
+ mov r1, #0xc
+ ldr r0, [r4, r0]
+ bl FUN_020021AC
+ cmp r0, #0x0
+ beq _0206F9F0
+ mov r1, #0x1
+ mvn r1, r1
+ cmp r0, r1
+ beq _0206F9FA
+ b _0206FA04
+_0206F9F0:
+ ldr r1, _0206FA0C ; =0x00000B18
+ add r0, r4, #0x0
+ ldr r1, [r4, r1]
+ blx r1
+ pop {r4, pc}
+_0206F9FA:
+ ldr r1, _0206FA10 ; =0x00000B1C
+ add r0, r4, #0x0
+ ldr r1, [r4, r1]
+ blx r1
+ pop {r4, pc}
+_0206FA04:
+ mov r0, #0x17
+ pop {r4, pc}
+ .balign 4
+_0206FA08: .word 0x000006FC
+_0206FA0C: .word 0x00000B18
+_0206FA10: .word 0x00000B1C
+
+ thumb_func_start FUN_0206FA14
+FUN_0206FA14: ; 0x0206FA14
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02071D48
+ cmp r0, #0x0
+ beq _0206FA24
+ cmp r0, #0x2
+ bne _0206FA78
+_0206FA24:
+ ldr r0, _0206FA90 ; =0x000005C8
+ mov r1, #0x1
+ ldr r0, [r4, r0]
+ bl FUN_0200C664
+ ldr r0, _0206FA94 ; =0x00000B25
+ mov r1, #0x2c
+ ldrb r0, [r4, r0]
+ add r2, r0, #0x0
+ mul r2, r1
+ mov r0, #0x71
+ add r2, r4, r2
+ lsl r0, r0, #0x4
+ ldrb r0, [r2, r0]
+ cmp r0, #0x1
+ beq _0206FA4C
+ add r0, r4, #0x0
+ bl FUN_02076AF8
+ pop {r4, pc}
+_0206FA4C:
+ add r0, r4, #0x0
+ sub r1, #0x2d
+ mov r2, #0x1
+ bl FUN_020731E8
+ ldr r1, _0206FA98 ; =0x000005A4
+ mov r2, #0x0
+ ldr r0, [r4, r1]
+ add r1, #0xf8
+ add r0, #0x23
+ strb r2, [r0, #0x0]
+ ldr r0, _0206FA9C ; =0x00000B22
+ mov r2, #0x15
+ strb r2, [r4, r0]
+ ldr r2, _0206FAA0 ; =0x000006A4
+ ldr r0, [r4, r1]
+ ldr r2, [r4, r2]
+ mov r1, #0x69
+ bl FUN_0200A8E0
+ mov r0, #0x14
+ pop {r4, pc}
+_0206FA78:
+ cmp r0, #0x3
+ bne _0206FA8A
+ ldr r0, _0206FA98 ; =0x000005A4
+ mov r1, #0x0
+ ldr r0, [r4, r0]
+ add r0, #0x23
+ strb r1, [r0, #0x0]
+ mov r0, #0x1b
+ pop {r4, pc}
+_0206FA8A:
+ mov r0, #0x11
+ pop {r4, pc}
+ nop
+_0206FA90: .word 0x000005C8
+_0206FA94: .word 0x00000B25
+_0206FA98: .word 0x000005A4
+_0206FA9C: .word 0x00000B22
+_0206FAA0: .word 0x000006A4
+
+ thumb_func_start FUN_0206FAA4
+FUN_0206FAA4: ; 0x0206FAA4
+ push {r3-r7, lr}
+ str r0, [sp, #0x0]
+ bl FUN_02006278
+ add r6, r0, #0x0
+ mov r0, #0x0
+ add r1, r0, #0x0
+ bl FUN_02015F10
+ add r0, r6, #0x0
+ bl FUN_02073A2C
+ add r0, r6, #0x0
+ bl FUN_020726F0
+ ldr r0, [r6, #0x0]
+ bl FUN_0206FCD4
+ bl FUN_0201CD04
+ bl FUN_0201C29C
+ mov r7, #0x7
+ mov r4, #0x0
+ add r5, r6, #0x0
+ lsl r7, r7, #0x8
+_0206FAD8:
+ ldr r0, [r5, r7]
+ bl FUN_02021A20
+ add r4, r4, #0x1
+ add r5, #0x2c
+ cmp r4, #0x6
+ blo _0206FAD8
+ ldr r0, _0206FB40 ; =0x000006A4
+ ldr r0, [r6, r0]
+ bl FUN_02021A20
+ ldr r0, _0206FB44 ; =0x000006A8
+ ldr r0, [r6, r0]
+ bl FUN_02021A20
+ ldr r7, _0206FB48 ; =0x000006AC
+ mov r5, #0x0
+ add r4, r6, #0x0
+_0206FAFC:
+ ldr r0, [r4, r7]
+ bl FUN_02021A20
+ add r5, r5, #0x1
+ add r4, r4, #0x4
+ cmp r5, #0x13
+ blo _0206FAFC
+ ldr r0, _0206FB4C ; =0x0000069C
+ ldr r0, [r6, r0]
+ bl FUN_0200A8B8
+ ldr r0, _0206FB50 ; =0x00000698
+ ldr r0, [r6, r0]
+ bl FUN_0200B990
+ mov r0, #0x6a
+ lsl r0, r0, #0x4
+ ldr r0, [r6, r0]
+ bl FUN_0200AB18
+ ldr r0, _0206FB54 ; =0x00000B34
+ ldr r0, [r6, r0]
+ cmp r0, #0x0
+ beq _0206FB30
+ bl FUN_0206BB74
+_0206FB30:
+ ldr r0, [sp, #0x0]
+ bl FUN_0200627C
+ mov r0, #0xc
+ bl FUN_020168D0
+ mov r0, #0x1
+ pop {r3-r7, pc}
+ .balign 4
+_0206FB40: .word 0x000006A4
+_0206FB44: .word 0x000006A8
+_0206FB48: .word 0x000006AC
+_0206FB4C: .word 0x0000069C
+_0206FB50: .word 0x00000698
+_0206FB54: .word 0x00000B34
+
+ thumb_func_start FUN_0206FB58
+FUN_0206FB58: ; 0x0206FB58
+ push {r3, lr}
+ ldr r0, [r0, #0x0]
+ bl FUN_0201AB60
+ bl FUN_0201C30C
+ bl FUN_0200BC30
+ ldr r3, _0206FB78 ; =0x027E0000
+ ldr r1, _0206FB7C ; =0x00003FF8
+ mov r0, #0x1
+ ldr r2, [r3, r1]
+ orr r0, r2
+ str r0, [r3, r1]
+ pop {r3, pc}
+ nop
+_0206FB78: .word 0x027E0000
+_0206FB7C: .word 0x00003FF8
+
+ thumb_func_start FUN_0206FB80
+FUN_0206FB80: ; 0x0206FB80
+ push {r4, lr}
+ sub sp, #0x28
+ ldr r4, _0206FB9C ; =0x020F9564
+ add r3, sp, #0x0
+ mov r2, #0x5
+_0206FB8A:
+ ldmia r4!, {r0-r1}
+ stmia r3!, {r0-r1}
+ sub r2, r2, #0x1
+ bne _0206FB8A
+ add r0, sp, #0x0
+ bl FUN_0201E66C
+ add sp, #0x28
+ pop {r4, pc}
+ .balign 4
+_0206FB9C: .word 0x020F9564
+
+ thumb_func_start FUN_0206FBA0
+FUN_0206FBA0: ; 0x0206FBA0
+ push {r3-r5, lr}
+ sub sp, #0xb8
+ ldr r5, _0206FCB8 ; =0x020F9458
+ add r3, sp, #0xa8
+ add r4, r0, #0x0
+ add r2, r3, #0x0
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ add r0, r2, #0x0
+ bl FUN_02016BBC
+ ldr r5, _0206FCBC ; =0x020F94D4
+ add r3, sp, #0x8c
+ ldmia r5!, {r0-r1}
+ add r2, r3, #0x0
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldr r0, [r5, #0x0]
+ mov r1, #0x0
+ str r0, [r3, #0x0]
+ add r0, r4, #0x0
+ add r3, r1, #0x0
+ bl FUN_02016C18
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_02018744
+ ldr r5, _0206FCC0 ; =0x020F94F0
+ add r3, sp, #0x70
+ ldmia r5!, {r0-r1}
+ add r2, r3, #0x0
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldr r0, [r5, #0x0]
+ mov r1, #0x1
+ str r0, [r3, #0x0]
+ add r0, r4, #0x0
+ mov r3, #0x0
+ bl FUN_02016C18
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_02018744
+ ldr r5, _0206FCC4 ; =0x020F949C
+ add r3, sp, #0x54
+ ldmia r5!, {r0-r1}
+ add r2, r3, #0x0
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldr r0, [r5, #0x0]
+ mov r1, #0x2
+ str r0, [r3, #0x0]
+ add r0, r4, #0x0
+ mov r3, #0x0
+ bl FUN_02016C18
+ add r0, r4, #0x0
+ mov r1, #0x2
+ bl FUN_02018744
+ ldr r5, _0206FCC8 ; =0x020F9480
+ add r3, sp, #0x38
+ ldmia r5!, {r0-r1}
+ add r2, r3, #0x0
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldr r0, [r5, #0x0]
+ mov r1, #0x3
+ str r0, [r3, #0x0]
+ add r0, r4, #0x0
+ mov r3, #0x0
+ bl FUN_02016C18
+ ldr r5, _0206FCCC ; =0x020F950C
+ add r3, sp, #0x1c
+ ldmia r5!, {r0-r1}
+ add r2, r3, #0x0
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldr r0, [r5, #0x0]
+ str r0, [r3, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0x4
+ mov r3, #0x0
+ bl FUN_02016C18
+ add r0, r4, #0x0
+ mov r1, #0x4
+ bl FUN_02018744
+ ldr r5, _0206FCD0 ; =0x020F9528
+ add r3, sp, #0x0
+ ldmia r5!, {r0-r1}
+ add r2, r3, #0x0
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldr r0, [r5, #0x0]
+ mov r1, #0x5
+ str r0, [r3, #0x0]
+ add r0, r4, #0x0
+ mov r3, #0x0
+ bl FUN_02016C18
+ mov r0, #0x0
+ mov r1, #0x20
+ add r2, r0, #0x0
+ mov r3, #0xc
+ bl FUN_02017F18
+ mov r0, #0x4
+ mov r1, #0x20
+ mov r2, #0x0
+ mov r3, #0xc
+ bl FUN_02017F18
+ add sp, #0xb8
+ pop {r3-r5, pc}
+ nop
+_0206FCB8: .word 0x020F9458
+_0206FCBC: .word 0x020F94D4
+_0206FCC0: .word 0x020F94F0
+_0206FCC4: .word 0x020F949C
+_0206FCC8: .word 0x020F9480
+_0206FCCC: .word 0x020F950C
+_0206FCD0: .word 0x020F9528
+
+ thumb_func_start FUN_0206FCD4
+FUN_0206FCD4: ; 0x0206FCD4
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x1f
+ mov r1, #0x0
+ bl FUN_0201E6E4
+ mov r0, #0x13
+ mov r1, #0x0
+ bl FUN_0201E74C
+ add r0, r4, #0x0
+ mov r1, #0x5
+ bl FUN_020178A0
+ add r0, r4, #0x0
+ mov r1, #0x4
+ bl FUN_020178A0
+ add r0, r4, #0x0
+ mov r1, #0x3
+ bl FUN_020178A0
+ add r0, r4, #0x0
+ mov r1, #0x2
+ bl FUN_020178A0
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_020178A0
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_020178A0
+ mov r0, #0xc
+ add r1, r4, #0x0
+ bl FUN_02016A8C
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0206FD24
+FUN_0206FD24: ; 0x0206FD24
+ push {r4-r5, lr}
+ sub sp, #0x14
+ add r5, r0, #0x0
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ mov r0, #0xc
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #0x0]
+ mov r0, #0x14
+ mov r1, #0xf
+ mov r3, #0x3
+ bl FUN_0200687C
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ mov r0, #0xc
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #0x0]
+ mov r0, #0x14
+ mov r1, #0x11
+ mov r3, #0x3
+ bl FUN_020068C8
+ mov r0, #0x14
+ mov r1, #0x10
+ mov r2, #0xc
+ bl LoadFromNarc_2
+ add r1, sp, #0x10
+ add r4, r0, #0x0
+ blx FUN_020B0138
+ ldr r2, [sp, #0x10]
+ mov r0, #0x3
+ ldr r1, [r2, #0xc]
+ ldr r2, [r2, #0x8]
+ mov r3, #0x0
+ lsl r2, r2, #0x10
+ lsr r2, r2, #0x10
+ bl FUN_02017FB4
+ ldr r1, [sp, #0x10]
+ ldr r0, _0206FE6C ; =0x000004A4
+ ldr r1, [r1, #0xc]
+ mov r2, #0x1
+ add r0, r5, r0
+ add r1, #0x60
+ lsl r2, r2, #0x8
+ blx FUN_020DF438
+ mov r0, #0xc
+ add r1, r4, #0x0
+ bl FUN_02016A8C
+ mov r1, #0x1a
+ mov r0, #0x0
+ lsl r1, r1, #0x4
+ mov r2, #0xc
+ bl FUN_02002EEC
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ mov r0, #0xc
+ str r0, [sp, #0x4]
+ ldr r0, [r5, #0x0]
+ mov r2, #0x1
+ mov r3, #0xe
+ bl FUN_0200CB00
+ ldr r0, _0206FE70 ; =0x000005A4
+ ldr r0, [r5, r0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02025084
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0xc
+ str r0, [sp, #0x4]
+ ldr r0, [r5, #0x0]
+ mov r1, #0x0
+ mov r2, #0xa
+ mov r3, #0xf
+ bl FUN_0200CD68
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ mov r0, #0xc
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #0x0]
+ mov r0, #0x14
+ mov r1, #0x3
+ mov r3, #0x4
+ bl FUN_0200687C
+ mov r3, #0x20
+ mov r1, #0x4
+ str r3, [sp, #0x0]
+ mov r0, #0xc
+ str r0, [sp, #0x4]
+ mov r0, #0x14
+ add r2, r1, #0x0
+ bl FUN_02006930
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ mov r1, #0xc
+ str r1, [sp, #0xc]
+ ldr r2, [r5, #0x0]
+ mov r0, #0x14
+ mov r3, #0x5
+ bl FUN_0200687C
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ mov r0, #0xc
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #0x0]
+ mov r0, #0x14
+ mov r1, #0xe
+ mov r3, #0x5
+ bl FUN_020068C8
+ mov r0, #0x20
+ str r0, [sp, #0x0]
+ mov r0, #0xc
+ str r0, [sp, #0x4]
+ mov r0, #0x14
+ mov r1, #0xd
+ mov r2, #0x4
+ mov r3, #0x0
+ bl FUN_02006930
+ mov r2, #0x99
+ lsl r2, r2, #0x2
+ mov r3, #0xf9
+ add r1, r5, r2
+ add r2, #0xc0
+ lsl r3, r3, #0x2
+ mov r0, #0xc
+ add r2, r5, r2
+ add r3, r5, r3
+ bl FUN_020724D4
+ mov r0, #0x0
+ add r1, r0, #0x0
+ bl FUN_02017FE4
+ mov r0, #0x4
+ mov r1, #0x0
+ bl FUN_02017FE4
+ add sp, #0x14
+ pop {r4-r5, pc}
+ .balign 4
+_0206FE6C: .word 0x000004A4
+_0206FE70: .word 0x000005A4
+
+ thumb_func_start FUN_0206FE74
+FUN_0206FE74: ; 0x0206FE74
+ push {r3-r7, lr}
+ ldr r1, _0206FF50 ; =0x00000B38
+ mov r2, #0xc
+ add r4, r0, #0x0
+ bl FUN_02006268
+ ldr r2, _0206FF50 ; =0x00000B38
+ mov r1, #0x0
+ add r6, r0, #0x0
+ blx FUN_020DF4A4
+ add r0, r4, #0x0
+ bl FUN_0200628C
+ ldr r1, _0206FF54 ; =0x000005A4
+ str r0, [r6, r1]
+ mov r0, #0xc
+ bl FUN_02016B94
+ str r0, [r6, #0x0]
+ ldr r0, _0206FF54 ; =0x000005A4
+ ldr r1, [r6, r0]
+ add r0, r1, #0x0
+ add r0, #0x20
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x2
+ bne _0206FEBC
+ ldr r0, [r1, #0x14]
+ cmp r0, #0x0
+ beq _0206FEBC
+ mov r0, #0xc
+ bl FUN_0206BB5C
+ ldr r1, _0206FF58 ; =0x00000B34
+ str r0, [r6, r1]
+ b _0206FEC2
+_0206FEBC:
+ ldr r0, _0206FF58 ; =0x00000B34
+ mov r1, #0x0
+ str r1, [r6, r0]
+_0206FEC2:
+ ldr r2, _0206FF5C ; =0x00000192
+ mov r0, #0x0
+ mov r1, #0x1a
+ mov r3, #0xc
+ bl FUN_0200A86C
+ ldr r1, _0206FF60 ; =0x0000069C
+ mov r2, #0x0
+ str r0, [r6, r1]
+ mov r0, #0xf
+ mov r1, #0xe
+ mov r3, #0xc
+ bl FUN_0200B870
+ ldr r1, _0206FF64 ; =0x00000698
+ str r0, [r6, r1]
+ mov r0, #0xc
+ bl FUN_0200AA80
+ mov r1, #0x6a
+ lsl r1, r1, #0x4
+ add r7, r1, #0x0
+ str r0, [r6, r1]
+ mov r4, #0x0
+ add r5, r6, #0x0
+ add r7, #0x60
+_0206FEF6:
+ mov r0, #0xb
+ mov r1, #0xc
+ bl FUN_020219F4
+ str r0, [r5, r7]
+ add r4, r4, #0x1
+ add r5, #0x2c
+ cmp r4, #0x6
+ blo _0206FEF6
+ mov r0, #0x1
+ lsl r0, r0, #0x8
+ mov r1, #0xc
+ bl FUN_020219F4
+ ldr r1, _0206FF68 ; =0x000006A4
+ str r0, [r6, r1]
+ mov r0, #0x1
+ lsl r0, r0, #0x8
+ mov r1, #0xc
+ bl FUN_020219F4
+ ldr r1, _0206FF6C ; =0x000006A8
+ mov r5, #0x0
+ str r0, [r6, r1]
+ add r4, r6, #0x0
+ add r7, r1, #0x4
+_0206FF2A:
+ mov r0, #0x20
+ mov r1, #0xc
+ bl FUN_020219F4
+ str r0, [r4, r7]
+ add r5, r5, #0x1
+ add r4, r4, #0x4
+ cmp r5, #0x13
+ blo _0206FF2A
+ ldr r0, _0206FF54 ; =0x000005A4
+ ldr r0, [r6, r0]
+ add r0, #0x22
+ ldrb r1, [r0, #0x0]
+ ldr r0, _0206FF70 ; =0x00000B25
+ strb r1, [r6, r0]
+ add r0, r0, #0x1
+ strb r1, [r6, r0]
+ add r0, r6, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+_0206FF50: .word 0x00000B38
+_0206FF54: .word 0x000005A4
+_0206FF58: .word 0x00000B34
+_0206FF5C: .word 0x00000192
+_0206FF60: .word 0x0000069C
+_0206FF64: .word 0x00000698
+_0206FF68: .word 0x000006A4
+_0206FF6C: .word 0x000006A8
+_0206FF70: .word 0x00000B25
+
+ thumb_func_start FUN_0206FF74
+FUN_0206FF74: ; 0x0206FF74
+ push {r3-r4}
+ ldr r2, _0206FFAC ; =0x000005A4
+ mov r3, #0x80
+ ldr r1, [r0, r2]
+ add r1, #0x20
+ ldrb r1, [r1, #0x0]
+ tst r1, r3
+ beq _0206FF9E
+ ldr r1, _0206FFB0 ; =0x00000B23
+ ldrb r4, [r0, r1]
+ orr r4, r3
+ strb r4, [r0, r1]
+ ldr r1, [r0, r2]
+ add r0, r1, #0x0
+ add r0, #0x20
+ ldrb r0, [r0, #0x0]
+ add r1, #0x20
+ eor r0, r3
+ strb r0, [r1, #0x0]
+ pop {r3-r4}
+ bx lr
+_0206FF9E:
+ ldr r2, _0206FFB0 ; =0x00000B23
+ mov r1, #0x80
+ ldrb r3, [r0, r2]
+ bic r3, r1
+ strb r3, [r0, r2]
+ pop {r3-r4}
+ bx lr
+ .balign 4
+_0206FFAC: .word 0x000005A4
+_0206FFB0: .word 0x00000B23
+
+ thumb_func_start FUN_0206FFB4
+FUN_0206FFB4: ; 0x0206FFB4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, _02070064 ; =0x000005A4
+ mov r4, #0x3
+ ldr r1, [r5, r0]
+ add r0, r1, #0x0
+ add r0, #0x21
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x2
+ bne _0206FFD0
+ ldr r1, _02070068 ; =0x020F95CC
+ ldr r0, _0207006C ; =0x00000808
+ str r1, [r5, r0]
+ b _0206FFEA
+_0206FFD0:
+ add r1, #0x20
+ ldrb r0, [r1, #0x0]
+ cmp r0, #0x2
+ beq _0206FFDC
+ cmp r0, #0x11
+ bne _0206FFE4
+_0206FFDC:
+ ldr r1, _02070070 ; =0x020F960C
+ ldr r0, _0207006C ; =0x00000808
+ str r1, [r5, r0]
+ b _0206FFEA
+_0206FFE4:
+ ldr r1, _02070074 ; =0x020F958C
+ ldr r0, _0207006C ; =0x00000808
+ str r1, [r5, r0]
+_0206FFEA:
+ ldr r0, _02070064 ; =0x000005A4
+ ldr r1, [r5, r0]
+ add r1, #0x20
+ ldrb r1, [r1, #0x0]
+ cmp r1, #0x2
+ beq _0207003C
+ cmp r1, #0x11
+ beq _0207003C
+ add r0, #0x2c
+ ldr r0, [r5, r0]
+ mov r1, #0x0
+ bl FUN_020200A0
+ ldr r0, _02070078 ; =0x000005D4
+ mov r1, #0x0
+ ldr r0, [r5, r0]
+ bl FUN_02020130
+ ldr r0, _02070078 ; =0x000005D4
+ add r1, sp, #0x0
+ ldr r0, [r5, r0]
+ add r1, #0x2
+ add r2, sp, #0x0
+ bl FUN_0200C75C
+ ldr r0, _02070078 ; =0x000005D4
+ add r3, sp, #0x0
+ mov r2, #0x0
+ ldrsh r2, [r3, r2]
+ mov r1, #0x2
+ ldrsh r1, [r3, r1]
+ sub r2, #0x8
+ lsl r2, r2, #0x10
+ ldr r0, [r5, r0]
+ asr r2, r2, #0x10
+ bl FUN_0200C6E4
+ mov r0, #0x1
+ eor r0, r4
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+_0207003C:
+ ldr r0, _02070064 ; =0x000005A4
+ ldr r1, [r5, r0]
+ add r1, #0x20
+ ldrb r1, [r1, #0x0]
+ cmp r1, #0x4
+ bne _0207005A
+ add r0, #0x30
+ ldr r0, [r5, r0]
+ mov r1, #0x0
+ bl FUN_020200A0
+ mov r0, #0x2
+ eor r0, r4
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+_0207005A:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02073094
+ pop {r3-r5, pc}
+ .balign 4
+_02070064: .word 0x000005A4
+_02070068: .word 0x020F95CC
+_0207006C: .word 0x00000808
+_02070070: .word 0x020F960C
+_02070074: .word 0x020F958C
+_02070078: .word 0x000005D4
+
+ thumb_func_start FUN_0207007C
+FUN_0207007C: ; 0x0207007C
+ mov r2, #0x2c
+ mul r2, r1
+ add r1, r0, r2
+ ldr r0, _02070088 ; =0x00000729
+ ldrb r0, [r1, r0]
+ bx lr
+ .balign 4
+_02070088: .word 0x00000729
+
+ thumb_func_start FUN_0207008C
+FUN_0207008C: ; 0x0207008C
+ push {r4-r7, lr}
+ sub sp, #0xc
+ str r1, [sp, #0x0]
+ add r5, r0, #0x0
+ ldr r0, [sp, #0x0]
+ mov r1, #0x2c
+ add r4, r0, #0x0
+ ldr r0, _020701D8 ; =0x00000729
+ mul r4, r1
+ add r0, r5, r0
+ mov r1, #0x0
+ str r0, [sp, #0x8]
+ strb r1, [r0, r4]
+ ldr r0, _020701DC ; =0x000005A4
+ ldr r0, [r5, r0]
+ ldr r0, [r0, #0x0]
+ bl FUN_0206B9AC
+ ldr r1, [sp, #0x0]
+ cmp r0, r1
+ bgt _020700BC
+ add sp, #0xc
+ mov r0, #0x0
+ pop {r4-r7, pc}
+_020700BC:
+ ldr r0, _020701DC ; =0x000005A4
+ ldr r0, [r5, r0]
+ ldr r0, [r0, #0x0]
+ bl FUN_0206B9B0
+ mov r1, #0x5
+ mov r2, #0x0
+ add r7, r0, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x4]
+ bne _020700DE
+ add sp, #0xc
+ mov r0, #0x0
+ pop {r4-r7, pc}
+_020700DE:
+ ldr r2, [sp, #0x0]
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ bl FUN_02072A00
+ ldr r0, [sp, #0x0]
+ mov r1, #0x2c
+ add r6, r0, #0x0
+ mul r6, r1
+ ldr r1, _020701E0 ; =0x00000704
+ ldr r0, [sp, #0x4]
+ add r2, r5, r6
+ strh r0, [r2, r1]
+ add r0, r7, #0x0
+ mov r1, #0xa2
+ mov r2, #0x0
+ bl FUN_020671BC
+ ldr r1, _020701E4 ; =0x00000706
+ add r2, r5, r6
+ strh r0, [r2, r1]
+ add r0, r7, #0x0
+ mov r1, #0xa3
+ mov r2, #0x0
+ bl FUN_020671BC
+ ldr r1, _020701E8 ; =0x00000708
+ add r2, r5, r6
+ strh r0, [r2, r1]
+ add r0, r7, #0x0
+ mov r1, #0xa0
+ mov r2, #0x0
+ bl FUN_020671BC
+ ldr r1, _020701EC ; =0x0000070A
+ add r2, r5, r6
+ strh r0, [r2, r1]
+ add r0, r7, #0x0
+ mov r1, #0x6
+ mov r2, #0x0
+ bl FUN_020671BC
+ ldr r1, _020701F0 ; =0x0000070C
+ add r2, r5, r6
+ strh r0, [r2, r1]
+ add r0, r7, #0x0
+ mov r1, #0xa1
+ mov r2, #0x0
+ bl FUN_020671BC
+ ldr r1, _020701F4 ; =0x00000712
+ add r2, r5, r6
+ strh r0, [r2, r1]
+ add r0, r7, #0x0
+ mov r1, #0x4c
+ mov r2, #0x0
+ bl FUN_020671BC
+ mov r1, #0x71
+ add r2, r5, r6
+ lsl r1, r1, #0x4
+ strb r0, [r2, r1]
+ add r0, r7, #0x0
+ mov r1, #0x70
+ mov r2, #0x0
+ bl FUN_020671BC
+ ldr r1, _020701F8 ; =0x00000711
+ add r2, r5, r6
+ strb r0, [r2, r1]
+ add r0, r7, #0x0
+ mov r1, #0xaf
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x1
+ ldr r0, _020701FC ; =0x0000070E
+ bne _02070184
+ add r2, r5, r0
+ ldrh r1, [r2, r4]
+ ldr r0, _02070200 ; =0xFFFFEFFF
+ and r0, r1
+ b _0207018E
+_02070184:
+ add r2, r5, r0
+ ldrh r1, [r2, r4]
+ mov r0, #0x1
+ lsl r0, r0, #0xc
+ orr r0, r1
+_0207018E:
+ strh r0, [r2, r4]
+ ldr r0, _020701FC ; =0x0000070E
+ add r6, r5, r0
+ add r0, r7, #0x0
+ bl FUN_020689E0
+ lsl r0, r0, #0x1e
+ ldrh r2, [r6, r4]
+ ldr r1, _02070204 ; =0xFFFF9FFF
+ lsr r0, r0, #0x11
+ and r1, r2
+ orr r0, r1
+ strh r0, [r6, r4]
+ ldr r0, [sp, #0x8]
+ mov r1, #0x1
+ strb r1, [r0, r4]
+ add r0, r7, #0x0
+ bl FUN_0207C2D4
+ lsl r0, r0, #0x18
+ ldrh r1, [r6, r4]
+ ldr r2, _02070208 ; =0xFFFFF000
+ lsr r0, r0, #0x18
+ and r1, r2
+ lsr r2, r2, #0x14
+ and r0, r2
+ orr r0, r1
+ strh r0, [r6, r4]
+ ldr r2, [sp, #0x0]
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ bl FUN_0207020C
+ mov r0, #0x1
+ add sp, #0xc
+ pop {r4-r7, pc}
+ nop
+_020701D8: .word 0x00000729
+_020701DC: .word 0x000005A4
+_020701E0: .word 0x00000704
+_020701E4: .word 0x00000706
+_020701E8: .word 0x00000708
+_020701EC: .word 0x0000070A
+_020701F0: .word 0x0000070C
+_020701F4: .word 0x00000712
+_020701F8: .word 0x00000711
+_020701FC: .word 0x0000070E
+_02070200: .word 0xFFFFEFFF
+_02070204: .word 0xFFFF9FFF
+_02070208: .word 0xFFFFF000
+
+ thumb_func_start FUN_0207020C
+FUN_0207020C: ; 0x0207020C
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ ldr r0, _0207029C ; =0x000005A4
+ add r5, r1, #0x0
+ ldr r1, [r7, r0]
+ add r0, r1, #0x0
+ add r0, #0x20
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0xd
+ bne _0207029A
+ mov r0, #0x2c
+ add r6, r2, #0x0
+ mul r6, r0
+ mov r0, #0x71
+ add r3, r7, r6
+ lsl r0, r0, #0x4
+ ldrb r2, [r3, r0]
+ cmp r2, #0x1
+ beq _0207023A
+ sub r0, #0xa
+ ldrh r0, [r3, r0]
+ cmp r0, #0x0
+ bne _02070248
+_0207023A:
+ ldr r0, _020702A0 ; =0x0000070E
+ add r2, r7, r0
+ ldrh r1, [r2, r6]
+ ldr r0, _020702A4 ; =0xFFFF7FFF
+ and r0, r1
+ strh r0, [r2, r6]
+ pop {r3-r7, pc}
+_02070248:
+ add r1, #0x2a
+ ldrb r1, [r1, #0x0]
+ add r0, r5, #0x0
+ bl FUN_020702A8
+ str r0, [sp, #0x0]
+ mov r4, #0x0
+_02070256:
+ add r1, r4, #0x0
+ add r0, r5, #0x0
+ add r1, #0x36
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ beq _0207026C
+ add r4, r4, #0x1
+ cmp r4, #0x4
+ blo _02070256
+_0207026C:
+ ldr r0, _0207029C ; =0x000005A4
+ ldr r0, [r7, r0]
+ add r0, #0x2b
+ ldrb r1, [r0, #0x0]
+ ldr r0, [sp, #0x0]
+ cmp r1, r0
+ bhi _0207028E
+ cmp r4, #0x2
+ blo _0207028E
+ ldr r0, _020702A0 ; =0x0000070E
+ add r2, r7, r0
+ ldrh r1, [r2, r6]
+ mov r0, #0x2
+ lsl r0, r0, #0xe
+ orr r0, r1
+ strh r0, [r2, r6]
+ pop {r3-r7, pc}
+_0207028E:
+ ldr r0, _020702A0 ; =0x0000070E
+ add r2, r7, r0
+ ldrh r1, [r2, r6]
+ ldr r0, _020702A4 ; =0xFFFF7FFF
+ and r0, r1
+ strh r0, [r2, r6]
+_0207029A:
+ pop {r3-r7, pc}
+ .balign 4
+_0207029C: .word 0x000005A4
+_020702A0: .word 0x0000070E
+_020702A4: .word 0xFFFF7FFF
+
+ thumb_func_start FUN_020702A8
+FUN_020702A8: ; 0x020702A8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ cmp r1, #0x4
+ bls _020702B2
+ b _020703B6
+_020702B2:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_020702BE: ; jump table (using 16-bit offset)
+ .short _020702C8 - _020702BE - 2; case 0
+ .short _020702F8 - _020702BE - 2; case 1
+ .short _02070328 - _020702BE - 2; case 2
+ .short _02070358 - _020702BE - 2; case 3
+ .short _02070388 - _020702BE - 2; case 4
+_020702C8:
+ mov r1, #0x7a
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x7b
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r4, r4, r0
+ add r0, r5, #0x0
+ mov r1, #0x7c
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r4, r4, r0
+ add r0, r5, #0x0
+ mov r1, #0x7d
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r4, r4, r0
+ b _020703B6
+_020702F8:
+ mov r1, #0x7e
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x7f
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r4, r4, r0
+ add r0, r5, #0x0
+ mov r1, #0x80
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r4, r4, r0
+ add r0, r5, #0x0
+ mov r1, #0x81
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r4, r4, r0
+ b _020703B6
+_02070328:
+ mov r1, #0x82
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x83
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r4, r4, r0
+ add r0, r5, #0x0
+ mov r1, #0x84
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r4, r4, r0
+ add r0, r5, #0x0
+ mov r1, #0x85
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r4, r4, r0
+ b _020703B6
+_02070358:
+ mov r1, #0x86
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x87
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r4, r4, r0
+ add r0, r5, #0x0
+ mov r1, #0x88
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r4, r4, r0
+ add r0, r5, #0x0
+ mov r1, #0x89
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r4, r4, r0
+ b _020703B6
+_02070388:
+ mov r1, #0x8a
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x8b
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r4, r4, r0
+ add r0, r5, #0x0
+ mov r1, #0x8c
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r4, r4, r0
+ add r0, r5, #0x0
+ mov r1, #0x8d
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r4, r4, r0
+_020703B6:
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020703BC
+FUN_020703BC: ; 0x020703BC
+ mov r1, #0x39
+ lsl r1, r1, #0x4
+ add r0, r0, r1
+ bx lr
+
+ thumb_func_start FUN_020703C4
+FUN_020703C4: ; 0x020703C4
+ push {r4-r7, lr}
+ sub sp, #0x1c
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ add r7, r3, #0x0
+ cmp r4, #0x0
+ beq _020703E4
+ ldr r0, _02070474 ; =0x000005A4
+ ldr r0, [r5, r0]
+ add r0, #0x21
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _020703EC
+ cmp r4, #0x1
+ bne _020703EC
+_020703E4:
+ mov r0, #0x99
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ b _020703F2
+_020703EC:
+ mov r0, #0xc9
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+_020703F2:
+ mov r1, #0x2c
+ mul r1, r4
+ ldr r2, _02070478 ; =0x00000714
+ add r1, r5, r1
+ strb r6, [r1, r2]
+ add r2, r2, #0x1
+ strb r7, [r1, r2]
+ mov r2, #0x10
+ str r2, [sp, #0x0]
+ mov r1, #0x6
+ str r1, [sp, #0x4]
+ str r0, [sp, #0x8]
+ mov r0, #0x0
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ str r2, [sp, #0x14]
+ str r1, [sp, #0x18]
+ ldr r0, [r5, #0x0]
+ mov r1, #0x2
+ add r2, r6, #0x0
+ add r3, r7, #0x0
+ bl FUN_02018170
+ add r0, sp, #0x20
+ ldrb r0, [r0, #0x10]
+ cmp r0, #0x0
+ bne _0207044C
+ add r0, r7, #0x3
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x9
+ str r0, [sp, #0x4]
+ mov r0, #0x1
+ str r0, [sp, #0x8]
+ mov r0, #0x10
+ add r3, r6, #0x6
+ str r0, [sp, #0xc]
+ lsl r3, r3, #0x18
+ ldr r0, [r5, #0x0]
+ mov r1, #0x2
+ mov r2, #0x17
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+_0207044C:
+ mov r0, #0x10
+ str r0, [sp, #0x0]
+ mov r0, #0x6
+ str r0, [sp, #0x4]
+ add r0, r4, #0x3
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x8]
+ ldr r0, [r5, #0x0]
+ mov r1, #0x2
+ add r2, r6, #0x0
+ add r3, r7, #0x0
+ bl FUN_020186B4
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_020709FC
+ add sp, #0x1c
+ pop {r4-r7, pc}
+ .balign 4
+_02070474: .word 0x000005A4
+_02070478: .word 0x00000714
+
+ thumb_func_start FUN_0207047C
+FUN_0207047C: ; 0x0207047C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _020704E4 ; =0x000005A4
+ ldr r2, [r4, r0]
+ add r0, r2, #0x0
+ add r0, #0x21
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x2
+ bne _02070492
+ ldr r1, _020704E8 ; =0x020F9694
+ b _02070494
+_02070492:
+ ldr r1, _020704EC ; =0x020F964C
+_02070494:
+ add r2, #0x20
+ ldrb r0, [r2, #0x0]
+ cmp r0, #0x10
+ bne _020704A4
+ add r0, r4, #0x0
+ bl FUN_02070600
+ b _020704D2
+_020704A4:
+ cmp r0, #0x6
+ bne _020704B0
+ add r0, r4, #0x0
+ bl FUN_020706E0
+ b _020704D2
+_020704B0:
+ cmp r0, #0xd
+ bne _020704BC
+ add r0, r4, #0x0
+ bl FUN_020707C0
+ b _020704D2
+_020704BC:
+ cmp r0, #0x2
+ beq _020704C4
+ cmp r0, #0x11
+ bne _020704CC
+_020704C4:
+ add r0, r4, #0x0
+ bl FUN_020708A0
+ b _020704D2
+_020704CC:
+ add r0, r4, #0x0
+ bl FUN_020704F0
+_020704D2:
+ ldr r0, [r4, #0x0]
+ mov r1, #0x2
+ bl FUN_0201AC68
+ ldr r0, [r4, #0x0]
+ mov r1, #0x4
+ bl FUN_0201AC68
+ pop {r4, pc}
+ .balign 4
+_020704E4: .word 0x000005A4
+_020704E8: .word 0x020F9694
+_020704EC: .word 0x020F964C
+
+ thumb_func_start FUN_020704F0
+FUN_020704F0: ; 0x020704F0
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ mov r4, #0x0
+_020704FA:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0207008C
+ cmp r0, #0x1
+ bne _020705D4
+ mov r0, #0x2c
+ mul r0, r4
+ add r1, r5, r0
+ mov r0, #0x71
+ lsl r0, r0, #0x4
+ ldrb r0, [r1, r0]
+ str r1, [sp, #0x4]
+ cmp r0, #0x1
+ bne _0207053A
+ mov r0, #0xc
+ add r2, r4, #0x0
+ mul r2, r0
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ add r3, r6, r2
+ ldrh r2, [r6, r2]
+ ldrh r3, [r3, #0x2]
+ add r0, r5, #0x0
+ lsl r2, r2, #0x18
+ lsl r3, r3, #0x18
+ add r1, r4, #0x0
+ lsr r2, r2, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_020703C4
+ b _0207055A
+_0207053A:
+ mov r0, #0xc
+ add r2, r4, #0x0
+ mul r2, r0
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ add r3, r6, r2
+ ldrh r2, [r6, r2]
+ ldrh r3, [r3, #0x2]
+ add r0, r5, #0x0
+ lsl r2, r2, #0x18
+ lsl r3, r3, #0x18
+ add r1, r4, #0x0
+ lsr r2, r2, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_020703C4
+_0207055A:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02072D1C
+ mov r0, #0xc
+ mul r0, r4
+ add r7, r6, r0
+ ldrh r2, [r7, #0x4]
+ ldrh r3, [r7, #0x6]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_020737D0
+ ldrh r2, [r7, #0x8]
+ ldrh r3, [r7, #0xa]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_020739E4
+ ldr r3, [sp, #0x4]
+ ldr r2, _020705F8 ; =0x0000070C
+ add r0, r5, #0x0
+ ldrh r2, [r3, r2]
+ add r1, r4, #0x0
+ bl FUN_02073A78
+ mov r2, #0x4
+ mov r3, #0x6
+ ldrsh r2, [r7, r2]
+ ldrsh r3, [r7, r3]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02073AD8
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02073B3C
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02073B0C
+ mov r2, #0x2c
+ mul r2, r4
+ add r3, r5, r2
+ ldr r2, _020705FC ; =0x0000070E
+ add r0, r5, #0x0
+ ldrh r2, [r3, r2]
+ add r1, r4, #0x0
+ lsl r2, r2, #0x14
+ lsr r2, r2, #0x14
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+ bl FUN_02073A4C
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r2, #0x0
+ bl FUN_020717E8
+ b _020705EA
+_020705D4:
+ mov r0, #0xc
+ add r2, r4, #0x0
+ mul r2, r0
+ add r7, r6, r2
+ mov r3, #0x2
+ ldrsh r2, [r6, r2]
+ ldrsh r3, [r7, r3]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02070988
+_020705EA:
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0x6
+ blo _020704FA
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+_020705F8: .word 0x0000070C
+_020705FC: .word 0x0000070E
+
+ thumb_func_start FUN_02070600
+FUN_02070600: ; 0x02070600
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ str r1, [sp, #0x4]
+ mov r4, #0x0
+_0207060A:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0207008C
+ cmp r0, #0x1
+ bne _020706B0
+ mov r0, #0xc
+ add r2, r4, #0x0
+ mul r2, r0
+ ldr r0, [sp, #0x4]
+ ldr r3, [sp, #0x4]
+ add r6, r0, r2
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldrh r2, [r3, r2]
+ ldrh r3, [r6, #0x2]
+ add r0, r5, #0x0
+ lsl r2, r2, #0x18
+ lsl r3, r3, #0x18
+ add r1, r4, #0x0
+ lsr r2, r2, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_020703C4
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02072E4C
+ ldrh r2, [r6, #0x4]
+ ldrh r3, [r6, #0x6]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_020737D0
+ ldrh r2, [r6, #0x8]
+ ldrh r3, [r6, #0xa]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_020739E4
+ mov r0, #0x2c
+ add r7, r4, #0x0
+ mul r7, r0
+ ldr r2, _020706D8 ; =0x0000070C
+ add r3, r5, r7
+ ldrh r2, [r3, r2]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02073A78
+ mov r2, #0x4
+ mov r3, #0x6
+ ldrsh r2, [r6, r2]
+ ldrsh r3, [r6, r3]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02073AD8
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02073B3C
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02073B0C
+ ldr r2, _020706DC ; =0x0000070E
+ add r3, r5, r7
+ ldrh r2, [r3, r2]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ lsl r2, r2, #0x14
+ lsr r2, r2, #0x14
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+ bl FUN_02073A4C
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r2, #0x0
+ bl FUN_020717E8
+ b _020706CA
+_020706B0:
+ mov r0, #0xc
+ add r2, r4, #0x0
+ mul r2, r0
+ ldr r0, [sp, #0x4]
+ ldr r6, [sp, #0x4]
+ add r3, r0, r2
+ ldrsh r2, [r6, r2]
+ mov r6, #0x2
+ ldrsh r3, [r3, r6]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02070988
+_020706CA:
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0x6
+ blo _0207060A
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+_020706D8: .word 0x0000070C
+_020706DC: .word 0x0000070E
+
+ thumb_func_start FUN_020706E0
+FUN_020706E0: ; 0x020706E0
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ str r1, [sp, #0x4]
+ mov r4, #0x0
+_020706EA:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0207008C
+ cmp r0, #0x1
+ bne _02070790
+ mov r0, #0xc
+ add r2, r4, #0x0
+ mul r2, r0
+ ldr r0, [sp, #0x4]
+ ldr r3, [sp, #0x4]
+ add r6, r0, r2
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldrh r2, [r3, r2]
+ ldrh r3, [r6, #0x2]
+ add r0, r5, #0x0
+ lsl r2, r2, #0x18
+ lsl r3, r3, #0x18
+ add r1, r4, #0x0
+ lsr r2, r2, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_020703C4
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02072EE4
+ ldrh r2, [r6, #0x4]
+ ldrh r3, [r6, #0x6]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_020737D0
+ ldrh r2, [r6, #0x8]
+ ldrh r3, [r6, #0xa]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_020739E4
+ mov r0, #0x2c
+ add r7, r4, #0x0
+ mul r7, r0
+ ldr r2, _020707B8 ; =0x0000070C
+ add r3, r5, r7
+ ldrh r2, [r3, r2]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02073A78
+ mov r2, #0x4
+ mov r3, #0x6
+ ldrsh r2, [r6, r2]
+ ldrsh r3, [r6, r3]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02073AD8
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02073B3C
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02073B0C
+ ldr r2, _020707BC ; =0x0000070E
+ add r3, r5, r7
+ ldrh r2, [r3, r2]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ lsl r2, r2, #0x14
+ lsr r2, r2, #0x14
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+ bl FUN_02073A4C
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r2, #0x0
+ bl FUN_020717E8
+ b _020707AA
+_02070790:
+ mov r0, #0xc
+ add r2, r4, #0x0
+ mul r2, r0
+ ldr r0, [sp, #0x4]
+ ldr r6, [sp, #0x4]
+ add r3, r0, r2
+ ldrsh r2, [r6, r2]
+ mov r6, #0x2
+ ldrsh r3, [r3, r6]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02070988
+_020707AA:
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0x6
+ blo _020706EA
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+_020707B8: .word 0x0000070C
+_020707BC: .word 0x0000070E
+
+ thumb_func_start FUN_020707C0
+FUN_020707C0: ; 0x020707C0
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ str r1, [sp, #0x4]
+ mov r4, #0x0
+_020707CA:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0207008C
+ cmp r0, #0x1
+ bne _02070870
+ mov r0, #0xc
+ add r2, r4, #0x0
+ mul r2, r0
+ ldr r0, [sp, #0x4]
+ ldr r3, [sp, #0x4]
+ add r6, r0, r2
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldrh r2, [r3, r2]
+ ldrh r3, [r6, #0x2]
+ add r0, r5, #0x0
+ lsl r2, r2, #0x18
+ lsl r3, r3, #0x18
+ add r1, r4, #0x0
+ lsr r2, r2, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_020703C4
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02072F78
+ ldrh r2, [r6, #0x4]
+ ldrh r3, [r6, #0x6]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_020737D0
+ ldrh r2, [r6, #0x8]
+ ldrh r3, [r6, #0xa]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_020739E4
+ mov r0, #0x2c
+ add r7, r4, #0x0
+ mul r7, r0
+ ldr r2, _02070898 ; =0x0000070C
+ add r3, r5, r7
+ ldrh r2, [r3, r2]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02073A78
+ mov r2, #0x4
+ mov r3, #0x6
+ ldrsh r2, [r6, r2]
+ ldrsh r3, [r6, r3]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02073AD8
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02073B3C
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02073B0C
+ ldr r2, _0207089C ; =0x0000070E
+ add r3, r5, r7
+ ldrh r2, [r3, r2]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ lsl r2, r2, #0x14
+ lsr r2, r2, #0x14
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+ bl FUN_02073A4C
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r2, #0x0
+ bl FUN_020717E8
+ b _0207088A
+_02070870:
+ mov r0, #0xc
+ add r2, r4, #0x0
+ mul r2, r0
+ ldr r0, [sp, #0x4]
+ ldr r6, [sp, #0x4]
+ add r3, r0, r2
+ ldrsh r2, [r6, r2]
+ mov r6, #0x2
+ ldrsh r3, [r3, r6]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02070988
+_0207088A:
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0x6
+ blo _020707CA
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+_02070898: .word 0x0000070C
+_0207089C: .word 0x0000070E
+
+ thumb_func_start FUN_020708A0
+FUN_020708A0: ; 0x020708A0
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ str r1, [sp, #0x4]
+ mov r4, #0x0
+_020708AA:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0207008C
+ cmp r0, #0x1
+ bne _02070958
+ mov r0, #0xc
+ add r2, r4, #0x0
+ mul r2, r0
+ ldr r0, [sp, #0x4]
+ ldr r3, [sp, #0x4]
+ add r6, r0, r2
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldrh r2, [r3, r2]
+ ldrh r3, [r6, #0x2]
+ add r0, r5, #0x0
+ lsl r2, r2, #0x18
+ lsl r3, r3, #0x18
+ add r1, r4, #0x0
+ lsr r2, r2, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_020703C4
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02072FDC
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02073024
+ ldrh r2, [r6, #0x4]
+ ldrh r3, [r6, #0x6]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_020737D0
+ ldrh r2, [r6, #0x8]
+ ldrh r3, [r6, #0xa]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_020739E4
+ mov r0, #0x2c
+ add r7, r4, #0x0
+ mul r7, r0
+ ldr r2, _02070980 ; =0x0000070C
+ add r3, r5, r7
+ ldrh r2, [r3, r2]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02073A78
+ mov r2, #0x4
+ mov r3, #0x6
+ ldrsh r2, [r6, r2]
+ ldrsh r3, [r6, r3]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02073AD8
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02073B3C
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02073B0C
+ ldr r2, _02070984 ; =0x0000070E
+ add r3, r5, r7
+ ldrh r2, [r3, r2]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ lsl r2, r2, #0x14
+ lsr r2, r2, #0x14
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+ bl FUN_02073A4C
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r2, #0x0
+ bl FUN_020717E8
+ b _02070972
+_02070958:
+ mov r0, #0xc
+ add r2, r4, #0x0
+ mul r2, r0
+ ldr r0, [sp, #0x4]
+ ldr r6, [sp, #0x4]
+ add r3, r0, r2
+ ldrsh r2, [r6, r2]
+ mov r6, #0x2
+ ldrsh r3, [r3, r6]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02070988
+_02070972:
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0x6
+ blo _020708AA
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+_02070980: .word 0x0000070C
+_02070984: .word 0x0000070E
+
+ thumb_func_start FUN_02070988
+FUN_02070988: ; 0x02070988
+ push {r4-r7, lr}
+ sub sp, #0x1c
+ add r7, r1, #0x0
+ add r4, r2, #0x0
+ mov r1, #0x10
+ mov r2, #0xf9
+ add r5, r0, #0x0
+ lsl r2, r2, #0x2
+ add r6, r3, #0x0
+ lsl r3, r6, #0x18
+ str r1, [sp, #0x0]
+ mov r0, #0x6
+ str r0, [sp, #0x4]
+ add r2, r5, r2
+ str r2, [sp, #0x8]
+ mov r2, #0x0
+ str r2, [sp, #0xc]
+ str r2, [sp, #0x10]
+ str r1, [sp, #0x14]
+ str r0, [sp, #0x18]
+ lsl r2, r4, #0x18
+ ldr r0, [r5, #0x0]
+ mov r1, #0x2
+ lsr r2, r2, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_02018170
+ mov r0, #0x10
+ str r0, [sp, #0x0]
+ mov r0, #0x6
+ str r0, [sp, #0x4]
+ mov r0, #0x1
+ str r0, [sp, #0x8]
+ lsl r2, r4, #0x18
+ lsl r3, r6, #0x18
+ ldr r0, [r5, #0x0]
+ mov r1, #0x2
+ lsr r2, r2, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_020186B4
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ mov r2, #0x7
+ bl FUN_02073A4C
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ mov r2, #0x0
+ bl FUN_02073A78
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ bl FUN_02073B3C
+ add sp, #0x1c
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020709FC
+FUN_020709FC: ; 0x020709FC
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, _02070A78 ; =0x000005A4
+ add r6, r1, #0x0
+ ldr r0, [r5, r0]
+ ldr r0, [r0, #0x0]
+ bl FUN_0206B9B0
+ ldr r1, _02070A7C ; =0x00000B23
+ ldrb r2, [r5, r1]
+ lsl r3, r2, #0x19
+ lsr r3, r3, #0x1f
+ cmp r3, #0x1
+ bne _02070A2C
+ add r1, r1, #0x2
+ ldrb r1, [r5, r1]
+ cmp r6, r1
+ beq _02070A28
+ lsl r1, r2, #0x1a
+ lsr r1, r1, #0x1a
+ cmp r6, r1
+ bne _02070A2C
+_02070A28:
+ mov r4, #0x7
+ b _02070A60
+_02070A2C:
+ ldr r1, _02070A80 ; =0x00000B25
+ ldrb r1, [r5, r1]
+ cmp r6, r1
+ bne _02070A38
+ mov r4, #0x4
+ b _02070A3A
+_02070A38:
+ mov r4, #0x0
+_02070A3A:
+ mov r1, #0xa2
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ bne _02070A4E
+ add r0, r4, #0x2
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ b _02070A60
+_02070A4E:
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02070A88
+ cmp r0, #0x1
+ bne _02070A60
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+_02070A60:
+ ldr r1, _02070A84 ; =0x000004A4
+ add r3, r6, #0x3
+ add r2, r5, r1
+ lsl r1, r4, #0x5
+ lsl r3, r3, #0x15
+ add r1, r2, r1
+ mov r0, #0x2
+ mov r2, #0x10
+ lsr r3, r3, #0x10
+ bl FUN_02017FB4
+ pop {r4-r6, pc}
+ .balign 4
+_02070A78: .word 0x000005A4
+_02070A7C: .word 0x00000B23
+_02070A80: .word 0x00000B25
+_02070A84: .word 0x000004A4
+
+ thumb_func_start FUN_02070A88
+FUN_02070A88: ; 0x02070A88
+ ldr r2, _02070AA0 ; =0x000005A4
+ ldr r0, [r0, r2]
+ add r0, #0x21
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x2
+ bne _02070A9A
+ mov r0, #0x1
+ tst r1, r0
+ bne _02070A9C
+_02070A9A:
+ mov r0, #0x0
+_02070A9C:
+ bx lr
+ nop
+_02070AA0: .word 0x000005A4
+
+ thumb_func_start FUN_02070AA4
+FUN_02070AA4: ; 0x02070AA4
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0x0
+ mov r3, #0x0
+ ldr r0, _02070AF4 ; =0x00000B25
+ str r3, [sp, #0x0]
+ ldrb r0, [r4, r0]
+ add r1, sp, #0xc
+ add r1, #0x1
+ str r0, [sp, #0x4]
+ mov r0, #0x4
+ str r0, [sp, #0x8]
+ ldr r0, _02070AF8 ; =0x00000808
+ add r2, sp, #0xc
+ ldr r0, [r4, r0]
+ bl FUN_0201C638
+ ldr r0, _02070AFC ; =0x000005A4
+ ldr r1, _02070AF4 ; =0x00000B25
+ ldr r0, [r4, r0]
+ ldrb r1, [r4, r1]
+ add r0, #0x21
+ ldrb r0, [r0, #0x0]
+ bl FUN_020714BC
+ add r1, r0, #0x0
+ ldr r0, _02070B00 ; =0x000005C8
+ ldr r0, [r4, r0]
+ bl FUN_02020130
+ ldr r0, _02070B00 ; =0x000005C8
+ add r2, sp, #0xc
+ ldrb r1, [r2, #0x1]
+ ldrb r2, [r2, #0x0]
+ ldr r0, [r4, r0]
+ bl FUN_0200C6E4
+ add sp, #0x10
+ pop {r4, pc}
+ nop
+_02070AF4: .word 0x00000B25
+_02070AF8: .word 0x00000808
+_02070AFC: .word 0x000005A4
+_02070B00: .word 0x000005C8
+
+ thumb_func_start FUN_02070B04
+FUN_02070B04: ; 0x02070B04
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02070B28
+ cmp r0, #0x1
+ bne _02070B14
+ mov r0, #0x1
+ pop {r4, pc}
+_02070B14:
+ add r0, r4, #0x0
+ bl FUN_02070D90
+ cmp r0, #0x1
+ bne _02070B22
+ mov r0, #0x2
+ pop {r4, pc}
+_02070B22:
+ mov r0, #0x5
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02070B28
+FUN_02070B28: ; 0x02070B28
+ push {r3-r6, lr}
+ sub sp, #0x4
+ add r5, r0, #0x0
+ ldr r0, _02070CC0 ; =0x021C48B8
+ mov r1, #0x40
+ ldr r0, [r0, #0x4c]
+ mov r3, #0x4
+ tst r1, r0
+ beq _02070B3E
+ mov r3, #0x0
+ b _02070B5A
+_02070B3E:
+ mov r1, #0x80
+ tst r1, r0
+ beq _02070B48
+ mov r3, #0x1
+ b _02070B5A
+_02070B48:
+ mov r1, #0x20
+ tst r1, r0
+ beq _02070B52
+ mov r3, #0x2
+ b _02070B5A
+_02070B52:
+ mov r1, #0x10
+ tst r0, r1
+ beq _02070B5A
+ mov r3, #0x3
+_02070B5A:
+ cmp r3, #0x4
+ bne _02070B64
+ add sp, #0x4
+ mov r0, #0x0
+ pop {r3-r6, pc}
+_02070B64:
+ ldr r4, _02070CC4 ; =0x00000B25
+ ldrb r0, [r5, r4]
+ cmp r0, #0x6
+ bne _02070BA0
+ cmp r3, #0x0
+ add r1, sp, #0x0
+ bne _02070B92
+ add r4, r4, #0x1
+ ldrb r6, [r5, r4]
+ mov r4, #0x1
+ ldr r3, _02070CC8 ; =0x020F9468
+ and r4, r6
+ add r6, r4, #0x2
+ mov r4, #0x6
+ mul r4, r6
+ add r0, r5, #0x0
+ add r1, #0x1
+ add r2, sp, #0x0
+ add r3, r3, r4
+ bl FUN_02070D2C
+ add r6, r0, #0x0
+ b _02070C1A
+_02070B92:
+ add r0, r5, #0x0
+ add r1, #0x1
+ add r2, sp, #0x0
+ bl FUN_02070CDC
+ add r6, r0, #0x0
+ b _02070C1A
+_02070BA0:
+ cmp r0, #0x7
+ bne _02070C0C
+ ldr r0, _02070CCC ; =0x000005A4
+ ldr r0, [r5, r0]
+ add r0, #0x20
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x2
+ beq _02070BDA
+ cmp r0, #0x11
+ beq _02070BDA
+ cmp r3, #0x0
+ bne _02070BDA
+ add r4, r4, #0x1
+ ldrb r6, [r5, r4]
+ mov r4, #0x1
+ add r1, sp, #0x0
+ and r4, r6
+ add r6, r4, #0x2
+ mov r4, #0x6
+ ldr r3, _02070CC8 ; =0x020F9468
+ mul r4, r6
+ add r0, r5, #0x0
+ add r1, #0x1
+ add r2, sp, #0x0
+ add r3, r3, r4
+ bl FUN_02070D2C
+ add r6, r0, #0x0
+ b _02070C1A
+_02070BDA:
+ cmp r3, #0x1
+ add r1, sp, #0x0
+ bne _02070BFE
+ ldr r4, _02070CD0 ; =0x00000B26
+ ldr r3, _02070CC8 ; =0x020F9468
+ ldrb r6, [r5, r4]
+ mov r4, #0x1
+ add r0, r5, #0x0
+ and r6, r4
+ mov r4, #0x6
+ mul r4, r6
+ add r1, #0x1
+ add r2, sp, #0x0
+ add r3, r3, r4
+ bl FUN_02070D2C
+ add r6, r0, #0x0
+ b _02070C1A
+_02070BFE:
+ add r0, r5, #0x0
+ add r1, #0x1
+ add r2, sp, #0x0
+ bl FUN_02070CDC
+ add r6, r0, #0x0
+ b _02070C1A
+_02070C0C:
+ add r1, sp, #0x0
+ add r0, r5, #0x0
+ add r1, #0x1
+ add r2, sp, #0x0
+ bl FUN_02070CDC
+ add r6, r0, #0x0
+_02070C1A:
+ ldr r0, _02070CC4 ; =0x00000B25
+ ldrb r0, [r5, r0]
+ cmp r6, r0
+ beq _02070CB8
+ cmp r6, #0xff
+ beq _02070CB8
+ add r0, r6, #0x0
+ add r0, #0xfa
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x1
+ bhi _02070C3E
+ ldr r0, _02070CD4 ; =0x000005C8
+ mov r1, #0x0
+ ldr r0, [r5, r0]
+ bl FUN_020200A0
+ b _02070C6E
+_02070C3E:
+ ldr r0, _02070CCC ; =0x000005A4
+ add r1, r6, #0x0
+ ldr r0, [r5, r0]
+ add r0, #0x21
+ ldrb r0, [r0, #0x0]
+ bl FUN_020714BC
+ add r1, r0, #0x0
+ ldr r0, _02070CD4 ; =0x000005C8
+ ldr r0, [r5, r0]
+ bl FUN_02020130
+ ldr r0, _02070CD4 ; =0x000005C8
+ mov r1, #0x1
+ ldr r0, [r5, r0]
+ bl FUN_020200A0
+ ldr r0, _02070CD4 ; =0x000005C8
+ add r2, sp, #0x0
+ ldrb r1, [r2, #0x1]
+ ldrb r2, [r2, #0x0]
+ ldr r0, [r5, r0]
+ bl FUN_0200C6E4
+_02070C6E:
+ ldr r0, _02070CC4 ; =0x00000B25
+ mov r2, #0x0
+ ldrb r4, [r5, r0]
+ strb r6, [r5, r0]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_020713EC
+ ldr r1, _02070CC4 ; =0x00000B25
+ add r0, r5, #0x0
+ ldrb r1, [r5, r1]
+ mov r2, #0x1
+ bl FUN_020713EC
+ ldr r0, _02070CD8 ; =0x000005DC
+ bl FUN_020054C8
+ cmp r4, #0x6
+ bhs _02070CA6
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r2, #0x0
+ bl FUN_020717E8
+ ldr r0, [r5, #0x0]
+ mov r1, #0x4
+ bl FUN_0201AC68
+_02070CA6:
+ cmp r4, #0x6
+ beq _02070CB2
+ cmp r4, #0x7
+ beq _02070CB2
+ ldr r0, _02070CD0 ; =0x00000B26
+ strb r4, [r5, r0]
+_02070CB2:
+ add sp, #0x4
+ mov r0, #0x1
+ pop {r3-r6, pc}
+_02070CB8:
+ mov r0, #0x0
+ add sp, #0x4
+ pop {r3-r6, pc}
+ nop
+_02070CC0: .word 0x021C48B8
+_02070CC4: .word 0x00000B25
+_02070CC8: .word 0x020F9468
+_02070CCC: .word 0x000005A4
+_02070CD0: .word 0x00000B26
+_02070CD4: .word 0x000005C8
+_02070CD8: .word 0x000005DC
+
+ thumb_func_start FUN_02070CDC
+FUN_02070CDC: ; 0x02070CDC
+ push {r3-r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ ldr r0, _02070D24 ; =0x00000B25
+ add r7, r1, #0x0
+ ldrb r4, [r5, r0]
+ str r2, [sp, #0xc]
+ add r6, r3, #0x0
+_02070CEC:
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ str r4, [sp, #0x4]
+ ldr r0, _02070D28 ; =0x00000808
+ str r6, [sp, #0x8]
+ ldr r0, [r5, r0]
+ ldr r2, [sp, #0xc]
+ add r1, r7, #0x0
+ mov r3, #0x0
+ bl FUN_0201C638
+ add r4, r0, #0x0
+ cmp r4, #0x6
+ beq _02070D1C
+ cmp r4, #0x7
+ beq _02070D1C
+ cmp r4, #0xff
+ beq _02070D1C
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0207007C
+ cmp r0, #0x0
+ beq _02070CEC
+_02070D1C:
+ add r0, r4, #0x0
+ add sp, #0x10
+ pop {r3-r7, pc}
+ nop
+_02070D24: .word 0x00000B25
+_02070D28: .word 0x00000808
+
+ thumb_func_start FUN_02070D2C
+FUN_02070D2C: ; 0x02070D2C
+ push {r3-r7, lr}
+ sub sp, #0x10
+ add r6, r0, #0x0
+ add r7, r1, #0x0
+ str r2, [sp, #0xc]
+ add r5, r3, #0x0
+ mov r4, #0x0
+_02070D3A:
+ cmp r4, #0x6
+ beq _02070D70
+ ldrb r1, [r5, r4]
+ add r0, r6, #0x0
+ bl FUN_0207007C
+ cmp r0, #0x0
+ beq _02070D68
+ mov r3, #0x0
+ str r3, [sp, #0x0]
+ ldrb r0, [r5, r4]
+ ldr r2, [sp, #0xc]
+ add r1, r7, #0x0
+ str r0, [sp, #0x4]
+ mov r0, #0x4
+ str r0, [sp, #0x8]
+ ldr r0, _02070D8C ; =0x00000808
+ ldr r0, [r6, r0]
+ bl FUN_0201C638
+ add sp, #0x10
+ ldrb r0, [r5, r4]
+ pop {r3-r7, pc}
+_02070D68:
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ b _02070D3A
+_02070D70:
+ mov r3, #0x0
+ str r3, [sp, #0x0]
+ str r3, [sp, #0x4]
+ mov r0, #0x4
+ str r0, [sp, #0x8]
+ ldr r0, _02070D8C ; =0x00000808
+ ldr r2, [sp, #0xc]
+ ldr r0, [r6, r0]
+ add r1, r7, #0x0
+ bl FUN_0201C638
+ mov r0, #0x0
+ add sp, #0x10
+ pop {r3-r7, pc}
+ .balign 4
+_02070D8C: .word 0x00000808
+
+ thumb_func_start FUN_02070D90
+FUN_02070D90: ; 0x02070D90
+ push {r3-r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ bl FUN_02071870
+ mov r1, #0x0
+ mvn r1, r1
+ cmp r0, r1
+ beq _02070E42
+ ldr r1, _02070E48 ; =0x00000B25
+ mov r2, #0x0
+ ldrb r4, [r5, r1]
+ strb r0, [r5, r1]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_020713EC
+ ldr r1, _02070E48 ; =0x00000B25
+ add r0, r5, #0x0
+ ldrb r1, [r5, r1]
+ mov r2, #0x1
+ bl FUN_020713EC
+ cmp r4, #0x6
+ bhs _02070DCC
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r2, #0x0
+ bl FUN_020717E8
+_02070DCC:
+ mov r3, #0x0
+ ldr r0, _02070E48 ; =0x00000B25
+ str r3, [sp, #0x0]
+ ldrb r0, [r5, r0]
+ add r1, sp, #0xc
+ add r1, #0x1
+ str r0, [sp, #0x4]
+ mov r0, #0x4
+ str r0, [sp, #0x8]
+ ldr r0, _02070E4C ; =0x00000808
+ add r2, sp, #0xc
+ ldr r0, [r5, r0]
+ bl FUN_0201C638
+ ldr r0, _02070E50 ; =0x000005A4
+ ldr r1, _02070E48 ; =0x00000B25
+ ldr r0, [r5, r0]
+ ldrb r1, [r5, r1]
+ add r0, #0x21
+ ldrb r0, [r0, #0x0]
+ bl FUN_020714BC
+ add r1, r0, #0x0
+ ldr r0, _02070E54 ; =0x000005C8
+ ldr r0, [r5, r0]
+ bl FUN_02020130
+ ldr r0, _02070E54 ; =0x000005C8
+ mov r1, #0x1
+ ldr r0, [r5, r0]
+ bl FUN_020200A0
+ ldr r0, _02070E54 ; =0x000005C8
+ add r2, sp, #0xc
+ ldrb r1, [r2, #0x1]
+ ldrb r2, [r2, #0x0]
+ ldr r0, [r5, r0]
+ bl FUN_0200C6E4
+ mov r0, #0xb2
+ mov r1, #0x1
+ lsl r0, r0, #0x4
+ strb r1, [r5, r0]
+ add r1, r0, #0x5
+ ldrb r1, [r5, r1]
+ add r0, r0, #0x1
+ strb r1, [r5, r0]
+ ldr r0, _02070E58 ; =0x000005E4
+ bl FUN_020054C8
+ cmp r4, #0x6
+ beq _02070E3C
+ cmp r4, #0x7
+ beq _02070E3C
+ ldr r0, _02070E5C ; =0x00000B26
+ strb r4, [r5, r0]
+_02070E3C:
+ add sp, #0x10
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_02070E42:
+ mov r0, #0x0
+ add sp, #0x10
+ pop {r3-r5, pc}
+ .balign 4
+_02070E48: .word 0x00000B25
+_02070E4C: .word 0x00000808
+_02070E50: .word 0x000005A4
+_02070E54: .word 0x000005C8
+_02070E58: .word 0x000005E4
+_02070E5C: .word 0x00000B26
+
+ thumb_func_start FUN_02070E60
+FUN_02070E60: ; 0x02070E60
+ push {r4-r6, lr}
+ sub sp, #0x10
+ add r6, r1, #0x0
+ add r5, r0, #0x0
+ add r0, r6, #0x0
+ add r0, #0xfa
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x1
+ bhi _02070E80
+ ldr r0, _02070F04 ; =0x000005C8
+ mov r1, #0x0
+ ldr r0, [r5, r0]
+ bl FUN_020200A0
+ b _02070ECC
+_02070E80:
+ mov r3, #0x0
+ ldr r0, _02070F08 ; =0x00000B25
+ str r3, [sp, #0x0]
+ ldrb r0, [r5, r0]
+ add r1, sp, #0xc
+ add r1, #0x1
+ str r0, [sp, #0x4]
+ mov r0, #0x4
+ str r0, [sp, #0x8]
+ ldr r0, _02070F0C ; =0x00000808
+ add r2, sp, #0xc
+ ldr r0, [r5, r0]
+ bl FUN_0201C638
+ ldr r0, _02070F10 ; =0x000005A4
+ add r1, r6, #0x0
+ ldr r0, [r5, r0]
+ add r0, #0x21
+ ldrb r0, [r0, #0x0]
+ bl FUN_020714BC
+ add r1, r0, #0x0
+ ldr r0, _02070F04 ; =0x000005C8
+ ldr r0, [r5, r0]
+ bl FUN_02020130
+ ldr r0, _02070F04 ; =0x000005C8
+ mov r1, #0x1
+ ldr r0, [r5, r0]
+ bl FUN_020200A0
+ ldr r0, _02070F04 ; =0x000005C8
+ add r2, sp, #0xc
+ ldrb r1, [r2, #0x1]
+ ldrb r2, [r2, #0x0]
+ ldr r0, [r5, r0]
+ bl FUN_0200C6E4
+_02070ECC:
+ ldr r0, _02070F08 ; =0x00000B25
+ mov r2, #0x0
+ ldrb r4, [r5, r0]
+ strb r6, [r5, r0]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_020713EC
+ ldr r1, _02070F08 ; =0x00000B25
+ add r0, r5, #0x0
+ ldrb r1, [r5, r1]
+ mov r2, #0x1
+ bl FUN_020713EC
+ cmp r4, #0x6
+ bhs _02070EFE
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r2, #0x0
+ bl FUN_020717E8
+ ldr r0, [r5, #0x0]
+ mov r1, #0x4
+ bl FUN_0201AC68
+_02070EFE:
+ add sp, #0x10
+ pop {r4-r6, pc}
+ nop
+_02070F04: .word 0x000005C8
+_02070F08: .word 0x00000B25
+_02070F0C: .word 0x00000808
+_02070F10: .word 0x000005A4
+
+ thumb_func_start FUN_02070F14
+FUN_02070F14: ; 0x02070F14
+ push {r3-r4, lr}
+ sub sp, #0x4
+ mov r1, #0xb2
+ add r4, r0, #0x0
+ lsl r1, r1, #0x4
+ ldrb r2, [r4, r1]
+ cmp r2, #0x0
+ beq _02070F8A
+ cmp r2, #0x1
+ beq _02070F30
+ cmp r2, #0x2
+ beq _02070F70
+ add sp, #0x4
+ pop {r3-r4, pc}
+_02070F30:
+ add r0, r1, #0x1
+ ldrb r0, [r4, r0]
+ add r1, sp, #0x0
+ add r1, #0x2
+ add r2, sp, #0x0
+ bl FUN_02071850
+ add r3, sp, #0x0
+ mov r1, #0x2
+ mov r2, #0x0
+ ldrsh r1, [r3, r1]
+ ldrsh r2, [r3, r2]
+ add r0, r4, #0x0
+ bl FUN_02073D1C
+ ldr r1, _02070F90 ; =0x00000B21
+ add r0, r4, #0x0
+ ldrb r1, [r4, r1]
+ mov r2, #0x2
+ bl FUN_020717E8
+ ldr r0, [r4, #0x0]
+ mov r1, #0x4
+ bl FUN_0201AC68
+ mov r0, #0xb2
+ lsl r0, r0, #0x4
+ ldrb r1, [r4, r0]
+ add sp, #0x4
+ add r1, r1, #0x1
+ strb r1, [r4, r0]
+ pop {r3-r4, pc}
+_02070F70:
+ add r1, r1, #0x1
+ ldrb r1, [r4, r1]
+ mov r2, #0x1
+ bl FUN_020717E8
+ ldr r0, [r4, #0x0]
+ mov r1, #0x4
+ bl FUN_0201AC68
+ mov r0, #0xb2
+ mov r1, #0x0
+ lsl r0, r0, #0x4
+ strb r1, [r4, r0]
+_02070F8A:
+ add sp, #0x4
+ pop {r3-r4, pc}
+ nop
+_02070F90: .word 0x00000B21
+
+ thumb_func_start FUN_02070F94
+FUN_02070F94: ; 0x02070F94
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _020710AC ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x1
+ tst r0, r1
+ beq _0207104A
+ ldr r0, _020710B0 ; =0x00000B25
+ ldrb r1, [r4, r0]
+ cmp r1, #0x6
+ bne _02070FAE
+ mov r0, #0x4
+ pop {r4, pc}
+_02070FAE:
+ cmp r1, #0x7
+ bne _02070FC6
+ ldr r0, _020710B4 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r0, _020710B8 ; =0x00000B23
+ ldrb r0, [r4, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1f
+ bne _0207104A
+ mov r0, #0x3
+ pop {r4, pc}
+_02070FC6:
+ ldr r0, _020710BC ; =0x000005A4
+ ldr r2, [r4, r0]
+ add r2, #0x20
+ ldrb r2, [r2, #0x0]
+ cmp r2, #0x3
+ beq _02070FD6
+ cmp r2, #0x13
+ bne _02070FE0
+_02070FD6:
+ ldr r0, _020710B4 ; =0x000005DC
+ bl FUN_020054C8
+ mov r0, #0x0
+ pop {r4, pc}
+_02070FE0:
+ cmp r2, #0x14
+ beq _02070FE8
+ cmp r2, #0xe
+ bne _0207100C
+_02070FE8:
+ mov r0, #0x2c
+ mul r0, r1
+ add r1, r4, r0
+ mov r0, #0x71
+ lsl r0, r0, #0x4
+ ldrb r0, [r1, r0]
+ cmp r0, #0x0
+ bne _02071002
+ ldr r0, _020710B4 ; =0x000005DC
+ bl FUN_020054C8
+ mov r0, #0x0
+ pop {r4, pc}
+_02071002:
+ ldr r0, _020710C0 ; =0x000005F2
+ bl FUN_020054C8
+ mov r0, #0x5
+ pop {r4, pc}
+_0207100C:
+ cmp r2, #0xf
+ bne _0207103A
+ mov r2, #0x2c
+ mul r2, r1
+ mov r1, #0x71
+ add r2, r4, r2
+ lsl r1, r1, #0x4
+ ldrb r1, [r2, r1]
+ cmp r1, #0x0
+ bne _02071030
+ add r0, #0x38
+ bl FUN_020054C8
+ add r0, r4, #0x0
+ bl FUN_020710C4
+ mov r0, #0x0
+ pop {r4, pc}
+_02071030:
+ add r0, #0x4e
+ bl FUN_020054C8
+ mov r0, #0x5
+ pop {r4, pc}
+_0207103A:
+ add r0, #0x38
+ bl FUN_020054C8
+ add r0, r4, #0x0
+ bl FUN_020710C4
+ mov r0, #0x0
+ pop {r4, pc}
+_0207104A:
+ ldr r0, _020710AC ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x2
+ tst r0, r1
+ beq _0207106E
+ ldr r0, _020710B8 ; =0x00000B23
+ ldrb r0, [r4, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1f
+ bne _0207106E
+ ldr r0, _020710B4 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r0, _020710B0 ; =0x00000B25
+ mov r1, #0x7
+ strb r1, [r4, r0]
+ mov r0, #0x3
+ pop {r4, pc}
+_0207106E:
+ add r0, r4, #0x0
+ bl FUN_02070B04
+ cmp r0, #0x2
+ bne _020710AA
+ ldr r1, _020710BC ; =0x000005A4
+ ldr r1, [r4, r1]
+ add r1, #0x20
+ ldrb r1, [r1, #0x0]
+ cmp r1, #0x14
+ beq _0207108E
+ add r1, #0xf2
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ cmp r1, #0x1
+ bhi _020710AA
+_0207108E:
+ ldr r1, _020710B0 ; =0x00000B25
+ ldrb r2, [r4, r1]
+ mov r1, #0x2c
+ mul r1, r2
+ add r2, r4, r1
+ mov r1, #0x71
+ lsl r1, r1, #0x4
+ ldrb r1, [r2, r1]
+ cmp r1, #0x0
+ beq _020710AA
+ ldr r0, _020710C0 ; =0x000005F2
+ bl FUN_020054C8
+ mov r0, #0x5
+_020710AA:
+ pop {r4, pc}
+ .balign 4
+_020710AC: .word 0x021C48B8
+_020710B0: .word 0x00000B25
+_020710B4: .word 0x000005DC
+_020710B8: .word 0x00000B23
+_020710BC: .word 0x000005A4
+_020710C0: .word 0x000005F2
+
+ thumb_func_start FUN_020710C4
+FUN_020710C4: ; 0x020710C4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r0, #0x81
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ mov r1, #0x1
+ bl FUN_0200D0E0
+ mov r0, #0xc
+ mov r1, #0x8
+ bl FUN_02016998
+ add r4, r0, #0x0
+ ldr r0, _02071174 ; =0x000005A4
+ ldr r0, [r5, r0]
+ add r0, #0x20
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0xf
+ bgt _020710FC
+ bge _02071124
+ cmp r0, #0x2
+ bgt _0207113C
+ cmp r0, #0x0
+ blt _0207113C
+ beq _0207110C
+ cmp r0, #0x2
+ beq _02071118
+ b _0207113C
+_020710FC:
+ cmp r0, #0x12
+ bgt _0207113C
+ cmp r0, #0x11
+ blt _0207113C
+ beq _02071118
+ cmp r0, #0x12
+ beq _02071130
+ b _0207113C
+_0207110C:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0207117C
+ add r2, r0, #0x0
+ b _02071146
+_02071118:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_020712F0
+ add r2, r0, #0x0
+ b _02071146
+_02071124:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02071274
+ add r2, r0, #0x0
+ b _02071146
+_02071130:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02071280
+ add r2, r0, #0x0
+ b _02071146
+_0207113C:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_020712B4
+ add r2, r0, #0x0
+_02071146:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02072844
+ mov r0, #0xc
+ add r1, r4, #0x0
+ bl FUN_02016A8C
+ add r0, r5, #0x0
+ bl FUN_0207295C
+ mov r1, #0x0
+ add r0, r5, #0x0
+ mvn r1, r1
+ mov r2, #0x1
+ bl FUN_020731D4
+ ldr r0, _02071178 ; =0x000005C8
+ mov r1, #0x1
+ ldr r0, [r5, r0]
+ bl FUN_0200C664
+ pop {r3-r5, pc}
+ .balign 4
+_02071174: .word 0x000005A4
+_02071178: .word 0x000005C8
+
+ thumb_func_start FUN_0207117C
+FUN_0207117C: ; 0x0207117C
+ push {r4-r7, lr}
+ sub sp, #0xc
+ str r1, [sp, #0x4]
+ ldr r1, _02071268 ; =0x000005A4
+ str r0, [sp, #0x0]
+ ldr r0, [r0, r1]
+ ldr r2, _0207126C ; =0x00000B25
+ ldr r1, [sp, #0x0]
+ ldr r0, [r0, #0x0]
+ ldrb r1, [r1, r2]
+ bl FUN_0206B9B0
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x4]
+ mov r1, #0x1
+ strb r1, [r0, #0x0]
+ mov r4, #0x0
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ ldr r1, _02071268 ; =0x000005A4
+ ldr r0, [sp, #0x0]
+ ldr r0, [r0, r1]
+ ldr r0, [r0, #0x1c]
+ bl FUN_02060144
+ cmp r0, #0x0
+ bne _02071258
+ ldr r1, _0207126C ; =0x00000B25
+ ldr r0, [sp, #0x0]
+ ldrb r1, [r0, r1]
+ mov r0, #0x2c
+ add r2, r1, #0x0
+ mul r2, r0
+ ldr r0, [sp, #0x0]
+ add r1, r0, r2
+ mov r0, #0x71
+ lsl r0, r0, #0x4
+ ldrb r0, [r1, r0]
+ cmp r0, #0x0
+ bne _0207124C
+ add r6, r4, #0x0
+_020711D0:
+ add r1, r6, #0x0
+ ldr r0, [sp, #0x8]
+ add r1, #0x36
+ mov r2, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x10
+ lsr r7, r0, #0x10
+ beq _02071210
+ add r0, r7, #0x0
+ bl FUN_02071948
+ cmp r0, #0xff
+ beq _02071206
+ ldr r1, [sp, #0x4]
+ add r2, r4, #0x0
+ strb r0, [r1, r5]
+ add r0, r5, #0x1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ ldr r0, [sp, #0x0]
+ add r1, r7, #0x0
+ bl FUN_020727FC
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+_02071206:
+ add r0, r6, #0x1
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ cmp r6, #0x4
+ blo _020711D0
+_02071210:
+ ldr r0, [sp, #0x4]
+ mov r1, #0x0
+ strb r1, [r0, r5]
+ add r0, r5, #0x1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ ldr r1, _0207126C ; =0x00000B25
+ ldr r0, [sp, #0x0]
+ ldrb r1, [r0, r1]
+ mov r0, #0x2c
+ add r2, r1, #0x0
+ mul r2, r0
+ ldr r0, [sp, #0x0]
+ add r1, r0, r2
+ ldr r0, _02071270 ; =0x0000070C
+ ldrh r0, [r1, r0]
+ bl FUN_0206EA98
+ cmp r0, #0x1
+ bne _0207123E
+ mov r1, #0x5
+ ldr r0, [sp, #0x4]
+ b _02071242
+_0207123E:
+ ldr r0, [sp, #0x4]
+ mov r1, #0x2
+_02071242:
+ strb r1, [r0, r5]
+ add r0, r5, #0x1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ b _02071258
+_0207124C:
+ ldr r0, [sp, #0x4]
+ add r1, r4, #0x0
+ strb r1, [r0, r5]
+ add r0, r5, #0x1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+_02071258:
+ ldr r0, [sp, #0x4]
+ mov r1, #0x9
+ strb r1, [r0, r5]
+ add r0, r5, #0x1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+_02071268: .word 0x000005A4
+_0207126C: .word 0x00000B25
+_02071270: .word 0x0000070C
+
+ thumb_func_start FUN_02071274
+FUN_02071274: ; 0x02071274
+ mov r0, #0xe
+ strb r0, [r1, #0x0]
+ mov r0, #0x9
+ strb r0, [r1, #0x1]
+ mov r0, #0x2
+ bx lr
+
+ thumb_func_start FUN_02071280
+FUN_02071280: ; 0x02071280
+ ldr r2, _020712B0 ; =0x00000B25
+ ldrb r3, [r0, r2]
+ mov r2, #0x2c
+ mul r2, r3
+ add r2, r0, r2
+ mov r0, #0x71
+ lsl r0, r0, #0x4
+ ldrb r0, [r2, r0]
+ cmp r0, #0x0
+ bne _020712A4
+ mov r0, #0x8
+ strb r0, [r1, #0x0]
+ mov r0, #0x1
+ strb r0, [r1, #0x1]
+ mov r0, #0x9
+ strb r0, [r1, #0x2]
+ mov r0, #0x3
+ bx lr
+_020712A4:
+ mov r0, #0x1
+ strb r0, [r1, #0x0]
+ mov r0, #0x9
+ strb r0, [r1, #0x1]
+ mov r0, #0x2
+ bx lr
+ .balign 4
+_020712B0: .word 0x00000B25
+
+ thumb_func_start FUN_020712B4
+FUN_020712B4: ; 0x020712B4
+ ldr r2, _020712E8 ; =0x00000B25
+ ldrb r3, [r0, r2]
+ mov r2, #0x2c
+ mul r2, r3
+ add r2, r0, r2
+ ldr r0, _020712EC ; =0x0000070E
+ ldrh r0, [r2, r0]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x1f
+ cmp r0, #0x1
+ bne _020712DA
+ mov r0, #0xd
+ strb r0, [r1, #0x0]
+ mov r0, #0x1
+ strb r0, [r1, #0x1]
+ mov r0, #0x9
+ strb r0, [r1, #0x2]
+ mov r0, #0x3
+ bx lr
+_020712DA:
+ mov r0, #0x1
+ strb r0, [r1, #0x0]
+ mov r0, #0x9
+ strb r0, [r1, #0x1]
+ mov r0, #0x2
+ bx lr
+ nop
+_020712E8: .word 0x00000B25
+_020712EC: .word 0x0000070E
+
+ thumb_func_start FUN_020712F0
+FUN_020712F0: ; 0x020712F0
+ push {r4, lr}
+ add r4, r1, #0x0
+ ldr r1, _0207133C ; =0x00000B25
+ ldrb r1, [r0, r1]
+ bl FUN_02071340
+ cmp r0, #0x0
+ beq _0207130A
+ cmp r0, #0x1
+ beq _02071316
+ cmp r0, #0x2
+ beq _02071326
+ b _02071336
+_0207130A:
+ mov r0, #0x1
+ strb r0, [r4, #0x0]
+ mov r0, #0x9
+ strb r0, [r4, #0x1]
+ mov r0, #0x2
+ pop {r4, pc}
+_02071316:
+ mov r0, #0xb
+ strb r0, [r4, #0x0]
+ mov r0, #0x1
+ strb r0, [r4, #0x1]
+ mov r0, #0x9
+ strb r0, [r4, #0x2]
+ mov r0, #0x3
+ pop {r4, pc}
+_02071326:
+ mov r0, #0xc
+ strb r0, [r4, #0x0]
+ mov r0, #0x1
+ strb r0, [r4, #0x1]
+ mov r0, #0x9
+ strb r0, [r4, #0x2]
+ mov r0, #0x3
+ pop {r4, pc}
+_02071336:
+ mov r0, #0x0
+ pop {r4, pc}
+ nop
+_0207133C: .word 0x00000B25
+
+ thumb_func_start FUN_02071340
+FUN_02071340: ; 0x02071340
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, _020713E0 ; =0x000005A4
+ add r4, r1, #0x0
+ ldr r2, [r5, r0]
+ ldr r0, [r2, #0x14]
+ cmp r0, #0x0
+ beq _0207136E
+ ldr r0, [r2, #0x0]
+ bl FUN_0206B9B0
+ add r1, r0, #0x0
+ ldr r0, _020713E0 ; =0x000005A4
+ ldr r2, _020713E4 ; =0x00000B34
+ ldr r0, [r5, r0]
+ ldr r2, [r5, r2]
+ ldr r0, [r0, #0x14]
+ bl FUN_0206BB84
+ cmp r0, #0x0
+ bne _0207136E
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_0207136E:
+ ldr r0, _020713E0 ; =0x000005A4
+ ldr r0, [r5, r0]
+ add r0, #0x20
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x11
+ bne _02071390
+ mov r0, #0x2c
+ mul r0, r4
+ add r1, r5, r0
+ ldr r0, _020713E8 ; =0x00000704
+ ldrh r0, [r1, r0]
+ bl FUN_0206A964
+ cmp r0, #0x1
+ bne _02071390
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_02071390:
+ ldr r1, _020713E0 ; =0x000005A4
+ mov r0, #0x0
+ ldr r2, [r5, r1]
+ add r1, r2, #0x0
+ add r1, #0x32
+ ldrb r1, [r1, #0x0]
+ lsl r1, r1, #0x18
+ lsr r3, r1, #0x1c
+ beq _020713BC
+ add r1, r4, #0x1
+_020713A4:
+ add r6, r2, r0
+ add r6, #0x2c
+ ldrb r6, [r6, #0x0]
+ cmp r1, r6
+ bne _020713B2
+ mov r0, #0x2
+ pop {r4-r6, pc}
+_020713B2:
+ add r0, r0, #0x1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, r3
+ blo _020713A4
+_020713BC:
+ mov r0, #0x2c
+ mul r0, r4
+ add r3, r5, r0
+ mov r0, #0x71
+ lsl r0, r0, #0x4
+ ldrb r1, [r3, r0]
+ cmp r1, #0x1
+ beq _020713D8
+ sub r0, r0, #0x6
+ add r2, #0x33
+ ldrh r1, [r3, r0]
+ ldrb r0, [r2, #0x0]
+ cmp r1, r0
+ ble _020713DC
+_020713D8:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_020713DC:
+ mov r0, #0x1
+ pop {r4-r6, pc}
+ .balign 4
+_020713E0: .word 0x000005A4
+_020713E4: .word 0x00000B34
+_020713E8: .word 0x00000704
+
+ thumb_func_start FUN_020713EC
+FUN_020713EC: ; 0x020713EC
+ push {r4-r6, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ cmp r4, #0x6
+ bne _02071426
+ mov r0, #0x5d
+ lsl r0, r0, #0x4
+ ldr r0, [r5, r0]
+ bl FUN_020201DC
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ cmp r6, #0x0
+ bne _02071410
+ mov r0, #0x2
+ and r0, r1
+ b _02071416
+_02071410:
+ mov r0, #0x2
+ and r0, r1
+ add r0, r0, #0x1
+_02071416:
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ mov r0, #0x5d
+ lsl r0, r0, #0x4
+ ldr r0, [r5, r0]
+ bl FUN_02020130
+ pop {r4-r6, pc}
+_02071426:
+ cmp r4, #0x7
+ bne _02071454
+ ldr r0, _020714B4 ; =0x000005D4
+ ldr r0, [r5, r0]
+ bl FUN_020201DC
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ cmp r6, #0x0
+ bne _02071440
+ mov r0, #0x2
+ and r0, r1
+ b _02071446
+_02071440:
+ mov r0, #0x2
+ and r0, r1
+ add r0, r0, #0x1
+_02071446:
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ ldr r0, _020714B4 ; =0x000005D4
+ ldr r0, [r5, r0]
+ bl FUN_02020130
+ pop {r4-r6, pc}
+_02071454:
+ cmp r6, #0x0
+ ldr r1, _020714B8 ; =0x00000716
+ bne _02071482
+ mov r0, #0x2c
+ add r3, r5, r1
+ mul r0, r4
+ ldrsh r2, [r3, r0]
+ add r1, r1, #0x2
+ sub r2, r2, #0x2
+ strh r2, [r3, r0]
+ add r2, r5, r1
+ ldrsh r1, [r2, r0]
+ sub r1, r1, #0x2
+ strh r1, [r2, r0]
+ lsl r0, r4, #0x2
+ add r1, r5, r0
+ mov r0, #0x5b
+ lsl r0, r0, #0x4
+ ldr r0, [r1, r0]
+ mov r1, #0x0
+ bl FUN_02020130
+ b _020714A8
+_02071482:
+ mov r0, #0x2c
+ add r3, r5, r1
+ mul r0, r4
+ ldrsh r2, [r3, r0]
+ add r1, r1, #0x2
+ add r2, r2, #0x2
+ strh r2, [r3, r0]
+ add r2, r5, r1
+ ldrsh r1, [r2, r0]
+ add r1, r1, #0x2
+ strh r1, [r2, r0]
+ lsl r0, r4, #0x2
+ add r1, r5, r0
+ mov r0, #0x5b
+ lsl r0, r0, #0x4
+ ldr r0, [r1, r0]
+ mov r1, #0x1
+ bl FUN_02020130
+_020714A8:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_020709FC
+ pop {r4-r6, pc}
+ nop
+_020714B4: .word 0x000005D4
+_020714B8: .word 0x00000716
+
+ thumb_func_start FUN_020714BC
+FUN_020714BC: ; 0x020714BC
+ cmp r1, #0x0
+ beq _020714C8
+ cmp r0, #0x0
+ beq _020714CC
+ cmp r1, #0x1
+ bne _020714CC
+_020714C8:
+ mov r0, #0x1
+ bx lr
+_020714CC:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_020714D0
+FUN_020714D0: ; 0x020714D0
+ push {r4, lr}
+ ldr r1, _02071550 ; =0x021C48B8
+ add r4, r0, #0x0
+ ldr r2, [r1, #0x48]
+ mov r1, #0x1
+ tst r1, r2
+ beq _0207150C
+ ldr r0, _02071554 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r0, _02071558 ; =0x00000B25
+ ldrb r1, [r4, r0]
+ cmp r1, #0x6
+ bhs _020714F8
+ sub r0, r0, #0x2
+ ldrb r0, [r4, r0]
+ lsl r0, r0, #0x1a
+ lsr r0, r0, #0x1a
+ cmp r1, r0
+ bne _02071502
+_020714F8:
+ add r0, r4, #0x0
+ bl FUN_02074538
+ mov r0, #0x3
+ pop {r4, pc}
+_02071502:
+ add r0, r4, #0x0
+ bl FUN_02074584
+ mov r0, #0x0
+ pop {r4, pc}
+_0207150C:
+ mov r1, #0x2
+ tst r1, r2
+ beq _02071522
+ ldr r0, _02071554 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r4, #0x0
+ bl FUN_02074538
+ mov r0, #0x3
+ pop {r4, pc}
+_02071522:
+ bl FUN_02070B04
+ cmp r0, #0x2
+ bne _0207154C
+ ldr r0, _02071558 ; =0x00000B25
+ ldrb r1, [r4, r0]
+ sub r0, r0, #0x2
+ ldrb r0, [r4, r0]
+ lsl r0, r0, #0x1a
+ lsr r0, r0, #0x1a
+ cmp r1, r0
+ bne _02071544
+ add r0, r4, #0x0
+ bl FUN_02074538
+ mov r0, #0x3
+ pop {r4, pc}
+_02071544:
+ add r0, r4, #0x0
+ bl FUN_02074584
+ mov r0, #0x0
+_0207154C:
+ pop {r4, pc}
+ nop
+_02071550: .word 0x021C48B8
+_02071554: .word 0x000005DC
+_02071558: .word 0x00000B25
+
+ thumb_func_start FUN_0207155C
+FUN_0207155C: ; 0x0207155C
+ push {r3-r5, lr}
+ sub sp, #0x8
+ ldr r1, _02071738 ; =0x000005A4
+ add r4, r0, #0x0
+ ldr r3, [r4, r1]
+ mov r0, #0x0
+ add r1, r3, #0x0
+ add r1, #0x32
+ ldrb r1, [r1, #0x0]
+ lsl r1, r1, #0x1c
+ lsr r1, r1, #0x1c
+ beq _02071606
+_02071574:
+ add r2, r3, r0
+ add r2, #0x2c
+ ldrb r2, [r2, #0x0]
+ cmp r2, #0x0
+ bne _020715FC
+ add r3, #0x32
+ ldrb r0, [r3, #0x0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1c
+ cmp r0, #0x6
+ bhi _020715E0
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02071596: ; jump table (using 16-bit offset)
+ .short _020715E0 - _02071596 - 2; case 0
+ .short _020715E0 - _02071596 - 2; case 1
+ .short _020715A4 - _02071596 - 2; case 2
+ .short _020715B0 - _02071596 - 2; case 3
+ .short _020715BC - _02071596 - 2; case 4
+ .short _020715C8 - _02071596 - 2; case 5
+ .short _020715D4 - _02071596 - 2; case 6
+_020715A4:
+ add r0, r4, #0x0
+ mov r1, #0x6b
+ mov r2, #0x1
+ bl FUN_020731E8
+ b _020715EA
+_020715B0:
+ add r0, r4, #0x0
+ mov r1, #0x77
+ mov r2, #0x1
+ bl FUN_020731E8
+ b _020715EA
+_020715BC:
+ add r0, r4, #0x0
+ mov r1, #0x78
+ mov r2, #0x1
+ bl FUN_020731E8
+ b _020715EA
+_020715C8:
+ add r0, r4, #0x0
+ mov r1, #0x79
+ mov r2, #0x1
+ bl FUN_020731E8
+ b _020715EA
+_020715D4:
+ add r0, r4, #0x0
+ mov r1, #0x7a
+ mov r2, #0x1
+ bl FUN_020731E8
+ b _020715EA
+_020715E0:
+ add r0, r4, #0x0
+ mov r1, #0x1d
+ mov r2, #0x1
+ bl FUN_020731E8
+_020715EA:
+ ldr r0, _0207173C ; =0x00000B22
+ mov r1, #0x13
+ strb r1, [r4, r0]
+ ldr r0, _02071740 ; =0x000005F2
+ bl FUN_020054C8
+ add sp, #0x8
+ mov r0, #0x14
+ pop {r3-r5, pc}
+_020715FC:
+ add r0, r0, #0x1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, r1
+ blo _02071574
+_02071606:
+ ldr r0, [r3, #0x14]
+ cmp r0, #0x0
+ beq _020716CA
+ ldr r2, _02071744 ; =0x00000B34
+ ldr r1, [r3, #0x0]
+ ldr r2, [r4, r2]
+ add r3, #0x2c
+ bl FUN_0206BC60
+ cmp r0, #0x3
+ bhi _020716CA
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02071628: ; jump table (using 16-bit offset)
+ .short _020716CA - _02071628 - 2; case 0
+ .short _02071630 - _02071628 - 2; case 1
+ .short _02071692 - _02071628 - 2; case 2
+ .short _020716AE - _02071628 - 2; case 3
+_02071630:
+ ldr r0, _02071748 ; =0x0000069C
+ mov r1, #0xb8
+ ldr r0, [r4, r0]
+ bl FUN_0200A914
+ add r5, r0, #0x0
+ ldr r0, _02071738 ; =0x000005A4
+ mov r1, #0x3
+ ldr r0, [r4, r0]
+ ldr r0, [r0, #0x14]
+ bl FUN_02023B0C
+ mov r1, #0x0
+ add r2, r0, #0x0
+ str r1, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ mov r0, #0x6a
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ mov r3, #0x3
+ bl FUN_0200AD38
+ mov r1, #0x6a
+ lsl r1, r1, #0x4
+ ldr r0, [r4, r1]
+ add r1, r1, #0x4
+ ldr r1, [r4, r1]
+ add r2, r5, #0x0
+ bl FUN_0200B7B8
+ add r0, r5, #0x0
+ bl FUN_02021A20
+ mov r1, #0x0
+ add r0, r4, #0x0
+ mvn r1, r1
+ mov r2, #0x1
+ bl FUN_020731E8
+ ldr r0, _0207173C ; =0x00000B22
+ mov r1, #0x13
+ strb r1, [r4, r0]
+ ldr r0, _02071740 ; =0x000005F2
+ bl FUN_020054C8
+ add sp, #0x8
+ mov r0, #0x14
+ pop {r3-r5, pc}
+_02071692:
+ add r0, r4, #0x0
+ mov r1, #0xb6
+ mov r2, #0x1
+ bl FUN_020731E8
+ ldr r0, _0207173C ; =0x00000B22
+ mov r1, #0x13
+ strb r1, [r4, r0]
+ ldr r0, _02071740 ; =0x000005F2
+ bl FUN_020054C8
+ add sp, #0x8
+ mov r0, #0x14
+ pop {r3-r5, pc}
+_020716AE:
+ add r0, r4, #0x0
+ mov r1, #0xb7
+ mov r2, #0x1
+ bl FUN_020731E8
+ ldr r0, _0207173C ; =0x00000B22
+ mov r1, #0x13
+ strb r1, [r4, r0]
+ ldr r0, _02071740 ; =0x000005F2
+ bl FUN_020054C8
+ add sp, #0x8
+ mov r0, #0x14
+ pop {r3-r5, pc}
+_020716CA:
+ ldr r0, _02071738 ; =0x000005A4
+ ldr r0, [r4, r0]
+ add r0, #0x20
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x11
+ bne _02071722
+ add r0, r4, #0x0
+ bl FUN_0207174C
+ cmp r0, #0x0
+ beq _02071722
+ cmp r0, #0x1
+ beq _020716EA
+ cmp r0, #0x2
+ beq _02071706
+ b _02071722
+_020716EA:
+ add r0, r4, #0x0
+ mov r1, #0xb6
+ mov r2, #0x1
+ bl FUN_020731E8
+ ldr r0, _0207173C ; =0x00000B22
+ mov r1, #0x13
+ strb r1, [r4, r0]
+ ldr r0, _02071740 ; =0x000005F2
+ bl FUN_020054C8
+ add sp, #0x8
+ mov r0, #0x14
+ pop {r3-r5, pc}
+_02071706:
+ add r0, r4, #0x0
+ mov r1, #0xb7
+ mov r2, #0x1
+ bl FUN_020731E8
+ ldr r0, _0207173C ; =0x00000B22
+ mov r1, #0x13
+ strb r1, [r4, r0]
+ ldr r0, _02071740 ; =0x000005F2
+ bl FUN_020054C8
+ add sp, #0x8
+ mov r0, #0x14
+ pop {r3-r5, pc}
+_02071722:
+ ldr r0, _02071738 ; =0x000005A4
+ mov r2, #0x0
+ ldr r1, [r4, r0]
+ add r0, #0x38
+ add r1, #0x23
+ strb r2, [r1, #0x0]
+ bl FUN_020054C8
+ mov r0, #0x1b
+ add sp, #0x8
+ pop {r3-r5, pc}
+ .balign 4
+_02071738: .word 0x000005A4
+_0207173C: .word 0x00000B22
+_02071740: .word 0x000005F2
+_02071744: .word 0x00000B34
+_02071748: .word 0x0000069C
+
+ thumb_func_start FUN_0207174C
+FUN_0207174C: ; 0x0207174C
+ push {r4-r7}
+ add r5, r0, #0x0
+ mov r0, #0x0
+ mov r12, r0
+ ldr r0, _020717E0 ; =0x000005A4
+ ldr r4, [r5, r0]
+_02071758:
+ mov r0, r12
+ add r0, r4, r0
+ add r0, #0x2c
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _020717DA
+ mov r0, r12
+ add r0, r0, #0x1
+ lsl r0, r0, #0x18
+ lsr r3, r0, #0x18
+ cmp r3, #0x6
+ bhs _020717CC
+ mov r0, r12
+ add r7, r4, r0
+_02071774:
+ add r0, r4, r3
+ add r0, #0x2c
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _020717CC
+ add r0, r4, r3
+ add r0, #0x2c
+ ldrb r1, [r0, #0x0]
+ mov r0, #0x2c
+ ldr r6, _020717E4 ; =0x000006D8
+ mul r0, r1
+ add r2, r5, r0
+ add r0, r7, #0x0
+ add r0, #0x2c
+ ldrb r1, [r0, #0x0]
+ mov r0, #0x2c
+ ldrh r6, [r2, r6]
+ mul r0, r1
+ add r1, r5, r0
+ ldr r0, _020717E4 ; =0x000006D8
+ ldrh r0, [r1, r0]
+ cmp r0, r6
+ bne _020717A8
+ mov r0, #0x1
+ pop {r4-r7}
+ bx lr
+_020717A8:
+ mov r0, #0x6e
+ lsl r0, r0, #0x4
+ ldrh r0, [r1, r0]
+ cmp r0, #0x0
+ beq _020717C2
+ mov r1, #0x6e
+ lsl r1, r1, #0x4
+ ldrh r1, [r2, r1]
+ cmp r0, r1
+ bne _020717C2
+ mov r0, #0x2
+ pop {r4-r7}
+ bx lr
+_020717C2:
+ add r0, r3, #0x1
+ lsl r0, r0, #0x18
+ lsr r3, r0, #0x18
+ cmp r3, #0x6
+ blo _02071774
+_020717CC:
+ mov r0, r12
+ add r0, r0, #0x1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r12, r0
+ cmp r0, #0x5
+ blo _02071758
+_020717DA:
+ mov r0, #0x0
+ pop {r4-r7}
+ bx lr
+ .balign 4
+_020717E0: .word 0x000005A4
+_020717E4: .word 0x000006D8
+
+ thumb_func_start FUN_020717E8
+FUN_020717E8: ; 0x020717E8
+ push {r3-r7, lr}
+ ldr r0, [r0, #0x0]
+ add r5, r1, #0x0
+ add r4, r2, #0x0
+ mov r1, #0x4
+ bl FUN_0201886C
+ lsl r1, r5, #0x1
+ mov r3, #0x19
+ add r5, r4, #0x0
+ mul r5, r3
+ ldr r3, _02071844 ; =0x00001005
+ mov r2, #0x0
+ add r3, r5, r3
+ lsl r3, r3, #0x10
+ lsr r4, r3, #0x10
+ ldr r3, _02071848 ; =0x020F944C
+ ldrb r3, [r3, r1]
+ lsl r3, r3, #0x1
+ add r0, r0, r3
+ mov r12, r0
+ ldr r0, _0207184C ; =0x020F944D
+ ldrb r7, [r0, r1]
+_02071816:
+ lsl r0, r2, #0x2
+ add r5, r2, r0
+ add r0, r7, r2
+ lsl r1, r0, #0x6
+ mov r0, r12
+ mov r3, #0x0
+ add r6, r0, r1
+_02071824:
+ add r0, r3, r5
+ add r1, r4, r0
+ lsl r0, r3, #0x1
+ strh r1, [r6, r0]
+ add r0, r3, #0x1
+ lsl r0, r0, #0x18
+ lsr r3, r0, #0x18
+ cmp r3, #0x5
+ blo _02071824
+ add r0, r2, #0x1
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ cmp r2, #0x5
+ blo _02071816
+ pop {r3-r7, pc}
+ nop
+_02071844: .word 0x00001005
+_02071848: .word 0x020F944C
+_0207184C: .word 0x020F944D
+
+ thumb_func_start FUN_02071850
+FUN_02071850: ; 0x02071850
+ lsl r3, r0, #0x1
+ ldr r0, _02071868 ; =0x020F944C
+ ldrb r0, [r0, r3]
+ lsl r0, r0, #0x3
+ add r0, #0x14
+ strh r0, [r1, #0x0]
+ ldr r0, _0207186C ; =0x020F944D
+ ldrb r0, [r0, r3]
+ lsl r0, r0, #0x3
+ add r0, #0x14
+ strh r0, [r2, #0x0]
+ bx lr
+ .balign 4
+_02071868: .word 0x020F944C
+_0207186C: .word 0x020F944D
+
+ thumb_func_start FUN_02071870
+FUN_02071870: ; 0x02071870
+ push {r3-r5, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ bl FUN_0207248C
+ cmp r0, #0x0
+ bne _02071886
+ mov r0, #0x0
+ add sp, #0x8
+ mvn r0, r0
+ pop {r3-r5, pc}
+_02071886:
+ ldr r0, _020718C0 ; =0x020F94B8
+ bl FUN_02020988
+ add r4, r0, #0x0
+ mov r0, #0x0
+ mvn r0, r0
+ cmp r4, r0
+ beq _020718BA
+ ldr r1, _020718C4 ; =0x0000FFFE
+ add r0, sp, #0x4
+ strh r1, [r0, #0x0]
+ add r0, sp, #0x4
+ str r0, [sp, #0x0]
+ ldr r3, _020718C8 ; =0x021C48F8
+ ldr r0, [r5, #0x0]
+ ldrh r2, [r3, #0x1c]
+ ldrh r3, [r3, #0x1e]
+ mov r1, #0x4
+ bl FUN_0201AFBC
+ cmp r0, #0x0
+ bne _020718BA
+ mov r0, #0x0
+ add sp, #0x8
+ mvn r0, r0
+ pop {r3-r5, pc}
+_020718BA:
+ add r0, r4, #0x0
+ add sp, #0x8
+ pop {r3-r5, pc}
+ .balign 4
+_020718C0: .word 0x020F94B8
+_020718C4: .word 0x0000FFFE
+_020718C8: .word 0x021C48F8
+
+ thumb_func_start FUN_020718CC
+FUN_020718CC: ; 0x020718CC
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, _0207193C ; =0x000006FC
+ add r4, r1, #0x0
+ ldr r0, [r5, r0]
+ bl FUN_02001C78
+ add r2, r0, #0x0
+ mov r0, #0x1
+ mvn r0, r0
+ cmp r2, r0
+ beq _020718EC
+ add r0, r0, #0x1
+ cmp r2, r0
+ beq _02071938
+ b _02071932
+_020718EC:
+ mov r0, #0x85
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ mov r1, #0x1
+ bl FUN_0200D0E0
+ add r0, r5, #0x0
+ bl FUN_02073DB4
+ ldr r0, _02071940 ; =0x000005A4
+ ldr r0, [r5, r0]
+ add r0, #0x20
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x2
+ beq _0207190E
+ cmp r0, #0x11
+ bne _0207191A
+_0207190E:
+ add r0, r5, #0x0
+ mov r1, #0x22
+ mov r2, #0x1
+ bl FUN_020731C0
+ b _02071924
+_0207191A:
+ add r0, r5, #0x0
+ mov r1, #0x1d
+ mov r2, #0x1
+ bl FUN_020731C0
+_02071924:
+ ldr r0, _02071944 ; =0x000005C8
+ mov r1, #0x0
+ ldr r0, [r5, r0]
+ bl FUN_0200C664
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_02071932:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ blx r2
+_02071938:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+_0207193C: .word 0x000006FC
+_02071940: .word 0x000005A4
+_02071944: .word 0x000005C8
+
+ thumb_func_start FUN_02071948
+FUN_02071948: ; 0x02071948
+ ldr r2, _0207196C ; =0x020F9544
+ mov r3, #0x0
+_0207194C:
+ lsl r1, r3, #0x1
+ ldrh r1, [r2, r1]
+ cmp r0, r1
+ bne _0207195C
+ add r3, #0xf
+ lsl r0, r3, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+_0207195C:
+ add r1, r3, #0x1
+ lsl r1, r1, #0x18
+ lsr r3, r1, #0x18
+ cmp r3, #0xf
+ blo _0207194C
+ mov r0, #0xff
+ bx lr
+ nop
+_0207196C: .word 0x020F9544
+
+ thumb_func_start FUN_02071970
+FUN_02071970: ; 0x02071970
+ push {r4-r6, lr}
+ sub sp, #0x8
+ ldr r1, _02071C18 ; =0x00000B2A
+ add r4, r0, #0x0
+ ldrh r2, [r4, r1]
+ cmp r2, #0x4
+ bhi _02071A7A
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_0207198A: ; jump table (using 16-bit offset)
+ .short _02071994 - _0207198A - 2; case 0
+ .short _02071AD2 - _0207198A - 2; case 1
+ .short _02071B0C - _0207198A - 2; case 2
+ .short _02071B34 - _0207198A - 2; case 3
+ .short _02071BE0 - _0207198A - 2; case 4
+_02071994:
+ ldr r2, _02071C1C ; =0x021C48B8
+ ldr r3, [r2, #0x48]
+ mov r2, #0x1
+ tst r2, r3
+ beq _02071A26
+ sub r1, r1, #0x5
+ ldrb r1, [r4, r1]
+ cmp r1, #0x6
+ blo _020719B8
+ ldr r0, _02071C20 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r4, #0x0
+ bl FUN_02074538
+ add sp, #0x8
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_020719B8:
+ bl FUN_02071C48
+ cmp r0, #0x0
+ beq _020719CA
+ cmp r0, #0x1
+ beq _02071A08
+ cmp r0, #0x2
+ beq _02071A1A
+ b _02071A26
+_020719CA:
+ ldr r0, _02071C24 ; =0x000005EC
+ bl FUN_020054C8
+ ldr r0, _02071C28 ; =0x000005C8
+ mov r1, #0x1
+ ldr r0, [r4, r0]
+ bl FUN_0200C664
+ ldr r0, _02071C2C ; =0x00000B25
+ mov r1, #0x2c
+ ldrb r2, [r4, r0]
+ mul r1, r2
+ add r3, r4, r1
+ ldr r1, _02071C30 ; =0x00000708
+ ldrh r2, [r3, r1]
+ sub r1, r1, #0x2
+ ldrh r1, [r3, r1]
+ sub r2, r2, r1
+ add r1, r0, #0x3
+ ldrh r1, [r4, r1]
+ cmp r2, r1
+ bge _020719FA
+ add r0, r0, #0x3
+ strh r2, [r4, r0]
+_020719FA:
+ ldr r0, _02071C18 ; =0x00000B2A
+ mov r1, #0x2
+ strh r1, [r4, r0]
+ mov r1, #0x0
+ add r0, r0, #0x2
+ strh r1, [r4, r0]
+ b _02071A26
+_02071A08:
+ ldr r0, _02071C20 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r0, _02071C18 ; =0x00000B2A
+ mov r1, #0x1
+ strh r1, [r4, r0]
+ add sp, #0x8
+ mov r0, #0x14
+ pop {r4-r6, pc}
+_02071A1A:
+ ldr r0, _02071C34 ; =0x000005F2
+ bl FUN_020054C8
+ add sp, #0x8
+ mov r0, #0x1a
+ pop {r4-r6, pc}
+_02071A26:
+ ldr r0, _02071C1C ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x2
+ tst r0, r1
+ beq _02071A42
+ ldr r0, _02071C20 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r4, #0x0
+ bl FUN_02074538
+ add sp, #0x8
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_02071A42:
+ add r0, r4, #0x0
+ bl FUN_02070B04
+ cmp r0, #0x2
+ bne _02071A7A
+ ldr r0, _02071C2C ; =0x00000B25
+ ldrb r1, [r4, r0]
+ sub r0, r0, #0x2
+ ldrb r0, [r4, r0]
+ lsl r0, r0, #0x1a
+ lsr r0, r0, #0x1a
+ cmp r1, r0
+ bne _02071A68
+ add r0, r4, #0x0
+ bl FUN_02074538
+ add sp, #0x8
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_02071A68:
+ add r0, r4, #0x0
+ bl FUN_02071C48
+ cmp r0, #0x0
+ beq _02071A7C
+ cmp r0, #0x1
+ beq _02071ABA
+ cmp r0, #0x2
+ beq _02071AC6
+_02071A7A:
+ b _02071C12
+_02071A7C:
+ ldr r0, _02071C24 ; =0x000005EC
+ bl FUN_020054C8
+ ldr r0, _02071C28 ; =0x000005C8
+ mov r1, #0x1
+ ldr r0, [r4, r0]
+ bl FUN_0200C664
+ ldr r0, _02071C2C ; =0x00000B25
+ mov r1, #0x2c
+ ldrb r2, [r4, r0]
+ mul r1, r2
+ add r3, r4, r1
+ ldr r1, _02071C30 ; =0x00000708
+ ldrh r2, [r3, r1]
+ sub r1, r1, #0x2
+ ldrh r1, [r3, r1]
+ sub r2, r2, r1
+ add r1, r0, #0x3
+ ldrh r1, [r4, r1]
+ cmp r2, r1
+ bge _02071AAC
+ add r0, r0, #0x3
+ strh r2, [r4, r0]
+_02071AAC:
+ ldr r0, _02071C18 ; =0x00000B2A
+ mov r1, #0x2
+ strh r1, [r4, r0]
+ mov r1, #0x0
+ add r0, r0, #0x2
+ strh r1, [r4, r0]
+ b _02071C12
+_02071ABA:
+ ldr r0, _02071C18 ; =0x00000B2A
+ mov r1, #0x1
+ strh r1, [r4, r0]
+ add sp, #0x8
+ mov r0, #0x14
+ pop {r4-r6, pc}
+_02071AC6:
+ ldr r0, _02071C34 ; =0x000005F2
+ bl FUN_020054C8
+ add sp, #0x8
+ mov r0, #0x1a
+ pop {r4-r6, pc}
+_02071AD2:
+ ldr r0, _02071C1C ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x3
+ tst r0, r1
+ bne _02071ADE
+ b _02071C12
+_02071ADE:
+ ldr r0, _02071C20 ; =0x000005DC
+ bl FUN_020054C8
+ mov r0, #0x89
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ mov r1, #0x1
+ bl FUN_0200D0E0
+ ldr r0, _02071C28 ; =0x000005C8
+ mov r1, #0x0
+ ldr r0, [r4, r0]
+ bl FUN_0200C664
+ add r0, r4, #0x0
+ mov r1, #0x24
+ mov r2, #0x1
+ bl FUN_020731C0
+ ldr r0, _02071C18 ; =0x00000B2A
+ mov r1, #0x0
+ strh r1, [r4, r0]
+ b _02071C12
+_02071B0C:
+ sub r1, r1, #0x7
+ ldrb r1, [r4, r1]
+ mov r2, #0x0
+ mvn r2, r2
+ lsl r1, r1, #0x1a
+ lsr r1, r1, #0x1a
+ bl FUN_02071CB4
+ cmp r0, #0x1
+ bne _02071C12
+ ldr r0, _02071C24 ; =0x000005EC
+ bl FUN_020054C8
+ ldr r0, _02071C18 ; =0x00000B2A
+ mov r1, #0x3
+ strh r1, [r4, r0]
+ mov r1, #0x0
+ add r0, r0, #0x2
+ strh r1, [r4, r0]
+ b _02071C12
+_02071B34:
+ sub r1, r1, #0x5
+ ldrb r1, [r4, r1]
+ mov r2, #0x1
+ bl FUN_02071CB4
+ cmp r0, #0x1
+ bne _02071C12
+ ldr r0, _02071C38 ; =0x000005A4
+ ldr r1, _02071C2C ; =0x00000B25
+ ldr r0, [r4, r0]
+ ldrb r1, [r4, r1]
+ ldr r0, [r0, #0x0]
+ bl FUN_0206B9B0
+ add r6, r0, #0x0
+ ldr r0, _02071C3C ; =0x0000069C
+ mov r1, #0x40
+ ldr r0, [r4, r0]
+ bl FUN_0200A914
+ add r5, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_020690E4
+ add r2, r0, #0x0
+ mov r0, #0x6a
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ bl FUN_0200ACF8
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r1, #0x1
+ mov r0, #0x6a
+ ldr r2, _02071C40 ; =0x00000B2C
+ str r1, [sp, #0x4]
+ lsl r0, r0, #0x4
+ ldrh r2, [r4, r2]
+ ldr r0, [r4, r0]
+ mov r3, #0x3
+ bl FUN_0200AD38
+ mov r1, #0x6a
+ lsl r1, r1, #0x4
+ ldr r0, [r4, r1]
+ add r1, r1, #0x4
+ ldr r1, [r4, r1]
+ add r2, r5, #0x0
+ bl FUN_0200B7B8
+ add r0, r5, #0x0
+ bl FUN_02021A20
+ mov r1, #0x0
+ add r0, r4, #0x0
+ mvn r1, r1
+ mov r2, #0x1
+ bl FUN_020731E8
+ ldr r0, _02071C44 ; =0x00000B2E
+ mov r1, #0x0
+ ldrh r0, [r4, r0]
+ mov r2, #0xc
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0202914C
+ add r1, r0, #0x0
+ ldr r0, _02071C38 ; =0x000005A4
+ mov r2, #0x1
+ ldr r0, [r4, r0]
+ ldr r0, [r0, #0x1c]
+ add r0, #0x98
+ ldr r0, [r0, #0x0]
+ bl FUN_02028AD4
+ ldr r0, _02071C18 ; =0x00000B2A
+ mov r1, #0x4
+ strh r1, [r4, r0]
+ mov r1, #0x1a
+ sub r0, #0x8
+ strb r1, [r4, r0]
+ add sp, #0x8
+ mov r0, #0x14
+ pop {r4-r6, pc}
+_02071BE0:
+ ldr r0, _02071C1C ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x3
+ tst r0, r1
+ beq _02071C12
+ ldr r0, _02071C20 ; =0x000005DC
+ bl FUN_020054C8
+ mov r0, #0x89
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ mov r1, #0x1
+ bl FUN_0200D0E0
+ ldr r0, _02071C28 ; =0x000005C8
+ mov r1, #0x0
+ ldr r0, [r4, r0]
+ bl FUN_0200C664
+ add r0, r4, #0x0
+ bl FUN_02074538
+ add sp, #0x8
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_02071C12:
+ mov r0, #0x1a
+ add sp, #0x8
+ pop {r4-r6, pc}
+ .balign 4
+_02071C18: .word 0x00000B2A
+_02071C1C: .word 0x021C48B8
+_02071C20: .word 0x000005DC
+_02071C24: .word 0x000005EC
+_02071C28: .word 0x000005C8
+_02071C2C: .word 0x00000B25
+_02071C30: .word 0x00000708
+_02071C34: .word 0x000005F2
+_02071C38: .word 0x000005A4
+_02071C3C: .word 0x0000069C
+_02071C40: .word 0x00000B2C
+_02071C44: .word 0x00000B2E
+
+ thumb_func_start FUN_02071C48
+FUN_02071C48: ; 0x02071C48
+ push {r3-r5, lr}
+ ldr r2, _02071CA8 ; =0x00000B25
+ add r4, r0, #0x0
+ ldrb r1, [r4, r2]
+ mov r0, #0x2c
+ mov r3, #0x71
+ mul r0, r1
+ add r0, r4, r0
+ lsl r3, r3, #0x4
+ ldrb r5, [r0, r3]
+ cmp r5, #0x0
+ beq _02071C64
+ mov r0, #0x2
+ pop {r3-r5, pc}
+_02071C64:
+ sub r2, r2, #0x2
+ ldrb r2, [r4, r2]
+ lsl r2, r2, #0x1a
+ lsr r2, r2, #0x1a
+ cmp r1, r2
+ beq _02071C82
+ add r1, r3, #0x0
+ sub r1, #0xa
+ ldrh r1, [r0, r1]
+ cmp r1, #0x0
+ beq _02071C82
+ sub r3, #0x8
+ ldrh r0, [r0, r3]
+ cmp r1, r0
+ bne _02071CA4
+_02071C82:
+ ldr r0, _02071CAC ; =0x000005C8
+ mov r1, #0x1
+ ldr r0, [r4, r0]
+ bl FUN_0200C664
+ add r0, r4, #0x0
+ mov r1, #0x83
+ mov r2, #0x1
+ bl FUN_020731E8
+ ldr r1, _02071CB0 ; =0x00000B2A
+ mov r0, #0x1
+ strh r0, [r4, r1]
+ mov r2, #0x1a
+ sub r1, #0x8
+ strb r2, [r4, r1]
+ pop {r3-r5, pc}
+_02071CA4:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+_02071CA8: .word 0x00000B25
+_02071CAC: .word 0x000005C8
+_02071CB0: .word 0x00000B2A
+
+ thumb_func_start FUN_02071CB4
+FUN_02071CB4: ; 0x02071CB4
+ push {r3-r7, lr}
+ add r6, r1, #0x0
+ mov r3, #0x2c
+ add r4, r6, #0x0
+ mul r4, r3
+ ldr r3, _02071D34 ; =0x00000706
+ add r5, r0, #0x0
+ add r7, r5, r3
+ lsl r2, r2, #0x10
+ ldrh r3, [r7, r4]
+ lsr r2, r2, #0x10
+ add r2, r3, r2
+ ldr r3, _02071D38 ; =0x00000B2C
+ strh r2, [r7, r4]
+ ldrh r2, [r5, r3]
+ add r2, r2, #0x1
+ strh r2, [r5, r3]
+ bl FUN_02072BBC
+ lsl r1, r6, #0x2
+ add r1, r6, r1
+ add r1, r1, #0x3
+ add r0, r5, #0x4
+ lsl r1, r1, #0x4
+ add r0, r0, r1
+ mov r1, #0x0
+ bl FUN_02019620
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02072B7C
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02072C28
+ ldr r1, _02071D3C ; =0x00000B28
+ ldrh r0, [r5, r1]
+ add r1, r1, #0x4
+ ldrh r1, [r5, r1]
+ cmp r0, r1
+ beq _02071D14
+ ldr r1, _02071D40 ; =0x00000708
+ add r2, r5, r4
+ ldrh r0, [r7, r4]
+ ldrh r1, [r2, r1]
+ cmp r0, r1
+ bne _02071D30
+_02071D14:
+ ldr r0, _02071D44 ; =0x000005A4
+ add r1, r6, #0x0
+ ldr r0, [r5, r0]
+ ldr r0, [r0, #0x0]
+ bl FUN_0206B9B0
+ ldrh r1, [r7, r4]
+ add r2, sp, #0x0
+ str r1, [sp, #0x0]
+ mov r1, #0xa2
+ bl FUN_02067830
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02071D30:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+_02071D34: .word 0x00000706
+_02071D38: .word 0x00000B2C
+_02071D3C: .word 0x00000B28
+_02071D40: .word 0x00000708
+_02071D44: .word 0x000005A4
+
+ thumb_func_start FUN_02071D48
+FUN_02071D48: ; 0x02071D48
+ push {r4, lr}
+ ldr r1, _02071DE0 ; =0x021C48B8
+ add r4, r0, #0x0
+ ldr r2, [r1, #0x48]
+ mov r1, #0x1
+ tst r1, r2
+ beq _02071D96
+ ldr r0, _02071DE4 ; =0x00000B25
+ ldrb r1, [r4, r0]
+ cmp r1, #0x7
+ bne _02071D72
+ sub r0, r0, #0x2
+ ldrb r0, [r4, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1f
+ bne _02071D92
+ ldr r0, _02071DE8 ; =0x000005DC
+ bl FUN_020054C8
+ mov r0, #0x3
+ pop {r4, pc}
+_02071D72:
+ mov r0, #0x2c
+ mul r0, r1
+ add r1, r4, r0
+ mov r0, #0x71
+ lsl r0, r0, #0x4
+ ldrb r0, [r1, r0]
+ cmp r0, #0x0
+ bne _02071D8C
+ ldr r0, _02071DE8 ; =0x000005DC
+ bl FUN_020054C8
+ mov r0, #0x0
+ pop {r4, pc}
+_02071D8C:
+ ldr r0, _02071DEC ; =0x000005F2
+ bl FUN_020054C8
+_02071D92:
+ mov r0, #0x5
+ pop {r4, pc}
+_02071D96:
+ mov r1, #0x2
+ tst r1, r2
+ beq _02071DBA
+ ldr r0, _02071DF0 ; =0x00000B23
+ ldrb r0, [r4, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1f
+ bne _02071DB6
+ ldr r0, _02071DE8 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r0, _02071DE4 ; =0x00000B25
+ mov r1, #0x7
+ strb r1, [r4, r0]
+ mov r0, #0x3
+ pop {r4, pc}
+_02071DB6:
+ mov r0, #0x5
+ pop {r4, pc}
+_02071DBA:
+ bl FUN_02070B04
+ cmp r0, #0x2
+ bne _02071DDE
+ ldr r1, _02071DE4 ; =0x00000B25
+ ldrb r2, [r4, r1]
+ mov r1, #0x2c
+ mul r1, r2
+ add r2, r4, r1
+ mov r1, #0x71
+ lsl r1, r1, #0x4
+ ldrb r1, [r2, r1]
+ cmp r1, #0x0
+ beq _02071DDE
+ ldr r0, _02071DEC ; =0x000005F2
+ bl FUN_020054C8
+ mov r0, #0x5
+_02071DDE:
+ pop {r4, pc}
+ .balign 4
+_02071DE0: .word 0x021C48B8
+_02071DE4: .word 0x00000B25
+_02071DE8: .word 0x000005DC
+_02071DEC: .word 0x000005F2
+_02071DF0: .word 0x00000B23
+
+ thumb_func_start FUN_02071DF4
+FUN_02071DF4: ; 0x02071DF4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, _02071F1C ; =0x000005A4
+ mov r1, #0x0
+ ldr r0, [r5, r0]
+ mov r2, #0xc
+ ldrh r0, [r0, #0x24]
+ bl FUN_0206E710
+ mov r1, #0x22
+ add r4, r0, #0x0
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ bne _02071E1E
+ add r0, r4, #0x0
+ mov r1, #0x23
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _02071E30
+_02071E1E:
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_0207703C
+ mov r0, #0x6
+ pop {r3-r5, pc}
+_02071E30:
+ add r0, r4, #0x0
+ mov r1, #0x24
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _02071E5A
+ add r0, r4, #0x0
+ mov r1, #0x25
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ bne _02071E5A
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_0207703C
+ mov r0, #0x6
+ pop {r3-r5, pc}
+_02071E5A:
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ ldr r0, _02071F1C ; =0x000005A4
+ ldr r2, _02071F20 ; =0x00000B25
+ ldr r1, [r5, r0]
+ mov r0, #0xc
+ str r0, [sp, #0x0]
+ ldr r0, [r1, #0x0]
+ ldrh r1, [r1, #0x24]
+ ldrb r2, [r5, r2]
+ mov r3, #0x0
+ bl FUN_020847F8
+ cmp r0, #0x1
+ bne _02071F02
+ ldr r0, _02071F1C ; =0x000005A4
+ mov r2, #0x1
+ ldr r1, [r5, r0]
+ mov r3, #0xc
+ ldr r0, [r1, #0x4]
+ ldrh r1, [r1, #0x24]
+ bl FUN_0206EDD4
+ add r0, r4, #0x0
+ mov r1, #0x1a
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ ldr r0, _02071F1C ; =0x000005A4
+ beq _02071ECC
+ ldr r1, _02071F20 ; =0x00000B25
+ ldr r0, [r5, r0]
+ ldrb r1, [r5, r1]
+ ldr r0, [r0, #0x0]
+ bl FUN_0206B9B0
+ add r1, r0, #0x0
+ ldr r0, _02071F1C ; =0x000005A4
+ mov r2, #0x3
+ ldr r3, [r5, r0]
+ add r0, r3, #0x0
+ add r0, #0x3c
+ str r0, [sp, #0x0]
+ ldrh r3, [r3, #0x24]
+ mov r0, #0x0
+ bl FUN_02069168
+ ldr r1, _02071F1C ; =0x000005A4
+ ldr r2, [r5, r1]
+ strh r0, [r2, #0x38]
+ ldr r0, [r5, r1]
+ mov r2, #0x8
+ add r0, #0x23
+ strb r2, [r0, #0x0]
+ mov r0, #0x1b
+ pop {r3-r5, pc}
+_02071ECC:
+ ldr r0, [r5, r0]
+ ldrh r0, [r0, #0x24]
+ bl FUN_0206EB34
+ cmp r0, #0x1
+ bne _02071EFA
+ ldr r0, _02071F1C ; =0x000005A4
+ ldr r1, [r5, r0]
+ ldr r0, [r1, #0x10]
+ cmp r0, #0x0
+ beq _02071EFA
+ ldr r0, [r1, #0x0]
+ ldr r1, _02071F20 ; =0x00000B25
+ ldrb r1, [r5, r1]
+ bl FUN_0206B9B0
+ add r1, r0, #0x0
+ ldr r0, _02071F1C ; =0x000005A4
+ ldr r2, [r5, r0]
+ ldr r0, [r2, #0x10]
+ ldrh r2, [r2, #0x24]
+ bl FUN_02061618
+_02071EFA:
+ add r0, r5, #0x0
+ bl FUN_02075C54
+ b _02071F18
+_02071F02:
+ add r0, r5, #0x0
+ mov r1, #0x69
+ mov r2, #0x1
+ bl FUN_020731E8
+ ldr r0, _02071F20 ; =0x00000B25
+ mov r1, #0x7
+ strb r1, [r5, r0]
+ ldr r1, _02071F24 ; =FUN_02075CE4
+ sub r0, #0x11
+ str r1, [r5, r0]
+_02071F18:
+ mov r0, #0x5
+ pop {r3-r5, pc}
+ .balign 4
+_02071F1C: .word 0x000005A4
+_02071F20: .word 0x00000B25
+_02071F24: .word FUN_02075CE4
+
+ thumb_func_start FUN_02071F28
+FUN_02071F28: ; 0x02071F28
+ push {r3, lr}
+ ldr r1, _02071F50 ; =0x00000B25
+ ldrb r2, [r0, r1]
+ mov r1, #0x2c
+ mul r1, r2
+ add r1, r0, r1
+ ldr r0, _02071F54 ; =0x0000070C
+ ldrh r0, [r1, r0]
+ cmp r0, #0x0
+ bne _02071F40
+ mov r0, #0x0
+ pop {r3, pc}
+_02071F40:
+ bl FUN_0206EA98
+ cmp r0, #0x1
+ bne _02071F4C
+ mov r0, #0x2
+ pop {r3, pc}
+_02071F4C:
+ mov r0, #0x1
+ pop {r3, pc}
+ .balign 4
+_02071F50: .word 0x00000B25
+_02071F54: .word 0x0000070C
+
+ thumb_func_start FUN_02071F58
+FUN_02071F58: ; 0x02071F58
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldr r0, _02072074 ; =0x000005A4
+ ldr r1, _02072078 ; =0x00000B25
+ ldr r0, [r5, r0]
+ ldrb r1, [r5, r1]
+ ldr r0, [r0, #0x0]
+ bl FUN_0206B9B0
+ add r6, r0, #0x0
+ mov r7, #0x89
+ add r0, r5, #0x0
+ lsl r7, r7, #0x2
+ bl FUN_02071F28
+ cmp r0, #0x0
+ beq _02071F84
+ cmp r0, #0x1
+ beq _02071FF2
+ cmp r0, #0x2
+ beq _02072044
+ b _02072054
+_02071F84:
+ ldr r0, _02072074 ; =0x000005A4
+ ldr r0, [r5, r0]
+ ldrh r0, [r0, #0x24]
+ bl FUN_0206EA98
+ cmp r0, #0x1
+ bne _02071FA0
+ ldr r0, _02072074 ; =0x000005A4
+ mov r1, #0x6
+ ldr r0, [r5, r0]
+ add r0, #0x23
+ strb r1, [r0, #0x0]
+ mov r0, #0x1b
+ pop {r3-r7, pc}
+_02071FA0:
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02072080
+ ldr r2, _0207207C ; =0x0000069C
+ mov r1, #0x76
+ ldr r0, [r5, r2]
+ add r2, #0xc
+ ldr r2, [r5, r2]
+ bl FUN_0200A8E0
+ add r0, r6, #0x0
+ bl FUN_020690E4
+ add r2, r0, #0x0
+ mov r0, #0x6a
+ lsl r0, r0, #0x4
+ ldr r0, [r5, r0]
+ mov r1, #0x0
+ bl FUN_0200ACF8
+ mov r2, #0x6a
+ lsl r2, r2, #0x4
+ ldr r0, [r5, r2]
+ sub r2, #0xfc
+ ldr r2, [r5, r2]
+ mov r1, #0x1
+ ldrh r2, [r2, #0x24]
+ bl FUN_0200AE38
+ mov r2, #0x6a
+ lsl r2, r2, #0x4
+ add r1, r2, #0x4
+ ldr r0, [r5, r2]
+ add r2, #0x8
+ ldr r1, [r5, r1]
+ ldr r2, [r5, r2]
+ bl FUN_0200B7B8
+ mov r4, #0xb
+ b _02072054
+_02071FF2:
+ ldr r2, _0207207C ; =0x0000069C
+ mov r1, #0x4e
+ ldr r0, [r5, r2]
+ add r2, #0xc
+ ldr r2, [r5, r2]
+ bl FUN_0200A8E0
+ add r0, r6, #0x0
+ bl FUN_020690E4
+ add r2, r0, #0x0
+ mov r0, #0x6a
+ lsl r0, r0, #0x4
+ ldr r0, [r5, r0]
+ mov r1, #0x0
+ bl FUN_0200ACF8
+ ldr r2, _02072078 ; =0x00000B25
+ mov r3, #0x6a
+ ldrb r4, [r5, r2]
+ mov r2, #0x2c
+ lsl r3, r3, #0x4
+ mul r2, r4
+ ldr r0, [r5, r3]
+ add r2, r5, r2
+ add r3, #0x6c
+ ldrh r2, [r2, r3]
+ mov r1, #0x1
+ bl FUN_0200AE70
+ mov r2, #0x6a
+ lsl r2, r2, #0x4
+ add r1, r2, #0x4
+ ldr r0, [r5, r2]
+ add r2, #0x8
+ ldr r1, [r5, r1]
+ ldr r2, [r5, r2]
+ bl FUN_0200B7B8
+ mov r4, #0x9
+ b _02072054
+_02072044:
+ ldr r2, _0207207C ; =0x0000069C
+ mov r1, #0x4d
+ ldr r0, [r5, r2]
+ add r2, #0x8
+ ldr r2, [r5, r2]
+ bl FUN_0200A8E0
+ mov r4, #0xb
+_02072054:
+ add r0, r5, r7
+ mov r1, #0x1
+ mov r2, #0xa
+ mov r3, #0xf
+ bl FUN_0200D0BC
+ add r0, r5, r7
+ mov r1, #0xf
+ bl FUN_02019620
+ add r0, r5, #0x0
+ bl FUN_0207322C
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+ nop
+_02072074: .word 0x000005A4
+_02072078: .word 0x00000B25
+_0207207C: .word 0x0000069C
+
+ thumb_func_start FUN_02072080
+FUN_02072080: ; 0x02072080
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ ldr r0, _020720D4 ; =0x000005A4
+ add r5, r1, #0x0
+ ldr r1, [r4, r0]
+ mov r2, #0x1
+ ldrh r1, [r1, #0x24]
+ mov r3, #0xc
+ str r1, [sp, #0x0]
+ ldr r1, [r4, r0]
+ ldr r0, [r1, #0x4]
+ ldrh r1, [r1, #0x24]
+ bl FUN_0206EDD4
+ add r0, r5, #0x0
+ mov r1, #0x6
+ add r2, sp, #0x0
+ bl FUN_02067830
+ add r0, r5, #0x0
+ bl FUN_02069EC4
+ ldr r1, _020720D8 ; =0x00000B25
+ ldr r0, _020720D4 ; =0x000005A4
+ ldrb r3, [r4, r1]
+ ldr r0, [r4, r0]
+ mov r2, #0x2c
+ add r5, r3, #0x0
+ mul r5, r2
+ ldrh r0, [r0, #0x24]
+ ldr r3, _020720DC ; =0x0000070C
+ add r5, r4, r5
+ strh r0, [r5, r3]
+ ldrb r1, [r4, r1]
+ add r0, r4, #0x0
+ mul r2, r1
+ add r2, r4, r2
+ ldrh r2, [r2, r3]
+ bl FUN_02073A78
+ pop {r3-r5, pc}
+ nop
+_020720D4: .word 0x000005A4
+_020720D8: .word 0x00000B25
+_020720DC: .word 0x0000070C
+
+ thumb_func_start FUN_020720E0
+FUN_020720E0: ; 0x020720E0
+ push {r0-r3}
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ ldr r0, _02072134 ; =0x000005A4
+ add r5, r1, #0x0
+ ldr r0, [r4, r0]
+ lsl r1, r2, #0x10
+ ldr r0, [r0, #0x4]
+ lsr r1, r1, #0x10
+ mov r2, #0x1
+ mov r3, #0xc
+ bl FUN_0206ED38
+ add r0, r5, #0x0
+ mov r1, #0x6
+ add r2, sp, #0x1c
+ bl FUN_02067830
+ add r0, r5, #0x0
+ bl FUN_02069EC4
+ ldr r1, _02072138 ; =0x00000B25
+ mov r2, #0x2c
+ ldrb r3, [r4, r1]
+ ldr r0, [sp, #0x1c]
+ add r5, r3, #0x0
+ mul r5, r2
+ ldr r3, _0207213C ; =0x0000070C
+ add r5, r4, r5
+ strh r0, [r5, r3]
+ ldrb r1, [r4, r1]
+ add r0, r4, #0x0
+ mul r2, r1
+ add r2, r4, r2
+ ldrh r2, [r2, r3]
+ bl FUN_02073A78
+ pop {r3-r5}
+ pop {r3}
+ add sp, #0x10
+ bx r3
+ nop
+_02072134: .word 0x000005A4
+_02072138: .word 0x00000B25
+_0207213C: .word 0x0000070C
+
+ thumb_func_start FUN_02072140
+FUN_02072140: ; 0x02072140
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _02072168 ; =0x00000B24
+ ldrb r0, [r4, r0]
+ bl FUN_0201BD70
+ cmp r0, #0x0
+ bne _02072162
+ ldr r0, _0207216C ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x3
+ tst r0, r1
+ beq _02072162
+ add r0, r4, #0x0
+ bl FUN_020722B8
+ pop {r4, pc}
+_02072162:
+ mov r0, #0xb
+ pop {r4, pc}
+ nop
+_02072168: .word 0x00000B24
+_0207216C: .word 0x021C48B8
+
+ thumb_func_start FUN_02072170
+FUN_02072170: ; 0x02072170
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _02072190 ; =0x00000B24
+ ldrb r0, [r4, r0]
+ bl FUN_0201BD70
+ cmp r0, #0x0
+ bne _0207218A
+ add r0, r4, #0x0
+ bl FUN_020732CC
+ mov r0, #0xa
+ pop {r4, pc}
+_0207218A:
+ mov r0, #0x9
+ pop {r4, pc}
+ nop
+_02072190: .word 0x00000B24
+
+ thumb_func_start FUN_02072194
+FUN_02072194: ; 0x02072194
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldr r0, _020722A4 ; =0x000006FC
+ mov r1, #0xc
+ ldr r0, [r5, r0]
+ bl FUN_020021AC
+ cmp r0, #0x0
+ beq _020721B0
+ mov r1, #0x1
+ mvn r1, r1
+ cmp r0, r1
+ beq _02072298
+ b _020722A0
+_020721B0:
+ ldr r0, _020722A8 ; =0x000005A4
+ ldr r1, _020722AC ; =0x00000B25
+ ldr r0, [r5, r0]
+ ldrb r1, [r5, r1]
+ ldr r0, [r0, #0x0]
+ bl FUN_0206B9B0
+ add r7, r0, #0x0
+ ldr r0, _020722A8 ; =0x000005A4
+ ldr r0, [r5, r0]
+ ldrh r6, [r0, #0x24]
+ ldr r0, _020722AC ; =0x00000B25
+ ldrb r1, [r5, r0]
+ mov r0, #0x2c
+ mul r0, r1
+ add r1, r5, r0
+ ldr r0, _020722B0 ; =0x0000070C
+ ldrh r4, [r1, r0]
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ bl FUN_02072080
+ ldr r0, _020722A8 ; =0x000005A4
+ add r1, r4, #0x0
+ ldr r0, [r5, r0]
+ mov r2, #0x1
+ ldr r0, [r0, #0x4]
+ mov r3, #0xc
+ bl FUN_0206ED38
+ cmp r0, #0x0
+ bne _0207220C
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ add r2, r6, #0x0
+ add r3, r4, #0x0
+ bl FUN_020720E0
+ ldr r2, _020722B4 ; =0x0000069C
+ mov r1, #0x53
+ ldr r0, [r5, r2]
+ add r2, #0x8
+ ldr r2, [r5, r2]
+ bl FUN_0200A8E0
+ b _02072282
+_0207220C:
+ ldr r0, _020722A8 ; =0x000005A4
+ ldr r0, [r5, r0]
+ ldrh r0, [r0, #0x24]
+ bl FUN_0206EA98
+ cmp r0, #0x1
+ bne _02072246
+ ldr r0, _020722A8 ; =0x000005A4
+ lsl r1, r4, #0x10
+ ldr r0, [r5, r0]
+ lsr r1, r1, #0x10
+ ldr r0, [r0, #0x4]
+ mov r2, #0x1
+ mov r3, #0xc
+ bl FUN_0206EDD4
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ add r2, r6, #0x0
+ add r3, r4, #0x0
+ bl FUN_020720E0
+ ldr r0, _020722A8 ; =0x000005A4
+ mov r1, #0x6
+ ldr r0, [r5, r0]
+ add r0, #0x23
+ strb r1, [r0, #0x0]
+ mov r0, #0x1b
+ pop {r3-r7, pc}
+_02072246:
+ ldr r2, _020722B4 ; =0x0000069C
+ mov r1, #0x54
+ ldr r0, [r5, r2]
+ add r2, #0xc
+ ldr r2, [r5, r2]
+ bl FUN_0200A8E0
+ mov r0, #0x6a
+ lsl r0, r0, #0x4
+ ldr r0, [r5, r0]
+ mov r1, #0x1
+ add r2, r4, #0x0
+ bl FUN_0200AE38
+ mov r0, #0x6a
+ lsl r0, r0, #0x4
+ ldr r0, [r5, r0]
+ mov r1, #0x2
+ add r2, r6, #0x0
+ bl FUN_0200AE38
+ mov r2, #0x6a
+ lsl r2, r2, #0x4
+ add r1, r2, #0x4
+ ldr r0, [r5, r2]
+ add r2, #0x8
+ ldr r1, [r5, r1]
+ ldr r2, [r5, r2]
+ bl FUN_0200B7B8
+_02072282:
+ mov r0, #0x89
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ mov r1, #0xf
+ bl FUN_02019620
+ add r0, r5, #0x0
+ bl FUN_0207322C
+ mov r0, #0xb
+ pop {r3-r7, pc}
+_02072298:
+ add r0, r5, #0x0
+ bl FUN_020722B8
+ pop {r3-r7, pc}
+_020722A0:
+ mov r0, #0xa
+ pop {r3-r7, pc}
+ .balign 4
+_020722A4: .word 0x000006FC
+_020722A8: .word 0x000005A4
+_020722AC: .word 0x00000B25
+_020722B0: .word 0x0000070C
+_020722B4: .word 0x0000069C
+
+ thumb_func_start FUN_020722B8
+FUN_020722B8: ; 0x020722B8
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _02072304 ; =0x000005A4
+ ldr r1, [r4, r0]
+ add r0, r1, #0x0
+ add r0, #0x20
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0xa
+ bne _020722F8
+ mov r0, #0x89
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ mov r1, #0x1
+ bl FUN_0200D0E0
+ add r0, r4, #0x0
+ mov r1, #0x1d
+ mov r2, #0x1
+ bl FUN_020731C0
+ ldr r0, _02072308 ; =0x000005C8
+ mov r1, #0x0
+ ldr r0, [r4, r0]
+ bl FUN_0200C664
+ ldr r0, _02072304 ; =0x000005A4
+ mov r1, #0x0
+ ldr r0, [r4, r0]
+ add r0, #0x20
+ strb r1, [r0, #0x0]
+ mov r0, #0x1
+ pop {r4, pc}
+_020722F8:
+ mov r0, #0xa
+ add r1, #0x23
+ strb r0, [r1, #0x0]
+ mov r0, #0x1b
+ pop {r4, pc}
+ nop
+_02072304: .word 0x000005A4
+_02072308: .word 0x000005C8
+
+ thumb_func_start FUN_0207230C
+FUN_0207230C: ; 0x0207230C
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldr r0, _02072410 ; =0x000005A4
+ ldr r1, _02072414 ; =0x00000B25
+ ldr r0, [r5, r0]
+ ldrb r1, [r5, r1]
+ ldr r0, [r0, #0x0]
+ bl FUN_0206B9B0
+ add r7, r0, #0x0
+ ldr r0, _02072410 ; =0x000005A4
+ ldr r0, [r5, r0]
+ ldrh r6, [r0, #0x24]
+ ldr r0, _02072414 ; =0x00000B25
+ ldrb r1, [r5, r0]
+ mov r0, #0x2c
+ mul r0, r1
+ add r1, r5, r0
+ ldr r0, _02072418 ; =0x0000070C
+ ldrh r4, [r1, r0]
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ bl FUN_02072080
+ cmp r4, #0x0
+ bne _02072388
+ ldr r2, _0207241C ; =0x0000069C
+ mov r1, #0x76
+ ldr r0, [r5, r2]
+ add r2, #0xc
+ ldr r2, [r5, r2]
+ bl FUN_0200A8E0
+ add r0, r7, #0x0
+ bl FUN_020690E4
+ add r2, r0, #0x0
+ mov r0, #0x6a
+ lsl r0, r0, #0x4
+ ldr r0, [r5, r0]
+ mov r1, #0x0
+ bl FUN_0200ACF8
+ mov r2, #0x6a
+ lsl r2, r2, #0x4
+ ldr r0, [r5, r2]
+ sub r2, #0xfc
+ ldr r2, [r5, r2]
+ mov r1, #0x1
+ ldrh r2, [r2, #0x24]
+ bl FUN_0200AE38
+ mov r2, #0x6a
+ lsl r2, r2, #0x4
+ add r1, r2, #0x4
+ ldr r0, [r5, r2]
+ add r2, #0x8
+ ldr r1, [r5, r1]
+ ldr r2, [r5, r2]
+ bl FUN_0200B7B8
+ b _020723D6
+_02072388:
+ ldr r0, _02072410 ; =0x000005A4
+ lsl r1, r4, #0x10
+ ldr r0, [r5, r0]
+ lsr r1, r1, #0x10
+ ldr r0, [r0, #0x4]
+ mov r2, #0x1
+ mov r3, #0xc
+ bl FUN_0206ED38
+ ldr r2, _0207241C ; =0x0000069C
+ mov r1, #0x54
+ ldr r0, [r5, r2]
+ add r2, #0xc
+ ldr r2, [r5, r2]
+ bl FUN_0200A8E0
+ mov r0, #0x6a
+ lsl r0, r0, #0x4
+ ldr r0, [r5, r0]
+ mov r1, #0x1
+ add r2, r4, #0x0
+ bl FUN_0200AE38
+ mov r0, #0x6a
+ lsl r0, r0, #0x4
+ ldr r0, [r5, r0]
+ mov r1, #0x2
+ add r2, r6, #0x0
+ bl FUN_0200AE38
+ mov r2, #0x6a
+ lsl r2, r2, #0x4
+ add r1, r2, #0x4
+ ldr r0, [r5, r2]
+ add r2, #0x8
+ ldr r1, [r5, r1]
+ ldr r2, [r5, r2]
+ bl FUN_0200B7B8
+_020723D6:
+ mov r0, #0x89
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ mov r1, #0x1
+ mov r2, #0xa
+ mov r3, #0xf
+ bl FUN_0200D0BC
+ mov r0, #0x89
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ mov r1, #0xf
+ bl FUN_02019620
+ add r0, r5, #0x0
+ bl FUN_0207322C
+ ldr r0, _02072410 ; =0x000005A4
+ ldr r1, [r5, r0]
+ add r0, r1, #0x0
+ add r0, #0x20
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0xc
+ bne _0207240C
+ mov r0, #0xa
+ add r1, #0x20
+ strb r0, [r1, #0x0]
+_0207240C:
+ mov r0, #0xb
+ pop {r3-r7, pc}
+ .balign 4
+_02072410: .word 0x000005A4
+_02072414: .word 0x00000B25
+_02072418: .word 0x0000070C
+_0207241C: .word 0x0000069C
+
+ thumb_func_start FUN_02072420
+FUN_02072420: ; 0x02072420
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _02072470 ; =0x00000B25
+ ldrb r1, [r4, r0]
+ mov r0, #0x2c
+ mul r0, r1
+ add r1, r4, r0
+ ldr r0, _02072474 ; =0x00000712
+ ldrh r0, [r1, r0]
+ cmp r0, #0x0
+ bne _02072444
+ ldr r0, _02072478 ; =0x000005A4
+ mov r1, #0x0
+ ldr r0, [r4, r0]
+ add r0, #0x23
+ strb r1, [r0, #0x0]
+ mov r0, #0x1b
+ pop {r4, pc}
+_02072444:
+ ldr r0, _0207247C ; =0x000005C8
+ mov r1, #0x1
+ ldr r0, [r4, r0]
+ bl FUN_0200C664
+ add r0, r4, #0x0
+ mov r1, #0xc3
+ mov r2, #0x1
+ bl FUN_020731E8
+ ldr r0, _02072480 ; =FUN_02074428
+ ldr r1, _02072484 ; =0x00000B18
+ ldr r2, _02072488 ; =FUN_02074454
+ str r0, [r4, r1]
+ add r0, r1, #0x4
+ str r2, [r4, r0]
+ mov r0, #0x16
+ add r1, #0xa
+ strb r0, [r4, r1]
+ mov r0, #0x14
+ pop {r4, pc}
+ nop
+_02072470: .word 0x00000B25
+_02072474: .word 0x00000712
+_02072478: .word 0x000005A4
+_0207247C: .word 0x000005C8
+_02072480: .word FUN_02074428
+_02072484: .word 0x00000B18
+_02072488: .word FUN_02074454
+
+ thumb_func_start FUN_0207248C
+FUN_0207248C: ; 0x0207248C
+ ldr r1, _020724C0 ; =0x000005A4
+ ldr r0, [r0, r1]
+ add r0, #0x20
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x5
+ beq _020724B8
+ cmp r0, #0x6
+ beq _020724B8
+ cmp r0, #0x7
+ beq _020724B8
+ cmp r0, #0x8
+ beq _020724B8
+ cmp r0, #0x9
+ beq _020724B8
+ cmp r0, #0xb
+ beq _020724B8
+ cmp r0, #0xe
+ beq _020724B8
+ cmp r0, #0x10
+ beq _020724B8
+ cmp r0, #0x14
+ bne _020724BC
+_020724B8:
+ mov r0, #0x0
+ bx lr
+_020724BC:
+ mov r0, #0x1
+ bx lr
+ .balign 4
+_020724C0: .word 0x000005A4
+
+ thumb_func_start FUN_020724C4
+FUN_020724C4: ; 0x020724C4
+ mov r0, #0x14
+ bx lr
+
+ thumb_func_start FUN_020724C8
+FUN_020724C8: ; 0x020724C8
+ mov r0, #0x15
+ bx lr
+
+ thumb_func_start FUN_020724CC
+FUN_020724CC: ; 0x020724CC
+ mov r0, #0x13
+ bx lr
+
+ thumb_func_start FUN_020724D0
+FUN_020724D0: ; 0x020724D0
+ mov r0, #0x12
+ bx lr
+
+ thumb_func_start FUN_020724D4
+FUN_020724D4: ; 0x020724D4
+ push {r3-r7, lr}
+ sub sp, #0x10
+ add r4, r0, #0x0
+ add r5, r1, #0x0
+ add r6, r2, #0x0
+ mov r0, #0x14
+ mov r1, #0x16
+ add r2, r4, #0x0
+ add r7, r3, #0x0
+ bl LoadFromNarc_2
+ add r1, sp, #0xc
+ str r0, [sp, #0x8]
+ blx FUN_020B0180
+ ldr r0, [sp, #0xc]
+ mov r4, #0x0
+ str r0, [sp, #0x4]
+ add r0, #0xc
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x0]
+_020724FE:
+ ldr r1, [sp, #0x0]
+ add r0, r5, #0x0
+ mov r2, #0x20
+ blx FUN_020DF438
+ add r1, r4, #0x6
+ lsl r2, r1, #0x6
+ ldr r1, [sp, #0x4]
+ add r0, r6, #0x0
+ add r1, r1, r2
+ mov r2, #0x20
+ blx FUN_020DF438
+ add r1, r4, #0x0
+ add r1, #0xc
+ lsl r2, r1, #0x6
+ ldr r1, [sp, #0x4]
+ add r0, r7, #0x0
+ add r1, r1, r2
+ mov r2, #0x20
+ blx FUN_020DF438
+ ldr r0, [sp, #0x0]
+ add r4, r4, #0x1
+ add r0, #0x40
+ str r0, [sp, #0x0]
+ add r5, #0x20
+ add r6, #0x20
+ add r7, #0x20
+ cmp r4, #0x6
+ blo _020724FE
+ ldr r0, [sp, #0x8]
+ bl FUN_02016A18
+ add sp, #0x10
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02072548
+FUN_02072548: ; 0x02072548
+ push {r4-r6, lr}
+ add r5, r1, #0x0
+ add r4, r2, #0x0
+ add r6, r0, #0x0
+ bl FUN_02019150
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ add r0, r6, #0x0
+ add r1, #0x10
+ add r2, #0x8
+ bl FUN_02019150
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ add r0, r6, #0x0
+ add r1, #0x20
+ add r2, #0x10
+ bl FUN_02019150
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ add r0, r6, #0x0
+ add r1, #0x30
+ add r2, #0x18
+ bl FUN_02019150
+ add r5, #0x40
+ add r4, #0x20
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_02019150
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02072590
+FUN_02072590: ; 0x02072590
+ push {r3-r5, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ ldr r4, _020726C0 ; =0x020F975C
+ ldr r0, [r5, #0x0]
+ add r1, r5, #0x4
+ add r2, r4, #0x0
+ bl FUN_02072548
+ add r1, r5, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r2, _020726C4 ; =0x020F97AC
+ add r1, #0xa4
+ bl FUN_02072548
+ mov r1, #0x51
+ lsl r1, r1, #0x2
+ ldr r0, [r5, #0x0]
+ ldr r2, _020726C8 ; =0x020F97FC
+ add r1, r5, r1
+ bl FUN_02072548
+ ldr r0, _020726CC ; =0x000005A4
+ ldr r0, [r5, r0]
+ add r0, #0x21
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x2
+ ldr r0, [r5, #0x0]
+ bne _020725F8
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ add r1, #0x54
+ add r2, #0xf0
+ bl FUN_02072548
+ mov r2, #0x46
+ add r1, r5, #0x0
+ lsl r2, r2, #0x2
+ ldr r0, [r5, #0x0]
+ add r1, #0xf4
+ add r2, r4, r2
+ bl FUN_02072548
+ mov r2, #0x65
+ lsl r2, r2, #0x2
+ add r1, r5, r2
+ sub r2, #0x54
+ ldr r0, [r5, #0x0]
+ add r2, r4, r2
+ bl FUN_02072548
+ b _02072622
+_020725F8:
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ add r1, #0x54
+ add r2, #0x28
+ bl FUN_02072548
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ ldr r0, [r5, #0x0]
+ add r1, #0xf4
+ add r2, #0x78
+ bl FUN_02072548
+ mov r1, #0x65
+ lsl r1, r1, #0x2
+ add r4, #0xc8
+ ldr r0, [r5, #0x0]
+ add r1, r5, r1
+ add r2, r4, #0x0
+ bl FUN_02072548
+_02072622:
+ ldr r0, _020726CC ; =0x000005A4
+ ldr r0, [r5, r0]
+ add r0, #0x20
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x2
+ beq _02072632
+ cmp r0, #0x11
+ bne _0207265A
+_02072632:
+ ldr r1, _020726D0 ; =0x020F96EC
+ add r0, sp, #0x0
+ ldrh r3, [r1, #0x38]
+ add r2, sp, #0x0
+ strh r3, [r0, #0x0]
+ ldrh r3, [r1, #0x3a]
+ strh r3, [r0, #0x2]
+ ldrh r3, [r1, #0x3c]
+ ldrh r1, [r1, #0x3e]
+ strh r3, [r0, #0x4]
+ strh r1, [r0, #0x6]
+ mov r1, #0x16
+ strb r1, [r0, #0x2]
+ mov r1, #0x7d
+ lsl r1, r1, #0x2
+ ldr r0, [r5, #0x0]
+ add r1, r5, r1
+ bl FUN_02019150
+ b _02072668
+_0207265A:
+ mov r1, #0x7d
+ lsl r1, r1, #0x2
+ ldr r0, [r5, #0x0]
+ ldr r2, _020726D4 ; =0x020F9724
+ add r1, r5, r1
+ bl FUN_02019150
+_02072668:
+ mov r1, #0x79
+ lsl r1, r1, #0x2
+ ldr r0, [r5, #0x0]
+ ldr r2, _020726D8 ; =0x020F972C
+ add r1, r5, r1
+ bl FUN_02019150
+ mov r1, #0x81
+ lsl r1, r1, #0x2
+ ldr r0, [r5, #0x0]
+ ldr r2, _020726DC ; =0x020F9734
+ add r1, r5, r1
+ bl FUN_02019150
+ mov r1, #0x85
+ lsl r1, r1, #0x2
+ ldr r0, [r5, #0x0]
+ ldr r2, _020726E0 ; =0x020F973C
+ add r1, r5, r1
+ bl FUN_02019150
+ mov r1, #0x89
+ lsl r1, r1, #0x2
+ ldr r0, [r5, #0x0]
+ ldr r2, _020726E4 ; =0x020F9744
+ add r1, r5, r1
+ bl FUN_02019150
+ mov r1, #0x8d
+ lsl r1, r1, #0x2
+ ldr r0, [r5, #0x0]
+ ldr r2, _020726E8 ; =0x020F974C
+ add r1, r5, r1
+ bl FUN_02019150
+ mov r1, #0x91
+ lsl r1, r1, #0x2
+ ldr r0, [r5, #0x0]
+ ldr r2, _020726EC ; =0x020F9754
+ add r1, r5, r1
+ bl FUN_02019150
+ add sp, #0x8
+ pop {r3-r5, pc}
+ .balign 4
+_020726C0: .word 0x020F975C
+_020726C4: .word 0x020F97AC
+_020726C8: .word 0x020F97FC
+_020726CC: .word 0x000005A4
+_020726D0: .word 0x020F96EC
+_020726D4: .word 0x020F9724
+_020726D8: .word 0x020F972C
+_020726DC: .word 0x020F9734
+_020726E0: .word 0x020F973C
+_020726E4: .word 0x020F9744
+_020726E8: .word 0x020F974C
+_020726EC: .word 0x020F9754
+
+ thumb_func_start FUN_020726F0
+FUN_020726F0: ; 0x020726F0
+ push {r4-r6, lr}
+ add r6, r0, #0x0
+ mov r5, #0x0
+ add r4, r6, #0x4
+_020726F8:
+ lsl r0, r5, #0x4
+ add r0, r4, r0
+ bl FUN_02019178
+ add r0, r5, #0x1
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ cmp r5, #0x25
+ blo _020726F8
+ mov r4, #0x95
+ lsl r4, r4, #0x2
+ add r0, r6, r4
+ bl FUN_02019048
+ cmp r0, #0x1
+ bne _0207271E
+ add r0, r6, r4
+ bl FUN_02019178
+_0207271E:
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02072720
+FUN_02072720: ; 0x02072720
+ push {r4, lr}
+ ldr r2, _020727F8 ; =0x0000069C
+ add r4, r0, #0x0
+ ldr r0, [r4, r2]
+ add r2, #0x10
+ ldr r2, [r4, r2]
+ mov r1, #0x91
+ bl FUN_0200A8E0
+ ldr r2, _020727F8 ; =0x0000069C
+ mov r1, #0x92
+ ldr r0, [r4, r2]
+ add r2, #0x14
+ ldr r2, [r4, r2]
+ bl FUN_0200A8E0
+ ldr r2, _020727F8 ; =0x0000069C
+ mov r1, #0x93
+ ldr r0, [r4, r2]
+ add r2, #0x18
+ ldr r2, [r4, r2]
+ bl FUN_0200A8E0
+ ldr r2, _020727F8 ; =0x0000069C
+ mov r1, #0xa0
+ ldr r0, [r4, r2]
+ add r2, #0x1c
+ ldr r2, [r4, r2]
+ bl FUN_0200A8E0
+ ldr r2, _020727F8 ; =0x0000069C
+ mov r1, #0xa1
+ ldr r0, [r4, r2]
+ add r2, #0x20
+ ldr r2, [r4, r2]
+ bl FUN_0200A8E0
+ ldr r2, _020727F8 ; =0x0000069C
+ mov r1, #0x94
+ ldr r0, [r4, r2]
+ add r2, #0x24
+ ldr r2, [r4, r2]
+ bl FUN_0200A8E0
+ ldr r2, _020727F8 ; =0x0000069C
+ mov r1, #0x95
+ ldr r0, [r4, r2]
+ add r2, #0x28
+ ldr r2, [r4, r2]
+ bl FUN_0200A8E0
+ ldr r2, _020727F8 ; =0x0000069C
+ mov r1, #0x96
+ ldr r0, [r4, r2]
+ add r2, #0x2c
+ ldr r2, [r4, r2]
+ bl FUN_0200A8E0
+ ldr r2, _020727F8 ; =0x0000069C
+ mov r1, #0x97
+ ldr r0, [r4, r2]
+ add r2, #0x30
+ ldr r2, [r4, r2]
+ bl FUN_0200A8E0
+ ldr r2, _020727F8 ; =0x0000069C
+ mov r1, #0x98
+ ldr r0, [r4, r2]
+ add r2, #0x34
+ ldr r2, [r4, r2]
+ bl FUN_0200A8E0
+ ldr r2, _020727F8 ; =0x0000069C
+ mov r1, #0x99
+ ldr r0, [r4, r2]
+ add r2, #0x38
+ ldr r2, [r4, r2]
+ bl FUN_0200A8E0
+ ldr r2, _020727F8 ; =0x0000069C
+ mov r1, #0x9a
+ ldr r0, [r4, r2]
+ add r2, #0x3c
+ ldr r2, [r4, r2]
+ bl FUN_0200A8E0
+ ldr r2, _020727F8 ; =0x0000069C
+ mov r1, #0x9b
+ ldr r0, [r4, r2]
+ add r2, #0x40
+ ldr r2, [r4, r2]
+ bl FUN_0200A8E0
+ ldr r2, _020727F8 ; =0x0000069C
+ mov r1, #0x9a
+ ldr r0, [r4, r2]
+ add r2, #0x44
+ ldr r2, [r4, r2]
+ bl FUN_0200A8E0
+ ldr r2, _020727F8 ; =0x0000069C
+ mov r1, #0xa6
+ ldr r0, [r4, r2]
+ add r2, #0x48
+ ldr r2, [r4, r2]
+ bl FUN_0200A8E0
+ pop {r4, pc}
+ .balign 4
+_020727F8: .word 0x0000069C
+
+ thumb_func_start FUN_020727FC
+FUN_020727FC: ; 0x020727FC
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldr r0, _02072840 ; =0x0000069C
+ add r4, r2, #0x0
+ add r7, r1, #0x0
+ add r1, r4, #0x0
+ ldr r0, [r5, r0]
+ add r1, #0x9c
+ bl FUN_0200A914
+ add r6, r0, #0x0
+ mov r0, #0x6a
+ lsl r0, r0, #0x4
+ ldr r0, [r5, r0]
+ mov r1, #0x0
+ add r2, r7, #0x0
+ bl FUN_0200AD5C
+ mov r1, #0x6a
+ add r4, #0xf
+ lsl r1, r1, #0x4
+ lsl r2, r4, #0x2
+ ldr r0, [r5, r1]
+ add r2, r5, r2
+ add r1, #0xc
+ ldr r1, [r2, r1]
+ add r2, r6, #0x0
+ bl FUN_0200B7B8
+ add r0, r6, #0x0
+ bl FUN_02021A20
+ pop {r3-r7, pc}
+ nop
+_02072840: .word 0x0000069C
+
+ thumb_func_start FUN_02072844
+FUN_02072844: ; 0x02072844
+ push {r4-r7, lr}
+ sub sp, #0x24
+ add r5, r0, #0x0
+ add r7, r1, #0x0
+ lsl r0, r2, #0x1
+ mov r1, #0x17
+ sub r1, r1, r0
+ lsl r1, r1, #0x18
+ str r2, [sp, #0x14]
+ lsr r1, r1, #0x18
+ str r1, [sp, #0x0]
+ mov r1, #0xc
+ lsl r0, r0, #0x18
+ str r1, [sp, #0x4]
+ lsr r0, r0, #0x18
+ mov r1, #0x9
+ str r0, [sp, #0x8]
+ mov r2, #0x0
+ str r2, [sp, #0xc]
+ lsl r1, r1, #0x6
+ str r1, [sp, #0x10]
+ add r1, #0x14
+ ldr r0, [r5, #0x0]
+ add r1, r5, r1
+ mov r3, #0x13
+ bl FUN_02019064
+ ldr r0, [sp, #0x14]
+ mov r1, #0xc
+ bl FUN_02012838
+ ldr r1, _0207294C ; =0x000006F8
+ mov r6, #0x0
+ str r0, [r5, r1]
+ ldr r0, [sp, #0x14]
+ add r4, r6, #0x0
+ cmp r0, #0x0
+ ble _020728D8
+_02072890:
+ ldrb r0, [r7, r4]
+ cmp r0, #0xf
+ blo _020728B4
+ bl FUN_02073DA8
+ lsl r1, r6, #0x2
+ add r2, r0, #0x0
+ ldr r0, _0207294C ; =0x000006F8
+ add r3, r5, r1
+ ldr r1, _02072950 ; =0x000006E8
+ ldr r0, [r5, r0]
+ ldr r1, [r3, r1]
+ bl FUN_020128A0
+ add r0, r6, #0x1
+ lsl r0, r0, #0x10
+ lsr r6, r0, #0x10
+ b _020728CC
+_020728B4:
+ bl FUN_02073DA8
+ ldrb r1, [r7, r4]
+ add r2, r0, #0x0
+ ldr r0, _0207294C ; =0x000006F8
+ lsl r1, r1, #0x2
+ add r3, r5, r1
+ ldr r1, _02072954 ; =0x000006AC
+ ldr r0, [r5, r0]
+ ldr r1, [r3, r1]
+ bl FUN_020128A0
+_020728CC:
+ add r0, r4, #0x1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ ldr r0, [sp, #0x14]
+ cmp r4, r0
+ blt _02072890
+_020728D8:
+ ldr r0, _0207294C ; =0x000006F8
+ mov r1, #0x0
+ ldr r0, [r5, r0]
+ str r0, [sp, #0x18]
+ mov r0, #0x95
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ str r0, [sp, #0x1c]
+ add r0, sp, #0x18
+ strb r1, [r0, #0x8]
+ mov r1, #0x1
+ strb r1, [r0, #0x9]
+ ldr r1, [sp, #0x14]
+ strb r1, [r0, #0xa]
+ ldrb r2, [r0, #0xb]
+ mov r1, #0xf
+ bic r2, r1
+ strb r2, [r0, #0xb]
+ ldrb r2, [r0, #0xb]
+ mov r1, #0x30
+ bic r2, r1
+ strb r2, [r0, #0xb]
+ ldr r1, [sp, #0x14]
+ ldrb r2, [r0, #0xb]
+ cmp r1, #0x4
+ blo _02072918
+ mov r1, #0xc0
+ bic r2, r1
+ mov r1, #0x40
+ orr r1, r2
+ strb r1, [r0, #0xb]
+ b _0207291E
+_02072918:
+ mov r1, #0xc0
+ bic r2, r1
+ strb r2, [r0, #0xb]
+_0207291E:
+ mov r0, #0x95
+ lsl r0, r0, #0x2
+ mov r1, #0x1
+ add r0, r5, r0
+ add r2, r1, #0x0
+ mov r3, #0xe
+ bl FUN_0200CCA4
+ mov r0, #0xc
+ str r0, [sp, #0x0]
+ mov r0, #0x2
+ mov r2, #0x0
+ str r0, [sp, #0x4]
+ add r0, sp, #0x18
+ mov r1, #0x8
+ add r3, r2, #0x0
+ bl FUN_02001C14
+ ldr r1, _02072958 ; =0x000006FC
+ str r0, [r5, r1]
+ add sp, #0x24
+ pop {r4-r7, pc}
+ nop
+_0207294C: .word 0x000006F8
+_02072950: .word 0x000006E8
+_02072954: .word 0x000006AC
+_02072958: .word 0x000006FC
+
+ thumb_func_start FUN_0207295C
+FUN_0207295C: ; 0x0207295C
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, _020729C4 ; =0x000005A4
+ ldr r2, [r5, r0]
+ add r1, r2, #0x0
+ add r1, #0x20
+ ldrb r1, [r1, #0x0]
+ cmp r1, #0xf
+ bne _0207297E
+ ldr r2, _020729C8 ; =0x000006A4
+ add r0, #0xf8
+ ldr r0, [r5, r0]
+ ldr r2, [r5, r2]
+ mov r1, #0x2a
+ bl FUN_0200A8E0
+ pop {r4-r6, pc}
+_0207297E:
+ ldr r1, _020729CC ; =0x00000B25
+ ldr r0, [r2, #0x0]
+ ldrb r1, [r5, r1]
+ bl FUN_0206B9B0
+ add r6, r0, #0x0
+ ldr r0, _020729D0 ; =0x0000069C
+ mov r1, #0x25
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_020690E4
+ add r2, r0, #0x0
+ mov r0, #0x6a
+ lsl r0, r0, #0x4
+ ldr r0, [r5, r0]
+ mov r1, #0x0
+ bl FUN_0200ACF8
+ mov r1, #0x6a
+ lsl r1, r1, #0x4
+ ldr r0, [r5, r1]
+ add r1, r1, #0x4
+ ldr r1, [r5, r1]
+ add r2, r4, #0x0
+ bl FUN_0200B7B8
+ add r0, r4, #0x0
+ bl FUN_02021A20
+ pop {r4-r6, pc}
+ nop
+_020729C4: .word 0x000005A4
+_020729C8: .word 0x000006A4
+_020729CC: .word 0x00000B25
+_020729D0: .word 0x0000069C
+
+ thumb_func_start FUN_020729D4
+FUN_020729D4: ; 0x020729D4
+ push {r3-r4, lr}
+ sub sp, #0x4
+ add r2, r0, #0x0
+ mov r0, #0x2
+ str r0, [sp, #0x0]
+ ldr r0, _020729FC ; =0x00000698
+ add r4, r1, #0x0
+ ldr r0, [r2, r0]
+ add r3, r2, #0x4
+ lsl r2, r4, #0x2
+ add r2, r4, r2
+ add r2, r2, #0x2
+ lsl r2, r2, #0x4
+ add r2, r3, r2
+ mov r1, #0x0
+ mov r3, #0x1c
+ bl FUN_0200B9A8
+ add sp, #0x4
+ pop {r3-r4, pc}
+ .balign 4
+_020729FC: .word 0x00000698
+
+ thumb_func_start FUN_02072A00
+FUN_02072A00: ; 0x02072A00
+ push {r3-r7, lr}
+ add r7, r1, #0x0
+ add r4, r2, #0x0
+ add r5, r0, #0x0
+ ldr r0, _02072A4C ; =0x0000069C
+ ldr r1, _02072A50 ; =0x020F96F4
+ lsl r2, r4, #0x3
+ ldrh r1, [r1, r2]
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ add r6, r0, #0x0
+ add r0, r7, #0x0
+ bl FUN_020690E4
+ add r2, r0, #0x0
+ mov r0, #0x6a
+ lsl r0, r0, #0x4
+ ldr r0, [r5, r0]
+ mov r1, #0x0
+ bl FUN_0200ACF8
+ mov r2, #0x6a
+ mov r1, #0x2c
+ lsl r2, r2, #0x4
+ mul r1, r4
+ ldr r0, [r5, r2]
+ add r1, r5, r1
+ add r2, #0x60
+ ldr r1, [r1, r2]
+ add r2, r6, #0x0
+ bl FUN_0200B7B8
+ add r0, r6, #0x0
+ bl FUN_02021A20
+ pop {r3-r7, pc}
+ nop
+_02072A4C: .word 0x0000069C
+_02072A50: .word 0x020F96F4
+
+ thumb_func_start FUN_02072A54
+FUN_02072A54: ; 0x02072A54
+ push {r3-r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ lsl r0, r1, #0x2
+ add r0, r1, r0
+ lsl r6, r0, #0x4
+ add r7, r1, #0x0
+ mov r0, #0x2c
+ mul r7, r0
+ mov r1, #0x0
+ mov r2, #0x7
+ str r1, [sp, #0x0]
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ ldr r0, _02072B14 ; =0x000F0E00
+ add r3, r5, r7
+ str r0, [sp, #0x8]
+ add r4, r5, #0x4
+ str r1, [sp, #0xc]
+ lsl r2, r2, #0x8
+ ldr r2, [r3, r2]
+ add r0, r4, r6
+ add r3, r1, #0x0
+ bl FUN_0201BDE0
+ mov r2, #0x71
+ add r0, r5, r7
+ lsl r2, r2, #0x4
+ ldrb r0, [r0, r2]
+ cmp r0, #0x1
+ bne _02072A9C
+ add r0, r4, r6
+ bl FUN_02019220
+ add sp, #0x10
+ pop {r3-r7, pc}
+_02072A9C:
+ sub r0, r2, #0x2
+ add r0, r5, r0
+ ldrh r0, [r0, r7]
+ lsl r1, r0, #0x13
+ lsr r1, r1, #0x1f
+ bne _02072B0A
+ lsl r0, r0, #0x11
+ lsr r0, r0, #0x1e
+ bne _02072ADC
+ add r0, r2, #0x0
+ sub r0, #0x74
+ sub r2, #0x68
+ ldr r0, [r5, r0]
+ ldr r2, [r5, r2]
+ mov r1, #0x1b
+ bl FUN_0200A8E0
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ mov r0, #0xc1
+ lsl r0, r0, #0xa
+ str r0, [sp, #0x8]
+ ldr r2, _02072B18 ; =0x000006A8
+ str r1, [sp, #0xc]
+ ldr r2, [r5, r2]
+ add r0, r4, r6
+ mov r3, #0x40
+ bl FUN_0201BDE0
+ b _02072B0A
+_02072ADC:
+ cmp r0, #0x1
+ bne _02072B0A
+ add r0, r2, #0x0
+ sub r0, #0x74
+ sub r2, #0x68
+ ldr r0, [r5, r0]
+ ldr r2, [r5, r2]
+ mov r1, #0x1c
+ bl FUN_0200A8E0
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ ldr r0, _02072B1C ; =0x00050600
+ ldr r2, _02072B18 ; =0x000006A8
+ str r0, [sp, #0x8]
+ str r1, [sp, #0xc]
+ ldr r2, [r5, r2]
+ add r0, r4, r6
+ mov r3, #0x40
+ bl FUN_0201BDE0
+_02072B0A:
+ add r0, r4, r6
+ bl FUN_02019220
+ add sp, #0x10
+ pop {r3-r7, pc}
+ .balign 4
+_02072B14: .word 0x000F0E00
+_02072B18: .word 0x000006A8
+_02072B1C: .word 0x00050600
+
+ thumb_func_start FUN_02072B20
+FUN_02072B20: ; 0x02072B20
+ push {r4, lr}
+ sub sp, #0x10
+ lsl r2, r1, #0x2
+ add r2, r1, r2
+ add r2, r2, #0x1
+ add r3, r0, #0x4
+ lsl r2, r2, #0x4
+ add r4, r3, r2
+ mov r2, #0x2c
+ mul r2, r1
+ ldr r3, _02072B78 ; =0x0000070E
+ add r2, r0, r2
+ ldrh r1, [r2, r3]
+ lsl r1, r1, #0x14
+ lsr r1, r1, #0x14
+ cmp r1, #0x7
+ beq _02072B4C
+ add r0, r4, #0x0
+ bl FUN_02019220
+ add sp, #0x10
+ pop {r4, pc}
+_02072B4C:
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ str r4, [sp, #0x4]
+ mov r1, #0x5
+ str r1, [sp, #0x8]
+ mov r1, #0x2
+ str r1, [sp, #0xc]
+ add r1, r3, #0x0
+ sub r3, r3, #0x4
+ sub r1, #0x76
+ ldrh r2, [r2, r3]
+ ldr r0, [r0, r1]
+ mov r1, #0x1
+ mov r3, #0x3
+ bl FUN_0200BA78
+ add r0, r4, #0x0
+ bl FUN_02019220
+ add sp, #0x10
+ pop {r4, pc}
+ nop
+_02072B78: .word 0x0000070E
+
+ thumb_func_start FUN_02072B7C
+FUN_02072B7C: ; 0x02072B7C
+ push {r4-r5, lr}
+ sub sp, #0xc
+ add r2, r0, #0x0
+ lsl r0, r1, #0x2
+ add r0, r1, r0
+ add r0, r0, #0x2
+ add r3, r2, #0x4
+ lsl r0, r0, #0x4
+ add r4, r3, r0
+ mov r3, #0x2c
+ mul r3, r1
+ add r1, r2, r3
+ str r4, [sp, #0x0]
+ mov r0, #0x4
+ str r0, [sp, #0x4]
+ mov r0, #0x2
+ ldr r5, _02072BB8 ; =0x00000698
+ str r0, [sp, #0x8]
+ ldr r0, [r2, r5]
+ add r5, #0x6e
+ ldrh r1, [r1, r5]
+ mov r2, #0x3
+ mov r3, #0x1
+ bl FUN_0200B9EC
+ add r0, r4, #0x0
+ bl FUN_02019220
+ add sp, #0xc
+ pop {r4-r5, pc}
+ .balign 4
+_02072BB8: .word 0x00000698
+
+ thumb_func_start FUN_02072BBC
+FUN_02072BBC: ; 0x02072BBC
+ push {r3-r5, lr}
+ sub sp, #0x8
+ add r5, r0, #0x4
+ lsl r0, r1, #0x2
+ add r0, r1, r0
+ add r0, r0, #0x2
+ lsl r4, r0, #0x4
+ mov r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x10
+ mov r1, #0x0
+ str r0, [sp, #0x4]
+ add r0, r5, r4
+ mov r2, #0x4
+ add r3, r1, #0x0
+ bl FUN_020196F4
+ add r0, r5, r4
+ bl FUN_02019220
+ add sp, #0x8
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02072BE8
+FUN_02072BE8: ; 0x02072BE8
+ push {r4-r5, lr}
+ sub sp, #0xc
+ add r2, r0, #0x0
+ lsl r0, r1, #0x2
+ add r0, r1, r0
+ add r0, r0, #0x2
+ add r3, r2, #0x4
+ lsl r0, r0, #0x4
+ add r4, r3, r0
+ mov r3, #0x2c
+ mul r3, r1
+ add r1, r2, r3
+ str r4, [sp, #0x0]
+ mov r0, #0x24
+ str r0, [sp, #0x4]
+ mov r0, #0x2
+ ldr r5, _02072C24 ; =0x00000698
+ str r0, [sp, #0x8]
+ ldr r0, [r2, r5]
+ add r5, #0x70
+ ldrh r1, [r1, r5]
+ mov r2, #0x3
+ mov r3, #0x0
+ bl FUN_0200B9EC
+ add r0, r4, #0x0
+ bl FUN_02019220
+ add sp, #0xc
+ pop {r4-r5, pc}
+ .balign 4
+_02072C24: .word 0x00000698
+
+ thumb_func_start FUN_02072C28
+FUN_02072C28: ; 0x02072C28
+ push {r4-r7, lr}
+ sub sp, #0xc
+ lsl r2, r1, #0x2
+ add r2, r1, r2
+ add r5, r0, #0x0
+ add r2, r2, #0x3
+ add r0, r5, #0x4
+ lsl r2, r2, #0x4
+ add r4, r0, r2
+ mov r0, #0x2c
+ add r6, r1, #0x0
+ mul r6, r0
+ ldr r0, _02072D0C ; =0x00000708
+ mov r2, #0x30
+ add r7, r5, r0
+ sub r0, r0, #0x2
+ add r0, r5, r0
+ str r0, [sp, #0x8]
+ ldrh r0, [r0, r6]
+ ldrh r1, [r7, r6]
+ bl FUN_02079A54
+ cmp r0, #0x4
+ bhi _02072CBE
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02072C64: ; jump table (using 16-bit offset)
+ .short _02072C6E - _02072C64 - 2; case 0
+ .short _02072CA8 - _02072C64 - 2; case 1
+ .short _02072C90 - _02072C64 - 2; case 2
+ .short _02072C78 - _02072C64 - 2; case 3
+ .short _02072C78 - _02072C64 - 2; case 4
+_02072C6E:
+ add r0, r4, #0x0
+ bl FUN_02019220
+ add sp, #0xc
+ pop {r4-r7, pc}
+_02072C78:
+ ldrb r3, [r4, #0x9]
+ ldr r1, _02072D10 ; =0x000004B6
+ mov r0, #0x1
+ lsl r3, r3, #0x4
+ add r3, #0x9
+ lsl r3, r3, #0x11
+ add r1, r5, r1
+ mov r2, #0x4
+ lsr r3, r3, #0x10
+ bl FUN_02017FB4
+ b _02072CBE
+_02072C90:
+ ldrb r3, [r4, #0x9]
+ ldr r1, _02072D14 ; =0x000004D6
+ mov r0, #0x1
+ lsl r3, r3, #0x4
+ add r3, #0x9
+ lsl r3, r3, #0x11
+ add r1, r5, r1
+ mov r2, #0x4
+ lsr r3, r3, #0x10
+ bl FUN_02017FB4
+ b _02072CBE
+_02072CA8:
+ ldrb r3, [r4, #0x9]
+ ldr r1, _02072D18 ; =0x000004F6
+ mov r0, #0x1
+ lsl r3, r3, #0x4
+ add r3, #0x9
+ lsl r3, r3, #0x11
+ add r1, r5, r1
+ mov r2, #0x4
+ lsr r3, r3, #0x10
+ bl FUN_02017FB4
+_02072CBE:
+ ldr r0, [sp, #0x8]
+ ldrh r1, [r7, r6]
+ ldrh r0, [r0, r6]
+ mov r2, #0x30
+ bl FUN_02079A0C
+ add r5, r0, #0x0
+ str r5, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ add r0, r4, #0x0
+ mov r1, #0xa
+ mov r2, #0x0
+ mov r3, #0x2
+ bl FUN_020196F4
+ str r5, [sp, #0x0]
+ mov r0, #0x2
+ str r0, [sp, #0x4]
+ add r0, r4, #0x0
+ mov r1, #0x9
+ mov r2, #0x0
+ mov r3, #0x3
+ bl FUN_020196F4
+ str r5, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ add r0, r4, #0x0
+ mov r1, #0xa
+ mov r2, #0x0
+ mov r3, #0x5
+ bl FUN_020196F4
+ add r0, r4, #0x0
+ bl FUN_02019220
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+_02072D0C: .word 0x00000708
+_02072D10: .word 0x000004B6
+_02072D14: .word 0x000004D6
+_02072D18: .word 0x000004F6
+
+ thumb_func_start FUN_02072D1C
+FUN_02072D1C: ; 0x02072D1C
+ push {r3-r7, lr}
+ sub sp, #0x18
+ add r6, r1, #0x0
+ add r5, r0, #0x0
+ lsl r0, r6, #0x2
+ add r4, r6, r0
+ add r0, r5, #0x4
+ str r0, [sp, #0x0]
+ lsl r0, r4, #0x4
+ ldr r1, [sp, #0x0]
+ str r0, [sp, #0x4]
+ add r0, r1, r0
+ mov r1, #0x0
+ bl FUN_02019620
+ add r0, r4, #0x1
+ lsl r0, r0, #0x4
+ add r7, r5, #0x4
+ str r0, [sp, #0x8]
+ add r0, r7, r0
+ mov r1, #0x0
+ bl FUN_02019620
+ add r0, r7, #0x0
+ str r0, [sp, #0xc]
+ add r0, r4, #0x2
+ lsl r0, r0, #0x4
+ ldr r1, [sp, #0xc]
+ str r0, [sp, #0x10]
+ add r0, r1, r0
+ mov r1, #0x0
+ bl FUN_02019620
+ add r0, r7, #0x0
+ str r0, [sp, #0x14]
+ add r0, r4, #0x3
+ lsl r4, r0, #0x4
+ ldr r0, [sp, #0x14]
+ mov r1, #0x0
+ add r0, r0, r4
+ bl FUN_02019620
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02072A54
+ mov r0, #0x2c
+ mul r0, r6
+ add r1, r5, r0
+ mov r0, #0x71
+ lsl r0, r0, #0x4
+ ldrb r0, [r1, r0]
+ cmp r0, #0x1
+ bne _02072DB0
+ ldr r1, [sp, #0x0]
+ ldr r0, [sp, #0x4]
+ add r0, r1, r0
+ bl FUN_02019220
+ ldr r0, [sp, #0x8]
+ add r0, r7, r0
+ bl FUN_02019220
+ ldr r1, [sp, #0xc]
+ ldr r0, [sp, #0x10]
+ add r0, r1, r0
+ bl FUN_02019220
+ ldr r0, [sp, #0x14]
+ add r0, r0, r4
+ bl FUN_02019220
+ add sp, #0x18
+ pop {r3-r7, pc}
+_02072DB0:
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_020729D4
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02072B20
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02072B7C
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02072BE8
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02072C28
+ add sp, #0x18
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02072DDC
+FUN_02072DDC: ; 0x02072DDC
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ lsl r0, r1, #0x2
+ add r4, r1, r0
+ add r1, r5, #0x4
+ lsl r0, r4, #0x4
+ add r0, r1, r0
+ bl FUN_02019548
+ add r0, r4, #0x1
+ add r1, r5, #0x4
+ lsl r0, r0, #0x4
+ add r0, r1, r0
+ bl FUN_02019548
+ add r0, r4, #0x2
+ add r1, r5, #0x4
+ lsl r0, r0, #0x4
+ add r0, r1, r0
+ bl FUN_02019548
+ add r0, r4, #0x3
+ add r1, r5, #0x4
+ lsl r0, r0, #0x4
+ add r0, r1, r0
+ bl FUN_02019548
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02072E14
+FUN_02072E14: ; 0x02072E14
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ lsl r0, r1, #0x2
+ add r4, r1, r0
+ add r1, r5, #0x4
+ lsl r0, r4, #0x4
+ add r0, r1, r0
+ bl FUN_0201958C
+ add r0, r4, #0x1
+ add r1, r5, #0x4
+ lsl r0, r0, #0x4
+ add r0, r1, r0
+ bl FUN_0201958C
+ add r0, r4, #0x2
+ add r1, r5, #0x4
+ lsl r0, r0, #0x4
+ add r0, r1, r0
+ bl FUN_0201958C
+ add r0, r4, #0x3
+ add r1, r5, #0x4
+ lsl r0, r0, #0x4
+ add r0, r1, r0
+ bl FUN_0201958C
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02072E4C
+FUN_02072E4C: ; 0x02072E4C
+ push {r3-r6, lr}
+ sub sp, #0x4
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ lsl r0, r4, #0x2
+ add r6, r4, r0
+ add r1, r5, #0x4
+ lsl r0, r6, #0x4
+ add r0, r1, r0
+ mov r1, #0x0
+ bl FUN_02019620
+ add r0, r6, #0x1
+ add r1, r5, #0x4
+ lsl r0, r0, #0x4
+ add r0, r1, r0
+ mov r1, #0x0
+ bl FUN_02019620
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02072A54
+ mov r0, #0x2c
+ mul r0, r4
+ add r1, r5, r0
+ mov r0, #0x71
+ lsl r0, r0, #0x4
+ ldrb r0, [r1, r0]
+ cmp r0, #0x1
+ bne _02072E98
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r2, #0x1
+ bl FUN_020732F4
+ add sp, #0x4
+ pop {r3-r6, pc}
+_02072E98:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02072B20
+ ldr r0, _02072EE0 ; =0x000005A4
+ add r1, r4, #0x0
+ ldr r0, [r5, r0]
+ ldr r0, [r0, #0x0]
+ bl FUN_0206B9B0
+ add r1, r0, #0x0
+ mov r0, #0x0
+ ldr r3, _02072EE0 ; =0x000005A4
+ str r0, [sp, #0x0]
+ ldr r3, [r5, r3]
+ mov r2, #0x3
+ ldrh r3, [r3, #0x24]
+ bl FUN_02069168
+ cmp r0, #0x0
+ bne _02072ED0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r2, #0x1
+ bl FUN_020732F4
+ add sp, #0x4
+ pop {r3-r6, pc}
+_02072ED0:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r2, #0x0
+ bl FUN_020732F4
+ add sp, #0x4
+ pop {r3-r6, pc}
+ nop
+_02072EE0: .word 0x000005A4
+
+ thumb_func_start FUN_02072EE4
+FUN_02072EE4: ; 0x02072EE4
+ push {r4-r6, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ lsl r0, r4, #0x2
+ add r6, r4, r0
+ add r1, r5, #0x4
+ lsl r0, r6, #0x4
+ add r0, r1, r0
+ mov r1, #0x0
+ bl FUN_02019620
+ add r0, r6, #0x1
+ add r1, r5, #0x4
+ lsl r0, r0, #0x4
+ add r0, r1, r0
+ mov r1, #0x0
+ bl FUN_02019620
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02072A54
+ mov r0, #0x2c
+ mul r0, r4
+ add r1, r5, r0
+ mov r0, #0x71
+ lsl r0, r0, #0x4
+ ldrb r0, [r1, r0]
+ cmp r0, #0x1
+ bne _02072F2C
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r2, #0x1
+ bl FUN_02073364
+ pop {r4-r6, pc}
+_02072F2C:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02072B20
+ ldr r0, _02072F74 ; =0x000005A4
+ add r1, r4, #0x0
+ ldr r0, [r5, r0]
+ ldr r0, [r0, #0x0]
+ bl FUN_0206B9B0
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02076AA0
+ cmp r0, #0xff
+ bne _02072F58
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r2, #0x1
+ bl FUN_02073364
+ pop {r4-r6, pc}
+_02072F58:
+ cmp r0, #0xfd
+ bne _02072F68
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r2, #0x2
+ bl FUN_02073364
+ pop {r4-r6, pc}
+_02072F68:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r2, #0x0
+ bl FUN_02073364
+ pop {r4-r6, pc}
+ .balign 4
+_02072F74: .word 0x000005A4
+
+ thumb_func_start FUN_02072F78
+FUN_02072F78: ; 0x02072F78
+ push {r4-r6, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ lsl r0, r4, #0x2
+ add r6, r4, r0
+ add r1, r5, #0x4
+ lsl r0, r6, #0x4
+ add r0, r1, r0
+ mov r1, #0x0
+ bl FUN_02019620
+ add r0, r6, #0x1
+ add r1, r5, #0x4
+ lsl r0, r0, #0x4
+ add r0, r1, r0
+ mov r1, #0x0
+ bl FUN_02019620
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02072A54
+ mov r0, #0x2c
+ add r6, r4, #0x0
+ mul r6, r0
+ mov r0, #0x71
+ add r1, r5, r6
+ lsl r0, r0, #0x4
+ ldrb r0, [r1, r0]
+ cmp r0, #0x1
+ beq _02072FBE
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02072B20
+_02072FBE:
+ ldr r2, _02072FD8 ; =0x0000070E
+ add r3, r5, r6
+ ldrh r2, [r3, r2]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ lsl r2, r2, #0x10
+ lsr r2, r2, #0x1f
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+ bl FUN_020733E4
+ pop {r4-r6, pc}
+ nop
+_02072FD8: .word 0x0000070E
+
+ thumb_func_start FUN_02072FDC
+FUN_02072FDC: ; 0x02072FDC
+ push {r4-r6, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ lsl r0, r4, #0x2
+ add r6, r4, r0
+ add r1, r5, #0x4
+ lsl r0, r6, #0x4
+ add r0, r1, r0
+ mov r1, #0x0
+ bl FUN_02019620
+ add r0, r6, #0x1
+ add r1, r5, #0x4
+ lsl r0, r0, #0x4
+ add r0, r1, r0
+ mov r1, #0x0
+ bl FUN_02019620
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02072A54
+ mov r0, #0x2c
+ mul r0, r4
+ add r1, r5, r0
+ mov r0, #0x71
+ lsl r0, r0, #0x4
+ ldrb r0, [r1, r0]
+ cmp r0, #0x1
+ beq _02073020
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02072B20
+_02073020:
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02073024
+FUN_02073024: ; 0x02073024
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, _02073080 ; =0x000005A4
+ add r4, r1, #0x0
+ ldr r1, [r5, r0]
+ mov r2, #0x0
+ add r0, r1, #0x0
+ add r0, #0x32
+ ldrb r0, [r0, #0x0]
+ lsl r0, r0, #0x18
+ lsr r3, r0, #0x1c
+ beq _0207305C
+ add r0, r4, #0x1
+_0207303E:
+ add r6, r1, r2
+ add r6, #0x2c
+ ldrb r6, [r6, #0x0]
+ cmp r0, r6
+ bne _02073052
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02073448
+ pop {r4-r6, pc}
+_02073052:
+ add r2, r2, #0x1
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+ cmp r2, r3
+ blo _0207303E
+_0207305C:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02071340
+ cmp r0, #0x0
+ bne _02073074
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r2, #0x8
+ bl FUN_02073448
+ pop {r4-r6, pc}
+_02073074:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r2, #0x7
+ bl FUN_02073448
+ pop {r4-r6, pc}
+ .balign 4
+_02073080: .word 0x000005A4
+
+ thumb_func_start FUN_02073084
+FUN_02073084: ; 0x02073084
+ push {r4, lr}
+ add r4, r2, #0x0
+ mov r2, #0x0
+ bl FUN_02002E14
+ sub r0, r4, r0
+ lsr r0, r0, #0x1
+ pop {r4, pc}
+
+ thumb_func_start FUN_02073094
+FUN_02073094: ; 0x02073094
+ push {r3-r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ mov r0, #0x79
+ lsl r0, r0, #0x2
+ add r4, r1, #0x0
+ add r0, r5, r0
+ mov r1, #0x0
+ bl FUN_02019620
+ mov r0, #0x7d
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ mov r1, #0x0
+ bl FUN_02019620
+ mov r0, #0x1
+ tst r0, r4
+ beq _020730FE
+ ldr r2, _0207314C ; =0x0000069C
+ mov r1, #0x0
+ ldr r0, [r5, r2]
+ add r2, #0xc
+ ldr r2, [r5, r2]
+ bl FUN_0200A8E0
+ ldr r2, _02073150 ; =0x000001EB
+ ldr r1, _02073154 ; =0x000006A8
+ ldrb r2, [r5, r2]
+ ldr r1, [r5, r1]
+ mov r0, #0x0
+ lsl r2, r2, #0x3
+ bl FUN_02073084
+ mov r1, #0x0
+ add r3, r0, #0x0
+ str r1, [sp, #0x0]
+ mov r2, #0xff
+ str r2, [sp, #0x4]
+ ldr r0, _02073158 ; =0x000F0E00
+ add r2, #0xe5
+ str r0, [sp, #0x8]
+ add r0, r5, r2
+ ldr r2, _02073154 ; =0x000006A8
+ str r1, [sp, #0xc]
+ ldr r2, [r5, r2]
+ bl FUN_0201BDE0
+ mov r0, #0x79
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ bl FUN_02019220
+_020730FE:
+ mov r0, #0x2
+ tst r0, r4
+ beq _02073148
+ ldr r2, _0207314C ; =0x0000069C
+ mov r1, #0x1
+ ldr r0, [r5, r2]
+ add r2, #0xc
+ ldr r2, [r5, r2]
+ bl FUN_0200A8E0
+ ldr r2, _0207315C ; =0x000001FB
+ ldr r1, _02073154 ; =0x000006A8
+ ldrb r2, [r5, r2]
+ ldr r1, [r5, r1]
+ mov r0, #0x0
+ lsl r2, r2, #0x3
+ bl FUN_02073084
+ mov r1, #0x0
+ add r3, r0, #0x0
+ str r1, [sp, #0x0]
+ mov r2, #0xff
+ str r2, [sp, #0x4]
+ ldr r0, _02073158 ; =0x000F0E00
+ add r2, #0xf5
+ str r0, [sp, #0x8]
+ add r0, r5, r2
+ ldr r2, _02073154 ; =0x000006A8
+ str r1, [sp, #0xc]
+ ldr r2, [r5, r2]
+ bl FUN_0201BDE0
+ mov r0, #0x7d
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ bl FUN_02019220
+_02073148:
+ add sp, #0x10
+ pop {r3-r5, pc}
+ .balign 4
+_0207314C: .word 0x0000069C
+_02073150: .word 0x000001EB
+_02073154: .word 0x000006A8
+_02073158: .word 0x000F0E00
+_0207315C: .word 0x000001FB
+
+ thumb_func_start FUN_02073160
+FUN_02073160: ; 0x02073160
+ push {r3-r6, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ cmp r3, #0x1
+ bne _0207317A
+ add r0, r4, #0x0
+ mov r1, #0x1
+ mov r2, #0xa
+ mov r3, #0xf
+ bl FUN_0200D0BC
+_0207317A:
+ add r0, r4, #0x0
+ mov r1, #0xf
+ bl FUN_02019620
+ mov r0, #0x0
+ mvn r0, r0
+ cmp r6, r0
+ beq _02073198
+ ldr r2, _020731B8 ; =0x0000069C
+ add r1, r6, #0x0
+ ldr r0, [r5, r2]
+ add r2, #0x8
+ ldr r2, [r5, r2]
+ bl FUN_0200A8E0
+_02073198:
+ mov r3, #0x0
+ str r3, [sp, #0x0]
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ ldr r2, _020731BC ; =0x000006A4
+ str r3, [sp, #0x8]
+ ldr r2, [r5, r2]
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_0201BD84
+ add r0, r4, #0x0
+ bl FUN_02019220
+ add sp, #0xc
+ pop {r3-r6, pc}
+ .balign 4
+_020731B8: .word 0x0000069C
+_020731BC: .word 0x000006A4
+
+ thumb_func_start FUN_020731C0
+FUN_020731C0: ; 0x020731C0
+ push {r4, lr}
+ add r4, r1, #0x0
+ mov r1, #0x81
+ lsl r1, r1, #0x2
+ add r3, r2, #0x0
+ add r1, r0, r1
+ add r2, r4, #0x0
+ bl FUN_02073160
+ pop {r4, pc}
+
+ thumb_func_start FUN_020731D4
+FUN_020731D4: ; 0x020731D4
+ push {r4, lr}
+ add r4, r1, #0x0
+ mov r1, #0x85
+ lsl r1, r1, #0x2
+ add r3, r2, #0x0
+ add r1, r0, r1
+ add r2, r4, #0x0
+ bl FUN_02073160
+ pop {r4, pc}
+
+ thumb_func_start FUN_020731E8
+FUN_020731E8: ; 0x020731E8
+ push {r4-r6, lr}
+ mov r6, #0x89
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ lsl r6, r6, #0x2
+ cmp r2, #0x1
+ bne _02073202
+ add r0, r5, r6
+ mov r1, #0x1
+ mov r2, #0xa
+ mov r3, #0xf
+ bl FUN_0200D0BC
+_02073202:
+ add r0, r5, r6
+ mov r1, #0xf
+ bl FUN_02019620
+ mov r0, #0x0
+ mvn r0, r0
+ cmp r4, r0
+ beq _02073220
+ ldr r2, _02073228 ; =0x0000069C
+ add r1, r4, #0x0
+ ldr r0, [r5, r2]
+ add r2, #0x8
+ ldr r2, [r5, r2]
+ bl FUN_0200A8E0
+_02073220:
+ add r0, r5, #0x0
+ bl FUN_0207322C
+ pop {r4-r6, pc}
+ .balign 4
+_02073228: .word 0x0000069C
+
+ thumb_func_start FUN_0207322C
+FUN_0207322C: ; 0x0207322C
+ push {r3-r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0x0
+ mov r0, #0x1
+ bl FUN_02002B60
+ mov r0, #0x0
+ bl FUN_02002B7C
+ ldr r0, _0207326C ; =0x000005A4
+ ldr r0, [r4, r0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02024FF4
+ mov r3, #0x0
+ str r3, [sp, #0x0]
+ str r0, [sp, #0x4]
+ ldr r0, _02073270 ; =FUN_0207327C
+ ldr r2, _02073274 ; =0x000006A4
+ str r0, [sp, #0x8]
+ mov r0, #0x89
+ lsl r0, r0, #0x2
+ ldr r2, [r4, r2]
+ add r0, r4, r0
+ mov r1, #0x1
+ bl FUN_0201BD84
+ ldr r1, _02073278 ; =0x00000B24
+ strb r0, [r4, r1]
+ add sp, #0xc
+ pop {r3-r4, pc}
+ nop
+_0207326C: .word 0x000005A4
+_02073270: .word FUN_0207327C
+_02073274: .word 0x000006A4
+_02073278: .word 0x00000B24
+
+ thumb_func_start FUN_0207327C
+FUN_0207327C: ; 0x0207327C
+ push {r3, lr}
+ cmp r1, #0x5
+ bhi _020732BE
+ add r0, r1, r1
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0207328E: ; jump table (using 16-bit offset)
+ .short _020732BE - _0207328E - 2; case 0
+ .short _0207329A - _0207328E - 2; case 1
+ .short _020732A0 - _0207328E - 2; case 2
+ .short _020732A6 - _0207328E - 2; case 3
+ .short _020732AE - _0207328E - 2; case 4
+ .short _020732B6 - _0207328E - 2; case 5
+_0207329A:
+ bl FUN_02005514
+ pop {r3, pc}
+_020732A0:
+ bl FUN_02005CBC
+ pop {r3, pc}
+_020732A6:
+ ldr r0, _020732C4 ; =0x000005E6
+ bl FUN_020054C8
+ b _020732BE
+_020732AE:
+ ldr r0, _020732C8 ; =0x00000483
+ bl FUN_02005C28
+ b _020732BE
+_020732B6:
+ ldr r0, _020732C4 ; =0x000005E6
+ bl FUN_02005508
+ pop {r3, pc}
+_020732BE:
+ mov r0, #0x0
+ pop {r3, pc}
+ nop
+_020732C4: .word 0x000005E6
+_020732C8: .word 0x00000483
+
+ thumb_func_start FUN_020732CC
+FUN_020732CC: ; 0x020732CC
+ push {r3-r4, lr}
+ sub sp, #0x4
+ add r4, r0, #0x0
+ mov r0, #0xc
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x0]
+ ldr r1, _020732EC ; =0x020F96EC
+ mov r2, #0x1
+ mov r3, #0xe
+ bl FUN_02002198
+ ldr r1, _020732F0 ; =0x000006FC
+ str r0, [r4, r1]
+ add sp, #0x4
+ pop {r3-r4, pc}
+ nop
+_020732EC: .word 0x020F96EC
+_020732F0: .word 0x000006FC
+
+ thumb_func_start FUN_020732F4
+FUN_020732F4: ; 0x020732F4
+ push {r4-r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0x0
+ lsl r0, r1, #0x2
+ add r0, r1, r0
+ add r0, r0, #0x4
+ add r4, r5, #0x4
+ lsl r6, r0, #0x4
+ add r0, r4, r6
+ mov r1, #0x0
+ add r7, r2, #0x0
+ bl FUN_02019620
+ cmp r7, #0x0
+ beq _02073318
+ cmp r7, #0x1
+ beq _02073326
+ b _02073332
+_02073318:
+ ldr r0, _0207335C ; =0x0000069C
+ mov r1, #0xb2
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ str r0, [sp, #0x10]
+ b _02073332
+_02073326:
+ ldr r0, _0207335C ; =0x0000069C
+ mov r1, #0xb3
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ str r0, [sp, #0x10]
+_02073332:
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ ldr r0, _02073360 ; =0x000F0E00
+ ldr r2, [sp, #0x10]
+ str r0, [sp, #0x8]
+ add r0, r4, r6
+ add r3, r1, #0x0
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x10]
+ bl FUN_02021A20
+ add r0, r4, r6
+ bl FUN_02019220
+ add sp, #0x14
+ pop {r4-r7, pc}
+ nop
+_0207335C: .word 0x0000069C
+_02073360: .word 0x000F0E00
+
+ thumb_func_start FUN_02073364
+FUN_02073364: ; 0x02073364
+ push {r4-r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0x0
+ lsl r0, r1, #0x2
+ add r0, r1, r0
+ add r0, r0, #0x4
+ add r4, r5, #0x4
+ lsl r7, r0, #0x4
+ add r0, r4, r7
+ mov r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_02019620
+ cmp r6, #0x0
+ beq _0207338C
+ cmp r6, #0x1
+ beq _0207339A
+ cmp r6, #0x2
+ beq _020733A8
+ b _020733B4
+_0207338C:
+ ldr r0, _020733DC ; =0x0000069C
+ mov r1, #0xaf
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ str r0, [sp, #0x10]
+ b _020733B4
+_0207339A:
+ ldr r0, _020733DC ; =0x0000069C
+ mov r1, #0xb0
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ str r0, [sp, #0x10]
+ b _020733B4
+_020733A8:
+ ldr r0, _020733DC ; =0x0000069C
+ mov r1, #0xb1
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ str r0, [sp, #0x10]
+_020733B4:
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ ldr r0, _020733E0 ; =0x000F0E00
+ ldr r2, [sp, #0x10]
+ str r0, [sp, #0x8]
+ add r0, r4, r7
+ add r3, r1, #0x0
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x10]
+ bl FUN_02021A20
+ add r0, r4, r7
+ bl FUN_02019220
+ add sp, #0x14
+ pop {r4-r7, pc}
+ .balign 4
+_020733DC: .word 0x0000069C
+_020733E0: .word 0x000F0E00
+
+ thumb_func_start FUN_020733E4
+FUN_020733E4: ; 0x020733E4
+ push {r3-r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ lsl r0, r1, #0x2
+ add r0, r1, r0
+ add r0, r0, #0x4
+ add r4, r5, #0x4
+ lsl r6, r0, #0x4
+ add r0, r4, r6
+ mov r1, #0x0
+ add r7, r2, #0x0
+ bl FUN_02019620
+ cmp r7, #0x0
+ ldr r0, _02073440 ; =0x0000069C
+ bne _0207340E
+ ldr r0, [r5, r0]
+ mov r1, #0xb5
+ bl FUN_0200A914
+ b _02073416
+_0207340E:
+ ldr r0, [r5, r0]
+ mov r1, #0xb4
+ bl FUN_0200A914
+_02073416:
+ mov r1, #0x0
+ add r5, r0, #0x0
+ str r1, [sp, #0x0]
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ ldr r0, _02073444 ; =0x000F0E00
+ add r2, r5, #0x0
+ str r0, [sp, #0x8]
+ add r0, r4, r6
+ add r3, r1, #0x0
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, r5, #0x0
+ bl FUN_02021A20
+ add r0, r4, r6
+ bl FUN_02019220
+ add sp, #0x10
+ pop {r3-r7, pc}
+ .balign 4
+_02073440: .word 0x0000069C
+_02073444: .word 0x000F0E00
+
+ thumb_func_start FUN_02073448
+FUN_02073448: ; 0x02073448
+ push {r3-r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ lsl r0, r1, #0x2
+ add r0, r1, r0
+ add r0, r0, #0x4
+ add r4, r5, #0x4
+ lsl r7, r0, #0x4
+ add r0, r4, r7
+ mov r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_02019620
+ cmp r6, #0x6
+ ldr r0, _020734B8 ; =0x0000069C
+ bhs _02073476
+ add r6, #0xa9
+ ldr r0, [r5, r0]
+ add r1, r6, #0x0
+ bl FUN_0200A914
+ add r5, r0, #0x0
+ b _02073490
+_02073476:
+ cmp r6, #0x7
+ bne _02073486
+ ldr r0, [r5, r0]
+ mov r1, #0xa7
+ bl FUN_0200A914
+ add r5, r0, #0x0
+ b _02073490
+_02073486:
+ ldr r0, [r5, r0]
+ mov r1, #0xa8
+ bl FUN_0200A914
+ add r5, r0, #0x0
+_02073490:
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ ldr r0, _020734BC ; =0x000F0E00
+ add r2, r5, #0x0
+ str r0, [sp, #0x8]
+ add r0, r4, r7
+ add r3, r1, #0x0
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, r5, #0x0
+ bl FUN_02021A20
+ add r0, r4, r7
+ bl FUN_02019220
+ add sp, #0x10
+ pop {r3-r7, pc}
+ .balign 4
+_020734B8: .word 0x0000069C
+_020734BC: .word 0x000F0E00
+
+ thumb_func_start FUN_020734C0
+FUN_020734C0: ; 0x020734C0
+ push {r4-r7, lr}
+ sub sp, #0x2c
+ add r5, r0, #0x0
+ ldr r0, _02073628 ; =0x000005A4
+ ldr r1, _0207362C ; =0x00000B25
+ ldr r0, [r5, r0]
+ ldrb r1, [r5, r1]
+ ldr r0, [r0, #0x0]
+ bl FUN_0206B9B0
+ mov r1, #0xa3
+ mov r2, #0x0
+ add r4, r0, #0x0
+ bl FUN_020671BC
+ add r1, sp, #0x20
+ strh r0, [r1, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0xa4
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r1, sp, #0x20
+ strh r0, [r1, #0x2]
+ add r0, r4, #0x0
+ mov r1, #0xa5
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r1, sp, #0x20
+ strh r0, [r1, #0x4]
+ add r0, r4, #0x0
+ mov r1, #0xa7
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r1, sp, #0x20
+ strh r0, [r1, #0x6]
+ add r0, r4, #0x0
+ mov r1, #0xa8
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r1, sp, #0x20
+ strh r0, [r1, #0x8]
+ add r0, r4, #0x0
+ mov r1, #0xa6
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r1, sp, #0x20
+ strh r0, [r1, #0xa]
+ mov r3, #0x1
+ mov r1, #0x9
+ str r3, [sp, #0x0]
+ mov r0, #0xe
+ str r0, [sp, #0x4]
+ mov r0, #0xc
+ str r0, [sp, #0x8]
+ mov r2, #0x0
+ str r2, [sp, #0xc]
+ lsl r1, r1, #0x6
+ str r1, [sp, #0x10]
+ add r1, #0x14
+ ldr r0, [r5, #0x0]
+ add r1, r5, r1
+ bl FUN_02019064
+ mov r0, #0x95
+ lsl r0, r0, #0x2
+ mov r1, #0x1
+ add r0, r5, r0
+ add r2, r1, #0x0
+ mov r3, #0xe
+ bl FUN_0200CCA4
+ mov r0, #0x95
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ mov r1, #0xf
+ bl FUN_02019620
+ mov r4, #0x0
+ str r4, [sp, #0x14]
+ add r7, r5, #0x0
+ add r6, sp, #0x20
+_0207356C:
+ ldr r0, _02073630 ; =0x0000069C
+ ldr r1, [sp, #0x14]
+ ldr r0, [r5, r0]
+ add r1, #0xb9
+ bl FUN_0200A914
+ str r0, [sp, #0x18]
+ mov r1, #0x0
+ str r4, [sp, #0x0]
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ str r0, [sp, #0x8]
+ mov r0, #0x95
+ lsl r0, r0, #0x2
+ ldr r2, [sp, #0x18]
+ add r0, r5, r0
+ add r3, r1, #0x0
+ bl FUN_0201BD84
+ ldr r0, [sp, #0x18]
+ bl FUN_02021A20
+ ldr r0, _02073630 ; =0x0000069C
+ mov r1, #0xbf
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ str r0, [sp, #0x1c]
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ ldr r2, _02073634 ; =0x00000B28
+ mov r0, #0x6a
+ lsl r0, r0, #0x4
+ ldrh r3, [r6, #0x0]
+ ldrh r2, [r7, r2]
+ ldr r0, [r5, r0]
+ mov r1, #0x0
+ sub r2, r3, r2
+ mov r3, #0x2
+ bl FUN_0200AD38
+ mov r0, #0x6a
+ ldr r1, _02073638 ; =0x000006A4
+ lsl r0, r0, #0x4
+ ldr r0, [r5, r0]
+ ldr r1, [r5, r1]
+ ldr r2, [sp, #0x1c]
+ bl FUN_0200B7B8
+ ldr r0, [sp, #0x1c]
+ bl FUN_02021A20
+ ldr r1, _02073638 ; =0x000006A4
+ mov r0, #0x0
+ ldr r1, [r5, r1]
+ add r2, r0, #0x0
+ bl FUN_02002E14
+ mov r1, #0x68
+ sub r3, r1, r0
+ str r4, [sp, #0x0]
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ str r0, [sp, #0x8]
+ ldr r2, _02073638 ; =0x000006A4
+ mov r0, #0x95
+ lsl r0, r0, #0x2
+ ldr r2, [r5, r2]
+ add r0, r5, r0
+ mov r1, #0x0
+ bl FUN_0201BD84
+ ldrh r1, [r6, #0x0]
+ ldr r0, _02073634 ; =0x00000B28
+ add r4, #0x10
+ strh r1, [r7, r0]
+ ldr r0, [sp, #0x14]
+ add r7, r7, #0x2
+ add r0, r0, #0x1
+ add r6, r6, #0x2
+ str r0, [sp, #0x14]
+ cmp r0, #0x6
+ blo _0207356C
+ mov r0, #0x95
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ bl FUN_02019220
+ add sp, #0x2c
+ pop {r4-r7, pc}
+ .balign 4
+_02073628: .word 0x000005A4
+_0207362C: .word 0x00000B25
+_02073630: .word 0x0000069C
+_02073634: .word 0x00000B28
+_02073638: .word 0x000006A4
+
+ thumb_func_start FUN_0207363C
+FUN_0207363C: ; 0x0207363C
+ push {r4-r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0x0
+ mov r0, #0x20
+ str r0, [sp, #0x0]
+ mov r0, #0x70
+ str r0, [sp, #0x4]
+ mov r0, #0x95
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ mov r1, #0xf
+ mov r2, #0x50
+ mov r3, #0x0
+ bl FUN_020196F4
+ ldr r0, _020736E8 ; =0x0000069C
+ mov r1, #0xc0
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ str r0, [sp, #0xc]
+ mov r0, #0x0
+ str r0, [sp, #0x10]
+ add r6, r5, #0x0
+ add r4, r0, #0x0
+_0207366E:
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ ldr r2, _020736EC ; =0x00000B28
+ mov r0, #0x6a
+ lsl r0, r0, #0x4
+ ldrh r2, [r6, r2]
+ ldr r0, [r5, r0]
+ mov r1, #0x0
+ mov r3, #0x3
+ bl FUN_0200AD38
+ mov r0, #0x6a
+ ldr r1, _020736F0 ; =0x000006A4
+ lsl r0, r0, #0x4
+ ldr r0, [r5, r0]
+ ldr r1, [r5, r1]
+ ldr r2, [sp, #0xc]
+ bl FUN_0200B7B8
+ ldr r1, _020736F0 ; =0x000006A4
+ mov r0, #0x0
+ ldr r1, [r5, r1]
+ add r2, r0, #0x0
+ bl FUN_02002E14
+ add r7, r0, #0x0
+ mov r3, #0x68
+ str r4, [sp, #0x0]
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ str r0, [sp, #0x8]
+ ldr r2, _020736F0 ; =0x000006A4
+ mov r0, #0x95
+ lsl r0, r0, #0x2
+ ldr r2, [r5, r2]
+ add r0, r5, r0
+ mov r1, #0x0
+ sub r3, r3, r7
+ bl FUN_0201BD84
+ ldr r0, [sp, #0x10]
+ add r6, r6, #0x2
+ add r0, r0, #0x1
+ add r4, #0x10
+ str r0, [sp, #0x10]
+ cmp r0, #0x6
+ blo _0207366E
+ ldr r0, [sp, #0xc]
+ bl FUN_02021A20
+ mov r0, #0x95
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ bl FUN_02019220
+ add sp, #0x14
+ pop {r4-r7, pc}
+ nop
+_020736E8: .word 0x0000069C
+_020736EC: .word 0x00000B28
+_020736F0: .word 0x000006A4
+
+ thumb_func_start FUN_020736F4
+FUN_020736F4: ; 0x020736F4
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x95
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ mov r1, #0x0
+ bl FUN_0200CCF8
+ mov r0, #0x95
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_02019178
+ pop {r4, pc}
+
+ thumb_func_start FUN_02073710
+FUN_02073710: ; 0x02073710
+ push {r3-r7, lr}
+ sub sp, #0x50
+ add r4, r0, #0x0
+ mov r0, #0x10
+ mov r1, #0x1
+ bl FUN_0201E6E4
+ mov r0, #0x10
+ mov r1, #0x1
+ bl FUN_0201E74C
+ mov r0, #0x20
+ mov r1, #0xc
+ bl FUN_0201C24C
+ mov r0, #0xc
+ bl FUN_0200BB14
+ ldr r1, _020737BC ; =0x000005A8
+ str r0, [r4, r1]
+ ldr r0, [r4, r1]
+ bl FUN_0200BB34
+ ldr r7, _020737C0 ; =0x000005AC
+ add r2, sp, #0x30
+ ldr r3, _020737C4 ; =0x020F98F4
+ str r0, [r4, r7]
+ ldmia r3!, {r0-r1}
+ add r6, r2, #0x0
+ stmia r2!, {r0-r1}
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldmia r3!, {r0-r1}
+ ldr r5, _020737C8 ; =0x020F98C4
+ stmia r2!, {r0-r1}
+ add r3, sp, #0x1c
+ ldmia r5!, {r0-r1}
+ add r2, r3, #0x0
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldr r0, [r5, #0x0]
+ add r1, r6, #0x0
+ str r0, [r3, #0x0]
+ sub r0, r7, #0x4
+ ldr r0, [r4, r0]
+ mov r3, #0x20
+ bl FUN_0200BB6C
+ sub r1, r7, #0x4
+ ldr r0, [r4, r1]
+ add r1, r1, #0x4
+ ldr r1, [r4, r1]
+ mov r2, #0x23
+ bl FUN_0200BBF0
+ sub r0, r7, #0x4
+ ldr r0, [r4, r0]
+ bl FUN_0200BB68
+ mov r2, #0x1
+ mov r1, #0x0
+ lsl r2, r2, #0x14
+ bl FUN_02008D24
+ ldr r5, _020737CC ; =0x020F98D8
+ add r3, sp, #0x0
+ ldmia r5!, {r0-r1}
+ add r2, r3, #0x0
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldr r0, [r5, #0x0]
+ sub r1, r7, #0x4
+ str r0, [r3, #0x0]
+ ldr r0, [r4, r1]
+ add r1, r1, #0x4
+ ldr r1, [r4, r1]
+ bl FUN_0200BD20
+ add sp, #0x50
+ pop {r3-r7, pc}
+ .balign 4
+_020737BC: .word 0x000005A8
+_020737C0: .word 0x000005AC
+_020737C4: .word 0x020F98F4
+_020737C8: .word 0x020F98C4
+_020737CC: .word 0x020F98D8
+
+ thumb_func_start FUN_020737D0
+FUN_020737D0: ; 0x020737D0
+ push {r4-r7, lr}
+ sub sp, #0x3c
+ add r5, r0, #0x0
+ ldr r0, _02073878 ; =0x000005A4
+ str r3, [sp, #0x8]
+ ldr r0, [r5, r0]
+ add r4, r2, #0x0
+ ldr r0, [r0, #0x0]
+ add r7, r1, #0x0
+ bl FUN_0206B9B0
+ lsl r1, r4, #0x10
+ asr r6, r1, #0x10
+ mov r1, #0x2c
+ mul r1, r7
+ str r1, [sp, #0xc]
+ add r2, r5, r1
+ ldr r1, _0207387C ; =0x00000716
+ str r0, [sp, #0x10]
+ strh r6, [r2, r1]
+ ldr r3, [sp, #0x8]
+ add r1, r1, #0x2
+ lsl r3, r3, #0x10
+ asr r4, r3, #0x10
+ strh r4, [r2, r1]
+ add r7, r7, #0x4
+ bl FUN_0206B6C8
+ add r3, r0, #0x0
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldr r1, _02073880 ; =0x000005A8
+ str r7, [sp, #0x4]
+ ldr r0, [r5, r1]
+ add r1, r1, #0x4
+ ldr r1, [r5, r1]
+ mov r2, #0x13
+ bl FUN_0200C9D8
+ ldr r0, [sp, #0x10]
+ mov r1, #0x4c
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r2, r0, #0x0
+ str r7, [sp, #0x14]
+ add r0, sp, #0x14
+ strh r6, [r0, #0x4]
+ strh r4, [r0, #0x6]
+ mov r1, #0x0
+ strh r1, [r0, #0x8]
+ strh r1, [r0, #0xa]
+ ldr r0, [sp, #0xc]
+ str r1, [sp, #0x20]
+ ldr r1, _02073884 ; =0x00000704
+ add r3, r5, r0
+ ldrh r0, [r3, r1]
+ add r1, #0xd
+ ldrb r1, [r3, r1]
+ bl FUN_0206B7BC
+ add r0, r0, #0x3
+ str r0, [sp, #0x24]
+ mov r0, #0x1
+ str r0, [sp, #0x28]
+ mov r0, #0x0
+ ldr r1, _02073880 ; =0x000005A8
+ str r0, [sp, #0x2c]
+ str r0, [sp, #0x30]
+ str r0, [sp, #0x34]
+ str r0, [sp, #0x38]
+ ldr r0, [r5, r1]
+ add r1, r1, #0x4
+ ldr r1, [r5, r1]
+ add r2, sp, #0x14
+ bl FUN_0200BE38
+ ldr r1, [sp, #0xc]
+ add r2, r5, r1
+ ldr r1, _02073888 ; =0x00000724
+ str r0, [r2, r1]
+ add sp, #0x3c
+ pop {r4-r7, pc}
+ nop
+_02073878: .word 0x000005A4
+_0207387C: .word 0x00000716
+_02073880: .word 0x000005A8
+_02073884: .word 0x00000704
+_02073888: .word 0x00000724
+
+ thumb_func_start FUN_0207388C
+FUN_0207388C: ; 0x0207388C
+ push {r4-r7, lr}
+ sub sp, #0x14
+ ldr r1, _020739AC ; =0x000005A8
+ add r5, r0, #0x0
+ ldr r0, [r5, r1]
+ add r1, r1, #0x4
+ ldr r1, [r5, r1]
+ ldr r2, _020739B0 ; =0x020F9914
+ bl FUN_0200BE38
+ ldr r1, _020739B4 ; =0x000005C8
+ ldr r2, _020739B8 ; =0x020F993C
+ str r0, [r5, r1]
+ add r0, r1, #0x0
+ sub r0, #0x20
+ sub r1, #0x1c
+ ldr r0, [r5, r0]
+ ldr r1, [r5, r1]
+ bl FUN_0200BE38
+ ldr r1, _020739BC ; =0x000005CC
+ ldr r2, _020739C0 ; =0x020F9964
+ str r0, [r5, r1]
+ add r0, r1, #0x0
+ sub r0, #0x24
+ sub r1, #0x20
+ ldr r0, [r5, r0]
+ ldr r1, [r5, r1]
+ bl FUN_0200BE38
+ mov r1, #0x5d
+ lsl r1, r1, #0x4
+ str r0, [r5, r1]
+ add r0, r1, #0x0
+ sub r0, #0x28
+ sub r1, #0x24
+ ldr r0, [r5, r0]
+ ldr r1, [r5, r1]
+ ldr r2, _020739C4 ; =0x020F998C
+ bl FUN_0200BE38
+ ldr r1, _020739C8 ; =0x000005D4
+ ldr r2, _020739CC ; =0x020F9C84
+ str r0, [r5, r1]
+ add r0, r1, #0x0
+ sub r0, #0x2c
+ sub r1, #0x28
+ ldr r0, [r5, r0]
+ ldr r1, [r5, r1]
+ bl FUN_0200BE38
+ mov r1, #0x62
+ lsl r1, r1, #0x4
+ str r0, [r5, r1]
+ ldr r0, _020739B0 ; =0x020F9914
+ mov r4, #0x0
+ str r4, [sp, #0x4]
+ add r6, r5, #0x0
+ str r0, [sp, #0x0]
+ add r7, r5, #0x0
+ str r0, [sp, #0x8]
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+_0207390A:
+ ldr r0, _020739AC ; =0x000005A8
+ ldr r1, _020739D0 ; =0x000005AC
+ add r3, r4, #0x0
+ ldr r2, [sp, #0x8]
+ add r3, #0xa0
+ ldr r0, [r5, r0]
+ ldr r1, [r5, r1]
+ add r2, r2, r3
+ bl FUN_0200BE38
+ ldr r1, _020739D4 ; =0x000005D8
+ str r0, [r6, r1]
+ ldr r1, [sp, #0x0]
+ mov r0, #0xa4
+ ldrsh r1, [r1, r0]
+ ldr r0, _020739D8 ; =0x0000071A
+ strh r1, [r7, r0]
+ ldr r1, [sp, #0x0]
+ mov r0, #0xa6
+ ldrsh r1, [r1, r0]
+ ldr r0, _020739DC ; =0x0000071C
+ strh r1, [r7, r0]
+ ldr r0, _020739D4 ; =0x000005D8
+ mov r1, #0x0
+ ldr r0, [r6, r0]
+ bl FUN_020200A0
+ mov r2, #0x19
+ ldr r0, _020739AC ; =0x000005A8
+ ldr r1, _020739D0 ; =0x000005AC
+ lsl r2, r2, #0x4
+ add r3, r4, r2
+ ldr r2, [sp, #0xc]
+ ldr r0, [r5, r0]
+ ldr r1, [r5, r1]
+ add r2, r2, r3
+ bl FUN_0200BE38
+ mov r1, #0x5f
+ lsl r1, r1, #0x4
+ mov r2, #0xa
+ str r0, [r6, r1]
+ add r0, r1, #0x0
+ lsl r2, r2, #0x6
+ sub r0, #0x48
+ sub r1, #0x44
+ add r3, r4, r2
+ ldr r2, [sp, #0x10]
+ ldr r0, [r5, r0]
+ ldr r1, [r5, r1]
+ add r2, r2, r3
+ bl FUN_0200BE38
+ ldr r1, _020739E0 ; =0x00000608
+ add r4, #0x28
+ str r0, [r6, r1]
+ ldr r0, [sp, #0x0]
+ add r6, r6, #0x4
+ add r0, #0x28
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x4]
+ add r7, #0x2c
+ add r0, r0, #0x1
+ str r0, [sp, #0x4]
+ cmp r0, #0x6
+ blo _0207390A
+ add r0, r1, #0x0
+ sub r0, #0x3c
+ ldr r0, [r5, r0]
+ mov r1, #0x0
+ bl FUN_020200A0
+ mov r0, #0x62
+ lsl r0, r0, #0x4
+ ldr r0, [r5, r0]
+ mov r1, #0x0
+ bl FUN_020200A0
+ add sp, #0x14
+ pop {r4-r7, pc}
+ nop
+_020739AC: .word 0x000005A8
+_020739B0: .word 0x020F9914
+_020739B4: .word 0x000005C8
+_020739B8: .word 0x020F993C
+_020739BC: .word 0x000005CC
+_020739C0: .word 0x020F9964
+_020739C4: .word 0x020F998C
+_020739C8: .word 0x000005D4
+_020739CC: .word 0x020F9C84
+_020739D0: .word 0x000005AC
+_020739D4: .word 0x000005D8
+_020739D8: .word 0x0000071A
+_020739DC: .word 0x0000071C
+_020739E0: .word 0x00000608
+
+ thumb_func_start FUN_020739E4
+FUN_020739E4: ; 0x020739E4
+ push {r3-r5, lr}
+ sub sp, #0x28
+ add r4, r1, #0x0
+ mov r1, #0x0
+ add r5, r0, #0x0
+ str r1, [sp, #0x0]
+ add r0, sp, #0x0
+ strh r2, [r0, #0x4]
+ strh r3, [r0, #0x6]
+ strh r1, [r0, #0x8]
+ strh r1, [r0, #0xa]
+ mov r0, #0x1
+ str r1, [sp, #0x10]
+ str r1, [sp, #0x18]
+ str r1, [sp, #0x1c]
+ str r1, [sp, #0x20]
+ str r1, [sp, #0x24]
+ ldr r1, _02073A28 ; =0x000005A8
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x14]
+ ldr r0, [r5, r1]
+ add r1, r1, #0x4
+ ldr r1, [r5, r1]
+ add r2, sp, #0x0
+ bl FUN_0200BE38
+ lsl r1, r4, #0x2
+ add r2, r5, r1
+ mov r1, #0x5b
+ lsl r1, r1, #0x4
+ str r0, [r2, r1]
+ add sp, #0x28
+ pop {r3-r5, pc}
+ nop
+_02073A28: .word 0x000005A8
+
+ thumb_func_start FUN_02073A2C
+FUN_02073A2C: ; 0x02073A2C
+ push {r4, lr}
+ ldr r1, _02073A48 ; =0x000005A8
+ add r4, r0, #0x0
+ ldr r0, [r4, r1]
+ add r1, r1, #0x4
+ ldr r1, [r4, r1]
+ bl FUN_0200BCE0
+ ldr r0, _02073A48 ; =0x000005A8
+ ldr r0, [r4, r0]
+ bl FUN_0200BD04
+ pop {r4, pc}
+ nop
+_02073A48: .word 0x000005A8
+
+ thumb_func_start FUN_02073A4C
+FUN_02073A4C: ; 0x02073A4C
+ push {r3-r5, lr}
+ mov r3, #0x5b
+ lsl r3, r3, #0x4
+ add r1, #0xa
+ add r5, r0, r3
+ lsl r4, r1, #0x2
+ cmp r2, #0x7
+ ldr r0, [r5, r4]
+ bne _02073A66
+ mov r1, #0x0
+ bl FUN_020200A0
+ pop {r3-r5, pc}
+_02073A66:
+ add r1, r2, #0x0
+ bl FUN_02020130
+ ldr r0, [r5, r4]
+ mov r1, #0x1
+ bl FUN_020200A0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02073A78
+FUN_02073A78: ; 0x02073A78
+ push {r3-r5, lr}
+ mov r3, #0x5b
+ lsl r3, r3, #0x4
+ add r1, #0x10
+ add r5, r0, r3
+ lsl r4, r1, #0x2
+ cmp r2, #0x0
+ bne _02073A92
+ ldr r0, [r5, r4]
+ mov r1, #0x0
+ bl FUN_020200A0
+ pop {r3-r5, pc}
+_02073A92:
+ add r0, r2, #0x0
+ bl FUN_0206EA98
+ cmp r0, #0x1
+ ldr r0, [r5, r4]
+ bne _02073AA6
+ mov r1, #0x1
+ bl FUN_02020130
+ b _02073AAC
+_02073AA6:
+ mov r1, #0x0
+ bl FUN_02020130
+_02073AAC:
+ ldr r0, [r5, r4]
+ mov r1, #0x1
+ bl FUN_020200A0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02073AB8
+FUN_02073AB8: ; 0x02073AB8
+ push {r3-r5, lr}
+ mov r2, #0x5b
+ lsl r2, r2, #0x4
+ add r1, #0x10
+ lsl r4, r1, #0x2
+ add r5, r0, r2
+ ldr r0, [r5, r4]
+ mov r1, #0x1
+ bl FUN_02020130
+ ldr r0, [r5, r4]
+ mov r1, #0x1
+ bl FUN_020200A0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02073AD8
+FUN_02073AD8: ; 0x02073AD8
+ push {r4-r6, lr}
+ ldr r6, _02073B08 ; =0x0000071E
+ add r5, r1, #0x0
+ mov r4, #0x2c
+ mul r5, r4
+ add r1, #0x10
+ lsl r1, r1, #0x2
+ add r4, r0, r6
+ add r2, #0x8
+ strh r2, [r4, r5]
+ add r2, r6, #0x2
+ add r2, r0, r2
+ add r3, #0x8
+ add r1, r0, r1
+ mov r0, #0x5b
+ strh r3, [r2, r5]
+ lsl r0, r0, #0x4
+ ldr r0, [r1, r0]
+ ldrsh r1, [r4, r5]
+ ldrsh r2, [r2, r5]
+ bl FUN_0200C6E4
+ pop {r4-r6, pc}
+ nop
+_02073B08: .word 0x0000071E
+
+ thumb_func_start FUN_02073B0C
+FUN_02073B0C: ; 0x02073B0C
+ add r2, r0, #0x0
+ add r3, r1, #0x0
+ mov r0, #0x2c
+ mul r3, r0
+ add r1, #0x16
+ lsl r0, r1, #0x2
+ add r1, r2, r0
+ mov r0, #0x5b
+ add r3, r2, r3
+ lsl r0, r0, #0x4
+ ldr r2, _02073B34 ; =0x0000071E
+ ldr r0, [r1, r0]
+ ldrsh r1, [r3, r2]
+ add r2, r2, #0x2
+ ldrsh r2, [r3, r2]
+ add r1, #0x8
+ lsl r1, r1, #0x10
+ ldr r3, _02073B38 ; =FUN_0200C6E4
+ asr r1, r1, #0x10
+ bx r3
+ .balign 4
+_02073B34: .word 0x0000071E
+_02073B38: .word FUN_0200C6E4
+
+ thumb_func_start FUN_02073B3C
+FUN_02073B3C: ; 0x02073B3C
+ push {r4, lr}
+ mov r2, #0x5b
+ mov r4, #0x2c
+ lsl r2, r2, #0x4
+ add r3, r0, r2
+ add r2, r1, #0x0
+ mul r4, r1
+ add r1, r0, r4
+ ldr r0, _02073B6C ; =0x00000712
+ add r2, #0x16
+ ldrh r0, [r1, r0]
+ lsl r2, r2, #0x2
+ cmp r0, #0x0
+ ldr r0, [r3, r2]
+ bne _02073B62
+ mov r1, #0x0
+ bl FUN_020200A0
+ pop {r4, pc}
+_02073B62:
+ mov r1, #0x1
+ bl FUN_020200A0
+ pop {r4, pc}
+ nop
+_02073B6C: .word 0x00000712
+
+ thumb_func_start FUN_02073B70
+FUN_02073B70: ; 0x02073B70
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_020201DC
+ cmp r4, r0
+ beq _02073B8E
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_02020208
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02020130
+_02073B8E:
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02073B90
+FUN_02073B90: ; 0x02073B90
+ push {r3, lr}
+ add r2, r0, #0x0
+ ldrh r0, [r2, #0x6]
+ cmp r0, #0x0
+ bne _02073B9E
+ mov r0, #0x0
+ pop {r3, pc}
+_02073B9E:
+ ldrh r1, [r2, #0xe]
+ lsl r1, r1, #0x14
+ lsr r1, r1, #0x14
+ cmp r1, #0x7
+ beq _02073BB4
+ cmp r1, #0x0
+ beq _02073BB4
+ cmp r1, #0x6
+ beq _02073BB4
+ mov r0, #0x5
+ pop {r3, pc}
+_02073BB4:
+ ldrh r1, [r2, #0x8]
+ mov r2, #0x30
+ bl FUN_02079A54
+ cmp r0, #0x4
+ bhi _02073BE6
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02073BCC: ; jump table (using 16-bit offset)
+ .short _02073BE6 - _02073BCC - 2; case 0
+ .short _02073BE2 - _02073BCC - 2; case 1
+ .short _02073BDE - _02073BCC - 2; case 2
+ .short _02073BDA - _02073BCC - 2; case 3
+ .short _02073BD6 - _02073BCC - 2; case 4
+_02073BD6:
+ mov r0, #0x1
+ pop {r3, pc}
+_02073BDA:
+ mov r0, #0x2
+ pop {r3, pc}
+_02073BDE:
+ mov r0, #0x3
+ pop {r3, pc}
+_02073BE2:
+ mov r0, #0x4
+ pop {r3, pc}
+_02073BE6:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02073BEC
+FUN_02073BEC: ; 0x02073BEC
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ mov r0, #0x7
+ lsl r0, r0, #0x8
+ add r0, r6, r0
+ mov r5, #0x0
+ str r0, [sp, #0x0]
+_02073BFA:
+ mov r0, #0x2c
+ add r1, r5, #0x0
+ mul r1, r0
+ ldr r0, [sp, #0x0]
+ add r4, r0, r1
+ add r0, r4, #0x0
+ add r0, #0x29
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _02073C9A
+ mov r0, #0xb1
+ lsl r0, r0, #0x4
+ ldrb r0, [r6, r0]
+ cmp r0, #0x1
+ bne _02073C2C
+ ldr r0, _02073CA8 ; =0x00000B0C
+ ldrb r0, [r6, r0]
+ cmp r0, r5
+ beq _02073C28
+ ldr r0, _02073CAC ; =0x00000B0D
+ ldrb r0, [r6, r0]
+ cmp r0, r5
+ bne _02073C2C
+_02073C28:
+ mov r7, #0x0
+ b _02073C34
+_02073C2C:
+ add r0, r4, #0x0
+ bl FUN_02073B90
+ add r7, r0, #0x0
+_02073C34:
+ lsl r1, r7, #0x18
+ ldr r0, [r4, #0x24]
+ lsr r1, r1, #0x18
+ bl FUN_02073B70
+ mov r1, #0x1
+ ldr r0, [r4, #0x24]
+ lsl r1, r1, #0xc
+ bl FUN_020201E4
+ ldr r0, _02073CB0 ; =0x00000B25
+ ldrb r0, [r6, r0]
+ cmp r0, r5
+ bne _02073C8C
+ cmp r7, #0x0
+ beq _02073C8C
+ cmp r7, #0x5
+ beq _02073C8C
+ ldr r0, [r4, #0x24]
+ bl FUN_0202022C
+ cmp r0, #0x0
+ ldr r0, [r4, #0x24]
+ bne _02073C78
+ mov r2, #0x18
+ ldrsh r2, [r4, r2]
+ mov r1, #0x16
+ ldrsh r1, [r4, r1]
+ sub r2, r2, #0x3
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ bl FUN_0200C6E4
+ b _02073C9A
+_02073C78:
+ mov r2, #0x18
+ ldrsh r2, [r4, r2]
+ mov r1, #0x16
+ ldrsh r1, [r4, r1]
+ add r2, r2, #0x1
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ bl FUN_0200C6E4
+ b _02073C9A
+_02073C8C:
+ mov r1, #0x16
+ mov r2, #0x18
+ ldrsh r1, [r4, r1]
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x24]
+ bl FUN_0200C6E4
+_02073C9A:
+ add r0, r5, #0x1
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ cmp r5, #0x6
+ blo _02073BFA
+ pop {r3-r7, pc}
+ nop
+_02073CA8: .word 0x00000B0C
+_02073CAC: .word 0x00000B0D
+_02073CB0: .word 0x00000B25
+
+ thumb_func_start FUN_02073CB4
+FUN_02073CB4: ; 0x02073CB4
+ push {r3-r6, lr}
+ sub sp, #0x4
+ add r5, r0, #0x0
+ ldr r0, _02073D10 ; =0x00000808
+ add r4, r1, #0x0
+ ldr r1, [r5, r0]
+ lsl r0, r4, #0x3
+ add r0, r1, r0
+ add r1, sp, #0x0
+ add r6, r2, #0x0
+ add r1, #0x1
+ add r2, sp, #0x0
+ bl FUN_0201C620
+ ldr r0, _02073D14 ; =0x000005A4
+ add r1, r4, #0x0
+ ldr r0, [r5, r0]
+ add r0, #0x21
+ ldrb r0, [r0, #0x0]
+ bl FUN_020714BC
+ add r1, r0, #0x0
+ ldr r0, _02073D18 ; =0x000005C8
+ ldr r0, [r5, r0]
+ bl FUN_02020130
+ ldr r0, _02073D18 ; =0x000005C8
+ mov r1, #0x1
+ ldr r0, [r5, r0]
+ bl FUN_020200A0
+ ldr r0, _02073D18 ; =0x000005C8
+ add r2, sp, #0x0
+ ldrb r1, [r2, #0x1]
+ ldrb r2, [r2, #0x0]
+ ldr r0, [r5, r0]
+ bl FUN_0200C6E4
+ ldr r0, _02073D18 ; =0x000005C8
+ add r1, r6, #0x0
+ ldr r0, [r5, r0]
+ bl FUN_0200C664
+ add sp, #0x4
+ pop {r3-r6, pc}
+ nop
+_02073D10: .word 0x00000808
+_02073D14: .word 0x000005A4
+_02073D18: .word 0x000005C8
+
+ thumb_func_start FUN_02073D1C
+FUN_02073D1C: ; 0x02073D1C
+ push {r3-r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0x0
+ lsl r0, r1, #0xc
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ lsl r1, r2, #0xc
+ lsl r0, r0, #0x14
+ str r1, [sp, #0x4]
+ add r0, r1, r0
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ str r0, [sp, #0x8]
+ mov r0, #0x62
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ add r1, sp, #0x0
+ bl FUN_02020044
+ mov r0, #0x62
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ mov r1, #0x1
+ bl FUN_020200A0
+ mov r0, #0x62
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ bl FUN_02020208
+ mov r0, #0x62
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ bl FUN_02020130
+ add sp, #0xc
+ pop {r3-r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02073D6C
+FUN_02073D6C: ; 0x02073D6C
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x62
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ bl FUN_02020128
+ cmp r0, #0x1
+ bne _02073DA6
+ mov r0, #0x62
+ lsl r0, r0, #0x4
+ mov r1, #0x1
+ ldr r0, [r4, r0]
+ lsl r1, r1, #0xc
+ bl FUN_020201E4
+ mov r0, #0x62
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ bl FUN_0202022C
+ cmp r0, #0x2
+ bne _02073DA6
+ mov r0, #0x62
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ bl FUN_020200A0
+_02073DA6:
+ pop {r4, pc}
+
+ thumb_func_start FUN_02073DA8
+FUN_02073DA8: ; 0x02073DA8
+ lsl r1, r0, #0x2
+ ldr r0, _02073DB0 ; =0x020F9CAC
+ ldr r0, [r0, r1]
+ bx lr
+ .balign 4
+_02073DB0: .word 0x020F9CAC
+
+ thumb_func_start FUN_02073DB4
+FUN_02073DB4: ; 0x02073DB4
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x95
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ mov r1, #0x1
+ bl FUN_0200CCF8
+ mov r0, #0x95
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_0201958C
+ ldr r0, _02073DEC ; =0x000006FC
+ mov r1, #0x0
+ ldr r0, [r4, r0]
+ bl FUN_02001C5C
+ ldr r0, _02073DF0 ; =0x000006F8
+ ldr r0, [r4, r0]
+ bl FUN_02012870
+ mov r0, #0x95
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_02019178
+ pop {r4, pc}
+ .balign 4
+_02073DEC: .word 0x000006FC
+_02073DF0: .word 0x000006F8
+
+ thumb_func_start FUN_02073DF4
+FUN_02073DF4: ; 0x02073DF4
+ push {r3-r6, lr}
+ sub sp, #0x14
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_02073DB4
+ add r0, r5, #0x0
+ mov r1, #0x26
+ mov r2, #0x0
+ bl FUN_020731D4
+ mov r0, #0x3
+ mov r1, #0xc
+ bl FUN_02012838
+ ldr r1, _02073EB0 ; =0x000006F8
+ str r0, [r5, r1]
+ mov r0, #0x3
+ bl FUN_02073DA8
+ ldr r1, _02073EB0 ; =0x000006F8
+ add r2, r0, #0x0
+ ldr r0, [r5, r1]
+ sub r1, #0x40
+ ldr r1, [r5, r1]
+ bl FUN_020128A0
+ mov r0, #0x4
+ bl FUN_02073DA8
+ ldr r1, _02073EB0 ; =0x000006F8
+ add r2, r0, #0x0
+ ldr r0, [r5, r1]
+ sub r1, #0x3c
+ ldr r1, [r5, r1]
+ bl FUN_020128A0
+ mov r0, #0x9
+ bl FUN_02073DA8
+ ldr r1, _02073EB0 ; =0x000006F8
+ add r2, r0, #0x0
+ ldr r0, [r5, r1]
+ sub r1, #0x28
+ ldr r1, [r5, r1]
+ bl FUN_020128A0
+ ldr r0, _02073EB0 ; =0x000006F8
+ mov r1, #0x0
+ ldr r0, [r5, r0]
+ add r2, sp, #0x8
+ str r0, [sp, #0x8]
+ mov r0, #0x8d
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ str r0, [sp, #0xc]
+ strb r1, [r2, #0x8]
+ mov r1, #0x1
+ strb r1, [r2, #0x9]
+ mov r3, #0x3
+ strb r3, [r2, #0xa]
+ ldrb r6, [r2, #0xb]
+ mov r3, #0xf
+ bic r6, r3
+ strb r6, [r2, #0xb]
+ ldrb r6, [r2, #0xb]
+ mov r3, #0x30
+ bic r6, r3
+ strb r6, [r2, #0xb]
+ ldrb r6, [r2, #0xb]
+ mov r3, #0xc0
+ bic r6, r3
+ strb r6, [r2, #0xb]
+ add r2, r1, #0x0
+ mov r3, #0xe
+ bl FUN_0200CCA4
+ mov r0, #0xc
+ str r0, [sp, #0x0]
+ mov r0, #0x2
+ mov r2, #0x0
+ str r0, [sp, #0x4]
+ add r0, sp, #0x8
+ mov r1, #0x8
+ add r3, r2, #0x0
+ bl FUN_02001C14
+ ldr r1, _02073EB4 ; =0x000006FC
+ str r0, [r5, r1]
+ mov r0, #0xd
+ str r0, [r4, #0x0]
+ add sp, #0x14
+ pop {r3-r6, pc}
+ nop
+_02073EB0: .word 0x000006F8
+_02073EB4: .word 0x000006FC
+
+ thumb_func_start FUN_02073EB8
+FUN_02073EB8: ; 0x02073EB8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, _02073EE0 ; =0x000006FC
+ add r4, r1, #0x0
+ ldr r0, [r5, r0]
+ mov r1, #0x0
+ bl FUN_02001C5C
+ ldr r0, _02073EE4 ; =0x000006F8
+ ldr r0, [r5, r0]
+ bl FUN_02012870
+ ldr r0, _02073EE8 ; =0x000005A4
+ mov r1, #0x3
+ ldr r0, [r5, r0]
+ add r0, #0x23
+ strb r1, [r0, #0x0]
+ mov r0, #0x1b
+ str r0, [r4, #0x0]
+ pop {r3-r5, pc}
+ .balign 4
+_02073EE0: .word 0x000006FC
+_02073EE4: .word 0x000006F8
+_02073EE8: .word 0x000005A4
+
+ thumb_func_start FUN_02073EEC
+FUN_02073EEC: ; 0x02073EEC
+ push {r3-r6, lr}
+ sub sp, #0x4
+ add r5, r0, #0x0
+ mov r0, #0x8d
+ lsl r0, r0, #0x2
+ add r4, r1, #0x0
+ add r0, r5, r0
+ mov r1, #0x1
+ bl FUN_0200CCF8
+ ldr r0, _02074044 ; =0x000006FC
+ mov r1, #0x0
+ ldr r0, [r5, r0]
+ bl FUN_02001C5C
+ ldr r0, _02074048 ; =0x000006F8
+ ldr r0, [r5, r0]
+ bl FUN_02012870
+ ldr r0, _0207404C ; =0x00000B25
+ ldrb r1, [r5, r0]
+ mov r0, #0x2c
+ mul r0, r1
+ add r2, r5, r0
+ ldr r0, _02074050 ; =0x0000070C
+ ldrh r2, [r2, r0]
+ ldr r0, _02074054 ; =0x000005A4
+ cmp r2, #0x0
+ bne _02073F66
+ ldr r0, [r5, r0]
+ ldr r0, [r0, #0x0]
+ bl FUN_0206B9B0
+ ldr r2, _02074058 ; =0x0000069C
+ add r6, r0, #0x0
+ ldr r0, [r5, r2]
+ add r2, #0xc
+ ldr r2, [r5, r2]
+ mov r1, #0x51
+ bl FUN_0200A8E0
+ add r0, r6, #0x0
+ bl FUN_020690E4
+ add r2, r0, #0x0
+ mov r0, #0x6a
+ lsl r0, r0, #0x4
+ ldr r0, [r5, r0]
+ mov r1, #0x0
+ bl FUN_0200ACF8
+ mov r2, #0x6a
+ lsl r2, r2, #0x4
+ add r1, r2, #0x4
+ ldr r0, [r5, r2]
+ add r2, #0x8
+ ldr r1, [r5, r1]
+ ldr r2, [r5, r2]
+ bl FUN_0200B7B8
+ b _02074018
+_02073F66:
+ ldr r0, [r5, r0]
+ add r1, r2, #0x0
+ ldr r0, [r0, #0x4]
+ mov r2, #0x1
+ mov r3, #0xc
+ bl FUN_0206ED38
+ cmp r0, #0x1
+ bne _0207400A
+ ldr r0, _02074054 ; =0x000005A4
+ ldr r1, _0207404C ; =0x00000B25
+ ldr r0, [r5, r0]
+ ldrb r1, [r5, r1]
+ ldr r0, [r0, #0x0]
+ bl FUN_0206B9B0
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ add r6, r0, #0x0
+ mov r1, #0x6
+ add r2, sp, #0x0
+ bl FUN_02067830
+ add r0, r6, #0x0
+ bl FUN_02069EC4
+ ldr r2, _02074058 ; =0x0000069C
+ mov r1, #0x52
+ ldr r0, [r5, r2]
+ add r2, #0xc
+ ldr r2, [r5, r2]
+ bl FUN_0200A8E0
+ add r0, r6, #0x0
+ bl FUN_020690E4
+ add r2, r0, #0x0
+ mov r0, #0x6a
+ lsl r0, r0, #0x4
+ ldr r0, [r5, r0]
+ mov r1, #0x0
+ bl FUN_0200ACF8
+ ldr r2, _0207404C ; =0x00000B25
+ mov r3, #0x6a
+ ldrb r6, [r5, r2]
+ mov r2, #0x2c
+ lsl r3, r3, #0x4
+ mul r2, r6
+ ldr r0, [r5, r3]
+ add r2, r5, r2
+ add r3, #0x6c
+ ldrh r2, [r2, r3]
+ mov r1, #0x1
+ bl FUN_0200AE38
+ mov r2, #0x6a
+ lsl r2, r2, #0x4
+ add r1, r2, #0x4
+ ldr r0, [r5, r2]
+ add r2, #0x8
+ ldr r1, [r5, r1]
+ ldr r2, [r5, r2]
+ bl FUN_0200B7B8
+ ldr r1, _0207404C ; =0x00000B25
+ mov r2, #0x2c
+ ldrb r3, [r5, r1]
+ mov r0, #0x0
+ add r6, r3, #0x0
+ mul r6, r2
+ ldr r3, _02074050 ; =0x0000070C
+ add r6, r5, r6
+ strh r0, [r6, r3]
+ ldrb r1, [r5, r1]
+ add r0, r5, #0x0
+ mul r2, r1
+ add r2, r5, r2
+ ldrh r2, [r2, r3]
+ bl FUN_02073A78
+ b _02074018
+_0207400A:
+ ldr r2, _02074058 ; =0x0000069C
+ mov r1, #0x53
+ ldr r0, [r5, r2]
+ add r2, #0x8
+ ldr r2, [r5, r2]
+ bl FUN_0200A8E0
+_02074018:
+ mov r0, #0x89
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ mov r1, #0x1
+ mov r2, #0xa
+ mov r3, #0xf
+ bl FUN_0200D0BC
+ mov r0, #0x89
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ mov r1, #0xf
+ bl FUN_02019620
+ add r0, r5, #0x0
+ bl FUN_0207322C
+ mov r0, #0xf
+ str r0, [r4, #0x0]
+ add sp, #0x4
+ pop {r3-r6, pc}
+ nop
+_02074044: .word 0x000006FC
+_02074048: .word 0x000006F8
+_0207404C: .word 0x00000B25
+_02074050: .word 0x0000070C
+_02074054: .word 0x000005A4
+_02074058: .word 0x0000069C
+
+ thumb_func_start FUN_0207405C
+FUN_0207405C: ; 0x0207405C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _020740A0 ; =0x00000B24
+ ldrb r0, [r4, r0]
+ bl FUN_0201BD70
+ cmp r0, #0x0
+ bne _0207409A
+ ldr r0, _020740A4 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x3
+ tst r0, r1
+ beq _0207409A
+ mov r0, #0x89
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ mov r1, #0x1
+ bl FUN_0200D0E0
+ add r0, r4, #0x0
+ mov r1, #0x1d
+ mov r2, #0x1
+ bl FUN_020731C0
+ ldr r0, _020740A8 ; =0x000005C8
+ mov r1, #0x0
+ ldr r0, [r4, r0]
+ bl FUN_0200C664
+ mov r0, #0x1
+ pop {r4, pc}
+_0207409A:
+ mov r0, #0xf
+ pop {r4, pc}
+ nop
+_020740A0: .word 0x00000B24
+_020740A4: .word 0x021C48B8
+_020740A8: .word 0x000005C8
+
+ thumb_func_start FUN_020740AC
+FUN_020740AC: ; 0x020740AC
+ push {r3-r6, lr}
+ sub sp, #0x14
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_02073DB4
+ add r0, r5, #0x0
+ mov r1, #0x27
+ mov r2, #0x0
+ bl FUN_020731D4
+ mov r0, #0x3
+ mov r1, #0xc
+ bl FUN_02012838
+ ldr r1, _02074168 ; =0x000006F8
+ str r0, [r5, r1]
+ mov r0, #0x6
+ bl FUN_02073DA8
+ ldr r1, _02074168 ; =0x000006F8
+ add r2, r0, #0x0
+ ldr r0, [r5, r1]
+ sub r1, #0x34
+ ldr r1, [r5, r1]
+ bl FUN_020128A0
+ mov r0, #0x7
+ bl FUN_02073DA8
+ ldr r1, _02074168 ; =0x000006F8
+ add r2, r0, #0x0
+ ldr r0, [r5, r1]
+ sub r1, #0x30
+ ldr r1, [r5, r1]
+ bl FUN_020128A0
+ mov r0, #0x9
+ bl FUN_02073DA8
+ ldr r1, _02074168 ; =0x000006F8
+ add r2, r0, #0x0
+ ldr r0, [r5, r1]
+ sub r1, #0x28
+ ldr r1, [r5, r1]
+ bl FUN_020128A0
+ ldr r0, _02074168 ; =0x000006F8
+ mov r1, #0x0
+ ldr r0, [r5, r0]
+ add r2, sp, #0x8
+ str r0, [sp, #0x8]
+ mov r0, #0x8d
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ str r0, [sp, #0xc]
+ strb r1, [r2, #0x8]
+ mov r1, #0x1
+ strb r1, [r2, #0x9]
+ mov r3, #0x3
+ strb r3, [r2, #0xa]
+ ldrb r6, [r2, #0xb]
+ mov r3, #0xf
+ bic r6, r3
+ strb r6, [r2, #0xb]
+ ldrb r6, [r2, #0xb]
+ mov r3, #0x30
+ bic r6, r3
+ strb r6, [r2, #0xb]
+ ldrb r6, [r2, #0xb]
+ mov r3, #0xc0
+ bic r6, r3
+ strb r6, [r2, #0xb]
+ add r2, r1, #0x0
+ mov r3, #0xe
+ bl FUN_0200CCA4
+ mov r0, #0xc
+ str r0, [sp, #0x0]
+ mov r0, #0x2
+ mov r2, #0x0
+ str r0, [sp, #0x4]
+ add r0, sp, #0x8
+ mov r1, #0x8
+ add r3, r2, #0x0
+ bl FUN_02001C14
+ ldr r1, _0207416C ; =0x000006FC
+ str r0, [r5, r1]
+ mov r0, #0xd
+ str r0, [r4, #0x0]
+ add sp, #0x14
+ pop {r3-r6, pc}
+ nop
+_02074168: .word 0x000006F8
+_0207416C: .word 0x000006FC
+
+ thumb_func_start FUN_02074170
+FUN_02074170: ; 0x02074170
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, _02074198 ; =0x000006FC
+ add r4, r1, #0x0
+ ldr r0, [r5, r0]
+ mov r1, #0x0
+ bl FUN_02001C5C
+ ldr r0, _0207419C ; =0x000006F8
+ ldr r0, [r5, r0]
+ bl FUN_02012870
+ ldr r0, _020741A0 ; =0x000005A4
+ mov r1, #0x7
+ ldr r0, [r5, r0]
+ add r0, #0x23
+ strb r1, [r0, #0x0]
+ mov r0, #0x1b
+ str r0, [r4, #0x0]
+ pop {r3-r5, pc}
+ .balign 4
+_02074198: .word 0x000006FC
+_0207419C: .word 0x000006F8
+_020741A0: .word 0x000005A4
+
+ thumb_func_start FUN_020741A4
+FUN_020741A4: ; 0x020741A4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r0, #0x8d
+ lsl r0, r0, #0x2
+ add r4, r1, #0x0
+ add r0, r5, r0
+ mov r1, #0x1
+ bl FUN_0200CCF8
+ ldr r0, _020741EC ; =0x000006FC
+ mov r1, #0x0
+ ldr r0, [r5, r0]
+ bl FUN_02001C5C
+ ldr r0, _020741F0 ; =0x000006F8
+ ldr r0, [r5, r0]
+ bl FUN_02012870
+ add r0, r5, #0x0
+ mov r1, #0x2b
+ mov r2, #0x1
+ bl FUN_020731E8
+ ldr r0, _020741F4 ; =FUN_02074200
+ ldr r1, _020741F8 ; =0x00000B18
+ ldr r2, _020741FC ; =FUN_02074278
+ str r0, [r5, r1]
+ add r0, r1, #0x4
+ str r2, [r5, r0]
+ mov r0, #0x16
+ add r1, #0xa
+ strb r0, [r5, r1]
+ mov r0, #0x14
+ str r0, [r4, #0x0]
+ pop {r3-r5, pc}
+ nop
+_020741EC: .word 0x000006FC
+_020741F0: .word 0x000006F8
+_020741F4: .word FUN_02074200
+_020741F8: .word 0x00000B18
+_020741FC: .word FUN_02074278
+
+ thumb_func_start FUN_02074200
+FUN_02074200: ; 0x02074200
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ ldr r0, _02074268 ; =0x000005A4
+ ldr r1, _0207426C ; =0x00000B25
+ ldr r0, [r4, r0]
+ ldrb r1, [r4, r1]
+ ldr r0, [r0, #0x0]
+ bl FUN_0206B9B0
+ add r1, r0, #0x0
+ ldr r0, _02074268 ; =0x000005A4
+ mov r2, #0xc
+ ldr r0, [r4, r0]
+ ldr r0, [r0, #0x8]
+ bl FUN_02085644
+ mov r1, #0x0
+ mvn r1, r1
+ cmp r0, r1
+ beq _02074254
+ ldr r1, _0207426C ; =0x00000B25
+ mov r2, #0x2c
+ ldrb r3, [r4, r1]
+ mov r0, #0x0
+ add r5, r3, #0x0
+ mul r5, r2
+ ldr r3, _02074270 ; =0x0000070C
+ add r5, r4, r5
+ strh r0, [r5, r3]
+ ldrb r1, [r4, r1]
+ add r0, r4, #0x0
+ mul r2, r1
+ add r2, r4, r2
+ ldrh r2, [r2, r3]
+ bl FUN_02073A78
+ add r0, r4, #0x0
+ mov r1, #0x2e
+ mov r2, #0x0
+ bl FUN_020731E8
+ b _0207425E
+_02074254:
+ add r0, r4, #0x0
+ mov r1, #0x32
+ mov r2, #0x0
+ bl FUN_020731E8
+_0207425E:
+ ldr r0, _02074274 ; =0x00000B22
+ mov r1, #0x10
+ strb r1, [r4, r0]
+ mov r0, #0x14
+ pop {r3-r5, pc}
+ .balign 4
+_02074268: .word 0x000005A4
+_0207426C: .word 0x00000B25
+_02074270: .word 0x0000070C
+_02074274: .word 0x00000B22
+
+ thumb_func_start FUN_02074278
+FUN_02074278: ; 0x02074278
+ push {r4, lr}
+ mov r1, #0x2f
+ mov r2, #0x0
+ add r4, r0, #0x0
+ bl FUN_020731E8
+ ldr r0, _0207429C ; =FUN_020742A8
+ ldr r1, _020742A0 ; =0x00000B18
+ ldr r2, _020742A4 ; =FUN_02074340
+ str r0, [r4, r1]
+ add r0, r1, #0x4
+ str r2, [r4, r0]
+ mov r0, #0x16
+ add r1, #0xa
+ strb r0, [r4, r1]
+ mov r0, #0x14
+ pop {r4, pc}
+ nop
+_0207429C: .word FUN_020742A8
+_020742A0: .word 0x00000B18
+_020742A4: .word FUN_02074340
+
+ thumb_func_start FUN_020742A8
+FUN_020742A8: ; 0x020742A8
+ push {r3-r5, lr}
+ ldr r1, _02074330 ; =0x00000B25
+ add r4, r0, #0x0
+ ldrb r2, [r4, r1]
+ mov r1, #0x2c
+ ldr r0, _02074334 ; =0x000005A4
+ mul r1, r2
+ add r2, r4, r1
+ ldr r1, _02074338 ; =0x0000070C
+ ldr r0, [r4, r0]
+ ldrh r1, [r2, r1]
+ ldr r0, [r0, #0x4]
+ mov r2, #0x1
+ mov r3, #0xc
+ bl FUN_0206ED38
+ cmp r0, #0x1
+ bne _0207431A
+ ldr r0, _02074334 ; =0x000005A4
+ ldr r1, _02074330 ; =0x00000B25
+ ldr r0, [r4, r0]
+ ldrb r1, [r4, r1]
+ ldr r0, [r0, #0x0]
+ bl FUN_0206B9B0
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ add r5, r0, #0x0
+ mov r1, #0x6
+ add r2, sp, #0x0
+ bl FUN_02067830
+ add r0, r5, #0x0
+ bl FUN_02069EC4
+ ldr r1, _02074330 ; =0x00000B25
+ mov r2, #0x2c
+ ldrb r3, [r4, r1]
+ mov r0, #0x0
+ add r5, r3, #0x0
+ mul r5, r2
+ ldr r3, _02074338 ; =0x0000070C
+ add r5, r4, r5
+ strh r0, [r5, r3]
+ ldrb r1, [r4, r1]
+ add r0, r4, #0x0
+ mul r2, r1
+ add r2, r4, r2
+ ldrh r2, [r2, r3]
+ bl FUN_02073A78
+ add r0, r4, #0x0
+ mov r1, #0x33
+ mov r2, #0x0
+ bl FUN_020731E8
+ b _02074324
+_0207431A:
+ add r0, r4, #0x0
+ mov r1, #0x53
+ mov r2, #0x0
+ bl FUN_020731E8
+_02074324:
+ ldr r0, _0207433C ; =0x00000B22
+ mov r1, #0x10
+ strb r1, [r4, r0]
+ mov r0, #0x14
+ pop {r3-r5, pc}
+ nop
+_02074330: .word 0x00000B25
+_02074334: .word 0x000005A4
+_02074338: .word 0x0000070C
+_0207433C: .word 0x00000B22
+
+ thumb_func_start FUN_02074340
+FUN_02074340: ; 0x02074340
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x89
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ mov r1, #0x1
+ bl FUN_0200D0E0
+ add r0, r4, #0x0
+ mov r1, #0x1d
+ mov r2, #0x1
+ bl FUN_020731C0
+ ldr r0, _02074368 ; =0x000005C8
+ mov r1, #0x0
+ ldr r0, [r4, r0]
+ bl FUN_0200C664
+ mov r0, #0x1
+ pop {r4, pc}
+ .balign 4
+_02074368: .word 0x000005C8
+
+ thumb_func_start FUN_0207436C
+FUN_0207436C: ; 0x0207436C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _020743A4 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x3
+ tst r0, r1
+ beq _0207439E
+ mov r0, #0x89
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ mov r1, #0x1
+ bl FUN_0200D0E0
+ add r0, r4, #0x0
+ mov r1, #0x1d
+ mov r2, #0x1
+ bl FUN_020731C0
+ ldr r0, _020743A8 ; =0x000005C8
+ mov r1, #0x0
+ ldr r0, [r4, r0]
+ bl FUN_0200C664
+ mov r0, #0x1
+ pop {r4, pc}
+_0207439E:
+ mov r0, #0x10
+ pop {r4, pc}
+ nop
+_020743A4: .word 0x021C48B8
+_020743A8: .word 0x000005C8
+
+ thumb_func_start FUN_020743AC
+FUN_020743AC: ; 0x020743AC
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ ldr r1, _0207440C ; =0x00000B25
+ add r5, r0, #0x0
+ ldrb r2, [r5, r1]
+ mov r1, #0x2c
+ mul r1, r2
+ add r2, r5, r1
+ ldr r1, _02074410 ; =0x00000712
+ ldrh r2, [r2, r1]
+ cmp r2, #0x0
+ bne _020743E6
+ sub r1, #0x16
+ ldr r0, [r5, r1]
+ mov r1, #0x0
+ bl FUN_02001C5C
+ ldr r0, _02074414 ; =0x000006F8
+ ldr r0, [r5, r0]
+ bl FUN_02012870
+ ldr r0, _02074418 ; =0x000005A4
+ mov r1, #0x0
+ ldr r0, [r5, r0]
+ add r0, #0x23
+ strb r1, [r0, #0x0]
+ mov r0, #0x1b
+ str r0, [r4, #0x0]
+ pop {r3-r5, pc}
+_020743E6:
+ bl FUN_02073DB4
+ add r0, r5, #0x0
+ mov r1, #0xc3
+ mov r2, #0x1
+ bl FUN_020731E8
+ ldr r0, _0207441C ; =FUN_02074428
+ ldr r1, _02074420 ; =0x00000B18
+ ldr r2, _02074424 ; =FUN_02074454
+ str r0, [r5, r1]
+ add r0, r1, #0x4
+ str r2, [r5, r0]
+ mov r0, #0x16
+ add r1, #0xa
+ strb r0, [r5, r1]
+ mov r0, #0x14
+ str r0, [r4, #0x0]
+ pop {r3-r5, pc}
+ .balign 4
+_0207440C: .word 0x00000B25
+_02074410: .word 0x00000712
+_02074414: .word 0x000006F8
+_02074418: .word 0x000005A4
+_0207441C: .word FUN_02074428
+_02074420: .word 0x00000B18
+_02074424: .word FUN_02074454
+
+ thumb_func_start FUN_02074428
+FUN_02074428: ; 0x02074428
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _0207444C ; =0x000005A4
+ ldr r1, _02074450 ; =0x00000B25
+ ldr r0, [r4, r0]
+ ldrb r1, [r4, r1]
+ ldr r0, [r0, #0x0]
+ bl FUN_0206B9B0
+ bl FUN_0206AA84
+ ldr r0, _0207444C ; =0x000005A4
+ mov r1, #0x0
+ ldr r0, [r4, r0]
+ add r0, #0x23
+ strb r1, [r0, #0x0]
+ mov r0, #0x1b
+ pop {r4, pc}
+ .balign 4
+_0207444C: .word 0x000005A4
+_02074450: .word 0x00000B25
+
+ thumb_func_start FUN_02074454
+FUN_02074454: ; 0x02074454
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x89
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ mov r1, #0x1
+ bl FUN_0200D0E0
+ add r0, r4, #0x0
+ mov r1, #0x1d
+ mov r2, #0x1
+ bl FUN_020731C0
+ ldr r0, _0207447C ; =0x000005C8
+ mov r1, #0x0
+ ldr r0, [r4, r0]
+ bl FUN_0200C664
+ mov r0, #0x1
+ pop {r4, pc}
+ .balign 4
+_0207447C: .word 0x000005C8
+
+ thumb_func_start FUN_02074480
+FUN_02074480: ; 0x02074480
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, _02074528 ; =0x00000B23
+ add r4, r1, #0x0
+ ldrb r2, [r5, r0]
+ mov r1, #0x40
+ orr r1, r2
+ strb r1, [r5, r0]
+ ldrb r1, [r5, r0]
+ mov r2, #0x3f
+ bic r1, r2
+ add r2, r0, #0x2
+ ldrb r3, [r5, r2]
+ mov r2, #0x3f
+ and r2, r3
+ orr r1, r2
+ strb r1, [r5, r0]
+ ldr r0, _0207452C ; =0x000005C8
+ mov r1, #0x0
+ ldr r0, [r5, r0]
+ bl FUN_0200C664
+ ldr r0, _0207452C ; =0x000005C8
+ add r1, sp, #0x0
+ ldr r0, [r5, r0]
+ add r1, #0x2
+ add r2, sp, #0x0
+ bl FUN_0200C75C
+ ldr r0, _02074530 ; =0x000005CC
+ add r3, sp, #0x0
+ mov r1, #0x2
+ mov r2, #0x0
+ ldrsh r1, [r3, r1]
+ ldrsh r2, [r3, r2]
+ ldr r0, [r5, r0]
+ bl FUN_0200C6E4
+ ldr r0, _02074534 ; =0x000005A4
+ ldr r1, _02074528 ; =0x00000B23
+ ldr r0, [r5, r0]
+ ldrb r1, [r5, r1]
+ add r0, #0x21
+ ldrb r0, [r0, #0x0]
+ lsl r1, r1, #0x1a
+ lsr r1, r1, #0x1a
+ bl FUN_020714BC
+ add r1, r0, #0x0
+ ldr r0, _02074530 ; =0x000005CC
+ add r1, r1, #0x2
+ ldr r0, [r5, r0]
+ bl FUN_02020130
+ ldr r0, _02074530 ; =0x000005CC
+ mov r1, #0x1
+ ldr r0, [r5, r0]
+ bl FUN_020200A0
+ ldr r1, _02074528 ; =0x00000B23
+ add r0, r5, #0x0
+ ldrb r1, [r5, r1]
+ lsl r1, r1, #0x1a
+ lsr r1, r1, #0x1a
+ bl FUN_020709FC
+ mov r0, #0x85
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ mov r1, #0x1
+ bl FUN_0200D0E0
+ add r0, r5, #0x0
+ bl FUN_02073DB4
+ add r0, r5, #0x0
+ mov r1, #0x1e
+ mov r2, #0x1
+ bl FUN_020731C0
+ mov r0, #0x18
+ str r0, [r4, #0x0]
+ pop {r3-r5, pc}
+ nop
+_02074528: .word 0x00000B23
+_0207452C: .word 0x000005C8
+_02074530: .word 0x000005CC
+_02074534: .word 0x000005A4
+
+ thumb_func_start FUN_02074538
+FUN_02074538: ; 0x02074538
+ push {r4, lr}
+ ldr r1, _02074578 ; =0x00000B23
+ add r4, r0, #0x0
+ ldrb r2, [r4, r1]
+ mov r0, #0x40
+ bic r2, r0
+ strb r2, [r4, r1]
+ ldr r0, _0207457C ; =0x000005CC
+ mov r1, #0x0
+ ldr r0, [r4, r0]
+ bl FUN_020200A0
+ ldr r0, _02074580 ; =0x00000B25
+ ldrb r1, [r4, r0]
+ cmp r1, #0x6
+ bhs _0207455E
+ add r0, r4, #0x0
+ bl FUN_020709FC
+_0207455E:
+ ldr r1, _02074578 ; =0x00000B23
+ add r0, r4, #0x0
+ ldrb r1, [r4, r1]
+ lsl r1, r1, #0x1a
+ lsr r1, r1, #0x1a
+ bl FUN_020709FC
+ add r0, r4, #0x0
+ mov r1, #0x1d
+ mov r2, #0x1
+ bl FUN_020731C0
+ pop {r4, pc}
+ .balign 4
+_02074578: .word 0x00000B23
+_0207457C: .word 0x000005CC
+_02074580: .word 0x00000B25
+
+ thumb_func_start FUN_02074584
+FUN_02074584: ; 0x02074584
+ push {r3-r7, lr}
+ sub sp, #0x28
+ ldr r2, _020746AC ; =0x00000B25
+ add r6, r0, #0x0
+ ldrb r1, [r6, r2]
+ add r0, r2, #0x0
+ sub r0, #0x19
+ strb r1, [r6, r0]
+ sub r0, r2, #0x2
+ ldrb r0, [r6, r0]
+ add r3, r2, #0x0
+ sub r3, #0x13
+ lsl r0, r0, #0x1a
+ lsr r1, r0, #0x1a
+ add r0, r2, #0x0
+ sub r0, #0x18
+ strb r1, [r6, r0]
+ add r0, r2, #0x0
+ mov r1, #0x1
+ sub r0, #0x15
+ strb r1, [r6, r0]
+ mov r0, #0x0
+ strb r0, [r6, r3]
+ add r3, r2, #0x0
+ sub r3, #0x14
+ strb r0, [r6, r3]
+ add r3, r2, #0x0
+ sub r3, #0x19
+ ldrb r3, [r6, r3]
+ tst r3, r1
+ beq _020745C8
+ sub r2, #0x17
+ strb r1, [r6, r2]
+ b _020745CC
+_020745C8:
+ sub r2, #0x17
+ strb r0, [r6, r2]
+_020745CC:
+ ldr r0, _020746B0 ; =0x00000B0D
+ mov r1, #0x1
+ ldrb r2, [r6, r0]
+ tst r2, r1
+ beq _020745D8
+ b _020745DA
+_020745D8:
+ mov r1, #0x0
+_020745DA:
+ add r0, r0, #0x2
+ strb r1, [r6, r0]
+ ldr r0, [r6, #0x0]
+ mov r1, #0x2
+ bl FUN_0201886C
+ str r0, [sp, #0x14]
+ ldr r0, [r6, #0x0]
+ mov r1, #0x1
+ bl FUN_0201886C
+ ldr r1, _020746B4 ; =0x00000B0C
+ str r0, [sp, #0x10]
+ ldrb r3, [r6, r1]
+ add r1, r1, #0x1
+ mov r2, #0x2c
+ add r0, r3, #0x0
+ ldrb r3, [r6, r1]
+ mul r0, r2
+ mov r4, #0x0
+ add r1, r3, #0x0
+ add r3, r6, r0
+ ldr r0, _020746B8 ; =0x00000715
+ mul r1, r2
+ ldrsb r2, [r3, r0]
+ str r2, [sp, #0xc]
+ sub r2, r0, #0x1
+ ldrsb r2, [r3, r2]
+ str r2, [sp, #0x8]
+ add r2, r6, r1
+ ldrsb r1, [r2, r0]
+ sub r0, r0, #0x1
+ ldrsb r0, [r2, r0]
+ str r1, [sp, #0x4]
+ str r0, [sp, #0x0]
+ ldr r0, _020746BC ; =0x0000080C
+ add r0, r6, r0
+ str r0, [sp, #0x18]
+ ldr r0, _020746C0 ; =0x0000098C
+ add r0, r6, r0
+ str r0, [sp, #0x1c]
+ ldr r0, _020746C4 ; =0x000008CC
+ add r0, r6, r0
+ str r0, [sp, #0x20]
+ ldr r0, _020746C8 ; =0x00000A4C
+ add r0, r6, r0
+ str r0, [sp, #0x24]
+_02074638:
+ ldr r0, [sp, #0xc]
+ lsl r5, r4, #0x5
+ add r0, r0, r4
+ lsl r1, r0, #0x5
+ ldr r0, [sp, #0x8]
+ mov r2, #0x20
+ add r0, r0, r1
+ lsl r7, r0, #0x1
+ ldr r0, [sp, #0x18]
+ ldr r1, [sp, #0x14]
+ add r0, r0, r5
+ add r1, r1, r7
+ blx FUN_020DF438
+ ldr r0, [sp, #0x1c]
+ ldr r1, [sp, #0x10]
+ add r0, r0, r5
+ add r1, r1, r7
+ mov r2, #0x20
+ blx FUN_020DF438
+ ldr r0, [sp, #0x4]
+ mov r2, #0x20
+ add r0, r0, r4
+ lsl r1, r0, #0x5
+ ldr r0, [sp, #0x0]
+ add r0, r0, r1
+ lsl r7, r0, #0x1
+ ldr r0, [sp, #0x20]
+ ldr r1, [sp, #0x14]
+ add r0, r0, r5
+ add r1, r1, r7
+ blx FUN_020DF438
+ ldr r0, [sp, #0x24]
+ ldr r1, [sp, #0x10]
+ add r0, r0, r5
+ add r1, r1, r7
+ mov r2, #0x20
+ blx FUN_020DF438
+ add r0, r4, #0x1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #0x6
+ blo _02074638
+ ldr r0, _020746CC ; =0x000005C8
+ mov r1, #0x0
+ ldr r0, [r6, r0]
+ bl FUN_020200A0
+ ldr r0, _020746D0 ; =0x000005CC
+ mov r1, #0x0
+ ldr r0, [r6, r0]
+ bl FUN_020200A0
+ add sp, #0x28
+ pop {r3-r7, pc}
+ .balign 4
+_020746AC: .word 0x00000B25
+_020746B0: .word 0x00000B0D
+_020746B4: .word 0x00000B0C
+_020746B8: .word 0x00000715
+_020746BC: .word 0x0000080C
+_020746C0: .word 0x0000098C
+_020746C4: .word 0x000008CC
+_020746C8: .word 0x00000A4C
+_020746CC: .word 0x000005C8
+_020746D0: .word 0x000005CC
+
+ thumb_func_start FUN_020746D4
+FUN_020746D4: ; 0x020746D4
+ push {r3-r5, lr}
+ ldr r1, _02074828 ; =0x0000080C
+ add r5, r0, #0x0
+ ldr r2, _0207482C ; =0x00000305
+ add r4, r5, r1
+ ldrb r1, [r4, r2]
+ cmp r1, #0x4
+ bls _020746E6
+ b _02074822
+_020746E6:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_020746F2: ; jump table (using 16-bit offset)
+ .short _020746FC - _020746F2 - 2; case 0
+ .short _0207470C - _020746F2 - 2; case 1
+ .short _0207475C - _020746F2 - 2; case 2
+ .short _02074770 - _020746F2 - 2; case 3
+ .short _020747CE - _020746F2 - 2; case 4
+_020746FC:
+ mov r0, #0x6a
+ lsl r0, r0, #0x4
+ bl FUN_020054C8
+ ldr r0, _0207482C ; =0x00000305
+ mov r1, #0x1
+ strb r1, [r4, r0]
+ b _02074822
+_0207470C:
+ add r1, r2, #0x1
+ ldrb r1, [r4, r1]
+ add r3, r1, #0x1
+ add r1, r2, #0x1
+ strb r3, [r4, r1]
+ mov r1, #0x0
+ bl FUN_02074848
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_02074848
+ ldr r2, _02074830 ; =0x00000302
+ add r0, r5, #0x0
+ ldrb r2, [r4, r2]
+ mov r1, #0x0
+ bl FUN_0207499C
+ ldr r2, _02074834 ; =0x00000303
+ add r0, r5, #0x0
+ ldrb r2, [r4, r2]
+ mov r1, #0x1
+ bl FUN_0207499C
+ ldr r0, [r5, #0x0]
+ mov r1, #0x2
+ bl FUN_0201AC68
+ ldr r0, [r5, #0x0]
+ mov r1, #0x1
+ bl FUN_0201AC68
+ ldr r0, _02074838 ; =0x00000306
+ ldrb r1, [r4, r0]
+ cmp r1, #0x10
+ bne _02074822
+ mov r1, #0x2
+ sub r0, r0, #0x1
+ strb r1, [r4, r0]
+ b _02074822
+_0207475C:
+ bl FUN_02074AF4
+ mov r0, #0x6a
+ lsl r0, r0, #0x4
+ bl FUN_020054C8
+ ldr r0, _0207482C ; =0x00000305
+ mov r1, #0x3
+ strb r1, [r4, r0]
+ b _02074822
+_02074770:
+ add r1, r2, #0x1
+ ldrb r1, [r4, r1]
+ sub r3, r1, #0x1
+ add r1, r2, #0x1
+ strb r3, [r4, r1]
+ mov r1, #0x0
+ bl FUN_02074848
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_02074848
+ ldr r2, _02074830 ; =0x00000302
+ add r0, r5, #0x0
+ ldrb r3, [r4, r2]
+ mov r2, #0x1
+ mov r1, #0x0
+ eor r2, r3
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+ bl FUN_0207499C
+ ldr r2, _02074834 ; =0x00000303
+ mov r1, #0x1
+ ldrb r2, [r4, r2]
+ add r0, r5, #0x0
+ eor r2, r1
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+ bl FUN_0207499C
+ ldr r0, [r5, #0x0]
+ mov r1, #0x2
+ bl FUN_0201AC68
+ ldr r0, [r5, #0x0]
+ mov r1, #0x1
+ bl FUN_0201AC68
+ ldr r0, _02074838 ; =0x00000306
+ ldrb r1, [r4, r0]
+ cmp r1, #0x0
+ bne _02074822
+ mov r1, #0x4
+ sub r0, r0, #0x1
+ strb r1, [r4, r0]
+ b _02074822
+_020747CE:
+ ldr r0, _0207483C ; =0x000005A4
+ sub r1, r2, #0x5
+ ldr r0, [r5, r0]
+ sub r2, r2, #0x4
+ ldrb r1, [r4, r1]
+ ldrb r2, [r4, r2]
+ ldr r0, [r0, #0x0]
+ bl FUN_0206BA38
+ ldr r0, _02074840 ; =0x000005C8
+ mov r1, #0x1
+ ldr r0, [r5, r0]
+ bl FUN_020200A0
+ mov r0, #0xc1
+ mov r1, #0x0
+ lsl r0, r0, #0x2
+ strb r1, [r4, r0]
+ ldr r1, _02074844 ; =0x00000B23
+ mov r0, #0x40
+ ldrb r2, [r5, r1]
+ bic r2, r0
+ strb r2, [r5, r1]
+ add r1, r1, #0x2
+ ldrb r1, [r5, r1]
+ add r0, r5, #0x0
+ bl FUN_020709FC
+ ldr r1, _02074844 ; =0x00000B23
+ add r0, r5, #0x0
+ ldrb r1, [r5, r1]
+ lsl r1, r1, #0x1a
+ lsr r1, r1, #0x1a
+ bl FUN_020709FC
+ add r0, r5, #0x0
+ mov r1, #0x1d
+ mov r2, #0x0
+ bl FUN_020731C0
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_02074822:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ nop
+_02074828: .word 0x0000080C
+_0207482C: .word 0x00000305
+_02074830: .word 0x00000302
+_02074834: .word 0x00000303
+_02074838: .word 0x00000306
+_0207483C: .word 0x000005A4
+_02074840: .word 0x000005C8
+_02074844: .word 0x00000B23
+
+ thumb_func_start FUN_02074848
+FUN_02074848: ; 0x02074848
+ push {r3-r7, lr}
+ sub sp, #0x28
+ add r5, r0, #0x0
+ ldr r0, _02074990 ; =0x0000080C
+ str r1, [sp, #0x1c]
+ ldr r1, [sp, #0x1c]
+ add r4, r5, r0
+ add r2, r4, r1
+ mov r1, #0x3
+ lsl r1, r1, #0x8
+ ldrb r2, [r2, r1]
+ mov r1, #0x2c
+ mul r1, r2
+ add r2, r5, r1
+ add r1, r0, #0x0
+ sub r1, #0xf8
+ ldrsb r7, [r2, r1]
+ sub r0, #0xf7
+ ldrb r6, [r2, r0]
+ lsl r0, r7, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x20]
+ str r6, [sp, #0x0]
+ mov r1, #0x10
+ str r1, [sp, #0x4]
+ mov r0, #0x6
+ str r0, [sp, #0x8]
+ str r1, [sp, #0xc]
+ ldr r0, [r5, #0x0]
+ ldr r3, [sp, #0x20]
+ mov r1, #0x2
+ mov r2, #0x0
+ bl FUN_02018540
+ str r6, [sp, #0x0]
+ mov r1, #0x10
+ str r1, [sp, #0x4]
+ mov r0, #0x6
+ str r0, [sp, #0x8]
+ str r1, [sp, #0xc]
+ ldr r0, [r5, #0x0]
+ ldr r3, [sp, #0x20]
+ mov r1, #0x1
+ mov r2, #0x0
+ bl FUN_02018540
+ ldr r0, [sp, #0x1c]
+ add r1, r4, r0
+ ldr r0, _02074994 ; =0x00000302
+ ldrb r1, [r1, r0]
+ cmp r1, #0x0
+ bne _02074918
+ add r0, r0, #0x4
+ ldrb r2, [r4, r0]
+ ldr r0, [sp, #0x1c]
+ mov r3, #0x10
+ add r7, r0, #0x0
+ sub r0, r3, r2
+ lsl r0, r0, #0x18
+ mov r1, #0xc0
+ lsr r0, r0, #0x18
+ mul r7, r1
+ str r0, [sp, #0x0]
+ mov r1, #0x6
+ str r1, [sp, #0x4]
+ add r0, r4, r7
+ str r0, [sp, #0x8]
+ str r2, [sp, #0xc]
+ mov r0, #0x0
+ str r0, [sp, #0x10]
+ str r3, [sp, #0x14]
+ str r1, [sp, #0x18]
+ ldr r0, [r5, #0x0]
+ ldr r2, [sp, #0x20]
+ mov r1, #0x2
+ add r3, r6, #0x0
+ bl FUN_02018170
+ ldr r0, _02074998 ; =0x00000306
+ mov r3, #0x10
+ ldrb r2, [r4, r0]
+ mov r1, #0x6
+ sub r0, r3, r2
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ lsl r0, r1, #0x6
+ add r0, r4, r0
+ str r1, [sp, #0x4]
+ add r0, r0, r7
+ str r0, [sp, #0x8]
+ str r2, [sp, #0xc]
+ mov r0, #0x0
+ str r0, [sp, #0x10]
+ str r3, [sp, #0x14]
+ str r1, [sp, #0x18]
+ ldr r0, [r5, #0x0]
+ ldr r2, [sp, #0x20]
+ mov r1, #0x1
+ add r3, r6, #0x0
+ bl FUN_02018170
+ add sp, #0x28
+ pop {r3-r7, pc}
+_02074918:
+ ldr r1, [sp, #0x1c]
+ mov r2, #0xc0
+ mul r2, r1
+ str r2, [sp, #0x24]
+ add r0, r0, #0x4
+ ldrb r2, [r4, r0]
+ mov r3, #0x10
+ ldr r1, [sp, #0x24]
+ sub r0, r3, r2
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x6
+ str r0, [sp, #0x4]
+ add r1, r4, r1
+ str r1, [sp, #0x8]
+ mov r1, #0x0
+ str r1, [sp, #0xc]
+ str r1, [sp, #0x10]
+ str r3, [sp, #0x14]
+ add r2, r7, r2
+ str r0, [sp, #0x18]
+ lsl r2, r2, #0x18
+ ldr r0, [r5, #0x0]
+ mov r1, #0x2
+ lsr r2, r2, #0x18
+ add r3, r6, #0x0
+ bl FUN_02018170
+ ldr r0, _02074998 ; =0x00000306
+ ldrb r2, [r4, r0]
+ mov r0, #0x10
+ sub r0, r0, r2
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x6
+ lsl r1, r0, #0x6
+ add r3, r4, r1
+ ldr r1, [sp, #0x24]
+ add r2, r7, r2
+ add r1, r3, r1
+ str r0, [sp, #0x4]
+ str r1, [sp, #0x8]
+ mov r1, #0x0
+ str r1, [sp, #0xc]
+ str r1, [sp, #0x10]
+ mov r1, #0x10
+ str r1, [sp, #0x14]
+ str r0, [sp, #0x18]
+ lsl r2, r2, #0x18
+ ldr r0, [r5, #0x0]
+ mov r1, #0x1
+ lsr r2, r2, #0x18
+ add r3, r6, #0x0
+ bl FUN_02018170
+ add sp, #0x28
+ pop {r3-r7, pc}
+ nop
+_02074990: .word 0x0000080C
+_02074994: .word 0x00000302
+_02074998: .word 0x00000306
+
+ thumb_func_start FUN_0207499C
+FUN_0207499C: ; 0x0207499C
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldr r0, _02074AE0 ; =0x0000080C
+ add r4, r1, #0x0
+ add r1, r5, r0
+ mov r0, #0x3
+ lsl r0, r0, #0x8
+ add r6, r1, r0
+ ldrb r0, [r6, r4]
+ add r7, r2, #0x0
+ add r2, sp, #0x0
+ lsl r0, r0, #0x2
+ add r1, r5, r0
+ mov r0, #0x5b
+ lsl r0, r0, #0x4
+ ldr r0, [r1, r0]
+ add r1, sp, #0x0
+ add r1, #0x2
+ bl FUN_0200C75C
+ cmp r7, #0x0
+ ldr r0, _02074AE4 ; =0x00000716
+ bne _02074A04
+ ldrb r3, [r6, r4]
+ mov r7, #0x2c
+ add r2, r5, r0
+ add r1, r3, #0x0
+ mul r1, r7
+ ldrsh r3, [r2, r1]
+ sub r3, #0x8
+ strh r3, [r2, r1]
+ ldrb r3, [r6, r4]
+ add r1, r0, #0x4
+ add r2, r5, r1
+ add r1, r3, #0x0
+ mul r1, r7
+ ldrsh r3, [r2, r1]
+ add r0, #0x8
+ add r0, r5, r0
+ sub r3, #0x8
+ strh r3, [r2, r1]
+ ldrb r1, [r6, r4]
+ add r2, r1, #0x0
+ mul r2, r7
+ ldrsh r1, [r0, r2]
+ sub r1, #0x8
+ strh r1, [r0, r2]
+ add r1, sp, #0x0
+ mov r0, #0x2
+ ldrsh r0, [r1, r0]
+ sub r0, #0x8
+ b _02074A3C
+_02074A04:
+ ldrb r3, [r6, r4]
+ mov r7, #0x2c
+ add r2, r5, r0
+ add r1, r3, #0x0
+ mul r1, r7
+ ldrsh r3, [r2, r1]
+ add r3, #0x8
+ strh r3, [r2, r1]
+ ldrb r3, [r6, r4]
+ add r1, r0, #0x4
+ add r2, r5, r1
+ add r1, r3, #0x0
+ mul r1, r7
+ ldrsh r3, [r2, r1]
+ add r0, #0x8
+ add r0, r5, r0
+ add r3, #0x8
+ strh r3, [r2, r1]
+ ldrb r1, [r6, r4]
+ add r2, r1, #0x0
+ mul r2, r7
+ ldrsh r1, [r0, r2]
+ add r1, #0x8
+ strh r1, [r0, r2]
+ add r1, sp, #0x0
+ mov r0, #0x2
+ ldrsh r0, [r1, r0]
+ add r0, #0x8
+_02074A3C:
+ strh r0, [r1, #0x2]
+ ldrb r1, [r6, r4]
+ mov r0, #0x2c
+ ldr r2, _02074AE8 ; =0x00000724
+ mul r0, r1
+ add r3, r5, r0
+ add r1, r2, #0x0
+ ldr r0, [r3, r2]
+ sub r1, #0xe
+ sub r2, #0xc
+ ldrsh r1, [r3, r1]
+ ldrsh r2, [r3, r2]
+ bl FUN_0200C6E4
+ ldrb r2, [r6, r4]
+ mov r0, #0x2c
+ ldr r3, _02074AEC ; =0x0000071A
+ add r1, r2, #0x0
+ add r2, #0xa
+ mul r1, r0
+ lsl r0, r2, #0x2
+ add r2, r5, r0
+ mov r0, #0x5b
+ lsl r0, r0, #0x4
+ ldr r0, [r2, r0]
+ add r2, r5, r1
+ ldrsh r1, [r2, r3]
+ add r3, r3, #0x2
+ ldrsh r2, [r2, r3]
+ bl FUN_0200C6E4
+ ldrb r2, [r6, r4]
+ mov r0, #0x2c
+ ldr r3, _02074AF0 ; =0x0000071E
+ add r1, r2, #0x0
+ add r2, #0x10
+ mul r1, r0
+ lsl r0, r2, #0x2
+ add r2, r5, r0
+ mov r0, #0x5b
+ lsl r0, r0, #0x4
+ ldr r0, [r2, r0]
+ add r2, r5, r1
+ ldrsh r1, [r2, r3]
+ add r3, r3, #0x2
+ ldrsh r2, [r2, r3]
+ bl FUN_0200C6E4
+ ldrb r2, [r6, r4]
+ mov r0, #0x2c
+ ldr r3, _02074AF0 ; =0x0000071E
+ add r1, r2, #0x0
+ add r2, #0x16
+ mul r1, r0
+ lsl r0, r2, #0x2
+ add r2, r5, r0
+ mov r0, #0x5b
+ lsl r0, r0, #0x4
+ ldr r0, [r2, r0]
+ add r2, r5, r1
+ ldrsh r1, [r2, r3]
+ add r3, r3, #0x2
+ ldrsh r2, [r2, r3]
+ add r1, #0x8
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ bl FUN_0200C6E4
+ ldrb r0, [r6, r4]
+ add r3, sp, #0x0
+ mov r2, #0x0
+ lsl r0, r0, #0x2
+ add r1, r5, r0
+ mov r0, #0x5b
+ lsl r0, r0, #0x4
+ ldr r0, [r1, r0]
+ mov r1, #0x2
+ ldrsh r1, [r3, r1]
+ ldrsh r2, [r3, r2]
+ bl FUN_0200C6E4
+ pop {r3-r7, pc}
+ .balign 4
+_02074AE0: .word 0x0000080C
+_02074AE4: .word 0x00000716
+_02074AE8: .word 0x00000724
+_02074AEC: .word 0x0000071A
+_02074AF0: .word 0x0000071E
+
+ thumb_func_start FUN_02074AF4
+FUN_02074AF4: ; 0x02074AF4
+ push {r4-r7, lr}
+ sub sp, #0x1c
+ add r5, r0, #0x0
+ ldr r0, _02074DD0 ; =0x0000080C
+ mov r1, #0x2c
+ add r4, r5, r0
+ mov r0, #0xc
+ bl FUN_02016998
+ add r7, r0, #0x0
+ mov r0, #0x3
+ lsl r0, r0, #0x8
+ ldrb r1, [r4, r0]
+ mov r0, #0x2c
+ add r3, r7, #0x0
+ mul r0, r1
+ add r1, r5, r0
+ mov r0, #0x7
+ lsl r0, r0, #0x8
+ add r6, r1, r0
+ mov r2, #0x5
+_02074B1E:
+ ldmia r6!, {r0-r1}
+ stmia r3!, {r0-r1}
+ sub r2, r2, #0x1
+ bne _02074B1E
+ ldr r0, [r6, #0x0]
+ mov r1, #0x3
+ lsl r1, r1, #0x8
+ str r0, [r3, #0x0]
+ ldrb r0, [r4, r1]
+ add r1, r1, #0x1
+ ldrb r1, [r4, r1]
+ mov r2, #0x2c
+ add r3, r0, #0x0
+ mul r3, r2
+ mul r2, r1
+ mov r1, #0x7
+ add r0, r5, r3
+ lsl r1, r1, #0x8
+ add r2, r5, r2
+ add r6, r2, r1
+ add r3, r0, r1
+ mov r2, #0x5
+_02074B4A:
+ ldmia r6!, {r0-r1}
+ stmia r3!, {r0-r1}
+ sub r2, r2, #0x1
+ bne _02074B4A
+ ldr r0, [r6, #0x0]
+ add r6, r7, #0x0
+ str r0, [r3, #0x0]
+ ldr r0, _02074DD4 ; =0x00000301
+ mov r2, #0x5
+ ldrb r1, [r4, r0]
+ mov r0, #0x2c
+ mul r0, r1
+ add r1, r5, r0
+ mov r0, #0x7
+ lsl r0, r0, #0x8
+ add r3, r1, r0
+_02074B6A:
+ ldmia r6!, {r0-r1}
+ stmia r3!, {r0-r1}
+ sub r2, r2, #0x1
+ bne _02074B6A
+ ldr r0, [r6, #0x0]
+ add r1, r7, #0x0
+ str r0, [r3, #0x0]
+ mov r0, #0xc
+ bl FUN_02016A8C
+ mov r1, #0x3
+ lsl r1, r1, #0x8
+ ldrb r3, [r4, r1]
+ ldr r0, _02074DD8 ; =0x00000716
+ add r2, r5, r0
+ mov r0, #0x2c
+ add r7, r3, #0x0
+ mul r7, r0
+ ldrsh r3, [r2, r7]
+ str r3, [sp, #0x0]
+ add r3, r1, #0x1
+ ldrb r3, [r4, r3]
+ add r6, r3, #0x0
+ mul r6, r0
+ ldr r3, _02074DD8 ; =0x00000716
+ add r6, r5, r6
+ ldrsh r3, [r6, r3]
+ strh r3, [r2, r7]
+ add r2, r1, #0x1
+ ldrb r2, [r4, r2]
+ add r3, r2, #0x0
+ mul r3, r0
+ add r6, r5, r3
+ ldr r3, [sp, #0x0]
+ ldr r2, _02074DD8 ; =0x00000716
+ strh r3, [r6, r2]
+ add r2, r2, #0x2
+ add r3, r5, r2
+ ldrb r2, [r4, r1]
+ add r7, r2, #0x0
+ mul r7, r0
+ ldrsh r2, [r3, r7]
+ str r2, [sp, #0x4]
+ add r2, r1, #0x1
+ ldrb r2, [r4, r2]
+ add r6, r2, #0x0
+ mul r6, r0
+ add r2, r5, r6
+ ldr r6, _02074DD8 ; =0x00000716
+ add r6, r6, #0x2
+ ldrsh r2, [r2, r6]
+ strh r2, [r3, r7]
+ add r2, r1, #0x1
+ ldrb r2, [r4, r2]
+ add r3, r2, #0x0
+ mul r3, r0
+ add r2, r5, r3
+ ldr r3, _02074DD8 ; =0x00000716
+ add r6, r3, #0x2
+ ldr r3, [sp, #0x4]
+ strh r3, [r2, r6]
+ ldr r2, _02074DD8 ; =0x00000716
+ add r2, r2, #0x4
+ add r3, r5, r2
+ ldrb r2, [r4, r1]
+ add r7, r2, #0x0
+ mul r7, r0
+ ldrsh r2, [r3, r7]
+ str r2, [sp, #0x8]
+ add r2, r1, #0x1
+ ldrb r2, [r4, r2]
+ add r6, r2, #0x0
+ mul r6, r0
+ add r2, r5, r6
+ ldr r6, _02074DD8 ; =0x00000716
+ add r6, r6, #0x4
+ ldrsh r2, [r2, r6]
+ strh r2, [r3, r7]
+ add r2, r1, #0x1
+ ldrb r2, [r4, r2]
+ add r3, r2, #0x0
+ mul r3, r0
+ add r2, r5, r3
+ ldr r3, _02074DD8 ; =0x00000716
+ add r6, r3, #0x4
+ ldr r3, [sp, #0x8]
+ strh r3, [r2, r6]
+ ldr r2, _02074DD8 ; =0x00000716
+ add r2, r2, #0x6
+ add r3, r5, r2
+ ldrb r2, [r4, r1]
+ add r7, r2, #0x0
+ mul r7, r0
+ ldrsh r2, [r3, r7]
+ str r2, [sp, #0xc]
+ add r2, r1, #0x1
+ ldrb r2, [r4, r2]
+ add r6, r2, #0x0
+ mul r6, r0
+ add r2, r5, r6
+ ldr r6, _02074DD8 ; =0x00000716
+ add r6, r6, #0x6
+ ldrsh r2, [r2, r6]
+ strh r2, [r3, r7]
+ add r2, r1, #0x1
+ ldrb r2, [r4, r2]
+ add r3, r2, #0x0
+ mul r3, r0
+ add r2, r5, r3
+ ldr r3, _02074DD8 ; =0x00000716
+ add r6, r3, #0x6
+ ldr r3, [sp, #0xc]
+ strh r3, [r2, r6]
+ ldr r2, _02074DD8 ; =0x00000716
+ add r2, #0x8
+ add r6, r5, r2
+ ldrb r2, [r4, r1]
+ add r7, r2, #0x0
+ mul r7, r0
+ ldrsh r2, [r6, r7]
+ str r2, [sp, #0x10]
+ add r2, r1, #0x1
+ ldrb r2, [r4, r2]
+ add r3, r2, #0x0
+ mul r3, r0
+ add r2, r5, r3
+ ldr r3, _02074DD8 ; =0x00000716
+ add r3, #0x8
+ ldrsh r2, [r2, r3]
+ strh r2, [r6, r7]
+ add r2, r1, #0x1
+ ldrb r2, [r4, r2]
+ add r3, r2, #0x0
+ mul r3, r0
+ add r6, r5, r3
+ ldr r3, _02074DD8 ; =0x00000716
+ ldr r2, [sp, #0x10]
+ add r3, #0x8
+ strh r2, [r6, r3]
+ ldr r2, _02074DD8 ; =0x00000716
+ add r2, #0xa
+ add r6, r5, r2
+ ldrb r2, [r4, r1]
+ add r7, r2, #0x0
+ mul r7, r0
+ ldrsh r2, [r6, r7]
+ str r2, [sp, #0x14]
+ add r2, r1, #0x1
+ ldrb r2, [r4, r2]
+ add r3, r2, #0x0
+ mul r3, r0
+ add r2, r5, r3
+ ldr r3, _02074DD8 ; =0x00000716
+ add r3, #0xa
+ ldrsh r2, [r2, r3]
+ strh r2, [r6, r7]
+ add r2, r1, #0x1
+ ldrb r2, [r4, r2]
+ add r3, r2, #0x0
+ mul r3, r0
+ add r6, r5, r3
+ ldr r3, _02074DD8 ; =0x00000716
+ ldr r2, [sp, #0x14]
+ add r3, #0xa
+ strh r2, [r6, r3]
+ ldr r2, _02074DD8 ; =0x00000716
+ sub r2, r2, #0x2
+ add r3, r5, r2
+ ldrb r2, [r4, r1]
+ add r7, r2, #0x0
+ mul r7, r0
+ ldrsb r2, [r3, r7]
+ str r2, [sp, #0x18]
+ add r2, r1, #0x1
+ ldrb r2, [r4, r2]
+ add r6, r2, #0x0
+ mul r6, r0
+ add r2, r5, r6
+ ldr r6, _02074DD8 ; =0x00000716
+ sub r6, r6, #0x2
+ ldrsb r2, [r2, r6]
+ strb r2, [r3, r7]
+ add r2, r1, #0x1
+ ldrb r2, [r4, r2]
+ add r3, r2, #0x0
+ mul r3, r0
+ add r2, r5, r3
+ ldr r3, _02074DD8 ; =0x00000716
+ sub r6, r3, #0x2
+ ldr r3, [sp, #0x18]
+ strb r3, [r2, r6]
+ ldr r2, _02074DD8 ; =0x00000716
+ sub r2, r2, #0x1
+ add r6, r5, r2
+ ldrb r2, [r4, r1]
+ add r7, r2, #0x0
+ mul r7, r0
+ ldrsb r2, [r6, r7]
+ mov r12, r2
+ add r2, r1, #0x1
+ ldrb r2, [r4, r2]
+ add r3, r2, #0x0
+ ldr r2, _02074DD8 ; =0x00000716
+ mul r3, r0
+ add r3, r5, r3
+ sub r2, r2, #0x1
+ ldrsb r2, [r3, r2]
+ strb r2, [r6, r7]
+ add r2, r1, #0x1
+ ldrb r2, [r4, r2]
+ mul r0, r2
+ ldr r2, _02074DD8 ; =0x00000716
+ add r0, r5, r0
+ sub r3, r2, #0x1
+ mov r2, r12
+ strb r2, [r0, r3]
+ ldrb r1, [r4, r1]
+ add r0, r5, #0x0
+ bl FUN_02072D1C
+ ldr r1, _02074DD4 ; =0x00000301
+ add r0, r5, #0x0
+ ldrb r1, [r4, r1]
+ bl FUN_02072D1C
+ mov r1, #0x3
+ lsl r1, r1, #0x8
+ ldrb r1, [r4, r1]
+ add r0, r5, #0x0
+ bl FUN_02072E14
+ ldr r1, _02074DD4 ; =0x00000301
+ add r0, r5, #0x0
+ ldrb r1, [r4, r1]
+ bl FUN_02072E14
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_02074DE4
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_02074DE4
+ mov r0, #0x3
+ lsl r0, r0, #0x8
+ ldrb r1, [r4, r0]
+ mov r2, #0x2c
+ add r0, r5, #0x0
+ mul r2, r1
+ add r3, r5, r2
+ ldr r2, _02074DDC ; =0x0000070E
+ ldrh r2, [r3, r2]
+ lsl r2, r2, #0x14
+ lsr r2, r2, #0x14
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+ bl FUN_02073A4C
+ ldr r0, _02074DD4 ; =0x00000301
+ mov r2, #0x2c
+ ldrb r1, [r4, r0]
+ add r0, r5, #0x0
+ mul r2, r1
+ add r3, r5, r2
+ ldr r2, _02074DDC ; =0x0000070E
+ ldrh r2, [r3, r2]
+ lsl r2, r2, #0x14
+ lsr r2, r2, #0x14
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+ bl FUN_02073A4C
+ mov r0, #0x3
+ lsl r0, r0, #0x8
+ ldrb r1, [r4, r0]
+ mov r2, #0x2c
+ add r0, r5, #0x0
+ mul r2, r1
+ add r3, r5, r2
+ ldr r2, _02074DE0 ; =0x0000070C
+ ldrh r2, [r3, r2]
+ bl FUN_02073A78
+ ldr r0, _02074DD4 ; =0x00000301
+ mov r2, #0x2c
+ ldrb r1, [r4, r0]
+ add r0, r5, #0x0
+ mul r2, r1
+ add r3, r5, r2
+ ldr r2, _02074DE0 ; =0x0000070C
+ ldrh r2, [r3, r2]
+ bl FUN_02073A78
+ mov r1, #0x3
+ lsl r1, r1, #0x8
+ ldrb r1, [r4, r1]
+ add r0, r5, #0x0
+ bl FUN_02073B3C
+ ldr r1, _02074DD4 ; =0x00000301
+ add r0, r5, #0x0
+ ldrb r1, [r4, r1]
+ bl FUN_02073B3C
+ add sp, #0x1c
+ pop {r4-r7, pc}
+ .balign 4
+_02074DD0: .word 0x0000080C
+_02074DD4: .word 0x00000301
+_02074DD8: .word 0x00000716
+_02074DDC: .word 0x0000070E
+_02074DE0: .word 0x0000070C
+
+ thumb_func_start FUN_02074DE4
+FUN_02074DE4: ; 0x02074DE4
+ push {r3-r7, lr}
+ add r7, r1, #0x0
+ ldr r1, _02074E6C ; =0x0000080C
+ add r6, r0, #0x0
+ add r4, r6, r1
+ mov r1, #0xc0
+ mul r1, r7
+ add r5, r4, r1
+ bl FUN_020703BC
+ add r3, r0, #0x0
+ mov r0, #0x3
+ add r1, r4, r7
+ lsl r0, r0, #0x8
+ ldrb r1, [r1, r0]
+ mov r0, #0x2c
+ mul r0, r1
+ add r1, r6, r0
+ mov r0, #0x71
+ lsl r0, r0, #0x4
+ ldrb r0, [r1, r0]
+ cmp r0, #0x1
+ bne _02074E3C
+ mov r3, #0xf
+ mov r1, #0x0
+ lsl r3, r3, #0xc
+ mov r4, #0x17
+_02074E1A:
+ lsl r0, r1, #0x1
+ add r2, r5, r0
+ add r2, #0x6c
+ ldrh r2, [r2, #0x0]
+ add r0, r5, r0
+ add r0, #0x6c
+ and r2, r3
+ lsl r2, r2, #0x10
+ lsr r2, r2, #0x10
+ orr r2, r4
+ strh r2, [r0, #0x0]
+ add r0, r1, #0x1
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ cmp r1, #0x9
+ blo _02074E1A
+ pop {r3-r7, pc}
+_02074E3C:
+ mov r6, #0xf
+ ldr r0, _02074E70 ; =0x00000FFF
+ mov r4, #0x0
+ lsl r6, r6, #0xc
+_02074E44:
+ lsl r2, r4, #0x1
+ add r1, r5, r2
+ add r1, #0x6c
+ ldrh r1, [r1, #0x0]
+ ldrh r7, [r3, r2]
+ and r1, r6
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ and r7, r0
+ orr r7, r1
+ add r1, r5, r2
+ add r1, #0x6c
+ strh r7, [r1, #0x0]
+ add r1, r4, #0x1
+ lsl r1, r1, #0x10
+ lsr r4, r1, #0x10
+ cmp r4, #0x9
+ blo _02074E44
+ pop {r3-r7, pc}
+ nop
+_02074E6C: .word 0x0000080C
+_02074E70: .word 0x00000FFF
+
+ thumb_func_start FUN_02074E74
+FUN_02074E74: ; 0x02074E74
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ mov r0, #0x85
+ lsl r0, r0, #0x2
+ add r6, r1, #0x0
+ add r0, r5, r0
+ mov r1, #0x1
+ bl FUN_0200D0E0
+ add r0, r5, #0x0
+ bl FUN_02073DB4
+ ldr r0, _02074F5C ; =0x000005A4
+ mov r4, #0x0
+ ldr r0, [r5, r0]
+ add r1, r0, #0x0
+ add r1, #0x32
+ ldrb r1, [r1, #0x0]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x1c
+ beq _02074EFA
+_02074E9E:
+ add r2, r0, r4
+ add r2, #0x2c
+ ldrb r2, [r2, #0x0]
+ cmp r2, #0x0
+ bne _02074EF0
+ ldr r1, _02074F60 ; =0x00000B25
+ add r0, r0, r4
+ ldrb r2, [r5, r1]
+ add r0, #0x2c
+ add r2, r2, #0x1
+ strb r2, [r0, #0x0]
+ ldrb r1, [r5, r1]
+ add r0, r5, #0x0
+ bl FUN_02073024
+ add r0, r5, #0x0
+ mov r1, #0x22
+ mov r2, #0x1
+ bl FUN_020731C0
+ ldr r0, _02074F64 ; =0x000005C8
+ mov r1, #0x0
+ ldr r0, [r5, r0]
+ bl FUN_0200C664
+ ldr r0, _02074F5C ; =0x000005A4
+ ldr r0, [r5, r0]
+ add r0, #0x32
+ ldrb r0, [r0, #0x0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1c
+ sub r0, r0, #0x1
+ cmp r4, r0
+ bne _02074EEA
+ add r0, r5, #0x0
+ mov r1, #0x6
+ bl FUN_02070E60
+_02074EEA:
+ mov r0, #0x1
+ str r0, [r6, #0x0]
+ pop {r4-r6, pc}
+_02074EF0:
+ add r2, r4, #0x1
+ lsl r2, r2, #0x18
+ lsr r4, r2, #0x18
+ cmp r4, r1
+ blo _02074E9E
+_02074EFA:
+ cmp r1, #0x5
+ bhi _02074F50
+ add r0, r1, r1
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02074F0A: ; jump table (using 16-bit offset)
+ .short _02074F50 - _02074F0A - 2; case 0
+ .short _02074F16 - _02074F0A - 2; case 1
+ .short _02074F22 - _02074F0A - 2; case 2
+ .short _02074F2E - _02074F0A - 2; case 3
+ .short _02074F3A - _02074F0A - 2; case 4
+ .short _02074F46 - _02074F0A - 2; case 5
+_02074F16:
+ add r0, r5, #0x0
+ mov r1, #0x7b
+ mov r2, #0x1
+ bl FUN_020731E8
+ b _02074F50
+_02074F22:
+ add r0, r5, #0x0
+ mov r1, #0x64
+ mov r2, #0x1
+ bl FUN_020731E8
+ b _02074F50
+_02074F2E:
+ add r0, r5, #0x0
+ mov r1, #0x7c
+ mov r2, #0x1
+ bl FUN_020731E8
+ b _02074F50
+_02074F3A:
+ add r0, r5, #0x0
+ mov r1, #0x7d
+ mov r2, #0x1
+ bl FUN_020731E8
+ b _02074F50
+_02074F46:
+ add r0, r5, #0x0
+ mov r1, #0x7e
+ mov r2, #0x1
+ bl FUN_020731E8
+_02074F50:
+ ldr r0, _02074F68 ; =0x00000B22
+ mov r1, #0x13
+ strb r1, [r5, r0]
+ mov r0, #0x14
+ str r0, [r6, #0x0]
+ pop {r4-r6, pc}
+ .balign 4
+_02074F5C: .word 0x000005A4
+_02074F60: .word 0x00000B25
+_02074F64: .word 0x000005C8
+_02074F68: .word 0x00000B22
+
+ thumb_func_start FUN_02074F6C
+FUN_02074F6C: ; 0x02074F6C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _02074FA4 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x3
+ tst r0, r1
+ beq _02074F9E
+ mov r0, #0x89
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ mov r1, #0x1
+ bl FUN_0200D0E0
+ add r0, r4, #0x0
+ mov r1, #0x22
+ mov r2, #0x1
+ bl FUN_020731C0
+ ldr r0, _02074FA8 ; =0x000005C8
+ mov r1, #0x0
+ ldr r0, [r4, r0]
+ bl FUN_0200C664
+ mov r0, #0x1
+ pop {r4, pc}
+_02074F9E:
+ mov r0, #0x13
+ pop {r4, pc}
+ nop
+_02074FA4: .word 0x021C48B8
+_02074FA8: .word 0x000005C8
+
+ thumb_func_start FUN_02074FAC
+FUN_02074FAC: ; 0x02074FAC
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldr r0, _02075080 ; =0x000005A4
+ str r1, [sp, #0x0]
+ ldr r1, [r5, r0]
+ mov r4, #0x0
+ add r0, r1, #0x0
+ add r0, #0x32
+ ldrb r0, [r0, #0x0]
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x1c
+ beq _0207502C
+ ldr r0, _02075084 ; =0x00000B25
+ ldrb r0, [r5, r0]
+ add r0, r0, #0x1
+_02074FCA:
+ add r3, r1, r4
+ add r3, #0x2c
+ ldrb r3, [r3, #0x0]
+ cmp r0, r3
+ bne _02075022
+ add r0, r1, r4
+ mov r2, #0x0
+ add r0, #0x2c
+ strb r2, [r0, #0x0]
+ ldr r0, _02075080 ; =0x000005A4
+ ldr r6, [r5, r0]
+ add r0, r6, #0x0
+ add r0, #0x32
+ ldrb r0, [r0, #0x0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1c
+ sub r0, r0, #0x1
+ cmp r4, r0
+ bge _0207502C
+ ldr r0, _02075080 ; =0x000005A4
+ add r1, r0, #0x0
+_02074FF4:
+ add r3, r6, r4
+ add r3, #0x2d
+ ldrb r3, [r3, #0x0]
+ add r6, r6, r4
+ add r6, #0x2c
+ strb r3, [r6, #0x0]
+ ldr r3, [r5, r0]
+ add r3, r3, r4
+ add r3, #0x2d
+ strb r2, [r3, #0x0]
+ add r3, r4, #0x1
+ lsl r3, r3, #0x18
+ ldr r6, [r5, r1]
+ lsr r4, r3, #0x18
+ add r3, r6, #0x0
+ add r3, #0x32
+ ldrb r3, [r3, #0x0]
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x1c
+ sub r3, r3, #0x1
+ cmp r4, r3
+ blt _02074FF4
+ b _0207502C
+_02075022:
+ add r3, r4, #0x1
+ lsl r3, r3, #0x18
+ lsr r4, r3, #0x18
+ cmp r4, r2
+ blo _02074FCA
+_0207502C:
+ ldr r6, _02075088 ; =0x00000729
+ mov r4, #0x0
+ mov r7, #0x2c
+_02075032:
+ add r0, r4, #0x0
+ mul r0, r7
+ add r0, r5, r0
+ ldrb r0, [r0, r6]
+ cmp r0, #0x0
+ beq _02075046
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02073024
+_02075046:
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0x6
+ blo _02075032
+ mov r0, #0x85
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ mov r1, #0x1
+ bl FUN_0200D0E0
+ add r0, r5, #0x0
+ bl FUN_02073DB4
+ add r0, r5, #0x0
+ mov r1, #0x1d
+ mov r2, #0x1
+ bl FUN_020731C0
+ ldr r0, _0207508C ; =0x000005C8
+ mov r1, #0x0
+ ldr r0, [r5, r0]
+ bl FUN_0200C664
+ ldr r0, [sp, #0x0]
+ mov r1, #0x1
+ str r1, [r0, #0x0]
+ pop {r3-r7, pc}
+ nop
+_02075080: .word 0x000005A4
+_02075084: .word 0x00000B25
+_02075088: .word 0x00000729
+_0207508C: .word 0x000005C8
+
+ thumb_func_start FUN_02075090
+FUN_02075090: ; 0x02075090
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, _020750B8 ; =0x000005A4
+ add r4, r1, #0x0
+ ldr r0, [r5, r0]
+ mov r1, #0x0
+ add r0, #0x23
+ strb r1, [r0, #0x0]
+ ldr r0, _020750BC ; =0x000006FC
+ ldr r0, [r5, r0]
+ bl FUN_02001C5C
+ ldr r0, _020750C0 ; =0x000006F8
+ ldr r0, [r5, r0]
+ bl FUN_02012870
+ mov r0, #0x1b
+ str r0, [r4, #0x0]
+ pop {r3-r5, pc}
+ nop
+_020750B8: .word 0x000005A4
+_020750BC: .word 0x000006FC
+_020750C0: .word 0x000006F8
+
+ thumb_func_start FUN_020750C4
+FUN_020750C4: ; 0x020750C4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, _020750EC ; =0x000005A4
+ add r4, r1, #0x0
+ ldr r0, [r5, r0]
+ mov r1, #0x1
+ add r0, #0x23
+ strb r1, [r0, #0x0]
+ ldr r0, _020750F0 ; =0x000006FC
+ mov r1, #0x0
+ ldr r0, [r5, r0]
+ bl FUN_02001C5C
+ ldr r0, _020750F4 ; =0x000006F8
+ ldr r0, [r5, r0]
+ bl FUN_02012870
+ mov r0, #0x1b
+ str r0, [r4, #0x0]
+ pop {r3-r5, pc}
+ .balign 4
+_020750EC: .word 0x000005A4
+_020750F0: .word 0x000006FC
+_020750F4: .word 0x000006F8
+
+ thumb_func_start FUN_020750F8
+FUN_020750F8: ; 0x020750F8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_02073DB4
+ mov r0, #0x85
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ mov r1, #0x1
+ bl FUN_0200D0E0
+ add r0, r5, #0x0
+ bl FUN_02075118
+ str r0, [r4, #0x0]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02075118
+FUN_02075118: ; 0x02075118
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _02075190 ; =0x000005A4
+ ldr r1, _02075194 ; =0x00000B25
+ ldr r0, [r4, r0]
+ ldrb r1, [r4, r1]
+ ldr r0, [r0, #0x0]
+ bl FUN_0206B9B0
+ mov r1, #0xa1
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ ldr r2, _02075198 ; =0x0000069C
+ bne _0207515C
+ ldr r0, [r4, r2]
+ add r2, #0x8
+ ldr r2, [r4, r2]
+ mov r1, #0x81
+ bl FUN_0200A8E0
+ ldr r0, _02075194 ; =0x00000B25
+ ldrb r0, [r4, r0]
+ add r0, #0x16
+ lsl r0, r0, #0x2
+ add r1, r4, r0
+ mov r0, #0x5b
+ lsl r0, r0, #0x4
+ ldr r0, [r1, r0]
+ mov r1, #0x1
+ bl FUN_020200A0
+ b _0207516E
+_0207515C:
+ ldr r0, [r4, r2]
+ add r2, #0x8
+ ldr r2, [r4, r2]
+ mov r1, #0x82
+ bl FUN_0200A8E0
+ ldr r0, _02075194 ; =0x00000B25
+ mov r1, #0x7
+ strb r1, [r4, r0]
+_0207516E:
+ mov r1, #0x0
+ add r0, r4, #0x0
+ mvn r1, r1
+ mov r2, #0x1
+ bl FUN_020731E8
+ ldr r0, _02075190 ; =0x000005A4
+ mov r1, #0x0
+ ldr r0, [r4, r0]
+ add r0, #0x23
+ strb r1, [r0, #0x0]
+ ldr r0, _0207519C ; =0x00000B22
+ mov r1, #0x15
+ strb r1, [r4, r0]
+ mov r0, #0x14
+ pop {r4, pc}
+ nop
+_02075190: .word 0x000005A4
+_02075194: .word 0x00000B25
+_02075198: .word 0x0000069C
+_0207519C: .word 0x00000B22
+
+ thumb_func_start FUN_020751A0
+FUN_020751A0: ; 0x020751A0
+ push {r4-r6, lr}
+ add r6, r1, #0x0
+ add r4, r0, #0x0
+ ldr r1, _02075234 ; =0x000005A4
+ mov r0, #0x1
+ ldr r1, [r4, r1]
+ add r1, #0x23
+ ldrb r1, [r1, #0x0]
+ sub r1, #0xb
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ bl FUN_02063948
+ add r1, r0, #0x0
+ beq _020751C8
+ ldr r0, _02075234 ; =0x000005A4
+ ldr r0, [r4, r0]
+ ldr r0, [r0, #0x18]
+ blx r1
+ b _020751CA
+_020751C8:
+ mov r0, #0x1
+_020751CA:
+ cmp r0, #0x4
+ bhi _0207520A
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_020751DA: ; jump table (using 16-bit offset)
+ .short _020751E4 - _020751DA - 2; case 0
+ .short _020751FC - _020751DA - 2; case 1
+ .short _02075200 - _020751DA - 2; case 2
+ .short _02075204 - _020751DA - 2; case 3
+ .short _02075208 - _020751DA - 2; case 4
+_020751E4:
+ ldr r0, _02075238 ; =0x000006FC
+ mov r1, #0x0
+ ldr r0, [r4, r0]
+ bl FUN_02001C5C
+ ldr r0, _0207523C ; =0x000006F8
+ ldr r0, [r4, r0]
+ bl FUN_02012870
+ mov r0, #0x1b
+ str r0, [r6, #0x0]
+ pop {r4-r6, pc}
+_020751FC:
+ mov r5, #0x68
+ b _0207520A
+_02075200:
+ mov r5, #0x4c
+ b _0207520A
+_02075204:
+ mov r5, #0xc4
+ b _0207520A
+_02075208:
+ mov r5, #0x66
+_0207520A:
+ mov r0, #0x85
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ mov r1, #0x1
+ bl FUN_0200D0E0
+ add r0, r4, #0x0
+ bl FUN_02073DB4
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ mov r2, #0x1
+ bl FUN_020731E8
+ ldr r0, _02075240 ; =0x00000B22
+ mov r1, #0x3
+ strb r1, [r4, r0]
+ mov r0, #0x14
+ str r0, [r6, #0x0]
+ pop {r4-r6, pc}
+ nop
+_02075234: .word 0x000005A4
+_02075238: .word 0x000006FC
+_0207523C: .word 0x000006F8
+_02075240: .word 0x00000B22
+
+ thumb_func_start FUN_02075244
+FUN_02075244: ; 0x02075244
+ ldr r2, _02075254 ; =0x000005A4
+ mov r3, #0xb
+ ldr r2, [r0, r2]
+ add r2, #0x23
+ strb r3, [r2, #0x0]
+ ldr r3, _02075258 ; =FUN_020751A0
+ bx r3
+ nop
+_02075254: .word 0x000005A4
+_02075258: .word FUN_020751A0
+
+ thumb_func_start FUN_0207525C
+FUN_0207525C: ; 0x0207525C
+ ldr r2, _0207526C ; =0x000005A4
+ mov r3, #0x10
+ ldr r2, [r0, r2]
+ add r2, #0x23
+ strb r3, [r2, #0x0]
+ ldr r3, _02075270 ; =FUN_020751A0
+ bx r3
+ nop
+_0207526C: .word 0x000005A4
+_02075270: .word FUN_020751A0
+
+ thumb_func_start FUN_02075274
+FUN_02075274: ; 0x02075274
+ ldr r2, _02075284 ; =0x000005A4
+ mov r3, #0xe
+ ldr r2, [r0, r2]
+ add r2, #0x23
+ strb r3, [r2, #0x0]
+ ldr r3, _02075288 ; =FUN_020751A0
+ bx r3
+ nop
+_02075284: .word 0x000005A4
+_02075288: .word FUN_020751A0
+
+ thumb_func_start FUN_0207528C
+FUN_0207528C: ; 0x0207528C
+ ldr r2, _0207529C ; =0x000005A4
+ mov r3, #0xd
+ ldr r2, [r0, r2]
+ add r2, #0x23
+ strb r3, [r2, #0x0]
+ ldr r3, _020752A0 ; =FUN_020751A0
+ bx r3
+ nop
+_0207529C: .word 0x000005A4
+_020752A0: .word FUN_020751A0
+
+ thumb_func_start FUN_020752A4
+FUN_020752A4: ; 0x020752A4
+ ldr r2, _020752B4 ; =0x000005A4
+ mov r3, #0xf
+ ldr r2, [r0, r2]
+ add r2, #0x23
+ strb r3, [r2, #0x0]
+ ldr r3, _020752B8 ; =FUN_020751A0
+ bx r3
+ nop
+_020752B4: .word 0x000005A4
+_020752B8: .word FUN_020751A0
+
+ thumb_func_start FUN_020752BC
+FUN_020752BC: ; 0x020752BC
+ ldr r2, _020752CC ; =0x000005A4
+ mov r3, #0x12
+ ldr r2, [r0, r2]
+ add r2, #0x23
+ strb r3, [r2, #0x0]
+ ldr r3, _020752D0 ; =FUN_020751A0
+ bx r3
+ nop
+_020752CC: .word 0x000005A4
+_020752D0: .word FUN_020751A0
+
+ thumb_func_start FUN_020752D4
+FUN_020752D4: ; 0x020752D4
+ ldr r2, _020752E4 ; =0x000005A4
+ mov r3, #0xc
+ ldr r2, [r0, r2]
+ add r2, #0x23
+ strb r3, [r2, #0x0]
+ ldr r3, _020752E8 ; =FUN_020751A0
+ bx r3
+ nop
+_020752E4: .word 0x000005A4
+_020752E8: .word FUN_020751A0
+
+ thumb_func_start FUN_020752EC
+FUN_020752EC: ; 0x020752EC
+ ldr r2, _020752FC ; =0x000005A4
+ mov r3, #0x11
+ ldr r2, [r0, r2]
+ add r2, #0x23
+ strb r3, [r2, #0x0]
+ ldr r3, _02075300 ; =FUN_020751A0
+ bx r3
+ nop
+_020752FC: .word 0x000005A4
+_02075300: .word FUN_020751A0
+
+ thumb_func_start FUN_02075304
+FUN_02075304: ; 0x02075304
+ ldr r2, _02075314 ; =0x000005A4
+ mov r3, #0x13
+ ldr r2, [r0, r2]
+ add r2, #0x23
+ strb r3, [r2, #0x0]
+ ldr r3, _02075318 ; =FUN_020751A0
+ bx r3
+ nop
+_02075314: .word 0x000005A4
+_02075318: .word FUN_020751A0
+
+ thumb_func_start FUN_0207531C
+FUN_0207531C: ; 0x0207531C
+ ldr r2, _0207532C ; =0x000005A4
+ mov r3, #0x14
+ ldr r2, [r0, r2]
+ add r2, #0x23
+ strb r3, [r2, #0x0]
+ ldr r3, _02075330 ; =FUN_020751A0
+ bx r3
+ nop
+_0207532C: .word 0x000005A4
+_02075330: .word FUN_020751A0
+
+ thumb_func_start FUN_02075334
+FUN_02075334: ; 0x02075334
+ ldr r2, _02075344 ; =0x000005A4
+ mov r3, #0x15
+ ldr r2, [r0, r2]
+ add r2, #0x23
+ strb r3, [r2, #0x0]
+ ldr r3, _02075348 ; =FUN_020751A0
+ bx r3
+ nop
+_02075344: .word 0x000005A4
+_02075348: .word FUN_020751A0
+
+ thumb_func_start FUN_0207534C
+FUN_0207534C: ; 0x0207534C
+ ldr r2, _0207535C ; =0x000005A4
+ mov r3, #0x16
+ ldr r2, [r0, r2]
+ add r2, #0x23
+ strb r3, [r2, #0x0]
+ ldr r3, _02075360 ; =FUN_020751A0
+ bx r3
+ nop
+_0207535C: .word 0x000005A4
+_02075360: .word FUN_020751A0
+
+ thumb_func_start FUN_02075364
+FUN_02075364: ; 0x02075364
+ ldr r2, _02075374 ; =0x000005A4
+ mov r3, #0x17
+ ldr r2, [r0, r2]
+ add r2, #0x23
+ strb r3, [r2, #0x0]
+ ldr r3, _02075378 ; =FUN_020751A0
+ bx r3
+ nop
+_02075374: .word 0x000005A4
+_02075378: .word FUN_020751A0
+
+ thumb_func_start FUN_0207537C
+FUN_0207537C: ; 0x0207537C
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ add r5, r1, #0x0
+ bl FUN_020753B4
+ str r0, [r5, #0x0]
+ cmp r0, #0x1a
+ bne _02075392
+ ldr r0, _02075394 ; =0x00000B2E
+ mov r1, #0xd
+ strh r1, [r4, r0]
+_02075392:
+ pop {r3-r5, pc}
+ .balign 4
+_02075394: .word 0x00000B2E
+
+ thumb_func_start FUN_02075398
+FUN_02075398: ; 0x02075398
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ add r5, r1, #0x0
+ bl FUN_020753B4
+ str r0, [r5, #0x0]
+ cmp r0, #0x1a
+ bne _020753AE
+ ldr r0, _020753B0 ; =0x00000B2E
+ mov r1, #0xe
+ strh r1, [r4, r0]
+_020753AE:
+ pop {r3-r5, pc}
+ .balign 4
+_020753B0: .word 0x00000B2E
+
+ thumb_func_start FUN_020753B4
+FUN_020753B4: ; 0x020753B4
+ push {r3-r4, lr}
+ sub sp, #0x4
+ add r4, r0, #0x0
+ mov r0, #0x85
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ mov r1, #0x1
+ bl FUN_0200D0E0
+ add r0, r4, #0x0
+ bl FUN_02073DB4
+ ldr r0, _020754A8 ; =0x00000B25
+ ldrb r1, [r4, r0]
+ mov r0, #0x2c
+ mul r0, r1
+ add r1, r4, r0
+ ldr r0, _020754AC ; =0x00000708
+ ldrh r0, [r1, r0]
+ mov r1, #0x5
+ blx _s32_div_f
+ ldr r1, _020754B0 ; =0x00000B28
+ strh r0, [r4, r1]
+ sub r0, r1, #0x3
+ ldrb r2, [r4, r0]
+ mov r0, #0x2c
+ mul r0, r2
+ add r2, r4, r0
+ ldr r0, _020754B4 ; =0x00000706
+ ldrh r2, [r2, r0]
+ ldrh r0, [r4, r1]
+ cmp r2, r0
+ bhi _0207540E
+ add r0, r4, #0x0
+ mov r1, #0x8a
+ mov r2, #0x1
+ bl FUN_020731E8
+ ldr r0, _020754B8 ; =0x00000B22
+ mov r1, #0x3
+ strb r1, [r4, r0]
+ add sp, #0x4
+ mov r0, #0x14
+ pop {r3-r4, pc}
+_0207540E:
+ sub r0, r1, #0x5
+ ldrb r2, [r4, r0]
+ mov r0, #0x40
+ orr r2, r0
+ sub r0, r1, #0x5
+ strb r2, [r4, r0]
+ ldrb r0, [r4, r0]
+ mov r2, #0x3f
+ bic r0, r2
+ sub r2, r1, #0x3
+ ldrb r3, [r4, r2]
+ mov r2, #0x3f
+ and r2, r3
+ orr r2, r0
+ sub r0, r1, #0x5
+ strb r2, [r4, r0]
+ ldr r0, _020754BC ; =0x000005C8
+ mov r1, #0x0
+ ldr r0, [r4, r0]
+ bl FUN_0200C664
+ ldr r0, _020754BC ; =0x000005C8
+ add r1, sp, #0x0
+ ldr r0, [r4, r0]
+ add r1, #0x2
+ add r2, sp, #0x0
+ bl FUN_0200C75C
+ ldr r0, _020754C0 ; =0x000005CC
+ add r3, sp, #0x0
+ mov r1, #0x2
+ mov r2, #0x0
+ ldrsh r1, [r3, r1]
+ ldrsh r2, [r3, r2]
+ ldr r0, [r4, r0]
+ bl FUN_0200C6E4
+ ldr r0, _020754C4 ; =0x000005A4
+ ldr r1, _020754C8 ; =0x00000B23
+ ldr r0, [r4, r0]
+ ldrb r1, [r4, r1]
+ add r0, #0x21
+ ldrb r0, [r0, #0x0]
+ lsl r1, r1, #0x1a
+ lsr r1, r1, #0x1a
+ bl FUN_020714BC
+ add r1, r0, #0x0
+ ldr r0, _020754C0 ; =0x000005CC
+ add r1, r1, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_02020130
+ ldr r0, _020754C0 ; =0x000005CC
+ mov r1, #0x1
+ ldr r0, [r4, r0]
+ bl FUN_020200A0
+ ldr r1, _020754C8 ; =0x00000B23
+ add r0, r4, #0x0
+ ldrb r1, [r4, r1]
+ lsl r1, r1, #0x1a
+ lsr r1, r1, #0x1a
+ bl FUN_020709FC
+ add r0, r4, #0x0
+ mov r1, #0x24
+ mov r2, #0x1
+ bl FUN_020731C0
+ ldr r0, _020754CC ; =0x00000B2A
+ mov r1, #0x0
+ strh r1, [r4, r0]
+ mov r0, #0x1a
+ add sp, #0x4
+ pop {r3-r4, pc}
+ nop
+_020754A8: .word 0x00000B25
+_020754AC: .word 0x00000708
+_020754B0: .word 0x00000B28
+_020754B4: .word 0x00000706
+_020754B8: .word 0x00000B22
+_020754BC: .word 0x000005C8
+_020754C0: .word 0x000005CC
+_020754C4: .word 0x000005A4
+_020754C8: .word 0x00000B23
+_020754CC: .word 0x00000B2A
+
+ thumb_func_start FUN_020754D0
+FUN_020754D0: ; 0x020754D0
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _02075504 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x3
+ tst r1, r0
+ beq _02075500
+ mov r0, #0x89
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ mov r1, #0x1
+ bl FUN_0200D0E0
+ add r0, r4, #0x0
+ mov r1, #0x1d
+ mov r2, #0x1
+ bl FUN_020731C0
+ ldr r0, _02075508 ; =0x000005C8
+ mov r1, #0x0
+ ldr r0, [r4, r0]
+ bl FUN_0200C664
+ mov r0, #0x1
+_02075500:
+ pop {r4, pc}
+ nop
+_02075504: .word 0x021C48B8
+_02075508: .word 0x000005C8
+
+ thumb_func_start FUN_0207550C
+FUN_0207550C: ; 0x0207550C
+ push {r3-r5, lr}
+ mov r1, #0x0
+ mov r2, #0xc
+ bl FUN_0206E710
+ mov r1, #0xe
+ add r4, r0, #0x0
+ bl FUN_0206E7DC
+ cmp r0, #0x1
+ beq _0207552C
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0x1c
+ pop {r3-r5, pc}
+_0207552C:
+ add r0, r4, #0x0
+ mov r1, #0x1b
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ bne _02075580
+ add r0, r4, #0x0
+ mov r1, #0x1c
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ bne _02075580
+ add r0, r4, #0x0
+ mov r1, #0x1d
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ bne _02075580
+ add r0, r4, #0x0
+ mov r1, #0x1e
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ bne _02075580
+ add r0, r4, #0x0
+ mov r1, #0x1f
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ bne _02075580
+ add r0, r4, #0x0
+ mov r1, #0x20
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ bne _02075580
+ add r0, r4, #0x0
+ mov r1, #0x21
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _0207558A
+_02075580:
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0207558A:
+ add r0, r4, #0x0
+ mov r1, #0x18
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _020755A0
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_020755A0:
+ add r0, r4, #0x0
+ mov r1, #0x19
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _020755B6
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0x2
+ pop {r3-r5, pc}
+_020755B6:
+ add r0, r4, #0x0
+ mov r1, #0xf
+ bl FUN_0206E7DC
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x10
+ bl FUN_0206E7DC
+ lsl r0, r0, #0x1
+ add r5, r5, r0
+ add r0, r4, #0x0
+ mov r1, #0x11
+ bl FUN_0206E7DC
+ lsl r0, r0, #0x2
+ add r5, r5, r0
+ add r0, r4, #0x0
+ mov r1, #0x12
+ bl FUN_0206E7DC
+ lsl r0, r0, #0x3
+ add r5, r5, r0
+ add r0, r4, #0x0
+ mov r1, #0x13
+ bl FUN_0206E7DC
+ lsl r0, r0, #0x4
+ add r5, r5, r0
+ add r0, r4, #0x0
+ mov r1, #0x14
+ bl FUN_0206E7DC
+ lsl r0, r0, #0x5
+ add r5, r5, r0
+ cmp r5, #0x10
+ bgt _02075624
+ bge _0207565A
+ cmp r5, #0x8
+ bhi _0207568E
+ add r0, r5, r5
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02075612: ; jump table (using 16-bit offset)
+ .short _0207568E - _02075612 - 2; case 0
+ .short _02075632 - _02075612 - 2; case 1
+ .short _0207563C - _02075612 - 2; case 2
+ .short _0207568E - _02075612 - 2; case 3
+ .short _02075646 - _02075612 - 2; case 4
+ .short _0207568E - _02075612 - 2; case 5
+ .short _0207568E - _02075612 - 2; case 6
+ .short _0207568E - _02075612 - 2; case 7
+ .short _02075650 - _02075612 - 2; case 8
+_02075624:
+ cmp r5, #0x20
+ bgt _0207562C
+ beq _02075664
+ b _0207568E
+_0207562C:
+ cmp r5, #0x3f
+ beq _0207566E
+ b _0207568E
+_02075632:
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0x3
+ pop {r3-r5, pc}
+_0207563C:
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0x4
+ pop {r3-r5, pc}
+_02075646:
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0x5
+ pop {r3-r5, pc}
+_02075650:
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0x6
+ pop {r3-r5, pc}
+_0207565A:
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0x7
+ pop {r3-r5, pc}
+_02075664:
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0x8
+ pop {r3-r5, pc}
+_0207566E:
+ add r0, r4, #0x0
+ mov r1, #0x26
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _02075684
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0xb
+ pop {r3-r5, pc}
+_02075684:
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0x9
+ pop {r3-r5, pc}
+_0207568E:
+ add r0, r4, #0x0
+ mov r1, #0x15
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _020756A4
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0xa
+ pop {r3-r5, pc}
+_020756A4:
+ add r0, r4, #0x0
+ mov r1, #0x26
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _020756BA
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0xb
+ pop {r3-r5, pc}
+_020756BA:
+ add r0, r4, #0x0
+ mov r1, #0x30
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ ble _020756D0
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0xc
+ pop {r3-r5, pc}
+_020756D0:
+ bge _020756DC
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0x12
+ pop {r3-r5, pc}
+_020756DC:
+ add r0, r4, #0x0
+ mov r1, #0x31
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ ble _020756F2
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0xd
+ pop {r3-r5, pc}
+_020756F2:
+ bge _020756FE
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0x13
+ pop {r3-r5, pc}
+_020756FE:
+ add r0, r4, #0x0
+ mov r1, #0x32
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ ble _02075714
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0xe
+ pop {r3-r5, pc}
+_02075714:
+ bge _02075720
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0x14
+ pop {r3-r5, pc}
+_02075720:
+ add r0, r4, #0x0
+ mov r1, #0x33
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ ble _02075736
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0xf
+ pop {r3-r5, pc}
+_02075736:
+ bge _02075742
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0x15
+ pop {r3-r5, pc}
+_02075742:
+ add r0, r4, #0x0
+ mov r1, #0x34
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ ble _02075758
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0x10
+ pop {r3-r5, pc}
+_02075758:
+ bge _02075764
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0x16
+ pop {r3-r5, pc}
+_02075764:
+ add r0, r4, #0x0
+ mov r1, #0x35
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ ble _0207577A
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0x11
+ pop {r3-r5, pc}
+_0207577A:
+ bge _02075786
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0x17
+ pop {r3-r5, pc}
+_02075786:
+ add r0, r4, #0x0
+ mov r1, #0x1a
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _0207579C
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0x18
+ pop {r3-r5, pc}
+_0207579C:
+ add r0, r4, #0x0
+ mov r1, #0x22
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _020757B2
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0x19
+ pop {r3-r5, pc}
+_020757B2:
+ add r0, r4, #0x0
+ mov r1, #0x23
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _020757C8
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0x1a
+ pop {r3-r5, pc}
+_020757C8:
+ add r0, r4, #0x0
+ mov r1, #0x24
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ bne _020757E0
+ add r0, r4, #0x0
+ mov r1, #0x25
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _020757EA
+_020757E0:
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0x1b
+ pop {r3-r5, pc}
+_020757EA:
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0x1c
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_020757F4
+FUN_020757F4: ; 0x020757F4
+ push {r4-r6, lr}
+ add r4, r0, #0x0
+ ldr r0, _02075B8C ; =0x000005A4
+ add r6, r1, #0x0
+ ldr r1, _02075B90 ; =0x00000B25
+ ldr r0, [r4, r0]
+ ldrb r1, [r4, r1]
+ ldr r0, [r0, #0x0]
+ add r5, r2, #0x0
+ bl FUN_0206B9B0
+ bl FUN_020690E4
+ add r2, r0, #0x0
+ mov r0, #0x6a
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ bl FUN_0200ACF8
+ add r0, r6, #0x0
+ bl FUN_0207550C
+ cmp r0, #0x1b
+ bls _02075828
+ b _02075C40
+_02075828:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02075834: ; jump table (using 16-bit offset)
+ .short _02075C40 - _02075834 - 2; case 0
+ .short _02075C40 - _02075834 - 2; case 1
+ .short _02075C40 - _02075834 - 2; case 2
+ .short _02075890 - _02075834 - 2; case 3
+ .short _0207586C - _02075834 - 2; case 4
+ .short _020758B4 - _02075834 - 2; case 5
+ .short _020758D8 - _02075834 - 2; case 6
+ .short _020758FC - _02075834 - 2; case 7
+ .short _02075920 - _02075834 - 2; case 8
+ .short _02075968 - _02075834 - 2; case 9
+ .short _02075944 - _02075834 - 2; case 10
+ .short _02075C40 - _02075834 - 2; case 11
+ .short _0207598C - _02075834 - 2; case 12
+ .short _020759BE - _02075834 - 2; case 13
+ .short _020759F0 - _02075834 - 2; case 14
+ .short _02075A22 - _02075834 - 2; case 15
+ .short _02075A54 - _02075834 - 2; case 16
+ .short _02075A86 - _02075834 - 2; case 17
+ .short _02075AB8 - _02075834 - 2; case 18
+ .short _02075AEC - _02075834 - 2; case 19
+ .short _02075B20 - _02075834 - 2; case 20
+ .short _02075B54 - _02075834 - 2; case 21
+ .short _02075B88 - _02075834 - 2; case 22
+ .short _02075BCA - _02075834 - 2; case 23
+ .short _02075C40 - _02075834 - 2; case 24
+ .short _02075BFE - _02075834 - 2; case 25
+ .short _02075BFE - _02075834 - 2; case 26
+ .short _02075C30 - _02075834 - 2; case 27
+_0207586C:
+ ldr r0, _02075B94 ; =0x0000069C
+ mov r1, #0x41
+ ldr r0, [r4, r0]
+ bl FUN_0200A914
+ mov r1, #0x6a
+ add r5, r0, #0x0
+ lsl r1, r1, #0x4
+ ldr r0, [r4, r1]
+ add r1, r1, #0x4
+ ldr r1, [r4, r1]
+ add r2, r5, #0x0
+ bl FUN_0200B7B8
+ add r0, r5, #0x0
+ bl FUN_02021A20
+ pop {r4-r6, pc}
+_02075890:
+ ldr r0, _02075B94 ; =0x0000069C
+ mov r1, #0x5b
+ ldr r0, [r4, r0]
+ bl FUN_0200A914
+ mov r1, #0x6a
+ add r5, r0, #0x0
+ lsl r1, r1, #0x4
+ ldr r0, [r4, r1]
+ add r1, r1, #0x4
+ ldr r1, [r4, r1]
+ add r2, r5, #0x0
+ bl FUN_0200B7B8
+ add r0, r5, #0x0
+ bl FUN_02021A20
+ pop {r4-r6, pc}
+_020758B4:
+ ldr r0, _02075B94 ; =0x0000069C
+ mov r1, #0x43
+ ldr r0, [r4, r0]
+ bl FUN_0200A914
+ mov r1, #0x6a
+ add r5, r0, #0x0
+ lsl r1, r1, #0x4
+ ldr r0, [r4, r1]
+ add r1, r1, #0x4
+ ldr r1, [r4, r1]
+ add r2, r5, #0x0
+ bl FUN_0200B7B8
+ add r0, r5, #0x0
+ bl FUN_02021A20
+ pop {r4-r6, pc}
+_020758D8:
+ ldr r0, _02075B94 ; =0x0000069C
+ mov r1, #0x44
+ ldr r0, [r4, r0]
+ bl FUN_0200A914
+ mov r1, #0x6a
+ add r5, r0, #0x0
+ lsl r1, r1, #0x4
+ ldr r0, [r4, r1]
+ add r1, r1, #0x4
+ ldr r1, [r4, r1]
+ add r2, r5, #0x0
+ bl FUN_0200B7B8
+ add r0, r5, #0x0
+ bl FUN_02021A20
+ pop {r4-r6, pc}
+_020758FC:
+ ldr r0, _02075B94 ; =0x0000069C
+ mov r1, #0x42
+ ldr r0, [r4, r0]
+ bl FUN_0200A914
+ mov r1, #0x6a
+ add r5, r0, #0x0
+ lsl r1, r1, #0x4
+ ldr r0, [r4, r1]
+ add r1, r1, #0x4
+ ldr r1, [r4, r1]
+ add r2, r5, #0x0
+ bl FUN_0200B7B8
+ add r0, r5, #0x0
+ bl FUN_02021A20
+ pop {r4-r6, pc}
+_02075920:
+ ldr r0, _02075B94 ; =0x0000069C
+ mov r1, #0x49
+ ldr r0, [r4, r0]
+ bl FUN_0200A914
+ mov r1, #0x6a
+ add r5, r0, #0x0
+ lsl r1, r1, #0x4
+ ldr r0, [r4, r1]
+ add r1, r1, #0x4
+ ldr r1, [r4, r1]
+ add r2, r5, #0x0
+ bl FUN_0200B7B8
+ add r0, r5, #0x0
+ bl FUN_02021A20
+ pop {r4-r6, pc}
+_02075944:
+ ldr r0, _02075B94 ; =0x0000069C
+ mov r1, #0x4a
+ ldr r0, [r4, r0]
+ bl FUN_0200A914
+ mov r1, #0x6a
+ add r5, r0, #0x0
+ lsl r1, r1, #0x4
+ ldr r0, [r4, r1]
+ add r1, r1, #0x4
+ ldr r1, [r4, r1]
+ add r2, r5, #0x0
+ bl FUN_0200B7B8
+ add r0, r5, #0x0
+ bl FUN_02021A20
+ pop {r4-r6, pc}
+_02075968:
+ ldr r0, _02075B94 ; =0x0000069C
+ mov r1, #0x47
+ ldr r0, [r4, r0]
+ bl FUN_0200A914
+ mov r1, #0x6a
+ add r5, r0, #0x0
+ lsl r1, r1, #0x4
+ ldr r0, [r4, r1]
+ add r1, r1, #0x4
+ ldr r1, [r4, r1]
+ add r2, r5, #0x0
+ bl FUN_0200B7B8
+ add r0, r5, #0x0
+ bl FUN_02021A20
+ pop {r4-r6, pc}
+_0207598C:
+ ldr r0, _02075B94 ; =0x0000069C
+ mov r1, #0x4b
+ ldr r0, [r4, r0]
+ bl FUN_0200A914
+ add r5, r0, #0x0
+ mov r0, #0x6a
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ mov r1, #0x1
+ mov r2, #0x0
+ bl FUN_0200AF50
+ mov r1, #0x6a
+ lsl r1, r1, #0x4
+ ldr r0, [r4, r1]
+ add r1, r1, #0x4
+ ldr r1, [r4, r1]
+ add r2, r5, #0x0
+ bl FUN_0200B7B8
+ add r0, r5, #0x0
+ bl FUN_02021A20
+ pop {r4-r6, pc}
+_020759BE:
+ ldr r0, _02075B94 ; =0x0000069C
+ mov r1, #0x4b
+ ldr r0, [r4, r0]
+ bl FUN_0200A914
+ add r5, r0, #0x0
+ mov r0, #0x6a
+ lsl r0, r0, #0x4
+ mov r1, #0x1
+ ldr r0, [r4, r0]
+ add r2, r1, #0x0
+ bl FUN_0200AF50
+ mov r1, #0x6a
+ lsl r1, r1, #0x4
+ ldr r0, [r4, r1]
+ add r1, r1, #0x4
+ ldr r1, [r4, r1]
+ add r2, r5, #0x0
+ bl FUN_0200B7B8
+ add r0, r5, #0x0
+ bl FUN_02021A20
+ pop {r4-r6, pc}
+_020759F0:
+ ldr r0, _02075B94 ; =0x0000069C
+ mov r1, #0x4b
+ ldr r0, [r4, r0]
+ bl FUN_0200A914
+ add r5, r0, #0x0
+ mov r0, #0x6a
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ mov r1, #0x1
+ mov r2, #0x2
+ bl FUN_0200AF50
+ mov r1, #0x6a
+ lsl r1, r1, #0x4
+ ldr r0, [r4, r1]
+ add r1, r1, #0x4
+ ldr r1, [r4, r1]
+ add r2, r5, #0x0
+ bl FUN_0200B7B8
+ add r0, r5, #0x0
+ bl FUN_02021A20
+ pop {r4-r6, pc}
+_02075A22:
+ ldr r0, _02075B94 ; =0x0000069C
+ mov r1, #0x4b
+ ldr r0, [r4, r0]
+ bl FUN_0200A914
+ add r5, r0, #0x0
+ mov r0, #0x6a
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ mov r1, #0x1
+ mov r2, #0x3
+ bl FUN_0200AF50
+ mov r1, #0x6a
+ lsl r1, r1, #0x4
+ ldr r0, [r4, r1]
+ add r1, r1, #0x4
+ ldr r1, [r4, r1]
+ add r2, r5, #0x0
+ bl FUN_0200B7B8
+ add r0, r5, #0x0
+ bl FUN_02021A20
+ pop {r4-r6, pc}
+_02075A54:
+ ldr r0, _02075B94 ; =0x0000069C
+ mov r1, #0x4b
+ ldr r0, [r4, r0]
+ bl FUN_0200A914
+ add r5, r0, #0x0
+ mov r0, #0x6a
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ mov r1, #0x1
+ mov r2, #0x4
+ bl FUN_0200AF50
+ mov r1, #0x6a
+ lsl r1, r1, #0x4
+ ldr r0, [r4, r1]
+ add r1, r1, #0x4
+ ldr r1, [r4, r1]
+ add r2, r5, #0x0
+ bl FUN_0200B7B8
+ add r0, r5, #0x0
+ bl FUN_02021A20
+ pop {r4-r6, pc}
+_02075A86:
+ ldr r0, _02075B94 ; =0x0000069C
+ mov r1, #0x4b
+ ldr r0, [r4, r0]
+ bl FUN_0200A914
+ add r5, r0, #0x0
+ mov r0, #0x6a
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ mov r1, #0x1
+ mov r2, #0x5
+ bl FUN_0200AF50
+ mov r1, #0x6a
+ lsl r1, r1, #0x4
+ ldr r0, [r4, r1]
+ add r1, r1, #0x4
+ ldr r1, [r4, r1]
+ add r2, r5, #0x0
+ bl FUN_0200B7B8
+ add r0, r5, #0x0
+ bl FUN_02021A20
+ pop {r4-r6, pc}
+_02075AB8:
+ ldr r0, _02075B94 ; =0x0000069C
+ add r5, #0x6e
+ ldr r0, [r4, r0]
+ add r1, r5, #0x0
+ bl FUN_0200A914
+ add r5, r0, #0x0
+ mov r0, #0x6a
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ mov r1, #0x1
+ mov r2, #0x0
+ bl FUN_0200AF50
+ mov r1, #0x6a
+ lsl r1, r1, #0x4
+ ldr r0, [r4, r1]
+ add r1, r1, #0x4
+ ldr r1, [r4, r1]
+ add r2, r5, #0x0
+ bl FUN_0200B7B8
+ add r0, r5, #0x0
+ bl FUN_02021A20
+ pop {r4-r6, pc}
+_02075AEC:
+ ldr r0, _02075B94 ; =0x0000069C
+ add r5, #0x6e
+ ldr r0, [r4, r0]
+ add r1, r5, #0x0
+ bl FUN_0200A914
+ add r5, r0, #0x0
+ mov r0, #0x6a
+ lsl r0, r0, #0x4
+ mov r1, #0x1
+ ldr r0, [r4, r0]
+ add r2, r1, #0x0
+ bl FUN_0200AF50
+ mov r1, #0x6a
+ lsl r1, r1, #0x4
+ ldr r0, [r4, r1]
+ add r1, r1, #0x4
+ ldr r1, [r4, r1]
+ add r2, r5, #0x0
+ bl FUN_0200B7B8
+ add r0, r5, #0x0
+ bl FUN_02021A20
+ pop {r4-r6, pc}
+_02075B20:
+ ldr r0, _02075B94 ; =0x0000069C
+ add r5, #0x6e
+ ldr r0, [r4, r0]
+ add r1, r5, #0x0
+ bl FUN_0200A914
+ add r5, r0, #0x0
+ mov r0, #0x6a
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ mov r1, #0x1
+ mov r2, #0x2
+ bl FUN_0200AF50
+ mov r1, #0x6a
+ lsl r1, r1, #0x4
+ ldr r0, [r4, r1]
+ add r1, r1, #0x4
+ ldr r1, [r4, r1]
+ add r2, r5, #0x0
+ bl FUN_0200B7B8
+ add r0, r5, #0x0
+ bl FUN_02021A20
+ pop {r4-r6, pc}
+_02075B54:
+ ldr r0, _02075B94 ; =0x0000069C
+ add r5, #0x6e
+ ldr r0, [r4, r0]
+ add r1, r5, #0x0
+ bl FUN_0200A914
+ add r5, r0, #0x0
+ mov r0, #0x6a
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ mov r1, #0x1
+ mov r2, #0x3
+ bl FUN_0200AF50
+ mov r1, #0x6a
+ lsl r1, r1, #0x4
+ ldr r0, [r4, r1]
+ add r1, r1, #0x4
+ ldr r1, [r4, r1]
+ add r2, r5, #0x0
+ bl FUN_0200B7B8
+ add r0, r5, #0x0
+ bl FUN_02021A20
+ pop {r4-r6, pc}
+_02075B88:
+ ldr r0, _02075B94 ; =0x0000069C
+ b _02075B98
+ .balign 4
+_02075B8C: .word 0x000005A4
+_02075B90: .word 0x00000B25
+_02075B94: .word 0x0000069C
+_02075B98:
+ add r5, #0x6e
+ ldr r0, [r4, r0]
+ add r1, r5, #0x0
+ bl FUN_0200A914
+ add r5, r0, #0x0
+ mov r0, #0x6a
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ mov r1, #0x1
+ mov r2, #0x4
+ bl FUN_0200AF50
+ mov r1, #0x6a
+ lsl r1, r1, #0x4
+ ldr r0, [r4, r1]
+ add r1, r1, #0x4
+ ldr r1, [r4, r1]
+ add r2, r5, #0x0
+ bl FUN_0200B7B8
+ add r0, r5, #0x0
+ bl FUN_02021A20
+ pop {r4-r6, pc}
+_02075BCA:
+ ldr r0, _02075C50 ; =0x0000069C
+ add r5, #0x6e
+ ldr r0, [r4, r0]
+ add r1, r5, #0x0
+ bl FUN_0200A914
+ add r5, r0, #0x0
+ mov r0, #0x6a
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ mov r1, #0x1
+ mov r2, #0x5
+ bl FUN_0200AF50
+ mov r1, #0x6a
+ lsl r1, r1, #0x4
+ ldr r0, [r4, r1]
+ add r1, r1, #0x4
+ ldr r1, [r4, r1]
+ add r2, r5, #0x0
+ bl FUN_0200B7B8
+ add r0, r5, #0x0
+ bl FUN_02021A20
+ pop {r4-r6, pc}
+_02075BFE:
+ ldr r0, _02075C50 ; =0x0000069C
+ mov r1, #0x48
+ ldr r0, [r4, r0]
+ bl FUN_0200A914
+ add r6, r0, #0x0
+ mov r0, #0x6a
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ add r2, r5, #0x0
+ bl FUN_0200AD5C
+ mov r1, #0x6a
+ lsl r1, r1, #0x4
+ ldr r0, [r4, r1]
+ add r1, r1, #0x4
+ ldr r1, [r4, r1]
+ add r2, r6, #0x0
+ bl FUN_0200B7B8
+ add r0, r6, #0x0
+ bl FUN_02021A20
+ pop {r4-r6, pc}
+_02075C30:
+ ldr r2, _02075C50 ; =0x0000069C
+ mov r1, #0x45
+ ldr r0, [r4, r2]
+ add r2, #0x8
+ ldr r2, [r4, r2]
+ bl FUN_0200A8E0
+ pop {r4-r6, pc}
+_02075C40:
+ ldr r2, _02075C50 ; =0x0000069C
+ mov r1, #0x69
+ ldr r0, [r4, r2]
+ add r2, #0x8
+ ldr r2, [r4, r2]
+ bl FUN_0200A8E0
+ pop {r4-r6, pc}
+ .balign 4
+_02075C50: .word 0x0000069C
+
+ thumb_func_start FUN_02075C54
+FUN_02075C54: ; 0x02075C54
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _02075CCC ; =0x000005A4
+ ldr r0, [r4, r0]
+ ldrh r0, [r0, #0x24]
+ bl FUN_0207550C
+ cmp r0, #0x1c
+ bhi _02075CCA
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02075C72: ; jump table (using 16-bit offset)
+ .short _02075CCA - _02075C72 - 2; case 0
+ .short _02075CCA - _02075C72 - 2; case 1
+ .short _02075CAC - _02075C72 - 2; case 2
+ .short _02075CB4 - _02075C72 - 2; case 3
+ .short _02075CB4 - _02075C72 - 2; case 4
+ .short _02075CB4 - _02075C72 - 2; case 5
+ .short _02075CB4 - _02075C72 - 2; case 6
+ .short _02075CB4 - _02075C72 - 2; case 7
+ .short _02075CB4 - _02075C72 - 2; case 8
+ .short _02075CB4 - _02075C72 - 2; case 9
+ .short _02075CB4 - _02075C72 - 2; case 10
+ .short _02075CC4 - _02075C72 - 2; case 11
+ .short _02075CB4 - _02075C72 - 2; case 12
+ .short _02075CB4 - _02075C72 - 2; case 13
+ .short _02075CB4 - _02075C72 - 2; case 14
+ .short _02075CB4 - _02075C72 - 2; case 15
+ .short _02075CB4 - _02075C72 - 2; case 16
+ .short _02075CB4 - _02075C72 - 2; case 17
+ .short _02075CBC - _02075C72 - 2; case 18
+ .short _02075CBC - _02075C72 - 2; case 19
+ .short _02075CBC - _02075C72 - 2; case 20
+ .short _02075CBC - _02075C72 - 2; case 21
+ .short _02075CBC - _02075C72 - 2; case 22
+ .short _02075CBC - _02075C72 - 2; case 23
+ .short _02075CCA - _02075C72 - 2; case 24
+ .short _02075CB4 - _02075C72 - 2; case 25
+ .short _02075CB4 - _02075C72 - 2; case 26
+ .short _02075CB4 - _02075C72 - 2; case 27
+ .short _02075CCA - _02075C72 - 2; case 28
+_02075CAC:
+ ldr r1, _02075CD0 ; =FUN_0207640C
+ ldr r0, _02075CD4 ; =0x00000B14
+ str r1, [r4, r0]
+ pop {r4, pc}
+_02075CB4:
+ ldr r1, _02075CD8 ; =FUN_02075D20
+ ldr r0, _02075CD4 ; =0x00000B14
+ str r1, [r4, r0]
+ pop {r4, pc}
+_02075CBC:
+ ldr r1, _02075CDC ; =FUN_02075DC0
+ ldr r0, _02075CD4 ; =0x00000B14
+ str r1, [r4, r0]
+ pop {r4, pc}
+_02075CC4:
+ ldr r1, _02075CE0 ; =FUN_02075F60
+ ldr r0, _02075CD4 ; =0x00000B14
+ str r1, [r4, r0]
+_02075CCA:
+ pop {r4, pc}
+ .balign 4
+_02075CCC: .word 0x000005A4
+_02075CD0: .word FUN_0207640C
+_02075CD4: .word 0x00000B14
+_02075CD8: .word FUN_02075D20
+_02075CDC: .word FUN_02075DC0
+_02075CE0: .word FUN_02075F60
+
+ thumb_func_start FUN_02075CE4
+FUN_02075CE4: ; 0x02075CE4
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _02075D14 ; =0x00000B24
+ ldrb r0, [r4, r0]
+ bl FUN_0201BD70
+ cmp r0, #0x0
+ beq _02075CF8
+ mov r0, #0x5
+ pop {r4, pc}
+_02075CF8:
+ ldr r0, _02075D18 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x3
+ tst r0, r1
+ beq _02075D10
+ ldr r0, _02075D1C ; =0x000005A4
+ mov r1, #0x0
+ ldr r0, [r4, r0]
+ add r0, #0x23
+ strb r1, [r0, #0x0]
+ mov r0, #0x1b
+ pop {r4, pc}
+_02075D10:
+ mov r0, #0x5
+ pop {r4, pc}
+ .balign 4
+_02075D14: .word 0x00000B24
+_02075D18: .word 0x021C48B8
+_02075D1C: .word 0x000005A4
+
+ thumb_func_start FUN_02075D20
+FUN_02075D20: ; 0x02075D20
+ push {r3-r5, lr}
+ sub sp, #0x8
+ ldr r1, _02075DA8 ; =0x000005A4
+ add r5, r0, #0x0
+ ldr r4, [r5, r1]
+ bl FUN_020772CC
+ str r0, [sp, #0x0]
+ mov r0, #0xc
+ str r0, [sp, #0x4]
+ ldr r2, _02075DAC ; =0x00000B25
+ ldrh r1, [r4, #0x24]
+ ldrb r2, [r5, r2]
+ ldr r0, [r4, #0x0]
+ mov r3, #0x0
+ bl FUN_02084DD0
+ ldr r1, _02075DAC ; =0x00000B25
+ add r0, r5, #0x0
+ ldrb r1, [r5, r1]
+ bl FUN_0207008C
+ ldr r1, _02075DAC ; =0x00000B25
+ add r0, r5, #0x0
+ ldrb r1, [r5, r1]
+ bl FUN_02072D1C
+ ldr r1, _02075DAC ; =0x00000B25
+ add r0, r5, #0x0
+ ldrb r1, [r5, r1]
+ bl FUN_02072DDC
+ ldr r0, _02075DAC ; =0x00000B25
+ mov r2, #0x2c
+ ldrb r1, [r5, r0]
+ add r0, r5, #0x0
+ mul r2, r1
+ add r3, r5, r2
+ ldr r2, _02075DB0 ; =0x0000070E
+ ldrh r2, [r3, r2]
+ lsl r2, r2, #0x14
+ lsr r2, r2, #0x14
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+ bl FUN_02073A4C
+ ldr r1, _02075DA8 ; =0x000005A4
+ add r0, r5, #0x0
+ ldr r1, [r5, r1]
+ mov r2, #0x0
+ ldrh r1, [r1, #0x24]
+ bl FUN_020757F4
+ mov r1, #0x0
+ add r0, r5, #0x0
+ mvn r1, r1
+ mov r2, #0x1
+ bl FUN_020731E8
+ ldr r0, _02075DB4 ; =0x000005EC
+ bl FUN_020054C8
+ ldr r1, _02075DB8 ; =FUN_02075CE4
+ ldr r0, _02075DBC ; =0x00000B14
+ str r1, [r5, r0]
+ mov r0, #0x5
+ add sp, #0x8
+ pop {r3-r5, pc}
+ .balign 4
+_02075DA8: .word 0x000005A4
+_02075DAC: .word 0x00000B25
+_02075DB0: .word 0x0000070E
+_02075DB4: .word 0x000005EC
+_02075DB8: .word FUN_02075CE4
+_02075DBC: .word 0x00000B14
+
+ thumb_func_start FUN_02075DC0
+FUN_02075DC0: ; 0x02075DC0
+ push {r3-r7, lr}
+ sub sp, #0x20
+ add r5, r0, #0x0
+ ldr r0, _02075F4C ; =0x000005A4
+ ldr r1, _02075F50 ; =0x00000B25
+ ldr r0, [r5, r0]
+ ldrb r1, [r5, r1]
+ ldr r0, [r0, #0x0]
+ bl FUN_0206B9B0
+ mov r1, #0xd
+ mov r2, #0x0
+ add r4, r0, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x1c]
+ add r0, r4, #0x0
+ mov r1, #0xe
+ mov r2, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x18]
+ add r0, r4, #0x0
+ mov r1, #0xf
+ mov r2, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x14]
+ add r0, r4, #0x0
+ mov r1, #0x10
+ mov r2, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x10]
+ add r0, r4, #0x0
+ mov r1, #0x11
+ mov r2, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0xc]
+ add r0, r4, #0x0
+ mov r1, #0x12
+ mov r2, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x8]
+ add r0, r4, #0x0
+ mov r1, #0x9
+ mov r2, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+ ldr r0, _02075F4C ; =0x000005A4
+ ldr r6, [r5, r0]
+ add r0, r5, #0x0
+ bl FUN_020772CC
+ str r0, [sp, #0x0]
+ mov r0, #0xc
+ str r0, [sp, #0x4]
+ ldr r2, _02075F50 ; =0x00000B25
+ ldrh r1, [r6, #0x24]
+ ldrb r2, [r5, r2]
+ ldr r0, [r6, #0x0]
+ mov r3, #0x0
+ bl FUN_02084DD0
+ ldr r1, _02075F50 ; =0x00000B25
+ add r0, r5, #0x0
+ ldrb r1, [r5, r1]
+ bl FUN_0207008C
+ ldr r1, _02075F50 ; =0x00000B25
+ add r0, r5, #0x0
+ ldrb r1, [r5, r1]
+ bl FUN_02072D1C
+ ldr r1, _02075F50 ; =0x00000B25
+ add r0, r5, #0x0
+ ldrb r1, [r5, r1]
+ bl FUN_02072DDC
+ ldr r0, _02075F50 ; =0x00000B25
+ mov r2, #0x2c
+ ldrb r1, [r5, r0]
+ add r0, r5, #0x0
+ mul r2, r1
+ add r3, r5, r2
+ ldr r2, _02075F54 ; =0x0000070E
+ ldrh r2, [r3, r2]
+ lsl r2, r2, #0x14
+ lsr r2, r2, #0x14
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+ bl FUN_02073A4C
+ add r0, r4, #0x0
+ mov r1, #0xd
+ mov r2, #0x0
+ bl FUN_020671BC
+ ldr r1, [sp, #0x1c]
+ cmp r1, r0
+ bne _02075EFA
+ add r0, r4, #0x0
+ mov r1, #0xe
+ mov r2, #0x0
+ bl FUN_020671BC
+ ldr r1, [sp, #0x18]
+ cmp r1, r0
+ bne _02075EFA
+ add r0, r4, #0x0
+ mov r1, #0xf
+ mov r2, #0x0
+ bl FUN_020671BC
+ ldr r1, [sp, #0x14]
+ cmp r1, r0
+ bne _02075EFA
+ add r0, r4, #0x0
+ mov r1, #0x10
+ mov r2, #0x0
+ bl FUN_020671BC
+ ldr r1, [sp, #0x10]
+ cmp r1, r0
+ bne _02075EFA
+ add r0, r4, #0x0
+ mov r1, #0x11
+ mov r2, #0x0
+ bl FUN_020671BC
+ ldr r1, [sp, #0xc]
+ cmp r1, r0
+ bne _02075EFA
+ add r0, r4, #0x0
+ mov r1, #0x12
+ mov r2, #0x0
+ bl FUN_020671BC
+ ldr r1, [sp, #0x8]
+ cmp r1, r0
+ beq _02075F26
+_02075EFA:
+ add r0, r4, #0x0
+ mov r1, #0x9
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r7, r0
+ ldr r1, _02075F4C ; =0x000005A4
+ beq _02075F18
+ ldr r1, [r5, r1]
+ add r0, r5, #0x0
+ ldrh r1, [r1, #0x24]
+ mov r2, #0x0
+ bl FUN_020757F4
+ b _02075F34
+_02075F18:
+ ldr r1, [r5, r1]
+ add r0, r5, #0x0
+ ldrh r1, [r1, #0x24]
+ mov r2, #0x1
+ bl FUN_020757F4
+ b _02075F34
+_02075F26:
+ ldr r1, _02075F4C ; =0x000005A4
+ add r0, r5, #0x0
+ ldr r1, [r5, r1]
+ mov r2, #0x2
+ ldrh r1, [r1, #0x24]
+ bl FUN_020757F4
+_02075F34:
+ mov r1, #0x0
+ add r0, r5, #0x0
+ mvn r1, r1
+ mov r2, #0x1
+ bl FUN_020731E8
+ ldr r1, _02075F58 ; =FUN_02075CE4
+ ldr r0, _02075F5C ; =0x00000B14
+ str r1, [r5, r0]
+ mov r0, #0x5
+ add sp, #0x20
+ pop {r3-r7, pc}
+ .balign 4
+_02075F4C: .word 0x000005A4
+_02075F50: .word 0x00000B25
+_02075F54: .word 0x0000070E
+_02075F58: .word FUN_02075CE4
+_02075F5C: .word 0x00000B14
+
+ thumb_func_start FUN_02075F60
+FUN_02075F60: ; 0x02075F60
+ push {r4-r7, lr}
+ sub sp, #0xc
+ ldr r1, _02076080 ; =0x000005A4
+ add r5, r0, #0x0
+ ldr r4, [r5, r1]
+ bl FUN_020772CC
+ str r0, [sp, #0x0]
+ mov r0, #0xc
+ str r0, [sp, #0x4]
+ ldr r2, _02076084 ; =0x00000B25
+ ldrh r1, [r4, #0x24]
+ ldrb r2, [r5, r2]
+ ldr r0, [r4, #0x0]
+ mov r3, #0x0
+ bl FUN_02084DD0
+ ldr r0, _02076080 ; =0x000005A4
+ ldr r1, _02076084 ; =0x00000B25
+ ldr r0, [r5, r0]
+ ldrb r1, [r5, r1]
+ ldr r0, [r0, #0x0]
+ bl FUN_0206B9B0
+ mov r1, #0xa2
+ mov r2, #0x0
+ str r0, [sp, #0x8]
+ bl FUN_020671BC
+ add r4, r0, #0x0
+ ldr r0, _02076084 ; =0x00000B25
+ ldrb r1, [r5, r0]
+ mov r0, #0x2c
+ mul r0, r1
+ add r1, r5, r0
+ ldr r0, _02076088 ; =0x00000706
+ ldrh r1, [r1, r0]
+ cmp r1, #0x0
+ bne _02075FBC
+ sub r0, #0x6a
+ ldr r0, [r5, r0]
+ mov r1, #0x46
+ bl FUN_0200A914
+ add r7, r0, #0x0
+ b _02075FDA
+_02075FBC:
+ cmp r4, r1
+ bne _02075FCE
+ sub r0, #0x6a
+ ldr r0, [r5, r0]
+ mov r1, #0x47
+ bl FUN_0200A914
+ add r7, r0, #0x0
+ b _02075FDA
+_02075FCE:
+ sub r0, #0x6a
+ ldr r0, [r5, r0]
+ mov r1, #0x40
+ bl FUN_0200A914
+ add r7, r0, #0x0
+_02075FDA:
+ ldr r0, [sp, #0x8]
+ bl FUN_020690E4
+ add r2, r0, #0x0
+ mov r0, #0x6a
+ lsl r0, r0, #0x4
+ ldr r0, [r5, r0]
+ mov r1, #0x0
+ bl FUN_0200ACF8
+ mov r0, #0x0
+ mov r3, #0x6a
+ str r0, [sp, #0x0]
+ mov r1, #0x1
+ ldr r2, _02076084 ; =0x00000B25
+ str r1, [sp, #0x4]
+ ldrb r6, [r5, r2]
+ mov r2, #0x2c
+ lsl r3, r3, #0x4
+ mul r2, r6
+ ldr r0, [r5, r3]
+ add r2, r5, r2
+ add r3, #0x66
+ ldrh r2, [r2, r3]
+ mov r3, #0x3
+ sub r2, r4, r2
+ bl FUN_0200AD38
+ mov r1, #0x6a
+ lsl r1, r1, #0x4
+ ldr r0, [r5, r1]
+ add r1, r1, #0x4
+ ldr r1, [r5, r1]
+ add r2, r7, #0x0
+ bl FUN_0200B7B8
+ add r0, r7, #0x0
+ bl FUN_02021A20
+ ldr r0, [sp, #0x8]
+ bl FUN_0207C2D4
+ add r4, r0, #0x0
+ ldr r1, _02076084 ; =0x00000B25
+ lsl r2, r4, #0x18
+ ldrb r1, [r5, r1]
+ add r0, r5, #0x0
+ lsr r2, r2, #0x18
+ bl FUN_02073A4C
+ cmp r4, #0x7
+ bne _02076062
+ ldr r1, _02076084 ; =0x00000B25
+ ldr r0, _0207608C ; =0x0000070E
+ ldrb r3, [r5, r1]
+ add r2, r5, r0
+ mov r0, #0x2c
+ mul r0, r3
+ ldrh r4, [r2, r0]
+ ldr r3, _02076090 ; =0xFFFFF000
+ and r4, r3
+ mov r3, #0x7
+ orr r3, r4
+ strh r3, [r2, r0]
+ ldrb r1, [r5, r1]
+ add r0, r5, #0x0
+ bl FUN_02072B20
+_02076062:
+ ldr r1, _02076084 ; =0x00000B25
+ add r0, r5, #0x0
+ ldrb r1, [r5, r1]
+ bl FUN_020709FC
+ ldr r1, _02076094 ; =FUN_020760A0
+ ldr r0, _02076098 ; =0x00000B14
+ str r1, [r5, r0]
+ ldr r0, _0207609C ; =0x000005EC
+ bl FUN_020054C8
+ mov r0, #0x5
+ add sp, #0xc
+ pop {r4-r7, pc}
+ nop
+_02076080: .word 0x000005A4
+_02076084: .word 0x00000B25
+_02076088: .word 0x00000706
+_0207608C: .word 0x0000070E
+_02076090: .word 0xFFFFF000
+_02076094: .word FUN_020760A0
+_02076098: .word 0x00000B14
+_0207609C: .word 0x000005EC
+
+ thumb_func_start FUN_020760A0
+FUN_020760A0: ; 0x020760A0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, _02076130 ; =0x000005A4
+ ldr r1, _02076134 ; =0x00000B25
+ ldr r0, [r5, r0]
+ ldrb r1, [r5, r1]
+ ldr r0, [r0, #0x0]
+ bl FUN_0206B9B0
+ mov r1, #0xa2
+ mov r2, #0x0
+ bl FUN_020671BC
+ ldr r1, _02076134 ; =0x00000B25
+ add r4, r0, #0x0
+ ldrb r2, [r5, r1]
+ ldr r0, _02076138 ; =0x00000706
+ mov r1, #0x2c
+ add r3, r2, #0x0
+ add r0, r5, r0
+ mul r3, r1
+ ldrh r1, [r0, r3]
+ cmp r4, r1
+ beq _020760D4
+ add r1, r1, #0x1
+ strh r1, [r0, r3]
+_020760D4:
+ ldr r1, _02076134 ; =0x00000B25
+ add r0, r5, #0x0
+ ldrb r1, [r5, r1]
+ bl FUN_02072BBC
+ ldr r1, _02076134 ; =0x00000B25
+ add r0, r5, #0x4
+ ldrb r2, [r5, r1]
+ lsl r1, r2, #0x2
+ add r1, r2, r1
+ add r1, r1, #0x3
+ lsl r1, r1, #0x4
+ add r0, r0, r1
+ mov r1, #0x0
+ bl FUN_02019620
+ ldr r1, _02076134 ; =0x00000B25
+ add r0, r5, #0x0
+ ldrb r1, [r5, r1]
+ bl FUN_02072B7C
+ ldr r1, _02076134 ; =0x00000B25
+ add r0, r5, #0x0
+ ldrb r1, [r5, r1]
+ bl FUN_02072C28
+ ldr r0, _02076134 ; =0x00000B25
+ mov r1, #0x2c
+ ldrb r0, [r5, r0]
+ add r2, r0, #0x0
+ mul r2, r1
+ ldr r0, _02076138 ; =0x00000706
+ add r2, r5, r2
+ ldrh r0, [r2, r0]
+ cmp r4, r0
+ bne _0207612C
+ add r0, r5, #0x0
+ sub r1, #0x2d
+ mov r2, #0x1
+ bl FUN_020731E8
+ ldr r1, _0207613C ; =FUN_02075CE4
+ ldr r0, _02076140 ; =0x00000B14
+ str r1, [r5, r0]
+_0207612C:
+ mov r0, #0x5
+ pop {r3-r5, pc}
+ .balign 4
+_02076130: .word 0x000005A4
+_02076134: .word 0x00000B25
+_02076138: .word 0x00000706
+_0207613C: .word FUN_02075CE4
+_02076140: .word 0x00000B14
+
+ thumb_func_start FUN_02076144
+FUN_02076144: ; 0x02076144
+ push {r3, lr}
+ mov r1, #0x18
+ mov r2, #0xc
+ bl FUN_0206E7B8
+ cmp r0, #0x0
+ beq _02076156
+ mov r0, #0x1
+ pop {r3, pc}
+_02076156:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0207615C
+FUN_0207615C: ; 0x0207615C
+ push {r3-r6}
+ cmp r1, #0x6
+ blo _02076168
+ mov r0, #0xff
+ pop {r3-r6}
+ bx lr
+_02076168:
+ bhs _02076194
+ ldr r2, _0207619C ; =0x00000706
+ mov r3, #0x2c
+ add r4, r2, #0x0
+ add r4, #0x23
+_02076172:
+ add r5, r1, #0x0
+ mul r5, r3
+ add r6, r0, r5
+ ldrb r5, [r6, r4]
+ cmp r5, #0x0
+ beq _0207618A
+ ldrh r5, [r6, r2]
+ cmp r5, #0x0
+ bne _0207618A
+ add r0, r1, #0x0
+ pop {r3-r6}
+ bx lr
+_0207618A:
+ add r1, r1, #0x1
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ cmp r1, #0x6
+ blo _02076172
+_02076194:
+ mov r0, #0xff
+ pop {r3-r6}
+ bx lr
+ nop
+_0207619C: .word 0x00000706
+
+ thumb_func_start FUN_020761A0
+FUN_020761A0: ; 0x020761A0
+ push {r3-r7, lr}
+ ldr r1, _020763DC ; =0x00000B22
+ add r4, r0, #0x0
+ ldrb r2, [r4, r1]
+ cmp r2, #0x3
+ bls _020761AE
+ b _020763D6
+_020761AE:
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_020761BA: ; jump table (using 16-bit offset)
+ .short _020761C2 - _020761BA - 2; case 0
+ .short _02076212 - _020761BA - 2; case 1
+ .short _020762DC - _020761BA - 2; case 2
+ .short _02076360 - _020761BA - 2; case 3
+_020761C2:
+ mov r1, #0x0
+ bl FUN_0207615C
+ ldr r1, _020763E0 ; =0x00000B25
+ strb r0, [r4, r1]
+ ldrb r0, [r4, r1]
+ cmp r0, #0xff
+ bne _02076206
+ ldr r2, _020763E4 ; =0x0000069C
+ mov r1, #0x69
+ ldr r0, [r4, r2]
+ add r2, #0x8
+ ldr r2, [r4, r2]
+ bl FUN_0200A8E0
+ mov r1, #0x0
+ add r0, r4, #0x0
+ mvn r1, r1
+ mov r2, #0x1
+ bl FUN_020731E8
+ ldr r1, _020763E8 ; =FUN_02075CE4
+ ldr r0, _020763EC ; =0x00000B14
+ mov r2, #0x1
+ str r1, [r4, r0]
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_02073CB4
+ ldr r0, _020763E0 ; =0x00000B25
+ mov r1, #0x7
+ strb r1, [r4, r0]
+ mov r0, #0x5
+ pop {r3-r7, pc}
+_02076206:
+ cmp r0, #0x0
+ beq _02076212
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_020709FC
+_02076212:
+ ldr r0, _020763F0 ; =0x000005A4
+ ldr r1, _020763E0 ; =0x00000B25
+ ldr r0, [r4, r0]
+ ldrb r1, [r4, r1]
+ ldr r0, [r0, #0x0]
+ bl FUN_0206B9B0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_020772CC
+ add r3, r0, #0x0
+ mov r0, #0xc
+ str r0, [sp, #0x0]
+ ldr r1, _020763F0 ; =0x000005A4
+ add r0, r5, #0x0
+ ldr r1, [r4, r1]
+ mov r2, #0x0
+ ldrh r1, [r1, #0x24]
+ bl FUN_02084810
+ add r0, r5, #0x0
+ mov r1, #0xa2
+ mov r2, #0x0
+ bl FUN_020671BC
+ ldr r0, _020763E4 ; =0x0000069C
+ mov r1, #0x46
+ ldr r0, [r4, r0]
+ bl FUN_0200A914
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_020690E4
+ add r2, r0, #0x0
+ mov r0, #0x6a
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ bl FUN_0200ACF8
+ mov r1, #0x6a
+ lsl r1, r1, #0x4
+ ldr r0, [r4, r1]
+ add r1, r1, #0x4
+ ldr r1, [r4, r1]
+ add r2, r6, #0x0
+ bl FUN_0200B7B8
+ add r0, r6, #0x0
+ bl FUN_02021A20
+ ldr r7, _020763E0 ; =0x00000B25
+ ldr r3, _020763F4 ; =0x0000070E
+ ldrb r5, [r4, r7]
+ mov r2, #0x2c
+ add r1, r4, r3
+ add r0, r5, #0x0
+ mul r0, r2
+ ldrh r6, [r1, r0]
+ ldr r5, _020763F8 ; =0xFFFFF000
+ and r6, r5
+ mov r5, #0x7
+ orr r5, r6
+ strh r5, [r1, r0]
+ ldrb r1, [r4, r7]
+ add r0, r4, #0x0
+ mul r2, r1
+ add r2, r4, r2
+ ldrh r2, [r2, r3]
+ lsl r2, r2, #0x14
+ lsr r2, r2, #0x14
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+ bl FUN_02073A4C
+ add r1, r7, #0x0
+ ldrb r1, [r4, r1]
+ add r0, r4, #0x0
+ bl FUN_02072B20
+ add r1, r7, #0x0
+ ldrb r1, [r4, r1]
+ add r0, r4, #0x0
+ bl FUN_020709FC
+ add r1, r7, #0x0
+ ldrb r1, [r4, r1]
+ add r0, r4, #0x0
+ mov r2, #0x1
+ bl FUN_02073CB4
+ ldr r0, _020763FC ; =0x000005EC
+ bl FUN_020054C8
+ sub r0, r7, #0x3
+ ldrb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, r0]
+ b _020763D6
+_020762DC:
+ ldr r0, _020763F0 ; =0x000005A4
+ add r1, r1, #0x3
+ ldr r0, [r4, r0]
+ ldrb r1, [r4, r1]
+ ldr r0, [r0, #0x0]
+ bl FUN_0206B9B0
+ mov r1, #0xa2
+ mov r2, #0x0
+ bl FUN_020671BC
+ ldr r2, _020763E0 ; =0x00000B25
+ add r5, r0, #0x0
+ ldr r0, _02076400 ; =0x00000706
+ ldrb r3, [r4, r2]
+ add r1, r4, r0
+ mov r0, #0x2c
+ mul r0, r3
+ ldrh r3, [r1, r0]
+ add r3, r3, #0x1
+ strh r3, [r1, r0]
+ ldrb r1, [r4, r2]
+ add r0, r4, #0x0
+ bl FUN_02072BBC
+ ldr r1, _020763E0 ; =0x00000B25
+ add r0, r4, #0x4
+ ldrb r2, [r4, r1]
+ lsl r1, r2, #0x2
+ add r1, r2, r1
+ add r1, r1, #0x3
+ lsl r1, r1, #0x4
+ add r0, r0, r1
+ mov r1, #0x0
+ bl FUN_02019620
+ ldr r1, _020763E0 ; =0x00000B25
+ add r0, r4, #0x0
+ ldrb r1, [r4, r1]
+ bl FUN_02072B7C
+ ldr r1, _020763E0 ; =0x00000B25
+ add r0, r4, #0x0
+ ldrb r1, [r4, r1]
+ bl FUN_02072C28
+ ldr r0, _020763E0 ; =0x00000B25
+ mov r1, #0x2c
+ ldrb r0, [r4, r0]
+ add r2, r0, #0x0
+ mul r2, r1
+ ldr r0, _02076400 ; =0x00000706
+ add r2, r4, r2
+ ldrh r0, [r2, r0]
+ cmp r5, r0
+ bne _020763D6
+ add r0, r4, #0x0
+ sub r1, #0x2d
+ mov r2, #0x1
+ bl FUN_020731E8
+ ldr r0, _020763DC ; =0x00000B22
+ ldrb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, r0]
+ b _020763D6
+_02076360:
+ add r0, r1, #0x2
+ ldrb r0, [r4, r0]
+ bl FUN_0201BD70
+ cmp r0, #0x0
+ bne _020763D6
+ ldr r0, _02076404 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x3
+ tst r0, r1
+ beq _020763D6
+ ldr r0, _02076408 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r0, _020763E0 ; =0x00000B25
+ ldrb r5, [r4, r0]
+ add r0, r4, #0x0
+ add r1, r5, #0x1
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl FUN_0207615C
+ ldr r1, _020763E0 ; =0x00000B25
+ strb r0, [r4, r1]
+ ldrb r0, [r4, r1]
+ cmp r0, #0xff
+ beq _020763B2
+ mov r0, #0x89
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ mov r1, #0x0
+ bl FUN_0200D0E0
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ bl FUN_020709FC
+ ldr r0, _020763DC ; =0x00000B22
+ mov r1, #0x1
+ strb r1, [r4, r0]
+ b _020763D6
+_020763B2:
+ ldr r0, _020763F0 ; =0x000005A4
+ mov r2, #0x1
+ ldr r1, [r4, r0]
+ mov r3, #0xc
+ ldr r0, [r1, #0x4]
+ ldrh r1, [r1, #0x24]
+ bl FUN_0206EDD4
+ ldr r0, _020763F0 ; =0x000005A4
+ mov r1, #0x0
+ ldr r0, [r4, r0]
+ add r0, #0x23
+ strb r1, [r0, #0x0]
+ ldr r0, _020763E0 ; =0x00000B25
+ mov r1, #0x7
+ strb r1, [r4, r0]
+ mov r0, #0x1b
+ pop {r3-r7, pc}
+_020763D6:
+ mov r0, #0x7
+ pop {r3-r7, pc}
+ nop
+_020763DC: .word 0x00000B22
+_020763E0: .word 0x00000B25
+_020763E4: .word 0x0000069C
+_020763E8: .word FUN_02075CE4
+_020763EC: .word 0x00000B14
+_020763F0: .word 0x000005A4
+_020763F4: .word 0x0000070E
+_020763F8: .word 0xFFFFF000
+_020763FC: .word 0x000005EC
+_02076400: .word 0x00000706
+_02076404: .word 0x021C48B8
+_02076408: .word 0x000005DC
+
+ thumb_func_start FUN_0207640C
+FUN_0207640C: ; 0x0207640C
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ ldr r0, _020765B0 ; =0x000005A4
+ ldr r1, _020765B4 ; =0x00000B25
+ ldr r0, [r5, r0]
+ ldrb r1, [r5, r1]
+ ldr r0, [r0, #0x0]
+ bl FUN_0206B9B0
+ mov r1, #0xa3
+ mov r2, #0x0
+ add r4, r0, #0x0
+ bl FUN_020671BC
+ ldr r1, _020765B8 ; =0x00000B28
+ mov r2, #0x0
+ strh r0, [r5, r1]
+ add r0, r4, #0x0
+ mov r1, #0xa4
+ bl FUN_020671BC
+ ldr r1, _020765BC ; =0x00000B2A
+ mov r2, #0x0
+ strh r0, [r5, r1]
+ add r0, r4, #0x0
+ mov r1, #0xa5
+ bl FUN_020671BC
+ ldr r1, _020765C0 ; =0x00000B2C
+ mov r2, #0x0
+ strh r0, [r5, r1]
+ add r0, r4, #0x0
+ mov r1, #0xa7
+ bl FUN_020671BC
+ ldr r1, _020765C4 ; =0x00000B2E
+ mov r2, #0x0
+ strh r0, [r5, r1]
+ add r0, r4, #0x0
+ mov r1, #0xa8
+ bl FUN_020671BC
+ mov r1, #0xb3
+ lsl r1, r1, #0x4
+ strh r0, [r5, r1]
+ add r0, r4, #0x0
+ mov r1, #0xa6
+ mov r2, #0x0
+ bl FUN_020671BC
+ ldr r1, _020765C8 ; =0x00000B32
+ strh r0, [r5, r1]
+ ldr r0, _020765B0 ; =0x000005A4
+ ldr r6, [r5, r0]
+ add r0, r5, #0x0
+ bl FUN_020772CC
+ str r0, [sp, #0x0]
+ mov r0, #0xc
+ str r0, [sp, #0x4]
+ ldr r2, _020765B4 ; =0x00000B25
+ ldrh r1, [r6, #0x24]
+ ldrb r2, [r5, r2]
+ ldr r0, [r6, #0x0]
+ mov r3, #0x0
+ bl FUN_02084DD0
+ add r0, r4, #0x0
+ mov r1, #0xa0
+ mov r2, #0x0
+ bl FUN_020671BC
+ ldr r1, _020765B4 ; =0x00000B25
+ ldrb r2, [r5, r1]
+ mov r1, #0x2c
+ mul r1, r2
+ add r2, r5, r1
+ ldr r1, _020765CC ; =0x0000070A
+ strh r0, [r2, r1]
+ add r0, r4, #0x0
+ mov r1, #0xa2
+ mov r2, #0x0
+ bl FUN_020671BC
+ ldr r1, _020765B4 ; =0x00000B25
+ ldrb r2, [r5, r1]
+ mov r1, #0x2c
+ mul r1, r2
+ add r2, r5, r1
+ ldr r1, _020765D0 ; =0x00000706
+ strh r0, [r2, r1]
+ add r0, r4, #0x0
+ mov r1, #0xa3
+ mov r2, #0x0
+ bl FUN_020671BC
+ ldr r1, _020765B4 ; =0x00000B25
+ ldrb r2, [r5, r1]
+ mov r1, #0x2c
+ mul r1, r2
+ add r2, r5, r1
+ ldr r1, _020765D4 ; =0x00000708
+ strh r0, [r2, r1]
+ sub r1, #0x6c
+ ldr r0, [r5, r1]
+ mov r1, #0xc1
+ bl FUN_0200A914
+ add r7, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_020690E4
+ add r2, r0, #0x0
+ mov r0, #0x6a
+ lsl r0, r0, #0x4
+ ldr r0, [r5, r0]
+ mov r1, #0x0
+ bl FUN_0200ACF8
+ mov r0, #0x0
+ mov r3, #0x6a
+ str r0, [sp, #0x0]
+ mov r1, #0x1
+ ldr r2, _020765B4 ; =0x00000B25
+ str r1, [sp, #0x4]
+ ldrb r6, [r5, r2]
+ mov r2, #0x2c
+ lsl r3, r3, #0x4
+ mul r2, r6
+ ldr r0, [r5, r3]
+ add r2, r5, r2
+ add r3, #0x6a
+ ldrh r2, [r2, r3]
+ mov r3, #0x3
+ bl FUN_0200AD38
+ mov r1, #0x6a
+ lsl r1, r1, #0x4
+ ldr r0, [r5, r1]
+ add r1, r1, #0x4
+ ldr r1, [r5, r1]
+ add r2, r7, #0x0
+ bl FUN_0200B7B8
+ add r0, r7, #0x0
+ bl FUN_02021A20
+ add r0, r4, #0x0
+ bl FUN_0207C2D4
+ add r4, r0, #0x0
+ ldr r1, _020765B4 ; =0x00000B25
+ lsl r2, r4, #0x18
+ ldrb r1, [r5, r1]
+ add r0, r5, #0x0
+ lsr r2, r2, #0x18
+ bl FUN_02073A4C
+ cmp r4, #0x7
+ bne _0207656E
+ ldr r1, _020765B4 ; =0x00000B25
+ ldr r0, _020765D8 ; =0x0000070E
+ ldrb r3, [r5, r1]
+ add r2, r5, r0
+ mov r0, #0x2c
+ mul r0, r3
+ ldrh r4, [r2, r0]
+ ldr r3, _020765DC ; =0xFFFFF000
+ and r4, r3
+ mov r3, #0x7
+ orr r3, r4
+ strh r3, [r2, r0]
+ ldrb r1, [r5, r1]
+ add r0, r5, #0x0
+ bl FUN_02072B20
+_0207656E:
+ ldr r1, _020765B4 ; =0x00000B25
+ add r0, r5, #0x0
+ ldrb r1, [r5, r1]
+ bl FUN_020709FC
+ ldr r0, _020765E0 ; =FUN_020760A0
+ ldr r1, _020765E4 ; =0x00000B14
+ str r0, [r5, r1]
+ add r1, #0x11
+ ldrb r1, [r5, r1]
+ add r0, r5, #0x0
+ bl FUN_02072D1C
+ ldr r1, _020765B4 ; =0x00000B25
+ add r0, r5, #0x0
+ ldrb r1, [r5, r1]
+ bl FUN_02072DDC
+ mov r1, #0x0
+ add r0, r5, #0x0
+ mvn r1, r1
+ mov r2, #0x1
+ bl FUN_020731E8
+ ldr r1, _020765E8 ; =FUN_020765EC
+ ldr r0, _020765E4 ; =0x00000B14
+ str r1, [r5, r0]
+ mov r1, #0x0
+ add r0, #0x13
+ strb r1, [r5, r0]
+ mov r0, #0x5
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+_020765B0: .word 0x000005A4
+_020765B4: .word 0x00000B25
+_020765B8: .word 0x00000B28
+_020765BC: .word 0x00000B2A
+_020765C0: .word 0x00000B2C
+_020765C4: .word 0x00000B2E
+_020765C8: .word 0x00000B32
+_020765CC: .word 0x0000070A
+_020765D0: .word 0x00000706
+_020765D4: .word 0x00000708
+_020765D8: .word 0x0000070E
+_020765DC: .word 0xFFFFF000
+_020765E0: .word FUN_020760A0
+_020765E4: .word 0x00000B14
+_020765E8: .word FUN_020765EC
+
+ thumb_func_start FUN_020765EC
+FUN_020765EC: ; 0x020765EC
+ push {r3-r5, lr}
+ ldr r1, _0207686C ; =0x00000B27
+ add r4, r0, #0x0
+ ldrb r0, [r4, r1]
+ cmp r0, #0x6
+ bhi _020766A8
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02076604: ; jump table (using 16-bit offset)
+ .short _02076612 - _02076604 - 2; case 0
+ .short _0207663C - _02076604 - 2; case 1
+ .short _0207665A - _02076604 - 2; case 2
+ .short _02076680 - _02076604 - 2; case 3
+ .short _02076780 - _02076604 - 2; case 4
+ .short _020767A4 - _02076604 - 2; case 5
+ .short _02076814 - _02076604 - 2; case 6
+_02076612:
+ sub r0, r1, #0x3
+ ldrb r0, [r4, r0]
+ bl FUN_0201BD70
+ cmp r0, #0x0
+ bne _020766A8
+ ldr r0, _02076870 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x3
+ tst r0, r1
+ beq _020766A8
+ ldr r0, _02076874 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r4, #0x0
+ bl FUN_020734C0
+ ldr r0, _0207686C ; =0x00000B27
+ mov r1, #0x1
+ strb r1, [r4, r0]
+ b _02076868
+_0207663C:
+ ldr r0, _02076870 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x3
+ tst r0, r1
+ beq _020766A8
+ ldr r0, _02076874 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r4, #0x0
+ bl FUN_0207363C
+ ldr r0, _0207686C ; =0x00000B27
+ mov r1, #0x2
+ strb r1, [r4, r0]
+ b _02076868
+_0207665A:
+ ldr r0, _02076870 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x3
+ tst r0, r1
+ beq _020766A8
+ ldr r0, _02076874 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r4, #0x0
+ bl FUN_020736F4
+ ldr r0, _0207686C ; =0x00000B27
+ mov r1, #0x3
+ strb r1, [r4, r0]
+ ldr r0, _02076878 ; =0x000005A4
+ mov r1, #0x0
+ ldr r0, [r4, r0]
+ str r1, [r0, #0x34]
+ b _02076868
+_02076680:
+ ldr r0, _02076878 ; =0x000005A4
+ sub r1, r1, #0x2
+ ldr r0, [r4, r0]
+ ldrb r1, [r4, r1]
+ ldr r0, [r0, #0x0]
+ bl FUN_0206B9B0
+ ldr r1, _02076878 ; =0x000005A4
+ add r5, r0, #0x0
+ ldr r2, [r4, r1]
+ add r1, r2, #0x0
+ add r1, #0x34
+ add r2, #0x26
+ bl FUN_02069818
+ cmp r0, #0x0
+ beq _020766B2
+ ldr r1, _0207687C ; =0x0000FFFE
+ cmp r0, r1
+ bne _020766AA
+_020766A8:
+ b _02076868
+_020766AA:
+ add r1, r1, #0x1
+ cmp r0, r1
+ beq _020766BA
+ b _02076724
+_020766B2:
+ ldr r0, _0207686C ; =0x00000B27
+ mov r1, #0x6
+ strb r1, [r4, r0]
+ b _02076868
+_020766BA:
+ add r0, r5, #0x0
+ bl FUN_020690E4
+ add r2, r0, #0x0
+ mov r0, #0x6a
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ bl FUN_0200ACF8
+ mov r2, #0x6a
+ lsl r2, r2, #0x4
+ ldr r0, [r4, r2]
+ sub r2, #0xfc
+ ldr r2, [r4, r2]
+ mov r1, #0x1
+ ldrh r2, [r2, #0x26]
+ bl FUN_0200AD5C
+ ldr r0, _02076880 ; =0x0000069C
+ mov r1, #0x34
+ ldr r0, [r4, r0]
+ bl FUN_0200A914
+ mov r1, #0x6a
+ add r5, r0, #0x0
+ lsl r1, r1, #0x4
+ ldr r0, [r4, r1]
+ add r1, r1, #0x4
+ ldr r1, [r4, r1]
+ add r2, r5, #0x0
+ bl FUN_0200B7B8
+ add r0, r5, #0x0
+ bl FUN_02021A20
+ mov r1, #0x0
+ add r0, r4, #0x0
+ mvn r1, r1
+ mov r2, #0x0
+ bl FUN_020731E8
+ ldr r0, _02076884 ; =FUN_02076950
+ ldr r1, _02076888 ; =0x00000B18
+ ldr r2, _0207688C ; =FUN_020769A4
+ str r0, [r4, r1]
+ add r0, r1, #0x4
+ str r2, [r4, r0]
+ mov r0, #0x16
+ add r1, #0xa
+ strb r0, [r4, r1]
+ mov r0, #0x14
+ pop {r3-r5, pc}
+_02076724:
+ add r0, r5, #0x0
+ bl FUN_020690E4
+ add r2, r0, #0x0
+ mov r0, #0x6a
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ bl FUN_0200ACF8
+ mov r2, #0x6a
+ lsl r2, r2, #0x4
+ ldr r0, [r4, r2]
+ sub r2, #0xfc
+ ldr r2, [r4, r2]
+ mov r1, #0x1
+ ldrh r2, [r2, #0x26]
+ bl FUN_0200AD5C
+ ldr r0, _02076880 ; =0x0000069C
+ mov r1, #0xc2
+ ldr r0, [r4, r0]
+ bl FUN_0200A914
+ mov r1, #0x6a
+ add r5, r0, #0x0
+ lsl r1, r1, #0x4
+ ldr r0, [r4, r1]
+ add r1, r1, #0x4
+ ldr r1, [r4, r1]
+ add r2, r5, #0x0
+ bl FUN_0200B7B8
+ add r0, r5, #0x0
+ bl FUN_02021A20
+ mov r1, #0x0
+ add r0, r4, #0x0
+ mvn r1, r1
+ mov r2, #0x0
+ bl FUN_020731E8
+ ldr r0, _0207686C ; =0x00000B27
+ mov r1, #0x4
+ strb r1, [r4, r0]
+ b _02076868
+_02076780:
+ sub r0, r1, #0x3
+ ldrb r0, [r4, r0]
+ bl FUN_0201BD70
+ cmp r0, #0x0
+ bne _02076868
+ ldr r0, _02076870 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x3
+ tst r0, r1
+ beq _02076868
+ ldr r0, _02076874 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r0, _0207686C ; =0x00000B27
+ mov r1, #0x3
+ strb r1, [r4, r0]
+ b _02076868
+_020767A4:
+ ldr r0, _02076870 ; =0x021C48B8
+ ldr r2, [r0, #0x48]
+ mov r0, #0x3
+ tst r0, r2
+ beq _02076868
+ ldr r0, _02076878 ; =0x000005A4
+ sub r1, r1, #0x2
+ ldr r0, [r4, r0]
+ ldrb r1, [r4, r1]
+ ldr r0, [r0, #0x0]
+ bl FUN_0206B9B0
+ ldr r2, _02076878 ; =0x000005A4
+ add r1, r0, #0x0
+ ldr r2, [r4, r2]
+ add r0, r4, #0x0
+ add r2, #0x28
+ ldrb r2, [r2, #0x0]
+ bl FUN_02076F2C
+ ldr r0, _02076880 ; =0x0000069C
+ mov r1, #0x3d
+ ldr r0, [r4, r0]
+ bl FUN_0200A914
+ mov r2, #0x6a
+ lsl r2, r2, #0x4
+ add r5, r0, #0x0
+ ldr r0, [r4, r2]
+ sub r2, #0xfc
+ ldr r2, [r4, r2]
+ mov r1, #0x1
+ ldrh r2, [r2, #0x26]
+ bl FUN_0200AD5C
+ mov r1, #0x6a
+ lsl r1, r1, #0x4
+ ldr r0, [r4, r1]
+ add r1, r1, #0x4
+ ldr r1, [r4, r1]
+ add r2, r5, #0x0
+ bl FUN_0200B7B8
+ add r0, r5, #0x0
+ bl FUN_02021A20
+ mov r1, #0x0
+ add r0, r4, #0x0
+ mvn r1, r1
+ mov r2, #0x0
+ bl FUN_020731E8
+ ldr r0, _0207686C ; =0x00000B27
+ mov r1, #0x4
+ strb r1, [r4, r0]
+ b _02076868
+_02076814:
+ ldr r0, _02076878 ; =0x000005A4
+ sub r1, r1, #0x2
+ ldr r0, [r4, r0]
+ ldrb r1, [r4, r1]
+ ldr r0, [r0, #0x0]
+ bl FUN_0206B9B0
+ add r5, r0, #0x0
+ ldr r0, _02076878 ; =0x000005A4
+ ldr r0, [r4, r0]
+ ldr r0, [r0, #0x1c]
+ ldr r0, [r0, #0x1c]
+ ldr r0, [r0, #0x0]
+ bl FUN_02034A04
+ add r3, r0, #0x0
+ ldr r0, _02076878 ; =0x000005A4
+ lsl r3, r3, #0x10
+ ldr r1, [r4, r0]
+ mov r2, #0x0
+ add r0, r1, #0x0
+ add r0, #0x3c
+ str r0, [sp, #0x0]
+ ldr r0, [r1, #0x0]
+ add r1, r5, #0x0
+ lsr r3, r3, #0x10
+ bl FUN_02069168
+ ldr r1, _02076878 ; =0x000005A4
+ ldr r2, [r4, r1]
+ strh r0, [r2, #0x38]
+ ldr r1, [r4, r1]
+ ldrh r0, [r1, #0x38]
+ cmp r0, #0x0
+ beq _0207685E
+ mov r0, #0x9
+ b _02076860
+_0207685E:
+ mov r0, #0x0
+_02076860:
+ add r1, #0x23
+ strb r0, [r1, #0x0]
+ mov r0, #0x1b
+ pop {r3-r5, pc}
+_02076868:
+ mov r0, #0x5
+ pop {r3-r5, pc}
+ .balign 4
+_0207686C: .word 0x00000B27
+_02076870: .word 0x021C48B8
+_02076874: .word 0x000005DC
+_02076878: .word 0x000005A4
+_0207687C: .word 0x0000FFFE
+_02076880: .word 0x0000069C
+_02076884: .word FUN_02076950
+_02076888: .word 0x00000B18
+_0207688C: .word FUN_020769A4
+
+ thumb_func_start FUN_02076890
+FUN_02076890: ; 0x02076890
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ ldr r0, _0207693C ; =FUN_020765EC
+ ldr r1, _02076940 ; =0x00000B14
+ mov r2, #0x3
+ str r0, [r4, r1]
+ add r0, r1, #0x0
+ add r0, #0x13
+ strb r2, [r4, r0]
+ ldr r0, _02076944 ; =0x000005A4
+ add r1, #0x11
+ ldr r0, [r4, r0]
+ ldrb r1, [r4, r1]
+ ldr r0, [r0, #0x0]
+ bl FUN_0206B9B0
+ add r5, r0, #0x0
+ bl FUN_020690E4
+ add r2, r0, #0x0
+ mov r0, #0x6a
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ bl FUN_0200ACF8
+ ldr r0, _02076944 ; =0x000005A4
+ ldr r2, [r4, r0]
+ add r1, r2, #0x0
+ add r1, #0x28
+ ldrb r1, [r1, #0x0]
+ cmp r1, #0x4
+ bne _020768E6
+ add r0, #0xfc
+ ldrh r2, [r2, #0x26]
+ ldr r0, [r4, r0]
+ mov r1, #0x1
+ bl FUN_0200AD5C
+ add r0, r4, #0x0
+ bl FUN_020769A4
+ pop {r3-r5, pc}
+_020768E6:
+ add r0, r5, #0x0
+ add r1, #0x36
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r2, r0, #0x0
+ mov r0, #0x6a
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ mov r1, #0x1
+ bl FUN_0200AD5C
+ ldr r0, _02076948 ; =0x0000069C
+ mov r1, #0x3c
+ ldr r0, [r4, r0]
+ bl FUN_0200A914
+ mov r1, #0x6a
+ add r5, r0, #0x0
+ lsl r1, r1, #0x4
+ ldr r0, [r4, r1]
+ add r1, r1, #0x4
+ ldr r1, [r4, r1]
+ add r2, r5, #0x0
+ bl FUN_0200B7B8
+ add r0, r5, #0x0
+ bl FUN_02021A20
+ mov r1, #0x0
+ add r0, r4, #0x0
+ mvn r1, r1
+ mov r2, #0x1
+ bl FUN_020731E8
+ ldr r0, _0207694C ; =0x00000B22
+ mov r1, #0x5
+ strb r1, [r4, r0]
+ add r0, r0, #0x5
+ strb r1, [r4, r0]
+ mov r0, #0x14
+ pop {r3-r5, pc}
+ nop
+_0207693C: .word FUN_020765EC
+_02076940: .word 0x00000B14
+_02076944: .word 0x000005A4
+_02076948: .word 0x0000069C
+_0207694C: .word 0x00000B22
+
+ thumb_func_start FUN_02076950
+FUN_02076950: ; 0x02076950
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, _02076998 ; =0x0000069C
+ mov r1, #0x3b
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ mov r1, #0x6a
+ add r4, r0, #0x0
+ lsl r1, r1, #0x4
+ ldr r0, [r5, r1]
+ add r1, r1, #0x4
+ ldr r1, [r5, r1]
+ add r2, r4, #0x0
+ bl FUN_0200B7B8
+ add r0, r4, #0x0
+ bl FUN_02021A20
+ mov r1, #0x0
+ add r0, r5, #0x0
+ mvn r1, r1
+ mov r2, #0x0
+ bl FUN_020731E8
+ ldr r0, _0207699C ; =0x000005A4
+ mov r1, #0x5
+ ldr r0, [r5, r0]
+ add r0, #0x23
+ strb r1, [r0, #0x0]
+ ldr r0, _020769A0 ; =0x00000B22
+ mov r1, #0x15
+ strb r1, [r5, r0]
+ mov r0, #0x14
+ pop {r3-r5, pc}
+ nop
+_02076998: .word 0x0000069C
+_0207699C: .word 0x000005A4
+_020769A0: .word 0x00000B22
+
+ thumb_func_start FUN_020769A4
+FUN_020769A4: ; 0x020769A4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, _020769EC ; =0x0000069C
+ mov r1, #0x37
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ mov r1, #0x6a
+ add r4, r0, #0x0
+ lsl r1, r1, #0x4
+ ldr r0, [r5, r1]
+ add r1, r1, #0x4
+ ldr r1, [r5, r1]
+ add r2, r4, #0x0
+ bl FUN_0200B7B8
+ add r0, r4, #0x0
+ bl FUN_02021A20
+ mov r1, #0x0
+ add r0, r5, #0x0
+ mvn r1, r1
+ mov r2, #0x1
+ bl FUN_020731E8
+ ldr r0, _020769F0 ; =FUN_020769FC
+ ldr r1, _020769F4 ; =0x00000B18
+ ldr r2, _020769F8 ; =FUN_02076A48
+ str r0, [r5, r1]
+ add r0, r1, #0x4
+ str r2, [r5, r0]
+ mov r0, #0x16
+ add r1, #0xa
+ strb r0, [r5, r1]
+ mov r0, #0x14
+ pop {r3-r5, pc}
+ .balign 4
+_020769EC: .word 0x0000069C
+_020769F0: .word FUN_020769FC
+_020769F4: .word 0x00000B18
+_020769F8: .word FUN_02076A48
+
+ thumb_func_start FUN_020769FC
+FUN_020769FC: ; 0x020769FC
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, _02076A40 ; =0x0000069C
+ mov r1, #0x3a
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ mov r1, #0x6a
+ add r4, r0, #0x0
+ lsl r1, r1, #0x4
+ ldr r0, [r5, r1]
+ add r1, r1, #0x4
+ ldr r1, [r5, r1]
+ add r2, r4, #0x0
+ bl FUN_0200B7B8
+ add r0, r4, #0x0
+ bl FUN_02021A20
+ mov r1, #0x0
+ add r0, r5, #0x0
+ mvn r1, r1
+ mov r2, #0x0
+ bl FUN_020731E8
+ ldr r0, _02076A44 ; =0x00000B22
+ mov r1, #0x5
+ strb r1, [r5, r0]
+ mov r1, #0x4
+ add r0, r0, #0x5
+ strb r1, [r5, r0]
+ mov r0, #0x14
+ pop {r3-r5, pc}
+ nop
+_02076A40: .word 0x0000069C
+_02076A44: .word 0x00000B22
+
+ thumb_func_start FUN_02076A48
+FUN_02076A48: ; 0x02076A48
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, _02076A90 ; =0x0000069C
+ mov r1, #0x34
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ mov r1, #0x6a
+ add r4, r0, #0x0
+ lsl r1, r1, #0x4
+ ldr r0, [r5, r1]
+ add r1, r1, #0x4
+ ldr r1, [r5, r1]
+ add r2, r4, #0x0
+ bl FUN_0200B7B8
+ add r0, r4, #0x0
+ bl FUN_02021A20
+ mov r1, #0x0
+ add r0, r5, #0x0
+ mvn r1, r1
+ mov r2, #0x0
+ bl FUN_020731E8
+ ldr r0, _02076A94 ; =FUN_02076950
+ ldr r1, _02076A98 ; =0x00000B18
+ ldr r2, _02076A9C ; =FUN_020769A4
+ str r0, [r5, r1]
+ add r0, r1, #0x4
+ str r2, [r5, r0]
+ mov r0, #0x16
+ add r1, #0xa
+ strb r0, [r5, r1]
+ mov r0, #0x14
+ pop {r3-r5, pc}
+ .balign 4
+_02076A90: .word 0x0000069C
+_02076A94: .word FUN_02076950
+_02076A98: .word 0x00000B18
+_02076A9C: .word FUN_020769A4
+
+ thumb_func_start FUN_02076AA0
+FUN_02076AA0: ; 0x02076AA0
+ push {r3-r7, lr}
+ ldr r7, _02076AF4 ; =0x000005A4
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ mov r4, #0x0
+_02076AAA:
+ add r1, r4, #0x0
+ add r0, r6, #0x0
+ add r1, #0x36
+ mov r2, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x10
+ lsr r2, r0, #0x10
+ ldr r0, [r5, r7]
+ ldrh r1, [r0, #0x26]
+ cmp r2, r1
+ bne _02076AC6
+ mov r0, #0xfd
+ pop {r3-r7, pc}
+_02076AC6:
+ cmp r2, #0x0
+ beq _02076AD4
+ add r1, r4, #0x1
+ lsl r1, r1, #0x18
+ lsr r4, r1, #0x18
+ cmp r4, #0x4
+ blo _02076AAA
+_02076AD4:
+ ldrh r0, [r0, #0x24]
+ bl FUN_0206EA7C
+ add r1, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_0206A13C
+ cmp r0, #0x0
+ bne _02076AEA
+ mov r0, #0xff
+ pop {r3-r7, pc}
+_02076AEA:
+ cmp r4, #0x4
+ bne _02076AF0
+ mov r4, #0xfe
+_02076AF0:
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+_02076AF4: .word 0x000005A4
+
+ thumb_func_start FUN_02076AF8
+FUN_02076AF8: ; 0x02076AF8
+ push {r4-r6, lr}
+ add r4, r0, #0x0
+ ldr r0, _02076C78 ; =0x000005A4
+ ldr r1, _02076C7C ; =0x00000B25
+ ldr r0, [r4, r0]
+ ldrb r1, [r4, r1]
+ ldr r0, [r0, #0x0]
+ bl FUN_0206B9B0
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ bl FUN_02076AA0
+ add r5, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_020690E4
+ add r2, r0, #0x0
+ mov r0, #0x6a
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ bl FUN_0200ACF8
+ mov r2, #0x6a
+ lsl r2, r2, #0x4
+ ldr r0, [r4, r2]
+ sub r2, #0xfc
+ ldr r2, [r4, r2]
+ mov r1, #0x1
+ ldrh r2, [r2, #0x26]
+ bl FUN_0200AD5C
+ cmp r5, #0xfd
+ bhi _02076B5A
+ bhs _02076BB2
+ cmp r5, #0x3
+ bhi _02076B60
+ add r0, r5, r5
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02076B52: ; jump table (using 16-bit offset)
+ .short _02076B68 - _02076B52 - 2; case 0
+ .short _02076B68 - _02076B52 - 2; case 1
+ .short _02076B68 - _02076B52 - 2; case 2
+ .short _02076B68 - _02076B52 - 2; case 3
+_02076B5A:
+ cmp r5, #0xfe
+ bhi _02076B62
+ beq _02076BF2
+_02076B60:
+ b _02076C72
+_02076B62:
+ cmp r5, #0xff
+ beq _02076C34
+ b _02076C72
+_02076B68:
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ add r2, r5, #0x0
+ bl FUN_02076F2C
+ ldr r0, _02076C80 ; =0x0000069C
+ mov r1, #0x3d
+ ldr r0, [r4, r0]
+ bl FUN_0200A914
+ mov r1, #0x6a
+ add r5, r0, #0x0
+ lsl r1, r1, #0x4
+ ldr r0, [r4, r1]
+ add r1, r1, #0x4
+ ldr r1, [r4, r1]
+ add r2, r5, #0x0
+ bl FUN_0200B7B8
+ add r0, r5, #0x0
+ bl FUN_02021A20
+ mov r1, #0x0
+ add r0, r4, #0x0
+ mvn r1, r1
+ mov r2, #0x1
+ bl FUN_020731E8
+ ldr r0, _02076C78 ; =0x000005A4
+ mov r1, #0x0
+ ldr r0, [r4, r0]
+ add r0, #0x23
+ strb r1, [r0, #0x0]
+ ldr r0, _02076C84 ; =0x00000B22
+ mov r1, #0x15
+ strb r1, [r4, r0]
+ b _02076C72
+_02076BB2:
+ ldr r0, _02076C80 ; =0x0000069C
+ mov r1, #0x3f
+ ldr r0, [r4, r0]
+ bl FUN_0200A914
+ mov r1, #0x6a
+ add r5, r0, #0x0
+ lsl r1, r1, #0x4
+ ldr r0, [r4, r1]
+ add r1, r1, #0x4
+ ldr r1, [r4, r1]
+ add r2, r5, #0x0
+ bl FUN_0200B7B8
+ add r0, r5, #0x0
+ bl FUN_02021A20
+ mov r1, #0x0
+ add r0, r4, #0x0
+ mvn r1, r1
+ mov r2, #0x1
+ bl FUN_020731E8
+ ldr r0, _02076C78 ; =0x000005A4
+ mov r1, #0x0
+ ldr r0, [r4, r0]
+ add r0, #0x23
+ strb r1, [r0, #0x0]
+ ldr r0, _02076C84 ; =0x00000B22
+ mov r1, #0x15
+ strb r1, [r4, r0]
+ b _02076C72
+_02076BF2:
+ ldr r0, _02076C80 ; =0x0000069C
+ mov r1, #0x34
+ ldr r0, [r4, r0]
+ bl FUN_0200A914
+ mov r1, #0x6a
+ add r5, r0, #0x0
+ lsl r1, r1, #0x4
+ ldr r0, [r4, r1]
+ add r1, r1, #0x4
+ ldr r1, [r4, r1]
+ add r2, r5, #0x0
+ bl FUN_0200B7B8
+ add r0, r5, #0x0
+ bl FUN_02021A20
+ mov r1, #0x0
+ add r0, r4, #0x0
+ mvn r1, r1
+ mov r2, #0x1
+ bl FUN_020731E8
+ ldr r0, _02076C88 ; =FUN_02076DD4
+ ldr r1, _02076C8C ; =0x00000B18
+ ldr r2, _02076C90 ; =FUN_02076E28
+ str r0, [r4, r1]
+ add r0, r1, #0x4
+ str r2, [r4, r0]
+ mov r0, #0x16
+ add r1, #0xa
+ strb r0, [r4, r1]
+ b _02076C72
+_02076C34:
+ ldr r0, _02076C80 ; =0x0000069C
+ mov r1, #0x3e
+ ldr r0, [r4, r0]
+ bl FUN_0200A914
+ mov r1, #0x6a
+ add r5, r0, #0x0
+ lsl r1, r1, #0x4
+ ldr r0, [r4, r1]
+ add r1, r1, #0x4
+ ldr r1, [r4, r1]
+ add r2, r5, #0x0
+ bl FUN_0200B7B8
+ add r0, r5, #0x0
+ bl FUN_02021A20
+ mov r1, #0x0
+ add r0, r4, #0x0
+ mvn r1, r1
+ mov r2, #0x1
+ bl FUN_020731E8
+ ldr r0, _02076C78 ; =0x000005A4
+ mov r1, #0x0
+ ldr r0, [r4, r0]
+ add r0, #0x23
+ strb r1, [r0, #0x0]
+ ldr r0, _02076C84 ; =0x00000B22
+ mov r1, #0x15
+ strb r1, [r4, r0]
+_02076C72:
+ mov r0, #0x14
+ pop {r4-r6, pc}
+ nop
+_02076C78: .word 0x000005A4
+_02076C7C: .word 0x00000B25
+_02076C80: .word 0x0000069C
+_02076C84: .word 0x00000B22
+_02076C88: .word FUN_02076DD4
+_02076C8C: .word 0x00000B18
+_02076C90: .word FUN_02076E28
+
+ thumb_func_start FUN_02076C94
+FUN_02076C94: ; 0x02076C94
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ ldr r0, _02076D2C ; =0x000005A4
+ ldr r1, _02076D30 ; =0x00000B25
+ ldr r0, [r4, r0]
+ ldrb r1, [r4, r1]
+ ldr r0, [r0, #0x0]
+ bl FUN_0206B9B0
+ add r5, r0, #0x0
+ bl FUN_020690E4
+ add r2, r0, #0x0
+ mov r0, #0x6a
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ bl FUN_0200ACF8
+ ldr r0, _02076D2C ; =0x000005A4
+ ldr r2, [r4, r0]
+ add r1, r2, #0x0
+ add r1, #0x28
+ ldrb r1, [r1, #0x0]
+ cmp r1, #0x4
+ bne _02076CDC
+ add r0, #0xfc
+ ldrh r2, [r2, #0x26]
+ ldr r0, [r4, r0]
+ mov r1, #0x1
+ bl FUN_0200AD5C
+ add r0, r4, #0x0
+ bl FUN_02076E28
+ pop {r3-r5, pc}
+_02076CDC:
+ add r0, r5, #0x0
+ add r1, #0x36
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r2, r0, #0x0
+ mov r0, #0x6a
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ mov r1, #0x1
+ bl FUN_0200AD5C
+ ldr r0, _02076D34 ; =0x0000069C
+ mov r1, #0x3c
+ ldr r0, [r4, r0]
+ bl FUN_0200A914
+ mov r1, #0x6a
+ add r5, r0, #0x0
+ lsl r1, r1, #0x4
+ ldr r0, [r4, r1]
+ add r1, r1, #0x4
+ ldr r1, [r4, r1]
+ add r2, r5, #0x0
+ bl FUN_0200B7B8
+ add r0, r5, #0x0
+ bl FUN_02021A20
+ mov r1, #0x0
+ add r0, r4, #0x0
+ mvn r1, r1
+ mov r2, #0x1
+ bl FUN_020731E8
+ ldr r0, _02076D38 ; =0x00000B22
+ mov r1, #0x12
+ strb r1, [r4, r0]
+ mov r0, #0x14
+ pop {r3-r5, pc}
+ .balign 4
+_02076D2C: .word 0x000005A4
+_02076D30: .word 0x00000B25
+_02076D34: .word 0x0000069C
+_02076D38: .word 0x00000B22
+
+ thumb_func_start FUN_02076D3C
+FUN_02076D3C: ; 0x02076D3C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, _02076DC0 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x3
+ tst r0, r1
+ beq _02076DBC
+ ldr r0, _02076DC4 ; =0x000005A4
+ ldr r1, _02076DC8 ; =0x00000B25
+ ldr r0, [r5, r0]
+ ldrb r1, [r5, r1]
+ ldr r0, [r0, #0x0]
+ bl FUN_0206B9B0
+ ldr r2, _02076DC4 ; =0x000005A4
+ add r1, r0, #0x0
+ ldr r2, [r5, r2]
+ add r0, r5, #0x0
+ add r2, #0x28
+ ldrb r2, [r2, #0x0]
+ bl FUN_02076F2C
+ ldr r0, _02076DCC ; =0x0000069C
+ mov r1, #0x3d
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ mov r2, #0x6a
+ lsl r2, r2, #0x4
+ add r4, r0, #0x0
+ ldr r0, [r5, r2]
+ sub r2, #0xfc
+ ldr r2, [r5, r2]
+ mov r1, #0x1
+ ldrh r2, [r2, #0x26]
+ bl FUN_0200AD5C
+ mov r1, #0x6a
+ lsl r1, r1, #0x4
+ ldr r0, [r5, r1]
+ add r1, r1, #0x4
+ ldr r1, [r5, r1]
+ add r2, r4, #0x0
+ bl FUN_0200B7B8
+ add r0, r4, #0x0
+ bl FUN_02021A20
+ mov r1, #0x0
+ add r0, r5, #0x0
+ mvn r1, r1
+ mov r2, #0x0
+ bl FUN_020731E8
+ ldr r0, _02076DC4 ; =0x000005A4
+ mov r1, #0x0
+ ldr r0, [r5, r0]
+ add r0, #0x23
+ strb r1, [r0, #0x0]
+ ldr r0, _02076DD0 ; =0x00000B22
+ mov r1, #0x15
+ strb r1, [r5, r0]
+ mov r0, #0x14
+ pop {r3-r5, pc}
+_02076DBC:
+ mov r0, #0x12
+ pop {r3-r5, pc}
+ .balign 4
+_02076DC0: .word 0x021C48B8
+_02076DC4: .word 0x000005A4
+_02076DC8: .word 0x00000B25
+_02076DCC: .word 0x0000069C
+_02076DD0: .word 0x00000B22
+
+ thumb_func_start FUN_02076DD4
+FUN_02076DD4: ; 0x02076DD4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, _02076E1C ; =0x0000069C
+ mov r1, #0x3b
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ mov r1, #0x6a
+ add r4, r0, #0x0
+ lsl r1, r1, #0x4
+ ldr r0, [r5, r1]
+ add r1, r1, #0x4
+ ldr r1, [r5, r1]
+ add r2, r4, #0x0
+ bl FUN_0200B7B8
+ add r0, r4, #0x0
+ bl FUN_02021A20
+ mov r1, #0x0
+ add r0, r5, #0x0
+ mvn r1, r1
+ mov r2, #0x0
+ bl FUN_020731E8
+ ldr r0, _02076E20 ; =0x000005A4
+ mov r1, #0x4
+ ldr r0, [r5, r0]
+ add r0, #0x23
+ strb r1, [r0, #0x0]
+ ldr r0, _02076E24 ; =0x00000B22
+ mov r1, #0x15
+ strb r1, [r5, r0]
+ mov r0, #0x14
+ pop {r3-r5, pc}
+ nop
+_02076E1C: .word 0x0000069C
+_02076E20: .word 0x000005A4
+_02076E24: .word 0x00000B22
+
+ thumb_func_start FUN_02076E28
+FUN_02076E28: ; 0x02076E28
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, _02076E70 ; =0x0000069C
+ mov r1, #0x37
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ mov r1, #0x6a
+ add r4, r0, #0x0
+ lsl r1, r1, #0x4
+ ldr r0, [r5, r1]
+ add r1, r1, #0x4
+ ldr r1, [r5, r1]
+ add r2, r4, #0x0
+ bl FUN_0200B7B8
+ add r0, r4, #0x0
+ bl FUN_02021A20
+ mov r1, #0x0
+ add r0, r5, #0x0
+ mvn r1, r1
+ mov r2, #0x1
+ bl FUN_020731E8
+ ldr r0, _02076E74 ; =FUN_02076E80
+ ldr r1, _02076E78 ; =0x00000B18
+ ldr r2, _02076E7C ; =FUN_02076ED4
+ str r0, [r5, r1]
+ add r0, r1, #0x4
+ str r2, [r5, r0]
+ mov r0, #0x16
+ add r1, #0xa
+ strb r0, [r5, r1]
+ mov r0, #0x14
+ pop {r3-r5, pc}
+ .balign 4
+_02076E70: .word 0x0000069C
+_02076E74: .word FUN_02076E80
+_02076E78: .word 0x00000B18
+_02076E7C: .word FUN_02076ED4
+
+ thumb_func_start FUN_02076E80
+FUN_02076E80: ; 0x02076E80
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, _02076EC8 ; =0x0000069C
+ mov r1, #0x3a
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ mov r1, #0x6a
+ add r4, r0, #0x0
+ lsl r1, r1, #0x4
+ ldr r0, [r5, r1]
+ add r1, r1, #0x4
+ ldr r1, [r5, r1]
+ add r2, r4, #0x0
+ bl FUN_0200B7B8
+ add r0, r4, #0x0
+ bl FUN_02021A20
+ mov r1, #0x0
+ add r0, r5, #0x0
+ mvn r1, r1
+ mov r2, #0x0
+ bl FUN_020731E8
+ ldr r0, _02076ECC ; =0x000005A4
+ mov r1, #0x0
+ ldr r0, [r5, r0]
+ add r0, #0x23
+ strb r1, [r0, #0x0]
+ ldr r0, _02076ED0 ; =0x00000B22
+ mov r1, #0x15
+ strb r1, [r5, r0]
+ mov r0, #0x14
+ pop {r3-r5, pc}
+ nop
+_02076EC8: .word 0x0000069C
+_02076ECC: .word 0x000005A4
+_02076ED0: .word 0x00000B22
+
+ thumb_func_start FUN_02076ED4
+FUN_02076ED4: ; 0x02076ED4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, _02076F1C ; =0x0000069C
+ mov r1, #0x34
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ mov r1, #0x6a
+ add r4, r0, #0x0
+ lsl r1, r1, #0x4
+ ldr r0, [r5, r1]
+ add r1, r1, #0x4
+ ldr r1, [r5, r1]
+ add r2, r4, #0x0
+ bl FUN_0200B7B8
+ add r0, r4, #0x0
+ bl FUN_02021A20
+ mov r1, #0x0
+ add r0, r5, #0x0
+ mvn r1, r1
+ mov r2, #0x0
+ bl FUN_020731E8
+ ldr r0, _02076F20 ; =FUN_02076DD4
+ ldr r1, _02076F24 ; =0x00000B18
+ ldr r2, _02076F28 ; =FUN_02076E28
+ str r0, [r5, r1]
+ add r0, r1, #0x4
+ str r2, [r5, r0]
+ mov r0, #0x16
+ add r1, #0xa
+ strb r0, [r5, r1]
+ mov r0, #0x14
+ pop {r3-r5, pc}
+ .balign 4
+_02076F1C: .word 0x0000069C
+_02076F20: .word FUN_02076DD4
+_02076F24: .word 0x00000B18
+_02076F28: .word FUN_02076E28
+
+ thumb_func_start FUN_02076F2C
+FUN_02076F2C: ; 0x02076F2C
+ push {r3-r6, lr}
+ sub sp, #0x4
+ add r5, r0, #0x0
+ ldr r0, _02076FAC ; =0x000005A4
+ add r6, r2, #0x0
+ ldr r0, [r5, r0]
+ add r4, r1, #0x0
+ ldrh r0, [r0, #0x26]
+ add r1, r6, #0x0
+ add r1, #0x36
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ add r2, sp, #0x0
+ bl FUN_02067830
+ mov r0, #0x0
+ add r1, r6, #0x0
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ add r1, #0x3e
+ add r2, sp, #0x0
+ bl FUN_02067830
+ ldr r0, _02076FAC ; =0x000005A4
+ mov r1, #0x0
+ ldr r0, [r5, r0]
+ ldrh r0, [r0, #0x26]
+ bl FUN_0206AB30
+ add r6, #0x3a
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ add r2, sp, #0x0
+ bl FUN_02067830
+ ldr r0, _02076FAC ; =0x000005A4
+ ldr r1, [r5, r0]
+ ldrh r0, [r1, #0x24]
+ cmp r0, #0x0
+ beq _02076FA8
+ ldrh r0, [r1, #0x26]
+ bl FUN_0206EA54
+ cmp r0, #0x0
+ bne _02076F98
+ ldr r0, _02076FAC ; =0x000005A4
+ mov r2, #0x1
+ ldr r1, [r5, r0]
+ mov r3, #0xc
+ ldr r0, [r1, #0x4]
+ ldrh r1, [r1, #0x24]
+ bl FUN_0206EDD4
+_02076F98:
+ add r0, r5, #0x0
+ bl FUN_020772CC
+ add r2, r0, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x4
+ bl FUN_020688E8
+_02076FA8:
+ add sp, #0x4
+ pop {r3-r6, pc}
+ .balign 4
+_02076FAC: .word 0x000005A4
+
+ thumb_func_start FUN_02076FB0
+FUN_02076FB0: ; 0x02076FB0
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldr r0, _0207702C ; =0x000005A4
+ add r6, r1, #0x0
+ ldr r1, _02077030 ; =0x00000B25
+ ldr r0, [r5, r0]
+ ldrb r1, [r5, r1]
+ ldr r0, [r0, #0x0]
+ bl FUN_0206B9B0
+ add r1, r6, #0x0
+ add r1, #0x36
+ mov r2, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ ldr r0, _02077034 ; =0x0000069C
+ add r1, r6, #0x0
+ ldr r0, [r5, r0]
+ add r1, #0xa2
+ bl FUN_0200A914
+ add r7, r0, #0x0
+ mov r0, #0x6a
+ lsl r0, r0, #0x4
+ ldr r0, [r5, r0]
+ mov r1, #0x0
+ add r2, r4, #0x0
+ bl FUN_0200AD5C
+ mov r1, #0x6a
+ lsl r1, r1, #0x4
+ ldr r0, [r5, r1]
+ add r1, #0x8
+ ldr r1, [r5, r1]
+ add r2, r7, #0x0
+ bl FUN_0200B7B8
+ add r0, r7, #0x0
+ bl FUN_02021A20
+ cmp r4, #0x0
+ ldr r1, _02077038 ; =0x000006F8
+ bne _0207701C
+ ldr r0, [r5, r1]
+ sub r1, #0x50
+ mov r2, #0x2
+ ldr r1, [r5, r1]
+ mvn r2, r2
+ bl FUN_020128A0
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0207701C:
+ ldr r0, [r5, r1]
+ sub r1, #0x50
+ ldr r1, [r5, r1]
+ add r2, r6, #0x0
+ bl FUN_020128A0
+ mov r0, #0x1
+ pop {r3-r7, pc}
+ .balign 4
+_0207702C: .word 0x000005A4
+_02077030: .word 0x00000B25
+_02077034: .word 0x0000069C
+_02077038: .word 0x000006F8
+
+ thumb_func_start FUN_0207703C
+FUN_0207703C: ; 0x0207703C
+ push {r4-r5, lr}
+ sub sp, #0x14
+ add r4, r0, #0x0
+ cmp r1, #0x0
+ bne _02077050
+ mov r1, #0x29
+ mov r2, #0x1
+ bl FUN_020731D4
+ b _02077058
+_02077050:
+ mov r1, #0x28
+ mov r2, #0x1
+ bl FUN_020731D4
+_02077058:
+ mov r0, #0x4
+ mov r1, #0xc
+ bl FUN_02012838
+ ldr r1, _02077108 ; =0x000006F8
+ str r0, [r4, r1]
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_02076FB0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_02076FB0
+ add r0, r5, r0
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ add r0, r4, #0x0
+ mov r1, #0x2
+ bl FUN_02076FB0
+ add r0, r5, r0
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ add r0, r4, #0x0
+ mov r1, #0x3
+ bl FUN_02076FB0
+ add r0, r5, r0
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ ldr r0, _02077108 ; =0x000006F8
+ mov r2, #0x0
+ ldr r0, [r4, r0]
+ str r0, [sp, #0x8]
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ str r0, [sp, #0xc]
+ add r0, sp, #0x8
+ strb r2, [r0, #0x8]
+ mov r2, #0x1
+ strb r2, [r0, #0x9]
+ mov r2, #0x4
+ strb r2, [r0, #0xa]
+ ldrb r3, [r0, #0xb]
+ mov r2, #0xf
+ bic r3, r2
+ strb r3, [r0, #0xb]
+ ldrb r3, [r0, #0xb]
+ mov r2, #0x30
+ bic r3, r2
+ strb r3, [r0, #0xb]
+ cmp r1, #0x4
+ ldrb r2, [r0, #0xb]
+ bne _020770D6
+ mov r1, #0xc0
+ bic r2, r1
+ mov r1, #0x40
+ orr r1, r2
+ strb r1, [r0, #0xb]
+ b _020770DC
+_020770D6:
+ mov r1, #0xc0
+ bic r2, r1
+ strb r2, [r0, #0xb]
+_020770DC:
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ mov r1, #0x1
+ add r0, r4, r0
+ add r2, r1, #0x0
+ mov r3, #0xe
+ bl FUN_0200CCA4
+ mov r0, #0xc
+ str r0, [sp, #0x0]
+ mov r0, #0x2
+ mov r2, #0x0
+ str r0, [sp, #0x4]
+ add r0, sp, #0x8
+ mov r1, #0x8
+ add r3, r2, #0x0
+ bl FUN_02001C14
+ ldr r1, _0207710C ; =0x000006FC
+ str r0, [r4, r1]
+ add sp, #0x14
+ pop {r4-r5, pc}
+ .balign 4
+_02077108: .word 0x000006F8
+_0207710C: .word 0x000006FC
+
+ thumb_func_start FUN_02077110
+FUN_02077110: ; 0x02077110
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ ldr r0, _0207722C ; =0x000006FC
+ ldr r0, [r5, r0]
+ bl FUN_02001C78
+ add r4, r0, #0x0
+ mov r0, #0x1
+ mvn r0, r0
+ cmp r4, r0
+ beq _02077130
+ add r0, r0, #0x1
+ cmp r4, r0
+ beq _02077226
+ b _0207716A
+_02077130:
+ mov r0, #0x85
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ mov r1, #0x1
+ bl FUN_0200D0E0
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ mov r1, #0x1
+ bl FUN_0200CCF8
+ ldr r0, _0207722C ; =0x000006FC
+ mov r1, #0x0
+ ldr r0, [r5, r0]
+ bl FUN_02001C5C
+ ldr r0, _02077230 ; =0x000006F8
+ ldr r0, [r5, r0]
+ bl FUN_02012870
+ add r0, r5, #0x0
+ mov r1, #0x20
+ mov r2, #0x1
+ bl FUN_020731C0
+ add sp, #0x8
+ mov r0, #0x4
+ pop {r4-r6, pc}
+_0207716A:
+ mov r0, #0x85
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ mov r1, #0x1
+ bl FUN_0200D0E0
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ mov r1, #0x1
+ bl FUN_0200CCF8
+ ldr r0, _0207722C ; =0x000006FC
+ mov r1, #0x0
+ ldr r0, [r5, r0]
+ bl FUN_02001C5C
+ ldr r0, _02077230 ; =0x000006F8
+ ldr r0, [r5, r0]
+ bl FUN_02012870
+ ldr r0, _02077234 ; =0x000005A4
+ ldr r6, [r5, r0]
+ add r0, r5, #0x0
+ bl FUN_020772CC
+ str r0, [sp, #0x0]
+ mov r0, #0xc
+ str r0, [sp, #0x4]
+ ldr r2, _02077238 ; =0x00000B25
+ lsl r3, r4, #0x18
+ ldrh r1, [r6, #0x24]
+ ldrb r2, [r5, r2]
+ ldr r0, [r6, #0x0]
+ lsr r3, r3, #0x18
+ bl FUN_02084DD0
+ cmp r0, #0x1
+ bne _020771F6
+ ldr r0, _02077234 ; =0x000005A4
+ ldr r1, _02077238 ; =0x00000B25
+ ldr r0, [r5, r0]
+ ldrb r1, [r5, r1]
+ ldr r0, [r0, #0x0]
+ bl FUN_0206B9B0
+ add r4, #0x36
+ add r1, r4, #0x0
+ mov r2, #0x0
+ bl FUN_020671BC
+ ldr r1, _02077234 ; =0x000005A4
+ add r2, r0, #0x0
+ ldr r1, [r5, r1]
+ add r0, r5, #0x0
+ ldrh r1, [r1, #0x24]
+ bl FUN_020757F4
+ ldr r0, _02077234 ; =0x000005A4
+ mov r2, #0x1
+ ldr r1, [r5, r0]
+ mov r3, #0xc
+ ldr r0, [r1, #0x4]
+ ldrh r1, [r1, #0x24]
+ bl FUN_0206EDD4
+ ldr r0, _0207723C ; =0x000005EC
+ bl FUN_020054C8
+ b _02077204
+_020771F6:
+ ldr r2, _02077240 ; =0x0000069C
+ mov r1, #0x69
+ ldr r0, [r5, r2]
+ add r2, #0x8
+ ldr r2, [r5, r2]
+ bl FUN_0200A8E0
+_02077204:
+ mov r1, #0x0
+ add r0, r5, #0x0
+ mvn r1, r1
+ mov r2, #0x1
+ bl FUN_020731E8
+ ldr r0, _02077234 ; =0x000005A4
+ mov r1, #0x0
+ ldr r0, [r5, r0]
+ add sp, #0x8
+ add r0, #0x23
+ strb r1, [r0, #0x0]
+ ldr r0, _02077244 ; =0x00000B22
+ mov r1, #0x15
+ strb r1, [r5, r0]
+ mov r0, #0x14
+ pop {r4-r6, pc}
+_02077226:
+ mov r0, #0x6
+ add sp, #0x8
+ pop {r4-r6, pc}
+ .balign 4
+_0207722C: .word 0x000006FC
+_02077230: .word 0x000006F8
+_02077234: .word 0x000005A4
+_02077238: .word 0x00000B25
+_0207723C: .word 0x000005EC
+_02077240: .word 0x0000069C
+_02077244: .word 0x00000B22
+
+ thumb_func_start FUN_02077248
+FUN_02077248: ; 0x02077248
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x81
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ mov r1, #0x1
+ bl FUN_0200D0E0
+ ldr r0, _020772BC ; =0x00000B25
+ ldr r2, _020772C0 ; =0x0000070C
+ ldrb r1, [r4, r0]
+ mov r0, #0x2c
+ mul r0, r1
+ add r0, r4, r0
+ ldrh r0, [r0, r2]
+ cmp r0, #0x0
+ bne _02077286
+ add r0, r2, #0x0
+ sub r0, #0x70
+ sub r2, #0x68
+ ldr r0, [r4, r0]
+ ldr r2, [r4, r2]
+ mov r1, #0x7f
+ bl FUN_0200A8E0
+ ldr r1, _020772BC ; =0x00000B25
+ add r0, r4, #0x0
+ ldrb r1, [r4, r1]
+ bl FUN_02073AB8
+ b _0207729C
+_02077286:
+ add r0, r2, #0x0
+ sub r0, #0x70
+ sub r2, #0x68
+ ldr r0, [r4, r0]
+ ldr r2, [r4, r2]
+ mov r1, #0x80
+ bl FUN_0200A8E0
+ ldr r0, _020772BC ; =0x00000B25
+ mov r1, #0x7
+ strb r1, [r4, r0]
+_0207729C:
+ mov r1, #0x0
+ add r0, r4, #0x0
+ mvn r1, r1
+ mov r2, #0x1
+ bl FUN_020731E8
+ ldr r0, _020772C4 ; =0x000005A4
+ mov r1, #0x0
+ ldr r0, [r4, r0]
+ add r0, #0x23
+ strb r1, [r0, #0x0]
+ ldr r0, _020772C8 ; =0x00000B22
+ mov r1, #0x15
+ strb r1, [r4, r0]
+ pop {r4, pc}
+ nop
+_020772BC: .word 0x00000B25
+_020772C0: .word 0x0000070C
+_020772C4: .word 0x000005A4
+_020772C8: .word 0x00000B22
+
+ thumb_func_start FUN_020772CC
+FUN_020772CC: ; 0x020772CC
+ push {r3, lr}
+ ldr r1, _020772E4 ; =0x000005A4
+ ldr r0, [r0, r1]
+ ldr r0, [r0, #0x1c]
+ ldr r0, [r0, #0x1c]
+ ldr r0, [r0, #0x0]
+ bl FUN_02034824
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ pop {r3, pc}
+ nop
+_020772E4: .word 0x000005A4
+
+ thumb_func_start FUN_020772E8
+FUN_020772E8: ; 0x020772E8
+ push {r3-r6, lr}
+ sub sp, #0xc
+ add r5, r1, #0x0
+ ldr r1, [r5, #0x0]
+ add r6, r0, #0x0
+ cmp r1, #0x0
+ beq _020772FE
+ cmp r1, #0x1
+ bne _020772FC
+ b _02077456
+_020772FC:
+ b _02077490
+_020772FE:
+ mov r0, #0x0
+ add r1, r0, #0x0
+ bl FUN_02015F10
+ bl FUN_02015F1C
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ mov r2, #0x1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2, #0x0]
+ ldr r0, _02077498 ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2, #0x0]
+ ldr r2, _0207749C ; =0x04001000
+ ldr r1, [r2, #0x0]
+ and r0, r1
+ str r0, [r2, #0x0]
+ mov r2, #0xa
+ mov r0, #0x3
+ mov r1, #0x12
+ lsl r2, r2, #0xe
+ bl FUN_0201681C
+ mov r1, #0x5d
+ add r0, r6, #0x0
+ lsl r1, r1, #0x4
+ mov r2, #0x12
+ bl FUN_02006268
+ mov r2, #0x5d
+ mov r1, #0x0
+ lsl r2, r2, #0x4
+ add r4, r0, #0x0
+ blx FUN_020DF4A4
+ mov r0, #0x12
+ bl FUN_02016B94
+ mov r1, #0x16
+ lsl r1, r1, #0x4
+ str r0, [r4, r1]
+ mov r0, #0x12
+ bl FUN_0200AA80
+ mov r2, #0x5a
+ lsl r2, r2, #0x2
+ str r0, [r4, r2]
+ mov r0, #0x0
+ mov r1, #0x1a
+ add r2, #0xb
+ mov r3, #0x12
+ bl FUN_0200A86C
+ mov r2, #0x5b
+ lsl r2, r2, #0x2
+ str r0, [r4, r2]
+ mov r0, #0x1
+ mov r1, #0x1a
+ add r2, #0xc
+ mov r3, #0x12
+ bl FUN_0200A86C
+ mov r2, #0x17
+ lsl r2, r2, #0x4
+ str r0, [r4, r2]
+ mov r0, #0x1
+ mov r1, #0x1a
+ sub r2, #0x2c
+ mov r3, #0x12
+ bl FUN_0200A86C
+ mov r1, #0x5d
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ mov r0, #0x4
+ mov r1, #0x8
+ bl FUN_0201669C
+ bl FUN_02077B24
+ mov r0, #0x16
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ bl FUN_02077B44
+ add r0, r6, #0x0
+ bl FUN_0200628C
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02077B08
+ add r0, r4, #0x0
+ bl FUN_02077FE8
+ mov r0, #0x2
+ mov r1, #0x12
+ bl FUN_02002C50
+ ldr r0, _020774A0 ; =FUN_02077AE8
+ mov r1, #0x0
+ bl FUN_02015F10
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ bl FUN_02077CD4
+ mov r0, #0x0
+ mov r1, #0x12
+ bl FUN_02002C84
+ bl FUN_02078110
+ add r0, r4, #0x0
+ bl FUN_02078140
+ add r0, r4, #0x0
+ bl FUN_0207835C
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ bl FUN_0207890C
+ ldr r0, _020774A4 ; =0x000004C4
+ mov r3, #0x5f
+ add r1, r4, r0
+ lsl r3, r3, #0x2
+ str r1, [sp, #0x0]
+ ldr r1, [r4, r3]
+ add r2, r3, #0x0
+ str r1, [sp, #0x4]
+ sub r2, #0x24
+ sub r0, #0xcc
+ add r1, r4, #0x0
+ sub r3, #0x22
+ ldrh r2, [r4, r2]
+ add r0, r4, r0
+ add r1, #0xd8
+ add r3, r4, r3
+ bl FUN_0207907C
+ mov r1, #0x0
+ mov r0, #0x34
+ add r2, r1, #0x0
+ bl FUN_0200433C
+ mov r0, #0x10
+ str r0, [sp, #0x0]
+ mov r1, #0x1
+ str r1, [sp, #0x4]
+ mov r0, #0x12
+ str r0, [sp, #0x8]
+ mov r0, #0x0
+ add r2, r1, #0x0
+ add r3, r0, #0x0
+ bl FUN_0200E1D0
+ mov r0, #0x1
+ bl FUN_02077C84
+ ldr r0, _020774A8 ; =0x021C4918
+ mov r1, #0x1
+ strb r1, [r0, #0x5]
+ bl FUN_0201E7A0
+ ldr r0, [r5, #0x0]
+ add r0, r0, #0x1
+ str r0, [r5, #0x0]
+ b _02077490
+_02077456:
+ bl FUN_02006278
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x1
+ bne _02077472
+ ldr r1, _020774AC ; =0x000004B8
+ ldr r2, [r4, #0x4]
+ ldr r0, [r4, r1]
+ add r1, #0x8
+ ldr r1, [r4, r1]
+ ldr r3, [r4, #0x8]
+ bl FUN_020774B8
+_02077472:
+ ldr r0, _020774B0 ; =0x021C5C54
+ mov r1, #0x1
+ str r4, [r0, #0x0]
+ mov r0, #0x0
+ mov r2, #0xc
+ mov r3, #0x12
+ bl FUN_020142EC
+ ldr r1, _020774B4 ; =0x000005C4
+ add sp, #0xc
+ str r0, [r4, r1]
+ mov r0, #0x0
+ str r0, [r5, #0x0]
+ mov r0, #0x1
+ pop {r3-r6, pc}
+_02077490:
+ mov r0, #0x0
+ add sp, #0xc
+ pop {r3-r6, pc}
+ nop
+_02077498: .word 0xFFFFE0FF
+_0207749C: .word 0x04001000
+_020774A0: .word FUN_02077AE8
+_020774A4: .word 0x000004C4
+_020774A8: .word 0x021C4918
+_020774AC: .word 0x000004B8
+_020774B0: .word 0x021C5C54
+_020774B4: .word 0x000005C4
+
+ thumb_func_start FUN_020774B8
+FUN_020774B8: ; 0x020774B8
+ push {r4-r6, lr}
+ add r4, r1, #0x0
+ add r5, r2, #0x0
+ mov r2, #0x2
+ ldr r0, [r0, #0x14]
+ ldr r1, _020774E8 ; =0x000057E0
+ add r6, r3, #0x0
+ lsl r2, r2, #0x8
+ blx FUN_020C92F4
+ ldr r4, [r4, #0xc]
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ mov r2, #0x0
+ bl FUN_0206B7BC
+ lsl r0, r0, #0x5
+ add r0, r4, r0
+ mov r1, #0xc0
+ mov r2, #0x20
+ blx FUN_020C9480
+ pop {r4-r6, pc}
+ nop
+_020774E8: .word 0x000057E0
+
+ thumb_func_start FUN_020774EC
+FUN_020774EC: ; 0x020774EC
+ push {r4-r6, lr}
+ sub sp, #0x10
+ add r5, r1, #0x0
+ add r6, r0, #0x0
+ bl FUN_02006278
+ ldr r1, [r5, #0x0]
+ add r4, r0, #0x0
+ cmp r1, #0x3
+ bhi _02077550
+ add r2, r1, r1
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_0207750C: ; jump table (using 16-bit offset)
+ .short _02077514 - _0207750C - 2; case 0
+ .short _02077528 - _0207750C - 2; case 1
+ .short _0207755C - _0207750C - 2; case 2
+ .short _0207768A - _0207750C - 2; case 3
+_02077514:
+ bl FUN_0200E308
+ cmp r0, #0x0
+ beq _02077550
+ mov r0, #0x1
+ str r0, [r5, #0x0]
+ ldr r0, _020776A8 ; =0x000005CC
+ mov r1, #0x0
+ str r1, [r4, r0]
+ b _02077698
+_02077528:
+ ldr r1, _020776A8 ; =0x000005CC
+ ldr r2, [r4, r1]
+ add r2, r2, #0x1
+ str r2, [r4, r1]
+ bl FUN_020798C4
+ mov r2, #0x49
+ lsl r2, r2, #0x4
+ add r0, r4, r2
+ mov r1, #0xcb
+ sub r2, #0x30
+ lsl r1, r1, #0x2
+ ldr r2, [r4, r2]
+ add r1, r4, r1
+ bl FUN_02079834
+ ldr r0, _020776A8 ; =0x000005CC
+ ldr r1, [r4, r0]
+ cmp r1, #0x5
+ bgt _02077552
+_02077550:
+ b _02077698
+_02077552:
+ mov r1, #0x2
+ str r1, [r5, #0x0]
+ mov r1, #0x0
+ str r1, [r4, r0]
+ b _02077698
+_0207755C:
+ ldr r3, _020776AC ; =0x0000045C
+ ldr r2, [r4, r3]
+ cmp r2, #0x7
+ bhi _02077636
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_02077570: ; jump table (using 16-bit offset)
+ .short _02077636 - _02077570 - 2; case 0
+ .short _02077636 - _02077570 - 2; case 1
+ .short _02077636 - _02077570 - 2; case 2
+ .short _02077636 - _02077570 - 2; case 3
+ .short _02077580 - _02077570 - 2; case 4
+ .short _02077594 - _02077570 - 2; case 5
+ .short _020775E0 - _02077570 - 2; case 6
+ .short _0207760C - _02077570 - 2; case 7
+_02077580:
+ ldr r2, [r4, #0x34]
+ cmp r2, #0x0
+ bne _0207758C
+ bl FUN_020776C4
+ str r0, [r5, #0x0]
+_0207758C:
+ add r0, r4, #0x0
+ bl FUN_020798C4
+ b _02077636
+_02077594:
+ add r1, r6, #0x0
+ bl FUN_02077E90
+ ldr r0, _020776B0 ; =0x00000448
+ mov r1, #0xf
+ add r0, r4, r0
+ bl FUN_02019620
+ ldr r0, _020776B0 ; =0x00000448
+ mov r2, #0x1
+ add r0, r4, r0
+ mov r1, #0x0
+ lsl r2, r2, #0x8
+ mov r3, #0xa
+ bl FUN_0200D0BC
+ mov r3, #0x0
+ mov r2, #0x6
+ ldr r0, _020776B0 ; =0x00000448
+ str r3, [sp, #0x0]
+ mov r1, #0x1
+ str r1, [sp, #0x4]
+ str r3, [sp, #0x8]
+ lsl r2, r2, #0x6
+ ldr r2, [r4, r2]
+ add r0, r4, r0
+ bl FUN_0201BD84
+ ldr r1, _020776B4 ; =0x00000458
+ str r0, [r4, r1]
+ sub r1, #0x10
+ add r0, r4, r1
+ bl FUN_020191D0
+ ldr r0, _020776AC ; =0x0000045C
+ mov r1, #0x6
+ str r1, [r4, r0]
+ b _02077636
+_020775E0:
+ sub r0, r3, #0x4
+ ldr r0, [r4, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0x0
+ bne _02077636
+ ldr r0, _020776B8 ; =0x000005E2
+ bl FUN_020054C8
+ ldr r1, _020776BC ; =0x000004A8
+ mov r2, #0x0
+ ldr r0, [r4, r1]
+ add r0, r0, #0x1
+ str r0, [r4, r1]
+ ldr r0, _020776A8 ; =0x000005CC
+ sub r1, #0x4c
+ str r2, [r4, r0]
+ mov r0, #0x7
+ str r0, [r4, r1]
+ b _02077636
+_0207760C:
+ ldr r0, _020776A8 ; =0x000005CC
+ ldr r1, [r4, r0]
+ add r1, r1, #0x1
+ str r1, [r4, r0]
+ ldr r0, [r4, r0]
+ cmp r0, #0x1e
+ ble _02077636
+ mov r0, #0x10
+ str r0, [sp, #0x0]
+ mov r1, #0x0
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ mov r0, #0x12
+ str r0, [sp, #0x8]
+ mov r0, #0x2
+ add r2, r1, #0x0
+ add r3, r1, #0x0
+ bl FUN_0200E1D0
+ mov r0, #0x3
+ str r0, [r5, #0x0]
+_02077636:
+ ldr r3, _020776C0 ; =0x00000464
+ mov r1, #0xcb
+ add r0, r4, r3
+ str r0, [sp, #0x0]
+ add r0, r3, #0x4
+ add r0, r4, r0
+ lsl r1, r1, #0x2
+ str r0, [sp, #0x4]
+ add r0, r4, r1
+ str r0, [sp, #0x8]
+ add r0, r3, #0x0
+ add r0, #0x4c
+ ldr r0, [r4, r0]
+ add r2, r3, #0x0
+ ldr r0, [r0, #0x14]
+ add r1, #0x8c
+ str r0, [sp, #0xc]
+ mov r0, #0x16
+ lsl r0, r0, #0x4
+ sub r3, r3, #0x4
+ sub r2, #0x8
+ ldr r0, [r4, r0]
+ ldr r3, [r4, r3]
+ add r1, r4, r1
+ add r2, r4, r2
+ bl FUN_020786B0
+ mov r2, #0x49
+ lsl r2, r2, #0x4
+ add r0, r4, r2
+ mov r1, #0xcb
+ sub r2, #0x30
+ lsl r1, r1, #0x2
+ ldr r2, [r4, r2]
+ add r1, r4, r1
+ bl FUN_02079834
+ add r0, r4, #0x0
+ add r0, #0x38
+ bl FUN_02078E3C
+ b _02077698
+_0207768A:
+ bl FUN_0200E308
+ cmp r0, #0x0
+ beq _02077698
+ add sp, #0x10
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_02077698:
+ mov r0, #0x62
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_0201FDEC
+ mov r0, #0x0
+ add sp, #0x10
+ pop {r4-r6, pc}
+ .balign 4
+_020776A8: .word 0x000005CC
+_020776AC: .word 0x0000045C
+_020776B0: .word 0x00000448
+_020776B4: .word 0x00000458
+_020776B8: .word 0x000005E2
+_020776BC: .word 0x000004A8
+_020776C0: .word 0x00000464
+
+ thumb_func_start FUN_020776C4
+FUN_020776C4: ; 0x020776C4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_02078C98
+ ldr r0, _020777BC ; =0x021C48B8
+ mov r1, #0x4
+ ldr r0, [r0, #0x48]
+ tst r1, r0
+ beq _02077746
+ ldr r0, [r5, #0x0]
+ cmp r0, #0x4
+ beq _0207771E
+ ldr r1, _020777C0 ; =0x0000045C
+ mov r0, #0x0
+ str r0, [r5, r1]
+ add r2, r1, #0x4
+ ldr r2, [r5, r2]
+ add r3, r2, #0x1
+ add r2, r1, #0x4
+ str r3, [r5, r2]
+ ldr r2, [r5, r2]
+ cmp r2, #0x3
+ blt _020776F8
+ add r1, r1, #0x4
+ str r0, [r5, r1]
+_020776F8:
+ mov r2, #0x49
+ lsl r2, r2, #0x4
+ add r1, r2, #0x0
+ sub r1, #0x30
+ ldr r1, [r5, r1]
+ add r0, r5, r2
+ lsl r3, r1, #0x2
+ ldr r1, [r0, r3]
+ sub r2, #0x30
+ add r1, r1, #0x1
+ str r1, [r0, r3]
+ add r0, r5, #0x0
+ ldr r1, [r5, r2]
+ add r0, #0x3a
+ bl FUN_0207916C
+ ldr r0, _020777C4 ; =0x0000069E
+ bl FUN_020054C8
+_0207771E:
+ mov r2, #0x49
+ lsl r2, r2, #0x4
+ add r1, r2, #0x0
+ sub r1, #0x30
+ ldr r1, [r5, r1]
+ add r0, r5, r2
+ lsl r3, r1, #0x2
+ ldr r1, [r0, r3]
+ sub r2, #0x30
+ add r1, r1, #0x1
+ str r1, [r0, r3]
+ add r0, r5, #0x0
+ ldr r1, [r5, r2]
+ add r0, #0x3a
+ bl FUN_0207916C
+ ldr r0, _020777C4 ; =0x0000069E
+ bl FUN_020054C8
+ b _020777B8
+_02077746:
+ mov r2, #0x1
+ add r1, r0, #0x0
+ tst r1, r2
+ beq _0207776C
+ ldr r3, [r5, #0x20]
+ mov r1, #0x1a
+ mul r1, r3
+ add r3, r5, r1
+ ldr r1, [r5, #0x1c]
+ add r0, r5, #0x0
+ lsl r1, r1, #0x1
+ add r1, r3, r1
+ ldrh r1, [r1, #0x3a]
+ bl FUN_020791C0
+ add r4, r0, #0x0
+ mov r0, #0x1
+ str r0, [r5, #0x30]
+ b _020777B8
+_0207776C:
+ ldr r1, _020777C8 ; =0x000005C8
+ ldr r1, [r5, r1]
+ cmp r1, #0x1
+ bne _02077794
+ ldr r2, [r5, #0x20]
+ mov r1, #0x1a
+ mul r1, r2
+ add r2, r5, r1
+ ldr r1, [r5, #0x1c]
+ add r0, r5, #0x0
+ lsl r1, r1, #0x1
+ add r1, r2, r1
+ ldrh r1, [r1, #0x3a]
+ mov r2, #0x0
+ bl FUN_020791C0
+ add r4, r0, #0x0
+ mov r0, #0x0
+ str r0, [r5, #0x30]
+ b _020777B8
+_02077794:
+ mov r1, #0x2
+ add r3, r0, #0x0
+ tst r3, r1
+ beq _020777A8
+ ldr r1, _020777CC ; =0x0000E007
+ add r0, r5, #0x0
+ bl FUN_020791C0
+ add r4, r0, #0x0
+ b _020777B8
+_020777A8:
+ add r1, #0xfe
+ tst r0, r1
+ beq _020777B8
+ ldr r1, _020777D0 ; =0x0000E006
+ add r0, r5, #0x0
+ bl FUN_020791C0
+ add r4, r0, #0x0
+_020777B8:
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+_020777BC: .word 0x021C48B8
+_020777C0: .word 0x0000045C
+_020777C4: .word 0x0000069E
+_020777C8: .word 0x000005C8
+_020777CC: .word 0x0000E007
+_020777D0: .word 0x0000E006
+
+ thumb_func_start FUN_020777D4
+FUN_020777D4: ; 0x020777D4
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ add r4, r1, #0x0
+ cmp r0, #0x0
+ bne _02077836
+ ldr r0, [r5, #0x4]
+ cmp r0, #0x0
+ bne _020777FE
+ bl FUN_0201B9EC
+ mov r1, #0x12
+ blx _s32_div_f
+ mov r0, #0x17
+ lsl r0, r0, #0x4
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ add r6, r0, #0x0
+ b _0207781A
+_020777FE:
+ cmp r0, #0x1
+ bne _0207781A
+ bl FUN_0201B9EC
+ mov r1, #0x12
+ blx _s32_div_f
+ mov r0, #0x17
+ lsl r0, r0, #0x4
+ ldr r0, [r5, r0]
+ add r1, #0x12
+ bl FUN_0200A914
+ add r6, r0, #0x0
+_0207781A:
+ ldr r0, [r4, #0x18]
+ add r1, r6, #0x0
+ bl FUN_02021A74
+ add r0, r6, #0x0
+ bl FUN_02021A20
+ ldr r0, [r4, #0x18]
+ add r4, #0x1c
+ add r1, r4, #0x0
+ mov r2, #0xa
+ bl FUN_02021EF0
+ pop {r4-r6, pc}
+_02077836:
+ cmp r0, #0x3
+ bne _02077864
+ mov r0, #0x17
+ lsl r0, r0, #0x4
+ ldr r0, [r5, r0]
+ mov r1, #0x58
+ bl FUN_0200A914
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x18]
+ add r1, r5, #0x0
+ bl FUN_02021A74
+ add r0, r5, #0x0
+ bl FUN_02021A20
+ ldr r0, [r4, #0x18]
+ add r4, #0x1c
+ add r1, r4, #0x0
+ mov r2, #0xa
+ bl FUN_02021EF0
+ pop {r4-r6, pc}
+_02077864:
+ mov r0, #0x1
+ str r0, [r4, #0x14]
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0207786C
+FUN_0207786C: ; 0x0207786C
+ push {r4-r5}
+ ldr r1, _0207788C ; =0x000001DE
+ ldr r2, _02077890 ; =0x0000FFFF
+ mov r5, #0x1
+ mov r3, #0x0
+_02077876:
+ ldrh r4, [r0, #0x0]
+ cmp r4, r2
+ beq _02077886
+ cmp r4, r1
+ beq _02077882
+ add r5, r3, #0x0
+_02077882:
+ add r0, r0, #0x2
+ b _02077876
+_02077886:
+ add r0, r5, #0x0
+ pop {r4-r5}
+ bx lr
+ .balign 4
+_0207788C: .word 0x000001DE
+_02077890: .word 0x0000FFFF
+
+ thumb_func_start FUN_02077894
+FUN_02077894: ; 0x02077894
+ push {r4-r7, lr}
+ sub sp, #0x14
+ str r0, [sp, #0x10]
+ bl FUN_02006278
+ add r4, r0, #0x0
+ ldr r0, [sp, #0x10]
+ bl FUN_0200628C
+ add r5, r0, #0x0
+ mov r0, #0x56
+ lsl r0, r0, #0x2
+ ldrh r0, [r4, r0]
+ ldr r1, _02077A6C ; =0x0000FFFF
+ lsl r0, r0, #0x1
+ add r0, r4, r0
+ add r0, #0xd8
+ strh r1, [r0, #0x0]
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x1
+ bne _020778DE
+ mov r0, #0x12
+ bl FUN_020669C0
+ mov r3, #0xa
+ str r3, [sp, #0x0]
+ str r3, [sp, #0x4]
+ str r3, [sp, #0x8]
+ str r3, [sp, #0xc]
+ ldr r1, [r4, #0x4]
+ add r6, r0, #0x0
+ mov r2, #0x5
+ bl FUN_02066ACC
+ add r0, r6, #0x0
+ bl FUN_02016A18
+_020778DE:
+ mov r1, #0x56
+ lsl r1, r1, #0x2
+ ldrh r0, [r4, r1]
+ cmp r0, #0x0
+ beq _02077904
+ add r0, r4, #0x0
+ sub r1, #0x40
+ add r0, #0xd8
+ add r1, r4, r1
+ bl StringNotEqual
+ cmp r0, #0x0
+ beq _02077904
+ add r0, r4, #0x0
+ add r0, #0xd8
+ bl FUN_0207786C
+ cmp r0, #0x0
+ beq _0207790E
+_02077904:
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ bl FUN_020777D4
+ b _02077932
+_0207790E:
+ mov r0, #0x46
+ lsl r0, r0, #0x2
+ add r1, r4, #0x0
+ add r0, r4, r0
+ add r1, #0xd8
+ bl StringCopy
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r0, #0x1c
+ add r1, #0xd8
+ bl StringCopy
+ add r1, r4, #0x0
+ ldr r0, [r5, #0x18]
+ add r1, #0xd8
+ bl FUN_02021E28
+_02077932:
+ mov r0, #0x61
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_02021A20
+ mov r7, #0xe7
+ mov r6, #0x0
+ add r5, r4, #0x0
+ lsl r7, r7, #0x2
+_02077944:
+ ldr r0, [r5, r7]
+ bl FUN_0200621C
+ add r6, r6, #0x1
+ add r5, r5, #0x4
+ cmp r6, #0x7
+ blt _02077944
+ mov r0, #0xb1
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_02009C0C
+ mov r0, #0xb5
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_02009C0C
+ mov r0, #0xb2
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_02009E04
+ mov r0, #0xb6
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_02009E04
+ mov r7, #0xad
+ mov r6, #0x0
+ add r5, r4, #0x0
+ lsl r7, r7, #0x2
+_02077982:
+ ldr r0, [r5, r7]
+ bl FUN_02008E2C
+ add r6, r6, #0x1
+ add r5, r5, #0x4
+ cmp r6, #0x4
+ blt _02077982
+ mov r0, #0x62
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_0201FD58
+ bl FUN_02009FA0
+ ldr r1, _02077A70 ; =0x000004AC
+ mov r0, #0x12
+ ldr r1, [r4, r1]
+ bl FUN_02016A8C
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x1
+ bne _020779C2
+ ldr r1, _02077A74 ; =0x000004B4
+ mov r0, #0x12
+ ldr r1, [r4, r1]
+ bl FUN_02016A8C
+ ldr r1, _02077A78 ; =0x000004BC
+ mov r0, #0x12
+ ldr r1, [r4, r1]
+ bl FUN_02016A8C
+_020779C2:
+ mov r0, #0x16
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ mov r1, #0x7
+ bl FUN_020178A0
+ bl FUN_0201D12C
+ bl FUN_0201E08C
+ mov r0, #0x16
+ lsl r0, r0, #0x4
+ mov r1, #0xee
+ lsl r1, r1, #0x2
+ ldr r0, [r4, r0]
+ add r1, r4, r1
+ bl FUN_02077FA8
+ mov r0, #0x0
+ bl FUN_02002CC0
+ mov r2, #0x1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2, #0x0]
+ ldr r0, _02077A7C ; =0xFFFF1FFF
+ and r0, r1
+ str r0, [r2, #0x0]
+ mov r0, #0x2
+ bl FUN_02002CF8
+ mov r0, #0x6
+ lsl r0, r0, #0x6
+ ldr r0, [r4, r0]
+ cmp r0, #0x0
+ beq _02077A0C
+ bl FUN_02021A20
+_02077A0C:
+ mov r0, #0x5e
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_02021A20
+ mov r0, #0x5f
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_02021A20
+ mov r0, #0x5d
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_0200A8B8
+ mov r0, #0x17
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ bl FUN_0200A8B8
+ mov r0, #0x5b
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_0200A8B8
+ mov r0, #0x5a
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_0200AB18
+ ldr r0, [sp, #0x10]
+ bl FUN_0200627C
+ mov r0, #0x0
+ add r1, r0, #0x0
+ bl FUN_02015F10
+ mov r0, #0x12
+ bl FUN_020168D0
+ ldr r0, _02077A80 ; =0x021C4918
+ mov r1, #0x0
+ strb r1, [r0, #0x5]
+ bl FUN_0201E7A0
+ mov r0, #0x1
+ add sp, #0x14
+ pop {r4-r7, pc}
+ .balign 4
+_02077A6C: .word 0x0000FFFF
+_02077A70: .word 0x000004AC
+_02077A74: .word 0x000004B4
+_02077A78: .word 0x000004BC
+_02077A7C: .word 0xFFFF1FFF
+_02077A80: .word 0x021C4918
+
+ thumb_func_start FUN_02077A84
+FUN_02077A84: ; 0x02077A84
+ push {r3-r7, lr}
+ add r6, r1, #0x0
+ mov r1, #0x50
+ str r0, [sp, #0x0]
+ add r7, r2, #0x0
+ add r5, r3, #0x0
+ bl FUN_02016998
+ add r4, r0, #0x0
+ str r6, [r4, #0x0]
+ str r7, [r4, #0x4]
+ str r5, [r4, #0xc]
+ mov r0, #0x0
+ str r0, [r4, #0x14]
+ ldr r0, _02077AC0 ; =0x0000FFFF
+ ldr r1, [sp, #0x0]
+ strh r0, [r4, #0x1c]
+ add r0, r5, #0x1
+ bl FUN_020219F4
+ str r0, [r4, #0x18]
+ mov r1, #0x0
+ str r1, [r4, #0x44]
+ str r1, [r4, #0x48]
+ ldr r0, [sp, #0x18]
+ str r1, [r4, #0x10]
+ str r0, [r4, #0x4c]
+ str r1, [r4, #0x8]
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+_02077AC0: .word 0x0000FFFF
+
+ thumb_func_start FUN_02077AC4
+FUN_02077AC4: ; 0x02077AC4
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x18]
+ cmp r0, #0x0
+ bne _02077AD2
+ bl ErrorHandling
+_02077AD2:
+ cmp r4, #0x0
+ bne _02077ADA
+ bl ErrorHandling
+_02077ADA:
+ ldr r0, [r4, #0x18]
+ bl FUN_02021A20
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r4, pc}
+
+ thumb_func_start FUN_02077AE8
+FUN_02077AE8: ; 0x02077AE8
+ push {r3, lr}
+ bl FUN_0201C30C
+ bl FUN_02009F80
+ ldr r3, _02077B00 ; =0x027E0000
+ ldr r1, _02077B04 ; =0x00003FF8
+ mov r0, #0x1
+ ldr r2, [r3, r1]
+ orr r0, r2
+ str r0, [r3, r1]
+ pop {r3, pc}
+ .balign 4
+_02077B00: .word 0x027E0000
+_02077B04: .word 0x00003FF8
+
+ thumb_func_start FUN_02077B08
+FUN_02077B08: ; 0x02077B08
+ ldr r2, [r1, #0x0]
+ str r2, [r0, #0x0]
+ ldr r2, [r1, #0x4]
+ str r2, [r0, #0x4]
+ ldr r2, [r1, #0x8]
+ str r2, [r0, #0x8]
+ ldr r2, [r1, #0xc]
+ str r2, [r0, #0xc]
+ ldr r2, [r1, #0x10]
+ str r2, [r0, #0x10]
+ ldr r1, [r1, #0x4c]
+ str r1, [r0, #0x18]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02077B24
+FUN_02077B24: ; 0x02077B24
+ push {r4, lr}
+ sub sp, #0x28
+ ldr r4, _02077B40 ; =0x020FA12C
+ add r3, sp, #0x0
+ mov r2, #0x5
+_02077B2E:
+ ldmia r4!, {r0-r1}
+ stmia r3!, {r0-r1}
+ sub r2, r2, #0x1
+ bne _02077B2E
+ add r0, sp, #0x0
+ bl FUN_0201E66C
+ add sp, #0x28
+ pop {r4, pc}
+ .balign 4
+_02077B40: .word 0x020FA12C
+
+ thumb_func_start FUN_02077B44
+FUN_02077B44: ; 0x02077B44
+ push {r3-r5, lr}
+ sub sp, #0x80
+ ldr r5, _02077C68 ; =0x020F9D4C
+ add r3, sp, #0x70
+ add r4, r0, #0x0
+ add r2, r3, #0x0
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ add r0, r2, #0x0
+ bl FUN_02016BBC
+ ldr r5, _02077C6C ; =0x020F9EC0
+ add r3, sp, #0x54
+ ldmia r5!, {r0-r1}
+ add r2, r3, #0x0
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldr r0, [r5, #0x0]
+ mov r1, #0x0
+ str r0, [r3, #0x0]
+ add r0, r4, #0x0
+ add r3, r1, #0x0
+ bl FUN_02016C18
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_02018744
+ ldr r5, _02077C70 ; =0x020F9FA0
+ add r3, sp, #0x38
+ ldmia r5!, {r0-r1}
+ add r2, r3, #0x0
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldr r0, [r5, #0x0]
+ mov r1, #0x1
+ str r0, [r3, #0x0]
+ add r0, r4, #0x0
+ mov r3, #0x0
+ bl FUN_02016C18
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_02018744
+ ldr r5, _02077C74 ; =0x020FA064
+ add r3, sp, #0x1c
+ ldmia r5!, {r0-r1}
+ add r2, r3, #0x0
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldr r0, [r5, #0x0]
+ mov r1, #0x2
+ str r0, [r3, #0x0]
+ add r0, r4, #0x0
+ mov r3, #0x0
+ bl FUN_02016C18
+ add r0, r4, #0x0
+ mov r1, #0x2
+ bl FUN_02018744
+ ldr r5, _02077C78 ; =0x020F9DFC
+ add r3, sp, #0x0
+ ldmia r5!, {r0-r1}
+ add r2, r3, #0x0
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldr r0, [r5, #0x0]
+ mov r1, #0x4
+ str r0, [r3, #0x0]
+ add r0, r4, #0x0
+ mov r3, #0x0
+ bl FUN_02016C18
+ add r0, r4, #0x0
+ mov r1, #0x4
+ bl FUN_02018744
+ mov r0, #0x0
+ bl FUN_02077C84
+ mov r0, #0x0
+ mov r1, #0x20
+ add r2, r0, #0x0
+ mov r3, #0x12
+ bl FUN_02017F18
+ mov r0, #0x4
+ mov r1, #0x20
+ mov r2, #0x0
+ mov r3, #0x12
+ bl FUN_02017F18
+ mov r0, #0x1
+ lsl r0, r0, #0x1a
+ add r4, r0, #0x0
+ ldr r2, [r0, #0x0]
+ ldr r1, _02077C7C ; =0xFFFF1FFF
+ add r4, #0x48
+ and r2, r1
+ lsr r1, r0, #0xd
+ orr r1, r2
+ str r1, [r0, #0x0]
+ ldrh r3, [r4, #0x0]
+ mov r2, #0x3f
+ mov r1, #0x14
+ bic r3, r2
+ orr r1, r3
+ mov r3, #0x20
+ orr r1, r3
+ strh r1, [r4, #0x0]
+ add r4, r0, #0x0
+ add r4, #0x4a
+ ldrh r5, [r4, #0x0]
+ mov r1, #0x1f
+ bic r5, r2
+ orr r1, r5
+ orr r1, r3
+ strh r1, [r4, #0x0]
+ add r1, r0, #0x0
+ mov r2, #0xff
+ add r1, #0x40
+ strh r2, [r1, #0x0]
+ mov r1, #0x40
+ add r0, #0x44
+ strh r1, [r0, #0x0]
+ ldr r0, _02077C80 ; =0x04001050
+ mov r1, #0x0
+ strh r1, [r0, #0x0]
+ add sp, #0x80
+ pop {r3-r5, pc}
+ .balign 4
+_02077C68: .word 0x020F9D4C
+_02077C6C: .word 0x020F9EC0
+_02077C70: .word 0x020F9FA0
+_02077C74: .word 0x020FA064
+_02077C78: .word 0x020F9DFC
+_02077C7C: .word 0xFFFF1FFF
+_02077C80: .word 0x04001050
+
+ thumb_func_start FUN_02077C84
+FUN_02077C84: ; 0x02077C84
+ push {r4, lr}
+ add r4, r0, #0x0
+ lsl r1, r4, #0x18
+ mov r0, #0x1
+ lsr r1, r1, #0x18
+ bl FUN_0201E6E4
+ lsl r1, r4, #0x18
+ mov r0, #0x2
+ lsr r1, r1, #0x18
+ bl FUN_0201E6E4
+ lsl r1, r4, #0x18
+ mov r0, #0x4
+ lsr r1, r1, #0x18
+ bl FUN_0201E6E4
+ mov r0, #0x8
+ mov r1, #0x0
+ bl FUN_0201E6E4
+ lsl r1, r4, #0x18
+ mov r0, #0x10
+ lsr r1, r1, #0x18
+ bl FUN_0201E6E4
+ lsl r1, r4, #0x18
+ mov r0, #0x1
+ lsr r1, r1, #0x18
+ bl FUN_0201E74C
+ mov r0, #0x2
+ mov r1, #0x0
+ bl FUN_0201E74C
+ mov r0, #0x10
+ mov r1, #0x0
+ bl FUN_0201E74C
+ pop {r4, pc}
+
+ thumb_func_start FUN_02077CD4
+FUN_02077CD4: ; 0x02077CD4
+ push {r3-r7, lr}
+ sub sp, #0x10
+ add r4, r0, #0x0
+ add r0, r1, #0x0
+ bl FUN_0200628C
+ add r7, r0, #0x0
+ ldr r0, _02077E7C ; =0x0000045C
+ mov r1, #0x4
+ str r1, [r4, r0]
+ add r0, #0xc
+ add r0, r4, r0
+ mov r1, #0x0
+ bl FUN_02078BA8
+ ldr r6, _02077E80 ; =0x00000464
+ mov r0, #0x16
+ ldr r3, [r4, r6]
+ mov r5, #0xc
+ lsl r0, r0, #0x4
+ lsl r1, r3, #0x18
+ mul r5, r3
+ add r3, r4, r5
+ add r5, r6, #0x4
+ ldr r0, [r4, r0]
+ ldr r3, [r3, r5]
+ lsr r1, r1, #0x18
+ mov r2, #0x0
+ bl FUN_020179E0
+ ldr r3, [r4, r6]
+ mov r5, #0xc
+ mov r0, #0x16
+ lsl r0, r0, #0x4
+ lsl r1, r3, #0x18
+ mul r5, r3
+ add r3, r4, r5
+ add r6, #0x8
+ ldr r0, [r4, r0]
+ ldr r3, [r3, r6]
+ lsr r1, r1, #0x18
+ mov r2, #0x3
+ bl FUN_020179E0
+ ldr r6, _02077E80 ; =0x00000464
+ mov r0, #0x1
+ ldr r1, [r4, r6]
+ mov r5, #0xc
+ add r3, r1, #0x0
+ eor r3, r0
+ mov r0, #0x16
+ lsl r0, r0, #0x4
+ lsl r1, r3, #0x18
+ mul r5, r3
+ add r3, r4, r5
+ add r5, r6, #0x4
+ ldr r0, [r4, r0]
+ ldr r3, [r3, r5]
+ lsr r1, r1, #0x18
+ mov r2, #0x0
+ bl FUN_020179E0
+ ldr r1, [r4, r6]
+ mov r0, #0x1
+ add r3, r1, #0x0
+ eor r3, r0
+ mov r5, #0xc
+ mov r0, #0x16
+ lsl r0, r0, #0x4
+ lsl r1, r3, #0x18
+ mul r5, r3
+ add r3, r4, r5
+ add r6, #0x8
+ ldr r0, [r4, r0]
+ ldr r3, [r3, r6]
+ lsr r1, r1, #0x18
+ mov r2, #0x3
+ bl FUN_020179E0
+ mov r1, #0x46
+ ldr r0, _02077E84 ; =0x0000FFFF
+ lsl r1, r1, #0x2
+ strh r0, [r4, r1]
+ ldr r0, [r7, #0x18]
+ cmp r0, #0x0
+ beq _02077D88
+ add r1, r4, r1
+ mov r2, #0x20
+ bl FUN_02021EF0
+_02077D88:
+ add r1, r4, #0x0
+ mov r0, #0x1
+ add r1, #0xd8
+ mov r2, #0x40
+ blx MIi_CpuClear16
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x1
+ bne _02077DCE
+ mov r0, #0x12
+ bl FUN_020669C0
+ mov r3, #0xa
+ str r3, [sp, #0x0]
+ str r3, [sp, #0x4]
+ str r3, [sp, #0x8]
+ str r3, [sp, #0xc]
+ ldr r1, [r4, #0x4]
+ add r5, r0, #0x0
+ mov r2, #0x5
+ bl FUN_02066ACC
+ add r0, r5, #0x0
+ bl FUN_020690E4
+ add r2, r0, #0x0
+ mov r0, #0x5a
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ bl FUN_0200AC60
+ add r0, r5, #0x0
+ bl FUN_02016A18
+_02077DCE:
+ ldr r0, [r7, #0x44]
+ cmp r0, #0x0
+ beq _02077DD8
+ mov r0, #0x1
+ str r0, [r4, #0x14]
+_02077DD8:
+ ldr r2, [r4, #0x0]
+ mov r1, #0x5a
+ lsl r1, r1, #0x2
+ lsl r3, r2, #0x2
+ ldr r2, _02077E88 ; =0x020FA0A0
+ ldr r0, [r4, r1]
+ add r1, r1, #0x4
+ ldr r2, [r2, r3]
+ ldr r1, [r4, r1]
+ mov r3, #0x12
+ bl FUN_0200A9C4
+ mov r1, #0x5e
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ add r0, r1, #0x0
+ sub r0, #0x10
+ sub r1, #0xc
+ ldr r0, [r4, r0]
+ ldr r1, [r4, r1]
+ mov r2, #0x8
+ mov r3, #0x12
+ bl FUN_0200A9C4
+ mov r1, #0x5f
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ sub r1, #0x10
+ ldr r0, [r4, r1]
+ mov r1, #0x7
+ bl FUN_0200A914
+ mov r1, #0x61
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ sub r1, #0x6c
+ add r0, r4, r1
+ bl StringLength
+ mov r1, #0x56
+ lsl r1, r1, #0x2
+ strh r0, [r4, r1]
+ mov r0, #0x0
+ str r0, [r4, #0x1c]
+ mov r1, #0x1
+ str r1, [r4, #0x20]
+ sub r1, r1, #0x2
+ str r1, [r4, #0x24]
+ str r1, [r4, #0x28]
+ str r0, [r4, #0x30]
+ ldr r2, _02077E8C ; =0x00000484
+ str r0, [r4, #0x34]
+ str r1, [r4, r2]
+ add r1, r2, #0x4
+ str r0, [r4, r1]
+ add r2, #0x8
+ str r0, [r4, r2]
+ ldr r1, [r4, #0xc]
+ ldr r2, _02077E84 ; =0x0000FFFF
+ lsl r1, r1, #0x1
+ add r1, r4, r1
+ add r1, #0xd8
+ strh r2, [r1, #0x0]
+ mov r1, #0x49
+ add r3, r4, #0x0
+ add r2, r0, #0x0
+ lsl r1, r1, #0x4
+_02077E5E:
+ add r0, r0, #0x1
+ str r2, [r3, r1]
+ add r3, r3, #0x4
+ cmp r0, #0x7
+ blt _02077E5E
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x4
+ beq _02077E76
+ mov r0, #0x49
+ mov r1, #0x1
+ lsl r0, r0, #0x4
+ str r1, [r4, r0]
+_02077E76:
+ add sp, #0x10
+ pop {r3-r7, pc}
+ nop
+_02077E7C: .word 0x0000045C
+_02077E80: .word 0x00000464
+_02077E84: .word 0x0000FFFF
+_02077E88: .word 0x020FA0A0
+_02077E8C: .word 0x00000484
+
+ thumb_func_start FUN_02077E90
+FUN_02077E90: ; 0x02077E90
+ push {r4-r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0x0
+ add r0, r1, #0x0
+ bl FUN_0200628C
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x44]
+ cmp r0, #0x0
+ beq _02077FA0
+ mov r0, #0xc8
+ mov r1, #0x12
+ bl FUN_020219F4
+ add r7, r0, #0x0
+ mov r0, #0x6
+ mov r1, #0x0
+ lsl r0, r0, #0x6
+ str r1, [r5, r0]
+ ldr r0, [r4, #0x48]
+ bl FUN_0206B330
+ add r6, r0, #0x0
+ ldr r0, [r4, #0x48]
+ bl FUN_0206B334
+ str r0, [sp, #0x10]
+ mov r0, #0x5a
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ ldr r2, [r4, #0x48]
+ mov r1, #0x1
+ add r3, r6, #0x0
+ bl FUN_0200B410
+ ldr r0, [sp, #0x10]
+ cmp r6, r0
+ beq _02077EF4
+ mov r0, #0x5a
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ ldr r2, [r4, #0x48]
+ ldr r3, [sp, #0x10]
+ mov r1, #0x2
+ bl FUN_0200B410
+ ldr r0, [r4, #0x44]
+ add r0, r0, #0x2
+ str r0, [r4, #0x44]
+ b _02077F04
+_02077EF4:
+ mov r0, #0x5a
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ ldr r2, [r4, #0x48]
+ mov r1, #0x2
+ add r3, r6, #0x0
+ bl FUN_0200B410
+_02077F04:
+ mov r0, #0x56
+ lsl r0, r0, #0x2
+ ldrh r0, [r5, r0]
+ cmp r0, #0x0
+ beq _02077F1A
+ add r0, r5, #0x0
+ add r0, #0xd8
+ bl FUN_0207786C
+ cmp r0, #0x0
+ beq _02077F50
+_02077F1A:
+ mov r0, #0x12
+ bl FUN_020669C0
+ mov r3, #0x0
+ str r3, [sp, #0x0]
+ str r3, [sp, #0x4]
+ str r3, [sp, #0x8]
+ str r3, [sp, #0xc]
+ ldr r1, [r5, #0x4]
+ add r6, r0, #0x0
+ mov r2, #0x1
+ bl FUN_02066ACC
+ add r0, r6, #0x0
+ bl FUN_020690E4
+ add r2, r0, #0x0
+ mov r0, #0x5a
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ mov r1, #0x0
+ bl FUN_0200AC60
+ add r0, r6, #0x0
+ bl FUN_02016A18
+ b _02077F7E
+_02077F50:
+ mov r1, #0x56
+ lsl r1, r1, #0x2
+ ldrh r1, [r5, r1]
+ ldr r0, _02077FA4 ; =0x0000FFFF
+ lsl r1, r1, #0x1
+ add r1, r5, r1
+ add r1, #0xd8
+ strh r0, [r1, #0x0]
+ add r1, r5, #0x0
+ add r0, r7, #0x0
+ add r1, #0xd8
+ bl FUN_02021E28
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ mov r0, #0x5a
+ str r1, [sp, #0x4]
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ add r2, r7, #0x0
+ add r3, r1, #0x0
+ bl FUN_0200ABB4
+_02077F7E:
+ mov r1, #0x5a
+ lsl r1, r1, #0x2
+ ldr r0, [r5, r1]
+ add r1, #0xc
+ ldr r1, [r5, r1]
+ ldr r2, [r4, #0x44]
+ mov r3, #0x12
+ bl FUN_0200A9C4
+ mov r1, #0x6
+ lsl r1, r1, #0x6
+ str r0, [r5, r1]
+ mov r0, #0x1
+ str r0, [r5, #0x14]
+ add r0, r7, #0x0
+ bl FUN_02021A20
+_02077FA0:
+ add sp, #0x14
+ pop {r4-r7, pc}
+ .balign 4
+_02077FA4: .word 0x0000FFFF
+
+ thumb_func_start FUN_02077FA8
+FUN_02077FA8: ; 0x02077FA8
+ push {r4-r6, lr}
+ add r6, r0, #0x0
+ add r5, r1, #0x0
+ mov r4, #0x0
+_02077FB0:
+ add r0, r5, #0x0
+ bl FUN_02019178
+ add r4, r4, #0x1
+ add r5, #0x10
+ cmp r4, #0xa
+ blt _02077FB0
+ add r0, r6, #0x0
+ mov r1, #0x4
+ bl FUN_020178A0
+ add r0, r6, #0x0
+ mov r1, #0x2
+ bl FUN_020178A0
+ add r0, r6, #0x0
+ mov r1, #0x1
+ bl FUN_020178A0
+ add r0, r6, #0x0
+ mov r1, #0x0
+ bl FUN_020178A0
+ mov r0, #0x12
+ add r1, r6, #0x0
+ bl FUN_02016A8C
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02077FE8
+FUN_02077FE8: ; 0x02077FE8
+ push {r3-r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ mov r0, #0x16
+ lsl r0, r0, #0x4
+ ldr r4, [r5, r0]
+ mov r1, #0x0
+ mov r0, #0x60
+ str r0, [sp, #0x0]
+ mov r0, #0x12
+ str r0, [sp, #0x4]
+ mov r0, #0x1f
+ add r2, r1, #0x0
+ add r3, r1, #0x0
+ bl FUN_02006930
+ mov r0, #0x20
+ str r0, [sp, #0x0]
+ mov r0, #0x12
+ str r0, [sp, #0x4]
+ mov r0, #0xc
+ add r1, r0, #0x0
+ mov r2, #0x4
+ mov r3, #0x0
+ bl FUN_02006930
+ mov r0, #0x4
+ mov r1, #0x0
+ bl FUN_02017FE4
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x2
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x4]
+ mov r0, #0x1
+ str r0, [sp, #0x8]
+ mov r0, #0x12
+ mov r1, #0x2
+ str r0, [sp, #0xc]
+ mov r0, #0x1f
+ add r2, r4, #0x0
+ add r3, r1, #0x0
+ bl FUN_0200687C
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x6
+ lsl r0, r0, #0x8
+ str r0, [sp, #0x4]
+ mov r0, #0x1
+ str r0, [sp, #0x8]
+ mov r0, #0x12
+ str r0, [sp, #0xc]
+ mov r0, #0x1f
+ mov r1, #0x4
+ add r2, r4, #0x0
+ mov r3, #0x2
+ bl FUN_020068C8
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x2
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x4]
+ mov r3, #0x1
+ str r3, [sp, #0x8]
+ mov r0, #0x12
+ str r0, [sp, #0xc]
+ mov r0, #0x1f
+ mov r1, #0x2
+ add r2, r4, #0x0
+ bl FUN_0200687C
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0xe
+ lsl r0, r0, #0x6
+ str r0, [sp, #0x4]
+ mov r3, #0x1
+ str r3, [sp, #0x8]
+ mov r0, #0x12
+ str r0, [sp, #0xc]
+ mov r0, #0x1f
+ mov r1, #0x6
+ add r2, r4, #0x0
+ bl FUN_020068C8
+ mov r3, #0x0
+ mov r0, #0xe
+ str r3, [sp, #0x0]
+ lsl r0, r0, #0x6
+ str r0, [sp, #0x4]
+ mov r0, #0x1
+ str r0, [sp, #0x8]
+ mov r0, #0x12
+ str r0, [sp, #0xc]
+ mov r0, #0x1f
+ mov r1, #0x7
+ add r2, r4, #0x0
+ bl FUN_020068C8
+ mov r1, #0x6
+ mov r0, #0x0
+ lsl r1, r1, #0x6
+ mov r2, #0x12
+ bl FUN_02002EEC
+ ldr r0, [r5, #0x18]
+ bl FUN_02025084
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x12
+ str r0, [sp, #0x4]
+ mov r0, #0x16
+ lsl r0, r0, #0x4
+ mov r1, #0x4
+ add r2, r1, #0x0
+ ldr r0, [r5, r0]
+ add r2, #0xfc
+ mov r3, #0xa
+ bl FUN_0200CD68
+ mov r1, #0x6
+ mov r0, #0x4
+ lsl r1, r1, #0x6
+ mov r2, #0x12
+ bl FUN_02002EEC
+ mov r3, #0x4b
+ mov r0, #0x12
+ lsl r3, r3, #0x4
+ str r0, [sp, #0x0]
+ mov r0, #0x1f
+ mov r1, #0x10
+ mov r2, #0x1
+ add r3, r5, r3
+ bl FUN_02006BB0
+ ldr r1, _0207810C ; =0x000004AC
+ str r0, [r5, r1]
+ add sp, #0x10
+ pop {r3-r5, pc}
+ nop
+_0207810C: .word 0x000004AC
+
+ thumb_func_start FUN_02078110
+FUN_02078110: ; 0x02078110
+ push {r4, lr}
+ sub sp, #0x10
+ ldr r4, _0207813C ; =0x020F9D5C
+ add r3, sp, #0x0
+ add r2, r3, #0x0
+ ldmia r4!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldmia r4!, {r0-r1}
+ stmia r3!, {r0-r1}
+ add r0, r2, #0x0
+ bl FUN_0201D040
+ mov r0, #0x14
+ mov r1, #0x12
+ bl FUN_0201E00C
+ bl FUN_0201D168
+ bl FUN_0201E0BC
+ add sp, #0x10
+ pop {r4, pc}
+ .balign 4
+_0207813C: .word 0x020F9D5C
+
+ thumb_func_start FUN_02078140
+FUN_02078140: ; 0x02078140
+ push {r4-r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0x0
+ blx FUN_020B0FC0
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r1, #0x80
+ str r1, [sp, #0x4]
+ str r0, [sp, #0x8]
+ mov r3, #0x20
+ str r3, [sp, #0xc]
+ mov r2, #0x12
+ str r2, [sp, #0x10]
+ add r2, r0, #0x0
+ bl FUN_02009EAC
+ mov r1, #0x63
+ lsl r1, r1, #0x2
+ mov r0, #0x2c
+ add r1, r5, r1
+ mov r2, #0x12
+ bl FUN_02008C9C
+ mov r1, #0x62
+ lsl r1, r1, #0x2
+ str r0, [r5, r1]
+ add r0, r1, #0x4
+ mov r2, #0x1
+ add r0, r5, r0
+ mov r1, #0x0
+ lsl r2, r2, #0x14
+ bl FUN_02008D24
+ mov r7, #0xad
+ mov r6, #0x0
+ add r4, r5, #0x0
+ lsl r7, r7, #0x2
+_0207818C:
+ mov r0, #0x2
+ add r1, r6, #0x0
+ mov r2, #0x12
+ bl FUN_02008DEC
+ str r0, [r4, r7]
+ add r6, r6, #0x1
+ add r4, r4, #0x4
+ cmp r6, #0x4
+ blt _0207818C
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r3, #0x1
+ str r3, [sp, #0x4]
+ mov r0, #0x12
+ str r0, [sp, #0x8]
+ mov r0, #0xad
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ mov r1, #0x1f
+ mov r2, #0xa
+ bl FUN_02008F34
+ mov r1, #0xb1
+ lsl r1, r1, #0x2
+ str r0, [r5, r1]
+ mov r3, #0x0
+ str r3, [sp, #0x0]
+ mov r2, #0x1
+ str r2, [sp, #0x4]
+ mov r0, #0x9
+ str r0, [sp, #0x8]
+ mov r0, #0x12
+ sub r1, #0xc
+ str r0, [sp, #0xc]
+ ldr r0, [r5, r1]
+ mov r1, #0x1f
+ bl FUN_02008FEC
+ mov r1, #0xb2
+ lsl r1, r1, #0x2
+ str r0, [r5, r1]
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x2
+ str r0, [sp, #0x4]
+ mov r0, #0x12
+ sub r1, #0xc
+ str r0, [sp, #0x8]
+ ldr r0, [r5, r1]
+ mov r1, #0x1f
+ mov r2, #0xc
+ mov r3, #0x1
+ bl FUN_020090AC
+ mov r1, #0xb3
+ lsl r1, r1, #0x2
+ str r0, [r5, r1]
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x3
+ str r0, [sp, #0x4]
+ mov r0, #0x12
+ sub r1, #0xc
+ str r0, [sp, #0x8]
+ ldr r0, [r5, r1]
+ mov r1, #0x1f
+ mov r2, #0xe
+ mov r3, #0x1
+ bl FUN_020090AC
+ mov r1, #0x2d
+ lsl r1, r1, #0x4
+ str r0, [r5, r1]
+ ldr r0, [r5, #0x0]
+ cmp r0, #0x1
+ bne _02078272
+ ldr r0, [r5, #0x4]
+ ldr r2, [r5, #0x8]
+ mov r1, #0x0
+ bl FUN_0206B6D4
+ ldr r3, _0207831C ; =0x000004B8
+ add r1, r0, #0x0
+ mov r0, #0x12
+ str r0, [sp, #0x0]
+ mov r0, #0x13
+ mov r2, #0x0
+ add r3, r5, r3
+ bl FUN_02006BB0
+ ldr r1, _02078320 ; =0x000004B4
+ str r0, [r5, r1]
+ add r0, r1, #0x4
+ mov r1, #0x2
+ ldr r0, [r5, r0]
+ lsl r1, r1, #0x8
+ blx DC_FlushRange
+ bl FUN_0206B888
+ add r1, r0, #0x0
+ mov r0, #0x13
+ lsl r2, r0, #0x6
+ add r2, r5, r2
+ mov r3, #0x12
+ bl FUN_02006C08
+ ldr r1, _02078324 ; =0x000004BC
+ str r0, [r5, r1]
+ add r0, r1, #0x4
+ ldr r0, [r5, r0]
+ mov r1, #0x80
+ blx DC_FlushRange
+_02078272:
+ mov r3, #0x1
+ str r3, [sp, #0x0]
+ mov r0, #0x2
+ str r0, [sp, #0x4]
+ mov r0, #0x12
+ str r0, [sp, #0x8]
+ mov r0, #0xad
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ mov r1, #0x1f
+ mov r2, #0xb
+ bl FUN_02008F34
+ mov r1, #0xb5
+ lsl r1, r1, #0x2
+ str r0, [r5, r1]
+ mov r2, #0x1
+ str r2, [sp, #0x0]
+ mov r0, #0x2
+ str r0, [sp, #0x4]
+ mov r0, #0x3
+ str r0, [sp, #0x8]
+ mov r0, #0x12
+ sub r1, #0x1c
+ str r0, [sp, #0xc]
+ ldr r0, [r5, r1]
+ mov r1, #0x1f
+ mov r3, #0x0
+ bl FUN_02008FEC
+ mov r1, #0xb6
+ lsl r1, r1, #0x2
+ str r0, [r5, r1]
+ mov r3, #0x1
+ str r3, [sp, #0x0]
+ mov r0, #0x2
+ str r0, [sp, #0x4]
+ mov r0, #0x12
+ sub r1, #0x1c
+ str r0, [sp, #0x8]
+ ldr r0, [r5, r1]
+ mov r1, #0x1f
+ mov r2, #0xd
+ bl FUN_020090AC
+ mov r1, #0xb7
+ lsl r1, r1, #0x2
+ str r0, [r5, r1]
+ mov r3, #0x1
+ str r3, [sp, #0x0]
+ mov r0, #0x3
+ str r0, [sp, #0x4]
+ mov r0, #0x12
+ sub r1, #0x1c
+ str r0, [sp, #0x8]
+ ldr r0, [r5, r1]
+ mov r1, #0x1f
+ mov r2, #0xf
+ bl FUN_020090AC
+ mov r1, #0x2e
+ lsl r1, r1, #0x4
+ str r0, [r5, r1]
+ sub r1, #0x1c
+ ldr r0, [r5, r1]
+ bl FUN_02009A50
+ mov r0, #0xb5
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ bl FUN_02009A50
+ mov r0, #0xb2
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ bl FUN_02009CF0
+ mov r0, #0xb6
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ bl FUN_02009CF0
+ add sp, #0x14
+ pop {r4-r7, pc}
+ nop
+_0207831C: .word 0x000004B8
+_02078320: .word 0x000004B4
+_02078324: .word 0x000004BC
+
+ thumb_func_start FUN_02078328
+FUN_02078328: ; 0x02078328
+ push {r3-r4, lr}
+ sub sp, #0xc
+ add r4, r1, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_0202011C
+ ldr r1, [r0, #0x0]
+ ldr r0, [r4, #0x8]
+ add r0, r1, r0
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0xc]
+ lsl r1, r0, #0x4
+ ldr r0, _02078358 ; =0x020FA1D8
+ ldr r0, [r0, r1]
+ add r1, sp, #0x0
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ str r0, [sp, #0x8]
+ ldr r0, [r4, #0x4]
+ bl FUN_02020044
+ add sp, #0xc
+ pop {r3-r4, pc}
+ .balign 4
+_02078358: .word 0x020FA1D8
+
+ thumb_func_start FUN_0207835C
+FUN_0207835C: ; 0x0207835C
+ push {r4-r7, lr}
+ sub sp, #0x5c
+ mov r1, #0x0
+ add r6, r0, #0x0
+ str r1, [sp, #0x0]
+ sub r0, r1, #0x1
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ mov r2, #0xad
+ str r1, [sp, #0xc]
+ mov r0, #0x1
+ lsl r2, r2, #0x2
+ str r0, [sp, #0x10]
+ ldr r0, [r6, r2]
+ add r3, r1, #0x0
+ str r0, [sp, #0x14]
+ add r0, r2, #0x4
+ ldr r0, [r6, r0]
+ str r0, [sp, #0x18]
+ add r0, r2, #0x0
+ add r0, #0x8
+ ldr r0, [r6, r0]
+ str r0, [sp, #0x1c]
+ add r0, r2, #0x0
+ add r0, #0xc
+ ldr r0, [r6, r0]
+ add r2, #0x30
+ str r0, [sp, #0x20]
+ str r1, [sp, #0x24]
+ add r0, r6, r2
+ add r2, r1, #0x0
+ str r1, [sp, #0x28]
+ bl FUN_02008AA4
+ mov r1, #0x1
+ mov r3, #0xad
+ str r1, [sp, #0x0]
+ sub r0, r1, #0x2
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ mov r0, #0x0
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ lsl r3, r3, #0x2
+ ldr r2, [r6, r3]
+ str r2, [sp, #0x14]
+ add r2, r3, #0x4
+ ldr r2, [r6, r2]
+ str r2, [sp, #0x18]
+ add r2, r3, #0x0
+ add r2, #0x8
+ ldr r2, [r6, r2]
+ str r2, [sp, #0x1c]
+ add r2, r3, #0x0
+ add r2, #0xc
+ ldr r2, [r6, r2]
+ add r3, #0x54
+ str r2, [sp, #0x20]
+ str r0, [sp, #0x24]
+ str r0, [sp, #0x28]
+ add r0, r6, r3
+ add r2, r1, #0x0
+ add r3, r1, #0x0
+ bl FUN_02008AA4
+ mov r0, #0x62
+ lsl r0, r0, #0x2
+ ldr r0, [r6, r0]
+ mov r1, #0x2
+ str r0, [sp, #0x2c]
+ mov r0, #0xb9
+ lsl r0, r0, #0x2
+ add r0, r6, r0
+ str r0, [sp, #0x30]
+ mov r0, #0x6
+ lsl r1, r1, #0x10
+ lsl r0, r0, #0x10
+ str r0, [sp, #0x38]
+ lsr r0, r1, #0x5
+ mov r7, #0x0
+ str r1, [sp, #0x34]
+ str r7, [sp, #0x3c]
+ str r0, [sp, #0x40]
+ str r0, [sp, #0x44]
+ str r0, [sp, #0x48]
+ add r0, sp, #0x2c
+ strh r7, [r0, #0x20]
+ mov r0, #0x1
+ str r0, [sp, #0x50]
+ str r0, [sp, #0x54]
+ mov r0, #0x12
+ ldr r4, _02078528 ; =0x020FA1D4
+ str r0, [sp, #0x58]
+ add r5, r6, #0x0
+_02078418:
+ ldr r0, [r4, #0x0]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x34]
+ ldr r0, [r4, #0x4]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x38]
+ add r0, sp, #0x2c
+ bl FUN_0201FE94
+ mov r1, #0xcb
+ lsl r1, r1, #0x2
+ str r0, [r5, r1]
+ add r0, r1, #0x0
+ ldr r0, [r5, r0]
+ mov r1, #0x1
+ bl FUN_020200BC
+ mov r0, #0xcb
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ ldr r1, [r4, #0x8]
+ bl FUN_02020130
+ mov r0, #0xcb
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ ldr r1, [r4, #0xc]
+ bl FUN_02020310
+ add r7, r7, #0x1
+ add r4, #0x10
+ add r5, r5, #0x4
+ cmp r7, #0x9
+ blt _02078418
+ mov r0, #0xcf
+ lsl r0, r0, #0x2
+ ldr r0, [r6, r0]
+ mov r1, #0x0
+ bl FUN_020200A0
+ mov r0, #0xd3
+ lsl r0, r0, #0x2
+ ldr r0, [r6, r0]
+ mov r1, #0x0
+ bl FUN_020200A0
+ ldr r7, _02078528 ; =0x020FA1D4
+ mov r5, #0x0
+ add r4, r6, #0x0
+_0207847A:
+ ldr r0, _0207852C ; =FUN_02078328
+ mov r1, #0x10
+ mov r2, #0x5
+ mov r3, #0x12
+ bl FUN_020061E8
+ mov r1, #0xe7
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ add r0, r1, #0x0
+ ldr r0, [r4, r0]
+ bl FUN_0201B6C8
+ mov r1, #0xd2
+ lsl r1, r1, #0x2
+ ldr r1, [r6, r1]
+ str r1, [r0, #0x0]
+ mov r1, #0xcb
+ lsl r1, r1, #0x2
+ ldr r1, [r4, r1]
+ add r4, r4, #0x4
+ str r1, [r0, #0x4]
+ ldr r1, [r7, #0x0]
+ add r7, #0x10
+ lsl r1, r1, #0xc
+ str r1, [r0, #0x8]
+ str r5, [r0, #0xc]
+ add r5, r5, #0x1
+ cmp r5, #0x7
+ blt _0207847A
+ ldr r2, [r6, #0xc]
+ mov r7, #0x0
+ cmp r2, #0x0
+ ble _020784FA
+ mov r5, #0x50
+ add r4, r6, #0x0
+_020784C2:
+ lsl r0, r5, #0xc
+ str r0, [sp, #0x34]
+ mov r0, #0x27
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x38]
+ add r0, sp, #0x2c
+ bl FUN_0201FE94
+ mov r1, #0xd9
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ add r0, r1, #0x0
+ ldr r0, [r4, r0]
+ mov r1, #0x1
+ bl FUN_020200BC
+ mov r0, #0xd9
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x2b
+ bl FUN_02020130
+ ldr r2, [r6, #0xc]
+ add r7, r7, #0x1
+ add r5, #0xc
+ add r4, r4, #0x4
+ cmp r7, r2
+ blt _020784C2
+_020784FA:
+ mov r1, #0x56
+ lsl r1, r1, #0x2
+ mov r0, #0xd9
+ lsl r0, r0, #0x2
+ ldrh r1, [r6, r1]
+ add r0, r6, r0
+ bl FUN_02079710
+ add r0, r6, #0x0
+ add r1, sp, #0x2c
+ bl FUN_02078530
+ mov r0, #0x10
+ mov r1, #0x1
+ bl FUN_0201E6E4
+ mov r0, #0x10
+ mov r1, #0x1
+ bl FUN_0201E74C
+ add sp, #0x5c
+ pop {r4-r7, pc}
+ nop
+_02078528: .word 0x020FA1D4
+_0207852C: .word FUN_02078328
+
+ thumb_func_start FUN_02078530
+FUN_02078530: ; 0x02078530
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ mov r0, #0x6
+ add r5, r1, #0x0
+ lsl r0, r0, #0xe
+ str r0, [r5, #0x8]
+ mov r0, #0x2
+ lsl r0, r0, #0xe
+ str r0, [r5, #0xc]
+ add r0, r5, #0x0
+ bl FUN_0201FE94
+ mov r1, #0xe5
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ ldr r0, [r4, r1]
+ mov r1, #0x1
+ bl FUN_020200BC
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x7
+ bhi _02078626
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02078568: ; jump table (using 16-bit offset)
+ .short _02078578 - _02078568 - 2; case 0
+ .short _020785E0 - _02078568 - 2; case 1
+ .short _020785D2 - _02078568 - 2; case 2
+ .short _0207859A - _02078568 - 2; case 3
+ .short _020785C4 - _02078568 - 2; case 4
+ .short _020785B6 - _02078568 - 2; case 5
+ .short _020785A8 - _02078568 - 2; case 6
+ .short _020785C4 - _02078568 - 2; case 7
+_02078578:
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x0
+ bne _0207858C
+ mov r0, #0xe5
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x30
+ bl FUN_02020130
+ pop {r3-r5, pc}
+_0207858C:
+ mov r0, #0xe5
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x31
+ bl FUN_02020130
+ pop {r3-r5, pc}
+_0207859A:
+ mov r0, #0xe5
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x33
+ bl FUN_02020130
+ pop {r3-r5, pc}
+_020785A8:
+ mov r0, #0xe5
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x37
+ bl FUN_02020130
+ pop {r3-r5, pc}
+_020785B6:
+ mov r0, #0xe5
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x36
+ bl FUN_02020130
+ pop {r3-r5, pc}
+_020785C4:
+ mov r0, #0xe5
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x35
+ bl FUN_02020130
+ pop {r3-r5, pc}
+_020785D2:
+ mov r0, #0xe5
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x2f
+ bl FUN_02020130
+ pop {r3-r5, pc}
+_020785E0:
+ mov r0, #0xe5
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x32
+ bl FUN_02020130
+ ldr r0, [r4, #0x10]
+ cmp r0, #0x2
+ beq _02078626
+ ldr r1, [r4, #0xc]
+ mov r0, #0xd
+ mul r0, r1
+ add r0, #0x50
+ lsl r0, r0, #0xc
+ str r0, [r5, #0x8]
+ mov r0, #0x1b
+ lsl r0, r0, #0xc
+ str r0, [r5, #0xc]
+ add r0, r5, #0x0
+ bl FUN_0201FE94
+ mov r1, #0xe6
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ ldr r0, [r4, #0x10]
+ cmp r0, #0x0
+ ldr r0, [r4, r1]
+ bne _02078620
+ mov r1, #0x2d
+ bl FUN_02020130
+ pop {r3-r5, pc}
+_02078620:
+ mov r1, #0x2e
+ bl FUN_02020130
+_02078626:
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02078628
+FUN_02078628: ; 0x02078628
+ push {r4-r5, lr}
+ sub sp, #0xc
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ ldr r0, [r4, #0xc]
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ str r0, [sp, #0x8]
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x6
+ bhi _020786A6
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0207864A: ; jump table (using 16-bit offset)
+ .short _02078658 - _0207864A - 2; case 0
+ .short _020786A6 - _0207864A - 2; case 1
+ .short _0207866C - _0207864A - 2; case 2
+ .short _020786A6 - _0207864A - 2; case 3
+ .short _02078680 - _0207864A - 2; case 4
+ .short _020786A6 - _0207864A - 2; case 5
+ .short _02078694 - _0207864A - 2; case 6
+_02078658:
+ mov r0, #0x1
+ ldr r1, [r4, #0x8]
+ lsl r0, r0, #0xe
+ add r0, r1, r0
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x0]
+ add r1, sp, #0x0
+ bl FUN_02020044
+ b _020786A6
+_0207866C:
+ mov r0, #0x3
+ ldr r1, [r4, #0x8]
+ lsl r0, r0, #0xc
+ sub r0, r1, r0
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x0]
+ add r1, sp, #0x0
+ bl FUN_02020044
+ b _020786A6
+_02078680:
+ mov r0, #0x2
+ ldr r1, [r4, #0x8]
+ lsl r0, r0, #0xc
+ add r0, r1, r0
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x0]
+ add r1, sp, #0x0
+ bl FUN_02020044
+ b _020786A6
+_02078694:
+ ldr r0, [r4, #0x8]
+ add r1, sp, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x0]
+ bl FUN_02020044
+ add r0, r5, #0x0
+ bl FUN_0200621C
+_020786A6:
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ add sp, #0xc
+ pop {r4-r5, pc}
+
+ thumb_func_start FUN_020786B0
+FUN_020786B0: ; 0x020786B0
+ push {r3-r7, lr}
+ sub sp, #0x28
+ str r1, [sp, #0x14]
+ ldr r1, [sp, #0x40]
+ add r5, r2, #0x0
+ str r1, [sp, #0x40]
+ ldr r1, [sp, #0x48]
+ mov r2, #0x1
+ str r1, [sp, #0x48]
+ ldr r1, [sp, #0x40]
+ str r0, [sp, #0x10]
+ ldr r6, [r1, #0x0]
+ add r7, r3, #0x0
+ add r1, r6, #0x0
+ eor r1, r2
+ str r1, [sp, #0x18]
+ ldr r1, [r5, #0x0]
+ ldr r4, [sp, #0x44]
+ cmp r1, #0x4
+ bls _020786DA
+ b _0207887E
+_020786DA:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_020786E6: ; jump table (using 16-bit offset)
+ .short _020786F0 - _020786E6 - 2; case 0
+ .short _0207873C - _020786E6 - 2; case 1
+ .short _02078762 - _020786E6 - 2; case 2
+ .short _020787FC - _020786E6 - 2; case 3
+ .short _0207887E - _020786E6 - 2; case 4
+_020786F0:
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0xe
+ lsl r0, r0, #0x6
+ str r0, [sp, #0x4]
+ str r2, [sp, #0x8]
+ mov r0, #0x12
+ str r0, [sp, #0xc]
+ ldr r2, [sp, #0x10]
+ mov r0, #0x1f
+ add r1, r7, #0x6
+ add r3, r6, #0x0
+ bl FUN_020068C8
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ bl FUN_02078BA8
+ ldr r0, _02078884 ; =0x020F9D2C
+ lsl r2, r6, #0x4
+ ldrb r1, [r0, r7]
+ ldr r0, [sp, #0x4c]
+ ldr r3, _02078888 ; =0x000E0F00
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x14]
+ add r0, r0, r2
+ lsl r2, r1, #0x4
+ orr r1, r2
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ add r2, r7, #0x0
+ bl FUN_0207974C
+ ldr r0, [r5, #0x0]
+ add sp, #0x28
+ add r0, r0, #0x1
+ str r0, [r5, #0x0]
+ pop {r3-r7, pc}
+_0207873C:
+ lsl r1, r6, #0x18
+ lsr r1, r1, #0x18
+ mov r2, #0x0
+ mov r3, #0xee
+ bl FUN_020179E0
+ mov r2, #0x3
+ lsl r1, r6, #0x18
+ add r3, r2, #0x0
+ ldr r0, [sp, #0x10]
+ lsr r1, r1, #0x18
+ sub r3, #0x53
+ bl FUN_020179E0
+ ldr r0, [r5, #0x0]
+ add sp, #0x28
+ add r0, r0, #0x1
+ str r0, [r5, #0x0]
+ pop {r3-r7, pc}
+_02078762:
+ mov r1, #0xc
+ add r0, r6, #0x0
+ mul r0, r1
+ ldr r2, [r4, r0]
+ str r0, [sp, #0x1c]
+ sub r2, #0x18
+ str r2, [r4, r0]
+ ldr r0, [r4, r0]
+ sub r1, #0xd
+ cmp r0, r1
+ bge _020787BA
+ ldr r0, _0207888C ; =FUN_02078628
+ mov r1, #0x10
+ mov r2, #0x0
+ mov r3, #0x12
+ bl FUN_020061E8
+ bl FUN_0201B6C8
+ add r7, r0, #0x0
+ ldr r0, [sp, #0x48]
+ ldr r0, [r0, #0x1c]
+ str r0, [r7, #0x0]
+ mov r0, #0x0
+ str r0, [r7, #0x4]
+ ldr r0, [sp, #0x48]
+ ldr r0, [r0, #0x1c]
+ bl FUN_0202011C
+ ldr r0, [r0, #0x0]
+ str r0, [r7, #0x8]
+ ldr r0, [sp, #0x48]
+ ldr r0, [r0, #0x1c]
+ bl FUN_0202011C
+ ldr r0, [r0, #0x4]
+ mov r1, #0xa
+ str r0, [r7, #0xc]
+ ldr r0, [sp, #0x1c]
+ mvn r1, r1
+ str r1, [r4, r0]
+ ldr r0, [r5, #0x0]
+ add r0, r0, #0x1
+ str r0, [r5, #0x0]
+_020787BA:
+ ldr r0, [sp, #0x18]
+ mov r1, #0xc
+ add r7, r0, #0x0
+ add r5, r4, #0x4
+ mul r7, r1
+ ldr r0, [r5, r7]
+ sub r0, #0xa
+ str r0, [r5, r7]
+ add r0, r1, #0x0
+ ldr r2, [r5, r7]
+ sub r0, #0xd0
+ cmp r2, r0
+ bge _020787D8
+ sub r1, #0xd0
+ str r1, [r5, r7]
+_020787D8:
+ ldr r3, [sp, #0x1c]
+ lsl r1, r6, #0x18
+ ldr r0, [sp, #0x10]
+ ldr r3, [r4, r3]
+ lsr r1, r1, #0x18
+ mov r2, #0x0
+ bl FUN_020179E0
+ ldr r1, [sp, #0x18]
+ ldr r0, [sp, #0x10]
+ lsl r1, r1, #0x18
+ ldr r3, [r5, r7]
+ lsr r1, r1, #0x18
+ mov r2, #0x3
+ bl FUN_020179E0
+ add sp, #0x28
+ pop {r3-r7, pc}
+_020787FC:
+ ldr r1, [sp, #0x18]
+ mov r0, #0xc
+ add r2, r1, #0x0
+ mul r2, r0
+ str r2, [sp, #0x20]
+ add r7, r4, #0x4
+ ldr r2, [r7, r2]
+ ldr r1, [sp, #0x20]
+ sub r2, #0xa
+ str r2, [r7, r1]
+ ldr r2, [r7, r1]
+ add r1, r0, #0x0
+ sub r1, #0xd0
+ cmp r2, r1
+ bge _02078820
+ ldr r1, [sp, #0x20]
+ sub r0, #0xd0
+ str r0, [r7, r1]
+_02078820:
+ mov r0, #0xc
+ mul r0, r6
+ str r0, [sp, #0x24]
+ ldr r3, [sp, #0x24]
+ lsl r1, r6, #0x18
+ ldr r0, [sp, #0x10]
+ ldr r3, [r4, r3]
+ lsr r1, r1, #0x18
+ mov r2, #0x0
+ bl FUN_020179E0
+ ldr r1, [sp, #0x18]
+ ldr r3, [sp, #0x20]
+ lsl r1, r1, #0x18
+ ldr r0, [sp, #0x10]
+ ldr r3, [r7, r3]
+ lsr r1, r1, #0x18
+ mov r2, #0x3
+ bl FUN_020179E0
+ ldr r0, [sp, #0x24]
+ mov r1, #0xa
+ ldr r0, [r4, r0]
+ mvn r1, r1
+ cmp r0, r1
+ bne _0207887E
+ ldr r0, [sp, #0x20]
+ sub r1, #0xb9
+ ldr r0, [r7, r0]
+ cmp r0, r1
+ bne _0207887E
+ ldr r0, [r5, #0x0]
+ add r2, r4, #0x0
+ add r0, r0, #0x1
+ str r0, [r5, #0x0]
+ ldr r0, [sp, #0x40]
+ ldr r1, [r0, #0x0]
+ mov r0, #0x1
+ eor r1, r0
+ ldr r0, [sp, #0x40]
+ str r1, [r0, #0x0]
+ ldr r0, [sp, #0x10]
+ bl FUN_02078B88
+ ldr r0, _02078890 ; =0x0000069B
+ bl FUN_020054C8
+_0207887E:
+ add sp, #0x28
+ pop {r3-r7, pc}
+ nop
+_02078884: .word 0x020F9D2C
+_02078888: .word 0x000E0F00
+_0207888C: .word FUN_02078628
+_02078890: .word 0x0000069B
+
+ thumb_func_start FUN_02078894
+FUN_02078894: ; 0x02078894
+ push {r4-r5, lr}
+ sub sp, #0xc
+ add r4, r2, #0x0
+ mov r2, #0x1
+ mov r1, #0x0
+ lsl r2, r2, #0x8
+ mov r3, #0xa
+ add r5, r0, #0x0
+ bl FUN_0200D0BC
+ mov r3, #0x0
+ str r3, [sp, #0x0]
+ str r3, [sp, #0x4]
+ add r0, r5, #0x0
+ mov r1, #0x1
+ add r2, r4, #0x0
+ str r3, [sp, #0x8]
+ bl FUN_0201BD84
+ add r0, r5, #0x0
+ bl FUN_020191D0
+ add sp, #0xc
+ pop {r4-r5, pc}
+
+ thumb_func_start FUN_020788C4
+FUN_020788C4: ; 0x020788C4
+ push {r4-r6, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ mov r0, #0x0
+ add r1, r6, #0x0
+ add r2, r0, #0x0
+ mov r4, #0x10
+ bl FUN_02002E14
+ cmp r0, #0x82
+ ble _020788DE
+ mov r4, #0x0
+_020788DE:
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_02019620
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ ldr r0, _02078908 ; =0x000E0F01
+ str r1, [sp, #0x4]
+ str r0, [sp, #0x8]
+ add r0, r5, #0x0
+ add r2, r6, #0x0
+ add r3, r4, #0x0
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, r5, #0x0
+ bl FUN_020191D0
+ add sp, #0x10
+ pop {r4-r6, pc}
+ nop
+_02078908: .word 0x000E0F01
+
+ thumb_func_start FUN_0207890C
+FUN_0207890C: ; 0x0207890C
+ push {r4-r7, lr}
+ sub sp, #0x14
+ add r6, r1, #0x0
+ mov r1, #0x1
+ add r5, r0, #0x0
+ str r1, [sp, #0x0]
+ mov r0, #0x1a
+ str r0, [sp, #0x4]
+ mov r0, #0xc
+ str r0, [sp, #0x8]
+ str r1, [sp, #0xc]
+ add r0, #0xf4
+ str r0, [sp, #0x10]
+ mov r0, #0x16
+ lsl r0, r0, #0x4
+ mov r1, #0xee
+ lsl r1, r1, #0x2
+ ldr r0, [r5, r0]
+ add r1, r5, r1
+ mov r2, #0x0
+ mov r3, #0x2
+ bl FUN_02019064
+ mov r2, #0x1
+ mov r1, #0xf2
+ lsl r1, r1, #0x2
+ str r2, [sp, #0x0]
+ mov r0, #0x1a
+ str r0, [sp, #0x4]
+ mov r0, #0xc
+ str r0, [sp, #0x8]
+ mov r0, #0x8e
+ str r2, [sp, #0xc]
+ lsl r0, r0, #0x2
+ str r0, [sp, #0x10]
+ sub r0, #0xd8
+ ldr r0, [r5, r0]
+ add r1, r5, r1
+ mov r3, #0x2
+ bl FUN_02019064
+ ldr r0, [r5, #0x0]
+ cmp r0, #0x4
+ bne _020789AE
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0xe
+ lsl r0, r0, #0x6
+ str r0, [sp, #0x4]
+ mov r3, #0x1
+ mov r2, #0x16
+ str r3, [sp, #0x8]
+ mov r0, #0x12
+ str r0, [sp, #0xc]
+ lsl r2, r2, #0x4
+ ldr r2, [r5, r2]
+ mov r0, #0x1f
+ mov r1, #0x9
+ bl FUN_020068C8
+ mov r0, #0x46
+ mov r1, #0x4
+ lsl r0, r0, #0x4
+ str r1, [r5, r0]
+ add r0, r5, #0x0
+ add r0, #0x3a
+ bl FUN_0207916C
+ mov r0, #0x4b
+ lsl r0, r0, #0x4
+ ldr r1, [r5, r0]
+ sub r0, #0xe8
+ ldr r1, [r1, #0x14]
+ ldr r3, _02078B6C ; =0x000E0F00
+ str r1, [sp, #0x0]
+ ldr r1, _02078B70 ; =0x00000A0A
+ add r0, r5, r0
+ mov r2, #0x4
+ bl FUN_0207974C
+ b _020789D8
+_020789AE:
+ mov r0, #0x46
+ mov r1, #0x0
+ lsl r0, r0, #0x4
+ str r1, [r5, r0]
+ add r0, r5, #0x0
+ add r0, #0x3a
+ bl FUN_0207916C
+ mov r1, #0x4b
+ lsl r1, r1, #0x4
+ ldr r0, [r5, r1]
+ ldr r3, _02078B6C ; =0x000E0F00
+ ldr r0, [r0, #0x14]
+ mov r2, #0x0
+ str r0, [sp, #0x0]
+ add r0, r1, #0x0
+ sub r0, #0xe8
+ add r0, r5, r0
+ sub r1, #0xac
+ bl FUN_0207974C
+_020789D8:
+ mov r2, #0x2
+ str r2, [sp, #0x0]
+ mov r3, #0x16
+ str r3, [sp, #0x4]
+ mov r1, #0x37
+ str r2, [sp, #0x8]
+ mov r0, #0x0
+ str r0, [sp, #0xc]
+ lsl r1, r1, #0x4
+ str r1, [sp, #0x10]
+ lsl r0, r3, #0x4
+ add r1, #0x68
+ ldr r0, [r5, r0]
+ add r1, r5, r1
+ mov r3, #0x7
+ bl FUN_02019064
+ ldr r1, [r5, #0xc]
+ mov r0, #0xc
+ add r2, r1, #0x0
+ mul r2, r0
+ asr r0, r2, #0x2
+ lsr r0, r0, #0x1d
+ add r0, r2, r0
+ asr r0, r0, #0x3
+ add r4, r0, #0x1
+ mov r0, #0x3
+ str r0, [sp, #0x0]
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x4]
+ mov r2, #0x2
+ mov r1, #0xe7
+ str r2, [sp, #0x8]
+ mov r0, #0x0
+ str r0, [sp, #0xc]
+ lsl r1, r1, #0x2
+ mov r0, #0x16
+ str r1, [sp, #0x10]
+ lsl r0, r0, #0x4
+ add r1, #0x4c
+ ldr r0, [r5, r0]
+ add r1, r5, r1
+ mov r3, #0xa
+ bl FUN_02019064
+ mov r0, #0xfa
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ mov r1, #0x1
+ bl FUN_02019620
+ mov r0, #0x3
+ str r0, [sp, #0x0]
+ mov r0, #0x7
+ str r0, [sp, #0x4]
+ mov r2, #0x2
+ mov r1, #0xf
+ add r4, #0x9
+ lsl r3, r4, #0x18
+ str r2, [sp, #0x8]
+ mov r0, #0x0
+ str r0, [sp, #0xc]
+ lsl r1, r1, #0x6
+ mov r0, #0x16
+ str r1, [sp, #0x10]
+ lsl r0, r0, #0x4
+ add r1, #0x78
+ ldr r0, [r5, r0]
+ add r1, r5, r1
+ lsr r3, r3, #0x18
+ bl FUN_02019064
+ ldr r0, _02078B74 ; =0x00000438
+ mov r1, #0x1
+ add r0, r5, r0
+ bl FUN_02019620
+ ldr r1, [r5, #0x0]
+ cmp r1, #0x5
+ bne _02078A90
+ mov r2, #0x61
+ ldr r0, _02078B74 ; =0x00000438
+ lsl r2, r2, #0x2
+ ldr r2, [r5, r2]
+ add r0, r5, r0
+ bl FUN_020788C4
+ ldr r0, _02078B74 ; =0x00000438
+ add r0, r5, r0
+ bl FUN_020191D0
+_02078A90:
+ mov r0, #0x13
+ str r0, [sp, #0x0]
+ mov r0, #0x1b
+ str r0, [sp, #0x4]
+ mov r2, #0x4
+ ldr r1, _02078B78 ; =0x00000448
+ str r2, [sp, #0x8]
+ mov r0, #0xc
+ str r0, [sp, #0xc]
+ mov r0, #0x84
+ str r0, [sp, #0x10]
+ add r0, #0xdc
+ ldr r0, [r5, r0]
+ add r1, r5, r1
+ mov r3, #0x2
+ bl FUN_02019064
+ ldr r0, _02078B78 ; =0x00000448
+ mov r1, #0xf
+ add r0, r5, r0
+ bl FUN_02019620
+ mov r2, #0x5e
+ ldr r0, _02078B78 ; =0x00000448
+ lsl r2, r2, #0x2
+ ldr r1, [r5, #0x0]
+ ldr r2, [r5, r2]
+ add r0, r5, r0
+ bl FUN_02078894
+ add r0, r6, #0x0
+ bl FUN_0200628C
+ mov r1, #0x46
+ lsl r1, r1, #0x2
+ ldrh r2, [r5, r1]
+ ldr r0, _02078B7C ; =0x0000FFFF
+ cmp r2, r0
+ beq _02078B06
+ add r0, r5, #0x0
+ add r0, #0xd8
+ add r1, r5, r1
+ bl StringCopy
+ mov r0, #0xc
+ str r0, [sp, #0x0]
+ mov r2, #0x0
+ add r1, r5, #0x0
+ ldr r0, _02078B80 ; =0x000E0F01
+ str r2, [sp, #0x4]
+ str r0, [sp, #0x8]
+ mov r0, #0xfa
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ add r1, #0xd8
+ add r3, r2, #0x0
+ str r2, [sp, #0xc]
+ bl FUN_02078E7C
+_02078B06:
+ mov r0, #0xee
+ lsl r0, r0, #0x2
+ mov r4, #0x0
+ add r7, r5, r0
+_02078B0E:
+ add r0, r4, #0x4
+ lsl r6, r0, #0x4
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x2
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ mov r0, #0x0
+ str r0, [sp, #0xc]
+ mov r0, #0x78
+ str r0, [sp, #0x10]
+ add r0, #0xe8
+ ldr r0, [r5, r0]
+ add r1, r7, r6
+ mov r2, #0x2
+ mov r3, #0x0
+ bl FUN_02019064
+ add r0, r7, r6
+ mov r1, #0x0
+ bl FUN_02019620
+ add r4, r4, #0x1
+ cmp r4, #0x3
+ blt _02078B0E
+ mov r3, #0x0
+ str r3, [sp, #0x0]
+ mov r0, #0x10
+ str r0, [sp, #0x4]
+ mov r2, #0x2
+ str r2, [sp, #0x8]
+ ldr r1, _02078B84 ; =0x00000428
+ str r3, [sp, #0xc]
+ mov r0, #0x84
+ str r0, [sp, #0x10]
+ add r0, #0xdc
+ ldr r0, [r5, r0]
+ add r1, r5, r1
+ bl FUN_02019064
+ ldr r0, _02078B84 ; =0x00000428
+ mov r1, #0x0
+ add r0, r5, r0
+ bl FUN_02019620
+ add sp, #0x14
+ pop {r4-r7, pc}
+ .balign 4
+_02078B6C: .word 0x000E0F00
+_02078B70: .word 0x00000A0A
+_02078B74: .word 0x00000438
+_02078B78: .word 0x00000448
+_02078B7C: .word 0x0000FFFF
+_02078B80: .word 0x000E0F01
+_02078B84: .word 0x00000428
+
+ thumb_func_start FUN_02078B88
+FUN_02078B88: ; 0x02078B88
+ push {r4, lr}
+ add r4, r1, #0x0
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ mov r1, #0x1
+ bl FUN_020178BC
+ mov r0, #0x1
+ eor r0, r4
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r1, #0x2
+ bl FUN_020178BC
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02078BA8
+FUN_02078BA8: ; 0x02078BA8
+ push {r3-r4}
+ mov r3, #0xc
+ add r4, r1, #0x0
+ mul r4, r3
+ mov r2, #0xee
+ str r2, [r0, r4]
+ add r2, r3, #0x0
+ sub r2, #0x5c
+ add r4, r0, r4
+ str r2, [r4, #0x4]
+ mov r4, #0x1
+ eor r1, r4
+ mul r3, r1
+ sub r4, #0xc
+ str r4, [r0, r3]
+ add r0, r0, r3
+ str r2, [r0, #0x4]
+ pop {r3-r4}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02078BD0
+FUN_02078BD0: ; 0x02078BD0
+ cmp r0, r2
+ blt _02078BD6
+ add r0, r1, #0x0
+_02078BD6:
+ cmp r0, r1
+ bge _02078BDC
+ sub r0, r2, #0x1
+_02078BDC:
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02078BE0
+FUN_02078BE0: ; 0x02078BE0
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ cmp r1, #0x0
+ beq _02078C84
+ ldr r3, [r5, #0x20]
+ mov r2, #0x1a
+ mul r2, r3
+ ldr r0, [r5, #0x1c]
+ add r3, r5, r2
+ lsl r2, r0, #0x1
+ add r2, r3, r2
+ ldrh r2, [r2, #0x3a]
+ lsl r6, r1, #0x3
+ ldr r1, _02078C88 ; =0x020FA154
+ str r2, [sp, #0x0]
+ ldr r1, [r1, r6]
+ mov r2, #0xd
+ add r0, r0, r1
+ mov r1, #0x0
+ bl FUN_02078BD0
+ add r4, r0, #0x0
+ ldr r0, _02078C8C ; =0x020FA158
+ ldr r1, [r5, #0x20]
+ ldr r0, [r0, r6]
+ mov r2, #0x6
+ add r0, r1, r0
+ mov r1, #0x0
+ bl FUN_02078BD0
+ add r7, r0, #0x0
+ ldr r0, _02078C88 ; =0x020FA154
+ add r6, r0, r6
+ b _02078C62
+_02078C24:
+ ldr r1, [r5, #0x28]
+ cmp r1, #0x0
+ bne _02078C46
+ ldr r1, _02078C90 ; =0x0000D004
+ cmp r0, r1
+ bne _02078C46
+ ldr r0, [r6, #0x4]
+ cmp r0, #0x0
+ beq _02078C46
+ ldr r0, [r5, #0x2c]
+ mov r1, #0x0
+ add r0, r4, r0
+ mov r2, #0xd
+ bl FUN_02078BD0
+ add r4, r0, #0x0
+ b _02078C62
+_02078C46:
+ ldr r0, [r6, #0x0]
+ mov r1, #0x0
+ add r0, r4, r0
+ mov r2, #0xd
+ bl FUN_02078BD0
+ add r4, r0, #0x0
+ ldr r0, [r6, #0x4]
+ mov r1, #0x0
+ add r0, r7, r0
+ mov r2, #0x6
+ bl FUN_02078BD0
+ add r7, r0, #0x0
+_02078C62:
+ mov r0, #0x1a
+ mul r0, r7
+ lsl r1, r4, #0x1
+ add r0, r5, r0
+ add r0, r1, r0
+ ldrh r0, [r0, #0x3a]
+ ldr r1, _02078C90 ; =0x0000D004
+ cmp r0, r1
+ beq _02078C24
+ ldr r1, [sp, #0x0]
+ cmp r1, r0
+ bne _02078C80
+ ldr r1, _02078C94 ; =0x0000E001
+ cmp r0, r1
+ bhi _02078C24
+_02078C80:
+ str r4, [r5, #0x1c]
+ str r7, [r5, #0x20]
+_02078C84:
+ pop {r3-r7, pc}
+ nop
+_02078C88: .word 0x020FA154
+_02078C8C: .word 0x020FA158
+_02078C90: .word 0x0000D004
+_02078C94: .word 0x0000E001
+
+ thumb_func_start FUN_02078C98
+FUN_02078C98: ; 0x02078C98
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, _02078D70 ; =0x021C48B8
+ mov r4, #0x0
+ ldr r1, [r0, #0x4c]
+ mov r0, #0x40
+ add r6, r4, #0x0
+ tst r0, r1
+ beq _02078CC0
+ ldr r0, _02078D74 ; =0x000005DC
+ bl FUN_020054C8
+ mov r0, #0xd3
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ mov r1, #0x1
+ bl FUN_020200A0
+ mov r6, #0x1
+ add r4, r4, #0x1
+_02078CC0:
+ ldr r0, _02078D70 ; =0x021C48B8
+ ldr r1, [r0, #0x4c]
+ mov r0, #0x80
+ tst r0, r1
+ beq _02078CE0
+ ldr r0, _02078D74 ; =0x000005DC
+ bl FUN_020054C8
+ mov r0, #0xd3
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ mov r1, #0x1
+ bl FUN_020200A0
+ mov r6, #0x2
+ add r4, r4, #0x1
+_02078CE0:
+ ldr r0, _02078D70 ; =0x021C48B8
+ ldr r1, [r0, #0x4c]
+ mov r0, #0x20
+ tst r0, r1
+ beq _02078D00
+ ldr r0, _02078D74 ; =0x000005DC
+ bl FUN_020054C8
+ mov r0, #0xd3
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ mov r1, #0x1
+ bl FUN_020200A0
+ mov r6, #0x3
+ add r4, r4, #0x1
+_02078D00:
+ ldr r0, _02078D70 ; =0x021C48B8
+ ldr r1, [r0, #0x4c]
+ mov r0, #0x10
+ tst r0, r1
+ beq _02078D20
+ ldr r0, _02078D74 ; =0x000005DC
+ bl FUN_020054C8
+ mov r0, #0xd3
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ mov r1, #0x1
+ bl FUN_020200A0
+ mov r6, #0x4
+ add r4, r4, #0x1
+_02078D20:
+ ldr r0, _02078D70 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x8
+ tst r0, r1
+ beq _02078D46
+ ldr r0, _02078D74 ; =0x000005DC
+ bl FUN_020054C8
+ mov r0, #0xd3
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ mov r1, #0x1
+ bl FUN_020200A0
+ mov r0, #0xc
+ str r0, [r5, #0x1c]
+ mov r0, #0x0
+ str r0, [r5, #0x20]
+ add r4, r4, #0x1
+_02078D46:
+ add r0, r5, #0x0
+ bl FUN_02079930
+ ldr r1, _02078D78 ; =0x000005C8
+ str r0, [r5, r1]
+ ldr r0, [r5, r1]
+ cmp r0, #0x1
+ bne _02078D5A
+ mov r6, #0x0
+ add r4, r4, #0x1
+_02078D5A:
+ cmp r4, #0x0
+ beq _02078D6E
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02078BE0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02078D7C
+_02078D6E:
+ pop {r4-r6, pc}
+ .balign 4
+_02078D70: .word 0x021C48B8
+_02078D74: .word 0x000005DC
+_02078D78: .word 0x000005C8
+
+ thumb_func_start FUN_02078D7C
+FUN_02078D7C: ; 0x02078D7C
+ push {r3-r5, lr}
+ sub sp, #0x18
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ ldr r1, [r5, #0x20]
+ cmp r1, #0x0
+ beq _02078DC6
+ ldr r0, [r5, #0x28]
+ cmp r0, #0x0
+ bne _02078DA0
+ cmp r0, r1
+ beq _02078DA0
+ mov r0, #0xd3
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ mov r1, #0x27
+ bl FUN_02020130
+_02078DA0:
+ ldr r0, [r5, #0x1c]
+ lsl r0, r0, #0x4
+ add r0, #0x1a
+ lsl r0, r0, #0xc
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x20]
+ sub r1, r0, #0x1
+ mov r0, #0x13
+ mul r0, r1
+ add r0, #0x5b
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x10]
+ mov r0, #0xd3
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ add r1, sp, #0xc
+ bl FUN_02020044
+ b _02078E02
+_02078DC6:
+ mov r0, #0x1a
+ mul r0, r1
+ add r1, r5, r0
+ ldr r0, [r5, #0x1c]
+ lsl r0, r0, #0x1
+ add r0, r1, r0
+ ldrh r1, [r0, #0x3a]
+ ldr r0, _02078E2C ; =0x0000E002
+ sub r1, r1, r0
+ ldr r0, _02078E30 ; =0x020F9D6C
+ lsl r2, r1, #0x1
+ ldrh r0, [r0, r2]
+ ldr r2, _02078E34 ; =0x020F9D38
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x0]
+ mov r0, #0x11
+ lsl r0, r0, #0xe
+ str r0, [sp, #0x4]
+ mov r0, #0xd3
+ lsl r0, r0, #0x2
+ ldrb r1, [r2, r1]
+ ldr r0, [r5, r0]
+ bl FUN_02020130
+ mov r0, #0xd3
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ add r1, sp, #0x0
+ bl FUN_02020044
+_02078E02:
+ mov r0, #0xb4
+ strh r0, [r5, #0x38]
+ mov r0, #0xd3
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ mov r1, #0x0
+ bl FUN_02020208
+ ldr r0, [r5, #0x1c]
+ lsl r1, r4, #0x3
+ str r0, [r5, #0x24]
+ ldr r0, [r5, #0x20]
+ str r0, [r5, #0x28]
+ ldr r0, _02078E38 ; =0x020FA154
+ ldr r0, [r0, r1]
+ cmp r0, #0x0
+ beq _02078E26
+ str r0, [r5, #0x2c]
+_02078E26:
+ add sp, #0x18
+ pop {r3-r5, pc}
+ nop
+_02078E2C: .word 0x0000E002
+_02078E30: .word 0x020F9D6C
+_02078E34: .word 0x020F9D38
+_02078E38: .word 0x020FA154
+
+ thumb_func_start FUN_02078E3C
+FUN_02078E3C: ; 0x02078E3C
+ push {r3, lr}
+ ldrh r1, [r0, #0x0]
+ add r1, #0x14
+ strh r1, [r0, #0x0]
+ ldrh r2, [r0, #0x0]
+ mov r1, #0x5a
+ lsl r1, r1, #0x2
+ cmp r2, r1
+ bls _02078E52
+ mov r1, #0x0
+ strh r1, [r0, #0x0]
+_02078E52:
+ ldrh r0, [r0, #0x0]
+ bl FUN_0201B970
+ mov r1, #0xa
+ mul r1, r0
+ asr r0, r1, #0xb
+ lsr r0, r0, #0x14
+ add r0, r1, r0
+ asr r0, r0, #0xc
+ add r0, #0xf
+ lsl r1, r0, #0x5
+ mov r0, #0x1d
+ orr r1, r0
+ add r0, sp, #0x0
+ strh r1, [r0, #0x0]
+ add r0, sp, #0x0
+ mov r1, #0x3a
+ mov r2, #0x2
+ blx FUN_020C9480
+ pop {r3, pc}
+
+ thumb_func_start FUN_02078E7C
+FUN_02078E7C: ; 0x02078E7C
+ push {r4-r7, lr}
+ sub sp, #0x3c
+ str r0, [sp, #0x18]
+ add r7, r1, #0x0
+ mov r0, #0x2
+ mov r1, #0x12
+ str r2, [sp, #0x1c]
+ str r3, [sp, #0x20]
+ mov r4, #0x0
+ bl FUN_020219F4
+ str r0, [sp, #0x28]
+ ldrh r1, [r7, #0x0]
+ ldr r0, _02078F6C ; =0x0000FFFF
+ cmp r1, r0
+ beq _02078F62
+ ldr r0, [sp, #0x54]
+ ldr r6, [sp, #0x50]
+ str r0, [sp, #0x24]
+ ldr r0, [sp, #0x58]
+ str r0, [sp, #0x34]
+ ldr r0, [sp, #0x20]
+ add r0, r0, #0x2
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x2c]
+ ldr r0, [sp, #0x5c]
+ str r0, [sp, #0x30]
+_02078EB4:
+ lsl r0, r4, #0x1
+ ldrh r1, [r7, r0]
+ ldr r0, _02078F70 ; =0x00002FFF
+ add r0, r1, r0
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ cmp r0, #0x2
+ bhi _02078F00
+ mov r0, #0xc
+ str r0, [sp, #0x0]
+ str r0, [sp, #0x4]
+ add r2, r4, #0x0
+ ldr r0, [sp, #0x1c]
+ mul r2, r6
+ add r0, r0, r2
+ ldr r2, _02078F74 ; =0x0000D001
+ lsl r0, r0, #0x10
+ sub r1, r1, r2
+ lsl r1, r1, #0x10
+ lsr r0, r0, #0x10
+ lsr r2, r1, #0x8
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x2c]
+ lsr r1, r2, #0x1f
+ add r1, r2, r1
+ str r0, [sp, #0xc]
+ mov r0, #0xc
+ asr r2, r1, #0x1
+ ldr r1, [sp, #0x30]
+ str r0, [sp, #0x10]
+ str r0, [sp, #0x14]
+ add r1, r1, r2
+ mov r2, #0x0
+ ldr r0, [sp, #0x18]
+ add r3, r2, #0x0
+ bl FUN_02019658
+ b _02078F56
+_02078F00:
+ ldr r0, _02078F78 ; =0x0000D004
+ cmp r1, r0
+ bne _02078F0A
+ add r4, r4, #0x1
+ b _02078F58
+_02078F0A:
+ add r0, sp, #0x38
+ strh r1, [r0, #0x0]
+ ldr r1, _02078F6C ; =0x0000FFFF
+ strh r1, [r0, #0x2]
+ mov r0, #0x0
+ add r1, sp, #0x38
+ add r2, r0, #0x0
+ bl FUN_02002DE0
+ add r5, r0, #0x0
+ ldr r0, [sp, #0x28]
+ add r1, sp, #0x38
+ bl FUN_02021E28
+ ldr r0, [sp, #0x20]
+ sub r3, r6, r5
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x24]
+ lsr r5, r3, #0x1f
+ add r5, r3, r5
+ asr r3, r5, #0x1
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x34]
+ mov r12, r3
+ add r5, r4, #0x0
+ str r0, [sp, #0x8]
+ mov r0, #0x0
+ str r0, [sp, #0xc]
+ ldr r3, [sp, #0x1c]
+ mul r5, r6
+ add r3, r3, r5
+ mov r5, r12
+ ldr r0, [sp, #0x18]
+ ldr r2, [sp, #0x28]
+ mov r1, #0x0
+ add r3, r5, r3
+ bl FUN_0201BDE0
+_02078F56:
+ add r4, r4, #0x1
+_02078F58:
+ lsl r0, r4, #0x1
+ ldrh r1, [r7, r0]
+ ldr r0, _02078F6C ; =0x0000FFFF
+ cmp r1, r0
+ bne _02078EB4
+_02078F62:
+ ldr r0, [sp, #0x28]
+ bl FUN_02021A20
+ add sp, #0x3c
+ pop {r4-r7, pc}
+ .balign 4
+_02078F6C: .word 0x0000FFFF
+_02078F70: .word 0x00002FFF
+_02078F74: .word 0x0000D001
+_02078F78: .word 0x0000D004
+
+ thumb_func_start FUN_02078F7C
+FUN_02078F7C: ; 0x02078F7C
+ push {r4-r6, lr}
+ sub sp, #0x10
+ mov r5, #0x0
+ add r6, r1, #0x0
+ str r5, [sp, #0x0]
+ mov r1, #0xff
+ str r1, [sp, #0x4]
+ str r3, [sp, #0x8]
+ add r1, r2, #0x0
+ add r2, r6, #0x0
+ add r3, r5, #0x0
+ add r4, r0, #0x0
+ str r5, [sp, #0xc]
+ bl FUN_0201BDE0
+ ldr r0, [r4, #0xc]
+ add sp, #0x10
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02078FA0
+FUN_02078FA0: ; 0x02078FA0
+ push {r3-r7, lr}
+ sub sp, #0x38
+ add r6, r0, #0x0
+ str r1, [sp, #0x8]
+ add r0, #0x30
+ mov r1, #0x0
+ add r5, r2, #0x0
+ add r4, r3, #0x0
+ bl FUN_02019620
+ add r0, r6, #0x0
+ ldr r3, _0207906C ; =0x000D0E0F
+ add r0, #0x30
+ add r1, r4, #0x0
+ mov r2, #0x2
+ bl FUN_02078F7C
+ mov r1, #0x2
+ lsl r1, r1, #0xa
+ blx DC_FlushRange
+ add r7, r6, #0x0
+ mov r4, #0x0
+ add r7, #0x30
+_02078FD0:
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ add r0, r7, #0x0
+ mov r1, #0x4
+ mov r2, #0x2
+ lsl r3, r4, #0x2
+ str r5, [sp, #0x4]
+ bl FUN_02011B20
+ mov r1, #0x1
+ add r0, r5, #0x0
+ lsl r1, r1, #0x8
+ blx DC_FlushRange
+ ldr r1, _02079070 ; =0x020F9D28
+ mov r2, #0x1
+ ldrb r1, [r1, r4]
+ add r0, r5, #0x0
+ lsl r2, r2, #0x8
+ lsl r1, r1, #0x5
+ blx FUN_020C9294
+ add r0, r4, #0x1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #0x4
+ blo _02078FD0
+ mov r0, #0x15
+ mov r1, #0x12
+ bl FUN_020219F4
+ add r4, r0, #0x0
+ mov r5, #0x0
+_02079012:
+ ldr r0, [sp, #0x8]
+ lsl r1, r5, #0x1
+ ldrh r1, [r0, r1]
+ add r0, sp, #0xc
+ lsl r7, r5, #0x4
+ strh r1, [r0, #0x0]
+ ldr r1, _02079074 ; =0x0000FFFF
+ strh r1, [r0, #0x2]
+ add r0, r6, r7
+ mov r1, #0x0
+ bl FUN_02019620
+ add r0, r4, #0x0
+ add r1, sp, #0xc
+ bl FUN_02021E28
+ ldr r3, _0207906C ; =0x000D0E0F
+ add r0, r6, r7
+ add r1, r4, #0x0
+ mov r2, #0x2
+ bl FUN_02078F7C
+ mov r1, #0x80
+ add r7, r0, #0x0
+ blx DC_FlushRange
+ ldr r1, _02079078 ; =0x020F9D40
+ lsl r2, r5, #0x2
+ ldr r1, [r1, r2]
+ add r0, r7, #0x0
+ lsl r1, r1, #0x5
+ mov r2, #0x80
+ blx FUN_020C9294
+ add r0, r5, #0x1
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ cmp r5, #0x3
+ blo _02079012
+ add r0, r4, #0x0
+ bl FUN_02021A20
+ add sp, #0x38
+ pop {r3-r7, pc}
+ nop
+_0207906C: .word 0x000D0E0F
+_02079070: .word 0x020F9D28
+_02079074: .word 0x0000FFFF
+_02079078: .word 0x020F9D40
+
+ thumb_func_start FUN_0207907C
+FUN_0207907C: ; 0x0207907C
+ push {r3-r5, lr}
+ cmp r2, #0x0
+ bne _02079086
+ ldr r1, _02079158 ; =0x0000D003
+ b _0207908C
+_02079086:
+ sub r2, r2, #0x1
+ lsl r2, r2, #0x1
+ ldrh r1, [r1, r2]
+_0207908C:
+ ldr r4, _0207915C ; =0x0000E003
+ cmp r1, r4
+ bgt _020790BC
+ bge _020790E2
+ ldr r2, _02079160 ; =0x0000D004
+ cmp r1, r2
+ bgt _020790B4
+ sub r2, r2, #0x3
+ sub r2, r1, r2
+ bmi _020790E4
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_020790AC: ; jump table (using 16-bit offset)
+ .short _020790E2 - _020790AC - 2; case 0
+ .short _020790E2 - _020790AC - 2; case 1
+ .short _020790E2 - _020790AC - 2; case 2
+ .short _020790E2 - _020790AC - 2; case 3
+_020790B4:
+ ldr r2, _02079164 ; =0x0000E002
+ cmp r1, r2
+ beq _020790E2
+ b _020790E4
+_020790BC:
+ add r2, r4, #0x1
+ cmp r1, r2
+ bgt _020790C6
+ beq _020790E2
+ b _020790E4
+_020790C6:
+ add r2, r4, #0x2
+ sub r2, r1, r2
+ cmp r2, #0x3
+ bhi _020790E4
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_020790DA: ; jump table (using 16-bit offset)
+ .short _020790E2 - _020790DA - 2; case 0
+ .short _020790E2 - _020790DA - 2; case 1
+ .short _020790E2 - _020790DA - 2; case 2
+ .short _020790E2 - _020790DA - 2; case 3
+_020790E2:
+ mov r1, #0x1
+_020790E4:
+ mov r4, #0x0
+ add r5, r3, #0x0
+ mov r2, #0x1
+_020790EA:
+ add r4, r4, #0x1
+ strh r2, [r5, #0x0]
+ add r5, r5, #0x2
+ cmp r4, #0x3
+ blt _020790EA
+ strh r1, [r3, #0x0]
+ cmp r1, #0x1
+ beq _0207914A
+ ldr r5, _02079168 ; =0x020FA40E
+ mov r2, #0x0
+_020790FE:
+ ldrh r4, [r5, #0x0]
+ cmp r1, r4
+ bne _02079120
+ mov r4, #0x6
+ ldr r5, _02079168 ; =0x020FA40E
+ mul r4, r2
+ add r4, r5, r4
+ mov r1, #0x0
+ add r5, r3, #0x0
+_02079110:
+ ldrh r2, [r4, #0x0]
+ add r1, r1, #0x1
+ add r4, r4, #0x2
+ strh r2, [r5, #0x0]
+ add r5, r5, #0x2
+ cmp r1, #0x3
+ blt _02079110
+ b _0207914A
+_02079120:
+ ldrh r4, [r5, #0x4]
+ cmp r1, r4
+ bne _02079142
+ mov r4, #0x6
+ ldr r5, _02079168 ; =0x020FA40E
+ mul r4, r2
+ add r4, r5, r4
+ mov r1, #0x0
+ add r5, r3, #0x0
+_02079132:
+ ldrh r2, [r4, #0x0]
+ add r1, r1, #0x1
+ add r4, r4, #0x2
+ strh r2, [r5, #0x0]
+ add r5, r5, #0x2
+ cmp r1, #0x3
+ blt _02079132
+ b _0207914A
+_02079142:
+ add r2, r2, #0x1
+ add r5, r5, #0x6
+ cmp r2, #0x52
+ blo _020790FE
+_0207914A:
+ add r1, r3, #0x0
+ ldr r2, [sp, #0x10]
+ ldr r3, [sp, #0x14]
+ bl FUN_02078FA0
+ pop {r3-r5, pc}
+ nop
+_02079158: .word 0x0000D003
+_0207915C: .word 0x0000E003
+_02079160: .word 0x0000D004
+_02079164: .word 0x0000E002
+_02079168: .word 0x020FA40E
+
+ thumb_func_start FUN_0207916C
+FUN_0207916C: ; 0x0207916C
+ push {r4-r7}
+ mov r4, #0x0
+ ldr r3, _020791B8 ; =0x02106058
+ add r5, r4, #0x0
+ add r6, r0, #0x0
+ lsl r2, r1, #0x2
+_02079178:
+ ldr r7, [r3, r2]
+ add r4, r4, #0x1
+ ldrh r7, [r7, r5]
+ add r5, r5, #0x2
+ strh r7, [r6, #0x0]
+ add r6, r6, #0x2
+ cmp r4, #0xd
+ blt _02079178
+ mov r3, #0x14
+ ldr r4, _020791BC ; =0x0210606C
+ mul r3, r1
+ mov r2, #0x0
+ add r3, r4, r3
+ add r1, r2, #0x0
+_02079194:
+ add r6, r1, #0x0
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+_0207919A:
+ ldr r7, [r3, #0x0]
+ add r6, r6, #0x1
+ ldrh r7, [r7, r4]
+ add r4, r4, #0x2
+ strh r7, [r5, #0x1a]
+ add r5, r5, #0x2
+ cmp r6, #0xd
+ blt _0207919A
+ add r2, r2, #0x1
+ add r3, r3, #0x4
+ add r0, #0x1a
+ cmp r2, #0x5
+ blt _02079194
+ pop {r4-r7}
+ bx lr
+ .balign 4
+_020791B8: .word 0x02106058
+_020791BC: .word 0x0210606C
+
+ thumb_func_start FUN_020791C0
+FUN_020791C0: ; 0x020791C0
+ push {r4-r6, lr}
+ sub sp, #0x10
+ add r4, r0, #0x0
+ ldr r0, _0207952C ; =0x00002FFD
+ add r6, r2, #0x0
+ add r0, r1, r0
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ cmp r0, #0x1
+ bhi _020791D6
+ mov r1, #0x1
+_020791D6:
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x4
+ bne _020791EA
+ ldr r0, _02079530 ; =0x00001FFE
+ add r0, r1, r0
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ cmp r0, #0x3
+ bhi _020791EA
+ mov r1, #0x1
+_020791EA:
+ ldr r0, _02079534 ; =0x0000E002
+ cmp r1, r0
+ bgt _02079208
+ blt _020791F4
+ b _0207931C
+_020791F4:
+ ldr r3, _02079538 ; =0x0000D002
+ cmp r1, r3
+ bgt _02079206
+ sub r0, r3, #0x1
+ cmp r1, r0
+ blt _02079206
+ beq _0207922A
+ cmp r1, r3
+ beq _0207927C
+_02079206:
+ b _0207945C
+_02079208:
+ add r0, r0, #0x1
+ sub r0, r1, r0
+ cmp r0, #0x5
+ bls _02079212
+ b _0207945C
+_02079212:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0207921E: ; jump table (using 16-bit offset)
+ .short _0207931C - _0207921E - 2; case 0
+ .short _0207931C - _0207921E - 2; case 1
+ .short _0207931C - _0207921E - 2; case 2
+ .short _020792CA - _0207921E - 2; case 3
+ .short _0207935E - _0207921E - 2; case 4
+ .short _0207940E - _0207921E - 2; case 5
+_0207922A:
+ add r0, r4, #0x0
+ add r0, #0xd8
+ str r0, [sp, #0x0]
+ mov r0, #0x56
+ lsl r0, r0, #0x2
+ ldrh r0, [r4, r0]
+ ldr r3, _0207953C ; =0x0000D001
+ mov r1, #0x52
+ str r0, [sp, #0x4]
+ mov r0, #0x2a
+ mov r2, #0x1
+ bl FUN_020795FC
+ cmp r0, #0x0
+ bne _0207924A
+ b _02079526
+_0207924A:
+ mov r0, #0xfa
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ mov r1, #0x1
+ bl FUN_02019620
+ mov r0, #0xc
+ str r0, [sp, #0x0]
+ mov r2, #0x0
+ ldr r0, _02079540 ; =0x000E0F01
+ str r2, [sp, #0x4]
+ str r0, [sp, #0x8]
+ mov r0, #0xfa
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ add r4, #0xd8
+ add r1, r4, #0x0
+ add r3, r2, #0x0
+ str r2, [sp, #0xc]
+ bl FUN_02078E7C
+ ldr r0, _02079544 ; =0x000005EB
+ bl FUN_020054C8
+ b _02079526
+_0207927C:
+ add r0, r4, #0x0
+ add r0, #0xd8
+ str r0, [sp, #0x0]
+ mov r0, #0x56
+ lsl r0, r0, #0x2
+ ldrh r0, [r4, r0]
+ mov r1, #0x52
+ mov r2, #0x2
+ str r0, [sp, #0x4]
+ mov r0, #0x48
+ bl FUN_020795FC
+ cmp r0, #0x0
+ beq _02079368
+ mov r0, #0xfa
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ mov r1, #0x1
+ bl FUN_02019620
+ mov r0, #0xc
+ str r0, [sp, #0x0]
+ mov r2, #0x0
+ ldr r0, _02079540 ; =0x000E0F01
+ str r2, [sp, #0x4]
+ str r0, [sp, #0x8]
+ mov r0, #0xfa
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ add r4, #0xd8
+ add r1, r4, #0x0
+ add r3, r2, #0x0
+ str r2, [sp, #0xc]
+ bl FUN_02078E7C
+ ldr r0, _02079544 ; =0x000005EB
+ bl FUN_020054C8
+ b _02079526
+_020792CA:
+ mov r3, #0x56
+ lsl r3, r3, #0x2
+ ldrh r3, [r4, r3]
+ add r2, r4, #0x0
+ mov r0, #0x0
+ mov r1, #0x52
+ add r2, #0xd8
+ bl FUN_02079590
+ cmp r0, #0x0
+ beq _02079368
+ mov r0, #0xfa
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ mov r1, #0x1
+ bl FUN_02019620
+ mov r0, #0xc
+ str r0, [sp, #0x0]
+ mov r2, #0x0
+ add r1, r4, #0x0
+ ldr r0, _02079540 ; =0x000E0F01
+ str r2, [sp, #0x4]
+ str r0, [sp, #0x8]
+ mov r0, #0xfa
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ add r1, #0xd8
+ add r3, r2, #0x0
+ str r2, [sp, #0xc]
+ bl FUN_02078E7C
+ mov r0, #0x4a
+ lsl r0, r0, #0x4
+ ldr r1, [r4, r0]
+ add r1, r1, #0x1
+ str r1, [r4, r0]
+ ldr r0, _02079544 ; =0x000005EB
+ bl FUN_020054C8
+ b _02079526
+_0207931C:
+ mov r2, #0x46
+ lsl r2, r2, #0x4
+ ldr r0, _02079534 ; =0x0000E002
+ ldr r3, [r4, r2]
+ sub r5, r1, r0
+ cmp r3, r5
+ beq _02079368
+ mov r1, #0x0
+ sub r0, r2, #0x4
+ str r1, [r4, r0]
+ str r5, [r4, r2]
+ add r0, r4, #0x0
+ ldr r1, [r4, r2]
+ add r0, #0x3a
+ bl FUN_0207916C
+ mov r0, #0x49
+ lsl r0, r0, #0x4
+ add r2, r4, r0
+ lsl r1, r5, #0x2
+ ldr r0, [r2, r1]
+ add r0, r0, #0x1
+ str r0, [r2, r1]
+ ldr r0, _02079548 ; =0x0000069E
+ bl FUN_020054C8
+ mov r0, #0xd3
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ add r1, r6, #0x0
+ bl FUN_020200A0
+ b _02079526
+_0207935E:
+ mov r1, #0x56
+ lsl r1, r1, #0x2
+ ldrh r0, [r4, r1]
+ cmp r0, #0x0
+ bne _0207936A
+_02079368:
+ b _02079526
+_0207936A:
+ sub r0, r0, #0x1
+ lsl r0, r0, #0x1
+ add r0, r4, r0
+ ldr r2, _0207954C ; =0x0000FFFF
+ add r0, #0xd8
+ strh r2, [r0, #0x0]
+ ldrh r0, [r4, r1]
+ sub r0, r0, #0x1
+ strh r0, [r4, r1]
+ mov r0, #0xfa
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ mov r1, #0x1
+ bl FUN_02019620
+ mov r0, #0x56
+ lsl r0, r0, #0x2
+ ldrh r0, [r4, r0]
+ cmp r0, #0x0
+ bne _0207939E
+ mov r0, #0xfa
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_020191D0
+ b _020793BC
+_0207939E:
+ mov r0, #0xc
+ str r0, [sp, #0x0]
+ mov r2, #0x0
+ ldr r0, _02079540 ; =0x000E0F01
+ str r2, [sp, #0x4]
+ str r0, [sp, #0x8]
+ mov r0, #0xfa
+ lsl r0, r0, #0x2
+ add r1, r4, #0x0
+ add r0, r4, r0
+ add r1, #0xd8
+ add r3, r2, #0x0
+ str r2, [sp, #0xc]
+ bl FUN_02078E7C
+_020793BC:
+ ldr r0, _02079550 ; =0x000004C4
+ mov r3, #0x5f
+ add r1, r4, r0
+ lsl r3, r3, #0x2
+ str r1, [sp, #0x0]
+ ldr r1, [r4, r3]
+ add r2, r3, #0x0
+ str r1, [sp, #0x4]
+ sub r2, #0x24
+ sub r0, #0xcc
+ add r1, r4, #0x0
+ sub r3, #0x22
+ ldrh r2, [r4, r2]
+ add r0, r4, r0
+ add r1, #0xd8
+ add r3, r4, r3
+ bl FUN_0207907C
+ mov r1, #0x56
+ lsl r1, r1, #0x2
+ mov r0, #0xd9
+ lsl r0, r0, #0x2
+ ldrh r1, [r4, r1]
+ ldr r2, [r4, #0xc]
+ add r0, r4, r0
+ bl FUN_02079710
+ ldr r0, _02079554 ; =0x000004A4
+ ldr r1, [r4, r0]
+ add r1, r1, #0x1
+ str r1, [r4, r0]
+ ldr r0, _02079558 ; =0x000005DC
+ bl FUN_020054C8
+ mov r0, #0xd3
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ add r1, r6, #0x0
+ bl FUN_020200A0
+ b _02079526
+_0207940E:
+ ldr r0, _0207955C ; =0x000005C4
+ ldr r0, [r4, r0]
+ bl FUN_020143D0
+ mov r0, #0xd3
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ add r1, r6, #0x0
+ bl FUN_020200A0
+ ldr r0, [r4, #0x14]
+ cmp r0, #0x0
+ bne _02079454
+ ldr r0, _02079560 ; =0x000005E2
+ bl FUN_020054C8
+ ldr r0, _02079564 ; =0x000004A8
+ ldr r1, [r4, r0]
+ add r1, r1, #0x1
+ str r1, [r4, r0]
+ mov r1, #0x0
+ mov r0, #0x10
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ mov r0, #0x12
+ str r0, [sp, #0x8]
+ mov r0, #0x2
+ add r2, r1, #0x0
+ add r3, r1, #0x0
+ bl FUN_0200E1D0
+ add sp, #0x10
+ mov r0, #0x3
+ pop {r4-r6, pc}
+_02079454:
+ ldr r0, _02079568 ; =0x0000045C
+ mov r1, #0x5
+ str r1, [r4, r0]
+ b _02079526
+_0207945C:
+ mov r0, #0x46
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ cmp r0, #0x4
+ bne _02079470
+ cmp r1, #0x1
+ bne _02079470
+ add sp, #0x10
+ mov r0, #0x2
+ pop {r4-r6, pc}
+_02079470:
+ mov r0, #0x56
+ lsl r0, r0, #0x2
+ ldrh r2, [r4, r0]
+ ldr r0, [r4, #0xc]
+ cmp r2, r0
+ beq _02079526
+ lsl r0, r2, #0x1
+ add r0, r4, r0
+ add r0, #0xd8
+ strh r1, [r0, #0x0]
+ mov r0, #0xfa
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ mov r1, #0x1
+ bl FUN_02019620
+ mov r0, #0xc
+ str r0, [sp, #0x0]
+ mov r2, #0x0
+ add r1, r4, #0x0
+ ldr r0, _02079540 ; =0x000E0F01
+ str r2, [sp, #0x4]
+ str r0, [sp, #0x8]
+ mov r0, #0xfa
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ add r1, #0xd8
+ add r3, r2, #0x0
+ str r2, [sp, #0xc]
+ bl FUN_02078E7C
+ mov r1, #0x56
+ lsl r1, r1, #0x2
+ ldrh r0, [r4, r1]
+ add r0, r0, #0x1
+ strh r0, [r4, r1]
+ mov r0, #0xd9
+ lsl r0, r0, #0x2
+ ldrh r1, [r4, r1]
+ ldr r2, [r4, #0xc]
+ add r0, r4, r0
+ bl FUN_02079710
+ ldr r0, _02079544 ; =0x000005EB
+ bl FUN_020054C8
+ mov r0, #0xd3
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x1
+ bl FUN_020200A0
+ mov r0, #0xd3
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x1
+ bl FUN_02020398
+ mov r3, #0x8
+ ldr r0, _0207956C ; =0x04000050
+ mov r1, #0x0
+ mov r2, #0x7
+ str r3, [sp, #0x0]
+ blx FUN_020C74DC
+ mov r0, #0xd3
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x3c
+ bl FUN_02020130
+ mov r0, #0x1
+ str r0, [r4, #0x34]
+ ldr r0, _02079550 ; =0x000004C4
+ mov r3, #0x5f
+ add r1, r4, r0
+ lsl r3, r3, #0x2
+ str r1, [sp, #0x0]
+ ldr r1, [r4, r3]
+ add r2, r3, #0x0
+ str r1, [sp, #0x4]
+ sub r2, #0x24
+ sub r0, #0xcc
+ add r1, r4, #0x0
+ sub r3, #0x22
+ ldrh r2, [r4, r2]
+ add r0, r4, r0
+ add r1, #0xd8
+ add r3, r4, r3
+ bl FUN_0207907C
+_02079526:
+ mov r0, #0x2
+ add sp, #0x10
+ pop {r4-r6, pc}
+ .balign 4
+_0207952C: .word 0x00002FFD
+_02079530: .word 0x00001FFE
+_02079534: .word 0x0000E002
+_02079538: .word 0x0000D002
+_0207953C: .word 0x0000D001
+_02079540: .word 0x000E0F01
+_02079544: .word 0x000005EB
+_02079548: .word 0x0000069E
+_0207954C: .word 0x0000FFFF
+_02079550: .word 0x000004C4
+_02079554: .word 0x000004A4
+_02079558: .word 0x000005DC
+_0207955C: .word 0x000005C4
+_02079560: .word 0x000005E2
+_02079564: .word 0x000004A8
+_02079568: .word 0x0000045C
+_0207956C: .word 0x04000050
+
+ thumb_func_start FUN_02079570
+FUN_02079570: ; 0x02079570
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ mov r4, #0x0
+ mov r6, #0x3
+_02079578:
+ add r0, r1, #0x1
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_02078BD0
+ add r1, r0, #0x0
+ lsl r0, r1, #0x1
+ ldrh r0, [r5, r0]
+ cmp r0, #0x1
+ beq _02079578
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02079590
+FUN_02079590: ; 0x02079590
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r4, r0, #0x0
+ add r0, r1, #0x0
+ str r2, [sp, #0x0]
+ cmp r3, #0x0
+ bne _020795A4
+ add sp, #0x8
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_020795A4:
+ sub r1, r3, #0x1
+ lsl r1, r1, #0x1
+ str r1, [sp, #0x4]
+ ldrh r3, [r2, r1]
+ cmp r4, r0
+ bge _020795F2
+ mov r1, #0x6
+ ldr r2, _020795F8 ; =0x020FA40E
+ mul r1, r4
+ add r5, r2, r1
+ mov r7, #0x0
+_020795BA:
+ add r2, r7, #0x0
+ add r6, r5, #0x0
+_020795BE:
+ ldrh r1, [r6, #0x0]
+ cmp r3, r1
+ bne _020795E2
+ cmp r3, #0x1
+ beq _020795E2
+ mov r0, #0x6
+ ldr r1, _020795F8 ; =0x020FA40E
+ mul r0, r4
+ add r0, r1, r0
+ add r1, r2, #0x0
+ bl FUN_02079570
+ ldr r2, [sp, #0x0]
+ ldr r1, [sp, #0x4]
+ add sp, #0x8
+ strh r0, [r2, r1]
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_020795E2:
+ add r2, r2, #0x1
+ add r6, r6, #0x2
+ cmp r2, #0x3
+ blt _020795BE
+ add r4, r4, #0x1
+ add r5, r5, #0x6
+ cmp r4, r0
+ blt _020795BA
+_020795F2:
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+_020795F8: .word 0x020FA40E
+
+ thumb_func_start FUN_020795FC
+FUN_020795FC: ; 0x020795FC
+ push {r3-r7, lr}
+ add r4, r0, #0x0
+ add r0, r1, #0x0
+ ldr r1, [sp, #0x1c]
+ mov lr, r2
+ mov r12, r3
+ cmp r1, #0x0
+ beq _02079618
+ sub r1, r1, #0x1
+ ldr r6, [sp, #0x18]
+ lsl r7, r1, #0x1
+ ldrh r5, [r6, r7]
+ cmp r5, #0x1
+ bne _0207961C
+_02079618:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0207961C:
+ add r2, r4, #0x0
+ cmp r4, r0
+ bge _0207964E
+ mov r1, #0x6
+ ldr r3, _020796F4 ; =0x020FA40E
+ mul r1, r4
+ add r3, r3, r1
+_0207962A:
+ ldrh r1, [r3, #0x0]
+ cmp r5, r1
+ bne _02079646
+ add r3, r2, #0x0
+ mov r0, #0x6
+ mul r3, r0
+ mov r0, lr
+ ldr r2, _020796F4 ; =0x020FA40E
+ lsl r1, r0, #0x1
+ add r0, r2, r3
+ ldrh r0, [r1, r0]
+ strh r0, [r6, r7]
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02079646:
+ add r2, r2, #0x1
+ add r3, r3, #0x6
+ cmp r2, r0
+ blt _0207962A
+_0207964E:
+ cmp r4, r0
+ bge _0207967E
+ mov r2, lr
+ ldr r1, _020796F4 ; =0x020FA40E
+ lsl r2, r2, #0x1
+ add r1, r1, r2
+ mov r2, #0x6
+ mul r2, r4
+ add r2, r1, r2
+_02079660:
+ ldrh r1, [r2, #0x0]
+ cmp r5, r1
+ bne _02079676
+ mov r0, #0x6
+ add r1, r4, #0x0
+ mul r1, r0
+ ldr r0, _020796F4 ; =0x020FA40E
+ ldrh r0, [r0, r1]
+ strh r0, [r6, r7]
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02079676:
+ add r4, r4, #0x1
+ add r2, r2, #0x6
+ cmp r4, r0
+ blt _02079660
+_0207967E:
+ ldr r1, _020796F8 ; =0x0000D001
+ mov r0, r12
+ cmp r0, r1
+ beq _02079698
+ add r1, r1, #0x1
+ mov r0, r12
+ cmp r0, r1
+ beq _020796B8
+ ldr r1, _020796FC ; =0x0000E006
+ mov r0, r12
+ cmp r0, r1
+ beq _020796D8
+ b _020796F0
+_02079698:
+ ldr r1, _02079700 ; =0x020FA1A4
+ mov r2, #0x0
+_0207969C:
+ ldrh r0, [r1, #0x0]
+ cmp r5, r0
+ bne _020796AE
+ ldr r0, _02079704 ; =0x020FA1A6
+ lsl r1, r2, #0x2
+ ldrh r0, [r0, r1]
+ strh r0, [r6, r7]
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_020796AE:
+ add r2, r2, #0x1
+ add r1, r1, #0x4
+ cmp r2, #0xc
+ blo _0207969C
+ b _020796F0
+_020796B8:
+ ldr r1, _02079708 ; =0x020FA17C
+ mov r2, #0x0
+_020796BC:
+ ldrh r0, [r1, #0x0]
+ cmp r5, r0
+ bne _020796CE
+ ldr r0, _0207970C ; =0x020FA17E
+ lsl r1, r2, #0x2
+ ldrh r0, [r0, r1]
+ strh r0, [r6, r7]
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_020796CE:
+ add r2, r2, #0x1
+ add r1, r1, #0x4
+ cmp r2, #0xa
+ blo _020796BC
+ b _020796F0
+_020796D8:
+ cmp r5, #0x26
+ bne _020796E4
+ mov r0, #0x24
+ strh r0, [r6, r7]
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_020796E4:
+ cmp r5, #0x76
+ bne _020796F0
+ mov r0, #0x74
+ strh r0, [r6, r7]
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_020796F0:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+_020796F4: .word 0x020FA40E
+_020796F8: .word 0x0000D001
+_020796FC: .word 0x0000E006
+_02079700: .word 0x020FA1A4
+_02079704: .word 0x020FA1A6
+_02079708: .word 0x020FA17C
+_0207970C: .word 0x020FA17E
+
+ thumb_func_start FUN_02079710
+FUN_02079710: ; 0x02079710
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r6, r2, #0x0
+ mov r4, #0x0
+ str r0, [sp, #0x0]
+ str r1, [sp, #0x4]
+ cmp r6, #0x0
+ ble _02079734
+ add r5, r0, #0x0
+ mov r7, #0x2b
+_02079724:
+ ldr r0, [r5, #0x0]
+ add r1, r7, #0x0
+ bl FUN_02020130
+ add r4, r4, #0x1
+ add r5, r5, #0x4
+ cmp r4, r6
+ blt _02079724
+_02079734:
+ ldr r0, [sp, #0x4]
+ cmp r0, r6
+ beq _02079746
+ lsl r1, r0, #0x2
+ ldr r0, [sp, #0x0]
+ ldr r0, [r0, r1]
+ mov r1, #0x2c
+ bl FUN_02020130
+_02079746:
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0207974C
+FUN_0207974C: ; 0x0207974C
+ push {r3-r7, lr}
+ sub sp, #0x18
+ str r2, [sp, #0x10]
+ ldr r2, [sp, #0x30]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ add r5, r0, #0x0
+ str r3, [sp, #0x14]
+ str r2, [sp, #0x30]
+ bl FUN_02019620
+ ldr r1, _0207982C ; =0x020F9D30
+ ldr r0, [sp, #0x10]
+ mov r7, #0x0
+ ldrb r4, [r1, r0]
+ mov r6, #0x10
+_0207976C:
+ mov r0, #0x10
+ str r0, [sp, #0x0]
+ mov r0, #0x13
+ lsl r2, r6, #0x10
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ lsr r2, r2, #0x10
+ mov r3, #0x0
+ bl FUN_020196F4
+ mov r0, #0x10
+ str r0, [sp, #0x0]
+ mov r0, #0x13
+ lsl r2, r6, #0x10
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ lsr r2, r2, #0x10
+ mov r3, #0x26
+ bl FUN_020196F4
+ mov r0, #0x10
+ str r0, [sp, #0x0]
+ mov r0, #0x13
+ lsl r2, r6, #0x10
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ lsr r2, r2, #0x10
+ mov r3, #0x4c
+ bl FUN_020196F4
+ add r7, r7, #0x1
+ add r6, #0x20
+ cmp r7, #0x6
+ blt _0207976C
+ mov r7, #0x0
+ add r6, r7, #0x0
+_020797BA:
+ mov r0, #0x10
+ str r0, [sp, #0x0]
+ mov r0, #0x13
+ lsl r2, r6, #0x10
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ lsr r2, r2, #0x10
+ mov r3, #0x13
+ bl FUN_020196F4
+ mov r0, #0x10
+ str r0, [sp, #0x0]
+ mov r0, #0x13
+ lsl r2, r6, #0x10
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ lsr r2, r2, #0x10
+ mov r3, #0x39
+ bl FUN_020196F4
+ add r7, r7, #0x1
+ add r6, #0x20
+ cmp r7, #0x7
+ blt _020797BA
+ ldr r0, [sp, #0x10]
+ mov r1, #0x14
+ ldr r2, _02079830 ; =0x0210606C
+ mul r1, r0
+ mov r7, #0x0
+ mov r6, #0x4
+ add r4, r2, r1
+_020797FC:
+ mov r0, #0x10
+ str r0, [sp, #0x0]
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x14]
+ mov r2, #0x0
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x30]
+ add r3, r6, #0x0
+ str r0, [sp, #0xc]
+ ldr r1, [r4, #0x0]
+ add r0, r5, #0x0
+ bl FUN_02078E7C
+ add r7, r7, #0x1
+ add r6, #0x13
+ add r4, r4, #0x4
+ cmp r7, #0x5
+ blt _020797FC
+ add r0, r5, #0x0
+ bl FUN_020191D0
+ add sp, #0x18
+ pop {r3-r7, pc}
+ .balign 4
+_0207982C: .word 0x020F9D30
+_02079830: .word 0x0210606C
+
+ thumb_func_start FUN_02079834
+FUN_02079834: ; 0x02079834
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r6, r1, #0x0
+ str r0, [sp, #0x0]
+ mov r7, #0x0
+ add r1, r0, #0x0
+_02079840:
+ ldr r0, [r1, #0x0]
+ cmp r0, #0x0
+ beq _02079876
+ mov r0, #0x0
+ ldr r4, _020798B8 ; =0x020FA1D4
+ str r0, [sp, #0x4]
+ add r5, r6, #0x0
+_0207984E:
+ ldr r0, [r5, #0x0]
+ ldr r1, [r4, #0x8]
+ bl FUN_02020130
+ ldr r0, [sp, #0x4]
+ add r4, #0x10
+ add r0, r0, #0x1
+ add r5, r5, #0x4
+ str r0, [sp, #0x4]
+ cmp r0, #0x3
+ blt _0207984E
+ ldr r1, _020798BC ; =0x020FA1DC
+ lsl r2, r7, #0x4
+ lsl r0, r7, #0x2
+ ldr r1, [r1, r2]
+ ldr r0, [r6, r0]
+ sub r1, r1, #0x3
+ bl FUN_02020130
+ b _0207987E
+_02079876:
+ add r7, r7, #0x1
+ add r1, r1, #0x4
+ cmp r7, #0x3
+ blt _02079840
+_0207987E:
+ ldr r4, [sp, #0x0]
+ ldr r5, _020798C0 ; =0x020FA224
+ mov r7, #0x5
+ add r4, #0x14
+ add r6, #0x14
+_02079888:
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ beq _02079898
+ ldr r1, [r5, #0x8]
+ ldr r0, [r6, #0x0]
+ add r1, r1, #0x1
+ bl FUN_02020130
+_02079898:
+ add r7, r7, #0x1
+ add r4, r4, #0x4
+ add r5, #0x10
+ add r6, r6, #0x4
+ cmp r7, #0x7
+ blt _02079888
+ mov r2, #0x0
+ add r1, r2, #0x0
+_020798A8:
+ ldr r0, [sp, #0x0]
+ add r2, r2, #0x1
+ stmia r0!, {r1}
+ str r0, [sp, #0x0]
+ cmp r2, #0x7
+ blt _020798A8
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+_020798B8: .word 0x020FA1D4
+_020798BC: .word 0x020FA1DC
+_020798C0: .word 0x020FA224
+
+ thumb_func_start FUN_020798C4
+FUN_020798C4: ; 0x020798C4
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0xd3
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_02020388
+ cmp r0, #0x0
+ bne _0207992E
+ mov r0, #0x56
+ lsl r0, r0, #0x2
+ ldrh r1, [r4, r0]
+ ldr r0, [r4, #0xc]
+ cmp r1, r0
+ bne _020798F8
+ mov r0, #0xc
+ str r0, [r4, #0x1c]
+ mov r0, #0x0
+ str r0, [r4, #0x20]
+ mov r0, #0xd3
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x27
+ bl FUN_02020130
+ b _02079904
+_020798F8:
+ mov r0, #0xd3
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x27
+ bl FUN_02020130
+_02079904:
+ ldr r0, [r4, #0x30]
+ cmp r0, #0x0
+ bne _02079918
+ mov r0, #0xd3
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ bl FUN_020200A0
+ b _02079920
+_02079918:
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_02078D7C
+_02079920:
+ mov r1, #0x0
+ mov r0, #0xd3
+ str r1, [r4, #0x34]
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_02020398
+_0207992E:
+ pop {r4, pc}
+
+ thumb_func_start FUN_02079930
+FUN_02079930: ; 0x02079930
+ push {r3-r7, lr}
+ str r0, [sp, #0x0]
+ mov r0, #0x0
+ mov r12, r0
+ ldr r0, [sp, #0x0]
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x4
+ bne _02079944
+ mov r0, #0x4
+ mov r12, r0
+_02079944:
+ ldr r2, _020799E0 ; =0x021C48F8
+ ldrh r0, [r2, #0x20]
+ cmp r0, #0x0
+ beq _020799DA
+ ldrh r0, [r2, #0x1c]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov lr, r0
+ ldrh r0, [r2, #0x1e]
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+ mov r0, r12
+ cmp r0, #0x47
+ bhs _020799DA
+ mov r0, #0x6
+ mov r2, r12
+ mul r0, r2
+ ldr r2, _020799E4 ; =0x020FA264
+ add r2, r2, r0
+ add r3, r2, #0x0
+_0207996C:
+ ldrh r4, [r3, #0x2]
+ ldrb r0, [r2, #0x0]
+ ldrb r6, [r2, #0x1]
+ lsl r4, r4, #0x1e
+ lsr r4, r4, #0x1e
+ beq _02079982
+ cmp r4, #0x1
+ beq _02079988
+ cmp r4, #0x2
+ beq _0207998E
+ b _02079992
+_02079982:
+ mov r5, #0x1f
+ mov r1, #0x16
+ b _02079992
+_02079988:
+ mov r5, #0x20
+ mov r1, #0x16
+ b _02079992
+_0207998E:
+ mov r5, #0x10
+ mov r1, #0x13
+_02079992:
+ mov r4, lr
+ cmp r4, r0
+ blo _020799CC
+ cmp r7, r6
+ blo _020799CC
+ add r4, r0, r5
+ mov r0, lr
+ cmp r0, r4
+ bgt _020799CC
+ add r0, r6, r1
+ cmp r7, r0
+ bgt _020799CC
+ ldr r2, _020799E4 ; =0x020FA264
+ mov r1, #0x6
+ mov r0, r12
+ mul r1, r0
+ add r2, r2, r1
+ ldrb r0, [r2, #0x4]
+ lsl r0, r0, #0x1b
+ lsr r1, r0, #0x1b
+ ldr r0, [sp, #0x0]
+ str r1, [r0, #0x1c]
+ ldrb r0, [r2, #0x5]
+ lsl r0, r0, #0x1b
+ lsr r1, r0, #0x1b
+ ldr r0, [sp, #0x0]
+ str r1, [r0, #0x20]
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_020799CC:
+ mov r0, r12
+ add r0, r0, #0x1
+ add r2, r2, #0x6
+ add r3, r3, #0x6
+ mov r12, r0
+ cmp r0, #0x47
+ blo _0207996C
+_020799DA:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ nop
+_020799E0: .word 0x021C48F8
+_020799E4: .word 0x020FA264
+
+ thumb_func_start FUN_020799E8
+FUN_020799E8: ; 0x020799E8
+ lsl r1, r0, #0x1
+ ldr r0, _020799F0 ; =0x020FA60C
+ ldrh r0, [r0, r1]
+ bx lr
+ .balign 4
+_020799F0: .word 0x020FA60C
+
+ thumb_func_start FUN_020799F4
+FUN_020799F4: ; 0x020799F4
+ push {r3, lr}
+ add r2, r0, #0x0
+ mul r2, r0
+ add r0, r1, #0x0
+ mul r0, r1
+ add r0, r2, r0
+ lsl r0, r0, #0x4
+ bl FUN_0200019E
+ lsr r0, r0, #0x2
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02079A0C
+FUN_02079A0C: ; 0x02079A0C
+ push {r4, lr}
+ add r4, r0, #0x0
+ mul r0, r2
+ blx _u32_div_f
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bne _02079A22
+ cmp r4, #0x0
+ beq _02079A22
+ mov r0, #0x1
+_02079A22:
+ pop {r4, pc}
+
+ thumb_func_start FUN_02079A24
+FUN_02079A24: ; 0x02079A24
+ push {r4, lr}
+ add r4, r0, #0x0
+ lsl r0, r1, #0x8
+ lsl r4, r4, #0x8
+ lsr r1, r0, #0x1
+ cmp r4, r1
+ bls _02079A36
+ mov r0, #0x3
+ pop {r4, pc}
+_02079A36:
+ mov r1, #0x5
+ blx _u32_div_f
+ cmp r4, r0
+ bls _02079A44
+ mov r0, #0x2
+ pop {r4, pc}
+_02079A44:
+ cmp r4, #0x0
+ beq _02079A4C
+ mov r0, #0x1
+ b _02079A4E
+_02079A4C:
+ mov r0, #0x0
+_02079A4E:
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ pop {r4, pc}
+
+ thumb_func_start FUN_02079A54
+FUN_02079A54: ; 0x02079A54
+ push {r4, lr}
+ add r4, r2, #0x0
+ cmp r0, r1
+ bne _02079A60
+ mov r0, #0x4
+ pop {r4, pc}
+_02079A60:
+ lsl r2, r4, #0x18
+ lsr r2, r2, #0x18
+ bl FUN_02079A0C
+ add r1, r4, #0x0
+ bl FUN_02079A24
+ pop {r4, pc}
+
+ thumb_func_start FUN_02079A70
+FUN_02079A70: ; 0x02079A70
+ push {lr}
+ sub sp, #0xc
+ cmp r0, #0x0
+ bne _02079A90
+ mov r0, #0x6
+ str r0, [sp, #0x0]
+ mov r2, #0x1
+ str r2, [sp, #0x4]
+ mov r0, #0x0
+ str r1, [sp, #0x8]
+ add r1, r2, #0x0
+ add r3, r0, #0x0
+ bl FUN_0200E1D0
+ add sp, #0xc
+ pop {pc}
+_02079A90:
+ mov r0, #0x6
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ str r1, [sp, #0x8]
+ add r1, r0, #0x0
+ add r2, r0, #0x0
+ add r3, r0, #0x0
+ bl FUN_0200E1D0
+ add sp, #0xc
+ pop {pc}
+ .balign 4
+
+ thumb_func_start FUN_02079AAC
+FUN_02079AAC: ; 0x02079AAC
+ push {r4-r5}
+ ldr r3, _02079B5C ; =0x021C48B8
+ mov r2, #0x0
+ ldr r3, [r3, #0x4c]
+ mov r5, #0x40
+ ldrsh r4, [r0, r2]
+ tst r5, r3
+ beq _02079ADE
+ add r3, r4, #0x1
+ strh r3, [r0, #0x0]
+ ldrsh r2, [r0, r2]
+ cmp r2, r1
+ ble _02079ACA
+ mov r1, #0x1
+ strh r1, [r0, #0x0]
+_02079ACA:
+ mov r1, #0x0
+ ldrsh r0, [r0, r1]
+ cmp r0, r4
+ bne _02079AD8
+ add r0, r1, #0x0
+ pop {r4-r5}
+ bx lr
+_02079AD8:
+ mov r0, #0x1
+ pop {r4-r5}
+ bx lr
+_02079ADE:
+ mov r5, #0x80
+ tst r5, r3
+ beq _02079B04
+ sub r3, r4, #0x1
+ strh r3, [r0, #0x0]
+ ldrsh r2, [r0, r2]
+ cmp r2, #0x0
+ bgt _02079AF0
+ strh r1, [r0, #0x0]
+_02079AF0:
+ mov r1, #0x0
+ ldrsh r0, [r0, r1]
+ cmp r0, r4
+ bne _02079AFE
+ add r0, r1, #0x0
+ pop {r4-r5}
+ bx lr
+_02079AFE:
+ mov r0, #0x2
+ pop {r4-r5}
+ bx lr
+_02079B04:
+ mov r5, #0x20
+ tst r5, r3
+ beq _02079B2E
+ add r1, r4, #0x0
+ sub r1, #0xa
+ strh r1, [r0, #0x0]
+ ldrsh r1, [r0, r2]
+ cmp r1, #0x0
+ bgt _02079B1A
+ mov r1, #0x1
+ strh r1, [r0, #0x0]
+_02079B1A:
+ mov r1, #0x0
+ ldrsh r0, [r0, r1]
+ cmp r0, r4
+ bne _02079B28
+ add r0, r1, #0x0
+ pop {r4-r5}
+ bx lr
+_02079B28:
+ mov r0, #0x2
+ pop {r4-r5}
+ bx lr
+_02079B2E:
+ mov r5, #0x10
+ tst r3, r5
+ beq _02079B56
+ add r3, r4, #0x0
+ add r3, #0xa
+ strh r3, [r0, #0x0]
+ ldrsh r2, [r0, r2]
+ cmp r2, r1
+ ble _02079B42
+ strh r1, [r0, #0x0]
+_02079B42:
+ mov r1, #0x0
+ ldrsh r0, [r0, r1]
+ cmp r0, r4
+ bne _02079B50
+ add r0, r1, #0x0
+ pop {r4-r5}
+ bx lr
+_02079B50:
+ mov r0, #0x1
+ pop {r4-r5}
+ bx lr
+_02079B56:
+ add r0, r2, #0x0
+ pop {r4-r5}
+ bx lr
+ .balign 4
+_02079B5C: .word 0x021C48B8
+
+ thumb_func_start FUN_02079B60
+FUN_02079B60: ; 0x02079B60
+ push {r4-r7, lr}
+ sub sp, #0x14
+ add r7, r1, #0x0
+ add r6, r0, #0x0
+ ldr r1, [sp, #0x28]
+ add r0, r3, #0x0
+ str r2, [sp, #0x4]
+ ldr r5, [sp, #0x2c]
+ ldr r4, [sp, #0x34]
+ bl LoadFromNARC_7
+ add r1, r0, #0x0
+ add r0, r7, #0x0
+ bl FUN_020169D8
+ add r7, r0, #0x0
+ ldr r0, [sp, #0x4]
+ ldr r1, [sp, #0x28]
+ add r2, r7, #0x0
+ bl FUN_02006774
+ ldr r0, [sp, #0x30]
+ cmp r0, #0x0
+ beq _02079B9A
+ cmp r0, #0x1
+ beq _02079BC6
+ cmp r0, #0x2
+ beq _02079C10
+ b _02079C36
+_02079B9A:
+ add r0, r7, #0x0
+ add r1, sp, #0x10
+ blx FUN_020B0088
+ cmp r4, #0x0
+ bne _02079BAE
+ ldr r0, [sp, #0x10]
+ ldr r0, [r0, #0x10]
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+_02079BAE:
+ add r0, sp, #0x18
+ ldrh r0, [r0, #0x20]
+ lsl r1, r5, #0x18
+ lsr r1, r1, #0x18
+ str r0, [sp, #0x0]
+ ldr r2, [sp, #0x10]
+ add r0, r6, #0x0
+ ldr r2, [r2, #0x14]
+ add r3, r4, #0x0
+ bl FUN_02017E14
+ b _02079C36
+_02079BC6:
+ add r0, r7, #0x0
+ add r1, sp, #0xc
+ blx FUN_020B0180
+ cmp r4, #0x0
+ bne _02079BDA
+ ldr r0, [sp, #0xc]
+ ldr r0, [r0, #0x8]
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+_02079BDA:
+ lsl r1, r5, #0x18
+ add r0, r6, #0x0
+ lsr r1, r1, #0x18
+ bl FUN_0201886C
+ cmp r0, #0x0
+ beq _02079BF8
+ ldr r2, [sp, #0xc]
+ lsl r1, r5, #0x18
+ add r0, r6, #0x0
+ lsr r1, r1, #0x18
+ add r2, #0xc
+ add r3, r4, #0x0
+ bl FUN_02017DFC
+_02079BF8:
+ add r0, sp, #0x18
+ ldrh r0, [r0, #0x20]
+ lsl r1, r5, #0x18
+ lsr r1, r1, #0x18
+ str r0, [sp, #0x0]
+ ldr r2, [sp, #0xc]
+ add r0, r6, #0x0
+ add r2, #0xc
+ add r3, r4, #0x0
+ bl FUN_02017CE8
+ b _02079C36
+_02079C10:
+ add r0, r7, #0x0
+ add r1, sp, #0x8
+ blx FUN_020B0138
+ cmp r4, #0x0
+ bne _02079C24
+ ldr r0, [sp, #0x8]
+ ldr r0, [r0, #0x8]
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+_02079C24:
+ ldr r1, [sp, #0x8]
+ add r3, sp, #0x18
+ lsl r0, r5, #0x18
+ ldrh r3, [r3, #0x20]
+ ldr r1, [r1, #0xc]
+ lsr r0, r0, #0x18
+ add r2, r4, #0x0
+ bl FUN_02017FB4
+_02079C36:
+ add r0, r7, #0x0
+ bl FUN_02016A18
+ add sp, #0x14
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_02079C40
+FUN_02079C40: ; 0x02079C40
+ push {r3-r7, lr}
+ add r5, r2, #0x0
+ add r6, r0, #0x0
+ add r0, r1, #0x0
+ add r1, r5, #0x0
+ add r7, r3, #0x0
+ bl LoadFromNARC_7
+ add r1, r0, #0x0
+ ldr r0, [sp, #0x18]
+ bl FUN_02016998
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_02006774
+ add r0, r4, #0x0
+ add r1, r7, #0x0
+ blx FUN_020B0180
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02079C70
+FUN_02079C70: ; 0x02079C70
+ push {r3, lr}
+ bl FUN_020462AC
+ bl FUN_0205F184
+ pop {r3, pc}
+
+ thumb_func_start FUN_02079C7C
+FUN_02079C7C: ; 0x02079C7C
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ mov r0, #0x0
+ add r1, r0, #0x0
+ bl FUN_02015F10
+ bl FUN_02015F1C
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ mov r1, #0x1
+ lsl r1, r1, #0x1a
+ ldr r0, [r1, #0x0]
+ ldr r2, _02079DA0 ; =0xFFFFE0FF
+ and r0, r2
+ str r0, [r1, #0x0]
+ ldr r0, _02079DA4 ; =0x04001000
+ ldr r3, [r0, #0x0]
+ and r2, r3
+ str r2, [r0, #0x0]
+ ldr r3, [r1, #0x0]
+ ldr r2, _02079DA8 ; =0xFFFF1FFF
+ and r3, r2
+ str r3, [r1, #0x0]
+ ldr r3, [r0, #0x0]
+ add r1, #0x50
+ and r2, r3
+ str r2, [r0, #0x0]
+ mov r2, #0x0
+ strh r2, [r1, #0x0]
+ add r0, #0x50
+ strh r2, [r0, #0x0]
+ mov r0, #0x4
+ mov r1, #0x8
+ bl FUN_0201669C
+ mov r2, #0x1
+ mov r0, #0x3
+ mov r1, #0x13
+ lsl r2, r2, #0x12
+ bl FUN_0201681C
+ ldr r1, _02079DAC ; =0x0000069C
+ add r0, r4, #0x0
+ mov r2, #0x13
+ bl FUN_02006268
+ ldr r2, _02079DAC ; =0x0000069C
+ mov r1, #0x0
+ add r5, r0, #0x0
+ blx FUN_020DF4A4
+ add r0, r4, #0x0
+ bl FUN_0200628C
+ mov r1, #0x93
+ lsl r1, r1, #0x2
+ str r0, [r5, r1]
+ mov r0, #0x13
+ bl FUN_02016B94
+ mov r1, #0x1
+ str r0, [r5, #0x0]
+ mov r0, #0x13
+ add r2, r1, #0x0
+ bl FUN_02014BF4
+ mov r1, #0x2d
+ lsl r1, r1, #0x4
+ str r0, [r5, r1]
+ mov r0, #0x0
+ mov r1, #0x13
+ bl FUN_02002C84
+ bl FUN_0201CC08
+ mov r0, #0x4
+ bl FUN_0201CC24
+ add r0, r5, #0x0
+ bl FUN_0207B028
+ bl FUN_02079F58
+ ldr r0, [r5, #0x0]
+ bl FUN_02079F78
+ add r0, r5, #0x0
+ bl FUN_0207A0CC
+ bl FUN_0207A188
+ add r0, r5, #0x0
+ bl FUN_0207EF6C
+ add r0, r5, #0x0
+ bl FUN_0207A1A0
+ add r0, r5, #0x0
+ bl FUN_0207AAB0
+ add r0, r5, #0x0
+ bl FUN_0207C328
+ add r0, r5, #0x0
+ bl FUN_0207C448
+ add r0, r5, #0x0
+ bl FUN_0207F840
+ add r0, r5, #0x0
+ bl FUN_0207C71C
+ add r0, r5, #0x0
+ bl FUN_0207C77C
+ add r0, r5, #0x0
+ bl FUN_0207D5BC
+ add r0, r5, #0x0
+ bl FUN_0207AF58
+ add r0, r5, #0x0
+ bl FUN_0207F95C
+ add r0, r5, #0x0
+ bl FUN_0207F098
+ ldr r0, _02079DB0 ; =FUN_02079F24
+ add r1, r5, #0x0
+ bl FUN_02015F10
+ bl FUN_0201E788
+ mov r1, #0x0
+ mov r0, #0x3d
+ add r2, r1, #0x0
+ bl FUN_0200433C
+ bl FUN_02033F20
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ nop
+_02079DA0: .word 0xFFFFE0FF
+_02079DA4: .word 0x04001000
+_02079DA8: .word 0xFFFF1FFF
+_02079DAC: .word 0x0000069C
+_02079DB0: .word FUN_02079F24
+
+ thumb_func_start FUN_02079DB4
+FUN_02079DB4: ; 0x02079DB4
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ bl FUN_02006278
+ ldr r1, [r4, #0x0]
+ add r5, r0, #0x0
+ cmp r1, #0x13
+ bhi _02079EA2
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02079DD0: ; jump table (using 16-bit offset)
+ .short _02079DF8 - _02079DD0 - 2; case 0
+ .short _02079E06 - _02079DD0 - 2; case 1
+ .short _02079E0E - _02079DD0 - 2; case 2
+ .short _02079E16 - _02079DD0 - 2; case 3
+ .short _02079E1E - _02079DD0 - 2; case 4
+ .short _02079E26 - _02079DD0 - 2; case 5
+ .short _02079E2E - _02079DD0 - 2; case 6
+ .short _02079E36 - _02079DD0 - 2; case 7
+ .short _02079E3E - _02079DD0 - 2; case 8
+ .short _02079E46 - _02079DD0 - 2; case 9
+ .short _02079E4E - _02079DD0 - 2; case 10
+ .short _02079E56 - _02079DD0 - 2; case 11
+ .short _02079E5E - _02079DD0 - 2; case 12
+ .short _02079E66 - _02079DD0 - 2; case 13
+ .short _02079E6E - _02079DD0 - 2; case 14
+ .short _02079E76 - _02079DD0 - 2; case 15
+ .short _02079E7E - _02079DD0 - 2; case 16
+ .short _02079E86 - _02079DD0 - 2; case 17
+ .short _02079E8E - _02079DD0 - 2; case 18
+ .short _02079E96 - _02079DD0 - 2; case 19
+_02079DF8:
+ mov r0, #0x0
+ mov r1, #0x13
+ bl FUN_02079A70
+ mov r0, #0x1
+ str r0, [r4, #0x0]
+ b _02079EA2
+_02079E06:
+ bl FUN_0207A2D8
+ str r0, [r4, #0x0]
+ b _02079EA2
+_02079E0E:
+ bl FUN_0207A310
+ str r0, [r4, #0x0]
+ b _02079EA2
+_02079E16:
+ bl FUN_0207A448
+ str r0, [r4, #0x0]
+ b _02079EA2
+_02079E1E:
+ bl FUN_0207A45C
+ str r0, [r4, #0x0]
+ b _02079EA2
+_02079E26:
+ bl FUN_0207A470
+ str r0, [r4, #0x0]
+ b _02079EA2
+_02079E2E:
+ bl FUN_0207A484
+ str r0, [r4, #0x0]
+ b _02079EA2
+_02079E36:
+ bl FUN_0207A498
+ str r0, [r4, #0x0]
+ b _02079EA2
+_02079E3E:
+ bl FUN_0207A57C
+ str r0, [r4, #0x0]
+ b _02079EA2
+_02079E46:
+ bl FUN_0207A654
+ str r0, [r4, #0x0]
+ b _02079EA2
+_02079E4E:
+ bl FUN_0207A760
+ str r0, [r4, #0x0]
+ b _02079EA2
+_02079E56:
+ bl FUN_0207A77C
+ str r0, [r4, #0x0]
+ b _02079EA2
+_02079E5E:
+ bl FUN_0207A790
+ str r0, [r4, #0x0]
+ b _02079EA2
+_02079E66:
+ bl FUN_0207A7A4
+ str r0, [r4, #0x0]
+ b _02079EA2
+_02079E6E:
+ bl FUN_0207A818
+ str r0, [r4, #0x0]
+ b _02079EA2
+_02079E76:
+ bl FUN_0207A884
+ str r0, [r4, #0x0]
+ b _02079EA2
+_02079E7E:
+ bl FUN_0207AA20
+ str r0, [r4, #0x0]
+ b _02079EA2
+_02079E86:
+ bl FUN_0207AA70
+ str r0, [r4, #0x0]
+ b _02079EA2
+_02079E8E:
+ bl FUN_0207AA88
+ str r0, [r4, #0x0]
+ b _02079EA2
+_02079E96:
+ bl FUN_0207AA98
+ cmp r0, #0x1
+ bne _02079EA2
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_02079EA2:
+ add r0, r5, #0x0
+ bl FUN_0207C3F4
+ add r0, r5, #0x0
+ bl FUN_0207CC88
+ add r0, r5, #0x0
+ bl FUN_0207D3F4
+ ldr r0, _02079EC8 ; =0x00000404
+ ldr r0, [r5, r0]
+ bl FUN_0200BC1C
+ add r0, r5, #0x0
+ bl FUN_0207F008
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ nop
+_02079EC8: .word 0x00000404
+
+ thumb_func_start FUN_02079ECC
+FUN_02079ECC: ; 0x02079ECC
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl FUN_02006278
+ add r5, r0, #0x0
+ mov r0, #0x0
+ add r1, r0, #0x0
+ bl FUN_02015F10
+ add r0, r5, #0x0
+ bl FUN_0207F068
+ add r0, r5, #0x0
+ bl FUN_0207C3D4
+ add r0, r5, #0x0
+ bl FUN_0207D74C
+ ldr r0, [r5, #0x0]
+ bl FUN_0207A08C
+ bl FUN_0201CD04
+ bl FUN_0201C29C
+ add r0, r5, #0x0
+ bl FUN_0207A264
+ mov r0, #0x0
+ bl FUN_02002CC0
+ ldr r0, _02079F20 ; =0x04000050
+ mov r1, #0x0
+ strh r1, [r0, #0x0]
+ add r0, r4, #0x0
+ bl FUN_0200627C
+ mov r0, #0x13
+ bl FUN_020168D0
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ .balign 4
+_02079F20: .word 0x04000050
+
+ thumb_func_start FUN_02079F24
+FUN_02079F24: ; 0x02079F24
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_0201AB60
+ mov r0, #0xae
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_020081C4
+ bl FUN_0201C30C
+ bl FUN_0200BC30
+ ldr r3, _02079F50 ; =0x027E0000
+ ldr r1, _02079F54 ; =0x00003FF8
+ mov r0, #0x1
+ ldr r2, [r3, r1]
+ orr r0, r2
+ str r0, [r3, r1]
+ pop {r4, pc}
+ nop
+_02079F50: .word 0x027E0000
+_02079F54: .word 0x00003FF8
+
+ thumb_func_start FUN_02079F58
+FUN_02079F58: ; 0x02079F58
+ push {r4, lr}
+ sub sp, #0x28
+ ldr r4, _02079F74 ; =0x020FA6C0
+ add r3, sp, #0x0
+ mov r2, #0x5
+_02079F62:
+ ldmia r4!, {r0-r1}
+ stmia r3!, {r0-r1}
+ sub r2, r2, #0x1
+ bne _02079F62
+ add r0, sp, #0x0
+ bl FUN_0201E66C
+ add sp, #0x28
+ pop {r4, pc}
+ .balign 4
+_02079F74: .word 0x020FA6C0
+
+ thumb_func_start FUN_02079F78
+FUN_02079F78: ; 0x02079F78
+ push {r4-r5, lr}
+ sub sp, #0x9c
+ ldr r5, _0207A074 ; =0x020FA624
+ add r3, sp, #0x8c
+ add r4, r0, #0x0
+ add r2, r3, #0x0
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ add r0, r2, #0x0
+ bl FUN_02016BBC
+ ldr r5, _0207A078 ; =0x020FA650
+ add r3, sp, #0x70
+ ldmia r5!, {r0-r1}
+ add r2, r3, #0x0
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldr r0, [r5, #0x0]
+ mov r1, #0x1
+ str r0, [r3, #0x0]
+ add r0, r4, #0x0
+ mov r3, #0x0
+ bl FUN_02016C18
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_02018744
+ ldr r5, _0207A07C ; =0x020FA66C
+ add r3, sp, #0x54
+ ldmia r5!, {r0-r1}
+ add r2, r3, #0x0
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldr r0, [r5, #0x0]
+ mov r1, #0x2
+ str r0, [r3, #0x0]
+ add r0, r4, #0x0
+ mov r3, #0x0
+ bl FUN_02016C18
+ add r0, r4, #0x0
+ mov r1, #0x2
+ bl FUN_02018744
+ add r0, r4, #0x0
+ mov r1, #0x2
+ mov r2, #0x0
+ mov r3, #0x88
+ bl FUN_0201AEE4
+ ldr r5, _0207A080 ; =0x020FA688
+ add r3, sp, #0x38
+ ldmia r5!, {r0-r1}
+ add r2, r3, #0x0
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldr r0, [r5, #0x0]
+ mov r1, #0x3
+ str r0, [r3, #0x0]
+ add r0, r4, #0x0
+ mov r3, #0x0
+ bl FUN_02016C18
+ ldr r5, _0207A084 ; =0x020FA6A4
+ add r3, sp, #0x1c
+ ldmia r5!, {r0-r1}
+ add r2, r3, #0x0
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldr r0, [r5, #0x0]
+ mov r1, #0x4
+ str r0, [r3, #0x0]
+ add r0, r4, #0x0
+ mov r3, #0x0
+ bl FUN_02016C18
+ add r0, r4, #0x0
+ mov r1, #0x4
+ bl FUN_02018744
+ ldr r5, _0207A088 ; =0x020FA634
+ add r3, sp, #0x0
+ ldmia r5!, {r0-r1}
+ add r2, r3, #0x0
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldr r0, [r5, #0x0]
+ mov r1, #0x5
+ str r0, [r3, #0x0]
+ add r0, r4, #0x0
+ mov r3, #0x0
+ bl FUN_02016C18
+ mov r0, #0x1
+ mov r1, #0x20
+ mov r2, #0x0
+ mov r3, #0x13
+ bl FUN_02017F18
+ mov r0, #0x4
+ mov r1, #0x20
+ mov r2, #0x0
+ mov r3, #0x13
+ bl FUN_02017F18
+ add sp, #0x9c
+ pop {r4-r5, pc}
+ nop
+_0207A074: .word 0x020FA624
+_0207A078: .word 0x020FA650
+_0207A07C: .word 0x020FA66C
+_0207A080: .word 0x020FA688
+_0207A084: .word 0x020FA6A4
+_0207A088: .word 0x020FA634
+
+ thumb_func_start FUN_0207A08C
+FUN_0207A08C: ; 0x0207A08C
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ add r0, r4, #0x0
+ mov r1, #0x5
+ bl FUN_020178A0
+ add r0, r4, #0x0
+ mov r1, #0x4
+ bl FUN_020178A0
+ add r0, r4, #0x0
+ mov r1, #0x3
+ bl FUN_020178A0
+ add r0, r4, #0x0
+ mov r1, #0x2
+ bl FUN_020178A0
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_020178A0
+ mov r0, #0x13
+ add r1, r4, #0x0
+ bl FUN_02016A8C
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0207A0CC
+FUN_0207A0CC: ; 0x0207A0CC
+ push {r4, lr}
+ sub sp, #0x10
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ str r1, [sp, #0x4]
+ add r4, r0, #0x0
+ str r1, [sp, #0x8]
+ mov r0, #0x13
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0x0]
+ mov r0, #0x27
+ mov r3, #0x3
+ bl FUN_0200687C
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ mov r0, #0x13
+ str r0, [sp, #0xc]
+ mov r1, #0x3
+ ldr r2, [r4, #0x0]
+ mov r0, #0x27
+ add r3, r1, #0x0
+ bl FUN_020068C8
+ mov r2, #0x0
+ str r2, [sp, #0x0]
+ mov r0, #0x13
+ str r0, [sp, #0x4]
+ mov r0, #0x27
+ mov r1, #0x1
+ add r3, r2, #0x0
+ bl FUN_02006930
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ mov r0, #0x13
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0x0]
+ mov r0, #0x27
+ mov r1, #0xb
+ mov r3, #0x2
+ bl FUN_020068C8
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ mov r0, #0x13
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0x0]
+ mov r0, #0x27
+ mov r1, #0x2
+ mov r3, #0x4
+ bl FUN_0200687C
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ mov r0, #0x13
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0x0]
+ mov r0, #0x27
+ mov r1, #0x10
+ mov r3, #0x5
+ bl FUN_0200687C
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ mov r0, #0x13
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0x0]
+ mov r0, #0x27
+ mov r1, #0xf
+ mov r3, #0x5
+ bl FUN_020068C8
+ mov r3, #0x0
+ str r3, [sp, #0x0]
+ mov r0, #0x13
+ str r0, [sp, #0x4]
+ mov r0, #0x27
+ mov r1, #0xe
+ mov r2, #0x4
+ bl FUN_02006930
+ add sp, #0x10
+ pop {r4, pc}
+
+ thumb_func_start FUN_0207A188
+FUN_0207A188: ; 0x0207A188
+ push {r3, lr}
+ mov r0, #0x8
+ str r0, [sp, #0x0]
+ ldr r0, _0207A19C ; =0x04000050
+ mov r1, #0x1
+ mov r2, #0x1e
+ mov r3, #0x17
+ blx FUN_020C74DC
+ pop {r3, pc}
+ .balign 4
+_0207A19C: .word 0x04000050
+
+ thumb_func_start FUN_0207A1A0
+FUN_0207A1A0: ; 0x0207A1A0
+ push {r4, lr}
+ mov r2, #0x65
+ add r4, r0, #0x0
+ mov r0, #0x0
+ mov r1, #0x1a
+ lsl r2, r2, #0x2
+ mov r3, #0x13
+ bl FUN_0200A86C
+ ldr r1, _0207A250 ; =0x00000674
+ mov r2, #0x79
+ str r0, [r4, r1]
+ mov r0, #0x1
+ mov r1, #0x1a
+ lsl r2, r2, #0x2
+ mov r3, #0x13
+ bl FUN_0200A86C
+ ldr r1, _0207A254 ; =0x00000678
+ mov r2, #0x0
+ str r0, [r4, r1]
+ mov r0, #0x1
+ mov r1, #0x2
+ mov r3, #0x13
+ bl FUN_0200B870
+ mov r1, #0x67
+ lsl r1, r1, #0x4
+ str r0, [r4, r1]
+ mov r0, #0x13
+ bl FUN_0200AA80
+ ldr r1, _0207A258 ; =0x0000067C
+ str r0, [r4, r1]
+ mov r0, #0xc
+ mov r1, #0x13
+ bl FUN_020219F4
+ mov r1, #0x25
+ lsl r1, r1, #0x4
+ str r0, [r4, r1]
+ mov r0, #0xc
+ mov r1, #0x13
+ bl FUN_020219F4
+ mov r1, #0x95
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ mov r0, #0x8
+ mov r1, #0x13
+ bl FUN_020219F4
+ mov r1, #0x96
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ mov r0, #0x80
+ mov r1, #0x13
+ bl FUN_020219F4
+ mov r1, #0x1a
+ lsl r1, r1, #0x6
+ str r0, [r4, r1]
+ mov r2, #0x93
+ mov r0, #0x0
+ mov r1, #0x1a
+ lsl r2, r2, #0x2
+ mov r3, #0x13
+ bl FUN_0200A86C
+ ldr r1, _0207A25C ; =0x00000688
+ str r0, [r4, r1]
+ mov r0, #0x8
+ mov r1, #0x13
+ bl FUN_020219F4
+ ldr r2, _0207A260 ; =0x00000684
+ str r0, [r4, r2]
+ mov r0, #0x93
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ ldr r1, [r0, #0x8]
+ cmp r1, #0x0
+ beq _0207A24C
+ ldr r0, [r4, r2]
+ bl FUN_02021E28
+_0207A24C:
+ pop {r4, pc}
+ nop
+_0207A250: .word 0x00000674
+_0207A254: .word 0x00000678
+_0207A258: .word 0x0000067C
+_0207A25C: .word 0x00000688
+_0207A260: .word 0x00000684
+
+ thumb_func_start FUN_0207A264
+FUN_0207A264: ; 0x0207A264
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _0207A2C4 ; =0x00000688
+ ldr r0, [r4, r0]
+ bl FUN_0200A8B8
+ ldr r0, _0207A2C8 ; =0x00000678
+ ldr r0, [r4, r0]
+ bl FUN_0200A8B8
+ ldr r0, _0207A2CC ; =0x00000674
+ ldr r0, [r4, r0]
+ bl FUN_0200A8B8
+ mov r0, #0x67
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ bl FUN_0200B990
+ ldr r0, _0207A2D0 ; =0x0000067C
+ ldr r0, [r4, r0]
+ bl FUN_0200AB18
+ mov r0, #0x25
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ bl FUN_02021A20
+ mov r0, #0x95
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_02021A20
+ mov r0, #0x96
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_02021A20
+ mov r0, #0x1a
+ lsl r0, r0, #0x6
+ ldr r0, [r4, r0]
+ bl FUN_02021A20
+ ldr r0, _0207A2D4 ; =0x00000684
+ ldr r0, [r4, r0]
+ bl FUN_02021A20
+ pop {r4, pc}
+ .balign 4
+_0207A2C4: .word 0x00000688
+_0207A2C8: .word 0x00000678
+_0207A2CC: .word 0x00000674
+_0207A2D0: .word 0x0000067C
+_0207A2D4: .word 0x00000684
+
+ thumb_func_start FUN_0207A2D8
+FUN_0207A2D8: ; 0x0207A2D8
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_0200E308
+ cmp r0, #0x1
+ bne _0207A30C
+ add r0, r4, #0x0
+ bl FUN_0207F8D0
+ add r0, r4, #0x0
+ bl FUN_0207AF20
+ mov r0, #0x93
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ ldrb r0, [r0, #0x12]
+ cmp r0, #0x2
+ bne _0207A300
+ mov r0, #0x9
+ pop {r4, pc}
+_0207A300:
+ cmp r0, #0x4
+ bne _0207A308
+ mov r0, #0xf
+ pop {r4, pc}
+_0207A308:
+ mov r0, #0x2
+ pop {r4, pc}
+_0207A30C:
+ mov r0, #0x1
+ pop {r4, pc}
+
+ thumb_func_start FUN_0207A310
+FUN_0207A310: ; 0x0207A310
+ push {r4-r6, lr}
+ ldr r3, _0207A438 ; =0x0000068F
+ add r4, r0, #0x0
+ ldrb r1, [r4, r3]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x1c
+ cmp r1, #0x1
+ bne _0207A32E
+ mov r0, #0x93
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x1
+ strb r1, [r0, #0x17]
+ mov r0, #0x12
+ pop {r4-r6, pc}
+_0207A32E:
+ ldr r2, _0207A43C ; =0x021C48B8
+ mov r1, #0x20
+ ldr r5, [r2, #0x4c]
+ add r6, r5, #0x0
+ tst r6, r1
+ beq _0207A344
+ sub r1, #0x21
+ bl FUN_0207B178
+ mov r0, #0x2
+ pop {r4-r6, pc}
+_0207A344:
+ mov r1, #0x10
+ tst r1, r5
+ beq _0207A354
+ mov r1, #0x1
+ bl FUN_0207B178
+ mov r0, #0x2
+ pop {r4-r6, pc}
+_0207A354:
+ mov r1, #0x40
+ add r6, r5, #0x0
+ tst r6, r1
+ beq _0207A366
+ sub r1, #0x41
+ bl FUN_0207B3F0
+ mov r0, #0x2
+ pop {r4-r6, pc}
+_0207A366:
+ mov r1, #0x80
+ tst r1, r5
+ beq _0207A376
+ mov r1, #0x1
+ bl FUN_0207B3F0
+ mov r0, #0x2
+ pop {r4-r6, pc}
+_0207A376:
+ ldr r1, [r2, #0x48]
+ mov r0, #0x2
+ tst r0, r1
+ beq _0207A394
+ sub r3, #0xb2
+ add r0, r3, #0x0
+ bl FUN_020054C8
+ mov r0, #0x93
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x1
+ strb r1, [r0, #0x17]
+ mov r0, #0x12
+ pop {r4-r6, pc}
+_0207A394:
+ mov r0, #0x1
+ tst r0, r1
+ beq _0207A420
+ mov r0, #0x93
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ ldrb r0, [r0, #0x12]
+ cmp r0, #0x3
+ bne _0207A3BE
+ sub r0, r3, #0x3
+ ldrsb r0, [r4, r0]
+ cmp r0, #0x4
+ bne _0207A3BE
+ sub r3, #0xb2
+ add r0, r3, #0x0
+ bl FUN_020054C8
+ add r0, r4, #0x0
+ bl FUN_0207C23C
+ pop {r4-r6, pc}
+_0207A3BE:
+ ldr r0, _0207A440 ; =0x0000068C
+ ldrsb r1, [r4, r0]
+ cmp r1, #0x3
+ bne _0207A3D6
+ add r0, #0x10
+ bl FUN_020054C8
+ ldr r0, _0207A444 ; =0x0000068E
+ mov r1, #0x0
+ strb r1, [r4, r0]
+ mov r0, #0x3
+ pop {r4-r6, pc}
+_0207A3D6:
+ cmp r1, #0x5
+ bne _0207A3EA
+ add r0, #0x10
+ bl FUN_020054C8
+ ldr r0, _0207A444 ; =0x0000068E
+ mov r1, #0x0
+ strb r1, [r4, r0]
+ mov r0, #0x5
+ pop {r4-r6, pc}
+_0207A3EA:
+ cmp r1, #0x6
+ bne _0207A408
+ add r1, r0, #0x0
+ add r1, #0xd
+ ldrb r1, [r4, r1]
+ cmp r1, #0x0
+ beq _0207A420
+ sub r0, #0xaf
+ bl FUN_020054C8
+ ldr r0, _0207A444 ; =0x0000068E
+ mov r1, #0x0
+ strb r1, [r4, r0]
+ mov r0, #0xb
+ pop {r4-r6, pc}
+_0207A408:
+ cmp r1, #0x7
+ bne _0207A420
+ sub r0, #0xaf
+ bl FUN_020054C8
+ mov r0, #0x93
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x1
+ strb r1, [r0, #0x17]
+ mov r0, #0x12
+ pop {r4-r6, pc}
+_0207A420:
+ add r0, r4, #0x0
+ bl FUN_0207B200
+ cmp r0, #0x1
+ bne _0207A434
+ ldr r0, _0207A444 ; =0x0000068E
+ mov r1, #0x2
+ strb r1, [r4, r0]
+ mov r0, #0xe
+ pop {r4-r6, pc}
+_0207A434:
+ mov r0, #0x2
+ pop {r4-r6, pc}
+ .balign 4
+_0207A438: .word 0x0000068F
+_0207A43C: .word 0x021C48B8
+_0207A440: .word 0x0000068C
+_0207A444: .word 0x0000068E
+
+ thumb_func_start FUN_0207A448
+FUN_0207A448: ; 0x0207A448
+ push {r3, lr}
+ bl FUN_0207B66C
+ cmp r0, #0x1
+ bne _0207A456
+ mov r0, #0x7
+ pop {r3, pc}
+_0207A456:
+ mov r0, #0x3
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0207A45C
+FUN_0207A45C: ; 0x0207A45C
+ push {r3, lr}
+ bl FUN_0207B788
+ cmp r0, #0x1
+ bne _0207A46A
+ mov r0, #0x2
+ pop {r3, pc}
+_0207A46A:
+ mov r0, #0x4
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0207A470
+FUN_0207A470: ; 0x0207A470
+ push {r3, lr}
+ bl FUN_0207BAEC
+ cmp r0, #0x1
+ bne _0207A47E
+ mov r0, #0x7
+ pop {r3, pc}
+_0207A47E:
+ mov r0, #0x5
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0207A484
+FUN_0207A484: ; 0x0207A484
+ push {r3, lr}
+ bl FUN_0207BBF0
+ cmp r0, #0x1
+ bne _0207A492
+ mov r0, #0x2
+ pop {r3, pc}
+_0207A492:
+ mov r0, #0x6
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0207A498
+FUN_0207A498: ; 0x0207A498
+ push {r4, lr}
+ ldr r1, _0207A568 ; =0x021C48B8
+ add r4, r0, #0x0
+ ldr r2, [r1, #0x48]
+ mov r1, #0x40
+ add r3, r2, #0x0
+ tst r3, r1
+ beq _0207A4C2
+ sub r1, #0x41
+ bl FUN_0207B878
+ cmp r0, #0x1
+ bne _0207A4BE
+ ldr r0, _0207A56C ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r4, #0x0
+ bl FUN_0207B8D8
+_0207A4BE:
+ mov r0, #0x7
+ pop {r4, pc}
+_0207A4C2:
+ mov r1, #0x80
+ tst r1, r2
+ beq _0207A4E2
+ mov r1, #0x1
+ bl FUN_0207B878
+ cmp r0, #0x1
+ bne _0207A4DE
+ ldr r0, _0207A56C ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r4, #0x0
+ bl FUN_0207B8D8
+_0207A4DE:
+ mov r0, #0x7
+ pop {r4, pc}
+_0207A4E2:
+ mov r0, #0x1
+ tst r0, r2
+ beq _0207A542
+ ldr r0, _0207A570 ; =0x0000068D
+ ldrb r1, [r4, r0]
+ lsl r1, r1, #0x1c
+ lsr r1, r1, #0x1c
+ cmp r1, #0x4
+ bne _0207A510
+ add r0, #0xf
+ bl FUN_020054C8
+ ldr r0, _0207A574 ; =0x0000068E
+ mov r1, #0x0
+ strb r1, [r4, r0]
+ sub r0, r0, #0x2
+ ldrsb r0, [r4, r0]
+ cmp r0, #0x3
+ bne _0207A50C
+ mov r0, #0x4
+ pop {r4, pc}
+_0207A50C:
+ mov r0, #0x6
+ pop {r4, pc}
+_0207A510:
+ mov r1, #0x93
+ lsl r1, r1, #0x2
+ ldr r1, [r4, r1]
+ ldrb r1, [r1, #0x12]
+ cmp r1, #0x1
+ beq _0207A542
+ sub r0, #0xb0
+ bl FUN_020054C8
+ add r0, r4, #0x0
+ bl FUN_0207CBE8
+ ldr r2, _0207A570 ; =0x0000068D
+ mov r1, #0xf0
+ ldrb r3, [r4, r2]
+ add r0, r3, #0x0
+ bic r0, r1
+ lsl r1, r3, #0x1c
+ lsr r1, r1, #0x1c
+ lsl r1, r1, #0x1c
+ lsr r1, r1, #0x18
+ orr r0, r1
+ strb r0, [r4, r2]
+ mov r0, #0x8
+ pop {r4, pc}
+_0207A542:
+ mov r0, #0x2
+ tst r0, r2
+ beq _0207A564
+ ldr r0, _0207A578 ; =0x0000069C
+ bl FUN_020054C8
+ ldr r0, _0207A574 ; =0x0000068E
+ mov r1, #0x0
+ strb r1, [r4, r0]
+ sub r0, r0, #0x2
+ ldrsb r0, [r4, r0]
+ cmp r0, #0x3
+ bne _0207A560
+ mov r0, #0x4
+ pop {r4, pc}
+_0207A560:
+ mov r0, #0x6
+ pop {r4, pc}
+_0207A564:
+ mov r0, #0x7
+ pop {r4, pc}
+ .balign 4
+_0207A568: .word 0x021C48B8
+_0207A56C: .word 0x000005DC
+_0207A570: .word 0x0000068D
+_0207A574: .word 0x0000068E
+_0207A578: .word 0x0000069C
+
+ thumb_func_start FUN_0207A57C
+FUN_0207A57C: ; 0x0207A57C
+ push {r4, lr}
+ ldr r1, _0207A644 ; =0x021C48B8
+ add r4, r0, #0x0
+ ldr r2, [r1, #0x48]
+ mov r1, #0x40
+ add r3, r2, #0x0
+ tst r3, r1
+ beq _0207A5A6
+ sub r1, #0x41
+ bl FUN_0207B878
+ cmp r0, #0x1
+ bne _0207A5A2
+ ldr r0, _0207A648 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r4, #0x0
+ bl FUN_0207B8D8
+_0207A5A2:
+ mov r0, #0x8
+ pop {r4, pc}
+_0207A5A6:
+ mov r1, #0x80
+ tst r1, r2
+ beq _0207A5C6
+ mov r1, #0x1
+ bl FUN_0207B878
+ cmp r0, #0x1
+ bne _0207A5C2
+ ldr r0, _0207A648 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r4, #0x0
+ bl FUN_0207B8D8
+_0207A5C2:
+ mov r0, #0x8
+ pop {r4, pc}
+_0207A5C6:
+ mov r0, #0x1
+ tst r0, r2
+ beq _0207A622
+ mov r0, #0x43
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ bl FUN_020200A0
+ ldr r0, _0207A64C ; =0x0000068D
+ ldrb r1, [r4, r0]
+ lsl r2, r1, #0x1c
+ lsr r2, r2, #0x1c
+ cmp r2, #0x4
+ beq _0207A618
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x1c
+ cmp r2, r1
+ beq _0207A618
+ sub r0, #0xb0
+ bl FUN_020054C8
+ add r0, r4, #0x0
+ bl FUN_0207B9C0
+ ldr r1, _0207A64C ; =0x0000068D
+ add r0, r4, #0x0
+ ldrb r2, [r4, r1]
+ lsl r1, r2, #0x1c
+ lsl r2, r2, #0x18
+ lsr r1, r1, #0x1c
+ lsr r2, r2, #0x1c
+ bl FUN_0207CB08
+ add r0, r4, #0x0
+ bl FUN_0207ED30
+ add r0, r4, #0x0
+ bl FUN_0207B8D8
+ b _0207A61E
+_0207A618:
+ ldr r0, _0207A650 ; =0x000005DD
+ bl FUN_020054C8
+_0207A61E:
+ mov r0, #0x7
+ pop {r4, pc}
+_0207A622:
+ mov r0, #0x2
+ tst r0, r2
+ beq _0207A63E
+ ldr r0, _0207A650 ; =0x000005DD
+ bl FUN_020054C8
+ mov r0, #0x43
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ bl FUN_020200A0
+ mov r0, #0x7
+ pop {r4, pc}
+_0207A63E:
+ mov r0, #0x8
+ pop {r4, pc}
+ nop
+_0207A644: .word 0x021C48B8
+_0207A648: .word 0x000005DC
+_0207A64C: .word 0x0000068D
+_0207A650: .word 0x000005DD
+
+ thumb_func_start FUN_0207A654
+FUN_0207A654: ; 0x0207A654
+ push {r4, lr}
+ ldr r1, _0207A750 ; =0x021C48B8
+ add r4, r0, #0x0
+ ldr r2, [r1, #0x48]
+ mov r1, #0x20
+ add r3, r2, #0x0
+ tst r3, r1
+ beq _0207A66E
+ sub r1, #0x21
+ bl FUN_0207B178
+ mov r0, #0x9
+ pop {r4, pc}
+_0207A66E:
+ mov r1, #0x10
+ tst r1, r2
+ beq _0207A67E
+ mov r1, #0x1
+ bl FUN_0207B178
+ mov r0, #0x9
+ pop {r4, pc}
+_0207A67E:
+ mov r1, #0x40
+ add r3, r2, #0x0
+ tst r3, r1
+ beq _0207A6A0
+ sub r1, #0x41
+ bl FUN_0207B878
+ cmp r0, #0x1
+ bne _0207A69C
+ ldr r0, _0207A754 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r4, #0x0
+ bl FUN_0207B8D8
+_0207A69C:
+ mov r0, #0x9
+ pop {r4, pc}
+_0207A6A0:
+ mov r1, #0x80
+ tst r1, r2
+ beq _0207A6C0
+ mov r1, #0x1
+ bl FUN_0207B878
+ cmp r0, #0x1
+ bne _0207A6BC
+ ldr r0, _0207A754 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r4, #0x0
+ bl FUN_0207B8D8
+_0207A6BC:
+ mov r0, #0x9
+ pop {r4, pc}
+_0207A6C0:
+ mov r0, #0x1
+ tst r0, r2
+ beq _0207A72C
+ ldr r0, _0207A758 ; =0x000005DD
+ bl FUN_020054C8
+ ldr r0, _0207A75C ; =0x0000068D
+ ldrb r0, [r4, r0]
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1c
+ cmp r0, #0x4
+ beq _0207A712
+ lsl r0, r0, #0x1
+ add r1, r4, r0
+ mov r0, #0xa1
+ lsl r0, r0, #0x2
+ ldrh r0, [r1, r0]
+ bl FUN_0206EA54
+ cmp r0, #0x1
+ bne _0207A712
+ mov r0, #0x93
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ ldrh r0, [r0, #0x18]
+ cmp r0, #0x0
+ beq _0207A712
+ mov r0, #0x45
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ bl FUN_0200C63C
+ add r0, r4, #0x0
+ bl FUN_0207BD58
+ add r0, r4, #0x0
+ bl FUN_0207EDB4
+ mov r0, #0xa
+ pop {r4, pc}
+_0207A712:
+ ldr r0, _0207A75C ; =0x0000068D
+ ldrb r0, [r4, r0]
+ lsl r0, r0, #0x1c
+ lsr r2, r0, #0x1c
+ mov r0, #0x93
+ lsl r0, r0, #0x2
+ ldr r1, [r4, r0]
+ strb r2, [r1, #0x16]
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ strb r1, [r0, #0x17]
+ mov r0, #0x12
+ pop {r4, pc}
+_0207A72C:
+ mov r0, #0x2
+ tst r0, r2
+ beq _0207A74C
+ ldr r0, _0207A758 ; =0x000005DD
+ bl FUN_020054C8
+ mov r0, #0x93
+ lsl r0, r0, #0x2
+ ldr r1, [r4, r0]
+ mov r2, #0x4
+ strb r2, [r1, #0x16]
+ ldr r0, [r4, r0]
+ mov r1, #0x1
+ strb r1, [r0, #0x17]
+ mov r0, #0x12
+ pop {r4, pc}
+_0207A74C:
+ mov r0, #0x9
+ pop {r4, pc}
+ .balign 4
+_0207A750: .word 0x021C48B8
+_0207A754: .word 0x000005DC
+_0207A758: .word 0x000005DD
+_0207A75C: .word 0x0000068D
+
+ thumb_func_start FUN_0207A760
+FUN_0207A760: ; 0x0207A760
+ push {r3, lr}
+ ldr r1, _0207A778 ; =0x021C48B8
+ ldr r2, [r1, #0x48]
+ mov r1, #0x3
+ tst r1, r2
+ beq _0207A774
+ bl FUN_0207B8D8
+ mov r0, #0x9
+ pop {r3, pc}
+_0207A774:
+ mov r0, #0xa
+ pop {r3, pc}
+ .balign 4
+_0207A778: .word 0x021C48B8
+
+ thumb_func_start FUN_0207A77C
+FUN_0207A77C: ; 0x0207A77C
+ push {r3, lr}
+ bl FUN_0207BE68
+ cmp r0, #0x1
+ bne _0207A78A
+ mov r0, #0xd
+ pop {r3, pc}
+_0207A78A:
+ mov r0, #0xb
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0207A790
+FUN_0207A790: ; 0x0207A790
+ push {r3, lr}
+ bl FUN_0207BF90
+ cmp r0, #0x1
+ bne _0207A79E
+ mov r0, #0x2
+ pop {r3, pc}
+_0207A79E:
+ mov r0, #0xc
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0207A7A4
+FUN_0207A7A4: ; 0x0207A7A4
+ push {r3-r5, lr}
+ ldr r3, _0207A80C ; =0x021C48B8
+ mov r1, #0x20
+ ldr r2, [r3, #0x4c]
+ add r4, r0, #0x0
+ add r5, r2, #0x0
+ tst r5, r1
+ beq _0207A7BE
+ sub r1, #0x21
+ bl FUN_0207C07C
+ mov r0, #0xd
+ pop {r3-r5, pc}
+_0207A7BE:
+ mov r1, #0x10
+ tst r1, r2
+ beq _0207A7CE
+ mov r1, #0x1
+ bl FUN_0207C07C
+ mov r0, #0xd
+ pop {r3-r5, pc}
+_0207A7CE:
+ mov r1, #0x40
+ add r5, r2, #0x0
+ tst r5, r1
+ beq _0207A7E0
+ sub r1, #0x44
+ bl FUN_0207C07C
+ mov r0, #0xd
+ pop {r3-r5, pc}
+_0207A7E0:
+ mov r1, #0x80
+ tst r1, r2
+ beq _0207A7F0
+ mov r1, #0x4
+ bl FUN_0207C07C
+ mov r0, #0xd
+ pop {r3-r5, pc}
+_0207A7F0:
+ ldr r1, [r3, #0x48]
+ mov r0, #0x3
+ tst r0, r1
+ beq _0207A808
+ ldr r0, _0207A810 ; =0x000005DD
+ bl FUN_020054C8
+ ldr r0, _0207A814 ; =0x0000068E
+ mov r1, #0x0
+ strb r1, [r4, r0]
+ mov r0, #0xc
+ pop {r3-r5, pc}
+_0207A808:
+ mov r0, #0xd
+ pop {r3-r5, pc}
+ .balign 4
+_0207A80C: .word 0x021C48B8
+_0207A810: .word 0x000005DD
+_0207A814: .word 0x0000068E
+
+ thumb_func_start FUN_0207A818
+FUN_0207A818: ; 0x0207A818
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_0207FB28
+ cmp r0, #0x1
+ bne _0207A82A
+ ldr r0, _0207A878 ; =0x0000068E
+ ldrb r0, [r4, r0]
+ pop {r4, pc}
+_0207A82A:
+ ldr r1, _0207A87C ; =0x00000695
+ ldrb r0, [r4, r1]
+ cmp r0, #0x1
+ bne _0207A874
+ add r1, r1, #0x1
+ ldrb r1, [r4, r1]
+ add r0, r4, #0x0
+ bl FUN_0207FC40
+ add r1, r0, #0x0
+ cmp r1, #0x7
+ bne _0207A850
+ ldr r2, _0207A880 ; =0x0000068F
+ mov r0, #0xf0
+ ldrb r3, [r4, r2]
+ bic r3, r0
+ mov r0, #0x10
+ orr r0, r3
+ strb r0, [r4, r2]
+_0207A850:
+ mov r0, #0x2a
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ lsl r0, r0, #0x3
+ lsr r0, r0, #0x1f
+ cmp r0, #0x1
+ bne _0207A86E
+ cmp r1, #0x1
+ beq _0207A866
+ cmp r1, #0x7
+ bne _0207A874
+_0207A866:
+ add r0, r4, #0x0
+ bl FUN_0207B0CC
+ b _0207A874
+_0207A86E:
+ add r0, r4, #0x0
+ bl FUN_0207B0CC
+_0207A874:
+ mov r0, #0xe
+ pop {r4, pc}
+ .balign 4
+_0207A878: .word 0x0000068E
+_0207A87C: .word 0x00000695
+_0207A880: .word 0x0000068F
+
+ thumb_func_start FUN_0207A884
+FUN_0207A884: ; 0x0207A884
+ push {r4-r6, lr}
+ sub sp, #0x8
+ ldr r1, _0207AA00 ; =0x021C48B8
+ add r5, r0, #0x0
+ ldr r2, [r1, #0x48]
+ mov r1, #0x3
+ tst r1, r2
+ bne _0207A896
+ b _0207A9FA
+_0207A896:
+ mov r1, #0x93
+ lsl r1, r1, #0x2
+ ldr r1, [r5, r1]
+ ldrb r1, [r1, #0x11]
+ cmp r1, #0x2
+ bne _0207A8BA
+ bl FUN_0207B628
+ add r6, r0, #0x0
+ mov r0, #0x13
+ bl FUN_020669C0
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ bl FUN_02069A64
+ b _0207A8C0
+_0207A8BA:
+ bl FUN_0207B628
+ add r4, r0, #0x0
+_0207A8C0:
+ mov r0, #0x93
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ add r1, r4, #0x0
+ ldr r0, [r0, #0x24]
+ bl FUN_0208821C
+ ldr r0, _0207AA04 ; =0x0000068E
+ mov r2, #0x0
+ strb r2, [r5, r0]
+ ldr r0, _0207AA08 ; =0x00000295
+ mov r1, #0x13
+ ldrb r6, [r5, r0]
+ add r0, r4, #0x0
+ bl FUN_020671BC
+ ldr r1, _0207AA08 ; =0x00000295
+ strb r0, [r5, r1]
+ ldrb r0, [r5, r1]
+ cmp r6, r0
+ beq _0207A8F4
+ ldr r1, _0207AA04 ; =0x0000068E
+ mov r0, #0x1
+ ldrb r2, [r5, r1]
+ orr r0, r2
+ strb r0, [r5, r1]
+_0207A8F4:
+ ldr r0, _0207AA0C ; =0x00000296
+ mov r1, #0x14
+ ldrb r6, [r5, r0]
+ add r0, r4, #0x0
+ mov r2, #0x0
+ bl FUN_020671BC
+ ldr r1, _0207AA0C ; =0x00000296
+ strb r0, [r5, r1]
+ ldrb r0, [r5, r1]
+ cmp r6, r0
+ beq _0207A916
+ ldr r1, _0207AA04 ; =0x0000068E
+ mov r0, #0x2
+ ldrb r2, [r5, r1]
+ orr r0, r2
+ strb r0, [r5, r1]
+_0207A916:
+ ldr r0, _0207AA10 ; =0x00000297
+ mov r1, #0x15
+ ldrb r6, [r5, r0]
+ add r0, r4, #0x0
+ mov r2, #0x0
+ bl FUN_020671BC
+ ldr r1, _0207AA10 ; =0x00000297
+ strb r0, [r5, r1]
+ ldrb r0, [r5, r1]
+ cmp r6, r0
+ beq _0207A938
+ ldr r1, _0207AA04 ; =0x0000068E
+ mov r0, #0x4
+ ldrb r2, [r5, r1]
+ orr r0, r2
+ strb r0, [r5, r1]
+_0207A938:
+ mov r0, #0xa6
+ lsl r0, r0, #0x2
+ ldrb r6, [r5, r0]
+ add r0, r4, #0x0
+ mov r1, #0x16
+ mov r2, #0x0
+ bl FUN_020671BC
+ mov r1, #0xa6
+ lsl r1, r1, #0x2
+ strb r0, [r5, r1]
+ ldrb r0, [r5, r1]
+ cmp r6, r0
+ beq _0207A95E
+ ldr r1, _0207AA04 ; =0x0000068E
+ mov r0, #0x8
+ ldrb r2, [r5, r1]
+ orr r0, r2
+ strb r0, [r5, r1]
+_0207A95E:
+ ldr r0, _0207AA14 ; =0x00000299
+ mov r1, #0x17
+ ldrb r6, [r5, r0]
+ add r0, r4, #0x0
+ mov r2, #0x0
+ bl FUN_020671BC
+ ldr r1, _0207AA14 ; =0x00000299
+ strb r0, [r5, r1]
+ ldrb r0, [r5, r1]
+ cmp r6, r0
+ beq _0207A980
+ ldr r1, _0207AA04 ; =0x0000068E
+ mov r0, #0x10
+ ldrb r2, [r5, r1]
+ orr r0, r2
+ strb r0, [r5, r1]
+_0207A980:
+ add r0, r4, #0x0
+ mov r1, #0x18
+ mov r2, #0x0
+ bl FUN_020671BC
+ ldr r1, _0207AA18 ; =0x0000029A
+ strb r0, [r5, r1]
+ sub r1, #0x4e
+ ldr r0, [r5, r1]
+ ldrb r0, [r0, #0x11]
+ cmp r0, #0x2
+ bne _0207A99E
+ add r0, r4, #0x0
+ bl FUN_02016A18
+_0207A99E:
+ mov r1, #0x7
+ mov r0, #0x0
+ lsl r1, r1, #0x6
+ mov r2, #0x13
+ bl FUN_02002EEC
+ mov r0, #0x93
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ ldr r0, [r0, #0x4]
+ bl FUN_02025084
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x13
+ str r0, [sp, #0x4]
+ ldr r0, [r5, #0x0]
+ ldr r2, _0207AA1C ; =0x000003E2
+ mov r1, #0x1
+ mov r3, #0xd
+ bl FUN_0200CD68
+ ldr r0, _0207AA04 ; =0x0000068E
+ ldrb r0, [r5, r0]
+ cmp r0, #0x0
+ bne _0207A9E2
+ add r0, r5, #0x0
+ mov r1, #0xfe
+ bl FUN_0207EECC
+ add sp, #0x8
+ mov r0, #0x11
+ pop {r4-r6, pc}
+_0207A9E2:
+ add r0, r5, #0x0
+ bl FUN_0207F608
+ add r0, r5, #0x0
+ bl FUN_0207CC24
+ add r0, r5, #0x0
+ bl FUN_0207CF78
+ add sp, #0x8
+ mov r0, #0x10
+ pop {r4-r6, pc}
+_0207A9FA:
+ mov r0, #0xf
+ add sp, #0x8
+ pop {r4-r6, pc}
+ .balign 4
+_0207AA00: .word 0x021C48B8
+_0207AA04: .word 0x0000068E
+_0207AA08: .word 0x00000295
+_0207AA0C: .word 0x00000296
+_0207AA10: .word 0x00000297
+_0207AA14: .word 0x00000299
+_0207AA18: .word 0x0000029A
+_0207AA1C: .word 0x000003E2
+
+ thumb_func_start FUN_0207AA20
+FUN_0207AA20: ; 0x0207AA20
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, _0207AA68 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x3
+ tst r0, r1
+ beq _0207AA62
+ ldr r0, _0207AA6C ; =0x0000068E
+ mov r1, #0x0
+ ldrb r2, [r5, r0]
+ mov r0, #0x1
+_0207AA36:
+ add r4, r0, #0x0
+ lsl r4, r1
+ add r3, r2, #0x0
+ tst r3, r4
+ beq _0207AA58
+ add r0, r5, #0x0
+ bl FUN_0207EECC
+ ldr r0, _0207AA6C ; =0x0000068E
+ ldrb r1, [r5, r0]
+ eor r1, r4
+ strb r1, [r5, r0]
+ ldrb r0, [r5, r0]
+ cmp r0, #0x0
+ bne _0207AA62
+ mov r0, #0x11
+ pop {r3-r5, pc}
+_0207AA58:
+ add r1, r1, #0x1
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ cmp r1, #0x5
+ blo _0207AA36
+_0207AA62:
+ mov r0, #0x10
+ pop {r3-r5, pc}
+ nop
+_0207AA68: .word 0x021C48B8
+_0207AA6C: .word 0x0000068E
+
+ thumb_func_start FUN_0207AA70
+FUN_0207AA70: ; 0x0207AA70
+ ldr r0, _0207AA84 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x3
+ tst r0, r1
+ beq _0207AA7E
+ mov r0, #0x12
+ bx lr
+_0207AA7E:
+ mov r0, #0x11
+ bx lr
+ nop
+_0207AA84: .word 0x021C48B8
+
+ thumb_func_start FUN_0207AA88
+FUN_0207AA88: ; 0x0207AA88
+ push {r3, lr}
+ mov r0, #0x1
+ mov r1, #0x13
+ bl FUN_02079A70
+ mov r0, #0x13
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0207AA98
+FUN_0207AA98: ; 0x0207AA98
+ push {r3, lr}
+ bl FUN_0200E308
+ cmp r0, #0x1
+ bne _0207AAA6
+ mov r0, #0x1
+ b _0207AAA8
+_0207AAA6:
+ mov r0, #0x0
+_0207AAA8:
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0207AAB0
+FUN_0207AAB0: ; 0x0207AAB0
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_0207B628
+ mov r2, #0x93
+ lsl r2, r2, #0x2
+ add r1, r0, #0x0
+ ldr r0, [r4, r2]
+ ldrb r0, [r0, #0x11]
+ cmp r0, #0x2
+ bne _0207AAD2
+ add r2, r2, #0x4
+ add r0, r4, #0x0
+ add r2, r4, r2
+ bl FUN_0207AAE0
+ pop {r4, pc}
+_0207AAD2:
+ add r2, r2, #0x4
+ add r0, r4, #0x0
+ add r2, r4, r2
+ bl FUN_0207AB0C
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0207AAE0
+FUN_0207AAE0: ; 0x0207AAE0
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ mov r0, #0x13
+ add r6, r1, #0x0
+ add r7, r2, #0x0
+ bl FUN_020669C0
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ bl FUN_02069A64
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r7, #0x0
+ bl FUN_0207AB0C
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0207AB0C
+FUN_0207AB0C: ; 0x0207AB0C
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r6, r1, #0x0
+ add r7, r0, #0x0
+ add r0, r6, #0x0
+ add r5, r2, #0x0
+ bl FUN_020669D4
+ str r0, [sp, #0x4]
+ add r0, r6, #0x0
+ mov r1, #0x5
+ mov r2, #0x0
+ bl FUN_020671BC
+ strh r0, [r5, #0xc]
+ add r0, r6, #0x0
+ bl FUN_020690E4
+ ldr r2, _0207AEAC ; =0x00000674
+ add r4, r0, #0x0
+ ldr r0, [r7, r2]
+ add r2, #0xc
+ ldr r2, [r7, r2]
+ mov r1, #0xb
+ bl FUN_0200A8E0
+ ldr r0, _0207AEB0 ; =0x0000067C
+ mov r1, #0x0
+ ldr r0, [r7, r0]
+ add r2, r4, #0x0
+ bl FUN_0200AC60
+ ldr r2, _0207AEB0 ; =0x0000067C
+ mov r1, #0x25
+ ldr r0, [r7, r2]
+ lsl r1, r1, #0x4
+ add r2, r2, #0x4
+ ldr r1, [r7, r1]
+ ldr r2, [r7, r2]
+ bl FUN_0200B7B8
+ ldr r2, _0207AEAC ; =0x00000674
+ mov r1, #0x0
+ ldr r0, [r7, r2]
+ add r2, #0xc
+ ldr r2, [r7, r2]
+ bl FUN_0200A8E0
+ ldr r0, _0207AEB0 ; =0x0000067C
+ mov r1, #0x0
+ ldr r0, [r7, r0]
+ add r2, r4, #0x0
+ bl FUN_0200ACF8
+ ldr r2, _0207AEB0 ; =0x0000067C
+ mov r1, #0x95
+ ldr r0, [r7, r2]
+ lsl r1, r1, #0x2
+ add r2, r2, #0x4
+ ldr r1, [r7, r1]
+ ldr r2, [r7, r2]
+ bl FUN_0200B7B8
+ ldr r2, _0207AEAC ; =0x00000674
+ mov r1, #0xe
+ ldr r0, [r7, r2]
+ add r2, #0xc
+ ldr r2, [r7, r2]
+ bl FUN_0200A8E0
+ ldr r0, _0207AEB0 ; =0x0000067C
+ mov r1, #0x0
+ ldr r0, [r7, r0]
+ add r2, r4, #0x0
+ bl FUN_0200AD18
+ ldr r2, _0207AEB0 ; =0x0000067C
+ mov r1, #0x96
+ ldr r0, [r7, r2]
+ lsl r1, r1, #0x2
+ add r2, r2, #0x4
+ ldr r1, [r7, r1]
+ ldr r2, [r7, r2]
+ bl FUN_0200B7B8
+ add r0, r6, #0x0
+ mov r1, #0x6
+ mov r2, #0x0
+ bl FUN_020671BC
+ strh r0, [r5, #0xe]
+ add r0, r6, #0x0
+ mov r1, #0xa0
+ mov r2, #0x0
+ bl FUN_020671BC
+ ldrb r1, [r5, #0x12]
+ mov r2, #0x7f
+ lsl r0, r0, #0x18
+ bic r1, r2
+ lsr r2, r0, #0x18
+ mov r0, #0x7f
+ and r0, r2
+ orr r0, r1
+ strb r0, [r5, #0x12]
+ add r0, r6, #0x0
+ mov r1, #0x4c
+ mov r2, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x1f
+ ldr r2, [r5, #0x50]
+ ldr r1, _0207AEB4 ; =0xEFFFFFFF
+ lsr r0, r0, #0x3
+ and r1, r2
+ orr r0, r1
+ str r0, [r5, #0x50]
+ add r0, r6, #0x0
+ mov r1, #0xaf
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x1
+ bne _0207AC16
+ ldr r0, [r5, #0x50]
+ lsl r0, r0, #0x3
+ lsr r0, r0, #0x1f
+ bne _0207AC16
+ ldrb r1, [r5, #0x12]
+ mov r0, #0x80
+ bic r1, r0
+ strb r1, [r5, #0x12]
+ b _0207AC1E
+_0207AC16:
+ ldrb r1, [r5, #0x12]
+ mov r0, #0x80
+ orr r0, r1
+ strb r0, [r5, #0x12]
+_0207AC1E:
+ add r0, r6, #0x0
+ bl FUN_020689E0
+ ldrb r1, [r5, #0x13]
+ mov r2, #0x3
+ bic r1, r2
+ mov r2, #0x3
+ and r0, r2
+ orr r0, r1
+ strb r0, [r5, #0x13]
+ add r0, r6, #0x0
+ mov r1, #0x9a
+ mov r2, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ lsl r0, r0, #0x1a
+ ldrb r1, [r5, #0x13]
+ mov r2, #0xfc
+ lsr r0, r0, #0x18
+ bic r1, r2
+ orr r0, r1
+ strb r0, [r5, #0x13]
+ add r0, r6, #0x0
+ mov r1, #0xb0
+ mov r2, #0x0
+ bl FUN_020671BC
+ strb r0, [r5, #0x10]
+ add r0, r6, #0x0
+ mov r1, #0xb1
+ mov r2, #0x0
+ bl FUN_020671BC
+ strb r0, [r5, #0x11]
+ add r0, r6, #0x0
+ mov r1, #0x7
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [r5, #0x14]
+ add r0, r6, #0x0
+ mov r1, #0x8
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [r5, #0x18]
+ add r0, r6, #0x0
+ mov r1, #0x9c
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r1, r5, #0x0
+ add r1, #0x44
+ strb r0, [r1, #0x0]
+ ldrb r1, [r5, #0x12]
+ ldrh r0, [r5, #0xc]
+ lsl r1, r1, #0x19
+ lsr r1, r1, #0x19
+ bl FUN_02068758
+ str r0, [r5, #0x1c]
+ ldrb r0, [r5, #0x12]
+ lsl r0, r0, #0x19
+ lsr r1, r0, #0x19
+ cmp r1, #0x64
+ bne _0207ACAA
+ ldr r0, [r5, #0x1c]
+ b _0207ACB2
+_0207ACAA:
+ ldrh r0, [r5, #0xc]
+ add r1, r1, #0x1
+ bl FUN_02068758
+_0207ACB2:
+ str r0, [r5, #0x20]
+ add r0, r6, #0x0
+ mov r1, #0xa2
+ mov r2, #0x0
+ bl FUN_020671BC
+ strh r0, [r5, #0x24]
+ add r0, r6, #0x0
+ mov r1, #0xa3
+ mov r2, #0x0
+ bl FUN_020671BC
+ strh r0, [r5, #0x26]
+ add r0, r6, #0x0
+ mov r1, #0xa4
+ mov r2, #0x0
+ bl FUN_020671BC
+ strh r0, [r5, #0x28]
+ add r0, r6, #0x0
+ mov r1, #0xa5
+ mov r2, #0x0
+ bl FUN_020671BC
+ strh r0, [r5, #0x2a]
+ add r0, r6, #0x0
+ mov r1, #0xa7
+ mov r2, #0x0
+ bl FUN_020671BC
+ strh r0, [r5, #0x2c]
+ add r0, r6, #0x0
+ mov r1, #0xa8
+ mov r2, #0x0
+ bl FUN_020671BC
+ strh r0, [r5, #0x2e]
+ add r0, r6, #0x0
+ mov r1, #0xa6
+ mov r2, #0x0
+ bl FUN_020671BC
+ strh r0, [r5, #0x30]
+ add r0, r6, #0x0
+ mov r1, #0xa
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r1, r5, #0x0
+ add r1, #0x32
+ strb r0, [r1, #0x0]
+ add r0, r6, #0x0
+ bl FUN_02068854
+ add r1, r5, #0x0
+ add r1, #0x33
+ strb r0, [r1, #0x0]
+ mov r4, #0x0
+_0207AD26:
+ lsl r0, r4, #0x1
+ add r0, r5, r0
+ add r1, r4, #0x0
+ str r0, [sp, #0x0]
+ add r0, r6, #0x0
+ add r1, #0x36
+ mov r2, #0x0
+ bl FUN_020671BC
+ ldr r1, [sp, #0x0]
+ mov r2, #0x0
+ strh r0, [r1, #0x34]
+ add r1, r4, #0x0
+ add r0, r6, #0x0
+ add r1, #0x3a
+ bl FUN_020671BC
+ add r1, r5, r4
+ add r1, #0x3c
+ strb r0, [r1, #0x0]
+ add r1, r4, #0x0
+ add r0, r6, #0x0
+ add r1, #0x3e
+ mov r2, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ ldr r0, [sp, #0x0]
+ ldrh r0, [r0, #0x34]
+ bl FUN_0206AB30
+ add r1, r5, r4
+ add r1, #0x40
+ strb r0, [r1, #0x0]
+ add r0, r4, #0x1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #0x4
+ blo _0207AD26
+ add r0, r6, #0x0
+ mov r1, #0x13
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r1, r5, #0x0
+ add r1, #0x45
+ strb r0, [r1, #0x0]
+ add r0, r6, #0x0
+ mov r1, #0x14
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r1, r5, #0x0
+ add r1, #0x46
+ strb r0, [r1, #0x0]
+ add r0, r6, #0x0
+ mov r1, #0x15
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r1, r5, #0x0
+ add r1, #0x47
+ strb r0, [r1, #0x0]
+ add r0, r6, #0x0
+ mov r1, #0x16
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r1, r5, #0x0
+ add r1, #0x48
+ strb r0, [r1, #0x0]
+ add r0, r6, #0x0
+ mov r1, #0x17
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r1, r5, #0x0
+ add r1, #0x49
+ strb r0, [r1, #0x0]
+ add r0, r6, #0x0
+ mov r1, #0x18
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r1, r5, #0x0
+ add r1, #0x4a
+ strb r0, [r1, #0x0]
+ add r0, r5, #0x0
+ mov r1, #0x5
+ add r0, #0x4b
+ strb r1, [r0, #0x0]
+ mov r4, #0x0
+_0207ADE0:
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ bl FUN_02069BC8
+ cmp r0, #0x1
+ bne _0207ADF4
+ add r0, r5, #0x0
+ add r0, #0x4b
+ strb r4, [r0, #0x0]
+ b _0207ADFE
+_0207ADF4:
+ add r0, r4, #0x1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #0x5
+ blo _0207ADE0
+_0207ADFE:
+ add r0, r6, #0x0
+ mov r1, #0xb
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r1, r5, #0x0
+ add r1, #0x4c
+ strh r0, [r1, #0x0]
+ add r0, r6, #0x0
+ mov r1, #0x70
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r1, r5, #0x0
+ add r1, #0x4e
+ strh r0, [r1, #0x0]
+ add r0, r6, #0x0
+ bl FUN_0207C2D4
+ mov r1, #0xf
+ ldr r2, [r5, #0x50]
+ lsl r1, r1, #0x1c
+ and r2, r1
+ ldr r1, _0207AEB8 ; =0x0FFFFFFF
+ and r0, r1
+ orr r0, r2
+ str r0, [r5, #0x50]
+ add r0, r6, #0x0
+ bl FUN_02069E94
+ cmp r0, #0x1
+ bne _0207AE4E
+ ldr r1, [r5, #0x50]
+ ldr r0, _0207AEBC ; =0x3FFFFFFF
+ and r1, r0
+ mov r0, #0x2
+ lsl r0, r0, #0x1e
+ orr r0, r1
+ str r0, [r5, #0x50]
+ b _0207AE84
+_0207AE4E:
+ add r0, r6, #0x0
+ bl FUN_02069E74
+ cmp r0, #0x1
+ bne _0207AE7C
+ ldr r2, [r5, #0x50]
+ ldr r1, _0207AEBC ; =0x3FFFFFFF
+ add r0, r5, #0x0
+ and r2, r1
+ add r1, r1, #0x1
+ orr r1, r2
+ str r1, [r5, #0x50]
+ lsl r1, r1, #0x4
+ lsr r1, r1, #0x4
+ add r0, #0x50
+ cmp r1, #0x7
+ bne _0207AE84
+ mov r1, #0xf
+ ldr r2, [r0, #0x0]
+ lsl r1, r1, #0x1c
+ and r1, r2
+ str r1, [r0, #0x0]
+ b _0207AE84
+_0207AE7C:
+ ldr r1, [r5, #0x50]
+ ldr r0, _0207AEBC ; =0x3FFFFFFF
+ and r0, r1
+ str r0, [r5, #0x50]
+_0207AE84:
+ add r0, r6, #0x0
+ bl FUN_02068A80
+ cmp r0, #0x1
+ ldr r1, [r5, #0x50]
+ bne _0207AE98
+ mov r0, #0x2
+ lsl r0, r0, #0x1c
+ orr r0, r1
+ b _0207AE9C
+_0207AE98:
+ ldr r0, _0207AEC0 ; =0xDFFFFFFF
+ and r0, r1
+_0207AE9C:
+ str r0, [r5, #0x50]
+ mov r4, #0x0
+ str r4, [r5, #0x54]
+ str r4, [r5, #0x58]
+ str r4, [r5, #0x5c]
+ ldr r0, _0207AEC4 ; =0x00000699
+ b _0207AEC8
+ nop
+_0207AEAC: .word 0x00000674
+_0207AEB0: .word 0x0000067C
+_0207AEB4: .word 0xEFFFFFFF
+_0207AEB8: .word 0x0FFFFFFF
+_0207AEBC: .word 0x3FFFFFFF
+_0207AEC0: .word 0xDFFFFFFF
+_0207AEC4: .word 0x00000699
+_0207AEC8:
+ str r4, [r5, #0x60]
+ strb r4, [r7, r0]
+_0207AECC:
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ mov r1, #0x0
+ bl FUN_0207FC5C
+ add r1, r0, #0x0
+ add r0, r6, #0x0
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ beq _0207AF04
+ lsr r0, r4, #0x5
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ mov r1, #0x1f
+ add r2, r4, #0x0
+ and r2, r1
+ mov r1, #0x1
+ ldr r3, [r0, #0x54]
+ lsl r1, r2
+ orr r1, r3
+ str r1, [r0, #0x54]
+ ldr r0, _0207AF1C ; =0x00000699
+ ldrb r0, [r7, r0]
+ add r1, r0, #0x1
+ ldr r0, _0207AF1C ; =0x00000699
+ strb r1, [r7, r0]
+_0207AF04:
+ add r0, r4, #0x1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #0x50
+ blo _0207AECC
+ ldr r1, [sp, #0x4]
+ add r0, r6, #0x0
+ bl FUN_02066A20
+ add sp, #0x8
+ pop {r3-r7, pc}
+ nop
+_0207AF1C: .word 0x00000699
+
+ thumb_func_start FUN_0207AF20
+FUN_0207AF20: ; 0x0207AF20
+ push {r3, lr}
+ mov r2, #0x2a
+ lsl r2, r2, #0x4
+ ldr r1, [r0, r2]
+ lsl r1, r1, #0x3
+ lsr r1, r1, #0x1f
+ bne _0207AF54
+ add r1, r2, #0x0
+ sub r1, #0x44
+ ldrh r3, [r0, r1]
+ add r1, r2, #0x0
+ sub r1, #0xe7
+ cmp r3, r1
+ bne _0207AF4E
+ sub r2, #0x54
+ ldr r0, [r0, r2]
+ mov r1, #0x0
+ ldr r0, [r0, #0x28]
+ mov r2, #0x64
+ add r3, r1, #0x0
+ bl FUN_02005E90
+ pop {r3, pc}
+_0207AF4E:
+ add r0, r3, #0x0
+ bl FUN_02005578
+_0207AF54:
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0207AF58
+FUN_0207AF58: ; 0x0207AF58
+ push {r4, lr}
+ mov r1, #0x93
+ add r4, r0, #0x0
+ lsl r1, r1, #0x2
+ ldr r0, [r4, r1]
+ ldrb r0, [r0, #0x12]
+ cmp r0, #0x4
+ bhi _0207AFA4
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0207AF74: ; jump table (using 16-bit offset)
+ .short _0207AF7E - _0207AF74 - 2; case 0
+ .short _0207AF7E - _0207AF74 - 2; case 1
+ .short _0207AF96 - _0207AF74 - 2; case 2
+ .short _0207AF9E - _0207AF74 - 2; case 3
+ .short _0207AF9E - _0207AF74 - 2; case 4
+_0207AF7E:
+ add r1, #0x54
+ ldr r0, [r4, r1]
+ lsl r0, r0, #0x3
+ lsr r0, r0, #0x1f
+ ldr r0, _0207AFFC ; =0x0000068C
+ bne _0207AF90
+ mov r1, #0x0
+ strb r1, [r4, r0]
+ b _0207AFA4
+_0207AF90:
+ mov r1, #0x1
+ strb r1, [r4, r0]
+ b _0207AFA4
+_0207AF96:
+ ldr r0, _0207AFFC ; =0x0000068C
+ mov r1, #0x3
+ strb r1, [r4, r0]
+ b _0207AFA4
+_0207AF9E:
+ ldr r0, _0207AFFC ; =0x0000068C
+ mov r1, #0x4
+ strb r1, [r4, r0]
+_0207AFA4:
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_0207CFAC
+ add r0, r4, #0x0
+ bl FUN_0207C5D4
+ add r0, r4, #0x0
+ bl FUN_0207C838
+ add r0, r4, #0x0
+ bl FUN_0207D2C8
+ add r0, r4, #0x0
+ bl FUN_0207C6A4
+ add r0, r4, #0x0
+ bl FUN_0207CE4C
+ add r0, r4, #0x0
+ bl FUN_0207CC24
+ add r0, r4, #0x0
+ bl FUN_0207D604
+ add r0, r4, #0x0
+ bl FUN_0207DD88
+ add r0, r4, #0x0
+ bl FUN_0207B228
+ add r0, r4, #0x0
+ bl FUN_0207F2A0
+ mov r0, #0x93
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ ldrb r0, [r0, #0x12]
+ cmp r0, #0x2
+ bne _0207AFFA
+ add r0, r4, #0x0
+ bl FUN_0207BA74
+_0207AFFA:
+ pop {r4, pc}
+ .balign 4
+_0207AFFC: .word 0x0000068C
+
+ thumb_func_start FUN_0207B000
+FUN_0207B000: ; 0x0207B000
+ push {r3-r6}
+ mov r6, #0x0
+ strb r6, [r0, #0x15]
+ add r0, #0x15
+ mov r3, #0x1
+_0207B00A:
+ ldrb r5, [r1, r6]
+ cmp r5, #0x8
+ beq _0207B024
+ add r2, r3, #0x0
+ ldrb r4, [r0, #0x0]
+ lsl r2, r5
+ orr r2, r4
+ strb r2, [r0, #0x0]
+ add r2, r6, #0x1
+ lsl r2, r2, #0x18
+ lsr r6, r2, #0x18
+ cmp r6, #0x8
+ blo _0207B00A
+_0207B024:
+ pop {r3-r6}
+ bx lr
+
+ thumb_func_start FUN_0207B028
+FUN_0207B028: ; 0x0207B028
+ push {r3-r4}
+ mov r1, #0x93
+ lsl r1, r1, #0x2
+ ldr r4, [r0, r1]
+ ldr r1, [r4, #0x2c]
+ cmp r1, #0x1
+ beq _0207B06C
+ ldrb r2, [r4, #0x15]
+ mov r1, #0x10
+ add r3, r2, #0x0
+ tst r3, r1
+ beq _0207B044
+ eor r1, r2
+ strb r1, [r4, #0x15]
+_0207B044:
+ mov r1, #0x93
+ lsl r1, r1, #0x2
+ ldr r4, [r0, r1]
+ mov r1, #0x20
+ ldrb r2, [r4, #0x15]
+ add r3, r2, #0x0
+ tst r3, r1
+ beq _0207B058
+ eor r1, r2
+ strb r1, [r4, #0x15]
+_0207B058:
+ mov r1, #0x93
+ lsl r1, r1, #0x2
+ ldr r3, [r0, r1]
+ mov r0, #0x40
+ ldrb r1, [r3, #0x15]
+ add r2, r1, #0x0
+ tst r2, r0
+ beq _0207B06C
+ eor r0, r1
+ strb r0, [r3, #0x15]
+_0207B06C:
+ pop {r3-r4}
+ bx lr
+
+ thumb_func_start FUN_0207B070
+FUN_0207B070: ; 0x0207B070
+ mov r2, #0x2a
+ lsl r2, r2, #0x4
+ ldr r2, [r0, r2]
+ lsl r2, r2, #0x3
+ lsr r2, r2, #0x1f
+ beq _0207B088
+ cmp r1, #0x1
+ beq _0207B088
+ cmp r1, #0x7
+ beq _0207B088
+ mov r0, #0x0
+ bx lr
+_0207B088:
+ mov r2, #0x93
+ lsl r2, r2, #0x2
+ ldr r0, [r0, r2]
+ ldrb r2, [r0, #0x15]
+ mov r0, #0x1
+ lsl r0, r1
+ and r0, r2
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+
+ thumb_func_start FUN_0207B09C
+FUN_0207B09C: ; 0x0207B09C
+ push {r3-r4}
+ mov r3, #0x93
+ lsl r3, r3, #0x2
+ ldr r0, [r0, r3]
+ mov r2, #0x0
+ ldrb r0, [r0, #0x15]
+ add r1, r2, #0x0
+ mov r3, #0x1
+_0207B0AC:
+ add r4, r3, #0x0
+ lsl r4, r1
+ tst r4, r0
+ beq _0207B0BA
+ add r2, r2, #0x1
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+_0207B0BA:
+ add r1, r1, #0x1
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ cmp r1, #0x8
+ blo _0207B0AC
+ add r0, r2, #0x0
+ pop {r3-r4}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0207B0CC
+FUN_0207B0CC: ; 0x0207B0CC
+ push {r3-r5, lr}
+ sub sp, #0x10
+ add r4, r1, #0x0
+ ldr r1, _0207B174 ; =0x0000068C
+ add r5, r0, #0x0
+ ldrsb r1, [r5, r1]
+ cmp r1, r4
+ beq _0207B170
+ mov r1, #0x93
+ lsl r1, r1, #0x2
+ ldr r1, [r5, r1]
+ ldrb r1, [r1, #0x12]
+ cmp r1, #0x2
+ bne _0207B0EC
+ bl FUN_0207BDD8
+_0207B0EC:
+ add r0, r5, #0x0
+ bl FUN_0207D6F8
+ ldr r0, _0207B174 ; =0x0000068C
+ mov r1, #0x0
+ strb r4, [r5, r0]
+ add r0, r5, #0x0
+ bl FUN_0207CFAC
+ add r0, r5, #0x0
+ bl FUN_0207C5D4
+ add r0, r5, #0x0
+ bl FUN_0207C6A4
+ add r0, r5, #0x0
+ bl FUN_0207C838
+ add r0, r5, #0x0
+ bl FUN_0207D2C8
+ add r0, r5, #0x0
+ bl FUN_0207CC24
+ add r0, r5, #0x0
+ bl FUN_0207D604
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_0207D418
+ mov r0, #0x4
+ str r0, [sp, #0x0]
+ mov r0, #0x13
+ str r0, [sp, #0x4]
+ mov r0, #0x14
+ str r0, [sp, #0x8]
+ mov r2, #0x0
+ str r2, [sp, #0xc]
+ ldr r0, [r5, #0x0]
+ mov r1, #0x1
+ mov r3, #0xe
+ bl FUN_02018540
+ ldr r0, [r5, #0x0]
+ mov r1, #0x1
+ bl FUN_02017CD0
+ add r0, r5, #0x0
+ bl FUN_0207DD88
+ add r0, r5, #0x0
+ bl FUN_0207B228
+ add r0, r5, #0x0
+ bl FUN_0207F2A0
+ mov r0, #0x93
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ ldrb r0, [r0, #0x12]
+ cmp r0, #0x2
+ bne _0207B170
+ add r0, r5, #0x0
+ bl FUN_0207BDF4
+_0207B170:
+ add sp, #0x10
+ pop {r3-r5, pc}
+ .balign 4
+_0207B174: .word 0x0000068C
+
+ thumb_func_start FUN_0207B178
+FUN_0207B178: ; 0x0207B178
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldr r0, _0207B1F8 ; =0x0000068C
+ mov r6, #0x1
+ ldrsb r4, [r5, r0]
+ mov r0, #0x2a
+ lsl r0, r0, #0x4
+ ldr r0, [r5, r0]
+ mov r12, r4
+ lsl r0, r0, #0x3
+ lsr r0, r0, #0x1f
+ add r7, r6, #0x0
+_0207B190:
+ add r2, r4, r1
+ lsl r2, r2, #0x18
+ asr r4, r2, #0x18
+ bpl _0207B19C
+ mov r4, #0x7
+ b _0207B1A2
+_0207B19C:
+ cmp r4, #0x7
+ ble _0207B1A2
+ mov r4, #0x0
+_0207B1A2:
+ cmp r0, #0x0
+ bne _0207B1B8
+ mov r2, #0x93
+ lsl r2, r2, #0x2
+ ldr r2, [r5, r2]
+ ldrb r3, [r2, #0x15]
+ add r2, r6, #0x0
+ lsl r2, r4
+ tst r2, r3
+ bne _0207B1D0
+ b _0207B190
+_0207B1B8:
+ mov r2, #0x93
+ lsl r2, r2, #0x2
+ ldr r2, [r5, r2]
+ ldrb r3, [r2, #0x15]
+ add r2, r7, #0x0
+ lsl r2, r4
+ tst r2, r3
+ beq _0207B190
+ cmp r4, #0x1
+ beq _0207B1D0
+ cmp r4, #0x7
+ bne _0207B190
+_0207B1D0:
+ mov r0, r12
+ cmp r4, r0
+ beq _0207B1F4
+ ldr r0, _0207B1FC ; =0x000005E1
+ bl FUN_020054C8
+ add r0, r5, #0x0
+ bl FUN_0207FA38
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_0207D418
+ lsl r1, r4, #0x18
+ add r0, r5, #0x0
+ lsr r1, r1, #0x18
+ bl FUN_0207B0CC
+_0207B1F4:
+ pop {r3-r7, pc}
+ nop
+_0207B1F8: .word 0x0000068C
+_0207B1FC: .word 0x000005E1
+
+ thumb_func_start FUN_0207B200
+FUN_0207B200: ; 0x0207B200
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_0207FA80
+ cmp r0, #0xff
+ bne _0207B210
+ mov r0, #0x0
+ pop {r4, pc}
+_0207B210:
+ ldr r1, _0207B224 ; =0x00000694
+ mov r3, #0x0
+ strb r3, [r4, r1]
+ add r2, r1, #0x2
+ strb r0, [r4, r2]
+ add r0, r1, #0x1
+ strb r3, [r4, r0]
+ mov r0, #0x1
+ pop {r4, pc}
+ nop
+_0207B224: .word 0x00000694
+
+ thumb_func_start FUN_0207B228
+FUN_0207B228: ; 0x0207B228
+ push {r3-r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ mov r0, #0x93
+ lsl r0, r0, #0x2
+ ldr r1, [r5, r0]
+ ldrb r0, [r1, #0x12]
+ cmp r0, #0x2
+ bne _0207B250
+ ldrh r0, [r1, #0x18]
+ cmp r0, #0x0
+ beq _0207B250
+ ldr r0, _0207B2AC ; =0x0000068C
+ ldrsb r0, [r5, r0]
+ cmp r0, #0x3
+ bne _0207B24C
+ mov r1, #0xc
+ b _0207B256
+_0207B24C:
+ mov r1, #0xd
+ b _0207B256
+_0207B250:
+ ldr r0, _0207B2AC ; =0x0000068C
+ ldrsb r0, [r5, r0]
+ add r1, r0, #0x3
+_0207B256:
+ mov r0, #0x27
+ mov r2, #0x13
+ bl LoadFromNarc_2
+ add r1, sp, #0xc
+ add r4, r0, #0x0
+ blx FUN_020B0180
+ mov r3, #0x0
+ str r3, [sp, #0x0]
+ mov r0, #0x20
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ ldr r2, [sp, #0xc]
+ ldr r0, [r5, #0x0]
+ mov r1, #0x3
+ add r2, #0xc
+ bl FUN_02018148
+ ldr r0, [r5, #0x0]
+ mov r1, #0x3
+ bl FUN_0201AC68
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ ldr r0, _0207B2AC ; =0x0000068C
+ ldrsb r0, [r5, r0]
+ cmp r0, #0x0
+ bne _0207B29C
+ add r0, r5, #0x0
+ bl FUN_0207B364
+ add sp, #0x10
+ pop {r3-r5, pc}
+_0207B29C:
+ cmp r0, #0x2
+ bne _0207B2A6
+ add r0, r5, #0x0
+ bl FUN_0207B2B0
+_0207B2A6:
+ add sp, #0x10
+ pop {r3-r5, pc}
+ nop
+_0207B2AC: .word 0x0000068C
+
+ thumb_func_start FUN_0207B2B0
+FUN_0207B2B0: ; 0x0207B2B0
+ push {r4-r7, lr}
+ sub sp, #0x14
+ mov r1, #0x9d
+ add r6, r0, #0x0
+ lsl r1, r1, #0x2
+ ldrh r0, [r6, r1]
+ add r1, r1, #0x2
+ ldrh r1, [r6, r1]
+ mov r2, #0x30
+ bl FUN_02079A54
+ cmp r0, #0x4
+ bhi _0207B2EC
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0207B2D6: ; jump table (using 16-bit offset)
+ .short _0207B2E0 - _0207B2D6 - 2; case 0
+ .short _0207B2E8 - _0207B2D6 - 2; case 1
+ .short _0207B2E4 - _0207B2D6 - 2; case 2
+ .short _0207B2E0 - _0207B2D6 - 2; case 3
+ .short _0207B2E0 - _0207B2D6 - 2; case 4
+_0207B2E0:
+ ldr r7, _0207B35C ; =0x0000A0C0
+ b _0207B2EC
+_0207B2E4:
+ ldr r7, _0207B360 ; =0x0000A0E0
+ b _0207B2EC
+_0207B2E8:
+ mov r7, #0xa1
+ lsl r7, r7, #0x8
+_0207B2EC:
+ mov r1, #0x9d
+ lsl r1, r1, #0x2
+ ldrh r0, [r6, r1]
+ add r1, r1, #0x2
+ ldrh r1, [r6, r1]
+ mov r2, #0x30
+ bl FUN_02079A0C
+ add r4, r0, #0x0
+ add r0, r7, #0x0
+ add r0, #0x8
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ mov r5, #0x0
+ str r0, [sp, #0x10]
+_0207B30A:
+ cmp r4, #0x8
+ blo _0207B312
+ ldr r2, [sp, #0x10]
+ b _0207B318
+_0207B312:
+ add r0, r7, r4
+ lsl r0, r0, #0x10
+ lsr r2, r0, #0x10
+_0207B318:
+ mov r0, #0x6
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ add r3, r5, #0x0
+ str r0, [sp, #0x8]
+ mov r0, #0x11
+ add r3, #0x18
+ str r0, [sp, #0xc]
+ lsl r3, r3, #0x18
+ ldr r0, [r6, #0x0]
+ mov r1, #0x3
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ cmp r4, #0x8
+ bhs _0207B33E
+ mov r4, #0x0
+ b _0207B344
+_0207B33E:
+ sub r4, #0x8
+ lsl r0, r4, #0x18
+ lsr r4, r0, #0x18
+_0207B344:
+ add r0, r5, #0x1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #0x6
+ blo _0207B30A
+ ldr r0, [r6, #0x0]
+ mov r1, #0x3
+ bl FUN_0201AC68
+ add sp, #0x14
+ pop {r4-r7, pc}
+ nop
+_0207B35C: .word 0x0000A0C0
+_0207B360: .word 0x0000A0E0
+
+ thumb_func_start FUN_0207B364
+FUN_0207B364: ; 0x0207B364
+ push {r3-r7, lr}
+ sub sp, #0x10
+ ldr r2, _0207B3EC ; =0x00000262
+ add r6, r0, #0x0
+ ldrb r0, [r6, r2]
+ lsl r0, r0, #0x19
+ lsr r0, r0, #0x19
+ cmp r0, #0x64
+ bhs _0207B38C
+ add r0, r2, #0x0
+ add r1, r2, #0x0
+ add r0, #0xa
+ add r1, #0xe
+ add r2, r2, #0x6
+ ldr r0, [r6, r0]
+ ldr r1, [r6, r1]
+ ldr r2, [r6, r2]
+ sub r1, r1, r0
+ sub r0, r2, r0
+ b _0207B390
+_0207B38C:
+ mov r1, #0x0
+ add r0, r1, #0x0
+_0207B390:
+ mov r2, #0x38
+ bl FUN_02079A0C
+ add r4, r0, #0x0
+ mov r5, #0x0
+ mov r7, #0x17
+_0207B39C:
+ cmp r4, #0x8
+ blo _0207B3A4
+ mov r2, #0xb4
+ b _0207B3AC
+_0207B3A4:
+ add r0, r4, #0x0
+ add r0, #0xac
+ lsl r0, r0, #0x10
+ lsr r2, r0, #0x10
+_0207B3AC:
+ str r7, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ add r3, r5, #0x0
+ str r0, [sp, #0x8]
+ mov r0, #0x11
+ add r3, #0x17
+ str r0, [sp, #0xc]
+ lsl r3, r3, #0x18
+ ldr r0, [r6, #0x0]
+ mov r1, #0x3
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ cmp r4, #0x8
+ bhs _0207B3D0
+ mov r4, #0x0
+ b _0207B3D6
+_0207B3D0:
+ sub r4, #0x8
+ lsl r0, r4, #0x18
+ lsr r4, r0, #0x18
+_0207B3D6:
+ add r0, r5, #0x1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #0x7
+ blo _0207B39C
+ ldr r0, [r6, #0x0]
+ mov r1, #0x3
+ bl FUN_0201AC68
+ add sp, #0x10
+ pop {r3-r7, pc}
+ .balign 4
+_0207B3EC: .word 0x00000262
+
+ thumb_func_start FUN_0207B3F0
+FUN_0207B3F0: ; 0x0207B3F0
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_0207B4A4
+ mov r1, #0x0
+ mvn r1, r1
+ cmp r0, r1
+ beq _0207B49C
+ mov r1, #0x93
+ lsl r1, r1, #0x2
+ ldr r1, [r4, r1]
+ strb r0, [r1, #0x14]
+ add r0, r4, #0x0
+ bl FUN_0207AAB0
+ add r0, r4, #0x0
+ bl FUN_0207AF20
+ add r0, r4, #0x0
+ bl FUN_0207D768
+ add r0, r4, #0x0
+ bl FUN_0207D800
+ add r0, r4, #0x0
+ bl FUN_0207D8A0
+ ldr r0, _0207B4A0 ; =0x0000068C
+ ldrsb r0, [r4, r0]
+ cmp r0, #0x0
+ bne _0207B436
+ add r0, r4, #0x0
+ bl FUN_0207B364
+ b _0207B44C
+_0207B436:
+ cmp r0, #0x2
+ bne _0207B442
+ add r0, r4, #0x0
+ bl FUN_0207B2B0
+ b _0207B44C
+_0207B442:
+ cmp r0, #0x4
+ bne _0207B44C
+ add r0, r4, #0x0
+ bl FUN_0207F608
+_0207B44C:
+ add r0, r4, #0x0
+ bl FUN_0207F934
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_0207CFAC
+ add r0, r4, #0x0
+ bl FUN_0207C5D4
+ add r0, r4, #0x0
+ bl FUN_0207C6A4
+ add r0, r4, #0x0
+ bl FUN_0207CA44
+ add r0, r4, #0x0
+ bl FUN_0207C838
+ add r0, r4, #0x0
+ bl FUN_0207D2C8
+ add r0, r4, #0x0
+ bl FUN_0207CFEC
+ add r0, r4, #0x0
+ bl FUN_0207C71C
+ add r0, r4, #0x0
+ bl FUN_0207C77C
+ add r0, r4, #0x0
+ bl FUN_0207CC24
+ add r0, r4, #0x0
+ bl FUN_0207CE4C
+ add r0, r4, #0x0
+ bl FUN_0207DD88
+_0207B49C:
+ pop {r4, pc}
+ nop
+_0207B4A0: .word 0x0000068C
+
+ thumb_func_start FUN_0207B4A4
+FUN_0207B4A4: ; 0x0207B4A4
+ push {r3, lr}
+ mov r2, #0x93
+ lsl r2, r2, #0x2
+ ldr r2, [r0, r2]
+ ldrb r2, [r2, #0x11]
+ cmp r2, #0x0
+ beq _0207B4BC
+ cmp r2, #0x1
+ beq _0207B4C2
+ cmp r2, #0x2
+ beq _0207B4C8
+ b _0207B4CE
+_0207B4BC:
+ bl FUN_0207B4FC
+ pop {r3, pc}
+_0207B4C2:
+ bl FUN_0207B564
+ pop {r3, pc}
+_0207B4C8:
+ bl FUN_0207B5C0
+ pop {r3, pc}
+_0207B4CE:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3, pc}
+
+ thumb_func_start FUN_0207B4D4
+FUN_0207B4D4: ; 0x0207B4D4
+ mov r1, #0x93
+ lsl r1, r1, #0x2
+ ldr r1, [r0, r1]
+ ldrb r1, [r1, #0x12]
+ cmp r1, #0x3
+ bne _0207B4E4
+ mov r0, #0x0
+ bx lr
+_0207B4E4:
+ ldr r1, _0207B4F8 ; =0x0000068C
+ ldrsb r0, [r0, r1]
+ cmp r0, #0x1
+ beq _0207B4F4
+ cmp r0, #0x7
+ beq _0207B4F4
+ mov r0, #0x0
+ bx lr
+_0207B4F4:
+ mov r0, #0x1
+ bx lr
+ .balign 4
+_0207B4F8: .word 0x0000068C
+
+ thumb_func_start FUN_0207B4FC
+FUN_0207B4FC: ; 0x0207B4FC
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ mov r0, #0x93
+ lsl r0, r0, #0x2
+ str r1, [sp, #0x0]
+ ldr r1, [r5, r0]
+ mov r0, #0x14
+ ldrsb r4, [r1, r0]
+_0207B50C:
+ ldr r0, [sp, #0x0]
+ add r0, r4, r0
+ lsl r0, r0, #0x18
+ asr r4, r0, #0x18
+ bmi _0207B522
+ mov r0, #0x93
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ ldrb r0, [r0, #0x13]
+ cmp r4, r0
+ blt _0207B528
+_0207B522:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r7, pc}
+_0207B528:
+ bl FUN_020690C4
+ mov r1, #0x93
+ lsl r1, r1, #0x2
+ ldr r1, [r5, r1]
+ add r7, r4, #0x0
+ ldr r6, [r1, #0x0]
+ mul r7, r0
+ add r0, r6, r7
+ mov r1, #0x5
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ beq _0207B50C
+ add r0, r6, r7
+ mov r1, #0x4c
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ beq _0207B55E
+ add r0, r5, #0x0
+ bl FUN_0207B4D4
+ cmp r0, #0x1
+ bne _0207B50C
+_0207B55E:
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0207B564
+FUN_0207B564: ; 0x0207B564
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ mov r0, #0x93
+ lsl r0, r0, #0x2
+ add r7, r1, #0x0
+ ldr r1, [r5, r0]
+ mov r0, #0x14
+ ldrsb r4, [r1, r0]
+_0207B574:
+ add r0, r4, r7
+ lsl r0, r0, #0x18
+ asr r4, r0, #0x18
+ bmi _0207B588
+ mov r0, #0x93
+ lsl r0, r0, #0x2
+ ldr r1, [r5, r0]
+ ldrb r0, [r1, #0x13]
+ cmp r4, r0
+ blt _0207B58E
+_0207B588:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r7, pc}
+_0207B58E:
+ ldr r0, [r1, #0x0]
+ add r1, r4, #0x0
+ bl FUN_0206B9B0
+ mov r1, #0x5
+ mov r2, #0x0
+ add r6, r0, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ beq _0207B574
+ add r0, r6, #0x0
+ mov r1, #0x4c
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ beq _0207B5BC
+ add r0, r5, #0x0
+ bl FUN_0207B4D4
+ cmp r0, #0x1
+ bne _0207B574
+_0207B5BC:
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0207B5C0
+FUN_0207B5C0: ; 0x0207B5C0
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ mov r0, #0x93
+ lsl r0, r0, #0x2
+ str r1, [sp, #0x0]
+ ldr r1, [r5, r0]
+ mov r0, #0x14
+ ldrsb r4, [r1, r0]
+_0207B5D0:
+ ldr r0, [sp, #0x0]
+ add r0, r4, r0
+ lsl r0, r0, #0x18
+ asr r4, r0, #0x18
+ bmi _0207B5E6
+ mov r0, #0x93
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ ldrb r0, [r0, #0x13]
+ cmp r4, r0
+ blt _0207B5EC
+_0207B5E6:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r7, pc}
+_0207B5EC:
+ bl FUN_020690C8
+ mov r1, #0x93
+ lsl r1, r1, #0x2
+ ldr r1, [r5, r1]
+ add r7, r4, #0x0
+ ldr r6, [r1, #0x0]
+ mul r7, r0
+ add r0, r6, r7
+ mov r1, #0x5
+ mov r2, #0x0
+ bl FUN_020672BC
+ cmp r0, #0x0
+ beq _0207B5D0
+ add r0, r6, r7
+ mov r1, #0x4c
+ mov r2, #0x0
+ bl FUN_020672BC
+ cmp r0, #0x0
+ beq _0207B622
+ add r0, r5, #0x0
+ bl FUN_0207B4D4
+ cmp r0, #0x1
+ bne _0207B5D0
+_0207B622:
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0207B628
+FUN_0207B628: ; 0x0207B628
+ push {r4, lr}
+ mov r1, #0x93
+ lsl r1, r1, #0x2
+ ldr r4, [r0, r1]
+ ldrb r0, [r4, #0x11]
+ cmp r0, #0x0
+ beq _0207B640
+ cmp r0, #0x1
+ beq _0207B64E
+ cmp r0, #0x2
+ beq _0207B658
+ b _0207B666
+_0207B640:
+ bl FUN_020690C4
+ ldrb r1, [r4, #0x14]
+ ldr r2, [r4, #0x0]
+ mul r0, r1
+ add r0, r2, r0
+ pop {r4, pc}
+_0207B64E:
+ ldrb r1, [r4, #0x14]
+ ldr r0, [r4, #0x0]
+ bl FUN_0206B9B0
+ pop {r4, pc}
+_0207B658:
+ bl FUN_020690C8
+ ldrb r1, [r4, #0x14]
+ ldr r2, [r4, #0x0]
+ mul r0, r1
+ add r0, r2, r0
+ pop {r4, pc}
+_0207B666:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0207B66C
+FUN_0207B66C: ; 0x0207B66C
+ push {r4, lr}
+ ldr r1, _0207B774 ; =0x0000068E
+ add r4, r0, #0x0
+ ldrb r1, [r4, r1]
+ cmp r1, #0x0
+ beq _0207B682
+ cmp r1, #0x1
+ beq _0207B6E2
+ cmp r1, #0x2
+ beq _0207B70E
+ b _0207B76E
+_0207B682:
+ ldr r0, [r4, #0x0]
+ mov r1, #0x2
+ mov r2, #0x0
+ mov r3, #0x88
+ bl FUN_0201AEE4
+ ldr r0, [r4, #0x0]
+ mov r1, #0x2
+ mov r2, #0x3
+ mov r3, #0x0
+ bl FUN_0201AEE4
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_0207C6F0
+ mov r0, #0x85
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_0201958C
+ add r0, r4, #0x0
+ add r0, #0x64
+ bl FUN_0201958C
+ mov r0, #0x81
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_0201958C
+ mov r0, #0x8d
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_0201958C
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_0207CFAC
+ ldr r1, _0207B778 ; =0x0000068D
+ mov r0, #0xf
+ ldrb r2, [r4, r1]
+ bic r2, r0
+ strb r2, [r4, r1]
+ mov r2, #0x1
+ add r0, r1, #0x1
+ strb r2, [r4, r0]
+ b _0207B76E
+_0207B6E2:
+ ldr r0, [r4, #0x0]
+ mov r1, #0x2
+ bl FUN_02017B48
+ cmp r0, #0x40
+ ldr r0, [r4, #0x0]
+ bgt _0207B702
+ mov r2, #0x0
+ mov r1, #0x2
+ add r3, r2, #0x0
+ bl FUN_0201AEE4
+ ldr r0, _0207B774 ; =0x0000068E
+ mov r1, #0x2
+ strb r1, [r4, r0]
+ b _0207B76E
+_0207B702:
+ mov r1, #0x2
+ add r2, r1, #0x0
+ mov r3, #0x40
+ bl FUN_0201AEE4
+ b _0207B76E
+_0207B70E:
+ bl FUN_0207ECDC
+ mov r0, #0x93
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ ldrb r0, [r0, #0x12]
+ cmp r0, #0x1
+ beq _0207B732
+ add r0, r4, #0x0
+ mov r1, #0x98
+ bl FUN_0207D924
+ mov r1, #0x8d
+ lsl r1, r1, #0x2
+ add r0, r4, #0x0
+ add r1, r4, r1
+ bl FUN_0207CFAC
+_0207B732:
+ add r0, r4, #0x0
+ bl FUN_0207B8D8
+ ldr r0, _0207B77C ; =0x00000434
+ mov r1, #0x1
+ ldr r0, [r4, r0]
+ bl FUN_0200C63C
+ add r0, r4, #0x0
+ bl FUN_0207D06C
+ mov r0, #0x26
+ lsl r0, r0, #0x4
+ ldrb r1, [r4, r0]
+ add r0, r0, #0x1
+ ldrb r0, [r4, r0]
+ cmp r1, r0
+ beq _0207B760
+ ldr r0, _0207B780 ; =0x00000438
+ mov r1, #0x1
+ ldr r0, [r4, r0]
+ bl FUN_0200C63C
+_0207B760:
+ ldr r0, _0207B784 ; =0x0000042C
+ mov r1, #0x1
+ ldr r0, [r4, r0]
+ bl FUN_020200A0
+ mov r0, #0x1
+ pop {r4, pc}
+_0207B76E:
+ mov r0, #0x0
+ pop {r4, pc}
+ nop
+_0207B774: .word 0x0000068E
+_0207B778: .word 0x0000068D
+_0207B77C: .word 0x00000434
+_0207B780: .word 0x00000438
+_0207B784: .word 0x0000042C
+
+ thumb_func_start FUN_0207B788
+FUN_0207B788: ; 0x0207B788
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _0207B864 ; =0x0000068E
+ ldrb r0, [r4, r0]
+ cmp r0, #0x0
+ beq _0207B79E
+ cmp r0, #0x1
+ beq _0207B7F8
+ cmp r0, #0x2
+ beq _0207B824
+ b _0207B860
+_0207B79E:
+ ldr r0, _0207B868 ; =0x00000434
+ mov r1, #0x0
+ ldr r0, [r4, r0]
+ bl FUN_0200C63C
+ ldr r0, _0207B86C ; =0x00000438
+ mov r1, #0x0
+ ldr r0, [r4, r0]
+ bl FUN_0200C63C
+ mov r0, #0x45
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ bl FUN_0200C63C
+ ldr r0, _0207B870 ; =0x00000454
+ mov r1, #0x0
+ ldr r0, [r4, r0]
+ bl FUN_0200C63C
+ ldr r0, _0207B874 ; =0x0000042C
+ mov r1, #0x0
+ ldr r0, [r4, r0]
+ bl FUN_020200A0
+ mov r0, #0x8d
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_0201958C
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_0207CFAC
+ add r0, r4, #0x0
+ bl FUN_0207ED18
+ add r0, r4, #0x0
+ bl FUN_0207EC94
+ ldr r0, _0207B864 ; =0x0000068E
+ mov r1, #0x1
+ strb r1, [r4, r0]
+ b _0207B860
+_0207B7F8:
+ ldr r0, [r4, #0x0]
+ mov r1, #0x2
+ bl FUN_02017B48
+ cmp r0, #0x80
+ ldr r0, [r4, #0x0]
+ blt _0207B818
+ mov r1, #0x2
+ mov r2, #0x0
+ mov r3, #0x88
+ bl FUN_0201AEE4
+ ldr r0, _0207B864 ; =0x0000068E
+ mov r1, #0x2
+ strb r1, [r4, r0]
+ b _0207B860
+_0207B818:
+ mov r1, #0x2
+ mov r2, #0x1
+ mov r3, #0x40
+ bl FUN_0201AEE4
+ b _0207B860
+_0207B824:
+ mov r0, #0x85
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_02019220
+ add r0, r4, #0x0
+ add r0, #0x64
+ bl FUN_02019220
+ mov r0, #0x81
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_02019220
+ add r0, r4, #0x0
+ mov r1, #0x81
+ bl FUN_0207D924
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_0207C6F0
+ mov r1, #0x8d
+ lsl r1, r1, #0x2
+ add r0, r4, #0x0
+ add r1, r4, r1
+ bl FUN_0207CFAC
+ mov r0, #0x1
+ pop {r4, pc}
+_0207B860:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+_0207B864: .word 0x0000068E
+_0207B868: .word 0x00000434
+_0207B86C: .word 0x00000438
+_0207B870: .word 0x00000454
+_0207B874: .word 0x0000042C
+
+ thumb_func_start FUN_0207B878
+FUN_0207B878: ; 0x0207B878
+ push {r4-r7}
+ add r5, r0, #0x0
+ ldr r0, _0207B8D4 ; =0x0000068D
+ mov r6, #0xa1
+ ldrb r0, [r5, r0]
+ mov r2, #0x4
+ lsl r6, r6, #0x2
+ lsl r0, r0, #0x1c
+ lsr r4, r0, #0x1c
+ add r3, r4, #0x0
+ mov r0, #0x0
+_0207B88E:
+ add r3, r3, r1
+ lsl r3, r3, #0x18
+ asr r3, r3, #0x18
+ bpl _0207B89A
+ add r3, r2, #0x0
+ b _0207B8A0
+_0207B89A:
+ cmp r3, #0x5
+ bne _0207B8A0
+ add r3, r0, #0x0
+_0207B8A0:
+ lsl r7, r3, #0x1
+ add r7, r5, r7
+ ldrh r7, [r7, r6]
+ cmp r7, #0x0
+ bne _0207B8AE
+ cmp r3, #0x4
+ bne _0207B88E
+_0207B8AE:
+ cmp r3, r4
+ beq _0207B8CC
+ ldr r2, _0207B8D4 ; =0x0000068D
+ mov r1, #0xf
+ ldrb r0, [r5, r2]
+ bic r0, r1
+ lsl r1, r3, #0x18
+ lsr r3, r1, #0x18
+ mov r1, #0xf
+ and r1, r3
+ orr r0, r1
+ strb r0, [r5, r2]
+ mov r0, #0x1
+ pop {r4-r7}
+ bx lr
+_0207B8CC:
+ mov r0, #0x0
+ pop {r4-r7}
+ bx lr
+ nop
+_0207B8D4: .word 0x0000068D
+
+ thumb_func_start FUN_0207B8D8
+FUN_0207B8D8: ; 0x0207B8D8
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_0207CBC0
+ ldr r2, _0207B95C ; =0x0000068D
+ ldrb r0, [r4, r2]
+ lsl r0, r0, #0x1c
+ lsr r1, r0, #0x1c
+ cmp r1, #0x4
+ bne _0207B930
+ mov r0, #0x93
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ ldrh r1, [r0, #0x18]
+ cmp r1, #0x0
+ beq _0207B910
+ sub r0, r2, #0x1
+ ldrsb r0, [r4, r0]
+ cmp r0, #0x3
+ bne _0207B908
+ add r0, r4, #0x0
+ bl FUN_0207B960
+ pop {r4, pc}
+_0207B908:
+ add r0, r4, #0x0
+ bl FUN_0207B99C
+ pop {r4, pc}
+_0207B910:
+ sub r0, r2, #0x1
+ ldrsb r0, [r4, r0]
+ cmp r0, #0x3
+ bne _0207B924
+ mov r1, #0x0
+ add r0, r4, #0x0
+ mvn r1, r1
+ bl FUN_0207B960
+ pop {r4, pc}
+_0207B924:
+ mov r1, #0x0
+ add r0, r4, #0x0
+ mvn r1, r1
+ bl FUN_0207B99C
+ pop {r4, pc}
+_0207B930:
+ sub r0, r2, #0x1
+ ldrsb r0, [r4, r0]
+ cmp r0, #0x3
+ bne _0207B94A
+ lsl r1, r1, #0x1
+ add r2, r4, r1
+ mov r1, #0xa1
+ lsl r1, r1, #0x2
+ ldrh r1, [r2, r1]
+ add r0, r4, #0x0
+ bl FUN_0207B960
+ pop {r4, pc}
+_0207B94A:
+ lsl r1, r1, #0x1
+ add r2, r4, r1
+ mov r1, #0xa1
+ lsl r1, r1, #0x2
+ ldrh r1, [r2, r1]
+ add r0, r4, #0x0
+ bl FUN_0207B99C
+ pop {r4, pc}
+ .balign 4
+_0207B95C: .word 0x0000068D
+
+ thumb_func_start FUN_0207B960
+FUN_0207B960: ; 0x0207B960
+ push {r3-r5, lr}
+ mov r2, #0x0
+ add r4, r1, #0x0
+ mvn r2, r2
+ add r5, r0, #0x0
+ cmp r4, r2
+ bne _0207B980
+ bl FUN_0207EC94
+ mov r0, #0x45
+ lsl r0, r0, #0x4
+ ldr r0, [r5, r0]
+ mov r1, #0x0
+ bl FUN_0200C63C
+ pop {r3-r5, pc}
+_0207B980:
+ bl FUN_0207EB64
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0207CB70
+ mov r0, #0x45
+ lsl r0, r0, #0x4
+ ldr r0, [r5, r0]
+ mov r1, #0x1
+ bl FUN_0200C63C
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0207B99C
+FUN_0207B99C: ; 0x0207B99C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_0207BD84
+ mov r0, #0x0
+ mvn r0, r0
+ cmp r4, r0
+ bne _0207B9B6
+ add r0, r5, #0x0
+ bl FUN_0207EEB0
+ pop {r3-r5, pc}
+_0207B9B6:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0207EE2C
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0207B9C0
+FUN_0207B9C0: ; 0x0207B9C0
+ push {r3-r7, lr}
+ add r4, r0, #0x0
+ bl FUN_0207B628
+ mov r1, #0x93
+ lsl r1, r1, #0x2
+ ldr r1, [r4, r1]
+ ldrb r1, [r1, #0x11]
+ cmp r1, #0x2
+ ldr r1, _0207BA70 ; =0x0000068D
+ bne _0207B9E6
+ ldrb r2, [r4, r1]
+ lsl r1, r2, #0x1c
+ lsl r2, r2, #0x18
+ lsr r1, r1, #0x1c
+ lsr r2, r2, #0x1c
+ bl FUN_020698E8
+ b _0207B9F4
+_0207B9E6:
+ ldrb r2, [r4, r1]
+ lsl r1, r2, #0x1c
+ lsl r2, r2, #0x18
+ lsr r1, r1, #0x1c
+ lsr r2, r2, #0x1c
+ bl FUN_020698E0
+_0207B9F4:
+ ldr r0, _0207BA70 ; =0x0000068D
+ mov r1, #0xa1
+ ldrb r6, [r4, r0]
+ lsl r1, r1, #0x2
+ add r5, r4, r1
+ lsl r2, r6, #0x1c
+ lsl r6, r6, #0x18
+ lsr r6, r6, #0x1c
+ lsl r6, r6, #0x1
+ lsr r3, r2, #0x1b
+ add r6, r4, r6
+ ldrh r2, [r5, r3]
+ ldrh r6, [r6, r1]
+ strh r6, [r5, r3]
+ ldrb r3, [r4, r0]
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x1c
+ lsl r3, r3, #0x1
+ add r3, r4, r3
+ strh r2, [r3, r1]
+ add r2, r1, #0x0
+ add r2, #0x8
+ ldrb r6, [r4, r0]
+ add r5, r4, r2
+ lsl r2, r6, #0x1c
+ lsl r6, r6, #0x18
+ lsr r6, r6, #0x1c
+ add r7, r4, r6
+ add r6, r1, #0x0
+ lsr r3, r2, #0x1c
+ add r6, #0x8
+ ldrb r2, [r5, r3]
+ ldrb r6, [r7, r6]
+ strb r6, [r5, r3]
+ ldrb r3, [r4, r0]
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x1c
+ add r5, r4, r3
+ add r3, r1, #0x0
+ add r3, #0x8
+ strb r2, [r5, r3]
+ add r2, r1, #0x0
+ add r2, #0xc
+ ldrb r6, [r4, r0]
+ add r5, r4, r2
+ lsl r2, r6, #0x1c
+ lsl r6, r6, #0x18
+ lsr r6, r6, #0x1c
+ add r7, r4, r6
+ add r6, r1, #0x0
+ lsr r3, r2, #0x1c
+ add r6, #0xc
+ ldrb r2, [r5, r3]
+ ldrb r6, [r7, r6]
+ add r1, #0xc
+ strb r6, [r5, r3]
+ ldrb r0, [r4, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1c
+ add r0, r4, r0
+ strb r2, [r0, r1]
+ pop {r3-r7, pc}
+ .balign 4
+_0207BA70: .word 0x0000068D
+
+ thumb_func_start FUN_0207BA74
+FUN_0207BA74: ; 0x0207BA74
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x85
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_0201958C
+ add r0, r4, #0x0
+ add r0, #0x64
+ bl FUN_0201958C
+ mov r0, #0x81
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_0201958C
+ mov r2, #0x0
+ ldr r0, [r4, #0x0]
+ mov r1, #0x2
+ add r3, r2, #0x0
+ bl FUN_0201AEE4
+ add r0, r4, #0x0
+ bl FUN_0207ECDC
+ add r0, r4, #0x0
+ bl FUN_0207B8D8
+ ldr r0, _0207BAE0 ; =0x00000434
+ mov r1, #0x1
+ ldr r0, [r4, r0]
+ bl FUN_0200C63C
+ add r0, r4, #0x0
+ bl FUN_0207D06C
+ mov r0, #0x26
+ lsl r0, r0, #0x4
+ ldrb r1, [r4, r0]
+ add r0, r0, #0x1
+ ldrb r0, [r4, r0]
+ cmp r1, r0
+ beq _0207BAD4
+ ldr r0, _0207BAE4 ; =0x00000438
+ mov r1, #0x1
+ ldr r0, [r4, r0]
+ bl FUN_0200C63C
+_0207BAD4:
+ ldr r0, _0207BAE8 ; =0x0000042C
+ mov r1, #0x1
+ ldr r0, [r4, r0]
+ bl FUN_020200A0
+ pop {r4, pc}
+ .balign 4
+_0207BAE0: .word 0x00000434
+_0207BAE4: .word 0x00000438
+_0207BAE8: .word 0x0000042C
+
+ thumb_func_start FUN_0207BAEC
+FUN_0207BAEC: ; 0x0207BAEC
+ push {r4, lr}
+ ldr r1, _0207BBE4 ; =0x0000068E
+ add r4, r0, #0x0
+ ldrb r1, [r4, r1]
+ cmp r1, #0x0
+ beq _0207BB02
+ cmp r1, #0x1
+ beq _0207BB6E
+ cmp r1, #0x2
+ beq _0207BB9A
+ b _0207BBDE
+_0207BB02:
+ ldr r0, [r4, #0x0]
+ mov r1, #0x2
+ mov r2, #0x0
+ mov r3, #0x88
+ bl FUN_0201AEE4
+ mov r2, #0x3
+ add r3, r2, #0x0
+ ldr r0, [r4, #0x0]
+ mov r1, #0x2
+ add r3, #0xfd
+ bl FUN_0201AEE4
+ mov r1, #0x0
+ add r0, r4, #0x0
+ mvn r1, r1
+ bl FUN_0207BD84
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_0207C6F0
+ mov r0, #0x85
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_0201958C
+ add r0, r4, #0x0
+ add r0, #0x64
+ bl FUN_0201958C
+ mov r0, #0x81
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_0201958C
+ mov r0, #0x8d
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_0201958C
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_0207CFAC
+ ldr r1, _0207BBE8 ; =0x0000068D
+ mov r0, #0xf
+ ldrb r2, [r4, r1]
+ bic r2, r0
+ strb r2, [r4, r1]
+ mov r2, #0x1
+ add r0, r1, #0x1
+ strb r2, [r4, r0]
+ b _0207BBDE
+_0207BB6E:
+ ldr r0, [r4, #0x0]
+ mov r1, #0x2
+ bl FUN_02017B48
+ cmp r0, #0x40
+ ldr r0, [r4, #0x0]
+ bgt _0207BB8E
+ mov r2, #0x0
+ mov r1, #0x2
+ add r3, r2, #0x0
+ bl FUN_0201AEE4
+ ldr r0, _0207BBE4 ; =0x0000068E
+ mov r1, #0x2
+ strb r1, [r4, r0]
+ b _0207BBDE
+_0207BB8E:
+ mov r1, #0x2
+ add r2, r1, #0x0
+ mov r3, #0x40
+ bl FUN_0201AEE4
+ b _0207BBDE
+_0207BB9A:
+ bl FUN_0207ECDC
+ mov r0, #0x93
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ ldrb r0, [r0, #0x12]
+ cmp r0, #0x1
+ beq _0207BBBE
+ add r0, r4, #0x0
+ mov r1, #0x98
+ bl FUN_0207D924
+ mov r1, #0x8d
+ lsl r1, r1, #0x2
+ add r0, r4, #0x0
+ add r1, r4, r1
+ bl FUN_0207CFAC
+_0207BBBE:
+ add r0, r4, #0x0
+ bl FUN_0207B8D8
+ add r0, r4, #0x0
+ bl FUN_0207D06C
+ add r0, r4, #0x0
+ bl FUN_0207D10C
+ ldr r0, _0207BBEC ; =0x0000042C
+ mov r1, #0x1
+ ldr r0, [r4, r0]
+ bl FUN_020200A0
+ mov r0, #0x1
+ pop {r4, pc}
+_0207BBDE:
+ mov r0, #0x0
+ pop {r4, pc}
+ nop
+_0207BBE4: .word 0x0000068E
+_0207BBE8: .word 0x0000068D
+_0207BBEC: .word 0x0000042C
+
+ thumb_func_start FUN_0207BBF0
+FUN_0207BBF0: ; 0x0207BBF0
+ push {r4, lr}
+ ldr r1, _0207BCBC ; =0x0000068E
+ add r4, r0, #0x0
+ ldrb r1, [r4, r1]
+ cmp r1, #0x0
+ beq _0207BC06
+ cmp r1, #0x1
+ beq _0207BC4E
+ cmp r1, #0x2
+ beq _0207BC7A
+ b _0207BCB6
+_0207BC06:
+ bl FUN_0207D22C
+ ldr r0, _0207BCC0 ; =0x00000454
+ mov r1, #0x0
+ ldr r0, [r4, r0]
+ bl FUN_0200C63C
+ mov r1, #0x0
+ add r0, r4, #0x0
+ mvn r1, r1
+ bl FUN_0207BD84
+ ldr r0, _0207BCC4 ; =0x0000042C
+ mov r1, #0x0
+ ldr r0, [r4, r0]
+ bl FUN_020200A0
+ mov r0, #0x8d
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_0201958C
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_0207CFAC
+ add r0, r4, #0x0
+ bl FUN_0207ED18
+ add r0, r4, #0x0
+ bl FUN_0207EEB0
+ ldr r0, _0207BCBC ; =0x0000068E
+ mov r1, #0x1
+ strb r1, [r4, r0]
+ b _0207BCB6
+_0207BC4E:
+ ldr r0, [r4, #0x0]
+ mov r1, #0x2
+ bl FUN_02017B48
+ cmp r0, #0x80
+ ldr r0, [r4, #0x0]
+ blt _0207BC6E
+ mov r1, #0x2
+ mov r2, #0x0
+ mov r3, #0x88
+ bl FUN_0201AEE4
+ ldr r0, _0207BCBC ; =0x0000068E
+ mov r1, #0x2
+ strb r1, [r4, r0]
+ b _0207BCB6
+_0207BC6E:
+ mov r1, #0x2
+ mov r2, #0x1
+ mov r3, #0x40
+ bl FUN_0201AEE4
+ b _0207BCB6
+_0207BC7A:
+ mov r0, #0x85
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_02019220
+ add r0, r4, #0x0
+ add r0, #0x64
+ bl FUN_02019220
+ mov r0, #0x81
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_02019220
+ add r0, r4, #0x0
+ mov r1, #0x9e
+ bl FUN_0207D924
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_0207C6F0
+ mov r1, #0x8d
+ lsl r1, r1, #0x2
+ add r0, r4, #0x0
+ add r1, r4, r1
+ bl FUN_0207CFAC
+ mov r0, #0x1
+ pop {r4, pc}
+_0207BCB6:
+ mov r0, #0x0
+ pop {r4, pc}
+ nop
+_0207BCBC: .word 0x0000068E
+_0207BCC0: .word 0x00000454
+_0207BCC4: .word 0x0000042C
+
+ thumb_func_start FUN_0207BCC8
+FUN_0207BCC8: ; 0x0207BCC8
+ push {r3-r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ mov r0, #0x2f
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ lsl r6, r2, #0x1
+ add r4, r1, #0x0
+ str r0, [sp, #0x4]
+ add r7, r6, #0x2
+ str r0, [sp, #0x8]
+ mov r0, #0x10
+ str r0, [sp, #0xc]
+ lsl r3, r7, #0x18
+ ldr r0, [r5, #0x0]
+ mov r1, #0x2
+ add r2, r4, #0x0
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ mov r0, #0x2f
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ add r6, r6, #0x3
+ str r0, [sp, #0x8]
+ mov r0, #0x10
+ add r2, r4, #0x1
+ str r0, [sp, #0xc]
+ lsl r2, r2, #0x10
+ lsl r3, r6, #0x18
+ ldr r0, [r5, #0x0]
+ mov r1, #0x2
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ mov r0, #0x30
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ add r2, r4, #0x0
+ str r0, [sp, #0x8]
+ mov r0, #0x10
+ add r2, #0x20
+ str r0, [sp, #0xc]
+ lsl r2, r2, #0x10
+ lsl r3, r7, #0x18
+ ldr r0, [r5, #0x0]
+ mov r1, #0x2
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ mov r0, #0x30
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ mov r0, #0x10
+ add r4, #0x21
+ str r0, [sp, #0xc]
+ lsl r2, r4, #0x10
+ lsl r3, r6, #0x18
+ ldr r0, [r5, #0x0]
+ mov r1, #0x2
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ add sp, #0x10
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0207BD58
+FUN_0207BD58: ; 0x0207BD58
+ push {r4-r6, lr}
+ ldr r6, _0207BD80 ; =0x0000012E
+ add r5, r0, #0x0
+ mov r4, #0x0
+_0207BD60:
+ lsl r2, r4, #0x18
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ lsr r2, r2, #0x18
+ bl FUN_0207BCC8
+ add r0, r4, #0x1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #0x6
+ blo _0207BD60
+ ldr r0, [r5, #0x0]
+ mov r1, #0x2
+ bl FUN_0201AC68
+ pop {r4-r6, pc}
+ .balign 4
+_0207BD80: .word 0x0000012E
+
+ thumb_func_start FUN_0207BD84
+FUN_0207BD84: ; 0x0207BD84
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_0207BD58
+ mov r0, #0x0
+ mvn r0, r0
+ cmp r4, r0
+ beq _0207BDCC
+ add r0, r4, #0x0
+ mov r1, #0xa
+ bl FUN_0206AB18
+ bl FUN_02083114
+ mov r1, #0xa
+ blx _s32_div_f
+ lsl r0, r0, #0x18
+ asr r6, r0, #0x18
+ mov r4, #0x0
+ cmp r6, #0x0
+ ble _0207BDCC
+ mov r7, #0x4b
+ lsl r7, r7, #0x2
+_0207BDB6:
+ lsl r2, r4, #0x18
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ lsr r2, r2, #0x18
+ bl FUN_0207BCC8
+ add r0, r4, #0x1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, r6
+ blt _0207BDB6
+_0207BDCC:
+ ldr r0, [r5, #0x0]
+ mov r1, #0x2
+ bl FUN_0201AC68
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0207BDD8
+FUN_0207BDD8: ; 0x0207BDD8
+ push {r3, lr}
+ ldr r1, _0207BDF0 ; =0x0000068C
+ ldrsb r1, [r0, r1]
+ cmp r1, #0x3
+ bne _0207BDE8
+ bl FUN_0207EC94
+ pop {r3, pc}
+_0207BDE8:
+ bl FUN_0207EEB0
+ pop {r3, pc}
+ nop
+_0207BDF0: .word 0x0000068C
+
+ thumb_func_start FUN_0207BDF4
+FUN_0207BDF4: ; 0x0207BDF4
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_0207ECDC
+ add r0, r4, #0x0
+ bl FUN_0207B8D8
+ add r0, r4, #0x0
+ bl FUN_0207D06C
+ ldr r0, _0207BE5C ; =0x0000068C
+ ldrsb r0, [r4, r0]
+ cmp r0, #0x3
+ bne _0207BE46
+ add r0, r4, #0x0
+ bl FUN_0207D22C
+ ldr r0, _0207BE60 ; =0x00000434
+ mov r1, #0x1
+ ldr r0, [r4, r0]
+ bl FUN_0200C63C
+ mov r0, #0x26
+ lsl r0, r0, #0x4
+ ldrb r1, [r4, r0]
+ add r0, r0, #0x1
+ ldrb r0, [r4, r0]
+ cmp r1, r0
+ beq _0207BE38
+ ldr r0, _0207BE64 ; =0x00000438
+ mov r1, #0x1
+ ldr r0, [r4, r0]
+ bl FUN_0200C63C
+_0207BE38:
+ ldr r0, [r4, #0x0]
+ mov r1, #0x2
+ mov r2, #0x3
+ mov r3, #0x0
+ bl FUN_0201AEE4
+ pop {r4, pc}
+_0207BE46:
+ add r0, r4, #0x0
+ bl FUN_0207D10C
+ mov r2, #0x3
+ add r3, r2, #0x0
+ ldr r0, [r4, #0x0]
+ mov r1, #0x2
+ add r3, #0xfd
+ bl FUN_0201AEE4
+ pop {r4, pc}
+ .balign 4
+_0207BE5C: .word 0x0000068C
+_0207BE60: .word 0x00000434
+_0207BE64: .word 0x00000438
+
+ thumb_func_start FUN_0207BE68
+FUN_0207BE68: ; 0x0207BE68
+ push {r4, lr}
+ ldr r1, _0207BF78 ; =0x0000068E
+ add r4, r0, #0x0
+ ldrb r1, [r4, r1]
+ cmp r1, #0x0
+ beq _0207BE7E
+ cmp r1, #0x1
+ beq _0207BEEA
+ cmp r1, #0x2
+ beq _0207BF16
+ b _0207BF74
+_0207BE7E:
+ mov r1, #0x2
+ add r3, r1, #0x0
+ ldr r0, [r4, #0x0]
+ mov r2, #0x0
+ add r3, #0xfe
+ bl FUN_0201AEE4
+ ldr r0, [r4, #0x0]
+ mov r1, #0x2
+ mov r2, #0x3
+ mov r3, #0x0
+ bl FUN_0201AEE4
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_0207C6F0
+ add r0, r4, #0x0
+ add r0, #0x64
+ bl FUN_0201958C
+ mov r0, #0x81
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_0201958C
+ mov r0, #0x79
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_0201958C
+ mov r0, #0x8d
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_0201958C
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_0201958C
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_0207CFAC
+ ldr r1, _0207BF7C ; =0x00000697
+ mov r2, #0x0
+ strb r2, [r4, r1]
+ add r0, r1, #0x1
+ strb r2, [r4, r0]
+ mov r0, #0x1
+ sub r1, #0x9
+ strb r0, [r4, r1]
+ b _0207BF74
+_0207BEEA:
+ ldr r0, [r4, #0x0]
+ mov r1, #0x2
+ bl FUN_02017B54
+ cmp r0, #0x30
+ ldr r0, [r4, #0x0]
+ blt _0207BF0A
+ mov r1, #0x2
+ mov r2, #0x3
+ mov r3, #0x38
+ bl FUN_0201AEE4
+ ldr r0, _0207BF78 ; =0x0000068E
+ mov r1, #0x2
+ strb r1, [r4, r0]
+ b _0207BF74
+_0207BF0A:
+ mov r1, #0x2
+ mov r2, #0x4
+ mov r3, #0x10
+ bl FUN_0201AEE4
+ b _0207BF74
+_0207BF16:
+ mov r1, #0xb5
+ bl FUN_0207D924
+ mov r1, #0x8d
+ lsl r1, r1, #0x2
+ add r0, r4, #0x0
+ add r1, r4, r1
+ bl FUN_0207CFAC
+ ldr r0, _0207BF80 ; =0x00000514
+ mov r1, #0x1
+ ldr r0, [r4, r0]
+ bl FUN_020200A0
+ mov r0, #0x52
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ mov r1, #0x1
+ bl FUN_020200A0
+ ldr r0, _0207BF84 ; =0x00000504
+ mov r1, #0x0
+ ldr r0, [r4, r0]
+ bl FUN_020200A0
+ ldr r0, _0207BF88 ; =0x00000508
+ mov r1, #0x0
+ ldr r0, [r4, r0]
+ bl FUN_020200A0
+ ldr r0, _0207BF8C ; =0x0000050C
+ mov r1, #0x0
+ ldr r0, [r4, r0]
+ bl FUN_020200A0
+ mov r0, #0x51
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ bl FUN_020200A0
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_0207C07C
+ mov r0, #0x1
+ pop {r4, pc}
+_0207BF74:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+_0207BF78: .word 0x0000068E
+_0207BF7C: .word 0x00000697
+_0207BF80: .word 0x00000514
+_0207BF84: .word 0x00000504
+_0207BF88: .word 0x00000508
+_0207BF8C: .word 0x0000050C
+
+ thumb_func_start FUN_0207BF90
+FUN_0207BF90: ; 0x0207BF90
+ push {r4, lr}
+ ldr r1, _0207C078 ; =0x0000068E
+ add r4, r0, #0x0
+ ldrb r0, [r4, r1]
+ cmp r0, #0x0
+ beq _0207BFA6
+ cmp r0, #0x1
+ beq _0207BFF6
+ cmp r0, #0x2
+ beq _0207C022
+ b _0207C072
+_0207BFA6:
+ add r0, r1, #0x0
+ mov r2, #0x0
+ add r0, #0x9
+ strb r2, [r4, r0]
+ add r1, #0xa
+ mov r0, #0x91
+ strb r2, [r4, r1]
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ add r0, #0x10
+ bl FUN_0201958C
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ add r0, #0x20
+ bl FUN_0201958C
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ add r0, #0x30
+ bl FUN_0201958C
+ mov r0, #0x8d
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_0201958C
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_0207CFAC
+ add r0, r4, #0x0
+ bl FUN_0207D2C8
+ ldr r0, _0207C078 ; =0x0000068E
+ mov r1, #0x1
+ strb r1, [r4, r0]
+ b _0207C072
+_0207BFF6:
+ ldr r0, [r4, #0x0]
+ mov r1, #0x2
+ bl FUN_02017B54
+ cmp r0, #0x8
+ ldr r0, [r4, #0x0]
+ bgt _0207C016
+ mov r1, #0x2
+ mov r2, #0x3
+ mov r3, #0x0
+ bl FUN_0201AEE4
+ ldr r0, _0207C078 ; =0x0000068E
+ mov r1, #0x2
+ strb r1, [r4, r0]
+ b _0207C072
+_0207C016:
+ mov r1, #0x2
+ mov r2, #0x5
+ mov r3, #0x10
+ bl FUN_0201AEE4
+ b _0207C072
+_0207C022:
+ add r0, r4, #0x0
+ add r0, #0x64
+ bl FUN_02019220
+ mov r0, #0x81
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_02019220
+ mov r0, #0x79
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_02019220
+ mov r0, #0x8d
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_02019220
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_02019220
+ add r0, r4, #0x0
+ mov r1, #0xb4
+ bl FUN_0207D924
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_0207C6F0
+ mov r1, #0x8d
+ lsl r1, r1, #0x2
+ add r0, r4, #0x0
+ add r1, r4, r1
+ bl FUN_0207CFAC
+ mov r0, #0x1
+ pop {r4, pc}
+_0207C072:
+ mov r0, #0x0
+ pop {r4, pc}
+ nop
+_0207C078: .word 0x0000068E
+
+ thumb_func_start FUN_0207C07C
+FUN_0207C07C: ; 0x0207C07C
+ push {r4-r6, lr}
+ ldr r2, _0207C1D0 ; =0x00000697
+ add r5, r0, #0x0
+ add r3, r2, #0x1
+ ldrb r0, [r5, r2]
+ ldrb r4, [r5, r3]
+ cmp r1, #0x1
+ bne _0207C0A8
+ mov r1, #0x3
+ and r1, r0
+ cmp r1, #0x3
+ beq _0207C0B6
+ lsl r1, r4, #0x2
+ add r1, r0, r1
+ add r3, r1, #0x1
+ add r1, r2, #0x2
+ ldrb r1, [r5, r1]
+ cmp r3, r1
+ bge _0207C14A
+ add r1, r0, #0x1
+ strb r1, [r5, r2]
+ b _0207C14A
+_0207C0A8:
+ mov r3, #0x0
+ mvn r3, r3
+ cmp r1, r3
+ bne _0207C0BE
+ mov r1, #0x3
+ tst r1, r0
+ bne _0207C0B8
+_0207C0B6:
+ b _0207C1CE
+_0207C0B8:
+ sub r1, r0, #0x1
+ strb r1, [r5, r2]
+ b _0207C14A
+_0207C0BE:
+ cmp r1, #0x4
+ bne _0207C12C
+ cmp r0, #0x4
+ bhs _0207C0F2
+ add r1, r2, #0x2
+ ldrb r3, [r5, r1]
+ lsl r1, r4, #0x2
+ add r1, r0, r1
+ add r1, r1, #0x4
+ cmp r1, r3
+ blt _0207C0EC
+ cmp r3, #0x4
+ bls _0207C14A
+ lsr r1, r3, #0x1f
+ lsl r6, r3, #0x1e
+ sub r6, r6, r1
+ mov r3, #0x1e
+ ror r6, r3
+ add r1, r1, r6
+ beq _0207C14A
+ add r1, r1, #0x3
+ strb r1, [r5, r2]
+ b _0207C14A
+_0207C0EC:
+ add r1, r0, #0x4
+ strb r1, [r5, r2]
+ b _0207C14A
+_0207C0F2:
+ add r1, r2, #0x2
+ ldrb r1, [r5, r1]
+ lsl r3, r4, #0x2
+ add r3, #0x8
+ cmp r3, r1
+ bge _0207C14A
+ add r1, r2, #0x1
+ ldrb r1, [r5, r1]
+ add r6, r2, #0x1
+ add r3, r1, #0x1
+ add r1, r2, #0x1
+ strb r3, [r5, r1]
+ add r1, r2, #0x2
+ ldrb r6, [r5, r6]
+ ldrb r3, [r5, r1]
+ ldrb r1, [r5, r2]
+ lsl r6, r6, #0x2
+ add r1, r1, r6
+ cmp r1, r3
+ blt _0207C14A
+ lsr r1, r3, #0x1f
+ lsl r6, r3, #0x1e
+ sub r6, r6, r1
+ mov r3, #0x1e
+ ror r6, r3
+ add r1, r1, r6
+ add r1, r1, #0x3
+ strb r1, [r5, r2]
+ b _0207C14A
+_0207C12C:
+ sub r3, r3, #0x3
+ cmp r1, r3
+ bne _0207C14A
+ cmp r0, #0x4
+ blo _0207C13C
+ sub r1, r0, #0x4
+ strb r1, [r5, r2]
+ b _0207C14A
+_0207C13C:
+ cmp r4, #0x0
+ beq _0207C14A
+ add r1, r2, #0x1
+ ldrb r1, [r5, r1]
+ sub r3, r1, #0x1
+ add r1, r2, #0x1
+ strb r3, [r5, r1]
+_0207C14A:
+ ldr r1, _0207C1D0 ; =0x00000697
+ ldrb r2, [r5, r1]
+ cmp r0, r2
+ bne _0207C15A
+ add r0, r1, #0x1
+ ldrb r0, [r5, r0]
+ cmp r4, r0
+ beq _0207C160
+_0207C15A:
+ ldr r0, _0207C1D4 ; =0x000005DC
+ bl FUN_020054C8
+_0207C160:
+ ldr r1, _0207C1D0 ; =0x00000697
+ add r0, r5, #0x0
+ ldrb r1, [r5, r1]
+ bl FUN_0207C1E8
+ ldr r1, _0207C1D8 ; =0x0000069A
+ strb r0, [r5, r1]
+ add r0, r5, #0x0
+ bl FUN_0207D3C4
+ ldr r0, _0207C1DC ; =0x00000698
+ ldrb r0, [r5, r0]
+ cmp r4, r0
+ beq _0207C182
+ add r0, r5, #0x0
+ bl FUN_0207D364
+_0207C182:
+ add r0, r5, #0x0
+ bl FUN_0207E9A0
+ add r0, r5, #0x0
+ bl FUN_0207E840
+ ldr r0, _0207C1DC ; =0x00000698
+ ldrb r0, [r5, r0]
+ cmp r0, #0x0
+ ldr r0, _0207C1E0 ; =0x00000518
+ beq _0207C1A2
+ ldr r0, [r5, r0]
+ mov r1, #0x1
+ bl FUN_020200A0
+ b _0207C1AA
+_0207C1A2:
+ ldr r0, [r5, r0]
+ mov r1, #0x0
+ bl FUN_020200A0
+_0207C1AA:
+ ldr r0, _0207C1DC ; =0x00000698
+ ldrb r1, [r5, r0]
+ add r0, r0, #0x1
+ ldrb r0, [r5, r0]
+ lsl r1, r1, #0x2
+ add r1, #0x8
+ cmp r1, r0
+ ldr r0, _0207C1E4 ; =0x0000051C
+ bge _0207C1C6
+ ldr r0, [r5, r0]
+ mov r1, #0x1
+ bl FUN_020200A0
+ pop {r4-r6, pc}
+_0207C1C6:
+ ldr r0, [r5, r0]
+ mov r1, #0x0
+ bl FUN_020200A0
+_0207C1CE:
+ pop {r4-r6, pc}
+ .balign 4
+_0207C1D0: .word 0x00000697
+_0207C1D4: .word 0x000005DC
+_0207C1D8: .word 0x0000069A
+_0207C1DC: .word 0x00000698
+_0207C1E0: .word 0x00000518
+_0207C1E4: .word 0x0000051C
+
+ thumb_func_start FUN_0207C1E8
+FUN_0207C1E8: ; 0x0207C1E8
+ push {r4-r7}
+ ldr r2, _0207C238 ; =0x00000698
+ mov r6, #0x0
+ ldrb r2, [r0, r2]
+ add r4, r6, #0x0
+ lsl r2, r2, #0x2
+ add r1, r1, r2
+ lsl r1, r1, #0x18
+ lsr r5, r1, #0x18
+ mov r1, #0xa9
+ mov r2, #0x1
+ lsl r1, r1, #0x2
+_0207C200:
+ mov r3, #0x1f
+ add r7, r4, #0x0
+ and r7, r3
+ add r3, r2, #0x0
+ lsl r3, r7
+ lsr r7, r4, #0x5
+ lsl r7, r7, #0x2
+ add r7, r0, r7
+ ldr r7, [r7, r1]
+ tst r3, r7
+ beq _0207C228
+ cmp r5, r6
+ bne _0207C222
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ pop {r4-r7}
+ bx lr
+_0207C222:
+ add r3, r6, #0x1
+ lsl r3, r3, #0x18
+ lsr r6, r3, #0x18
+_0207C228:
+ add r3, r4, #0x1
+ lsl r3, r3, #0x10
+ lsr r4, r3, #0x10
+ cmp r4, #0x50
+ blo _0207C200
+ mov r0, #0x0
+ pop {r4-r7}
+ bx lr
+ .balign 4
+_0207C238: .word 0x00000698
+
+ thumb_func_start FUN_0207C23C
+FUN_0207C23C: ; 0x0207C23C
+ push {r4, lr}
+ sub sp, #0x8
+ ldr r1, _0207C29C ; =0x0000029A
+ add r4, r0, #0x0
+ ldrb r0, [r4, r1]
+ cmp r0, #0xff
+ bne _0207C28E
+ mov r0, #0x0
+ sub r1, #0xda
+ mov r2, #0x13
+ bl FUN_02002EEC
+ mov r0, #0x93
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ ldr r0, [r0, #0x4]
+ bl FUN_02025084
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x13
+ str r0, [sp, #0x4]
+ ldr r0, [r4, #0x0]
+ ldr r2, _0207C2A0 ; =0x000003E2
+ mov r1, #0x1
+ mov r3, #0xd
+ bl FUN_0200CD68
+ add r0, r4, #0x0
+ mov r1, #0xff
+ bl FUN_0207EECC
+ mov r0, #0x93
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x1
+ strb r1, [r0, #0x17]
+ add sp, #0x8
+ mov r0, #0x11
+ pop {r4, pc}
+_0207C28E:
+ sub r1, #0x4e
+ ldr r0, [r4, r1]
+ mov r2, #0x0
+ strb r2, [r0, #0x17]
+ mov r0, #0x12
+ add sp, #0x8
+ pop {r4, pc}
+ .balign 4
+_0207C29C: .word 0x0000029A
+_0207C2A0: .word 0x000003E2
+
+ thumb_func_start FUN_0207C2A4
+FUN_0207C2A4: ; 0x0207C2A4
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0202398C
+ str r0, [r5, #0x8]
+ add r0, r4, #0x0
+ bl FUN_020239BC
+ str r0, [r5, #0xc]
+ add r0, r4, #0x0
+ bl FUN_020239CC
+ strb r0, [r5, #0x10]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0207C2C4
+FUN_0207C2C4: ; 0x0207C2C4
+ mov r0, #0x40
+ bx lr
+
+ thumb_func_start FUN_0207C2C8
+FUN_0207C2C8: ; 0x0207C2C8
+ mov r0, #0x41
+ bx lr
+
+ thumb_func_start FUN_0207C2CC
+FUN_0207C2CC: ; 0x0207C2CC
+ mov r0, #0x3f
+ bx lr
+
+ thumb_func_start FUN_0207C2D0
+FUN_0207C2D0: ; 0x0207C2D0
+ mov r0, #0x3e
+ bx lr
+
+ thumb_func_start FUN_0207C2D4
+FUN_0207C2D4: ; 0x0207C2D4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r1, #0x9f
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0xa2
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ bne _0207C2F4
+ mov r0, #0x6
+ pop {r3-r5, pc}
+_0207C2F4:
+ mov r0, #0x88
+ tst r0, r4
+ beq _0207C2FE
+ mov r0, #0x4
+ pop {r3-r5, pc}
+_0207C2FE:
+ mov r0, #0x7
+ add r1, r4, #0x0
+ tst r1, r0
+ beq _0207C30A
+ mov r0, #0x3
+ pop {r3-r5, pc}
+_0207C30A:
+ mov r1, #0x10
+ tst r1, r4
+ beq _0207C314
+ mov r0, #0x5
+ pop {r3-r5, pc}
+_0207C314:
+ mov r1, #0x20
+ tst r1, r4
+ beq _0207C31E
+ mov r0, #0x2
+ pop {r3-r5, pc}
+_0207C31E:
+ mov r1, #0x40
+ tst r1, r4
+ beq _0207C326
+ mov r0, #0x1
+_0207C326:
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0207C328
+FUN_0207C328: ; 0x0207C328
+ push {r3-r7, lr}
+ sub sp, #0x50
+ add r4, r0, #0x0
+ mov r0, #0x10
+ mov r1, #0x1
+ bl FUN_0201E6E4
+ mov r0, #0x10
+ mov r1, #0x1
+ bl FUN_0201E74C
+ mov r0, #0x20
+ mov r1, #0x13
+ bl FUN_0201C24C
+ mov r0, #0x13
+ bl FUN_0200BB14
+ mov r1, #0x1
+ lsl r1, r1, #0xa
+ str r0, [r4, r1]
+ ldr r0, [r4, r1]
+ bl FUN_0200BB34
+ ldr r7, _0207C3C4 ; =0x00000404
+ add r2, sp, #0x30
+ ldr r3, _0207C3C8 ; =0x020FA73C
+ str r0, [r4, r7]
+ ldmia r3!, {r0-r1}
+ add r6, r2, #0x0
+ stmia r2!, {r0-r1}
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldmia r3!, {r0-r1}
+ ldr r5, _0207C3CC ; =0x020FA70C
+ stmia r2!, {r0-r1}
+ add r3, sp, #0x1c
+ ldmia r5!, {r0-r1}
+ add r2, r3, #0x0
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldr r0, [r5, #0x0]
+ add r1, r6, #0x0
+ str r0, [r3, #0x0]
+ sub r0, r7, #0x4
+ ldr r0, [r4, r0]
+ mov r3, #0x20
+ bl FUN_0200BB6C
+ sub r1, r7, #0x4
+ ldr r0, [r4, r1]
+ add r1, r1, #0x4
+ ldr r1, [r4, r1]
+ mov r2, #0x4d
+ bl FUN_0200BBF0
+ ldr r5, _0207C3D0 ; =0x020FA720
+ add r3, sp, #0x0
+ ldmia r5!, {r0-r1}
+ add r2, r3, #0x0
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldr r0, [r5, #0x0]
+ sub r1, r7, #0x4
+ str r0, [r3, #0x0]
+ ldr r0, [r4, r1]
+ add r1, r1, #0x4
+ ldr r1, [r4, r1]
+ bl FUN_0200BD20
+ add sp, #0x50
+ pop {r3-r7, pc}
+ .balign 4
+_0207C3C4: .word 0x00000404
+_0207C3C8: .word 0x020FA73C
+_0207C3CC: .word 0x020FA70C
+_0207C3D0: .word 0x020FA720
+
+ thumb_func_start FUN_0207C3D4
+FUN_0207C3D4: ; 0x0207C3D4
+ push {r4, lr}
+ mov r1, #0x1
+ add r4, r0, #0x0
+ lsl r1, r1, #0xa
+ ldr r0, [r4, r1]
+ add r1, r1, #0x4
+ ldr r1, [r4, r1]
+ bl FUN_0200BCE0
+ mov r0, #0x1
+ lsl r0, r0, #0xa
+ ldr r0, [r4, r0]
+ bl FUN_0200BD04
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0207C3F4
+FUN_0207C3F4: ; 0x0207C3F4
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _0207C438 ; =0x0000045C
+ mov r1, #0x1
+ ldr r0, [r4, r0]
+ lsl r1, r1, #0xc
+ bl FUN_020201E4
+ mov r0, #0x46
+ lsl r0, r0, #0x4
+ mov r1, #0x1
+ ldr r0, [r4, r0]
+ lsl r1, r1, #0xc
+ bl FUN_020201E4
+ ldr r0, _0207C43C ; =0x000004AC
+ mov r1, #0x1
+ ldr r0, [r4, r0]
+ lsl r1, r1, #0xc
+ bl FUN_020201E4
+ ldr r0, _0207C440 ; =0x00000518
+ mov r1, #0x1
+ ldr r0, [r4, r0]
+ lsl r1, r1, #0xc
+ bl FUN_020201E4
+ ldr r0, _0207C444 ; =0x0000051C
+ mov r1, #0x1
+ ldr r0, [r4, r0]
+ lsl r1, r1, #0xc
+ bl FUN_020201E4
+ pop {r4, pc}
+ .balign 4
+_0207C438: .word 0x0000045C
+_0207C43C: .word 0x000004AC
+_0207C440: .word 0x00000518
+_0207C444: .word 0x0000051C
+
+ thumb_func_start FUN_0207C448
+FUN_0207C448: ; 0x0207C448
+ push {r3-r7, lr}
+ ldr r6, _0207C550 ; =0x020FA784
+ ldr r7, _0207C554 ; =0x00000408
+ add r5, r0, #0x0
+ mov r4, #0x0
+_0207C452:
+ mov r0, #0x1
+ ldr r1, _0207C558 ; =0x00000404
+ lsl r0, r0, #0xa
+ mov r2, #0x28
+ mul r2, r4
+ ldr r0, [r5, r0]
+ ldr r1, [r5, r1]
+ add r2, r6, r2
+ bl FUN_0200BE38
+ lsl r1, r4, #0x2
+ add r1, r5, r1
+ str r0, [r1, r7]
+ add r0, r4, #0x1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #0x4d
+ blo _0207C452
+ add r0, r5, #0x0
+ bl FUN_0207C7EC
+ ldr r0, _0207C55C ; =0x0000042C
+ mov r1, #0x0
+ ldr r0, [r5, r0]
+ bl FUN_020200A0
+ mov r0, #0x43
+ lsl r0, r0, #0x4
+ ldr r0, [r5, r0]
+ mov r1, #0x0
+ bl FUN_020200A0
+ ldr r0, _0207C560 ; =0x000004AC
+ mov r1, #0x0
+ ldr r0, [r5, r0]
+ bl FUN_020200A0
+ mov r0, #0x4b
+ lsl r0, r0, #0x4
+ ldr r0, [r5, r0]
+ mov r1, #0x0
+ bl FUN_020200A0
+ ldr r0, _0207C564 ; =0x000004B4
+ mov r1, #0x0
+ ldr r0, [r5, r0]
+ bl FUN_020200A0
+ ldr r0, _0207C568 ; =0x000004B8
+ mov r1, #0x0
+ ldr r0, [r5, r0]
+ bl FUN_020200A0
+ ldr r0, _0207C56C ; =0x000004BC
+ mov r1, #0x0
+ ldr r0, [r5, r0]
+ bl FUN_020200A0
+ mov r0, #0x13
+ lsl r0, r0, #0x6
+ ldr r0, [r5, r0]
+ mov r1, #0x0
+ bl FUN_020200A0
+ ldr r0, _0207C570 ; =0x000004C4
+ mov r1, #0x0
+ ldr r0, [r5, r0]
+ bl FUN_020200A0
+ ldr r0, _0207C574 ; =0x000004C8
+ mov r1, #0x0
+ ldr r0, [r5, r0]
+ bl FUN_020200A0
+ ldr r0, _0207C578 ; =0x000004CC
+ mov r1, #0x0
+ ldr r0, [r5, r0]
+ bl FUN_020200A0
+ mov r0, #0x4d
+ lsl r0, r0, #0x4
+ ldr r0, [r5, r0]
+ mov r1, #0x0
+ bl FUN_020200A0
+ ldr r0, _0207C57C ; =0x000004D4
+ mov r1, #0x0
+ ldr r0, [r5, r0]
+ bl FUN_020200A0
+ ldr r0, _0207C580 ; =0x000004D8
+ mov r1, #0x0
+ ldr r0, [r5, r0]
+ bl FUN_020200A0
+ ldr r0, _0207C584 ; =0x00000524
+ mov r1, #0x0
+ ldr r0, [r5, r0]
+ bl FUN_020200A0
+ ldr r0, _0207C588 ; =0x00000528
+ mov r1, #0x0
+ ldr r0, [r5, r0]
+ bl FUN_020200A0
+ ldr r0, _0207C58C ; =0x0000052C
+ mov r1, #0x0
+ ldr r0, [r5, r0]
+ bl FUN_020200A0
+ mov r0, #0x53
+ lsl r0, r0, #0x4
+ ldr r0, [r5, r0]
+ mov r1, #0x0
+ bl FUN_020200A0
+ ldr r0, _0207C590 ; =0x00000534
+ mov r1, #0x0
+ ldr r0, [r5, r0]
+ bl FUN_020200A0
+ ldr r0, _0207C594 ; =0x00000538
+ mov r1, #0x0
+ ldr r0, [r5, r0]
+ bl FUN_020200A0
+ pop {r3-r7, pc}
+ .balign 4
+_0207C550: .word 0x020FA784
+_0207C554: .word 0x00000408
+_0207C558: .word 0x00000404
+_0207C55C: .word 0x0000042C
+_0207C560: .word 0x000004AC
+_0207C564: .word 0x000004B4
+_0207C568: .word 0x000004B8
+_0207C56C: .word 0x000004BC
+_0207C570: .word 0x000004C4
+_0207C574: .word 0x000004C8
+_0207C578: .word 0x000004CC
+_0207C57C: .word 0x000004D4
+_0207C580: .word 0x000004D8
+_0207C584: .word 0x00000524
+_0207C588: .word 0x00000528
+_0207C58C: .word 0x0000052C
+_0207C590: .word 0x00000534
+_0207C594: .word 0x00000538
+
+ thumb_func_start FUN_0207C598
+FUN_0207C598: ; 0x0207C598
+ push {r4-r6, lr}
+ mov r5, #0x0
+ add r6, r0, #0x0
+ add r4, r5, #0x0
+_0207C5A0:
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ bl FUN_0207B070
+ cmp r0, #0x0
+ beq _0207C5B2
+ add r0, r5, #0x1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+_0207C5B2:
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0x8
+ blo _0207C5A0
+ sub r0, r5, #0x1
+ lsl r1, r0, #0x4
+ add r1, #0x18
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r1, r0, #0x1
+ mov r0, #0xbc
+ sub r0, r0, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0207C5D4
+FUN_0207C5D4: ; 0x0207C5D4
+ push {r3-r7, lr}
+ sub sp, #0x10
+ add r7, r0, #0x0
+ bl FUN_0207C598
+ str r0, [sp, #0x4]
+ ldr r0, _0207C69C ; =0x00000408
+ mov r5, #0x0
+ add r4, r7, r0
+ ldr r0, [sp, #0x4]
+ str r5, [sp, #0x8]
+ str r0, [sp, #0x0]
+ add r0, #0x18
+ str r0, [sp, #0x0]
+_0207C5F0:
+ add r0, r7, #0x0
+ add r1, r5, #0x0
+ bl FUN_0207B070
+ cmp r0, #0x0
+ bne _0207C608
+ lsl r0, r5, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ bl FUN_020200A0
+ b _0207C68E
+_0207C608:
+ lsl r6, r5, #0x2
+ ldr r0, [r4, r6]
+ bl FUN_020201DC
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ ldr r0, _0207C6A0 ; =0x0000068C
+ ldrsb r0, [r7, r0]
+ cmp r0, r5
+ bne _0207C62A
+ cmp r1, #0x8
+ bhs _0207C636
+ ldr r0, [r4, r6]
+ add r1, #0x8
+ bl FUN_02020130
+ b _0207C636
+_0207C62A:
+ cmp r1, #0x8
+ blo _0207C636
+ ldr r0, [r4, r6]
+ sub r1, #0x8
+ bl FUN_02020130
+_0207C636:
+ add r1, sp, #0xc
+ ldr r0, [r4, r6]
+ add r1, #0x2
+ add r2, sp, #0xc
+ bl FUN_0200C75C
+ ldr r0, _0207C6A0 ; =0x0000068C
+ ldrsb r0, [r7, r0]
+ cmp r0, r5
+ blt _0207C652
+ ldr r0, [sp, #0x8]
+ lsl r1, r0, #0x4
+ ldr r0, [sp, #0x4]
+ b _0207C65A
+_0207C652:
+ ldr r0, [sp, #0x8]
+ sub r0, r0, #0x1
+ lsl r1, r0, #0x4
+ ldr r0, [sp, #0x0]
+_0207C65A:
+ add r0, r0, r1
+ lsl r0, r0, #0x10
+ asr r1, r0, #0x10
+ add r0, sp, #0xc
+ strh r1, [r0, #0x2]
+ lsl r0, r5, #0x2
+ add r1, r7, r0
+ ldr r0, _0207C69C ; =0x00000408
+ add r2, sp, #0xc
+ ldr r0, [r1, r0]
+ mov r1, #0x2
+ ldrsh r1, [r2, r1]
+ add r3, r2, #0x0
+ mov r2, #0x0
+ ldrsh r2, [r3, r2]
+ bl FUN_0200C6E4
+ ldr r0, [r4, r6]
+ mov r1, #0x1
+ bl FUN_020200A0
+ ldr r0, [sp, #0x8]
+ add r0, r0, #0x1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x8]
+_0207C68E:
+ add r0, r5, #0x1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #0x8
+ blo _0207C5F0
+ add sp, #0x10
+ pop {r3-r7, pc}
+ .balign 4
+_0207C69C: .word 0x00000408
+_0207C6A0: .word 0x0000068C
+
+ thumb_func_start FUN_0207C6A4
+FUN_0207C6A4: ; 0x0207C6A4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_0207B09C
+ cmp r0, #0x1
+ bhi _0207C6B8
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_0207C6F0
+_0207C6B8:
+ add r0, r5, #0x0
+ bl FUN_0207C598
+ add r4, r0, #0x0
+ ldr r0, _0207C6EC ; =0x0000045C
+ add r1, r4, #0x0
+ sub r1, #0xc
+ lsl r1, r1, #0x10
+ ldr r0, [r5, r0]
+ asr r1, r1, #0x10
+ mov r2, #0x18
+ bl FUN_0200C6E4
+ mov r1, #0x5d
+ mov r0, #0x46
+ lsl r1, r1, #0x2
+ lsl r0, r0, #0x4
+ sub r1, r1, r4
+ lsl r1, r1, #0x10
+ ldr r0, [r5, r0]
+ asr r1, r1, #0x10
+ mov r2, #0x18
+ bl FUN_0200C6E4
+ pop {r3-r5, pc}
+ nop
+_0207C6EC: .word 0x0000045C
+
+ thumb_func_start FUN_0207C6F0
+FUN_0207C6F0: ; 0x0207C6F0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_0207B09C
+ cmp r0, #0x1
+ bhi _0207C700
+ mov r4, #0x0
+_0207C700:
+ ldr r0, _0207C718 ; =0x0000045C
+ add r1, r4, #0x0
+ ldr r0, [r5, r0]
+ bl FUN_020200A0
+ mov r0, #0x46
+ lsl r0, r0, #0x4
+ ldr r0, [r5, r0]
+ add r1, r4, #0x0
+ bl FUN_020200A0
+ pop {r3-r5, pc}
+ .balign 4
+_0207C718: .word 0x0000045C
+
+ thumb_func_start FUN_0207C71C
+FUN_0207C71C: ; 0x0207C71C
+ push {r4, lr}
+ sub sp, #0x8
+ add r4, r0, #0x0
+ ldr r0, _0207C774 ; =0x00000263
+ ldrb r0, [r4, r0]
+ lsl r0, r0, #0x18
+ lsr r3, r0, #0x1a
+ bne _0207C730
+ mov r3, #0x15
+ b _0207C732
+_0207C730:
+ add r3, #0x14
+_0207C732:
+ mov r0, #0x0
+ mov r1, #0x1
+ str r0, [sp, #0x0]
+ lsl r1, r1, #0xa
+ str r0, [sp, #0x4]
+ ldr r0, [r4, r1]
+ add r1, r1, #0x4
+ ldr r1, [r4, r1]
+ mov r2, #0x27
+ bl FUN_0200C9D8
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x6
+ mov r1, #0x1
+ ldr r3, _0207C774 ; =0x00000263
+ str r0, [sp, #0x4]
+ ldrb r3, [r4, r3]
+ lsl r1, r1, #0xa
+ ldr r0, [r4, r1]
+ add r1, r1, #0x4
+ lsl r3, r3, #0x18
+ ldr r1, [r4, r1]
+ lsr r4, r3, #0x1a
+ ldr r3, _0207C778 ; =0x020FA6F8
+ mov r2, #0x27
+ ldrb r3, [r3, r4]
+ add r3, #0x25
+ bl FUN_0200CA0C
+ add sp, #0x8
+ pop {r4, pc}
+ nop
+_0207C774: .word 0x00000263
+_0207C778: .word 0x020FA6F8
+
+ thumb_func_start FUN_0207C77C
+FUN_0207C77C: ; 0x0207C77C
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x2a
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ lsl r0, r0, #0x4
+ lsr r0, r0, #0x4
+ cmp r0, #0x7
+ bne _0207C7A4
+ ldr r0, _0207C7E4 ; =0x00000458
+ mov r1, #0x0
+ ldr r0, [r4, r0]
+ bl FUN_020200A0
+ ldr r0, _0207C7E8 ; =0x00000538
+ mov r1, #0x0
+ ldr r0, [r4, r0]
+ bl FUN_020200A0
+ pop {r4, pc}
+_0207C7A4:
+ cmp r0, #0x0
+ ldr r0, _0207C7E8 ; =0x00000538
+ beq _0207C7D0
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ bl FUN_020200A0
+ ldr r0, _0207C7E4 ; =0x00000458
+ mov r1, #0x1
+ ldr r0, [r4, r0]
+ bl FUN_020200A0
+ mov r1, #0x2a
+ lsl r1, r1, #0x4
+ ldr r0, _0207C7E4 ; =0x00000458
+ ldr r1, [r4, r1]
+ ldr r0, [r4, r0]
+ lsl r1, r1, #0x4
+ lsr r1, r1, #0x4
+ bl FUN_02020130
+ pop {r4, pc}
+_0207C7D0:
+ ldr r0, [r4, r0]
+ mov r1, #0x1
+ bl FUN_020200A0
+ ldr r0, _0207C7E4 ; =0x00000458
+ mov r1, #0x0
+ ldr r0, [r4, r0]
+ bl FUN_020200A0
+ pop {r4, pc}
+ .balign 4
+_0207C7E4: .word 0x00000458
+_0207C7E8: .word 0x00000538
+
+ thumb_func_start FUN_0207C7EC
+FUN_0207C7EC: ; 0x0207C7EC
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ bl FUN_0207CA44
+ mov r6, #0xa1
+ mov r4, #0x0
+ mov r7, #0x3
+ lsl r6, r6, #0x2
+_0207C7FC:
+ lsl r0, r4, #0x1
+ add r0, r5, r0
+ ldrh r0, [r0, r6]
+ cmp r0, #0x0
+ beq _0207C826
+ add r1, r7, #0x0
+ bl FUN_0206AB18
+ add r3, r0, #0x0
+ add r1, r4, #0x0
+ add r1, #0xd
+ add r2, r4, #0x5
+ lsl r1, r1, #0x18
+ lsl r2, r2, #0x18
+ lsl r3, r3, #0x18
+ add r0, r5, #0x0
+ lsr r1, r1, #0x18
+ lsr r2, r2, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_0207CA6C
+_0207C826:
+ add r0, r4, #0x1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #0x4
+ blo _0207C7FC
+ add r0, r5, #0x0
+ bl FUN_0207CFEC
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0207C838
+FUN_0207C838: ; 0x0207C838
+ push {r3-r7, lr}
+ ldr r6, _0207CA2C ; =0x00000408
+ add r5, r0, #0x0
+ mov r4, #0xb
+ mov r7, #0x0
+_0207C842:
+ lsl r0, r4, #0x2
+ add r0, r5, r0
+ ldr r0, [r0, r6]
+ add r1, r7, #0x0
+ bl FUN_0200C63C
+ add r0, r4, #0x1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #0x13
+ bls _0207C842
+ ldr r0, _0207CA30 ; =0x0000068C
+ ldrsb r0, [r5, r0]
+ cmp r0, #0x0
+ beq _0207C86C
+ cmp r0, #0x3
+ beq _0207C8B4
+ cmp r0, #0x5
+ bne _0207C86A
+ b _0207C96E
+_0207C86A:
+ pop {r3-r7, pc}
+_0207C86C:
+ ldr r0, _0207CA34 ; =0x00000434
+ mov r1, #0x1
+ ldr r0, [r5, r0]
+ bl FUN_0200C63C
+ mov r0, #0x26
+ lsl r0, r0, #0x4
+ ldrb r1, [r5, r0]
+ add r0, r0, #0x1
+ ldrb r0, [r5, r0]
+ cmp r1, r0
+ ldr r0, _0207CA34 ; =0x00000434
+ bne _0207C892
+ ldr r0, [r5, r0]
+ mov r1, #0xd8
+ mov r2, #0x50
+ bl FUN_0200C6E4
+ pop {r3-r7, pc}
+_0207C892:
+ ldr r0, [r5, r0]
+ mov r1, #0xc7
+ mov r2, #0x50
+ bl FUN_0200C6E4
+ ldr r0, _0207CA38 ; =0x00000438
+ mov r1, #0x1
+ ldr r0, [r5, r0]
+ bl FUN_0200C63C
+ ldr r0, _0207CA38 ; =0x00000438
+ mov r1, #0xe9
+ ldr r0, [r5, r0]
+ mov r2, #0x50
+ bl FUN_0200C6E4
+ pop {r3-r7, pc}
+_0207C8B4:
+ mov r7, #0xa1
+ mov r4, #0x0
+ lsl r7, r7, #0x2
+_0207C8BA:
+ lsl r0, r4, #0x1
+ add r0, r5, r0
+ ldrh r0, [r0, r7]
+ cmp r0, #0x0
+ beq _0207C904
+ mov r1, #0x3
+ bl FUN_0206AB18
+ add r3, r0, #0x0
+ add r1, r4, #0x0
+ add r1, #0xd
+ add r2, r4, #0x5
+ lsl r1, r1, #0x18
+ lsl r2, r2, #0x18
+ lsl r3, r3, #0x18
+ add r0, r5, #0x0
+ lsr r1, r1, #0x18
+ lsr r2, r2, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_0207CA6C
+ lsl r0, r4, #0x2
+ add r6, r5, r0
+ ldr r0, _0207CA3C ; =0x0000043C
+ mov r1, #0x1
+ ldr r0, [r6, r0]
+ bl FUN_0200C63C
+ ldr r0, _0207CA3C ; =0x0000043C
+ lsl r2, r4, #0x5
+ add r2, #0x2a
+ lsl r2, r2, #0x10
+ ldr r0, [r6, r0]
+ mov r1, #0x97
+ asr r2, r2, #0x10
+ bl FUN_0200C6E4
+_0207C904:
+ add r0, r4, #0x1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #0x4
+ blo _0207C8BA
+ mov r0, #0x93
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ ldrh r0, [r0, #0x18]
+ cmp r0, #0x0
+ beq _0207C946
+ mov r1, #0x3
+ bl FUN_0206AB18
+ add r3, r0, #0x0
+ lsl r3, r3, #0x18
+ add r0, r5, #0x0
+ mov r1, #0x11
+ mov r2, #0x9
+ lsr r3, r3, #0x18
+ bl FUN_0207CA6C
+ ldr r0, _0207CA40 ; =0x0000044C
+ mov r1, #0x1
+ ldr r0, [r5, r0]
+ bl FUN_0200C63C
+ ldr r0, _0207CA40 ; =0x0000044C
+ mov r1, #0x97
+ ldr r0, [r5, r0]
+ mov r2, #0xaa
+ bl FUN_0200C6E4
+_0207C946:
+ ldr r0, _0207CA34 ; =0x00000434
+ mov r1, #0x3f
+ ldr r0, [r5, r0]
+ mov r2, #0x34
+ bl FUN_0200C6E4
+ ldr r0, _0207CA38 ; =0x00000438
+ mov r1, #0x61
+ ldr r0, [r5, r0]
+ mov r2, #0x34
+ bl FUN_0200C6E4
+ mov r0, #0x45
+ lsl r0, r0, #0x4
+ ldr r0, [r5, r0]
+ mov r1, #0x6c
+ mov r2, #0x48
+ bl FUN_0200C6E4
+ pop {r3-r7, pc}
+_0207C96E:
+ mov r7, #0xa1
+ mov r4, #0x0
+ lsl r7, r7, #0x2
+_0207C974:
+ lsl r0, r4, #0x1
+ add r0, r5, r0
+ ldrh r0, [r0, r7]
+ cmp r0, #0x0
+ beq _0207C9C0
+ mov r1, #0xb
+ bl FUN_0206AB18
+ add r3, r0, #0x0
+ add r1, r4, #0x0
+ add r1, #0xd
+ add r2, r4, #0x5
+ add r3, #0x12
+ lsl r1, r1, #0x18
+ lsl r2, r2, #0x18
+ lsl r3, r3, #0x18
+ add r0, r5, #0x0
+ lsr r1, r1, #0x18
+ lsr r2, r2, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_0207CA6C
+ lsl r0, r4, #0x2
+ add r6, r5, r0
+ ldr r0, _0207CA3C ; =0x0000043C
+ mov r1, #0x1
+ ldr r0, [r6, r0]
+ bl FUN_0200C63C
+ ldr r0, _0207CA3C ; =0x0000043C
+ lsl r2, r4, #0x5
+ add r2, #0x2a
+ lsl r2, r2, #0x10
+ ldr r0, [r6, r0]
+ mov r1, #0x97
+ asr r2, r2, #0x10
+ bl FUN_0200C6E4
+_0207C9C0:
+ add r0, r4, #0x1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #0x4
+ blo _0207C974
+ mov r0, #0x93
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ ldrh r0, [r0, #0x18]
+ cmp r0, #0x0
+ beq _0207CA04
+ mov r1, #0xb
+ bl FUN_0206AB18
+ add r3, r0, #0x0
+ add r3, #0x12
+ lsl r3, r3, #0x18
+ add r0, r5, #0x0
+ mov r1, #0x11
+ mov r2, #0x9
+ lsr r3, r3, #0x18
+ bl FUN_0207CA6C
+ ldr r0, _0207CA40 ; =0x0000044C
+ mov r1, #0x1
+ ldr r0, [r5, r0]
+ bl FUN_0200C63C
+ ldr r0, _0207CA40 ; =0x0000044C
+ mov r1, #0x97
+ ldr r0, [r5, r0]
+ mov r2, #0xaa
+ bl FUN_0200C6E4
+_0207CA04:
+ ldr r0, _0207CA34 ; =0x00000434
+ mov r1, #0x3f
+ ldr r0, [r5, r0]
+ mov r2, #0x34
+ bl FUN_0200C6E4
+ ldr r0, _0207CA38 ; =0x00000438
+ mov r1, #0x61
+ ldr r0, [r5, r0]
+ mov r2, #0x34
+ bl FUN_0200C6E4
+ mov r0, #0x45
+ lsl r0, r0, #0x4
+ ldr r0, [r5, r0]
+ mov r1, #0x6c
+ mov r2, #0x48
+ bl FUN_0200C6E4
+ pop {r3-r7, pc}
+ .balign 4
+_0207CA2C: .word 0x00000408
+_0207CA30: .word 0x0000068C
+_0207CA34: .word 0x00000434
+_0207CA38: .word 0x00000438
+_0207CA3C: .word 0x0000043C
+_0207CA40: .word 0x0000044C
+
+ thumb_func_start FUN_0207CA44
+FUN_0207CA44: ; 0x0207CA44
+ push {r4, lr}
+ mov r3, #0x26
+ add r4, r0, #0x0
+ lsl r3, r3, #0x4
+ ldrb r3, [r4, r3]
+ mov r1, #0xb
+ mov r2, #0x3
+ bl FUN_0207CA6C
+ ldr r3, _0207CA68 ; =0x00000261
+ add r0, r4, #0x0
+ ldrb r3, [r4, r3]
+ mov r1, #0xc
+ mov r2, #0x4
+ bl FUN_0207CA6C
+ pop {r4, pc}
+ nop
+_0207CA68: .word 0x00000261
+
+ thumb_func_start FUN_0207CA6C
+FUN_0207CA6C: ; 0x0207CA6C
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r7, r3, #0x0
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_0206E12C
+ str r0, [sp, #0x8]
+ add r0, r7, #0x0
+ bl FUN_0206E0F0
+ add r3, r0, #0x0
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ ldr r1, _0207CAB4 ; =0x00000404
+ str r6, [sp, #0x4]
+ lsl r0, r0, #0xa
+ ldr r0, [r5, r0]
+ ldr r1, [r5, r1]
+ ldr r2, [sp, #0x8]
+ bl FUN_0200C9D8
+ add r0, r7, #0x0
+ bl FUN_0206E114
+ add r2, r0, #0x0
+ lsl r0, r4, #0x2
+ add r1, r5, r0
+ ldr r0, _0207CAB8 ; =0x00000408
+ ldr r0, [r1, r0]
+ add r1, r2, #0x3
+ bl FUN_0200C664
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+_0207CAB4: .word 0x00000404
+_0207CAB8: .word 0x00000408
+
+ thumb_func_start FUN_0207CABC
+FUN_0207CABC: ; 0x0207CABC
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ add r0, r1, #0x0
+ ldrb r0, [r0, #0x0]
+ str r1, [sp, #0x0]
+ str r2, [sp, #0x4]
+ lsl r0, r0, #0x5
+ add r0, #0x2a
+ lsl r0, r0, #0x10
+ add r4, r3, #0x0
+ asr r7, r0, #0x10
+ mov r6, #0x0
+_0207CAD6:
+ ldr r0, _0207CB04 ; =0x0000043C
+ ldr r1, [sp, #0x4]
+ ldr r0, [r5, r0]
+ add r2, r4, #0x0
+ bl FUN_0200C75C
+ mov r0, #0x0
+ ldrsh r0, [r4, r0]
+ cmp r7, r0
+ bne _0207CAF2
+ ldr r0, [sp, #0x0]
+ add sp, #0x8
+ strb r6, [r0, #0x0]
+ pop {r3-r7, pc}
+_0207CAF2:
+ add r0, r6, #0x1
+ lsl r0, r0, #0x10
+ asr r6, r0, #0x10
+ add r5, r5, #0x4
+ cmp r6, #0x4
+ blt _0207CAD6
+ add sp, #0x8
+ pop {r3-r7, pc}
+ nop
+_0207CB04: .word 0x0000043C
+
+ thumb_func_start FUN_0207CB08
+FUN_0207CB08: ; 0x0207CB08
+ push {r0-r3}
+ push {r4, lr}
+ sub sp, #0x8
+ add r2, sp, #0x4
+ add r1, sp, #0x14
+ add r2, #0x2
+ add r3, sp, #0x4
+ add r4, r0, #0x0
+ bl FUN_0207CABC
+ add r2, sp, #0x0
+ add r0, r4, #0x0
+ add r1, sp, #0x18
+ add r2, #0x2
+ add r3, sp, #0x0
+ bl FUN_0207CABC
+ add r0, sp, #0x10
+ ldrb r0, [r0, #0x4]
+ add r3, sp, #0x0
+ mov r2, #0x0
+ add r0, #0xd
+ lsl r0, r0, #0x2
+ add r1, r4, r0
+ ldr r0, _0207CB6C ; =0x00000408
+ ldrsh r2, [r3, r2]
+ ldr r0, [r1, r0]
+ mov r1, #0x2
+ ldrsh r1, [r3, r1]
+ bl FUN_0200C6E4
+ add r0, sp, #0x10
+ ldrb r0, [r0, #0x8]
+ add r3, sp, #0x0
+ mov r2, #0x4
+ add r0, #0xd
+ lsl r0, r0, #0x2
+ add r1, r4, r0
+ ldr r0, _0207CB6C ; =0x00000408
+ ldrsh r2, [r3, r2]
+ ldr r0, [r1, r0]
+ mov r1, #0x6
+ ldrsh r1, [r3, r1]
+ bl FUN_0200C6E4
+ add sp, #0x8
+ pop {r4}
+ pop {r3}
+ add sp, #0x10
+ bx r3
+ .balign 4
+_0207CB6C: .word 0x00000408
+
+ thumb_func_start FUN_0207CB70
+FUN_0207CB70: ; 0x0207CB70
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ add r0, r1, #0x0
+ mov r1, #0x1
+ bl FUN_0206AB18
+ add r4, r0, #0x0
+ bl FUN_0206E2A8
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0206E278
+ mov r1, #0x1
+ add r3, r0, #0x0
+ str r1, [sp, #0x0]
+ mov r0, #0xa
+ str r0, [sp, #0x4]
+ lsl r0, r1, #0xa
+ ldr r1, _0207CBBC ; =0x00000404
+ ldr r0, [r5, r0]
+ ldr r1, [r5, r1]
+ add r2, r6, #0x0
+ bl FUN_0200C9D8
+ add r0, r4, #0x0
+ bl FUN_0206E290
+ add r1, r0, #0x0
+ mov r0, #0x45
+ lsl r0, r0, #0x4
+ ldr r0, [r5, r0]
+ add r1, r1, #0x3
+ bl FUN_0200C664
+ add sp, #0x8
+ pop {r4-r6, pc}
+ .balign 4
+_0207CBBC: .word 0x00000404
+
+ thumb_func_start FUN_0207CBC0
+FUN_0207CBC0: ; 0x0207CBC0
+ ldr r2, _0207CBDC ; =0x0000068D
+ add r3, r0, #0x0
+ ldrb r2, [r3, r2]
+ ldr r0, _0207CBE0 ; =0x0000042C
+ mov r1, #0xc2
+ lsl r2, r2, #0x1c
+ lsr r2, r2, #0x1c
+ lsl r2, r2, #0x5
+ ldr r0, [r3, r0]
+ add r2, #0x30
+ lsl r2, r2, #0x10
+ ldr r3, _0207CBE4 ; =FUN_0200C6E4
+ asr r2, r2, #0x10
+ bx r3
+ .balign 4
+_0207CBDC: .word 0x0000068D
+_0207CBE0: .word 0x0000042C
+_0207CBE4: .word FUN_0200C6E4
+
+ thumb_func_start FUN_0207CBE8
+FUN_0207CBE8: ; 0x0207CBE8
+ push {r3-r4, lr}
+ sub sp, #0x4
+ add r4, r0, #0x0
+ ldr r0, _0207CC20 ; =0x0000042C
+ add r1, sp, #0x0
+ ldr r0, [r4, r0]
+ add r1, #0x2
+ add r2, sp, #0x0
+ bl FUN_0200C75C
+ mov r0, #0x43
+ lsl r0, r0, #0x4
+ add r3, sp, #0x0
+ mov r1, #0x2
+ mov r2, #0x0
+ ldrsh r1, [r3, r1]
+ ldrsh r2, [r3, r2]
+ ldr r0, [r4, r0]
+ bl FUN_0200C6E4
+ mov r0, #0x43
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ mov r1, #0x1
+ bl FUN_020200A0
+ add sp, #0x4
+ pop {r3-r4, pc}
+ .balign 4
+_0207CC20: .word 0x0000042C
+
+ thumb_func_start FUN_0207CC24
+FUN_0207CC24: ; 0x0207CC24
+ push {r3-r7, lr}
+ mov r2, #0x69
+ lsl r2, r2, #0x4
+ mov r1, #0x0
+ strb r1, [r0, r2]
+ add r3, r2, #0x3
+ strb r1, [r0, r3]
+ add r3, r2, #0x2
+ strb r1, [r0, r3]
+ ldr r3, _0207CC80 ; =0x0000029A
+ ldrb r3, [r0, r3]
+ cmp r3, #0x0
+ bne _0207CC44
+ add r2, r2, #0x1
+ strb r1, [r0, r2]
+ b _0207CC5A
+_0207CC44:
+ cmp r3, #0xff
+ bne _0207CC50
+ mov r3, #0xc
+ add r1, r2, #0x1
+ strb r3, [r0, r1]
+ b _0207CC5A
+_0207CC50:
+ mov r1, #0xc
+ mul r1, r3
+ asr r3, r1, #0x8
+ add r1, r2, #0x1
+ strb r3, [r0, r1]
+_0207CC5A:
+ ldr r7, _0207CC84 ; =0x00000408
+ add r5, r0, #0x0
+ mov r4, #0x1d
+ add r5, #0x74
+ add r6, r7, #0x0
+_0207CC64:
+ ldr r0, [r5, r7]
+ mov r1, #0x0
+ bl FUN_020200A0
+ ldr r0, [r5, r6]
+ mov r1, #0x0
+ bl FUN_02020208
+ add r4, r4, #0x1
+ add r5, r5, #0x4
+ cmp r4, #0x28
+ bls _0207CC64
+ pop {r3-r7, pc}
+ nop
+_0207CC80: .word 0x0000029A
+_0207CC84: .word 0x00000408
+
+ thumb_func_start FUN_0207CC88
+FUN_0207CC88: ; 0x0207CC88
+ push {r3-r7, lr}
+ add r4, r0, #0x0
+ ldr r0, _0207CE38 ; =0x0000068C
+ ldrsb r1, [r4, r0]
+ cmp r1, #0x4
+ bne _0207CC9C
+ add r1, r0, #0x5
+ ldrb r1, [r4, r1]
+ cmp r1, #0x0
+ bne _0207CC9E
+_0207CC9C:
+ b _0207CE34
+_0207CC9E:
+ add r2, r0, #0x4
+ ldrb r2, [r4, r2]
+ cmp r2, #0x4
+ bhi _0207CCCC
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_0207CCB2: ; jump table (using 16-bit offset)
+ .short _0207CCBC - _0207CCB2 - 2; case 0
+ .short _0207CCE0 - _0207CCB2 - 2; case 1
+ .short _0207CD50 - _0207CCB2 - 2; case 2
+ .short _0207CD70 - _0207CCB2 - 2; case 3
+ .short _0207CDCA - _0207CCB2 - 2; case 4
+_0207CCBC:
+ add r1, r0, #0x7
+ ldrb r1, [r4, r1]
+ add r2, r1, #0x1
+ add r1, r0, #0x7
+ strb r2, [r4, r1]
+ ldrb r1, [r4, r1]
+ cmp r1, #0x8
+ beq _0207CCCE
+_0207CCCC:
+ b _0207CDE8
+_0207CCCE:
+ mov r2, #0x1
+ add r1, r0, #0x4
+ strb r2, [r4, r1]
+ add r1, r0, #0x7
+ mov r2, #0x0
+ strb r2, [r4, r1]
+ add r0, r0, #0x6
+ strb r2, [r4, r0]
+ b _0207CDE8
+_0207CCE0:
+ add r1, r0, #0x7
+ ldrb r1, [r4, r1]
+ cmp r1, #0x0
+ bne _0207CD3E
+ add r0, r0, #0x6
+ ldrb r0, [r4, r0]
+ add r0, #0x1d
+ lsl r0, r0, #0x2
+ add r1, r4, r0
+ ldr r0, _0207CE3C ; =0x00000408
+ ldr r0, [r1, r0]
+ mov r1, #0x1
+ bl FUN_020200A0
+ ldr r0, _0207CE40 ; =0x00000692
+ ldrb r0, [r4, r0]
+ add r0, #0x1d
+ lsl r0, r0, #0x2
+ add r1, r4, r0
+ ldr r0, _0207CE3C ; =0x00000408
+ ldr r0, [r1, r0]
+ mov r1, #0x0
+ bl FUN_02020208
+ ldr r0, _0207CE40 ; =0x00000692
+ ldrb r0, [r4, r0]
+ add r0, #0x1d
+ lsl r0, r0, #0x2
+ add r1, r4, r0
+ ldr r0, _0207CE3C ; =0x00000408
+ ldr r0, [r1, r0]
+ mov r1, #0x0
+ bl FUN_02020130
+ ldr r0, _0207CE40 ; =0x00000692
+ ldrb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, r0]
+ sub r1, r0, #0x1
+ ldrb r2, [r4, r0]
+ ldrb r1, [r4, r1]
+ cmp r2, r1
+ bne _0207CD3E
+ mov r1, #0x2
+ sub r0, r0, #0x2
+ strb r1, [r4, r0]
+ b _0207CDE8
+_0207CD3E:
+ ldr r0, _0207CE44 ; =0x00000693
+ mov r1, #0xa
+ ldrb r0, [r4, r0]
+ add r0, r0, #0x1
+ blx _s32_div_f
+ ldr r0, _0207CE44 ; =0x00000693
+ strb r1, [r4, r0]
+ b _0207CDE8
+_0207CD50:
+ add r1, #0x1c
+ lsl r0, r1, #0x2
+ add r1, r4, r0
+ ldr r0, _0207CE3C ; =0x00000408
+ ldr r0, [r1, r0]
+ bl FUN_02020128
+ cmp r0, #0x0
+ bne _0207CDE8
+ ldr r0, _0207CE44 ; =0x00000693
+ mov r1, #0x0
+ strb r1, [r4, r0]
+ mov r1, #0x3
+ sub r0, r0, #0x3
+ strb r1, [r4, r0]
+ b _0207CDE8
+_0207CD70:
+ add r1, r0, #0x7
+ ldrb r1, [r4, r1]
+ add r2, r1, #0x1
+ add r1, r0, #0x7
+ strb r2, [r4, r1]
+ ldrb r1, [r4, r1]
+ cmp r1, #0x20
+ bne _0207CDE8
+ add r0, r0, #0x5
+ ldrb r0, [r4, r0]
+ mov r6, #0x1d
+ add r0, #0x1d
+ cmp r0, #0x1d
+ bls _0207CDBC
+ add r5, r4, #0x0
+ ldr r7, _0207CE48 ; =0x00000691
+ add r5, #0x74
+_0207CD92:
+ ldr r0, _0207CE3C ; =0x00000408
+ mov r1, #0x1
+ ldr r0, [r5, r0]
+ bl FUN_020200A0
+ ldr r0, _0207CE3C ; =0x00000408
+ mov r1, #0x0
+ ldr r0, [r5, r0]
+ bl FUN_02020208
+ ldr r0, _0207CE3C ; =0x00000408
+ mov r1, #0x0
+ ldr r0, [r5, r0]
+ bl FUN_02020130
+ ldrb r0, [r4, r7]
+ add r6, r6, #0x1
+ add r5, r5, #0x4
+ add r0, #0x1d
+ cmp r6, r0
+ blo _0207CD92
+_0207CDBC:
+ ldr r0, _0207CE44 ; =0x00000693
+ mov r1, #0x0
+ strb r1, [r4, r0]
+ mov r1, #0x4
+ sub r0, r0, #0x3
+ strb r1, [r4, r0]
+ b _0207CDE8
+_0207CDCA:
+ add r1, r0, #0x7
+ ldrb r1, [r4, r1]
+ add r2, r1, #0x1
+ add r1, r0, #0x7
+ strb r2, [r4, r1]
+ ldrb r1, [r4, r1]
+ cmp r1, #0x20
+ bne _0207CDE8
+ mov r2, #0x0
+ add r1, r0, #0x4
+ strb r2, [r4, r1]
+ add r1, r0, #0x7
+ strb r2, [r4, r1]
+ add r0, r0, #0x6
+ strb r2, [r4, r0]
+_0207CDE8:
+ ldr r0, _0207CE48 ; =0x00000691
+ mov r6, #0x1d
+ ldrb r0, [r4, r0]
+ add r0, #0x1d
+ cmp r0, #0x1d
+ bls _0207CE34
+ add r5, r4, #0x0
+ ldr r7, _0207CE3C ; =0x00000408
+ add r5, #0x74
+_0207CDFA:
+ ldr r0, [r5, r7]
+ bl FUN_02020128
+ cmp r0, #0x0
+ beq _0207CE26
+ ldr r0, _0207CE3C ; =0x00000408
+ mov r1, #0x1
+ ldr r0, [r5, r0]
+ lsl r1, r1, #0xc
+ bl FUN_020201E4
+ ldr r0, _0207CE3C ; =0x00000408
+ ldr r0, [r5, r0]
+ bl FUN_0202022C
+ cmp r0, #0x6
+ bne _0207CE26
+ ldr r0, _0207CE3C ; =0x00000408
+ mov r1, #0x0
+ ldr r0, [r5, r0]
+ bl FUN_020200A0
+_0207CE26:
+ ldr r0, _0207CE48 ; =0x00000691
+ add r6, r6, #0x1
+ ldrb r0, [r4, r0]
+ add r5, r5, #0x4
+ add r0, #0x1d
+ cmp r6, r0
+ blo _0207CDFA
+_0207CE34:
+ pop {r3-r7, pc}
+ nop
+_0207CE38: .word 0x0000068C
+_0207CE3C: .word 0x00000408
+_0207CE40: .word 0x00000692
+_0207CE44: .word 0x00000693
+_0207CE48: .word 0x00000691
+
+ thumb_func_start FUN_0207CE4C
+FUN_0207CE4C: ; 0x0207CE4C
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ mov r4, #0x0
+ add r5, r6, #0x0
+ mov r7, #0x1
+_0207CE56:
+ mov r0, #0xa7
+ lsl r0, r0, #0x2
+ ldrh r1, [r6, r0]
+ add r0, r7, #0x0
+ lsl r0, r4
+ tst r0, r1
+ ldr r0, _0207CED4 ; =0x00000464
+ beq _0207CE70
+ ldr r0, [r5, r0]
+ add r1, r7, #0x0
+ bl FUN_02020130
+ b _0207CE78
+_0207CE70:
+ ldr r0, [r5, r0]
+ mov r1, #0x0
+ bl FUN_02020130
+_0207CE78:
+ add r4, r4, #0x1
+ add r5, r5, #0x4
+ cmp r4, #0x6
+ blo _0207CE56
+ mov r0, #0x2a
+ lsl r0, r0, #0x4
+ ldr r0, [r6, r0]
+ lsl r1, r0, #0x2
+ lsr r1, r1, #0x1f
+ cmp r1, #0x1
+ bne _0207CEA0
+ lsl r0, r0, #0x3
+ lsr r0, r0, #0x1f
+ bne _0207CEA0
+ ldr r0, _0207CED8 ; =0x000004DC
+ mov r1, #0x1
+ ldr r0, [r6, r0]
+ bl FUN_0200C63C
+ b _0207CEAA
+_0207CEA0:
+ ldr r0, _0207CED8 ; =0x000004DC
+ mov r1, #0x0
+ ldr r0, [r6, r0]
+ bl FUN_0200C63C
+_0207CEAA:
+ mov r0, #0x2a
+ lsl r0, r0, #0x4
+ ldr r0, [r6, r0]
+ lsr r0, r0, #0x1e
+ cmp r0, #0x2
+ bne _0207CEC4
+ mov r0, #0x4e
+ lsl r0, r0, #0x4
+ ldr r0, [r6, r0]
+ mov r1, #0x1
+ bl FUN_0200C63C
+ pop {r3-r7, pc}
+_0207CEC4:
+ mov r0, #0x4e
+ lsl r0, r0, #0x4
+ ldr r0, [r6, r0]
+ mov r1, #0x0
+ bl FUN_0200C63C
+ pop {r3-r7, pc}
+ nop
+_0207CED4: .word 0x00000464
+_0207CED8: .word 0x000004DC
+
+ thumb_func_start FUN_0207CEDC
+FUN_0207CEDC: ; 0x0207CEDC
+ push {r3-r4, lr}
+ sub sp, #0x4
+ add r4, r0, #0x0
+ ldr r0, _0207CF50 ; =0x000004AC
+ mov r1, #0x1
+ ldr r0, [r4, r0]
+ bl FUN_020200A0
+ ldr r0, _0207CF50 ; =0x000004AC
+ mov r1, #0x0
+ ldr r0, [r4, r0]
+ bl FUN_02020208
+ ldr r0, _0207CF50 ; =0x000004AC
+ mov r1, #0x0
+ ldr r0, [r4, r0]
+ bl FUN_02020130
+ add r1, sp, #0x0
+ add r0, r4, #0x0
+ add r1, #0x2
+ add r2, sp, #0x0
+ bl FUN_0207FC04
+ ldr r0, _0207CF54 ; =0x0000068F
+ add r3, sp, #0x0
+ ldrb r0, [r4, r0]
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1c
+ ldr r0, _0207CF50 ; =0x000004AC
+ bne _0207CF32
+ mov r2, #0x0
+ ldrsh r2, [r3, r2]
+ mov r1, #0x2
+ ldrsh r1, [r3, r1]
+ add r2, #0xc0
+ lsl r2, r2, #0x10
+ ldr r0, [r4, r0]
+ asr r2, r2, #0x10
+ bl FUN_0200C6E4
+ add sp, #0x4
+ pop {r3-r4, pc}
+_0207CF32:
+ mov r1, #0x2
+ mov r2, #0x0
+ ldrsh r1, [r3, r1]
+ ldrsh r2, [r3, r2]
+ ldr r0, [r4, r0]
+ sub r1, r1, #0x4
+ add r2, #0xc0
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0x10
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ bl FUN_0200C6E4
+ add sp, #0x4
+ pop {r3-r4, pc}
+ .balign 4
+_0207CF50: .word 0x000004AC
+_0207CF54: .word 0x0000068F
+
+ thumb_func_start FUN_0207CF58
+FUN_0207CF58: ; 0x0207CF58
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _0207CF74 ; =0x000004AC
+ ldr r0, [r4, r0]
+ bl FUN_0202022C
+ cmp r0, #0x2
+ bne _0207CF72
+ ldr r0, _0207CF74 ; =0x000004AC
+ mov r1, #0x0
+ ldr r0, [r4, r0]
+ bl FUN_020200A0
+_0207CF72:
+ pop {r4, pc}
+ .balign 4
+_0207CF74: .word 0x000004AC
+
+ thumb_func_start FUN_0207CF78
+FUN_0207CF78: ; 0x0207CF78
+ push {r3-r7, lr}
+ ldr r7, _0207CFA8 ; =0x0000068E
+ add r5, r0, #0x0
+ mov r4, #0x0
+ mov r6, #0x1
+_0207CF82:
+ add r0, r6, #0x0
+ ldrb r1, [r5, r7]
+ lsl r0, r4
+ tst r0, r1
+ beq _0207CF9C
+ lsl r0, r4, #0x2
+ add r1, r5, r0
+ mov r0, #0x4b
+ lsl r0, r0, #0x4
+ ldr r0, [r1, r0]
+ add r1, r6, #0x0
+ bl FUN_020200A0
+_0207CF9C:
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0x5
+ blo _0207CF82
+ pop {r3-r7, pc}
+ .balign 4
+_0207CFA8: .word 0x0000068E
+
+ thumb_func_start FUN_0207CFAC
+FUN_0207CFAC: ; 0x0207CFAC
+ push {r4, lr}
+ add r4, r0, #0x0
+ cmp r1, #0x0
+ bne _0207CFC0
+ ldr r0, _0207CFE8 ; =0x000004C4
+ mov r1, #0x0
+ ldr r0, [r4, r0]
+ bl FUN_020200A0
+ pop {r4, pc}
+_0207CFC0:
+ add r0, r1, #0x0
+ bl FUN_0201AB14
+ add r1, r0, #0x0
+ ldr r0, _0207CFE8 ; =0x000004C4
+ lsl r1, r1, #0x3
+ sub r1, #0xa
+ lsl r1, r1, #0x10
+ ldr r0, [r4, r0]
+ asr r1, r1, #0x10
+ mov r2, #0x8
+ bl FUN_0200C6E4
+ ldr r0, _0207CFE8 ; =0x000004C4
+ mov r1, #0x1
+ ldr r0, [r4, r0]
+ bl FUN_020200A0
+ pop {r4, pc}
+ nop
+_0207CFE8: .word 0x000004C4
+
+ thumb_func_start FUN_0207CFEC
+FUN_0207CFEC: ; 0x0207CFEC
+ push {r4, lr}
+ sub sp, #0x8
+ add r4, r0, #0x0
+ bl FUN_0207B628
+ mov r1, #0x93
+ lsl r1, r1, #0x2
+ ldr r1, [r4, r1]
+ ldrb r1, [r1, #0x11]
+ cmp r1, #0x2
+ bne _0207D008
+ bl FUN_0206B688
+ b _0207D00C
+_0207D008:
+ bl FUN_0206B6C8
+_0207D00C:
+ add r3, r0, #0x0
+ mov r0, #0x0
+ mov r1, #0x1
+ str r0, [sp, #0x0]
+ mov r0, #0xb
+ lsl r1, r1, #0xa
+ str r0, [sp, #0x4]
+ ldr r0, [r4, r1]
+ add r1, r1, #0x4
+ ldr r1, [r4, r1]
+ mov r2, #0x13
+ bl FUN_0200C9D8
+ mov r2, #0x97
+ lsl r2, r2, #0x2
+ add r1, r2, #0x0
+ ldrh r0, [r4, r2]
+ add r2, #0x44
+ add r1, #0x42
+ ldr r2, [r4, r2]
+ ldrh r1, [r4, r1]
+ lsl r2, r2, #0x3
+ lsr r2, r2, #0x1f
+ bl FUN_0206B7BC
+ add r1, r0, #0x0
+ ldr r0, _0207D068 ; =0x00000454
+ add r1, r1, #0x7
+ ldr r0, [r4, r0]
+ bl FUN_0200C664
+ mov r0, #0x97
+ lsl r0, r0, #0x2
+ ldrh r0, [r4, r0]
+ mov r1, #0x1c
+ bl FUN_02068678
+ add r2, r0, #0x0
+ ldr r0, _0207D068 ; =0x00000454
+ mov r1, #0x1
+ ldr r0, [r4, r0]
+ eor r1, r2
+ bl FUN_02020100
+ add sp, #0x8
+ pop {r4, pc}
+ .balign 4
+_0207D068: .word 0x00000454
+
+ thumb_func_start FUN_0207D06C
+FUN_0207D06C: ; 0x0207D06C
+ push {r4, lr}
+ sub sp, #0x8
+ add r4, r0, #0x0
+ bl FUN_0206B888
+ add r3, r0, #0x0
+ mov r0, #0x0
+ mov r1, #0x1
+ str r0, [sp, #0x0]
+ mov r0, #0x5
+ lsl r1, r1, #0xa
+ str r0, [sp, #0x4]
+ ldr r0, [r4, r1]
+ add r1, r1, #0x4
+ ldr r1, [r4, r1]
+ mov r2, #0x13
+ bl FUN_0200CA0C
+ ldr r0, _0207D0C0 ; =0x0000068C
+ ldrsb r0, [r4, r0]
+ cmp r0, #0x3
+ ldr r0, _0207D0C4 ; =0x00000454
+ bne _0207D0A6
+ ldr r0, [r4, r0]
+ mov r1, #0x18
+ mov r2, #0x30
+ bl FUN_0200C6E4
+ b _0207D0B0
+_0207D0A6:
+ ldr r0, [r4, r0]
+ mov r1, #0x20
+ mov r2, #0x44
+ bl FUN_0200C6E4
+_0207D0B0:
+ ldr r0, _0207D0C4 ; =0x00000454
+ mov r1, #0x1
+ ldr r0, [r4, r0]
+ bl FUN_0200C63C
+ add sp, #0x8
+ pop {r4, pc}
+ nop
+_0207D0C0: .word 0x0000068C
+_0207D0C4: .word 0x00000454
+
+ thumb_func_start FUN_0207D0C8
+FUN_0207D0C8: ; 0x0207D0C8
+ push {r4, lr}
+ add r4, r2, #0x0
+ cmp r4, r1
+ ble _0207D0EE
+ add r0, #0x2c
+ sub r1, r4, r1
+ mul r1, r0
+ lsl r0, r1, #0x10
+ mov r1, #0x4b
+ lsl r1, r1, #0x2
+ blx _u32_div_f
+ lsr r0, r0, #0x10
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ sub r0, r4, r0
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ pop {r4, pc}
+_0207D0EE:
+ add r0, #0x2c
+ sub r1, r1, r4
+ mul r1, r0
+ lsl r0, r1, #0x10
+ mov r1, #0x4b
+ lsl r1, r1, #0x2
+ blx _u32_div_f
+ lsr r0, r0, #0x10
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add r0, r4, r0
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ pop {r4, pc}
+
+ thumb_func_start FUN_0207D10C
+FUN_0207D10C: ; 0x0207D10C
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ ldr r0, _0207D20C ; =0x00000295
+ mov r1, #0x58
+ ldrb r0, [r4, r0]
+ add r2, r1, #0x0
+ bl FUN_0207D0C8
+ add r5, r0, #0x0
+ ldr r0, _0207D20C ; =0x00000295
+ mov r1, #0x31
+ ldrb r0, [r4, r0]
+ mov r2, #0x49
+ bl FUN_0207D0C8
+ add r2, r0, #0x0
+ ldr r0, _0207D210 ; =0x000004C8
+ add r1, r5, #0x0
+ ldr r0, [r4, r0]
+ bl FUN_0200C6E4
+ ldr r0, _0207D214 ; =0x00000296
+ mov r1, #0x6e
+ ldrb r0, [r4, r0]
+ mov r2, #0x58
+ bl FUN_0207D0C8
+ add r5, r0, #0x0
+ ldr r0, _0207D214 ; =0x00000296
+ mov r1, #0x41
+ ldrb r0, [r4, r0]
+ mov r2, #0x49
+ bl FUN_0207D0C8
+ add r2, r0, #0x0
+ ldr r0, _0207D218 ; =0x000004CC
+ add r1, r5, #0x0
+ ldr r0, [r4, r0]
+ bl FUN_0200C6E4
+ ldr r0, _0207D21C ; =0x00000297
+ mov r1, #0x67
+ ldrb r0, [r4, r0]
+ mov r2, #0x58
+ bl FUN_0207D0C8
+ add r5, r0, #0x0
+ ldr r0, _0207D21C ; =0x00000297
+ mov r1, #0x5c
+ ldrb r0, [r4, r0]
+ mov r2, #0x49
+ bl FUN_0207D0C8
+ add r2, r0, #0x0
+ mov r0, #0x4d
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ add r1, r5, #0x0
+ bl FUN_0200C6E4
+ mov r0, #0xa6
+ lsl r0, r0, #0x2
+ ldrb r0, [r4, r0]
+ mov r1, #0x48
+ mov r2, #0x57
+ bl FUN_0207D0C8
+ add r5, r0, #0x0
+ mov r0, #0xa6
+ lsl r0, r0, #0x2
+ ldrb r0, [r4, r0]
+ mov r1, #0x5c
+ mov r2, #0x49
+ bl FUN_0207D0C8
+ add r2, r0, #0x0
+ ldr r0, _0207D220 ; =0x000004D4
+ add r1, r5, #0x0
+ ldr r0, [r4, r0]
+ bl FUN_0200C6E4
+ ldr r0, _0207D224 ; =0x00000299
+ mov r1, #0x41
+ ldrb r0, [r4, r0]
+ mov r2, #0x57
+ bl FUN_0207D0C8
+ add r5, r0, #0x0
+ ldr r0, _0207D224 ; =0x00000299
+ mov r1, #0x41
+ ldrb r0, [r4, r0]
+ mov r2, #0x49
+ bl FUN_0207D0C8
+ add r2, r0, #0x0
+ ldr r0, _0207D228 ; =0x000004D8
+ add r1, r5, #0x0
+ ldr r0, [r4, r0]
+ bl FUN_0200C6E4
+ ldr r0, _0207D210 ; =0x000004C8
+ mov r1, #0x1
+ ldr r0, [r4, r0]
+ bl FUN_020200A0
+ ldr r0, _0207D218 ; =0x000004CC
+ mov r1, #0x1
+ ldr r0, [r4, r0]
+ bl FUN_020200A0
+ mov r0, #0x4d
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ mov r1, #0x1
+ bl FUN_020200A0
+ ldr r0, _0207D220 ; =0x000004D4
+ mov r1, #0x1
+ ldr r0, [r4, r0]
+ bl FUN_020200A0
+ ldr r0, _0207D228 ; =0x000004D8
+ mov r1, #0x1
+ ldr r0, [r4, r0]
+ bl FUN_020200A0
+ pop {r3-r5, pc}
+ nop
+_0207D20C: .word 0x00000295
+_0207D210: .word 0x000004C8
+_0207D214: .word 0x00000296
+_0207D218: .word 0x000004CC
+_0207D21C: .word 0x00000297
+_0207D220: .word 0x000004D4
+_0207D224: .word 0x00000299
+_0207D228: .word 0x000004D8
+
+ thumb_func_start FUN_0207D22C
+FUN_0207D22C: ; 0x0207D22C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _0207D268 ; =0x000004C8
+ mov r1, #0x0
+ ldr r0, [r4, r0]
+ bl FUN_020200A0
+ ldr r0, _0207D26C ; =0x000004CC
+ mov r1, #0x0
+ ldr r0, [r4, r0]
+ bl FUN_020200A0
+ mov r0, #0x4d
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ bl FUN_020200A0
+ ldr r0, _0207D270 ; =0x000004D4
+ mov r1, #0x0
+ ldr r0, [r4, r0]
+ bl FUN_020200A0
+ ldr r0, _0207D274 ; =0x000004D8
+ mov r1, #0x0
+ ldr r0, [r4, r0]
+ bl FUN_020200A0
+ pop {r4, pc}
+ nop
+_0207D268: .word 0x000004C8
+_0207D26C: .word 0x000004CC
+_0207D270: .word 0x000004D4
+_0207D274: .word 0x000004D8
+
+ thumb_func_start FUN_0207D278
+FUN_0207D278: ; 0x0207D278
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r6, r1, #0x0
+ add r5, r0, #0x0
+ add r0, r6, #0x0
+ mov r1, #0x1
+ add r4, r2, #0x0
+ bl FUN_0207FC5C
+ add r3, r0, #0x0
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0x1
+ add r0, #0x1a
+ lsl r1, r1, #0xa
+ str r0, [sp, #0x4]
+ ldr r0, [r5, r1]
+ add r1, r1, #0x4
+ ldr r1, [r5, r1]
+ mov r2, #0x27
+ bl FUN_0200C9D8
+ add r0, r6, #0x0
+ mov r1, #0x2
+ bl FUN_0207FC5C
+ add r4, #0x37
+ add r2, r0, #0x0
+ lsl r0, r4, #0x2
+ add r1, r5, r0
+ ldr r0, _0207D2C4 ; =0x00000408
+ ldr r0, [r1, r0]
+ add r1, r2, #0x7
+ bl FUN_0200C664
+ add sp, #0x8
+ pop {r4-r6, pc}
+ .balign 4
+_0207D2C4: .word 0x00000408
+
+ thumb_func_start FUN_0207D2C8
+FUN_0207D2C8: ; 0x0207D2C8
+ push {r3-r7, lr}
+ sub sp, #0x8
+ ldr r6, _0207D354 ; =0x00000408
+ add r5, r0, #0x0
+ mov r4, #0x37
+ mov r7, #0x0
+_0207D2D4:
+ lsl r0, r4, #0x2
+ add r0, r5, r0
+ ldr r0, [r0, r6]
+ add r1, r7, #0x0
+ bl FUN_020200A0
+ add r0, r4, #0x1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #0x46
+ bls _0207D2D4
+ ldr r0, _0207D358 ; =0x0000068C
+ ldrsb r0, [r5, r0]
+ cmp r0, #0x6
+ bne _0207D350
+ mov r0, #0x0
+ mov r1, #0x1
+ str r0, [sp, #0x0]
+ mov r0, #0x5
+ lsl r1, r1, #0xa
+ str r0, [sp, #0x4]
+ ldr r0, [r5, r1]
+ add r1, r1, #0x4
+ ldr r1, [r5, r1]
+ mov r2, #0x27
+ mov r3, #0x88
+ bl FUN_0200CA0C
+ ldr r7, _0207D35C ; =0x000004E4
+ ldr r6, _0207D360 ; =0x00000699
+ mov r4, #0x0
+_0207D312:
+ ldrb r0, [r5, r6]
+ cmp r4, r0
+ bge _0207D33A
+ lsl r0, r4, #0x2
+ add r0, r5, r0
+ ldr r0, [r0, r7]
+ mov r1, #0x1
+ bl FUN_020200A0
+ lsl r1, r4, #0x18
+ add r0, r5, #0x0
+ lsr r1, r1, #0x18
+ bl FUN_0207C1E8
+ lsl r2, r4, #0x18
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ lsr r2, r2, #0x18
+ bl FUN_0207D278
+_0207D33A:
+ add r0, r4, #0x1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #0xc
+ blo _0207D312
+ mov r0, #0x52
+ lsl r0, r0, #0x4
+ ldr r0, [r5, r0]
+ mov r1, #0x0
+ bl FUN_02020130
+_0207D350:
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+_0207D354: .word 0x00000408
+_0207D358: .word 0x0000068C
+_0207D35C: .word 0x000004E4
+_0207D360: .word 0x00000699
+
+ thumb_func_start FUN_0207D364
+FUN_0207D364: ; 0x0207D364
+ push {r3-r7, lr}
+ ldr r7, _0207D3BC ; =0x00000698
+ add r5, r0, #0x0
+ mov r4, #0x0
+ add r6, r7, #0x1
+_0207D36E:
+ ldrb r0, [r5, r7]
+ lsl r0, r0, #0x2
+ add r1, r4, r0
+ ldrb r0, [r5, r6]
+ cmp r1, r0
+ bge _0207D3A0
+ lsl r0, r4, #0x2
+ add r1, r5, r0
+ ldr r0, _0207D3C0 ; =0x000004E4
+ ldr r0, [r1, r0]
+ mov r1, #0x1
+ bl FUN_020200A0
+ lsl r1, r4, #0x18
+ add r0, r5, #0x0
+ lsr r1, r1, #0x18
+ bl FUN_0207C1E8
+ lsl r2, r4, #0x18
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ lsr r2, r2, #0x18
+ bl FUN_0207D278
+ b _0207D3AE
+_0207D3A0:
+ lsl r0, r4, #0x2
+ add r1, r5, r0
+ ldr r0, _0207D3C0 ; =0x000004E4
+ ldr r0, [r1, r0]
+ mov r1, #0x0
+ bl FUN_020200A0
+_0207D3AE:
+ add r0, r4, #0x1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #0x8
+ blo _0207D36E
+ pop {r3-r7, pc}
+ nop
+_0207D3BC: .word 0x00000698
+_0207D3C0: .word 0x000004E4
+
+ thumb_func_start FUN_0207D3C4
+FUN_0207D3C4: ; 0x0207D3C4
+ ldr r1, _0207D3E8 ; =0x00000697
+ ldrb r2, [r0, r1]
+ ldr r1, _0207D3EC ; =0x00000514
+ ldr r0, [r0, r1]
+ lsl r1, r2, #0x1e
+ lsr r3, r2, #0x2
+ mov r2, #0x28
+ mul r2, r3
+ lsr r1, r1, #0x19
+ add r1, #0x84
+ add r2, #0x38
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0x10
+ ldr r3, _0207D3F0 ; =FUN_0200C6E4
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ bx r3
+ nop
+_0207D3E8: .word 0x00000697
+_0207D3EC: .word 0x00000514
+_0207D3F0: .word FUN_0200C6E4
+
+ thumb_func_start FUN_0207D3F4
+FUN_0207D3F4: ; 0x0207D3F4
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x52
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ bl FUN_02020128
+ cmp r0, #0x1
+ bne _0207D414
+ mov r0, #0x52
+ lsl r0, r0, #0x4
+ mov r1, #0x1
+ ldr r0, [r4, r0]
+ lsl r1, r1, #0xc
+ bl FUN_020201E4
+_0207D414:
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0207D418
+FUN_0207D418: ; 0x0207D418
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ cmp r1, #0x0
+ bne _0207D43E
+ mov r4, #0x0
+ ldr r6, _0207D4C0 ; =0x00000524
+ add r7, r4, #0x0
+_0207D426:
+ lsl r0, r4, #0x2
+ add r0, r5, r0
+ ldr r0, [r0, r6]
+ add r1, r7, #0x0
+ bl FUN_020200A0
+ add r0, r4, #0x1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #0x5
+ blo _0207D426
+ pop {r3-r7, pc}
+_0207D43E:
+ ldr r0, _0207D4C4 ; =0x00000295
+ ldrb r1, [r5, r0]
+ add r0, r0, #0x1
+ ldrb r0, [r5, r0]
+ add r4, r1, #0x0
+ cmp r1, r0
+ bge _0207D44E
+ add r4, r0, #0x0
+_0207D44E:
+ ldr r0, _0207D4C8 ; =0x00000297
+ ldrb r0, [r5, r0]
+ cmp r4, r0
+ bge _0207D458
+ add r4, r0, #0x0
+_0207D458:
+ mov r0, #0xa6
+ lsl r0, r0, #0x2
+ ldrb r0, [r5, r0]
+ cmp r4, r0
+ bge _0207D464
+ add r4, r0, #0x0
+_0207D464:
+ ldr r0, _0207D4CC ; =0x00000299
+ ldrb r0, [r5, r0]
+ cmp r4, r0
+ bge _0207D46E
+ add r4, r0, #0x0
+_0207D46E:
+ ldr r0, _0207D4C0 ; =0x00000524
+ ldr r3, _0207D4D0 ; =0x020FA75C
+ ldr r0, [r5, r0]
+ add r2, r4, #0x0
+ bl FUN_0207D4F4
+ ldr r1, _0207D4D4 ; =0x00000296
+ ldr r0, _0207D4D8 ; =0x00000528
+ ldrb r1, [r5, r1]
+ ldr r0, [r5, r0]
+ ldr r3, _0207D4DC ; =0x020FA764
+ add r2, r4, #0x0
+ bl FUN_0207D4F4
+ ldr r1, _0207D4C8 ; =0x00000297
+ ldr r0, _0207D4E0 ; =0x0000052C
+ ldrb r1, [r5, r1]
+ ldr r0, [r5, r0]
+ ldr r3, _0207D4E4 ; =0x020FA76C
+ add r2, r4, #0x0
+ bl FUN_0207D4F4
+ mov r1, #0x53
+ lsl r1, r1, #0x4
+ ldr r0, [r5, r1]
+ lsr r1, r1, #0x1
+ ldrb r1, [r5, r1]
+ ldr r3, _0207D4E8 ; =0x020FA774
+ add r2, r4, #0x0
+ bl FUN_0207D4F4
+ ldr r1, _0207D4CC ; =0x00000299
+ ldr r0, _0207D4EC ; =0x00000534
+ ldrb r1, [r5, r1]
+ ldr r0, [r5, r0]
+ ldr r3, _0207D4F0 ; =0x020FA77C
+ add r2, r4, #0x0
+ bl FUN_0207D4F4
+ pop {r3-r7, pc}
+ nop
+_0207D4C0: .word 0x00000524
+_0207D4C4: .word 0x00000295
+_0207D4C8: .word 0x00000297
+_0207D4CC: .word 0x00000299
+_0207D4D0: .word 0x020FA75C
+_0207D4D4: .word 0x00000296
+_0207D4D8: .word 0x00000528
+_0207D4DC: .word 0x020FA764
+_0207D4E0: .word 0x0000052C
+_0207D4E4: .word 0x020FA76C
+_0207D4E8: .word 0x020FA774
+_0207D4EC: .word 0x00000534
+_0207D4F0: .word 0x020FA77C
+
+ thumb_func_start FUN_0207D4F4
+FUN_0207D4F4: ; 0x0207D4F4
+ push {r4-r6, lr}
+ add r5, r1, #0x0
+ add r6, r0, #0x0
+ add r4, r3, #0x0
+ cmp r5, #0x0
+ beq _0207D504
+ cmp r5, r2
+ beq _0207D50E
+_0207D504:
+ add r0, r6, #0x0
+ mov r1, #0x0
+ bl FUN_020200A0
+ pop {r4-r6, pc}
+_0207D50E:
+ mov r1, #0x1
+ bl FUN_020200A0
+ mov r0, #0x0
+ ldrsh r1, [r4, r0]
+ mov r0, #0x4
+ ldrsh r0, [r4, r0]
+ cmp r1, r0
+ blt _0207D534
+ sub r1, r1, r0
+ lsl r2, r1, #0x8
+ asr r1, r2, #0x7
+ lsr r1, r1, #0x18
+ add r1, r2, r1
+ asr r1, r1, #0x8
+ mul r1, r5
+ lsr r1, r1, #0x8
+ add r1, r0, r1
+ b _0207D546
+_0207D534:
+ sub r1, r0, r1
+ lsl r2, r1, #0x8
+ asr r1, r2, #0x7
+ lsr r1, r1, #0x18
+ add r1, r2, r1
+ asr r1, r1, #0x8
+ mul r1, r5
+ lsr r1, r1, #0x8
+ sub r1, r0, r1
+_0207D546:
+ mov r0, #0x2
+ ldrsh r2, [r4, r0]
+ mov r0, #0x6
+ ldrsh r0, [r4, r0]
+ cmp r2, r0
+ blt _0207D566
+ sub r2, r2, r0
+ lsl r3, r2, #0x8
+ asr r2, r3, #0x7
+ lsr r2, r2, #0x18
+ add r2, r3, r2
+ asr r2, r2, #0x8
+ mul r2, r5
+ lsr r2, r2, #0x8
+ add r2, r0, r2
+ b _0207D578
+_0207D566:
+ sub r2, r0, r2
+ lsl r3, r2, #0x8
+ asr r2, r3, #0x7
+ lsr r2, r2, #0x18
+ add r2, r3, r2
+ asr r2, r2, #0x8
+ mul r2, r5
+ lsr r2, r2, #0x8
+ sub r2, r0, r2
+_0207D578:
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0x10
+ add r0, r6, #0x0
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ bl FUN_0200C6E4
+ add r0, r6, #0x0
+ mov r1, #0x0
+ bl FUN_02020208
+ add r0, r6, #0x0
+ mov r1, #0x0
+ bl FUN_02020130
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0207D598
+FUN_0207D598: ; 0x0207D598
+ push {r3-r7, lr}
+ mov r7, #0x1
+ ldr r6, _0207D5B8 ; =0x00000524
+ add r5, r0, #0x0
+ mov r4, #0x0
+ lsl r7, r7, #0xc
+_0207D5A4:
+ ldr r0, [r5, r6]
+ add r1, r7, #0x0
+ bl FUN_020201E4
+ add r4, r4, #0x1
+ add r5, r5, #0x4
+ cmp r4, #0x5
+ blo _0207D5A4
+ pop {r3-r7, pc}
+ nop
+_0207D5B8: .word 0x00000524
+
+ thumb_func_start FUN_0207D5BC
+FUN_0207D5BC: ; 0x0207D5BC
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ mov r5, #0x0
+ add r4, r7, #0x4
+_0207D5C4:
+ ldr r2, _0207D600 ; =0x020FB4AC
+ lsl r6, r5, #0x4
+ lsl r3, r5, #0x3
+ ldr r0, [r7, #0x0]
+ add r1, r4, r6
+ add r2, r2, r3
+ bl FUN_02019150
+ add r0, r4, r6
+ mov r1, #0x0
+ bl FUN_02019620
+ add r0, r5, #0x1
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ cmp r5, #0x24
+ blo _0207D5C4
+ add r0, r7, #0x0
+ bl FUN_0207DB78
+ add r0, r7, #0x0
+ bl FUN_0207D768
+ add r0, r7, #0x0
+ bl FUN_0207D800
+ add r0, r7, #0x0
+ bl FUN_0207D8A0
+ pop {r3-r7, pc}
+ .balign 4
+_0207D600: .word 0x020FB4AC
+
+ thumb_func_start FUN_0207D604
+FUN_0207D604: ; 0x0207D604
+ push {r3-r7, lr}
+ add r4, r0, #0x0
+ ldr r0, _0207D6D8 ; =0x0000068C
+ ldrsb r0, [r4, r0]
+ cmp r0, #0x7
+ bhi _0207D6D4
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0207D61C: ; jump table (using 16-bit offset)
+ .short _0207D62C - _0207D61C - 2; case 0
+ .short _0207D638 - _0207D61C - 2; case 1
+ .short _0207D644 - _0207D61C - 2; case 2
+ .short _0207D650 - _0207D61C - 2; case 3
+ .short _0207D674 - _0207D61C - 2; case 4
+ .short _0207D65C - _0207D61C - 2; case 5
+ .short _0207D668 - _0207D61C - 2; case 6
+ .short _0207D674 - _0207D61C - 2; case 7
+_0207D62C:
+ mov r0, #0x92
+ mov r1, #0x6
+ lsl r0, r0, #0x2
+ ldr r5, _0207D6DC ; =0x020FB3FC
+ str r1, [r4, r0]
+ b _0207D692
+_0207D638:
+ mov r0, #0x92
+ mov r1, #0x1
+ lsl r0, r0, #0x2
+ ldr r5, _0207D6E0 ; =0x020FB38C
+ str r1, [r4, r0]
+ b _0207D692
+_0207D644:
+ mov r0, #0x92
+ mov r1, #0x8
+ lsl r0, r0, #0x2
+ ldr r5, _0207D6E4 ; =0x020FB42C
+ str r1, [r4, r0]
+ b _0207D692
+_0207D650:
+ mov r0, #0x92
+ mov r1, #0x8
+ lsl r0, r0, #0x2
+ ldr r5, _0207D6E8 ; =0x020FB46C
+ str r1, [r4, r0]
+ b _0207D692
+_0207D65C:
+ mov r0, #0x92
+ mov r1, #0x6
+ lsl r0, r0, #0x2
+ ldr r5, _0207D6EC ; =0x020FB3CC
+ str r1, [r4, r0]
+ b _0207D692
+_0207D668:
+ mov r0, #0x92
+ mov r1, #0x4
+ lsl r0, r0, #0x2
+ ldr r5, _0207D6F0 ; =0x020FB3AC
+ str r1, [r4, r0]
+ b _0207D692
+_0207D674:
+ mov r0, #0x93
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ ldrb r0, [r0, #0x12]
+ cmp r0, #0x3
+ beq _0207D684
+ cmp r0, #0x4
+ bne _0207D6D4
+_0207D684:
+ mov r0, #0x92
+ mov r1, #0x3
+ lsl r0, r0, #0x2
+ ldr r5, _0207D6F4 ; =0x020FB394
+ str r1, [r4, r0]
+ b _0207D692
+_0207D690:
+ pop {r3-r7, pc}
+_0207D692:
+ mov r1, #0x92
+ lsl r1, r1, #0x2
+ ldr r1, [r4, r1]
+ mov r0, #0x13
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl FUN_02018FF4
+ mov r1, #0x91
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ add r0, r1, #0x4
+ ldr r0, [r4, r0]
+ mov r6, #0x0
+ cmp r0, #0x0
+ bls _0207D6D4
+ add r7, r6, #0x0
+_0207D6B4:
+ mov r1, #0x91
+ lsl r1, r1, #0x2
+ ldr r1, [r4, r1]
+ ldr r0, [r4, #0x0]
+ add r1, r1, r7
+ add r2, r5, #0x0
+ bl FUN_02019150
+ mov r0, #0x92
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ add r6, r6, #0x1
+ add r5, #0x8
+ add r7, #0x10
+ cmp r6, r0
+ blo _0207D6B4
+_0207D6D4:
+ pop {r3-r7, pc}
+ nop
+_0207D6D8: .word 0x0000068C
+_0207D6DC: .word 0x020FB3FC
+_0207D6E0: .word 0x020FB38C
+_0207D6E4: .word 0x020FB42C
+_0207D6E8: .word 0x020FB46C
+_0207D6EC: .word 0x020FB3CC
+_0207D6F0: .word 0x020FB3AC
+_0207D6F4: .word 0x020FB394
+
+ thumb_func_start FUN_0207D6F8
+FUN_0207D6F8: ; 0x0207D6F8
+ push {r3, lr}
+ add r1, r0, #0x0
+ ldr r0, _0207D748 ; =0x0000068C
+ ldrsb r0, [r1, r0]
+ cmp r0, #0x7
+ bhi _0207D744
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0207D710: ; jump table (using 16-bit offset)
+ .short _0207D732 - _0207D710 - 2; case 0
+ .short _0207D732 - _0207D710 - 2; case 1
+ .short _0207D732 - _0207D710 - 2; case 2
+ .short _0207D732 - _0207D710 - 2; case 3
+ .short _0207D720 - _0207D710 - 2; case 4
+ .short _0207D732 - _0207D710 - 2; case 5
+ .short _0207D732 - _0207D710 - 2; case 6
+ .short _0207D720 - _0207D710 - 2; case 7
+_0207D720:
+ mov r0, #0x93
+ lsl r0, r0, #0x2
+ ldr r0, [r1, r0]
+ ldrb r0, [r0, #0x12]
+ cmp r0, #0x3
+ beq _0207D732
+ cmp r0, #0x4
+ beq _0207D732
+ pop {r3, pc}
+_0207D732:
+ mov r2, #0x91
+ lsl r2, r2, #0x2
+ ldr r0, [r1, r2]
+ add r2, r2, #0x4
+ ldr r1, [r1, r2]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl FUN_020191A4
+_0207D744:
+ pop {r3, pc}
+ nop
+_0207D748: .word 0x0000068C
+
+ thumb_func_start FUN_0207D74C
+FUN_0207D74C: ; 0x0207D74C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_0207D6F8
+ mov r4, #0x0
+ add r5, r5, #0x4
+_0207D758:
+ add r0, r5, #0x0
+ bl FUN_02019178
+ add r4, r4, #0x1
+ add r5, #0x10
+ cmp r4, #0x24
+ blo _0207D758
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0207D768
+FUN_0207D768: ; 0x0207D768
+ push {r3-r5, lr}
+ sub sp, #0x10
+ mov r4, #0x89
+ add r5, r0, #0x0
+ lsl r4, r4, #0x2
+ add r0, r5, r4
+ mov r1, #0x0
+ bl FUN_02019620
+ mov r1, #0x0
+ add r2, r4, #0x0
+ str r1, [sp, #0x0]
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ ldr r0, _0207D7F4 ; =0x000F0E00
+ add r2, #0x30
+ str r0, [sp, #0x8]
+ str r1, [sp, #0xc]
+ ldr r2, [r5, r2]
+ add r0, r5, r4
+ add r3, r1, #0x0
+ bl FUN_0201BDE0
+ add r0, r4, #0x0
+ add r0, #0x3e
+ ldrb r1, [r5, r0]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x1f
+ bne _0207D7E8
+ add r0, r0, #0x1
+ ldrb r0, [r5, r0]
+ lsl r0, r0, #0x1e
+ lsr r0, r0, #0x1e
+ bne _0207D7CA
+ ldr r2, _0207D7F8 ; =0x00000674
+ mov r1, #0x1
+ ldr r0, [r5, r2]
+ add r2, #0xc
+ ldr r2, [r5, r2]
+ bl FUN_0200A8E0
+ mov r2, #0xc1
+ add r0, r5, #0x0
+ add r1, r5, r4
+ lsl r2, r2, #0xa
+ mov r3, #0x1
+ bl FUN_0207D998
+ b _0207D7E8
+_0207D7CA:
+ cmp r0, #0x1
+ bne _0207D7E8
+ ldr r2, _0207D7F8 ; =0x00000674
+ mov r1, #0x2
+ ldr r0, [r5, r2]
+ add r2, #0xc
+ ldr r2, [r5, r2]
+ bl FUN_0200A8E0
+ ldr r2, _0207D7FC ; =0x00050600
+ add r0, r5, #0x0
+ add r1, r5, r4
+ mov r3, #0x1
+ bl FUN_0207D998
+_0207D7E8:
+ add r0, r5, r4
+ bl FUN_02019220
+ add sp, #0x10
+ pop {r3-r5, pc}
+ nop
+_0207D7F4: .word 0x000F0E00
+_0207D7F8: .word 0x00000674
+_0207D7FC: .word 0x00050600
+
+ thumb_func_start FUN_0207D800
+FUN_0207D800: ; 0x0207D800
+ push {r4-r6, lr}
+ sub sp, #0x10
+ mov r6, #0x85
+ add r5, r0, #0x0
+ lsl r6, r6, #0x2
+ add r0, r5, r6
+ mov r1, #0x0
+ bl FUN_02019620
+ add r0, r6, #0x0
+ add r0, #0x8c
+ ldr r0, [r5, r0]
+ lsl r0, r0, #0x3
+ lsr r0, r0, #0x1f
+ bne _0207D88A
+ mov r0, #0x5
+ str r0, [sp, #0x0]
+ mov r0, #0x67
+ lsl r0, r0, #0x4
+ ldr r0, [r5, r0]
+ mov r1, #0x1
+ add r2, r5, r6
+ mov r3, #0x0
+ bl FUN_0200B9A8
+ ldr r0, _0207D894 ; =0x00000674
+ mov r1, #0x3
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ mov r1, #0x0
+ add r4, r0, #0x0
+ add r2, r6, #0x0
+ str r1, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ add r2, #0x4e
+ ldrb r2, [r5, r2]
+ ldr r0, _0207D898 ; =0x0000067C
+ mov r3, #0x3
+ lsl r2, r2, #0x19
+ ldr r0, [r5, r0]
+ lsr r2, r2, #0x19
+ bl FUN_0200AD38
+ ldr r1, _0207D898 ; =0x0000067C
+ add r2, r4, #0x0
+ ldr r0, [r5, r1]
+ add r1, r1, #0x4
+ ldr r1, [r5, r1]
+ bl FUN_0200B7B8
+ add r0, r4, #0x0
+ bl FUN_02021A20
+ mov r1, #0x0
+ mov r2, #0x1a
+ str r1, [sp, #0x0]
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ ldr r0, _0207D89C ; =0x00010200
+ lsl r2, r2, #0x6
+ str r0, [sp, #0x8]
+ str r1, [sp, #0xc]
+ ldr r2, [r5, r2]
+ add r0, r5, r6
+ mov r3, #0x10
+ bl FUN_0201BDE0
+_0207D88A:
+ add r0, r5, r6
+ bl FUN_02019220
+ add sp, #0x10
+ pop {r4-r6, pc}
+ .balign 4
+_0207D894: .word 0x00000674
+_0207D898: .word 0x0000067C
+_0207D89C: .word 0x00010200
+
+ thumb_func_start FUN_0207D8A0
+FUN_0207D8A0: ; 0x0207D8A0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r0, #0x81
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ mov r1, #0x0
+ bl FUN_02019620
+ ldr r0, _0207D918 ; =0x0000025E
+ ldrh r2, [r5, r0]
+ cmp r2, #0x0
+ beq _0207D8E4
+ ldr r0, _0207D91C ; =0x0000067C
+ mov r1, #0x0
+ ldr r0, [r5, r0]
+ bl FUN_0200AE38
+ ldr r0, _0207D920 ; =0x00000674
+ mov r1, #0x5
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ add r4, r0, #0x0
+ ldr r1, _0207D91C ; =0x0000067C
+ add r2, r4, #0x0
+ ldr r0, [r5, r1]
+ add r1, r1, #0x4
+ ldr r1, [r5, r1]
+ bl FUN_0200B7B8
+ add r0, r4, #0x0
+ bl FUN_02021A20
+ b _0207D8F2
+_0207D8E4:
+ ldr r2, _0207D920 ; =0x00000674
+ mov r1, #0x6
+ ldr r0, [r5, r2]
+ add r2, #0xc
+ ldr r2, [r5, r2]
+ bl FUN_0200A8E0
+_0207D8F2:
+ mov r2, #0x81
+ lsl r2, r2, #0x2
+ add r1, r5, r2
+ add r0, r5, #0x0
+ lsl r2, r2, #0x7
+ mov r3, #0x0
+ bl FUN_0207D998
+ add r0, r5, #0x0
+ add r0, #0x64
+ bl FUN_02019220
+ mov r0, #0x81
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ bl FUN_02019220
+ pop {r3-r5, pc}
+ nop
+_0207D918: .word 0x0000025E
+_0207D91C: .word 0x0000067C
+_0207D920: .word 0x00000674
+
+ thumb_func_start FUN_0207D924
+FUN_0207D924: ; 0x0207D924
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r0, #0x8d
+ lsl r0, r0, #0x2
+ add r4, r1, #0x0
+ add r0, r5, r0
+ mov r1, #0x0
+ bl FUN_02019620
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldr r3, _0207D954 ; =0x000F0E00
+ add r0, r5, #0x0
+ mov r1, #0x23
+ add r2, r4, #0x0
+ bl FUN_0207DA1C
+ mov r0, #0x8d
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ bl FUN_02019220
+ pop {r3-r5, pc}
+ nop
+_0207D954: .word 0x000F0E00
+
+ thumb_func_start FUN_0207D958
+FUN_0207D958: ; 0x0207D958
+ push {r4, lr}
+ mov r3, #0x93
+ lsl r3, r3, #0x2
+ add r1, r0, #0x0
+ add r2, r3, #0x0
+ add r2, #0x18
+ ldr r0, [r1, r3]
+ ldr r4, [r1, r2]
+ ldr r2, [r0, #0xc]
+ cmp r4, r2
+ bne _0207D98E
+ add r2, r3, #0x0
+ add r2, #0x48
+ ldrb r2, [r1, r2]
+ ldrb r0, [r0, #0x10]
+ cmp r2, r0
+ bne _0207D98E
+ ldr r2, _0207D994 ; =0x00000684
+ add r3, #0xc
+ ldr r0, [r1, r3]
+ ldr r1, [r1, r2]
+ bl FUN_02021CE0
+ cmp r0, #0x0
+ bne _0207D98E
+ mov r0, #0x1
+ pop {r4, pc}
+_0207D98E:
+ mov r0, #0x0
+ pop {r4, pc}
+ nop
+_0207D994: .word 0x00000684
+
+ thumb_func_start FUN_0207D998
+FUN_0207D998: ; 0x0207D998
+ push {r3-r7, lr}
+ sub sp, #0x10
+ add r4, r0, #0x0
+ add r6, r1, #0x0
+ add r7, r2, #0x0
+ cmp r3, #0x0
+ beq _0207D9B0
+ cmp r3, #0x1
+ beq _0207D9B4
+ cmp r3, #0x2
+ beq _0207D9D8
+ b _0207D9FE
+_0207D9B0:
+ mov r3, #0x0
+ b _0207D9FE
+_0207D9B4:
+ mov r1, #0x1a
+ lsl r1, r1, #0x6
+ mov r0, #0x0
+ ldr r1, [r4, r1]
+ add r2, r0, #0x0
+ bl FUN_02002E14
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ add r0, r6, #0x0
+ bl FUN_0201AB0C
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x18
+ sub r0, r0, r5
+ lsl r0, r0, #0x18
+ lsr r3, r0, #0x18
+ b _0207D9FE
+_0207D9D8:
+ mov r1, #0x1a
+ lsl r1, r1, #0x6
+ mov r0, #0x0
+ ldr r1, [r4, r1]
+ add r2, r0, #0x0
+ bl FUN_02002E14
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ add r0, r6, #0x0
+ bl FUN_0201AB0C
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x18
+ sub r1, r0, r5
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ lsl r0, r0, #0x17
+ lsr r3, r0, #0x18
+_0207D9FE:
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ str r7, [sp, #0x8]
+ mov r2, #0x1a
+ str r1, [sp, #0xc]
+ lsl r2, r2, #0x6
+ ldr r2, [r4, r2]
+ add r0, r6, #0x0
+ bl FUN_0201BDE0
+ add sp, #0x10
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0207DA1C
+FUN_0207DA1C: ; 0x0207DA1C
+ push {r4-r6, lr}
+ add r6, r3, #0x0
+ ldr r3, _0207DA44 ; =0x00000674
+ add r5, r0, #0x0
+ ldr r0, [r5, r3]
+ add r4, r1, #0x0
+ add r3, #0xc
+ add r1, r2, #0x0
+ ldr r2, [r5, r3]
+ bl FUN_0200A8E0
+ add r2, r5, #0x4
+ lsl r1, r4, #0x4
+ add r1, r2, r1
+ ldr r3, [sp, #0x10]
+ add r0, r5, #0x0
+ add r2, r6, #0x0
+ bl FUN_0207D998
+ pop {r4-r6, pc}
+ .balign 4
+_0207DA44: .word 0x00000674
+
+ thumb_func_start FUN_0207DA48
+FUN_0207DA48: ; 0x0207DA48
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ ldr r0, _0207DA8C ; =0x00000674
+ add r6, r2, #0x0
+ ldr r0, [r5, r0]
+ add r7, r3, #0x0
+ bl FUN_0200A914
+ add r4, r0, #0x0
+ add r0, sp, #0x10
+ ldrb r0, [r0, #0x10]
+ mov r1, #0x0
+ add r2, r6, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ ldr r0, _0207DA90 ; =0x0000067C
+ add r3, r7, #0x0
+ ldr r0, [r5, r0]
+ bl FUN_0200AD38
+ ldr r1, _0207DA90 ; =0x0000067C
+ add r2, r4, #0x0
+ ldr r0, [r5, r1]
+ add r1, r1, #0x4
+ ldr r1, [r5, r1]
+ bl FUN_0200B7B8
+ add r0, r4, #0x0
+ bl FUN_02021A20
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+_0207DA8C: .word 0x00000674
+_0207DA90: .word 0x0000067C
+
+ thumb_func_start FUN_0207DA94
+FUN_0207DA94: ; 0x0207DA94
+ push {r3-r7, lr}
+ sub sp, #0x20
+ add r4, r0, #0x0
+ str r3, [sp, #0x10]
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ lsl r7, r1, #0x4
+ ldr r3, _0207DB70 ; =0x00000674
+ ldr r5, [r4, r0]
+ ldr r0, [r4, r3]
+ add r3, #0xc
+ add r1, r2, #0x0
+ ldr r2, [r4, r3]
+ bl FUN_0200A8E0
+ mov r1, #0x1a
+ lsl r1, r1, #0x6
+ mov r0, #0x0
+ ldr r1, [r4, r1]
+ add r2, r0, #0x0
+ bl FUN_02002E14
+ add r1, sp, #0x48
+ ldrb r2, [r1, #0x0]
+ lsr r1, r0, #0x1
+ sub r1, r2, r1
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ add r0, r1, r0
+ str r1, [sp, #0x14]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x18]
+ add r0, sp, #0x4c
+ ldrb r0, [r0, #0x0]
+ mov r2, #0x1a
+ mov r1, #0x0
+ str r0, [sp, #0x1c]
+ str r0, [sp, #0x0]
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ ldr r0, _0207DB74 ; =0x00010200
+ lsl r2, r2, #0x6
+ str r0, [sp, #0x8]
+ str r1, [sp, #0xc]
+ ldr r2, [r4, r2]
+ ldr r3, [sp, #0x14]
+ add r0, r5, r7
+ bl FUN_0201BDE0
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ add r3, sp, #0x28
+ ldrh r2, [r3, #0x14]
+ ldrb r3, [r3, #0x1c]
+ ldr r1, [sp, #0x10]
+ add r0, r4, #0x0
+ bl FUN_0207DA48
+ mov r1, #0x1a
+ lsl r1, r1, #0x6
+ mov r0, #0x0
+ ldr r1, [r4, r1]
+ add r2, r0, #0x0
+ bl FUN_02002E14
+ mov r12, r0
+ ldr r0, [sp, #0x1c]
+ mov r2, #0x1a
+ str r0, [sp, #0x0]
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ ldr r0, _0207DB74 ; =0x00010200
+ mov r1, #0x0
+ str r0, [sp, #0x8]
+ str r1, [sp, #0xc]
+ lsl r2, r2, #0x6
+ ldr r3, [sp, #0x14]
+ mov r6, r12
+ ldr r2, [r4, r2]
+ add r0, r5, r7
+ sub r3, r3, r6
+ bl FUN_0201BDE0
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ add r3, sp, #0x28
+ ldrh r2, [r3, #0x18]
+ ldrb r3, [r3, #0x1c]
+ ldr r1, [sp, #0x38]
+ add r0, r4, #0x0
+ bl FUN_0207DA48
+ ldr r0, [sp, #0x1c]
+ mov r2, #0x1a
+ str r0, [sp, #0x0]
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ ldr r0, _0207DB74 ; =0x00010200
+ mov r1, #0x0
+ str r0, [sp, #0x8]
+ str r1, [sp, #0xc]
+ lsl r2, r2, #0x6
+ ldr r2, [r4, r2]
+ ldr r3, [sp, #0x18]
+ add r0, r5, r7
+ bl FUN_0201BDE0
+ add sp, #0x20
+ pop {r3-r7, pc}
+ .balign 4
+_0207DB70: .word 0x00000674
+_0207DB74: .word 0x00010200
+
+ thumb_func_start FUN_0207DB78
+FUN_0207DB78: ; 0x0207DB78
+ push {r4, lr}
+ sub sp, #0x10
+ ldr r3, _0207DD7C ; =0x000F0E00
+ mov r1, #0x0
+ mov r2, #0x7
+ add r4, r0, #0x0
+ str r1, [sp, #0x0]
+ bl FUN_0207DA1C
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldr r3, _0207DD7C ; =0x000F0E00
+ add r0, r4, #0x0
+ mov r1, #0x1
+ mov r2, #0x17
+ bl FUN_0207DA1C
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldr r3, _0207DD7C ; =0x000F0E00
+ add r0, r4, #0x0
+ mov r1, #0x2
+ mov r2, #0x6d
+ bl FUN_0207DA1C
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldr r3, _0207DD7C ; =0x000F0E00
+ add r0, r4, #0x0
+ mov r1, #0x3
+ mov r2, #0x7e
+ bl FUN_0207DA1C
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldr r3, _0207DD7C ; =0x000F0E00
+ add r0, r4, #0x0
+ mov r1, #0x4
+ mov r2, #0x80
+ bl FUN_0207DA1C
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldr r3, _0207DD7C ; =0x000F0E00
+ add r0, r4, #0x0
+ mov r1, #0x5
+ mov r2, #0x9d
+ bl FUN_0207DA1C
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldr r3, _0207DD7C ; =0x000F0E00
+ add r0, r4, #0x0
+ mov r1, #0x6
+ mov r2, #0x4
+ bl FUN_0207DA1C
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldr r3, _0207DD7C ; =0x000F0E00
+ add r0, r4, #0x0
+ mov r1, #0x7
+ mov r2, #0x8
+ bl FUN_0207DA1C
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldr r3, _0207DD7C ; =0x000F0E00
+ add r0, r4, #0x0
+ mov r1, #0x8
+ mov r2, #0xa
+ bl FUN_0207DA1C
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldr r3, _0207DD7C ; =0x000F0E00
+ add r0, r4, #0x0
+ mov r1, #0x9
+ mov r2, #0xc
+ bl FUN_0207DA1C
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldr r3, _0207DD7C ; =0x000F0E00
+ add r0, r4, #0x0
+ mov r1, #0xa
+ mov r2, #0xd
+ bl FUN_0207DA1C
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldr r3, _0207DD7C ; =0x000F0E00
+ add r0, r4, #0x0
+ mov r1, #0xb
+ mov r2, #0xf
+ bl FUN_0207DA1C
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldr r3, _0207DD7C ; =0x000F0E00
+ add r0, r4, #0x0
+ mov r1, #0xc
+ mov r2, #0x11
+ bl FUN_0207DA1C
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldr r3, _0207DD7C ; =0x000F0E00
+ add r0, r4, #0x0
+ mov r1, #0xd
+ mov r2, #0x13
+ bl FUN_0207DA1C
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldr r3, _0207DD7C ; =0x000F0E00
+ add r0, r4, #0x0
+ mov r1, #0xf
+ mov r2, #0x6e
+ bl FUN_0207DA1C
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldr r3, _0207DD7C ; =0x000F0E00
+ add r0, r4, #0x0
+ mov r1, #0x10
+ mov r2, #0x6f
+ bl FUN_0207DA1C
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldr r3, _0207DD7C ; =0x000F0E00
+ add r0, r4, #0x0
+ mov r1, #0x11
+ mov r2, #0x70
+ bl FUN_0207DA1C
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldr r3, _0207DD7C ; =0x000F0E00
+ add r0, r4, #0x0
+ mov r1, #0x12
+ mov r2, #0x71
+ bl FUN_0207DA1C
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldr r3, _0207DD7C ; =0x000F0E00
+ add r0, r4, #0x0
+ mov r1, #0x13
+ mov r2, #0x72
+ bl FUN_0207DA1C
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldr r3, _0207DD7C ; =0x000F0E00
+ add r0, r4, #0x0
+ mov r1, #0x14
+ mov r2, #0x73
+ bl FUN_0207DA1C
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldr r3, _0207DD7C ; =0x000F0E00
+ add r0, r4, #0x0
+ mov r1, #0x15
+ mov r2, #0x74
+ bl FUN_0207DA1C
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldr r3, _0207DD7C ; =0x000F0E00
+ add r0, r4, #0x0
+ mov r1, #0x16
+ mov r2, #0x7f
+ bl FUN_0207DA1C
+ ldr r2, _0207DD80 ; =0x00000674
+ mov r1, #0x92
+ ldr r0, [r4, r2]
+ add r2, #0xc
+ ldr r2, [r4, r2]
+ bl FUN_0200A8E0
+ mov r0, #0x2
+ str r0, [sp, #0x0]
+ mov r2, #0xff
+ str r2, [sp, #0x4]
+ ldr r0, _0207DD7C ; =0x000F0E00
+ mov r1, #0x0
+ str r0, [sp, #0x8]
+ add r2, #0x85
+ add r0, r4, r2
+ mov r2, #0x1a
+ str r1, [sp, #0xc]
+ lsl r2, r2, #0x6
+ ldr r2, [r4, r2]
+ add r3, r1, #0x0
+ bl FUN_0201BDE0
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldr r3, _0207DD7C ; =0x000F0E00
+ add r0, r4, #0x0
+ mov r1, #0x19
+ mov r2, #0x95
+ bl FUN_0207DA1C
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldr r3, _0207DD7C ; =0x000F0E00
+ add r0, r4, #0x0
+ mov r1, #0x1a
+ mov r2, #0x93
+ bl FUN_0207DA1C
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldr r3, _0207DD7C ; =0x000F0E00
+ add r0, r4, #0x0
+ mov r1, #0x1b
+ mov r2, #0x94
+ bl FUN_0207DA1C
+ mov r0, #0x2
+ str r0, [sp, #0x0]
+ ldr r3, _0207DD7C ; =0x000F0E00
+ add r0, r4, #0x0
+ mov r1, #0x1c
+ mov r2, #0xa2
+ bl FUN_0207DA1C
+ mov r0, #0x2
+ str r0, [sp, #0x0]
+ ldr r3, _0207DD84 ; =0x00010200
+ add r0, r4, #0x0
+ mov r1, #0x1d
+ mov r2, #0xa0
+ bl FUN_0207DA1C
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldr r3, _0207DD84 ; =0x00010200
+ add r0, r4, #0x0
+ mov r1, #0x1e
+ mov r2, #0xb6
+ bl FUN_0207DA1C
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldr r3, _0207DD7C ; =0x000F0E00
+ add r0, r4, #0x0
+ mov r1, #0x1f
+ mov r2, #0xb3
+ bl FUN_0207DA1C
+ add sp, #0x10
+ pop {r4, pc}
+ .balign 4
+_0207DD7C: .word 0x000F0E00
+_0207DD80: .word 0x00000674
+_0207DD84: .word 0x00010200
+
+ thumb_func_start FUN_0207DD88
+FUN_0207DD88: ; 0x0207DD88
+ push {r4, lr}
+ sub sp, #0x10
+ mov r2, #0x0
+ add r4, r0, #0x0
+ str r2, [sp, #0x0]
+ mov r0, #0x20
+ str r0, [sp, #0x4]
+ mov r0, #0x2
+ str r0, [sp, #0x8]
+ mov r0, #0x10
+ str r0, [sp, #0xc]
+ ldr r0, [r4, #0x0]
+ mov r1, #0x1
+ add r3, r2, #0x0
+ bl FUN_02018540
+ mov r0, #0x2
+ str r0, [sp, #0x0]
+ mov r0, #0x12
+ str r0, [sp, #0x4]
+ mov r0, #0x16
+ str r0, [sp, #0x8]
+ mov r0, #0x10
+ str r0, [sp, #0xc]
+ ldr r0, [r4, #0x0]
+ mov r1, #0x1
+ mov r2, #0x0
+ mov r3, #0xe
+ bl FUN_02018540
+ ldr r0, _0207DE38 ; =0x0000068C
+ ldrsb r0, [r4, r0]
+ cmp r0, #0x7
+ bhi _0207DE34
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0207DDD8: ; jump table (using 16-bit offset)
+ .short _0207DDE8 - _0207DDD8 - 2; case 0
+ .short _0207DDF2 - _0207DDD8 - 2; case 1
+ .short _0207DDFC - _0207DDD8 - 2; case 2
+ .short _0207DE10 - _0207DDD8 - 2; case 3
+ .short _0207DE06 - _0207DDD8 - 2; case 4
+ .short _0207DE1A - _0207DDD8 - 2; case 5
+ .short _0207DE24 - _0207DDD8 - 2; case 6
+ .short _0207DE2E - _0207DDD8 - 2; case 7
+_0207DDE8:
+ add r0, r4, #0x0
+ bl FUN_0207DE3C
+ add sp, #0x10
+ pop {r4, pc}
+_0207DDF2:
+ add r0, r4, #0x0
+ bl FUN_0207E190
+ add sp, #0x10
+ pop {r4, pc}
+_0207DDFC:
+ add r0, r4, #0x0
+ bl FUN_0207E200
+ add sp, #0x10
+ pop {r4, pc}
+_0207DE06:
+ add r0, r4, #0x0
+ bl FUN_0207E4A0
+ add sp, #0x10
+ pop {r4, pc}
+_0207DE10:
+ add r0, r4, #0x0
+ bl FUN_0207E594
+ add sp, #0x10
+ pop {r4, pc}
+_0207DE1A:
+ add r0, r4, #0x0
+ bl FUN_0207E650
+ add sp, #0x10
+ pop {r4, pc}
+_0207DE24:
+ add r0, r4, #0x0
+ bl FUN_0207E70C
+ add sp, #0x10
+ pop {r4, pc}
+_0207DE2E:
+ add r0, r4, #0x0
+ bl FUN_0207E788
+_0207DE34:
+ add sp, #0x10
+ pop {r4, pc}
+ .balign 4
+_0207DE38: .word 0x0000068C
+
+ thumb_func_start FUN_0207DE3C
+FUN_0207DE3C: ; 0x0207DE3C
+ push {r3-r5, lr}
+ sub sp, #0x10
+ add r4, r0, #0x0
+ add r0, r4, #0x4
+ bl FUN_02019220
+ add r0, r4, #0x0
+ add r0, #0x74
+ bl FUN_02019220
+ add r0, r4, #0x0
+ add r0, #0x84
+ bl FUN_02019220
+ add r0, r4, #0x0
+ add r0, #0x94
+ bl FUN_02019220
+ add r0, r4, #0x0
+ add r0, #0xa4
+ bl FUN_02019220
+ add r0, r4, #0x0
+ add r0, #0xb4
+ bl FUN_02019220
+ add r0, r4, #0x0
+ add r0, #0xc4
+ bl FUN_02019220
+ add r0, r4, #0x0
+ add r0, #0xd4
+ bl FUN_02019220
+ add r0, r4, #0x0
+ add r0, #0xe4
+ bl FUN_02019220
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ bl FUN_02019620
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ add r0, #0x10
+ bl FUN_02019620
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ add r0, #0x20
+ bl FUN_02019620
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ add r0, #0x30
+ bl FUN_02019620
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ add r0, #0x40
+ bl FUN_02019620
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ add r0, #0x50
+ bl FUN_02019620
+ mov r1, #0x93
+ lsl r1, r1, #0x2
+ ldr r0, [r4, r1]
+ add r1, #0x10
+ ldrh r1, [r4, r1]
+ ldr r0, [r0, #0x1c]
+ bl FUN_0206BB48
+ add r2, r0, #0x0
+ beq _0207DEFE
+ mov r0, #0x2
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0x9
+ mov r3, #0x3
+ bl FUN_0207DA48
+ b _0207DF0C
+_0207DEFE:
+ ldr r2, _0207E0B4 ; =0x00000674
+ mov r1, #0x16
+ ldr r0, [r4, r2]
+ add r2, #0xc
+ ldr r2, [r4, r2]
+ bl FUN_0200A8E0
+_0207DF0C:
+ mov r1, #0x2a
+ lsl r1, r1, #0x4
+ ldr r0, [r4, r1]
+ lsl r0, r0, #0x2
+ lsr r0, r0, #0x1f
+ bne _0207DF28
+ sub r1, #0x5c
+ ldr r1, [r4, r1]
+ ldr r2, _0207E0B8 ; =0x00010200
+ add r0, r4, #0x0
+ mov r3, #0x2
+ bl FUN_0207D998
+ b _0207DF36
+_0207DF28:
+ sub r1, #0x5c
+ ldr r1, [r4, r1]
+ ldr r2, _0207E0BC ; =0x00050600
+ add r0, r4, #0x0
+ mov r3, #0x2
+ bl FUN_0207D998
+_0207DF36:
+ mov r1, #0x25
+ lsl r1, r1, #0x4
+ mov r0, #0x0
+ ldr r1, [r4, r1]
+ add r2, r0, #0x0
+ bl FUN_02002E14
+ mov r2, #0x91
+ lsl r2, r2, #0x2
+ ldr r3, [r4, r2]
+ mov r1, #0x0
+ add r5, r0, #0x0
+ str r1, [sp, #0x0]
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ ldr r0, _0207E0B8 ; =0x00010200
+ add r2, #0xc
+ str r0, [sp, #0x8]
+ str r1, [sp, #0xc]
+ add r0, r3, #0x0
+ ldrb r3, [r3, #0x17]
+ ldr r2, [r4, r2]
+ add r0, #0x10
+ lsl r3, r3, #0x3
+ sub r3, r3, r5
+ lsr r3, r3, #0x1
+ bl FUN_0201BDE0
+ mov r1, #0x96
+ lsl r1, r1, #0x2
+ mov r0, #0x0
+ ldr r1, [r4, r1]
+ add r2, r0, #0x0
+ bl FUN_02002E14
+ mov r5, #0x91
+ lsl r5, r5, #0x2
+ ldr r2, [r4, r5]
+ add r1, r2, #0x0
+ add r1, #0x27
+ ldrb r1, [r1, #0x0]
+ lsl r1, r1, #0x3
+ sub r0, r1, r0
+ lsr r3, r0, #0x1
+ add r0, r5, #0x0
+ add r0, #0x50
+ ldrb r0, [r4, r0]
+ cmp r0, #0x0
+ bne _0207DFB6
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ mov r0, #0xc1
+ lsl r0, r0, #0xa
+ str r0, [sp, #0x8]
+ add r2, #0x20
+ str r1, [sp, #0xc]
+ add r5, #0x14
+ add r0, r2, #0x0
+ ldr r2, [r4, r5]
+ bl FUN_0201BDE0
+ b _0207DFD0
+_0207DFB6:
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ ldr r0, _0207E0BC ; =0x00050600
+ add r2, #0x20
+ str r0, [sp, #0x8]
+ str r1, [sp, #0xc]
+ add r5, #0x14
+ add r0, r2, #0x0
+ ldr r2, [r4, r5]
+ bl FUN_0201BDE0
+_0207DFD0:
+ mov r0, #0x2
+ mov r2, #0x99
+ str r0, [sp, #0x0]
+ lsl r2, r2, #0x2
+ ldr r2, [r4, r2]
+ add r0, r4, #0x0
+ lsl r2, r2, #0x10
+ mov r1, #0x10
+ lsr r2, r2, #0x10
+ mov r3, #0x5
+ bl FUN_0207DA48
+ mov r1, #0x91
+ lsl r1, r1, #0x2
+ ldr r1, [r4, r1]
+ ldr r2, _0207E0B8 ; =0x00010200
+ add r0, r4, #0x0
+ add r1, #0x30
+ mov r3, #0x2
+ bl FUN_0207D998
+ mov r0, #0x1
+ mov r2, #0x9a
+ str r0, [sp, #0x0]
+ lsl r2, r2, #0x2
+ ldr r2, [r4, r2]
+ add r0, r4, #0x0
+ mov r1, #0x12
+ mov r3, #0x7
+ bl FUN_0207DA48
+ mov r1, #0x91
+ lsl r1, r1, #0x2
+ ldr r1, [r4, r1]
+ ldr r2, _0207E0B8 ; =0x00010200
+ add r0, r4, #0x0
+ add r1, #0x40
+ mov r3, #0x2
+ bl FUN_0207D998
+ ldr r3, _0207E0C0 ; =0x00000262
+ ldrb r0, [r4, r3]
+ lsl r0, r0, #0x19
+ lsr r0, r0, #0x19
+ cmp r0, #0x64
+ bhs _0207E048
+ mov r0, #0x1
+ add r2, r3, #0x0
+ str r0, [sp, #0x0]
+ add r2, #0xe
+ ldr r5, [r4, r2]
+ add r2, r3, #0x6
+ ldr r2, [r4, r2]
+ add r0, r4, #0x0
+ mov r1, #0x15
+ sub r2, r5, r2
+ mov r3, #0x7
+ bl FUN_0207DA48
+ b _0207E058
+_0207E048:
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0x15
+ mov r2, #0x0
+ mov r3, #0x7
+ bl FUN_0207DA48
+_0207E058:
+ mov r1, #0x91
+ lsl r1, r1, #0x2
+ ldr r1, [r4, r1]
+ ldr r2, _0207E0B8 ; =0x00010200
+ add r0, r4, #0x0
+ add r1, #0x50
+ mov r3, #0x2
+ bl FUN_0207D998
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_02019220
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ add r0, #0x10
+ bl FUN_02019220
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ add r0, #0x20
+ bl FUN_02019220
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ add r0, #0x30
+ bl FUN_02019220
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ add r0, #0x40
+ bl FUN_02019220
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ add r0, #0x50
+ bl FUN_02019220
+ add sp, #0x10
+ pop {r3-r5, pc}
+ .balign 4
+_0207E0B4: .word 0x00000674
+_0207E0B8: .word 0x00010200
+_0207E0BC: .word 0x00050600
+_0207E0C0: .word 0x00000262
+
+ thumb_func_start FUN_0207E0C4
+FUN_0207E0C4: ; 0x0207E0C4
+ push {r3-r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ add r0, r1, #0x0
+ add r1, r2, #0x0
+ mov r2, #0x13
+ bl FUN_0207FD00
+ add r4, r0, #0x0
+ ldr r2, [r4, #0x18]
+ cmp r2, #0x0
+ beq _0207E0F8
+ ldr r0, [r4, #0x14]
+ mov r1, #0x0
+ sub r0, r0, #0x1
+ lsl r0, r0, #0x4
+ str r0, [sp, #0x0]
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ ldr r0, _0207E18C ; =0x00010200
+ add r3, r1, #0x0
+ str r0, [sp, #0x8]
+ add r0, r5, #0x0
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+_0207E0F8:
+ ldr r2, [r4, #0x20]
+ cmp r2, #0x0
+ beq _0207E11A
+ ldr r0, [r4, #0x1c]
+ mov r1, #0x0
+ sub r0, r0, #0x1
+ lsl r0, r0, #0x4
+ str r0, [sp, #0x0]
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ ldr r0, _0207E18C ; =0x00010200
+ add r3, r1, #0x0
+ str r0, [sp, #0x8]
+ add r0, r5, #0x0
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+_0207E11A:
+ ldr r2, [r4, #0x28]
+ cmp r2, #0x0
+ beq _0207E13C
+ ldr r0, [r4, #0x24]
+ mov r1, #0x0
+ sub r0, r0, #0x1
+ lsl r0, r0, #0x4
+ str r0, [sp, #0x0]
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ ldr r0, _0207E18C ; =0x00010200
+ add r3, r1, #0x0
+ str r0, [sp, #0x8]
+ add r0, r5, #0x0
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+_0207E13C:
+ ldr r2, [r4, #0x30]
+ cmp r2, #0x0
+ beq _0207E15E
+ ldr r0, [r4, #0x2c]
+ mov r1, #0x0
+ sub r0, r0, #0x1
+ lsl r0, r0, #0x4
+ str r0, [sp, #0x0]
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ ldr r0, _0207E18C ; =0x00010200
+ add r3, r1, #0x0
+ str r0, [sp, #0x8]
+ add r0, r5, #0x0
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+_0207E15E:
+ ldr r2, [r4, #0x38]
+ cmp r2, #0x0
+ beq _0207E180
+ ldr r0, [r4, #0x34]
+ mov r1, #0x0
+ sub r0, r0, #0x1
+ lsl r0, r0, #0x4
+ str r0, [sp, #0x0]
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ ldr r0, _0207E18C ; =0x00010200
+ add r3, r1, #0x0
+ str r0, [sp, #0x8]
+ add r0, r5, #0x0
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+_0207E180:
+ add r0, r4, #0x0
+ bl FUN_02080094
+ add sp, #0x10
+ pop {r3-r5, pc}
+ nop
+_0207E18C: .word 0x00010200
+
+ thumb_func_start FUN_0207E190
+FUN_0207E190: ; 0x0207E190
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r0, #0x14
+ bl FUN_02019220
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ mov r1, #0x0
+ bl FUN_02019620
+ add r0, r5, #0x0
+ bl FUN_0207B628
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0207D958
+ add r7, r0, #0x0
+ mov r0, #0x93
+ lsl r0, r0, #0x2
+ ldr r1, [r5, r0]
+ ldrb r1, [r1, #0x11]
+ cmp r1, #0x2
+ bne _0207E1E8
+ mov r0, #0x13
+ bl FUN_020669C0
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ bl FUN_02069A64
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ add r1, r4, #0x0
+ add r2, r7, #0x0
+ bl FUN_0207E0C4
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ b _0207E1F4
+_0207E1E8:
+ sub r0, #0x8
+ ldr r0, [r5, r0]
+ add r1, r6, #0x0
+ add r2, r7, #0x0
+ bl FUN_0207E0C4
+_0207E1F4:
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ bl FUN_02019220
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0207E200
+FUN_0207E200: ; 0x0207E200
+ push {r3-r5, lr}
+ sub sp, #0x18
+ add r4, r0, #0x0
+ add r0, #0x24
+ bl FUN_02019220
+ add r0, r4, #0x0
+ add r0, #0xf4
+ bl FUN_02019220
+ mov r0, #0x41
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_02019220
+ mov r0, #0x45
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_02019220
+ mov r0, #0x49
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_02019220
+ mov r0, #0x4d
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_02019220
+ mov r0, #0x51
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_02019220
+ mov r0, #0x55
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_02019220
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ bl FUN_02019620
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ add r0, #0x10
+ bl FUN_02019620
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ add r0, #0x20
+ bl FUN_02019620
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ add r0, #0x30
+ bl FUN_02019620
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ add r0, #0x40
+ bl FUN_02019620
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ add r0, #0x50
+ bl FUN_02019620
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ add r0, #0x60
+ bl FUN_02019620
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ add r0, #0x70
+ bl FUN_02019620
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_0201AB0C
+ mov r1, #0x76
+ str r1, [sp, #0x0]
+ mov r1, #0x9d
+ lsl r1, r1, #0x2
+ ldrh r2, [r4, r1]
+ lsl r0, r0, #0x1a
+ add r1, r1, #0x2
+ str r2, [sp, #0x4]
+ ldrh r1, [r4, r1]
+ lsr r0, r0, #0x18
+ mov r2, #0x75
+ str r1, [sp, #0x8]
+ mov r1, #0x3
+ str r1, [sp, #0xc]
+ str r0, [sp, #0x10]
+ mov r1, #0x0
+ add r0, r4, #0x0
+ mov r3, #0x77
+ str r1, [sp, #0x14]
+ bl FUN_0207DA94
+ mov r0, #0x0
+ mov r2, #0x9e
+ str r0, [sp, #0x0]
+ lsl r2, r2, #0x2
+ ldrh r2, [r4, r2]
+ add r0, r4, #0x0
+ mov r1, #0x78
+ mov r3, #0x3
+ bl FUN_0207DA48
+ mov r1, #0x91
+ lsl r1, r1, #0x2
+ ldr r1, [r4, r1]
+ ldr r2, _0207E484 ; =0x00010200
+ add r0, r4, #0x0
+ add r1, #0x10
+ mov r3, #0x1
+ bl FUN_0207D998
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldr r2, _0207E488 ; =0x0000027A
+ add r0, r4, #0x0
+ ldrh r2, [r4, r2]
+ mov r1, #0x79
+ mov r3, #0x3
+ bl FUN_0207DA48
+ mov r1, #0x91
+ lsl r1, r1, #0x2
+ ldr r1, [r4, r1]
+ ldr r2, _0207E484 ; =0x00010200
+ add r0, r4, #0x0
+ add r1, #0x20
+ mov r3, #0x1
+ bl FUN_0207D998
+ mov r0, #0x0
+ mov r2, #0x9f
+ str r0, [sp, #0x0]
+ lsl r2, r2, #0x2
+ ldrh r2, [r4, r2]
+ add r0, r4, #0x0
+ mov r1, #0x7a
+ mov r3, #0x3
+ bl FUN_0207DA48
+ mov r1, #0x91
+ lsl r1, r1, #0x2
+ ldr r1, [r4, r1]
+ ldr r2, _0207E484 ; =0x00010200
+ add r0, r4, #0x0
+ add r1, #0x30
+ mov r3, #0x1
+ bl FUN_0207D998
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldr r2, _0207E48C ; =0x0000027E
+ add r0, r4, #0x0
+ ldrh r2, [r4, r2]
+ mov r1, #0x7b
+ mov r3, #0x3
+ bl FUN_0207DA48
+ mov r1, #0x91
+ lsl r1, r1, #0x2
+ ldr r1, [r4, r1]
+ ldr r2, _0207E484 ; =0x00010200
+ add r0, r4, #0x0
+ add r1, #0x40
+ mov r3, #0x1
+ bl FUN_0207D998
+ mov r0, #0x0
+ mov r2, #0xa
+ str r0, [sp, #0x0]
+ lsl r2, r2, #0x6
+ ldrh r2, [r4, r2]
+ add r0, r4, #0x0
+ mov r1, #0x7c
+ mov r3, #0x3
+ bl FUN_0207DA48
+ mov r1, #0x91
+ lsl r1, r1, #0x2
+ ldr r1, [r4, r1]
+ ldr r2, _0207E484 ; =0x00010200
+ add r0, r4, #0x0
+ add r1, #0x50
+ mov r3, #0x1
+ bl FUN_0207D998
+ ldr r2, _0207E490 ; =0x00000282
+ ldr r0, _0207E494 ; =0x0000067C
+ ldrb r2, [r4, r2]
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ bl FUN_0200ADCC
+ ldr r0, _0207E498 ; =0x00000674
+ mov r1, #0x7d
+ ldr r0, [r4, r0]
+ bl FUN_0200A914
+ add r5, r0, #0x0
+ ldr r1, _0207E494 ; =0x0000067C
+ add r2, r5, #0x0
+ ldr r0, [r4, r1]
+ add r1, r1, #0x4
+ ldr r1, [r4, r1]
+ bl FUN_0200B7B8
+ add r0, r5, #0x0
+ bl FUN_02021A20
+ mov r1, #0x91
+ lsl r1, r1, #0x2
+ ldr r1, [r4, r1]
+ ldr r2, _0207E484 ; =0x00010200
+ add r0, r4, #0x0
+ add r1, #0x60
+ mov r3, #0x0
+ bl FUN_0207D998
+ ldr r2, _0207E49C ; =0x0000022A
+ mov r0, #0x1
+ mov r1, #0x1a
+ mov r3, #0x13
+ bl FUN_0200A86C
+ ldr r1, _0207E490 ; =0x00000282
+ mov r2, #0x1a
+ lsl r2, r2, #0x6
+ ldrb r1, [r4, r1]
+ ldr r2, [r4, r2]
+ add r5, r0, #0x0
+ bl FUN_0200A8E0
+ add r0, r5, #0x0
+ bl FUN_0200A8B8
+ mov r1, #0x91
+ lsl r1, r1, #0x2
+ ldr r1, [r4, r1]
+ ldr r2, _0207E484 ; =0x00010200
+ add r0, r4, #0x0
+ add r1, #0x70
+ mov r3, #0x0
+ bl FUN_0207D998
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_02019220
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ add r0, #0x10
+ bl FUN_02019220
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ add r0, #0x20
+ bl FUN_02019220
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ add r0, #0x30
+ bl FUN_02019220
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ add r0, #0x40
+ bl FUN_02019220
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ add r0, #0x50
+ bl FUN_02019220
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ add r0, #0x60
+ bl FUN_02019220
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ add r0, #0x70
+ bl FUN_02019220
+ add sp, #0x18
+ pop {r3-r5, pc}
+ nop
+_0207E484: .word 0x00010200
+_0207E488: .word 0x0000027A
+_0207E48C: .word 0x0000027E
+_0207E490: .word 0x00000282
+_0207E494: .word 0x0000067C
+_0207E498: .word 0x00000674
+_0207E49C: .word 0x0000022A
+
+ thumb_func_start FUN_0207E4A0
+FUN_0207E4A0: ; 0x0207E4A0
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0x0
+ add r0, #0x34
+ bl FUN_02019220
+ mov r0, #0x59
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_02019220
+ mov r0, #0x93
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ ldrb r0, [r0, #0x12]
+ cmp r0, #0x3
+ beq _0207E4C6
+ cmp r0, #0x4
+ bne _0207E580
+_0207E4C6:
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ add r0, #0x10
+ bl FUN_02019620
+ ldr r2, _0207E584 ; =0x00000674
+ mov r1, #0xa5
+ ldr r0, [r4, r2]
+ add r2, #0xc
+ ldr r2, [r4, r2]
+ bl FUN_0200A8E0
+ mov r1, #0x91
+ lsl r1, r1, #0x2
+ ldr r1, [r4, r1]
+ ldr r2, _0207E588 ; =0x000F0E00
+ add r0, r4, #0x0
+ add r1, #0x10
+ mov r3, #0x0
+ bl FUN_0207D998
+ ldr r1, _0207E58C ; =0x0000029B
+ ldr r2, _0207E584 ; =0x00000674
+ ldrb r1, [r4, r1]
+ ldr r0, [r4, r2]
+ add r2, #0xc
+ ldr r2, [r4, r2]
+ add r1, #0xa6
+ bl FUN_0200A8E0
+ mov r0, #0x10
+ str r0, [sp, #0x0]
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ ldr r0, _0207E590 ; =0x00010200
+ mov r1, #0x0
+ str r0, [sp, #0x8]
+ mov r0, #0x91
+ mov r2, #0x1a
+ str r1, [sp, #0xc]
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ lsl r2, r2, #0x6
+ ldr r2, [r4, r2]
+ add r0, #0x10
+ add r3, r1, #0x0
+ bl FUN_0201BDE0
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ add r0, #0x10
+ bl FUN_02019220
+ mov r0, #0x93
+ lsl r0, r0, #0x2
+ ldr r1, [r4, r0]
+ ldrb r1, [r1, #0x12]
+ cmp r1, #0x3
+ bne _0207E580
+ sub r0, #0x8
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ bl FUN_02019620
+ ldr r2, _0207E584 ; =0x00000674
+ mov r1, #0xa3
+ ldr r0, [r4, r2]
+ add r2, #0xc
+ ldr r2, [r4, r2]
+ bl FUN_0200A8E0
+ mov r1, #0x91
+ lsl r1, r1, #0x2
+ ldr r1, [r4, r1]
+ ldr r2, _0207E588 ; =0x000F0E00
+ add r0, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0207D998
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_02019220
+ mov r1, #0x91
+ lsl r1, r1, #0x2
+ ldr r1, [r4, r1]
+ add r0, r4, #0x0
+ bl FUN_0207CFAC
+_0207E580:
+ add sp, #0x10
+ pop {r4, pc}
+ .balign 4
+_0207E584: .word 0x00000674
+_0207E588: .word 0x000F0E00
+_0207E58C: .word 0x0000029B
+_0207E590: .word 0x00010200
+
+ thumb_func_start FUN_0207E594
+FUN_0207E594: ; 0x0207E594
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, #0x44
+ bl FUN_02019220
+ mov r0, #0x93
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ ldrb r0, [r0, #0x12]
+ cmp r0, #0x2
+ bne _0207E5B4
+ add r0, r4, #0x0
+ mov r1, #0x9b
+ bl FUN_0207D924
+ b _0207E5BC
+_0207E5B4:
+ add r0, r4, #0x0
+ mov r1, #0x81
+ bl FUN_0207D924
+_0207E5BC:
+ mov r1, #0x8d
+ lsl r1, r1, #0x2
+ add r0, r4, #0x0
+ add r1, r4, r1
+ bl FUN_0207CFAC
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ bl FUN_02019620
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ add r0, #0x10
+ bl FUN_02019620
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ add r0, #0x20
+ bl FUN_02019620
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ add r0, #0x30
+ bl FUN_02019620
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_0207EA44
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_0207EA44
+ add r0, r4, #0x0
+ mov r1, #0x2
+ bl FUN_0207EA44
+ add r0, r4, #0x0
+ mov r1, #0x3
+ bl FUN_0207EA44
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_02019220
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ add r0, #0x10
+ bl FUN_02019220
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ add r0, #0x20
+ bl FUN_02019220
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ add r0, #0x30
+ bl FUN_02019220
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0207E650
+FUN_0207E650: ; 0x0207E650
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, #0x54
+ bl FUN_02019220
+ mov r0, #0x93
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ ldrb r0, [r0, #0x12]
+ cmp r0, #0x2
+ bne _0207E670
+ add r0, r4, #0x0
+ mov r1, #0x9f
+ bl FUN_0207D924
+ b _0207E678
+_0207E670:
+ add r0, r4, #0x0
+ mov r1, #0x9e
+ bl FUN_0207D924
+_0207E678:
+ mov r1, #0x8d
+ lsl r1, r1, #0x2
+ add r0, r4, #0x0
+ add r1, r4, r1
+ bl FUN_0207CFAC
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ bl FUN_02019620
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ add r0, #0x10
+ bl FUN_02019620
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ add r0, #0x20
+ bl FUN_02019620
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ add r0, #0x30
+ bl FUN_02019620
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_0207EA44
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_0207EA44
+ add r0, r4, #0x0
+ mov r1, #0x2
+ bl FUN_0207EA44
+ add r0, r4, #0x0
+ mov r1, #0x3
+ bl FUN_0207EA44
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_02019220
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ add r0, #0x10
+ bl FUN_02019220
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ add r0, #0x20
+ bl FUN_02019220
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ add r0, #0x30
+ bl FUN_02019220
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0207E70C
+FUN_0207E70C: ; 0x0207E70C
+ push {r3-r4, lr}
+ sub sp, #0x4
+ add r4, r0, #0x0
+ mov r0, #0x7d
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_02019220
+ mov r0, #0x79
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_02019220
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ bl FUN_02019620
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldr r2, _0207E780 ; =0x00000699
+ add r0, r4, #0x0
+ ldrb r2, [r4, r2]
+ mov r1, #0xb7
+ mov r3, #0x3
+ bl FUN_0207DA48
+ mov r1, #0x91
+ lsl r1, r1, #0x2
+ ldr r1, [r4, r1]
+ ldr r2, _0207E784 ; =0x00010200
+ add r0, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0207D998
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_02019220
+ ldr r0, _0207E780 ; =0x00000699
+ ldrb r0, [r4, r0]
+ cmp r0, #0x0
+ beq _0207E77A
+ add r0, r4, #0x0
+ mov r1, #0xb4
+ bl FUN_0207D924
+ mov r1, #0x8d
+ lsl r1, r1, #0x2
+ add r0, r4, #0x0
+ add r1, r4, r1
+ bl FUN_0207CFAC
+_0207E77A:
+ add sp, #0x4
+ pop {r3-r4, pc}
+ nop
+_0207E780: .word 0x00000699
+_0207E784: .word 0x00010200
+
+ thumb_func_start FUN_0207E788
+FUN_0207E788: ; 0x0207E788
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0x0
+ mov r0, #0x71
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_02019220
+ add r0, r4, #0x0
+ mov r1, #0xa1
+ bl FUN_0207D924
+ mov r1, #0x8d
+ lsl r1, r1, #0x2
+ add r0, r4, #0x0
+ add r1, r4, r1
+ bl FUN_0207CFAC
+ mov r0, #0x93
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ ldrb r0, [r0, #0x12]
+ cmp r0, #0x3
+ beq _0207E7BC
+ cmp r0, #0x4
+ bne _0207E82C
+_0207E7BC:
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ add r0, #0x10
+ bl FUN_02019620
+ ldr r2, _0207E830 ; =0x00000674
+ mov r1, #0xa5
+ ldr r0, [r4, r2]
+ add r2, #0xc
+ ldr r2, [r4, r2]
+ bl FUN_0200A8E0
+ mov r1, #0x91
+ lsl r1, r1, #0x2
+ ldr r1, [r4, r1]
+ ldr r2, _0207E834 ; =0x000F0E00
+ add r0, r4, #0x0
+ add r1, #0x10
+ mov r3, #0x0
+ bl FUN_0207D998
+ ldr r1, _0207E838 ; =0x0000029B
+ ldr r2, _0207E830 ; =0x00000674
+ ldrb r1, [r4, r1]
+ ldr r0, [r4, r2]
+ add r2, #0xc
+ ldr r2, [r4, r2]
+ add r1, #0xa6
+ bl FUN_0200A8E0
+ mov r0, #0x10
+ str r0, [sp, #0x0]
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ ldr r0, _0207E83C ; =0x00010200
+ mov r1, #0x0
+ str r0, [sp, #0x8]
+ mov r0, #0x91
+ mov r2, #0x1a
+ str r1, [sp, #0xc]
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ lsl r2, r2, #0x6
+ ldr r2, [r4, r2]
+ add r0, #0x10
+ add r3, r1, #0x0
+ bl FUN_0201BDE0
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ add r0, #0x10
+ bl FUN_02019220
+_0207E82C:
+ add sp, #0x10
+ pop {r4, pc}
+ .balign 4
+_0207E830: .word 0x00000674
+_0207E834: .word 0x000F0E00
+_0207E838: .word 0x0000029B
+_0207E83C: .word 0x00010200
+
+ thumb_func_start FUN_0207E840
+FUN_0207E840: ; 0x0207E840
+ push {r4-r6, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ mov r1, #0x0
+ add r0, #0x10
+ bl FUN_02019620
+ ldr r0, _0207E994 ; =0x00000674
+ mov r1, #0xba
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ mov r1, #0x0
+ add r4, r0, #0x0
+ ldr r2, _0207E998 ; =0x0000067C
+ str r1, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ ldr r0, [r5, r2]
+ add r2, #0x1d
+ ldrb r2, [r5, r2]
+ mov r3, #0x3
+ bl FUN_0200AD38
+ ldr r1, _0207E998 ; =0x0000067C
+ add r2, r4, #0x0
+ ldr r0, [r5, r1]
+ add r1, r1, #0x4
+ ldr r1, [r5, r1]
+ bl FUN_0200B7B8
+ add r0, r4, #0x0
+ bl FUN_02021A20
+ mov r1, #0x1a
+ lsl r1, r1, #0x6
+ mov r0, #0x0
+ ldr r1, [r5, r1]
+ add r2, r0, #0x0
+ bl FUN_02002E14
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ mov r0, #0x38
+ sub r0, r0, r1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ mov r1, #0x0
+ mov r2, #0x1a
+ str r1, [sp, #0x0]
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ ldr r0, _0207E99C ; =0x00010200
+ lsl r2, r2, #0x6
+ str r0, [sp, #0x8]
+ mov r0, #0x91
+ str r1, [sp, #0xc]
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ ldr r2, [r5, r2]
+ add r0, #0x10
+ add r3, r4, #0x0
+ bl FUN_0201BDE0
+ ldr r0, _0207E994 ; =0x00000674
+ mov r1, #0xb9
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ add r6, r0, #0x0
+ mov r0, #0x0
+ add r1, r6, #0x0
+ add r2, r0, #0x0
+ bl FUN_02002E14
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ sub r0, r4, r0
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ ldr r0, _0207E99C ; =0x00010200
+ add r2, r6, #0x0
+ str r0, [sp, #0x8]
+ mov r0, #0x91
+ str r1, [sp, #0xc]
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ add r3, r4, #0x0
+ add r0, #0x10
+ bl FUN_0201BDE0
+ add r0, r6, #0x0
+ bl FUN_02021A20
+ ldr r0, _0207E994 ; =0x00000674
+ mov r1, #0xb8
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ mov r1, #0x0
+ ldr r2, _0207E998 ; =0x0000067C
+ add r6, r0, #0x0
+ add r3, r2, #0x0
+ str r1, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ ldr r0, [r5, r2]
+ add r2, #0x1c
+ add r3, #0x1b
+ ldrb r2, [r5, r2]
+ ldrb r3, [r5, r3]
+ lsl r2, r2, #0x2
+ add r2, r3, r2
+ add r2, r2, #0x1
+ mov r3, #0x3
+ bl FUN_0200AD38
+ ldr r1, _0207E998 ; =0x0000067C
+ add r2, r6, #0x0
+ ldr r0, [r5, r1]
+ add r1, r1, #0x4
+ ldr r1, [r5, r1]
+ bl FUN_0200B7B8
+ add r0, r6, #0x0
+ bl FUN_02021A20
+ mov r1, #0x1a
+ lsl r1, r1, #0x6
+ mov r0, #0x0
+ ldr r1, [r5, r1]
+ add r2, r0, #0x0
+ bl FUN_02002E14
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ sub r0, r4, r0
+ lsl r0, r0, #0x18
+ mov r1, #0x0
+ lsr r3, r0, #0x18
+ mov r2, #0x1a
+ str r1, [sp, #0x0]
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ ldr r0, _0207E99C ; =0x00010200
+ lsl r2, r2, #0x6
+ str r0, [sp, #0x8]
+ mov r0, #0x91
+ str r1, [sp, #0xc]
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ ldr r2, [r5, r2]
+ add r0, #0x10
+ bl FUN_0201BDE0
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ add r0, #0x10
+ bl FUN_02019220
+ add sp, #0x10
+ pop {r4-r6, pc}
+ .balign 4
+_0207E994: .word 0x00000674
+_0207E998: .word 0x0000067C
+_0207E99C: .word 0x00010200
+
+ thumb_func_start FUN_0207E9A0
+FUN_0207E9A0: ; 0x0207E9A0
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ add r0, #0x20
+ bl FUN_02019620
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ add r0, #0x30
+ bl FUN_02019620
+ ldr r0, _0207EA34 ; =0x0000069A
+ mov r1, #0x3
+ ldrb r0, [r4, r0]
+ bl FUN_0207FC5C
+ ldr r2, _0207EA38 ; =0x00000678
+ add r1, r0, #0x0
+ ldr r0, [r4, r2]
+ add r2, #0x8
+ ldr r2, [r4, r2]
+ bl FUN_0200A8E0
+ mov r1, #0x91
+ lsl r1, r1, #0x2
+ ldr r1, [r4, r1]
+ ldr r2, _0207EA3C ; =0x000F0E00
+ add r0, r4, #0x0
+ add r1, #0x20
+ mov r3, #0x0
+ bl FUN_0207D998
+ mov r0, #0x93
+ lsl r0, r0, #0x2
+ ldr r1, _0207EA34 ; =0x0000069A
+ ldr r0, [r4, r0]
+ ldrb r1, [r4, r1]
+ ldr r0, [r0, #0x20]
+ bl FUN_0207FCC0
+ ldr r2, _0207EA38 ; =0x00000678
+ add r1, r0, #0x0
+ ldr r0, [r4, r2]
+ add r2, #0x8
+ ldr r2, [r4, r2]
+ bl FUN_0200A8E0
+ mov r1, #0x91
+ lsl r1, r1, #0x2
+ ldr r1, [r4, r1]
+ ldr r2, _0207EA40 ; =0x00010200
+ add r0, r4, #0x0
+ add r1, #0x30
+ mov r3, #0x0
+ bl FUN_0207D998
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ add r0, #0x20
+ bl FUN_02019220
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ add r0, #0x30
+ bl FUN_02019220
+ pop {r4, pc}
+ .balign 4
+_0207EA34: .word 0x0000069A
+_0207EA38: .word 0x00000678
+_0207EA3C: .word 0x000F0E00
+_0207EA40: .word 0x00010200
+
+ thumb_func_start FUN_0207EA44
+FUN_0207EA44: ; 0x0207EA44
+ push {r4-r7, lr}
+ sub sp, #0x24
+ add r5, r0, #0x0
+ mov r0, #0x91
+ add r7, r1, #0x0
+ lsl r0, r0, #0x2
+ lsl r6, r7, #0x4
+ ldr r4, [r5, r0]
+ cmp r7, #0x4
+ beq _0207EA76
+ lsl r1, r7, #0x1
+ add r2, r5, r1
+ add r1, r0, #0x0
+ add r1, #0x40
+ ldrh r1, [r2, r1]
+ add r2, r0, #0x0
+ add r2, #0x48
+ str r1, [sp, #0x20]
+ add r1, r5, r7
+ ldrb r2, [r1, r2]
+ add r0, #0x4c
+ str r2, [sp, #0x1c]
+ ldrb r0, [r1, r0]
+ str r0, [sp, #0x18]
+ b _0207EA88
+_0207EA76:
+ add r0, #0x8
+ ldr r0, [r5, r0]
+ mov r1, #0x0
+ ldrh r0, [r0, #0x18]
+ str r0, [sp, #0x20]
+ bl FUN_0206AB30
+ str r0, [sp, #0x1c]
+ str r0, [sp, #0x18]
+_0207EA88:
+ ldr r2, _0207EB54 ; =0x00000688
+ ldr r1, [sp, #0x20]
+ ldr r0, [r5, r2]
+ sub r2, #0x8
+ ldr r2, [r5, r2]
+ bl FUN_0200A8E0
+ mov r0, #0x2
+ str r0, [sp, #0x0]
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ ldr r0, _0207EB58 ; =0x000F0E00
+ mov r2, #0x1a
+ str r0, [sp, #0x8]
+ mov r1, #0x0
+ str r1, [sp, #0xc]
+ lsl r2, r2, #0x6
+ ldr r2, [r5, r2]
+ add r0, r4, r6
+ mov r3, #0x1
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x20]
+ ldr r2, _0207EB5C ; =0x00000674
+ cmp r0, #0x0
+ beq _0207EB10
+ ldr r0, [r5, r2]
+ add r2, #0xc
+ ldr r2, [r5, r2]
+ mov r1, #0x87
+ bl FUN_0200A8E0
+ mov r3, #0x10
+ mov r2, #0x1a
+ str r3, [sp, #0x0]
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ ldr r0, _0207EB60 ; =0x00010200
+ mov r1, #0x0
+ str r0, [sp, #0x8]
+ str r1, [sp, #0xc]
+ lsl r2, r2, #0x6
+ ldr r2, [r5, r2]
+ add r0, r4, r6
+ bl FUN_0201BDE0
+ add r0, r7, #0x0
+ add r0, #0x8d
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x1c]
+ add r1, r7, #0x0
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x18]
+ add r7, #0x88
+ str r0, [sp, #0x8]
+ mov r0, #0x2
+ str r0, [sp, #0xc]
+ mov r0, #0x3c
+ str r0, [sp, #0x10]
+ mov r0, #0x10
+ str r0, [sp, #0x14]
+ add r0, r5, #0x0
+ mov r2, #0x75
+ add r3, r7, #0x0
+ bl FUN_0207DA94
+ add sp, #0x24
+ pop {r4-r7, pc}
+_0207EB10:
+ ldr r0, [r5, r2]
+ add r2, #0xc
+ ldr r2, [r5, r2]
+ mov r1, #0x99
+ bl FUN_0200A8E0
+ mov r1, #0x1a
+ lsl r1, r1, #0x6
+ mov r0, #0x0
+ ldr r1, [r5, r1]
+ add r2, r0, #0x0
+ bl FUN_02002E14
+ add r3, r0, #0x0
+ mov r0, #0x10
+ str r0, [sp, #0x0]
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ ldr r0, _0207EB60 ; =0x00010200
+ mov r2, #0x1a
+ str r0, [sp, #0x8]
+ mov r1, #0x0
+ add r0, r4, r6
+ lsr r4, r3, #0x1
+ mov r3, #0x3c
+ str r1, [sp, #0xc]
+ lsl r2, r2, #0x6
+ ldr r2, [r5, r2]
+ sub r3, r3, r4
+ bl FUN_0201BDE0
+ add sp, #0x24
+ pop {r4-r7, pc}
+ nop
+_0207EB54: .word 0x00000688
+_0207EB58: .word 0x000F0E00
+_0207EB5C: .word 0x00000674
+_0207EB60: .word 0x00010200
+
+ thumb_func_start FUN_0207EB64
+FUN_0207EB64: ; 0x0207EB64
+ push {r3-r6, lr}
+ sub sp, #0x4
+ add r5, r0, #0x0
+ mov r0, #0x65
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ add r4, r1, #0x0
+ bl FUN_02019220
+ mov r0, #0x69
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ bl FUN_02019220
+ mov r0, #0x6d
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ bl FUN_02019220
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ mov r1, #0x0
+ add r0, #0x50
+ bl FUN_02019620
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ mov r1, #0x0
+ add r0, #0x60
+ bl FUN_02019620
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ mov r1, #0x0
+ add r0, #0x70
+ bl FUN_02019620
+ add r0, r4, #0x0
+ mov r1, #0x2
+ bl FUN_0206AB18
+ add r2, r0, #0x0
+ cmp r2, #0x1
+ bhi _0207EBD2
+ ldr r2, _0207EC88 ; =0x00000674
+ mov r1, #0x9a
+ ldr r0, [r5, r2]
+ add r2, #0xc
+ ldr r2, [r5, r2]
+ bl FUN_0200A8E0
+ b _0207EBE0
+_0207EBD2:
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ mov r1, #0x96
+ mov r3, #0x3
+ bl FUN_0207DA48
+_0207EBE0:
+ mov r1, #0x91
+ lsl r1, r1, #0x2
+ ldr r1, [r5, r1]
+ ldr r2, _0207EC8C ; =0x00010200
+ add r0, r5, #0x0
+ add r1, #0x50
+ mov r3, #0x2
+ bl FUN_0207D998
+ add r0, r4, #0x0
+ mov r1, #0x4
+ bl FUN_0206AB18
+ add r2, r0, #0x0
+ bne _0207EC0E
+ ldr r2, _0207EC88 ; =0x00000674
+ mov r1, #0x9a
+ ldr r0, [r5, r2]
+ add r2, #0xc
+ ldr r2, [r5, r2]
+ bl FUN_0200A8E0
+ b _0207EC1C
+_0207EC0E:
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ mov r1, #0x97
+ mov r3, #0x3
+ bl FUN_0207DA48
+_0207EC1C:
+ mov r1, #0x91
+ lsl r1, r1, #0x2
+ ldr r1, [r5, r1]
+ ldr r2, _0207EC8C ; =0x00010200
+ add r0, r5, #0x0
+ add r1, #0x60
+ mov r3, #0x2
+ bl FUN_0207D998
+ ldr r2, _0207EC90 ; =0x0000024B
+ mov r0, #0x1
+ mov r1, #0x1a
+ mov r3, #0x13
+ bl FUN_0200A86C
+ mov r2, #0x1a
+ lsl r2, r2, #0x6
+ ldr r2, [r5, r2]
+ add r1, r4, #0x0
+ add r6, r0, #0x0
+ bl FUN_0200A8E0
+ mov r1, #0x91
+ lsl r1, r1, #0x2
+ ldr r1, [r5, r1]
+ ldr r2, _0207EC8C ; =0x00010200
+ add r0, r5, #0x0
+ add r1, #0x70
+ mov r3, #0x0
+ bl FUN_0207D998
+ add r0, r6, #0x0
+ bl FUN_0200A8B8
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ add r0, #0x50
+ bl FUN_02019220
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ add r0, #0x60
+ bl FUN_02019220
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ add r0, #0x70
+ bl FUN_02019220
+ add sp, #0x4
+ pop {r3-r6, pc}
+ .balign 4
+_0207EC88: .word 0x00000674
+_0207EC8C: .word 0x00010200
+_0207EC90: .word 0x0000024B
+
+ thumb_func_start FUN_0207EC94
+FUN_0207EC94: ; 0x0207EC94
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x65
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_0201958C
+ mov r0, #0x69
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_0201958C
+ mov r0, #0x6d
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_0201958C
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ add r0, #0x50
+ bl FUN_0201958C
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ add r0, #0x60
+ bl FUN_0201958C
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ add r0, #0x70
+ bl FUN_0201958C
+ pop {r4, pc}
+
+ thumb_func_start FUN_0207ECDC
+FUN_0207ECDC: ; 0x0207ECDC
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x93
+ lsl r0, r0, #0x2
+ ldr r1, [r4, r0]
+ ldrh r1, [r1, #0x18]
+ cmp r1, #0x0
+ beq _0207ED0E
+ sub r0, #0x8
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ add r0, #0x40
+ bl FUN_02019620
+ add r0, r4, #0x0
+ mov r1, #0x4
+ bl FUN_0207EA44
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ add r0, #0x40
+ bl FUN_02019220
+ pop {r4, pc}
+_0207ED0E:
+ sub r0, #0xc8
+ add r0, r4, r0
+ bl FUN_02019220
+ pop {r4, pc}
+
+ thumb_func_start FUN_0207ED18
+FUN_0207ED18: ; 0x0207ED18
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x61
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_0201958C
+ ldr r0, [r4, #0x0]
+ mov r1, #0x1
+ bl FUN_0201AC68
+ pop {r4, pc}
+
+ thumb_func_start FUN_0207ED30
+FUN_0207ED30: ; 0x0207ED30
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r1, [r4, r0]
+ ldr r0, _0207EDB0 ; =0x0000068D
+ ldrb r0, [r4, r0]
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1c
+ lsl r0, r0, #0x4
+ add r0, r1, r0
+ mov r1, #0x0
+ bl FUN_02019620
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r1, [r4, r0]
+ ldr r0, _0207EDB0 ; =0x0000068D
+ ldrb r0, [r4, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1c
+ lsl r0, r0, #0x4
+ add r0, r1, r0
+ mov r1, #0x0
+ bl FUN_02019620
+ ldr r1, _0207EDB0 ; =0x0000068D
+ add r0, r4, #0x0
+ ldrb r1, [r4, r1]
+ lsl r1, r1, #0x1c
+ lsr r1, r1, #0x1c
+ bl FUN_0207EA44
+ ldr r1, _0207EDB0 ; =0x0000068D
+ add r0, r4, #0x0
+ ldrb r1, [r4, r1]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x1c
+ bl FUN_0207EA44
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r1, [r4, r0]
+ ldr r0, _0207EDB0 ; =0x0000068D
+ ldrb r0, [r4, r0]
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1c
+ lsl r0, r0, #0x4
+ add r0, r1, r0
+ bl FUN_02019220
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r1, [r4, r0]
+ ldr r0, _0207EDB0 ; =0x0000068D
+ ldrb r0, [r4, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1c
+ lsl r0, r0, #0x4
+ add r0, r1, r0
+ bl FUN_02019220
+ pop {r4, pc}
+ nop
+_0207EDB0: .word 0x0000068D
+
+ thumb_func_start FUN_0207EDB4
+FUN_0207EDB4: ; 0x0207EDB4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, _0207EE20 ; =0x0000068C
+ ldrsb r0, [r5, r0]
+ cmp r0, #0x3
+ bne _0207EDEE
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ add r0, #0x50
+ bl FUN_0201958C
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ add r0, #0x60
+ bl FUN_0201958C
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ add r0, #0x70
+ bl FUN_0201958C
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r4, [r5, r0]
+ add r4, #0x70
+ b _0207EDF6
+_0207EDEE:
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r4, [r5, r0]
+ add r4, #0x50
+_0207EDF6:
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_02019620
+ ldr r2, _0207EE24 ; =0x00000674
+ mov r1, #0x9c
+ ldr r0, [r5, r2]
+ add r2, #0xc
+ ldr r2, [r5, r2]
+ bl FUN_0200A8E0
+ ldr r2, _0207EE28 ; =0x00010200
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r3, #0x0
+ bl FUN_0207D998
+ add r0, r4, #0x0
+ bl FUN_02019220
+ pop {r3-r5, pc}
+ .balign 4
+_0207EE20: .word 0x0000068C
+_0207EE24: .word 0x00000674
+_0207EE28: .word 0x00010200
+
+ thumb_func_start FUN_0207EE2C
+FUN_0207EE2C: ; 0x0207EE2C
+ push {r4-r6, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ add r4, r1, #0x0
+ add r0, #0x50
+ mov r1, #0x0
+ bl FUN_02019620
+ add r0, r4, #0x0
+ mov r1, #0xa
+ bl FUN_0206AB18
+ bl FUN_0208315C
+ add r4, r0, #0x0
+ mov r0, #0x0
+ mov r1, #0x1a
+ mov r2, #0xc5
+ mov r3, #0x13
+ bl FUN_0200A86C
+ mov r2, #0x1a
+ lsl r2, r2, #0x6
+ ldr r2, [r5, r2]
+ add r1, r4, #0x0
+ add r6, r0, #0x0
+ bl FUN_0200A8E0
+ mov r1, #0x0
+ mov r2, #0x1a
+ str r1, [sp, #0x0]
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ ldr r0, _0207EEAC ; =0x00010200
+ lsl r2, r2, #0x6
+ str r0, [sp, #0x8]
+ mov r0, #0x91
+ str r1, [sp, #0xc]
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ ldr r2, [r5, r2]
+ add r0, #0x50
+ add r3, r1, #0x0
+ bl FUN_0201BDE0
+ add r0, r6, #0x0
+ bl FUN_0200A8B8
+ mov r0, #0x75
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ bl FUN_02019220
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ add r0, #0x50
+ bl FUN_02019220
+ add sp, #0x10
+ pop {r4-r6, pc}
+ .balign 4
+_0207EEAC: .word 0x00010200
+
+ thumb_func_start FUN_0207EEB0
+FUN_0207EEB0: ; 0x0207EEB0
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x75
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_0201958C
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ add r0, #0x50
+ bl FUN_0201958C
+ pop {r4, pc}
+
+ thumb_func_start FUN_0207EECC
+FUN_0207EECC: ; 0x0207EECC
+ push {r4-r6, lr}
+ sub sp, #0x10
+ add r4, r0, #0x0
+ cmp r1, #0x4
+ bgt _0207EEF0
+ cmp r1, #0x0
+ blt _0207EF0E
+ add r0, r1, r1
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0207EEE6: ; jump table (using 16-bit offset)
+ .short _0207EEF6 - _0207EEE6 - 2; case 0
+ .short _0207EEFA - _0207EEE6 - 2; case 1
+ .short _0207EEFE - _0207EEE6 - 2; case 2
+ .short _0207EF02 - _0207EEE6 - 2; case 3
+ .short _0207EF06 - _0207EEE6 - 2; case 4
+_0207EEF0:
+ cmp r1, #0xfe
+ beq _0207EF0A
+ b _0207EF0E
+_0207EEF6:
+ mov r5, #0xac
+ b _0207EF10
+_0207EEFA:
+ mov r5, #0xae
+ b _0207EF10
+_0207EEFE:
+ mov r5, #0xaf
+ b _0207EF10
+_0207EF02:
+ mov r5, #0xb0
+ b _0207EF10
+_0207EF06:
+ mov r5, #0xad
+ b _0207EF10
+_0207EF0A:
+ mov r5, #0xb1
+ b _0207EF10
+_0207EF0E:
+ mov r5, #0xb2
+_0207EF10:
+ mov r0, #0x91
+ lsl r0, r0, #0x2
+ ldr r6, [r4, r0]
+ ldr r2, _0207EF60 ; =0x000003E2
+ add r6, #0x20
+ add r0, r6, #0x0
+ mov r1, #0x1
+ mov r3, #0xd
+ bl FUN_0200D0BC
+ add r0, r6, #0x0
+ mov r1, #0xf
+ bl FUN_02019620
+ ldr r2, _0207EF64 ; =0x00000674
+ add r1, r5, #0x0
+ ldr r0, [r4, r2]
+ add r2, #0xc
+ ldr r2, [r4, r2]
+ bl FUN_0200A8E0
+ mov r3, #0x0
+ mov r2, #0x1a
+ str r3, [sp, #0x0]
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ ldr r0, _0207EF68 ; =0x0001020F
+ lsl r2, r2, #0x6
+ str r0, [sp, #0x8]
+ str r3, [sp, #0xc]
+ ldr r2, [r4, r2]
+ add r0, r6, #0x0
+ mov r1, #0x1
+ bl FUN_0201BDE0
+ add r0, r6, #0x0
+ bl FUN_02019220
+ add sp, #0x10
+ pop {r4-r6, pc}
+ .balign 4
+_0207EF60: .word 0x000003E2
+_0207EF64: .word 0x00000674
+_0207EF68: .word 0x0001020F
+
+ thumb_func_start FUN_0207EF6C
+FUN_0207EF6C: ; 0x0207EF6C
+ push {r3-r4, lr}
+ sub sp, #0x4
+ blx FUN_020BB7F4
+ blx FUN_020C7E94
+ blx FUN_020C7D28
+ ldr r0, _0207EFEC ; =0x04000060
+ ldr r1, _0207EFF0 ; =0xFFFFCFFD
+ ldrh r2, [r0, #0x0]
+ ldr r3, _0207EFF4 ; =0x0000CFFB
+ and r2, r1
+ strh r2, [r0, #0x0]
+ ldrh r2, [r0, #0x0]
+ and r2, r3
+ strh r2, [r0, #0x0]
+ add r2, r1, #0x2
+ ldrh r4, [r0, #0x0]
+ add r1, r1, #0x2
+ sub r3, #0x1c
+ and r4, r2
+ mov r2, #0x8
+ orr r2, r4
+ strh r2, [r0, #0x0]
+ ldrh r2, [r0, #0x0]
+ and r2, r1
+ mov r1, #0x10
+ orr r1, r2
+ strh r1, [r0, #0x0]
+ ldrh r1, [r0, #0x0]
+ and r1, r3
+ strh r1, [r0, #0x0]
+ mov r0, #0x0
+ add r1, r0, #0x0
+ add r2, r0, #0x0
+ add r3, r0, #0x0
+ blx FUN_020C7C28
+ mov r0, #0x0
+ ldr r2, _0207EFF8 ; =0x00007FFF
+ add r1, r0, #0x0
+ mov r3, #0x3f
+ str r0, [sp, #0x0]
+ blx FUN_020C7B3C
+ ldr r1, _0207EFFC ; =0x04000540
+ mov r0, #0x0
+ str r0, [r1, #0x0]
+ ldr r0, _0207F000 ; =0xBFFF0000
+ str r0, [r1, #0x40]
+ mov r0, #0x1
+ add r1, r0, #0x0
+ bl FUN_0201E6E4
+ ldr r1, _0207F004 ; =0x04000008
+ mov r0, #0x3
+ ldrh r2, [r1, #0x0]
+ bic r2, r0
+ mov r0, #0x2
+ orr r0, r2
+ strh r0, [r1, #0x0]
+ add sp, #0x4
+ pop {r3-r4, pc}
+ .balign 4
+_0207EFEC: .word 0x04000060
+_0207EFF0: .word 0xFFFFCFFD
+_0207EFF4: .word 0x0000CFFB
+_0207EFF8: .word 0x00007FFF
+_0207EFFC: .word 0x04000540
+_0207F000: .word 0xBFFF0000
+_0207F004: .word 0x04000008
+
+ thumb_func_start FUN_0207F008
+FUN_0207F008: ; 0x0207F008
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _0207F05C ; =0x0000068C
+ ldrsb r0, [r4, r0]
+ cmp r0, #0x4
+ bne _0207F046
+ bl FUN_020222AC
+ bl FUN_0201EBA4
+ ldr r2, _0207F060 ; =0x04000440
+ mov r3, #0x0
+ add r1, r2, #0x0
+ str r3, [r2, #0x0]
+ add r1, #0x14
+ str r3, [r1, #0x0]
+ mov r0, #0x2
+ str r0, [r2, #0x0]
+ str r3, [r1, #0x0]
+ blx FUN_020B849C
+ mov r0, #0xb7
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_0207F108
+ blx FUN_020B849C
+ add r0, r4, #0x0
+ bl FUN_0207F1A4
+_0207F046:
+ blx FUN_020B02C8
+ mov r0, #0xae
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_02006ED4
+ ldr r0, _0207F064 ; =0x04000540
+ mov r1, #0x1
+ str r1, [r0, #0x0]
+ pop {r4, pc}
+ .balign 4
+_0207F05C: .word 0x0000068C
+_0207F060: .word 0x04000440
+_0207F064: .word 0x04000540
+
+ thumb_func_start FUN_0207F068
+FUN_0207F068: ; 0x0207F068
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0xad
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_0201EB70
+ mov r0, #0x2d
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ bl FUN_02014D9C
+ mov r0, #0x2d
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ bl FUN_02014C28
+ mov r0, #0xae
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_020072E8
+ pop {r4, pc}
+
+ thumb_func_start FUN_0207F098
+FUN_0207F098: ; 0x0207F098
+ push {r3-r4, lr}
+ sub sp, #0x1c
+ ldr r3, _0207F100 ; =0x020FB5CC
+ add r4, r0, #0x0
+ ldmia r3!, {r0-r1}
+ add r2, sp, #0x10
+ stmia r2!, {r0-r1}
+ ldr r0, [r3, #0x0]
+ add r1, sp, #0x8
+ str r0, [r2, #0x0]
+ mov r0, #0x0
+ strh r0, [r1, #0x0]
+ strh r0, [r1, #0x2]
+ strh r0, [r1, #0x4]
+ strh r0, [r1, #0x6]
+ mov r0, #0x13
+ bl FUN_0201EB64
+ mov r1, #0xad
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ mov r2, #0x1
+ str r2, [sp, #0x0]
+ ldr r0, [r4, r1]
+ lsl r1, r2, #0x10
+ str r0, [sp, #0x4]
+ ldr r3, _0207F104 ; =0x000005C1
+ add r0, sp, #0x10
+ add r2, sp, #0x8
+ bl FUN_0201ED10
+ mov r2, #0xad
+ lsl r2, r2, #0x2
+ mov r1, #0x19
+ ldr r2, [r4, r2]
+ mov r0, #0x0
+ lsl r1, r1, #0xe
+ bl FUN_0201EC94
+ mov r0, #0xad
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_0201EC88
+ mov r0, #0xad
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_0201EB8C
+ add sp, #0x1c
+ pop {r3-r4, pc}
+ nop
+_0207F100: .word 0x020FB5CC
+_0207F104: .word 0x000005C1
+
+ thumb_func_start FUN_0207F108
+FUN_0207F108: ; 0x0207F108
+ push {r4-r7}
+ add r4, r0, #0x0
+ ldr r0, _0207F170 ; =0x121400C0
+ ldr r1, _0207F174 ; =0x040004A4
+ ldr r2, _0207F178 ; =0x00003FE8
+ str r0, [r1, #0x0]
+ mov r0, #0x1
+ str r0, [r1, #0x5c]
+ ldr r0, _0207F17C ; =0x0400048C
+ mov r3, #0x0
+ sub r1, #0x24
+_0207F11E:
+ str r2, [r1, #0x0]
+ ldrh r7, [r4, #0x2]
+ ldrh r5, [r4, #0x0]
+ ldrh r6, [r4, #0x4]
+ lsl r7, r7, #0x10
+ orr r5, r7
+ str r5, [r0, #0x0]
+ str r6, [r0, #0x0]
+ str r2, [r1, #0x0]
+ ldrh r7, [r4, #0x8]
+ ldrh r5, [r4, #0x6]
+ ldrh r6, [r4, #0xa]
+ lsl r7, r7, #0x10
+ orr r5, r7
+ str r5, [r0, #0x0]
+ str r6, [r0, #0x0]
+ str r2, [r1, #0x0]
+ ldrh r7, [r4, #0x14]
+ ldrh r5, [r4, #0x12]
+ ldrh r6, [r4, #0x16]
+ lsl r7, r7, #0x10
+ orr r5, r7
+ str r5, [r0, #0x0]
+ str r6, [r0, #0x0]
+ str r2, [r1, #0x0]
+ ldrh r7, [r4, #0xe]
+ ldrh r5, [r4, #0xc]
+ ldrh r6, [r4, #0x10]
+ lsl r7, r7, #0x10
+ orr r5, r7
+ str r5, [r0, #0x0]
+ add r3, r3, #0x1
+ add r4, #0x18
+ str r6, [r0, #0x0]
+ cmp r3, #0x4
+ blo _0207F11E
+ ldr r0, _0207F180 ; =0x04000504
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+ pop {r4-r7}
+ bx lr
+ .balign 4
+_0207F170: .word 0x121400C0
+_0207F174: .word 0x040004A4
+_0207F178: .word 0x00003FE8
+_0207F17C: .word 0x0400048C
+_0207F180: .word 0x04000504
+
+ thumb_func_start FUN_0207F184
+FUN_0207F184: ; 0x0207F184
+ mov r2, #0x0
+ ldrsh r3, [r0, r2]
+ ldrsh r2, [r1, r2]
+ add r2, r3, r2
+ strh r2, [r0, #0x0]
+ mov r2, #0x2
+ ldrsh r3, [r0, r2]
+ ldrsh r2, [r1, r2]
+ add r2, r3, r2
+ strh r2, [r0, #0x2]
+ mov r2, #0x4
+ ldrsh r3, [r0, r2]
+ ldrsh r1, [r1, r2]
+ add r1, r3, r1
+ strh r1, [r0, #0x4]
+ bx lr
+
+ thumb_func_start FUN_0207F1A4
+FUN_0207F1A4: ; 0x0207F1A4
+ push {r3-r7, lr}
+ sub sp, #0x18
+ mov r2, #0xff
+ lsl r2, r2, #0x2
+ add r1, r0, #0x0
+ ldr r1, [r1, r2]
+ str r0, [sp, #0x0]
+ cmp r1, #0x4
+ bne _0207F1BE
+ bl FUN_0207D598
+ add sp, #0x18
+ pop {r3-r7, pc}
+_0207F1BE:
+ cmp r1, #0x3
+ bne _0207F1EA
+ add r6, r0, #0x0
+ add r7, r2, #0x0
+ mov r0, #0xb7
+ mov r5, #0x0
+ sub r7, #0x60
+ lsl r0, r0, #0x2
+_0207F1CE:
+ add r4, r6, r7
+ add r3, r6, r0
+ mov r2, #0xc
+_0207F1D4:
+ ldrh r1, [r4, #0x0]
+ add r4, r4, #0x2
+ strh r1, [r3, #0x0]
+ add r3, r3, #0x2
+ sub r2, r2, #0x1
+ bne _0207F1D4
+ add r5, r5, #0x1
+ add r6, #0x18
+ cmp r5, #0x4
+ blo _0207F1CE
+ b _0207F274
+_0207F1EA:
+ mov r0, #0x0
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x0]
+ sub r2, #0xc0
+ add r0, r0, r2
+ str r0, [sp, #0x14]
+ mov r0, #0xb7
+ lsl r0, r0, #0x2
+ ldr r1, [sp, #0x0]
+ add r2, r0, #0x0
+ add r1, r1, r0
+ str r1, [sp, #0x10]
+ ldr r1, [sp, #0x0]
+ add r2, #0x66
+ add r1, r1, r2
+ str r1, [sp, #0xc]
+ ldr r1, [sp, #0x0]
+ add r2, r0, #0x6
+ add r1, r1, r2
+ str r1, [sp, #0x8]
+ add r2, r0, #0x0
+ ldr r1, [sp, #0x0]
+ add r2, #0x6c
+ add r7, r1, r2
+ add r2, r0, #0x0
+ add r2, #0xc
+ add r6, r1, r2
+ add r2, r0, #0x0
+ add r2, #0x72
+ add r0, #0x12
+ add r4, r1, r2
+ add r5, r1, r0
+_0207F22A:
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x14]
+ bl FUN_0207F184
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0xc]
+ bl FUN_0207F184
+ add r0, r6, #0x0
+ add r1, r7, #0x0
+ bl FUN_0207F184
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0207F184
+ ldr r0, [sp, #0x14]
+ add r7, #0x18
+ add r0, #0x18
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x10]
+ add r6, #0x18
+ add r0, #0x18
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0xc]
+ add r4, #0x18
+ add r0, #0x18
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x8]
+ add r5, #0x18
+ add r0, #0x18
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x4]
+ add r0, r0, #0x1
+ str r0, [sp, #0x4]
+ cmp r0, #0x4
+ blo _0207F22A
+_0207F274:
+ mov r1, #0xff
+ ldr r0, [sp, #0x0]
+ lsl r1, r1, #0x2
+ ldr r0, [r0, r1]
+ add r2, r0, #0x1
+ ldr r0, [sp, #0x0]
+ str r2, [r0, r1]
+ ldr r0, [r0, r1]
+ cmp r0, #0x4
+ bne _0207F294
+ ldr r0, [sp, #0x0]
+ mov r1, #0x1
+ bl FUN_0207D418
+ add sp, #0x18
+ pop {r3-r7, pc}
+_0207F294:
+ ldr r0, [sp, #0x0]
+ mov r1, #0x0
+ bl FUN_0207D418
+ add sp, #0x18
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0207F2A0
+FUN_0207F2A0: ; 0x0207F2A0
+ push {r3-r7, lr}
+ sub sp, #0x18
+ ldr r1, _0207F420 ; =0x0000068C
+ ldrsb r1, [r0, r1]
+ cmp r1, #0x4
+ beq _0207F2AE
+ b _0207F41A
+_0207F2AE:
+ ldr r7, _0207F424 ; =0x020FB60C
+ add r3, sp, #0x0
+ ldrh r1, [r7, #0x8]
+ strh r1, [r3, #0x12]
+ ldrh r1, [r7, #0xa]
+ strh r1, [r3, #0x14]
+ ldrh r1, [r7, #0xc]
+ strh r1, [r3, #0x16]
+ mov r1, #0xb7
+ lsl r1, r1, #0x2
+ ldrh r5, [r3, #0x12]
+ add r2, r1, #0x2
+ strh r5, [r0, r1]
+ ldrh r4, [r3, #0x14]
+ strh r4, [r0, r2]
+ ldrh r6, [r3, #0x16]
+ add r2, r1, #0x4
+ strh r6, [r0, r2]
+ add r2, r1, #0x6
+ strh r5, [r0, r2]
+ add r2, r1, #0x0
+ add r2, #0x8
+ strh r4, [r0, r2]
+ add r2, r1, #0x0
+ add r2, #0xa
+ strh r6, [r0, r2]
+ add r2, r1, #0x0
+ add r2, #0xc
+ strh r5, [r0, r2]
+ add r2, r1, #0x0
+ add r2, #0xe
+ strh r4, [r0, r2]
+ add r2, r1, #0x0
+ add r2, #0x10
+ strh r6, [r0, r2]
+ add r2, r1, #0x0
+ add r2, #0x12
+ strh r5, [r0, r2]
+ add r2, r1, #0x0
+ add r2, #0x14
+ strh r4, [r0, r2]
+ add r2, r1, #0x0
+ add r2, #0x16
+ strh r6, [r0, r2]
+ ldrh r2, [r7, #0x3e]
+ ldr r6, _0207F428 ; =0x020FB64C
+ add r7, r1, #0x0
+ strh r2, [r3, #0xc]
+ ldrh r2, [r6, #0x0]
+ add r7, #0x1c
+ strh r2, [r3, #0xe]
+ ldrh r2, [r6, #0x2]
+ strh r2, [r3, #0x10]
+ add r2, r1, #0x0
+ ldrh r5, [r3, #0xc]
+ add r2, #0x18
+ strh r5, [r0, r2]
+ add r2, r1, #0x0
+ ldrh r4, [r3, #0xe]
+ add r2, #0x1a
+ strh r4, [r0, r2]
+ ldrh r2, [r3, #0x10]
+ strh r2, [r0, r7]
+ add r7, r1, #0x0
+ add r7, #0x1e
+ strh r5, [r0, r7]
+ add r7, r1, #0x0
+ add r7, #0x20
+ strh r4, [r0, r7]
+ add r7, r1, #0x0
+ add r7, #0x22
+ strh r2, [r0, r7]
+ add r7, r1, #0x0
+ add r7, #0x24
+ strh r5, [r0, r7]
+ add r7, r1, #0x0
+ add r7, #0x26
+ strh r4, [r0, r7]
+ add r7, r1, #0x0
+ add r7, #0x28
+ strh r2, [r0, r7]
+ add r7, r1, #0x0
+ add r7, #0x2a
+ strh r5, [r0, r7]
+ add r5, r1, #0x0
+ add r5, #0x2c
+ strh r4, [r0, r5]
+ add r4, r1, #0x0
+ add r4, #0x2e
+ strh r2, [r0, r4]
+ ldrh r2, [r6, #0x34]
+ strh r2, [r3, #0x6]
+ ldrh r2, [r6, #0x36]
+ strh r2, [r3, #0x8]
+ ldrh r2, [r6, #0x38]
+ add r6, r1, #0x0
+ add r6, #0x34
+ strh r2, [r3, #0xa]
+ add r2, r1, #0x0
+ ldrh r5, [r3, #0x6]
+ add r2, #0x30
+ strh r5, [r0, r2]
+ add r2, r1, #0x0
+ ldrh r4, [r3, #0x8]
+ add r2, #0x32
+ strh r4, [r0, r2]
+ ldrh r2, [r3, #0xa]
+ strh r2, [r0, r6]
+ add r6, r1, #0x0
+ add r6, #0x36
+ strh r5, [r0, r6]
+ add r6, r1, #0x0
+ add r6, #0x38
+ strh r4, [r0, r6]
+ add r6, r1, #0x0
+ add r6, #0x3a
+ strh r2, [r0, r6]
+ add r6, r1, #0x0
+ add r6, #0x3c
+ strh r5, [r0, r6]
+ add r6, r1, #0x0
+ add r6, #0x3e
+ strh r4, [r0, r6]
+ add r6, r1, #0x0
+ add r6, #0x40
+ strh r2, [r0, r6]
+ add r6, r1, #0x0
+ add r6, #0x42
+ strh r5, [r0, r6]
+ add r5, r1, #0x0
+ add r5, #0x44
+ strh r4, [r0, r5]
+ add r4, r1, #0x0
+ add r4, #0x46
+ strh r2, [r0, r4]
+ ldr r2, _0207F42C ; =0x020FB68C
+ ldrh r4, [r2, #0x2a]
+ strh r4, [r3, #0x0]
+ ldrh r4, [r2, #0x2c]
+ strh r4, [r3, #0x2]
+ ldrh r2, [r2, #0x2e]
+ strh r2, [r3, #0x4]
+ add r2, r1, #0x0
+ ldrh r5, [r3, #0x0]
+ add r2, #0x48
+ strh r5, [r0, r2]
+ add r2, r1, #0x0
+ ldrh r4, [r3, #0x2]
+ add r2, #0x4a
+ strh r4, [r0, r2]
+ ldrh r2, [r3, #0x4]
+ add r3, r1, #0x0
+ add r3, #0x4c
+ strh r2, [r0, r3]
+ add r3, r1, #0x0
+ add r3, #0x4e
+ strh r5, [r0, r3]
+ add r3, r1, #0x0
+ add r3, #0x50
+ strh r4, [r0, r3]
+ add r3, r1, #0x0
+ add r3, #0x52
+ strh r2, [r0, r3]
+ add r3, r1, #0x0
+ add r3, #0x54
+ strh r5, [r0, r3]
+ add r3, r1, #0x0
+ add r3, #0x56
+ strh r4, [r0, r3]
+ add r3, r1, #0x0
+ add r3, #0x58
+ strh r2, [r0, r3]
+ add r3, r1, #0x0
+ add r3, #0x5a
+ strh r5, [r0, r3]
+ add r3, r1, #0x0
+ add r3, #0x5c
+ strh r4, [r0, r3]
+ add r1, #0x5e
+ strh r2, [r0, r1]
+ bl FUN_0207F608
+_0207F41A:
+ add sp, #0x18
+ pop {r3-r7, pc}
+ nop
+_0207F420: .word 0x0000068C
+_0207F424: .word 0x020FB60C
+_0207F428: .word 0x020FB64C
+_0207F42C: .word 0x020FB68C
+
+ thumb_func_start FUN_0207F430
+FUN_0207F430: ; 0x0207F430
+ push {r4-r5}
+ cmp r2, #0xff
+ bne _0207F446
+ ldrh r2, [r0, #0x0]
+ strh r2, [r1, #0x0]
+ ldrh r2, [r0, #0x2]
+ strh r2, [r1, #0x2]
+ ldrh r0, [r0, #0x4]
+ strh r0, [r1, #0x4]
+ pop {r4-r5}
+ bx lr
+_0207F446:
+ cmp r2, #0x0
+ bne _0207F45A
+ ldrh r2, [r0, #0x6]
+ strh r2, [r1, #0x0]
+ ldrh r2, [r0, #0x8]
+ strh r2, [r1, #0x2]
+ ldrh r0, [r0, #0xa]
+ strh r0, [r1, #0x4]
+ pop {r4-r5}
+ bx lr
+_0207F45A:
+ mov r3, #0x6
+ ldrsh r5, [r0, r3]
+ mov r3, #0xc
+ ldrsh r3, [r0, r3]
+ add r4, r3, #0x0
+ mul r4, r2
+ add r3, r5, r4
+ strh r3, [r1, #0x0]
+ mov r3, #0x8
+ ldrsh r5, [r0, r3]
+ mov r3, #0xe
+ ldrsh r3, [r0, r3]
+ add r4, r3, #0x0
+ mul r4, r2
+ add r3, r5, r4
+ strh r3, [r1, #0x2]
+ mov r3, #0xa
+ ldrsh r4, [r0, r3]
+ mov r3, #0x10
+ ldrsh r0, [r0, r3]
+ mul r2, r0
+ add r0, r4, r2
+ strh r0, [r1, #0x4]
+ pop {r4-r5}
+ bx lr
+
+ thumb_func_start FUN_0207F48C
+FUN_0207F48C: ; 0x0207F48C
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ mov r0, #0x0
+ ldrsh r1, [r4, r0]
+ ldrsh r0, [r5, r0]
+ add r6, r2, #0x0
+ sub r7, r1, r0
+ add r0, r7, #0x0
+ blx FUN_020EB534
+ ldr r1, _0207F600 ; =0x45800000
+ blx FUN_020EB084
+ ldr r1, _0207F604 ; =0x40800000
+ blx FUN_020EB084
+ mov r1, #0x0
+ blx FUN_020EAEF0
+ bls _0207F4E0
+ add r0, r7, #0x0
+ blx FUN_020EB534
+ ldr r1, _0207F600 ; =0x45800000
+ blx FUN_020EB084
+ ldr r1, _0207F604 ; =0x40800000
+ blx FUN_020EB084
+ add r1, r0, #0x0
+ ldr r0, _0207F600 ; =0x45800000
+ blx FUN_020EB5C4
+ add r1, r0, #0x0
+ mov r0, #0x3f
+ lsl r0, r0, #0x18
+ blx FUN_020EA980
+ blx FUN_020EB4C0
+ b _0207F506
+_0207F4E0:
+ add r0, r7, #0x0
+ blx FUN_020EB534
+ ldr r1, _0207F600 ; =0x45800000
+ blx FUN_020EB084
+ ldr r1, _0207F604 ; =0x40800000
+ blx FUN_020EB084
+ add r1, r0, #0x0
+ ldr r0, _0207F600 ; =0x45800000
+ blx FUN_020EB5C4
+ mov r1, #0x3f
+ lsl r1, r1, #0x18
+ blx FUN_020EB7B0
+ blx FUN_020EB4C0
+_0207F506:
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ strh r0, [r6, #0x0]
+ mov r0, #0x2
+ ldrsh r1, [r4, r0]
+ ldrsh r0, [r5, r0]
+ sub r7, r1, r0
+ add r0, r7, #0x0
+ blx FUN_020EB534
+ ldr r1, _0207F600 ; =0x45800000
+ blx FUN_020EB084
+ ldr r1, _0207F604 ; =0x40800000
+ blx FUN_020EB084
+ mov r1, #0x0
+ blx FUN_020EAEF0
+ bls _0207F558
+ add r0, r7, #0x0
+ blx FUN_020EB534
+ ldr r1, _0207F600 ; =0x45800000
+ blx FUN_020EB084
+ ldr r1, _0207F604 ; =0x40800000
+ blx FUN_020EB084
+ add r1, r0, #0x0
+ ldr r0, _0207F600 ; =0x45800000
+ blx FUN_020EB5C4
+ add r1, r0, #0x0
+ mov r0, #0x3f
+ lsl r0, r0, #0x18
+ blx FUN_020EA980
+ blx FUN_020EB4C0
+ b _0207F57E
+_0207F558:
+ add r0, r7, #0x0
+ blx FUN_020EB534
+ ldr r1, _0207F600 ; =0x45800000
+ blx FUN_020EB084
+ ldr r1, _0207F604 ; =0x40800000
+ blx FUN_020EB084
+ add r1, r0, #0x0
+ ldr r0, _0207F600 ; =0x45800000
+ blx FUN_020EB5C4
+ mov r1, #0x3f
+ lsl r1, r1, #0x18
+ blx FUN_020EB7B0
+ blx FUN_020EB4C0
+_0207F57E:
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ strh r0, [r6, #0x2]
+ mov r0, #0x4
+ ldrsh r1, [r4, r0]
+ ldrsh r0, [r5, r0]
+ sub r4, r1, r0
+ add r0, r4, #0x0
+ blx FUN_020EB534
+ ldr r1, _0207F600 ; =0x45800000
+ blx FUN_020EB084
+ ldr r1, _0207F604 ; =0x40800000
+ blx FUN_020EB084
+ mov r1, #0x0
+ blx FUN_020EAEF0
+ bls _0207F5D0
+ add r0, r4, #0x0
+ blx FUN_020EB534
+ ldr r1, _0207F600 ; =0x45800000
+ blx FUN_020EB084
+ ldr r1, _0207F604 ; =0x40800000
+ blx FUN_020EB084
+ add r1, r0, #0x0
+ ldr r0, _0207F600 ; =0x45800000
+ blx FUN_020EB5C4
+ add r1, r0, #0x0
+ mov r0, #0x3f
+ lsl r0, r0, #0x18
+ blx FUN_020EA980
+ blx FUN_020EB4C0
+ b _0207F5F6
+_0207F5D0:
+ add r0, r4, #0x0
+ blx FUN_020EB534
+ ldr r1, _0207F600 ; =0x45800000
+ blx FUN_020EB084
+ ldr r1, _0207F604 ; =0x40800000
+ blx FUN_020EB084
+ add r1, r0, #0x0
+ ldr r0, _0207F600 ; =0x45800000
+ blx FUN_020EB5C4
+ mov r1, #0x3f
+ lsl r1, r1, #0x18
+ blx FUN_020EB7B0
+ blx FUN_020EB4C0
+_0207F5F6:
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ strh r0, [r6, #0x4]
+ pop {r3-r7, pc}
+ nop
+_0207F600: .word 0x45800000
+_0207F604: .word 0x40800000
+
+ thumb_func_start FUN_0207F608
+FUN_0207F608: ; 0x0207F608
+ push {r3-r7, lr}
+ sub sp, #0x28
+ ldr r2, _0207F7D0 ; =0x00000295
+ add r5, r0, #0x0
+ mov r1, #0xe7
+ lsl r1, r1, #0x2
+ ldrb r2, [r5, r2]
+ ldr r0, _0207F7D4 ; =0x020FB5D8
+ add r1, r5, r1
+ bl FUN_0207F430
+ ldr r2, _0207F7D8 ; =0x00000296
+ ldr r1, _0207F7DC ; =0x000003A2
+ ldrb r2, [r5, r2]
+ ldr r0, _0207F7E0 ; =0x020FB5EA
+ add r1, r5, r1
+ bl FUN_0207F430
+ ldr r2, _0207F7E4 ; =0x00000297
+ ldr r1, _0207F7E8 ; =0x000003AE
+ ldrb r2, [r5, r2]
+ ldr r0, _0207F7EC ; =0x020FB5FC
+ add r1, r5, r1
+ bl FUN_0207F430
+ mov r1, #0xea
+ lsl r1, r1, #0x2
+ ldr r0, _0207F7F0 ; =0x020FB60E
+ add r1, r5, r1
+ mov r2, #0x0
+ bl FUN_0207F430
+ ldr r2, _0207F7F4 ; =0x00000299
+ mov r1, #0xed
+ lsl r1, r1, #0x2
+ ldrb r2, [r5, r2]
+ ldr r0, _0207F7F8 ; =0x020FB620
+ add r1, r5, r1
+ bl FUN_0207F430
+ ldr r2, _0207F7D0 ; =0x00000295
+ ldr r1, _0207F7FC ; =0x000003BA
+ ldrb r2, [r5, r2]
+ ldr r0, _0207F800 ; =0x020FB632
+ add r1, r5, r1
+ bl FUN_0207F430
+ ldr r1, _0207F804 ; =0x000003C6
+ ldr r0, _0207F808 ; =0x020FB644
+ add r1, r5, r1
+ mov r2, #0x0
+ bl FUN_0207F430
+ mov r2, #0xa6
+ lsl r2, r2, #0x2
+ mov r1, #0xf
+ lsl r1, r1, #0x6
+ ldrb r2, [r5, r2]
+ ldr r0, _0207F80C ; =0x020FB656
+ add r1, r5, r1
+ bl FUN_0207F430
+ ldr r2, _0207F7F4 ; =0x00000299
+ mov r1, #0xf3
+ lsl r1, r1, #0x2
+ ldrb r2, [r5, r2]
+ ldr r0, _0207F810 ; =0x020FB668
+ add r1, r5, r1
+ bl FUN_0207F430
+ ldr r1, _0207F814 ; =0x000003D2
+ ldr r0, _0207F818 ; =0x020FB67A
+ add r1, r5, r1
+ mov r2, #0x0
+ bl FUN_0207F430
+ ldr r2, _0207F7E4 ; =0x00000297
+ ldr r1, _0207F81C ; =0x000003DE
+ ldrb r2, [r5, r2]
+ ldr r0, _0207F820 ; =0x020FB68C
+ add r1, r5, r1
+ bl FUN_0207F430
+ mov r2, #0xa6
+ lsl r2, r2, #0x2
+ mov r1, #0xf6
+ lsl r1, r1, #0x2
+ ldrb r2, [r5, r2]
+ ldr r0, _0207F824 ; =0x020FB69E
+ add r1, r5, r1
+ bl FUN_0207F430
+ mov r1, #0xf9
+ lsl r1, r1, #0x2
+ ldr r0, _0207F828 ; =0x020FB6B0
+ add r1, r5, r1
+ mov r2, #0x0
+ bl FUN_0207F430
+ ldr r2, _0207F7D8 ; =0x00000296
+ ldr r1, _0207F82C ; =0x000003EA
+ ldrb r2, [r5, r2]
+ ldr r0, _0207F830 ; =0x020FB6C2
+ add r1, r5, r1
+ bl FUN_0207F430
+ ldr r2, _0207F7E4 ; =0x00000297
+ ldr r1, _0207F834 ; =0x000003F6
+ ldrb r2, [r5, r2]
+ ldr r0, _0207F838 ; =0x020FB6D4
+ add r1, r5, r1
+ bl FUN_0207F430
+ mov r2, #0xa6
+ lsl r2, r2, #0x2
+ mov r1, #0x3f
+ lsl r1, r1, #0x4
+ ldrb r2, [r5, r2]
+ ldr r0, _0207F83C ; =0x020FB6E6
+ add r1, r5, r1
+ bl FUN_0207F430
+ mov r0, #0x0
+ str r0, [sp, #0x24]
+ mov r0, #0xcf
+ lsl r0, r0, #0x2
+ add r1, r5, r0
+ str r1, [sp, #0x20]
+ add r1, r0, #0x0
+ add r1, #0x60
+ add r1, r5, r1
+ str r1, [sp, #0x1c]
+ add r1, r0, #0x0
+ sub r1, #0x60
+ add r1, r5, r1
+ str r1, [sp, #0x18]
+ add r1, r0, #0x6
+ add r1, r5, r1
+ str r1, [sp, #0x14]
+ add r1, r0, #0x0
+ add r1, #0x66
+ add r1, r5, r1
+ str r1, [sp, #0x10]
+ add r1, r0, #0x0
+ sub r1, #0x5a
+ add r1, r5, r1
+ str r1, [sp, #0xc]
+ add r1, r0, #0x0
+ add r1, #0xc
+ add r1, r5, r1
+ str r1, [sp, #0x8]
+ add r1, r0, #0x0
+ add r1, #0x6c
+ add r1, r5, r1
+ str r1, [sp, #0x4]
+ add r1, r0, #0x0
+ sub r1, #0x54
+ add r1, r5, r1
+ str r1, [sp, #0x0]
+ add r1, r0, #0x0
+ add r1, #0x12
+ add r7, r5, r1
+ add r1, r0, #0x0
+ add r1, #0x72
+ sub r0, #0x4e
+ add r6, r5, r1
+ add r4, r5, r0
+_0207F756:
+ ldr r0, [sp, #0x18]
+ ldr r1, [sp, #0x1c]
+ ldr r2, [sp, #0x20]
+ bl FUN_0207F48C
+ ldr r0, [sp, #0xc]
+ ldr r1, [sp, #0x10]
+ ldr r2, [sp, #0x14]
+ bl FUN_0207F48C
+ ldr r0, [sp, #0x0]
+ ldr r1, [sp, #0x4]
+ ldr r2, [sp, #0x8]
+ bl FUN_0207F48C
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ add r2, r7, #0x0
+ bl FUN_0207F48C
+ ldr r0, [sp, #0x20]
+ add r7, #0x18
+ add r0, #0x18
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x1c]
+ add r6, #0x18
+ add r0, #0x18
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x18]
+ add r4, #0x18
+ add r0, #0x18
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x14]
+ add r0, #0x18
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x10]
+ add r0, #0x18
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0xc]
+ add r0, #0x18
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x8]
+ add r0, #0x18
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x4]
+ add r0, #0x18
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x0]
+ add r0, #0x18
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x24]
+ add r0, r0, #0x1
+ str r0, [sp, #0x24]
+ cmp r0, #0x4
+ blo _0207F756
+ mov r0, #0xff
+ mov r1, #0x0
+ lsl r0, r0, #0x2
+ str r1, [r5, r0]
+ add sp, #0x28
+ pop {r3-r7, pc}
+ .balign 4
+_0207F7D0: .word 0x00000295
+_0207F7D4: .word 0x020FB5D8
+_0207F7D8: .word 0x00000296
+_0207F7DC: .word 0x000003A2
+_0207F7E0: .word 0x020FB5EA
+_0207F7E4: .word 0x00000297
+_0207F7E8: .word 0x000003AE
+_0207F7EC: .word 0x020FB5FC
+_0207F7F0: .word 0x020FB60E
+_0207F7F4: .word 0x00000299
+_0207F7F8: .word 0x020FB620
+_0207F7FC: .word 0x000003BA
+_0207F800: .word 0x020FB632
+_0207F804: .word 0x000003C6
+_0207F808: .word 0x020FB644
+_0207F80C: .word 0x020FB656
+_0207F810: .word 0x020FB668
+_0207F814: .word 0x000003D2
+_0207F818: .word 0x020FB67A
+_0207F81C: .word 0x000003DE
+_0207F820: .word 0x020FB68C
+_0207F824: .word 0x020FB69E
+_0207F828: .word 0x020FB6B0
+_0207F82C: .word 0x000003EA
+_0207F830: .word 0x020FB6C2
+_0207F834: .word 0x000003F6
+_0207F838: .word 0x020FB6D4
+_0207F83C: .word 0x020FB6E6
+
+ thumb_func_start FUN_0207F840
+FUN_0207F840: ; 0x0207F840
+ push {r4, lr}
+ sub sp, #0x20
+ add r4, r0, #0x0
+ mov r0, #0x13
+ bl FUN_02006D98
+ mov r1, #0xae
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ add r0, r4, #0x0
+ bl FUN_0207B628
+ add r1, r0, #0x0
+ mov r0, #0x93
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ ldrb r0, [r0, #0x11]
+ cmp r0, #0x2
+ add r0, sp, #0x10
+ bne _0207F870
+ mov r2, #0x2
+ bl FUN_02068B70
+ b _0207F876
+_0207F870:
+ mov r2, #0x2
+ bl FUN_02068B68
+_0207F876:
+ mov r1, #0xaf
+ lsl r1, r1, #0x2
+ add r0, r4, r1
+ sub r1, #0x60
+ ldrh r1, [r4, r1]
+ bl FUN_02069010
+ mov r0, #0x97
+ lsl r0, r0, #0x2
+ ldrh r0, [r4, r0]
+ mov r1, #0x1c
+ bl FUN_02068678
+ mov r1, #0x1
+ eor r0, r1
+ mov r1, #0xb6
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ add r0, r1, #0x0
+ mov r2, #0x0
+ str r2, [sp, #0x0]
+ sub r0, #0x1c
+ str r2, [sp, #0x4]
+ add r0, r4, r0
+ str r0, [sp, #0x8]
+ str r2, [sp, #0xc]
+ sub r1, #0x20
+ ldr r0, [r4, r1]
+ add r1, sp, #0x10
+ mov r2, #0x34
+ mov r3, #0x68
+ bl FUN_020073A0
+ mov r2, #0xb5
+ lsl r2, r2, #0x2
+ str r0, [r4, r2]
+ ldr r0, [r4, r2]
+ add r2, r2, #0x4
+ ldr r2, [r4, r2]
+ mov r1, #0x23
+ bl FUN_02007558
+ add sp, #0x20
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0207F8D0
+FUN_0207F8D0: ; 0x0207F8D0
+ push {r3-r4, lr}
+ sub sp, #0xc
+ mov r1, #0x2a
+ add r4, r0, #0x0
+ lsl r1, r1, #0x4
+ ldr r0, [r4, r1]
+ lsl r0, r0, #0x3
+ lsr r0, r0, #0x1f
+ beq _0207F904
+ mov r2, #0x0
+ add r0, r1, #0x0
+ str r2, [sp, #0x0]
+ add r0, #0x38
+ ldr r0, [r4, r0]
+ mov r3, #0x2
+ str r0, [sp, #0x4]
+ add r0, r1, #0x0
+ str r2, [sp, #0x8]
+ add r0, #0x30
+ add r1, #0x34
+ ldr r0, [r4, r0]
+ ldr r1, [r4, r1]
+ bl FUN_02069038
+ add sp, #0xc
+ pop {r3-r4, pc}
+_0207F904:
+ add r1, #0x34
+ ldr r0, [r4, r1]
+ mov r1, #0x1
+ bl FUN_02007314
+ mov r1, #0x0
+ mov r2, #0xb6
+ str r1, [sp, #0x0]
+ lsl r2, r2, #0x2
+ ldr r0, [r4, r2]
+ mov r3, #0x2
+ str r0, [sp, #0x4]
+ str r1, [sp, #0x8]
+ add r0, r2, #0x0
+ sub r1, r2, #0x4
+ sub r2, #0x7c
+ sub r0, #0x8
+ ldrh r2, [r4, r2]
+ ldr r0, [r4, r0]
+ ldr r1, [r4, r1]
+ bl FUN_02069038
+ add sp, #0xc
+ pop {r3-r4, pc}
+
+ thumb_func_start FUN_0207F934
+FUN_0207F934: ; 0x0207F934
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x2d
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ mov r1, #0x0
+ bl FUN_02014D9C
+ mov r0, #0xae
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_020072E8
+ add r0, r4, #0x0
+ bl FUN_0207F840
+ add r0, r4, #0x0
+ bl FUN_0207F8D0
+ pop {r4, pc}
+
+ thumb_func_start FUN_0207F95C
+FUN_0207F95C: ; 0x0207F95C
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x93
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ ldrb r1, [r0, #0x12]
+ cmp r1, #0x3
+ bhi _0207F9AC
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0207F978: ; jump table (using 16-bit offset)
+ .short _0207F980 - _0207F978 - 2; case 0
+ .short _0207F980 - _0207F978 - 2; case 1
+ .short _0207F9AC - _0207F978 - 2; case 2
+ .short _0207F9AC - _0207F978 - 2; case 3
+_0207F980:
+ ldr r0, [r0, #0x2c]
+ ldr r1, _0207F9C4 ; =0x0000068F
+ cmp r0, #0x0
+ beq _0207F992
+ ldrb r2, [r4, r1]
+ mov r0, #0xf
+ bic r2, r0
+ strb r2, [r4, r1]
+ b _0207F9BA
+_0207F992:
+ ldrb r2, [r4, r1]
+ mov r0, #0xf
+ bic r2, r0
+ mov r0, #0x1
+ orr r0, r2
+ strb r0, [r4, r1]
+ mov r1, #0x4
+ ldr r0, [r4, #0x0]
+ mov r2, #0x0
+ add r3, r1, #0x0
+ bl FUN_0201AEE4
+ b _0207F9BA
+_0207F9AC:
+ ldr r1, _0207F9C4 ; =0x0000068F
+ mov r0, #0xf
+ ldrb r2, [r4, r1]
+ bic r2, r0
+ mov r0, #0xf
+ orr r0, r2
+ strb r0, [r4, r1]
+_0207F9BA:
+ add r0, r4, #0x0
+ bl FUN_0207FA38
+ pop {r4, pc}
+ nop
+_0207F9C4: .word 0x0000068F
+
+ thumb_func_start FUN_0207F9C8
+FUN_0207F9C8: ; 0x0207F9C8
+ push {r3-r7, lr}
+ ldr r0, [r0, #0x0]
+ add r4, r1, #0x0
+ mov r1, #0x4
+ add r5, r2, #0x0
+ bl FUN_0201886C
+ add r7, r0, #0x0
+ lsl r0, r5, #0x2
+ add r1, r5, r0
+ ldrb r2, [r4, #0x0]
+ mov r0, #0x1
+ mov r3, #0x0
+ add r5, r2, #0x0
+ and r5, r0
+ mov r0, #0xf
+ mul r0, r5
+ lsr r5, r2, #0x1
+ mov r2, #0x96
+ mul r2, r5
+ add r0, r0, r2
+ add r0, r1, r0
+ add r0, #0x1e
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ mov r12, r0
+_0207F9FC:
+ mov r0, #0x1e
+ add r1, r3, #0x0
+ mul r1, r0
+ mov r0, r12
+ mov r2, #0x0
+ add r5, r0, r1
+_0207FA08:
+ ldrb r0, [r4, #0x1]
+ ldrb r6, [r4, #0x3]
+ lsl r1, r0, #0xc
+ add r0, r2, r5
+ add r1, r1, r0
+ add r6, r3, r6
+ lsl r6, r6, #0x5
+ ldrb r0, [r4, #0x2]
+ add r6, r2, r6
+ add r0, r0, r6
+ lsl r0, r0, #0x1
+ strh r1, [r7, r0]
+ add r0, r2, #0x1
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ cmp r2, #0x5
+ blo _0207FA08
+ add r0, r3, #0x1
+ lsl r0, r0, #0x18
+ lsr r3, r0, #0x18
+ cmp r3, #0x5
+ blo _0207F9FC
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0207FA38
+FUN_0207FA38: ; 0x0207FA38
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ ldr r0, _0207FA78 ; =0x0000068F
+ ldrb r0, [r6, r0]
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1c
+ cmp r0, #0xf
+ beq _0207FA74
+ lsl r1, r0, #0x2
+ ldr r0, _0207FA7C ; =0x02106148
+ mov r5, #0x0
+ ldr r4, [r0, r1]
+ add r7, r5, #0x0
+_0207FA52:
+ lsl r1, r5, #0x2
+ ldrb r0, [r4, r1]
+ cmp r0, #0xff
+ beq _0207FA6C
+ add r0, r6, #0x0
+ add r1, r4, r1
+ add r2, r7, #0x0
+ bl FUN_0207F9C8
+ add r0, r5, #0x1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ b _0207FA52
+_0207FA6C:
+ ldr r0, [r6, #0x0]
+ mov r1, #0x4
+ bl FUN_0201AC68
+_0207FA74:
+ pop {r3-r7, pc}
+ nop
+_0207FA78: .word 0x0000068F
+_0207FA7C: .word 0x02106148
+
+ thumb_func_start FUN_0207FA80
+FUN_0207FA80: ; 0x0207FA80
+ push {r3, lr}
+ bl FUN_0207FA98
+ mov r1, #0x0
+ mvn r1, r1
+ cmp r0, r1
+ beq _0207FA94
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ pop {r3, pc}
+_0207FA94:
+ mov r0, #0xff
+ pop {r3, pc}
+
+ thumb_func_start FUN_0207FA98
+FUN_0207FA98: ; 0x0207FA98
+ push {r3, lr}
+ ldr r1, _0207FAB8 ; =0x0000068F
+ ldrb r0, [r0, r1]
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1c
+ cmp r0, #0xf
+ bne _0207FAAC
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3, pc}
+_0207FAAC:
+ lsl r1, r0, #0x2
+ ldr r0, _0207FABC ; =0x0210613C
+ ldr r0, [r0, r1]
+ bl FUN_02020988
+ pop {r3, pc}
+ .balign 4
+_0207FAB8: .word 0x0000068F
+_0207FABC: .word 0x0210613C
+
+ thumb_func_start FUN_0207FAC0
+FUN_0207FAC0: ; 0x0207FAC0
+ push {r3-r5, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ ldr r0, _0207FB18 ; =0x0000068F
+ ldrb r0, [r5, r0]
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1c
+ cmp r0, #0xf
+ bne _0207FADA
+ mov r0, #0x0
+ add sp, #0x8
+ mvn r0, r0
+ pop {r3-r5, pc}
+_0207FADA:
+ lsl r1, r0, #0x2
+ ldr r0, _0207FB1C ; =0x0210613C
+ ldr r0, [r0, r1]
+ bl FUN_02020968
+ add r4, r0, #0x0
+ mov r0, #0x0
+ mvn r0, r0
+ cmp r4, r0
+ beq _0207FB12
+ ldr r1, _0207FB20 ; =0x0000FFFE
+ add r0, sp, #0x4
+ strh r1, [r0, #0x0]
+ add r0, sp, #0x4
+ str r0, [sp, #0x0]
+ ldr r3, _0207FB24 ; =0x021C48F8
+ ldr r0, [r5, #0x0]
+ ldrh r2, [r3, #0x1c]
+ ldrh r3, [r3, #0x1e]
+ mov r1, #0x4
+ bl FUN_0201AFBC
+ cmp r0, #0x0
+ bne _0207FB12
+ mov r0, #0x0
+ add sp, #0x8
+ mvn r0, r0
+ pop {r3-r5, pc}
+_0207FB12:
+ add r0, r4, #0x0
+ add sp, #0x8
+ pop {r3-r5, pc}
+ .balign 4
+_0207FB18: .word 0x0000068F
+_0207FB1C: .word 0x0210613C
+_0207FB20: .word 0x0000FFFE
+_0207FB24: .word 0x021C48F8
+
+ thumb_func_start FUN_0207FB28
+FUN_0207FB28: ; 0x0207FB28
+ push {r4-r6, lr}
+ ldr r1, _0207FBF4 ; =0x0000068F
+ add r5, r0, #0x0
+ ldrb r2, [r5, r1]
+ lsl r2, r2, #0x1c
+ lsr r3, r2, #0x1a
+ ldr r2, _0207FBF8 ; =0x02106148
+ ldr r4, [r2, r3]
+ add r2, r1, #0x6
+ ldrb r2, [r5, r2]
+ cmp r2, #0x0
+ beq _0207FB4A
+ cmp r2, #0x1
+ beq _0207FB84
+ cmp r2, #0x2
+ beq _0207FB8C
+ b _0207FBEE
+_0207FB4A:
+ sub r1, #0xab
+ add r0, r1, #0x0
+ bl FUN_020054C8
+ add r0, r5, #0x0
+ bl FUN_0207FA38
+ ldr r1, _0207FBFC ; =0x00000696
+ add r0, r5, #0x0
+ ldrb r1, [r5, r1]
+ mov r2, #0x2
+ lsl r1, r1, #0x2
+ add r1, r4, r1
+ bl FUN_0207F9C8
+ ldr r0, [r5, #0x0]
+ mov r1, #0x4
+ bl FUN_0201AC68
+ add r0, r5, #0x0
+ bl FUN_0207CEDC
+ ldr r0, _0207FC00 ; =0x00000694
+ mov r1, #0x0
+ strb r1, [r5, r0]
+ mov r1, #0x1
+ add r0, r0, #0x1
+ strb r1, [r5, r0]
+ b _0207FBEE
+_0207FB84:
+ mov r2, #0x2
+ add r0, r1, #0x6
+ strb r2, [r5, r0]
+ b _0207FBEE
+_0207FB8C:
+ add r2, r1, #0x5
+ ldrb r2, [r5, r2]
+ cmp r2, #0x3
+ beq _0207FBA0
+ add r0, r1, #0x5
+ ldrb r0, [r5, r0]
+ add r2, r0, #0x1
+ add r0, r1, #0x5
+ strb r2, [r5, r0]
+ b _0207FBEE
+_0207FBA0:
+ bl FUN_0207CF58
+ ldr r0, _0207FBFC ; =0x00000696
+ ldrb r6, [r5, r0]
+ add r0, r5, #0x0
+ bl FUN_0207FAC0
+ cmp r6, r0
+ beq _0207FBEE
+ mov r0, #0x2a
+ lsl r0, r0, #0x4
+ ldr r0, [r5, r0]
+ lsl r0, r0, #0x3
+ lsr r0, r0, #0x1f
+ beq _0207FBD6
+ lsl r1, r6, #0x2
+ ldrb r0, [r4, r1]
+ cmp r0, #0x1
+ beq _0207FBD6
+ cmp r0, #0x7
+ beq _0207FBD6
+ add r0, r5, #0x0
+ add r1, r4, r1
+ mov r2, #0x0
+ bl FUN_0207F9C8
+ b _0207FBE2
+_0207FBD6:
+ lsl r1, r6, #0x2
+ add r0, r5, #0x0
+ add r1, r4, r1
+ mov r2, #0x1
+ bl FUN_0207F9C8
+_0207FBE2:
+ ldr r0, [r5, #0x0]
+ mov r1, #0x4
+ bl FUN_0201AC68
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_0207FBEE:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ nop
+_0207FBF4: .word 0x0000068F
+_0207FBF8: .word 0x02106148
+_0207FBFC: .word 0x00000696
+_0207FC00: .word 0x00000694
+
+ thumb_func_start FUN_0207FC04
+FUN_0207FC04: ; 0x0207FC04
+ push {r4-r5}
+ ldr r4, _0207FC38 ; =0x0000068F
+ ldrb r3, [r0, r4]
+ lsl r3, r3, #0x1c
+ lsr r5, r3, #0x1a
+ ldr r3, _0207FC3C ; =0x02106148
+ ldr r3, [r3, r5]
+ add r5, r4, #0x7
+ ldrb r5, [r0, r5]
+ lsl r5, r5, #0x2
+ add r5, r3, r5
+ ldrb r5, [r5, #0x2]
+ lsl r5, r5, #0x3
+ add r5, #0x14
+ strh r5, [r1, #0x0]
+ add r1, r4, #0x7
+ ldrb r0, [r0, r1]
+ lsl r0, r0, #0x2
+ add r0, r3, r0
+ ldrb r0, [r0, #0x3]
+ lsl r0, r0, #0x3
+ add r0, #0x14
+ strh r0, [r2, #0x0]
+ pop {r4-r5}
+ bx lr
+ nop
+_0207FC38: .word 0x0000068F
+_0207FC3C: .word 0x02106148
+
+ thumb_func_start FUN_0207FC40
+FUN_0207FC40: ; 0x0207FC40
+ ldr r2, _0207FC54 ; =0x0000068F
+ ldrb r0, [r0, r2]
+ lsl r0, r0, #0x1c
+ lsr r2, r0, #0x1a
+ ldr r0, _0207FC58 ; =0x02106148
+ ldr r2, [r0, r2]
+ lsl r0, r1, #0x2
+ ldrb r0, [r2, r0]
+ bx lr
+ nop
+_0207FC54: .word 0x0000068F
+_0207FC58: .word 0x02106148
+
+ thumb_func_start FUN_0207FC5C
+FUN_0207FC5C: ; 0x0207FC5C
+ cmp r1, #0x4
+ bhi _0207FCA8
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0207FC6C: ; jump table (using 16-bit offset)
+ .short _0207FC76 - _0207FC6C - 2; case 0
+ .short _0207FC80 - _0207FC6C - 2; case 1
+ .short _0207FC8A - _0207FC6C - 2; case 2
+ .short _0207FC94 - _0207FC6C - 2; case 3
+ .short _0207FC9E - _0207FC6C - 2; case 4
+_0207FC76:
+ mov r1, #0xc
+ mul r1, r0
+ ldr r0, _0207FCAC ; =0x020FB788
+ ldr r0, [r0, r1]
+ bx lr
+_0207FC80:
+ mov r1, #0xc
+ mul r1, r0
+ ldr r0, _0207FCB0 ; =0x020FB78C
+ ldrh r0, [r0, r1]
+ bx lr
+_0207FC8A:
+ mov r1, #0xc
+ mul r1, r0
+ ldr r0, _0207FCB4 ; =0x020FB78E
+ ldrh r0, [r0, r1]
+ bx lr
+_0207FC94:
+ mov r1, #0xc
+ mul r1, r0
+ ldr r0, _0207FCB8 ; =0x020FB790
+ ldrh r0, [r0, r1]
+ bx lr
+_0207FC9E:
+ mov r1, #0xc
+ mul r1, r0
+ ldr r0, _0207FCBC ; =0x020FB792
+ ldrh r0, [r0, r1]
+ bx lr
+_0207FCA8:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+_0207FCAC: .word 0x020FB788
+_0207FCB0: .word 0x020FB78C
+_0207FCB4: .word 0x020FB78E
+_0207FCB8: .word 0x020FB790
+_0207FCBC: .word 0x020FB792
+
+ thumb_func_start FUN_0207FCC0
+FUN_0207FCC0: ; 0x0207FCC0
+ mov r2, #0xc
+ mul r2, r1
+ ldr r1, _0207FCDC ; =0x020FB792
+ ldrh r2, [r1, r2]
+ mov r1, #0x2
+ lsl r1, r1, #0xe
+ tst r1, r2
+ beq _0207FCD8
+ lsl r1, r2, #0x18
+ lsr r1, r1, #0x18
+ ldrb r2, [r0, r1]
+ add r2, #0x92
+_0207FCD8:
+ add r0, r2, #0x0
+ bx lr
+ .balign 4
+_0207FCDC: .word 0x020FB792
+
+ thumb_func_start FUN_0207FCE0
+FUN_0207FCE0: ; 0x0207FCE0
+ mov r1, #0xc
+ mul r1, r0
+ ldr r0, _0207FCFC ; =0x020FB792
+ ldrh r1, [r0, r1]
+ mov r0, #0x2
+ lsl r0, r0, #0xe
+ tst r0, r1
+ beq _0207FCF6
+ lsl r0, r1, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+_0207FCF6:
+ mov r0, #0xff
+ bx lr
+ nop
+_0207FCFC: .word 0x020FB792
+
+ thumb_func_start FUN_0207FD00
+FUN_0207FD00: ; 0x0207FD00
+ push {r3-r7, lr}
+ add r7, r2, #0x0
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ add r0, r7, #0x0
+ mov r1, #0x3c
+ bl FUN_02016998
+ add r4, r0, #0x0
+ mov r2, #0x65
+ str r7, [r4, #0x0]
+ mov r0, #0x1
+ mov r1, #0x1a
+ lsl r2, r2, #0x2
+ add r3, r7, #0x0
+ bl FUN_0200A86C
+ str r0, [r4, #0x4]
+ ldr r2, [r4, #0x0]
+ mov r0, #0x9
+ mov r1, #0x20
+ bl FUN_0200AA90
+ str r0, [r4, #0x8]
+ str r5, [r4, #0xc]
+ str r6, [r4, #0x10]
+ mov r0, #0x0
+ str r0, [r4, #0x14]
+ str r0, [r4, #0x18]
+ str r0, [r4, #0x1c]
+ str r0, [r4, #0x20]
+ str r0, [r4, #0x24]
+ str r0, [r4, #0x28]
+ str r0, [r4, #0x2c]
+ str r0, [r4, #0x30]
+ str r0, [r4, #0x34]
+ str r0, [r4, #0x38]
+ ldr r0, [r4, #0xc]
+ ldr r1, [r4, #0x10]
+ ldr r2, [r4, #0x0]
+ bl FUN_020806F4
+ cmp r0, #0x14
+ bls _0207FD5A
+ b _02080090
+_0207FD5A:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0207FD66: ; jump table (using 16-bit offset)
+ .short _0207FD90 - _0207FD66 - 2; case 0
+ .short _0207FDBC - _0207FD66 - 2; case 1
+ .short _0207FDE8 - _0207FD66 - 2; case 2
+ .short _0207FE14 - _0207FD66 - 2; case 3
+ .short _0207FE40 - _0207FD66 - 2; case 4
+ .short _0207FE6C - _0207FD66 - 2; case 5
+ .short _0207FE98 - _0207FD66 - 2; case 6
+ .short _0207FEC4 - _0207FD66 - 2; case 7
+ .short _0207FEF0 - _0207FD66 - 2; case 8
+ .short _0207FF1C - _0207FD66 - 2; case 9
+ .short _0207FF3E - _0207FD66 - 2; case 10
+ .short _0207FF60 - _0207FD66 - 2; case 11
+ .short _0207FF82 - _0207FD66 - 2; case 12
+ .short _0207FFA4 - _0207FD66 - 2; case 13
+ .short _0207FFC6 - _0207FD66 - 2; case 14
+ .short _0207FFE8 - _0207FD66 - 2; case 15
+ .short _02080014 - _0207FD66 - 2; case 16
+ .short _0208002E - _0207FD66 - 2; case 17
+ .short _02080046 - _0207FD66 - 2; case 18
+ .short _02080060 - _0207FD66 - 2; case 19
+ .short _02080078 - _0207FD66 - 2; case 20
+_0207FD90:
+ mov r0, #0x1
+ str r0, [r4, #0x14]
+ add r0, r4, #0x0
+ bl FUN_020800E0
+ mov r0, #0x2
+ str r0, [r4, #0x1c]
+ add r0, r4, #0x0
+ mov r1, #0x31
+ bl FUN_02080108
+ mov r0, #0x6
+ str r0, [r4, #0x24]
+ add r0, r4, #0x0
+ bl FUN_0208048C
+ mov r0, #0x7
+ str r0, [r4, #0x2c]
+ add r0, r4, #0x0
+ bl FUN_02080678
+ b _02080090
+_0207FDBC:
+ mov r0, #0x1
+ str r0, [r4, #0x14]
+ add r0, r4, #0x0
+ bl FUN_020800E0
+ mov r0, #0x2
+ str r0, [r4, #0x1c]
+ add r0, r4, #0x0
+ mov r1, #0x32
+ bl FUN_02080108
+ mov r0, #0x6
+ str r0, [r4, #0x24]
+ add r0, r4, #0x0
+ bl FUN_0208048C
+ mov r0, #0x7
+ str r0, [r4, #0x2c]
+ add r0, r4, #0x0
+ bl FUN_02080678
+ b _02080090
+_0207FDE8:
+ mov r0, #0x1
+ str r0, [r4, #0x14]
+ add r0, r4, #0x0
+ bl FUN_020800E0
+ mov r0, #0x2
+ str r0, [r4, #0x1c]
+ add r0, r4, #0x0
+ mov r1, #0x33
+ bl FUN_02080108
+ mov r0, #0x6
+ str r0, [r4, #0x24]
+ add r0, r4, #0x0
+ bl FUN_0208048C
+ mov r0, #0x7
+ str r0, [r4, #0x2c]
+ add r0, r4, #0x0
+ bl FUN_02080678
+ b _02080090
+_0207FE14:
+ mov r0, #0x1
+ str r0, [r4, #0x14]
+ add r0, r4, #0x0
+ bl FUN_020800E0
+ mov r0, #0x2
+ str r0, [r4, #0x1c]
+ add r0, r4, #0x0
+ mov r1, #0x34
+ bl FUN_02080108
+ mov r0, #0x8
+ str r0, [r4, #0x24]
+ add r0, r4, #0x0
+ bl FUN_0208048C
+ mov r0, #0x9
+ str r0, [r4, #0x2c]
+ add r0, r4, #0x0
+ bl FUN_02080678
+ b _02080090
+_0207FE40:
+ mov r0, #0x1
+ str r0, [r4, #0x14]
+ add r0, r4, #0x0
+ bl FUN_020800E0
+ mov r0, #0x2
+ str r0, [r4, #0x1c]
+ add r0, r4, #0x0
+ mov r1, #0x35
+ bl FUN_02080108
+ mov r0, #0x8
+ str r0, [r4, #0x24]
+ add r0, r4, #0x0
+ bl FUN_0208048C
+ mov r0, #0x9
+ str r0, [r4, #0x2c]
+ add r0, r4, #0x0
+ bl FUN_02080678
+ b _02080090
+_0207FE6C:
+ mov r0, #0x1
+ str r0, [r4, #0x14]
+ add r0, r4, #0x0
+ bl FUN_020800E0
+ mov r0, #0x2
+ str r0, [r4, #0x1c]
+ add r0, r4, #0x0
+ mov r1, #0x36
+ bl FUN_02080108
+ mov r0, #0x8
+ str r0, [r4, #0x24]
+ add r0, r4, #0x0
+ bl FUN_0208048C
+ mov r0, #0x9
+ str r0, [r4, #0x2c]
+ add r0, r4, #0x0
+ bl FUN_02080678
+ b _02080090
+_0207FE98:
+ mov r0, #0x1
+ str r0, [r4, #0x14]
+ add r0, r4, #0x0
+ bl FUN_020800E0
+ mov r0, #0x2
+ str r0, [r4, #0x1c]
+ add r0, r4, #0x0
+ mov r1, #0x37
+ bl FUN_02080108
+ mov r0, #0x8
+ str r0, [r4, #0x24]
+ add r0, r4, #0x0
+ bl FUN_0208048C
+ mov r0, #0x9
+ str r0, [r4, #0x2c]
+ add r0, r4, #0x0
+ bl FUN_02080678
+ b _02080090
+_0207FEC4:
+ mov r0, #0x1
+ str r0, [r4, #0x14]
+ add r0, r4, #0x0
+ bl FUN_020800E0
+ mov r0, #0x2
+ str r0, [r4, #0x1c]
+ add r0, r4, #0x0
+ mov r1, #0x38
+ bl FUN_02080108
+ mov r0, #0x7
+ str r0, [r4, #0x24]
+ add r0, r4, #0x0
+ bl FUN_0208048C
+ mov r0, #0x8
+ str r0, [r4, #0x2c]
+ add r0, r4, #0x0
+ bl FUN_02080678
+ b _02080090
+_0207FEF0:
+ mov r0, #0x1
+ str r0, [r4, #0x14]
+ add r0, r4, #0x0
+ bl FUN_020800E0
+ mov r0, #0x2
+ str r0, [r4, #0x1c]
+ add r0, r4, #0x0
+ mov r1, #0x39
+ bl FUN_02080108
+ mov r0, #0x7
+ str r0, [r4, #0x24]
+ add r0, r4, #0x0
+ bl FUN_0208048C
+ mov r0, #0x8
+ str r0, [r4, #0x2c]
+ add r0, r4, #0x0
+ bl FUN_02080678
+ b _02080090
+_0207FF1C:
+ mov r0, #0x1
+ str r0, [r4, #0x14]
+ add r0, r4, #0x0
+ bl FUN_020800E0
+ mov r0, #0x2
+ str r0, [r4, #0x1c]
+ add r0, r4, #0x0
+ mov r1, #0x3a
+ bl FUN_02080108
+ mov r0, #0x9
+ str r0, [r4, #0x24]
+ add r0, r4, #0x0
+ bl FUN_0208048C
+ b _02080090
+_0207FF3E:
+ mov r0, #0x1
+ str r0, [r4, #0x14]
+ add r0, r4, #0x0
+ bl FUN_020800E0
+ mov r0, #0x2
+ str r0, [r4, #0x1c]
+ add r0, r4, #0x0
+ mov r1, #0x3b
+ bl FUN_02080108
+ mov r0, #0x9
+ str r0, [r4, #0x24]
+ add r0, r4, #0x0
+ bl FUN_0208048C
+ b _02080090
+_0207FF60:
+ mov r0, #0x1
+ str r0, [r4, #0x14]
+ add r0, r4, #0x0
+ bl FUN_020800E0
+ mov r0, #0x2
+ str r0, [r4, #0x1c]
+ add r0, r4, #0x0
+ mov r1, #0x3c
+ bl FUN_02080108
+ mov r0, #0x9
+ str r0, [r4, #0x24]
+ add r0, r4, #0x0
+ bl FUN_0208048C
+ b _02080090
+_0207FF82:
+ mov r0, #0x1
+ str r0, [r4, #0x14]
+ add r0, r4, #0x0
+ bl FUN_020800E0
+ mov r0, #0x2
+ str r0, [r4, #0x1c]
+ add r0, r4, #0x0
+ mov r1, #0x3d
+ bl FUN_02080108
+ mov r0, #0x9
+ str r0, [r4, #0x24]
+ add r0, r4, #0x0
+ bl FUN_0208048C
+ b _02080090
+_0207FFA4:
+ mov r0, #0x1
+ str r0, [r4, #0x14]
+ add r0, r4, #0x0
+ bl FUN_020800E0
+ mov r0, #0x2
+ str r0, [r4, #0x1c]
+ add r0, r4, #0x0
+ mov r1, #0x3e
+ bl FUN_02080108
+ mov r0, #0x9
+ str r0, [r4, #0x24]
+ add r0, r4, #0x0
+ bl FUN_0208048C
+ b _02080090
+_0207FFC6:
+ mov r0, #0x1
+ str r0, [r4, #0x14]
+ add r0, r4, #0x0
+ bl FUN_020800E0
+ mov r0, #0x2
+ str r0, [r4, #0x1c]
+ add r0, r4, #0x0
+ mov r1, #0x3f
+ bl FUN_02080108
+ mov r0, #0x9
+ str r0, [r4, #0x24]
+ add r0, r4, #0x0
+ bl FUN_0208048C
+ b _02080090
+_0207FFE8:
+ mov r0, #0x1
+ str r0, [r4, #0x14]
+ add r0, r4, #0x0
+ bl FUN_020800E0
+ mov r0, #0x2
+ str r0, [r4, #0x1c]
+ add r0, r4, #0x0
+ mov r1, #0x40
+ bl FUN_02080228
+ mov r0, #0x6
+ str r0, [r4, #0x24]
+ add r0, r4, #0x0
+ bl FUN_0208048C
+ mov r0, #0x7
+ str r0, [r4, #0x2c]
+ add r0, r4, #0x0
+ bl FUN_02080678
+ b _02080090
+_02080014:
+ mov r0, #0x1
+ str r0, [r4, #0x1c]
+ add r0, r4, #0x0
+ mov r1, #0x65
+ mov r2, #0x0
+ bl FUN_02080384
+ mov r0, #0x6
+ str r0, [r4, #0x34]
+ add r0, r4, #0x0
+ bl FUN_020806B4
+ b _02080090
+_0208002E:
+ mov r2, #0x1
+ add r0, r4, #0x0
+ mov r1, #0x66
+ str r2, [r4, #0x1c]
+ bl FUN_02080384
+ mov r0, #0x6
+ str r0, [r4, #0x34]
+ add r0, r4, #0x0
+ bl FUN_020806B4
+ b _02080090
+_02080046:
+ mov r0, #0x1
+ str r0, [r4, #0x1c]
+ add r0, r4, #0x0
+ mov r1, #0x67
+ mov r2, #0x0
+ bl FUN_02080384
+ mov r0, #0x6
+ str r0, [r4, #0x34]
+ add r0, r4, #0x0
+ bl FUN_020806B4
+ b _02080090
+_02080060:
+ mov r2, #0x1
+ add r0, r4, #0x0
+ mov r1, #0x67
+ str r2, [r4, #0x1c]
+ bl FUN_02080384
+ mov r0, #0x6
+ str r0, [r4, #0x34]
+ add r0, r4, #0x0
+ bl FUN_020806B4
+ b _02080090
+_02080078:
+ mov r0, #0x1
+ str r0, [r4, #0x1c]
+ add r0, r4, #0x0
+ mov r1, #0x68
+ mov r2, #0x0
+ bl FUN_02080384
+ mov r0, #0x6
+ str r0, [r4, #0x34]
+ add r0, r4, #0x0
+ bl FUN_020806B4
+_02080090:
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02080094
+FUN_02080094: ; 0x02080094
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x18]
+ cmp r0, #0x0
+ beq _020800A2
+ bl FUN_02016A18
+_020800A2:
+ ldr r0, [r4, #0x20]
+ cmp r0, #0x0
+ beq _020800AC
+ bl FUN_02016A18
+_020800AC:
+ ldr r0, [r4, #0x28]
+ cmp r0, #0x0
+ beq _020800B6
+ bl FUN_02016A18
+_020800B6:
+ ldr r0, [r4, #0x30]
+ cmp r0, #0x0
+ beq _020800C0
+ bl FUN_02016A18
+_020800C0:
+ ldr r0, [r4, #0x38]
+ cmp r0, #0x0
+ beq _020800CA
+ bl FUN_02016A18
+_020800CA:
+ ldr r0, [r4, #0x8]
+ bl FUN_0200AB18
+ ldr r0, [r4, #0x4]
+ bl FUN_0200A8B8
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020800E0
+FUN_020800E0: ; 0x020800E0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_02068854
+ add r4, r0, #0x0
+ cmp r4, #0x18
+ bgt _02080106
+ ldr r1, [r5, #0x0]
+ mov r0, #0x48
+ bl FUN_020219F4
+ str r0, [r5, #0x18]
+ add r4, #0x18
+ ldr r0, [r5, #0x4]
+ ldr r2, [r5, #0x18]
+ add r1, r4, #0x0
+ bl FUN_0200A8E0
+_02080106:
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02080108
+FUN_02080108: ; 0x02080108
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ mov r0, #0x9
+ ldr r1, [r5, #0x0]
+ lsl r0, r0, #0x6
+ bl FUN_020219F4
+ add r4, r0, #0x0
+ mov r0, #0x9
+ ldr r1, [r5, #0x0]
+ lsl r0, r0, #0x6
+ bl FUN_020219F4
+ str r0, [r5, #0x20]
+ ldr r0, [r5, #0x4]
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ bl FUN_0200A8E0
+ ldr r0, [r5, #0xc]
+ mov r1, #0x94
+ mov r2, #0x0
+ bl FUN_020671BC
+ mov r3, #0x2
+ add r2, r0, #0x0
+ str r3, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ ldr r0, [r5, #0x8]
+ mov r1, #0x0
+ bl FUN_0200AD38
+ ldr r0, [r5, #0xc]
+ mov r1, #0x95
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r2, r0, #0x0
+ ldr r0, [r5, #0x8]
+ mov r1, #0x1
+ bl FUN_0200B764
+ ldr r0, [r5, #0xc]
+ mov r1, #0x96
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r2, r0, #0x0
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ mov r1, #0x2
+ ldr r0, [r5, #0x8]
+ add r3, r1, #0x0
+ bl FUN_0200AD38
+ ldr r0, [r5, #0xc]
+ mov r1, #0x9b
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r2, r0, #0x0
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ mov r1, #0x3
+ ldr r0, [r5, #0x8]
+ add r3, r1, #0x0
+ bl FUN_0200AD38
+ ldr r0, [r5, #0xc]
+ mov r1, #0x98
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r2, r0, #0x0
+ ldr r0, [r5, #0x8]
+ mov r1, #0x4
+ bl FUN_0200B59C
+ ldr r0, [r5, #0xc]
+ mov r1, #0x91
+ mov r2, #0x0
+ bl FUN_020671BC
+ mov r3, #0x2
+ add r2, r0, #0x0
+ str r3, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ ldr r0, [r5, #0x8]
+ mov r1, #0x5
+ bl FUN_0200AD38
+ ldr r0, [r5, #0xc]
+ mov r1, #0x92
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r2, r0, #0x0
+ ldr r0, [r5, #0x8]
+ mov r1, #0x6
+ bl FUN_0200B764
+ ldr r0, [r5, #0xc]
+ mov r1, #0x93
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r2, r0, #0x0
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ ldr r0, [r5, #0x8]
+ mov r1, #0x7
+ mov r3, #0x2
+ bl FUN_0200AD38
+ ldr r0, [r5, #0xc]
+ mov r1, #0x97
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r2, r0, #0x0
+ ldr r0, [r5, #0x8]
+ mov r1, #0x8
+ bl FUN_0200B59C
+ ldr r0, [r5, #0x8]
+ ldr r1, [r5, #0x20]
+ add r2, r4, #0x0
+ bl FUN_0200B7B8
+ add r0, r4, #0x0
+ bl FUN_02021A20
+ add sp, #0x8
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02080228
+FUN_02080228: ; 0x02080228
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r4, r0, #0x0
+ add r6, r1, #0x0
+ mov r0, #0x12
+ ldr r1, [r4, #0x0]
+ lsl r0, r0, #0x4
+ bl FUN_020219F4
+ add r5, r0, #0x0
+ mov r0, #0x12
+ ldr r1, [r4, #0x0]
+ lsl r0, r0, #0x4
+ bl FUN_020219F4
+ str r0, [r4, #0x20]
+ ldr r0, [r4, #0x4]
+ add r1, r6, #0x0
+ add r2, r5, #0x0
+ bl FUN_0200A8E0
+ ldr r0, [r4, #0xc]
+ mov r1, #0x94
+ mov r2, #0x0
+ bl FUN_020671BC
+ mov r3, #0x2
+ add r2, r0, #0x0
+ str r3, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ ldr r0, [r4, #0x8]
+ mov r1, #0x0
+ bl FUN_0200AD38
+ ldr r0, [r4, #0xc]
+ mov r1, #0x95
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r2, r0, #0x0
+ ldr r0, [r4, #0x8]
+ mov r1, #0x1
+ bl FUN_0200B764
+ ldr r0, [r4, #0xc]
+ mov r1, #0x96
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r2, r0, #0x0
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ mov r1, #0x2
+ ldr r0, [r4, #0x8]
+ add r3, r1, #0x0
+ bl FUN_0200AD38
+ ldr r0, [r4, #0xc]
+ mov r1, #0x9b
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r2, r0, #0x0
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ mov r1, #0x3
+ ldr r0, [r4, #0x8]
+ add r3, r1, #0x0
+ bl FUN_0200AD38
+ ldr r0, [r4, #0xc]
+ mov r1, #0x79
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0xf
+ bhi _020802F8
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_020802D8: ; jump table (using 16-bit offset)
+ .short _020802F8 - _020802D8 - 2; case 0
+ .short _02080334 - _020802D8 - 2; case 1
+ .short _02080334 - _020802D8 - 2; case 2
+ .short _02080334 - _020802D8 - 2; case 3
+ .short _0208030C - _020802D8 - 2; case 4
+ .short _0208030C - _020802D8 - 2; case 5
+ .short _020802F8 - _020802D8 - 2; case 6
+ .short _02080320 - _020802D8 - 2; case 7
+ .short _02080320 - _020802D8 - 2; case 8
+ .short _020802F8 - _020802D8 - 2; case 9
+ .short _0208035C - _020802D8 - 2; case 10
+ .short _0208035C - _020802D8 - 2; case 11
+ .short _020802F8 - _020802D8 - 2; case 12
+ .short _020802F8 - _020802D8 - 2; case 13
+ .short _020802F8 - _020802D8 - 2; case 14
+ .short _02080348 - _020802D8 - 2; case 15
+_020802F8:
+ mov r0, #0x1
+ mov r1, #0x7
+ bl FUN_02015CF8
+ add r2, r0, #0x0
+ ldr r0, [r4, #0x8]
+ mov r1, #0x4
+ bl FUN_0200B59C
+ b _0208036E
+_0208030C:
+ mov r0, #0x1
+ mov r1, #0x3
+ bl FUN_02015CF8
+ add r2, r0, #0x0
+ ldr r0, [r4, #0x8]
+ mov r1, #0x4
+ bl FUN_0200B59C
+ b _0208036E
+_02080320:
+ mov r0, #0x1
+ mov r1, #0x4
+ bl FUN_02015CF8
+ add r2, r0, #0x0
+ ldr r0, [r4, #0x8]
+ mov r1, #0x4
+ bl FUN_0200B59C
+ b _0208036E
+_02080334:
+ mov r0, #0x1
+ mov r1, #0x5
+ bl FUN_02015CF8
+ add r2, r0, #0x0
+ ldr r0, [r4, #0x8]
+ mov r1, #0x4
+ bl FUN_0200B59C
+ b _0208036E
+_02080348:
+ mov r0, #0x1
+ mov r1, #0x8
+ bl FUN_02015CF8
+ add r2, r0, #0x0
+ ldr r0, [r4, #0x8]
+ mov r1, #0x4
+ bl FUN_0200B59C
+ b _0208036E
+_0208035C:
+ mov r0, #0x1
+ mov r1, #0x7
+ bl FUN_02015CF8
+ add r2, r0, #0x0
+ ldr r0, [r4, #0x8]
+ mov r1, #0x4
+ bl FUN_0200B59C
+_0208036E:
+ ldr r0, [r4, #0x8]
+ ldr r1, [r4, #0x20]
+ add r2, r5, #0x0
+ bl FUN_0200B7B8
+ add r0, r5, #0x0
+ bl FUN_02021A20
+ add sp, #0x8
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02080384
+FUN_02080384: ; 0x02080384
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ add r7, r1, #0x0
+ mov r0, #0x5a
+ ldr r1, [r5, #0x0]
+ lsl r0, r0, #0x2
+ add r6, r2, #0x0
+ bl FUN_020219F4
+ add r4, r0, #0x0
+ mov r0, #0x5a
+ ldr r1, [r5, #0x0]
+ lsl r0, r0, #0x2
+ bl FUN_020219F4
+ str r0, [r5, #0x20]
+ ldr r0, [r5, #0x4]
+ add r1, r7, #0x0
+ add r2, r4, #0x0
+ bl FUN_0200A8E0
+ cmp r6, #0x0
+ ldr r0, [r5, #0xc]
+ bne _02080418
+ mov r1, #0x91
+ mov r2, #0x0
+ bl FUN_020671BC
+ mov r3, #0x2
+ add r2, r0, #0x0
+ str r3, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ ldr r0, [r5, #0x8]
+ mov r1, #0x5
+ bl FUN_0200AD38
+ ldr r0, [r5, #0xc]
+ mov r1, #0x92
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r2, r0, #0x0
+ ldr r0, [r5, #0x8]
+ mov r1, #0x6
+ bl FUN_0200B764
+ ldr r0, [r5, #0xc]
+ mov r1, #0x93
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r2, r0, #0x0
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ ldr r0, [r5, #0x8]
+ mov r1, #0x7
+ mov r3, #0x2
+ bl FUN_0200AD38
+ ldr r0, [r5, #0xc]
+ mov r1, #0x97
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r2, r0, #0x0
+ ldr r0, [r5, #0x8]
+ mov r1, #0x8
+ bl FUN_0200B59C
+ b _02080478
+_02080418:
+ mov r1, #0x94
+ mov r2, #0x0
+ bl FUN_020671BC
+ mov r3, #0x2
+ add r2, r0, #0x0
+ str r3, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ ldr r0, [r5, #0x8]
+ mov r1, #0x5
+ bl FUN_0200AD38
+ ldr r0, [r5, #0xc]
+ mov r1, #0x95
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r2, r0, #0x0
+ ldr r0, [r5, #0x8]
+ mov r1, #0x6
+ bl FUN_0200B764
+ ldr r0, [r5, #0xc]
+ mov r1, #0x96
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r2, r0, #0x0
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ ldr r0, [r5, #0x8]
+ mov r1, #0x7
+ mov r3, #0x2
+ bl FUN_0200AD38
+ ldr r0, [r5, #0xc]
+ mov r1, #0x98
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r2, r0, #0x0
+ ldr r0, [r5, #0x8]
+ mov r1, #0x8
+ bl FUN_0200B59C
+_02080478:
+ ldr r0, [r5, #0x8]
+ ldr r1, [r5, #0x20]
+ add r2, r4, #0x0
+ bl FUN_0200B7B8
+ add r0, r4, #0x0
+ bl FUN_02021A20
+ add sp, #0x8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0208048C
+FUN_0208048C: ; 0x0208048C
+ push {r3-r7, lr}
+ sub sp, #0x10
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x0]
+ mov r0, #0x48
+ bl FUN_020219F4
+ str r0, [r4, #0x28]
+ ldr r0, [r4, #0xc]
+ mov r1, #0x46
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0xc]
+ ldr r0, [r4, #0xc]
+ mov r1, #0x47
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0x8]
+ ldr r0, [r4, #0xc]
+ mov r1, #0x48
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0x4]
+ ldr r0, [r4, #0xc]
+ mov r1, #0x49
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0xc]
+ mov r1, #0x4a
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r7, r0, #0x0
+ ldr r0, [r4, #0xc]
+ mov r1, #0x4b
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r6, r0, #0x0
+ mov r1, #0x0
+ ldr r0, [r4, #0xc]
+ add r2, r1, #0x0
+ bl FUN_020671BC
+ mov r1, #0x6
+ blx _u32_div_f
+ cmp r1, #0x5
+ bhi _02080510
+ add r0, r1, r1
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02080504: ; jump table (using 16-bit offset)
+ .short _02080510 - _02080504 - 2; case 0
+ .short _02080548 - _02080504 - 2; case 1
+ .short _0208057E - _02080504 - 2; case 2
+ .short _020805B4 - _02080504 - 2; case 3
+ .short _020805EA - _02080504 - 2; case 4
+ .short _02080620 - _02080504 - 2; case 5
+_02080510:
+ ldr r0, [sp, #0xc]
+ ldr r1, [sp, #0x8]
+ add r2, r0, #0x0
+ mov r5, #0x0
+ cmp r2, r1
+ bge _02080520
+ mov r5, #0x1
+ add r0, r1, #0x0
+_02080520:
+ ldr r1, [sp, #0x4]
+ cmp r0, r1
+ bge _0208052A
+ mov r5, #0x2
+ add r0, r1, #0x0
+_0208052A:
+ ldr r1, [sp, #0x0]
+ cmp r0, r1
+ bge _02080534
+ mov r5, #0x3
+ add r0, r1, #0x0
+_02080534:
+ cmp r0, r7
+ bge _0208053C
+ mov r5, #0x4
+ add r0, r7, #0x0
+_0208053C:
+ cmp r0, r6
+ blt _02080542
+ b _02080654
+_02080542:
+ mov r5, #0x5
+ add r0, r6, #0x0
+ b _02080654
+_02080548:
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0x4]
+ add r2, r0, #0x0
+ mov r5, #0x1
+ cmp r2, r1
+ bge _02080558
+ mov r5, #0x2
+ add r0, r1, #0x0
+_02080558:
+ ldr r1, [sp, #0x0]
+ cmp r0, r1
+ bge _02080562
+ mov r5, #0x3
+ add r0, r1, #0x0
+_02080562:
+ cmp r0, r7
+ bge _0208056A
+ mov r5, #0x4
+ add r0, r7, #0x0
+_0208056A:
+ cmp r0, r6
+ bge _02080572
+ mov r5, #0x5
+ add r0, r6, #0x0
+_02080572:
+ ldr r1, [sp, #0xc]
+ cmp r0, r1
+ bge _02080654
+ mov r5, #0x0
+ add r0, r1, #0x0
+ b _02080654
+_0208057E:
+ ldr r0, [sp, #0x4]
+ ldr r1, [sp, #0x0]
+ add r2, r0, #0x0
+ mov r5, #0x2
+ cmp r2, r1
+ bge _0208058E
+ mov r5, #0x3
+ add r0, r1, #0x0
+_0208058E:
+ cmp r0, r7
+ bge _02080596
+ mov r5, #0x4
+ add r0, r7, #0x0
+_02080596:
+ cmp r0, r6
+ bge _0208059E
+ mov r5, #0x5
+ add r0, r6, #0x0
+_0208059E:
+ ldr r1, [sp, #0xc]
+ cmp r0, r1
+ bge _020805A8
+ mov r5, #0x0
+ add r0, r1, #0x0
+_020805A8:
+ ldr r1, [sp, #0x8]
+ cmp r0, r1
+ bge _02080654
+ mov r5, #0x1
+ add r0, r1, #0x0
+ b _02080654
+_020805B4:
+ ldr r0, [sp, #0x0]
+ mov r5, #0x3
+ add r1, r0, #0x0
+ cmp r1, r7
+ bge _020805C2
+ mov r5, #0x4
+ add r0, r7, #0x0
+_020805C2:
+ cmp r0, r6
+ bge _020805CA
+ mov r5, #0x5
+ add r0, r6, #0x0
+_020805CA:
+ ldr r1, [sp, #0xc]
+ cmp r0, r1
+ bge _020805D4
+ mov r5, #0x0
+ add r0, r1, #0x0
+_020805D4:
+ ldr r1, [sp, #0x8]
+ cmp r0, r1
+ bge _020805DE
+ mov r5, #0x1
+ add r0, r1, #0x0
+_020805DE:
+ ldr r1, [sp, #0x4]
+ cmp r0, r1
+ bge _02080654
+ mov r5, #0x2
+ add r0, r1, #0x0
+ b _02080654
+_020805EA:
+ mov r5, #0x4
+ add r0, r7, #0x0
+ cmp r7, r6
+ bge _020805F6
+ mov r5, #0x5
+ add r0, r6, #0x0
+_020805F6:
+ ldr r1, [sp, #0xc]
+ cmp r0, r1
+ bge _02080600
+ mov r5, #0x0
+ add r0, r1, #0x0
+_02080600:
+ ldr r1, [sp, #0x8]
+ cmp r0, r1
+ bge _0208060A
+ mov r5, #0x1
+ add r0, r1, #0x0
+_0208060A:
+ ldr r1, [sp, #0x4]
+ cmp r0, r1
+ bge _02080614
+ mov r5, #0x2
+ add r0, r1, #0x0
+_02080614:
+ ldr r1, [sp, #0x0]
+ cmp r0, r1
+ bge _02080654
+ mov r5, #0x3
+ add r0, r1, #0x0
+ b _02080654
+_02080620:
+ ldr r1, [sp, #0xc]
+ mov r5, #0x5
+ add r0, r6, #0x0
+ cmp r6, r1
+ bge _0208062E
+ mov r5, #0x0
+ add r0, r1, #0x0
+_0208062E:
+ ldr r1, [sp, #0x8]
+ cmp r0, r1
+ bge _02080638
+ mov r5, #0x1
+ add r0, r1, #0x0
+_02080638:
+ ldr r1, [sp, #0x4]
+ cmp r0, r1
+ bge _02080642
+ mov r5, #0x2
+ add r0, r1, #0x0
+_02080642:
+ ldr r1, [sp, #0x0]
+ cmp r0, r1
+ bge _0208064C
+ mov r5, #0x3
+ add r0, r1, #0x0
+_0208064C:
+ cmp r0, r7
+ bge _02080654
+ mov r5, #0x4
+ add r0, r7, #0x0
+_02080654:
+ mov r1, #0x5
+ blx _s32_div_f
+ mov r2, #0xa
+ add r6, r5, #0x0
+ mul r6, r2
+ ldr r3, _02080674 ; =0x020FBB54
+ lsl r2, r1, #0x1
+ add r1, r3, r6
+ ldrh r1, [r2, r1]
+ ldr r0, [r4, #0x4]
+ ldr r2, [r4, #0x28]
+ bl FUN_0200A8E0
+ add sp, #0x10
+ pop {r3-r7, pc}
+ .balign 4
+_02080674: .word 0x020FBB54
+
+ thumb_func_start FUN_02080678
+FUN_02080678: ; 0x02080678
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r1, [r5, #0x0]
+ mov r0, #0x48
+ bl FUN_020219F4
+ mov r6, #0x0
+ str r0, [r5, #0x30]
+ add r4, r6, #0x0
+_0208068A:
+ ldr r0, [r5, #0xc]
+ add r1, r4, #0x0
+ bl FUN_02069BC8
+ cmp r0, #0x1
+ bne _02080698
+ add r6, r4, #0x1
+_02080698:
+ add r4, r4, #0x1
+ cmp r4, #0x5
+ blt _0208068A
+ ldr r1, _020806B0 ; =0x020FBB48
+ lsl r2, r6, #0x1
+ ldrh r1, [r1, r2]
+ ldr r0, [r5, #0x4]
+ ldr r2, [r5, #0x30]
+ bl FUN_0200A8E0
+ pop {r4-r6, pc}
+ nop
+_020806B0: .word 0x020FBB48
+
+ thumb_func_start FUN_020806B4
+FUN_020806B4: ; 0x020806B4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0xc]
+ mov r1, #0x9
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r4, r0, #0x0
+ mov r0, #0x12
+ ldr r1, [r5, #0x0]
+ lsl r0, r0, #0x4
+ bl FUN_020219F4
+ str r0, [r5, #0x38]
+ cmp r4, #0x5
+ bgt _020806D8
+ mov r1, #0x69
+ b _020806EA
+_020806D8:
+ cmp r4, #0xa
+ bgt _020806E0
+ mov r1, #0x6a
+ b _020806EA
+_020806E0:
+ cmp r4, #0x28
+ bgt _020806E8
+ mov r1, #0x6b
+ b _020806EA
+_020806E8:
+ mov r1, #0x6c
+_020806EA:
+ ldr r0, [r5, #0x4]
+ ldr r2, [r5, #0x38]
+ bl FUN_0200A8E0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_020806F4
+FUN_020806F4: ; 0x020806F4
+ push {r4-r6, lr}
+ add r4, r1, #0x0
+ mov r1, #0x4c
+ mov r2, #0x0
+ add r5, r0, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ beq _02080708
+ b _0208084E
+_02080708:
+ add r0, r5, #0x0
+ mov r1, #0x97
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ bne _02080774
+ add r0, r5, #0x0
+ mov r1, #0x98
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r6, r0, #0x0
+ mov r0, #0x0
+ mov r1, #0x37
+ bl FUN_02015CF8
+ cmp r6, r0
+ bne _02080732
+ mov r0, #0xf
+ pop {r4-r6, pc}
+_02080732:
+ add r0, r5, #0x0
+ mov r1, #0x6e
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x1
+ bne _0208074C
+ cmp r4, #0x1
+ bne _02080748
+ mov r0, #0x7
+ pop {r4-r6, pc}
+_02080748:
+ mov r0, #0x8
+ pop {r4-r6, pc}
+_0208074C:
+ add r0, r5, #0x0
+ mov r1, #0x98
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r5, r0, #0x0
+ mov r0, #0x1
+ add r1, r0, #0x0
+ bl FUN_02015CF8
+ cmp r5, r0
+ bne _02080768
+ mov r0, #0x2
+ pop {r4-r6, pc}
+_02080768:
+ cmp r4, #0x1
+ bne _02080770
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_02080770:
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_02080774:
+ add r0, r5, #0x0
+ mov r1, #0x6e
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x1
+ bne _020807D6
+ add r0, r5, #0x0
+ mov r1, #0x97
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r6, r0, #0x0
+ mov r0, #0x1
+ mov r1, #0x2
+ bl FUN_02015CF8
+ cmp r6, r0
+ bne _020807A6
+ cmp r4, #0x1
+ bne _020807A2
+ mov r0, #0xd
+ pop {r4-r6, pc}
+_020807A2:
+ mov r0, #0xe
+ pop {r4-r6, pc}
+_020807A6:
+ add r0, r5, #0x0
+ mov r1, #0x97
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r5, r0, #0x0
+ mov r0, #0x2
+ mov r1, #0x1
+ bl FUN_02015CF8
+ cmp r5, r0
+ bne _020807CA
+ cmp r4, #0x1
+ bne _020807C6
+ mov r0, #0xb
+ pop {r4-r6, pc}
+_020807C6:
+ mov r0, #0xc
+ pop {r4-r6, pc}
+_020807CA:
+ cmp r4, #0x1
+ bne _020807D2
+ mov r0, #0x9
+ pop {r4-r6, pc}
+_020807D2:
+ mov r0, #0xa
+ pop {r4-r6, pc}
+_020807D6:
+ add r0, r5, #0x0
+ mov r1, #0x97
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r6, r0, #0x0
+ mov r0, #0x1
+ add r1, r0, #0x0
+ bl FUN_02015CF8
+ cmp r6, r0
+ beq _02080836
+ add r0, r5, #0x0
+ mov r1, #0x97
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r6, r0, #0x0
+ mov r0, #0x1
+ mov r1, #0x0
+ bl FUN_02015CF8
+ cmp r6, r0
+ beq _02080836
+ add r0, r5, #0x0
+ mov r1, #0x97
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r6, r0, #0x0
+ mov r0, #0x1
+ mov r1, #0x9
+ bl FUN_02015CF8
+ cmp r6, r0
+ beq _02080836
+ add r0, r5, #0x0
+ mov r1, #0x97
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r5, r0, #0x0
+ mov r0, #0x1
+ mov r1, #0xa
+ bl FUN_02015CF8
+ cmp r5, r0
+ bne _02080842
+_02080836:
+ cmp r4, #0x1
+ bne _0208083E
+ mov r0, #0x5
+ pop {r4-r6, pc}
+_0208083E:
+ mov r0, #0x6
+ pop {r4-r6, pc}
+_02080842:
+ cmp r4, #0x1
+ bne _0208084A
+ mov r0, #0x3
+ pop {r4-r6, pc}
+_0208084A:
+ mov r0, #0x4
+ pop {r4-r6, pc}
+_0208084E:
+ cmp r4, #0x1
+ bne _02080884
+ add r0, r5, #0x0
+ mov r1, #0x6e
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x1
+ bne _02080880
+ add r0, r5, #0x0
+ mov r1, #0x97
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r4, r0, #0x0
+ mov r0, #0x2
+ mov r1, #0x1
+ bl FUN_02015CF8
+ cmp r4, r0
+ bne _0208087C
+ mov r0, #0x14
+ pop {r4-r6, pc}
+_0208087C:
+ mov r0, #0x12
+ pop {r4-r6, pc}
+_02080880:
+ mov r0, #0x10
+ pop {r4-r6, pc}
+_02080884:
+ add r0, r5, #0x0
+ mov r1, #0x6e
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x1
+ bne _02080896
+ mov r0, #0x13
+ pop {r4-r6, pc}
+_02080896:
+ mov r0, #0x11
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0208089C
+FUN_0208089C: ; 0x0208089C
+ push {r3-r4, lr}
+ sub sp, #0x4
+ ldr r4, [sp, #0x10]
+ str r4, [sp, #0x0]
+ bl FUN_020808AC
+ add sp, #0x4
+ pop {r3-r4, pc}
+
+ thumb_func_start FUN_020808AC
+FUN_020808AC: ; 0x020808AC
+ push {r3-r7, lr}
+ add r4, r0, #0x0
+ add r7, r1, #0x0
+ add r5, r3, #0x0
+ ldr r6, [sp, #0x18]
+ cmp r2, #0x6
+ bls _020808BC
+ b _02080AE0
+_020808BC:
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_020808C8: ; jump table (using 16-bit offset)
+ .short _020808D6 - _020808C8 - 2; case 0
+ .short _0208092A - _020808C8 - 2; case 1
+ .short _02080974 - _020808C8 - 2; case 2
+ .short _02080994 - _020808C8 - 2; case 3
+ .short _020809B0 - _020808C8 - 2; case 4
+ .short _02080A38 - _020808C8 - 2; case 5
+ .short _02080A58 - _020808C8 - 2; case 6
+_020808D6:
+ mov r0, #0x1
+ mov r1, #0x0
+ bl FUN_02015CF8
+ cmp r5, r0
+ ble _020808E4
+ mov r5, #0x0
+_020808E4:
+ add r0, r4, #0x0
+ mov r1, #0x4c
+ mov r2, #0x0
+ bl FUN_020672BC
+ cmp r0, #0x0
+ bne _0208090C
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_02080BA8
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ mov r2, #0x1
+ bl FUN_02080B30
+ add r0, r4, #0x0
+ bl FUN_02080C08
+ b _0208091E
+_0208090C:
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ mov r2, #0x0
+ bl FUN_02080B30
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_02080BA8
+_0208091E:
+ add r0, r4, #0x0
+ add r1, r7, #0x0
+ add r2, r6, #0x0
+ bl FUN_02080AE4
+ pop {r3-r7, pc}
+_0208092A:
+ mov r1, #0x4c
+ mov r2, #0x0
+ bl FUN_020672BC
+ cmp r0, #0x0
+ bne _02080958
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_02080BA8
+ mov r0, #0x1
+ add r1, r0, #0x0
+ bl FUN_02015CF8
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ mov r2, #0x1
+ bl FUN_02080B30
+ add r0, r4, #0x0
+ bl FUN_02080C08
+ pop {r3-r7, pc}
+_02080958:
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_02080BA8
+ mov r0, #0x1
+ add r1, r0, #0x0
+ bl FUN_02015CF8
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ mov r2, #0x1
+ bl FUN_02080B30
+ pop {r3-r7, pc}
+_02080974:
+ mov r1, #0x0
+ bl FUN_02080BA8
+ mov r0, #0x0
+ mov r1, #0x37
+ bl FUN_02015CF8
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ mov r2, #0x1
+ bl FUN_02080B30
+ add r0, r4, #0x0
+ bl FUN_02080C08
+ pop {r3-r7, pc}
+_02080994:
+ add r1, r5, #0x0
+ mov r2, #0x0
+ bl FUN_02080B30
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_02080BA8
+ add r0, r4, #0x0
+ add r1, r7, #0x0
+ add r2, r6, #0x0
+ bl FUN_02080AE4
+ pop {r3-r7, pc}
+_020809B0:
+ add r2, r6, #0x0
+ bl FUN_0206A9AC
+ cmp r0, #0x1
+ bne _020809F6
+ add r0, r4, #0x0
+ mov r1, #0x4c
+ mov r2, #0x0
+ bl FUN_020672BC
+ cmp r0, #0x0
+ bne _020809E2
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_02080BA8
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ mov r2, #0x1
+ bl FUN_02080B30
+ add r0, r4, #0x0
+ bl FUN_02080C08
+ b _02080A30
+_020809E2:
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ mov r2, #0x0
+ bl FUN_02080B30
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_02080BA8
+ b _02080A30
+_020809F6:
+ add r0, r4, #0x0
+ mov r1, #0x4c
+ mov r2, #0x0
+ bl FUN_020672BC
+ cmp r0, #0x0
+ bne _02080A1E
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_02080BA8
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ mov r2, #0x1
+ bl FUN_02080B30
+ add r0, r4, #0x0
+ bl FUN_02080C08
+ b _02080A30
+_02080A1E:
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_02080BA8
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ mov r2, #0x1
+ bl FUN_02080B30
+_02080A30:
+ add r0, r4, #0x0
+ bl FUN_02080C28
+ pop {r3-r7, pc}
+_02080A38:
+ mov r1, #0x4c
+ mov r2, #0x0
+ bl FUN_020672BC
+ cmp r0, #0x0
+ beq _02080AE0
+ mov r0, #0x1
+ mov r1, #0x2
+ bl FUN_02015CF8
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ mov r2, #0x1
+ bl FUN_02080B30
+ pop {r3-r7, pc}
+_02080A58:
+ mov r0, #0x1
+ mov r1, #0x0
+ bl FUN_02015CF8
+ cmp r5, r0
+ ble _02080A66
+ mov r5, #0x0
+_02080A66:
+ add r0, r4, #0x0
+ add r1, r7, #0x0
+ add r2, r6, #0x0
+ bl FUN_0206A9AC
+ cmp r0, #0x0
+ bne _02080ACC
+ add r0, r4, #0x0
+ mov r1, #0x98
+ mov r2, #0x0
+ bl FUN_020672BC
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0x97
+ add r2, sp, #0x0
+ bl FUN_02067960
+ add r0, r4, #0x0
+ mov r1, #0x94
+ mov r2, #0x0
+ bl FUN_020672BC
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0x91
+ add r2, sp, #0x0
+ bl FUN_02067960
+ add r0, r4, #0x0
+ mov r1, #0x95
+ mov r2, #0x0
+ bl FUN_020672BC
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0x92
+ add r2, sp, #0x0
+ bl FUN_02067960
+ add r0, r4, #0x0
+ mov r1, #0x96
+ mov r2, #0x0
+ bl FUN_020672BC
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0x93
+ add r2, sp, #0x0
+ bl FUN_02067960
+_02080ACC:
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ mov r2, #0x1
+ bl FUN_02080B30
+ add r0, r4, #0x0
+ add r1, r7, #0x0
+ add r2, r6, #0x0
+ bl FUN_02080AE4
+_02080AE0:
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02080AE4
+FUN_02080AE4: ; 0x02080AE4
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ add r6, r2, #0x0
+ bl FUN_020239BC
+ str r0, [sp, #0x4]
+ add r0, r4, #0x0
+ bl FUN_020239CC
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ bl FUN_020239A0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x7
+ add r2, sp, #0x4
+ bl FUN_02067960
+ add r0, r5, #0x0
+ mov r1, #0x9c
+ add r2, sp, #0x0
+ bl FUN_02067960
+ add r0, r5, #0x0
+ mov r1, #0x90
+ add r2, r4, #0x0
+ bl FUN_02067960
+ add r0, r4, #0x0
+ bl FUN_02021A20
+ add sp, #0x8
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02080B30
+FUN_02080B30: ; 0x02080B30
+ push {r0-r3}
+ push {r3-r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ add r0, sp, #0x0
+ add r4, r2, #0x0
+ bl FUN_020126B4
+ cmp r4, #0x0
+ add r2, sp, #0x24
+ bne _02080B76
+ add r0, r5, #0x0
+ mov r1, #0x97
+ bl FUN_02067960
+ add r0, r5, #0x0
+ mov r1, #0x91
+ add r2, sp, #0x0
+ bl FUN_02067960
+ add r0, r5, #0x0
+ mov r1, #0x92
+ add r2, sp, #0x4
+ bl FUN_02067960
+ add r0, r5, #0x0
+ mov r1, #0x93
+ add r2, sp, #0x8
+ bl FUN_02067960
+ add sp, #0x10
+ pop {r3-r5}
+ pop {r3}
+ add sp, #0x10
+ bx r3
+_02080B76:
+ add r0, r5, #0x0
+ mov r1, #0x98
+ bl FUN_02067960
+ add r0, r5, #0x0
+ mov r1, #0x94
+ add r2, sp, #0x0
+ bl FUN_02067960
+ add r0, r5, #0x0
+ mov r1, #0x95
+ add r2, sp, #0x4
+ bl FUN_02067960
+ add r0, r5, #0x0
+ mov r1, #0x96
+ add r2, sp, #0x8
+ bl FUN_02067960
+ add sp, #0x10
+ pop {r3-r5}
+ pop {r3}
+ add sp, #0x10
+ bx r3
+ .balign 4
+
+ thumb_func_start FUN_02080BA8
+FUN_02080BA8: ; 0x02080BA8
+ push {r3-r4, lr}
+ sub sp, #0x4
+ mov r2, #0x0
+ add r4, r0, #0x0
+ str r2, [sp, #0x0]
+ cmp r1, #0x0
+ add r2, sp, #0x0
+ bne _02080BE0
+ mov r1, #0x97
+ bl FUN_02067960
+ add r0, r4, #0x0
+ mov r1, #0x91
+ add r2, sp, #0x0
+ bl FUN_02067960
+ add r0, r4, #0x0
+ mov r1, #0x92
+ add r2, sp, #0x0
+ bl FUN_02067960
+ add r0, r4, #0x0
+ mov r1, #0x93
+ add r2, sp, #0x0
+ bl FUN_02067960
+ add sp, #0x4
+ pop {r3-r4, pc}
+_02080BE0:
+ mov r1, #0x98
+ bl FUN_02067960
+ add r0, r4, #0x0
+ mov r1, #0x94
+ add r2, sp, #0x0
+ bl FUN_02067960
+ add r0, r4, #0x0
+ mov r1, #0x95
+ add r2, sp, #0x0
+ bl FUN_02067960
+ add r0, r4, #0x0
+ mov r1, #0x96
+ add r2, sp, #0x0
+ bl FUN_02067960
+ add sp, #0x4
+ pop {r3-r4, pc}
+
+ thumb_func_start FUN_02080C08
+FUN_02080C08: ; 0x02080C08
+ push {r3-r4, lr}
+ sub sp, #0x4
+ add r4, r0, #0x0
+ mov r1, #0xa0
+ mov r2, #0x0
+ bl FUN_020672BC
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0x9b
+ add r2, sp, #0x0
+ bl FUN_02067960
+ add sp, #0x4
+ pop {r3-r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02080C28
+FUN_02080C28: ; 0x02080C28
+ push {r3, lr}
+ mov r1, #0x1
+ str r1, [sp, #0x0]
+ mov r1, #0x6e
+ add r2, sp, #0x0
+ bl FUN_02067960
+ pop {r3, pc}
+
+ thumb_func_start FUN_02080C38
+FUN_02080C38: ; 0x02080C38
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r0, #0xb
+ mov r1, #0x8
+ bl FUN_020169D8
+ mov r1, #0x0
+ mov r2, #0x8
+ add r4, r0, #0x0
+ blx MI_CpuFill8
+ ldr r1, _02080C5C ; =FUN_02080C60
+ add r0, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_0204640C
+ pop {r3-r5, pc}
+ nop
+_02080C5C: .word FUN_02080C60
+
+ thumb_func_start FUN_02080C60
+FUN_02080C60: ; 0x02080C60
+ push {r3-r7, lr}
+ sub sp, #0x28
+ add r5, r0, #0x0
+ bl FUN_02046528
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x4]
+ cmp r0, #0xe
+ bls _02080C7C
+ b _02080DE2
+_02080C7C:
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02080C88: ; jump table (using 16-bit offset)
+ .short _02080CA6 - _02080C88 - 2; case 0
+ .short _02080CB4 - _02080C88 - 2; case 1
+ .short _02080D16 - _02080C88 - 2; case 2
+ .short _02080D28 - _02080C88 - 2; case 3
+ .short _02080D36 - _02080C88 - 2; case 4
+ .short _02080D48 - _02080C88 - 2; case 5
+ .short _02080D64 - _02080C88 - 2; case 6
+ .short _02080D78 - _02080C88 - 2; case 7
+ .short _02080D8A - _02080C88 - 2; case 8
+ .short _02080D9C - _02080C88 - 2; case 9
+ .short _02080DAE - _02080C88 - 2; case 10
+ .short _02080DC0 - _02080C88 - 2; case 11
+ .short _02080DCE - _02080C88 - 2; case 12
+ .short _02080DD4 - _02080C88 - 2; case 13
+ .short _02080DE6 - _02080C88 - 2; case 14
+_02080CA6:
+ add r0, r5, #0x0
+ bl FUN_0204AF3C
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _02080DF2
+_02080CB4:
+ ldr r0, [r6, #0xc]
+ bl FUN_0206BB1C
+ mov r1, #0x0
+ bl FUN_0206B9B0
+ add r7, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_020377AC
+ bl FUN_020238F4
+ mov r1, #0xb
+ str r0, [sp, #0x0]
+ bl FUN_020239A0
+ add r5, r0, #0x0
+ mov r1, #0x0
+ add r0, sp, #0x4
+ strb r1, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ mov r1, #0x2
+ strb r1, [r0, #0x2]
+ ldr r0, [sp, #0x0]
+ str r7, [sp, #0xc]
+ str r5, [sp, #0x10]
+ str r0, [sp, #0x14]
+ ldr r0, [r6, #0xc]
+ bl FUN_02027E24
+ str r0, [sp, #0x18]
+ ldr r0, [r6, #0xc]
+ bl LoadPlayerDataAddress
+ str r0, [sp, #0x1c]
+ add r0, sp, #0x4
+ bl FUN_02081214
+ str r0, [r4, #0x0]
+ add r0, r5, #0x0
+ bl FUN_02021A20
+ ldr r0, [r4, #0x0]
+ bl FUN_02081DC4
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _02080DF2
+_02080D16:
+ ldr r0, [r4, #0x0]
+ bl FUN_02081EB8
+ cmp r0, #0x1
+ bne _02080DF2
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _02080DF2
+_02080D28:
+ mov r0, #0x1
+ bl FUN_02031588
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _02080DF2
+_02080D36:
+ mov r0, #0x1
+ bl FUN_020315D8
+ cmp r0, #0x1
+ bne _02080DF2
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _02080DF2
+_02080D48:
+ ldr r0, [r4, #0x0]
+ bl FUN_020815D0
+ ldr r3, [r4, #0x0]
+ ldr r2, _02080DF8 ; =0x000019B8
+ ldr r1, _02080DFC ; =0x020FBBD8
+ ldr r2, [r3, r2]
+ add r0, r5, #0x0
+ bl FUN_02046500
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _02080DF2
+_02080D64:
+ ldr r0, [r4, #0x0]
+ bl FUN_02081668
+ ldr r0, [r4, #0x0]
+ bl FUN_02081ED4
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _02080DF2
+_02080D78:
+ ldr r0, [r4, #0x0]
+ bl FUN_02081EC0
+ cmp r0, #0x1
+ bne _02080DF2
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _02080DF2
+_02080D8A:
+ ldr r1, _02080E00 ; =0x020FBBC8
+ ldr r2, [r4, #0x0]
+ add r0, r5, #0x0
+ bl FUN_02046500
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _02080DF2
+_02080D9C:
+ ldr r1, _02080E04 ; =0x020FBBF8
+ ldr r2, [r4, #0x0]
+ add r0, r5, #0x0
+ bl FUN_02046500
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _02080DF2
+_02080DAE:
+ ldr r1, _02080E08 ; =0x020FBBE8
+ ldr r2, [r4, #0x0]
+ add r0, r5, #0x0
+ bl FUN_02046500
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _02080DF2
+_02080DC0:
+ ldr r0, [r4, #0x0]
+ bl FUN_020814E8
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _02080DF2
+_02080DCE:
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _02080DF2
+_02080DD4:
+ add r0, r5, #0x0
+ bl FUN_0204AF84
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _02080DF2
+_02080DE2:
+ bl ErrorHandling
+_02080DE6:
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x28
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02080DF2:
+ mov r0, #0x0
+ add sp, #0x28
+ pop {r3-r7, pc}
+ .balign 4
+_02080DF8: .word 0x000019B8
+_02080DFC: .word 0x020FBBD8
+_02080E00: .word 0x020FBBC8
+_02080E04: .word 0x020FBBF8
+_02080E08: .word 0x020FBBE8
+
+ thumb_func_start FUN_02080E0C
+FUN_02080E0C: ; 0x02080E0C
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ mov r0, #0xb
+ mov r1, #0x8
+ bl FUN_020169D8
+ mov r1, #0x0
+ mov r2, #0x8
+ add r4, r0, #0x0
+ blx MI_CpuFill8
+ ldr r0, _02080E50 ; =0x00000121
+ str r6, [r4, #0x0]
+ ldrb r0, [r6, r0]
+ cmp r0, #0x0
+ beq _02080E36
+ cmp r0, #0x1
+ beq _02080E36
+ cmp r0, #0x2
+ bne _02080E42
+_02080E36:
+ ldr r1, _02080E54 ; =FUN_02080E5C
+ add r0, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_0204640C
+ pop {r4-r6, pc}
+_02080E42:
+ ldr r1, _02080E58 ; =FUN_02081000
+ add r0, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_0204640C
+ pop {r4-r6, pc}
+ nop
+_02080E50: .word 0x00000121
+_02080E54: .word FUN_02080E5C
+_02080E58: .word FUN_02081000
+
+ thumb_func_start FUN_02080E5C
+FUN_02080E5C: ; 0x02080E5C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_02046528
+ add r0, r5, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x4]
+ cmp r0, #0xd
+ bls _02080E74
+ b _02080FCE
+_02080E74:
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02080E80: ; jump table (using 16-bit offset)
+ .short _02080E9C - _02080E80 - 2; case 0
+ .short _02080EAA - _02080E80 - 2; case 1
+ .short _02080EC6 - _02080E80 - 2; case 2
+ .short _02080EDE - _02080E80 - 2; case 3
+ .short _02080F00 - _02080E80 - 2; case 4
+ .short _02080F1C - _02080E80 - 2; case 5
+ .short _02080F3E - _02080E80 - 2; case 6
+ .short _02080F58 - _02080E80 - 2; case 7
+ .short _02080F6A - _02080E80 - 2; case 8
+ .short _02080F8A - _02080E80 - 2; case 9
+ .short _02080FA8 - _02080E80 - 2; case 10
+ .short _02080FBA - _02080E80 - 2; case 11
+ .short _02080FC0 - _02080E80 - 2; case 12
+ .short _02080FD2 - _02080E80 - 2; case 13
+_02080E9C:
+ add r0, r5, #0x0
+ bl FUN_0204AF3C
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _02080FDC
+_02080EAA:
+ ldr r0, [r4, #0x0]
+ ldr r1, _02080FE0 ; =0x00000171
+ ldrb r1, [r0, r1]
+ cmp r1, #0x0
+ beq _02080EBE
+ bl FUN_02081EC0
+ cmp r0, #0x1
+ beq _02080EBE
+ b _02080FDC
+_02080EBE:
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _02080FDC
+_02080EC6:
+ ldr r1, [r4, #0x0]
+ ldr r0, _02080FE0 ; =0x00000171
+ ldrb r0, [r1, r0]
+ cmp r0, #0x1
+ bne _02080ED6
+ mov r0, #0x0
+ bl FUN_02031588
+_02080ED6:
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _02080FDC
+_02080EDE:
+ ldr r2, [r4, #0x0]
+ ldr r1, _02080FE0 ; =0x00000171
+ ldrb r1, [r2, r1]
+ cmp r1, #0x1
+ bne _02080EFA
+ mov r0, #0x0
+ bl FUN_020315D8
+ cmp r0, #0x1
+ bne _02080FDC
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _02080FDC
+_02080EFA:
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _02080FDC
+_02080F00:
+ ldr r0, [r4, #0x0]
+ bl FUN_020815D0
+ ldr r3, [r4, #0x0]
+ ldr r2, _02080FE4 ; =0x000019B8
+ ldr r1, _02080FE8 ; =0x020FBBD8
+ ldr r2, [r3, r2]
+ add r0, r5, #0x0
+ bl FUN_02046500
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _02080FDC
+_02080F1C:
+ ldr r0, [r4, #0x0]
+ bl FUN_02081668
+ ldr r0, [r4, #0x0]
+ ldr r1, _02080FE0 ; =0x00000171
+ ldrb r1, [r0, r1]
+ cmp r1, #0x1
+ bne _02080F38
+ bl FUN_02081ED4
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _02080FDC
+_02080F38:
+ mov r0, #0x6
+ str r0, [r4, #0x4]
+ b _02080FDC
+_02080F3E:
+ ldr r0, [r4, #0x0]
+ ldr r1, _02080FE0 ; =0x00000171
+ ldrb r1, [r0, r1]
+ cmp r1, #0x0
+ beq _02080F50
+ bl FUN_02081EC0
+ cmp r0, #0x1
+ bne _02080FDC
+_02080F50:
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _02080FDC
+_02080F58:
+ ldr r1, _02080FEC ; =0x020FBBC8
+ ldr r2, [r4, #0x0]
+ add r0, r5, #0x0
+ bl FUN_02046500
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _02080FDC
+_02080F6A:
+ ldr r2, [r4, #0x0]
+ ldr r0, _02080FF0 ; =0x00000121
+ ldrb r0, [r2, r0]
+ add r0, #0xff
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x1
+ bhi _02080F82
+ ldr r1, _02080FF4 ; =0x020FBBF8
+ add r0, r5, #0x0
+ bl FUN_02046500
+_02080F82:
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _02080FDC
+_02080F8A:
+ ldr r2, [r4, #0x0]
+ ldr r0, _02080FF0 ; =0x00000121
+ ldrb r0, [r2, r0]
+ cmp r0, #0x0
+ beq _02080F98
+ cmp r0, #0x2
+ bne _02080FA0
+_02080F98:
+ ldr r1, _02080FF8 ; =0x020FBBE8
+ add r0, r5, #0x0
+ bl FUN_02046500
+_02080FA0:
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _02080FDC
+_02080FA8:
+ ldr r1, _02080FFC ; =0x020FBBB8
+ ldr r2, [r4, #0x0]
+ add r0, r5, #0x0
+ bl FUN_02046500
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _02080FDC
+_02080FBA:
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _02080FDC
+_02080FC0:
+ add r0, r5, #0x0
+ bl FUN_0204AF84
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _02080FDC
+_02080FCE:
+ bl ErrorHandling
+_02080FD2:
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_02080FDC:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+_02080FE0: .word 0x00000171
+_02080FE4: .word 0x000019B8
+_02080FE8: .word 0x020FBBD8
+_02080FEC: .word 0x020FBBC8
+_02080FF0: .word 0x00000121
+_02080FF4: .word 0x020FBBF8
+_02080FF8: .word 0x020FBBE8
+_02080FFC: .word 0x020FBBB8
+
+ thumb_func_start FUN_02081000
+FUN_02081000: ; 0x02081000
+ push {r3-r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ bl FUN_02046528
+ add r0, r5, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x9
+ bls _0208101A
+ b _020811A4
+_0208101A:
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02081026: ; jump table (using 16-bit offset)
+ .short _0208103A - _02081026 - 2; case 0
+ .short _02081048 - _02081026 - 2; case 1
+ .short _02081070 - _02081026 - 2; case 2
+ .short _0208108A - _02081026 - 2; case 3
+ .short _02081090 - _02081026 - 2; case 4
+ .short _020810AE - _02081026 - 2; case 5
+ .short _020810D2 - _02081026 - 2; case 6
+ .short _020810F0 - _02081026 - 2; case 7
+ .short _02081196 - _02081026 - 2; case 8
+ .short _020811A8 - _02081026 - 2; case 9
+_0208103A:
+ add r0, r5, #0x0
+ bl FUN_0204AF3C
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _020811B4
+_02081048:
+ ldr r0, [r4, #0x0]
+ ldr r1, _020811BC ; =0x00000121
+ ldrb r1, [r0, r1]
+ cmp r1, #0x3
+ beq _02081056
+ cmp r1, #0x4
+ bne _02081068
+_02081056:
+ bl FUN_020815D0
+ ldr r3, [r4, #0x0]
+ ldr r2, _020811C0 ; =0x000019B8
+ ldr r1, _020811C4 ; =0x020FBBD8
+ ldr r2, [r3, r2]
+ add r0, r5, #0x0
+ bl FUN_02046500
+_02081068:
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _020811B4
+_02081070:
+ ldr r0, [r4, #0x0]
+ ldr r1, _020811BC ; =0x00000121
+ ldrb r1, [r0, r1]
+ cmp r1, #0x3
+ beq _0208107E
+ cmp r1, #0x4
+ bne _02081082
+_0208107E:
+ bl FUN_02081668
+_02081082:
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _020811B4
+_0208108A:
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _020811B4
+_02081090:
+ ldr r2, [r4, #0x0]
+ ldr r0, _020811BC ; =0x00000121
+ ldrb r0, [r2, r0]
+ cmp r0, #0x3
+ beq _0208109E
+ cmp r0, #0x4
+ bne _020810A6
+_0208109E:
+ ldr r1, _020811C8 ; =0x020FBBC8
+ add r0, r5, #0x0
+ bl FUN_02046500
+_020810A6:
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _020811B4
+_020810AE:
+ ldr r0, [r4, #0x0]
+ ldr r1, _020811BC ; =0x00000121
+ ldrb r1, [r0, r1]
+ cmp r1, #0x5
+ beq _020810BC
+ cmp r1, #0x6
+ bne _020810CA
+_020810BC:
+ bl FUN_02082D18
+ ldr r1, _020811CC ; =0x020FBBF8
+ ldr r2, [r4, #0x0]
+ add r0, r5, #0x0
+ bl FUN_02046500
+_020810CA:
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _020811B4
+_020810D2:
+ ldr r2, [r4, #0x0]
+ ldr r0, _020811BC ; =0x00000121
+ ldrb r0, [r2, r0]
+ cmp r0, #0x7
+ beq _020810E0
+ cmp r0, #0x8
+ bne _020810E8
+_020810E0:
+ ldr r1, _020811D0 ; =0x020FBBE8
+ add r0, r5, #0x0
+ bl FUN_02046500
+_020810E8:
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _020811B4
+_020810F0:
+ ldr r1, [r4, #0x0]
+ ldr r0, _020811BC ; =0x00000121
+ ldrb r0, [r1, r0]
+ cmp r0, #0x8
+ bhi _0208116E
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02081106: ; jump table (using 16-bit offset)
+ .short _0208116E - _02081106 - 2; case 0
+ .short _0208116E - _02081106 - 2; case 1
+ .short _0208116E - _02081106 - 2; case 2
+ .short _02081118 - _02081106 - 2; case 3
+ .short _02081118 - _02081106 - 2; case 4
+ .short _0208113A - _02081106 - 2; case 5
+ .short _0208113A - _02081106 - 2; case 6
+ .short _02081156 - _02081106 - 2; case 7
+ .short _02081156 - _02081106 - 2; case 8
+_02081118:
+ mov r5, #0x0
+ add r6, sp, #0x0
+_0208111C:
+ ldr r0, [r4, #0x0]
+ add r1, r5, #0x0
+ bl FUN_02083308
+ add r7, r0, #0x0
+ ldr r0, [r4, #0x0]
+ add r1, r5, #0x0
+ bl FUN_0208336C
+ add r0, r7, r0
+ add r5, r5, #0x1
+ stmia r6!, {r0}
+ cmp r5, #0x4
+ blt _0208111C
+ b _0208116E
+_0208113A:
+ mov r2, #0x0
+ mov r3, #0x4b
+ add r0, r2, #0x0
+ add r1, sp, #0x0
+ lsl r3, r3, #0x2
+_02081144:
+ ldr r5, [r4, #0x0]
+ add r2, r2, #0x1
+ add r5, r5, r0
+ ldrsh r5, [r5, r3]
+ add r0, #0xc
+ cmp r2, #0x4
+ stmia r1!, {r5}
+ blt _02081144
+ b _0208116E
+_02081156:
+ mov r2, #0x0
+ ldr r3, _020811D4 ; =0x0000012E
+ add r0, r2, #0x0
+ add r1, sp, #0x0
+_0208115E:
+ ldr r5, [r4, #0x0]
+ add r2, r2, #0x1
+ add r5, r5, r0
+ ldrsh r5, [r5, r3]
+ add r0, #0xc
+ cmp r2, #0x4
+ stmia r1!, {r5}
+ blt _0208115E
+_0208116E:
+ ldr r1, [sp, #0x0]
+ mov r2, #0x0
+ mov r5, #0x1
+ add r3, sp, #0x4
+_02081176:
+ ldr r0, [r3, #0x0]
+ cmp r1, r0
+ bge _0208117E
+ add r2, r2, #0x1
+_0208117E:
+ add r5, r5, #0x1
+ add r3, r3, #0x4
+ cmp r5, #0x4
+ blt _02081176
+ mov r0, #0x13
+ ldr r1, [r4, #0x0]
+ lsl r0, r0, #0x4
+ strb r2, [r1, r0]
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _020811B4
+_02081196:
+ add r0, r5, #0x0
+ bl FUN_0204AF84
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _020811B4
+_020811A4:
+ bl ErrorHandling
+_020811A8:
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x10
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_020811B4:
+ mov r0, #0x0
+ add sp, #0x10
+ pop {r3-r7, pc}
+ nop
+_020811BC: .word 0x00000121
+_020811C0: .word 0x000019B8
+_020811C4: .word 0x020FBBD8
+_020811C8: .word 0x020FBBC8
+_020811CC: .word 0x020FBBF8
+_020811D0: .word 0x020FBBE8
+_020811D4: .word 0x0000012E
+
+ thumb_func_start FUN_020811D8
+FUN_020811D8: ; 0x020811D8
+ push {r4, lr}
+ ldr r1, _02081204 ; =0x000019C4
+ mov r0, #0x14
+ bl FUN_02016998
+ ldr r2, _02081204 ; =0x000019C4
+ mov r1, #0x0
+ add r4, r0, #0x0
+ blx MI_CpuFill8
+ ldr r0, _02081208 ; =0x00000123
+ mov r1, #0x0
+ strb r1, [r4, r0]
+ add r1, r0, #0x4
+ mov r2, #0x1
+ strb r2, [r4, r1]
+ mov r1, #0x3
+ add r0, r0, #0x3
+ strb r1, [r4, r0]
+ add r0, r4, #0x0
+ pop {r4, pc}
+ nop
+_02081204: .word 0x000019C4
+_02081208: .word 0x00000123
+
+ thumb_func_start FUN_0208120C
+FUN_0208120C: ; 0x0208120C
+ ldr r3, _02081210 ; =FUN_02016A18
+ bx r3
+ .balign 4
+_02081210: .word FUN_02016A18
+
+ thumb_func_start FUN_02081214
+FUN_02081214: ; 0x02081214
+ push {r3-r7, lr}
+ mov r2, #0x1
+ add r6, r0, #0x0
+ mov r0, #0xb
+ mov r1, #0x14
+ lsl r2, r2, #0xe
+ bl FUN_0201681C
+ bl FUN_020811D8
+ add r4, r0, #0x0
+ bl FUN_0201B9D4
+ mov r1, #0x67
+ lsl r1, r1, #0x6
+ str r0, [r4, r1]
+ add r0, r4, #0x0
+ bl FUN_0208285C
+ ldrb r1, [r6, #0x0]
+ ldr r0, _020813E4 ; =0x0000011F
+ strb r1, [r4, r0]
+ add r1, r0, #0x1
+ ldrb r2, [r6, #0x1]
+ add r0, r0, #0x2
+ strb r2, [r4, r1]
+ ldrb r1, [r6, #0x2]
+ strb r1, [r4, r0]
+ ldrb r0, [r6, #0x1]
+ mov r1, #0x0
+ bl FUN_02083454
+ ldr r1, _020813E8 ; =0x00000122
+ mov r7, #0x0
+ strb r0, [r4, r1]
+ add r0, r1, #0x1
+ ldrb r2, [r4, r0]
+ sub r0, r1, #0x6
+ add r5, r4, #0x0
+ strb r2, [r4, r0]
+ mov r0, #0x64
+ add r1, r0, #0x0
+ add r1, #0xc1
+ strb r0, [r4, r1]
+ add r1, r0, #0x0
+ add r1, #0xc1
+ ldrb r2, [r4, r1]
+ add r1, r0, #0x0
+ add r1, #0xb9
+ strb r2, [r4, r1]
+ mov r1, #0x1
+ add r0, #0xba
+ strb r1, [r4, r0]
+ ldr r1, [r6, #0x14]
+ ldr r0, _020813EC ; =0x0000199C
+ str r1, [r4, r0]
+ add r1, r0, #0x0
+ ldr r2, [r6, #0x18]
+ sub r1, #0x14
+ str r2, [r4, r1]
+ add r1, r0, #0x0
+ ldr r2, [r6, #0x1c]
+ sub r1, #0x10
+ str r2, [r4, r1]
+ add r1, r0, #0x0
+ ldr r2, [r6, #0x8]
+ sub r1, #0xc
+ str r2, [r4, r1]
+ ldrb r2, [r6, #0x5]
+ sub r1, r0, #0x4
+ strb r2, [r4, r1]
+ add r1, r0, #0x0
+ ldr r2, [r6, #0x10]
+ sub r1, #0x8
+ str r2, [r4, r1]
+ sub r1, r0, #0x3
+ ldrb r2, [r6, #0x3]
+ sub r0, r0, #0x2
+ strb r2, [r4, r1]
+ ldrb r1, [r6, #0x4]
+ strb r1, [r4, r0]
+_020812B6:
+ mov r0, #0x14
+ bl FUN_02026FE8
+ add r1, r5, #0x0
+ add r1, #0xf8
+ add r7, r7, #0x1
+ add r5, r5, #0x4
+ str r0, [r1, #0x0]
+ cmp r7, #0x4
+ blt _020812B6
+ mov r3, #0x12
+ lsl r3, r3, #0x4
+ ldrb r0, [r4, r3]
+ sub r2, r3, #0x2
+ sub r3, r3, #0x1
+ str r0, [sp, #0x0]
+ ldrb r2, [r4, r2]
+ ldrb r3, [r4, r3]
+ add r0, r4, #0x0
+ mov r1, #0xb
+ bl FUN_02082ED0
+ mov r0, #0x14
+ bl FUN_0206B8AC
+ mov r1, #0x56
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ mov r7, #0x0
+ add r5, r4, #0x0
+_020812F2:
+ mov r0, #0x14
+ bl FUN_020669C0
+ add r7, r7, #0x1
+ stmia r5!, {r0}
+ cmp r7, #0x4
+ blt _020812F2
+ mov r7, #0x0
+ add r5, r4, #0x0
+_02081304:
+ mov r0, #0x14
+ bl FUN_02029EE4
+ mov r1, #0x57
+ lsl r1, r1, #0x2
+ str r0, [r5, r1]
+ add r7, r7, #0x1
+ add r5, r5, #0x4
+ cmp r7, #0x4
+ blt _02081304
+ add r0, r1, #0x0
+ ldr r0, [r4, r0]
+ ldr r1, [r6, #0x20]
+ bl FUN_02029F9C
+ ldr r0, [r6, #0x8]
+ ldr r1, [r4, #0x0]
+ bl FUN_02069B88
+ mov r0, #0x8
+ mov r1, #0x14
+ bl FUN_020219F4
+ add r1, r4, #0x0
+ add r1, #0xe8
+ str r0, [r1, #0x0]
+ add r0, r4, #0x0
+ add r0, #0xe8
+ ldr r0, [r0, #0x0]
+ ldr r1, [r6, #0xc]
+ bl FUN_02021A74
+ ldr r0, [r6, #0x10]
+ bl FUN_020239CC
+ mov r1, #0x42
+ lsl r1, r1, #0x2
+ strb r0, [r4, r1]
+ add r0, r1, #0x4
+ mov r2, #0x0
+ strb r2, [r4, r0]
+ add r1, #0x17
+ ldrb r1, [r4, r1]
+ ldr r0, [r4, #0x0]
+ bl FUN_02081540
+ mov r1, #0x11
+ lsl r1, r1, #0x4
+ strb r0, [r4, r1]
+ add r0, r4, #0x0
+ bl FUN_020832EC
+ cmp r0, #0x0
+ ldr r0, [r6, #0x10]
+ bne _0208138E
+ bl FUN_020239CC
+ cmp r0, #0x0
+ bne _02081384
+ mov r1, #0xba
+ add r0, r1, #0x0
+ add r0, #0x5a
+ strh r1, [r4, r0]
+ b _020813A8
+_02081384:
+ mov r1, #0xbb
+ add r0, r1, #0x0
+ add r0, #0x59
+ strh r1, [r4, r0]
+ b _020813A8
+_0208138E:
+ bl FUN_020239CC
+ cmp r0, #0x0
+ bne _020813A0
+ mov r0, #0x45
+ mov r1, #0x0
+ lsl r0, r0, #0x2
+ strh r1, [r4, r0]
+ b _020813A8
+_020813A0:
+ mov r1, #0x61
+ add r0, r1, #0x0
+ add r0, #0xb3
+ strh r1, [r4, r0]
+_020813A8:
+ ldrb r1, [r6, #0x3]
+ ldrb r2, [r6, #0x4]
+ add r0, r4, #0x0
+ bl FUN_020813F4
+ add r0, r4, #0x0
+ bl FUN_020832EC
+ cmp r0, #0x1
+ bne _020813D0
+ ldr r1, _020813F0 ; =0x00000172
+ mov r5, #0x0
+ mov r0, #0x3
+_020813C2:
+ sub r3, r0, r5
+ add r2, r4, r5
+ add r5, r5, #0x1
+ strb r3, [r2, r1]
+ cmp r5, #0x4
+ blt _020813C2
+ b _020813DE
+_020813D0:
+ ldr r0, _020813F0 ; =0x00000172
+ mov r2, #0x0
+_020813D4:
+ add r1, r4, r2
+ strb r2, [r1, r0]
+ add r2, r2, #0x1
+ cmp r2, #0x4
+ blt _020813D4
+_020813DE:
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+ nop
+_020813E4: .word 0x0000011F
+_020813E8: .word 0x00000122
+_020813EC: .word 0x0000199C
+_020813F0: .word 0x00000172
+
+ thumb_func_start FUN_020813F4
+FUN_020813F4: ; 0x020813F4
+ push {r3-r7, lr}
+ sub sp, #0x10
+ mov r3, #0x12
+ add r5, r0, #0x0
+ lsl r3, r3, #0x4
+ ldrb r4, [r5, r3]
+ str r4, [sp, #0x0]
+ add r4, r3, #0x1
+ ldrb r4, [r5, r4]
+ sub r3, r3, #0x1
+ str r4, [sp, #0x4]
+ str r1, [sp, #0x8]
+ str r2, [sp, #0xc]
+ ldrb r3, [r5, r3]
+ mov r1, #0xb
+ mov r2, #0x3
+ bl FUN_020828E4
+ add r4, r5, #0x0
+ add r4, #0x10
+ mov r7, #0x1
+ add r6, r5, #0x4
+ add r4, #0x30
+_02081422:
+ ldr r1, [r6, #0x0]
+ add r0, r4, #0x0
+ mov r2, #0x14
+ bl FUN_02082D60
+ add r7, r7, #0x1
+ add r6, r6, #0x4
+ add r4, #0x30
+ cmp r7, #0x4
+ blt _02081422
+ mov r6, #0x1
+ add r4, r5, #0x4
+ mov r7, #0x8
+_0208143C:
+ add r0, r4, #0x0
+ add r0, #0xe8
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _02081454
+ add r0, r7, #0x0
+ mov r1, #0x14
+ bl FUN_020219F4
+ add r1, r4, #0x0
+ add r1, #0xe8
+ str r0, [r1, #0x0]
+_02081454:
+ add r2, r4, #0x0
+ add r2, #0xe8
+ ldr r0, [r4, #0x0]
+ ldr r2, [r2, #0x0]
+ mov r1, #0x90
+ bl FUN_020671BC
+ add r6, r6, #0x1
+ add r4, r4, #0x4
+ cmp r6, #0x4
+ blt _0208143C
+ add r0, r5, #0x0
+ add r0, #0x30
+ mov r2, #0x42
+ mov r1, #0x1
+ add r0, #0x30
+ lsl r2, r2, #0x2
+_02081476:
+ ldrh r3, [r0, #0x0]
+ add r0, #0x30
+ lsl r3, r3, #0x12
+ lsr r4, r3, #0x1e
+ add r3, r5, r1
+ add r1, r1, #0x1
+ strb r4, [r3, r2]
+ cmp r1, #0x4
+ blt _02081476
+ add r0, r5, #0x0
+ add r0, #0x30
+ mov r2, #0x43
+ mov r1, #0x1
+ add r0, #0x30
+ lsl r2, r2, #0x2
+_02081494:
+ ldrh r3, [r0, #0x0]
+ add r0, #0x30
+ lsl r3, r3, #0x10
+ lsr r4, r3, #0x1e
+ add r3, r5, r1
+ add r1, r1, #0x1
+ strb r4, [r3, r2]
+ cmp r1, #0x4
+ blt _02081494
+ add r3, r5, #0x0
+ mov r1, #0x11
+ mov r4, #0x1
+ add r3, #0x30
+ lsl r1, r1, #0x4
+_020814B0:
+ add r0, r3, #0x0
+ add r0, #0x3e
+ ldrb r2, [r0, #0x0]
+ add r0, r5, r4
+ add r4, r4, #0x1
+ add r3, #0x30
+ strb r2, [r0, r1]
+ cmp r4, #0x4
+ blt _020814B0
+ add r2, r5, #0x0
+ mov r0, #0x45
+ mov r4, #0x1
+ add r2, #0x30
+ add r3, r5, #0x2
+ lsl r0, r0, #0x2
+_020814CE:
+ ldrh r1, [r2, #0x18]
+ add r4, r4, #0x1
+ add r2, #0x30
+ strh r1, [r3, r0]
+ add r3, r3, #0x2
+ cmp r4, #0x4
+ blt _020814CE
+ add r0, r5, #0x0
+ mov r1, #0xb
+ bl FUN_02082B90
+ add sp, #0x10
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_020814E8
+FUN_020814E8: ; 0x020814E8
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ mov r0, #0x56
+ lsl r0, r0, #0x2
+ ldr r0, [r7, r0]
+ bl FUN_02016A18
+ mov r6, #0x57
+ mov r4, #0x0
+ add r5, r7, #0x0
+ lsl r6, r6, #0x2
+_020814FE:
+ ldr r0, [r5, #0x0]
+ bl FUN_02016A18
+ add r0, r5, #0x0
+ add r0, #0xe8
+ ldr r0, [r0, #0x0]
+ bl FUN_02021A20
+ add r0, r5, #0x0
+ add r0, #0xf8
+ ldr r0, [r0, #0x0]
+ bl FUN_02016A18
+ ldr r0, [r5, r6]
+ bl FUN_02016A18
+ add r4, r4, #0x1
+ add r5, r5, #0x4
+ cmp r4, #0x4
+ blt _020814FE
+ mov r0, #0x67
+ lsl r0, r0, #0x6
+ ldr r0, [r7, r0]
+ bl FUN_0201B9E0
+ add r0, r7, #0x0
+ bl FUN_0208120C
+ mov r0, #0x14
+ bl FUN_020168D0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02081540
+FUN_02081540: ; 0x02081540
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ mov r0, #0x1
+ add r7, r1, #0x0
+ str r0, [sp, #0x0]
+ mov r4, #0x0
+_0208154C:
+ cmp r7, #0x4
+ bhi _020815B6
+ add r0, r7, r7
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0208155C: ; jump table (using 16-bit offset)
+ .short _02081566 - _0208155C - 2; case 0
+ .short _02081576 - _0208155C - 2; case 1
+ .short _02081586 - _0208155C - 2; case 2
+ .short _02081596 - _0208155C - 2; case 3
+ .short _020815A6 - _0208155C - 2; case 4
+_02081566:
+ add r1, r4, #0x0
+ add r0, r5, #0x0
+ add r1, #0x7a
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r6, r0, #0x0
+ b _020815BA
+_02081576:
+ add r1, r4, #0x0
+ add r0, r5, #0x0
+ add r1, #0x7e
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r6, r0, #0x0
+ b _020815BA
+_02081586:
+ add r1, r4, #0x0
+ add r0, r5, #0x0
+ add r1, #0x82
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r6, r0, #0x0
+ b _020815BA
+_02081596:
+ add r1, r4, #0x0
+ add r0, r5, #0x0
+ add r1, #0x86
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r6, r0, #0x0
+ b _020815BA
+_020815A6:
+ add r1, r4, #0x0
+ add r0, r5, #0x0
+ add r1, #0x8a
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r6, r0, #0x0
+ b _020815BA
+_020815B6:
+ bl ErrorHandling
+_020815BA:
+ cmp r6, #0x0
+ beq _020815CA
+ ldr r0, [sp, #0x0]
+ add r4, r4, #0x1
+ add r0, r0, #0x1
+ str r0, [sp, #0x0]
+ cmp r4, #0x3
+ ble _0208154C
+_020815CA:
+ ldr r0, [sp, #0x0]
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020815D0
+FUN_020815D0: ; 0x020815D0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, _02081658 ; =0x00000123
+ ldrb r0, [r5, r0]
+ lsl r0, r0, #0x2
+ add r0, r5, r0
+ add r0, #0xf8
+ ldr r0, [r0, #0x0]
+ bl FUN_02027740
+ mov r0, #0x14
+ mov r1, #0x28
+ bl FUN_02016998
+ mov r1, #0x0
+ mov r2, #0x28
+ add r4, r0, #0x0
+ blx MI_CpuFill8
+ ldr r0, _02081658 ; =0x00000123
+ ldrb r1, [r5, r0]
+ lsl r1, r1, #0x2
+ ldr r1, [r5, r1]
+ str r1, [r4, #0x0]
+ ldrb r1, [r5, r0]
+ lsl r1, r1, #0x2
+ add r1, r5, r1
+ add r1, #0xf8
+ ldr r1, [r1, #0x0]
+ str r1, [r4, #0x4]
+ sub r1, r0, #0x1
+ ldrb r1, [r5, r1]
+ str r1, [r4, #0x8]
+ add r1, r0, #0x0
+ add r1, #0x4e
+ ldrb r1, [r5, r1]
+ cmp r1, #0x1
+ bne _02081620
+ mov r0, #0x4
+ b _02081624
+_02081620:
+ sub r0, r0, #0x3
+ ldrb r0, [r5, r0]
+_02081624:
+ str r0, [r4, #0xc]
+ ldr r0, _0208165C ; =0x00000121
+ ldrb r1, [r5, r0]
+ sub r0, r0, #0x2
+ str r1, [r4, #0x10]
+ ldrb r0, [r5, r0]
+ str r0, [r4, #0x14]
+ ldr r0, _02081660 ; =0x0000199C
+ ldr r0, [r5, r0]
+ bl FUN_0202708C
+ ldr r1, _02081664 ; =0x000019A0
+ str r0, [r4, #0x18]
+ add r0, r5, r1
+ str r0, [r4, #0x1c]
+ add r0, r1, #0x0
+ sub r0, #0x18
+ ldr r0, [r5, r0]
+ str r0, [r4, #0x20]
+ add r0, r1, #0x0
+ sub r0, #0xc
+ ldr r0, [r5, r0]
+ add r1, #0x18
+ str r0, [r4, #0x24]
+ str r4, [r5, r1]
+ pop {r3-r5, pc}
+ .balign 4
+_02081658: .word 0x00000123
+_0208165C: .word 0x00000121
+_02081660: .word 0x0000199C
+_02081664: .word 0x000019A0
+
+ thumb_func_start FUN_02081668
+FUN_02081668: ; 0x02081668
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _0208167C ; =0x000019B8
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ ldr r0, _0208167C ; =0x000019B8
+ mov r1, #0x0
+ str r1, [r4, r0]
+ pop {r4, pc}
+ .balign 4
+_0208167C: .word 0x000019B8
+
+ thumb_func_start FUN_02081680
+FUN_02081680: ; 0x02081680
+ push {r3-r7, lr}
+ sub sp, #0x10
+ ldr r2, _020819E8 ; =0x00000176
+ add r4, r1, #0x0
+ str r0, [sp, #0x0]
+ ldrb r0, [r4, r2]
+ cmp r0, #0x2f
+ bls _02081692
+ b _02081D24
+_02081692:
+ add r3, r0, r0
+ add r3, pc
+ ldrh r3, [r3, #0x6]
+ lsl r3, r3, #0x10
+ asr r3, r3, #0x10
+ add pc, r3
+_0208169E: ; jump table (using 16-bit offset)
+ .short _020816FE - _0208169E - 2; case 0
+ .short _02081716 - _0208169E - 2; case 1
+ .short _0208172C - _0208169E - 2; case 2
+ .short _02081742 - _0208169E - 2; case 3
+ .short _0208175E - _0208169E - 2; case 4
+ .short _02081776 - _0208169E - 2; case 5
+ .short _0208178C - _0208169E - 2; case 6
+ .short _020817A8 - _0208169E - 2; case 7
+ .short _020817C4 - _0208169E - 2; case 8
+ .short _020817DC - _0208169E - 2; case 9
+ .short _020817F2 - _0208169E - 2; case 10
+ .short _02081822 - _0208169E - 2; case 11
+ .short _02081838 - _0208169E - 2; case 12
+ .short _02081850 - _0208169E - 2; case 13
+ .short _02081866 - _0208169E - 2; case 14
+ .short _02081884 - _0208169E - 2; case 15
+ .short _020818A0 - _0208169E - 2; case 16
+ .short _020818B8 - _0208169E - 2; case 17
+ .short _020818CE - _0208169E - 2; case 18
+ .short _0208190A - _0208169E - 2; case 19
+ .short _02081940 - _0208169E - 2; case 20
+ .short _02081958 - _0208169E - 2; case 21
+ .short _0208196E - _0208169E - 2; case 22
+ .short _0208198E - _0208169E - 2; case 23
+ .short _020819DE - _0208169E - 2; case 24
+ .short _02081A04 - _0208169E - 2; case 25
+ .short _02081A1A - _0208169E - 2; case 26
+ .short _02081A54 - _0208169E - 2; case 27
+ .short _02081A8A - _0208169E - 2; case 28
+ .short _02081AB6 - _0208169E - 2; case 29
+ .short _02081ACC - _0208169E - 2; case 30
+ .short _02081AE8 - _0208169E - 2; case 31
+ .short _02081B04 - _0208169E - 2; case 32
+ .short _02081B1C - _0208169E - 2; case 33
+ .short _02081B32 - _0208169E - 2; case 34
+ .short _02081B6C - _0208169E - 2; case 35
+ .short _02081BA2 - _0208169E - 2; case 36
+ .short _02081BBA - _0208169E - 2; case 37
+ .short _02081BD0 - _0208169E - 2; case 38
+ .short _02081BFA - _0208169E - 2; case 39
+ .short _02081C16 - _0208169E - 2; case 40
+ .short _02081C2E - _0208169E - 2; case 41
+ .short _02081C44 - _0208169E - 2; case 42
+ .short _02081C86 - _0208169E - 2; case 43
+ .short _02081CBC - _0208169E - 2; case 44
+ .short _02081CD4 - _0208169E - 2; case 45
+ .short _02081CEA - _0208169E - 2; case 46
+ .short _02081D08 - _0208169E - 2; case 47
+_020816FE:
+ mov r0, #0x5
+ bl FUN_02031588
+ ldr r0, _020819EC ; =0x00000584
+ mov r1, #0x0
+ strb r1, [r4, r0]
+ ldr r0, _020819E8 ; =0x00000176
+ add sp, #0x10
+ ldrb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, r0]
+ pop {r3-r7, pc}
+_02081716:
+ mov r0, #0x5
+ bl FUN_020315D8
+ cmp r0, #0x1
+ bne _0208180C
+ ldr r0, _020819E8 ; =0x00000176
+ add sp, #0x10
+ ldrb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, r0]
+ pop {r3-r7, pc}
+_0208172C:
+ add r0, r4, #0x0
+ bl FUN_02083630
+ cmp r0, #0x1
+ bne _0208180C
+ ldr r0, _020819E8 ; =0x00000176
+ add sp, #0x10
+ ldrb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, r0]
+ pop {r3-r7, pc}
+_02081742:
+ ldr r0, _020819EC ; =0x00000584
+ add r1, r2, #0x0
+ sub r1, #0x4f
+ ldrb r3, [r4, r0]
+ ldrb r1, [r4, r1]
+ cmp r3, r1
+ blo _0208180C
+ mov r1, #0x0
+ strb r1, [r4, r0]
+ ldrb r0, [r4, r2]
+ add sp, #0x10
+ add r0, r0, #0x1
+ strb r0, [r4, r2]
+ pop {r3-r7, pc}
+_0208175E:
+ mov r0, #0x6
+ bl FUN_02031588
+ ldr r0, _020819EC ; =0x00000584
+ mov r1, #0x0
+ strb r1, [r4, r0]
+ ldr r0, _020819E8 ; =0x00000176
+ add sp, #0x10
+ ldrb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, r0]
+ pop {r3-r7, pc}
+_02081776:
+ mov r0, #0x6
+ bl FUN_020315D8
+ cmp r0, #0x1
+ bne _0208180C
+ ldr r0, _020819E8 ; =0x00000176
+ add sp, #0x10
+ ldrb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, r0]
+ pop {r3-r7, pc}
+_0208178C:
+ sub r2, #0x53
+ ldrb r1, [r4, r2]
+ ldr r2, [r4, #0x0]
+ add r0, r4, #0x0
+ bl FUN_020836BC
+ cmp r0, #0x1
+ bne _0208180C
+ ldr r0, _020819E8 ; =0x00000176
+ add sp, #0x10
+ ldrb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, r0]
+ pop {r3-r7, pc}
+_020817A8:
+ ldr r0, _020819EC ; =0x00000584
+ add r1, r2, #0x0
+ sub r1, #0x4f
+ ldrb r3, [r4, r0]
+ ldrb r1, [r4, r1]
+ cmp r3, r1
+ blo _0208180C
+ mov r1, #0x0
+ strb r1, [r4, r0]
+ ldrb r0, [r4, r2]
+ add sp, #0x10
+ add r0, r0, #0x1
+ strb r0, [r4, r2]
+ pop {r3-r7, pc}
+_020817C4:
+ mov r0, #0x7
+ bl FUN_02031588
+ ldr r0, _020819EC ; =0x00000584
+ mov r1, #0x0
+ strb r1, [r4, r0]
+ ldr r0, _020819E8 ; =0x00000176
+ add sp, #0x10
+ ldrb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, r0]
+ pop {r3-r7, pc}
+_020817DC:
+ mov r0, #0x7
+ bl FUN_020315D8
+ cmp r0, #0x1
+ bne _0208180C
+ ldr r0, _020819E8 ; =0x00000176
+ add sp, #0x10
+ ldrb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, r0]
+ pop {r3-r7, pc}
+_020817F2:
+ add r3, r2, #0x0
+ sub r3, #0x53
+ ldrb r5, [r4, r3]
+ add r3, r2, #0x0
+ sub r3, #0x5a
+ ldrb r3, [r4, r3]
+ cmp r5, r3
+ bne _0208181A
+ add r0, r4, #0x0
+ bl FUN_0208373C
+ cmp r0, #0x1
+ beq _0208180E
+_0208180C:
+ b _02081DBC
+_0208180E:
+ ldr r0, _020819E8 ; =0x00000176
+ add sp, #0x10
+ ldrb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, r0]
+ pop {r3-r7, pc}
+_0208181A:
+ add r0, r0, #0x1
+ add sp, #0x10
+ strb r0, [r4, r2]
+ pop {r3-r7, pc}
+_02081822:
+ ldr r0, _020819EC ; =0x00000584
+ ldrb r1, [r4, r0]
+ cmp r1, #0x0
+ beq _02081912
+ mov r1, #0x0
+ strb r1, [r4, r0]
+ ldrb r0, [r4, r2]
+ add sp, #0x10
+ add r0, r0, #0x1
+ strb r0, [r4, r2]
+ pop {r3-r7, pc}
+_02081838:
+ mov r0, #0x8
+ bl FUN_02031588
+ ldr r0, _020819EC ; =0x00000584
+ mov r1, #0x0
+ strb r1, [r4, r0]
+ ldr r0, _020819E8 ; =0x00000176
+ add sp, #0x10
+ ldrb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, r0]
+ pop {r3-r7, pc}
+_02081850:
+ mov r0, #0x8
+ bl FUN_020315D8
+ cmp r0, #0x1
+ bne _02081912
+ ldr r0, _020819E8 ; =0x00000176
+ add sp, #0x10
+ ldrb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, r0]
+ pop {r3-r7, pc}
+_02081866:
+ sub r2, #0x53
+ ldrb r1, [r4, r2]
+ add r2, r4, #0x0
+ add r0, r4, #0x0
+ add r2, #0x10
+ bl FUN_020837B4
+ cmp r0, #0x1
+ bne _02081912
+ ldr r0, _020819E8 ; =0x00000176
+ add sp, #0x10
+ ldrb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, r0]
+ pop {r3-r7, pc}
+_02081884:
+ ldr r0, _020819EC ; =0x00000584
+ add r1, r2, #0x0
+ sub r1, #0x4f
+ ldrb r3, [r4, r0]
+ ldrb r1, [r4, r1]
+ cmp r3, r1
+ blo _02081912
+ mov r1, #0x0
+ strb r1, [r4, r0]
+ ldrb r0, [r4, r2]
+ add sp, #0x10
+ add r0, r0, #0x1
+ strb r0, [r4, r2]
+ pop {r3-r7, pc}
+_020818A0:
+ mov r0, #0x9
+ bl FUN_02031588
+ ldr r0, _020819EC ; =0x00000584
+ mov r1, #0x0
+ strb r1, [r4, r0]
+ ldr r0, _020819E8 ; =0x00000176
+ add sp, #0x10
+ ldrb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, r0]
+ pop {r3-r7, pc}
+_020818B8:
+ mov r0, #0x9
+ bl FUN_020315D8
+ cmp r0, #0x1
+ bne _02081912
+ ldr r0, _020819E8 ; =0x00000176
+ add sp, #0x10
+ ldrb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, r0]
+ pop {r3-r7, pc}
+_020818CE:
+ add r1, r2, #0x0
+ sub r1, #0x53
+ ldrb r3, [r4, r1]
+ add r1, r2, #0x0
+ sub r1, #0x5a
+ ldrb r1, [r4, r1]
+ cmp r3, r1
+ bne _02081902
+ add r0, r2, #0x2
+ ldr r1, [r4, r0]
+ add r3, r4, #0x0
+ mov r2, #0x30
+ add r3, #0x10
+ mul r2, r1
+ add r0, r4, #0x0
+ add r2, r3, r2
+ bl FUN_020837B4
+ cmp r0, #0x1
+ bne _02081912
+ ldr r0, _020819E8 ; =0x00000176
+ add sp, #0x10
+ ldrb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, r0]
+ pop {r3-r7, pc}
+_02081902:
+ add r0, r0, #0x1
+ add sp, #0x10
+ strb r0, [r4, r2]
+ pop {r3-r7, pc}
+_0208190A:
+ ldr r1, _020819EC ; =0x00000584
+ ldrb r0, [r4, r1]
+ cmp r0, #0x0
+ bne _02081914
+_02081912:
+ b _02081DBC
+_02081914:
+ mov r0, #0x0
+ strb r0, [r4, r1]
+ add r1, r2, #0x2
+ ldr r1, [r4, r1]
+ add r3, r1, #0x1
+ add r1, r2, #0x2
+ str r3, [r4, r1]
+ ldr r1, [r4, r1]
+ cmp r1, #0x4
+ bge _02081932
+ ldrb r0, [r4, r2]
+ add sp, #0x10
+ sub r0, r0, #0x1
+ strb r0, [r4, r2]
+ pop {r3-r7, pc}
+_02081932:
+ add r1, r2, #0x2
+ str r0, [r4, r1]
+ ldrb r0, [r4, r2]
+ add sp, #0x10
+ add r0, r0, #0x1
+ strb r0, [r4, r2]
+ pop {r3-r7, pc}
+_02081940:
+ mov r0, #0xa
+ bl FUN_02031588
+ ldr r0, _020819EC ; =0x00000584
+ mov r1, #0x0
+ strb r1, [r4, r0]
+ ldr r0, _020819E8 ; =0x00000176
+ add sp, #0x10
+ ldrb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, r0]
+ pop {r3-r7, pc}
+_02081958:
+ mov r0, #0xa
+ bl FUN_020315D8
+ cmp r0, #0x1
+ bne _02081A5C
+ ldr r0, _020819E8 ; =0x00000176
+ add sp, #0x10
+ ldrb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, r0]
+ pop {r3-r7, pc}
+_0208196E:
+ sub r2, #0x53
+ ldrb r1, [r4, r2]
+ add r2, r4, #0x0
+ add r2, #0xe8
+ ldr r2, [r2, #0x0]
+ add r0, r4, #0x0
+ bl FUN_020838B4
+ cmp r0, #0x1
+ bne _02081A5C
+ ldr r0, _020819E8 ; =0x00000176
+ add sp, #0x10
+ ldrb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, r0]
+ pop {r3-r7, pc}
+_0208198E:
+ ldr r0, _020819EC ; =0x00000584
+ sub r2, #0x4f
+ ldrb r1, [r4, r2]
+ ldrb r0, [r4, r0]
+ cmp r0, r1
+ blo _02081A5C
+ mov r5, #0x0
+ cmp r1, #0x0
+ ble _020819CC
+ add r6, r4, #0x0
+_020819A2:
+ add r0, r5, #0x0
+ bl FUN_0202DFA4
+ add r7, r0, #0x0
+ add r0, r6, #0x0
+ add r0, #0xe8
+ ldr r0, [r0, #0x0]
+ bl FUN_02021A4C
+ add r1, r6, #0x0
+ add r1, #0xe8
+ ldr r1, [r1, #0x0]
+ add r0, r7, #0x0
+ bl FUN_02023990
+ ldr r0, _020819F0 ; =0x00000127
+ add r5, r5, #0x1
+ ldrb r0, [r4, r0]
+ add r6, r6, #0x4
+ cmp r5, r0
+ blt _020819A2
+_020819CC:
+ ldr r0, _020819EC ; =0x00000584
+ mov r1, #0x0
+ strb r1, [r4, r0]
+ ldr r0, _020819E8 ; =0x00000176
+ add sp, #0x10
+ ldrb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, r0]
+ pop {r3-r7, pc}
+_020819DE:
+ mov r0, #0xb
+ bl FUN_02031588
+ ldr r0, _020819EC ; =0x00000584
+ b _020819F4
+ .balign 4
+_020819E8: .word 0x00000176
+_020819EC: .word 0x00000584
+_020819F0: .word 0x00000127
+_020819F4:
+ mov r1, #0x0
+ strb r1, [r4, r0]
+ ldr r0, _02081D28 ; =0x00000176
+ add sp, #0x10
+ ldrb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, r0]
+ pop {r3-r7, pc}
+_02081A04:
+ mov r0, #0xb
+ bl FUN_020315D8
+ cmp r0, #0x1
+ bne _02081A5C
+ ldr r0, _02081D28 ; =0x00000176
+ add sp, #0x10
+ ldrb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, r0]
+ pop {r3-r7, pc}
+_02081A1A:
+ add r1, r2, #0x0
+ sub r1, #0x53
+ ldrb r3, [r4, r1]
+ add r1, r2, #0x0
+ sub r1, #0x5a
+ ldrb r1, [r4, r1]
+ cmp r3, r1
+ bne _02081A4C
+ add r0, r2, #0x2
+ ldr r1, [r4, r0]
+ add r0, r4, #0x0
+ lsl r2, r1, #0x2
+ add r2, r4, r2
+ add r2, #0xe8
+ ldr r2, [r2, #0x0]
+ bl FUN_020838B4
+ cmp r0, #0x1
+ bne _02081A5C
+ ldr r0, _02081D28 ; =0x00000176
+ add sp, #0x10
+ ldrb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, r0]
+ pop {r3-r7, pc}
+_02081A4C:
+ add r0, r0, #0x1
+ add sp, #0x10
+ strb r0, [r4, r2]
+ pop {r3-r7, pc}
+_02081A54:
+ ldr r1, _02081D2C ; =0x00000584
+ ldrb r0, [r4, r1]
+ cmp r0, #0x0
+ bne _02081A5E
+_02081A5C:
+ b _02081DBC
+_02081A5E:
+ mov r0, #0x0
+ strb r0, [r4, r1]
+ add r1, r2, #0x2
+ ldr r1, [r4, r1]
+ add r3, r1, #0x1
+ add r1, r2, #0x2
+ str r3, [r4, r1]
+ ldr r1, [r4, r1]
+ cmp r1, #0x4
+ bge _02081A7C
+ ldrb r0, [r4, r2]
+ add sp, #0x10
+ sub r0, r0, #0x1
+ strb r0, [r4, r2]
+ pop {r3-r7, pc}
+_02081A7C:
+ add r1, r2, #0x2
+ str r0, [r4, r1]
+ ldrb r0, [r4, r2]
+ add sp, #0x10
+ add r0, r0, #0x1
+ strb r0, [r4, r2]
+ pop {r3-r7, pc}
+_02081A8A:
+ bl FUN_02029EC4
+ add r2, r0, #0x0
+ mov r0, #0x57
+ lsl r0, r0, #0x2
+ ldr r1, _02081D30 ; =0x00000585
+ ldr r0, [r4, r0]
+ add r1, r4, r1
+ blx MI_CpuCopy8
+ mov r0, #0xc
+ bl FUN_02031588
+ ldr r0, _02081D2C ; =0x00000584
+ mov r1, #0x0
+ strb r1, [r4, r0]
+ ldr r0, _02081D28 ; =0x00000176
+ add sp, #0x10
+ ldrb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, r0]
+ pop {r3-r7, pc}
+_02081AB6:
+ mov r0, #0xc
+ bl FUN_020315D8
+ cmp r0, #0x1
+ bne _02081B74
+ ldr r0, _02081D28 ; =0x00000176
+ add sp, #0x10
+ ldrb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, r0]
+ pop {r3-r7, pc}
+_02081ACC:
+ sub r2, #0x53
+ ldrb r1, [r4, r2]
+ add r0, r4, #0x0
+ mov r2, #0x0
+ bl FUN_02083AD4
+ cmp r0, #0x1
+ bne _02081B74
+ ldr r0, _02081D28 ; =0x00000176
+ add sp, #0x10
+ ldrb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, r0]
+ pop {r3-r7, pc}
+_02081AE8:
+ ldr r0, _02081D2C ; =0x00000584
+ add r1, r2, #0x0
+ sub r1, #0x4f
+ ldrb r3, [r4, r0]
+ ldrb r1, [r4, r1]
+ cmp r3, r1
+ blo _02081B74
+ mov r1, #0x0
+ strb r1, [r4, r0]
+ ldrb r0, [r4, r2]
+ add sp, #0x10
+ add r0, r0, #0x1
+ strb r0, [r4, r2]
+ pop {r3-r7, pc}
+_02081B04:
+ mov r0, #0xd
+ bl FUN_02031588
+ ldr r0, _02081D2C ; =0x00000584
+ mov r1, #0x0
+ strb r1, [r4, r0]
+ ldr r0, _02081D28 ; =0x00000176
+ add sp, #0x10
+ ldrb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, r0]
+ pop {r3-r7, pc}
+_02081B1C:
+ mov r0, #0xd
+ bl FUN_020315D8
+ cmp r0, #0x1
+ bne _02081B74
+ ldr r0, _02081D28 ; =0x00000176
+ add sp, #0x10
+ ldrb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, r0]
+ pop {r3-r7, pc}
+_02081B32:
+ add r1, r2, #0x0
+ sub r1, #0x53
+ ldrb r3, [r4, r1]
+ add r1, r2, #0x0
+ sub r1, #0x5a
+ ldrb r1, [r4, r1]
+ cmp r3, r1
+ bne _02081B64
+ add r0, r2, #0x2
+ ldr r1, [r4, r0]
+ sub r2, #0x1a
+ lsl r3, r1, #0x2
+ add r3, r4, r3
+ ldr r2, [r3, r2]
+ add r0, r4, #0x0
+ bl FUN_02083AD4
+ cmp r0, #0x1
+ bne _02081B74
+ ldr r0, _02081D28 ; =0x00000176
+ add sp, #0x10
+ ldrb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, r0]
+ pop {r3-r7, pc}
+_02081B64:
+ add r0, r0, #0x1
+ add sp, #0x10
+ strb r0, [r4, r2]
+ pop {r3-r7, pc}
+_02081B6C:
+ ldr r1, _02081D2C ; =0x00000584
+ ldrb r0, [r4, r1]
+ cmp r0, #0x0
+ bne _02081B76
+_02081B74:
+ b _02081DBC
+_02081B76:
+ mov r0, #0x0
+ strb r0, [r4, r1]
+ add r1, r2, #0x2
+ ldr r1, [r4, r1]
+ add r3, r1, #0x1
+ add r1, r2, #0x2
+ str r3, [r4, r1]
+ ldr r1, [r4, r1]
+ cmp r1, #0x4
+ bge _02081B94
+ ldrb r0, [r4, r2]
+ add sp, #0x10
+ sub r0, r0, #0x1
+ strb r0, [r4, r2]
+ pop {r3-r7, pc}
+_02081B94:
+ add r1, r2, #0x2
+ str r0, [r4, r1]
+ ldrb r0, [r4, r2]
+ add sp, #0x10
+ add r0, r0, #0x1
+ strb r0, [r4, r2]
+ pop {r3-r7, pc}
+_02081BA2:
+ mov r0, #0xe
+ bl FUN_02031588
+ ldr r0, _02081D2C ; =0x00000584
+ mov r1, #0x0
+ strb r1, [r4, r0]
+ ldr r0, _02081D28 ; =0x00000176
+ add sp, #0x10
+ ldrb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, r0]
+ pop {r3-r7, pc}
+_02081BBA:
+ mov r0, #0xe
+ bl FUN_020315D8
+ cmp r0, #0x1
+ bne _02081C8E
+ ldr r0, _02081D28 ; =0x00000176
+ add sp, #0x10
+ ldrb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, r0]
+ pop {r3-r7, pc}
+_02081BD0:
+ add r2, sp, #0x8
+ add r0, r4, #0x0
+ mov r1, #0x0
+ add r2, #0x2
+ bl FUN_02082894
+ ldr r1, _02081D34 ; =0x00000123
+ add r2, sp, #0x8
+ ldrb r1, [r4, r1]
+ add r0, r4, #0x0
+ add r2, #0x2
+ bl FUN_02083B48
+ cmp r0, #0x1
+ bne _02081C8E
+ ldr r0, _02081D28 ; =0x00000176
+ add sp, #0x10
+ ldrb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, r0]
+ pop {r3-r7, pc}
+_02081BFA:
+ ldr r0, _02081D2C ; =0x00000584
+ add r1, r2, #0x0
+ sub r1, #0x4f
+ ldrb r3, [r4, r0]
+ ldrb r1, [r4, r1]
+ cmp r3, r1
+ blo _02081C8E
+ mov r1, #0x0
+ strb r1, [r4, r0]
+ ldrb r0, [r4, r2]
+ add sp, #0x10
+ add r0, r0, #0x1
+ strb r0, [r4, r2]
+ pop {r3-r7, pc}
+_02081C16:
+ mov r0, #0xf
+ bl FUN_02031588
+ ldr r0, _02081D2C ; =0x00000584
+ mov r1, #0x0
+ strb r1, [r4, r0]
+ ldr r0, _02081D28 ; =0x00000176
+ add sp, #0x10
+ ldrb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, r0]
+ pop {r3-r7, pc}
+_02081C2E:
+ mov r0, #0xf
+ bl FUN_020315D8
+ cmp r0, #0x1
+ bne _02081C8E
+ ldr r0, _02081D28 ; =0x00000176
+ add sp, #0x10
+ ldrb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, r0]
+ pop {r3-r7, pc}
+_02081C44:
+ add r1, r2, #0x0
+ sub r1, #0x53
+ ldrb r3, [r4, r1]
+ add r1, r2, #0x0
+ sub r1, #0x5a
+ ldrb r1, [r4, r1]
+ cmp r3, r1
+ bne _02081C7E
+ add r1, r2, #0x2
+ ldr r1, [r4, r1]
+ add r0, r4, #0x0
+ add r2, sp, #0x4
+ bl FUN_02082894
+ mov r1, #0x5e
+ lsl r1, r1, #0x2
+ ldr r1, [r4, r1]
+ add r0, r4, #0x0
+ add r2, sp, #0x4
+ bl FUN_02083B48
+ cmp r0, #0x1
+ bne _02081C8E
+ ldr r0, _02081D28 ; =0x00000176
+ add sp, #0x10
+ ldrb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, r0]
+ pop {r3-r7, pc}
+_02081C7E:
+ add r0, r0, #0x1
+ add sp, #0x10
+ strb r0, [r4, r2]
+ pop {r3-r7, pc}
+_02081C86:
+ ldr r1, _02081D2C ; =0x00000584
+ ldrb r0, [r4, r1]
+ cmp r0, #0x0
+ bne _02081C90
+_02081C8E:
+ b _02081DBC
+_02081C90:
+ mov r0, #0x0
+ strb r0, [r4, r1]
+ add r1, r2, #0x2
+ ldr r1, [r4, r1]
+ add r3, r1, #0x1
+ add r1, r2, #0x2
+ str r3, [r4, r1]
+ ldr r1, [r4, r1]
+ cmp r1, #0x4
+ bge _02081CAE
+ ldrb r0, [r4, r2]
+ add sp, #0x10
+ sub r0, r0, #0x1
+ strb r0, [r4, r2]
+ pop {r3-r7, pc}
+_02081CAE:
+ add r1, r2, #0x2
+ str r0, [r4, r1]
+ ldrb r0, [r4, r2]
+ add sp, #0x10
+ add r0, r0, #0x1
+ strb r0, [r4, r2]
+ pop {r3-r7, pc}
+_02081CBC:
+ mov r0, #0x10
+ bl FUN_02031588
+ ldr r0, _02081D2C ; =0x00000584
+ mov r1, #0x0
+ strb r1, [r4, r0]
+ ldr r0, _02081D28 ; =0x00000176
+ add sp, #0x10
+ ldrb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, r0]
+ pop {r3-r7, pc}
+_02081CD4:
+ mov r0, #0x10
+ bl FUN_020315D8
+ cmp r0, #0x1
+ bne _02081DBC
+ ldr r0, _02081D28 ; =0x00000176
+ add sp, #0x10
+ ldrb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, r0]
+ pop {r3-r7, pc}
+_02081CEA:
+ sub r2, #0x53
+ ldrb r1, [r4, r2]
+ add r2, r4, #0x0
+ add r0, r4, #0x0
+ add r2, #0xd0
+ bl FUN_02083834
+ cmp r0, #0x1
+ bne _02081DBC
+ ldr r0, _02081D28 ; =0x00000176
+ add sp, #0x10
+ ldrb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, r0]
+ pop {r3-r7, pc}
+_02081D08:
+ ldr r0, _02081D2C ; =0x00000584
+ add r1, r2, #0x0
+ sub r1, #0x4f
+ ldrb r3, [r4, r0]
+ ldrb r1, [r4, r1]
+ cmp r3, r1
+ blo _02081DBC
+ mov r1, #0x0
+ strb r1, [r4, r0]
+ ldrb r0, [r4, r2]
+ add sp, #0x10
+ add r0, r0, #0x1
+ strb r0, [r4, r2]
+ pop {r3-r7, pc}
+_02081D24:
+ ldr r0, _02081D38 ; =0x00000127
+ b _02081D3C
+ .balign 4
+_02081D28: .word 0x00000176
+_02081D2C: .word 0x00000584
+_02081D30: .word 0x00000585
+_02081D34: .word 0x00000123
+_02081D38: .word 0x00000127
+_02081D3C:
+ mov r5, #0x0
+ ldrb r0, [r4, r0]
+ cmp r0, #0x0
+ ble _02081D62
+ mov r7, #0x42
+ lsl r7, r7, #0x2
+ add r6, r7, #0x0
+ add r6, #0x1f
+_02081D4C:
+ add r0, r5, #0x0
+ bl FUN_0202DFA4
+ bl FUN_020239CC
+ add r1, r4, r5
+ strb r0, [r1, r7]
+ ldrb r0, [r4, r6]
+ add r5, r5, #0x1
+ cmp r5, r0
+ blt _02081D4C
+_02081D62:
+ cmp r5, #0x4
+ bge _02081D86
+ add r1, r4, #0x0
+ mov r0, #0x30
+ add r1, #0x30
+ mul r0, r5
+ add r0, r1, r0
+ mov r1, #0x42
+ lsl r1, r1, #0x2
+_02081D74:
+ ldrh r2, [r0, #0x0]
+ add r0, #0x30
+ lsl r2, r2, #0x12
+ lsr r3, r2, #0x1e
+ add r2, r4, r5
+ add r5, r5, #0x1
+ strb r3, [r2, r1]
+ cmp r5, #0x4
+ blt _02081D74
+_02081D86:
+ mov r0, #0x47
+ lsl r0, r0, #0x2
+ ldrb r2, [r4, r0]
+ ldr r1, _02081DC0 ; =0x000019B4
+ strb r2, [r4, r1]
+ add r2, r0, #0x0
+ add r2, #0x8
+ ldrb r3, [r4, r2]
+ add r2, r1, #0x1
+ strb r3, [r4, r2]
+ add r2, r1, #0x2
+ mov r3, #0x1
+ strb r3, [r4, r2]
+ add r2, r0, #0x0
+ add r2, #0xb
+ ldrb r2, [r4, r2]
+ add r1, r1, #0x3
+ strb r2, [r4, r1]
+ add r1, r0, #0x0
+ mov r2, #0x0
+ add r1, #0x64
+ str r2, [r4, r1]
+ add r0, #0x5a
+ strb r2, [r4, r0]
+ ldr r0, [sp, #0x0]
+ bl FUN_0200CAB4
+_02081DBC:
+ add sp, #0x10
+ pop {r3-r7, pc}
+ .balign 4
+_02081DC0: .word 0x000019B4
+
+ thumb_func_start FUN_02081DC4
+FUN_02081DC4: ; 0x02081DC4
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ bl FUN_02030F40
+ cmp r0, #0x0
+ bne _02081DD4
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_02081DD4:
+ ldr r0, _02081EA4 ; =0x00000171
+ mov r1, #0x1
+ strb r1, [r6, r0]
+ bl FUN_02030F20
+ add r4, r0, #0x0
+ bl FUN_02031190
+ mov r5, #0x0
+ str r0, [sp, #0x0]
+ cmp r4, #0x0
+ ble _02081E0A
+_02081DEC:
+ add r0, r5, #0x0
+ bl FUN_0202DFA4
+ add r7, r0, #0x0
+ bne _02081DFA
+ bl ErrorHandling
+_02081DFA:
+ add r0, r7, #0x0
+ bl FUN_02023A88
+ cmp r0, #0x0
+ beq _02081E0A
+ add r5, r5, #0x1
+ cmp r5, r4
+ blt _02081DEC
+_02081E0A:
+ cmp r5, r4
+ beq _02081E12
+ mov r1, #0x0
+ b _02081E14
+_02081E12:
+ mov r1, #0x1
+_02081E14:
+ ldr r0, _02081EA8 ; =0x00001999
+ mov r5, #0x0
+ strb r1, [r6, r0]
+ cmp r4, #0x0
+ ble _02081E3C
+_02081E1E:
+ add r0, r5, #0x0
+ bl FUN_0202DFA4
+ add r7, r0, #0x0
+ bne _02081E2C
+ bl ErrorHandling
+_02081E2C:
+ add r0, r7, #0x0
+ bl FUN_02023A9C
+ cmp r0, #0x0
+ beq _02081E3C
+ add r5, r5, #0x1
+ cmp r5, r4
+ blt _02081E1E
+_02081E3C:
+ cmp r5, r4
+ beq _02081E44
+ mov r1, #0x0
+ b _02081E46
+_02081E44:
+ mov r1, #0x1
+_02081E46:
+ ldr r0, _02081EAC ; =0x0000199A
+ ldr r2, _02081EA8 ; =0x00001999
+ strb r1, [r6, r0]
+ ldrb r1, [r6, r2]
+ add r2, r2, #0x1
+ ldrb r2, [r6, r2]
+ add r0, r6, #0x0
+ bl FUN_020813F4
+ ldr r0, [sp, #0x0]
+ mov r1, #0x49
+ lsl r0, r0, #0x18
+ mov r2, #0x4
+ lsr r0, r0, #0x18
+ lsl r1, r1, #0x2
+ sub r3, r2, r4
+ strb r0, [r6, r1]
+ add r2, r1, #0x2
+ strb r3, [r6, r2]
+ add r2, r1, #0x3
+ strb r4, [r6, r2]
+ sub r1, r1, #0x1
+ strb r0, [r6, r1]
+ mov r1, #0x64
+ add r0, r1, #0x0
+ add r0, #0xc1
+ strb r1, [r6, r0]
+ add r1, #0xbc
+ ldrb r0, [r6, r1]
+ mov r1, #0x1
+ bl FUN_02083454
+ ldr r1, _02081EB0 ; =0x00000122
+ strb r0, [r6, r1]
+ add r0, r6, #0x0
+ bl FUN_020834D0
+ ldr r0, _02081EB4 ; =FUN_02081680
+ add r1, r6, #0x0
+ mov r2, #0xa
+ bl FUN_0200CA44
+ mov r1, #0x6
+ lsl r1, r1, #0x6
+ str r0, [r6, r1]
+ mov r0, #0x1
+ pop {r3-r7, pc}
+ .balign 4
+_02081EA4: .word 0x00000171
+_02081EA8: .word 0x00001999
+_02081EAC: .word 0x0000199A
+_02081EB0: .word 0x00000122
+_02081EB4: .word FUN_02081680
+
+ thumb_func_start FUN_02081EB8
+FUN_02081EB8: ; 0x02081EB8
+ ldr r3, _02081EBC ; =FUN_02081EC0
+ bx r3
+ .balign 4
+_02081EBC: .word FUN_02081EC0
+
+ thumb_func_start FUN_02081EC0
+FUN_02081EC0: ; 0x02081EC0
+ mov r1, #0x6
+ lsl r1, r1, #0x6
+ ldr r0, [r0, r1]
+ cmp r0, #0x0
+ bne _02081ECE
+ mov r0, #0x1
+ bx lr
+_02081ECE:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02081ED4
+FUN_02081ED4: ; 0x02081ED4
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x6
+ lsl r0, r0, #0x6
+ ldr r0, [r4, r0]
+ cmp r0, #0x0
+ beq _02081EE6
+ bl ErrorHandling
+_02081EE6:
+ ldr r0, _02081F00 ; =0x00000176
+ mov r1, #0x0
+ strb r1, [r4, r0]
+ ldr r0, _02081F04 ; =FUN_02081F08
+ add r1, r4, #0x0
+ mov r2, #0xa
+ bl FUN_0200CA44
+ mov r1, #0x6
+ lsl r1, r1, #0x6
+ str r0, [r4, r1]
+ pop {r4, pc}
+ nop
+_02081F00: .word 0x00000176
+_02081F04: .word FUN_02081F08
+
+ thumb_func_start FUN_02081F08
+FUN_02081F08: ; 0x02081F08
+ push {r4, lr}
+ add r4, r1, #0x0
+ ldr r1, _02082014 ; =0x00000176
+ ldrb r2, [r4, r1]
+ cmp r2, #0x7
+ bhi _02082000
+ add r3, r2, r2
+ add r3, pc
+ ldrh r3, [r3, #0x6]
+ lsl r3, r3, #0x10
+ asr r3, r3, #0x10
+ add pc, r3
+_02081F20: ; jump table (using 16-bit offset)
+ .short _02081F30 - _02081F20 - 2; case 0
+ .short _02081F46 - _02081F20 - 2; case 1
+ .short _02081F5A - _02081F20 - 2; case 2
+ .short _02081F7A - _02081F20 - 2; case 3
+ .short _02081F94 - _02081F20 - 2; case 4
+ .short _02081FAA - _02081F20 - 2; case 5
+ .short _02081FBE - _02081F20 - 2; case 6
+ .short _02081FEC - _02081F20 - 2; case 7
+_02081F30:
+ mov r0, #0x11
+ bl FUN_02031588
+ ldr r0, _02082018 ; =0x00000584
+ mov r1, #0x0
+ strb r1, [r4, r0]
+ ldr r0, _02082014 ; =0x00000176
+ ldrb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, r0]
+ pop {r4, pc}
+_02081F46:
+ mov r0, #0x11
+ bl FUN_020315D8
+ cmp r0, #0x1
+ bne _02082010
+ ldr r0, _02082014 ; =0x00000176
+ ldrb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, r0]
+ pop {r4, pc}
+_02081F5A:
+ sub r1, #0x53
+ ldrb r1, [r4, r1]
+ add r0, r4, #0x0
+ lsl r2, r1, #0x2
+ add r2, r4, r2
+ add r2, #0xf8
+ ldr r2, [r2, #0x0]
+ bl FUN_02083930
+ cmp r0, #0x1
+ bne _02082010
+ ldr r0, _02082014 ; =0x00000176
+ ldrb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, r0]
+ pop {r4, pc}
+_02081F7A:
+ ldr r0, _02082018 ; =0x00000584
+ add r2, r1, #0x0
+ sub r2, #0x4f
+ ldrb r3, [r4, r0]
+ ldrb r2, [r4, r2]
+ cmp r3, r2
+ blo _02082010
+ mov r2, #0x0
+ strb r2, [r4, r0]
+ ldrb r0, [r4, r1]
+ add r0, r0, #0x1
+ strb r0, [r4, r1]
+ pop {r4, pc}
+_02081F94:
+ mov r0, #0x12
+ bl FUN_02031588
+ ldr r0, _02082018 ; =0x00000584
+ mov r1, #0x0
+ strb r1, [r4, r0]
+ ldr r0, _02082014 ; =0x00000176
+ ldrb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, r0]
+ pop {r4, pc}
+_02081FAA:
+ mov r0, #0x12
+ bl FUN_020315D8
+ cmp r0, #0x1
+ bne _02082010
+ ldr r0, _02082014 ; =0x00000176
+ ldrb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, r0]
+ pop {r4, pc}
+_02081FBE:
+ add r0, r1, #0x0
+ sub r0, #0x53
+ ldrb r3, [r4, r0]
+ add r0, r1, #0x0
+ sub r0, #0x5a
+ ldrb r0, [r4, r0]
+ cmp r3, r0
+ bne _02081FE6
+ add r1, r4, #0x0
+ add r0, r4, #0x0
+ add r1, #0xf8
+ bl FUN_020839C0
+ cmp r0, #0x1
+ bne _02082010
+ ldr r0, _02082014 ; =0x00000176
+ ldrb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, r0]
+ pop {r4, pc}
+_02081FE6:
+ add r0, r2, #0x1
+ strb r0, [r4, r1]
+ pop {r4, pc}
+_02081FEC:
+ ldr r0, _02082018 ; =0x00000584
+ ldrb r2, [r4, r0]
+ cmp r2, #0x0
+ beq _02082010
+ mov r2, #0x0
+ strb r2, [r4, r0]
+ ldrb r0, [r4, r1]
+ add r0, r0, #0x1
+ strb r0, [r4, r1]
+ pop {r4, pc}
+_02082000:
+ mov r1, #0x6
+ mov r2, #0x0
+ lsl r1, r1, #0x6
+ str r2, [r4, r1]
+ sub r1, #0xa
+ strb r2, [r4, r1]
+ bl FUN_0200CAB4
+_02082010:
+ pop {r4, pc}
+ nop
+_02082014: .word 0x00000176
+_02082018: .word 0x00000584
+
+ thumb_func_start FUN_0208201C
+FUN_0208201C: ; 0x0208201C
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r0, r2, #0x0
+ lsl r2, r4, #0x3
+ add r2, r5, r2
+ add r2, #0xd0
+ ldrh r2, [r2, #0x0]
+ add r1, r3, #0x0
+ bl FUN_0200B244
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02082034
+FUN_02082034: ; 0x02082034
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ add r0, r1, #0x0
+ add r4, r2, #0x0
+ add r6, r3, #0x0
+ bl FUN_020832E4
+ add r3, r0, #0x0
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ mov r0, #0x2
+ str r0, [sp, #0x4]
+ add r0, r4, #0x0
+ lsl r2, r3, #0x2
+ add r4, r5, r3
+ mov r3, #0x42
+ add r2, r5, r2
+ lsl r3, r3, #0x2
+ add r2, #0xe8
+ ldrb r3, [r4, r3]
+ ldr r2, [r2, #0x0]
+ add r1, r6, #0x0
+ bl FUN_0200ABB4
+ add sp, #0x8
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0208206C
+FUN_0208206C: ; 0x0208206C
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r0, r1, #0x0
+ add r4, r2, #0x0
+ add r6, r3, #0x0
+ bl FUN_020832E4
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ bl FUN_020690E4
+ add r2, r0, #0x0
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ bl FUN_0200ACF8
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02082090
+FUN_02082090: ; 0x02082090
+ push {r3-r5, lr}
+ add r4, r2, #0x0
+ mov r2, #0x12
+ add r3, r0, #0x0
+ lsl r2, r2, #0x4
+ add r5, r1, #0x0
+ add r1, r2, #0x1
+ ldrb r0, [r3, r2]
+ add r2, #0x51
+ ldrb r1, [r3, r1]
+ ldrb r2, [r3, r2]
+ bl FUN_02083228
+ add r2, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0200B278
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020820B8
+FUN_020820B8: ; 0x020820B8
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ ldr r1, _020820D8 ; =0x0000011F
+ add r3, r0, #0x0
+ ldrb r0, [r3, r1]
+ add r1, r1, #0x2
+ ldrb r1, [r3, r1]
+ add r4, r2, #0x0
+ bl FUN_020832A4
+ add r2, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0200B2AC
+ pop {r3-r5, pc}
+ .balign 4
+_020820D8: .word 0x0000011F
+
+ thumb_func_start FUN_020820DC
+FUN_020820DC: ; 0x020820DC
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ mov r1, #0x13
+ add r6, r2, #0x0
+ mov r0, #0x0
+ add r3, r5, #0x0
+ lsl r1, r1, #0x4
+_020820EC:
+ ldrb r2, [r3, r1]
+ cmp r2, #0x0
+ beq _020820FA
+ add r0, r0, #0x1
+ add r3, #0xc
+ cmp r0, #0x4
+ blt _020820EC
+_020820FA:
+ bl FUN_020832DC
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r2, r4, #0x0
+ add r3, r6, #0x0
+ bl FUN_02082034
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0208210C
+FUN_0208210C: ; 0x0208210C
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ mov r1, #0x13
+ add r6, r2, #0x0
+ mov r0, #0x0
+ add r3, r5, #0x0
+ lsl r1, r1, #0x4
+_0208211C:
+ ldrb r2, [r3, r1]
+ cmp r2, #0x0
+ beq _0208212A
+ add r0, r0, #0x1
+ add r3, #0xc
+ cmp r0, #0x4
+ blt _0208211C
+_0208212A:
+ bl FUN_020832DC
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ add r2, r4, #0x0
+ add r3, r6, #0x0
+ bl FUN_0208206C
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0208213C
+FUN_0208213C: ; 0x0208213C
+ mov r0, #0x1
+ bx lr
+
+ thumb_func_start FUN_02082140
+FUN_02082140: ; 0x02082140
+ push {r3, lr}
+ ldr r2, _02082154 ; =0x00000171
+ ldrb r0, [r0, r2]
+ cmp r0, #0x0
+ beq _02082150
+ add r0, r1, #0x0
+ bl FUN_02031588
+_02082150:
+ pop {r3, pc}
+ nop
+_02082154: .word 0x00000171
+
+ thumb_func_start FUN_02082158
+FUN_02082158: ; 0x02082158
+ push {r3, lr}
+ ldr r2, _02082178 ; =0x00000171
+ ldrb r0, [r0, r2]
+ cmp r0, #0x0
+ bne _02082166
+ mov r0, #0x1
+ pop {r3, pc}
+_02082166:
+ add r0, r1, #0x0
+ bl FUN_020315D8
+ cmp r0, #0x1
+ bne _02082174
+ mov r0, #0x1
+ pop {r3, pc}
+_02082174:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+_02082178: .word 0x00000171
+
+ thumb_func_start FUN_0208217C
+FUN_0208217C: ; 0x0208217C
+ ldr r2, _0208218C ; =0x00000123
+ mov r1, #0xc
+ ldrb r3, [r0, r2]
+ add r2, #0xd
+ mul r1, r3
+ add r0, r0, r1
+ ldrb r0, [r0, r2]
+ bx lr
+ .balign 4
+_0208218C: .word 0x00000123
+
+ thumb_func_start FUN_02082190
+FUN_02082190: ; 0x02082190
+ push {r3, lr}
+ mov r1, #0x13
+ mov r3, #0x0
+ lsl r1, r1, #0x4
+_02082198:
+ ldrb r2, [r0, r1]
+ cmp r2, #0x0
+ bne _020821A6
+ add r0, r3, #0x0
+ bl FUN_020832DC
+ pop {r3, pc}
+_020821A6:
+ add r3, r3, #0x1
+ add r0, #0xc
+ cmp r3, #0x4
+ blt _02082198
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_020821B4
+FUN_020821B4: ; 0x020821B4
+ ldr r1, _020821BC ; =0x00000123
+ ldr r3, _020821C0 ; =FUN_020832DC
+ ldrb r0, [r0, r1]
+ bx r3
+ .balign 4
+_020821BC: .word 0x00000123
+_020821C0: .word FUN_020832DC
+
+ thumb_func_start FUN_020821C4
+FUN_020821C4: ; 0x020821C4
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, r1, #0x0
+ bl FUN_020832E4
+ lsl r0, r0, #0x1
+ add r1, r4, r0
+ mov r0, #0x45
+ lsl r0, r0, #0x2
+ ldrh r0, [r1, r0]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020821DC
+FUN_020821DC: ; 0x020821DC
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, r1, #0x0
+ bl FUN_020832E4
+ add r1, r4, r0
+ mov r0, #0x11
+ lsl r0, r0, #0x4
+ ldrb r0, [r1, r0]
+ pop {r4, pc}
+
+ thumb_func_start FUN_020821F0
+FUN_020821F0: ; 0x020821F0
+ push {r3, lr}
+ ldr r1, _02082210 ; =0x00000171
+ ldrb r1, [r0, r1]
+ cmp r1, #0x1
+ bne _020821FE
+ mov r0, #0x1
+ pop {r3, pc}
+_020821FE:
+ bl FUN_020832EC
+ cmp r0, #0x1
+ bne _0208220A
+ mov r0, #0x2
+ pop {r3, pc}
+_0208220A:
+ mov r0, #0x0
+ pop {r3, pc}
+ nop
+_02082210: .word 0x00000171
+
+ thumb_func_start FUN_02082214
+FUN_02082214: ; 0x02082214
+ push {r4-r5}
+ mov r4, #0x12
+ lsl r4, r4, #0x4
+ ldrb r5, [r0, r4]
+ strh r5, [r1, #0x0]
+ sub r1, r4, #0x1
+ ldrb r1, [r0, r1]
+ strh r1, [r2, #0x0]
+ add r1, r4, #0x1
+ ldrb r1, [r0, r1]
+ strh r1, [r3, #0x0]
+ ldr r1, _02082238 ; =0x00001998
+ ldrb r1, [r0, r1]
+ ldr r0, [sp, #0x8]
+ strh r1, [r0, #0x0]
+ pop {r4-r5}
+ bx lr
+ nop
+_02082238: .word 0x00001998
+
+ thumb_func_start FUN_0208223C
+FUN_0208223C: ; 0x0208223C
+ ldr r1, _02082244 ; =0x00000171
+ ldr r3, _02082248 ; =FUN_020833D4
+ ldrb r0, [r0, r1]
+ bx r3
+ .balign 4
+_02082244: .word 0x00000171
+_02082248: .word FUN_020833D4
+
+ thumb_func_start FUN_0208224C
+FUN_0208224C: ; 0x0208224C
+ ldr r3, _02082250 ; =FUN_02083404
+ bx r3
+ .balign 4
+_02082250: .word FUN_02083404
+
+ thumb_func_start FUN_02082254
+FUN_02082254: ; 0x02082254
+ push {r4, lr}
+ mov r1, #0x12
+ add r4, r0, #0x0
+ lsl r1, r1, #0x4
+ ldrb r0, [r4, r1]
+ sub r1, r1, #0x1
+ ldrb r1, [r4, r1]
+ bl FUN_0208341C
+ add r1, r0, #0x0
+ ldr r0, _02082280 ; =0x00001990
+ mov r2, #0x0
+ ldr r0, [r4, r0]
+ bl FUN_020671BC
+ cmp r0, #0x0
+ beq _0208227A
+ mov r0, #0x1
+ pop {r4, pc}
+_0208227A:
+ mov r0, #0x0
+ pop {r4, pc}
+ nop
+_02082280: .word 0x00001990
+
+ thumb_func_start FUN_02082284
+FUN_02082284: ; 0x02082284
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ ldr r1, _020822EC ; =0x0000011F
+ add r5, r2, #0x0
+ ldrb r2, [r0, r1]
+ cmp r2, #0x4
+ bhi _020822D0
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_0208229E: ; jump table (using 16-bit offset)
+ .short _020822A8 - _0208229E - 2; case 0
+ .short _020822B0 - _0208229E - 2; case 1
+ .short _020822B8 - _0208229E - 2; case 2
+ .short _020822C0 - _0208229E - 2; case 3
+ .short _020822C8 - _0208229E - 2; case 4
+_020822A8:
+ add r1, r1, #0x1
+ ldrb r0, [r0, r1]
+ add r0, #0x21
+ b _020822D6
+_020822B0:
+ add r1, r1, #0x1
+ ldrb r0, [r0, r1]
+ add r0, #0x25
+ b _020822D6
+_020822B8:
+ add r1, r1, #0x1
+ ldrb r0, [r0, r1]
+ add r0, #0x29
+ b _020822D6
+_020822C0:
+ add r1, r1, #0x1
+ ldrb r0, [r0, r1]
+ add r0, #0x2d
+ b _020822D6
+_020822C8:
+ add r1, r1, #0x1
+ ldrb r0, [r0, r1]
+ add r0, #0x31
+ b _020822D6
+_020822D0:
+ bl ErrorHandling
+ pop {r3-r5, pc}
+_020822D6:
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r1, #0x3
+ bl FUN_0207FC5C
+ add r2, r0, #0x0
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ bl FUN_0200AD94
+ pop {r3-r5, pc}
+ .balign 4
+_020822EC: .word 0x0000011F
+
+ thumb_func_start FUN_020822F0
+FUN_020822F0: ; 0x020822F0
+ push {r3-r5, lr}
+ mov r4, #0x64
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0xbf
+ ldrb r1, [r5, r0]
+ mov r0, #0xc
+ mul r0, r1
+ add r1, r5, r0
+ add r0, r4, #0x0
+ add r0, #0xcc
+ ldrb r0, [r1, r0]
+ cmp r0, #0x0
+ beq _02082310
+ ldr r0, _0208243C ; =0x0000FFFF
+ pop {r3-r5, pc}
+_02082310:
+ add r0, r4, #0x0
+ add r0, #0xbb
+ ldrb r0, [r5, r0]
+ cmp r0, #0x4
+ bhi _02082414
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02082326: ; jump table (using 16-bit offset)
+ .short _02082330 - _02082326 - 2; case 0
+ .short _0208235E - _02082326 - 2; case 1
+ .short _0208238C - _02082326 - 2; case 2
+ .short _020823BA - _02082326 - 2; case 3
+ .short _020823E8 - _02082326 - 2; case 4
+_02082330:
+ add r0, r4, #0x0
+ add r0, #0xbc
+ ldrb r0, [r5, r0]
+ cmp r0, #0x3
+ bhi _02082414
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02082346: ; jump table (using 16-bit offset)
+ .short _0208234E - _02082346 - 2; case 0
+ .short _02082352 - _02082346 - 2; case 1
+ .short _02082356 - _02082346 - 2; case 2
+ .short _0208235A - _02082346 - 2; case 3
+_0208234E:
+ mov r4, #0x49
+ b _02082414
+_02082352:
+ mov r4, #0x4e
+ b _02082414
+_02082356:
+ mov r4, #0x53
+ b _02082414
+_0208235A:
+ mov r4, #0x58
+ b _02082414
+_0208235E:
+ add r0, r4, #0x0
+ add r0, #0xbc
+ ldrb r0, [r5, r0]
+ cmp r0, #0x3
+ bhi _02082414
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02082374: ; jump table (using 16-bit offset)
+ .short _0208237C - _02082374 - 2; case 0
+ .short _02082380 - _02082374 - 2; case 1
+ .short _02082384 - _02082374 - 2; case 2
+ .short _02082388 - _02082374 - 2; case 3
+_0208237C:
+ mov r4, #0x4a
+ b _02082414
+_02082380:
+ mov r4, #0x4f
+ b _02082414
+_02082384:
+ mov r4, #0x54
+ b _02082414
+_02082388:
+ mov r4, #0x59
+ b _02082414
+_0208238C:
+ add r0, r4, #0x0
+ add r0, #0xbc
+ ldrb r0, [r5, r0]
+ cmp r0, #0x3
+ bhi _02082414
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_020823A2: ; jump table (using 16-bit offset)
+ .short _020823AA - _020823A2 - 2; case 0
+ .short _020823AE - _020823A2 - 2; case 1
+ .short _020823B2 - _020823A2 - 2; case 2
+ .short _020823B6 - _020823A2 - 2; case 3
+_020823AA:
+ mov r4, #0x48
+ b _02082414
+_020823AE:
+ mov r4, #0x4d
+ b _02082414
+_020823B2:
+ mov r4, #0x52
+ b _02082414
+_020823B6:
+ mov r4, #0x57
+ b _02082414
+_020823BA:
+ add r0, r4, #0x0
+ add r0, #0xbc
+ ldrb r0, [r5, r0]
+ cmp r0, #0x3
+ bhi _02082414
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_020823D0: ; jump table (using 16-bit offset)
+ .short _020823D8 - _020823D0 - 2; case 0
+ .short _020823DC - _020823D0 - 2; case 1
+ .short _020823E0 - _020823D0 - 2; case 2
+ .short _020823E4 - _020823D0 - 2; case 3
+_020823D8:
+ mov r4, #0x4c
+ b _02082414
+_020823DC:
+ mov r4, #0x51
+ b _02082414
+_020823E0:
+ mov r4, #0x56
+ b _02082414
+_020823E4:
+ mov r4, #0x5b
+ b _02082414
+_020823E8:
+ add r0, r4, #0x0
+ add r0, #0xbc
+ ldrb r0, [r5, r0]
+ cmp r0, #0x3
+ bhi _02082414
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_020823FE: ; jump table (using 16-bit offset)
+ .short _02082406 - _020823FE - 2; case 0
+ .short _0208240A - _020823FE - 2; case 1
+ .short _0208240E - _020823FE - 2; case 2
+ .short _02082412 - _020823FE - 2; case 3
+_02082406:
+ mov r4, #0x4b
+ b _02082414
+_0208240A:
+ mov r4, #0x50
+ b _02082414
+_0208240E:
+ mov r4, #0x55
+ b _02082414
+_02082412:
+ mov r4, #0x5a
+_02082414:
+ cmp r4, #0x64
+ bne _0208241C
+ bl ErrorHandling
+_0208241C:
+ ldr r0, _02082440 ; =0x0000198C
+ ldr r0, [r5, r0]
+ bl FUN_02027E24
+ bl FUN_0202708C
+ add r1, r4, #0x0
+ mov r2, #0x1
+ bl FUN_020270D8
+ cmp r0, #0x0
+ bne _02082438
+ ldr r0, _0208243C ; =0x0000FFFF
+ pop {r3-r5, pc}
+_02082438:
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+_0208243C: .word 0x0000FFFF
+_02082440: .word 0x0000198C
+
+ thumb_func_start FUN_02082444
+FUN_02082444: ; 0x02082444
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, _020824F0 ; =0x000019BC
+ add r6, r1, #0x0
+ ldr r0, [r5, r0]
+ cmp r0, #0x0
+ beq _02082456
+ bl ErrorHandling
+_02082456:
+ mov r0, #0x4
+ mov r1, #0x10
+ bl FUN_020169D8
+ mov r1, #0x0
+ mov r2, #0x10
+ add r4, r0, #0x0
+ blx MI_CpuFill8
+ add r0, r6, #0x0
+ bl FUN_020832E4
+ strb r0, [r4, #0xc]
+ ldrb r0, [r4, #0xc]
+ mov r1, #0x43
+ lsl r1, r1, #0x2
+ add r0, r5, r0
+ ldrb r2, [r0, r1]
+ mov r0, #0x1
+ and r0, r2
+ add r2, r1, #0x0
+ add r2, #0x65
+ ldrb r2, [r5, r2]
+ cmp r2, #0x1
+ bne _02082494
+ mov r1, #0x6
+ ldr r2, _020824F4 ; =0x020FBBAC
+ mul r1, r0
+ add r0, r2, r1
+ str r0, [r4, #0x4]
+ b _020824DC
+_02082494:
+ add r1, #0x14
+ ldrb r1, [r5, r1]
+ cmp r1, #0x3
+ bhi _020824D2
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_020824A8: ; jump table (using 16-bit offset)
+ .short _020824B0 - _020824A8 - 2; case 0
+ .short _020824BC - _020824A8 - 2; case 1
+ .short _020824C6 - _020824A8 - 2; case 2
+ .short _020824D2 - _020824A8 - 2; case 3
+_020824B0:
+ lsl r1, r0, #0x1
+ ldr r2, _020824F8 ; =0x020FBB90
+ add r0, r0, r1
+ add r0, r2, r0
+ str r0, [r4, #0x4]
+ b _020824DC
+_020824BC:
+ ldr r1, _020824FC ; =0x020FBB98
+ lsl r0, r0, #0x2
+ add r0, r1, r0
+ str r0, [r4, #0x4]
+ b _020824DC
+_020824C6:
+ lsl r1, r0, #0x2
+ ldr r2, _02082500 ; =0x020FBBA0
+ add r0, r0, r1
+ add r0, r2, r0
+ str r0, [r4, #0x4]
+ b _020824DC
+_020824D2:
+ mov r1, #0x6
+ ldr r2, _020824F4 ; =0x020FBBAC
+ mul r1, r0
+ add r0, r2, r1
+ str r0, [r4, #0x4]
+_020824DC:
+ ldr r0, _02082504 ; =FUN_0208251C
+ add r1, r5, #0x0
+ mov r2, #0x64
+ bl FUN_0200CA44
+ str r0, [r4, #0x0]
+ ldr r0, _020824F0 ; =0x000019BC
+ str r4, [r5, r0]
+ pop {r4-r6, pc}
+ nop
+_020824F0: .word 0x000019BC
+_020824F4: .word 0x020FBBAC
+_020824F8: .word 0x020FBB90
+_020824FC: .word 0x020FBB98
+_02082500: .word 0x020FBBA0
+_02082504: .word FUN_0208251C
+
+ thumb_func_start FUN_02082508
+FUN_02082508: ; 0x02082508
+ ldr r1, _02082518 ; =0x000019BC
+ ldr r0, [r0, r1]
+ cmp r0, #0x0
+ bne _02082514
+ mov r0, #0x1
+ bx lr
+_02082514:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+_02082518: .word 0x000019BC
+
+ thumb_func_start FUN_0208251C
+FUN_0208251C: ; 0x0208251C
+ push {r3-r6, lr}
+ sub sp, #0x4
+ add r6, r0, #0x0
+ ldr r0, _02082598 ; =0x000019BC
+ add r5, r1, #0x0
+ ldr r4, [r5, r0]
+ mov r0, #0x1
+ bl FUN_0200A344
+ cmp r0, #0x0
+ beq _02082594
+ ldrb r0, [r4, #0xb]
+ cmp r0, #0x0
+ bne _02082580
+ mov r0, #0x8
+ ldrsh r1, [r4, r0]
+ add r1, r1, #0x1
+ strh r1, [r4, #0x8]
+ ldrsh r2, [r4, r0]
+ ldrb r0, [r4, #0xa]
+ ldr r1, [r4, #0x4]
+ ldrb r0, [r1, r0]
+ cmp r2, r0
+ ble _02082594
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ mov r0, #0x6
+ mov r1, #0x0
+ mov r2, #0x4
+ mov r3, #0x3f
+ bl FUN_0200A208
+ ldr r0, _0208259C ; =0x000005F8
+ bl FUN_020054C8
+ ldrb r0, [r4, #0xa]
+ add r0, r0, #0x1
+ strb r0, [r4, #0xa]
+ mov r0, #0x0
+ strh r0, [r4, #0x8]
+ ldrb r0, [r4, #0xa]
+ ldr r1, [r4, #0x4]
+ ldrb r0, [r1, r0]
+ cmp r0, #0xff
+ bne _02082594
+ ldrb r0, [r4, #0xb]
+ add sp, #0x4
+ add r0, r0, #0x1
+ strb r0, [r4, #0xb]
+ pop {r3-r6, pc}
+_02082580:
+ ldr r0, _02082598 ; =0x000019BC
+ ldr r0, [r5, r0]
+ bl FUN_02016A18
+ ldr r0, _02082598 ; =0x000019BC
+ mov r1, #0x0
+ str r1, [r5, r0]
+ add r0, r6, #0x0
+ bl FUN_0200CAB4
+_02082594:
+ add sp, #0x4
+ pop {r3-r6, pc}
+ .balign 4
+_02082598: .word 0x000019BC
+_0208259C: .word 0x000005F8
+
+ thumb_func_start FUN_020825A0
+FUN_020825A0: ; 0x020825A0
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ mov r0, #0x13
+ str r2, [sp, #0x4]
+ ldr r6, [sp, #0x20]
+ ldr r7, [sp, #0x24]
+ str r1, [sp, #0x0]
+ str r3, [sp, #0x8]
+ mov r4, #0x0
+ add r2, r5, #0x0
+ lsl r0, r0, #0x4
+_020825B8:
+ ldrb r1, [r2, r0]
+ cmp r1, #0x0
+ beq _020825C6
+ add r4, r4, #0x1
+ add r2, #0xc
+ cmp r4, #0x4
+ blt _020825B8
+_020825C6:
+ add r0, r4, #0x0
+ bl FUN_020832DC
+ ldr r1, [sp, #0x0]
+ str r0, [r1, #0x0]
+ ldr r1, _02082628 ; =0x00000171
+ ldr r0, [sp, #0x4]
+ ldrb r2, [r5, r1]
+ sub r1, #0x4a
+ str r2, [r0, #0x0]
+ ldrb r0, [r5, r1]
+ cmp r4, r0
+ blt _020825E6
+ mov r1, #0x1
+ ldr r0, [sp, #0x8]
+ b _020825EA
+_020825E6:
+ ldr r0, [sp, #0x8]
+ mov r1, #0x0
+_020825EA:
+ str r1, [r0, #0x0]
+ mov r0, #0x0
+ str r0, [r6, #0x0]
+ str r0, [r7, #0x0]
+ ldr r0, _0208262C ; =0x00000121
+ ldrb r0, [r5, r0]
+ cmp r0, #0x8
+ bhi _02082624
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02082606: ; jump table (using 16-bit offset)
+ .short _02082624 - _02082606 - 2; case 0
+ .short _02082624 - _02082606 - 2; case 1
+ .short _02082624 - _02082606 - 2; case 2
+ .short _02082618 - _02082606 - 2; case 3
+ .short _02082620 - _02082606 - 2; case 4
+ .short _02082618 - _02082606 - 2; case 5
+ .short _02082620 - _02082606 - 2; case 6
+ .short _02082618 - _02082606 - 2; case 7
+ .short _02082620 - _02082606 - 2; case 8
+_02082618:
+ mov r0, #0x1
+ add sp, #0xc
+ str r0, [r6, #0x0]
+ pop {r4-r7, pc}
+_02082620:
+ mov r0, #0x1
+ str r0, [r7, #0x0]
+_02082624:
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+_02082628: .word 0x00000171
+_0208262C: .word 0x00000121
+
+ thumb_func_start FUN_02082630
+FUN_02082630: ; 0x02082630
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r4, r0, #0x0
+ ldr r0, _02082840 ; =0x00000121
+ str r2, [sp, #0x4]
+ ldrb r0, [r4, r0]
+ add r6, r3, #0x0
+ mov r5, #0x0
+ cmp r0, #0x8
+ bhi _02082666
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02082650: ; jump table (using 16-bit offset)
+ .short _02082666 - _02082650 - 2; case 0
+ .short _02082666 - _02082650 - 2; case 1
+ .short _02082666 - _02082650 - 2; case 2
+ .short _02082662 - _02082650 - 2; case 3
+ .short _02082662 - _02082650 - 2; case 4
+ .short _02082662 - _02082650 - 2; case 5
+ .short _02082662 - _02082650 - 2; case 6
+ .short _02082662 - _02082650 - 2; case 7
+ .short _02082662 - _02082650 - 2; case 8
+_02082662:
+ add sp, #0xc
+ pop {r4-r7, pc}
+_02082666:
+ ldr r2, _02082844 ; =0x00000171
+ ldrb r0, [r4, r2]
+ cmp r0, #0x0
+ ldr r0, _02082848 ; =0x0000198C
+ beq _02082672
+ b _02082774
+_02082672:
+ ldr r0, [r4, r0]
+ bl FUN_020462AC
+ add r6, r0, #0x0
+ ldr r0, _02082840 ; =0x00000121
+ ldrb r1, [r4, r0]
+ cmp r1, #0x2
+ bne _020826AC
+ sub r0, r0, #0x1
+ ldrb r0, [r4, r0]
+ cmp r0, #0x3
+ blo _020826AC
+ add r0, r4, #0x0
+ bl FUN_0208217C
+ cmp r0, #0x0
+ bne _020826AC
+ ldr r1, _0208284C ; =0x0000011F
+ add r0, r6, #0x0
+ ldrb r1, [r4, r1]
+ bl FUN_0205EE60
+ cmp r0, #0x0
+ bne _020826AC
+ ldr r1, _0208284C ; =0x0000011F
+ add r0, r6, #0x0
+ ldrb r1, [r4, r1]
+ bl FUN_0205EE08
+_020826AC:
+ add r0, r4, #0x0
+ bl FUN_0208217C
+ cmp r0, #0x0
+ bne _020826EA
+ mov r1, #0x1
+ add r0, sp, #0x8
+ strb r1, [r0, #0x0]
+ mov r1, #0x12
+ lsl r1, r1, #0x4
+ ldrb r0, [r4, r1]
+ sub r1, r1, #0x1
+ ldrb r1, [r4, r1]
+ bl FUN_0208341C
+ add r6, r0, #0x0
+ ldr r0, _02082850 ; =0x00001990
+ add r1, r6, #0x0
+ ldr r0, [r4, r0]
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ bne _020826DE
+ mov r5, #0x1
+_020826DE:
+ ldr r0, _02082850 ; =0x00001990
+ add r1, r6, #0x0
+ ldr r0, [r4, r0]
+ add r2, sp, #0x8
+ bl FUN_02067830
+_020826EA:
+ ldr r0, _02082848 ; =0x0000198C
+ ldr r0, [r4, r0]
+ bl FUN_02022504
+ ldr r3, _02082854 ; =0x00000123
+ mov r1, #0xc
+ ldrb r2, [r4, r3]
+ mul r1, r2
+ add r2, r4, r1
+ add r1, r3, #0x0
+ add r1, #0xd
+ ldrb r1, [r2, r1]
+ sub r2, r3, #0x4
+ sub r3, r3, #0x3
+ add r1, r1, #0x1
+ str r1, [sp, #0x0]
+ ldr r1, _02082850 ; =0x00001990
+ ldrb r2, [r4, r2]
+ ldrb r3, [r4, r3]
+ ldr r1, [r4, r1]
+ bl FUN_02060F10
+ ldr r0, _02082848 ; =0x0000198C
+ ldr r0, [r4, r0]
+ bl FUN_02029FC8
+ mov r1, #0x3f
+ add r6, r0, #0x0
+ bl FUN_0202A0E8
+ add r0, r4, #0x0
+ bl FUN_0208217C
+ cmp r0, #0x0
+ bne _02082740
+ add r0, r6, #0x0
+ mov r1, #0x41
+ bl FUN_0202A0E8
+ add r0, r6, #0x0
+ mov r1, #0xd
+ bl FUN_0202A170
+_02082740:
+ cmp r5, #0x1
+ bne _0208274C
+ add r0, r6, #0x0
+ mov r1, #0x43
+ bl FUN_0202A0E8
+_0208274C:
+ ldr r0, _02082848 ; =0x0000198C
+ ldr r0, [r4, r0]
+ bl FUN_02024DA0
+ add r7, r0, #0x0
+ ldr r0, _02082858 ; =0x00000127
+ ldrb r6, [r4, r0]
+ cmp r6, #0x4
+ bge _020827E8
+ lsl r0, r6, #0x2
+ add r5, r4, r0
+_02082762:
+ ldr r1, [r5, #0x0]
+ add r0, r7, #0x0
+ bl FUN_0202498C
+ add r6, r6, #0x1
+ add r5, r5, #0x4
+ cmp r6, #0x4
+ blt _02082762
+ b _020827E8
+_02082774:
+ add r3, r2, #0x0
+ sub r3, #0x4e
+ ldrb r5, [r4, r3]
+ add r1, r2, #0x0
+ mov r3, #0xc
+ mul r3, r5
+ sub r1, #0x52
+ add r3, r4, r3
+ sub r2, #0x41
+ ldrb r1, [r4, r1]
+ ldrb r2, [r3, r2]
+ ldr r0, [r4, r0]
+ bl FUN_0202C108
+ ldr r0, _02082848 ; =0x0000198C
+ ldr r0, [r4, r0]
+ bl FUN_02029FC8
+ mov r1, #0x40
+ add r5, r0, #0x0
+ bl FUN_0202A0E8
+ add r0, r4, #0x0
+ bl FUN_0208217C
+ cmp r0, #0x0
+ bne _020827BA
+ add r0, r5, #0x0
+ mov r1, #0x42
+ bl FUN_0202A0E8
+ add r0, r5, #0x0
+ mov r1, #0x13
+ bl FUN_0202A170
+_020827BA:
+ ldr r1, _02082854 ; =0x00000123
+ mov r0, #0xc
+ ldrb r2, [r4, r1]
+ add r1, #0xd
+ mul r0, r2
+ add r0, r4, r0
+ ldrb r0, [r0, r1]
+ mov r1, #0xb
+ add r0, r0, #0x1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_02029500
+ add r5, r0, #0x0
+ ldr r0, _02082848 ; =0x0000198C
+ ldr r0, [r4, r0]
+ bl FUN_020289A4
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ mov r2, #0x4
+ bl FUN_02028AD4
+_020827E8:
+ add r0, r4, #0x0
+ bl FUN_0208217C
+ cmp r0, #0x0
+ bne _02082820
+ ldr r0, _02082848 ; =0x0000198C
+ ldr r0, [r4, r0]
+ bl FUN_02027E24
+ ldr r1, _0208284C ; =0x0000011F
+ ldrb r1, [r4, r1]
+ bl FUN_02027044
+ add r5, r0, #0x0
+ bl FUN_02027740
+ ldr r1, _02082854 ; =0x00000123
+ add r0, r5, #0x0
+ ldrb r1, [r4, r1]
+ lsl r1, r1, #0x2
+ add r1, r4, r1
+ add r1, #0xf8
+ ldr r1, [r1, #0x0]
+ bl FUN_020278DC
+ add r0, r5, #0x0
+ bl FUN_02027710
+_02082820:
+ add r0, r4, #0x0
+ bl FUN_0208217C
+ cmp r0, #0x0
+ bne _0208283A
+ ldr r0, _02082850 ; =0x00001990
+ ldr r2, [sp, #0x4]
+ ldr r0, [r4, r0]
+ lsl r2, r2, #0x10
+ mov r1, #0x9
+ lsr r2, r2, #0x10
+ bl FUN_020688E8
+_0208283A:
+ add sp, #0xc
+ pop {r4-r7, pc}
+ nop
+_02082840: .word 0x00000121
+_02082844: .word 0x00000171
+_02082848: .word 0x0000198C
+_0208284C: .word 0x0000011F
+_02082850: .word 0x00001990
+_02082854: .word 0x00000123
+_02082858: .word 0x00000127
+
+ thumb_func_start FUN_0208285C
+FUN_0208285C: ; 0x0208285C
+ push {r4, lr}
+ bl FUN_020126D8
+ add r4, r0, #0x0
+ bl FUN_0201B9D4
+ add r0, #0xa
+ mul r0, r4
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_0201B9E0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02082878
+FUN_02082878: ; 0x02082878
+ ldr r3, _0208287C ; =FUN_0201B9EC
+ bx r3
+ .balign 4
+_0208287C: .word FUN_0201B9EC
+
+ thumb_func_start FUN_02082880
+FUN_02082880: ; 0x02082880
+ push {r4, lr}
+ add r4, r1, #0x0
+ bl FUN_0201BA10
+ str r0, [r4, #0x0]
+ lsr r0, r0, #0x10
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02082894
+FUN_02082894: ; 0x02082894
+ push {r4-r5}
+ mov r5, #0x42
+ add r3, r0, r1
+ lsl r5, r5, #0x2
+ ldrb r4, [r3, r5]
+ lsl r1, r1, #0x1
+ add r0, r0, r1
+ strb r4, [r2, #0x0]
+ add r4, r5, #0x4
+ ldrb r4, [r3, r4]
+ strb r4, [r2, #0x1]
+ add r4, r5, #0x0
+ add r4, #0x8
+ ldrb r3, [r3, r4]
+ add r5, #0xc
+ strb r3, [r2, #0x2]
+ ldrh r0, [r0, r5]
+ strh r0, [r2, #0x4]
+ pop {r4-r5}
+ bx lr
+
+ thumb_func_start FUN_020828BC
+FUN_020828BC: ; 0x020828BC
+ ldr r2, _020828E0 ; =0x00000171
+ ldrb r1, [r0, r2]
+ cmp r1, #0x0
+ beq _020828D6
+ cmp r1, #0x1
+ bne _020828DA
+ add r1, r2, #0x0
+ sub r1, #0x55
+ sub r2, #0x4e
+ ldrb r1, [r0, r1]
+ ldrb r0, [r0, r2]
+ cmp r1, r0
+ bne _020828DA
+_020828D6:
+ mov r0, #0x1
+ bx lr
+_020828DA:
+ mov r0, #0x0
+ bx lr
+ nop
+_020828E0: .word 0x00000171
+
+ thumb_func_start FUN_020828E4
+FUN_020828E4: ; 0x020828E4
+ push {r3-r7, lr}
+ sub sp, #0x58
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x70]
+ mov r6, #0x0
+ str r0, [sp, #0x70]
+ ldr r0, [sp, #0x74]
+ add r5, r1, #0x0
+ add r4, r3, #0x0
+ str r2, [sp, #0x8]
+ str r6, [sp, #0x20]
+ str r6, [sp, #0x18]
+ str r6, [sp, #0x1c]
+ cmp r0, #0x8
+ bhi _0208292A
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0208290E: ; jump table (using 16-bit offset)
+ .short _0208292A - _0208290E - 2; case 0
+ .short _0208292A - _0208290E - 2; case 1
+ .short _0208292A - _0208290E - 2; case 2
+ .short _02082920 - _0208290E - 2; case 3
+ .short _02082926 - _0208290E - 2; case 4
+ .short _02082920 - _0208290E - 2; case 5
+ .short _02082926 - _0208290E - 2; case 6
+ .short _02082920 - _0208290E - 2; case 7
+ .short _02082926 - _0208290E - 2; case 8
+_02082920:
+ mov r0, #0x1
+ str r0, [sp, #0x18]
+ b _0208292A
+_02082926:
+ mov r0, #0x1
+ str r0, [sp, #0x1c]
+_0208292A:
+ mov r0, #0x1
+ mov r1, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x5a
+ add r2, r1, #0x0
+ add r3, r5, #0x0
+ bl FUN_02006C98
+ str r0, [sp, #0x14]
+ mov r0, #0x5a
+ mov r1, #0x0
+ bl LoadFromNARC_7
+ mov r1, #0x30
+ blx _u32_div_f
+ str r0, [sp, #0x24]
+ ldr r1, [sp, #0x24]
+ add r0, r5, #0x0
+ add r1, r1, #0x1
+ bl FUN_020169D8
+ add r5, r0, #0x0
+ ldr r0, [sp, #0x78]
+ cmp r0, #0x1
+ bne _02082968
+ ldr r0, [sp, #0x7c]
+ cmp r0, #0x1
+ bne _02082968
+ mov r0, #0x1
+ str r0, [sp, #0x20]
+_02082968:
+ ldr r0, [sp, #0x24]
+ mov r2, #0x0
+ cmp r0, #0x0
+ ble _02082A1A
+ ldr r3, [sp, #0x14]
+_02082972:
+ ldrh r7, [r3, #0x20]
+ lsl r0, r7, #0x1d
+ lsr r1, r0, #0x1d
+ ldr r0, [sp, #0x70]
+ cmp r0, r1
+ bne _02082A10
+ ldr r0, [sp, #0x20]
+ cmp r0, #0x1
+ bne _0208298E
+ lsl r0, r7, #0x14
+ lsr r0, r0, #0x1e
+ cmp r0, #0x1
+ beq _02082A10
+ b _0208299A
+_0208298E:
+ lsl r0, r7, #0x14
+ lsr r0, r0, #0x1e
+ cmp r0, #0x2
+ beq _02082A10
+ cmp r0, #0x3
+ beq _02082A10
+_0208299A:
+ ldr r0, [sp, #0x18]
+ cmp r0, #0x1
+ bne _020829AA
+ ldrh r0, [r3, #0x20]
+ lsl r0, r0, #0x16
+ lsr r0, r0, #0x1f
+ beq _02082A10
+ b _020829CA
+_020829AA:
+ ldr r0, [sp, #0x1c]
+ cmp r0, #0x1
+ ldrh r0, [r3, #0x20]
+ bne _020829BA
+ lsl r0, r0, #0x17
+ lsr r0, r0, #0x1f
+ beq _02082A10
+ b _020829CA
+_020829BA:
+ lsl r1, r0, #0x16
+ lsr r1, r1, #0x1f
+ cmp r1, #0x1
+ beq _02082A10
+ lsl r0, r0, #0x17
+ lsr r0, r0, #0x1f
+ cmp r0, #0x1
+ beq _02082A10
+_020829CA:
+ cmp r4, #0x0
+ bne _020829D6
+ ldrh r0, [r3, #0x20]
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1f
+ bne _02082A06
+_020829D6:
+ cmp r4, #0x1
+ bne _020829E2
+ ldrh r0, [r3, #0x20]
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x1f
+ bne _02082A06
+_020829E2:
+ cmp r4, #0x2
+ bne _020829EE
+ ldrh r0, [r3, #0x20]
+ lsl r0, r0, #0x1a
+ lsr r0, r0, #0x1f
+ bne _02082A06
+_020829EE:
+ cmp r4, #0x3
+ bne _020829FA
+ ldrh r0, [r3, #0x20]
+ lsl r0, r0, #0x19
+ lsr r0, r0, #0x1f
+ bne _02082A06
+_020829FA:
+ cmp r4, #0x4
+ bne _02082A10
+ ldrh r0, [r3, #0x20]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1f
+ beq _02082A10
+_02082A06:
+ add r1, r6, #0x1
+ add r0, r6, #0x0
+ lsl r1, r1, #0x18
+ lsr r6, r1, #0x18
+ strb r2, [r5, r0]
+_02082A10:
+ ldr r0, [sp, #0x24]
+ add r2, r2, #0x1
+ add r3, #0x30
+ cmp r2, r0
+ blt _02082972
+_02082A1A:
+ mov r0, #0xff
+ strb r0, [r5, r6]
+ ldr r0, [sp, #0x1c]
+ cmp r0, #0x0
+ beq _02082A26
+ b _02082B4E
+_02082A26:
+ ldr r0, [sp, #0x8]
+ cmp r6, r0
+ bge _02082A30
+ bl ErrorHandling
+_02082A30:
+ mov r0, #0x0
+ str r0, [sp, #0x10]
+ cmp r6, #0x0
+ ble _02082A5A
+ mov r2, #0x30
+_02082A3A:
+ ldrb r1, [r5, r0]
+ add r3, r1, #0x0
+ ldr r1, [sp, #0x14]
+ mul r3, r2
+ add r1, r1, r3
+ ldrh r1, [r1, #0x20]
+ lsl r1, r1, #0x14
+ lsr r1, r1, #0x1e
+ cmp r1, #0x3
+ bne _02082A54
+ ldr r1, [sp, #0x10]
+ add r1, r1, #0x1
+ str r1, [sp, #0x10]
+_02082A54:
+ add r0, r0, #0x1
+ cmp r0, r6
+ blt _02082A3A
+_02082A5A:
+ ldr r0, [sp, #0x10]
+ cmp r0, #0x0
+ ble _02082AA2
+ ldr r0, [sp, #0x4]
+ bl FUN_02082878
+ ldr r1, [sp, #0x10]
+ blx _s32_div_f
+ mov r3, #0x0
+ cmp r6, #0x0
+ ble _02082AA2
+ mov r0, #0x30
+_02082A74:
+ ldrb r4, [r5, r3]
+ add r2, r4, #0x0
+ ldr r4, [sp, #0x14]
+ mul r2, r0
+ add r2, r4, r2
+ ldrh r4, [r2, #0x20]
+ lsl r4, r4, #0x14
+ lsr r4, r4, #0x1e
+ cmp r4, #0x3
+ bne _02082A9C
+ cmp r1, #0x0
+ bne _02082A9A
+ add r4, sp, #0x28
+ mov r3, #0x6
+_02082A90:
+ ldmia r2!, {r0-r1}
+ stmia r4!, {r0-r1}
+ sub r3, r3, #0x1
+ bne _02082A90
+ b _02082AA2
+_02082A9A:
+ sub r1, r1, #0x1
+_02082A9C:
+ add r3, r3, #0x1
+ cmp r3, r6
+ blt _02082A74
+_02082AA2:
+ ldr r0, [sp, #0x8]
+ mov r1, #0x4
+ sub r4, r1, r0
+ add r0, r4, #0x0
+ str r4, [sp, #0xc]
+ cmp r0, #0x4
+ bge _02082B16
+_02082AB0:
+ ldr r0, [sp, #0x4]
+ bl FUN_02082878
+ add r1, r6, #0x0
+ blx _s32_div_f
+ lsl r0, r1, #0x10
+ lsr r2, r0, #0x10
+ ldrb r3, [r5, r2]
+ mov r0, #0x30
+ add r1, r3, #0x0
+ ldr r3, [sp, #0x14]
+ mul r1, r0
+ add r7, r3, r1
+ ldrh r1, [r7, #0x20]
+ lsl r1, r1, #0x14
+ lsr r1, r1, #0x1e
+ cmp r1, #0x3
+ bne _02082ADA
+ sub r4, r4, #0x1
+ b _02082B10
+_02082ADA:
+ add r1, r4, #0x0
+ mul r1, r0
+ ldr r0, [sp, #0x4]
+ add r3, r0, r1
+ mov r0, #0x6
+ add r3, #0x10
+ mov r12, r0
+_02082AE8:
+ ldmia r7!, {r0-r1}
+ stmia r3!, {r0-r1}
+ mov r0, r12
+ sub r0, r0, #0x1
+ mov r12, r0
+ bne _02082AE8
+ ldrb r1, [r5, r2]
+ add r0, r5, r2
+ cmp r1, #0xff
+ beq _02082B0A
+_02082AFC:
+ ldrb r1, [r0, #0x1]
+ add r2, r2, #0x1
+ strb r1, [r0, #0x0]
+ ldrb r1, [r5, r2]
+ add r0, r5, r2
+ cmp r1, #0xff
+ bne _02082AFC
+_02082B0A:
+ sub r0, r6, #0x1
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+_02082B10:
+ add r4, r4, #0x1
+ cmp r4, #0x4
+ blt _02082AB0
+_02082B16:
+ ldr r0, [sp, #0x10]
+ cmp r0, #0x0
+ ble _02082B7E
+ ldr r0, [sp, #0xc]
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ ldr r0, [sp, #0x4]
+ bl FUN_02082878
+ ldr r1, [sp, #0x8]
+ blx _s32_div_f
+ add r0, r4, r1
+ lsl r0, r0, #0x10
+ lsr r2, r0, #0x10
+ add r1, r2, #0x0
+ mov r0, #0x30
+ mul r1, r0
+ ldr r0, [sp, #0x4]
+ add r4, sp, #0x28
+ add r3, r0, r1
+ add r3, #0x10
+ mov r2, #0x6
+_02082B44:
+ ldmia r4!, {r0-r1}
+ stmia r3!, {r0-r1}
+ sub r2, r2, #0x1
+ bne _02082B44
+ b _02082B7E
+_02082B4E:
+ cmp r6, #0x4
+ bhs _02082B56
+ bl ErrorHandling
+_02082B56:
+ mov r6, #0x0
+ mov r7, #0x30
+_02082B5A:
+ ldrb r0, [r5, r6]
+ ldr r3, [sp, #0x4]
+ mov r2, #0x6
+ add r1, r0, #0x0
+ ldr r0, [sp, #0x14]
+ mul r1, r7
+ add r4, r0, r1
+ add r3, #0x10
+_02082B6A:
+ ldmia r4!, {r0-r1}
+ stmia r3!, {r0-r1}
+ sub r2, r2, #0x1
+ bne _02082B6A
+ ldr r0, [sp, #0x4]
+ add r6, r6, #0x1
+ add r0, #0x30
+ str r0, [sp, #0x4]
+ cmp r6, #0x4
+ blt _02082B5A
+_02082B7E:
+ add r0, r5, #0x0
+ bl FUN_02016A18
+ ldr r0, [sp, #0x14]
+ bl FUN_02016A18
+ add sp, #0x58
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02082B90
+FUN_02082B90: ; 0x02082B90
+ push {r3-r7, lr}
+ sub sp, #0x18
+ str r0, [sp, #0x8]
+ mov r0, #0x1
+ add r3, r1, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x5a
+ mov r1, #0x2
+ mov r2, #0x0
+ bl FUN_02006C98
+ str r0, [sp, #0x14]
+ ldr r1, _02082D10 ; =0x00000121
+ ldr r0, [sp, #0x8]
+ ldrb r0, [r0, r1]
+ cmp r0, #0x4
+ beq _02082BBA
+ cmp r0, #0x6
+ beq _02082BBA
+ cmp r0, #0x8
+ bne _02082BC0
+_02082BBA:
+ mov r0, #0x0
+ str r0, [sp, #0xc]
+ b _02082BC8
+_02082BC0:
+ ldr r0, [sp, #0x8]
+ add r1, r1, #0x6
+ ldrb r0, [r0, r1]
+ str r0, [sp, #0xc]
+_02082BC8:
+ ldr r0, [sp, #0xc]
+ cmp r0, #0x4
+ blt _02082BD0
+ b _02082D06
+_02082BD0:
+ mov r1, #0x30
+ mul r1, r0
+ ldr r0, [sp, #0x8]
+ add r7, r0, r1
+ ldr r0, [sp, #0xc]
+ lsl r1, r0, #0x2
+ ldr r0, [sp, #0x8]
+ add r6, r0, r1
+_02082BE0:
+ ldr r1, _02082D14 ; =0x00000122
+ ldr r0, [sp, #0x8]
+ ldrb r0, [r0, r1]
+ cmp r0, #0xb
+ bhi _02082C6E
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02082BF6: ; jump table (using 16-bit offset)
+ .short _02082C0E - _02082BF6 - 2; case 0
+ .short _02082C16 - _02082BF6 - 2; case 1
+ .short _02082C1E - _02082BF6 - 2; case 2
+ .short _02082C26 - _02082BF6 - 2; case 3
+ .short _02082C2E - _02082BF6 - 2; case 4
+ .short _02082C36 - _02082BF6 - 2; case 5
+ .short _02082C3E - _02082BF6 - 2; case 6
+ .short _02082C46 - _02082BF6 - 2; case 7
+ .short _02082C4E - _02082BF6 - 2; case 8
+ .short _02082C56 - _02082BF6 - 2; case 9
+ .short _02082C5E - _02082BF6 - 2; case 10
+ .short _02082C66 - _02082BF6 - 2; case 11
+_02082C0E:
+ add r0, r7, #0x0
+ add r0, #0x32
+ ldrb r2, [r0, #0x0]
+ b _02082C74
+_02082C16:
+ add r0, r7, #0x0
+ add r0, #0x33
+ ldrb r2, [r0, #0x0]
+ b _02082C74
+_02082C1E:
+ add r0, r7, #0x0
+ add r0, #0x34
+ ldrb r2, [r0, #0x0]
+ b _02082C74
+_02082C26:
+ add r0, r7, #0x0
+ add r0, #0x35
+ ldrb r2, [r0, #0x0]
+ b _02082C74
+_02082C2E:
+ add r0, r7, #0x0
+ add r0, #0x36
+ ldrb r2, [r0, #0x0]
+ b _02082C74
+_02082C36:
+ add r0, r7, #0x0
+ add r0, #0x37
+ ldrb r2, [r0, #0x0]
+ b _02082C74
+_02082C3E:
+ add r0, r7, #0x0
+ add r0, #0x38
+ ldrb r2, [r0, #0x0]
+ b _02082C74
+_02082C46:
+ add r0, r7, #0x0
+ add r0, #0x39
+ ldrb r2, [r0, #0x0]
+ b _02082C74
+_02082C4E:
+ add r0, r7, #0x0
+ add r0, #0x3a
+ ldrb r2, [r0, #0x0]
+ b _02082C74
+_02082C56:
+ add r0, r7, #0x0
+ add r0, #0x3b
+ ldrb r2, [r0, #0x0]
+ b _02082C74
+_02082C5E:
+ add r0, r7, #0x0
+ add r0, #0x3c
+ ldrb r2, [r0, #0x0]
+ b _02082C74
+_02082C66:
+ add r0, r7, #0x0
+ add r0, #0x3d
+ ldrb r2, [r0, #0x0]
+ b _02082C74
+_02082C6E:
+ bl ErrorHandling
+ mov r2, #0x0
+_02082C74:
+ mov r0, #0x54
+ add r1, r2, #0x0
+ mul r1, r0
+ ldr r0, [sp, #0x14]
+ add r0, r0, r1
+ str r0, [sp, #0x10]
+ add r0, r6, #0x0
+ add r0, #0xf8
+ ldr r0, [r0, #0x0]
+ bl FUN_02027740
+ add r0, r6, #0x0
+ add r0, #0xf8
+ ldr r2, [sp, #0x10]
+ mov r3, #0x51
+ ldrsb r2, [r2, r3]
+ ldr r0, [r0, #0x0]
+ ldr r1, [r6, #0x0]
+ bl FUN_02027914
+ ldr r0, [sp, #0x10]
+ mov r5, #0x0
+ add r0, #0x50
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ ble _02082CD2
+ ldr r4, [sp, #0x10]
+_02082CAA:
+ ldrb r0, [r4, #0x2]
+ add r1, r5, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x3
+ ldrsb r0, [r4, r0]
+ str r0, [sp, #0x4]
+ add r0, r6, #0x0
+ add r0, #0xf8
+ ldrb r2, [r4, #0x0]
+ ldrb r3, [r4, #0x1]
+ ldr r0, [r0, #0x0]
+ bl FUN_02027964
+ ldr r0, [sp, #0x10]
+ add r5, r5, #0x1
+ add r0, #0x50
+ ldrb r0, [r0, #0x0]
+ add r4, r4, #0x4
+ cmp r5, r0
+ blt _02082CAA
+_02082CD2:
+ ldr r1, [sp, #0x10]
+ add r0, r6, #0x0
+ add r1, #0x52
+ add r0, #0xf8
+ str r1, [sp, #0x10]
+ ldrb r1, [r1, #0x0]
+ ldr r0, [r0, #0x0]
+ bl FUN_0202787C
+ mov r2, #0x12
+ add r0, r6, #0x0
+ add r0, #0xf8
+ ldr r1, [sp, #0x8]
+ lsl r2, r2, #0x4
+ ldrb r1, [r1, r2]
+ ldr r0, [r0, #0x0]
+ bl FUN_020278AC
+ ldr r0, [sp, #0xc]
+ add r7, #0x30
+ add r0, r0, #0x1
+ add r6, r6, #0x4
+ str r0, [sp, #0xc]
+ cmp r0, #0x4
+ bge _02082D06
+ b _02082BE0
+_02082D06:
+ ldr r0, [sp, #0x14]
+ bl FUN_02016A18
+ add sp, #0x18
+ pop {r3-r7, pc}
+ .balign 4
+_02082D10: .word 0x00000121
+_02082D14: .word 0x00000122
+
+ thumb_func_start FUN_02082D18
+FUN_02082D18: ; 0x02082D18
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ mov r7, #0x12
+ mov r4, #0x0
+ add r5, r6, #0x0
+ lsl r7, r7, #0x4
+_02082D24:
+ add r0, r5, #0x0
+ add r0, #0xf8
+ ldr r0, [r0, #0x0]
+ bl FUN_02027740
+ add r0, r5, #0x0
+ add r0, #0xf8
+ mov r2, #0x0
+ ldr r0, [r0, #0x0]
+ ldr r1, [r5, #0x0]
+ mvn r2, r2
+ bl FUN_02027914
+ add r0, r5, #0x0
+ add r0, #0xf8
+ ldr r0, [r0, #0x0]
+ mov r1, #0x0
+ bl FUN_0202787C
+ add r0, r5, #0x0
+ add r0, #0xf8
+ ldrb r1, [r6, r7]
+ ldr r0, [r0, #0x0]
+ bl FUN_020278AC
+ add r4, r4, #0x1
+ add r5, r5, #0x4
+ cmp r4, #0x4
+ blt _02082D24
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02082D60
+FUN_02082D60: ; 0x02082D60
+ push {r3-r7, lr}
+ sub sp, #0x20
+ add r7, r0, #0x0
+ add r6, r1, #0x0
+ ldrh r1, [r7, #0x20]
+ str r2, [sp, #0x10]
+ ldrh r0, [r7, #0x14]
+ lsl r1, r1, #0x12
+ lsr r1, r1, #0x1e
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ mov r2, #0x0
+ bl FUN_02066E74
+ mov r1, #0x1
+ str r1, [sp, #0x0]
+ str r0, [sp, #0x4]
+ mov r0, #0x2
+ str r0, [sp, #0x8]
+ ldr r0, _02082E60 ; =0x0F0F0F0F
+ mov r2, #0xa
+ str r0, [sp, #0xc]
+ ldrh r1, [r7, #0x14]
+ add r0, r6, #0x0
+ mov r3, #0x20
+ bl FUN_02066ACC
+ mov r4, #0x0
+ add r5, r7, #0x0
+_02082D9A:
+ ldrh r1, [r5, #0xc]
+ add r0, sp, #0x18
+ add r2, sp, #0x1c
+ strh r1, [r0, #0x6]
+ add r1, r4, #0x0
+ add r0, r6, #0x0
+ add r1, #0x36
+ add r2, #0x2
+ bl FUN_02067830
+ add r4, r4, #0x1
+ add r5, r5, #0x2
+ cmp r4, #0x4
+ blt _02082D9A
+ ldr r3, [sp, #0x10]
+ mov r0, #0x1
+ mov r1, #0x1a
+ mov r2, #0xc0
+ bl FUN_0200A86C
+ ldrh r1, [r7, #0x16]
+ add r4, r0, #0x0
+ bl FUN_0200A914
+ add r5, r0, #0x0
+ ldrh r1, [r7, #0x18]
+ add r0, r4, #0x0
+ bl FUN_0200A914
+ str r0, [sp, #0x14]
+ add r0, r6, #0x0
+ mov r1, #0x76
+ add r2, r5, #0x0
+ bl FUN_02067830
+ ldr r2, [sp, #0x14]
+ add r0, r6, #0x0
+ mov r1, #0x90
+ bl FUN_02067830
+ add r0, r5, #0x0
+ bl FUN_02021A20
+ ldr r0, [sp, #0x14]
+ bl FUN_02021A20
+ add r0, r4, #0x0
+ bl FUN_0200A8B8
+ add r2, sp, #0x1c
+ ldrb r1, [r7, #0x1a]
+ add r0, sp, #0x18
+ add r2, #0x1
+ strb r1, [r0, #0x5]
+ ldrb r1, [r7, #0x1b]
+ strb r1, [r0, #0x4]
+ ldrb r1, [r7, #0x1c]
+ strb r1, [r0, #0x3]
+ ldrb r1, [r7, #0x1d]
+ strb r1, [r0, #0x2]
+ ldrb r1, [r7, #0x1e]
+ strb r1, [r0, #0x1]
+ ldrb r1, [r7, #0x1f]
+ strb r1, [r0, #0x0]
+ add r0, r6, #0x0
+ mov r1, #0x13
+ bl FUN_02067830
+ add r0, r6, #0x0
+ mov r1, #0x14
+ add r2, sp, #0x1c
+ bl FUN_02067830
+ add r2, sp, #0x18
+ add r0, r6, #0x0
+ mov r1, #0x15
+ add r2, #0x3
+ bl FUN_02067830
+ add r2, sp, #0x18
+ add r0, r6, #0x0
+ mov r1, #0x16
+ add r2, #0x2
+ bl FUN_02067830
+ add r2, sp, #0x18
+ add r0, r6, #0x0
+ mov r1, #0x17
+ add r2, #0x1
+ bl FUN_02067830
+ add r0, r6, #0x0
+ mov r1, #0x18
+ add r2, sp, #0x18
+ bl FUN_02067830
+ add sp, #0x20
+ pop {r3-r7, pc}
+ nop
+_02082E60: .word 0x0F0F0F0F
+
+ thumb_func_start FUN_02082E64
+FUN_02082E64: ; 0x02082E64
+ push {r4-r7, lr}
+ sub sp, #0x24
+ add r6, r3, #0x0
+ add r5, r2, #0x0
+ lsl r2, r6, #0x18
+ str r0, [sp, #0x10]
+ add r7, r1, #0x0
+ add r0, sp, #0x14
+ add r1, r5, #0x0
+ lsr r2, r2, #0x18
+ ldr r4, [sp, #0x38]
+ bl FUN_02068B68
+ lsl r1, r6, #0x18
+ add r0, r5, #0x0
+ lsr r1, r1, #0x18
+ bl FUN_02068E14
+ add r5, r0, #0x0
+ cmp r4, #0x0
+ beq _02082EB0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ bne _02082E98
+ bl ErrorHandling
+_02082E98:
+ add r1, sp, #0x14
+ ldrh r0, [r1, #0x0]
+ ldrh r1, [r1, #0x2]
+ ldr r2, [sp, #0x3c]
+ ldr r3, [r4, #0x0]
+ bl FUN_02012420
+ add r0, sp, #0x14
+ ldrh r1, [r0, #0x4]
+ str r1, [r4, #0x8]
+ ldrh r0, [r0, #0x0]
+ str r0, [r4, #0x4]
+_02082EB0:
+ ldr r0, [sp, #0x48]
+ ldr r3, [sp, #0x44]
+ str r0, [sp, #0x0]
+ str r7, [sp, #0x4]
+ mov r0, #0x0
+ str r0, [sp, #0x8]
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x10]
+ ldr r2, [sp, #0x40]
+ add r1, sp, #0x14
+ add r3, r3, r5
+ bl FUN_020073A0
+ add sp, #0x24
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02082ED0
+FUN_02082ED0: ; 0x02082ED0
+ push {r4-r7, lr}
+ sub sp, #0x24
+ str r0, [sp, #0x4]
+ str r1, [sp, #0x8]
+ ldr r0, [sp, #0x38]
+ add r7, r3, #0x0
+ mov r5, #0x0
+ str r2, [sp, #0xc]
+ str r0, [sp, #0x38]
+ mov r1, #0x1
+ ldr r3, [sp, #0x8]
+ mov r0, #0x5a
+ add r2, r5, #0x0
+ add r4, r5, #0x0
+ str r1, [sp, #0x0]
+ bl FUN_02006C98
+ str r0, [sp, #0x14]
+ mov r0, #0x5a
+ mov r1, #0x1
+ bl LoadFromNARC_7
+ lsr r0, r0, #0x3
+ str r0, [sp, #0x18]
+ ldr r1, [sp, #0x18]
+ ldr r0, [sp, #0x8]
+ add r1, r1, #0x1
+ bl FUN_020169D8
+ ldr r1, [sp, #0x18]
+ add r6, r0, #0x0
+ ldr r0, [sp, #0x8]
+ add r1, r1, #0x1
+ bl FUN_020169D8
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x18]
+ add r2, r5, #0x0
+ cmp r0, #0x0
+ ble _0208300A
+ ldr r3, [sp, #0x14]
+_02082F22:
+ ldrh r0, [r3, #0x4]
+ mov r12, r0
+ lsl r0, r0, #0x14
+ lsr r1, r0, #0x1e
+ ldr r0, [sp, #0x38]
+ cmp r0, r1
+ bne _02083000
+ cmp r7, #0x0
+ bne _02082F5A
+ mov r0, r12
+ lsl r0, r0, #0x1e
+ lsr r0, r0, #0x1e
+ beq _02082F5A
+ cmp r0, #0x1
+ bls _02082F4E
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ add r1, r4, #0x0
+ lsr r4, r0, #0x18
+ ldr r0, [sp, #0x10]
+ strb r2, [r0, r1]
+ b _02083000
+_02082F4E:
+ add r1, r5, #0x1
+ add r0, r5, #0x0
+ lsl r1, r1, #0x18
+ lsr r5, r1, #0x18
+ strb r2, [r6, r0]
+ b _02083000
+_02082F5A:
+ cmp r7, #0x1
+ bne _02082F84
+ ldrh r0, [r3, #0x4]
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1e
+ beq _02082F84
+ cmp r0, #0x1
+ bls _02082F78
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ add r1, r4, #0x0
+ lsr r4, r0, #0x18
+ ldr r0, [sp, #0x10]
+ strb r2, [r0, r1]
+ b _02083000
+_02082F78:
+ add r1, r5, #0x1
+ add r0, r5, #0x0
+ lsl r1, r1, #0x18
+ lsr r5, r1, #0x18
+ strb r2, [r6, r0]
+ b _02083000
+_02082F84:
+ cmp r7, #0x2
+ bne _02082FAE
+ ldrh r0, [r3, #0x4]
+ lsl r0, r0, #0x1a
+ lsr r0, r0, #0x1e
+ beq _02082FAE
+ cmp r0, #0x1
+ bls _02082FA2
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ add r1, r4, #0x0
+ lsr r4, r0, #0x18
+ ldr r0, [sp, #0x10]
+ strb r2, [r0, r1]
+ b _02083000
+_02082FA2:
+ add r1, r5, #0x1
+ add r0, r5, #0x0
+ lsl r1, r1, #0x18
+ lsr r5, r1, #0x18
+ strb r2, [r6, r0]
+ b _02083000
+_02082FAE:
+ cmp r7, #0x3
+ bne _02082FD8
+ ldrh r0, [r3, #0x4]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1e
+ beq _02082FD8
+ cmp r0, #0x1
+ bls _02082FCC
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ add r1, r4, #0x0
+ lsr r4, r0, #0x18
+ ldr r0, [sp, #0x10]
+ strb r2, [r0, r1]
+ b _02083000
+_02082FCC:
+ add r1, r5, #0x1
+ add r0, r5, #0x0
+ lsl r1, r1, #0x18
+ lsr r5, r1, #0x18
+ strb r2, [r6, r0]
+ b _02083000
+_02082FD8:
+ cmp r7, #0x4
+ bne _02083000
+ ldrh r0, [r3, #0x4]
+ lsl r0, r0, #0x16
+ lsr r0, r0, #0x1e
+ beq _02083000
+ cmp r0, #0x1
+ bls _02082FF6
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ add r1, r4, #0x0
+ lsr r4, r0, #0x18
+ ldr r0, [sp, #0x10]
+ strb r2, [r0, r1]
+ b _02083000
+_02082FF6:
+ add r1, r5, #0x1
+ add r0, r5, #0x0
+ lsl r1, r1, #0x18
+ lsr r5, r1, #0x18
+ strb r2, [r6, r0]
+_02083000:
+ ldr r0, [sp, #0x18]
+ add r2, r2, #0x1
+ add r3, #0x8
+ cmp r2, r0
+ blt _02082F22
+_0208300A:
+ mov r1, #0xff
+ ldr r0, [sp, #0x10]
+ strb r1, [r6, r5]
+ strb r1, [r0, r4]
+ cmp r5, #0x2
+ bhs _0208301A
+ bl ErrorHandling
+_0208301A:
+ ldr r2, [sp, #0x4]
+ mov r3, #0x0
+_0208301E:
+ ldrb r0, [r6, r3]
+ ldr r5, [sp, #0x14]
+ add r3, r3, #0x1
+ lsl r1, r0, #0x3
+ ldr r0, [sp, #0x14]
+ ldrh r5, [r5, r1]
+ add r0, r0, r1
+ add r1, r2, #0x0
+ add r1, #0xd0
+ strh r5, [r1, #0x0]
+ add r1, r2, #0x0
+ ldrh r5, [r0, #0x2]
+ add r1, #0xd2
+ strh r5, [r1, #0x0]
+ add r1, r2, #0x0
+ ldrh r5, [r0, #0x4]
+ add r1, #0xd4
+ strh r5, [r1, #0x0]
+ ldrh r1, [r0, #0x6]
+ add r0, r2, #0x0
+ add r0, #0xd6
+ add r2, #0x8
+ strh r1, [r0, #0x0]
+ cmp r3, #0x2
+ blt _0208301E
+ cmp r4, #0x1
+ bhs _02083058
+ bl ErrorHandling
+_02083058:
+ ldr r0, [sp, #0x4]
+ bl FUN_02082878
+ add r1, r4, #0x0
+ blx _s32_div_f
+ lsl r0, r1, #0x10
+ lsr r1, r0, #0x10
+ ldr r0, [sp, #0x10]
+ ldrb r0, [r0, r1]
+ ldr r1, [sp, #0x14]
+ lsl r2, r0, #0x3
+ ldr r0, [sp, #0x14]
+ add r0, r0, r2
+ ldrh r2, [r1, r2]
+ ldr r1, [sp, #0x4]
+ add r1, #0xe0
+ strh r2, [r1, #0x0]
+ ldr r1, [sp, #0x4]
+ ldrh r2, [r0, #0x2]
+ add r1, #0xe2
+ strh r2, [r1, #0x0]
+ ldr r1, [sp, #0x4]
+ ldrh r2, [r0, #0x4]
+ add r1, #0xe4
+ strh r2, [r1, #0x0]
+ ldrh r1, [r0, #0x6]
+ ldr r0, [sp, #0x4]
+ ldr r2, _02083110 ; =0x0000011E
+ add r0, #0xe6
+ strh r1, [r0, #0x0]
+ ldr r1, [sp, #0xc]
+ ldr r0, [sp, #0x4]
+ strb r1, [r0, r2]
+ add r2, r0, #0x0
+ add r0, r1, #0x0
+ lsl r1, r0, #0x3
+ add r2, #0xd0
+ ldrh r4, [r2, r1]
+ add r0, sp, #0x1c
+ add r3, r2, r1
+ strh r4, [r0, #0x0]
+ ldrh r4, [r3, #0x2]
+ strh r4, [r0, #0x2]
+ ldrh r4, [r3, #0x4]
+ strh r4, [r0, #0x4]
+ ldrh r4, [r3, #0x6]
+ strh r4, [r0, #0x6]
+ ldr r4, [sp, #0x4]
+ add r4, #0xe0
+ ldrh r4, [r4, #0x0]
+ strh r4, [r2, r1]
+ ldr r1, [sp, #0x4]
+ add r1, #0xe2
+ ldrh r1, [r1, #0x0]
+ strh r1, [r3, #0x2]
+ ldr r1, [sp, #0x4]
+ add r1, #0xe4
+ ldrh r1, [r1, #0x0]
+ strh r1, [r3, #0x4]
+ ldr r1, [sp, #0x4]
+ add r1, #0xe6
+ ldrh r1, [r1, #0x0]
+ strh r1, [r3, #0x6]
+ ldr r1, [sp, #0x4]
+ ldrh r2, [r0, #0x0]
+ add r1, #0xe0
+ strh r2, [r1, #0x0]
+ ldr r1, [sp, #0x4]
+ ldrh r2, [r0, #0x2]
+ add r1, #0xe2
+ strh r2, [r1, #0x0]
+ ldr r1, [sp, #0x4]
+ ldrh r2, [r0, #0x4]
+ add r1, #0xe4
+ strh r2, [r1, #0x0]
+ ldrh r1, [r0, #0x6]
+ ldr r0, [sp, #0x4]
+ add r0, #0xe6
+ str r0, [sp, #0x4]
+ strh r1, [r0, #0x0]
+ ldr r0, [sp, #0x10]
+ bl FUN_02016A18
+ add r0, r6, #0x0
+ bl FUN_02016A18
+ ldr r0, [sp, #0x14]
+ bl FUN_02016A18
+ add sp, #0x24
+ pop {r4-r7, pc}
+ .balign 4
+_02083110: .word 0x0000011E
+
+ thumb_func_start FUN_02083114
+FUN_02083114: ; 0x02083114
+ push {r4, lr}
+ add r4, r0, #0x0
+ cmp r4, #0x18
+ blo _02083120
+ bl ErrorHandling
+_02083120:
+ mov r0, #0x1a
+ add r1, r4, #0x0
+ mul r1, r0
+ ldr r0, _0208312C ; =0x020FBC6C
+ ldrsb r0, [r0, r1]
+ pop {r4, pc}
+ .balign 4
+_0208312C: .word 0x020FBC6C
+
+ thumb_func_start FUN_02083130
+FUN_02083130: ; 0x02083130
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ cmp r5, #0x18
+ blo _02083140
+ bl ErrorHandling
+_02083140:
+ mov r0, #0x1a
+ add r1, r5, #0x0
+ mul r1, r0
+ ldr r0, _02083154 ; =0x020FBC68
+ ldrh r0, [r0, r1]
+ str r0, [r4, #0x0]
+ ldr r0, _02083158 ; =0x020FBC6A
+ ldrh r0, [r0, r1]
+ str r0, [r6, #0x0]
+ pop {r4-r6, pc}
+ .balign 4
+_02083154: .word 0x020FBC68
+_02083158: .word 0x020FBC6A
+
+ thumb_func_start FUN_0208315C
+FUN_0208315C: ; 0x0208315C
+ push {r4, lr}
+ add r4, r0, #0x0
+ cmp r4, #0x18
+ blo _02083168
+ bl ErrorHandling
+_02083168:
+ add r4, #0x2d
+ add r0, r4, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02083170
+FUN_02083170: ; 0x02083170
+ push {r3-r7, lr}
+ add r4, r0, #0x0
+ add r7, r1, #0x0
+ add r5, r2, #0x0
+ add r6, r3, #0x0
+ cmp r4, #0x18
+ blo _02083182
+ bl ErrorHandling
+_02083182:
+ cmp r7, #0x4
+ bhi _0208319C
+ add r0, r7, r7
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02083192: ; jump table (using 16-bit offset)
+ .short _0208319C - _02083192 - 2; case 0
+ .short _020831B0 - _02083192 - 2; case 1
+ .short _020831C4 - _02083192 - 2; case 2
+ .short _020831D8 - _02083192 - 2; case 3
+ .short _020831EC - _02083192 - 2; case 4
+_0208319C:
+ mov r0, #0x1a
+ add r1, r4, #0x0
+ mul r1, r0
+ ldr r0, _02083200 ; =0x020FBC6E
+ ldrh r0, [r0, r1]
+ str r0, [r5, #0x0]
+ ldr r0, _02083204 ; =0x020FBC70
+ ldrb r0, [r0, r1]
+ str r0, [r6, #0x0]
+ pop {r3-r7, pc}
+_020831B0:
+ mov r0, #0x1a
+ add r1, r4, #0x0
+ mul r1, r0
+ ldr r0, _02083208 ; =0x020FBC72
+ ldrh r0, [r0, r1]
+ str r0, [r5, #0x0]
+ ldr r0, _0208320C ; =0x020FBC74
+ ldrb r0, [r0, r1]
+ str r0, [r6, #0x0]
+ pop {r3-r7, pc}
+_020831C4:
+ mov r0, #0x1a
+ add r1, r4, #0x0
+ mul r1, r0
+ ldr r0, _02083210 ; =0x020FBC76
+ ldrh r0, [r0, r1]
+ str r0, [r5, #0x0]
+ ldr r0, _02083214 ; =0x020FBC78
+ ldrb r0, [r0, r1]
+ str r0, [r6, #0x0]
+ pop {r3-r7, pc}
+_020831D8:
+ mov r0, #0x1a
+ add r1, r4, #0x0
+ mul r1, r0
+ ldr r0, _02083218 ; =0x020FBC7A
+ ldrh r0, [r0, r1]
+ str r0, [r5, #0x0]
+ ldr r0, _0208321C ; =0x020FBC7C
+ ldrb r0, [r0, r1]
+ str r0, [r6, #0x0]
+ pop {r3-r7, pc}
+_020831EC:
+ mov r0, #0x1a
+ add r1, r4, #0x0
+ mul r1, r0
+ ldr r0, _02083220 ; =0x020FBC7E
+ ldrh r0, [r0, r1]
+ str r0, [r5, #0x0]
+ ldr r0, _02083224 ; =0x020FBC80
+ ldrb r0, [r0, r1]
+ str r0, [r6, #0x0]
+ pop {r3-r7, pc}
+ .balign 4
+_02083200: .word 0x020FBC6E
+_02083204: .word 0x020FBC70
+_02083208: .word 0x020FBC72
+_0208320C: .word 0x020FBC74
+_02083210: .word 0x020FBC76
+_02083214: .word 0x020FBC78
+_02083218: .word 0x020FBC7A
+_0208321C: .word 0x020FBC7C
+_02083220: .word 0x020FBC7E
+_02083224: .word 0x020FBC80
+
+ thumb_func_start FUN_02083228
+FUN_02083228: ; 0x02083228
+ cmp r2, #0x1
+ bne _02083230
+ mov r0, #0x33
+ bx lr
+_02083230:
+ cmp r1, #0x3
+ beq _0208323C
+ cmp r1, #0x5
+ beq _0208323C
+ cmp r1, #0x7
+ bne _02083240
+_0208323C:
+ mov r0, #0x32
+ bx lr
+_02083240:
+ cmp r0, #0x3
+ bhi _02083264
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02083250: ; jump table (using 16-bit offset)
+ .short _02083258 - _02083250 - 2; case 0
+ .short _0208325C - _02083250 - 2; case 1
+ .short _02083260 - _02083250 - 2; case 2
+ .short _02083264 - _02083250 - 2; case 3
+_02083258:
+ mov r0, #0x2e
+ bx lr
+_0208325C:
+ mov r0, #0x2f
+ bx lr
+_02083260:
+ mov r0, #0x30
+ bx lr
+_02083264:
+ mov r0, #0x31
+ bx lr
+
+ thumb_func_start FUN_02083268
+FUN_02083268: ; 0x02083268
+ cmp r0, #0x4
+ bhi _02083292
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02083278: ; jump table (using 16-bit offset)
+ .short _02083282 - _02083278 - 2; case 0
+ .short _02083286 - _02083278 - 2; case 1
+ .short _0208328A - _02083278 - 2; case 2
+ .short _0208328E - _02083278 - 2; case 3
+ .short _02083292 - _02083278 - 2; case 4
+_02083282:
+ mov r0, #0x2e
+ bx lr
+_02083286:
+ mov r0, #0x2f
+ bx lr
+_0208328A:
+ mov r0, #0x30
+ bx lr
+_0208328E:
+ mov r0, #0x31
+ bx lr
+_02083292:
+ mov r0, #0x33
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02083298
+FUN_02083298: ; 0x02083298
+ ldr r3, _020832A0 ; =FUN_020832A4
+ mov r1, #0x2
+ bx r3
+ nop
+_020832A0: .word FUN_020832A4
+
+ thumb_func_start FUN_020832A4
+FUN_020832A4: ; 0x020832A4
+ cmp r1, #0x5
+ bne _020832AC
+ mov r0, #0x34
+ bx lr
+_020832AC:
+ cmp r0, #0x4
+ bhi _020832D6
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_020832BC: ; jump table (using 16-bit offset)
+ .short _020832C6 - _020832BC - 2; case 0
+ .short _020832CA - _020832BC - 2; case 1
+ .short _020832CE - _020832BC - 2; case 2
+ .short _020832D2 - _020832BC - 2; case 3
+ .short _020832D6 - _020832BC - 2; case 4
+_020832C6:
+ mov r0, #0x29
+ bx lr
+_020832CA:
+ mov r0, #0x2a
+ bx lr
+_020832CE:
+ mov r0, #0x2b
+ bx lr
+_020832D2:
+ mov r0, #0x2c
+ bx lr
+_020832D6:
+ mov r0, #0x2d
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020832DC
+FUN_020832DC: ; 0x020832DC
+ mov r1, #0x3
+ sub r0, r1, r0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020832E4
+FUN_020832E4: ; 0x020832E4
+ mov r1, #0x3
+ sub r0, r1, r0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020832EC
+FUN_020832EC: ; 0x020832EC
+ ldr r1, _02083304 ; =0x00000121
+ ldrb r0, [r0, r1]
+ cmp r0, #0x3
+ beq _020832FC
+ cmp r0, #0x5
+ beq _020832FC
+ cmp r0, #0x7
+ bne _02083300
+_020832FC:
+ mov r0, #0x1
+ bx lr
+_02083300:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+_02083304: .word 0x00000121
+
+ thumb_func_start FUN_02083308
+FUN_02083308: ; 0x02083308
+ push {r4-r5}
+ sub sp, #0x50
+ ldr r5, _02083368 ; =0x020FBC18
+ add r4, sp, #0x0
+ mov r3, #0x28
+_02083312:
+ ldrh r2, [r5, #0x0]
+ add r5, r5, #0x2
+ strh r2, [r4, #0x0]
+ add r4, r4, #0x2
+ sub r3, r3, #0x1
+ bne _02083312
+ mov r3, #0xc
+ mul r3, r1
+ add r1, r0, r3
+ mov r3, #0x4a
+ lsl r3, r3, #0x2
+ add r4, r3, #0x0
+ add r4, #0x49
+ ldrb r4, [r0, r4]
+ mov r2, #0x0
+ ldrsh r1, [r1, r3]
+ cmp r4, #0x1
+ bne _0208333A
+ add r4, sp, #0x40
+ b _02083344
+_0208333A:
+ sub r3, #0x8
+ ldrb r0, [r0, r3]
+ add r4, sp, #0x0
+ lsl r0, r0, #0x4
+ add r4, r4, r0
+_02083344:
+ mov r3, #0x0
+_02083346:
+ ldrh r0, [r4, #0x0]
+ cmp r1, r0
+ bge _02083354
+ add sp, #0x50
+ add r0, r2, #0x0
+ pop {r4-r5}
+ bx lr
+_02083354:
+ add r3, r3, #0x1
+ add r2, r2, #0x1
+ add r4, r4, #0x2
+ cmp r3, #0x8
+ blt _02083346
+ add r0, r2, #0x0
+ add sp, #0x50
+ pop {r4-r5}
+ bx lr
+ nop
+_02083368: .word 0x020FBC18
+
+ thumb_func_start FUN_0208336C
+FUN_0208336C: ; 0x0208336C
+ push {r4-r5}
+ sub sp, #0x10
+ ldr r5, _020833CC ; =0x020FBC08
+ add r4, sp, #0x0
+ mov r3, #0xf
+_02083376:
+ ldrb r2, [r5, #0x0]
+ add r5, r5, #0x1
+ strb r2, [r4, #0x0]
+ add r4, r4, #0x1
+ sub r3, r3, #0x1
+ bne _02083376
+ mov r2, #0xc
+ mul r2, r1
+ ldr r3, _020833D0 ; =0x0000012A
+ add r1, r0, r2
+ ldrsh r1, [r1, r3]
+ cmp r1, #0x0
+ bne _02083398
+ add sp, #0x10
+ mov r0, #0x0
+ pop {r4-r5}
+ bx lr
+_02083398:
+ add r2, r3, #0x0
+ add r2, #0x47
+ ldrb r2, [r0, r2]
+ cmp r2, #0x1
+ bne _020833A6
+ add r4, sp, #0xc
+ b _020833B2
+_020833A6:
+ sub r3, #0xa
+ ldrb r2, [r0, r3]
+ add r4, sp, #0x0
+ lsl r0, r2, #0x1
+ add r0, r2, r0
+ add r4, r4, r0
+_020833B2:
+ mov r0, #0x1
+ mov r3, #0x0
+_020833B6:
+ ldrb r2, [r4, r3]
+ cmp r1, r2
+ ble _020833C4
+ add r3, r3, #0x1
+ add r0, r0, #0x1
+ cmp r3, #0x3
+ blt _020833B6
+_020833C4:
+ add sp, #0x10
+ pop {r4-r5}
+ bx lr
+ nop
+_020833CC: .word 0x020FBC08
+_020833D0: .word 0x0000012A
+
+ thumb_func_start FUN_020833D4
+FUN_020833D4: ; 0x020833D4
+ push {r3, lr}
+ cmp r0, #0x0
+ bne _020833EE
+ mov r0, #0x1
+ bl FUN_02002B60
+ mov r0, #0x3
+ bl FUN_02002B7C
+ mov r0, #0x1
+ bl FUN_02002BB8
+ pop {r3, pc}
+_020833EE:
+ mov r0, #0x1
+ bl FUN_02002B7C
+ mov r0, #0x0
+ bl FUN_02002B60
+ mov r0, #0x0
+ bl FUN_02002BB8
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02083404
+FUN_02083404: ; 0x02083404
+ push {r3, lr}
+ mov r0, #0x0
+ bl FUN_02002B60
+ mov r0, #0x0
+ bl FUN_02002B7C
+ mov r0, #0x0
+ bl FUN_02002BB8
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0208341C
+FUN_0208341C: ; 0x0208341C
+ push {r3, lr}
+ cmp r1, #0x4
+ bhi _0208344C
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0208342E: ; jump table (using 16-bit offset)
+ .short _02083438 - _0208342E - 2; case 0
+ .short _0208343C - _0208342E - 2; case 1
+ .short _02083440 - _0208342E - 2; case 2
+ .short _02083444 - _0208342E - 2; case 3
+ .short _02083448 - _0208342E - 2; case 4
+_02083438:
+ add r0, #0x7a
+ pop {r3, pc}
+_0208343C:
+ add r0, #0x7e
+ pop {r3, pc}
+_02083440:
+ add r0, #0x82
+ pop {r3, pc}
+_02083444:
+ add r0, #0x86
+ pop {r3, pc}
+_02083448:
+ add r0, #0x8a
+ pop {r3, pc}
+_0208344C:
+ bl ErrorHandling
+ mov r0, #0x7a
+ pop {r3, pc}
+
+ thumb_func_start FUN_02083454
+FUN_02083454: ; 0x02083454
+ push {r4-r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ mov r4, #0x0
+ cmp r5, #0x3
+ beq _02083464
+ cmp r1, #0x1
+ bne _02083474
+_02083464:
+ bl FUN_0201B9EC
+ mov r1, #0xc
+ blx _s32_div_f
+ add sp, #0xc
+ add r0, r1, #0x0
+ pop {r4-r5, pc}
+_02083474:
+ add r0, sp, #0x0
+ add r1, r4, #0x0
+ mov r2, #0xc
+ blx MI_CpuFill8
+ mov r1, #0x2
+ add r0, sp, #0x0
+ strb r1, [r0, #0x0]
+ mov r1, #0x3
+ strb r1, [r0, #0x1]
+ mov r1, #0x4
+ add r4, r4, #0x3
+ strb r1, [r0, #0x2]
+ cmp r5, #0x1
+ blt _020834A6
+ mov r0, #0x0
+ add r2, sp, #0x0
+ strb r0, [r2, r4]
+ mov r1, #0x1
+ add r0, r4, #0x1
+ strb r1, [r2, r0]
+ add r1, r4, #0x2
+ mov r0, #0x5
+ add r4, r4, #0x3
+ strb r0, [r2, r1]
+_020834A6:
+ cmp r5, #0x2
+ blt _020834BE
+ mov r0, #0x6
+ add r2, sp, #0x0
+ strb r0, [r2, r4]
+ mov r1, #0x7
+ add r0, r4, #0x1
+ strb r1, [r2, r0]
+ add r1, r4, #0x2
+ mov r0, #0x8
+ add r4, r4, #0x3
+ strb r0, [r2, r1]
+_020834BE:
+ bl FUN_0201B9EC
+ add r1, r4, #0x0
+ blx _s32_div_f
+ add r0, sp, #0x0
+ ldrb r0, [r0, r1]
+ add sp, #0xc
+ pop {r4-r5, pc}
+
+ thumb_func_start FUN_020834D0
+FUN_020834D0: ; 0x020834D0
+ ldr r3, _020834DC ; =FUN_0202D8D0
+ add r2, r0, #0x0
+ ldr r0, _020834E0 ; =0x020FBED8
+ mov r1, #0x10
+ bx r3
+ nop
+_020834DC: .word FUN_0202D8D0
+_020834E0: .word 0x020FBED8
+
+ thumb_func_start FUN_020834E4
+FUN_020834E4: ; 0x020834E4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r0, #0x1
+ lsl r0, r0, #0xa
+ add r4, r1, #0x0
+ cmp r2, r0
+ blt _020834F6
+ bl ErrorHandling
+_020834F6:
+ ldr r0, _02083500 ; =0x00000985
+ add r1, r4, r0
+ lsl r0, r5, #0xa
+ add r0, r1, r0
+ pop {r3-r5, pc}
+ .balign 4
+_02083500: .word 0x00000985
+
+ thumb_func_start FUN_02083504
+FUN_02083504: ; 0x02083504
+ mov r0, #0xa
+ bx lr
+
+ thumb_func_start FUN_02083508
+FUN_02083508: ; 0x02083508
+ mov r0, #0x8
+ bx lr
+
+ thumb_func_start FUN_0208350C
+FUN_0208350C: ; 0x0208350C
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02083510
+FUN_02083510: ; 0x02083510
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ mov r0, #0x17
+ lsl r0, r0, #0x4
+ add r6, r1, #0x0
+ ldrb r1, [r3, r0]
+ str r2, [sp, #0x0]
+ cmp r1, #0x0
+ bne _0208352C
+ sub r0, r0, #0x4
+ ldr r1, [r3, r0]
+ ldr r0, _02083590 ; =0x000004FC
+ add r4, r1, r0
+ b _0208355E
+_0208352C:
+ cmp r1, #0x1
+ bne _0208353A
+ sub r0, r0, #0x4
+ ldr r1, [r3, r0]
+ ldr r0, _02083594 ; =0x00001158
+ add r4, r1, r0
+ b _0208355E
+_0208353A:
+ cmp r1, #0x2
+ bne _0208354A
+ sub r0, r0, #0x4
+ ldr r1, [r3, r0]
+ mov r0, #0xc3
+ lsl r0, r0, #0x4
+ add r4, r1, r0
+ b _0208355E
+_0208354A:
+ cmp r1, #0x3
+ bne _02083558
+ sub r0, r0, #0x4
+ ldr r1, [r3, r0]
+ ldr r0, _02083598 ; =0x0000085C
+ add r4, r1, r0
+ b _0208355E
+_02083558:
+ bl ErrorHandling
+ pop {r3-r7, pc}
+_0208355E:
+ mov r0, #0x2
+ lsl r0, r0, #0x8
+ cmp r6, r0
+ ble _0208356A
+ bl ErrorHandling
+_0208356A:
+ ldr r0, _0208359C ; =0x00000A11
+ add r7, r4, r0
+ ldrb r0, [r7, r5]
+ cmp r0, #0x0
+ beq _02083578
+ bl ErrorHandling
+_02083578:
+ mov r1, #0x21
+ lsl r1, r1, #0x4
+ add r2, r4, r1
+ lsl r1, r5, #0x9
+ add r1, r2, r1
+ ldr r0, [sp, #0x0]
+ add r2, r6, #0x0
+ blx MI_CpuCopy8
+ mov r0, #0x1
+ strb r0, [r7, r5]
+ pop {r3-r7, pc}
+ .balign 4
+_02083590: .word 0x000004FC
+_02083594: .word 0x00001158
+_02083598: .word 0x0000085C
+_0208359C: .word 0x00000A11
+
+ thumb_func_start FUN_020835A0
+FUN_020835A0: ; 0x020835A0
+ mov r0, #0x5b
+ lsl r0, r0, #0x2
+ ldr r0, [r3, r0]
+ ldr r3, _020835AC ; =0x0223D1CD
+ add r1, r2, #0x0
+ bx r3
+ .balign 4
+_020835AC: .word 0x0223D1CD
+
+ thumb_func_start FUN_020835B0
+FUN_020835B0: ; 0x020835B0
+ push {r3-r6, lr}
+ sub sp, #0x14
+ add r5, r1, #0x0
+ mov r1, #0x61
+ add r6, r0, #0x0
+ add r4, r3, #0x0
+ lsl r1, r1, #0x2
+ add r0, r2, #0x0
+ add r2, r4, r1
+ lsl r1, r6, #0x8
+ add r1, r2, r1
+ add r2, r5, #0x0
+ blx MI_CpuCopy8
+ ldr r2, _02083628 ; =0x00000584
+ ldrb r0, [r4, r2]
+ add r0, r0, #0x1
+ strb r0, [r4, r2]
+ ldr r0, _0208362C ; =0x00000127
+ ldrb r2, [r4, r2]
+ ldrb r1, [r4, r0]
+ cmp r2, r1
+ blo _02083622
+ mov r3, #0x0
+ cmp r1, #0x0
+ ble _020835FE
+ add r0, #0x5d
+ add r5, r4, r0
+ mov r0, #0x1
+ lsl r0, r0, #0x8
+ add r2, r0, #0x0
+ add r6, sp, #0x4
+ add r2, #0x27
+_020835F2:
+ stmia r6!, {r5}
+ ldrb r1, [r4, r2]
+ add r3, r3, #0x1
+ add r5, r5, r0
+ cmp r3, r1
+ blt _020835F2
+_020835FE:
+ add r0, sp, #0x4
+ add r2, sp, #0x0
+ bl FUN_02083660
+ mov r1, #0x47
+ lsl r1, r1, #0x2
+ strb r0, [r4, r1]
+ add r0, sp, #0x0
+ ldrb r2, [r0, #0x0]
+ add r0, r1, #0x1
+ strb r2, [r4, r0]
+ ldrb r0, [r4, r1]
+ lsl r2, r0, #0x2
+ add r0, sp, #0x4
+ ldr r0, [r0, r2]
+ ldrb r2, [r0, #0x2]
+ add r0, r1, #0x6
+ strb r2, [r4, r0]
+_02083622:
+ add sp, #0x14
+ pop {r3-r6, pc}
+ nop
+_02083628: .word 0x00000584
+_0208362C: .word 0x00000127
+
+ thumb_func_start FUN_02083630
+FUN_02083630: ; 0x02083630
+ push {r3, lr}
+ ldr r1, _0208365C ; =0x00000125
+ add r3, sp, #0x0
+ ldrb r2, [r0, r1]
+ strb r2, [r3, #0x0]
+ sub r2, r1, #0x2
+ ldrb r2, [r0, r2]
+ sub r1, r1, #0x3
+ strb r2, [r3, #0x1]
+ ldrb r0, [r0, r1]
+ add r1, sp, #0x0
+ mov r2, #0x4
+ strb r0, [r3, #0x2]
+ mov r0, #0x1a
+ bl FUN_02030ADC
+ cmp r0, #0x1
+ bne _02083658
+ mov r0, #0x1
+ pop {r3, pc}
+_02083658:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+_0208365C: .word 0x00000125
+
+ thumb_func_start FUN_02083660
+FUN_02083660: ; 0x02083660
+ push {r4-r7}
+ mov r5, #0x0
+ add r4, r5, #0x0
+ cmp r1, #0x0
+ ble _02083684
+ add r6, r0, #0x0
+_0208366C:
+ lsl r3, r5, #0x2
+ ldr r3, [r0, r3]
+ ldr r7, [r6, #0x0]
+ ldrb r3, [r3, #0x0]
+ ldrb r7, [r7, #0x0]
+ cmp r3, r7
+ bhs _0208367C
+ add r5, r4, #0x0
+_0208367C:
+ add r4, r4, #0x1
+ add r6, r6, #0x4
+ cmp r4, r1
+ blt _0208366C
+_02083684:
+ lsl r1, r5, #0x2
+ ldr r0, [r0, r1]
+ ldrb r0, [r0, #0x0]
+ strb r0, [r2, #0x0]
+ add r0, r5, #0x0
+ pop {r4-r7}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02083694
+FUN_02083694: ; 0x02083694
+ push {r3-r5, lr}
+ add r5, r2, #0x0
+ add r4, r3, #0x0
+ bl FUN_020669BC
+ add r2, r0, #0x0
+ ldrb r1, [r5, r2]
+ add r0, r5, #0x0
+ lsl r1, r1, #0x2
+ ldr r1, [r4, r1]
+ blx MI_CpuCopy8
+ ldr r0, _020836B8 ; =0x00000584
+ ldrb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, r0]
+ pop {r3-r5, pc}
+ nop
+_020836B8: .word 0x00000584
+
+ thumb_func_start FUN_020836BC
+FUN_020836BC: ; 0x020836BC
+ push {r3-r7, lr}
+ add r6, r1, #0x0
+ add r7, r2, #0x0
+ bl FUN_020669BC
+ add r4, r0, #0x0
+ mov r0, #0x14
+ add r1, r4, #0x1
+ bl FUN_02016998
+ add r5, r0, #0x0
+ add r0, r7, #0x0
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ blx MI_CpuCopy8
+ mov r0, #0x1b
+ add r1, r5, #0x0
+ add r2, r4, #0x1
+ strb r6, [r5, r4]
+ bl FUN_02030ADC
+ cmp r0, #0x1
+ bne _020836F0
+ mov r4, #0x1
+ b _020836F2
+_020836F0:
+ mov r4, #0x0
+_020836F2:
+ add r0, r5, #0x0
+ bl FUN_02016A18
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_020836FC
+FUN_020836FC: ; 0x020836FC
+ push {r3-r7, lr}
+ sub sp, #0x8
+ str r2, [sp, #0x0]
+ str r3, [sp, #0x4]
+ bl FUN_020669BC
+ mov r7, #0x0
+ ldr r4, [sp, #0x4]
+ add r6, r0, #0x0
+ add r5, r7, #0x0
+_02083710:
+ ldr r0, [sp, #0x0]
+ ldr r1, [r4, #0x0]
+ add r0, r0, r5
+ add r2, r6, #0x0
+ blx MI_CpuCopy8
+ add r7, r7, #0x1
+ add r4, r4, #0x4
+ add r5, r5, r6
+ cmp r7, #0x4
+ blt _02083710
+ ldr r1, _02083738 ; =0x00000584
+ ldr r0, [sp, #0x4]
+ ldrb r0, [r0, r1]
+ add r2, r0, #0x1
+ ldr r0, [sp, #0x4]
+ strb r2, [r0, r1]
+ add sp, #0x8
+ pop {r3-r7, pc}
+ nop
+_02083738: .word 0x00000584
+
+ thumb_func_start FUN_0208373C
+FUN_0208373C: ; 0x0208373C
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r4, r0, #0x0
+ add r5, r1, #0x0
+ bl FUN_020669BC
+ add r6, r0, #0x0
+ lsl r0, r6, #0x2
+ str r0, [sp, #0x0]
+ ldr r0, _02083788 ; =0x00000585
+ mov r7, #0x0
+ add r0, r4, r0
+ str r0, [sp, #0x4]
+ add r4, r7, #0x0
+_02083758:
+ ldr r1, [sp, #0x4]
+ ldr r0, [r5, #0x0]
+ add r1, r1, r4
+ add r2, r6, #0x0
+ blx MI_CpuCopy8
+ add r7, r7, #0x1
+ add r4, r4, r6
+ add r5, r5, #0x4
+ cmp r7, #0x4
+ blt _02083758
+ ldr r1, [sp, #0x4]
+ ldr r2, [sp, #0x0]
+ mov r0, #0x1c
+ bl FUN_02030A78
+ cmp r0, #0x1
+ bne _02083782
+ add sp, #0x8
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02083782:
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+_02083788: .word 0x00000585
+
+ thumb_func_start FUN_0208378C
+FUN_0208378C: ; 0x0208378C
+ push {r3-r5, lr}
+ add r0, r2, #0x0
+ add r2, #0x30
+ ldrb r1, [r2, #0x0]
+ add r4, r3, #0x0
+ add r5, r4, #0x0
+ mov r2, #0x30
+ add r3, r1, #0x0
+ add r5, #0x10
+ mul r3, r2
+ add r1, r5, r3
+ blx MI_CpuCopy8
+ ldr r0, _020837B0 ; =0x00000584
+ ldrb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, r0]
+ pop {r3-r5, pc}
+ .balign 4
+_020837B0: .word 0x00000584
+
+ thumb_func_start FUN_020837B4
+FUN_020837B4: ; 0x020837B4
+ push {r4-r6, lr}
+ add r5, r1, #0x0
+ mov r0, #0x14
+ mov r1, #0x31
+ add r6, r2, #0x0
+ bl FUN_02016998
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ mov r2, #0x30
+ blx MI_CpuCopy8
+ add r0, r4, #0x0
+ add r0, #0x30
+ strb r5, [r0, #0x0]
+ mov r0, #0x1d
+ add r1, r4, #0x0
+ mov r2, #0x31
+ bl FUN_02030ADC
+ cmp r0, #0x1
+ bne _020837E6
+ mov r5, #0x1
+ b _020837E8
+_020837E6:
+ mov r5, #0x0
+_020837E8:
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add r0, r5, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_020837F4
+FUN_020837F4: ; 0x020837F4
+ push {r3-r7, lr}
+ add r5, r3, #0x0
+ add r6, r2, #0x0
+ str r3, [sp, #0x0]
+ mov r4, #0x0
+ add r5, #0xd0
+ mov r7, #0x8
+_02083802:
+ lsl r0, r4, #0x3
+ add r0, r6, r0
+ add r1, r5, #0x0
+ add r2, r7, #0x0
+ blx MI_CpuCopy8
+ add r4, r4, #0x1
+ add r5, #0x8
+ cmp r4, #0x3
+ blt _02083802
+ ldrb r2, [r6, #0x18]
+ ldr r1, _0208382C ; =0x0000011E
+ ldr r0, [sp, #0x0]
+ strb r2, [r0, r1]
+ ldr r1, _02083830 ; =0x00000584
+ ldrb r0, [r0, r1]
+ add r2, r0, #0x1
+ ldr r0, [sp, #0x0]
+ strb r2, [r0, r1]
+ pop {r3-r7, pc}
+ nop
+_0208382C: .word 0x0000011E
+_02083830: .word 0x00000584
+
+ thumb_func_start FUN_02083834
+FUN_02083834: ; 0x02083834
+ push {r3-r7, lr}
+ str r0, [sp, #0x0]
+ mov r0, #0x14
+ mov r1, #0x19
+ add r5, r2, #0x0
+ bl FUN_02016998
+ add r6, r0, #0x0
+ mov r4, #0x0
+ mov r7, #0x8
+_02083848:
+ lsl r1, r4, #0x3
+ add r0, r5, #0x0
+ add r1, r6, r1
+ add r2, r7, #0x0
+ blx MI_CpuCopy8
+ add r4, r4, #0x1
+ add r5, #0x8
+ cmp r4, #0x3
+ blt _02083848
+ ldr r1, _02083884 ; =0x0000011E
+ ldr r0, [sp, #0x0]
+ mov r2, #0x19
+ ldrb r0, [r0, r1]
+ add r1, r6, #0x0
+ strb r0, [r6, #0x18]
+ mov r0, #0x1e
+ bl FUN_02030ADC
+ cmp r0, #0x1
+ bne _02083876
+ mov r4, #0x1
+ b _02083878
+_02083876:
+ mov r4, #0x0
+_02083878:
+ add r0, r6, #0x0
+ bl FUN_02016A18
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+ nop
+_02083884: .word 0x0000011E
+
+ thumb_func_start FUN_02083888
+FUN_02083888: ; 0x02083888
+ push {r3-r7, lr}
+ add r5, r2, #0x0
+ ldrb r0, [r5, #0x0]
+ add r6, r3, #0x0
+ add r4, r6, #0x0
+ add r4, #0xe8
+ lsl r7, r0, #0x2
+ ldr r0, [r4, r7]
+ bl FUN_02021A4C
+ ldr r0, [r4, r7]
+ add r1, r5, #0x4
+ bl FUN_02021E28
+ ldr r0, _020838B0 ; =0x00000584
+ ldrb r1, [r6, r0]
+ add r1, r1, #0x1
+ strb r1, [r6, r0]
+ pop {r3-r7, pc}
+ nop
+_020838B0: .word 0x00000584
+
+ thumb_func_start FUN_020838B4
+FUN_020838B4: ; 0x020838B4
+ push {r3-r5, lr}
+ sub sp, #0x10
+ add r5, r1, #0x0
+ add r0, r2, #0x0
+ add r1, sp, #0x0
+ mov r2, #0x8
+ bl FUN_02021EF0
+ mov r0, #0x14
+ add r1, r0, #0x0
+ bl FUN_02016998
+ add r4, r0, #0x0
+ add r0, sp, #0x0
+ add r1, r4, #0x4
+ mov r2, #0x10
+ blx MI_CpuCopy8
+ strb r5, [r4, #0x0]
+ mov r0, #0x10
+ strb r0, [r4, #0x1]
+ mov r0, #0x0
+ strb r0, [r4, #0x2]
+ strb r0, [r4, #0x3]
+ mov r0, #0x1f
+ add r1, r4, #0x0
+ mov r2, #0x14
+ bl FUN_02030ADC
+ cmp r0, #0x1
+ bne _020838F6
+ mov r5, #0x1
+ b _020838F8
+_020838F6:
+ mov r5, #0x0
+_020838F8:
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add r0, r5, #0x0
+ add sp, #0x10
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02083904
+FUN_02083904: ; 0x02083904
+ push {r3-r5, lr}
+ add r5, r2, #0x0
+ add r4, r3, #0x0
+ bl FUN_02026FE4
+ add r2, r0, #0x0
+ ldrb r1, [r5, r2]
+ add r0, r5, #0x0
+ lsl r1, r1, #0x2
+ add r1, r4, r1
+ add r1, #0xf8
+ ldr r1, [r1, #0x0]
+ blx MI_CpuCopy8
+ ldr r0, _0208392C ; =0x00000584
+ ldrb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, r0]
+ pop {r3-r5, pc}
+ nop
+_0208392C: .word 0x00000584
+
+ thumb_func_start FUN_02083930
+FUN_02083930: ; 0x02083930
+ push {r3-r7, lr}
+ add r6, r1, #0x0
+ add r7, r2, #0x0
+ bl FUN_02026FE4
+ add r4, r0, #0x0
+ mov r0, #0x14
+ add r1, r4, #0x1
+ bl FUN_02016998
+ add r5, r0, #0x0
+ add r0, r7, #0x0
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ blx MI_CpuCopy8
+ mov r0, #0x20
+ add r1, r5, #0x0
+ add r2, r4, #0x1
+ strb r6, [r5, r4]
+ bl FUN_02030ADC
+ cmp r0, #0x1
+ bne _02083964
+ mov r4, #0x1
+ b _02083966
+_02083964:
+ mov r4, #0x0
+_02083966:
+ add r0, r5, #0x0
+ bl FUN_02016A18
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02083970
+FUN_02083970: ; 0x02083970
+ push {r3-r7, lr}
+ sub sp, #0x8
+ str r2, [sp, #0x0]
+ str r3, [sp, #0x4]
+ bl FUN_02026FE4
+ add r6, r0, #0x0
+ mov r0, #0x1
+ lsl r1, r6, #0x2
+ lsl r0, r0, #0xa
+ cmp r1, r0
+ blt _0208398C
+ bl ErrorHandling
+_0208398C:
+ mov r7, #0x0
+ ldr r4, [sp, #0x4]
+ add r5, r7, #0x0
+_02083992:
+ add r1, r4, #0x0
+ ldr r0, [sp, #0x0]
+ add r1, #0xf8
+ ldr r1, [r1, #0x0]
+ add r0, r0, r5
+ add r2, r6, #0x0
+ blx MI_CpuCopy8
+ add r7, r7, #0x1
+ add r4, r4, #0x4
+ add r5, r5, r6
+ cmp r7, #0x4
+ blt _02083992
+ ldr r1, _020839BC ; =0x00000584
+ ldr r0, [sp, #0x4]
+ ldrb r0, [r0, r1]
+ add r2, r0, #0x1
+ ldr r0, [sp, #0x4]
+ strb r2, [r0, r1]
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+_020839BC: .word 0x00000584
+
+ thumb_func_start FUN_020839C0
+FUN_020839C0: ; 0x020839C0
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r4, r0, #0x0
+ add r5, r1, #0x0
+ bl FUN_02026FE4
+ add r6, r0, #0x0
+ mov r1, #0x1
+ lsl r0, r6, #0x2
+ lsl r1, r1, #0xa
+ str r0, [sp, #0x0]
+ cmp r0, r1
+ blt _020839DE
+ bl ErrorHandling
+_020839DE:
+ ldr r0, _02083A18 ; =0x00000585
+ mov r7, #0x0
+ add r0, r4, r0
+ str r0, [sp, #0x4]
+ add r4, r7, #0x0
+_020839E8:
+ ldr r1, [sp, #0x4]
+ ldr r0, [r5, #0x0]
+ add r1, r1, r4
+ add r2, r6, #0x0
+ blx MI_CpuCopy8
+ add r7, r7, #0x1
+ add r4, r4, r6
+ add r5, r5, #0x4
+ cmp r7, #0x4
+ blt _020839E8
+ ldr r1, [sp, #0x4]
+ ldr r2, [sp, #0x0]
+ mov r0, #0x21
+ bl FUN_02030A78
+ cmp r0, #0x1
+ bne _02083A12
+ add sp, #0x8
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02083A12:
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+_02083A18: .word 0x00000585
+
+ thumb_func_start FUN_02083A1C
+FUN_02083A1C: ; 0x02083A1C
+ push {r4, lr}
+ add r4, r1, #0x0
+ ldr r1, _02083A30 ; =0x000019A0
+ add r0, r2, #0x0
+ add r1, r3, r1
+ add r2, r4, #0x0
+ blx MI_CpuCopy8
+ pop {r4, pc}
+ nop
+_02083A30: .word 0x000019A0
+
+ thumb_func_start FUN_02083A34
+FUN_02083A34: ; 0x02083A34
+ push {r3, lr}
+ add r3, r0, #0x0
+ ldrb r0, [r3, #0x16]
+ cmp r0, #0x0
+ bne _02083A44
+ str r1, [r3, #0x0]
+ mov r0, #0x1
+ pop {r3, pc}
+_02083A44:
+ ldrb r2, [r3, #0x14]
+ ldrb r0, [r3, #0x15]
+ cmp r2, r0
+ beq _02083A50
+ mov r0, #0x0
+ pop {r3, pc}
+_02083A50:
+ str r1, [r3, #0x8]
+ add r3, #0x8
+ mov r0, #0x22
+ add r1, r3, #0x0
+ mov r2, #0x8
+ bl FUN_02030ADC
+ cmp r0, #0x1
+ bne _02083A66
+ mov r0, #0x1
+ pop {r3, pc}
+_02083A66:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02083A6C
+FUN_02083A6C: ; 0x02083A6C
+ ldrb r2, [r2, #0x4]
+ add r1, r3, r0
+ ldr r0, _02083A78 ; =0x000019B0
+ strb r2, [r1, r0]
+ bx lr
+ nop
+_02083A78: .word 0x000019B0
+
+ thumb_func_start FUN_02083A7C
+FUN_02083A7C: ; 0x02083A7C
+ push {r3, lr}
+ add r2, r0, #0x0
+ ldrb r0, [r2, #0x16]
+ cmp r0, #0x0
+ bne _02083A8C
+ strb r1, [r2, #0x10]
+ mov r0, #0x1
+ pop {r3, pc}
+_02083A8C:
+ strb r1, [r2, #0xc]
+ add r2, #0x8
+ add r1, r2, #0x0
+ mov r0, #0x23
+ mov r2, #0x8
+ bl FUN_02030ADC
+ cmp r0, #0x1
+ bne _02083AA2
+ mov r0, #0x1
+ pop {r3, pc}
+_02083AA2:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02083AA8
+FUN_02083AA8: ; 0x02083AA8
+ push {r3-r5, lr}
+ add r5, r2, #0x0
+ add r4, r3, #0x0
+ bl FUN_02029EC4
+ add r2, r0, #0x0
+ ldrb r1, [r5, r2]
+ add r0, r5, #0x0
+ lsl r1, r1, #0x2
+ add r3, r4, r1
+ mov r1, #0x57
+ lsl r1, r1, #0x2
+ ldr r1, [r3, r1]
+ blx MI_CpuCopy8
+ ldr r0, _02083AD0 ; =0x00000584
+ ldrb r1, [r4, r0]
+ add r1, r1, #0x1
+ strb r1, [r4, r0]
+ pop {r3-r5, pc}
+ .balign 4
+_02083AD0: .word 0x00000584
+
+ thumb_func_start FUN_02083AD4
+FUN_02083AD4: ; 0x02083AD4
+ push {r3-r7, lr}
+ add r4, r0, #0x0
+ add r7, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_02029EC4
+ add r5, r0, #0x0
+ ldr r0, _02083B0C ; =0x00000585
+ add r4, r4, r0
+ cmp r6, #0x0
+ beq _02083AF4
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ add r2, r5, #0x0
+ blx MI_CpuCopy8
+_02083AF4:
+ mov r0, #0x24
+ add r1, r4, #0x0
+ add r2, r5, #0x1
+ strb r7, [r4, r5]
+ bl FUN_02030A78
+ cmp r0, #0x1
+ bne _02083B08
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02083B08:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+_02083B0C: .word 0x00000585
+
+ thumb_func_start FUN_02083B10
+FUN_02083B10: ; 0x02083B10
+ push {r3-r6}
+ ldrb r1, [r2, #0x6]
+ ldrb r4, [r2, #0x0]
+ mov r5, #0x42
+ add r0, r3, r1
+ lsl r5, r5, #0x2
+ strb r4, [r0, r5]
+ ldrb r6, [r2, #0x1]
+ add r4, r5, #0x4
+ strb r6, [r0, r4]
+ add r4, r5, #0x0
+ ldrb r6, [r2, #0x2]
+ add r4, #0x8
+ add r5, #0xc
+ strb r6, [r0, r4]
+ lsl r0, r1, #0x1
+ ldrh r2, [r2, #0x4]
+ add r0, r3, r0
+ strh r2, [r0, r5]
+ ldr r0, _02083B44 ; =0x00000584
+ ldrb r1, [r3, r0]
+ add r1, r1, #0x1
+ strb r1, [r3, r0]
+ pop {r3-r6}
+ bx lr
+ nop
+_02083B44: .word 0x00000584
+
+ thumb_func_start FUN_02083B48
+FUN_02083B48: ; 0x02083B48
+ push {r4-r6, lr}
+ add r5, r1, #0x0
+ mov r0, #0x14
+ mov r1, #0x7
+ add r6, r2, #0x0
+ bl FUN_02016998
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ mov r2, #0x6
+ blx MI_CpuCopy8
+ mov r0, #0x25
+ add r1, r4, #0x0
+ mov r2, #0x7
+ strb r5, [r4, #0x6]
+ bl FUN_02030ADC
+ cmp r0, #0x1
+ bne _02083B76
+ mov r5, #0x1
+ b _02083B78
+_02083B76:
+ mov r5, #0x0
+_02083B78:
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add r0, r5, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02083B84
+FUN_02083B84: ; 0x02083B84
+ ldr r3, _02083B90 ; =FUN_0202D8D0
+ add r2, r0, #0x0
+ ldr r0, _02083B94 ; =0x020FBF98
+ mov r1, #0xb
+ bx r3
+ nop
+_02083B90: .word FUN_0202D8D0
+_02083B94: .word 0x020FBF98
+
+ thumb_func_start FUN_02083B98
+FUN_02083B98: ; 0x02083B98
+ cmp r0, #0xc
+ bne _02083BA0
+ mov r0, #0xc
+ bx lr
+_02083BA0:
+ cmp r0, #0x6
+ bhs _02083BA8
+ add r0, r0, #0x6
+ bx lr
+_02083BA8:
+ sub r0, r0, #0x6
+ bx lr
+
+ thumb_func_start FUN_02083BAC
+FUN_02083BAC: ; 0x02083BAC
+ push {r4-r6, lr}
+ add r3, #0x84
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ ldr r4, [r3, #0x0]
+ bl FUN_02031190
+ cmp r5, r0
+ beq _02083C1A
+ ldr r0, _02083C1C ; =0x0000221C
+ mov r2, #0x59
+ ldr r0, [r4, r0]
+ add r1, r6, #0x0
+ lsl r2, r2, #0x4
+ blx FUN_020DF438
+ ldr r0, [r4, #0x58]
+ add r0, r0, #0x1
+ str r0, [r4, #0x58]
+ bl FUN_0206B8A4
+ mov r1, #0x59
+ ldr r2, [r4, #0x58]
+ lsl r1, r1, #0x4
+ mul r1, r2
+ cmp r1, r0
+ blt _02083C06
+ bl FUN_02031190
+ cmp r0, #0x1
+ bne _02083BF6
+ add r0, r4, #0x0
+ mov r1, #0x1b
+ mov r2, #0x0
+ bl FUN_0222F440
+ b _02083C14
+_02083BF6:
+ bl FUN_02031190
+ ldr r1, _02083C20 ; =0x00002218
+ ldr r2, [r4, #0x50]
+ ldr r1, [r4, r1]
+ bl FUN_0222F480
+ b _02083C14
+_02083C06:
+ bl FUN_02031190
+ ldr r1, _02083C20 ; =0x00002218
+ ldr r2, [r4, #0x50]
+ ldr r1, [r4, r1]
+ bl FUN_0222F480
+_02083C14:
+ ldr r0, [r4, #0x50]
+ add r0, r0, #0x1
+ str r0, [r4, #0x50]
+_02083C1A:
+ pop {r4-r6, pc}
+ .balign 4
+_02083C1C: .word 0x0000221C
+_02083C20: .word 0x00002218
+
+ thumb_func_start FUN_02083C24
+FUN_02083C24: ; 0x02083C24
+ push {r4-r6, lr}
+ add r3, #0x84
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ ldr r4, [r3, #0x0]
+ bl FUN_02031190
+ cmp r5, r0
+ beq _02083C40
+ ldrb r0, [r6, #0x0]
+ bl FUN_02083B98
+ add r4, #0x8c
+ str r0, [r4, #0x0]
+_02083C40:
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02083C44
+FUN_02083C44: ; 0x02083C44
+ add r3, #0x84
+ ldrb r2, [r2, #0x0]
+ ldr r1, [r3, #0x0]
+ lsl r0, r0, #0x2
+ add r0, r1, r0
+ str r2, [r0, #0x60]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02083C54
+FUN_02083C54: ; 0x02083C54
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02083C58
+FUN_02083C58: ; 0x02083C58
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02083C5C
+FUN_02083C5C: ; 0x02083C5C
+ add r3, #0x84
+ ldr r0, [r3, #0x0]
+ mov r1, #0x2
+ str r1, [r0, #0x54]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02083C68
+FUN_02083C68: ; 0x02083C68
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02083C6C
+FUN_02083C6C: ; 0x02083C6C
+ add r3, #0x84
+ mov r0, #0x8b
+ ldrb r2, [r2, #0x0]
+ ldr r1, [r3, #0x0]
+ lsl r0, r0, #0x6
+ str r2, [r1, r0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02083C7C
+FUN_02083C7C: ; 0x02083C7C
+ push {r4-r6, lr}
+ add r6, r0, #0x0
+ ldr r0, [r3, #0xc]
+ add r5, r2, #0x0
+ bl FUN_0202A918
+ add r4, r0, #0x0
+ bl FUN_02031190
+ cmp r6, r0
+ beq _02083CA8
+ mov r2, #0x0
+_02083C94:
+ ldrb r1, [r5, r2]
+ cmp r1, #0x0
+ beq _02083CA2
+ ldrb r0, [r4, r2]
+ cmp r0, r1
+ beq _02083CA2
+ strb r1, [r4, r2]
+_02083CA2:
+ add r2, r2, #0x1
+ cmp r2, #0xe
+ blt _02083C94
+_02083CA8:
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02083CAC
+FUN_02083CAC: ; 0x02083CAC
+ push {r4-r6, lr}
+ add r3, #0x84
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ ldr r4, [r3, #0x0]
+ bl FUN_02031190
+ cmp r5, r0
+ beq _02083CD0
+ ldr r0, _02083CD4 ; =0x00002224
+ add r1, r6, #0x0
+ ldr r0, [r4, r0]
+ mov r2, #0x1
+ mov r3, #0x1a
+ bl FUN_02025520
+ mov r0, #0x3
+ str r0, [r4, #0x54]
+_02083CD0:
+ pop {r4-r6, pc}
+ nop
+_02083CD4: .word 0x00002224
+
+ thumb_func_start FUN_02083CD8
+FUN_02083CD8: ; 0x02083CD8
+ push {r4-r6, lr}
+ add r3, #0x84
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ ldr r4, [r3, #0x0]
+ bl FUN_02031190
+ cmp r5, r0
+ beq _02083D0A
+ ldr r1, _02083D0C ; =0x00002E14
+ mov r2, #0xfb
+ add r3, r4, r1
+ lsl r2, r2, #0x2
+ add r1, r5, #0x0
+ mul r1, r2
+ add r0, r6, #0x0
+ add r1, r3, r1
+ sub r2, r2, #0x4
+ blx MIi_CpuCopyFast
+ mov r0, #0x4
+ str r0, [r4, #0x54]
+ mov r0, #0x0
+ bl FUN_02031400
+_02083D0A:
+ pop {r4-r6, pc}
+ .balign 4
+_02083D0C: .word 0x00002E14
+
+ thumb_func_start FUN_02083D10
+FUN_02083D10: ; 0x02083D10
+ add r0, #0x84
+ str r1, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02083D18
+FUN_02083D18: ; 0x02083D18
+ mov r0, #0xfb
+ lsl r0, r0, #0x2
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02083D20
+FUN_02083D20: ; 0x02083D20
+ mov r0, #0xe
+ bx lr
+
+ thumb_func_start FUN_02083D24
+FUN_02083D24: ; 0x02083D24
+ mov r0, #0x88
+ bx lr
+
+ thumb_func_start FUN_02083D28
+FUN_02083D28: ; 0x02083D28
+ mov r0, #0x59
+ lsl r0, r0, #0x4
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02083D30
+FUN_02083D30: ; 0x02083D30
+ add r1, #0x84
+ ldr r2, [r1, #0x0]
+ ldr r1, _02083D44 ; =0x000022F4
+ add r2, r2, r1
+ mov r1, #0x59
+ lsl r1, r1, #0x4
+ mul r1, r0
+ add r0, r2, r1
+ bx lr
+ nop
+_02083D44: .word 0x000022F4
+
+ thumb_func_start FUN_02083D48
+FUN_02083D48: ; 0x02083D48
+ ldr r3, _02083D54 ; =FUN_0202D8D0
+ add r2, r0, #0x0
+ ldr r0, _02083D58 ; =0x020FC01C
+ mov r1, #0x6c
+ bx r3
+ nop
+_02083D54: .word FUN_0202D8D0
+_02083D58: .word 0x020FC01C
+
+ thumb_func_start FUN_02083D5C
+FUN_02083D5C: ; 0x02083D5C
+ push {r3-r5, lr}
+ add r5, r2, #0x0
+ add r4, r3, #0x0
+ bl FUN_02031190
+ cmp r0, #0x0
+ beq _02083DBA
+ mov r3, #0xfb
+ lsl r3, r3, #0x2
+ ldrb r2, [r5, r3]
+ sub r0, r3, #0x4
+ add r1, r2, #0x0
+ mul r1, r0
+ mov r0, #0xe1
+ lsl r0, r0, #0x6
+ cmp r1, r0
+ ldr r2, _02083DE8 ; =0x000043D0
+ ble _02083D90
+ add r2, r4, r2
+ add r1, r2, r1
+ mov r2, #0x19
+ add r0, r5, #0x0
+ lsl r2, r2, #0x4
+ blx MIi_CpuCopyFast
+ b _02083D9C
+_02083D90:
+ add r2, r4, r2
+ add r1, r2, r1
+ add r0, r5, #0x0
+ sub r2, r3, #0x4
+ blx MIi_CpuCopyFast
+_02083D9C:
+ mov r1, #0xb5
+ ldr r0, _02083DE8 ; =0x000043D0
+ lsl r1, r1, #0x2
+ mov r2, #0xe1
+ ldr r1, [r4, r1]
+ add r0, r4, r0
+ lsl r2, r2, #0x6
+ blx MIi_CpuCopyFast
+ mov r0, #0xb2
+ lsl r0, r0, #0x2
+ add r0, r4, r0
+ bl FUN_020191D0
+ pop {r3-r5, pc}
+_02083DBA:
+ ldr r1, _02083DEC ; =0x000043CC
+ mov r0, #0xfa
+ ldr r2, [r4, r1]
+ lsl r0, r0, #0x2
+ add r3, r2, #0x0
+ mul r3, r0
+ mov r0, #0xe1
+ lsl r0, r0, #0x6
+ cmp r3, r0
+ bge _02083DDC
+ add r0, r2, #0x1
+ str r0, [r4, r1]
+ ldr r1, [r4, r1]
+ add r0, r4, #0x0
+ bl FUN_0208402C
+ pop {r3-r5, pc}
+_02083DDC:
+ mov r1, #0x0
+ mov r0, #0x7c
+ add r2, r1, #0x0
+ bl FUN_02030BC4
+ pop {r3-r5, pc}
+ .balign 4
+_02083DE8: .word 0x000043D0
+_02083DEC: .word 0x000043CC
+
+ thumb_func_start FUN_02083DF0
+FUN_02083DF0: ; 0x02083DF0
+ push {r3-r4}
+ cmp r0, #0x0
+ beq _02083E0E
+ add r4, r0, #0x0
+ mov r1, #0xa
+ mul r4, r1
+ ldr r0, _02083E14 ; =0x000093BD
+ add r3, r3, r4
+ add r3, r3, r0
+_02083E02:
+ ldrb r0, [r2, #0x0]
+ add r2, r2, #0x1
+ strb r0, [r3, #0x0]
+ add r3, r3, #0x1
+ sub r1, r1, #0x1
+ bne _02083E02
+_02083E0E:
+ pop {r3-r4}
+ bx lr
+ nop
+_02083E14: .word 0x000093BD
+
+ thumb_func_start FUN_02083E18
+FUN_02083E18: ; 0x02083E18
+ push {r4-r7}
+ cmp r3, #0x0
+ beq _02083E42
+ cmp r0, #0x0
+ bne _02083E42
+ ldr r0, _02083E48 ; =0x00004382
+ mov r7, #0x0
+_02083E26:
+ add r6, r2, #0x0
+ add r5, r3, r0
+ mov r4, #0xa
+_02083E2C:
+ ldrb r1, [r6, #0x0]
+ add r6, r6, #0x1
+ strb r1, [r5, #0x0]
+ add r5, r5, #0x1
+ sub r4, r4, #0x1
+ bne _02083E2C
+ add r7, r7, #0x1
+ add r2, #0xa
+ add r3, #0xa
+ cmp r7, #0x5
+ blt _02083E26
+_02083E42:
+ pop {r4-r7}
+ bx lr
+ nop
+_02083E48: .word 0x00004382
+
+ thumb_func_start FUN_02083E4C
+FUN_02083E4C: ; 0x02083E4C
+ push {r4, lr}
+ add r4, r3, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x3
+ mov r2, #0x0
+ bl FUN_021D8B64
+ ldr r1, _02083E8C ; =0x000043D0
+ mov r2, #0xe1
+ mov r0, #0x0
+ add r1, r4, r1
+ lsl r2, r2, #0x6
+ blx MIi_CpuClearFast
+ bl FUN_02031190
+ cmp r0, #0x0
+ bne _02083E8A
+ bl FUN_02030F20
+ mov r1, #0xc6
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ bl FUN_0202CB8C
+ mov r1, #0xc7
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ ldr r0, _02083E90 ; =0x000093F4
+ mov r1, #0x1
+ str r1, [r4, r0]
+_02083E8A:
+ pop {r4, pc}
+ .balign 4
+_02083E8C: .word 0x000043D0
+_02083E90: .word 0x000093F4
+
+ thumb_func_start FUN_02083E94
+FUN_02083E94: ; 0x02083E94
+ push {r3-r6, lr}
+ sub sp, #0x4
+ add r6, r0, #0x0
+ add r5, r2, #0x0
+ add r4, r3, #0x0
+ cmp r6, #0x0
+ beq _02083F2E
+ bl FUN_02031190
+ cmp r0, #0x0
+ bne _02083F78
+ ldrb r0, [r5, #0x0]
+ add r1, sp, #0x0
+ strb r0, [r1, #0x0]
+ ldrb r0, [r5, #0x1]
+ strb r0, [r1, #0x1]
+ ldrb r0, [r5, #0x2]
+ strb r0, [r1, #0x2]
+ ldrb r0, [r5, #0x3]
+ strb r0, [r1, #0x3]
+ mov r0, #0xc6
+ strb r6, [r1, #0x0]
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ strb r0, [r1, #0x1]
+ ldrb r0, [r5, #0x2]
+ cmp r0, #0x0
+ beq _02083ED0
+ cmp r0, #0x1
+ b _02083F20
+_02083ED0:
+ bl FUN_02030F20
+ mov r1, #0xc6
+ lsl r1, r1, #0x2
+ ldr r1, [r4, r1]
+ cmp r1, r0
+ bne _02083EFE
+ bl FUN_021D917C
+ mov r1, #0xc6
+ lsl r1, r1, #0x2
+ ldr r1, [r4, r1]
+ cmp r1, r0
+ bne _02083EFE
+ bl FUN_0202CB8C
+ blx FUN_020DDC5C
+ mov r1, #0xc6
+ lsl r1, r1, #0x2
+ ldr r1, [r4, r1]
+ cmp r1, r0
+ beq _02083F06
+_02083EFE:
+ mov r1, #0x0
+ add r0, sp, #0x0
+ strb r1, [r0, #0x3]
+ b _02083F20
+_02083F06:
+ ldr r0, _02083F7C ; =0x000093B4
+ mov r1, #0x1
+ add r2, r1, #0x0
+ ldr r3, [r4, r0]
+ lsl r2, r6
+ orr r2, r3
+ str r2, [r4, r0]
+ add r0, sp, #0x0
+ strb r1, [r0, #0x3]
+ bl FUN_02030F20
+ bl FUN_02032B6C
+_02083F20:
+ mov r0, #0x7e
+ add r1, sp, #0x0
+ mov r2, #0x4
+ bl FUN_02030BC4
+ add sp, #0x4
+ pop {r3-r6, pc}
+_02083F2E:
+ ldrb r0, [r5, #0x2]
+ cmp r0, #0x0
+ beq _02083F3C
+ cmp r0, #0x1
+ beq _02083F6E
+ add sp, #0x4
+ pop {r3-r6, pc}
+_02083F3C:
+ ldrb r6, [r5, #0x0]
+ bl FUN_02031190
+ cmp r6, r0
+ bne _02083F78
+ ldrb r0, [r5, #0x3]
+ cmp r0, #0x0
+ bne _02083F5A
+ add r0, r4, #0x0
+ mov r1, #0x9
+ add r2, r6, #0x0
+ bl FUN_021D8B64
+ add sp, #0x4
+ pop {r3-r6, pc}
+_02083F5A:
+ ldrb r1, [r5, #0x1]
+ ldr r0, _02083F80 ; =0x000093B8
+ strh r1, [r4, r0]
+ ldrb r2, [r5, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0x8
+ bl FUN_021D8B64
+ add sp, #0x4
+ pop {r3-r6, pc}
+_02083F6E:
+ ldrb r2, [r5, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0x15
+ bl FUN_021D8B64
+_02083F78:
+ add sp, #0x4
+ pop {r3-r6, pc}
+ .balign 4
+_02083F7C: .word 0x000093B4
+_02083F80: .word 0x000093B8
+
+ thumb_func_start FUN_02083F84
+FUN_02083F84: ; 0x02083F84
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02083F88
+FUN_02083F88: ; 0x02083F88
+ push {r4, lr}
+ ldrb r2, [r2, #0x0]
+ add r4, r3, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_021D8B64
+ bl FUN_02031190
+ cmp r0, #0x0
+ bne _02083FB6
+ mov r0, #0x3
+ lsl r0, r0, #0x8
+ ldr r0, [r4, r0]
+ cmp r0, #0x1
+ bne _02083FB6
+ ldr r1, _02083FB8 ; =0x000043CC
+ mov r0, #0x0
+ str r0, [r4, r1]
+ ldr r1, [r4, r1]
+ add r0, r4, #0x0
+ bl FUN_0208402C
+_02083FB6:
+ pop {r4, pc}
+ .balign 4
+_02083FB8: .word 0x000043CC
+
+ thumb_func_start FUN_02083FBC
+FUN_02083FBC: ; 0x02083FBC
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02083FC0
+FUN_02083FC0: ; 0x02083FC0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02083FC4
+FUN_02083FC4: ; 0x02083FC4
+ push {r4, lr}
+ add r4, r3, #0x0
+ bl FUN_02031190
+ cmp r0, #0x0
+ beq _02083FDA
+ add r0, r4, #0x0
+ mov r1, #0xf
+ mov r2, #0x0
+ bl FUN_021D8B64
+_02083FDA:
+ pop {r4, pc}
+
+ thumb_func_start FUN_02083FDC
+FUN_02083FDC: ; 0x02083FDC
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r3, #0x0
+ bl FUN_02031190
+ cmp r0, #0x0
+ beq _02083FEE
+ bl ErrorHandling
+_02083FEE:
+ bl FUN_02031190
+ cmp r0, #0x0
+ bne _02084012
+ ldr r0, _0208401C ; =0x000093FC
+ ldr r1, [r4, r0]
+ cmp r1, #0x0
+ beq _0208400E
+ add r0, sp, #0x0
+ strb r5, [r0, #0x0]
+ mov r0, #0x7b
+ add r1, sp, #0x0
+ mov r2, #0x1
+ bl FUN_02030BC4
+ b _02084012
+_0208400E:
+ mov r1, #0x1
+ str r1, [r4, r0]
+_02084012:
+ mov r0, #0x0
+ mov r1, #0x1
+ bl FUN_020334E8
+ pop {r3-r5, pc}
+ .balign 4
+_0208401C: .word 0x000093FC
+
+ thumb_func_start FUN_02084020
+FUN_02084020: ; 0x02084020
+ ldr r0, _02084028 ; =0x000093F4
+ mov r1, #0x1
+ str r1, [r3, r0]
+ bx lr
+ .balign 4
+_02084028: .word 0x000093F4
+
+ thumb_func_start FUN_0208402C
+FUN_0208402C: ; 0x0208402C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r0, #0xb5
+ mov r2, #0xfa
+ add r4, r1, #0x0
+ lsl r0, r0, #0x2
+ ldr r1, [r5, r0]
+ lsl r2, r2, #0x2
+ add r0, r4, #0x0
+ mul r0, r2
+ add r0, r1, r0
+ ldr r1, _02084078 ; =0x00007C10
+ add r1, r5, r1
+ blx MIi_CpuCopyFast
+ ldr r0, _02084078 ; =0x00007C10
+ mov r2, #0x0
+ add r1, r2, #0x0
+ add r3, r5, r0
+_02084052:
+ ldr r0, [r3, #0x0]
+ add r1, r1, #0x1
+ eor r2, r0
+ add r3, r3, #0x4
+ cmp r1, #0xfa
+ blt _02084052
+ ldr r0, _0208407C ; =0x00007FF8
+ ldr r1, _02084078 ; =0x00007C10
+ str r2, [r5, r0]
+ add r0, r0, #0x4
+ mov r2, #0x3f
+ strb r4, [r5, r0]
+ mov r0, #0x76
+ add r1, r5, r1
+ lsl r2, r2, #0x4
+ bl FUN_02030B3C
+ pop {r3-r5, pc}
+ nop
+_02084078: .word 0x00007C10
+_0208407C: .word 0x00007FF8
+
+ thumb_func_start FUN_02084080
+FUN_02084080: ; 0x02084080
+ mov r2, #0x2
+ lsl r2, r2, #0xe
+ add r2, r1, r2
+ mov r1, #0x3f
+ lsl r1, r1, #0x4
+ mul r1, r0
+ add r0, r2, r1
+ bx lr
+
+ thumb_func_start FUN_02084090
+FUN_02084090: ; 0x02084090
+ mov r0, #0x4
+ bx lr
+
+ thumb_func_start FUN_02084094
+FUN_02084094: ; 0x02084094
+ mov r0, #0x4
+ bx lr
+
+ thumb_func_start FUN_02084098
+FUN_02084098: ; 0x02084098
+ ldr r3, _020840A4 ; =FUN_0202D8D0
+ add r2, r0, #0x0
+ ldr r0, _020840A8 ; =0x020FC52C
+ mov r1, #0x6c
+ bx r3
+ nop
+_020840A4: .word FUN_0202D8D0
+_020840A8: .word 0x020FC52C
+
+ thumb_func_start FUN_020840AC
+FUN_020840AC: ; 0x020840AC
+ ldr r0, _020840B8 ; =0x00004A34
+ ldr r1, [r3, r0]
+ add r1, r1, #0x1
+ str r1, [r3, r0]
+ bx lr
+ nop
+_020840B8: .word 0x00004A34
+
+ thumb_func_start FUN_020840BC
+FUN_020840BC: ; 0x020840BC
+ cmp r0, #0x0
+ bne _020840C6
+ ldrb r1, [r2, #0x0]
+ ldr r0, _020840C8 ; =0x00004A3C
+ str r1, [r3, r0]
+_020840C6:
+ bx lr
+ .balign 4
+_020840C8: .word 0x00004A3C
+
+ thumb_func_start FUN_020840CC
+FUN_020840CC: ; 0x020840CC
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, _0208410C ; =0x00004A34
+ add r4, r3, #0x0
+ mov r1, #0x0
+ str r1, [r4, r0]
+ mov r1, #0x1
+ add r0, #0xc
+ strb r1, [r4, r0]
+ bl FUN_02031190
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02084270
+ add r0, r4, #0x0
+ bl FUN_021D844C
+ lsl r2, r5, #0x18
+ add r0, r4, #0x0
+ mov r1, #0x19
+ lsr r2, r2, #0x18
+ bl FUN_021D88E4
+ mov r0, #0x1
+ add r1, r0, #0x0
+ bl FUN_020334E8
+ ldr r0, _02084110 ; =0x00000658
+ bl FUN_020054C8
+ pop {r3-r5, pc}
+ .balign 4
+_0208410C: .word 0x00004A34
+_02084110: .word 0x00000658
+
+ thumb_func_start FUN_02084114
+FUN_02084114: ; 0x02084114
+ add r0, r3, #0x0
+ ldr r3, _02084120 ; =FUN_021D88E4
+ mov r1, #0x2
+ mov r2, #0x0
+ bx r3
+ nop
+_02084120: .word FUN_021D88E4 + 1
+
+ thumb_func_start FUN_02084124
+FUN_02084124: ; 0x02084124
+ push {r3-r6, lr}
+ sub sp, #0x4
+ add r6, r0, #0x0
+ add r5, r2, #0x0
+ add r4, r3, #0x0
+ cmp r6, #0x0
+ beq _020841BA
+ bl FUN_02031190
+ cmp r0, #0x0
+ bne _02084204
+ ldrb r0, [r5, #0x0]
+ add r1, sp, #0x0
+ strb r0, [r1, #0x0]
+ ldrb r0, [r5, #0x1]
+ strb r0, [r1, #0x1]
+ ldrb r0, [r5, #0x2]
+ strb r0, [r1, #0x2]
+ ldrb r0, [r5, #0x3]
+ strb r0, [r1, #0x3]
+ ldr r0, _02084208 ; =0x00004A48
+ strb r6, [r1, #0x0]
+ ldr r0, [r4, r0]
+ strb r0, [r1, #0x1]
+ ldrb r0, [r5, #0x2]
+ cmp r0, #0x0
+ beq _0208415E
+ cmp r0, #0x1
+ b _020841AC
+_0208415E:
+ bl FUN_02030F20
+ ldr r1, _02084208 ; =0x00004A48
+ ldr r1, [r4, r1]
+ cmp r1, r0
+ bne _02084186
+ bl FUN_021D8C24
+ ldr r1, _02084208 ; =0x00004A48
+ ldr r1, [r4, r1]
+ cmp r1, r0
+ bne _02084186
+ bl FUN_0202CB8C
+ blx FUN_020DDC5C
+ ldr r1, _02084208 ; =0x00004A48
+ ldr r2, [r4, r1]
+ cmp r2, r0
+ beq _0208418E
+_02084186:
+ mov r1, #0x0
+ add r0, sp, #0x0
+ strb r1, [r0, #0x3]
+ b _020841AC
+_0208418E:
+ add r0, r1, #0x0
+ add r0, #0x8
+ mov r2, #0x1
+ ldr r3, [r4, r0]
+ add r0, r2, #0x0
+ lsl r0, r6
+ orr r0, r3
+ add r1, #0x8
+ str r0, [r4, r1]
+ add r0, sp, #0x0
+ strb r2, [r0, #0x3]
+ bl FUN_02030F20
+ bl FUN_02032B6C
+_020841AC:
+ mov r0, #0x70
+ add r1, sp, #0x0
+ mov r2, #0x4
+ bl FUN_02030ADC
+ add sp, #0x4
+ pop {r3-r6, pc}
+_020841BA:
+ ldrb r0, [r5, #0x2]
+ cmp r0, #0x0
+ beq _020841C8
+ cmp r0, #0x1
+ beq _020841FA
+ add sp, #0x4
+ pop {r3-r6, pc}
+_020841C8:
+ ldrb r6, [r5, #0x0]
+ bl FUN_02031190
+ cmp r6, r0
+ bne _02084204
+ ldrb r0, [r5, #0x3]
+ cmp r0, #0x0
+ bne _020841E6
+ add r0, r4, #0x0
+ mov r1, #0x8
+ add r2, r6, #0x0
+ bl FUN_021D88E4
+ add sp, #0x4
+ pop {r3-r6, pc}
+_020841E6:
+ ldrb r1, [r5, #0x1]
+ ldr r0, _0208420C ; =0x00004A5C
+ strh r1, [r4, r0]
+ ldrb r2, [r5, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0x7
+ bl FUN_021D88E4
+ add sp, #0x4
+ pop {r3-r6, pc}
+_020841FA:
+ ldrb r2, [r5, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0x13
+ bl FUN_021D88E4
+_02084204:
+ add sp, #0x4
+ pop {r3-r6, pc}
+ .balign 4
+_02084208: .word 0x00004A48
+_0208420C: .word 0x00004A5C
+
+ thumb_func_start FUN_02084210
+FUN_02084210: ; 0x02084210
+ push {r4, lr}
+ ldrb r2, [r2, #0x0]
+ add r4, r3, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_021D89CC
+ bl FUN_02031190
+ cmp r0, #0x0
+ bne _0208422E
+ mov r0, #0x3b
+ mov r1, #0x0
+ lsl r0, r0, #0x4
+ str r1, [r4, r0]
+_0208422E:
+ pop {r4, pc}
+
+ thumb_func_start FUN_02084230
+FUN_02084230: ; 0x02084230
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02084234
+FUN_02084234: ; 0x02084234
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02084238
+FUN_02084238: ; 0x02084238
+ push {r4, lr}
+ add r4, r3, #0x0
+ bl FUN_02031190
+ cmp r0, #0x0
+ beq _0208424E
+ add r0, r4, #0x0
+ mov r1, #0xd
+ mov r2, #0x0
+ bl FUN_021D88E4
+_0208424E:
+ pop {r4, pc}
+
+ thumb_func_start FUN_02084250
+FUN_02084250: ; 0x02084250
+ push {r3-r4, lr}
+ sub sp, #0x4
+ add r4, r0, #0x0
+ bl FUN_02031190
+ cmp r0, #0x0
+ bne _0208426C
+ add r0, sp, #0x0
+ strb r4, [r0, #0x0]
+ mov r0, #0x6e
+ add r1, sp, #0x0
+ mov r2, #0x1
+ bl FUN_02030ADC
+_0208426C:
+ add sp, #0x4
+ pop {r3-r4, pc}
+
+ thumb_func_start FUN_02084270
+FUN_02084270: ; 0x02084270
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ mov r0, #0xed
+ mov r3, #0x0
+ lsl r0, r0, #0x2
+ add r5, r4, r0
+ add r2, r3, #0x0
+ sub r0, #0xc6
+_02084280:
+ ldr r1, [r5, #0x0]
+ add r2, r2, #0x1
+ eor r3, r1
+ add r5, r5, #0x4
+ cmp r2, r0
+ blt _02084280
+ ldr r0, _020842AC ; =0x00000F6C
+ str r3, [r4, r0]
+ bl FUN_0201B9EC
+ mov r1, #0xf7
+ lsl r1, r1, #0x4
+ str r0, [r4, r1]
+ mov r1, #0xed
+ lsl r1, r1, #0x2
+ mov r2, #0x2f
+ mov r0, #0x74
+ add r1, r4, r1
+ lsl r2, r2, #0x6
+ bl FUN_02030A78
+ pop {r3-r5, pc}
+ .balign 4
+_020842AC: .word 0x00000F6C
+
+ thumb_func_start FUN_020842B0
+FUN_020842B0: ; 0x020842B0
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_start FUN_020842B4
+FUN_020842B4: ; 0x020842B4
+ mov r0, #0x1
+ bx lr
+
+ thumb_func_start FUN_020842B8
+FUN_020842B8: ; 0x020842B8
+ mov r0, #0x4
+ bx lr
+
+ thumb_func_start FUN_020842BC
+FUN_020842BC: ; 0x020842BC
+ ldr r2, _020842CC ; =0x00000F74
+ add r2, r1, r2
+ mov r1, #0x2f
+ lsl r1, r1, #0x6
+ mul r1, r0
+ add r0, r2, r1
+ bx lr
+ nop
+_020842CC: .word 0x00000F74
+
+ thumb_func_start FUN_020842D0
+FUN_020842D0: ; 0x020842D0
+ ldr r0, _020842D4 ; =0x020FCA3C
+ bx lr
+ .balign 4
+_020842D4: .word 0x020FCA3C
+
+ thumb_func_start FUN_020842D8
+FUN_020842D8: ; 0x020842D8
+ mov r0, #0x9
+ bx lr
+
+ thumb_func_start FUN_020842DC
+FUN_020842DC: ; 0x020842DC
+ push {r3-r7, lr}
+ sub sp, #0x18
+ str r1, [sp, #0x4]
+ add r6, r0, #0x0
+ add r7, r2, #0x0
+ ldr r0, [sp, #0x4]
+ mov r1, #0x0
+ add r2, r3, #0x0
+ bl FUN_0206E710
+ mov r1, #0xe
+ add r4, r0, #0x0
+ bl FUN_0206E7DC
+ cmp r0, #0x1
+ beq _02084308
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x18
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_02084308:
+ add r0, r6, #0x0
+ mov r1, #0x9f
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ mov r1, #0xf
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _02084332
+ mov r0, #0x7
+ tst r0, r5
+ beq _02084332
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x18
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02084332:
+ add r0, r4, #0x0
+ mov r1, #0x10
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _02084350
+ mov r0, #0x88
+ tst r0, r5
+ beq _02084350
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x18
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02084350:
+ add r0, r4, #0x0
+ mov r1, #0x11
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _0208436E
+ mov r0, #0x10
+ tst r0, r5
+ beq _0208436E
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x18
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0208436E:
+ add r0, r4, #0x0
+ mov r1, #0x12
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _0208438C
+ mov r0, #0x20
+ tst r0, r5
+ beq _0208438C
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x18
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0208438C:
+ add r0, r4, #0x0
+ mov r1, #0x13
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _020843AA
+ mov r0, #0x40
+ tst r0, r5
+ beq _020843AA
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x18
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_020843AA:
+ add r0, r6, #0x0
+ mov r1, #0xa2
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x17
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ bne _020843CE
+ add r0, r4, #0x0
+ mov r1, #0x18
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _020843EA
+_020843CE:
+ add r0, r4, #0x0
+ mov r1, #0x19
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ bne _020843EA
+ cmp r5, #0x0
+ bne _02084414
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x18
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_020843EA:
+ add r0, r4, #0x0
+ mov r1, #0x26
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _02084414
+ cmp r5, #0x0
+ beq _02084414
+ add r0, r6, #0x0
+ mov r1, #0xa3
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r5, r0
+ bhs _02084414
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x18
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02084414:
+ add r0, r4, #0x0
+ mov r1, #0x19
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _0208443A
+ add r0, r6, #0x0
+ mov r1, #0xa0
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x64
+ bhs _0208443A
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x18
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0208443A:
+ add r0, r4, #0x0
+ mov r1, #0x1a
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _02084464
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldr r3, [sp, #0x4]
+ add r1, r6, #0x0
+ mov r2, #0x3
+ bl FUN_02069168
+ cmp r0, #0x0
+ beq _02084464
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x18
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02084464:
+ add r0, r4, #0x0
+ mov r1, #0x22
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ bne _0208447C
+ add r0, r4, #0x0
+ mov r1, #0x23
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _020844B2
+_0208447C:
+ add r1, r7, #0x0
+ add r0, r6, #0x0
+ add r1, #0x3e
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x3
+ bhs _020844B2
+ add r1, r7, #0x0
+ add r0, r6, #0x0
+ add r1, #0x36
+ mov r2, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ mov r1, #0x0
+ bl FUN_0206AB30
+ cmp r0, #0x5
+ blo _020844B2
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x18
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_020844B2:
+ add r0, r4, #0x0
+ mov r1, #0x24
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _020844D6
+ add r0, r6, #0x0
+ add r1, r7, #0x0
+ bl FUN_02084DF0
+ cmp r0, #0x1
+ bne _020844D6
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x18
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_020844D6:
+ add r0, r4, #0x0
+ mov r1, #0x25
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _02084502
+ mov r5, #0x0
+_020844E4:
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ bl FUN_02084DF0
+ cmp r0, #0x1
+ bne _020844FC
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x18
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_020844FC:
+ add r5, r5, #0x1
+ cmp r5, #0x4
+ blt _020844E4
+_02084502:
+ add r0, r6, #0x0
+ mov r1, #0xd
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r5, r0, #0x0
+ add r0, r6, #0x0
+ mov r1, #0xe
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0x14]
+ add r0, r6, #0x0
+ mov r1, #0xf
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0x10]
+ add r0, r6, #0x0
+ mov r1, #0x10
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0xc]
+ add r0, r6, #0x0
+ mov r1, #0x11
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0x8]
+ add r0, r6, #0x0
+ mov r1, #0x12
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r7, r0, #0x0
+ add r0, r6, #0x0
+ mov r1, #0x5
+ mov r2, #0x0
+ bl FUN_020671BC
+ mov r1, #0x49
+ lsl r1, r1, #0x2
+ cmp r0, r1
+ beq _020845C6
+ add r0, r4, #0x0
+ mov r1, #0x27
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _020845C6
+ add r0, r4, #0x0
+ mov r1, #0x30
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ ble _0208459C
+ cmp r5, #0x64
+ bge _020845C6
+ ldr r0, [sp, #0x14]
+ add r1, r5, r0
+ ldr r0, [sp, #0x10]
+ add r1, r0, r1
+ ldr r0, [sp, #0xc]
+ add r1, r0, r1
+ ldr r0, [sp, #0x8]
+ add r0, r0, r1
+ add r1, r7, r0
+ ldr r0, _020847F4 ; =0x000001FE
+ cmp r1, r0
+ bge _020845C6
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x18
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0208459C:
+ bge _020845C6
+ cmp r5, #0x0
+ ble _020845AE
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x18
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_020845AE:
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ bl FUN_02085000
+ cmp r0, #0x1
+ bne _020845C6
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x18
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_020845C6:
+ add r0, r4, #0x0
+ mov r1, #0x28
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _02084632
+ add r0, r4, #0x0
+ mov r1, #0x31
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ ble _02084606
+ ldr r0, [sp, #0x14]
+ cmp r0, #0x64
+ bge _02084632
+ add r1, r5, r0
+ ldr r0, [sp, #0x10]
+ add r1, r0, r1
+ ldr r0, [sp, #0xc]
+ add r1, r0, r1
+ ldr r0, [sp, #0x8]
+ add r0, r0, r1
+ add r1, r7, r0
+ ldr r0, _020847F4 ; =0x000001FE
+ cmp r1, r0
+ bge _02084632
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x18
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02084606:
+ bge _02084632
+ ldr r0, [sp, #0x14]
+ cmp r0, #0x0
+ ble _0208461A
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x18
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0208461A:
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ bl FUN_02085000
+ cmp r0, #0x1
+ bne _02084632
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x18
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02084632:
+ add r0, r4, #0x0
+ mov r1, #0x29
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _020846A0
+ add r0, r4, #0x0
+ mov r1, #0x32
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ ble _02084674
+ ldr r0, [sp, #0x10]
+ cmp r0, #0x64
+ bge _020846A0
+ ldr r0, [sp, #0x14]
+ add r1, r5, r0
+ ldr r0, [sp, #0x10]
+ add r1, r0, r1
+ ldr r0, [sp, #0xc]
+ add r1, r0, r1
+ ldr r0, [sp, #0x8]
+ add r0, r0, r1
+ add r1, r7, r0
+ ldr r0, _020847F4 ; =0x000001FE
+ cmp r1, r0
+ bge _020846A0
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x18
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02084674:
+ bge _020846A0
+ ldr r0, [sp, #0x10]
+ cmp r0, #0x0
+ ble _02084688
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x18
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02084688:
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ bl FUN_02085000
+ cmp r0, #0x1
+ bne _020846A0
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x18
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_020846A0:
+ add r0, r4, #0x0
+ mov r1, #0x2a
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _0208470E
+ add r0, r4, #0x0
+ mov r1, #0x33
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ ble _020846E2
+ ldr r0, [sp, #0xc]
+ cmp r0, #0x64
+ bge _0208470E
+ ldr r0, [sp, #0x14]
+ add r1, r5, r0
+ ldr r0, [sp, #0x10]
+ add r1, r0, r1
+ ldr r0, [sp, #0xc]
+ add r1, r0, r1
+ ldr r0, [sp, #0x8]
+ add r0, r0, r1
+ add r1, r7, r0
+ ldr r0, _020847F4 ; =0x000001FE
+ cmp r1, r0
+ bge _0208470E
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x18
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_020846E2:
+ bge _0208470E
+ ldr r0, [sp, #0xc]
+ cmp r0, #0x0
+ ble _020846F6
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x18
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_020846F6:
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ bl FUN_02085000
+ cmp r0, #0x1
+ bne _0208470E
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x18
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0208470E:
+ add r0, r4, #0x0
+ mov r1, #0x2b
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _0208477C
+ add r0, r4, #0x0
+ mov r1, #0x34
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ ble _02084750
+ ldr r0, [sp, #0x8]
+ cmp r0, #0x64
+ bge _0208477C
+ ldr r0, [sp, #0x14]
+ add r1, r5, r0
+ ldr r0, [sp, #0x10]
+ add r1, r0, r1
+ ldr r0, [sp, #0xc]
+ add r1, r0, r1
+ ldr r0, [sp, #0x8]
+ add r0, r0, r1
+ add r1, r7, r0
+ ldr r0, _020847F4 ; =0x000001FE
+ cmp r1, r0
+ bge _0208477C
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x18
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02084750:
+ bge _0208477C
+ ldr r0, [sp, #0x8]
+ cmp r0, #0x0
+ ble _02084764
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x18
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02084764:
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ bl FUN_02085000
+ cmp r0, #0x1
+ bne _0208477C
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x18
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_0208477C:
+ add r0, r4, #0x0
+ mov r1, #0x2c
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _020847E6
+ add r0, r4, #0x0
+ mov r1, #0x35
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ ble _020847BC
+ cmp r7, #0x64
+ bge _020847E6
+ ldr r0, [sp, #0x14]
+ add r1, r5, r0
+ ldr r0, [sp, #0x10]
+ add r1, r0, r1
+ ldr r0, [sp, #0xc]
+ add r1, r0, r1
+ ldr r0, [sp, #0x8]
+ add r0, r0, r1
+ add r1, r7, r0
+ ldr r0, _020847F4 ; =0x000001FE
+ cmp r1, r0
+ bge _020847E6
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x18
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_020847BC:
+ bge _020847E6
+ cmp r7, #0x0
+ ble _020847CE
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x18
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_020847CE:
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ bl FUN_02085000
+ cmp r0, #0x1
+ bne _020847E6
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x18
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_020847E6:
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0x0
+ add sp, #0x18
+ pop {r3-r7, pc}
+ nop
+_020847F4: .word 0x000001FE
+
+ thumb_func_start FUN_020847F8
+FUN_020847F8: ; 0x020847F8
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ add r1, r2, #0x0
+ add r4, r3, #0x0
+ bl FUN_0206B9B0
+ ldr r3, [sp, #0x10]
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_020842DC
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02084810
+FUN_02084810: ; 0x02084810
+ push {r3-r7, lr}
+ sub sp, #0x70
+ add r5, r0, #0x0
+ ldr r0, [sp, #0x88]
+ str r2, [sp, #0x4]
+ str r0, [sp, #0x88]
+ add r0, r1, #0x0
+ ldr r2, [sp, #0x88]
+ mov r1, #0x0
+ str r3, [sp, #0x8]
+ bl FUN_0206E710
+ mov r1, #0xe
+ add r4, r0, #0x0
+ bl FUN_0206E7DC
+ cmp r0, #0x1
+ beq _02084840
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x70
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_02084840:
+ mov r6, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x9f
+ add r2, r6, #0x0
+ add r7, r6, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0x50]
+ str r0, [sp, #0x54]
+ add r0, r4, #0x0
+ mov r1, #0xf
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _02084868
+ ldr r1, [sp, #0x54]
+ mov r0, #0x7
+ bic r1, r0
+ str r1, [sp, #0x54]
+ mov r7, #0x1
+_02084868:
+ add r0, r4, #0x0
+ mov r1, #0x10
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _0208487E
+ ldr r1, [sp, #0x54]
+ ldr r0, _02084A28 ; =0xFFFFF077
+ mov r7, #0x1
+ and r0, r1
+ str r0, [sp, #0x54]
+_0208487E:
+ add r0, r4, #0x0
+ mov r1, #0x11
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _02084894
+ ldr r1, [sp, #0x54]
+ mov r0, #0x10
+ bic r1, r0
+ str r1, [sp, #0x54]
+ mov r7, #0x1
+_02084894:
+ add r0, r4, #0x0
+ mov r1, #0x12
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _020848AA
+ ldr r1, [sp, #0x54]
+ mov r0, #0x20
+ bic r1, r0
+ str r1, [sp, #0x54]
+ mov r7, #0x1
+_020848AA:
+ add r0, r4, #0x0
+ mov r1, #0x13
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _020848C0
+ ldr r1, [sp, #0x54]
+ mov r0, #0x40
+ bic r1, r0
+ str r1, [sp, #0x54]
+ mov r7, #0x1
+_020848C0:
+ ldr r1, [sp, #0x50]
+ ldr r0, [sp, #0x54]
+ cmp r1, r0
+ beq _020848D4
+ add r0, r5, #0x0
+ mov r1, #0x9f
+ add r2, sp, #0x54
+ bl FUN_02067830
+ mov r6, #0x1
+_020848D4:
+ add r0, r5, #0x0
+ mov r1, #0xa2
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0x50]
+ add r0, r5, #0x0
+ mov r1, #0xa3
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0x54]
+ add r0, r4, #0x0
+ mov r1, #0x17
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ bne _02084904
+ add r0, r4, #0x0
+ mov r1, #0x18
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _02084930
+_02084904:
+ add r0, r4, #0x0
+ mov r1, #0x19
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _02084930
+ ldr r0, [sp, #0x50]
+ cmp r0, #0x0
+ bne _0208492C
+ add r0, r4, #0x0
+ mov r1, #0x36
+ bl FUN_0206E7DC
+ add r3, r0, #0x0
+ ldr r1, [sp, #0x50]
+ ldr r2, [sp, #0x54]
+ add r0, r5, #0x0
+ bl FUN_02084F68
+ mov r6, #0x1
+_0208492C:
+ mov r7, #0x1
+ b _0208495C
+_02084930:
+ add r0, r4, #0x0
+ mov r1, #0x26
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _0208495C
+ ldr r1, [sp, #0x50]
+ ldr r0, [sp, #0x54]
+ cmp r1, r0
+ bge _0208495A
+ add r0, r4, #0x0
+ mov r1, #0x36
+ bl FUN_0206E7DC
+ add r3, r0, #0x0
+ ldr r1, [sp, #0x50]
+ ldr r2, [sp, #0x54]
+ add r0, r5, #0x0
+ bl FUN_02084F68
+ mov r6, #0x1
+_0208495A:
+ mov r7, #0x1
+_0208495C:
+ add r0, r5, #0x0
+ mov r1, #0xa0
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0x58]
+ add r0, r4, #0x0
+ mov r1, #0x19
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _020849B4
+ ldr r0, [sp, #0x58]
+ cmp r0, #0x64
+ bge _020849B2
+ add r0, r5, #0x0
+ bl FUN_020686F8
+ add r2, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x8
+ bl FUN_02068018
+ add r0, r5, #0x0
+ bl FUN_02066ED8
+ ldr r0, [sp, #0x50]
+ cmp r0, #0x0
+ bne _020849B0
+ add r0, r5, #0x0
+ mov r1, #0xa3
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r2, r0, #0x0
+ ldr r3, [sp, #0x54]
+ ldr r1, [sp, #0x50]
+ add r0, r5, #0x0
+ sub r3, r2, r3
+ str r2, [sp, #0x5c]
+ bl FUN_02084F68
+_020849B0:
+ mov r6, #0x1
+_020849B2:
+ mov r7, #0x1
+_020849B4:
+ add r0, r4, #0x0
+ mov r1, #0x1a
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _020849C2
+ mov r7, #0x1
+_020849C2:
+ add r0, r4, #0x0
+ mov r1, #0x22
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _020849E2
+ ldr r1, [sp, #0x4]
+ add r0, r5, #0x0
+ mov r2, #0x1
+ bl FUN_02084EC0
+ cmp r0, #0x1
+ bne _020849DE
+ mov r6, #0x1
+_020849DE:
+ mov r7, #0x1
+ b _02084A00
+_020849E2:
+ add r0, r4, #0x0
+ mov r1, #0x23
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _02084A00
+ ldr r1, [sp, #0x4]
+ add r0, r5, #0x0
+ mov r2, #0x3
+ bl FUN_02084EC0
+ cmp r0, #0x1
+ bne _020849FE
+ mov r6, #0x1
+_020849FE:
+ mov r7, #0x1
+_02084A00:
+ add r0, r4, #0x0
+ mov r1, #0x24
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _02084A2C
+ add r0, r4, #0x0
+ mov r1, #0x37
+ bl FUN_0206E7DC
+ add r2, r0, #0x0
+ ldr r1, [sp, #0x4]
+ add r0, r5, #0x0
+ bl FUN_02084E40
+ cmp r0, #0x1
+ bne _02084A24
+ mov r6, #0x1
+_02084A24:
+ mov r7, #0x1
+ b _02084A66
+ .balign 4
+_02084A28: .word 0xFFFFF077
+_02084A2C:
+ add r0, r4, #0x0
+ mov r1, #0x25
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _02084A66
+ mov r0, #0x0
+ str r0, [sp, #0x50]
+ cmp r0, #0x4
+ bge _02084A64
+ mov r7, #0x37
+_02084A42:
+ add r0, r4, #0x0
+ add r1, r7, #0x0
+ bl FUN_0206E7DC
+ add r2, r0, #0x0
+ ldr r1, [sp, #0x50]
+ add r0, r5, #0x0
+ bl FUN_02084E40
+ cmp r0, #0x1
+ bne _02084A5A
+ mov r6, #0x1
+_02084A5A:
+ ldr r0, [sp, #0x50]
+ add r0, r0, #0x1
+ str r0, [sp, #0x50]
+ cmp r0, #0x4
+ blt _02084A42
+_02084A64:
+ mov r7, #0x1
+_02084A66:
+ add r0, r5, #0x0
+ mov r1, #0xd
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0x50]
+ add r0, r5, #0x0
+ mov r1, #0xe
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0x54]
+ add r0, r5, #0x0
+ mov r1, #0xf
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0x58]
+ add r0, r5, #0x0
+ mov r1, #0x10
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0x5c]
+ add r0, r5, #0x0
+ mov r1, #0x11
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0x60]
+ add r0, r5, #0x0
+ mov r1, #0x12
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0x64]
+ add r0, r5, #0x0
+ mov r1, #0x5
+ mov r2, #0x0
+ bl FUN_020671BC
+ mov r1, #0x49
+ lsl r1, r1, #0x2
+ cmp r0, r1
+ beq _02084B20
+ add r0, r4, #0x0
+ mov r1, #0x27
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _02084B20
+ add r0, r4, #0x0
+ mov r1, #0x30
+ bl FUN_0206E7DC
+ ldr r1, [sp, #0x60]
+ ldr r2, [sp, #0x54]
+ str r1, [sp, #0x10]
+ ldr r1, [sp, #0x5c]
+ str r0, [sp, #0xc]
+ str r1, [sp, #0x14]
+ ldr r1, [sp, #0x58]
+ str r0, [sp, #0x6c]
+ add r2, r2, r1
+ ldr r1, [sp, #0x14]
+ ldr r3, [sp, #0x64]
+ add r2, r1, r2
+ ldr r1, [sp, #0x10]
+ ldr r0, [sp, #0x50]
+ add r1, r1, r2
+ ldr r2, [sp, #0xc]
+ add r1, r3, r1
+ bl FUN_02084FA8
+ mov r1, #0x0
+ mvn r1, r1
+ str r0, [sp, #0x68]
+ cmp r0, r1
+ beq _02084B18
+ str r0, [sp, #0x50]
+ add r0, r5, #0x0
+ mov r1, #0xd
+ add r2, sp, #0x50
+ bl FUN_02067830
+ add r0, r5, #0x0
+ bl FUN_02066ED8
+ mov r6, #0x1
+_02084B18:
+ ldr r0, [sp, #0x6c]
+ cmp r0, #0x0
+ ble _02084B20
+ mov r7, #0x1
+_02084B20:
+ add r0, r4, #0x0
+ mov r1, #0x28
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _02084B80
+ add r0, r4, #0x0
+ mov r1, #0x31
+ bl FUN_0206E7DC
+ ldr r1, [sp, #0x60]
+ ldr r2, [sp, #0x50]
+ str r1, [sp, #0x1c]
+ ldr r1, [sp, #0x5c]
+ str r0, [sp, #0x18]
+ str r1, [sp, #0x20]
+ ldr r1, [sp, #0x58]
+ str r0, [sp, #0x6c]
+ add r2, r2, r1
+ ldr r1, [sp, #0x20]
+ ldr r3, [sp, #0x64]
+ add r2, r1, r2
+ ldr r1, [sp, #0x1c]
+ ldr r0, [sp, #0x54]
+ add r1, r1, r2
+ ldr r2, [sp, #0x18]
+ add r1, r3, r1
+ bl FUN_02084FA8
+ mov r1, #0x0
+ mvn r1, r1
+ str r0, [sp, #0x68]
+ cmp r0, r1
+ beq _02084B78
+ str r0, [sp, #0x54]
+ add r0, r5, #0x0
+ mov r1, #0xe
+ add r2, sp, #0x54
+ bl FUN_02067830
+ add r0, r5, #0x0
+ bl FUN_02066ED8
+ mov r6, #0x1
+_02084B78:
+ ldr r0, [sp, #0x6c]
+ cmp r0, #0x0
+ ble _02084B80
+ mov r7, #0x1
+_02084B80:
+ add r0, r4, #0x0
+ mov r1, #0x29
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _02084BE0
+ add r0, r4, #0x0
+ mov r1, #0x32
+ bl FUN_0206E7DC
+ ldr r1, [sp, #0x60]
+ ldr r2, [sp, #0x50]
+ str r1, [sp, #0x28]
+ ldr r1, [sp, #0x5c]
+ str r0, [sp, #0x24]
+ str r1, [sp, #0x2c]
+ ldr r1, [sp, #0x54]
+ str r0, [sp, #0x6c]
+ add r2, r2, r1
+ ldr r1, [sp, #0x2c]
+ ldr r3, [sp, #0x64]
+ add r2, r1, r2
+ ldr r1, [sp, #0x28]
+ ldr r0, [sp, #0x58]
+ add r1, r1, r2
+ ldr r2, [sp, #0x24]
+ add r1, r3, r1
+ bl FUN_02084FA8
+ mov r1, #0x0
+ mvn r1, r1
+ str r0, [sp, #0x68]
+ cmp r0, r1
+ beq _02084BD8
+ str r0, [sp, #0x58]
+ add r0, r5, #0x0
+ mov r1, #0xf
+ add r2, sp, #0x58
+ bl FUN_02067830
+ add r0, r5, #0x0
+ bl FUN_02066ED8
+ mov r6, #0x1
+_02084BD8:
+ ldr r0, [sp, #0x6c]
+ cmp r0, #0x0
+ ble _02084BE0
+ mov r7, #0x1
+_02084BE0:
+ add r0, r4, #0x0
+ mov r1, #0x2a
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _02084C40
+ add r0, r4, #0x0
+ mov r1, #0x33
+ bl FUN_0206E7DC
+ ldr r1, [sp, #0x60]
+ ldr r2, [sp, #0x50]
+ str r1, [sp, #0x34]
+ ldr r1, [sp, #0x58]
+ str r0, [sp, #0x30]
+ str r1, [sp, #0x38]
+ ldr r1, [sp, #0x54]
+ str r0, [sp, #0x6c]
+ add r2, r2, r1
+ ldr r1, [sp, #0x38]
+ ldr r3, [sp, #0x64]
+ add r2, r1, r2
+ ldr r1, [sp, #0x34]
+ ldr r0, [sp, #0x5c]
+ add r1, r1, r2
+ ldr r2, [sp, #0x30]
+ add r1, r3, r1
+ bl FUN_02084FA8
+ mov r1, #0x0
+ mvn r1, r1
+ str r0, [sp, #0x68]
+ cmp r0, r1
+ beq _02084C38
+ str r0, [sp, #0x5c]
+ add r0, r5, #0x0
+ mov r1, #0x10
+ add r2, sp, #0x5c
+ bl FUN_02067830
+ add r0, r5, #0x0
+ bl FUN_02066ED8
+ mov r6, #0x1
+_02084C38:
+ ldr r0, [sp, #0x6c]
+ cmp r0, #0x0
+ ble _02084C40
+ mov r7, #0x1
+_02084C40:
+ add r0, r4, #0x0
+ mov r1, #0x2b
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _02084CA0
+ add r0, r4, #0x0
+ mov r1, #0x34
+ bl FUN_0206E7DC
+ ldr r1, [sp, #0x5c]
+ ldr r2, [sp, #0x50]
+ str r1, [sp, #0x40]
+ ldr r1, [sp, #0x58]
+ str r0, [sp, #0x3c]
+ str r1, [sp, #0x44]
+ ldr r1, [sp, #0x54]
+ str r0, [sp, #0x6c]
+ add r2, r2, r1
+ ldr r1, [sp, #0x44]
+ ldr r3, [sp, #0x64]
+ add r2, r1, r2
+ ldr r1, [sp, #0x40]
+ ldr r0, [sp, #0x60]
+ add r1, r1, r2
+ ldr r2, [sp, #0x3c]
+ add r1, r3, r1
+ bl FUN_02084FA8
+ mov r1, #0x0
+ mvn r1, r1
+ str r0, [sp, #0x68]
+ cmp r0, r1
+ beq _02084C98
+ str r0, [sp, #0x60]
+ add r0, r5, #0x0
+ mov r1, #0x11
+ add r2, sp, #0x60
+ bl FUN_02067830
+ add r0, r5, #0x0
+ bl FUN_02066ED8
+ mov r6, #0x1
+_02084C98:
+ ldr r0, [sp, #0x6c]
+ cmp r0, #0x0
+ ble _02084CA0
+ mov r7, #0x1
+_02084CA0:
+ add r0, r4, #0x0
+ mov r1, #0x2c
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _02084D00
+ add r0, r4, #0x0
+ mov r1, #0x35
+ bl FUN_0206E7DC
+ ldr r1, [sp, #0x5c]
+ ldr r2, [sp, #0x50]
+ str r1, [sp, #0x4c]
+ ldr r1, [sp, #0x58]
+ str r0, [sp, #0x48]
+ mov r12, r1
+ ldr r1, [sp, #0x54]
+ str r0, [sp, #0x6c]
+ add r1, r2, r1
+ mov r2, r12
+ add r2, r2, r1
+ ldr r1, [sp, #0x4c]
+ ldr r3, [sp, #0x60]
+ add r1, r1, r2
+ ldr r0, [sp, #0x64]
+ ldr r2, [sp, #0x48]
+ add r1, r3, r1
+ bl FUN_02084FA8
+ mov r1, #0x0
+ mvn r1, r1
+ str r0, [sp, #0x68]
+ cmp r0, r1
+ beq _02084CF8
+ str r0, [sp, #0x64]
+ add r0, r5, #0x0
+ mov r1, #0x12
+ add r2, sp, #0x64
+ bl FUN_02067830
+ add r0, r5, #0x0
+ bl FUN_02066ED8
+ mov r6, #0x1
+_02084CF8:
+ ldr r0, [sp, #0x6c]
+ cmp r0, #0x0
+ ble _02084D00
+ mov r7, #0x1
+_02084D00:
+ cmp r6, #0x0
+ bne _02084D14
+ cmp r7, #0x1
+ bne _02084D14
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x70
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_02084D14:
+ add r0, r5, #0x0
+ mov r1, #0x9
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0x50]
+ cmp r0, #0x64
+ bge _02084D54
+ add r0, r4, #0x0
+ mov r1, #0x2d
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _02084DC2
+ add r0, r4, #0x0
+ mov r1, #0x38
+ bl FUN_0206E7DC
+ add r2, r0, #0x0
+ ldr r0, [sp, #0x88]
+ str r0, [sp, #0x0]
+ ldr r1, [sp, #0x50]
+ ldr r3, [sp, #0x8]
+ add r0, r5, #0x0
+ bl FUN_0208508C
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x70
+ add r0, r6, #0x0
+ pop {r3-r7, pc}
+_02084D54:
+ blt _02084D8A
+ cmp r0, #0xc8
+ bge _02084D8A
+ add r0, r4, #0x0
+ mov r1, #0x2e
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _02084DC2
+ add r0, r4, #0x0
+ mov r1, #0x39
+ bl FUN_0206E7DC
+ add r2, r0, #0x0
+ ldr r0, [sp, #0x88]
+ str r0, [sp, #0x0]
+ ldr r1, [sp, #0x50]
+ ldr r3, [sp, #0x8]
+ add r0, r5, #0x0
+ bl FUN_0208508C
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x70
+ add r0, r6, #0x0
+ pop {r3-r7, pc}
+_02084D8A:
+ cmp r0, #0xc8
+ blt _02084DC2
+ cmp r0, #0xff
+ bgt _02084DC2
+ add r0, r4, #0x0
+ mov r1, #0x2f
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _02084DC2
+ add r0, r4, #0x0
+ mov r1, #0x3a
+ bl FUN_0206E7DC
+ add r2, r0, #0x0
+ ldr r0, [sp, #0x88]
+ str r0, [sp, #0x0]
+ ldr r1, [sp, #0x50]
+ ldr r3, [sp, #0x8]
+ add r0, r5, #0x0
+ bl FUN_0208508C
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x70
+ add r0, r6, #0x0
+ pop {r3-r7, pc}
+_02084DC2:
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add r0, r6, #0x0
+ add sp, #0x70
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02084DD0
+FUN_02084DD0: ; 0x02084DD0
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ add r1, r2, #0x0
+ add r4, r3, #0x0
+ bl FUN_0206B9B0
+ ldr r1, [sp, #0x14]
+ add r3, sp, #0x0
+ str r1, [sp, #0x0]
+ ldrh r3, [r3, #0x10]
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_02084810
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02084DF0
+FUN_02084DF0: ; 0x02084DF0
+ push {r3-r7, lr}
+ add r6, r1, #0x0
+ add r1, #0x36
+ mov r2, #0x0
+ add r5, r0, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x10
+ lsr r7, r0, #0x10
+ bne _02084E08
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_02084E08:
+ add r1, r6, #0x0
+ add r0, r5, #0x0
+ add r1, #0x3a
+ mov r2, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x18
+ add r6, #0x3e
+ lsr r4, r0, #0x18
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ mov r2, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ add r0, r7, #0x0
+ bl FUN_0206AB30
+ cmp r4, r0
+ bhs _02084E36
+ mov r0, #0x1
+ b _02084E38
+_02084E36:
+ mov r0, #0x0
+_02084E38:
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02084E40
+FUN_02084E40: ; 0x02084E40
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r1, #0x0
+ add r4, r2, #0x0
+ add r1, #0x36
+ mov r2, #0x0
+ add r6, r0, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x10
+ lsr r7, r0, #0x10
+ bne _02084E5E
+ add sp, #0x8
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_02084E5E:
+ add r0, r5, #0x0
+ str r0, [sp, #0x0]
+ add r0, #0x3a
+ str r0, [sp, #0x0]
+ ldr r1, [sp, #0x0]
+ add r0, r6, #0x0
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r1, sp, #0x4
+ strb r0, [r1, #0x0]
+ add r5, #0x3e
+ add r0, r6, #0x0
+ add r1, r5, #0x0
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r1, r0, #0x0
+ lsl r1, r1, #0x18
+ add r0, r7, #0x0
+ lsr r1, r1, #0x18
+ bl FUN_0206AB30
+ add r1, sp, #0x4
+ ldrb r2, [r1, #0x0]
+ cmp r2, r0
+ bhs _02084EB8
+ cmp r4, #0x7f
+ bne _02084E9C
+ strb r0, [r1, #0x0]
+ b _02084EA8
+_02084E9C:
+ add r2, r2, r4
+ strb r2, [r1, #0x0]
+ ldrb r2, [r1, #0x0]
+ cmp r2, r0
+ bls _02084EA8
+ strb r0, [r1, #0x0]
+_02084EA8:
+ ldr r1, [sp, #0x0]
+ add r0, r6, #0x0
+ add r2, sp, #0x4
+ bl FUN_02067830
+ add sp, #0x8
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02084EB8:
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02084EC0
+FUN_02084EC0: ; 0x02084EC0
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r6, r2, #0x0
+ add r4, r1, #0x0
+ str r1, [sp, #0x0]
+ add r1, #0x3e
+ mov r2, #0x0
+ add r5, r0, #0x0
+ str r1, [sp, #0x0]
+ bl FUN_020671BC
+ add r1, sp, #0x8
+ strb r0, [r1, #0x0]
+ ldrb r0, [r1, #0x0]
+ cmp r0, #0x3
+ bne _02084EE6
+ add sp, #0xc
+ mov r0, #0x0
+ pop {r4-r7, pc}
+_02084EE6:
+ add r1, r4, #0x0
+ add r0, r5, #0x0
+ add r1, #0x36
+ mov r2, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ mov r1, #0x0
+ str r0, [sp, #0x4]
+ bl FUN_0206AB30
+ cmp r0, #0x5
+ bhs _02084F08
+ add sp, #0xc
+ mov r0, #0x0
+ pop {r4-r7, pc}
+_02084F08:
+ add r4, #0x3a
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r1, sp, #0x8
+ strb r0, [r1, #0x1]
+ ldrb r1, [r1, #0x0]
+ ldr r0, [sp, #0x4]
+ bl FUN_0206AB30
+ add r7, r0, #0x0
+ add r0, sp, #0x8
+ ldrb r0, [r0, #0x0]
+ add r0, r0, r6
+ cmp r0, #0x3
+ bls _02084F30
+ mov r0, #0x3
+ b _02084F34
+_02084F30:
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+_02084F34:
+ add r1, sp, #0x8
+ strb r0, [r1, #0x0]
+ ldrb r1, [r1, #0x0]
+ ldr r0, [sp, #0x4]
+ bl FUN_0206AB30
+ add r1, sp, #0x8
+ ldrb r2, [r1, #0x1]
+ add r0, r2, r0
+ sub r0, r0, r7
+ strb r0, [r1, #0x1]
+ ldr r1, [sp, #0x0]
+ add r0, r5, #0x0
+ add r2, sp, #0x8
+ bl FUN_02067830
+ add r2, sp, #0x8
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, #0x1
+ bl FUN_02067830
+ mov r0, #0x1
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02084F68
+FUN_02084F68: ; 0x02084F68
+ push {r0-r3}
+ push {r3, lr}
+ cmp r2, #0x1
+ bne _02084F74
+ mov r3, #0x1
+ b _02084F8A
+_02084F74:
+ cmp r3, #0xff
+ bne _02084F7C
+ add r3, r2, #0x0
+ b _02084F8A
+_02084F7C:
+ cmp r3, #0xfe
+ bne _02084F84
+ lsr r3, r2, #0x1
+ b _02084F8A
+_02084F84:
+ cmp r3, #0xfd
+ bne _02084F8A
+ lsr r3, r2, #0x2
+_02084F8A:
+ ldr r1, [sp, #0xc]
+ add r1, r1, r3
+ cmp r1, r2
+ bls _02084F96
+ str r2, [sp, #0xc]
+ b _02084F98
+_02084F96:
+ str r1, [sp, #0xc]
+_02084F98:
+ mov r1, #0xa2
+ add r2, sp, #0xc
+ bl FUN_02067830
+ pop {r3}
+ pop {r3}
+ add sp, #0x10
+ bx r3
+
+ thumb_func_start FUN_02084FA8
+FUN_02084FA8: ; 0x02084FA8
+ push {r3-r4}
+ cmp r0, #0x0
+ bne _02084FBA
+ cmp r2, #0x0
+ bge _02084FBA
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r4}
+ bx lr
+_02084FBA:
+ cmp r0, #0x64
+ blt _02084FCA
+ cmp r2, #0x0
+ ble _02084FCA
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r4}
+ bx lr
+_02084FCA:
+ ldr r3, _02084FFC ; =0x000001FE
+ add r4, r0, r1
+ cmp r4, r3
+ blt _02084FDE
+ cmp r2, #0x0
+ ble _02084FDE
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r4}
+ bx lr
+_02084FDE:
+ add r0, r0, r2
+ cmp r0, #0x64
+ ble _02084FE8
+ mov r0, #0x64
+ b _02084FEE
+_02084FE8:
+ cmp r0, #0x0
+ bge _02084FEE
+ mov r0, #0x0
+_02084FEE:
+ ldr r2, _02084FFC ; =0x000001FE
+ add r3, r0, r1
+ cmp r3, r2
+ ble _02084FF8
+ sub r0, r2, r1
+_02084FF8:
+ pop {r3-r4}
+ bx lr
+ .balign 4
+_02084FFC: .word 0x000001FE
+
+ thumb_func_start FUN_02085000
+FUN_02085000: ; 0x02085000
+ push {r4, lr}
+ add r4, r1, #0x0
+ mov r1, #0x9
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0xff
+ blt _02085014
+ mov r0, #0x0
+ pop {r4, pc}
+_02085014:
+ cmp r0, #0x64
+ bge _02085038
+ add r0, r4, #0x0
+ mov r1, #0x2d
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _02085034
+ add r0, r4, #0x0
+ mov r1, #0x38
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ ble _02085034
+ mov r0, #0x1
+ pop {r4, pc}
+_02085034:
+ mov r0, #0x0
+ pop {r4, pc}
+_02085038:
+ blt _0208505E
+ cmp r0, #0xc8
+ bge _0208505E
+ add r0, r4, #0x0
+ mov r1, #0x2e
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _0208505A
+ add r0, r4, #0x0
+ mov r1, #0x39
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ ble _0208505A
+ mov r0, #0x1
+ pop {r4, pc}
+_0208505A:
+ mov r0, #0x0
+ pop {r4, pc}
+_0208505E:
+ cmp r0, #0xc8
+ blt _02085086
+ cmp r0, #0xff
+ bge _02085086
+ add r0, r4, #0x0
+ mov r1, #0x2f
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ beq _02085082
+ add r0, r4, #0x0
+ mov r1, #0x3a
+ bl FUN_0206E7DC
+ cmp r0, #0x0
+ ble _02085082
+ mov r0, #0x1
+ pop {r4, pc}
+_02085082:
+ mov r0, #0x0
+ pop {r4, pc}
+_02085086:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0208508C
+FUN_0208508C: ; 0x0208508C
+ push {r0-r3}
+ push {r4-r6, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r6, r3, #0x0
+ cmp r4, #0xff
+ bne _020850AA
+ ldr r0, [sp, #0x18]
+ cmp r0, #0x0
+ ble _020850AA
+ mov r0, #0x0
+ pop {r4-r6}
+ pop {r3}
+ add sp, #0x10
+ bx r3
+_020850AA:
+ cmp r4, #0x0
+ bne _020850BE
+ ldr r0, [sp, #0x18]
+ cmp r0, #0x0
+ bge _020850BE
+ mov r0, #0x0
+ pop {r4-r6}
+ pop {r3}
+ add sp, #0x10
+ bx r3
+_020850BE:
+ ldr r0, [sp, #0x18]
+ cmp r0, #0x0
+ ble _02085114
+ add r0, r5, #0x0
+ mov r1, #0x6
+ mov r2, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x10
+ ldr r2, [sp, #0x20]
+ lsr r0, r0, #0x10
+ mov r1, #0x1
+ bl FUN_0206E7B8
+ cmp r0, #0x34
+ bne _020850EC
+ ldr r1, [sp, #0x18]
+ mov r0, #0x96
+ mul r0, r1
+ mov r1, #0x64
+ blx _s32_div_f
+ str r0, [sp, #0x18]
+_020850EC:
+ add r0, r5, #0x0
+ mov r1, #0x9a
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0xb
+ bne _02085100
+ ldr r0, [sp, #0x18]
+ add r0, r0, #0x1
+ str r0, [sp, #0x18]
+_02085100:
+ add r0, r5, #0x0
+ mov r1, #0x97
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r6, r0
+ bne _02085114
+ ldr r0, [sp, #0x18]
+ add r0, r0, #0x1
+ str r0, [sp, #0x18]
+_02085114:
+ ldr r0, [sp, #0x18]
+ add r0, r0, r4
+ str r0, [sp, #0x18]
+ cmp r0, #0xff
+ ble _02085122
+ mov r0, #0xff
+ str r0, [sp, #0x18]
+_02085122:
+ ldr r0, [sp, #0x18]
+ cmp r0, #0x0
+ bge _0208512C
+ mov r0, #0x0
+ str r0, [sp, #0x18]
+_0208512C:
+ add r0, r5, #0x0
+ mov r1, #0x9
+ add r2, sp, #0x18
+ bl FUN_02067830
+ mov r0, #0x1
+ pop {r4-r6}
+ pop {r3}
+ add sp, #0x10
+ bx r3
+
+ thumb_func_start FUN_02085140
+FUN_02085140: ; 0x02085140
+ push {r4-r7, lr}
+ sub sp, #0xc
+ str r0, [sp, #0x0]
+ bl FUN_0206B9AC
+ mov r7, #0x0
+ str r0, [sp, #0x4]
+ cmp r0, #0x0
+ ble _020851B4
+ mov r6, #0x7f
+_02085154:
+ ldr r0, [sp, #0x0]
+ add r1, r7, #0x0
+ bl FUN_0206B9B0
+ mov r1, #0xab
+ mov r2, #0x0
+ add r5, r0, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ beq _020851AC
+ add r0, r5, #0x0
+ mov r1, #0xa3
+ mov r2, #0x0
+ bl FUN_020671BC
+ str r0, [sp, #0x8]
+ add r0, r5, #0x0
+ mov r1, #0xa2
+ add r2, sp, #0x8
+ bl FUN_02067830
+ mov r0, #0x0
+ str r0, [sp, #0x8]
+ add r0, r5, #0x0
+ mov r1, #0x9f
+ add r2, sp, #0x8
+ bl FUN_02067830
+ mov r4, #0x0
+_02085190:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02084DF0
+ cmp r0, #0x1
+ bne _020851A6
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_02084E40
+_020851A6:
+ add r4, r4, #0x1
+ cmp r4, #0x4
+ blt _02085190
+_020851AC:
+ ldr r0, [sp, #0x4]
+ add r7, r7, #0x1
+ cmp r7, r0
+ blt _02085154
+_020851B4:
+ add sp, #0xc
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_020851B8
+FUN_020851B8: ; 0x020851B8
+ push {r3, lr}
+ mov r1, #0xc
+ bl FUN_02016998
+ mov r1, #0x0
+ strb r1, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ strb r1, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ strb r1, [r0, #0x4]
+ strb r1, [r0, #0x5]
+ strb r1, [r0, #0x6]
+ strb r1, [r0, #0x7]
+ strb r1, [r0, #0x8]
+ strb r1, [r0, #0x9]
+ strb r1, [r0, #0xa]
+ strb r1, [r0, #0xb]
+ pop {r3, pc}
+
+ thumb_func_start FUN_020851DC
+FUN_020851DC: ; 0x020851DC
+ push {r4-r6, lr}
+ sub r1, #0x95
+ lsl r1, r1, #0x10
+ lsr r6, r1, #0x10
+ add r1, r6, #0x0
+ add r5, r0, #0x0
+ add r4, r2, #0x0
+ bl FUN_02085200
+ cmp r4, #0x1
+ bne _020851F4
+ strb r6, [r5, #0x8]
+_020851F4:
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_020851F8
+FUN_020851F8: ; 0x020851F8
+ strb r1, [r0, #0x9]
+ strb r2, [r0, #0xa]
+ strb r3, [r0, #0xb]
+ bx lr
+
+ thumb_func_start FUN_02085200
+FUN_02085200: ; 0x02085200
+ push {r3-r6}
+ lsr r6, r1, #0x1f
+ lsl r5, r1, #0x1b
+ lsr r2, r1, #0x5
+ lsl r4, r2, #0x2
+ sub r5, r5, r6
+ mov r1, #0x1b
+ ror r5, r1
+ ldr r3, [r0, r4]
+ mov r2, #0x1
+ add r1, r6, r5
+ lsl r2, r1
+ add r1, r3, #0x0
+ orr r1, r2
+ str r1, [r0, r4]
+ pop {r3-r6}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02085224
+FUN_02085224: ; 0x02085224
+ push {r4-r5}
+ lsr r5, r1, #0x1f
+ lsl r4, r1, #0x1b
+ lsr r1, r1, #0x5
+ lsl r1, r1, #0x2
+ sub r4, r4, r5
+ mov r3, #0x1b
+ ror r4, r3
+ mov r2, #0x1
+ add r3, r5, r4
+ add r4, r2, #0x0
+ lsl r4, r3
+ ldr r0, [r0, r1]
+ tst r0, r4
+ bne _02085244
+ mov r2, #0x0
+_02085244:
+ lsl r0, r2, #0x18
+ lsr r0, r0, #0x18
+ pop {r4-r5}
+ bx lr
+
+ thumb_func_start FUN_0208524C
+FUN_0208524C: ; 0x0208524C
+ ldrb r3, [r0, #0x9]
+ strb r3, [r1, #0x0]
+ ldrb r0, [r0, #0xa]
+ strb r0, [r2, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02085258
+FUN_02085258: ; 0x02085258
+ ldr r3, _02085260 ; =FUN_02006670
+ add r1, r0, #0x0
+ mov r0, #0x44
+ bx r3
+ .balign 4
+_02085260: .word FUN_02006670
+
+ thumb_func_start FUN_02085264
+FUN_02085264: ; 0x02085264
+ ldr r3, _02085268 ; =FUN_02006704
+ bx r3
+ .balign 4
+_02085268: .word FUN_02006704
+
+ thumb_func_start FUN_0208526C
+FUN_0208526C: ; 0x0208526C
+ ldr r3, _02085270 ; =FUN_020066F4
+ bx r3
+ .balign 4
+_02085270: .word FUN_020066F4
+
+ thumb_func_start FUN_02085274
+FUN_02085274: ; 0x02085274
+ add r3, r0, #0x0
+ add r2, r1, #0x0
+ add r1, r3, #0x0
+ ldr r3, _02085280 ; =LoadFromNarc_2
+ mov r0, #0x44
+ bx r3
+ .balign 4
+_02085280: .word LoadFromNarc_2
+
+ thumb_func_start FUN_02085284
+FUN_02085284: ; 0x02085284
+ ldr r3, _0208528C ; =FUN_02085274
+ sub r0, #0x95
+ bx r3
+ nop
+_0208528C: .word FUN_02085274
+
+ thumb_func_start FUN_02085290
+FUN_02085290: ; 0x02085290
+ cmp r1, #0xa
+ bhi _020852E2
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_020852A0: ; jump table (using 16-bit offset)
+ .short _020852B6 - _020852A0 - 2; case 0
+ .short _020852BA - _020852A0 - 2; case 1
+ .short _020852BE - _020852A0 - 2; case 2
+ .short _020852C2 - _020852A0 - 2; case 3
+ .short _020852C6 - _020852A0 - 2; case 4
+ .short _020852CA - _020852A0 - 2; case 5
+ .short _020852CE - _020852A0 - 2; case 6
+ .short _020852D2 - _020852A0 - 2; case 7
+ .short _020852D6 - _020852A0 - 2; case 8
+ .short _020852DA - _020852A0 - 2; case 9
+ .short _020852DE - _020852A0 - 2; case 10
+_020852B6:
+ ldrh r0, [r0, #0x0]
+ bx lr
+_020852BA:
+ ldrb r0, [r0, #0x2]
+ bx lr
+_020852BE:
+ ldrb r0, [r0, #0x3]
+ bx lr
+_020852C2:
+ ldrb r0, [r0, #0x4]
+ bx lr
+_020852C6:
+ ldrb r0, [r0, #0x5]
+ bx lr
+_020852CA:
+ ldrb r0, [r0, #0x6]
+ bx lr
+_020852CE:
+ ldrb r0, [r0, #0x7]
+ bx lr
+_020852D2:
+ ldrb r0, [r0, #0x8]
+ bx lr
+_020852D6:
+ ldrb r0, [r0, #0x9]
+ bx lr
+_020852DA:
+ ldrb r0, [r0, #0xa]
+ bx lr
+_020852DE:
+ ldrb r0, [r0, #0xb]
+ bx lr
+_020852E2:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020852E8
+FUN_020852E8: ; 0x020852E8
+ push {r3-r5, lr}
+ ldr r2, _0208530C ; =0x00000175
+ add r4, r0, #0x0
+ add r3, r1, #0x0
+ mov r0, #0x1
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ add r5, r0, #0x0
+ add r1, r4, #0x0
+ bl FUN_0200A914
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0200A8B8
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+_0208530C: .word 0x00000175
+
+ thumb_func_start FUN_02085310
+FUN_02085310: ; 0x02085310
+ push {r3-r5, lr}
+ mov r2, #0x5d
+ add r4, r0, #0x0
+ add r3, r1, #0x0
+ mov r0, #0x1
+ mov r1, #0x1a
+ lsl r2, r2, #0x2
+ bl FUN_0200A86C
+ add r5, r0, #0x0
+ add r1, r4, #0x0
+ bl FUN_0200A914
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0200A8B8
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02085338
+FUN_02085338: ; 0x02085338
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r7, r1, #0x0
+ add r0, r3, #0x0
+ mov r1, #0x24
+ add r6, r2, #0x0
+ bl FUN_02016998
+ add r4, r0, #0x0
+ strb r5, [r4, #0x0]
+ strb r7, [r4, #0x1]
+ add r0, r6, #0x0
+ bl FUN_02024DA0
+ str r0, [r4, #0xc]
+ add r0, r6, #0x0
+ bl FUN_02013B5C
+ str r0, [r4, #0x10]
+ add r0, r6, #0x0
+ bl FUN_020462AC
+ bl FUN_0205ED0C
+ strb r0, [r4, #0x4]
+ mov r1, #0x0
+ strb r1, [r4, #0x5]
+ mov r0, #0x1
+ strb r0, [r4, #0x2]
+ add r0, r6, #0x0
+ strb r1, [r4, #0x3]
+ bl LoadPlayerDataAddress
+ bl FUN_02025084
+ str r0, [r4, #0x8]
+ cmp r5, #0x2
+ bne _02085390
+ add r0, r4, #0x0
+ add r0, #0x14
+ mov r1, #0x3
+ bl FUN_0201373C
+ b _020853A0
+_02085390:
+ ldr r0, _020853A4 ; =0x0000FFFF
+ mov r1, #0x0
+ add r2, r4, #0x0
+_02085396:
+ add r1, r1, #0x1
+ strh r0, [r2, #0x1c]
+ add r2, r2, #0x2
+ cmp r1, #0x2
+ blt _02085396
+_020853A0:
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+_020853A4: .word 0x0000FFFF
+
+ thumb_func_start FUN_020853A8
+FUN_020853A8: ; 0x020853A8
+ ldr r3, _020853AC ; =FUN_02016A18
+ bx r3
+ .balign 4
+_020853AC: .word FUN_02016A18
+
+ thumb_func_start FUN_020853B0
+FUN_020853B0: ; 0x020853B0
+ strh r1, [r0, #0x1c]
+ bx lr
+
+ thumb_func_start FUN_020853B4
+FUN_020853B4: ; 0x020853B4
+ strh r1, [r0, #0x1c]
+ strh r2, [r0, #0x1e]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020853BC
+FUN_020853BC: ; 0x020853BC
+ ldrh r2, [r1, #0x0]
+ strh r2, [r0, #0x14]
+ ldrh r2, [r1, #0x2]
+ strh r2, [r0, #0x16]
+ ldrh r2, [r1, #0x4]
+ strh r2, [r0, #0x18]
+ ldrh r1, [r1, #0x6]
+ strh r1, [r0, #0x1a]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020853D0
+FUN_020853D0: ; 0x020853D0
+ mov r1, #0x1
+ strb r1, [r0, #0x2]
+ mov r1, #0x0
+ strb r1, [r0, #0x3]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020853DC
+FUN_020853DC: ; 0x020853DC
+ mov r1, #0x1
+ strb r1, [r0, #0x5]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020853E4
+FUN_020853E4: ; 0x020853E4
+ ldrb r0, [r0, #0x2]
+ bx lr
+
+ thumb_func_start FUN_020853E8
+FUN_020853E8: ; 0x020853E8
+ ldrb r0, [r0, #0x3]
+ bx lr
+
+ thumb_func_start FUN_020853EC
+FUN_020853EC: ; 0x020853EC
+ ldrh r0, [r0, #0x1c]
+ bx lr
+
+ thumb_func_start FUN_020853F0
+FUN_020853F0: ; 0x020853F0
+ ldrh r2, [r0, #0x1c]
+ strh r2, [r1, #0x0]
+ ldrh r0, [r0, #0x1e]
+ strh r0, [r1, #0x2]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020853FC
+FUN_020853FC: ; 0x020853FC
+ add r2, r0, #0x0
+ ldr r3, _02085408 ; =FUN_02013960
+ add r2, #0x14
+ add r0, r1, #0x0
+ add r1, r2, #0x0
+ bx r3
+ .balign 4
+_02085408: .word FUN_02013960
+
+ thumb_func_start FUN_0208540C
+FUN_0208540C: ; 0x0208540C
+ ldrb r0, [r0, #0x0]
+ bx lr
+
+ thumb_func_start FUN_02085410
+FUN_02085410: ; 0x02085410
+ ldrb r0, [r0, #0x1]
+ bx lr
+
+ thumb_func_start FUN_02085414
+FUN_02085414: ; 0x02085414
+ ldr r0, [r0, #0x8]
+ bx lr
+
+ thumb_func_start FUN_02085418
+FUN_02085418: ; 0x02085418
+ ldr r0, [r0, #0xc]
+ bx lr
+
+ thumb_func_start FUN_0208541C
+FUN_0208541C: ; 0x0208541C
+ ldr r0, [r0, #0x10]
+ bx lr
+
+ thumb_func_start FUN_02085420
+FUN_02085420: ; 0x02085420
+ ldrb r0, [r0, #0x4]
+ bx lr
+
+ thumb_func_start FUN_02085424
+FUN_02085424: ; 0x02085424
+ ldrb r0, [r0, #0x5]
+ bx lr
+
+ thumb_func_start FUN_02085428
+FUN_02085428: ; 0x02085428
+ ldrb r3, [r0, #0x0]
+ cmp r3, #0x0
+ beq _02085438
+ cmp r3, #0x1
+ beq _0208543E
+ cmp r3, #0x2
+ beq _02085448
+ bx lr
+_02085438:
+ ldrh r0, [r0, #0x1c]
+ strh r0, [r1, #0x0]
+ bx lr
+_0208543E:
+ ldrh r2, [r0, #0x1c]
+ strh r2, [r1, #0x0]
+ ldrh r0, [r0, #0x1e]
+ strh r0, [r1, #0x2]
+ bx lr
+_02085448:
+ ldrh r1, [r0, #0x14]
+ strh r1, [r2, #0x0]
+ ldrh r1, [r0, #0x16]
+ strh r1, [r2, #0x2]
+ ldrh r1, [r0, #0x18]
+ strh r1, [r2, #0x4]
+ ldrh r0, [r0, #0x1a]
+ strh r0, [r2, #0x6]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0208545C
+FUN_0208545C: ; 0x0208545C
+ push {r3, lr}
+ ldrb r3, [r0, #0x0]
+ cmp r3, #0x0
+ beq _0208546C
+ cmp r3, #0x1
+ beq _0208547C
+ cmp r3, #0x2
+ b _02085494
+_0208546C:
+ ldrh r1, [r1, #0x0]
+ ldrh r0, [r0, #0x1c]
+ cmp r1, r0
+ bne _02085478
+ mov r0, #0x1
+ pop {r3, pc}
+_02085478:
+ mov r0, #0x0
+ pop {r3, pc}
+_0208547C:
+ ldrh r3, [r1, #0x0]
+ ldrh r2, [r0, #0x1c]
+ cmp r3, r2
+ bne _02085490
+ ldrh r1, [r1, #0x2]
+ ldrh r0, [r0, #0x1e]
+ cmp r1, r0
+ bne _02085490
+ mov r0, #0x1
+ pop {r3, pc}
+_02085490:
+ mov r0, #0x0
+ pop {r3, pc}
+_02085494:
+ add r0, #0x14
+ add r1, r2, #0x0
+ bl FUN_02013928
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_020854A0
+FUN_020854A0: ; 0x020854A0
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_0208545C
+ cmp r0, #0x0
+ bne _020854B4
+ mov r0, #0x1
+ b _020854B6
+_020854B4:
+ mov r0, #0x0
+_020854B6:
+ strb r0, [r5, #0x3]
+ mov r1, #0x0
+ strb r1, [r5, #0x2]
+ add r2, r5, #0x0
+_020854BE:
+ ldrh r0, [r4, #0x0]
+ add r1, r1, #0x1
+ add r4, r4, #0x2
+ strh r0, [r2, #0x1c]
+ add r2, r2, #0x2
+ cmp r1, #0x2
+ blt _020854BE
+ ldrh r0, [r6, #0x0]
+ strh r0, [r5, #0x14]
+ ldrh r0, [r6, #0x2]
+ strh r0, [r5, #0x16]
+ ldrh r0, [r6, #0x4]
+ strh r0, [r5, #0x18]
+ ldrh r0, [r6, #0x6]
+ strh r0, [r5, #0x1a]
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_020854E0
+FUN_020854E0: ; 0x020854E0
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ add r7, r1, #0x0
+ add r6, r2, #0x0
+ str r3, [sp, #0x0]
+ bl FUN_02025838
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x20]
+ mov r1, #0x1c
+ bl FUN_020169D8
+ mov r1, #0x0
+ mov r2, #0x1c
+ add r4, r0, #0x0
+ blx MI_CpuFill8
+ ldr r0, [sp, #0x0]
+ strb r0, [r4, #0xf]
+ ldr r0, [sp, #0x4]
+ strb r6, [r4, #0xe]
+ str r0, [r4, #0x18]
+ mov r0, #0x1
+ strh r0, [r4, #0x0]
+ str r7, [r4, #0x8]
+ mov r0, #0x0
+ strh r0, [r4, #0xc]
+ ldr r0, [sp, #0x20]
+ str r5, [r4, #0x10]
+ bl FUN_020256BC
+ str r0, [r4, #0x14]
+ bl FUN_02025658
+ ldr r0, [r4, #0x14]
+ mov r1, #0xff
+ add r2, r6, #0x0
+ add r3, r5, #0x0
+ bl FUN_020256DC
+ add r0, r4, #0x0
+ add sp, #0x8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02085538
+FUN_02085538: ; 0x02085538
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ add r5, r1, #0x0
+ add r0, r3, #0x0
+ mov r1, #0x1c
+ add r6, r2, #0x0
+ str r3, [sp, #0x0]
+ bl FUN_020169D8
+ mov r1, #0x0
+ mov r2, #0x1c
+ add r4, r0, #0x0
+ blx MI_CpuFill8
+ mov r0, #0x0
+ strh r0, [r4, #0x0]
+ str r5, [r4, #0x8]
+ strh r6, [r4, #0xc]
+ add r0, r7, #0x0
+ str r7, [r4, #0x10]
+ bl FUN_02025838
+ ldr r3, [sp, #0x0]
+ add r1, r5, #0x0
+ add r2, r6, #0x0
+ str r0, [r4, #0x18]
+ bl FUN_020258B0
+ str r0, [r4, #0x14]
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02085578
+FUN_02085578: ; 0x02085578
+ push {r3-r7, lr}
+ add r7, r2, #0x0
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ add r0, r7, #0x0
+ mov r1, #0x1c
+ bl FUN_020169D8
+ mov r1, #0x0
+ mov r2, #0x1c
+ add r4, r0, #0x0
+ blx MI_CpuFill8
+ mov r0, #0x0
+ strh r0, [r4, #0x0]
+ str r5, [r4, #0x10]
+ add r0, r7, #0x0
+ bl FUN_020256BC
+ str r0, [r4, #0x14]
+ ldr r2, [r4, #0x14]
+ add r0, r6, #0x0
+ mov r1, #0xa9
+ bl FUN_020671BC
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020855B0
+FUN_020855B0: ; 0x020855B0
+ push {r3-r7, lr}
+ add r7, r2, #0x0
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ add r0, r7, #0x0
+ mov r1, #0x1c
+ bl FUN_020169D8
+ mov r1, #0x0
+ mov r2, #0x1c
+ add r4, r0, #0x0
+ blx MI_CpuFill8
+ mov r0, #0x0
+ strh r0, [r4, #0x0]
+ add r0, r7, #0x0
+ str r5, [r4, #0x10]
+ bl FUN_020256BC
+ add r1, r6, #0x0
+ str r0, [r4, #0x14]
+ bl FUN_020257D0
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020855E4
+FUN_020855E4: ; 0x020855E4
+ ldr r0, [r0, #0x4]
+ bx lr
+
+ thumb_func_start FUN_020855E8
+FUN_020855E8: ; 0x020855E8
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_020855E4
+ cmp r0, #0x0
+ bne _020855FC
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_020855FC:
+ ldr r0, [r5, #0x18]
+ ldr r3, [r5, #0x14]
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_02025888
+ mov r0, #0x1
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_0208560C
+FUN_0208560C: ; 0x0208560C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_020855E4
+ cmp r0, #0x0
+ bne _0208561E
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0208561E:
+ ldr r2, [r5, #0x14]
+ add r0, r4, #0x0
+ mov r1, #0xa9
+ bl FUN_02067830
+ mov r0, #0x1
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0208562C
+FUN_0208562C: ; 0x0208562C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x14]
+ cmp r0, #0x0
+ beq _0208563A
+ bl FUN_02016A18
+_0208563A:
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02085644
+FUN_02085644: ; 0x02085644
+ push {r3-r7, lr}
+ add r5, r1, #0x0
+ mov r1, #0x0
+ add r7, r0, #0x0
+ add r4, r2, #0x0
+ str r1, [sp, #0x0]
+ bl FUN_02025864
+ add r6, r0, #0x0
+ mov r0, #0x0
+ mvn r0, r0
+ cmp r6, r0
+ beq _0208569E
+ add r0, r4, #0x0
+ bl FUN_020256BC
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0xa9
+ add r2, r4, #0x0
+ bl FUN_020671BC
+ add r0, r7, #0x0
+ mov r1, #0x0
+ add r2, r6, #0x0
+ add r3, r4, #0x0
+ bl FUN_02025888
+ add r0, r4, #0x0
+ bl FUN_02025658
+ add r0, r5, #0x0
+ mov r1, #0xa9
+ add r2, r4, #0x0
+ bl FUN_02067830
+ add r0, r5, #0x0
+ mov r1, #0x6
+ add r2, sp, #0x0
+ bl FUN_02067830
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add r0, r6, #0x0
+_0208569E:
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_020856A0
+FUN_020856A0: ; 0x020856A0
+ push {r3-r7, lr}
+ add r5, r1, #0x0
+ add r4, r2, #0x0
+ mov r1, #0x0
+ add r2, r5, #0x0
+ add r7, r0, #0x0
+ str r1, [sp, #0x0]
+ bl FUN_020258B0
+ add r6, r0, #0x0
+ bne _020856BC
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r7, pc}
+_020856BC:
+ bl FUN_020257CC
+ bl FUN_0206EAD8
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0xa9
+ add r2, r6, #0x0
+ bl FUN_02067830
+ add r0, r4, #0x0
+ mov r1, #0x6
+ add r2, sp, #0x0
+ bl FUN_02067830
+ add r0, r7, #0x0
+ mov r1, #0x0
+ add r2, r5, #0x0
+ bl FUN_02025878
+ add r0, r6, #0x0
+ bl FUN_02016A18
+ add r0, r5, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020856F0
+FUN_020856F0: ; 0x020856F0
+ push {r3-r7, lr}
+ add r5, r1, #0x0
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x34
+ bl FUN_02016998
+ mov r1, #0x0
+ mov r2, #0x34
+ add r6, r0, #0x0
+ blx MI_CpuFill8
+ mov r0, #0x0
+ strh r0, [r6, #0x0]
+ add r0, r4, #0x0
+ bl FUN_020257C0
+ str r0, [r6, #0x8]
+ mov r0, #0x8
+ add r1, r5, #0x0
+ bl FUN_020219F4
+ str r0, [r6, #0x10]
+ add r0, r4, #0x0
+ bl FUN_020257C4
+ add r1, r0, #0x0
+ ldr r0, [r6, #0x10]
+ bl FUN_02021E28
+ add r0, r4, #0x0
+ bl FUN_020257CC
+ strb r0, [r6, #0xf]
+ add r0, r4, #0x0
+ bl FUN_020257D8
+ strb r0, [r6, #0xd]
+ add r0, r4, #0x0
+ bl FUN_020257DC
+ strb r0, [r6, #0xe]
+ mov r5, #0x0
+ mov r7, #0x2
+_02085748:
+ lsl r1, r5, #0x18
+ add r0, r4, #0x0
+ lsr r1, r1, #0x18
+ add r2, r7, #0x0
+ bl FUN_020257E0
+ lsl r1, r5, #0x1
+ add r1, r6, r1
+ strh r0, [r1, #0x14]
+ add r0, r5, #0x1
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ cmp r5, #0x3
+ blo _02085748
+ add r7, r6, #0x0
+ mov r5, #0x0
+ add r7, #0x1a
+_0208576A:
+ lsl r1, r5, #0x18
+ add r0, r4, #0x0
+ lsr r1, r1, #0x18
+ bl FUN_02025814
+ add r1, r0, #0x0
+ lsl r0, r5, #0x3
+ add r0, r7, r0
+ bl FUN_02013960
+ add r0, r5, #0x1
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ cmp r5, #0x3
+ blo _0208576A
+ add r0, r6, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_0208578C
+FUN_0208578C: ; 0x0208578C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x10]
+ cmp r0, #0x0
+ beq _0208579A
+ bl FUN_02021A20
+_0208579A:
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020857A4
+FUN_020857A4: ; 0x020857A4
+ push {r3-r7, lr}
+ add r7, r1, #0x0
+ add r4, r7, #0x0
+ add r6, r0, #0x0
+ mov r5, #0x0
+ add r4, #0x1a
+_020857B0:
+ lsl r1, r5, #0x3
+ lsl r2, r5, #0x18
+ add r0, r6, #0x0
+ add r1, r4, r1
+ lsr r2, r2, #0x18
+ bl FUN_02025824
+ add r0, r5, #0x1
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ cmp r5, #0x3
+ blo _020857B0
+ ldrb r1, [r7, #0xf]
+ add r0, r6, #0x0
+ bl FUN_020257D0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020857D4
+FUN_020857D4: ; 0x020857D4
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ beq _020857F4
+ bl FUN_02006290
+ cmp r0, #0x0
+ beq _020857F4
+ ldr r0, [r4, #0x0]
+ bl FUN_02006260
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+ mov r0, #0x1
+ pop {r4, pc}
+_020857F4:
+ mov r0, #0x0
+ pop {r4, pc}
+
+ thumb_func_start FUN_020857F8
+FUN_020857F8: ; 0x020857F8
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl FUN_0200628C
+ mov r2, #0x1
+ add r5, r0, #0x0
+ mov r0, #0x3
+ mov r1, #0x28
+ lsl r2, r2, #0xc
+ bl FUN_0201681C
+ add r0, r4, #0x0
+ mov r1, #0x1c
+ mov r2, #0x28
+ bl FUN_02006268
+ mov r1, #0x0
+ mov r2, #0x1c
+ add r4, r0, #0x0
+ blx MI_CpuFill8
+ mov r1, #0x28
+ str r1, [r4, #0x0]
+ ldr r0, [r5, #0x14]
+ bl FUN_020856F0
+ str r0, [r4, #0x10]
+ ldr r0, [r5, #0x10]
+ bl LoadPlayerDataAddress
+ ldr r1, [r4, #0x10]
+ str r0, [r1, #0x4]
+ ldrh r0, [r5, #0x0]
+ cmp r0, #0x1
+ bne _02085844
+ ldrb r1, [r5, #0xf]
+ ldr r0, [r4, #0x10]
+ strb r1, [r0, #0xf]
+_02085844:
+ ldr r1, [r4, #0x10]
+ ldrb r0, [r1, #0xf]
+ cmp r0, #0xc
+ blo _02085850
+ mov r0, #0x0
+ strb r0, [r1, #0xf]
+_02085850:
+ ldrh r1, [r5, #0x0]
+ ldr r0, [r4, #0x10]
+ strh r1, [r0, #0x0]
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0208585C
+FUN_0208585C: ; 0x0208585C
+ push {r4-r6, lr}
+ add r6, r0, #0x0
+ add r5, r1, #0x0
+ bl FUN_02006278
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_0200628C
+ add r6, r0, #0x0
+ ldr r0, [r5, #0x0]
+ cmp r0, #0x4
+ bls _02085878
+ b _02085990
+_02085878:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02085884: ; jump table (using 16-bit offset)
+ .short _0208588E - _02085884 - 2; case 0
+ .short _020858A6 - _02085884 - 2; case 1
+ .short _020858D2 - _02085884 - 2; case 2
+ .short _02085900 - _02085884 - 2; case 3
+ .short _0208595E - _02085884 - 2; case 4
+_0208588E:
+ ldrh r1, [r6, #0x0]
+ ldr r0, [r4, #0x10]
+ strh r1, [r0, #0x0]
+ ldr r0, _02085994 ; =0x020FCAA8
+ ldr r1, [r4, #0x10]
+ ldr r2, [r4, #0x0]
+ bl FUN_02006234
+ str r0, [r4, #0xc]
+ mov r0, #0x1
+ str r0, [r5, #0x0]
+ b _02085990
+_020858A6:
+ add r0, r4, #0x0
+ add r0, #0xc
+ bl FUN_020857D4
+ cmp r0, #0x0
+ beq _02085990
+ ldr r0, [r4, #0x10]
+ ldrh r1, [r0, #0x0]
+ cmp r1, #0x3
+ beq _020858C6
+ ldr r0, _02085998 ; =0x0000FFFF
+ cmp r1, r0
+ bne _020858CC
+ mov r0, #0x2
+ str r0, [r5, #0x0]
+ b _02085990
+_020858C6:
+ mov r0, #0x2
+ str r0, [r5, #0x0]
+ b _02085990
+_020858CC:
+ mov r0, #0x3
+ str r0, [r5, #0x0]
+ b _02085990
+_020858D2:
+ ldrh r0, [r6, #0x0]
+ cmp r0, #0x1
+ bne _020858FC
+ ldr r1, [r4, #0x10]
+ ldrh r0, [r1, #0x0]
+ cmp r0, #0x3
+ bne _020858F8
+ ldr r0, [r6, #0x14]
+ bl FUN_020857A4
+ ldr r0, [r6, #0x10]
+ bl FUN_02029FC8
+ mov r1, #0x2
+ bl FUN_0202A170
+ mov r0, #0x1
+ str r0, [r6, #0x4]
+ b _020858FC
+_020858F8:
+ mov r0, #0x0
+ str r0, [r6, #0x4]
+_020858FC:
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_02085900:
+ ldr r2, [r6, #0x10]
+ ldr r3, [r4, #0x0]
+ mov r0, #0x2
+ mov r1, #0x0
+ bl FUN_02085338
+ str r0, [r4, #0x8]
+ ldr r0, [r4, #0x10]
+ add r1, r0, #0x0
+ ldrb r0, [r0, #0x2]
+ add r1, #0x1a
+ lsl r0, r0, #0x3
+ add r0, r1, r0
+ bl FUN_0201385C
+ cmp r0, #0x0
+ beq _02085938
+ ldr r1, [r4, #0x10]
+ add r0, r4, #0x0
+ add r2, r1, #0x0
+ ldrb r1, [r1, #0x2]
+ add r2, #0x1a
+ add r0, #0x14
+ lsl r1, r1, #0x3
+ add r1, r2, r1
+ bl FUN_02013960
+ b _02085942
+_02085938:
+ add r0, r4, #0x0
+ add r0, #0x14
+ mov r1, #0x3
+ bl FUN_0201373C
+_02085942:
+ add r1, r4, #0x0
+ ldr r0, [r4, #0x8]
+ add r1, #0x14
+ bl FUN_020853BC
+ ldr r0, _0208599C ; =0x020FCAB8
+ ldr r1, [r4, #0x8]
+ ldr r2, [r4, #0x0]
+ bl FUN_02006234
+ str r0, [r4, #0xc]
+ mov r0, #0x4
+ str r0, [r5, #0x0]
+ b _02085990
+_0208595E:
+ add r0, r4, #0x0
+ add r0, #0xc
+ bl FUN_020857D4
+ cmp r0, #0x0
+ beq _02085990
+ ldr r0, [r4, #0x8]
+ bl FUN_020853E4
+ cmp r0, #0x0
+ bne _02085986
+ ldr r1, [r4, #0x10]
+ ldr r0, [r4, #0x8]
+ add r2, r1, #0x0
+ ldrb r1, [r1, #0x2]
+ add r2, #0x1a
+ lsl r1, r1, #0x3
+ add r1, r2, r1
+ bl FUN_020853FC
+_02085986:
+ ldr r0, [r4, #0x8]
+ bl FUN_020853A8
+ mov r0, #0x0
+ str r0, [r5, #0x0]
+_02085990:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+_02085994: .word 0x020FCAA8
+_02085998: .word 0x0000FFFF
+_0208599C: .word 0x020FCAB8
+
+ thumb_func_start FUN_020859A0
+FUN_020859A0: ; 0x020859A0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_02006278
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x10]
+ bl FUN_0208578C
+ add r0, r5, #0x0
+ bl FUN_0200627C
+ ldr r0, [r4, #0x0]
+ bl FUN_020168D0
+ mov r0, #0x1
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_020859C0
+FUN_020859C0: ; 0x020859C0
+ push {r3-r7, lr}
+ mov r2, #0x2
+ add r5, r0, #0x0
+ mov r0, #0x3
+ mov r1, #0x35
+ lsl r2, r2, #0x12
+ bl FUN_0201681C
+ mov r0, #0x35
+ bl FUN_02230F3C
+ bl FUN_0222F7E0
+ ldr r1, _02085BA0 ; =0x0000042C
+ add r0, r5, #0x0
+ mov r2, #0x35
+ bl FUN_02006268
+ ldr r2, _02085BA0 ; =0x0000042C
+ mov r1, #0x0
+ add r4, r0, #0x0
+ blx FUN_020DF4A4
+ bl FUN_0222E2BC
+ mov r1, #0x23
+ lsl r1, r1, #0x4
+ str r0, [r4, r1]
+ add r0, r5, #0x0
+ bl FUN_0200628C
+ str r0, [r4, #0x0]
+ mov r0, #0x35
+ bl FUN_020669C0
+ ldr r1, _02085BA4 ; =0x00000428
+ mov r2, #0xff
+ str r0, [r4, r1]
+ add r0, r4, #0x0
+ add r0, #0xd4
+ str r2, [r0, #0x0]
+ mov r0, #0x0
+ sub r1, #0x10
+ str r0, [r4, r1]
+ ldr r0, [r4, #0x0]
+ ldr r0, [r0, #0x20]
+ bl FUN_02029E0C
+ asr r1, r0, #0x2
+ lsr r1, r1, #0x1d
+ add r1, r0, r1
+ asr r0, r1, #0x3
+ add r1, r0, #0x1
+ ldr r0, _02085BA8 ; =0x0000041C
+ str r1, [r4, r0]
+ ldr r1, [r4, r0]
+ cmp r1, #0xa
+ ble _02085A38
+ mov r1, #0xa
+ str r1, [r4, r0]
+_02085A38:
+ ldr r0, [r4, #0x0]
+ bl FUN_02085D84
+ mov r1, #0xf1
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ ldr r0, [r4, #0x0]
+ bl FUN_02085D84
+ mov r1, #0xf2
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ ldr r0, [r4, #0x0]
+ ldr r0, [r0, #0x20]
+ bl FUN_02029CEC
+ str r0, [r4, #0x64]
+ mov r6, #0x0
+ add r5, r4, #0x0
+ mov r7, #0xff
+_02085A60:
+ ldr r0, [r4, #0x0]
+ add r1, r6, #0x0
+ ldr r0, [r0, #0x20]
+ bl FUN_02029C8C
+ str r7, [r5, #0x4]
+ str r0, [r5, #0x8]
+ add r6, r6, #0x1
+ add r5, #0x8
+ cmp r6, #0xc
+ blt _02085A60
+ mov r5, #0x0
+ add r6, r5, #0x0
+ mov r7, #0xa1
+_02085A7C:
+ ldr r0, [r4, #0x0]
+ add r0, r0, r6
+ ldr r0, [r0, #0x4]
+ cmp r0, #0x0
+ beq _02085A9A
+ add r1, r7, #0x0
+ mov r2, #0x0
+ bl FUN_020671BC
+ cmp r0, #0x0
+ beq _02085A9A
+ lsl r0, r0, #0x3
+ add r0, r4, r0
+ sub r0, r0, #0x4
+ str r5, [r0, #0x0]
+_02085A9A:
+ add r5, r5, #0x1
+ add r6, r6, #0x4
+ cmp r5, #0x6
+ blt _02085A7C
+ mov r0, #0x35
+ bl FUN_02016B94
+ add r1, r4, #0x0
+ add r1, #0xe4
+ str r0, [r1, #0x0]
+ mov r0, #0x40
+ mov r1, #0x35
+ bl FUN_0201C24C
+ mov r0, #0x35
+ bl FUN_02002FD0
+ add r1, r4, #0x0
+ add r1, #0xe8
+ str r0, [r1, #0x0]
+ add r0, r4, #0x0
+ add r0, #0xe8
+ ldr r0, [r0, #0x0]
+ mov r1, #0x1
+ bl FUN_020038F0
+ add r0, r4, #0x0
+ add r0, #0xe8
+ mov r2, #0x2
+ ldr r0, [r0, #0x0]
+ mov r1, #0x0
+ lsl r2, r2, #0x8
+ mov r3, #0x35
+ bl FUN_02003008
+ add r0, r4, #0x0
+ add r0, #0xe8
+ mov r1, #0x1
+ ldr r0, [r0, #0x0]
+ lsl r2, r1, #0x9
+ mov r3, #0x35
+ bl FUN_02003008
+ add r0, r4, #0x0
+ add r0, #0xe8
+ mov r1, #0x2
+ ldr r0, [r0, #0x0]
+ lsl r2, r1, #0x8
+ mov r3, #0x35
+ bl FUN_02003008
+ add r0, r4, #0x0
+ add r0, #0xe8
+ mov r2, #0x2
+ ldr r0, [r0, #0x0]
+ mov r1, #0x3
+ lsl r2, r2, #0x8
+ mov r3, #0x35
+ bl FUN_02003008
+ add r0, r4, #0x0
+ add r0, #0xe4
+ ldr r0, [r0, #0x0]
+ bl FUN_02230F80
+ bl FUN_0222E360
+ mov r0, #0x35
+ bl FUN_02006D98
+ mov r1, #0x69
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ mov r0, #0x35
+ mov r1, #0x1
+ mov r2, #0x0
+ bl FUN_02014BF4
+ mov r1, #0x97
+ lsl r1, r1, #0x2
+ str r0, [r4, r1]
+ ldr r0, [r4, #0x0]
+ ldr r0, [r0, #0x24]
+ bl FUN_02025084
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ add r1, r4, #0x0
+ add r0, #0xe4
+ add r1, #0xe8
+ ldr r0, [r0, #0x0]
+ ldr r1, [r1, #0x0]
+ add r2, r5, #0x0
+ bl FUN_0222ED34
+ add r0, r4, #0x0
+ add r1, r4, #0x0
+ add r0, #0xe4
+ add r1, #0xe8
+ ldr r0, [r0, #0x0]
+ ldr r1, [r1, #0x0]
+ add r2, r5, #0x0
+ bl FUN_0222EDBC
+ add r0, r4, #0x0
+ add r0, #0xd4
+ bl FUN_0222E7E8
+ bl FUN_0201CC08
+ mov r0, #0x4
+ bl FUN_0201CC24
+ add r0, r4, #0x0
+ bl FUN_022300E4
+ ldr r0, _02085BAC ; =0x022310CD
+ add r1, r4, #0x0
+ bl FUN_02015F10
+ add r0, r4, #0x0
+ bl FUN_0222DD1C
+ mov r1, #0x0
+ mov r0, #0x3b
+ add r2, r1, #0x0
+ bl FUN_0200433C
+ mov r0, #0x1
+ pop {r3-r7, pc}
+ nop
+_02085BA0: .word 0x0000042C
+_02085BA4: .word 0x00000428
+_02085BA8: .word 0x0000041C
+_02085BAC: .word 0x022310CD
+
+ thumb_func_start FUN_02085BB0
+FUN_02085BB0: ; 0x02085BB0
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ bl FUN_02006278
+ ldr r1, [r5, #0x0]
+ add r4, r0, #0x0
+ cmp r1, #0x0
+ beq _02085BCA
+ cmp r1, #0x1
+ beq _02085BD8
+ cmp r1, #0x2
+ beq _02085BF6
+ b _02085C02
+_02085BCA:
+ bl FUN_0200E308
+ cmp r0, #0x1
+ bne _02085C02
+ mov r0, #0x1
+ str r0, [r5, #0x0]
+ b _02085C02
+_02085BD8:
+ bl FUN_0222F990
+ cmp r0, #0x0
+ bne _02085BE6
+ mov r0, #0x2
+ str r0, [r5, #0x0]
+ b _02085C02
+_02085BE6:
+ mov r0, #0x69
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_02006ED4
+ bl FUN_0222E3A0
+ b _02085C02
+_02085BF6:
+ bl FUN_0200E308
+ cmp r0, #0x1
+ bne _02085C02
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_02085C02:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02085C08
+FUN_02085C08: ; 0x02085C08
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_02006278
+ add r4, r0, #0x0
+ mov r0, #0x1
+ mov r1, #0x0
+ bl FUN_0201E6E4
+ mov r0, #0x2
+ mov r1, #0x0
+ bl FUN_0201E6E4
+ mov r0, #0x4
+ mov r1, #0x0
+ bl FUN_0201E6E4
+ mov r0, #0x8
+ mov r1, #0x0
+ bl FUN_0201E6E4
+ mov r0, #0x1
+ mov r1, #0x0
+ bl FUN_0201E74C
+ mov r0, #0x2
+ mov r1, #0x0
+ bl FUN_0201E74C
+ mov r0, #0x4
+ mov r1, #0x0
+ bl FUN_0201E74C
+ mov r0, #0x8
+ mov r1, #0x0
+ bl FUN_0201E74C
+ add r0, r4, #0x0
+ add r0, #0xe4
+ ldr r0, [r0, #0x0]
+ mov r1, #0x1
+ bl FUN_020178A0
+ add r0, r4, #0x0
+ add r0, #0xe4
+ ldr r0, [r0, #0x0]
+ mov r1, #0x2
+ bl FUN_020178A0
+ add r0, r4, #0x0
+ add r0, #0xe4
+ ldr r0, [r0, #0x0]
+ mov r1, #0x3
+ bl FUN_020178A0
+ add r0, r4, #0x0
+ add r0, #0xe4
+ ldr r0, [r0, #0x0]
+ mov r1, #0x4
+ bl FUN_020178A0
+ add r0, r4, #0x0
+ add r0, #0xe4
+ ldr r0, [r0, #0x0]
+ mov r1, #0x5
+ bl FUN_020178A0
+ add r0, r4, #0x0
+ add r0, #0xe4
+ ldr r0, [r0, #0x0]
+ mov r1, #0x6
+ bl FUN_020178A0
+ add r0, r4, #0x0
+ add r0, #0xe4
+ ldr r0, [r0, #0x0]
+ mov r1, #0x7
+ bl FUN_020178A0
+ add r0, r4, #0x0
+ add r0, #0xe4
+ ldr r0, [r0, #0x0]
+ bl FUN_02016A18
+ add r0, r4, #0x0
+ add r0, #0xe8
+ ldr r0, [r0, #0x0]
+ mov r1, #0x0
+ bl FUN_02003038
+ add r0, r4, #0x0
+ add r0, #0xe8
+ ldr r0, [r0, #0x0]
+ mov r1, #0x1
+ bl FUN_02003038
+ add r0, r4, #0x0
+ add r0, #0xe8
+ ldr r0, [r0, #0x0]
+ mov r1, #0x2
+ bl FUN_02003038
+ add r0, r4, #0x0
+ add r0, #0xe8
+ ldr r0, [r0, #0x0]
+ mov r1, #0x3
+ bl FUN_02003038
+ add r0, r4, #0x0
+ add r0, #0xe8
+ ldr r0, [r0, #0x0]
+ bl FUN_02002FEC
+ mov r1, #0xf1
+ lsl r1, r1, #0x2
+ ldr r1, [r4, r1]
+ ldr r0, [r4, #0x0]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl FUN_02085D8C
+ ldr r0, _02085D64 ; =0x00000428
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ add r0, r4, #0x0
+ bl FUN_0222DAEC
+ mov r0, #0x73
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_0202212C
+ mov r0, #0x69
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_020072E8
+ mov r0, #0x97
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ bl FUN_02014C28
+ add r0, r4, #0x0
+ bl FUN_0222DD38
+ add r0, r4, #0x0
+ add r0, #0xd4
+ bl FUN_0222E874
+ bl FUN_0201C29C
+ mov r0, #0x23
+ lsl r0, r0, #0x4
+ ldr r0, [r4, r0]
+ bl FUN_020223BC
+ mov r0, #0x35
+ bl FUN_02230F70
+ add r0, r5, #0x0
+ bl FUN_0200627C
+ bl FUN_0201CD04
+ mov r0, #0x35
+ bl FUN_020168D0
+ ldr r0, _02085D68 ; =0x00000008
+ bl FUN_02005F60
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ nop
+_02085D64: .word 0x00000428
+_02085D68: .word 0x00000008
+
+ thumb_func_start FUN_02085D6C
+FUN_02085D6C: ; 0x02085D6C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, r1
+ bge _02085D7C
+ bl ErrorHandling
+ mov r1, #0x0
+_02085D7C:
+ lsl r0, r1, #0x2
+ add r0, r4, r0
+ ldr r0, [r0, #0x4]
+ pop {r4, pc}
+
+ thumb_func_start FUN_02085D84
+FUN_02085D84: ; 0x02085D84
+ add r0, #0x2c
+ ldrb r0, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02085D8C
+FUN_02085D8C: ; 0x02085D8C
+ add r0, #0x2c
+ strb r1, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02085D94
+FUN_02085D94: ; 0x02085D94
+ add r0, #0x2d
+ ldrb r0, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02085D9C
+FUN_02085D9C: ; 0x02085D9C
+ add r0, #0x2d
+ strb r1, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02085DA4
+FUN_02085DA4: ; 0x02085DA4
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ bl FUN_0204652C
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ ldr r7, [r6, #0x8]
+ bl FUN_02046528
+ str r0, [sp, #0x4]
+ ldr r0, [r6, #0x14]
+ cmp r0, #0x6
+ bls _02085DC2
+ b _02085F38
+_02085DC2:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02085DCE: ; jump table (using 16-bit offset)
+ .short _02085DDC - _02085DCE - 2; case 0
+ .short _02085E38 - _02085DCE - 2; case 1
+ .short _02085E48 - _02085DCE - 2; case 2
+ .short _02085E66 - _02085DCE - 2; case 3
+ .short _02085EA6 - _02085DCE - 2; case 4
+ .short _02085F14 - _02085DCE - 2; case 5
+ .short _02085F20 - _02085DCE - 2; case 6
+_02085DDC:
+ add r0, r5, #0x0
+ bl FUN_0204AF3C
+ ldr r0, [r6, #0x10]
+ bl FUN_02029C80
+ str r0, [r7, #0x20]
+ add r0, r7, #0x0
+ mov r1, #0x0
+ bl FUN_02085D8C
+ ldr r0, [r6, #0x10]
+ bl FUN_0206BB1C
+ str r0, [r7, #0x1c]
+ bl FUN_0206B9AC
+ mov r4, #0x0
+ str r0, [sp, #0x0]
+ str r0, [r7, #0x0]
+ cmp r0, #0x0
+ ble _02085E1E
+ add r5, r7, #0x0
+_02085E0A:
+ ldr r0, [r7, #0x1c]
+ add r1, r4, #0x0
+ bl FUN_0206B9B0
+ str r0, [r5, #0x4]
+ ldr r0, [sp, #0x0]
+ add r4, r4, #0x1
+ add r5, r5, #0x4
+ cmp r4, r0
+ blt _02085E0A
+_02085E1E:
+ cmp r4, #0x6
+ bge _02085E32
+ lsl r0, r4, #0x2
+ add r1, r7, r0
+ mov r0, #0x0
+_02085E28:
+ add r4, r4, #0x1
+ str r0, [r1, #0x4]
+ add r1, r1, #0x4
+ cmp r4, #0x6
+ blt _02085E28
+_02085E32:
+ mov r0, #0x1
+ str r0, [r6, #0x14]
+ b _02085F38
+_02085E38:
+ ldr r1, _02085F40 ; =0x020FCAD8
+ add r0, r5, #0x0
+ add r2, r7, #0x0
+ bl FUN_02046500
+ mov r0, #0x2
+ str r0, [r6, #0x14]
+ b _02085F38
+_02085E48:
+ ldr r0, [r6, #0x8]
+ bl FUN_02085D94
+ cmp r0, #0x0
+ beq _02085E5A
+ cmp r0, #0x1
+ beq _02085E60
+ bl ErrorHandling
+_02085E5A:
+ mov r0, #0x5
+ str r0, [r6, #0x14]
+ b _02085F38
+_02085E60:
+ mov r0, #0x3
+ str r0, [r6, #0x14]
+ b _02085F38
+_02085E66:
+ ldr r4, [r6, #0xc]
+ ldr r0, [r7, #0x1c]
+ str r0, [r4, #0x0]
+ ldr r0, [r6, #0x10]
+ bl FUN_0206F158
+ str r0, [r4, #0x4]
+ ldr r0, [r6, #0x10]
+ bl FUN_02025838
+ str r0, [r4, #0x8]
+ add r0, r4, #0x0
+ mov r1, #0x0
+ add r0, #0x22
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x21
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0xf
+ add r0, #0x20
+ strb r1, [r0, #0x0]
+ ldr r0, [r7, #0x24]
+ ldr r1, _02085F44 ; =0x020F96DC
+ str r0, [r4, #0xc]
+ add r0, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_02046500
+ mov r0, #0x4
+ str r0, [r6, #0x14]
+ b _02085F38
+_02085EA6:
+ ldr r0, [r6, #0x8]
+ ldr r4, [r6, #0xc]
+ bl FUN_02085D84
+ add r0, r0, #0x1
+ str r0, [sp, #0x8]
+ add r4, #0x22
+ ldrb r1, [r4, #0x0]
+ cmp r1, #0x7
+ beq _02085F0E
+ ldr r0, [r6, #0x8]
+ bl FUN_02085D6C
+ mov r1, #0xa1
+ add r2, sp, #0x8
+ add r5, r0, #0x0
+ bl FUN_02067830
+ ldr r1, [sp, #0x8]
+ ldr r0, [r7, #0x20]
+ sub r1, r1, #0x1
+ bl FUN_02029C8C
+ add r2, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0xaa
+ bl FUN_02067830
+ ldr r1, [sp, #0x8]
+ ldr r0, [r7, #0x20]
+ sub r1, r1, #0x1
+ bl FUN_02029C8C
+ mov r1, #0x0
+ bl FUN_02029CC8
+ bl FUN_02029CE0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_02085FD0
+ add r4, r0, #0x0
+ ldr r0, [sp, #0x4]
+ ldr r0, [r0, #0xc]
+ bl FUN_02022504
+ lsl r2, r4, #0x18
+ add r1, r5, #0x0
+ lsr r2, r2, #0x18
+ bl FUN_02061798
+_02085F0E:
+ mov r0, #0x1
+ str r0, [r6, #0x14]
+ b _02085F38
+_02085F14:
+ add r0, r5, #0x0
+ bl FUN_0204AF84
+ mov r0, #0x6
+ str r0, [r6, #0x14]
+ b _02085F38
+_02085F20:
+ ldr r0, [r6, #0xc]
+ bl FUN_02016A18
+ ldr r0, [r6, #0x8]
+ bl FUN_02016A18
+ add r0, r6, #0x0
+ bl FUN_02016A18
+ add sp, #0xc
+ mov r0, #0x1
+ pop {r4-r7, pc}
+_02085F38:
+ mov r0, #0x0
+ add sp, #0xc
+ pop {r4-r7, pc}
+ nop
+_02085F40: .word 0x020FCAD8
+_02085F44: .word 0x020F96DC
+
+ thumb_func_start FUN_02085F48
+FUN_02085F48: ; 0x02085F48
+ push {r4-r6, lr}
+ add r6, r0, #0x0
+ add r5, r1, #0x0
+ mov r0, #0xb
+ mov r1, #0x18
+ bl FUN_020169D8
+ add r4, r0, #0x0
+ add r2, r4, #0x0
+ mov r1, #0x18
+ mov r0, #0x0
+_02085F5E:
+ strb r0, [r2, #0x0]
+ add r2, r2, #0x1
+ sub r1, r1, #0x1
+ bne _02085F5E
+ mov r0, #0xb
+ mov r1, #0x30
+ str r5, [r4, #0x10]
+ bl FUN_02016998
+ mov r1, #0x0
+ mov r2, #0x30
+ str r0, [r4, #0x8]
+ blx FUN_020DF4A4
+ add r0, r5, #0x0
+ bl LoadPlayerDataAddress
+ ldr r1, [r4, #0x8]
+ str r0, [r1, #0x24]
+ ldr r0, [r4, #0x8]
+ mov r1, #0x40
+ str r5, [r0, #0x28]
+ mov r0, #0xb
+ bl FUN_02016998
+ mov r1, #0x0
+ mov r2, #0x40
+ str r0, [r4, #0xc]
+ blx FUN_020DF4A4
+ ldr r1, _02085FA8 ; =FUN_02085DA4
+ add r0, r6, #0x0
+ add r2, r4, #0x0
+ bl FUN_0204640C
+ pop {r4-r6, pc}
+ nop
+_02085FA8: .word FUN_02085DA4
+
+ thumb_func_start FUN_02085FAC
+FUN_02085FAC: ; 0x02085FAC
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _02085FC8 ; =0x0000032A
+ cmp r4, r0
+ blo _02085FBA
+ bl ErrorHandling
+_02085FBA:
+ mov r0, #0xa
+ add r1, r4, #0x0
+ mul r1, r0
+ ldr r0, _02085FCC ; =0x020FCAE8
+ ldrh r0, [r0, r1]
+ pop {r4, pc}
+ nop
+_02085FC8: .word 0x0000032A
+_02085FCC: .word 0x020FCAE8
+
+ thumb_func_start FUN_02085FD0
+FUN_02085FD0: ; 0x02085FD0
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _02085FEC ; =0x0000032A
+ cmp r4, r0
+ blo _02085FDE
+ bl ErrorHandling
+_02085FDE:
+ mov r0, #0xa
+ add r1, r4, #0x0
+ mul r1, r0
+ ldr r0, _02085FF0 ; =0x020FCAEA
+ ldrb r0, [r0, r1]
+ pop {r4, pc}
+ nop
+_02085FEC: .word 0x0000032A
+_02085FF0: .word 0x020FCAEA
+
+ thumb_func_start FUN_02085FF4
+FUN_02085FF4: ; 0x02085FF4
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _02086010 ; =0x0000032A
+ cmp r4, r0
+ blo _02086002
+ bl ErrorHandling
+_02086002:
+ mov r0, #0xa
+ add r1, r4, #0x0
+ mul r1, r0
+ ldr r0, _02086014 ; =0x020FCAEC
+ ldrb r0, [r0, r1]
+ pop {r4, pc}
+ nop
+_02086010: .word 0x0000032A
+_02086014: .word 0x020FCAEC
+
+ thumb_func_start FUN_02086018
+FUN_02086018: ; 0x02086018
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _02086034 ; =0x0000032A
+ cmp r4, r0
+ blo _02086026
+ bl ErrorHandling
+_02086026:
+ mov r0, #0xa
+ add r1, r4, #0x0
+ mul r1, r0
+ ldr r0, _02086038 ; =0x020FCAED
+ ldrb r0, [r0, r1]
+ pop {r4, pc}
+ nop
+_02086034: .word 0x0000032A
+_02086038: .word 0x020FCAED
+
+ thumb_func_start FUN_0208603C
+FUN_0208603C: ; 0x0208603C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _02086058 ; =0x0000032A
+ cmp r4, r0
+ blo _0208604A
+ bl ErrorHandling
+_0208604A:
+ mov r0, #0xa
+ add r1, r4, #0x0
+ mul r1, r0
+ ldr r0, _0208605C ; =0x020FCAEE
+ ldrh r0, [r0, r1]
+ pop {r4, pc}
+ nop
+_02086058: .word 0x0000032A
+_0208605C: .word 0x020FCAEE
+
+ thumb_func_start FUN_02086060
+FUN_02086060: ; 0x02086060
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _0208607C ; =0x0000032A
+ cmp r4, r0
+ blo _0208606E
+ bl ErrorHandling
+_0208606E:
+ mov r0, #0xa
+ add r1, r4, #0x0
+ mul r1, r0
+ ldr r0, _02086080 ; =0x020FCAF0
+ ldrb r0, [r0, r1]
+ pop {r4, pc}
+ nop
+_0208607C: .word 0x0000032A
+_02086080: .word 0x020FCAF0
+
+ thumb_func_start FUN_02086084
+FUN_02086084: ; 0x02086084
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r0, #0x0
+ add r1, r0, #0x0
+ bl FUN_02015F10
+ bl FUN_02015F1C
+ mov r2, #0x1
+ mov r0, #0x3
+ mov r1, #0x47
+ lsl r2, r2, #0x12
+ bl FUN_0201681C
+ add r0, r5, #0x0
+ mov r1, #0x80
+ mov r2, #0x47
+ bl FUN_02006268
+ mov r1, #0x0
+ mov r2, #0x80
+ add r4, r0, #0x0
+ blx FUN_020DF4A4
+ add r0, r5, #0x0
+ bl FUN_0200628C
+ str r0, [r4, #0x0]
+ ldr r0, [r0, #0x10]
+ bl FUN_02024FF4
+ str r0, [r4, #0x10]
+ ldr r0, [r4, #0x0]
+ ldr r0, [r0, #0x10]
+ bl FUN_02025084
+ str r0, [r4, #0x14]
+ bl FUN_02086468
+ str r0, [r4, #0x38]
+ mov r0, #0x47
+ bl FUN_02006D98
+ str r0, [r4, #0x3c]
+ mov r0, #0x47
+ bl FUN_02016B94
+ str r0, [r4, #0x4]
+ mov r0, #0x40
+ mov r1, #0x47
+ bl FUN_0201C24C
+ mov r0, #0x47
+ mov r1, #0x1
+ mov r2, #0x0
+ bl FUN_02014BF4
+ str r0, [r4, #0x54]
+ mov r0, #0x47
+ bl FUN_02002FD0
+ str r0, [r4, #0x8]
+ mov r1, #0x1
+ bl FUN_020038F0
+ mov r2, #0x2
+ ldr r0, [r4, #0x8]
+ mov r1, #0x0
+ lsl r2, r2, #0x8
+ mov r3, #0x47
+ bl FUN_02003008
+ mov r1, #0x2
+ ldr r0, [r4, #0x8]
+ lsl r2, r1, #0x8
+ mov r3, #0x47
+ bl FUN_02003008
+ mov r1, #0x1
+ ldr r0, [r4, #0x8]
+ lsl r2, r1, #0x9
+ mov r3, #0x47
+ bl FUN_02003008
+ mov r2, #0x2
+ ldr r0, [r4, #0x8]
+ mov r1, #0x3
+ lsl r2, r2, #0x8
+ mov r3, #0x47
+ bl FUN_02003008
+ bl FUN_02086414
+ bl FUN_0208643C
+ bl FUN_0208650C
+ ldr r0, [r4, #0x4]
+ bl FUN_0208654C
+ add r0, r4, #0x4
+ bl FUN_02086E48
+ bl FUN_0200541C
+ ldr r0, _02086164 ; =FUN_02086664
+ add r1, r4, #0x0
+ bl FUN_02015F10
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ nop
+_02086164: .word FUN_02086664
+
+ thumb_func_start FUN_02086168
+FUN_02086168: ; 0x02086168
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ bl FUN_02006278
+ ldr r1, [r5, #0x0]
+ add r4, r0, #0x0
+ cmp r1, #0x0
+ beq _0208617E
+ cmp r1, #0x1
+ beq _020861AA
+ b _020861C6
+_0208617E:
+ bl FUN_0200E308
+ cmp r0, #0x1
+ bne _0208618C
+ ldr r0, [r5, #0x0]
+ add r0, r0, #0x1
+ str r0, [r5, #0x0]
+_0208618C:
+ ldr r0, [r4, #0x0]
+ mov r1, #0x5
+ ldr r0, [r0, #0xc]
+ mov r2, #0x0
+ bl FUN_020671BC
+ ldr r1, _020861D8 ; =0x000001EA
+ cmp r0, r1
+ bne _020861A4
+ mov r0, #0x1
+ str r0, [r4, #0x58]
+ b _020861D2
+_020861A4:
+ mov r0, #0x0
+ str r0, [r4, #0x58]
+ b _020861D2
+_020861AA:
+ bl FUN_02086FA8
+ cmp r0, #0x0
+ bne _020861BA
+ ldr r0, [r5, #0x0]
+ add r0, r0, #0x1
+ str r0, [r5, #0x0]
+ b _020861D2
+_020861BA:
+ ldr r0, [r4, #0x3c]
+ bl FUN_02006ED4
+ bl FUN_02086698
+ b _020861D2
+_020861C6:
+ bl FUN_0200E308
+ cmp r0, #0x1
+ bne _020861D2
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_020861D2:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ nop
+_020861D8: .word 0x000001EA
+
+ thumb_func_start FUN_020861DC
+FUN_020861DC: ; 0x020861DC
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_02006278
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x38]
+ bl FUN_020223BC
+ mov r0, #0x1
+ mov r1, #0x0
+ bl FUN_0201E6E4
+ mov r0, #0x2
+ mov r1, #0x0
+ bl FUN_0201E6E4
+ mov r0, #0x3
+ mov r1, #0x0
+ bl FUN_0201E6E4
+ mov r0, #0x4
+ mov r1, #0x0
+ bl FUN_0201E74C
+ ldr r0, [r4, #0x8]
+ mov r1, #0x0
+ bl FUN_02003038
+ ldr r0, [r4, #0x8]
+ mov r1, #0x2
+ bl FUN_02003038
+ ldr r0, [r4, #0x8]
+ mov r1, #0x1
+ bl FUN_02003038
+ ldr r0, [r4, #0x8]
+ mov r1, #0x3
+ bl FUN_02003038
+ ldr r0, [r4, #0x8]
+ bl FUN_02002FEC
+ ldr r0, [r4, #0x4]
+ mov r1, #0x1
+ bl FUN_020178A0
+ ldr r0, [r4, #0x4]
+ mov r1, #0x2
+ bl FUN_020178A0
+ ldr r0, [r4, #0x4]
+ mov r1, #0x3
+ bl FUN_020178A0
+ ldr r0, [r4, #0x4]
+ mov r1, #0x4
+ bl FUN_020178A0
+ ldr r0, [r4, #0x4]
+ bl FUN_02016A18
+ bl FUN_0201C29C
+ ldr r0, [r4, #0x3c]
+ bl FUN_020072E8
+ ldr r0, [r4, #0x54]
+ bl FUN_02014C28
+ add r0, r4, #0x4
+ bl FUN_02086ED4
+ add r0, r5, #0x0
+ bl FUN_0200627C
+ mov r0, #0x47
+ bl FUN_020168D0
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02086280
+FUN_02086280: ; 0x02086280
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x0]
+ cmp r1, #0x6
+ bls _02086294
+ b _020863CE
+_02086294:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_020862A0: ; jump table (using 16-bit offset)
+ .short _020862AE - _020862A0 - 2; case 0
+ .short _020862C4 - _020862A0 - 2; case 1
+ .short _020862D6 - _020862A0 - 2; case 2
+ .short _0208633A - _020862A0 - 2; case 3
+ .short _02086396 - _020862A0 - 2; case 4
+ .short _020863B6 - _020862A0 - 2; case 5
+ .short _020863C4 - _020862A0 - 2; case 6
+_020862AE:
+ ldr r0, [r4, #0xc]
+ mov r1, #0xb
+ bl FUN_021ED940
+ add r0, r5, #0x0
+ bl FUN_0204AF3C
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _020863CE
+_020862C4:
+ ldr r1, _020863D4 ; =0x020FCE14
+ add r0, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_02046500
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _020863CE
+_020862D6:
+ add r0, r5, #0x0
+ bl FUN_02046528
+ add r6, r0, #0x0
+ ldr r5, [r4, #0xc]
+ bl FUN_020377AC
+ bl FUN_020238F4
+ add r7, r0, #0x0
+ ldr r0, [r6, #0x1c]
+ ldr r0, [r0, #0x0]
+ bl FUN_02034824
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ str r0, [sp, #0x8]
+ add r0, r5, #0x0
+ mov r1, #0x4c
+ add r2, sp, #0x8
+ bl FUN_02067830
+ mov r0, #0xb
+ str r0, [sp, #0x0]
+ ldr r3, [sp, #0x4]
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ mov r2, #0x6
+ bl FUN_0208089C
+ add r0, r5, #0x0
+ mov r1, #0xb2
+ mov r2, #0x0
+ bl FUN_02067830
+ add r0, r6, #0x0
+ bl FUN_020377AC
+ ldr r1, [r4, #0xc]
+ bl FUN_0202C144
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x1
+ bne _02086334
+ mov r0, #0x3
+ str r0, [r4, #0x0]
+ b _020863CE
+_02086334:
+ mov r0, #0x5
+ str r0, [r4, #0x0]
+ b _020863CE
+_0208633A:
+ add r0, r5, #0x0
+ bl FUN_02046528
+ add r6, r0, #0x0
+ ldr r0, [r4, #0xc]
+ mov r1, #0x5
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r7, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_020377AC
+ bl LoadPlayerDataAddress
+ str r0, [sp, #0x0]
+ mov r0, #0xb
+ mov r1, #0x1
+ add r2, r7, #0x0
+ mov r3, #0xa
+ bl FUN_02077A84
+ str r0, [r4, #0x8]
+ ldr r0, [r4, #0xc]
+ mov r1, #0x6f
+ mov r2, #0x0
+ bl FUN_020671BC
+ ldr r1, [r4, #0x8]
+ mov r2, #0x0
+ str r0, [r1, #0x10]
+ ldr r0, [r4, #0xc]
+ mov r1, #0x70
+ bl FUN_020671BC
+ ldr r1, [r4, #0x8]
+ str r0, [r1, #0x8]
+ ldr r1, _020863D8 ; =0x020FA5FC
+ ldr r2, [r4, #0x8]
+ add r0, r5, #0x0
+ bl FUN_02046500
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _020863CE
+_02086396:
+ ldr r2, [r4, #0x8]
+ ldr r0, [r2, #0x14]
+ cmp r0, #0x0
+ bne _020863A8
+ ldr r0, [r4, #0xc]
+ ldr r2, [r2, #0x18]
+ mov r1, #0x77
+ bl FUN_02067830
+_020863A8:
+ ldr r0, [r4, #0x8]
+ bl FUN_02077AC4
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _020863CE
+_020863B6:
+ add r0, r5, #0x0
+ bl FUN_0204AF84
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ b _020863CE
+_020863C4:
+ bl FUN_02016A18
+ add sp, #0xc
+ mov r0, #0x1
+ pop {r4-r7, pc}
+_020863CE:
+ mov r0, #0x0
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+_020863D4: .word 0x020FCE14
+_020863D8: .word 0x020FA5FC
+
+ thumb_func_start FUN_020863DC
+FUN_020863DC: ; 0x020863DC
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ mov r0, #0xb
+ mov r1, #0x1c
+ bl FUN_020169D8
+ add r2, r0, #0x0
+ add r3, r2, #0x0
+ mov r1, #0x1c
+ mov r0, #0x0
+_020863F2:
+ strb r0, [r3, #0x0]
+ add r3, r3, #0x1
+ sub r1, r1, #0x1
+ bne _020863F2
+ add r3, r2, #0x0
+ add r3, #0xc
+ ldmia r4!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldmia r4!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldr r1, _02086410 ; =FUN_02086280
+ add r0, r5, #0x0
+ bl FUN_0204640C
+ pop {r3-r5, pc}
+ .balign 4
+_02086410: .word FUN_02086280
+
+ thumb_func_start FUN_02086414
+FUN_02086414: ; 0x02086414
+ push {r3, lr}
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ mov r2, #0x1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2, #0x0]
+ ldr r0, _02086434 ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2, #0x0]
+ ldr r2, _02086438 ; =0x04001000
+ ldr r1, [r2, #0x0]
+ and r0, r1
+ str r0, [r2, #0x0]
+ pop {r3, pc}
+ .balign 4
+_02086434: .word 0xFFFFE0FF
+_02086438: .word 0x04001000
+
+ thumb_func_start FUN_0208643C
+FUN_0208643C: ; 0x0208643C
+ push {r3, lr}
+ mov r0, #0x7
+ str r0, [sp, #0x0]
+ ldr r0, _02086460 ; =0x04000050
+ mov r1, #0x0
+ mov r2, #0xe
+ mov r3, #0xb
+ blx FUN_020C74DC
+ mov r0, #0x8
+ str r0, [sp, #0x0]
+ ldr r0, _02086464 ; =0x04001050
+ mov r1, #0x0
+ mov r2, #0xe
+ mov r3, #0x7
+ blx FUN_020C74DC
+ pop {r3, pc}
+ .balign 4
+_02086460: .word 0x04000050
+_02086464: .word 0x04001050
+
+ thumb_func_start FUN_02086468
+FUN_02086468: ; 0x02086468
+ push {r3, lr}
+ sub sp, #0x8
+ mov r2, #0x2
+ mov r1, #0x0
+ ldr r0, _02086484 ; =FUN_02086488
+ str r2, [sp, #0x0]
+ str r0, [sp, #0x4]
+ mov r0, #0x47
+ add r3, r1, #0x0
+ bl FUN_02022318
+ add sp, #0x8
+ pop {r3, pc}
+ nop
+_02086484: .word FUN_02086488
+
+ thumb_func_start FUN_02086488
+FUN_02086488: ; 0x02086488
+ push {r3, lr}
+ mov r0, #0x1
+ add r1, r0, #0x0
+ bl FUN_0201E6E4
+ ldr r0, _020864F4 ; =0x04000008
+ mov r1, #0x3
+ ldrh r2, [r0, #0x0]
+ bic r2, r1
+ mov r1, #0x1
+ orr r1, r2
+ strh r1, [r0, #0x0]
+ add r0, #0x58
+ ldrh r2, [r0, #0x0]
+ ldr r1, _020864F8 ; =0xFFFFCFFD
+ and r2, r1
+ strh r2, [r0, #0x0]
+ add r2, r1, #0x2
+ ldrh r3, [r0, #0x0]
+ add r1, r1, #0x2
+ and r3, r2
+ mov r2, #0x10
+ orr r2, r3
+ strh r2, [r0, #0x0]
+ ldrh r3, [r0, #0x0]
+ ldr r2, _020864FC ; =0x0000CFFB
+ and r3, r2
+ strh r3, [r0, #0x0]
+ ldrh r3, [r0, #0x0]
+ sub r2, #0x1c
+ and r3, r1
+ mov r1, #0x8
+ orr r1, r3
+ strh r1, [r0, #0x0]
+ ldrh r1, [r0, #0x0]
+ and r1, r2
+ strh r1, [r0, #0x0]
+ mov r0, #0x0
+ add r1, r0, #0x0
+ add r2, r0, #0x0
+ add r3, r0, #0x0
+ blx FUN_020C7C28
+ mov r0, #0x0
+ ldr r2, _02086500 ; =0x00007FFF
+ add r1, r0, #0x0
+ mov r3, #0x3f
+ str r0, [sp, #0x0]
+ blx FUN_020C7B3C
+ ldr r1, _02086504 ; =0xBFFF0000
+ ldr r0, _02086508 ; =0x04000580
+ str r1, [r0, #0x0]
+ pop {r3, pc}
+ .balign 4
+_020864F4: .word 0x04000008
+_020864F8: .word 0xFFFFCFFD
+_020864FC: .word 0x0000CFFB
+_02086500: .word 0x00007FFF
+_02086504: .word 0xBFFF0000
+_02086508: .word 0x04000580
+
+ thumb_func_start FUN_0208650C
+FUN_0208650C: ; 0x0208650C
+ push {r3-r5, lr}
+ ldr r3, _02086544 ; =0x021064B8
+ mov r0, #0x2
+ mov r1, #0x0
+ ldr r3, [r3, #0x0]
+ lsl r0, r0, #0xe
+ add r2, r1, #0x0
+ blx r3
+ ldr r3, _02086548 ; =0x021064C0
+ mov r1, #0x0
+ add r4, r0, #0x0
+ ldr r3, [r3, #0x0]
+ mov r0, #0x80
+ add r2, r1, #0x0
+ blx r3
+ add r5, r0, #0x0
+ cmp r4, #0x0
+ bne _02086534
+ bl ErrorHandling
+_02086534:
+ cmp r5, #0x0
+ bne _0208653C
+ bl ErrorHandling
+_0208653C:
+ bl FUN_02012CC8
+ pop {r3-r5, pc}
+ nop
+_02086544: .word 0x021064B8
+_02086548: .word 0x021064C0
+
+ thumb_func_start FUN_0208654C
+FUN_0208654C: ; 0x0208654C
+ push {r3-r5, lr}
+ sub sp, #0xa8
+ add r4, r0, #0x0
+ bl FUN_0201E6D8
+ ldr r5, _02086650 ; =0x020FCEBC
+ add r3, sp, #0x2c
+ mov r2, #0x5
+_0208655C:
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ sub r2, r2, #0x1
+ bne _0208655C
+ add r0, sp, #0x2c
+ bl FUN_0201E66C
+ mov r1, #0x6
+ mov r2, #0x2
+ mov r0, #0x0
+ lsl r1, r1, #0x18
+ lsl r2, r2, #0x12
+ blx MIi_CpuClear32
+ mov r1, #0x62
+ mov r2, #0x2
+ mov r0, #0x0
+ lsl r1, r1, #0x14
+ lsl r2, r2, #0x10
+ blx MIi_CpuClear32
+ mov r1, #0x19
+ mov r2, #0x1
+ mov r0, #0x0
+ lsl r1, r1, #0x16
+ lsl r2, r2, #0x12
+ blx MIi_CpuClear32
+ mov r1, #0x66
+ mov r2, #0x2
+ mov r0, #0x0
+ lsl r1, r1, #0x14
+ lsl r2, r2, #0x10
+ blx MIi_CpuClear32
+ ldr r5, _02086654 ; =0x020FCE24
+ add r3, sp, #0x1c
+ add r2, r3, #0x0
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ add r0, r2, #0x0
+ bl FUN_02016BBC
+ ldr r5, _02086658 ; =0x020FCF84
+ add r3, sp, #0x54
+ mov r2, #0xa
+_020865BC:
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ sub r2, r2, #0x1
+ bne _020865BC
+ ldr r0, [r5, #0x0]
+ mov r1, #0x1
+ str r0, [r3, #0x0]
+ add r0, r4, #0x0
+ add r2, sp, #0x54
+ mov r3, #0x0
+ bl FUN_02016C18
+ add r0, r4, #0x0
+ mov r1, #0x2
+ add r2, sp, #0x70
+ mov r3, #0x0
+ bl FUN_02016C18
+ add r0, r4, #0x0
+ mov r1, #0x3
+ add r2, sp, #0x8c
+ mov r3, #0x0
+ bl FUN_02016C18
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_02018744
+ add r0, r4, #0x0
+ mov r1, #0x2
+ bl FUN_02018744
+ add r0, r4, #0x0
+ mov r1, #0x3
+ bl FUN_02018744
+ ldr r1, _0208665C ; =0x04000008
+ mov r0, #0x3
+ ldrh r2, [r1, #0x0]
+ bic r2, r0
+ mov r0, #0x1
+ orr r2, r0
+ strh r2, [r1, #0x0]
+ add r1, r0, #0x0
+ bl FUN_0201E6E4
+ bl FUN_0201E788
+ mov r0, #0x10
+ mov r1, #0x1
+ bl FUN_0201E6E4
+ ldr r5, _02086660 ; =0x020FCE60
+ add r3, sp, #0x0
+ ldmia r5!, {r0-r1}
+ add r2, r3, #0x0
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldr r0, [r5, #0x0]
+ mov r1, #0x4
+ str r0, [r3, #0x0]
+ add r0, r4, #0x0
+ mov r3, #0x0
+ bl FUN_02016C18
+ add r0, r4, #0x0
+ mov r1, #0x4
+ bl FUN_02018744
+ add sp, #0xa8
+ pop {r3-r5, pc}
+ .balign 4
+_02086650: .word 0x020FCEBC
+_02086654: .word 0x020FCE24
+_02086658: .word 0x020FCF84
+_0208665C: .word 0x04000008
+_02086660: .word 0x020FCE60
+
+ thumb_func_start FUN_02086664
+FUN_02086664: ; 0x02086664
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x3c]
+ bl FUN_020081C4
+ bl FUN_0201C30C
+ bl FUN_0200BC30
+ ldr r0, [r4, #0x8]
+ bl FUN_0200372C
+ ldr r0, [r4, #0x4]
+ bl FUN_0201AB60
+ ldr r3, _02086690 ; =0x027E0000
+ ldr r1, _02086694 ; =0x00003FF8
+ mov r0, #0x1
+ ldr r2, [r3, r1]
+ orr r0, r2
+ str r0, [r3, r1]
+ pop {r4, pc}
+ .balign 4
+_02086690: .word 0x027E0000
+_02086694: .word 0x00003FF8
+
+ thumb_func_start FUN_02086698
+FUN_02086698: ; 0x02086698
+ push {r3, lr}
+ bl FUN_020222AC
+ bl FUN_02013364
+ cmp r0, #0x0
+ ble _020866AE
+ bl FUN_020222AC
+ blx FUN_020B02C8
+_020866AE:
+ bl FUN_02013388
+ mov r0, #0x1
+ mov r1, #0x0
+ bl FUN_020222B4
+ pop {r3, pc}
+
+ thumb_func_start FUN_020866BC
+FUN_020866BC: ; 0x020866BC
+ push {lr}
+ sub sp, #0xc
+ mov r0, #0x6
+ str r0, [sp, #0x0]
+ mov r1, #0x1
+ str r1, [sp, #0x4]
+ mov r0, #0x47
+ str r0, [sp, #0x8]
+ mov r0, #0x0
+ add r2, r1, #0x0
+ add r3, r0, #0x0
+ bl FUN_0200E1D0
+ add sp, #0xc
+ pop {pc}
+ .balign 4
+
+ thumb_func_start FUN_020866DC
+FUN_020866DC: ; 0x020866DC
+ push {lr}
+ sub sp, #0xc
+ mov r0, #0x6
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ mov r0, #0x47
+ str r0, [sp, #0x8]
+ mov r0, #0x0
+ add r1, r0, #0x0
+ add r2, r0, #0x0
+ add r3, r0, #0x0
+ bl FUN_0200E1D0
+ add sp, #0xc
+ pop {pc}
+
+ thumb_func_start FUN_020866FC
+FUN_020866FC: ; 0x020866FC
+ push {r3-r6, lr}
+ sub sp, #0xc
+ add r6, r2, #0x0
+ add r4, r1, #0x0
+ lsl r1, r6, #0x18
+ lsr r1, r1, #0x18
+ str r1, [sp, #0x0]
+ mov r1, #0x47
+ str r1, [sp, #0x4]
+ mov r1, #0x1
+ mov r2, #0x14
+ mov r3, #0xf
+ add r5, r0, #0x0
+ bl FUN_0200CD68
+ add r0, r6, #0x0
+ bl FUN_0200CD64
+ add r2, r0, #0x0
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x20
+ str r0, [sp, #0x4]
+ mov r0, #0xc0
+ str r0, [sp, #0x8]
+ add r0, r4, #0x0
+ mov r1, #0x26
+ mov r3, #0x47
+ bl FUN_020030E8
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x47
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ mov r1, #0x1
+ mov r2, #0x32
+ mov r3, #0xd
+ bl FUN_0200CB00
+ bl FUN_0200CAFC
+ add r2, r0, #0x0
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x20
+ str r0, [sp, #0x4]
+ mov r0, #0xd0
+ str r0, [sp, #0x8]
+ add r0, r4, #0x0
+ mov r1, #0x26
+ mov r3, #0x47
+ bl FUN_020030E8
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x20
+ str r0, [sp, #0x4]
+ mov r0, #0xe0
+ str r0, [sp, #0x8]
+ add r0, r4, #0x0
+ mov r1, #0xe
+ mov r2, #0x7
+ mov r3, #0x47
+ bl FUN_020030E8
+ add sp, #0xc
+ pop {r3-r6, pc}
+
+ thumb_func_start FUN_02086784
+FUN_02086784: ; 0x02086784
+ push {r4-r7, lr}
+ sub sp, #0x14
+ add r5, r1, #0x0
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ add r4, r2, #0x0
+ add r6, r3, #0x0
+ bl FUN_0201901C
+ ldr r0, [sp, #0x28]
+ lsl r2, r4, #0x18
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x2c]
+ lsl r3, r6, #0x18
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x30]
+ add r1, r5, #0x0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x38]
+ lsr r2, r2, #0x18
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x34]
+ lsr r3, r3, #0x18
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ add r0, r7, #0x0
+ bl FUN_02019064
+ add r0, r5, #0x0
+ mov r1, #0x1
+ mov r2, #0x14
+ mov r3, #0xc
+ bl FUN_0200D0BC
+ add r0, r5, #0x0
+ mov r1, #0xf
+ bl FUN_02019620
+ add r0, r5, #0x0
+ bl FUN_020191D0
+ add sp, #0x14
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_020867EC
+FUN_020867EC: ; 0x020867EC
+ push {r3-r7, lr}
+ sub sp, #0x18
+ add r4, r1, #0x0
+ mov r1, #0xf
+ str r0, [sp, #0xc]
+ str r2, [sp, #0x10]
+ add r6, r3, #0x0
+ bl FUN_02019620
+ ldr r2, _02086874 ; =0x0000013F
+ mov r0, #0x0
+ mov r1, #0x1a
+ mov r3, #0x47
+ bl FUN_0200A86C
+ add r7, r0, #0x0
+ mov r0, #0x47
+ bl FUN_0200AA80
+ add r5, r0, #0x0
+ add r0, r7, #0x0
+ add r1, r4, #0x0
+ bl FUN_0200A914
+ str r0, [sp, #0x14]
+ mov r0, #0xff
+ mov r1, #0x47
+ bl FUN_020219F4
+ add r4, r0, #0x0
+ ldr r0, [sp, #0x10]
+ bl FUN_020690E4
+ add r2, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_0200AC60
+ ldr r2, [sp, #0x14]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0200B7B8
+ mov r3, #0x0
+ str r3, [sp, #0x0]
+ str r6, [sp, #0x4]
+ ldr r0, [sp, #0xc]
+ mov r1, #0x1
+ add r2, r4, #0x0
+ str r3, [sp, #0x8]
+ bl FUN_0201BD84
+ add r6, r0, #0x0
+ add r0, r7, #0x0
+ bl FUN_0200A8B8
+ add r0, r4, #0x0
+ bl FUN_02021A20
+ ldr r0, [sp, #0x14]
+ bl FUN_02021A20
+ add r0, r5, #0x0
+ bl FUN_0200AB18
+ add r0, r6, #0x0
+ add sp, #0x18
+ pop {r3-r7, pc}
+ .balign 4
+_02086874: .word 0x0000013F
+
+ thumb_func_start FUN_02086878
+FUN_02086878: ; 0x02086878
+ push {r4-r7, lr}
+ sub sp, #0x24
+ add r5, r0, #0x0
+ add r0, r2, #0x0
+ add r6, r1, #0x0
+ str r2, [sp, #0x14]
+ add r4, r3, #0x0
+ bl FUN_0201901C
+ ldr r0, [sp, #0x3c]
+ ldr r3, [sp, #0x38]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x40]
+ lsl r2, r4, #0x18
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x44]
+ lsl r3, r3, #0x18
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x4c]
+ ldr r1, [sp, #0x14]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x48]
+ lsr r2, r2, #0x18
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ add r0, r6, #0x0
+ lsr r3, r3, #0x18
+ bl FUN_02019064
+ mov r0, #0x2
+ mov r1, #0x47
+ bl FUN_02012838
+ str r0, [r5, #0x44]
+ ldr r2, _0208695C ; =0x0000013F
+ mov r0, #0x0
+ mov r1, #0x1a
+ mov r3, #0x47
+ bl FUN_0200A86C
+ add r7, r0, #0x0
+ mov r4, #0x0
+_020868DE:
+ add r0, r7, #0x0
+ add r1, r4, #0x2
+ bl FUN_0200A914
+ add r6, r0, #0x0
+ ldr r0, [r5, #0x44]
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ bl FUN_020128A0
+ add r0, r6, #0x0
+ bl FUN_02021A20
+ add r4, r4, #0x1
+ cmp r4, #0x2
+ blt _020868DE
+ add r0, r7, #0x0
+ bl FUN_0200A8B8
+ ldr r0, [r5, #0x44]
+ mov r1, #0x0
+ str r0, [sp, #0x18]
+ add r0, sp, #0x18
+ strb r1, [r0, #0x8]
+ ldr r1, [sp, #0x14]
+ mov r2, #0x2
+ str r1, [sp, #0x1c]
+ mov r1, #0x1
+ strb r1, [r0, #0x9]
+ strb r2, [r0, #0xa]
+ ldrb r3, [r0, #0xb]
+ mov r2, #0xf
+ bic r3, r2
+ strb r3, [r0, #0xb]
+ ldrb r3, [r0, #0xb]
+ mov r2, #0x30
+ bic r3, r2
+ strb r3, [r0, #0xb]
+ ldrb r3, [r0, #0xb]
+ mov r2, #0xc0
+ bic r3, r2
+ mov r2, #0x40
+ orr r2, r3
+ strb r2, [r0, #0xb]
+ ldr r0, [sp, #0x14]
+ mov r2, #0x32
+ mov r3, #0xd
+ bl FUN_0200CCA4
+ mov r0, #0x47
+ str r0, [sp, #0x0]
+ mov r0, #0x2
+ mov r2, #0x0
+ str r0, [sp, #0x4]
+ add r0, sp, #0x18
+ mov r1, #0x8
+ add r3, r2, #0x0
+ bl FUN_02001C14
+ str r0, [r5, #0x48]
+ add sp, #0x24
+ pop {r4-r7, pc}
+ nop
+_0208695C: .word 0x0000013F
+
+ thumb_func_start FUN_02086960
+FUN_02086960: ; 0x02086960
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, #0x28
+ mov r1, #0x1
+ bl FUN_0200CCF8
+ add r0, r4, #0x0
+ add r0, #0x28
+ bl FUN_02019570
+ add r0, r4, #0x0
+ add r0, #0x28
+ bl FUN_02019178
+ ldr r0, [r4, #0x48]
+ mov r1, #0x0
+ bl FUN_02001C5C
+ ldr r0, [r4, #0x44]
+ bl FUN_02012870
+ pop {r4, pc}
+
+ thumb_func_start FUN_0208698C
+FUN_0208698C: ; 0x0208698C
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02019570
+ add r0, r4, #0x0
+ bl FUN_02019178
+ pop {r4, pc}
+
+ thumb_func_start FUN_0208699C
+FUN_0208699C: ; 0x0208699C
+ push {r3-r5, lr}
+ sub sp, #0x10
+ add r4, r1, #0x0
+ mov r1, #0x0
+ add r5, r0, #0x0
+ str r1, [sp, #0x0]
+ str r1, [sp, #0x4]
+ mov r0, #0x1
+ str r0, [sp, #0x8]
+ mov r0, #0x47
+ str r0, [sp, #0xc]
+ mov r0, #0x76
+ add r2, r5, #0x0
+ mov r3, #0x3
+ bl FUN_0200687C
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ str r0, [sp, #0x4]
+ mov r1, #0x1
+ str r1, [sp, #0x8]
+ mov r0, #0x47
+ str r0, [sp, #0xc]
+ mov r0, #0x76
+ add r2, r5, #0x0
+ mov r3, #0x3
+ bl FUN_020068C8
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ mov r0, #0x40
+ str r0, [sp, #0x4]
+ str r1, [sp, #0x8]
+ add r0, r4, #0x0
+ mov r1, #0x76
+ mov r2, #0x8
+ mov r3, #0x47
+ bl FUN_020030E8
+ add sp, #0x10
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020869F0
+FUN_020869F0: ; 0x020869F0
+ push {r3-r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ str r0, [sp, #0x4]
+ mov r0, #0x1
+ str r0, [sp, #0x8]
+ mov r0, #0x47
+ add r4, r1, #0x0
+ str r0, [sp, #0xc]
+ mov r0, #0xc
+ mov r1, #0xa
+ add r2, r5, #0x0
+ mov r3, #0x4
+ bl FUN_0200687C
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ str r0, [sp, #0x4]
+ mov r0, #0x1
+ str r0, [sp, #0x8]
+ mov r0, #0x47
+ str r0, [sp, #0xc]
+ mov r0, #0xc
+ mov r1, #0xb
+ add r2, r5, #0x0
+ mov r3, #0x4
+ bl FUN_020068C8
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ mov r0, #0x20
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0xc
+ str r0, [sp, #0x8]
+ add r0, r4, #0x0
+ add r2, r1, #0x0
+ mov r3, #0x47
+ bl FUN_020030E8
+ add sp, #0x10
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02086A48
+FUN_02086A48: ; 0x02086A48
+ push {r4, lr}
+ ldr r3, _02086A60 ; =0x021064B8
+ mov r2, #0x0
+ ldr r3, [r3, #0x0]
+ blx r3
+ add r4, r0, #0x0
+ bl FUN_0201327C
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0xd
+ pop {r4, pc}
+ nop
+_02086A60: .word 0x021064B8
+
+ thumb_func_start FUN_02086A64
+FUN_02086A64: ; 0x02086A64
+ push {r4, lr}
+ ldr r3, _02086A7C ; =0x021064C0
+ mov r2, #0x0
+ ldr r3, [r3, #0x0]
+ blx r3
+ add r4, r0, #0x0
+ bl FUN_020132BC
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0xd
+ pop {r4, pc}
+ nop
+_02086A7C: .word 0x021064C0
+
+ thumb_func_start FUN_02086A80
+FUN_02086A80: ; 0x02086A80
+ push {r4, lr}
+ sub sp, #0x8
+ mov r1, #0x12
+ lsl r1, r1, #0xa
+ add r4, r0, #0x0
+ bl FUN_02016998
+ add r2, r0, #0x0
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ mov r3, #0x12
+ ldr r0, _02086AC0 ; =FUN_02086A48
+ ldr r1, _02086AC4 ; =FUN_02086A64
+ lsl r3, r3, #0xa
+ str r4, [sp, #0x4]
+ bl FUN_02012CDC
+ add r4, r0, #0x0
+ bl FUN_0201343C
+ add r2, r0, #0x0
+ beq _02086AB8
+ mov r0, #0x1
+ mov r1, #0xe1
+ lsl r0, r0, #0xc
+ lsl r1, r1, #0xe
+ bl FUN_0201EC94
+_02086AB8:
+ add r0, r4, #0x0
+ add sp, #0x8
+ pop {r4, pc}
+ nop
+_02086AC0: .word FUN_02086A48
+_02086AC4: .word FUN_02086A64
+
+ thumb_func_start FUN_02086AC8
+FUN_02086AC8: ; 0x02086AC8
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ add r7, r2, #0x0
+ bl FUN_02086A80
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ add r1, r7, #0x0
+ add r2, r5, #0x0
+ bl FUN_0201318C
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ mov r2, #0xa
+ mov r3, #0x1
+ bl FUN_02013194
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02086AF0
+FUN_02086AF0: ; 0x02086AF0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_020133E8
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02012DE4
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02086B08
+FUN_02086B08: ; 0x02086B08
+ push {r3}
+ sub sp, #0xc
+ add r2, sp, #0x0
+ mov r1, #0x0
+ str r1, [r2, #0x0]
+ str r1, [r2, #0x4]
+ str r1, [r2, #0x8]
+ ldr r1, [r0, #0x20]
+ ldr r2, [sp, #0x0]
+ ldr r1, [r1, #0x0]
+ ldr r1, [r1, #0x4]
+ add r1, r2, r1
+ str r1, [r0, #0x28]
+ ldr r1, [r0, #0x20]
+ ldr r2, [sp, #0x4]
+ ldr r1, [r1, #0x0]
+ ldr r1, [r1, #0x8]
+ add r1, r2, r1
+ str r1, [r0, #0x2c]
+ ldr r1, [r0, #0x20]
+ ldr r2, [sp, #0x8]
+ ldr r1, [r1, #0x0]
+ ldr r1, [r1, #0xc]
+ add r1, r2, r1
+ str r1, [r0, #0x30]
+ add sp, #0xc
+ pop {r3}
+ bx lr
+
+ thumb_func_start FUN_02086B40
+FUN_02086B40: ; 0x02086B40
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ mov r1, #0x10
+ bl FUN_02016998
+ add r4, r0, #0x0
+ bne _02086B54
+ bl ErrorHandling
+_02086B54:
+ ldr r0, [r5, #0x0]
+ ldr r2, [r5, #0x4]
+ mov r1, #0x77
+ str r0, [r4, #0x0]
+ str r2, [r4, #0x4]
+ ldr r0, [r4, #0x0]
+ bl FUN_02086AC8
+ mov r1, #0x1
+ str r0, [r4, #0xc]
+ bl FUN_02013440
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02086B70
+FUN_02086B70: ; 0x02086B70
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0xc]
+ ldr r2, _02086B88 ; =FUN_02086B08
+ add r3, r4, #0x0
+ bl FUN_020133AC
+ ldr r0, [r4, #0xc]
+ mov r1, #0x1
+ bl FUN_02013440
+ pop {r4, pc}
+ .balign 4
+_02086B88: .word FUN_02086B08
+
+ thumb_func_start FUN_02086B8C
+FUN_02086B8C: ; 0x02086B8C
+ push {r3, lr}
+ ldr r0, [r0, #0xc]
+ bl FUN_020133C8
+ cmp r0, #0x0
+ beq _02086B9C
+ mov r0, #0x1
+ pop {r3, pc}
+_02086B9C:
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_02086BA0
+FUN_02086BA0: ; 0x02086BA0
+ ldr r3, _02086BA4 ; =FUN_02016A18
+ bx r3
+ .balign 4
+_02086BA4: .word FUN_02016A18
+
+ thumb_func_start FUN_02086BA8
+FUN_02086BA8: ; 0x02086BA8
+ push {r4-r6, lr}
+ sub sp, #0x38
+ ldr r3, _02086C8C ; =0x020FCE9C
+ add r2, sp, #0x18
+ add r6, r0, #0x0
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldr r5, [r6, #0x4c]
+ ldr r4, [r6, #0x50]
+ ldr r6, [r6, #0x8]
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ str r0, [sp, #0x4]
+ ldr r0, _02086C90 ; =0x00004E20
+ add r1, r5, #0x0
+ str r0, [sp, #0x8]
+ ldr r3, [sp, #0x18]
+ add r0, r4, #0x0
+ mov r2, #0x76
+ bl FUN_0200C00C
+ mov r0, #0x76
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x1c]
+ mov r1, #0x2
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ str r0, [sp, #0x8]
+ mov r0, #0x1
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, _02086C94 ; =0x00004E21
+ add r2, r4, #0x0
+ str r0, [sp, #0x14]
+ add r0, r6, #0x0
+ add r3, r5, #0x0
+ bl FUN_0200C0DC
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ ldr r0, _02086C98 ; =0x00004E22
+ add r1, r5, #0x0
+ str r0, [sp, #0x4]
+ ldr r3, [sp, #0x20]
+ add r0, r4, #0x0
+ mov r2, #0x76
+ bl FUN_0200C124
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ ldr r0, _02086C9C ; =0x00004E23
+ add r1, r5, #0x0
+ str r0, [sp, #0x4]
+ ldr r3, [sp, #0x24]
+ add r0, r4, #0x0
+ mov r2, #0x76
+ bl FUN_0200C13C
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ str r0, [sp, #0x4]
+ ldr r0, _02086CA0 ; =0x000061A8
+ add r1, r5, #0x0
+ str r0, [sp, #0x8]
+ add r0, r4, #0x0
+ mov r2, #0x76
+ mov r3, #0x7
+ bl FUN_0200C00C
+ mov r0, #0x76
+ str r0, [sp, #0x0]
+ mov r0, #0xa
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ str r0, [sp, #0x8]
+ mov r0, #0x1
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, _02086CA4 ; =0x000061A9
+ mov r1, #0x2
+ str r0, [sp, #0x14]
+ add r0, r6, #0x0
+ add r2, r4, #0x0
+ add r3, r5, #0x0
+ bl FUN_0200C0DC
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ ldr r0, _02086CA8 ; =0x000061AA
+ add r1, r5, #0x0
+ str r0, [sp, #0x4]
+ add r0, r4, #0x0
+ mov r2, #0x76
+ mov r3, #0x6
+ bl FUN_0200C124
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ ldr r0, _02086CAC ; =0x000061AB
+ add r1, r5, #0x0
+ str r0, [sp, #0x4]
+ add r0, r4, #0x0
+ mov r2, #0x76
+ mov r3, #0x5
+ bl FUN_0200C13C
+ add sp, #0x38
+ pop {r4-r6, pc}
+ .balign 4
+_02086C8C: .word 0x020FCE9C
+_02086C90: .word 0x00004E20
+_02086C94: .word 0x00004E21
+_02086C98: .word 0x00004E22
+_02086C9C: .word 0x00004E23
+_02086CA0: .word 0x000061A8
+_02086CA4: .word 0x000061A9
+_02086CA8: .word 0x000061AA
+_02086CAC: .word 0x000061AB
+
+ thumb_func_start FUN_02086CB0
+FUN_02086CB0: ; 0x02086CB0
+ push {r3-r4, lr}
+ sub sp, #0x34
+ add r4, r0, #0x0
+ mov r1, #0x80
+ add r0, sp, #0x0
+ strh r1, [r0, #0x0]
+ mov r1, #0x78
+ strh r1, [r0, #0x2]
+ mov r1, #0x0
+ strh r1, [r0, #0x4]
+ strh r1, [r0, #0x6]
+ mov r0, #0x1
+ mov r2, #0x2
+ str r1, [sp, #0x8]
+ str r1, [sp, #0xc]
+ str r1, [sp, #0x30]
+ ldr r1, _02086D4C ; =0x00004E20
+ str r0, [sp, #0x10]
+ add r0, r1, #0x1
+ str r0, [sp, #0x18]
+ add r0, r1, #0x2
+ str r0, [sp, #0x1c]
+ add r0, r1, #0x3
+ str r0, [sp, #0x20]
+ sub r0, r2, #0x3
+ str r2, [sp, #0x2c]
+ str r1, [sp, #0x14]
+ str r0, [sp, #0x24]
+ str r0, [sp, #0x28]
+ ldr r0, [r4, #0x50]
+ ldr r1, [r4, #0x4c]
+ add r2, sp, #0x0
+ bl FUN_0200C154
+ str r0, [r4, #0x6c]
+ bl FUN_0200C5A8
+ ldr r0, [r4, #0x6c]
+ mov r1, #0x2
+ bl FUN_0200C840
+ mov r2, #0x0
+ add r0, sp, #0x0
+ add r1, r2, #0x0
+ strh r2, [r0, #0x0]
+ sub r1, #0x10
+ strh r1, [r0, #0x2]
+ ldr r1, _02086D50 ; =0x000061A8
+ str r2, [sp, #0x2c]
+ add r0, r1, #0x1
+ str r0, [sp, #0x18]
+ add r0, r1, #0x2
+ str r0, [sp, #0x1c]
+ add r0, r1, #0x3
+ str r1, [sp, #0x14]
+ str r0, [sp, #0x20]
+ ldr r0, [r4, #0x50]
+ ldr r1, [r4, #0x4c]
+ add r2, sp, #0x0
+ bl FUN_0200C154
+ str r0, [r4, #0x70]
+ bl FUN_0200C5A8
+ mov r1, #0x90
+ add r0, sp, #0x0
+ strh r1, [r0, #0x2]
+ ldr r0, [r4, #0x50]
+ ldr r1, [r4, #0x4c]
+ add r2, sp, #0x0
+ bl FUN_0200C154
+ str r0, [r4, #0x74]
+ bl FUN_0200C5A8
+ add sp, #0x34
+ pop {r3-r4, pc}
+ nop
+_02086D4C: .word 0x00004E20
+_02086D50: .word 0x000061A8
+
+ thumb_func_start FUN_02086D54
+FUN_02086D54: ; 0x02086D54
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ add r7, r1, #0x0
+ add r4, r6, #0x0
+ ldr r1, [r6, #0x78]
+ add r4, #0x78
+ cmp r1, #0x0
+ bne _02086DE6
+ ldr r0, [r4, #0x4]
+ cmp r0, #0xa
+ blt _02086D74
+ add r0, r1, #0x1
+ str r0, [r4, #0x0]
+ mov r0, #0x0
+ str r0, [r4, #0x4]
+ b _02086DE6
+_02086D74:
+ mov r1, #0x14
+ add r3, r7, #0x0
+ mul r3, r1
+ ldr r1, _02086DF4 ; =0x020FCEE4
+ lsl r2, r0, #0x1
+ add r1, r1, r3
+ ldrsh r1, [r2, r1]
+ lsl r0, r0, #0x2
+ mov r5, #0x0
+ mov r12, r1
+ ldr r1, _02086DF8 ; =0x020FCF34
+ add r1, r1, r3
+ ldrsh r2, [r2, r1]
+ mov r1, #0x28
+ add r3, r7, #0x0
+ mul r3, r1
+ ldr r1, _02086DFC ; =0x020FCFD8
+ add r1, r1, r3
+ ldr r7, [r0, r1]
+ ldr r1, _02086E00 ; =0x020FD078
+ add r1, r1, r3
+ ldr r0, [r0, r1]
+ str r0, [sp, #0x0]
+ mov r0, r12
+ cmp r0, #0xff
+ bne _02086DAC
+ mov r12, r5
+ add r5, r5, #0x1
+_02086DAC:
+ cmp r2, #0xff
+ bne _02086DB4
+ mov r2, #0x0
+ add r5, r5, #0x1
+_02086DB4:
+ ldr r0, [r6, #0x6c]
+ mov r1, r12
+ bl FUN_0200C82C
+ mov r0, #0x0
+ add r1, r7, #0x0
+ blx FUN_020EB010
+ beq _02086DD2
+ ldr r0, [r6, #0x6c]
+ ldr r2, [sp, #0x0]
+ add r1, r7, #0x0
+ bl FUN_0200C884
+ b _02086DD4
+_02086DD2:
+ add r5, r5, #0x1
+_02086DD4:
+ cmp r5, #0x3
+ beq _02086DE0
+ ldr r0, [r4, #0x4]
+ add r0, r0, #0x1
+ str r0, [r4, #0x4]
+ b _02086DEE
+_02086DE0:
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+_02086DE6:
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+ str r0, [r4, #0x4]
+ pop {r3-r7, pc}
+_02086DEE:
+ mov r0, #0x1
+ pop {r3-r7, pc}
+ nop
+_02086DF4: .word 0x020FCEE4
+_02086DF8: .word 0x020FCF34
+_02086DFC: .word 0x020FCFD8
+_02086E00: .word 0x020FD078
+
+ thumb_func_start FUN_02086E04
+FUN_02086E04: ; 0x02086E04
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_02086D54
+ cmp r0, #0x0
+ bne _02086E16
+ mov r0, #0x2
+ pop {r3-r5, pc}
+_02086E16:
+ cmp r4, #0x4
+ ldr r0, [r5, #0x7c]
+ bne _02086E24
+ cmp r0, #0x6
+ bne _02086E2C
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_02086E24:
+ cmp r0, #0x6
+ bne _02086E2C
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_02086E2C:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02086E30
+FUN_02086E30: ; 0x02086E30
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x6c]
+ bl FUN_0200C3DC
+ ldr r0, [r4, #0x70]
+ bl FUN_0200C3DC
+ ldr r0, [r4, #0x74]
+ bl FUN_0200C3DC
+ pop {r4, pc}
+
+ thumb_func_start FUN_02086E48
+FUN_02086E48: ; 0x02086E48
+ push {r3-r6, lr}
+ sub sp, #0x4c
+ add r4, r0, #0x0
+ mov r0, #0x47
+ bl FUN_0200BB14
+ add r2, sp, #0x2c
+ ldr r5, _02086EC8 ; =0x020FCE7C
+ str r0, [r4, #0x4c]
+ ldmia r5!, {r0-r1}
+ add r3, r2, #0x0
+ stmia r2!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ ldr r6, _02086ECC ; =0x020FCE34
+ stmia r2!, {r0-r1}
+ add r5, sp, #0x18
+ ldmia r6!, {r0-r1}
+ add r2, r5, #0x0
+ stmia r5!, {r0-r1}
+ ldmia r6!, {r0-r1}
+ stmia r5!, {r0-r1}
+ ldr r0, [r6, #0x0]
+ add r1, r3, #0x0
+ str r0, [r5, #0x0]
+ ldr r0, [r4, #0x4c]
+ mov r3, #0x20
+ bl FUN_0200BB6C
+ ldr r3, _02086ED0 ; =0x020FCE48
+ add r2, sp, #0x0
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldr r0, [r4, #0x4c]
+ bl FUN_0200BB34
+ str r0, [r4, #0x48]
+ ldr r0, [r4, #0x4c]
+ ldr r1, [r4, #0x48]
+ mov r2, #0xff
+ bl FUN_0200BBF0
+ cmp r0, #0x0
+ bne _02086EB2
+ bl ErrorHandling
+_02086EB2:
+ ldr r0, [r4, #0x4c]
+ ldr r1, [r4, #0x48]
+ add r2, sp, #0x0
+ bl FUN_0200BF60
+ cmp r0, #0x0
+ bne _02086EC4
+ bl ErrorHandling
+_02086EC4:
+ add sp, #0x4c
+ pop {r3-r6, pc}
+ .balign 4
+_02086EC8: .word 0x020FCE7C
+_02086ECC: .word 0x020FCE34
+_02086ED0: .word 0x020FCE48
+
+ thumb_func_start FUN_02086ED4
+FUN_02086ED4: ; 0x02086ED4
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x4c]
+ ldr r1, [r4, #0x48]
+ bl FUN_0200C398
+ ldr r0, [r4, #0x4c]
+ bl FUN_0200BD04
+ pop {r4, pc}
+
+ thumb_func_start FUN_02086EE8
+FUN_02086EE8: ; 0x02086EE8
+ push {r3-r7, lr}
+ sub sp, #0x38
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ mov r1, #0x5
+ ldr r4, [r0, #0xc]
+ mov r2, #0x0
+ add r0, r4, #0x0
+ bl FUN_020671BC
+ add r6, r0, #0x0
+ add r0, r4, #0x0
+ mov r1, #0x2
+ bl FUN_02068E14
+ add r7, r0, #0x0
+ mov r0, #0x0
+ str r0, [sp, #0x10]
+ add r0, r4, #0x0
+ mov r1, #0x4c
+ add r2, sp, #0x10
+ bl FUN_02067830
+ add r0, sp, #0x28
+ add r1, r4, #0x0
+ mov r2, #0x2
+ bl FUN_02068B68
+ lsl r1, r6, #0x10
+ add r0, sp, #0x14
+ lsr r1, r1, #0x10
+ bl FUN_02069010
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ add r7, #0x60
+ str r1, [sp, #0x4]
+ add r0, sp, #0x14
+ str r0, [sp, #0x8]
+ str r1, [sp, #0xc]
+ ldr r0, [r5, #0x3c]
+ add r1, sp, #0x28
+ mov r2, #0x80
+ add r3, r7, #0x0
+ bl FUN_020073A0
+ str r0, [r5, #0x68]
+ add sp, #0x38
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02086F4C
+FUN_02086F4C: ; 0x02086F4C
+ push {r3-r6, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ mov r1, #0x5
+ ldr r0, [r0, #0xc]
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02068854
+ add r6, r0, #0x0
+ ldr r0, [r5, #0x68]
+ mov r1, #0x1
+ bl FUN_02007314
+ lsl r2, r4, #0x10
+ str r6, [sp, #0x0]
+ mov r0, #0x0
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ ldr r0, [r5, #0x54]
+ ldr r1, [r5, #0x68]
+ lsr r2, r2, #0x10
+ mov r3, #0x2
+ bl FUN_02069038
+ add sp, #0xc
+ pop {r3-r6, pc}
+
+ thumb_func_start FUN_02086F8C
+FUN_02086F8C: ; 0x02086F8C
+ ldr r3, _02086F94 ; =FUN_02007534
+ ldr r0, [r0, #0x68]
+ bx r3
+ nop
+_02086F94: .word FUN_02007534
+
+ thumb_func_start FUN_02086F98
+FUN_02086F98: ; 0x02086F98
+ ldr r3, _02086FA4 ; =FUN_02007558
+ add r2, r1, #0x0
+ ldr r0, [r0, #0x68]
+ mov r1, #0x6
+ bx r3
+ nop
+_02086FA4: .word FUN_02007558
+
+ thumb_func_start FUN_02086FA8
+FUN_02086FA8: ; 0x02086FA8
+ push {r3, lr}
+ ldr r1, [r0, #0x58]
+ lsl r2, r1, #0x2
+ ldr r1, _02086FB8 ; =0x020FD118
+ ldr r1, [r1, r2]
+ blx r1
+ pop {r3, pc}
+ nop
+_02086FB8: .word 0x020FD118
+
+ thumb_func_start FUN_02086FBC
+FUN_02086FBC: ; 0x02086FBC
+ push {r3-r5, lr}
+ sub sp, #0x20
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x5c]
+ mov r5, #0x1
+ cmp r1, #0x11
+ bls _02086FCC
+ b _0208720E
+_02086FCC:
+ add r2, r1, r1
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_02086FD8: ; jump table (using 16-bit offset)
+ .short _02086FFC - _02086FD8 - 2; case 0
+ .short _0208706A - _02086FD8 - 2; case 1
+ .short _02087074 - _02086FD8 - 2; case 2
+ .short _02087092 - _02086FD8 - 2; case 3
+ .short _020870A2 - _02086FD8 - 2; case 4
+ .short _020870B2 - _02086FD8 - 2; case 5
+ .short _020870C2 - _02086FD8 - 2; case 6
+ .short _020870D2 - _02086FD8 - 2; case 7
+ .short _0208710E - _02086FD8 - 2; case 8
+ .short _02087122 - _02086FD8 - 2; case 9
+ .short _02087132 - _02086FD8 - 2; case 10
+ .short _02087158 - _02086FD8 - 2; case 11
+ .short _020871AA - _02086FD8 - 2; case 12
+ .short _020871E2 - _02086FD8 - 2; case 13
+ .short _020871EE - _02086FD8 - 2; case 14
+ .short _020871F4 - _02086FD8 - 2; case 15
+ .short _020871FE - _02086FD8 - 2; case 16
+ .short _0208720E - _02086FD8 - 2; case 17
+_02086FFC:
+ ldr r0, [r4, #0x4]
+ ldr r1, [r4, #0x8]
+ bl FUN_0208699C
+ ldr r0, [r4, #0x4]
+ ldr r1, [r4, #0x8]
+ bl FUN_020869F0
+ ldr r0, [r4, #0x4]
+ ldr r1, [r4, #0x8]
+ ldr r2, [r4, #0x14]
+ bl FUN_020866FC
+ mov r0, #0x13
+ str r0, [sp, #0x0]
+ mov r0, #0x1b
+ str r0, [sp, #0x4]
+ mov r0, #0x4
+ str r0, [sp, #0x8]
+ mov r0, #0x3b
+ str r0, [sp, #0xc]
+ mov r0, #0xe
+ str r0, [sp, #0x10]
+ add r1, r4, #0x0
+ ldr r0, [r4, #0x4]
+ add r1, #0x18
+ add r2, r5, #0x0
+ mov r3, #0x2
+ bl FUN_02086784
+ add r0, r4, #0x0
+ bl FUN_02086BA8
+ add r0, r4, #0x0
+ bl FUN_02086CB0
+ add r0, r4, #0x0
+ bl FUN_02086EE8
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ bl FUN_02086F98
+ mov r0, #0x47
+ str r0, [sp, #0x18]
+ mov r0, #0x0
+ str r0, [sp, #0x1c]
+ add r0, sp, #0x18
+ bl FUN_02086B40
+ str r0, [r4, #0x40]
+ ldr r0, [r4, #0x5c]
+ add r0, r0, #0x1
+ str r0, [r4, #0x5c]
+ b _02087232
+_0208706A:
+ bl FUN_020866BC
+ ldr r0, [r4, #0x5c]
+ add r0, r0, #0x1
+ str r0, [r4, #0x5c]
+_02087074:
+ bl FUN_0200E308
+ cmp r0, #0x1
+ bne _0208712A
+ bl FUN_0200541C
+ ldr r1, _02087240 ; =0x00000475
+ mov r0, #0xd
+ mov r2, #0x1
+ bl FUN_0200433C
+ ldr r0, [r4, #0x5c]
+ add r0, r0, #0x1
+ str r0, [r4, #0x5c]
+ b _02087232
+_02087092:
+ bl FUN_0208749C
+ cmp r0, #0x0
+ bne _0208712A
+ ldr r0, [r4, #0x5c]
+ add r0, r0, #0x1
+ str r0, [r4, #0x5c]
+ b _02087232
+_020870A2:
+ bl FUN_020874E4
+ cmp r0, #0x0
+ bne _0208712A
+ ldr r0, [r4, #0x5c]
+ add r0, r0, #0x1
+ str r0, [r4, #0x5c]
+ b _02087232
+_020870B2:
+ bl FUN_02087554
+ cmp r0, #0x0
+ bne _0208712A
+ ldr r0, [r4, #0x5c]
+ add r0, r0, #0x1
+ str r0, [r4, #0x5c]
+ b _02087232
+_020870C2:
+ bl FUN_020875AC
+ cmp r0, #0x0
+ bne _0208712A
+ ldr r0, [r4, #0x5c]
+ add r0, r0, #0x1
+ str r0, [r4, #0x5c]
+ b _02087232
+_020870D2:
+ bl FUN_02087610
+ cmp r0, #0x0
+ bne _0208712A
+ add r0, r4, #0x0
+ bl FUN_02086F4C
+ ldr r0, [r4, #0x0]
+ mov r1, #0x5
+ ldr r0, [r0, #0xc]
+ mov r2, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_02005578
+ ldr r2, [r4, #0x0]
+ add r0, r4, #0x0
+ ldr r2, [r2, #0xc]
+ ldr r3, [r4, #0x10]
+ add r0, #0x18
+ mov r1, #0x0
+ bl FUN_020867EC
+ str r0, [r4, #0xc]
+ ldr r0, [r4, #0x5c]
+ add r0, r0, #0x1
+ str r0, [r4, #0x5c]
+ b _02087232
+_0208710E:
+ bl FUN_02005670
+ cmp r0, #0x0
+ bne _0208712A
+ ldr r0, _02087244 ; =0x00000484
+ bl FUN_02005C28
+ ldr r0, [r4, #0x5c]
+ add r0, r0, #0x1
+ str r0, [r4, #0x5c]
+_02087122:
+ bl FUN_02005CBC
+ cmp r0, #0x0
+ beq _0208712C
+_0208712A:
+ b _02087232
+_0208712C:
+ ldr r0, [r4, #0x5c]
+ add r0, r0, #0x1
+ str r0, [r4, #0x5c]
+_02087132:
+ ldr r0, [r4, #0xc]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0x0
+ bne _02087232
+ ldr r2, [r4, #0x0]
+ add r0, r4, #0x0
+ ldr r2, [r2, #0xc]
+ ldr r3, [r4, #0x10]
+ add r0, #0x18
+ mov r1, #0x1
+ bl FUN_020867EC
+ str r0, [r4, #0xc]
+ ldr r0, [r4, #0x5c]
+ add r0, r0, #0x1
+ str r0, [r4, #0x5c]
+_02087158:
+ ldr r0, [r4, #0xc]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0x0
+ bne _02087232
+ ldr r0, [r4, #0x54]
+ mov r1, #0x0
+ bl FUN_02014D7C
+ cmp r0, #0x1
+ bne _02087232
+ ldr r0, [r4, #0x68]
+ bl FUN_02007390
+ cmp r0, #0x0
+ bne _02087232
+ mov r0, #0x19
+ str r0, [sp, #0x0]
+ mov r0, #0xd
+ str r0, [sp, #0x4]
+ mov r0, #0x6
+ str r0, [sp, #0x8]
+ mov r0, #0x4
+ str r0, [sp, #0xc]
+ mov r0, #0xa7
+ str r0, [sp, #0x10]
+ mov r0, #0xe
+ str r0, [sp, #0x14]
+ add r2, r4, #0x0
+ ldr r1, [r4, #0x4]
+ add r0, r4, #0x0
+ add r2, #0x28
+ mov r3, #0x1
+ bl FUN_02086878
+ ldr r0, [r4, #0x5c]
+ add r0, r0, #0x1
+ str r0, [r4, #0x5c]
+ b _02087232
+_020871AA:
+ ldr r0, [r4, #0x48]
+ bl FUN_02001C78
+ sub r1, r5, #0x3
+ cmp r0, r1
+ beq _020871BE
+ add r1, r1, #0x1
+ cmp r0, r1
+ beq _02087232
+ b _020871CC
+_020871BE:
+ ldr r0, [r4, #0x0]
+ mov r1, #0x0
+ str r1, [r0, #0x4]
+ ldr r0, [r4, #0x5c]
+ add r0, r0, #0x1
+ str r0, [r4, #0x5c]
+ b _02087232
+_020871CC:
+ cmp r0, #0x0
+ bne _020871D4
+ add r1, r5, #0x0
+ b _020871D6
+_020871D4:
+ mov r1, #0x0
+_020871D6:
+ ldr r0, [r4, #0x0]
+ str r1, [r0, #0x4]
+ ldr r0, [r4, #0x5c]
+ add r0, r0, #0x1
+ str r0, [r4, #0x5c]
+ b _02087232
+_020871E2:
+ bl FUN_02086960
+ ldr r0, [r4, #0x5c]
+ add r0, r0, #0x1
+ str r0, [r4, #0x5c]
+ b _02087232
+_020871EE:
+ add r0, r1, #0x1
+ str r0, [r4, #0x5c]
+ b _02087232
+_020871F4:
+ bl FUN_020866DC
+ ldr r0, [r4, #0x5c]
+ add r0, r0, #0x1
+ str r0, [r4, #0x5c]
+_020871FE:
+ bl FUN_0200E308
+ cmp r0, #0x1
+ bne _02087232
+ ldr r0, [r4, #0x5c]
+ add r0, r0, #0x1
+ str r0, [r4, #0x5c]
+ b _02087232
+_0208720E:
+ add r0, r4, #0x0
+ bl FUN_02086F8C
+ add r0, r4, #0x0
+ bl FUN_02086E30
+ add r0, r4, #0x0
+ add r0, #0x18
+ bl FUN_0208698C
+ ldr r0, [r4, #0x40]
+ ldr r0, [r0, #0xc]
+ bl FUN_02086AF0
+ ldr r0, [r4, #0x40]
+ bl FUN_02086BA0
+ mov r5, #0x0
+_02087232:
+ ldr r0, [r4, #0x4c]
+ bl FUN_0200BC1C
+ add r0, r5, #0x0
+ add sp, #0x20
+ pop {r3-r5, pc}
+ nop
+_02087240: .word 0x00000475
+_02087244: .word 0x00000484
+
+ thumb_func_start FUN_02087248
+FUN_02087248: ; 0x02087248
+ push {r3-r5, lr}
+ sub sp, #0x20
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x5c]
+ mov r5, #0x1
+ cmp r1, #0x11
+ bls _02087258
+ b _02087462
+_02087258:
+ add r2, r1, r1
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_02087264: ; jump table (using 16-bit offset)
+ .short _02087288 - _02087264 - 2; case 0
+ .short _020872FE - _02087264 - 2; case 1
+ .short _02087308 - _02087264 - 2; case 2
+ .short _02087322 - _02087264 - 2; case 3
+ .short _0208735C - _02087264 - 2; case 4
+ .short _0208735C - _02087264 - 2; case 5
+ .short _0208735C - _02087264 - 2; case 6
+ .short _0208735C - _02087264 - 2; case 7
+ .short _02087362 - _02087264 - 2; case 8
+ .short _02087376 - _02087264 - 2; case 9
+ .short _02087386 - _02087264 - 2; case 10
+ .short _020873AC - _02087264 - 2; case 11
+ .short _020873FE - _02087264 - 2; case 12
+ .short _02087436 - _02087264 - 2; case 13
+ .short _02087442 - _02087264 - 2; case 14
+ .short _02087448 - _02087264 - 2; case 15
+ .short _02087452 - _02087264 - 2; case 16
+ .short _02087462 - _02087264 - 2; case 17
+_02087288:
+ ldr r0, [r4, #0x4]
+ ldr r1, [r4, #0x8]
+ bl FUN_0208699C
+ ldr r0, [r4, #0x4]
+ ldr r1, [r4, #0x8]
+ bl FUN_020869F0
+ ldr r0, [r4, #0x4]
+ ldr r1, [r4, #0x8]
+ ldr r2, [r4, #0x14]
+ bl FUN_020866FC
+ mov r0, #0x13
+ str r0, [sp, #0x0]
+ mov r0, #0x1b
+ str r0, [sp, #0x4]
+ mov r0, #0x4
+ str r0, [sp, #0x8]
+ mov r0, #0x3b
+ str r0, [sp, #0xc]
+ mov r0, #0xe
+ str r0, [sp, #0x10]
+ add r1, r4, #0x0
+ ldr r0, [r4, #0x4]
+ add r1, #0x18
+ add r2, r5, #0x0
+ mov r3, #0x2
+ bl FUN_02086784
+ add r0, r4, #0x0
+ bl FUN_02086BA8
+ add r0, r4, #0x0
+ bl FUN_02086CB0
+ ldr r0, [r4, #0x6c]
+ mov r1, #0x0
+ bl FUN_0200C644
+ add r0, r4, #0x0
+ bl FUN_02086EE8
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ bl FUN_02086F98
+ mov r0, #0x47
+ str r0, [sp, #0x18]
+ add r0, r5, #0x0
+ str r0, [sp, #0x1c]
+ add r0, sp, #0x18
+ bl FUN_02086B40
+ str r0, [r4, #0x40]
+ ldr r0, [r4, #0x5c]
+ add r0, r0, #0x1
+ str r0, [r4, #0x5c]
+ b _02087486
+_020872FE:
+ bl FUN_020866BC
+ ldr r0, [r4, #0x5c]
+ add r0, r0, #0x1
+ str r0, [r4, #0x5c]
+_02087308:
+ bl FUN_0200E308
+ cmp r0, #0x1
+ bne _0208737E
+ ldr r1, _02087494 ; =0x00000475
+ mov r0, #0xd
+ mov r2, #0x1
+ bl FUN_0200433C
+ ldr r0, [r4, #0x5c]
+ add r0, r0, #0x1
+ str r0, [r4, #0x5c]
+ b _02087486
+_02087322:
+ bl FUN_02087820
+ cmp r0, #0x0
+ bne _0208737E
+ add r0, r4, #0x0
+ bl FUN_02086F4C
+ ldr r0, [r4, #0x0]
+ mov r1, #0x5
+ ldr r0, [r0, #0xc]
+ mov r2, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_02005578
+ ldr r2, [r4, #0x0]
+ add r0, r4, #0x0
+ ldr r2, [r2, #0xc]
+ ldr r3, [r4, #0x10]
+ add r0, #0x18
+ mov r1, #0x0
+ bl FUN_020867EC
+ str r0, [r4, #0xc]
+ mov r0, #0x8
+ str r0, [r4, #0x5c]
+ b _02087486
+_0208735C:
+ bl ErrorHandling
+ b _02087486
+_02087362:
+ bl FUN_02005670
+ cmp r0, #0x0
+ bne _0208737E
+ ldr r0, _02087498 ; =0x00000484
+ bl FUN_02005C28
+ ldr r0, [r4, #0x5c]
+ add r0, r0, #0x1
+ str r0, [r4, #0x5c]
+_02087376:
+ bl FUN_02005CBC
+ cmp r0, #0x0
+ beq _02087380
+_0208737E:
+ b _02087486
+_02087380:
+ ldr r0, [r4, #0x5c]
+ add r0, r0, #0x1
+ str r0, [r4, #0x5c]
+_02087386:
+ ldr r0, [r4, #0xc]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0x0
+ bne _02087486
+ ldr r2, [r4, #0x0]
+ add r0, r4, #0x0
+ ldr r2, [r2, #0xc]
+ ldr r3, [r4, #0x10]
+ add r0, #0x18
+ mov r1, #0x1
+ bl FUN_020867EC
+ str r0, [r4, #0xc]
+ ldr r0, [r4, #0x5c]
+ add r0, r0, #0x1
+ str r0, [r4, #0x5c]
+_020873AC:
+ ldr r0, [r4, #0xc]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0x0
+ bne _02087486
+ ldr r0, [r4, #0x54]
+ mov r1, #0x0
+ bl FUN_02014D7C
+ cmp r0, #0x1
+ bne _02087486
+ ldr r0, [r4, #0x68]
+ bl FUN_02007390
+ cmp r0, #0x0
+ bne _02087486
+ mov r0, #0x19
+ str r0, [sp, #0x0]
+ mov r0, #0xd
+ str r0, [sp, #0x4]
+ mov r0, #0x6
+ str r0, [sp, #0x8]
+ mov r0, #0x4
+ str r0, [sp, #0xc]
+ mov r0, #0xa7
+ str r0, [sp, #0x10]
+ mov r0, #0xe
+ str r0, [sp, #0x14]
+ add r2, r4, #0x0
+ ldr r1, [r4, #0x4]
+ add r0, r4, #0x0
+ add r2, #0x28
+ mov r3, #0x1
+ bl FUN_02086878
+ ldr r0, [r4, #0x5c]
+ add r0, r0, #0x1
+ str r0, [r4, #0x5c]
+ b _02087486
+_020873FE:
+ ldr r0, [r4, #0x48]
+ bl FUN_02001C78
+ sub r1, r5, #0x3
+ cmp r0, r1
+ beq _02087412
+ add r1, r1, #0x1
+ cmp r0, r1
+ beq _02087486
+ b _02087420
+_02087412:
+ ldr r0, [r4, #0x0]
+ mov r1, #0x0
+ str r1, [r0, #0x4]
+ ldr r0, [r4, #0x5c]
+ add r0, r0, #0x1
+ str r0, [r4, #0x5c]
+ b _02087486
+_02087420:
+ cmp r0, #0x0
+ bne _02087428
+ add r1, r5, #0x0
+ b _0208742A
+_02087428:
+ mov r1, #0x0
+_0208742A:
+ ldr r0, [r4, #0x0]
+ str r1, [r0, #0x4]
+ ldr r0, [r4, #0x5c]
+ add r0, r0, #0x1
+ str r0, [r4, #0x5c]
+ b _02087486
+_02087436:
+ bl FUN_02086960
+ ldr r0, [r4, #0x5c]
+ add r0, r0, #0x1
+ str r0, [r4, #0x5c]
+ b _02087486
+_02087442:
+ add r0, r1, #0x1
+ str r0, [r4, #0x5c]
+ b _02087486
+_02087448:
+ bl FUN_020866DC
+ ldr r0, [r4, #0x5c]
+ add r0, r0, #0x1
+ str r0, [r4, #0x5c]
+_02087452:
+ bl FUN_0200E308
+ cmp r0, #0x1
+ bne _02087486
+ ldr r0, [r4, #0x5c]
+ add r0, r0, #0x1
+ str r0, [r4, #0x5c]
+ b _02087486
+_02087462:
+ add r0, r4, #0x0
+ bl FUN_02086F8C
+ add r0, r4, #0x0
+ bl FUN_02086E30
+ add r0, r4, #0x0
+ add r0, #0x18
+ bl FUN_0208698C
+ ldr r0, [r4, #0x40]
+ ldr r0, [r0, #0xc]
+ bl FUN_02086AF0
+ ldr r0, [r4, #0x40]
+ bl FUN_02086BA0
+ mov r5, #0x0
+_02087486:
+ ldr r0, [r4, #0x4c]
+ bl FUN_0200BC1C
+ add r0, r5, #0x0
+ add sp, #0x20
+ pop {r3-r5, pc}
+ nop
+_02087494: .word 0x00000475
+_02087498: .word 0x00000484
+
+ thumb_func_start FUN_0208749C
+FUN_0208749C: ; 0x0208749C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x64]
+ cmp r0, #0x0
+ beq _020874AC
+ cmp r0, #0x1
+ beq _020874BC
+ b _020874D4
+_020874AC:
+ ldr r0, [r4, #0x6c]
+ mov r1, #0x0
+ bl FUN_0200C61C
+ ldr r0, [r4, #0x64]
+ add r0, r0, #0x1
+ str r0, [r4, #0x64]
+ b _020874DC
+_020874BC:
+ ldr r0, [r4, #0x60]
+ add r0, r0, #0x1
+ str r0, [r4, #0x60]
+ cmp r0, #0x19
+ blt _020874DC
+ ldr r0, _020874E0 ; =0x00000714
+ bl FUN_020054C8
+ ldr r0, [r4, #0x64]
+ add r0, r0, #0x1
+ str r0, [r4, #0x64]
+ b _020874DC
+_020874D4:
+ mov r0, #0x0
+ str r0, [r4, #0x64]
+ str r0, [r4, #0x60]
+ pop {r4, pc}
+_020874DC:
+ mov r0, #0x1
+ pop {r4, pc}
+ .balign 4
+_020874E0: .word 0x00000714
+
+ thumb_func_start FUN_020874E4
+FUN_020874E4: ; 0x020874E4
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x64]
+ cmp r1, #0x0
+ beq _020874F4
+ cmp r1, #0x1
+ beq _0208750E
+ b _02087532
+_020874F4:
+ ldr r0, [r4, #0x40]
+ bl FUN_02086B8C
+ cmp r0, #0x1
+ beq _0208754C
+ ldr r0, [r4, #0x6c]
+ mov r1, #0x1
+ bl FUN_0200C61C
+ ldr r0, [r4, #0x64]
+ add r0, r0, #0x1
+ str r0, [r4, #0x64]
+ b _0208754C
+_0208750E:
+ mov r1, #0x0
+ bl FUN_02086E04
+ cmp r0, #0x2
+ bne _0208754C
+ ldr r0, _02087550 ; =0x00000714
+ bl FUN_020054C8
+ ldr r0, [r4, #0x6c]
+ mov r1, #0x2
+ bl FUN_0200C61C
+ ldr r0, [r4, #0x64]
+ add r0, r0, #0x1
+ str r0, [r4, #0x64]
+ mov r0, #0x0
+ str r0, [r4, #0x60]
+ b _0208754C
+_02087532:
+ mov r1, #0x0
+ bl FUN_02086E04
+ cmp r0, #0x2
+ bne _0208754C
+ ldr r0, [r4, #0x6c]
+ mov r1, #0x2
+ bl FUN_0200C61C
+ mov r0, #0x0
+ str r0, [r4, #0x64]
+ str r0, [r4, #0x60]
+ pop {r4, pc}
+_0208754C:
+ mov r0, #0x1
+ pop {r4, pc}
+ .balign 4
+_02087550: .word 0x00000714
+
+ thumb_func_start FUN_02087554
+FUN_02087554: ; 0x02087554
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x64]
+ cmp r1, #0x0
+ beq _02087564
+ cmp r1, #0x1
+ beq _0208756A
+ b _0208759C
+_02087564:
+ add r0, r1, #0x1
+ str r0, [r4, #0x64]
+ b _020875A4
+_0208756A:
+ mov r1, #0x1
+ bl FUN_02086E04
+ add r5, r0, #0x0
+ cmp r5, #0x1
+ bne _0208758C
+ ldr r0, _020875A8 ; =0x00000714
+ bl FUN_020054C8
+ ldr r0, [r4, #0x6c]
+ mov r1, #0x3
+ bl FUN_0200C61C
+ ldr r0, [r4, #0x40]
+ mov r1, #0x0
+ bl FUN_02086B70
+_0208758C:
+ cmp r5, #0x2
+ bne _020875A4
+ mov r0, #0x0
+ str r0, [r4, #0x60]
+ ldr r0, [r4, #0x64]
+ add r0, r0, #0x1
+ str r0, [r4, #0x64]
+ b _020875A4
+_0208759C:
+ mov r0, #0x0
+ str r0, [r4, #0x64]
+ str r0, [r4, #0x60]
+ pop {r3-r5, pc}
+_020875A4:
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ .balign 4
+_020875A8: .word 0x00000714
+
+ thumb_func_start FUN_020875AC
+FUN_020875AC: ; 0x020875AC
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x64]
+ cmp r1, #0x0
+ beq _020875BC
+ cmp r1, #0x1
+ beq _020875CE
+ b _02087600
+_020875BC:
+ ldr r0, [r4, #0x40]
+ bl FUN_02086B8C
+ cmp r0, #0x1
+ beq _02087608
+ ldr r0, [r4, #0x64]
+ add r0, r0, #0x1
+ str r0, [r4, #0x64]
+ b _02087608
+_020875CE:
+ mov r1, #0x2
+ bl FUN_02086E04
+ add r5, r0, #0x0
+ cmp r5, #0x1
+ bne _020875F0
+ ldr r0, _0208760C ; =0x00000714
+ bl FUN_020054C8
+ ldr r0, [r4, #0x6c]
+ mov r1, #0x4
+ bl FUN_0200C61C
+ ldr r0, [r4, #0x40]
+ mov r1, #0x1
+ bl FUN_02086B70
+_020875F0:
+ cmp r5, #0x2
+ bne _02087608
+ mov r0, #0x0
+ str r0, [r4, #0x60]
+ ldr r0, [r4, #0x64]
+ add r0, r0, #0x1
+ str r0, [r4, #0x64]
+ b _02087608
+_02087600:
+ mov r0, #0x0
+ str r0, [r4, #0x64]
+ str r0, [r4, #0x60]
+ pop {r3-r5, pc}
+_02087608:
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ .balign 4
+_0208760C: .word 0x00000714
+
+ thumb_func_start FUN_02087610
+FUN_02087610: ; 0x02087610
+ push {r4-r6, lr}
+ sub sp, #0x10
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x64]
+ cmp r1, #0x5
+ bls _0208761E
+ b _020877FC
+_0208761E:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0208762A: ; jump table (using 16-bit offset)
+ .short _02087636 - _0208762A - 2; case 0
+ .short _02087658 - _0208762A - 2; case 1
+ .short _0208769A - _0208762A - 2; case 2
+ .short _02087702 - _0208762A - 2; case 3
+ .short _02087794 - _0208762A - 2; case 4
+ .short _020877E0 - _0208762A - 2; case 5
+_02087636:
+ ldr r0, [r4, #0x40]
+ bl FUN_02086B8C
+ cmp r0, #0x1
+ beq _020876A4
+ ldr r0, [r4, #0x6c]
+ mov r1, #0x4
+ bl FUN_0200C61C
+ mov r0, #0x2
+ mov r1, #0x0
+ bl FUN_0201E6E4
+ ldr r0, [r4, #0x64]
+ add r0, r0, #0x1
+ str r0, [r4, #0x64]
+ b _02087810
+_02087658:
+ mov r1, #0x3
+ bl FUN_02086E04
+ add r5, r0, #0x0
+ cmp r5, #0x1
+ bne _02087682
+ ldr r0, [r4, #0x6c]
+ mov r1, #0x5
+ bl FUN_0200C61C
+ ldr r0, _02087818 ; =0x00000707
+ bl FUN_020054C8
+ ldr r0, [r4, #0x40]
+ mov r1, #0x2
+ bl FUN_02086B70
+ ldr r0, [r4, #0x40]
+ mov r1, #0x3
+ bl FUN_02086B70
+_02087682:
+ cmp r5, #0x2
+ bne _020876A4
+ ldr r0, [r4, #0x6c]
+ mov r1, #0x0
+ bl FUN_0200C644
+ mov r0, #0x0
+ str r0, [r4, #0x60]
+ ldr r0, [r4, #0x64]
+ add r0, r0, #0x1
+ str r0, [r4, #0x64]
+ b _02087810
+_0208769A:
+ ldr r0, [r4, #0x60]
+ add r0, r0, #0x1
+ str r0, [r4, #0x60]
+ cmp r0, #0xa
+ bge _020876A6
+_020876A4:
+ b _02087810
+_020876A6:
+ mov r3, #0x0
+ str r3, [r4, #0x60]
+ str r3, [sp, #0x0]
+ mov r0, #0x10
+ ldr r2, _0208781C ; =0x0000FFFF
+ str r0, [sp, #0x4]
+ str r2, [sp, #0x8]
+ ldr r0, [r4, #0x8]
+ mov r1, #0x1
+ bl FUN_02003210
+ ldr r0, [r4, #0x70]
+ ldr r0, [r0, #0x0]
+ bl FUN_02020354
+ mov r1, #0x1
+ bl FUN_0201E28C
+ add r5, r0, #0x0
+ mov r3, #0x0
+ mov r6, #0x1
+ str r3, [sp, #0x0]
+ mov r0, #0x10
+ ldr r2, _0208781C ; =0x0000FFFF
+ str r0, [sp, #0x4]
+ str r2, [sp, #0x8]
+ lsl r6, r5
+ eor r2, r6
+ lsl r2, r2, #0x10
+ ldr r0, [r4, #0x8]
+ mov r1, #0x4
+ lsr r2, r2, #0x10
+ bl FUN_02003210
+ ldr r0, _0208781C ; =0x0000FFFF
+ mov r1, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x68]
+ mov r2, #0x10
+ add r3, r1, #0x0
+ bl FUN_02007E68
+ ldr r0, [r4, #0x64]
+ add r0, r0, #0x1
+ str r0, [r4, #0x64]
+ b _02087810
+_02087702:
+ add r1, sp, #0xc
+ ldr r0, [r4, #0x70]
+ mov r5, #0x0
+ add r1, #0x2
+ add r2, sp, #0xc
+ bl FUN_0200C7A0
+ add r0, sp, #0xc
+ add r1, r5, #0x0
+ ldrsh r2, [r0, r1]
+ add r0, r1, #0x0
+ sub r0, #0x30
+ cmp r2, r0
+ ble _02087728
+ ldr r0, [r4, #0x70]
+ sub r2, r1, #0x4
+ bl FUN_0200C82C
+ b _0208772A
+_02087728:
+ add r5, r5, #0x1
+_0208772A:
+ add r1, sp, #0xc
+ ldr r0, [r4, #0x74]
+ add r1, #0x2
+ add r2, sp, #0xc
+ bl FUN_0200C7A0
+ add r0, sp, #0xc
+ mov r1, #0x0
+ ldrsh r0, [r0, r1]
+ cmp r0, #0xc0
+ bge _0208774A
+ ldr r0, [r4, #0x74]
+ mov r2, #0x4
+ bl FUN_0200C82C
+ b _0208774C
+_0208774A:
+ add r5, r5, #0x1
+_0208774C:
+ ldr r0, [r4, #0x8]
+ bl FUN_020038E4
+ cmp r0, #0x0
+ bne _02087810
+ cmp r5, #0x2
+ bne _02087810
+ ldr r0, [r4, #0x68]
+ bl FUN_02007F20
+ cmp r0, #0x0
+ bne _02087810
+ mov r0, #0x2
+ mov r1, #0x1
+ bl FUN_0201E6E4
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_02086F98
+ ldr r0, [r4, #0x6c]
+ mov r1, #0x0
+ bl FUN_0200C644
+ ldr r0, [r4, #0x70]
+ mov r1, #0x0
+ bl FUN_0200C644
+ ldr r0, [r4, #0x74]
+ mov r1, #0x0
+ bl FUN_0200C644
+ ldr r0, [r4, #0x64]
+ add r0, r0, #0x1
+ str r0, [r4, #0x64]
+ b _02087810
+_02087794:
+ ldr r0, [r4, #0x60]
+ add r0, r0, #0x1
+ str r0, [r4, #0x60]
+ cmp r0, #0x19
+ blt _02087810
+ mov r2, #0x0
+ ldr r0, _0208781C ; =0x0000FFFF
+ str r2, [r4, #0x60]
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x68]
+ mov r1, #0x10
+ add r3, r2, #0x0
+ bl FUN_02007E68
+ mov r0, #0x10
+ str r0, [sp, #0x0]
+ mov r3, #0x0
+ ldr r2, _0208781C ; =0x0000FFFF
+ str r3, [sp, #0x4]
+ str r2, [sp, #0x8]
+ ldr r0, [r4, #0x8]
+ mov r1, #0x1
+ bl FUN_02003210
+ mov r0, #0x10
+ str r0, [sp, #0x0]
+ mov r3, #0x0
+ ldr r2, _0208781C ; =0x0000FFFF
+ str r3, [sp, #0x4]
+ str r2, [sp, #0x8]
+ ldr r0, [r4, #0x8]
+ mov r1, #0x4
+ bl FUN_02003210
+ ldr r0, [r4, #0x64]
+ add r0, r0, #0x1
+ str r0, [r4, #0x64]
+ b _02087810
+_020877E0:
+ ldr r0, [r4, #0x8]
+ bl FUN_020038E4
+ cmp r0, #0x0
+ bne _02087810
+ ldr r0, [r4, #0x68]
+ bl FUN_02007F20
+ cmp r0, #0x0
+ bne _02087810
+ ldr r0, [r4, #0x64]
+ add r0, r0, #0x1
+ str r0, [r4, #0x64]
+ b _02087810
+_020877FC:
+ ldr r0, [r4, #0x40]
+ bl FUN_02086B8C
+ cmp r0, #0x1
+ beq _02087810
+ mov r0, #0x0
+ str r0, [r4, #0x64]
+ add sp, #0x10
+ str r0, [r4, #0x60]
+ pop {r4-r6, pc}
+_02087810:
+ mov r0, #0x1
+ add sp, #0x10
+ pop {r4-r6, pc}
+ nop
+_02087818: .word 0x00000707
+_0208781C: .word 0x0000FFFF
+
+ thumb_func_start FUN_02087820
+FUN_02087820: ; 0x02087820
+ push {r4-r6, lr}
+ sub sp, #0x10
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x64]
+ cmp r0, #0x4
+ bls _0208782E
+ b _020879FC
+_0208782E:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0208783A: ; jump table (using 16-bit offset)
+ .short _02087844 - _0208783A - 2; case 0
+ .short _02087874 - _0208783A - 2; case 1
+ .short _02087902 - _0208783A - 2; case 2
+ .short _02087994 - _0208783A - 2; case 3
+ .short _020879E0 - _0208783A - 2; case 4
+_02087844:
+ ldr r0, [r4, #0x40]
+ mov r1, #0x0
+ bl FUN_02086B70
+ ldr r0, [r4, #0x40]
+ mov r1, #0x1
+ bl FUN_02086B70
+ ldr r0, [r4, #0x40]
+ mov r1, #0x2
+ bl FUN_02086B70
+ ldr r0, [r4, #0x40]
+ mov r1, #0x3
+ bl FUN_02086B70
+ mov r0, #0x2
+ mov r1, #0x0
+ bl FUN_0201E6E4
+ ldr r0, [r4, #0x64]
+ add r0, r0, #0x1
+ str r0, [r4, #0x64]
+ b _02087A06
+_02087874:
+ ldr r0, [r4, #0x60]
+ cmp r0, #0x19
+ beq _02087884
+ cmp r0, #0x50
+ beq _0208788C
+ cmp r0, #0x8e
+ beq _02087894
+ b _0208789A
+_02087884:
+ ldr r0, _02087A0C ; =0x00000806
+ bl FUN_020054C8
+ b _0208789A
+_0208788C:
+ ldr r0, _02087A10 ; =0x000007AA
+ bl FUN_020054C8
+ b _0208789A
+_02087894:
+ ldr r0, _02087A14 ; =0x00000815
+ bl FUN_020054C8
+_0208789A:
+ ldr r0, [r4, #0x60]
+ add r0, r0, #0x1
+ str r0, [r4, #0x60]
+ cmp r0, #0xa0
+ bge _020878A6
+ b _02087A06
+_020878A6:
+ mov r3, #0x0
+ str r3, [r4, #0x60]
+ str r3, [sp, #0x0]
+ mov r0, #0x10
+ ldr r2, _02087A18 ; =0x0000FFFF
+ str r0, [sp, #0x4]
+ str r2, [sp, #0x8]
+ ldr r0, [r4, #0x8]
+ mov r1, #0x1
+ bl FUN_02003210
+ ldr r0, [r4, #0x70]
+ ldr r0, [r0, #0x0]
+ bl FUN_02020354
+ mov r1, #0x1
+ bl FUN_0201E28C
+ add r5, r0, #0x0
+ mov r3, #0x0
+ mov r6, #0x1
+ str r3, [sp, #0x0]
+ mov r0, #0x10
+ ldr r2, _02087A18 ; =0x0000FFFF
+ str r0, [sp, #0x4]
+ str r2, [sp, #0x8]
+ lsl r6, r5
+ eor r2, r6
+ lsl r2, r2, #0x10
+ ldr r0, [r4, #0x8]
+ mov r1, #0x4
+ lsr r2, r2, #0x10
+ bl FUN_02003210
+ ldr r0, _02087A18 ; =0x0000FFFF
+ mov r1, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x68]
+ mov r2, #0x10
+ add r3, r1, #0x0
+ bl FUN_02007E68
+ ldr r0, [r4, #0x64]
+ add r0, r0, #0x1
+ str r0, [r4, #0x64]
+ b _02087A06
+_02087902:
+ add r1, sp, #0xc
+ ldr r0, [r4, #0x70]
+ mov r5, #0x0
+ add r1, #0x2
+ add r2, sp, #0xc
+ bl FUN_0200C7A0
+ add r0, sp, #0xc
+ add r1, r5, #0x0
+ ldrsh r2, [r0, r1]
+ add r0, r1, #0x0
+ sub r0, #0x30
+ cmp r2, r0
+ ble _02087928
+ ldr r0, [r4, #0x70]
+ sub r2, r1, #0x4
+ bl FUN_0200C82C
+ b _0208792A
+_02087928:
+ add r5, r5, #0x1
+_0208792A:
+ add r1, sp, #0xc
+ ldr r0, [r4, #0x74]
+ add r1, #0x2
+ add r2, sp, #0xc
+ bl FUN_0200C7A0
+ add r0, sp, #0xc
+ mov r1, #0x0
+ ldrsh r0, [r0, r1]
+ cmp r0, #0xc0
+ bge _0208794A
+ ldr r0, [r4, #0x74]
+ mov r2, #0x4
+ bl FUN_0200C82C
+ b _0208794C
+_0208794A:
+ add r5, r5, #0x1
+_0208794C:
+ ldr r0, [r4, #0x8]
+ bl FUN_020038E4
+ cmp r0, #0x0
+ bne _02087A06
+ cmp r5, #0x2
+ bne _02087A06
+ ldr r0, [r4, #0x68]
+ bl FUN_02007F20
+ cmp r0, #0x0
+ bne _02087A06
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_02086F98
+ mov r0, #0x2
+ mov r1, #0x1
+ bl FUN_0201E6E4
+ ldr r0, [r4, #0x6c]
+ mov r1, #0x0
+ bl FUN_0200C644
+ ldr r0, [r4, #0x70]
+ mov r1, #0x0
+ bl FUN_0200C644
+ ldr r0, [r4, #0x74]
+ mov r1, #0x0
+ bl FUN_0200C644
+ ldr r0, [r4, #0x64]
+ add r0, r0, #0x1
+ str r0, [r4, #0x64]
+ b _02087A06
+_02087994:
+ ldr r0, [r4, #0x60]
+ add r0, r0, #0x1
+ str r0, [r4, #0x60]
+ cmp r0, #0x19
+ blt _02087A06
+ mov r2, #0x0
+ ldr r0, _02087A18 ; =0x0000FFFF
+ str r2, [r4, #0x60]
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x68]
+ mov r1, #0x10
+ add r3, r2, #0x0
+ bl FUN_02007E68
+ mov r0, #0x10
+ str r0, [sp, #0x0]
+ mov r3, #0x0
+ ldr r2, _02087A18 ; =0x0000FFFF
+ str r3, [sp, #0x4]
+ str r2, [sp, #0x8]
+ ldr r0, [r4, #0x8]
+ mov r1, #0x1
+ bl FUN_02003210
+ mov r0, #0x10
+ str r0, [sp, #0x0]
+ mov r3, #0x0
+ ldr r2, _02087A18 ; =0x0000FFFF
+ str r3, [sp, #0x4]
+ str r2, [sp, #0x8]
+ ldr r0, [r4, #0x8]
+ mov r1, #0x4
+ bl FUN_02003210
+ ldr r0, [r4, #0x64]
+ add r0, r0, #0x1
+ str r0, [r4, #0x64]
+ b _02087A06
+_020879E0:
+ ldr r0, [r4, #0x8]
+ bl FUN_020038E4
+ cmp r0, #0x0
+ bne _02087A06
+ ldr r0, [r4, #0x68]
+ bl FUN_02007F20
+ cmp r0, #0x0
+ bne _02087A06
+ ldr r0, [r4, #0x64]
+ add r0, r0, #0x1
+ str r0, [r4, #0x64]
+ b _02087A06
+_020879FC:
+ mov r0, #0x0
+ str r0, [r4, #0x64]
+ add sp, #0x10
+ str r0, [r4, #0x60]
+ pop {r4-r6, pc}
+_02087A06:
+ mov r0, #0x1
+ add sp, #0x10
+ pop {r4-r6, pc}
+ .balign 4
+_02087A0C: .word 0x00000806
+_02087A10: .word 0x000007AA
+_02087A14: .word 0x00000815
+_02087A18: .word 0x0000FFFF
+
+ thumb_func_start FUN_02087A1C
+FUN_02087A1C: ; 0x02087A1C
+ ldr r3, _02087A34 ; =0x020FD13C
+ mov r2, #0x0
+_02087A20:
+ ldrb r1, [r3, #0x0]
+ cmp r0, r1
+ beq _02087A2E
+ add r2, r2, #0x1
+ add r3, r3, #0x1
+ cmp r2, #0x6
+ blt _02087A20
+_02087A2E:
+ add r0, r2, #0x0
+ bx lr
+ nop
+_02087A34: .word 0x020FD13C
+
+ thumb_func_start FUN_02087A38
+FUN_02087A38: ; 0x02087A38
+ push {r4, lr}
+ add r4, r0, #0x0
+ cmp r4, #0x6
+ blt _02087A44
+ bl ErrorHandling
+_02087A44:
+ ldr r0, _02087A4C ; =0x020FD13C
+ ldrb r0, [r0, r4]
+ pop {r4, pc}
+ nop
+_02087A4C: .word 0x020FD13C
+
+ thumb_func_start FUN_02087A50
+FUN_02087A50: ; 0x02087A50
+ ldr r3, _02087A68 ; =0x020FD120
+ mov r2, #0x0
+_02087A54:
+ ldrh r1, [r3, #0x0]
+ cmp r0, r1
+ beq _02087A62
+ add r2, r2, #0x1
+ add r3, r3, #0x2
+ cmp r2, #0xe
+ blt _02087A54
+_02087A62:
+ add r0, r2, #0x0
+ bx lr
+ nop
+_02087A68: .word 0x020FD120
+
+ thumb_func_start FUN_02087A6C
+FUN_02087A6C: ; 0x02087A6C
+ push {r3, lr}
+ mov r1, #0x18
+ bl FUN_02016998
+ add r3, r0, #0x0
+ mov r2, #0x18
+ mov r1, #0x0
+_02087A7A:
+ strb r1, [r3, #0x0]
+ add r3, r3, #0x1
+ sub r2, r2, #0x1
+ bne _02087A7A
+ pop {r3, pc}
+
+ thumb_func_start FUN_02087A84
+FUN_02087A84: ; 0x02087A84
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _02087A8E
+ bl ErrorHandling
+_02087A8E:
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02087A98
+FUN_02087A98: ; 0x02087A98
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ add r4, r2, #0x0
+ cmp r5, #0x0
+ bne _02087AA8
+ bl ErrorHandling
+_02087AA8:
+ ldr r0, [r5, #0x0]
+ cmp r0, #0x0
+ beq _02087AB2
+ bl ErrorHandling
+_02087AB2:
+ ldr r0, [r5, #0x4]
+ cmp r0, #0x0
+ beq _02087ABC
+ bl ErrorHandling
+_02087ABC:
+ add r0, r4, #0x0
+ bl FUN_02087C18
+ str r0, [r5, #0x0]
+ add r0, r4, #0x0
+ bl FUN_02087C2C
+ str r0, [r5, #0x4]
+ cmp r6, #0x0
+ bne _02087AEE
+ add r0, r5, #0x0
+ add r1, r5, #0x0
+ add r0, #0x8
+ add r1, #0xc
+ add r2, r4, #0x0
+ bl FUN_02087C40
+ add r0, r5, #0x0
+ add r5, #0x14
+ add r0, #0x10
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_02087CA0
+ pop {r4-r6, pc}
+_02087AEE:
+ add r0, r5, #0x0
+ add r1, r5, #0x0
+ add r0, #0x8
+ add r1, #0xc
+ add r2, r4, #0x0
+ bl FUN_02087C70
+ add r0, r5, #0x0
+ add r5, #0x14
+ add r0, #0x10
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_02087CD0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02087B0C
+FUN_02087B0C: ; 0x02087B0C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ bne _02087B1A
+ bl ErrorHandling
+_02087B1A:
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x0
+ bne _02087B24
+ bl ErrorHandling
+_02087B24:
+ ldr r0, [r4, #0x0]
+ bl FUN_02016A18
+ ldr r0, [r4, #0x4]
+ bl FUN_02016A18
+ ldr r0, [r4, #0x8]
+ bl FUN_02016A18
+ ldr r0, [r4, #0xc]
+ bl FUN_02016A18
+ ldr r0, [r4, #0x10]
+ bl FUN_02016A18
+ ldr r0, [r4, #0x14]
+ bl FUN_02016A18
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+ str r0, [r4, #0x4]
+ str r0, [r4, #0x8]
+ str r0, [r4, #0xc]
+ str r0, [r4, #0x10]
+ str r0, [r4, #0x14]
+ pop {r4, pc}
+
+ thumb_func_start FUN_02087B58
+FUN_02087B58: ; 0x02087B58
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r5, #0x0
+ bne _02087B66
+ bl ErrorHandling
+_02087B66:
+ ldr r0, [r5, #0x0]
+ cmp r0, #0x0
+ bne _02087B70
+ bl ErrorHandling
+_02087B70:
+ ldr r1, [r5, #0x0]
+ lsl r0, r4, #0x2
+ ldr r0, [r1, r0]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02087B78
+FUN_02087B78: ; 0x02087B78
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r5, #0x0
+ bne _02087B86
+ bl ErrorHandling
+_02087B86:
+ ldr r0, [r5, #0x4]
+ cmp r0, #0x0
+ bne _02087B90
+ bl ErrorHandling
+_02087B90:
+ ldr r1, [r5, #0x4]
+ lsl r0, r4, #0x2
+ ldr r0, [r1, r0]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02087B98
+FUN_02087B98: ; 0x02087B98
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r5, #0x0
+ bne _02087BA6
+ bl ErrorHandling
+_02087BA6:
+ ldr r0, [r5, #0x8]
+ cmp r0, #0x0
+ bne _02087BB0
+ bl ErrorHandling
+_02087BB0:
+ ldr r1, [r5, #0x8]
+ lsl r0, r4, #0x1
+ ldrsh r0, [r1, r0]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02087BB8
+FUN_02087BB8: ; 0x02087BB8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r5, #0x0
+ bne _02087BC6
+ bl ErrorHandling
+_02087BC6:
+ ldr r0, [r5, #0xc]
+ cmp r0, #0x0
+ bne _02087BD0
+ bl ErrorHandling
+_02087BD0:
+ ldr r1, [r5, #0xc]
+ lsl r0, r4, #0x1
+ ldrsh r0, [r1, r0]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02087BD8
+FUN_02087BD8: ; 0x02087BD8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r5, #0x0
+ bne _02087BE6
+ bl ErrorHandling
+_02087BE6:
+ ldr r0, [r5, #0x10]
+ cmp r0, #0x0
+ bne _02087BF0
+ bl ErrorHandling
+_02087BF0:
+ ldr r1, [r5, #0x10]
+ lsl r0, r4, #0x1
+ ldrsh r0, [r1, r0]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02087BF8
+FUN_02087BF8: ; 0x02087BF8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ cmp r5, #0x0
+ bne _02087C06
+ bl ErrorHandling
+_02087C06:
+ ldr r0, [r5, #0x14]
+ cmp r0, #0x0
+ bne _02087C10
+ bl ErrorHandling
+_02087C10:
+ ldr r1, [r5, #0x14]
+ lsl r0, r4, #0x1
+ ldrsh r0, [r1, r0]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02087C18
+FUN_02087C18: ; 0x02087C18
+ push {r3, lr}
+ mov r1, #0x0
+ add r3, r0, #0x0
+ mov r0, #0x4b
+ add r2, r1, #0x0
+ str r1, [sp, #0x0]
+ bl FUN_02006C98
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02087C2C
+FUN_02087C2C: ; 0x02087C2C
+ push {r3, lr}
+ add r3, r0, #0x0
+ mov r2, #0x0
+ mov r0, #0x4b
+ mov r1, #0x1
+ str r2, [sp, #0x0]
+ bl FUN_02006C98
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02087C40
+FUN_02087C40: ; 0x02087C40
+ push {r3-r6, lr}
+ sub sp, #0x4
+ add r6, r2, #0x0
+ mov r2, #0x0
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ str r2, [sp, #0x0]
+ mov r0, #0x4b
+ mov r1, #0x9
+ add r3, r6, #0x0
+ bl FUN_02006C98
+ str r0, [r5, #0x0]
+ mov r2, #0x0
+ mov r0, #0x4b
+ mov r1, #0xa
+ add r3, r6, #0x0
+ str r2, [sp, #0x0]
+ bl FUN_02006C98
+ str r0, [r4, #0x0]
+ add sp, #0x4
+ pop {r3-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02087C70
+FUN_02087C70: ; 0x02087C70
+ push {r3-r6, lr}
+ sub sp, #0x4
+ add r6, r2, #0x0
+ mov r2, #0x0
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ str r2, [sp, #0x0]
+ mov r0, #0x4b
+ mov r1, #0x7
+ add r3, r6, #0x0
+ bl FUN_02006C98
+ str r0, [r5, #0x0]
+ mov r2, #0x0
+ mov r0, #0x4b
+ mov r1, #0x8
+ add r3, r6, #0x0
+ str r2, [sp, #0x0]
+ bl FUN_02006C98
+ str r0, [r4, #0x0]
+ add sp, #0x4
+ pop {r3-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02087CA0
+FUN_02087CA0: ; 0x02087CA0
+ push {r3-r6, lr}
+ sub sp, #0x4
+ add r6, r2, #0x0
+ mov r2, #0x0
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ str r2, [sp, #0x0]
+ mov r0, #0x4b
+ mov r1, #0x5
+ add r3, r6, #0x0
+ bl FUN_02006C98
+ str r0, [r5, #0x0]
+ mov r2, #0x0
+ mov r0, #0x4b
+ mov r1, #0x6
+ add r3, r6, #0x0
+ str r2, [sp, #0x0]
+ bl FUN_02006C98
+ str r0, [r4, #0x0]
+ add sp, #0x4
+ pop {r3-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02087CD0
+FUN_02087CD0: ; 0x02087CD0
+ push {r3-r6, lr}
+ sub sp, #0x4
+ add r6, r2, #0x0
+ mov r2, #0x0
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ str r2, [sp, #0x0]
+ mov r0, #0x4b
+ mov r1, #0x3
+ add r3, r6, #0x0
+ bl FUN_02006C98
+ str r0, [r5, #0x0]
+ mov r2, #0x0
+ mov r0, #0x4b
+ mov r1, #0x4
+ add r3, r6, #0x0
+ str r2, [sp, #0x0]
+ bl FUN_02006C98
+ str r0, [r4, #0x0]
+ add sp, #0x4
+ pop {r3-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02087D00
+FUN_02087D00: ; 0x02087D00
+ push {r3-r7, lr}
+ sub sp, #0x10
+ add r4, r0, #0x0
+ add r5, r1, #0x0
+ mov r0, #0x0
+ mov r1, #0xcf
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ lsl r1, r1, #0x2
+ bl FUN_02016998
+ mov r2, #0xcf
+ mov r1, #0x0
+ lsl r2, r2, #0x2
+ add r7, r0, #0x0
+ blx MI_CpuFill8
+ add r0, r4, #0x0
+ bl FUN_02028048
+ str r0, [r7, #0x8]
+ add r0, r4, #0x0
+ bl FUN_020238F4
+ str r0, [r7, #0xc]
+ add r0, r4, #0x0
+ bl FUN_0206BB1C
+ str r0, [r7, #0x10]
+ add r0, r4, #0x0
+ bl FUN_0206F158
+ str r0, [r7, #0x14]
+ add r0, r4, #0x0
+ bl LoadPlayerDataAddress
+ str r0, [r7, #0x18]
+ add r0, r5, #0x0
+ bl FUN_02027E5C
+ add r4, r0, #0x0
+ mov r0, #0x1
+ mov r1, #0x20
+ add r2, r5, #0x0
+ bl FUN_0200AA90
+ str r0, [sp, #0x4]
+ mov r6, #0x0
+_02087D60:
+ ldr r0, [r7, #0x8]
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ bl FUN_02028174
+ add r0, r4, #0x0
+ bl FUN_02027E34
+ cmp r0, #0x0
+ beq _02087DEE
+ add r0, r4, #0x0
+ add r1, sp, #0x8
+ bl FUN_02027FBC
+ ldr r0, [sp, #0x0]
+ add r1, r7, #0x0
+ add r1, #0x1c
+ lsl r0, r0, #0x3
+ add r5, r1, r0
+ strb r6, [r1, r0]
+ add r0, r4, #0x0
+ bl FUN_02027FDC
+ strb r0, [r5, #0x1]
+ add r0, sp, #0x8
+ ldrb r1, [r0, #0x0]
+ mov r2, #0x1
+ strb r1, [r5, #0x2]
+ ldrb r0, [r0, #0x6]
+ mov r1, #0x0
+ strb r0, [r5, #0x3]
+ add r0, sp, #0x8
+_02087DA0:
+ add r3, r0, r1
+ ldrb r3, [r3, #0x1]
+ cmp r3, #0x0
+ beq _02087DAE
+ ldrb r3, [r5, #0x4]
+ orr r3, r2
+ strb r3, [r5, #0x4]
+_02087DAE:
+ add r1, r1, #0x1
+ lsl r1, r1, #0x18
+ lsl r2, r2, #0x19
+ lsr r1, r1, #0x18
+ lsr r2, r2, #0x18
+ cmp r1, #0x5
+ blo _02087DA0
+ ldrb r1, [r5, #0x4]
+ mov r0, #0x20
+ orr r0, r1
+ strb r0, [r5, #0x4]
+ ldrb r2, [r5, #0x4]
+ mov r1, #0x80
+ add r0, r2, #0x0
+ bic r0, r1
+ lsl r1, r2, #0x1a
+ lsr r1, r1, #0x1f
+ lsl r1, r1, #0x1f
+ lsr r1, r1, #0x18
+ orr r0, r1
+ strb r0, [r5, #0x4]
+ ldr r0, [sp, #0x0]
+ add r1, r0, #0x0
+ add r1, r1, #0x1
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ str r1, [sp, #0x0]
+ strb r0, [r5, #0x5]
+ mov r0, #0xff
+ strb r0, [r5, #0x6]
+ ldrb r0, [r5, #0x6]
+ strb r0, [r5, #0x7]
+_02087DEE:
+ add r0, r6, #0x1
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ cmp r6, #0x64
+ blo _02087D60
+ ldr r0, [sp, #0x4]
+ bl FUN_0200AB18
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ ldr r0, [sp, #0x0]
+ strb r0, [r7, #0x0]
+ mov r0, #0x5
+ strb r0, [r7, #0x3]
+ add r0, r7, #0x0
+ add sp, #0x10
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02087E14
+FUN_02087E14: ; 0x02087E14
+ ldr r3, _02087E18 ; =FUN_02016A18
+ bx r3
+ .balign 4
+_02087E18: .word FUN_02016A18
+
+ thumb_func_start FUN_02087E1C
+FUN_02087E1C: ; 0x02087E1C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ beq _02087E3C
+ bl FUN_02006290
+ cmp r0, #0x0
+ beq _02087E3C
+ ldr r0, [r4, #0x0]
+ bl FUN_02006260
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+ mov r0, #0x1
+ pop {r4, pc}
+_02087E3C:
+ mov r0, #0x0
+ pop {r4, pc}
+
+ thumb_func_start FUN_02087E40
+FUN_02087E40: ; 0x02087E40
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl FUN_0200628C
+ mov r2, #0x1
+ add r5, r0, #0x0
+ mov r0, #0x3
+ mov r1, #0x2c
+ lsl r2, r2, #0xc
+ bl FUN_0201681C
+ add r0, r4, #0x0
+ mov r1, #0x18
+ mov r2, #0x2c
+ bl FUN_02006268
+ mov r1, #0x0
+ mov r2, #0x18
+ add r4, r0, #0x0
+ blx MI_CpuFill8
+ mov r0, #0x2c
+ str r0, [r4, #0x0]
+ str r5, [r4, #0xc]
+ mov r0, #0x1
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02087E74
+FUN_02087E74: ; 0x02087E74
+ push {r4, lr}
+ add r4, r1, #0x0
+ bl FUN_02006278
+ ldr r1, [r4, #0x0]
+ cmp r1, #0x8
+ bhi _02087EE4
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02087E8E: ; jump table (using 16-bit offset)
+ .short _02087EA0 - _02087E8E - 2; case 0
+ .short _02087EA8 - _02087E8E - 2; case 1
+ .short _02087EB0 - _02087E8E - 2; case 2
+ .short _02087EB8 - _02087E8E - 2; case 3
+ .short _02087EC0 - _02087E8E - 2; case 4
+ .short _02087EC8 - _02087E8E - 2; case 5
+ .short _02087ED0 - _02087E8E - 2; case 6
+ .short _02087ED8 - _02087E8E - 2; case 7
+ .short _02087EE0 - _02087E8E - 2; case 8
+_02087EA0:
+ bl FUN_02087F50
+ str r0, [r4, #0x0]
+ b _02087EE4
+_02087EA8:
+ bl FUN_02087F68
+ str r0, [r4, #0x0]
+ b _02087EE4
+_02087EB0:
+ bl FUN_02087FD4
+ str r0, [r4, #0x0]
+ b _02087EE4
+_02087EB8:
+ bl FUN_0208805C
+ str r0, [r4, #0x0]
+ b _02087EE4
+_02087EC0:
+ bl FUN_020880A0
+ str r0, [r4, #0x0]
+ b _02087EE4
+_02087EC8:
+ bl FUN_0208810C
+ str r0, [r4, #0x0]
+ b _02087EE4
+_02087ED0:
+ bl FUN_02088130
+ str r0, [r4, #0x0]
+ b _02087EE4
+_02087ED8:
+ bl FUN_020881AC
+ str r0, [r4, #0x0]
+ b _02087EE4
+_02087EE0:
+ mov r0, #0x1
+ pop {r4, pc}
+_02087EE4:
+ mov r0, #0x0
+ pop {r4, pc}
+
+ thumb_func_start FUN_02087EE8
+FUN_02087EE8: ; 0x02087EE8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_02006278
+ add r4, r0, #0x0
+ bl FUN_02087F08
+ add r0, r5, #0x0
+ bl FUN_0200627C
+ ldr r0, [r4, #0x0]
+ bl FUN_020168D0
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02087F08
+FUN_02087F08: ; 0x02087F08
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r2, [r5, #0xc]
+ mov r0, #0x0
+ ldrb r1, [r2, #0x0]
+ add r4, r0, #0x0
+ cmp r1, #0x0
+ bls _02087F42
+ mov r6, #0x1
+_02087F1A:
+ add r3, r2, #0x0
+ add r3, #0x1c
+ lsl r1, r4, #0x3
+ add r1, r3, r1
+ ldrb r3, [r1, #0x4]
+ lsl r3, r3, #0x19
+ lsr r3, r3, #0x1f
+ beq _02087F34
+ ldrb r1, [r1, #0x0]
+ ldr r0, [r2, #0x8]
+ bl FUN_020280B8
+ add r0, r6, #0x0
+_02087F34:
+ add r1, r4, #0x1
+ lsl r1, r1, #0x18
+ ldr r2, [r5, #0xc]
+ lsr r4, r1, #0x18
+ ldrb r1, [r2, #0x0]
+ cmp r4, r1
+ blo _02087F1A
+_02087F42:
+ cmp r0, #0x0
+ beq _02087F4C
+ ldr r0, [r2, #0x8]
+ bl FUN_020280F4
+_02087F4C:
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02087F50
+FUN_02087F50: ; 0x02087F50
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _02087F64 ; =0x020FD15C
+ ldr r1, [r4, #0xc]
+ ldr r2, [r4, #0x0]
+ bl FUN_02006234
+ str r0, [r4, #0x14]
+ mov r0, #0x1
+ pop {r4, pc}
+ .balign 4
+_02087F64: .word 0x020FD15C
+
+ thumb_func_start FUN_02087F68
+FUN_02087F68: ; 0x02087F68
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x14
+ bl FUN_02087E1C
+ cmp r0, #0x0
+ bne _02087F7A
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_02087F7A:
+ ldr r1, [r5, #0xc]
+ ldrb r0, [r1, #0x2]
+ cmp r0, #0x0
+ bne _02087F86
+ mov r0, #0x8
+ pop {r3-r5, pc}
+_02087F86:
+ mov r0, #0x0
+ strb r0, [r1, #0x2]
+ ldr r0, [r5, #0x0]
+ mov r1, #0x40
+ bl FUN_02016998
+ mov r1, #0x0
+ mov r2, #0x40
+ add r4, r0, #0x0
+ blx MI_CpuFill8
+ ldr r0, [r5, #0xc]
+ mov r1, #0x0
+ ldr r0, [r0, #0x10]
+ str r0, [r4, #0x0]
+ ldr r0, [r5, #0xc]
+ ldr r0, [r0, #0x14]
+ str r0, [r4, #0x4]
+ add r0, r4, #0x0
+ add r0, #0x21
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ mov r1, #0x14
+ add r0, #0x20
+ strb r1, [r0, #0x0]
+ ldr r0, [r5, #0xc]
+ add r1, r4, #0x0
+ ldr r0, [r0, #0x18]
+ str r0, [r4, #0xc]
+ ldr r0, _02087FD0 ; =0x020F96DC
+ ldr r2, [r5, #0x0]
+ bl FUN_02006234
+ str r0, [r5, #0x14]
+ str r4, [r5, #0x10]
+ mov r0, #0x2
+ pop {r3-r5, pc}
+ .balign 4
+_02087FD0: .word 0x020F96DC
+
+ thumb_func_start FUN_02087FD4
+FUN_02087FD4: ; 0x02087FD4
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r0, #0x14
+ bl FUN_02087E1C
+ cmp r0, #0x0
+ bne _02087FE6
+ mov r0, #0x2
+ pop {r3-r7, pc}
+_02087FE6:
+ ldr r7, [r5, #0x10]
+ add r0, r7, #0x0
+ add r0, #0x22
+ ldrb r6, [r0, #0x0]
+ strb r6, [r5, #0x8]
+ ldr r0, [r5, #0x10]
+ bl FUN_02016A18
+ cmp r6, #0x7
+ bne _02087FFE
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_02087FFE:
+ ldr r0, [r5, #0x0]
+ mov r1, #0x30
+ bl FUN_02016998
+ add r4, r0, #0x0
+ ldr r0, [r5, #0xc]
+ ldr r0, [r0, #0x10]
+ str r0, [r4, #0x0]
+ ldr r0, [r5, #0xc]
+ ldr r0, [r0, #0x18]
+ str r0, [r4, #0x4]
+ mov r0, #0x1
+ strb r0, [r4, #0x11]
+ strb r6, [r4, #0x14]
+ ldr r0, [r4, #0x0]
+ bl FUN_0206B9AC
+ strb r0, [r4, #0x13]
+ mov r1, #0x0
+ strh r1, [r4, #0x18]
+ mov r0, #0x3
+ strb r0, [r4, #0x12]
+ mov r0, #0x1
+ str r0, [r4, #0x2c]
+ str r1, [r4, #0x28]
+ ldr r1, _02088054 ; =0x020FD158
+ add r0, r4, #0x0
+ bl FUN_0207B000
+ ldr r1, [r5, #0xc]
+ add r0, r4, #0x0
+ ldr r1, [r1, #0xc]
+ bl FUN_0207C2A4
+ ldr r0, _02088058 ; =0x020FA6E8
+ ldr r2, [r5, #0x0]
+ add r1, r7, #0x0
+ bl FUN_02006234
+ str r0, [r5, #0x14]
+ str r4, [r5, #0x10]
+ mov r0, #0x3
+ pop {r3-r7, pc}
+ .balign 4
+_02088054: .word 0x020FD158
+_02088058: .word 0x020FA6E8
+
+ thumb_func_start FUN_0208805C
+FUN_0208805C: ; 0x0208805C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r0, #0x14
+ bl FUN_02087E1C
+ cmp r0, #0x0
+ bne _0208806E
+ mov r0, #0x3
+ pop {r3-r5, pc}
+_0208806E:
+ ldr r0, [r5, #0x10]
+ ldrb r4, [r0, #0x17]
+ ldrb r0, [r0, #0x14]
+ strb r0, [r5, #0x8]
+ ldr r0, [r5, #0x10]
+ bl FUN_02016A18
+ cmp r4, #0x1
+ bne _02088084
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_02088084:
+ ldr r0, [r5, #0xc]
+ add r3, r0, #0x0
+ ldrb r0, [r0, #0x1]
+ add r3, #0x20
+ lsl r2, r0, #0x3
+ ldrb r1, [r3, r2]
+ mov r0, #0x40
+ orr r0, r1
+ strb r0, [r3, r2]
+ ldr r0, [r5, #0xc]
+ mov r1, #0x1
+ strb r1, [r0, #0x2]
+ mov r0, #0x4
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_020880A0
+FUN_020880A0: ; 0x020880A0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ mov r1, #0xc
+ bl FUN_02016998
+ mov r1, #0x0
+ mov r2, #0xc
+ add r4, r0, #0x0
+ blx MI_CpuFill8
+ ldr r1, [r5, #0xc]
+ ldrb r0, [r1, #0x1]
+ lsl r0, r0, #0x3
+ add r0, r1, r0
+ ldrb r0, [r0, #0x1e]
+ strh r0, [r4, #0x8]
+ ldr r2, [r5, #0xc]
+ ldrb r1, [r2, #0x1]
+ ldr r0, [r2, #0x8]
+ lsl r1, r1, #0x3
+ add r1, r2, r1
+ ldrb r1, [r1, #0x1c]
+ ldr r2, [r5, #0x0]
+ bl FUN_02028190
+ str r0, [r4, #0x4]
+ ldr r0, [r5, #0xc]
+ ldrb r1, [r5, #0x8]
+ ldr r0, [r0, #0x10]
+ bl FUN_0206B9B0
+ str r0, [r4, #0x0]
+ ldr r0, [r5, #0xc]
+ ldr r0, [r0, #0x18]
+ bl FUN_02024FF4
+ strb r0, [r4, #0xa]
+ ldr r0, [r5, #0xc]
+ ldr r0, [r0, #0x18]
+ bl FUN_02025084
+ strb r0, [r4, #0xb]
+ ldr r0, _02088108 ; =0x020FD16C
+ ldr r2, [r5, #0x0]
+ add r1, r4, #0x0
+ bl FUN_02006234
+ str r0, [r5, #0x14]
+ str r4, [r5, #0x10]
+ mov r0, #0x5
+ pop {r3-r5, pc}
+ .balign 4
+_02088108: .word 0x020FD16C
+
+ thumb_func_start FUN_0208810C
+FUN_0208810C: ; 0x0208810C
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, #0x14
+ bl FUN_02087E1C
+ cmp r0, #0x0
+ bne _0208811E
+ mov r0, #0x5
+ pop {r4, pc}
+_0208811E:
+ ldr r4, [r4, #0x10]
+ ldr r0, [r4, #0x4]
+ bl FUN_02016A18
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ mov r0, #0x6
+ pop {r4, pc}
+
+ thumb_func_start FUN_02088130
+FUN_02088130: ; 0x02088130
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x0]
+ mov r1, #0x30
+ bl FUN_02016998
+ ldr r2, [r5, #0xc]
+ add r4, r0, #0x0
+ ldrb r1, [r2, #0x1]
+ ldr r0, [r2, #0x8]
+ lsl r1, r1, #0x3
+ add r1, r2, r1
+ ldrb r1, [r1, #0x1c]
+ ldr r2, [r5, #0x0]
+ bl FUN_02028190
+ add r6, r0, #0x0
+ ldr r0, [r5, #0xc]
+ ldr r0, [r0, #0x10]
+ str r0, [r4, #0x0]
+ ldr r0, [r5, #0xc]
+ ldr r0, [r0, #0x18]
+ str r0, [r4, #0x4]
+ mov r0, #0x1
+ strb r0, [r4, #0x11]
+ ldrb r0, [r5, #0x8]
+ strb r0, [r4, #0x14]
+ ldr r0, [r4, #0x0]
+ bl FUN_0206B9AC
+ strb r0, [r4, #0x13]
+ mov r1, #0x0
+ strh r1, [r4, #0x18]
+ mov r0, #0x4
+ strb r0, [r4, #0x12]
+ str r6, [r4, #0x24]
+ mov r0, #0x1
+ str r0, [r4, #0x2c]
+ str r1, [r4, #0x28]
+ ldr r1, _020881A4 ; =0x020FD154
+ add r0, r4, #0x0
+ bl FUN_0207B000
+ ldr r1, [r5, #0xc]
+ add r0, r4, #0x0
+ ldr r1, [r1, #0xc]
+ bl FUN_0207C2A4
+ ldr r0, _020881A8 ; =0x020FA6E8
+ ldr r2, [r5, #0x0]
+ add r1, r4, #0x0
+ bl FUN_02006234
+ str r0, [r5, #0x14]
+ str r4, [r5, #0x10]
+ mov r0, #0x7
+ pop {r4-r6, pc}
+ nop
+_020881A4: .word 0x020FD154
+_020881A8: .word 0x020FA6E8
+
+ thumb_func_start FUN_020881AC
+FUN_020881AC: ; 0x020881AC
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, #0x14
+ bl FUN_02087E1C
+ cmp r0, #0x0
+ bne _020881BE
+ mov r0, #0x7
+ pop {r4, pc}
+_020881BE:
+ ldr r0, [r4, #0x10]
+ ldr r0, [r0, #0x24]
+ bl FUN_02016A18
+ ldr r0, [r4, #0x10]
+ bl FUN_02016A18
+ mov r0, #0x0
+ pop {r4, pc}
+
+ thumb_func_start FUN_020881D0
+FUN_020881D0: ; 0x020881D0
+ push {r3-r5, lr}
+ sub sp, #0x8
+ lsl r2, r1, #0x1
+ ldr r1, _02088214 ; =0x020FD17C
+ ldrb r4, [r1, r2]
+ ldr r1, _02088218 ; =0x020FD17D
+ ldrb r5, [r1, r2]
+ cmp r4, #0x5
+ bne _020881E8
+ add sp, #0x8
+ mov r0, #0x2
+ pop {r3-r5, pc}
+_020881E8:
+ add r1, sp, #0x0
+ bl FUN_02027FBC
+ add r0, r4, #0x1
+ add r2, sp, #0x0
+ ldrb r1, [r2, r0]
+ add r0, r5, #0x1
+ ldrb r0, [r2, r0]
+ cmp r1, r0
+ bne _02088202
+ add sp, #0x8
+ mov r0, #0x2
+ pop {r3-r5, pc}
+_02088202:
+ cmp r1, r0
+ bls _0208820C
+ add sp, #0x8
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0208820C:
+ mov r0, #0x1
+ add sp, #0x8
+ pop {r3-r5, pc}
+ nop
+_02088214: .word 0x020FD17C
+_02088218: .word 0x020FD17D
+
+ thumb_func_start FUN_0208821C
+FUN_0208821C: ; 0x0208821C
+ push {r3-r7, lr}
+ sub sp, #0x30
+ add r6, r1, #0x0
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_02068854
+ lsl r1, r0, #0x1
+ ldr r0, _02088310 ; =0x020FD17C
+ ldrb r0, [r0, r1]
+ str r0, [sp, #0x4]
+ ldr r0, _02088314 ; =0x020FD17D
+ ldrb r0, [r0, r1]
+ add r1, sp, #0x10
+ str r0, [sp, #0x0]
+ add r0, r4, #0x0
+ bl FUN_02027FBC
+ mov r4, #0x0
+ add r7, r4, #0x0
+ add r5, sp, #0x18
+_02088246:
+ add r1, r4, #0x0
+ add r0, r6, #0x0
+ add r1, #0x13
+ add r2, r7, #0x0
+ bl FUN_020671BC
+ lsl r1, r4, #0x2
+ str r0, [r5, r1]
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0x6
+ blo _02088246
+ add r4, sp, #0x8
+ mov r1, #0x0
+ mov r3, #0x1
+ add r0, sp, #0x10
+ add r4, #0x1
+_0208826A:
+ ldrb r5, [r0, r3]
+ add r2, r1, #0x0
+ add r1, r1, #0x1
+ strb r5, [r4, r2]
+ add r2, r3, #0x1
+ lsl r2, r2, #0x18
+ lsl r1, r1, #0x18
+ lsr r3, r2, #0x18
+ lsr r1, r1, #0x18
+ cmp r3, #0x6
+ bls _0208826A
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x5
+ beq _020882B8
+ ldrb r0, [r4, r0]
+ blx FUN_020EB57C
+ add r1, r0, #0x0
+ ldr r0, _02088318 ; =0x3F8CCCCD
+ blx FUN_020EB5C4
+ blx FUN_020EB4F4
+ ldr r1, [sp, #0x4]
+ strb r0, [r4, r1]
+ add r4, sp, #0x8
+ ldr r0, [sp, #0x0]
+ add r4, #0x1
+ ldrb r0, [r4, r0]
+ blx FUN_020EB57C
+ add r1, r0, #0x0
+ ldr r0, _0208831C ; =0x3F666666
+ blx FUN_020EB5C4
+ blx FUN_020EB4F4
+ ldr r1, [sp, #0x0]
+ strb r0, [r4, r1]
+_020882B8:
+ add r7, sp, #0x8
+ mov r5, #0x0
+ add r4, sp, #0x18
+ add r7, #0x1
+_020882C0:
+ lsl r2, r5, #0x2
+ ldrb r0, [r7, r5]
+ ldr r1, [r4, r2]
+ add r0, r1, r0
+ str r0, [r4, r2]
+ ldr r0, [r4, r2]
+ cmp r0, #0xff
+ ble _020882D4
+ mov r0, #0xff
+ str r0, [r4, r2]
+_020882D4:
+ add r1, r5, #0x0
+ add r0, r6, #0x0
+ add r1, #0x13
+ add r2, r4, r2
+ bl FUN_02067830
+ add r0, r5, #0x1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #0x6
+ blo _020882C0
+ add r0, r6, #0x0
+ mov r1, #0x9
+ mov r2, #0x0
+ bl FUN_020671BC
+ add r1, sp, #0x8
+ strb r0, [r1, #0x0]
+ ldrb r0, [r1, #0x0]
+ cmp r0, #0xff
+ bhs _0208830C
+ add r0, r0, #0x1
+ strb r0, [r1, #0x0]
+ add r0, r6, #0x0
+ mov r1, #0x9
+ add r2, sp, #0x8
+ bl FUN_02067830
+_0208830C:
+ add sp, #0x30
+ pop {r3-r7, pc}
+ .balign 4
+_02088310: .word 0x020FD17C
+_02088314: .word 0x020FD17D
+_02088318: .word 0x3F8CCCCD
+_0208831C: .word 0x3F666666
+
+ thumb_func_start FUN_02088320
+FUN_02088320: ; 0x02088320
+ push {r3-r7, lr}
+ add r5, r1, #0x0
+ mov r1, #0x59
+ lsl r1, r1, #0x2
+ add r6, r0, #0x0
+ add r7, r2, #0x0
+ str r3, [sp, #0x0]
+ bl FUN_02016998
+ mov r2, #0x59
+ mov r1, #0x0
+ lsl r2, r2, #0x2
+ add r4, r0, #0x0
+ blx MI_CpuFill8
+ str r6, [r4, #0x0]
+ cmp r5, #0x10
+ bls _0208834A
+ mov r0, #0x10
+ strh r0, [r4, #0xa]
+ b _0208834C
+_0208834A:
+ strh r7, [r4, #0xa]
+_0208834C:
+ strh r5, [r4, #0xc]
+ ldr r0, [sp, #0x0]
+ strh r0, [r4, #0xe]
+ ldr r0, [sp, #0x18]
+ str r0, [r4, #0x4]
+ add r0, r4, #0x0
+ bl FUN_0208837C
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02088360
+FUN_02088360: ; 0x02088360
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_0208843C
+ mov r2, #0x59
+ add r0, r4, #0x0
+ mov r1, #0x0
+ lsl r2, r2, #0x2
+ blx MI_CpuFill8
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r4, pc}
+
+ thumb_func_start FUN_0208837C
+FUN_0208837C: ; 0x0208837C
+ push {r4-r7, lr}
+ sub sp, #0xc
+ ldr r1, _02088438 ; =0x020FD1C0
+ str r0, [sp, #0x0]
+ ldrb r2, [r1, #0x0]
+ add r0, sp, #0x8
+ strb r2, [r0, #0x0]
+ ldrb r2, [r1, #0x1]
+ strb r2, [r0, #0x1]
+ ldrb r2, [r1, #0x2]
+ ldrb r1, [r1, #0x3]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldr r0, [sp, #0x0]
+ ldr r2, [sp, #0x0]
+ ldr r1, [sp, #0x0]
+ ldrh r0, [r0, #0xc]
+ ldr r2, [r2, #0x0]
+ add r1, #0x14
+ bl FUN_02008C9C
+ ldr r1, [sp, #0x0]
+ mov r6, #0x15
+ str r0, [r1, #0x10]
+ add r0, r1, #0x0
+ ldrh r1, [r0, #0xa]
+ add r0, sp, #0x8
+ ldr r5, [sp, #0x0]
+ strb r1, [r0, #0x1]
+ mov r0, #0x0
+ str r0, [sp, #0x4]
+ add r7, sp, #0x8
+ add r4, r0, #0x0
+ lsl r6, r6, #0x4
+_020883C0:
+ ldr r2, [sp, #0x0]
+ ldrb r0, [r7, #0x0]
+ ldr r1, [sp, #0x4]
+ ldr r2, [r2, #0x0]
+ bl FUN_02008DEC
+ mov r1, #0x5
+ lsl r1, r1, #0x6
+ str r0, [r5, r1]
+ ldr r1, [sp, #0x0]
+ ldrb r0, [r7, #0x0]
+ ldr r1, [r1, #0x0]
+ bl FUN_02009424
+ mov r1, #0x15
+ lsl r1, r1, #0x4
+ str r0, [r5, r1]
+ mov r0, #0x15
+ lsl r0, r0, #0x4
+ ldr r3, [r5, r0]
+ mov r1, #0x0
+ ldr r0, [r3, #0x4]
+ cmp r0, #0x0
+ bls _02088402
+ add r2, r1, #0x0
+_020883F2:
+ ldr r0, [r3, #0x0]
+ add r1, r1, #0x1
+ str r4, [r0, r2]
+ ldr r3, [r5, r6]
+ add r2, r2, #0x4
+ ldr r0, [r3, #0x4]
+ cmp r1, r0
+ blo _020883F2
+_02088402:
+ ldr r0, [sp, #0x4]
+ add r7, r7, #0x1
+ add r0, r0, #0x1
+ add r5, r5, #0x4
+ str r0, [sp, #0x4]
+ cmp r0, #0x4
+ blo _020883C0
+ ldr r0, [sp, #0x0]
+ bl FUN_020886CC
+ ldr r0, [sp, #0x0]
+ mov r1, #0x4
+ ldr r0, [r0, #0x0]
+ bl FUN_02016998
+ mov r2, #0x16
+ ldr r1, [sp, #0x0]
+ lsl r2, r2, #0x4
+ str r0, [r1, r2]
+ add r0, r1, #0x0
+ ldr r0, [r0, r2]
+ mov r1, #0x0
+ mov r2, #0x4
+ blx MI_CpuFill8
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+_02088438: .word 0x020FD1C0
+
+ thumb_func_start FUN_0208843C
+FUN_0208843C: ; 0x0208843C
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ mov r0, #0x16
+ lsl r0, r0, #0x4
+ ldr r0, [r5, r0]
+ bl FUN_02016A18
+ ldr r0, [r5, #0x10]
+ bl FUN_0201FD58
+ mov r0, #0x15
+ lsl r0, r0, #0x4
+ ldr r0, [r5, r0]
+ bl FUN_02009C30
+ mov r0, #0x55
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ bl FUN_02009E28
+ mov r7, #0x15
+ lsl r7, r7, #0x4
+ add r6, r7, #0x0
+ mov r4, #0x0
+ sub r6, #0x10
+_0208846E:
+ ldr r0, [r5, r7]
+ bl FUN_02009448
+ ldr r0, [r5, r6]
+ bl FUN_02008E2C
+ add r4, r4, #0x1
+ add r5, r5, #0x4
+ cmp r4, #0x4
+ blo _0208846E
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02088484
+FUN_02088484: ; 0x02088484
+ ldr r3, _0208848C ; =FUN_0201FDEC
+ ldr r0, [r0, #0x10]
+ bx r3
+ nop
+_0208848C: .word FUN_0201FDEC
+
+ thumb_func_start FUN_02088490
+FUN_02088490: ; 0x02088490
+ push {r3-r7, lr}
+ sub sp, #0x70
+ str r1, [sp, #0x2c]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ add r5, r0, #0x0
+ add r7, r2, #0x0
+ str r3, [sp, #0x30]
+ bl FUN_020887CC
+ str r0, [sp, #0x3c]
+ cmp r0, #0x0
+ bge _020884B4
+ bl ErrorHandling
+ add sp, #0x70
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_020884B4:
+ ldr r0, [r5, #0x0]
+ mov r1, #0x8
+ bl FUN_02016998
+ str r0, [sp, #0x38]
+ mov r1, #0x0
+ mov r2, #0x8
+ blx MI_CpuFill8
+ ldr r1, [sp, #0x3c]
+ ldr r0, [sp, #0x38]
+ strh r1, [r0, #0x0]
+ ldr r0, [sp, #0x94]
+ cmp r0, #0x0
+ bne _020884D6
+ mov r6, #0x1
+ b _020884D8
+_020884D6:
+ mov r6, #0x2
+_020884D8:
+ ldr r0, [sp, #0x3c]
+ mov r1, #0x55
+ lsl r1, r1, #0x2
+ lsl r4, r0, #0x2
+ ldr r0, [r5, r1]
+ ldr r3, [sp, #0x2c]
+ ldr r0, [r0, #0x0]
+ sub r1, #0x10
+ ldr r0, [r0, r4]
+ mov r2, #0x58
+ str r0, [sp, #0x34]
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [r5, #0x0]
+ add r3, r3, #0x3
+ str r0, [sp, #0x4]
+ ldr r0, [r5, r1]
+ ldr r1, [sp, #0x34]
+ bl FUN_02009168
+ mov r0, #0x55
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, r4]
+ bl FUN_02009DE0
+ ldr r0, [r5, #0x0]
+ mov r1, #0x10
+ bl FUN_02016998
+ add r4, r0, #0x0
+ ldr r0, [r5, #0x0]
+ mov r1, #0x8
+ bl FUN_02016998
+ str r0, [r4, #0x8]
+ ldr r0, [r5, #0x0]
+ mov r1, #0x24
+ bl FUN_02016998
+ ldr r1, [r4, #0x8]
+ mov r3, #0xe
+ str r0, [r1, #0x0]
+ ldr r0, [r4, #0x8]
+ lsl r3, r3, #0xc
+ ldr r0, [r0, #0x0]
+ mov r1, #0x0
+ str r0, [r4, #0x4]
+ mov r0, #0x0
+ str r3, [sp, #0x0]
+ mvn r0, r0
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ str r1, [sp, #0xc]
+ add r0, sp, #0x78
+ ldrb r0, [r0, #0x14]
+ str r0, [sp, #0x10]
+ mov r0, #0x5
+ lsl r0, r0, #0x6
+ ldr r2, [r5, r0]
+ str r2, [sp, #0x14]
+ add r2, r0, #0x4
+ ldr r2, [r5, r2]
+ str r2, [sp, #0x18]
+ add r2, r0, #0x0
+ add r2, #0x8
+ ldr r2, [r5, r2]
+ add r0, #0xc
+ str r2, [sp, #0x1c]
+ ldr r0, [r5, r0]
+ str r0, [sp, #0x20]
+ str r1, [sp, #0x24]
+ str r1, [sp, #0x28]
+ ldr r2, [sp, #0x3c]
+ ldr r0, [r4, #0x4]
+ add r1, r3, #0x0
+ add r2, r2, r3
+ bl FUN_02008AA4
+ ldr r0, [r5, #0x10]
+ cmp r7, #0x0
+ str r0, [sp, #0x40]
+ ldr r0, [r4, #0x4]
+ str r0, [sp, #0x44]
+ beq _02088596
+ lsl r0, r7, #0xc
+ blx FUN_020EB534
+ add r1, r0, #0x0
+ mov r0, #0x3f
+ lsl r0, r0, #0x18
+ blx FUN_020EA980
+ b _020885A4
+_02088596:
+ lsl r0, r7, #0xc
+ blx FUN_020EB534
+ mov r1, #0x3f
+ lsl r1, r1, #0x18
+ blx FUN_020EB7B0
+_020885A4:
+ blx FUN_020EB4C0
+ str r0, [sp, #0x48]
+ ldr r0, [sp, #0x30]
+ cmp r0, #0x0
+ beq _020885C2
+ lsl r0, r0, #0xc
+ blx FUN_020EB534
+ add r1, r0, #0x0
+ mov r0, #0x3f
+ lsl r0, r0, #0x18
+ blx FUN_020EA980
+ b _020885D0
+_020885C2:
+ lsl r0, r0, #0xc
+ blx FUN_020EB534
+ mov r1, #0x3f
+ lsl r1, r1, #0x18
+ blx FUN_020EB7B0
+_020885D0:
+ blx FUN_020EB4C0
+ str r0, [sp, #0x4c]
+ add r0, sp, #0x78
+ ldrh r0, [r0, #0x10]
+ cmp r0, #0x0
+ beq _020885F0
+ lsl r0, r0, #0xc
+ blx FUN_020EB534
+ add r1, r0, #0x0
+ mov r0, #0x3f
+ lsl r0, r0, #0x18
+ blx FUN_020EA980
+ b _020885FE
+_020885F0:
+ lsl r0, r0, #0xc
+ blx FUN_020EB534
+ mov r1, #0x3f
+ lsl r1, r1, #0x18
+ blx FUN_020EB7B0
+_020885FE:
+ blx FUN_020EB4C0
+ str r0, [sp, #0x50]
+ cmp r6, #0x2
+ bne _02088612
+ mov r0, #0x3
+ ldr r1, [sp, #0x4c]
+ lsl r0, r0, #0x12
+ add r0, r1, r0
+ str r0, [sp, #0x4c]
+_02088612:
+ mov r0, #0x1
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x54]
+ str r0, [sp, #0x58]
+ str r0, [sp, #0x5c]
+ mov r1, #0x0
+ add r0, sp, #0x40
+ strh r1, [r0, #0x20]
+ add r0, sp, #0x78
+ ldrb r0, [r0, #0x18]
+ str r6, [sp, #0x68]
+ str r0, [sp, #0x64]
+ ldr r0, [r5, #0x0]
+ str r0, [sp, #0x6c]
+ add r0, sp, #0x40
+ bl FUN_0201FE94
+ str r0, [r4, #0x0]
+ cmp r0, #0x0
+ beq _02088652
+ mov r1, #0x0
+ bl FUN_02020130
+ ldr r0, [sp, #0x34]
+ add r1, r6, #0x0
+ bl FUN_02009E88
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_02020248
+ b _02088656
+_02088652:
+ bl ErrorHandling
+_02088656:
+ ldr r0, [sp, #0x38]
+ str r4, [r0, #0x4]
+ add sp, #0x70
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02088660
+FUN_02088660: ; 0x02088660
+ push {r4, lr}
+ sub sp, #0x8
+ add r3, r2, #0x0
+ mov r2, #0x55
+ lsl r2, r2, #0x2
+ ldr r4, [r0, r2]
+ ldrh r1, [r1, #0x0]
+ ldr r4, [r4, #0x0]
+ sub r2, #0x10
+ lsl r1, r1, #0x2
+ ldr r4, [r4, r1]
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ ldr r1, [r0, #0x0]
+ add r3, r3, #0x3
+ str r1, [sp, #0x4]
+ ldr r0, [r0, r2]
+ add r1, r4, #0x0
+ mov r2, #0x58
+ bl FUN_02009168
+ add r0, r4, #0x0
+ bl FUN_02009DE0
+ add sp, #0x8
+ pop {r4, pc}
+
+ thumb_func_start FUN_02088694
+FUN_02088694: ; 0x02088694
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x4]
+ bl FUN_0200C3DC
+ mov r1, #0x16
+ ldrh r2, [r4, #0x0]
+ lsl r1, r1, #0x4
+ ldr r3, [r5, r1]
+ mov r0, #0x0
+ lsl r2, r2, #0x2
+ strb r0, [r3, r2]
+ ldrh r2, [r4, #0x0]
+ ldr r3, [r5, r1]
+ lsl r2, r2, #0x2
+ add r2, r3, r2
+ strh r0, [r2, #0x2]
+ ldr r2, [r5, r1]
+ ldrh r1, [r4, #0x0]
+ lsl r1, r1, #0x2
+ add r1, r2, r1
+ strb r0, [r1, #0x1]
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020886CC
+FUN_020886CC: ; 0x020886CC
+ push {r3-r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ mov r0, #0x15
+ lsl r0, r0, #0x4
+ ldr r4, [r5, r0]
+ mov r1, #0xe
+ lsl r1, r1, #0xc
+ str r1, [sp, #0x0]
+ ldrh r1, [r5, #0xe]
+ mov r2, #0x0
+ sub r0, #0x10
+ str r1, [sp, #0x4]
+ ldr r1, [r5, #0x0]
+ add r3, r2, #0x0
+ str r1, [sp, #0x8]
+ ldr r0, [r5, r0]
+ mov r1, #0x58
+ bl FUN_02008F34
+ ldr r1, [r4, #0x0]
+ str r0, [r1, #0x0]
+ ldr r0, [r4, #0x0]
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _02088704
+ bl ErrorHandling
+_02088704:
+ ldr r0, [r5, #0x4]
+ cmp r0, #0x0
+ beq _02088728
+ cmp r0, #0x1
+ beq _02088714
+ cmp r0, #0x2
+ beq _0208871E
+ b _02088728
+_02088714:
+ ldr r0, [r4, #0x0]
+ ldr r0, [r0, #0x0]
+ bl FUN_02009B04
+ b _02088730
+_0208871E:
+ ldr r0, [r4, #0x0]
+ ldr r0, [r0, #0x0]
+ bl FUN_02009B78
+ b _02088730
+_02088728:
+ ldr r0, [r4, #0x0]
+ ldr r0, [r0, #0x0]
+ bl FUN_02009A50
+_02088730:
+ mov r4, #0x0
+ add r6, r5, #0x0
+_02088734:
+ mov r0, #0x56
+ lsl r0, r0, #0x2
+ ldr r7, [r6, r0]
+ mov r0, #0xe
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x0]
+ add r0, r4, #0x2
+ str r0, [sp, #0x4]
+ ldr r0, [r5, #0x0]
+ mov r1, #0x58
+ str r0, [sp, #0x8]
+ mov r0, #0x52
+ lsl r0, r0, #0x2
+ ldr r0, [r6, r0]
+ add r2, r4, #0x1
+ mov r3, #0x0
+ bl FUN_020090AC
+ ldr r1, [r7, #0x0]
+ str r0, [r1, #0x0]
+ ldr r0, [r7, #0x0]
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _02088768
+ bl ErrorHandling
+_02088768:
+ add r4, r4, #0x1
+ add r6, r6, #0x4
+ cmp r4, #0x2
+ blt _02088734
+ mov r0, #0x55
+ lsl r0, r0, #0x2
+ ldr r6, [r5, r0]
+ ldrh r0, [r5, #0xa]
+ mov r7, #0x0
+ cmp r0, #0x0
+ ble _020887C6
+ add r4, r7, #0x0
+_02088780:
+ mov r0, #0xe
+ lsl r0, r0, #0xc
+ add r0, r7, r0
+ str r0, [sp, #0x0]
+ ldrh r0, [r5, #0xe]
+ mov r1, #0x58
+ mov r2, #0x4
+ str r0, [sp, #0x4]
+ mov r0, #0x1
+ str r0, [sp, #0x8]
+ ldr r0, [r5, #0x0]
+ mov r3, #0x0
+ str r0, [sp, #0xc]
+ mov r0, #0x51
+ lsl r0, r0, #0x2
+ ldr r0, [r5, r0]
+ bl FUN_02008FEC
+ ldr r1, [r6, #0x0]
+ str r0, [r1, r4]
+ ldr r0, [r6, #0x0]
+ ldr r0, [r0, r4]
+ cmp r0, #0x0
+ bne _020887B4
+ bl ErrorHandling
+_020887B4:
+ ldr r0, [r6, #0x0]
+ ldr r0, [r0, r4]
+ bl FUN_02009CF0
+ ldrh r0, [r5, #0xa]
+ add r7, r7, #0x1
+ add r4, r4, #0x4
+ cmp r7, r0
+ blt _02088780
+_020887C6:
+ add sp, #0x10
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020887CC
+FUN_020887CC: ; 0x020887CC
+ push {r3-r6}
+ ldrh r5, [r0, #0xa]
+ mov r3, #0x0
+ cmp r5, #0x0
+ bls _0208880A
+ mov r2, #0x16
+ lsl r2, r2, #0x4
+ ldr r4, [r0, r2]
+_020887DC:
+ lsl r2, r3, #0x2
+ ldrb r6, [r4, r2]
+ cmp r6, #0x0
+ bne _02088800
+ add r4, r4, r2
+ strh r3, [r4, #0x2]
+ mov r4, #0x16
+ lsl r4, r4, #0x4
+ ldr r5, [r0, r4]
+ add r5, r5, r2
+ strb r1, [r5, #0x1]
+ ldr r0, [r0, r4]
+ mov r1, #0x1
+ strb r1, [r0, r2]
+ lsl r0, r3, #0x10
+ asr r0, r0, #0x10
+ pop {r3-r6}
+ bx lr
+_02088800:
+ add r2, r3, #0x1
+ lsl r2, r2, #0x10
+ lsr r3, r2, #0x10
+ cmp r3, r5
+ blo _020887DC
+_0208880A:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r6}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02088814
+FUN_02088814: ; 0x02088814
+ mov r0, #0x3
+ bx lr
+
+ thumb_func_start FUN_02088818
+FUN_02088818: ; 0x02088818
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0208881C
+FUN_0208881C: ; 0x0208881C
+ ldr r3, _02088828 ; =FUN_0202D8D0
+ add r2, r0, #0x0
+ ldr r0, _0208882C ; =0x020FD1C4
+ mov r1, #0x6c
+ bx r3
+ nop
+_02088828: .word FUN_0202D8D0
+_0208882C: .word 0x020FD1C4
+
+ thumb_func_start FUN_02088830
+FUN_02088830: ; 0x02088830
+ ldr r0, _02088834 ; =0x0000066C
+ bx lr
+ .balign 4
+_02088834: .word 0x0000066C
+
+ thumb_func_start FUN_02088838
+FUN_02088838: ; 0x02088838
+ mov r0, #0x2f
+ lsl r0, r0, #0x6
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02088840
+FUN_02088840: ; 0x02088840
+ mov r0, #0x3f
+ lsl r0, r0, #0x4
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02088848
+FUN_02088848: ; 0x02088848
+ mov r0, #0xa
+ bx lr
+
+ thumb_func_start FUN_0208884C
+FUN_0208884C: ; 0x0208884C
+ mov r0, #0x32
+ bx lr
+
+ thumb_func_start FUN_02088850
+FUN_02088850: ; 0x02088850
+ mov r0, #0x4
+ bx lr
+
+ thumb_func_start FUN_02088854
+FUN_02088854: ; 0x02088854
+ mov r0, #0x4
+ bx lr
+
+ thumb_func_start FUN_02088858
+FUN_02088858: ; 0x02088858
+ ldr r3, _02088860 ; =FUN_02005FDC
+ ldr r0, _02088864 ; =0x00000004
+ mov r1, #0x2
+ bx r3
+ .balign 4
+_02088860: .word FUN_02005FDC
+_02088864: .word 0x00000004
+
+ thumb_func_start FUN_02088868
+FUN_02088868: ; 0x02088868
+ ldr r3, _02088870 ; =FUN_02005F60
+ ldr r0, _02088874 ; =0x00000004
+ bx r3
+ nop
+_02088870: .word FUN_02005F60
+_02088874: .word 0x00000004
+
+ thumb_func_start FUN_02088878
+FUN_02088878: ; 0x02088878
+ ldr r3, _02088880 ; =FUN_02005FDC
+ ldr r0, _02088884 ; =0x0000000D
+ mov r1, #0x2
+ bx r3
+ .balign 4
+_02088880: .word FUN_02005FDC
+_02088884: .word 0x0000000D
+
+ thumb_func_start FUN_02088888
+FUN_02088888: ; 0x02088888
+ ldr r3, _02088890 ; =FUN_02005F60
+ ldr r0, _02088894 ; =0x0000000D
+ bx r3
+ nop
+_02088890: .word FUN_02005F60
+_02088894: .word 0x0000000D
+
+ thumb_func_start FUN_02088898
+FUN_02088898: ; 0x02088898
+ push {r4, lr}
+ add r4, r1, #0x0
+ bl FUN_02088858
+ bl FUN_02088878
+ add r0, r4, #0x0
+ bl FUN_02211E60
+ bl FUN_02088888
+ bl FUN_02088868
+ mov r0, #0x0
+ blx OS_ResetSystem
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020888BC
+FUN_020888BC: ; 0x020888BC
+ ldr r3, _020888C4 ; =FUN_02005FDC
+ ldr r0, _020888C8 ; =0x0000004F
+ mov r1, #0x2
+ bx r3
+ .balign 4
+_020888C4: .word FUN_02005FDC
+_020888C8: .word 0x0000004F
+
+ thumb_func_start FUN_020888CC
+FUN_020888CC: ; 0x020888CC
+ ldr r3, _020888D4 ; =FUN_02005F60
+ ldr r0, _020888D8 ; =0x0000004F
+ bx r3
+ nop
+_020888D4: .word FUN_02005F60
+_020888D8: .word 0x0000004F
+
+ thumb_func_start FUN_020888DC
+FUN_020888DC: ; 0x020888DC
+ push {r4, lr}
+ mov r2, #0x41
+ add r4, r0, #0x0
+ mov r0, #0x3
+ mov r1, #0x31
+ lsl r2, r2, #0xc
+ bl FUN_0201681C
+ add r0, r4, #0x0
+ bl FUN_0200628C
+ ldr r0, [r0, #0x8]
+ mov r1, #0x31
+ bl FUN_02088898
+ mov r0, #0x31
+ bl FUN_020168D0
+ mov r0, #0x0
+ blx OS_ResetSystem
+ mov r0, #0x1
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0208890C
+FUN_0208890C: ; 0x0208890C
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ add r5, r1, #0x0
+ add r0, r2, #0x0
+ mov r1, #0x20
+ add r7, r3, #0x0
+ bl FUN_02016998
+ add r4, r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x20
+ blx MI_CpuFill8
+ str r5, [r4, #0xc]
+ add r0, r5, #0x0
+ bl FUN_02028048
+ str r0, [r4, #0x8]
+ add r0, r5, #0x0
+ bl FUN_020238F4
+ str r0, [r4, #0x10]
+ add r0, r5, #0x0
+ bl FUN_0206F158
+ str r0, [r4, #0x14]
+ add r0, r5, #0x0
+ bl LoadPlayerDataAddress
+ str r0, [r4, #0x18]
+ str r7, [r4, #0x1c]
+ str r6, [r4, #0x4]
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02088950
+FUN_02088950: ; 0x02088950
+ ldr r3, _02088958 ; =FUN_020373D4
+ add r2, r1, #0x0
+ ldr r1, _0208895C ; =0x020FD6E4
+ bx r3
+ .balign 4
+_02088958: .word FUN_020373D4
+_0208895C: .word 0x020FD6E4
+
+ thumb_func_start FUN_02088960
+FUN_02088960: ; 0x02088960
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_020377AC
+ add r3, r5, #0x0
+ add r3, #0x98
+ add r1, r0, #0x0
+ ldr r3, [r3, #0x0]
+ add r0, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_0208890C
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02088950
+ add r0, r4, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0208898C
+FUN_0208898C: ; 0x0208898C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ beq _020889AC
+ bl FUN_02006290
+ cmp r0, #0x0
+ beq _020889AC
+ ldr r0, [r4, #0x0]
+ bl FUN_02006260
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+ mov r0, #0x1
+ pop {r4, pc}
+_020889AC:
+ mov r0, #0x0
+ pop {r4, pc}
+
+ thumb_func_start FUN_020889B0
+FUN_020889B0: ; 0x020889B0
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl FUN_0200628C
+ mov r2, #0x1
+ add r5, r0, #0x0
+ mov r0, #0x3
+ mov r1, #0x37
+ lsl r2, r2, #0xe
+ bl FUN_0201681C
+ add r0, r4, #0x0
+ mov r1, #0x24
+ mov r2, #0x37
+ bl FUN_02006268
+ mov r1, #0x0
+ mov r2, #0x24
+ add r4, r0, #0x0
+ blx MI_CpuFill8
+ mov r0, #0x37
+ str r0, [r4, #0x0]
+ str r5, [r4, #0x10]
+ ldr r0, [r4, #0x0]
+ bl FUN_0206F164
+ str r0, [r4, #0xc]
+ ldr r0, [r5, #0x4]
+ cmp r0, #0x1
+ bne _020889FA
+ ldrh r1, [r4, #0x6]
+ mov r0, #0xff
+ bic r1, r0
+ mov r0, #0x1
+ orr r0, r1
+ strh r0, [r4, #0x6]
+_020889FA:
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02088A00
+FUN_02088A00: ; 0x02088A00
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_02006278
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0200628C
+ ldr r5, [r4, #0x0]
+ cmp r5, #0x4
+ bhi _02088A6A
+ add r0, r5, r5
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02088A24: ; jump table (using 16-bit offset)
+ .short _02088A2E - _02088A24 - 2; case 0
+ .short _02088A3C - _02088A24 - 2; case 1
+ .short _02088A4A - _02088A24 - 2; case 2
+ .short _02088A58 - _02088A24 - 2; case 3
+ .short _02088A66 - _02088A24 - 2; case 4
+_02088A2E:
+ add r1, r6, #0x0
+ add r0, r6, #0x0
+ add r1, #0x14
+ bl FUN_02088AAC
+ str r0, [r4, #0x0]
+ b _02088A6A
+_02088A3C:
+ add r1, r6, #0x0
+ add r0, r6, #0x0
+ add r1, #0x14
+ bl FUN_02088AFC
+ str r0, [r4, #0x0]
+ b _02088A6A
+_02088A4A:
+ add r1, r6, #0x0
+ add r0, r6, #0x0
+ add r1, #0x14
+ bl FUN_02088B28
+ str r0, [r4, #0x0]
+ b _02088A6A
+_02088A58:
+ add r1, r6, #0x0
+ add r0, r6, #0x0
+ add r1, #0x14
+ bl FUN_02088B48
+ str r0, [r4, #0x0]
+ b _02088A6A
+_02088A66:
+ mov r0, #0x1
+ pop {r4-r6, pc}
+_02088A6A:
+ ldr r0, [r4, #0x0]
+ cmp r5, r0
+ beq _02088A74
+ mov r0, #0x0
+ str r0, [r6, #0x14]
+_02088A74:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02088A78
+FUN_02088A78: ; 0x02088A78
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl FUN_02006278
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0200628C
+ ldr r0, [r4, #0xc]
+ ldr r6, [r4, #0x0]
+ bl FUN_02016A18
+ add r0, r4, #0x0
+ mov r1, #0x0
+ mov r2, #0x24
+ blx MI_CpuFill8
+ add r0, r5, #0x0
+ bl FUN_0200627C
+ add r0, r6, #0x0
+ bl FUN_020168D0
+ mov r0, #0x1
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02088AAC
+FUN_02088AAC: ; 0x02088AAC
+ push {r4, lr}
+ add r4, r1, #0x0
+ ldr r1, [r4, #0x0]
+ cmp r1, #0x5
+ bhi _02088AF6
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02088AC2: ; jump table (using 16-bit offset)
+ .short _02088ACE - _02088AC2 - 2; case 0
+ .short _02088AD6 - _02088AC2 - 2; case 1
+ .short _02088ADE - _02088AC2 - 2; case 2
+ .short _02088AE6 - _02088AC2 - 2; case 3
+ .short _02088AEE - _02088AC2 - 2; case 4
+ .short _02088AF2 - _02088AC2 - 2; case 5
+_02088ACE:
+ bl FUN_02088B4C
+ str r0, [r4, #0x0]
+ b _02088AF6
+_02088AD6:
+ bl FUN_02088BA8
+ str r0, [r4, #0x0]
+ b _02088AF6
+_02088ADE:
+ bl FUN_02088C3C
+ str r0, [r4, #0x0]
+ b _02088AF6
+_02088AE6:
+ bl FUN_02088CDC
+ str r0, [r4, #0x0]
+ b _02088AF6
+_02088AEE:
+ mov r0, #0x1
+ pop {r4, pc}
+_02088AF2:
+ mov r0, #0x4
+ pop {r4, pc}
+_02088AF6:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02088AFC
+FUN_02088AFC: ; 0x02088AFC
+ push {r3-r5, lr}
+ sub sp, #0x10
+ ldr r5, _02088B24 ; =0x020FD708
+ add r3, sp, #0x0
+ add r4, r0, #0x0
+ add r2, r3, #0x0
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ add r0, r2, #0x0
+ ldr r2, [r4, #0x0]
+ add r1, r4, #0x0
+ bl FUN_02006234
+ str r0, [r4, #0x1c]
+ mov r0, #0x2
+ add sp, #0x10
+ pop {r3-r5, pc}
+ nop
+_02088B24: .word 0x020FD708
+
+ thumb_func_start FUN_02088B28
+FUN_02088B28: ; 0x02088B28
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, #0x1c
+ bl FUN_0208898C
+ cmp r0, #0x0
+ bne _02088B3A
+ mov r0, #0x2
+ pop {r4, pc}
+_02088B3A:
+ ldr r0, [r4, #0x20]
+ cmp r0, #0x1
+ bne _02088B44
+ mov r0, #0x0
+ pop {r4, pc}
+_02088B44:
+ mov r0, #0x3
+ pop {r4, pc}
+
+ thumb_func_start FUN_02088B48
+FUN_02088B48: ; 0x02088B48
+ mov r0, #0x4
+ bx lr
+
+ thumb_func_start FUN_02088B4C
+FUN_02088B4C: ; 0x02088B4C
+ push {r3-r5, lr}
+ sub sp, #0x10
+ ldr r3, _02088BA0 ; =0x020FD6F8
+ add r2, sp, #0x0
+ add r5, r0, #0x0
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldr r0, [r5, #0x10]
+ ldr r1, _02088BA4 ; =0x020FD6F4
+ ldr r0, [r0, #0x14]
+ ldr r2, [r5, #0x0]
+ bl FUN_0206EFEC
+ add r4, r0, #0x0
+ ldrh r0, [r5, #0x6]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x1
+ bne _02088B7A
+ mov r2, #0x5
+ b _02088B7C
+_02088B7A:
+ mov r2, #0x4
+_02088B7C:
+ ldr r1, [r5, #0x10]
+ lsl r2, r2, #0x18
+ ldr r1, [r1, #0xc]
+ ldr r3, [r5, #0xc]
+ add r0, r4, #0x0
+ lsr r2, r2, #0x18
+ bl FUN_0206E314
+ ldr r2, [r5, #0x0]
+ add r0, sp, #0x0
+ add r1, r4, #0x0
+ bl FUN_02006234
+ str r0, [r5, #0x1c]
+ str r4, [r5, #0x18]
+ mov r0, #0x1
+ add sp, #0x10
+ pop {r3-r5, pc}
+ .balign 4
+_02088BA0: .word 0x020FD6F8
+_02088BA4: .word 0x020FD6F4
+
+ thumb_func_start FUN_02088BA8
+FUN_02088BA8: ; 0x02088BA8
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ add r0, #0x1c
+ bl FUN_0208898C
+ cmp r0, #0x0
+ bne _02088BBA
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_02088BBA:
+ ldr r0, [r4, #0x0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0206E2F0
+ add r5, r0, #0x0
+ bl FUN_0206E308
+ add r2, r0, #0x0
+ ldr r1, [r4, #0x18]
+ add r0, r5, #0x0
+ blx FUN_020DF438
+ ldr r0, [r4, #0x18]
+ bl FUN_02016A18
+ mov r0, #0x0
+ str r0, [r4, #0x18]
+ add r0, r5, #0x0
+ bl FUN_0206E37C
+ str r0, [r4, #0x8]
+ add r0, r5, #0x0
+ bl FUN_02016A18
+ add r0, r5, #0x0
+ bl FUN_0206E384
+ cmp r0, #0x5
+ bhi _02088C16
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02088C02: ; jump table (using 16-bit offset)
+ .short _02088C1E - _02088C02 - 2; case 0
+ .short _02088C0E - _02088C02 - 2; case 1
+ .short _02088C1E - _02088C02 - 2; case 2
+ .short _02088C1E - _02088C02 - 2; case 3
+ .short _02088C1E - _02088C02 - 2; case 4
+ .short _02088C12 - _02088C02 - 2; case 5
+_02088C0E:
+ mov r0, #0x2
+ pop {r3-r5, pc}
+_02088C12:
+ mov r0, #0x5
+ pop {r3-r5, pc}
+_02088C16:
+ bl ErrorHandling
+ mov r0, #0x95
+ str r0, [r4, #0x8]
+_02088C1E:
+ ldr r0, [r4, #0x10]
+ ldr r1, [r4, #0x8]
+ ldr r0, [r0, #0x14]
+ lsl r1, r1, #0x10
+ ldr r3, [r4, #0x0]
+ lsr r1, r1, #0x10
+ mov r2, #0x1
+ bl FUN_0206EDD4
+ cmp r0, #0x0
+ bne _02088C38
+ bl ErrorHandling
+_02088C38:
+ mov r0, #0x4
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02088C3C
+FUN_02088C3C: ; 0x02088C3C
+ push {r3-r7, lr}
+ sub sp, #0x18
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x10]
+ ldr r3, _02088CD8 ; =0x020FD718
+ ldr r0, [r0, #0x14]
+ add r2, sp, #0x8
+ str r0, [sp, #0x0]
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldr r0, [r5, #0x0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_020851B8
+ str r0, [r5, #0x18]
+ ldr r1, [r5, #0x8]
+ mov r2, #0x1
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ bl FUN_020851DC
+ mov r6, #0x0
+ add r4, r6, #0x0
+_02088C70:
+ add r0, r4, #0x0
+ bl FUN_0206EB1C
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+ ldr r0, [sp, #0x0]
+ ldr r3, [r5, #0x0]
+ add r1, r7, #0x0
+ mov r2, #0x1
+ bl FUN_0206EE50
+ cmp r0, #0x1
+ bne _02088C9A
+ ldr r0, [r5, #0x18]
+ add r1, r7, #0x0
+ mov r2, #0x0
+ bl FUN_020851DC
+ add r0, r6, #0x1
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+_02088C9A:
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0x40
+ blo _02088C70
+ add r3, sp, #0x4
+ ldr r0, [r5, #0xc]
+ mov r1, #0x4
+ add r2, sp, #0x4
+ add r3, #0x1
+ bl FUN_0206F17C
+ add r2, sp, #0x4
+ ldrb r1, [r2, #0x1]
+ add r3, r6, #0x2
+ lsl r3, r3, #0x18
+ ldrb r2, [r2, #0x0]
+ ldr r0, [r5, #0x18]
+ lsr r3, r3, #0x18
+ bl FUN_020851F8
+ ldr r1, [r5, #0x18]
+ ldr r2, [r5, #0x0]
+ add r0, sp, #0x8
+ bl FUN_02006234
+ str r0, [r5, #0x1c]
+ mov r0, #0x3
+ add sp, #0x18
+ pop {r3-r7, pc}
+ nop
+_02088CD8: .word 0x020FD718
+
+ thumb_func_start FUN_02088CDC
+FUN_02088CDC: ; 0x02088CDC
+ push {r3-r4, lr}
+ sub sp, #0x4
+ add r4, r0, #0x0
+ add r0, #0x1c
+ bl FUN_0208898C
+ cmp r0, #0x0
+ bne _02088CF2
+ add sp, #0x4
+ mov r0, #0x3
+ pop {r3-r4, pc}
+_02088CF2:
+ add r1, sp, #0x0
+ ldr r0, [r4, #0x18]
+ add r1, #0x1
+ add r2, sp, #0x0
+ bl FUN_0208524C
+ add r3, sp, #0x0
+ ldrb r2, [r3, #0x0]
+ ldrb r3, [r3, #0x1]
+ ldr r0, [r4, #0xc]
+ mov r1, #0x4
+ bl FUN_0206F190
+ ldr r0, [r4, #0x18]
+ bl FUN_02016A18
+ mov r0, #0x0
+ str r0, [r4, #0x18]
+ add sp, #0x4
+ pop {r3-r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02088D1C
+FUN_02088D1C: ; 0x02088D1C
+ mov r0, #0x13
+ bx lr
+
+ thumb_func_start FUN_02088D20
+FUN_02088D20: ; 0x02088D20
+ ldr r3, _02088D3C ; =0x020FD8C8
+ mov r2, #0x0
+_02088D24:
+ ldrb r1, [r3, #0x0]
+ cmp r0, r1
+ bne _02088D2E
+ add r0, r2, #0x0
+ bx lr
+_02088D2E:
+ add r2, r2, #0x1
+ add r3, #0xc
+ cmp r2, #0x13
+ blo _02088D24
+ mov r0, #0x0
+ bx lr
+ nop
+_02088D3C: .word 0x020FD8C8
+
+ thumb_func_start FUN_02088D40
+FUN_02088D40: ; 0x02088D40
+ push {r3, lr}
+ bl FUN_02088D20
+ bl FUN_02088D4C
+ pop {r3, pc}
+
+ thumb_func_start FUN_02088D4C
+FUN_02088D4C: ; 0x02088D4C
+ push {r4, lr}
+ add r4, r0, #0x0
+ cmp r4, #0x13
+ blo _02088D58
+ bl ErrorHandling
+_02088D58:
+ mov r0, #0xc
+ add r1, r4, #0x0
+ mul r1, r0
+ ldr r0, _02088D64 ; =0x020FD8CA
+ ldrh r0, [r0, r1]
+ pop {r4, pc}
+ .balign 4
+_02088D64: .word 0x020FD8CA
+
+ thumb_func_start FUN_02088D68
+FUN_02088D68: ; 0x02088D68
+ push {r4, lr}
+ add r4, r0, #0x0
+ cmp r4, #0x13
+ blo _02088D74
+ bl ErrorHandling
+_02088D74:
+ mov r0, #0xc
+ add r1, r4, #0x0
+ mul r1, r0
+ ldr r0, _02088D80 ; =0x020FD8C8
+ ldrb r0, [r0, r1]
+ pop {r4, pc}
+ .balign 4
+_02088D80: .word 0x020FD8C8
+
+ thumb_func_start FUN_02088D84
+FUN_02088D84: ; 0x02088D84
+ push {r4, lr}
+ add r4, r0, #0x0
+ cmp r4, #0x13
+ blo _02088D90
+ bl ErrorHandling
+_02088D90:
+ mov r0, #0xc
+ add r1, r4, #0x0
+ mul r1, r0
+ ldr r0, _02088D9C ; =0x020FD8C9
+ ldrb r0, [r0, r1]
+ pop {r4, pc}
+ .balign 4
+_02088D9C: .word 0x020FD8C9
+
+ thumb_func_start FUN_02088DA0
+FUN_02088DA0: ; 0x02088DA0
+ push {r4, lr}
+ add r4, r0, #0x0
+ cmp r4, #0x13
+ blo _02088DAC
+ bl ErrorHandling
+_02088DAC:
+ mov r0, #0xc
+ add r1, r4, #0x0
+ mul r1, r0
+ ldr r0, _02088DB8 ; =0x020FD8CC
+ ldr r0, [r0, r1]
+ pop {r4, pc}
+ .balign 4
+_02088DB8: .word 0x020FD8CC
+
+ thumb_func_start FUN_02088DBC
+FUN_02088DBC: ; 0x02088DBC
+ push {r4, lr}
+ add r4, r0, #0x0
+ cmp r4, #0x13
+ blo _02088DC8
+ bl ErrorHandling
+_02088DC8:
+ mov r0, #0xc
+ add r1, r4, #0x0
+ mul r1, r0
+ ldr r0, _02088DD4 ; =0x020FD8D0
+ ldr r0, [r0, r1]
+ pop {r4, pc}
+ .balign 4
+_02088DD4: .word 0x020FD8D0
+
+ thumb_func_start FUN_02088DD8
+FUN_02088DD8: ; 0x02088DD8
+ push {r3, lr}
+ mov r1, #0x18
+ bl FUN_02016998
+ add r3, r0, #0x0
+ mov r2, #0x18
+ mov r1, #0x0
+_02088DE6:
+ strb r1, [r3, #0x0]
+ add r3, r3, #0x1
+ sub r2, r2, #0x1
+ bne _02088DE6
+ pop {r3, pc}
+
+ thumb_func_start FUN_02088DF0
+FUN_02088DF0: ; 0x02088DF0
+ ldr r3, _02088DF4 ; =FUN_02016A18
+ bx r3
+ .balign 4
+_02088DF4: .word FUN_02016A18
+
+ thumb_func_start FUN_02088DF8
+FUN_02088DF8: ; 0x02088DF8
+ push {r3-r7, lr}
+ sub sp, #0x18
+ str r1, [sp, #0x0]
+ mov r1, #0x5
+ mov r2, #0x0
+ add r5, r0, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0xc]
+ add r0, r5, #0x0
+ mov r1, #0x70
+ mov r2, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x8]
+ add r0, r5, #0x0
+ mov r1, #0xa0
+ mov r2, #0x0
+ bl FUN_020671BC
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r4, #0x0
+ str r0, [sp, #0x4]
+ add r7, r4, #0x0
+ add r6, sp, #0x10
+_02088E34:
+ add r1, r4, #0x0
+ add r0, r5, #0x0
+ add r1, #0x36
+ add r2, r7, #0x0
+ bl FUN_020671BC
+ lsl r1, r4, #0x1
+ strh r0, [r6, r1]
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0x4
+ blo _02088E34
+ ldr r0, [sp, #0x0]
+ mov r1, #0x2c
+ bl FUN_02016998
+ add r7, r0, #0x0
+ ldr r0, [sp, #0x0]
+ mov r1, #0x2c
+ bl FUN_02016998
+ add r4, r0, #0x0
+ ldr r0, [sp, #0xc]
+ ldr r1, [sp, #0x8]
+ add r2, r7, #0x0
+ bl FUN_02069F9C
+ mov r2, #0x0
+ mov r12, r2
+_02088E70:
+ mov r0, r12
+ lsl r0, r0, #0x1
+ ldrh r5, [r7, r0]
+ ldr r6, _02088EF4 ; =0x0000FFFF
+ cmp r5, r6
+ bne _02088E82
+ lsl r0, r2, #0x1
+ strh r6, [r4, r0]
+ b _02088EE8
+_02088E82:
+ mov r1, #0xfe
+ lsl r1, r1, #0x8
+ and r1, r5
+ asr r3, r1, #0x9
+ ldr r1, [sp, #0x4]
+ cmp r3, r1
+ bgt _02088EDA
+ lsr r1, r6, #0x7
+ and r1, r5
+ strh r1, [r7, r0]
+ ldrh r3, [r7, r0]
+ mov r1, #0x0
+ add r6, sp, #0x10
+_02088E9C:
+ lsl r5, r1, #0x1
+ ldrh r5, [r6, r5]
+ cmp r3, r5
+ beq _02088EAE
+ add r1, r1, #0x1
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ cmp r1, #0x4
+ blo _02088E9C
+_02088EAE:
+ cmp r1, #0x4
+ bne _02088EDA
+ mov r1, #0x0
+ cmp r2, #0x0
+ bls _02088ECA
+_02088EB8:
+ lsl r5, r1, #0x1
+ ldrh r5, [r4, r5]
+ cmp r5, r3
+ beq _02088ECA
+ add r1, r1, #0x1
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ cmp r1, r2
+ blo _02088EB8
+_02088ECA:
+ cmp r1, r2
+ bne _02088EDA
+ ldrh r1, [r7, r0]
+ lsl r0, r2, #0x1
+ strh r1, [r4, r0]
+ add r0, r2, #0x1
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+_02088EDA:
+ mov r0, r12
+ add r0, r0, #0x1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r12, r0
+ cmp r0, #0x16
+ blo _02088E70
+_02088EE8:
+ add r0, r7, #0x0
+ bl FUN_02016A18
+ add r0, r4, #0x0
+ add sp, #0x18
+ pop {r3-r7, pc}
+ .balign 4
+_02088EF4: .word 0x0000FFFF
+
+ thumb_func_start FUN_02088EF8
+FUN_02088EF8: ; 0x02088EF8
+ ldrh r1, [r0, #0x0]
+ ldr r0, _02088F08 ; =0x0000FFFF
+ cmp r1, r0
+ beq _02088F04
+ mov r0, #0x1
+ bx lr
+_02088F04:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+_02088F08: .word 0x0000FFFF
+
+ thumb_func_start FUN_02088F0C
+FUN_02088F0C: ; 0x02088F0C
+ push {r4-r6, lr}
+ add r5, r1, #0x0
+ ldr r1, _02088F44 ; =0x0000195C
+ add r6, r0, #0x0
+ bl FUN_02016998
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ str r5, [r4, #0x0]
+ bl FUN_020139D8
+ str r0, [r4, #0x4]
+ mov r3, #0x0
+ ldr r0, _02088F48 ; =0x0000189E
+ add r2, r3, #0x0
+_02088F2A:
+ add r1, r4, r3
+ add r3, r3, #0x1
+ strb r2, [r1, r0]
+ cmp r3, #0xbb
+ blt _02088F2A
+ add r0, r4, #0x0
+ bl FUN_02088F60
+ add r0, r4, #0x0
+ bl FUN_020891D0
+ add r0, r4, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+_02088F44: .word 0x0000195C
+_02088F48: .word 0x0000189E
+
+ thumb_func_start FUN_02088F4C
+FUN_02088F4C: ; 0x02088F4C
+ push {r4, lr}
+ add r4, r0, #0x0
+ beq _02088F5E
+ ldr r0, [r4, #0x4]
+ bl FUN_02013A10
+ add r0, r4, #0x0
+ bl FUN_02016A18
+_02088F5E:
+ pop {r4, pc}
+
+ thumb_func_start FUN_02088F60
+FUN_02088F60: ; 0x02088F60
+ push {r4-r7, lr}
+ sub sp, #0xc
+ mov r4, #0x0
+ str r0, [sp, #0x0]
+ add r7, r0, #0x0
+ str r0, [sp, #0x8]
+ add r0, #0x68
+ ldr r5, _02088F9C ; =0x020FE17C
+ str r4, [sp, #0x4]
+ str r0, [sp, #0x8]
+_02088F74:
+ ldr r3, [sp, #0x8]
+ str r4, [r7, #0x38]
+ lsl r6, r4, #0x1
+ add r3, r3, r6
+ ldr r0, [sp, #0x0]
+ ldr r1, [r5, #0x4]
+ ldr r2, [r5, #0x8]
+ ldr r6, [r5, #0x0]
+ blx r6
+ str r0, [r7, #0x8]
+ add r4, r4, r0
+ ldr r0, [sp, #0x4]
+ add r7, r7, #0x4
+ add r0, r0, #0x1
+ add r5, #0xc
+ str r0, [sp, #0x4]
+ cmp r0, #0xc
+ blt _02088F74
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+_02088F9C: .word 0x020FE17C
+
+ thumb_func_start FUN_02088FA0
+FUN_02088FA0: ; 0x02088FA0
+ push {r4-r7, lr}
+ sub sp, #0xc
+ str r0, [sp, #0x0]
+ ldr r0, [r0, #0x0]
+ str r2, [sp, #0x4]
+ add r5, r1, #0x0
+ add r4, r3, #0x0
+ mov r6, #0x0
+ bl FUN_02085418
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x4]
+ add r7, r6, #0x0
+ cmp r0, #0x0
+ bls _02088FF6
+_02088FBE:
+ ldrh r1, [r5, #0x0]
+ ldr r0, [sp, #0x8]
+ bl FUN_020245F0
+ cmp r0, #0x0
+ beq _02088FEC
+ ldrh r3, [r5, #0x0]
+ ldr r0, [sp, #0x0]
+ mov r2, #0x7
+ lsr r1, r3, #0x3
+ add r1, r0, r1
+ ldr r0, _02088FFC ; =0x0000189E
+ and r3, r2
+ mov r2, #0x1
+ ldrb r0, [r1, r0]
+ lsl r2, r3
+ orr r2, r0
+ ldr r0, _02088FFC ; =0x0000189E
+ add r6, r6, #0x1
+ strb r2, [r1, r0]
+ ldrh r0, [r5, #0x0]
+ strh r0, [r4, #0x0]
+ add r4, r4, #0x2
+_02088FEC:
+ ldr r0, [sp, #0x4]
+ add r7, r7, #0x1
+ add r5, r5, #0x2
+ cmp r7, r0
+ blo _02088FBE
+_02088FF6:
+ add r0, r6, #0x0
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+_02088FFC: .word 0x0000189E
+
+ thumb_func_start FUN_02089000
+FUN_02089000: ; 0x02089000
+ push {r3-r7, lr}
+ str r0, [sp, #0x0]
+ ldr r0, [r0, #0x0]
+ add r5, r1, #0x0
+ add r7, r2, #0x0
+ add r4, r3, #0x0
+ bl FUN_02085420
+ cmp r0, #0x0
+ beq _02089046
+ mov r2, #0x0
+ cmp r7, #0x0
+ bls _02089042
+_0208901A:
+ ldrh r6, [r5, #0x0]
+ ldr r0, [sp, #0x0]
+ mov r3, #0x7
+ lsr r1, r6, #0x3
+ add r1, r0, r1
+ ldr r0, _0208904C ; =0x0000189E
+ and r6, r3
+ mov r3, #0x1
+ ldrb r0, [r1, r0]
+ lsl r3, r6
+ orr r3, r0
+ ldr r0, _0208904C ; =0x0000189E
+ add r2, r2, #0x1
+ strb r3, [r1, r0]
+ ldrh r0, [r5, #0x0]
+ add r5, r5, #0x2
+ strh r0, [r4, #0x0]
+ add r4, r4, #0x2
+ cmp r2, r7
+ blo _0208901A
+_02089042:
+ add r0, r7, #0x0
+ pop {r3-r7, pc}
+_02089046:
+ mov r0, #0x0
+ pop {r3-r7, pc}
+ nop
+_0208904C: .word 0x0000189E
+
+ thumb_func_start FUN_02089050
+FUN_02089050: ; 0x02089050
+ push {r3-r7, lr}
+ sub sp, #0x10
+ str r0, [sp, #0x0]
+ ldr r0, [r0, #0x0]
+ add r5, r1, #0x0
+ str r2, [sp, #0x4]
+ add r4, r3, #0x0
+ bl FUN_0208541C
+ str r0, [sp, #0xc]
+ ldr r0, _020890BC ; =0x00000189
+ mov r1, #0x0
+ bl FUN_02013A9C
+ str r0, [sp, #0x8]
+ mov r7, #0x0
+ ldr r0, [sp, #0x4]
+ add r6, r7, #0x0
+ cmp r0, #0x0
+ bls _020890B4
+_02089078:
+ ldrh r2, [r5, #0x0]
+ ldr r1, [sp, #0x8]
+ ldr r0, [sp, #0xc]
+ sub r1, r2, r1
+ bl FUN_02013B68
+ cmp r0, #0x0
+ beq _020890AA
+ ldrh r3, [r5, #0x0]
+ ldr r0, [sp, #0x0]
+ mov r2, #0x7
+ lsr r1, r3, #0x3
+ add r1, r0, r1
+ ldr r0, _020890C0 ; =0x0000189E
+ and r3, r2
+ mov r2, #0x1
+ ldrb r0, [r1, r0]
+ lsl r2, r3
+ orr r2, r0
+ ldr r0, _020890C0 ; =0x0000189E
+ add r6, r6, #0x1
+ strb r2, [r1, r0]
+ ldrh r0, [r5, #0x0]
+ strh r0, [r4, #0x0]
+ add r4, r4, #0x2
+_020890AA:
+ ldr r0, [sp, #0x4]
+ add r7, r7, #0x1
+ add r5, r5, #0x2
+ cmp r7, r0
+ blo _02089078
+_020890B4:
+ add r0, r6, #0x0
+ add sp, #0x10
+ pop {r3-r7, pc}
+ nop
+_020890BC: .word 0x00000189
+_020890C0: .word 0x0000189E
+
+ thumb_func_start FUN_020890C4
+FUN_020890C4: ; 0x020890C4
+ push {r4-r7, lr}
+ sub sp, #0x14
+ str r0, [sp, #0x0]
+ ldr r0, [r0, #0x0]
+ add r5, r1, #0x0
+ str r2, [sp, #0x4]
+ add r4, r3, #0x0
+ bl FUN_0208541C
+ str r0, [sp, #0x10]
+ ldr r0, _02089144 ; =0x00000186
+ mov r1, #0x0
+ bl FUN_02013A9C
+ add r6, r0, #0x0
+ add r0, r6, #0x5
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0xc]
+ mov r7, #0x0
+ ldr r0, [sp, #0x4]
+ str r7, [sp, #0x8]
+ cmp r0, #0x0
+ bls _0208913C
+_020890F4:
+ ldrh r1, [r5, #0x0]
+ cmp r1, r6
+ blo _0208910C
+ ldr r0, [sp, #0xc]
+ cmp r1, r0
+ bhi _0208910C
+ ldr r0, [sp, #0x10]
+ sub r1, r1, r6
+ bl FUN_02013C0C
+ cmp r0, #0x0
+ beq _0208912E
+_0208910C:
+ ldrh r3, [r5, #0x0]
+ ldr r0, [sp, #0x0]
+ mov r2, #0x7
+ lsr r1, r3, #0x3
+ add r1, r0, r1
+ ldr r0, _02089148 ; =0x0000189E
+ and r3, r2
+ mov r2, #0x1
+ ldrb r0, [r1, r0]
+ lsl r2, r3
+ orr r2, r0
+ ldr r0, _02089148 ; =0x0000189E
+ add r7, r7, #0x1
+ strb r2, [r1, r0]
+ ldrh r0, [r5, #0x0]
+ strh r0, [r4, #0x0]
+ add r4, r4, #0x2
+_0208912E:
+ ldr r0, [sp, #0x8]
+ add r5, r5, #0x2
+ add r1, r0, #0x1
+ ldr r0, [sp, #0x4]
+ str r1, [sp, #0x8]
+ cmp r1, r0
+ blo _020890F4
+_0208913C:
+ add r0, r7, #0x0
+ add sp, #0x14
+ pop {r4-r7, pc}
+ nop
+_02089144: .word 0x00000186
+_02089148: .word 0x0000189E
+
+ thumb_func_start FUN_0208914C
+FUN_0208914C: ; 0x0208914C
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ mov r0, #0x0
+ mov lr, r2
+ mov r12, r0
+ mov r0, lr
+ add r4, r1, #0x0
+ add r7, r3, #0x0
+ cmp r0, #0x0
+ bls _020891C2
+_02089160:
+ ldrh r2, [r4, #0x0]
+ ldr r0, _020891C8 ; =0x0000FFFE
+ cmp r2, r0
+ bne _02089196
+ add r0, r4, #0x2
+ add r4, r4, #0x4
+ ldrh r2, [r0, #0x0]
+ ldrh r0, [r4, #0x0]
+ cmp r2, #0x0
+ strh r0, [r7, #0x0]
+ beq _020891B6
+_02089176:
+ ldrh r5, [r4, #0x0]
+ mov r3, #0x7
+ add r4, r4, #0x2
+ lsr r0, r5, #0x3
+ add r1, r6, r0
+ ldr r0, _020891CC ; =0x0000189E
+ and r5, r3
+ mov r3, #0x1
+ ldrb r0, [r1, r0]
+ lsl r3, r5
+ orr r3, r0
+ ldr r0, _020891CC ; =0x0000189E
+ sub r2, r2, #0x1
+ strb r3, [r1, r0]
+ bne _02089176
+ b _020891B6
+_02089196:
+ lsr r0, r2, #0x3
+ ldr r1, _020891CC ; =0x0000189E
+ add r0, r6, r0
+ ldrb r3, [r0, r1]
+ mov r1, #0x7
+ mov r5, #0x1
+ and r1, r2
+ add r2, r5, #0x0
+ lsl r2, r1
+ ldr r1, _020891CC ; =0x0000189E
+ orr r2, r3
+ strb r2, [r0, r1]
+ ldrh r0, [r4, #0x0]
+ add r4, r4, #0x2
+ strh r0, [r7, #0x0]
+ add r7, r7, #0x2
+_020891B6:
+ mov r0, r12
+ add r1, r0, #0x1
+ mov r0, lr
+ mov r12, r1
+ cmp r1, r0
+ blo _02089160
+_020891C2:
+ mov r0, lr
+ pop {r3-r7, pc}
+ nop
+_020891C8: .word 0x0000FFFE
+_020891CC: .word 0x0000189E
+
+ thumb_func_start FUN_020891D0
+FUN_020891D0: ; 0x020891D0
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ mov r4, #0x0
+ ldr r6, _0208920C ; =0x020FDDF0
+ str r4, [sp, #0x0]
+ add r5, r7, #0x0
+_020891DC:
+ ldr r0, _02089210 ; =0x00000C84
+ mov r2, #0xcf
+ str r4, [r5, r0]
+ lsl r2, r2, #0x4
+ ldr r1, [r6, #0x0]
+ add r0, r7, #0x0
+ add r2, r7, r2
+ add r3, r4, #0x0
+ bl FUN_02089218
+ ldr r1, _02089214 ; =0x00000C18
+ add r6, r6, #0x4
+ str r0, [r5, r1]
+ add r0, r1, #0x0
+ ldr r0, [r5, r0]
+ add r5, r5, #0x4
+ add r4, r4, r0
+ ldr r0, [sp, #0x0]
+ add r0, r0, #0x1
+ str r0, [sp, #0x0]
+ cmp r0, #0x1b
+ blo _020891DC
+ pop {r3-r7, pc}
+ nop
+_0208920C: .word 0x020FDDF0
+_02089210: .word 0x00000C84
+_02089214: .word 0x00000C18
+
+ thumb_func_start FUN_02089218
+FUN_02089218: ; 0x02089218
+ push {r3-r7, lr}
+ add r7, r1, #0x0
+ add r6, r0, #0x0
+ str r2, [sp, #0x0]
+ mov r0, #0x0
+ mov r12, r0
+ ldrh r2, [r7, #0x0]
+ ldr r0, _020892B8 ; =0x0000FFFF
+ mov lr, r3
+ cmp r2, r0
+ beq _020892B4
+_0208922E:
+ ldr r0, _020892BC ; =0x0000FFFE
+ cmp r2, r0
+ bne _02089280
+ add r0, r7, #0x2
+ ldrh r5, [r0, #0x0]
+ add r7, r7, #0x4
+ mov r3, #0x0
+ cmp r5, #0x0
+ bls _0208927A
+ add r4, r7, #0x0
+_02089242:
+ ldrh r2, [r4, #0x0]
+ mov r0, #0x7
+ mov r1, #0x1
+ and r0, r2
+ lsl r1, r0
+ lsr r0, r2, #0x3
+ add r2, r6, r0
+ ldr r0, _020892C0 ; =0x0000189E
+ ldrb r0, [r2, r0]
+ tst r0, r1
+ beq _02089272
+ lsl r0, r3, #0x1
+ ldrh r1, [r7, r0]
+ mov r0, lr
+ lsl r2, r0, #0x1
+ mov r0, lr
+ add r0, r0, #0x1
+ mov lr, r0
+ ldr r0, [sp, #0x0]
+ strh r1, [r0, r2]
+ mov r0, r12
+ add r0, r0, #0x1
+ mov r12, r0
+ b _0208927A
+_02089272:
+ add r3, r3, #0x1
+ add r4, r4, #0x2
+ cmp r3, r5
+ blo _02089242
+_0208927A:
+ lsl r0, r5, #0x1
+ add r7, r7, r0
+ b _020892AC
+_02089280:
+ mov r1, #0x1
+ mov r0, #0x7
+ and r0, r2
+ add r3, r1, #0x0
+ lsl r3, r0
+ lsr r0, r2, #0x3
+ add r1, r6, r0
+ ldr r0, _020892C0 ; =0x0000189E
+ ldrb r0, [r1, r0]
+ tst r0, r3
+ beq _020892AA
+ mov r1, lr
+ add r1, r1, #0x1
+ mov r0, lr
+ mov lr, r1
+ ldr r1, [sp, #0x0]
+ lsl r0, r0, #0x1
+ strh r2, [r1, r0]
+ mov r0, r12
+ add r0, r0, #0x1
+ mov r12, r0
+_020892AA:
+ add r7, r7, #0x2
+_020892AC:
+ ldrh r2, [r7, #0x0]
+ ldr r0, _020892B8 ; =0x0000FFFF
+ cmp r2, r0
+ bne _0208922E
+_020892B4:
+ mov r0, r12
+ pop {r3-r7, pc}
+ .balign 4
+_020892B8: .word 0x0000FFFF
+_020892BC: .word 0x0000FFFE
+_020892C0: .word 0x0000189E
+
+ thumb_func_start FUN_020892C4
+FUN_020892C4: ; 0x020892C4
+ lsl r1, r1, #0x2
+ add r0, r0, r1
+ ldr r0, [r0, #0x8]
+ bx lr
+
+ thumb_func_start FUN_020892CC
+FUN_020892CC: ; 0x020892CC
+ push {r4, lr}
+ add r4, r0, #0x0
+ lsl r1, r1, #0x2
+ add r1, r4, r1
+ ldr r1, [r1, #0x38]
+ ldr r0, [r4, #0x4]
+ add r1, r1, r2
+ lsl r1, r1, #0x1
+ add r1, r4, r1
+ add r1, #0x68
+ ldrh r1, [r1, #0x0]
+ add r2, r3, #0x0
+ bl FUN_02013A30
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020892EC
+FUN_020892EC: ; 0x020892EC
+ lsl r1, r1, #0x2
+ add r1, r0, r1
+ ldr r1, [r1, #0x38]
+ add r1, r1, r2
+ lsl r1, r1, #0x1
+ add r0, r0, r1
+ add r0, #0x68
+ ldrh r0, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02089300
+FUN_02089300: ; 0x02089300
+ lsl r1, r1, #0x2
+ add r1, r0, r1
+ ldr r0, _0208930C ; =0x00000C18
+ ldr r0, [r1, r0]
+ bx lr
+ nop
+_0208930C: .word 0x00000C18
+
+ thumb_func_start FUN_02089310
+FUN_02089310: ; 0x02089310
+ push {r4-r6, lr}
+ add r4, r3, #0x0
+ add r5, r0, #0x0
+ lsl r3, r1, #0x2
+ add r6, r5, r3
+ ldr r3, _02089334 ; =0x00000C18
+ ldr r3, [r6, r3]
+ cmp r3, #0x0
+ beq _02089330
+ bl FUN_02089338
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x4]
+ add r2, r4, #0x0
+ bl FUN_02013A30
+_02089330:
+ pop {r4-r6, pc}
+ nop
+_02089334: .word 0x00000C18
+
+ thumb_func_start FUN_02089338
+FUN_02089338: ; 0x02089338
+ push {r3-r4}
+ lsl r1, r1, #0x2
+ ldr r3, _02089360 ; =0x00000C18
+ add r4, r0, r1
+ ldr r1, [r4, r3]
+ cmp r1, #0x0
+ beq _0208935A
+ add r1, r3, #0x0
+ add r1, #0x6c
+ ldr r1, [r4, r1]
+ add r3, #0xd8
+ add r1, r2, r1
+ lsl r1, r1, #0x1
+ add r0, r0, r1
+ ldrh r0, [r0, r3]
+ pop {r3-r4}
+ bx lr
+_0208935A:
+ ldr r0, _02089364 ; =0x0000FFFF
+ pop {r3-r4}
+ bx lr
+ .balign 4
+_02089360: .word 0x00000C18
+_02089364: .word 0x0000FFFF
+
+ thumb_func_start FUN_02089368
+FUN_02089368: ; 0x02089368
+ push {r3-r6}
+ mov r1, #0x0
+ ldr r2, _0208938C ; =0x020FF2FC
+ ldr r5, _02089390 ; =0x020FE17C
+ add r0, r1, #0x0
+ mov r3, #0xc
+_02089374:
+ ldrb r4, [r2, #0x0]
+ add r1, r1, #0x1
+ add r2, r2, #0x1
+ add r6, r4, #0x0
+ mul r6, r3
+ add r4, r5, r6
+ ldr r4, [r4, #0x8]
+ add r0, r0, r4
+ cmp r1, #0x5
+ blo _02089374
+ pop {r3-r6}
+ bx lr
+ .balign 4
+_0208938C: .word 0x020FF2FC
+_02089390: .word 0x020FE17C
+
+ thumb_func_start FUN_02089394
+FUN_02089394: ; 0x02089394
+ push {r4-r7}
+ mov r2, #0x0
+ ldr r3, _020893D8 ; =0x020FF2FC
+ add r1, r2, #0x0
+_0208939C:
+ ldrb r5, [r3, #0x0]
+ mov r4, #0xc
+ add r6, r5, #0x0
+ mul r6, r4
+ ldr r4, _020893DC ; =0x020FE17C
+ add r5, r4, r6
+ ldr r7, [r5, #0x8]
+ mov r6, #0x0
+ ldr r4, [r5, #0x4]
+ cmp r7, #0x0
+ ble _020893C8
+_020893B2:
+ ldrh r5, [r4, #0x0]
+ cmp r0, r5
+ bne _020893BE
+ add r0, r2, #0x0
+ pop {r4-r7}
+ bx lr
+_020893BE:
+ add r6, r6, #0x1
+ add r2, r2, #0x1
+ add r4, r4, #0x2
+ cmp r6, r7
+ blt _020893B2
+_020893C8:
+ add r1, r1, #0x1
+ add r3, r3, #0x1
+ cmp r1, #0x5
+ blo _0208939C
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4-r7}
+ bx lr
+ .balign 4
+_020893D8: .word 0x020FF2FC
+_020893DC: .word 0x020FE17C
+
+ thumb_func_start FUN_020893E0
+FUN_020893E0: ; 0x020893E0
+ mov r1, #0x0
+ ldr r0, _020893EC ; =0x02106154
+ mvn r1, r1
+ str r1, [r0, #0x0]
+ bx lr
+ nop
+_020893EC: .word 0x02106154
+
+ thumb_func_start FUN_020893F0
+FUN_020893F0: ; 0x020893F0
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x3
+ lsl r0, r0, #0xc
+ cmp r2, r0
+ bhs _0208940A
+ add r0, r1, #0x0
+ ldr r1, _02089410 ; =0x021C5C58
+ blx MIi_CpuCopy32
+ ldr r0, _02089414 ; =0x02106154
+ str r4, [r0, #0x0]
+ pop {r4, pc}
+_0208940A:
+ bl ErrorHandling
+ pop {r4, pc}
+ .balign 4
+_02089410: .word 0x021C5C58
+_02089414: .word 0x02106154
+
+ thumb_func_start FUN_02089418
+FUN_02089418: ; 0x02089418
+ push {r3, lr}
+ mov r3, #0x3
+ lsl r3, r3, #0xc
+ cmp r2, r3
+ bhs _02089434
+ ldr r3, _0208943C ; =0x02106154
+ ldr r3, [r3, #0x0]
+ cmp r0, r3
+ bne _02089438
+ ldr r0, _02089440 ; =0x021C5C58
+ blx MIi_CpuCopy32
+ mov r0, #0x1
+ pop {r3, pc}
+_02089434:
+ bl ErrorHandling
+_02089438:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+_0208943C: .word 0x02106154
+_02089440: .word 0x021C5C58
+
+ thumb_func_start FUN_02089444
+FUN_02089444: ; 0x02089444
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x3
+ lsl r0, r0, #0xc
+ cmp r2, r0
+ bhs _0208945E
+ add r0, r1, #0x0
+ ldr r1, _02089464 ; =0x021C5C58
+ blx MIi_CpuCopyFast
+ ldr r0, _02089468 ; =0x02106154
+ str r4, [r0, #0x0]
+ pop {r4, pc}
+_0208945E:
+ bl ErrorHandling
+ pop {r4, pc}
+ .balign 4
+_02089464: .word 0x021C5C58
+_02089468: .word 0x02106154
+
+ thumb_func_start FUN_0208946C
+FUN_0208946C: ; 0x0208946C
+ push {r3, lr}
+ mov r3, #0x3
+ lsl r3, r3, #0xc
+ cmp r2, r3
+ bhs _02089488
+ ldr r3, _02089490 ; =0x02106154
+ ldr r3, [r3, #0x0]
+ cmp r0, r3
+ bne _0208948C
+ ldr r0, _02089494 ; =0x021C5C58
+ blx MIi_CpuCopyFast
+ mov r0, #0x1
+ pop {r3, pc}
+_02089488:
+ bl ErrorHandling
+_0208948C:
+ mov r0, #0x0
+ pop {r3, pc}
+ .balign 4
+_02089490: .word 0x02106154
+_02089494: .word 0x021C5C58
+
+ thumb_func_start FUN_02089498
+FUN_02089498: ; 0x02089498
+ push {r3-r5, lr}
+ mov r2, #0x2
+ add r5, r0, #0x0
+ mov r0, #0x3
+ mov r1, #0x58
+ lsl r2, r2, #0x10
+ bl FUN_0201681C
+ add r0, r5, #0x0
+ mov r1, #0x38
+ mov r2, #0x58
+ bl FUN_02006268
+ mov r1, #0x0
+ mov r2, #0x38
+ add r4, r0, #0x0
+ blx FUN_020DF4A4
+ mov r0, #0x58
+ str r0, [r4, #0x0]
+ mov r0, #0x0
+ str r0, [r4, #0x4]
+ add r0, r5, #0x0
+ bl FUN_0200628C
+ ldr r0, [r0, #0x8]
+ str r0, [r4, #0x30]
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020894D4
+FUN_020894D4: ; 0x020894D4
+ push {r3-r6, lr}
+ sub sp, #0xc
+ add r5, r1, #0x0
+ bl FUN_02006278
+ ldr r1, [r5, #0x0]
+ add r4, r0, #0x0
+ mov r6, #0x0
+ cmp r1, #0x3
+ bhi _020895DA
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_020894F4: ; jump table (using 16-bit offset)
+ .short _020894FC - _020894F4 - 2; case 0
+ .short _02089588 - _020894F4 - 2; case 1
+ .short _02089596 - _020894F4 - 2; case 2
+ .short _020895BC - _020894F4 - 2; case 3
+_020894FC:
+ ldr r0, _020895E0 ; =0x00000495
+ add r1, r6, #0x0
+ bl FUN_02005350
+ add r0, r6, #0x0
+ bl FUN_0200516C
+ add r0, r6, #0x0
+ bl FUN_0200415C
+ add r0, r6, #0x0
+ add r1, r0, #0x0
+ bl FUN_0200E3A0
+ mov r0, #0x1
+ add r1, r6, #0x0
+ bl FUN_0200E3A0
+ add r0, r6, #0x0
+ add r1, r0, #0x0
+ bl FUN_02015F10
+ add r0, r6, #0x0
+ add r1, r0, #0x0
+ bl FUN_02015F34
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ mov r2, #0x1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2, #0x0]
+ ldr r0, _020895E4 ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2, #0x0]
+ ldr r2, _020895E8 ; =0x04001000
+ ldr r1, [r2, #0x0]
+ and r0, r1
+ str r0, [r2, #0x0]
+ mov r0, #0x4
+ mov r1, #0x8
+ bl FUN_0201669C
+ add r0, r4, #0x0
+ bl FUN_0208961C
+ add r0, r4, #0x0
+ bl FUN_02089734
+ ldr r0, _020895EC ; =FUN_02089610
+ add r1, r4, #0x0
+ bl FUN_02015F10
+ bl FUN_0201E788
+ mov r0, #0x6
+ mov r1, #0x1
+ str r0, [sp, #0x0]
+ str r1, [sp, #0x4]
+ ldr r0, [r4, #0x0]
+ add r2, r1, #0x0
+ str r0, [sp, #0x8]
+ add r0, r6, #0x0
+ add r3, r0, #0x0
+ bl FUN_0200E1D0
+ mov r0, #0x1
+ str r0, [r5, #0x0]
+ b _020895DA
+_02089588:
+ bl FUN_0200E308
+ cmp r0, #0x1
+ bne _020895DA
+ mov r0, #0x2
+ str r0, [r5, #0x0]
+ b _020895DA
+_02089596:
+ bl FUN_02089790
+ cmp r0, #0x1
+ bne _020895DA
+ mov r0, #0x6
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ ldr r0, [r4, #0x0]
+ str r0, [sp, #0x8]
+ add r0, r6, #0x0
+ add r1, r0, #0x0
+ add r2, r0, #0x0
+ add r3, r0, #0x0
+ bl FUN_0200E1D0
+ mov r0, #0x3
+ str r0, [r5, #0x0]
+ b _020895DA
+_020895BC:
+ bl FUN_0200E308
+ cmp r0, #0x1
+ bne _020895DA
+ add r0, r4, #0x0
+ bl FUN_0208977C
+ add r0, r4, #0x0
+ bl FUN_020896E0
+ add r0, r6, #0x0
+ add r1, r0, #0x0
+ bl FUN_02015F10
+ mov r6, #0x1
+_020895DA:
+ add r0, r6, #0x0
+ add sp, #0xc
+ pop {r3-r6, pc}
+ .balign 4
+_020895E0: .word 0x00000495
+_020895E4: .word 0xFFFFE0FF
+_020895E8: .word 0x04001000
+_020895EC: .word FUN_02089610
+
+ thumb_func_start FUN_020895F0
+FUN_020895F0: ; 0x020895F0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_02006278
+ ldr r4, [r0, #0x0]
+ add r0, r5, #0x0
+ bl FUN_0200627C
+ add r0, r4, #0x0
+ bl FUN_020168D0
+ mov r0, #0x0
+ blx OS_ResetSystem
+ mov r0, #0x1
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02089610
+FUN_02089610: ; 0x02089610
+ ldr r3, _02089618 ; =FUN_0201AB60
+ ldr r0, [r0, #0x14]
+ bx r3
+ nop
+_02089618: .word FUN_0201AB60
+
+ thumb_func_start FUN_0208961C
+FUN_0208961C: ; 0x0208961C
+ push {r4-r5, lr}
+ sub sp, #0x5c
+ ldr r5, _020896C8 ; =0x020FF340
+ add r4, r0, #0x0
+ add r3, sp, #0x34
+ mov r2, #0x5
+_02089628:
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ sub r2, r2, #0x1
+ bne _02089628
+ add r0, sp, #0x34
+ bl FUN_0201E66C
+ ldr r0, [r4, #0x0]
+ bl FUN_02016B94
+ add r3, sp, #0x24
+ ldr r5, _020896CC ; =0x020FF314
+ str r0, [r4, #0x14]
+ add r2, r3, #0x0
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ add r0, r2, #0x0
+ bl FUN_02016BBC
+ ldr r5, _020896D0 ; =0x020FF324
+ add r3, sp, #0x8
+ ldmia r5!, {r0-r1}
+ add r2, r3, #0x0
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldr r0, [r5, #0x0]
+ mov r1, #0x0
+ str r0, [r3, #0x0]
+ ldr r0, [r4, #0x14]
+ add r3, r1, #0x0
+ bl FUN_02016C18
+ ldr r0, [r4, #0x14]
+ mov r1, #0x0
+ bl FUN_02018744
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ ldr r0, [r4, #0x0]
+ ldr r2, _020896D4 ; =0x000001E2
+ str r0, [sp, #0x4]
+ ldr r0, [r4, #0x14]
+ mov r3, #0x2
+ bl FUN_0200CD68
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ ldr r0, [r4, #0x0]
+ ldr r2, _020896D8 ; =0x000001D9
+ str r0, [sp, #0x4]
+ ldr r0, [r4, #0x14]
+ mov r3, #0x3
+ bl FUN_0200CB00
+ ldr r2, [r4, #0x0]
+ mov r0, #0x0
+ mov r1, #0x20
+ bl FUN_02002ED0
+ mov r0, #0x0
+ ldr r3, [r4, #0x0]
+ mov r1, #0x20
+ add r2, r0, #0x0
+ bl FUN_02017F18
+ ldr r1, _020896DC ; =0x00006C21
+ mov r0, #0x0
+ bl FUN_02017FE4
+ ldr r1, _020896DC ; =0x00006C21
+ mov r0, #0x4
+ bl FUN_02017FE4
+ add sp, #0x5c
+ pop {r4-r5, pc}
+ .balign 4
+_020896C8: .word 0x020FF340
+_020896CC: .word 0x020FF314
+_020896D0: .word 0x020FF324
+_020896D4: .word 0x000001E2
+_020896D8: .word 0x000001D9
+_020896DC: .word 0x00006C21
+
+ thumb_func_start FUN_020896E0
+FUN_020896E0: ; 0x020896E0
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x0
+ add r1, r0, #0x0
+ bl FUN_0201797C
+ mov r0, #0x1
+ mov r1, #0x0
+ bl FUN_0201797C
+ mov r0, #0x2
+ mov r1, #0x0
+ bl FUN_0201797C
+ mov r0, #0x3
+ mov r1, #0x0
+ bl FUN_0201797C
+ mov r0, #0x4
+ mov r1, #0x0
+ bl FUN_0201797C
+ mov r0, #0x5
+ mov r1, #0x0
+ bl FUN_0201797C
+ mov r0, #0x6
+ mov r1, #0x0
+ bl FUN_0201797C
+ mov r0, #0x7
+ mov r1, #0x0
+ bl FUN_0201797C
+ ldr r0, [r4, #0x14]
+ mov r1, #0x0
+ bl FUN_020178A0
+ ldr r0, [r4, #0x14]
+ bl FUN_02016A18
+ pop {r4, pc}
+
+ thumb_func_start FUN_02089734
+FUN_02089734: ; 0x02089734
+ push {r4, lr}
+ sub sp, #0x8
+ add r4, r0, #0x0
+ ldr r3, [r4, #0x0]
+ mov r0, #0x1
+ mov r1, #0x1a
+ mov r2, #0x4
+ bl FUN_0200A86C
+ str r0, [r4, #0x18]
+ bl FUN_0201BD5C
+ mov r0, #0x0
+ str r0, [r4, #0x8]
+ add r1, r4, #0x0
+ ldr r0, [r4, #0x14]
+ ldr r2, _02089778 ; =0x020FF304
+ add r1, #0x1c
+ bl FUN_02019150
+ mov r0, #0xd8
+ str r0, [sp, #0x0]
+ mov r0, #0x20
+ mov r2, #0x0
+ add r4, #0x1c
+ str r0, [sp, #0x4]
+ add r0, r4, #0x0
+ mov r1, #0xf
+ add r3, r2, #0x0
+ bl FUN_020196F4
+ add sp, #0x8
+ pop {r4, pc}
+ nop
+_02089778: .word 0x020FF304
+
+ thumb_func_start FUN_0208977C
+FUN_0208977C: ; 0x0208977C
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, #0x1c
+ bl FUN_02019178
+ ldr r0, [r4, #0x18]
+ bl FUN_0200A8B8
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02089790
+FUN_02089790: ; 0x02089790
+ push {r3-r5, lr}
+ sub sp, #0x8
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x4]
+ mov r5, #0x0
+ cmp r1, #0x6
+ bhi _02089888
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_020897AA: ; jump table (using 16-bit offset)
+ .short _020897B8 - _020897AA - 2; case 0
+ .short _020897E2 - _020897AA - 2; case 1
+ .short _02089802 - _020897AA - 2; case 2
+ .short _0208982C - _020897AA - 2; case 3
+ .short _0208984C - _020897AA - 2; case 4
+ .short _0208986C - _020897AA - 2; case 5
+ .short _0208987E - _020897AA - 2; case 6
+_020897B8:
+ add r1, r5, #0x0
+ mov r2, #0x1
+ mov r3, #0x4
+ bl FUN_0208989C
+ cmp r0, #0x1
+ bne _02089888
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x0]
+ ldr r1, _02089890 ; =0x020FF30C
+ str r0, [sp, #0x4]
+ ldr r0, [r4, #0x14]
+ ldr r2, _02089894 ; =0x000001D9
+ mov r3, #0x3
+ bl FUN_020020EC
+ str r0, [r4, #0x2c]
+ mov r0, #0x1
+ str r0, [r4, #0x4]
+ b _02089888
+_020897E2:
+ ldr r0, [r4, #0x2c]
+ ldr r1, [r4, #0x0]
+ bl FUN_020021AC
+ cmp r0, #0x0
+ beq _020897F6
+ sub r1, r5, #0x2
+ cmp r0, r1
+ beq _020897FC
+ b _02089888
+_020897F6:
+ mov r0, #0x2
+ str r0, [r4, #0x4]
+ b _02089888
+_020897FC:
+ mov r0, #0x6
+ str r0, [r4, #0x4]
+ b _02089888
+_02089802:
+ mov r1, #0x1
+ add r2, r1, #0x0
+ mov r3, #0x4
+ bl FUN_0208989C
+ cmp r0, #0x1
+ bne _02089888
+ mov r0, #0x1
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x0]
+ ldr r1, _02089890 ; =0x020FF30C
+ str r0, [sp, #0x4]
+ ldr r0, [r4, #0x14]
+ ldr r2, _02089894 ; =0x000001D9
+ mov r3, #0x3
+ bl FUN_020020EC
+ str r0, [r4, #0x2c]
+ mov r0, #0x3
+ str r0, [r4, #0x4]
+ b _02089888
+_0208982C:
+ ldr r0, [r4, #0x2c]
+ ldr r1, [r4, #0x0]
+ bl FUN_020021AC
+ cmp r0, #0x0
+ beq _02089840
+ sub r1, r5, #0x2
+ cmp r0, r1
+ beq _02089846
+ b _02089888
+_02089840:
+ mov r0, #0x4
+ str r0, [r4, #0x4]
+ b _02089888
+_02089846:
+ mov r0, #0x6
+ str r0, [r4, #0x4]
+ b _02089888
+_0208984C:
+ mov r1, #0x2
+ mov r2, #0x1
+ add r3, r5, #0x0
+ bl FUN_0208989C
+ cmp r0, #0x1
+ bne _02089888
+ add r0, r4, #0x0
+ ldr r1, _02089898 ; =0x000001E2
+ add r0, #0x1c
+ bl FUN_0200D858
+ str r0, [r4, #0x34]
+ mov r0, #0x5
+ str r0, [r4, #0x4]
+ b _02089888
+_0208986C:
+ ldr r0, [r4, #0x30]
+ bl FUN_0202263C
+ ldr r0, [r4, #0x34]
+ bl FUN_0200DBFC
+ mov r0, #0x6
+ str r0, [r4, #0x4]
+ b _02089888
+_0208987E:
+ ldr r0, [r4, #0x14]
+ add r1, r5, #0x0
+ bl FUN_02018744
+ mov r5, #0x1
+_02089888:
+ add r0, r5, #0x0
+ add sp, #0x8
+ pop {r3-r5, pc}
+ nop
+_02089890: .word 0x020FF30C
+_02089894: .word 0x000001D9
+_02089898: .word 0x000001E2
+
+ thumb_func_start FUN_0208989C
+FUN_0208989C: ; 0x0208989C
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x8]
+ add r7, r1, #0x0
+ add r4, r3, #0x0
+ mov r6, #0x0
+ cmp r0, #0x0
+ beq _020898B8
+ cmp r0, #0x1
+ beq _02089920
+ cmp r0, #0x2
+ beq _0208993C
+ b _02089950
+_020898B8:
+ mov r0, #0xd8
+ str r0, [sp, #0x0]
+ mov r0, #0x20
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ add r0, #0x1c
+ mov r1, #0xf
+ add r2, r6, #0x0
+ add r3, r6, #0x0
+ bl FUN_020196F4
+ add r0, r5, #0x0
+ ldr r2, _02089958 ; =0x000001E2
+ add r0, #0x1c
+ add r1, r6, #0x0
+ mov r3, #0x2
+ bl FUN_0200D0BC
+ mov r0, #0x1
+ ldr r1, [r5, #0x0]
+ lsl r0, r0, #0xa
+ bl FUN_020219F4
+ str r0, [r5, #0x10]
+ ldr r0, [r5, #0x18]
+ ldr r2, [r5, #0x10]
+ add r1, r7, #0x0
+ bl FUN_0200A8E0
+ add r3, r6, #0x0
+ str r3, [sp, #0x0]
+ str r4, [sp, #0x4]
+ str r3, [sp, #0x8]
+ add r0, r5, #0x0
+ ldr r2, [r5, #0x10]
+ add r0, #0x1c
+ mov r1, #0x1
+ bl FUN_0201BD84
+ str r0, [r5, #0xc]
+ cmp r4, #0x0
+ bne _02089918
+ ldr r0, [r5, #0x10]
+ bl FUN_02021A20
+ ldr r0, [r5, #0x8]
+ add r0, r0, #0x1
+ str r0, [r5, #0x8]
+_02089918:
+ ldr r0, [r5, #0x8]
+ add r0, r0, #0x1
+ str r0, [r5, #0x8]
+ b _02089950
+_02089920:
+ ldr r0, [r5, #0xc]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0x0
+ bne _02089950
+ ldr r0, [r5, #0x10]
+ bl FUN_02021A20
+ ldr r0, [r5, #0x8]
+ add r0, r0, #0x1
+ str r0, [r5, #0x8]
+ b _02089950
+_0208993C:
+ cmp r2, #0x0
+ bne _0208994A
+ ldr r0, _0208995C ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x1
+ tst r0, r1
+ beq _02089950
+_0208994A:
+ mov r0, #0x0
+ str r0, [r5, #0x8]
+ mov r6, #0x1
+_02089950:
+ add r0, r6, #0x0
+ add sp, #0xc
+ pop {r4-r7, pc}
+ nop
+_02089958: .word 0x000001E2
+_0208995C: .word 0x021C48B8
+
+ thumb_func_start FUN_02089960
+FUN_02089960: ; 0x02089960
+ push {r3-r5, lr}
+ mov r2, #0x2
+ add r5, r0, #0x0
+ mov r0, #0x3
+ mov r1, #0x58
+ lsl r2, r2, #0x10
+ bl FUN_0201681C
+ add r0, r5, #0x0
+ mov r1, #0x3c
+ mov r2, #0x58
+ bl FUN_02006268
+ mov r1, #0x0
+ mov r2, #0x3c
+ add r4, r0, #0x0
+ blx FUN_020DF4A4
+ mov r0, #0x58
+ str r0, [r4, #0x0]
+ mov r0, #0x0
+ str r0, [r4, #0x4]
+ add r0, r5, #0x0
+ bl FUN_0200628C
+ ldr r0, [r0, #0x8]
+ str r0, [r4, #0x34]
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0208999C
+FUN_0208999C: ; 0x0208999C
+ push {r4-r6, lr}
+ add r5, r1, #0x0
+ bl FUN_02006278
+ ldr r1, [r5, #0x0]
+ add r6, r0, #0x0
+ mov r4, #0x0
+ cmp r1, #0x0
+ beq _020899B8
+ cmp r1, #0x1
+ beq _02089A12
+ cmp r1, #0x2
+ beq _02089A20
+ b _02089A34
+_020899B8:
+ add r0, r4, #0x0
+ add r1, r4, #0x0
+ bl FUN_0200E3A0
+ mov r0, #0x1
+ add r1, r4, #0x0
+ bl FUN_0200E3A0
+ add r0, r4, #0x0
+ add r1, r0, #0x0
+ bl FUN_02015F10
+ add r0, r4, #0x0
+ add r1, r0, #0x0
+ bl FUN_02015F34
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ mov r2, #0x1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2, #0x0]
+ ldr r0, _02089A38 ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2, #0x0]
+ ldr r2, _02089A3C ; =0x04001000
+ ldr r1, [r2, #0x0]
+ and r0, r1
+ str r0, [r2, #0x0]
+ mov r0, #0x4
+ mov r1, #0x8
+ bl FUN_0201669C
+ add r0, r6, #0x0
+ bl FUN_02089A6C
+ add r0, r6, #0x0
+ bl FUN_02089B80
+ bl FUN_0201E788
+ mov r0, #0x1
+ str r0, [r5, #0x0]
+ b _02089A34
+_02089A12:
+ bl FUN_02089BE0
+ cmp r0, #0x1
+ bne _02089A34
+ mov r0, #0x2
+ str r0, [r5, #0x0]
+ b _02089A34
+_02089A20:
+ bl FUN_02089BCC
+ add r0, r6, #0x0
+ bl FUN_02089B2C
+ add r0, r4, #0x0
+ add r1, r0, #0x0
+ bl FUN_02015F10
+ mov r4, #0x1
+_02089A34:
+ add r0, r4, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+_02089A38: .word 0xFFFFE0FF
+_02089A3C: .word 0x04001000
+
+ thumb_func_start FUN_02089A40
+FUN_02089A40: ; 0x02089A40
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_02006278
+ ldr r4, [r0, #0x0]
+ add r0, r5, #0x0
+ bl FUN_0200627C
+ add r0, r4, #0x0
+ bl FUN_020168D0
+ ldr r0, _02089A64 ; =0x00000053
+ ldr r1, _02089A68 ; =0x0223A360
+ bl FUN_02000E7C
+ mov r0, #0x1
+ pop {r3-r5, pc}
+ nop
+_02089A64: .word 0x00000053
+_02089A68: .word 0x0223A360
+
+ thumb_func_start FUN_02089A6C
+FUN_02089A6C: ; 0x02089A6C
+ push {r4-r5, lr}
+ sub sp, #0x5c
+ ldr r5, _02089B18 ; =0x020FF3AC
+ add r4, r0, #0x0
+ add r3, sp, #0x34
+ mov r2, #0x5
+_02089A78:
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ sub r2, r2, #0x1
+ bne _02089A78
+ add r0, sp, #0x34
+ bl FUN_0201E66C
+ ldr r0, [r4, #0x0]
+ bl FUN_02016B94
+ add r3, sp, #0x24
+ ldr r5, _02089B1C ; =0x020FF380
+ str r0, [r4, #0x18]
+ add r2, r3, #0x0
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ add r0, r2, #0x0
+ bl FUN_02016BBC
+ ldr r5, _02089B20 ; =0x020FF390
+ add r3, sp, #0x8
+ ldmia r5!, {r0-r1}
+ add r2, r3, #0x0
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldr r0, [r5, #0x0]
+ mov r1, #0x0
+ str r0, [r3, #0x0]
+ ldr r0, [r4, #0x18]
+ add r3, r1, #0x0
+ bl FUN_02016C18
+ ldr r0, [r4, #0x18]
+ mov r1, #0x0
+ bl FUN_02018744
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ ldr r0, [r4, #0x0]
+ ldr r2, _02089B24 ; =0x000001E2
+ str r0, [sp, #0x4]
+ ldr r0, [r4, #0x18]
+ mov r3, #0x2
+ bl FUN_0200CD68
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ ldr r0, [r4, #0x0]
+ ldr r2, _02089B28 ; =0x000001D9
+ str r0, [sp, #0x4]
+ ldr r0, [r4, #0x18]
+ mov r3, #0x3
+ bl FUN_0200CB00
+ ldr r2, [r4, #0x0]
+ mov r0, #0x0
+ mov r1, #0x20
+ bl FUN_02002ED0
+ mov r0, #0x0
+ ldr r3, [r4, #0x0]
+ mov r1, #0x20
+ add r2, r0, #0x0
+ bl FUN_02017F18
+ mov r0, #0x0
+ add r1, r0, #0x0
+ bl FUN_02017FE4
+ mov r0, #0x4
+ mov r1, #0x0
+ bl FUN_02017FE4
+ add sp, #0x5c
+ pop {r4-r5, pc}
+ .balign 4
+_02089B18: .word 0x020FF3AC
+_02089B1C: .word 0x020FF380
+_02089B20: .word 0x020FF390
+_02089B24: .word 0x000001E2
+_02089B28: .word 0x000001D9
+
+ thumb_func_start FUN_02089B2C
+FUN_02089B2C: ; 0x02089B2C
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x0
+ add r1, r0, #0x0
+ bl FUN_0201797C
+ mov r0, #0x1
+ mov r1, #0x0
+ bl FUN_0201797C
+ mov r0, #0x2
+ mov r1, #0x0
+ bl FUN_0201797C
+ mov r0, #0x3
+ mov r1, #0x0
+ bl FUN_0201797C
+ mov r0, #0x4
+ mov r1, #0x0
+ bl FUN_0201797C
+ mov r0, #0x5
+ mov r1, #0x0
+ bl FUN_0201797C
+ mov r0, #0x6
+ mov r1, #0x0
+ bl FUN_0201797C
+ mov r0, #0x7
+ mov r1, #0x0
+ bl FUN_0201797C
+ ldr r0, [r4, #0x18]
+ mov r1, #0x0
+ bl FUN_020178A0
+ ldr r0, [r4, #0x18]
+ bl FUN_02016A18
+ pop {r4, pc}
+
+ thumb_func_start FUN_02089B80
+FUN_02089B80: ; 0x02089B80
+ push {r4, lr}
+ sub sp, #0x8
+ add r4, r0, #0x0
+ ldr r2, _02089BC4 ; =0x00000167
+ ldr r3, [r4, #0x0]
+ mov r0, #0x1
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ str r0, [r4, #0x1c]
+ bl FUN_0201BD5C
+ mov r0, #0x0
+ str r0, [r4, #0xc]
+ add r1, r4, #0x0
+ ldr r0, [r4, #0x18]
+ ldr r2, _02089BC8 ; =0x020FF378
+ add r1, #0x20
+ bl FUN_02019150
+ mov r0, #0xd8
+ str r0, [sp, #0x0]
+ mov r0, #0x20
+ mov r2, #0x0
+ add r4, #0x20
+ str r0, [sp, #0x4]
+ add r0, r4, #0x0
+ mov r1, #0xf
+ add r3, r2, #0x0
+ bl FUN_020196F4
+ add sp, #0x8
+ pop {r4, pc}
+ nop
+_02089BC4: .word 0x00000167
+_02089BC8: .word 0x020FF378
+
+ thumb_func_start FUN_02089BCC
+FUN_02089BCC: ; 0x02089BCC
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, #0x20
+ bl FUN_02019178
+ ldr r0, [r4, #0x1c]
+ bl FUN_0200A8B8
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02089BE0
+FUN_02089BE0: ; 0x02089BE0
+ push {r4-r5, lr}
+ sub sp, #0xc
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x4]
+ mov r5, #0x0
+ cmp r1, #0x5
+ bhi _02089CC2
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02089BFA: ; jump table (using 16-bit offset)
+ .short _02089C06 - _02089BFA - 2; case 0
+ .short _02089C3C - _02089BFA - 2; case 1
+ .short _02089C68 - _02089BFA - 2; case 2
+ .short _02089C76 - _02089BFA - 2; case 3
+ .short _02089CA2 - _02089BFA - 2; case 4
+ .short _02089CC0 - _02089BFA - 2; case 5
+_02089C06:
+ ldr r0, [r4, #0x34]
+ bl FUN_02022800
+ cmp r0, #0x3
+ bhi _02089CC2
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02089C1C: ; jump table (using 16-bit offset)
+ .short _02089C24 - _02089C1C - 2; case 0
+ .short _02089C24 - _02089C1C - 2; case 1
+ .short _02089C2A - _02089C1C - 2; case 2
+ .short _02089C34 - _02089C1C - 2; case 3
+_02089C24:
+ mov r0, #0x5
+ str r0, [r4, #0x4]
+ b _02089CC2
+_02089C2A:
+ add r0, r5, #0x0
+ str r0, [r4, #0x8]
+ mov r0, #0x1
+ str r0, [r4, #0x4]
+ b _02089CC2
+_02089C34:
+ mov r0, #0x1
+ str r0, [r4, #0x8]
+ str r0, [r4, #0x4]
+ b _02089CC2
+_02089C3C:
+ ldr r1, _02089CC8 ; =0x00006C21
+ add r0, r5, #0x0
+ bl FUN_02017FE4
+ ldr r1, _02089CC8 ; =0x00006C21
+ mov r0, #0x4
+ bl FUN_02017FE4
+ mov r0, #0x6
+ mov r1, #0x1
+ str r0, [sp, #0x0]
+ str r1, [sp, #0x4]
+ ldr r0, [r4, #0x0]
+ add r2, r1, #0x0
+ str r0, [sp, #0x8]
+ add r0, r5, #0x0
+ add r3, r0, #0x0
+ bl FUN_0200E1D0
+ mov r0, #0x2
+ str r0, [r4, #0x4]
+ b _02089CC2
+_02089C68:
+ bl FUN_0200E308
+ cmp r0, #0x1
+ bne _02089CC2
+ mov r0, #0x3
+ str r0, [r4, #0x4]
+ b _02089CC2
+_02089C76:
+ ldr r1, [r4, #0x8]
+ add r2, r5, #0x0
+ mov r3, #0x4
+ bl FUN_02089CCC
+ cmp r0, #0x1
+ bne _02089CC2
+ mov r0, #0x6
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ ldr r0, [r4, #0x0]
+ str r0, [sp, #0x8]
+ add r0, r5, #0x0
+ add r1, r0, #0x0
+ add r2, r0, #0x0
+ add r3, r0, #0x0
+ bl FUN_0200E1D0
+ mov r0, #0x4
+ str r0, [r4, #0x4]
+ b _02089CC2
+_02089CA2:
+ bl FUN_0200E308
+ cmp r0, #0x1
+ bne _02089CC2
+ add r0, r5, #0x0
+ add r1, r0, #0x0
+ bl FUN_02017FE4
+ mov r0, #0x4
+ add r1, r5, #0x0
+ bl FUN_02017FE4
+ mov r0, #0x5
+ str r0, [r4, #0x4]
+ b _02089CC2
+_02089CC0:
+ mov r5, #0x1
+_02089CC2:
+ add r0, r5, #0x0
+ add sp, #0xc
+ pop {r4-r5, pc}
+ .balign 4
+_02089CC8: .word 0x00006C21
+
+ thumb_func_start FUN_02089CCC
+FUN_02089CCC: ; 0x02089CCC
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ ldr r0, [r5, #0xc]
+ add r7, r1, #0x0
+ add r4, r3, #0x0
+ mov r6, #0x0
+ cmp r0, #0x0
+ beq _02089CE8
+ cmp r0, #0x1
+ beq _02089D50
+ cmp r0, #0x2
+ beq _02089D6C
+ b _02089D80
+_02089CE8:
+ mov r0, #0xd8
+ str r0, [sp, #0x0]
+ mov r0, #0x20
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ add r0, #0x20
+ mov r1, #0xf
+ add r2, r6, #0x0
+ add r3, r6, #0x0
+ bl FUN_020196F4
+ add r0, r5, #0x0
+ ldr r2, _02089D88 ; =0x000001E2
+ add r0, #0x20
+ add r1, r6, #0x0
+ mov r3, #0x2
+ bl FUN_0200D0BC
+ mov r0, #0x1
+ ldr r1, [r5, #0x0]
+ lsl r0, r0, #0xa
+ bl FUN_020219F4
+ str r0, [r5, #0x14]
+ ldr r0, [r5, #0x1c]
+ ldr r2, [r5, #0x14]
+ add r1, r7, #0x0
+ bl FUN_0200A8E0
+ add r3, r6, #0x0
+ str r3, [sp, #0x0]
+ str r4, [sp, #0x4]
+ str r3, [sp, #0x8]
+ add r0, r5, #0x0
+ ldr r2, [r5, #0x14]
+ add r0, #0x20
+ mov r1, #0x1
+ bl FUN_0201BD84
+ str r0, [r5, #0x10]
+ cmp r4, #0x0
+ bne _02089D48
+ ldr r0, [r5, #0x14]
+ bl FUN_02021A20
+ ldr r0, [r5, #0xc]
+ add r0, r0, #0x1
+ str r0, [r5, #0xc]
+_02089D48:
+ ldr r0, [r5, #0xc]
+ add r0, r0, #0x1
+ str r0, [r5, #0xc]
+ b _02089D80
+_02089D50:
+ ldr r0, [r5, #0x10]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0x0
+ bne _02089D80
+ ldr r0, [r5, #0x14]
+ bl FUN_02021A20
+ ldr r0, [r5, #0xc]
+ add r0, r0, #0x1
+ str r0, [r5, #0xc]
+ b _02089D80
+_02089D6C:
+ cmp r2, #0x0
+ bne _02089D7A
+ ldr r0, _02089D8C ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x1
+ tst r0, r1
+ beq _02089D80
+_02089D7A:
+ mov r0, #0x0
+ str r0, [r5, #0xc]
+ mov r6, #0x1
+_02089D80:
+ add r0, r6, #0x0
+ add sp, #0xc
+ pop {r4-r7, pc}
+ nop
+_02089D88: .word 0x000001E2
+_02089D8C: .word 0x021C48B8
+
+ thumb_func_start FUN_02089D90
+FUN_02089D90: ; 0x02089D90
+ push {r3-r6, lr}
+ sub sp, #0x1c
+ add r4, r0, #0x0
+ mov r0, #0x0
+ add r1, r0, #0x0
+ bl FUN_0200E3A0
+ mov r0, #0x1
+ mov r1, #0x0
+ bl FUN_0200E3A0
+ mov r0, #0x0
+ add r1, r0, #0x0
+ bl FUN_02015F10
+ mov r0, #0x0
+ add r1, r0, #0x0
+ bl FUN_02015F34
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ mov r2, #0x1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2, #0x0]
+ ldr r0, _02089EF4 ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2, #0x0]
+ ldr r2, _02089EF8 ; =0x04001000
+ ldr r1, [r2, #0x0]
+ and r0, r1
+ str r0, [r2, #0x0]
+ mov r0, #0x4
+ mov r1, #0x8
+ bl FUN_0201669C
+ ldr r0, _02089EFC ; =0x021C4918
+ mov r1, #0x0
+ strb r1, [r0, #0x5]
+ bl FUN_0201E7A0
+ ldr r3, _02089F00 ; =0x04000050
+ mov r0, #0x0
+ strh r0, [r3, #0x0]
+ ldr r2, _02089F04 ; =0x04001050
+ sub r3, #0x50
+ strh r0, [r2, #0x0]
+ ldr r1, [r3, #0x0]
+ ldr r0, _02089F08 ; =0xFFFF1FFF
+ sub r2, #0x50
+ and r1, r0
+ str r1, [r3, #0x0]
+ ldr r1, [r2, #0x0]
+ and r0, r1
+ str r0, [r2, #0x0]
+ ldr r0, _02089F0C ; =0x020FF418
+ bl FUN_0201E66C
+ add r0, r4, #0x0
+ bl FUN_02016B94
+ add r5, r0, #0x0
+ ldr r0, _02089F10 ; =0x020FF3EC
+ bl FUN_02016BBC
+ mov r1, #0x0
+ ldr r2, _02089F14 ; =0x020FF3FC
+ add r0, r5, #0x0
+ add r3, r1, #0x0
+ bl FUN_02016C18
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_02018744
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ ldr r2, _02089F18 ; =0x000001F7
+ add r0, r5, #0x0
+ mov r3, #0x2
+ str r4, [sp, #0x4]
+ bl FUN_0200CB00
+ mov r0, #0x0
+ mov r1, #0x20
+ add r2, r4, #0x0
+ bl FUN_02002ED0
+ mov r0, #0x0
+ mov r1, #0x20
+ add r2, r0, #0x0
+ add r3, r4, #0x0
+ bl FUN_02017F18
+ ldr r1, _02089F1C ; =0x00006C21
+ mov r0, #0x0
+ bl FUN_02017FE4
+ ldr r1, _02089F1C ; =0x00006C21
+ mov r0, #0x4
+ bl FUN_02017FE4
+ mov r0, #0x1
+ mov r1, #0x1a
+ mov r2, #0x5
+ add r3, r4, #0x0
+ bl FUN_0200A86C
+ add r6, r0, #0x0
+ mov r0, #0x6
+ lsl r0, r0, #0x6
+ add r1, r4, #0x0
+ bl FUN_020219F4
+ add r4, r0, #0x0
+ bl FUN_0201BD5C
+ ldr r2, _02089F20 ; =0x020FF3E4
+ add r0, r5, #0x0
+ add r1, sp, #0xc
+ bl FUN_02019150
+ mov r0, #0xd0
+ str r0, [sp, #0x0]
+ mov r0, #0x90
+ mov r2, #0x0
+ str r0, [sp, #0x4]
+ add r0, sp, #0xc
+ mov r1, #0xf
+ add r3, r2, #0x0
+ bl FUN_020196F4
+ ldr r2, _02089F18 ; =0x000001F7
+ add r0, sp, #0xc
+ mov r1, #0x0
+ mov r3, #0x2
+ bl FUN_0200CCA4
+ add r0, r6, #0x0
+ mov r1, #0x0
+ add r2, r4, #0x0
+ bl FUN_0200A8E0
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ str r1, [sp, #0x4]
+ add r0, sp, #0xc
+ add r2, r4, #0x0
+ add r3, r1, #0x0
+ str r1, [sp, #0x8]
+ bl FUN_0201BD84
+ add r0, r4, #0x0
+ bl FUN_02021A20
+ bl FUN_0201E788
+ mov r0, #0x0
+ bl FUN_0200E394
+ mov r0, #0x1
+ bl FUN_0200E394
+ mov r0, #0x0
+ mov r1, #0x3f
+ mov r2, #0x3
+ bl FUN_0200A274
+ mov r4, #0x1
+_02089EE4:
+ bl FUN_02000FE8
+ add r0, r4, #0x0
+ add r1, r4, #0x0
+ blx OS_WaitIrq
+ b _02089EE4
+ nop
+_02089EF4: .word 0xFFFFE0FF
+_02089EF8: .word 0x04001000
+_02089EFC: .word 0x021C4918
+_02089F00: .word 0x04000050
+_02089F04: .word 0x04001050
+_02089F08: .word 0xFFFF1FFF
+_02089F0C: .word 0x020FF418
+_02089F10: .word 0x020FF3EC
+_02089F14: .word 0x020FF3FC
+_02089F18: .word 0x000001F7
+_02089F1C: .word 0x00006C21
+_02089F20: .word 0x020FF3E4
+
+ thumb_func_start FUN_02089F24
+FUN_02089F24: ; 0x02089F24
+ push {r3-r6, lr}
+ sub sp, #0x1c
+ add r4, r0, #0x0
+ mov r0, #0x0
+ add r1, r0, #0x0
+ bl FUN_0200E3A0
+ mov r0, #0x1
+ mov r1, #0x0
+ bl FUN_0200E3A0
+ mov r0, #0x0
+ add r1, r0, #0x0
+ bl FUN_02015F10
+ mov r0, #0x0
+ add r1, r0, #0x0
+ bl FUN_02015F34
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ mov r2, #0x1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2, #0x0]
+ ldr r0, _0208A088 ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2, #0x0]
+ ldr r2, _0208A08C ; =0x04001000
+ ldr r1, [r2, #0x0]
+ and r0, r1
+ str r0, [r2, #0x0]
+ mov r0, #0x4
+ mov r1, #0x8
+ bl FUN_0201669C
+ ldr r0, _0208A090 ; =0x021C4918
+ mov r1, #0x0
+ strb r1, [r0, #0x5]
+ bl FUN_0201E7A0
+ ldr r3, _0208A094 ; =0x04000050
+ mov r0, #0x0
+ strh r0, [r3, #0x0]
+ ldr r2, _0208A098 ; =0x04001050
+ sub r3, #0x50
+ strh r0, [r2, #0x0]
+ ldr r1, [r3, #0x0]
+ ldr r0, _0208A09C ; =0xFFFF1FFF
+ sub r2, #0x50
+ and r1, r0
+ str r1, [r3, #0x0]
+ ldr r1, [r2, #0x0]
+ and r0, r1
+ str r0, [r2, #0x0]
+ ldr r0, _0208A0A0 ; =0x020FF418
+ bl FUN_0201E66C
+ add r0, r4, #0x0
+ bl FUN_02016B94
+ add r5, r0, #0x0
+ ldr r0, _0208A0A4 ; =0x020FF3EC
+ bl FUN_02016BBC
+ mov r1, #0x0
+ ldr r2, _0208A0A8 ; =0x020FF3FC
+ add r0, r5, #0x0
+ add r3, r1, #0x0
+ bl FUN_02016C18
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_02018744
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ ldr r2, _0208A0AC ; =0x000001F7
+ add r0, r5, #0x0
+ mov r3, #0x2
+ str r4, [sp, #0x4]
+ bl FUN_0200CB00
+ mov r0, #0x0
+ mov r1, #0x20
+ add r2, r4, #0x0
+ bl FUN_02002ED0
+ mov r0, #0x0
+ mov r1, #0x20
+ add r2, r0, #0x0
+ add r3, r4, #0x0
+ bl FUN_02017F18
+ ldr r1, _0208A0B0 ; =0x00006C21
+ mov r0, #0x0
+ bl FUN_02017FE4
+ ldr r1, _0208A0B0 ; =0x00006C21
+ mov r0, #0x4
+ bl FUN_02017FE4
+ mov r0, #0x1
+ mov r1, #0x1a
+ mov r2, #0x5
+ add r3, r4, #0x0
+ bl FUN_0200A86C
+ add r6, r0, #0x0
+ mov r0, #0x6
+ lsl r0, r0, #0x6
+ add r1, r4, #0x0
+ bl FUN_020219F4
+ add r4, r0, #0x0
+ bl FUN_0201BD5C
+ ldr r2, _0208A0B4 ; =0x020FF3E4
+ add r0, r5, #0x0
+ add r1, sp, #0xc
+ bl FUN_02019150
+ mov r0, #0xd0
+ str r0, [sp, #0x0]
+ mov r0, #0x90
+ mov r2, #0x0
+ str r0, [sp, #0x4]
+ add r0, sp, #0xc
+ mov r1, #0xf
+ add r3, r2, #0x0
+ bl FUN_020196F4
+ ldr r2, _0208A0AC ; =0x000001F7
+ add r0, sp, #0xc
+ mov r1, #0x0
+ mov r3, #0x2
+ bl FUN_0200CCA4
+ add r0, r6, #0x0
+ mov r1, #0x1
+ add r2, r4, #0x0
+ bl FUN_0200A8E0
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ str r1, [sp, #0x4]
+ add r0, sp, #0xc
+ add r2, r4, #0x0
+ add r3, r1, #0x0
+ str r1, [sp, #0x8]
+ bl FUN_0201BD84
+ add r0, r4, #0x0
+ bl FUN_02021A20
+ bl FUN_0201E788
+ mov r0, #0x0
+ bl FUN_0200E394
+ mov r0, #0x1
+ bl FUN_0200E394
+ mov r0, #0x0
+ mov r1, #0x3f
+ mov r2, #0x3
+ bl FUN_0200A274
+ mov r4, #0x1
+_0208A078:
+ bl FUN_02000FE8
+ add r0, r4, #0x0
+ add r1, r4, #0x0
+ blx OS_WaitIrq
+ b _0208A078
+ nop
+_0208A088: .word 0xFFFFE0FF
+_0208A08C: .word 0x04001000
+_0208A090: .word 0x021C4918
+_0208A094: .word 0x04000050
+_0208A098: .word 0x04001050
+_0208A09C: .word 0xFFFF1FFF
+_0208A0A0: .word 0x020FF418
+_0208A0A4: .word 0x020FF3EC
+_0208A0A8: .word 0x020FF3FC
+_0208A0AC: .word 0x000001F7
+_0208A0B0: .word 0x00006C21
+_0208A0B4: .word 0x020FF3E4
+
+ thumb_func_start FUN_0208A0B8
+FUN_0208A0B8: ; 0x0208A0B8
+ push {r4-r7, lr}
+ sub sp, #0x1c
+ add r4, r0, #0x0
+ cmp r1, #0x0
+ bne _0208A0C6
+ mov r6, #0x1
+ b _0208A0C8
+_0208A0C6:
+ mov r6, #0x0
+_0208A0C8:
+ mov r0, #0x0
+ add r1, r0, #0x0
+ bl FUN_0200E3A0
+ mov r0, #0x1
+ mov r1, #0x0
+ bl FUN_0200E3A0
+ bl FUN_02015EF4
+ mov r0, #0x0
+ add r1, r0, #0x0
+ bl FUN_02015F10
+ mov r0, #0x0
+ add r1, r0, #0x0
+ bl FUN_02015F34
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ mov r2, #0x1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2, #0x0]
+ ldr r0, _0208A228 ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2, #0x0]
+ ldr r2, _0208A22C ; =0x04001000
+ ldr r1, [r2, #0x0]
+ and r0, r1
+ str r0, [r2, #0x0]
+ mov r0, #0x4
+ mov r1, #0x8
+ bl FUN_0201669C
+ ldr r0, _0208A230 ; =0x021C4918
+ mov r1, #0x0
+ strb r1, [r0, #0x5]
+ bl FUN_0201E7A0
+ ldr r3, _0208A234 ; =0x04000050
+ mov r1, #0x0
+ strh r1, [r3, #0x0]
+ ldr r0, _0208A238 ; =0x04001050
+ sub r3, #0x50
+ strh r1, [r0, #0x0]
+ ldr r2, [r3, #0x0]
+ ldr r1, _0208A23C ; =0xFFFF1FFF
+ sub r0, #0x50
+ and r2, r1
+ str r2, [r3, #0x0]
+ ldr r2, [r0, #0x0]
+ and r1, r2
+ str r1, [r0, #0x0]
+ ldr r0, _0208A240 ; =0x020FF474
+ bl FUN_0201E66C
+ add r0, r4, #0x0
+ bl FUN_02016B94
+ add r5, r0, #0x0
+ ldr r0, _0208A244 ; =0x020FF448
+ bl FUN_02016BBC
+ mov r1, #0x0
+ ldr r2, _0208A248 ; =0x020FF458
+ add r0, r5, #0x0
+ add r3, r1, #0x0
+ bl FUN_02016C18
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_02018744
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ ldr r2, _0208A24C ; =0x000001F7
+ add r0, r5, #0x0
+ mov r3, #0x2
+ str r4, [sp, #0x4]
+ bl FUN_0200CB00
+ mov r0, #0x0
+ mov r1, #0x20
+ add r2, r4, #0x0
+ bl FUN_02002ED0
+ mov r0, #0x0
+ mov r1, #0x20
+ add r2, r0, #0x0
+ add r3, r4, #0x0
+ bl FUN_02017F18
+ ldr r1, _0208A250 ; =0x00006C21
+ mov r0, #0x0
+ bl FUN_02017FE4
+ ldr r1, _0208A250 ; =0x00006C21
+ mov r0, #0x4
+ bl FUN_02017FE4
+ mov r0, #0x1
+ mov r1, #0x1a
+ mov r2, #0x6
+ add r3, r4, #0x0
+ bl FUN_0200A86C
+ add r7, r0, #0x0
+ mov r0, #0x6
+ lsl r0, r0, #0x6
+ add r1, r4, #0x0
+ bl FUN_020219F4
+ add r4, r0, #0x0
+ bl FUN_0201BD5C
+ ldr r2, _0208A254 ; =0x020FF440
+ add r0, r5, #0x0
+ add r1, sp, #0xc
+ bl FUN_02019150
+ mov r0, #0xd0
+ str r0, [sp, #0x0]
+ mov r0, #0x90
+ mov r2, #0x0
+ str r0, [sp, #0x4]
+ add r0, sp, #0xc
+ mov r1, #0xf
+ add r3, r2, #0x0
+ bl FUN_020196F4
+ ldr r2, _0208A24C ; =0x000001F7
+ add r0, sp, #0xc
+ mov r1, #0x0
+ mov r3, #0x2
+ bl FUN_0200CCA4
+ add r0, r7, #0x0
+ add r1, r6, #0x0
+ add r2, r4, #0x0
+ bl FUN_0200A8E0
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ str r1, [sp, #0x4]
+ add r0, sp, #0xc
+ add r2, r4, #0x0
+ add r3, r1, #0x0
+ str r1, [sp, #0x8]
+ bl FUN_0201BD84
+ add r0, r4, #0x0
+ bl FUN_02021A20
+ bl FUN_0201E788
+ mov r0, #0x0
+ bl FUN_0200E394
+ mov r0, #0x1
+ bl FUN_0200E394
+ mov r0, #0x0
+ mov r1, #0x3f
+ mov r2, #0x3
+ bl FUN_0200A274
+ mov r4, #0x1
+_0208A21A:
+ bl FUN_02000FE8
+ add r0, r4, #0x0
+ add r1, r4, #0x0
+ blx OS_WaitIrq
+ b _0208A21A
+ .balign 4
+_0208A228: .word 0xFFFFE0FF
+_0208A22C: .word 0x04001000
+_0208A230: .word 0x021C4918
+_0208A234: .word 0x04000050
+_0208A238: .word 0x04001050
+_0208A23C: .word 0xFFFF1FFF
+_0208A240: .word 0x020FF474
+_0208A244: .word 0x020FF448
+_0208A248: .word 0x020FF458
+_0208A24C: .word 0x000001F7
+_0208A250: .word 0x00006C21
+_0208A254: .word 0x020FF440
+
+ thumb_func_start FUN_0208A258
+FUN_0208A258: ; 0x0208A258
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl FUN_02046528
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldr r0, _0208A290 ; =0x0000022F
+ ldrb r0, [r4, r0]
+ cmp r0, #0x10
+ beq _0208A278
+ cmp r0, #0x11
+ beq _0208A286
+ b _0208A28C
+_0208A278:
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ bl FUN_0208A294
+ ldr r1, _0208A290 ; =0x0000022F
+ strb r0, [r4, r1]
+ b _0208A28C
+_0208A286:
+ add r0, r5, #0x0
+ bl FUN_0208A2C4
+_0208A28C:
+ mov r0, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+_0208A290: .word 0x0000022F
+
+ thumb_func_start FUN_0208A294
+FUN_0208A294: ; 0x0208A294
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_0204647C
+ cmp r0, #0x0
+ beq _0208A2A6
+ mov r0, #0x10
+ pop {r3-r5, pc}
+_0208A2A6:
+ ldr r0, [r4, #0x4]
+ bl FUN_0206E394
+ mov r1, #0x9
+ lsl r1, r1, #0x6
+ strb r0, [r4, r1]
+ ldr r0, [r4, #0x4]
+ bl FUN_02016A18
+ add r0, r5, #0x0
+ bl FUN_0204649C
+ mov r0, #0x11
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_0208A2C4
+FUN_0208A2C4: ; 0x0208A2C4
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl FUN_02046528
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ bl FUN_020464A4
+ cmp r0, #0x0
+ beq _0208A2F6
+ mov r0, #0x1
+ bl FUN_021D7CA4
+ ldr r1, _0208A2F8 ; =0x0223D4AD
+ add r0, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_020463EC
+ ldr r0, _0208A2FC ; =0x0000022F
+ mov r1, #0x12
+ strb r1, [r4, r0]
+_0208A2F6:
+ pop {r4-r6, pc}
+ .balign 4
+_0208A2F8: .word 0x0223D4AD
+_0208A2FC: .word 0x0000022F
+
+ thumb_func_start FUN_0208A300
+FUN_0208A300: ; 0x0208A300
+ push {r3, lr}
+ mov r1, #0x8
+ bl FUN_02016998
+ mov r1, #0x0
+ strb r1, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ strb r1, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ strb r1, [r0, #0x4]
+ strb r1, [r0, #0x5]
+ strb r1, [r0, #0x6]
+ strb r1, [r0, #0x7]
+ mov r1, #0x2
+ str r1, [r0, #0x4]
+ pop {r3, pc}
+
+ thumb_func_start FUN_0208A320
+FUN_0208A320: ; 0x0208A320
+ ldr r3, _0208A324 ; =FUN_02016A18
+ bx r3
+ .balign 4
+_0208A324: .word FUN_02016A18
+
+ thumb_func_start FUN_0208A328
+FUN_0208A328: ; 0x0208A328
+ ldr r0, [r0, #0x0]
+ bx lr
+
+ thumb_func_start FUN_0208A32C
+FUN_0208A32C: ; 0x0208A32C
+ str r1, [r0, #0x0]
+ bx lr
+
+ thumb_func_start FUN_0208A330
+FUN_0208A330: ; 0x0208A330
+ ldr r0, [r0, #0x4]
+ bx lr
+
+ thumb_func_start FUN_0208A334
+FUN_0208A334: ; 0x0208A334
+ str r1, [r0, #0x4]
+ bx lr
+
+ thumb_func_start FUN_0208A338
+FUN_0208A338: ; 0x0208A338
+ push {r4-r6, lr}
+ add r6, r0, #0x0
+ bl FUN_02046528
+ add r5, r0, #0x0
+ mov r0, #0x20
+ mov r1, #0x6c
+ bl FUN_02016998
+ add r4, r0, #0x0
+ mov r0, #0x19
+ str r5, [r4, #0x0]
+ lsl r0, r0, #0x4
+ mov r1, #0x20
+ bl FUN_020219F4
+ str r0, [r4, #0x4]
+ mov r0, #0x19
+ lsl r0, r0, #0x4
+ mov r1, #0x20
+ bl FUN_020219F4
+ str r0, [r4, #0x8]
+ mov r0, #0x20
+ bl FUN_0200AA80
+ str r0, [r4, #0xc]
+ ldr r2, _0208A3C0 ; =0x00000171
+ mov r0, #0x1
+ mov r1, #0x1a
+ mov r3, #0x20
+ bl FUN_0200A86C
+ str r0, [r4, #0x10]
+ mov r0, #0x20
+ bl FUN_02013690
+ str r0, [r4, #0x14]
+ ldr r2, [r4, #0x0]
+ mov r0, #0x2
+ ldr r2, [r2, #0xc]
+ mov r1, #0x0
+ mov r3, #0x20
+ bl FUN_02085338
+ str r0, [r4, #0x50]
+ bl FUN_020853DC
+ add r0, r4, #0x0
+ add r0, #0x18
+ bl FUN_0201901C
+ add r0, r4, #0x0
+ add r0, #0x28
+ bl FUN_0201901C
+ add r0, r4, #0x0
+ add r0, #0x38
+ bl FUN_0201901C
+ mov r0, #0x0
+ str r0, [r4, #0x54]
+ ldr r1, _0208A3C4 ; =FUN_0208A458
+ add r0, r6, #0x0
+ add r2, r4, #0x0
+ bl FUN_0204640C
+ pop {r4-r6, pc}
+ .balign 4
+_0208A3C0: .word 0x00000171
+_0208A3C4: .word FUN_0208A458
+
+ thumb_func_start FUN_0208A3C8
+FUN_0208A3C8: ; 0x0208A3C8
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x50]
+ bl FUN_020853A8
+ ldr r0, [r4, #0x14]
+ bl FUN_020136C0
+ ldr r0, [r4, #0x4]
+ bl FUN_02021A20
+ ldr r0, [r4, #0x8]
+ bl FUN_02021A20
+ ldr r0, [r4, #0xc]
+ bl FUN_0200AB18
+ ldr r0, [r4, #0x10]
+ bl FUN_0200A8B8
+ add r0, r4, #0x0
+ bl FUN_0208A400
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0208A400
+FUN_0208A400: ; 0x0208A400
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, #0x18
+ bl FUN_02019048
+ cmp r0, #0x0
+ beq _0208A41E
+ add r0, r4, #0x0
+ add r0, #0x18
+ bl FUN_02019178
+ add r0, r4, #0x0
+ add r0, #0x18
+ bl FUN_0201901C
+_0208A41E:
+ add r0, r4, #0x0
+ add r0, #0x28
+ bl FUN_02019048
+ cmp r0, #0x0
+ beq _0208A43A
+ add r0, r4, #0x0
+ add r0, #0x28
+ bl FUN_02019178
+ add r0, r4, #0x0
+ add r0, #0x28
+ bl FUN_0201901C
+_0208A43A:
+ add r0, r4, #0x0
+ add r0, #0x38
+ bl FUN_02019048
+ cmp r0, #0x0
+ beq _0208A456
+ add r0, r4, #0x0
+ add r0, #0x38
+ bl FUN_02019178
+ add r4, #0x38
+ add r0, r4, #0x0
+ bl FUN_0201901C
+_0208A456:
+ pop {r4, pc}
+
+ thumb_func_start FUN_0208A458
+FUN_0208A458: ; 0x0208A458
+ push {r3-r5, lr}
+ bl FUN_0204652C
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x54]
+ cmp r1, #0xd
+ bhi _0208A4A4
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0208A472: ; jump table (using 16-bit offset)
+ .short _0208A48E - _0208A472 - 2; case 0
+ .short _0208A49C - _0208A472 - 2; case 1
+ .short _0208A4B8 - _0208A472 - 2; case 2
+ .short _0208A556 - _0208A472 - 2; case 3
+ .short _0208A566 - _0208A472 - 2; case 4
+ .short _0208A57A - _0208A472 - 2; case 5
+ .short _0208A5A6 - _0208A472 - 2; case 6
+ .short _0208A5BE - _0208A472 - 2; case 7
+ .short _0208A5D4 - _0208A472 - 2; case 8
+ .short _0208A614 - _0208A472 - 2; case 9
+ .short _0208A628 - _0208A472 - 2; case 10
+ .short _0208A694 - _0208A472 - 2; case 11
+ .short _0208A6A2 - _0208A472 - 2; case 12
+ .short _0208A6C0 - _0208A472 - 2; case 13
+_0208A48E:
+ mov r1, #0x0
+ add r2, r1, #0x0
+ bl FUN_0208A6D4
+ mov r0, #0x1
+ str r0, [r4, #0x54]
+ b _0208A6C8
+_0208A49C:
+ bl FUN_0208A750
+ cmp r0, #0x0
+ bne _0208A4A6
+_0208A4A4:
+ b _0208A6C8
+_0208A4A6:
+ add r0, r4, #0x0
+ bl FUN_0208A760
+ add r0, r4, #0x0
+ bl FUN_0208A77C
+ mov r0, #0x2
+ str r0, [r4, #0x54]
+ b _0208A6C8
+_0208A4B8:
+ bl FUN_0208A8DC
+ mov r1, #0x0
+ mvn r1, r1
+ str r0, [r4, #0x64]
+ cmp r0, r1
+ beq _0208A5B0
+ add r0, r4, #0x0
+ bl FUN_0208A820
+ ldr r0, [r4, #0x64]
+ cmp r0, #0x4
+ bhi _0208A5B0
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0208A4DE: ; jump table (using 16-bit offset)
+ .short _0208A4E8 - _0208A4DE - 2; case 0
+ .short _0208A502 - _0208A4DE - 2; case 1
+ .short _0208A51C - _0208A4DE - 2; case 2
+ .short _0208A536 - _0208A4DE - 2; case 3
+ .short _0208A550 - _0208A4DE - 2; case 4
+_0208A4E8:
+ ldr r0, [r4, #0x0]
+ mov r1, #0x0
+ ldr r0, [r0, #0xc]
+ bl FUN_0202A5F4
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x48
+ bl FUN_02013960
+ mov r0, #0x3
+ str r0, [r4, #0x54]
+ b _0208A6C8
+_0208A502:
+ ldr r0, [r4, #0x0]
+ mov r1, #0x1
+ ldr r0, [r0, #0xc]
+ bl FUN_0202A5F4
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x48
+ bl FUN_02013960
+ mov r0, #0x3
+ str r0, [r4, #0x54]
+ b _0208A6C8
+_0208A51C:
+ ldr r0, [r4, #0x0]
+ mov r1, #0x2
+ ldr r0, [r0, #0xc]
+ bl FUN_0202A5F4
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x48
+ bl FUN_02013960
+ mov r0, #0x3
+ str r0, [r4, #0x54]
+ b _0208A6C8
+_0208A536:
+ ldr r0, [r4, #0x0]
+ mov r1, #0x3
+ ldr r0, [r0, #0xc]
+ bl FUN_0202A5F4
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x48
+ bl FUN_02013960
+ mov r0, #0x3
+ str r0, [r4, #0x54]
+ b _0208A6C8
+_0208A550:
+ mov r0, #0xb
+ str r0, [r4, #0x54]
+ b _0208A6C8
+_0208A556:
+ ldr r1, [r4, #0x64]
+ mov r2, #0x0
+ add r1, r1, #0x1
+ bl FUN_0208A6D4
+ mov r0, #0x4
+ str r0, [r4, #0x54]
+ b _0208A6C8
+_0208A566:
+ bl FUN_0208A750
+ cmp r0, #0x0
+ beq _0208A5B0
+ mov r0, #0x0
+ bl FUN_021D7CA4
+ mov r0, #0x5
+ str r0, [r4, #0x54]
+ b _0208A6C8
+_0208A57A:
+ bl FUN_0200E308
+ cmp r0, #0x0
+ beq _0208A5B0
+ add r1, r4, #0x0
+ ldr r0, [r4, #0x50]
+ add r1, #0x48
+ bl FUN_020853BC
+ ldr r0, [r4, #0x50]
+ bl FUN_020853D0
+ add r0, r4, #0x0
+ bl FUN_0208A400
+ ldr r0, [r4, #0x0]
+ ldr r1, [r4, #0x50]
+ bl FUN_02037E80
+ mov r0, #0x6
+ str r0, [r4, #0x54]
+ b _0208A6C8
+_0208A5A6:
+ ldr r0, [r4, #0x0]
+ bl FUN_0204647C
+ cmp r0, #0x0
+ beq _0208A5B2
+_0208A5B0:
+ b _0208A6C8
+_0208A5B2:
+ ldr r0, [r4, #0x0]
+ bl FUN_0204649C
+ mov r0, #0x7
+ str r0, [r4, #0x54]
+ b _0208A6C8
+_0208A5BE:
+ ldr r0, [r4, #0x0]
+ bl FUN_020464A4
+ cmp r0, #0x0
+ beq _0208A6C8
+ mov r0, #0x1
+ bl FUN_021D7CA4
+ mov r0, #0x8
+ str r0, [r4, #0x54]
+ b _0208A6C8
+_0208A5D4:
+ bl FUN_0200E308
+ cmp r0, #0x0
+ beq _0208A6C8
+ ldr r0, [r4, #0x50]
+ bl FUN_020853E4
+ cmp r0, #0x0
+ beq _0208A5EC
+ mov r0, #0xb
+ str r0, [r4, #0x54]
+ b _0208A6C8
+_0208A5EC:
+ add r1, r4, #0x0
+ ldr r0, [r4, #0x50]
+ add r1, #0x48
+ bl FUN_020853FC
+ ldr r0, [r4, #0x0]
+ add r2, r4, #0x0
+ ldr r0, [r0, #0xc]
+ ldr r1, [r4, #0x64]
+ add r2, #0x48
+ bl FUN_0202A5D4
+ add r0, r4, #0x0
+ mov r1, #0x6
+ mov r2, #0x0
+ bl FUN_0208A6D4
+ mov r0, #0x9
+ str r0, [r4, #0x54]
+ b _0208A6C8
+_0208A614:
+ bl FUN_0208A750
+ cmp r0, #0x0
+ beq _0208A6C8
+ add r0, r4, #0x0
+ bl FUN_0208A82C
+ mov r0, #0xa
+ str r0, [r4, #0x54]
+ b _0208A6C8
+_0208A628:
+ bl FUN_0208A8DC
+ mov r1, #0x0
+ mvn r1, r1
+ str r0, [r4, #0x64]
+ cmp r0, r1
+ beq _0208A6C8
+ cmp r0, #0x0
+ beq _0208A63E
+ cmp r0, #0x1
+ b _0208A656
+_0208A63E:
+ add r0, r4, #0x0
+ bl FUN_0208A8D0
+ add r0, r4, #0x0
+ bl FUN_0208A760
+ add r0, r4, #0x0
+ bl FUN_0208A77C
+ mov r0, #0x2
+ str r0, [r4, #0x54]
+ b _0208A6C8
+_0208A656:
+ add r0, r4, #0x0
+ add r0, #0x48
+ mov r1, #0x0
+ bl FUN_02013918
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_0208A8D0
+ ldr r0, _0208A6CC ; =0x0000FFFF
+ cmp r5, r0
+ beq _0208A684
+ ldr r0, [r4, #0xc]
+ mov r1, #0x0
+ add r2, r5, #0x0
+ bl FUN_0200B518
+ add r0, r4, #0x0
+ mov r1, #0x8
+ mov r2, #0x1
+ bl FUN_0208A6D4
+ b _0208A68E
+_0208A684:
+ add r0, r4, #0x0
+ mov r1, #0x7
+ mov r2, #0x0
+ bl FUN_0208A6D4
+_0208A68E:
+ mov r0, #0xc
+ str r0, [r4, #0x54]
+ b _0208A6C8
+_0208A694:
+ mov r1, #0x5
+ mov r2, #0x0
+ bl FUN_0208A6D4
+ mov r0, #0xc
+ str r0, [r4, #0x54]
+ b _0208A6C8
+_0208A6A2:
+ bl FUN_0208A750
+ cmp r0, #0x0
+ beq _0208A6C8
+ ldr r0, _0208A6D0 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0xf3
+ tst r0, r1
+ beq _0208A6C8
+ add r0, r4, #0x0
+ bl FUN_0208A760
+ mov r0, #0xd
+ str r0, [r4, #0x54]
+ b _0208A6C8
+_0208A6C0:
+ bl FUN_0208A3C8
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_0208A6C8:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+_0208A6CC: .word 0x0000FFFF
+_0208A6D0: .word 0x021C48B8
+
+ thumb_func_start FUN_0208A6D4
+FUN_0208A6D4: ; 0x0208A6D4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r5, #0x0
+ add r4, #0x18
+ cmp r2, #0x0
+ ldr r0, [r5, #0x10]
+ beq _0208A6F4
+ ldr r2, [r5, #0x4]
+ bl FUN_0200A8E0
+ ldr r0, [r5, #0xc]
+ ldr r1, [r5, #0x8]
+ ldr r2, [r5, #0x4]
+ bl FUN_0200B7B8
+ b _0208A6FA
+_0208A6F4:
+ ldr r2, [r5, #0x8]
+ bl FUN_0200A8E0
+_0208A6FA:
+ add r0, r4, #0x0
+ bl FUN_02019048
+ cmp r0, #0x0
+ bne _0208A722
+ ldr r0, [r5, #0x0]
+ add r1, r4, #0x0
+ ldr r0, [r0, #0x8]
+ mov r2, #0x3
+ bl FUN_020545B8
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl LoadPlayerDataAddress
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02054608
+ b _0208A734
+_0208A722:
+ add r0, r4, #0x0
+ bl FUN_0205464C
+ ldr r2, _0208A74C ; =0x000003E2
+ add r0, r4, #0x0
+ mov r1, #0x0
+ mov r3, #0xa
+ bl FUN_0200D0BC
+_0208A734:
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0xc]
+ bl LoadPlayerDataAddress
+ add r2, r0, #0x0
+ ldr r1, [r5, #0x8]
+ add r0, r4, #0x0
+ mov r3, #0x1
+ bl FUN_02054658
+ str r0, [r5, #0x58]
+ pop {r3-r5, pc}
+ .balign 4
+_0208A74C: .word 0x000003E2
+
+ thumb_func_start FUN_0208A750
+FUN_0208A750: ; 0x0208A750
+ ldr r0, [r0, #0x58]
+ ldr r3, _0208A75C ; =FUN_020546C8
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bx r3
+ nop
+_0208A75C: .word FUN_020546C8
+
+ thumb_func_start FUN_0208A760
+FUN_0208A760: ; 0x0208A760
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r4, #0x18
+ add r0, r4, #0x0
+ bl FUN_02019048
+ cmp r0, #0x0
+ beq _0208A778
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_0200D0E0
+_0208A778:
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0208A77C
+FUN_0208A77C: ; 0x0208A77C
+ push {r4-r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0x0
+ add r7, r5, #0x0
+ add r7, #0x28
+ add r0, r7, #0x0
+ bl FUN_02019048
+ cmp r0, #0x0
+ bne _0208A808
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x20
+ str r0, [sp, #0x4]
+ ldr r0, [r5, #0x0]
+ mov r1, #0x3
+ ldr r0, [r0, #0x8]
+ mov r2, #0xa5
+ mov r3, #0xb
+ bl FUN_0200CB00
+ mov r1, #0xd
+ str r1, [sp, #0x0]
+ mov r0, #0xe
+ str r0, [sp, #0x4]
+ mov r0, #0xa
+ str r0, [sp, #0x8]
+ str r1, [sp, #0xc]
+ mov r0, #0x1
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x0]
+ add r1, r7, #0x0
+ ldr r0, [r0, #0x8]
+ mov r2, #0x3
+ mov r3, #0x11
+ bl FUN_02019064
+ add r0, r7, #0x0
+ mov r1, #0xf
+ bl FUN_02019620
+ mov r6, #0x0
+ add r4, r6, #0x0
+_0208A7D2:
+ add r1, r6, #0x0
+ ldr r0, [r5, #0x10]
+ ldr r2, [r5, #0x8]
+ add r1, #0x9
+ bl FUN_0200A8E0
+ str r4, [sp, #0x0]
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ str r0, [sp, #0x8]
+ ldr r2, [r5, #0x8]
+ add r0, r7, #0x0
+ mov r1, #0x0
+ mov r3, #0xc
+ bl FUN_0201BD84
+ add r6, r6, #0x1
+ add r4, #0x10
+ cmp r6, #0x5
+ blt _0208A7D2
+ mov r2, #0x0
+ ldr r0, [r5, #0x14]
+ add r1, r7, #0x0
+ add r3, r2, #0x0
+ bl FUN_020136F8
+_0208A808:
+ str r7, [r5, #0x68]
+ mov r1, #0x0
+ str r1, [r5, #0x5c]
+ mov r0, #0x5
+ str r0, [r5, #0x60]
+ add r0, r7, #0x0
+ mov r2, #0xa5
+ mov r3, #0xb
+ bl FUN_0200CCA4
+ add sp, #0x14
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_0208A820
+FUN_0208A820: ; 0x0208A820
+ ldr r3, _0208A828 ; =FUN_0200CCF8
+ add r0, #0x28
+ mov r1, #0x1
+ bx r3
+ .balign 4
+_0208A828: .word FUN_0200CCF8
+
+ thumb_func_start FUN_0208A82C
+FUN_0208A82C: ; 0x0208A82C
+ push {r4-r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0x0
+ add r7, r5, #0x0
+ add r7, #0x38
+ add r0, r7, #0x0
+ bl FUN_02019048
+ cmp r0, #0x0
+ bne _0208A8B8
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ mov r0, #0x20
+ str r0, [sp, #0x4]
+ ldr r0, [r5, #0x0]
+ mov r1, #0x3
+ ldr r0, [r0, #0x8]
+ mov r2, #0xa5
+ mov r3, #0xb
+ bl FUN_0200CB00
+ mov r1, #0xd
+ str r1, [sp, #0x0]
+ mov r0, #0x6
+ str r0, [sp, #0x4]
+ mov r0, #0x4
+ str r0, [sp, #0x8]
+ str r1, [sp, #0xc]
+ mov r0, #0x8d
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x0]
+ add r1, r7, #0x0
+ ldr r0, [r0, #0x8]
+ mov r2, #0x3
+ mov r3, #0x19
+ bl FUN_02019064
+ add r0, r7, #0x0
+ mov r1, #0xf
+ bl FUN_02019620
+ mov r6, #0x0
+ add r4, r6, #0x0
+_0208A882:
+ add r1, r6, #0x0
+ ldr r0, [r5, #0x10]
+ ldr r2, [r5, #0x8]
+ add r1, #0xe
+ bl FUN_0200A8E0
+ str r4, [sp, #0x0]
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ str r0, [sp, #0x8]
+ ldr r2, [r5, #0x8]
+ add r0, r7, #0x0
+ mov r1, #0x0
+ mov r3, #0xc
+ bl FUN_0201BD84
+ add r6, r6, #0x1
+ add r4, #0x10
+ cmp r6, #0x2
+ blt _0208A882
+ mov r2, #0x0
+ ldr r0, [r5, #0x14]
+ add r1, r7, #0x0
+ add r3, r2, #0x0
+ bl FUN_020136F8
+_0208A8B8:
+ str r7, [r5, #0x68]
+ mov r1, #0x0
+ str r1, [r5, #0x5c]
+ mov r0, #0x2
+ str r0, [r5, #0x60]
+ add r0, r7, #0x0
+ mov r2, #0xa5
+ mov r3, #0xb
+ bl FUN_0200CCA4
+ add sp, #0x14
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_0208A8D0
+FUN_0208A8D0: ; 0x0208A8D0
+ ldr r3, _0208A8D8 ; =FUN_0200CCF8
+ add r0, #0x38
+ mov r1, #0x1
+ bx r3
+ .balign 4
+_0208A8D8: .word FUN_0200CCF8
+
+ thumb_func_start FUN_0208A8DC
+FUN_0208A8DC: ; 0x0208A8DC
+ push {r4, lr}
+ sub sp, #0x8
+ add r4, r0, #0x0
+ ldr r0, _0208A990 ; =0x021C48B8
+ mov r1, #0x40
+ ldr r0, [r0, #0x48]
+ tst r1, r0
+ beq _0208A906
+ ldr r0, [r4, #0x5c]
+ sub r0, r0, #0x1
+ str r0, [r4, #0x5c]
+ bpl _0208A954
+ ldr r0, [r4, #0x60]
+ cmp r0, #0x2
+ ble _0208A900
+ sub r0, r0, #0x1
+ str r0, [r4, #0x5c]
+ b _0208A954
+_0208A900:
+ mov r0, #0x0
+ str r0, [r4, #0x5c]
+ b _0208A954
+_0208A906:
+ mov r1, #0x80
+ tst r1, r0
+ beq _0208A928
+ ldr r0, [r4, #0x5c]
+ add r1, r0, #0x1
+ str r1, [r4, #0x5c]
+ ldr r0, [r4, #0x60]
+ cmp r1, r0
+ blt _0208A954
+ cmp r0, #0x2
+ ble _0208A922
+ mov r0, #0x0
+ str r0, [r4, #0x5c]
+ b _0208A954
+_0208A922:
+ sub r0, r0, #0x1
+ str r0, [r4, #0x5c]
+ b _0208A954
+_0208A928:
+ mov r1, #0x1
+ tst r1, r0
+ beq _0208A93A
+ ldr r0, _0208A994 ; =0x000005DC
+ bl FUN_020054C8
+ add sp, #0x8
+ ldr r0, [r4, #0x5c]
+ pop {r4, pc}
+_0208A93A:
+ mov r1, #0x2
+ tst r0, r1
+ beq _0208A94E
+ ldr r0, _0208A994 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r0, [r4, #0x60]
+ add sp, #0x8
+ sub r0, r0, #0x1
+ pop {r4, pc}
+_0208A94E:
+ add sp, #0x8
+ sub r0, r1, #0x3
+ pop {r4, pc}
+_0208A954:
+ ldr r0, [r4, #0x68]
+ mov r1, #0xc
+ str r1, [sp, #0x0]
+ ldrb r1, [r0, #0x8]
+ mov r2, #0x0
+ add r3, r2, #0x0
+ lsl r1, r1, #0x13
+ lsr r1, r1, #0x10
+ str r1, [sp, #0x4]
+ mov r1, #0xf
+ bl FUN_020196F4
+ ldr r3, [r4, #0x5c]
+ ldr r0, [r4, #0x14]
+ ldr r1, [r4, #0x68]
+ mov r2, #0x0
+ lsl r3, r3, #0x4
+ bl FUN_020136F8
+ ldr r0, [r4, #0x68]
+ bl FUN_02019548
+ ldr r0, _0208A994 ; =0x000005DC
+ bl FUN_020054C8
+ mov r0, #0x0
+ mvn r0, r0
+ add sp, #0x8
+ pop {r4, pc}
+ nop
+_0208A990: .word 0x021C48B8
+_0208A994: .word 0x000005DC
+
+ thumb_func_start FUN_0208A998
+FUN_0208A998: ; 0x0208A998
+ ldr r3, _0208A9AC ; =0x027E0000
+ ldr r1, _0208A9B0 ; =0x00003FF8
+ mov r0, #0x1
+ ldr r2, [r3, r1]
+ orr r0, r2
+ str r0, [r3, r1]
+ ldr r3, _0208A9B4 ; =MI_WaitDma
+ mov r0, #0x3
+ bx r3
+ nop
+_0208A9AC: .word 0x027E0000
+_0208A9B0: .word 0x00003FF8
+_0208A9B4: .word MI_WaitDma
+
+ thumb_func_start FUN_0208A9B8
+FUN_0208A9B8: ; 0x0208A9B8
+ push {r4-r7, lr}
+ sub sp, #0x24
+ ldr r0, _0208ABC8 ; =0x021C8C58
+ ldr r1, [r0, #0x0]
+ cmp r1, #0x1
+ bne _0208A9C6
+ b _0208ABC4
+_0208A9C6:
+ mov r1, #0x1
+ str r1, [r0, #0x0]
+ mov r0, #0x0
+ blx OS_GetInitArenaHi
+ add r1, r0, #0x0
+ mov r0, #0x0
+ blx OS_SetArenaHi
+ mov r0, #0x0
+ blx OS_GetInitArenaLo
+ add r1, r0, #0x0
+ mov r0, #0x0
+ blx OS_SetArenaLo
+ mov r1, #0x1
+ ldr r0, _0208ABCC ; =0x020FF4A4
+ add r2, r1, #0x0
+ mov r3, #0x0
+ bl FUN_020166C8
+ mov r0, #0x0
+ add r1, r0, #0x0
+ bl FUN_0200E3A0
+ mov r0, #0x1
+ mov r1, #0x0
+ bl FUN_0200E3A0
+ mov r0, #0x1
+ blx OS_DisableIrqMask
+ ldr r1, _0208ABD0 ; =FUN_0208A998
+ mov r0, #0x1
+ blx OS_SetIrqFunction
+ mov r0, #0x1
+ blx OS_EnableIrqMask
+ mov r0, #0x0
+ add r1, r0, #0x0
+ bl FUN_02015F10
+ mov r0, #0x0
+ add r1, r0, #0x0
+ bl FUN_02015F34
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ mov r2, #0x1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2, #0x0]
+ ldr r0, _0208ABD4 ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2, #0x0]
+ ldr r2, _0208ABD8 ; =0x04001000
+ ldr r1, [r2, #0x0]
+ and r0, r1
+ str r0, [r2, #0x0]
+ mov r0, #0x4
+ mov r1, #0x8
+ bl FUN_0201669C
+ ldr r0, _0208ABDC ; =0x021C4918
+ mov r1, #0x0
+ strb r1, [r0, #0x5]
+ bl FUN_0201E7A0
+ ldr r3, _0208ABE0 ; =0x04000050
+ mov r0, #0x0
+ strh r0, [r3, #0x0]
+ ldr r2, _0208ABE4 ; =0x04001050
+ sub r3, #0x50
+ strh r0, [r2, #0x0]
+ ldr r1, [r3, #0x0]
+ ldr r0, _0208ABE8 ; =0xFFFF1FFF
+ sub r2, #0x50
+ and r1, r0
+ str r1, [r3, #0x0]
+ ldr r1, [r2, #0x0]
+ and r0, r1
+ str r0, [r2, #0x0]
+ ldr r0, _0208ABEC ; =0x020FF4D8
+ bl FUN_0201E66C
+ mov r0, #0x0
+ bl FUN_02016B94
+ str r0, [sp, #0x10]
+ ldr r0, _0208ABF0 ; =0x020FF4AC
+ bl FUN_02016BBC
+ mov r1, #0x0
+ ldr r0, [sp, #0x10]
+ ldr r2, _0208ABF4 ; =0x020FF4BC
+ add r3, r1, #0x0
+ bl FUN_02016C18
+ ldr r0, [sp, #0x10]
+ mov r1, #0x0
+ bl FUN_02018744
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ ldr r0, [sp, #0x10]
+ ldr r2, _0208ABF8 ; =0x000001F7
+ mov r3, #0x2
+ str r1, [sp, #0x4]
+ bl FUN_0200CB00
+ mov r0, #0x0
+ mov r1, #0x20
+ add r2, r0, #0x0
+ bl FUN_02002ED0
+ mov r0, #0x0
+ mov r1, #0x20
+ add r2, r0, #0x0
+ add r3, r0, #0x0
+ bl FUN_02017F18
+ ldr r1, _0208ABFC ; =0x00006C21
+ mov r0, #0x0
+ bl FUN_02017FE4
+ ldr r1, _0208ABFC ; =0x00006C21
+ mov r0, #0x4
+ bl FUN_02017FE4
+ mov r0, #0x1
+ mov r1, #0x1a
+ mov r2, #0xc8
+ mov r3, #0x0
+ bl FUN_0200A86C
+ str r0, [sp, #0xc]
+ mov r0, #0x6
+ lsl r0, r0, #0x6
+ mov r1, #0x0
+ bl FUN_020219F4
+ add r4, r0, #0x0
+ bl FUN_0201BD5C
+ ldr r0, [sp, #0x10]
+ ldr r2, _0208AC00 ; =0x020FF49C
+ add r1, sp, #0x14
+ bl FUN_02019150
+ mov r0, #0xd0
+ str r0, [sp, #0x0]
+ mov r0, #0x90
+ mov r2, #0x0
+ str r0, [sp, #0x4]
+ add r0, sp, #0x14
+ mov r1, #0xf
+ add r3, r2, #0x0
+ bl FUN_020196F4
+ ldr r2, _0208ABF8 ; =0x000001F7
+ add r0, sp, #0x14
+ mov r1, #0x0
+ mov r3, #0x2
+ bl FUN_0200CCA4
+ ldr r0, [sp, #0xc]
+ mov r1, #0x3
+ add r2, r4, #0x0
+ bl FUN_0200A8E0
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ str r1, [sp, #0x4]
+ add r0, sp, #0x14
+ add r2, r4, #0x0
+ add r3, r1, #0x0
+ str r1, [sp, #0x8]
+ bl FUN_0201BD84
+ add r0, r4, #0x0
+ bl FUN_02021A20
+ bl FUN_0201E788
+ mov r0, #0x0
+ bl FUN_0200E394
+ mov r0, #0x1
+ bl FUN_0200E394
+ mov r0, #0x0
+ mov r1, #0x3f
+ mov r2, #0x3
+ bl FUN_0200A274
+ bl FUN_02032DAC
+ mov r4, #0x1
+_0208AB58:
+ bl FUN_02000FE8
+ bl FUN_0202FB80
+ bl FUN_02033678
+ cmp r0, #0x0
+ bne _0208AB72
+ add r0, r4, #0x0
+ add r1, r4, #0x0
+ blx OS_WaitIrq
+ b _0208AB58
+_0208AB72:
+ ldr r5, _0208AC04 ; =0x04000130
+ ldr r4, _0208AC08 ; =0x027FFFA8
+ ldr r7, _0208AC0C ; =0x00002FFF
+ mov r6, #0x1
+_0208AB7A:
+ bl FUN_02000FE8
+ ldrh r1, [r5, #0x0]
+ ldrh r0, [r4, #0x0]
+ orr r1, r0
+ ldr r0, _0208AC0C ; =0x00002FFF
+ eor r0, r1
+ and r0, r7
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ tst r0, r6
+ bne _0208AB9C
+ mov r0, #0x1
+ add r1, r0, #0x0
+ blx OS_WaitIrq
+ b _0208AB7A
+_0208AB9C:
+ ldr r1, _0208AC10 ; =0x00007FFF
+ mov r0, #0x0
+ bl FUN_0200E3A0
+ ldr r1, _0208AC10 ; =0x00007FFF
+ mov r0, #0x1
+ bl FUN_0200E3A0
+ add r0, sp, #0x14
+ bl FUN_02019178
+ ldr r0, [sp, #0xc]
+ bl FUN_0200A8B8
+ ldr r0, [sp, #0x10]
+ bl FUN_02016A18
+ mov r0, #0x0
+ blx OS_ResetSystem
+_0208ABC4:
+ add sp, #0x24
+ pop {r4-r7, pc}
+ .balign 4
+_0208ABC8: .word 0x021C8C58
+_0208ABCC: .word 0x020FF4A4
+_0208ABD0: .word FUN_0208A998
+_0208ABD4: .word 0xFFFFE0FF
+_0208ABD8: .word 0x04001000
+_0208ABDC: .word 0x021C4918
+_0208ABE0: .word 0x04000050
+_0208ABE4: .word 0x04001050
+_0208ABE8: .word 0xFFFF1FFF
+_0208ABEC: .word 0x020FF4D8
+_0208ABF0: .word 0x020FF4AC
+_0208ABF4: .word 0x020FF4BC
+_0208ABF8: .word 0x000001F7
+_0208ABFC: .word 0x00006C21
+_0208AC00: .word 0x020FF49C
+_0208AC04: .word 0x04000130
+_0208AC08: .word 0x027FFFA8
+_0208AC0C: .word 0x00002FFF
+_0208AC10: .word 0x00007FFF
diff --git a/asm/unk_10b724.s b/asm/unk_10b724.s
new file mode 100644
index 00000000..cfa5f27a
--- /dev/null
+++ b/asm/unk_10b724.s
@@ -0,0 +1,4 @@
+ .text
+ .word 0xdec00621
+ .word 0x00000b68
+ .word 0x00000000
diff --git a/data/fat.s b/data/fat.s
new file mode 100644
index 00000000..7188a59a
--- /dev/null
+++ b/data/fat.s
@@ -0,0 +1,359 @@
+ .text
+ .global FileAllocationTable
+FileAllocationTable:
+ .word 0x0010C400, 0x0010C420
+ .word 0x0010C600, 0x0010C620
+ .word 0x0010C800, 0x0010C820
+ .word 0x0010CA00, 0x0010CA20
+ .word 0x0010CC00, 0x001452E0
+ .word 0x00145400, 0x0016B5A0
+ .word 0x0016B600, 0x00184380
+ .word 0x00184400, 0x001876E0
+ .word 0x00187800, 0x001A2F60
+ .word 0x001A3000, 0x001AD1A0
+ .word 0x001AD200, 0x001AD220
+ .word 0x001AD400, 0x001DFDE0
+ .word 0x001DFE00, 0x001F9060
+ .word 0x001F9200, 0x00227DE0
+ .word 0x00227E00, 0x00237320
+ .word 0x00237400, 0x0023BA80
+ .word 0x0023BC00, 0x00264100
+ .word 0x00264200, 0x0026B080
+ .word 0x0026B200, 0x00282EE0
+ .word 0x00283000, 0x00283100
+ .word 0x00283200, 0x00285600
+ .word 0x00285600, 0x00285BC0
+ .word 0x00285C00, 0x00286B00
+ .word 0x00286C00, 0x00288500
+ .word 0x00288600, 0x00288FA0
+ .word 0x00289000, 0x00289560
+ .word 0x00289600, 0x00289E00
+ .word 0x00289E00, 0x0028A9A0
+ .word 0x0028AA00, 0x0028C180
+ .word 0x0028C200, 0x0028CB00
+ .word 0x0028CC00, 0x0028D200
+ .word 0x0028D200, 0x0028D800
+ .word 0x0028D800, 0x0028DCA0
+ .word 0x0028DE00, 0x0028E120
+ .word 0x0028E200, 0x0028E6C0
+ .word 0x0028E800, 0x0028F1A0
+ .word 0x0028F200, 0x0028FEC0
+ .word 0x00290000, 0x00290560
+ .word 0x00290600, 0x00291140
+ .word 0x00291200, 0x00291EC0
+ .word 0x00292000, 0x00292C60
+ .word 0x00292E00, 0x00293F40
+ .word 0x00294000, 0x00294900
+ .word 0x00294A00, 0x002953C0
+ .word 0x00295400, 0x002958A0
+ .word 0x00295A00, 0x00296340
+ .word 0x00296400, 0x00296720
+ .word 0x00296800, 0x002974A0
+ .word 0x00297600, 0x00297EA0
+ .word 0x00298000, 0x00298600
+ .word 0x00298600, 0x00298920
+ .word 0x00298A00, 0x002999C0
+ .word 0x00299A00, 0x00299E00
+ .word 0x00299E00, 0x0029C280
+ .word 0x0029C400, 0x0029E780
+ .word 0x0029E800, 0x002A1840
+ .word 0x002A1A00, 0x002A61A0
+ .word 0x002A6200, 0x002A8740
+ .word 0x002A8800, 0x002A9DA0
+ .word 0x002A9E00, 0x002ACA20
+ .word 0x002ACC00, 0x002AD900
+ .word 0x002ADA00, 0x002AEA80
+ .word 0x002AEC00, 0x002B29E0
+ .word 0x002B2A00, 0x002B74C0
+ .word 0x002B7600, 0x002B9240
+ .word 0x002B9400, 0x002BC400
+ .word 0x002BC400, 0x002BEA60
+ .word 0x002BEC00, 0x002C1040
+ .word 0x002C1200, 0x002C2800
+ .word 0x002C2800, 0x002C4BA0
+ .word 0x002C4C00, 0x002C5A20
+ .word 0x002C5C00, 0x002C9AC0
+ .word 0x002C9C00, 0x002C9C20
+ .word 0x002C9E00, 0x002CE8E0
+ .word 0x002CEA00, 0x002CFC20
+ .word 0x002CFE00, 0x002D5BE0
+ .word 0x002D5C00, 0x002D7A20
+ .word 0x002D7C00, 0x002D97E0
+ .word 0x002D9800, 0x002D9C60
+ .word 0x002D9E00, 0x002DF0C0
+ .word 0x002DF200, 0x002E9920
+ .word 0x002E9A00, 0x002EEF80
+ .word 0x002EF000, 0x002F1540
+ .word 0x002F1600, 0x002FF8A0
+ .word 0x002FFA00, 0x00303320
+ .word 0x00303400, 0x0030C500
+ .word 0x0030C600, 0x0030CE20
+ .word 0x03810200, 0x0381EF8C
+ .word 0x037B2400, 0x037D7674
+ .word 0x037D7800, 0x037D84C8
+ .word 0x037ACA00, 0x037B2218
+ .word 0x03938000, 0x039497E0
+ .word 0x03949800, 0x0395AFC8
+ .word 0x03835000, 0x0383E200
+ .word 0x0383E200, 0x03841CB8
+ .word 0x03841E00, 0x03842524
+ .word 0x03842600, 0x038431CC
+ .word 0x03843200, 0x0385A558
+ .word 0x0385A600, 0x0385A980
+ .word 0x0392A200, 0x0392FB5C
+ .word 0x0392FC00, 0x03937FC0
+ .word 0x01C35400, 0x01C3A304
+ .word 0x01C3A400, 0x01C4C6A8
+ .word 0x01C4C800, 0x01CE8C7C
+ .word 0x01CE8E00, 0x01D0905C
+ .word 0x01D09200, 0x01D0E380
+ .word 0x01D4F800, 0x01D539FC
+ .word 0x01D53A00, 0x01D60138
+ .word 0x01D60200, 0x01D61B10
+ .word 0x0382AA00, 0x03834FD0
+ .word 0x037A0C00, 0x037A433C
+ .word 0x03787200, 0x0379AD44
+ .word 0x0379AE00, 0x037A0B24
+ .word 0x00339200, 0x00339A22
+ .word 0x00339C00, 0x0033A3E8
+ .word 0x0033A400, 0x0033AC42
+ .word 0x0033AE00, 0x0033B624
+ .word 0x0033B800, 0x0033B834
+ .word 0x0033BA00, 0x0033BA40
+ .word 0x0033BC00, 0x0033BC34
+ .word 0x0033BE00, 0x0033BE34
+ .word 0x0033C000, 0x0033C034
+ .word 0x0033C200, 0x0033E230
+ .word 0x0033E400, 0x0033E628
+ .word 0x0033E800, 0x0033E86F
+ .word 0x0033EA00, 0x0033F704
+ .word 0x0033F800, 0x003B2E2C
+ .word 0x003B3000, 0x003B3170
+ .word 0x003B3200, 0x003B3428
+ .word 0x003B3600, 0x003B3636
+ .word 0x003B3800, 0x003B3826
+ .word 0x003B3A00, 0x003B3A26
+ .word 0x003B3C00, 0x003B3C2B
+ .word 0x003B3E00, 0x003B3E10
+ .word 0x003B4000, 0x003B4010
+ .word 0x003B4200, 0x003B422D
+ .word 0x003B4400, 0x003B4978
+ .word 0x003B4A00, 0x003FAA00
+ .word 0x003FAA00, 0x003FAB24
+ .word 0x003FAC00, 0x00407E20
+ .word 0x00408000, 0x00408048
+ .word 0x00408200, 0x00408248
+ .word 0x00408400, 0x00408448
+ .word 0x00408600, 0x00408648
+ .word 0x00408800, 0x00408848
+ .word 0x00408A00, 0x00408A48
+ .word 0x00408C00, 0x00408C48
+ .word 0x00408E00, 0x00408E48
+ .word 0x00409000, 0x00409048
+ .word 0x00409200, 0x00409248
+ .word 0x00409400, 0x00409448
+ .word 0x00409600, 0x00409DF4
+ .word 0x00409E00, 0x00411E30
+ .word 0x00412000, 0x00412228
+ .word 0x00412400, 0x00412C24
+ .word 0x00412E00, 0x00412E14
+ .word 0x00413000, 0x00414150
+ .word 0x00414200, 0x00415388
+ .word 0x00415400, 0x00415978
+ .word 0x00415A00, 0x00416B88
+ .word 0x00416C00, 0x00417178
+ .word 0x00417200, 0x004174C8
+ .word 0x00417600, 0x0041B558
+ .word 0x0041B600, 0x00423630
+ .word 0x00423800, 0x00423A28
+ .word 0x00423C00, 0x00423D8C
+ .word 0x00423E00, 0x00423EC4
+ .word 0x00424000, 0x004240C4
+ .word 0x00424200, 0x0042433C
+ .word 0x00424400, 0x004245A0
+ .word 0x00424600, 0x00424694
+ .word 0x00424800, 0x0042484C
+ .word 0x00424A00, 0x00424A60
+ .word 0x00424C00, 0x00424C4C
+ .word 0x00424E00, 0x00424E4C
+ .word 0x00425000, 0x00425034
+ .word 0x00425200, 0x004253B4
+ .word 0x00425400, 0x004255B4
+ .word 0x00425600, 0x00425A24
+ .word 0x00425C00, 0x00426180
+ .word 0x00426200, 0x004262AC
+ .word 0x00426400, 0x00426464
+ .word 0x00426600, 0x00426664
+ .word 0x00426800, 0x00426864
+ .word 0x00426A00, 0x00426A80
+ .word 0x00426C00, 0x00426C4C
+ .word 0x00426E00, 0x0043C744
+ .word 0x0043C800, 0x0043C8A3
+ .word 0x0043CA00, 0x0043CAD7
+ .word 0x0043CC00, 0x0043D8B0
+ .word 0x0043DA00, 0x0043DC28
+ .word 0x0043DE00, 0x0043DE6F
+ .word 0x0043E000, 0x0043E063
+ .word 0x0043E200, 0x0043E430
+ .word 0x0043E600, 0x0043E828
+ .word 0x0043EA00, 0x0043EC50
+ .word 0x0043EE00, 0x0043F050
+ .word 0x0043F200, 0x0043F450
+ .word 0x0043F600, 0x0043F850
+ .word 0x0043FA00, 0x00440200
+ .word 0x00440200, 0x00441314
+ .word 0x00441400, 0x004416DC
+ .word 0x00441800, 0x00441894
+ .word 0x00441A00, 0x00441AC0
+ .word 0x00441C00, 0x00441D0C
+ .word 0x00441E00, 0x00441E94
+ .word 0x00442000, 0x00442094
+ .word 0x00442200, 0x0044224C
+ .word 0x00442400, 0x004424AA
+ .word 0x00442600, 0x004426BA
+ .word 0x00442800, 0x004428DC
+ .word 0x00442A00, 0x00442A95
+ .word 0x00442C00, 0x00445674
+ .word 0x00445800, 0x00445A64
+ .word 0x00445C00, 0x0044B880
+ .word 0x0044BA00, 0x0044C094
+ .word 0x0044C200, 0x0044D430
+ .word 0x0044D600, 0x0044D828
+ .word 0x0044DA00, 0x004518D8
+ .word 0x00451A00, 0x00451AF9
+ .word 0x00451C00, 0x00451D09
+ .word 0x00451E00, 0x00451ED6
+ .word 0x00452000, 0x004520A2
+ .word 0x00452200, 0x00452730
+ .word 0x00452800, 0x00472F9C
+ .word 0x00473000, 0x00476868
+ .word 0x00476A00, 0x004945AC
+ .word 0x00494600, 0x00499368
+ .word 0x00499400, 0x0049944C
+ .word 0x00499600, 0x0049964C
+ .word 0x00499800, 0x0049984C
+ .word 0x00499A00, 0x00499A4C
+ .word 0x00499C00, 0x00499C60
+ .word 0x00499E00, 0x00499E34
+ .word 0x0049A000, 0x0049A034
+ .word 0x0049A200, 0x004A4434
+ .word 0x00339000, 0x003391EA
+ .word 0x004A4600, 0x0057FAC0
+ .word 0x0057FC00, 0x0058F4A8
+ .word 0x0058F600, 0x0058F840
+ .word 0x0058FA00, 0x0059334C
+ .word 0x00593400, 0x00597214
+ .word 0x00597400, 0x00597640
+ .word 0x00597800, 0x00597A28
+ .word 0x02242200, 0x0225E098
+ .word 0x02119C00, 0x0224205C
+ .word 0x00597C00, 0x00CBB160
+ .word 0x0381F000, 0x03821AFC
+ .word 0x03821C00, 0x038241EC
+ .word 0x03863600, 0x0387E98C
+ .word 0x0387EA00, 0x0388C9E0
+ .word 0x03861000, 0x03863494
+ .word 0x03923C00, 0x0392A0C4
+ .word 0x0388CA00, 0x03923B88
+ .word 0x037D8600, 0x03810110
+ .word 0x0397AA00, 0x03A55EC0
+ .word 0x02715000, 0x027153E4
+ .word 0x02715400, 0x02716674
+ .word 0x02716800, 0x0283BCB4
+ .word 0x0283BE00, 0x0296EB50
+ .word 0x0296EC00, 0x0296F0D8
+ .word 0x0253C200, 0x027107CC
+ .word 0x02710800, 0x02711F24
+ .word 0x02515600, 0x02528B04
+ .word 0x02528C00, 0x0253C104
+ .word 0x024F3200, 0x025154F4
+ .word 0x0296F200, 0x0378712C
+ .word 0x02712000, 0x02714E18
+ .word 0x0385AA00, 0x0385CCF0
+ .word 0x03824200, 0x03824464
+ .word 0x03860E00, 0x03860F94
+ .word 0x01D70800, 0x01DA61D8
+ .word 0x01DA6200, 0x01DBFE74
+ .word 0x01DC0000, 0x01DDBB20
+ .word 0x01DDBC00, 0x01DDFDF8
+ .word 0x01DDFE00, 0x01DE00AC
+ .word 0x01DE0200, 0x01DE7D18
+ .word 0x01DE7E00, 0x01DE841C
+ .word 0x01DE8600, 0x01DE889C
+ .word 0x01DE8A00, 0x01E3A09C
+ .word 0x01E3A200, 0x01E5C724
+ .word 0x01E5C800, 0x01E5F17C
+ .word 0x01E5F200, 0x01E69AFC
+ .word 0x01E69C00, 0x01E73308
+ .word 0x01E73400, 0x01E73764
+ .word 0x01E73800, 0x01E94658
+ .word 0x01E94800, 0x01E94DA4
+ .word 0x01E94E00, 0x01E9CC14
+ .word 0x01E9CE00, 0x01EDB430
+ .word 0x01EDB600, 0x01EF5730
+ .word 0x01EF5800, 0x01EFA370
+ .word 0x01EFA400, 0x01EFB4B8
+ .word 0x01EFB600, 0x01F02EC4
+ .word 0x01F03000, 0x01F2FE70
+ .word 0x01F30000, 0x01F5C2F4
+ .word 0x01F5C400, 0x01F5D924
+ .word 0x01F5DA00, 0x01F645BC
+ .word 0x01F64600, 0x01F6E2AC
+ .word 0x01F6E400, 0x01F71564
+ .word 0x01F71600, 0x01F7FBC4
+ .word 0x01F7FC00, 0x01F865E4
+ .word 0x01F86600, 0x01F87AAC
+ .word 0x01F87C00, 0x01F89E6C
+ .word 0x01F8A000, 0x01FA90B0
+ .word 0x01FA9200, 0x01FAA6C8
+ .word 0x01FAA800, 0x01FB01C4
+ .word 0x01FB0200, 0x01FB2940
+ .word 0x01FB2A00, 0x01FC7910
+ .word 0x01FC7A00, 0x01FC8398
+ .word 0x01FC8400, 0x01FFFFE0
+ .word 0x02000000, 0x02001210
+ .word 0x02001400, 0x02004334
+ .word 0x02004400, 0x0200CCE4
+ .word 0x0200CE00, 0x020184D8
+ .word 0x02018600, 0x0201D22C
+ .word 0x0201D400, 0x0207DCB0
+ .word 0x0207DE00, 0x0207E334
+ .word 0x00CBB200, 0x00F4D210
+ .word 0x00F4D400, 0x00F4EE5C
+ .word 0x037A4400, 0x037AC9FC
+ .word 0x03824600, 0x0382A944
+ .word 0x0385CE00, 0x0385D218
+ .word 0x0385D400, 0x0385D56C
+ .word 0x0207E400, 0x0210B4F0
+ .word 0x01C1B000, 0x01C215F8
+ .word 0x01C21600, 0x01C22314
+ .word 0x01C14A00, 0x01C1AFF8
+ .word 0x01C22400, 0x01C227EA
+ .word 0x01C22800, 0x01C27140
+ .word 0x0385D600, 0x03860C44
+ .word 0x0210B600, 0x02119AEC
+ .word 0x00F4F000, 0x00F54A44
+ .word 0x00F54C00, 0x00F55294
+ .word 0x00F55400, 0x0102EAEC
+ .word 0x0102EC00, 0x0102EE2C
+ .word 0x0102F000, 0x0102F22C
+ .word 0x0102F400, 0x0102F62C
+ .word 0x0102F800, 0x01B6B274
+ .word 0x01C27200, 0x01C2CF2C
+ .word 0x01C2D000, 0x01C32594
+ .word 0x01B6B400, 0x01B78074
+ .word 0x01B78200, 0x01C14844
+ .word 0x01C32600, 0x01C34B84
+ .word 0x01C34C00, 0x01C352E0
+ .word 0x01D6DA00, 0x01D7065C
+ .word 0x0395B000, 0x03968BE4
+ .word 0x03968C00, 0x0397A91C
+ .word 0x01D0E400, 0x01D4C44C
+ .word 0x01D4C600, 0x01D4F624
+ .word 0x01D61C00, 0x01D630F4
+ .word 0x01D63200, 0x01D64450
+ .word 0x01D64600, 0x01D6C734
+ .word 0x01D6C800, 0x01D6D980
+ .word 0x0225E200, 0x022ACA44
+ .word 0x022ACC00, 0x024F2410
+ .word 0x024F2600, 0x024F31C8
diff --git a/data/filenametable.s b/data/filenametable.s
new file mode 100644
index 00000000..c5699171
--- /dev/null
+++ b/data/filenametable.s
@@ -0,0 +1,1160 @@
+ .section .text
+ .global FileNameTable
+FileNameTable:
+ .word 0x00000228 ; offset
+ .short 0x0057 ; first file
+ .short 0x0045 ; dir count
+ .word 0x000002CD ; offset
+ .short 0x0057 ; first file
+ .short 0xF000 ; parent id
+ .word 0x000002F5 ; offset
+ .short 0x0057 ; first file
+ .short 0xF001 ; parent id
+ .word 0x000002FD ; offset
+ .short 0x0057 ; first file
+ .short 0xF002 ; parent id
+ .word 0x0000030B ; offset
+ .short 0x0058 ; first file
+ .short 0xF001 ; parent id
+ .word 0x00000332 ; offset
+ .short 0x005A ; first file
+ .short 0xF001 ; parent id
+ .word 0x0000033E ; offset
+ .short 0x005A ; first file
+ .short 0xF005 ; parent id
+ .word 0x0000037B ; offset
+ .short 0x005D ; first file
+ .short 0xF000 ; parent id
+ .word 0x000003CF ; offset
+ .short 0x0063 ; first file
+ .short 0xF000 ; parent id
+ .word 0x000003F4 ; offset
+ .short 0x0063 ; first file
+ .short 0xF008 ; parent id
+ .word 0x0000040B ; offset
+ .short 0x0065 ; first file
+ .short 0xF008 ; parent id
+ .word 0x00000458 ; offset
+ .short 0x006A ; first file
+ .short 0xF008 ; parent id
+ .word 0x00000480 ; offset
+ .short 0x006D ; first file
+ .short 0xF008 ; parent id
+ .word 0x00000490 ; offset
+ .short 0x006E ; first file
+ .short 0xF000 ; parent id
+ .word 0x000004A2 ; offset
+ .short 0x006E ; first file
+ .short 0xF00D ; parent id
+ .word 0x000004B5 ; offset
+ .short 0x006F ; first file
+ .short 0xF00D ; parent id
+ .word 0x000004D7 ; offset
+ .short 0x0071 ; first file
+ .short 0xF000 ; parent id
+ .word 0x00000D2E ; offset
+ .short 0x00F4 ; first file
+ .short 0xF010 ; parent id
+ .word 0x00000D47 ; offset
+ .short 0x00F6 ; first file
+ .short 0xF010 ; parent id
+ .word 0x00000D58 ; offset
+ .short 0x00F7 ; first file
+ .short 0xF000 ; parent id
+ .word 0x00000D83 ; offset
+ .short 0x00F7 ; first file
+ .short 0xF013 ; parent id
+ .word 0x00000D8B ; offset
+ .short 0x00F7 ; first file
+ .short 0xF014 ; parent id
+ .word 0x00000DA5 ; offset
+ .short 0x00F8 ; first file
+ .short 0xF015 ; parent id
+ .word 0x00000DBD ; offset
+ .short 0x00F9 ; first file
+ .short 0xF013 ; parent id
+ .word 0x00000DD7 ; offset
+ .short 0x00FB ; first file
+ .short 0xF013 ; parent id
+ .word 0x00000DDF ; offset
+ .short 0x00FB ; first file
+ .short 0xF018 ; parent id
+ .word 0x00000DEB ; offset
+ .short 0x00FB ; first file
+ .short 0xF019 ; parent id
+ .word 0x00000E06 ; offset
+ .short 0x00FC ; first file
+ .short 0xF013 ; parent id
+ .word 0x00000E15 ; offset
+ .short 0x00FD ; first file
+ .short 0xF013 ; parent id
+ .word 0x00000E32 ; offset
+ .short 0x00FF ; first file
+ .short 0xF000 ; parent id
+ .word 0x00000E3F ; offset
+ .short 0x0100 ; first file
+ .short 0xF000 ; parent id
+ .word 0x00000EB9 ; offset
+ .short 0x0100 ; first file
+ .short 0xF01E ; parent id
+ .word 0x00000EFD ; offset
+ .short 0x0101 ; first file
+ .short 0xF01F ; parent id
+ .word 0x00000F21 ; offset
+ .short 0x0103 ; first file
+ .short 0xF01F ; parent id
+ .word 0x00000F33 ; offset
+ .short 0x0104 ; first file
+ .short 0xF01F ; parent id
+ .word 0x00000F49 ; offset
+ .short 0x0105 ; first file
+ .short 0xF01E ; parent id
+ .word 0x00000F72 ; offset
+ .short 0x0107 ; first file
+ .short 0xF01E ; parent id
+ .word 0x00000F93 ; offset
+ .short 0x0109 ; first file
+ .short 0xF01E ; parent id
+ .word 0x00000FAC ; offset
+ .short 0x010A ; first file
+ .short 0xF01E ; parent id
+ .word 0x00000FC4 ; offset
+ .short 0x010B ; first file
+ .short 0xF01E ; parent id
+ .word 0x00000FD5 ; offset
+ .short 0x010C ; first file
+ .short 0xF01E ; parent id
+ .word 0x00000FE2 ; offset
+ .short 0x010D ; first file
+ .short 0xF01E ; parent id
+ .word 0x00000FF8 ; offset
+ .short 0x010E ; first file
+ .short 0xF01E ; parent id
+ .word 0x00001008 ; offset
+ .short 0x010F ; first file
+ .short 0xF01E ; parent id
+ .word 0x0000101E ; offset
+ .short 0x0110 ; first file
+ .short 0xF000 ; parent id
+ .word 0x00001285 ; offset
+ .short 0x013A ; first file
+ .short 0xF000 ; parent id
+ .word 0x00001291 ; offset
+ .short 0x013A ; first file
+ .short 0xF02D ; parent id
+ .word 0x000012BF ; offset
+ .short 0x013D ; first file
+ .short 0xF000 ; parent id
+ .word 0x000012D4 ; offset
+ .short 0x013E ; first file
+ .short 0xF02F ; parent id
+ .word 0x000012E2 ; offset
+ .short 0x013F ; first file
+ .short 0xF000 ; parent id
+ .word 0x000012F5 ; offset
+ .short 0x0140 ; first file
+ .short 0xF000 ; parent id
+ .word 0x00001304 ; offset
+ .short 0x0141 ; first file
+ .short 0xF000 ; parent id
+ .word 0x00001378 ; offset
+ .short 0x0143 ; first file
+ .short 0xF033 ; parent id
+ .word 0x00001388 ; offset
+ .short 0x0144 ; first file
+ .short 0xF033 ; parent id
+ .word 0x000013C1 ; offset
+ .short 0x0149 ; first file
+ .short 0xF033 ; parent id
+ .word 0x000013CF ; offset
+ .short 0x014A ; first file
+ .short 0xF033 ; parent id
+ .word 0x000013DE ; offset
+ .short 0x014B ; first file
+ .short 0xF033 ; parent id
+ .word 0x0000144A ; offset
+ .short 0x0152 ; first file
+ .short 0xF033 ; parent id
+ .word 0x00001463 ; offset
+ .short 0x0154 ; first file
+ .short 0xF033 ; parent id
+ .word 0x0000147C ; offset
+ .short 0x0156 ; first file
+ .short 0xF033 ; parent id
+ .word 0x00001496 ; offset
+ .short 0x0158 ; first file
+ .short 0xF033 ; parent id
+ .word 0x000014A5 ; offset
+ .short 0x0159 ; first file
+ .short 0xF000 ; parent id
+ .word 0x000014AC ; offset
+ .short 0x0159 ; first file
+ .short 0xF03D ; parent id
+ .word 0x000014BD ; offset
+ .short 0x0159 ; first file
+ .short 0xF03E ; parent id
+ .word 0x000014C9 ; offset
+ .short 0x015A ; first file
+ .short 0xF03E ; parent id
+ .word 0x000014D5 ; offset
+ .short 0x015B ; first file
+ .short 0xF000 ; parent id
+ .word 0x0000150F ; offset
+ .short 0x015D ; first file
+ .short 0xF041 ; parent id
+ .word 0x00001543 ; offset
+ .short 0x0161 ; first file
+ .short 0xF041 ; parent id
+ .word 0x0000156A ; offset
+ .short 0x0163 ; first file
+ .short 0xF041 ; parent id
+
+ ; Directory: /
+ .byte 11 | 0x80
+ .ascii "application"
+ .byte 0x01, 0xF0 ; dir ID
+ .byte 3 | 0x80
+ .ascii "arc"
+ .byte 0x07, 0xF0 ; dir ID
+ .byte 6 | 0x80
+ .ascii "battle"
+ .byte 0x08, 0xF0 ; dir ID
+ .byte 7 | 0x80
+ .ascii "contest"
+ .byte 0x0D, 0xF0 ; dir ID
+ .byte 4 | 0x80
+ .ascii "data"
+ .byte 0x10, 0xF0 ; dir ID
+ .byte 4 | 0x80
+ .ascii "demo"
+ .byte 0x13, 0xF0 ; dir ID
+ .byte 3 | 0x80
+ .ascii "dwc"
+ .byte 0x1D, 0xF0 ; dir ID
+ .byte 9 | 0x80
+ .ascii "fielddata"
+ .byte 0x1E, 0xF0 ; dir ID
+ .byte 7 | 0x80
+ .ascii "graphic"
+ .byte 0x2C, 0xF0 ; dir ID
+ .byte 8 | 0x80
+ .ascii "itemtool"
+ .byte 0x2D, 0xF0 ; dir ID
+ .byte 7 | 0x80
+ .ascii "msgdata"
+ .byte 0x2F, 0xF0 ; dir ID
+ .byte 12 | 0x80
+ .ascii "particledata"
+ .byte 0x31, 0xF0 ; dir ID
+ .byte 9 | 0x80
+ .ascii "pokeanime"
+ .byte 0x32, 0xF0 ; dir ID
+ .byte 8 | 0x80
+ .ascii "poketool"
+ .byte 0x33, 0xF0 ; dir ID
+ .byte 8 | 0x80
+ .ascii "resource"
+ .byte 0x3D, 0xF0 ; dir ID
+ .byte 10 | 0x80
+ .ascii "wazaeffect"
+ .byte 0x41, 0xF0 ; dir ID
+ .byte 0 ; end
+
+ ; Directory: /application
+ .byte 11 | 0x80
+ .ascii "custom_ball"
+ .byte 0x02, 0xF0 ; dir ID
+ .byte 10 | 0x80
+ .ascii "wifi_earth"
+ .byte 0x04, 0xF0 ; dir ID
+ .byte 9 | 0x80
+ .ascii "zukanlist"
+ .byte 0x05, 0xF0 ; dir ID
+ .byte 0 ; end
+
+ ; Directory: /custom_ball
+ .byte 4 | 0x80
+ .ascii "data"
+ .byte 0x03, 0xF0 ; dir ID
+ .byte 0 ; end
+
+ ; Directory: /application/data
+ .byte 12
+ .ascii "cb_data.narc"
+ .byte 0 ; end
+
+ ; Directory: /wifi_earth
+ .byte 15
+ .ascii "wifi_earth.narc"
+ .byte 21
+ .ascii "wifi_earth_place.narc"
+ .byte 0 ; end
+
+ ; Directory: /zukanlist
+ .byte 8 | 0x80
+ .ascii "zkn_data"
+ .byte 0x06, 0xF0 ; dir ID
+ .byte 0 ; end
+
+ ; Directory: /application/zkn_data
+ .byte 15
+ .ascii "zukan_data.narc"
+ .byte 22
+ .ascii "zukan_enc_diamond.narc"
+ .byte 20
+ .ascii "zukan_enc_pearl.narc"
+ .byte 0 ; end
+
+ ; Directory: /arc
+ .byte 13
+ .ascii "bm_anime.narc"
+ .byte 18
+ .ascii "bm_anime_list.narc"
+ .byte 15
+ .ascii "encdata_ex.narc"
+ .byte 10
+ .ascii "ppark.narc"
+ .byte 14
+ .ascii "ship_demo.narc"
+ .byte 7
+ .ascii "tv.narc"
+ .byte 0 ; end
+
+ ; Directory: /battle
+ .byte 7 | 0x80
+ .ascii "b_tower"
+ .byte 0x09, 0xF0 ; dir ID
+ .byte 7 | 0x80
+ .ascii "graphic"
+ .byte 0x0A, 0xF0 ; dir ID
+ .byte 5 | 0x80
+ .ascii "skill"
+ .byte 0x0B, 0xF0 ; dir ID
+ .byte 5 | 0x80
+ .ascii "tr_ai"
+ .byte 0x0C, 0xF0 ; dir ID
+ .byte 0 ; end
+
+ ; Directory: /b_tower
+ .byte 10
+ .ascii "btdpm.narc"
+ .byte 10
+ .ascii "btdtr.narc"
+ .byte 0 ; end
+
+ ; Directory: /graphic
+ .byte 14
+ .ascii "b_bag_gra.narc"
+ .byte 16
+ .ascii "b_plist_gra.narc"
+ .byte 12
+ .ascii "batt_bg.narc"
+ .byte 13
+ .ascii "batt_obj.narc"
+ .byte 16
+ .ascii "vs_demo_gra.narc"
+ .byte 0 ; end
+
+ ; Directory: /skill
+ .byte 11
+ .ascii "be_seq.narc"
+ .byte 12
+ .ascii "sub_seq.narc"
+ .byte 13
+ .ascii "waza_seq.narc"
+ .byte 0 ; end
+
+ ; Directory: /tr_ai
+ .byte 14
+ .ascii "tr_ai_seq.narc"
+ .byte 0 ; end
+
+ ; Directory: /contest
+ .byte 4 | 0x80
+ .ascii "data"
+ .byte 0x0E, 0xF0 ; dir ID
+ .byte 7 | 0x80
+ .ascii "graphic"
+ .byte 0x0F, 0xF0 ; dir ID
+ .byte 0 ; end
+
+ ; Directory: /data
+ .byte 17
+ .ascii "contest_data.narc"
+ .byte 0 ; end
+
+ ; Directory: /graphic
+ .byte 15
+ .ascii "contest_bg.narc"
+ .byte 16
+ .ascii "contest_obj.narc"
+ .byte 0 ; end
+
+ ; Directory: /data
+ .byte 15
+ .ascii "area00light.txt"
+ .byte 15
+ .ascii "area01light.txt"
+ .byte 15
+ .ascii "area02light.txt"
+ .byte 15
+ .ascii "battle_win.NSCR"
+ .byte 18
+ .ascii "btower_canm.resdat"
+ .byte 19
+ .ascii "btower_celact.cldat"
+ .byte 18
+ .ascii "btower_cell.resdat"
+ .byte 17
+ .ascii "btower_chr.resdat"
+ .byte 17
+ .ascii "btower_pal.resdat"
+ .byte 10
+ .ascii "cell0.NCGR"
+ .byte 10
+ .ascii "cell0.NCLR"
+ .byte 18
+ .ascii "clact_default.NANR"
+ .byte 13
+ .ascii "crystal.nsbmd"
+ .byte 16
+ .ascii "demo_climax.narc"
+ .byte 18
+ .ascii "dp_areawindow.NCGR"
+ .byte 18
+ .ascii "dp_areawindow.NCLR"
+ .byte 18
+ .ascii "dt_test_celact.txt"
+ .byte 20
+ .ascii "dt_test_res_cell.txt"
+ .byte 23
+ .ascii "dt_test_res_cellanm.txt"
+ .byte 20
+ .ascii "dt_test_res_char.txt"
+ .byte 21
+ .ascii "dt_test_res_multi.txt"
+ .byte 24
+ .ascii "dt_test_res_multianm.txt"
+ .byte 20
+ .ascii "dt_test_res_pltt.txt"
+ .byte 13
+ .ascii "dun_sea.nsbtx"
+ .byte 7
+ .ascii "eoo.dat"
+ .byte 10
+ .ascii "exdata.dat"
+ .byte 16
+ .ascii "field_cutin.narc"
+ .byte 14
+ .ascii "fld_anime0.bin"
+ .byte 14
+ .ascii "fld_anime1.bin"
+ .byte 15
+ .ascii "fld_anime10.bin"
+ .byte 14
+ .ascii "fld_anime2.bin"
+ .byte 14
+ .ascii "fld_anime3.bin"
+ .byte 14
+ .ascii "fld_anime4.bin"
+ .byte 14
+ .ascii "fld_anime5.bin"
+ .byte 14
+ .ascii "fld_anime6.bin"
+ .byte 14
+ .ascii "fld_anime7.bin"
+ .byte 14
+ .ascii "fld_anime8.bin"
+ .byte 14
+ .ascii "fld_anime9.bin"
+ .byte 15
+ .ascii "fs_kanban.nsbca"
+ .byte 12
+ .ascii "ground0.NCGR"
+ .byte 12
+ .ascii "ground0.NCLR"
+ .byte 12
+ .ascii "ground0.NSCR"
+ .byte 16
+ .ascii "kemu_itpconv.dat"
+ .byte 15
+ .ascii "lake_anim.nsbtx"
+ .byte 19
+ .ascii "miniasahamabe.nsbtx"
+ .byte 16
+ .ascii "miniasasea.nsbtx"
+ .byte 16
+ .ascii "minihamabe.nsbtx"
+ .byte 13
+ .ascii "minimum.nsbtx"
+ .byte 15
+ .ascii "minirhana.nsbtx"
+ .byte 11
+ .ascii "namein.narc"
+ .byte 10
+ .ascii "nfont.NCGR"
+ .byte 10
+ .ascii "nfont.NCLR"
+ .byte 8
+ .ascii "pc.nsbca"
+ .byte 17
+ .ascii "plist_canm.resdat"
+ .byte 17
+ .ascii "plist_cell.resdat"
+ .byte 16
+ .ascii "plist_chr.resdat"
+ .byte 13
+ .ascii "plist_h.cldat"
+ .byte 16
+ .ascii "plist_pal.resdat"
+ .byte 20
+ .ascii "porucase_canm.resdat"
+ .byte 21
+ .ascii "porucase_celact.cldat"
+ .byte 20
+ .ascii "porucase_cell.resdat"
+ .byte 19
+ .ascii "porucase_chr.resdat"
+ .byte 19
+ .ascii "porucase_pal.resdat"
+ .byte 15
+ .ascii "pst_canm.resdat"
+ .byte 15
+ .ascii "pst_cell.resdat"
+ .byte 14
+ .ascii "pst_chr.resdat"
+ .byte 11
+ .ascii "pst_h.cldat"
+ .byte 14
+ .ascii "pst_pal.resdat"
+ .byte 16
+ .ascii "shop_canm.resdat"
+ .byte 16
+ .ascii "shop_cell.resdat"
+ .byte 15
+ .ascii "shop_chr.resdat"
+ .byte 12
+ .ascii "shop_h.cldat"
+ .byte 15
+ .ascii "shop_pal.resdat"
+ .byte 9
+ .ascii "slot.narc"
+ .byte 16
+ .ascii "smptm_koori.NANR"
+ .byte 16
+ .ascii "smptm_koori.NCER"
+ .byte 16
+ .ascii "smptm_koori.NCGR"
+ .byte 16
+ .ascii "smptm_koori.NCLR"
+ .byte 17
+ .ascii "smptm_nemuri.NANR"
+ .byte 17
+ .ascii "smptm_nemuri.NCER"
+ .byte 17
+ .ascii "smptm_nemuri.NCGR"
+ .byte 17
+ .ascii "smptm_nemuri.NCLR"
+ .byte 13
+ .ascii "t3_fl_b.nsbtx"
+ .byte 13
+ .ascii "t3_fl_p.nsbtx"
+ .byte 13
+ .ascii "t3_fl_r.nsbtx"
+ .byte 13
+ .ascii "t3_fl_y.nsbtx"
+ .byte 8
+ .ascii "test.atr"
+ .byte 14
+ .ascii "tmap_block.dat"
+ .byte 14
+ .ascii "tmap_flags.dat"
+ .byte 17
+ .ascii "tmapn_canm.resdat"
+ .byte 18
+ .ascii "tmapn_celact.cldat"
+ .byte 16
+ .ascii "tmapn_celact.txt"
+ .byte 17
+ .ascii "tmapn_cell.resdat"
+ .byte 16
+ .ascii "tmapn_chr.resdat"
+ .byte 16
+ .ascii "tmapn_pal.resdat"
+ .byte 18
+ .ascii "tmapn_res_canm.txt"
+ .byte 18
+ .ascii "tmapn_res_cell.txt"
+ .byte 17
+ .ascii "tmapn_res_chr.txt"
+ .byte 17
+ .ascii "tmapn_res_pal.txt"
+ .byte 14
+ .ascii "tradelist.narc"
+ .byte 13
+ .ascii "trapmark.narc"
+ .byte 12
+ .ascii "ug_anim.narc"
+ .byte 17
+ .ascii "ug_base_cur.nsbmd"
+ .byte 15
+ .ascii "ug_boygirl.NCGR"
+ .byte 15
+ .ascii "ug_boygirl.NCLR"
+ .byte 14
+ .ascii "ug_fossil.narc"
+ .byte 12
+ .ascii "ug_hero.NANR"
+ .byte 12
+ .ascii "ug_hero.NCER"
+ .byte 12
+ .ascii "ug_hole.NANR"
+ .byte 12
+ .ascii "ug_hole.NCER"
+ .byte 12
+ .ascii "ug_hole.NCGR"
+ .byte 13
+ .ascii "ug_parts.narc"
+ .byte 13
+ .ascii "ug_radar.narc"
+ .byte 12
+ .ascii "ug_trap.narc"
+ .byte 25
+ .ascii "ugeffect_obj_graphic.narc"
+ .byte 19
+ .ascii "uground_cell.resdat"
+ .byte 22
+ .ascii "uground_cellanm.resdat"
+ .byte 19
+ .ascii "uground_char.resdat"
+ .byte 20
+ .ascii "uground_char2.resdat"
+ .byte 19
+ .ascii "uground_clact.cldat"
+ .byte 19
+ .ascii "uground_pltt.resdat"
+ .byte 20
+ .ascii "uground_pltt2.resdat"
+ .byte 17
+ .ascii "underg_radar.narc"
+ .byte 9
+ .ascii "UTF16.dat"
+ .byte 11
+ .ascii "utility.bin"
+ .byte 16
+ .ascii "weather_sys.narc"
+ .byte 9
+ .ascii "wifi.ncgr"
+ .byte 13
+ .ascii "wifinote.narc"
+ .byte 17
+ .ascii "wifip2pmatch.narc"
+ .byte 7
+ .ascii "wm.ncgr"
+ .byte 7
+ .ascii "wm.nclr"
+ .byte 6 | 0x80
+ .ascii "mmodel"
+ .byte 0x11, 0xF0 ; dir ID
+ .byte 5 | 0x80
+ .ascii "sound"
+ .byte 0x12, 0xF0 ; dir ID
+ .byte 0 ; end
+
+ ; Directory: /mmodel
+ .byte 11
+ .ascii "fldeff.narc"
+ .byte 11
+ .ascii "mmodel.narc"
+ .byte 0 ; end
+
+ ; Directory: /sound
+ .byte 15
+ .ascii "sound_data.sdat"
+ .byte 0 ; end
+
+ ; Directory: /demo
+ .byte 3 | 0x80
+ .ascii "egg"
+ .byte 0x14, 0xF0 ; dir ID
+ .byte 5 | 0x80
+ .ascii "intro"
+ .byte 0x17, 0xF0 ; dir ID
+ .byte 6 | 0x80
+ .ascii "shinka"
+ .byte 0x18, 0xF0 ; dir ID
+ .byte 8 | 0x80
+ .ascii "syoujyou"
+ .byte 0x1B, 0xF0 ; dir ID
+ .byte 5 | 0x80
+ .ascii "title"
+ .byte 0x1C, 0xF0 ; dir ID
+ .byte 0 ; end
+
+ ; Directory: /egg
+ .byte 4 | 0x80
+ .ascii "data"
+ .byte 0x15, 0xF0 ; dir ID
+ .byte 0 ; end
+
+ ; Directory: /demo/data
+ .byte 13
+ .ascii "egg_data.narc"
+ .byte 8 | 0x80
+ .ascii "particle"
+ .byte 0x16, 0xF0 ; dir ID
+ .byte 0 ; end
+
+ ; Directory: /egg/particle
+ .byte 22
+ .ascii "egg_demo_particle.narc"
+ .byte 0 ; end
+
+ ; Directory: /intro
+ .byte 10
+ .ascii "intro.narc"
+ .byte 13
+ .ascii "intro_tv.narc"
+ .byte 0 ; end
+
+ ; Directory: /shinka
+ .byte 4 | 0x80
+ .ascii "data"
+ .byte 0x19, 0xF0 ; dir ID
+ .byte 0 ; end
+
+ ; Directory: /demo/data
+ .byte 8 | 0x80
+ .ascii "particle"
+ .byte 0x1A, 0xF0 ; dir ID
+ .byte 0 ; end
+
+ ; Directory: /shinka/particle
+ .byte 25
+ .ascii "shinka_demo_particle.narc"
+ .byte 0 ; end
+
+ ; Directory: /syoujyou
+ .byte 13
+ .ascii "syoujyou.narc"
+ .byte 0 ; end
+
+ ; Directory: /title
+ .byte 12
+ .ascii "op_demo.narc"
+ .byte 14
+ .ascii "titledemo.narc"
+ .byte 0 ; end
+
+ ; Directory: /dwc
+ .byte 11
+ .ascii "utility.bin"
+ .byte 0 ; end
+
+ ; Directory: /fielddata
+ .byte 8 | 0x80
+ .ascii "areadata"
+ .byte 0x1F, 0xF0 ; dir ID
+ .byte 11 | 0x80
+ .ascii "build_model"
+ .byte 0x23, 0xF0 ; dir ID
+ .byte 11 | 0x80
+ .ascii "encountdata"
+ .byte 0x24, 0xF0 ; dir ID
+ .byte 9 | 0x80
+ .ascii "eventdata"
+ .byte 0x25, 0xF0 ; dir ID
+ .byte 9 | 0x80
+ .ascii "land_data"
+ .byte 0x26, 0xF0 ; dir ID
+ .byte 9 | 0x80
+ .ascii "mapmatrix"
+ .byte 0x27, 0xF0 ; dir ID
+ .byte 8 | 0x80
+ .ascii "maptable"
+ .byte 0x28, 0xF0 ; dir ID
+ .byte 7 | 0x80
+ .ascii "mm_list"
+ .byte 0x29, 0xF0 ; dir ID
+ .byte 13 | 0x80
+ .ascii "pokemon_trade"
+ .byte 0x2A, 0xF0 ; dir ID
+ .byte 6 | 0x80
+ .ascii "script"
+ .byte 0x2B, 0xF0 ; dir ID
+ .byte 0 ; end
+
+ ; Directory: /areadata
+ .byte 14
+ .ascii "area_data.narc"
+ .byte 16 | 0x80
+ .ascii "area_build_model"
+ .byte 0x20, 0xF0 ; dir ID
+ .byte 12 | 0x80
+ .ascii "area_map_tex"
+ .byte 0x21, 0xF0 ; dir ID
+ .byte 15 | 0x80
+ .ascii "area_move_model"
+ .byte 0x22, 0xF0 ; dir ID
+ .byte 0 ; end
+
+ ; Directory: /fielddata/area_build_model
+ .byte 15
+ .ascii "area_build.narc"
+ .byte 18
+ .ascii "areabm_texset.narc"
+ .byte 0 ; end
+
+ ; Directory: /fielddata/area_map_tex
+ .byte 16
+ .ascii "map_tex_set.narc"
+ .byte 0 ; end
+
+ ; Directory: /fielddata/area_move_model
+ .byte 20
+ .ascii "move_model_list.narc"
+ .byte 0 ; end
+
+ ; Directory: /build_model
+ .byte 16
+ .ascii "build_model.narc"
+ .byte 22
+ .ascii "build_model_matshp.dat"
+ .byte 0 ; end
+
+ ; Directory: /encountdata
+ .byte 15
+ .ascii "d_enc_data.narc"
+ .byte 15
+ .ascii "p_enc_data.narc"
+ .byte 0 ; end
+
+ ; Directory: /eventdata
+ .byte 23
+ .ascii "zone_event_release.narc"
+ .byte 0 ; end
+
+ ; Directory: /land_data
+ .byte 22
+ .ascii "land_data_release.narc"
+ .byte 0 ; end
+
+ ; Directory: /mapmatrix
+ .byte 15
+ .ascii "map_matrix.narc"
+ .byte 0 ; end
+
+ ; Directory: /maptable
+ .byte 11
+ .ascii "mapname.bin"
+ .byte 0 ; end
+
+ ; Directory: /mm_list
+ .byte 20
+ .ascii "move_model_list.narc"
+ .byte 0 ; end
+
+ ; Directory: /pokemon_trade
+ .byte 14
+ .ascii "fld_trade.narc"
+ .byte 0 ; end
+
+ ; Directory: /script
+ .byte 20
+ .ascii "scr_seq_release.narc"
+ .byte 0 ; end
+
+ ; Directory: /graphic
+ .byte 12
+ .ascii "bag_gra.narc"
+ .byte 8
+ .ascii "box.narc"
+ .byte 11
+ .ascii "btower.narc"
+ .byte 15
+ .ascii "config_gra.narc"
+ .byte 15
+ .ascii "demo_trade.narc"
+ .byte 16
+ .ascii "dendou_demo.narc"
+ .byte 14
+ .ascii "dendou_pc.narc"
+ .byte 11
+ .ascii "ending.narc"
+ .byte 18
+ .ascii "ev_pokeselect.narc"
+ .byte 15
+ .ascii "f_note_gra.narc"
+ .byte 16
+ .ascii "field_board.narc"
+ .byte 24
+ .ascii "field_encounteffect.narc"
+ .byte 15
+ .ascii "fld_comact.narc"
+ .byte 9
+ .ascii "font.narc"
+ .byte 12
+ .ascii "fontoam.narc"
+ .byte 17
+ .ascii "hiden_effect.narc"
+ .byte 14
+ .ascii "imageclip.narc"
+ .byte 13
+ .ascii "mail_gra.narc"
+ .byte 13
+ .ascii "menu_gra.narc"
+ .byte 11
+ .ascii "mysign.narc"
+ .byte 12
+ .ascii "mystery.narc"
+ .byte 13
+ .ascii "ntag_gra.narc"
+ .byte 13
+ .ascii "nutmixer.narc"
+ .byte 11
+ .ascii "oekaki.narc"
+ .byte 12
+ .ascii "opening.narc"
+ .byte 14
+ .ascii "plist_gra.narc"
+ .byte 9
+ .ascii "pmsi.narc"
+ .byte 12
+ .ascii "poketch.narc"
+ .byte 13
+ .ascii "poru_gra.narc"
+ .byte 12
+ .ascii "poruact.narc"
+ .byte 13
+ .ascii "porudemo.narc"
+ .byte 12
+ .ascii "pst_gra.narc"
+ .byte 12
+ .ascii "ranking.narc"
+ .byte 11
+ .ascii "record.narc"
+ .byte 13
+ .ascii "shop_gra.narc"
+ .byte 13
+ .ascii "tmap_gra.narc"
+ .byte 20
+ .ascii "touch_subwindow.narc"
+ .byte 17
+ .ascii "trainer_case.narc"
+ .byte 14
+ .ascii "unionroom.narc"
+ .byte 19
+ .ascii "waza_oshie_gra.narc"
+ .byte 13
+ .ascii "winframe.narc"
+ .byte 15
+ .ascii "worldtrade.narc"
+ .byte 0 ; end
+
+ ; Directory: /itemtool
+ .byte 8 | 0x80
+ .ascii "itemdata"
+ .byte 0x2E, 0xF0 ; dir ID
+ .byte 0 ; end
+
+ ; Directory: /itemdata
+ .byte 14
+ .ascii "item_data.narc"
+ .byte 14
+ .ascii "item_icon.narc"
+ .byte 14
+ .ascii "nuts_data.narc"
+ .byte 0 ; end
+
+ ; Directory: /msgdata
+ .byte 8
+ .ascii "msg.narc"
+ .byte 8 | 0x80
+ .ascii "scenario"
+ .byte 0x30, 0xF0 ; dir ID
+ .byte 0 ; end
+
+ ; Directory: /scenario
+ .byte 12
+ .ascii "scr_msg.narc"
+ .byte 0 ; end
+
+ ; Directory: /particledata
+ .byte 17
+ .ascii "particledata.narc"
+ .byte 0 ; end
+
+ ; Directory: /pokeanime
+ .byte 13
+ .ascii "poke_anm.narc"
+ .byte 0 ; end
+
+ ; Directory: /poketool
+ .byte 14
+ .ascii "pokezukan.narc"
+ .byte 14
+ .ascii "shinzukan.narc"
+ .byte 7 | 0x80
+ .ascii "icongra"
+ .byte 0x34, 0xF0 ; dir ID
+ .byte 8 | 0x80
+ .ascii "personal"
+ .byte 0x35, 0xF0 ; dir ID
+ .byte 7 | 0x80
+ .ascii "pokeanm"
+ .byte 0x36, 0xF0 ; dir ID
+ .byte 8 | 0x80
+ .ascii "pokefoot"
+ .byte 0x37, 0xF0 ; dir ID
+ .byte 7 | 0x80
+ .ascii "pokegra"
+ .byte 0x38, 0xF0 ; dir ID
+ .byte 7 | 0x80
+ .ascii "trainer"
+ .byte 0x39, 0xF0 ; dir ID
+ .byte 5 | 0x80
+ .ascii "trgra"
+ .byte 0x3A, 0xF0 ; dir ID
+ .byte 5 | 0x80
+ .ascii "trmsg"
+ .byte 0x3B, 0xF0 ; dir ID
+ .byte 4 | 0x80
+ .ascii "waza"
+ .byte 0x3C, 0xF0 ; dir ID
+ .byte 0 ; end
+
+ ; Directory: /icongra
+ .byte 14
+ .ascii "poke_icon.narc"
+ .byte 0 ; end
+
+ ; Directory: /personal
+ .byte 8
+ .ascii "evo.narc"
+ .byte 12
+ .ascii "growtbl.narc"
+ .byte 13
+ .ascii "personal.narc"
+ .byte 8
+ .ascii "pms.narc"
+ .byte 10
+ .ascii "wotbl.narc"
+ .byte 0 ; end
+
+ ; Directory: /pokeanm
+ .byte 12
+ .ascii "pokeanm.narc"
+ .byte 0 ; end
+
+ ; Directory: /pokefoot
+ .byte 13
+ .ascii "pokefoot.narc"
+ .byte 0 ; end
+
+ ; Directory: /pokegra
+ .byte 11
+ .ascii "height.narc"
+ .byte 13
+ .ascii "height_o.narc"
+ .byte 14
+ .ascii "otherpoke.narc"
+ .byte 16
+ .ascii "poke_shadow.narc"
+ .byte 20
+ .ascii "poke_shadow_ofx.narc"
+ .byte 14
+ .ascii "poke_yofs.narc"
+ .byte 12
+ .ascii "pokegra.narc"
+ .byte 0 ; end
+
+ ; Directory: /trainer
+ .byte 11
+ .ascii "trdata.narc"
+ .byte 11
+ .ascii "trpoke.narc"
+ .byte 0 ; end
+
+ ; Directory: /trgra
+ .byte 11
+ .ascii "trbgra.narc"
+ .byte 11
+ .ascii "trfgra.narc"
+ .byte 0 ; end
+
+ ; Directory: /trmsg
+ .byte 10
+ .ascii "trtbl.narc"
+ .byte 13
+ .ascii "trtblofs.narc"
+ .byte 0 ; end
+
+ ; Directory: /waza
+ .byte 13
+ .ascii "waza_tbl.narc"
+ .byte 0 ; end
+
+ ; Directory: /resource
+ .byte 3 | 0x80
+ .ascii "eng"
+ .byte 0x3E, 0xF0 ; dir ID
+ .byte 0 ; end
+
+ ; Directory: /eng
+ .byte 5 | 0x80
+ .ascii "trial"
+ .byte 0x3F, 0xF0 ; dir ID
+ .byte 5 | 0x80
+ .ascii "zukan"
+ .byte 0x40, 0xF0 ; dir ID
+ .byte 0 ; end
+
+ ; Directory: /resource/trial
+ .byte 10
+ .ascii "trial.narc"
+ .byte 0 ; end
+
+ ; Directory: /resource/zukan
+ .byte 10
+ .ascii "zukan.narc"
+ .byte 0 ; end
+
+ ; Directory: /wazaeffect
+ .byte 6
+ .ascii "we.arc"
+ .byte 11
+ .ascii "we_sub.narc"
+ .byte 11 | 0x80
+ .ascii "effectclact"
+ .byte 0x42, 0xF0 ; dir ID
+ .byte 10 | 0x80
+ .ascii "effectdata"
+ .byte 0x43, 0xF0 ; dir ID
+ .byte 8 | 0x80
+ .ascii "pt_debug"
+ .byte 0x44, 0xF0 ; dir ID
+ .byte 0 ; end
+
+ ; Directory: /effectclact
+ .byte 11
+ .ascii "wecell.narc"
+ .byte 14
+ .ascii "wecellanm.narc"
+ .byte 11
+ .ascii "wechar.narc"
+ .byte 11
+ .ascii "wepltt.narc"
+ .byte 0 ; end
+
+ ; Directory: /effectdata
+ .byte 18
+ .ascii "ball_particle.narc"
+ .byte 18
+ .ascii "waza_particle.narc"
+ .byte 0 ; end
+
+ ; Directory: /pt_debug
+ .byte 19
+ .ascii "debug_particle.narc"
+ .byte 0 ; end
+ .balign 4, 0xFF
diff --git a/data/icon.s b/data/icon.s
new file mode 100644
index 00000000..976077b0
--- /dev/null
+++ b/data/icon.s
@@ -0,0 +1,6 @@
+ .text
+ .short 0x0001
+ .short 0x048B
+ .space 0x1C
+ .incbin "graphics/icon.4bpp"
+ .incbin "graphics/icon.gbapal"
diff --git a/data/title.s b/data/title.s
new file mode 100644
index 00000000..56b16107
--- /dev/null
+++ b/data/title.s
@@ -0,0 +1,16 @@
+ .text
+ .global ROMTitles
+ROMTitles:
+ ; UTF16LE has a leading short that should be skipped
+ .incbin "data/title/title.txt", 2
+ .space 0x100-(.-ROMTitles)
+ .incbin "data/title/title.txt", 2
+ .space 0x200-(.-ROMTitles)
+ .incbin "data/title/title.txt", 2
+ .space 0x300-(.-ROMTitles)
+ .incbin "data/title/title.txt", 2
+ .space 0x400-(.-ROMTitles)
+ .incbin "data/title/title.txt", 2
+ .space 0x500-(.-ROMTitles)
+ .incbin "data/title/title.txt", 2
+ .space 0x600-(.-ROMTitles)
diff --git a/data/title/title.txt b/data/title/title.txt
new file mode 100644
index 00000000..2d687892
--- /dev/null
+++ b/data/title/title.txt
Binary files differ
diff --git a/files/FILE_102EC00_poke_shadow.narc.s b/files/FILE_102EC00_poke_shadow.narc.s
new file mode 100644
index 00000000..e012cd7c
--- /dev/null
+++ b/files/FILE_102EC00_poke_shadow.narc.s
@@ -0,0 +1,29 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x0000022C ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000014 ; chunk size
+ .short 1 ; number of files
+ .balign 4
+ .word 0x00000000, 0x000001EE
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x000001F8 ; chunk size
+ .incbin "baserom.nds", 0x102EC3C, 0x1F0
+ .balign 512, 255
diff --git a/files/FILE_102F000_poke_shadow_ofx.narc.s b/files/FILE_102F000_poke_shadow_ofx.narc.s
new file mode 100644
index 00000000..d6ba4d61
--- /dev/null
+++ b/files/FILE_102F000_poke_shadow_ofx.narc.s
@@ -0,0 +1,29 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x0000022C ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000014 ; chunk size
+ .short 1 ; number of files
+ .balign 4
+ .word 0x00000000, 0x000001EE
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x000001F8 ; chunk size
+ .incbin "baserom.nds", 0x102F03C, 0x1F0
+ .balign 512, 255
diff --git a/files/FILE_102F400_poke_yofs.narc.s b/files/FILE_102F400_poke_yofs.narc.s
new file mode 100644
index 00000000..ccd706a2
--- /dev/null
+++ b/files/FILE_102F400_poke_yofs.narc.s
@@ -0,0 +1,29 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x0000022C ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000014 ; chunk size
+ .short 1 ; number of files
+ .balign 4
+ .word 0x00000000, 0x000001EE
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x000001F8 ; chunk size
+ .incbin "baserom.nds", 0x102F43C, 0x1F0
+ .balign 512, 255
diff --git a/files/FILE_102F800_pokegra.narc.s b/files/FILE_102F800_pokegra.narc.s
new file mode 100644
index 00000000..15f33243
--- /dev/null
+++ b/files/FILE_102F800_pokegra.narc.s
@@ -0,0 +1,2992 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00B3BA74 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00005CAC ; chunk size
+ .short 2964 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00001930
+ .word 0x00001930, 0x00003260
+ .word 0x00003260, 0x00004B90
+ .word 0x00004B90, 0x000064C0
+ .word 0x000064C0, 0x00006508
+ .word 0x00006508, 0x00006550
+ .word 0x00006550, 0x00007E80
+ .word 0x00007E80, 0x000097B0
+ .word 0x000097B0, 0x0000B0E0
+ .word 0x0000B0E0, 0x0000CA10
+ .word 0x0000CA10, 0x0000CA58
+ .word 0x0000CA58, 0x0000CAA0
+ .word 0x0000CAA0, 0x0000E3D0
+ .word 0x0000E3D0, 0x0000FD00
+ .word 0x0000FD00, 0x00011630
+ .word 0x00011630, 0x00012F60
+ .word 0x00012F60, 0x00012FA8
+ .word 0x00012FA8, 0x00012FF0
+ .word 0x00012FF0, 0x00014920
+ .word 0x00014920, 0x00016250
+ .word 0x00016250, 0x00017B80
+ .word 0x00017B80, 0x000194B0
+ .word 0x000194B0, 0x000194F8
+ .word 0x000194F8, 0x00019540
+ .word 0x00019540, 0x0001AE70
+ .word 0x0001AE70, 0x0001C7A0
+ .word 0x0001C7A0, 0x0001E0D0
+ .word 0x0001E0D0, 0x0001FA00
+ .word 0x0001FA00, 0x0001FA48
+ .word 0x0001FA48, 0x0001FA90
+ .word 0x0001FA90, 0x000213C0
+ .word 0x000213C0, 0x00022CF0
+ .word 0x00022CF0, 0x00024620
+ .word 0x00024620, 0x00025F50
+ .word 0x00025F50, 0x00025F98
+ .word 0x00025F98, 0x00025FE0
+ .word 0x00025FE0, 0x00027910
+ .word 0x00027910, 0x00029240
+ .word 0x00029240, 0x0002AB70
+ .word 0x0002AB70, 0x0002C4A0
+ .word 0x0002C4A0, 0x0002C4E8
+ .word 0x0002C4E8, 0x0002C530
+ .word 0x0002C530, 0x0002DE60
+ .word 0x0002DE60, 0x0002F790
+ .word 0x0002F790, 0x000310C0
+ .word 0x000310C0, 0x000329F0
+ .word 0x000329F0, 0x00032A38
+ .word 0x00032A38, 0x00032A80
+ .word 0x00032A80, 0x000343B0
+ .word 0x000343B0, 0x00035CE0
+ .word 0x00035CE0, 0x00037610
+ .word 0x00037610, 0x00038F40
+ .word 0x00038F40, 0x00038F88
+ .word 0x00038F88, 0x00038FD0
+ .word 0x00038FD0, 0x0003A900
+ .word 0x0003A900, 0x0003C230
+ .word 0x0003C230, 0x0003DB60
+ .word 0x0003DB60, 0x0003F490
+ .word 0x0003F490, 0x0003F4D8
+ .word 0x0003F4D8, 0x0003F520
+ .word 0x0003F520, 0x00040E50
+ .word 0x00040E50, 0x00042780
+ .word 0x00042780, 0x000440B0
+ .word 0x000440B0, 0x000459E0
+ .word 0x000459E0, 0x00045A28
+ .word 0x00045A28, 0x00045A70
+ .word 0x00045A70, 0x000473A0
+ .word 0x000473A0, 0x00048CD0
+ .word 0x00048CD0, 0x0004A600
+ .word 0x0004A600, 0x0004BF30
+ .word 0x0004BF30, 0x0004BF78
+ .word 0x0004BF78, 0x0004BFC0
+ .word 0x0004BFC0, 0x0004D8F0
+ .word 0x0004D8F0, 0x0004F220
+ .word 0x0004F220, 0x00050B50
+ .word 0x00050B50, 0x00052480
+ .word 0x00052480, 0x000524C8
+ .word 0x000524C8, 0x00052510
+ .word 0x00052510, 0x00053E40
+ .word 0x00053E40, 0x00055770
+ .word 0x00055770, 0x000570A0
+ .word 0x000570A0, 0x000589D0
+ .word 0x000589D0, 0x00058A18
+ .word 0x00058A18, 0x00058A60
+ .word 0x00058A60, 0x0005A390
+ .word 0x0005A390, 0x0005BCC0
+ .word 0x0005BCC0, 0x0005D5F0
+ .word 0x0005D5F0, 0x0005EF20
+ .word 0x0005EF20, 0x0005EF68
+ .word 0x0005EF68, 0x0005EFB0
+ .word 0x0005EFB0, 0x000608E0
+ .word 0x000608E0, 0x00062210
+ .word 0x00062210, 0x00063B40
+ .word 0x00063B40, 0x00065470
+ .word 0x00065470, 0x000654B8
+ .word 0x000654B8, 0x00065500
+ .word 0x00065500, 0x00066E30
+ .word 0x00066E30, 0x00068760
+ .word 0x00068760, 0x0006A090
+ .word 0x0006A090, 0x0006B9C0
+ .word 0x0006B9C0, 0x0006BA08
+ .word 0x0006BA08, 0x0006BA50
+ .word 0x0006BA50, 0x0006D380
+ .word 0x0006D380, 0x0006ECB0
+ .word 0x0006ECB0, 0x000705E0
+ .word 0x000705E0, 0x00071F10
+ .word 0x00071F10, 0x00071F58
+ .word 0x00071F58, 0x00071FA0
+ .word 0x00071FA0, 0x000738D0
+ .word 0x000738D0, 0x00075200
+ .word 0x00075200, 0x00076B30
+ .word 0x00076B30, 0x00078460
+ .word 0x00078460, 0x000784A8
+ .word 0x000784A8, 0x000784F0
+ .word 0x000784F0, 0x00079E20
+ .word 0x00079E20, 0x0007B750
+ .word 0x0007B750, 0x0007D080
+ .word 0x0007D080, 0x0007E9B0
+ .word 0x0007E9B0, 0x0007E9F8
+ .word 0x0007E9F8, 0x0007EA40
+ .word 0x0007EA40, 0x00080370
+ .word 0x00080370, 0x00081CA0
+ .word 0x00081CA0, 0x000835D0
+ .word 0x000835D0, 0x00084F00
+ .word 0x00084F00, 0x00084F48
+ .word 0x00084F48, 0x00084F90
+ .word 0x00084F90, 0x000868C0
+ .word 0x000868C0, 0x000881F0
+ .word 0x000881F0, 0x00089B20
+ .word 0x00089B20, 0x0008B450
+ .word 0x0008B450, 0x0008B498
+ .word 0x0008B498, 0x0008B4E0
+ .word 0x0008B4E0, 0x0008CE10
+ .word 0x0008CE10, 0x0008E740
+ .word 0x0008E740, 0x00090070
+ .word 0x00090070, 0x000919A0
+ .word 0x000919A0, 0x000919E8
+ .word 0x000919E8, 0x00091A30
+ .word 0x00091A30, 0x00093360
+ .word 0x00093360, 0x00094C90
+ .word 0x00094C90, 0x000965C0
+ .word 0x000965C0, 0x00097EF0
+ .word 0x00097EF0, 0x00097F38
+ .word 0x00097F38, 0x00097F80
+ .word 0x00097F80, 0x000998B0
+ .word 0x000998B0, 0x0009B1E0
+ .word 0x0009B1E0, 0x0009CB10
+ .word 0x0009CB10, 0x0009E440
+ .word 0x0009E440, 0x0009E488
+ .word 0x0009E488, 0x0009E4D0
+ .word 0x0009E4D0, 0x0009FE00
+ .word 0x0009FE00, 0x000A1730
+ .word 0x000A1730, 0x000A3060
+ .word 0x000A3060, 0x000A4990
+ .word 0x000A4990, 0x000A49D8
+ .word 0x000A49D8, 0x000A4A20
+ .word 0x000A4A20, 0x000A6350
+ .word 0x000A6350, 0x000A7C80
+ .word 0x000A7C80, 0x000A95B0
+ .word 0x000A95B0, 0x000AAEE0
+ .word 0x000AAEE0, 0x000AAF28
+ .word 0x000AAF28, 0x000AAF70
+ .word 0x000AAF70, 0x000AC8A0
+ .word 0x000AC8A0, 0x000AE1D0
+ .word 0x000AE1D0, 0x000AFB00
+ .word 0x000AFB00, 0x000B1430
+ .word 0x000B1430, 0x000B1478
+ .word 0x000B1478, 0x000B14C0
+ .word 0x000B14C0, 0x000B2DF0
+ .word 0x000B2DF0, 0x000B4720
+ .word 0x000B4720, 0x000B6050
+ .word 0x000B6050, 0x000B7980
+ .word 0x000B7980, 0x000B79C8
+ .word 0x000B79C8, 0x000B7A10
+ .word 0x000B7A10, 0x000B9340
+ .word 0x000B9340, 0x000B9340
+ .word 0x000B9340, 0x000BAC70
+ .word 0x000BAC70, 0x000BAC70
+ .word 0x000BAC70, 0x000BACB8
+ .word 0x000BACB8, 0x000BAD00
+ .word 0x000BAD00, 0x000BC630
+ .word 0x000BC630, 0x000BC630
+ .word 0x000BC630, 0x000BDF60
+ .word 0x000BDF60, 0x000BDF60
+ .word 0x000BDF60, 0x000BDFA8
+ .word 0x000BDFA8, 0x000BDFF0
+ .word 0x000BDFF0, 0x000BF920
+ .word 0x000BF920, 0x000BF920
+ .word 0x000BF920, 0x000C1250
+ .word 0x000C1250, 0x000C1250
+ .word 0x000C1250, 0x000C1298
+ .word 0x000C1298, 0x000C12E0
+ .word 0x000C12E0, 0x000C12E0
+ .word 0x000C12E0, 0x000C2C10
+ .word 0x000C2C10, 0x000C2C10
+ .word 0x000C2C10, 0x000C4540
+ .word 0x000C4540, 0x000C4588
+ .word 0x000C4588, 0x000C45D0
+ .word 0x000C45D0, 0x000C45D0
+ .word 0x000C45D0, 0x000C5F00
+ .word 0x000C5F00, 0x000C5F00
+ .word 0x000C5F00, 0x000C7830
+ .word 0x000C7830, 0x000C7878
+ .word 0x000C7878, 0x000C78C0
+ .word 0x000C78C0, 0x000C78C0
+ .word 0x000C78C0, 0x000C91F0
+ .word 0x000C91F0, 0x000C91F0
+ .word 0x000C91F0, 0x000CAB20
+ .word 0x000CAB20, 0x000CAB68
+ .word 0x000CAB68, 0x000CABB0
+ .word 0x000CABB0, 0x000CC4E0
+ .word 0x000CC4E0, 0x000CDE10
+ .word 0x000CDE10, 0x000CF740
+ .word 0x000CF740, 0x000D1070
+ .word 0x000D1070, 0x000D10B8
+ .word 0x000D10B8, 0x000D1100
+ .word 0x000D1100, 0x000D2A30
+ .word 0x000D2A30, 0x000D4360
+ .word 0x000D4360, 0x000D5C90
+ .word 0x000D5C90, 0x000D75C0
+ .word 0x000D75C0, 0x000D7608
+ .word 0x000D7608, 0x000D7650
+ .word 0x000D7650, 0x000D8F80
+ .word 0x000D8F80, 0x000DA8B0
+ .word 0x000DA8B0, 0x000DC1E0
+ .word 0x000DC1E0, 0x000DDB10
+ .word 0x000DDB10, 0x000DDB58
+ .word 0x000DDB58, 0x000DDBA0
+ .word 0x000DDBA0, 0x000DF4D0
+ .word 0x000DF4D0, 0x000E0E00
+ .word 0x000E0E00, 0x000E2730
+ .word 0x000E2730, 0x000E4060
+ .word 0x000E4060, 0x000E40A8
+ .word 0x000E40A8, 0x000E40F0
+ .word 0x000E40F0, 0x000E5A20
+ .word 0x000E5A20, 0x000E7350
+ .word 0x000E7350, 0x000E8C80
+ .word 0x000E8C80, 0x000EA5B0
+ .word 0x000EA5B0, 0x000EA5F8
+ .word 0x000EA5F8, 0x000EA640
+ .word 0x000EA640, 0x000EBF70
+ .word 0x000EBF70, 0x000ED8A0
+ .word 0x000ED8A0, 0x000EF1D0
+ .word 0x000EF1D0, 0x000F0B00
+ .word 0x000F0B00, 0x000F0B48
+ .word 0x000F0B48, 0x000F0B90
+ .word 0x000F0B90, 0x000F24C0
+ .word 0x000F24C0, 0x000F3DF0
+ .word 0x000F3DF0, 0x000F5720
+ .word 0x000F5720, 0x000F7050
+ .word 0x000F7050, 0x000F7098
+ .word 0x000F7098, 0x000F70E0
+ .word 0x000F70E0, 0x000F8A10
+ .word 0x000F8A10, 0x000FA340
+ .word 0x000FA340, 0x000FBC70
+ .word 0x000FBC70, 0x000FD5A0
+ .word 0x000FD5A0, 0x000FD5E8
+ .word 0x000FD5E8, 0x000FD630
+ .word 0x000FD630, 0x000FEF60
+ .word 0x000FEF60, 0x00100890
+ .word 0x00100890, 0x001021C0
+ .word 0x001021C0, 0x00103AF0
+ .word 0x00103AF0, 0x00103B38
+ .word 0x00103B38, 0x00103B80
+ .word 0x00103B80, 0x001054B0
+ .word 0x001054B0, 0x00106DE0
+ .word 0x00106DE0, 0x00108710
+ .word 0x00108710, 0x0010A040
+ .word 0x0010A040, 0x0010A088
+ .word 0x0010A088, 0x0010A0D0
+ .word 0x0010A0D0, 0x0010BA00
+ .word 0x0010BA00, 0x0010D330
+ .word 0x0010D330, 0x0010EC60
+ .word 0x0010EC60, 0x00110590
+ .word 0x00110590, 0x001105D8
+ .word 0x001105D8, 0x00110620
+ .word 0x00110620, 0x00111F50
+ .word 0x00111F50, 0x00113880
+ .word 0x00113880, 0x001151B0
+ .word 0x001151B0, 0x00116AE0
+ .word 0x00116AE0, 0x00116B28
+ .word 0x00116B28, 0x00116B70
+ .word 0x00116B70, 0x001184A0
+ .word 0x001184A0, 0x00119DD0
+ .word 0x00119DD0, 0x0011B700
+ .word 0x0011B700, 0x0011D030
+ .word 0x0011D030, 0x0011D078
+ .word 0x0011D078, 0x0011D0C0
+ .word 0x0011D0C0, 0x0011E9F0
+ .word 0x0011E9F0, 0x00120320
+ .word 0x00120320, 0x00121C50
+ .word 0x00121C50, 0x00123580
+ .word 0x00123580, 0x001235C8
+ .word 0x001235C8, 0x00123610
+ .word 0x00123610, 0x00124F40
+ .word 0x00124F40, 0x00126870
+ .word 0x00126870, 0x001281A0
+ .word 0x001281A0, 0x00129AD0
+ .word 0x00129AD0, 0x00129B18
+ .word 0x00129B18, 0x00129B60
+ .word 0x00129B60, 0x0012B490
+ .word 0x0012B490, 0x0012CDC0
+ .word 0x0012CDC0, 0x0012E6F0
+ .word 0x0012E6F0, 0x00130020
+ .word 0x00130020, 0x00130068
+ .word 0x00130068, 0x001300B0
+ .word 0x001300B0, 0x001319E0
+ .word 0x001319E0, 0x00133310
+ .word 0x00133310, 0x00134C40
+ .word 0x00134C40, 0x00136570
+ .word 0x00136570, 0x001365B8
+ .word 0x001365B8, 0x00136600
+ .word 0x00136600, 0x00137F30
+ .word 0x00137F30, 0x00139860
+ .word 0x00139860, 0x0013B190
+ .word 0x0013B190, 0x0013CAC0
+ .word 0x0013CAC0, 0x0013CB08
+ .word 0x0013CB08, 0x0013CB50
+ .word 0x0013CB50, 0x0013E480
+ .word 0x0013E480, 0x0013FDB0
+ .word 0x0013FDB0, 0x001416E0
+ .word 0x001416E0, 0x00143010
+ .word 0x00143010, 0x00143058
+ .word 0x00143058, 0x001430A0
+ .word 0x001430A0, 0x001449D0
+ .word 0x001449D0, 0x00146300
+ .word 0x00146300, 0x00147C30
+ .word 0x00147C30, 0x00149560
+ .word 0x00149560, 0x001495A8
+ .word 0x001495A8, 0x001495F0
+ .word 0x001495F0, 0x0014AF20
+ .word 0x0014AF20, 0x0014C850
+ .word 0x0014C850, 0x0014E180
+ .word 0x0014E180, 0x0014FAB0
+ .word 0x0014FAB0, 0x0014FAF8
+ .word 0x0014FAF8, 0x0014FB40
+ .word 0x0014FB40, 0x00151470
+ .word 0x00151470, 0x00152DA0
+ .word 0x00152DA0, 0x001546D0
+ .word 0x001546D0, 0x00156000
+ .word 0x00156000, 0x00156048
+ .word 0x00156048, 0x00156090
+ .word 0x00156090, 0x001579C0
+ .word 0x001579C0, 0x001592F0
+ .word 0x001592F0, 0x0015AC20
+ .word 0x0015AC20, 0x0015C550
+ .word 0x0015C550, 0x0015C598
+ .word 0x0015C598, 0x0015C5E0
+ .word 0x0015C5E0, 0x0015DF10
+ .word 0x0015DF10, 0x0015F840
+ .word 0x0015F840, 0x00161170
+ .word 0x00161170, 0x00162AA0
+ .word 0x00162AA0, 0x00162AE8
+ .word 0x00162AE8, 0x00162B30
+ .word 0x00162B30, 0x00164460
+ .word 0x00164460, 0x00165D90
+ .word 0x00165D90, 0x001676C0
+ .word 0x001676C0, 0x00168FF0
+ .word 0x00168FF0, 0x00169038
+ .word 0x00169038, 0x00169080
+ .word 0x00169080, 0x0016A9B0
+ .word 0x0016A9B0, 0x0016C2E0
+ .word 0x0016C2E0, 0x0016DC10
+ .word 0x0016DC10, 0x0016F540
+ .word 0x0016F540, 0x0016F588
+ .word 0x0016F588, 0x0016F5D0
+ .word 0x0016F5D0, 0x00170F00
+ .word 0x00170F00, 0x00172830
+ .word 0x00172830, 0x00174160
+ .word 0x00174160, 0x00175A90
+ .word 0x00175A90, 0x00175AD8
+ .word 0x00175AD8, 0x00175B20
+ .word 0x00175B20, 0x00177450
+ .word 0x00177450, 0x00178D80
+ .word 0x00178D80, 0x0017A6B0
+ .word 0x0017A6B0, 0x0017BFE0
+ .word 0x0017BFE0, 0x0017C028
+ .word 0x0017C028, 0x0017C070
+ .word 0x0017C070, 0x0017D9A0
+ .word 0x0017D9A0, 0x0017F2D0
+ .word 0x0017F2D0, 0x00180C00
+ .word 0x00180C00, 0x00182530
+ .word 0x00182530, 0x00182578
+ .word 0x00182578, 0x001825C0
+ .word 0x001825C0, 0x00183EF0
+ .word 0x00183EF0, 0x00185820
+ .word 0x00185820, 0x00187150
+ .word 0x00187150, 0x00188A80
+ .word 0x00188A80, 0x00188AC8
+ .word 0x00188AC8, 0x00188B10
+ .word 0x00188B10, 0x0018A440
+ .word 0x0018A440, 0x0018BD70
+ .word 0x0018BD70, 0x0018D6A0
+ .word 0x0018D6A0, 0x0018EFD0
+ .word 0x0018EFD0, 0x0018F018
+ .word 0x0018F018, 0x0018F060
+ .word 0x0018F060, 0x00190990
+ .word 0x00190990, 0x001922C0
+ .word 0x001922C0, 0x00193BF0
+ .word 0x00193BF0, 0x00195520
+ .word 0x00195520, 0x00195568
+ .word 0x00195568, 0x001955B0
+ .word 0x001955B0, 0x00196EE0
+ .word 0x00196EE0, 0x00198810
+ .word 0x00198810, 0x0019A140
+ .word 0x0019A140, 0x0019BA70
+ .word 0x0019BA70, 0x0019BAB8
+ .word 0x0019BAB8, 0x0019BB00
+ .word 0x0019BB00, 0x0019D430
+ .word 0x0019D430, 0x0019ED60
+ .word 0x0019ED60, 0x001A0690
+ .word 0x001A0690, 0x001A1FC0
+ .word 0x001A1FC0, 0x001A2008
+ .word 0x001A2008, 0x001A2050
+ .word 0x001A2050, 0x001A3980
+ .word 0x001A3980, 0x001A52B0
+ .word 0x001A52B0, 0x001A6BE0
+ .word 0x001A6BE0, 0x001A8510
+ .word 0x001A8510, 0x001A8558
+ .word 0x001A8558, 0x001A85A0
+ .word 0x001A85A0, 0x001A9ED0
+ .word 0x001A9ED0, 0x001AB800
+ .word 0x001AB800, 0x001AD130
+ .word 0x001AD130, 0x001AEA60
+ .word 0x001AEA60, 0x001AEAA8
+ .word 0x001AEAA8, 0x001AEAF0
+ .word 0x001AEAF0, 0x001B0420
+ .word 0x001B0420, 0x001B1D50
+ .word 0x001B1D50, 0x001B3680
+ .word 0x001B3680, 0x001B4FB0
+ .word 0x001B4FB0, 0x001B4FF8
+ .word 0x001B4FF8, 0x001B5040
+ .word 0x001B5040, 0x001B6970
+ .word 0x001B6970, 0x001B82A0
+ .word 0x001B82A0, 0x001B9BD0
+ .word 0x001B9BD0, 0x001BB500
+ .word 0x001BB500, 0x001BB548
+ .word 0x001BB548, 0x001BB590
+ .word 0x001BB590, 0x001BCEC0
+ .word 0x001BCEC0, 0x001BE7F0
+ .word 0x001BE7F0, 0x001C0120
+ .word 0x001C0120, 0x001C1A50
+ .word 0x001C1A50, 0x001C1A98
+ .word 0x001C1A98, 0x001C1AE0
+ .word 0x001C1AE0, 0x001C3410
+ .word 0x001C3410, 0x001C4D40
+ .word 0x001C4D40, 0x001C6670
+ .word 0x001C6670, 0x001C7FA0
+ .word 0x001C7FA0, 0x001C7FE8
+ .word 0x001C7FE8, 0x001C8030
+ .word 0x001C8030, 0x001C9960
+ .word 0x001C9960, 0x001CB290
+ .word 0x001CB290, 0x001CCBC0
+ .word 0x001CCBC0, 0x001CE4F0
+ .word 0x001CE4F0, 0x001CE538
+ .word 0x001CE538, 0x001CE580
+ .word 0x001CE580, 0x001CFEB0
+ .word 0x001CFEB0, 0x001D17E0
+ .word 0x001D17E0, 0x001D3110
+ .word 0x001D3110, 0x001D4A40
+ .word 0x001D4A40, 0x001D4A88
+ .word 0x001D4A88, 0x001D4AD0
+ .word 0x001D4AD0, 0x001D6400
+ .word 0x001D6400, 0x001D7D30
+ .word 0x001D7D30, 0x001D9660
+ .word 0x001D9660, 0x001DAF90
+ .word 0x001DAF90, 0x001DAFD8
+ .word 0x001DAFD8, 0x001DB020
+ .word 0x001DB020, 0x001DC950
+ .word 0x001DC950, 0x001DE280
+ .word 0x001DE280, 0x001DFBB0
+ .word 0x001DFBB0, 0x001E14E0
+ .word 0x001E14E0, 0x001E1528
+ .word 0x001E1528, 0x001E1570
+ .word 0x001E1570, 0x001E2EA0
+ .word 0x001E2EA0, 0x001E47D0
+ .word 0x001E47D0, 0x001E6100
+ .word 0x001E6100, 0x001E7A30
+ .word 0x001E7A30, 0x001E7A78
+ .word 0x001E7A78, 0x001E7AC0
+ .word 0x001E7AC0, 0x001E93F0
+ .word 0x001E93F0, 0x001EAD20
+ .word 0x001EAD20, 0x001EC650
+ .word 0x001EC650, 0x001EDF80
+ .word 0x001EDF80, 0x001EDFC8
+ .word 0x001EDFC8, 0x001EE010
+ .word 0x001EE010, 0x001EE010
+ .word 0x001EE010, 0x001EF940
+ .word 0x001EF940, 0x001EF940
+ .word 0x001EF940, 0x001F1270
+ .word 0x001F1270, 0x001F12B8
+ .word 0x001F12B8, 0x001F1300
+ .word 0x001F1300, 0x001F1300
+ .word 0x001F1300, 0x001F2C30
+ .word 0x001F2C30, 0x001F2C30
+ .word 0x001F2C30, 0x001F4560
+ .word 0x001F4560, 0x001F45A8
+ .word 0x001F45A8, 0x001F45F0
+ .word 0x001F45F0, 0x001F5F20
+ .word 0x001F5F20, 0x001F7850
+ .word 0x001F7850, 0x001F9180
+ .word 0x001F9180, 0x001FAAB0
+ .word 0x001FAAB0, 0x001FAAF8
+ .word 0x001FAAF8, 0x001FAB40
+ .word 0x001FAB40, 0x001FC470
+ .word 0x001FC470, 0x001FDDA0
+ .word 0x001FDDA0, 0x001FF6D0
+ .word 0x001FF6D0, 0x00201000
+ .word 0x00201000, 0x00201048
+ .word 0x00201048, 0x00201090
+ .word 0x00201090, 0x002029C0
+ .word 0x002029C0, 0x002042F0
+ .word 0x002042F0, 0x00205C20
+ .word 0x00205C20, 0x00207550
+ .word 0x00207550, 0x00207598
+ .word 0x00207598, 0x002075E0
+ .word 0x002075E0, 0x00208F10
+ .word 0x00208F10, 0x0020A840
+ .word 0x0020A840, 0x0020C170
+ .word 0x0020C170, 0x0020DAA0
+ .word 0x0020DAA0, 0x0020DAE8
+ .word 0x0020DAE8, 0x0020DB30
+ .word 0x0020DB30, 0x0020F460
+ .word 0x0020F460, 0x00210D90
+ .word 0x00210D90, 0x002126C0
+ .word 0x002126C0, 0x00213FF0
+ .word 0x00213FF0, 0x00214038
+ .word 0x00214038, 0x00214080
+ .word 0x00214080, 0x002159B0
+ .word 0x002159B0, 0x002172E0
+ .word 0x002172E0, 0x00218C10
+ .word 0x00218C10, 0x0021A540
+ .word 0x0021A540, 0x0021A588
+ .word 0x0021A588, 0x0021A5D0
+ .word 0x0021A5D0, 0x0021BF00
+ .word 0x0021BF00, 0x0021D830
+ .word 0x0021D830, 0x0021F160
+ .word 0x0021F160, 0x00220A90
+ .word 0x00220A90, 0x00220AD8
+ .word 0x00220AD8, 0x00220B20
+ .word 0x00220B20, 0x00222450
+ .word 0x00222450, 0x00223D80
+ .word 0x00223D80, 0x002256B0
+ .word 0x002256B0, 0x00226FE0
+ .word 0x00226FE0, 0x00227028
+ .word 0x00227028, 0x00227070
+ .word 0x00227070, 0x002289A0
+ .word 0x002289A0, 0x0022A2D0
+ .word 0x0022A2D0, 0x0022BC00
+ .word 0x0022BC00, 0x0022D530
+ .word 0x0022D530, 0x0022D578
+ .word 0x0022D578, 0x0022D5C0
+ .word 0x0022D5C0, 0x0022EEF0
+ .word 0x0022EEF0, 0x00230820
+ .word 0x00230820, 0x00232150
+ .word 0x00232150, 0x00233A80
+ .word 0x00233A80, 0x00233AC8
+ .word 0x00233AC8, 0x00233B10
+ .word 0x00233B10, 0x00235440
+ .word 0x00235440, 0x00236D70
+ .word 0x00236D70, 0x002386A0
+ .word 0x002386A0, 0x00239FD0
+ .word 0x00239FD0, 0x0023A018
+ .word 0x0023A018, 0x0023A060
+ .word 0x0023A060, 0x0023B990
+ .word 0x0023B990, 0x0023D2C0
+ .word 0x0023D2C0, 0x0023EBF0
+ .word 0x0023EBF0, 0x00240520
+ .word 0x00240520, 0x00240568
+ .word 0x00240568, 0x002405B0
+ .word 0x002405B0, 0x00241EE0
+ .word 0x00241EE0, 0x00243810
+ .word 0x00243810, 0x00245140
+ .word 0x00245140, 0x00246A70
+ .word 0x00246A70, 0x00246AB8
+ .word 0x00246AB8, 0x00246B00
+ .word 0x00246B00, 0x00248430
+ .word 0x00248430, 0x00249D60
+ .word 0x00249D60, 0x0024B690
+ .word 0x0024B690, 0x0024CFC0
+ .word 0x0024CFC0, 0x0024D008
+ .word 0x0024D008, 0x0024D050
+ .word 0x0024D050, 0x0024E980
+ .word 0x0024E980, 0x002502B0
+ .word 0x002502B0, 0x00251BE0
+ .word 0x00251BE0, 0x00253510
+ .word 0x00253510, 0x00253558
+ .word 0x00253558, 0x002535A0
+ .word 0x002535A0, 0x00254ED0
+ .word 0x00254ED0, 0x00256800
+ .word 0x00256800, 0x00258130
+ .word 0x00258130, 0x00259A60
+ .word 0x00259A60, 0x00259AA8
+ .word 0x00259AA8, 0x00259AF0
+ .word 0x00259AF0, 0x0025B420
+ .word 0x0025B420, 0x0025CD50
+ .word 0x0025CD50, 0x0025E680
+ .word 0x0025E680, 0x0025FFB0
+ .word 0x0025FFB0, 0x0025FFF8
+ .word 0x0025FFF8, 0x00260040
+ .word 0x00260040, 0x00260040
+ .word 0x00260040, 0x00261970
+ .word 0x00261970, 0x00261970
+ .word 0x00261970, 0x002632A0
+ .word 0x002632A0, 0x002632E8
+ .word 0x002632E8, 0x00263330
+ .word 0x00263330, 0x00263330
+ .word 0x00263330, 0x00264C60
+ .word 0x00264C60, 0x00264C60
+ .word 0x00264C60, 0x00266590
+ .word 0x00266590, 0x002665D8
+ .word 0x002665D8, 0x00266620
+ .word 0x00266620, 0x00267F50
+ .word 0x00267F50, 0x00269880
+ .word 0x00269880, 0x0026B1B0
+ .word 0x0026B1B0, 0x0026CAE0
+ .word 0x0026CAE0, 0x0026CB28
+ .word 0x0026CB28, 0x0026CB70
+ .word 0x0026CB70, 0x0026E4A0
+ .word 0x0026E4A0, 0x0026FDD0
+ .word 0x0026FDD0, 0x00271700
+ .word 0x00271700, 0x00273030
+ .word 0x00273030, 0x00273078
+ .word 0x00273078, 0x002730C0
+ .word 0x002730C0, 0x002749F0
+ .word 0x002749F0, 0x00276320
+ .word 0x00276320, 0x00277C50
+ .word 0x00277C50, 0x00279580
+ .word 0x00279580, 0x002795C8
+ .word 0x002795C8, 0x00279610
+ .word 0x00279610, 0x0027AF40
+ .word 0x0027AF40, 0x0027C870
+ .word 0x0027C870, 0x0027E1A0
+ .word 0x0027E1A0, 0x0027FAD0
+ .word 0x0027FAD0, 0x0027FB18
+ .word 0x0027FB18, 0x0027FB60
+ .word 0x0027FB60, 0x0027FB60
+ .word 0x0027FB60, 0x00281490
+ .word 0x00281490, 0x00281490
+ .word 0x00281490, 0x00282DC0
+ .word 0x00282DC0, 0x00282E08
+ .word 0x00282E08, 0x00282E50
+ .word 0x00282E50, 0x00282E50
+ .word 0x00282E50, 0x00284780
+ .word 0x00284780, 0x00284780
+ .word 0x00284780, 0x002860B0
+ .word 0x002860B0, 0x002860F8
+ .word 0x002860F8, 0x00286140
+ .word 0x00286140, 0x00287A70
+ .word 0x00287A70, 0x002893A0
+ .word 0x002893A0, 0x0028ACD0
+ .word 0x0028ACD0, 0x0028C600
+ .word 0x0028C600, 0x0028C648
+ .word 0x0028C648, 0x0028C690
+ .word 0x0028C690, 0x0028DFC0
+ .word 0x0028DFC0, 0x0028F8F0
+ .word 0x0028F8F0, 0x00291220
+ .word 0x00291220, 0x00292B50
+ .word 0x00292B50, 0x00292B98
+ .word 0x00292B98, 0x00292BE0
+ .word 0x00292BE0, 0x00294510
+ .word 0x00294510, 0x00295E40
+ .word 0x00295E40, 0x00297770
+ .word 0x00297770, 0x002990A0
+ .word 0x002990A0, 0x002990E8
+ .word 0x002990E8, 0x00299130
+ .word 0x00299130, 0x0029AA60
+ .word 0x0029AA60, 0x0029C390
+ .word 0x0029C390, 0x0029DCC0
+ .word 0x0029DCC0, 0x0029F5F0
+ .word 0x0029F5F0, 0x0029F638
+ .word 0x0029F638, 0x0029F680
+ .word 0x0029F680, 0x002A0FB0
+ .word 0x002A0FB0, 0x002A28E0
+ .word 0x002A28E0, 0x002A4210
+ .word 0x002A4210, 0x002A5B40
+ .word 0x002A5B40, 0x002A5B88
+ .word 0x002A5B88, 0x002A5BD0
+ .word 0x002A5BD0, 0x002A7500
+ .word 0x002A7500, 0x002A7500
+ .word 0x002A7500, 0x002A8E30
+ .word 0x002A8E30, 0x002A8E30
+ .word 0x002A8E30, 0x002A8E78
+ .word 0x002A8E78, 0x002A8EC0
+ .word 0x002A8EC0, 0x002AA7F0
+ .word 0x002AA7F0, 0x002AC120
+ .word 0x002AC120, 0x002ADA50
+ .word 0x002ADA50, 0x002AF380
+ .word 0x002AF380, 0x002AF3C8
+ .word 0x002AF3C8, 0x002AF410
+ .word 0x002AF410, 0x002B0D40
+ .word 0x002B0D40, 0x002B0D40
+ .word 0x002B0D40, 0x002B2670
+ .word 0x002B2670, 0x002B2670
+ .word 0x002B2670, 0x002B26B8
+ .word 0x002B26B8, 0x002B2700
+ .word 0x002B2700, 0x002B4030
+ .word 0x002B4030, 0x002B5960
+ .word 0x002B5960, 0x002B7290
+ .word 0x002B7290, 0x002B8BC0
+ .word 0x002B8BC0, 0x002B8C08
+ .word 0x002B8C08, 0x002B8C50
+ .word 0x002B8C50, 0x002BA580
+ .word 0x002BA580, 0x002BBEB0
+ .word 0x002BBEB0, 0x002BD7E0
+ .word 0x002BD7E0, 0x002BF110
+ .word 0x002BF110, 0x002BF158
+ .word 0x002BF158, 0x002BF1A0
+ .word 0x002BF1A0, 0x002C0AD0
+ .word 0x002C0AD0, 0x002C2400
+ .word 0x002C2400, 0x002C3D30
+ .word 0x002C3D30, 0x002C5660
+ .word 0x002C5660, 0x002C56A8
+ .word 0x002C56A8, 0x002C56F0
+ .word 0x002C56F0, 0x002C7020
+ .word 0x002C7020, 0x002C8950
+ .word 0x002C8950, 0x002CA280
+ .word 0x002CA280, 0x002CBBB0
+ .word 0x002CBBB0, 0x002CBBF8
+ .word 0x002CBBF8, 0x002CBC40
+ .word 0x002CBC40, 0x002CBC40
+ .word 0x002CBC40, 0x002CD570
+ .word 0x002CD570, 0x002CD570
+ .word 0x002CD570, 0x002CEEA0
+ .word 0x002CEEA0, 0x002CEEE8
+ .word 0x002CEEE8, 0x002CEF30
+ .word 0x002CEF30, 0x002CEF30
+ .word 0x002CEF30, 0x002D0860
+ .word 0x002D0860, 0x002D0860
+ .word 0x002D0860, 0x002D2190
+ .word 0x002D2190, 0x002D21D8
+ .word 0x002D21D8, 0x002D2220
+ .word 0x002D2220, 0x002D3B50
+ .word 0x002D3B50, 0x002D5480
+ .word 0x002D5480, 0x002D6DB0
+ .word 0x002D6DB0, 0x002D86E0
+ .word 0x002D86E0, 0x002D8728
+ .word 0x002D8728, 0x002D8770
+ .word 0x002D8770, 0x002DA0A0
+ .word 0x002DA0A0, 0x002DB9D0
+ .word 0x002DB9D0, 0x002DD300
+ .word 0x002DD300, 0x002DEC30
+ .word 0x002DEC30, 0x002DEC78
+ .word 0x002DEC78, 0x002DECC0
+ .word 0x002DECC0, 0x002E05F0
+ .word 0x002E05F0, 0x002E05F0
+ .word 0x002E05F0, 0x002E1F20
+ .word 0x002E1F20, 0x002E1F20
+ .word 0x002E1F20, 0x002E1F68
+ .word 0x002E1F68, 0x002E1FB0
+ .word 0x002E1FB0, 0x002E38E0
+ .word 0x002E38E0, 0x002E5210
+ .word 0x002E5210, 0x002E6B40
+ .word 0x002E6B40, 0x002E8470
+ .word 0x002E8470, 0x002E84B8
+ .word 0x002E84B8, 0x002E8500
+ .word 0x002E8500, 0x002E9E30
+ .word 0x002E9E30, 0x002EB760
+ .word 0x002EB760, 0x002ED090
+ .word 0x002ED090, 0x002EE9C0
+ .word 0x002EE9C0, 0x002EEA08
+ .word 0x002EEA08, 0x002EEA50
+ .word 0x002EEA50, 0x002F0380
+ .word 0x002F0380, 0x002F1CB0
+ .word 0x002F1CB0, 0x002F35E0
+ .word 0x002F35E0, 0x002F4F10
+ .word 0x002F4F10, 0x002F4F58
+ .word 0x002F4F58, 0x002F4FA0
+ .word 0x002F4FA0, 0x002F4FA0
+ .word 0x002F4FA0, 0x002F68D0
+ .word 0x002F68D0, 0x002F68D0
+ .word 0x002F68D0, 0x002F8200
+ .word 0x002F8200, 0x002F8248
+ .word 0x002F8248, 0x002F8290
+ .word 0x002F8290, 0x002F9BC0
+ .word 0x002F9BC0, 0x002FB4F0
+ .word 0x002FB4F0, 0x002FCE20
+ .word 0x002FCE20, 0x002FE750
+ .word 0x002FE750, 0x002FE798
+ .word 0x002FE798, 0x002FE7E0
+ .word 0x002FE7E0, 0x00300110
+ .word 0x00300110, 0x00301A40
+ .word 0x00301A40, 0x00303370
+ .word 0x00303370, 0x00304CA0
+ .word 0x00304CA0, 0x00304CE8
+ .word 0x00304CE8, 0x00304D30
+ .word 0x00304D30, 0x00306660
+ .word 0x00306660, 0x00307F90
+ .word 0x00307F90, 0x003098C0
+ .word 0x003098C0, 0x0030B1F0
+ .word 0x0030B1F0, 0x0030B238
+ .word 0x0030B238, 0x0030B280
+ .word 0x0030B280, 0x0030B280
+ .word 0x0030B280, 0x0030CBB0
+ .word 0x0030CBB0, 0x0030CBB0
+ .word 0x0030CBB0, 0x0030E4E0
+ .word 0x0030E4E0, 0x0030E528
+ .word 0x0030E528, 0x0030E570
+ .word 0x0030E570, 0x0030FEA0
+ .word 0x0030FEA0, 0x003117D0
+ .word 0x003117D0, 0x00313100
+ .word 0x00313100, 0x00314A30
+ .word 0x00314A30, 0x00314A78
+ .word 0x00314A78, 0x00314AC0
+ .word 0x00314AC0, 0x003163F0
+ .word 0x003163F0, 0x00317D20
+ .word 0x00317D20, 0x00319650
+ .word 0x00319650, 0x0031AF80
+ .word 0x0031AF80, 0x0031AFC8
+ .word 0x0031AFC8, 0x0031B010
+ .word 0x0031B010, 0x0031C940
+ .word 0x0031C940, 0x0031E270
+ .word 0x0031E270, 0x0031FBA0
+ .word 0x0031FBA0, 0x003214D0
+ .word 0x003214D0, 0x00321518
+ .word 0x00321518, 0x00321560
+ .word 0x00321560, 0x00322E90
+ .word 0x00322E90, 0x003247C0
+ .word 0x003247C0, 0x003260F0
+ .word 0x003260F0, 0x00327A20
+ .word 0x00327A20, 0x00327A68
+ .word 0x00327A68, 0x00327AB0
+ .word 0x00327AB0, 0x00327AB0
+ .word 0x00327AB0, 0x003293E0
+ .word 0x003293E0, 0x003293E0
+ .word 0x003293E0, 0x0032AD10
+ .word 0x0032AD10, 0x0032AD58
+ .word 0x0032AD58, 0x0032ADA0
+ .word 0x0032ADA0, 0x0032C6D0
+ .word 0x0032C6D0, 0x0032E000
+ .word 0x0032E000, 0x0032F930
+ .word 0x0032F930, 0x00331260
+ .word 0x00331260, 0x003312A8
+ .word 0x003312A8, 0x003312F0
+ .word 0x003312F0, 0x00332C20
+ .word 0x00332C20, 0x00334550
+ .word 0x00334550, 0x00335E80
+ .word 0x00335E80, 0x003377B0
+ .word 0x003377B0, 0x003377F8
+ .word 0x003377F8, 0x00337840
+ .word 0x00337840, 0x00339170
+ .word 0x00339170, 0x0033AAA0
+ .word 0x0033AAA0, 0x0033C3D0
+ .word 0x0033C3D0, 0x0033DD00
+ .word 0x0033DD00, 0x0033DD48
+ .word 0x0033DD48, 0x0033DD90
+ .word 0x0033DD90, 0x0033F6C0
+ .word 0x0033F6C0, 0x00340FF0
+ .word 0x00340FF0, 0x00342920
+ .word 0x00342920, 0x00344250
+ .word 0x00344250, 0x00344298
+ .word 0x00344298, 0x003442E0
+ .word 0x003442E0, 0x00345C10
+ .word 0x00345C10, 0x00347540
+ .word 0x00347540, 0x00348E70
+ .word 0x00348E70, 0x0034A7A0
+ .word 0x0034A7A0, 0x0034A7E8
+ .word 0x0034A7E8, 0x0034A830
+ .word 0x0034A830, 0x0034C160
+ .word 0x0034C160, 0x0034DA90
+ .word 0x0034DA90, 0x0034F3C0
+ .word 0x0034F3C0, 0x00350CF0
+ .word 0x00350CF0, 0x00350D38
+ .word 0x00350D38, 0x00350D80
+ .word 0x00350D80, 0x00350D80
+ .word 0x00350D80, 0x003526B0
+ .word 0x003526B0, 0x003526B0
+ .word 0x003526B0, 0x00353FE0
+ .word 0x00353FE0, 0x00354028
+ .word 0x00354028, 0x00354070
+ .word 0x00354070, 0x00354070
+ .word 0x00354070, 0x003559A0
+ .word 0x003559A0, 0x003559A0
+ .word 0x003559A0, 0x003572D0
+ .word 0x003572D0, 0x00357318
+ .word 0x00357318, 0x00357360
+ .word 0x00357360, 0x00357360
+ .word 0x00357360, 0x00358C90
+ .word 0x00358C90, 0x00358C90
+ .word 0x00358C90, 0x0035A5C0
+ .word 0x0035A5C0, 0x0035A608
+ .word 0x0035A608, 0x0035A650
+ .word 0x0035A650, 0x0035BF80
+ .word 0x0035BF80, 0x0035D8B0
+ .word 0x0035D8B0, 0x0035F1E0
+ .word 0x0035F1E0, 0x00360B10
+ .word 0x00360B10, 0x00360B58
+ .word 0x00360B58, 0x00360BA0
+ .word 0x00360BA0, 0x003624D0
+ .word 0x003624D0, 0x00363E00
+ .word 0x00363E00, 0x00365730
+ .word 0x00365730, 0x00367060
+ .word 0x00367060, 0x003670A8
+ .word 0x003670A8, 0x003670F0
+ .word 0x003670F0, 0x00368A20
+ .word 0x00368A20, 0x0036A350
+ .word 0x0036A350, 0x0036BC80
+ .word 0x0036BC80, 0x0036D5B0
+ .word 0x0036D5B0, 0x0036D5F8
+ .word 0x0036D5F8, 0x0036D640
+ .word 0x0036D640, 0x0036D640
+ .word 0x0036D640, 0x0036EF70
+ .word 0x0036EF70, 0x0036EF70
+ .word 0x0036EF70, 0x003708A0
+ .word 0x003708A0, 0x003708E8
+ .word 0x003708E8, 0x00370930
+ .word 0x00370930, 0x00370930
+ .word 0x00370930, 0x00372260
+ .word 0x00372260, 0x00372260
+ .word 0x00372260, 0x00373B90
+ .word 0x00373B90, 0x00373BD8
+ .word 0x00373BD8, 0x00373C20
+ .word 0x00373C20, 0x00375550
+ .word 0x00375550, 0x00376E80
+ .word 0x00376E80, 0x003787B0
+ .word 0x003787B0, 0x0037A0E0
+ .word 0x0037A0E0, 0x0037A128
+ .word 0x0037A128, 0x0037A170
+ .word 0x0037A170, 0x0037BAA0
+ .word 0x0037BAA0, 0x0037D3D0
+ .word 0x0037D3D0, 0x0037ED00
+ .word 0x0037ED00, 0x00380630
+ .word 0x00380630, 0x00380678
+ .word 0x00380678, 0x003806C0
+ .word 0x003806C0, 0x00381FF0
+ .word 0x00381FF0, 0x00383920
+ .word 0x00383920, 0x00385250
+ .word 0x00385250, 0x00386B80
+ .word 0x00386B80, 0x00386BC8
+ .word 0x00386BC8, 0x00386C10
+ .word 0x00386C10, 0x00388540
+ .word 0x00388540, 0x00389E70
+ .word 0x00389E70, 0x0038B7A0
+ .word 0x0038B7A0, 0x0038D0D0
+ .word 0x0038D0D0, 0x0038D118
+ .word 0x0038D118, 0x0038D160
+ .word 0x0038D160, 0x0038EA90
+ .word 0x0038EA90, 0x003903C0
+ .word 0x003903C0, 0x00391CF0
+ .word 0x00391CF0, 0x00393620
+ .word 0x00393620, 0x00393668
+ .word 0x00393668, 0x003936B0
+ .word 0x003936B0, 0x00394FE0
+ .word 0x00394FE0, 0x00396910
+ .word 0x00396910, 0x00398240
+ .word 0x00398240, 0x00399B70
+ .word 0x00399B70, 0x00399BB8
+ .word 0x00399BB8, 0x00399C00
+ .word 0x00399C00, 0x0039B530
+ .word 0x0039B530, 0x0039CE60
+ .word 0x0039CE60, 0x0039E790
+ .word 0x0039E790, 0x003A00C0
+ .word 0x003A00C0, 0x003A0108
+ .word 0x003A0108, 0x003A0150
+ .word 0x003A0150, 0x003A1A80
+ .word 0x003A1A80, 0x003A33B0
+ .word 0x003A33B0, 0x003A4CE0
+ .word 0x003A4CE0, 0x003A6610
+ .word 0x003A6610, 0x003A6658
+ .word 0x003A6658, 0x003A66A0
+ .word 0x003A66A0, 0x003A7FD0
+ .word 0x003A7FD0, 0x003A9900
+ .word 0x003A9900, 0x003AB230
+ .word 0x003AB230, 0x003ACB60
+ .word 0x003ACB60, 0x003ACBA8
+ .word 0x003ACBA8, 0x003ACBF0
+ .word 0x003ACBF0, 0x003AE520
+ .word 0x003AE520, 0x003AFE50
+ .word 0x003AFE50, 0x003B1780
+ .word 0x003B1780, 0x003B30B0
+ .word 0x003B30B0, 0x003B30F8
+ .word 0x003B30F8, 0x003B3140
+ .word 0x003B3140, 0x003B4A70
+ .word 0x003B4A70, 0x003B63A0
+ .word 0x003B63A0, 0x003B7CD0
+ .word 0x003B7CD0, 0x003B9600
+ .word 0x003B9600, 0x003B9648
+ .word 0x003B9648, 0x003B9690
+ .word 0x003B9690, 0x003BAFC0
+ .word 0x003BAFC0, 0x003BC8F0
+ .word 0x003BC8F0, 0x003BE220
+ .word 0x003BE220, 0x003BFB50
+ .word 0x003BFB50, 0x003BFB98
+ .word 0x003BFB98, 0x003BFBE0
+ .word 0x003BFBE0, 0x003C1510
+ .word 0x003C1510, 0x003C2E40
+ .word 0x003C2E40, 0x003C4770
+ .word 0x003C4770, 0x003C60A0
+ .word 0x003C60A0, 0x003C60E8
+ .word 0x003C60E8, 0x003C6130
+ .word 0x003C6130, 0x003C7A60
+ .word 0x003C7A60, 0x003C9390
+ .word 0x003C9390, 0x003CACC0
+ .word 0x003CACC0, 0x003CC5F0
+ .word 0x003CC5F0, 0x003CC638
+ .word 0x003CC638, 0x003CC680
+ .word 0x003CC680, 0x003CDFB0
+ .word 0x003CDFB0, 0x003CF8E0
+ .word 0x003CF8E0, 0x003D1210
+ .word 0x003D1210, 0x003D2B40
+ .word 0x003D2B40, 0x003D2B88
+ .word 0x003D2B88, 0x003D2BD0
+ .word 0x003D2BD0, 0x003D4500
+ .word 0x003D4500, 0x003D5E30
+ .word 0x003D5E30, 0x003D7760
+ .word 0x003D7760, 0x003D9090
+ .word 0x003D9090, 0x003D90D8
+ .word 0x003D90D8, 0x003D9120
+ .word 0x003D9120, 0x003DAA50
+ .word 0x003DAA50, 0x003DC380
+ .word 0x003DC380, 0x003DDCB0
+ .word 0x003DDCB0, 0x003DF5E0
+ .word 0x003DF5E0, 0x003DF628
+ .word 0x003DF628, 0x003DF670
+ .word 0x003DF670, 0x003E0FA0
+ .word 0x003E0FA0, 0x003E28D0
+ .word 0x003E28D0, 0x003E4200
+ .word 0x003E4200, 0x003E5B30
+ .word 0x003E5B30, 0x003E5B78
+ .word 0x003E5B78, 0x003E5BC0
+ .word 0x003E5BC0, 0x003E74F0
+ .word 0x003E74F0, 0x003E8E20
+ .word 0x003E8E20, 0x003EA750
+ .word 0x003EA750, 0x003EC080
+ .word 0x003EC080, 0x003EC0C8
+ .word 0x003EC0C8, 0x003EC110
+ .word 0x003EC110, 0x003EDA40
+ .word 0x003EDA40, 0x003EF370
+ .word 0x003EF370, 0x003F0CA0
+ .word 0x003F0CA0, 0x003F25D0
+ .word 0x003F25D0, 0x003F2618
+ .word 0x003F2618, 0x003F2660
+ .word 0x003F2660, 0x003F3F90
+ .word 0x003F3F90, 0x003F58C0
+ .word 0x003F58C0, 0x003F71F0
+ .word 0x003F71F0, 0x003F8B20
+ .word 0x003F8B20, 0x003F8B68
+ .word 0x003F8B68, 0x003F8BB0
+ .word 0x003F8BB0, 0x003FA4E0
+ .word 0x003FA4E0, 0x003FBE10
+ .word 0x003FBE10, 0x003FD740
+ .word 0x003FD740, 0x003FF070
+ .word 0x003FF070, 0x003FF0B8
+ .word 0x003FF0B8, 0x003FF100
+ .word 0x003FF100, 0x00400A30
+ .word 0x00400A30, 0x00402360
+ .word 0x00402360, 0x00403C90
+ .word 0x00403C90, 0x004055C0
+ .word 0x004055C0, 0x00405608
+ .word 0x00405608, 0x00405650
+ .word 0x00405650, 0x00406F80
+ .word 0x00406F80, 0x004088B0
+ .word 0x004088B0, 0x0040A1E0
+ .word 0x0040A1E0, 0x0040BB10
+ .word 0x0040BB10, 0x0040BB58
+ .word 0x0040BB58, 0x0040BBA0
+ .word 0x0040BBA0, 0x0040D4D0
+ .word 0x0040D4D0, 0x0040EE00
+ .word 0x0040EE00, 0x00410730
+ .word 0x00410730, 0x00412060
+ .word 0x00412060, 0x004120A8
+ .word 0x004120A8, 0x004120F0
+ .word 0x004120F0, 0x00413A20
+ .word 0x00413A20, 0x00415350
+ .word 0x00415350, 0x00416C80
+ .word 0x00416C80, 0x004185B0
+ .word 0x004185B0, 0x004185F8
+ .word 0x004185F8, 0x00418640
+ .word 0x00418640, 0x00419F70
+ .word 0x00419F70, 0x0041B8A0
+ .word 0x0041B8A0, 0x0041D1D0
+ .word 0x0041D1D0, 0x0041EB00
+ .word 0x0041EB00, 0x0041EB48
+ .word 0x0041EB48, 0x0041EB90
+ .word 0x0041EB90, 0x004204C0
+ .word 0x004204C0, 0x00421DF0
+ .word 0x00421DF0, 0x00423720
+ .word 0x00423720, 0x00425050
+ .word 0x00425050, 0x00425098
+ .word 0x00425098, 0x004250E0
+ .word 0x004250E0, 0x00426A10
+ .word 0x00426A10, 0x00428340
+ .word 0x00428340, 0x00429C70
+ .word 0x00429C70, 0x0042B5A0
+ .word 0x0042B5A0, 0x0042B5E8
+ .word 0x0042B5E8, 0x0042B630
+ .word 0x0042B630, 0x0042CF60
+ .word 0x0042CF60, 0x0042E890
+ .word 0x0042E890, 0x004301C0
+ .word 0x004301C0, 0x00431AF0
+ .word 0x00431AF0, 0x00431B38
+ .word 0x00431B38, 0x00431B80
+ .word 0x00431B80, 0x004334B0
+ .word 0x004334B0, 0x00434DE0
+ .word 0x00434DE0, 0x00436710
+ .word 0x00436710, 0x00438040
+ .word 0x00438040, 0x00438088
+ .word 0x00438088, 0x004380D0
+ .word 0x004380D0, 0x00439A00
+ .word 0x00439A00, 0x0043B330
+ .word 0x0043B330, 0x0043CC60
+ .word 0x0043CC60, 0x0043E590
+ .word 0x0043E590, 0x0043E5D8
+ .word 0x0043E5D8, 0x0043E620
+ .word 0x0043E620, 0x0043FF50
+ .word 0x0043FF50, 0x00441880
+ .word 0x00441880, 0x004431B0
+ .word 0x004431B0, 0x00444AE0
+ .word 0x00444AE0, 0x00444B28
+ .word 0x00444B28, 0x00444B70
+ .word 0x00444B70, 0x004464A0
+ .word 0x004464A0, 0x00447DD0
+ .word 0x00447DD0, 0x00449700
+ .word 0x00449700, 0x0044B030
+ .word 0x0044B030, 0x0044B078
+ .word 0x0044B078, 0x0044B0C0
+ .word 0x0044B0C0, 0x0044C9F0
+ .word 0x0044C9F0, 0x0044E320
+ .word 0x0044E320, 0x0044FC50
+ .word 0x0044FC50, 0x00451580
+ .word 0x00451580, 0x004515C8
+ .word 0x004515C8, 0x00451610
+ .word 0x00451610, 0x00452F40
+ .word 0x00452F40, 0x00454870
+ .word 0x00454870, 0x004561A0
+ .word 0x004561A0, 0x00457AD0
+ .word 0x00457AD0, 0x00457B18
+ .word 0x00457B18, 0x00457B60
+ .word 0x00457B60, 0x00459490
+ .word 0x00459490, 0x0045ADC0
+ .word 0x0045ADC0, 0x0045C6F0
+ .word 0x0045C6F0, 0x0045E020
+ .word 0x0045E020, 0x0045E068
+ .word 0x0045E068, 0x0045E0B0
+ .word 0x0045E0B0, 0x0045F9E0
+ .word 0x0045F9E0, 0x00461310
+ .word 0x00461310, 0x00462C40
+ .word 0x00462C40, 0x00464570
+ .word 0x00464570, 0x004645B8
+ .word 0x004645B8, 0x00464600
+ .word 0x00464600, 0x00465F30
+ .word 0x00465F30, 0x00467860
+ .word 0x00467860, 0x00469190
+ .word 0x00469190, 0x0046AAC0
+ .word 0x0046AAC0, 0x0046AB08
+ .word 0x0046AB08, 0x0046AB50
+ .word 0x0046AB50, 0x0046C480
+ .word 0x0046C480, 0x0046DDB0
+ .word 0x0046DDB0, 0x0046F6E0
+ .word 0x0046F6E0, 0x00471010
+ .word 0x00471010, 0x00471058
+ .word 0x00471058, 0x004710A0
+ .word 0x004710A0, 0x004729D0
+ .word 0x004729D0, 0x00474300
+ .word 0x00474300, 0x00475C30
+ .word 0x00475C30, 0x00477560
+ .word 0x00477560, 0x004775A8
+ .word 0x004775A8, 0x004775F0
+ .word 0x004775F0, 0x00478F20
+ .word 0x00478F20, 0x0047A850
+ .word 0x0047A850, 0x0047C180
+ .word 0x0047C180, 0x0047DAB0
+ .word 0x0047DAB0, 0x0047DAF8
+ .word 0x0047DAF8, 0x0047DB40
+ .word 0x0047DB40, 0x0047F470
+ .word 0x0047F470, 0x00480DA0
+ .word 0x00480DA0, 0x004826D0
+ .word 0x004826D0, 0x00484000
+ .word 0x00484000, 0x00484048
+ .word 0x00484048, 0x00484090
+ .word 0x00484090, 0x004859C0
+ .word 0x004859C0, 0x004872F0
+ .word 0x004872F0, 0x00488C20
+ .word 0x00488C20, 0x0048A550
+ .word 0x0048A550, 0x0048A598
+ .word 0x0048A598, 0x0048A5E0
+ .word 0x0048A5E0, 0x0048BF10
+ .word 0x0048BF10, 0x0048D840
+ .word 0x0048D840, 0x0048F170
+ .word 0x0048F170, 0x00490AA0
+ .word 0x00490AA0, 0x00490AE8
+ .word 0x00490AE8, 0x00490B30
+ .word 0x00490B30, 0x00492460
+ .word 0x00492460, 0x00493D90
+ .word 0x00493D90, 0x004956C0
+ .word 0x004956C0, 0x00496FF0
+ .word 0x00496FF0, 0x00497038
+ .word 0x00497038, 0x00497080
+ .word 0x00497080, 0x004989B0
+ .word 0x004989B0, 0x0049A2E0
+ .word 0x0049A2E0, 0x0049BC10
+ .word 0x0049BC10, 0x0049D540
+ .word 0x0049D540, 0x0049D588
+ .word 0x0049D588, 0x0049D5D0
+ .word 0x0049D5D0, 0x0049EF00
+ .word 0x0049EF00, 0x004A0830
+ .word 0x004A0830, 0x004A2160
+ .word 0x004A2160, 0x004A3A90
+ .word 0x004A3A90, 0x004A3AD8
+ .word 0x004A3AD8, 0x004A3B20
+ .word 0x004A3B20, 0x004A5450
+ .word 0x004A5450, 0x004A6D80
+ .word 0x004A6D80, 0x004A86B0
+ .word 0x004A86B0, 0x004A9FE0
+ .word 0x004A9FE0, 0x004AA028
+ .word 0x004AA028, 0x004AA070
+ .word 0x004AA070, 0x004AA070
+ .word 0x004AA070, 0x004AB9A0
+ .word 0x004AB9A0, 0x004AB9A0
+ .word 0x004AB9A0, 0x004AD2D0
+ .word 0x004AD2D0, 0x004AD318
+ .word 0x004AD318, 0x004AD360
+ .word 0x004AD360, 0x004AEC90
+ .word 0x004AEC90, 0x004B05C0
+ .word 0x004B05C0, 0x004B1EF0
+ .word 0x004B1EF0, 0x004B3820
+ .word 0x004B3820, 0x004B3868
+ .word 0x004B3868, 0x004B38B0
+ .word 0x004B38B0, 0x004B51E0
+ .word 0x004B51E0, 0x004B6B10
+ .word 0x004B6B10, 0x004B8440
+ .word 0x004B8440, 0x004B9D70
+ .word 0x004B9D70, 0x004B9DB8
+ .word 0x004B9DB8, 0x004B9E00
+ .word 0x004B9E00, 0x004BB730
+ .word 0x004BB730, 0x004BD060
+ .word 0x004BD060, 0x004BE990
+ .word 0x004BE990, 0x004C02C0
+ .word 0x004C02C0, 0x004C0308
+ .word 0x004C0308, 0x004C0350
+ .word 0x004C0350, 0x004C1C80
+ .word 0x004C1C80, 0x004C35B0
+ .word 0x004C35B0, 0x004C4EE0
+ .word 0x004C4EE0, 0x004C6810
+ .word 0x004C6810, 0x004C6858
+ .word 0x004C6858, 0x004C68A0
+ .word 0x004C68A0, 0x004C81D0
+ .word 0x004C81D0, 0x004C9B00
+ .word 0x004C9B00, 0x004CB430
+ .word 0x004CB430, 0x004CCD60
+ .word 0x004CCD60, 0x004CCDA8
+ .word 0x004CCDA8, 0x004CCDF0
+ .word 0x004CCDF0, 0x004CE720
+ .word 0x004CE720, 0x004D0050
+ .word 0x004D0050, 0x004D1980
+ .word 0x004D1980, 0x004D32B0
+ .word 0x004D32B0, 0x004D32F8
+ .word 0x004D32F8, 0x004D3340
+ .word 0x004D3340, 0x004D4C70
+ .word 0x004D4C70, 0x004D65A0
+ .word 0x004D65A0, 0x004D7ED0
+ .word 0x004D7ED0, 0x004D9800
+ .word 0x004D9800, 0x004D9848
+ .word 0x004D9848, 0x004D9890
+ .word 0x004D9890, 0x004DB1C0
+ .word 0x004DB1C0, 0x004DCAF0
+ .word 0x004DCAF0, 0x004DE420
+ .word 0x004DE420, 0x004DFD50
+ .word 0x004DFD50, 0x004DFD98
+ .word 0x004DFD98, 0x004DFDE0
+ .word 0x004DFDE0, 0x004E1710
+ .word 0x004E1710, 0x004E3040
+ .word 0x004E3040, 0x004E4970
+ .word 0x004E4970, 0x004E62A0
+ .word 0x004E62A0, 0x004E62E8
+ .word 0x004E62E8, 0x004E6330
+ .word 0x004E6330, 0x004E7C60
+ .word 0x004E7C60, 0x004E9590
+ .word 0x004E9590, 0x004EAEC0
+ .word 0x004EAEC0, 0x004EC7F0
+ .word 0x004EC7F0, 0x004EC838
+ .word 0x004EC838, 0x004EC880
+ .word 0x004EC880, 0x004EE1B0
+ .word 0x004EE1B0, 0x004EFAE0
+ .word 0x004EFAE0, 0x004F1410
+ .word 0x004F1410, 0x004F2D40
+ .word 0x004F2D40, 0x004F2D88
+ .word 0x004F2D88, 0x004F2DD0
+ .word 0x004F2DD0, 0x004F4700
+ .word 0x004F4700, 0x004F6030
+ .word 0x004F6030, 0x004F7960
+ .word 0x004F7960, 0x004F9290
+ .word 0x004F9290, 0x004F92D8
+ .word 0x004F92D8, 0x004F9320
+ .word 0x004F9320, 0x004FAC50
+ .word 0x004FAC50, 0x004FC580
+ .word 0x004FC580, 0x004FDEB0
+ .word 0x004FDEB0, 0x004FF7E0
+ .word 0x004FF7E0, 0x004FF828
+ .word 0x004FF828, 0x004FF870
+ .word 0x004FF870, 0x005011A0
+ .word 0x005011A0, 0x00502AD0
+ .word 0x00502AD0, 0x00504400
+ .word 0x00504400, 0x00505D30
+ .word 0x00505D30, 0x00505D78
+ .word 0x00505D78, 0x00505DC0
+ .word 0x00505DC0, 0x005076F0
+ .word 0x005076F0, 0x00509020
+ .word 0x00509020, 0x0050A950
+ .word 0x0050A950, 0x0050C280
+ .word 0x0050C280, 0x0050C2C8
+ .word 0x0050C2C8, 0x0050C310
+ .word 0x0050C310, 0x0050DC40
+ .word 0x0050DC40, 0x0050F570
+ .word 0x0050F570, 0x00510EA0
+ .word 0x00510EA0, 0x005127D0
+ .word 0x005127D0, 0x00512818
+ .word 0x00512818, 0x00512860
+ .word 0x00512860, 0x00514190
+ .word 0x00514190, 0x00515AC0
+ .word 0x00515AC0, 0x005173F0
+ .word 0x005173F0, 0x00518D20
+ .word 0x00518D20, 0x00518D68
+ .word 0x00518D68, 0x00518DB0
+ .word 0x00518DB0, 0x0051A6E0
+ .word 0x0051A6E0, 0x0051C010
+ .word 0x0051C010, 0x0051D940
+ .word 0x0051D940, 0x0051F270
+ .word 0x0051F270, 0x0051F2B8
+ .word 0x0051F2B8, 0x0051F300
+ .word 0x0051F300, 0x00520C30
+ .word 0x00520C30, 0x00522560
+ .word 0x00522560, 0x00523E90
+ .word 0x00523E90, 0x005257C0
+ .word 0x005257C0, 0x00525808
+ .word 0x00525808, 0x00525850
+ .word 0x00525850, 0x00527180
+ .word 0x00527180, 0x00528AB0
+ .word 0x00528AB0, 0x0052A3E0
+ .word 0x0052A3E0, 0x0052BD10
+ .word 0x0052BD10, 0x0052BD58
+ .word 0x0052BD58, 0x0052BDA0
+ .word 0x0052BDA0, 0x0052D6D0
+ .word 0x0052D6D0, 0x0052F000
+ .word 0x0052F000, 0x00530930
+ .word 0x00530930, 0x00532260
+ .word 0x00532260, 0x005322A8
+ .word 0x005322A8, 0x005322F0
+ .word 0x005322F0, 0x00533C20
+ .word 0x00533C20, 0x00535550
+ .word 0x00535550, 0x00536E80
+ .word 0x00536E80, 0x005387B0
+ .word 0x005387B0, 0x005387F8
+ .word 0x005387F8, 0x00538840
+ .word 0x00538840, 0x0053A170
+ .word 0x0053A170, 0x0053BAA0
+ .word 0x0053BAA0, 0x0053D3D0
+ .word 0x0053D3D0, 0x0053ED00
+ .word 0x0053ED00, 0x0053ED48
+ .word 0x0053ED48, 0x0053ED90
+ .word 0x0053ED90, 0x005406C0
+ .word 0x005406C0, 0x00541FF0
+ .word 0x00541FF0, 0x00543920
+ .word 0x00543920, 0x00545250
+ .word 0x00545250, 0x00545298
+ .word 0x00545298, 0x005452E0
+ .word 0x005452E0, 0x00546C10
+ .word 0x00546C10, 0x00548540
+ .word 0x00548540, 0x00549E70
+ .word 0x00549E70, 0x0054B7A0
+ .word 0x0054B7A0, 0x0054B7E8
+ .word 0x0054B7E8, 0x0054B830
+ .word 0x0054B830, 0x0054D160
+ .word 0x0054D160, 0x0054EA90
+ .word 0x0054EA90, 0x005503C0
+ .word 0x005503C0, 0x00551CF0
+ .word 0x00551CF0, 0x00551D38
+ .word 0x00551D38, 0x00551D80
+ .word 0x00551D80, 0x005536B0
+ .word 0x005536B0, 0x00554FE0
+ .word 0x00554FE0, 0x00556910
+ .word 0x00556910, 0x00558240
+ .word 0x00558240, 0x00558288
+ .word 0x00558288, 0x005582D0
+ .word 0x005582D0, 0x00559C00
+ .word 0x00559C00, 0x0055B530
+ .word 0x0055B530, 0x0055CE60
+ .word 0x0055CE60, 0x0055E790
+ .word 0x0055E790, 0x0055E7D8
+ .word 0x0055E7D8, 0x0055E820
+ .word 0x0055E820, 0x00560150
+ .word 0x00560150, 0x00561A80
+ .word 0x00561A80, 0x005633B0
+ .word 0x005633B0, 0x00564CE0
+ .word 0x00564CE0, 0x00564D28
+ .word 0x00564D28, 0x00564D70
+ .word 0x00564D70, 0x005666A0
+ .word 0x005666A0, 0x00567FD0
+ .word 0x00567FD0, 0x00569900
+ .word 0x00569900, 0x0056B230
+ .word 0x0056B230, 0x0056B278
+ .word 0x0056B278, 0x0056B2C0
+ .word 0x0056B2C0, 0x0056CBF0
+ .word 0x0056CBF0, 0x0056E520
+ .word 0x0056E520, 0x0056FE50
+ .word 0x0056FE50, 0x00571780
+ .word 0x00571780, 0x005717C8
+ .word 0x005717C8, 0x00571810
+ .word 0x00571810, 0x00571810
+ .word 0x00571810, 0x00573140
+ .word 0x00573140, 0x00573140
+ .word 0x00573140, 0x00574A70
+ .word 0x00574A70, 0x00574AB8
+ .word 0x00574AB8, 0x00574B00
+ .word 0x00574B00, 0x00576430
+ .word 0x00576430, 0x00577D60
+ .word 0x00577D60, 0x00579690
+ .word 0x00579690, 0x0057AFC0
+ .word 0x0057AFC0, 0x0057B008
+ .word 0x0057B008, 0x0057B050
+ .word 0x0057B050, 0x0057C980
+ .word 0x0057C980, 0x0057E2B0
+ .word 0x0057E2B0, 0x0057FBE0
+ .word 0x0057FBE0, 0x00581510
+ .word 0x00581510, 0x00581558
+ .word 0x00581558, 0x005815A0
+ .word 0x005815A0, 0x005815A0
+ .word 0x005815A0, 0x00582ED0
+ .word 0x00582ED0, 0x00582ED0
+ .word 0x00582ED0, 0x00584800
+ .word 0x00584800, 0x00584848
+ .word 0x00584848, 0x00584890
+ .word 0x00584890, 0x00584890
+ .word 0x00584890, 0x005861C0
+ .word 0x005861C0, 0x005861C0
+ .word 0x005861C0, 0x00587AF0
+ .word 0x00587AF0, 0x00587B38
+ .word 0x00587B38, 0x00587B80
+ .word 0x00587B80, 0x005894B0
+ .word 0x005894B0, 0x005894B0
+ .word 0x005894B0, 0x0058ADE0
+ .word 0x0058ADE0, 0x0058ADE0
+ .word 0x0058ADE0, 0x0058AE28
+ .word 0x0058AE28, 0x0058AE70
+ .word 0x0058AE70, 0x0058C7A0
+ .word 0x0058C7A0, 0x0058E0D0
+ .word 0x0058E0D0, 0x0058FA00
+ .word 0x0058FA00, 0x00591330
+ .word 0x00591330, 0x00591378
+ .word 0x00591378, 0x005913C0
+ .word 0x005913C0, 0x00592CF0
+ .word 0x00592CF0, 0x00594620
+ .word 0x00594620, 0x00595F50
+ .word 0x00595F50, 0x00597880
+ .word 0x00597880, 0x005978C8
+ .word 0x005978C8, 0x00597910
+ .word 0x00597910, 0x00599240
+ .word 0x00599240, 0x00599240
+ .word 0x00599240, 0x0059AB70
+ .word 0x0059AB70, 0x0059AB70
+ .word 0x0059AB70, 0x0059ABB8
+ .word 0x0059ABB8, 0x0059AC00
+ .word 0x0059AC00, 0x0059C530
+ .word 0x0059C530, 0x0059C530
+ .word 0x0059C530, 0x0059DE60
+ .word 0x0059DE60, 0x0059DE60
+ .word 0x0059DE60, 0x0059DEA8
+ .word 0x0059DEA8, 0x0059DEF0
+ .word 0x0059DEF0, 0x0059DEF0
+ .word 0x0059DEF0, 0x0059F820
+ .word 0x0059F820, 0x0059F820
+ .word 0x0059F820, 0x005A1150
+ .word 0x005A1150, 0x005A1198
+ .word 0x005A1198, 0x005A11E0
+ .word 0x005A11E0, 0x005A11E0
+ .word 0x005A11E0, 0x005A2B10
+ .word 0x005A2B10, 0x005A2B10
+ .word 0x005A2B10, 0x005A4440
+ .word 0x005A4440, 0x005A4488
+ .word 0x005A4488, 0x005A44D0
+ .word 0x005A44D0, 0x005A44D0
+ .word 0x005A44D0, 0x005A5E00
+ .word 0x005A5E00, 0x005A5E00
+ .word 0x005A5E00, 0x005A7730
+ .word 0x005A7730, 0x005A7778
+ .word 0x005A7778, 0x005A77C0
+ .word 0x005A77C0, 0x005A90F0
+ .word 0x005A90F0, 0x005AAA20
+ .word 0x005AAA20, 0x005AC350
+ .word 0x005AC350, 0x005ADC80
+ .word 0x005ADC80, 0x005ADCC8
+ .word 0x005ADCC8, 0x005ADD10
+ .word 0x005ADD10, 0x005AF640
+ .word 0x005AF640, 0x005B0F70
+ .word 0x005B0F70, 0x005B28A0
+ .word 0x005B28A0, 0x005B41D0
+ .word 0x005B41D0, 0x005B4218
+ .word 0x005B4218, 0x005B4260
+ .word 0x005B4260, 0x005B5B90
+ .word 0x005B5B90, 0x005B74C0
+ .word 0x005B74C0, 0x005B8DF0
+ .word 0x005B8DF0, 0x005BA720
+ .word 0x005BA720, 0x005BA768
+ .word 0x005BA768, 0x005BA7B0
+ .word 0x005BA7B0, 0x005BA7B0
+ .word 0x005BA7B0, 0x005BC0E0
+ .word 0x005BC0E0, 0x005BC0E0
+ .word 0x005BC0E0, 0x005BDA10
+ .word 0x005BDA10, 0x005BDA58
+ .word 0x005BDA58, 0x005BDAA0
+ .word 0x005BDAA0, 0x005BDAA0
+ .word 0x005BDAA0, 0x005BF3D0
+ .word 0x005BF3D0, 0x005BF3D0
+ .word 0x005BF3D0, 0x005C0D00
+ .word 0x005C0D00, 0x005C0D48
+ .word 0x005C0D48, 0x005C0D90
+ .word 0x005C0D90, 0x005C0D90
+ .word 0x005C0D90, 0x005C26C0
+ .word 0x005C26C0, 0x005C26C0
+ .word 0x005C26C0, 0x005C3FF0
+ .word 0x005C3FF0, 0x005C4038
+ .word 0x005C4038, 0x005C4080
+ .word 0x005C4080, 0x005C59B0
+ .word 0x005C59B0, 0x005C72E0
+ .word 0x005C72E0, 0x005C8C10
+ .word 0x005C8C10, 0x005CA540
+ .word 0x005CA540, 0x005CA588
+ .word 0x005CA588, 0x005CA5D0
+ .word 0x005CA5D0, 0x005CBF00
+ .word 0x005CBF00, 0x005CD830
+ .word 0x005CD830, 0x005CF160
+ .word 0x005CF160, 0x005D0A90
+ .word 0x005D0A90, 0x005D0AD8
+ .word 0x005D0AD8, 0x005D0B20
+ .word 0x005D0B20, 0x005D2450
+ .word 0x005D2450, 0x005D3D80
+ .word 0x005D3D80, 0x005D56B0
+ .word 0x005D56B0, 0x005D6FE0
+ .word 0x005D6FE0, 0x005D7028
+ .word 0x005D7028, 0x005D7070
+ .word 0x005D7070, 0x005D89A0
+ .word 0x005D89A0, 0x005DA2D0
+ .word 0x005DA2D0, 0x005DBC00
+ .word 0x005DBC00, 0x005DD530
+ .word 0x005DD530, 0x005DD578
+ .word 0x005DD578, 0x005DD5C0
+ .word 0x005DD5C0, 0x005DEEF0
+ .word 0x005DEEF0, 0x005E0820
+ .word 0x005E0820, 0x005E2150
+ .word 0x005E2150, 0x005E3A80
+ .word 0x005E3A80, 0x005E3AC8
+ .word 0x005E3AC8, 0x005E3B10
+ .word 0x005E3B10, 0x005E5440
+ .word 0x005E5440, 0x005E6D70
+ .word 0x005E6D70, 0x005E86A0
+ .word 0x005E86A0, 0x005E9FD0
+ .word 0x005E9FD0, 0x005EA018
+ .word 0x005EA018, 0x005EA060
+ .word 0x005EA060, 0x005EB990
+ .word 0x005EB990, 0x005ED2C0
+ .word 0x005ED2C0, 0x005EEBF0
+ .word 0x005EEBF0, 0x005F0520
+ .word 0x005F0520, 0x005F0568
+ .word 0x005F0568, 0x005F05B0
+ .word 0x005F05B0, 0x005F1EE0
+ .word 0x005F1EE0, 0x005F3810
+ .word 0x005F3810, 0x005F5140
+ .word 0x005F5140, 0x005F6A70
+ .word 0x005F6A70, 0x005F6AB8
+ .word 0x005F6AB8, 0x005F6B00
+ .word 0x005F6B00, 0x005F8430
+ .word 0x005F8430, 0x005F9D60
+ .word 0x005F9D60, 0x005FB690
+ .word 0x005FB690, 0x005FCFC0
+ .word 0x005FCFC0, 0x005FD008
+ .word 0x005FD008, 0x005FD050
+ .word 0x005FD050, 0x005FE980
+ .word 0x005FE980, 0x006002B0
+ .word 0x006002B0, 0x00601BE0
+ .word 0x00601BE0, 0x00603510
+ .word 0x00603510, 0x00603558
+ .word 0x00603558, 0x006035A0
+ .word 0x006035A0, 0x00604ED0
+ .word 0x00604ED0, 0x00606800
+ .word 0x00606800, 0x00608130
+ .word 0x00608130, 0x00609A60
+ .word 0x00609A60, 0x00609AA8
+ .word 0x00609AA8, 0x00609AF0
+ .word 0x00609AF0, 0x0060B420
+ .word 0x0060B420, 0x0060CD50
+ .word 0x0060CD50, 0x0060E680
+ .word 0x0060E680, 0x0060FFB0
+ .word 0x0060FFB0, 0x0060FFF8
+ .word 0x0060FFF8, 0x00610040
+ .word 0x00610040, 0x00611970
+ .word 0x00611970, 0x006132A0
+ .word 0x006132A0, 0x00614BD0
+ .word 0x00614BD0, 0x00616500
+ .word 0x00616500, 0x00616548
+ .word 0x00616548, 0x00616590
+ .word 0x00616590, 0x00617EC0
+ .word 0x00617EC0, 0x006197F0
+ .word 0x006197F0, 0x0061B120
+ .word 0x0061B120, 0x0061CA50
+ .word 0x0061CA50, 0x0061CA98
+ .word 0x0061CA98, 0x0061CAE0
+ .word 0x0061CAE0, 0x0061E410
+ .word 0x0061E410, 0x0061FD40
+ .word 0x0061FD40, 0x00621670
+ .word 0x00621670, 0x00622FA0
+ .word 0x00622FA0, 0x00622FE8
+ .word 0x00622FE8, 0x00623030
+ .word 0x00623030, 0x00624960
+ .word 0x00624960, 0x00626290
+ .word 0x00626290, 0x00627BC0
+ .word 0x00627BC0, 0x006294F0
+ .word 0x006294F0, 0x00629538
+ .word 0x00629538, 0x00629580
+ .word 0x00629580, 0x0062AEB0
+ .word 0x0062AEB0, 0x0062C7E0
+ .word 0x0062C7E0, 0x0062E110
+ .word 0x0062E110, 0x0062FA40
+ .word 0x0062FA40, 0x0062FA88
+ .word 0x0062FA88, 0x0062FAD0
+ .word 0x0062FAD0, 0x00631400
+ .word 0x00631400, 0x00632D30
+ .word 0x00632D30, 0x00634660
+ .word 0x00634660, 0x00635F90
+ .word 0x00635F90, 0x00635FD8
+ .word 0x00635FD8, 0x00636020
+ .word 0x00636020, 0x00637950
+ .word 0x00637950, 0x00639280
+ .word 0x00639280, 0x0063ABB0
+ .word 0x0063ABB0, 0x0063C4E0
+ .word 0x0063C4E0, 0x0063C528
+ .word 0x0063C528, 0x0063C570
+ .word 0x0063C570, 0x0063DEA0
+ .word 0x0063DEA0, 0x0063F7D0
+ .word 0x0063F7D0, 0x00641100
+ .word 0x00641100, 0x00642A30
+ .word 0x00642A30, 0x00642A78
+ .word 0x00642A78, 0x00642AC0
+ .word 0x00642AC0, 0x006443F0
+ .word 0x006443F0, 0x00645D20
+ .word 0x00645D20, 0x00647650
+ .word 0x00647650, 0x00648F80
+ .word 0x00648F80, 0x00648FC8
+ .word 0x00648FC8, 0x00649010
+ .word 0x00649010, 0x0064A940
+ .word 0x0064A940, 0x0064C270
+ .word 0x0064C270, 0x0064DBA0
+ .word 0x0064DBA0, 0x0064F4D0
+ .word 0x0064F4D0, 0x0064F518
+ .word 0x0064F518, 0x0064F560
+ .word 0x0064F560, 0x00650E90
+ .word 0x00650E90, 0x006527C0
+ .word 0x006527C0, 0x006540F0
+ .word 0x006540F0, 0x00655A20
+ .word 0x00655A20, 0x00655A68
+ .word 0x00655A68, 0x00655AB0
+ .word 0x00655AB0, 0x006573E0
+ .word 0x006573E0, 0x00658D10
+ .word 0x00658D10, 0x0065A640
+ .word 0x0065A640, 0x0065BF70
+ .word 0x0065BF70, 0x0065BFB8
+ .word 0x0065BFB8, 0x0065C000
+ .word 0x0065C000, 0x0065D930
+ .word 0x0065D930, 0x0065F260
+ .word 0x0065F260, 0x00660B90
+ .word 0x00660B90, 0x006624C0
+ .word 0x006624C0, 0x00662508
+ .word 0x00662508, 0x00662550
+ .word 0x00662550, 0x00663E80
+ .word 0x00663E80, 0x006657B0
+ .word 0x006657B0, 0x006670E0
+ .word 0x006670E0, 0x00668A10
+ .word 0x00668A10, 0x00668A58
+ .word 0x00668A58, 0x00668AA0
+ .word 0x00668AA0, 0x0066A3D0
+ .word 0x0066A3D0, 0x0066BD00
+ .word 0x0066BD00, 0x0066D630
+ .word 0x0066D630, 0x0066EF60
+ .word 0x0066EF60, 0x0066EFA8
+ .word 0x0066EFA8, 0x0066EFF0
+ .word 0x0066EFF0, 0x00670920
+ .word 0x00670920, 0x00672250
+ .word 0x00672250, 0x00673B80
+ .word 0x00673B80, 0x006754B0
+ .word 0x006754B0, 0x006754F8
+ .word 0x006754F8, 0x00675540
+ .word 0x00675540, 0x00676E70
+ .word 0x00676E70, 0x006787A0
+ .word 0x006787A0, 0x0067A0D0
+ .word 0x0067A0D0, 0x0067BA00
+ .word 0x0067BA00, 0x0067BA48
+ .word 0x0067BA48, 0x0067BA90
+ .word 0x0067BA90, 0x0067D3C0
+ .word 0x0067D3C0, 0x0067ECF0
+ .word 0x0067ECF0, 0x00680620
+ .word 0x00680620, 0x00681F50
+ .word 0x00681F50, 0x00681F98
+ .word 0x00681F98, 0x00681FE0
+ .word 0x00681FE0, 0x00683910
+ .word 0x00683910, 0x00685240
+ .word 0x00685240, 0x00686B70
+ .word 0x00686B70, 0x006884A0
+ .word 0x006884A0, 0x006884E8
+ .word 0x006884E8, 0x00688530
+ .word 0x00688530, 0x00689E60
+ .word 0x00689E60, 0x0068B790
+ .word 0x0068B790, 0x0068D0C0
+ .word 0x0068D0C0, 0x0068E9F0
+ .word 0x0068E9F0, 0x0068EA38
+ .word 0x0068EA38, 0x0068EA80
+ .word 0x0068EA80, 0x006903B0
+ .word 0x006903B0, 0x00691CE0
+ .word 0x00691CE0, 0x00693610
+ .word 0x00693610, 0x00694F40
+ .word 0x00694F40, 0x00694F88
+ .word 0x00694F88, 0x00694FD0
+ .word 0x00694FD0, 0x00696900
+ .word 0x00696900, 0x00698230
+ .word 0x00698230, 0x00699B60
+ .word 0x00699B60, 0x0069B490
+ .word 0x0069B490, 0x0069B4D8
+ .word 0x0069B4D8, 0x0069B520
+ .word 0x0069B520, 0x0069CE50
+ .word 0x0069CE50, 0x0069E780
+ .word 0x0069E780, 0x006A00B0
+ .word 0x006A00B0, 0x006A19E0
+ .word 0x006A19E0, 0x006A1A28
+ .word 0x006A1A28, 0x006A1A70
+ .word 0x006A1A70, 0x006A33A0
+ .word 0x006A33A0, 0x006A4CD0
+ .word 0x006A4CD0, 0x006A6600
+ .word 0x006A6600, 0x006A7F30
+ .word 0x006A7F30, 0x006A7F78
+ .word 0x006A7F78, 0x006A7FC0
+ .word 0x006A7FC0, 0x006A98F0
+ .word 0x006A98F0, 0x006AB220
+ .word 0x006AB220, 0x006ACB50
+ .word 0x006ACB50, 0x006AE480
+ .word 0x006AE480, 0x006AE4C8
+ .word 0x006AE4C8, 0x006AE510
+ .word 0x006AE510, 0x006AFE40
+ .word 0x006AFE40, 0x006B1770
+ .word 0x006B1770, 0x006B30A0
+ .word 0x006B30A0, 0x006B49D0
+ .word 0x006B49D0, 0x006B4A18
+ .word 0x006B4A18, 0x006B4A60
+ .word 0x006B4A60, 0x006B6390
+ .word 0x006B6390, 0x006B7CC0
+ .word 0x006B7CC0, 0x006B95F0
+ .word 0x006B95F0, 0x006BAF20
+ .word 0x006BAF20, 0x006BAF68
+ .word 0x006BAF68, 0x006BAFB0
+ .word 0x006BAFB0, 0x006BC8E0
+ .word 0x006BC8E0, 0x006BE210
+ .word 0x006BE210, 0x006BFB40
+ .word 0x006BFB40, 0x006C1470
+ .word 0x006C1470, 0x006C14B8
+ .word 0x006C14B8, 0x006C1500
+ .word 0x006C1500, 0x006C1500
+ .word 0x006C1500, 0x006C2E30
+ .word 0x006C2E30, 0x006C2E30
+ .word 0x006C2E30, 0x006C4760
+ .word 0x006C4760, 0x006C47A8
+ .word 0x006C47A8, 0x006C47F0
+ .word 0x006C47F0, 0x006C6120
+ .word 0x006C6120, 0x006C7A50
+ .word 0x006C7A50, 0x006C9380
+ .word 0x006C9380, 0x006CACB0
+ .word 0x006CACB0, 0x006CACF8
+ .word 0x006CACF8, 0x006CAD40
+ .word 0x006CAD40, 0x006CC670
+ .word 0x006CC670, 0x006CDFA0
+ .word 0x006CDFA0, 0x006CF8D0
+ .word 0x006CF8D0, 0x006D1200
+ .word 0x006D1200, 0x006D1248
+ .word 0x006D1248, 0x006D1290
+ .word 0x006D1290, 0x006D2BC0
+ .word 0x006D2BC0, 0x006D44F0
+ .word 0x006D44F0, 0x006D5E20
+ .word 0x006D5E20, 0x006D7750
+ .word 0x006D7750, 0x006D7798
+ .word 0x006D7798, 0x006D77E0
+ .word 0x006D77E0, 0x006D9110
+ .word 0x006D9110, 0x006DAA40
+ .word 0x006DAA40, 0x006DC370
+ .word 0x006DC370, 0x006DDCA0
+ .word 0x006DDCA0, 0x006DDCE8
+ .word 0x006DDCE8, 0x006DDD30
+ .word 0x006DDD30, 0x006DF660
+ .word 0x006DF660, 0x006E0F90
+ .word 0x006E0F90, 0x006E28C0
+ .word 0x006E28C0, 0x006E41F0
+ .word 0x006E41F0, 0x006E4238
+ .word 0x006E4238, 0x006E4280
+ .word 0x006E4280, 0x006E5BB0
+ .word 0x006E5BB0, 0x006E74E0
+ .word 0x006E74E0, 0x006E8E10
+ .word 0x006E8E10, 0x006EA740
+ .word 0x006EA740, 0x006EA788
+ .word 0x006EA788, 0x006EA7D0
+ .word 0x006EA7D0, 0x006EC100
+ .word 0x006EC100, 0x006EDA30
+ .word 0x006EDA30, 0x006EF360
+ .word 0x006EF360, 0x006F0C90
+ .word 0x006F0C90, 0x006F0CD8
+ .word 0x006F0CD8, 0x006F0D20
+ .word 0x006F0D20, 0x006F2650
+ .word 0x006F2650, 0x006F3F80
+ .word 0x006F3F80, 0x006F58B0
+ .word 0x006F58B0, 0x006F71E0
+ .word 0x006F71E0, 0x006F7228
+ .word 0x006F7228, 0x006F7270
+ .word 0x006F7270, 0x006F8BA0
+ .word 0x006F8BA0, 0x006FA4D0
+ .word 0x006FA4D0, 0x006FBE00
+ .word 0x006FBE00, 0x006FD730
+ .word 0x006FD730, 0x006FD778
+ .word 0x006FD778, 0x006FD7C0
+ .word 0x006FD7C0, 0x006FF0F0
+ .word 0x006FF0F0, 0x00700A20
+ .word 0x00700A20, 0x00702350
+ .word 0x00702350, 0x00703C80
+ .word 0x00703C80, 0x00703CC8
+ .word 0x00703CC8, 0x00703D10
+ .word 0x00703D10, 0x00705640
+ .word 0x00705640, 0x00706F70
+ .word 0x00706F70, 0x007088A0
+ .word 0x007088A0, 0x0070A1D0
+ .word 0x0070A1D0, 0x0070A218
+ .word 0x0070A218, 0x0070A260
+ .word 0x0070A260, 0x0070BB90
+ .word 0x0070BB90, 0x0070D4C0
+ .word 0x0070D4C0, 0x0070EDF0
+ .word 0x0070EDF0, 0x00710720
+ .word 0x00710720, 0x00710768
+ .word 0x00710768, 0x007107B0
+ .word 0x007107B0, 0x007120E0
+ .word 0x007120E0, 0x00713A10
+ .word 0x00713A10, 0x00715340
+ .word 0x00715340, 0x00716C70
+ .word 0x00716C70, 0x00716CB8
+ .word 0x00716CB8, 0x00716D00
+ .word 0x00716D00, 0x00718630
+ .word 0x00718630, 0x00719F60
+ .word 0x00719F60, 0x0071B890
+ .word 0x0071B890, 0x0071D1C0
+ .word 0x0071D1C0, 0x0071D208
+ .word 0x0071D208, 0x0071D250
+ .word 0x0071D250, 0x0071EB80
+ .word 0x0071EB80, 0x007204B0
+ .word 0x007204B0, 0x00721DE0
+ .word 0x00721DE0, 0x00723710
+ .word 0x00723710, 0x00723758
+ .word 0x00723758, 0x007237A0
+ .word 0x007237A0, 0x007250D0
+ .word 0x007250D0, 0x00726A00
+ .word 0x00726A00, 0x00728330
+ .word 0x00728330, 0x00729C60
+ .word 0x00729C60, 0x00729CA8
+ .word 0x00729CA8, 0x00729CF0
+ .word 0x00729CF0, 0x0072B620
+ .word 0x0072B620, 0x0072CF50
+ .word 0x0072CF50, 0x0072E880
+ .word 0x0072E880, 0x007301B0
+ .word 0x007301B0, 0x007301F8
+ .word 0x007301F8, 0x00730240
+ .word 0x00730240, 0x00731B70
+ .word 0x00731B70, 0x007334A0
+ .word 0x007334A0, 0x00734DD0
+ .word 0x00734DD0, 0x00736700
+ .word 0x00736700, 0x00736748
+ .word 0x00736748, 0x00736790
+ .word 0x00736790, 0x007380C0
+ .word 0x007380C0, 0x007399F0
+ .word 0x007399F0, 0x0073B320
+ .word 0x0073B320, 0x0073CC50
+ .word 0x0073CC50, 0x0073CC98
+ .word 0x0073CC98, 0x0073CCE0
+ .word 0x0073CCE0, 0x0073E610
+ .word 0x0073E610, 0x0073FF40
+ .word 0x0073FF40, 0x00741870
+ .word 0x00741870, 0x007431A0
+ .word 0x007431A0, 0x007431E8
+ .word 0x007431E8, 0x00743230
+ .word 0x00743230, 0x00743230
+ .word 0x00743230, 0x00744B60
+ .word 0x00744B60, 0x00744B60
+ .word 0x00744B60, 0x00746490
+ .word 0x00746490, 0x007464D8
+ .word 0x007464D8, 0x00746520
+ .word 0x00746520, 0x00747E50
+ .word 0x00747E50, 0x00747E50
+ .word 0x00747E50, 0x00749780
+ .word 0x00749780, 0x00749780
+ .word 0x00749780, 0x007497C8
+ .word 0x007497C8, 0x00749810
+ .word 0x00749810, 0x0074B140
+ .word 0x0074B140, 0x0074CA70
+ .word 0x0074CA70, 0x0074E3A0
+ .word 0x0074E3A0, 0x0074FCD0
+ .word 0x0074FCD0, 0x0074FD18
+ .word 0x0074FD18, 0x0074FD60
+ .word 0x0074FD60, 0x00751690
+ .word 0x00751690, 0x00752FC0
+ .word 0x00752FC0, 0x007548F0
+ .word 0x007548F0, 0x00756220
+ .word 0x00756220, 0x00756268
+ .word 0x00756268, 0x007562B0
+ .word 0x007562B0, 0x00757BE0
+ .word 0x00757BE0, 0x00759510
+ .word 0x00759510, 0x0075AE40
+ .word 0x0075AE40, 0x0075C770
+ .word 0x0075C770, 0x0075C7B8
+ .word 0x0075C7B8, 0x0075C800
+ .word 0x0075C800, 0x0075E130
+ .word 0x0075E130, 0x0075FA60
+ .word 0x0075FA60, 0x00761390
+ .word 0x00761390, 0x00762CC0
+ .word 0x00762CC0, 0x00762D08
+ .word 0x00762D08, 0x00762D50
+ .word 0x00762D50, 0x00764680
+ .word 0x00764680, 0x00765FB0
+ .word 0x00765FB0, 0x007678E0
+ .word 0x007678E0, 0x00769210
+ .word 0x00769210, 0x00769258
+ .word 0x00769258, 0x007692A0
+ .word 0x007692A0, 0x0076ABD0
+ .word 0x0076ABD0, 0x0076C500
+ .word 0x0076C500, 0x0076DE30
+ .word 0x0076DE30, 0x0076F760
+ .word 0x0076F760, 0x0076F7A8
+ .word 0x0076F7A8, 0x0076F7F0
+ .word 0x0076F7F0, 0x00771120
+ .word 0x00771120, 0x00772A50
+ .word 0x00772A50, 0x00774380
+ .word 0x00774380, 0x00775CB0
+ .word 0x00775CB0, 0x00775CF8
+ .word 0x00775CF8, 0x00775D40
+ .word 0x00775D40, 0x00777670
+ .word 0x00777670, 0x00778FA0
+ .word 0x00778FA0, 0x0077A8D0
+ .word 0x0077A8D0, 0x0077C200
+ .word 0x0077C200, 0x0077C248
+ .word 0x0077C248, 0x0077C290
+ .word 0x0077C290, 0x0077DBC0
+ .word 0x0077DBC0, 0x0077F4F0
+ .word 0x0077F4F0, 0x00780E20
+ .word 0x00780E20, 0x00782750
+ .word 0x00782750, 0x00782798
+ .word 0x00782798, 0x007827E0
+ .word 0x007827E0, 0x00784110
+ .word 0x00784110, 0x00785A40
+ .word 0x00785A40, 0x00787370
+ .word 0x00787370, 0x00788CA0
+ .word 0x00788CA0, 0x00788CE8
+ .word 0x00788CE8, 0x00788D30
+ .word 0x00788D30, 0x0078A660
+ .word 0x0078A660, 0x0078BF90
+ .word 0x0078BF90, 0x0078D8C0
+ .word 0x0078D8C0, 0x0078F1F0
+ .word 0x0078F1F0, 0x0078F238
+ .word 0x0078F238, 0x0078F280
+ .word 0x0078F280, 0x00790BB0
+ .word 0x00790BB0, 0x007924E0
+ .word 0x007924E0, 0x00793E10
+ .word 0x00793E10, 0x00795740
+ .word 0x00795740, 0x00795788
+ .word 0x00795788, 0x007957D0
+ .word 0x007957D0, 0x00797100
+ .word 0x00797100, 0x00798A30
+ .word 0x00798A30, 0x0079A360
+ .word 0x0079A360, 0x0079BC90
+ .word 0x0079BC90, 0x0079BCD8
+ .word 0x0079BCD8, 0x0079BD20
+ .word 0x0079BD20, 0x0079D650
+ .word 0x0079D650, 0x0079EF80
+ .word 0x0079EF80, 0x007A08B0
+ .word 0x007A08B0, 0x007A21E0
+ .word 0x007A21E0, 0x007A2228
+ .word 0x007A2228, 0x007A2270
+ .word 0x007A2270, 0x007A3BA0
+ .word 0x007A3BA0, 0x007A54D0
+ .word 0x007A54D0, 0x007A6E00
+ .word 0x007A6E00, 0x007A8730
+ .word 0x007A8730, 0x007A8778
+ .word 0x007A8778, 0x007A87C0
+ .word 0x007A87C0, 0x007AA0F0
+ .word 0x007AA0F0, 0x007ABA20
+ .word 0x007ABA20, 0x007AD350
+ .word 0x007AD350, 0x007AEC80
+ .word 0x007AEC80, 0x007AECC8
+ .word 0x007AECC8, 0x007AED10
+ .word 0x007AED10, 0x007B0640
+ .word 0x007B0640, 0x007B1F70
+ .word 0x007B1F70, 0x007B38A0
+ .word 0x007B38A0, 0x007B51D0
+ .word 0x007B51D0, 0x007B5218
+ .word 0x007B5218, 0x007B5260
+ .word 0x007B5260, 0x007B6B90
+ .word 0x007B6B90, 0x007B84C0
+ .word 0x007B84C0, 0x007B9DF0
+ .word 0x007B9DF0, 0x007BB720
+ .word 0x007BB720, 0x007BB768
+ .word 0x007BB768, 0x007BB7B0
+ .word 0x007BB7B0, 0x007BD0E0
+ .word 0x007BD0E0, 0x007BEA10
+ .word 0x007BEA10, 0x007C0340
+ .word 0x007C0340, 0x007C1C70
+ .word 0x007C1C70, 0x007C1CB8
+ .word 0x007C1CB8, 0x007C1D00
+ .word 0x007C1D00, 0x007C3630
+ .word 0x007C3630, 0x007C4F60
+ .word 0x007C4F60, 0x007C6890
+ .word 0x007C6890, 0x007C81C0
+ .word 0x007C81C0, 0x007C8208
+ .word 0x007C8208, 0x007C8250
+ .word 0x007C8250, 0x007C9B80
+ .word 0x007C9B80, 0x007CB4B0
+ .word 0x007CB4B0, 0x007CCDE0
+ .word 0x007CCDE0, 0x007CE710
+ .word 0x007CE710, 0x007CE758
+ .word 0x007CE758, 0x007CE7A0
+ .word 0x007CE7A0, 0x007D00D0
+ .word 0x007D00D0, 0x007D1A00
+ .word 0x007D1A00, 0x007D3330
+ .word 0x007D3330, 0x007D4C60
+ .word 0x007D4C60, 0x007D4CA8
+ .word 0x007D4CA8, 0x007D4CF0
+ .word 0x007D4CF0, 0x007D4CF0
+ .word 0x007D4CF0, 0x007D6620
+ .word 0x007D6620, 0x007D6620
+ .word 0x007D6620, 0x007D7F50
+ .word 0x007D7F50, 0x007D7F98
+ .word 0x007D7F98, 0x007D7FE0
+ .word 0x007D7FE0, 0x007D7FE0
+ .word 0x007D7FE0, 0x007D9910
+ .word 0x007D9910, 0x007D9910
+ .word 0x007D9910, 0x007DB240
+ .word 0x007DB240, 0x007DB288
+ .word 0x007DB288, 0x007DB2D0
+ .word 0x007DB2D0, 0x007DCC00
+ .word 0x007DCC00, 0x007DE530
+ .word 0x007DE530, 0x007DFE60
+ .word 0x007DFE60, 0x007E1790
+ .word 0x007E1790, 0x007E17D8
+ .word 0x007E17D8, 0x007E1820
+ .word 0x007E1820, 0x007E3150
+ .word 0x007E3150, 0x007E4A80
+ .word 0x007E4A80, 0x007E63B0
+ .word 0x007E63B0, 0x007E7CE0
+ .word 0x007E7CE0, 0x007E7D28
+ .word 0x007E7D28, 0x007E7D70
+ .word 0x007E7D70, 0x007E96A0
+ .word 0x007E96A0, 0x007EAFD0
+ .word 0x007EAFD0, 0x007EC900
+ .word 0x007EC900, 0x007EE230
+ .word 0x007EE230, 0x007EE278
+ .word 0x007EE278, 0x007EE2C0
+ .word 0x007EE2C0, 0x007EFBF0
+ .word 0x007EFBF0, 0x007F1520
+ .word 0x007F1520, 0x007F2E50
+ .word 0x007F2E50, 0x007F4780
+ .word 0x007F4780, 0x007F47C8
+ .word 0x007F47C8, 0x007F4810
+ .word 0x007F4810, 0x007F4810
+ .word 0x007F4810, 0x007F6140
+ .word 0x007F6140, 0x007F6140
+ .word 0x007F6140, 0x007F7A70
+ .word 0x007F7A70, 0x007F7AB8
+ .word 0x007F7AB8, 0x007F7B00
+ .word 0x007F7B00, 0x007F7B00
+ .word 0x007F7B00, 0x007F9430
+ .word 0x007F9430, 0x007F9430
+ .word 0x007F9430, 0x007FAD60
+ .word 0x007FAD60, 0x007FADA8
+ .word 0x007FADA8, 0x007FADF0
+ .word 0x007FADF0, 0x007FC720
+ .word 0x007FC720, 0x007FE050
+ .word 0x007FE050, 0x007FF980
+ .word 0x007FF980, 0x008012B0
+ .word 0x008012B0, 0x008012F8
+ .word 0x008012F8, 0x00801340
+ .word 0x00801340, 0x00802C70
+ .word 0x00802C70, 0x008045A0
+ .word 0x008045A0, 0x00805ED0
+ .word 0x00805ED0, 0x00807800
+ .word 0x00807800, 0x00807848
+ .word 0x00807848, 0x00807890
+ .word 0x00807890, 0x008091C0
+ .word 0x008091C0, 0x0080AAF0
+ .word 0x0080AAF0, 0x0080C420
+ .word 0x0080C420, 0x0080DD50
+ .word 0x0080DD50, 0x0080DD98
+ .word 0x0080DD98, 0x0080DDE0
+ .word 0x0080DDE0, 0x0080F710
+ .word 0x0080F710, 0x00811040
+ .word 0x00811040, 0x00812970
+ .word 0x00812970, 0x008142A0
+ .word 0x008142A0, 0x008142E8
+ .word 0x008142E8, 0x00814330
+ .word 0x00814330, 0x00815C60
+ .word 0x00815C60, 0x00817590
+ .word 0x00817590, 0x00818EC0
+ .word 0x00818EC0, 0x0081A7F0
+ .word 0x0081A7F0, 0x0081A838
+ .word 0x0081A838, 0x0081A880
+ .word 0x0081A880, 0x0081C1B0
+ .word 0x0081C1B0, 0x0081DAE0
+ .word 0x0081DAE0, 0x0081F410
+ .word 0x0081F410, 0x00820D40
+ .word 0x00820D40, 0x00820D88
+ .word 0x00820D88, 0x00820DD0
+ .word 0x00820DD0, 0x00822700
+ .word 0x00822700, 0x00824030
+ .word 0x00824030, 0x00825960
+ .word 0x00825960, 0x00827290
+ .word 0x00827290, 0x008272D8
+ .word 0x008272D8, 0x00827320
+ .word 0x00827320, 0x00828C50
+ .word 0x00828C50, 0x0082A580
+ .word 0x0082A580, 0x0082BEB0
+ .word 0x0082BEB0, 0x0082D7E0
+ .word 0x0082D7E0, 0x0082D828
+ .word 0x0082D828, 0x0082D870
+ .word 0x0082D870, 0x0082F1A0
+ .word 0x0082F1A0, 0x00830AD0
+ .word 0x00830AD0, 0x00832400
+ .word 0x00832400, 0x00833D30
+ .word 0x00833D30, 0x00833D78
+ .word 0x00833D78, 0x00833DC0
+ .word 0x00833DC0, 0x008356F0
+ .word 0x008356F0, 0x00837020
+ .word 0x00837020, 0x00838950
+ .word 0x00838950, 0x0083A280
+ .word 0x0083A280, 0x0083A2C8
+ .word 0x0083A2C8, 0x0083A310
+ .word 0x0083A310, 0x0083BC40
+ .word 0x0083BC40, 0x0083D570
+ .word 0x0083D570, 0x0083EEA0
+ .word 0x0083EEA0, 0x008407D0
+ .word 0x008407D0, 0x00840818
+ .word 0x00840818, 0x00840860
+ .word 0x00840860, 0x00842190
+ .word 0x00842190, 0x00843AC0
+ .word 0x00843AC0, 0x008453F0
+ .word 0x008453F0, 0x00846D20
+ .word 0x00846D20, 0x00846D68
+ .word 0x00846D68, 0x00846DB0
+ .word 0x00846DB0, 0x008486E0
+ .word 0x008486E0, 0x0084A010
+ .word 0x0084A010, 0x0084B940
+ .word 0x0084B940, 0x0084D270
+ .word 0x0084D270, 0x0084D2B8
+ .word 0x0084D2B8, 0x0084D300
+ .word 0x0084D300, 0x0084EC30
+ .word 0x0084EC30, 0x00850560
+ .word 0x00850560, 0x00851E90
+ .word 0x00851E90, 0x008537C0
+ .word 0x008537C0, 0x00853808
+ .word 0x00853808, 0x00853850
+ .word 0x00853850, 0x00855180
+ .word 0x00855180, 0x00856AB0
+ .word 0x00856AB0, 0x008583E0
+ .word 0x008583E0, 0x00859D10
+ .word 0x00859D10, 0x00859D58
+ .word 0x00859D58, 0x00859DA0
+ .word 0x00859DA0, 0x0085B6D0
+ .word 0x0085B6D0, 0x0085D000
+ .word 0x0085D000, 0x0085E930
+ .word 0x0085E930, 0x00860260
+ .word 0x00860260, 0x008602A8
+ .word 0x008602A8, 0x008602F0
+ .word 0x008602F0, 0x00861C20
+ .word 0x00861C20, 0x00863550
+ .word 0x00863550, 0x00864E80
+ .word 0x00864E80, 0x008667B0
+ .word 0x008667B0, 0x008667F8
+ .word 0x008667F8, 0x00866840
+ .word 0x00866840, 0x00868170
+ .word 0x00868170, 0x00869AA0
+ .word 0x00869AA0, 0x0086B3D0
+ .word 0x0086B3D0, 0x0086CD00
+ .word 0x0086CD00, 0x0086CD48
+ .word 0x0086CD48, 0x0086CD90
+ .word 0x0086CD90, 0x0086E6C0
+ .word 0x0086E6C0, 0x0086FFF0
+ .word 0x0086FFF0, 0x00871920
+ .word 0x00871920, 0x00873250
+ .word 0x00873250, 0x00873298
+ .word 0x00873298, 0x008732E0
+ .word 0x008732E0, 0x00874C10
+ .word 0x00874C10, 0x00876540
+ .word 0x00876540, 0x00877E70
+ .word 0x00877E70, 0x008797A0
+ .word 0x008797A0, 0x008797E8
+ .word 0x008797E8, 0x00879830
+ .word 0x00879830, 0x0087B160
+ .word 0x0087B160, 0x0087CA90
+ .word 0x0087CA90, 0x0087E3C0
+ .word 0x0087E3C0, 0x0087FCF0
+ .word 0x0087FCF0, 0x0087FD38
+ .word 0x0087FD38, 0x0087FD80
+ .word 0x0087FD80, 0x008816B0
+ .word 0x008816B0, 0x00882FE0
+ .word 0x00882FE0, 0x00884910
+ .word 0x00884910, 0x00886240
+ .word 0x00886240, 0x00886288
+ .word 0x00886288, 0x008862D0
+ .word 0x008862D0, 0x00887C00
+ .word 0x00887C00, 0x00889530
+ .word 0x00889530, 0x0088AE60
+ .word 0x0088AE60, 0x0088C790
+ .word 0x0088C790, 0x0088C7D8
+ .word 0x0088C7D8, 0x0088C820
+ .word 0x0088C820, 0x0088E150
+ .word 0x0088E150, 0x0088FA80
+ .word 0x0088FA80, 0x008913B0
+ .word 0x008913B0, 0x00892CE0
+ .word 0x00892CE0, 0x00892D28
+ .word 0x00892D28, 0x00892D70
+ .word 0x00892D70, 0x008946A0
+ .word 0x008946A0, 0x00895FD0
+ .word 0x00895FD0, 0x00897900
+ .word 0x00897900, 0x00899230
+ .word 0x00899230, 0x00899278
+ .word 0x00899278, 0x008992C0
+ .word 0x008992C0, 0x0089ABF0
+ .word 0x0089ABF0, 0x0089C520
+ .word 0x0089C520, 0x0089DE50
+ .word 0x0089DE50, 0x0089F780
+ .word 0x0089F780, 0x0089F7C8
+ .word 0x0089F7C8, 0x0089F810
+ .word 0x0089F810, 0x008A1140
+ .word 0x008A1140, 0x008A2A70
+ .word 0x008A2A70, 0x008A43A0
+ .word 0x008A43A0, 0x008A5CD0
+ .word 0x008A5CD0, 0x008A5D18
+ .word 0x008A5D18, 0x008A5D60
+ .word 0x008A5D60, 0x008A7690
+ .word 0x008A7690, 0x008A8FC0
+ .word 0x008A8FC0, 0x008AA8F0
+ .word 0x008AA8F0, 0x008AC220
+ .word 0x008AC220, 0x008AC268
+ .word 0x008AC268, 0x008AC2B0
+ .word 0x008AC2B0, 0x008ADBE0
+ .word 0x008ADBE0, 0x008AF510
+ .word 0x008AF510, 0x008B0E40
+ .word 0x008B0E40, 0x008B2770
+ .word 0x008B2770, 0x008B27B8
+ .word 0x008B27B8, 0x008B2800
+ .word 0x008B2800, 0x008B2800
+ .word 0x008B2800, 0x008B4130
+ .word 0x008B4130, 0x008B4130
+ .word 0x008B4130, 0x008B5A60
+ .word 0x008B5A60, 0x008B5AA8
+ .word 0x008B5AA8, 0x008B5AF0
+ .word 0x008B5AF0, 0x008B5AF0
+ .word 0x008B5AF0, 0x008B7420
+ .word 0x008B7420, 0x008B7420
+ .word 0x008B7420, 0x008B8D50
+ .word 0x008B8D50, 0x008B8D98
+ .word 0x008B8D98, 0x008B8DE0
+ .word 0x008B8DE0, 0x008B8DE0
+ .word 0x008B8DE0, 0x008BA710
+ .word 0x008BA710, 0x008BA710
+ .word 0x008BA710, 0x008BC040
+ .word 0x008BC040, 0x008BC088
+ .word 0x008BC088, 0x008BC0D0
+ .word 0x008BC0D0, 0x008BC0D0
+ .word 0x008BC0D0, 0x008BDA00
+ .word 0x008BDA00, 0x008BDA00
+ .word 0x008BDA00, 0x008BF330
+ .word 0x008BF330, 0x008BF378
+ .word 0x008BF378, 0x008BF3C0
+ .word 0x008BF3C0, 0x008BF3C0
+ .word 0x008BF3C0, 0x008C0CF0
+ .word 0x008C0CF0, 0x008C0CF0
+ .word 0x008C0CF0, 0x008C2620
+ .word 0x008C2620, 0x008C2668
+ .word 0x008C2668, 0x008C26B0
+ .word 0x008C26B0, 0x008C26B0
+ .word 0x008C26B0, 0x008C3FE0
+ .word 0x008C3FE0, 0x008C3FE0
+ .word 0x008C3FE0, 0x008C5910
+ .word 0x008C5910, 0x008C5958
+ .word 0x008C5958, 0x008C59A0
+ .word 0x008C59A0, 0x008C72D0
+ .word 0x008C72D0, 0x008C72D0
+ .word 0x008C72D0, 0x008C8C00
+ .word 0x008C8C00, 0x008C8C00
+ .word 0x008C8C00, 0x008C8C48
+ .word 0x008C8C48, 0x008C8C90
+ .word 0x008C8C90, 0x008C8C90
+ .word 0x008C8C90, 0x008CA5C0
+ .word 0x008CA5C0, 0x008CA5C0
+ .word 0x008CA5C0, 0x008CBEF0
+ .word 0x008CBEF0, 0x008CBF38
+ .word 0x008CBF38, 0x008CBF80
+ .word 0x008CBF80, 0x008CBF80
+ .word 0x008CBF80, 0x008CD8B0
+ .word 0x008CD8B0, 0x008CD8B0
+ .word 0x008CD8B0, 0x008CF1E0
+ .word 0x008CF1E0, 0x008CF228
+ .word 0x008CF228, 0x008CF270
+ .word 0x008CF270, 0x008CF270
+ .word 0x008CF270, 0x008D0BA0
+ .word 0x008D0BA0, 0x008D0BA0
+ .word 0x008D0BA0, 0x008D24D0
+ .word 0x008D24D0, 0x008D2518
+ .word 0x008D2518, 0x008D2560
+ .word 0x008D2560, 0x008D2560
+ .word 0x008D2560, 0x008D3E90
+ .word 0x008D3E90, 0x008D3E90
+ .word 0x008D3E90, 0x008D57C0
+ .word 0x008D57C0, 0x008D5808
+ .word 0x008D5808, 0x008D5850
+ .word 0x008D5850, 0x008D5850
+ .word 0x008D5850, 0x008D7180
+ .word 0x008D7180, 0x008D7180
+ .word 0x008D7180, 0x008D8AB0
+ .word 0x008D8AB0, 0x008D8AF8
+ .word 0x008D8AF8, 0x008D8B40
+ .word 0x008D8B40, 0x008D8B40
+ .word 0x008D8B40, 0x008DA470
+ .word 0x008DA470, 0x008DA470
+ .word 0x008DA470, 0x008DBDA0
+ .word 0x008DBDA0, 0x008DBDE8
+ .word 0x008DBDE8, 0x008DBE30
+ .word 0x008DBE30, 0x008DD760
+ .word 0x008DD760, 0x008DF090
+ .word 0x008DF090, 0x008E09C0
+ .word 0x008E09C0, 0x008E22F0
+ .word 0x008E22F0, 0x008E2338
+ .word 0x008E2338, 0x008E2380
+ .word 0x008E2380, 0x008E3CB0
+ .word 0x008E3CB0, 0x008E55E0
+ .word 0x008E55E0, 0x008E6F10
+ .word 0x008E6F10, 0x008E8840
+ .word 0x008E8840, 0x008E8888
+ .word 0x008E8888, 0x008E88D0
+ .word 0x008E88D0, 0x008EA200
+ .word 0x008EA200, 0x008EBB30
+ .word 0x008EBB30, 0x008ED460
+ .word 0x008ED460, 0x008EED90
+ .word 0x008EED90, 0x008EEDD8
+ .word 0x008EEDD8, 0x008EEE20
+ .word 0x008EEE20, 0x008F0750
+ .word 0x008F0750, 0x008F2080
+ .word 0x008F2080, 0x008F39B0
+ .word 0x008F39B0, 0x008F52E0
+ .word 0x008F52E0, 0x008F5328
+ .word 0x008F5328, 0x008F5370
+ .word 0x008F5370, 0x008F6CA0
+ .word 0x008F6CA0, 0x008F85D0
+ .word 0x008F85D0, 0x008F9F00
+ .word 0x008F9F00, 0x008FB830
+ .word 0x008FB830, 0x008FB878
+ .word 0x008FB878, 0x008FB8C0
+ .word 0x008FB8C0, 0x008FD1F0
+ .word 0x008FD1F0, 0x008FEB20
+ .word 0x008FEB20, 0x00900450
+ .word 0x00900450, 0x00901D80
+ .word 0x00901D80, 0x00901DC8
+ .word 0x00901DC8, 0x00901E10
+ .word 0x00901E10, 0x00903740
+ .word 0x00903740, 0x00905070
+ .word 0x00905070, 0x009069A0
+ .word 0x009069A0, 0x009082D0
+ .word 0x009082D0, 0x00908318
+ .word 0x00908318, 0x00908360
+ .word 0x00908360, 0x00909C90
+ .word 0x00909C90, 0x0090B5C0
+ .word 0x0090B5C0, 0x0090CEF0
+ .word 0x0090CEF0, 0x0090E820
+ .word 0x0090E820, 0x0090E868
+ .word 0x0090E868, 0x0090E8B0
+ .word 0x0090E8B0, 0x009101E0
+ .word 0x009101E0, 0x00911B10
+ .word 0x00911B10, 0x00913440
+ .word 0x00913440, 0x00914D70
+ .word 0x00914D70, 0x00914DB8
+ .word 0x00914DB8, 0x00914E00
+ .word 0x00914E00, 0x00916730
+ .word 0x00916730, 0x00918060
+ .word 0x00918060, 0x00919990
+ .word 0x00919990, 0x0091B2C0
+ .word 0x0091B2C0, 0x0091B308
+ .word 0x0091B308, 0x0091B350
+ .word 0x0091B350, 0x0091CC80
+ .word 0x0091CC80, 0x0091E5B0
+ .word 0x0091E5B0, 0x0091FEE0
+ .word 0x0091FEE0, 0x00921810
+ .word 0x00921810, 0x00921858
+ .word 0x00921858, 0x009218A0
+ .word 0x009218A0, 0x009231D0
+ .word 0x009231D0, 0x00924B00
+ .word 0x00924B00, 0x00926430
+ .word 0x00926430, 0x00927D60
+ .word 0x00927D60, 0x00927DA8
+ .word 0x00927DA8, 0x00927DF0
+ .word 0x00927DF0, 0x00929720
+ .word 0x00929720, 0x0092B050
+ .word 0x0092B050, 0x0092C980
+ .word 0x0092C980, 0x0092E2B0
+ .word 0x0092E2B0, 0x0092E2F8
+ .word 0x0092E2F8, 0x0092E340
+ .word 0x0092E340, 0x0092FC70
+ .word 0x0092FC70, 0x009315A0
+ .word 0x009315A0, 0x00932ED0
+ .word 0x00932ED0, 0x00934800
+ .word 0x00934800, 0x00934848
+ .word 0x00934848, 0x00934890
+ .word 0x00934890, 0x009361C0
+ .word 0x009361C0, 0x00937AF0
+ .word 0x00937AF0, 0x00939420
+ .word 0x00939420, 0x0093AD50
+ .word 0x0093AD50, 0x0093AD98
+ .word 0x0093AD98, 0x0093ADE0
+ .word 0x0093ADE0, 0x0093C710
+ .word 0x0093C710, 0x0093E040
+ .word 0x0093E040, 0x0093F970
+ .word 0x0093F970, 0x009412A0
+ .word 0x009412A0, 0x009412E8
+ .word 0x009412E8, 0x00941330
+ .word 0x00941330, 0x00942C60
+ .word 0x00942C60, 0x00944590
+ .word 0x00944590, 0x00945EC0
+ .word 0x00945EC0, 0x009477F0
+ .word 0x009477F0, 0x00947838
+ .word 0x00947838, 0x00947880
+ .word 0x00947880, 0x009491B0
+ .word 0x009491B0, 0x0094AAE0
+ .word 0x0094AAE0, 0x0094C410
+ .word 0x0094C410, 0x0094DD40
+ .word 0x0094DD40, 0x0094DD88
+ .word 0x0094DD88, 0x0094DDD0
+ .word 0x0094DDD0, 0x0094F700
+ .word 0x0094F700, 0x00951030
+ .word 0x00951030, 0x00952960
+ .word 0x00952960, 0x00954290
+ .word 0x00954290, 0x009542D8
+ .word 0x009542D8, 0x00954320
+ .word 0x00954320, 0x00955C50
+ .word 0x00955C50, 0x00957580
+ .word 0x00957580, 0x00958EB0
+ .word 0x00958EB0, 0x0095A7E0
+ .word 0x0095A7E0, 0x0095A828
+ .word 0x0095A828, 0x0095A870
+ .word 0x0095A870, 0x0095C1A0
+ .word 0x0095C1A0, 0x0095DAD0
+ .word 0x0095DAD0, 0x0095F400
+ .word 0x0095F400, 0x00960D30
+ .word 0x00960D30, 0x00960D78
+ .word 0x00960D78, 0x00960DC0
+ .word 0x00960DC0, 0x009626F0
+ .word 0x009626F0, 0x00964020
+ .word 0x00964020, 0x00965950
+ .word 0x00965950, 0x00967280
+ .word 0x00967280, 0x009672C8
+ .word 0x009672C8, 0x00967310
+ .word 0x00967310, 0x00968C40
+ .word 0x00968C40, 0x0096A570
+ .word 0x0096A570, 0x0096BEA0
+ .word 0x0096BEA0, 0x0096D7D0
+ .word 0x0096D7D0, 0x0096D818
+ .word 0x0096D818, 0x0096D860
+ .word 0x0096D860, 0x0096F190
+ .word 0x0096F190, 0x00970AC0
+ .word 0x00970AC0, 0x009723F0
+ .word 0x009723F0, 0x00973D20
+ .word 0x00973D20, 0x00973D68
+ .word 0x00973D68, 0x00973DB0
+ .word 0x00973DB0, 0x009756E0
+ .word 0x009756E0, 0x00977010
+ .word 0x00977010, 0x00978940
+ .word 0x00978940, 0x0097A270
+ .word 0x0097A270, 0x0097A2B8
+ .word 0x0097A2B8, 0x0097A300
+ .word 0x0097A300, 0x0097BC30
+ .word 0x0097BC30, 0x0097D560
+ .word 0x0097D560, 0x0097EE90
+ .word 0x0097EE90, 0x009807C0
+ .word 0x009807C0, 0x00980808
+ .word 0x00980808, 0x00980850
+ .word 0x00980850, 0x00982180
+ .word 0x00982180, 0x00982180
+ .word 0x00982180, 0x00983AB0
+ .word 0x00983AB0, 0x00983AB0
+ .word 0x00983AB0, 0x00983AF8
+ .word 0x00983AF8, 0x00983B40
+ .word 0x00983B40, 0x00983B40
+ .word 0x00983B40, 0x00985470
+ .word 0x00985470, 0x00985470
+ .word 0x00985470, 0x00986DA0
+ .word 0x00986DA0, 0x00986DE8
+ .word 0x00986DE8, 0x00986E30
+ .word 0x00986E30, 0x00988760
+ .word 0x00988760, 0x0098A090
+ .word 0x0098A090, 0x0098B9C0
+ .word 0x0098B9C0, 0x0098D2F0
+ .word 0x0098D2F0, 0x0098D338
+ .word 0x0098D338, 0x0098D380
+ .word 0x0098D380, 0x0098ECB0
+ .word 0x0098ECB0, 0x0098ECB0
+ .word 0x0098ECB0, 0x009905E0
+ .word 0x009905E0, 0x009905E0
+ .word 0x009905E0, 0x00990628
+ .word 0x00990628, 0x00990670
+ .word 0x00990670, 0x00991FA0
+ .word 0x00991FA0, 0x009938D0
+ .word 0x009938D0, 0x00995200
+ .word 0x00995200, 0x00996B30
+ .word 0x00996B30, 0x00996B78
+ .word 0x00996B78, 0x00996BC0
+ .word 0x00996BC0, 0x009984F0
+ .word 0x009984F0, 0x00999E20
+ .word 0x00999E20, 0x0099B750
+ .word 0x0099B750, 0x0099D080
+ .word 0x0099D080, 0x0099D0C8
+ .word 0x0099D0C8, 0x0099D110
+ .word 0x0099D110, 0x0099EA40
+ .word 0x0099EA40, 0x009A0370
+ .word 0x009A0370, 0x009A1CA0
+ .word 0x009A1CA0, 0x009A35D0
+ .word 0x009A35D0, 0x009A3618
+ .word 0x009A3618, 0x009A3660
+ .word 0x009A3660, 0x009A4F90
+ .word 0x009A4F90, 0x009A68C0
+ .word 0x009A68C0, 0x009A81F0
+ .word 0x009A81F0, 0x009A9B20
+ .word 0x009A9B20, 0x009A9B68
+ .word 0x009A9B68, 0x009A9BB0
+ .word 0x009A9BB0, 0x009AB4E0
+ .word 0x009AB4E0, 0x009ACE10
+ .word 0x009ACE10, 0x009AE740
+ .word 0x009AE740, 0x009B0070
+ .word 0x009B0070, 0x009B00B8
+ .word 0x009B00B8, 0x009B0100
+ .word 0x009B0100, 0x009B1A30
+ .word 0x009B1A30, 0x009B3360
+ .word 0x009B3360, 0x009B4C90
+ .word 0x009B4C90, 0x009B65C0
+ .word 0x009B65C0, 0x009B6608
+ .word 0x009B6608, 0x009B6650
+ .word 0x009B6650, 0x009B7F80
+ .word 0x009B7F80, 0x009B98B0
+ .word 0x009B98B0, 0x009BB1E0
+ .word 0x009BB1E0, 0x009BCB10
+ .word 0x009BCB10, 0x009BCB58
+ .word 0x009BCB58, 0x009BCBA0
+ .word 0x009BCBA0, 0x009BE4D0
+ .word 0x009BE4D0, 0x009BFE00
+ .word 0x009BFE00, 0x009C1730
+ .word 0x009C1730, 0x009C3060
+ .word 0x009C3060, 0x009C30A8
+ .word 0x009C30A8, 0x009C30F0
+ .word 0x009C30F0, 0x009C4A20
+ .word 0x009C4A20, 0x009C6350
+ .word 0x009C6350, 0x009C7C80
+ .word 0x009C7C80, 0x009C95B0
+ .word 0x009C95B0, 0x009C95F8
+ .word 0x009C95F8, 0x009C9640
+ .word 0x009C9640, 0x009CAF70
+ .word 0x009CAF70, 0x009CC8A0
+ .word 0x009CC8A0, 0x009CE1D0
+ .word 0x009CE1D0, 0x009CFB00
+ .word 0x009CFB00, 0x009CFB48
+ .word 0x009CFB48, 0x009CFB90
+ .word 0x009CFB90, 0x009D14C0
+ .word 0x009D14C0, 0x009D2DF0
+ .word 0x009D2DF0, 0x009D4720
+ .word 0x009D4720, 0x009D6050
+ .word 0x009D6050, 0x009D6098
+ .word 0x009D6098, 0x009D60E0
+ .word 0x009D60E0, 0x009D7A10
+ .word 0x009D7A10, 0x009D9340
+ .word 0x009D9340, 0x009DAC70
+ .word 0x009DAC70, 0x009DC5A0
+ .word 0x009DC5A0, 0x009DC5E8
+ .word 0x009DC5E8, 0x009DC630
+ .word 0x009DC630, 0x009DDF60
+ .word 0x009DDF60, 0x009DF890
+ .word 0x009DF890, 0x009E11C0
+ .word 0x009E11C0, 0x009E2AF0
+ .word 0x009E2AF0, 0x009E2B38
+ .word 0x009E2B38, 0x009E2B80
+ .word 0x009E2B80, 0x009E44B0
+ .word 0x009E44B0, 0x009E5DE0
+ .word 0x009E5DE0, 0x009E7710
+ .word 0x009E7710, 0x009E9040
+ .word 0x009E9040, 0x009E9088
+ .word 0x009E9088, 0x009E90D0
+ .word 0x009E90D0, 0x009EAA00
+ .word 0x009EAA00, 0x009EC330
+ .word 0x009EC330, 0x009EDC60
+ .word 0x009EDC60, 0x009EF590
+ .word 0x009EF590, 0x009EF5D8
+ .word 0x009EF5D8, 0x009EF620
+ .word 0x009EF620, 0x009F0F50
+ .word 0x009F0F50, 0x009F2880
+ .word 0x009F2880, 0x009F41B0
+ .word 0x009F41B0, 0x009F5AE0
+ .word 0x009F5AE0, 0x009F5B28
+ .word 0x009F5B28, 0x009F5B70
+ .word 0x009F5B70, 0x009F74A0
+ .word 0x009F74A0, 0x009F8DD0
+ .word 0x009F8DD0, 0x009FA700
+ .word 0x009FA700, 0x009FC030
+ .word 0x009FC030, 0x009FC078
+ .word 0x009FC078, 0x009FC0C0
+ .word 0x009FC0C0, 0x009FD9F0
+ .word 0x009FD9F0, 0x009FF320
+ .word 0x009FF320, 0x00A00C50
+ .word 0x00A00C50, 0x00A02580
+ .word 0x00A02580, 0x00A025C8
+ .word 0x00A025C8, 0x00A02610
+ .word 0x00A02610, 0x00A03F40
+ .word 0x00A03F40, 0x00A05870
+ .word 0x00A05870, 0x00A071A0
+ .word 0x00A071A0, 0x00A08AD0
+ .word 0x00A08AD0, 0x00A08B18
+ .word 0x00A08B18, 0x00A08B60
+ .word 0x00A08B60, 0x00A08B60
+ .word 0x00A08B60, 0x00A0A490
+ .word 0x00A0A490, 0x00A0A490
+ .word 0x00A0A490, 0x00A0BDC0
+ .word 0x00A0BDC0, 0x00A0BE08
+ .word 0x00A0BE08, 0x00A0BE50
+ .word 0x00A0BE50, 0x00A0BE50
+ .word 0x00A0BE50, 0x00A0D780
+ .word 0x00A0D780, 0x00A0D780
+ .word 0x00A0D780, 0x00A0F0B0
+ .word 0x00A0F0B0, 0x00A0F0F8
+ .word 0x00A0F0F8, 0x00A0F140
+ .word 0x00A0F140, 0x00A10A70
+ .word 0x00A10A70, 0x00A123A0
+ .word 0x00A123A0, 0x00A13CD0
+ .word 0x00A13CD0, 0x00A15600
+ .word 0x00A15600, 0x00A15648
+ .word 0x00A15648, 0x00A15690
+ .word 0x00A15690, 0x00A16FC0
+ .word 0x00A16FC0, 0x00A188F0
+ .word 0x00A188F0, 0x00A1A220
+ .word 0x00A1A220, 0x00A1BB50
+ .word 0x00A1BB50, 0x00A1BB98
+ .word 0x00A1BB98, 0x00A1BBE0
+ .word 0x00A1BBE0, 0x00A1D510
+ .word 0x00A1D510, 0x00A1D510
+ .word 0x00A1D510, 0x00A1EE40
+ .word 0x00A1EE40, 0x00A1EE40
+ .word 0x00A1EE40, 0x00A1EE88
+ .word 0x00A1EE88, 0x00A1EED0
+ .word 0x00A1EED0, 0x00A20800
+ .word 0x00A20800, 0x00A22130
+ .word 0x00A22130, 0x00A23A60
+ .word 0x00A23A60, 0x00A25390
+ .word 0x00A25390, 0x00A253D8
+ .word 0x00A253D8, 0x00A25420
+ .word 0x00A25420, 0x00A26D50
+ .word 0x00A26D50, 0x00A28680
+ .word 0x00A28680, 0x00A29FB0
+ .word 0x00A29FB0, 0x00A2B8E0
+ .word 0x00A2B8E0, 0x00A2B928
+ .word 0x00A2B928, 0x00A2B970
+ .word 0x00A2B970, 0x00A2D2A0
+ .word 0x00A2D2A0, 0x00A2EBD0
+ .word 0x00A2EBD0, 0x00A30500
+ .word 0x00A30500, 0x00A31E30
+ .word 0x00A31E30, 0x00A31E78
+ .word 0x00A31E78, 0x00A31EC0
+ .word 0x00A31EC0, 0x00A337F0
+ .word 0x00A337F0, 0x00A35120
+ .word 0x00A35120, 0x00A36A50
+ .word 0x00A36A50, 0x00A38380
+ .word 0x00A38380, 0x00A383C8
+ .word 0x00A383C8, 0x00A38410
+ .word 0x00A38410, 0x00A39D40
+ .word 0x00A39D40, 0x00A3B670
+ .word 0x00A3B670, 0x00A3CFA0
+ .word 0x00A3CFA0, 0x00A3E8D0
+ .word 0x00A3E8D0, 0x00A3E918
+ .word 0x00A3E918, 0x00A3E960
+ .word 0x00A3E960, 0x00A40290
+ .word 0x00A40290, 0x00A41BC0
+ .word 0x00A41BC0, 0x00A434F0
+ .word 0x00A434F0, 0x00A44E20
+ .word 0x00A44E20, 0x00A44E68
+ .word 0x00A44E68, 0x00A44EB0
+ .word 0x00A44EB0, 0x00A467E0
+ .word 0x00A467E0, 0x00A48110
+ .word 0x00A48110, 0x00A49A40
+ .word 0x00A49A40, 0x00A4B370
+ .word 0x00A4B370, 0x00A4B3B8
+ .word 0x00A4B3B8, 0x00A4B400
+ .word 0x00A4B400, 0x00A4CD30
+ .word 0x00A4CD30, 0x00A4E660
+ .word 0x00A4E660, 0x00A4FF90
+ .word 0x00A4FF90, 0x00A518C0
+ .word 0x00A518C0, 0x00A51908
+ .word 0x00A51908, 0x00A51950
+ .word 0x00A51950, 0x00A53280
+ .word 0x00A53280, 0x00A54BB0
+ .word 0x00A54BB0, 0x00A564E0
+ .word 0x00A564E0, 0x00A57E10
+ .word 0x00A57E10, 0x00A57E58
+ .word 0x00A57E58, 0x00A57EA0
+ .word 0x00A57EA0, 0x00A597D0
+ .word 0x00A597D0, 0x00A5B100
+ .word 0x00A5B100, 0x00A5CA30
+ .word 0x00A5CA30, 0x00A5E360
+ .word 0x00A5E360, 0x00A5E3A8
+ .word 0x00A5E3A8, 0x00A5E3F0
+ .word 0x00A5E3F0, 0x00A5FD20
+ .word 0x00A5FD20, 0x00A61650
+ .word 0x00A61650, 0x00A62F80
+ .word 0x00A62F80, 0x00A648B0
+ .word 0x00A648B0, 0x00A648F8
+ .word 0x00A648F8, 0x00A64940
+ .word 0x00A64940, 0x00A66270
+ .word 0x00A66270, 0x00A67BA0
+ .word 0x00A67BA0, 0x00A694D0
+ .word 0x00A694D0, 0x00A6AE00
+ .word 0x00A6AE00, 0x00A6AE48
+ .word 0x00A6AE48, 0x00A6AE90
+ .word 0x00A6AE90, 0x00A6C7C0
+ .word 0x00A6C7C0, 0x00A6E0F0
+ .word 0x00A6E0F0, 0x00A6FA20
+ .word 0x00A6FA20, 0x00A71350
+ .word 0x00A71350, 0x00A71398
+ .word 0x00A71398, 0x00A713E0
+ .word 0x00A713E0, 0x00A72D10
+ .word 0x00A72D10, 0x00A74640
+ .word 0x00A74640, 0x00A75F70
+ .word 0x00A75F70, 0x00A778A0
+ .word 0x00A778A0, 0x00A778E8
+ .word 0x00A778E8, 0x00A77930
+ .word 0x00A77930, 0x00A79260
+ .word 0x00A79260, 0x00A7AB90
+ .word 0x00A7AB90, 0x00A7C4C0
+ .word 0x00A7C4C0, 0x00A7DDF0
+ .word 0x00A7DDF0, 0x00A7DE38
+ .word 0x00A7DE38, 0x00A7DE80
+ .word 0x00A7DE80, 0x00A7F7B0
+ .word 0x00A7F7B0, 0x00A810E0
+ .word 0x00A810E0, 0x00A82A10
+ .word 0x00A82A10, 0x00A84340
+ .word 0x00A84340, 0x00A84388
+ .word 0x00A84388, 0x00A843D0
+ .word 0x00A843D0, 0x00A85D00
+ .word 0x00A85D00, 0x00A87630
+ .word 0x00A87630, 0x00A88F60
+ .word 0x00A88F60, 0x00A8A890
+ .word 0x00A8A890, 0x00A8A8D8
+ .word 0x00A8A8D8, 0x00A8A920
+ .word 0x00A8A920, 0x00A8C250
+ .word 0x00A8C250, 0x00A8DB80
+ .word 0x00A8DB80, 0x00A8F4B0
+ .word 0x00A8F4B0, 0x00A90DE0
+ .word 0x00A90DE0, 0x00A90E28
+ .word 0x00A90E28, 0x00A90E70
+ .word 0x00A90E70, 0x00A927A0
+ .word 0x00A927A0, 0x00A940D0
+ .word 0x00A940D0, 0x00A95A00
+ .word 0x00A95A00, 0x00A97330
+ .word 0x00A97330, 0x00A97378
+ .word 0x00A97378, 0x00A973C0
+ .word 0x00A973C0, 0x00A98CF0
+ .word 0x00A98CF0, 0x00A9A620
+ .word 0x00A9A620, 0x00A9BF50
+ .word 0x00A9BF50, 0x00A9D880
+ .word 0x00A9D880, 0x00A9D8C8
+ .word 0x00A9D8C8, 0x00A9D910
+ .word 0x00A9D910, 0x00A9F240
+ .word 0x00A9F240, 0x00AA0B70
+ .word 0x00AA0B70, 0x00AA24A0
+ .word 0x00AA24A0, 0x00AA3DD0
+ .word 0x00AA3DD0, 0x00AA3E18
+ .word 0x00AA3E18, 0x00AA3E60
+ .word 0x00AA3E60, 0x00AA3E60
+ .word 0x00AA3E60, 0x00AA5790
+ .word 0x00AA5790, 0x00AA5790
+ .word 0x00AA5790, 0x00AA70C0
+ .word 0x00AA70C0, 0x00AA7108
+ .word 0x00AA7108, 0x00AA7150
+ .word 0x00AA7150, 0x00AA8A80
+ .word 0x00AA8A80, 0x00AAA3B0
+ .word 0x00AAA3B0, 0x00AABCE0
+ .word 0x00AABCE0, 0x00AAD610
+ .word 0x00AAD610, 0x00AAD658
+ .word 0x00AAD658, 0x00AAD6A0
+ .word 0x00AAD6A0, 0x00AAEFD0
+ .word 0x00AAEFD0, 0x00AB0900
+ .word 0x00AB0900, 0x00AB2230
+ .word 0x00AB2230, 0x00AB3B60
+ .word 0x00AB3B60, 0x00AB3BA8
+ .word 0x00AB3BA8, 0x00AB3BF0
+ .word 0x00AB3BF0, 0x00AB5520
+ .word 0x00AB5520, 0x00AB6E50
+ .word 0x00AB6E50, 0x00AB8780
+ .word 0x00AB8780, 0x00ABA0B0
+ .word 0x00ABA0B0, 0x00ABA0F8
+ .word 0x00ABA0F8, 0x00ABA140
+ .word 0x00ABA140, 0x00ABBA70
+ .word 0x00ABBA70, 0x00ABD3A0
+ .word 0x00ABD3A0, 0x00ABECD0
+ .word 0x00ABECD0, 0x00AC0600
+ .word 0x00AC0600, 0x00AC0648
+ .word 0x00AC0648, 0x00AC0690
+ .word 0x00AC0690, 0x00AC1FC0
+ .word 0x00AC1FC0, 0x00AC38F0
+ .word 0x00AC38F0, 0x00AC5220
+ .word 0x00AC5220, 0x00AC6B50
+ .word 0x00AC6B50, 0x00AC6B98
+ .word 0x00AC6B98, 0x00AC6BE0
+ .word 0x00AC6BE0, 0x00AC8510
+ .word 0x00AC8510, 0x00AC9E40
+ .word 0x00AC9E40, 0x00ACB770
+ .word 0x00ACB770, 0x00ACD0A0
+ .word 0x00ACD0A0, 0x00ACD0E8
+ .word 0x00ACD0E8, 0x00ACD130
+ .word 0x00ACD130, 0x00ACEA60
+ .word 0x00ACEA60, 0x00AD0390
+ .word 0x00AD0390, 0x00AD1CC0
+ .word 0x00AD1CC0, 0x00AD35F0
+ .word 0x00AD35F0, 0x00AD3638
+ .word 0x00AD3638, 0x00AD3680
+ .word 0x00AD3680, 0x00AD4FB0
+ .word 0x00AD4FB0, 0x00AD68E0
+ .word 0x00AD68E0, 0x00AD8210
+ .word 0x00AD8210, 0x00AD9B40
+ .word 0x00AD9B40, 0x00AD9B88
+ .word 0x00AD9B88, 0x00AD9BD0
+ .word 0x00AD9BD0, 0x00ADB500
+ .word 0x00ADB500, 0x00ADCE30
+ .word 0x00ADCE30, 0x00ADE760
+ .word 0x00ADE760, 0x00AE0090
+ .word 0x00AE0090, 0x00AE00D8
+ .word 0x00AE00D8, 0x00AE0120
+ .word 0x00AE0120, 0x00AE1A50
+ .word 0x00AE1A50, 0x00AE3380
+ .word 0x00AE3380, 0x00AE4CB0
+ .word 0x00AE4CB0, 0x00AE65E0
+ .word 0x00AE65E0, 0x00AE6628
+ .word 0x00AE6628, 0x00AE6670
+ .word 0x00AE6670, 0x00AE7FA0
+ .word 0x00AE7FA0, 0x00AE98D0
+ .word 0x00AE98D0, 0x00AEB200
+ .word 0x00AEB200, 0x00AECB30
+ .word 0x00AECB30, 0x00AECB78
+ .word 0x00AECB78, 0x00AECBC0
+ .word 0x00AECBC0, 0x00AECBC0
+ .word 0x00AECBC0, 0x00AEE4F0
+ .word 0x00AEE4F0, 0x00AEE4F0
+ .word 0x00AEE4F0, 0x00AEFE20
+ .word 0x00AEFE20, 0x00AEFE68
+ .word 0x00AEFE68, 0x00AEFEB0
+ .word 0x00AEFEB0, 0x00AEFEB0
+ .word 0x00AEFEB0, 0x00AF17E0
+ .word 0x00AF17E0, 0x00AF17E0
+ .word 0x00AF17E0, 0x00AF3110
+ .word 0x00AF3110, 0x00AF3158
+ .word 0x00AF3158, 0x00AF31A0
+ .word 0x00AF31A0, 0x00AF4AD0
+ .word 0x00AF4AD0, 0x00AF6400
+ .word 0x00AF6400, 0x00AF7D30
+ .word 0x00AF7D30, 0x00AF9660
+ .word 0x00AF9660, 0x00AF96A8
+ .word 0x00AF96A8, 0x00AF96F0
+ .word 0x00AF96F0, 0x00AFB020
+ .word 0x00AFB020, 0x00AFC950
+ .word 0x00AFC950, 0x00AFE280
+ .word 0x00AFE280, 0x00AFFBB0
+ .word 0x00AFFBB0, 0x00AFFBF8
+ .word 0x00AFFBF8, 0x00AFFC40
+ .word 0x00AFFC40, 0x00B01570
+ .word 0x00B01570, 0x00B01570
+ .word 0x00B01570, 0x00B02EA0
+ .word 0x00B02EA0, 0x00B02EA0
+ .word 0x00B02EA0, 0x00B02EE8
+ .word 0x00B02EE8, 0x00B02F30
+ .word 0x00B02F30, 0x00B02F30
+ .word 0x00B02F30, 0x00B04860
+ .word 0x00B04860, 0x00B04860
+ .word 0x00B04860, 0x00B06190
+ .word 0x00B06190, 0x00B061D8
+ .word 0x00B061D8, 0x00B06220
+ .word 0x00B06220, 0x00B06220
+ .word 0x00B06220, 0x00B07B50
+ .word 0x00B07B50, 0x00B07B50
+ .word 0x00B07B50, 0x00B09480
+ .word 0x00B09480, 0x00B094C8
+ .word 0x00B094C8, 0x00B09510
+ .word 0x00B09510, 0x00B09510
+ .word 0x00B09510, 0x00B0AE40
+ .word 0x00B0AE40, 0x00B0AE40
+ .word 0x00B0AE40, 0x00B0C770
+ .word 0x00B0C770, 0x00B0C7B8
+ .word 0x00B0C7B8, 0x00B0C800
+ .word 0x00B0C800, 0x00B0C800
+ .word 0x00B0C800, 0x00B0E130
+ .word 0x00B0E130, 0x00B0E130
+ .word 0x00B0E130, 0x00B0FA60
+ .word 0x00B0FA60, 0x00B0FAA8
+ .word 0x00B0FAA8, 0x00B0FAF0
+ .word 0x00B0FAF0, 0x00B0FAF0
+ .word 0x00B0FAF0, 0x00B11420
+ .word 0x00B11420, 0x00B11420
+ .word 0x00B11420, 0x00B12D50
+ .word 0x00B12D50, 0x00B12D98
+ .word 0x00B12D98, 0x00B12DE0
+ .word 0x00B12DE0, 0x00B12DE0
+ .word 0x00B12DE0, 0x00B14710
+ .word 0x00B14710, 0x00B14710
+ .word 0x00B14710, 0x00B16040
+ .word 0x00B16040, 0x00B16088
+ .word 0x00B16088, 0x00B160D0
+ .word 0x00B160D0, 0x00B17A00
+ .word 0x00B17A00, 0x00B19330
+ .word 0x00B19330, 0x00B1AC60
+ .word 0x00B1AC60, 0x00B1C590
+ .word 0x00B1C590, 0x00B1C5D8
+ .word 0x00B1C5D8, 0x00B1C620
+ .word 0x00B1C620, 0x00B1C620
+ .word 0x00B1C620, 0x00B1DF50
+ .word 0x00B1DF50, 0x00B1DF50
+ .word 0x00B1DF50, 0x00B1F880
+ .word 0x00B1F880, 0x00B1F8C8
+ .word 0x00B1F8C8, 0x00B1F910
+ .word 0x00B1F910, 0x00B1F910
+ .word 0x00B1F910, 0x00B21240
+ .word 0x00B21240, 0x00B21240
+ .word 0x00B21240, 0x00B22B70
+ .word 0x00B22B70, 0x00B22BB8
+ .word 0x00B22BB8, 0x00B22C00
+ .word 0x00B22C00, 0x00B24530
+ .word 0x00B24530, 0x00B24530
+ .word 0x00B24530, 0x00B25E60
+ .word 0x00B25E60, 0x00B25E60
+ .word 0x00B25E60, 0x00B25EA8
+ .word 0x00B25EA8, 0x00B25EF0
+ .word 0x00B25EF0, 0x00B25EF0
+ .word 0x00B25EF0, 0x00B27820
+ .word 0x00B27820, 0x00B27820
+ .word 0x00B27820, 0x00B29150
+ .word 0x00B29150, 0x00B29198
+ .word 0x00B29198, 0x00B291E0
+ .word 0x00B291E0, 0x00B291E0
+ .word 0x00B291E0, 0x00B2AB10
+ .word 0x00B2AB10, 0x00B2AB10
+ .word 0x00B2AB10, 0x00B2C440
+ .word 0x00B2C440, 0x00B2C488
+ .word 0x00B2C488, 0x00B2C4D0
+ .word 0x00B2C4D0, 0x00B2C4D0
+ .word 0x00B2C4D0, 0x00B2DE00
+ .word 0x00B2DE00, 0x00B2DE00
+ .word 0x00B2DE00, 0x00B2F730
+ .word 0x00B2F730, 0x00B2F778
+ .word 0x00B2F778, 0x00B2F7C0
+ .word 0x00B2F7C0, 0x00B2F7C0
+ .word 0x00B2F7C0, 0x00B310F0
+ .word 0x00B310F0, 0x00B310F0
+ .word 0x00B310F0, 0x00B32A20
+ .word 0x00B32A20, 0x00B32A68
+ .word 0x00B32A68, 0x00B32AB0
+ .word 0x00B32AB0, 0x00B32AB0
+ .word 0x00B32AB0, 0x00B343E0
+ .word 0x00B343E0, 0x00B343E0
+ .word 0x00B343E0, 0x00B35D10
+ .word 0x00B35D10, 0x00B35D58
+ .word 0x00B35D58, 0x00B35DA0
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00B35DA8 ; chunk size
+ .incbin "baserom.nds", 0x10354D4, 0xB35DA0
+ .balign 512, 255
diff --git a/files/FILE_10C400.s b/files/FILE_10C400.s
new file mode 100644
index 00000000..5cf27f33
--- /dev/null
+++ b/files/FILE_10C400.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x10C400, 0x20
+ .balign 512, 255
diff --git a/files/FILE_10C600.s b/files/FILE_10C600.s
new file mode 100644
index 00000000..d2608c8c
--- /dev/null
+++ b/files/FILE_10C600.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x10C600, 0x20
+ .balign 512, 255
diff --git a/files/FILE_10C800.s b/files/FILE_10C800.s
new file mode 100644
index 00000000..8cb22116
--- /dev/null
+++ b/files/FILE_10C800.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x10C800, 0x20
+ .balign 512, 255
diff --git a/files/FILE_10CA00.s b/files/FILE_10CA00.s
new file mode 100644
index 00000000..46e1e03b
--- /dev/null
+++ b/files/FILE_10CA00.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x10CA00, 0x20
+ .balign 512, 255
diff --git a/files/FILE_10CC00.s b/files/FILE_10CC00.s
new file mode 100644
index 00000000..2876942a
--- /dev/null
+++ b/files/FILE_10CC00.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x10CC00, 0x386E0
+ .balign 512, 255
diff --git a/files/FILE_145400.s b/files/FILE_145400.s
new file mode 100644
index 00000000..31de6e12
--- /dev/null
+++ b/files/FILE_145400.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x145400, 0x261A0
+ .balign 512, 255
diff --git a/files/FILE_16B600.s b/files/FILE_16B600.s
new file mode 100644
index 00000000..33e75c23
--- /dev/null
+++ b/files/FILE_16B600.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x16B600, 0x18D80
+ .balign 512, 255
diff --git a/files/FILE_184400.s b/files/FILE_184400.s
new file mode 100644
index 00000000..936860c0
--- /dev/null
+++ b/files/FILE_184400.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x184400, 0x32E0
+ .balign 512, 255
diff --git a/files/FILE_187800.s b/files/FILE_187800.s
new file mode 100644
index 00000000..38b64eec
--- /dev/null
+++ b/files/FILE_187800.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x187800, 0x1B760
+ .balign 512, 255
diff --git a/files/FILE_1A3000.s b/files/FILE_1A3000.s
new file mode 100644
index 00000000..3febcf47
--- /dev/null
+++ b/files/FILE_1A3000.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x1A3000, 0xA1A0
+ .balign 512, 255
diff --git a/files/FILE_1AD200.s b/files/FILE_1AD200.s
new file mode 100644
index 00000000..24bfcb9b
--- /dev/null
+++ b/files/FILE_1AD200.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x1AD200, 0x20
+ .balign 512, 255
diff --git a/files/FILE_1AD400.s b/files/FILE_1AD400.s
new file mode 100644
index 00000000..f66becc6
--- /dev/null
+++ b/files/FILE_1AD400.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x1AD400, 0x329E0
+ .balign 512, 255
diff --git a/files/FILE_1B6B400_trbgra.narc.s b/files/FILE_1B6B400_trbgra.narc.s
new file mode 100644
index 00000000..318dc72d
--- /dev/null
+++ b/files/FILE_1B6B400_trbgra.narc.s
@@ -0,0 +1,44 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x0000CC74 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x0000008C ; chunk size
+ .short 16 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00001930
+ .word 0x00001930, 0x00001978
+ .word 0x00001978, 0x000032A8
+ .word 0x000032A8, 0x000032F0
+ .word 0x000032F0, 0x00004C20
+ .word 0x00004C20, 0x00004C68
+ .word 0x00004C68, 0x00006598
+ .word 0x00006598, 0x000065E0
+ .word 0x000065E0, 0x00007F10
+ .word 0x00007F10, 0x00007F58
+ .word 0x00007F58, 0x00009888
+ .word 0x00009888, 0x000098D0
+ .word 0x000098D0, 0x0000B200
+ .word 0x0000B200, 0x0000B248
+ .word 0x0000B248, 0x0000CB78
+ .word 0x0000CB78, 0x0000CBC0
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x0000CBC8 ; chunk size
+ .incbin "baserom.nds", 0x1B6B4B4, 0xCBC0
+ .balign 512, 255
diff --git a/files/FILE_1B78200_trfgra.narc.s b/files/FILE_1B78200_trfgra.narc.s
new file mode 100644
index 00000000..a374dafe
--- /dev/null
+++ b/files/FILE_1B78200_trfgra.narc.s
@@ -0,0 +1,224 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x0009C644 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x0000062C ; chunk size
+ .short 196 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00001930
+ .word 0x00001930, 0x00001978
+ .word 0x00001978, 0x000032A8
+ .word 0x000032A8, 0x000032F0
+ .word 0x000032F0, 0x00004C20
+ .word 0x00004C20, 0x00004C68
+ .word 0x00004C68, 0x00006598
+ .word 0x00006598, 0x000065E0
+ .word 0x000065E0, 0x00007F10
+ .word 0x00007F10, 0x00007F58
+ .word 0x00007F58, 0x00009888
+ .word 0x00009888, 0x000098D0
+ .word 0x000098D0, 0x0000B200
+ .word 0x0000B200, 0x0000B248
+ .word 0x0000B248, 0x0000CB78
+ .word 0x0000CB78, 0x0000CBC0
+ .word 0x0000CBC0, 0x0000E4F0
+ .word 0x0000E4F0, 0x0000E538
+ .word 0x0000E538, 0x0000FE68
+ .word 0x0000FE68, 0x0000FEB0
+ .word 0x0000FEB0, 0x000117E0
+ .word 0x000117E0, 0x00011828
+ .word 0x00011828, 0x00013158
+ .word 0x00013158, 0x000131A0
+ .word 0x000131A0, 0x00014AD0
+ .word 0x00014AD0, 0x00014B18
+ .word 0x00014B18, 0x00016448
+ .word 0x00016448, 0x00016490
+ .word 0x00016490, 0x00017DC0
+ .word 0x00017DC0, 0x00017E08
+ .word 0x00017E08, 0x00019738
+ .word 0x00019738, 0x00019780
+ .word 0x00019780, 0x0001B0B0
+ .word 0x0001B0B0, 0x0001B0F8
+ .word 0x0001B0F8, 0x0001CA28
+ .word 0x0001CA28, 0x0001CA70
+ .word 0x0001CA70, 0x0001E3A0
+ .word 0x0001E3A0, 0x0001E3E8
+ .word 0x0001E3E8, 0x0001FD18
+ .word 0x0001FD18, 0x0001FD60
+ .word 0x0001FD60, 0x00021690
+ .word 0x00021690, 0x000216D8
+ .word 0x000216D8, 0x00023008
+ .word 0x00023008, 0x00023050
+ .word 0x00023050, 0x00024980
+ .word 0x00024980, 0x000249C8
+ .word 0x000249C8, 0x000262F8
+ .word 0x000262F8, 0x00026340
+ .word 0x00026340, 0x00027C70
+ .word 0x00027C70, 0x00027CB8
+ .word 0x00027CB8, 0x000295E8
+ .word 0x000295E8, 0x00029630
+ .word 0x00029630, 0x0002AF60
+ .word 0x0002AF60, 0x0002AFA8
+ .word 0x0002AFA8, 0x0002C8D8
+ .word 0x0002C8D8, 0x0002C920
+ .word 0x0002C920, 0x0002E250
+ .word 0x0002E250, 0x0002E298
+ .word 0x0002E298, 0x0002FBC8
+ .word 0x0002FBC8, 0x0002FC10
+ .word 0x0002FC10, 0x00031540
+ .word 0x00031540, 0x00031588
+ .word 0x00031588, 0x00032EB8
+ .word 0x00032EB8, 0x00032F00
+ .word 0x00032F00, 0x00034830
+ .word 0x00034830, 0x00034878
+ .word 0x00034878, 0x000361A8
+ .word 0x000361A8, 0x000361F0
+ .word 0x000361F0, 0x00037B20
+ .word 0x00037B20, 0x00037B68
+ .word 0x00037B68, 0x00039498
+ .word 0x00039498, 0x000394E0
+ .word 0x000394E0, 0x0003AE10
+ .word 0x0003AE10, 0x0003AE58
+ .word 0x0003AE58, 0x0003C788
+ .word 0x0003C788, 0x0003C7D0
+ .word 0x0003C7D0, 0x0003E100
+ .word 0x0003E100, 0x0003E148
+ .word 0x0003E148, 0x0003FA78
+ .word 0x0003FA78, 0x0003FAC0
+ .word 0x0003FAC0, 0x000413F0
+ .word 0x000413F0, 0x00041438
+ .word 0x00041438, 0x00042D68
+ .word 0x00042D68, 0x00042DB0
+ .word 0x00042DB0, 0x000446E0
+ .word 0x000446E0, 0x00044728
+ .word 0x00044728, 0x00046058
+ .word 0x00046058, 0x000460A0
+ .word 0x000460A0, 0x000479D0
+ .word 0x000479D0, 0x00047A18
+ .word 0x00047A18, 0x00049348
+ .word 0x00049348, 0x00049390
+ .word 0x00049390, 0x0004ACC0
+ .word 0x0004ACC0, 0x0004AD08
+ .word 0x0004AD08, 0x0004C638
+ .word 0x0004C638, 0x0004C680
+ .word 0x0004C680, 0x0004DFB0
+ .word 0x0004DFB0, 0x0004DFF8
+ .word 0x0004DFF8, 0x0004F928
+ .word 0x0004F928, 0x0004F970
+ .word 0x0004F970, 0x000512A0
+ .word 0x000512A0, 0x000512E8
+ .word 0x000512E8, 0x00052C18
+ .word 0x00052C18, 0x00052C60
+ .word 0x00052C60, 0x00054590
+ .word 0x00054590, 0x000545D8
+ .word 0x000545D8, 0x00055F08
+ .word 0x00055F08, 0x00055F50
+ .word 0x00055F50, 0x00057880
+ .word 0x00057880, 0x000578C8
+ .word 0x000578C8, 0x000591F8
+ .word 0x000591F8, 0x00059240
+ .word 0x00059240, 0x0005AB70
+ .word 0x0005AB70, 0x0005ABB8
+ .word 0x0005ABB8, 0x0005C4E8
+ .word 0x0005C4E8, 0x0005C530
+ .word 0x0005C530, 0x0005DE60
+ .word 0x0005DE60, 0x0005DEA8
+ .word 0x0005DEA8, 0x0005F7D8
+ .word 0x0005F7D8, 0x0005F820
+ .word 0x0005F820, 0x00061150
+ .word 0x00061150, 0x00061198
+ .word 0x00061198, 0x00062AC8
+ .word 0x00062AC8, 0x00062B10
+ .word 0x00062B10, 0x00064440
+ .word 0x00064440, 0x00064488
+ .word 0x00064488, 0x00065DB8
+ .word 0x00065DB8, 0x00065E00
+ .word 0x00065E00, 0x00067730
+ .word 0x00067730, 0x00067778
+ .word 0x00067778, 0x000690A8
+ .word 0x000690A8, 0x000690F0
+ .word 0x000690F0, 0x0006AA20
+ .word 0x0006AA20, 0x0006AA68
+ .word 0x0006AA68, 0x0006C398
+ .word 0x0006C398, 0x0006C3E0
+ .word 0x0006C3E0, 0x0006DD10
+ .word 0x0006DD10, 0x0006DD58
+ .word 0x0006DD58, 0x0006F688
+ .word 0x0006F688, 0x0006F6D0
+ .word 0x0006F6D0, 0x00071000
+ .word 0x00071000, 0x00071048
+ .word 0x00071048, 0x00072978
+ .word 0x00072978, 0x000729C0
+ .word 0x000729C0, 0x000742F0
+ .word 0x000742F0, 0x00074338
+ .word 0x00074338, 0x00075C68
+ .word 0x00075C68, 0x00075CB0
+ .word 0x00075CB0, 0x000775E0
+ .word 0x000775E0, 0x00077628
+ .word 0x00077628, 0x00078F58
+ .word 0x00078F58, 0x00078FA0
+ .word 0x00078FA0, 0x0007A8D0
+ .word 0x0007A8D0, 0x0007A918
+ .word 0x0007A918, 0x0007C248
+ .word 0x0007C248, 0x0007C290
+ .word 0x0007C290, 0x0007DBC0
+ .word 0x0007DBC0, 0x0007DC08
+ .word 0x0007DC08, 0x0007F538
+ .word 0x0007F538, 0x0007F580
+ .word 0x0007F580, 0x00080EB0
+ .word 0x00080EB0, 0x00080EF8
+ .word 0x00080EF8, 0x00082828
+ .word 0x00082828, 0x00082870
+ .word 0x00082870, 0x000841A0
+ .word 0x000841A0, 0x000841E8
+ .word 0x000841E8, 0x00085B18
+ .word 0x00085B18, 0x00085B60
+ .word 0x00085B60, 0x00087490
+ .word 0x00087490, 0x000874D8
+ .word 0x000874D8, 0x00088E08
+ .word 0x00088E08, 0x00088E50
+ .word 0x00088E50, 0x0008A780
+ .word 0x0008A780, 0x0008A7C8
+ .word 0x0008A7C8, 0x0008C0F8
+ .word 0x0008C0F8, 0x0008C140
+ .word 0x0008C140, 0x0008DA70
+ .word 0x0008DA70, 0x0008DAB8
+ .word 0x0008DAB8, 0x0008F3E8
+ .word 0x0008F3E8, 0x0008F430
+ .word 0x0008F430, 0x00090D60
+ .word 0x00090D60, 0x00090DA8
+ .word 0x00090DA8, 0x000926D8
+ .word 0x000926D8, 0x00092720
+ .word 0x00092720, 0x00094050
+ .word 0x00094050, 0x00094098
+ .word 0x00094098, 0x000959C8
+ .word 0x000959C8, 0x00095A10
+ .word 0x00095A10, 0x00097340
+ .word 0x00097340, 0x00097388
+ .word 0x00097388, 0x00098CB8
+ .word 0x00098CB8, 0x00098D00
+ .word 0x00098D00, 0x0009A630
+ .word 0x0009A630, 0x0009A678
+ .word 0x0009A678, 0x0009BFA8
+ .word 0x0009BFA8, 0x0009BFF0
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x0009BFF8 ; chunk size
+ .incbin "baserom.nds", 0x1B78854, 0x9BFF0
+ .balign 512, 255
diff --git a/files/FILE_1C14A00_personal.narc.s b/files/FILE_1C14A00_personal.narc.s
new file mode 100644
index 00000000..5150e22a
--- /dev/null
+++ b/files/FILE_1C14A00_personal.narc.s
@@ -0,0 +1,529 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x000065F8 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000FB4 ; chunk size
+ .short 501 ; number of files
+ .balign 4
+ .word 0x00000000, 0x0000002C
+ .word 0x0000002C, 0x00000058
+ .word 0x00000058, 0x00000084
+ .word 0x00000084, 0x000000B0
+ .word 0x000000B0, 0x000000DC
+ .word 0x000000DC, 0x00000108
+ .word 0x00000108, 0x00000134
+ .word 0x00000134, 0x00000160
+ .word 0x00000160, 0x0000018C
+ .word 0x0000018C, 0x000001B8
+ .word 0x000001B8, 0x000001E4
+ .word 0x000001E4, 0x00000210
+ .word 0x00000210, 0x0000023C
+ .word 0x0000023C, 0x00000268
+ .word 0x00000268, 0x00000294
+ .word 0x00000294, 0x000002C0
+ .word 0x000002C0, 0x000002EC
+ .word 0x000002EC, 0x00000318
+ .word 0x00000318, 0x00000344
+ .word 0x00000344, 0x00000370
+ .word 0x00000370, 0x0000039C
+ .word 0x0000039C, 0x000003C8
+ .word 0x000003C8, 0x000003F4
+ .word 0x000003F4, 0x00000420
+ .word 0x00000420, 0x0000044C
+ .word 0x0000044C, 0x00000478
+ .word 0x00000478, 0x000004A4
+ .word 0x000004A4, 0x000004D0
+ .word 0x000004D0, 0x000004FC
+ .word 0x000004FC, 0x00000528
+ .word 0x00000528, 0x00000554
+ .word 0x00000554, 0x00000580
+ .word 0x00000580, 0x000005AC
+ .word 0x000005AC, 0x000005D8
+ .word 0x000005D8, 0x00000604
+ .word 0x00000604, 0x00000630
+ .word 0x00000630, 0x0000065C
+ .word 0x0000065C, 0x00000688
+ .word 0x00000688, 0x000006B4
+ .word 0x000006B4, 0x000006E0
+ .word 0x000006E0, 0x0000070C
+ .word 0x0000070C, 0x00000738
+ .word 0x00000738, 0x00000764
+ .word 0x00000764, 0x00000790
+ .word 0x00000790, 0x000007BC
+ .word 0x000007BC, 0x000007E8
+ .word 0x000007E8, 0x00000814
+ .word 0x00000814, 0x00000840
+ .word 0x00000840, 0x0000086C
+ .word 0x0000086C, 0x00000898
+ .word 0x00000898, 0x000008C4
+ .word 0x000008C4, 0x000008F0
+ .word 0x000008F0, 0x0000091C
+ .word 0x0000091C, 0x00000948
+ .word 0x00000948, 0x00000974
+ .word 0x00000974, 0x000009A0
+ .word 0x000009A0, 0x000009CC
+ .word 0x000009CC, 0x000009F8
+ .word 0x000009F8, 0x00000A24
+ .word 0x00000A24, 0x00000A50
+ .word 0x00000A50, 0x00000A7C
+ .word 0x00000A7C, 0x00000AA8
+ .word 0x00000AA8, 0x00000AD4
+ .word 0x00000AD4, 0x00000B00
+ .word 0x00000B00, 0x00000B2C
+ .word 0x00000B2C, 0x00000B58
+ .word 0x00000B58, 0x00000B84
+ .word 0x00000B84, 0x00000BB0
+ .word 0x00000BB0, 0x00000BDC
+ .word 0x00000BDC, 0x00000C08
+ .word 0x00000C08, 0x00000C34
+ .word 0x00000C34, 0x00000C60
+ .word 0x00000C60, 0x00000C8C
+ .word 0x00000C8C, 0x00000CB8
+ .word 0x00000CB8, 0x00000CE4
+ .word 0x00000CE4, 0x00000D10
+ .word 0x00000D10, 0x00000D3C
+ .word 0x00000D3C, 0x00000D68
+ .word 0x00000D68, 0x00000D94
+ .word 0x00000D94, 0x00000DC0
+ .word 0x00000DC0, 0x00000DEC
+ .word 0x00000DEC, 0x00000E18
+ .word 0x00000E18, 0x00000E44
+ .word 0x00000E44, 0x00000E70
+ .word 0x00000E70, 0x00000E9C
+ .word 0x00000E9C, 0x00000EC8
+ .word 0x00000EC8, 0x00000EF4
+ .word 0x00000EF4, 0x00000F20
+ .word 0x00000F20, 0x00000F4C
+ .word 0x00000F4C, 0x00000F78
+ .word 0x00000F78, 0x00000FA4
+ .word 0x00000FA4, 0x00000FD0
+ .word 0x00000FD0, 0x00000FFC
+ .word 0x00000FFC, 0x00001028
+ .word 0x00001028, 0x00001054
+ .word 0x00001054, 0x00001080
+ .word 0x00001080, 0x000010AC
+ .word 0x000010AC, 0x000010D8
+ .word 0x000010D8, 0x00001104
+ .word 0x00001104, 0x00001130
+ .word 0x00001130, 0x0000115C
+ .word 0x0000115C, 0x00001188
+ .word 0x00001188, 0x000011B4
+ .word 0x000011B4, 0x000011E0
+ .word 0x000011E0, 0x0000120C
+ .word 0x0000120C, 0x00001238
+ .word 0x00001238, 0x00001264
+ .word 0x00001264, 0x00001290
+ .word 0x00001290, 0x000012BC
+ .word 0x000012BC, 0x000012E8
+ .word 0x000012E8, 0x00001314
+ .word 0x00001314, 0x00001340
+ .word 0x00001340, 0x0000136C
+ .word 0x0000136C, 0x00001398
+ .word 0x00001398, 0x000013C4
+ .word 0x000013C4, 0x000013F0
+ .word 0x000013F0, 0x0000141C
+ .word 0x0000141C, 0x00001448
+ .word 0x00001448, 0x00001474
+ .word 0x00001474, 0x000014A0
+ .word 0x000014A0, 0x000014CC
+ .word 0x000014CC, 0x000014F8
+ .word 0x000014F8, 0x00001524
+ .word 0x00001524, 0x00001550
+ .word 0x00001550, 0x0000157C
+ .word 0x0000157C, 0x000015A8
+ .word 0x000015A8, 0x000015D4
+ .word 0x000015D4, 0x00001600
+ .word 0x00001600, 0x0000162C
+ .word 0x0000162C, 0x00001658
+ .word 0x00001658, 0x00001684
+ .word 0x00001684, 0x000016B0
+ .word 0x000016B0, 0x000016DC
+ .word 0x000016DC, 0x00001708
+ .word 0x00001708, 0x00001734
+ .word 0x00001734, 0x00001760
+ .word 0x00001760, 0x0000178C
+ .word 0x0000178C, 0x000017B8
+ .word 0x000017B8, 0x000017E4
+ .word 0x000017E4, 0x00001810
+ .word 0x00001810, 0x0000183C
+ .word 0x0000183C, 0x00001868
+ .word 0x00001868, 0x00001894
+ .word 0x00001894, 0x000018C0
+ .word 0x000018C0, 0x000018EC
+ .word 0x000018EC, 0x00001918
+ .word 0x00001918, 0x00001944
+ .word 0x00001944, 0x00001970
+ .word 0x00001970, 0x0000199C
+ .word 0x0000199C, 0x000019C8
+ .word 0x000019C8, 0x000019F4
+ .word 0x000019F4, 0x00001A20
+ .word 0x00001A20, 0x00001A4C
+ .word 0x00001A4C, 0x00001A78
+ .word 0x00001A78, 0x00001AA4
+ .word 0x00001AA4, 0x00001AD0
+ .word 0x00001AD0, 0x00001AFC
+ .word 0x00001AFC, 0x00001B28
+ .word 0x00001B28, 0x00001B54
+ .word 0x00001B54, 0x00001B80
+ .word 0x00001B80, 0x00001BAC
+ .word 0x00001BAC, 0x00001BD8
+ .word 0x00001BD8, 0x00001C04
+ .word 0x00001C04, 0x00001C30
+ .word 0x00001C30, 0x00001C5C
+ .word 0x00001C5C, 0x00001C88
+ .word 0x00001C88, 0x00001CB4
+ .word 0x00001CB4, 0x00001CE0
+ .word 0x00001CE0, 0x00001D0C
+ .word 0x00001D0C, 0x00001D38
+ .word 0x00001D38, 0x00001D64
+ .word 0x00001D64, 0x00001D90
+ .word 0x00001D90, 0x00001DBC
+ .word 0x00001DBC, 0x00001DE8
+ .word 0x00001DE8, 0x00001E14
+ .word 0x00001E14, 0x00001E40
+ .word 0x00001E40, 0x00001E6C
+ .word 0x00001E6C, 0x00001E98
+ .word 0x00001E98, 0x00001EC4
+ .word 0x00001EC4, 0x00001EF0
+ .word 0x00001EF0, 0x00001F1C
+ .word 0x00001F1C, 0x00001F48
+ .word 0x00001F48, 0x00001F74
+ .word 0x00001F74, 0x00001FA0
+ .word 0x00001FA0, 0x00001FCC
+ .word 0x00001FCC, 0x00001FF8
+ .word 0x00001FF8, 0x00002024
+ .word 0x00002024, 0x00002050
+ .word 0x00002050, 0x0000207C
+ .word 0x0000207C, 0x000020A8
+ .word 0x000020A8, 0x000020D4
+ .word 0x000020D4, 0x00002100
+ .word 0x00002100, 0x0000212C
+ .word 0x0000212C, 0x00002158
+ .word 0x00002158, 0x00002184
+ .word 0x00002184, 0x000021B0
+ .word 0x000021B0, 0x000021DC
+ .word 0x000021DC, 0x00002208
+ .word 0x00002208, 0x00002234
+ .word 0x00002234, 0x00002260
+ .word 0x00002260, 0x0000228C
+ .word 0x0000228C, 0x000022B8
+ .word 0x000022B8, 0x000022E4
+ .word 0x000022E4, 0x00002310
+ .word 0x00002310, 0x0000233C
+ .word 0x0000233C, 0x00002368
+ .word 0x00002368, 0x00002394
+ .word 0x00002394, 0x000023C0
+ .word 0x000023C0, 0x000023EC
+ .word 0x000023EC, 0x00002418
+ .word 0x00002418, 0x00002444
+ .word 0x00002444, 0x00002470
+ .word 0x00002470, 0x0000249C
+ .word 0x0000249C, 0x000024C8
+ .word 0x000024C8, 0x000024F4
+ .word 0x000024F4, 0x00002520
+ .word 0x00002520, 0x0000254C
+ .word 0x0000254C, 0x00002578
+ .word 0x00002578, 0x000025A4
+ .word 0x000025A4, 0x000025D0
+ .word 0x000025D0, 0x000025FC
+ .word 0x000025FC, 0x00002628
+ .word 0x00002628, 0x00002654
+ .word 0x00002654, 0x00002680
+ .word 0x00002680, 0x000026AC
+ .word 0x000026AC, 0x000026D8
+ .word 0x000026D8, 0x00002704
+ .word 0x00002704, 0x00002730
+ .word 0x00002730, 0x0000275C
+ .word 0x0000275C, 0x00002788
+ .word 0x00002788, 0x000027B4
+ .word 0x000027B4, 0x000027E0
+ .word 0x000027E0, 0x0000280C
+ .word 0x0000280C, 0x00002838
+ .word 0x00002838, 0x00002864
+ .word 0x00002864, 0x00002890
+ .word 0x00002890, 0x000028BC
+ .word 0x000028BC, 0x000028E8
+ .word 0x000028E8, 0x00002914
+ .word 0x00002914, 0x00002940
+ .word 0x00002940, 0x0000296C
+ .word 0x0000296C, 0x00002998
+ .word 0x00002998, 0x000029C4
+ .word 0x000029C4, 0x000029F0
+ .word 0x000029F0, 0x00002A1C
+ .word 0x00002A1C, 0x00002A48
+ .word 0x00002A48, 0x00002A74
+ .word 0x00002A74, 0x00002AA0
+ .word 0x00002AA0, 0x00002ACC
+ .word 0x00002ACC, 0x00002AF8
+ .word 0x00002AF8, 0x00002B24
+ .word 0x00002B24, 0x00002B50
+ .word 0x00002B50, 0x00002B7C
+ .word 0x00002B7C, 0x00002BA8
+ .word 0x00002BA8, 0x00002BD4
+ .word 0x00002BD4, 0x00002C00
+ .word 0x00002C00, 0x00002C2C
+ .word 0x00002C2C, 0x00002C58
+ .word 0x00002C58, 0x00002C84
+ .word 0x00002C84, 0x00002CB0
+ .word 0x00002CB0, 0x00002CDC
+ .word 0x00002CDC, 0x00002D08
+ .word 0x00002D08, 0x00002D34
+ .word 0x00002D34, 0x00002D60
+ .word 0x00002D60, 0x00002D8C
+ .word 0x00002D8C, 0x00002DB8
+ .word 0x00002DB8, 0x00002DE4
+ .word 0x00002DE4, 0x00002E10
+ .word 0x00002E10, 0x00002E3C
+ .word 0x00002E3C, 0x00002E68
+ .word 0x00002E68, 0x00002E94
+ .word 0x00002E94, 0x00002EC0
+ .word 0x00002EC0, 0x00002EEC
+ .word 0x00002EEC, 0x00002F18
+ .word 0x00002F18, 0x00002F44
+ .word 0x00002F44, 0x00002F70
+ .word 0x00002F70, 0x00002F9C
+ .word 0x00002F9C, 0x00002FC8
+ .word 0x00002FC8, 0x00002FF4
+ .word 0x00002FF4, 0x00003020
+ .word 0x00003020, 0x0000304C
+ .word 0x0000304C, 0x00003078
+ .word 0x00003078, 0x000030A4
+ .word 0x000030A4, 0x000030D0
+ .word 0x000030D0, 0x000030FC
+ .word 0x000030FC, 0x00003128
+ .word 0x00003128, 0x00003154
+ .word 0x00003154, 0x00003180
+ .word 0x00003180, 0x000031AC
+ .word 0x000031AC, 0x000031D8
+ .word 0x000031D8, 0x00003204
+ .word 0x00003204, 0x00003230
+ .word 0x00003230, 0x0000325C
+ .word 0x0000325C, 0x00003288
+ .word 0x00003288, 0x000032B4
+ .word 0x000032B4, 0x000032E0
+ .word 0x000032E0, 0x0000330C
+ .word 0x0000330C, 0x00003338
+ .word 0x00003338, 0x00003364
+ .word 0x00003364, 0x00003390
+ .word 0x00003390, 0x000033BC
+ .word 0x000033BC, 0x000033E8
+ .word 0x000033E8, 0x00003414
+ .word 0x00003414, 0x00003440
+ .word 0x00003440, 0x0000346C
+ .word 0x0000346C, 0x00003498
+ .word 0x00003498, 0x000034C4
+ .word 0x000034C4, 0x000034F0
+ .word 0x000034F0, 0x0000351C
+ .word 0x0000351C, 0x00003548
+ .word 0x00003548, 0x00003574
+ .word 0x00003574, 0x000035A0
+ .word 0x000035A0, 0x000035CC
+ .word 0x000035CC, 0x000035F8
+ .word 0x000035F8, 0x00003624
+ .word 0x00003624, 0x00003650
+ .word 0x00003650, 0x0000367C
+ .word 0x0000367C, 0x000036A8
+ .word 0x000036A8, 0x000036D4
+ .word 0x000036D4, 0x00003700
+ .word 0x00003700, 0x0000372C
+ .word 0x0000372C, 0x00003758
+ .word 0x00003758, 0x00003784
+ .word 0x00003784, 0x000037B0
+ .word 0x000037B0, 0x000037DC
+ .word 0x000037DC, 0x00003808
+ .word 0x00003808, 0x00003834
+ .word 0x00003834, 0x00003860
+ .word 0x00003860, 0x0000388C
+ .word 0x0000388C, 0x000038B8
+ .word 0x000038B8, 0x000038E4
+ .word 0x000038E4, 0x00003910
+ .word 0x00003910, 0x0000393C
+ .word 0x0000393C, 0x00003968
+ .word 0x00003968, 0x00003994
+ .word 0x00003994, 0x000039C0
+ .word 0x000039C0, 0x000039EC
+ .word 0x000039EC, 0x00003A18
+ .word 0x00003A18, 0x00003A44
+ .word 0x00003A44, 0x00003A70
+ .word 0x00003A70, 0x00003A9C
+ .word 0x00003A9C, 0x00003AC8
+ .word 0x00003AC8, 0x00003AF4
+ .word 0x00003AF4, 0x00003B20
+ .word 0x00003B20, 0x00003B4C
+ .word 0x00003B4C, 0x00003B78
+ .word 0x00003B78, 0x00003BA4
+ .word 0x00003BA4, 0x00003BD0
+ .word 0x00003BD0, 0x00003BFC
+ .word 0x00003BFC, 0x00003C28
+ .word 0x00003C28, 0x00003C54
+ .word 0x00003C54, 0x00003C80
+ .word 0x00003C80, 0x00003CAC
+ .word 0x00003CAC, 0x00003CD8
+ .word 0x00003CD8, 0x00003D04
+ .word 0x00003D04, 0x00003D30
+ .word 0x00003D30, 0x00003D5C
+ .word 0x00003D5C, 0x00003D88
+ .word 0x00003D88, 0x00003DB4
+ .word 0x00003DB4, 0x00003DE0
+ .word 0x00003DE0, 0x00003E0C
+ .word 0x00003E0C, 0x00003E38
+ .word 0x00003E38, 0x00003E64
+ .word 0x00003E64, 0x00003E90
+ .word 0x00003E90, 0x00003EBC
+ .word 0x00003EBC, 0x00003EE8
+ .word 0x00003EE8, 0x00003F14
+ .word 0x00003F14, 0x00003F40
+ .word 0x00003F40, 0x00003F6C
+ .word 0x00003F6C, 0x00003F98
+ .word 0x00003F98, 0x00003FC4
+ .word 0x00003FC4, 0x00003FF0
+ .word 0x00003FF0, 0x0000401C
+ .word 0x0000401C, 0x00004048
+ .word 0x00004048, 0x00004074
+ .word 0x00004074, 0x000040A0
+ .word 0x000040A0, 0x000040CC
+ .word 0x000040CC, 0x000040F8
+ .word 0x000040F8, 0x00004124
+ .word 0x00004124, 0x00004150
+ .word 0x00004150, 0x0000417C
+ .word 0x0000417C, 0x000041A8
+ .word 0x000041A8, 0x000041D4
+ .word 0x000041D4, 0x00004200
+ .word 0x00004200, 0x0000422C
+ .word 0x0000422C, 0x00004258
+ .word 0x00004258, 0x00004284
+ .word 0x00004284, 0x000042B0
+ .word 0x000042B0, 0x000042DC
+ .word 0x000042DC, 0x00004308
+ .word 0x00004308, 0x00004334
+ .word 0x00004334, 0x00004360
+ .word 0x00004360, 0x0000438C
+ .word 0x0000438C, 0x000043B8
+ .word 0x000043B8, 0x000043E4
+ .word 0x000043E4, 0x00004410
+ .word 0x00004410, 0x0000443C
+ .word 0x0000443C, 0x00004468
+ .word 0x00004468, 0x00004494
+ .word 0x00004494, 0x000044C0
+ .word 0x000044C0, 0x000044EC
+ .word 0x000044EC, 0x00004518
+ .word 0x00004518, 0x00004544
+ .word 0x00004544, 0x00004570
+ .word 0x00004570, 0x0000459C
+ .word 0x0000459C, 0x000045C8
+ .word 0x000045C8, 0x000045F4
+ .word 0x000045F4, 0x00004620
+ .word 0x00004620, 0x0000464C
+ .word 0x0000464C, 0x00004678
+ .word 0x00004678, 0x000046A4
+ .word 0x000046A4, 0x000046D0
+ .word 0x000046D0, 0x000046FC
+ .word 0x000046FC, 0x00004728
+ .word 0x00004728, 0x00004754
+ .word 0x00004754, 0x00004780
+ .word 0x00004780, 0x000047AC
+ .word 0x000047AC, 0x000047D8
+ .word 0x000047D8, 0x00004804
+ .word 0x00004804, 0x00004830
+ .word 0x00004830, 0x0000485C
+ .word 0x0000485C, 0x00004888
+ .word 0x00004888, 0x000048B4
+ .word 0x000048B4, 0x000048E0
+ .word 0x000048E0, 0x0000490C
+ .word 0x0000490C, 0x00004938
+ .word 0x00004938, 0x00004964
+ .word 0x00004964, 0x00004990
+ .word 0x00004990, 0x000049BC
+ .word 0x000049BC, 0x000049E8
+ .word 0x000049E8, 0x00004A14
+ .word 0x00004A14, 0x00004A40
+ .word 0x00004A40, 0x00004A6C
+ .word 0x00004A6C, 0x00004A98
+ .word 0x00004A98, 0x00004AC4
+ .word 0x00004AC4, 0x00004AF0
+ .word 0x00004AF0, 0x00004B1C
+ .word 0x00004B1C, 0x00004B48
+ .word 0x00004B48, 0x00004B74
+ .word 0x00004B74, 0x00004BA0
+ .word 0x00004BA0, 0x00004BCC
+ .word 0x00004BCC, 0x00004BF8
+ .word 0x00004BF8, 0x00004C24
+ .word 0x00004C24, 0x00004C50
+ .word 0x00004C50, 0x00004C7C
+ .word 0x00004C7C, 0x00004CA8
+ .word 0x00004CA8, 0x00004CD4
+ .word 0x00004CD4, 0x00004D00
+ .word 0x00004D00, 0x00004D2C
+ .word 0x00004D2C, 0x00004D58
+ .word 0x00004D58, 0x00004D84
+ .word 0x00004D84, 0x00004DB0
+ .word 0x00004DB0, 0x00004DDC
+ .word 0x00004DDC, 0x00004E08
+ .word 0x00004E08, 0x00004E34
+ .word 0x00004E34, 0x00004E60
+ .word 0x00004E60, 0x00004E8C
+ .word 0x00004E8C, 0x00004EB8
+ .word 0x00004EB8, 0x00004EE4
+ .word 0x00004EE4, 0x00004F10
+ .word 0x00004F10, 0x00004F3C
+ .word 0x00004F3C, 0x00004F68
+ .word 0x00004F68, 0x00004F94
+ .word 0x00004F94, 0x00004FC0
+ .word 0x00004FC0, 0x00004FEC
+ .word 0x00004FEC, 0x00005018
+ .word 0x00005018, 0x00005044
+ .word 0x00005044, 0x00005070
+ .word 0x00005070, 0x0000509C
+ .word 0x0000509C, 0x000050C8
+ .word 0x000050C8, 0x000050F4
+ .word 0x000050F4, 0x00005120
+ .word 0x00005120, 0x0000514C
+ .word 0x0000514C, 0x00005178
+ .word 0x00005178, 0x000051A4
+ .word 0x000051A4, 0x000051D0
+ .word 0x000051D0, 0x000051FC
+ .word 0x000051FC, 0x00005228
+ .word 0x00005228, 0x00005254
+ .word 0x00005254, 0x00005280
+ .word 0x00005280, 0x000052AC
+ .word 0x000052AC, 0x000052D8
+ .word 0x000052D8, 0x00005304
+ .word 0x00005304, 0x00005330
+ .word 0x00005330, 0x0000535C
+ .word 0x0000535C, 0x00005388
+ .word 0x00005388, 0x000053B4
+ .word 0x000053B4, 0x000053E0
+ .word 0x000053E0, 0x0000540C
+ .word 0x0000540C, 0x00005438
+ .word 0x00005438, 0x00005464
+ .word 0x00005464, 0x00005490
+ .word 0x00005490, 0x000054BC
+ .word 0x000054BC, 0x000054E8
+ .word 0x000054E8, 0x00005514
+ .word 0x00005514, 0x00005540
+ .word 0x00005540, 0x0000556C
+ .word 0x0000556C, 0x00005598
+ .word 0x00005598, 0x000055C4
+ .word 0x000055C4, 0x000055F0
+ .word 0x000055F0, 0x0000561C
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00005624 ; chunk size
+ .incbin "baserom.nds", 0x1C159DC, 0x561C
+ .balign 512, 255
diff --git a/files/FILE_1C1B000_evo.narc.s b/files/FILE_1C1B000_evo.narc.s
new file mode 100644
index 00000000..dc8b999e
--- /dev/null
+++ b/files/FILE_1C1B000_evo.narc.s
@@ -0,0 +1,529 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x000065F8 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000FB4 ; chunk size
+ .short 501 ; number of files
+ .balign 4
+ .word 0x00000000, 0x0000002C
+ .word 0x0000002C, 0x00000058
+ .word 0x00000058, 0x00000084
+ .word 0x00000084, 0x000000B0
+ .word 0x000000B0, 0x000000DC
+ .word 0x000000DC, 0x00000108
+ .word 0x00000108, 0x00000134
+ .word 0x00000134, 0x00000160
+ .word 0x00000160, 0x0000018C
+ .word 0x0000018C, 0x000001B8
+ .word 0x000001B8, 0x000001E4
+ .word 0x000001E4, 0x00000210
+ .word 0x00000210, 0x0000023C
+ .word 0x0000023C, 0x00000268
+ .word 0x00000268, 0x00000294
+ .word 0x00000294, 0x000002C0
+ .word 0x000002C0, 0x000002EC
+ .word 0x000002EC, 0x00000318
+ .word 0x00000318, 0x00000344
+ .word 0x00000344, 0x00000370
+ .word 0x00000370, 0x0000039C
+ .word 0x0000039C, 0x000003C8
+ .word 0x000003C8, 0x000003F4
+ .word 0x000003F4, 0x00000420
+ .word 0x00000420, 0x0000044C
+ .word 0x0000044C, 0x00000478
+ .word 0x00000478, 0x000004A4
+ .word 0x000004A4, 0x000004D0
+ .word 0x000004D0, 0x000004FC
+ .word 0x000004FC, 0x00000528
+ .word 0x00000528, 0x00000554
+ .word 0x00000554, 0x00000580
+ .word 0x00000580, 0x000005AC
+ .word 0x000005AC, 0x000005D8
+ .word 0x000005D8, 0x00000604
+ .word 0x00000604, 0x00000630
+ .word 0x00000630, 0x0000065C
+ .word 0x0000065C, 0x00000688
+ .word 0x00000688, 0x000006B4
+ .word 0x000006B4, 0x000006E0
+ .word 0x000006E0, 0x0000070C
+ .word 0x0000070C, 0x00000738
+ .word 0x00000738, 0x00000764
+ .word 0x00000764, 0x00000790
+ .word 0x00000790, 0x000007BC
+ .word 0x000007BC, 0x000007E8
+ .word 0x000007E8, 0x00000814
+ .word 0x00000814, 0x00000840
+ .word 0x00000840, 0x0000086C
+ .word 0x0000086C, 0x00000898
+ .word 0x00000898, 0x000008C4
+ .word 0x000008C4, 0x000008F0
+ .word 0x000008F0, 0x0000091C
+ .word 0x0000091C, 0x00000948
+ .word 0x00000948, 0x00000974
+ .word 0x00000974, 0x000009A0
+ .word 0x000009A0, 0x000009CC
+ .word 0x000009CC, 0x000009F8
+ .word 0x000009F8, 0x00000A24
+ .word 0x00000A24, 0x00000A50
+ .word 0x00000A50, 0x00000A7C
+ .word 0x00000A7C, 0x00000AA8
+ .word 0x00000AA8, 0x00000AD4
+ .word 0x00000AD4, 0x00000B00
+ .word 0x00000B00, 0x00000B2C
+ .word 0x00000B2C, 0x00000B58
+ .word 0x00000B58, 0x00000B84
+ .word 0x00000B84, 0x00000BB0
+ .word 0x00000BB0, 0x00000BDC
+ .word 0x00000BDC, 0x00000C08
+ .word 0x00000C08, 0x00000C34
+ .word 0x00000C34, 0x00000C60
+ .word 0x00000C60, 0x00000C8C
+ .word 0x00000C8C, 0x00000CB8
+ .word 0x00000CB8, 0x00000CE4
+ .word 0x00000CE4, 0x00000D10
+ .word 0x00000D10, 0x00000D3C
+ .word 0x00000D3C, 0x00000D68
+ .word 0x00000D68, 0x00000D94
+ .word 0x00000D94, 0x00000DC0
+ .word 0x00000DC0, 0x00000DEC
+ .word 0x00000DEC, 0x00000E18
+ .word 0x00000E18, 0x00000E44
+ .word 0x00000E44, 0x00000E70
+ .word 0x00000E70, 0x00000E9C
+ .word 0x00000E9C, 0x00000EC8
+ .word 0x00000EC8, 0x00000EF4
+ .word 0x00000EF4, 0x00000F20
+ .word 0x00000F20, 0x00000F4C
+ .word 0x00000F4C, 0x00000F78
+ .word 0x00000F78, 0x00000FA4
+ .word 0x00000FA4, 0x00000FD0
+ .word 0x00000FD0, 0x00000FFC
+ .word 0x00000FFC, 0x00001028
+ .word 0x00001028, 0x00001054
+ .word 0x00001054, 0x00001080
+ .word 0x00001080, 0x000010AC
+ .word 0x000010AC, 0x000010D8
+ .word 0x000010D8, 0x00001104
+ .word 0x00001104, 0x00001130
+ .word 0x00001130, 0x0000115C
+ .word 0x0000115C, 0x00001188
+ .word 0x00001188, 0x000011B4
+ .word 0x000011B4, 0x000011E0
+ .word 0x000011E0, 0x0000120C
+ .word 0x0000120C, 0x00001238
+ .word 0x00001238, 0x00001264
+ .word 0x00001264, 0x00001290
+ .word 0x00001290, 0x000012BC
+ .word 0x000012BC, 0x000012E8
+ .word 0x000012E8, 0x00001314
+ .word 0x00001314, 0x00001340
+ .word 0x00001340, 0x0000136C
+ .word 0x0000136C, 0x00001398
+ .word 0x00001398, 0x000013C4
+ .word 0x000013C4, 0x000013F0
+ .word 0x000013F0, 0x0000141C
+ .word 0x0000141C, 0x00001448
+ .word 0x00001448, 0x00001474
+ .word 0x00001474, 0x000014A0
+ .word 0x000014A0, 0x000014CC
+ .word 0x000014CC, 0x000014F8
+ .word 0x000014F8, 0x00001524
+ .word 0x00001524, 0x00001550
+ .word 0x00001550, 0x0000157C
+ .word 0x0000157C, 0x000015A8
+ .word 0x000015A8, 0x000015D4
+ .word 0x000015D4, 0x00001600
+ .word 0x00001600, 0x0000162C
+ .word 0x0000162C, 0x00001658
+ .word 0x00001658, 0x00001684
+ .word 0x00001684, 0x000016B0
+ .word 0x000016B0, 0x000016DC
+ .word 0x000016DC, 0x00001708
+ .word 0x00001708, 0x00001734
+ .word 0x00001734, 0x00001760
+ .word 0x00001760, 0x0000178C
+ .word 0x0000178C, 0x000017B8
+ .word 0x000017B8, 0x000017E4
+ .word 0x000017E4, 0x00001810
+ .word 0x00001810, 0x0000183C
+ .word 0x0000183C, 0x00001868
+ .word 0x00001868, 0x00001894
+ .word 0x00001894, 0x000018C0
+ .word 0x000018C0, 0x000018EC
+ .word 0x000018EC, 0x00001918
+ .word 0x00001918, 0x00001944
+ .word 0x00001944, 0x00001970
+ .word 0x00001970, 0x0000199C
+ .word 0x0000199C, 0x000019C8
+ .word 0x000019C8, 0x000019F4
+ .word 0x000019F4, 0x00001A20
+ .word 0x00001A20, 0x00001A4C
+ .word 0x00001A4C, 0x00001A78
+ .word 0x00001A78, 0x00001AA4
+ .word 0x00001AA4, 0x00001AD0
+ .word 0x00001AD0, 0x00001AFC
+ .word 0x00001AFC, 0x00001B28
+ .word 0x00001B28, 0x00001B54
+ .word 0x00001B54, 0x00001B80
+ .word 0x00001B80, 0x00001BAC
+ .word 0x00001BAC, 0x00001BD8
+ .word 0x00001BD8, 0x00001C04
+ .word 0x00001C04, 0x00001C30
+ .word 0x00001C30, 0x00001C5C
+ .word 0x00001C5C, 0x00001C88
+ .word 0x00001C88, 0x00001CB4
+ .word 0x00001CB4, 0x00001CE0
+ .word 0x00001CE0, 0x00001D0C
+ .word 0x00001D0C, 0x00001D38
+ .word 0x00001D38, 0x00001D64
+ .word 0x00001D64, 0x00001D90
+ .word 0x00001D90, 0x00001DBC
+ .word 0x00001DBC, 0x00001DE8
+ .word 0x00001DE8, 0x00001E14
+ .word 0x00001E14, 0x00001E40
+ .word 0x00001E40, 0x00001E6C
+ .word 0x00001E6C, 0x00001E98
+ .word 0x00001E98, 0x00001EC4
+ .word 0x00001EC4, 0x00001EF0
+ .word 0x00001EF0, 0x00001F1C
+ .word 0x00001F1C, 0x00001F48
+ .word 0x00001F48, 0x00001F74
+ .word 0x00001F74, 0x00001FA0
+ .word 0x00001FA0, 0x00001FCC
+ .word 0x00001FCC, 0x00001FF8
+ .word 0x00001FF8, 0x00002024
+ .word 0x00002024, 0x00002050
+ .word 0x00002050, 0x0000207C
+ .word 0x0000207C, 0x000020A8
+ .word 0x000020A8, 0x000020D4
+ .word 0x000020D4, 0x00002100
+ .word 0x00002100, 0x0000212C
+ .word 0x0000212C, 0x00002158
+ .word 0x00002158, 0x00002184
+ .word 0x00002184, 0x000021B0
+ .word 0x000021B0, 0x000021DC
+ .word 0x000021DC, 0x00002208
+ .word 0x00002208, 0x00002234
+ .word 0x00002234, 0x00002260
+ .word 0x00002260, 0x0000228C
+ .word 0x0000228C, 0x000022B8
+ .word 0x000022B8, 0x000022E4
+ .word 0x000022E4, 0x00002310
+ .word 0x00002310, 0x0000233C
+ .word 0x0000233C, 0x00002368
+ .word 0x00002368, 0x00002394
+ .word 0x00002394, 0x000023C0
+ .word 0x000023C0, 0x000023EC
+ .word 0x000023EC, 0x00002418
+ .word 0x00002418, 0x00002444
+ .word 0x00002444, 0x00002470
+ .word 0x00002470, 0x0000249C
+ .word 0x0000249C, 0x000024C8
+ .word 0x000024C8, 0x000024F4
+ .word 0x000024F4, 0x00002520
+ .word 0x00002520, 0x0000254C
+ .word 0x0000254C, 0x00002578
+ .word 0x00002578, 0x000025A4
+ .word 0x000025A4, 0x000025D0
+ .word 0x000025D0, 0x000025FC
+ .word 0x000025FC, 0x00002628
+ .word 0x00002628, 0x00002654
+ .word 0x00002654, 0x00002680
+ .word 0x00002680, 0x000026AC
+ .word 0x000026AC, 0x000026D8
+ .word 0x000026D8, 0x00002704
+ .word 0x00002704, 0x00002730
+ .word 0x00002730, 0x0000275C
+ .word 0x0000275C, 0x00002788
+ .word 0x00002788, 0x000027B4
+ .word 0x000027B4, 0x000027E0
+ .word 0x000027E0, 0x0000280C
+ .word 0x0000280C, 0x00002838
+ .word 0x00002838, 0x00002864
+ .word 0x00002864, 0x00002890
+ .word 0x00002890, 0x000028BC
+ .word 0x000028BC, 0x000028E8
+ .word 0x000028E8, 0x00002914
+ .word 0x00002914, 0x00002940
+ .word 0x00002940, 0x0000296C
+ .word 0x0000296C, 0x00002998
+ .word 0x00002998, 0x000029C4
+ .word 0x000029C4, 0x000029F0
+ .word 0x000029F0, 0x00002A1C
+ .word 0x00002A1C, 0x00002A48
+ .word 0x00002A48, 0x00002A74
+ .word 0x00002A74, 0x00002AA0
+ .word 0x00002AA0, 0x00002ACC
+ .word 0x00002ACC, 0x00002AF8
+ .word 0x00002AF8, 0x00002B24
+ .word 0x00002B24, 0x00002B50
+ .word 0x00002B50, 0x00002B7C
+ .word 0x00002B7C, 0x00002BA8
+ .word 0x00002BA8, 0x00002BD4
+ .word 0x00002BD4, 0x00002C00
+ .word 0x00002C00, 0x00002C2C
+ .word 0x00002C2C, 0x00002C58
+ .word 0x00002C58, 0x00002C84
+ .word 0x00002C84, 0x00002CB0
+ .word 0x00002CB0, 0x00002CDC
+ .word 0x00002CDC, 0x00002D08
+ .word 0x00002D08, 0x00002D34
+ .word 0x00002D34, 0x00002D60
+ .word 0x00002D60, 0x00002D8C
+ .word 0x00002D8C, 0x00002DB8
+ .word 0x00002DB8, 0x00002DE4
+ .word 0x00002DE4, 0x00002E10
+ .word 0x00002E10, 0x00002E3C
+ .word 0x00002E3C, 0x00002E68
+ .word 0x00002E68, 0x00002E94
+ .word 0x00002E94, 0x00002EC0
+ .word 0x00002EC0, 0x00002EEC
+ .word 0x00002EEC, 0x00002F18
+ .word 0x00002F18, 0x00002F44
+ .word 0x00002F44, 0x00002F70
+ .word 0x00002F70, 0x00002F9C
+ .word 0x00002F9C, 0x00002FC8
+ .word 0x00002FC8, 0x00002FF4
+ .word 0x00002FF4, 0x00003020
+ .word 0x00003020, 0x0000304C
+ .word 0x0000304C, 0x00003078
+ .word 0x00003078, 0x000030A4
+ .word 0x000030A4, 0x000030D0
+ .word 0x000030D0, 0x000030FC
+ .word 0x000030FC, 0x00003128
+ .word 0x00003128, 0x00003154
+ .word 0x00003154, 0x00003180
+ .word 0x00003180, 0x000031AC
+ .word 0x000031AC, 0x000031D8
+ .word 0x000031D8, 0x00003204
+ .word 0x00003204, 0x00003230
+ .word 0x00003230, 0x0000325C
+ .word 0x0000325C, 0x00003288
+ .word 0x00003288, 0x000032B4
+ .word 0x000032B4, 0x000032E0
+ .word 0x000032E0, 0x0000330C
+ .word 0x0000330C, 0x00003338
+ .word 0x00003338, 0x00003364
+ .word 0x00003364, 0x00003390
+ .word 0x00003390, 0x000033BC
+ .word 0x000033BC, 0x000033E8
+ .word 0x000033E8, 0x00003414
+ .word 0x00003414, 0x00003440
+ .word 0x00003440, 0x0000346C
+ .word 0x0000346C, 0x00003498
+ .word 0x00003498, 0x000034C4
+ .word 0x000034C4, 0x000034F0
+ .word 0x000034F0, 0x0000351C
+ .word 0x0000351C, 0x00003548
+ .word 0x00003548, 0x00003574
+ .word 0x00003574, 0x000035A0
+ .word 0x000035A0, 0x000035CC
+ .word 0x000035CC, 0x000035F8
+ .word 0x000035F8, 0x00003624
+ .word 0x00003624, 0x00003650
+ .word 0x00003650, 0x0000367C
+ .word 0x0000367C, 0x000036A8
+ .word 0x000036A8, 0x000036D4
+ .word 0x000036D4, 0x00003700
+ .word 0x00003700, 0x0000372C
+ .word 0x0000372C, 0x00003758
+ .word 0x00003758, 0x00003784
+ .word 0x00003784, 0x000037B0
+ .word 0x000037B0, 0x000037DC
+ .word 0x000037DC, 0x00003808
+ .word 0x00003808, 0x00003834
+ .word 0x00003834, 0x00003860
+ .word 0x00003860, 0x0000388C
+ .word 0x0000388C, 0x000038B8
+ .word 0x000038B8, 0x000038E4
+ .word 0x000038E4, 0x00003910
+ .word 0x00003910, 0x0000393C
+ .word 0x0000393C, 0x00003968
+ .word 0x00003968, 0x00003994
+ .word 0x00003994, 0x000039C0
+ .word 0x000039C0, 0x000039EC
+ .word 0x000039EC, 0x00003A18
+ .word 0x00003A18, 0x00003A44
+ .word 0x00003A44, 0x00003A70
+ .word 0x00003A70, 0x00003A9C
+ .word 0x00003A9C, 0x00003AC8
+ .word 0x00003AC8, 0x00003AF4
+ .word 0x00003AF4, 0x00003B20
+ .word 0x00003B20, 0x00003B4C
+ .word 0x00003B4C, 0x00003B78
+ .word 0x00003B78, 0x00003BA4
+ .word 0x00003BA4, 0x00003BD0
+ .word 0x00003BD0, 0x00003BFC
+ .word 0x00003BFC, 0x00003C28
+ .word 0x00003C28, 0x00003C54
+ .word 0x00003C54, 0x00003C80
+ .word 0x00003C80, 0x00003CAC
+ .word 0x00003CAC, 0x00003CD8
+ .word 0x00003CD8, 0x00003D04
+ .word 0x00003D04, 0x00003D30
+ .word 0x00003D30, 0x00003D5C
+ .word 0x00003D5C, 0x00003D88
+ .word 0x00003D88, 0x00003DB4
+ .word 0x00003DB4, 0x00003DE0
+ .word 0x00003DE0, 0x00003E0C
+ .word 0x00003E0C, 0x00003E38
+ .word 0x00003E38, 0x00003E64
+ .word 0x00003E64, 0x00003E90
+ .word 0x00003E90, 0x00003EBC
+ .word 0x00003EBC, 0x00003EE8
+ .word 0x00003EE8, 0x00003F14
+ .word 0x00003F14, 0x00003F40
+ .word 0x00003F40, 0x00003F6C
+ .word 0x00003F6C, 0x00003F98
+ .word 0x00003F98, 0x00003FC4
+ .word 0x00003FC4, 0x00003FF0
+ .word 0x00003FF0, 0x0000401C
+ .word 0x0000401C, 0x00004048
+ .word 0x00004048, 0x00004074
+ .word 0x00004074, 0x000040A0
+ .word 0x000040A0, 0x000040CC
+ .word 0x000040CC, 0x000040F8
+ .word 0x000040F8, 0x00004124
+ .word 0x00004124, 0x00004150
+ .word 0x00004150, 0x0000417C
+ .word 0x0000417C, 0x000041A8
+ .word 0x000041A8, 0x000041D4
+ .word 0x000041D4, 0x00004200
+ .word 0x00004200, 0x0000422C
+ .word 0x0000422C, 0x00004258
+ .word 0x00004258, 0x00004284
+ .word 0x00004284, 0x000042B0
+ .word 0x000042B0, 0x000042DC
+ .word 0x000042DC, 0x00004308
+ .word 0x00004308, 0x00004334
+ .word 0x00004334, 0x00004360
+ .word 0x00004360, 0x0000438C
+ .word 0x0000438C, 0x000043B8
+ .word 0x000043B8, 0x000043E4
+ .word 0x000043E4, 0x00004410
+ .word 0x00004410, 0x0000443C
+ .word 0x0000443C, 0x00004468
+ .word 0x00004468, 0x00004494
+ .word 0x00004494, 0x000044C0
+ .word 0x000044C0, 0x000044EC
+ .word 0x000044EC, 0x00004518
+ .word 0x00004518, 0x00004544
+ .word 0x00004544, 0x00004570
+ .word 0x00004570, 0x0000459C
+ .word 0x0000459C, 0x000045C8
+ .word 0x000045C8, 0x000045F4
+ .word 0x000045F4, 0x00004620
+ .word 0x00004620, 0x0000464C
+ .word 0x0000464C, 0x00004678
+ .word 0x00004678, 0x000046A4
+ .word 0x000046A4, 0x000046D0
+ .word 0x000046D0, 0x000046FC
+ .word 0x000046FC, 0x00004728
+ .word 0x00004728, 0x00004754
+ .word 0x00004754, 0x00004780
+ .word 0x00004780, 0x000047AC
+ .word 0x000047AC, 0x000047D8
+ .word 0x000047D8, 0x00004804
+ .word 0x00004804, 0x00004830
+ .word 0x00004830, 0x0000485C
+ .word 0x0000485C, 0x00004888
+ .word 0x00004888, 0x000048B4
+ .word 0x000048B4, 0x000048E0
+ .word 0x000048E0, 0x0000490C
+ .word 0x0000490C, 0x00004938
+ .word 0x00004938, 0x00004964
+ .word 0x00004964, 0x00004990
+ .word 0x00004990, 0x000049BC
+ .word 0x000049BC, 0x000049E8
+ .word 0x000049E8, 0x00004A14
+ .word 0x00004A14, 0x00004A40
+ .word 0x00004A40, 0x00004A6C
+ .word 0x00004A6C, 0x00004A98
+ .word 0x00004A98, 0x00004AC4
+ .word 0x00004AC4, 0x00004AF0
+ .word 0x00004AF0, 0x00004B1C
+ .word 0x00004B1C, 0x00004B48
+ .word 0x00004B48, 0x00004B74
+ .word 0x00004B74, 0x00004BA0
+ .word 0x00004BA0, 0x00004BCC
+ .word 0x00004BCC, 0x00004BF8
+ .word 0x00004BF8, 0x00004C24
+ .word 0x00004C24, 0x00004C50
+ .word 0x00004C50, 0x00004C7C
+ .word 0x00004C7C, 0x00004CA8
+ .word 0x00004CA8, 0x00004CD4
+ .word 0x00004CD4, 0x00004D00
+ .word 0x00004D00, 0x00004D2C
+ .word 0x00004D2C, 0x00004D58
+ .word 0x00004D58, 0x00004D84
+ .word 0x00004D84, 0x00004DB0
+ .word 0x00004DB0, 0x00004DDC
+ .word 0x00004DDC, 0x00004E08
+ .word 0x00004E08, 0x00004E34
+ .word 0x00004E34, 0x00004E60
+ .word 0x00004E60, 0x00004E8C
+ .word 0x00004E8C, 0x00004EB8
+ .word 0x00004EB8, 0x00004EE4
+ .word 0x00004EE4, 0x00004F10
+ .word 0x00004F10, 0x00004F3C
+ .word 0x00004F3C, 0x00004F68
+ .word 0x00004F68, 0x00004F94
+ .word 0x00004F94, 0x00004FC0
+ .word 0x00004FC0, 0x00004FEC
+ .word 0x00004FEC, 0x00005018
+ .word 0x00005018, 0x00005044
+ .word 0x00005044, 0x00005070
+ .word 0x00005070, 0x0000509C
+ .word 0x0000509C, 0x000050C8
+ .word 0x000050C8, 0x000050F4
+ .word 0x000050F4, 0x00005120
+ .word 0x00005120, 0x0000514C
+ .word 0x0000514C, 0x00005178
+ .word 0x00005178, 0x000051A4
+ .word 0x000051A4, 0x000051D0
+ .word 0x000051D0, 0x000051FC
+ .word 0x000051FC, 0x00005228
+ .word 0x00005228, 0x00005254
+ .word 0x00005254, 0x00005280
+ .word 0x00005280, 0x000052AC
+ .word 0x000052AC, 0x000052D8
+ .word 0x000052D8, 0x00005304
+ .word 0x00005304, 0x00005330
+ .word 0x00005330, 0x0000535C
+ .word 0x0000535C, 0x00005388
+ .word 0x00005388, 0x000053B4
+ .word 0x000053B4, 0x000053E0
+ .word 0x000053E0, 0x0000540C
+ .word 0x0000540C, 0x00005438
+ .word 0x00005438, 0x00005464
+ .word 0x00005464, 0x00005490
+ .word 0x00005490, 0x000054BC
+ .word 0x000054BC, 0x000054E8
+ .word 0x000054E8, 0x00005514
+ .word 0x00005514, 0x00005540
+ .word 0x00005540, 0x0000556C
+ .word 0x0000556C, 0x00005598
+ .word 0x00005598, 0x000055C4
+ .word 0x000055C4, 0x000055F0
+ .word 0x000055F0, 0x0000561C
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00005624 ; chunk size
+ .incbin "baserom.nds", 0x1C1BFDC, 0x561C
+ .balign 512, 255
diff --git a/files/FILE_1C21600_growtbl.narc.s b/files/FILE_1C21600_growtbl.narc.s
new file mode 100644
index 00000000..0744862e
--- /dev/null
+++ b/files/FILE_1C21600_growtbl.narc.s
@@ -0,0 +1,36 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00000D14 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x0000004C ; chunk size
+ .short 8 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000194
+ .word 0x00000194, 0x00000328
+ .word 0x00000328, 0x000004BC
+ .word 0x000004BC, 0x00000650
+ .word 0x00000650, 0x000007E4
+ .word 0x000007E4, 0x00000978
+ .word 0x00000978, 0x00000B0C
+ .word 0x00000B0C, 0x00000CA0
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00000CA8 ; chunk size
+ .incbin "baserom.nds", 0x1C21674, 0xCA0
+ .balign 512, 255
diff --git a/files/FILE_1C22400_pms.narc.s b/files/FILE_1C22400_pms.narc.s
new file mode 100644
index 00000000..90c7edcb
--- /dev/null
+++ b/files/FILE_1C22400_pms.narc.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x1C22400, 0x3EA
+ .balign 512, 255
diff --git a/files/FILE_1C22800_wotbl.narc.s b/files/FILE_1C22800_wotbl.narc.s
new file mode 100644
index 00000000..d6e16de0
--- /dev/null
+++ b/files/FILE_1C22800_wotbl.narc.s
@@ -0,0 +1,529 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00004940 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000FB4 ; chunk size
+ .short 501 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000004
+ .word 0x00000004, 0x00000024
+ .word 0x00000024, 0x00000048
+ .word 0x00000048, 0x00000070
+ .word 0x00000070, 0x00000088
+ .word 0x00000088, 0x000000A0
+ .word 0x000000A0, 0x000000C8
+ .word 0x000000C8, 0x000000E4
+ .word 0x000000E4, 0x00000104
+ .word 0x00000104, 0x00000128
+ .word 0x00000128, 0x00000130
+ .word 0x00000130, 0x00000138
+ .word 0x00000138, 0x00000158
+ .word 0x00000158, 0x00000160
+ .word 0x00000160, 0x00000168
+ .word 0x00000168, 0x00000184
+ .word 0x00000184, 0x000001A0
+ .word 0x000001A0, 0x000001C0
+ .word 0x000001C0, 0x000001E4
+ .word 0x000001E4, 0x00000200
+ .word 0x00000200, 0x00000224
+ .word 0x00000224, 0x0000023C
+ .word 0x0000023C, 0x0000025C
+ .word 0x0000025C, 0x0000027C
+ .word 0x0000027C, 0x000002A8
+ .word 0x000002A8, 0x000002C4
+ .word 0x000002C4, 0x000002D0
+ .word 0x000002D0, 0x000002EC
+ .word 0x000002EC, 0x00000310
+ .word 0x00000310, 0x0000032C
+ .word 0x0000032C, 0x00000348
+ .word 0x00000348, 0x00000358
+ .word 0x00000358, 0x00000374
+ .word 0x00000374, 0x00000390
+ .word 0x00000390, 0x000003A0
+ .word 0x000003A0, 0x000003C4
+ .word 0x000003C4, 0x000003D0
+ .word 0x000003D0, 0x000003F0
+ .word 0x000003F0, 0x000003FC
+ .word 0x000003FC, 0x00000418
+ .word 0x00000418, 0x00000424
+ .word 0x00000424, 0x0000043C
+ .word 0x0000043C, 0x0000045C
+ .word 0x0000045C, 0x00000478
+ .word 0x00000478, 0x00000498
+ .word 0x00000498, 0x000004A8
+ .word 0x000004A8, 0x000004C0
+ .word 0x000004C0, 0x000004E0
+ .word 0x000004E0, 0x00000500
+ .word 0x00000500, 0x00000528
+ .word 0x00000528, 0x00000544
+ .word 0x00000544, 0x00000568
+ .word 0x00000568, 0x00000588
+ .word 0x00000588, 0x000005AC
+ .word 0x000005AC, 0x000005C8
+ .word 0x000005C8, 0x000005E8
+ .word 0x000005E8, 0x00000608
+ .word 0x00000608, 0x0000062C
+ .word 0x0000062C, 0x0000064C
+ .word 0x0000064C, 0x0000065C
+ .word 0x0000065C, 0x00000678
+ .word 0x00000678, 0x00000698
+ .word 0x00000698, 0x000006A8
+ .word 0x000006A8, 0x000006AC
+ .word 0x000006AC, 0x000006CC
+ .word 0x000006CC, 0x000006EC
+ .word 0x000006EC, 0x00000708
+ .word 0x00000708, 0x00000728
+ .word 0x00000728, 0x00000748
+ .word 0x00000748, 0x00000764
+ .word 0x00000764, 0x00000784
+ .word 0x00000784, 0x00000798
+ .word 0x00000798, 0x000007B4
+ .word 0x000007B4, 0x000007D4
+ .word 0x000007D4, 0x000007F0
+ .word 0x000007F0, 0x00000810
+ .word 0x00000810, 0x00000830
+ .word 0x00000830, 0x00000848
+ .word 0x00000848, 0x0000086C
+ .word 0x0000086C, 0x0000088C
+ .word 0x0000088C, 0x000008B0
+ .word 0x000008B0, 0x000008D0
+ .word 0x000008D0, 0x000008F8
+ .word 0x000008F8, 0x00000918
+ .word 0x00000918, 0x00000934
+ .word 0x00000934, 0x00000954
+ .word 0x00000954, 0x00000978
+ .word 0x00000978, 0x000009A4
+ .word 0x000009A4, 0x000009C4
+ .word 0x000009C4, 0x000009E8
+ .word 0x000009E8, 0x00000A04
+ .word 0x00000A04, 0x00000A14
+ .word 0x00000A14, 0x00000A34
+ .word 0x00000A34, 0x00000A58
+ .word 0x00000A58, 0x00000A7C
+ .word 0x00000A7C, 0x00000AA0
+ .word 0x00000AA0, 0x00000AC0
+ .word 0x00000AC0, 0x00000AE8
+ .word 0x00000AE8, 0x00000B08
+ .word 0x00000B08, 0x00000B2C
+ .word 0x00000B2C, 0x00000B4C
+ .word 0x00000B4C, 0x00000B70
+ .word 0x00000B70, 0x00000B90
+ .word 0x00000B90, 0x00000BA4
+ .word 0x00000BA4, 0x00000BC4
+ .word 0x00000BC4, 0x00000BE8
+ .word 0x00000BE8, 0x00000C0C
+ .word 0x00000C0C, 0x00000C30
+ .word 0x00000C30, 0x00000C50
+ .word 0x00000C50, 0x00000C6C
+ .word 0x00000C6C, 0x00000C8C
+ .word 0x00000C8C, 0x00000CA4
+ .word 0x00000CA4, 0x00000CC4
+ .word 0x00000CC4, 0x00000CE4
+ .word 0x00000CE4, 0x00000D08
+ .word 0x00000D08, 0x00000D28
+ .word 0x00000D28, 0x00000D44
+ .word 0x00000D44, 0x00000D64
+ .word 0x00000D64, 0x00000D80
+ .word 0x00000D80, 0x00000DA0
+ .word 0x00000DA0, 0x00000DC0
+ .word 0x00000DC0, 0x00000DCC
+ .word 0x00000DCC, 0x00000DF8
+ .word 0x00000DF8, 0x00000E1C
+ .word 0x00000E1C, 0x00000E40
+ .word 0x00000E40, 0x00000E5C
+ .word 0x00000E5C, 0x00000E78
+ .word 0x00000E78, 0x00000E98
+ .word 0x00000E98, 0x00000EB4
+ .word 0x00000EB4, 0x00000EBC
+ .word 0x00000EBC, 0x00000ED4
+ .word 0x00000ED4, 0x00000EF4
+ .word 0x00000EF4, 0x00000EF8
+ .word 0x00000EF8, 0x00000F10
+ .word 0x00000F10, 0x00000F2C
+ .word 0x00000F2C, 0x00000F48
+ .word 0x00000F48, 0x00000F64
+ .word 0x00000F64, 0x00000F84
+ .word 0x00000F84, 0x00000FA0
+ .word 0x00000FA0, 0x00000FC0
+ .word 0x00000FC0, 0x00000FDC
+ .word 0x00000FDC, 0x00000FFC
+ .word 0x00000FFC, 0x00001020
+ .word 0x00001020, 0x00001040
+ .word 0x00001040, 0x00001060
+ .word 0x00001060, 0x00001080
+ .word 0x00001080, 0x000010A0
+ .word 0x000010A0, 0x000010BC
+ .word 0x000010BC, 0x000010DC
+ .word 0x000010DC, 0x00001104
+ .word 0x00001104, 0x00001128
+ .word 0x00001128, 0x00001144
+ .word 0x00001144, 0x00001164
+ .word 0x00001164, 0x00001188
+ .word 0x00001188, 0x000011AC
+ .word 0x000011AC, 0x000011C8
+ .word 0x000011C8, 0x000011E8
+ .word 0x000011E8, 0x0000120C
+ .word 0x0000120C, 0x0000122C
+ .word 0x0000122C, 0x0000124C
+ .word 0x0000124C, 0x00001270
+ .word 0x00001270, 0x00001290
+ .word 0x00001290, 0x000012B4
+ .word 0x000012B4, 0x000012D4
+ .word 0x000012D4, 0x000012F8
+ .word 0x000012F8, 0x00001314
+ .word 0x00001314, 0x00001334
+ .word 0x00001334, 0x00001354
+ .word 0x00001354, 0x00001378
+ .word 0x00001378, 0x00001398
+ .word 0x00001398, 0x000013B8
+ .word 0x000013B8, 0x000013E0
+ .word 0x000013E0, 0x000013F0
+ .word 0x000013F0, 0x00001400
+ .word 0x00001400, 0x00001410
+ .word 0x00001410, 0x0000142C
+ .word 0x0000142C, 0x00001450
+ .word 0x00001450, 0x00001470
+ .word 0x00001470, 0x00001494
+ .word 0x00001494, 0x000014AC
+ .word 0x000014AC, 0x000014C8
+ .word 0x000014C8, 0x000014EC
+ .word 0x000014EC, 0x000014FC
+ .word 0x000014FC, 0x00001514
+ .word 0x00001514, 0x00001534
+ .word 0x00001534, 0x00001558
+ .word 0x00001558, 0x00001568
+ .word 0x00001568, 0x0000158C
+ .word 0x0000158C, 0x000015B4
+ .word 0x000015B4, 0x000015DC
+ .word 0x000015DC, 0x000015FC
+ .word 0x000015FC, 0x00001618
+ .word 0x00001618, 0x00001638
+ .word 0x00001638, 0x0000165C
+ .word 0x0000165C, 0x00001678
+ .word 0x00001678, 0x00001698
+ .word 0x00001698, 0x000016B4
+ .word 0x000016B4, 0x000016D0
+ .word 0x000016D0, 0x000016E8
+ .word 0x000016E8, 0x0000170C
+ .word 0x0000170C, 0x00001728
+ .word 0x00001728, 0x0000172C
+ .word 0x0000172C, 0x00001738
+ .word 0x00001738, 0x0000175C
+ .word 0x0000175C, 0x00001778
+ .word 0x00001778, 0x000017A0
+ .word 0x000017A0, 0x000017C0
+ .word 0x000017C0, 0x000017DC
+ .word 0x000017DC, 0x00001804
+ .word 0x00001804, 0x00001824
+ .word 0x00001824, 0x00001844
+ .word 0x00001844, 0x0000186C
+ .word 0x0000186C, 0x00001890
+ .word 0x00001890, 0x000018A4
+ .word 0x000018A4, 0x000018C4
+ .word 0x000018C4, 0x000018E0
+ .word 0x000018E0, 0x00001900
+ .word 0x00001900, 0x00001920
+ .word 0x00001920, 0x0000193C
+ .word 0x0000193C, 0x0000195C
+ .word 0x0000195C, 0x0000197C
+ .word 0x0000197C, 0x000019A4
+ .word 0x000019A4, 0x000019C4
+ .word 0x000019C4, 0x000019DC
+ .word 0x000019DC, 0x00001A00
+ .word 0x00001A00, 0x00001A04
+ .word 0x00001A04, 0x00001A2C
+ .word 0x00001A2C, 0x00001A48
+ .word 0x00001A48, 0x00001A68
+ .word 0x00001A68, 0x00001A8C
+ .word 0x00001A8C, 0x00001AB0
+ .word 0x00001AB0, 0x00001ACC
+ .word 0x00001ACC, 0x00001AF0
+ .word 0x00001AF0, 0x00001B14
+ .word 0x00001B14, 0x00001B34
+ .word 0x00001B34, 0x00001B4C
+ .word 0x00001B4C, 0x00001B54
+ .word 0x00001B54, 0x00001B74
+ .word 0x00001B74, 0x00001B94
+ .word 0x00001B94, 0x00001BB0
+ .word 0x00001BB0, 0x00001BCC
+ .word 0x00001BCC, 0x00001BE8
+ .word 0x00001BE8, 0x00001C08
+ .word 0x00001C08, 0x00001C24
+ .word 0x00001C24, 0x00001C40
+ .word 0x00001C40, 0x00001C5C
+ .word 0x00001C5C, 0x00001C78
+ .word 0x00001C78, 0x00001C98
+ .word 0x00001C98, 0x00001CC0
+ .word 0x00001CC0, 0x00001CE0
+ .word 0x00001CE0, 0x00001D00
+ .word 0x00001D00, 0x00001D20
+ .word 0x00001D20, 0x00001D3C
+ .word 0x00001D3C, 0x00001D5C
+ .word 0x00001D5C, 0x00001D80
+ .word 0x00001D80, 0x00001D98
+ .word 0x00001D98, 0x00001DB8
+ .word 0x00001DB8, 0x00001DDC
+ .word 0x00001DDC, 0x00001DF8
+ .word 0x00001DF8, 0x00001E18
+ .word 0x00001E18, 0x00001E3C
+ .word 0x00001E3C, 0x00001E5C
+ .word 0x00001E5C, 0x00001E80
+ .word 0x00001E80, 0x00001E9C
+ .word 0x00001E9C, 0x00001EC0
+ .word 0x00001EC0, 0x00001EC8
+ .word 0x00001EC8, 0x00001ED0
+ .word 0x00001ED0, 0x00001EE8
+ .word 0x00001EE8, 0x00001EF0
+ .word 0x00001EF0, 0x00001F08
+ .word 0x00001F08, 0x00001F20
+ .word 0x00001F20, 0x00001F38
+ .word 0x00001F38, 0x00001F44
+ .word 0x00001F44, 0x00001F54
+ .word 0x00001F54, 0x00001F6C
+ .word 0x00001F6C, 0x00001F78
+ .word 0x00001F78, 0x00001F90
+ .word 0x00001F90, 0x00001FAC
+ .word 0x00001FAC, 0x00001FC8
+ .word 0x00001FC8, 0x00001FEC
+ .word 0x00001FEC, 0x00002008
+ .word 0x00002008, 0x0000202C
+ .word 0x0000202C, 0x00002050
+ .word 0x00002050, 0x00002064
+ .word 0x00002064, 0x00002084
+ .word 0x00002084, 0x000020A0
+ .word 0x000020A0, 0x000020C4
+ .word 0x000020C4, 0x000020D8
+ .word 0x000020D8, 0x000020F4
+ .word 0x000020F4, 0x00002114
+ .word 0x00002114, 0x0000212C
+ .word 0x0000212C, 0x00002150
+ .word 0x00002150, 0x0000216C
+ .word 0x0000216C, 0x00002184
+ .word 0x00002184, 0x000021A4
+ .word 0x000021A4, 0x000021D0
+ .word 0x000021D0, 0x000021F4
+ .word 0x000021F4, 0x0000221C
+ .word 0x0000221C, 0x0000222C
+ .word 0x0000222C, 0x00002248
+ .word 0x00002248, 0x0000226C
+ .word 0x0000226C, 0x00002278
+ .word 0x00002278, 0x000022A0
+ .word 0x000022A0, 0x000022C0
+ .word 0x000022C0, 0x000022E0
+ .word 0x000022E0, 0x00002304
+ .word 0x00002304, 0x00002328
+ .word 0x00002328, 0x00002348
+ .word 0x00002348, 0x00002374
+ .word 0x00002374, 0x00002390
+ .word 0x00002390, 0x000023B4
+ .word 0x000023B4, 0x000023D8
+ .word 0x000023D8, 0x000023FC
+ .word 0x000023FC, 0x00002418
+ .word 0x00002418, 0x00002434
+ .word 0x00002434, 0x00002458
+ .word 0x00002458, 0x00002478
+ .word 0x00002478, 0x000024A0
+ .word 0x000024A0, 0x000024BC
+ .word 0x000024BC, 0x000024E4
+ .word 0x000024E4, 0x00002504
+ .word 0x00002504, 0x0000252C
+ .word 0x0000252C, 0x00002548
+ .word 0x00002548, 0x00002568
+ .word 0x00002568, 0x00002588
+ .word 0x00002588, 0x000025A8
+ .word 0x000025A8, 0x000025CC
+ .word 0x000025CC, 0x000025E8
+ .word 0x000025E8, 0x00002604
+ .word 0x00002604, 0x00002620
+ .word 0x00002620, 0x0000263C
+ .word 0x0000263C, 0x00002660
+ .word 0x00002660, 0x00002688
+ .word 0x00002688, 0x000026A4
+ .word 0x000026A4, 0x000026CC
+ .word 0x000026CC, 0x000026EC
+ .word 0x000026EC, 0x00002708
+ .word 0x00002708, 0x00002724
+ .word 0x00002724, 0x00002740
+ .word 0x00002740, 0x00002760
+ .word 0x00002760, 0x00002788
+ .word 0x00002788, 0x000027A4
+ .word 0x000027A4, 0x000027C8
+ .word 0x000027C8, 0x000027E8
+ .word 0x000027E8, 0x00002810
+ .word 0x00002810, 0x0000282C
+ .word 0x0000282C, 0x0000284C
+ .word 0x0000284C, 0x00002868
+ .word 0x00002868, 0x00002888
+ .word 0x00002888, 0x00002890
+ .word 0x00002890, 0x000028B0
+ .word 0x000028B0, 0x000028C4
+ .word 0x000028C4, 0x000028E8
+ .word 0x000028E8, 0x00002908
+ .word 0x00002908, 0x0000292C
+ .word 0x0000292C, 0x00002948
+ .word 0x00002948, 0x00002974
+ .word 0x00002974, 0x00002994
+ .word 0x00002994, 0x000029B0
+ .word 0x000029B0, 0x000029D4
+ .word 0x000029D4, 0x000029E4
+ .word 0x000029E4, 0x00002A00
+ .word 0x00002A00, 0x00002A20
+ .word 0x00002A20, 0x00002A3C
+ .word 0x00002A3C, 0x00002A5C
+ .word 0x00002A5C, 0x00002A80
+ .word 0x00002A80, 0x00002A8C
+ .word 0x00002A8C, 0x00002AA8
+ .word 0x00002AA8, 0x00002AC4
+ .word 0x00002AC4, 0x00002AE0
+ .word 0x00002AE0, 0x00002AFC
+ .word 0x00002AFC, 0x00002B18
+ .word 0x00002B18, 0x00002B3C
+ .word 0x00002B3C, 0x00002B64
+ .word 0x00002B64, 0x00002B68
+ .word 0x00002B68, 0x00002B88
+ .word 0x00002B88, 0x00002BAC
+ .word 0x00002BAC, 0x00002BC8
+ .word 0x00002BC8, 0x00002BE4
+ .word 0x00002BE4, 0x00002C04
+ .word 0x00002C04, 0x00002C24
+ .word 0x00002C24, 0x00002C44
+ .word 0x00002C44, 0x00002C60
+ .word 0x00002C60, 0x00002C7C
+ .word 0x00002C7C, 0x00002C98
+ .word 0x00002C98, 0x00002CBC
+ .word 0x00002CBC, 0x00002CDC
+ .word 0x00002CDC, 0x00002CF8
+ .word 0x00002CF8, 0x00002D14
+ .word 0x00002D14, 0x00002D38
+ .word 0x00002D38, 0x00002D54
+ .word 0x00002D54, 0x00002D74
+ .word 0x00002D74, 0x00002D94
+ .word 0x00002D94, 0x00002DB0
+ .word 0x00002DB0, 0x00002DD0
+ .word 0x00002DD0, 0x00002DF4
+ .word 0x00002DF4, 0x00002E0C
+ .word 0x00002E0C, 0x00002E28
+ .word 0x00002E28, 0x00002E48
+ .word 0x00002E48, 0x00002E60
+ .word 0x00002E60, 0x00002E7C
+ .word 0x00002E7C, 0x00002E84
+ .word 0x00002E84, 0x00002E9C
+ .word 0x00002E9C, 0x00002EB4
+ .word 0x00002EB4, 0x00002ED0
+ .word 0x00002ED0, 0x00002EEC
+ .word 0x00002EEC, 0x00002EFC
+ .word 0x00002EFC, 0x00002F08
+ .word 0x00002F08, 0x00002F20
+ .word 0x00002F20, 0x00002F3C
+ .word 0x00002F3C, 0x00002F54
+ .word 0x00002F54, 0x00002F74
+ .word 0x00002F74, 0x00002F7C
+ .word 0x00002F7C, 0x00002F98
+ .word 0x00002F98, 0x00002FB4
+ .word 0x00002FB4, 0x00002FBC
+ .word 0x00002FBC, 0x00002FE0
+ .word 0x00002FE0, 0x00002FF8
+ .word 0x00002FF8, 0x00003010
+ .word 0x00003010, 0x00003030
+ .word 0x00003030, 0x00003048
+ .word 0x00003048, 0x00003064
+ .word 0x00003064, 0x0000307C
+ .word 0x0000307C, 0x00003098
+ .word 0x00003098, 0x000030BC
+ .word 0x000030BC, 0x000030D8
+ .word 0x000030D8, 0x000030F8
+ .word 0x000030F8, 0x00003118
+ .word 0x00003118, 0x0000313C
+ .word 0x0000313C, 0x0000314C
+ .word 0x0000314C, 0x00003160
+ .word 0x00003160, 0x0000317C
+ .word 0x0000317C, 0x0000319C
+ .word 0x0000319C, 0x000031AC
+ .word 0x000031AC, 0x000031C4
+ .word 0x000031C4, 0x000031E0
+ .word 0x000031E0, 0x000031FC
+ .word 0x000031FC, 0x00003224
+ .word 0x00003224, 0x00003240
+ .word 0x00003240, 0x00003268
+ .word 0x00003268, 0x00003274
+ .word 0x00003274, 0x00003290
+ .word 0x00003290, 0x000032AC
+ .word 0x000032AC, 0x000032C4
+ .word 0x000032C4, 0x000032DC
+ .word 0x000032DC, 0x000032FC
+ .word 0x000032FC, 0x0000331C
+ .word 0x0000331C, 0x00003330
+ .word 0x00003330, 0x00003354
+ .word 0x00003354, 0x0000336C
+ .word 0x0000336C, 0x0000338C
+ .word 0x0000338C, 0x000033A4
+ .word 0x000033A4, 0x000033C8
+ .word 0x000033C8, 0x000033E8
+ .word 0x000033E8, 0x0000340C
+ .word 0x0000340C, 0x00003428
+ .word 0x00003428, 0x00003444
+ .word 0x00003444, 0x00003464
+ .word 0x00003464, 0x00003480
+ .word 0x00003480, 0x0000349C
+ .word 0x0000349C, 0x000034BC
+ .word 0x000034BC, 0x000034E0
+ .word 0x000034E0, 0x00003508
+ .word 0x00003508, 0x00003528
+ .word 0x00003528, 0x0000354C
+ .word 0x0000354C, 0x00003574
+ .word 0x00003574, 0x00003598
+ .word 0x00003598, 0x000035BC
+ .word 0x000035BC, 0x000035C8
+ .word 0x000035C8, 0x000035F0
+ .word 0x000035F0, 0x0000360C
+ .word 0x0000360C, 0x00003628
+ .word 0x00003628, 0x00003650
+ .word 0x00003650, 0x00003678
+ .word 0x00003678, 0x0000369C
+ .word 0x0000369C, 0x000036C4
+ .word 0x000036C4, 0x000036EC
+ .word 0x000036EC, 0x00003718
+ .word 0x00003718, 0x00003738
+ .word 0x00003738, 0x00003754
+ .word 0x00003754, 0x0000376C
+ .word 0x0000376C, 0x00003784
+ .word 0x00003784, 0x0000379C
+ .word 0x0000379C, 0x000037B4
+ .word 0x000037B4, 0x000037CC
+ .word 0x000037CC, 0x000037E8
+ .word 0x000037E8, 0x00003800
+ .word 0x00003800, 0x00003818
+ .word 0x00003818, 0x00003834
+ .word 0x00003834, 0x0000384C
+ .word 0x0000384C, 0x00003868
+ .word 0x00003868, 0x00003884
+ .word 0x00003884, 0x000038A0
+ .word 0x000038A0, 0x000038C0
+ .word 0x000038C0, 0x000038C4
+ .word 0x000038C4, 0x000038C8
+ .word 0x000038C8, 0x000038E8
+ .word 0x000038E8, 0x0000390C
+ .word 0x0000390C, 0x0000392C
+ .word 0x0000392C, 0x00003948
+ .word 0x00003948, 0x00003964
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x0000396C ; chunk size
+ .incbin "baserom.nds", 0x1C237DC, 0x3964
+ .balign 512, 255
diff --git a/files/FILE_1C27200_trdata.narc.s b/files/FILE_1C27200_trdata.narc.s
new file mode 100644
index 00000000..f591339c
--- /dev/null
+++ b/files/FILE_1C27200_trdata.narc.s
@@ -0,0 +1,878 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00005D2C ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00001A9C ; chunk size
+ .short 850 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000014
+ .word 0x00000014, 0x00000028
+ .word 0x00000028, 0x0000003C
+ .word 0x0000003C, 0x00000050
+ .word 0x00000050, 0x00000064
+ .word 0x00000064, 0x00000078
+ .word 0x00000078, 0x0000008C
+ .word 0x0000008C, 0x000000A0
+ .word 0x000000A0, 0x000000B4
+ .word 0x000000B4, 0x000000C8
+ .word 0x000000C8, 0x000000DC
+ .word 0x000000DC, 0x000000F0
+ .word 0x000000F0, 0x00000104
+ .word 0x00000104, 0x00000118
+ .word 0x00000118, 0x0000012C
+ .word 0x0000012C, 0x00000140
+ .word 0x00000140, 0x00000154
+ .word 0x00000154, 0x00000168
+ .word 0x00000168, 0x0000017C
+ .word 0x0000017C, 0x00000190
+ .word 0x00000190, 0x000001A4
+ .word 0x000001A4, 0x000001B8
+ .word 0x000001B8, 0x000001CC
+ .word 0x000001CC, 0x000001E0
+ .word 0x000001E0, 0x000001F4
+ .word 0x000001F4, 0x00000208
+ .word 0x00000208, 0x0000021C
+ .word 0x0000021C, 0x00000230
+ .word 0x00000230, 0x00000244
+ .word 0x00000244, 0x00000258
+ .word 0x00000258, 0x0000026C
+ .word 0x0000026C, 0x00000280
+ .word 0x00000280, 0x00000294
+ .word 0x00000294, 0x000002A8
+ .word 0x000002A8, 0x000002BC
+ .word 0x000002BC, 0x000002D0
+ .word 0x000002D0, 0x000002E4
+ .word 0x000002E4, 0x000002F8
+ .word 0x000002F8, 0x0000030C
+ .word 0x0000030C, 0x00000320
+ .word 0x00000320, 0x00000334
+ .word 0x00000334, 0x00000348
+ .word 0x00000348, 0x0000035C
+ .word 0x0000035C, 0x00000370
+ .word 0x00000370, 0x00000384
+ .word 0x00000384, 0x00000398
+ .word 0x00000398, 0x000003AC
+ .word 0x000003AC, 0x000003C0
+ .word 0x000003C0, 0x000003D4
+ .word 0x000003D4, 0x000003E8
+ .word 0x000003E8, 0x000003FC
+ .word 0x000003FC, 0x00000410
+ .word 0x00000410, 0x00000424
+ .word 0x00000424, 0x00000438
+ .word 0x00000438, 0x0000044C
+ .word 0x0000044C, 0x00000460
+ .word 0x00000460, 0x00000474
+ .word 0x00000474, 0x00000488
+ .word 0x00000488, 0x0000049C
+ .word 0x0000049C, 0x000004B0
+ .word 0x000004B0, 0x000004C4
+ .word 0x000004C4, 0x000004D8
+ .word 0x000004D8, 0x000004EC
+ .word 0x000004EC, 0x00000500
+ .word 0x00000500, 0x00000514
+ .word 0x00000514, 0x00000528
+ .word 0x00000528, 0x0000053C
+ .word 0x0000053C, 0x00000550
+ .word 0x00000550, 0x00000564
+ .word 0x00000564, 0x00000578
+ .word 0x00000578, 0x0000058C
+ .word 0x0000058C, 0x000005A0
+ .word 0x000005A0, 0x000005B4
+ .word 0x000005B4, 0x000005C8
+ .word 0x000005C8, 0x000005DC
+ .word 0x000005DC, 0x000005F0
+ .word 0x000005F0, 0x00000604
+ .word 0x00000604, 0x00000618
+ .word 0x00000618, 0x0000062C
+ .word 0x0000062C, 0x00000640
+ .word 0x00000640, 0x00000654
+ .word 0x00000654, 0x00000668
+ .word 0x00000668, 0x0000067C
+ .word 0x0000067C, 0x00000690
+ .word 0x00000690, 0x000006A4
+ .word 0x000006A4, 0x000006B8
+ .word 0x000006B8, 0x000006CC
+ .word 0x000006CC, 0x000006E0
+ .word 0x000006E0, 0x000006F4
+ .word 0x000006F4, 0x00000708
+ .word 0x00000708, 0x0000071C
+ .word 0x0000071C, 0x00000730
+ .word 0x00000730, 0x00000744
+ .word 0x00000744, 0x00000758
+ .word 0x00000758, 0x0000076C
+ .word 0x0000076C, 0x00000780
+ .word 0x00000780, 0x00000794
+ .word 0x00000794, 0x000007A8
+ .word 0x000007A8, 0x000007BC
+ .word 0x000007BC, 0x000007D0
+ .word 0x000007D0, 0x000007E4
+ .word 0x000007E4, 0x000007F8
+ .word 0x000007F8, 0x0000080C
+ .word 0x0000080C, 0x00000820
+ .word 0x00000820, 0x00000834
+ .word 0x00000834, 0x00000848
+ .word 0x00000848, 0x0000085C
+ .word 0x0000085C, 0x00000870
+ .word 0x00000870, 0x00000884
+ .word 0x00000884, 0x00000898
+ .word 0x00000898, 0x000008AC
+ .word 0x000008AC, 0x000008C0
+ .word 0x000008C0, 0x000008D4
+ .word 0x000008D4, 0x000008E8
+ .word 0x000008E8, 0x000008FC
+ .word 0x000008FC, 0x00000910
+ .word 0x00000910, 0x00000924
+ .word 0x00000924, 0x00000938
+ .word 0x00000938, 0x0000094C
+ .word 0x0000094C, 0x00000960
+ .word 0x00000960, 0x00000974
+ .word 0x00000974, 0x00000988
+ .word 0x00000988, 0x0000099C
+ .word 0x0000099C, 0x000009B0
+ .word 0x000009B0, 0x000009C4
+ .word 0x000009C4, 0x000009D8
+ .word 0x000009D8, 0x000009EC
+ .word 0x000009EC, 0x00000A00
+ .word 0x00000A00, 0x00000A14
+ .word 0x00000A14, 0x00000A28
+ .word 0x00000A28, 0x00000A3C
+ .word 0x00000A3C, 0x00000A50
+ .word 0x00000A50, 0x00000A64
+ .word 0x00000A64, 0x00000A78
+ .word 0x00000A78, 0x00000A8C
+ .word 0x00000A8C, 0x00000AA0
+ .word 0x00000AA0, 0x00000AB4
+ .word 0x00000AB4, 0x00000AC8
+ .word 0x00000AC8, 0x00000ADC
+ .word 0x00000ADC, 0x00000AF0
+ .word 0x00000AF0, 0x00000B04
+ .word 0x00000B04, 0x00000B18
+ .word 0x00000B18, 0x00000B2C
+ .word 0x00000B2C, 0x00000B40
+ .word 0x00000B40, 0x00000B54
+ .word 0x00000B54, 0x00000B68
+ .word 0x00000B68, 0x00000B7C
+ .word 0x00000B7C, 0x00000B90
+ .word 0x00000B90, 0x00000BA4
+ .word 0x00000BA4, 0x00000BB8
+ .word 0x00000BB8, 0x00000BCC
+ .word 0x00000BCC, 0x00000BE0
+ .word 0x00000BE0, 0x00000BF4
+ .word 0x00000BF4, 0x00000C08
+ .word 0x00000C08, 0x00000C1C
+ .word 0x00000C1C, 0x00000C30
+ .word 0x00000C30, 0x00000C44
+ .word 0x00000C44, 0x00000C58
+ .word 0x00000C58, 0x00000C6C
+ .word 0x00000C6C, 0x00000C80
+ .word 0x00000C80, 0x00000C94
+ .word 0x00000C94, 0x00000CA8
+ .word 0x00000CA8, 0x00000CBC
+ .word 0x00000CBC, 0x00000CD0
+ .word 0x00000CD0, 0x00000CE4
+ .word 0x00000CE4, 0x00000CF8
+ .word 0x00000CF8, 0x00000D0C
+ .word 0x00000D0C, 0x00000D20
+ .word 0x00000D20, 0x00000D34
+ .word 0x00000D34, 0x00000D48
+ .word 0x00000D48, 0x00000D5C
+ .word 0x00000D5C, 0x00000D70
+ .word 0x00000D70, 0x00000D84
+ .word 0x00000D84, 0x00000D98
+ .word 0x00000D98, 0x00000DAC
+ .word 0x00000DAC, 0x00000DC0
+ .word 0x00000DC0, 0x00000DD4
+ .word 0x00000DD4, 0x00000DE8
+ .word 0x00000DE8, 0x00000DFC
+ .word 0x00000DFC, 0x00000E10
+ .word 0x00000E10, 0x00000E24
+ .word 0x00000E24, 0x00000E38
+ .word 0x00000E38, 0x00000E4C
+ .word 0x00000E4C, 0x00000E60
+ .word 0x00000E60, 0x00000E74
+ .word 0x00000E74, 0x00000E88
+ .word 0x00000E88, 0x00000E9C
+ .word 0x00000E9C, 0x00000EB0
+ .word 0x00000EB0, 0x00000EC4
+ .word 0x00000EC4, 0x00000ED8
+ .word 0x00000ED8, 0x00000EEC
+ .word 0x00000EEC, 0x00000F00
+ .word 0x00000F00, 0x00000F14
+ .word 0x00000F14, 0x00000F28
+ .word 0x00000F28, 0x00000F3C
+ .word 0x00000F3C, 0x00000F50
+ .word 0x00000F50, 0x00000F64
+ .word 0x00000F64, 0x00000F78
+ .word 0x00000F78, 0x00000F8C
+ .word 0x00000F8C, 0x00000FA0
+ .word 0x00000FA0, 0x00000FB4
+ .word 0x00000FB4, 0x00000FC8
+ .word 0x00000FC8, 0x00000FDC
+ .word 0x00000FDC, 0x00000FF0
+ .word 0x00000FF0, 0x00001004
+ .word 0x00001004, 0x00001018
+ .word 0x00001018, 0x0000102C
+ .word 0x0000102C, 0x00001040
+ .word 0x00001040, 0x00001054
+ .word 0x00001054, 0x00001068
+ .word 0x00001068, 0x0000107C
+ .word 0x0000107C, 0x00001090
+ .word 0x00001090, 0x000010A4
+ .word 0x000010A4, 0x000010B8
+ .word 0x000010B8, 0x000010CC
+ .word 0x000010CC, 0x000010E0
+ .word 0x000010E0, 0x000010F4
+ .word 0x000010F4, 0x00001108
+ .word 0x00001108, 0x0000111C
+ .word 0x0000111C, 0x00001130
+ .word 0x00001130, 0x00001144
+ .word 0x00001144, 0x00001158
+ .word 0x00001158, 0x0000116C
+ .word 0x0000116C, 0x00001180
+ .word 0x00001180, 0x00001194
+ .word 0x00001194, 0x000011A8
+ .word 0x000011A8, 0x000011BC
+ .word 0x000011BC, 0x000011D0
+ .word 0x000011D0, 0x000011E4
+ .word 0x000011E4, 0x000011F8
+ .word 0x000011F8, 0x0000120C
+ .word 0x0000120C, 0x00001220
+ .word 0x00001220, 0x00001234
+ .word 0x00001234, 0x00001248
+ .word 0x00001248, 0x0000125C
+ .word 0x0000125C, 0x00001270
+ .word 0x00001270, 0x00001284
+ .word 0x00001284, 0x00001298
+ .word 0x00001298, 0x000012AC
+ .word 0x000012AC, 0x000012C0
+ .word 0x000012C0, 0x000012D4
+ .word 0x000012D4, 0x000012E8
+ .word 0x000012E8, 0x000012FC
+ .word 0x000012FC, 0x00001310
+ .word 0x00001310, 0x00001324
+ .word 0x00001324, 0x00001338
+ .word 0x00001338, 0x0000134C
+ .word 0x0000134C, 0x00001360
+ .word 0x00001360, 0x00001374
+ .word 0x00001374, 0x00001388
+ .word 0x00001388, 0x0000139C
+ .word 0x0000139C, 0x000013B0
+ .word 0x000013B0, 0x000013C4
+ .word 0x000013C4, 0x000013D8
+ .word 0x000013D8, 0x000013EC
+ .word 0x000013EC, 0x00001400
+ .word 0x00001400, 0x00001414
+ .word 0x00001414, 0x00001428
+ .word 0x00001428, 0x0000143C
+ .word 0x0000143C, 0x00001450
+ .word 0x00001450, 0x00001464
+ .word 0x00001464, 0x00001478
+ .word 0x00001478, 0x0000148C
+ .word 0x0000148C, 0x000014A0
+ .word 0x000014A0, 0x000014B4
+ .word 0x000014B4, 0x000014C8
+ .word 0x000014C8, 0x000014DC
+ .word 0x000014DC, 0x000014F0
+ .word 0x000014F0, 0x00001504
+ .word 0x00001504, 0x00001518
+ .word 0x00001518, 0x0000152C
+ .word 0x0000152C, 0x00001540
+ .word 0x00001540, 0x00001554
+ .word 0x00001554, 0x00001568
+ .word 0x00001568, 0x0000157C
+ .word 0x0000157C, 0x00001590
+ .word 0x00001590, 0x000015A4
+ .word 0x000015A4, 0x000015B8
+ .word 0x000015B8, 0x000015CC
+ .word 0x000015CC, 0x000015E0
+ .word 0x000015E0, 0x000015F4
+ .word 0x000015F4, 0x00001608
+ .word 0x00001608, 0x0000161C
+ .word 0x0000161C, 0x00001630
+ .word 0x00001630, 0x00001644
+ .word 0x00001644, 0x00001658
+ .word 0x00001658, 0x0000166C
+ .word 0x0000166C, 0x00001680
+ .word 0x00001680, 0x00001694
+ .word 0x00001694, 0x000016A8
+ .word 0x000016A8, 0x000016BC
+ .word 0x000016BC, 0x000016D0
+ .word 0x000016D0, 0x000016E4
+ .word 0x000016E4, 0x000016F8
+ .word 0x000016F8, 0x0000170C
+ .word 0x0000170C, 0x00001720
+ .word 0x00001720, 0x00001734
+ .word 0x00001734, 0x00001748
+ .word 0x00001748, 0x0000175C
+ .word 0x0000175C, 0x00001770
+ .word 0x00001770, 0x00001784
+ .word 0x00001784, 0x00001798
+ .word 0x00001798, 0x000017AC
+ .word 0x000017AC, 0x000017C0
+ .word 0x000017C0, 0x000017D4
+ .word 0x000017D4, 0x000017E8
+ .word 0x000017E8, 0x000017FC
+ .word 0x000017FC, 0x00001810
+ .word 0x00001810, 0x00001824
+ .word 0x00001824, 0x00001838
+ .word 0x00001838, 0x0000184C
+ .word 0x0000184C, 0x00001860
+ .word 0x00001860, 0x00001874
+ .word 0x00001874, 0x00001888
+ .word 0x00001888, 0x0000189C
+ .word 0x0000189C, 0x000018B0
+ .word 0x000018B0, 0x000018C4
+ .word 0x000018C4, 0x000018D8
+ .word 0x000018D8, 0x000018EC
+ .word 0x000018EC, 0x00001900
+ .word 0x00001900, 0x00001914
+ .word 0x00001914, 0x00001928
+ .word 0x00001928, 0x0000193C
+ .word 0x0000193C, 0x00001950
+ .word 0x00001950, 0x00001964
+ .word 0x00001964, 0x00001978
+ .word 0x00001978, 0x0000198C
+ .word 0x0000198C, 0x000019A0
+ .word 0x000019A0, 0x000019B4
+ .word 0x000019B4, 0x000019C8
+ .word 0x000019C8, 0x000019DC
+ .word 0x000019DC, 0x000019F0
+ .word 0x000019F0, 0x00001A04
+ .word 0x00001A04, 0x00001A18
+ .word 0x00001A18, 0x00001A2C
+ .word 0x00001A2C, 0x00001A40
+ .word 0x00001A40, 0x00001A54
+ .word 0x00001A54, 0x00001A68
+ .word 0x00001A68, 0x00001A7C
+ .word 0x00001A7C, 0x00001A90
+ .word 0x00001A90, 0x00001AA4
+ .word 0x00001AA4, 0x00001AB8
+ .word 0x00001AB8, 0x00001ACC
+ .word 0x00001ACC, 0x00001AE0
+ .word 0x00001AE0, 0x00001AF4
+ .word 0x00001AF4, 0x00001B08
+ .word 0x00001B08, 0x00001B1C
+ .word 0x00001B1C, 0x00001B30
+ .word 0x00001B30, 0x00001B44
+ .word 0x00001B44, 0x00001B58
+ .word 0x00001B58, 0x00001B6C
+ .word 0x00001B6C, 0x00001B80
+ .word 0x00001B80, 0x00001B94
+ .word 0x00001B94, 0x00001BA8
+ .word 0x00001BA8, 0x00001BBC
+ .word 0x00001BBC, 0x00001BD0
+ .word 0x00001BD0, 0x00001BE4
+ .word 0x00001BE4, 0x00001BF8
+ .word 0x00001BF8, 0x00001C0C
+ .word 0x00001C0C, 0x00001C20
+ .word 0x00001C20, 0x00001C34
+ .word 0x00001C34, 0x00001C48
+ .word 0x00001C48, 0x00001C5C
+ .word 0x00001C5C, 0x00001C70
+ .word 0x00001C70, 0x00001C84
+ .word 0x00001C84, 0x00001C98
+ .word 0x00001C98, 0x00001CAC
+ .word 0x00001CAC, 0x00001CC0
+ .word 0x00001CC0, 0x00001CD4
+ .word 0x00001CD4, 0x00001CE8
+ .word 0x00001CE8, 0x00001CFC
+ .word 0x00001CFC, 0x00001D10
+ .word 0x00001D10, 0x00001D24
+ .word 0x00001D24, 0x00001D38
+ .word 0x00001D38, 0x00001D4C
+ .word 0x00001D4C, 0x00001D60
+ .word 0x00001D60, 0x00001D74
+ .word 0x00001D74, 0x00001D88
+ .word 0x00001D88, 0x00001D9C
+ .word 0x00001D9C, 0x00001DB0
+ .word 0x00001DB0, 0x00001DC4
+ .word 0x00001DC4, 0x00001DD8
+ .word 0x00001DD8, 0x00001DEC
+ .word 0x00001DEC, 0x00001E00
+ .word 0x00001E00, 0x00001E14
+ .word 0x00001E14, 0x00001E28
+ .word 0x00001E28, 0x00001E3C
+ .word 0x00001E3C, 0x00001E50
+ .word 0x00001E50, 0x00001E64
+ .word 0x00001E64, 0x00001E78
+ .word 0x00001E78, 0x00001E8C
+ .word 0x00001E8C, 0x00001EA0
+ .word 0x00001EA0, 0x00001EB4
+ .word 0x00001EB4, 0x00001EC8
+ .word 0x00001EC8, 0x00001EDC
+ .word 0x00001EDC, 0x00001EF0
+ .word 0x00001EF0, 0x00001F04
+ .word 0x00001F04, 0x00001F18
+ .word 0x00001F18, 0x00001F2C
+ .word 0x00001F2C, 0x00001F40
+ .word 0x00001F40, 0x00001F54
+ .word 0x00001F54, 0x00001F68
+ .word 0x00001F68, 0x00001F7C
+ .word 0x00001F7C, 0x00001F90
+ .word 0x00001F90, 0x00001FA4
+ .word 0x00001FA4, 0x00001FB8
+ .word 0x00001FB8, 0x00001FCC
+ .word 0x00001FCC, 0x00001FE0
+ .word 0x00001FE0, 0x00001FF4
+ .word 0x00001FF4, 0x00002008
+ .word 0x00002008, 0x0000201C
+ .word 0x0000201C, 0x00002030
+ .word 0x00002030, 0x00002044
+ .word 0x00002044, 0x00002058
+ .word 0x00002058, 0x0000206C
+ .word 0x0000206C, 0x00002080
+ .word 0x00002080, 0x00002094
+ .word 0x00002094, 0x000020A8
+ .word 0x000020A8, 0x000020BC
+ .word 0x000020BC, 0x000020D0
+ .word 0x000020D0, 0x000020E4
+ .word 0x000020E4, 0x000020F8
+ .word 0x000020F8, 0x0000210C
+ .word 0x0000210C, 0x00002120
+ .word 0x00002120, 0x00002134
+ .word 0x00002134, 0x00002148
+ .word 0x00002148, 0x0000215C
+ .word 0x0000215C, 0x00002170
+ .word 0x00002170, 0x00002184
+ .word 0x00002184, 0x00002198
+ .word 0x00002198, 0x000021AC
+ .word 0x000021AC, 0x000021C0
+ .word 0x000021C0, 0x000021D4
+ .word 0x000021D4, 0x000021E8
+ .word 0x000021E8, 0x000021FC
+ .word 0x000021FC, 0x00002210
+ .word 0x00002210, 0x00002224
+ .word 0x00002224, 0x00002238
+ .word 0x00002238, 0x0000224C
+ .word 0x0000224C, 0x00002260
+ .word 0x00002260, 0x00002274
+ .word 0x00002274, 0x00002288
+ .word 0x00002288, 0x0000229C
+ .word 0x0000229C, 0x000022B0
+ .word 0x000022B0, 0x000022C4
+ .word 0x000022C4, 0x000022D8
+ .word 0x000022D8, 0x000022EC
+ .word 0x000022EC, 0x00002300
+ .word 0x00002300, 0x00002314
+ .word 0x00002314, 0x00002328
+ .word 0x00002328, 0x0000233C
+ .word 0x0000233C, 0x00002350
+ .word 0x00002350, 0x00002364
+ .word 0x00002364, 0x00002378
+ .word 0x00002378, 0x0000238C
+ .word 0x0000238C, 0x000023A0
+ .word 0x000023A0, 0x000023B4
+ .word 0x000023B4, 0x000023C8
+ .word 0x000023C8, 0x000023DC
+ .word 0x000023DC, 0x000023F0
+ .word 0x000023F0, 0x00002404
+ .word 0x00002404, 0x00002418
+ .word 0x00002418, 0x0000242C
+ .word 0x0000242C, 0x00002440
+ .word 0x00002440, 0x00002454
+ .word 0x00002454, 0x00002468
+ .word 0x00002468, 0x0000247C
+ .word 0x0000247C, 0x00002490
+ .word 0x00002490, 0x000024A4
+ .word 0x000024A4, 0x000024B8
+ .word 0x000024B8, 0x000024CC
+ .word 0x000024CC, 0x000024E0
+ .word 0x000024E0, 0x000024F4
+ .word 0x000024F4, 0x00002508
+ .word 0x00002508, 0x0000251C
+ .word 0x0000251C, 0x00002530
+ .word 0x00002530, 0x00002544
+ .word 0x00002544, 0x00002558
+ .word 0x00002558, 0x0000256C
+ .word 0x0000256C, 0x00002580
+ .word 0x00002580, 0x00002594
+ .word 0x00002594, 0x000025A8
+ .word 0x000025A8, 0x000025BC
+ .word 0x000025BC, 0x000025D0
+ .word 0x000025D0, 0x000025E4
+ .word 0x000025E4, 0x000025F8
+ .word 0x000025F8, 0x0000260C
+ .word 0x0000260C, 0x00002620
+ .word 0x00002620, 0x00002634
+ .word 0x00002634, 0x00002648
+ .word 0x00002648, 0x0000265C
+ .word 0x0000265C, 0x00002670
+ .word 0x00002670, 0x00002684
+ .word 0x00002684, 0x00002698
+ .word 0x00002698, 0x000026AC
+ .word 0x000026AC, 0x000026C0
+ .word 0x000026C0, 0x000026D4
+ .word 0x000026D4, 0x000026E8
+ .word 0x000026E8, 0x000026FC
+ .word 0x000026FC, 0x00002710
+ .word 0x00002710, 0x00002724
+ .word 0x00002724, 0x00002738
+ .word 0x00002738, 0x0000274C
+ .word 0x0000274C, 0x00002760
+ .word 0x00002760, 0x00002774
+ .word 0x00002774, 0x00002788
+ .word 0x00002788, 0x0000279C
+ .word 0x0000279C, 0x000027B0
+ .word 0x000027B0, 0x000027C4
+ .word 0x000027C4, 0x000027D8
+ .word 0x000027D8, 0x000027EC
+ .word 0x000027EC, 0x00002800
+ .word 0x00002800, 0x00002814
+ .word 0x00002814, 0x00002828
+ .word 0x00002828, 0x0000283C
+ .word 0x0000283C, 0x00002850
+ .word 0x00002850, 0x00002864
+ .word 0x00002864, 0x00002878
+ .word 0x00002878, 0x0000288C
+ .word 0x0000288C, 0x000028A0
+ .word 0x000028A0, 0x000028B4
+ .word 0x000028B4, 0x000028C8
+ .word 0x000028C8, 0x000028DC
+ .word 0x000028DC, 0x000028F0
+ .word 0x000028F0, 0x00002904
+ .word 0x00002904, 0x00002918
+ .word 0x00002918, 0x0000292C
+ .word 0x0000292C, 0x00002940
+ .word 0x00002940, 0x00002954
+ .word 0x00002954, 0x00002968
+ .word 0x00002968, 0x0000297C
+ .word 0x0000297C, 0x00002990
+ .word 0x00002990, 0x000029A4
+ .word 0x000029A4, 0x000029B8
+ .word 0x000029B8, 0x000029CC
+ .word 0x000029CC, 0x000029E0
+ .word 0x000029E0, 0x000029F4
+ .word 0x000029F4, 0x00002A08
+ .word 0x00002A08, 0x00002A1C
+ .word 0x00002A1C, 0x00002A30
+ .word 0x00002A30, 0x00002A44
+ .word 0x00002A44, 0x00002A58
+ .word 0x00002A58, 0x00002A6C
+ .word 0x00002A6C, 0x00002A80
+ .word 0x00002A80, 0x00002A94
+ .word 0x00002A94, 0x00002AA8
+ .word 0x00002AA8, 0x00002ABC
+ .word 0x00002ABC, 0x00002AD0
+ .word 0x00002AD0, 0x00002AE4
+ .word 0x00002AE4, 0x00002AF8
+ .word 0x00002AF8, 0x00002B0C
+ .word 0x00002B0C, 0x00002B20
+ .word 0x00002B20, 0x00002B34
+ .word 0x00002B34, 0x00002B48
+ .word 0x00002B48, 0x00002B5C
+ .word 0x00002B5C, 0x00002B70
+ .word 0x00002B70, 0x00002B84
+ .word 0x00002B84, 0x00002B98
+ .word 0x00002B98, 0x00002BAC
+ .word 0x00002BAC, 0x00002BC0
+ .word 0x00002BC0, 0x00002BD4
+ .word 0x00002BD4, 0x00002BE8
+ .word 0x00002BE8, 0x00002BFC
+ .word 0x00002BFC, 0x00002C10
+ .word 0x00002C10, 0x00002C24
+ .word 0x00002C24, 0x00002C38
+ .word 0x00002C38, 0x00002C4C
+ .word 0x00002C4C, 0x00002C60
+ .word 0x00002C60, 0x00002C74
+ .word 0x00002C74, 0x00002C88
+ .word 0x00002C88, 0x00002C9C
+ .word 0x00002C9C, 0x00002CB0
+ .word 0x00002CB0, 0x00002CC4
+ .word 0x00002CC4, 0x00002CD8
+ .word 0x00002CD8, 0x00002CEC
+ .word 0x00002CEC, 0x00002D00
+ .word 0x00002D00, 0x00002D14
+ .word 0x00002D14, 0x00002D28
+ .word 0x00002D28, 0x00002D3C
+ .word 0x00002D3C, 0x00002D50
+ .word 0x00002D50, 0x00002D64
+ .word 0x00002D64, 0x00002D78
+ .word 0x00002D78, 0x00002D8C
+ .word 0x00002D8C, 0x00002DA0
+ .word 0x00002DA0, 0x00002DB4
+ .word 0x00002DB4, 0x00002DC8
+ .word 0x00002DC8, 0x00002DDC
+ .word 0x00002DDC, 0x00002DF0
+ .word 0x00002DF0, 0x00002E04
+ .word 0x00002E04, 0x00002E18
+ .word 0x00002E18, 0x00002E2C
+ .word 0x00002E2C, 0x00002E40
+ .word 0x00002E40, 0x00002E54
+ .word 0x00002E54, 0x00002E68
+ .word 0x00002E68, 0x00002E7C
+ .word 0x00002E7C, 0x00002E90
+ .word 0x00002E90, 0x00002EA4
+ .word 0x00002EA4, 0x00002EB8
+ .word 0x00002EB8, 0x00002ECC
+ .word 0x00002ECC, 0x00002EE0
+ .word 0x00002EE0, 0x00002EF4
+ .word 0x00002EF4, 0x00002F08
+ .word 0x00002F08, 0x00002F1C
+ .word 0x00002F1C, 0x00002F30
+ .word 0x00002F30, 0x00002F44
+ .word 0x00002F44, 0x00002F58
+ .word 0x00002F58, 0x00002F6C
+ .word 0x00002F6C, 0x00002F80
+ .word 0x00002F80, 0x00002F94
+ .word 0x00002F94, 0x00002FA8
+ .word 0x00002FA8, 0x00002FBC
+ .word 0x00002FBC, 0x00002FD0
+ .word 0x00002FD0, 0x00002FE4
+ .word 0x00002FE4, 0x00002FF8
+ .word 0x00002FF8, 0x0000300C
+ .word 0x0000300C, 0x00003020
+ .word 0x00003020, 0x00003034
+ .word 0x00003034, 0x00003048
+ .word 0x00003048, 0x0000305C
+ .word 0x0000305C, 0x00003070
+ .word 0x00003070, 0x00003084
+ .word 0x00003084, 0x00003098
+ .word 0x00003098, 0x000030AC
+ .word 0x000030AC, 0x000030C0
+ .word 0x000030C0, 0x000030D4
+ .word 0x000030D4, 0x000030E8
+ .word 0x000030E8, 0x000030FC
+ .word 0x000030FC, 0x00003110
+ .word 0x00003110, 0x00003124
+ .word 0x00003124, 0x00003138
+ .word 0x00003138, 0x0000314C
+ .word 0x0000314C, 0x00003160
+ .word 0x00003160, 0x00003174
+ .word 0x00003174, 0x00003188
+ .word 0x00003188, 0x0000319C
+ .word 0x0000319C, 0x000031B0
+ .word 0x000031B0, 0x000031C4
+ .word 0x000031C4, 0x000031D8
+ .word 0x000031D8, 0x000031EC
+ .word 0x000031EC, 0x00003200
+ .word 0x00003200, 0x00003214
+ .word 0x00003214, 0x00003228
+ .word 0x00003228, 0x0000323C
+ .word 0x0000323C, 0x00003250
+ .word 0x00003250, 0x00003264
+ .word 0x00003264, 0x00003278
+ .word 0x00003278, 0x0000328C
+ .word 0x0000328C, 0x000032A0
+ .word 0x000032A0, 0x000032B4
+ .word 0x000032B4, 0x000032C8
+ .word 0x000032C8, 0x000032DC
+ .word 0x000032DC, 0x000032F0
+ .word 0x000032F0, 0x00003304
+ .word 0x00003304, 0x00003318
+ .word 0x00003318, 0x0000332C
+ .word 0x0000332C, 0x00003340
+ .word 0x00003340, 0x00003354
+ .word 0x00003354, 0x00003368
+ .word 0x00003368, 0x0000337C
+ .word 0x0000337C, 0x00003390
+ .word 0x00003390, 0x000033A4
+ .word 0x000033A4, 0x000033B8
+ .word 0x000033B8, 0x000033CC
+ .word 0x000033CC, 0x000033E0
+ .word 0x000033E0, 0x000033F4
+ .word 0x000033F4, 0x00003408
+ .word 0x00003408, 0x0000341C
+ .word 0x0000341C, 0x00003430
+ .word 0x00003430, 0x00003444
+ .word 0x00003444, 0x00003458
+ .word 0x00003458, 0x0000346C
+ .word 0x0000346C, 0x00003480
+ .word 0x00003480, 0x00003494
+ .word 0x00003494, 0x000034A8
+ .word 0x000034A8, 0x000034BC
+ .word 0x000034BC, 0x000034D0
+ .word 0x000034D0, 0x000034E4
+ .word 0x000034E4, 0x000034F8
+ .word 0x000034F8, 0x0000350C
+ .word 0x0000350C, 0x00003520
+ .word 0x00003520, 0x00003534
+ .word 0x00003534, 0x00003548
+ .word 0x00003548, 0x0000355C
+ .word 0x0000355C, 0x00003570
+ .word 0x00003570, 0x00003584
+ .word 0x00003584, 0x00003598
+ .word 0x00003598, 0x000035AC
+ .word 0x000035AC, 0x000035C0
+ .word 0x000035C0, 0x000035D4
+ .word 0x000035D4, 0x000035E8
+ .word 0x000035E8, 0x000035FC
+ .word 0x000035FC, 0x00003610
+ .word 0x00003610, 0x00003624
+ .word 0x00003624, 0x00003638
+ .word 0x00003638, 0x0000364C
+ .word 0x0000364C, 0x00003660
+ .word 0x00003660, 0x00003674
+ .word 0x00003674, 0x00003688
+ .word 0x00003688, 0x0000369C
+ .word 0x0000369C, 0x000036B0
+ .word 0x000036B0, 0x000036C4
+ .word 0x000036C4, 0x000036D8
+ .word 0x000036D8, 0x000036EC
+ .word 0x000036EC, 0x00003700
+ .word 0x00003700, 0x00003714
+ .word 0x00003714, 0x00003728
+ .word 0x00003728, 0x0000373C
+ .word 0x0000373C, 0x00003750
+ .word 0x00003750, 0x00003764
+ .word 0x00003764, 0x00003778
+ .word 0x00003778, 0x0000378C
+ .word 0x0000378C, 0x000037A0
+ .word 0x000037A0, 0x000037B4
+ .word 0x000037B4, 0x000037C8
+ .word 0x000037C8, 0x000037DC
+ .word 0x000037DC, 0x000037F0
+ .word 0x000037F0, 0x00003804
+ .word 0x00003804, 0x00003818
+ .word 0x00003818, 0x0000382C
+ .word 0x0000382C, 0x00003840
+ .word 0x00003840, 0x00003854
+ .word 0x00003854, 0x00003868
+ .word 0x00003868, 0x0000387C
+ .word 0x0000387C, 0x00003890
+ .word 0x00003890, 0x000038A4
+ .word 0x000038A4, 0x000038B8
+ .word 0x000038B8, 0x000038CC
+ .word 0x000038CC, 0x000038E0
+ .word 0x000038E0, 0x000038F4
+ .word 0x000038F4, 0x00003908
+ .word 0x00003908, 0x0000391C
+ .word 0x0000391C, 0x00003930
+ .word 0x00003930, 0x00003944
+ .word 0x00003944, 0x00003958
+ .word 0x00003958, 0x0000396C
+ .word 0x0000396C, 0x00003980
+ .word 0x00003980, 0x00003994
+ .word 0x00003994, 0x000039A8
+ .word 0x000039A8, 0x000039BC
+ .word 0x000039BC, 0x000039D0
+ .word 0x000039D0, 0x000039E4
+ .word 0x000039E4, 0x000039F8
+ .word 0x000039F8, 0x00003A0C
+ .word 0x00003A0C, 0x00003A20
+ .word 0x00003A20, 0x00003A34
+ .word 0x00003A34, 0x00003A48
+ .word 0x00003A48, 0x00003A5C
+ .word 0x00003A5C, 0x00003A70
+ .word 0x00003A70, 0x00003A84
+ .word 0x00003A84, 0x00003A98
+ .word 0x00003A98, 0x00003AAC
+ .word 0x00003AAC, 0x00003AC0
+ .word 0x00003AC0, 0x00003AD4
+ .word 0x00003AD4, 0x00003AE8
+ .word 0x00003AE8, 0x00003AFC
+ .word 0x00003AFC, 0x00003B10
+ .word 0x00003B10, 0x00003B24
+ .word 0x00003B24, 0x00003B38
+ .word 0x00003B38, 0x00003B4C
+ .word 0x00003B4C, 0x00003B60
+ .word 0x00003B60, 0x00003B74
+ .word 0x00003B74, 0x00003B88
+ .word 0x00003B88, 0x00003B9C
+ .word 0x00003B9C, 0x00003BB0
+ .word 0x00003BB0, 0x00003BC4
+ .word 0x00003BC4, 0x00003BD8
+ .word 0x00003BD8, 0x00003BEC
+ .word 0x00003BEC, 0x00003C00
+ .word 0x00003C00, 0x00003C14
+ .word 0x00003C14, 0x00003C28
+ .word 0x00003C28, 0x00003C3C
+ .word 0x00003C3C, 0x00003C50
+ .word 0x00003C50, 0x00003C64
+ .word 0x00003C64, 0x00003C78
+ .word 0x00003C78, 0x00003C8C
+ .word 0x00003C8C, 0x00003CA0
+ .word 0x00003CA0, 0x00003CB4
+ .word 0x00003CB4, 0x00003CC8
+ .word 0x00003CC8, 0x00003CDC
+ .word 0x00003CDC, 0x00003CF0
+ .word 0x00003CF0, 0x00003D04
+ .word 0x00003D04, 0x00003D18
+ .word 0x00003D18, 0x00003D2C
+ .word 0x00003D2C, 0x00003D40
+ .word 0x00003D40, 0x00003D54
+ .word 0x00003D54, 0x00003D68
+ .word 0x00003D68, 0x00003D7C
+ .word 0x00003D7C, 0x00003D90
+ .word 0x00003D90, 0x00003DA4
+ .word 0x00003DA4, 0x00003DB8
+ .word 0x00003DB8, 0x00003DCC
+ .word 0x00003DCC, 0x00003DE0
+ .word 0x00003DE0, 0x00003DF4
+ .word 0x00003DF4, 0x00003E08
+ .word 0x00003E08, 0x00003E1C
+ .word 0x00003E1C, 0x00003E30
+ .word 0x00003E30, 0x00003E44
+ .word 0x00003E44, 0x00003E58
+ .word 0x00003E58, 0x00003E6C
+ .word 0x00003E6C, 0x00003E80
+ .word 0x00003E80, 0x00003E94
+ .word 0x00003E94, 0x00003EA8
+ .word 0x00003EA8, 0x00003EBC
+ .word 0x00003EBC, 0x00003ED0
+ .word 0x00003ED0, 0x00003EE4
+ .word 0x00003EE4, 0x00003EF8
+ .word 0x00003EF8, 0x00003F0C
+ .word 0x00003F0C, 0x00003F20
+ .word 0x00003F20, 0x00003F34
+ .word 0x00003F34, 0x00003F48
+ .word 0x00003F48, 0x00003F5C
+ .word 0x00003F5C, 0x00003F70
+ .word 0x00003F70, 0x00003F84
+ .word 0x00003F84, 0x00003F98
+ .word 0x00003F98, 0x00003FAC
+ .word 0x00003FAC, 0x00003FC0
+ .word 0x00003FC0, 0x00003FD4
+ .word 0x00003FD4, 0x00003FE8
+ .word 0x00003FE8, 0x00003FFC
+ .word 0x00003FFC, 0x00004010
+ .word 0x00004010, 0x00004024
+ .word 0x00004024, 0x00004038
+ .word 0x00004038, 0x0000404C
+ .word 0x0000404C, 0x00004060
+ .word 0x00004060, 0x00004074
+ .word 0x00004074, 0x00004088
+ .word 0x00004088, 0x0000409C
+ .word 0x0000409C, 0x000040B0
+ .word 0x000040B0, 0x000040C4
+ .word 0x000040C4, 0x000040D8
+ .word 0x000040D8, 0x000040EC
+ .word 0x000040EC, 0x00004100
+ .word 0x00004100, 0x00004114
+ .word 0x00004114, 0x00004128
+ .word 0x00004128, 0x0000413C
+ .word 0x0000413C, 0x00004150
+ .word 0x00004150, 0x00004164
+ .word 0x00004164, 0x00004178
+ .word 0x00004178, 0x0000418C
+ .word 0x0000418C, 0x000041A0
+ .word 0x000041A0, 0x000041B4
+ .word 0x000041B4, 0x000041C8
+ .word 0x000041C8, 0x000041DC
+ .word 0x000041DC, 0x000041F0
+ .word 0x000041F0, 0x00004204
+ .word 0x00004204, 0x00004218
+ .word 0x00004218, 0x0000422C
+ .word 0x0000422C, 0x00004240
+ .word 0x00004240, 0x00004254
+ .word 0x00004254, 0x00004268
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00004270 ; chunk size
+ .incbin "baserom.nds", 0x1C28CC4, 0x4268
+ .balign 512, 255
diff --git a/files/FILE_1C2D000_trpoke.narc.s b/files/FILE_1C2D000_trpoke.narc.s
new file mode 100644
index 00000000..c0556d66
--- /dev/null
+++ b/files/FILE_1C2D000_trpoke.narc.s
@@ -0,0 +1,878 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00005594 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00001A9C ; chunk size
+ .short 850 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000008
+ .word 0x00000008, 0x00000010
+ .word 0x00000010, 0x00000018
+ .word 0x00000018, 0x00000024
+ .word 0x00000024, 0x00000030
+ .word 0x00000030, 0x00000038
+ .word 0x00000038, 0x00000040
+ .word 0x00000040, 0x00000048
+ .word 0x00000048, 0x00000050
+ .word 0x00000050, 0x00000058
+ .word 0x00000058, 0x00000064
+ .word 0x00000064, 0x0000006C
+ .word 0x0000006C, 0x00000074
+ .word 0x00000074, 0x00000080
+ .word 0x00000080, 0x0000008C
+ .word 0x0000008C, 0x00000098
+ .word 0x00000098, 0x000000A8
+ .word 0x000000A8, 0x000000C4
+ .word 0x000000C4, 0x000000DC
+ .word 0x000000DC, 0x000000E4
+ .word 0x000000E4, 0x000000EC
+ .word 0x000000EC, 0x000000F4
+ .word 0x000000F4, 0x00000118
+ .word 0x00000118, 0x00000120
+ .word 0x00000120, 0x00000134
+ .word 0x00000134, 0x0000013C
+ .word 0x0000013C, 0x00000144
+ .word 0x00000144, 0x00000150
+ .word 0x00000150, 0x00000158
+ .word 0x00000158, 0x00000160
+ .word 0x00000160, 0x0000016C
+ .word 0x0000016C, 0x00000174
+ .word 0x00000174, 0x00000180
+ .word 0x00000180, 0x00000194
+ .word 0x00000194, 0x000001A4
+ .word 0x000001A4, 0x000001B4
+ .word 0x000001B4, 0x000001CC
+ .word 0x000001CC, 0x000001D8
+ .word 0x000001D8, 0x000001E4
+ .word 0x000001E4, 0x000001F0
+ .word 0x000001F0, 0x00000204
+ .word 0x00000204, 0x0000020C
+ .word 0x0000020C, 0x00000214
+ .word 0x00000214, 0x00000220
+ .word 0x00000220, 0x0000022C
+ .word 0x0000022C, 0x00000238
+ .word 0x00000238, 0x0000024C
+ .word 0x0000024C, 0x00000260
+ .word 0x00000260, 0x00000280
+ .word 0x00000280, 0x00000288
+ .word 0x00000288, 0x00000290
+ .word 0x00000290, 0x00000298
+ .word 0x00000298, 0x000002A0
+ .word 0x000002A0, 0x000002A8
+ .word 0x000002A8, 0x000002B0
+ .word 0x000002B0, 0x000002BC
+ .word 0x000002BC, 0x000002D0
+ .word 0x000002D0, 0x000002E4
+ .word 0x000002E4, 0x000002EC
+ .word 0x000002EC, 0x000002F4
+ .word 0x000002F4, 0x000002FC
+ .word 0x000002FC, 0x00000304
+ .word 0x00000304, 0x0000030C
+ .word 0x0000030C, 0x00000314
+ .word 0x00000314, 0x0000031C
+ .word 0x0000031C, 0x00000328
+ .word 0x00000328, 0x00000354
+ .word 0x00000354, 0x00000370
+ .word 0x00000370, 0x0000039C
+ .word 0x0000039C, 0x000003A4
+ .word 0x000003A4, 0x000003BC
+ .word 0x000003BC, 0x000003C8
+ .word 0x000003C8, 0x000003D0
+ .word 0x000003D0, 0x000003D8
+ .word 0x000003D8, 0x000003E4
+ .word 0x000003E4, 0x000003F0
+ .word 0x000003F0, 0x000003F8
+ .word 0x000003F8, 0x00000400
+ .word 0x00000400, 0x00000414
+ .word 0x00000414, 0x00000428
+ .word 0x00000428, 0x00000434
+ .word 0x00000434, 0x0000043C
+ .word 0x0000043C, 0x00000444
+ .word 0x00000444, 0x0000044C
+ .word 0x0000044C, 0x00000454
+ .word 0x00000454, 0x0000045C
+ .word 0x0000045C, 0x00000464
+ .word 0x00000464, 0x0000046C
+ .word 0x0000046C, 0x00000478
+ .word 0x00000478, 0x00000484
+ .word 0x00000484, 0x00000490
+ .word 0x00000490, 0x00000498
+ .word 0x00000498, 0x000004A4
+ .word 0x000004A4, 0x000004BC
+ .word 0x000004BC, 0x000004C8
+ .word 0x000004C8, 0x000004D4
+ .word 0x000004D4, 0x000004E0
+ .word 0x000004E0, 0x000004E8
+ .word 0x000004E8, 0x000004F0
+ .word 0x000004F0, 0x00000500
+ .word 0x00000500, 0x00000508
+ .word 0x00000508, 0x00000510
+ .word 0x00000510, 0x0000051C
+ .word 0x0000051C, 0x00000530
+ .word 0x00000530, 0x0000053C
+ .word 0x0000053C, 0x00000548
+ .word 0x00000548, 0x00000554
+ .word 0x00000554, 0x00000568
+ .word 0x00000568, 0x00000578
+ .word 0x00000578, 0x00000580
+ .word 0x00000580, 0x0000058C
+ .word 0x0000058C, 0x000005A0
+ .word 0x000005A0, 0x000005AC
+ .word 0x000005AC, 0x000005C0
+ .word 0x000005C0, 0x000005C8
+ .word 0x000005C8, 0x000005D0
+ .word 0x000005D0, 0x000005D8
+ .word 0x000005D8, 0x000005E0
+ .word 0x000005E0, 0x000005E8
+ .word 0x000005E8, 0x000005F4
+ .word 0x000005F4, 0x00000608
+ .word 0x00000608, 0x00000634
+ .word 0x00000634, 0x0000063C
+ .word 0x0000063C, 0x00000644
+ .word 0x00000644, 0x0000064C
+ .word 0x0000064C, 0x00000654
+ .word 0x00000654, 0x0000065C
+ .word 0x0000065C, 0x00000670
+ .word 0x00000670, 0x00000678
+ .word 0x00000678, 0x0000068C
+ .word 0x0000068C, 0x00000694
+ .word 0x00000694, 0x0000069C
+ .word 0x0000069C, 0x000006B8
+ .word 0x000006B8, 0x000006E4
+ .word 0x000006E4, 0x000006F4
+ .word 0x000006F4, 0x00000720
+ .word 0x00000720, 0x00000734
+ .word 0x00000734, 0x0000073C
+ .word 0x0000073C, 0x00000748
+ .word 0x00000748, 0x00000750
+ .word 0x00000750, 0x0000077C
+ .word 0x0000077C, 0x00000798
+ .word 0x00000798, 0x000007B0
+ .word 0x000007B0, 0x000007BC
+ .word 0x000007BC, 0x000007C8
+ .word 0x000007C8, 0x000007D0
+ .word 0x000007D0, 0x000007E8
+ .word 0x000007E8, 0x000007F4
+ .word 0x000007F4, 0x00000808
+ .word 0x00000808, 0x00000810
+ .word 0x00000810, 0x00000818
+ .word 0x00000818, 0x00000820
+ .word 0x00000820, 0x00000828
+ .word 0x00000828, 0x00000834
+ .word 0x00000834, 0x00000854
+ .word 0x00000854, 0x00000860
+ .word 0x00000860, 0x00000868
+ .word 0x00000868, 0x00000870
+ .word 0x00000870, 0x00000878
+ .word 0x00000878, 0x0000088C
+ .word 0x0000088C, 0x00000894
+ .word 0x00000894, 0x000008A0
+ .word 0x000008A0, 0x000008B8
+ .word 0x000008B8, 0x000008C4
+ .word 0x000008C4, 0x000008F0
+ .word 0x000008F0, 0x000008FC
+ .word 0x000008FC, 0x00000908
+ .word 0x00000908, 0x00000910
+ .word 0x00000910, 0x00000924
+ .word 0x00000924, 0x0000092C
+ .word 0x0000092C, 0x00000948
+ .word 0x00000948, 0x00000974
+ .word 0x00000974, 0x00000988
+ .word 0x00000988, 0x00000994
+ .word 0x00000994, 0x000009AC
+ .word 0x000009AC, 0x000009C0
+ .word 0x000009C0, 0x000009C8
+ .word 0x000009C8, 0x000009D0
+ .word 0x000009D0, 0x000009D8
+ .word 0x000009D8, 0x000009E0
+ .word 0x000009E0, 0x000009F4
+ .word 0x000009F4, 0x000009FC
+ .word 0x000009FC, 0x00000A08
+ .word 0x00000A08, 0x00000A14
+ .word 0x00000A14, 0x00000A1C
+ .word 0x00000A1C, 0x00000A28
+ .word 0x00000A28, 0x00000A3C
+ .word 0x00000A3C, 0x00000A44
+ .word 0x00000A44, 0x00000A58
+ .word 0x00000A58, 0x00000A60
+ .word 0x00000A60, 0x00000A6C
+ .word 0x00000A6C, 0x00000A80
+ .word 0x00000A80, 0x00000A8C
+ .word 0x00000A8C, 0x00000A98
+ .word 0x00000A98, 0x00000AA0
+ .word 0x00000AA0, 0x00000ABC
+ .word 0x00000ABC, 0x00000ACC
+ .word 0x00000ACC, 0x00000AD4
+ .word 0x00000AD4, 0x00000ADC
+ .word 0x00000ADC, 0x00000AE4
+ .word 0x00000AE4, 0x00000AEC
+ .word 0x00000AEC, 0x00000B00
+ .word 0x00000B00, 0x00000B14
+ .word 0x00000B14, 0x00000B20
+ .word 0x00000B20, 0x00000B28
+ .word 0x00000B28, 0x00000B38
+ .word 0x00000B38, 0x00000B48
+ .word 0x00000B48, 0x00000B54
+ .word 0x00000B54, 0x00000B5C
+ .word 0x00000B5C, 0x00000B64
+ .word 0x00000B64, 0x00000B6C
+ .word 0x00000B6C, 0x00000B74
+ .word 0x00000B74, 0x00000B7C
+ .word 0x00000B7C, 0x00000B84
+ .word 0x00000B84, 0x00000B8C
+ .word 0x00000B8C, 0x00000B94
+ .word 0x00000B94, 0x00000B9C
+ .word 0x00000B9C, 0x00000BA4
+ .word 0x00000BA4, 0x00000BAC
+ .word 0x00000BAC, 0x00000BB4
+ .word 0x00000BB4, 0x00000BBC
+ .word 0x00000BBC, 0x00000BC4
+ .word 0x00000BC4, 0x00000BCC
+ .word 0x00000BCC, 0x00000BD8
+ .word 0x00000BD8, 0x00000C04
+ .word 0x00000C04, 0x00000C14
+ .word 0x00000C14, 0x00000C30
+ .word 0x00000C30, 0x00000C4C
+ .word 0x00000C4C, 0x00000C78
+ .word 0x00000C78, 0x00000C94
+ .word 0x00000C94, 0x00000C9C
+ .word 0x00000C9C, 0x00000CB0
+ .word 0x00000CB0, 0x00000CCC
+ .word 0x00000CCC, 0x00000CD8
+ .word 0x00000CD8, 0x00000CEC
+ .word 0x00000CEC, 0x00000CF8
+ .word 0x00000CF8, 0x00000D04
+ .word 0x00000D04, 0x00000D10
+ .word 0x00000D10, 0x00000D18
+ .word 0x00000D18, 0x00000D20
+ .word 0x00000D20, 0x00000D4C
+ .word 0x00000D4C, 0x00000D54
+ .word 0x00000D54, 0x00000D5C
+ .word 0x00000D5C, 0x00000D64
+ .word 0x00000D64, 0x00000D74
+ .word 0x00000D74, 0x00000D90
+ .word 0x00000D90, 0x00000DBC
+ .word 0x00000DBC, 0x00000DD8
+ .word 0x00000DD8, 0x00000DF4
+ .word 0x00000DF4, 0x00000E10
+ .word 0x00000E10, 0x00000E40
+ .word 0x00000E40, 0x00000E48
+ .word 0x00000E48, 0x00000E50
+ .word 0x00000E50, 0x00000E58
+ .word 0x00000E58, 0x00000E60
+ .word 0x00000E60, 0x00000E68
+ .word 0x00000E68, 0x00000E94
+ .word 0x00000E94, 0x00000EA4
+ .word 0x00000EA4, 0x00000EAC
+ .word 0x00000EAC, 0x00000ED8
+ .word 0x00000ED8, 0x00000EE8
+ .word 0x00000EE8, 0x00000F38
+ .word 0x00000F38, 0x00000F88
+ .word 0x00000F88, 0x00000FD8
+ .word 0x00000FD8, 0x00001028
+ .word 0x00001028, 0x00001030
+ .word 0x00001030, 0x0000105C
+ .word 0x0000105C, 0x000010BC
+ .word 0x000010BC, 0x000010D8
+ .word 0x000010D8, 0x000010E8
+ .word 0x000010E8, 0x00001114
+ .word 0x00001114, 0x00001130
+ .word 0x00001130, 0x00001144
+ .word 0x00001144, 0x00001158
+ .word 0x00001158, 0x0000116C
+ .word 0x0000116C, 0x00001180
+ .word 0x00001180, 0x00001194
+ .word 0x00001194, 0x000011A0
+ .word 0x000011A0, 0x000011BC
+ .word 0x000011BC, 0x000011D8
+ .word 0x000011D8, 0x00001204
+ .word 0x00001204, 0x00001220
+ .word 0x00001220, 0x0000123C
+ .word 0x0000123C, 0x0000124C
+ .word 0x0000124C, 0x00001268
+ .word 0x00001268, 0x00001284
+ .word 0x00001284, 0x00001294
+ .word 0x00001294, 0x000012B0
+ .word 0x000012B0, 0x000012BC
+ .word 0x000012BC, 0x000012C8
+ .word 0x000012C8, 0x000012D4
+ .word 0x000012D4, 0x000012DC
+ .word 0x000012DC, 0x000012F0
+ .word 0x000012F0, 0x0000131C
+ .word 0x0000131C, 0x00001328
+ .word 0x00001328, 0x00001348
+ .word 0x00001348, 0x00001364
+ .word 0x00001364, 0x00001374
+ .word 0x00001374, 0x00001384
+ .word 0x00001384, 0x00001390
+ .word 0x00001390, 0x00001398
+ .word 0x00001398, 0x000013A8
+ .word 0x000013A8, 0x000013C4
+ .word 0x000013C4, 0x000013D4
+ .word 0x000013D4, 0x000013E0
+ .word 0x000013E0, 0x000013E8
+ .word 0x000013E8, 0x000013F0
+ .word 0x000013F0, 0x00001404
+ .word 0x00001404, 0x0000140C
+ .word 0x0000140C, 0x00001438
+ .word 0x00001438, 0x00001464
+ .word 0x00001464, 0x00001474
+ .word 0x00001474, 0x00001490
+ .word 0x00001490, 0x0000149C
+ .word 0x0000149C, 0x000014AC
+ .word 0x000014AC, 0x000014DC
+ .word 0x000014DC, 0x0000150C
+ .word 0x0000150C, 0x0000153C
+ .word 0x0000153C, 0x0000156C
+ .word 0x0000156C, 0x000015AC
+ .word 0x000015AC, 0x000015EC
+ .word 0x000015EC, 0x000015F4
+ .word 0x000015F4, 0x00001600
+ .word 0x00001600, 0x00001614
+ .word 0x00001614, 0x00001630
+ .word 0x00001630, 0x00001640
+ .word 0x00001640, 0x0000164C
+ .word 0x0000164C, 0x00001658
+ .word 0x00001658, 0x00001660
+ .word 0x00001660, 0x0000167C
+ .word 0x0000167C, 0x00001698
+ .word 0x00001698, 0x000016B0
+ .word 0x000016B0, 0x000016BC
+ .word 0x000016BC, 0x000016C8
+ .word 0x000016C8, 0x000016D0
+ .word 0x000016D0, 0x000016D8
+ .word 0x000016D8, 0x000016E0
+ .word 0x000016E0, 0x000016E8
+ .word 0x000016E8, 0x000016F4
+ .word 0x000016F4, 0x00001710
+ .word 0x00001710, 0x00001720
+ .word 0x00001720, 0x00001730
+ .word 0x00001730, 0x00001740
+ .word 0x00001740, 0x0000175C
+ .word 0x0000175C, 0x0000176C
+ .word 0x0000176C, 0x0000177C
+ .word 0x0000177C, 0x00001784
+ .word 0x00001784, 0x0000178C
+ .word 0x0000178C, 0x0000179C
+ .word 0x0000179C, 0x000017A4
+ .word 0x000017A4, 0x000017AC
+ .word 0x000017AC, 0x000017B4
+ .word 0x000017B4, 0x000017BC
+ .word 0x000017BC, 0x000017C4
+ .word 0x000017C4, 0x000017CC
+ .word 0x000017CC, 0x000017D4
+ .word 0x000017D4, 0x000017E4
+ .word 0x000017E4, 0x00001800
+ .word 0x00001800, 0x0000180C
+ .word 0x0000180C, 0x00001814
+ .word 0x00001814, 0x00001820
+ .word 0x00001820, 0x00001828
+ .word 0x00001828, 0x00001854
+ .word 0x00001854, 0x0000185C
+ .word 0x0000185C, 0x00001864
+ .word 0x00001864, 0x0000186C
+ .word 0x0000186C, 0x00001874
+ .word 0x00001874, 0x00001890
+ .word 0x00001890, 0x0000189C
+ .word 0x0000189C, 0x000018A4
+ .word 0x000018A4, 0x000018AC
+ .word 0x000018AC, 0x000018B8
+ .word 0x000018B8, 0x000018C0
+ .word 0x000018C0, 0x000018CC
+ .word 0x000018CC, 0x000018D4
+ .word 0x000018D4, 0x000018DC
+ .word 0x000018DC, 0x000018E4
+ .word 0x000018E4, 0x000018F4
+ .word 0x000018F4, 0x00001910
+ .word 0x00001910, 0x0000192C
+ .word 0x0000192C, 0x00001948
+ .word 0x00001948, 0x0000195C
+ .word 0x0000195C, 0x00001970
+ .word 0x00001970, 0x00001984
+ .word 0x00001984, 0x0000198C
+ .word 0x0000198C, 0x00001994
+ .word 0x00001994, 0x000019A0
+ .word 0x000019A0, 0x000019A8
+ .word 0x000019A8, 0x000019D4
+ .word 0x000019D4, 0x00001A00
+ .word 0x00001A00, 0x00001A1C
+ .word 0x00001A1C, 0x00001A24
+ .word 0x00001A24, 0x00001A40
+ .word 0x00001A40, 0x00001A6C
+ .word 0x00001A6C, 0x00001A98
+ .word 0x00001A98, 0x00001AA0
+ .word 0x00001AA0, 0x00001AA8
+ .word 0x00001AA8, 0x00001AB0
+ .word 0x00001AB0, 0x00001AC0
+ .word 0x00001AC0, 0x00001ACC
+ .word 0x00001ACC, 0x00001AD8
+ .word 0x00001AD8, 0x00001AE8
+ .word 0x00001AE8, 0x00001AF0
+ .word 0x00001AF0, 0x00001B20
+ .word 0x00001B20, 0x00001B60
+ .word 0x00001B60, 0x00001B90
+ .word 0x00001B90, 0x00001BB0
+ .word 0x00001BB0, 0x00001BE0
+ .word 0x00001BE0, 0x00001C10
+ .word 0x00001C10, 0x00001C40
+ .word 0x00001C40, 0x00001C5C
+ .word 0x00001C5C, 0x00001C64
+ .word 0x00001C64, 0x00001C80
+ .word 0x00001C80, 0x00001C88
+ .word 0x00001C88, 0x00001C98
+ .word 0x00001C98, 0x00001CA0
+ .word 0x00001CA0, 0x00001CAC
+ .word 0x00001CAC, 0x00001CB8
+ .word 0x00001CB8, 0x00001CCC
+ .word 0x00001CCC, 0x00001CD4
+ .word 0x00001CD4, 0x00001CE0
+ .word 0x00001CE0, 0x00001CEC
+ .word 0x00001CEC, 0x00001CFC
+ .word 0x00001CFC, 0x00001D28
+ .word 0x00001D28, 0x00001D30
+ .word 0x00001D30, 0x00001D3C
+ .word 0x00001D3C, 0x00001D68
+ .word 0x00001D68, 0x00001D74
+ .word 0x00001D74, 0x00001D7C
+ .word 0x00001D7C, 0x00001D84
+ .word 0x00001D84, 0x00001D90
+ .word 0x00001D90, 0x00001D9C
+ .word 0x00001D9C, 0x00001DA4
+ .word 0x00001DA4, 0x00001DAC
+ .word 0x00001DAC, 0x00001DB4
+ .word 0x00001DB4, 0x00001DBC
+ .word 0x00001DBC, 0x00001DC4
+ .word 0x00001DC4, 0x00001DCC
+ .word 0x00001DCC, 0x00001DD4
+ .word 0x00001DD4, 0x00001DDC
+ .word 0x00001DDC, 0x00001DE4
+ .word 0x00001DE4, 0x00001DEC
+ .word 0x00001DEC, 0x00001DF4
+ .word 0x00001DF4, 0x00001E00
+ .word 0x00001E00, 0x00001E08
+ .word 0x00001E08, 0x00001E10
+ .word 0x00001E10, 0x00001E1C
+ .word 0x00001E1C, 0x00001E28
+ .word 0x00001E28, 0x00001E30
+ .word 0x00001E30, 0x00001E38
+ .word 0x00001E38, 0x00001E40
+ .word 0x00001E40, 0x00001E4C
+ .word 0x00001E4C, 0x00001E60
+ .word 0x00001E60, 0x00001E6C
+ .word 0x00001E6C, 0x00001E78
+ .word 0x00001E78, 0x00001E80
+ .word 0x00001E80, 0x00001E90
+ .word 0x00001E90, 0x00001EAC
+ .word 0x00001EAC, 0x00001EC8
+ .word 0x00001EC8, 0x00001ED8
+ .word 0x00001ED8, 0x00001EE0
+ .word 0x00001EE0, 0x00001EE8
+ .word 0x00001EE8, 0x00001EF0
+ .word 0x00001EF0, 0x00001EF8
+ .word 0x00001EF8, 0x00001F00
+ .word 0x00001F00, 0x00001F0C
+ .word 0x00001F0C, 0x00001F14
+ .word 0x00001F14, 0x00001F1C
+ .word 0x00001F1C, 0x00001F24
+ .word 0x00001F24, 0x00001F2C
+ .word 0x00001F2C, 0x00001F64
+ .word 0x00001F64, 0x00001F9C
+ .word 0x00001F9C, 0x00001FD4
+ .word 0x00001FD4, 0x0000200C
+ .word 0x0000200C, 0x00002044
+ .word 0x00002044, 0x0000207C
+ .word 0x0000207C, 0x000020C4
+ .word 0x000020C4, 0x0000210C
+ .word 0x0000210C, 0x00002154
+ .word 0x00002154, 0x000021A8
+ .word 0x000021A8, 0x000021FC
+ .word 0x000021FC, 0x00002250
+ .word 0x00002250, 0x00002264
+ .word 0x00002264, 0x00002290
+ .word 0x00002290, 0x00002298
+ .word 0x00002298, 0x000022A0
+ .word 0x000022A0, 0x000022BC
+ .word 0x000022BC, 0x000022C4
+ .word 0x000022C4, 0x000022D8
+ .word 0x000022D8, 0x000022E4
+ .word 0x000022E4, 0x000022EC
+ .word 0x000022EC, 0x000022F4
+ .word 0x000022F4, 0x000022FC
+ .word 0x000022FC, 0x00002304
+ .word 0x00002304, 0x0000230C
+ .word 0x0000230C, 0x00002314
+ .word 0x00002314, 0x00002328
+ .word 0x00002328, 0x00002338
+ .word 0x00002338, 0x00002354
+ .word 0x00002354, 0x00002380
+ .word 0x00002380, 0x000023AC
+ .word 0x000023AC, 0x000023B4
+ .word 0x000023B4, 0x000023BC
+ .word 0x000023BC, 0x000023C8
+ .word 0x000023C8, 0x000023D0
+ .word 0x000023D0, 0x000023DC
+ .word 0x000023DC, 0x000023F0
+ .word 0x000023F0, 0x000023F8
+ .word 0x000023F8, 0x00002404
+ .word 0x00002404, 0x0000240C
+ .word 0x0000240C, 0x00002420
+ .word 0x00002420, 0x00002428
+ .word 0x00002428, 0x00002434
+ .word 0x00002434, 0x00002440
+ .word 0x00002440, 0x0000244C
+ .word 0x0000244C, 0x00002454
+ .word 0x00002454, 0x00002468
+ .word 0x00002468, 0x00002474
+ .word 0x00002474, 0x00002488
+ .word 0x00002488, 0x00002490
+ .word 0x00002490, 0x0000249C
+ .word 0x0000249C, 0x000024A8
+ .word 0x000024A8, 0x000024BC
+ .word 0x000024BC, 0x000024C4
+ .word 0x000024C4, 0x000024D8
+ .word 0x000024D8, 0x000024E4
+ .word 0x000024E4, 0x000024F8
+ .word 0x000024F8, 0x00002504
+ .word 0x00002504, 0x00002534
+ .word 0x00002534, 0x0000253C
+ .word 0x0000253C, 0x00002550
+ .word 0x00002550, 0x00002558
+ .word 0x00002558, 0x0000256C
+ .word 0x0000256C, 0x00002578
+ .word 0x00002578, 0x00002584
+ .word 0x00002584, 0x0000258C
+ .word 0x0000258C, 0x00002594
+ .word 0x00002594, 0x000025A0
+ .word 0x000025A0, 0x000025AC
+ .word 0x000025AC, 0x000025C0
+ .word 0x000025C0, 0x000025CC
+ .word 0x000025CC, 0x000025E8
+ .word 0x000025E8, 0x000025F4
+ .word 0x000025F4, 0x00002600
+ .word 0x00002600, 0x0000260C
+ .word 0x0000260C, 0x00002614
+ .word 0x00002614, 0x00002620
+ .word 0x00002620, 0x00002628
+ .word 0x00002628, 0x00002638
+ .word 0x00002638, 0x00002640
+ .word 0x00002640, 0x00002648
+ .word 0x00002648, 0x00002650
+ .word 0x00002650, 0x0000266C
+ .word 0x0000266C, 0x00002680
+ .word 0x00002680, 0x0000268C
+ .word 0x0000268C, 0x00002698
+ .word 0x00002698, 0x000026AC
+ .word 0x000026AC, 0x000026B8
+ .word 0x000026B8, 0x000026C0
+ .word 0x000026C0, 0x000026C8
+ .word 0x000026C8, 0x000026D4
+ .word 0x000026D4, 0x000026E8
+ .word 0x000026E8, 0x000026F4
+ .word 0x000026F4, 0x00002710
+ .word 0x00002710, 0x00002720
+ .word 0x00002720, 0x0000273C
+ .word 0x0000273C, 0x00002758
+ .word 0x00002758, 0x00002774
+ .word 0x00002774, 0x00002784
+ .word 0x00002784, 0x000027A0
+ .word 0x000027A0, 0x000027BC
+ .word 0x000027BC, 0x000027D8
+ .word 0x000027D8, 0x000027E8
+ .word 0x000027E8, 0x00002804
+ .word 0x00002804, 0x00002830
+ .word 0x00002830, 0x0000284C
+ .word 0x0000284C, 0x00002878
+ .word 0x00002878, 0x00002894
+ .word 0x00002894, 0x000028A4
+ .word 0x000028A4, 0x000028C0
+ .word 0x000028C0, 0x000028D0
+ .word 0x000028D0, 0x000028FC
+ .word 0x000028FC, 0x00002918
+ .word 0x00002918, 0x00002924
+ .word 0x00002924, 0x00002930
+ .word 0x00002930, 0x0000293C
+ .word 0x0000293C, 0x00002948
+ .word 0x00002948, 0x0000295C
+ .word 0x0000295C, 0x00002968
+ .word 0x00002968, 0x0000297C
+ .word 0x0000297C, 0x00002984
+ .word 0x00002984, 0x00002990
+ .word 0x00002990, 0x0000299C
+ .word 0x0000299C, 0x000029A4
+ .word 0x000029A4, 0x000029B0
+ .word 0x000029B0, 0x000029BC
+ .word 0x000029BC, 0x000029C8
+ .word 0x000029C8, 0x000029D4
+ .word 0x000029D4, 0x000029DC
+ .word 0x000029DC, 0x000029E8
+ .word 0x000029E8, 0x000029FC
+ .word 0x000029FC, 0x00002A08
+ .word 0x00002A08, 0x00002A14
+ .word 0x00002A14, 0x00002A20
+ .word 0x00002A20, 0x00002A34
+ .word 0x00002A34, 0x00002A3C
+ .word 0x00002A3C, 0x00002A68
+ .word 0x00002A68, 0x00002ABC
+ .word 0x00002ABC, 0x00002ACC
+ .word 0x00002ACC, 0x00002ADC
+ .word 0x00002ADC, 0x00002AEC
+ .word 0x00002AEC, 0x00002AFC
+ .word 0x00002AFC, 0x00002B0C
+ .word 0x00002B0C, 0x00002B1C
+ .word 0x00002B1C, 0x00002B2C
+ .word 0x00002B2C, 0x00002B3C
+ .word 0x00002B3C, 0x00002B4C
+ .word 0x00002B4C, 0x00002B5C
+ .word 0x00002B5C, 0x00002B6C
+ .word 0x00002B6C, 0x00002BC0
+ .word 0x00002BC0, 0x00002C14
+ .word 0x00002C14, 0x00002C40
+ .word 0x00002C40, 0x00002C6C
+ .word 0x00002C6C, 0x00002C98
+ .word 0x00002C98, 0x00002CC4
+ .word 0x00002CC4, 0x00002CF0
+ .word 0x00002CF0, 0x00002D1C
+ .word 0x00002D1C, 0x00002D24
+ .word 0x00002D24, 0x00002D2C
+ .word 0x00002D2C, 0x00002D34
+ .word 0x00002D34, 0x00002D40
+ .word 0x00002D40, 0x00002D4C
+ .word 0x00002D4C, 0x00002D58
+ .word 0x00002D58, 0x00002D64
+ .word 0x00002D64, 0x00002D70
+ .word 0x00002D70, 0x00002D7C
+ .word 0x00002D7C, 0x00002D88
+ .word 0x00002D88, 0x00002D94
+ .word 0x00002D94, 0x00002DA0
+ .word 0x00002DA0, 0x00002DB4
+ .word 0x00002DB4, 0x00002DC8
+ .word 0x00002DC8, 0x00002DDC
+ .word 0x00002DDC, 0x00002DF0
+ .word 0x00002DF0, 0x00002E04
+ .word 0x00002E04, 0x00002E18
+ .word 0x00002E18, 0x00002E28
+ .word 0x00002E28, 0x00002E38
+ .word 0x00002E38, 0x00002E48
+ .word 0x00002E48, 0x00002E74
+ .word 0x00002E74, 0x00002E90
+ .word 0x00002E90, 0x00002EA4
+ .word 0x00002EA4, 0x00002EAC
+ .word 0x00002EAC, 0x00002EB4
+ .word 0x00002EB4, 0x00002EC0
+ .word 0x00002EC0, 0x00002ECC
+ .word 0x00002ECC, 0x00002ED8
+ .word 0x00002ED8, 0x00002EE0
+ .word 0x00002EE0, 0x00002EE8
+ .word 0x00002EE8, 0x00002EF0
+ .word 0x00002EF0, 0x00002EF8
+ .word 0x00002EF8, 0x00002F00
+ .word 0x00002F00, 0x00002F0C
+ .word 0x00002F0C, 0x00002F18
+ .word 0x00002F18, 0x00002F34
+ .word 0x00002F34, 0x00002F60
+ .word 0x00002F60, 0x00002F8C
+ .word 0x00002F8C, 0x00002FA8
+ .word 0x00002FA8, 0x00002FB8
+ .word 0x00002FB8, 0x00002FE4
+ .word 0x00002FE4, 0x00003000
+ .word 0x00003000, 0x0000301C
+ .word 0x0000301C, 0x00003038
+ .word 0x00003038, 0x00003064
+ .word 0x00003064, 0x00003070
+ .word 0x00003070, 0x0000307C
+ .word 0x0000307C, 0x00003088
+ .word 0x00003088, 0x00003094
+ .word 0x00003094, 0x000030A8
+ .word 0x000030A8, 0x000030BC
+ .word 0x000030BC, 0x000030C8
+ .word 0x000030C8, 0x000030D4
+ .word 0x000030D4, 0x000030E8
+ .word 0x000030E8, 0x000030FC
+ .word 0x000030FC, 0x00003104
+ .word 0x00003104, 0x0000310C
+ .word 0x0000310C, 0x00003118
+ .word 0x00003118, 0x00003124
+ .word 0x00003124, 0x00003130
+ .word 0x00003130, 0x0000313C
+ .word 0x0000313C, 0x00003168
+ .word 0x00003168, 0x00003194
+ .word 0x00003194, 0x0000319C
+ .word 0x0000319C, 0x000031A4
+ .word 0x000031A4, 0x000031AC
+ .word 0x000031AC, 0x000031B4
+ .word 0x000031B4, 0x000031BC
+ .word 0x000031BC, 0x000031C4
+ .word 0x000031C4, 0x000031D8
+ .word 0x000031D8, 0x000031EC
+ .word 0x000031EC, 0x000031F4
+ .word 0x000031F4, 0x00003208
+ .word 0x00003208, 0x00003210
+ .word 0x00003210, 0x00003218
+ .word 0x00003218, 0x00003220
+ .word 0x00003220, 0x00003228
+ .word 0x00003228, 0x00003230
+ .word 0x00003230, 0x0000323C
+ .word 0x0000323C, 0x00003248
+ .word 0x00003248, 0x00003254
+ .word 0x00003254, 0x00003260
+ .word 0x00003260, 0x0000326C
+ .word 0x0000326C, 0x00003278
+ .word 0x00003278, 0x00003284
+ .word 0x00003284, 0x00003290
+ .word 0x00003290, 0x0000329C
+ .word 0x0000329C, 0x000032A8
+ .word 0x000032A8, 0x000032B4
+ .word 0x000032B4, 0x000032C0
+ .word 0x000032C0, 0x000032D0
+ .word 0x000032D0, 0x000032E0
+ .word 0x000032E0, 0x000032F0
+ .word 0x000032F0, 0x000032F8
+ .word 0x000032F8, 0x00003300
+ .word 0x00003300, 0x00003308
+ .word 0x00003308, 0x00003314
+ .word 0x00003314, 0x00003320
+ .word 0x00003320, 0x0000332C
+ .word 0x0000332C, 0x00003334
+ .word 0x00003334, 0x0000333C
+ .word 0x0000333C, 0x00003344
+ .word 0x00003344, 0x0000334C
+ .word 0x0000334C, 0x00003354
+ .word 0x00003354, 0x00003360
+ .word 0x00003360, 0x0000336C
+ .word 0x0000336C, 0x00003378
+ .word 0x00003378, 0x00003384
+ .word 0x00003384, 0x00003390
+ .word 0x00003390, 0x0000339C
+ .word 0x0000339C, 0x000033A8
+ .word 0x000033A8, 0x000033B4
+ .word 0x000033B4, 0x000033C0
+ .word 0x000033C0, 0x000033CC
+ .word 0x000033CC, 0x000033E0
+ .word 0x000033E0, 0x000033EC
+ .word 0x000033EC, 0x000033F8
+ .word 0x000033F8, 0x00003404
+ .word 0x00003404, 0x00003418
+ .word 0x00003418, 0x0000342C
+ .word 0x0000342C, 0x00003440
+ .word 0x00003440, 0x00003448
+ .word 0x00003448, 0x00003450
+ .word 0x00003450, 0x00003458
+ .word 0x00003458, 0x00003460
+ .word 0x00003460, 0x0000346C
+ .word 0x0000346C, 0x00003478
+ .word 0x00003478, 0x00003480
+ .word 0x00003480, 0x00003488
+ .word 0x00003488, 0x00003490
+ .word 0x00003490, 0x00003498
+ .word 0x00003498, 0x000034A4
+ .word 0x000034A4, 0x000034B0
+ .word 0x000034B0, 0x000034BC
+ .word 0x000034BC, 0x000034C4
+ .word 0x000034C4, 0x000034D0
+ .word 0x000034D0, 0x000034DC
+ .word 0x000034DC, 0x000034E4
+ .word 0x000034E4, 0x000034EC
+ .word 0x000034EC, 0x000034F4
+ .word 0x000034F4, 0x000034FC
+ .word 0x000034FC, 0x00003504
+ .word 0x00003504, 0x0000350C
+ .word 0x0000350C, 0x00003520
+ .word 0x00003520, 0x00003534
+ .word 0x00003534, 0x00003544
+ .word 0x00003544, 0x00003570
+ .word 0x00003570, 0x00003580
+ .word 0x00003580, 0x000035AC
+ .word 0x000035AC, 0x000035D8
+ .word 0x000035D8, 0x000035E0
+ .word 0x000035E0, 0x000035E8
+ .word 0x000035E8, 0x000035F0
+ .word 0x000035F0, 0x000035F8
+ .word 0x000035F8, 0x00003600
+ .word 0x00003600, 0x00003608
+ .word 0x00003608, 0x00003610
+ .word 0x00003610, 0x00003618
+ .word 0x00003618, 0x00003620
+ .word 0x00003620, 0x00003628
+ .word 0x00003628, 0x00003630
+ .word 0x00003630, 0x00003638
+ .word 0x00003638, 0x00003640
+ .word 0x00003640, 0x00003648
+ .word 0x00003648, 0x00003650
+ .word 0x00003650, 0x00003658
+ .word 0x00003658, 0x00003660
+ .word 0x00003660, 0x0000366C
+ .word 0x0000366C, 0x00003678
+ .word 0x00003678, 0x00003684
+ .word 0x00003684, 0x00003690
+ .word 0x00003690, 0x00003698
+ .word 0x00003698, 0x000036A0
+ .word 0x000036A0, 0x000036A8
+ .word 0x000036A8, 0x000036B0
+ .word 0x000036B0, 0x000036B8
+ .word 0x000036B8, 0x000036C0
+ .word 0x000036C0, 0x000036C8
+ .word 0x000036C8, 0x000036D0
+ .word 0x000036D0, 0x000036D8
+ .word 0x000036D8, 0x000036E0
+ .word 0x000036E0, 0x000036E8
+ .word 0x000036E8, 0x000036F0
+ .word 0x000036F0, 0x000036F8
+ .word 0x000036F8, 0x00003700
+ .word 0x00003700, 0x00003708
+ .word 0x00003708, 0x00003710
+ .word 0x00003710, 0x00003718
+ .word 0x00003718, 0x00003720
+ .word 0x00003720, 0x0000372C
+ .word 0x0000372C, 0x00003748
+ .word 0x00003748, 0x00003754
+ .word 0x00003754, 0x00003760
+ .word 0x00003760, 0x0000377C
+ .word 0x0000377C, 0x00003788
+ .word 0x00003788, 0x00003794
+ .word 0x00003794, 0x000037A0
+ .word 0x000037A0, 0x000037BC
+ .word 0x000037BC, 0x000037C4
+ .word 0x000037C4, 0x000037D4
+ .word 0x000037D4, 0x000037E4
+ .word 0x000037E4, 0x000037F4
+ .word 0x000037F4, 0x00003810
+ .word 0x00003810, 0x00003820
+ .word 0x00003820, 0x0000382C
+ .word 0x0000382C, 0x00003858
+ .word 0x00003858, 0x0000386C
+ .word 0x0000386C, 0x00003880
+ .word 0x00003880, 0x00003894
+ .word 0x00003894, 0x000038E8
+ .word 0x000038E8, 0x0000393C
+ .word 0x0000393C, 0x00003990
+ .word 0x00003990, 0x000039E4
+ .word 0x000039E4, 0x00003A38
+ .word 0x00003A38, 0x00003A8C
+ .word 0x00003A8C, 0x00003A94
+ .word 0x00003A94, 0x00003AA0
+ .word 0x00003AA0, 0x00003AA8
+ .word 0x00003AA8, 0x00003AB0
+ .word 0x00003AB0, 0x00003AB8
+ .word 0x00003AB8, 0x00003AC4
+ .word 0x00003AC4, 0x00003AD0
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00003AD8 ; chunk size
+ .incbin "baserom.nds", 0x1C2EAC4, 0x3AD0
+ .balign 512, 255
diff --git a/files/FILE_1C32600_trtbl.narc.s b/files/FILE_1C32600_trtbl.narc.s
new file mode 100644
index 00000000..b3c8b62a
--- /dev/null
+++ b/files/FILE_1C32600_trtbl.narc.s
@@ -0,0 +1,29 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00002584 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000014 ; chunk size
+ .short 1 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00002548
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00002550 ; chunk size
+ .incbin "baserom.nds", 0x1C3263C, 0x2548
+ .balign 512, 255
diff --git a/files/FILE_1C34C00_trtblofs.narc.s b/files/FILE_1C34C00_trtblofs.narc.s
new file mode 100644
index 00000000..cbed8993
--- /dev/null
+++ b/files/FILE_1C34C00_trtblofs.narc.s
@@ -0,0 +1,29 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x000006E0 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000014 ; chunk size
+ .short 1 ; number of files
+ .balign 4
+ .word 0x00000000, 0x000006A4
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x000006AC ; chunk size
+ .incbin "baserom.nds", 0x1C34C3C, 0x6A4
+ .balign 512, 255
diff --git a/files/FILE_1C35400_b_bag_gra.narc.s b/files/FILE_1C35400_b_bag_gra.narc.s
new file mode 100644
index 00000000..0d54fd18
--- /dev/null
+++ b/files/FILE_1C35400_b_bag_gra.narc.s
@@ -0,0 +1,32 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00004F04 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x0000002C ; chunk size
+ .short 4 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00002024
+ .word 0x00002024, 0x00003048
+ .word 0x00003048, 0x00004C88
+ .word 0x00004C88, 0x00004EB0
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00004EB8 ; chunk size
+ .incbin "baserom.nds", 0x1C35454, 0x4EB0
+ .balign 512, 255
diff --git a/files/FILE_1C3A400_b_plist_gra.narc.s b/files/FILE_1C3A400_b_plist_gra.narc.s
new file mode 100644
index 00000000..f76d6178
--- /dev/null
+++ b/files/FILE_1C3A400_b_plist_gra.narc.s
@@ -0,0 +1,56 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x000122A8 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x000000EC ; chunk size
+ .short 28 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000624
+ .word 0x00000624, 0x00000C48
+ .word 0x00000C48, 0x0000126C
+ .word 0x0000126C, 0x00001890
+ .word 0x00001890, 0x00001EB4
+ .word 0x00001EB4, 0x000024D8
+ .word 0x000024D8, 0x00002AFC
+ .word 0x00002AFC, 0x00003120
+ .word 0x00003120, 0x00003744
+ .word 0x00003744, 0x00003D68
+ .word 0x00003D68, 0x0000438C
+ .word 0x0000438C, 0x000049B0
+ .word 0x000049B0, 0x00004FD4
+ .word 0x00004FD4, 0x000055F8
+ .word 0x000055F8, 0x00005C1C
+ .word 0x00005C1C, 0x00006240
+ .word 0x00006240, 0x00006864
+ .word 0x00006864, 0x00006E88
+ .word 0x00006E88, 0x000074AC
+ .word 0x000074AC, 0x00007AD0
+ .word 0x00007AD0, 0x00008A34
+ .word 0x00008A34, 0x00009A18
+ .word 0x00009A18, 0x00011A58
+ .word 0x00011A58, 0x00011C80
+ .word 0x00011C80, 0x00011D9B
+ .word 0x00011D9C, 0x00011E9B
+ .word 0x00011E9C, 0x00011F6C
+ .word 0x00011F6C, 0x00012194
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x0001219C ; chunk size
+ .incbin "baserom.nds", 0x1C3A514, 0x12194
+ .balign 512, 255
diff --git a/files/FILE_1C4C800_batt_bg.narc.s b/files/FILE_1C4C800_batt_bg.narc.s
new file mode 100644
index 00000000..93cb0727
--- /dev/null
+++ b/files/FILE_1C4C800_batt_bg.narc.s
@@ -0,0 +1,285 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x0009C47C ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000814 ; chunk size
+ .short 257 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000FC4
+ .word 0x00000FC4, 0x0000110C
+ .word 0x0000110C, 0x00001D2C
+ .word 0x00001D2C, 0x00004A74
+ .word 0x00004A74, 0x00007BA0
+ .word 0x00007BA0, 0x0000C1F0
+ .word 0x0000C1F0, 0x000114A4
+ .word 0x000114A4, 0x00015D24
+ .word 0x00015D24, 0x0001A980
+ .word 0x0001A980, 0x0001E654
+ .word 0x0001E654, 0x00021EC0
+ .word 0x00021EC0, 0x00026484
+ .word 0x00026484, 0x00029500
+ .word 0x00029500, 0x0002C3A0
+ .word 0x0002C3A0, 0x0002E9E0
+ .word 0x0002E9E0, 0x0002FC30
+ .word 0x0002FC30, 0x0002FE44
+ .word 0x0002FE44, 0x000311D0
+ .word 0x000311D0, 0x0003229C
+ .word 0x0003229C, 0x00033330
+ .word 0x00033330, 0x0003442C
+ .word 0x0003442C, 0x00035584
+ .word 0x00035584, 0x00036690
+ .word 0x00036690, 0x000377EC
+ .word 0x000377EC, 0x00038854
+ .word 0x00038854, 0x000398B0
+ .word 0x000398B0, 0x0003AB7C
+ .word 0x0003AB7C, 0x0003BF04
+ .word 0x0003BF04, 0x0003CFD0
+ .word 0x0003CFD0, 0x0003DF74
+ .word 0x0003DF74, 0x0003E0B0
+ .word 0x0003E0B0, 0x0003E308
+ .word 0x0003E308, 0x0003E588
+ .word 0x0003E588, 0x0003E80C
+ .word 0x0003E80C, 0x0003EA10
+ .word 0x0003EA10, 0x0003EB70
+ .word 0x0003EB70, 0x0003ECBC
+ .word 0x0003ECBC, 0x0003EEBC
+ .word 0x0003EEBC, 0x0003F294
+ .word 0x0003F294, 0x0003F6DC
+ .word 0x0003F6DC, 0x0003FEFC
+ .word 0x0003FEFC, 0x000401E8
+ .word 0x000401E8, 0x000403BC
+ .word 0x000403BC, 0x000407D4
+ .word 0x000407D4, 0x000409C0
+ .word 0x000409C0, 0x00040DFC
+ .word 0x00040DFC, 0x00040F8C
+ .word 0x00040F8C, 0x000413C4
+ .word 0x000413C4, 0x00041594
+ .word 0x00041594, 0x000419AC
+ .word 0x000419AC, 0x00042000
+ .word 0x00042000, 0x00042628
+ .word 0x00042628, 0x00042C78
+ .word 0x00042C78, 0x000447C0
+ .word 0x000447C0, 0x00044E60
+ .word 0x00044E60, 0x00045490
+ .word 0x00045490, 0x00045B28
+ .word 0x00045B28, 0x00047454
+ .word 0x00047454, 0x00048A8C
+ .word 0x00048A8C, 0x000490C4
+ .word 0x000490C4, 0x00049744
+ .word 0x00049744, 0x00049D44
+ .word 0x00049D44, 0x0004A340
+ .word 0x0004A340, 0x0004A940
+ .word 0x0004A940, 0x0004B73C
+ .word 0x0004B73C, 0x0004BD04
+ .word 0x0004BD04, 0x0004CB38
+ .word 0x0004CB38, 0x0004CF14
+ .word 0x0004CF14, 0x0004D9B0
+ .word 0x0004D9B0, 0x0004E8BC
+ .word 0x0004E8BC, 0x0004F358
+ .word 0x0004F358, 0x0004F574
+ .word 0x0004F574, 0x0004F78C
+ .word 0x0004F78C, 0x0004FF58
+ .word 0x0004FF58, 0x0005057C
+ .word 0x0005057C, 0x00050BB4
+ .word 0x00050BB4, 0x000511E4
+ .word 0x000511E4, 0x00052310
+ .word 0x00052310, 0x00054388
+ .word 0x00054388, 0x000548A8
+ .word 0x000548A8, 0x00054EC8
+ .word 0x00054EC8, 0x00055530
+ .word 0x00055530, 0x00055B54
+ .word 0x00055B54, 0x00057A28
+ .word 0x00057A28, 0x00057F64
+ .word 0x00057F64, 0x0005842C
+ .word 0x0005842C, 0x00058968
+ .word 0x00058968, 0x0005AF2C
+ .word 0x0005AF2C, 0x0005C88C
+ .word 0x0005C88C, 0x0005D110
+ .word 0x0005D110, 0x0005F5EC
+ .word 0x0005F5EC, 0x0005FC14
+ .word 0x0005FC14, 0x0006028C
+ .word 0x0006028C, 0x00063234
+ .word 0x00063234, 0x000638B4
+ .word 0x000638B4, 0x00063E48
+ .word 0x00063E48, 0x000643D4
+ .word 0x000643D4, 0x00064968
+ .word 0x00064968, 0x00064E48
+ .word 0x00064E48, 0x00067090
+ .word 0x00067090, 0x00068454
+ .word 0x00068454, 0x00068964
+ .word 0x00068964, 0x00068DA8
+ .word 0x00068DA8, 0x00068F24
+ .word 0x00068F24, 0x000694DC
+ .word 0x000694DC, 0x00069A70
+ .word 0x00069A70, 0x0006A02C
+ .word 0x0006A02C, 0x0006BFE4
+ .word 0x0006BFE4, 0x0006CC80
+ .word 0x0006CC80, 0x0006D2B8
+ .word 0x0006D2B8, 0x0006E2C0
+ .word 0x0006E2C0, 0x0006E9C0
+ .word 0x0006E9C0, 0x000700F8
+ .word 0x000700F8, 0x00070704
+ .word 0x00070704, 0x00072774
+ .word 0x00072774, 0x00072DF8
+ .word 0x00072DF8, 0x000736D4
+ .word 0x000736D4, 0x00074890
+ .word 0x00074890, 0x0007516C
+ .word 0x0007516C, 0x00075AEC
+ .word 0x00075AEC, 0x00075D5C
+ .word 0x00075D5C, 0x00075FCC
+ .word 0x00075FCC, 0x00076DD4
+ .word 0x00076DD4, 0x000770EC
+ .word 0x000770EC, 0x000775A0
+ .word 0x000775A0, 0x00077A54
+ .word 0x00077A54, 0x00079200
+ .word 0x00079200, 0x0007A754
+ .word 0x0007A754, 0x0007AD6C
+ .word 0x0007AD6C, 0x0007B6EC
+ .word 0x0007B6EC, 0x0007B95C
+ .word 0x0007B95C, 0x0007BEBC
+ .word 0x0007BEBC, 0x0007C410
+ .word 0x0007C410, 0x0007C96C
+ .word 0x0007C96C, 0x0007E844
+ .word 0x0007E844, 0x0007EFA0
+ .word 0x0007EFA0, 0x0007F6FC
+ .word 0x0007F6FC, 0x0007FE58
+ .word 0x0007FE58, 0x00082454
+ .word 0x00082454, 0x00082E88
+ .word 0x00082E88, 0x00083000
+ .word 0x00083000, 0x00085B70
+ .word 0x00085B70, 0x0008608C
+ .word 0x0008608C, 0x00088550
+ .word 0x00088550, 0x00088A40
+ .word 0x00088A40, 0x0008917C
+ .word 0x0008917C, 0x000898A4
+ .word 0x000898A4, 0x00089FE0
+ .word 0x00089FE0, 0x0008C8F4
+ .word 0x0008C8F4, 0x0008D684
+ .word 0x0008D684, 0x0008DC9C
+ .word 0x0008DC9C, 0x0008ECF4
+ .word 0x0008ECF4, 0x0008EF80
+ .word 0x0008EF80, 0x0008F20C
+ .word 0x0008F20C, 0x0008FA80
+ .word 0x0008FA80, 0x0008FEC8
+ .word 0x0008FEC8, 0x000902FC
+ .word 0x000902FC, 0x00090524
+ .word 0x00090524, 0x0009074C
+ .word 0x0009074C, 0x00090974
+ .word 0x00090974, 0x00090B9C
+ .word 0x00090B9C, 0x00090DC4
+ .word 0x00090DC4, 0x00090FEC
+ .word 0x00090FEC, 0x00091214
+ .word 0x00091214, 0x0009143C
+ .word 0x0009143C, 0x00091664
+ .word 0x00091664, 0x0009188C
+ .word 0x0009188C, 0x00091AB4
+ .word 0x00091AB4, 0x00091CDC
+ .word 0x00091CDC, 0x00091F04
+ .word 0x00091F04, 0x0009212C
+ .word 0x0009212C, 0x00092354
+ .word 0x00092354, 0x0009257C
+ .word 0x0009257C, 0x000927A4
+ .word 0x000927A4, 0x000929CC
+ .word 0x000929CC, 0x00092BF4
+ .word 0x00092BF4, 0x00092E1C
+ .word 0x00092E1C, 0x00093044
+ .word 0x00093044, 0x0009326C
+ .word 0x0009326C, 0x00093494
+ .word 0x00093494, 0x000936BC
+ .word 0x000936BC, 0x000938E4
+ .word 0x000938E4, 0x00093B0C
+ .word 0x00093B0C, 0x00093D34
+ .word 0x00093D34, 0x00093F5C
+ .word 0x00093F5C, 0x00094184
+ .word 0x00094184, 0x000943AC
+ .word 0x000943AC, 0x000945D4
+ .word 0x000945D4, 0x000947FC
+ .word 0x000947FC, 0x00094A24
+ .word 0x00094A24, 0x00094C4C
+ .word 0x00094C4C, 0x00094E74
+ .word 0x00094E74, 0x0009509C
+ .word 0x0009509C, 0x000952C4
+ .word 0x000952C4, 0x000954EC
+ .word 0x000954EC, 0x00095714
+ .word 0x00095714, 0x0009576E
+ .word 0x00095770, 0x000957CA
+ .word 0x000957CC, 0x00095FF0
+ .word 0x00095FF0, 0x00096814
+ .word 0x00096814, 0x00098838
+ .word 0x00098838, 0x0009A85C
+ .word 0x0009A85C, 0x0009A8B6
+ .word 0x0009A8B8, 0x0009A912
+ .word 0x0009A914, 0x0009A96E
+ .word 0x0009A970, 0x0009A9CA
+ .word 0x0009A9CC, 0x0009AA26
+ .word 0x0009AA28, 0x0009AA82
+ .word 0x0009AA84, 0x0009AADE
+ .word 0x0009AAE0, 0x0009AB3A
+ .word 0x0009AB3C, 0x0009AB96
+ .word 0x0009AB98, 0x0009ABF2
+ .word 0x0009ABF4, 0x0009AC4E
+ .word 0x0009AC50, 0x0009ACAA
+ .word 0x0009ACAC, 0x0009AD06
+ .word 0x0009AD08, 0x0009AD62
+ .word 0x0009AD64, 0x0009ADE0
+ .word 0x0009ADE0, 0x0009AE3A
+ .word 0x0009AE3C, 0x0009AE96
+ .word 0x0009AE98, 0x0009AEF2
+ .word 0x0009AEF4, 0x0009AF4E
+ .word 0x0009AF50, 0x0009AFAA
+ .word 0x0009AFAC, 0x0009B006
+ .word 0x0009B008, 0x0009B062
+ .word 0x0009B064, 0x0009B0BE
+ .word 0x0009B0C0, 0x0009B11A
+ .word 0x0009B11C, 0x0009B176
+ .word 0x0009B178, 0x0009B1D2
+ .word 0x0009B1D4, 0x0009B22E
+ .word 0x0009B230, 0x0009B28A
+ .word 0x0009B28C, 0x0009B2E6
+ .word 0x0009B2E8, 0x0009B342
+ .word 0x0009B344, 0x0009B39E
+ .word 0x0009B3A0, 0x0009B3FA
+ .word 0x0009B3FC, 0x0009B456
+ .word 0x0009B458, 0x0009B4B2
+ .word 0x0009B4B4, 0x0009B50E
+ .word 0x0009B510, 0x0009B56A
+ .word 0x0009B56C, 0x0009B5C6
+ .word 0x0009B5C8, 0x0009B622
+ .word 0x0009B624, 0x0009B67E
+ .word 0x0009B680, 0x0009B6DA
+ .word 0x0009B6DC, 0x0009B736
+ .word 0x0009B738, 0x0009B792
+ .word 0x0009B794, 0x0009B7EE
+ .word 0x0009B7F0, 0x0009B84A
+ .word 0x0009B84C, 0x0009B8A6
+ .word 0x0009B8A8, 0x0009B902
+ .word 0x0009B904, 0x0009B95E
+ .word 0x0009B960, 0x0009B9BA
+ .word 0x0009B9BC, 0x0009BA16
+ .word 0x0009BA18, 0x0009BA72
+ .word 0x0009BA74, 0x0009BACE
+ .word 0x0009BAD0, 0x0009BB2A
+ .word 0x0009BB2C, 0x0009BB86
+ .word 0x0009BB88, 0x0009BBE2
+ .word 0x0009BBE4, 0x0009BC3E
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x0009BC48 ; chunk size
+ .incbin "baserom.nds", 0x1C4D03C, 0x9BC40
+ .balign 512, 255
diff --git a/files/FILE_1CE8E00_batt_obj.narc.s b/files/FILE_1CE8E00_batt_obj.narc.s
new file mode 100644
index 00000000..cbbae4a3
--- /dev/null
+++ b/files/FILE_1CE8E00_batt_obj.narc.s
@@ -0,0 +1,307 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x0002025C ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x000008C4 ; chunk size
+ .short 279 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000228
+ .word 0x00000228, 0x00000282
+ .word 0x00000284, 0x000002DE
+ .word 0x000002E0, 0x0000033A
+ .word 0x0000033C, 0x00000396
+ .word 0x00000398, 0x000003F2
+ .word 0x000003F4, 0x0000044E
+ .word 0x00000450, 0x000004AA
+ .word 0x000004AC, 0x00000506
+ .word 0x00000508, 0x00000562
+ .word 0x00000564, 0x000005BE
+ .word 0x000005C0, 0x0000061A
+ .word 0x0000061C, 0x00000676
+ .word 0x00000678, 0x000006D2
+ .word 0x000006D4, 0x0000072E
+ .word 0x00000730, 0x0000078A
+ .word 0x0000078C, 0x000007E6
+ .word 0x000007E8, 0x00000842
+ .word 0x00000844, 0x0000089E
+ .word 0x000008A0, 0x000008FA
+ .word 0x000008FC, 0x00000956
+ .word 0x00000958, 0x000009B2
+ .word 0x000009B4, 0x00000A0E
+ .word 0x00000A10, 0x00000A6A
+ .word 0x00000A6C, 0x00000AC6
+ .word 0x00000AC8, 0x00000B22
+ .word 0x00000B24, 0x00000B7E
+ .word 0x00000B80, 0x00000BDA
+ .word 0x00000BDC, 0x00000C36
+ .word 0x00000C38, 0x00000C92
+ .word 0x00000C94, 0x00000CEE
+ .word 0x00000CF0, 0x00000D4A
+ .word 0x00000D4C, 0x00000DA6
+ .word 0x00000DA8, 0x00000E02
+ .word 0x00000E04, 0x0000102C
+ .word 0x0000102C, 0x00001086
+ .word 0x00001088, 0x000011AE
+ .word 0x000011B0, 0x0000120A
+ .word 0x0000120C, 0x000012AA
+ .word 0x000012AC, 0x00001306
+ .word 0x00001308, 0x00001FB8
+ .word 0x00001FB8, 0x0000203F
+ .word 0x00002040, 0x000020AF
+ .word 0x000020B0, 0x0000210A
+ .word 0x0000210C, 0x00002166
+ .word 0x00002168, 0x000021C2
+ .word 0x000021C4, 0x00002240
+ .word 0x00002240, 0x00002468
+ .word 0x00002468, 0x00002690
+ .word 0x00002690, 0x000028B8
+ .word 0x000028B8, 0x00002AE0
+ .word 0x00002AE0, 0x00002D08
+ .word 0x00002D08, 0x00002F30
+ .word 0x00002F30, 0x00003158
+ .word 0x00003158, 0x00003380
+ .word 0x00003380, 0x000033DA
+ .word 0x000033DC, 0x00003436
+ .word 0x00003438, 0x00003492
+ .word 0x00003494, 0x000034EE
+ .word 0x000034F0, 0x0000354A
+ .word 0x0000354C, 0x000035A6
+ .word 0x000035A8, 0x00003602
+ .word 0x00003604, 0x0000365E
+ .word 0x00003660, 0x000036BA
+ .word 0x000036BC, 0x00003716
+ .word 0x00003718, 0x00003772
+ .word 0x00003774, 0x000037CE
+ .word 0x000037D0, 0x0000382A
+ .word 0x0000382C, 0x00003886
+ .word 0x00003888, 0x000038E2
+ .word 0x000038E4, 0x0000393E
+ .word 0x00003940, 0x0000399A
+ .word 0x0000399C, 0x000039F6
+ .word 0x000039F8, 0x00003A52
+ .word 0x00003A54, 0x00003AAE
+ .word 0x00003AB0, 0x00003B0C
+ .word 0x00003B0C, 0x00003B6C
+ .word 0x00003B6C, 0x000040E4
+ .word 0x000040E4, 0x00004140
+ .word 0x00004140, 0x00004194
+ .word 0x00004194, 0x0000437C
+ .word 0x0000437C, 0x00004490
+ .word 0x00004490, 0x000044EC
+ .word 0x000044EC, 0x00004548
+ .word 0x00004548, 0x0000465C
+ .word 0x0000465C, 0x000046B8
+ .word 0x000046B8, 0x00004714
+ .word 0x00004714, 0x00004C30
+ .word 0x00004C30, 0x00004C9C
+ .word 0x00004C9C, 0x00004CF8
+ .word 0x00004CF8, 0x00005224
+ .word 0x00005224, 0x00005288
+ .word 0x00005288, 0x000052E4
+ .word 0x000052E4, 0x00005650
+ .word 0x00005650, 0x000059F4
+ .word 0x000059F4, 0x00005E50
+ .word 0x00005E50, 0x000062DC
+ .word 0x000062DC, 0x00006728
+ .word 0x00006728, 0x00006B98
+ .word 0x00006B98, 0x00007074
+ .word 0x00007074, 0x00007590
+ .word 0x00007590, 0x000078F4
+ .word 0x000078F4, 0x00007CCC
+ .word 0x00007CCC, 0x00007FD4
+ .word 0x00007FD4, 0x00008338
+ .word 0x00008338, 0x00008680
+ .word 0x00008680, 0x000089FC
+ .word 0x000089FC, 0x00008D60
+ .word 0x00008D60, 0x00009104
+ .word 0x00009104, 0x000095B4
+ .word 0x000095B4, 0x00009AA0
+ .word 0x00009AA0, 0x00009F44
+ .word 0x00009F44, 0x0000A3E4
+ .word 0x0000A3E4, 0x0000A440
+ .word 0x0000A440, 0x0000A490
+ .word 0x0000A490, 0x0000A4E0
+ .word 0x0000A4E0, 0x0000A554
+ .word 0x0000A554, 0x0000A5D4
+ .word 0x0000A5D4, 0x0000A68C
+ .word 0x0000A68C, 0x0000A704
+ .word 0x0000A704, 0x0000A7A0
+ .word 0x0000A7A0, 0x0000A85C
+ .word 0x0000A85C, 0x0000A8B8
+ .word 0x0000A8B8, 0x0000A91C
+ .word 0x0000A91C, 0x0000ABB0
+ .word 0x0000ABB0, 0x0000AC0C
+ .word 0x0000AC0C, 0x0000AC70
+ .word 0x0000AC70, 0x0000AF20
+ .word 0x0000AF20, 0x0000AF7C
+ .word 0x0000AF7C, 0x0000AFE0
+ .word 0x0000AFE0, 0x0000B274
+ .word 0x0000B274, 0x0000B2D0
+ .word 0x0000B2D0, 0x0000B334
+ .word 0x0000B334, 0x0000B5C8
+ .word 0x0000B5C8, 0x0000B624
+ .word 0x0000B624, 0x0000B688
+ .word 0x0000B688, 0x0000B920
+ .word 0x0000B920, 0x0000B97C
+ .word 0x0000B97C, 0x0000B9E0
+ .word 0x0000B9E0, 0x0000BC78
+ .word 0x0000BC78, 0x0000BCFC
+ .word 0x0000BCFC, 0x0000BE2C
+ .word 0x0000BE2C, 0x0000BEBC
+ .word 0x0000BEBC, 0x0000BF44
+ .word 0x0000BF44, 0x0000C1D0
+ .word 0x0000C1D0, 0x0000C260
+ .word 0x0000C260, 0x0000C310
+ .word 0x0000C310, 0x0000C448
+ .word 0x0000C448, 0x0000C4A4
+ .word 0x0000C4A4, 0x0000C524
+ .word 0x0000C524, 0x0000C604
+ .word 0x0000C604, 0x0000C660
+ .word 0x0000C660, 0x0000C6F0
+ .word 0x0000C6F0, 0x0000C7F8
+ .word 0x0000C7F8, 0x0000C854
+ .word 0x0000C854, 0x0000C91C
+ .word 0x0000C91C, 0x0000C9DC
+ .word 0x0000C9DC, 0x0000CAAC
+ .word 0x0000CAAC, 0x0000CB80
+ .word 0x0000CB80, 0x0000CC60
+ .word 0x0000CC60, 0x0000CD28
+ .word 0x0000CD28, 0x0000CDEC
+ .word 0x0000CDEC, 0x0000CEAC
+ .word 0x0000CEAC, 0x0000CF80
+ .word 0x0000CF80, 0x0000D04C
+ .word 0x0000D04C, 0x0000D114
+ .word 0x0000D114, 0x0000D1C4
+ .word 0x0000D1C4, 0x0000D278
+ .word 0x0000D278, 0x0000D34C
+ .word 0x0000D34C, 0x0000D41C
+ .word 0x0000D41C, 0x0000D4EC
+ .word 0x0000D4EC, 0x0000D5C0
+ .word 0x0000D5C0, 0x0000D66C
+ .word 0x0000D66C, 0x0000D738
+ .word 0x0000D738, 0x0000D7FC
+ .word 0x0000D7FC, 0x0000D8B4
+ .word 0x0000D8B4, 0x0000D974
+ .word 0x0000D974, 0x0000DA2C
+ .word 0x0000DA2C, 0x0000DA7C
+ .word 0x0000DA7C, 0x0000DAD8
+ .word 0x0000DAD8, 0x0000DBA0
+ .word 0x0000DBA0, 0x0000DC5C
+ .word 0x0000DC5C, 0x0000DD20
+ .word 0x0000DD20, 0x0000DFC0
+ .word 0x0000DFC0, 0x0000E070
+ .word 0x0000E070, 0x0000E110
+ .word 0x0000E110, 0x0000E16C
+ .word 0x0000E16C, 0x0000E1F8
+ .word 0x0000E1F8, 0x0000E2D4
+ .word 0x0000E2D4, 0x0000E57C
+ .word 0x0000E57C, 0x0000E5D0
+ .word 0x0000E5D0, 0x0000E62C
+ .word 0x0000E62C, 0x0000E8B0
+ .word 0x0000E8B0, 0x0000E90C
+ .word 0x0000E90C, 0x0000E968
+ .word 0x0000E968, 0x0001007C
+ .word 0x0001007C, 0x000116D8
+ .word 0x000116D8, 0x00012C1C
+ .word 0x00012C1C, 0x0001432C
+ .word 0x0001432C, 0x00015818
+ .word 0x00015818, 0x00016D68
+ .word 0x00016D68, 0x000180EC
+ .word 0x000180EC, 0x00019564
+ .word 0x00019564, 0x00019638
+ .word 0x00019638, 0x0001970C
+ .word 0x0001970C, 0x000197E0
+ .word 0x000197E0, 0x000198B4
+ .word 0x000198B4, 0x00019988
+ .word 0x00019988, 0x00019A5C
+ .word 0x00019A5C, 0x00019B30
+ .word 0x00019B30, 0x00019C04
+ .word 0x00019C04, 0x00019C7C
+ .word 0x00019C7C, 0x00019CF4
+ .word 0x00019CF4, 0x00019D6C
+ .word 0x00019D6C, 0x00019DE4
+ .word 0x00019DE4, 0x00019E5C
+ .word 0x00019E5C, 0x00019ED4
+ .word 0x00019ED4, 0x00019F4C
+ .word 0x00019F4C, 0x00019FC4
+ .word 0x00019FC4, 0x0001A068
+ .word 0x0001A068, 0x0001A118
+ .word 0x0001A118, 0x0001A3E0
+ .word 0x0001A3E0, 0x0001A484
+ .word 0x0001A484, 0x0001A534
+ .word 0x0001A534, 0x0001A874
+ .word 0x0001A874, 0x0001A918
+ .word 0x0001A918, 0x0001A9C8
+ .word 0x0001A9C8, 0x0001ACB0
+ .word 0x0001ACB0, 0x0001AD54
+ .word 0x0001AD54, 0x0001AE04
+ .word 0x0001AE04, 0x0001B13C
+ .word 0x0001B13C, 0x0001B1E0
+ .word 0x0001B1E0, 0x0001B290
+ .word 0x0001B290, 0x0001B5F8
+ .word 0x0001B5F8, 0x0001B69C
+ .word 0x0001B69C, 0x0001B74C
+ .word 0x0001B74C, 0x0001BAE0
+ .word 0x0001BAE0, 0x0001BB84
+ .word 0x0001BB84, 0x0001BC34
+ .word 0x0001BC34, 0x0001BF94
+ .word 0x0001BF94, 0x0001C038
+ .word 0x0001C038, 0x0001C0E8
+ .word 0x0001C0E8, 0x0001C458
+ .word 0x0001C458, 0x0001C4FC
+ .word 0x0001C4FC, 0x0001C5AC
+ .word 0x0001C5AC, 0x0001C8FC
+ .word 0x0001C8FC, 0x0001C9A0
+ .word 0x0001C9A0, 0x0001CA50
+ .word 0x0001CA50, 0x0001CD80
+ .word 0x0001CD80, 0x0001CE24
+ .word 0x0001CE24, 0x0001CED4
+ .word 0x0001CED4, 0x0001D18C
+ .word 0x0001D18C, 0x0001D230
+ .word 0x0001D230, 0x0001D2E0
+ .word 0x0001D2E0, 0x0001D560
+ .word 0x0001D560, 0x0001D604
+ .word 0x0001D604, 0x0001D6B4
+ .word 0x0001D6B4, 0x0001DA20
+ .word 0x0001DA20, 0x0001DAC4
+ .word 0x0001DAC4, 0x0001DB74
+ .word 0x0001DB74, 0x0001DF00
+ .word 0x0001DF00, 0x0001DFA4
+ .word 0x0001DFA4, 0x0001E054
+ .word 0x0001E054, 0x0001E3BC
+ .word 0x0001E3BC, 0x0001E460
+ .word 0x0001E460, 0x0001E510
+ .word 0x0001E510, 0x0001E7DC
+ .word 0x0001E7DC, 0x0001E880
+ .word 0x0001E880, 0x0001E930
+ .word 0x0001E930, 0x0001EBF0
+ .word 0x0001EBF0, 0x0001EC6C
+ .word 0x0001EC6C, 0x0001ED1C
+ .word 0x0001ED1C, 0x0001EEC4
+ .word 0x0001EEC4, 0x0001EF54
+ .word 0x0001EF54, 0x0001EFE4
+ .word 0x0001EFE4, 0x0001F1C0
+ .word 0x0001F1C0, 0x0001F678
+ .word 0x0001F678, 0x0001F7FC
+ .word 0x0001F7FC, 0x0001F970
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x0001F978 ; chunk size
+ .incbin "baserom.nds", 0x1CE96EC, 0x1F970
+ .balign 512, 255
diff --git a/files/FILE_1D09200_vs_demo_gra.narc.s b/files/FILE_1D09200_vs_demo_gra.narc.s
new file mode 100644
index 00000000..4d16c776
--- /dev/null
+++ b/files/FILE_1D09200_vs_demo_gra.narc.s
@@ -0,0 +1,37 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00005180 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000054 ; chunk size
+ .short 9 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00002440
+ .word 0x00002440, 0x00002668
+ .word 0x00002668, 0x00002E8C
+ .word 0x00002E8C, 0x000036B0
+ .word 0x000036B0, 0x00003ED4
+ .word 0x00003ED4, 0x00004D04
+ .word 0x00004D04, 0x00004DA5
+ .word 0x00004DA8, 0x00004ED9
+ .word 0x00004EDC, 0x00005104
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x0000510C ; chunk size
+ .incbin "baserom.nds", 0x1D0927C, 0x5104
+ .balign 512, 255
diff --git a/files/FILE_1D0E400_we.arc.s b/files/FILE_1D0E400_we.arc.s
new file mode 100644
index 00000000..36dac6ac
--- /dev/null
+++ b/files/FILE_1D0E400_we.arc.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x1D0E400, 0x3E04C
+ .balign 512, 255
diff --git a/files/FILE_1D4C600_we_sub.narc.s b/files/FILE_1D4C600_we_sub.narc.s
new file mode 100644
index 00000000..e006ec53
--- /dev/null
+++ b/files/FILE_1D4C600_we_sub.narc.s
@@ -0,0 +1,78 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00003024 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x0000019C ; chunk size
+ .short 50 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000004
+ .word 0x00000004, 0x000000F0
+ .word 0x000000F0, 0x00000200
+ .word 0x00000200, 0x00000308
+ .word 0x00000308, 0x000003F4
+ .word 0x000003F4, 0x000004FC
+ .word 0x000004FC, 0x00000620
+ .word 0x00000620, 0x0000070C
+ .word 0x0000070C, 0x00000828
+ .word 0x00000828, 0x0000090C
+ .word 0x0000090C, 0x00000A9C
+ .word 0x00000A9C, 0x00000B90
+ .word 0x00000B90, 0x00000C24
+ .word 0x00000C24, 0x00000CB8
+ .word 0x00000CB8, 0x00000E28
+ .word 0x00000E28, 0x00000E78
+ .word 0x00000E78, 0x00000EC8
+ .word 0x00000EC8, 0x00000F5C
+ .word 0x00000F5C, 0x00001058
+ .word 0x00001058, 0x00001180
+ .word 0x00001180, 0x000012D4
+ .word 0x000012D4, 0x000013C8
+ .word 0x000013C8, 0x00001510
+ .word 0x00001510, 0x00001514
+ .word 0x00001514, 0x00001518
+ .word 0x00001518, 0x00001778
+ .word 0x00001778, 0x00001800
+ .word 0x00001800, 0x00001864
+ .word 0x00001864, 0x000018A8
+ .word 0x000018A8, 0x00001954
+ .word 0x00001954, 0x00001ADC
+ .word 0x00001ADC, 0x00001BB4
+ .word 0x00001BB4, 0x00001D88
+ .word 0x00001D88, 0x00001EB8
+ .word 0x00001EB8, 0x00001FF8
+ .word 0x00001FF8, 0x0000211C
+ .word 0x0000211C, 0x00002864
+ .word 0x00002864, 0x0000298C
+ .word 0x0000298C, 0x00002B20
+ .word 0x00002B20, 0x00002CA8
+ .word 0x00002CA8, 0x00002E60
+ .word 0x00002E60, 0x00002E60
+ .word 0x00002E60, 0x00002E60
+ .word 0x00002E60, 0x00002E60
+ .word 0x00002E60, 0x00002E60
+ .word 0x00002E60, 0x00002E60
+ .word 0x00002E60, 0x00002E60
+ .word 0x00002E60, 0x00002E60
+ .word 0x00002E60, 0x00002E60
+ .word 0x00002E60, 0x00002E60
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00002E68 ; chunk size
+ .incbin "baserom.nds", 0x1D4C7C4, 0x2E60
+ .balign 512, 255
diff --git a/files/FILE_1D4F800_be_seq.narc.s b/files/FILE_1D4F800_be_seq.narc.s
new file mode 100644
index 00000000..c2a34f16
--- /dev/null
+++ b/files/FILE_1D4F800_be_seq.narc.s
@@ -0,0 +1,305 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x000041FC ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x000008B4 ; chunk size
+ .short 277 ; number of files
+ .balign 4
+ .word 0x00000000, 0x0000000C
+ .word 0x0000000C, 0x00000020
+ .word 0x00000020, 0x0000003C
+ .word 0x0000003C, 0x00000058
+ .word 0x00000058, 0x00000074
+ .word 0x00000074, 0x00000090
+ .word 0x00000090, 0x000000AC
+ .word 0x000000AC, 0x000001A4
+ .word 0x000001A4, 0x00000224
+ .word 0x00000224, 0x00000264
+ .word 0x00000264, 0x00000278
+ .word 0x00000278, 0x0000028C
+ .word 0x0000028C, 0x00000298
+ .word 0x00000298, 0x000002AC
+ .word 0x000002AC, 0x000002B8
+ .word 0x000002B8, 0x000002C4
+ .word 0x000002C4, 0x000002D8
+ .word 0x000002D8, 0x000002E4
+ .word 0x000002E4, 0x000002F8
+ .word 0x000002F8, 0x0000030C
+ .word 0x0000030C, 0x00000320
+ .word 0x00000320, 0x0000032C
+ .word 0x0000032C, 0x00000338
+ .word 0x00000338, 0x0000034C
+ .word 0x0000034C, 0x00000360
+ .word 0x00000360, 0x00000374
+ .word 0x00000374, 0x000003C8
+ .word 0x000003C8, 0x000003FC
+ .word 0x000003FC, 0x00000410
+ .word 0x00000410, 0x00000438
+ .word 0x00000438, 0x0000044C
+ .word 0x0000044C, 0x00000468
+ .word 0x00000468, 0x0000047C
+ .word 0x0000047C, 0x00000490
+ .word 0x00000490, 0x000004AC
+ .word 0x000004AC, 0x000004C0
+ .word 0x000004C0, 0x000004F8
+ .word 0x000004F8, 0x0000050C
+ .word 0x0000050C, 0x00000514
+ .word 0x00000514, 0x000005B8
+ .word 0x000005B8, 0x000005FC
+ .word 0x000005FC, 0x00000648
+ .word 0x00000648, 0x00000664
+ .word 0x00000664, 0x00000680
+ .word 0x00000680, 0x000006A8
+ .word 0x000006A8, 0x000006E8
+ .word 0x000006E8, 0x000006FC
+ .word 0x000006FC, 0x0000073C
+ .word 0x0000073C, 0x0000077C
+ .word 0x0000077C, 0x00000790
+ .word 0x00000790, 0x000007A4
+ .word 0x000007A4, 0x000007B8
+ .word 0x000007B8, 0x000007CC
+ .word 0x000007CC, 0x000007E0
+ .word 0x000007E0, 0x000007F4
+ .word 0x000007F4, 0x00000800
+ .word 0x00000800, 0x0000080C
+ .word 0x0000080C, 0x00000820
+ .word 0x00000820, 0x00000834
+ .word 0x00000834, 0x00000848
+ .word 0x00000848, 0x0000085C
+ .word 0x0000085C, 0x00000868
+ .word 0x00000868, 0x0000087C
+ .word 0x0000087C, 0x00000888
+ .word 0x00000888, 0x00000894
+ .word 0x00000894, 0x000008A8
+ .word 0x000008A8, 0x000008BC
+ .word 0x000008BC, 0x000008D0
+ .word 0x000008D0, 0x000008EC
+ .word 0x000008EC, 0x00000908
+ .word 0x00000908, 0x00000924
+ .word 0x00000924, 0x00000940
+ .word 0x00000940, 0x0000095C
+ .word 0x0000095C, 0x00000978
+ .word 0x00000978, 0x00000984
+ .word 0x00000984, 0x00000A24
+ .word 0x00000A24, 0x00000A40
+ .word 0x00000A40, 0x00000A78
+ .word 0x00000A78, 0x00000A84
+ .word 0x00000A84, 0x00000A98
+ .word 0x00000A98, 0x00000AB4
+ .word 0x00000AB4, 0x00000AD0
+ .word 0x00000AD0, 0x00000AE4
+ .word 0x00000AE4, 0x00000B0C
+ .word 0x00000B0C, 0x00000B20
+ .word 0x00000B20, 0x00000B34
+ .word 0x00000B34, 0x00000B48
+ .word 0x00000B48, 0x00000B80
+ .word 0x00000B80, 0x00000C08
+ .word 0x00000C08, 0x00000C20
+ .word 0x00000C20, 0x00000C34
+ .word 0x00000C34, 0x00000C48
+ .word 0x00000C48, 0x00000CAC
+ .word 0x00000CAC, 0x00000CC0
+ .word 0x00000CC0, 0x00000CD4
+ .word 0x00000CD4, 0x00000CE8
+ .word 0x00000CE8, 0x00000CF4
+ .word 0x00000CF4, 0x00000D40
+ .word 0x00000D40, 0x00000D54
+ .word 0x00000D54, 0x00000D64
+ .word 0x00000D64, 0x00000D78
+ .word 0x00000D78, 0x00000D84
+ .word 0x00000D84, 0x00000D98
+ .word 0x00000D98, 0x00000DA4
+ .word 0x00000DA4, 0x00000DDC
+ .word 0x00000DDC, 0x00000DF8
+ .word 0x00000DF8, 0x00000E0C
+ .word 0x00000E0C, 0x00000E70
+ .word 0x00000E70, 0x00000E84
+ .word 0x00000E84, 0x00000F08
+ .word 0x00000F08, 0x00000F14
+ .word 0x00000F14, 0x00000F28
+ .word 0x00000F28, 0x00000F68
+ .word 0x00000F68, 0x00000F8C
+ .word 0x00000F8C, 0x00000FA0
+ .word 0x00000FA0, 0x00001048
+ .word 0x00001048, 0x0000105C
+ .word 0x0000105C, 0x0000106C
+ .word 0x0000106C, 0x00001080
+ .word 0x00001080, 0x00001090
+ .word 0x00001090, 0x000010B4
+ .word 0x000010B4, 0x000010F4
+ .word 0x000010F4, 0x0000114C
+ .word 0x0000114C, 0x0000119C
+ .word 0x0000119C, 0x000011B0
+ .word 0x000011B0, 0x000011CC
+ .word 0x000011CC, 0x00001234
+ .word 0x00001234, 0x00001248
+ .word 0x00001248, 0x00001254
+ .word 0x00001254, 0x00001270
+ .word 0x00001270, 0x000012BC
+ .word 0x000012BC, 0x000012C8
+ .word 0x000012C8, 0x00001300
+ .word 0x00001300, 0x0000130C
+ .word 0x0000130C, 0x00001318
+ .word 0x00001318, 0x00001328
+ .word 0x00001328, 0x000013D0
+ .word 0x000013D0, 0x00001478
+ .word 0x00001478, 0x00001494
+ .word 0x00001494, 0x000014B0
+ .word 0x000014B0, 0x000014CC
+ .word 0x000014CC, 0x000014D8
+ .word 0x000014D8, 0x000014EC
+ .word 0x000014EC, 0x00001518
+ .word 0x00001518, 0x00001530
+ .word 0x00001530, 0x000015C0
+ .word 0x000015C0, 0x00001624
+ .word 0x00001624, 0x00001678
+ .word 0x00001678, 0x000016C0
+ .word 0x000016C0, 0x00001714
+ .word 0x00001714, 0x00001768
+ .word 0x00001768, 0x00001804
+ .word 0x00001804, 0x00001830
+ .word 0x00001830, 0x0000186C
+ .word 0x0000186C, 0x000018A8
+ .word 0x000018A8, 0x00001984
+ .word 0x00001984, 0x000019AC
+ .word 0x000019AC, 0x000019B8
+ .word 0x000019B8, 0x00001A00
+ .word 0x00001A00, 0x00001A34
+ .word 0x00001A34, 0x00001A48
+ .word 0x00001A48, 0x00001B88
+ .word 0x00001B88, 0x00001D00
+ .word 0x00001D00, 0x00001D0C
+ .word 0x00001D0C, 0x00001DB4
+ .word 0x00001DB4, 0x00001DC8
+ .word 0x00001DC8, 0x00001DDC
+ .word 0x00001DDC, 0x00001DF0
+ .word 0x00001DF0, 0x00001E70
+ .word 0x00001E70, 0x00001EA4
+ .word 0x00001EA4, 0x00001F0C
+ .word 0x00001F0C, 0x00001F74
+ .word 0x00001F74, 0x00001F9C
+ .word 0x00001F9C, 0x00001FDC
+ .word 0x00001FDC, 0x00001FF0
+ .word 0x00001FF0, 0x00002004
+ .word 0x00002004, 0x00002058
+ .word 0x00002058, 0x0000206C
+ .word 0x0000206C, 0x000020A8
+ .word 0x000020A8, 0x000020C8
+ .word 0x000020C8, 0x00002100
+ .word 0x00002100, 0x00002164
+ .word 0x00002164, 0x00002180
+ .word 0x00002180, 0x000021C0
+ .word 0x000021C0, 0x00002230
+ .word 0x00002230, 0x00002240
+ .word 0x00002240, 0x0000225C
+ .word 0x0000225C, 0x00002270
+ .word 0x00002270, 0x0000228C
+ .word 0x0000228C, 0x00002310
+ .word 0x00002310, 0x00002320
+ .word 0x00002320, 0x00002334
+ .word 0x00002334, 0x00002374
+ .word 0x00002374, 0x00002388
+ .word 0x00002388, 0x000023EC
+ .word 0x000023EC, 0x0000242C
+ .word 0x0000242C, 0x0000243C
+ .word 0x0000243C, 0x0000244C
+ .word 0x0000244C, 0x0000248C
+ .word 0x0000248C, 0x000024A0
+ .word 0x000024A0, 0x000024CC
+ .word 0x000024CC, 0x0000252C
+ .word 0x0000252C, 0x00002548
+ .word 0x00002548, 0x00002558
+ .word 0x00002558, 0x00002574
+ .word 0x00002574, 0x00002588
+ .word 0x00002588, 0x0000259C
+ .word 0x0000259C, 0x000025B8
+ .word 0x000025B8, 0x000025CC
+ .word 0x000025CC, 0x000025F8
+ .word 0x000025F8, 0x00002658
+ .word 0x00002658, 0x0000266C
+ .word 0x0000266C, 0x00002680
+ .word 0x00002680, 0x000026D8
+ .word 0x000026D8, 0x000026EC
+ .word 0x000026EC, 0x00002728
+ .word 0x00002728, 0x0000274C
+ .word 0x0000274C, 0x000027B4
+ .word 0x000027B4, 0x000027D0
+ .word 0x000027D0, 0x000027E0
+ .word 0x000027E0, 0x00002818
+ .word 0x00002818, 0x00002888
+ .word 0x00002888, 0x000028B8
+ .word 0x000028B8, 0x000028F0
+ .word 0x000028F0, 0x0000290C
+ .word 0x0000290C, 0x00002920
+ .word 0x00002920, 0x0000294C
+ .word 0x0000294C, 0x0000297C
+ .word 0x0000297C, 0x00002998
+ .word 0x00002998, 0x000029B4
+ .word 0x000029B4, 0x000029C4
+ .word 0x000029C4, 0x00002A1C
+ .word 0x00002A1C, 0x00002A50
+ .word 0x00002A50, 0x00002AD8
+ .word 0x00002AD8, 0x00002B08
+ .word 0x00002B08, 0x00002B18
+ .word 0x00002B18, 0x00002B2C
+ .word 0x00002B2C, 0x00002B3C
+ .word 0x00002B3C, 0x00002B50
+ .word 0x00002B50, 0x00002B64
+ .word 0x00002B64, 0x00002BA0
+ .word 0x00002BA0, 0x00002BD8
+ .word 0x00002BD8, 0x00002C10
+ .word 0x00002C10, 0x00002C24
+ .word 0x00002C24, 0x00002C38
+ .word 0x00002C38, 0x00002C48
+ .word 0x00002C48, 0x00002C70
+ .word 0x00002C70, 0x00002C84
+ .word 0x00002C84, 0x00002CAC
+ .word 0x00002CAC, 0x00002CEC
+ .word 0x00002CEC, 0x00002D00
+ .word 0x00002D00, 0x00002D64
+ .word 0x00002D64, 0x00002E08
+ .word 0x00002E08, 0x00002E48
+ .word 0x00002E48, 0x00002E64
+ .word 0x00002E64, 0x00002F40
+ .word 0x00002F40, 0x0000301C
+ .word 0x0000301C, 0x00003070
+ .word 0x00003070, 0x00003084
+ .word 0x00003084, 0x0000310C
+ .word 0x0000310C, 0x00003128
+ .word 0x00003128, 0x0000318C
+ .word 0x0000318C, 0x000031CC
+ .word 0x000031CC, 0x000032B8
+ .word 0x000032B8, 0x000032CC
+ .word 0x000032CC, 0x000033D8
+ .word 0x000033D8, 0x00003434
+ .word 0x00003434, 0x00003450
+ .word 0x00003450, 0x0000371C
+ .word 0x0000371C, 0x0000375C
+ .word 0x0000375C, 0x00003794
+ .word 0x00003794, 0x000037B0
+ .word 0x000037B0, 0x000038B0
+ .word 0x000038B0, 0x000038CC
+ .word 0x000038CC, 0x000038E8
+ .word 0x000038E8, 0x00003904
+ .word 0x00003904, 0x00003920
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00003928 ; chunk size
+ .incbin "baserom.nds", 0x1D500DC, 0x3920
+ .balign 512, 255
diff --git a/files/FILE_1D53A00_sub_seq.narc.s b/files/FILE_1D53A00_sub_seq.narc.s
new file mode 100644
index 00000000..6ce37eca
--- /dev/null
+++ b/files/FILE_1D53A00_sub_seq.narc.s
@@ -0,0 +1,321 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x0000C738 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000934 ; chunk size
+ .short 293 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000310
+ .word 0x00000310, 0x00000330
+ .word 0x00000330, 0x000003B4
+ .word 0x000003B4, 0x00000514
+ .word 0x00000514, 0x00000784
+ .word 0x00000784, 0x0000098C
+ .word 0x0000098C, 0x000009F0
+ .word 0x000009F0, 0x00000C5C
+ .word 0x00000C5C, 0x00000C78
+ .word 0x00000C78, 0x00000D84
+ .word 0x00000D84, 0x00000E08
+ .word 0x00000E08, 0x00000E30
+ .word 0x00000E30, 0x00000F38
+ .word 0x00000F38, 0x00000F84
+ .word 0x00000F84, 0x00001064
+ .word 0x00001064, 0x000010D8
+ .word 0x000010D8, 0x000011A4
+ .word 0x000011A4, 0x000011D8
+ .word 0x000011D8, 0x00001710
+ .word 0x00001710, 0x000017A4
+ .word 0x000017A4, 0x000017D4
+ .word 0x000017D4, 0x0000194C
+ .word 0x0000194C, 0x00001E5C
+ .word 0x00001E5C, 0x00001F40
+ .word 0x00001F40, 0x000020B0
+ .word 0x000020B0, 0x00002598
+ .word 0x00002598, 0x00002644
+ .word 0x00002644, 0x000028C0
+ .word 0x000028C0, 0x000028F0
+ .word 0x000028F0, 0x00002930
+ .word 0x00002930, 0x00002974
+ .word 0x00002974, 0x00002CE4
+ .word 0x00002CE4, 0x00002D1C
+ .word 0x00002D1C, 0x00002E40
+ .word 0x00002E40, 0x00002E60
+ .word 0x00002E60, 0x00002E98
+ .word 0x00002E98, 0x00002F54
+ .word 0x00002F54, 0x000031E4
+ .word 0x000031E4, 0x00003214
+ .word 0x00003214, 0x0000327C
+ .word 0x0000327C, 0x0000329C
+ .word 0x0000329C, 0x000032D0
+ .word 0x000032D0, 0x000032FC
+ .word 0x000032FC, 0x00003374
+ .word 0x00003374, 0x000033B8
+ .word 0x000033B8, 0x00003400
+ .word 0x00003400, 0x00003444
+ .word 0x00003444, 0x000039D8
+ .word 0x000039D8, 0x00003A38
+ .word 0x00003A38, 0x00003A4C
+ .word 0x00003A4C, 0x00003A70
+ .word 0x00003A70, 0x00003AC0
+ .word 0x00003AC0, 0x00003AD4
+ .word 0x00003AD4, 0x00003AF0
+ .word 0x00003AF0, 0x00003B14
+ .word 0x00003B14, 0x00003D74
+ .word 0x00003D74, 0x00003E04
+ .word 0x00003E04, 0x00003E18
+ .word 0x00003E18, 0x00003ECC
+ .word 0x00003ECC, 0x0000401C
+ .word 0x0000401C, 0x00004040
+ .word 0x00004040, 0x00004120
+ .word 0x00004120, 0x0000415C
+ .word 0x0000415C, 0x000041FC
+ .word 0x000041FC, 0x00004238
+ .word 0x00004238, 0x00004260
+ .word 0x00004260, 0x00004278
+ .word 0x00004278, 0x000042D0
+ .word 0x000042D0, 0x000043EC
+ .word 0x000043EC, 0x000045EC
+ .word 0x000045EC, 0x00004648
+ .word 0x00004648, 0x0000468C
+ .word 0x0000468C, 0x000046AC
+ .word 0x000046AC, 0x000046DC
+ .word 0x000046DC, 0x000046FC
+ .word 0x000046FC, 0x00004728
+ .word 0x00004728, 0x00004740
+ .word 0x00004740, 0x00004884
+ .word 0x00004884, 0x000048CC
+ .word 0x000048CC, 0x00004968
+ .word 0x00004968, 0x000049BC
+ .word 0x000049BC, 0x00004A2C
+ .word 0x00004A2C, 0x00004A60
+ .word 0x00004A60, 0x00004BC0
+ .word 0x00004BC0, 0x00004C20
+ .word 0x00004C20, 0x00004CE8
+ .word 0x00004CE8, 0x00004DC0
+ .word 0x00004DC0, 0x00004DF0
+ .word 0x00004DF0, 0x00004EFC
+ .word 0x00004EFC, 0x00004FE4
+ .word 0x00004FE4, 0x0000508C
+ .word 0x0000508C, 0x00005228
+ .word 0x00005228, 0x0000529C
+ .word 0x0000529C, 0x00005328
+ .word 0x00005328, 0x000053B4
+ .word 0x000053B4, 0x000053E0
+ .word 0x000053E0, 0x0000546C
+ .word 0x0000546C, 0x00005550
+ .word 0x00005550, 0x000055DC
+ .word 0x000055DC, 0x00005788
+ .word 0x00005788, 0x000057C0
+ .word 0x000057C0, 0x0000588C
+ .word 0x0000588C, 0x000058D0
+ .word 0x000058D0, 0x000058DC
+ .word 0x000058DC, 0x00005A78
+ .word 0x00005A78, 0x00005B0C
+ .word 0x00005B0C, 0x00005CE8
+ .word 0x00005CE8, 0x00005D1C
+ .word 0x00005D1C, 0x00005D4C
+ .word 0x00005D4C, 0x00005D60
+ .word 0x00005D60, 0x00005D80
+ .word 0x00005D80, 0x00005E4C
+ .word 0x00005E4C, 0x00005EC0
+ .word 0x00005EC0, 0x00005F24
+ .word 0x00005F24, 0x00005FB0
+ .word 0x00005FB0, 0x00005FB8
+ .word 0x00005FB8, 0x00005FE0
+ .word 0x00005FE0, 0x00006004
+ .word 0x00006004, 0x000060E8
+ .word 0x000060E8, 0x00006194
+ .word 0x00006194, 0x0000627C
+ .word 0x0000627C, 0x00006478
+ .word 0x00006478, 0x000064F8
+ .word 0x000064F8, 0x00006520
+ .word 0x00006520, 0x00006694
+ .word 0x00006694, 0x000066C4
+ .word 0x000066C4, 0x00006700
+ .word 0x00006700, 0x0000677C
+ .word 0x0000677C, 0x00006810
+ .word 0x00006810, 0x0000695C
+ .word 0x0000695C, 0x000069B4
+ .word 0x000069B4, 0x00006A24
+ .word 0x00006A24, 0x00006AAC
+ .word 0x00006AAC, 0x00006AD8
+ .word 0x00006AD8, 0x00006C68
+ .word 0x00006C68, 0x00006DEC
+ .word 0x00006DEC, 0x00006EE4
+ .word 0x00006EE4, 0x00006F9C
+ .word 0x00006F9C, 0x00007000
+ .word 0x00007000, 0x00007048
+ .word 0x00007048, 0x000070A8
+ .word 0x000070A8, 0x00007230
+ .word 0x00007230, 0x00007270
+ .word 0x00007270, 0x000074C8
+ .word 0x000074C8, 0x000074F4
+ .word 0x000074F4, 0x00007568
+ .word 0x00007568, 0x00007650
+ .word 0x00007650, 0x000076F0
+ .word 0x000076F0, 0x000077FC
+ .word 0x000077FC, 0x000078F8
+ .word 0x000078F8, 0x000079F4
+ .word 0x000079F4, 0x00007AF0
+ .word 0x00007AF0, 0x00007BEC
+ .word 0x00007BEC, 0x00007EEC
+ .word 0x00007EEC, 0x00007F54
+ .word 0x00007F54, 0x00007FAC
+ .word 0x00007FAC, 0x00008124
+ .word 0x00008124, 0x00008148
+ .word 0x00008148, 0x00008180
+ .word 0x00008180, 0x000082B0
+ .word 0x000082B0, 0x00008310
+ .word 0x00008310, 0x00008374
+ .word 0x00008374, 0x000083F8
+ .word 0x000083F8, 0x00008498
+ .word 0x00008498, 0x000084D8
+ .word 0x000084D8, 0x00008598
+ .word 0x00008598, 0x00008658
+ .word 0x00008658, 0x000086FC
+ .word 0x000086FC, 0x00008A2C
+ .word 0x00008A2C, 0x00008AC8
+ .word 0x00008AC8, 0x00008AF0
+ .word 0x00008AF0, 0x00008DCC
+ .word 0x00008DCC, 0x00008DF0
+ .word 0x00008DF0, 0x00008EA4
+ .word 0x00008EA4, 0x00008EDC
+ .word 0x00008EDC, 0x00009194
+ .word 0x00009194, 0x000091C4
+ .word 0x000091C4, 0x000091E8
+ .word 0x000091E8, 0x00009298
+ .word 0x00009298, 0x00009320
+ .word 0x00009320, 0x00009354
+ .word 0x00009354, 0x0000938C
+ .word 0x0000938C, 0x00009438
+ .word 0x00009438, 0x0000948C
+ .word 0x0000948C, 0x000094E0
+ .word 0x000094E0, 0x00009534
+ .word 0x00009534, 0x00009600
+ .word 0x00009600, 0x00009658
+ .word 0x00009658, 0x000096A8
+ .word 0x000096A8, 0x000096E8
+ .word 0x000096E8, 0x00009744
+ .word 0x00009744, 0x0000976C
+ .word 0x0000976C, 0x000097A8
+ .word 0x000097A8, 0x000097E8
+ .word 0x000097E8, 0x0000980C
+ .word 0x0000980C, 0x00009834
+ .word 0x00009834, 0x00009858
+ .word 0x00009858, 0x0000987C
+ .word 0x0000987C, 0x000098D0
+ .word 0x000098D0, 0x0000992C
+ .word 0x0000992C, 0x0000999C
+ .word 0x0000999C, 0x000099F8
+ .word 0x000099F8, 0x00009A54
+ .word 0x00009A54, 0x00009AB0
+ .word 0x00009AB0, 0x00009AF0
+ .word 0x00009AF0, 0x00009B40
+ .word 0x00009B40, 0x00009BC4
+ .word 0x00009BC4, 0x00009C3C
+ .word 0x00009C3C, 0x00009CA0
+ .word 0x00009CA0, 0x00009CF0
+ .word 0x00009CF0, 0x00009DA8
+ .word 0x00009DA8, 0x00009DE4
+ .word 0x00009DE4, 0x00009E38
+ .word 0x00009E38, 0x00009E84
+ .word 0x00009E84, 0x00009EA0
+ .word 0x00009EA0, 0x00009EEC
+ .word 0x00009EEC, 0x00009F2C
+ .word 0x00009F2C, 0x00009FB8
+ .word 0x00009FB8, 0x0000A06C
+ .word 0x0000A06C, 0x0000A0F8
+ .word 0x0000A0F8, 0x0000A14C
+ .word 0x0000A14C, 0x0000A238
+ .word 0x0000A238, 0x0000A29C
+ .word 0x0000A29C, 0x0000A2A0
+ .word 0x0000A2A0, 0x0000A30C
+ .word 0x0000A30C, 0x0000A310
+ .word 0x0000A310, 0x0000A338
+ .word 0x0000A338, 0x0000A3D4
+ .word 0x0000A3D4, 0x0000A460
+ .word 0x0000A460, 0x0000A480
+ .word 0x0000A480, 0x0000A4D4
+ .word 0x0000A4D4, 0x0000A64C
+ .word 0x0000A64C, 0x0000A6A0
+ .word 0x0000A6A0, 0x0000A6C0
+ .word 0x0000A6C0, 0x0000A6EC
+ .word 0x0000A6EC, 0x0000A718
+ .word 0x0000A718, 0x0000A744
+ .word 0x0000A744, 0x0000A770
+ .word 0x0000A770, 0x0000A78C
+ .word 0x0000A78C, 0x0000A7C0
+ .word 0x0000A7C0, 0x0000A7E0
+ .word 0x0000A7E0, 0x0000A800
+ .word 0x0000A800, 0x0000A834
+ .word 0x0000A834, 0x0000A87C
+ .word 0x0000A87C, 0x0000A8B0
+ .word 0x0000A8B0, 0x0000A8D0
+ .word 0x0000A8D0, 0x0000A970
+ .word 0x0000A970, 0x0000A994
+ .word 0x0000A994, 0x0000A9B8
+ .word 0x0000A9B8, 0x0000A9DC
+ .word 0x0000A9DC, 0x0000A9FC
+ .word 0x0000A9FC, 0x0000AA18
+ .word 0x0000AA18, 0x0000AA74
+ .word 0x0000AA74, 0x0000AAA0
+ .word 0x0000AAA0, 0x0000AAC8
+ .word 0x0000AAC8, 0x0000AB88
+ .word 0x0000AB88, 0x0000ABB0
+ .word 0x0000ABB0, 0x0000AC00
+ .word 0x0000AC00, 0x0000AC44
+ .word 0x0000AC44, 0x0000AC7C
+ .word 0x0000AC7C, 0x0000AC90
+ .word 0x0000AC90, 0x0000AE60
+ .word 0x0000AE60, 0x0000AF50
+ .word 0x0000AF50, 0x0000AFE8
+ .word 0x0000AFE8, 0x0000B408
+ .word 0x0000B408, 0x0000B458
+ .word 0x0000B458, 0x0000B4D8
+ .word 0x0000B4D8, 0x0000B584
+ .word 0x0000B584, 0x0000B744
+ .word 0x0000B744, 0x0000B7AC
+ .word 0x0000B7AC, 0x0000B80C
+ .word 0x0000B80C, 0x0000B848
+ .word 0x0000B848, 0x0000B884
+ .word 0x0000B884, 0x0000B8C0
+ .word 0x0000B8C0, 0x0000B8FC
+ .word 0x0000B8FC, 0x0000B9D0
+ .word 0x0000B9D0, 0x0000B9EC
+ .word 0x0000B9EC, 0x0000B9F8
+ .word 0x0000B9F8, 0x0000BAE0
+ .word 0x0000BAE0, 0x0000BB04
+ .word 0x0000BB04, 0x0000BB28
+ .word 0x0000BB28, 0x0000BB5C
+ .word 0x0000BB5C, 0x0000BBA8
+ .word 0x0000BBA8, 0x0000BBC8
+ .word 0x0000BBC8, 0x0000BC0C
+ .word 0x0000BC0C, 0x0000BC30
+ .word 0x0000BC30, 0x0000BC50
+ .word 0x0000BC50, 0x0000BC64
+ .word 0x0000BC64, 0x0000BC98
+ .word 0x0000BC98, 0x0000BCDC
+ .word 0x0000BCDC, 0x0000BD0C
+ .word 0x0000BD0C, 0x0000BD18
+ .word 0x0000BD18, 0x0000BDDC
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x0000BDE4 ; chunk size
+ .incbin "baserom.nds", 0x1D5435C, 0xBDDC
+ .balign 512, 255
diff --git a/files/FILE_1D60200_waza_seq.narc.s b/files/FILE_1D60200_waza_seq.narc.s
new file mode 100644
index 00000000..99f1b8e7
--- /dev/null
+++ b/files/FILE_1D60200_waza_seq.narc.s
@@ -0,0 +1,529 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00001910 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000FB4 ; chunk size
+ .short 501 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000004
+ .word 0x00000004, 0x00000008
+ .word 0x00000008, 0x0000000C
+ .word 0x0000000C, 0x00000010
+ .word 0x00000010, 0x00000014
+ .word 0x00000014, 0x00000018
+ .word 0x00000018, 0x0000001C
+ .word 0x0000001C, 0x00000020
+ .word 0x00000020, 0x00000024
+ .word 0x00000024, 0x00000028
+ .word 0x00000028, 0x0000002C
+ .word 0x0000002C, 0x00000030
+ .word 0x00000030, 0x00000034
+ .word 0x00000034, 0x00000048
+ .word 0x00000048, 0x0000004C
+ .word 0x0000004C, 0x00000050
+ .word 0x00000050, 0x00000054
+ .word 0x00000054, 0x00000058
+ .word 0x00000058, 0x0000005C
+ .word 0x0000005C, 0x00000070
+ .word 0x00000070, 0x00000088
+ .word 0x00000088, 0x0000008C
+ .word 0x0000008C, 0x00000090
+ .word 0x00000090, 0x00000094
+ .word 0x00000094, 0x00000098
+ .word 0x00000098, 0x0000009C
+ .word 0x0000009C, 0x000000A0
+ .word 0x000000A0, 0x000000A4
+ .word 0x000000A4, 0x000000A8
+ .word 0x000000A8, 0x000000AC
+ .word 0x000000AC, 0x000000B0
+ .word 0x000000B0, 0x000000B4
+ .word 0x000000B4, 0x000000B8
+ .word 0x000000B8, 0x000000BC
+ .word 0x000000BC, 0x000000C0
+ .word 0x000000C0, 0x000000D8
+ .word 0x000000D8, 0x000000DC
+ .word 0x000000DC, 0x000000E0
+ .word 0x000000E0, 0x000000E4
+ .word 0x000000E4, 0x000000E8
+ .word 0x000000E8, 0x000000EC
+ .word 0x000000EC, 0x000000F0
+ .word 0x000000F0, 0x000000F4
+ .word 0x000000F4, 0x000000F8
+ .word 0x000000F8, 0x000000FC
+ .word 0x000000FC, 0x00000100
+ .word 0x00000100, 0x00000104
+ .word 0x00000104, 0x00000108
+ .word 0x00000108, 0x0000010C
+ .word 0x0000010C, 0x00000110
+ .word 0x00000110, 0x00000114
+ .word 0x00000114, 0x00000118
+ .word 0x00000118, 0x0000011C
+ .word 0x0000011C, 0x00000120
+ .word 0x00000120, 0x00000124
+ .word 0x00000124, 0x00000128
+ .word 0x00000128, 0x0000012C
+ .word 0x0000012C, 0x00000130
+ .word 0x00000130, 0x00000134
+ .word 0x00000134, 0x00000138
+ .word 0x00000138, 0x0000013C
+ .word 0x0000013C, 0x00000140
+ .word 0x00000140, 0x00000144
+ .word 0x00000144, 0x00000148
+ .word 0x00000148, 0x0000014C
+ .word 0x0000014C, 0x00000150
+ .word 0x00000150, 0x00000154
+ .word 0x00000154, 0x00000158
+ .word 0x00000158, 0x0000015C
+ .word 0x0000015C, 0x00000160
+ .word 0x00000160, 0x00000164
+ .word 0x00000164, 0x00000168
+ .word 0x00000168, 0x0000016C
+ .word 0x0000016C, 0x00000170
+ .word 0x00000170, 0x00000174
+ .word 0x00000174, 0x00000178
+ .word 0x00000178, 0x0000018C
+ .word 0x0000018C, 0x00000190
+ .word 0x00000190, 0x00000194
+ .word 0x00000194, 0x00000198
+ .word 0x00000198, 0x0000019C
+ .word 0x0000019C, 0x000001A0
+ .word 0x000001A0, 0x000001A4
+ .word 0x000001A4, 0x000001B8
+ .word 0x000001B8, 0x000001BC
+ .word 0x000001BC, 0x000001C0
+ .word 0x000001C0, 0x000001C4
+ .word 0x000001C4, 0x000001C8
+ .word 0x000001C8, 0x000001CC
+ .word 0x000001CC, 0x000001D0
+ .word 0x000001D0, 0x000001D4
+ .word 0x000001D4, 0x000001E8
+ .word 0x000001E8, 0x000001EC
+ .word 0x000001EC, 0x000001F0
+ .word 0x000001F0, 0x000001F4
+ .word 0x000001F4, 0x000001F8
+ .word 0x000001F8, 0x000001FC
+ .word 0x000001FC, 0x00000200
+ .word 0x00000200, 0x00000204
+ .word 0x00000204, 0x00000208
+ .word 0x00000208, 0x0000020C
+ .word 0x0000020C, 0x00000210
+ .word 0x00000210, 0x00000214
+ .word 0x00000214, 0x00000218
+ .word 0x00000218, 0x0000021C
+ .word 0x0000021C, 0x00000220
+ .word 0x00000220, 0x00000224
+ .word 0x00000224, 0x00000228
+ .word 0x00000228, 0x0000022C
+ .word 0x0000022C, 0x00000230
+ .word 0x00000230, 0x00000234
+ .word 0x00000234, 0x00000238
+ .word 0x00000238, 0x0000023C
+ .word 0x0000023C, 0x00000240
+ .word 0x00000240, 0x00000244
+ .word 0x00000244, 0x00000248
+ .word 0x00000248, 0x0000024C
+ .word 0x0000024C, 0x00000250
+ .word 0x00000250, 0x00000254
+ .word 0x00000254, 0x00000258
+ .word 0x00000258, 0x0000026C
+ .word 0x0000026C, 0x00000270
+ .word 0x00000270, 0x00000274
+ .word 0x00000274, 0x00000278
+ .word 0x00000278, 0x0000027C
+ .word 0x0000027C, 0x00000280
+ .word 0x00000280, 0x00000284
+ .word 0x00000284, 0x00000288
+ .word 0x00000288, 0x000002A0
+ .word 0x000002A0, 0x000002A4
+ .word 0x000002A4, 0x000002B8
+ .word 0x000002B8, 0x000002BC
+ .word 0x000002BC, 0x000002C0
+ .word 0x000002C0, 0x000002C4
+ .word 0x000002C4, 0x000002C8
+ .word 0x000002C8, 0x000002CC
+ .word 0x000002CC, 0x000002D0
+ .word 0x000002D0, 0x000002D4
+ .word 0x000002D4, 0x000002D8
+ .word 0x000002D8, 0x000002DC
+ .word 0x000002DC, 0x000002E0
+ .word 0x000002E0, 0x000002E4
+ .word 0x000002E4, 0x000002E8
+ .word 0x000002E8, 0x000002FC
+ .word 0x000002FC, 0x00000300
+ .word 0x00000300, 0x00000304
+ .word 0x00000304, 0x00000308
+ .word 0x00000308, 0x0000030C
+ .word 0x0000030C, 0x00000310
+ .word 0x00000310, 0x00000314
+ .word 0x00000314, 0x00000328
+ .word 0x00000328, 0x0000032C
+ .word 0x0000032C, 0x00000330
+ .word 0x00000330, 0x00000344
+ .word 0x00000344, 0x00000348
+ .word 0x00000348, 0x0000034C
+ .word 0x0000034C, 0x00000350
+ .word 0x00000350, 0x00000354
+ .word 0x00000354, 0x00000358
+ .word 0x00000358, 0x0000035C
+ .word 0x0000035C, 0x00000360
+ .word 0x00000360, 0x00000364
+ .word 0x00000364, 0x00000368
+ .word 0x00000368, 0x0000036C
+ .word 0x0000036C, 0x00000370
+ .word 0x00000370, 0x00000374
+ .word 0x00000374, 0x00000378
+ .word 0x00000378, 0x0000037C
+ .word 0x0000037C, 0x00000380
+ .word 0x00000380, 0x00000384
+ .word 0x00000384, 0x00000388
+ .word 0x00000388, 0x0000038C
+ .word 0x0000038C, 0x00000390
+ .word 0x00000390, 0x00000394
+ .word 0x00000394, 0x00000398
+ .word 0x00000398, 0x0000039C
+ .word 0x0000039C, 0x000003A0
+ .word 0x000003A0, 0x000003A4
+ .word 0x000003A4, 0x000003A8
+ .word 0x000003A8, 0x000003AC
+ .word 0x000003AC, 0x000003B0
+ .word 0x000003B0, 0x000003B4
+ .word 0x000003B4, 0x000003B8
+ .word 0x000003B8, 0x000003BC
+ .word 0x000003BC, 0x000003C0
+ .word 0x000003C0, 0x000003C4
+ .word 0x000003C4, 0x000003C8
+ .word 0x000003C8, 0x000003CC
+ .word 0x000003CC, 0x000003D0
+ .word 0x000003D0, 0x000003D4
+ .word 0x000003D4, 0x000003D8
+ .word 0x000003D8, 0x000003DC
+ .word 0x000003DC, 0x000003E0
+ .word 0x000003E0, 0x000003E4
+ .word 0x000003E4, 0x000003E8
+ .word 0x000003E8, 0x000003EC
+ .word 0x000003EC, 0x000003F0
+ .word 0x000003F0, 0x000003F4
+ .word 0x000003F4, 0x000003F8
+ .word 0x000003F8, 0x000003FC
+ .word 0x000003FC, 0x00000400
+ .word 0x00000400, 0x00000404
+ .word 0x00000404, 0x00000408
+ .word 0x00000408, 0x0000040C
+ .word 0x0000040C, 0x00000410
+ .word 0x00000410, 0x00000414
+ .word 0x00000414, 0x00000418
+ .word 0x00000418, 0x0000041C
+ .word 0x0000041C, 0x00000420
+ .word 0x00000420, 0x00000424
+ .word 0x00000424, 0x00000428
+ .word 0x00000428, 0x0000042C
+ .word 0x0000042C, 0x00000430
+ .word 0x00000430, 0x00000434
+ .word 0x00000434, 0x00000438
+ .word 0x00000438, 0x0000043C
+ .word 0x0000043C, 0x00000440
+ .word 0x00000440, 0x00000444
+ .word 0x00000444, 0x00000448
+ .word 0x00000448, 0x0000044C
+ .word 0x0000044C, 0x00000450
+ .word 0x00000450, 0x00000454
+ .word 0x00000454, 0x00000458
+ .word 0x00000458, 0x0000045C
+ .word 0x0000045C, 0x00000460
+ .word 0x00000460, 0x00000464
+ .word 0x00000464, 0x00000468
+ .word 0x00000468, 0x0000046C
+ .word 0x0000046C, 0x00000470
+ .word 0x00000470, 0x00000474
+ .word 0x00000474, 0x00000478
+ .word 0x00000478, 0x0000047C
+ .word 0x0000047C, 0x00000480
+ .word 0x00000480, 0x00000484
+ .word 0x00000484, 0x00000488
+ .word 0x00000488, 0x0000048C
+ .word 0x0000048C, 0x00000490
+ .word 0x00000490, 0x00000494
+ .word 0x00000494, 0x00000498
+ .word 0x00000498, 0x0000049C
+ .word 0x0000049C, 0x000004A0
+ .word 0x000004A0, 0x000004A4
+ .word 0x000004A4, 0x000004A8
+ .word 0x000004A8, 0x000004AC
+ .word 0x000004AC, 0x000004B0
+ .word 0x000004B0, 0x000004B4
+ .word 0x000004B4, 0x000004B8
+ .word 0x000004B8, 0x000004BC
+ .word 0x000004BC, 0x000004D0
+ .word 0x000004D0, 0x000004D4
+ .word 0x000004D4, 0x000004E8
+ .word 0x000004E8, 0x000004EC
+ .word 0x000004EC, 0x000004F0
+ .word 0x000004F0, 0x000004F4
+ .word 0x000004F4, 0x000004F8
+ .word 0x000004F8, 0x000004FC
+ .word 0x000004FC, 0x00000500
+ .word 0x00000500, 0x00000504
+ .word 0x00000504, 0x00000508
+ .word 0x00000508, 0x0000050C
+ .word 0x0000050C, 0x00000510
+ .word 0x00000510, 0x00000514
+ .word 0x00000514, 0x00000518
+ .word 0x00000518, 0x0000051C
+ .word 0x0000051C, 0x00000520
+ .word 0x00000520, 0x00000524
+ .word 0x00000524, 0x00000528
+ .word 0x00000528, 0x0000052C
+ .word 0x0000052C, 0x00000530
+ .word 0x00000530, 0x00000534
+ .word 0x00000534, 0x00000538
+ .word 0x00000538, 0x0000053C
+ .word 0x0000053C, 0x00000540
+ .word 0x00000540, 0x00000544
+ .word 0x00000544, 0x00000548
+ .word 0x00000548, 0x0000054C
+ .word 0x0000054C, 0x00000550
+ .word 0x00000550, 0x00000554
+ .word 0x00000554, 0x00000558
+ .word 0x00000558, 0x0000055C
+ .word 0x0000055C, 0x00000560
+ .word 0x00000560, 0x00000564
+ .word 0x00000564, 0x00000568
+ .word 0x00000568, 0x0000056C
+ .word 0x0000056C, 0x00000570
+ .word 0x00000570, 0x00000574
+ .word 0x00000574, 0x00000578
+ .word 0x00000578, 0x0000057C
+ .word 0x0000057C, 0x00000580
+ .word 0x00000580, 0x00000584
+ .word 0x00000584, 0x00000588
+ .word 0x00000588, 0x0000059C
+ .word 0x0000059C, 0x000005A0
+ .word 0x000005A0, 0x000005A4
+ .word 0x000005A4, 0x000005A8
+ .word 0x000005A8, 0x000005AC
+ .word 0x000005AC, 0x000005B0
+ .word 0x000005B0, 0x000005B4
+ .word 0x000005B4, 0x000005B8
+ .word 0x000005B8, 0x000005BC
+ .word 0x000005BC, 0x000005C0
+ .word 0x000005C0, 0x000005C4
+ .word 0x000005C4, 0x000005C8
+ .word 0x000005C8, 0x000005CC
+ .word 0x000005CC, 0x000005D0
+ .word 0x000005D0, 0x000005D4
+ .word 0x000005D4, 0x000005D8
+ .word 0x000005D8, 0x000005DC
+ .word 0x000005DC, 0x000005E0
+ .word 0x000005E0, 0x000005E4
+ .word 0x000005E4, 0x000005E8
+ .word 0x000005E8, 0x000005EC
+ .word 0x000005EC, 0x000005F0
+ .word 0x000005F0, 0x000005F4
+ .word 0x000005F4, 0x000005F8
+ .word 0x000005F8, 0x000005FC
+ .word 0x000005FC, 0x00000600
+ .word 0x00000600, 0x00000604
+ .word 0x00000604, 0x00000608
+ .word 0x00000608, 0x0000060C
+ .word 0x0000060C, 0x00000610
+ .word 0x00000610, 0x00000614
+ .word 0x00000614, 0x00000618
+ .word 0x00000618, 0x0000061C
+ .word 0x0000061C, 0x00000620
+ .word 0x00000620, 0x00000624
+ .word 0x00000624, 0x00000628
+ .word 0x00000628, 0x0000062C
+ .word 0x0000062C, 0x00000640
+ .word 0x00000640, 0x00000644
+ .word 0x00000644, 0x00000648
+ .word 0x00000648, 0x0000064C
+ .word 0x0000064C, 0x00000650
+ .word 0x00000650, 0x00000654
+ .word 0x00000654, 0x00000658
+ .word 0x00000658, 0x0000065C
+ .word 0x0000065C, 0x00000660
+ .word 0x00000660, 0x00000664
+ .word 0x00000664, 0x00000668
+ .word 0x00000668, 0x0000066C
+ .word 0x0000066C, 0x00000680
+ .word 0x00000680, 0x00000684
+ .word 0x00000684, 0x00000688
+ .word 0x00000688, 0x0000068C
+ .word 0x0000068C, 0x00000690
+ .word 0x00000690, 0x00000694
+ .word 0x00000694, 0x00000698
+ .word 0x00000698, 0x0000069C
+ .word 0x0000069C, 0x000006A0
+ .word 0x000006A0, 0x000006A4
+ .word 0x000006A4, 0x000006A8
+ .word 0x000006A8, 0x000006AC
+ .word 0x000006AC, 0x000006B0
+ .word 0x000006B0, 0x000006C8
+ .word 0x000006C8, 0x000006CC
+ .word 0x000006CC, 0x000006D0
+ .word 0x000006D0, 0x000006D4
+ .word 0x000006D4, 0x000006D8
+ .word 0x000006D8, 0x000006DC
+ .word 0x000006DC, 0x000006E0
+ .word 0x000006E0, 0x000006E4
+ .word 0x000006E4, 0x000006E8
+ .word 0x000006E8, 0x000006EC
+ .word 0x000006EC, 0x000006F0
+ .word 0x000006F0, 0x000006F4
+ .word 0x000006F4, 0x000006F8
+ .word 0x000006F8, 0x000006FC
+ .word 0x000006FC, 0x00000700
+ .word 0x00000700, 0x00000704
+ .word 0x00000704, 0x00000708
+ .word 0x00000708, 0x0000070C
+ .word 0x0000070C, 0x00000710
+ .word 0x00000710, 0x00000714
+ .word 0x00000714, 0x00000718
+ .word 0x00000718, 0x0000071C
+ .word 0x0000071C, 0x00000720
+ .word 0x00000720, 0x00000724
+ .word 0x00000724, 0x00000728
+ .word 0x00000728, 0x0000072C
+ .word 0x0000072C, 0x00000730
+ .word 0x00000730, 0x00000734
+ .word 0x00000734, 0x00000738
+ .word 0x00000738, 0x0000073C
+ .word 0x0000073C, 0x00000740
+ .word 0x00000740, 0x00000744
+ .word 0x00000744, 0x00000748
+ .word 0x00000748, 0x0000074C
+ .word 0x0000074C, 0x00000750
+ .word 0x00000750, 0x00000754
+ .word 0x00000754, 0x00000758
+ .word 0x00000758, 0x0000075C
+ .word 0x0000075C, 0x00000760
+ .word 0x00000760, 0x00000764
+ .word 0x00000764, 0x00000768
+ .word 0x00000768, 0x0000076C
+ .word 0x0000076C, 0x00000770
+ .word 0x00000770, 0x00000774
+ .word 0x00000774, 0x00000778
+ .word 0x00000778, 0x0000077C
+ .word 0x0000077C, 0x00000780
+ .word 0x00000780, 0x00000784
+ .word 0x00000784, 0x00000788
+ .word 0x00000788, 0x0000078C
+ .word 0x0000078C, 0x00000790
+ .word 0x00000790, 0x00000794
+ .word 0x00000794, 0x00000798
+ .word 0x00000798, 0x0000079C
+ .word 0x0000079C, 0x000007A0
+ .word 0x000007A0, 0x000007A4
+ .word 0x000007A4, 0x000007A8
+ .word 0x000007A8, 0x000007AC
+ .word 0x000007AC, 0x000007B0
+ .word 0x000007B0, 0x000007B4
+ .word 0x000007B4, 0x000007B8
+ .word 0x000007B8, 0x000007BC
+ .word 0x000007BC, 0x000007C0
+ .word 0x000007C0, 0x000007C4
+ .word 0x000007C4, 0x000007C8
+ .word 0x000007C8, 0x000007CC
+ .word 0x000007CC, 0x000007D0
+ .word 0x000007D0, 0x000007D4
+ .word 0x000007D4, 0x000007D8
+ .word 0x000007D8, 0x000007DC
+ .word 0x000007DC, 0x000007E0
+ .word 0x000007E0, 0x000007E4
+ .word 0x000007E4, 0x000007E8
+ .word 0x000007E8, 0x000007EC
+ .word 0x000007EC, 0x000007F0
+ .word 0x000007F0, 0x000007F4
+ .word 0x000007F4, 0x000007F8
+ .word 0x000007F8, 0x000007FC
+ .word 0x000007FC, 0x00000800
+ .word 0x00000800, 0x00000804
+ .word 0x00000804, 0x00000808
+ .word 0x00000808, 0x0000080C
+ .word 0x0000080C, 0x00000810
+ .word 0x00000810, 0x00000814
+ .word 0x00000814, 0x00000818
+ .word 0x00000818, 0x0000081C
+ .word 0x0000081C, 0x00000820
+ .word 0x00000820, 0x00000824
+ .word 0x00000824, 0x00000828
+ .word 0x00000828, 0x0000082C
+ .word 0x0000082C, 0x00000830
+ .word 0x00000830, 0x00000834
+ .word 0x00000834, 0x00000838
+ .word 0x00000838, 0x0000083C
+ .word 0x0000083C, 0x00000840
+ .word 0x00000840, 0x00000844
+ .word 0x00000844, 0x00000848
+ .word 0x00000848, 0x0000084C
+ .word 0x0000084C, 0x00000850
+ .word 0x00000850, 0x00000854
+ .word 0x00000854, 0x00000858
+ .word 0x00000858, 0x0000085C
+ .word 0x0000085C, 0x00000860
+ .word 0x00000860, 0x00000864
+ .word 0x00000864, 0x00000868
+ .word 0x00000868, 0x0000086C
+ .word 0x0000086C, 0x00000870
+ .word 0x00000870, 0x00000874
+ .word 0x00000874, 0x00000878
+ .word 0x00000878, 0x0000087C
+ .word 0x0000087C, 0x00000890
+ .word 0x00000890, 0x00000894
+ .word 0x00000894, 0x00000898
+ .word 0x00000898, 0x0000089C
+ .word 0x0000089C, 0x000008B0
+ .word 0x000008B0, 0x000008B4
+ .word 0x000008B4, 0x000008B8
+ .word 0x000008B8, 0x000008BC
+ .word 0x000008BC, 0x000008C0
+ .word 0x000008C0, 0x000008C4
+ .word 0x000008C4, 0x000008C8
+ .word 0x000008C8, 0x000008CC
+ .word 0x000008CC, 0x000008D0
+ .word 0x000008D0, 0x000008D4
+ .word 0x000008D4, 0x000008D8
+ .word 0x000008D8, 0x000008DC
+ .word 0x000008DC, 0x000008E0
+ .word 0x000008E0, 0x000008E4
+ .word 0x000008E4, 0x000008E8
+ .word 0x000008E8, 0x000008EC
+ .word 0x000008EC, 0x000008F0
+ .word 0x000008F0, 0x000008F4
+ .word 0x000008F4, 0x000008F8
+ .word 0x000008F8, 0x000008FC
+ .word 0x000008FC, 0x00000900
+ .word 0x00000900, 0x00000904
+ .word 0x00000904, 0x00000908
+ .word 0x00000908, 0x0000090C
+ .word 0x0000090C, 0x00000910
+ .word 0x00000910, 0x00000914
+ .word 0x00000914, 0x00000918
+ .word 0x00000918, 0x0000091C
+ .word 0x0000091C, 0x00000920
+ .word 0x00000920, 0x00000924
+ .word 0x00000924, 0x00000928
+ .word 0x00000928, 0x0000092C
+ .word 0x0000092C, 0x00000930
+ .word 0x00000930, 0x00000934
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x0000093C ; chunk size
+ .incbin "baserom.nds", 0x1D611DC, 0x934
+ .balign 512, 255
diff --git a/files/FILE_1D61C00_wecell.narc.s b/files/FILE_1D61C00_wecell.narc.s
new file mode 100644
index 00000000..1b997051
--- /dev/null
+++ b/files/FILE_1D61C00_wecell.narc.s
@@ -0,0 +1,65 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x000014F4 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000134 ; chunk size
+ .short 37 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000080
+ .word 0x00000080, 0x000000DC
+ .word 0x000000DC, 0x00000198
+ .word 0x00000198, 0x00000208
+ .word 0x00000208, 0x00000264
+ .word 0x00000264, 0x000002DC
+ .word 0x000002DC, 0x00000364
+ .word 0x00000364, 0x000003E8
+ .word 0x000003E8, 0x0000047C
+ .word 0x0000047C, 0x000004D8
+ .word 0x000004D8, 0x000005C8
+ .word 0x000005C8, 0x00000624
+ .word 0x00000624, 0x000006A0
+ .word 0x000006A0, 0x00000718
+ .word 0x00000718, 0x00000774
+ .word 0x00000774, 0x000007D0
+ .word 0x000007D0, 0x00000844
+ .word 0x00000844, 0x000008CC
+ .word 0x000008CC, 0x000009B0
+ .word 0x000009B0, 0x00000A9C
+ .word 0x00000A9C, 0x00000B60
+ .word 0x00000B60, 0x00000BD0
+ .word 0x00000BD0, 0x00000C74
+ .word 0x00000C74, 0x00000D34
+ .word 0x00000D34, 0x00000DF0
+ .word 0x00000DF0, 0x00000E4C
+ .word 0x00000E4C, 0x00000EE0
+ .word 0x00000EE0, 0x00000F50
+ .word 0x00000F50, 0x00000FCC
+ .word 0x00000FCC, 0x00001048
+ .word 0x00001048, 0x000010A4
+ .word 0x000010A4, 0x0000111C
+ .word 0x0000111C, 0x00001178
+ .word 0x00001178, 0x00001200
+ .word 0x00001200, 0x0000128C
+ .word 0x0000128C, 0x00001320
+ .word 0x00001320, 0x00001398
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x000013A0 ; chunk size
+ .incbin "baserom.nds", 0x1D61D5C, 0x1398
+ .balign 512, 255
diff --git a/files/FILE_1D63200_wecellanm.narc.s b/files/FILE_1D63200_wecellanm.narc.s
new file mode 100644
index 00000000..b44297f5
--- /dev/null
+++ b/files/FILE_1D63200_wecellanm.narc.s
@@ -0,0 +1,65 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00001250 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000134 ; chunk size
+ .short 37 ; number of files
+ .balign 4
+ .word 0x00000000, 0x0000006C
+ .word 0x0000006C, 0x000000C8
+ .word 0x000000C8, 0x00000160
+ .word 0x00000160, 0x000001CC
+ .word 0x000001CC, 0x00000228
+ .word 0x00000228, 0x00000294
+ .word 0x00000294, 0x00000304
+ .word 0x00000304, 0x00000378
+ .word 0x00000378, 0x000003E8
+ .word 0x000003E8, 0x00000444
+ .word 0x00000444, 0x000004D4
+ .word 0x000004D4, 0x00000530
+ .word 0x00000530, 0x000005AC
+ .word 0x000005AC, 0x00000618
+ .word 0x00000618, 0x00000674
+ .word 0x00000674, 0x000006D0
+ .word 0x000006D0, 0x0000074C
+ .word 0x0000074C, 0x000007C8
+ .word 0x000007C8, 0x00000858
+ .word 0x00000858, 0x000008FC
+ .word 0x000008FC, 0x00000980
+ .word 0x00000980, 0x000009EC
+ .word 0x000009EC, 0x00000A90
+ .word 0x00000A90, 0x00000B4C
+ .word 0x00000B4C, 0x00000BD0
+ .word 0x00000BD0, 0x00000C2C
+ .word 0x00000C2C, 0x00000CB0
+ .word 0x00000CB0, 0x00000D1C
+ .word 0x00000D1C, 0x00000D8C
+ .word 0x00000D8C, 0x00000E08
+ .word 0x00000E08, 0x00000E64
+ .word 0x00000E64, 0x00000EDC
+ .word 0x00000EDC, 0x00000F38
+ .word 0x00000F38, 0x00000FB4
+ .word 0x00000FB4, 0x00001028
+ .word 0x00001028, 0x0000108C
+ .word 0x0000108C, 0x000010F4
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x000010FC ; chunk size
+ .incbin "baserom.nds", 0x1D6335C, 0x10F4
+ .balign 512, 255
diff --git a/files/FILE_1D64600_wechar.narc.s b/files/FILE_1D64600_wechar.narc.s
new file mode 100644
index 00000000..50ef5df3
--- /dev/null
+++ b/files/FILE_1D64600_wechar.narc.s
@@ -0,0 +1,65 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00008134 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000134 ; chunk size
+ .short 37 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000BE0
+ .word 0x00000BE0, 0x00000DB4
+ .word 0x00000DB4, 0x0000154C
+ .word 0x0000154C, 0x00001750
+ .word 0x00001750, 0x000019C8
+ .word 0x000019C8, 0x00001D00
+ .word 0x00001D00, 0x000021B4
+ .word 0x000021B4, 0x00002714
+ .word 0x00002714, 0x0000315C
+ .word 0x0000315C, 0x00003288
+ .word 0x00003288, 0x000036A8
+ .word 0x000036A8, 0x0000375C
+ .word 0x0000375C, 0x00003DB4
+ .word 0x00003DB4, 0x00003FC4
+ .word 0x00003FC4, 0x00004188
+ .word 0x00004188, 0x00004320
+ .word 0x00004320, 0x000044EC
+ .word 0x000044EC, 0x00004C54
+ .word 0x00004C54, 0x00004F28
+ .word 0x00004F28, 0x00005264
+ .word 0x00005264, 0x0000553C
+ .word 0x0000553C, 0x00005740
+ .word 0x00005740, 0x00005C3C
+ .word 0x00005C3C, 0x000061B8
+ .word 0x000061B8, 0x000064F0
+ .word 0x000064F0, 0x00006600
+ .word 0x00006600, 0x00006D80
+ .word 0x00006D80, 0x00007040
+ .word 0x00007040, 0x000072BC
+ .word 0x000072BC, 0x000073F0
+ .word 0x000073F0, 0x000074DC
+ .word 0x000074DC, 0x000077B4
+ .word 0x000077B4, 0x0000788C
+ .word 0x0000788C, 0x00007A4C
+ .word 0x00007A4C, 0x00007D88
+ .word 0x00007D88, 0x00007EB8
+ .word 0x00007EB8, 0x00007FD8
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00007FE0 ; chunk size
+ .incbin "baserom.nds", 0x1D6475C, 0x7FD8
+ .balign 512, 255
diff --git a/files/FILE_1D6C800_wepltt.narc.s b/files/FILE_1D6C800_wepltt.narc.s
new file mode 100644
index 00000000..5d2b5c12
--- /dev/null
+++ b/files/FILE_1D6C800_wepltt.narc.s
@@ -0,0 +1,67 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00001180 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000144 ; chunk size
+ .short 39 ; number of files
+ .balign 4
+ .word 0x00000000, 0x0000005A
+ .word 0x0000005C, 0x000000B6
+ .word 0x000000B8, 0x00000112
+ .word 0x00000114, 0x0000016E
+ .word 0x00000170, 0x000001CA
+ .word 0x000001CC, 0x00000226
+ .word 0x00000228, 0x00000282
+ .word 0x00000284, 0x000002DE
+ .word 0x000002E0, 0x0000033A
+ .word 0x0000033C, 0x00000396
+ .word 0x00000398, 0x000003F2
+ .word 0x000003F4, 0x0000044E
+ .word 0x00000450, 0x000004AA
+ .word 0x000004AC, 0x00000506
+ .word 0x00000508, 0x00000562
+ .word 0x00000564, 0x000005BE
+ .word 0x000005C0, 0x0000061A
+ .word 0x0000061C, 0x00000676
+ .word 0x00000678, 0x000006D2
+ .word 0x000006D4, 0x0000072E
+ .word 0x00000730, 0x0000078A
+ .word 0x0000078C, 0x000007E6
+ .word 0x000007E8, 0x00000842
+ .word 0x00000844, 0x0000089E
+ .word 0x000008A0, 0x000008FA
+ .word 0x000008FC, 0x00000956
+ .word 0x00000958, 0x000009B2
+ .word 0x000009B4, 0x00000A0E
+ .word 0x00000A10, 0x00000A6A
+ .word 0x00000A6C, 0x00000AC6
+ .word 0x00000AC8, 0x00000B22
+ .word 0x00000B24, 0x00000B7E
+ .word 0x00000B80, 0x00000BDA
+ .word 0x00000BDC, 0x00000C36
+ .word 0x00000C38, 0x00000CD6
+ .word 0x00000CD8, 0x00000D32
+ .word 0x00000D34, 0x00000D8E
+ .word 0x00000D90, 0x00000FB8
+ .word 0x00000FB8, 0x00001012
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x0000101C ; chunk size
+ .incbin "baserom.nds", 0x1D6C96C, 0x1014
+ .balign 512, 255
diff --git a/files/FILE_1D6DA00_waza_tbl.narc.s b/files/FILE_1D6DA00_waza_tbl.narc.s
new file mode 100644
index 00000000..51cfd242
--- /dev/null
+++ b/files/FILE_1D6DA00_waza_tbl.narc.s
@@ -0,0 +1,499 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00002C5C ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000EC4 ; chunk size
+ .short 471 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000010
+ .word 0x00000010, 0x00000020
+ .word 0x00000020, 0x00000030
+ .word 0x00000030, 0x00000040
+ .word 0x00000040, 0x00000050
+ .word 0x00000050, 0x00000060
+ .word 0x00000060, 0x00000070
+ .word 0x00000070, 0x00000080
+ .word 0x00000080, 0x00000090
+ .word 0x00000090, 0x000000A0
+ .word 0x000000A0, 0x000000B0
+ .word 0x000000B0, 0x000000C0
+ .word 0x000000C0, 0x000000D0
+ .word 0x000000D0, 0x000000E0
+ .word 0x000000E0, 0x000000F0
+ .word 0x000000F0, 0x00000100
+ .word 0x00000100, 0x00000110
+ .word 0x00000110, 0x00000120
+ .word 0x00000120, 0x00000130
+ .word 0x00000130, 0x00000140
+ .word 0x00000140, 0x00000150
+ .word 0x00000150, 0x00000160
+ .word 0x00000160, 0x00000170
+ .word 0x00000170, 0x00000180
+ .word 0x00000180, 0x00000190
+ .word 0x00000190, 0x000001A0
+ .word 0x000001A0, 0x000001B0
+ .word 0x000001B0, 0x000001C0
+ .word 0x000001C0, 0x000001D0
+ .word 0x000001D0, 0x000001E0
+ .word 0x000001E0, 0x000001F0
+ .word 0x000001F0, 0x00000200
+ .word 0x00000200, 0x00000210
+ .word 0x00000210, 0x00000220
+ .word 0x00000220, 0x00000230
+ .word 0x00000230, 0x00000240
+ .word 0x00000240, 0x00000250
+ .word 0x00000250, 0x00000260
+ .word 0x00000260, 0x00000270
+ .word 0x00000270, 0x00000280
+ .word 0x00000280, 0x00000290
+ .word 0x00000290, 0x000002A0
+ .word 0x000002A0, 0x000002B0
+ .word 0x000002B0, 0x000002C0
+ .word 0x000002C0, 0x000002D0
+ .word 0x000002D0, 0x000002E0
+ .word 0x000002E0, 0x000002F0
+ .word 0x000002F0, 0x00000300
+ .word 0x00000300, 0x00000310
+ .word 0x00000310, 0x00000320
+ .word 0x00000320, 0x00000330
+ .word 0x00000330, 0x00000340
+ .word 0x00000340, 0x00000350
+ .word 0x00000350, 0x00000360
+ .word 0x00000360, 0x00000370
+ .word 0x00000370, 0x00000380
+ .word 0x00000380, 0x00000390
+ .word 0x00000390, 0x000003A0
+ .word 0x000003A0, 0x000003B0
+ .word 0x000003B0, 0x000003C0
+ .word 0x000003C0, 0x000003D0
+ .word 0x000003D0, 0x000003E0
+ .word 0x000003E0, 0x000003F0
+ .word 0x000003F0, 0x00000400
+ .word 0x00000400, 0x00000410
+ .word 0x00000410, 0x00000420
+ .word 0x00000420, 0x00000430
+ .word 0x00000430, 0x00000440
+ .word 0x00000440, 0x00000450
+ .word 0x00000450, 0x00000460
+ .word 0x00000460, 0x00000470
+ .word 0x00000470, 0x00000480
+ .word 0x00000480, 0x00000490
+ .word 0x00000490, 0x000004A0
+ .word 0x000004A0, 0x000004B0
+ .word 0x000004B0, 0x000004C0
+ .word 0x000004C0, 0x000004D0
+ .word 0x000004D0, 0x000004E0
+ .word 0x000004E0, 0x000004F0
+ .word 0x000004F0, 0x00000500
+ .word 0x00000500, 0x00000510
+ .word 0x00000510, 0x00000520
+ .word 0x00000520, 0x00000530
+ .word 0x00000530, 0x00000540
+ .word 0x00000540, 0x00000550
+ .word 0x00000550, 0x00000560
+ .word 0x00000560, 0x00000570
+ .word 0x00000570, 0x00000580
+ .word 0x00000580, 0x00000590
+ .word 0x00000590, 0x000005A0
+ .word 0x000005A0, 0x000005B0
+ .word 0x000005B0, 0x000005C0
+ .word 0x000005C0, 0x000005D0
+ .word 0x000005D0, 0x000005E0
+ .word 0x000005E0, 0x000005F0
+ .word 0x000005F0, 0x00000600
+ .word 0x00000600, 0x00000610
+ .word 0x00000610, 0x00000620
+ .word 0x00000620, 0x00000630
+ .word 0x00000630, 0x00000640
+ .word 0x00000640, 0x00000650
+ .word 0x00000650, 0x00000660
+ .word 0x00000660, 0x00000670
+ .word 0x00000670, 0x00000680
+ .word 0x00000680, 0x00000690
+ .word 0x00000690, 0x000006A0
+ .word 0x000006A0, 0x000006B0
+ .word 0x000006B0, 0x000006C0
+ .word 0x000006C0, 0x000006D0
+ .word 0x000006D0, 0x000006E0
+ .word 0x000006E0, 0x000006F0
+ .word 0x000006F0, 0x00000700
+ .word 0x00000700, 0x00000710
+ .word 0x00000710, 0x00000720
+ .word 0x00000720, 0x00000730
+ .word 0x00000730, 0x00000740
+ .word 0x00000740, 0x00000750
+ .word 0x00000750, 0x00000760
+ .word 0x00000760, 0x00000770
+ .word 0x00000770, 0x00000780
+ .word 0x00000780, 0x00000790
+ .word 0x00000790, 0x000007A0
+ .word 0x000007A0, 0x000007B0
+ .word 0x000007B0, 0x000007C0
+ .word 0x000007C0, 0x000007D0
+ .word 0x000007D0, 0x000007E0
+ .word 0x000007E0, 0x000007F0
+ .word 0x000007F0, 0x00000800
+ .word 0x00000800, 0x00000810
+ .word 0x00000810, 0x00000820
+ .word 0x00000820, 0x00000830
+ .word 0x00000830, 0x00000840
+ .word 0x00000840, 0x00000850
+ .word 0x00000850, 0x00000860
+ .word 0x00000860, 0x00000870
+ .word 0x00000870, 0x00000880
+ .word 0x00000880, 0x00000890
+ .word 0x00000890, 0x000008A0
+ .word 0x000008A0, 0x000008B0
+ .word 0x000008B0, 0x000008C0
+ .word 0x000008C0, 0x000008D0
+ .word 0x000008D0, 0x000008E0
+ .word 0x000008E0, 0x000008F0
+ .word 0x000008F0, 0x00000900
+ .word 0x00000900, 0x00000910
+ .word 0x00000910, 0x00000920
+ .word 0x00000920, 0x00000930
+ .word 0x00000930, 0x00000940
+ .word 0x00000940, 0x00000950
+ .word 0x00000950, 0x00000960
+ .word 0x00000960, 0x00000970
+ .word 0x00000970, 0x00000980
+ .word 0x00000980, 0x00000990
+ .word 0x00000990, 0x000009A0
+ .word 0x000009A0, 0x000009B0
+ .word 0x000009B0, 0x000009C0
+ .word 0x000009C0, 0x000009D0
+ .word 0x000009D0, 0x000009E0
+ .word 0x000009E0, 0x000009F0
+ .word 0x000009F0, 0x00000A00
+ .word 0x00000A00, 0x00000A10
+ .word 0x00000A10, 0x00000A20
+ .word 0x00000A20, 0x00000A30
+ .word 0x00000A30, 0x00000A40
+ .word 0x00000A40, 0x00000A50
+ .word 0x00000A50, 0x00000A60
+ .word 0x00000A60, 0x00000A70
+ .word 0x00000A70, 0x00000A80
+ .word 0x00000A80, 0x00000A90
+ .word 0x00000A90, 0x00000AA0
+ .word 0x00000AA0, 0x00000AB0
+ .word 0x00000AB0, 0x00000AC0
+ .word 0x00000AC0, 0x00000AD0
+ .word 0x00000AD0, 0x00000AE0
+ .word 0x00000AE0, 0x00000AF0
+ .word 0x00000AF0, 0x00000B00
+ .word 0x00000B00, 0x00000B10
+ .word 0x00000B10, 0x00000B20
+ .word 0x00000B20, 0x00000B30
+ .word 0x00000B30, 0x00000B40
+ .word 0x00000B40, 0x00000B50
+ .word 0x00000B50, 0x00000B60
+ .word 0x00000B60, 0x00000B70
+ .word 0x00000B70, 0x00000B80
+ .word 0x00000B80, 0x00000B90
+ .word 0x00000B90, 0x00000BA0
+ .word 0x00000BA0, 0x00000BB0
+ .word 0x00000BB0, 0x00000BC0
+ .word 0x00000BC0, 0x00000BD0
+ .word 0x00000BD0, 0x00000BE0
+ .word 0x00000BE0, 0x00000BF0
+ .word 0x00000BF0, 0x00000C00
+ .word 0x00000C00, 0x00000C10
+ .word 0x00000C10, 0x00000C20
+ .word 0x00000C20, 0x00000C30
+ .word 0x00000C30, 0x00000C40
+ .word 0x00000C40, 0x00000C50
+ .word 0x00000C50, 0x00000C60
+ .word 0x00000C60, 0x00000C70
+ .word 0x00000C70, 0x00000C80
+ .word 0x00000C80, 0x00000C90
+ .word 0x00000C90, 0x00000CA0
+ .word 0x00000CA0, 0x00000CB0
+ .word 0x00000CB0, 0x00000CC0
+ .word 0x00000CC0, 0x00000CD0
+ .word 0x00000CD0, 0x00000CE0
+ .word 0x00000CE0, 0x00000CF0
+ .word 0x00000CF0, 0x00000D00
+ .word 0x00000D00, 0x00000D10
+ .word 0x00000D10, 0x00000D20
+ .word 0x00000D20, 0x00000D30
+ .word 0x00000D30, 0x00000D40
+ .word 0x00000D40, 0x00000D50
+ .word 0x00000D50, 0x00000D60
+ .word 0x00000D60, 0x00000D70
+ .word 0x00000D70, 0x00000D80
+ .word 0x00000D80, 0x00000D90
+ .word 0x00000D90, 0x00000DA0
+ .word 0x00000DA0, 0x00000DB0
+ .word 0x00000DB0, 0x00000DC0
+ .word 0x00000DC0, 0x00000DD0
+ .word 0x00000DD0, 0x00000DE0
+ .word 0x00000DE0, 0x00000DF0
+ .word 0x00000DF0, 0x00000E00
+ .word 0x00000E00, 0x00000E10
+ .word 0x00000E10, 0x00000E20
+ .word 0x00000E20, 0x00000E30
+ .word 0x00000E30, 0x00000E40
+ .word 0x00000E40, 0x00000E50
+ .word 0x00000E50, 0x00000E60
+ .word 0x00000E60, 0x00000E70
+ .word 0x00000E70, 0x00000E80
+ .word 0x00000E80, 0x00000E90
+ .word 0x00000E90, 0x00000EA0
+ .word 0x00000EA0, 0x00000EB0
+ .word 0x00000EB0, 0x00000EC0
+ .word 0x00000EC0, 0x00000ED0
+ .word 0x00000ED0, 0x00000EE0
+ .word 0x00000EE0, 0x00000EF0
+ .word 0x00000EF0, 0x00000F00
+ .word 0x00000F00, 0x00000F10
+ .word 0x00000F10, 0x00000F20
+ .word 0x00000F20, 0x00000F30
+ .word 0x00000F30, 0x00000F40
+ .word 0x00000F40, 0x00000F50
+ .word 0x00000F50, 0x00000F60
+ .word 0x00000F60, 0x00000F70
+ .word 0x00000F70, 0x00000F80
+ .word 0x00000F80, 0x00000F90
+ .word 0x00000F90, 0x00000FA0
+ .word 0x00000FA0, 0x00000FB0
+ .word 0x00000FB0, 0x00000FC0
+ .word 0x00000FC0, 0x00000FD0
+ .word 0x00000FD0, 0x00000FE0
+ .word 0x00000FE0, 0x00000FF0
+ .word 0x00000FF0, 0x00001000
+ .word 0x00001000, 0x00001010
+ .word 0x00001010, 0x00001020
+ .word 0x00001020, 0x00001030
+ .word 0x00001030, 0x00001040
+ .word 0x00001040, 0x00001050
+ .word 0x00001050, 0x00001060
+ .word 0x00001060, 0x00001070
+ .word 0x00001070, 0x00001080
+ .word 0x00001080, 0x00001090
+ .word 0x00001090, 0x000010A0
+ .word 0x000010A0, 0x000010B0
+ .word 0x000010B0, 0x000010C0
+ .word 0x000010C0, 0x000010D0
+ .word 0x000010D0, 0x000010E0
+ .word 0x000010E0, 0x000010F0
+ .word 0x000010F0, 0x00001100
+ .word 0x00001100, 0x00001110
+ .word 0x00001110, 0x00001120
+ .word 0x00001120, 0x00001130
+ .word 0x00001130, 0x00001140
+ .word 0x00001140, 0x00001150
+ .word 0x00001150, 0x00001160
+ .word 0x00001160, 0x00001170
+ .word 0x00001170, 0x00001180
+ .word 0x00001180, 0x00001190
+ .word 0x00001190, 0x000011A0
+ .word 0x000011A0, 0x000011B0
+ .word 0x000011B0, 0x000011C0
+ .word 0x000011C0, 0x000011D0
+ .word 0x000011D0, 0x000011E0
+ .word 0x000011E0, 0x000011F0
+ .word 0x000011F0, 0x00001200
+ .word 0x00001200, 0x00001210
+ .word 0x00001210, 0x00001220
+ .word 0x00001220, 0x00001230
+ .word 0x00001230, 0x00001240
+ .word 0x00001240, 0x00001250
+ .word 0x00001250, 0x00001260
+ .word 0x00001260, 0x00001270
+ .word 0x00001270, 0x00001280
+ .word 0x00001280, 0x00001290
+ .word 0x00001290, 0x000012A0
+ .word 0x000012A0, 0x000012B0
+ .word 0x000012B0, 0x000012C0
+ .word 0x000012C0, 0x000012D0
+ .word 0x000012D0, 0x000012E0
+ .word 0x000012E0, 0x000012F0
+ .word 0x000012F0, 0x00001300
+ .word 0x00001300, 0x00001310
+ .word 0x00001310, 0x00001320
+ .word 0x00001320, 0x00001330
+ .word 0x00001330, 0x00001340
+ .word 0x00001340, 0x00001350
+ .word 0x00001350, 0x00001360
+ .word 0x00001360, 0x00001370
+ .word 0x00001370, 0x00001380
+ .word 0x00001380, 0x00001390
+ .word 0x00001390, 0x000013A0
+ .word 0x000013A0, 0x000013B0
+ .word 0x000013B0, 0x000013C0
+ .word 0x000013C0, 0x000013D0
+ .word 0x000013D0, 0x000013E0
+ .word 0x000013E0, 0x000013F0
+ .word 0x000013F0, 0x00001400
+ .word 0x00001400, 0x00001410
+ .word 0x00001410, 0x00001420
+ .word 0x00001420, 0x00001430
+ .word 0x00001430, 0x00001440
+ .word 0x00001440, 0x00001450
+ .word 0x00001450, 0x00001460
+ .word 0x00001460, 0x00001470
+ .word 0x00001470, 0x00001480
+ .word 0x00001480, 0x00001490
+ .word 0x00001490, 0x000014A0
+ .word 0x000014A0, 0x000014B0
+ .word 0x000014B0, 0x000014C0
+ .word 0x000014C0, 0x000014D0
+ .word 0x000014D0, 0x000014E0
+ .word 0x000014E0, 0x000014F0
+ .word 0x000014F0, 0x00001500
+ .word 0x00001500, 0x00001510
+ .word 0x00001510, 0x00001520
+ .word 0x00001520, 0x00001530
+ .word 0x00001530, 0x00001540
+ .word 0x00001540, 0x00001550
+ .word 0x00001550, 0x00001560
+ .word 0x00001560, 0x00001570
+ .word 0x00001570, 0x00001580
+ .word 0x00001580, 0x00001590
+ .word 0x00001590, 0x000015A0
+ .word 0x000015A0, 0x000015B0
+ .word 0x000015B0, 0x000015C0
+ .word 0x000015C0, 0x000015D0
+ .word 0x000015D0, 0x000015E0
+ .word 0x000015E0, 0x000015F0
+ .word 0x000015F0, 0x00001600
+ .word 0x00001600, 0x00001610
+ .word 0x00001610, 0x00001620
+ .word 0x00001620, 0x00001630
+ .word 0x00001630, 0x00001640
+ .word 0x00001640, 0x00001650
+ .word 0x00001650, 0x00001660
+ .word 0x00001660, 0x00001670
+ .word 0x00001670, 0x00001680
+ .word 0x00001680, 0x00001690
+ .word 0x00001690, 0x000016A0
+ .word 0x000016A0, 0x000016B0
+ .word 0x000016B0, 0x000016C0
+ .word 0x000016C0, 0x000016D0
+ .word 0x000016D0, 0x000016E0
+ .word 0x000016E0, 0x000016F0
+ .word 0x000016F0, 0x00001700
+ .word 0x00001700, 0x00001710
+ .word 0x00001710, 0x00001720
+ .word 0x00001720, 0x00001730
+ .word 0x00001730, 0x00001740
+ .word 0x00001740, 0x00001750
+ .word 0x00001750, 0x00001760
+ .word 0x00001760, 0x00001770
+ .word 0x00001770, 0x00001780
+ .word 0x00001780, 0x00001790
+ .word 0x00001790, 0x000017A0
+ .word 0x000017A0, 0x000017B0
+ .word 0x000017B0, 0x000017C0
+ .word 0x000017C0, 0x000017D0
+ .word 0x000017D0, 0x000017E0
+ .word 0x000017E0, 0x000017F0
+ .word 0x000017F0, 0x00001800
+ .word 0x00001800, 0x00001810
+ .word 0x00001810, 0x00001820
+ .word 0x00001820, 0x00001830
+ .word 0x00001830, 0x00001840
+ .word 0x00001840, 0x00001850
+ .word 0x00001850, 0x00001860
+ .word 0x00001860, 0x00001870
+ .word 0x00001870, 0x00001880
+ .word 0x00001880, 0x00001890
+ .word 0x00001890, 0x000018A0
+ .word 0x000018A0, 0x000018B0
+ .word 0x000018B0, 0x000018C0
+ .word 0x000018C0, 0x000018D0
+ .word 0x000018D0, 0x000018E0
+ .word 0x000018E0, 0x000018F0
+ .word 0x000018F0, 0x00001900
+ .word 0x00001900, 0x00001910
+ .word 0x00001910, 0x00001920
+ .word 0x00001920, 0x00001930
+ .word 0x00001930, 0x00001940
+ .word 0x00001940, 0x00001950
+ .word 0x00001950, 0x00001960
+ .word 0x00001960, 0x00001970
+ .word 0x00001970, 0x00001980
+ .word 0x00001980, 0x00001990
+ .word 0x00001990, 0x000019A0
+ .word 0x000019A0, 0x000019B0
+ .word 0x000019B0, 0x000019C0
+ .word 0x000019C0, 0x000019D0
+ .word 0x000019D0, 0x000019E0
+ .word 0x000019E0, 0x000019F0
+ .word 0x000019F0, 0x00001A00
+ .word 0x00001A00, 0x00001A10
+ .word 0x00001A10, 0x00001A20
+ .word 0x00001A20, 0x00001A30
+ .word 0x00001A30, 0x00001A40
+ .word 0x00001A40, 0x00001A50
+ .word 0x00001A50, 0x00001A60
+ .word 0x00001A60, 0x00001A70
+ .word 0x00001A70, 0x00001A80
+ .word 0x00001A80, 0x00001A90
+ .word 0x00001A90, 0x00001AA0
+ .word 0x00001AA0, 0x00001AB0
+ .word 0x00001AB0, 0x00001AC0
+ .word 0x00001AC0, 0x00001AD0
+ .word 0x00001AD0, 0x00001AE0
+ .word 0x00001AE0, 0x00001AF0
+ .word 0x00001AF0, 0x00001B00
+ .word 0x00001B00, 0x00001B10
+ .word 0x00001B10, 0x00001B20
+ .word 0x00001B20, 0x00001B30
+ .word 0x00001B30, 0x00001B40
+ .word 0x00001B40, 0x00001B50
+ .word 0x00001B50, 0x00001B60
+ .word 0x00001B60, 0x00001B70
+ .word 0x00001B70, 0x00001B80
+ .word 0x00001B80, 0x00001B90
+ .word 0x00001B90, 0x00001BA0
+ .word 0x00001BA0, 0x00001BB0
+ .word 0x00001BB0, 0x00001BC0
+ .word 0x00001BC0, 0x00001BD0
+ .word 0x00001BD0, 0x00001BE0
+ .word 0x00001BE0, 0x00001BF0
+ .word 0x00001BF0, 0x00001C00
+ .word 0x00001C00, 0x00001C10
+ .word 0x00001C10, 0x00001C20
+ .word 0x00001C20, 0x00001C30
+ .word 0x00001C30, 0x00001C40
+ .word 0x00001C40, 0x00001C50
+ .word 0x00001C50, 0x00001C60
+ .word 0x00001C60, 0x00001C70
+ .word 0x00001C70, 0x00001C80
+ .word 0x00001C80, 0x00001C90
+ .word 0x00001C90, 0x00001CA0
+ .word 0x00001CA0, 0x00001CB0
+ .word 0x00001CB0, 0x00001CC0
+ .word 0x00001CC0, 0x00001CD0
+ .word 0x00001CD0, 0x00001CE0
+ .word 0x00001CE0, 0x00001CF0
+ .word 0x00001CF0, 0x00001D00
+ .word 0x00001D00, 0x00001D10
+ .word 0x00001D10, 0x00001D20
+ .word 0x00001D20, 0x00001D30
+ .word 0x00001D30, 0x00001D40
+ .word 0x00001D40, 0x00001D50
+ .word 0x00001D50, 0x00001D60
+ .word 0x00001D60, 0x00001D70
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00001D78 ; chunk size
+ .incbin "baserom.nds", 0x1D6E8EC, 0x1D70
+ .balign 512, 255
diff --git a/files/FILE_1D70800_scr_seq_release.narc.s b/files/FILE_1D70800_scr_seq_release.narc.s
new file mode 100644
index 00000000..3f594019
--- /dev/null
+++ b/files/FILE_1D70800_scr_seq_release.narc.s
@@ -0,0 +1,1079 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x000359D8 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x000020E4 ; chunk size
+ .short 1051 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000060
+ .word 0x00000060, 0x00000134
+ .word 0x00000134, 0x000011B0
+ .word 0x000011B0, 0x00001214
+ .word 0x00001214, 0x00001230
+ .word 0x00001230, 0x00001288
+ .word 0x00001288, 0x00001290
+ .word 0x00001290, 0x00001298
+ .word 0x00001298, 0x00001480
+ .word 0x00001480, 0x000014F8
+ .word 0x000014F8, 0x00001B8C
+ .word 0x00001B8C, 0x000022A8
+ .word 0x000022A8, 0x00002370
+ .word 0x00002370, 0x000024C0
+ .word 0x000024C0, 0x000024F0
+ .word 0x000024F0, 0x00002B8C
+ .word 0x00002B8C, 0x00002C20
+ .word 0x00002C20, 0x00002CA0
+ .word 0x00002CA0, 0x00002F44
+ .word 0x00002F44, 0x00002F74
+ .word 0x00002F74, 0x00002FA4
+ .word 0x00002FA4, 0x00002FC0
+ .word 0x00002FC0, 0x00002FC8
+ .word 0x00002FC8, 0x00002FE4
+ .word 0x00002FE4, 0x000030A8
+ .word 0x000030A8, 0x000030D8
+ .word 0x000030D8, 0x00003108
+ .word 0x00003108, 0x00003168
+ .word 0x00003168, 0x00003528
+ .word 0x00003528, 0x00003944
+ .word 0x00003944, 0x00003998
+ .word 0x00003998, 0x000039F8
+ .word 0x000039F8, 0x00003A28
+ .word 0x00003A28, 0x00003A44
+ .word 0x00003A44, 0x000043A0
+ .word 0x000043A0, 0x00004410
+ .word 0x00004410, 0x000045A4
+ .word 0x000045A4, 0x000045FC
+ .word 0x000045FC, 0x00004604
+ .word 0x00004604, 0x0000460C
+ .word 0x0000460C, 0x000046AC
+ .word 0x000046AC, 0x0000471C
+ .word 0x0000471C, 0x00004D2C
+ .word 0x00004D2C, 0x00004DA8
+ .word 0x00004DA8, 0x00004EE4
+ .word 0x00004EE4, 0x00005084
+ .word 0x00005084, 0x0000536C
+ .word 0x0000536C, 0x00005398
+ .word 0x00005398, 0x00005AA0
+ .word 0x00005AA0, 0x00005B04
+ .word 0x00005B04, 0x00005C90
+ .word 0x00005C90, 0x00005D94
+ .word 0x00005D94, 0x00005D9C
+ .word 0x00005D9C, 0x00005DB8
+ .word 0x00005DB8, 0x00005E00
+ .word 0x00005E00, 0x00005EB8
+ .word 0x00005EB8, 0x00005F48
+ .word 0x00005F48, 0x00005F90
+ .word 0x00005F90, 0x00006064
+ .word 0x00006064, 0x00006110
+ .word 0x00006110, 0x00006158
+ .word 0x00006158, 0x00006160
+ .word 0x00006160, 0x00006190
+ .word 0x00006190, 0x000066F0
+ .word 0x000066F0, 0x00006744
+ .word 0x00006744, 0x0000678C
+ .word 0x0000678C, 0x00006824
+ .word 0x00006824, 0x00006854
+ .word 0x00006854, 0x00006870
+ .word 0x00006870, 0x00006FBC
+ .word 0x00006FBC, 0x0000702C
+ .word 0x0000702C, 0x000070E4
+ .word 0x000070E4, 0x00007458
+ .word 0x00007458, 0x00007590
+ .word 0x00007590, 0x000075AC
+ .word 0x000075AC, 0x000075B4
+ .word 0x000075B4, 0x0000768C
+ .word 0x0000768C, 0x000076BC
+ .word 0x000076BC, 0x000076EC
+ .word 0x000076EC, 0x00007708
+ .word 0x00007708, 0x00007924
+ .word 0x00007924, 0x00007B48
+ .word 0x00007B48, 0x00007BC0
+ .word 0x00007BC0, 0x00007C20
+ .word 0x00007C20, 0x00007C80
+ .word 0x00007C80, 0x00007D9C
+ .word 0x00007D9C, 0x00007DE8
+ .word 0x00007DE8, 0x00007E64
+ .word 0x00007E64, 0x00007E94
+ .word 0x00007E94, 0x000085D4
+ .word 0x000085D4, 0x0000952C
+ .word 0x0000952C, 0x00009590
+ .word 0x00009590, 0x00009684
+ .word 0x00009684, 0x000096C4
+ .word 0x000096C4, 0x00009704
+ .word 0x00009704, 0x00009744
+ .word 0x00009744, 0x00009924
+ .word 0x00009924, 0x00009994
+ .word 0x00009994, 0x0000999C
+ .word 0x0000999C, 0x000099A4
+ .word 0x000099A4, 0x000099D4
+ .word 0x000099D4, 0x00009A64
+ .word 0x00009A64, 0x00009B34
+ .word 0x00009B34, 0x00009CE8
+ .word 0x00009CE8, 0x00009D60
+ .word 0x00009D60, 0x00009DB4
+ .word 0x00009DB4, 0x00009E08
+ .word 0x00009E08, 0x00009E24
+ .word 0x00009E24, 0x00009E84
+ .word 0x00009E84, 0x00009F60
+ .word 0x00009F60, 0x00009FC0
+ .word 0x00009FC0, 0x0000A090
+ .word 0x0000A090, 0x0000A1CC
+ .word 0x0000A1CC, 0x0000A274
+ .word 0x0000A274, 0x0000A700
+ .word 0x0000A700, 0x0000A708
+ .word 0x0000A708, 0x0000A768
+ .word 0x0000A768, 0x0000A7F4
+ .word 0x0000A7F4, 0x0000AE20
+ .word 0x0000AE20, 0x0000AE9C
+ .word 0x0000AE9C, 0x0000B078
+ .word 0x0000B078, 0x0000B0B8
+ .word 0x0000B0B8, 0x0000B0D4
+ .word 0x0000B0D4, 0x0000B0DC
+ .word 0x0000B0DC, 0x0000B380
+ .word 0x0000B380, 0x0000B43C
+ .word 0x0000B43C, 0x0000B4BC
+ .word 0x0000B4BC, 0x0000B57C
+ .word 0x0000B57C, 0x0000B6A0
+ .word 0x0000B6A0, 0x0000B6DC
+ .word 0x0000B6DC, 0x0000BA1C
+ .word 0x0000BA1C, 0x0000C5C0
+ .word 0x0000C5C0, 0x0000C740
+ .word 0x0000C740, 0x0000C788
+ .word 0x0000C788, 0x0000C790
+ .word 0x0000C790, 0x0000C7AC
+ .word 0x0000C7AC, 0x0000CC08
+ .word 0x0000CC08, 0x0000CD3C
+ .word 0x0000CD3C, 0x0000CEFC
+ .word 0x0000CEFC, 0x0000D04C
+ .word 0x0000D04C, 0x0000D19C
+ .word 0x0000D19C, 0x0000D420
+ .word 0x0000D420, 0x0000D7A8
+ .word 0x0000D7A8, 0x0000D8A8
+ .word 0x0000D8A8, 0x0000DA24
+ .word 0x0000DA24, 0x0000DBC4
+ .word 0x0000DBC4, 0x0000DC18
+ .word 0x0000DC18, 0x0000DC48
+ .word 0x0000DC48, 0x0000DD7C
+ .word 0x0000DD7C, 0x0000DDC4
+ .word 0x0000DDC4, 0x0000E364
+ .word 0x0000E364, 0x0000E3C8
+ .word 0x0000E3C8, 0x0000E474
+ .word 0x0000E474, 0x0000E4A0
+ .word 0x0000E4A0, 0x0000E5BC
+ .word 0x0000E5BC, 0x0000E634
+ .word 0x0000E634, 0x0000E63C
+ .word 0x0000E63C, 0x0000E644
+ .word 0x0000E644, 0x0000E814
+ .word 0x0000E814, 0x0000EC0C
+ .word 0x0000EC0C, 0x0000ECB0
+ .word 0x0000ECB0, 0x0000ECE0
+ .word 0x0000ECE0, 0x0000ECE8
+ .word 0x0000ECE8, 0x0000ECF0
+ .word 0x0000ECF0, 0x0000EE20
+ .word 0x0000EE20, 0x0000EF7C
+ .word 0x0000EF7C, 0x0000F04C
+ .word 0x0000F04C, 0x0000F068
+ .word 0x0000F068, 0x0000F354
+ .word 0x0000F354, 0x0000F3B8
+ .word 0x0000F3B8, 0x0000F540
+ .word 0x0000F540, 0x0000F5A4
+ .word 0x0000F5A4, 0x0000F5AC
+ .word 0x0000F5AC, 0x0000F5B4
+ .word 0x0000F5B4, 0x0000F69C
+ .word 0x0000F69C, 0x0000F720
+ .word 0x0000F720, 0x0000F770
+ .word 0x0000F770, 0x0000F7F0
+ .word 0x0000F7F0, 0x0000F7F8
+ .word 0x0000F7F8, 0x0000F800
+ .word 0x0000F800, 0x0000FB2C
+ .word 0x0000FB2C, 0x0000FB68
+ .word 0x0000FB68, 0x0000FC04
+ .word 0x0000FC04, 0x0000FC40
+ .word 0x0000FC40, 0x0000FCDC
+ .word 0x0000FCDC, 0x0000FD18
+ .word 0x0000FD18, 0x0000FDB4
+ .word 0x0000FDB4, 0x0000FDF0
+ .word 0x0000FDF0, 0x0000FE8C
+ .word 0x0000FE8C, 0x0000FEC8
+ .word 0x0000FEC8, 0x0000FFDC
+ .word 0x0000FFDC, 0x00010188
+ .word 0x00010188, 0x000103A8
+ .word 0x000103A8, 0x000103B0
+ .word 0x000103B0, 0x000103B8
+ .word 0x000103B8, 0x00010918
+ .word 0x00010918, 0x000109B4
+ .word 0x000109B4, 0x00010A0C
+ .word 0x00010A0C, 0x00010A14
+ .word 0x00010A14, 0x00010A1C
+ .word 0x00010A1C, 0x00010C90
+ .word 0x00010C90, 0x00010CC0
+ .word 0x00010CC0, 0x00010CF0
+ .word 0x00010CF0, 0x00010D44
+ .word 0x00010D44, 0x00010D4C
+ .word 0x00010D4C, 0x00012274
+ .word 0x00012274, 0x0001361C
+ .word 0x0001361C, 0x00013D78
+ .word 0x00013D78, 0x00013DB4
+ .word 0x00013DB4, 0x00013F20
+ .word 0x00013F20, 0x00014120
+ .word 0x00014120, 0x00014474
+ .word 0x00014474, 0x000144F8
+ .word 0x000144F8, 0x000149D8
+ .word 0x000149D8, 0x000149F8
+ .word 0x000149F8, 0x00014A64
+ .word 0x00014A64, 0x00014A74
+ .word 0x00014A74, 0x00014B40
+ .word 0x00014B40, 0x00014B58
+ .word 0x00014B58, 0x00014B60
+ .word 0x00014B60, 0x00014B68
+ .word 0x00014B68, 0x00014B70
+ .word 0x00014B70, 0x00014B78
+ .word 0x00014B78, 0x00014B80
+ .word 0x00014B80, 0x00014B88
+ .word 0x00014B88, 0x00014B90
+ .word 0x00014B90, 0x00014BBC
+ .word 0x00014BBC, 0x00014BC4
+ .word 0x00014BC4, 0x00014BE0
+ .word 0x00014BE0, 0x00014BE8
+ .word 0x00014BE8, 0x00015E90
+ .word 0x00015E90, 0x00015E98
+ .word 0x00015E98, 0x00016008
+ .word 0x00016008, 0x00016018
+ .word 0x00016018, 0x00016064
+ .word 0x00016064, 0x00016098
+ .word 0x00016098, 0x000160CC
+ .word 0x000160CC, 0x00016100
+ .word 0x00016100, 0x00016134
+ .word 0x00016134, 0x00016168
+ .word 0x00016168, 0x000161DC
+ .word 0x000161DC, 0x000161F4
+ .word 0x000161F4, 0x00016218
+ .word 0x00016218, 0x00016220
+ .word 0x00016220, 0x00016228
+ .word 0x00016228, 0x000162EC
+ .word 0x000162EC, 0x000162F4
+ .word 0x000162F4, 0x000162FC
+ .word 0x000162FC, 0x00016304
+ .word 0x00016304, 0x0001630C
+ .word 0x0001630C, 0x00016314
+ .word 0x00016314, 0x0001631C
+ .word 0x0001631C, 0x00016324
+ .word 0x00016324, 0x0001632C
+ .word 0x0001632C, 0x00016334
+ .word 0x00016334, 0x0001633C
+ .word 0x0001633C, 0x00016354
+ .word 0x00016354, 0x0001635C
+ .word 0x0001635C, 0x00016364
+ .word 0x00016364, 0x000163D4
+ .word 0x000163D4, 0x000163DC
+ .word 0x000163DC, 0x000163E4
+ .word 0x000163E4, 0x00016820
+ .word 0x00016820, 0x00016828
+ .word 0x00016828, 0x00016830
+ .word 0x00016830, 0x00016A1C
+ .word 0x00016A1C, 0x000176C8
+ .word 0x000176C8, 0x000176D8
+ .word 0x000176D8, 0x000176FC
+ .word 0x000176FC, 0x00017964
+ .word 0x00017964, 0x00017994
+ .word 0x00017994, 0x00017A64
+ .word 0x00017A64, 0x00017A80
+ .word 0x00017A80, 0x00017BCC
+ .word 0x00017BCC, 0x00017C5C
+ .word 0x00017C5C, 0x00017C84
+ .word 0x00017C84, 0x00017DB0
+ .word 0x00017DB0, 0x00017F88
+ .word 0x00017F88, 0x00018178
+ .word 0x00018178, 0x00018188
+ .word 0x00018188, 0x00018190
+ .word 0x00018190, 0x000181E8
+ .word 0x000181E8, 0x00018238
+ .word 0x00018238, 0x00018370
+ .word 0x00018370, 0x0001838C
+ .word 0x0001838C, 0x000183A8
+ .word 0x000183A8, 0x000183C4
+ .word 0x000183C4, 0x000183D8
+ .word 0x000183D8, 0x000183F0
+ .word 0x000183F0, 0x00018404
+ .word 0x00018404, 0x0001841C
+ .word 0x0001841C, 0x00018430
+ .word 0x00018430, 0x00018448
+ .word 0x00018448, 0x0001845C
+ .word 0x0001845C, 0x00018470
+ .word 0x00018470, 0x00018488
+ .word 0x00018488, 0x000184A0
+ .word 0x000184A0, 0x000184B8
+ .word 0x000184B8, 0x000184D0
+ .word 0x000184D0, 0x000184E8
+ .word 0x000184E8, 0x00018500
+ .word 0x00018500, 0x0001851C
+ .word 0x0001851C, 0x000185B0
+ .word 0x000185B0, 0x000185B8
+ .word 0x000185B8, 0x000185C8
+ .word 0x000185C8, 0x000185D0
+ .word 0x000185D0, 0x000185D8
+ .word 0x000185D8, 0x000185E0
+ .word 0x000185E0, 0x000185E8
+ .word 0x000185E8, 0x000186C0
+ .word 0x000186C0, 0x00018900
+ .word 0x00018900, 0x00018908
+ .word 0x00018908, 0x00018948
+ .word 0x00018948, 0x00018980
+ .word 0x00018980, 0x0001899C
+ .word 0x0001899C, 0x000189AC
+ .word 0x000189AC, 0x00018AA4
+ .word 0x00018AA4, 0x00018AB4
+ .word 0x00018AB4, 0x00018ABC
+ .word 0x00018ABC, 0x00018AD0
+ .word 0x00018AD0, 0x00018AD8
+ .word 0x00018AD8, 0x00018FF4
+ .word 0x00018FF4, 0x0001900C
+ .word 0x0001900C, 0x00019118
+ .word 0x00019118, 0x0001913C
+ .word 0x0001913C, 0x000191C0
+ .word 0x000191C0, 0x000191C8
+ .word 0x000191C8, 0x000191D0
+ .word 0x000191D0, 0x000191D8
+ .word 0x000191D8, 0x000192A8
+ .word 0x000192A8, 0x000192B0
+ .word 0x000192B0, 0x0001931C
+ .word 0x0001931C, 0x00019324
+ .word 0x00019324, 0x000194AC
+ .word 0x000194AC, 0x00019578
+ .word 0x00019578, 0x00019644
+ .word 0x00019644, 0x000198AC
+ .word 0x000198AC, 0x000198C8
+ .word 0x000198C8, 0x00019994
+ .word 0x00019994, 0x00019D2C
+ .word 0x00019D2C, 0x00019D74
+ .word 0x00019D74, 0x00019D84
+ .word 0x00019D84, 0x0001A45C
+ .word 0x0001A45C, 0x0001A77C
+ .word 0x0001A77C, 0x0001A91C
+ .word 0x0001A91C, 0x0001A92C
+ .word 0x0001A92C, 0x0001A998
+ .word 0x0001A998, 0x0001A9A0
+ .word 0x0001A9A0, 0x0001AAEC
+ .word 0x0001AAEC, 0x0001AAFC
+ .word 0x0001AAFC, 0x0001AB38
+ .word 0x0001AB38, 0x0001AD74
+ .word 0x0001AD74, 0x0001AE00
+ .word 0x0001AE00, 0x0001AF50
+ .word 0x0001AF50, 0x0001B048
+ .word 0x0001B048, 0x0001B424
+ .word 0x0001B424, 0x0001B61C
+ .word 0x0001B61C, 0x0001B624
+ .word 0x0001B624, 0x0001C7F4
+ .word 0x0001C7F4, 0x0001C9A8
+ .word 0x0001C9A8, 0x0001CBB0
+ .word 0x0001CBB0, 0x0001CDA8
+ .word 0x0001CDA8, 0x0001D368
+ .word 0x0001D368, 0x0001D9CC
+ .word 0x0001D9CC, 0x0001E1B0
+ .word 0x0001E1B0, 0x0001E230
+ .word 0x0001E230, 0x0001E23C
+ .word 0x0001E23C, 0x0001E248
+ .word 0x0001E248, 0x0001E250
+ .word 0x0001E250, 0x0001E258
+ .word 0x0001E258, 0x0001FC64
+ .word 0x0001FC64, 0x0001FC6C
+ .word 0x0001FC6C, 0x0002005C
+ .word 0x0002005C, 0x0002016C
+ .word 0x0002016C, 0x0002076C
+ .word 0x0002076C, 0x00020D8C
+ .word 0x00020D8C, 0x00020ED0
+ .word 0x00020ED0, 0x00021024
+ .word 0x00021024, 0x000215D0
+ .word 0x000215D0, 0x00021858
+ .word 0x00021858, 0x00021874
+ .word 0x00021874, 0x00021DC4
+ .word 0x00021DC4, 0x00023F00
+ .word 0x00023F00, 0x00023F60
+ .word 0x00023F60, 0x0002404C
+ .word 0x0002404C, 0x00024154
+ .word 0x00024154, 0x0002415C
+ .word 0x0002415C, 0x000243FC
+ .word 0x000243FC, 0x000247E0
+ .word 0x000247E0, 0x000248C8
+ .word 0x000248C8, 0x000248F4
+ .word 0x000248F4, 0x00024B7C
+ .word 0x00024B7C, 0x0002523C
+ .word 0x0002523C, 0x000256D8
+ .word 0x000256D8, 0x00025944
+ .word 0x00025944, 0x00025994
+ .word 0x00025994, 0x00025A28
+ .word 0x00025A28, 0x00025D04
+ .word 0x00025D04, 0x00025D84
+ .word 0x00025D84, 0x00025DD4
+ .word 0x00025DD4, 0x00025EFC
+ .word 0x00025EFC, 0x00025F9C
+ .word 0x00025F9C, 0x00025FA4
+ .word 0x00025FA4, 0x00026398
+ .word 0x00026398, 0x00026464
+ .word 0x00026464, 0x00026720
+ .word 0x00026720, 0x000269FC
+ .word 0x000269FC, 0x00026A0C
+ .word 0x00026A0C, 0x00026A14
+ .word 0x00026A14, 0x00026A1C
+ .word 0x00026A1C, 0x00026A24
+ .word 0x00026A24, 0x00026AEC
+ .word 0x00026AEC, 0x00026EA8
+ .word 0x00026EA8, 0x00026F94
+ .word 0x00026F94, 0x00026FE4
+ .word 0x00026FE4, 0x000271F0
+ .word 0x000271F0, 0x00027240
+ .word 0x00027240, 0x0002730C
+ .word 0x0002730C, 0x00027478
+ .word 0x00027478, 0x00027534
+ .word 0x00027534, 0x000275AC
+ .word 0x000275AC, 0x00027958
+ .word 0x00027958, 0x00027A64
+ .word 0x00027A64, 0x00028030
+ .word 0x00028030, 0x00028198
+ .word 0x00028198, 0x000281C8
+ .word 0x000281C8, 0x000288BC
+ .word 0x000288BC, 0x00028918
+ .word 0x00028918, 0x00028988
+ .word 0x00028988, 0x00028AD8
+ .word 0x00028AD8, 0x00028B54
+ .word 0x00028B54, 0x00028C24
+ .word 0x00028C24, 0x00028C5C
+ .word 0x00028C5C, 0x00028DC0
+ .word 0x00028DC0, 0x00028E10
+ .word 0x00028E10, 0x00028EAC
+ .word 0x00028EAC, 0x00028EF8
+ .word 0x00028EF8, 0x00028F78
+ .word 0x00028F78, 0x00028FDC
+ .word 0x00028FDC, 0x00029014
+ .word 0x00029014, 0x000290D8
+ .word 0x000290D8, 0x000291F0
+ .word 0x000291F0, 0x00029210
+ .word 0x00029210, 0x0002927C
+ .word 0x0002927C, 0x00029D04
+ .word 0x00029D04, 0x00029E90
+ .word 0x00029E90, 0x00029FEC
+ .word 0x00029FEC, 0x0002A0C0
+ .word 0x0002A0C0, 0x0002A1EC
+ .word 0x0002A1EC, 0x0002A21C
+ .word 0x0002A21C, 0x0002A5D8
+ .word 0x0002A5D8, 0x0002A610
+ .word 0x0002A610, 0x0002A670
+ .word 0x0002A670, 0x0002A678
+ .word 0x0002A678, 0x0002A890
+ .word 0x0002A890, 0x0002A914
+ .word 0x0002A914, 0x0002A94C
+ .word 0x0002A94C, 0x0002A97C
+ .word 0x0002A97C, 0x0002AC54
+ .word 0x0002AC54, 0x0002AC98
+ .word 0x0002AC98, 0x0002AD14
+ .word 0x0002AD14, 0x0002AD1C
+ .word 0x0002AD1C, 0x0002B47C
+ .word 0x0002B47C, 0x0002B4EC
+ .word 0x0002B4EC, 0x0002B9C8
+ .word 0x0002B9C8, 0x0002B9D0
+ .word 0x0002B9D0, 0x0002B9D8
+ .word 0x0002B9D8, 0x0002B9DC
+ .word 0x0002B9DC, 0x0002B9E0
+ .word 0x0002B9E0, 0x0002BA08
+ .word 0x0002BA08, 0x0002BA18
+ .word 0x0002BA18, 0x0002BA20
+ .word 0x0002BA20, 0x0002BA24
+ .word 0x0002BA24, 0x0002BA28
+ .word 0x0002BA28, 0x0002BA30
+ .word 0x0002BA30, 0x0002BA38
+ .word 0x0002BA38, 0x0002BA3C
+ .word 0x0002BA3C, 0x0002BA40
+ .word 0x0002BA40, 0x0002BA44
+ .word 0x0002BA44, 0x0002BA48
+ .word 0x0002BA48, 0x0002BA4C
+ .word 0x0002BA4C, 0x0002BA50
+ .word 0x0002BA50, 0x0002BA54
+ .word 0x0002BA54, 0x0002BA58
+ .word 0x0002BA58, 0x0002BA5C
+ .word 0x0002BA5C, 0x0002BA60
+ .word 0x0002BA60, 0x0002BA64
+ .word 0x0002BA64, 0x0002BA68
+ .word 0x0002BA68, 0x0002BA6C
+ .word 0x0002BA6C, 0x0002BA70
+ .word 0x0002BA70, 0x0002BA74
+ .word 0x0002BA74, 0x0002BA88
+ .word 0x0002BA88, 0x0002BA8C
+ .word 0x0002BA8C, 0x0002BA90
+ .word 0x0002BA90, 0x0002BA94
+ .word 0x0002BA94, 0x0002BA98
+ .word 0x0002BA98, 0x0002BA9C
+ .word 0x0002BA9C, 0x0002BAC0
+ .word 0x0002BAC0, 0x0002BAC8
+ .word 0x0002BAC8, 0x0002BAD0
+ .word 0x0002BAD0, 0x0002BAD4
+ .word 0x0002BAD4, 0x0002BAFC
+ .word 0x0002BAFC, 0x0002BB0C
+ .word 0x0002BB0C, 0x0002BB10
+ .word 0x0002BB10, 0x0002BB14
+ .word 0x0002BB14, 0x0002BB28
+ .word 0x0002BB28, 0x0002BB2C
+ .word 0x0002BB2C, 0x0002BB30
+ .word 0x0002BB30, 0x0002BB4C
+ .word 0x0002BB4C, 0x0002BB54
+ .word 0x0002BB54, 0x0002BB5C
+ .word 0x0002BB5C, 0x0002BB60
+ .word 0x0002BB60, 0x0002BB68
+ .word 0x0002BB68, 0x0002BB6C
+ .word 0x0002BB6C, 0x0002BB70
+ .word 0x0002BB70, 0x0002BB98
+ .word 0x0002BB98, 0x0002BBA8
+ .word 0x0002BBA8, 0x0002BBAC
+ .word 0x0002BBAC, 0x0002BBB0
+ .word 0x0002BBB0, 0x0002BBB4
+ .word 0x0002BBB4, 0x0002BBB8
+ .word 0x0002BBB8, 0x0002BBBC
+ .word 0x0002BBBC, 0x0002BBC0
+ .word 0x0002BBC0, 0x0002BBC4
+ .word 0x0002BBC4, 0x0002BBC8
+ .word 0x0002BBC8, 0x0002BBCC
+ .word 0x0002BBCC, 0x0002BBD0
+ .word 0x0002BBD0, 0x0002BBD4
+ .word 0x0002BBD4, 0x0002BBD8
+ .word 0x0002BBD8, 0x0002BBDC
+ .word 0x0002BBDC, 0x0002BBE0
+ .word 0x0002BBE0, 0x0002BBE4
+ .word 0x0002BBE4, 0x0002BBEC
+ .word 0x0002BBEC, 0x0002BBF4
+ .word 0x0002BBF4, 0x0002BBF8
+ .word 0x0002BBF8, 0x0002BC04
+ .word 0x0002BC04, 0x0002BC08
+ .word 0x0002BC08, 0x0002BC30
+ .word 0x0002BC30, 0x0002BC40
+ .word 0x0002BC40, 0x0002BC44
+ .word 0x0002BC44, 0x0002BC48
+ .word 0x0002BC48, 0x0002BC4C
+ .word 0x0002BC4C, 0x0002BC50
+ .word 0x0002BC50, 0x0002BC54
+ .word 0x0002BC54, 0x0002BC58
+ .word 0x0002BC58, 0x0002BC5C
+ .word 0x0002BC5C, 0x0002BC60
+ .word 0x0002BC60, 0x0002BC64
+ .word 0x0002BC64, 0x0002BC6C
+ .word 0x0002BC6C, 0x0002BC70
+ .word 0x0002BC70, 0x0002BC74
+ .word 0x0002BC74, 0x0002BC78
+ .word 0x0002BC78, 0x0002BC7C
+ .word 0x0002BC7C, 0x0002BC90
+ .word 0x0002BC90, 0x0002BC98
+ .word 0x0002BC98, 0x0002BCA0
+ .word 0x0002BCA0, 0x0002BCA8
+ .word 0x0002BCA8, 0x0002BCB0
+ .word 0x0002BCB0, 0x0002BCB8
+ .word 0x0002BCB8, 0x0002BCBC
+ .word 0x0002BCBC, 0x0002BCC0
+ .word 0x0002BCC0, 0x0002BCE8
+ .word 0x0002BCE8, 0x0002BCF8
+ .word 0x0002BCF8, 0x0002BCFC
+ .word 0x0002BCFC, 0x0002BD00
+ .word 0x0002BD00, 0x0002BD10
+ .word 0x0002BD10, 0x0002BD18
+ .word 0x0002BD18, 0x0002BD20
+ .word 0x0002BD20, 0x0002BD28
+ .word 0x0002BD28, 0x0002BD2C
+ .word 0x0002BD2C, 0x0002BD30
+ .word 0x0002BD30, 0x0002BD34
+ .word 0x0002BD34, 0x0002BD38
+ .word 0x0002BD38, 0x0002BD3C
+ .word 0x0002BD3C, 0x0002BD4C
+ .word 0x0002BD4C, 0x0002BD50
+ .word 0x0002BD50, 0x0002BD5C
+ .word 0x0002BD5C, 0x0002BD78
+ .word 0x0002BD78, 0x0002BD88
+ .word 0x0002BD88, 0x0002BD8C
+ .word 0x0002BD8C, 0x0002BD90
+ .word 0x0002BD90, 0x0002BD98
+ .word 0x0002BD98, 0x0002BDA0
+ .word 0x0002BDA0, 0x0002BDA8
+ .word 0x0002BDA8, 0x0002BDAC
+ .word 0x0002BDAC, 0x0002BDD4
+ .word 0x0002BDD4, 0x0002BDE4
+ .word 0x0002BDE4, 0x0002BDF8
+ .word 0x0002BDF8, 0x0002BDFC
+ .word 0x0002BDFC, 0x0002BE00
+ .word 0x0002BE00, 0x0002BE04
+ .word 0x0002BE04, 0x0002BE08
+ .word 0x0002BE08, 0x0002BE0C
+ .word 0x0002BE0C, 0x0002BE10
+ .word 0x0002BE10, 0x0002BE24
+ .word 0x0002BE24, 0x0002BE2C
+ .word 0x0002BE2C, 0x0002BE30
+ .word 0x0002BE30, 0x0002BE58
+ .word 0x0002BE58, 0x0002BE68
+ .word 0x0002BE68, 0x0002BE6C
+ .word 0x0002BE6C, 0x0002BE70
+ .word 0x0002BE70, 0x0002BE74
+ .word 0x0002BE74, 0x0002BE78
+ .word 0x0002BE78, 0x0002BE7C
+ .word 0x0002BE7C, 0x0002BE80
+ .word 0x0002BE80, 0x0002BE84
+ .word 0x0002BE84, 0x0002BE88
+ .word 0x0002BE88, 0x0002BE8C
+ .word 0x0002BE8C, 0x0002BE90
+ .word 0x0002BE90, 0x0002BE94
+ .word 0x0002BE94, 0x0002BE98
+ .word 0x0002BE98, 0x0002BE9C
+ .word 0x0002BE9C, 0x0002BEA0
+ .word 0x0002BEA0, 0x0002BEB4
+ .word 0x0002BEB4, 0x0002BEBC
+ .word 0x0002BEBC, 0x0002BEC4
+ .word 0x0002BEC4, 0x0002BECC
+ .word 0x0002BECC, 0x0002BED4
+ .word 0x0002BED4, 0x0002BED8
+ .word 0x0002BED8, 0x0002BF00
+ .word 0x0002BF00, 0x0002BF10
+ .word 0x0002BF10, 0x0002BF18
+ .word 0x0002BF18, 0x0002BF1C
+ .word 0x0002BF1C, 0x0002BF20
+ .word 0x0002BF20, 0x0002BF24
+ .word 0x0002BF24, 0x0002BF28
+ .word 0x0002BF28, 0x0002BF2C
+ .word 0x0002BF2C, 0x0002BF30
+ .word 0x0002BF30, 0x0002BF34
+ .word 0x0002BF34, 0x0002BF44
+ .word 0x0002BF44, 0x0002BF48
+ .word 0x0002BF48, 0x0002BF50
+ .word 0x0002BF50, 0x0002BF58
+ .word 0x0002BF58, 0x0002BF60
+ .word 0x0002BF60, 0x0002BF64
+ .word 0x0002BF64, 0x0002BF8C
+ .word 0x0002BF8C, 0x0002BF9C
+ .word 0x0002BF9C, 0x0002BFA0
+ .word 0x0002BFA0, 0x0002BFA4
+ .word 0x0002BFA4, 0x0002BFA8
+ .word 0x0002BFA8, 0x0002BFB0
+ .word 0x0002BFB0, 0x0002BFD8
+ .word 0x0002BFD8, 0x0002BFE8
+ .word 0x0002BFE8, 0x0002BFF0
+ .word 0x0002BFF0, 0x0002BFF8
+ .word 0x0002BFF8, 0x0002C008
+ .word 0x0002C008, 0x0002C010
+ .word 0x0002C010, 0x0002C020
+ .word 0x0002C020, 0x0002C028
+ .word 0x0002C028, 0x0002C038
+ .word 0x0002C038, 0x0002C040
+ .word 0x0002C040, 0x0002C050
+ .word 0x0002C050, 0x0002C058
+ .word 0x0002C058, 0x0002C06C
+ .word 0x0002C06C, 0x0002C07C
+ .word 0x0002C07C, 0x0002C08C
+ .word 0x0002C08C, 0x0002C0B4
+ .word 0x0002C0B4, 0x0002C0C4
+ .word 0x0002C0C4, 0x0002C0D8
+ .word 0x0002C0D8, 0x0002C0E0
+ .word 0x0002C0E0, 0x0002C0E4
+ .word 0x0002C0E4, 0x0002C10C
+ .word 0x0002C10C, 0x0002C11C
+ .word 0x0002C11C, 0x0002C130
+ .word 0x0002C130, 0x0002C134
+ .word 0x0002C134, 0x0002C138
+ .word 0x0002C138, 0x0002C13C
+ .word 0x0002C13C, 0x0002C140
+ .word 0x0002C140, 0x0002C148
+ .word 0x0002C148, 0x0002C14C
+ .word 0x0002C14C, 0x0002C15C
+ .word 0x0002C15C, 0x0002C170
+ .word 0x0002C170, 0x0002C178
+ .word 0x0002C178, 0x0002C180
+ .word 0x0002C180, 0x0002C184
+ .word 0x0002C184, 0x0002C18C
+ .word 0x0002C18C, 0x0002C194
+ .word 0x0002C194, 0x0002C198
+ .word 0x0002C198, 0x0002C19C
+ .word 0x0002C19C, 0x0002C1A0
+ .word 0x0002C1A0, 0x0002C1A4
+ .word 0x0002C1A4, 0x0002C1A8
+ .word 0x0002C1A8, 0x0002C1AC
+ .word 0x0002C1AC, 0x0002C1B0
+ .word 0x0002C1B0, 0x0002C1B4
+ .word 0x0002C1B4, 0x0002C1B8
+ .word 0x0002C1B8, 0x0002C1BC
+ .word 0x0002C1BC, 0x0002C1C0
+ .word 0x0002C1C0, 0x0002C1C4
+ .word 0x0002C1C4, 0x0002C1C8
+ .word 0x0002C1C8, 0x0002C1D4
+ .word 0x0002C1D4, 0x0002C1D8
+ .word 0x0002C1D8, 0x0002C1E4
+ .word 0x0002C1E4, 0x0002C1EC
+ .word 0x0002C1EC, 0x0002C1F0
+ .word 0x0002C1F0, 0x0002C1F8
+ .word 0x0002C1F8, 0x0002C200
+ .word 0x0002C200, 0x0002C208
+ .word 0x0002C208, 0x0002C210
+ .word 0x0002C210, 0x0002C218
+ .word 0x0002C218, 0x0002C220
+ .word 0x0002C220, 0x0002C224
+ .word 0x0002C224, 0x0002C22C
+ .word 0x0002C22C, 0x0002C230
+ .word 0x0002C230, 0x0002C234
+ .word 0x0002C234, 0x0002C238
+ .word 0x0002C238, 0x0002C23C
+ .word 0x0002C23C, 0x0002C240
+ .word 0x0002C240, 0x0002C244
+ .word 0x0002C244, 0x0002C248
+ .word 0x0002C248, 0x0002C24C
+ .word 0x0002C24C, 0x0002C250
+ .word 0x0002C250, 0x0002C254
+ .word 0x0002C254, 0x0002C258
+ .word 0x0002C258, 0x0002C25C
+ .word 0x0002C25C, 0x0002C260
+ .word 0x0002C260, 0x0002C264
+ .word 0x0002C264, 0x0002C268
+ .word 0x0002C268, 0x0002C26C
+ .word 0x0002C26C, 0x0002C274
+ .word 0x0002C274, 0x0002C278
+ .word 0x0002C278, 0x0002C27C
+ .word 0x0002C27C, 0x0002C284
+ .word 0x0002C284, 0x0002C288
+ .word 0x0002C288, 0x0002C28C
+ .word 0x0002C28C, 0x0002C2A0
+ .word 0x0002C2A0, 0x0002C2A8
+ .word 0x0002C2A8, 0x0002C2B0
+ .word 0x0002C2B0, 0x0002C2B4
+ .word 0x0002C2B4, 0x0002C2BC
+ .word 0x0002C2BC, 0x0002C2C0
+ .word 0x0002C2C0, 0x0002C2C8
+ .word 0x0002C2C8, 0x0002C2CC
+ .word 0x0002C2CC, 0x0002C2D4
+ .word 0x0002C2D4, 0x0002C2D8
+ .word 0x0002C2D8, 0x0002C2E0
+ .word 0x0002C2E0, 0x0002C2E8
+ .word 0x0002C2E8, 0x0002C2F0
+ .word 0x0002C2F0, 0x0002C2FC
+ .word 0x0002C2FC, 0x0002C304
+ .word 0x0002C304, 0x0002C308
+ .word 0x0002C308, 0x0002C310
+ .word 0x0002C310, 0x0002C318
+ .word 0x0002C318, 0x0002C324
+ .word 0x0002C324, 0x0002C32C
+ .word 0x0002C32C, 0x0002C334
+ .word 0x0002C334, 0x0002C33C
+ .word 0x0002C33C, 0x0002C344
+ .word 0x0002C344, 0x0002C34C
+ .word 0x0002C34C, 0x0002C354
+ .word 0x0002C354, 0x0002C35C
+ .word 0x0002C35C, 0x0002C364
+ .word 0x0002C364, 0x0002C36C
+ .word 0x0002C36C, 0x0002C374
+ .word 0x0002C374, 0x0002C37C
+ .word 0x0002C37C, 0x0002C384
+ .word 0x0002C384, 0x0002C38C
+ .word 0x0002C38C, 0x0002C394
+ .word 0x0002C394, 0x0002C39C
+ .word 0x0002C39C, 0x0002C3A4
+ .word 0x0002C3A4, 0x0002C3AC
+ .word 0x0002C3AC, 0x0002C3B4
+ .word 0x0002C3B4, 0x0002C3C0
+ .word 0x0002C3C0, 0x0002C3C4
+ .word 0x0002C3C4, 0x0002C3CC
+ .word 0x0002C3CC, 0x0002C3D0
+ .word 0x0002C3D0, 0x0002C3D4
+ .word 0x0002C3D4, 0x0002C3D8
+ .word 0x0002C3D8, 0x0002C3DC
+ .word 0x0002C3DC, 0x0002C3E4
+ .word 0x0002C3E4, 0x0002C3EC
+ .word 0x0002C3EC, 0x0002C3F0
+ .word 0x0002C3F0, 0x0002C3F8
+ .word 0x0002C3F8, 0x0002C3FC
+ .word 0x0002C3FC, 0x0002C400
+ .word 0x0002C400, 0x0002C408
+ .word 0x0002C408, 0x0002C410
+ .word 0x0002C410, 0x0002C418
+ .word 0x0002C418, 0x0002C41C
+ .word 0x0002C41C, 0x0002C424
+ .word 0x0002C424, 0x0002C428
+ .word 0x0002C428, 0x0002C430
+ .word 0x0002C430, 0x0002C438
+ .word 0x0002C438, 0x0002C440
+ .word 0x0002C440, 0x0002C448
+ .word 0x0002C448, 0x0002C45C
+ .word 0x0002C45C, 0x0002C460
+ .word 0x0002C460, 0x0002C464
+ .word 0x0002C464, 0x0002C468
+ .word 0x0002C468, 0x0002C46C
+ .word 0x0002C46C, 0x0002C470
+ .word 0x0002C470, 0x0002C484
+ .word 0x0002C484, 0x0002C488
+ .word 0x0002C488, 0x0002C490
+ .word 0x0002C490, 0x0002C494
+ .word 0x0002C494, 0x0002C498
+ .word 0x0002C498, 0x0002C49C
+ .word 0x0002C49C, 0x0002C4A0
+ .word 0x0002C4A0, 0x0002C4A4
+ .word 0x0002C4A4, 0x0002C4B0
+ .word 0x0002C4B0, 0x0002C4B4
+ .word 0x0002C4B4, 0x0002C4BC
+ .word 0x0002C4BC, 0x0002C4D4
+ .word 0x0002C4D4, 0x0002C4EC
+ .word 0x0002C4EC, 0x0002C4F4
+ .word 0x0002C4F4, 0x0002C4FC
+ .word 0x0002C4FC, 0x0002C500
+ .word 0x0002C500, 0x0002C504
+ .word 0x0002C504, 0x0002C510
+ .word 0x0002C510, 0x0002C518
+ .word 0x0002C518, 0x0002C51C
+ .word 0x0002C51C, 0x0002C52C
+ .word 0x0002C52C, 0x0002C538
+ .word 0x0002C538, 0x0002C540
+ .word 0x0002C540, 0x0002C54C
+ .word 0x0002C54C, 0x0002C550
+ .word 0x0002C550, 0x0002C554
+ .word 0x0002C554, 0x0002C558
+ .word 0x0002C558, 0x0002C584
+ .word 0x0002C584, 0x0002C5A4
+ .word 0x0002C5A4, 0x0002C5BC
+ .word 0x0002C5BC, 0x0002C5D4
+ .word 0x0002C5D4, 0x0002C5F4
+ .word 0x0002C5F4, 0x0002C614
+ .word 0x0002C614, 0x0002C634
+ .word 0x0002C634, 0x0002C63C
+ .word 0x0002C63C, 0x0002C644
+ .word 0x0002C644, 0x0002C648
+ .word 0x0002C648, 0x0002C64C
+ .word 0x0002C64C, 0x0002C664
+ .word 0x0002C664, 0x0002C668
+ .word 0x0002C668, 0x0002C674
+ .word 0x0002C674, 0x0002C688
+ .word 0x0002C688, 0x0002C68C
+ .word 0x0002C68C, 0x0002C690
+ .word 0x0002C690, 0x0002C69C
+ .word 0x0002C69C, 0x0002C6A0
+ .word 0x0002C6A0, 0x0002C6A8
+ .word 0x0002C6A8, 0x0002C6B0
+ .word 0x0002C6B0, 0x0002C6B4
+ .word 0x0002C6B4, 0x0002C6B8
+ .word 0x0002C6B8, 0x0002C6BC
+ .word 0x0002C6BC, 0x0002C6C4
+ .word 0x0002C6C4, 0x0002C6C8
+ .word 0x0002C6C8, 0x0002C6CC
+ .word 0x0002C6CC, 0x0002C6E4
+ .word 0x0002C6E4, 0x0002C6EC
+ .word 0x0002C6EC, 0x0002C6F0
+ .word 0x0002C6F0, 0x0002C6F8
+ .word 0x0002C6F8, 0x0002C6FC
+ .word 0x0002C6FC, 0x0002C704
+ .word 0x0002C704, 0x0002C70C
+ .word 0x0002C70C, 0x0002C714
+ .word 0x0002C714, 0x0002C718
+ .word 0x0002C718, 0x0002C71C
+ .word 0x0002C71C, 0x0002C720
+ .word 0x0002C720, 0x0002C724
+ .word 0x0002C724, 0x0002C72C
+ .word 0x0002C72C, 0x0002C734
+ .word 0x0002C734, 0x0002C738
+ .word 0x0002C738, 0x0002C740
+ .word 0x0002C740, 0x0002C744
+ .word 0x0002C744, 0x0002C748
+ .word 0x0002C748, 0x0002C750
+ .word 0x0002C750, 0x0002C758
+ .word 0x0002C758, 0x0002C75C
+ .word 0x0002C75C, 0x0002C764
+ .word 0x0002C764, 0x0002C76C
+ .word 0x0002C76C, 0x0002C774
+ .word 0x0002C774, 0x0002C77C
+ .word 0x0002C77C, 0x0002C780
+ .word 0x0002C780, 0x0002C788
+ .word 0x0002C788, 0x0002C790
+ .word 0x0002C790, 0x0002C794
+ .word 0x0002C794, 0x0002C798
+ .word 0x0002C798, 0x0002C79C
+ .word 0x0002C79C, 0x0002C7A8
+ .word 0x0002C7A8, 0x0002C7AC
+ .word 0x0002C7AC, 0x0002C7B4
+ .word 0x0002C7B4, 0x0002C7B8
+ .word 0x0002C7B8, 0x0002C7BC
+ .word 0x0002C7BC, 0x0002C7C0
+ .word 0x0002C7C0, 0x0002C7C4
+ .word 0x0002C7C4, 0x0002C7C8
+ .word 0x0002C7C8, 0x0002C7CC
+ .word 0x0002C7CC, 0x0002C7D0
+ .word 0x0002C7D0, 0x0002C7D4
+ .word 0x0002C7D4, 0x0002C7D8
+ .word 0x0002C7D8, 0x0002C7E0
+ .word 0x0002C7E0, 0x0002C800
+ .word 0x0002C800, 0x0002C804
+ .word 0x0002C804, 0x0002C80C
+ .word 0x0002C80C, 0x0002C814
+ .word 0x0002C814, 0x0002C81C
+ .word 0x0002C81C, 0x0002C820
+ .word 0x0002C820, 0x0002C82C
+ .word 0x0002C82C, 0x0002C830
+ .word 0x0002C830, 0x0002C834
+ .word 0x0002C834, 0x0002C838
+ .word 0x0002C838, 0x0002C83C
+ .word 0x0002C83C, 0x0002C840
+ .word 0x0002C840, 0x0002C844
+ .word 0x0002C844, 0x0002C848
+ .word 0x0002C848, 0x0002C84C
+ .word 0x0002C84C, 0x0002C850
+ .word 0x0002C850, 0x0002C854
+ .word 0x0002C854, 0x0002C858
+ .word 0x0002C858, 0x0002C85C
+ .word 0x0002C85C, 0x0002C864
+ .word 0x0002C864, 0x0002C868
+ .word 0x0002C868, 0x0002C878
+ .word 0x0002C878, 0x0002C898
+ .word 0x0002C898, 0x0002C8AC
+ .word 0x0002C8AC, 0x0002C8B0
+ .word 0x0002C8B0, 0x0002C8B4
+ .word 0x0002C8B4, 0x0002C8C8
+ .word 0x0002C8C8, 0x0002C8D0
+ .word 0x0002C8D0, 0x0002C8D4
+ .word 0x0002C8D4, 0x0002C8FC
+ .word 0x0002C8FC, 0x0002C90C
+ .word 0x0002C90C, 0x0002C920
+ .word 0x0002C920, 0x0002C924
+ .word 0x0002C924, 0x0002C928
+ .word 0x0002C928, 0x0002C92C
+ .word 0x0002C92C, 0x0002C934
+ .word 0x0002C934, 0x0002C93C
+ .word 0x0002C93C, 0x0002C940
+ .word 0x0002C940, 0x0002C968
+ .word 0x0002C968, 0x0002C978
+ .word 0x0002C978, 0x0002C97C
+ .word 0x0002C97C, 0x0002C980
+ .word 0x0002C980, 0x0002C984
+ .word 0x0002C984, 0x0002C990
+ .word 0x0002C990, 0x0002C998
+ .word 0x0002C998, 0x0002C99C
+ .word 0x0002C99C, 0x0002C9C4
+ .word 0x0002C9C4, 0x0002C9D4
+ .word 0x0002C9D4, 0x0002C9DC
+ .word 0x0002C9DC, 0x0002C9E0
+ .word 0x0002C9E0, 0x0002C9E4
+ .word 0x0002C9E4, 0x0002C9E8
+ .word 0x0002C9E8, 0x0002C9EC
+ .word 0x0002C9EC, 0x0002CA00
+ .word 0x0002CA00, 0x0002CA08
+ .word 0x0002CA08, 0x0002CA0C
+ .word 0x0002CA0C, 0x0002CA34
+ .word 0x0002CA34, 0x0002CA44
+ .word 0x0002CA44, 0x0002CA4C
+ .word 0x0002CA4C, 0x0002CA50
+ .word 0x0002CA50, 0x0002CA54
+ .word 0x0002CA54, 0x0002CA58
+ .word 0x0002CA58, 0x0002CA5C
+ .word 0x0002CA5C, 0x0002CA60
+ .word 0x0002CA60, 0x0002CA68
+ .word 0x0002CA68, 0x0002CA6C
+ .word 0x0002CA6C, 0x0002CA94
+ .word 0x0002CA94, 0x0002CAA4
+ .word 0x0002CAA4, 0x0002CAA8
+ .word 0x0002CAA8, 0x0002CAAC
+ .word 0x0002CAAC, 0x0002CAB0
+ .word 0x0002CAB0, 0x0002CAB4
+ .word 0x0002CAB4, 0x0002CABC
+ .word 0x0002CABC, 0x0002CAC0
+ .word 0x0002CAC0, 0x0002CAE8
+ .word 0x0002CAE8, 0x0002CAF8
+ .word 0x0002CAF8, 0x0002CB0C
+ .word 0x0002CB0C, 0x0002CB10
+ .word 0x0002CB10, 0x0002CB14
+ .word 0x0002CB14, 0x0002CB18
+ .word 0x0002CB18, 0x0002CB1C
+ .word 0x0002CB1C, 0x0002CB34
+ .word 0x0002CB34, 0x0002CB44
+ .word 0x0002CB44, 0x0002CB48
+ .word 0x0002CB48, 0x0002CB4C
+ .word 0x0002CB4C, 0x0002CB50
+ .word 0x0002CB50, 0x0002CB58
+ .word 0x0002CB58, 0x0002CB5C
+ .word 0x0002CB5C, 0x0002CF08
+ .word 0x0002CF08, 0x0002D57C
+ .word 0x0002D57C, 0x0002D63C
+ .word 0x0002D63C, 0x0002D6F8
+ .word 0x0002D6F8, 0x0002E048
+ .word 0x0002E048, 0x0002E0E0
+ .word 0x0002E0E0, 0x0002E11C
+ .word 0x0002E11C, 0x0002E17C
+ .word 0x0002E17C, 0x0002E994
+ .word 0x0002E994, 0x0002E9E4
+ .word 0x0002E9E4, 0x0002EA3C
+ .word 0x0002EA3C, 0x0002EA58
+ .word 0x0002EA58, 0x0002EA60
+ .word 0x0002EA60, 0x0002F174
+ .word 0x0002F174, 0x0002F28C
+ .word 0x0002F28C, 0x0002F2BC
+ .word 0x0002F2BC, 0x0002F2EC
+ .word 0x0002F2EC, 0x0002F548
+ .word 0x0002F548, 0x0002F5AC
+ .word 0x0002F5AC, 0x0002F604
+ .word 0x0002F604, 0x0002F60C
+ .word 0x0002F60C, 0x0002F614
+ .word 0x0002F614, 0x0002F6CC
+ .word 0x0002F6CC, 0x0002F6FC
+ .word 0x0002F6FC, 0x0002F7C4
+ .word 0x0002F7C4, 0x0002F92C
+ .word 0x0002F92C, 0x0002F990
+ .word 0x0002F990, 0x0002F9D0
+ .word 0x0002F9D0, 0x0002F9D8
+ .word 0x0002F9D8, 0x0002F9E0
+ .word 0x0002F9E0, 0x0002FA50
+ .word 0x0002FA50, 0x0002FA90
+ .word 0x0002FA90, 0x0002FDC8
+ .word 0x0002FDC8, 0x0002FDF8
+ .word 0x0002FDF8, 0x0002FF40
+ .word 0x0002FF40, 0x000302B4
+ .word 0x000302B4, 0x000302EC
+ .word 0x000302EC, 0x000303D0
+ .word 0x000303D0, 0x000303D8
+ .word 0x000303D8, 0x000303E0
+ .word 0x000303E0, 0x000304D0
+ .word 0x000304D0, 0x00030650
+ .word 0x00030650, 0x00030680
+ .word 0x00030680, 0x000306E4
+ .word 0x000306E4, 0x00030870
+ .word 0x00030870, 0x00030918
+ .word 0x00030918, 0x00030968
+ .word 0x00030968, 0x000309C0
+ .word 0x000309C0, 0x000309C8
+ .word 0x000309C8, 0x000309D0
+ .word 0x000309D0, 0x00030AC0
+ .word 0x00030AC0, 0x00030B20
+ .word 0x00030B20, 0x00030B3C
+ .word 0x00030B3C, 0x00030BE8
+ .word 0x00030BE8, 0x00030C0C
+ .word 0x00030C0C, 0x00030C4C
+ .word 0x00030C4C, 0x00030C54
+ .word 0x00030C54, 0x00030C5C
+ .word 0x00030C5C, 0x00030F40
+ .word 0x00030F40, 0x00031248
+ .word 0x00031248, 0x000313CC
+ .word 0x000313CC, 0x00031440
+ .word 0x00031440, 0x0003148C
+ .word 0x0003148C, 0x000325BC
+ .word 0x000325BC, 0x000326D0
+ .word 0x000326D0, 0x00032900
+ .word 0x00032900, 0x00032C38
+ .word 0x00032C38, 0x00033740
+ .word 0x00033740, 0x00033748
+ .word 0x00033748, 0x00033750
+ .word 0x00033750, 0x00033788
+ .word 0x00033788, 0x00033880
+ .word 0x00033880, 0x000338CC
+ .word 0x000338CC, 0x000338CC
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x000338D4 ; chunk size
+ .incbin "baserom.nds", 0x1D7290C, 0x338CC
+ .balign 512, 255
diff --git a/files/FILE_1DA6200_bag_gra.narc.s b/files/FILE_1DA6200_bag_gra.narc.s
new file mode 100644
index 00000000..c5684b59
--- /dev/null
+++ b/files/FILE_1DA6200_bag_gra.narc.s
@@ -0,0 +1,67 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00019C74 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000144 ; chunk size
+ .short 39 ; number of files
+ .balign 4
+ .word 0x00000000, 0x0000055C
+ .word 0x0000055C, 0x00000708
+ .word 0x00000708, 0x00004738
+ .word 0x00004738, 0x00004960
+ .word 0x00004960, 0x00004A50
+ .word 0x00004A50, 0x00004B28
+ .word 0x00004B28, 0x00004C58
+ .word 0x00004C58, 0x00006898
+ .word 0x00006898, 0x00006AC0
+ .word 0x00006AC0, 0x000072E4
+ .word 0x000072E4, 0x00007B08
+ .word 0x00007B08, 0x00008B48
+ .word 0x00008B48, 0x00008D70
+ .word 0x00008D70, 0x00009394
+ .word 0x00009394, 0x000095BC
+ .word 0x000095BC, 0x0000FB3C
+ .word 0x0000FB3C, 0x0000FD64
+ .word 0x0000FD64, 0x000105A4
+ .word 0x000105A4, 0x000107CC
+ .word 0x000107CC, 0x0001083B
+ .word 0x0001083C, 0x000108A7
+ .word 0x000108A8, 0x00010958
+ .word 0x00010958, 0x000109C7
+ .word 0x000109C8, 0x00010A43
+ .word 0x00010A44, 0x000113F4
+ .word 0x000113F4, 0x00011463
+ .word 0x00011464, 0x000114E7
+ .word 0x000114E8, 0x00011998
+ .word 0x00011998, 0x00011A17
+ .word 0x00011A18, 0x00011AAB
+ .word 0x00011AAC, 0x000134DC
+ .word 0x000134DC, 0x00013704
+ .word 0x00013704, 0x00013C60
+ .word 0x00013C60, 0x00013E0C
+ .word 0x00013E0C, 0x00017E3C
+ .word 0x00017E3C, 0x00018064
+ .word 0x00018064, 0x00018488
+ .word 0x00018488, 0x000198C8
+ .word 0x000198C8, 0x00019B08
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00019B10 ; chunk size
+ .incbin "baserom.nds", 0x1DA636C, 0x19B08
+ .balign 512, 255
diff --git a/files/FILE_1DC0000_box.narc.s b/files/FILE_1DC0000_box.narc.s
new file mode 100644
index 00000000..a66b692f
--- /dev/null
+++ b/files/FILE_1DC0000_box.narc.s
@@ -0,0 +1,149 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x0001BB20 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x000003D4 ; chunk size
+ .short 121 ; number of files
+ .balign 4
+ .word 0x00000000, 0x0000015A
+ .word 0x0000015C, 0x00000B34
+ .word 0x00000B34, 0x00000BAE
+ .word 0x00000BB0, 0x00000C44
+ .word 0x00000C44, 0x00000D66
+ .word 0x00000D68, 0x00000E8E
+ .word 0x00000E90, 0x00000FCA
+ .word 0x00000FCC, 0x000011E3
+ .word 0x000011E4, 0x000013FB
+ .word 0x000013FC, 0x00001BA9
+ .word 0x00001BAC, 0x00001C37
+ .word 0x00001C38, 0x00001CB3
+ .word 0x00001CB4, 0x00001F7F
+ .word 0x00001F80, 0x0000203A
+ .word 0x0000203C, 0x0000217C
+ .word 0x0000217C, 0x0000220B
+ .word 0x0000220C, 0x00002267
+ .word 0x00002268, 0x00002369
+ .word 0x0000236C, 0x000023BB
+ .word 0x000023BC, 0x00002415
+ .word 0x00002418, 0x00002472
+ .word 0x00002474, 0x000024D0
+ .word 0x000024D0, 0x00002684
+ .word 0x00002684, 0x00002700
+ .word 0x00002700, 0x0000283B
+ .word 0x0000283C, 0x0000293F
+ .word 0x00002940, 0x000029BC
+ .word 0x000029BC, 0x00002A38
+ .word 0x00002A38, 0x00002A92
+ .word 0x00002A94, 0x00003452
+ .word 0x00003454, 0x00003827
+ .word 0x00003828, 0x00003882
+ .word 0x00003884, 0x000040EE
+ .word 0x000040F0, 0x000044C3
+ .word 0x000044C4, 0x0000451E
+ .word 0x00004520, 0x00004EAB
+ .word 0x00004EAC, 0x0000527F
+ .word 0x00005280, 0x000052DA
+ .word 0x000052DC, 0x00005B0F
+ .word 0x00005B10, 0x00005EE3
+ .word 0x00005EE4, 0x00005F3E
+ .word 0x00005F40, 0x000069D6
+ .word 0x000069D8, 0x00006DAB
+ .word 0x00006DAC, 0x00006E06
+ .word 0x00006E08, 0x000077C3
+ .word 0x000077C4, 0x00007B97
+ .word 0x00007B98, 0x00007BF2
+ .word 0x00007BF4, 0x00008476
+ .word 0x00008478, 0x0000884B
+ .word 0x0000884C, 0x000088A6
+ .word 0x000088A8, 0x00009251
+ .word 0x00009254, 0x00009627
+ .word 0x00009628, 0x00009682
+ .word 0x00009684, 0x00009F2E
+ .word 0x00009F30, 0x0000A303
+ .word 0x0000A304, 0x0000A35E
+ .word 0x0000A360, 0x0000AD05
+ .word 0x0000AD08, 0x0000B0DB
+ .word 0x0000B0DC, 0x0000B136
+ .word 0x0000B138, 0x0000BB51
+ .word 0x0000BB54, 0x0000BF27
+ .word 0x0000BF28, 0x0000BF82
+ .word 0x0000BF84, 0x0000C967
+ .word 0x0000C968, 0x0000CD3B
+ .word 0x0000CD3C, 0x0000CD96
+ .word 0x0000CD98, 0x0000D5D7
+ .word 0x0000D5D8, 0x0000D9AB
+ .word 0x0000D9AC, 0x0000DA06
+ .word 0x0000DA08, 0x0000E1C6
+ .word 0x0000E1C8, 0x0000E59B
+ .word 0x0000E59C, 0x0000E5F6
+ .word 0x0000E5F8, 0x0000ED79
+ .word 0x0000ED7C, 0x0000F14F
+ .word 0x0000F150, 0x0000F1AA
+ .word 0x0000F1AC, 0x0000F99B
+ .word 0x0000F99C, 0x0000FD6F
+ .word 0x0000FD70, 0x0000FDCA
+ .word 0x0000FDCC, 0x000107E8
+ .word 0x000107E8, 0x00010BBB
+ .word 0x00010BBC, 0x00010C16
+ .word 0x00010C18, 0x00011637
+ .word 0x00011638, 0x00011A0B
+ .word 0x00011A0C, 0x00011A66
+ .word 0x00011A68, 0x00012335
+ .word 0x00012338, 0x0001270B
+ .word 0x0001270C, 0x00012766
+ .word 0x00012768, 0x000131B8
+ .word 0x000131B8, 0x0001358B
+ .word 0x0001358C, 0x000135E6
+ .word 0x000135E8, 0x000144C5
+ .word 0x000144C8, 0x0001489B
+ .word 0x0001489C, 0x000148F6
+ .word 0x000148F8, 0x0001552B
+ .word 0x0001552C, 0x000158FF
+ .word 0x00015900, 0x0001595A
+ .word 0x0001595C, 0x0001672C
+ .word 0x0001672C, 0x00016AFF
+ .word 0x00016B00, 0x00016B5A
+ .word 0x00016B5C, 0x00017545
+ .word 0x00017548, 0x0001791B
+ .word 0x0001791C, 0x00017A90
+ .word 0x00017A90, 0x00017D01
+ .word 0x00017D04, 0x0001807A
+ .word 0x0001807C, 0x00018850
+ .word 0x00018850, 0x000188EE
+ .word 0x000188F0, 0x00018A77
+ .word 0x00018A78, 0x00018DDA
+ .word 0x00018DDC, 0x00018F67
+ .word 0x00018F68, 0x00019AF7
+ .word 0x00019AF8, 0x00019BB8
+ .word 0x00019BB8, 0x0001A308
+ .word 0x0001A308, 0x0001A3D6
+ .word 0x0001A3D8, 0x0001A4A8
+ .word 0x0001A4A8, 0x0001A546
+ .word 0x0001A548, 0x0001ACEA
+ .word 0x0001ACEC, 0x0001AD61
+ .word 0x0001AD64, 0x0001ADF0
+ .word 0x0001ADF0, 0x0001B43E
+ .word 0x0001B440, 0x0001B554
+ .word 0x0001B554, 0x0001B6A6
+ .word 0x0001B6A8, 0x0001B724
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x0001B72C ; chunk size
+ .incbin "baserom.nds", 0x1DC03FC, 0x1B724
+ .balign 512, 255
diff --git a/files/FILE_1DDBC00_btower.narc.s b/files/FILE_1DDBC00_btower.narc.s
new file mode 100644
index 00000000..e05c86d0
--- /dev/null
+++ b/files/FILE_1DDBC00_btower.narc.s
@@ -0,0 +1,37 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x000041F8 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000054 ; chunk size
+ .short 9 ; number of files
+ .balign 4
+ .word 0x00000000, 0x0000007C
+ .word 0x0000007C, 0x000013AC
+ .word 0x000013AC, 0x000014EA
+ .word 0x000014EC, 0x0000162E
+ .word 0x00001630, 0x000016CE
+ .word 0x000016D0, 0x00002F10
+ .word 0x00002F10, 0x00003534
+ .word 0x00003534, 0x00003B58
+ .word 0x00003B58, 0x0000417C
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00004184 ; chunk size
+ .incbin "baserom.nds", 0x1DDBC7C, 0x417C
+ .balign 512, 255
diff --git a/files/FILE_1DDFE00_config_gra.narc.s b/files/FILE_1DDFE00_config_gra.narc.s
new file mode 100644
index 00000000..138a4fba
--- /dev/null
+++ b/files/FILE_1DDFE00_config_gra.narc.s
@@ -0,0 +1,31 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x000002AC ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000024 ; chunk size
+ .short 3 ; number of files
+ .balign 4
+ .word 0x00000000, 0x0000005A
+ .word 0x0000005C, 0x0000013C
+ .word 0x0000013C, 0x00000260
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00000268 ; chunk size
+ .incbin "baserom.nds", 0x1DDFE4C, 0x260
+ .balign 512, 255
diff --git a/files/FILE_1DE0200_demo_trade.narc.s b/files/FILE_1DE0200_demo_trade.narc.s
new file mode 100644
index 00000000..61989d32
--- /dev/null
+++ b/files/FILE_1DE0200_demo_trade.narc.s
@@ -0,0 +1,56 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00007B18 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x000000EC ; chunk size
+ .short 28 ; number of files
+ .balign 4
+ .word 0x00000000, 0x0000080E
+ .word 0x00000810, 0x0000101E
+ .word 0x00001020, 0x00001217
+ .word 0x00001218, 0x00001452
+ .word 0x00001454, 0x00001D78
+ .word 0x00001D78, 0x0000274B
+ .word 0x0000274C, 0x00002986
+ .word 0x00002988, 0x00002AE3
+ .word 0x00002AE4, 0x00002BC1
+ .word 0x00002BC4, 0x000031E1
+ .word 0x000031E4, 0x00003260
+ .word 0x00003260, 0x000032E0
+ .word 0x000032E0, 0x0000334A
+ .word 0x0000334C, 0x000033AA
+ .word 0x000033AC, 0x00003406
+ .word 0x00003408, 0x00003ABD
+ .word 0x00003AC0, 0x00004AD3
+ .word 0x00004AD4, 0x00004B94
+ .word 0x00004B94, 0x00004C85
+ .word 0x00004C88, 0x00004D12
+ .word 0x00004D14, 0x00004D6E
+ .word 0x00004D70, 0x00004E4F
+ .word 0x00004E50, 0x00004E93
+ .word 0x00004E94, 0x00004EEE
+ .word 0x00004EF0, 0x000053B6
+ .word 0x000053B8, 0x000057ED
+ .word 0x000057F0, 0x0000584A
+ .word 0x0000584C, 0x00007A04
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00007A0C ; chunk size
+ .incbin "baserom.nds", 0x1DE0314, 0x7A04
+ .balign 512, 255
diff --git a/files/FILE_1DE7E00_dendou_demo.narc.s b/files/FILE_1DE7E00_dendou_demo.narc.s
new file mode 100644
index 00000000..74ede1d0
--- /dev/null
+++ b/files/FILE_1DE7E00_dendou_demo.narc.s
@@ -0,0 +1,33 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x0000061C ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000034 ; chunk size
+ .short 5 ; number of files
+ .balign 4
+ .word 0x00000000, 0x0000013D
+ .word 0x00000140, 0x00000284
+ .word 0x00000284, 0x0000039F
+ .word 0x000003A0, 0x0000051D
+ .word 0x00000520, 0x000005BE
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x000005C8 ; chunk size
+ .incbin "baserom.nds", 0x1DE7E5C, 0x5C0
+ .balign 512, 255
diff --git a/files/FILE_1DE8600_dendou_pc.narc.s b/files/FILE_1DE8600_dendou_pc.narc.s
new file mode 100644
index 00000000..ac27a920
--- /dev/null
+++ b/files/FILE_1DE8600_dendou_pc.narc.s
@@ -0,0 +1,31 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x0000029C ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000024 ; chunk size
+ .short 3 ; number of files
+ .balign 4
+ .word 0x00000000, 0x0000011B
+ .word 0x0000011C, 0x000001D2
+ .word 0x000001D4, 0x00000250
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00000258 ; chunk size
+ .incbin "baserom.nds", 0x1DE864C, 0x250
+ .balign 512, 255
diff --git a/files/FILE_1DE8A00_ending.narc.s b/files/FILE_1DE8A00_ending.narc.s
new file mode 100644
index 00000000..93bda42b
--- /dev/null
+++ b/files/FILE_1DE8A00_ending.narc.s
@@ -0,0 +1,95 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x0005169C ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000224 ; chunk size
+ .short 67 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00001F58
+ .word 0x00001F58, 0x00003EB0
+ .word 0x00003EB0, 0x00005DEC
+ .word 0x00005DEC, 0x000062F8
+ .word 0x000062F8, 0x0000731C
+ .word 0x0000731C, 0x0000B35C
+ .word 0x0000B35C, 0x0000C380
+ .word 0x0000C380, 0x0000E3C0
+ .word 0x0000E3C0, 0x0000F3E4
+ .word 0x0000F3E4, 0x00011224
+ .word 0x00011224, 0x00012248
+ .word 0x00012248, 0x00014588
+ .word 0x00014588, 0x000155AC
+ .word 0x000155AC, 0x000173EC
+ .word 0x000173EC, 0x00018410
+ .word 0x00018410, 0x0001AC50
+ .word 0x0001AC50, 0x0001BC74
+ .word 0x0001BC74, 0x0001DFB4
+ .word 0x0001DFB4, 0x0001EFD8
+ .word 0x0001EFD8, 0x00021818
+ .word 0x00021818, 0x00021E3C
+ .word 0x00021E3C, 0x0002227C
+ .word 0x0002227C, 0x000228A0
+ .word 0x000228A0, 0x000230E0
+ .word 0x000230E0, 0x00023704
+ .word 0x00023704, 0x00024B44
+ .word 0x00024B44, 0x00025168
+ .word 0x00025168, 0x00026DA8
+ .word 0x00026DA8, 0x000273CC
+ .word 0x000273CC, 0x00027C0C
+ .word 0x00027C0C, 0x00028230
+ .word 0x00028230, 0x00028E70
+ .word 0x00028E70, 0x00029494
+ .word 0x00029494, 0x0002A8D4
+ .word 0x0002A8D4, 0x0002AEF8
+ .word 0x0002AEF8, 0x0002AF78
+ .word 0x0002AF78, 0x0002B59C
+ .word 0x0002B59C, 0x0002D9DC
+ .word 0x0002D9DC, 0x0002E000
+ .word 0x0002E000, 0x0003A040
+ .word 0x0003A040, 0x0003A664
+ .word 0x0003A664, 0x0003CAA4
+ .word 0x0003CAA4, 0x0003D2C8
+ .word 0x0003D2C8, 0x0003EB08
+ .word 0x0003EB08, 0x0003EB62
+ .word 0x0003EB64, 0x0003EDAB
+ .word 0x0003EDAC, 0x0003EF03
+ .word 0x0003EF04, 0x00046734
+ .word 0x00046734, 0x000467D2
+ .word 0x000467D4, 0x00046A1B
+ .word 0x00046A1C, 0x00046B73
+ .word 0x00046B74, 0x0004E3A4
+ .word 0x0004E3A4, 0x0004E442
+ .word 0x0004E444, 0x0004E4E3
+ .word 0x0004E4E4, 0x0004E553
+ .word 0x0004E554, 0x0004FE04
+ .word 0x0004FE04, 0x0004FE80
+ .word 0x0004FE80, 0x0004FEFB
+ .word 0x0004FEFC, 0x0004FF6B
+ .word 0x0004FF6C, 0x00050A9C
+ .word 0x00050A9C, 0x00050AF6
+ .word 0x00050AF8, 0x00050BCA
+ .word 0x00050BCC, 0x00050C96
+ .word 0x00050C98, 0x000511C8
+ .word 0x000511C8, 0x00051222
+ .word 0x00051224, 0x000513F4
+ .word 0x000513F4, 0x0005144E
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00051458 ; chunk size
+ .incbin "baserom.nds", 0x1DE8C4C, 0x51450
+ .balign 512, 255
diff --git a/files/FILE_1DFE00.s b/files/FILE_1DFE00.s
new file mode 100644
index 00000000..5e5e8a7c
--- /dev/null
+++ b/files/FILE_1DFE00.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x1DFE00, 0x19260
+ .balign 512, 255
diff --git a/files/FILE_1E3A200_ev_pokeselect.narc.s b/files/FILE_1E3A200_ev_pokeselect.narc.s
new file mode 100644
index 00000000..01d04322
--- /dev/null
+++ b/files/FILE_1E3A200_ev_pokeselect.narc.s
@@ -0,0 +1,46 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00022524 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x0000009C ; chunk size
+ .short 18 ; number of files
+ .balign 4
+ .word 0x00000000, 0x000017D4
+ .word 0x000017D4, 0x0000EB40
+ .word 0x0000EB40, 0x0000EE44
+ .word 0x0000EE44, 0x00011478
+ .word 0x00011478, 0x0001177C
+ .word 0x0001177C, 0x00013E08
+ .word 0x00013E08, 0x0001410C
+ .word 0x0001410C, 0x00016790
+ .word 0x00016790, 0x0001E394
+ .word 0x0001E394, 0x0001F87C
+ .word 0x0001F87C, 0x0001FAAC
+ .word 0x0001FAAC, 0x0001FCD4
+ .word 0x0001FCD4, 0x0001FD37
+ .word 0x0001FD38, 0x0001FDA7
+ .word 0x0001FDA8, 0x00021DE8
+ .word 0x00021DE8, 0x00022010
+ .word 0x00022010, 0x00022238
+ .word 0x00022238, 0x00022460
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00022468 ; chunk size
+ .incbin "baserom.nds", 0x1E3A2C4, 0x22460
+ .balign 512, 255
diff --git a/files/FILE_1E5C800_f_note_gra.narc.s b/files/FILE_1E5C800_f_note_gra.narc.s
new file mode 100644
index 00000000..a6063816
--- /dev/null
+++ b/files/FILE_1E5C800_f_note_gra.narc.s
@@ -0,0 +1,34 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x0000297C ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x0000003C ; chunk size
+ .short 6 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000624
+ .word 0x00000624, 0x00000C48
+ .word 0x00000C48, 0x00001888
+ .word 0x00001888, 0x000024C8
+ .word 0x000024C8, 0x000026F0
+ .word 0x000026F0, 0x00002918
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00002920 ; chunk size
+ .incbin "baserom.nds", 0x1E5C864, 0x2918
+ .balign 512, 255
diff --git a/files/FILE_1E5F200_field_board.narc.s b/files/FILE_1E5F200_field_board.narc.s
new file mode 100644
index 00000000..17656158
--- /dev/null
+++ b/files/FILE_1E5F200_field_board.narc.s
@@ -0,0 +1,80 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x0000A8FC ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x000001AC ; chunk size
+ .short 52 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000280
+ .word 0x00000280, 0x000004A8
+ .word 0x000004A8, 0x000007E8
+ .word 0x000007E8, 0x00000B28
+ .word 0x00000B28, 0x00000E68
+ .word 0x00000E68, 0x000011A8
+ .word 0x000011A8, 0x000014E8
+ .word 0x000014E8, 0x00001828
+ .word 0x00001828, 0x00001B68
+ .word 0x00001B68, 0x00001EA8
+ .word 0x00001EA8, 0x000021E8
+ .word 0x000021E8, 0x00002528
+ .word 0x00002528, 0x00002868
+ .word 0x00002868, 0x00002BA8
+ .word 0x00002BA8, 0x00002EE8
+ .word 0x00002EE8, 0x00003228
+ .word 0x00003228, 0x00003568
+ .word 0x00003568, 0x000038A8
+ .word 0x000038A8, 0x00003BE8
+ .word 0x00003BE8, 0x00003F28
+ .word 0x00003F28, 0x00004268
+ .word 0x00004268, 0x000045A8
+ .word 0x000045A8, 0x000048E8
+ .word 0x000048E8, 0x00004C28
+ .word 0x00004C28, 0x00004F68
+ .word 0x00004F68, 0x000052A8
+ .word 0x000052A8, 0x000055E8
+ .word 0x000055E8, 0x00005928
+ .word 0x00005928, 0x00005C68
+ .word 0x00005C68, 0x00005FA8
+ .word 0x00005FA8, 0x000062E8
+ .word 0x000062E8, 0x00006628
+ .word 0x00006628, 0x00006968
+ .word 0x00006968, 0x00006CA8
+ .word 0x00006CA8, 0x00006FE8
+ .word 0x00006FE8, 0x00007328
+ .word 0x00007328, 0x00007668
+ .word 0x00007668, 0x000079A8
+ .word 0x000079A8, 0x00007CE8
+ .word 0x00007CE8, 0x00008028
+ .word 0x00008028, 0x00008368
+ .word 0x00008368, 0x000086A8
+ .word 0x000086A8, 0x000089E8
+ .word 0x000089E8, 0x00008D28
+ .word 0x00008D28, 0x00009068
+ .word 0x00009068, 0x000093A8
+ .word 0x000093A8, 0x000096E8
+ .word 0x000096E8, 0x00009A28
+ .word 0x00009A28, 0x00009D68
+ .word 0x00009D68, 0x0000A0A8
+ .word 0x0000A0A8, 0x0000A3E8
+ .word 0x0000A3E8, 0x0000A728
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x0000A730 ; chunk size
+ .incbin "baserom.nds", 0x1E5F3D4, 0xA728
+ .balign 512, 255
diff --git a/files/FILE_1E69C00_field_encounteffect.narc.s b/files/FILE_1E69C00_field_encounteffect.narc.s
new file mode 100644
index 00000000..d2fb6944
--- /dev/null
+++ b/files/FILE_1E69C00_field_encounteffect.narc.s
@@ -0,0 +1,54 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00009708 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x000000DC ; chunk size
+ .short 26 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000228
+ .word 0x00000228, 0x00000450
+ .word 0x00000450, 0x00000C80
+ .word 0x00000C80, 0x00000CEF
+ .word 0x00000CF0, 0x00000D5B
+ .word 0x00000D5C, 0x00002D8C
+ .word 0x00002D8C, 0x00002E51
+ .word 0x00002E54, 0x00002F25
+ .word 0x00002F28, 0x00004F58
+ .word 0x00004F58, 0x00004FC7
+ .word 0x00004FC8, 0x00005043
+ .word 0x00005044, 0x0000526C
+ .word 0x0000526C, 0x00005EAC
+ .word 0x00005EAC, 0x000062D0
+ .word 0x000062D0, 0x000064F8
+ .word 0x000064F8, 0x00007D28
+ .word 0x00007D28, 0x000080BA
+ .word 0x000080BC, 0x0000822E
+ .word 0x00008230, 0x00008458
+ .word 0x00008458, 0x00008680
+ .word 0x00008680, 0x000088A8
+ .word 0x000088A8, 0x00008AD0
+ .word 0x00008AD0, 0x00008CF8
+ .word 0x00008CF8, 0x00009528
+ .word 0x00009528, 0x00009593
+ .word 0x00009594, 0x00009603
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x0000960C ; chunk size
+ .incbin "baserom.nds", 0x1E69D04, 0x9604
+ .balign 512, 255
diff --git a/files/FILE_1E73400_fld_comact.narc.s b/files/FILE_1E73400_fld_comact.narc.s
new file mode 100644
index 00000000..28ca9342
--- /dev/null
+++ b/files/FILE_1E73400_fld_comact.narc.s
@@ -0,0 +1,32 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00000364 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x0000002C ; chunk size
+ .short 4 ; number of files
+ .balign 4
+ .word 0x00000000, 0x0000005A
+ .word 0x0000005C, 0x0000018C
+ .word 0x0000018C, 0x0000021A
+ .word 0x0000021C, 0x0000030E
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00000318 ; chunk size
+ .incbin "baserom.nds", 0x1E73454, 0x310
+ .balign 512, 255
diff --git a/files/FILE_1E73800_font.narc.s b/files/FILE_1E73800_font.narc.s
new file mode 100644
index 00000000..b6ee8a51
--- /dev/null
+++ b/files/FILE_1E73800_font.narc.s
@@ -0,0 +1,36 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00020E58 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x0000004C ; chunk size
+ .short 8 ; number of files
+ .balign 4
+ .word 0x00000000, 0x0000814D
+ .word 0x00008150, 0x0001029D
+ .word 0x000102A0, 0x000183ED
+ .word 0x000183F0, 0x0002053D
+ .word 0x00020540, 0x000206EC
+ .word 0x000206EC, 0x00020D2C
+ .word 0x00020D2C, 0x00020D86
+ .word 0x00020D88, 0x00020DE2
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00020DEC ; chunk size
+ .incbin "baserom.nds", 0x1E73874, 0x20DE4
+ .balign 512, 255
diff --git a/files/FILE_1E94800_fontoam.narc.s b/files/FILE_1E94800_fontoam.narc.s
new file mode 100644
index 00000000..81994b13
--- /dev/null
+++ b/files/FILE_1E94800_fontoam.narc.s
@@ -0,0 +1,40 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x000005A4 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x0000006C ; chunk size
+ .short 12 ; number of files
+ .balign 4
+ .word 0x00000000, 0x0000006B
+ .word 0x0000006C, 0x000000D7
+ .word 0x000000D8, 0x00000143
+ .word 0x00000144, 0x000001AF
+ .word 0x000001B0, 0x0000021B
+ .word 0x0000021C, 0x00000287
+ .word 0x00000288, 0x000002F3
+ .word 0x000002F4, 0x0000035F
+ .word 0x00000360, 0x000003CB
+ .word 0x000003CC, 0x00000437
+ .word 0x00000438, 0x000004A3
+ .word 0x000004A4, 0x0000050F
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00000518 ; chunk size
+ .incbin "baserom.nds", 0x1E94894, 0x510
+ .balign 512, 255
diff --git a/files/FILE_1E94E00_hiden_effect.narc.s b/files/FILE_1E94E00_hiden_effect.narc.s
new file mode 100644
index 00000000..8b4c70ef
--- /dev/null
+++ b/files/FILE_1E94E00_hiden_effect.narc.s
@@ -0,0 +1,43 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00007E14 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000084 ; chunk size
+ .short 15 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00001284
+ .word 0x00001284, 0x0000148C
+ .word 0x0000148C, 0x000017E8
+ .word 0x000017E8, 0x00002880
+ .word 0x00002880, 0x00004180
+ .word 0x00004180, 0x00004330
+ .word 0x00004330, 0x00004404
+ .word 0x00004404, 0x00004760
+ .word 0x00004760, 0x000054F0
+ .word 0x000054F0, 0x000056A4
+ .word 0x000056A4, 0x000057D4
+ .word 0x000057D4, 0x000068B0
+ .word 0x000068B0, 0x00006B64
+ .word 0x00006B64, 0x00006C8C
+ .word 0x00006C8C, 0x00007D68
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00007D70 ; chunk size
+ .incbin "baserom.nds", 0x1E94EAC, 0x7D68
+ .balign 512, 255
diff --git a/files/FILE_1E9CE00_imageclip.narc.s b/files/FILE_1E9CE00_imageclip.narc.s
new file mode 100644
index 00000000..5a0dc6a7
--- /dev/null
+++ b/files/FILE_1E9CE00_imageclip.narc.s
@@ -0,0 +1,264 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x0003E630 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x0000076C ; chunk size
+ .short 236 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000228
+ .word 0x00000228, 0x000002E8
+ .word 0x000002E8, 0x000003A8
+ .word 0x000003A8, 0x00000468
+ .word 0x00000468, 0x00000528
+ .word 0x00000528, 0x000005E8
+ .word 0x000005E8, 0x000006A8
+ .word 0x000006A8, 0x00000768
+ .word 0x00000768, 0x000009A8
+ .word 0x000009A8, 0x00000A68
+ .word 0x00000A68, 0x00000CA8
+ .word 0x00000CA8, 0x00000D68
+ .word 0x00000D68, 0x00000E28
+ .word 0x00000E28, 0x00000EE8
+ .word 0x00000EE8, 0x00000FA8
+ .word 0x00000FA8, 0x00001068
+ .word 0x00001068, 0x00001128
+ .word 0x00001128, 0x00001368
+ .word 0x00001368, 0x000014A8
+ .word 0x000014A8, 0x00001568
+ .word 0x00001568, 0x00001628
+ .word 0x00001628, 0x000016E8
+ .word 0x000016E8, 0x000017A8
+ .word 0x000017A8, 0x00001868
+ .word 0x00001868, 0x00001928
+ .word 0x00001928, 0x00001A68
+ .word 0x00001A68, 0x00001CA8
+ .word 0x00001CA8, 0x00001EE8
+ .word 0x00001EE8, 0x00002128
+ .word 0x00002128, 0x000021E8
+ .word 0x000021E8, 0x000022A8
+ .word 0x000022A8, 0x000023E8
+ .word 0x000023E8, 0x00002528
+ .word 0x00002528, 0x000025E8
+ .word 0x000025E8, 0x00002A28
+ .word 0x00002A28, 0x00002AE8
+ .word 0x00002AE8, 0x00002D28
+ .word 0x00002D28, 0x00003168
+ .word 0x00003168, 0x000035A8
+ .word 0x000035A8, 0x000039E8
+ .word 0x000039E8, 0x00003E28
+ .word 0x00003E28, 0x00003F68
+ .word 0x00003F68, 0x000043A8
+ .word 0x000043A8, 0x000044E8
+ .word 0x000044E8, 0x00004928
+ .word 0x00004928, 0x00004B68
+ .word 0x00004B68, 0x00004DA8
+ .word 0x00004DA8, 0x00004E68
+ .word 0x00004E68, 0x000050A8
+ .word 0x000050A8, 0x000054E8
+ .word 0x000054E8, 0x00005928
+ .word 0x00005928, 0x000059E8
+ .word 0x000059E8, 0x00005AA8
+ .word 0x00005AA8, 0x00005BE8
+ .word 0x00005BE8, 0x00005CA8
+ .word 0x00005CA8, 0x00005D68
+ .word 0x00005D68, 0x00005E28
+ .word 0x00005E28, 0x00005F68
+ .word 0x00005F68, 0x000061A8
+ .word 0x000061A8, 0x000063E8
+ .word 0x000063E8, 0x00006628
+ .word 0x00006628, 0x00006A68
+ .word 0x00006A68, 0x00006EA8
+ .word 0x00006EA8, 0x000072E8
+ .word 0x000072E8, 0x00007728
+ .word 0x00007728, 0x00007B68
+ .word 0x00007B68, 0x00007FA8
+ .word 0x00007FA8, 0x000083E8
+ .word 0x000083E8, 0x00008828
+ .word 0x00008828, 0x00008C68
+ .word 0x00008C68, 0x000090A8
+ .word 0x000090A8, 0x000094E8
+ .word 0x000094E8, 0x00009928
+ .word 0x00009928, 0x000099E8
+ .word 0x000099E8, 0x00009B28
+ .word 0x00009B28, 0x00009D68
+ .word 0x00009D68, 0x00009FA8
+ .word 0x00009FA8, 0x0000A1E8
+ .word 0x0000A1E8, 0x0000A628
+ .word 0x0000A628, 0x0000AA68
+ .word 0x0000AA68, 0x0000AEA8
+ .word 0x0000AEA8, 0x0000B2E8
+ .word 0x0000B2E8, 0x0000B728
+ .word 0x0000B728, 0x0000B968
+ .word 0x0000B968, 0x0000BBA8
+ .word 0x0000BBA8, 0x0000BFE8
+ .word 0x0000BFE8, 0x0000C428
+ .word 0x0000C428, 0x0000C668
+ .word 0x0000C668, 0x0000CAA8
+ .word 0x0000CAA8, 0x0000CEE8
+ .word 0x0000CEE8, 0x0000D328
+ .word 0x0000D328, 0x0000D768
+ .word 0x0000D768, 0x0000DBA8
+ .word 0x0000DBA8, 0x0000DDE8
+ .word 0x0000DDE8, 0x0000E028
+ .word 0x0000E028, 0x0000E268
+ .word 0x0000E268, 0x0000E6A8
+ .word 0x0000E6A8, 0x0000EAE8
+ .word 0x0000EAE8, 0x0000ED28
+ .word 0x0000ED28, 0x0000EE68
+ .word 0x0000EE68, 0x0000F2A8
+ .word 0x0000F2A8, 0x0000F340
+ .word 0x0000F340, 0x0000F3BC
+ .word 0x0000F3BC, 0x0000F4EC
+ .word 0x0000F4EC, 0x0000F714
+ .word 0x0000F714, 0x0000F796
+ .word 0x0000F798, 0x0000F826
+ .word 0x0000F828, 0x0000FFD8
+ .word 0x0000FFD8, 0x0001005A
+ .word 0x0001005C, 0x000100F2
+ .word 0x000100F4, 0x000108A4
+ .word 0x000108A4, 0x0001092E
+ .word 0x00010930, 0x000109E2
+ .word 0x000109E4, 0x00011794
+ .word 0x00011794, 0x0001181E
+ .word 0x00011820, 0x000118D2
+ .word 0x000118D4, 0x00012684
+ .word 0x00012684, 0x0001270E
+ .word 0x00012710, 0x000127D6
+ .word 0x000127D8, 0x00013C48
+ .word 0x00013C48, 0x00013E70
+ .word 0x00013E70, 0x000146B0
+ .word 0x000146B0, 0x00014ED4
+ .word 0x00014ED4, 0x00015B14
+ .word 0x00015B14, 0x00016338
+ .word 0x00016338, 0x00016F78
+ .word 0x00016F78, 0x000171A0
+ .word 0x000171A0, 0x000179C4
+ .word 0x000179C4, 0x000181E8
+ .word 0x000181E8, 0x000182C8
+ .word 0x000182C8, 0x000184AC
+ .word 0x000184AC, 0x0001858C
+ .word 0x0001858C, 0x00018770
+ .word 0x00018770, 0x00018998
+ .word 0x00018998, 0x00018FD8
+ .word 0x00018FD8, 0x00019200
+ .word 0x00019200, 0x000193E4
+ .word 0x000193E4, 0x000195C8
+ .word 0x000195C8, 0x0001A808
+ .word 0x0001A808, 0x0001AA30
+ .word 0x0001AA30, 0x0001AC14
+ .word 0x0001AC14, 0x0001ADF8
+ .word 0x0001ADF8, 0x0001B838
+ .word 0x0001B838, 0x0001BA60
+ .word 0x0001BA60, 0x0001BC44
+ .word 0x0001BC44, 0x0001BE28
+ .word 0x0001BE28, 0x0001D068
+ .word 0x0001D068, 0x0001D290
+ .word 0x0001D290, 0x0001D474
+ .word 0x0001D474, 0x0001D658
+ .word 0x0001D658, 0x0001F498
+ .word 0x0001F498, 0x0001F6C0
+ .word 0x0001F6C0, 0x0001F8A4
+ .word 0x0001F8A4, 0x0001FA88
+ .word 0x0001FA88, 0x000208C8
+ .word 0x000208C8, 0x00020AF0
+ .word 0x00020AF0, 0x00020CD4
+ .word 0x00020CD4, 0x00020EB8
+ .word 0x00020EB8, 0x000220F8
+ .word 0x000220F8, 0x00022320
+ .word 0x00022320, 0x00022504
+ .word 0x00022504, 0x000226E8
+ .word 0x000226E8, 0x00024328
+ .word 0x00024328, 0x00024550
+ .word 0x00024550, 0x00024734
+ .word 0x00024734, 0x00024918
+ .word 0x00024918, 0x00026358
+ .word 0x00026358, 0x00026580
+ .word 0x00026580, 0x00026764
+ .word 0x00026764, 0x00026948
+ .word 0x00026948, 0x00027788
+ .word 0x00027788, 0x000279B0
+ .word 0x000279B0, 0x00027B94
+ .word 0x00027B94, 0x00027D78
+ .word 0x00027D78, 0x000299B8
+ .word 0x000299B8, 0x00029BE0
+ .word 0x00029BE0, 0x00029DC4
+ .word 0x00029DC4, 0x00029FA8
+ .word 0x00029FA8, 0x0002ADE8
+ .word 0x0002ADE8, 0x0002B010
+ .word 0x0002B010, 0x0002B1F4
+ .word 0x0002B1F4, 0x0002B3D8
+ .word 0x0002B3D8, 0x0002C618
+ .word 0x0002C618, 0x0002C840
+ .word 0x0002C840, 0x0002CA24
+ .word 0x0002CA24, 0x0002CC08
+ .word 0x0002CC08, 0x0002E648
+ .word 0x0002E648, 0x0002E870
+ .word 0x0002E870, 0x0002EA54
+ .word 0x0002EA54, 0x0002EC38
+ .word 0x0002EC38, 0x0002F478
+ .word 0x0002F478, 0x0002F6A0
+ .word 0x0002F6A0, 0x0002F884
+ .word 0x0002F884, 0x0002FA68
+ .word 0x0002FA68, 0x000312A8
+ .word 0x000312A8, 0x000314D0
+ .word 0x000314D0, 0x000316B4
+ .word 0x000316B4, 0x00031898
+ .word 0x00031898, 0x00033AD8
+ .word 0x00033AD8, 0x00033D00
+ .word 0x00033D00, 0x00033EE4
+ .word 0x00033EE4, 0x000340C8
+ .word 0x000340C8, 0x00035508
+ .word 0x00035508, 0x00035730
+ .word 0x00035730, 0x00035914
+ .word 0x00035914, 0x00035AF8
+ .word 0x00035AF8, 0x00035D38
+ .word 0x00035D38, 0x00035F78
+ .word 0x00035F78, 0x000361B8
+ .word 0x000361B8, 0x000363F8
+ .word 0x000363F8, 0x00036638
+ .word 0x00036638, 0x00036878
+ .word 0x00036878, 0x00036AB8
+ .word 0x00036AB8, 0x00036CF8
+ .word 0x00036CF8, 0x00036F38
+ .word 0x00036F38, 0x00037178
+ .word 0x00037178, 0x000373B8
+ .word 0x000373B8, 0x000375F8
+ .word 0x000375F8, 0x00037838
+ .word 0x00037838, 0x00037A78
+ .word 0x00037A78, 0x00037CB8
+ .word 0x00037CB8, 0x00037EF8
+ .word 0x00037EF8, 0x00038138
+ .word 0x00038138, 0x00038378
+ .word 0x00038378, 0x00038FB8
+ .word 0x00038FB8, 0x000391E0
+ .word 0x000391E0, 0x00039804
+ .word 0x00039804, 0x000399C4
+ .word 0x000399C4, 0x00039AF8
+ .word 0x00039AF8, 0x0003AF28
+ .word 0x0003AF28, 0x0003B150
+ .word 0x0003B150, 0x0003B288
+ .word 0x0003B288, 0x0003B4E0
+ .word 0x0003B4E0, 0x0003DC10
+ .word 0x0003DC10, 0x0003DE38
+ .word 0x0003DE38, 0x0003DE9C
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x0003DEA4 ; chunk size
+ .incbin "baserom.nds", 0x1E9D594, 0x3DE9C
+ .balign 512, 255
diff --git a/files/FILE_1EDB600_mail_gra.narc.s b/files/FILE_1EDB600_mail_gra.narc.s
new file mode 100644
index 00000000..eda183f4
--- /dev/null
+++ b/files/FILE_1EDB600_mail_gra.narc.s
@@ -0,0 +1,65 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x0001A130 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000134 ; chunk size
+ .short 37 ; number of files
+ .balign 4
+ .word 0x00000000, 0x000000C0
+ .word 0x000000C0, 0x00000180
+ .word 0x00000180, 0x00000240
+ .word 0x00000240, 0x00000300
+ .word 0x00000300, 0x000003C0
+ .word 0x000003C0, 0x00000480
+ .word 0x00000480, 0x00000540
+ .word 0x00000540, 0x00000600
+ .word 0x00000600, 0x000006C0
+ .word 0x000006C0, 0x00000780
+ .word 0x00000780, 0x00000840
+ .word 0x00000840, 0x00000900
+ .word 0x00000900, 0x00004540
+ .word 0x00004540, 0x00005180
+ .word 0x00005180, 0x00005DC0
+ .word 0x00005DC0, 0x00008A00
+ .word 0x00008A00, 0x0000BA40
+ .word 0x0000BA40, 0x0000C680
+ .word 0x0000C680, 0x0000D2C0
+ .word 0x0000D2C0, 0x0000FB00
+ .word 0x0000FB00, 0x00012340
+ .word 0x00012340, 0x00013380
+ .word 0x00013380, 0x000143C0
+ .word 0x000143C0, 0x00015000
+ .word 0x00015000, 0x00015624
+ .word 0x00015624, 0x00015C48
+ .word 0x00015C48, 0x0001626C
+ .word 0x0001626C, 0x00016890
+ .word 0x00016890, 0x00016EB4
+ .word 0x00016EB4, 0x000174D8
+ .word 0x000174D8, 0x00017AFC
+ .word 0x00017AFC, 0x00018120
+ .word 0x00018120, 0x00018744
+ .word 0x00018744, 0x00018D68
+ .word 0x00018D68, 0x0001938C
+ .word 0x0001938C, 0x000199B0
+ .word 0x000199B0, 0x00019FD4
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00019FDC ; chunk size
+ .incbin "baserom.nds", 0x1EDB75C, 0x19FD4
+ .balign 512, 255
diff --git a/files/FILE_1EF5800_menu_gra.narc.s b/files/FILE_1EF5800_menu_gra.narc.s
new file mode 100644
index 00000000..f0bf699b
--- /dev/null
+++ b/files/FILE_1EF5800_menu_gra.narc.s
@@ -0,0 +1,39 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00004B70 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000064 ; chunk size
+ .short 11 ; number of files
+ .balign 4
+ .word 0x00000000, 0x0000006F
+ .word 0x00000070, 0x000000E7
+ .word 0x000000E8, 0x00000718
+ .word 0x00000718, 0x000015D0
+ .word 0x000015D0, 0x0000181C
+ .word 0x0000181C, 0x00001A44
+ .word 0x00001A44, 0x00002E74
+ .word 0x00002E74, 0x000038D6
+ .word 0x000038D8, 0x00003A8A
+ .word 0x00003A8C, 0x00003CB4
+ .word 0x00003CB4, 0x00004AE4
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00004AEC ; chunk size
+ .incbin "baserom.nds", 0x1EF588C, 0x4AE4
+ .balign 512, 255
diff --git a/files/FILE_1EFA400_mysign.narc.s b/files/FILE_1EFA400_mysign.narc.s
new file mode 100644
index 00000000..668d7afd
--- /dev/null
+++ b/files/FILE_1EFA400_mysign.narc.s
@@ -0,0 +1,38 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x000010B8 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x0000005C ; chunk size
+ .short 10 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000228
+ .word 0x00000228, 0x00000450
+ .word 0x00000450, 0x00000678
+ .word 0x00000678, 0x000007B1
+ .word 0x000007B4, 0x00000974
+ .word 0x00000974, 0x00000AAD
+ .word 0x00000AB0, 0x00000B8F
+ .word 0x00000B90, 0x00000F0C
+ .word 0x00000F0C, 0x00000FBC
+ .word 0x00000FBC, 0x00001034
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x0000103C ; chunk size
+ .incbin "baserom.nds", 0x1EFA484, 0x1034
+ .balign 512, 255
diff --git a/files/FILE_1EFB600_mystery.narc.s b/files/FILE_1EFB600_mystery.narc.s
new file mode 100644
index 00000000..0ce1becf
--- /dev/null
+++ b/files/FILE_1EFB600_mystery.narc.s
@@ -0,0 +1,70 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x000078C4 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x0000015C ; chunk size
+ .short 42 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000228
+ .word 0x00000228, 0x0000026D
+ .word 0x00000270, 0x0000038D
+ .word 0x00000390, 0x000005B8
+ .word 0x000005B8, 0x000008D4
+ .word 0x000008D4, 0x00000B7A
+ .word 0x00000B7C, 0x00001862
+ .word 0x00001864, 0x00001A8C
+ .word 0x00001A8C, 0x00001B11
+ .word 0x00001B14, 0x00001BA7
+ .word 0x00001BA8, 0x00001C8C
+ .word 0x00001C8C, 0x00001EB4
+ .word 0x00001EB4, 0x000020DC
+ .word 0x000020DC, 0x00002145
+ .word 0x00002148, 0x000021AD
+ .word 0x000021B0, 0x00002392
+ .word 0x00002394, 0x000025BC
+ .word 0x000025BC, 0x000028F5
+ .word 0x000028F8, 0x00002AD3
+ .word 0x00002AD4, 0x00002CFC
+ .word 0x00002CFC, 0x00002E77
+ .word 0x00002E78, 0x00002F78
+ .word 0x00002F78, 0x0000338B
+ .word 0x0000338C, 0x000035B4
+ .word 0x000035B4, 0x000038CF
+ .word 0x000038D0, 0x00003BBC
+ .word 0x00003BBC, 0x000047CA
+ .word 0x000047CC, 0x00004966
+ .word 0x00004968, 0x00004B33
+ .word 0x00004B34, 0x00004D5C
+ .word 0x00004D5C, 0x00005E76
+ .word 0x00005E78, 0x00006486
+ .word 0x00006488, 0x000066B0
+ .word 0x000066B0, 0x00006709
+ .word 0x0000670C, 0x0000675B
+ .word 0x0000675C, 0x000068D4
+ .word 0x000068D4, 0x00006AFC
+ .word 0x00006AFC, 0x00006BB0
+ .word 0x00006BB0, 0x00006C0B
+ .word 0x00006C0C, 0x00006CD8
+ .word 0x00006CD8, 0x00007518
+ .word 0x00007518, 0x00007740
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00007748 ; chunk size
+ .incbin "baserom.nds", 0x1EFB784, 0x7740
+ .balign 512, 255
diff --git a/files/FILE_1F03000_ntag_gra.narc.s b/files/FILE_1F03000_ntag_gra.narc.s
new file mode 100644
index 00000000..997bdfab
--- /dev/null
+++ b/files/FILE_1F03000_ntag_gra.narc.s
@@ -0,0 +1,162 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x0002CE70 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x0000043C ; chunk size
+ .short 134 ; number of files
+ .balign 4
+ .word 0x00000000, 0x000006A4
+ .word 0x000006A4, 0x00000CC8
+ .word 0x00000CC8, 0x00003108
+ .word 0x00003108, 0x00003330
+ .word 0x00003330, 0x0000339F
+ .word 0x000033A0, 0x0000340B
+ .word 0x0000340C, 0x00003C3C
+ .word 0x00003C3C, 0x0000446C
+ .word 0x0000446C, 0x00004C9C
+ .word 0x00004C9C, 0x000054CC
+ .word 0x000054CC, 0x00005CFC
+ .word 0x00005CFC, 0x0000652C
+ .word 0x0000652C, 0x00006D5C
+ .word 0x00006D5C, 0x0000758C
+ .word 0x0000758C, 0x00007DBC
+ .word 0x00007DBC, 0x000085EC
+ .word 0x000085EC, 0x00008E1C
+ .word 0x00008E1C, 0x0000964C
+ .word 0x0000964C, 0x00009E7C
+ .word 0x00009E7C, 0x0000A6AC
+ .word 0x0000A6AC, 0x0000AEDC
+ .word 0x0000AEDC, 0x0000B70C
+ .word 0x0000B70C, 0x0000BF3C
+ .word 0x0000BF3C, 0x0000C76C
+ .word 0x0000C76C, 0x0000CF9C
+ .word 0x0000CF9C, 0x0000D7CC
+ .word 0x0000D7CC, 0x0000DFFC
+ .word 0x0000DFFC, 0x0000E82C
+ .word 0x0000E82C, 0x0000F05C
+ .word 0x0000F05C, 0x0000F88C
+ .word 0x0000F88C, 0x000100BC
+ .word 0x000100BC, 0x000108EC
+ .word 0x000108EC, 0x0001111C
+ .word 0x0001111C, 0x0001194C
+ .word 0x0001194C, 0x0001217C
+ .word 0x0001217C, 0x000129AC
+ .word 0x000129AC, 0x000131DC
+ .word 0x000131DC, 0x00013A0C
+ .word 0x00013A0C, 0x0001423C
+ .word 0x0001423C, 0x00014A6C
+ .word 0x00014A6C, 0x0001529C
+ .word 0x0001529C, 0x00015ACC
+ .word 0x00015ACC, 0x000162FC
+ .word 0x000162FC, 0x00016B2C
+ .word 0x00016B2C, 0x0001735C
+ .word 0x0001735C, 0x00017B8C
+ .word 0x00017B8C, 0x000183BC
+ .word 0x000183BC, 0x00018BEC
+ .word 0x00018BEC, 0x0001941C
+ .word 0x0001941C, 0x00019C4C
+ .word 0x00019C4C, 0x0001A47C
+ .word 0x0001A47C, 0x0001ACAC
+ .word 0x0001ACAC, 0x0001B4DC
+ .word 0x0001B4DC, 0x0001BD0C
+ .word 0x0001BD0C, 0x0001C53C
+ .word 0x0001C53C, 0x0001CD6C
+ .word 0x0001CD6C, 0x0001D59C
+ .word 0x0001D59C, 0x0001DDCC
+ .word 0x0001DDCC, 0x0001E5FC
+ .word 0x0001E5FC, 0x0001EE2C
+ .word 0x0001EE2C, 0x0001F65C
+ .word 0x0001F65C, 0x0001FE8C
+ .word 0x0001FE8C, 0x000206BC
+ .word 0x000206BC, 0x00020EEC
+ .word 0x00020EEC, 0x0002171C
+ .word 0x0002171C, 0x00021F4C
+ .word 0x00021F4C, 0x0002277C
+ .word 0x0002277C, 0x00022FAC
+ .word 0x00022FAC, 0x000237DC
+ .word 0x000237DC, 0x0002400C
+ .word 0x0002400C, 0x00024234
+ .word 0x00024234, 0x0002445C
+ .word 0x0002445C, 0x00024684
+ .word 0x00024684, 0x000248AC
+ .word 0x000248AC, 0x00024AD4
+ .word 0x00024AD4, 0x00024CFC
+ .word 0x00024CFC, 0x00024F24
+ .word 0x00024F24, 0x0002514C
+ .word 0x0002514C, 0x00025374
+ .word 0x00025374, 0x0002559C
+ .word 0x0002559C, 0x000257C4
+ .word 0x000257C4, 0x000259EC
+ .word 0x000259EC, 0x00025C14
+ .word 0x00025C14, 0x00025E3C
+ .word 0x00025E3C, 0x00026064
+ .word 0x00026064, 0x0002628C
+ .word 0x0002628C, 0x000264B4
+ .word 0x000264B4, 0x000266DC
+ .word 0x000266DC, 0x00026904
+ .word 0x00026904, 0x00026B2C
+ .word 0x00026B2C, 0x00026D54
+ .word 0x00026D54, 0x00026F7C
+ .word 0x00026F7C, 0x000271A4
+ .word 0x000271A4, 0x000273CC
+ .word 0x000273CC, 0x000275F4
+ .word 0x000275F4, 0x0002781C
+ .word 0x0002781C, 0x00027A44
+ .word 0x00027A44, 0x00027C6C
+ .word 0x00027C6C, 0x00027E94
+ .word 0x00027E94, 0x000280BC
+ .word 0x000280BC, 0x000282E4
+ .word 0x000282E4, 0x0002850C
+ .word 0x0002850C, 0x00028734
+ .word 0x00028734, 0x0002895C
+ .word 0x0002895C, 0x00028B84
+ .word 0x00028B84, 0x00028DAC
+ .word 0x00028DAC, 0x00028FD4
+ .word 0x00028FD4, 0x000291FC
+ .word 0x000291FC, 0x00029424
+ .word 0x00029424, 0x0002964C
+ .word 0x0002964C, 0x00029874
+ .word 0x00029874, 0x00029A9C
+ .word 0x00029A9C, 0x00029CC4
+ .word 0x00029CC4, 0x00029EEC
+ .word 0x00029EEC, 0x0002A114
+ .word 0x0002A114, 0x0002A33C
+ .word 0x0002A33C, 0x0002A564
+ .word 0x0002A564, 0x0002A78C
+ .word 0x0002A78C, 0x0002A9B4
+ .word 0x0002A9B4, 0x0002ABDC
+ .word 0x0002ABDC, 0x0002AE04
+ .word 0x0002AE04, 0x0002B02C
+ .word 0x0002B02C, 0x0002B254
+ .word 0x0002B254, 0x0002B47C
+ .word 0x0002B47C, 0x0002B6A4
+ .word 0x0002B6A4, 0x0002B8CC
+ .word 0x0002B8CC, 0x0002BAF4
+ .word 0x0002BAF4, 0x0002BD1C
+ .word 0x0002BD1C, 0x0002BF44
+ .word 0x0002BF44, 0x0002C16C
+ .word 0x0002C16C, 0x0002C394
+ .word 0x0002C394, 0x0002C5BC
+ .word 0x0002C5BC, 0x0002C7E4
+ .word 0x0002C7E4, 0x0002CA0C
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x0002CA14 ; chunk size
+ .incbin "baserom.nds", 0x1F03464, 0x2CA0C
+ .balign 512, 255
diff --git a/files/FILE_1F30000_nutmixer.narc.s b/files/FILE_1F30000_nutmixer.narc.s
new file mode 100644
index 00000000..fd30a4f1
--- /dev/null
+++ b/files/FILE_1F30000_nutmixer.narc.s
@@ -0,0 +1,76 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x0002C2F4 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x0000018C ; chunk size
+ .short 48 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00002180
+ .word 0x00002180, 0x000023A8
+ .word 0x000023A8, 0x000029CC
+ .word 0x000029CC, 0x00002FF0
+ .word 0x00002FF0, 0x00003154
+ .word 0x00003154, 0x00003234
+ .word 0x00003234, 0x0000345C
+ .word 0x0000345C, 0x00003A80
+ .word 0x00003A80, 0x00003CA8
+ .word 0x00003CA8, 0x00003ED0
+ .word 0x00003ED0, 0x000040F8
+ .word 0x000040F8, 0x00004320
+ .word 0x00004320, 0x00004499
+ .word 0x0000449C, 0x00004695
+ .word 0x00004698, 0x00006048
+ .word 0x00006048, 0x00006259
+ .word 0x0000625C, 0x0000648D
+ .word 0x00006490, 0x00006CC0
+ .word 0x00006CC0, 0x00006DD5
+ .word 0x00006DD8, 0x00006FCD
+ .word 0x00006FD0, 0x00008400
+ .word 0x00008400, 0x00008515
+ .word 0x00008518, 0x0000870D
+ .word 0x00008710, 0x00009B40
+ .word 0x00009B40, 0x00009C4C
+ .word 0x00009C4C, 0x00009E90
+ .word 0x00009E90, 0x0000B3C0
+ .word 0x0000B3C0, 0x0000B443
+ .word 0x0000B444, 0x0000B52B
+ .word 0x0000B52C, 0x0000BEDC
+ .word 0x0000BEDC, 0x0000BF64
+ .word 0x0000BF64, 0x0000C028
+ .word 0x0000C028, 0x0000CC58
+ .word 0x0000CC58, 0x0000CE80
+ .word 0x0000CE80, 0x00014EC0
+ .word 0x00014EC0, 0x000150E8
+ .word 0x000150E8, 0x00015310
+ .word 0x00015310, 0x00015538
+ .word 0x00015538, 0x0001D578
+ .word 0x0001D578, 0x0001D7A0
+ .word 0x0001D7A0, 0x000257E0
+ .word 0x000257E0, 0x00025A08
+ .word 0x00025A08, 0x00027A48
+ .word 0x00027A48, 0x00027C70
+ .word 0x00027C70, 0x00029CB0
+ .word 0x00029CB0, 0x00029ED8
+ .word 0x00029ED8, 0x0002BF18
+ .word 0x0002BF18, 0x0002C140
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x0002C148 ; chunk size
+ .incbin "baserom.nds", 0x1F301B4, 0x2C140
+ .balign 512, 255
diff --git a/files/FILE_1F5C400_oekaki.narc.s b/files/FILE_1F5C400_oekaki.narc.s
new file mode 100644
index 00000000..337f7c65
--- /dev/null
+++ b/files/FILE_1F5C400_oekaki.narc.s
@@ -0,0 +1,37 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00001524 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000054 ; chunk size
+ .short 9 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000228
+ .word 0x00000228, 0x00000450
+ .word 0x00000450, 0x000005C2
+ .word 0x000005C4, 0x00000784
+ .word 0x00000784, 0x000008AD
+ .word 0x000008B0, 0x000009B7
+ .word 0x000009B8, 0x00000F5A
+ .word 0x00000F5C, 0x000011F9
+ .word 0x000011FC, 0x000014A6
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x000014B0 ; chunk size
+ .incbin "baserom.nds", 0x1F5C47C, 0x14A8
+ .balign 512, 255
diff --git a/files/FILE_1F5DA00_opening.narc.s b/files/FILE_1F5DA00_opening.narc.s
new file mode 100644
index 00000000..69a31aec
--- /dev/null
+++ b/files/FILE_1F5DA00_opening.narc.s
@@ -0,0 +1,49 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00006BBC ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x000000B4 ; chunk size
+ .short 21 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000424
+ .word 0x00000424, 0x00000848
+ .word 0x00000848, 0x00001088
+ .word 0x00001088, 0x000016AC
+ .word 0x000016AC, 0x00001CD0
+ .word 0x00001CD0, 0x00001EF8
+ .word 0x00001EF8, 0x00002120
+ .word 0x00002120, 0x000021BA
+ .word 0x000021BC, 0x0000225E
+ .word 0x00002260, 0x00002488
+ .word 0x00002488, 0x000024F7
+ .word 0x000024F8, 0x00002577
+ .word 0x00002578, 0x000027A0
+ .word 0x000027A0, 0x000043E0
+ .word 0x000043E0, 0x00004608
+ .word 0x00004608, 0x00004C2C
+ .word 0x00004C2C, 0x00005250
+ .word 0x00005250, 0x00005874
+ .word 0x00005874, 0x00005E98
+ .word 0x00005E98, 0x000064BC
+ .word 0x000064BC, 0x00006AE0
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00006AE8 ; chunk size
+ .incbin "baserom.nds", 0x1F5DADC, 0x6AE0
+ .balign 512, 255
diff --git a/files/FILE_1F64600_plist_gra.narc.s b/files/FILE_1F64600_plist_gra.narc.s
new file mode 100644
index 00000000..d524b89d
--- /dev/null
+++ b/files/FILE_1F64600_plist_gra.narc.s
@@ -0,0 +1,52 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00009CAC ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x000000CC ; chunk size
+ .short 24 ; number of files
+ .balign 4
+ .word 0x00000000, 0x0000009A
+ .word 0x0000009C, 0x0000012A
+ .word 0x0000012C, 0x0000055C
+ .word 0x0000055C, 0x00000F9C
+ .word 0x00000F9C, 0x000011C4
+ .word 0x000011C4, 0x000012B4
+ .word 0x000012B4, 0x00001404
+ .word 0x00001404, 0x00003834
+ .word 0x00003834, 0x00003A5C
+ .word 0x00003A5C, 0x00003B4C
+ .word 0x00003B4C, 0x00003C6C
+ .word 0x00003C6C, 0x0000441C
+ .word 0x0000441C, 0x0000645C
+ .word 0x0000645C, 0x00006684
+ .word 0x00006684, 0x00006EA8
+ .word 0x00006EA8, 0x000082E8
+ .word 0x000082E8, 0x00008510
+ .word 0x00008510, 0x00008D34
+ .word 0x00008D34, 0x00008DF9
+ .word 0x00008DFC, 0x00008EB1
+ .word 0x00008EB4, 0x00008F44
+ .word 0x00008F44, 0x0000916C
+ .word 0x0000916C, 0x00009990
+ .word 0x00009990, 0x00009BB8
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00009BC0 ; chunk size
+ .incbin "baserom.nds", 0x1F646F4, 0x9BB8
+ .balign 512, 255
diff --git a/files/FILE_1F6E400_pmsi.narc.s b/files/FILE_1F6E400_pmsi.narc.s
new file mode 100644
index 00000000..42004fcd
--- /dev/null
+++ b/files/FILE_1F6E400_pmsi.narc.s
@@ -0,0 +1,54 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00003164 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x000000DC ; chunk size
+ .short 26 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000136
+ .word 0x00000138, 0x00000201
+ .word 0x00000204, 0x00000467
+ .word 0x00000468, 0x000005B9
+ .word 0x000005BC, 0x000006EF
+ .word 0x000006F0, 0x0000075F
+ .word 0x00000760, 0x00000974
+ .word 0x00000974, 0x00000B32
+ .word 0x00000B34, 0x00000D16
+ .word 0x00000D18, 0x0000149C
+ .word 0x0000149C, 0x000014F6
+ .word 0x000014F8, 0x00001616
+ .word 0x00001618, 0x000016EC
+ .word 0x000016EC, 0x000017BF
+ .word 0x000017C0, 0x00001897
+ .word 0x00001898, 0x0000196F
+ .word 0x00001970, 0x00001A47
+ .word 0x00001A48, 0x00001B1F
+ .word 0x00001B20, 0x00001BF7
+ .word 0x00001BF8, 0x00001CCF
+ .word 0x00001CD0, 0x000028F9
+ .word 0x000028FC, 0x00002978
+ .word 0x00002978, 0x00002A33
+ .word 0x00002A34, 0x00002AE1
+ .word 0x00002AE4, 0x00002FE4
+ .word 0x00002FE4, 0x00003060
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00003068 ; chunk size
+ .incbin "baserom.nds", 0x1F6E504, 0x3060
+ .balign 512, 255
diff --git a/files/FILE_1F71600_poketch.narc.s b/files/FILE_1F71600_poketch.narc.s
new file mode 100644
index 00000000..48411e15
--- /dev/null
+++ b/files/FILE_1F71600_poketch.narc.s
@@ -0,0 +1,154 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x0000E5C4 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x000003FC ; chunk size
+ .short 126 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000228
+ .word 0x00000228, 0x00000450
+ .word 0x00000450, 0x000005D0
+ .word 0x000005D0, 0x00000696
+ .word 0x00000698, 0x0000078D
+ .word 0x00000790, 0x00000813
+ .word 0x00000814, 0x00000912
+ .word 0x00000914, 0x00000968
+ .word 0x00000968, 0x00001198
+ .word 0x00001198, 0x000011F2
+ .word 0x000011F4, 0x000013E9
+ .word 0x000013EC, 0x0000159F
+ .word 0x000015A0, 0x000015FA
+ .word 0x000015FC, 0x00001678
+ .word 0x00001678, 0x00001B7D
+ .word 0x00001B80, 0x00001CF1
+ .word 0x00001CF4, 0x0000238B
+ .word 0x0000238C, 0x000025B5
+ .word 0x000025B8, 0x00002835
+ .word 0x00002838, 0x000029D2
+ .word 0x000029D4, 0x00002BFC
+ .word 0x00002BFC, 0x0000333E
+ .word 0x00003340, 0x000039F0
+ .word 0x000039F0, 0x00003B03
+ .word 0x00003B04, 0x00003C42
+ .word 0x00003C44, 0x00003CE8
+ .word 0x00003CE8, 0x00003DCC
+ .word 0x00003DCC, 0x00004850
+ .word 0x00004850, 0x0000635C
+ .word 0x0000635C, 0x0000644B
+ .word 0x0000644C, 0x000064C4
+ .word 0x000064C4, 0x000065EC
+ .word 0x000065EC, 0x000068E4
+ .word 0x000068E4, 0x0000696A
+ .word 0x0000696C, 0x000069F9
+ .word 0x000069FC, 0x00006ACE
+ .word 0x00006AD0, 0x00006B65
+ .word 0x00006B68, 0x00006C0B
+ .word 0x00006C0C, 0x00006D9C
+ .word 0x00006D9C, 0x00006F1B
+ .word 0x00006F1C, 0x00006FD2
+ .word 0x00006FD4, 0x0000711D
+ .word 0x00007120, 0x0000738C
+ .word 0x0000738C, 0x000074BA
+ .word 0x000074BC, 0x0000751D
+ .word 0x00007520, 0x0000757C
+ .word 0x0000757C, 0x000075E4
+ .word 0x000075E4, 0x0000783F
+ .word 0x00007840, 0x00007987
+ .word 0x00007988, 0x000079EF
+ .word 0x000079F0, 0x00007A4C
+ .word 0x00007A4C, 0x00007AB6
+ .word 0x00007AB8, 0x00007D3D
+ .word 0x00007D40, 0x00007E61
+ .word 0x00007E64, 0x00007EE3
+ .word 0x00007EE4, 0x00007F4D
+ .word 0x00007F50, 0x00007FCF
+ .word 0x00007FD0, 0x000083FE
+ .word 0x00008400, 0x0000855A
+ .word 0x0000855C, 0x00008DB1
+ .word 0x00008DB4, 0x00008F6B
+ .word 0x00008F6C, 0x000090A4
+ .word 0x000090A4, 0x00009153
+ .word 0x00009154, 0x00009205
+ .word 0x00009208, 0x000092F3
+ .word 0x000092F4, 0x000094EB
+ .word 0x000094EC, 0x000096EA
+ .word 0x000096EC, 0x0000973B
+ .word 0x0000973C, 0x00009796
+ .word 0x00009798, 0x00009821
+ .word 0x00009824, 0x00009968
+ .word 0x00009968, 0x000099F9
+ .word 0x000099FC, 0x00009B0B
+ .word 0x00009B0C, 0x00009CD2
+ .word 0x00009CD4, 0x00009F68
+ .word 0x00009F68, 0x0000A16A
+ .word 0x0000A16C, 0x0000A341
+ .word 0x0000A344, 0x0000A3FA
+ .word 0x0000A3FC, 0x0000A4CB
+ .word 0x0000A4CC, 0x0000A8BD
+ .word 0x0000A8C0, 0x0000A9C4
+ .word 0x0000A9C4, 0x0000AA4F
+ .word 0x0000AA50, 0x0000AB37
+ .word 0x0000AB38, 0x0000AC5A
+ .word 0x0000AC5C, 0x0000AD69
+ .word 0x0000AD6C, 0x0000AF43
+ .word 0x0000AF44, 0x0000B057
+ .word 0x0000B058, 0x0000B143
+ .word 0x0000B144, 0x0000B206
+ .word 0x0000B208, 0x0000B533
+ .word 0x0000B534, 0x0000B705
+ .word 0x0000B708, 0x0000B8AF
+ .word 0x0000B8B0, 0x0000B9BC
+ .word 0x0000B9BC, 0x0000BAEB
+ .word 0x0000BAEC, 0x0000C0D2
+ .word 0x0000C0D4, 0x0000C1B5
+ .word 0x0000C1B8, 0x0000C1FB
+ .word 0x0000C1FC, 0x0000C30D
+ .word 0x0000C310, 0x0000C3C4
+ .word 0x0000C3C4, 0x0000C618
+ .word 0x0000C618, 0x0000C704
+ .word 0x0000C704, 0x0000C75E
+ .word 0x0000C760, 0x0000C7BC
+ .word 0x0000C7BC, 0x0000C826
+ .word 0x0000C828, 0x0000CAD0
+ .word 0x0000CAD0, 0x0000CBCB
+ .word 0x0000CBCC, 0x0000CC37
+ .word 0x0000CC38, 0x0000CC8E
+ .word 0x0000CC90, 0x0000CCF6
+ .word 0x0000CCF8, 0x0000CD88
+ .word 0x0000CD88, 0x0000CE74
+ .word 0x0000CE74, 0x0000D12C
+ .word 0x0000D12C, 0x0000D17B
+ .word 0x0000D17C, 0x0000D1D6
+ .word 0x0000D1D8, 0x0000D24F
+ .word 0x0000D250, 0x0000D470
+ .word 0x0000D470, 0x0000D69A
+ .word 0x0000D69C, 0x0000D8EB
+ .word 0x0000D8EC, 0x0000DA27
+ .word 0x0000DA28, 0x0000DBE0
+ .word 0x0000DBE0, 0x0000DD77
+ .word 0x0000DD78, 0x0000DE8E
+ .word 0x0000DE90, 0x0000DF4D
+ .word 0x0000DF50, 0x0000E017
+ .word 0x0000E018, 0x0000E10B
+ .word 0x0000E10C, 0x0000E19D
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x0000E1A8 ; chunk size
+ .incbin "baserom.nds", 0x1F71A24, 0xE1A0
+ .balign 512, 255
diff --git a/files/FILE_1F7FC00_poru_gra.narc.s b/files/FILE_1F7FC00_poru_gra.narc.s
new file mode 100644
index 00000000..2f7c3c8f
--- /dev/null
+++ b/files/FILE_1F7FC00_poru_gra.narc.s
@@ -0,0 +1,40 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x000069E4 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x0000006C ; chunk size
+ .short 12 ; number of files
+ .balign 4
+ .word 0x00000000, 0x000001AE
+ .word 0x000001B0, 0x0000033C
+ .word 0x0000033C, 0x0000177C
+ .word 0x0000177C, 0x000023BC
+ .word 0x000023BC, 0x00003CEC
+ .word 0x00003CEC, 0x00004F9C
+ .word 0x00004F9C, 0x0000515E
+ .word 0x00005160, 0x000053AA
+ .word 0x000053AC, 0x000058BF
+ .word 0x000058C0, 0x00005D07
+ .word 0x00005D08, 0x0000632C
+ .word 0x0000632C, 0x00006950
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00006958 ; chunk size
+ .incbin "baserom.nds", 0x1F7FC94, 0x6950
+ .balign 512, 255
diff --git a/files/FILE_1F86600_poruact.narc.s b/files/FILE_1F86600_poruact.narc.s
new file mode 100644
index 00000000..2c88337f
--- /dev/null
+++ b/files/FILE_1F86600_poruact.narc.s
@@ -0,0 +1,60 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x000014AC ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x0000010C ; chunk size
+ .short 32 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000830
+ .word 0x00000830, 0x0000089B
+ .word 0x0000089C, 0x0000090B
+ .word 0x0000090C, 0x00000966
+ .word 0x00000968, 0x000009C2
+ .word 0x000009C4, 0x00000A1E
+ .word 0x00000A20, 0x00000A7A
+ .word 0x00000A7C, 0x00000AD6
+ .word 0x00000AD8, 0x00000B32
+ .word 0x00000B34, 0x00000B8E
+ .word 0x00000B90, 0x00000BEA
+ .word 0x00000BEC, 0x00000C46
+ .word 0x00000C48, 0x00000CA2
+ .word 0x00000CA4, 0x00000CFE
+ .word 0x00000D00, 0x00000D5A
+ .word 0x00000D5C, 0x00000DB6
+ .word 0x00000DB8, 0x00000E12
+ .word 0x00000E14, 0x00000E6E
+ .word 0x00000E70, 0x00000ECA
+ .word 0x00000ECC, 0x00000F26
+ .word 0x00000F28, 0x00000F82
+ .word 0x00000F84, 0x00000FDE
+ .word 0x00000FE0, 0x0000103A
+ .word 0x0000103C, 0x00001096
+ .word 0x00001098, 0x000010F2
+ .word 0x000010F4, 0x0000114E
+ .word 0x00001150, 0x000011AA
+ .word 0x000011AC, 0x00001206
+ .word 0x00001208, 0x00001262
+ .word 0x00001264, 0x000012BE
+ .word 0x000012C0, 0x0000131A
+ .word 0x0000131C, 0x00001376
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00001380 ; chunk size
+ .incbin "baserom.nds", 0x1F86734, 0x1378
+ .balign 512, 255
diff --git a/files/FILE_1F87C00_porudemo.narc.s b/files/FILE_1F87C00_porudemo.narc.s
new file mode 100644
index 00000000..313c0470
--- /dev/null
+++ b/files/FILE_1F87C00_porudemo.narc.s
@@ -0,0 +1,34 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x0000226C ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x0000003C ; chunk size
+ .short 6 ; number of files
+ .balign 4
+ .word 0x00000000, 0x0000005A
+ .word 0x0000005C, 0x0000013E
+ .word 0x00000140, 0x00000980
+ .word 0x00000980, 0x000015C0
+ .word 0x000015C0, 0x00001BE4
+ .word 0x00001BE4, 0x00002208
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00002210 ; chunk size
+ .incbin "baserom.nds", 0x1F87C64, 0x2208
+ .balign 512, 255
diff --git a/files/FILE_1F8A000_pst_gra.narc.s b/files/FILE_1F8A000_pst_gra.narc.s
new file mode 100644
index 00000000..3b7f7bca
--- /dev/null
+++ b/files/FILE_1F8A000_pst_gra.narc.s
@@ -0,0 +1,165 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x0001F0B0 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000454 ; chunk size
+ .short 137 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00003C40
+ .word 0x00003C40, 0x00003E68
+ .word 0x00003E68, 0x00008D68
+ .word 0x00008D68, 0x0000958C
+ .word 0x0000958C, 0x00009DB0
+ .word 0x00009DB0, 0x0000A5D4
+ .word 0x0000A5D4, 0x0000ADF8
+ .word 0x0000ADF8, 0x0000B61C
+ .word 0x0000B61C, 0x0000BE40
+ .word 0x0000BE40, 0x0000C664
+ .word 0x0000C664, 0x0000CE88
+ .word 0x0000CE88, 0x0000EEAC
+ .word 0x0000EEAC, 0x0000F6D0
+ .word 0x0000F6D0, 0x0000FEF4
+ .word 0x0000FEF4, 0x0001011C
+ .word 0x0001011C, 0x00010940
+ .word 0x00010940, 0x00012180
+ .word 0x00012180, 0x000121EF
+ .word 0x000121F0, 0x0001225B
+ .word 0x0001225C, 0x0001230C
+ .word 0x0001230C, 0x000123BC
+ .word 0x000123BC, 0x0001246C
+ .word 0x0001246C, 0x0001251C
+ .word 0x0001251C, 0x000125CC
+ .word 0x000125CC, 0x0001267C
+ .word 0x0001267C, 0x0001272C
+ .word 0x0001272C, 0x000127DC
+ .word 0x000127DC, 0x0001288C
+ .word 0x0001288C, 0x0001293C
+ .word 0x0001293C, 0x000129EC
+ .word 0x000129EC, 0x00012A9C
+ .word 0x00012A9C, 0x00012B4C
+ .word 0x00012B4C, 0x00012BFC
+ .word 0x00012BFC, 0x00012CAC
+ .word 0x00012CAC, 0x00012D5C
+ .word 0x00012D5C, 0x00012E0C
+ .word 0x00012E0C, 0x00012EBC
+ .word 0x00012EBC, 0x000130E4
+ .word 0x000130E4, 0x0001330C
+ .word 0x0001330C, 0x00013534
+ .word 0x00013534, 0x0001375C
+ .word 0x0001375C, 0x0001387E
+ .word 0x00013880, 0x0001390E
+ .word 0x00013910, 0x00013A40
+ .word 0x00013A40, 0x00013B5B
+ .word 0x00013B5C, 0x00013C5B
+ .word 0x00013C5C, 0x00013D2C
+ .word 0x00013D2C, 0x00013DE3
+ .word 0x00013DE4, 0x00013EBB
+ .word 0x00013EBC, 0x000141EC
+ .word 0x000141EC, 0x00014286
+ .word 0x00014288, 0x00014316
+ .word 0x00014318, 0x00014388
+ .word 0x00014388, 0x000143F8
+ .word 0x000143F8, 0x00014468
+ .word 0x00014468, 0x000144D8
+ .word 0x000144D8, 0x00014548
+ .word 0x00014548, 0x000145B8
+ .word 0x000145B8, 0x00014628
+ .word 0x00014628, 0x0001474A
+ .word 0x0001474C, 0x000147DA
+ .word 0x000147DC, 0x0001484C
+ .word 0x0001484C, 0x000149BD
+ .word 0x000149C0, 0x00014B31
+ .word 0x00014B34, 0x00014E04
+ .word 0x00014E04, 0x0001502C
+ .word 0x0001502C, 0x000150D3
+ .word 0x000150D4, 0x000151AB
+ .word 0x000151AC, 0x0001535C
+ .word 0x0001535C, 0x00015584
+ .word 0x00015584, 0x000155F3
+ .word 0x000155F4, 0x0001565F
+ .word 0x00015660, 0x00015890
+ .word 0x00015890, 0x00015AC0
+ .word 0x00015AC0, 0x00015CF0
+ .word 0x00015CF0, 0x00015F20
+ .word 0x00015F20, 0x00016150
+ .word 0x00016150, 0x00016380
+ .word 0x00016380, 0x000165B0
+ .word 0x000165B0, 0x000167E0
+ .word 0x000167E0, 0x00016A10
+ .word 0x00016A10, 0x00016C40
+ .word 0x00016C40, 0x00016E70
+ .word 0x00016E70, 0x000170A0
+ .word 0x000170A0, 0x000172D0
+ .word 0x000172D0, 0x00017500
+ .word 0x00017500, 0x00017730
+ .word 0x00017730, 0x00017960
+ .word 0x00017960, 0x00017B90
+ .word 0x00017B90, 0x00017DC0
+ .word 0x00017DC0, 0x00017FF0
+ .word 0x00017FF0, 0x00018220
+ .word 0x00018220, 0x00018450
+ .word 0x00018450, 0x00018680
+ .word 0x00018680, 0x000188B0
+ .word 0x000188B0, 0x00018AE0
+ .word 0x00018AE0, 0x00018D10
+ .word 0x00018D10, 0x00018F40
+ .word 0x00018F40, 0x00019170
+ .word 0x00019170, 0x000193A0
+ .word 0x000193A0, 0x000195D0
+ .word 0x000195D0, 0x00019800
+ .word 0x00019800, 0x00019A30
+ .word 0x00019A30, 0x00019C60
+ .word 0x00019C60, 0x00019E90
+ .word 0x00019E90, 0x0001A0C0
+ .word 0x0001A0C0, 0x0001A2F0
+ .word 0x0001A2F0, 0x0001A520
+ .word 0x0001A520, 0x0001A750
+ .word 0x0001A750, 0x0001A980
+ .word 0x0001A980, 0x0001ABB0
+ .word 0x0001ABB0, 0x0001ADE0
+ .word 0x0001ADE0, 0x0001B010
+ .word 0x0001B010, 0x0001B240
+ .word 0x0001B240, 0x0001B470
+ .word 0x0001B470, 0x0001B6A0
+ .word 0x0001B6A0, 0x0001B8D0
+ .word 0x0001B8D0, 0x0001BB00
+ .word 0x0001BB00, 0x0001BD30
+ .word 0x0001BD30, 0x0001BF60
+ .word 0x0001BF60, 0x0001C410
+ .word 0x0001C410, 0x0001C640
+ .word 0x0001C640, 0x0001C70F
+ .word 0x0001C710, 0x0001C83F
+ .word 0x0001C840, 0x0001CD70
+ .word 0x0001CD70, 0x0001CDEB
+ .word 0x0001CDEC, 0x0001CE5B
+ .word 0x0001CE5C, 0x0001D156
+ .word 0x0001D158, 0x0001D422
+ .word 0x0001D424, 0x0001DE54
+ .word 0x0001DE54, 0x0001DEEE
+ .word 0x0001DEF0, 0x0001DF8A
+ .word 0x0001DF8C, 0x0001E7BC
+ .word 0x0001E7BC, 0x0001E82B
+ .word 0x0001E82C, 0x0001E89B
+ .word 0x0001E89C, 0x0001EA0C
+ .word 0x0001EA0C, 0x0001EC34
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x0001EC3C ; chunk size
+ .incbin "baserom.nds", 0x1F8A47C, 0x1EC34
+ .balign 512, 255
diff --git a/files/FILE_1F9200.s b/files/FILE_1F9200.s
new file mode 100644
index 00000000..e2e33721
--- /dev/null
+++ b/files/FILE_1F9200.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x1F9200, 0x2EBE0
+ .balign 512, 255
diff --git a/files/FILE_1FA9200_ranking.narc.s b/files/FILE_1FA9200_ranking.narc.s
new file mode 100644
index 00000000..02640f00
--- /dev/null
+++ b/files/FILE_1FA9200_ranking.narc.s
@@ -0,0 +1,32 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x000014C8 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x0000002C ; chunk size
+ .short 4 ; number of files
+ .balign 4
+ .word 0x00000000, 0x0000009E
+ .word 0x000000A0, 0x000012F0
+ .word 0x000012F0, 0x000013E4
+ .word 0x000013E4, 0x00001474
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x0000147C ; chunk size
+ .incbin "baserom.nds", 0x1FA9254, 0x1474
+ .balign 512, 255
diff --git a/files/FILE_1FAA800_record.narc.s b/files/FILE_1FAA800_record.narc.s
new file mode 100644
index 00000000..09c5cf41
--- /dev/null
+++ b/files/FILE_1FAA800_record.narc.s
@@ -0,0 +1,43 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x000059C4 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000084 ; chunk size
+ .short 15 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000228
+ .word 0x00000228, 0x00000450
+ .word 0x00000450, 0x000008F1
+ .word 0x000008F4, 0x00000B0F
+ .word 0x00000B10, 0x0000106F
+ .word 0x00001070, 0x000012BB
+ .word 0x000012BC, 0x00001503
+ .word 0x00001504, 0x0000172C
+ .word 0x0000172C, 0x00001954
+ .word 0x00001954, 0x00003AA0
+ .word 0x00003AA0, 0x00003CFB
+ .word 0x00003CFC, 0x00003F3D
+ .word 0x00003F40, 0x00004FEB
+ .word 0x00004FEC, 0x000054E7
+ .word 0x000054E8, 0x00005915
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00005920 ; chunk size
+ .incbin "baserom.nds", 0x1FAA8AC, 0x5918
+ .balign 512, 255
diff --git a/files/FILE_1FB0200_shop_gra.narc.s b/files/FILE_1FB0200_shop_gra.narc.s
new file mode 100644
index 00000000..46474c98
--- /dev/null
+++ b/files/FILE_1FB0200_shop_gra.narc.s
@@ -0,0 +1,39 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00002740 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000064 ; chunk size
+ .short 11 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000840
+ .word 0x00000840, 0x00000A68
+ .word 0x00000A68, 0x0000108C
+ .word 0x0000108C, 0x000016B0
+ .word 0x000016B0, 0x000017E0
+ .word 0x000017E0, 0x0000186E
+ .word 0x00001870, 0x00001972
+ .word 0x00001974, 0x000023A4
+ .word 0x000023A4, 0x0000241B
+ .word 0x0000241C, 0x0000248B
+ .word 0x0000248C, 0x000026B4
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x000026BC ; chunk size
+ .incbin "baserom.nds", 0x1FB028C, 0x26B4
+ .balign 512, 255
diff --git a/files/FILE_1FB2A00_tmap_gra.narc.s b/files/FILE_1FB2A00_tmap_gra.narc.s
new file mode 100644
index 00000000..e07e8c7c
--- /dev/null
+++ b/files/FILE_1FB2A00_tmap_gra.narc.s
@@ -0,0 +1,58 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00014F10 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x000000FC ; chunk size
+ .short 30 ; number of files
+ .balign 4
+ .word 0x00000000, 0x0000007C
+ .word 0x0000007C, 0x0000015E
+ .word 0x00000160, 0x00000396
+ .word 0x00000398, 0x000003F2
+ .word 0x000003F4, 0x00001C24
+ .word 0x00001C24, 0x00001CBB
+ .word 0x00001CBC, 0x00001D3F
+ .word 0x00001D40, 0x00001E70
+ .word 0x00001E70, 0x00001EF0
+ .word 0x00001EF0, 0x00001F68
+ .word 0x00001F68, 0x00002098
+ .word 0x00002098, 0x0000211A
+ .word 0x0000211C, 0x00002196
+ .word 0x00002198, 0x000021E8
+ .word 0x000021E8, 0x00002254
+ .word 0x00002254, 0x000022C4
+ .word 0x000022C4, 0x00002674
+ .word 0x00002674, 0x00002760
+ .word 0x00002760, 0x00002808
+ .word 0x00002808, 0x00007848
+ .word 0x00007848, 0x0000D888
+ .word 0x0000D888, 0x0000F688
+ .word 0x0000F688, 0x0000FCAC
+ .word 0x0000FCAC, 0x0000FD78
+ .word 0x0000FD78, 0x0001039C
+ .word 0x0001039C, 0x000123C0
+ .word 0x000123C0, 0x000143E4
+ .word 0x000143E4, 0x0001454C
+ .word 0x0001454C, 0x00014B70
+ .word 0x00014B70, 0x00014DEC
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00014DF4 ; chunk size
+ .incbin "baserom.nds", 0x1FB2B24, 0x14DEC
+ .balign 512, 255
diff --git a/files/FILE_1FC7A00_touch_subwindow.narc.s b/files/FILE_1FC7A00_touch_subwindow.narc.s
new file mode 100644
index 00000000..51f7433e
--- /dev/null
+++ b/files/FILE_1FC7A00_touch_subwindow.narc.s
@@ -0,0 +1,38 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00000998 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x0000005C ; chunk size
+ .short 10 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000228
+ .word 0x00000228, 0x0000061E
+ .word 0x00000620, 0x0000067A
+ .word 0x0000067C, 0x000006D9
+ .word 0x000006DC, 0x00000739
+ .word 0x0000073C, 0x00000799
+ .word 0x0000079C, 0x000007F9
+ .word 0x000007FC, 0x00000859
+ .word 0x0000085C, 0x000008B5
+ .word 0x000008B8, 0x00000914
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x0000091C ; chunk size
+ .incbin "baserom.nds", 0x1FC7A84, 0x914
+ .balign 512, 255
diff --git a/files/FILE_1FC8400_trainer_case.narc.s b/files/FILE_1FC8400_trainer_case.narc.s
new file mode 100644
index 00000000..741206c4
--- /dev/null
+++ b/files/FILE_1FC8400_trainer_case.narc.s
@@ -0,0 +1,87 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00037BE0 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x000001E4 ; chunk size
+ .short 59 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000228
+ .word 0x00000228, 0x00000450
+ .word 0x00000450, 0x00000678
+ .word 0x00000678, 0x000008A0
+ .word 0x000008A0, 0x00000AC8
+ .word 0x00000AC8, 0x00000CF0
+ .word 0x00000CF0, 0x00000F18
+ .word 0x00000F18, 0x00001140
+ .word 0x00001140, 0x00001368
+ .word 0x00001368, 0x00001590
+ .word 0x00001590, 0x000017B8
+ .word 0x000017B8, 0x000019E0
+ .word 0x000019E0, 0x00001C08
+ .word 0x00001C08, 0x00001E30
+ .word 0x00001E30, 0x00002058
+ .word 0x00002058, 0x00002280
+ .word 0x00002280, 0x000024A8
+ .word 0x000024A8, 0x000026D0
+ .word 0x000026D0, 0x000028F8
+ .word 0x000028F8, 0x00002B20
+ .word 0x00002B20, 0x00002D48
+ .word 0x00002D48, 0x00002F70
+ .word 0x00002F70, 0x00003198
+ .word 0x00003198, 0x00006DD8
+ .word 0x00006DD8, 0x00007618
+ .word 0x00007618, 0x00009658
+ .word 0x00009658, 0x0000D698
+ .word 0x0000D698, 0x0000EED8
+ .word 0x0000EED8, 0x00016F08
+ .word 0x00016F08, 0x00018738
+ .word 0x00018738, 0x00018B5C
+ .word 0x00018B5C, 0x00018F80
+ .word 0x00018F80, 0x000195A4
+ .word 0x000195A4, 0x00019BC8
+ .word 0x00019BC8, 0x00019FEC
+ .word 0x00019FEC, 0x0001A810
+ .word 0x0001A810, 0x0001B034
+ .word 0x0001B034, 0x0001B232
+ .word 0x0001B234, 0x0001B2A3
+ .word 0x0001B2A4, 0x0001B516
+ .word 0x0001B518, 0x0001B587
+ .word 0x0001B588, 0x0001B7B0
+ .word 0x0001B7B0, 0x0001BDD4
+ .word 0x0001BDD4, 0x0001D994
+ .word 0x0001D994, 0x0001F554
+ .word 0x0001F554, 0x00021114
+ .word 0x00021114, 0x00022CD4
+ .word 0x00022CD4, 0x00024894
+ .word 0x00024894, 0x00026454
+ .word 0x00026454, 0x00028014
+ .word 0x00028014, 0x00029BD4
+ .word 0x00029BD4, 0x0002B794
+ .word 0x0002B794, 0x0002D354
+ .word 0x0002D354, 0x0002EF14
+ .word 0x0002EF14, 0x00030AD4
+ .word 0x00030AD4, 0x00032694
+ .word 0x00032694, 0x00034254
+ .word 0x00034254, 0x00035E14
+ .word 0x00035E14, 0x000379D4
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x000379DC ; chunk size
+ .incbin "baserom.nds", 0x1FC860C, 0x379D4
+ .balign 512, 255
diff --git a/files/FILE_2000000_unionroom.narc.s b/files/FILE_2000000_unionroom.narc.s
new file mode 100644
index 00000000..b27e7316
--- /dev/null
+++ b/files/FILE_2000000_unionroom.narc.s
@@ -0,0 +1,36 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00001210 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x0000004C ; chunk size
+ .short 8 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000228
+ .word 0x00000228, 0x00000450
+ .word 0x00000450, 0x00000859
+ .word 0x0000085C, 0x00000BB2
+ .word 0x00000BB4, 0x00000CD7
+ .word 0x00000CD8, 0x00001006
+ .word 0x00001008, 0x000010C4
+ .word 0x000010C4, 0x0000119B
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x000011A4 ; chunk size
+ .incbin "baserom.nds", 0x2000074, 0x119C
+ .balign 512, 255
diff --git a/files/FILE_2001400_waza_oshie_gra.narc.s b/files/FILE_2001400_waza_oshie_gra.narc.s
new file mode 100644
index 00000000..371b58c5
--- /dev/null
+++ b/files/FILE_2001400_waza_oshie_gra.narc.s
@@ -0,0 +1,41 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00002F34 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000074 ; chunk size
+ .short 13 ; number of files
+ .balign 4
+ .word 0x00000000, 0x0000006F
+ .word 0x00000070, 0x000000EB
+ .word 0x000000EC, 0x0000051C
+ .word 0x0000051C, 0x0000063E
+ .word 0x00000640, 0x000006CE
+ .word 0x000006D0, 0x00000780
+ .word 0x00000780, 0x000008A2
+ .word 0x000008A4, 0x00000932
+ .word 0x00000934, 0x000009E4
+ .word 0x000009E4, 0x00000C0C
+ .word 0x00000C0C, 0x00001C4C
+ .word 0x00001C4C, 0x00002C70
+ .word 0x00002C70, 0x00002E98
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00002EA0 ; chunk size
+ .incbin "baserom.nds", 0x200149C, 0x2E98
+ .balign 512, 255
diff --git a/files/FILE_2004400_winframe.narc.s b/files/FILE_2004400_winframe.narc.s
new file mode 100644
index 00000000..5d53d314
--- /dev/null
+++ b/files/FILE_2004400_winframe.narc.s
@@ -0,0 +1,78 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x000088E4 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x0000019C ; chunk size
+ .short 50 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000160
+ .word 0x00000160, 0x000002C0
+ .word 0x000002C0, 0x00000540
+ .word 0x00000540, 0x000007C0
+ .word 0x000007C0, 0x00000A40
+ .word 0x00000A40, 0x00000CC0
+ .word 0x00000CC0, 0x00000F40
+ .word 0x00000F40, 0x000011C0
+ .word 0x000011C0, 0x00001440
+ .word 0x00001440, 0x000016C0
+ .word 0x000016C0, 0x00001940
+ .word 0x00001940, 0x00001BC0
+ .word 0x00001BC0, 0x00001E40
+ .word 0x00001E40, 0x000020C0
+ .word 0x000020C0, 0x00002340
+ .word 0x00002340, 0x000025C0
+ .word 0x000025C0, 0x00002840
+ .word 0x00002840, 0x00002AC0
+ .word 0x00002AC0, 0x00002D40
+ .word 0x00002D40, 0x00002FC0
+ .word 0x00002FC0, 0x00003240
+ .word 0x00003240, 0x000034C0
+ .word 0x000034C0, 0x00003680
+ .word 0x00003680, 0x00003AC0
+ .word 0x00003AC0, 0x00003CE8
+ .word 0x00003CE8, 0x00003F10
+ .word 0x00003F10, 0x00004138
+ .word 0x00004138, 0x00004360
+ .word 0x00004360, 0x00004588
+ .word 0x00004588, 0x000047B0
+ .word 0x000047B0, 0x000049D8
+ .word 0x000049D8, 0x00004C00
+ .word 0x00004C00, 0x00004E28
+ .word 0x00004E28, 0x00005050
+ .word 0x00005050, 0x00005278
+ .word 0x00005278, 0x000054A0
+ .word 0x000054A0, 0x000056C8
+ .word 0x000056C8, 0x000058F0
+ .word 0x000058F0, 0x00005B18
+ .word 0x00005B18, 0x00005D40
+ .word 0x00005D40, 0x00005F68
+ .word 0x00005F68, 0x00006190
+ .word 0x00006190, 0x000063B8
+ .word 0x000063B8, 0x000065E0
+ .word 0x000065E0, 0x00006808
+ .word 0x00006808, 0x00006A30
+ .word 0x00006A30, 0x00006AFA
+ .word 0x00006AFC, 0x00006BC6
+ .word 0x00006BC8, 0x000084F8
+ .word 0x000084F8, 0x00008720
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00008728 ; chunk size
+ .incbin "baserom.nds", 0x20045C4, 0x8720
+ .balign 512, 255
diff --git a/files/FILE_200CE00_worldtrade.narc.s b/files/FILE_200CE00_worldtrade.narc.s
new file mode 100644
index 00000000..a5d0fe44
--- /dev/null
+++ b/files/FILE_200CE00_worldtrade.narc.s
@@ -0,0 +1,66 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x0000B6D8 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x0000013C ; chunk size
+ .short 38 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000228
+ .word 0x00000228, 0x00000450
+ .word 0x00000450, 0x00000678
+ .word 0x00000678, 0x000008A0
+ .word 0x000008A0, 0x00000AC8
+ .word 0x00000AC8, 0x00000CF0
+ .word 0x00000CF0, 0x00000F18
+ .word 0x00000F18, 0x00001140
+ .word 0x00001140, 0x00001368
+ .word 0x00001368, 0x00001590
+ .word 0x00001590, 0x00001995
+ .word 0x00001998, 0x00001BA1
+ .word 0x00001BA4, 0x00001DB8
+ .word 0x00001DB8, 0x00001FA0
+ .word 0x00001FA0, 0x000021BC
+ .word 0x000021BC, 0x00002F05
+ .word 0x00002F08, 0x000076D1
+ .word 0x000076D4, 0x00007907
+ .word 0x00007908, 0x000088EF
+ .word 0x000088F0, 0x00008BDD
+ .word 0x00008BE0, 0x00008F25
+ .word 0x00008F28, 0x000091C0
+ .word 0x000091C0, 0x000092CD
+ .word 0x000092D0, 0x00009415
+ .word 0x00009418, 0x00009545
+ .word 0x00009548, 0x00009698
+ .word 0x00009698, 0x000097DE
+ .word 0x000097E0, 0x0000993D
+ .word 0x00009940, 0x00009A9C
+ .word 0x00009A9C, 0x00009B82
+ .word 0x00009B84, 0x00009C82
+ .word 0x00009C84, 0x00009F32
+ .word 0x00009F34, 0x0000ACCC
+ .word 0x0000ACCC, 0x0000B011
+ .word 0x0000B014, 0x0000B40E
+ .word 0x0000B410, 0x0000B472
+ .word 0x0000B474, 0x0000B4F4
+ .word 0x0000B4F4, 0x0000B571
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x0000B57C ; chunk size
+ .incbin "baserom.nds", 0x200CF64, 0xB574
+ .balign 512, 255
diff --git a/files/FILE_2018600_item_data.narc.s b/files/FILE_2018600_item_data.narc.s
new file mode 100644
index 00000000..7c220e34
--- /dev/null
+++ b/files/FILE_2018600_item_data.narc.s
@@ -0,0 +1,470 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00004C2C ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000DDC ; chunk size
+ .short 442 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000022
+ .word 0x00000024, 0x00000046
+ .word 0x00000048, 0x0000006A
+ .word 0x0000006C, 0x0000008E
+ .word 0x00000090, 0x000000B2
+ .word 0x000000B4, 0x000000D6
+ .word 0x000000D8, 0x000000FA
+ .word 0x000000FC, 0x0000011E
+ .word 0x00000120, 0x00000142
+ .word 0x00000144, 0x00000166
+ .word 0x00000168, 0x0000018A
+ .word 0x0000018C, 0x000001AE
+ .word 0x000001B0, 0x000001D2
+ .word 0x000001D4, 0x000001F6
+ .word 0x000001F8, 0x0000021A
+ .word 0x0000021C, 0x0000023E
+ .word 0x00000240, 0x00000262
+ .word 0x00000264, 0x00000286
+ .word 0x00000288, 0x000002AA
+ .word 0x000002AC, 0x000002CE
+ .word 0x000002D0, 0x000002F2
+ .word 0x000002F4, 0x00000316
+ .word 0x00000318, 0x0000033A
+ .word 0x0000033C, 0x0000035E
+ .word 0x00000360, 0x00000382
+ .word 0x00000384, 0x000003A6
+ .word 0x000003A8, 0x000003CA
+ .word 0x000003CC, 0x000003EE
+ .word 0x000003F0, 0x00000412
+ .word 0x00000414, 0x00000436
+ .word 0x00000438, 0x0000045A
+ .word 0x0000045C, 0x0000047E
+ .word 0x00000480, 0x000004A2
+ .word 0x000004A4, 0x000004C6
+ .word 0x000004C8, 0x000004EA
+ .word 0x000004EC, 0x0000050E
+ .word 0x00000510, 0x00000532
+ .word 0x00000534, 0x00000556
+ .word 0x00000558, 0x0000057A
+ .word 0x0000057C, 0x0000059E
+ .word 0x000005A0, 0x000005C2
+ .word 0x000005C4, 0x000005E6
+ .word 0x000005E8, 0x0000060A
+ .word 0x0000060C, 0x0000062E
+ .word 0x00000630, 0x00000652
+ .word 0x00000654, 0x00000676
+ .word 0x00000678, 0x0000069A
+ .word 0x0000069C, 0x000006BE
+ .word 0x000006C0, 0x000006E2
+ .word 0x000006E4, 0x00000706
+ .word 0x00000708, 0x0000072A
+ .word 0x0000072C, 0x0000074E
+ .word 0x00000750, 0x00000772
+ .word 0x00000774, 0x00000796
+ .word 0x00000798, 0x000007BA
+ .word 0x000007BC, 0x000007DE
+ .word 0x000007E0, 0x00000802
+ .word 0x00000804, 0x00000826
+ .word 0x00000828, 0x0000084A
+ .word 0x0000084C, 0x0000086E
+ .word 0x00000870, 0x00000892
+ .word 0x00000894, 0x000008B6
+ .word 0x000008B8, 0x000008DA
+ .word 0x000008DC, 0x000008FE
+ .word 0x00000900, 0x00000922
+ .word 0x00000924, 0x00000946
+ .word 0x00000948, 0x0000096A
+ .word 0x0000096C, 0x0000098E
+ .word 0x00000990, 0x000009B2
+ .word 0x000009B4, 0x000009D6
+ .word 0x000009D8, 0x000009FA
+ .word 0x000009FC, 0x00000A1E
+ .word 0x00000A20, 0x00000A42
+ .word 0x00000A44, 0x00000A66
+ .word 0x00000A68, 0x00000A8A
+ .word 0x00000A8C, 0x00000AAE
+ .word 0x00000AB0, 0x00000AD2
+ .word 0x00000AD4, 0x00000AF6
+ .word 0x00000AF8, 0x00000B1A
+ .word 0x00000B1C, 0x00000B3E
+ .word 0x00000B40, 0x00000B62
+ .word 0x00000B64, 0x00000B86
+ .word 0x00000B88, 0x00000BAA
+ .word 0x00000BAC, 0x00000BCE
+ .word 0x00000BD0, 0x00000BF2
+ .word 0x00000BF4, 0x00000C16
+ .word 0x00000C18, 0x00000C3A
+ .word 0x00000C3C, 0x00000C5E
+ .word 0x00000C60, 0x00000C82
+ .word 0x00000C84, 0x00000CA6
+ .word 0x00000CA8, 0x00000CCA
+ .word 0x00000CCC, 0x00000CEE
+ .word 0x00000CF0, 0x00000D12
+ .word 0x00000D14, 0x00000D36
+ .word 0x00000D38, 0x00000D5A
+ .word 0x00000D5C, 0x00000D7E
+ .word 0x00000D80, 0x00000DA2
+ .word 0x00000DA4, 0x00000DC6
+ .word 0x00000DC8, 0x00000DEA
+ .word 0x00000DEC, 0x00000E0E
+ .word 0x00000E10, 0x00000E32
+ .word 0x00000E34, 0x00000E56
+ .word 0x00000E58, 0x00000E7A
+ .word 0x00000E7C, 0x00000E9E
+ .word 0x00000EA0, 0x00000EC2
+ .word 0x00000EC4, 0x00000EE6
+ .word 0x00000EE8, 0x00000F0A
+ .word 0x00000F0C, 0x00000F2E
+ .word 0x00000F30, 0x00000F52
+ .word 0x00000F54, 0x00000F76
+ .word 0x00000F78, 0x00000F9A
+ .word 0x00000F9C, 0x00000FBE
+ .word 0x00000FC0, 0x00000FE2
+ .word 0x00000FE4, 0x00001006
+ .word 0x00001008, 0x0000102A
+ .word 0x0000102C, 0x0000104E
+ .word 0x00001050, 0x00001072
+ .word 0x00001074, 0x00001096
+ .word 0x00001098, 0x000010BA
+ .word 0x000010BC, 0x000010DE
+ .word 0x000010E0, 0x00001102
+ .word 0x00001104, 0x00001126
+ .word 0x00001128, 0x0000114A
+ .word 0x0000114C, 0x0000116E
+ .word 0x00001170, 0x00001192
+ .word 0x00001194, 0x000011B6
+ .word 0x000011B8, 0x000011DA
+ .word 0x000011DC, 0x000011FE
+ .word 0x00001200, 0x00001222
+ .word 0x00001224, 0x00001246
+ .word 0x00001248, 0x0000126A
+ .word 0x0000126C, 0x0000128E
+ .word 0x00001290, 0x000012B2
+ .word 0x000012B4, 0x000012D6
+ .word 0x000012D8, 0x000012FA
+ .word 0x000012FC, 0x0000131E
+ .word 0x00001320, 0x00001342
+ .word 0x00001344, 0x00001366
+ .word 0x00001368, 0x0000138A
+ .word 0x0000138C, 0x000013AE
+ .word 0x000013B0, 0x000013D2
+ .word 0x000013D4, 0x000013F6
+ .word 0x000013F8, 0x0000141A
+ .word 0x0000141C, 0x0000143E
+ .word 0x00001440, 0x00001462
+ .word 0x00001464, 0x00001486
+ .word 0x00001488, 0x000014AA
+ .word 0x000014AC, 0x000014CE
+ .word 0x000014D0, 0x000014F2
+ .word 0x000014F4, 0x00001516
+ .word 0x00001518, 0x0000153A
+ .word 0x0000153C, 0x0000155E
+ .word 0x00001560, 0x00001582
+ .word 0x00001584, 0x000015A6
+ .word 0x000015A8, 0x000015CA
+ .word 0x000015CC, 0x000015EE
+ .word 0x000015F0, 0x00001612
+ .word 0x00001614, 0x00001636
+ .word 0x00001638, 0x0000165A
+ .word 0x0000165C, 0x0000167E
+ .word 0x00001680, 0x000016A2
+ .word 0x000016A4, 0x000016C6
+ .word 0x000016C8, 0x000016EA
+ .word 0x000016EC, 0x0000170E
+ .word 0x00001710, 0x00001732
+ .word 0x00001734, 0x00001756
+ .word 0x00001758, 0x0000177A
+ .word 0x0000177C, 0x0000179E
+ .word 0x000017A0, 0x000017C2
+ .word 0x000017C4, 0x000017E6
+ .word 0x000017E8, 0x0000180A
+ .word 0x0000180C, 0x0000182E
+ .word 0x00001830, 0x00001852
+ .word 0x00001854, 0x00001876
+ .word 0x00001878, 0x0000189A
+ .word 0x0000189C, 0x000018BE
+ .word 0x000018C0, 0x000018E2
+ .word 0x000018E4, 0x00001906
+ .word 0x00001908, 0x0000192A
+ .word 0x0000192C, 0x0000194E
+ .word 0x00001950, 0x00001972
+ .word 0x00001974, 0x00001996
+ .word 0x00001998, 0x000019BA
+ .word 0x000019BC, 0x000019DE
+ .word 0x000019E0, 0x00001A02
+ .word 0x00001A04, 0x00001A26
+ .word 0x00001A28, 0x00001A4A
+ .word 0x00001A4C, 0x00001A6E
+ .word 0x00001A70, 0x00001A92
+ .word 0x00001A94, 0x00001AB6
+ .word 0x00001AB8, 0x00001ADA
+ .word 0x00001ADC, 0x00001AFE
+ .word 0x00001B00, 0x00001B22
+ .word 0x00001B24, 0x00001B46
+ .word 0x00001B48, 0x00001B6A
+ .word 0x00001B6C, 0x00001B8E
+ .word 0x00001B90, 0x00001BB2
+ .word 0x00001BB4, 0x00001BD6
+ .word 0x00001BD8, 0x00001BFA
+ .word 0x00001BFC, 0x00001C1E
+ .word 0x00001C20, 0x00001C42
+ .word 0x00001C44, 0x00001C66
+ .word 0x00001C68, 0x00001C8A
+ .word 0x00001C8C, 0x00001CAE
+ .word 0x00001CB0, 0x00001CD2
+ .word 0x00001CD4, 0x00001CF6
+ .word 0x00001CF8, 0x00001D1A
+ .word 0x00001D1C, 0x00001D3E
+ .word 0x00001D40, 0x00001D62
+ .word 0x00001D64, 0x00001D86
+ .word 0x00001D88, 0x00001DAA
+ .word 0x00001DAC, 0x00001DCE
+ .word 0x00001DD0, 0x00001DF2
+ .word 0x00001DF4, 0x00001E16
+ .word 0x00001E18, 0x00001E3A
+ .word 0x00001E3C, 0x00001E5E
+ .word 0x00001E60, 0x00001E82
+ .word 0x00001E84, 0x00001EA6
+ .word 0x00001EA8, 0x00001ECA
+ .word 0x00001ECC, 0x00001EEE
+ .word 0x00001EF0, 0x00001F12
+ .word 0x00001F14, 0x00001F36
+ .word 0x00001F38, 0x00001F5A
+ .word 0x00001F5C, 0x00001F7E
+ .word 0x00001F80, 0x00001FA2
+ .word 0x00001FA4, 0x00001FC6
+ .word 0x00001FC8, 0x00001FEA
+ .word 0x00001FEC, 0x0000200E
+ .word 0x00002010, 0x00002032
+ .word 0x00002034, 0x00002056
+ .word 0x00002058, 0x0000207A
+ .word 0x0000207C, 0x0000209E
+ .word 0x000020A0, 0x000020C2
+ .word 0x000020C4, 0x000020E6
+ .word 0x000020E8, 0x0000210A
+ .word 0x0000210C, 0x0000212E
+ .word 0x00002130, 0x00002152
+ .word 0x00002154, 0x00002176
+ .word 0x00002178, 0x0000219A
+ .word 0x0000219C, 0x000021BE
+ .word 0x000021C0, 0x000021E2
+ .word 0x000021E4, 0x00002206
+ .word 0x00002208, 0x0000222A
+ .word 0x0000222C, 0x0000224E
+ .word 0x00002250, 0x00002272
+ .word 0x00002274, 0x00002296
+ .word 0x00002298, 0x000022BA
+ .word 0x000022BC, 0x000022DE
+ .word 0x000022E0, 0x00002302
+ .word 0x00002304, 0x00002326
+ .word 0x00002328, 0x0000234A
+ .word 0x0000234C, 0x0000236E
+ .word 0x00002370, 0x00002392
+ .word 0x00002394, 0x000023B6
+ .word 0x000023B8, 0x000023DA
+ .word 0x000023DC, 0x000023FE
+ .word 0x00002400, 0x00002422
+ .word 0x00002424, 0x00002446
+ .word 0x00002448, 0x0000246A
+ .word 0x0000246C, 0x0000248E
+ .word 0x00002490, 0x000024B2
+ .word 0x000024B4, 0x000024D6
+ .word 0x000024D8, 0x000024FA
+ .word 0x000024FC, 0x0000251E
+ .word 0x00002520, 0x00002542
+ .word 0x00002544, 0x00002566
+ .word 0x00002568, 0x0000258A
+ .word 0x0000258C, 0x000025AE
+ .word 0x000025B0, 0x000025D2
+ .word 0x000025D4, 0x000025F6
+ .word 0x000025F8, 0x0000261A
+ .word 0x0000261C, 0x0000263E
+ .word 0x00002640, 0x00002662
+ .word 0x00002664, 0x00002686
+ .word 0x00002688, 0x000026AA
+ .word 0x000026AC, 0x000026CE
+ .word 0x000026D0, 0x000026F2
+ .word 0x000026F4, 0x00002716
+ .word 0x00002718, 0x0000273A
+ .word 0x0000273C, 0x0000275E
+ .word 0x00002760, 0x00002782
+ .word 0x00002784, 0x000027A6
+ .word 0x000027A8, 0x000027CA
+ .word 0x000027CC, 0x000027EE
+ .word 0x000027F0, 0x00002812
+ .word 0x00002814, 0x00002836
+ .word 0x00002838, 0x0000285A
+ .word 0x0000285C, 0x0000287E
+ .word 0x00002880, 0x000028A2
+ .word 0x000028A4, 0x000028C6
+ .word 0x000028C8, 0x000028EA
+ .word 0x000028EC, 0x0000290E
+ .word 0x00002910, 0x00002932
+ .word 0x00002934, 0x00002956
+ .word 0x00002958, 0x0000297A
+ .word 0x0000297C, 0x0000299E
+ .word 0x000029A0, 0x000029C2
+ .word 0x000029C4, 0x000029E6
+ .word 0x000029E8, 0x00002A0A
+ .word 0x00002A0C, 0x00002A2E
+ .word 0x00002A30, 0x00002A52
+ .word 0x00002A54, 0x00002A76
+ .word 0x00002A78, 0x00002A9A
+ .word 0x00002A9C, 0x00002ABE
+ .word 0x00002AC0, 0x00002AE2
+ .word 0x00002AE4, 0x00002B06
+ .word 0x00002B08, 0x00002B2A
+ .word 0x00002B2C, 0x00002B4E
+ .word 0x00002B50, 0x00002B72
+ .word 0x00002B74, 0x00002B96
+ .word 0x00002B98, 0x00002BBA
+ .word 0x00002BBC, 0x00002BDE
+ .word 0x00002BE0, 0x00002C02
+ .word 0x00002C04, 0x00002C26
+ .word 0x00002C28, 0x00002C4A
+ .word 0x00002C4C, 0x00002C6E
+ .word 0x00002C70, 0x00002C92
+ .word 0x00002C94, 0x00002CB6
+ .word 0x00002CB8, 0x00002CDA
+ .word 0x00002CDC, 0x00002CFE
+ .word 0x00002D00, 0x00002D22
+ .word 0x00002D24, 0x00002D46
+ .word 0x00002D48, 0x00002D6A
+ .word 0x00002D6C, 0x00002D8E
+ .word 0x00002D90, 0x00002DB2
+ .word 0x00002DB4, 0x00002DD6
+ .word 0x00002DD8, 0x00002DFA
+ .word 0x00002DFC, 0x00002E1E
+ .word 0x00002E20, 0x00002E42
+ .word 0x00002E44, 0x00002E66
+ .word 0x00002E68, 0x00002E8A
+ .word 0x00002E8C, 0x00002EAE
+ .word 0x00002EB0, 0x00002ED2
+ .word 0x00002ED4, 0x00002EF6
+ .word 0x00002EF8, 0x00002F1A
+ .word 0x00002F1C, 0x00002F3E
+ .word 0x00002F40, 0x00002F62
+ .word 0x00002F64, 0x00002F86
+ .word 0x00002F88, 0x00002FAA
+ .word 0x00002FAC, 0x00002FCE
+ .word 0x00002FD0, 0x00002FF2
+ .word 0x00002FF4, 0x00003016
+ .word 0x00003018, 0x0000303A
+ .word 0x0000303C, 0x0000305E
+ .word 0x00003060, 0x00003082
+ .word 0x00003084, 0x000030A6
+ .word 0x000030A8, 0x000030CA
+ .word 0x000030CC, 0x000030EE
+ .word 0x000030F0, 0x00003112
+ .word 0x00003114, 0x00003136
+ .word 0x00003138, 0x0000315A
+ .word 0x0000315C, 0x0000317E
+ .word 0x00003180, 0x000031A2
+ .word 0x000031A4, 0x000031C6
+ .word 0x000031C8, 0x000031EA
+ .word 0x000031EC, 0x0000320E
+ .word 0x00003210, 0x00003232
+ .word 0x00003234, 0x00003256
+ .word 0x00003258, 0x0000327A
+ .word 0x0000327C, 0x0000329E
+ .word 0x000032A0, 0x000032C2
+ .word 0x000032C4, 0x000032E6
+ .word 0x000032E8, 0x0000330A
+ .word 0x0000330C, 0x0000332E
+ .word 0x00003330, 0x00003352
+ .word 0x00003354, 0x00003376
+ .word 0x00003378, 0x0000339A
+ .word 0x0000339C, 0x000033BE
+ .word 0x000033C0, 0x000033E2
+ .word 0x000033E4, 0x00003406
+ .word 0x00003408, 0x0000342A
+ .word 0x0000342C, 0x0000344E
+ .word 0x00003450, 0x00003472
+ .word 0x00003474, 0x00003496
+ .word 0x00003498, 0x000034BA
+ .word 0x000034BC, 0x000034DE
+ .word 0x000034E0, 0x00003502
+ .word 0x00003504, 0x00003526
+ .word 0x00003528, 0x0000354A
+ .word 0x0000354C, 0x0000356E
+ .word 0x00003570, 0x00003592
+ .word 0x00003594, 0x000035B6
+ .word 0x000035B8, 0x000035DA
+ .word 0x000035DC, 0x000035FE
+ .word 0x00003600, 0x00003622
+ .word 0x00003624, 0x00003646
+ .word 0x00003648, 0x0000366A
+ .word 0x0000366C, 0x0000368E
+ .word 0x00003690, 0x000036B2
+ .word 0x000036B4, 0x000036D6
+ .word 0x000036D8, 0x000036FA
+ .word 0x000036FC, 0x0000371E
+ .word 0x00003720, 0x00003742
+ .word 0x00003744, 0x00003766
+ .word 0x00003768, 0x0000378A
+ .word 0x0000378C, 0x000037AE
+ .word 0x000037B0, 0x000037D2
+ .word 0x000037D4, 0x000037F6
+ .word 0x000037F8, 0x0000381A
+ .word 0x0000381C, 0x0000383E
+ .word 0x00003840, 0x00003862
+ .word 0x00003864, 0x00003886
+ .word 0x00003888, 0x000038AA
+ .word 0x000038AC, 0x000038CE
+ .word 0x000038D0, 0x000038F2
+ .word 0x000038F4, 0x00003916
+ .word 0x00003918, 0x0000393A
+ .word 0x0000393C, 0x0000395E
+ .word 0x00003960, 0x00003982
+ .word 0x00003984, 0x000039A6
+ .word 0x000039A8, 0x000039CA
+ .word 0x000039CC, 0x000039EE
+ .word 0x000039F0, 0x00003A12
+ .word 0x00003A14, 0x00003A36
+ .word 0x00003A38, 0x00003A5A
+ .word 0x00003A5C, 0x00003A7E
+ .word 0x00003A80, 0x00003AA2
+ .word 0x00003AA4, 0x00003AC6
+ .word 0x00003AC8, 0x00003AEA
+ .word 0x00003AEC, 0x00003B0E
+ .word 0x00003B10, 0x00003B32
+ .word 0x00003B34, 0x00003B56
+ .word 0x00003B58, 0x00003B7A
+ .word 0x00003B7C, 0x00003B9E
+ .word 0x00003BA0, 0x00003BC2
+ .word 0x00003BC4, 0x00003BE6
+ .word 0x00003BE8, 0x00003C0A
+ .word 0x00003C0C, 0x00003C2E
+ .word 0x00003C30, 0x00003C52
+ .word 0x00003C54, 0x00003C76
+ .word 0x00003C78, 0x00003C9A
+ .word 0x00003C9C, 0x00003CBE
+ .word 0x00003CC0, 0x00003CE2
+ .word 0x00003CE4, 0x00003D06
+ .word 0x00003D08, 0x00003D2A
+ .word 0x00003D2C, 0x00003D4E
+ .word 0x00003D50, 0x00003D72
+ .word 0x00003D74, 0x00003D96
+ .word 0x00003D98, 0x00003DBA
+ .word 0x00003DBC, 0x00003DDE
+ .word 0x00003DE0, 0x00003E02
+ .word 0x00003E04, 0x00003E26
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00003E30 ; chunk size
+ .incbin "baserom.nds", 0x2019404, 0x3E28
+ .balign 512, 255
diff --git a/files/FILE_201D400_item_icon.narc.s b/files/FILE_201D400_item_icon.narc.s
new file mode 100644
index 00000000..f1c46fdc
--- /dev/null
+++ b/files/FILE_201D400_item_icon.narc.s
@@ -0,0 +1,731 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x000608B0 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00001604 ; chunk size
+ .short 703 ; number of files
+ .balign 4
+ .word 0x00000000, 0x0000006F
+ .word 0x00000070, 0x000000DB
+ .word 0x000000DC, 0x0000030C
+ .word 0x0000030C, 0x00000534
+ .word 0x00000534, 0x00000764
+ .word 0x00000764, 0x0000098C
+ .word 0x0000098C, 0x00000BBC
+ .word 0x00000BBC, 0x00000DE4
+ .word 0x00000DE4, 0x00001014
+ .word 0x00001014, 0x0000123C
+ .word 0x0000123C, 0x0000146C
+ .word 0x0000146C, 0x00001694
+ .word 0x00001694, 0x000018C4
+ .word 0x000018C4, 0x00001AEC
+ .word 0x00001AEC, 0x00001D1C
+ .word 0x00001D1C, 0x00001F44
+ .word 0x00001F44, 0x00002174
+ .word 0x00002174, 0x0000239C
+ .word 0x0000239C, 0x000025CC
+ .word 0x000025CC, 0x000027F4
+ .word 0x000027F4, 0x00002A24
+ .word 0x00002A24, 0x00002C54
+ .word 0x00002C54, 0x00002E7C
+ .word 0x00002E7C, 0x000030AC
+ .word 0x000030AC, 0x000032DC
+ .word 0x000032DC, 0x00003504
+ .word 0x00003504, 0x00003734
+ .word 0x00003734, 0x0000395C
+ .word 0x0000395C, 0x00003B84
+ .word 0x00003B84, 0x00003DAC
+ .word 0x00003DAC, 0x00003FDC
+ .word 0x00003FDC, 0x00004204
+ .word 0x00004204, 0x0000442C
+ .word 0x0000442C, 0x0000465C
+ .word 0x0000465C, 0x00004884
+ .word 0x00004884, 0x00004AAC
+ .word 0x00004AAC, 0x00004CD4
+ .word 0x00004CD4, 0x00004EFC
+ .word 0x00004EFC, 0x0000512C
+ .word 0x0000512C, 0x00005354
+ .word 0x00005354, 0x00005584
+ .word 0x00005584, 0x000057B4
+ .word 0x000057B4, 0x000059DC
+ .word 0x000059DC, 0x00005C0C
+ .word 0x00005C0C, 0x00005E34
+ .word 0x00005E34, 0x00006064
+ .word 0x00006064, 0x0000628C
+ .word 0x0000628C, 0x000064BC
+ .word 0x000064BC, 0x000066E4
+ .word 0x000066E4, 0x00006914
+ .word 0x00006914, 0x00006B3C
+ .word 0x00006B3C, 0x00006D6C
+ .word 0x00006D6C, 0x00006F94
+ .word 0x00006F94, 0x000071C4
+ .word 0x000071C4, 0x000073EC
+ .word 0x000073EC, 0x00007614
+ .word 0x00007614, 0x00007844
+ .word 0x00007844, 0x00007A6C
+ .word 0x00007A6C, 0x00007C9C
+ .word 0x00007C9C, 0x00007EC4
+ .word 0x00007EC4, 0x000080EC
+ .word 0x000080EC, 0x00008314
+ .word 0x00008314, 0x0000853C
+ .word 0x0000853C, 0x0000876C
+ .word 0x0000876C, 0x00008994
+ .word 0x00008994, 0x00008BC4
+ .word 0x00008BC4, 0x00008DEC
+ .word 0x00008DEC, 0x00009014
+ .word 0x00009014, 0x0000923C
+ .word 0x0000923C, 0x00009464
+ .word 0x00009464, 0x0000968C
+ .word 0x0000968C, 0x000098BC
+ .word 0x000098BC, 0x00009AE4
+ .word 0x00009AE4, 0x00009D14
+ .word 0x00009D14, 0x00009F3C
+ .word 0x00009F3C, 0x0000A164
+ .word 0x0000A164, 0x0000A394
+ .word 0x0000A394, 0x0000A5BC
+ .word 0x0000A5BC, 0x0000A7EC
+ .word 0x0000A7EC, 0x0000AA14
+ .word 0x0000AA14, 0x0000AC3C
+ .word 0x0000AC3C, 0x0000AE64
+ .word 0x0000AE64, 0x0000B08C
+ .word 0x0000B08C, 0x0000B2BC
+ .word 0x0000B2BC, 0x0000B4E4
+ .word 0x0000B4E4, 0x0000B714
+ .word 0x0000B714, 0x0000B93C
+ .word 0x0000B93C, 0x0000BB64
+ .word 0x0000BB64, 0x0000BD8C
+ .word 0x0000BD8C, 0x0000BFB4
+ .word 0x0000BFB4, 0x0000C1E4
+ .word 0x0000C1E4, 0x0000C40C
+ .word 0x0000C40C, 0x0000C63C
+ .word 0x0000C63C, 0x0000C864
+ .word 0x0000C864, 0x0000CA8C
+ .word 0x0000CA8C, 0x0000CCBC
+ .word 0x0000CCBC, 0x0000CEE4
+ .word 0x0000CEE4, 0x0000D10C
+ .word 0x0000D10C, 0x0000D334
+ .word 0x0000D334, 0x0000D55C
+ .word 0x0000D55C, 0x0000D78C
+ .word 0x0000D78C, 0x0000D9B4
+ .word 0x0000D9B4, 0x0000DBDC
+ .word 0x0000DBDC, 0x0000DE04
+ .word 0x0000DE04, 0x0000E02C
+ .word 0x0000E02C, 0x0000E25C
+ .word 0x0000E25C, 0x0000E484
+ .word 0x0000E484, 0x0000E6B4
+ .word 0x0000E6B4, 0x0000E8DC
+ .word 0x0000E8DC, 0x0000EB0C
+ .word 0x0000EB0C, 0x0000ED34
+ .word 0x0000ED34, 0x0000EF5C
+ .word 0x0000EF5C, 0x0000F18C
+ .word 0x0000F18C, 0x0000F3B4
+ .word 0x0000F3B4, 0x0000F5DC
+ .word 0x0000F5DC, 0x0000F80C
+ .word 0x0000F80C, 0x0000FA34
+ .word 0x0000FA34, 0x0000FC64
+ .word 0x0000FC64, 0x0000FE8C
+ .word 0x0000FE8C, 0x000100BC
+ .word 0x000100BC, 0x000102E4
+ .word 0x000102E4, 0x00010514
+ .word 0x00010514, 0x0001073C
+ .word 0x0001073C, 0x0001096C
+ .word 0x0001096C, 0x00010B94
+ .word 0x00010B94, 0x00010DC4
+ .word 0x00010DC4, 0x00010FEC
+ .word 0x00010FEC, 0x0001121C
+ .word 0x0001121C, 0x0001144C
+ .word 0x0001144C, 0x00011674
+ .word 0x00011674, 0x000118A4
+ .word 0x000118A4, 0x00011ACC
+ .word 0x00011ACC, 0x00011CFC
+ .word 0x00011CFC, 0x00011F2C
+ .word 0x00011F2C, 0x00012154
+ .word 0x00012154, 0x00012384
+ .word 0x00012384, 0x000125B4
+ .word 0x000125B4, 0x000127DC
+ .word 0x000127DC, 0x00012A0C
+ .word 0x00012A0C, 0x00012C34
+ .word 0x00012C34, 0x00012E64
+ .word 0x00012E64, 0x0001308C
+ .word 0x0001308C, 0x000132BC
+ .word 0x000132BC, 0x000134E4
+ .word 0x000134E4, 0x00013714
+ .word 0x00013714, 0x0001393C
+ .word 0x0001393C, 0x00013B6C
+ .word 0x00013B6C, 0x00013D94
+ .word 0x00013D94, 0x00013FC4
+ .word 0x00013FC4, 0x000141EC
+ .word 0x000141EC, 0x0001441C
+ .word 0x0001441C, 0x00014644
+ .word 0x00014644, 0x00014874
+ .word 0x00014874, 0x00014A9C
+ .word 0x00014A9C, 0x00014CCC
+ .word 0x00014CCC, 0x00014EF4
+ .word 0x00014EF4, 0x00015124
+ .word 0x00015124, 0x0001534C
+ .word 0x0001534C, 0x0001557C
+ .word 0x0001557C, 0x000157A4
+ .word 0x000157A4, 0x000159D4
+ .word 0x000159D4, 0x00015BFC
+ .word 0x00015BFC, 0x00015E2C
+ .word 0x00015E2C, 0x00016054
+ .word 0x00016054, 0x00016284
+ .word 0x00016284, 0x000164AC
+ .word 0x000164AC, 0x000166DC
+ .word 0x000166DC, 0x00016904
+ .word 0x00016904, 0x00016B34
+ .word 0x00016B34, 0x00016D5C
+ .word 0x00016D5C, 0x00016F8C
+ .word 0x00016F8C, 0x000171B4
+ .word 0x000171B4, 0x000173E4
+ .word 0x000173E4, 0x0001760C
+ .word 0x0001760C, 0x0001783C
+ .word 0x0001783C, 0x00017A64
+ .word 0x00017A64, 0x00017C94
+ .word 0x00017C94, 0x00017EBC
+ .word 0x00017EBC, 0x000180EC
+ .word 0x000180EC, 0x00018314
+ .word 0x00018314, 0x00018544
+ .word 0x00018544, 0x0001876C
+ .word 0x0001876C, 0x0001899C
+ .word 0x0001899C, 0x00018BC4
+ .word 0x00018BC4, 0x00018DF4
+ .word 0x00018DF4, 0x0001901C
+ .word 0x0001901C, 0x0001924C
+ .word 0x0001924C, 0x00019474
+ .word 0x00019474, 0x000196A4
+ .word 0x000196A4, 0x000198CC
+ .word 0x000198CC, 0x00019AFC
+ .word 0x00019AFC, 0x00019D24
+ .word 0x00019D24, 0x00019F54
+ .word 0x00019F54, 0x0001A17C
+ .word 0x0001A17C, 0x0001A3AC
+ .word 0x0001A3AC, 0x0001A5D4
+ .word 0x0001A5D4, 0x0001A804
+ .word 0x0001A804, 0x0001AA2C
+ .word 0x0001AA2C, 0x0001AC5C
+ .word 0x0001AC5C, 0x0001AE84
+ .word 0x0001AE84, 0x0001B0B4
+ .word 0x0001B0B4, 0x0001B2DC
+ .word 0x0001B2DC, 0x0001B50C
+ .word 0x0001B50C, 0x0001B734
+ .word 0x0001B734, 0x0001B964
+ .word 0x0001B964, 0x0001BB8C
+ .word 0x0001BB8C, 0x0001BDBC
+ .word 0x0001BDBC, 0x0001BFE4
+ .word 0x0001BFE4, 0x0001C214
+ .word 0x0001C214, 0x0001C43C
+ .word 0x0001C43C, 0x0001C66C
+ .word 0x0001C66C, 0x0001C894
+ .word 0x0001C894, 0x0001CAC4
+ .word 0x0001CAC4, 0x0001CCEC
+ .word 0x0001CCEC, 0x0001CF1C
+ .word 0x0001CF1C, 0x0001D144
+ .word 0x0001D144, 0x0001D374
+ .word 0x0001D374, 0x0001D59C
+ .word 0x0001D59C, 0x0001D7CC
+ .word 0x0001D7CC, 0x0001D9F4
+ .word 0x0001D9F4, 0x0001DC24
+ .word 0x0001DC24, 0x0001DE4C
+ .word 0x0001DE4C, 0x0001E07C
+ .word 0x0001E07C, 0x0001E2A4
+ .word 0x0001E2A4, 0x0001E4D4
+ .word 0x0001E4D4, 0x0001E6FC
+ .word 0x0001E6FC, 0x0001E92C
+ .word 0x0001E92C, 0x0001EB54
+ .word 0x0001EB54, 0x0001ED84
+ .word 0x0001ED84, 0x0001EFAC
+ .word 0x0001EFAC, 0x0001F1DC
+ .word 0x0001F1DC, 0x0001F404
+ .word 0x0001F404, 0x0001F634
+ .word 0x0001F634, 0x0001F85C
+ .word 0x0001F85C, 0x0001FA8C
+ .word 0x0001FA8C, 0x0001FCB4
+ .word 0x0001FCB4, 0x0001FEE4
+ .word 0x0001FEE4, 0x0002010C
+ .word 0x0002010C, 0x0002033C
+ .word 0x0002033C, 0x00020564
+ .word 0x00020564, 0x00020794
+ .word 0x00020794, 0x000209BC
+ .word 0x000209BC, 0x00020BEC
+ .word 0x00020BEC, 0x00020E14
+ .word 0x00020E14, 0x00021044
+ .word 0x00021044, 0x0002126C
+ .word 0x0002126C, 0x0002149C
+ .word 0x0002149C, 0x000216C4
+ .word 0x000216C4, 0x000218F4
+ .word 0x000218F4, 0x00021B1C
+ .word 0x00021B1C, 0x00021D4C
+ .word 0x00021D4C, 0x00021F74
+ .word 0x00021F74, 0x000221A4
+ .word 0x000221A4, 0x000223CC
+ .word 0x000223CC, 0x000225FC
+ .word 0x000225FC, 0x00022824
+ .word 0x00022824, 0x00022A54
+ .word 0x00022A54, 0x00022C7C
+ .word 0x00022C7C, 0x00022EAC
+ .word 0x00022EAC, 0x000230D4
+ .word 0x000230D4, 0x00023304
+ .word 0x00023304, 0x0002352C
+ .word 0x0002352C, 0x00023754
+ .word 0x00023754, 0x00023984
+ .word 0x00023984, 0x00023BAC
+ .word 0x00023BAC, 0x00023DDC
+ .word 0x00023DDC, 0x00024004
+ .word 0x00024004, 0x00024234
+ .word 0x00024234, 0x0002445C
+ .word 0x0002445C, 0x0002468C
+ .word 0x0002468C, 0x000248B4
+ .word 0x000248B4, 0x00024AE4
+ .word 0x00024AE4, 0x00024D0C
+ .word 0x00024D0C, 0x00024F3C
+ .word 0x00024F3C, 0x00025164
+ .word 0x00025164, 0x00025394
+ .word 0x00025394, 0x000255BC
+ .word 0x000255BC, 0x000257EC
+ .word 0x000257EC, 0x00025A14
+ .word 0x00025A14, 0x00025C44
+ .word 0x00025C44, 0x00025E6C
+ .word 0x00025E6C, 0x0002609C
+ .word 0x0002609C, 0x000262C4
+ .word 0x000262C4, 0x000264F4
+ .word 0x000264F4, 0x0002671C
+ .word 0x0002671C, 0x0002694C
+ .word 0x0002694C, 0x00026B74
+ .word 0x00026B74, 0x00026DA4
+ .word 0x00026DA4, 0x00026FCC
+ .word 0x00026FCC, 0x000271FC
+ .word 0x000271FC, 0x00027424
+ .word 0x00027424, 0x00027654
+ .word 0x00027654, 0x0002787C
+ .word 0x0002787C, 0x00027AAC
+ .word 0x00027AAC, 0x00027CD4
+ .word 0x00027CD4, 0x00027F04
+ .word 0x00027F04, 0x0002812C
+ .word 0x0002812C, 0x0002835C
+ .word 0x0002835C, 0x00028584
+ .word 0x00028584, 0x000287B4
+ .word 0x000287B4, 0x000289DC
+ .word 0x000289DC, 0x00028C0C
+ .word 0x00028C0C, 0x00028E34
+ .word 0x00028E34, 0x00029064
+ .word 0x00029064, 0x0002928C
+ .word 0x0002928C, 0x000294BC
+ .word 0x000294BC, 0x000296EC
+ .word 0x000296EC, 0x00029914
+ .word 0x00029914, 0x00029B44
+ .word 0x00029B44, 0x00029D6C
+ .word 0x00029D6C, 0x00029F9C
+ .word 0x00029F9C, 0x0002A1C4
+ .word 0x0002A1C4, 0x0002A3F4
+ .word 0x0002A3F4, 0x0002A61C
+ .word 0x0002A61C, 0x0002A84C
+ .word 0x0002A84C, 0x0002AA74
+ .word 0x0002AA74, 0x0002ACA4
+ .word 0x0002ACA4, 0x0002AECC
+ .word 0x0002AECC, 0x0002B0FC
+ .word 0x0002B0FC, 0x0002B324
+ .word 0x0002B324, 0x0002B554
+ .word 0x0002B554, 0x0002B77C
+ .word 0x0002B77C, 0x0002B9AC
+ .word 0x0002B9AC, 0x0002BBD4
+ .word 0x0002BBD4, 0x0002BE04
+ .word 0x0002BE04, 0x0002C02C
+ .word 0x0002C02C, 0x0002C25C
+ .word 0x0002C25C, 0x0002C484
+ .word 0x0002C484, 0x0002C6B4
+ .word 0x0002C6B4, 0x0002C8E4
+ .word 0x0002C8E4, 0x0002CB0C
+ .word 0x0002CB0C, 0x0002CD3C
+ .word 0x0002CD3C, 0x0002CF64
+ .word 0x0002CF64, 0x0002D194
+ .word 0x0002D194, 0x0002D3BC
+ .word 0x0002D3BC, 0x0002D5EC
+ .word 0x0002D5EC, 0x0002D814
+ .word 0x0002D814, 0x0002DA44
+ .word 0x0002DA44, 0x0002DC6C
+ .word 0x0002DC6C, 0x0002DE9C
+ .word 0x0002DE9C, 0x0002E0C4
+ .word 0x0002E0C4, 0x0002E2F4
+ .word 0x0002E2F4, 0x0002E51C
+ .word 0x0002E51C, 0x0002E744
+ .word 0x0002E744, 0x0002E96C
+ .word 0x0002E96C, 0x0002EB94
+ .word 0x0002EB94, 0x0002EDBC
+ .word 0x0002EDBC, 0x0002EFEC
+ .word 0x0002EFEC, 0x0002F214
+ .word 0x0002F214, 0x0002F444
+ .word 0x0002F444, 0x0002F66C
+ .word 0x0002F66C, 0x0002F89C
+ .word 0x0002F89C, 0x0002FAC4
+ .word 0x0002FAC4, 0x0002FCF4
+ .word 0x0002FCF4, 0x0002FF1C
+ .word 0x0002FF1C, 0x0003014C
+ .word 0x0003014C, 0x00030374
+ .word 0x00030374, 0x000305A4
+ .word 0x000305A4, 0x000307CC
+ .word 0x000307CC, 0x000309FC
+ .word 0x000309FC, 0x00030C24
+ .word 0x00030C24, 0x00030E54
+ .word 0x00030E54, 0x0003107C
+ .word 0x0003107C, 0x000312AC
+ .word 0x000312AC, 0x000314D4
+ .word 0x000314D4, 0x00031704
+ .word 0x00031704, 0x0003192C
+ .word 0x0003192C, 0x00031B5C
+ .word 0x00031B5C, 0x00031D84
+ .word 0x00031D84, 0x00031FB4
+ .word 0x00031FB4, 0x000321DC
+ .word 0x000321DC, 0x0003240C
+ .word 0x0003240C, 0x00032634
+ .word 0x00032634, 0x00032864
+ .word 0x00032864, 0x00032A8C
+ .word 0x00032A8C, 0x00032CBC
+ .word 0x00032CBC, 0x00032EEC
+ .word 0x00032EEC, 0x00033114
+ .word 0x00033114, 0x00033344
+ .word 0x00033344, 0x0003356C
+ .word 0x0003356C, 0x00033794
+ .word 0x00033794, 0x000339C4
+ .word 0x000339C4, 0x00033BEC
+ .word 0x00033BEC, 0x00033E1C
+ .word 0x00033E1C, 0x00034044
+ .word 0x00034044, 0x00034274
+ .word 0x00034274, 0x0003449C
+ .word 0x0003449C, 0x000346CC
+ .word 0x000346CC, 0x000348FC
+ .word 0x000348FC, 0x00034B2C
+ .word 0x00034B2C, 0x00034D5C
+ .word 0x00034D5C, 0x00034F8C
+ .word 0x00034F8C, 0x000351BC
+ .word 0x000351BC, 0x000353E4
+ .word 0x000353E4, 0x00035614
+ .word 0x00035614, 0x00035844
+ .word 0x00035844, 0x00035A6C
+ .word 0x00035A6C, 0x00035C9C
+ .word 0x00035C9C, 0x00035EC4
+ .word 0x00035EC4, 0x000360EC
+ .word 0x000360EC, 0x00036314
+ .word 0x00036314, 0x0003653C
+ .word 0x0003653C, 0x00036764
+ .word 0x00036764, 0x0003698C
+ .word 0x0003698C, 0x00036BB4
+ .word 0x00036BB4, 0x00036DDC
+ .word 0x00036DDC, 0x00037004
+ .word 0x00037004, 0x0003722C
+ .word 0x0003722C, 0x00037454
+ .word 0x00037454, 0x0003767C
+ .word 0x0003767C, 0x000378A4
+ .word 0x000378A4, 0x00037ACC
+ .word 0x00037ACC, 0x00037CF4
+ .word 0x00037CF4, 0x00037F1C
+ .word 0x00037F1C, 0x0003814C
+ .word 0x0003814C, 0x0003837C
+ .word 0x0003837C, 0x000385A4
+ .word 0x000385A4, 0x000387D4
+ .word 0x000387D4, 0x000389FC
+ .word 0x000389FC, 0x00038C2C
+ .word 0x00038C2C, 0x00038E54
+ .word 0x00038E54, 0x00039084
+ .word 0x00039084, 0x000392AC
+ .word 0x000392AC, 0x000394DC
+ .word 0x000394DC, 0x00039704
+ .word 0x00039704, 0x00039934
+ .word 0x00039934, 0x00039B5C
+ .word 0x00039B5C, 0x00039D8C
+ .word 0x00039D8C, 0x00039FB4
+ .word 0x00039FB4, 0x0003A1E4
+ .word 0x0003A1E4, 0x0003A40C
+ .word 0x0003A40C, 0x0003A63C
+ .word 0x0003A63C, 0x0003A864
+ .word 0x0003A864, 0x0003AA94
+ .word 0x0003AA94, 0x0003ACBC
+ .word 0x0003ACBC, 0x0003AEEC
+ .word 0x0003AEEC, 0x0003B114
+ .word 0x0003B114, 0x0003B344
+ .word 0x0003B344, 0x0003B56C
+ .word 0x0003B56C, 0x0003B79C
+ .word 0x0003B79C, 0x0003B9C4
+ .word 0x0003B9C4, 0x0003BBF4
+ .word 0x0003BBF4, 0x0003BE1C
+ .word 0x0003BE1C, 0x0003C04C
+ .word 0x0003C04C, 0x0003C274
+ .word 0x0003C274, 0x0003C4A4
+ .word 0x0003C4A4, 0x0003C6CC
+ .word 0x0003C6CC, 0x0003C8FC
+ .word 0x0003C8FC, 0x0003CB24
+ .word 0x0003CB24, 0x0003CD54
+ .word 0x0003CD54, 0x0003CF7C
+ .word 0x0003CF7C, 0x0003D1AC
+ .word 0x0003D1AC, 0x0003D3D4
+ .word 0x0003D3D4, 0x0003D604
+ .word 0x0003D604, 0x0003D82C
+ .word 0x0003D82C, 0x0003DA5C
+ .word 0x0003DA5C, 0x0003DC84
+ .word 0x0003DC84, 0x0003DEB4
+ .word 0x0003DEB4, 0x0003E0DC
+ .word 0x0003E0DC, 0x0003E30C
+ .word 0x0003E30C, 0x0003E534
+ .word 0x0003E534, 0x0003E764
+ .word 0x0003E764, 0x0003E98C
+ .word 0x0003E98C, 0x0003EBB4
+ .word 0x0003EBB4, 0x0003EDE4
+ .word 0x0003EDE4, 0x0003F00C
+ .word 0x0003F00C, 0x0003F23C
+ .word 0x0003F23C, 0x0003F464
+ .word 0x0003F464, 0x0003F694
+ .word 0x0003F694, 0x0003F8BC
+ .word 0x0003F8BC, 0x0003FAEC
+ .word 0x0003FAEC, 0x0003FD14
+ .word 0x0003FD14, 0x0003FF44
+ .word 0x0003FF44, 0x0004016C
+ .word 0x0004016C, 0x0004039C
+ .word 0x0004039C, 0x000405C4
+ .word 0x000405C4, 0x000407F4
+ .word 0x000407F4, 0x00040A1C
+ .word 0x00040A1C, 0x00040C4C
+ .word 0x00040C4C, 0x00040E74
+ .word 0x00040E74, 0x000410A4
+ .word 0x000410A4, 0x000412CC
+ .word 0x000412CC, 0x000414FC
+ .word 0x000414FC, 0x00041724
+ .word 0x00041724, 0x00041954
+ .word 0x00041954, 0x00041B7C
+ .word 0x00041B7C, 0x00041DAC
+ .word 0x00041DAC, 0x00041FD4
+ .word 0x00041FD4, 0x00042204
+ .word 0x00042204, 0x0004242C
+ .word 0x0004242C, 0x0004265C
+ .word 0x0004265C, 0x00042884
+ .word 0x00042884, 0x00042AB4
+ .word 0x00042AB4, 0x00042CDC
+ .word 0x00042CDC, 0x00042F0C
+ .word 0x00042F0C, 0x00043134
+ .word 0x00043134, 0x00043364
+ .word 0x00043364, 0x0004358C
+ .word 0x0004358C, 0x000437BC
+ .word 0x000437BC, 0x000439E4
+ .word 0x000439E4, 0x00043C14
+ .word 0x00043C14, 0x00043E3C
+ .word 0x00043E3C, 0x0004406C
+ .word 0x0004406C, 0x00044294
+ .word 0x00044294, 0x000444C4
+ .word 0x000444C4, 0x000446EC
+ .word 0x000446EC, 0x0004491C
+ .word 0x0004491C, 0x00044B44
+ .word 0x00044B44, 0x00044D74
+ .word 0x00044D74, 0x00044F9C
+ .word 0x00044F9C, 0x000451CC
+ .word 0x000451CC, 0x000453F4
+ .word 0x000453F4, 0x00045624
+ .word 0x00045624, 0x0004584C
+ .word 0x0004584C, 0x00045A7C
+ .word 0x00045A7C, 0x00045CA4
+ .word 0x00045CA4, 0x00045ED4
+ .word 0x00045ED4, 0x000460FC
+ .word 0x000460FC, 0x0004632C
+ .word 0x0004632C, 0x00046554
+ .word 0x00046554, 0x00046784
+ .word 0x00046784, 0x000469AC
+ .word 0x000469AC, 0x00046BDC
+ .word 0x00046BDC, 0x00046E04
+ .word 0x00046E04, 0x00047034
+ .word 0x00047034, 0x0004725C
+ .word 0x0004725C, 0x0004748C
+ .word 0x0004748C, 0x000476B4
+ .word 0x000476B4, 0x000478E4
+ .word 0x000478E4, 0x00047B0C
+ .word 0x00047B0C, 0x00047D3C
+ .word 0x00047D3C, 0x00047F64
+ .word 0x00047F64, 0x00048194
+ .word 0x00048194, 0x000483BC
+ .word 0x000483BC, 0x000485EC
+ .word 0x000485EC, 0x00048814
+ .word 0x00048814, 0x00048A44
+ .word 0x00048A44, 0x00048C6C
+ .word 0x00048C6C, 0x00048E9C
+ .word 0x00048E9C, 0x000490C4
+ .word 0x000490C4, 0x000492F4
+ .word 0x000492F4, 0x0004951C
+ .word 0x0004951C, 0x0004974C
+ .word 0x0004974C, 0x00049974
+ .word 0x00049974, 0x00049BA4
+ .word 0x00049BA4, 0x00049DCC
+ .word 0x00049DCC, 0x00049FFC
+ .word 0x00049FFC, 0x0004A224
+ .word 0x0004A224, 0x0004A454
+ .word 0x0004A454, 0x0004A67C
+ .word 0x0004A67C, 0x0004A8AC
+ .word 0x0004A8AC, 0x0004AAD4
+ .word 0x0004AAD4, 0x0004AD04
+ .word 0x0004AD04, 0x0004AF2C
+ .word 0x0004AF2C, 0x0004B15C
+ .word 0x0004B15C, 0x0004B384
+ .word 0x0004B384, 0x0004B5B4
+ .word 0x0004B5B4, 0x0004B7DC
+ .word 0x0004B7DC, 0x0004BA0C
+ .word 0x0004BA0C, 0x0004BC34
+ .word 0x0004BC34, 0x0004BE64
+ .word 0x0004BE64, 0x0004C08C
+ .word 0x0004C08C, 0x0004C2BC
+ .word 0x0004C2BC, 0x0004C4E4
+ .word 0x0004C4E4, 0x0004C714
+ .word 0x0004C714, 0x0004C93C
+ .word 0x0004C93C, 0x0004CB6C
+ .word 0x0004CB6C, 0x0004CD94
+ .word 0x0004CD94, 0x0004CFC4
+ .word 0x0004CFC4, 0x0004D1EC
+ .word 0x0004D1EC, 0x0004D41C
+ .word 0x0004D41C, 0x0004D644
+ .word 0x0004D644, 0x0004D874
+ .word 0x0004D874, 0x0004DA9C
+ .word 0x0004DA9C, 0x0004DCCC
+ .word 0x0004DCCC, 0x0004DEF4
+ .word 0x0004DEF4, 0x0004E124
+ .word 0x0004E124, 0x0004E34C
+ .word 0x0004E34C, 0x0004E57C
+ .word 0x0004E57C, 0x0004E7A4
+ .word 0x0004E7A4, 0x0004E9D4
+ .word 0x0004E9D4, 0x0004EBFC
+ .word 0x0004EBFC, 0x0004EE2C
+ .word 0x0004EE2C, 0x0004F054
+ .word 0x0004F054, 0x0004F284
+ .word 0x0004F284, 0x0004F4AC
+ .word 0x0004F4AC, 0x0004F6DC
+ .word 0x0004F6DC, 0x0004F904
+ .word 0x0004F904, 0x0004FB34
+ .word 0x0004FB34, 0x0004FD5C
+ .word 0x0004FD5C, 0x0004FF8C
+ .word 0x0004FF8C, 0x000501B4
+ .word 0x000501B4, 0x000503E4
+ .word 0x000503E4, 0x0005060C
+ .word 0x0005060C, 0x0005083C
+ .word 0x0005083C, 0x00050A64
+ .word 0x00050A64, 0x00050C94
+ .word 0x00050C94, 0x00050EBC
+ .word 0x00050EBC, 0x000510EC
+ .word 0x000510EC, 0x00051314
+ .word 0x00051314, 0x00051544
+ .word 0x00051544, 0x0005176C
+ .word 0x0005176C, 0x0005199C
+ .word 0x0005199C, 0x00051BC4
+ .word 0x00051BC4, 0x00051DF4
+ .word 0x00051DF4, 0x0005201C
+ .word 0x0005201C, 0x0005224C
+ .word 0x0005224C, 0x00052474
+ .word 0x00052474, 0x000526A4
+ .word 0x000526A4, 0x000528CC
+ .word 0x000528CC, 0x00052AF4
+ .word 0x00052AF4, 0x00052D24
+ .word 0x00052D24, 0x00052F4C
+ .word 0x00052F4C, 0x0005317C
+ .word 0x0005317C, 0x000533A4
+ .word 0x000533A4, 0x000535D4
+ .word 0x000535D4, 0x000537FC
+ .word 0x000537FC, 0x00053A2C
+ .word 0x00053A2C, 0x00053C54
+ .word 0x00053C54, 0x00053E84
+ .word 0x00053E84, 0x000540AC
+ .word 0x000540AC, 0x000542D4
+ .word 0x000542D4, 0x000544FC
+ .word 0x000544FC, 0x00054724
+ .word 0x00054724, 0x0005494C
+ .word 0x0005494C, 0x00054B74
+ .word 0x00054B74, 0x00054D9C
+ .word 0x00054D9C, 0x00054FC4
+ .word 0x00054FC4, 0x000551EC
+ .word 0x000551EC, 0x00055414
+ .word 0x00055414, 0x0005563C
+ .word 0x0005563C, 0x00055864
+ .word 0x00055864, 0x00055A8C
+ .word 0x00055A8C, 0x00055CB4
+ .word 0x00055CB4, 0x00055EDC
+ .word 0x00055EDC, 0x00056104
+ .word 0x00056104, 0x00056334
+ .word 0x00056334, 0x0005655C
+ .word 0x0005655C, 0x0005678C
+ .word 0x0005678C, 0x000569B4
+ .word 0x000569B4, 0x00056BE4
+ .word 0x00056BE4, 0x00056E0C
+ .word 0x00056E0C, 0x0005703C
+ .word 0x0005703C, 0x00057264
+ .word 0x00057264, 0x00057494
+ .word 0x00057494, 0x000576BC
+ .word 0x000576BC, 0x000578EC
+ .word 0x000578EC, 0x00057B14
+ .word 0x00057B14, 0x00057D44
+ .word 0x00057D44, 0x00057F6C
+ .word 0x00057F6C, 0x0005819C
+ .word 0x0005819C, 0x000583C4
+ .word 0x000583C4, 0x000585F4
+ .word 0x000585F4, 0x0005881C
+ .word 0x0005881C, 0x00058A4C
+ .word 0x00058A4C, 0x00058C74
+ .word 0x00058C74, 0x00058EA4
+ .word 0x00058EA4, 0x000590CC
+ .word 0x000590CC, 0x000592F4
+ .word 0x000592F4, 0x00059524
+ .word 0x00059524, 0x0005974C
+ .word 0x0005974C, 0x0005997C
+ .word 0x0005997C, 0x00059BA4
+ .word 0x00059BA4, 0x00059DD4
+ .word 0x00059DD4, 0x00059FFC
+ .word 0x00059FFC, 0x0005A22C
+ .word 0x0005A22C, 0x0005A454
+ .word 0x0005A454, 0x0005A684
+ .word 0x0005A684, 0x0005A8AC
+ .word 0x0005A8AC, 0x0005AADC
+ .word 0x0005AADC, 0x0005AD04
+ .word 0x0005AD04, 0x0005AF34
+ .word 0x0005AF34, 0x0005B15C
+ .word 0x0005B15C, 0x0005B38C
+ .word 0x0005B38C, 0x0005B5B4
+ .word 0x0005B5B4, 0x0005B7E4
+ .word 0x0005B7E4, 0x0005BA0C
+ .word 0x0005BA0C, 0x0005BC3C
+ .word 0x0005BC3C, 0x0005BE64
+ .word 0x0005BE64, 0x0005C094
+ .word 0x0005C094, 0x0005C2BC
+ .word 0x0005C2BC, 0x0005C4EC
+ .word 0x0005C4EC, 0x0005C714
+ .word 0x0005C714, 0x0005C944
+ .word 0x0005C944, 0x0005CB6C
+ .word 0x0005CB6C, 0x0005CD9C
+ .word 0x0005CD9C, 0x0005CFC4
+ .word 0x0005CFC4, 0x0005D1F4
+ .word 0x0005D1F4, 0x0005D41C
+ .word 0x0005D41C, 0x0005D64C
+ .word 0x0005D64C, 0x0005D874
+ .word 0x0005D874, 0x0005DAA4
+ .word 0x0005DAA4, 0x0005DCCC
+ .word 0x0005DCCC, 0x0005DEFC
+ .word 0x0005DEFC, 0x0005E124
+ .word 0x0005E124, 0x0005E354
+ .word 0x0005E354, 0x0005E57C
+ .word 0x0005E57C, 0x0005E7AC
+ .word 0x0005E7AC, 0x0005E9D4
+ .word 0x0005E9D4, 0x0005EC04
+ .word 0x0005EC04, 0x0005EE2C
+ .word 0x0005EE2C, 0x0005F05C
+ .word 0x0005F05C, 0x0005F284
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x0005F28C ; chunk size
+ .incbin "baserom.nds", 0x201EA2C, 0x5F284
+ .balign 512, 255
diff --git a/files/FILE_207DE00_nuts_data.narc.s b/files/FILE_207DE00_nuts_data.narc.s
new file mode 100644
index 00000000..c59699f0
--- /dev/null
+++ b/files/FILE_207DE00_nuts_data.narc.s
@@ -0,0 +1,92 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00000534 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x0000020C ; chunk size
+ .short 64 ; number of files
+ .balign 4
+ .word 0x00000000, 0x0000000C
+ .word 0x0000000C, 0x00000018
+ .word 0x00000018, 0x00000024
+ .word 0x00000024, 0x00000030
+ .word 0x00000030, 0x0000003C
+ .word 0x0000003C, 0x00000048
+ .word 0x00000048, 0x00000054
+ .word 0x00000054, 0x00000060
+ .word 0x00000060, 0x0000006C
+ .word 0x0000006C, 0x00000078
+ .word 0x00000078, 0x00000084
+ .word 0x00000084, 0x00000090
+ .word 0x00000090, 0x0000009C
+ .word 0x0000009C, 0x000000A8
+ .word 0x000000A8, 0x000000B4
+ .word 0x000000B4, 0x000000C0
+ .word 0x000000C0, 0x000000CC
+ .word 0x000000CC, 0x000000D8
+ .word 0x000000D8, 0x000000E4
+ .word 0x000000E4, 0x000000F0
+ .word 0x000000F0, 0x000000FC
+ .word 0x000000FC, 0x00000108
+ .word 0x00000108, 0x00000114
+ .word 0x00000114, 0x00000120
+ .word 0x00000120, 0x0000012C
+ .word 0x0000012C, 0x00000138
+ .word 0x00000138, 0x00000144
+ .word 0x00000144, 0x00000150
+ .word 0x00000150, 0x0000015C
+ .word 0x0000015C, 0x00000168
+ .word 0x00000168, 0x00000174
+ .word 0x00000174, 0x00000180
+ .word 0x00000180, 0x0000018C
+ .word 0x0000018C, 0x00000198
+ .word 0x00000198, 0x000001A4
+ .word 0x000001A4, 0x000001B0
+ .word 0x000001B0, 0x000001BC
+ .word 0x000001BC, 0x000001C8
+ .word 0x000001C8, 0x000001D4
+ .word 0x000001D4, 0x000001E0
+ .word 0x000001E0, 0x000001EC
+ .word 0x000001EC, 0x000001F8
+ .word 0x000001F8, 0x00000204
+ .word 0x00000204, 0x00000210
+ .word 0x00000210, 0x0000021C
+ .word 0x0000021C, 0x00000228
+ .word 0x00000228, 0x00000234
+ .word 0x00000234, 0x00000240
+ .word 0x00000240, 0x0000024C
+ .word 0x0000024C, 0x00000258
+ .word 0x00000258, 0x00000264
+ .word 0x00000264, 0x00000270
+ .word 0x00000270, 0x0000027C
+ .word 0x0000027C, 0x00000288
+ .word 0x00000288, 0x00000294
+ .word 0x00000294, 0x000002A0
+ .word 0x000002A0, 0x000002AC
+ .word 0x000002AC, 0x000002B8
+ .word 0x000002B8, 0x000002C4
+ .word 0x000002C4, 0x000002D0
+ .word 0x000002D0, 0x000002DC
+ .word 0x000002DC, 0x000002E8
+ .word 0x000002E8, 0x000002F4
+ .word 0x000002F4, 0x00000300
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00000308 ; chunk size
+ .incbin "baserom.nds", 0x207E034, 0x300
+ .balign 512, 255
diff --git a/files/FILE_207E400_poke_icon.narc.s b/files/FILE_207E400_poke_icon.narc.s
new file mode 100644
index 00000000..d1d4519c
--- /dev/null
+++ b/files/FILE_207E400_poke_icon.narc.s
@@ -0,0 +1,568 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x0008D0F0 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x000010EC ; chunk size
+ .short 540 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000228
+ .word 0x00000228, 0x000002C2
+ .word 0x000002C4, 0x00000352
+ .word 0x00000354, 0x000004D2
+ .word 0x000004D4, 0x0000059E
+ .word 0x000005A0, 0x0000071E
+ .word 0x00000720, 0x000007EA
+ .word 0x000007EC, 0x00000C1C
+ .word 0x00000C1C, 0x0000104C
+ .word 0x0000104C, 0x0000147C
+ .word 0x0000147C, 0x000018AC
+ .word 0x000018AC, 0x00001CDC
+ .word 0x00001CDC, 0x0000210C
+ .word 0x0000210C, 0x0000253C
+ .word 0x0000253C, 0x0000296C
+ .word 0x0000296C, 0x00002D9C
+ .word 0x00002D9C, 0x000031CC
+ .word 0x000031CC, 0x000035FC
+ .word 0x000035FC, 0x00003A2C
+ .word 0x00003A2C, 0x00003E5C
+ .word 0x00003E5C, 0x0000428C
+ .word 0x0000428C, 0x000046BC
+ .word 0x000046BC, 0x00004AEC
+ .word 0x00004AEC, 0x00004F1C
+ .word 0x00004F1C, 0x0000534C
+ .word 0x0000534C, 0x0000577C
+ .word 0x0000577C, 0x00005BAC
+ .word 0x00005BAC, 0x00005FDC
+ .word 0x00005FDC, 0x0000640C
+ .word 0x0000640C, 0x0000683C
+ .word 0x0000683C, 0x00006C6C
+ .word 0x00006C6C, 0x0000709C
+ .word 0x0000709C, 0x000074CC
+ .word 0x000074CC, 0x000078FC
+ .word 0x000078FC, 0x00007D2C
+ .word 0x00007D2C, 0x0000815C
+ .word 0x0000815C, 0x0000858C
+ .word 0x0000858C, 0x000089BC
+ .word 0x000089BC, 0x00008DEC
+ .word 0x00008DEC, 0x0000921C
+ .word 0x0000921C, 0x0000964C
+ .word 0x0000964C, 0x00009A7C
+ .word 0x00009A7C, 0x00009EAC
+ .word 0x00009EAC, 0x0000A2DC
+ .word 0x0000A2DC, 0x0000A70C
+ .word 0x0000A70C, 0x0000AB3C
+ .word 0x0000AB3C, 0x0000AF6C
+ .word 0x0000AF6C, 0x0000B39C
+ .word 0x0000B39C, 0x0000B7CC
+ .word 0x0000B7CC, 0x0000BBFC
+ .word 0x0000BBFC, 0x0000C02C
+ .word 0x0000C02C, 0x0000C45C
+ .word 0x0000C45C, 0x0000C88C
+ .word 0x0000C88C, 0x0000CCBC
+ .word 0x0000CCBC, 0x0000D0EC
+ .word 0x0000D0EC, 0x0000D51C
+ .word 0x0000D51C, 0x0000D94C
+ .word 0x0000D94C, 0x0000DD7C
+ .word 0x0000DD7C, 0x0000E1AC
+ .word 0x0000E1AC, 0x0000E5DC
+ .word 0x0000E5DC, 0x0000EA0C
+ .word 0x0000EA0C, 0x0000EE3C
+ .word 0x0000EE3C, 0x0000F26C
+ .word 0x0000F26C, 0x0000F69C
+ .word 0x0000F69C, 0x0000FACC
+ .word 0x0000FACC, 0x0000FEFC
+ .word 0x0000FEFC, 0x0001032C
+ .word 0x0001032C, 0x0001075C
+ .word 0x0001075C, 0x00010B8C
+ .word 0x00010B8C, 0x00010FBC
+ .word 0x00010FBC, 0x000113EC
+ .word 0x000113EC, 0x0001181C
+ .word 0x0001181C, 0x00011C4C
+ .word 0x00011C4C, 0x0001207C
+ .word 0x0001207C, 0x000124AC
+ .word 0x000124AC, 0x000128DC
+ .word 0x000128DC, 0x00012D0C
+ .word 0x00012D0C, 0x0001313C
+ .word 0x0001313C, 0x0001356C
+ .word 0x0001356C, 0x0001399C
+ .word 0x0001399C, 0x00013DCC
+ .word 0x00013DCC, 0x000141FC
+ .word 0x000141FC, 0x0001462C
+ .word 0x0001462C, 0x00014A5C
+ .word 0x00014A5C, 0x00014E8C
+ .word 0x00014E8C, 0x000152BC
+ .word 0x000152BC, 0x000156EC
+ .word 0x000156EC, 0x00015B1C
+ .word 0x00015B1C, 0x00015F4C
+ .word 0x00015F4C, 0x0001637C
+ .word 0x0001637C, 0x000167AC
+ .word 0x000167AC, 0x00016BDC
+ .word 0x00016BDC, 0x0001700C
+ .word 0x0001700C, 0x0001743C
+ .word 0x0001743C, 0x0001786C
+ .word 0x0001786C, 0x00017C9C
+ .word 0x00017C9C, 0x000180CC
+ .word 0x000180CC, 0x000184FC
+ .word 0x000184FC, 0x0001892C
+ .word 0x0001892C, 0x00018D5C
+ .word 0x00018D5C, 0x0001918C
+ .word 0x0001918C, 0x000195BC
+ .word 0x000195BC, 0x000199EC
+ .word 0x000199EC, 0x00019E1C
+ .word 0x00019E1C, 0x0001A24C
+ .word 0x0001A24C, 0x0001A67C
+ .word 0x0001A67C, 0x0001AAAC
+ .word 0x0001AAAC, 0x0001AEDC
+ .word 0x0001AEDC, 0x0001B30C
+ .word 0x0001B30C, 0x0001B73C
+ .word 0x0001B73C, 0x0001BB6C
+ .word 0x0001BB6C, 0x0001BF9C
+ .word 0x0001BF9C, 0x0001C3CC
+ .word 0x0001C3CC, 0x0001C7FC
+ .word 0x0001C7FC, 0x0001CC2C
+ .word 0x0001CC2C, 0x0001D05C
+ .word 0x0001D05C, 0x0001D48C
+ .word 0x0001D48C, 0x0001D8BC
+ .word 0x0001D8BC, 0x0001DCEC
+ .word 0x0001DCEC, 0x0001E11C
+ .word 0x0001E11C, 0x0001E54C
+ .word 0x0001E54C, 0x0001E97C
+ .word 0x0001E97C, 0x0001EDAC
+ .word 0x0001EDAC, 0x0001F1DC
+ .word 0x0001F1DC, 0x0001F60C
+ .word 0x0001F60C, 0x0001FA3C
+ .word 0x0001FA3C, 0x0001FE6C
+ .word 0x0001FE6C, 0x0002029C
+ .word 0x0002029C, 0x000206CC
+ .word 0x000206CC, 0x00020AFC
+ .word 0x00020AFC, 0x00020F2C
+ .word 0x00020F2C, 0x0002135C
+ .word 0x0002135C, 0x0002178C
+ .word 0x0002178C, 0x00021BBC
+ .word 0x00021BBC, 0x00021FEC
+ .word 0x00021FEC, 0x0002241C
+ .word 0x0002241C, 0x0002284C
+ .word 0x0002284C, 0x00022C7C
+ .word 0x00022C7C, 0x000230AC
+ .word 0x000230AC, 0x000234DC
+ .word 0x000234DC, 0x0002390C
+ .word 0x0002390C, 0x00023D3C
+ .word 0x00023D3C, 0x0002416C
+ .word 0x0002416C, 0x0002459C
+ .word 0x0002459C, 0x000249CC
+ .word 0x000249CC, 0x00024DFC
+ .word 0x00024DFC, 0x0002522C
+ .word 0x0002522C, 0x0002565C
+ .word 0x0002565C, 0x00025A8C
+ .word 0x00025A8C, 0x00025EBC
+ .word 0x00025EBC, 0x000262EC
+ .word 0x000262EC, 0x0002671C
+ .word 0x0002671C, 0x00026B4C
+ .word 0x00026B4C, 0x00026F7C
+ .word 0x00026F7C, 0x000273AC
+ .word 0x000273AC, 0x000277DC
+ .word 0x000277DC, 0x00027C0C
+ .word 0x00027C0C, 0x0002803C
+ .word 0x0002803C, 0x0002846C
+ .word 0x0002846C, 0x0002889C
+ .word 0x0002889C, 0x00028CCC
+ .word 0x00028CCC, 0x000290FC
+ .word 0x000290FC, 0x0002952C
+ .word 0x0002952C, 0x0002995C
+ .word 0x0002995C, 0x00029D8C
+ .word 0x00029D8C, 0x0002A1BC
+ .word 0x0002A1BC, 0x0002A5EC
+ .word 0x0002A5EC, 0x0002AA1C
+ .word 0x0002AA1C, 0x0002AE4C
+ .word 0x0002AE4C, 0x0002B27C
+ .word 0x0002B27C, 0x0002B6AC
+ .word 0x0002B6AC, 0x0002BADC
+ .word 0x0002BADC, 0x0002BF0C
+ .word 0x0002BF0C, 0x0002C33C
+ .word 0x0002C33C, 0x0002C76C
+ .word 0x0002C76C, 0x0002CB9C
+ .word 0x0002CB9C, 0x0002CFCC
+ .word 0x0002CFCC, 0x0002D3FC
+ .word 0x0002D3FC, 0x0002D82C
+ .word 0x0002D82C, 0x0002DC5C
+ .word 0x0002DC5C, 0x0002E08C
+ .word 0x0002E08C, 0x0002E4BC
+ .word 0x0002E4BC, 0x0002E8EC
+ .word 0x0002E8EC, 0x0002ED1C
+ .word 0x0002ED1C, 0x0002F14C
+ .word 0x0002F14C, 0x0002F57C
+ .word 0x0002F57C, 0x0002F9AC
+ .word 0x0002F9AC, 0x0002FDDC
+ .word 0x0002FDDC, 0x0003020C
+ .word 0x0003020C, 0x0003063C
+ .word 0x0003063C, 0x00030A6C
+ .word 0x00030A6C, 0x00030E9C
+ .word 0x00030E9C, 0x000312CC
+ .word 0x000312CC, 0x000316FC
+ .word 0x000316FC, 0x00031B2C
+ .word 0x00031B2C, 0x00031F5C
+ .word 0x00031F5C, 0x0003238C
+ .word 0x0003238C, 0x000327BC
+ .word 0x000327BC, 0x00032BEC
+ .word 0x00032BEC, 0x0003301C
+ .word 0x0003301C, 0x0003344C
+ .word 0x0003344C, 0x0003387C
+ .word 0x0003387C, 0x00033CAC
+ .word 0x00033CAC, 0x000340DC
+ .word 0x000340DC, 0x0003450C
+ .word 0x0003450C, 0x0003493C
+ .word 0x0003493C, 0x00034D6C
+ .word 0x00034D6C, 0x0003519C
+ .word 0x0003519C, 0x000355CC
+ .word 0x000355CC, 0x000359FC
+ .word 0x000359FC, 0x00035E2C
+ .word 0x00035E2C, 0x0003625C
+ .word 0x0003625C, 0x0003668C
+ .word 0x0003668C, 0x00036ABC
+ .word 0x00036ABC, 0x00036EEC
+ .word 0x00036EEC, 0x0003731C
+ .word 0x0003731C, 0x0003774C
+ .word 0x0003774C, 0x00037B7C
+ .word 0x00037B7C, 0x00037FAC
+ .word 0x00037FAC, 0x000383DC
+ .word 0x000383DC, 0x0003880C
+ .word 0x0003880C, 0x00038C3C
+ .word 0x00038C3C, 0x0003906C
+ .word 0x0003906C, 0x0003949C
+ .word 0x0003949C, 0x000398CC
+ .word 0x000398CC, 0x00039CFC
+ .word 0x00039CFC, 0x0003A12C
+ .word 0x0003A12C, 0x0003A55C
+ .word 0x0003A55C, 0x0003A98C
+ .word 0x0003A98C, 0x0003ADBC
+ .word 0x0003ADBC, 0x0003B1EC
+ .word 0x0003B1EC, 0x0003B61C
+ .word 0x0003B61C, 0x0003BA4C
+ .word 0x0003BA4C, 0x0003BE7C
+ .word 0x0003BE7C, 0x0003C2AC
+ .word 0x0003C2AC, 0x0003C6DC
+ .word 0x0003C6DC, 0x0003CB0C
+ .word 0x0003CB0C, 0x0003CF3C
+ .word 0x0003CF3C, 0x0003D36C
+ .word 0x0003D36C, 0x0003D79C
+ .word 0x0003D79C, 0x0003DBCC
+ .word 0x0003DBCC, 0x0003DFFC
+ .word 0x0003DFFC, 0x0003E42C
+ .word 0x0003E42C, 0x0003E85C
+ .word 0x0003E85C, 0x0003EC8C
+ .word 0x0003EC8C, 0x0003F0BC
+ .word 0x0003F0BC, 0x0003F4EC
+ .word 0x0003F4EC, 0x0003F91C
+ .word 0x0003F91C, 0x0003FD4C
+ .word 0x0003FD4C, 0x0004017C
+ .word 0x0004017C, 0x000405AC
+ .word 0x000405AC, 0x000409DC
+ .word 0x000409DC, 0x00040E0C
+ .word 0x00040E0C, 0x0004123C
+ .word 0x0004123C, 0x0004166C
+ .word 0x0004166C, 0x00041A9C
+ .word 0x00041A9C, 0x00041ECC
+ .word 0x00041ECC, 0x000422FC
+ .word 0x000422FC, 0x0004272C
+ .word 0x0004272C, 0x00042B5C
+ .word 0x00042B5C, 0x00042F8C
+ .word 0x00042F8C, 0x000433BC
+ .word 0x000433BC, 0x000437EC
+ .word 0x000437EC, 0x00043C1C
+ .word 0x00043C1C, 0x0004404C
+ .word 0x0004404C, 0x0004447C
+ .word 0x0004447C, 0x000448AC
+ .word 0x000448AC, 0x00044CDC
+ .word 0x00044CDC, 0x0004510C
+ .word 0x0004510C, 0x0004553C
+ .word 0x0004553C, 0x0004596C
+ .word 0x0004596C, 0x00045D9C
+ .word 0x00045D9C, 0x000461CC
+ .word 0x000461CC, 0x000465FC
+ .word 0x000465FC, 0x00046A2C
+ .word 0x00046A2C, 0x00046E5C
+ .word 0x00046E5C, 0x0004728C
+ .word 0x0004728C, 0x000476BC
+ .word 0x000476BC, 0x00047AEC
+ .word 0x00047AEC, 0x00047F1C
+ .word 0x00047F1C, 0x0004834C
+ .word 0x0004834C, 0x0004877C
+ .word 0x0004877C, 0x00048BAC
+ .word 0x00048BAC, 0x00048FDC
+ .word 0x00048FDC, 0x0004940C
+ .word 0x0004940C, 0x0004983C
+ .word 0x0004983C, 0x00049C6C
+ .word 0x00049C6C, 0x0004A09C
+ .word 0x0004A09C, 0x0004A4CC
+ .word 0x0004A4CC, 0x0004A8FC
+ .word 0x0004A8FC, 0x0004AD2C
+ .word 0x0004AD2C, 0x0004B15C
+ .word 0x0004B15C, 0x0004B58C
+ .word 0x0004B58C, 0x0004B9BC
+ .word 0x0004B9BC, 0x0004BDEC
+ .word 0x0004BDEC, 0x0004C21C
+ .word 0x0004C21C, 0x0004C64C
+ .word 0x0004C64C, 0x0004CA7C
+ .word 0x0004CA7C, 0x0004CEAC
+ .word 0x0004CEAC, 0x0004D2DC
+ .word 0x0004D2DC, 0x0004D70C
+ .word 0x0004D70C, 0x0004DB3C
+ .word 0x0004DB3C, 0x0004DF6C
+ .word 0x0004DF6C, 0x0004E39C
+ .word 0x0004E39C, 0x0004E7CC
+ .word 0x0004E7CC, 0x0004EBFC
+ .word 0x0004EBFC, 0x0004F02C
+ .word 0x0004F02C, 0x0004F45C
+ .word 0x0004F45C, 0x0004F88C
+ .word 0x0004F88C, 0x0004FCBC
+ .word 0x0004FCBC, 0x000500EC
+ .word 0x000500EC, 0x0005051C
+ .word 0x0005051C, 0x0005094C
+ .word 0x0005094C, 0x00050D7C
+ .word 0x00050D7C, 0x000511AC
+ .word 0x000511AC, 0x000515DC
+ .word 0x000515DC, 0x00051A0C
+ .word 0x00051A0C, 0x00051E3C
+ .word 0x00051E3C, 0x0005226C
+ .word 0x0005226C, 0x0005269C
+ .word 0x0005269C, 0x00052ACC
+ .word 0x00052ACC, 0x00052EFC
+ .word 0x00052EFC, 0x0005332C
+ .word 0x0005332C, 0x0005375C
+ .word 0x0005375C, 0x00053B8C
+ .word 0x00053B8C, 0x00053FBC
+ .word 0x00053FBC, 0x000543EC
+ .word 0x000543EC, 0x0005481C
+ .word 0x0005481C, 0x00054C4C
+ .word 0x00054C4C, 0x0005507C
+ .word 0x0005507C, 0x000554AC
+ .word 0x000554AC, 0x000558DC
+ .word 0x000558DC, 0x00055D0C
+ .word 0x00055D0C, 0x0005613C
+ .word 0x0005613C, 0x0005656C
+ .word 0x0005656C, 0x0005699C
+ .word 0x0005699C, 0x00056DCC
+ .word 0x00056DCC, 0x000571FC
+ .word 0x000571FC, 0x0005762C
+ .word 0x0005762C, 0x00057A5C
+ .word 0x00057A5C, 0x00057E8C
+ .word 0x00057E8C, 0x000582BC
+ .word 0x000582BC, 0x000586EC
+ .word 0x000586EC, 0x00058B1C
+ .word 0x00058B1C, 0x00058F4C
+ .word 0x00058F4C, 0x0005937C
+ .word 0x0005937C, 0x000597AC
+ .word 0x000597AC, 0x00059BDC
+ .word 0x00059BDC, 0x0005A00C
+ .word 0x0005A00C, 0x0005A43C
+ .word 0x0005A43C, 0x0005A86C
+ .word 0x0005A86C, 0x0005AC9C
+ .word 0x0005AC9C, 0x0005B0CC
+ .word 0x0005B0CC, 0x0005B4FC
+ .word 0x0005B4FC, 0x0005B92C
+ .word 0x0005B92C, 0x0005BD5C
+ .word 0x0005BD5C, 0x0005C18C
+ .word 0x0005C18C, 0x0005C5BC
+ .word 0x0005C5BC, 0x0005C9EC
+ .word 0x0005C9EC, 0x0005CE1C
+ .word 0x0005CE1C, 0x0005D24C
+ .word 0x0005D24C, 0x0005D67C
+ .word 0x0005D67C, 0x0005DAAC
+ .word 0x0005DAAC, 0x0005DEDC
+ .word 0x0005DEDC, 0x0005E30C
+ .word 0x0005E30C, 0x0005E73C
+ .word 0x0005E73C, 0x0005EB6C
+ .word 0x0005EB6C, 0x0005EF9C
+ .word 0x0005EF9C, 0x0005F3CC
+ .word 0x0005F3CC, 0x0005F7FC
+ .word 0x0005F7FC, 0x0005FC2C
+ .word 0x0005FC2C, 0x0006005C
+ .word 0x0006005C, 0x0006048C
+ .word 0x0006048C, 0x000608BC
+ .word 0x000608BC, 0x00060CEC
+ .word 0x00060CEC, 0x0006111C
+ .word 0x0006111C, 0x0006154C
+ .word 0x0006154C, 0x0006197C
+ .word 0x0006197C, 0x00061DAC
+ .word 0x00061DAC, 0x000621DC
+ .word 0x000621DC, 0x0006260C
+ .word 0x0006260C, 0x00062A3C
+ .word 0x00062A3C, 0x00062E6C
+ .word 0x00062E6C, 0x0006329C
+ .word 0x0006329C, 0x000636CC
+ .word 0x000636CC, 0x00063AFC
+ .word 0x00063AFC, 0x00063F2C
+ .word 0x00063F2C, 0x0006435C
+ .word 0x0006435C, 0x0006478C
+ .word 0x0006478C, 0x00064BBC
+ .word 0x00064BBC, 0x00064FEC
+ .word 0x00064FEC, 0x0006541C
+ .word 0x0006541C, 0x0006584C
+ .word 0x0006584C, 0x00065C7C
+ .word 0x00065C7C, 0x000660AC
+ .word 0x000660AC, 0x000664DC
+ .word 0x000664DC, 0x0006690C
+ .word 0x0006690C, 0x00066D3C
+ .word 0x00066D3C, 0x0006716C
+ .word 0x0006716C, 0x0006759C
+ .word 0x0006759C, 0x000679CC
+ .word 0x000679CC, 0x00067DFC
+ .word 0x00067DFC, 0x0006822C
+ .word 0x0006822C, 0x0006865C
+ .word 0x0006865C, 0x00068A8C
+ .word 0x00068A8C, 0x00068EBC
+ .word 0x00068EBC, 0x000692EC
+ .word 0x000692EC, 0x0006971C
+ .word 0x0006971C, 0x00069B4C
+ .word 0x00069B4C, 0x00069F7C
+ .word 0x00069F7C, 0x0006A3AC
+ .word 0x0006A3AC, 0x0006A7DC
+ .word 0x0006A7DC, 0x0006AC0C
+ .word 0x0006AC0C, 0x0006B03C
+ .word 0x0006B03C, 0x0006B46C
+ .word 0x0006B46C, 0x0006B89C
+ .word 0x0006B89C, 0x0006BCCC
+ .word 0x0006BCCC, 0x0006C0FC
+ .word 0x0006C0FC, 0x0006C52C
+ .word 0x0006C52C, 0x0006C95C
+ .word 0x0006C95C, 0x0006CD8C
+ .word 0x0006CD8C, 0x0006D1BC
+ .word 0x0006D1BC, 0x0006D5EC
+ .word 0x0006D5EC, 0x0006DA1C
+ .word 0x0006DA1C, 0x0006DE4C
+ .word 0x0006DE4C, 0x0006E27C
+ .word 0x0006E27C, 0x0006E6AC
+ .word 0x0006E6AC, 0x0006EADC
+ .word 0x0006EADC, 0x0006EF0C
+ .word 0x0006EF0C, 0x0006F33C
+ .word 0x0006F33C, 0x0006F76C
+ .word 0x0006F76C, 0x0006FB9C
+ .word 0x0006FB9C, 0x0006FFCC
+ .word 0x0006FFCC, 0x000703FC
+ .word 0x000703FC, 0x0007082C
+ .word 0x0007082C, 0x00070C5C
+ .word 0x00070C5C, 0x0007108C
+ .word 0x0007108C, 0x000714BC
+ .word 0x000714BC, 0x000718EC
+ .word 0x000718EC, 0x00071D1C
+ .word 0x00071D1C, 0x0007214C
+ .word 0x0007214C, 0x0007257C
+ .word 0x0007257C, 0x000729AC
+ .word 0x000729AC, 0x00072DDC
+ .word 0x00072DDC, 0x0007320C
+ .word 0x0007320C, 0x0007363C
+ .word 0x0007363C, 0x00073A6C
+ .word 0x00073A6C, 0x00073E9C
+ .word 0x00073E9C, 0x000742CC
+ .word 0x000742CC, 0x000746FC
+ .word 0x000746FC, 0x00074B2C
+ .word 0x00074B2C, 0x00074F5C
+ .word 0x00074F5C, 0x0007538C
+ .word 0x0007538C, 0x000757BC
+ .word 0x000757BC, 0x00075BEC
+ .word 0x00075BEC, 0x0007601C
+ .word 0x0007601C, 0x0007644C
+ .word 0x0007644C, 0x0007687C
+ .word 0x0007687C, 0x00076CAC
+ .word 0x00076CAC, 0x000770DC
+ .word 0x000770DC, 0x0007750C
+ .word 0x0007750C, 0x0007793C
+ .word 0x0007793C, 0x00077D6C
+ .word 0x00077D6C, 0x0007819C
+ .word 0x0007819C, 0x000785CC
+ .word 0x000785CC, 0x000789FC
+ .word 0x000789FC, 0x00078E2C
+ .word 0x00078E2C, 0x0007925C
+ .word 0x0007925C, 0x0007968C
+ .word 0x0007968C, 0x00079ABC
+ .word 0x00079ABC, 0x00079EEC
+ .word 0x00079EEC, 0x0007A31C
+ .word 0x0007A31C, 0x0007A74C
+ .word 0x0007A74C, 0x0007AB7C
+ .word 0x0007AB7C, 0x0007AFAC
+ .word 0x0007AFAC, 0x0007B3DC
+ .word 0x0007B3DC, 0x0007B80C
+ .word 0x0007B80C, 0x0007BC3C
+ .word 0x0007BC3C, 0x0007C06C
+ .word 0x0007C06C, 0x0007C49C
+ .word 0x0007C49C, 0x0007C8CC
+ .word 0x0007C8CC, 0x0007CCFC
+ .word 0x0007CCFC, 0x0007D12C
+ .word 0x0007D12C, 0x0007D55C
+ .word 0x0007D55C, 0x0007D98C
+ .word 0x0007D98C, 0x0007DDBC
+ .word 0x0007DDBC, 0x0007E1EC
+ .word 0x0007E1EC, 0x0007E61C
+ .word 0x0007E61C, 0x0007EA4C
+ .word 0x0007EA4C, 0x0007EE7C
+ .word 0x0007EE7C, 0x0007F2AC
+ .word 0x0007F2AC, 0x0007F6DC
+ .word 0x0007F6DC, 0x0007FB0C
+ .word 0x0007FB0C, 0x0007FF3C
+ .word 0x0007FF3C, 0x0008036C
+ .word 0x0008036C, 0x0008079C
+ .word 0x0008079C, 0x00080BCC
+ .word 0x00080BCC, 0x00080FFC
+ .word 0x00080FFC, 0x0008142C
+ .word 0x0008142C, 0x0008185C
+ .word 0x0008185C, 0x00081C8C
+ .word 0x00081C8C, 0x000820BC
+ .word 0x000820BC, 0x000824EC
+ .word 0x000824EC, 0x0008291C
+ .word 0x0008291C, 0x00082D4C
+ .word 0x00082D4C, 0x0008317C
+ .word 0x0008317C, 0x000835AC
+ .word 0x000835AC, 0x000839DC
+ .word 0x000839DC, 0x00083E0C
+ .word 0x00083E0C, 0x0008423C
+ .word 0x0008423C, 0x0008466C
+ .word 0x0008466C, 0x00084A9C
+ .word 0x00084A9C, 0x00084ECC
+ .word 0x00084ECC, 0x000852FC
+ .word 0x000852FC, 0x0008572C
+ .word 0x0008572C, 0x00085B5C
+ .word 0x00085B5C, 0x00085F8C
+ .word 0x00085F8C, 0x000863BC
+ .word 0x000863BC, 0x000867EC
+ .word 0x000867EC, 0x00086C1C
+ .word 0x00086C1C, 0x0008704C
+ .word 0x0008704C, 0x0008747C
+ .word 0x0008747C, 0x000878AC
+ .word 0x000878AC, 0x00087CDC
+ .word 0x00087CDC, 0x0008810C
+ .word 0x0008810C, 0x0008853C
+ .word 0x0008853C, 0x0008896C
+ .word 0x0008896C, 0x00088D9C
+ .word 0x00088D9C, 0x000891CC
+ .word 0x000891CC, 0x000895FC
+ .word 0x000895FC, 0x00089A2C
+ .word 0x00089A2C, 0x00089E5C
+ .word 0x00089E5C, 0x0008A28C
+ .word 0x0008A28C, 0x0008A6BC
+ .word 0x0008A6BC, 0x0008AAEC
+ .word 0x0008AAEC, 0x0008AF1C
+ .word 0x0008AF1C, 0x0008B34C
+ .word 0x0008B34C, 0x0008B77C
+ .word 0x0008B77C, 0x0008BBAC
+ .word 0x0008BBAC, 0x0008BFDC
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x0008BFE4 ; chunk size
+ .incbin "baserom.nds", 0x207F514, 0x8BFDC
+ .balign 512, 255
diff --git a/files/FILE_210B600_pokefoot.narc.s b/files/FILE_210B600_pokefoot.narc.s
new file mode 100644
index 00000000..a0265766
--- /dev/null
+++ b/files/FILE_210B600_pokefoot.narc.s
@@ -0,0 +1,525 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x0000E4EC ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000F94 ; chunk size
+ .short 497 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000228
+ .word 0x00000228, 0x00000281
+ .word 0x00000284, 0x000002D9
+ .word 0x000002DC, 0x0000034C
+ .word 0x0000034C, 0x000003BC
+ .word 0x000003BC, 0x00000437
+ .word 0x00000438, 0x000004B8
+ .word 0x000004B8, 0x00000530
+ .word 0x00000530, 0x000005AB
+ .word 0x000005AC, 0x00000629
+ .word 0x0000062C, 0x0000069B
+ .word 0x0000069C, 0x00000715
+ .word 0x00000718, 0x00000794
+ .word 0x00000794, 0x000007F8
+ .word 0x000007F8, 0x0000084E
+ .word 0x00000850, 0x000008BE
+ .word 0x000008C0, 0x00000924
+ .word 0x00000924, 0x0000097A
+ .word 0x0000097C, 0x000009E0
+ .word 0x000009E0, 0x00000A52
+ .word 0x00000A54, 0x00000ACA
+ .word 0x00000ACC, 0x00000B4D
+ .word 0x00000B50, 0x00000BB4
+ .word 0x00000BB4, 0x00000C2A
+ .word 0x00000C2C, 0x00000C9E
+ .word 0x00000CA0, 0x00000D20
+ .word 0x00000D20, 0x00000D76
+ .word 0x00000D78, 0x00000DCE
+ .word 0x00000DD0, 0x00000E34
+ .word 0x00000E34, 0x00000EA5
+ .word 0x00000EA8, 0x00000F17
+ .word 0x00000F18, 0x00000F8A
+ .word 0x00000F8C, 0x00000FFA
+ .word 0x00000FFC, 0x00001077
+ .word 0x00001078, 0x000010F9
+ .word 0x000010FC, 0x0000116E
+ .word 0x00001170, 0x000011EB
+ .word 0x000011EC, 0x0000126A
+ .word 0x0000126C, 0x000012D3
+ .word 0x000012D4, 0x00001354
+ .word 0x00001354, 0x000013CD
+ .word 0x000013D0, 0x00001449
+ .word 0x0000144C, 0x000014B2
+ .word 0x000014B4, 0x0000151F
+ .word 0x00001520, 0x00001576
+ .word 0x00001578, 0x000015E5
+ .word 0x000015E8, 0x00001648
+ .word 0x00001648, 0x000016AF
+ .word 0x000016B0, 0x00001716
+ .word 0x00001718, 0x0000177A
+ .word 0x0000177C, 0x000017DE
+ .word 0x000017E0, 0x0000184A
+ .word 0x0000184C, 0x000018A6
+ .word 0x000018A8, 0x000018FE
+ .word 0x00001900, 0x00001956
+ .word 0x00001958, 0x000019CA
+ .word 0x000019CC, 0x00001A47
+ .word 0x00001A48, 0x00001AC9
+ .word 0x00001ACC, 0x00001B50
+ .word 0x00001B50, 0x00001BC5
+ .word 0x00001BC8, 0x00001C3D
+ .word 0x00001C40, 0x00001CB4
+ .word 0x00001CB4, 0x00001D2F
+ .word 0x00001D30, 0x00001D9B
+ .word 0x00001D9C, 0x00001E08
+ .word 0x00001E08, 0x00001E7A
+ .word 0x00001E7C, 0x00001EEB
+ .word 0x00001EEC, 0x00001F68
+ .word 0x00001F68, 0x00001FE3
+ .word 0x00001FE4, 0x00002054
+ .word 0x00002054, 0x000020C0
+ .word 0x000020C0, 0x0000212F
+ .word 0x00002130, 0x000021A9
+ .word 0x000021AC, 0x00002202
+ .word 0x00002204, 0x0000225A
+ .word 0x0000225C, 0x000022B2
+ .word 0x000022B4, 0x0000230A
+ .word 0x0000230C, 0x00002362
+ .word 0x00002364, 0x000023D6
+ .word 0x000023D8, 0x00002459
+ .word 0x0000245C, 0x000024CE
+ .word 0x000024D0, 0x00002546
+ .word 0x00002548, 0x000025B5
+ .word 0x000025B8, 0x0000262F
+ .word 0x00002630, 0x00002693
+ .word 0x00002694, 0x00002700
+ .word 0x00002700, 0x00002786
+ .word 0x00002788, 0x00002805
+ .word 0x00002808, 0x0000288B
+ .word 0x0000288C, 0x000028E2
+ .word 0x000028E4, 0x0000293A
+ .word 0x0000293C, 0x00002992
+ .word 0x00002994, 0x000029EA
+ .word 0x000029EC, 0x00002A42
+ .word 0x00002A44, 0x00002A9A
+ .word 0x00002A9C, 0x00002AF2
+ .word 0x00002AF4, 0x00002B4A
+ .word 0x00002B4C, 0x00002BC4
+ .word 0x00002BC4, 0x00002C1A
+ .word 0x00002C1C, 0x00002C89
+ .word 0x00002C8C, 0x00002D08
+ .word 0x00002D08, 0x00002D72
+ .word 0x00002D74, 0x00002DE8
+ .word 0x00002DE8, 0x00002E3E
+ .word 0x00002E40, 0x00002E96
+ .word 0x00002E98, 0x00002EEE
+ .word 0x00002EF0, 0x00002F64
+ .word 0x00002F64, 0x00002FD2
+ .word 0x00002FD4, 0x00003044
+ .word 0x00003044, 0x000030CD
+ .word 0x000030D0, 0x00003137
+ .word 0x00003138, 0x000031BD
+ .word 0x000031C0, 0x00003216
+ .word 0x00003218, 0x0000326E
+ .word 0x00003270, 0x000032E0
+ .word 0x000032E0, 0x0000335A
+ .word 0x0000335C, 0x000033C3
+ .word 0x000033C4, 0x00003438
+ .word 0x00003438, 0x000034B0
+ .word 0x000034B0, 0x00003506
+ .word 0x00003508, 0x0000355E
+ .word 0x00003560, 0x000035B6
+ .word 0x000035B8, 0x0000360E
+ .word 0x00003610, 0x00003674
+ .word 0x00003674, 0x000036D8
+ .word 0x000036D8, 0x00003743
+ .word 0x00003744, 0x000037C4
+ .word 0x000037C4, 0x0000381A
+ .word 0x0000381C, 0x0000388D
+ .word 0x00003890, 0x00003909
+ .word 0x0000390C, 0x00003976
+ .word 0x00003978, 0x000039E7
+ .word 0x000039E8, 0x00003A3E
+ .word 0x00003A40, 0x00003A96
+ .word 0x00003A98, 0x00003AEE
+ .word 0x00003AF0, 0x00003B46
+ .word 0x00003B48, 0x00003BC5
+ .word 0x00003BC8, 0x00003C41
+ .word 0x00003C44, 0x00003CB6
+ .word 0x00003CB8, 0x00003D35
+ .word 0x00003D38, 0x00003DA2
+ .word 0x00003DA4, 0x00003E02
+ .word 0x00003E04, 0x00003E6A
+ .word 0x00003E6C, 0x00003EC6
+ .word 0x00003EC8, 0x00003F3D
+ .word 0x00003F40, 0x00003FAB
+ .word 0x00003FAC, 0x0000402D
+ .word 0x00004030, 0x000040B2
+ .word 0x000040B4, 0x0000413E
+ .word 0x00004140, 0x000041BB
+ .word 0x000041BC, 0x00004212
+ .word 0x00004214, 0x0000426A
+ .word 0x0000426C, 0x000042E8
+ .word 0x000042E8, 0x00004362
+ .word 0x00004364, 0x000043C9
+ .word 0x000043CC, 0x0000442B
+ .word 0x0000442C, 0x00004499
+ .word 0x0000449C, 0x00004514
+ .word 0x00004514, 0x0000457C
+ .word 0x0000457C, 0x000045E6
+ .word 0x000045E8, 0x00004654
+ .word 0x00004654, 0x000046BD
+ .word 0x000046C0, 0x00004729
+ .word 0x0000472C, 0x000047AA
+ .word 0x000047AC, 0x00004812
+ .word 0x00004814, 0x0000487A
+ .word 0x0000487C, 0x000048FA
+ .word 0x000048FC, 0x00004981
+ .word 0x00004984, 0x000049F5
+ .word 0x000049F8, 0x00004A6F
+ .word 0x00004A70, 0x00004ACA
+ .word 0x00004ACC, 0x00004B35
+ .word 0x00004B38, 0x00004B8E
+ .word 0x00004B90, 0x00004BE6
+ .word 0x00004BE8, 0x00004C3E
+ .word 0x00004C40, 0x00004CA2
+ .word 0x00004CA4, 0x00004D03
+ .word 0x00004D04, 0x00004D6C
+ .word 0x00004D6C, 0x00004DD7
+ .word 0x00004DD8, 0x00004E48
+ .word 0x00004E48, 0x00004EA8
+ .word 0x00004EA8, 0x00004F14
+ .word 0x00004F14, 0x00004F75
+ .word 0x00004F78, 0x00004FDC
+ .word 0x00004FDC, 0x0000504C
+ .word 0x0000504C, 0x000050A2
+ .word 0x000050A4, 0x00005107
+ .word 0x00005108, 0x0000516E
+ .word 0x00005170, 0x000051D6
+ .word 0x000051D8, 0x00005250
+ .word 0x00005250, 0x000052B4
+ .word 0x000052B4, 0x0000531C
+ .word 0x0000531C, 0x00005384
+ .word 0x00005384, 0x000053F2
+ .word 0x000053F4, 0x0000544A
+ .word 0x0000544C, 0x000054B9
+ .word 0x000054BC, 0x00005520
+ .word 0x00005520, 0x00005582
+ .word 0x00005584, 0x000055F3
+ .word 0x000055F4, 0x00005655
+ .word 0x00005658, 0x000056C3
+ .word 0x000056C4, 0x00005733
+ .word 0x00005734, 0x0000579C
+ .word 0x0000579C, 0x000057F2
+ .word 0x000057F4, 0x0000584A
+ .word 0x0000584C, 0x000058B1
+ .word 0x000058B4, 0x00005917
+ .word 0x00005918, 0x0000596E
+ .word 0x00005970, 0x000059C6
+ .word 0x000059C8, 0x00005A1E
+ .word 0x00005A20, 0x00005A8C
+ .word 0x00005A8C, 0x00005AE2
+ .word 0x00005AE4, 0x00005B54
+ .word 0x00005B54, 0x00005BCE
+ .word 0x00005BD0, 0x00005C26
+ .word 0x00005C28, 0x00005C9C
+ .word 0x00005C9C, 0x00005D06
+ .word 0x00005D08, 0x00005D7B
+ .word 0x00005D7C, 0x00005DE8
+ .word 0x00005DE8, 0x00005E57
+ .word 0x00005E58, 0x00005ED7
+ .word 0x00005ED8, 0x00005F2E
+ .word 0x00005F30, 0x00005F86
+ .word 0x00005F88, 0x00005FEB
+ .word 0x00005FEC, 0x00006065
+ .word 0x00006068, 0x000060CB
+ .word 0x000060CC, 0x00006122
+ .word 0x00006124, 0x0000619C
+ .word 0x0000619C, 0x0000620C
+ .word 0x0000620C, 0x00006262
+ .word 0x00006264, 0x000062D7
+ .word 0x000062D8, 0x00006347
+ .word 0x00006348, 0x000063CD
+ .word 0x000063D0, 0x00006426
+ .word 0x00006428, 0x00006494
+ .word 0x00006494, 0x00006507
+ .word 0x00006508, 0x00006571
+ .word 0x00006574, 0x000065D6
+ .word 0x000065D8, 0x00006652
+ .word 0x00006654, 0x000066B6
+ .word 0x000066B8, 0x0000673B
+ .word 0x0000673C, 0x0000679F
+ .word 0x000067A0, 0x0000680C
+ .word 0x0000680C, 0x0000687C
+ .word 0x0000687C, 0x000068E2
+ .word 0x000068E4, 0x00006955
+ .word 0x00006958, 0x000069CE
+ .word 0x000069D0, 0x00006A48
+ .word 0x00006A48, 0x00006AB0
+ .word 0x00006AB0, 0x00006B0E
+ .word 0x00006B10, 0x00006B66
+ .word 0x00006B68, 0x00006BE3
+ .word 0x00006BE4, 0x00006C5D
+ .word 0x00006C60, 0x00006CE2
+ .word 0x00006CE4, 0x00006D4C
+ .word 0x00006D4C, 0x00006DC9
+ .word 0x00006DCC, 0x00006E40
+ .word 0x00006E40, 0x00006EC8
+ .word 0x00006EC8, 0x00006F49
+ .word 0x00006F4C, 0x00006FCC
+ .word 0x00006FCC, 0x00007063
+ .word 0x00007064, 0x000070D7
+ .word 0x000070D8, 0x0000714B
+ .word 0x0000714C, 0x000071CC
+ .word 0x000071CC, 0x00007244
+ .word 0x00007244, 0x000072D4
+ .word 0x000072D4, 0x0000734F
+ .word 0x00007350, 0x000073B7
+ .word 0x000073B8, 0x00007418
+ .word 0x00007418, 0x0000746E
+ .word 0x00007470, 0x000074D9
+ .word 0x000074DC, 0x00007532
+ .word 0x00007534, 0x00007597
+ .word 0x00007598, 0x00007605
+ .word 0x00007608, 0x00007698
+ .word 0x00007698, 0x00007703
+ .word 0x00007704, 0x0000777B
+ .word 0x0000777C, 0x000077FA
+ .word 0x000077FC, 0x00007858
+ .word 0x00007858, 0x000078D3
+ .word 0x000078D4, 0x00007954
+ .word 0x00007954, 0x000079C8
+ .word 0x000079C8, 0x00007A47
+ .word 0x00007A48, 0x00007AA1
+ .word 0x00007AA4, 0x00007B08
+ .word 0x00007B08, 0x00007B6D
+ .word 0x00007B70, 0x00007BD8
+ .word 0x00007BD8, 0x00007C2E
+ .word 0x00007C30, 0x00007C9C
+ .word 0x00007C9C, 0x00007D0B
+ .word 0x00007D0C, 0x00007D80
+ .word 0x00007D80, 0x00007E06
+ .word 0x00007E08, 0x00007E99
+ .word 0x00007E9C, 0x00007F0A
+ .word 0x00007F0C, 0x00007F79
+ .word 0x00007F7C, 0x00007FE3
+ .word 0x00007FE4, 0x0000806C
+ .word 0x0000806C, 0x000080E7
+ .word 0x000080E8, 0x00008175
+ .word 0x00008178, 0x000081F3
+ .word 0x000081F4, 0x00008277
+ .word 0x00008278, 0x000082E3
+ .word 0x000082E4, 0x00008359
+ .word 0x0000835C, 0x000083D4
+ .word 0x000083D4, 0x00008464
+ .word 0x00008464, 0x000084C6
+ .word 0x000084C8, 0x00008539
+ .word 0x0000853C, 0x000085A9
+ .word 0x000085AC, 0x0000862A
+ .word 0x0000862C, 0x000086AF
+ .word 0x000086B0, 0x0000871C
+ .word 0x0000871C, 0x0000877F
+ .word 0x00008780, 0x000087F4
+ .word 0x000087F4, 0x00008869
+ .word 0x0000886C, 0x000088D9
+ .word 0x000088DC, 0x00008949
+ .word 0x0000894C, 0x000089B1
+ .word 0x000089B4, 0x00008A1A
+ .word 0x00008A1C, 0x00008A7C
+ .word 0x00008A7C, 0x00008AD2
+ .word 0x00008AD4, 0x00008B2A
+ .word 0x00008B2C, 0x00008B82
+ .word 0x00008B84, 0x00008BDA
+ .word 0x00008BDC, 0x00008C32
+ .word 0x00008C34, 0x00008C8A
+ .word 0x00008C8C, 0x00008CFD
+ .word 0x00008D00, 0x00008D93
+ .word 0x00008D94, 0x00008E1C
+ .word 0x00008E1C, 0x00008E72
+ .word 0x00008E74, 0x00008EEA
+ .word 0x00008EEC, 0x00008F53
+ .word 0x00008F54, 0x00008FC3
+ .word 0x00008FC4, 0x0000902F
+ .word 0x00009030, 0x000090A3
+ .word 0x000090A4, 0x00009106
+ .word 0x00009108, 0x00009177
+ .word 0x00009178, 0x000091D5
+ .word 0x000091D8, 0x00009254
+ .word 0x00009254, 0x000092D2
+ .word 0x000092D4, 0x0000932A
+ .word 0x0000932C, 0x00009382
+ .word 0x00009384, 0x000093DA
+ .word 0x000093DC, 0x00009432
+ .word 0x00009434, 0x0000948A
+ .word 0x0000948C, 0x000094FC
+ .word 0x000094FC, 0x00009581
+ .word 0x00009584, 0x000095DD
+ .word 0x000095E0, 0x00009640
+ .word 0x00009640, 0x000096BD
+ .word 0x000096C0, 0x00009742
+ .word 0x00009744, 0x0000979A
+ .word 0x0000979C, 0x00009817
+ .word 0x00009818, 0x0000986E
+ .word 0x00009870, 0x000098C6
+ .word 0x000098C8, 0x0000991E
+ .word 0x00009920, 0x0000998F
+ .word 0x00009990, 0x000099E6
+ .word 0x000099E8, 0x00009A50
+ .word 0x00009A50, 0x00009AA6
+ .word 0x00009AA8, 0x00009B3D
+ .word 0x00009B40, 0x00009BC1
+ .word 0x00009BC4, 0x00009C1A
+ .word 0x00009C1C, 0x00009CA2
+ .word 0x00009CA4, 0x00009D08
+ .word 0x00009D08, 0x00009D7F
+ .word 0x00009D80, 0x00009DD6
+ .word 0x00009DD8, 0x00009E2E
+ .word 0x00009E30, 0x00009E86
+ .word 0x00009E88, 0x00009EDE
+ .word 0x00009EE0, 0x00009F36
+ .word 0x00009F38, 0x00009F8E
+ .word 0x00009F90, 0x00009FE6
+ .word 0x00009FE8, 0x0000A03E
+ .word 0x0000A040, 0x0000A096
+ .word 0x0000A098, 0x0000A107
+ .word 0x0000A108, 0x0000A175
+ .word 0x0000A178, 0x0000A1F9
+ .word 0x0000A1FC, 0x0000A25B
+ .word 0x0000A25C, 0x0000A2C4
+ .word 0x0000A2C4, 0x0000A337
+ .word 0x0000A338, 0x0000A3C0
+ .word 0x0000A3C0, 0x0000A419
+ .word 0x0000A41C, 0x0000A4A0
+ .word 0x0000A4A0, 0x0000A51A
+ .word 0x0000A51C, 0x0000A592
+ .word 0x0000A594, 0x0000A60D
+ .word 0x0000A610, 0x0000A69F
+ .word 0x0000A6A0, 0x0000A6F6
+ .word 0x0000A6F8, 0x0000A760
+ .word 0x0000A760, 0x0000A7C0
+ .word 0x0000A7C0, 0x0000A827
+ .word 0x0000A828, 0x0000A8A0
+ .word 0x0000A8A0, 0x0000A91D
+ .word 0x0000A920, 0x0000A991
+ .word 0x0000A994, 0x0000AA05
+ .word 0x0000AA08, 0x0000AA92
+ .word 0x0000AA94, 0x0000AAFD
+ .word 0x0000AB00, 0x0000AB7B
+ .word 0x0000AB7C, 0x0000ABFF
+ .word 0x0000AC00, 0x0000AC6D
+ .word 0x0000AC70, 0x0000ACDE
+ .word 0x0000ACE0, 0x0000AD50
+ .word 0x0000AD50, 0x0000ADBB
+ .word 0x0000ADBC, 0x0000AE38
+ .word 0x0000AE38, 0x0000AE9D
+ .word 0x0000AEA0, 0x0000AEFA
+ .word 0x0000AEFC, 0x0000AF64
+ .word 0x0000AF64, 0x0000AFD3
+ .word 0x0000AFD4, 0x0000B043
+ .word 0x0000B044, 0x0000B0A8
+ .word 0x0000B0A8, 0x0000B10A
+ .word 0x0000B10C, 0x0000B179
+ .word 0x0000B17C, 0x0000B1F5
+ .word 0x0000B1F8, 0x0000B25F
+ .word 0x0000B260, 0x0000B2D6
+ .word 0x0000B2D8, 0x0000B32E
+ .word 0x0000B330, 0x0000B386
+ .word 0x0000B388, 0x0000B3E2
+ .word 0x0000B3E4, 0x0000B43A
+ .word 0x0000B43C, 0x0000B492
+ .word 0x0000B494, 0x0000B4FB
+ .word 0x0000B4FC, 0x0000B56E
+ .word 0x0000B570, 0x0000B5DA
+ .word 0x0000B5DC, 0x0000B640
+ .word 0x0000B640, 0x0000B6A4
+ .word 0x0000B6A4, 0x0000B704
+ .word 0x0000B704, 0x0000B76A
+ .word 0x0000B76C, 0x0000B7DE
+ .word 0x0000B7E0, 0x0000B836
+ .word 0x0000B838, 0x0000B88E
+ .word 0x0000B890, 0x0000B905
+ .word 0x0000B908, 0x0000B978
+ .word 0x0000B978, 0x0000B9CE
+ .word 0x0000B9D0, 0x0000BA51
+ .word 0x0000BA54, 0x0000BAC2
+ .word 0x0000BAC4, 0x0000BB39
+ .word 0x0000BB3C, 0x0000BBA0
+ .word 0x0000BBA0, 0x0000BC08
+ .word 0x0000BC08, 0x0000BC78
+ .word 0x0000BC78, 0x0000BCCE
+ .word 0x0000BCD0, 0x0000BD26
+ .word 0x0000BD28, 0x0000BD95
+ .word 0x0000BD98, 0x0000BDFA
+ .word 0x0000BDFC, 0x0000BE6A
+ .word 0x0000BE6C, 0x0000BEEF
+ .word 0x0000BEF0, 0x0000BF46
+ .word 0x0000BF48, 0x0000BFB6
+ .word 0x0000BFB8, 0x0000C031
+ .word 0x0000C034, 0x0000C0AC
+ .word 0x0000C0AC, 0x0000C126
+ .word 0x0000C128, 0x0000C197
+ .word 0x0000C198, 0x0000C20D
+ .word 0x0000C210, 0x0000C27E
+ .word 0x0000C280, 0x0000C302
+ .word 0x0000C304, 0x0000C35E
+ .word 0x0000C360, 0x0000C3BA
+ .word 0x0000C3BC, 0x0000C42F
+ .word 0x0000C430, 0x0000C4A7
+ .word 0x0000C4A8, 0x0000C4FE
+ .word 0x0000C500, 0x0000C556
+ .word 0x0000C558, 0x0000C5AE
+ .word 0x0000C5B0, 0x0000C606
+ .word 0x0000C608, 0x0000C672
+ .word 0x0000C674, 0x0000C6F6
+ .word 0x0000C6F8, 0x0000C771
+ .word 0x0000C774, 0x0000C7CA
+ .word 0x0000C7CC, 0x0000C84A
+ .word 0x0000C84C, 0x0000C8BD
+ .word 0x0000C8C0, 0x0000C93D
+ .word 0x0000C940, 0x0000C9B9
+ .word 0x0000C9BC, 0x0000CA33
+ .word 0x0000CA34, 0x0000CAA2
+ .word 0x0000CAA4, 0x0000CB0C
+ .word 0x0000CB0C, 0x0000CB77
+ .word 0x0000CB78, 0x0000CBE3
+ .word 0x0000CBE4, 0x0000CC52
+ .word 0x0000CC54, 0x0000CCCD
+ .word 0x0000CCD0, 0x0000CD34
+ .word 0x0000CD34, 0x0000CDB4
+ .word 0x0000CDB4, 0x0000CE2D
+ .word 0x0000CE30, 0x0000CE86
+ .word 0x0000CE88, 0x0000CEDE
+ .word 0x0000CEE0, 0x0000CF36
+ .word 0x0000CF38, 0x0000CF9E
+ .word 0x0000CFA0, 0x0000D006
+ .word 0x0000D008, 0x0000D06E
+ .word 0x0000D070, 0x0000D0F0
+ .word 0x0000D0F0, 0x0000D16B
+ .word 0x0000D16C, 0x0000D1ED
+ .word 0x0000D1F0, 0x0000D278
+ .word 0x0000D278, 0x0000D2FB
+ .word 0x0000D2FC, 0x0000D352
+ .word 0x0000D354, 0x0000D3AA
+ .word 0x0000D3AC, 0x0000D402
+ .word 0x0000D404, 0x0000D468
+ .word 0x0000D468, 0x0000D4CD
+ .word 0x0000D4D0, 0x0000D530
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x0000D538 ; chunk size
+ .incbin "baserom.nds", 0x210C5BC, 0xD530
+ .balign 512, 255
diff --git a/files/FILE_2119C00_mmodel.narc.s b/files/FILE_2119C00_mmodel.narc.s
new file mode 100644
index 00000000..be61a3d6
--- /dev/null
+++ b/files/FILE_2119C00_mmodel.narc.s
@@ -0,0 +1,442 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x0012845C ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000CFC ; chunk size
+ .short 414 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00001A68
+ .word 0x00001A68, 0x000034D0
+ .word 0x000034D0, 0x00004F38
+ .word 0x00004F38, 0x000069A0
+ .word 0x000069A0, 0x00008408
+ .word 0x00008408, 0x00009E70
+ .word 0x00009E70, 0x0000B8D8
+ .word 0x0000B8D8, 0x0000D340
+ .word 0x0000D340, 0x0000EDA8
+ .word 0x0000EDA8, 0x00010810
+ .word 0x00010810, 0x00012278
+ .word 0x00012278, 0x00013CE0
+ .word 0x00013CE0, 0x00015748
+ .word 0x00015748, 0x000171B0
+ .word 0x000171B0, 0x00018C18
+ .word 0x00018C18, 0x0001A680
+ .word 0x0001A680, 0x0001C0E8
+ .word 0x0001C0E8, 0x0001DB50
+ .word 0x0001DB50, 0x0001F5B8
+ .word 0x0001F5B8, 0x00021020
+ .word 0x00021020, 0x00022A88
+ .word 0x00022A88, 0x000244F0
+ .word 0x000244F0, 0x00025F58
+ .word 0x00025F58, 0x000279C0
+ .word 0x000279C0, 0x00029644
+ .word 0x00029644, 0x0002B0AC
+ .word 0x0002B0AC, 0x0002CB14
+ .word 0x0002CB14, 0x0002E57C
+ .word 0x0002E57C, 0x0002FFE4
+ .word 0x0002FFE4, 0x00031A4C
+ .word 0x00031A4C, 0x000334B4
+ .word 0x000334B4, 0x00034F1C
+ .word 0x00034F1C, 0x00036984
+ .word 0x00036984, 0x000383EC
+ .word 0x000383EC, 0x00039E54
+ .word 0x00039E54, 0x0003B8BC
+ .word 0x0003B8BC, 0x0003D324
+ .word 0x0003D324, 0x0003ED8C
+ .word 0x0003ED8C, 0x000407F4
+ .word 0x000407F4, 0x0004225C
+ .word 0x0004225C, 0x00043CC4
+ .word 0x00043CC4, 0x0004572C
+ .word 0x0004572C, 0x00047194
+ .word 0x00047194, 0x00048BFC
+ .word 0x00048BFC, 0x0004A664
+ .word 0x0004A664, 0x0004C0CC
+ .word 0x0004C0CC, 0x0004DB34
+ .word 0x0004DB34, 0x0004F59C
+ .word 0x0004F59C, 0x00051004
+ .word 0x00051004, 0x00052A6C
+ .word 0x00052A6C, 0x000544D4
+ .word 0x000544D4, 0x00055F3C
+ .word 0x00055F3C, 0x000579A4
+ .word 0x000579A4, 0x0005940C
+ .word 0x0005940C, 0x0005AE74
+ .word 0x0005AE74, 0x0005B4DC
+ .word 0x0005B4DC, 0x0005BB44
+ .word 0x0005BB44, 0x0005D5AC
+ .word 0x0005D5AC, 0x0005F014
+ .word 0x0005F014, 0x0005F67C
+ .word 0x0005F67C, 0x000610E4
+ .word 0x000610E4, 0x00062B4C
+ .word 0x00062B4C, 0x000645B4
+ .word 0x000645B4, 0x0006601C
+ .word 0x0006601C, 0x00066684
+ .word 0x00066684, 0x00066CEC
+ .word 0x00066CEC, 0x00068754
+ .word 0x00068754, 0x0006A1BC
+ .word 0x0006A1BC, 0x0006BC24
+ .word 0x0006BC24, 0x0006D68C
+ .word 0x0006D68C, 0x0006F0F4
+ .word 0x0006F0F4, 0x00070B5C
+ .word 0x00070B5C, 0x000725C4
+ .word 0x000725C4, 0x00072C2C
+ .word 0x00072C2C, 0x00073294
+ .word 0x00073294, 0x000738FC
+ .word 0x000738FC, 0x00075364
+ .word 0x00075364, 0x00076DCC
+ .word 0x00076DCC, 0x00077434
+ .word 0x00077434, 0x0007869C
+ .word 0x0007869C, 0x0007A104
+ .word 0x0007A104, 0x0007BB6C
+ .word 0x0007BB6C, 0x0007BCA0
+ .word 0x0007BCA0, 0x0007BDD4
+ .word 0x0007BDD4, 0x0007C088
+ .word 0x0007C088, 0x0007C1BC
+ .word 0x0007C1BC, 0x0007DC24
+ .word 0x0007DC24, 0x0007F68C
+ .word 0x0007F68C, 0x000810F4
+ .word 0x000810F4, 0x00081510
+ .word 0x00081510, 0x00084938
+ .word 0x00084938, 0x00087D60
+ .word 0x00087D60, 0x0008A8A8
+ .word 0x0008A8A8, 0x0008D3F0
+ .word 0x0008D3F0, 0x0008EE58
+ .word 0x0008EE58, 0x0008F040
+ .word 0x0008F040, 0x0008F328
+ .word 0x0008F328, 0x0008F620
+ .word 0x0008F620, 0x0008F918
+ .word 0x0008F918, 0x00091380
+ .word 0x00091380, 0x00092DE8
+ .word 0x00092DE8, 0x00094850
+ .word 0x00094850, 0x000962B8
+ .word 0x000962B8, 0x00097D20
+ .word 0x00097D20, 0x00099788
+ .word 0x00099788, 0x0009B1F0
+ .word 0x0009B1F0, 0x0009CC58
+ .word 0x0009CC58, 0x0009E6C0
+ .word 0x0009E6C0, 0x000A0128
+ .word 0x000A0128, 0x000A1B90
+ .word 0x000A1B90, 0x000A35F8
+ .word 0x000A35F8, 0x000A5060
+ .word 0x000A5060, 0x000A6AC8
+ .word 0x000A6AC8, 0x000A8530
+ .word 0x000A8530, 0x000A9F98
+ .word 0x000A9F98, 0x000ABA00
+ .word 0x000ABA00, 0x000AD468
+ .word 0x000AD468, 0x000AEED0
+ .word 0x000AEED0, 0x000B0938
+ .word 0x000B0938, 0x000B23A0
+ .word 0x000B23A0, 0x000B3E08
+ .word 0x000B3E08, 0x000B5870
+ .word 0x000B5870, 0x000B72D8
+ .word 0x000B72D8, 0x000B8D40
+ .word 0x000B8D40, 0x000BADA8
+ .word 0x000BADA8, 0x000BB410
+ .word 0x000BB410, 0x000BBA78
+ .word 0x000BBA78, 0x000BD4E0
+ .word 0x000BD4E0, 0x000BEF48
+ .word 0x000BEF48, 0x000C09B0
+ .word 0x000C09B0, 0x000C0E90
+ .word 0x000C0E90, 0x000C1370
+ .word 0x000C1370, 0x000C1850
+ .word 0x000C1850, 0x000C2930
+ .word 0x000C2930, 0x000C3A10
+ .word 0x000C3A10, 0x000C4AF0
+ .word 0x000C4AF0, 0x000C4FD0
+ .word 0x000C4FD0, 0x000C6238
+ .word 0x000C6238, 0x000C6718
+ .word 0x000C6718, 0x000C77F8
+ .word 0x000C77F8, 0x000C7CD8
+ .word 0x000C7CD8, 0x000C8340
+ .word 0x000C8340, 0x000C9DA8
+ .word 0x000C9DA8, 0x000CB810
+ .word 0x000CB810, 0x000CD278
+ .word 0x000CD278, 0x000CECE0
+ .word 0x000CECE0, 0x000D0748
+ .word 0x000D0748, 0x000D21B0
+ .word 0x000D21B0, 0x000D3C18
+ .word 0x000D3C18, 0x000D5680
+ .word 0x000D5680, 0x000D70E8
+ .word 0x000D70E8, 0x000D8B50
+ .word 0x000D8B50, 0x000D9468
+ .word 0x000D9468, 0x000D972C
+ .word 0x000D972C, 0x000DB194
+ .word 0x000DB194, 0x000DBAAC
+ .word 0x000DBAAC, 0x000DC3C4
+ .word 0x000DC3C4, 0x000DCF30
+ .word 0x000DCF30, 0x000DDA9C
+ .word 0x000DDA9C, 0x000DE3B4
+ .word 0x000DE3B4, 0x000DECCC
+ .word 0x000DECCC, 0x000DEF90
+ .word 0x000DEF90, 0x000DF854
+ .word 0x000DF854, 0x000E12BC
+ .word 0x000E12BC, 0x000E2D24
+ .word 0x000E2D24, 0x000E478C
+ .word 0x000E478C, 0x000E69F4
+ .word 0x000E69F4, 0x000E8C5C
+ .word 0x000E8C5C, 0x000E8DA0
+ .word 0x000E8DA0, 0x000E8ED4
+ .word 0x000E8ED4, 0x000E9188
+ .word 0x000E9188, 0x000E9480
+ .word 0x000E9480, 0x000E9778
+ .word 0x000E9778, 0x000E9A70
+ .word 0x000E9A70, 0x000E9D58
+ .word 0x000E9D58, 0x000EA050
+ .word 0x000EA050, 0x000EA348
+ .word 0x000EA348, 0x000EA630
+ .word 0x000EA630, 0x000EA928
+ .word 0x000EA928, 0x000EAC20
+ .word 0x000EAC20, 0x000EAF18
+ .word 0x000EAF18, 0x000EB210
+ .word 0x000EB210, 0x000EB508
+ .word 0x000EB508, 0x000EB7F0
+ .word 0x000EB7F0, 0x000EBAE8
+ .word 0x000EBAE8, 0x000EBDE0
+ .word 0x000EBDE0, 0x000EC0D8
+ .word 0x000EC0D8, 0x000EC3D0
+ .word 0x000EC3D0, 0x000EC6C8
+ .word 0x000EC6C8, 0x000EC9C0
+ .word 0x000EC9C0, 0x000ECCB8
+ .word 0x000ECCB8, 0x000ECFB0
+ .word 0x000ECFB0, 0x000ED2A8
+ .word 0x000ED2A8, 0x000ED5A0
+ .word 0x000ED5A0, 0x000ED898
+ .word 0x000ED898, 0x000EDBB0
+ .word 0x000EDBB0, 0x000EDEA8
+ .word 0x000EDEA8, 0x000EE1A0
+ .word 0x000EE1A0, 0x000EE498
+ .word 0x000EE498, 0x000EE790
+ .word 0x000EE790, 0x000EEA88
+ .word 0x000EEA88, 0x000EED80
+ .word 0x000EED80, 0x000EF078
+ .word 0x000EF078, 0x000EF370
+ .word 0x000EF370, 0x000EF658
+ .word 0x000EF658, 0x000EF950
+ .word 0x000EF950, 0x000EFC48
+ .word 0x000EFC48, 0x000EFF40
+ .word 0x000EFF40, 0x000F0238
+ .word 0x000F0238, 0x000F0530
+ .word 0x000F0530, 0x000F0818
+ .word 0x000F0818, 0x000F0B10
+ .word 0x000F0B10, 0x000F0E08
+ .word 0x000F0E08, 0x000F10F0
+ .word 0x000F10F0, 0x000F13D8
+ .word 0x000F13D8, 0x000F16D0
+ .word 0x000F16D0, 0x000F19B8
+ .word 0x000F19B8, 0x000F1CA0
+ .word 0x000F1CA0, 0x000F1F98
+ .word 0x000F1F98, 0x000F2280
+ .word 0x000F2280, 0x000F2578
+ .word 0x000F2578, 0x000F2870
+ .word 0x000F2870, 0x000F2B58
+ .word 0x000F2B58, 0x000F2E50
+ .word 0x000F2E50, 0x000F3148
+ .word 0x000F3148, 0x000F3430
+ .word 0x000F3430, 0x000F3728
+ .word 0x000F3728, 0x000F3A40
+ .word 0x000F3A40, 0x000F3D58
+ .word 0x000F3D58, 0x000F4050
+ .word 0x000F4050, 0x000F4348
+ .word 0x000F4348, 0x000F4630
+ .word 0x000F4630, 0x000F4928
+ .word 0x000F4928, 0x000F4C20
+ .word 0x000F4C20, 0x000F4F08
+ .word 0x000F4F08, 0x000F5200
+ .word 0x000F5200, 0x000F54F8
+ .word 0x000F54F8, 0x000F57E0
+ .word 0x000F57E0, 0x000F5AD8
+ .word 0x000F5AD8, 0x000F5DD0
+ .word 0x000F5DD0, 0x000F60B8
+ .word 0x000F60B8, 0x000F63C0
+ .word 0x000F63C0, 0x000F66B8
+ .word 0x000F66B8, 0x000F69B0
+ .word 0x000F69B0, 0x000F6CA8
+ .word 0x000F6CA8, 0x000F6FA0
+ .word 0x000F6FA0, 0x000F7288
+ .word 0x000F7288, 0x000F7580
+ .word 0x000F7580, 0x000F7878
+ .word 0x000F7878, 0x000F7B90
+ .word 0x000F7B90, 0x000F7E88
+ .word 0x000F7E88, 0x000F8180
+ .word 0x000F8180, 0x000F8478
+ .word 0x000F8478, 0x000F8770
+ .word 0x000F8770, 0x000F8A68
+ .word 0x000F8A68, 0x000F8D60
+ .word 0x000F8D60, 0x000F9058
+ .word 0x000F9058, 0x000F9350
+ .word 0x000F9350, 0x000F9648
+ .word 0x000F9648, 0x000F9940
+ .word 0x000F9940, 0x000F9C58
+ .word 0x000F9C58, 0x000F9F50
+ .word 0x000F9F50, 0x000FA248
+ .word 0x000FA248, 0x000FA540
+ .word 0x000FA540, 0x000FA838
+ .word 0x000FA838, 0x000FAB30
+ .word 0x000FAB30, 0x000FAE28
+ .word 0x000FAE28, 0x000FB120
+ .word 0x000FB120, 0x000FB418
+ .word 0x000FB418, 0x000FB710
+ .word 0x000FB710, 0x000FB9F8
+ .word 0x000FB9F8, 0x000FBCF0
+ .word 0x000FBCF0, 0x000FBFE8
+ .word 0x000FBFE8, 0x000FC2E0
+ .word 0x000FC2E0, 0x000FC5D8
+ .word 0x000FC5D8, 0x000FC8D0
+ .word 0x000FC8D0, 0x000FCBC8
+ .word 0x000FCBC8, 0x000FCEC0
+ .word 0x000FCEC0, 0x000FD1B8
+ .word 0x000FD1B8, 0x000FD4A0
+ .word 0x000FD4A0, 0x000FD788
+ .word 0x000FD788, 0x000FDA80
+ .word 0x000FDA80, 0x000FDD78
+ .word 0x000FDD78, 0x000FE070
+ .word 0x000FE070, 0x000FE368
+ .word 0x000FE368, 0x000FE650
+ .word 0x000FE650, 0x000FE968
+ .word 0x000FE968, 0x000FEC60
+ .word 0x000FEC60, 0x000FEF48
+ .word 0x000FEF48, 0x000FF240
+ .word 0x000FF240, 0x000FF538
+ .word 0x000FF538, 0x000FF820
+ .word 0x000FF820, 0x000FFB38
+ .word 0x000FFB38, 0x000FFE30
+ .word 0x000FFE30, 0x00100128
+ .word 0x00100128, 0x00100420
+ .word 0x00100420, 0x00100718
+ .word 0x00100718, 0x00100A00
+ .word 0x00100A00, 0x00100CF8
+ .word 0x00100CF8, 0x00100FF0
+ .word 0x00100FF0, 0x001012E8
+ .word 0x001012E8, 0x001015E0
+ .word 0x001015E0, 0x001018D8
+ .word 0x001018D8, 0x00101BC0
+ .word 0x00101BC0, 0x00101EB8
+ .word 0x00101EB8, 0x001021B0
+ .word 0x001021B0, 0x001024A8
+ .word 0x001024A8, 0x001027A0
+ .word 0x001027A0, 0x00102A98
+ .word 0x00102A98, 0x00102D80
+ .word 0x00102D80, 0x00103068
+ .word 0x00103068, 0x00103360
+ .word 0x00103360, 0x00103658
+ .word 0x00103658, 0x00103950
+ .word 0x00103950, 0x00103C48
+ .word 0x00103C48, 0x00103F30
+ .word 0x00103F30, 0x00104228
+ .word 0x00104228, 0x00104520
+ .word 0x00104520, 0x00104808
+ .word 0x00104808, 0x00104AF0
+ .word 0x00104AF0, 0x00104DE8
+ .word 0x00104DE8, 0x001050D0
+ .word 0x001050D0, 0x001053E8
+ .word 0x001053E8, 0x001056E0
+ .word 0x001056E0, 0x001059C8
+ .word 0x001059C8, 0x00105CB0
+ .word 0x00105CB0, 0x00105FA8
+ .word 0x00105FA8, 0x00106290
+ .word 0x00106290, 0x00106588
+ .word 0x00106588, 0x00106880
+ .word 0x00106880, 0x00106B78
+ .word 0x00106B78, 0x00106E70
+ .word 0x00106E70, 0x00107168
+ .word 0x00107168, 0x00107480
+ .word 0x00107480, 0x00107778
+ .word 0x00107778, 0x00107A70
+ .word 0x00107A70, 0x00107D58
+ .word 0x00107D58, 0x00108060
+ .word 0x00108060, 0x00108358
+ .word 0x00108358, 0x00108650
+ .word 0x00108650, 0x00108948
+ .word 0x00108948, 0x00108C40
+ .word 0x00108C40, 0x00108F28
+ .word 0x00108F28, 0x00109220
+ .word 0x00109220, 0x00109518
+ .word 0x00109518, 0x00109810
+ .word 0x00109810, 0x00109B08
+ .word 0x00109B08, 0x00109E00
+ .word 0x00109E00, 0x0010A0E8
+ .word 0x0010A0E8, 0x0010A3E0
+ .word 0x0010A3E0, 0x0010A6D8
+ .word 0x0010A6D8, 0x0010A9C0
+ .word 0x0010A9C0, 0x0010ACA8
+ .word 0x0010ACA8, 0x0010AFA0
+ .word 0x0010AFA0, 0x0010B288
+ .word 0x0010B288, 0x0010B580
+ .word 0x0010B580, 0x0010B878
+ .word 0x0010B878, 0x0010BB60
+ .word 0x0010BB60, 0x0010BE58
+ .word 0x0010BE58, 0x0010C150
+ .word 0x0010C150, 0x0010CBB8
+ .word 0x0010CBB8, 0x0010E620
+ .word 0x0010E620, 0x0010EB00
+ .word 0x0010EB00, 0x001104F8
+ .word 0x001104F8, 0x00111EF0
+ .word 0x00111EF0, 0x001123D0
+ .word 0x001123D0, 0x001128B0
+ .word 0x001128B0, 0x001136A8
+ .word 0x001136A8, 0x001144A0
+ .word 0x001144A0, 0x00114664
+ .word 0x00114664, 0x00114F5C
+ .word 0x00114F5C, 0x001169C4
+ .word 0x001169C4, 0x0011842C
+ .word 0x0011842C, 0x00119E94
+ .word 0x00119E94, 0x0011B8FC
+ .word 0x0011B8FC, 0x0011D364
+ .word 0x0011D364, 0x0011D7F4
+ .word 0x0011D7F4, 0x0011DAF4
+ .word 0x0011DAF4, 0x0011DDF4
+ .word 0x0011DDF4, 0x0011E1A8
+ .word 0x0011E1A8, 0x0011E65C
+ .word 0x0011E65C, 0x0011F17C
+ .word 0x0011F17C, 0x0011F47C
+ .word 0x0011F47C, 0x00120728
+ .word 0x00120728, 0x00120EF8
+ .word 0x00120EF8, 0x00121850
+ .word 0x00121850, 0x00121FA4
+ .word 0x00121FA4, 0x001229B8
+ .word 0x001229B8, 0x00123470
+ .word 0x00123470, 0x00123D38
+ .word 0x00123D38, 0x0012616C
+ .word 0x0012616C, 0x001264FC
+ .word 0x001264FC, 0x00127408
+ .word 0x00127408, 0x0012744C
+ .word 0x0012744C, 0x001274D0
+ .word 0x001274D0, 0x001274DC
+ .word 0x001274DC, 0x00127540
+ .word 0x00127540, 0x00127554
+ .word 0x00127554, 0x00127574
+ .word 0x00127574, 0x00127588
+ .word 0x00127588, 0x0012759C
+ .word 0x0012759C, 0x001275A8
+ .word 0x001275A8, 0x001275EC
+ .word 0x001275EC, 0x00127630
+ .word 0x00127630, 0x00127678
+ .word 0x00127678, 0x00127688
+ .word 0x00127688, 0x001276BC
+ .word 0x001276BC, 0x001276C8
+ .word 0x001276C8, 0x001276FC
+ .word 0x001276FC, 0x00127708
+ .word 0x00127708, 0x00127714
+ .word 0x00127714, 0x00127720
+ .word 0x00127720, 0x0012772C
+ .word 0x0012772C, 0x00127738
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00127740 ; chunk size
+ .incbin "baserom.nds", 0x211A924, 0x127738
+ .balign 512, 255
diff --git a/files/FILE_2242200_fldeff.narc.s b/files/FILE_2242200_fldeff.narc.s
new file mode 100644
index 00000000..10e957fe
--- /dev/null
+++ b/files/FILE_2242200_fldeff.narc.s
@@ -0,0 +1,157 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x0001BE98 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000414 ; chunk size
+ .short 129 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000908
+ .word 0x00000908, 0x00000B84
+ .word 0x00000B84, 0x00000E9C
+ .word 0x00000E9C, 0x000011B4
+ .word 0x000011B4, 0x000012E8
+ .word 0x000012E8, 0x00001704
+ .word 0x00001704, 0x000017C8
+ .word 0x000017C8, 0x00001A18
+ .word 0x00001A18, 0x00001C10
+ .word 0x00001C10, 0x00001E18
+ .word 0x00001E18, 0x00002368
+ .word 0x00002368, 0x000028B8
+ .word 0x000028B8, 0x00002E08
+ .word 0x00002E08, 0x00002F3C
+ .word 0x00002F3C, 0x00003224
+ .word 0x00003224, 0x00003640
+ .word 0x00003640, 0x00003A6C
+ .word 0x00003A6C, 0x00003D84
+ .word 0x00003D84, 0x00004044
+ .word 0x00004044, 0x00004304
+ .word 0x00004304, 0x00004794
+ .word 0x00004794, 0x00004A94
+ .word 0x00004A94, 0x00004DA0
+ .word 0x00004DA0, 0x000050AC
+ .word 0x000050AC, 0x000053B8
+ .word 0x000053B8, 0x00005678
+ .word 0x00005678, 0x00005994
+ .word 0x00005994, 0x00005CB0
+ .word 0x00005CB0, 0x00005FCC
+ .word 0x00005FCC, 0x000062E8
+ .word 0x000062E8, 0x00006604
+ .word 0x00006604, 0x00006920
+ .word 0x00006920, 0x00006C3C
+ .word 0x00006C3C, 0x00006F58
+ .word 0x00006F58, 0x00007274
+ .word 0x00007274, 0x00007590
+ .word 0x00007590, 0x000078AC
+ .word 0x000078AC, 0x00007BC8
+ .word 0x00007BC8, 0x00007EE4
+ .word 0x00007EE4, 0x00008200
+ .word 0x00008200, 0x0000851C
+ .word 0x0000851C, 0x00008838
+ .word 0x00008838, 0x00008B54
+ .word 0x00008B54, 0x00008E70
+ .word 0x00008E70, 0x0000918C
+ .word 0x0000918C, 0x000094A8
+ .word 0x000094A8, 0x000097C4
+ .word 0x000097C4, 0x00009AE0
+ .word 0x00009AE0, 0x00009DFC
+ .word 0x00009DFC, 0x0000A108
+ .word 0x0000A108, 0x0000A414
+ .word 0x0000A414, 0x0000A720
+ .word 0x0000A720, 0x0000AA2C
+ .word 0x0000AA2C, 0x0000AD48
+ .word 0x0000AD48, 0x0000B064
+ .word 0x0000B064, 0x0000B380
+ .word 0x0000B380, 0x0000B69C
+ .word 0x0000B69C, 0x0000B9B8
+ .word 0x0000B9B8, 0x0000C48C
+ .word 0x0000C48C, 0x0000C74C
+ .word 0x0000C74C, 0x0000CA0C
+ .word 0x0000CA0C, 0x0000CCCC
+ .word 0x0000CCCC, 0x0000CF8C
+ .word 0x0000CF8C, 0x0000D24C
+ .word 0x0000D24C, 0x0000D50C
+ .word 0x0000D50C, 0x0000D7CC
+ .word 0x0000D7CC, 0x0000DA8C
+ .word 0x0000DA8C, 0x0000DD4C
+ .word 0x0000DD4C, 0x0000E00C
+ .word 0x0000E00C, 0x0000E7DC
+ .word 0x0000E7DC, 0x0000F134
+ .word 0x0000F134, 0x0000F888
+ .word 0x0000F888, 0x0001029C
+ .word 0x0001029C, 0x00010D54
+ .word 0x00010D54, 0x0001161C
+ .word 0x0001161C, 0x0001191C
+ .word 0x0001191C, 0x00011C1C
+ .word 0x00011C1C, 0x00011F1C
+ .word 0x00011F1C, 0x00012A3C
+ .word 0x00012A3C, 0x00012D3C
+ .word 0x00012D3C, 0x00012FFC
+ .word 0x00012FFC, 0x00013B04
+ .word 0x00013B04, 0x00014568
+ .word 0x00014568, 0x0001503C
+ .word 0x0001503C, 0x00015484
+ .word 0x00015484, 0x00015784
+ .word 0x00015784, 0x00015D6C
+ .word 0x00015D6C, 0x000160D8
+ .word 0x000160D8, 0x00016508
+ .word 0x00016508, 0x000168CC
+ .word 0x000168CC, 0x00016CA0
+ .word 0x00016CA0, 0x00017558
+ .word 0x00017558, 0x00017990
+ .word 0x00017990, 0x00017C50
+ .word 0x00017C50, 0x00017F10
+ .word 0x00017F10, 0x000181D0
+ .word 0x000181D0, 0x00018490
+ .word 0x00018490, 0x00018750
+ .word 0x00018750, 0x00018A10
+ .word 0x00018A10, 0x00018CD0
+ .word 0x00018CD0, 0x00018F90
+ .word 0x00018F90, 0x00019250
+ .word 0x00019250, 0x00019510
+ .word 0x00019510, 0x000197D0
+ .word 0x000197D0, 0x00019A90
+ .word 0x00019A90, 0x00019D50
+ .word 0x00019D50, 0x0001A010
+ .word 0x0001A010, 0x0001A72C
+ .word 0x0001A72C, 0x0001AA2C
+ .word 0x0001AA2C, 0x0001AEE0
+ .word 0x0001AEE0, 0x0001B360
+ .word 0x0001B360, 0x0001B46C
+ .word 0x0001B46C, 0x0001B578
+ .word 0x0001B578, 0x0001B654
+ .word 0x0001B654, 0x0001B74C
+ .word 0x0001B74C, 0x0001B814
+ .word 0x0001B814, 0x0001B920
+ .word 0x0001B920, 0x0001B934
+ .word 0x0001B934, 0x0001B964
+ .word 0x0001B964, 0x0001B98C
+ .word 0x0001B98C, 0x0001B9C4
+ .word 0x0001B9C4, 0x0001B9D4
+ .word 0x0001B9D4, 0x0001B9E8
+ .word 0x0001B9E8, 0x0001BA08
+ .word 0x0001BA08, 0x0001BA14
+ .word 0x0001BA14, 0x0001BA28
+ .word 0x0001BA28, 0x0001BA3C
+ .word 0x0001BA3C, 0x0001BA50
+ .word 0x0001BA50, 0x0001BA5C
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x0001BA64 ; chunk size
+ .incbin "baserom.nds", 0x224263C, 0x1BA5C
+ .balign 512, 255
diff --git a/files/FILE_225E200_ball_particle.narc.s b/files/FILE_225E200_ball_particle.narc.s
new file mode 100644
index 00000000..1a188f64
--- /dev/null
+++ b/files/FILE_225E200_ball_particle.narc.s
@@ -0,0 +1,145 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x0004E844 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x000003B4 ; chunk size
+ .short 117 ; number of files
+ .balign 4
+ .word 0x00000000, 0x0000091C
+ .word 0x0000091C, 0x00002470
+ .word 0x00002470, 0x00003E28
+ .word 0x00003E28, 0x00004744
+ .word 0x00004744, 0x00005060
+ .word 0x00005060, 0x00005968
+ .word 0x00005968, 0x00006720
+ .word 0x00006720, 0x00007890
+ .word 0x00007890, 0x00008A70
+ .word 0x00008A70, 0x0000A3B0
+ .word 0x0000A3B0, 0x0000B2EC
+ .word 0x0000B2EC, 0x0000CCB8
+ .word 0x0000CCB8, 0x0000D9F8
+ .word 0x0000D9F8, 0x0000EF14
+ .word 0x0000EF14, 0x00010B58
+ .word 0x00010B58, 0x00012510
+ .word 0x00012510, 0x000132DC
+ .word 0x000132DC, 0x00013BF8
+ .word 0x00013BF8, 0x00015180
+ .word 0x00015180, 0x000165E4
+ .word 0x000165E4, 0x00017924
+ .word 0x00017924, 0x00018EAC
+ .word 0x00018EAC, 0x0001A434
+ .word 0x0001A434, 0x0001B9BC
+ .word 0x0001B9BC, 0x0001D3F4
+ .word 0x0001D3F4, 0x0001EC88
+ .word 0x0001EC88, 0x00020FD8
+ .word 0x00020FD8, 0x00023460
+ .word 0x00023460, 0x00024D10
+ .word 0x00024D10, 0x00026F24
+ .word 0x00026F24, 0x000293AC
+ .word 0x000293AC, 0x0002B534
+ .word 0x0002B534, 0x0002D898
+ .word 0x0002D898, 0x0002FED0
+ .word 0x0002FED0, 0x000323E4
+ .word 0x000323E4, 0x0003396C
+ .word 0x0003396C, 0x000343FC
+ .word 0x000343FC, 0x000348C0
+ .word 0x000348C0, 0x00034D84
+ .word 0x00034D84, 0x00035248
+ .word 0x00035248, 0x0003570C
+ .word 0x0003570C, 0x00035BCC
+ .word 0x00035BCC, 0x0003608C
+ .word 0x0003608C, 0x0003654C
+ .word 0x0003654C, 0x00036A0C
+ .word 0x00036A0C, 0x00036ECC
+ .word 0x00036ECC, 0x0003738C
+ .word 0x0003738C, 0x00037854
+ .word 0x00037854, 0x00037D1C
+ .word 0x00037D1C, 0x00037EDC
+ .word 0x00037EDC, 0x00038090
+ .word 0x00038090, 0x00038244
+ .word 0x00038244, 0x00038404
+ .word 0x00038404, 0x000388C4
+ .word 0x000388C4, 0x00038D84
+ .word 0x00038D84, 0x00039244
+ .word 0x00039244, 0x00039704
+ .word 0x00039704, 0x0003A7C4
+ .word 0x0003A7C4, 0x0003B884
+ .word 0x0003B884, 0x0003C944
+ .word 0x0003C944, 0x0003DA04
+ .word 0x0003DA04, 0x0003DEC0
+ .word 0x0003DEC0, 0x0003E37C
+ .word 0x0003E37C, 0x0003E838
+ .word 0x0003E838, 0x0003ECF4
+ .word 0x0003ECF4, 0x0003EEB0
+ .word 0x0003EEB0, 0x0003F06C
+ .word 0x0003F06C, 0x0003F228
+ .word 0x0003F228, 0x0003F3E4
+ .word 0x0003F3E4, 0x0003F5AC
+ .word 0x0003F5AC, 0x0003F774
+ .word 0x0003F774, 0x0003F93C
+ .word 0x0003F93C, 0x0003FB04
+ .word 0x0003FB04, 0x0003FFE0
+ .word 0x0003FFE0, 0x000404C4
+ .word 0x000404C4, 0x000409AC
+ .word 0x000409AC, 0x00040E90
+ .word 0x00040E90, 0x00041378
+ .word 0x00041378, 0x0004185C
+ .word 0x0004185C, 0x00041D18
+ .word 0x00041D18, 0x000421D4
+ .word 0x000421D4, 0x00042690
+ .word 0x00042690, 0x00042B4C
+ .word 0x00042B4C, 0x00043008
+ .word 0x00043008, 0x000434C4
+ .word 0x000434C4, 0x00043980
+ .word 0x00043980, 0x00043E3C
+ .word 0x00043E3C, 0x000442F8
+ .word 0x000442F8, 0x000447B4
+ .word 0x000447B4, 0x00044C70
+ .word 0x00044C70, 0x00045128
+ .word 0x00045128, 0x000455E0
+ .word 0x000455E0, 0x00045A9C
+ .word 0x00045A9C, 0x00045F58
+ .word 0x00045F58, 0x00046410
+ .word 0x00046410, 0x000468CC
+ .word 0x000468CC, 0x00046D88
+ .word 0x00046D88, 0x00047240
+ .word 0x00047240, 0x000476F8
+ .word 0x000476F8, 0x00047BB4
+ .word 0x00047BB4, 0x00048070
+ .word 0x00048070, 0x0004852C
+ .word 0x0004852C, 0x000489E4
+ .word 0x000489E4, 0x00048EA0
+ .word 0x00048EA0, 0x00049358
+ .word 0x00049358, 0x00049810
+ .word 0x00049810, 0x00049CCC
+ .word 0x00049CCC, 0x0004A188
+ .word 0x0004A188, 0x0004A644
+ .word 0x0004A644, 0x0004AB00
+ .word 0x0004AB00, 0x0004AFBC
+ .word 0x0004AFBC, 0x0004B478
+ .word 0x0004B478, 0x0004B930
+ .word 0x0004B930, 0x0004BDE8
+ .word 0x0004BDE8, 0x0004C2B8
+ .word 0x0004C2B8, 0x0004D398
+ .word 0x0004D398, 0x0004E468
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x0004E470 ; chunk size
+ .incbin "baserom.nds", 0x225E5DC, 0x4E468
+ .balign 512, 255
diff --git a/files/FILE_227E00.s b/files/FILE_227E00.s
new file mode 100644
index 00000000..ab307e3a
--- /dev/null
+++ b/files/FILE_227E00.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x227E00, 0xF520
+ .balign 512, 255
diff --git a/files/FILE_22ACC00_waza_particle.narc.s b/files/FILE_22ACC00_waza_particle.narc.s
new file mode 100644
index 00000000..3b8ac4cc
--- /dev/null
+++ b/files/FILE_22ACC00_waza_particle.narc.s
@@ -0,0 +1,513 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00245810 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000F34 ; chunk size
+ .short 485 ; number of files
+ .balign 4
+ .word 0x00000000, 0x000001D8
+ .word 0x000001D8, 0x00000560
+ .word 0x00000560, 0x00000FF4
+ .word 0x00000FF4, 0x00006354
+ .word 0x00006354, 0x00009084
+ .word 0x00009084, 0x0000E3E4
+ .word 0x0000E3E4, 0x00011114
+ .word 0x00011114, 0x00016A04
+ .word 0x00016A04, 0x000192C4
+ .word 0x000192C4, 0x00019610
+ .word 0x00019610, 0x00019ECC
+ .word 0x00019ECC, 0x0001A218
+ .word 0x0001A218, 0x0001AAD4
+ .word 0x0001AAD4, 0x0001AC90
+ .word 0x0001AC90, 0x0001D148
+ .word 0x0001D148, 0x0001D3E8
+ .word 0x0001D3E8, 0x0001DA94
+ .word 0x0001DA94, 0x0001DDE0
+ .word 0x0001DDE0, 0x00021944
+ .word 0x00021944, 0x00021B00
+ .word 0x00021B00, 0x000223BC
+ .word 0x000223BC, 0x00022578
+ .word 0x00022578, 0x00023ED8
+ .word 0x00023ED8, 0x00024094
+ .word 0x00024094, 0x00024950
+ .word 0x00024950, 0x00024B0C
+ .word 0x00024B0C, 0x000253C8
+ .word 0x000253C8, 0x00028CC4
+ .word 0x00028CC4, 0x00029228
+ .word 0x00029228, 0x0002BC5C
+ .word 0x0002BC5C, 0x0002CF88
+ .word 0x0002CF88, 0x0002D2FC
+ .word 0x0002D2FC, 0x0002E724
+ .word 0x0002E724, 0x000321EC
+ .word 0x000321EC, 0x0003285C
+ .word 0x0003285C, 0x0003336C
+ .word 0x0003336C, 0x000388C4
+ .word 0x000388C4, 0x000390CC
+ .word 0x000390CC, 0x0003A108
+ .word 0x0003A108, 0x0003B020
+ .word 0x0003B020, 0x0003C29C
+ .word 0x0003C29C, 0x0003CDE0
+ .word 0x0003CDE0, 0x0003E81C
+ .word 0x0003E81C, 0x00040F54
+ .word 0x00040F54, 0x000428CC
+ .word 0x000428CC, 0x00042C40
+ .word 0x00042C40, 0x00043EBC
+ .word 0x00043EBC, 0x0004452C
+ .word 0x0004452C, 0x000446E4
+ .word 0x000446E4, 0x00046E44
+ .word 0x00046E44, 0x0004736C
+ .word 0x0004736C, 0x000476D8
+ .word 0x000476D8, 0x00049F58
+ .word 0x00049F58, 0x0004B684
+ .word 0x0004B684, 0x0004CDB0
+ .word 0x0004CDB0, 0x0004E54C
+ .word 0x0004E54C, 0x0004F970
+ .word 0x0004F970, 0x00051E24
+ .word 0x00051E24, 0x00052880
+ .word 0x00052880, 0x00053618
+ .word 0x00053618, 0x000542B8
+ .word 0x000542B8, 0x00054918
+ .word 0x00054918, 0x000559DC
+ .word 0x000559DC, 0x00056180
+ .word 0x00056180, 0x000579D8
+ .word 0x000579D8, 0x00057BBC
+ .word 0x00057BBC, 0x0005940C
+ .word 0x0005940C, 0x0005B2C0
+ .word 0x0005B2C0, 0x0005C818
+ .word 0x0005C818, 0x0005C838
+ .word 0x0005C838, 0x0005D778
+ .word 0x0005D778, 0x0005E0DC
+ .word 0x0005E0DC, 0x0005EC60
+ .word 0x0005EC60, 0x00060A90
+ .word 0x00060A90, 0x00062E88
+ .word 0x00062E88, 0x000634F4
+ .word 0x000634F4, 0x00063B60
+ .word 0x00063B60, 0x00065DC4
+ .word 0x00065DC4, 0x00066294
+ .word 0x00066294, 0x00067918
+ .word 0x00067918, 0x00068A4C
+ .word 0x00068A4C, 0x00069DD8
+ .word 0x00069DD8, 0x0006A0B0
+ .word 0x0006A0B0, 0x0006A550
+ .word 0x0006A550, 0x0006AA0C
+ .word 0x0006AA0C, 0x0006B9BC
+ .word 0x0006B9BC, 0x0006D720
+ .word 0x0006D720, 0x0006D740
+ .word 0x0006D740, 0x0006E250
+ .word 0x0006E250, 0x0006FD24
+ .word 0x0006FD24, 0x00071E48
+ .word 0x00071E48, 0x00073F84
+ .word 0x00073F84, 0x00074450
+ .word 0x00074450, 0x00076194
+ .word 0x00076194, 0x000767E0
+ .word 0x000767E0, 0x00076E2C
+ .word 0x00076E2C, 0x00077F78
+ .word 0x00077F78, 0x000793AC
+ .word 0x000793AC, 0x00079F24
+ .word 0x00079F24, 0x0007A614
+ .word 0x0007A614, 0x0007A634
+ .word 0x0007A634, 0x0007ADE8
+ .word 0x0007ADE8, 0x0007B638
+ .word 0x0007B638, 0x0007BEB0
+ .word 0x0007BEB0, 0x0007BED0
+ .word 0x0007BED0, 0x0007CB34
+ .word 0x0007CB34, 0x0007DF44
+ .word 0x0007DF44, 0x0007E230
+ .word 0x0007E230, 0x0007E51C
+ .word 0x0007E51C, 0x0007E808
+ .word 0x0007E808, 0x00080D5C
+ .word 0x00080D5C, 0x00080F18
+ .word 0x00080F18, 0x000814A4
+ .word 0x000814A4, 0x00081C14
+ .word 0x00081C14, 0x00082598
+ .word 0x00082598, 0x00083574
+ .word 0x00083574, 0x00085FC0
+ .word 0x00085FC0, 0x00088658
+ .word 0x00088658, 0x00088C10
+ .word 0x00088C10, 0x000890DC
+ .word 0x000890DC, 0x00089704
+ .word 0x00089704, 0x0008AD64
+ .word 0x0008AD64, 0x0008B888
+ .word 0x0008B888, 0x0008CB08
+ .word 0x0008CB08, 0x0008CB28
+ .word 0x0008CB28, 0x0008E44C
+ .word 0x0008E44C, 0x0008EACC
+ .word 0x0008EACC, 0x0008ED1C
+ .word 0x0008ED1C, 0x0008F0A4
+ .word 0x0008F0A4, 0x00090298
+ .word 0x00090298, 0x00090600
+ .word 0x00090600, 0x00090C5C
+ .word 0x00090C5C, 0x00091528
+ .word 0x00091528, 0x000925F8
+ .word 0x000925F8, 0x00094B90
+ .word 0x00094B90, 0x00094F18
+ .word 0x00094F18, 0x00098608
+ .word 0x00098608, 0x00099B6C
+ .word 0x00099B6C, 0x0009ADA8
+ .word 0x0009ADA8, 0x0009BFE8
+ .word 0x0009BFE8, 0x0009E0EC
+ .word 0x0009E0EC, 0x0009F46C
+ .word 0x0009F46C, 0x0009F7D0
+ .word 0x0009F7D0, 0x000A08A4
+ .word 0x000A08A4, 0x000A2014
+ .word 0x000A2014, 0x000A3CEC
+ .word 0x000A3CEC, 0x000A4D9C
+ .word 0x000A4D9C, 0x000A526C
+ .word 0x000A526C, 0x000A6920
+ .word 0x000A6920, 0x000A7430
+ .word 0x000A7430, 0x000A7B80
+ .word 0x000A7B80, 0x000A925C
+ .word 0x000A925C, 0x000AA588
+ .word 0x000AA588, 0x000AC1E8
+ .word 0x000AC1E8, 0x000AD9B4
+ .word 0x000AD9B4, 0x000AE010
+ .word 0x000AE010, 0x000AE030
+ .word 0x000AE030, 0x000AF594
+ .word 0x000AF594, 0x000B09B4
+ .word 0x000B09B4, 0x000B1270
+ .word 0x000B1270, 0x000B1E28
+ .word 0x000B1E28, 0x000B34EC
+ .word 0x000B34EC, 0x000B4660
+ .word 0x000B4660, 0x000B5D74
+ .word 0x000B5D74, 0x000B6E80
+ .word 0x000B6E80, 0x000B7184
+ .word 0x000B7184, 0x000B8B00
+ .word 0x000B8B00, 0x000B9C78
+ .word 0x000B9C78, 0x000BAA50
+ .word 0x000BAA50, 0x000BAD48
+ .word 0x000BAD48, 0x000BB3B4
+ .word 0x000BB3B4, 0x000BB904
+ .word 0x000BB904, 0x000BBDE0
+ .word 0x000BBDE0, 0x000BE868
+ .word 0x000BE868, 0x000C006C
+ .word 0x000C006C, 0x000C11B0
+ .word 0x000C11B0, 0x000C1820
+ .word 0x000C1820, 0x000C2F38
+ .word 0x000C2F38, 0x000C44E8
+ .word 0x000C44E8, 0x000C5274
+ .word 0x000C5274, 0x000C5434
+ .word 0x000C5434, 0x000C7498
+ .word 0x000C7498, 0x000C8A60
+ .word 0x000C8A60, 0x000C90A8
+ .word 0x000C90A8, 0x000C90C8
+ .word 0x000C90C8, 0x000C9298
+ .word 0x000C9298, 0x000CAC18
+ .word 0x000CAC18, 0x000CC2B8
+ .word 0x000CC2B8, 0x000CCBE8
+ .word 0x000CCBE8, 0x000D13F4
+ .word 0x000D13F4, 0x000D2334
+ .word 0x000D2334, 0x000D2968
+ .word 0x000D2968, 0x000D32D4
+ .word 0x000D32D4, 0x000D5328
+ .word 0x000D5328, 0x000D59A8
+ .word 0x000D59A8, 0x000D5C6C
+ .word 0x000D5C6C, 0x000D84CC
+ .word 0x000D84CC, 0x000D87B8
+ .word 0x000D87B8, 0x000D9534
+ .word 0x000D9534, 0x000D9554
+ .word 0x000D9554, 0x000DABD0
+ .word 0x000DABD0, 0x000DAD78
+ .word 0x000DAD78, 0x000DC6D0
+ .word 0x000DC6D0, 0x000DC6F0
+ .word 0x000DC6F0, 0x000DCB80
+ .word 0x000DCB80, 0x000DDB2C
+ .word 0x000DDB2C, 0x000E0EC8
+ .word 0x000E0EC8, 0x000E2728
+ .word 0x000E2728, 0x000E3DD0
+ .word 0x000E3DD0, 0x000E53CC
+ .word 0x000E53CC, 0x000E58D0
+ .word 0x000E58D0, 0x000E693C
+ .word 0x000E693C, 0x000E695C
+ .word 0x000E695C, 0x000E6B0C
+ .word 0x000E6B0C, 0x000E8114
+ .word 0x000E8114, 0x000E9C34
+ .word 0x000E9C34, 0x000EB5D0
+ .word 0x000EB5D0, 0x000EC060
+ .word 0x000EC060, 0x000ED7F8
+ .word 0x000ED7F8, 0x000F016C
+ .word 0x000F016C, 0x000F0DD4
+ .word 0x000F0DD4, 0x000F1E90
+ .word 0x000F1E90, 0x000F1FE0
+ .word 0x000F1FE0, 0x000F29B0
+ .word 0x000F29B0, 0x000F3D54
+ .word 0x000F3D54, 0x000F3D74
+ .word 0x000F3D74, 0x000F5554
+ .word 0x000F5554, 0x000F6964
+ .word 0x000F6964, 0x000F6CE4
+ .word 0x000F6CE4, 0x000F76D0
+ .word 0x000F76D0, 0x000F7830
+ .word 0x000F7830, 0x000F7E88
+ .word 0x000F7E88, 0x000FA590
+ .word 0x000FA590, 0x000FB03C
+ .word 0x000FB03C, 0x000FDA7C
+ .word 0x000FDA7C, 0x000FE20C
+ .word 0x000FE20C, 0x000FF89C
+ .word 0x000FF89C, 0x000FFDF8
+ .word 0x000FFDF8, 0x00100B04
+ .word 0x00100B04, 0x00100B24
+ .word 0x00100B24, 0x001027B8
+ .word 0x001027B8, 0x00104744
+ .word 0x00104744, 0x00104BC8
+ .word 0x00104BC8, 0x00105658
+ .word 0x00105658, 0x00105C58
+ .word 0x00105C58, 0x001062C8
+ .word 0x001062C8, 0x00108A04
+ .word 0x00108A04, 0x0010B4FC
+ .word 0x0010B4FC, 0x0010D9CC
+ .word 0x0010D9CC, 0x0010D9EC
+ .word 0x0010D9EC, 0x0010E190
+ .word 0x0010E190, 0x0010E648
+ .word 0x0010E648, 0x0010EAA0
+ .word 0x0010EAA0, 0x0010FC94
+ .word 0x0010FC94, 0x00111B4C
+ .word 0x00111B4C, 0x00114520
+ .word 0x00114520, 0x00115AA0
+ .word 0x00115AA0, 0x00116350
+ .word 0x00116350, 0x00116944
+ .word 0x00116944, 0x00119038
+ .word 0x00119038, 0x0011A2A8
+ .word 0x0011A2A8, 0x0011E378
+ .word 0x0011E378, 0x0011FA18
+ .word 0x0011FA18, 0x001205F4
+ .word 0x001205F4, 0x00121E4C
+ .word 0x00121E4C, 0x00121E6C
+ .word 0x00121E6C, 0x001224D4
+ .word 0x001224D4, 0x00122C58
+ .word 0x00122C58, 0x001237B4
+ .word 0x001237B4, 0x00123C70
+ .word 0x00123C70, 0x001264CC
+ .word 0x001264CC, 0x00126ADC
+ .word 0x00126ADC, 0x00127578
+ .word 0x00127578, 0x001290D8
+ .word 0x001290D8, 0x0012D1FC
+ .word 0x0012D1FC, 0x0012DA40
+ .word 0x0012DA40, 0x0012DA60
+ .word 0x0012DA60, 0x0012DCA8
+ .word 0x0012DCA8, 0x0012E240
+ .word 0x0012E240, 0x0012E260
+ .word 0x0012E260, 0x0012F0E8
+ .word 0x0012F0E8, 0x0012FEB0
+ .word 0x0012FEB0, 0x00130620
+ .word 0x00130620, 0x00130640
+ .word 0x00130640, 0x00130660
+ .word 0x00130660, 0x00131370
+ .word 0x00131370, 0x001324B4
+ .word 0x001324B4, 0x001324D4
+ .word 0x001324D4, 0x001324F4
+ .word 0x001324F4, 0x00132514
+ .word 0x00132514, 0x001334FC
+ .word 0x001334FC, 0x0013351C
+ .word 0x0013351C, 0x001336F0
+ .word 0x001336F0, 0x001347C4
+ .word 0x001347C4, 0x00135A48
+ .word 0x00135A48, 0x00136B18
+ .word 0x00136B18, 0x001386E8
+ .word 0x001386E8, 0x0013BE74
+ .word 0x0013BE74, 0x0013D930
+ .word 0x0013D930, 0x00140ED4
+ .word 0x00140ED4, 0x00141B28
+ .word 0x00141B28, 0x0014325C
+ .word 0x0014325C, 0x0014342C
+ .word 0x0014342C, 0x001466DC
+ .word 0x001466DC, 0x00147960
+ .word 0x00147960, 0x00147980
+ .word 0x00147980, 0x001479A0
+ .word 0x001479A0, 0x001479C0
+ .word 0x001479C0, 0x00148740
+ .word 0x00148740, 0x0014B64C
+ .word 0x0014B64C, 0x0014B66C
+ .word 0x0014B66C, 0x0014B960
+ .word 0x0014B960, 0x0014C47C
+ .word 0x0014C47C, 0x00152068
+ .word 0x00152068, 0x00152548
+ .word 0x00152548, 0x00153084
+ .word 0x00153084, 0x00154470
+ .word 0x00154470, 0x00154FA4
+ .word 0x00154FA4, 0x00155AC0
+ .word 0x00155AC0, 0x00156984
+ .word 0x00156984, 0x00156E54
+ .word 0x00156E54, 0x001583C0
+ .word 0x001583C0, 0x0015AF60
+ .word 0x0015AF60, 0x0015AF80
+ .word 0x0015AF80, 0x0015B444
+ .word 0x0015B444, 0x0015D87C
+ .word 0x0015D87C, 0x0015E718
+ .word 0x0015E718, 0x0015F084
+ .word 0x0015F084, 0x0015F8FC
+ .word 0x0015F8FC, 0x00163FA4
+ .word 0x00163FA4, 0x001644F4
+ .word 0x001644F4, 0x00165E4C
+ .word 0x00165E4C, 0x0016778C
+ .word 0x0016778C, 0x001677AC
+ .word 0x001677AC, 0x00167CF4
+ .word 0x00167CF4, 0x0016BF30
+ .word 0x0016BF30, 0x0016E038
+ .word 0x0016E038, 0x0016F190
+ .word 0x0016F190, 0x0016F1B0
+ .word 0x0016F1B0, 0x00171EA0
+ .word 0x00171EA0, 0x00173DA4
+ .word 0x00173DA4, 0x00174AF8
+ .word 0x00174AF8, 0x00175E3C
+ .word 0x00175E3C, 0x0017630C
+ .word 0x0017630C, 0x00176EA4
+ .word 0x00176EA4, 0x00177880
+ .word 0x00177880, 0x00179398
+ .word 0x00179398, 0x0017A1B0
+ .word 0x0017A1B0, 0x0017A8B0
+ .word 0x0017A8B0, 0x0017B188
+ .word 0x0017B188, 0x0017BAE8
+ .word 0x0017BAE8, 0x0017BB08
+ .word 0x0017BB08, 0x0017BB28
+ .word 0x0017BB28, 0x0017CD74
+ .word 0x0017CD74, 0x0017D7F0
+ .word 0x0017D7F0, 0x0017D9C0
+ .word 0x0017D9C0, 0x0017D9E0
+ .word 0x0017D9E0, 0x0017EA1C
+ .word 0x0017EA1C, 0x0018125C
+ .word 0x0018125C, 0x00184A94
+ .word 0x00184A94, 0x00184BE4
+ .word 0x00184BE4, 0x001866B0
+ .word 0x001866B0, 0x00187330
+ .word 0x00187330, 0x00188A24
+ .word 0x00188A24, 0x00189070
+ .word 0x00189070, 0x0018AA70
+ .word 0x0018AA70, 0x0018BF78
+ .word 0x0018BF78, 0x0018C974
+ .word 0x0018C974, 0x0018EA84
+ .word 0x0018EA84, 0x0018F880
+ .word 0x0018F880, 0x00190ED0
+ .word 0x00190ED0, 0x00192CC4
+ .word 0x00192CC4, 0x0019376C
+ .word 0x0019376C, 0x00199AE8
+ .word 0x00199AE8, 0x0019B8A4
+ .word 0x0019B8A4, 0x0019F360
+ .word 0x0019F360, 0x001A0934
+ .word 0x001A0934, 0x001A21E8
+ .word 0x001A21E8, 0x001A4AC8
+ .word 0x001A4AC8, 0x001A63E4
+ .word 0x001A63E4, 0x001A8780
+ .word 0x001A8780, 0x001A91C4
+ .word 0x001A91C4, 0x001A9840
+ .word 0x001A9840, 0x001ADB50
+ .word 0x001ADB50, 0x001AF530
+ .word 0x001AF530, 0x001B0004
+ .word 0x001B0004, 0x001B2AD4
+ .word 0x001B2AD4, 0x001B3714
+ .word 0x001B3714, 0x001B3FB0
+ .word 0x001B3FB0, 0x001B54E0
+ .word 0x001B54E0, 0x001B5850
+ .word 0x001B5850, 0x001B87D0
+ .word 0x001B87D0, 0x001B9E10
+ .word 0x001B9E10, 0x001BA7C4
+ .word 0x001BA7C4, 0x001BADAC
+ .word 0x001BADAC, 0x001BD034
+ .word 0x001BD034, 0x001BD708
+ .word 0x001BD708, 0x001BDD80
+ .word 0x001BDD80, 0x001BE814
+ .word 0x001BE814, 0x001BF0A8
+ .word 0x001BF0A8, 0x001BF93C
+ .word 0x001BF93C, 0x001BFB0C
+ .word 0x001BFB0C, 0x001BFCDC
+ .word 0x001BFCDC, 0x001C2238
+ .word 0x001C2238, 0x001C3C64
+ .word 0x001C3C64, 0x001C51C4
+ .word 0x001C51C4, 0x001C6D00
+ .word 0x001C6D00, 0x001C77D0
+ .word 0x001C77D0, 0x001C8064
+ .word 0x001C8064, 0x001C89DC
+ .word 0x001C89DC, 0x001C9048
+ .word 0x001C9048, 0x001C9778
+ .word 0x001C9778, 0x001CBFB8
+ .word 0x001CBFB8, 0x001CE3E0
+ .word 0x001CE3E0, 0x001CF64C
+ .word 0x001CF64C, 0x001D0D00
+ .word 0x001D0D00, 0x001D23A4
+ .word 0x001D23A4, 0x001D31E8
+ .word 0x001D31E8, 0x001D3D00
+ .word 0x001D3D00, 0x001D44D4
+ .word 0x001D44D4, 0x001D471C
+ .word 0x001D471C, 0x001D4A44
+ .word 0x001D4A44, 0x001D5504
+ .word 0x001D5504, 0x001D7694
+ .word 0x001D7694, 0x001D9D58
+ .word 0x001D9D58, 0x001DA274
+ .word 0x001DA274, 0x001DAB20
+ .word 0x001DAB20, 0x001DBAE0
+ .word 0x001DBAE0, 0x001DEC44
+ .word 0x001DEC44, 0x001E0FE8
+ .word 0x001E0FE8, 0x001E35F8
+ .word 0x001E35F8, 0x001E4B20
+ .word 0x001E4B20, 0x001E4B40
+ .word 0x001E4B40, 0x001E5990
+ .word 0x001E5990, 0x001E834C
+ .word 0x001E834C, 0x001E8C44
+ .word 0x001E8C44, 0x001E98C8
+ .word 0x001E98C8, 0x001EB620
+ .word 0x001EB620, 0x001EC8A8
+ .word 0x001EC8A8, 0x001EFDCC
+ .word 0x001EFDCC, 0x001F296C
+ .word 0x001F296C, 0x001F532C
+ .word 0x001F532C, 0x001F598C
+ .word 0x001F598C, 0x001F85D0
+ .word 0x001F85D0, 0x001FA27C
+ .word 0x001FA27C, 0x001FC144
+ .word 0x001FC144, 0x001FEA9C
+ .word 0x001FEA9C, 0x00200958
+ .word 0x00200958, 0x002022D0
+ .word 0x002022D0, 0x002029FC
+ .word 0x002029FC, 0x00202A1C
+ .word 0x00202A1C, 0x00204474
+ .word 0x00204474, 0x00205444
+ .word 0x00205444, 0x00206A98
+ .word 0x00206A98, 0x00209AA8
+ .word 0x00209AA8, 0x0020C308
+ .word 0x0020C308, 0x0020EB30
+ .word 0x0020EB30, 0x0020F23C
+ .word 0x0020F23C, 0x0020F89C
+ .word 0x0020F89C, 0x0021027C
+ .word 0x0021027C, 0x00211990
+ .word 0x00211990, 0x00212644
+ .word 0x00212644, 0x00213C68
+ .word 0x00213C68, 0x00214198
+ .word 0x00214198, 0x00215708
+ .word 0x00215708, 0x00217900
+ .word 0x00217900, 0x00219460
+ .word 0x00219460, 0x00219ADC
+ .word 0x00219ADC, 0x0021B7C4
+ .word 0x0021B7C4, 0x0021E3BC
+ .word 0x0021E3BC, 0x0021F560
+ .word 0x0021F560, 0x002210F0
+ .word 0x002210F0, 0x0022312C
+ .word 0x0022312C, 0x002262D0
+ .word 0x002262D0, 0x00228614
+ .word 0x00228614, 0x00228EAC
+ .word 0x00228EAC, 0x00229E18
+ .word 0x00229E18, 0x0022D6C0
+ .word 0x0022D6C0, 0x0023050C
+ .word 0x0023050C, 0x00238108
+ .word 0x00238108, 0x0023B454
+ .word 0x0023B454, 0x0023CC60
+ .word 0x0023CC60, 0x0023EF54
+ .word 0x0023EF54, 0x00243078
+ .word 0x00243078, 0x002448B4
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x002448BC ; chunk size
+ .incbin "baserom.nds", 0x22ADB5C, 0x2448B4
+ .balign 512, 255
diff --git a/files/FILE_237400.s b/files/FILE_237400.s
new file mode 100644
index 00000000..45907862
--- /dev/null
+++ b/files/FILE_237400.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x237400, 0x4680
+ .balign 512, 255
diff --git a/files/FILE_23BC00.s b/files/FILE_23BC00.s
new file mode 100644
index 00000000..72123ecb
--- /dev/null
+++ b/files/FILE_23BC00.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x23BC00, 0x28500
+ .balign 512, 255
diff --git a/files/FILE_24F2600_debug_particle.narc.s b/files/FILE_24F2600_debug_particle.narc.s
new file mode 100644
index 00000000..9b2a1196
--- /dev/null
+++ b/files/FILE_24F2600_debug_particle.narc.s
@@ -0,0 +1,30 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00000BC8 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x0000001C ; chunk size
+ .short 2 ; number of files
+ .balign 4
+ .word 0x00000000, 0x0000029C
+ .word 0x0000029C, 0x00000B84
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00000B8C ; chunk size
+ .incbin "baserom.nds", 0x24F2644, 0xB84
+ .balign 512, 255
diff --git a/files/FILE_24F3200_zone_event_release.narc.s b/files/FILE_24F3200_zone_event_release.narc.s
new file mode 100644
index 00000000..3bb1817c
--- /dev/null
+++ b/files/FILE_24F3200_zone_event_release.narc.s
@@ -0,0 +1,540 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x000222F4 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x0000100C ; chunk size
+ .short 512 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000010
+ .word 0x00000010, 0x000002C0
+ .word 0x000002C0, 0x000007DC
+ .word 0x000007DC, 0x00000898
+ .word 0x00000898, 0x000008B4
+ .word 0x000008B4, 0x00000988
+ .word 0x00000988, 0x00000A10
+ .word 0x00000A10, 0x00000AC4
+ .word 0x00000AC4, 0x00000B6C
+ .word 0x00000B6C, 0x00000C38
+ .word 0x00000C38, 0x00000E0C
+ .word 0x00000E0C, 0x00000EAC
+ .word 0x00000EAC, 0x00000F78
+ .word 0x00000F78, 0x00000FE0
+ .word 0x00000FE0, 0x00001138
+ .word 0x00001138, 0x00001210
+ .word 0x00001210, 0x000012C8
+ .word 0x000012C8, 0x00001318
+ .word 0x00001318, 0x00001380
+ .word 0x00001380, 0x000013E8
+ .word 0x000013E8, 0x00001430
+ .word 0x00001430, 0x0000144C
+ .word 0x0000144C, 0x00001468
+ .word 0x00001468, 0x00001510
+ .word 0x00001510, 0x00001578
+ .word 0x00001578, 0x000015E0
+ .word 0x000015E0, 0x0000161C
+ .word 0x0000161C, 0x00001740
+ .word 0x00001740, 0x00001884
+ .word 0x00001884, 0x0000190C
+ .word 0x0000190C, 0x00001928
+ .word 0x00001928, 0x00001944
+ .word 0x00001944, 0x00001C50
+ .word 0x00001C50, 0x00001D0C
+ .word 0x00001D0C, 0x00001E70
+ .word 0x00001E70, 0x00001F04
+ .word 0x00001F04, 0x00001F8C
+ .word 0x00001F8C, 0x00002198
+ .word 0x00002198, 0x0000249C
+ .word 0x0000249C, 0x00002710
+ .word 0x00002710, 0x0000276C
+ .word 0x0000276C, 0x000027A8
+ .word 0x000027A8, 0x000027E4
+ .word 0x000027E4, 0x00002860
+ .word 0x00002860, 0x00002C6C
+ .word 0x00002C6C, 0x00002D28
+ .word 0x00002D28, 0x00002DEC
+ .word 0x00002DEC, 0x00002EA0
+ .word 0x00002EA0, 0x00002F28
+ .word 0x00002F28, 0x00002FB0
+ .word 0x00002FB0, 0x00003058
+ .word 0x00003058, 0x000030C0
+ .word 0x000030C0, 0x0000313C
+ .word 0x0000313C, 0x000031A4
+ .word 0x000031A4, 0x0000322C
+ .word 0x0000322C, 0x000032B4
+ .word 0x000032B4, 0x000032F0
+ .word 0x000032F0, 0x0000334C
+ .word 0x0000334C, 0x00003688
+ .word 0x00003688, 0x00003704
+ .word 0x00003704, 0x0000378C
+ .word 0x0000378C, 0x00003814
+ .word 0x00003814, 0x00003870
+ .word 0x00003870, 0x000038AC
+ .word 0x000038AC, 0x00003DC0
+ .word 0x00003DC0, 0x00003E7C
+ .word 0x00003E7C, 0x00003F0C
+ .word 0x00003F0C, 0x00003FC8
+ .word 0x00003FC8, 0x0000409C
+ .word 0x0000409C, 0x00004144
+ .word 0x00004144, 0x00004210
+ .word 0x00004210, 0x000042B8
+ .word 0x000042B8, 0x00004360
+ .word 0x00004360, 0x000043E8
+ .word 0x000043E8, 0x00004484
+ .word 0x00004484, 0x0000450C
+ .word 0x0000450C, 0x00004574
+ .word 0x00004574, 0x0000461C
+ .word 0x0000461C, 0x00004658
+ .word 0x00004658, 0x000046F0
+ .word 0x000046F0, 0x0000476C
+ .word 0x0000476C, 0x000047A8
+ .word 0x000047A8, 0x00004804
+ .word 0x00004804, 0x000048A8
+ .word 0x000048A8, 0x000048B8
+ .word 0x000048B8, 0x00004E7C
+ .word 0x00004E7C, 0x00004F38
+ .word 0x00004F38, 0x00004FE4
+ .word 0x00004FE4, 0x00005020
+ .word 0x00005020, 0x0000505C
+ .word 0x0000505C, 0x000050D4
+ .word 0x000050D4, 0x00005110
+ .word 0x00005110, 0x00005188
+ .word 0x00005188, 0x000051C4
+ .word 0x000051C4, 0x0000523C
+ .word 0x0000523C, 0x00005278
+ .word 0x00005278, 0x000052B4
+ .word 0x000052B4, 0x000052F0
+ .word 0x000052F0, 0x0000532C
+ .word 0x0000532C, 0x00005368
+ .word 0x00005368, 0x0000541C
+ .word 0x0000541C, 0x000054A4
+ .word 0x000054A4, 0x0000550C
+ .word 0x0000550C, 0x00005568
+ .word 0x00005568, 0x00005598
+ .word 0x00005598, 0x00005674
+ .word 0x00005674, 0x0000571C
+ .word 0x0000571C, 0x000057A4
+ .word 0x000057A4, 0x0000582C
+ .word 0x0000582C, 0x00005874
+ .word 0x00005874, 0x0000591C
+ .word 0x0000591C, 0x00005A44
+ .word 0x00005A44, 0x00005AE0
+ .word 0x00005AE0, 0x00005B10
+ .word 0x00005B10, 0x00005B4C
+ .word 0x00005B4C, 0x00005C08
+ .word 0x00005C08, 0x00005E18
+ .word 0x00005E18, 0x00006208
+ .word 0x00006208, 0x000062E4
+ .word 0x000062E4, 0x000066F8
+ .word 0x000066F8, 0x000067C8
+ .word 0x000067C8, 0x000069AC
+ .word 0x000069AC, 0x00006A40
+ .word 0x00006A40, 0x00006AE8
+ .word 0x00006AE8, 0x00006B6C
+ .word 0x00006B6C, 0x00006C44
+ .word 0x00006C44, 0x00006CA0
+ .word 0x00006CA0, 0x00006CFC
+ .word 0x00006CFC, 0x00006D38
+ .word 0x00006D38, 0x00006D94
+ .word 0x00006D94, 0x00006E10
+ .word 0x00006E10, 0x000072C4
+ .word 0x000072C4, 0x000073C8
+ .word 0x000073C8, 0x0000745C
+ .word 0x0000745C, 0x000074E4
+ .word 0x000074E4, 0x00007704
+ .word 0x00007704, 0x00007820
+ .word 0x00007820, 0x00007928
+ .word 0x00007928, 0x00007A10
+ .word 0x00007A10, 0x00007AF8
+ .word 0x00007AF8, 0x00007BDC
+ .word 0x00007BDC, 0x00007C18
+ .word 0x00007C18, 0x00007CE0
+ .word 0x00007CE0, 0x00007D5C
+ .word 0x00007D5C, 0x00007DB8
+ .word 0x00007DB8, 0x00007E34
+ .word 0x00007E34, 0x00007E90
+ .word 0x00007E90, 0x00007F0C
+ .word 0x00007F0C, 0x00007F54
+ .word 0x00007F54, 0x000082C4
+ .word 0x000082C4, 0x00008378
+ .word 0x00008378, 0x00008400
+ .word 0x00008400, 0x000084BC
+ .word 0x000084BC, 0x0000856C
+ .word 0x0000856C, 0x00008624
+ .word 0x00008624, 0x00008720
+ .word 0x00008720, 0x000087BC
+ .word 0x000087BC, 0x000087F8
+ .word 0x000087F8, 0x000088F4
+ .word 0x000088F4, 0x00008950
+ .word 0x00008950, 0x000089AC
+ .word 0x000089AC, 0x00008A08
+ .word 0x00008A08, 0x00008A44
+ .word 0x00008A44, 0x00008AD4
+ .word 0x00008AD4, 0x00008C9C
+ .word 0x00008C9C, 0x00008D58
+ .word 0x00008D58, 0x000090DC
+ .word 0x000090DC, 0x00009190
+ .word 0x00009190, 0x00009218
+ .word 0x00009218, 0x00009274
+ .word 0x00009274, 0x000092B0
+ .word 0x000092B0, 0x000093E4
+ .word 0x000093E4, 0x00009478
+ .word 0x00009478, 0x00009500
+ .word 0x00009500, 0x00009610
+ .word 0x00009610, 0x00009648
+ .word 0x00009648, 0x000096D0
+ .word 0x000096D0, 0x00009708
+ .word 0x00009708, 0x00009790
+ .word 0x00009790, 0x000097C8
+ .word 0x000097C8, 0x00009850
+ .word 0x00009850, 0x00009888
+ .word 0x00009888, 0x00009910
+ .word 0x00009910, 0x00009948
+ .word 0x00009948, 0x00009990
+ .word 0x00009990, 0x000099F8
+ .word 0x000099F8, 0x00009A54
+ .word 0x00009A54, 0x00009DC4
+ .word 0x00009DC4, 0x00009E78
+ .word 0x00009E78, 0x00009F00
+ .word 0x00009F00, 0x00009F9C
+ .word 0x00009F9C, 0x0000A084
+ .word 0x0000A084, 0x0000A0EC
+ .word 0x0000A0EC, 0x0000A148
+ .word 0x0000A148, 0x0000A1C4
+ .word 0x0000A1C4, 0x0000A1D4
+ .word 0x0000A1D4, 0x0000A28C
+ .word 0x0000A28C, 0x0000A408
+ .word 0x0000A408, 0x0000A50C
+ .word 0x0000A50C, 0x0000A618
+ .word 0x0000A618, 0x0000A788
+ .word 0x0000A788, 0x0000AB38
+ .word 0x0000AB38, 0x0000AC34
+ .word 0x0000AC34, 0x0000AD78
+ .word 0x0000AD78, 0x0000AEB0
+ .word 0x0000AEB0, 0x0000AFD0
+ .word 0x0000AFD0, 0x0000B058
+ .word 0x0000B058, 0x0000B1D0
+ .word 0x0000B1D0, 0x0000B354
+ .word 0x0000B354, 0x0000B52C
+ .word 0x0000B52C, 0x0000B568
+ .word 0x0000B568, 0x0000B5F8
+ .word 0x0000B5F8, 0x0000B640
+ .word 0x0000B640, 0x0000B900
+ .word 0x0000B900, 0x0000B93C
+ .word 0x0000B93C, 0x0000BBE0
+ .word 0x0000BBE0, 0x0000BF58
+ .word 0x0000BF58, 0x0000C1B4
+ .word 0x0000C1B4, 0x0000C1C4
+ .word 0x0000C1C4, 0x0000C228
+ .word 0x0000C228, 0x0000C2A4
+ .word 0x0000C2A4, 0x0000C2C0
+ .word 0x0000C2C0, 0x0000C2F0
+ .word 0x0000C2F0, 0x0000C350
+ .word 0x0000C350, 0x0000C36C
+ .word 0x0000C36C, 0x0000C3CC
+ .word 0x0000C3CC, 0x0000C3E8
+ .word 0x0000C3E8, 0x0000C404
+ .word 0x0000C404, 0x0000C420
+ .word 0x0000C420, 0x0000C43C
+ .word 0x0000C43C, 0x0000C46C
+ .word 0x0000C46C, 0x0000C4A0
+ .word 0x0000C4A0, 0x0000C4E0
+ .word 0x0000C4E0, 0x0000C520
+ .word 0x0000C520, 0x0000C5F8
+ .word 0x0000C5F8, 0x0000C614
+ .word 0x0000C614, 0x0000C630
+ .word 0x0000C630, 0x0000C868
+ .word 0x0000C868, 0x0000CCC4
+ .word 0x0000CCC4, 0x0000CDE0
+ .word 0x0000CDE0, 0x0000D23C
+ .word 0x0000D23C, 0x0000D264
+ .word 0x0000D264, 0x0000D28C
+ .word 0x0000D28C, 0x0000D29C
+ .word 0x0000D29C, 0x0000D2F4
+ .word 0x0000D2F4, 0x0000D694
+ .word 0x0000D694, 0x0000DA9C
+ .word 0x0000DA9C, 0x0000DAAC
+ .word 0x0000DAAC, 0x0000DCA4
+ .word 0x0000DCA4, 0x0000DD00
+ .word 0x0000DD00, 0x0000DEA4
+ .word 0x0000DEA4, 0x0000E0E0
+ .word 0x0000E0E0, 0x0000E188
+ .word 0x0000E188, 0x0000E1F0
+ .word 0x0000E1F0, 0x0000E28C
+ .word 0x0000E28C, 0x0000E4A8
+ .word 0x0000E4A8, 0x0000E958
+ .word 0x0000E958, 0x0000EA04
+ .word 0x0000EA04, 0x0000EA38
+ .word 0x0000EA38, 0x0000EAC0
+ .word 0x0000EAC0, 0x0000EB3C
+ .word 0x0000EB3C, 0x0000EBF8
+ .word 0x0000EBF8, 0x0000ED98
+ .word 0x0000ED98, 0x0000EF38
+ .word 0x0000EF38, 0x0000F118
+ .word 0x0000F118, 0x0000F148
+ .word 0x0000F148, 0x0000F170
+ .word 0x0000F170, 0x0000F1B8
+ .word 0x0000F1B8, 0x0000F220
+ .word 0x0000F220, 0x0000F25C
+ .word 0x0000F25C, 0x0000F2C4
+ .word 0x0000F2C4, 0x0000F300
+ .word 0x0000F300, 0x0000F7A8
+ .word 0x0000F7A8, 0x0000F858
+ .word 0x0000F858, 0x0000F8B4
+ .word 0x0000F8B4, 0x0000F8DC
+ .word 0x0000F8DC, 0x0000F944
+ .word 0x0000F944, 0x0000F978
+ .word 0x0000F978, 0x0000F9D4
+ .word 0x0000F9D4, 0x0000FA8C
+ .word 0x0000FA8C, 0x0000FB3C
+ .word 0x0000FB3C, 0x0000FDC0
+ .word 0x0000FDC0, 0x0000FE18
+ .word 0x0000FE18, 0x0000FE78
+ .word 0x0000FE78, 0x0000FEC8
+ .word 0x0000FEC8, 0x0000FF10
+ .word 0x0000FF10, 0x0000FF68
+ .word 0x0000FF68, 0x0000FFA4
+ .word 0x0000FFA4, 0x00010008
+ .word 0x00010008, 0x00010024
+ .word 0x00010024, 0x00010080
+ .word 0x00010080, 0x000100BC
+ .word 0x000100BC, 0x000102E8
+ .word 0x000102E8, 0x0001053C
+ .word 0x0001053C, 0x00010728
+ .word 0x00010728, 0x00010848
+ .word 0x00010848, 0x00010890
+ .word 0x00010890, 0x000109E4
+ .word 0x000109E4, 0x00010AEC
+ .word 0x00010AEC, 0x00010C40
+ .word 0x00010C40, 0x00010C9C
+ .word 0x00010C9C, 0x000110A4
+ .word 0x000110A4, 0x00011110
+ .word 0x00011110, 0x00011178
+ .word 0x00011178, 0x000111E0
+ .word 0x000111E0, 0x0001128C
+ .word 0x0001128C, 0x000112C8
+ .word 0x000112C8, 0x00011370
+ .word 0x00011370, 0x000113B8
+ .word 0x000113B8, 0x000115E0
+ .word 0x000115E0, 0x00011728
+ .word 0x00011728, 0x00011954
+ .word 0x00011954, 0x00011984
+ .word 0x00011984, 0x000119B4
+ .word 0x000119B4, 0x00011A44
+ .word 0x00011A44, 0x00011AB4
+ .word 0x00011AB4, 0x00011B84
+ .word 0x00011B84, 0x00011BC4
+ .word 0x00011BC4, 0x00011C04
+ .word 0x00011C04, 0x00011CB8
+ .word 0x00011CB8, 0x00011CC8
+ .word 0x00011CC8, 0x00011ECC
+ .word 0x00011ECC, 0x00012148
+ .word 0x00012148, 0x00012184
+ .word 0x00012184, 0x000121C0
+ .word 0x000121C0, 0x00012280
+ .word 0x00012280, 0x000122A8
+ .word 0x000122A8, 0x00012468
+ .word 0x00012468, 0x000125BC
+ .word 0x000125BC, 0x000127C8
+ .word 0x000127C8, 0x00012924
+ .word 0x00012924, 0x00012AC0
+ .word 0x00012AC0, 0x00012F28
+ .word 0x00012F28, 0x00012F84
+ .word 0x00012F84, 0x00013140
+ .word 0x00013140, 0x00013500
+ .word 0x00013500, 0x000135C8
+ .word 0x000135C8, 0x000135F0
+ .word 0x000135F0, 0x000139B8
+ .word 0x000139B8, 0x00013D20
+ .word 0x00013D20, 0x00013D9C
+ .word 0x00013D9C, 0x00014270
+ .word 0x00014270, 0x00014298
+ .word 0x00014298, 0x00014314
+ .word 0x00014314, 0x0001439C
+ .word 0x0001439C, 0x00014498
+ .word 0x00014498, 0x000144F4
+ .word 0x000144F4, 0x00014954
+ .word 0x00014954, 0x00014C98
+ .word 0x00014C98, 0x00014CD4
+ .word 0x00014CD4, 0x00014E18
+ .word 0x00014E18, 0x000150E8
+ .word 0x000150E8, 0x000154C4
+ .word 0x000154C4, 0x0001559C
+ .word 0x0001559C, 0x00015644
+ .word 0x00015644, 0x00015718
+ .word 0x00015718, 0x00015D14
+ .word 0x00015D14, 0x00015D84
+ .word 0x00015D84, 0x000162F0
+ .word 0x000162F0, 0x00016358
+ .word 0x00016358, 0x00016394
+ .word 0x00016394, 0x000163FC
+ .word 0x000163FC, 0x00016438
+ .word 0x00016438, 0x000164B4
+ .word 0x000164B4, 0x00016524
+ .word 0x00016524, 0x0001690C
+ .word 0x0001690C, 0x00016954
+ .word 0x00016954, 0x00016D38
+ .word 0x00016D38, 0x00016F54
+ .word 0x00016F54, 0x00016FD8
+ .word 0x00016FD8, 0x000172A8
+ .word 0x000172A8, 0x000172E4
+ .word 0x000172E4, 0x00017320
+ .word 0x00017320, 0x00017520
+ .word 0x00017520, 0x00017588
+ .word 0x00017588, 0x00017600
+ .word 0x00017600, 0x000176A4
+ .word 0x000176A4, 0x0001795C
+ .word 0x0001795C, 0x00017AA4
+ .word 0x00017AA4, 0x00017AF4
+ .word 0x00017AF4, 0x00017F44
+ .word 0x00017F44, 0x00018040
+ .word 0x00018040, 0x0001807C
+ .word 0x0001807C, 0x000180E4
+ .word 0x000180E4, 0x000183C0
+ .word 0x000183C0, 0x00018804
+ .word 0x00018804, 0x000189FC
+ .word 0x000189FC, 0x00018E14
+ .word 0x00018E14, 0x00019098
+ .word 0x00019098, 0x0001920C
+ .word 0x0001920C, 0x00019254
+ .word 0x00019254, 0x000192B8
+ .word 0x000192B8, 0x000193D0
+ .word 0x000193D0, 0x00019450
+ .word 0x00019450, 0x0001948C
+ .word 0x0001948C, 0x000194E8
+ .word 0x000194E8, 0x00019704
+ .word 0x00019704, 0x000197A0
+ .word 0x000197A0, 0x00019874
+ .word 0x00019874, 0x0001991C
+ .word 0x0001991C, 0x00019A50
+ .word 0x00019A50, 0x00019AB8
+ .word 0x00019AB8, 0x00019AE8
+ .word 0x00019AE8, 0x00019B44
+ .word 0x00019B44, 0x00019D70
+ .word 0x00019D70, 0x00019E2C
+ .word 0x00019E2C, 0x00019EE0
+ .word 0x00019EE0, 0x00019F68
+ .word 0x00019F68, 0x00019FE4
+ .word 0x00019FE4, 0x0001A040
+ .word 0x0001A040, 0x0001A0BC
+ .word 0x0001A0BC, 0x0001A38C
+ .word 0x0001A38C, 0x0001A448
+ .word 0x0001A448, 0x0001A4DC
+ .word 0x0001A4DC, 0x0001A564
+ .word 0x0001A564, 0x0001A5D4
+ .word 0x0001A5D4, 0x0001A630
+ .word 0x0001A630, 0x0001A6A0
+ .word 0x0001A6A0, 0x0001A6FC
+ .word 0x0001A6FC, 0x0001A758
+ .word 0x0001A758, 0x0001A998
+ .word 0x0001A998, 0x0001AA4C
+ .word 0x0001AA4C, 0x0001AAD4
+ .word 0x0001AAD4, 0x0001AB84
+ .word 0x0001AB84, 0x0001AC00
+ .word 0x0001AC00, 0x0001AC5C
+ .word 0x0001AC5C, 0x0001ACB8
+ .word 0x0001ACB8, 0x0001AD1C
+ .word 0x0001AD1C, 0x0001AE7C
+ .word 0x0001AE7C, 0x0001AF18
+ .word 0x0001AF18, 0x0001AFCC
+ .word 0x0001AFCC, 0x0001B054
+ .word 0x0001B054, 0x0001B0B0
+ .word 0x0001B0B0, 0x0001B0EC
+ .word 0x0001B0EC, 0x0001B128
+ .word 0x0001B128, 0x0001B310
+ .word 0x0001B310, 0x0001B34C
+ .word 0x0001B34C, 0x0001B3E0
+ .word 0x0001B3E0, 0x0001B468
+ .word 0x0001B468, 0x0001B550
+ .word 0x0001B550, 0x0001B5EC
+ .word 0x0001B5EC, 0x0001B628
+ .word 0x0001B628, 0x0001B6A4
+ .word 0x0001B6A4, 0x0001B6E0
+ .word 0x0001B6E0, 0x0001BD5C
+ .word 0x0001BD5C, 0x0001BED4
+ .word 0x0001BED4, 0x0001C0F8
+ .word 0x0001C0F8, 0x0001C390
+ .word 0x0001C390, 0x0001C608
+ .word 0x0001C608, 0x0001C618
+ .word 0x0001C618, 0x0001C694
+ .word 0x0001C694, 0x0001C710
+ .word 0x0001C710, 0x0001C7AC
+ .word 0x0001C7AC, 0x0001C828
+ .word 0x0001C828, 0x0001C8A4
+ .word 0x0001C8A4, 0x0001C920
+ .word 0x0001C920, 0x0001C9BC
+ .word 0x0001C9BC, 0x0001CA38
+ .word 0x0001CA38, 0x0001CAB4
+ .word 0x0001CAB4, 0x0001CB30
+ .word 0x0001CB30, 0x0001CBAC
+ .word 0x0001CBAC, 0x0001CC28
+ .word 0x0001CC28, 0x0001CCA4
+ .word 0x0001CCA4, 0x0001CD20
+ .word 0x0001CD20, 0x0001CD9C
+ .word 0x0001CD9C, 0x0001CE18
+ .word 0x0001CE18, 0x0001CE94
+ .word 0x0001CE94, 0x0001CED0
+ .word 0x0001CED0, 0x0001CFAC
+ .word 0x0001CFAC, 0x0001D07C
+ .word 0x0001D07C, 0x0001D178
+ .word 0x0001D178, 0x0001D200
+ .word 0x0001D200, 0x0001D27C
+ .word 0x0001D27C, 0x0001D3AC
+ .word 0x0001D3AC, 0x0001D3E8
+ .word 0x0001D3E8, 0x0001D438
+ .word 0x0001D438, 0x0001D474
+ .word 0x0001D474, 0x0001D4BC
+ .word 0x0001D4BC, 0x0001D50C
+ .word 0x0001D50C, 0x0001D598
+ .word 0x0001D598, 0x0001D670
+ .word 0x0001D670, 0x0001D728
+ .word 0x0001D728, 0x0001D800
+ .word 0x0001D800, 0x0001D8D8
+ .word 0x0001D8D8, 0x0001D990
+ .word 0x0001D990, 0x0001DAA0
+ .word 0x0001DAA0, 0x0001DAEC
+ .word 0x0001DAEC, 0x0001DB48
+ .word 0x0001DB48, 0x0001DBB0
+ .word 0x0001DBB0, 0x0001DBEC
+ .word 0x0001DBEC, 0x0001DC1C
+ .word 0x0001DC1C, 0x0001DC38
+ .word 0x0001DC38, 0x0001DCD4
+ .word 0x0001DCD4, 0x0001DEB4
+ .word 0x0001DEB4, 0x0001E094
+ .word 0x0001E094, 0x0001E274
+ .word 0x0001E274, 0x0001E674
+ .word 0x0001E674, 0x0001EA54
+ .word 0x0001EA54, 0x0001EE34
+ .word 0x0001EE34, 0x0001F214
+ .word 0x0001F214, 0x0001F614
+ .word 0x0001F614, 0x0001FA14
+ .word 0x0001FA14, 0x0001FE14
+ .word 0x0001FE14, 0x000201F4
+ .word 0x000201F4, 0x000205F4
+ .word 0x000205F4, 0x000209F4
+ .word 0x000209F4, 0x00020DF4
+ .word 0x00020DF4, 0x000211F4
+ .word 0x000211F4, 0x00021204
+ .word 0x00021204, 0x00021214
+ .word 0x00021214, 0x00021224
+ .word 0x00021224, 0x000212C0
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x000212C8 ; chunk size
+ .incbin "baserom.nds", 0x24F4234, 0x212C0
+ .balign 512, 255
diff --git a/files/FILE_2515600_d_enc_data.narc.s b/files/FILE_2515600_d_enc_data.narc.s
new file mode 100644
index 00000000..97eb8bec
--- /dev/null
+++ b/files/FILE_2515600_d_enc_data.narc.s
@@ -0,0 +1,211 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00013504 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x000005C4 ; chunk size
+ .short 183 ; number of files
+ .balign 4
+ .word 0x00000000, 0x000001A8
+ .word 0x000001A8, 0x00000350
+ .word 0x00000350, 0x000004F8
+ .word 0x000004F8, 0x000006A0
+ .word 0x000006A0, 0x00000848
+ .word 0x00000848, 0x000009F0
+ .word 0x000009F0, 0x00000B98
+ .word 0x00000B98, 0x00000D40
+ .word 0x00000D40, 0x00000EE8
+ .word 0x00000EE8, 0x00001090
+ .word 0x00001090, 0x00001238
+ .word 0x00001238, 0x000013E0
+ .word 0x000013E0, 0x00001588
+ .word 0x00001588, 0x00001730
+ .word 0x00001730, 0x000018D8
+ .word 0x000018D8, 0x00001A80
+ .word 0x00001A80, 0x00001C28
+ .word 0x00001C28, 0x00001DD0
+ .word 0x00001DD0, 0x00001F78
+ .word 0x00001F78, 0x00002120
+ .word 0x00002120, 0x000022C8
+ .word 0x000022C8, 0x00002470
+ .word 0x00002470, 0x00002618
+ .word 0x00002618, 0x000027C0
+ .word 0x000027C0, 0x00002968
+ .word 0x00002968, 0x00002B10
+ .word 0x00002B10, 0x00002CB8
+ .word 0x00002CB8, 0x00002E60
+ .word 0x00002E60, 0x00003008
+ .word 0x00003008, 0x000031B0
+ .word 0x000031B0, 0x00003358
+ .word 0x00003358, 0x00003500
+ .word 0x00003500, 0x000036A8
+ .word 0x000036A8, 0x00003850
+ .word 0x00003850, 0x000039F8
+ .word 0x000039F8, 0x00003BA0
+ .word 0x00003BA0, 0x00003D48
+ .word 0x00003D48, 0x00003EF0
+ .word 0x00003EF0, 0x00004098
+ .word 0x00004098, 0x00004240
+ .word 0x00004240, 0x000043E8
+ .word 0x000043E8, 0x00004590
+ .word 0x00004590, 0x00004738
+ .word 0x00004738, 0x000048E0
+ .word 0x000048E0, 0x00004A88
+ .word 0x00004A88, 0x00004C30
+ .word 0x00004C30, 0x00004DD8
+ .word 0x00004DD8, 0x00004F80
+ .word 0x00004F80, 0x00005128
+ .word 0x00005128, 0x000052D0
+ .word 0x000052D0, 0x00005478
+ .word 0x00005478, 0x00005620
+ .word 0x00005620, 0x000057C8
+ .word 0x000057C8, 0x00005970
+ .word 0x00005970, 0x00005B18
+ .word 0x00005B18, 0x00005CC0
+ .word 0x00005CC0, 0x00005E68
+ .word 0x00005E68, 0x00006010
+ .word 0x00006010, 0x000061B8
+ .word 0x000061B8, 0x00006360
+ .word 0x00006360, 0x00006508
+ .word 0x00006508, 0x000066B0
+ .word 0x000066B0, 0x00006858
+ .word 0x00006858, 0x00006A00
+ .word 0x00006A00, 0x00006BA8
+ .word 0x00006BA8, 0x00006D50
+ .word 0x00006D50, 0x00006EF8
+ .word 0x00006EF8, 0x000070A0
+ .word 0x000070A0, 0x00007248
+ .word 0x00007248, 0x000073F0
+ .word 0x000073F0, 0x00007598
+ .word 0x00007598, 0x00007740
+ .word 0x00007740, 0x000078E8
+ .word 0x000078E8, 0x00007A90
+ .word 0x00007A90, 0x00007C38
+ .word 0x00007C38, 0x00007DE0
+ .word 0x00007DE0, 0x00007F88
+ .word 0x00007F88, 0x00008130
+ .word 0x00008130, 0x000082D8
+ .word 0x000082D8, 0x00008480
+ .word 0x00008480, 0x00008628
+ .word 0x00008628, 0x000087D0
+ .word 0x000087D0, 0x00008978
+ .word 0x00008978, 0x00008B20
+ .word 0x00008B20, 0x00008CC8
+ .word 0x00008CC8, 0x00008E70
+ .word 0x00008E70, 0x00009018
+ .word 0x00009018, 0x000091C0
+ .word 0x000091C0, 0x00009368
+ .word 0x00009368, 0x00009510
+ .word 0x00009510, 0x000096B8
+ .word 0x000096B8, 0x00009860
+ .word 0x00009860, 0x00009A08
+ .word 0x00009A08, 0x00009BB0
+ .word 0x00009BB0, 0x00009D58
+ .word 0x00009D58, 0x00009F00
+ .word 0x00009F00, 0x0000A0A8
+ .word 0x0000A0A8, 0x0000A250
+ .word 0x0000A250, 0x0000A3F8
+ .word 0x0000A3F8, 0x0000A5A0
+ .word 0x0000A5A0, 0x0000A748
+ .word 0x0000A748, 0x0000A8F0
+ .word 0x0000A8F0, 0x0000AA98
+ .word 0x0000AA98, 0x0000AC40
+ .word 0x0000AC40, 0x0000ADE8
+ .word 0x0000ADE8, 0x0000AF90
+ .word 0x0000AF90, 0x0000B138
+ .word 0x0000B138, 0x0000B2E0
+ .word 0x0000B2E0, 0x0000B488
+ .word 0x0000B488, 0x0000B630
+ .word 0x0000B630, 0x0000B7D8
+ .word 0x0000B7D8, 0x0000B980
+ .word 0x0000B980, 0x0000BB28
+ .word 0x0000BB28, 0x0000BCD0
+ .word 0x0000BCD0, 0x0000BE78
+ .word 0x0000BE78, 0x0000C020
+ .word 0x0000C020, 0x0000C1C8
+ .word 0x0000C1C8, 0x0000C370
+ .word 0x0000C370, 0x0000C518
+ .word 0x0000C518, 0x0000C6C0
+ .word 0x0000C6C0, 0x0000C868
+ .word 0x0000C868, 0x0000CA10
+ .word 0x0000CA10, 0x0000CBB8
+ .word 0x0000CBB8, 0x0000CD60
+ .word 0x0000CD60, 0x0000CF08
+ .word 0x0000CF08, 0x0000D0B0
+ .word 0x0000D0B0, 0x0000D258
+ .word 0x0000D258, 0x0000D400
+ .word 0x0000D400, 0x0000D5A8
+ .word 0x0000D5A8, 0x0000D750
+ .word 0x0000D750, 0x0000D8F8
+ .word 0x0000D8F8, 0x0000DAA0
+ .word 0x0000DAA0, 0x0000DC48
+ .word 0x0000DC48, 0x0000DDF0
+ .word 0x0000DDF0, 0x0000DF98
+ .word 0x0000DF98, 0x0000E140
+ .word 0x0000E140, 0x0000E2E8
+ .word 0x0000E2E8, 0x0000E490
+ .word 0x0000E490, 0x0000E638
+ .word 0x0000E638, 0x0000E7E0
+ .word 0x0000E7E0, 0x0000E988
+ .word 0x0000E988, 0x0000EB30
+ .word 0x0000EB30, 0x0000ECD8
+ .word 0x0000ECD8, 0x0000EE80
+ .word 0x0000EE80, 0x0000F028
+ .word 0x0000F028, 0x0000F1D0
+ .word 0x0000F1D0, 0x0000F378
+ .word 0x0000F378, 0x0000F520
+ .word 0x0000F520, 0x0000F6C8
+ .word 0x0000F6C8, 0x0000F870
+ .word 0x0000F870, 0x0000FA18
+ .word 0x0000FA18, 0x0000FBC0
+ .word 0x0000FBC0, 0x0000FD68
+ .word 0x0000FD68, 0x0000FF10
+ .word 0x0000FF10, 0x000100B8
+ .word 0x000100B8, 0x00010260
+ .word 0x00010260, 0x00010408
+ .word 0x00010408, 0x000105B0
+ .word 0x000105B0, 0x00010758
+ .word 0x00010758, 0x00010900
+ .word 0x00010900, 0x00010AA8
+ .word 0x00010AA8, 0x00010C50
+ .word 0x00010C50, 0x00010DF8
+ .word 0x00010DF8, 0x00010FA0
+ .word 0x00010FA0, 0x00011148
+ .word 0x00011148, 0x000112F0
+ .word 0x000112F0, 0x00011498
+ .word 0x00011498, 0x00011640
+ .word 0x00011640, 0x000117E8
+ .word 0x000117E8, 0x00011990
+ .word 0x00011990, 0x00011B38
+ .word 0x00011B38, 0x00011CE0
+ .word 0x00011CE0, 0x00011E88
+ .word 0x00011E88, 0x00012030
+ .word 0x00012030, 0x000121D8
+ .word 0x000121D8, 0x00012380
+ .word 0x00012380, 0x00012528
+ .word 0x00012528, 0x000126D0
+ .word 0x000126D0, 0x00012878
+ .word 0x00012878, 0x00012A20
+ .word 0x00012A20, 0x00012BC8
+ .word 0x00012BC8, 0x00012D70
+ .word 0x00012D70, 0x00012F18
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00012F20 ; chunk size
+ .incbin "baserom.nds", 0x2515BEC, 0x12F18
+ .balign 512, 255
diff --git a/files/FILE_2528C00_p_enc_data.narc.s b/files/FILE_2528C00_p_enc_data.narc.s
new file mode 100644
index 00000000..50d8aa26
--- /dev/null
+++ b/files/FILE_2528C00_p_enc_data.narc.s
@@ -0,0 +1,211 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00013504 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x000005C4 ; chunk size
+ .short 183 ; number of files
+ .balign 4
+ .word 0x00000000, 0x000001A8
+ .word 0x000001A8, 0x00000350
+ .word 0x00000350, 0x000004F8
+ .word 0x000004F8, 0x000006A0
+ .word 0x000006A0, 0x00000848
+ .word 0x00000848, 0x000009F0
+ .word 0x000009F0, 0x00000B98
+ .word 0x00000B98, 0x00000D40
+ .word 0x00000D40, 0x00000EE8
+ .word 0x00000EE8, 0x00001090
+ .word 0x00001090, 0x00001238
+ .word 0x00001238, 0x000013E0
+ .word 0x000013E0, 0x00001588
+ .word 0x00001588, 0x00001730
+ .word 0x00001730, 0x000018D8
+ .word 0x000018D8, 0x00001A80
+ .word 0x00001A80, 0x00001C28
+ .word 0x00001C28, 0x00001DD0
+ .word 0x00001DD0, 0x00001F78
+ .word 0x00001F78, 0x00002120
+ .word 0x00002120, 0x000022C8
+ .word 0x000022C8, 0x00002470
+ .word 0x00002470, 0x00002618
+ .word 0x00002618, 0x000027C0
+ .word 0x000027C0, 0x00002968
+ .word 0x00002968, 0x00002B10
+ .word 0x00002B10, 0x00002CB8
+ .word 0x00002CB8, 0x00002E60
+ .word 0x00002E60, 0x00003008
+ .word 0x00003008, 0x000031B0
+ .word 0x000031B0, 0x00003358
+ .word 0x00003358, 0x00003500
+ .word 0x00003500, 0x000036A8
+ .word 0x000036A8, 0x00003850
+ .word 0x00003850, 0x000039F8
+ .word 0x000039F8, 0x00003BA0
+ .word 0x00003BA0, 0x00003D48
+ .word 0x00003D48, 0x00003EF0
+ .word 0x00003EF0, 0x00004098
+ .word 0x00004098, 0x00004240
+ .word 0x00004240, 0x000043E8
+ .word 0x000043E8, 0x00004590
+ .word 0x00004590, 0x00004738
+ .word 0x00004738, 0x000048E0
+ .word 0x000048E0, 0x00004A88
+ .word 0x00004A88, 0x00004C30
+ .word 0x00004C30, 0x00004DD8
+ .word 0x00004DD8, 0x00004F80
+ .word 0x00004F80, 0x00005128
+ .word 0x00005128, 0x000052D0
+ .word 0x000052D0, 0x00005478
+ .word 0x00005478, 0x00005620
+ .word 0x00005620, 0x000057C8
+ .word 0x000057C8, 0x00005970
+ .word 0x00005970, 0x00005B18
+ .word 0x00005B18, 0x00005CC0
+ .word 0x00005CC0, 0x00005E68
+ .word 0x00005E68, 0x00006010
+ .word 0x00006010, 0x000061B8
+ .word 0x000061B8, 0x00006360
+ .word 0x00006360, 0x00006508
+ .word 0x00006508, 0x000066B0
+ .word 0x000066B0, 0x00006858
+ .word 0x00006858, 0x00006A00
+ .word 0x00006A00, 0x00006BA8
+ .word 0x00006BA8, 0x00006D50
+ .word 0x00006D50, 0x00006EF8
+ .word 0x00006EF8, 0x000070A0
+ .word 0x000070A0, 0x00007248
+ .word 0x00007248, 0x000073F0
+ .word 0x000073F0, 0x00007598
+ .word 0x00007598, 0x00007740
+ .word 0x00007740, 0x000078E8
+ .word 0x000078E8, 0x00007A90
+ .word 0x00007A90, 0x00007C38
+ .word 0x00007C38, 0x00007DE0
+ .word 0x00007DE0, 0x00007F88
+ .word 0x00007F88, 0x00008130
+ .word 0x00008130, 0x000082D8
+ .word 0x000082D8, 0x00008480
+ .word 0x00008480, 0x00008628
+ .word 0x00008628, 0x000087D0
+ .word 0x000087D0, 0x00008978
+ .word 0x00008978, 0x00008B20
+ .word 0x00008B20, 0x00008CC8
+ .word 0x00008CC8, 0x00008E70
+ .word 0x00008E70, 0x00009018
+ .word 0x00009018, 0x000091C0
+ .word 0x000091C0, 0x00009368
+ .word 0x00009368, 0x00009510
+ .word 0x00009510, 0x000096B8
+ .word 0x000096B8, 0x00009860
+ .word 0x00009860, 0x00009A08
+ .word 0x00009A08, 0x00009BB0
+ .word 0x00009BB0, 0x00009D58
+ .word 0x00009D58, 0x00009F00
+ .word 0x00009F00, 0x0000A0A8
+ .word 0x0000A0A8, 0x0000A250
+ .word 0x0000A250, 0x0000A3F8
+ .word 0x0000A3F8, 0x0000A5A0
+ .word 0x0000A5A0, 0x0000A748
+ .word 0x0000A748, 0x0000A8F0
+ .word 0x0000A8F0, 0x0000AA98
+ .word 0x0000AA98, 0x0000AC40
+ .word 0x0000AC40, 0x0000ADE8
+ .word 0x0000ADE8, 0x0000AF90
+ .word 0x0000AF90, 0x0000B138
+ .word 0x0000B138, 0x0000B2E0
+ .word 0x0000B2E0, 0x0000B488
+ .word 0x0000B488, 0x0000B630
+ .word 0x0000B630, 0x0000B7D8
+ .word 0x0000B7D8, 0x0000B980
+ .word 0x0000B980, 0x0000BB28
+ .word 0x0000BB28, 0x0000BCD0
+ .word 0x0000BCD0, 0x0000BE78
+ .word 0x0000BE78, 0x0000C020
+ .word 0x0000C020, 0x0000C1C8
+ .word 0x0000C1C8, 0x0000C370
+ .word 0x0000C370, 0x0000C518
+ .word 0x0000C518, 0x0000C6C0
+ .word 0x0000C6C0, 0x0000C868
+ .word 0x0000C868, 0x0000CA10
+ .word 0x0000CA10, 0x0000CBB8
+ .word 0x0000CBB8, 0x0000CD60
+ .word 0x0000CD60, 0x0000CF08
+ .word 0x0000CF08, 0x0000D0B0
+ .word 0x0000D0B0, 0x0000D258
+ .word 0x0000D258, 0x0000D400
+ .word 0x0000D400, 0x0000D5A8
+ .word 0x0000D5A8, 0x0000D750
+ .word 0x0000D750, 0x0000D8F8
+ .word 0x0000D8F8, 0x0000DAA0
+ .word 0x0000DAA0, 0x0000DC48
+ .word 0x0000DC48, 0x0000DDF0
+ .word 0x0000DDF0, 0x0000DF98
+ .word 0x0000DF98, 0x0000E140
+ .word 0x0000E140, 0x0000E2E8
+ .word 0x0000E2E8, 0x0000E490
+ .word 0x0000E490, 0x0000E638
+ .word 0x0000E638, 0x0000E7E0
+ .word 0x0000E7E0, 0x0000E988
+ .word 0x0000E988, 0x0000EB30
+ .word 0x0000EB30, 0x0000ECD8
+ .word 0x0000ECD8, 0x0000EE80
+ .word 0x0000EE80, 0x0000F028
+ .word 0x0000F028, 0x0000F1D0
+ .word 0x0000F1D0, 0x0000F378
+ .word 0x0000F378, 0x0000F520
+ .word 0x0000F520, 0x0000F6C8
+ .word 0x0000F6C8, 0x0000F870
+ .word 0x0000F870, 0x0000FA18
+ .word 0x0000FA18, 0x0000FBC0
+ .word 0x0000FBC0, 0x0000FD68
+ .word 0x0000FD68, 0x0000FF10
+ .word 0x0000FF10, 0x000100B8
+ .word 0x000100B8, 0x00010260
+ .word 0x00010260, 0x00010408
+ .word 0x00010408, 0x000105B0
+ .word 0x000105B0, 0x00010758
+ .word 0x00010758, 0x00010900
+ .word 0x00010900, 0x00010AA8
+ .word 0x00010AA8, 0x00010C50
+ .word 0x00010C50, 0x00010DF8
+ .word 0x00010DF8, 0x00010FA0
+ .word 0x00010FA0, 0x00011148
+ .word 0x00011148, 0x000112F0
+ .word 0x000112F0, 0x00011498
+ .word 0x00011498, 0x00011640
+ .word 0x00011640, 0x000117E8
+ .word 0x000117E8, 0x00011990
+ .word 0x00011990, 0x00011B38
+ .word 0x00011B38, 0x00011CE0
+ .word 0x00011CE0, 0x00011E88
+ .word 0x00011E88, 0x00012030
+ .word 0x00012030, 0x000121D8
+ .word 0x000121D8, 0x00012380
+ .word 0x00012380, 0x00012528
+ .word 0x00012528, 0x000126D0
+ .word 0x000126D0, 0x00012878
+ .word 0x00012878, 0x00012A20
+ .word 0x00012A20, 0x00012BC8
+ .word 0x00012BC8, 0x00012D70
+ .word 0x00012D70, 0x00012F18
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00012F20 ; chunk size
+ .incbin "baserom.nds", 0x25291EC, 0x12F18
+ .balign 512, 255
diff --git a/files/FILE_253C200_build_model.narc.s b/files/FILE_253C200_build_model.narc.s
new file mode 100644
index 00000000..62d4006c
--- /dev/null
+++ b/files/FILE_253C200_build_model.narc.s
@@ -0,0 +1,563 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x001D45CC ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x000010C4 ; chunk size
+ .short 535 ; number of files
+ .balign 4
+ .word 0x00000000, 0x0000076C
+ .word 0x0000076C, 0x00001280
+ .word 0x00001280, 0x00001590
+ .word 0x00001590, 0x000027AC
+ .word 0x000027AC, 0x00004E04
+ .word 0x00004E04, 0x00006E68
+ .word 0x00006E68, 0x0000793C
+ .word 0x0000793C, 0x000081A8
+ .word 0x000081A8, 0x0000B624
+ .word 0x0000B624, 0x0000DE44
+ .word 0x0000DE44, 0x00010654
+ .word 0x00010654, 0x000126E8
+ .word 0x000126E8, 0x00015774
+ .word 0x00015774, 0x00019300
+ .word 0x00019300, 0x0001C040
+ .word 0x0001C040, 0x0001C528
+ .word 0x0001C528, 0x0001CD64
+ .word 0x0001CD64, 0x0001F9DC
+ .word 0x0001F9DC, 0x00021024
+ .word 0x00021024, 0x000224F8
+ .word 0x000224F8, 0x00024B98
+ .word 0x00024B98, 0x00026E10
+ .word 0x00026E10, 0x00028738
+ .word 0x00028738, 0x0002AD84
+ .word 0x0002AD84, 0x0002D738
+ .word 0x0002D738, 0x0002FC5C
+ .word 0x0002FC5C, 0x00030898
+ .word 0x00030898, 0x0003236C
+ .word 0x0003236C, 0x000326CC
+ .word 0x000326CC, 0x00032A10
+ .word 0x00032A10, 0x00034BCC
+ .word 0x00034BCC, 0x0003614C
+ .word 0x0003614C, 0x00037694
+ .word 0x00037694, 0x00037910
+ .word 0x00037910, 0x0003A174
+ .word 0x0003A174, 0x0003A42C
+ .word 0x0003A42C, 0x0003A8AC
+ .word 0x0003A8AC, 0x0003C96C
+ .word 0x0003C96C, 0x0003E440
+ .word 0x0003E440, 0x000402EC
+ .word 0x000402EC, 0x000422F4
+ .word 0x000422F4, 0x00042AC4
+ .word 0x00042AC4, 0x0004341C
+ .word 0x0004341C, 0x00043B70
+ .word 0x00043B70, 0x00044584
+ .word 0x00044584, 0x0004503C
+ .word 0x0004503C, 0x00045904
+ .word 0x00045904, 0x000473D8
+ .word 0x000473D8, 0x00048DE8
+ .word 0x00048DE8, 0x0004AF4C
+ .word 0x0004AF4C, 0x0004B210
+ .word 0x0004B210, 0x0004CC08
+ .word 0x0004CC08, 0x0004E424
+ .word 0x0004E424, 0x0004F5F0
+ .word 0x0004F5F0, 0x00052774
+ .word 0x00052774, 0x000543C4
+ .word 0x000543C4, 0x00055E3C
+ .word 0x00055E3C, 0x00056168
+ .word 0x00056168, 0x0005642C
+ .word 0x0005642C, 0x000566F0
+ .word 0x000566F0, 0x000568E8
+ .word 0x000568E8, 0x00056D78
+ .word 0x00056D78, 0x00058CEC
+ .word 0x00058CEC, 0x0005AB78
+ .word 0x0005AB78, 0x0005BBEC
+ .word 0x0005BBEC, 0x0005E744
+ .word 0x0005E744, 0x0005EC24
+ .word 0x0005EC24, 0x0005F0D0
+ .word 0x0005F0D0, 0x0005F57C
+ .word 0x0005F57C, 0x0005FA38
+ .word 0x0005FA38, 0x000604C8
+ .word 0x000604C8, 0x00061DD4
+ .word 0x00061DD4, 0x00062864
+ .word 0x00062864, 0x000633D4
+ .word 0x000633D4, 0x00063AFC
+ .word 0x00063AFC, 0x00064088
+ .word 0x00064088, 0x000648FC
+ .word 0x000648FC, 0x00064D90
+ .word 0x00064D90, 0x00065078
+ .word 0x00065078, 0x0006572C
+ .word 0x0006572C, 0x000660A8
+ .word 0x000660A8, 0x00066A34
+ .word 0x00066A34, 0x00067484
+ .word 0x00067484, 0x00067D10
+ .word 0x00067D10, 0x00068428
+ .word 0x00068428, 0x00068D30
+ .word 0x00068D30, 0x000695B0
+ .word 0x000695B0, 0x0006A010
+ .word 0x0006A010, 0x0006A3B8
+ .word 0x0006A3B8, 0x0006AD44
+ .word 0x0006AD44, 0x0006B048
+ .word 0x0006B048, 0x0006B4B4
+ .word 0x0006B4B4, 0x0006B85C
+ .word 0x0006B85C, 0x0006C2E0
+ .word 0x0006C2E0, 0x0006C688
+ .word 0x0006C688, 0x0006CA0C
+ .word 0x0006CA0C, 0x0006CD10
+ .word 0x0006CD10, 0x0006D39C
+ .word 0x0006D39C, 0x0006DA28
+ .word 0x0006DA28, 0x0006E0B4
+ .word 0x0006E0B4, 0x0006E544
+ .word 0x0006E544, 0x0006F15C
+ .word 0x0006F15C, 0x0006F368
+ .word 0x0006F368, 0x0006F650
+ .word 0x0006F650, 0x0006FF28
+ .word 0x0006FF28, 0x00070B7C
+ .word 0x00070B7C, 0x00071940
+ .word 0x00071940, 0x00071C2C
+ .word 0x00071C2C, 0x000720AC
+ .word 0x000720AC, 0x000724E4
+ .word 0x000724E4, 0x00075990
+ .word 0x00075990, 0x00075D38
+ .word 0x00075D38, 0x00076A8C
+ .word 0x00076A8C, 0x000773A4
+ .word 0x000773A4, 0x000790C4
+ .word 0x000790C4, 0x00079E2C
+ .word 0x00079E2C, 0x0007B198
+ .word 0x0007B198, 0x0007B498
+ .word 0x0007B498, 0x0007B798
+ .word 0x0007B798, 0x0007C614
+ .word 0x0007C614, 0x0007D248
+ .word 0x0007D248, 0x0007DB48
+ .word 0x0007DB48, 0x0007E954
+ .word 0x0007E954, 0x000806CC
+ .word 0x000806CC, 0x00080EAC
+ .word 0x00080EAC, 0x000810B8
+ .word 0x000810B8, 0x000812C4
+ .word 0x000812C4, 0x000814D0
+ .word 0x000814D0, 0x00081900
+ .word 0x00081900, 0x00081B0C
+ .word 0x00081B0C, 0x00083178
+ .word 0x00083178, 0x00084888
+ .word 0x00084888, 0x0008509C
+ .word 0x0008509C, 0x000852A8
+ .word 0x000852A8, 0x000854B4
+ .word 0x000854B4, 0x00086274
+ .word 0x00086274, 0x00087034
+ .word 0x00087034, 0x00087360
+ .word 0x00087360, 0x00087708
+ .word 0x00087708, 0x00087AB0
+ .word 0x00087AB0, 0x00087E58
+ .word 0x00087E58, 0x00088064
+ .word 0x00088064, 0x00088270
+ .word 0x00088270, 0x0008847C
+ .word 0x0008847C, 0x00088688
+ .word 0x00088688, 0x000889C4
+ .word 0x000889C4, 0x0008A528
+ .word 0x0008A528, 0x0008D044
+ .word 0x0008D044, 0x0008F414
+ .word 0x0008F414, 0x0008FD90
+ .word 0x0008FD90, 0x00090148
+ .word 0x00090148, 0x0009045C
+ .word 0x0009045C, 0x000911C4
+ .word 0x000911C4, 0x000913D0
+ .word 0x000913D0, 0x000916E0
+ .word 0x000916E0, 0x00091FC4
+ .word 0x00091FC4, 0x00092C20
+ .word 0x00092C20, 0x00092EF4
+ .word 0x00092EF4, 0x00093964
+ .word 0x00093964, 0x00094160
+ .word 0x00094160, 0x00094F20
+ .word 0x00094F20, 0x00095B08
+ .word 0x00095B08, 0x00095E08
+ .word 0x00095E08, 0x00096834
+ .word 0x00096834, 0x00097260
+ .word 0x00097260, 0x00097C8C
+ .word 0x00097C8C, 0x000986B8
+ .word 0x000986B8, 0x000990E4
+ .word 0x000990E4, 0x00099B10
+ .word 0x00099B10, 0x0009A53C
+ .word 0x0009A53C, 0x0009AF68
+ .word 0x0009AF68, 0x0009B994
+ .word 0x0009B994, 0x0009C3C0
+ .word 0x0009C3C0, 0x0009CDEC
+ .word 0x0009CDEC, 0x0009D818
+ .word 0x0009D818, 0x0009E434
+ .word 0x0009E434, 0x0009EDEC
+ .word 0x0009EDEC, 0x0009F9D4
+ .word 0x0009F9D4, 0x0009FC94
+ .word 0x0009FC94, 0x000A0F5C
+ .word 0x000A0F5C, 0x000A126C
+ .word 0x000A126C, 0x000A157C
+ .word 0x000A157C, 0x000A1F08
+ .word 0x000A1F08, 0x000A2884
+ .word 0x000A2884, 0x000A3210
+ .word 0x000A3210, 0x000A3B8C
+ .word 0x000A3B8C, 0x000A6408
+ .word 0x000A6408, 0x000A6898
+ .word 0x000A6898, 0x000A8678
+ .word 0x000A8678, 0x000AA270
+ .word 0x000AA270, 0x000AC538
+ .word 0x000AC538, 0x000ACD84
+ .word 0x000ACD84, 0x000AD8C8
+ .word 0x000AD8C8, 0x000AEAE4
+ .word 0x000AEAE4, 0x000B1E58
+ .word 0x000B1E58, 0x000B4BD4
+ .word 0x000B4BD4, 0x000B5928
+ .word 0x000B5928, 0x000B79F4
+ .word 0x000B79F4, 0x000B96D8
+ .word 0x000B96D8, 0x000BA42C
+ .word 0x000BA42C, 0x000BB190
+ .word 0x000BB190, 0x000BBEE4
+ .word 0x000BBEE4, 0x000BDAB8
+ .word 0x000BDAB8, 0x000BF1E8
+ .word 0x000BF1E8, 0x000BFF3C
+ .word 0x000BFF3C, 0x000C1ED0
+ .word 0x000C1ED0, 0x000C3EC4
+ .word 0x000C3EC4, 0x000C6560
+ .word 0x000C6560, 0x000C7D2C
+ .word 0x000C7D2C, 0x000C8FD0
+ .word 0x000C8FD0, 0x000C9A34
+ .word 0x000C9A34, 0x000CA57C
+ .word 0x000CA57C, 0x000CE708
+ .word 0x000CE708, 0x000D0590
+ .word 0x000D0590, 0x000D38B8
+ .word 0x000D38B8, 0x000D460C
+ .word 0x000D460C, 0x000D7128
+ .word 0x000D7128, 0x000D8F08
+ .word 0x000D8F08, 0x000D9A50
+ .word 0x000D9A50, 0x000DBB1C
+ .word 0x000DBB1C, 0x000DC870
+ .word 0x000DC870, 0x000DE484
+ .word 0x000DE484, 0x000DEFC8
+ .word 0x000DEFC8, 0x000E1048
+ .word 0x000E1048, 0x000E46E0
+ .word 0x000E46E0, 0x000E5378
+ .word 0x000E5378, 0x000E73E8
+ .word 0x000E73E8, 0x000E960C
+ .word 0x000E960C, 0x000ECB90
+ .word 0x000ECB90, 0x000ED910
+ .word 0x000ED910, 0x000EDD90
+ .word 0x000EDD90, 0x000EEAE4
+ .word 0x000EEAE4, 0x000EF838
+ .word 0x000EF838, 0x000F1524
+ .word 0x000F1524, 0x000F33FC
+ .word 0x000F33FC, 0x000F4094
+ .word 0x000F4094, 0x000F66E0
+ .word 0x000F66E0, 0x000F7330
+ .word 0x000F7330, 0x000F8240
+ .word 0x000F8240, 0x000F8604
+ .word 0x000F8604, 0x000F89C8
+ .word 0x000F89C8, 0x000F8D8C
+ .word 0x000F8D8C, 0x000FA63C
+ .word 0x000FA63C, 0x000FB4A4
+ .word 0x000FB4A4, 0x000FC9E4
+ .word 0x000FC9E4, 0x000FE9E4
+ .word 0x000FE9E4, 0x000FEEA0
+ .word 0x000FEEA0, 0x000FF9C0
+ .word 0x000FF9C0, 0x0010074C
+ .word 0x0010074C, 0x00100A0C
+ .word 0x00100A0C, 0x0010104C
+ .word 0x0010104C, 0x00101810
+ .word 0x00101810, 0x00102B1C
+ .word 0x00102B1C, 0x00103354
+ .word 0x00103354, 0x001037E4
+ .word 0x001037E4, 0x00103C74
+ .word 0x00103C74, 0x00104664
+ .word 0x00104664, 0x001052C0
+ .word 0x001052C0, 0x001058C8
+ .word 0x001058C8, 0x00106048
+ .word 0x00106048, 0x001066F0
+ .word 0x001066F0, 0x00106C0C
+ .word 0x00106C0C, 0x00108550
+ .word 0x00108550, 0x0010A510
+ .word 0x0010A510, 0x0010AD6C
+ .word 0x0010AD6C, 0x0010D820
+ .word 0x0010D820, 0x0010DFE4
+ .word 0x0010DFE4, 0x0010EC08
+ .word 0x0010EC08, 0x0010F74C
+ .word 0x0010F74C, 0x00110290
+ .word 0x00110290, 0x00110EB4
+ .word 0x00110EB4, 0x0011157C
+ .word 0x0011157C, 0x00111A0C
+ .word 0x00111A0C, 0x00112550
+ .word 0x00112550, 0x00113094
+ .word 0x00113094, 0x0011402C
+ .word 0x0011402C, 0x00114E58
+ .word 0x00114E58, 0x00115854
+ .word 0x00115854, 0x001164A4
+ .word 0x001164A4, 0x0011734C
+ .word 0x0011734C, 0x0011830C
+ .word 0x0011830C, 0x001189C8
+ .word 0x001189C8, 0x00118CD8
+ .word 0x00118CD8, 0x00119004
+ .word 0x00119004, 0x00119304
+ .word 0x00119304, 0x0011999C
+ .word 0x0011999C, 0x00119CAC
+ .word 0x00119CAC, 0x0011A25C
+ .word 0x0011A25C, 0x0011A844
+ .word 0x0011A844, 0x0011ADD0
+ .word 0x0011ADD0, 0x0011B39C
+ .word 0x0011B39C, 0x0011B978
+ .word 0x0011B978, 0x0011BF64
+ .word 0x0011BF64, 0x0011C4E8
+ .word 0x0011C4E8, 0x0011CB28
+ .word 0x0011CB28, 0x0011D168
+ .word 0x0011D168, 0x0011D7A8
+ .word 0x0011D7A8, 0x0011DDE8
+ .word 0x0011DDE8, 0x0011E154
+ .word 0x0011E154, 0x0012106C
+ .word 0x0012106C, 0x00123938
+ .word 0x00123938, 0x00125AD0
+ .word 0x00125AD0, 0x00127400
+ .word 0x00127400, 0x00127990
+ .word 0x00127990, 0x00127F68
+ .word 0x00127F68, 0x00128A3C
+ .word 0x00128A3C, 0x00129510
+ .word 0x00129510, 0x0012A0FC
+ .word 0x0012A0FC, 0x0012AD18
+ .word 0x0012AD18, 0x0012B7D8
+ .word 0x0012B7D8, 0x0012C298
+ .word 0x0012C298, 0x0012CA94
+ .word 0x0012CA94, 0x0012CF40
+ .word 0x0012CF40, 0x0012D3FC
+ .word 0x0012D3FC, 0x0012E9B8
+ .word 0x0012E9B8, 0x00130C14
+ .word 0x00130C14, 0x0013171C
+ .word 0x0013171C, 0x00132224
+ .word 0x00132224, 0x00132D2C
+ .word 0x00132D2C, 0x00133834
+ .word 0x00133834, 0x0013433C
+ .word 0x0013433C, 0x00135878
+ .word 0x00135878, 0x00136DB4
+ .word 0x00136DB4, 0x001382F0
+ .word 0x001382F0, 0x0013982C
+ .word 0x0013982C, 0x0013AD68
+ .word 0x0013AD68, 0x0013C2A4
+ .word 0x0013C2A4, 0x0013D7E0
+ .word 0x0013D7E0, 0x0013ED1C
+ .word 0x0013ED1C, 0x0013FA08
+ .word 0x0013FA08, 0x001406F4
+ .word 0x001406F4, 0x00141BE0
+ .word 0x00141BE0, 0x0014278C
+ .word 0x0014278C, 0x0014334C
+ .word 0x0014334C, 0x00143F0C
+ .word 0x00143F0C, 0x00144ACC
+ .word 0x00144ACC, 0x0014568C
+ .word 0x0014568C, 0x001459A8
+ .word 0x001459A8, 0x00145CC4
+ .word 0x00145CC4, 0x00145FE0
+ .word 0x00145FE0, 0x001462FC
+ .word 0x001462FC, 0x00146618
+ .word 0x00146618, 0x00146934
+ .word 0x00146934, 0x00146C50
+ .word 0x00146C50, 0x00146F6C
+ .word 0x00146F6C, 0x00147288
+ .word 0x00147288, 0x001475A4
+ .word 0x001475A4, 0x001478C0
+ .word 0x001478C0, 0x00147BDC
+ .word 0x00147BDC, 0x00147EF8
+ .word 0x00147EF8, 0x00148214
+ .word 0x00148214, 0x00148530
+ .word 0x00148530, 0x0014884C
+ .word 0x0014884C, 0x00148B68
+ .word 0x00148B68, 0x00148E84
+ .word 0x00148E84, 0x001491A0
+ .word 0x001491A0, 0x001494BC
+ .word 0x001494BC, 0x001497D8
+ .word 0x001497D8, 0x00149AF4
+ .word 0x00149AF4, 0x00149E10
+ .word 0x00149E10, 0x0014A12C
+ .word 0x0014A12C, 0x0014A44C
+ .word 0x0014A44C, 0x0014A76C
+ .word 0x0014A76C, 0x0014AA8C
+ .word 0x0014AA8C, 0x0014ADAC
+ .word 0x0014ADAC, 0x0014B0CC
+ .word 0x0014B0CC, 0x0014BDDC
+ .word 0x0014BDDC, 0x0014CAEC
+ .word 0x0014CAEC, 0x0014D7FC
+ .word 0x0014D7FC, 0x0014E50C
+ .word 0x0014E50C, 0x0014ED60
+ .word 0x0014ED60, 0x0014F5A8
+ .word 0x0014F5A8, 0x0014FDEC
+ .word 0x0014FDEC, 0x00150634
+ .word 0x00150634, 0x00150954
+ .word 0x00150954, 0x00150C74
+ .word 0x00150C74, 0x00150F94
+ .word 0x00150F94, 0x001512B4
+ .word 0x001512B4, 0x00151AEC
+ .word 0x00151AEC, 0x00152358
+ .word 0x00152358, 0x00153358
+ .word 0x00153358, 0x001537D8
+ .word 0x001537D8, 0x00153C58
+ .word 0x00153C58, 0x001540D8
+ .word 0x001540D8, 0x00154568
+ .word 0x00154568, 0x001549E8
+ .word 0x001549E8, 0x00154E78
+ .word 0x00154E78, 0x001552F8
+ .word 0x001552F8, 0x00155778
+ .word 0x00155778, 0x00155C08
+ .word 0x00155C08, 0x00156098
+ .word 0x00156098, 0x00156528
+ .word 0x00156528, 0x001569B8
+ .word 0x001569B8, 0x00156E38
+ .word 0x00156E38, 0x001572C8
+ .word 0x001572C8, 0x00157758
+ .word 0x00157758, 0x00157BD8
+ .word 0x00157BD8, 0x00158058
+ .word 0x00158058, 0x001584D8
+ .word 0x001584D8, 0x00158958
+ .word 0x00158958, 0x00158DE8
+ .word 0x00158DE8, 0x00159268
+ .word 0x00159268, 0x001596F8
+ .word 0x001596F8, 0x00159B78
+ .word 0x00159B78, 0x00159FF8
+ .word 0x00159FF8, 0x0015A488
+ .word 0x0015A488, 0x0015A918
+ .word 0x0015A918, 0x0015ADA8
+ .word 0x0015ADA8, 0x0015B228
+ .word 0x0015B228, 0x0015B6A8
+ .word 0x0015B6A8, 0x0015BB38
+ .word 0x0015BB38, 0x0015BFB8
+ .word 0x0015BFB8, 0x0015C448
+ .word 0x0015C448, 0x0015C8C8
+ .word 0x0015C8C8, 0x0015CD58
+ .word 0x0015CD58, 0x0015D1E8
+ .word 0x0015D1E8, 0x0015D668
+ .word 0x0015D668, 0x0015DAF8
+ .word 0x0015DAF8, 0x0015F034
+ .word 0x0015F034, 0x0015F678
+ .word 0x0015F678, 0x00160BB4
+ .word 0x00160BB4, 0x00161044
+ .word 0x00161044, 0x00161DAC
+ .word 0x00161DAC, 0x001625A0
+ .word 0x001625A0, 0x001644F4
+ .word 0x001644F4, 0x00165B78
+ .word 0x00165B78, 0x00167288
+ .word 0x00167288, 0x00167708
+ .word 0x00167708, 0x001679C8
+ .word 0x001679C8, 0x00167CDC
+ .word 0x00167CDC, 0x00167FF0
+ .word 0x00167FF0, 0x00168304
+ .word 0x00168304, 0x00168618
+ .word 0x00168618, 0x001695D0
+ .word 0x001695D0, 0x0016A624
+ .word 0x0016A624, 0x0016B908
+ .word 0x0016B908, 0x0016C324
+ .word 0x0016C324, 0x0016C5B4
+ .word 0x0016C5B4, 0x0016CA60
+ .word 0x0016CA60, 0x0016E5F8
+ .word 0x0016E5F8, 0x0017015C
+ .word 0x0017015C, 0x001707B0
+ .word 0x001707B0, 0x00170D04
+ .word 0x00170D04, 0x00173A20
+ .word 0x00173A20, 0x00173ECC
+ .word 0x00173ECC, 0x00175250
+ .word 0x00175250, 0x001758E0
+ .word 0x001758E0, 0x001765CC
+ .word 0x001765CC, 0x00178864
+ .word 0x00178864, 0x0017AB30
+ .word 0x0017AB30, 0x0017D188
+ .word 0x0017D188, 0x0017F1EC
+ .word 0x0017F1EC, 0x00181F04
+ .word 0x00181F04, 0x00182C00
+ .word 0x00182C00, 0x00184418
+ .word 0x00184418, 0x0018609C
+ .word 0x0018609C, 0x0018651C
+ .word 0x0018651C, 0x00187FBC
+ .word 0x00187FBC, 0x00189A5C
+ .word 0x00189A5C, 0x0018B534
+ .word 0x0018B534, 0x0018D00C
+ .word 0x0018D00C, 0x0018EB28
+ .word 0x0018EB28, 0x00190644
+ .word 0x00190644, 0x001930CC
+ .word 0x001930CC, 0x00195B4C
+ .word 0x00195B4C, 0x00195E4C
+ .word 0x00195E4C, 0x0019614C
+ .word 0x0019614C, 0x0019644C
+ .word 0x0019644C, 0x00196E34
+ .word 0x00196E34, 0x001976E4
+ .word 0x001976E4, 0x0019BDE0
+ .word 0x0019BDE0, 0x0019C62C
+ .word 0x0019C62C, 0x0019CE88
+ .word 0x0019CE88, 0x0019D784
+ .word 0x0019D784, 0x0019DC50
+ .word 0x0019DC50, 0x0019F95C
+ .word 0x0019F95C, 0x001A0658
+ .word 0x001A0658, 0x001A1B88
+ .word 0x001A1B88, 0x001A53D0
+ .word 0x001A53D0, 0x001A5EF4
+ .word 0x001A5EF4, 0x001A6984
+ .word 0x001A6984, 0x001A7428
+ .word 0x001A7428, 0x001A7EA8
+ .word 0x001A7EA8, 0x001A89A4
+ .word 0x001A89A4, 0x001A8D10
+ .word 0x001A8D10, 0x001A90A0
+ .word 0x001A90A0, 0x001A96C0
+ .word 0x001A96C0, 0x001A9CE0
+ .word 0x001A9CE0, 0x001AA4B4
+ .word 0x001AA4B4, 0x001AA944
+ .word 0x001AA944, 0x001AADC8
+ .word 0x001AADC8, 0x001AB0D8
+ .word 0x001AB0D8, 0x001AB3D8
+ .word 0x001AB3D8, 0x001ABE50
+ .word 0x001ABE50, 0x001ACA64
+ .word 0x001ACA64, 0x001AE344
+ .word 0x001AE344, 0x001AFD50
+ .word 0x001AFD50, 0x001B191C
+ .word 0x001B191C, 0x001B2398
+ .word 0x001B2398, 0x001B4178
+ .word 0x001B4178, 0x001B6574
+ .word 0x001B6574, 0x001B7004
+ .word 0x001B7004, 0x001B77B8
+ .word 0x001B77B8, 0x001B7AA0
+ .word 0x001B7AA0, 0x001B866C
+ .word 0x001B866C, 0x001B91F8
+ .word 0x001B91F8, 0x001BA5F8
+ .word 0x001BA5F8, 0x001BC724
+ .word 0x001BC724, 0x001BD868
+ .word 0x001BD868, 0x001BE99C
+ .word 0x001BE99C, 0x001BFAE0
+ .word 0x001BFAE0, 0x001C0C14
+ .word 0x001C0C14, 0x001C1D58
+ .word 0x001C1D58, 0x001C2E8C
+ .word 0x001C2E8C, 0x001C4114
+ .word 0x001C4114, 0x001C4AFC
+ .word 0x001C4AFC, 0x001C5820
+ .word 0x001C5820, 0x001C5D6C
+ .word 0x001C5D6C, 0x001C61FC
+ .word 0x001C61FC, 0x001C658C
+ .word 0x001C658C, 0x001C691C
+ .word 0x001C691C, 0x001C6CAC
+ .word 0x001C6CAC, 0x001C7834
+ .word 0x001C7834, 0x001C859C
+ .word 0x001C859C, 0x001CA9C0
+ .word 0x001CA9C0, 0x001CAE50
+ .word 0x001CAE50, 0x001CB644
+ .word 0x001CB644, 0x001CBAF0
+ .word 0x001CBAF0, 0x001CCC34
+ .word 0x001CCC34, 0x001CDD68
+ .word 0x001CDD68, 0x001CEEAC
+ .word 0x001CEEAC, 0x001CFFE0
+ .word 0x001CFFE0, 0x001D1124
+ .word 0x001D1124, 0x001D2258
+ .word 0x001D2258, 0x001D34E0
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x001D34E8 ; chunk size
+ .incbin "baserom.nds", 0x253D2EC, 0x1D34E0
+ .balign 512, 255
diff --git a/files/FILE_264200.s b/files/FILE_264200.s
new file mode 100644
index 00000000..5e654387
--- /dev/null
+++ b/files/FILE_264200.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x264200, 0x6E80
+ .balign 512, 255
diff --git a/files/FILE_26B200.s b/files/FILE_26B200.s
new file mode 100644
index 00000000..0c91220f
--- /dev/null
+++ b/files/FILE_26B200.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x26B200, 0x17CE0
+ .balign 512, 255
diff --git a/files/FILE_2710800_build_model_matshp.dat.s b/files/FILE_2710800_build_model_matshp.dat.s
new file mode 100644
index 00000000..936e81a5
--- /dev/null
+++ b/files/FILE_2710800_build_model_matshp.dat.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x2710800, 0x1724
+ .balign 512, 255
diff --git a/files/FILE_2712000_map_matrix.narc.s b/files/FILE_2712000_map_matrix.narc.s
new file mode 100644
index 00000000..a1329c6a
--- /dev/null
+++ b/files/FILE_2712000_map_matrix.narc.s
@@ -0,0 +1,273 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00002E18 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x000007B4 ; chunk size
+ .short 245 ; number of files
+ .balign 4
+ .word 0x00000000, 0x0000119C
+ .word 0x0000119C, 0x000011A9
+ .word 0x000011AC, 0x00001378
+ .word 0x00001378, 0x00001389
+ .word 0x0000138C, 0x0000139F
+ .word 0x000013A0, 0x000013B1
+ .word 0x000013B4, 0x000013C5
+ .word 0x000013C8, 0x000013E9
+ .word 0x000013EC, 0x000013FF
+ .word 0x00001400, 0x00001411
+ .word 0x00001414, 0x00001427
+ .word 0x00001428, 0x00001439
+ .word 0x0000143C, 0x00001453
+ .word 0x00001454, 0x0000146B
+ .word 0x0000146C, 0x0000147F
+ .word 0x00001480, 0x00001491
+ .word 0x00001494, 0x000014A5
+ .word 0x000014A8, 0x000014B9
+ .word 0x000014BC, 0x000014CF
+ .word 0x000014D0, 0x000014E1
+ .word 0x000014E4, 0x000014F7
+ .word 0x000014F8, 0x0000150B
+ .word 0x0000150C, 0x00001523
+ .word 0x00001524, 0x0000153B
+ .word 0x0000153C, 0x00001557
+ .word 0x00001558, 0x00001569
+ .word 0x0000156C, 0x0000157D
+ .word 0x00001580, 0x00001591
+ .word 0x00001594, 0x000015A5
+ .word 0x000015A8, 0x000015B9
+ .word 0x000015BC, 0x000015CD
+ .word 0x000015D0, 0x000015E1
+ .word 0x000015E4, 0x000015F5
+ .word 0x000015F8, 0x00001609
+ .word 0x0000160C, 0x0000161D
+ .word 0x00001620, 0x00001631
+ .word 0x00001634, 0x00001645
+ .word 0x00001648, 0x00001659
+ .word 0x0000165C, 0x0000166D
+ .word 0x00001670, 0x00001681
+ .word 0x00001684, 0x00001695
+ .word 0x00001698, 0x000016A9
+ .word 0x000016AC, 0x000016BD
+ .word 0x000016C0, 0x000016DB
+ .word 0x000016DC, 0x000016F3
+ .word 0x000016F4, 0x0000170B
+ .word 0x0000170C, 0x00001723
+ .word 0x00001724, 0x00001735
+ .word 0x00001738, 0x00001749
+ .word 0x0000174C, 0x00001763
+ .word 0x00001764, 0x0000177B
+ .word 0x0000177C, 0x0000178F
+ .word 0x00001790, 0x000017A7
+ .word 0x000017A8, 0x000017B9
+ .word 0x000017BC, 0x000017D3
+ .word 0x000017D4, 0x000017EB
+ .word 0x000017EC, 0x000017FD
+ .word 0x00001800, 0x00001813
+ .word 0x00001814, 0x00001835
+ .word 0x00001838, 0x00001849
+ .word 0x0000184C, 0x00001863
+ .word 0x00001864, 0x00001875
+ .word 0x00001878, 0x00001889
+ .word 0x0000188C, 0x0000189D
+ .word 0x000018A0, 0x000018B1
+ .word 0x000018B4, 0x000018C5
+ .word 0x000018C8, 0x000018D9
+ .word 0x000018DC, 0x000018ED
+ .word 0x000018F0, 0x00001901
+ .word 0x00001904, 0x00001915
+ .word 0x00001918, 0x00001929
+ .word 0x0000192C, 0x0000193D
+ .word 0x00001940, 0x00001951
+ .word 0x00001954, 0x00001965
+ .word 0x00001968, 0x00001983
+ .word 0x00001984, 0x0000199B
+ .word 0x0000199C, 0x000019AD
+ .word 0x000019B0, 0x000019C3
+ .word 0x000019C4, 0x000019D9
+ .word 0x000019DC, 0x000019ED
+ .word 0x000019F0, 0x00001A01
+ .word 0x00001A04, 0x00001A15
+ .word 0x00001A18, 0x00001A29
+ .word 0x00001A2C, 0x00001A3D
+ .word 0x00001A40, 0x00001A57
+ .word 0x00001A58, 0x00001A69
+ .word 0x00001A6C, 0x00001A7D
+ .word 0x00001A80, 0x00001A93
+ .word 0x00001A94, 0x00001AA5
+ .word 0x00001AA8, 0x00001ABB
+ .word 0x00001ABC, 0x00001ACD
+ .word 0x00001AD0, 0x00001AE1
+ .word 0x00001AE4, 0x00001AF5
+ .word 0x00001AF8, 0x00001B09
+ .word 0x00001B0C, 0x00001B1D
+ .word 0x00001B20, 0x00001B33
+ .word 0x00001B34, 0x00001B47
+ .word 0x00001B48, 0x00001B5B
+ .word 0x00001B5C, 0x00001B6D
+ .word 0x00001B70, 0x00001B85
+ .word 0x00001B88, 0x00001B99
+ .word 0x00001B9C, 0x00001BB7
+ .word 0x00001BB8, 0x00001BD3
+ .word 0x00001BD4, 0x00001BE5
+ .word 0x00001BE8, 0x00001BFF
+ .word 0x00001C00, 0x00001C17
+ .word 0x00001C18, 0x00001C29
+ .word 0x00001C2C, 0x00001C43
+ .word 0x00001C44, 0x00001C5B
+ .word 0x00001C5C, 0x00001C6D
+ .word 0x00001C70, 0x00001C81
+ .word 0x00001C84, 0x00001C95
+ .word 0x00001C98, 0x00001CA7
+ .word 0x00001CA8, 0x00001CB7
+ .word 0x00001CB8, 0x00001CC7
+ .word 0x00001CC8, 0x00001CD7
+ .word 0x00001CD8, 0x00001CE6
+ .word 0x00001CE8, 0x00001CF6
+ .word 0x00001CF8, 0x00001D06
+ .word 0x00001D08, 0x00001D16
+ .word 0x00001D18, 0x00001D26
+ .word 0x00001D28, 0x00001D36
+ .word 0x00001D38, 0x00001D46
+ .word 0x00001D48, 0x00001D55
+ .word 0x00001D58, 0x00001D65
+ .word 0x00001D68, 0x00001D75
+ .word 0x00001D78, 0x00001D88
+ .word 0x00001D88, 0x00001D98
+ .word 0x00001D98, 0x00001DA8
+ .word 0x00001DA8, 0x00001DB8
+ .word 0x00001DB8, 0x00001DC8
+ .word 0x00001DC8, 0x00001DD8
+ .word 0x00001DD8, 0x00001DE8
+ .word 0x00001DE8, 0x00001DF8
+ .word 0x00001DF8, 0x00001E08
+ .word 0x00001E08, 0x00001E18
+ .word 0x00001E18, 0x00001E28
+ .word 0x00001E28, 0x00001E38
+ .word 0x00001E38, 0x00001E48
+ .word 0x00001E48, 0x00001E58
+ .word 0x00001E58, 0x00001E68
+ .word 0x00001E68, 0x00001E78
+ .word 0x00001E78, 0x00001E88
+ .word 0x00001E88, 0x00001E98
+ .word 0x00001E98, 0x00001EA8
+ .word 0x00001EA8, 0x00001EB9
+ .word 0x00001EBC, 0x00001ECD
+ .word 0x00001ED0, 0x00001EE1
+ .word 0x00001EE4, 0x00001EF2
+ .word 0x00001EF4, 0x00001F02
+ .word 0x00001F04, 0x00001F12
+ .word 0x00001F14, 0x00001F22
+ .word 0x00001F24, 0x00001F32
+ .word 0x00001F34, 0x00001F42
+ .word 0x00001F44, 0x00001F52
+ .word 0x00001F54, 0x00001F64
+ .word 0x00001F64, 0x00001F74
+ .word 0x00001F74, 0x00001F84
+ .word 0x00001F84, 0x00001F94
+ .word 0x00001F94, 0x00001FA4
+ .word 0x00001FA4, 0x00001FB4
+ .word 0x00001FB4, 0x00001FC5
+ .word 0x00001FC8, 0x00001FD9
+ .word 0x00001FDC, 0x00001FED
+ .word 0x00001FF0, 0x00002001
+ .word 0x00002004, 0x00002014
+ .word 0x00002014, 0x00002026
+ .word 0x00002028, 0x00002038
+ .word 0x00002038, 0x00002048
+ .word 0x00002048, 0x0000205A
+ .word 0x0000205C, 0x0000206C
+ .word 0x0000206C, 0x0000207D
+ .word 0x00002080, 0x00002092
+ .word 0x00002094, 0x000020A6
+ .word 0x000020A8, 0x000020BA
+ .word 0x000020BC, 0x000020CE
+ .word 0x000020D0, 0x000020E2
+ .word 0x000020E4, 0x000020F6
+ .word 0x000020F8, 0x0000210A
+ .word 0x0000210C, 0x0000211C
+ .word 0x0000211C, 0x0000212C
+ .word 0x0000212C, 0x0000213C
+ .word 0x0000213C, 0x0000214C
+ .word 0x0000214C, 0x0000215D
+ .word 0x00002160, 0x00002171
+ .word 0x00002174, 0x00002185
+ .word 0x00002188, 0x00002199
+ .word 0x0000219C, 0x000021AD
+ .word 0x000021B0, 0x000021C1
+ .word 0x000021C4, 0x000021D5
+ .word 0x000021D8, 0x000021E9
+ .word 0x000021EC, 0x000021FE
+ .word 0x00002200, 0x00002212
+ .word 0x00002214, 0x00002225
+ .word 0x00002228, 0x00002239
+ .word 0x0000223C, 0x0000224D
+ .word 0x00002250, 0x00002261
+ .word 0x00002264, 0x00002275
+ .word 0x00002278, 0x00002289
+ .word 0x0000228C, 0x0000229D
+ .word 0x000022A0, 0x000022B1
+ .word 0x000022B4, 0x000022C4
+ .word 0x000022C4, 0x000022D4
+ .word 0x000022D4, 0x000022E6
+ .word 0x000022E8, 0x000022F8
+ .word 0x000022F8, 0x00002308
+ .word 0x00002308, 0x00002316
+ .word 0x00002318, 0x00002326
+ .word 0x00002328, 0x00002338
+ .word 0x00002338, 0x00002348
+ .word 0x00002348, 0x00002358
+ .word 0x00002358, 0x00002368
+ .word 0x00002368, 0x00002378
+ .word 0x00002378, 0x00002388
+ .word 0x00002388, 0x00002398
+ .word 0x00002398, 0x000023A8
+ .word 0x000023A8, 0x000023B8
+ .word 0x000023B8, 0x000023C9
+ .word 0x000023CC, 0x000023DD
+ .word 0x000023E0, 0x000023F1
+ .word 0x000023F4, 0x00002405
+ .word 0x00002408, 0x00002419
+ .word 0x0000241C, 0x0000242D
+ .word 0x00002430, 0x00002441
+ .word 0x00002444, 0x00002455
+ .word 0x00002458, 0x00002469
+ .word 0x0000246C, 0x0000247D
+ .word 0x00002480, 0x00002491
+ .word 0x00002494, 0x000024A5
+ .word 0x000024A8, 0x000024BF
+ .word 0x000024C0, 0x000024D2
+ .word 0x000024D4, 0x000024E3
+ .word 0x000024E4, 0x000024F3
+ .word 0x000024F4, 0x00002503
+ .word 0x00002504, 0x00002516
+ .word 0x00002518, 0x00002526
+ .word 0x00002528, 0x0000253A
+ .word 0x0000253C, 0x0000254E
+ .word 0x00002550, 0x00002561
+ .word 0x00002564, 0x00002577
+ .word 0x00002578, 0x000025EB
+ .word 0x000025EC, 0x00002603
+ .word 0x00002604, 0x0000261B
+ .word 0x0000261C, 0x00002629
+ .word 0x0000262C, 0x00002639
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00002644 ; chunk size
+ .incbin "baserom.nds", 0x27127DC, 0x263C
+ .balign 512, 255
diff --git a/files/FILE_2715000_area_data.narc.s b/files/FILE_2715000_area_data.narc.s
new file mode 100644
index 00000000..f800633f
--- /dev/null
+++ b/files/FILE_2715000_area_data.narc.s
@@ -0,0 +1,87 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x000003E4 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x000001E4 ; chunk size
+ .short 59 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000008
+ .word 0x00000008, 0x00000010
+ .word 0x00000010, 0x00000018
+ .word 0x00000018, 0x00000020
+ .word 0x00000020, 0x00000028
+ .word 0x00000028, 0x00000030
+ .word 0x00000030, 0x00000038
+ .word 0x00000038, 0x00000040
+ .word 0x00000040, 0x00000048
+ .word 0x00000048, 0x00000050
+ .word 0x00000050, 0x00000058
+ .word 0x00000058, 0x00000060
+ .word 0x00000060, 0x00000068
+ .word 0x00000068, 0x00000070
+ .word 0x00000070, 0x00000078
+ .word 0x00000078, 0x00000080
+ .word 0x00000080, 0x00000088
+ .word 0x00000088, 0x00000090
+ .word 0x00000090, 0x00000098
+ .word 0x00000098, 0x000000A0
+ .word 0x000000A0, 0x000000A8
+ .word 0x000000A8, 0x000000B0
+ .word 0x000000B0, 0x000000B8
+ .word 0x000000B8, 0x000000C0
+ .word 0x000000C0, 0x000000C8
+ .word 0x000000C8, 0x000000D0
+ .word 0x000000D0, 0x000000D8
+ .word 0x000000D8, 0x000000E0
+ .word 0x000000E0, 0x000000E8
+ .word 0x000000E8, 0x000000F0
+ .word 0x000000F0, 0x000000F8
+ .word 0x000000F8, 0x00000100
+ .word 0x00000100, 0x00000108
+ .word 0x00000108, 0x00000110
+ .word 0x00000110, 0x00000118
+ .word 0x00000118, 0x00000120
+ .word 0x00000120, 0x00000128
+ .word 0x00000128, 0x00000130
+ .word 0x00000130, 0x00000138
+ .word 0x00000138, 0x00000140
+ .word 0x00000140, 0x00000148
+ .word 0x00000148, 0x00000150
+ .word 0x00000150, 0x00000158
+ .word 0x00000158, 0x00000160
+ .word 0x00000160, 0x00000168
+ .word 0x00000168, 0x00000170
+ .word 0x00000170, 0x00000178
+ .word 0x00000178, 0x00000180
+ .word 0x00000180, 0x00000188
+ .word 0x00000188, 0x00000190
+ .word 0x00000190, 0x00000198
+ .word 0x00000198, 0x000001A0
+ .word 0x000001A0, 0x000001A8
+ .word 0x000001A8, 0x000001B0
+ .word 0x000001B0, 0x000001B8
+ .word 0x000001B8, 0x000001C0
+ .word 0x000001C0, 0x000001C8
+ .word 0x000001C8, 0x000001D0
+ .word 0x000001D0, 0x000001D8
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x000001E0 ; chunk size
+ .incbin "baserom.nds", 0x271520C, 0x1D8
+ .balign 512, 255
diff --git a/files/FILE_2715400_area_build.narc.s b/files/FILE_2715400_area_build.narc.s
new file mode 100644
index 00000000..6d17c448
--- /dev/null
+++ b/files/FILE_2715400_area_build.narc.s
@@ -0,0 +1,83 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00001274 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x000001C4 ; chunk size
+ .short 55 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000042
+ .word 0x00000044, 0x000000F2
+ .word 0x000000F4, 0x0000020A
+ .word 0x0000020C, 0x00000238
+ .word 0x00000238, 0x00000272
+ .word 0x00000274, 0x000002A0
+ .word 0x000002A0, 0x000002D0
+ .word 0x000002D0, 0x000002F8
+ .word 0x000002F8, 0x0000031C
+ .word 0x0000031C, 0x00000344
+ .word 0x00000344, 0x00000368
+ .word 0x00000368, 0x00000394
+ .word 0x00000394, 0x000003B0
+ .word 0x000003B0, 0x000003C8
+ .word 0x000003C8, 0x000003EC
+ .word 0x000003EC, 0x0000040E
+ .word 0x00000410, 0x000004A4
+ .word 0x000004A4, 0x000004EE
+ .word 0x000004F0, 0x00000558
+ .word 0x00000558, 0x00000566
+ .word 0x00000568, 0x0000057C
+ .word 0x0000057C, 0x00000582
+ .word 0x00000584, 0x0000058A
+ .word 0x0000058C, 0x0000059A
+ .word 0x0000059C, 0x000005A4
+ .word 0x000005A4, 0x000005BA
+ .word 0x000005BC, 0x000005DE
+ .word 0x000005E0, 0x00000684
+ .word 0x00000684, 0x0000073C
+ .word 0x0000073C, 0x000007FA
+ .word 0x000007FC, 0x000008C2
+ .word 0x000008C4, 0x0000097C
+ .word 0x0000097C, 0x00000996
+ .word 0x00000998, 0x00000A52
+ .word 0x00000A54, 0x00000B0E
+ .word 0x00000B10, 0x00000BD6
+ .word 0x00000BD8, 0x00000BF4
+ .word 0x00000BF4, 0x00000CAC
+ .word 0x00000CAC, 0x00000D68
+ .word 0x00000D68, 0x00000D70
+ .word 0x00000D70, 0x00000D76
+ .word 0x00000D78, 0x00000D88
+ .word 0x00000D88, 0x00000D96
+ .word 0x00000D98, 0x00000D9A
+ .word 0x00000D9C, 0x00000E6E
+ .word 0x00000E70, 0x00000E82
+ .word 0x00000E84, 0x00000EA2
+ .word 0x00000EA4, 0x00000EA8
+ .word 0x00000EA8, 0x00000EB0
+ .word 0x00000EB0, 0x00000EBA
+ .word 0x00000EBC, 0x00000ECC
+ .word 0x00000ECC, 0x00000ED4
+ .word 0x00000ED4, 0x00000FA4
+ .word 0x00000FA4, 0x00000FB2
+ .word 0x00000FB4, 0x00001086
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00001090 ; chunk size
+ .incbin "baserom.nds", 0x27155EC, 0x1088
+ .balign 512, 255
diff --git a/files/FILE_2716800_areabm_texset.narc.s b/files/FILE_2716800_areabm_texset.narc.s
new file mode 100644
index 00000000..004d26f4
--- /dev/null
+++ b/files/FILE_2716800_areabm_texset.narc.s
@@ -0,0 +1,83 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x001254B4 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x000001C4 ; chunk size
+ .short 55 ; number of files
+ .balign 4
+ .word 0x00000000, 0x000100F0
+ .word 0x000100F0, 0x00016334
+ .word 0x00016334, 0x00028578
+ .word 0x00028578, 0x00030C08
+ .word 0x00030C08, 0x0003C344
+ .word 0x0003C344, 0x00045AFC
+ .word 0x00045AFC, 0x0004F0E4
+ .word 0x0004F0E4, 0x000584E8
+ .word 0x000584E8, 0x000604CC
+ .word 0x000604CC, 0x000693F4
+ .word 0x000693F4, 0x0007170C
+ .word 0x0007170C, 0x000782B0
+ .word 0x000782B0, 0x0007DF60
+ .word 0x0007DF60, 0x00082E94
+ .word 0x00082E94, 0x0008A728
+ .word 0x0008A728, 0x00091BC4
+ .word 0x00091BC4, 0x00096624
+ .word 0x00096624, 0x0009A84C
+ .word 0x0009A84C, 0x0009EF50
+ .word 0x0009EF50, 0x0009FD84
+ .word 0x0009FD84, 0x000A0C9C
+ .word 0x000A0C9C, 0x000A10DC
+ .word 0x000A10DC, 0x000A151C
+ .word 0x000A151C, 0x000A22E0
+ .word 0x000A22E0, 0x000A3000
+ .word 0x000A3000, 0x000A3658
+ .word 0x000A3658, 0x000A4AD8
+ .word 0x000A4AD8, 0x000AA6D4
+ .word 0x000AA6D4, 0x000B2214
+ .word 0x000B2214, 0x000BA4FC
+ .word 0x000BA4FC, 0x000C2BFC
+ .word 0x000C2BFC, 0x000CA73C
+ .word 0x000CA73C, 0x000CC8E0
+ .word 0x000CC8E0, 0x000D4674
+ .word 0x000D4674, 0x000DC4C4
+ .word 0x000DC4C4, 0x000E4A84
+ .word 0x000E4A84, 0x000E6734
+ .word 0x000E6734, 0x000EE274
+ .word 0x000EE274, 0x000F5FBC
+ .word 0x000F5FBC, 0x000F68BC
+ .word 0x000F68BC, 0x000F7C9C
+ .word 0x000F7C9C, 0x000F8E8C
+ .word 0x000F8E8C, 0x000FC588
+ .word 0x000FC588, 0x000FC58C
+ .word 0x000FC58C, 0x00106D00
+ .word 0x00106D00, 0x0010961C
+ .word 0x0010961C, 0x0010A1E8
+ .word 0x0010A1E8, 0x0010A730
+ .word 0x0010A730, 0x0010B438
+ .word 0x0010B438, 0x0010C444
+ .word 0x0010C444, 0x0010EA9C
+ .word 0x0010EA9C, 0x001114AC
+ .word 0x001114AC, 0x00119FC0
+ .word 0x00119FC0, 0x0011AB54
+ .word 0x0011AB54, 0x001252C8
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x001252D0 ; chunk size
+ .incbin "baserom.nds", 0x27169EC, 0x1252C8
+ .balign 512, 255
diff --git a/files/FILE_283000.s b/files/FILE_283000.s
new file mode 100644
index 00000000..6b536136
--- /dev/null
+++ b/files/FILE_283000.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x283000, 0x100
+ .balign 512, 255
diff --git a/files/FILE_283200.s b/files/FILE_283200.s
new file mode 100644
index 00000000..461d9ac6
--- /dev/null
+++ b/files/FILE_283200.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x283200, 0x2400
+ .balign 512, 255
diff --git a/files/FILE_283BE00_map_tex_set.narc.s b/files/FILE_283BE00_map_tex_set.narc.s
new file mode 100644
index 00000000..a8597e0f
--- /dev/null
+++ b/files/FILE_283BE00_map_tex_set.narc.s
@@ -0,0 +1,86 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00132D50 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x000001DC ; chunk size
+ .short 58 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00005B98
+ .word 0x00005B98, 0x00007BA4
+ .word 0x00007BA4, 0x0000BB34
+ .word 0x0000BB34, 0x0000C320
+ .word 0x0000C320, 0x0000CE10
+ .word 0x0000CE10, 0x000110AC
+ .word 0x000110AC, 0x0001C294
+ .word 0x0001C294, 0x00027200
+ .word 0x00027200, 0x00031C10
+ .word 0x00031C10, 0x0003C328
+ .word 0x0003C328, 0x000464E4
+ .word 0x000464E4, 0x000516C0
+ .word 0x000516C0, 0x0005BECC
+ .word 0x0005BECC, 0x00066E54
+ .word 0x00066E54, 0x00070028
+ .word 0x00070028, 0x0007AEA8
+ .word 0x0007AEA8, 0x000851A0
+ .word 0x000851A0, 0x0008F5B0
+ .word 0x0008F5B0, 0x00099F38
+ .word 0x00099F38, 0x000A4348
+ .word 0x000A4348, 0x000A5CD8
+ .word 0x000A5CD8, 0x000A927C
+ .word 0x000A927C, 0x000A9C30
+ .word 0x000A9C30, 0x000AA674
+ .word 0x000AA674, 0x000AAEE8
+ .word 0x000AAEE8, 0x000AE5C8
+ .word 0x000AE5C8, 0x000AEF38
+ .word 0x000AEF38, 0x000AF984
+ .word 0x000AF984, 0x000B07C0
+ .word 0x000B07C0, 0x000B26DC
+ .word 0x000B26DC, 0x000B4378
+ .word 0x000B4378, 0x000B8540
+ .word 0x000B8540, 0x000B9BB4
+ .word 0x000B9BB4, 0x000BB0F8
+ .word 0x000BB0F8, 0x000C10D4
+ .word 0x000C10D4, 0x000C202C
+ .word 0x000C202C, 0x000C3CB4
+ .word 0x000C3CB4, 0x000C7674
+ .word 0x000C7674, 0x000C82E0
+ .word 0x000C82E0, 0x000C8BFC
+ .word 0x000C8BFC, 0x000C9F30
+ .word 0x000C9F30, 0x000CB1F0
+ .word 0x000CB1F0, 0x000D008C
+ .word 0x000D008C, 0x000DA230
+ .word 0x000DA230, 0x000DF108
+ .word 0x000DF108, 0x000E2DA0
+ .word 0x000E2DA0, 0x000E6FCC
+ .word 0x000E6FCC, 0x000E9C70
+ .word 0x000E9C70, 0x000F3A0C
+ .word 0x000F3A0C, 0x000FEBC0
+ .word 0x000FEBC0, 0x0010895C
+ .word 0x0010895C, 0x00112F54
+ .word 0x00112F54, 0x0011E444
+ .word 0x0011E444, 0x001281E0
+ .word 0x001281E0, 0x0012CF90
+ .word 0x0012CF90, 0x00130980
+ .word 0x00130980, 0x0013113C
+ .word 0x0013113C, 0x00132B4C
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00132B54 ; chunk size
+ .incbin "baserom.nds", 0x283C004, 0x132B4C
+ .balign 512, 255
diff --git a/files/FILE_285600.s b/files/FILE_285600.s
new file mode 100644
index 00000000..02c6eb09
--- /dev/null
+++ b/files/FILE_285600.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x285600, 0x5C0
+ .balign 512, 255
diff --git a/files/FILE_285C00.s b/files/FILE_285C00.s
new file mode 100644
index 00000000..70fab4a8
--- /dev/null
+++ b/files/FILE_285C00.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x285C00, 0xF00
+ .balign 512, 255
diff --git a/files/FILE_286C00.s b/files/FILE_286C00.s
new file mode 100644
index 00000000..7d4ff42d
--- /dev/null
+++ b/files/FILE_286C00.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x286C00, 0x1900
+ .balign 512, 255
diff --git a/files/FILE_288600.s b/files/FILE_288600.s
new file mode 100644
index 00000000..cdb33573
--- /dev/null
+++ b/files/FILE_288600.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x288600, 0x9A0
+ .balign 512, 255
diff --git a/files/FILE_289000.s b/files/FILE_289000.s
new file mode 100644
index 00000000..0d794c29
--- /dev/null
+++ b/files/FILE_289000.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x289000, 0x560
+ .balign 512, 255
diff --git a/files/FILE_289600.s b/files/FILE_289600.s
new file mode 100644
index 00000000..813f71fe
--- /dev/null
+++ b/files/FILE_289600.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x289600, 0x800
+ .balign 512, 255
diff --git a/files/FILE_289E00.s b/files/FILE_289E00.s
new file mode 100644
index 00000000..34da6195
--- /dev/null
+++ b/files/FILE_289E00.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x289E00, 0xBA0
+ .balign 512, 255
diff --git a/files/FILE_28AA00.s b/files/FILE_28AA00.s
new file mode 100644
index 00000000..d8827a3a
--- /dev/null
+++ b/files/FILE_28AA00.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x28AA00, 0x1780
+ .balign 512, 255
diff --git a/files/FILE_28C200.s b/files/FILE_28C200.s
new file mode 100644
index 00000000..b69d6856
--- /dev/null
+++ b/files/FILE_28C200.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x28C200, 0x900
+ .balign 512, 255
diff --git a/files/FILE_28CC00.s b/files/FILE_28CC00.s
new file mode 100644
index 00000000..8b411001
--- /dev/null
+++ b/files/FILE_28CC00.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x28CC00, 0x600
+ .balign 512, 255
diff --git a/files/FILE_28D200.s b/files/FILE_28D200.s
new file mode 100644
index 00000000..fe324802
--- /dev/null
+++ b/files/FILE_28D200.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x28D200, 0x600
+ .balign 512, 255
diff --git a/files/FILE_28D800.s b/files/FILE_28D800.s
new file mode 100644
index 00000000..f787e794
--- /dev/null
+++ b/files/FILE_28D800.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x28D800, 0x4A0
+ .balign 512, 255
diff --git a/files/FILE_28DE00.s b/files/FILE_28DE00.s
new file mode 100644
index 00000000..6658c9fc
--- /dev/null
+++ b/files/FILE_28DE00.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x28DE00, 0x320
+ .balign 512, 255
diff --git a/files/FILE_28E200.s b/files/FILE_28E200.s
new file mode 100644
index 00000000..d36e77ce
--- /dev/null
+++ b/files/FILE_28E200.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x28E200, 0x4C0
+ .balign 512, 255
diff --git a/files/FILE_28E800.s b/files/FILE_28E800.s
new file mode 100644
index 00000000..bdc1ef52
--- /dev/null
+++ b/files/FILE_28E800.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x28E800, 0x9A0
+ .balign 512, 255
diff --git a/files/FILE_28F200.s b/files/FILE_28F200.s
new file mode 100644
index 00000000..f8b95b6a
--- /dev/null
+++ b/files/FILE_28F200.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x28F200, 0xCC0
+ .balign 512, 255
diff --git a/files/FILE_290000.s b/files/FILE_290000.s
new file mode 100644
index 00000000..7e15ff90
--- /dev/null
+++ b/files/FILE_290000.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x290000, 0x560
+ .balign 512, 255
diff --git a/files/FILE_290600.s b/files/FILE_290600.s
new file mode 100644
index 00000000..fda50640
--- /dev/null
+++ b/files/FILE_290600.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x290600, 0xB40
+ .balign 512, 255
diff --git a/files/FILE_291200.s b/files/FILE_291200.s
new file mode 100644
index 00000000..ce12a90a
--- /dev/null
+++ b/files/FILE_291200.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x291200, 0xCC0
+ .balign 512, 255
diff --git a/files/FILE_292000.s b/files/FILE_292000.s
new file mode 100644
index 00000000..d50a3ef1
--- /dev/null
+++ b/files/FILE_292000.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x292000, 0xC60
+ .balign 512, 255
diff --git a/files/FILE_292E00.s b/files/FILE_292E00.s
new file mode 100644
index 00000000..b5a8d36d
--- /dev/null
+++ b/files/FILE_292E00.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x292E00, 0x1140
+ .balign 512, 255
diff --git a/files/FILE_294000.s b/files/FILE_294000.s
new file mode 100644
index 00000000..8a03373c
--- /dev/null
+++ b/files/FILE_294000.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x294000, 0x900
+ .balign 512, 255
diff --git a/files/FILE_294A00.s b/files/FILE_294A00.s
new file mode 100644
index 00000000..452c8165
--- /dev/null
+++ b/files/FILE_294A00.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x294A00, 0x9C0
+ .balign 512, 255
diff --git a/files/FILE_295400.s b/files/FILE_295400.s
new file mode 100644
index 00000000..b21be08b
--- /dev/null
+++ b/files/FILE_295400.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x295400, 0x4A0
+ .balign 512, 255
diff --git a/files/FILE_295A00.s b/files/FILE_295A00.s
new file mode 100644
index 00000000..1017f6aa
--- /dev/null
+++ b/files/FILE_295A00.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x295A00, 0x940
+ .balign 512, 255
diff --git a/files/FILE_296400.s b/files/FILE_296400.s
new file mode 100644
index 00000000..118ca39a
--- /dev/null
+++ b/files/FILE_296400.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x296400, 0x320
+ .balign 512, 255
diff --git a/files/FILE_296800.s b/files/FILE_296800.s
new file mode 100644
index 00000000..68ac75b9
--- /dev/null
+++ b/files/FILE_296800.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x296800, 0xCA0
+ .balign 512, 255
diff --git a/files/FILE_296EC00_move_model_list.narc.s b/files/FILE_296EC00_move_model_list.narc.s
new file mode 100644
index 00000000..7a997274
--- /dev/null
+++ b/files/FILE_296EC00_move_model_list.narc.s
@@ -0,0 +1,87 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x000004D8 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x000001E4 ; chunk size
+ .short 59 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000004
+ .word 0x00000004, 0x00000008
+ .word 0x00000008, 0x0000000C
+ .word 0x0000000C, 0x00000010
+ .word 0x00000010, 0x00000014
+ .word 0x00000014, 0x00000040
+ .word 0x00000040, 0x0000006C
+ .word 0x0000006C, 0x00000098
+ .word 0x00000098, 0x000000C4
+ .word 0x000000C4, 0x000000F0
+ .word 0x000000F0, 0x0000011C
+ .word 0x0000011C, 0x00000148
+ .word 0x00000148, 0x00000174
+ .word 0x00000174, 0x000001A0
+ .word 0x000001A0, 0x000001CC
+ .word 0x000001CC, 0x000001F8
+ .word 0x000001F8, 0x00000224
+ .word 0x00000224, 0x00000228
+ .word 0x00000228, 0x0000022C
+ .word 0x0000022C, 0x00000230
+ .word 0x00000230, 0x00000234
+ .word 0x00000234, 0x00000238
+ .word 0x00000238, 0x0000023C
+ .word 0x0000023C, 0x00000240
+ .word 0x00000240, 0x00000244
+ .word 0x00000244, 0x00000248
+ .word 0x00000248, 0x0000024C
+ .word 0x0000024C, 0x00000250
+ .word 0x00000250, 0x00000254
+ .word 0x00000254, 0x00000258
+ .word 0x00000258, 0x0000025C
+ .word 0x0000025C, 0x00000260
+ .word 0x00000260, 0x00000264
+ .word 0x00000264, 0x00000268
+ .word 0x00000268, 0x0000026C
+ .word 0x0000026C, 0x00000270
+ .word 0x00000270, 0x00000274
+ .word 0x00000274, 0x00000278
+ .word 0x00000278, 0x0000027C
+ .word 0x0000027C, 0x00000280
+ .word 0x00000280, 0x00000284
+ .word 0x00000284, 0x00000288
+ .word 0x00000288, 0x0000028C
+ .word 0x0000028C, 0x00000290
+ .word 0x00000290, 0x00000294
+ .word 0x00000294, 0x00000298
+ .word 0x00000298, 0x0000029C
+ .word 0x0000029C, 0x000002A0
+ .word 0x000002A0, 0x000002A4
+ .word 0x000002A4, 0x000002A8
+ .word 0x000002A8, 0x000002AC
+ .word 0x000002AC, 0x000002B0
+ .word 0x000002B0, 0x000002B4
+ .word 0x000002B4, 0x000002B8
+ .word 0x000002B8, 0x000002BC
+ .word 0x000002BC, 0x000002C0
+ .word 0x000002C0, 0x000002C4
+ .word 0x000002C4, 0x000002C8
+ .word 0x000002C8, 0x000002CC
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x000002D4 ; chunk size
+ .incbin "baserom.nds", 0x296EE0C, 0x2CC
+ .balign 512, 255
diff --git a/files/FILE_296F200_land_data_release.narc.s b/files/FILE_296F200_land_data_release.narc.s
new file mode 100644
index 00000000..80978683
--- /dev/null
+++ b/files/FILE_296F200_land_data_release.narc.s
@@ -0,0 +1,606 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00E17F2C ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x0000121C ; chunk size
+ .short 578 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00009434
+ .word 0x00009434, 0x0000BADA
+ .word 0x0000BADC, 0x0000E18E
+ .word 0x0000E190, 0x00010852
+ .word 0x00010854, 0x00014BEE
+ .word 0x00014BF0, 0x000193D6
+ .word 0x000193D8, 0x0001D59A
+ .word 0x0001D59C, 0x00024012
+ .word 0x00024014, 0x0002AAF6
+ .word 0x0002AAF8, 0x00034A50
+ .word 0x00034A50, 0x0003D580
+ .word 0x0003D580, 0x00042222
+ .word 0x00042224, 0x00047BEC
+ .word 0x00047BEC, 0x0004FC80
+ .word 0x0004FC80, 0x00056F86
+ .word 0x00056F88, 0x0005C0E8
+ .word 0x0005C0E8, 0x000637D0
+ .word 0x000637D0, 0x000673D4
+ .word 0x000673D4, 0x0006CF72
+ .word 0x0006CF74, 0x00073ACE
+ .word 0x00073AD0, 0x0007C04C
+ .word 0x0007C04C, 0x00085E4A
+ .word 0x00085E4C, 0x0008BD28
+ .word 0x0008BD28, 0x00092DAA
+ .word 0x00092DAC, 0x00099588
+ .word 0x00099588, 0x000A33D4
+ .word 0x000A33D4, 0x000AD672
+ .word 0x000AD674, 0x000B8880
+ .word 0x000B8880, 0x000C6804
+ .word 0x000C6804, 0x000D54DA
+ .word 0x000D54DC, 0x000DEA38
+ .word 0x000DEA38, 0x000E9914
+ .word 0x000E9914, 0x000EE852
+ .word 0x000EE854, 0x000F590E
+ .word 0x000F5910, 0x00100258
+ .word 0x00100258, 0x0010DD54
+ .word 0x0010DD54, 0x0011509E
+ .word 0x001150A0, 0x0011F982
+ .word 0x0011F984, 0x00123A1E
+ .word 0x00123A20, 0x00125DB2
+ .word 0x00125DB4, 0x0012AE64
+ .word 0x0012AE64, 0x001325D8
+ .word 0x001325D8, 0x0013A672
+ .word 0x0013A674, 0x00143A70
+ .word 0x00143A70, 0x00149E1E
+ .word 0x00149E20, 0x0015037E
+ .word 0x00150380, 0x0015B5A2
+ .word 0x0015B5A4, 0x00167568
+ .word 0x00167568, 0x0016FF12
+ .word 0x0016FF14, 0x00177058
+ .word 0x00177058, 0x0017F062
+ .word 0x0017F064, 0x001867F6
+ .word 0x001867F8, 0x00194378
+ .word 0x00194378, 0x001A36AC
+ .word 0x001A36AC, 0x001ADA70
+ .word 0x001ADA70, 0x001BD5B2
+ .word 0x001BD5B4, 0x001C7DD4
+ .word 0x001C7DD4, 0x001D051E
+ .word 0x001D0520, 0x001D910E
+ .word 0x001D9110, 0x001DFAD2
+ .word 0x001DFAD4, 0x001E6AA6
+ .word 0x001E6AA8, 0x001F4ECC
+ .word 0x001F4ECC, 0x00201B5A
+ .word 0x00201B5C, 0x0020FA3A
+ .word 0x0020FA3C, 0x0021DE7C
+ .word 0x0021DE7C, 0x002290D2
+ .word 0x002290D4, 0x00230A26
+ .word 0x00230A28, 0x002382B2
+ .word 0x002382B4, 0x00242E9A
+ .word 0x00242E9C, 0x0024F7AC
+ .word 0x0024F7AC, 0x0025BCD8
+ .word 0x0025BCD8, 0x00263E14
+ .word 0x00263E14, 0x00269906
+ .word 0x00269908, 0x002727BE
+ .word 0x002727C0, 0x0027E9BE
+ .word 0x0027E9C0, 0x0028B546
+ .word 0x0028B548, 0x00294836
+ .word 0x00294838, 0x0029BB88
+ .word 0x0029BB88, 0x002A3F7A
+ .word 0x002A3F7C, 0x002AE28E
+ .word 0x002AE290, 0x002BBD98
+ .word 0x002BBD98, 0x002C0F12
+ .word 0x002C0F14, 0x002C6472
+ .word 0x002C6474, 0x002CD516
+ .word 0x002CD518, 0x002D158C
+ .word 0x002D158C, 0x002DAD54
+ .word 0x002DAD54, 0x002E1A80
+ .word 0x002E1A80, 0x002EA49A
+ .word 0x002EA49C, 0x002F6152
+ .word 0x002F6154, 0x0030221A
+ .word 0x0030221C, 0x0030D5BA
+ .word 0x0030D5BC, 0x00317440
+ .word 0x00317440, 0x003201B6
+ .word 0x003201B8, 0x0032C5CA
+ .word 0x0032C5CC, 0x003369F2
+ .word 0x003369F4, 0x0033CCDA
+ .word 0x0033CCDC, 0x00346942
+ .word 0x00346944, 0x00354118
+ .word 0x00354118, 0x00361F32
+ .word 0x00361F34, 0x0036E458
+ .word 0x0036E458, 0x00372BE2
+ .word 0x00372BE4, 0x00377366
+ .word 0x00377368, 0x0037CB1E
+ .word 0x0037CB20, 0x00382852
+ .word 0x00382854, 0x00388626
+ .word 0x00388628, 0x0038E7B0
+ .word 0x0038E7B0, 0x0039378E
+ .word 0x00393790, 0x00394B5A
+ .word 0x00394B5C, 0x00396FE6
+ .word 0x00396FE8, 0x0039CAB6
+ .word 0x0039CAB8, 0x003A564E
+ .word 0x003A5650, 0x003B204E
+ .word 0x003B2050, 0x003BB42E
+ .word 0x003BB430, 0x003C67AA
+ .word 0x003C67AC, 0x003D2568
+ .word 0x003D2568, 0x003DEDCA
+ .word 0x003DEDCC, 0x003E6326
+ .word 0x003E6328, 0x003EDA36
+ .word 0x003EDA38, 0x003F775E
+ .word 0x003F7760, 0x004063FA
+ .word 0x004063FC, 0x0040D956
+ .word 0x0040D958, 0x00415066
+ .word 0x00415068, 0x0041ED8E
+ .word 0x0041ED90, 0x0042E12A
+ .word 0x0042E12C, 0x004307CE
+ .word 0x004307D0, 0x004331E2
+ .word 0x004331E4, 0x00435B06
+ .word 0x00435B08, 0x004381AA
+ .word 0x004381AC, 0x0043ABBE
+ .word 0x0043ABC0, 0x0043D4E2
+ .word 0x0043D4E4, 0x0043FB86
+ .word 0x0043FB88, 0x0044259A
+ .word 0x0044259C, 0x00448050
+ .word 0x00448050, 0x0044DC2A
+ .word 0x0044DC2C, 0x00453C5E
+ .word 0x00453C60, 0x0045B704
+ .word 0x0045B704, 0x00462424
+ .word 0x00462424, 0x00470996
+ .word 0x00470998, 0x00474E3A
+ .word 0x00474E3C, 0x00482E2C
+ .word 0x00482E2C, 0x00490EF4
+ .word 0x00490EF4, 0x0049F23A
+ .word 0x0049F23C, 0x004A674E
+ .word 0x004A6750, 0x004ADC66
+ .word 0x004ADC68, 0x004B6FA0
+ .word 0x004B6FA0, 0x004BFBC4
+ .word 0x004BFBC4, 0x004C77AC
+ .word 0x004C77AC, 0x004D2CD0
+ .word 0x004D2CD0, 0x004DB9EA
+ .word 0x004DB9EC, 0x004E1B8C
+ .word 0x004E1B8C, 0x004E8584
+ .word 0x004E8584, 0x004F12C0
+ .word 0x004F12C0, 0x004F9F80
+ .word 0x004F9F80, 0x00501D94
+ .word 0x00501D94, 0x00509050
+ .word 0x00509050, 0x0050B90A
+ .word 0x0050B90C, 0x00510F42
+ .word 0x00510F44, 0x0051A42A
+ .word 0x0051A42C, 0x00525F56
+ .word 0x00525F58, 0x0052A706
+ .word 0x0052A708, 0x0052F72E
+ .word 0x0052F730, 0x00534782
+ .word 0x00534784, 0x005380B2
+ .word 0x005380B4, 0x005436F2
+ .word 0x005436F4, 0x00553B8C
+ .word 0x00553B8C, 0x00562E2E
+ .word 0x00562E30, 0x0056F3FC
+ .word 0x0056F3FC, 0x0057B42E
+ .word 0x0057B430, 0x0058485C
+ .word 0x0058485C, 0x0058B36E
+ .word 0x0058B370, 0x00597314
+ .word 0x00597314, 0x005A6DD2
+ .word 0x005A6DD4, 0x005B4BEC
+ .word 0x005B4BEC, 0x005B9E8E
+ .word 0x005B9E90, 0x005BAB7E
+ .word 0x005BAB80, 0x005BB86E
+ .word 0x005BB870, 0x005C0B0A
+ .word 0x005C0B0C, 0x005C5DA6
+ .word 0x005C5DA8, 0x005C683E
+ .word 0x005C6840, 0x005C7BB2
+ .word 0x005C7BB4, 0x005C8FAA
+ .word 0x005C8FAC, 0x005C9FB6
+ .word 0x005C9FB8, 0x005CAF32
+ .word 0x005CAF34, 0x005CCFEA
+ .word 0x005CCFEC, 0x005CE5C2
+ .word 0x005CE5C4, 0x005D063A
+ .word 0x005D063C, 0x005D1C46
+ .word 0x005D1C48, 0x005D3240
+ .word 0x005D3240, 0x005D4930
+ .word 0x005D4930, 0x005D7322
+ .word 0x005D7324, 0x005DA96A
+ .word 0x005DA96C, 0x005DF686
+ .word 0x005DF688, 0x005E17BE
+ .word 0x005E17C0, 0x005E30EA
+ .word 0x005E30EC, 0x005E533A
+ .word 0x005E533C, 0x005E730E
+ .word 0x005E7310, 0x005EC02E
+ .word 0x005EC030, 0x005ED6AE
+ .word 0x005ED6B0, 0x005EEC34
+ .word 0x005EEC34, 0x005F0482
+ .word 0x005F0484, 0x005F2616
+ .word 0x005F2618, 0x005F48E2
+ .word 0x005F48E4, 0x005F6CEE
+ .word 0x005F6CF0, 0x005F8A7E
+ .word 0x005F8A80, 0x005FA9E6
+ .word 0x005FA9E8, 0x005FBEDA
+ .word 0x005FBEDC, 0x005FE08A
+ .word 0x005FE08C, 0x00602786
+ .word 0x00602788, 0x00605E5E
+ .word 0x00605E60, 0x0060713E
+ .word 0x00607140, 0x00609676
+ .word 0x00609678, 0x0060C070
+ .word 0x0060C070, 0x0060EF4C
+ .word 0x0060EF4C, 0x00612088
+ .word 0x00612088, 0x00614BC4
+ .word 0x00614BC4, 0x00616726
+ .word 0x00616728, 0x00618B2E
+ .word 0x00618B30, 0x00619DB2
+ .word 0x00619DB4, 0x0061B782
+ .word 0x0061B784, 0x0061CA42
+ .word 0x0061CA44, 0x0061EC2A
+ .word 0x0061EC2C, 0x006213BA
+ .word 0x006213BC, 0x0062A710
+ .word 0x0062A710, 0x0062E4A4
+ .word 0x0062E4A4, 0x006316E2
+ .word 0x006316E4, 0x006332FA
+ .word 0x006332FC, 0x00634F12
+ .word 0x00634F14, 0x00636B2A
+ .word 0x00636B2C, 0x0063DDC6
+ .word 0x0063DDC8, 0x006429C2
+ .word 0x006429C4, 0x00644656
+ .word 0x00644658, 0x00649222
+ .word 0x00649224, 0x0064B432
+ .word 0x0064B434, 0x00650C76
+ .word 0x00650C78, 0x00656A96
+ .word 0x00656A98, 0x00658C86
+ .word 0x00658C88, 0x0065A89E
+ .word 0x0065A8A0, 0x0065C4B6
+ .word 0x0065C4B8, 0x0065E0CE
+ .word 0x0065E0D0, 0x0065FCE6
+ .word 0x0065FCE8, 0x0066794E
+ .word 0x00667950, 0x0067570A
+ .word 0x0067570C, 0x0067DC18
+ .word 0x0067DC18, 0x00681D1E
+ .word 0x00681D20, 0x00683B06
+ .word 0x00683B08, 0x0068AB00
+ .word 0x0068AB00, 0x0068C4B6
+ .word 0x0068C4B8, 0x0068DDFE
+ .word 0x0068DE00, 0x00691C88
+ .word 0x00691C88, 0x00695518
+ .word 0x00695518, 0x00699398
+ .word 0x00699398, 0x0069C0C8
+ .word 0x0069C0C8, 0x0069DE84
+ .word 0x0069DE84, 0x006A01AC
+ .word 0x006A01AC, 0x006A2756
+ .word 0x006A2758, 0x006A4F8E
+ .word 0x006A4F90, 0x006A630A
+ .word 0x006A630C, 0x006A8892
+ .word 0x006A8894, 0x006AA904
+ .word 0x006AA904, 0x006ACE22
+ .word 0x006ACE24, 0x006AF342
+ .word 0x006AF344, 0x006B1862
+ .word 0x006B1864, 0x006B3D82
+ .word 0x006B3D84, 0x006B4E36
+ .word 0x006B4E38, 0x006B5F6A
+ .word 0x006B5F6C, 0x006BB27E
+ .word 0x006BB280, 0x006BD272
+ .word 0x006BD274, 0x006BED1A
+ .word 0x006BED1C, 0x006C0692
+ .word 0x006C0694, 0x006C237E
+ .word 0x006C2380, 0x006C4036
+ .word 0x006C4038, 0x006CD326
+ .word 0x006CD328, 0x006D045E
+ .word 0x006D0460, 0x006D40CA
+ .word 0x006D40CC, 0x006D5CE2
+ .word 0x006D5CE4, 0x006D861E
+ .word 0x006D8620, 0x006DA836
+ .word 0x006DA838, 0x006DD0E6
+ .word 0x006DD0E8, 0x006DFB0A
+ .word 0x006DFB0C, 0x006E1742
+ .word 0x006E1744, 0x006E2D82
+ .word 0x006E2D84, 0x006E5392
+ .word 0x006E5394, 0x006E7B6A
+ .word 0x006E7B6C, 0x006E9E52
+ .word 0x006E9E54, 0x006EBB18
+ .word 0x006EBB18, 0x006ED798
+ .word 0x006ED798, 0x006EF390
+ .word 0x006EF390, 0x006F0FC4
+ .word 0x006F0FC4, 0x006F2C7C
+ .word 0x006F2C7C, 0x006F3D8A
+ .word 0x006F3D8C, 0x006F6B50
+ .word 0x006F6B50, 0x006F849C
+ .word 0x006F849C, 0x006F9EC0
+ .word 0x006F9EC0, 0x006FBD76
+ .word 0x006FBD78, 0x00702D8E
+ .word 0x00702D90, 0x00704858
+ .word 0x00704858, 0x00706B34
+ .word 0x00706B34, 0x007099AA
+ .word 0x007099AC, 0x0070B81A
+ .word 0x0070B81C, 0x0071065A
+ .word 0x0071065C, 0x00711BAE
+ .word 0x00711BB0, 0x00712E86
+ .word 0x00712E88, 0x0071489A
+ .word 0x0071489C, 0x007162AE
+ .word 0x007162B0, 0x00718366
+ .word 0x00718368, 0x0071AA02
+ .word 0x0071AA04, 0x0071CEDA
+ .word 0x0071CEDC, 0x0071F582
+ .word 0x0071F584, 0x00720DAA
+ .word 0x00720DAC, 0x00724D8E
+ .word 0x00724D90, 0x00727586
+ .word 0x00727588, 0x0072A20A
+ .word 0x0072A20C, 0x0072B66E
+ .word 0x0072B670, 0x0073343E
+ .word 0x00733440, 0x00737012
+ .word 0x00737014, 0x007393EE
+ .word 0x007393F0, 0x0073B7CA
+ .word 0x0073B7CC, 0x0074281A
+ .word 0x0074281C, 0x00745406
+ .word 0x00745408, 0x0074A9B6
+ .word 0x0074A9B8, 0x00753B5A
+ .word 0x00753B5C, 0x0075A5C2
+ .word 0x0075A5C4, 0x00762992
+ .word 0x00762994, 0x00768B6A
+ .word 0x00768B6C, 0x0076C92A
+ .word 0x0076C92C, 0x0076F8FA
+ .word 0x0076F8FC, 0x0077A552
+ .word 0x0077A554, 0x007851AA
+ .word 0x007851AC, 0x00791AD6
+ .word 0x00791AD8, 0x0079AEDA
+ .word 0x0079AEDC, 0x007A65AA
+ .word 0x007A65AC, 0x007ACB18
+ .word 0x007ACB18, 0x007B9302
+ .word 0x007B9304, 0x007C5724
+ .word 0x007C5724, 0x007C6A34
+ .word 0x007C6A34, 0x007CF994
+ .word 0x007CF994, 0x007DA7D0
+ .word 0x007DA7D0, 0x007E553C
+ .word 0x007E553C, 0x007EA98E
+ .word 0x007EA990, 0x007EC000
+ .word 0x007EC000, 0x007F6216
+ .word 0x007F6218, 0x007FB500
+ .word 0x007FB500, 0x007FE14A
+ .word 0x007FE14C, 0x008043D2
+ .word 0x008043D4, 0x0080B0A2
+ .word 0x0080B0A4, 0x0081300A
+ .word 0x0081300C, 0x0081E264
+ .word 0x0081E264, 0x008216A2
+ .word 0x008216A4, 0x008265D4
+ .word 0x008265D4, 0x0082E28A
+ .word 0x0082E28C, 0x008360D8
+ .word 0x008360D8, 0x0083E290
+ .word 0x0083E290, 0x00844E7E
+ .word 0x00844E80, 0x0084B6CA
+ .word 0x0084B6CC, 0x00852566
+ .word 0x00852568, 0x00858C42
+ .word 0x00858C44, 0x0085F936
+ .word 0x0085F938, 0x0086607E
+ .word 0x00866080, 0x0086CF1A
+ .word 0x0086CF1C, 0x008735F6
+ .word 0x008735F8, 0x0087A174
+ .word 0x0087A174, 0x00880DEC
+ .word 0x00880DEC, 0x00887BB8
+ .word 0x00887BB8, 0x0088E75E
+ .word 0x0088E760, 0x00893CAC
+ .word 0x00893CAC, 0x0089A654
+ .word 0x0089A654, 0x0089CE7E
+ .word 0x0089CE80, 0x008A0A52
+ .word 0x008A0A54, 0x008A433C
+ .word 0x008A433C, 0x008A64F2
+ .word 0x008A64F4, 0x008A866E
+ .word 0x008A8670, 0x008AB4B8
+ .word 0x008AB4B8, 0x008ACF9A
+ .word 0x008ACF9C, 0x008AFF96
+ .word 0x008AFF98, 0x008B20C2
+ .word 0x008B20C4, 0x008B59AE
+ .word 0x008B59B0, 0x008B74F2
+ .word 0x008B74F4, 0x008BA52E
+ .word 0x008BA530, 0x008BDABE
+ .word 0x008BDAC0, 0x008BF9E2
+ .word 0x008BF9E4, 0x008C2DB6
+ .word 0x008C2DB8, 0x008C4ACE
+ .word 0x008C4AD0, 0x008C69A8
+ .word 0x008C69A8, 0x008C8886
+ .word 0x008C8888, 0x008CE0E8
+ .word 0x008CE0E8, 0x008D5416
+ .word 0x008D5418, 0x008E3C68
+ .word 0x008E3C68, 0x008EDAAC
+ .word 0x008EDAAC, 0x008F3BA4
+ .word 0x008F3BA4, 0x008F68BE
+ .word 0x008F68C0, 0x008FF2B2
+ .word 0x008FF2B4, 0x0090455E
+ .word 0x00904560, 0x00907C02
+ .word 0x00907C04, 0x0090A976
+ .word 0x0090A978, 0x00915612
+ .word 0x00915614, 0x00917B0C
+ .word 0x00917B0C, 0x0091E774
+ .word 0x0091E774, 0x00920D4E
+ .word 0x00920D50, 0x00927AB6
+ .word 0x00927AB8, 0x00930CA4
+ .word 0x00930CA4, 0x009381C0
+ .word 0x009381C0, 0x0093F6AA
+ .word 0x0093F6AC, 0x00947C82
+ .word 0x00947C84, 0x00950236
+ .word 0x00950238, 0x0095AB5E
+ .word 0x0095AB60, 0x00966146
+ .word 0x00966148, 0x0096FB30
+ .word 0x0096FB30, 0x00977CDC
+ .word 0x00977CDC, 0x0097EE22
+ .word 0x0097EE24, 0x00985134
+ .word 0x00985134, 0x0098A86E
+ .word 0x0098A870, 0x00991F30
+ .word 0x00991F30, 0x0099C2E2
+ .word 0x0099C2E4, 0x009A255C
+ .word 0x009A255C, 0x009A853C
+ .word 0x009A853C, 0x009AF442
+ .word 0x009AF444, 0x009B6274
+ .word 0x009B6274, 0x009BD050
+ .word 0x009BD050, 0x009C263A
+ .word 0x009C263C, 0x009C99F0
+ .word 0x009C99F0, 0x009D248C
+ .word 0x009D248C, 0x009D6F98
+ .word 0x009D6F98, 0x009E3BB0
+ .word 0x009E3BB0, 0x009F07C8
+ .word 0x009F07C8, 0x009FD3E0
+ .word 0x009FD3E0, 0x00A09FF8
+ .word 0x00A09FF8, 0x00A16C10
+ .word 0x00A16C10, 0x00A23828
+ .word 0x00A23828, 0x00A30440
+ .word 0x00A30440, 0x00A3D058
+ .word 0x00A3D058, 0x00A49C70
+ .word 0x00A49C70, 0x00A54E0C
+ .word 0x00A54E0C, 0x00A57EDE
+ .word 0x00A57EE0, 0x00A5F55C
+ .word 0x00A5F55C, 0x00A69E20
+ .word 0x00A69E20, 0x00A74702
+ .word 0x00A74704, 0x00A7D706
+ .word 0x00A7D708, 0x00A86F20
+ .word 0x00A86F20, 0x00A8D488
+ .word 0x00A8D488, 0x00A942F2
+ .word 0x00A942F4, 0x00A9ACC2
+ .word 0x00A9ACC4, 0x00A9FDF8
+ .word 0x00A9FDF8, 0x00AA456A
+ .word 0x00AA456C, 0x00AB3268
+ .word 0x00AB3268, 0x00AC22DE
+ .word 0x00AC22E0, 0x00ACD2FA
+ .word 0x00ACD2FC, 0x00AD877A
+ .word 0x00AD877C, 0x00ADF638
+ .word 0x00ADF638, 0x00AE3F16
+ .word 0x00AE3F18, 0x00AEB3AC
+ .word 0x00AEB3AC, 0x00AF08D6
+ .word 0x00AF08D8, 0x00AF54CA
+ .word 0x00AF54CC, 0x00AFA142
+ .word 0x00AFA144, 0x00B06D5C
+ .word 0x00B06D5C, 0x00B0A5B4
+ .word 0x00B0A5B4, 0x00B0DFD0
+ .word 0x00B0DFD0, 0x00B11AA8
+ .word 0x00B11AA8, 0x00B15588
+ .word 0x00B15588, 0x00B19228
+ .word 0x00B19228, 0x00B1CD5C
+ .word 0x00B1CD5C, 0x00B2296E
+ .word 0x00B22970, 0x00B27732
+ .word 0x00B27734, 0x00B2B7F2
+ .word 0x00B2B7F4, 0x00B2FAEE
+ .word 0x00B2FAF0, 0x00B35A4A
+ .word 0x00B35A4C, 0x00B3A966
+ .word 0x00B3A968, 0x00B4AC6A
+ .word 0x00B4AC6C, 0x00B50116
+ .word 0x00B50118, 0x00B54834
+ .word 0x00B54834, 0x00B571DA
+ .word 0x00B571DC, 0x00B596F2
+ .word 0x00B596F4, 0x00B5B8F6
+ .word 0x00B5B8F8, 0x00B5F17E
+ .word 0x00B5F180, 0x00B61CCE
+ .word 0x00B61CD0, 0x00B63702
+ .word 0x00B63704, 0x00B66F8A
+ .word 0x00B66F8C, 0x00B7050C
+ .word 0x00B7050C, 0x00B73324
+ .word 0x00B73324, 0x00B775B4
+ .word 0x00B775B4, 0x00B80564
+ .word 0x00B80564, 0x00B85D26
+ .word 0x00B85D28, 0x00B8F842
+ .word 0x00B8F844, 0x00B931D8
+ .word 0x00B931D8, 0x00B9A2A6
+ .word 0x00B9A2A8, 0x00B9C0CC
+ .word 0x00B9C0CC, 0x00BA11FE
+ .word 0x00BA1200, 0x00BA60AE
+ .word 0x00BA60B0, 0x00BAA56A
+ .word 0x00BAA56C, 0x00BABD02
+ .word 0x00BABD04, 0x00BAD3B6
+ .word 0x00BAD3B8, 0x00BAF346
+ .word 0x00BAF348, 0x00BB072E
+ .word 0x00BB0730, 0x00BB2022
+ .word 0x00BB2024, 0x00BB3DDE
+ .word 0x00BB3DE0, 0x00BB5A46
+ .word 0x00BB5A48, 0x00BB74D6
+ .word 0x00BB74D8, 0x00BB8AA6
+ .word 0x00BB8AA8, 0x00BBC8A6
+ .word 0x00BBC8A8, 0x00BBED16
+ .word 0x00BBED18, 0x00BC1E12
+ .word 0x00BC1E14, 0x00BC4156
+ .word 0x00BC4158, 0x00BC6D3E
+ .word 0x00BC6D40, 0x00BC8DE6
+ .word 0x00BC8DE8, 0x00BCB80E
+ .word 0x00BCB810, 0x00BCDB72
+ .word 0x00BCDB74, 0x00BCF882
+ .word 0x00BCF884, 0x00BD13D2
+ .word 0x00BD13D4, 0x00BD25F4
+ .word 0x00BD25F4, 0x00BDB57C
+ .word 0x00BDB57C, 0x00BE4438
+ .word 0x00BE4438, 0x00BE6722
+ .word 0x00BE6724, 0x00BEF220
+ .word 0x00BEF220, 0x00BF86B4
+ .word 0x00BF86B4, 0x00BFA99E
+ .word 0x00BFA9A0, 0x00C03B00
+ .word 0x00C03B00, 0x00C0CC54
+ .word 0x00C0CC54, 0x00C0EF3E
+ .word 0x00C0EF40, 0x00C19100
+ .word 0x00C19100, 0x00C24148
+ .word 0x00C24148, 0x00C26432
+ .word 0x00C26434, 0x00C30A92
+ .word 0x00C30A94, 0x00C3EFBE
+ .word 0x00C3EFC0, 0x00C4AFB4
+ .word 0x00C4AFB4, 0x00C54534
+ .word 0x00C54534, 0x00C5D42C
+ .word 0x00C5D42C, 0x00C65398
+ .word 0x00C65398, 0x00C6DD98
+ .word 0x00C6DD98, 0x00C76498
+ .word 0x00C76498, 0x00C7F58C
+ .word 0x00C7F58C, 0x00C8AA0A
+ .word 0x00C8AA0C, 0x00C9291C
+ .word 0x00C9291C, 0x00C9BA58
+ .word 0x00C9BA58, 0x00CA43C4
+ .word 0x00CA43C4, 0x00CAC600
+ .word 0x00CAC600, 0x00CB5968
+ .word 0x00CB5968, 0x00CBFE20
+ .word 0x00CBFE20, 0x00CC9E64
+ .word 0x00CC9E64, 0x00CD3C20
+ .word 0x00CD3C20, 0x00CDE922
+ .word 0x00CDE924, 0x00CE843A
+ .word 0x00CE843C, 0x00CECAA2
+ .word 0x00CECAA4, 0x00CF1142
+ .word 0x00CF1144, 0x00CF74AE
+ .word 0x00CF74B0, 0x00CFC446
+ .word 0x00CFC448, 0x00CFD8CE
+ .word 0x00CFD8D0, 0x00CFF166
+ .word 0x00CFF168, 0x00D00A7A
+ .word 0x00D00A7C, 0x00D07CB2
+ .word 0x00D07CB4, 0x00D10DA6
+ .word 0x00D10DA8, 0x00D1873A
+ .word 0x00D1873C, 0x00D216BA
+ .word 0x00D216BC, 0x00D26DC0
+ .word 0x00D26DC0, 0x00D2E27C
+ .word 0x00D2E27C, 0x00D34EC4
+ .word 0x00D34EC4, 0x00D3B768
+ .word 0x00D3B768, 0x00D436AC
+ .word 0x00D436AC, 0x00D49E54
+ .word 0x00D49E54, 0x00D50BA0
+ .word 0x00D50BA0, 0x00D57340
+ .word 0x00D57340, 0x00D5F284
+ .word 0x00D5F284, 0x00D65A2C
+ .word 0x00D65A2C, 0x00D6EBA8
+ .word 0x00D6EBA8, 0x00D7A0FC
+ .word 0x00D7A0FC, 0x00D84AE0
+ .word 0x00D84AE0, 0x00D8F6C4
+ .word 0x00D8F6C4, 0x00D9A438
+ .word 0x00D9A438, 0x00DA51B8
+ .word 0x00DA51B8, 0x00DAEDE4
+ .word 0x00DAEDE4, 0x00DB87BC
+ .word 0x00DB87BC, 0x00DC239C
+ .word 0x00DC239C, 0x00DCBED4
+ .word 0x00DCBED4, 0x00DD5F50
+ .word 0x00DD5F50, 0x00DDFD18
+ .word 0x00DDFD18, 0x00DEA068
+ .word 0x00DEA068, 0x00DF4548
+ .word 0x00DF4548, 0x00DFEC38
+ .word 0x00DFEC38, 0x00E0938C
+ .word 0x00E0938C, 0x00E16CE8
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00E16CF0 ; chunk size
+ .incbin "baserom.nds", 0x2970444, 0xE16CE8
+ .balign 512, 255
diff --git a/files/FILE_297600.s b/files/FILE_297600.s
new file mode 100644
index 00000000..1887c4af
--- /dev/null
+++ b/files/FILE_297600.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x297600, 0x8A0
+ .balign 512, 255
diff --git a/files/FILE_298000.s b/files/FILE_298000.s
new file mode 100644
index 00000000..ffdcde2a
--- /dev/null
+++ b/files/FILE_298000.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x298000, 0x600
+ .balign 512, 255
diff --git a/files/FILE_298600.s b/files/FILE_298600.s
new file mode 100644
index 00000000..d4bef86c
--- /dev/null
+++ b/files/FILE_298600.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x298600, 0x320
+ .balign 512, 255
diff --git a/files/FILE_298A00.s b/files/FILE_298A00.s
new file mode 100644
index 00000000..258432c2
--- /dev/null
+++ b/files/FILE_298A00.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x298A00, 0xFC0
+ .balign 512, 255
diff --git a/files/FILE_299A00.s b/files/FILE_299A00.s
new file mode 100644
index 00000000..71432656
--- /dev/null
+++ b/files/FILE_299A00.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x299A00, 0x400
+ .balign 512, 255
diff --git a/files/FILE_299E00.s b/files/FILE_299E00.s
new file mode 100644
index 00000000..4fb90fe1
--- /dev/null
+++ b/files/FILE_299E00.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x299E00, 0x2480
+ .balign 512, 255
diff --git a/files/FILE_29C400.s b/files/FILE_29C400.s
new file mode 100644
index 00000000..3b880c03
--- /dev/null
+++ b/files/FILE_29C400.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x29C400, 0x2380
+ .balign 512, 255
diff --git a/files/FILE_29E800.s b/files/FILE_29E800.s
new file mode 100644
index 00000000..f3cf72cb
--- /dev/null
+++ b/files/FILE_29E800.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x29E800, 0x3040
+ .balign 512, 255
diff --git a/files/FILE_2A1A00.s b/files/FILE_2A1A00.s
new file mode 100644
index 00000000..d917b776
--- /dev/null
+++ b/files/FILE_2A1A00.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x2A1A00, 0x47A0
+ .balign 512, 255
diff --git a/files/FILE_2A6200.s b/files/FILE_2A6200.s
new file mode 100644
index 00000000..ae62fcc6
--- /dev/null
+++ b/files/FILE_2A6200.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x2A6200, 0x2540
+ .balign 512, 255
diff --git a/files/FILE_2A8800.s b/files/FILE_2A8800.s
new file mode 100644
index 00000000..967d96f3
--- /dev/null
+++ b/files/FILE_2A8800.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x2A8800, 0x15A0
+ .balign 512, 255
diff --git a/files/FILE_2A9E00.s b/files/FILE_2A9E00.s
new file mode 100644
index 00000000..21839769
--- /dev/null
+++ b/files/FILE_2A9E00.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x2A9E00, 0x2C20
+ .balign 512, 255
diff --git a/files/FILE_2ACC00.s b/files/FILE_2ACC00.s
new file mode 100644
index 00000000..2068bd4c
--- /dev/null
+++ b/files/FILE_2ACC00.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x2ACC00, 0xD00
+ .balign 512, 255
diff --git a/files/FILE_2ADA00.s b/files/FILE_2ADA00.s
new file mode 100644
index 00000000..9f464dac
--- /dev/null
+++ b/files/FILE_2ADA00.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x2ADA00, 0x1080
+ .balign 512, 255
diff --git a/files/FILE_2AEC00.s b/files/FILE_2AEC00.s
new file mode 100644
index 00000000..e6a54fb3
--- /dev/null
+++ b/files/FILE_2AEC00.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x2AEC00, 0x3DE0
+ .balign 512, 255
diff --git a/files/FILE_2B2A00.s b/files/FILE_2B2A00.s
new file mode 100644
index 00000000..44eba0d2
--- /dev/null
+++ b/files/FILE_2B2A00.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x2B2A00, 0x4AC0
+ .balign 512, 255
diff --git a/files/FILE_2B7600.s b/files/FILE_2B7600.s
new file mode 100644
index 00000000..8258b44e
--- /dev/null
+++ b/files/FILE_2B7600.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x2B7600, 0x1C40
+ .balign 512, 255
diff --git a/files/FILE_2B9400.s b/files/FILE_2B9400.s
new file mode 100644
index 00000000..17ffa8d8
--- /dev/null
+++ b/files/FILE_2B9400.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x2B9400, 0x3000
+ .balign 512, 255
diff --git a/files/FILE_2BC400.s b/files/FILE_2BC400.s
new file mode 100644
index 00000000..e34ef7f4
--- /dev/null
+++ b/files/FILE_2BC400.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x2BC400, 0x2660
+ .balign 512, 255
diff --git a/files/FILE_2BEC00.s b/files/FILE_2BEC00.s
new file mode 100644
index 00000000..c229a70e
--- /dev/null
+++ b/files/FILE_2BEC00.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x2BEC00, 0x2440
+ .balign 512, 255
diff --git a/files/FILE_2C1200.s b/files/FILE_2C1200.s
new file mode 100644
index 00000000..f357627d
--- /dev/null
+++ b/files/FILE_2C1200.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x2C1200, 0x1600
+ .balign 512, 255
diff --git a/files/FILE_2C2800.s b/files/FILE_2C2800.s
new file mode 100644
index 00000000..bddd6f01
--- /dev/null
+++ b/files/FILE_2C2800.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x2C2800, 0x23A0
+ .balign 512, 255
diff --git a/files/FILE_2C4C00.s b/files/FILE_2C4C00.s
new file mode 100644
index 00000000..d41910b0
--- /dev/null
+++ b/files/FILE_2C4C00.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x2C4C00, 0xE20
+ .balign 512, 255
diff --git a/files/FILE_2C5C00.s b/files/FILE_2C5C00.s
new file mode 100644
index 00000000..c24ed641
--- /dev/null
+++ b/files/FILE_2C5C00.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x2C5C00, 0x3EC0
+ .balign 512, 255
diff --git a/files/FILE_2C9C00.s b/files/FILE_2C9C00.s
new file mode 100644
index 00000000..72b30caa
--- /dev/null
+++ b/files/FILE_2C9C00.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x2C9C00, 0x20
+ .balign 512, 255
diff --git a/files/FILE_2C9E00.s b/files/FILE_2C9E00.s
new file mode 100644
index 00000000..91cc4599
--- /dev/null
+++ b/files/FILE_2C9E00.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x2C9E00, 0x4AE0
+ .balign 512, 255
diff --git a/files/FILE_2CEA00.s b/files/FILE_2CEA00.s
new file mode 100644
index 00000000..e9a4ed70
--- /dev/null
+++ b/files/FILE_2CEA00.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x2CEA00, 0x1220
+ .balign 512, 255
diff --git a/files/FILE_2CFE00.s b/files/FILE_2CFE00.s
new file mode 100644
index 00000000..513e7dea
--- /dev/null
+++ b/files/FILE_2CFE00.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x2CFE00, 0x5DE0
+ .balign 512, 255
diff --git a/files/FILE_2D5C00.s b/files/FILE_2D5C00.s
new file mode 100644
index 00000000..adc46cc2
--- /dev/null
+++ b/files/FILE_2D5C00.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x2D5C00, 0x1E20
+ .balign 512, 255
diff --git a/files/FILE_2D7C00.s b/files/FILE_2D7C00.s
new file mode 100644
index 00000000..4fc876ea
--- /dev/null
+++ b/files/FILE_2D7C00.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x2D7C00, 0x1BE0
+ .balign 512, 255
diff --git a/files/FILE_2D9800.s b/files/FILE_2D9800.s
new file mode 100644
index 00000000..772b6549
--- /dev/null
+++ b/files/FILE_2D9800.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x2D9800, 0x460
+ .balign 512, 255
diff --git a/files/FILE_2D9E00.s b/files/FILE_2D9E00.s
new file mode 100644
index 00000000..934f9168
--- /dev/null
+++ b/files/FILE_2D9E00.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x2D9E00, 0x52C0
+ .balign 512, 255
diff --git a/files/FILE_2DF200.s b/files/FILE_2DF200.s
new file mode 100644
index 00000000..b5761253
--- /dev/null
+++ b/files/FILE_2DF200.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x2DF200, 0xA720
+ .balign 512, 255
diff --git a/files/FILE_2E9A00.s b/files/FILE_2E9A00.s
new file mode 100644
index 00000000..8b6338f7
--- /dev/null
+++ b/files/FILE_2E9A00.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x2E9A00, 0x5580
+ .balign 512, 255
diff --git a/files/FILE_2EF000.s b/files/FILE_2EF000.s
new file mode 100644
index 00000000..b8304264
--- /dev/null
+++ b/files/FILE_2EF000.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x2EF000, 0x2540
+ .balign 512, 255
diff --git a/files/FILE_2F1600.s b/files/FILE_2F1600.s
new file mode 100644
index 00000000..643b88fc
--- /dev/null
+++ b/files/FILE_2F1600.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x2F1600, 0xE2A0
+ .balign 512, 255
diff --git a/files/FILE_2FFA00.s b/files/FILE_2FFA00.s
new file mode 100644
index 00000000..8fb7cb9c
--- /dev/null
+++ b/files/FILE_2FFA00.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x2FFA00, 0x3920
+ .balign 512, 255
diff --git a/files/FILE_303400.s b/files/FILE_303400.s
new file mode 100644
index 00000000..a180411b
--- /dev/null
+++ b/files/FILE_303400.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x303400, 0x9100
+ .balign 512, 255
diff --git a/files/FILE_30C600.s b/files/FILE_30C600.s
new file mode 100644
index 00000000..72531ed0
--- /dev/null
+++ b/files/FILE_30C600.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x30C600, 0x820
+ .balign 512, 255
diff --git a/files/FILE_339000_UTF16.dat.s b/files/FILE_339000_UTF16.dat.s
new file mode 100644
index 00000000..16d336a2
--- /dev/null
+++ b/files/FILE_339000_UTF16.dat.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x339000, 0x1EA
+ .balign 512, 255
diff --git a/files/FILE_339200_area00light.txt b/files/FILE_339200_area00light.txt
new file mode 100644
index 00000000..438ee9c5
--- /dev/null
+++ b/files/FILE_339200_area00light.txt
@@ -0,0 +1,151 @@
+0,
+1,11,11,16,1897,-3600,-466,
+0,0,0,0,0,0,0,
+1,22,18,0,0,0,4096,
+1,31,31,31,0,0,4096,
+14,14,16,
+10,10,10,
+14,14,16,
+8,8,11,
+
+7200,
+1,11,11,16,1897,-3600,-466,
+0,0,0,0,0,0,0,
+1,0,0,8,0,0,4096,
+1,31,31,31,0,0,4096,
+14,14,16,
+10,10,10,
+14,14,16,
+8,8,11,
+
+8100,
+1,12,12,18,692,-3584,-680,
+0,0,0,0,0,0,0,
+1,0,4,8,0,0,4096,
+1,31,31,31,0,0,4096,
+10,10,14,
+13,13,13,
+8,8,14,
+10,10,12,
+
+9000,
+1,12,12,22,-513,-3568,-894,
+0,0,0,0,0,0,0,
+1,0,2,10,0,0,4096,
+1,31,31,31,0,0,4096,
+11,11,13,
+10,10,10,
+10,10,14,
+13,13,14,
+
+14400,
+1,15,15,22,-1718,-3551,-1108,
+0,0,0,0,0,0,0,
+1,0,0,10,0,0,4096,
+1,31,31,31,0,0,4096,
+12,12,12,
+8,8,8,
+12,12,14,
+14,14,18,
+
+20700,
+1,18,18,21,-1826,-3548,-702,
+0,0,0,0,0,0,0,
+1,1,1,11,0,0,4096,
+1,31,31,31,0,0,4096,
+13,13,13,
+9,9,9,
+14,14,15,
+14,14,16,
+
+21600,
+1,22,22,20,-1934,-3548,-296,
+0,0,0,0,0,0,0,
+1,2,2,12,0,0,4096,
+1,31,31,31,0,0,4096,
+15,15,15,
+9,11,11,
+16,16,16,
+14,14,14,
+
+27000,
+1,24,24,20,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,2,2,13,0,0,4096,
+1,31,31,31,0,0,4096,
+16,16,16,
+10,12,12,
+18,18,18,
+14,14,14,
+
+27900,
+1,22,22,18,-730,-3560,-82,
+0,0,0,0,0,0,0,
+1,4,4,10,0,0,4096,
+1,31,31,31,0,0,4096,
+15,15,15,
+11,12,12,
+17,17,17,
+13,13,13,
+
+30600,
+1,20,18,16,-730,-3560,-82,
+0,0,0,0,0,0,0,
+1,3,4,10,0,0,4096,
+1,31,31,31,0,0,4096,
+15,15,15,
+11,12,12,
+17,17,17,
+12,11,11,
+
+32400,
+1,19,16,12,583,-3580,274,
+0,0,0,0,0,0,0,
+1,3,5,8,0,0,4096,
+1,31,31,31,0,0,4096,
+15,15,15,
+11,12,12,
+17,17,17,
+8,8,7,
+
+33300,
+1,17,13,10,1897,-3600,-466,
+0,0,0,0,0,0,0,
+1,14,6,0,0,0,4096,
+1,31,31,31,0,0,4096,
+14,14,14,
+12,12,12,
+16,16,16,
+9,7,7,
+
+34200,
+1,16,13,10,1897,-3600,-466,
+0,0,0,0,0,0,0,
+1,10,4,0,0,0,4096,
+1,31,31,31,0,0,4096,
+14,14,14,
+12,12,12,
+14,14,16,
+9,8,7,
+
+36000,
+1,11,12,15,1897,-3600,-466,
+0,0,0,0,0,0,0,
+1,10,4,0,0,0,4096,
+1,31,31,31,0,0,4096,
+14,14,14,
+12,12,12,
+14,14,16,
+8,8,9,
+
+43200,
+1,11,11,16,1897,-3600,-466,
+0,0,0,0,0,0,0,
+1,22,18,0,0,0,4096,
+1,31,31,31,0,0,4096,
+14,14,16,
+10,10,10,
+14,14,16,
+8,8,11,
+
+EOF \ No newline at end of file
diff --git a/files/FILE_339200_area00light.txt.s b/files/FILE_339200_area00light.txt.s
new file mode 100644
index 00000000..be9e67e7
--- /dev/null
+++ b/files/FILE_339200_area00light.txt.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "files/FILE_339200_area00light.txt"
+ .balign 512, 255
diff --git a/files/FILE_339C00_area01light.txt b/files/FILE_339C00_area01light.txt
new file mode 100644
index 00000000..8261dc97
--- /dev/null
+++ b/files/FILE_339C00_area01light.txt
@@ -0,0 +1,151 @@
+900,
+1,23,23,25,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,4,4,16,0,0,4096,
+0,0,0,0,0,0,0,
+16,16,16,
+14,14,14,
+20,20,20,
+16,16,16,
+
+1800,
+1,23,23,25,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,4,4,16,0,0,4096,
+0,0,0,0,0,0,0,
+16,16,16,
+14,14,14,
+20,20,20,
+16,16,16,
+
+7200,
+1,23,23,25,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,4,4,16,0,0,4096,
+0,0,0,0,0,0,0,
+16,16,16,
+14,14,14,
+20,20,20,
+16,16,16,
+
+8100,
+1,23,23,25,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,4,4,16,0,0,4096,
+0,0,0,0,0,0,0,
+16,16,16,
+14,14,14,
+20,20,20,
+16,16,16,
+
+9000,
+1,23,23,25,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,4,4,16,0,0,4096,
+0,0,0,0,0,0,0,
+16,16,16,
+14,14,14,
+20,20,20,
+16,16,16,
+
+19800,
+1,23,23,25,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,4,4,16,0,0,4096,
+0,0,0,0,0,0,0,
+16,16,16,
+14,14,14,
+20,20,20,
+16,16,16,
+
+20700,
+1,23,23,25,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,4,4,16,0,0,4096,
+0,0,0,0,0,0,0,
+16,16,16,
+14,14,14,
+20,20,20,
+16,16,16,
+
+21600,
+1,23,23,25,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,4,4,16,0,0,4096,
+0,0,0,0,0,0,0,
+16,16,16,
+14,14,14,
+20,20,20,
+16,16,16,
+
+28800,
+1,23,23,25,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,4,4,16,0,0,4096,
+0,0,0,0,0,0,0,
+16,16,16,
+14,14,14,
+20,20,20,
+16,16,16,
+
+29700,
+1,23,23,25,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,4,4,16,0,0,4096,
+0,0,0,0,0,0,0,
+16,16,16,
+14,14,14,
+20,20,20,
+16,16,16,
+
+30600,
+1,23,23,25,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,4,4,16,0,0,4096,
+0,0,0,0,0,0,0,
+16,16,16,
+14,14,14,
+20,20,20,
+16,16,16,
+
+34200,
+1,23,23,25,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,4,4,16,0,0,4096,
+0,0,0,0,0,0,0,
+16,16,16,
+14,14,14,
+20,20,20,
+16,16,16,
+
+35100,
+1,23,23,25,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,4,4,16,0,0,4096,
+0,0,0,0,0,0,0,
+16,16,16,
+14,14,14,
+20,20,20,
+16,16,16,
+
+36000,
+1,23,23,25,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,4,4,16,0,0,4096,
+0,0,0,0,0,0,0,
+16,16,16,
+14,14,14,
+20,20,20,
+16,16,16,
+
+43200,
+1,23,23,25,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,4,4,16,0,0,4096,
+0,0,0,0,0,0,0,
+16,16,16,
+14,14,14,
+20,20,20,
+16,16,16,
+
+EOF
diff --git a/files/FILE_339C00_area01light.txt.s b/files/FILE_339C00_area01light.txt.s
new file mode 100644
index 00000000..92e89159
--- /dev/null
+++ b/files/FILE_339C00_area01light.txt.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "files/FILE_339C00_area01light.txt"
+ .balign 512, 255
diff --git a/files/FILE_33A400_area02light.txt b/files/FILE_33A400_area02light.txt
new file mode 100644
index 00000000..ecf534a2
--- /dev/null
+++ b/files/FILE_33A400_area02light.txt
@@ -0,0 +1,151 @@
+900,
+1,24,24,18,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,2,2,12,0,0,4096,
+1,31,31,31,0,0,4096,
+16,16,16,
+10,12,12,
+18,18,18,
+14,14,14,
+
+1800,
+1,24,24,18,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,2,2,12,0,0,4096,
+1,31,31,31,0,0,4096,
+16,16,16,
+10,12,12,
+18,18,18,
+14,14,14,
+
+7200,
+1,24,24,18,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,2,2,12,0,0,4096,
+1,31,31,31,0,0,4096,
+16,16,16,
+10,12,12,
+18,18,18,
+14,14,14,
+
+8100,
+1,24,24,18,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,2,2,12,0,0,4096,
+1,31,31,31,0,0,4096,
+16,16,16,
+10,12,12,
+18,18,18,
+14,14,14,
+
+9000,
+1,24,24,18,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,2,2,12,0,0,4096,
+1,31,31,31,0,0,4096,
+16,16,16,
+10,12,12,
+18,18,18,
+14,14,14,
+
+19800,
+1,24,24,18,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,2,2,12,0,0,4096,
+1,31,31,31,0,0,4096,
+16,16,16,
+10,12,12,
+18,18,18,
+14,14,14,
+
+20700,
+1,24,24,18,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,2,2,12,0,0,4096,
+1,31,31,31,0,0,4096,
+16,16,16,
+10,12,12,
+18,18,18,
+14,14,14,
+
+21600,
+1,24,24,18,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,2,2,12,0,0,4096,
+1,31,31,31,0,0,4096,
+16,16,16,
+10,12,12,
+18,18,18,
+14,14,14,
+
+28800,
+1,24,24,18,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,2,2,12,0,0,4096,
+1,31,31,31,0,0,4096,
+16,16,16,
+10,12,12,
+18,18,18,
+14,14,14,
+
+29700,
+1,24,24,18,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,2,2,12,0,0,4096,
+1,31,31,31,0,0,4096,
+16,16,16,
+10,12,12,
+18,18,18,
+14,14,14,
+
+30600,
+1,24,24,18,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,2,2,12,0,0,4096,
+1,31,31,31,0,0,4096,
+16,16,16,
+10,12,12,
+18,18,18,
+14,14,14,
+
+34200,
+1,24,24,18,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,2,2,12,0,0,4096,
+1,31,31,31,0,0,4096,
+16,16,16,
+10,12,12,
+18,18,18,
+14,14,14,
+
+35100,
+1,24,24,18,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,2,2,12,0,0,4096,
+1,31,31,31,0,0,4096,
+16,16,16,
+10,12,12,
+18,18,18,
+14,14,14,
+
+36000,
+1,24,24,18,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,2,2,12,0,0,4096,
+1,31,31,31,0,0,4096,
+16,16,16,
+10,12,12,
+18,18,18,
+14,14,14,
+
+43200,
+1,24,24,18,-2043,-3548,110,
+0,0,0,0,0,0,0,
+1,2,2,12,0,0,4096,
+1,31,31,31,0,0,4096,
+16,16,16,
+10,12,12,
+18,18,18,
+14,14,14,
+
+EOF
diff --git a/files/FILE_33A400_area02light.txt.s b/files/FILE_33A400_area02light.txt.s
new file mode 100644
index 00000000..9fdcb3ff
--- /dev/null
+++ b/files/FILE_33A400_area02light.txt.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "files/FILE_33A400_area02light.txt"
+ .balign 512, 255
diff --git a/files/FILE_33AE00_battle_win.NSCR.s b/files/FILE_33AE00_battle_win.NSCR.s
new file mode 100644
index 00000000..6be90be0
--- /dev/null
+++ b/files/FILE_33AE00_battle_win.NSCR.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x33AE00, 0x824
+ .balign 512, 255
diff --git a/files/FILE_33B800_btower_canm.resdat.s b/files/FILE_33B800_btower_canm.resdat.s
new file mode 100644
index 00000000..b17d2641
--- /dev/null
+++ b/files/FILE_33B800_btower_canm.resdat.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x33B800, 0x34
+ .balign 512, 255
diff --git a/files/FILE_33BA00_btower_celact.cldat.s b/files/FILE_33BA00_btower_celact.cldat.s
new file mode 100644
index 00000000..93b435ba
--- /dev/null
+++ b/files/FILE_33BA00_btower_celact.cldat.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x33BA00, 0x40
+ .balign 512, 255
diff --git a/files/FILE_33BC00_btower_cell.resdat.s b/files/FILE_33BC00_btower_cell.resdat.s
new file mode 100644
index 00000000..cc8b7a55
--- /dev/null
+++ b/files/FILE_33BC00_btower_cell.resdat.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x33BC00, 0x34
+ .balign 512, 255
diff --git a/files/FILE_33BE00_btower_chr.resdat.s b/files/FILE_33BE00_btower_chr.resdat.s
new file mode 100644
index 00000000..0b2584b0
--- /dev/null
+++ b/files/FILE_33BE00_btower_chr.resdat.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x33BE00, 0x34
+ .balign 512, 255
diff --git a/files/FILE_33C000_btower_pal.resdat.s b/files/FILE_33C000_btower_pal.resdat.s
new file mode 100644
index 00000000..ae600822
--- /dev/null
+++ b/files/FILE_33C000_btower_pal.resdat.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x33C000, 0x34
+ .balign 512, 255
diff --git a/files/FILE_33C200_cell0.NCGR.s b/files/FILE_33C200_cell0.NCGR.s
new file mode 100644
index 00000000..95d21501
--- /dev/null
+++ b/files/FILE_33C200_cell0.NCGR.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x33C200, 0x2030
+ .balign 512, 255
diff --git a/files/FILE_33E400_cell0.NCLR.s b/files/FILE_33E400_cell0.NCLR.s
new file mode 100644
index 00000000..d42a0ffa
--- /dev/null
+++ b/files/FILE_33E400_cell0.NCLR.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x33E400, 0x228
+ .balign 512, 255
diff --git a/files/FILE_33E800_clact_default.NANR.s b/files/FILE_33E800_clact_default.NANR.s
new file mode 100644
index 00000000..d29d3e96
--- /dev/null
+++ b/files/FILE_33E800_clact_default.NANR.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x33E800, 0x6F
+ .balign 512, 255
diff --git a/files/FILE_33EA00_crystal.nsbmd.s b/files/FILE_33EA00_crystal.nsbmd.s
new file mode 100644
index 00000000..e97ce96a
--- /dev/null
+++ b/files/FILE_33EA00_crystal.nsbmd.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x33EA00, 0xD04
+ .balign 512, 255
diff --git a/files/FILE_33F800_demo_climax.narc.s b/files/FILE_33F800_demo_climax.narc.s
new file mode 100644
index 00000000..ad6c700f
--- /dev/null
+++ b/files/FILE_33F800_demo_climax.narc.s
@@ -0,0 +1,48 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x0007362C ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x000000AC ; chunk size
+ .short 20 ; number of files
+ .balign 4
+ .word 0x00000000, 0x000118D8
+ .word 0x000118D8, 0x000121F4
+ .word 0x000121F4, 0x00015054
+ .word 0x00015054, 0x0001567C
+ .word 0x0001567C, 0x00015C20
+ .word 0x00015C20, 0x000161C4
+ .word 0x000161C4, 0x00016768
+ .word 0x00016768, 0x0001AFE0
+ .word 0x0001AFE0, 0x000469D4
+ .word 0x000469D4, 0x000471B4
+ .word 0x000471B4, 0x00049D30
+ .word 0x00049D30, 0x0004A9D4
+ .word 0x0004A9D4, 0x0005BEB8
+ .word 0x0005BEB8, 0x00063A58
+ .word 0x00063A58, 0x00065E2C
+ .word 0x00065E2C, 0x00071D70
+ .word 0x00071D70, 0x000725BC
+ .word 0x000725BC, 0x00072F70
+ .word 0x00072F70, 0x00073404
+ .word 0x00073404, 0x00073558
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00073560 ; chunk size
+ .incbin "baserom.nds", 0x33F8D4, 0x73558
+ .balign 512, 255
diff --git a/files/FILE_3787200_contest_bg.narc.s b/files/FILE_3787200_contest_bg.narc.s
new file mode 100644
index 00000000..5f83f539
--- /dev/null
+++ b/files/FILE_3787200_contest_bg.narc.s
@@ -0,0 +1,68 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00013B44 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x0000014C ; chunk size
+ .short 40 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000368
+ .word 0x00000368, 0x00002598
+ .word 0x00002598, 0x00002904
+ .word 0x00002904, 0x000042EC
+ .word 0x000042EC, 0x00004494
+ .word 0x00004494, 0x0000462C
+ .word 0x0000462C, 0x0000484C
+ .word 0x0000484C, 0x00004B94
+ .word 0x00004B94, 0x00004E1C
+ .word 0x00004E1C, 0x00006D30
+ .word 0x00006D30, 0x00006F44
+ .word 0x00006F44, 0x000081A0
+ .word 0x000081A0, 0x00008310
+ .word 0x00008310, 0x00009618
+ .word 0x00009618, 0x00009784
+ .word 0x00009784, 0x00009E90
+ .word 0x00009E90, 0x0000A394
+ .word 0x0000A394, 0x0000B4F4
+ .word 0x0000B4F4, 0x0000D2BC
+ .word 0x0000D2BC, 0x0000D9E4
+ .word 0x0000D9E4, 0x0000DB50
+ .word 0x0000DB50, 0x0000DD90
+ .word 0x0000DD90, 0x0000F9D8
+ .word 0x0000F9D8, 0x00010AA0
+ .word 0x00010AA0, 0x00010C60
+ .word 0x00010C60, 0x00010DAC
+ .word 0x00010DAC, 0x00011F4C
+ .word 0x00011F4C, 0x00012078
+ .word 0x00012078, 0x00012218
+ .word 0x00012218, 0x00012440
+ .word 0x00012440, 0x00012668
+ .word 0x00012668, 0x00012890
+ .word 0x00012890, 0x00012AB8
+ .word 0x00012AB8, 0x00012CE0
+ .word 0x00012CE0, 0x00012F08
+ .word 0x00012F08, 0x00013130
+ .word 0x00013130, 0x00013358
+ .word 0x00013358, 0x00013580
+ .word 0x00013580, 0x000137A8
+ .word 0x000137A8, 0x000139D0
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x000139D8 ; chunk size
+ .incbin "baserom.nds", 0x3787374, 0x139D0
+ .balign 512, 255
diff --git a/files/FILE_379AE00_contest_obj.narc.s b/files/FILE_379AE00_contest_obj.narc.s
new file mode 100644
index 00000000..95be3d85
--- /dev/null
+++ b/files/FILE_379AE00_contest_obj.narc.s
@@ -0,0 +1,125 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00005D24 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000314 ; chunk size
+ .short 97 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000228
+ .word 0x00000228, 0x00000282
+ .word 0x00000284, 0x000002DE
+ .word 0x000002E0, 0x0000033A
+ .word 0x0000033C, 0x00000564
+ .word 0x00000564, 0x00000602
+ .word 0x00000604, 0x0000082C
+ .word 0x0000082C, 0x00000A54
+ .word 0x00000A54, 0x00000C7C
+ .word 0x00000C7C, 0x00000CF8
+ .word 0x00000CF8, 0x00000F20
+ .word 0x00000F20, 0x00000F7A
+ .word 0x00000F7C, 0x0000100C
+ .word 0x0000100C, 0x00001088
+ .word 0x00001088, 0x000011E0
+ .word 0x000011E0, 0x00001270
+ .word 0x00001270, 0x000012F8
+ .word 0x000012F8, 0x000013BC
+ .word 0x000013BC, 0x00001418
+ .word 0x00001418, 0x00001468
+ .word 0x00001468, 0x00001508
+ .word 0x00001508, 0x00001598
+ .word 0x00001598, 0x00001614
+ .word 0x00001614, 0x00001754
+ .word 0x00001754, 0x000017BC
+ .word 0x000017BC, 0x00001820
+ .word 0x00001820, 0x00001888
+ .word 0x00001888, 0x000018E4
+ .word 0x000018E4, 0x0000193C
+ .word 0x0000193C, 0x000019F8
+ .word 0x000019F8, 0x00001A54
+ .word 0x00001A54, 0x00001B88
+ .word 0x00001B88, 0x00001BE4
+ .word 0x00001BE4, 0x00001C40
+ .word 0x00001C40, 0x00001D74
+ .word 0x00001D74, 0x00001DD0
+ .word 0x00001DD0, 0x00001E2C
+ .word 0x00001E2C, 0x00001F5C
+ .word 0x00001F5C, 0x00001FC8
+ .word 0x00001FC8, 0x00002274
+ .word 0x00002274, 0x000022C4
+ .word 0x000022C4, 0x00002320
+ .word 0x00002320, 0x00002478
+ .word 0x00002478, 0x000024C8
+ .word 0x000024C8, 0x00002524
+ .word 0x00002524, 0x00002570
+ .word 0x00002570, 0x000025C0
+ .word 0x000025C0, 0x0000261C
+ .word 0x0000261C, 0x000026F0
+ .word 0x000026F0, 0x00002748
+ .word 0x00002748, 0x000027A4
+ .word 0x000027A4, 0x0000287C
+ .word 0x0000287C, 0x00002960
+ .word 0x00002960, 0x00002A44
+ .word 0x00002A44, 0x00002B1C
+ .word 0x00002B1C, 0x000030A4
+ .word 0x000030A4, 0x00003130
+ .word 0x00003130, 0x000031AC
+ .word 0x000031AC, 0x000033B0
+ .word 0x000033B0, 0x000035BC
+ .word 0x000035BC, 0x000037C8
+ .word 0x000037C8, 0x000039D4
+ .word 0x000039D4, 0x00003A60
+ .word 0x00003A60, 0x00003AF4
+ .word 0x00003AF4, 0x00003B50
+ .word 0x00003B50, 0x00003BA0
+ .word 0x00003BA0, 0x00003BFC
+ .word 0x00003BFC, 0x00003CC4
+ .word 0x00003CC4, 0x00003D20
+ .word 0x00003D20, 0x00003D8C
+ .word 0x00003D8C, 0x00003DC8
+ .word 0x00003DC8, 0x00003E24
+ .word 0x00003E24, 0x00003E74
+ .word 0x00003E74, 0x00004038
+ .word 0x00004038, 0x00004098
+ .word 0x00004098, 0x00004104
+ .word 0x00004104, 0x000041F4
+ .word 0x000041F4, 0x00004250
+ .word 0x00004250, 0x000042B0
+ .word 0x000042B0, 0x00004318
+ .word 0x00004318, 0x00004384
+ .word 0x00004384, 0x0000471C
+ .word 0x0000471C, 0x000047AC
+ .word 0x000047AC, 0x00004828
+ .word 0x00004828, 0x00004994
+ .word 0x00004994, 0x00004D18
+ .word 0x00004D18, 0x00004FE8
+ .word 0x00004FE8, 0x000051CC
+ .word 0x000051CC, 0x00005228
+ .word 0x00005228, 0x00005284
+ .word 0x00005284, 0x0000538C
+ .word 0x0000538C, 0x000053E8
+ .word 0x000053E8, 0x00005464
+ .word 0x00005464, 0x00005860
+ .word 0x00005860, 0x000058CC
+ .word 0x000058CC, 0x0000593C
+ .word 0x0000593C, 0x000059E8
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x000059F0 ; chunk size
+ .incbin "baserom.nds", 0x379B13C, 0x59E8
+ .balign 512, 255
diff --git a/files/FILE_37A0C00_contest_data.narc.s b/files/FILE_37A0C00_contest_data.narc.s
new file mode 100644
index 00000000..3af8bc97
--- /dev/null
+++ b/files/FILE_37A0C00_contest_data.narc.s
@@ -0,0 +1,43 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x0000373C ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000084 ; chunk size
+ .short 15 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00001200
+ .word 0x00001200, 0x00001260
+ .word 0x00001260, 0x000031E0
+ .word 0x000031E0, 0x00003244
+ .word 0x00003244, 0x000032A8
+ .word 0x000032A8, 0x0000330C
+ .word 0x0000330C, 0x00003370
+ .word 0x00003370, 0x000033D4
+ .word 0x000033D4, 0x00003438
+ .word 0x00003438, 0x0000349C
+ .word 0x0000349C, 0x00003500
+ .word 0x00003500, 0x00003564
+ .word 0x00003564, 0x000035C8
+ .word 0x000035C8, 0x0000362C
+ .word 0x0000362C, 0x00003690
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00003698 ; chunk size
+ .incbin "baserom.nds", 0x37A0CAC, 0x3690
+ .balign 512, 255
diff --git a/files/FILE_37A4400_particledata.narc.s b/files/FILE_37A4400_particledata.narc.s
new file mode 100644
index 00000000..8f50ab55
--- /dev/null
+++ b/files/FILE_37A4400_particledata.narc.s
@@ -0,0 +1,34 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x000085FC ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x0000003C ; chunk size
+ .short 6 ; number of files
+ .balign 4
+ .word 0x00000000, 0x000002C8
+ .word 0x000002C8, 0x0000078C
+ .word 0x0000078C, 0x00001F6C
+ .word 0x00001F6C, 0x000051D4
+ .word 0x000051D4, 0x000070A8
+ .word 0x000070A8, 0x00008598
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x000085A0 ; chunk size
+ .incbin "baserom.nds", 0x37A4464, 0x8598
+ .balign 512, 255
diff --git a/files/FILE_37ACA00_zukan_data.narc.s b/files/FILE_37ACA00_zukan_data.narc.s
new file mode 100644
index 00000000..a69055e7
--- /dev/null
+++ b/files/FILE_37ACA00_zukan_data.narc.s
@@ -0,0 +1,86 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00005818 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x000001DC ; chunk size
+ .short 58 ; number of files
+ .balign 4
+ .word 0x00000000, 0x000007B8
+ .word 0x000007B8, 0x00000F70
+ .word 0x00000F70, 0x0000115E
+ .word 0x00001160, 0x0000153C
+ .word 0x0000153C, 0x00001918
+ .word 0x00001918, 0x00001CF4
+ .word 0x00001CF4, 0x000020D0
+ .word 0x000020D0, 0x000024AC
+ .word 0x000024AC, 0x00002888
+ .word 0x00002888, 0x00002C64
+ .word 0x00002C64, 0x00003040
+ .word 0x00003040, 0x0000341A
+ .word 0x0000341C, 0x0000354A
+ .word 0x0000354C, 0x00003926
+ .word 0x00003928, 0x00003D02
+ .word 0x00003D04, 0x000040DE
+ .word 0x000040E0, 0x000044BA
+ .word 0x000044BC, 0x00004896
+ .word 0x00004898, 0x00004946
+ .word 0x00004948, 0x000049AA
+ .word 0x000049AC, 0x00004A1A
+ .word 0x00004A1C, 0x00004A74
+ .word 0x00004A74, 0x00004AFC
+ .word 0x00004AFC, 0x00004B6E
+ .word 0x00004B70, 0x00004C32
+ .word 0x00004C34, 0x00004C70
+ .word 0x00004C70, 0x00004C7C
+ .word 0x00004C7C, 0x00004D1C
+ .word 0x00004D1C, 0x00004D4E
+ .word 0x00004D50, 0x00004DD0
+ .word 0x00004DD0, 0x00004E34
+ .word 0x00004E34, 0x00004E92
+ .word 0x00004E94, 0x00004EDE
+ .word 0x00004EE0, 0x00004F3A
+ .word 0x00004F3C, 0x00004F60
+ .word 0x00004F60, 0x00004F92
+ .word 0x00004F94, 0x00004FD6
+ .word 0x00004FD8, 0x00005090
+ .word 0x00005090, 0x000050FE
+ .word 0x00005100, 0x00005138
+ .word 0x00005138, 0x000051A2
+ .word 0x000051A4, 0x000051D0
+ .word 0x000051D0, 0x000051F6
+ .word 0x000051F8, 0x00005226
+ .word 0x00005228, 0x000052E0
+ .word 0x000052E0, 0x0000537E
+ .word 0x00005380, 0x00005458
+ .word 0x00005458, 0x00005486
+ .word 0x00005488, 0x000054A6
+ .word 0x000054A8, 0x000054FE
+ .word 0x00005500, 0x0000552A
+ .word 0x0000552C, 0x00005548
+ .word 0x00005548, 0x00005572
+ .word 0x00005574, 0x00005592
+ .word 0x00005594, 0x000055A2
+ .word 0x000055A4, 0x000055D4
+ .word 0x000055D4, 0x00005602
+ .word 0x00005604, 0x00005614
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x0000561C ; chunk size
+ .incbin "baserom.nds", 0x37ACC04, 0x5614
+ .balign 512, 255
diff --git a/files/FILE_37B2400_wifi_earth.narc.s b/files/FILE_37B2400_wifi_earth.narc.s
new file mode 100644
index 00000000..ea556db4
--- /dev/null
+++ b/files/FILE_37B2400_wifi_earth.narc.s
@@ -0,0 +1,36 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00025274 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x0000004C ; chunk size
+ .short 8 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00023C84
+ .word 0x00023C84, 0x00023F20
+ .word 0x00023F20, 0x000241BC
+ .word 0x000241BC, 0x00024458
+ .word 0x00024458, 0x000246F4
+ .word 0x000246F4, 0x000247B4
+ .word 0x000247B4, 0x000249DC
+ .word 0x000249DC, 0x00025200
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00025208 ; chunk size
+ .incbin "baserom.nds", 0x37B2474, 0x25200
+ .balign 512, 255
diff --git a/files/FILE_37D7800_wifi_earth_place.narc.s b/files/FILE_37D7800_wifi_earth_place.narc.s
new file mode 100644
index 00000000..ebd1877b
--- /dev/null
+++ b/files/FILE_37D7800_wifi_earth_place.narc.s
@@ -0,0 +1,47 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00000CC8 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x000000A4 ; chunk size
+ .short 19 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000064
+ .word 0x00000064, 0x00000084
+ .word 0x00000084, 0x000000F4
+ .word 0x000000F4, 0x0000012C
+ .word 0x0000012C, 0x000001AC
+ .word 0x000001AC, 0x000001F0
+ .word 0x000001F0, 0x00000238
+ .word 0x00000238, 0x00000254
+ .word 0x00000254, 0x000002B0
+ .word 0x000002B0, 0x000002E4
+ .word 0x000002E4, 0x00000374
+ .word 0x00000374, 0x000003C8
+ .word 0x000003C8, 0x00000494
+ .word 0x00000494, 0x000004E8
+ .word 0x000004E8, 0x0000052C
+ .word 0x0000052C, 0x0000054C
+ .word 0x0000054C, 0x000005B0
+ .word 0x000005B0, 0x00000680
+ .word 0x00000680, 0x00000BFC
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00000C04 ; chunk size
+ .incbin "baserom.nds", 0x37D78CC, 0xBFC
+ .balign 512, 255
diff --git a/files/FILE_37D8600_titledemo.narc.s b/files/FILE_37D8600_titledemo.narc.s
new file mode 100644
index 00000000..7a24933e
--- /dev/null
+++ b/files/FILE_37D8600_titledemo.narc.s
@@ -0,0 +1,48 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00037B10 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x000000AC ; chunk size
+ .short 20 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000824
+ .word 0x00000824, 0x00008864
+ .word 0x00008864, 0x00008A8C
+ .word 0x00008A8C, 0x00010ACC
+ .word 0x00010ACC, 0x00010CF4
+ .word 0x00010CF4, 0x00020D24
+ .word 0x00020D24, 0x0002D698
+ .word 0x0002D698, 0x0002D7D8
+ .word 0x0002D7D8, 0x0002DDFC
+ .word 0x0002DDFC, 0x0002E024
+ .word 0x0002E024, 0x0002E24C
+ .word 0x0002E24C, 0x0002E38C
+ .word 0x0002E38C, 0x0002E9B0
+ .word 0x0002E9B0, 0x0002EBD8
+ .word 0x0002EBD8, 0x0002EE00
+ .word 0x0002EE00, 0x00036E40
+ .word 0x00036E40, 0x00037068
+ .word 0x00037068, 0x0003768C
+ .word 0x0003768C, 0x00037864
+ .word 0x00037864, 0x00037A3C
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00037A44 ; chunk size
+ .incbin "baserom.nds", 0x37D86D4, 0x37A3C
+ .balign 512, 255
diff --git a/files/FILE_3810200_cb_data.narc.s b/files/FILE_3810200_cb_data.narc.s
new file mode 100644
index 00000000..f4df5385
--- /dev/null
+++ b/files/FILE_3810200_cb_data.narc.s
@@ -0,0 +1,323 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x0000ED8C ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000944 ; chunk size
+ .short 295 ; number of files
+ .balign 4
+ .word 0x00000000, 0x0000005C
+ .word 0x0000005C, 0x000000B8
+ .word 0x000000B8, 0x00000114
+ .word 0x00000114, 0x00000170
+ .word 0x00000170, 0x000001CC
+ .word 0x000001CC, 0x00000228
+ .word 0x00000228, 0x00000284
+ .word 0x00000284, 0x000002E0
+ .word 0x000002E0, 0x0000033C
+ .word 0x0000033C, 0x00000398
+ .word 0x00000398, 0x000003F4
+ .word 0x000003F4, 0x00000450
+ .word 0x00000450, 0x000004AC
+ .word 0x000004AC, 0x00000508
+ .word 0x00000508, 0x00000564
+ .word 0x00000564, 0x000005C0
+ .word 0x000005C0, 0x0000061C
+ .word 0x0000061C, 0x00000678
+ .word 0x00000678, 0x000006D4
+ .word 0x000006D4, 0x00000730
+ .word 0x00000730, 0x0000078C
+ .word 0x0000078C, 0x000007E8
+ .word 0x000007E8, 0x00000844
+ .word 0x00000844, 0x000008A0
+ .word 0x000008A0, 0x000008FC
+ .word 0x000008FC, 0x00000958
+ .word 0x00000958, 0x000009B4
+ .word 0x000009B4, 0x00000A10
+ .word 0x00000A10, 0x00000A6C
+ .word 0x00000A6C, 0x00000AC8
+ .word 0x00000AC8, 0x00000B24
+ .word 0x00000B24, 0x00000B80
+ .word 0x00000B80, 0x00000BDC
+ .word 0x00000BDC, 0x00000C38
+ .word 0x00000C38, 0x00000C94
+ .word 0x00000C94, 0x00000CF0
+ .word 0x00000CF0, 0x00000D4C
+ .word 0x00000D4C, 0x00000DA8
+ .word 0x00000DA8, 0x00000E04
+ .word 0x00000E04, 0x00000E60
+ .word 0x00000E60, 0x00000EBC
+ .word 0x00000EBC, 0x00000F18
+ .word 0x00000F18, 0x00000F74
+ .word 0x00000F74, 0x00000FD0
+ .word 0x00000FD0, 0x0000102C
+ .word 0x0000102C, 0x00001088
+ .word 0x00001088, 0x000010E4
+ .word 0x000010E4, 0x00001140
+ .word 0x00001140, 0x0000119C
+ .word 0x0000119C, 0x000011F8
+ .word 0x000011F8, 0x00001254
+ .word 0x00001254, 0x000012B0
+ .word 0x000012B0, 0x0000130C
+ .word 0x0000130C, 0x00001368
+ .word 0x00001368, 0x000013C4
+ .word 0x000013C4, 0x00001420
+ .word 0x00001420, 0x0000147C
+ .word 0x0000147C, 0x000014D8
+ .word 0x000014D8, 0x00001534
+ .word 0x00001534, 0x00001590
+ .word 0x00001590, 0x000015EC
+ .word 0x000015EC, 0x00001648
+ .word 0x00001648, 0x000016A4
+ .word 0x000016A4, 0x00001700
+ .word 0x00001700, 0x0000175C
+ .word 0x0000175C, 0x000017B8
+ .word 0x000017B8, 0x00001814
+ .word 0x00001814, 0x00001870
+ .word 0x00001870, 0x000018CC
+ .word 0x000018CC, 0x00001928
+ .word 0x00001928, 0x00001984
+ .word 0x00001984, 0x000019E0
+ .word 0x000019E0, 0x00001A3C
+ .word 0x00001A3C, 0x00001A98
+ .word 0x00001A98, 0x00001AF4
+ .word 0x00001AF4, 0x00001B50
+ .word 0x00001B50, 0x00001BAC
+ .word 0x00001BAC, 0x00001C08
+ .word 0x00001C08, 0x00001C64
+ .word 0x00001C64, 0x00001CC0
+ .word 0x00001CC0, 0x00001D1C
+ .word 0x00001D1C, 0x00001DB4
+ .word 0x00001DB4, 0x00001E20
+ .word 0x00001E20, 0x00001E84
+ .word 0x00001E84, 0x00001EE8
+ .word 0x00001EE8, 0x00001F4C
+ .word 0x00001F4C, 0x00001FB0
+ .word 0x00001FB0, 0x0000201C
+ .word 0x0000201C, 0x00002078
+ .word 0x00002078, 0x000020D4
+ .word 0x000020D4, 0x00002130
+ .word 0x00002130, 0x0000218C
+ .word 0x0000218C, 0x000021F4
+ .word 0x000021F4, 0x0000225C
+ .word 0x0000225C, 0x000022C4
+ .word 0x000022C4, 0x0000232C
+ .word 0x0000232C, 0x00002394
+ .word 0x00002394, 0x000023FC
+ .word 0x000023FC, 0x00002464
+ .word 0x00002464, 0x000024CC
+ .word 0x000024CC, 0x00002534
+ .word 0x00002534, 0x0000259C
+ .word 0x0000259C, 0x00002604
+ .word 0x00002604, 0x0000266C
+ .word 0x0000266C, 0x000026D4
+ .word 0x000026D4, 0x0000273C
+ .word 0x0000273C, 0x000027A4
+ .word 0x000027A4, 0x0000280C
+ .word 0x0000280C, 0x00002874
+ .word 0x00002874, 0x000028DC
+ .word 0x000028DC, 0x00002944
+ .word 0x00002944, 0x000029AC
+ .word 0x000029AC, 0x00002A14
+ .word 0x00002A14, 0x00002A7C
+ .word 0x00002A7C, 0x00002AE4
+ .word 0x00002AE4, 0x00002B4C
+ .word 0x00002B4C, 0x00002BB4
+ .word 0x00002BB4, 0x00002C1C
+ .word 0x00002C1C, 0x00002C84
+ .word 0x00002C84, 0x00002CEC
+ .word 0x00002CEC, 0x00002D54
+ .word 0x00002D54, 0x00002DBC
+ .word 0x00002DBC, 0x00002E24
+ .word 0x00002E24, 0x00002E8C
+ .word 0x00002E8C, 0x00002EF4
+ .word 0x00002EF4, 0x00002F5C
+ .word 0x00002F5C, 0x00002FC4
+ .word 0x00002FC4, 0x0000302C
+ .word 0x0000302C, 0x00003094
+ .word 0x00003094, 0x000030FC
+ .word 0x000030FC, 0x00003164
+ .word 0x00003164, 0x000031CC
+ .word 0x000031CC, 0x00003234
+ .word 0x00003234, 0x0000329C
+ .word 0x0000329C, 0x00003304
+ .word 0x00003304, 0x0000336C
+ .word 0x0000336C, 0x000033D4
+ .word 0x000033D4, 0x0000343C
+ .word 0x0000343C, 0x000034A4
+ .word 0x000034A4, 0x0000350C
+ .word 0x0000350C, 0x00003574
+ .word 0x00003574, 0x000035DC
+ .word 0x000035DC, 0x00003644
+ .word 0x00003644, 0x000036AC
+ .word 0x000036AC, 0x00003714
+ .word 0x00003714, 0x0000377C
+ .word 0x0000377C, 0x000037E4
+ .word 0x000037E4, 0x0000384C
+ .word 0x0000384C, 0x000038B4
+ .word 0x000038B4, 0x0000391C
+ .word 0x0000391C, 0x00003984
+ .word 0x00003984, 0x000039EC
+ .word 0x000039EC, 0x00003A54
+ .word 0x00003A54, 0x00003ABC
+ .word 0x00003ABC, 0x00003B24
+ .word 0x00003B24, 0x00003B8C
+ .word 0x00003B8C, 0x00003BF4
+ .word 0x00003BF4, 0x00003C5C
+ .word 0x00003C5C, 0x00003CC4
+ .word 0x00003CC4, 0x00003D2C
+ .word 0x00003D2C, 0x00003D94
+ .word 0x00003D94, 0x00003DFC
+ .word 0x00003DFC, 0x00003E64
+ .word 0x00003E64, 0x00003ECC
+ .word 0x00003ECC, 0x00003F34
+ .word 0x00003F34, 0x00003F9C
+ .word 0x00003F9C, 0x00004004
+ .word 0x00004004, 0x0000406C
+ .word 0x0000406C, 0x000040D4
+ .word 0x000040D4, 0x0000413C
+ .word 0x0000413C, 0x000041A4
+ .word 0x000041A4, 0x0000420C
+ .word 0x0000420C, 0x00004274
+ .word 0x00004274, 0x00004370
+ .word 0x00004370, 0x000043E8
+ .word 0x000043E8, 0x00004454
+ .word 0x00004454, 0x000044D8
+ .word 0x000044D8, 0x0000456C
+ .word 0x0000456C, 0x00004600
+ .word 0x00004600, 0x00004670
+ .word 0x00004670, 0x000046DC
+ .word 0x000046DC, 0x00004748
+ .word 0x00004748, 0x000047B4
+ .word 0x000047B4, 0x0000481C
+ .word 0x0000481C, 0x00004870
+ .word 0x00004870, 0x00004978
+ .word 0x00004978, 0x00004A90
+ .word 0x00004A90, 0x00004B98
+ .word 0x00004B98, 0x00004CB4
+ .word 0x00004CB4, 0x00004DB8
+ .word 0x00004DB8, 0x00004ED4
+ .word 0x00004ED4, 0x00004FEC
+ .word 0x00004FEC, 0x000050F8
+ .word 0x000050F8, 0x00005210
+ .word 0x00005210, 0x0000531C
+ .word 0x0000531C, 0x00005434
+ .word 0x00005434, 0x00005540
+ .word 0x00005540, 0x00005644
+ .word 0x00005644, 0x0000574C
+ .word 0x0000574C, 0x00005854
+ .word 0x00005854, 0x0000595C
+ .word 0x0000595C, 0x00005A58
+ .word 0x00005A58, 0x00005B48
+ .word 0x00005B48, 0x00005C4C
+ .word 0x00005C4C, 0x00005D48
+ .word 0x00005D48, 0x00005E54
+ .word 0x00005E54, 0x00005F64
+ .word 0x00005F64, 0x00006078
+ .word 0x00006078, 0x0000618C
+ .word 0x0000618C, 0x00006294
+ .word 0x00006294, 0x000063A8
+ .word 0x000063A8, 0x000064B0
+ .word 0x000064B0, 0x000065C4
+ .word 0x000065C4, 0x000066D0
+ .word 0x000066D0, 0x000067D4
+ .word 0x000067D4, 0x000068E0
+ .word 0x000068E0, 0x000069E0
+ .word 0x000069E0, 0x00006AFC
+ .word 0x00006AFC, 0x00006C14
+ .word 0x00006C14, 0x00006D2C
+ .word 0x00006D2C, 0x00006E44
+ .word 0x00006E44, 0x00006F48
+ .word 0x00006F48, 0x00007044
+ .word 0x00007044, 0x00007148
+ .word 0x00007148, 0x00007244
+ .word 0x00007244, 0x00007348
+ .word 0x00007348, 0x00007444
+ .word 0x00007444, 0x0000754C
+ .word 0x0000754C, 0x00007630
+ .word 0x00007630, 0x00007718
+ .word 0x00007718, 0x00007824
+ .word 0x00007824, 0x00007930
+ .word 0x00007930, 0x00007A14
+ .word 0x00007A14, 0x00007AFC
+ .word 0x00007AFC, 0x00007BE4
+ .word 0x00007BE4, 0x00007CA0
+ .word 0x00007CA0, 0x00007D8C
+ .word 0x00007D8C, 0x00007E60
+ .word 0x00007E60, 0x00007F18
+ .word 0x00007F18, 0x00007FD0
+ .word 0x00007FD0, 0x000080B4
+ .word 0x000080B4, 0x0000816C
+ .word 0x0000816C, 0x000081EC
+ .word 0x000081EC, 0x000082AC
+ .word 0x000082AC, 0x00008388
+ .word 0x00008388, 0x00008430
+ .word 0x00008430, 0x000084F8
+ .word 0x000084F8, 0x000085B8
+ .word 0x000085B8, 0x000086A4
+ .word 0x000086A4, 0x0000876C
+ .word 0x0000876C, 0x00008854
+ .word 0x00008854, 0x00008924
+ .word 0x00008924, 0x00008A04
+ .word 0x00008A04, 0x00008AB4
+ .word 0x00008AB4, 0x00008B84
+ .word 0x00008B84, 0x00008C70
+ .word 0x00008C70, 0x00008D6C
+ .word 0x00008D6C, 0x00008E5C
+ .word 0x00008E5C, 0x00008F34
+ .word 0x00008F34, 0x00008FF4
+ .word 0x00008FF4, 0x000090A8
+ .word 0x000090A8, 0x0000917C
+ .word 0x0000917C, 0x00009278
+ .word 0x00009278, 0x00009364
+ .word 0x00009364, 0x00009474
+ .word 0x00009474, 0x00009568
+ .word 0x00009568, 0x00009884
+ .word 0x00009884, 0x00009D04
+ .word 0x00009D04, 0x0000BB94
+ .word 0x0000BB94, 0x0000BD48
+ .word 0x0000BD48, 0x0000BF90
+ .word 0x0000BF90, 0x0000C378
+ .word 0x0000C378, 0x0000C5B8
+ .word 0x0000C5B8, 0x0000C6F4
+ .word 0x0000C6F4, 0x0000C82C
+ .word 0x0000C82C, 0x0000CB58
+ .word 0x0000CB58, 0x0000CBFC
+ .word 0x0000CBFC, 0x0000CCAC
+ .word 0x0000CCAC, 0x0000CD3C
+ .word 0x0000CD3C, 0x0000CDE8
+ .word 0x0000CDE8, 0x0000CEA8
+ .word 0x0000CEA8, 0x0000CF68
+ .word 0x0000CF68, 0x0000D254
+ .word 0x0000D254, 0x0000D4D0
+ .word 0x0000D4D0, 0x0000D604
+ .word 0x0000D604, 0x0000D7A8
+ .word 0x0000D7A8, 0x0000D9D0
+ .word 0x0000D9D0, 0x0000DBF8
+ .word 0x0000DBF8, 0x0000DC74
+ .word 0x0000DC74, 0x0000DCCE
+ .word 0x0000DCD0, 0x0000DEF8
+ .word 0x0000DEF8, 0x0000E120
+ .word 0x0000E120, 0x0000E17A
+ .word 0x0000E17C, 0x0000E1F8
+ .word 0x0000E1F8, 0x0000E420
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x0000E428 ; chunk size
+ .incbin "baserom.nds", 0x3810B6C, 0xE420
+ .balign 512, 255
diff --git a/files/FILE_381F000_egg_data.narc.s b/files/FILE_381F000_egg_data.narc.s
new file mode 100644
index 00000000..2c0031bf
--- /dev/null
+++ b/files/FILE_381F000_egg_data.narc.s
@@ -0,0 +1,39 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00002AFC ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000064 ; chunk size
+ .short 11 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00001978
+ .word 0x00001978, 0x00001ED8
+ .word 0x00001ED8, 0x00001F4C
+ .word 0x00001F4C, 0x00001FD0
+ .word 0x00001FD0, 0x00002374
+ .word 0x00002374, 0x000023D0
+ .word 0x000023D0, 0x00002464
+ .word 0x00002464, 0x00002770
+ .word 0x00002770, 0x000027EC
+ .word 0x000027EC, 0x00002846
+ .word 0x00002848, 0x00002A70
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00002A78 ; chunk size
+ .incbin "baserom.nds", 0x381F08C, 0x2A70
+ .balign 512, 255
diff --git a/files/FILE_3821C00_egg_demo_particle.narc.s b/files/FILE_3821C00_egg_demo_particle.narc.s
new file mode 100644
index 00000000..ab364d0c
--- /dev/null
+++ b/files/FILE_3821C00_egg_demo_particle.narc.s
@@ -0,0 +1,30 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x000025EC ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x0000001C ; chunk size
+ .short 2 ; number of files
+ .balign 4
+ .word 0x00000000, 0x000014CC
+ .word 0x000014CC, 0x000025A8
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x000025B0 ; chunk size
+ .incbin "baserom.nds", 0x3821C44, 0x25A8
+ .balign 512, 255
diff --git a/files/FILE_3824200_move_model_list.narc.s b/files/FILE_3824200_move_model_list.narc.s
new file mode 100644
index 00000000..39d788e8
--- /dev/null
+++ b/files/FILE_3824200_move_model_list.narc.s
@@ -0,0 +1,44 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00000264 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x0000008C ; chunk size
+ .short 16 ; number of files
+ .balign 4
+ .word 0x00000000, 0x0000001C
+ .word 0x0000001C, 0x00000038
+ .word 0x00000038, 0x00000054
+ .word 0x00000054, 0x00000070
+ .word 0x00000070, 0x0000008C
+ .word 0x0000008C, 0x000000A8
+ .word 0x000000A8, 0x000000C4
+ .word 0x000000C4, 0x000000E0
+ .word 0x000000E0, 0x000000FC
+ .word 0x000000FC, 0x00000118
+ .word 0x00000118, 0x00000134
+ .word 0x00000134, 0x00000150
+ .word 0x00000150, 0x0000016C
+ .word 0x0000016C, 0x00000188
+ .word 0x00000188, 0x000001AC
+ .word 0x000001AC, 0x000001B0
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x000001B8 ; chunk size
+ .incbin "baserom.nds", 0x38242B4, 0x1B0
+ .balign 512, 255
diff --git a/files/FILE_3824600_poke_anm.narc.s b/files/FILE_3824600_poke_anm.narc.s
new file mode 100644
index 00000000..5b0a77c2
--- /dev/null
+++ b/files/FILE_3824600_poke_anm.narc.s
@@ -0,0 +1,162 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00006344 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x0000043C ; chunk size
+ .short 134 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000084
+ .word 0x00000084, 0x000000B0
+ .word 0x000000B0, 0x00000110
+ .word 0x00000110, 0x00000228
+ .word 0x00000228, 0x000002AC
+ .word 0x000002AC, 0x000002D8
+ .word 0x000002D8, 0x00000338
+ .word 0x00000338, 0x000004B0
+ .word 0x000004B0, 0x000004DC
+ .word 0x000004DC, 0x0000052C
+ .word 0x0000052C, 0x00000804
+ .word 0x00000804, 0x0000098C
+ .word 0x0000098C, 0x00000C64
+ .word 0x00000C64, 0x00000CB4
+ .word 0x00000CB4, 0x00000E50
+ .word 0x00000E50, 0x00000EE4
+ .word 0x00000EE4, 0x00000F10
+ .word 0x00000F10, 0x00000F60
+ .word 0x00000F60, 0x00000FB0
+ .word 0x00000FB0, 0x00001070
+ .word 0x00001070, 0x000010C0
+ .word 0x000010C0, 0x00001120
+ .word 0x00001120, 0x00001170
+ .word 0x00001170, 0x00001448
+ .word 0x00001448, 0x000014CC
+ .word 0x000014CC, 0x00001550
+ .word 0x00001550, 0x000015D4
+ .word 0x000015D4, 0x00001658
+ .word 0x00001658, 0x000016DC
+ .word 0x000016DC, 0x00001760
+ .word 0x00001760, 0x000017E4
+ .word 0x000017E4, 0x00001868
+ .word 0x00001868, 0x000018EC
+ .word 0x000018EC, 0x00001970
+ .word 0x00001970, 0x000019F4
+ .word 0x000019F4, 0x00001A78
+ .word 0x00001A78, 0x00001AFC
+ .word 0x00001AFC, 0x00001B80
+ .word 0x00001B80, 0x00001C04
+ .word 0x00001C04, 0x00001C88
+ .word 0x00001C88, 0x00001D0C
+ .word 0x00001D0C, 0x00001D90
+ .word 0x00001D90, 0x00001E14
+ .word 0x00001E14, 0x00001E98
+ .word 0x00001E98, 0x00001F1C
+ .word 0x00001F1C, 0x00001FA0
+ .word 0x00001FA0, 0x00002024
+ .word 0x00002024, 0x000020A8
+ .word 0x000020A8, 0x0000212C
+ .word 0x0000212C, 0x000021B0
+ .word 0x000021B0, 0x00002244
+ .word 0x00002244, 0x000022D8
+ .word 0x000022D8, 0x0000236C
+ .word 0x0000236C, 0x00002398
+ .word 0x00002398, 0x000023C4
+ .word 0x000023C4, 0x000023F0
+ .word 0x000023F0, 0x0000241C
+ .word 0x0000241C, 0x00002448
+ .word 0x00002448, 0x00002474
+ .word 0x00002474, 0x000024A0
+ .word 0x000024A0, 0x000024CC
+ .word 0x000024CC, 0x000024F8
+ .word 0x000024F8, 0x00002554
+ .word 0x00002554, 0x000025A4
+ .word 0x000025A4, 0x000025F4
+ .word 0x000025F4, 0x00002650
+ .word 0x00002650, 0x000026A0
+ .word 0x000026A0, 0x000026F0
+ .word 0x000026F0, 0x00002794
+ .word 0x00002794, 0x0000282C
+ .word 0x0000282C, 0x000028C4
+ .word 0x000028C4, 0x00002A60
+ .word 0x00002A60, 0x00002BFC
+ .word 0x00002BFC, 0x00002D98
+ .word 0x00002D98, 0x00002F3C
+ .word 0x00002F3C, 0x000030D4
+ .word 0x000030D4, 0x0000326C
+ .word 0x0000326C, 0x0000340C
+ .word 0x0000340C, 0x000035A0
+ .word 0x000035A0, 0x00003734
+ .word 0x00003734, 0x000038D4
+ .word 0x000038D4, 0x00003A68
+ .word 0x00003A68, 0x00003BFC
+ .word 0x00003BFC, 0x00003DC8
+ .word 0x00003DC8, 0x00003EFC
+ .word 0x00003EFC, 0x00004030
+ .word 0x00004030, 0x0000407C
+ .word 0x0000407C, 0x000040BC
+ .word 0x000040BC, 0x000040FC
+ .word 0x000040FC, 0x00004214
+ .word 0x00004214, 0x0000432C
+ .word 0x0000432C, 0x00004444
+ .word 0x00004444, 0x00004520
+ .word 0x00004520, 0x000045FC
+ .word 0x000045FC, 0x000046D8
+ .word 0x000046D8, 0x00004734
+ .word 0x00004734, 0x00004790
+ .word 0x00004790, 0x000047EC
+ .word 0x000047EC, 0x00004848
+ .word 0x00004848, 0x000048A4
+ .word 0x000048A4, 0x00004900
+ .word 0x00004900, 0x0000495C
+ .word 0x0000495C, 0x000049B8
+ .word 0x000049B8, 0x00004A14
+ .word 0x00004A14, 0x00004C18
+ .word 0x00004C18, 0x00004D28
+ .word 0x00004D28, 0x00004F98
+ .word 0x00004F98, 0x00005068
+ .word 0x00005068, 0x0000512C
+ .word 0x0000512C, 0x000051F0
+ .word 0x000051F0, 0x00005258
+ .word 0x00005258, 0x000052C0
+ .word 0x000052C0, 0x00005328
+ .word 0x00005328, 0x00005384
+ .word 0x00005384, 0x000053D4
+ .word 0x000053D4, 0x00005424
+ .word 0x00005424, 0x00005484
+ .word 0x00005484, 0x000054E4
+ .word 0x000054E4, 0x00005544
+ .word 0x00005544, 0x000055EC
+ .word 0x000055EC, 0x00005688
+ .word 0x00005688, 0x00005724
+ .word 0x00005724, 0x00005864
+ .word 0x00005864, 0x00005998
+ .word 0x00005998, 0x00005ACC
+ .word 0x00005ACC, 0x00005B2C
+ .word 0x00005B2C, 0x00005B8C
+ .word 0x00005B8C, 0x00005BE0
+ .word 0x00005BE0, 0x00005C48
+ .word 0x00005C48, 0x00005CB0
+ .word 0x00005CB0, 0x00005D18
+ .word 0x00005D18, 0x00005DB0
+ .word 0x00005DB0, 0x00005E48
+ .word 0x00005E48, 0x00005EE0
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00005EE8 ; chunk size
+ .incbin "baserom.nds", 0x3824A64, 0x5EE0
+ .balign 512, 255
diff --git a/files/FILE_382AA00_tr_ai_seq.narc.s b/files/FILE_382AA00_tr_ai_seq.narc.s
new file mode 100644
index 00000000..06c6d3c5
--- /dev/null
+++ b/files/FILE_382AA00_tr_ai_seq.narc.s
@@ -0,0 +1,29 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x0000A5D0 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000014 ; chunk size
+ .short 1 ; number of files
+ .balign 4
+ .word 0x00000000, 0x0000A594
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x0000A59C ; chunk size
+ .incbin "baserom.nds", 0x382AA3C, 0xA594
+ .balign 512, 255
diff --git a/files/FILE_3835000_bm_anime.narc.s b/files/FILE_3835000_bm_anime.narc.s
new file mode 100644
index 00000000..2f1be08b
--- /dev/null
+++ b/files/FILE_3835000_bm_anime.narc.s
@@ -0,0 +1,92 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00009200 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x0000020C ; chunk size
+ .short 64 ; number of files
+ .balign 4
+ .word 0x00000000, 0x000000C8
+ .word 0x000000C8, 0x00000200
+ .word 0x00000200, 0x00000338
+ .word 0x00000338, 0x00000470
+ .word 0x00000470, 0x000006D4
+ .word 0x000006D4, 0x000007D4
+ .word 0x000007D4, 0x000008D4
+ .word 0x000008D4, 0x0000097C
+ .word 0x0000097C, 0x00000A24
+ .word 0x00000A24, 0x00000ABC
+ .word 0x00000ABC, 0x00000B54
+ .word 0x00000B54, 0x00000C18
+ .word 0x00000C18, 0x00000CDC
+ .word 0x00000CDC, 0x00000DA0
+ .word 0x00000DA0, 0x0000102C
+ .word 0x0000102C, 0x000011E4
+ .word 0x000011E4, 0x0000139C
+ .word 0x0000139C, 0x000014A8
+ .word 0x000014A8, 0x0000175C
+ .word 0x0000175C, 0x000018F8
+ .word 0x000018F8, 0x000019CC
+ .word 0x000019CC, 0x00001AA0
+ .word 0x00001AA0, 0x00001BC4
+ .word 0x00001BC4, 0x00001CD0
+ .word 0x00001CD0, 0x00001E00
+ .word 0x00001E00, 0x0000240C
+ .word 0x0000240C, 0x00002938
+ .word 0x00002938, 0x00002A94
+ .word 0x00002A94, 0x00002BF0
+ .word 0x00002BF0, 0x00002D10
+ .word 0x00002D10, 0x00002E30
+ .word 0x00002E30, 0x00002F70
+ .word 0x00002F70, 0x000030B8
+ .word 0x000030B8, 0x00003170
+ .word 0x00003170, 0x00003228
+ .word 0x00003228, 0x00003310
+ .word 0x00003310, 0x000033F8
+ .word 0x000033F8, 0x00003594
+ .word 0x00003594, 0x0000372C
+ .word 0x0000372C, 0x00004C7C
+ .word 0x00004C7C, 0x00006250
+ .word 0x00006250, 0x0000636C
+ .word 0x0000636C, 0x00006488
+ .word 0x00006488, 0x00006C34
+ .word 0x00006C34, 0x00006D54
+ .word 0x00006D54, 0x00007578
+ .word 0x00007578, 0x0000769C
+ .word 0x0000769C, 0x000077C0
+ .word 0x000077C0, 0x000078E4
+ .word 0x000078E4, 0x00007990
+ .word 0x00007990, 0x00007A54
+ .word 0x00007A54, 0x00007B60
+ .word 0x00007B60, 0x00007C6C
+ .word 0x00007C6C, 0x00007D8C
+ .word 0x00007D8C, 0x00007F9C
+ .word 0x00007F9C, 0x000080F8
+ .word 0x000080F8, 0x00008254
+ .word 0x00008254, 0x000083B0
+ .word 0x000083B0, 0x000084CC
+ .word 0x000084CC, 0x0000885C
+ .word 0x0000885C, 0x000089B8
+ .word 0x000089B8, 0x00008B54
+ .word 0x00008B54, 0x00008CF0
+ .word 0x00008CF0, 0x00008FCC
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00008FD4 ; chunk size
+ .incbin "baserom.nds", 0x3835234, 0x8FCC
+ .balign 512, 255
diff --git a/files/FILE_383E200_bm_anime_list.narc.s b/files/FILE_383E200_bm_anime_list.narc.s
new file mode 100644
index 00000000..618aaddf
--- /dev/null
+++ b/files/FILE_383E200_bm_anime_list.narc.s
@@ -0,0 +1,563 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00003AB8 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x000010C4 ; chunk size
+ .short 535 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000014
+ .word 0x00000014, 0x00000028
+ .word 0x00000028, 0x0000003C
+ .word 0x0000003C, 0x00000050
+ .word 0x00000050, 0x00000064
+ .word 0x00000064, 0x00000078
+ .word 0x00000078, 0x0000008C
+ .word 0x0000008C, 0x000000A0
+ .word 0x000000A0, 0x000000B4
+ .word 0x000000B4, 0x000000C8
+ .word 0x000000C8, 0x000000DC
+ .word 0x000000DC, 0x000000F0
+ .word 0x000000F0, 0x00000104
+ .word 0x00000104, 0x00000118
+ .word 0x00000118, 0x0000012C
+ .word 0x0000012C, 0x00000140
+ .word 0x00000140, 0x00000154
+ .word 0x00000154, 0x00000168
+ .word 0x00000168, 0x0000017C
+ .word 0x0000017C, 0x00000190
+ .word 0x00000190, 0x000001A4
+ .word 0x000001A4, 0x000001B8
+ .word 0x000001B8, 0x000001CC
+ .word 0x000001CC, 0x000001E0
+ .word 0x000001E0, 0x000001F4
+ .word 0x000001F4, 0x00000208
+ .word 0x00000208, 0x0000021C
+ .word 0x0000021C, 0x00000230
+ .word 0x00000230, 0x00000244
+ .word 0x00000244, 0x00000258
+ .word 0x00000258, 0x0000026C
+ .word 0x0000026C, 0x00000280
+ .word 0x00000280, 0x00000294
+ .word 0x00000294, 0x000002A8
+ .word 0x000002A8, 0x000002BC
+ .word 0x000002BC, 0x000002D0
+ .word 0x000002D0, 0x000002E4
+ .word 0x000002E4, 0x000002F8
+ .word 0x000002F8, 0x0000030C
+ .word 0x0000030C, 0x00000320
+ .word 0x00000320, 0x00000334
+ .word 0x00000334, 0x00000348
+ .word 0x00000348, 0x0000035C
+ .word 0x0000035C, 0x00000370
+ .word 0x00000370, 0x00000384
+ .word 0x00000384, 0x00000398
+ .word 0x00000398, 0x000003AC
+ .word 0x000003AC, 0x000003C0
+ .word 0x000003C0, 0x000003D4
+ .word 0x000003D4, 0x000003E8
+ .word 0x000003E8, 0x000003FC
+ .word 0x000003FC, 0x00000410
+ .word 0x00000410, 0x00000424
+ .word 0x00000424, 0x00000438
+ .word 0x00000438, 0x0000044C
+ .word 0x0000044C, 0x00000460
+ .word 0x00000460, 0x00000474
+ .word 0x00000474, 0x00000488
+ .word 0x00000488, 0x0000049C
+ .word 0x0000049C, 0x000004B0
+ .word 0x000004B0, 0x000004C4
+ .word 0x000004C4, 0x000004D8
+ .word 0x000004D8, 0x000004EC
+ .word 0x000004EC, 0x00000500
+ .word 0x00000500, 0x00000514
+ .word 0x00000514, 0x00000528
+ .word 0x00000528, 0x0000053C
+ .word 0x0000053C, 0x00000550
+ .word 0x00000550, 0x00000564
+ .word 0x00000564, 0x00000578
+ .word 0x00000578, 0x0000058C
+ .word 0x0000058C, 0x000005A0
+ .word 0x000005A0, 0x000005B4
+ .word 0x000005B4, 0x000005C8
+ .word 0x000005C8, 0x000005DC
+ .word 0x000005DC, 0x000005F0
+ .word 0x000005F0, 0x00000604
+ .word 0x00000604, 0x00000618
+ .word 0x00000618, 0x0000062C
+ .word 0x0000062C, 0x00000640
+ .word 0x00000640, 0x00000654
+ .word 0x00000654, 0x00000668
+ .word 0x00000668, 0x0000067C
+ .word 0x0000067C, 0x00000690
+ .word 0x00000690, 0x000006A4
+ .word 0x000006A4, 0x000006B8
+ .word 0x000006B8, 0x000006CC
+ .word 0x000006CC, 0x000006E0
+ .word 0x000006E0, 0x000006F4
+ .word 0x000006F4, 0x00000708
+ .word 0x00000708, 0x0000071C
+ .word 0x0000071C, 0x00000730
+ .word 0x00000730, 0x00000744
+ .word 0x00000744, 0x00000758
+ .word 0x00000758, 0x0000076C
+ .word 0x0000076C, 0x00000780
+ .word 0x00000780, 0x00000794
+ .word 0x00000794, 0x000007A8
+ .word 0x000007A8, 0x000007BC
+ .word 0x000007BC, 0x000007D0
+ .word 0x000007D0, 0x000007E4
+ .word 0x000007E4, 0x000007F8
+ .word 0x000007F8, 0x0000080C
+ .word 0x0000080C, 0x00000820
+ .word 0x00000820, 0x00000834
+ .word 0x00000834, 0x00000848
+ .word 0x00000848, 0x0000085C
+ .word 0x0000085C, 0x00000870
+ .word 0x00000870, 0x00000884
+ .word 0x00000884, 0x00000898
+ .word 0x00000898, 0x000008AC
+ .word 0x000008AC, 0x000008C0
+ .word 0x000008C0, 0x000008D4
+ .word 0x000008D4, 0x000008E8
+ .word 0x000008E8, 0x000008FC
+ .word 0x000008FC, 0x00000910
+ .word 0x00000910, 0x00000924
+ .word 0x00000924, 0x00000938
+ .word 0x00000938, 0x0000094C
+ .word 0x0000094C, 0x00000960
+ .word 0x00000960, 0x00000974
+ .word 0x00000974, 0x00000988
+ .word 0x00000988, 0x0000099C
+ .word 0x0000099C, 0x000009B0
+ .word 0x000009B0, 0x000009C4
+ .word 0x000009C4, 0x000009D8
+ .word 0x000009D8, 0x000009EC
+ .word 0x000009EC, 0x00000A00
+ .word 0x00000A00, 0x00000A14
+ .word 0x00000A14, 0x00000A28
+ .word 0x00000A28, 0x00000A3C
+ .word 0x00000A3C, 0x00000A50
+ .word 0x00000A50, 0x00000A64
+ .word 0x00000A64, 0x00000A78
+ .word 0x00000A78, 0x00000A8C
+ .word 0x00000A8C, 0x00000AA0
+ .word 0x00000AA0, 0x00000AB4
+ .word 0x00000AB4, 0x00000AC8
+ .word 0x00000AC8, 0x00000ADC
+ .word 0x00000ADC, 0x00000AF0
+ .word 0x00000AF0, 0x00000B04
+ .word 0x00000B04, 0x00000B18
+ .word 0x00000B18, 0x00000B2C
+ .word 0x00000B2C, 0x00000B40
+ .word 0x00000B40, 0x00000B54
+ .word 0x00000B54, 0x00000B68
+ .word 0x00000B68, 0x00000B7C
+ .word 0x00000B7C, 0x00000B90
+ .word 0x00000B90, 0x00000BA4
+ .word 0x00000BA4, 0x00000BB8
+ .word 0x00000BB8, 0x00000BCC
+ .word 0x00000BCC, 0x00000BE0
+ .word 0x00000BE0, 0x00000BF4
+ .word 0x00000BF4, 0x00000C08
+ .word 0x00000C08, 0x00000C1C
+ .word 0x00000C1C, 0x00000C30
+ .word 0x00000C30, 0x00000C44
+ .word 0x00000C44, 0x00000C58
+ .word 0x00000C58, 0x00000C6C
+ .word 0x00000C6C, 0x00000C80
+ .word 0x00000C80, 0x00000C94
+ .word 0x00000C94, 0x00000CA8
+ .word 0x00000CA8, 0x00000CBC
+ .word 0x00000CBC, 0x00000CD0
+ .word 0x00000CD0, 0x00000CE4
+ .word 0x00000CE4, 0x00000CF8
+ .word 0x00000CF8, 0x00000D0C
+ .word 0x00000D0C, 0x00000D20
+ .word 0x00000D20, 0x00000D34
+ .word 0x00000D34, 0x00000D48
+ .word 0x00000D48, 0x00000D5C
+ .word 0x00000D5C, 0x00000D70
+ .word 0x00000D70, 0x00000D84
+ .word 0x00000D84, 0x00000D98
+ .word 0x00000D98, 0x00000DAC
+ .word 0x00000DAC, 0x00000DC0
+ .word 0x00000DC0, 0x00000DD4
+ .word 0x00000DD4, 0x00000DE8
+ .word 0x00000DE8, 0x00000DFC
+ .word 0x00000DFC, 0x00000E10
+ .word 0x00000E10, 0x00000E24
+ .word 0x00000E24, 0x00000E38
+ .word 0x00000E38, 0x00000E4C
+ .word 0x00000E4C, 0x00000E60
+ .word 0x00000E60, 0x00000E74
+ .word 0x00000E74, 0x00000E88
+ .word 0x00000E88, 0x00000E9C
+ .word 0x00000E9C, 0x00000EB0
+ .word 0x00000EB0, 0x00000EC4
+ .word 0x00000EC4, 0x00000ED8
+ .word 0x00000ED8, 0x00000EEC
+ .word 0x00000EEC, 0x00000F00
+ .word 0x00000F00, 0x00000F14
+ .word 0x00000F14, 0x00000F28
+ .word 0x00000F28, 0x00000F3C
+ .word 0x00000F3C, 0x00000F50
+ .word 0x00000F50, 0x00000F64
+ .word 0x00000F64, 0x00000F78
+ .word 0x00000F78, 0x00000F8C
+ .word 0x00000F8C, 0x00000FA0
+ .word 0x00000FA0, 0x00000FB4
+ .word 0x00000FB4, 0x00000FC8
+ .word 0x00000FC8, 0x00000FDC
+ .word 0x00000FDC, 0x00000FF0
+ .word 0x00000FF0, 0x00001004
+ .word 0x00001004, 0x00001018
+ .word 0x00001018, 0x0000102C
+ .word 0x0000102C, 0x00001040
+ .word 0x00001040, 0x00001054
+ .word 0x00001054, 0x00001068
+ .word 0x00001068, 0x0000107C
+ .word 0x0000107C, 0x00001090
+ .word 0x00001090, 0x000010A4
+ .word 0x000010A4, 0x000010B8
+ .word 0x000010B8, 0x000010CC
+ .word 0x000010CC, 0x000010E0
+ .word 0x000010E0, 0x000010F4
+ .word 0x000010F4, 0x00001108
+ .word 0x00001108, 0x0000111C
+ .word 0x0000111C, 0x00001130
+ .word 0x00001130, 0x00001144
+ .word 0x00001144, 0x00001158
+ .word 0x00001158, 0x0000116C
+ .word 0x0000116C, 0x00001180
+ .word 0x00001180, 0x00001194
+ .word 0x00001194, 0x000011A8
+ .word 0x000011A8, 0x000011BC
+ .word 0x000011BC, 0x000011D0
+ .word 0x000011D0, 0x000011E4
+ .word 0x000011E4, 0x000011F8
+ .word 0x000011F8, 0x0000120C
+ .word 0x0000120C, 0x00001220
+ .word 0x00001220, 0x00001234
+ .word 0x00001234, 0x00001248
+ .word 0x00001248, 0x0000125C
+ .word 0x0000125C, 0x00001270
+ .word 0x00001270, 0x00001284
+ .word 0x00001284, 0x00001298
+ .word 0x00001298, 0x000012AC
+ .word 0x000012AC, 0x000012C0
+ .word 0x000012C0, 0x000012D4
+ .word 0x000012D4, 0x000012E8
+ .word 0x000012E8, 0x000012FC
+ .word 0x000012FC, 0x00001310
+ .word 0x00001310, 0x00001324
+ .word 0x00001324, 0x00001338
+ .word 0x00001338, 0x0000134C
+ .word 0x0000134C, 0x00001360
+ .word 0x00001360, 0x00001374
+ .word 0x00001374, 0x00001388
+ .word 0x00001388, 0x0000139C
+ .word 0x0000139C, 0x000013B0
+ .word 0x000013B0, 0x000013C4
+ .word 0x000013C4, 0x000013D8
+ .word 0x000013D8, 0x000013EC
+ .word 0x000013EC, 0x00001400
+ .word 0x00001400, 0x00001414
+ .word 0x00001414, 0x00001428
+ .word 0x00001428, 0x0000143C
+ .word 0x0000143C, 0x00001450
+ .word 0x00001450, 0x00001464
+ .word 0x00001464, 0x00001478
+ .word 0x00001478, 0x0000148C
+ .word 0x0000148C, 0x000014A0
+ .word 0x000014A0, 0x000014B4
+ .word 0x000014B4, 0x000014C8
+ .word 0x000014C8, 0x000014DC
+ .word 0x000014DC, 0x000014F0
+ .word 0x000014F0, 0x00001504
+ .word 0x00001504, 0x00001518
+ .word 0x00001518, 0x0000152C
+ .word 0x0000152C, 0x00001540
+ .word 0x00001540, 0x00001554
+ .word 0x00001554, 0x00001568
+ .word 0x00001568, 0x0000157C
+ .word 0x0000157C, 0x00001590
+ .word 0x00001590, 0x000015A4
+ .word 0x000015A4, 0x000015B8
+ .word 0x000015B8, 0x000015CC
+ .word 0x000015CC, 0x000015E0
+ .word 0x000015E0, 0x000015F4
+ .word 0x000015F4, 0x00001608
+ .word 0x00001608, 0x0000161C
+ .word 0x0000161C, 0x00001630
+ .word 0x00001630, 0x00001644
+ .word 0x00001644, 0x00001658
+ .word 0x00001658, 0x0000166C
+ .word 0x0000166C, 0x00001680
+ .word 0x00001680, 0x00001694
+ .word 0x00001694, 0x000016A8
+ .word 0x000016A8, 0x000016BC
+ .word 0x000016BC, 0x000016D0
+ .word 0x000016D0, 0x000016E4
+ .word 0x000016E4, 0x000016F8
+ .word 0x000016F8, 0x0000170C
+ .word 0x0000170C, 0x00001720
+ .word 0x00001720, 0x00001734
+ .word 0x00001734, 0x00001748
+ .word 0x00001748, 0x0000175C
+ .word 0x0000175C, 0x00001770
+ .word 0x00001770, 0x00001784
+ .word 0x00001784, 0x00001798
+ .word 0x00001798, 0x000017AC
+ .word 0x000017AC, 0x000017C0
+ .word 0x000017C0, 0x000017D4
+ .word 0x000017D4, 0x000017E8
+ .word 0x000017E8, 0x000017FC
+ .word 0x000017FC, 0x00001810
+ .word 0x00001810, 0x00001824
+ .word 0x00001824, 0x00001838
+ .word 0x00001838, 0x0000184C
+ .word 0x0000184C, 0x00001860
+ .word 0x00001860, 0x00001874
+ .word 0x00001874, 0x00001888
+ .word 0x00001888, 0x0000189C
+ .word 0x0000189C, 0x000018B0
+ .word 0x000018B0, 0x000018C4
+ .word 0x000018C4, 0x000018D8
+ .word 0x000018D8, 0x000018EC
+ .word 0x000018EC, 0x00001900
+ .word 0x00001900, 0x00001914
+ .word 0x00001914, 0x00001928
+ .word 0x00001928, 0x0000193C
+ .word 0x0000193C, 0x00001950
+ .word 0x00001950, 0x00001964
+ .word 0x00001964, 0x00001978
+ .word 0x00001978, 0x0000198C
+ .word 0x0000198C, 0x000019A0
+ .word 0x000019A0, 0x000019B4
+ .word 0x000019B4, 0x000019C8
+ .word 0x000019C8, 0x000019DC
+ .word 0x000019DC, 0x000019F0
+ .word 0x000019F0, 0x00001A04
+ .word 0x00001A04, 0x00001A18
+ .word 0x00001A18, 0x00001A2C
+ .word 0x00001A2C, 0x00001A40
+ .word 0x00001A40, 0x00001A54
+ .word 0x00001A54, 0x00001A68
+ .word 0x00001A68, 0x00001A7C
+ .word 0x00001A7C, 0x00001A90
+ .word 0x00001A90, 0x00001AA4
+ .word 0x00001AA4, 0x00001AB8
+ .word 0x00001AB8, 0x00001ACC
+ .word 0x00001ACC, 0x00001AE0
+ .word 0x00001AE0, 0x00001AF4
+ .word 0x00001AF4, 0x00001B08
+ .word 0x00001B08, 0x00001B1C
+ .word 0x00001B1C, 0x00001B30
+ .word 0x00001B30, 0x00001B44
+ .word 0x00001B44, 0x00001B58
+ .word 0x00001B58, 0x00001B6C
+ .word 0x00001B6C, 0x00001B80
+ .word 0x00001B80, 0x00001B94
+ .word 0x00001B94, 0x00001BA8
+ .word 0x00001BA8, 0x00001BBC
+ .word 0x00001BBC, 0x00001BD0
+ .word 0x00001BD0, 0x00001BE4
+ .word 0x00001BE4, 0x00001BF8
+ .word 0x00001BF8, 0x00001C0C
+ .word 0x00001C0C, 0x00001C20
+ .word 0x00001C20, 0x00001C34
+ .word 0x00001C34, 0x00001C48
+ .word 0x00001C48, 0x00001C5C
+ .word 0x00001C5C, 0x00001C70
+ .word 0x00001C70, 0x00001C84
+ .word 0x00001C84, 0x00001C98
+ .word 0x00001C98, 0x00001CAC
+ .word 0x00001CAC, 0x00001CC0
+ .word 0x00001CC0, 0x00001CD4
+ .word 0x00001CD4, 0x00001CE8
+ .word 0x00001CE8, 0x00001CFC
+ .word 0x00001CFC, 0x00001D10
+ .word 0x00001D10, 0x00001D24
+ .word 0x00001D24, 0x00001D38
+ .word 0x00001D38, 0x00001D4C
+ .word 0x00001D4C, 0x00001D60
+ .word 0x00001D60, 0x00001D74
+ .word 0x00001D74, 0x00001D88
+ .word 0x00001D88, 0x00001D9C
+ .word 0x00001D9C, 0x00001DB0
+ .word 0x00001DB0, 0x00001DC4
+ .word 0x00001DC4, 0x00001DD8
+ .word 0x00001DD8, 0x00001DEC
+ .word 0x00001DEC, 0x00001E00
+ .word 0x00001E00, 0x00001E14
+ .word 0x00001E14, 0x00001E28
+ .word 0x00001E28, 0x00001E3C
+ .word 0x00001E3C, 0x00001E50
+ .word 0x00001E50, 0x00001E64
+ .word 0x00001E64, 0x00001E78
+ .word 0x00001E78, 0x00001E8C
+ .word 0x00001E8C, 0x00001EA0
+ .word 0x00001EA0, 0x00001EB4
+ .word 0x00001EB4, 0x00001EC8
+ .word 0x00001EC8, 0x00001EDC
+ .word 0x00001EDC, 0x00001EF0
+ .word 0x00001EF0, 0x00001F04
+ .word 0x00001F04, 0x00001F18
+ .word 0x00001F18, 0x00001F2C
+ .word 0x00001F2C, 0x00001F40
+ .word 0x00001F40, 0x00001F54
+ .word 0x00001F54, 0x00001F68
+ .word 0x00001F68, 0x00001F7C
+ .word 0x00001F7C, 0x00001F90
+ .word 0x00001F90, 0x00001FA4
+ .word 0x00001FA4, 0x00001FB8
+ .word 0x00001FB8, 0x00001FCC
+ .word 0x00001FCC, 0x00001FE0
+ .word 0x00001FE0, 0x00001FF4
+ .word 0x00001FF4, 0x00002008
+ .word 0x00002008, 0x0000201C
+ .word 0x0000201C, 0x00002030
+ .word 0x00002030, 0x00002044
+ .word 0x00002044, 0x00002058
+ .word 0x00002058, 0x0000206C
+ .word 0x0000206C, 0x00002080
+ .word 0x00002080, 0x00002094
+ .word 0x00002094, 0x000020A8
+ .word 0x000020A8, 0x000020BC
+ .word 0x000020BC, 0x000020D0
+ .word 0x000020D0, 0x000020E4
+ .word 0x000020E4, 0x000020F8
+ .word 0x000020F8, 0x0000210C
+ .word 0x0000210C, 0x00002120
+ .word 0x00002120, 0x00002134
+ .word 0x00002134, 0x00002148
+ .word 0x00002148, 0x0000215C
+ .word 0x0000215C, 0x00002170
+ .word 0x00002170, 0x00002184
+ .word 0x00002184, 0x00002198
+ .word 0x00002198, 0x000021AC
+ .word 0x000021AC, 0x000021C0
+ .word 0x000021C0, 0x000021D4
+ .word 0x000021D4, 0x000021E8
+ .word 0x000021E8, 0x000021FC
+ .word 0x000021FC, 0x00002210
+ .word 0x00002210, 0x00002224
+ .word 0x00002224, 0x00002238
+ .word 0x00002238, 0x0000224C
+ .word 0x0000224C, 0x00002260
+ .word 0x00002260, 0x00002274
+ .word 0x00002274, 0x00002288
+ .word 0x00002288, 0x0000229C
+ .word 0x0000229C, 0x000022B0
+ .word 0x000022B0, 0x000022C4
+ .word 0x000022C4, 0x000022D8
+ .word 0x000022D8, 0x000022EC
+ .word 0x000022EC, 0x00002300
+ .word 0x00002300, 0x00002314
+ .word 0x00002314, 0x00002328
+ .word 0x00002328, 0x0000233C
+ .word 0x0000233C, 0x00002350
+ .word 0x00002350, 0x00002364
+ .word 0x00002364, 0x00002378
+ .word 0x00002378, 0x0000238C
+ .word 0x0000238C, 0x000023A0
+ .word 0x000023A0, 0x000023B4
+ .word 0x000023B4, 0x000023C8
+ .word 0x000023C8, 0x000023DC
+ .word 0x000023DC, 0x000023F0
+ .word 0x000023F0, 0x00002404
+ .word 0x00002404, 0x00002418
+ .word 0x00002418, 0x0000242C
+ .word 0x0000242C, 0x00002440
+ .word 0x00002440, 0x00002454
+ .word 0x00002454, 0x00002468
+ .word 0x00002468, 0x0000247C
+ .word 0x0000247C, 0x00002490
+ .word 0x00002490, 0x000024A4
+ .word 0x000024A4, 0x000024B8
+ .word 0x000024B8, 0x000024CC
+ .word 0x000024CC, 0x000024E0
+ .word 0x000024E0, 0x000024F4
+ .word 0x000024F4, 0x00002508
+ .word 0x00002508, 0x0000251C
+ .word 0x0000251C, 0x00002530
+ .word 0x00002530, 0x00002544
+ .word 0x00002544, 0x00002558
+ .word 0x00002558, 0x0000256C
+ .word 0x0000256C, 0x00002580
+ .word 0x00002580, 0x00002594
+ .word 0x00002594, 0x000025A8
+ .word 0x000025A8, 0x000025BC
+ .word 0x000025BC, 0x000025D0
+ .word 0x000025D0, 0x000025E4
+ .word 0x000025E4, 0x000025F8
+ .word 0x000025F8, 0x0000260C
+ .word 0x0000260C, 0x00002620
+ .word 0x00002620, 0x00002634
+ .word 0x00002634, 0x00002648
+ .word 0x00002648, 0x0000265C
+ .word 0x0000265C, 0x00002670
+ .word 0x00002670, 0x00002684
+ .word 0x00002684, 0x00002698
+ .word 0x00002698, 0x000026AC
+ .word 0x000026AC, 0x000026C0
+ .word 0x000026C0, 0x000026D4
+ .word 0x000026D4, 0x000026E8
+ .word 0x000026E8, 0x000026FC
+ .word 0x000026FC, 0x00002710
+ .word 0x00002710, 0x00002724
+ .word 0x00002724, 0x00002738
+ .word 0x00002738, 0x0000274C
+ .word 0x0000274C, 0x00002760
+ .word 0x00002760, 0x00002774
+ .word 0x00002774, 0x00002788
+ .word 0x00002788, 0x0000279C
+ .word 0x0000279C, 0x000027B0
+ .word 0x000027B0, 0x000027C4
+ .word 0x000027C4, 0x000027D8
+ .word 0x000027D8, 0x000027EC
+ .word 0x000027EC, 0x00002800
+ .word 0x00002800, 0x00002814
+ .word 0x00002814, 0x00002828
+ .word 0x00002828, 0x0000283C
+ .word 0x0000283C, 0x00002850
+ .word 0x00002850, 0x00002864
+ .word 0x00002864, 0x00002878
+ .word 0x00002878, 0x0000288C
+ .word 0x0000288C, 0x000028A0
+ .word 0x000028A0, 0x000028B4
+ .word 0x000028B4, 0x000028C8
+ .word 0x000028C8, 0x000028DC
+ .word 0x000028DC, 0x000028F0
+ .word 0x000028F0, 0x00002904
+ .word 0x00002904, 0x00002918
+ .word 0x00002918, 0x0000292C
+ .word 0x0000292C, 0x00002940
+ .word 0x00002940, 0x00002954
+ .word 0x00002954, 0x00002968
+ .word 0x00002968, 0x0000297C
+ .word 0x0000297C, 0x00002990
+ .word 0x00002990, 0x000029A4
+ .word 0x000029A4, 0x000029B8
+ .word 0x000029B8, 0x000029CC
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x000029D4 ; chunk size
+ .incbin "baserom.nds", 0x383F2EC, 0x29CC
+ .balign 512, 255
diff --git a/files/FILE_3841E00_encdata_ex.narc.s b/files/FILE_3841E00_encdata_ex.narc.s
new file mode 100644
index 00000000..680d2cf9
--- /dev/null
+++ b/files/FILE_3841E00_encdata_ex.narc.s
@@ -0,0 +1,40 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00000724 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x0000006C ; chunk size
+ .short 12 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000004
+ .word 0x00000004, 0x00000430
+ .word 0x00000430, 0x00000448
+ .word 0x00000448, 0x00000460
+ .word 0x00000460, 0x00000478
+ .word 0x00000478, 0x00000490
+ .word 0x00000490, 0x000004A8
+ .word 0x000004A8, 0x000004C0
+ .word 0x000004C0, 0x00000500
+ .word 0x00000500, 0x00000580
+ .word 0x00000580, 0x00000600
+ .word 0x00000600, 0x00000690
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00000698 ; chunk size
+ .incbin "baserom.nds", 0x3841E94, 0x690
+ .balign 512, 255
diff --git a/files/FILE_3842600_ppark.narc.s b/files/FILE_3842600_ppark.narc.s
new file mode 100644
index 00000000..6a7be749
--- /dev/null
+++ b/files/FILE_3842600_ppark.narc.s
@@ -0,0 +1,29 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00000BCC ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000014 ; chunk size
+ .short 1 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000B8E
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00000B98 ; chunk size
+ .incbin "baserom.nds", 0x384263C, 0xB90
+ .balign 512, 255
diff --git a/files/FILE_3843200_ship_demo.narc.s b/files/FILE_3843200_ship_demo.narc.s
new file mode 100644
index 00000000..c52c4b57
--- /dev/null
+++ b/files/FILE_3843200_ship_demo.narc.s
@@ -0,0 +1,48 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00017358 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x000000AC ; chunk size
+ .short 20 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000C48
+ .word 0x00000C48, 0x00000D28
+ .word 0x00000D28, 0x00005A24
+ .word 0x00005A24, 0x00005D80
+ .word 0x00005D80, 0x00005F10
+ .word 0x00005F10, 0x00006B58
+ .word 0x00006B58, 0x00006C38
+ .word 0x00006C38, 0x0000B3F8
+ .word 0x0000B3F8, 0x0000B754
+ .word 0x0000B754, 0x0000B8E4
+ .word 0x0000B8E4, 0x0000C524
+ .word 0x0000C524, 0x0000C604
+ .word 0x0000C604, 0x00010DC0
+ .word 0x00010DC0, 0x0001111C
+ .word 0x0001111C, 0x000112AC
+ .word 0x000112AC, 0x00011EF4
+ .word 0x00011EF4, 0x00011FD4
+ .word 0x00011FD4, 0x00016D98
+ .word 0x00016D98, 0x000170F4
+ .word 0x000170F4, 0x00017284
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x0001728C ; chunk size
+ .incbin "baserom.nds", 0x38432D4, 0x17284
+ .balign 512, 255
diff --git a/files/FILE_385A600_tv.narc.s b/files/FILE_385A600_tv.narc.s
new file mode 100644
index 00000000..ff16da27
--- /dev/null
+++ b/files/FILE_385A600_tv.narc.s
@@ -0,0 +1,31 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00000380 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000024 ; chunk size
+ .short 3 ; number of files
+ .balign 4
+ .word 0x00000000, 0x000002A0
+ .word 0x000002A0, 0x000002E8
+ .word 0x000002E8, 0x00000334
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x0000033C ; chunk size
+ .incbin "baserom.nds", 0x385A64C, 0x334
+ .balign 512, 255
diff --git a/files/FILE_385AA00_mapname.bin.s b/files/FILE_385AA00_mapname.bin.s
new file mode 100644
index 00000000..fb54114e
--- /dev/null
+++ b/files/FILE_385AA00_mapname.bin.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x385AA00, 0x22F0
+ .balign 512, 255
diff --git a/files/FILE_385CE00_pokezukan.narc.s b/files/FILE_385CE00_pokezukan.narc.s
new file mode 100644
index 00000000..a53aa43d
--- /dev/null
+++ b/files/FILE_385CE00_pokezukan.narc.s
@@ -0,0 +1,29 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00000418 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000014 ; chunk size
+ .short 1 ; number of files
+ .balign 4
+ .word 0x00000000, 0x000003DC
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x000003E4 ; chunk size
+ .incbin "baserom.nds", 0x385CE3C, 0x3DC
+ .balign 512, 255
diff --git a/files/FILE_385D400_shinzukan.narc.s b/files/FILE_385D400_shinzukan.narc.s
new file mode 100644
index 00000000..3bd19b92
--- /dev/null
+++ b/files/FILE_385D400_shinzukan.narc.s
@@ -0,0 +1,29 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x0000016C ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000014 ; chunk size
+ .short 1 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000130
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00000138 ; chunk size
+ .incbin "baserom.nds", 0x385D43C, 0x130
+ .balign 512, 255
diff --git a/files/FILE_385D600_pokeanm.narc.s b/files/FILE_385D600_pokeanm.narc.s
new file mode 100644
index 00000000..db2c96a8
--- /dev/null
+++ b/files/FILE_385D600_pokeanm.narc.s
@@ -0,0 +1,29 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00003644 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000014 ; chunk size
+ .short 1 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00003608
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00003610 ; chunk size
+ .incbin "baserom.nds", 0x385D63C, 0x3608
+ .balign 512, 255
diff --git a/files/FILE_3860E00_fld_trade.narc.s b/files/FILE_3860E00_fld_trade.narc.s
new file mode 100644
index 00000000..69b9ba19
--- /dev/null
+++ b/files/FILE_3860E00_fld_trade.narc.s
@@ -0,0 +1,32 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00000194 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x0000002C ; chunk size
+ .short 4 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000050
+ .word 0x00000050, 0x000000A0
+ .word 0x000000A0, 0x000000F0
+ .word 0x000000F0, 0x00000140
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00000148 ; chunk size
+ .incbin "baserom.nds", 0x3860E54, 0x140
+ .balign 512, 255
diff --git a/files/FILE_3861000_shinka_demo_particle.narc.s b/files/FILE_3861000_shinka_demo_particle.narc.s
new file mode 100644
index 00000000..b456d699
--- /dev/null
+++ b/files/FILE_3861000_shinka_demo_particle.narc.s
@@ -0,0 +1,30 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00002494 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x0000001C ; chunk size
+ .short 2 ; number of files
+ .balign 4
+ .word 0x00000000, 0x0000227C
+ .word 0x0000227C, 0x00002450
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00002458 ; chunk size
+ .incbin "baserom.nds", 0x3861044, 0x2450
+ .balign 512, 255
diff --git a/files/FILE_3863600_intro.narc.s b/files/FILE_3863600_intro.narc.s
new file mode 100644
index 00000000..861679fe
--- /dev/null
+++ b/files/FILE_3863600_intro.narc.s
@@ -0,0 +1,76 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x0001B38C ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x0000018C ; chunk size
+ .short 48 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00001040
+ .word 0x00001040, 0x00001268
+ .word 0x00001268, 0x00001490
+ .word 0x00001490, 0x00001AB4
+ .word 0x00001AB4, 0x000020D8
+ .word 0x000020D8, 0x000026FC
+ .word 0x000026FC, 0x00002D20
+ .word 0x00002D20, 0x00003344
+ .word 0x00003344, 0x00004384
+ .word 0x00004384, 0x000053C4
+ .word 0x000053C4, 0x00006404
+ .word 0x00006404, 0x00007444
+ .word 0x00007444, 0x0000766C
+ .word 0x0000766C, 0x000086AC
+ .word 0x000086AC, 0x000096EC
+ .word 0x000096EC, 0x0000A72C
+ .word 0x0000A72C, 0x0000B76C
+ .word 0x0000B76C, 0x0000B994
+ .word 0x0000B994, 0x0000C9D4
+ .word 0x0000C9D4, 0x0000CBFC
+ .word 0x0000CBFC, 0x0000DC3C
+ .word 0x0000DC3C, 0x0000DE64
+ .word 0x0000DE64, 0x0000E488
+ .word 0x0000E488, 0x0000F8C8
+ .word 0x0000F8C8, 0x0000FAF0
+ .word 0x0000FAF0, 0x0000FD18
+ .word 0x0000FD18, 0x0001033C
+ .word 0x0001033C, 0x00010960
+ .word 0x00010960, 0x00010F84
+ .word 0x00010F84, 0x000115A8
+ .word 0x000115A8, 0x000117E8
+ .word 0x000117E8, 0x00011A28
+ .word 0x00011A28, 0x00011C68
+ .word 0x00011C68, 0x00011DA8
+ .word 0x00011DA8, 0x00011EE8
+ .word 0x00011EE8, 0x00012028
+ .word 0x00012028, 0x00012168
+ .word 0x00012168, 0x0001278C
+ .word 0x0001278C, 0x00012DB0
+ .word 0x00012DB0, 0x00012FD8
+ .word 0x00012FD8, 0x00014018
+ .word 0x00014018, 0x00015058
+ .word 0x00015058, 0x00016098
+ .word 0x00016098, 0x000170D8
+ .word 0x000170D8, 0x00018118
+ .word 0x00018118, 0x00019158
+ .word 0x00019158, 0x0001A198
+ .word 0x0001A198, 0x0001B1D8
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x0001B1E0 ; chunk size
+ .incbin "baserom.nds", 0x38637B4, 0x1B1D8
+ .balign 512, 255
diff --git a/files/FILE_387EA00_intro_tv.narc.s b/files/FILE_387EA00_intro_tv.narc.s
new file mode 100644
index 00000000..56dc016f
--- /dev/null
+++ b/files/FILE_387EA00_intro_tv.narc.s
@@ -0,0 +1,35 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x0000DFE0 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000044 ; chunk size
+ .short 7 ; number of files
+ .balign 4
+ .word 0x00000000, 0x0000C040
+ .word 0x0000C040, 0x0000C480
+ .word 0x0000C480, 0x0000C4E0
+ .word 0x0000C4E0, 0x0000CD04
+ .word 0x0000CD04, 0x0000D528
+ .word 0x0000D528, 0x0000DD4C
+ .word 0x0000DD4C, 0x0000DF74
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x0000DF7C ; chunk size
+ .incbin "baserom.nds", 0x387EA6C, 0xDF74
+ .balign 512, 255
diff --git a/files/FILE_388CA00_op_demo.narc.s b/files/FILE_388CA00_op_demo.narc.s
new file mode 100644
index 00000000..f3dc60f2
--- /dev/null
+++ b/files/FILE_388CA00_op_demo.narc.s
@@ -0,0 +1,102 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00097188 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x0000025C ; chunk size
+ .short 74 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000228
+ .word 0x00000228, 0x00000A68
+ .word 0x00000A68, 0x0000128C
+ .word 0x0000128C, 0x000014B4
+ .word 0x000014B4, 0x00001764
+ .word 0x00001764, 0x00001801
+ .word 0x00001804, 0x0000189D
+ .word 0x000018A0, 0x00001AC8
+ .word 0x00001AC8, 0x00009B08
+ .word 0x00009B08, 0x0000A32C
+ .word 0x0000A32C, 0x0000A554
+ .word 0x0000A554, 0x00012594
+ .word 0x00012594, 0x00012DB8
+ .word 0x00012DB8, 0x00012FE0
+ .word 0x00012FE0, 0x0001B020
+ .word 0x0001B020, 0x0001B844
+ .word 0x0001B844, 0x0001BA6C
+ .word 0x0001BA6C, 0x00023AAC
+ .word 0x00023AAC, 0x00023CD4
+ .word 0x00023CD4, 0x00025474
+ .word 0x00025474, 0x00025A98
+ .word 0x00025A98, 0x000260BC
+ .word 0x000260BC, 0x000266E0
+ .word 0x000266E0, 0x00026908
+ .word 0x00026908, 0x00026F2C
+ .word 0x00026F2C, 0x00027550
+ .word 0x00027550, 0x00028574
+ .word 0x00028574, 0x00029DB4
+ .word 0x00029DB4, 0x00039DF4
+ .word 0x00039DF4, 0x0003A01C
+ .word 0x0003A01C, 0x0003A244
+ .word 0x0003A244, 0x0003A46C
+ .word 0x0003A46C, 0x0003A694
+ .word 0x0003A694, 0x0003A8BC
+ .word 0x0003A8BC, 0x0003AAE4
+ .word 0x0003AAE4, 0x0003AD0C
+ .word 0x0003AD0C, 0x0003AF34
+ .word 0x0003AF34, 0x0003B15C
+ .word 0x0003B15C, 0x0003DB8C
+ .word 0x0003DB8C, 0x0004093C
+ .word 0x0004093C, 0x000410CC
+ .word 0x000410CC, 0x000413FC
+ .word 0x000413FC, 0x0004172C
+ .word 0x0004172C, 0x00041878
+ .word 0x00041878, 0x000419F4
+ .word 0x000419F4, 0x00041AC7
+ .word 0x00041AC8, 0x00041B43
+ .word 0x00041B44, 0x00041BEB
+ .word 0x00041BEC, 0x00041DF8
+ .word 0x00041DF8, 0x00042004
+ .word 0x00042004, 0x00042073
+ .word 0x00042074, 0x000420EB
+ .word 0x000420EC, 0x0004218B
+ .word 0x0004218C, 0x000423B4
+ .word 0x000423B4, 0x000437F4
+ .word 0x000437F4, 0x00044434
+ .word 0x00044434, 0x00046474
+ .word 0x00046474, 0x0004ACB4
+ .word 0x0004ACB4, 0x0004BCF4
+ .word 0x0004BCF4, 0x0004C318
+ .word 0x0004C318, 0x0004C93C
+ .word 0x0004C93C, 0x0004CD60
+ .word 0x0004CD60, 0x0004DD84
+ .word 0x0004DD84, 0x0004E3A8
+ .word 0x0004E3A8, 0x00057AF8
+ .word 0x00057AF8, 0x00062514
+ .word 0x00062514, 0x0006CCE4
+ .word 0x0006CCE4, 0x0007A308
+ .word 0x0007A308, 0x00085758
+ .word 0x00085758, 0x00088E7C
+ .word 0x00088E7C, 0x00094678
+ .word 0x00094678, 0x000948A0
+ .word 0x000948A0, 0x000968E0
+ .word 0x000968E0, 0x00096F04
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00096F0C ; chunk size
+ .incbin "baserom.nds", 0x388CC84, 0x96F04
+ .balign 512, 255
diff --git a/files/FILE_3923C00_syoujyou.narc.s b/files/FILE_3923C00_syoujyou.narc.s
new file mode 100644
index 00000000..6cdf411c
--- /dev/null
+++ b/files/FILE_3923C00_syoujyou.narc.s
@@ -0,0 +1,40 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x000064C4 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x0000006C ; chunk size
+ .short 12 ; number of files
+ .balign 4
+ .word 0x00000000, 0x000011C0
+ .word 0x000011C0, 0x00002A00
+ .word 0x00002A00, 0x00002A80
+ .word 0x00002A80, 0x00002B00
+ .word 0x00002B00, 0x00002D28
+ .word 0x00002D28, 0x00002F50
+ .word 0x00002F50, 0x00003178
+ .word 0x00003178, 0x000033A0
+ .word 0x000033A0, 0x000043C4
+ .word 0x000043C4, 0x000053E8
+ .word 0x000053E8, 0x00005C0C
+ .word 0x00005C0C, 0x00006430
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00006438 ; chunk size
+ .incbin "baserom.nds", 0x3923C94, 0x6430
+ .balign 512, 255
diff --git a/files/FILE_392A200_btdpm.narc.s b/files/FILE_392A200_btdpm.narc.s
new file mode 100644
index 00000000..571e1039
--- /dev/null
+++ b/files/FILE_392A200_btdpm.narc.s
@@ -0,0 +1,979 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x0000595C ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00001DC4 ; chunk size
+ .short 951 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000010
+ .word 0x00000010, 0x00000020
+ .word 0x00000020, 0x00000030
+ .word 0x00000030, 0x00000040
+ .word 0x00000040, 0x00000050
+ .word 0x00000050, 0x00000060
+ .word 0x00000060, 0x00000070
+ .word 0x00000070, 0x00000080
+ .word 0x00000080, 0x00000090
+ .word 0x00000090, 0x000000A0
+ .word 0x000000A0, 0x000000B0
+ .word 0x000000B0, 0x000000C0
+ .word 0x000000C0, 0x000000D0
+ .word 0x000000D0, 0x000000E0
+ .word 0x000000E0, 0x000000F0
+ .word 0x000000F0, 0x00000100
+ .word 0x00000100, 0x00000110
+ .word 0x00000110, 0x00000120
+ .word 0x00000120, 0x00000130
+ .word 0x00000130, 0x00000140
+ .word 0x00000140, 0x00000150
+ .word 0x00000150, 0x00000160
+ .word 0x00000160, 0x00000170
+ .word 0x00000170, 0x00000180
+ .word 0x00000180, 0x00000190
+ .word 0x00000190, 0x000001A0
+ .word 0x000001A0, 0x000001B0
+ .word 0x000001B0, 0x000001C0
+ .word 0x000001C0, 0x000001D0
+ .word 0x000001D0, 0x000001E0
+ .word 0x000001E0, 0x000001F0
+ .word 0x000001F0, 0x00000200
+ .word 0x00000200, 0x00000210
+ .word 0x00000210, 0x00000220
+ .word 0x00000220, 0x00000230
+ .word 0x00000230, 0x00000240
+ .word 0x00000240, 0x00000250
+ .word 0x00000250, 0x00000260
+ .word 0x00000260, 0x00000270
+ .word 0x00000270, 0x00000280
+ .word 0x00000280, 0x00000290
+ .word 0x00000290, 0x000002A0
+ .word 0x000002A0, 0x000002B0
+ .word 0x000002B0, 0x000002C0
+ .word 0x000002C0, 0x000002D0
+ .word 0x000002D0, 0x000002E0
+ .word 0x000002E0, 0x000002F0
+ .word 0x000002F0, 0x00000300
+ .word 0x00000300, 0x00000310
+ .word 0x00000310, 0x00000320
+ .word 0x00000320, 0x00000330
+ .word 0x00000330, 0x00000340
+ .word 0x00000340, 0x00000350
+ .word 0x00000350, 0x00000360
+ .word 0x00000360, 0x00000370
+ .word 0x00000370, 0x00000380
+ .word 0x00000380, 0x00000390
+ .word 0x00000390, 0x000003A0
+ .word 0x000003A0, 0x000003B0
+ .word 0x000003B0, 0x000003C0
+ .word 0x000003C0, 0x000003D0
+ .word 0x000003D0, 0x000003E0
+ .word 0x000003E0, 0x000003F0
+ .word 0x000003F0, 0x00000400
+ .word 0x00000400, 0x00000410
+ .word 0x00000410, 0x00000420
+ .word 0x00000420, 0x00000430
+ .word 0x00000430, 0x00000440
+ .word 0x00000440, 0x00000450
+ .word 0x00000450, 0x00000460
+ .word 0x00000460, 0x00000470
+ .word 0x00000470, 0x00000480
+ .word 0x00000480, 0x00000490
+ .word 0x00000490, 0x000004A0
+ .word 0x000004A0, 0x000004B0
+ .word 0x000004B0, 0x000004C0
+ .word 0x000004C0, 0x000004D0
+ .word 0x000004D0, 0x000004E0
+ .word 0x000004E0, 0x000004F0
+ .word 0x000004F0, 0x00000500
+ .word 0x00000500, 0x00000510
+ .word 0x00000510, 0x00000520
+ .word 0x00000520, 0x00000530
+ .word 0x00000530, 0x00000540
+ .word 0x00000540, 0x00000550
+ .word 0x00000550, 0x00000560
+ .word 0x00000560, 0x00000570
+ .word 0x00000570, 0x00000580
+ .word 0x00000580, 0x00000590
+ .word 0x00000590, 0x000005A0
+ .word 0x000005A0, 0x000005B0
+ .word 0x000005B0, 0x000005C0
+ .word 0x000005C0, 0x000005D0
+ .word 0x000005D0, 0x000005E0
+ .word 0x000005E0, 0x000005F0
+ .word 0x000005F0, 0x00000600
+ .word 0x00000600, 0x00000610
+ .word 0x00000610, 0x00000620
+ .word 0x00000620, 0x00000630
+ .word 0x00000630, 0x00000640
+ .word 0x00000640, 0x00000650
+ .word 0x00000650, 0x00000660
+ .word 0x00000660, 0x00000670
+ .word 0x00000670, 0x00000680
+ .word 0x00000680, 0x00000690
+ .word 0x00000690, 0x000006A0
+ .word 0x000006A0, 0x000006B0
+ .word 0x000006B0, 0x000006C0
+ .word 0x000006C0, 0x000006D0
+ .word 0x000006D0, 0x000006E0
+ .word 0x000006E0, 0x000006F0
+ .word 0x000006F0, 0x00000700
+ .word 0x00000700, 0x00000710
+ .word 0x00000710, 0x00000720
+ .word 0x00000720, 0x00000730
+ .word 0x00000730, 0x00000740
+ .word 0x00000740, 0x00000750
+ .word 0x00000750, 0x00000760
+ .word 0x00000760, 0x00000770
+ .word 0x00000770, 0x00000780
+ .word 0x00000780, 0x00000790
+ .word 0x00000790, 0x000007A0
+ .word 0x000007A0, 0x000007B0
+ .word 0x000007B0, 0x000007C0
+ .word 0x000007C0, 0x000007D0
+ .word 0x000007D0, 0x000007E0
+ .word 0x000007E0, 0x000007F0
+ .word 0x000007F0, 0x00000800
+ .word 0x00000800, 0x00000810
+ .word 0x00000810, 0x00000820
+ .word 0x00000820, 0x00000830
+ .word 0x00000830, 0x00000840
+ .word 0x00000840, 0x00000850
+ .word 0x00000850, 0x00000860
+ .word 0x00000860, 0x00000870
+ .word 0x00000870, 0x00000880
+ .word 0x00000880, 0x00000890
+ .word 0x00000890, 0x000008A0
+ .word 0x000008A0, 0x000008B0
+ .word 0x000008B0, 0x000008C0
+ .word 0x000008C0, 0x000008D0
+ .word 0x000008D0, 0x000008E0
+ .word 0x000008E0, 0x000008F0
+ .word 0x000008F0, 0x00000900
+ .word 0x00000900, 0x00000910
+ .word 0x00000910, 0x00000920
+ .word 0x00000920, 0x00000930
+ .word 0x00000930, 0x00000940
+ .word 0x00000940, 0x00000950
+ .word 0x00000950, 0x00000960
+ .word 0x00000960, 0x00000970
+ .word 0x00000970, 0x00000980
+ .word 0x00000980, 0x00000990
+ .word 0x00000990, 0x000009A0
+ .word 0x000009A0, 0x000009B0
+ .word 0x000009B0, 0x000009C0
+ .word 0x000009C0, 0x000009D0
+ .word 0x000009D0, 0x000009E0
+ .word 0x000009E0, 0x000009F0
+ .word 0x000009F0, 0x00000A00
+ .word 0x00000A00, 0x00000A10
+ .word 0x00000A10, 0x00000A20
+ .word 0x00000A20, 0x00000A30
+ .word 0x00000A30, 0x00000A40
+ .word 0x00000A40, 0x00000A50
+ .word 0x00000A50, 0x00000A60
+ .word 0x00000A60, 0x00000A70
+ .word 0x00000A70, 0x00000A80
+ .word 0x00000A80, 0x00000A90
+ .word 0x00000A90, 0x00000AA0
+ .word 0x00000AA0, 0x00000AB0
+ .word 0x00000AB0, 0x00000AC0
+ .word 0x00000AC0, 0x00000AD0
+ .word 0x00000AD0, 0x00000AE0
+ .word 0x00000AE0, 0x00000AF0
+ .word 0x00000AF0, 0x00000B00
+ .word 0x00000B00, 0x00000B10
+ .word 0x00000B10, 0x00000B20
+ .word 0x00000B20, 0x00000B30
+ .word 0x00000B30, 0x00000B40
+ .word 0x00000B40, 0x00000B50
+ .word 0x00000B50, 0x00000B60
+ .word 0x00000B60, 0x00000B70
+ .word 0x00000B70, 0x00000B80
+ .word 0x00000B80, 0x00000B90
+ .word 0x00000B90, 0x00000BA0
+ .word 0x00000BA0, 0x00000BB0
+ .word 0x00000BB0, 0x00000BC0
+ .word 0x00000BC0, 0x00000BD0
+ .word 0x00000BD0, 0x00000BE0
+ .word 0x00000BE0, 0x00000BF0
+ .word 0x00000BF0, 0x00000C00
+ .word 0x00000C00, 0x00000C10
+ .word 0x00000C10, 0x00000C20
+ .word 0x00000C20, 0x00000C30
+ .word 0x00000C30, 0x00000C40
+ .word 0x00000C40, 0x00000C50
+ .word 0x00000C50, 0x00000C60
+ .word 0x00000C60, 0x00000C70
+ .word 0x00000C70, 0x00000C80
+ .word 0x00000C80, 0x00000C90
+ .word 0x00000C90, 0x00000CA0
+ .word 0x00000CA0, 0x00000CB0
+ .word 0x00000CB0, 0x00000CC0
+ .word 0x00000CC0, 0x00000CD0
+ .word 0x00000CD0, 0x00000CE0
+ .word 0x00000CE0, 0x00000CF0
+ .word 0x00000CF0, 0x00000D00
+ .word 0x00000D00, 0x00000D10
+ .word 0x00000D10, 0x00000D20
+ .word 0x00000D20, 0x00000D30
+ .word 0x00000D30, 0x00000D40
+ .word 0x00000D40, 0x00000D50
+ .word 0x00000D50, 0x00000D60
+ .word 0x00000D60, 0x00000D70
+ .word 0x00000D70, 0x00000D80
+ .word 0x00000D80, 0x00000D90
+ .word 0x00000D90, 0x00000DA0
+ .word 0x00000DA0, 0x00000DB0
+ .word 0x00000DB0, 0x00000DC0
+ .word 0x00000DC0, 0x00000DD0
+ .word 0x00000DD0, 0x00000DE0
+ .word 0x00000DE0, 0x00000DF0
+ .word 0x00000DF0, 0x00000E00
+ .word 0x00000E00, 0x00000E10
+ .word 0x00000E10, 0x00000E20
+ .word 0x00000E20, 0x00000E30
+ .word 0x00000E30, 0x00000E40
+ .word 0x00000E40, 0x00000E50
+ .word 0x00000E50, 0x00000E60
+ .word 0x00000E60, 0x00000E70
+ .word 0x00000E70, 0x00000E80
+ .word 0x00000E80, 0x00000E90
+ .word 0x00000E90, 0x00000EA0
+ .word 0x00000EA0, 0x00000EB0
+ .word 0x00000EB0, 0x00000EC0
+ .word 0x00000EC0, 0x00000ED0
+ .word 0x00000ED0, 0x00000EE0
+ .word 0x00000EE0, 0x00000EF0
+ .word 0x00000EF0, 0x00000F00
+ .word 0x00000F00, 0x00000F10
+ .word 0x00000F10, 0x00000F20
+ .word 0x00000F20, 0x00000F30
+ .word 0x00000F30, 0x00000F40
+ .word 0x00000F40, 0x00000F50
+ .word 0x00000F50, 0x00000F60
+ .word 0x00000F60, 0x00000F70
+ .word 0x00000F70, 0x00000F80
+ .word 0x00000F80, 0x00000F90
+ .word 0x00000F90, 0x00000FA0
+ .word 0x00000FA0, 0x00000FB0
+ .word 0x00000FB0, 0x00000FC0
+ .word 0x00000FC0, 0x00000FD0
+ .word 0x00000FD0, 0x00000FE0
+ .word 0x00000FE0, 0x00000FF0
+ .word 0x00000FF0, 0x00001000
+ .word 0x00001000, 0x00001010
+ .word 0x00001010, 0x00001020
+ .word 0x00001020, 0x00001030
+ .word 0x00001030, 0x00001040
+ .word 0x00001040, 0x00001050
+ .word 0x00001050, 0x00001060
+ .word 0x00001060, 0x00001070
+ .word 0x00001070, 0x00001080
+ .word 0x00001080, 0x00001090
+ .word 0x00001090, 0x000010A0
+ .word 0x000010A0, 0x000010B0
+ .word 0x000010B0, 0x000010C0
+ .word 0x000010C0, 0x000010D0
+ .word 0x000010D0, 0x000010E0
+ .word 0x000010E0, 0x000010F0
+ .word 0x000010F0, 0x00001100
+ .word 0x00001100, 0x00001110
+ .word 0x00001110, 0x00001120
+ .word 0x00001120, 0x00001130
+ .word 0x00001130, 0x00001140
+ .word 0x00001140, 0x00001150
+ .word 0x00001150, 0x00001160
+ .word 0x00001160, 0x00001170
+ .word 0x00001170, 0x00001180
+ .word 0x00001180, 0x00001190
+ .word 0x00001190, 0x000011A0
+ .word 0x000011A0, 0x000011B0
+ .word 0x000011B0, 0x000011C0
+ .word 0x000011C0, 0x000011D0
+ .word 0x000011D0, 0x000011E0
+ .word 0x000011E0, 0x000011F0
+ .word 0x000011F0, 0x00001200
+ .word 0x00001200, 0x00001210
+ .word 0x00001210, 0x00001220
+ .word 0x00001220, 0x00001230
+ .word 0x00001230, 0x00001240
+ .word 0x00001240, 0x00001250
+ .word 0x00001250, 0x00001260
+ .word 0x00001260, 0x00001270
+ .word 0x00001270, 0x00001280
+ .word 0x00001280, 0x00001290
+ .word 0x00001290, 0x000012A0
+ .word 0x000012A0, 0x000012B0
+ .word 0x000012B0, 0x000012C0
+ .word 0x000012C0, 0x000012D0
+ .word 0x000012D0, 0x000012E0
+ .word 0x000012E0, 0x000012F0
+ .word 0x000012F0, 0x00001300
+ .word 0x00001300, 0x00001310
+ .word 0x00001310, 0x00001320
+ .word 0x00001320, 0x00001330
+ .word 0x00001330, 0x00001340
+ .word 0x00001340, 0x00001350
+ .word 0x00001350, 0x00001360
+ .word 0x00001360, 0x00001370
+ .word 0x00001370, 0x00001380
+ .word 0x00001380, 0x00001390
+ .word 0x00001390, 0x000013A0
+ .word 0x000013A0, 0x000013B0
+ .word 0x000013B0, 0x000013C0
+ .word 0x000013C0, 0x000013D0
+ .word 0x000013D0, 0x000013E0
+ .word 0x000013E0, 0x000013F0
+ .word 0x000013F0, 0x00001400
+ .word 0x00001400, 0x00001410
+ .word 0x00001410, 0x00001420
+ .word 0x00001420, 0x00001430
+ .word 0x00001430, 0x00001440
+ .word 0x00001440, 0x00001450
+ .word 0x00001450, 0x00001460
+ .word 0x00001460, 0x00001470
+ .word 0x00001470, 0x00001480
+ .word 0x00001480, 0x00001490
+ .word 0x00001490, 0x000014A0
+ .word 0x000014A0, 0x000014B0
+ .word 0x000014B0, 0x000014C0
+ .word 0x000014C0, 0x000014D0
+ .word 0x000014D0, 0x000014E0
+ .word 0x000014E0, 0x000014F0
+ .word 0x000014F0, 0x00001500
+ .word 0x00001500, 0x00001510
+ .word 0x00001510, 0x00001520
+ .word 0x00001520, 0x00001530
+ .word 0x00001530, 0x00001540
+ .word 0x00001540, 0x00001550
+ .word 0x00001550, 0x00001560
+ .word 0x00001560, 0x00001570
+ .word 0x00001570, 0x00001580
+ .word 0x00001580, 0x00001590
+ .word 0x00001590, 0x000015A0
+ .word 0x000015A0, 0x000015B0
+ .word 0x000015B0, 0x000015C0
+ .word 0x000015C0, 0x000015D0
+ .word 0x000015D0, 0x000015E0
+ .word 0x000015E0, 0x000015F0
+ .word 0x000015F0, 0x00001600
+ .word 0x00001600, 0x00001610
+ .word 0x00001610, 0x00001620
+ .word 0x00001620, 0x00001630
+ .word 0x00001630, 0x00001640
+ .word 0x00001640, 0x00001650
+ .word 0x00001650, 0x00001660
+ .word 0x00001660, 0x00001670
+ .word 0x00001670, 0x00001680
+ .word 0x00001680, 0x00001690
+ .word 0x00001690, 0x000016A0
+ .word 0x000016A0, 0x000016B0
+ .word 0x000016B0, 0x000016C0
+ .word 0x000016C0, 0x000016D0
+ .word 0x000016D0, 0x000016E0
+ .word 0x000016E0, 0x000016F0
+ .word 0x000016F0, 0x00001700
+ .word 0x00001700, 0x00001710
+ .word 0x00001710, 0x00001720
+ .word 0x00001720, 0x00001730
+ .word 0x00001730, 0x00001740
+ .word 0x00001740, 0x00001750
+ .word 0x00001750, 0x00001760
+ .word 0x00001760, 0x00001770
+ .word 0x00001770, 0x00001780
+ .word 0x00001780, 0x00001790
+ .word 0x00001790, 0x000017A0
+ .word 0x000017A0, 0x000017B0
+ .word 0x000017B0, 0x000017C0
+ .word 0x000017C0, 0x000017D0
+ .word 0x000017D0, 0x000017E0
+ .word 0x000017E0, 0x000017F0
+ .word 0x000017F0, 0x00001800
+ .word 0x00001800, 0x00001810
+ .word 0x00001810, 0x00001820
+ .word 0x00001820, 0x00001830
+ .word 0x00001830, 0x00001840
+ .word 0x00001840, 0x00001850
+ .word 0x00001850, 0x00001860
+ .word 0x00001860, 0x00001870
+ .word 0x00001870, 0x00001880
+ .word 0x00001880, 0x00001890
+ .word 0x00001890, 0x000018A0
+ .word 0x000018A0, 0x000018B0
+ .word 0x000018B0, 0x000018C0
+ .word 0x000018C0, 0x000018D0
+ .word 0x000018D0, 0x000018E0
+ .word 0x000018E0, 0x000018F0
+ .word 0x000018F0, 0x00001900
+ .word 0x00001900, 0x00001910
+ .word 0x00001910, 0x00001920
+ .word 0x00001920, 0x00001930
+ .word 0x00001930, 0x00001940
+ .word 0x00001940, 0x00001950
+ .word 0x00001950, 0x00001960
+ .word 0x00001960, 0x00001970
+ .word 0x00001970, 0x00001980
+ .word 0x00001980, 0x00001990
+ .word 0x00001990, 0x000019A0
+ .word 0x000019A0, 0x000019B0
+ .word 0x000019B0, 0x000019C0
+ .word 0x000019C0, 0x000019D0
+ .word 0x000019D0, 0x000019E0
+ .word 0x000019E0, 0x000019F0
+ .word 0x000019F0, 0x00001A00
+ .word 0x00001A00, 0x00001A10
+ .word 0x00001A10, 0x00001A20
+ .word 0x00001A20, 0x00001A30
+ .word 0x00001A30, 0x00001A40
+ .word 0x00001A40, 0x00001A50
+ .word 0x00001A50, 0x00001A60
+ .word 0x00001A60, 0x00001A70
+ .word 0x00001A70, 0x00001A80
+ .word 0x00001A80, 0x00001A90
+ .word 0x00001A90, 0x00001AA0
+ .word 0x00001AA0, 0x00001AB0
+ .word 0x00001AB0, 0x00001AC0
+ .word 0x00001AC0, 0x00001AD0
+ .word 0x00001AD0, 0x00001AE0
+ .word 0x00001AE0, 0x00001AF0
+ .word 0x00001AF0, 0x00001B00
+ .word 0x00001B00, 0x00001B10
+ .word 0x00001B10, 0x00001B20
+ .word 0x00001B20, 0x00001B30
+ .word 0x00001B30, 0x00001B40
+ .word 0x00001B40, 0x00001B50
+ .word 0x00001B50, 0x00001B60
+ .word 0x00001B60, 0x00001B70
+ .word 0x00001B70, 0x00001B80
+ .word 0x00001B80, 0x00001B90
+ .word 0x00001B90, 0x00001BA0
+ .word 0x00001BA0, 0x00001BB0
+ .word 0x00001BB0, 0x00001BC0
+ .word 0x00001BC0, 0x00001BD0
+ .word 0x00001BD0, 0x00001BE0
+ .word 0x00001BE0, 0x00001BF0
+ .word 0x00001BF0, 0x00001C00
+ .word 0x00001C00, 0x00001C10
+ .word 0x00001C10, 0x00001C20
+ .word 0x00001C20, 0x00001C30
+ .word 0x00001C30, 0x00001C40
+ .word 0x00001C40, 0x00001C50
+ .word 0x00001C50, 0x00001C60
+ .word 0x00001C60, 0x00001C70
+ .word 0x00001C70, 0x00001C80
+ .word 0x00001C80, 0x00001C90
+ .word 0x00001C90, 0x00001CA0
+ .word 0x00001CA0, 0x00001CB0
+ .word 0x00001CB0, 0x00001CC0
+ .word 0x00001CC0, 0x00001CD0
+ .word 0x00001CD0, 0x00001CE0
+ .word 0x00001CE0, 0x00001CF0
+ .word 0x00001CF0, 0x00001D00
+ .word 0x00001D00, 0x00001D10
+ .word 0x00001D10, 0x00001D20
+ .word 0x00001D20, 0x00001D30
+ .word 0x00001D30, 0x00001D40
+ .word 0x00001D40, 0x00001D50
+ .word 0x00001D50, 0x00001D60
+ .word 0x00001D60, 0x00001D70
+ .word 0x00001D70, 0x00001D80
+ .word 0x00001D80, 0x00001D90
+ .word 0x00001D90, 0x00001DA0
+ .word 0x00001DA0, 0x00001DB0
+ .word 0x00001DB0, 0x00001DC0
+ .word 0x00001DC0, 0x00001DD0
+ .word 0x00001DD0, 0x00001DE0
+ .word 0x00001DE0, 0x00001DF0
+ .word 0x00001DF0, 0x00001E00
+ .word 0x00001E00, 0x00001E10
+ .word 0x00001E10, 0x00001E20
+ .word 0x00001E20, 0x00001E30
+ .word 0x00001E30, 0x00001E40
+ .word 0x00001E40, 0x00001E50
+ .word 0x00001E50, 0x00001E60
+ .word 0x00001E60, 0x00001E70
+ .word 0x00001E70, 0x00001E80
+ .word 0x00001E80, 0x00001E90
+ .word 0x00001E90, 0x00001EA0
+ .word 0x00001EA0, 0x00001EB0
+ .word 0x00001EB0, 0x00001EC0
+ .word 0x00001EC0, 0x00001ED0
+ .word 0x00001ED0, 0x00001EE0
+ .word 0x00001EE0, 0x00001EF0
+ .word 0x00001EF0, 0x00001F00
+ .word 0x00001F00, 0x00001F10
+ .word 0x00001F10, 0x00001F20
+ .word 0x00001F20, 0x00001F30
+ .word 0x00001F30, 0x00001F40
+ .word 0x00001F40, 0x00001F50
+ .word 0x00001F50, 0x00001F60
+ .word 0x00001F60, 0x00001F70
+ .word 0x00001F70, 0x00001F80
+ .word 0x00001F80, 0x00001F90
+ .word 0x00001F90, 0x00001FA0
+ .word 0x00001FA0, 0x00001FB0
+ .word 0x00001FB0, 0x00001FC0
+ .word 0x00001FC0, 0x00001FD0
+ .word 0x00001FD0, 0x00001FE0
+ .word 0x00001FE0, 0x00001FF0
+ .word 0x00001FF0, 0x00002000
+ .word 0x00002000, 0x00002010
+ .word 0x00002010, 0x00002020
+ .word 0x00002020, 0x00002030
+ .word 0x00002030, 0x00002040
+ .word 0x00002040, 0x00002050
+ .word 0x00002050, 0x00002060
+ .word 0x00002060, 0x00002070
+ .word 0x00002070, 0x00002080
+ .word 0x00002080, 0x00002090
+ .word 0x00002090, 0x000020A0
+ .word 0x000020A0, 0x000020B0
+ .word 0x000020B0, 0x000020C0
+ .word 0x000020C0, 0x000020D0
+ .word 0x000020D0, 0x000020E0
+ .word 0x000020E0, 0x000020F0
+ .word 0x000020F0, 0x00002100
+ .word 0x00002100, 0x00002110
+ .word 0x00002110, 0x00002120
+ .word 0x00002120, 0x00002130
+ .word 0x00002130, 0x00002140
+ .word 0x00002140, 0x00002150
+ .word 0x00002150, 0x00002160
+ .word 0x00002160, 0x00002170
+ .word 0x00002170, 0x00002180
+ .word 0x00002180, 0x00002190
+ .word 0x00002190, 0x000021A0
+ .word 0x000021A0, 0x000021B0
+ .word 0x000021B0, 0x000021C0
+ .word 0x000021C0, 0x000021D0
+ .word 0x000021D0, 0x000021E0
+ .word 0x000021E0, 0x000021F0
+ .word 0x000021F0, 0x00002200
+ .word 0x00002200, 0x00002210
+ .word 0x00002210, 0x00002220
+ .word 0x00002220, 0x00002230
+ .word 0x00002230, 0x00002240
+ .word 0x00002240, 0x00002250
+ .word 0x00002250, 0x00002260
+ .word 0x00002260, 0x00002270
+ .word 0x00002270, 0x00002280
+ .word 0x00002280, 0x00002290
+ .word 0x00002290, 0x000022A0
+ .word 0x000022A0, 0x000022B0
+ .word 0x000022B0, 0x000022C0
+ .word 0x000022C0, 0x000022D0
+ .word 0x000022D0, 0x000022E0
+ .word 0x000022E0, 0x000022F0
+ .word 0x000022F0, 0x00002300
+ .word 0x00002300, 0x00002310
+ .word 0x00002310, 0x00002320
+ .word 0x00002320, 0x00002330
+ .word 0x00002330, 0x00002340
+ .word 0x00002340, 0x00002350
+ .word 0x00002350, 0x00002360
+ .word 0x00002360, 0x00002370
+ .word 0x00002370, 0x00002380
+ .word 0x00002380, 0x00002390
+ .word 0x00002390, 0x000023A0
+ .word 0x000023A0, 0x000023B0
+ .word 0x000023B0, 0x000023C0
+ .word 0x000023C0, 0x000023D0
+ .word 0x000023D0, 0x000023E0
+ .word 0x000023E0, 0x000023F0
+ .word 0x000023F0, 0x00002400
+ .word 0x00002400, 0x00002410
+ .word 0x00002410, 0x00002420
+ .word 0x00002420, 0x00002430
+ .word 0x00002430, 0x00002440
+ .word 0x00002440, 0x00002450
+ .word 0x00002450, 0x00002460
+ .word 0x00002460, 0x00002470
+ .word 0x00002470, 0x00002480
+ .word 0x00002480, 0x00002490
+ .word 0x00002490, 0x000024A0
+ .word 0x000024A0, 0x000024B0
+ .word 0x000024B0, 0x000024C0
+ .word 0x000024C0, 0x000024D0
+ .word 0x000024D0, 0x000024E0
+ .word 0x000024E0, 0x000024F0
+ .word 0x000024F0, 0x00002500
+ .word 0x00002500, 0x00002510
+ .word 0x00002510, 0x00002520
+ .word 0x00002520, 0x00002530
+ .word 0x00002530, 0x00002540
+ .word 0x00002540, 0x00002550
+ .word 0x00002550, 0x00002560
+ .word 0x00002560, 0x00002570
+ .word 0x00002570, 0x00002580
+ .word 0x00002580, 0x00002590
+ .word 0x00002590, 0x000025A0
+ .word 0x000025A0, 0x000025B0
+ .word 0x000025B0, 0x000025C0
+ .word 0x000025C0, 0x000025D0
+ .word 0x000025D0, 0x000025E0
+ .word 0x000025E0, 0x000025F0
+ .word 0x000025F0, 0x00002600
+ .word 0x00002600, 0x00002610
+ .word 0x00002610, 0x00002620
+ .word 0x00002620, 0x00002630
+ .word 0x00002630, 0x00002640
+ .word 0x00002640, 0x00002650
+ .word 0x00002650, 0x00002660
+ .word 0x00002660, 0x00002670
+ .word 0x00002670, 0x00002680
+ .word 0x00002680, 0x00002690
+ .word 0x00002690, 0x000026A0
+ .word 0x000026A0, 0x000026B0
+ .word 0x000026B0, 0x000026C0
+ .word 0x000026C0, 0x000026D0
+ .word 0x000026D0, 0x000026E0
+ .word 0x000026E0, 0x000026F0
+ .word 0x000026F0, 0x00002700
+ .word 0x00002700, 0x00002710
+ .word 0x00002710, 0x00002720
+ .word 0x00002720, 0x00002730
+ .word 0x00002730, 0x00002740
+ .word 0x00002740, 0x00002750
+ .word 0x00002750, 0x00002760
+ .word 0x00002760, 0x00002770
+ .word 0x00002770, 0x00002780
+ .word 0x00002780, 0x00002790
+ .word 0x00002790, 0x000027A0
+ .word 0x000027A0, 0x000027B0
+ .word 0x000027B0, 0x000027C0
+ .word 0x000027C0, 0x000027D0
+ .word 0x000027D0, 0x000027E0
+ .word 0x000027E0, 0x000027F0
+ .word 0x000027F0, 0x00002800
+ .word 0x00002800, 0x00002810
+ .word 0x00002810, 0x00002820
+ .word 0x00002820, 0x00002830
+ .word 0x00002830, 0x00002840
+ .word 0x00002840, 0x00002850
+ .word 0x00002850, 0x00002860
+ .word 0x00002860, 0x00002870
+ .word 0x00002870, 0x00002880
+ .word 0x00002880, 0x00002890
+ .word 0x00002890, 0x000028A0
+ .word 0x000028A0, 0x000028B0
+ .word 0x000028B0, 0x000028C0
+ .word 0x000028C0, 0x000028D0
+ .word 0x000028D0, 0x000028E0
+ .word 0x000028E0, 0x000028F0
+ .word 0x000028F0, 0x00002900
+ .word 0x00002900, 0x00002910
+ .word 0x00002910, 0x00002920
+ .word 0x00002920, 0x00002930
+ .word 0x00002930, 0x00002940
+ .word 0x00002940, 0x00002950
+ .word 0x00002950, 0x00002960
+ .word 0x00002960, 0x00002970
+ .word 0x00002970, 0x00002980
+ .word 0x00002980, 0x00002990
+ .word 0x00002990, 0x000029A0
+ .word 0x000029A0, 0x000029B0
+ .word 0x000029B0, 0x000029C0
+ .word 0x000029C0, 0x000029D0
+ .word 0x000029D0, 0x000029E0
+ .word 0x000029E0, 0x000029F0
+ .word 0x000029F0, 0x00002A00
+ .word 0x00002A00, 0x00002A10
+ .word 0x00002A10, 0x00002A20
+ .word 0x00002A20, 0x00002A30
+ .word 0x00002A30, 0x00002A40
+ .word 0x00002A40, 0x00002A50
+ .word 0x00002A50, 0x00002A60
+ .word 0x00002A60, 0x00002A70
+ .word 0x00002A70, 0x00002A80
+ .word 0x00002A80, 0x00002A90
+ .word 0x00002A90, 0x00002AA0
+ .word 0x00002AA0, 0x00002AB0
+ .word 0x00002AB0, 0x00002AC0
+ .word 0x00002AC0, 0x00002AD0
+ .word 0x00002AD0, 0x00002AE0
+ .word 0x00002AE0, 0x00002AF0
+ .word 0x00002AF0, 0x00002B00
+ .word 0x00002B00, 0x00002B10
+ .word 0x00002B10, 0x00002B20
+ .word 0x00002B20, 0x00002B30
+ .word 0x00002B30, 0x00002B40
+ .word 0x00002B40, 0x00002B50
+ .word 0x00002B50, 0x00002B60
+ .word 0x00002B60, 0x00002B70
+ .word 0x00002B70, 0x00002B80
+ .word 0x00002B80, 0x00002B90
+ .word 0x00002B90, 0x00002BA0
+ .word 0x00002BA0, 0x00002BB0
+ .word 0x00002BB0, 0x00002BC0
+ .word 0x00002BC0, 0x00002BD0
+ .word 0x00002BD0, 0x00002BE0
+ .word 0x00002BE0, 0x00002BF0
+ .word 0x00002BF0, 0x00002C00
+ .word 0x00002C00, 0x00002C10
+ .word 0x00002C10, 0x00002C20
+ .word 0x00002C20, 0x00002C30
+ .word 0x00002C30, 0x00002C40
+ .word 0x00002C40, 0x00002C50
+ .word 0x00002C50, 0x00002C60
+ .word 0x00002C60, 0x00002C70
+ .word 0x00002C70, 0x00002C80
+ .word 0x00002C80, 0x00002C90
+ .word 0x00002C90, 0x00002CA0
+ .word 0x00002CA0, 0x00002CB0
+ .word 0x00002CB0, 0x00002CC0
+ .word 0x00002CC0, 0x00002CD0
+ .word 0x00002CD0, 0x00002CE0
+ .word 0x00002CE0, 0x00002CF0
+ .word 0x00002CF0, 0x00002D00
+ .word 0x00002D00, 0x00002D10
+ .word 0x00002D10, 0x00002D20
+ .word 0x00002D20, 0x00002D30
+ .word 0x00002D30, 0x00002D40
+ .word 0x00002D40, 0x00002D50
+ .word 0x00002D50, 0x00002D60
+ .word 0x00002D60, 0x00002D70
+ .word 0x00002D70, 0x00002D80
+ .word 0x00002D80, 0x00002D90
+ .word 0x00002D90, 0x00002DA0
+ .word 0x00002DA0, 0x00002DB0
+ .word 0x00002DB0, 0x00002DC0
+ .word 0x00002DC0, 0x00002DD0
+ .word 0x00002DD0, 0x00002DE0
+ .word 0x00002DE0, 0x00002DF0
+ .word 0x00002DF0, 0x00002E00
+ .word 0x00002E00, 0x00002E10
+ .word 0x00002E10, 0x00002E20
+ .word 0x00002E20, 0x00002E30
+ .word 0x00002E30, 0x00002E40
+ .word 0x00002E40, 0x00002E50
+ .word 0x00002E50, 0x00002E60
+ .word 0x00002E60, 0x00002E70
+ .word 0x00002E70, 0x00002E80
+ .word 0x00002E80, 0x00002E90
+ .word 0x00002E90, 0x00002EA0
+ .word 0x00002EA0, 0x00002EB0
+ .word 0x00002EB0, 0x00002EC0
+ .word 0x00002EC0, 0x00002ED0
+ .word 0x00002ED0, 0x00002EE0
+ .word 0x00002EE0, 0x00002EF0
+ .word 0x00002EF0, 0x00002F00
+ .word 0x00002F00, 0x00002F10
+ .word 0x00002F10, 0x00002F20
+ .word 0x00002F20, 0x00002F30
+ .word 0x00002F30, 0x00002F40
+ .word 0x00002F40, 0x00002F50
+ .word 0x00002F50, 0x00002F60
+ .word 0x00002F60, 0x00002F70
+ .word 0x00002F70, 0x00002F80
+ .word 0x00002F80, 0x00002F90
+ .word 0x00002F90, 0x00002FA0
+ .word 0x00002FA0, 0x00002FB0
+ .word 0x00002FB0, 0x00002FC0
+ .word 0x00002FC0, 0x00002FD0
+ .word 0x00002FD0, 0x00002FE0
+ .word 0x00002FE0, 0x00002FF0
+ .word 0x00002FF0, 0x00003000
+ .word 0x00003000, 0x00003010
+ .word 0x00003010, 0x00003020
+ .word 0x00003020, 0x00003030
+ .word 0x00003030, 0x00003040
+ .word 0x00003040, 0x00003050
+ .word 0x00003050, 0x00003060
+ .word 0x00003060, 0x00003070
+ .word 0x00003070, 0x00003080
+ .word 0x00003080, 0x00003090
+ .word 0x00003090, 0x000030A0
+ .word 0x000030A0, 0x000030B0
+ .word 0x000030B0, 0x000030C0
+ .word 0x000030C0, 0x000030D0
+ .word 0x000030D0, 0x000030E0
+ .word 0x000030E0, 0x000030F0
+ .word 0x000030F0, 0x00003100
+ .word 0x00003100, 0x00003110
+ .word 0x00003110, 0x00003120
+ .word 0x00003120, 0x00003130
+ .word 0x00003130, 0x00003140
+ .word 0x00003140, 0x00003150
+ .word 0x00003150, 0x00003160
+ .word 0x00003160, 0x00003170
+ .word 0x00003170, 0x00003180
+ .word 0x00003180, 0x00003190
+ .word 0x00003190, 0x000031A0
+ .word 0x000031A0, 0x000031B0
+ .word 0x000031B0, 0x000031C0
+ .word 0x000031C0, 0x000031D0
+ .word 0x000031D0, 0x000031E0
+ .word 0x000031E0, 0x000031F0
+ .word 0x000031F0, 0x00003200
+ .word 0x00003200, 0x00003210
+ .word 0x00003210, 0x00003220
+ .word 0x00003220, 0x00003230
+ .word 0x00003230, 0x00003240
+ .word 0x00003240, 0x00003250
+ .word 0x00003250, 0x00003260
+ .word 0x00003260, 0x00003270
+ .word 0x00003270, 0x00003280
+ .word 0x00003280, 0x00003290
+ .word 0x00003290, 0x000032A0
+ .word 0x000032A0, 0x000032B0
+ .word 0x000032B0, 0x000032C0
+ .word 0x000032C0, 0x000032D0
+ .word 0x000032D0, 0x000032E0
+ .word 0x000032E0, 0x000032F0
+ .word 0x000032F0, 0x00003300
+ .word 0x00003300, 0x00003310
+ .word 0x00003310, 0x00003320
+ .word 0x00003320, 0x00003330
+ .word 0x00003330, 0x00003340
+ .word 0x00003340, 0x00003350
+ .word 0x00003350, 0x00003360
+ .word 0x00003360, 0x00003370
+ .word 0x00003370, 0x00003380
+ .word 0x00003380, 0x00003390
+ .word 0x00003390, 0x000033A0
+ .word 0x000033A0, 0x000033B0
+ .word 0x000033B0, 0x000033C0
+ .word 0x000033C0, 0x000033D0
+ .word 0x000033D0, 0x000033E0
+ .word 0x000033E0, 0x000033F0
+ .word 0x000033F0, 0x00003400
+ .word 0x00003400, 0x00003410
+ .word 0x00003410, 0x00003420
+ .word 0x00003420, 0x00003430
+ .word 0x00003430, 0x00003440
+ .word 0x00003440, 0x00003450
+ .word 0x00003450, 0x00003460
+ .word 0x00003460, 0x00003470
+ .word 0x00003470, 0x00003480
+ .word 0x00003480, 0x00003490
+ .word 0x00003490, 0x000034A0
+ .word 0x000034A0, 0x000034B0
+ .word 0x000034B0, 0x000034C0
+ .word 0x000034C0, 0x000034D0
+ .word 0x000034D0, 0x000034E0
+ .word 0x000034E0, 0x000034F0
+ .word 0x000034F0, 0x00003500
+ .word 0x00003500, 0x00003510
+ .word 0x00003510, 0x00003520
+ .word 0x00003520, 0x00003530
+ .word 0x00003530, 0x00003540
+ .word 0x00003540, 0x00003550
+ .word 0x00003550, 0x00003560
+ .word 0x00003560, 0x00003570
+ .word 0x00003570, 0x00003580
+ .word 0x00003580, 0x00003590
+ .word 0x00003590, 0x000035A0
+ .word 0x000035A0, 0x000035B0
+ .word 0x000035B0, 0x000035C0
+ .word 0x000035C0, 0x000035D0
+ .word 0x000035D0, 0x000035E0
+ .word 0x000035E0, 0x000035F0
+ .word 0x000035F0, 0x00003600
+ .word 0x00003600, 0x00003610
+ .word 0x00003610, 0x00003620
+ .word 0x00003620, 0x00003630
+ .word 0x00003630, 0x00003640
+ .word 0x00003640, 0x00003650
+ .word 0x00003650, 0x00003660
+ .word 0x00003660, 0x00003670
+ .word 0x00003670, 0x00003680
+ .word 0x00003680, 0x00003690
+ .word 0x00003690, 0x000036A0
+ .word 0x000036A0, 0x000036B0
+ .word 0x000036B0, 0x000036C0
+ .word 0x000036C0, 0x000036D0
+ .word 0x000036D0, 0x000036E0
+ .word 0x000036E0, 0x000036F0
+ .word 0x000036F0, 0x00003700
+ .word 0x00003700, 0x00003710
+ .word 0x00003710, 0x00003720
+ .word 0x00003720, 0x00003730
+ .word 0x00003730, 0x00003740
+ .word 0x00003740, 0x00003750
+ .word 0x00003750, 0x00003760
+ .word 0x00003760, 0x00003770
+ .word 0x00003770, 0x00003780
+ .word 0x00003780, 0x00003790
+ .word 0x00003790, 0x000037A0
+ .word 0x000037A0, 0x000037B0
+ .word 0x000037B0, 0x000037C0
+ .word 0x000037C0, 0x000037D0
+ .word 0x000037D0, 0x000037E0
+ .word 0x000037E0, 0x000037F0
+ .word 0x000037F0, 0x00003800
+ .word 0x00003800, 0x00003810
+ .word 0x00003810, 0x00003820
+ .word 0x00003820, 0x00003830
+ .word 0x00003830, 0x00003840
+ .word 0x00003840, 0x00003850
+ .word 0x00003850, 0x00003860
+ .word 0x00003860, 0x00003870
+ .word 0x00003870, 0x00003880
+ .word 0x00003880, 0x00003890
+ .word 0x00003890, 0x000038A0
+ .word 0x000038A0, 0x000038B0
+ .word 0x000038B0, 0x000038C0
+ .word 0x000038C0, 0x000038D0
+ .word 0x000038D0, 0x000038E0
+ .word 0x000038E0, 0x000038F0
+ .word 0x000038F0, 0x00003900
+ .word 0x00003900, 0x00003910
+ .word 0x00003910, 0x00003920
+ .word 0x00003920, 0x00003930
+ .word 0x00003930, 0x00003940
+ .word 0x00003940, 0x00003950
+ .word 0x00003950, 0x00003960
+ .word 0x00003960, 0x00003970
+ .word 0x00003970, 0x00003980
+ .word 0x00003980, 0x00003990
+ .word 0x00003990, 0x000039A0
+ .word 0x000039A0, 0x000039B0
+ .word 0x000039B0, 0x000039C0
+ .word 0x000039C0, 0x000039D0
+ .word 0x000039D0, 0x000039E0
+ .word 0x000039E0, 0x000039F0
+ .word 0x000039F0, 0x00003A00
+ .word 0x00003A00, 0x00003A10
+ .word 0x00003A10, 0x00003A20
+ .word 0x00003A20, 0x00003A30
+ .word 0x00003A30, 0x00003A40
+ .word 0x00003A40, 0x00003A50
+ .word 0x00003A50, 0x00003A60
+ .word 0x00003A60, 0x00003A70
+ .word 0x00003A70, 0x00003A80
+ .word 0x00003A80, 0x00003A90
+ .word 0x00003A90, 0x00003AA0
+ .word 0x00003AA0, 0x00003AB0
+ .word 0x00003AB0, 0x00003AC0
+ .word 0x00003AC0, 0x00003AD0
+ .word 0x00003AD0, 0x00003AE0
+ .word 0x00003AE0, 0x00003AF0
+ .word 0x00003AF0, 0x00003B00
+ .word 0x00003B00, 0x00003B10
+ .word 0x00003B10, 0x00003B20
+ .word 0x00003B20, 0x00003B30
+ .word 0x00003B30, 0x00003B40
+ .word 0x00003B40, 0x00003B50
+ .word 0x00003B50, 0x00003B60
+ .word 0x00003B60, 0x00003B70
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00003B78 ; chunk size
+ .incbin "baserom.nds", 0x392BFEC, 0x3B70
+ .balign 512, 255
diff --git a/files/FILE_392FC00_btdtr.narc.s b/files/FILE_392FC00_btdtr.narc.s
new file mode 100644
index 00000000..f28c2549
--- /dev/null
+++ b/files/FILE_392FC00_btdtr.narc.s
@@ -0,0 +1,335 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x000083C0 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x000009A4 ; chunk size
+ .short 307 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000068
+ .word 0x00000068, 0x000000D0
+ .word 0x000000D0, 0x00000138
+ .word 0x00000138, 0x000001A0
+ .word 0x000001A0, 0x00000208
+ .word 0x00000208, 0x00000270
+ .word 0x00000270, 0x000002D8
+ .word 0x000002D8, 0x00000340
+ .word 0x00000340, 0x000003A8
+ .word 0x000003A8, 0x00000410
+ .word 0x00000410, 0x00000478
+ .word 0x00000478, 0x000004E0
+ .word 0x000004E0, 0x00000548
+ .word 0x00000548, 0x000005B0
+ .word 0x000005B0, 0x00000618
+ .word 0x00000618, 0x00000680
+ .word 0x00000680, 0x000006E8
+ .word 0x000006E8, 0x00000750
+ .word 0x00000750, 0x000007B8
+ .word 0x000007B8, 0x00000820
+ .word 0x00000820, 0x00000888
+ .word 0x00000888, 0x000008F0
+ .word 0x000008F0, 0x00000958
+ .word 0x00000958, 0x000009C0
+ .word 0x000009C0, 0x000009FC
+ .word 0x000009FC, 0x00000A38
+ .word 0x00000A38, 0x00000A74
+ .word 0x00000A74, 0x00000AB0
+ .word 0x00000AB0, 0x00000AEC
+ .word 0x00000AEC, 0x00000B28
+ .word 0x00000B28, 0x00000B68
+ .word 0x00000B68, 0x00000BA8
+ .word 0x00000BA8, 0x00000BE8
+ .word 0x00000BE8, 0x00000C30
+ .word 0x00000C30, 0x00000C78
+ .word 0x00000C78, 0x00000CC0
+ .word 0x00000CC0, 0x00000D5C
+ .word 0x00000D5C, 0x00000DF8
+ .word 0x00000DF8, 0x00000E94
+ .word 0x00000E94, 0x00000F30
+ .word 0x00000F30, 0x00000FCC
+ .word 0x00000FCC, 0x00001068
+ .word 0x00001068, 0x00001104
+ .word 0x00001104, 0x000011A0
+ .word 0x000011A0, 0x0000123C
+ .word 0x0000123C, 0x000012D8
+ .word 0x000012D8, 0x00001374
+ .word 0x00001374, 0x00001410
+ .word 0x00001410, 0x0000145C
+ .word 0x0000145C, 0x00001484
+ .word 0x00001484, 0x000014AC
+ .word 0x000014AC, 0x00001514
+ .word 0x00001514, 0x0000157C
+ .word 0x0000157C, 0x000015E4
+ .word 0x000015E4, 0x0000164C
+ .word 0x0000164C, 0x000016B4
+ .word 0x000016B4, 0x0000171C
+ .word 0x0000171C, 0x00001758
+ .word 0x00001758, 0x00001794
+ .word 0x00001794, 0x000017CC
+ .word 0x000017CC, 0x00001804
+ .word 0x00001804, 0x0000186C
+ .word 0x0000186C, 0x000018D4
+ .word 0x000018D4, 0x0000193C
+ .word 0x0000193C, 0x000019A4
+ .word 0x000019A4, 0x00001A0C
+ .word 0x00001A0C, 0x00001A74
+ .word 0x00001A74, 0x00001ADC
+ .word 0x00001ADC, 0x00001B44
+ .word 0x00001B44, 0x00001B98
+ .word 0x00001B98, 0x00001BEC
+ .word 0x00001BEC, 0x00001C40
+ .word 0x00001C40, 0x00001C80
+ .word 0x00001C80, 0x00001CC0
+ .word 0x00001CC0, 0x00001CE8
+ .word 0x00001CE8, 0x00001D10
+ .word 0x00001D10, 0x00001D38
+ .word 0x00001D38, 0x00001D7C
+ .word 0x00001D7C, 0x00001DC0
+ .word 0x00001DC0, 0x00001DFC
+ .word 0x00001DFC, 0x00001E38
+ .word 0x00001E38, 0x00001E80
+ .word 0x00001E80, 0x00001EC8
+ .word 0x00001EC8, 0x00001F10
+ .word 0x00001F10, 0x00001F78
+ .word 0x00001F78, 0x00001FE0
+ .word 0x00001FE0, 0x0000201C
+ .word 0x0000201C, 0x00002058
+ .word 0x00002058, 0x000020C0
+ .word 0x000020C0, 0x00002128
+ .word 0x00002128, 0x00002190
+ .word 0x00002190, 0x000021F8
+ .word 0x000021F8, 0x00002260
+ .word 0x00002260, 0x000022C8
+ .word 0x000022C8, 0x00002308
+ .word 0x00002308, 0x00002348
+ .word 0x00002348, 0x00002388
+ .word 0x00002388, 0x000023C8
+ .word 0x000023C8, 0x00002408
+ .word 0x00002408, 0x00002448
+ .word 0x00002448, 0x000024B0
+ .word 0x000024B0, 0x00002518
+ .word 0x00002518, 0x00002580
+ .word 0x00002580, 0x000025E8
+ .word 0x000025E8, 0x00002618
+ .word 0x00002618, 0x00002648
+ .word 0x00002648, 0x00002678
+ .word 0x00002678, 0x000026A8
+ .word 0x000026A8, 0x000026D8
+ .word 0x000026D8, 0x00002708
+ .word 0x00002708, 0x00002738
+ .word 0x00002738, 0x00002768
+ .word 0x00002768, 0x00002798
+ .word 0x00002798, 0x000027C8
+ .word 0x000027C8, 0x00002830
+ .word 0x00002830, 0x00002898
+ .word 0x00002898, 0x00002900
+ .word 0x00002900, 0x00002968
+ .word 0x00002968, 0x000029D0
+ .word 0x000029D0, 0x00002A38
+ .word 0x00002A38, 0x00002A5C
+ .word 0x00002A5C, 0x00002A80
+ .word 0x00002A80, 0x00002AA4
+ .word 0x00002AA4, 0x00002AC8
+ .word 0x00002AC8, 0x00002AEC
+ .word 0x00002AEC, 0x00002B10
+ .word 0x00002B10, 0x00002B78
+ .word 0x00002B78, 0x00002BE0
+ .word 0x00002BE0, 0x00002C48
+ .word 0x00002C48, 0x00002CB0
+ .word 0x00002CB0, 0x00002D18
+ .word 0x00002D18, 0x00002D80
+ .word 0x00002D80, 0x00002DE8
+ .word 0x00002DE8, 0x00002E50
+ .word 0x00002E50, 0x00002E88
+ .word 0x00002E88, 0x00002EC0
+ .word 0x00002EC0, 0x00002F28
+ .word 0x00002F28, 0x00002F90
+ .word 0x00002F90, 0x00002FD4
+ .word 0x00002FD4, 0x00003018
+ .word 0x00003018, 0x000030A4
+ .word 0x000030A4, 0x00003130
+ .word 0x00003130, 0x000031BC
+ .word 0x000031BC, 0x00003248
+ .word 0x00003248, 0x000032D4
+ .word 0x000032D4, 0x00003360
+ .word 0x00003360, 0x000033EC
+ .word 0x000033EC, 0x00003478
+ .word 0x00003478, 0x00003504
+ .word 0x00003504, 0x00003590
+ .word 0x00003590, 0x0000361C
+ .word 0x0000361C, 0x000036A8
+ .word 0x000036A8, 0x000036E0
+ .word 0x000036E0, 0x00003718
+ .word 0x00003718, 0x00003750
+ .word 0x00003750, 0x00003788
+ .word 0x00003788, 0x000037C0
+ .word 0x000037C0, 0x000037F8
+ .word 0x000037F8, 0x00003830
+ .word 0x00003830, 0x00003868
+ .word 0x00003868, 0x000038D0
+ .word 0x000038D0, 0x00003938
+ .word 0x00003938, 0x000039A0
+ .word 0x000039A0, 0x00003A08
+ .word 0x00003A08, 0x00003A70
+ .word 0x00003A70, 0x00003AD8
+ .word 0x00003AD8, 0x00003B40
+ .word 0x00003B40, 0x00003BA8
+ .word 0x00003BA8, 0x00003C10
+ .word 0x00003C10, 0x00003C78
+ .word 0x00003C78, 0x00003CE0
+ .word 0x00003CE0, 0x00003D48
+ .word 0x00003D48, 0x00003D7C
+ .word 0x00003D7C, 0x00003DB0
+ .word 0x00003DB0, 0x00003DFC
+ .word 0x00003DFC, 0x00003E48
+ .word 0x00003E48, 0x00003E94
+ .word 0x00003E94, 0x00003EE0
+ .word 0x00003EE0, 0x00003F24
+ .word 0x00003F24, 0x00003F68
+ .word 0x00003F68, 0x00003FF4
+ .word 0x00003FF4, 0x00004080
+ .word 0x00004080, 0x000040B8
+ .word 0x000040B8, 0x000040F0
+ .word 0x000040F0, 0x0000413C
+ .word 0x0000413C, 0x00004188
+ .word 0x00004188, 0x00004214
+ .word 0x00004214, 0x000042A0
+ .word 0x000042A0, 0x000042E0
+ .word 0x000042E0, 0x00004320
+ .word 0x00004320, 0x00004344
+ .word 0x00004344, 0x00004368
+ .word 0x00004368, 0x000043B4
+ .word 0x000043B4, 0x00004400
+ .word 0x00004400, 0x00004454
+ .word 0x00004454, 0x000044A8
+ .word 0x000044A8, 0x000044D8
+ .word 0x000044D8, 0x00004508
+ .word 0x00004508, 0x00004528
+ .word 0x00004528, 0x00004548
+ .word 0x00004548, 0x000045D4
+ .word 0x000045D4, 0x00004660
+ .word 0x00004660, 0x000046EC
+ .word 0x000046EC, 0x00004778
+ .word 0x00004778, 0x000047B8
+ .word 0x000047B8, 0x000047F8
+ .word 0x000047F8, 0x00004830
+ .word 0x00004830, 0x00004868
+ .word 0x00004868, 0x000048F4
+ .word 0x000048F4, 0x00004980
+ .word 0x00004980, 0x00004A0C
+ .word 0x00004A0C, 0x00004A98
+ .word 0x00004A98, 0x00004B24
+ .word 0x00004B24, 0x00004BB0
+ .word 0x00004BB0, 0x00004C3C
+ .word 0x00004C3C, 0x00004CC8
+ .word 0x00004CC8, 0x00004D54
+ .word 0x00004D54, 0x00004DE0
+ .word 0x00004DE0, 0x00004E6C
+ .word 0x00004E6C, 0x00004EF8
+ .word 0x00004EF8, 0x00004F6C
+ .word 0x00004F6C, 0x00004FF8
+ .word 0x00004FF8, 0x0000506C
+ .word 0x0000506C, 0x000050F8
+ .word 0x000050F8, 0x0000515C
+ .word 0x0000515C, 0x000051C0
+ .word 0x000051C0, 0x00005224
+ .word 0x00005224, 0x00005288
+ .word 0x00005288, 0x000052FC
+ .word 0x000052FC, 0x00005388
+ .word 0x00005388, 0x000053FC
+ .word 0x000053FC, 0x00005488
+ .word 0x00005488, 0x00005538
+ .word 0x00005538, 0x000055E8
+ .word 0x000055E8, 0x00005680
+ .word 0x00005680, 0x00005718
+ .word 0x00005718, 0x000057B0
+ .word 0x000057B0, 0x00005848
+ .word 0x00005848, 0x000058BC
+ .word 0x000058BC, 0x00005948
+ .word 0x00005948, 0x000059BC
+ .word 0x000059BC, 0x00005A48
+ .word 0x00005A48, 0x00005AC0
+ .word 0x00005AC0, 0x00005B38
+ .word 0x00005B38, 0x00005BB0
+ .word 0x00005BB0, 0x00005C28
+ .word 0x00005C28, 0x00005CB4
+ .word 0x00005CB4, 0x00005D40
+ .word 0x00005D40, 0x00005DCC
+ .word 0x00005DCC, 0x00005E58
+ .word 0x00005E58, 0x00005F14
+ .word 0x00005F14, 0x00005FD0
+ .word 0x00005FD0, 0x0000608C
+ .word 0x0000608C, 0x00006148
+ .word 0x00006148, 0x00006200
+ .word 0x00006200, 0x000062B8
+ .word 0x000062B8, 0x00006370
+ .word 0x00006370, 0x00006428
+ .word 0x00006428, 0x0000648C
+ .word 0x0000648C, 0x000064F0
+ .word 0x000064F0, 0x00006554
+ .word 0x00006554, 0x000065B8
+ .word 0x000065B8, 0x00006644
+ .word 0x00006644, 0x000066D0
+ .word 0x000066D0, 0x00006748
+ .word 0x00006748, 0x000067C0
+ .word 0x000067C0, 0x00006838
+ .word 0x00006838, 0x000068B0
+ .word 0x000068B0, 0x00006958
+ .word 0x00006958, 0x00006A00
+ .word 0x00006A00, 0x00006A60
+ .word 0x00006A60, 0x00006AC0
+ .word 0x00006AC0, 0x00006B18
+ .word 0x00006B18, 0x00006B70
+ .word 0x00006B70, 0x00006BFC
+ .word 0x00006BFC, 0x00006C88
+ .word 0x00006C88, 0x00006D14
+ .word 0x00006D14, 0x00006DA0
+ .word 0x00006DA0, 0x00006E2C
+ .word 0x00006E2C, 0x00006EB8
+ .word 0x00006EB8, 0x00006F2C
+ .word 0x00006F2C, 0x00006FB8
+ .word 0x00006FB8, 0x00007048
+ .word 0x00007048, 0x000070D8
+ .word 0x000070D8, 0x00007154
+ .word 0x00007154, 0x000071D0
+ .word 0x000071D0, 0x00007218
+ .word 0x00007218, 0x00007260
+ .word 0x00007260, 0x000072C4
+ .word 0x000072C4, 0x00007328
+ .word 0x00007328, 0x000073A0
+ .word 0x000073A0, 0x00007418
+ .word 0x00007418, 0x000074E4
+ .word 0x000074E4, 0x00007570
+ .word 0x00007570, 0x0000763C
+ .word 0x0000763C, 0x000076C8
+ .word 0x000076C8, 0x00007728
+ .word 0x00007728, 0x00007788
+ .word 0x00007788, 0x000077C4
+ .word 0x000077C4, 0x00007800
+ .word 0x00007800, 0x00007824
+ .word 0x00007824, 0x00007898
+ .word 0x00007898, 0x00007934
+ .word 0x00007934, 0x00007974
+ .word 0x00007974, 0x000079DC
+ .word 0x000079DC, 0x000079E8
+ .word 0x000079E8, 0x000079F4
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x000079FC ; chunk size
+ .incbin "baserom.nds", 0x39305CC, 0x79F4
+ .balign 512, 255
diff --git a/files/FILE_3938000_zukan_enc_diamond.narc.s b/files/FILE_3938000_zukan_enc_diamond.narc.s
new file mode 100644
index 00000000..3ec06846
--- /dev/null
+++ b/files/FILE_3938000_zukan_enc_diamond.narc.s
@@ -0,0 +1,4982 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x000117E0 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00009ADC ; chunk size
+ .short 4954 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000058
+ .word 0x00000058, 0x000000B0
+ .word 0x000000B0, 0x000007DC
+ .word 0x000007DC, 0x000008A8
+ .word 0x000008A8, 0x000008EC
+ .word 0x000008EC, 0x000008F0
+ .word 0x000008F0, 0x000008F4
+ .word 0x000008F4, 0x000008F8
+ .word 0x000008F8, 0x000008FC
+ .word 0x000008FC, 0x00000900
+ .word 0x00000900, 0x00000904
+ .word 0x00000904, 0x00000908
+ .word 0x00000908, 0x0000090C
+ .word 0x0000090C, 0x00000910
+ .word 0x00000910, 0x00000914
+ .word 0x00000914, 0x00000918
+ .word 0x00000918, 0x0000091C
+ .word 0x0000091C, 0x00000920
+ .word 0x00000920, 0x00000924
+ .word 0x00000924, 0x00000928
+ .word 0x00000928, 0x0000092C
+ .word 0x0000092C, 0x00000930
+ .word 0x00000930, 0x00000934
+ .word 0x00000934, 0x00000938
+ .word 0x00000938, 0x0000093C
+ .word 0x0000093C, 0x00000940
+ .word 0x00000940, 0x00000944
+ .word 0x00000944, 0x00000948
+ .word 0x00000948, 0x0000094C
+ .word 0x0000094C, 0x00000954
+ .word 0x00000954, 0x00000958
+ .word 0x00000958, 0x0000095C
+ .word 0x0000095C, 0x00000960
+ .word 0x00000960, 0x00000964
+ .word 0x00000964, 0x00000968
+ .word 0x00000968, 0x0000096C
+ .word 0x0000096C, 0x00000970
+ .word 0x00000970, 0x00000974
+ .word 0x00000974, 0x00000978
+ .word 0x00000978, 0x00000980
+ .word 0x00000980, 0x00000984
+ .word 0x00000984, 0x00000988
+ .word 0x00000988, 0x0000098C
+ .word 0x0000098C, 0x00000990
+ .word 0x00000990, 0x00000994
+ .word 0x00000994, 0x000009B4
+ .word 0x000009B4, 0x000009DC
+ .word 0x000009DC, 0x000009E0
+ .word 0x000009E0, 0x000009E4
+ .word 0x000009E4, 0x000009E8
+ .word 0x000009E8, 0x000009EC
+ .word 0x000009EC, 0x000009F0
+ .word 0x000009F0, 0x000009F4
+ .word 0x000009F4, 0x000009F8
+ .word 0x000009F8, 0x000009FC
+ .word 0x000009FC, 0x00000A00
+ .word 0x00000A00, 0x00000A04
+ .word 0x00000A04, 0x00000A08
+ .word 0x00000A08, 0x00000A24
+ .word 0x00000A24, 0x00000A40
+ .word 0x00000A40, 0x00000A44
+ .word 0x00000A44, 0x00000A48
+ .word 0x00000A48, 0x00000A4C
+ .word 0x00000A4C, 0x00000A50
+ .word 0x00000A50, 0x00000A54
+ .word 0x00000A54, 0x00000A58
+ .word 0x00000A58, 0x00000A5C
+ .word 0x00000A5C, 0x00000A60
+ .word 0x00000A60, 0x00000A68
+ .word 0x00000A68, 0x00000A6C
+ .word 0x00000A6C, 0x00000A74
+ .word 0x00000A74, 0x00000A84
+ .word 0x00000A84, 0x00000A88
+ .word 0x00000A88, 0x00000A8C
+ .word 0x00000A8C, 0x00000A90
+ .word 0x00000A90, 0x00000A94
+ .word 0x00000A94, 0x00000A98
+ .word 0x00000A98, 0x00000A9C
+ .word 0x00000A9C, 0x00000AC0
+ .word 0x00000AC0, 0x00000AD8
+ .word 0x00000AD8, 0x00000ADC
+ .word 0x00000ADC, 0x00000AE0
+ .word 0x00000AE0, 0x00000AE4
+ .word 0x00000AE4, 0x00000AE8
+ .word 0x00000AE8, 0x00000AEC
+ .word 0x00000AEC, 0x00000AF0
+ .word 0x00000AF0, 0x00000AF4
+ .word 0x00000AF4, 0x00000AF8
+ .word 0x00000AF8, 0x00000AFC
+ .word 0x00000AFC, 0x00000B00
+ .word 0x00000B00, 0x00000B04
+ .word 0x00000B04, 0x00000B08
+ .word 0x00000B08, 0x00000B0C
+ .word 0x00000B0C, 0x00000B10
+ .word 0x00000B10, 0x00000B14
+ .word 0x00000B14, 0x00000B18
+ .word 0x00000B18, 0x00000B24
+ .word 0x00000B24, 0x00000B2C
+ .word 0x00000B2C, 0x00000B30
+ .word 0x00000B30, 0x00000B48
+ .word 0x00000B48, 0x00000B4C
+ .word 0x00000B4C, 0x00000B50
+ .word 0x00000B50, 0x00000B54
+ .word 0x00000B54, 0x00000B58
+ .word 0x00000B58, 0x00000B5C
+ .word 0x00000B5C, 0x00000B60
+ .word 0x00000B60, 0x00000B64
+ .word 0x00000B64, 0x00000B68
+ .word 0x00000B68, 0x00000B6C
+ .word 0x00000B6C, 0x00000B70
+ .word 0x00000B70, 0x00000B74
+ .word 0x00000B74, 0x00000B78
+ .word 0x00000B78, 0x00000B7C
+ .word 0x00000B7C, 0x00000B80
+ .word 0x00000B80, 0x00000B88
+ .word 0x00000B88, 0x00000B8C
+ .word 0x00000B8C, 0x00000B90
+ .word 0x00000B90, 0x00000B94
+ .word 0x00000B94, 0x00000B98
+ .word 0x00000B98, 0x00000B9C
+ .word 0x00000B9C, 0x00000BA0
+ .word 0x00000BA0, 0x00000BA4
+ .word 0x00000BA4, 0x00000BB8
+ .word 0x00000BB8, 0x00000BCC
+ .word 0x00000BCC, 0x00000BD0
+ .word 0x00000BD0, 0x00000BD4
+ .word 0x00000BD4, 0x00000BD8
+ .word 0x00000BD8, 0x00000BDC
+ .word 0x00000BDC, 0x00000BE0
+ .word 0x00000BE0, 0x00000BE4
+ .word 0x00000BE4, 0x00000BE8
+ .word 0x00000BE8, 0x00000BEC
+ .word 0x00000BEC, 0x00000BF0
+ .word 0x00000BF0, 0x00000C18
+ .word 0x00000C18, 0x00000C40
+ .word 0x00000C40, 0x00000C48
+ .word 0x00000C48, 0x00000C4C
+ .word 0x00000C4C, 0x00000C50
+ .word 0x00000C50, 0x00000C54
+ .word 0x00000C54, 0x00000C58
+ .word 0x00000C58, 0x00000C5C
+ .word 0x00000C5C, 0x00000C60
+ .word 0x00000C60, 0x00000C64
+ .word 0x00000C64, 0x00000C68
+ .word 0x00000C68, 0x00000C6C
+ .word 0x00000C6C, 0x00000C70
+ .word 0x00000C70, 0x00000C74
+ .word 0x00000C74, 0x00000C78
+ .word 0x00000C78, 0x00000C7C
+ .word 0x00000C7C, 0x00000C80
+ .word 0x00000C80, 0x00000C84
+ .word 0x00000C84, 0x00000C8C
+ .word 0x00000C8C, 0x00000C94
+ .word 0x00000C94, 0x00000C98
+ .word 0x00000C98, 0x00000C9C
+ .word 0x00000C9C, 0x00000CA0
+ .word 0x00000CA0, 0x00000CA4
+ .word 0x00000CA4, 0x00000CA8
+ .word 0x00000CA8, 0x00000CAC
+ .word 0x00000CAC, 0x00000CB0
+ .word 0x00000CB0, 0x00000CB4
+ .word 0x00000CB4, 0x00000CB8
+ .word 0x00000CB8, 0x00000CBC
+ .word 0x00000CBC, 0x00000CC0
+ .word 0x00000CC0, 0x00000CC4
+ .word 0x00000CC4, 0x00000CC8
+ .word 0x00000CC8, 0x00000CCC
+ .word 0x00000CCC, 0x00000CD0
+ .word 0x00000CD0, 0x00000CD4
+ .word 0x00000CD4, 0x00000CD8
+ .word 0x00000CD8, 0x00000CDC
+ .word 0x00000CDC, 0x00000CE0
+ .word 0x00000CE0, 0x00000CE4
+ .word 0x00000CE4, 0x00000CE8
+ .word 0x00000CE8, 0x00000CEC
+ .word 0x00000CEC, 0x00000CF0
+ .word 0x00000CF0, 0x00000CF8
+ .word 0x00000CF8, 0x00000D00
+ .word 0x00000D00, 0x00000D04
+ .word 0x00000D04, 0x00000D08
+ .word 0x00000D08, 0x00000D0C
+ .word 0x00000D0C, 0x00000D10
+ .word 0x00000D10, 0x00000D14
+ .word 0x00000D14, 0x00000D18
+ .word 0x00000D18, 0x00000D1C
+ .word 0x00000D1C, 0x00000D20
+ .word 0x00000D20, 0x00000D24
+ .word 0x00000D24, 0x00000D2C
+ .word 0x00000D2C, 0x00000D30
+ .word 0x00000D30, 0x00000D34
+ .word 0x00000D34, 0x00000D38
+ .word 0x00000D38, 0x00000D3C
+ .word 0x00000D3C, 0x00000D40
+ .word 0x00000D40, 0x00000D44
+ .word 0x00000D44, 0x00000D48
+ .word 0x00000D48, 0x00000D4C
+ .word 0x00000D4C, 0x00000D50
+ .word 0x00000D50, 0x00000D54
+ .word 0x00000D54, 0x00000D5C
+ .word 0x00000D5C, 0x00000D64
+ .word 0x00000D64, 0x00000D68
+ .word 0x00000D68, 0x00000D6C
+ .word 0x00000D6C, 0x00000D70
+ .word 0x00000D70, 0x00000D74
+ .word 0x00000D74, 0x00000D78
+ .word 0x00000D78, 0x00000D80
+ .word 0x00000D80, 0x00000D84
+ .word 0x00000D84, 0x00000D88
+ .word 0x00000D88, 0x00000D8C
+ .word 0x00000D8C, 0x00000D90
+ .word 0x00000D90, 0x00000D94
+ .word 0x00000D94, 0x00000D98
+ .word 0x00000D98, 0x00000DA8
+ .word 0x00000DA8, 0x00000DAC
+ .word 0x00000DAC, 0x00000DB0
+ .word 0x00000DB0, 0x00000DB4
+ .word 0x00000DB4, 0x00000DB8
+ .word 0x00000DB8, 0x00000DBC
+ .word 0x00000DBC, 0x00000DC0
+ .word 0x00000DC0, 0x00000DCC
+ .word 0x00000DCC, 0x00000DD0
+ .word 0x00000DD0, 0x00000DD4
+ .word 0x00000DD4, 0x00000DDC
+ .word 0x00000DDC, 0x00000DE4
+ .word 0x00000DE4, 0x00000DE8
+ .word 0x00000DE8, 0x00000DEC
+ .word 0x00000DEC, 0x00000DF0
+ .word 0x00000DF0, 0x00000DF4
+ .word 0x00000DF4, 0x00000DF8
+ .word 0x00000DF8, 0x00000DFC
+ .word 0x00000DFC, 0x00000E00
+ .word 0x00000E00, 0x00000E04
+ .word 0x00000E04, 0x00000E08
+ .word 0x00000E08, 0x00000E0C
+ .word 0x00000E0C, 0x00000E10
+ .word 0x00000E10, 0x00000E14
+ .word 0x00000E14, 0x00000E18
+ .word 0x00000E18, 0x00000E1C
+ .word 0x00000E1C, 0x00000E20
+ .word 0x00000E20, 0x00000E24
+ .word 0x00000E24, 0x00000E28
+ .word 0x00000E28, 0x00000E2C
+ .word 0x00000E2C, 0x00000E30
+ .word 0x00000E30, 0x00000E34
+ .word 0x00000E34, 0x00000E38
+ .word 0x00000E38, 0x00000E3C
+ .word 0x00000E3C, 0x00000E40
+ .word 0x00000E40, 0x00000E44
+ .word 0x00000E44, 0x00000E48
+ .word 0x00000E48, 0x00000E4C
+ .word 0x00000E4C, 0x00000E50
+ .word 0x00000E50, 0x00000E54
+ .word 0x00000E54, 0x00000E58
+ .word 0x00000E58, 0x00000E5C
+ .word 0x00000E5C, 0x00000E60
+ .word 0x00000E60, 0x00000E64
+ .word 0x00000E64, 0x00000E68
+ .word 0x00000E68, 0x00000E6C
+ .word 0x00000E6C, 0x00000E70
+ .word 0x00000E70, 0x00000E74
+ .word 0x00000E74, 0x00000E78
+ .word 0x00000E78, 0x00000E7C
+ .word 0x00000E7C, 0x00000E80
+ .word 0x00000E80, 0x00000E84
+ .word 0x00000E84, 0x00000E88
+ .word 0x00000E88, 0x00000E8C
+ .word 0x00000E8C, 0x00000E90
+ .word 0x00000E90, 0x00000E94
+ .word 0x00000E94, 0x00000E98
+ .word 0x00000E98, 0x00000EA0
+ .word 0x00000EA0, 0x00000EA8
+ .word 0x00000EA8, 0x00000EB0
+ .word 0x00000EB0, 0x00000EB4
+ .word 0x00000EB4, 0x00000EB8
+ .word 0x00000EB8, 0x00000EBC
+ .word 0x00000EBC, 0x00000EC0
+ .word 0x00000EC0, 0x00000EC4
+ .word 0x00000EC4, 0x00000EC8
+ .word 0x00000EC8, 0x00000ECC
+ .word 0x00000ECC, 0x00000ED0
+ .word 0x00000ED0, 0x00000ED4
+ .word 0x00000ED4, 0x00000ED8
+ .word 0x00000ED8, 0x00000EDC
+ .word 0x00000EDC, 0x00000EE0
+ .word 0x00000EE0, 0x00000EE4
+ .word 0x00000EE4, 0x00000EE8
+ .word 0x00000EE8, 0x00000EEC
+ .word 0x00000EEC, 0x00000EF0
+ .word 0x00000EF0, 0x00000EF4
+ .word 0x00000EF4, 0x00000EF8
+ .word 0x00000EF8, 0x00000EFC
+ .word 0x00000EFC, 0x00000F00
+ .word 0x00000F00, 0x00000F04
+ .word 0x00000F04, 0x00000F08
+ .word 0x00000F08, 0x00000F0C
+ .word 0x00000F0C, 0x00000F10
+ .word 0x00000F10, 0x00000F14
+ .word 0x00000F14, 0x00000F18
+ .word 0x00000F18, 0x00000F1C
+ .word 0x00000F1C, 0x00000F20
+ .word 0x00000F20, 0x00000F24
+ .word 0x00000F24, 0x00000F28
+ .word 0x00000F28, 0x00000F30
+ .word 0x00000F30, 0x00000F34
+ .word 0x00000F34, 0x00000F38
+ .word 0x00000F38, 0x00000F3C
+ .word 0x00000F3C, 0x00000F40
+ .word 0x00000F40, 0x00000F44
+ .word 0x00000F44, 0x00000F48
+ .word 0x00000F48, 0x00000F4C
+ .word 0x00000F4C, 0x00000F50
+ .word 0x00000F50, 0x00000F58
+ .word 0x00000F58, 0x00000F64
+ .word 0x00000F64, 0x00000F68
+ .word 0x00000F68, 0x00000F6C
+ .word 0x00000F6C, 0x00000F70
+ .word 0x00000F70, 0x00000F74
+ .word 0x00000F74, 0x00000F78
+ .word 0x00000F78, 0x00000F7C
+ .word 0x00000F7C, 0x00000F84
+ .word 0x00000F84, 0x00000F88
+ .word 0x00000F88, 0x00000F8C
+ .word 0x00000F8C, 0x00000F94
+ .word 0x00000F94, 0x00000F98
+ .word 0x00000F98, 0x00000F9C
+ .word 0x00000F9C, 0x00000FA0
+ .word 0x00000FA0, 0x00000FA4
+ .word 0x00000FA4, 0x00000FAC
+ .word 0x00000FAC, 0x00000FB0
+ .word 0x00000FB0, 0x00000FB4
+ .word 0x00000FB4, 0x00000FB8
+ .word 0x00000FB8, 0x00000FBC
+ .word 0x00000FBC, 0x00000FC0
+ .word 0x00000FC0, 0x00000FC4
+ .word 0x00000FC4, 0x00000FC8
+ .word 0x00000FC8, 0x00000FCC
+ .word 0x00000FCC, 0x00000FD0
+ .word 0x00000FD0, 0x00000FD4
+ .word 0x00000FD4, 0x00000FD8
+ .word 0x00000FD8, 0x00000FDC
+ .word 0x00000FDC, 0x00000FE0
+ .word 0x00000FE0, 0x00000FE4
+ .word 0x00000FE4, 0x00000FE8
+ .word 0x00000FE8, 0x00000FFC
+ .word 0x00000FFC, 0x00001010
+ .word 0x00001010, 0x00001014
+ .word 0x00001014, 0x00001018
+ .word 0x00001018, 0x0000101C
+ .word 0x0000101C, 0x00001020
+ .word 0x00001020, 0x00001024
+ .word 0x00001024, 0x00001028
+ .word 0x00001028, 0x0000102C
+ .word 0x0000102C, 0x00001030
+ .word 0x00001030, 0x00001034
+ .word 0x00001034, 0x00001038
+ .word 0x00001038, 0x0000103C
+ .word 0x0000103C, 0x00001040
+ .word 0x00001040, 0x00001044
+ .word 0x00001044, 0x00001048
+ .word 0x00001048, 0x0000104C
+ .word 0x0000104C, 0x00001050
+ .word 0x00001050, 0x00001054
+ .word 0x00001054, 0x00001060
+ .word 0x00001060, 0x00001064
+ .word 0x00001064, 0x00001068
+ .word 0x00001068, 0x0000106C
+ .word 0x0000106C, 0x00001070
+ .word 0x00001070, 0x00001074
+ .word 0x00001074, 0x00001078
+ .word 0x00001078, 0x0000107C
+ .word 0x0000107C, 0x00001080
+ .word 0x00001080, 0x00001084
+ .word 0x00001084, 0x00001088
+ .word 0x00001088, 0x0000108C
+ .word 0x0000108C, 0x00001090
+ .word 0x00001090, 0x00001094
+ .word 0x00001094, 0x00001098
+ .word 0x00001098, 0x0000109C
+ .word 0x0000109C, 0x000010A0
+ .word 0x000010A0, 0x000010A4
+ .word 0x000010A4, 0x000010A8
+ .word 0x000010A8, 0x000010AC
+ .word 0x000010AC, 0x000010B0
+ .word 0x000010B0, 0x000010B4
+ .word 0x000010B4, 0x000010B8
+ .word 0x000010B8, 0x000010BC
+ .word 0x000010BC, 0x000010C0
+ .word 0x000010C0, 0x000010C4
+ .word 0x000010C4, 0x000010C8
+ .word 0x000010C8, 0x000010CC
+ .word 0x000010CC, 0x000010D0
+ .word 0x000010D0, 0x000010D4
+ .word 0x000010D4, 0x000010D8
+ .word 0x000010D8, 0x000010DC
+ .word 0x000010DC, 0x000010E0
+ .word 0x000010E0, 0x000010E4
+ .word 0x000010E4, 0x000010E8
+ .word 0x000010E8, 0x000010EC
+ .word 0x000010EC, 0x000010F0
+ .word 0x000010F0, 0x000010F4
+ .word 0x000010F4, 0x00001100
+ .word 0x00001100, 0x00001110
+ .word 0x00001110, 0x00001114
+ .word 0x00001114, 0x00001120
+ .word 0x00001120, 0x00001134
+ .word 0x00001134, 0x00001138
+ .word 0x00001138, 0x00001140
+ .word 0x00001140, 0x00001144
+ .word 0x00001144, 0x00001148
+ .word 0x00001148, 0x0000114C
+ .word 0x0000114C, 0x00001158
+ .word 0x00001158, 0x0000115C
+ .word 0x0000115C, 0x00001160
+ .word 0x00001160, 0x00001164
+ .word 0x00001164, 0x00001168
+ .word 0x00001168, 0x0000116C
+ .word 0x0000116C, 0x00001170
+ .word 0x00001170, 0x00001174
+ .word 0x00001174, 0x00001178
+ .word 0x00001178, 0x0000117C
+ .word 0x0000117C, 0x00001180
+ .word 0x00001180, 0x00001184
+ .word 0x00001184, 0x00001188
+ .word 0x00001188, 0x00001190
+ .word 0x00001190, 0x00001194
+ .word 0x00001194, 0x00001198
+ .word 0x00001198, 0x0000119C
+ .word 0x0000119C, 0x000011A0
+ .word 0x000011A0, 0x000011A4
+ .word 0x000011A4, 0x000011A8
+ .word 0x000011A8, 0x000011AC
+ .word 0x000011AC, 0x000011B4
+ .word 0x000011B4, 0x000011B8
+ .word 0x000011B8, 0x000011BC
+ .word 0x000011BC, 0x000011C0
+ .word 0x000011C0, 0x000011C4
+ .word 0x000011C4, 0x000011C8
+ .word 0x000011C8, 0x000011D8
+ .word 0x000011D8, 0x000011DC
+ .word 0x000011DC, 0x000011E0
+ .word 0x000011E0, 0x000011F0
+ .word 0x000011F0, 0x000011FC
+ .word 0x000011FC, 0x00001200
+ .word 0x00001200, 0x00001204
+ .word 0x00001204, 0x00001208
+ .word 0x00001208, 0x0000120C
+ .word 0x0000120C, 0x00001210
+ .word 0x00001210, 0x00001218
+ .word 0x00001218, 0x0000121C
+ .word 0x0000121C, 0x00001220
+ .word 0x00001220, 0x00001224
+ .word 0x00001224, 0x00001228
+ .word 0x00001228, 0x0000122C
+ .word 0x0000122C, 0x00001234
+ .word 0x00001234, 0x00001238
+ .word 0x00001238, 0x0000123C
+ .word 0x0000123C, 0x00001240
+ .word 0x00001240, 0x00001244
+ .word 0x00001244, 0x00001248
+ .word 0x00001248, 0x0000124C
+ .word 0x0000124C, 0x00001250
+ .word 0x00001250, 0x00001254
+ .word 0x00001254, 0x00001258
+ .word 0x00001258, 0x00001260
+ .word 0x00001260, 0x00001268
+ .word 0x00001268, 0x0000126C
+ .word 0x0000126C, 0x00001270
+ .word 0x00001270, 0x00001274
+ .word 0x00001274, 0x00001278
+ .word 0x00001278, 0x0000127C
+ .word 0x0000127C, 0x00001280
+ .word 0x00001280, 0x00001284
+ .word 0x00001284, 0x00001288
+ .word 0x00001288, 0x0000128C
+ .word 0x0000128C, 0x00001290
+ .word 0x00001290, 0x00001294
+ .word 0x00001294, 0x00001298
+ .word 0x00001298, 0x0000129C
+ .word 0x0000129C, 0x000012A0
+ .word 0x000012A0, 0x000012A4
+ .word 0x000012A4, 0x000012A8
+ .word 0x000012A8, 0x000012AC
+ .word 0x000012AC, 0x000012B0
+ .word 0x000012B0, 0x000012B4
+ .word 0x000012B4, 0x000012B8
+ .word 0x000012B8, 0x000012BC
+ .word 0x000012BC, 0x000012C0
+ .word 0x000012C0, 0x000012C4
+ .word 0x000012C4, 0x000012C8
+ .word 0x000012C8, 0x000012CC
+ .word 0x000012CC, 0x000012D0
+ .word 0x000012D0, 0x000012D4
+ .word 0x000012D4, 0x000012D8
+ .word 0x000012D8, 0x000012DC
+ .word 0x000012DC, 0x000012E0
+ .word 0x000012E0, 0x000012E4
+ .word 0x000012E4, 0x000012E8
+ .word 0x000012E8, 0x000012EC
+ .word 0x000012EC, 0x000012F0
+ .word 0x000012F0, 0x00001334
+ .word 0x00001334, 0x00001338
+ .word 0x00001338, 0x0000133C
+ .word 0x0000133C, 0x00001340
+ .word 0x00001340, 0x00001344
+ .word 0x00001344, 0x00001348
+ .word 0x00001348, 0x0000134C
+ .word 0x0000134C, 0x00001350
+ .word 0x00001350, 0x00001354
+ .word 0x00001354, 0x00001358
+ .word 0x00001358, 0x0000135C
+ .word 0x0000135C, 0x00001360
+ .word 0x00001360, 0x00001364
+ .word 0x00001364, 0x00001368
+ .word 0x00001368, 0x0000136C
+ .word 0x0000136C, 0x00001370
+ .word 0x00001370, 0x00001374
+ .word 0x00001374, 0x00001378
+ .word 0x00001378, 0x0000137C
+ .word 0x0000137C, 0x00001380
+ .word 0x00001380, 0x00001384
+ .word 0x00001384, 0x00001388
+ .word 0x00001388, 0x0000138C
+ .word 0x0000138C, 0x00001390
+ .word 0x00001390, 0x00001394
+ .word 0x00001394, 0x0000139C
+ .word 0x0000139C, 0x000013A0
+ .word 0x000013A0, 0x000013A4
+ .word 0x000013A4, 0x000013A8
+ .word 0x000013A8, 0x000013AC
+ .word 0x000013AC, 0x000013B0
+ .word 0x000013B0, 0x000013B4
+ .word 0x000013B4, 0x000013B8
+ .word 0x000013B8, 0x000013BC
+ .word 0x000013BC, 0x000013C0
+ .word 0x000013C0, 0x000013C8
+ .word 0x000013C8, 0x000013CC
+ .word 0x000013CC, 0x000013D0
+ .word 0x000013D0, 0x000013D4
+ .word 0x000013D4, 0x000013D8
+ .word 0x000013D8, 0x000013DC
+ .word 0x000013DC, 0x000013FC
+ .word 0x000013FC, 0x00001424
+ .word 0x00001424, 0x00001428
+ .word 0x00001428, 0x0000142C
+ .word 0x0000142C, 0x00001430
+ .word 0x00001430, 0x00001434
+ .word 0x00001434, 0x00001438
+ .word 0x00001438, 0x0000143C
+ .word 0x0000143C, 0x00001440
+ .word 0x00001440, 0x00001444
+ .word 0x00001444, 0x00001448
+ .word 0x00001448, 0x0000144C
+ .word 0x0000144C, 0x00001450
+ .word 0x00001450, 0x0000146C
+ .word 0x0000146C, 0x00001488
+ .word 0x00001488, 0x0000148C
+ .word 0x0000148C, 0x00001490
+ .word 0x00001490, 0x00001494
+ .word 0x00001494, 0x00001498
+ .word 0x00001498, 0x0000149C
+ .word 0x0000149C, 0x000014A0
+ .word 0x000014A0, 0x000014A4
+ .word 0x000014A4, 0x000014A8
+ .word 0x000014A8, 0x000014B0
+ .word 0x000014B0, 0x000014B4
+ .word 0x000014B4, 0x000014BC
+ .word 0x000014BC, 0x000014CC
+ .word 0x000014CC, 0x000014D0
+ .word 0x000014D0, 0x000014D4
+ .word 0x000014D4, 0x000014D8
+ .word 0x000014D8, 0x000014DC
+ .word 0x000014DC, 0x000014E0
+ .word 0x000014E0, 0x000014E4
+ .word 0x000014E4, 0x00001508
+ .word 0x00001508, 0x00001520
+ .word 0x00001520, 0x00001524
+ .word 0x00001524, 0x00001528
+ .word 0x00001528, 0x0000152C
+ .word 0x0000152C, 0x00001530
+ .word 0x00001530, 0x00001534
+ .word 0x00001534, 0x00001538
+ .word 0x00001538, 0x0000153C
+ .word 0x0000153C, 0x00001540
+ .word 0x00001540, 0x00001544
+ .word 0x00001544, 0x00001548
+ .word 0x00001548, 0x0000154C
+ .word 0x0000154C, 0x00001550
+ .word 0x00001550, 0x00001554
+ .word 0x00001554, 0x00001558
+ .word 0x00001558, 0x0000155C
+ .word 0x0000155C, 0x00001560
+ .word 0x00001560, 0x0000156C
+ .word 0x0000156C, 0x00001574
+ .word 0x00001574, 0x00001578
+ .word 0x00001578, 0x00001590
+ .word 0x00001590, 0x00001594
+ .word 0x00001594, 0x00001598
+ .word 0x00001598, 0x0000159C
+ .word 0x0000159C, 0x000015A0
+ .word 0x000015A0, 0x000015A4
+ .word 0x000015A4, 0x000015A8
+ .word 0x000015A8, 0x000015AC
+ .word 0x000015AC, 0x000015B0
+ .word 0x000015B0, 0x000015B4
+ .word 0x000015B4, 0x000015B8
+ .word 0x000015B8, 0x000015BC
+ .word 0x000015BC, 0x000015C0
+ .word 0x000015C0, 0x000015C4
+ .word 0x000015C4, 0x000015C8
+ .word 0x000015C8, 0x000015D0
+ .word 0x000015D0, 0x000015D4
+ .word 0x000015D4, 0x000015D8
+ .word 0x000015D8, 0x000015DC
+ .word 0x000015DC, 0x000015E0
+ .word 0x000015E0, 0x000015E4
+ .word 0x000015E4, 0x000015E8
+ .word 0x000015E8, 0x000015EC
+ .word 0x000015EC, 0x00001600
+ .word 0x00001600, 0x00001614
+ .word 0x00001614, 0x00001618
+ .word 0x00001618, 0x0000161C
+ .word 0x0000161C, 0x00001620
+ .word 0x00001620, 0x00001624
+ .word 0x00001624, 0x00001628
+ .word 0x00001628, 0x0000162C
+ .word 0x0000162C, 0x00001630
+ .word 0x00001630, 0x00001634
+ .word 0x00001634, 0x00001638
+ .word 0x00001638, 0x00001660
+ .word 0x00001660, 0x00001688
+ .word 0x00001688, 0x00001690
+ .word 0x00001690, 0x00001694
+ .word 0x00001694, 0x00001698
+ .word 0x00001698, 0x0000169C
+ .word 0x0000169C, 0x000016A0
+ .word 0x000016A0, 0x000016A4
+ .word 0x000016A4, 0x000016A8
+ .word 0x000016A8, 0x000016AC
+ .word 0x000016AC, 0x000016B0
+ .word 0x000016B0, 0x000016B4
+ .word 0x000016B4, 0x000016B8
+ .word 0x000016B8, 0x000016BC
+ .word 0x000016BC, 0x000016C0
+ .word 0x000016C0, 0x000016C4
+ .word 0x000016C4, 0x000016C8
+ .word 0x000016C8, 0x000016CC
+ .word 0x000016CC, 0x000016D4
+ .word 0x000016D4, 0x000016DC
+ .word 0x000016DC, 0x000016E0
+ .word 0x000016E0, 0x000016E4
+ .word 0x000016E4, 0x000016E8
+ .word 0x000016E8, 0x000016EC
+ .word 0x000016EC, 0x000016F0
+ .word 0x000016F0, 0x000016F4
+ .word 0x000016F4, 0x000016F8
+ .word 0x000016F8, 0x000016FC
+ .word 0x000016FC, 0x00001700
+ .word 0x00001700, 0x00001704
+ .word 0x00001704, 0x00001708
+ .word 0x00001708, 0x0000170C
+ .word 0x0000170C, 0x00001710
+ .word 0x00001710, 0x00001714
+ .word 0x00001714, 0x00001718
+ .word 0x00001718, 0x0000171C
+ .word 0x0000171C, 0x00001720
+ .word 0x00001720, 0x00001724
+ .word 0x00001724, 0x00001728
+ .word 0x00001728, 0x0000172C
+ .word 0x0000172C, 0x00001730
+ .word 0x00001730, 0x00001734
+ .word 0x00001734, 0x00001738
+ .word 0x00001738, 0x00001740
+ .word 0x00001740, 0x00001748
+ .word 0x00001748, 0x0000174C
+ .word 0x0000174C, 0x00001750
+ .word 0x00001750, 0x00001754
+ .word 0x00001754, 0x00001758
+ .word 0x00001758, 0x0000175C
+ .word 0x0000175C, 0x00001760
+ .word 0x00001760, 0x00001764
+ .word 0x00001764, 0x00001768
+ .word 0x00001768, 0x0000176C
+ .word 0x0000176C, 0x00001774
+ .word 0x00001774, 0x00001778
+ .word 0x00001778, 0x0000177C
+ .word 0x0000177C, 0x00001780
+ .word 0x00001780, 0x00001784
+ .word 0x00001784, 0x00001788
+ .word 0x00001788, 0x0000178C
+ .word 0x0000178C, 0x00001790
+ .word 0x00001790, 0x00001794
+ .word 0x00001794, 0x00001798
+ .word 0x00001798, 0x0000179C
+ .word 0x0000179C, 0x000017A4
+ .word 0x000017A4, 0x000017AC
+ .word 0x000017AC, 0x000017B0
+ .word 0x000017B0, 0x000017B4
+ .word 0x000017B4, 0x000017B8
+ .word 0x000017B8, 0x000017BC
+ .word 0x000017BC, 0x000017C0
+ .word 0x000017C0, 0x000017C8
+ .word 0x000017C8, 0x000017CC
+ .word 0x000017CC, 0x000017D0
+ .word 0x000017D0, 0x000017D4
+ .word 0x000017D4, 0x000017D8
+ .word 0x000017D8, 0x000017DC
+ .word 0x000017DC, 0x000017E0
+ .word 0x000017E0, 0x000017F0
+ .word 0x000017F0, 0x000017F4
+ .word 0x000017F4, 0x000017F8
+ .word 0x000017F8, 0x000017FC
+ .word 0x000017FC, 0x00001800
+ .word 0x00001800, 0x00001804
+ .word 0x00001804, 0x00001808
+ .word 0x00001808, 0x00001814
+ .word 0x00001814, 0x00001818
+ .word 0x00001818, 0x0000181C
+ .word 0x0000181C, 0x00001824
+ .word 0x00001824, 0x0000182C
+ .word 0x0000182C, 0x00001830
+ .word 0x00001830, 0x00001834
+ .word 0x00001834, 0x00001838
+ .word 0x00001838, 0x0000183C
+ .word 0x0000183C, 0x00001840
+ .word 0x00001840, 0x00001844
+ .word 0x00001844, 0x00001848
+ .word 0x00001848, 0x0000184C
+ .word 0x0000184C, 0x00001850
+ .word 0x00001850, 0x00001854
+ .word 0x00001854, 0x00001858
+ .word 0x00001858, 0x0000185C
+ .word 0x0000185C, 0x00001860
+ .word 0x00001860, 0x00001864
+ .word 0x00001864, 0x00001868
+ .word 0x00001868, 0x0000186C
+ .word 0x0000186C, 0x00001870
+ .word 0x00001870, 0x00001874
+ .word 0x00001874, 0x00001878
+ .word 0x00001878, 0x0000187C
+ .word 0x0000187C, 0x00001880
+ .word 0x00001880, 0x00001884
+ .word 0x00001884, 0x00001888
+ .word 0x00001888, 0x0000188C
+ .word 0x0000188C, 0x00001890
+ .word 0x00001890, 0x00001894
+ .word 0x00001894, 0x00001898
+ .word 0x00001898, 0x0000189C
+ .word 0x0000189C, 0x000018A0
+ .word 0x000018A0, 0x000018A4
+ .word 0x000018A4, 0x000018A8
+ .word 0x000018A8, 0x000018AC
+ .word 0x000018AC, 0x000018B0
+ .word 0x000018B0, 0x000018B4
+ .word 0x000018B4, 0x000018B8
+ .word 0x000018B8, 0x000018BC
+ .word 0x000018BC, 0x000018C0
+ .word 0x000018C0, 0x000018C4
+ .word 0x000018C4, 0x000018C8
+ .word 0x000018C8, 0x000018CC
+ .word 0x000018CC, 0x000018D0
+ .word 0x000018D0, 0x000018D4
+ .word 0x000018D4, 0x000018D8
+ .word 0x000018D8, 0x000018DC
+ .word 0x000018DC, 0x000018E0
+ .word 0x000018E0, 0x000018E8
+ .word 0x000018E8, 0x000018F0
+ .word 0x000018F0, 0x000018F8
+ .word 0x000018F8, 0x000018FC
+ .word 0x000018FC, 0x00001900
+ .word 0x00001900, 0x00001904
+ .word 0x00001904, 0x00001908
+ .word 0x00001908, 0x0000190C
+ .word 0x0000190C, 0x00001910
+ .word 0x00001910, 0x00001914
+ .word 0x00001914, 0x00001918
+ .word 0x00001918, 0x0000191C
+ .word 0x0000191C, 0x00001920
+ .word 0x00001920, 0x00001924
+ .word 0x00001924, 0x00001928
+ .word 0x00001928, 0x0000192C
+ .word 0x0000192C, 0x00001930
+ .word 0x00001930, 0x00001934
+ .word 0x00001934, 0x00001938
+ .word 0x00001938, 0x0000193C
+ .word 0x0000193C, 0x00001940
+ .word 0x00001940, 0x00001944
+ .word 0x00001944, 0x00001948
+ .word 0x00001948, 0x0000194C
+ .word 0x0000194C, 0x00001950
+ .word 0x00001950, 0x00001954
+ .word 0x00001954, 0x00001958
+ .word 0x00001958, 0x0000195C
+ .word 0x0000195C, 0x00001960
+ .word 0x00001960, 0x00001964
+ .word 0x00001964, 0x00001968
+ .word 0x00001968, 0x0000196C
+ .word 0x0000196C, 0x00001970
+ .word 0x00001970, 0x00001978
+ .word 0x00001978, 0x0000197C
+ .word 0x0000197C, 0x00001980
+ .word 0x00001980, 0x00001984
+ .word 0x00001984, 0x00001988
+ .word 0x00001988, 0x0000198C
+ .word 0x0000198C, 0x00001990
+ .word 0x00001990, 0x00001994
+ .word 0x00001994, 0x00001998
+ .word 0x00001998, 0x000019A0
+ .word 0x000019A0, 0x000019AC
+ .word 0x000019AC, 0x000019B0
+ .word 0x000019B0, 0x000019B4
+ .word 0x000019B4, 0x000019B8
+ .word 0x000019B8, 0x000019BC
+ .word 0x000019BC, 0x000019C0
+ .word 0x000019C0, 0x000019C4
+ .word 0x000019C4, 0x000019CC
+ .word 0x000019CC, 0x000019D0
+ .word 0x000019D0, 0x000019D4
+ .word 0x000019D4, 0x000019DC
+ .word 0x000019DC, 0x000019E0
+ .word 0x000019E0, 0x000019E4
+ .word 0x000019E4, 0x000019E8
+ .word 0x000019E8, 0x000019EC
+ .word 0x000019EC, 0x000019F4
+ .word 0x000019F4, 0x000019F8
+ .word 0x000019F8, 0x000019FC
+ .word 0x000019FC, 0x00001A00
+ .word 0x00001A00, 0x00001A04
+ .word 0x00001A04, 0x00001A08
+ .word 0x00001A08, 0x00001A0C
+ .word 0x00001A0C, 0x00001A10
+ .word 0x00001A10, 0x00001A14
+ .word 0x00001A14, 0x00001A18
+ .word 0x00001A18, 0x00001A1C
+ .word 0x00001A1C, 0x00001A20
+ .word 0x00001A20, 0x00001A24
+ .word 0x00001A24, 0x00001A28
+ .word 0x00001A28, 0x00001A2C
+ .word 0x00001A2C, 0x00001A30
+ .word 0x00001A30, 0x00001A44
+ .word 0x00001A44, 0x00001A58
+ .word 0x00001A58, 0x00001A5C
+ .word 0x00001A5C, 0x00001A60
+ .word 0x00001A60, 0x00001A64
+ .word 0x00001A64, 0x00001A68
+ .word 0x00001A68, 0x00001A6C
+ .word 0x00001A6C, 0x00001A70
+ .word 0x00001A70, 0x00001A74
+ .word 0x00001A74, 0x00001A78
+ .word 0x00001A78, 0x00001A7C
+ .word 0x00001A7C, 0x00001A80
+ .word 0x00001A80, 0x00001A84
+ .word 0x00001A84, 0x00001A88
+ .word 0x00001A88, 0x00001A8C
+ .word 0x00001A8C, 0x00001A90
+ .word 0x00001A90, 0x00001A94
+ .word 0x00001A94, 0x00001A98
+ .word 0x00001A98, 0x00001A9C
+ .word 0x00001A9C, 0x00001AA8
+ .word 0x00001AA8, 0x00001AAC
+ .word 0x00001AAC, 0x00001AB0
+ .word 0x00001AB0, 0x00001AB4
+ .word 0x00001AB4, 0x00001AB8
+ .word 0x00001AB8, 0x00001ABC
+ .word 0x00001ABC, 0x00001AC0
+ .word 0x00001AC0, 0x00001AC4
+ .word 0x00001AC4, 0x00001AC8
+ .word 0x00001AC8, 0x00001ACC
+ .word 0x00001ACC, 0x00001AD0
+ .word 0x00001AD0, 0x00001AD4
+ .word 0x00001AD4, 0x00001AD8
+ .word 0x00001AD8, 0x00001ADC
+ .word 0x00001ADC, 0x00001AE0
+ .word 0x00001AE0, 0x00001AE4
+ .word 0x00001AE4, 0x00001AE8
+ .word 0x00001AE8, 0x00001AEC
+ .word 0x00001AEC, 0x00001AF0
+ .word 0x00001AF0, 0x00001AF4
+ .word 0x00001AF4, 0x00001AF8
+ .word 0x00001AF8, 0x00001AFC
+ .word 0x00001AFC, 0x00001B00
+ .word 0x00001B00, 0x00001B04
+ .word 0x00001B04, 0x00001B08
+ .word 0x00001B08, 0x00001B0C
+ .word 0x00001B0C, 0x00001B10
+ .word 0x00001B10, 0x00001B14
+ .word 0x00001B14, 0x00001B18
+ .word 0x00001B18, 0x00001B1C
+ .word 0x00001B1C, 0x00001B20
+ .word 0x00001B20, 0x00001B24
+ .word 0x00001B24, 0x00001B28
+ .word 0x00001B28, 0x00001B2C
+ .word 0x00001B2C, 0x00001B30
+ .word 0x00001B30, 0x00001B34
+ .word 0x00001B34, 0x00001B38
+ .word 0x00001B38, 0x00001B3C
+ .word 0x00001B3C, 0x00001B48
+ .word 0x00001B48, 0x00001B58
+ .word 0x00001B58, 0x00001B5C
+ .word 0x00001B5C, 0x00001B68
+ .word 0x00001B68, 0x00001B7C
+ .word 0x00001B7C, 0x00001B80
+ .word 0x00001B80, 0x00001B88
+ .word 0x00001B88, 0x00001B8C
+ .word 0x00001B8C, 0x00001B90
+ .word 0x00001B90, 0x00001B94
+ .word 0x00001B94, 0x00001BA0
+ .word 0x00001BA0, 0x00001BA4
+ .word 0x00001BA4, 0x00001BA8
+ .word 0x00001BA8, 0x00001BAC
+ .word 0x00001BAC, 0x00001BB0
+ .word 0x00001BB0, 0x00001BB4
+ .word 0x00001BB4, 0x00001BB8
+ .word 0x00001BB8, 0x00001BBC
+ .word 0x00001BBC, 0x00001BC0
+ .word 0x00001BC0, 0x00001BC4
+ .word 0x00001BC4, 0x00001BC8
+ .word 0x00001BC8, 0x00001BCC
+ .word 0x00001BCC, 0x00001BD0
+ .word 0x00001BD0, 0x00001BD8
+ .word 0x00001BD8, 0x00001BDC
+ .word 0x00001BDC, 0x00001BE0
+ .word 0x00001BE0, 0x00001BE4
+ .word 0x00001BE4, 0x00001BE8
+ .word 0x00001BE8, 0x00001BEC
+ .word 0x00001BEC, 0x00001BF0
+ .word 0x00001BF0, 0x00001BF4
+ .word 0x00001BF4, 0x00001BFC
+ .word 0x00001BFC, 0x00001C00
+ .word 0x00001C00, 0x00001C04
+ .word 0x00001C04, 0x00001C08
+ .word 0x00001C08, 0x00001C0C
+ .word 0x00001C0C, 0x00001C10
+ .word 0x00001C10, 0x00001C20
+ .word 0x00001C20, 0x00001C24
+ .word 0x00001C24, 0x00001C28
+ .word 0x00001C28, 0x00001C38
+ .word 0x00001C38, 0x00001C44
+ .word 0x00001C44, 0x00001C48
+ .word 0x00001C48, 0x00001C4C
+ .word 0x00001C4C, 0x00001C50
+ .word 0x00001C50, 0x00001C54
+ .word 0x00001C54, 0x00001C58
+ .word 0x00001C58, 0x00001C60
+ .word 0x00001C60, 0x00001C64
+ .word 0x00001C64, 0x00001C68
+ .word 0x00001C68, 0x00001C6C
+ .word 0x00001C6C, 0x00001C70
+ .word 0x00001C70, 0x00001C74
+ .word 0x00001C74, 0x00001C7C
+ .word 0x00001C7C, 0x00001C80
+ .word 0x00001C80, 0x00001C84
+ .word 0x00001C84, 0x00001C88
+ .word 0x00001C88, 0x00001C8C
+ .word 0x00001C8C, 0x00001C90
+ .word 0x00001C90, 0x00001C94
+ .word 0x00001C94, 0x00001C98
+ .word 0x00001C98, 0x00001C9C
+ .word 0x00001C9C, 0x00001CA0
+ .word 0x00001CA0, 0x00001CA8
+ .word 0x00001CA8, 0x00001CB0
+ .word 0x00001CB0, 0x00001CB4
+ .word 0x00001CB4, 0x00001CB8
+ .word 0x00001CB8, 0x00001CBC
+ .word 0x00001CBC, 0x00001CC0
+ .word 0x00001CC0, 0x00001CC4
+ .word 0x00001CC4, 0x00001CC8
+ .word 0x00001CC8, 0x00001CCC
+ .word 0x00001CCC, 0x00001CD0
+ .word 0x00001CD0, 0x00001CD4
+ .word 0x00001CD4, 0x00001CD8
+ .word 0x00001CD8, 0x00001CDC
+ .word 0x00001CDC, 0x00001CE0
+ .word 0x00001CE0, 0x00001CE4
+ .word 0x00001CE4, 0x00001CE8
+ .word 0x00001CE8, 0x00001CEC
+ .word 0x00001CEC, 0x00001CF0
+ .word 0x00001CF0, 0x00001CF4
+ .word 0x00001CF4, 0x00001CF8
+ .word 0x00001CF8, 0x00001CFC
+ .word 0x00001CFC, 0x00001D00
+ .word 0x00001D00, 0x00001D04
+ .word 0x00001D04, 0x00001D08
+ .word 0x00001D08, 0x00001D0C
+ .word 0x00001D0C, 0x00001D10
+ .word 0x00001D10, 0x00001D14
+ .word 0x00001D14, 0x00001D18
+ .word 0x00001D18, 0x00001D1C
+ .word 0x00001D1C, 0x00001D20
+ .word 0x00001D20, 0x00001D24
+ .word 0x00001D24, 0x00001D28
+ .word 0x00001D28, 0x00001D2C
+ .word 0x00001D2C, 0x00001D30
+ .word 0x00001D30, 0x00001D34
+ .word 0x00001D34, 0x00001D38
+ .word 0x00001D38, 0x00001D7C
+ .word 0x00001D7C, 0x00001D80
+ .word 0x00001D80, 0x00001D84
+ .word 0x00001D84, 0x00001D88
+ .word 0x00001D88, 0x00001D8C
+ .word 0x00001D8C, 0x00001D90
+ .word 0x00001D90, 0x00001D94
+ .word 0x00001D94, 0x00001D98
+ .word 0x00001D98, 0x00001D9C
+ .word 0x00001D9C, 0x00001DA0
+ .word 0x00001DA0, 0x00001DA4
+ .word 0x00001DA4, 0x00001DA8
+ .word 0x00001DA8, 0x00001DAC
+ .word 0x00001DAC, 0x00001DB0
+ .word 0x00001DB0, 0x00001DB4
+ .word 0x00001DB4, 0x00001DB8
+ .word 0x00001DB8, 0x00001DBC
+ .word 0x00001DBC, 0x00001DC0
+ .word 0x00001DC0, 0x00001DC4
+ .word 0x00001DC4, 0x00001DC8
+ .word 0x00001DC8, 0x00001DCC
+ .word 0x00001DCC, 0x00001DD0
+ .word 0x00001DD0, 0x00001DD4
+ .word 0x00001DD4, 0x00001DD8
+ .word 0x00001DD8, 0x00001DDC
+ .word 0x00001DDC, 0x00001DE4
+ .word 0x00001DE4, 0x00001DE8
+ .word 0x00001DE8, 0x00001DEC
+ .word 0x00001DEC, 0x00001DF0
+ .word 0x00001DF0, 0x00001DF4
+ .word 0x00001DF4, 0x00001DF8
+ .word 0x00001DF8, 0x00001DFC
+ .word 0x00001DFC, 0x00001E00
+ .word 0x00001E00, 0x00001E04
+ .word 0x00001E04, 0x00001E08
+ .word 0x00001E08, 0x00001E10
+ .word 0x00001E10, 0x00001E14
+ .word 0x00001E14, 0x00001E18
+ .word 0x00001E18, 0x00001E1C
+ .word 0x00001E1C, 0x00001E20
+ .word 0x00001E20, 0x00001E24
+ .word 0x00001E24, 0x00001E44
+ .word 0x00001E44, 0x00001E6C
+ .word 0x00001E6C, 0x00001E70
+ .word 0x00001E70, 0x00001E74
+ .word 0x00001E74, 0x00001E78
+ .word 0x00001E78, 0x00001E7C
+ .word 0x00001E7C, 0x00001E80
+ .word 0x00001E80, 0x00001E84
+ .word 0x00001E84, 0x00001E88
+ .word 0x00001E88, 0x00001E8C
+ .word 0x00001E8C, 0x00001E90
+ .word 0x00001E90, 0x00001E94
+ .word 0x00001E94, 0x00001E98
+ .word 0x00001E98, 0x00001EB4
+ .word 0x00001EB4, 0x00001ED0
+ .word 0x00001ED0, 0x00001ED4
+ .word 0x00001ED4, 0x00001ED8
+ .word 0x00001ED8, 0x00001EDC
+ .word 0x00001EDC, 0x00001EE0
+ .word 0x00001EE0, 0x00001EE4
+ .word 0x00001EE4, 0x00001EE8
+ .word 0x00001EE8, 0x00001EEC
+ .word 0x00001EEC, 0x00001EF0
+ .word 0x00001EF0, 0x00001EF8
+ .word 0x00001EF8, 0x00001EFC
+ .word 0x00001EFC, 0x00001F04
+ .word 0x00001F04, 0x00001F14
+ .word 0x00001F14, 0x00001F18
+ .word 0x00001F18, 0x00001F1C
+ .word 0x00001F1C, 0x00001F20
+ .word 0x00001F20, 0x00001F24
+ .word 0x00001F24, 0x00001F28
+ .word 0x00001F28, 0x00001F2C
+ .word 0x00001F2C, 0x00001F50
+ .word 0x00001F50, 0x00001F68
+ .word 0x00001F68, 0x00001F6C
+ .word 0x00001F6C, 0x00001F70
+ .word 0x00001F70, 0x00001F74
+ .word 0x00001F74, 0x00001F78
+ .word 0x00001F78, 0x00001F7C
+ .word 0x00001F7C, 0x00001F80
+ .word 0x00001F80, 0x00001F84
+ .word 0x00001F84, 0x00001F88
+ .word 0x00001F88, 0x00001F8C
+ .word 0x00001F8C, 0x00001F90
+ .word 0x00001F90, 0x00001F94
+ .word 0x00001F94, 0x00001F98
+ .word 0x00001F98, 0x00001F9C
+ .word 0x00001F9C, 0x00001FA0
+ .word 0x00001FA0, 0x00001FA4
+ .word 0x00001FA4, 0x00001FA8
+ .word 0x00001FA8, 0x00001FB4
+ .word 0x00001FB4, 0x00001FBC
+ .word 0x00001FBC, 0x00001FC0
+ .word 0x00001FC0, 0x00001FD8
+ .word 0x00001FD8, 0x00001FDC
+ .word 0x00001FDC, 0x00001FE0
+ .word 0x00001FE0, 0x00001FE4
+ .word 0x00001FE4, 0x00001FE8
+ .word 0x00001FE8, 0x00001FEC
+ .word 0x00001FEC, 0x00001FF0
+ .word 0x00001FF0, 0x00001FF4
+ .word 0x00001FF4, 0x00001FF8
+ .word 0x00001FF8, 0x00001FFC
+ .word 0x00001FFC, 0x00002000
+ .word 0x00002000, 0x00002004
+ .word 0x00002004, 0x00002008
+ .word 0x00002008, 0x0000200C
+ .word 0x0000200C, 0x00002010
+ .word 0x00002010, 0x00002018
+ .word 0x00002018, 0x0000201C
+ .word 0x0000201C, 0x00002020
+ .word 0x00002020, 0x00002024
+ .word 0x00002024, 0x00002028
+ .word 0x00002028, 0x0000202C
+ .word 0x0000202C, 0x00002030
+ .word 0x00002030, 0x00002034
+ .word 0x00002034, 0x00002048
+ .word 0x00002048, 0x0000205C
+ .word 0x0000205C, 0x00002060
+ .word 0x00002060, 0x00002064
+ .word 0x00002064, 0x00002068
+ .word 0x00002068, 0x0000206C
+ .word 0x0000206C, 0x00002070
+ .word 0x00002070, 0x00002074
+ .word 0x00002074, 0x00002078
+ .word 0x00002078, 0x0000207C
+ .word 0x0000207C, 0x00002080
+ .word 0x00002080, 0x000020A8
+ .word 0x000020A8, 0x000020D0
+ .word 0x000020D0, 0x000020D8
+ .word 0x000020D8, 0x000020DC
+ .word 0x000020DC, 0x000020E0
+ .word 0x000020E0, 0x000020E4
+ .word 0x000020E4, 0x000020E8
+ .word 0x000020E8, 0x000020EC
+ .word 0x000020EC, 0x000020F0
+ .word 0x000020F0, 0x000020F4
+ .word 0x000020F4, 0x000020F8
+ .word 0x000020F8, 0x000020FC
+ .word 0x000020FC, 0x00002100
+ .word 0x00002100, 0x00002104
+ .word 0x00002104, 0x00002108
+ .word 0x00002108, 0x0000210C
+ .word 0x0000210C, 0x00002110
+ .word 0x00002110, 0x00002114
+ .word 0x00002114, 0x0000211C
+ .word 0x0000211C, 0x00002124
+ .word 0x00002124, 0x00002128
+ .word 0x00002128, 0x0000212C
+ .word 0x0000212C, 0x00002130
+ .word 0x00002130, 0x00002134
+ .word 0x00002134, 0x00002138
+ .word 0x00002138, 0x0000213C
+ .word 0x0000213C, 0x00002140
+ .word 0x00002140, 0x00002144
+ .word 0x00002144, 0x00002148
+ .word 0x00002148, 0x0000214C
+ .word 0x0000214C, 0x00002150
+ .word 0x00002150, 0x00002154
+ .word 0x00002154, 0x00002158
+ .word 0x00002158, 0x0000215C
+ .word 0x0000215C, 0x00002164
+ .word 0x00002164, 0x0000217C
+ .word 0x0000217C, 0x00002180
+ .word 0x00002180, 0x00002184
+ .word 0x00002184, 0x00002188
+ .word 0x00002188, 0x0000218C
+ .word 0x0000218C, 0x00002190
+ .word 0x00002190, 0x00002194
+ .word 0x00002194, 0x00002198
+ .word 0x00002198, 0x000021A0
+ .word 0x000021A0, 0x000021A8
+ .word 0x000021A8, 0x000021AC
+ .word 0x000021AC, 0x000021B0
+ .word 0x000021B0, 0x000021B4
+ .word 0x000021B4, 0x000021B8
+ .word 0x000021B8, 0x000021BC
+ .word 0x000021BC, 0x000021C0
+ .word 0x000021C0, 0x000021C4
+ .word 0x000021C4, 0x000021C8
+ .word 0x000021C8, 0x000021CC
+ .word 0x000021CC, 0x000021D4
+ .word 0x000021D4, 0x000021D8
+ .word 0x000021D8, 0x000021DC
+ .word 0x000021DC, 0x000021E0
+ .word 0x000021E0, 0x000021E4
+ .word 0x000021E4, 0x000021E8
+ .word 0x000021E8, 0x000021EC
+ .word 0x000021EC, 0x000021F0
+ .word 0x000021F0, 0x000021F4
+ .word 0x000021F4, 0x000021F8
+ .word 0x000021F8, 0x000021FC
+ .word 0x000021FC, 0x00002204
+ .word 0x00002204, 0x0000220C
+ .word 0x0000220C, 0x00002210
+ .word 0x00002210, 0x00002214
+ .word 0x00002214, 0x00002220
+ .word 0x00002220, 0x00002224
+ .word 0x00002224, 0x00002228
+ .word 0x00002228, 0x00002230
+ .word 0x00002230, 0x00002234
+ .word 0x00002234, 0x00002238
+ .word 0x00002238, 0x0000223C
+ .word 0x0000223C, 0x00002240
+ .word 0x00002240, 0x00002244
+ .word 0x00002244, 0x00002248
+ .word 0x00002248, 0x00002258
+ .word 0x00002258, 0x0000225C
+ .word 0x0000225C, 0x00002260
+ .word 0x00002260, 0x00002264
+ .word 0x00002264, 0x00002268
+ .word 0x00002268, 0x0000226C
+ .word 0x0000226C, 0x00002270
+ .word 0x00002270, 0x0000227C
+ .word 0x0000227C, 0x00002280
+ .word 0x00002280, 0x00002284
+ .word 0x00002284, 0x0000228C
+ .word 0x0000228C, 0x00002294
+ .word 0x00002294, 0x00002298
+ .word 0x00002298, 0x0000229C
+ .word 0x0000229C, 0x000022A0
+ .word 0x000022A0, 0x000022A4
+ .word 0x000022A4, 0x000022A8
+ .word 0x000022A8, 0x000022AC
+ .word 0x000022AC, 0x000022B0
+ .word 0x000022B0, 0x000022B4
+ .word 0x000022B4, 0x000022B8
+ .word 0x000022B8, 0x000022BC
+ .word 0x000022BC, 0x000022C0
+ .word 0x000022C0, 0x000022C4
+ .word 0x000022C4, 0x000022C8
+ .word 0x000022C8, 0x000022CC
+ .word 0x000022CC, 0x000022D0
+ .word 0x000022D0, 0x000022D4
+ .word 0x000022D4, 0x000022D8
+ .word 0x000022D8, 0x000022DC
+ .word 0x000022DC, 0x000022E0
+ .word 0x000022E0, 0x000022E4
+ .word 0x000022E4, 0x000022E8
+ .word 0x000022E8, 0x000022EC
+ .word 0x000022EC, 0x000022F0
+ .word 0x000022F0, 0x000022F4
+ .word 0x000022F4, 0x000022F8
+ .word 0x000022F8, 0x000022FC
+ .word 0x000022FC, 0x00002300
+ .word 0x00002300, 0x00002304
+ .word 0x00002304, 0x00002308
+ .word 0x00002308, 0x0000230C
+ .word 0x0000230C, 0x00002310
+ .word 0x00002310, 0x00002314
+ .word 0x00002314, 0x00002318
+ .word 0x00002318, 0x0000231C
+ .word 0x0000231C, 0x00002320
+ .word 0x00002320, 0x00002324
+ .word 0x00002324, 0x00002328
+ .word 0x00002328, 0x0000232C
+ .word 0x0000232C, 0x00002330
+ .word 0x00002330, 0x00002334
+ .word 0x00002334, 0x00002338
+ .word 0x00002338, 0x0000233C
+ .word 0x0000233C, 0x00002340
+ .word 0x00002340, 0x00002344
+ .word 0x00002344, 0x00002348
+ .word 0x00002348, 0x00002350
+ .word 0x00002350, 0x00002358
+ .word 0x00002358, 0x00002360
+ .word 0x00002360, 0x00002364
+ .word 0x00002364, 0x00002368
+ .word 0x00002368, 0x0000236C
+ .word 0x0000236C, 0x00002370
+ .word 0x00002370, 0x00002374
+ .word 0x00002374, 0x00002378
+ .word 0x00002378, 0x0000237C
+ .word 0x0000237C, 0x00002380
+ .word 0x00002380, 0x00002384
+ .word 0x00002384, 0x00002388
+ .word 0x00002388, 0x0000238C
+ .word 0x0000238C, 0x00002390
+ .word 0x00002390, 0x00002394
+ .word 0x00002394, 0x00002398
+ .word 0x00002398, 0x0000239C
+ .word 0x0000239C, 0x000023A0
+ .word 0x000023A0, 0x000023A4
+ .word 0x000023A4, 0x000023A8
+ .word 0x000023A8, 0x000023AC
+ .word 0x000023AC, 0x000023B0
+ .word 0x000023B0, 0x000023B4
+ .word 0x000023B4, 0x000023B8
+ .word 0x000023B8, 0x000023BC
+ .word 0x000023BC, 0x000023C0
+ .word 0x000023C0, 0x000023C4
+ .word 0x000023C4, 0x000023C8
+ .word 0x000023C8, 0x000023CC
+ .word 0x000023CC, 0x000023D0
+ .word 0x000023D0, 0x000023D4
+ .word 0x000023D4, 0x000023D8
+ .word 0x000023D8, 0x000023E0
+ .word 0x000023E0, 0x000023E4
+ .word 0x000023E4, 0x000023E8
+ .word 0x000023E8, 0x000023EC
+ .word 0x000023EC, 0x000023F0
+ .word 0x000023F0, 0x000023F4
+ .word 0x000023F4, 0x000023F8
+ .word 0x000023F8, 0x000023FC
+ .word 0x000023FC, 0x00002400
+ .word 0x00002400, 0x00002408
+ .word 0x00002408, 0x00002414
+ .word 0x00002414, 0x00002418
+ .word 0x00002418, 0x0000241C
+ .word 0x0000241C, 0x00002420
+ .word 0x00002420, 0x00002424
+ .word 0x00002424, 0x00002428
+ .word 0x00002428, 0x0000242C
+ .word 0x0000242C, 0x00002434
+ .word 0x00002434, 0x00002438
+ .word 0x00002438, 0x0000243C
+ .word 0x0000243C, 0x00002444
+ .word 0x00002444, 0x00002448
+ .word 0x00002448, 0x0000244C
+ .word 0x0000244C, 0x00002450
+ .word 0x00002450, 0x00002454
+ .word 0x00002454, 0x0000245C
+ .word 0x0000245C, 0x00002460
+ .word 0x00002460, 0x00002464
+ .word 0x00002464, 0x00002468
+ .word 0x00002468, 0x0000246C
+ .word 0x0000246C, 0x00002470
+ .word 0x00002470, 0x00002474
+ .word 0x00002474, 0x00002478
+ .word 0x00002478, 0x0000247C
+ .word 0x0000247C, 0x00002480
+ .word 0x00002480, 0x00002484
+ .word 0x00002484, 0x00002488
+ .word 0x00002488, 0x0000248C
+ .word 0x0000248C, 0x00002490
+ .word 0x00002490, 0x00002494
+ .word 0x00002494, 0x00002498
+ .word 0x00002498, 0x000024AC
+ .word 0x000024AC, 0x000024C0
+ .word 0x000024C0, 0x000024C4
+ .word 0x000024C4, 0x000024C8
+ .word 0x000024C8, 0x000024CC
+ .word 0x000024CC, 0x000024D0
+ .word 0x000024D0, 0x000024D4
+ .word 0x000024D4, 0x000024D8
+ .word 0x000024D8, 0x000024DC
+ .word 0x000024DC, 0x000024E0
+ .word 0x000024E0, 0x000024E4
+ .word 0x000024E4, 0x000024E8
+ .word 0x000024E8, 0x000024EC
+ .word 0x000024EC, 0x000024F0
+ .word 0x000024F0, 0x000024F4
+ .word 0x000024F4, 0x000024F8
+ .word 0x000024F8, 0x000024FC
+ .word 0x000024FC, 0x00002500
+ .word 0x00002500, 0x00002504
+ .word 0x00002504, 0x00002510
+ .word 0x00002510, 0x00002514
+ .word 0x00002514, 0x00002518
+ .word 0x00002518, 0x0000251C
+ .word 0x0000251C, 0x00002520
+ .word 0x00002520, 0x00002524
+ .word 0x00002524, 0x00002528
+ .word 0x00002528, 0x0000252C
+ .word 0x0000252C, 0x00002530
+ .word 0x00002530, 0x00002534
+ .word 0x00002534, 0x00002538
+ .word 0x00002538, 0x0000253C
+ .word 0x0000253C, 0x00002540
+ .word 0x00002540, 0x00002544
+ .word 0x00002544, 0x00002548
+ .word 0x00002548, 0x0000254C
+ .word 0x0000254C, 0x00002550
+ .word 0x00002550, 0x00002554
+ .word 0x00002554, 0x00002558
+ .word 0x00002558, 0x0000255C
+ .word 0x0000255C, 0x00002560
+ .word 0x00002560, 0x00002564
+ .word 0x00002564, 0x00002568
+ .word 0x00002568, 0x0000256C
+ .word 0x0000256C, 0x00002570
+ .word 0x00002570, 0x00002574
+ .word 0x00002574, 0x00002578
+ .word 0x00002578, 0x0000257C
+ .word 0x0000257C, 0x00002580
+ .word 0x00002580, 0x00002584
+ .word 0x00002584, 0x00002588
+ .word 0x00002588, 0x0000258C
+ .word 0x0000258C, 0x00002590
+ .word 0x00002590, 0x00002594
+ .word 0x00002594, 0x00002598
+ .word 0x00002598, 0x0000259C
+ .word 0x0000259C, 0x000025A0
+ .word 0x000025A0, 0x000025A4
+ .word 0x000025A4, 0x000025AC
+ .word 0x000025AC, 0x000025BC
+ .word 0x000025BC, 0x000025C0
+ .word 0x000025C0, 0x000025CC
+ .word 0x000025CC, 0x000025E0
+ .word 0x000025E0, 0x000025E4
+ .word 0x000025E4, 0x000025EC
+ .word 0x000025EC, 0x000025F0
+ .word 0x000025F0, 0x000025F4
+ .word 0x000025F4, 0x000025F8
+ .word 0x000025F8, 0x00002600
+ .word 0x00002600, 0x00002604
+ .word 0x00002604, 0x00002608
+ .word 0x00002608, 0x0000260C
+ .word 0x0000260C, 0x00002610
+ .word 0x00002610, 0x00002614
+ .word 0x00002614, 0x00002618
+ .word 0x00002618, 0x0000261C
+ .word 0x0000261C, 0x00002620
+ .word 0x00002620, 0x00002624
+ .word 0x00002624, 0x00002628
+ .word 0x00002628, 0x0000262C
+ .word 0x0000262C, 0x00002630
+ .word 0x00002630, 0x00002638
+ .word 0x00002638, 0x0000263C
+ .word 0x0000263C, 0x00002640
+ .word 0x00002640, 0x00002644
+ .word 0x00002644, 0x00002648
+ .word 0x00002648, 0x0000264C
+ .word 0x0000264C, 0x00002650
+ .word 0x00002650, 0x00002654
+ .word 0x00002654, 0x0000265C
+ .word 0x0000265C, 0x00002660
+ .word 0x00002660, 0x00002664
+ .word 0x00002664, 0x00002668
+ .word 0x00002668, 0x0000266C
+ .word 0x0000266C, 0x00002670
+ .word 0x00002670, 0x00002680
+ .word 0x00002680, 0x00002684
+ .word 0x00002684, 0x00002688
+ .word 0x00002688, 0x00002698
+ .word 0x00002698, 0x000026A4
+ .word 0x000026A4, 0x000026A8
+ .word 0x000026A8, 0x000026AC
+ .word 0x000026AC, 0x000026B0
+ .word 0x000026B0, 0x000026B4
+ .word 0x000026B4, 0x000026B8
+ .word 0x000026B8, 0x000026C0
+ .word 0x000026C0, 0x000026C4
+ .word 0x000026C4, 0x000026C8
+ .word 0x000026C8, 0x000026CC
+ .word 0x000026CC, 0x000026D0
+ .word 0x000026D0, 0x000026D4
+ .word 0x000026D4, 0x000026DC
+ .word 0x000026DC, 0x000026E0
+ .word 0x000026E0, 0x000026E4
+ .word 0x000026E4, 0x000026E8
+ .word 0x000026E8, 0x000026EC
+ .word 0x000026EC, 0x000026F0
+ .word 0x000026F0, 0x000026F4
+ .word 0x000026F4, 0x000026F8
+ .word 0x000026F8, 0x000026FC
+ .word 0x000026FC, 0x00002700
+ .word 0x00002700, 0x00002708
+ .word 0x00002708, 0x00002710
+ .word 0x00002710, 0x00002714
+ .word 0x00002714, 0x00002718
+ .word 0x00002718, 0x0000271C
+ .word 0x0000271C, 0x00002720
+ .word 0x00002720, 0x00002724
+ .word 0x00002724, 0x00002728
+ .word 0x00002728, 0x0000272C
+ .word 0x0000272C, 0x00002730
+ .word 0x00002730, 0x00002734
+ .word 0x00002734, 0x00002738
+ .word 0x00002738, 0x0000273C
+ .word 0x0000273C, 0x00002740
+ .word 0x00002740, 0x00002744
+ .word 0x00002744, 0x00002748
+ .word 0x00002748, 0x0000274C
+ .word 0x0000274C, 0x00002750
+ .word 0x00002750, 0x00002754
+ .word 0x00002754, 0x00002758
+ .word 0x00002758, 0x0000275C
+ .word 0x0000275C, 0x00002760
+ .word 0x00002760, 0x00002764
+ .word 0x00002764, 0x00002768
+ .word 0x00002768, 0x0000276C
+ .word 0x0000276C, 0x00002770
+ .word 0x00002770, 0x00002774
+ .word 0x00002774, 0x00002778
+ .word 0x00002778, 0x0000277C
+ .word 0x0000277C, 0x00002780
+ .word 0x00002780, 0x00002784
+ .word 0x00002784, 0x00002788
+ .word 0x00002788, 0x0000278C
+ .word 0x0000278C, 0x00002790
+ .word 0x00002790, 0x00002794
+ .word 0x00002794, 0x00002798
+ .word 0x00002798, 0x000027EC
+ .word 0x000027EC, 0x000027F0
+ .word 0x000027F0, 0x000027F4
+ .word 0x000027F4, 0x000027F8
+ .word 0x000027F8, 0x000027FC
+ .word 0x000027FC, 0x00002800
+ .word 0x00002800, 0x00002804
+ .word 0x00002804, 0x00002808
+ .word 0x00002808, 0x0000280C
+ .word 0x0000280C, 0x00002810
+ .word 0x00002810, 0x00002814
+ .word 0x00002814, 0x00002818
+ .word 0x00002818, 0x0000281C
+ .word 0x0000281C, 0x00002820
+ .word 0x00002820, 0x00002824
+ .word 0x00002824, 0x00002828
+ .word 0x00002828, 0x0000282C
+ .word 0x0000282C, 0x00002830
+ .word 0x00002830, 0x00002834
+ .word 0x00002834, 0x00002838
+ .word 0x00002838, 0x0000283C
+ .word 0x0000283C, 0x00002840
+ .word 0x00002840, 0x00002844
+ .word 0x00002844, 0x00002848
+ .word 0x00002848, 0x0000284C
+ .word 0x0000284C, 0x00002850
+ .word 0x00002850, 0x00002854
+ .word 0x00002854, 0x00002858
+ .word 0x00002858, 0x0000285C
+ .word 0x0000285C, 0x00002860
+ .word 0x00002860, 0x00002864
+ .word 0x00002864, 0x00002868
+ .word 0x00002868, 0x0000286C
+ .word 0x0000286C, 0x00002870
+ .word 0x00002870, 0x00002874
+ .word 0x00002874, 0x00002878
+ .word 0x00002878, 0x0000287C
+ .word 0x0000287C, 0x00002880
+ .word 0x00002880, 0x00002884
+ .word 0x00002884, 0x00002888
+ .word 0x00002888, 0x0000288C
+ .word 0x0000288C, 0x00002890
+ .word 0x00002890, 0x00002894
+ .word 0x00002894, 0x00002898
+ .word 0x00002898, 0x0000289C
+ .word 0x0000289C, 0x000028A0
+ .word 0x000028A0, 0x000028A4
+ .word 0x000028A4, 0x000028A8
+ .word 0x000028A8, 0x000028AC
+ .word 0x000028AC, 0x000028B0
+ .word 0x000028B0, 0x000028B4
+ .word 0x000028B4, 0x000028B8
+ .word 0x000028B8, 0x000028BC
+ .word 0x000028BC, 0x000028C0
+ .word 0x000028C0, 0x000028C4
+ .word 0x000028C4, 0x000028CC
+ .word 0x000028CC, 0x000028D0
+ .word 0x000028D0, 0x000028D4
+ .word 0x000028D4, 0x000028D8
+ .word 0x000028D8, 0x000028DC
+ .word 0x000028DC, 0x000028E0
+ .word 0x000028E0, 0x000028E4
+ .word 0x000028E4, 0x000028E8
+ .word 0x000028E8, 0x000028EC
+ .word 0x000028EC, 0x000028F0
+ .word 0x000028F0, 0x000028F4
+ .word 0x000028F4, 0x000028F8
+ .word 0x000028F8, 0x000028FC
+ .word 0x000028FC, 0x00002900
+ .word 0x00002900, 0x00002904
+ .word 0x00002904, 0x00002908
+ .word 0x00002908, 0x0000290C
+ .word 0x0000290C, 0x00002910
+ .word 0x00002910, 0x00002914
+ .word 0x00002914, 0x00002918
+ .word 0x00002918, 0x0000291C
+ .word 0x0000291C, 0x00002920
+ .word 0x00002920, 0x00002924
+ .word 0x00002924, 0x00002928
+ .word 0x00002928, 0x0000292C
+ .word 0x0000292C, 0x00002930
+ .word 0x00002930, 0x00002934
+ .word 0x00002934, 0x00002938
+ .word 0x00002938, 0x0000293C
+ .word 0x0000293C, 0x00002940
+ .word 0x00002940, 0x00002944
+ .word 0x00002944, 0x00002948
+ .word 0x00002948, 0x0000294C
+ .word 0x0000294C, 0x00002950
+ .word 0x00002950, 0x00002954
+ .word 0x00002954, 0x00002958
+ .word 0x00002958, 0x0000295C
+ .word 0x0000295C, 0x00002960
+ .word 0x00002960, 0x00002964
+ .word 0x00002964, 0x00002968
+ .word 0x00002968, 0x0000296C
+ .word 0x0000296C, 0x00002970
+ .word 0x00002970, 0x00002974
+ .word 0x00002974, 0x00002978
+ .word 0x00002978, 0x0000297C
+ .word 0x0000297C, 0x00002980
+ .word 0x00002980, 0x00002984
+ .word 0x00002984, 0x00002988
+ .word 0x00002988, 0x0000298C
+ .word 0x0000298C, 0x00002990
+ .word 0x00002990, 0x00002994
+ .word 0x00002994, 0x00002998
+ .word 0x00002998, 0x0000299C
+ .word 0x0000299C, 0x000029A0
+ .word 0x000029A0, 0x000029A4
+ .word 0x000029A4, 0x000029A8
+ .word 0x000029A8, 0x000029AC
+ .word 0x000029AC, 0x000029B0
+ .word 0x000029B0, 0x000029B4
+ .word 0x000029B4, 0x000029B8
+ .word 0x000029B8, 0x000029BC
+ .word 0x000029BC, 0x000029C0
+ .word 0x000029C0, 0x000029C4
+ .word 0x000029C4, 0x000029C8
+ .word 0x000029C8, 0x000029CC
+ .word 0x000029CC, 0x000029D0
+ .word 0x000029D0, 0x000029D4
+ .word 0x000029D4, 0x000029D8
+ .word 0x000029D8, 0x000029DC
+ .word 0x000029DC, 0x000029E0
+ .word 0x000029E0, 0x000029E4
+ .word 0x000029E4, 0x000029E8
+ .word 0x000029E8, 0x000029EC
+ .word 0x000029EC, 0x000029F0
+ .word 0x000029F0, 0x000029F4
+ .word 0x000029F4, 0x000029F8
+ .word 0x000029F8, 0x000029FC
+ .word 0x000029FC, 0x00002A00
+ .word 0x00002A00, 0x00002A04
+ .word 0x00002A04, 0x00002A08
+ .word 0x00002A08, 0x00002A0C
+ .word 0x00002A0C, 0x00002A10
+ .word 0x00002A10, 0x00002A14
+ .word 0x00002A14, 0x00002A18
+ .word 0x00002A18, 0x00002A1C
+ .word 0x00002A1C, 0x00002A20
+ .word 0x00002A20, 0x00002A24
+ .word 0x00002A24, 0x00002A28
+ .word 0x00002A28, 0x00002A2C
+ .word 0x00002A2C, 0x00002A30
+ .word 0x00002A30, 0x00002A34
+ .word 0x00002A34, 0x00002A38
+ .word 0x00002A38, 0x00002A3C
+ .word 0x00002A3C, 0x00002A40
+ .word 0x00002A40, 0x00002A44
+ .word 0x00002A44, 0x00002A48
+ .word 0x00002A48, 0x00002A4C
+ .word 0x00002A4C, 0x00002A50
+ .word 0x00002A50, 0x00002A54
+ .word 0x00002A54, 0x00002A58
+ .word 0x00002A58, 0x00002A5C
+ .word 0x00002A5C, 0x00002A60
+ .word 0x00002A60, 0x00002A64
+ .word 0x00002A64, 0x00002A68
+ .word 0x00002A68, 0x00002A6C
+ .word 0x00002A6C, 0x00002A70
+ .word 0x00002A70, 0x00002A74
+ .word 0x00002A74, 0x00002A78
+ .word 0x00002A78, 0x00002A7C
+ .word 0x00002A7C, 0x00002A80
+ .word 0x00002A80, 0x00002A84
+ .word 0x00002A84, 0x00002A88
+ .word 0x00002A88, 0x00002A8C
+ .word 0x00002A8C, 0x00002A90
+ .word 0x00002A90, 0x00002A94
+ .word 0x00002A94, 0x00002A98
+ .word 0x00002A98, 0x00002A9C
+ .word 0x00002A9C, 0x00002AA0
+ .word 0x00002AA0, 0x00002AA4
+ .word 0x00002AA4, 0x00002AA8
+ .word 0x00002AA8, 0x00002AAC
+ .word 0x00002AAC, 0x00002AB0
+ .word 0x00002AB0, 0x00002AB4
+ .word 0x00002AB4, 0x00002AB8
+ .word 0x00002AB8, 0x00002ABC
+ .word 0x00002ABC, 0x00002AC0
+ .word 0x00002AC0, 0x00002AC4
+ .word 0x00002AC4, 0x00002AC8
+ .word 0x00002AC8, 0x00002AD0
+ .word 0x00002AD0, 0x00002AD4
+ .word 0x00002AD4, 0x00002AD8
+ .word 0x00002AD8, 0x00002ADC
+ .word 0x00002ADC, 0x00002AE0
+ .word 0x00002AE0, 0x00002AE4
+ .word 0x00002AE4, 0x00002AE8
+ .word 0x00002AE8, 0x00002AF0
+ .word 0x00002AF0, 0x00002AF4
+ .word 0x00002AF4, 0x00002AF8
+ .word 0x00002AF8, 0x00002AFC
+ .word 0x00002AFC, 0x00002B04
+ .word 0x00002B04, 0x00002B0C
+ .word 0x00002B0C, 0x00002B10
+ .word 0x00002B10, 0x00002B14
+ .word 0x00002B14, 0x00002B18
+ .word 0x00002B18, 0x00002B1C
+ .word 0x00002B1C, 0x00002B20
+ .word 0x00002B20, 0x00002B24
+ .word 0x00002B24, 0x00002B28
+ .word 0x00002B28, 0x00002B2C
+ .word 0x00002B2C, 0x00002B30
+ .word 0x00002B30, 0x00002B34
+ .word 0x00002B34, 0x00002B38
+ .word 0x00002B38, 0x00002B3C
+ .word 0x00002B3C, 0x00002B40
+ .word 0x00002B40, 0x00002B44
+ .word 0x00002B44, 0x00002B48
+ .word 0x00002B48, 0x00002B4C
+ .word 0x00002B4C, 0x00002B50
+ .word 0x00002B50, 0x00002B54
+ .word 0x00002B54, 0x00002B5C
+ .word 0x00002B5C, 0x00002B60
+ .word 0x00002B60, 0x00002B64
+ .word 0x00002B64, 0x00002B68
+ .word 0x00002B68, 0x00002B6C
+ .word 0x00002B6C, 0x00002B70
+ .word 0x00002B70, 0x00002B74
+ .word 0x00002B74, 0x00002B78
+ .word 0x00002B78, 0x00002B7C
+ .word 0x00002B7C, 0x00002B80
+ .word 0x00002B80, 0x00002B84
+ .word 0x00002B84, 0x00002B88
+ .word 0x00002B88, 0x00002B8C
+ .word 0x00002B8C, 0x00002B90
+ .word 0x00002B90, 0x00002B94
+ .word 0x00002B94, 0x00002B98
+ .word 0x00002B98, 0x00002B9C
+ .word 0x00002B9C, 0x00002BA0
+ .word 0x00002BA0, 0x00002BA4
+ .word 0x00002BA4, 0x00002BA8
+ .word 0x00002BA8, 0x00002BAC
+ .word 0x00002BAC, 0x00002BB0
+ .word 0x00002BB0, 0x00002BB4
+ .word 0x00002BB4, 0x00002BB8
+ .word 0x00002BB8, 0x00002BBC
+ .word 0x00002BBC, 0x00002BC0
+ .word 0x00002BC0, 0x00002BC4
+ .word 0x00002BC4, 0x00002BC8
+ .word 0x00002BC8, 0x00002BCC
+ .word 0x00002BCC, 0x00002BD0
+ .word 0x00002BD0, 0x00002BD4
+ .word 0x00002BD4, 0x00002BD8
+ .word 0x00002BD8, 0x00002BDC
+ .word 0x00002BDC, 0x00002BE0
+ .word 0x00002BE0, 0x00002BE4
+ .word 0x00002BE4, 0x00002BE8
+ .word 0x00002BE8, 0x00002BEC
+ .word 0x00002BEC, 0x00002BF0
+ .word 0x00002BF0, 0x00002BF4
+ .word 0x00002BF4, 0x00002BF8
+ .word 0x00002BF8, 0x00002BFC
+ .word 0x00002BFC, 0x00002C00
+ .word 0x00002C00, 0x00002C04
+ .word 0x00002C04, 0x00002C08
+ .word 0x00002C08, 0x00002C0C
+ .word 0x00002C0C, 0x00002C10
+ .word 0x00002C10, 0x00002C14
+ .word 0x00002C14, 0x00002C18
+ .word 0x00002C18, 0x00002C1C
+ .word 0x00002C1C, 0x00002C20
+ .word 0x00002C20, 0x00002C24
+ .word 0x00002C24, 0x00002C2C
+ .word 0x00002C2C, 0x00002C34
+ .word 0x00002C34, 0x00002C38
+ .word 0x00002C38, 0x00002C3C
+ .word 0x00002C3C, 0x00002C40
+ .word 0x00002C40, 0x00002C44
+ .word 0x00002C44, 0x00002C48
+ .word 0x00002C48, 0x00002C4C
+ .word 0x00002C4C, 0x00002C50
+ .word 0x00002C50, 0x00002C54
+ .word 0x00002C54, 0x00002C58
+ .word 0x00002C58, 0x00002C5C
+ .word 0x00002C5C, 0x00002C60
+ .word 0x00002C60, 0x00002C64
+ .word 0x00002C64, 0x00002C68
+ .word 0x00002C68, 0x00002C6C
+ .word 0x00002C6C, 0x00002C70
+ .word 0x00002C70, 0x00002C74
+ .word 0x00002C74, 0x00002C78
+ .word 0x00002C78, 0x00002C7C
+ .word 0x00002C7C, 0x00002C80
+ .word 0x00002C80, 0x00002C84
+ .word 0x00002C84, 0x00002C88
+ .word 0x00002C88, 0x00002C8C
+ .word 0x00002C8C, 0x00002C90
+ .word 0x00002C90, 0x00002C94
+ .word 0x00002C94, 0x00002C98
+ .word 0x00002C98, 0x00002C9C
+ .word 0x00002C9C, 0x00002CA0
+ .word 0x00002CA0, 0x00002CA4
+ .word 0x00002CA4, 0x00002CA8
+ .word 0x00002CA8, 0x00002CAC
+ .word 0x00002CAC, 0x00002CB0
+ .word 0x00002CB0, 0x00002CB8
+ .word 0x00002CB8, 0x00002CBC
+ .word 0x00002CBC, 0x00002CC0
+ .word 0x00002CC0, 0x00002CC4
+ .word 0x00002CC4, 0x00002CC8
+ .word 0x00002CC8, 0x00002CCC
+ .word 0x00002CCC, 0x00002CD0
+ .word 0x00002CD0, 0x00002CD4
+ .word 0x00002CD4, 0x00002CD8
+ .word 0x00002CD8, 0x00002CDC
+ .word 0x00002CDC, 0x00002CE0
+ .word 0x00002CE0, 0x00002CE4
+ .word 0x00002CE4, 0x00002CE8
+ .word 0x00002CE8, 0x00002CEC
+ .word 0x00002CEC, 0x00002CF0
+ .word 0x00002CF0, 0x00002CF4
+ .word 0x00002CF4, 0x00002CF8
+ .word 0x00002CF8, 0x00002D00
+ .word 0x00002D00, 0x00002D04
+ .word 0x00002D04, 0x00002D08
+ .word 0x00002D08, 0x00002D0C
+ .word 0x00002D0C, 0x00002D10
+ .word 0x00002D10, 0x00002D14
+ .word 0x00002D14, 0x00002D18
+ .word 0x00002D18, 0x00002D1C
+ .word 0x00002D1C, 0x00002D20
+ .word 0x00002D20, 0x00002D24
+ .word 0x00002D24, 0x00002D28
+ .word 0x00002D28, 0x00002D2C
+ .word 0x00002D2C, 0x00002D30
+ .word 0x00002D30, 0x00002D34
+ .word 0x00002D34, 0x00002D38
+ .word 0x00002D38, 0x00002D3C
+ .word 0x00002D3C, 0x00002D40
+ .word 0x00002D40, 0x00002D44
+ .word 0x00002D44, 0x00002D48
+ .word 0x00002D48, 0x00002D4C
+ .word 0x00002D4C, 0x00002D50
+ .word 0x00002D50, 0x00002D54
+ .word 0x00002D54, 0x00002D58
+ .word 0x00002D58, 0x00002D5C
+ .word 0x00002D5C, 0x00002D60
+ .word 0x00002D60, 0x00002D64
+ .word 0x00002D64, 0x00002D68
+ .word 0x00002D68, 0x00002D6C
+ .word 0x00002D6C, 0x00002D70
+ .word 0x00002D70, 0x00002D74
+ .word 0x00002D74, 0x00002D78
+ .word 0x00002D78, 0x00002D7C
+ .word 0x00002D7C, 0x00002D80
+ .word 0x00002D80, 0x00002D84
+ .word 0x00002D84, 0x00002D8C
+ .word 0x00002D8C, 0x00002D90
+ .word 0x00002D90, 0x00002D94
+ .word 0x00002D94, 0x00002D98
+ .word 0x00002D98, 0x00002D9C
+ .word 0x00002D9C, 0x00002DA0
+ .word 0x00002DA0, 0x00002DA4
+ .word 0x00002DA4, 0x00002DA8
+ .word 0x00002DA8, 0x00002DAC
+ .word 0x00002DAC, 0x00002DB0
+ .word 0x00002DB0, 0x00002DB4
+ .word 0x00002DB4, 0x00002DB8
+ .word 0x00002DB8, 0x00002DBC
+ .word 0x00002DBC, 0x00002DC0
+ .word 0x00002DC0, 0x00002DC4
+ .word 0x00002DC4, 0x00002DC8
+ .word 0x00002DC8, 0x00002DCC
+ .word 0x00002DCC, 0x00002DD0
+ .word 0x00002DD0, 0x00002DD4
+ .word 0x00002DD4, 0x00002DD8
+ .word 0x00002DD8, 0x00002DDC
+ .word 0x00002DDC, 0x00002DE0
+ .word 0x00002DE0, 0x00002DE4
+ .word 0x00002DE4, 0x00002DE8
+ .word 0x00002DE8, 0x00002DEC
+ .word 0x00002DEC, 0x00002DF0
+ .word 0x00002DF0, 0x00002DF4
+ .word 0x00002DF4, 0x00002DF8
+ .word 0x00002DF8, 0x00002DFC
+ .word 0x00002DFC, 0x00002E00
+ .word 0x00002E00, 0x00002E04
+ .word 0x00002E04, 0x00002E08
+ .word 0x00002E08, 0x00002E0C
+ .word 0x00002E0C, 0x00002E10
+ .word 0x00002E10, 0x00002E14
+ .word 0x00002E14, 0x00002E18
+ .word 0x00002E18, 0x00002E1C
+ .word 0x00002E1C, 0x00002E20
+ .word 0x00002E20, 0x00002E24
+ .word 0x00002E24, 0x00002E28
+ .word 0x00002E28, 0x00002E2C
+ .word 0x00002E2C, 0x00002E30
+ .word 0x00002E30, 0x00002E34
+ .word 0x00002E34, 0x00002E38
+ .word 0x00002E38, 0x00002E3C
+ .word 0x00002E3C, 0x00002E40
+ .word 0x00002E40, 0x00002E44
+ .word 0x00002E44, 0x00002E48
+ .word 0x00002E48, 0x00002E50
+ .word 0x00002E50, 0x00002E54
+ .word 0x00002E54, 0x00002E5C
+ .word 0x00002E5C, 0x00002E64
+ .word 0x00002E64, 0x00002E68
+ .word 0x00002E68, 0x00002E6C
+ .word 0x00002E6C, 0x00002E70
+ .word 0x00002E70, 0x00002E74
+ .word 0x00002E74, 0x00002E78
+ .word 0x00002E78, 0x00002E7C
+ .word 0x00002E7C, 0x00002E80
+ .word 0x00002E80, 0x00002E84
+ .word 0x00002E84, 0x00002E88
+ .word 0x00002E88, 0x00002E8C
+ .word 0x00002E8C, 0x00002E90
+ .word 0x00002E90, 0x00002E98
+ .word 0x00002E98, 0x00002E9C
+ .word 0x00002E9C, 0x00002EA0
+ .word 0x00002EA0, 0x00002EA8
+ .word 0x00002EA8, 0x00002EAC
+ .word 0x00002EAC, 0x00002EB0
+ .word 0x00002EB0, 0x00002EB4
+ .word 0x00002EB4, 0x00002EB8
+ .word 0x00002EB8, 0x00002EC0
+ .word 0x00002EC0, 0x00002EC4
+ .word 0x00002EC4, 0x00002EC8
+ .word 0x00002EC8, 0x00002ECC
+ .word 0x00002ECC, 0x00002ED0
+ .word 0x00002ED0, 0x00002ED4
+ .word 0x00002ED4, 0x00002ED8
+ .word 0x00002ED8, 0x00002EDC
+ .word 0x00002EDC, 0x00002EE0
+ .word 0x00002EE0, 0x00002EE4
+ .word 0x00002EE4, 0x00002EE8
+ .word 0x00002EE8, 0x00002EEC
+ .word 0x00002EEC, 0x00002EF0
+ .word 0x00002EF0, 0x00002EF4
+ .word 0x00002EF4, 0x00002EF8
+ .word 0x00002EF8, 0x00002EFC
+ .word 0x00002EFC, 0x00002F00
+ .word 0x00002F00, 0x00002F04
+ .word 0x00002F04, 0x00002F08
+ .word 0x00002F08, 0x00002F0C
+ .word 0x00002F0C, 0x00002F10
+ .word 0x00002F10, 0x00002F14
+ .word 0x00002F14, 0x00002F18
+ .word 0x00002F18, 0x00002F1C
+ .word 0x00002F1C, 0x00002F20
+ .word 0x00002F20, 0x00002F24
+ .word 0x00002F24, 0x00002F28
+ .word 0x00002F28, 0x00002F2C
+ .word 0x00002F2C, 0x00002F30
+ .word 0x00002F30, 0x00002F34
+ .word 0x00002F34, 0x00002F38
+ .word 0x00002F38, 0x00002F40
+ .word 0x00002F40, 0x00002F44
+ .word 0x00002F44, 0x00002F4C
+ .word 0x00002F4C, 0x00002F50
+ .word 0x00002F50, 0x00002F58
+ .word 0x00002F58, 0x00002F5C
+ .word 0x00002F5C, 0x00002F60
+ .word 0x00002F60, 0x00002F64
+ .word 0x00002F64, 0x00002F68
+ .word 0x00002F68, 0x00002F6C
+ .word 0x00002F6C, 0x00002F70
+ .word 0x00002F70, 0x00002F74
+ .word 0x00002F74, 0x00002F78
+ .word 0x00002F78, 0x00002F7C
+ .word 0x00002F7C, 0x00002F80
+ .word 0x00002F80, 0x00002F84
+ .word 0x00002F84, 0x00002F88
+ .word 0x00002F88, 0x00002F8C
+ .word 0x00002F8C, 0x00002F90
+ .word 0x00002F90, 0x00002F94
+ .word 0x00002F94, 0x00002F98
+ .word 0x00002F98, 0x00002F9C
+ .word 0x00002F9C, 0x00002FA0
+ .word 0x00002FA0, 0x00002FA4
+ .word 0x00002FA4, 0x00002FA8
+ .word 0x00002FA8, 0x00002FAC
+ .word 0x00002FAC, 0x00002FB0
+ .word 0x00002FB0, 0x00002FB4
+ .word 0x00002FB4, 0x00002FB8
+ .word 0x00002FB8, 0x00002FBC
+ .word 0x00002FBC, 0x00002FC0
+ .word 0x00002FC0, 0x00002FC4
+ .word 0x00002FC4, 0x00002FC8
+ .word 0x00002FC8, 0x00002FCC
+ .word 0x00002FCC, 0x00002FD0
+ .word 0x00002FD0, 0x00002FD4
+ .word 0x00002FD4, 0x00002FD8
+ .word 0x00002FD8, 0x00002FDC
+ .word 0x00002FDC, 0x00002FE0
+ .word 0x00002FE0, 0x00002FE4
+ .word 0x00002FE4, 0x00002FE8
+ .word 0x00002FE8, 0x00002FEC
+ .word 0x00002FEC, 0x00002FF0
+ .word 0x00002FF0, 0x00002FF4
+ .word 0x00002FF4, 0x00002FF8
+ .word 0x00002FF8, 0x00002FFC
+ .word 0x00002FFC, 0x00003000
+ .word 0x00003000, 0x00003004
+ .word 0x00003004, 0x00003008
+ .word 0x00003008, 0x0000300C
+ .word 0x0000300C, 0x00003010
+ .word 0x00003010, 0x00003014
+ .word 0x00003014, 0x00003018
+ .word 0x00003018, 0x0000301C
+ .word 0x0000301C, 0x00003020
+ .word 0x00003020, 0x00003024
+ .word 0x00003024, 0x00003028
+ .word 0x00003028, 0x0000302C
+ .word 0x0000302C, 0x00003030
+ .word 0x00003030, 0x00003034
+ .word 0x00003034, 0x00003038
+ .word 0x00003038, 0x0000303C
+ .word 0x0000303C, 0x00003040
+ .word 0x00003040, 0x00003044
+ .word 0x00003044, 0x00003048
+ .word 0x00003048, 0x0000304C
+ .word 0x0000304C, 0x00003050
+ .word 0x00003050, 0x00003054
+ .word 0x00003054, 0x00003058
+ .word 0x00003058, 0x00003060
+ .word 0x00003060, 0x00003064
+ .word 0x00003064, 0x00003068
+ .word 0x00003068, 0x0000306C
+ .word 0x0000306C, 0x00003070
+ .word 0x00003070, 0x00003074
+ .word 0x00003074, 0x00003078
+ .word 0x00003078, 0x0000307C
+ .word 0x0000307C, 0x00003080
+ .word 0x00003080, 0x00003084
+ .word 0x00003084, 0x00003090
+ .word 0x00003090, 0x00003094
+ .word 0x00003094, 0x00003098
+ .word 0x00003098, 0x0000309C
+ .word 0x0000309C, 0x000030A4
+ .word 0x000030A4, 0x000030A8
+ .word 0x000030A8, 0x000030C0
+ .word 0x000030C0, 0x000030D0
+ .word 0x000030D0, 0x000030D4
+ .word 0x000030D4, 0x000030D8
+ .word 0x000030D8, 0x000030DC
+ .word 0x000030DC, 0x000030E4
+ .word 0x000030E4, 0x000030E8
+ .word 0x000030E8, 0x000030EC
+ .word 0x000030EC, 0x000030F0
+ .word 0x000030F0, 0x000030F4
+ .word 0x000030F4, 0x000030F8
+ .word 0x000030F8, 0x00003100
+ .word 0x00003100, 0x00003104
+ .word 0x00003104, 0x00003110
+ .word 0x00003110, 0x0000311C
+ .word 0x0000311C, 0x00003120
+ .word 0x00003120, 0x00003124
+ .word 0x00003124, 0x00003128
+ .word 0x00003128, 0x0000312C
+ .word 0x0000312C, 0x00003130
+ .word 0x00003130, 0x00003134
+ .word 0x00003134, 0x00003138
+ .word 0x00003138, 0x0000313C
+ .word 0x0000313C, 0x00003144
+ .word 0x00003144, 0x00003148
+ .word 0x00003148, 0x00003150
+ .word 0x00003150, 0x0000315C
+ .word 0x0000315C, 0x00003160
+ .word 0x00003160, 0x00003164
+ .word 0x00003164, 0x00003168
+ .word 0x00003168, 0x0000316C
+ .word 0x0000316C, 0x00003170
+ .word 0x00003170, 0x00003174
+ .word 0x00003174, 0x00003190
+ .word 0x00003190, 0x00003198
+ .word 0x00003198, 0x0000319C
+ .word 0x0000319C, 0x000031A0
+ .word 0x000031A0, 0x000031A4
+ .word 0x000031A4, 0x000031A8
+ .word 0x000031A8, 0x000031AC
+ .word 0x000031AC, 0x000031B0
+ .word 0x000031B0, 0x000031B4
+ .word 0x000031B4, 0x000031B8
+ .word 0x000031B8, 0x000031BC
+ .word 0x000031BC, 0x000031C0
+ .word 0x000031C0, 0x000031C4
+ .word 0x000031C4, 0x000031C8
+ .word 0x000031C8, 0x000031CC
+ .word 0x000031CC, 0x000031D0
+ .word 0x000031D0, 0x000031D4
+ .word 0x000031D4, 0x000031D8
+ .word 0x000031D8, 0x000031E4
+ .word 0x000031E4, 0x000031EC
+ .word 0x000031EC, 0x000031F0
+ .word 0x000031F0, 0x00003200
+ .word 0x00003200, 0x00003204
+ .word 0x00003204, 0x00003208
+ .word 0x00003208, 0x0000320C
+ .word 0x0000320C, 0x00003210
+ .word 0x00003210, 0x00003214
+ .word 0x00003214, 0x00003218
+ .word 0x00003218, 0x00003220
+ .word 0x00003220, 0x00003224
+ .word 0x00003224, 0x00003228
+ .word 0x00003228, 0x0000322C
+ .word 0x0000322C, 0x00003230
+ .word 0x00003230, 0x00003234
+ .word 0x00003234, 0x00003238
+ .word 0x00003238, 0x0000323C
+ .word 0x0000323C, 0x00003244
+ .word 0x00003244, 0x00003248
+ .word 0x00003248, 0x0000324C
+ .word 0x0000324C, 0x00003254
+ .word 0x00003254, 0x00003258
+ .word 0x00003258, 0x00003260
+ .word 0x00003260, 0x00003264
+ .word 0x00003264, 0x00003268
+ .word 0x00003268, 0x0000326C
+ .word 0x0000326C, 0x00003270
+ .word 0x00003270, 0x00003274
+ .word 0x00003274, 0x00003278
+ .word 0x00003278, 0x0000327C
+ .word 0x0000327C, 0x00003280
+ .word 0x00003280, 0x00003284
+ .word 0x00003284, 0x00003288
+ .word 0x00003288, 0x0000328C
+ .word 0x0000328C, 0x00003290
+ .word 0x00003290, 0x00003294
+ .word 0x00003294, 0x00003298
+ .word 0x00003298, 0x0000329C
+ .word 0x0000329C, 0x000032A0
+ .word 0x000032A0, 0x000032A4
+ .word 0x000032A4, 0x000032AC
+ .word 0x000032AC, 0x000032B0
+ .word 0x000032B0, 0x000032B4
+ .word 0x000032B4, 0x000032B8
+ .word 0x000032B8, 0x000032C0
+ .word 0x000032C0, 0x000032C4
+ .word 0x000032C4, 0x000032C8
+ .word 0x000032C8, 0x000032CC
+ .word 0x000032CC, 0x000032D0
+ .word 0x000032D0, 0x000032D4
+ .word 0x000032D4, 0x000032D8
+ .word 0x000032D8, 0x000032DC
+ .word 0x000032DC, 0x000032E0
+ .word 0x000032E0, 0x000032E4
+ .word 0x000032E4, 0x000032E8
+ .word 0x000032E8, 0x000032EC
+ .word 0x000032EC, 0x000032F0
+ .word 0x000032F0, 0x000032F4
+ .word 0x000032F4, 0x000032F8
+ .word 0x000032F8, 0x000032FC
+ .word 0x000032FC, 0x00003300
+ .word 0x00003300, 0x00003304
+ .word 0x00003304, 0x00003308
+ .word 0x00003308, 0x0000330C
+ .word 0x0000330C, 0x00003310
+ .word 0x00003310, 0x00003314
+ .word 0x00003314, 0x00003318
+ .word 0x00003318, 0x0000331C
+ .word 0x0000331C, 0x00003320
+ .word 0x00003320, 0x00003324
+ .word 0x00003324, 0x00003328
+ .word 0x00003328, 0x0000332C
+ .word 0x0000332C, 0x00003330
+ .word 0x00003330, 0x00003334
+ .word 0x00003334, 0x00003338
+ .word 0x00003338, 0x0000333C
+ .word 0x0000333C, 0x00003340
+ .word 0x00003340, 0x00003344
+ .word 0x00003344, 0x00003348
+ .word 0x00003348, 0x00003350
+ .word 0x00003350, 0x0000335C
+ .word 0x0000335C, 0x00003364
+ .word 0x00003364, 0x00003368
+ .word 0x00003368, 0x0000336C
+ .word 0x0000336C, 0x00003370
+ .word 0x00003370, 0x00003374
+ .word 0x00003374, 0x00003378
+ .word 0x00003378, 0x0000337C
+ .word 0x0000337C, 0x00003380
+ .word 0x00003380, 0x00003384
+ .word 0x00003384, 0x00003390
+ .word 0x00003390, 0x00003394
+ .word 0x00003394, 0x00003398
+ .word 0x00003398, 0x0000339C
+ .word 0x0000339C, 0x000033A0
+ .word 0x000033A0, 0x000033A4
+ .word 0x000033A4, 0x000033A8
+ .word 0x000033A8, 0x000033B0
+ .word 0x000033B0, 0x000033B4
+ .word 0x000033B4, 0x000033B8
+ .word 0x000033B8, 0x000033C0
+ .word 0x000033C0, 0x000033C4
+ .word 0x000033C4, 0x000033CC
+ .word 0x000033CC, 0x000033D0
+ .word 0x000033D0, 0x000033D4
+ .word 0x000033D4, 0x000033D8
+ .word 0x000033D8, 0x000033DC
+ .word 0x000033DC, 0x000033E0
+ .word 0x000033E0, 0x000033E8
+ .word 0x000033E8, 0x000033F8
+ .word 0x000033F8, 0x000033FC
+ .word 0x000033FC, 0x00003400
+ .word 0x00003400, 0x00003404
+ .word 0x00003404, 0x00003408
+ .word 0x00003408, 0x0000340C
+ .word 0x0000340C, 0x00003418
+ .word 0x00003418, 0x0000341C
+ .word 0x0000341C, 0x00003420
+ .word 0x00003420, 0x00003424
+ .word 0x00003424, 0x00003428
+ .word 0x00003428, 0x0000342C
+ .word 0x0000342C, 0x00003434
+ .word 0x00003434, 0x0000343C
+ .word 0x0000343C, 0x00003440
+ .word 0x00003440, 0x00003444
+ .word 0x00003444, 0x0000344C
+ .word 0x0000344C, 0x00003454
+ .word 0x00003454, 0x00003458
+ .word 0x00003458, 0x0000345C
+ .word 0x0000345C, 0x00003460
+ .word 0x00003460, 0x00003464
+ .word 0x00003464, 0x00003468
+ .word 0x00003468, 0x0000346C
+ .word 0x0000346C, 0x00003470
+ .word 0x00003470, 0x00003474
+ .word 0x00003474, 0x00003478
+ .word 0x00003478, 0x0000347C
+ .word 0x0000347C, 0x00003480
+ .word 0x00003480, 0x00003484
+ .word 0x00003484, 0x00003488
+ .word 0x00003488, 0x0000348C
+ .word 0x0000348C, 0x00003490
+ .word 0x00003490, 0x00003494
+ .word 0x00003494, 0x00003498
+ .word 0x00003498, 0x0000349C
+ .word 0x0000349C, 0x000034A0
+ .word 0x000034A0, 0x000034A4
+ .word 0x000034A4, 0x000034A8
+ .word 0x000034A8, 0x000034AC
+ .word 0x000034AC, 0x000034B0
+ .word 0x000034B0, 0x000034B4
+ .word 0x000034B4, 0x000034B8
+ .word 0x000034B8, 0x000034BC
+ .word 0x000034BC, 0x000034C0
+ .word 0x000034C0, 0x000034C4
+ .word 0x000034C4, 0x000034C8
+ .word 0x000034C8, 0x000034CC
+ .word 0x000034CC, 0x000034D0
+ .word 0x000034D0, 0x000034D4
+ .word 0x000034D4, 0x000034D8
+ .word 0x000034D8, 0x000034DC
+ .word 0x000034DC, 0x000034E0
+ .word 0x000034E0, 0x000034E4
+ .word 0x000034E4, 0x000034E8
+ .word 0x000034E8, 0x000034EC
+ .word 0x000034EC, 0x000034F0
+ .word 0x000034F0, 0x000034F4
+ .word 0x000034F4, 0x000034F8
+ .word 0x000034F8, 0x000034FC
+ .word 0x000034FC, 0x00003500
+ .word 0x00003500, 0x00003504
+ .word 0x00003504, 0x00003508
+ .word 0x00003508, 0x00003510
+ .word 0x00003510, 0x00003518
+ .word 0x00003518, 0x0000351C
+ .word 0x0000351C, 0x00003520
+ .word 0x00003520, 0x00003524
+ .word 0x00003524, 0x00003528
+ .word 0x00003528, 0x0000352C
+ .word 0x0000352C, 0x00003530
+ .word 0x00003530, 0x00003534
+ .word 0x00003534, 0x00003538
+ .word 0x00003538, 0x0000353C
+ .word 0x0000353C, 0x00003540
+ .word 0x00003540, 0x00003544
+ .word 0x00003544, 0x00003548
+ .word 0x00003548, 0x0000354C
+ .word 0x0000354C, 0x00003550
+ .word 0x00003550, 0x00003554
+ .word 0x00003554, 0x00003558
+ .word 0x00003558, 0x0000355C
+ .word 0x0000355C, 0x00003560
+ .word 0x00003560, 0x00003568
+ .word 0x00003568, 0x0000356C
+ .word 0x0000356C, 0x00003570
+ .word 0x00003570, 0x00003574
+ .word 0x00003574, 0x00003578
+ .word 0x00003578, 0x00003580
+ .word 0x00003580, 0x00003584
+ .word 0x00003584, 0x00003588
+ .word 0x00003588, 0x0000358C
+ .word 0x0000358C, 0x00003594
+ .word 0x00003594, 0x00003598
+ .word 0x00003598, 0x0000359C
+ .word 0x0000359C, 0x000035A0
+ .word 0x000035A0, 0x000035AC
+ .word 0x000035AC, 0x000035B0
+ .word 0x000035B0, 0x000035B4
+ .word 0x000035B4, 0x000035B8
+ .word 0x000035B8, 0x000035BC
+ .word 0x000035BC, 0x000035C0
+ .word 0x000035C0, 0x000035C4
+ .word 0x000035C4, 0x000035C8
+ .word 0x000035C8, 0x000035CC
+ .word 0x000035CC, 0x000035D4
+ .word 0x000035D4, 0x000035E0
+ .word 0x000035E0, 0x000035E4
+ .word 0x000035E4, 0x000035E8
+ .word 0x000035E8, 0x000035F0
+ .word 0x000035F0, 0x000035F8
+ .word 0x000035F8, 0x000035FC
+ .word 0x000035FC, 0x00003600
+ .word 0x00003600, 0x0000360C
+ .word 0x0000360C, 0x00003614
+ .word 0x00003614, 0x00003618
+ .word 0x00003618, 0x0000361C
+ .word 0x0000361C, 0x00003620
+ .word 0x00003620, 0x00003624
+ .word 0x00003624, 0x00003628
+ .word 0x00003628, 0x0000362C
+ .word 0x0000362C, 0x00003630
+ .word 0x00003630, 0x00003634
+ .word 0x00003634, 0x00003638
+ .word 0x00003638, 0x0000363C
+ .word 0x0000363C, 0x00003640
+ .word 0x00003640, 0x00003644
+ .word 0x00003644, 0x00003648
+ .word 0x00003648, 0x0000364C
+ .word 0x0000364C, 0x00003650
+ .word 0x00003650, 0x00003654
+ .word 0x00003654, 0x00003658
+ .word 0x00003658, 0x0000365C
+ .word 0x0000365C, 0x00003660
+ .word 0x00003660, 0x00003664
+ .word 0x00003664, 0x00003668
+ .word 0x00003668, 0x0000366C
+ .word 0x0000366C, 0x00003670
+ .word 0x00003670, 0x00003674
+ .word 0x00003674, 0x00003678
+ .word 0x00003678, 0x0000367C
+ .word 0x0000367C, 0x00003680
+ .word 0x00003680, 0x00003684
+ .word 0x00003684, 0x00003688
+ .word 0x00003688, 0x0000368C
+ .word 0x0000368C, 0x00003690
+ .word 0x00003690, 0x00003694
+ .word 0x00003694, 0x0000369C
+ .word 0x0000369C, 0x000036A0
+ .word 0x000036A0, 0x000036A8
+ .word 0x000036A8, 0x000036AC
+ .word 0x000036AC, 0x000036B0
+ .word 0x000036B0, 0x000036B4
+ .word 0x000036B4, 0x000036B8
+ .word 0x000036B8, 0x000036BC
+ .word 0x000036BC, 0x000036C0
+ .word 0x000036C0, 0x000036C4
+ .word 0x000036C4, 0x000036C8
+ .word 0x000036C8, 0x000036CC
+ .word 0x000036CC, 0x000036D0
+ .word 0x000036D0, 0x000036D4
+ .word 0x000036D4, 0x000036D8
+ .word 0x000036D8, 0x000036DC
+ .word 0x000036DC, 0x000036E0
+ .word 0x000036E0, 0x000036E4
+ .word 0x000036E4, 0x000036E8
+ .word 0x000036E8, 0x000036EC
+ .word 0x000036EC, 0x000036F0
+ .word 0x000036F0, 0x000036F4
+ .word 0x000036F4, 0x000036F8
+ .word 0x000036F8, 0x000036FC
+ .word 0x000036FC, 0x00003700
+ .word 0x00003700, 0x00003704
+ .word 0x00003704, 0x00003708
+ .word 0x00003708, 0x0000370C
+ .word 0x0000370C, 0x00003710
+ .word 0x00003710, 0x00003714
+ .word 0x00003714, 0x00003718
+ .word 0x00003718, 0x0000371C
+ .word 0x0000371C, 0x00003720
+ .word 0x00003720, 0x00003724
+ .word 0x00003724, 0x00003728
+ .word 0x00003728, 0x0000372C
+ .word 0x0000372C, 0x00003730
+ .word 0x00003730, 0x00003734
+ .word 0x00003734, 0x00003738
+ .word 0x00003738, 0x0000373C
+ .word 0x0000373C, 0x00003740
+ .word 0x00003740, 0x00003744
+ .word 0x00003744, 0x00003748
+ .word 0x00003748, 0x0000374C
+ .word 0x0000374C, 0x00003750
+ .word 0x00003750, 0x00003754
+ .word 0x00003754, 0x00003758
+ .word 0x00003758, 0x0000375C
+ .word 0x0000375C, 0x00003768
+ .word 0x00003768, 0x0000376C
+ .word 0x0000376C, 0x00003774
+ .word 0x00003774, 0x0000377C
+ .word 0x0000377C, 0x00003780
+ .word 0x00003780, 0x00003788
+ .word 0x00003788, 0x0000378C
+ .word 0x0000378C, 0x00003790
+ .word 0x00003790, 0x00003794
+ .word 0x00003794, 0x00003798
+ .word 0x00003798, 0x0000379C
+ .word 0x0000379C, 0x000037A0
+ .word 0x000037A0, 0x000037A4
+ .word 0x000037A4, 0x000037A8
+ .word 0x000037A8, 0x000037AC
+ .word 0x000037AC, 0x000037B4
+ .word 0x000037B4, 0x000037B8
+ .word 0x000037B8, 0x000037BC
+ .word 0x000037BC, 0x000037C4
+ .word 0x000037C4, 0x000037C8
+ .word 0x000037C8, 0x000037CC
+ .word 0x000037CC, 0x000037D0
+ .word 0x000037D0, 0x000037D8
+ .word 0x000037D8, 0x000037E0
+ .word 0x000037E0, 0x000037E4
+ .word 0x000037E4, 0x000037E8
+ .word 0x000037E8, 0x000037EC
+ .word 0x000037EC, 0x000037F0
+ .word 0x000037F0, 0x000037F4
+ .word 0x000037F4, 0x000037F8
+ .word 0x000037F8, 0x000037FC
+ .word 0x000037FC, 0x00003800
+ .word 0x00003800, 0x00003804
+ .word 0x00003804, 0x00003808
+ .word 0x00003808, 0x0000380C
+ .word 0x0000380C, 0x00003810
+ .word 0x00003810, 0x00003814
+ .word 0x00003814, 0x00003818
+ .word 0x00003818, 0x0000381C
+ .word 0x0000381C, 0x0000382C
+ .word 0x0000382C, 0x00003838
+ .word 0x00003838, 0x00003840
+ .word 0x00003840, 0x00003848
+ .word 0x00003848, 0x00003850
+ .word 0x00003850, 0x00003854
+ .word 0x00003854, 0x00003858
+ .word 0x00003858, 0x00003860
+ .word 0x00003860, 0x00003864
+ .word 0x00003864, 0x00003868
+ .word 0x00003868, 0x0000386C
+ .word 0x0000386C, 0x00003870
+ .word 0x00003870, 0x00003874
+ .word 0x00003874, 0x0000387C
+ .word 0x0000387C, 0x00003880
+ .word 0x00003880, 0x00003888
+ .word 0x00003888, 0x00003890
+ .word 0x00003890, 0x00003898
+ .word 0x00003898, 0x000038A0
+ .word 0x000038A0, 0x000038A8
+ .word 0x000038A8, 0x000038AC
+ .word 0x000038AC, 0x000038B0
+ .word 0x000038B0, 0x000038B4
+ .word 0x000038B4, 0x000038B8
+ .word 0x000038B8, 0x000038BC
+ .word 0x000038BC, 0x000038C0
+ .word 0x000038C0, 0x000038C4
+ .word 0x000038C4, 0x000038C8
+ .word 0x000038C8, 0x000038CC
+ .word 0x000038CC, 0x000038D0
+ .word 0x000038D0, 0x000038D4
+ .word 0x000038D4, 0x000038D8
+ .word 0x000038D8, 0x000038DC
+ .word 0x000038DC, 0x000038E0
+ .word 0x000038E0, 0x000038E4
+ .word 0x000038E4, 0x000038E8
+ .word 0x000038E8, 0x000038EC
+ .word 0x000038EC, 0x000038F0
+ .word 0x000038F0, 0x000038F4
+ .word 0x000038F4, 0x000038F8
+ .word 0x000038F8, 0x000038FC
+ .word 0x000038FC, 0x00003900
+ .word 0x00003900, 0x00003904
+ .word 0x00003904, 0x00003908
+ .word 0x00003908, 0x0000390C
+ .word 0x0000390C, 0x00003910
+ .word 0x00003910, 0x00003914
+ .word 0x00003914, 0x00003918
+ .word 0x00003918, 0x0000391C
+ .word 0x0000391C, 0x00003920
+ .word 0x00003920, 0x00003924
+ .word 0x00003924, 0x00003928
+ .word 0x00003928, 0x0000392C
+ .word 0x0000392C, 0x00003930
+ .word 0x00003930, 0x00003934
+ .word 0x00003934, 0x00003938
+ .word 0x00003938, 0x0000393C
+ .word 0x0000393C, 0x00003940
+ .word 0x00003940, 0x00003944
+ .word 0x00003944, 0x000039AC
+ .word 0x000039AC, 0x000039B0
+ .word 0x000039B0, 0x000039B4
+ .word 0x000039B4, 0x000039B8
+ .word 0x000039B8, 0x000039BC
+ .word 0x000039BC, 0x000039C0
+ .word 0x000039C0, 0x000039C4
+ .word 0x000039C4, 0x000039C8
+ .word 0x000039C8, 0x000039CC
+ .word 0x000039CC, 0x000039D0
+ .word 0x000039D0, 0x000039D4
+ .word 0x000039D4, 0x000039D8
+ .word 0x000039D8, 0x000039DC
+ .word 0x000039DC, 0x000039E0
+ .word 0x000039E0, 0x000039E4
+ .word 0x000039E4, 0x000039E8
+ .word 0x000039E8, 0x000039EC
+ .word 0x000039EC, 0x000039F0
+ .word 0x000039F0, 0x000039F4
+ .word 0x000039F4, 0x00003A00
+ .word 0x00003A00, 0x00003A0C
+ .word 0x00003A0C, 0x00003A18
+ .word 0x00003A18, 0x00003A2C
+ .word 0x00003A2C, 0x00003A30
+ .word 0x00003A30, 0x00003A34
+ .word 0x00003A34, 0x00003A38
+ .word 0x00003A38, 0x00003A3C
+ .word 0x00003A3C, 0x00003A40
+ .word 0x00003A40, 0x00003A44
+ .word 0x00003A44, 0x00003A48
+ .word 0x00003A48, 0x00003A4C
+ .word 0x00003A4C, 0x00003A50
+ .word 0x00003A50, 0x00003A54
+ .word 0x00003A54, 0x00003A58
+ .word 0x00003A58, 0x00003A5C
+ .word 0x00003A5C, 0x00003A60
+ .word 0x00003A60, 0x00003A64
+ .word 0x00003A64, 0x00003A68
+ .word 0x00003A68, 0x00003A6C
+ .word 0x00003A6C, 0x00003A70
+ .word 0x00003A70, 0x00003A74
+ .word 0x00003A74, 0x00003A78
+ .word 0x00003A78, 0x00003A7C
+ .word 0x00003A7C, 0x00003A88
+ .word 0x00003A88, 0x00003A98
+ .word 0x00003A98, 0x00003A9C
+ .word 0x00003A9C, 0x00003AA0
+ .word 0x00003AA0, 0x00003AA4
+ .word 0x00003AA4, 0x00003AA8
+ .word 0x00003AA8, 0x00003AAC
+ .word 0x00003AAC, 0x00003AB4
+ .word 0x00003AB4, 0x00003ABC
+ .word 0x00003ABC, 0x00003AC0
+ .word 0x00003AC0, 0x00003AC4
+ .word 0x00003AC4, 0x00003AF8
+ .word 0x00003AF8, 0x00003B3C
+ .word 0x00003B3C, 0x00003B40
+ .word 0x00003B40, 0x00003B44
+ .word 0x00003B44, 0x00003B48
+ .word 0x00003B48, 0x00003B4C
+ .word 0x00003B4C, 0x00003B5C
+ .word 0x00003B5C, 0x00003B6C
+ .word 0x00003B6C, 0x00003B70
+ .word 0x00003B70, 0x00003B7C
+ .word 0x00003B7C, 0x00003B84
+ .word 0x00003B84, 0x00003B88
+ .word 0x00003B88, 0x00003B98
+ .word 0x00003B98, 0x00003BB8
+ .word 0x00003BB8, 0x00003BBC
+ .word 0x00003BBC, 0x00003BC8
+ .word 0x00003BC8, 0x00003BD8
+ .word 0x00003BD8, 0x00003BDC
+ .word 0x00003BDC, 0x00003C10
+ .word 0x00003C10, 0x00003C5C
+ .word 0x00003C5C, 0x00003C7C
+ .word 0x00003C7C, 0x00003C98
+ .word 0x00003C98, 0x00003C9C
+ .word 0x00003C9C, 0x00003CB8
+ .word 0x00003CB8, 0x00003CBC
+ .word 0x00003CBC, 0x00003CC0
+ .word 0x00003CC0, 0x00003CC4
+ .word 0x00003CC4, 0x00003CC8
+ .word 0x00003CC8, 0x00003CCC
+ .word 0x00003CCC, 0x00003CD0
+ .word 0x00003CD0, 0x00003CD4
+ .word 0x00003CD4, 0x00003CD8
+ .word 0x00003CD8, 0x00003CE4
+ .word 0x00003CE4, 0x00003CF0
+ .word 0x00003CF0, 0x00003CF4
+ .word 0x00003CF4, 0x00003CF8
+ .word 0x00003CF8, 0x00003D08
+ .word 0x00003D08, 0x00003D0C
+ .word 0x00003D0C, 0x00003D10
+ .word 0x00003D10, 0x00003D14
+ .word 0x00003D14, 0x00003D18
+ .word 0x00003D18, 0x00003D1C
+ .word 0x00003D1C, 0x00003D20
+ .word 0x00003D20, 0x00003D24
+ .word 0x00003D24, 0x00003D28
+ .word 0x00003D28, 0x00003D2C
+ .word 0x00003D2C, 0x00003D30
+ .word 0x00003D30, 0x00003D34
+ .word 0x00003D34, 0x00003D38
+ .word 0x00003D38, 0x00003D3C
+ .word 0x00003D3C, 0x00003D40
+ .word 0x00003D40, 0x00003D44
+ .word 0x00003D44, 0x00003D48
+ .word 0x00003D48, 0x00003D4C
+ .word 0x00003D4C, 0x00003D50
+ .word 0x00003D50, 0x00003D54
+ .word 0x00003D54, 0x00003D60
+ .word 0x00003D60, 0x00003D6C
+ .word 0x00003D6C, 0x00003D7C
+ .word 0x00003D7C, 0x00003D88
+ .word 0x00003D88, 0x00003D8C
+ .word 0x00003D8C, 0x00003D90
+ .word 0x00003D90, 0x00003D98
+ .word 0x00003D98, 0x00003DA0
+ .word 0x00003DA0, 0x00003DC4
+ .word 0x00003DC4, 0x00003DE8
+ .word 0x00003DE8, 0x00003DF4
+ .word 0x00003DF4, 0x00003DF8
+ .word 0x00003DF8, 0x00003E04
+ .word 0x00003E04, 0x00003E0C
+ .word 0x00003E0C, 0x00003E10
+ .word 0x00003E10, 0x00003E14
+ .word 0x00003E14, 0x00003E18
+ .word 0x00003E18, 0x00003E1C
+ .word 0x00003E1C, 0x00003E20
+ .word 0x00003E20, 0x00003EB4
+ .word 0x00003EB4, 0x00003F48
+ .word 0x00003F48, 0x00003F4C
+ .word 0x00003F4C, 0x00003F50
+ .word 0x00003F50, 0x00003F54
+ .word 0x00003F54, 0x00003F58
+ .word 0x00003F58, 0x00003F5C
+ .word 0x00003F5C, 0x00003F60
+ .word 0x00003F60, 0x00003F64
+ .word 0x00003F64, 0x00003F68
+ .word 0x00003F68, 0x00003F6C
+ .word 0x00003F6C, 0x00003F70
+ .word 0x00003F70, 0x00003F74
+ .word 0x00003F74, 0x00003F78
+ .word 0x00003F78, 0x00003F7C
+ .word 0x00003F7C, 0x00003F80
+ .word 0x00003F80, 0x00003F84
+ .word 0x00003F84, 0x00003F88
+ .word 0x00003F88, 0x00003F8C
+ .word 0x00003F8C, 0x00003F90
+ .word 0x00003F90, 0x00003F94
+ .word 0x00003F94, 0x00003F98
+ .word 0x00003F98, 0x00003F9C
+ .word 0x00003F9C, 0x00003FA0
+ .word 0x00003FA0, 0x00003FA4
+ .word 0x00003FA4, 0x00003FA8
+ .word 0x00003FA8, 0x00003FAC
+ .word 0x00003FAC, 0x00003FB0
+ .word 0x00003FB0, 0x00003FB4
+ .word 0x00003FB4, 0x00003FB8
+ .word 0x00003FB8, 0x00003FBC
+ .word 0x00003FBC, 0x00003FC0
+ .word 0x00003FC0, 0x00003FC4
+ .word 0x00003FC4, 0x00003FC8
+ .word 0x00003FC8, 0x00003FCC
+ .word 0x00003FCC, 0x00003FD0
+ .word 0x00003FD0, 0x00003FD4
+ .word 0x00003FD4, 0x00003FDC
+ .word 0x00003FDC, 0x00003FE0
+ .word 0x00003FE0, 0x00003FE4
+ .word 0x00003FE4, 0x00003FE8
+ .word 0x00003FE8, 0x00003FF0
+ .word 0x00003FF0, 0x00003FF8
+ .word 0x00003FF8, 0x00003FFC
+ .word 0x00003FFC, 0x00004000
+ .word 0x00004000, 0x00004004
+ .word 0x00004004, 0x00004008
+ .word 0x00004008, 0x0000400C
+ .word 0x0000400C, 0x00004010
+ .word 0x00004010, 0x00004014
+ .word 0x00004014, 0x00004018
+ .word 0x00004018, 0x0000401C
+ .word 0x0000401C, 0x00004020
+ .word 0x00004020, 0x00004024
+ .word 0x00004024, 0x00004028
+ .word 0x00004028, 0x0000402C
+ .word 0x0000402C, 0x00004030
+ .word 0x00004030, 0x00004034
+ .word 0x00004034, 0x00004038
+ .word 0x00004038, 0x0000403C
+ .word 0x0000403C, 0x00004040
+ .word 0x00004040, 0x00004044
+ .word 0x00004044, 0x00004048
+ .word 0x00004048, 0x0000404C
+ .word 0x0000404C, 0x00004050
+ .word 0x00004050, 0x00004058
+ .word 0x00004058, 0x00004060
+ .word 0x00004060, 0x00004064
+ .word 0x00004064, 0x00004068
+ .word 0x00004068, 0x0000406C
+ .word 0x0000406C, 0x00004070
+ .word 0x00004070, 0x00004074
+ .word 0x00004074, 0x00004078
+ .word 0x00004078, 0x0000407C
+ .word 0x0000407C, 0x00004088
+ .word 0x00004088, 0x0000408C
+ .word 0x0000408C, 0x00004090
+ .word 0x00004090, 0x00004094
+ .word 0x00004094, 0x00004098
+ .word 0x00004098, 0x0000409C
+ .word 0x0000409C, 0x000040A0
+ .word 0x000040A0, 0x000040A4
+ .word 0x000040A4, 0x000040AC
+ .word 0x000040AC, 0x000040B0
+ .word 0x000040B0, 0x000040B4
+ .word 0x000040B4, 0x000040B8
+ .word 0x000040B8, 0x000040C8
+ .word 0x000040C8, 0x000040CC
+ .word 0x000040CC, 0x000040D0
+ .word 0x000040D0, 0x000040D4
+ .word 0x000040D4, 0x000040D8
+ .word 0x000040D8, 0x000040DC
+ .word 0x000040DC, 0x000040E0
+ .word 0x000040E0, 0x000040E4
+ .word 0x000040E4, 0x00004108
+ .word 0x00004108, 0x0000412C
+ .word 0x0000412C, 0x00004130
+ .word 0x00004130, 0x00004134
+ .word 0x00004134, 0x00004140
+ .word 0x00004140, 0x00004144
+ .word 0x00004144, 0x00004148
+ .word 0x00004148, 0x0000414C
+ .word 0x0000414C, 0x00004150
+ .word 0x00004150, 0x00004154
+ .word 0x00004154, 0x00004158
+ .word 0x00004158, 0x0000415C
+ .word 0x0000415C, 0x00004160
+ .word 0x00004160, 0x00004164
+ .word 0x00004164, 0x00004168
+ .word 0x00004168, 0x0000416C
+ .word 0x0000416C, 0x00004170
+ .word 0x00004170, 0x00004174
+ .word 0x00004174, 0x00004178
+ .word 0x00004178, 0x0000417C
+ .word 0x0000417C, 0x00004180
+ .word 0x00004180, 0x00004184
+ .word 0x00004184, 0x00004188
+ .word 0x00004188, 0x0000418C
+ .word 0x0000418C, 0x00004190
+ .word 0x00004190, 0x00004194
+ .word 0x00004194, 0x00004198
+ .word 0x00004198, 0x0000419C
+ .word 0x0000419C, 0x000041A0
+ .word 0x000041A0, 0x000041A4
+ .word 0x000041A4, 0x000041A8
+ .word 0x000041A8, 0x000041AC
+ .word 0x000041AC, 0x000041B0
+ .word 0x000041B0, 0x000041B4
+ .word 0x000041B4, 0x000041B8
+ .word 0x000041B8, 0x000041BC
+ .word 0x000041BC, 0x000041C0
+ .word 0x000041C0, 0x000041C4
+ .word 0x000041C4, 0x000041C8
+ .word 0x000041C8, 0x000041CC
+ .word 0x000041CC, 0x000041D0
+ .word 0x000041D0, 0x000041D4
+ .word 0x000041D4, 0x000041D8
+ .word 0x000041D8, 0x000041DC
+ .word 0x000041DC, 0x000041E8
+ .word 0x000041E8, 0x000041EC
+ .word 0x000041EC, 0x000041F0
+ .word 0x000041F0, 0x000041F4
+ .word 0x000041F4, 0x000041F8
+ .word 0x000041F8, 0x000041FC
+ .word 0x000041FC, 0x00004200
+ .word 0x00004200, 0x00004204
+ .word 0x00004204, 0x00004208
+ .word 0x00004208, 0x0000420C
+ .word 0x0000420C, 0x00004210
+ .word 0x00004210, 0x00004248
+ .word 0x00004248, 0x00004298
+ .word 0x00004298, 0x0000429C
+ .word 0x0000429C, 0x000042A0
+ .word 0x000042A0, 0x000042A4
+ .word 0x000042A4, 0x000042A8
+ .word 0x000042A8, 0x000042AC
+ .word 0x000042AC, 0x000042B0
+ .word 0x000042B0, 0x000042B4
+ .word 0x000042B4, 0x000042B8
+ .word 0x000042B8, 0x000042BC
+ .word 0x000042BC, 0x000042C0
+ .word 0x000042C0, 0x000042C4
+ .word 0x000042C4, 0x000042C8
+ .word 0x000042C8, 0x000042CC
+ .word 0x000042CC, 0x000042D0
+ .word 0x000042D0, 0x000042D4
+ .word 0x000042D4, 0x000042D8
+ .word 0x000042D8, 0x000042DC
+ .word 0x000042DC, 0x000042E0
+ .word 0x000042E0, 0x000042E4
+ .word 0x000042E4, 0x000042E8
+ .word 0x000042E8, 0x000042EC
+ .word 0x000042EC, 0x000042F0
+ .word 0x000042F0, 0x000042F4
+ .word 0x000042F4, 0x000042F8
+ .word 0x000042F8, 0x000042FC
+ .word 0x000042FC, 0x00004300
+ .word 0x00004300, 0x00004304
+ .word 0x00004304, 0x00004324
+ .word 0x00004324, 0x00004330
+ .word 0x00004330, 0x00004334
+ .word 0x00004334, 0x00004338
+ .word 0x00004338, 0x0000433C
+ .word 0x0000433C, 0x00004340
+ .word 0x00004340, 0x00004348
+ .word 0x00004348, 0x00004350
+ .word 0x00004350, 0x0000436C
+ .word 0x0000436C, 0x00004370
+ .word 0x00004370, 0x00004374
+ .word 0x00004374, 0x00004378
+ .word 0x00004378, 0x00004384
+ .word 0x00004384, 0x00004390
+ .word 0x00004390, 0x0000439C
+ .word 0x0000439C, 0x000043A8
+ .word 0x000043A8, 0x000043B4
+ .word 0x000043B4, 0x000043B8
+ .word 0x000043B8, 0x000043BC
+ .word 0x000043BC, 0x000043C0
+ .word 0x000043C0, 0x000043C4
+ .word 0x000043C4, 0x000043C8
+ .word 0x000043C8, 0x000043CC
+ .word 0x000043CC, 0x000043D0
+ .word 0x000043D0, 0x000043D8
+ .word 0x000043D8, 0x000043E0
+ .word 0x000043E0, 0x000043E4
+ .word 0x000043E4, 0x000043E8
+ .word 0x000043E8, 0x000043EC
+ .word 0x000043EC, 0x000043F0
+ .word 0x000043F0, 0x000043F4
+ .word 0x000043F4, 0x000043F8
+ .word 0x000043F8, 0x0000441C
+ .word 0x0000441C, 0x00004440
+ .word 0x00004440, 0x00004448
+ .word 0x00004448, 0x00004450
+ .word 0x00004450, 0x00004454
+ .word 0x00004454, 0x00004458
+ .word 0x00004458, 0x0000445C
+ .word 0x0000445C, 0x00004460
+ .word 0x00004460, 0x00004464
+ .word 0x00004464, 0x00004468
+ .word 0x00004468, 0x0000446C
+ .word 0x0000446C, 0x00004470
+ .word 0x00004470, 0x00004474
+ .word 0x00004474, 0x00004478
+ .word 0x00004478, 0x0000447C
+ .word 0x0000447C, 0x00004480
+ .word 0x00004480, 0x00004484
+ .word 0x00004484, 0x00004488
+ .word 0x00004488, 0x0000448C
+ .word 0x0000448C, 0x00004490
+ .word 0x00004490, 0x00004494
+ .word 0x00004494, 0x00004498
+ .word 0x00004498, 0x0000449C
+ .word 0x0000449C, 0x000044A0
+ .word 0x000044A0, 0x000044A4
+ .word 0x000044A4, 0x000044A8
+ .word 0x000044A8, 0x000044AC
+ .word 0x000044AC, 0x000044B8
+ .word 0x000044B8, 0x000044BC
+ .word 0x000044BC, 0x000044C0
+ .word 0x000044C0, 0x000044C8
+ .word 0x000044C8, 0x000044D4
+ .word 0x000044D4, 0x000044D8
+ .word 0x000044D8, 0x000044DC
+ .word 0x000044DC, 0x000044E0
+ .word 0x000044E0, 0x000044E4
+ .word 0x000044E4, 0x000044E8
+ .word 0x000044E8, 0x000044EC
+ .word 0x000044EC, 0x000044F0
+ .word 0x000044F0, 0x000044F4
+ .word 0x000044F4, 0x000044F8
+ .word 0x000044F8, 0x000044FC
+ .word 0x000044FC, 0x00004500
+ .word 0x00004500, 0x00004504
+ .word 0x00004504, 0x00004508
+ .word 0x00004508, 0x0000450C
+ .word 0x0000450C, 0x00004510
+ .word 0x00004510, 0x00004514
+ .word 0x00004514, 0x00004518
+ .word 0x00004518, 0x0000451C
+ .word 0x0000451C, 0x00004520
+ .word 0x00004520, 0x00004524
+ .word 0x00004524, 0x00004528
+ .word 0x00004528, 0x0000452C
+ .word 0x0000452C, 0x00004530
+ .word 0x00004530, 0x00004534
+ .word 0x00004534, 0x00004538
+ .word 0x00004538, 0x00004558
+ .word 0x00004558, 0x00004568
+ .word 0x00004568, 0x0000456C
+ .word 0x0000456C, 0x00004598
+ .word 0x00004598, 0x000045B0
+ .word 0x000045B0, 0x000045CC
+ .word 0x000045CC, 0x000045EC
+ .word 0x000045EC, 0x00004604
+ .word 0x00004604, 0x0000460C
+ .word 0x0000460C, 0x00004610
+ .word 0x00004610, 0x00004620
+ .word 0x00004620, 0x00004624
+ .word 0x00004624, 0x00004628
+ .word 0x00004628, 0x0000462C
+ .word 0x0000462C, 0x00004630
+ .word 0x00004630, 0x00004634
+ .word 0x00004634, 0x00004638
+ .word 0x00004638, 0x0000463C
+ .word 0x0000463C, 0x00004640
+ .word 0x00004640, 0x00004644
+ .word 0x00004644, 0x00004648
+ .word 0x00004648, 0x0000465C
+ .word 0x0000465C, 0x00004674
+ .word 0x00004674, 0x00004694
+ .word 0x00004694, 0x00004698
+ .word 0x00004698, 0x0000469C
+ .word 0x0000469C, 0x000046C0
+ .word 0x000046C0, 0x000046DC
+ .word 0x000046DC, 0x000046E0
+ .word 0x000046E0, 0x000046E4
+ .word 0x000046E4, 0x000046E8
+ .word 0x000046E8, 0x000046EC
+ .word 0x000046EC, 0x000046F0
+ .word 0x000046F0, 0x000046F4
+ .word 0x000046F4, 0x000046F8
+ .word 0x000046F8, 0x000046FC
+ .word 0x000046FC, 0x00004700
+ .word 0x00004700, 0x0000470C
+ .word 0x0000470C, 0x0000471C
+ .word 0x0000471C, 0x00004728
+ .word 0x00004728, 0x00004730
+ .word 0x00004730, 0x00004734
+ .word 0x00004734, 0x00004738
+ .word 0x00004738, 0x00004744
+ .word 0x00004744, 0x00004748
+ .word 0x00004748, 0x00004754
+ .word 0x00004754, 0x00004758
+ .word 0x00004758, 0x0000475C
+ .word 0x0000475C, 0x00004760
+ .word 0x00004760, 0x00004764
+ .word 0x00004764, 0x00004768
+ .word 0x00004768, 0x0000476C
+ .word 0x0000476C, 0x00004770
+ .word 0x00004770, 0x00004774
+ .word 0x00004774, 0x0000477C
+ .word 0x0000477C, 0x00004780
+ .word 0x00004780, 0x00004784
+ .word 0x00004784, 0x00004788
+ .word 0x00004788, 0x0000478C
+ .word 0x0000478C, 0x00004790
+ .word 0x00004790, 0x000047B8
+ .word 0x000047B8, 0x000047E0
+ .word 0x000047E0, 0x000047EC
+ .word 0x000047EC, 0x000047FC
+ .word 0x000047FC, 0x00004800
+ .word 0x00004800, 0x00004804
+ .word 0x00004804, 0x00004808
+ .word 0x00004808, 0x0000480C
+ .word 0x0000480C, 0x00004810
+ .word 0x00004810, 0x00004814
+ .word 0x00004814, 0x00004818
+ .word 0x00004818, 0x0000481C
+ .word 0x0000481C, 0x00004820
+ .word 0x00004820, 0x00004824
+ .word 0x00004824, 0x00004828
+ .word 0x00004828, 0x0000482C
+ .word 0x0000482C, 0x00004830
+ .word 0x00004830, 0x00004834
+ .word 0x00004834, 0x00004838
+ .word 0x00004838, 0x0000483C
+ .word 0x0000483C, 0x00004840
+ .word 0x00004840, 0x00004844
+ .word 0x00004844, 0x00004848
+ .word 0x00004848, 0x0000484C
+ .word 0x0000484C, 0x00004850
+ .word 0x00004850, 0x00004854
+ .word 0x00004854, 0x00004858
+ .word 0x00004858, 0x0000485C
+ .word 0x0000485C, 0x00004860
+ .word 0x00004860, 0x00004864
+ .word 0x00004864, 0x00004868
+ .word 0x00004868, 0x0000486C
+ .word 0x0000486C, 0x00004870
+ .word 0x00004870, 0x00004874
+ .word 0x00004874, 0x00004878
+ .word 0x00004878, 0x0000487C
+ .word 0x0000487C, 0x00004880
+ .word 0x00004880, 0x00004884
+ .word 0x00004884, 0x00004888
+ .word 0x00004888, 0x000048F0
+ .word 0x000048F0, 0x000048F4
+ .word 0x000048F4, 0x000048F8
+ .word 0x000048F8, 0x000048FC
+ .word 0x000048FC, 0x00004900
+ .word 0x00004900, 0x00004904
+ .word 0x00004904, 0x00004908
+ .word 0x00004908, 0x0000490C
+ .word 0x0000490C, 0x00004910
+ .word 0x00004910, 0x00004914
+ .word 0x00004914, 0x00004918
+ .word 0x00004918, 0x0000491C
+ .word 0x0000491C, 0x00004920
+ .word 0x00004920, 0x00004924
+ .word 0x00004924, 0x00004928
+ .word 0x00004928, 0x0000492C
+ .word 0x0000492C, 0x00004930
+ .word 0x00004930, 0x00004934
+ .word 0x00004934, 0x00004938
+ .word 0x00004938, 0x00004944
+ .word 0x00004944, 0x00004950
+ .word 0x00004950, 0x0000495C
+ .word 0x0000495C, 0x00004970
+ .word 0x00004970, 0x00004974
+ .word 0x00004974, 0x00004978
+ .word 0x00004978, 0x0000497C
+ .word 0x0000497C, 0x00004980
+ .word 0x00004980, 0x00004984
+ .word 0x00004984, 0x00004988
+ .word 0x00004988, 0x0000498C
+ .word 0x0000498C, 0x00004990
+ .word 0x00004990, 0x00004994
+ .word 0x00004994, 0x00004998
+ .word 0x00004998, 0x0000499C
+ .word 0x0000499C, 0x000049A0
+ .word 0x000049A0, 0x000049A4
+ .word 0x000049A4, 0x000049A8
+ .word 0x000049A8, 0x000049AC
+ .word 0x000049AC, 0x000049B0
+ .word 0x000049B0, 0x000049B4
+ .word 0x000049B4, 0x000049B8
+ .word 0x000049B8, 0x000049BC
+ .word 0x000049BC, 0x000049C0
+ .word 0x000049C0, 0x000049CC
+ .word 0x000049CC, 0x000049DC
+ .word 0x000049DC, 0x000049E0
+ .word 0x000049E0, 0x000049E4
+ .word 0x000049E4, 0x000049E8
+ .word 0x000049E8, 0x000049EC
+ .word 0x000049EC, 0x000049F0
+ .word 0x000049F0, 0x000049F8
+ .word 0x000049F8, 0x00004A00
+ .word 0x00004A00, 0x00004A04
+ .word 0x00004A04, 0x00004A08
+ .word 0x00004A08, 0x00004A3C
+ .word 0x00004A3C, 0x00004A80
+ .word 0x00004A80, 0x00004A84
+ .word 0x00004A84, 0x00004A88
+ .word 0x00004A88, 0x00004A8C
+ .word 0x00004A8C, 0x00004A90
+ .word 0x00004A90, 0x00004AA0
+ .word 0x00004AA0, 0x00004AB0
+ .word 0x00004AB0, 0x00004AB4
+ .word 0x00004AB4, 0x00004AC0
+ .word 0x00004AC0, 0x00004AC8
+ .word 0x00004AC8, 0x00004ACC
+ .word 0x00004ACC, 0x00004ADC
+ .word 0x00004ADC, 0x00004AFC
+ .word 0x00004AFC, 0x00004B00
+ .word 0x00004B00, 0x00004B0C
+ .word 0x00004B0C, 0x00004B1C
+ .word 0x00004B1C, 0x00004B20
+ .word 0x00004B20, 0x00004B54
+ .word 0x00004B54, 0x00004BA0
+ .word 0x00004BA0, 0x00004BC0
+ .word 0x00004BC0, 0x00004BDC
+ .word 0x00004BDC, 0x00004BE0
+ .word 0x00004BE0, 0x00004BFC
+ .word 0x00004BFC, 0x00004C00
+ .word 0x00004C00, 0x00004C04
+ .word 0x00004C04, 0x00004C08
+ .word 0x00004C08, 0x00004C0C
+ .word 0x00004C0C, 0x00004C10
+ .word 0x00004C10, 0x00004C14
+ .word 0x00004C14, 0x00004C18
+ .word 0x00004C18, 0x00004C1C
+ .word 0x00004C1C, 0x00004C28
+ .word 0x00004C28, 0x00004C34
+ .word 0x00004C34, 0x00004C38
+ .word 0x00004C38, 0x00004C3C
+ .word 0x00004C3C, 0x00004C4C
+ .word 0x00004C4C, 0x00004C50
+ .word 0x00004C50, 0x00004C54
+ .word 0x00004C54, 0x00004C58
+ .word 0x00004C58, 0x00004C5C
+ .word 0x00004C5C, 0x00004C60
+ .word 0x00004C60, 0x00004C64
+ .word 0x00004C64, 0x00004C68
+ .word 0x00004C68, 0x00004C6C
+ .word 0x00004C6C, 0x00004C70
+ .word 0x00004C70, 0x00004C74
+ .word 0x00004C74, 0x00004C78
+ .word 0x00004C78, 0x00004C7C
+ .word 0x00004C7C, 0x00004C80
+ .word 0x00004C80, 0x00004C84
+ .word 0x00004C84, 0x00004C88
+ .word 0x00004C88, 0x00004C8C
+ .word 0x00004C8C, 0x00004C90
+ .word 0x00004C90, 0x00004C94
+ .word 0x00004C94, 0x00004C98
+ .word 0x00004C98, 0x00004CA4
+ .word 0x00004CA4, 0x00004CB0
+ .word 0x00004CB0, 0x00004CC0
+ .word 0x00004CC0, 0x00004CCC
+ .word 0x00004CCC, 0x00004CD0
+ .word 0x00004CD0, 0x00004CD4
+ .word 0x00004CD4, 0x00004CDC
+ .word 0x00004CDC, 0x00004CE4
+ .word 0x00004CE4, 0x00004D08
+ .word 0x00004D08, 0x00004D2C
+ .word 0x00004D2C, 0x00004D38
+ .word 0x00004D38, 0x00004D3C
+ .word 0x00004D3C, 0x00004D48
+ .word 0x00004D48, 0x00004D50
+ .word 0x00004D50, 0x00004D54
+ .word 0x00004D54, 0x00004D58
+ .word 0x00004D58, 0x00004D5C
+ .word 0x00004D5C, 0x00004D60
+ .word 0x00004D60, 0x00004D64
+ .word 0x00004D64, 0x00004DF8
+ .word 0x00004DF8, 0x00004E8C
+ .word 0x00004E8C, 0x00004E90
+ .word 0x00004E90, 0x00004E94
+ .word 0x00004E94, 0x00004E98
+ .word 0x00004E98, 0x00004E9C
+ .word 0x00004E9C, 0x00004EA0
+ .word 0x00004EA0, 0x00004EA4
+ .word 0x00004EA4, 0x00004EA8
+ .word 0x00004EA8, 0x00004EAC
+ .word 0x00004EAC, 0x00004EB0
+ .word 0x00004EB0, 0x00004EB4
+ .word 0x00004EB4, 0x00004EB8
+ .word 0x00004EB8, 0x00004EBC
+ .word 0x00004EBC, 0x00004EC0
+ .word 0x00004EC0, 0x00004EC4
+ .word 0x00004EC4, 0x00004EC8
+ .word 0x00004EC8, 0x00004ECC
+ .word 0x00004ECC, 0x00004ED0
+ .word 0x00004ED0, 0x00004ED4
+ .word 0x00004ED4, 0x00004ED8
+ .word 0x00004ED8, 0x00004EDC
+ .word 0x00004EDC, 0x00004EE0
+ .word 0x00004EE0, 0x00004EE4
+ .word 0x00004EE4, 0x00004EE8
+ .word 0x00004EE8, 0x00004EEC
+ .word 0x00004EEC, 0x00004EF0
+ .word 0x00004EF0, 0x00004EF4
+ .word 0x00004EF4, 0x00004EF8
+ .word 0x00004EF8, 0x00004EFC
+ .word 0x00004EFC, 0x00004F00
+ .word 0x00004F00, 0x00004F04
+ .word 0x00004F04, 0x00004F08
+ .word 0x00004F08, 0x00004F0C
+ .word 0x00004F0C, 0x00004F10
+ .word 0x00004F10, 0x00004F14
+ .word 0x00004F14, 0x00004F18
+ .word 0x00004F18, 0x00004F1C
+ .word 0x00004F1C, 0x00004F20
+ .word 0x00004F20, 0x00004F24
+ .word 0x00004F24, 0x00004F28
+ .word 0x00004F28, 0x00004F30
+ .word 0x00004F30, 0x00004F38
+ .word 0x00004F38, 0x00004F3C
+ .word 0x00004F3C, 0x00004F40
+ .word 0x00004F40, 0x00004F44
+ .word 0x00004F44, 0x00004F48
+ .word 0x00004F48, 0x00004F4C
+ .word 0x00004F4C, 0x00004F50
+ .word 0x00004F50, 0x00004F54
+ .word 0x00004F54, 0x00004F58
+ .word 0x00004F58, 0x00004F5C
+ .word 0x00004F5C, 0x00004F60
+ .word 0x00004F60, 0x00004F64
+ .word 0x00004F64, 0x00004F68
+ .word 0x00004F68, 0x00004F6C
+ .word 0x00004F6C, 0x00004F70
+ .word 0x00004F70, 0x00004F74
+ .word 0x00004F74, 0x00004F78
+ .word 0x00004F78, 0x00004F7C
+ .word 0x00004F7C, 0x00004F80
+ .word 0x00004F80, 0x00004F84
+ .word 0x00004F84, 0x00004F88
+ .word 0x00004F88, 0x00004F8C
+ .word 0x00004F8C, 0x00004F90
+ .word 0x00004F90, 0x00004F98
+ .word 0x00004F98, 0x00004FA0
+ .word 0x00004FA0, 0x00004FA4
+ .word 0x00004FA4, 0x00004FA8
+ .word 0x00004FA8, 0x00004FAC
+ .word 0x00004FAC, 0x00004FB0
+ .word 0x00004FB0, 0x00004FB4
+ .word 0x00004FB4, 0x00004FB8
+ .word 0x00004FB8, 0x00004FBC
+ .word 0x00004FBC, 0x00004FC8
+ .word 0x00004FC8, 0x00004FCC
+ .word 0x00004FCC, 0x00004FD0
+ .word 0x00004FD0, 0x00004FD4
+ .word 0x00004FD4, 0x00004FD8
+ .word 0x00004FD8, 0x00004FDC
+ .word 0x00004FDC, 0x00004FE0
+ .word 0x00004FE0, 0x00004FE4
+ .word 0x00004FE4, 0x00004FEC
+ .word 0x00004FEC, 0x00004FF0
+ .word 0x00004FF0, 0x00004FF4
+ .word 0x00004FF4, 0x00004FF8
+ .word 0x00004FF8, 0x00005008
+ .word 0x00005008, 0x0000500C
+ .word 0x0000500C, 0x00005010
+ .word 0x00005010, 0x00005014
+ .word 0x00005014, 0x00005018
+ .word 0x00005018, 0x0000501C
+ .word 0x0000501C, 0x00005020
+ .word 0x00005020, 0x00005024
+ .word 0x00005024, 0x00005048
+ .word 0x00005048, 0x0000506C
+ .word 0x0000506C, 0x00005070
+ .word 0x00005070, 0x00005074
+ .word 0x00005074, 0x00005080
+ .word 0x00005080, 0x00005084
+ .word 0x00005084, 0x00005088
+ .word 0x00005088, 0x0000508C
+ .word 0x0000508C, 0x00005090
+ .word 0x00005090, 0x00005094
+ .word 0x00005094, 0x00005098
+ .word 0x00005098, 0x0000509C
+ .word 0x0000509C, 0x000050A0
+ .word 0x000050A0, 0x000050A4
+ .word 0x000050A4, 0x000050A8
+ .word 0x000050A8, 0x000050AC
+ .word 0x000050AC, 0x000050B0
+ .word 0x000050B0, 0x000050B4
+ .word 0x000050B4, 0x000050B8
+ .word 0x000050B8, 0x000050BC
+ .word 0x000050BC, 0x000050C0
+ .word 0x000050C0, 0x000050C4
+ .word 0x000050C4, 0x000050C8
+ .word 0x000050C8, 0x000050CC
+ .word 0x000050CC, 0x000050D0
+ .word 0x000050D0, 0x000050D4
+ .word 0x000050D4, 0x000050D8
+ .word 0x000050D8, 0x000050DC
+ .word 0x000050DC, 0x000050E0
+ .word 0x000050E0, 0x000050E4
+ .word 0x000050E4, 0x000050E8
+ .word 0x000050E8, 0x000050EC
+ .word 0x000050EC, 0x000050F0
+ .word 0x000050F0, 0x000050F4
+ .word 0x000050F4, 0x000050F8
+ .word 0x000050F8, 0x000050FC
+ .word 0x000050FC, 0x00005100
+ .word 0x00005100, 0x00005104
+ .word 0x00005104, 0x00005108
+ .word 0x00005108, 0x0000510C
+ .word 0x0000510C, 0x00005110
+ .word 0x00005110, 0x00005114
+ .word 0x00005114, 0x00005118
+ .word 0x00005118, 0x0000511C
+ .word 0x0000511C, 0x00005128
+ .word 0x00005128, 0x0000512C
+ .word 0x0000512C, 0x00005130
+ .word 0x00005130, 0x00005134
+ .word 0x00005134, 0x00005138
+ .word 0x00005138, 0x0000513C
+ .word 0x0000513C, 0x00005140
+ .word 0x00005140, 0x00005144
+ .word 0x00005144, 0x00005148
+ .word 0x00005148, 0x0000514C
+ .word 0x0000514C, 0x00005150
+ .word 0x00005150, 0x00005188
+ .word 0x00005188, 0x000051D8
+ .word 0x000051D8, 0x000051DC
+ .word 0x000051DC, 0x000051E0
+ .word 0x000051E0, 0x000051E4
+ .word 0x000051E4, 0x000051E8
+ .word 0x000051E8, 0x000051EC
+ .word 0x000051EC, 0x000051F0
+ .word 0x000051F0, 0x000051F4
+ .word 0x000051F4, 0x000051F8
+ .word 0x000051F8, 0x000051FC
+ .word 0x000051FC, 0x00005200
+ .word 0x00005200, 0x00005204
+ .word 0x00005204, 0x00005208
+ .word 0x00005208, 0x0000520C
+ .word 0x0000520C, 0x00005210
+ .word 0x00005210, 0x00005214
+ .word 0x00005214, 0x00005218
+ .word 0x00005218, 0x0000521C
+ .word 0x0000521C, 0x00005220
+ .word 0x00005220, 0x00005224
+ .word 0x00005224, 0x00005228
+ .word 0x00005228, 0x0000522C
+ .word 0x0000522C, 0x00005230
+ .word 0x00005230, 0x00005234
+ .word 0x00005234, 0x00005238
+ .word 0x00005238, 0x0000523C
+ .word 0x0000523C, 0x00005240
+ .word 0x00005240, 0x00005244
+ .word 0x00005244, 0x00005264
+ .word 0x00005264, 0x00005270
+ .word 0x00005270, 0x00005274
+ .word 0x00005274, 0x00005278
+ .word 0x00005278, 0x0000527C
+ .word 0x0000527C, 0x00005280
+ .word 0x00005280, 0x00005288
+ .word 0x00005288, 0x00005290
+ .word 0x00005290, 0x000052AC
+ .word 0x000052AC, 0x000052B0
+ .word 0x000052B0, 0x000052B4
+ .word 0x000052B4, 0x000052B8
+ .word 0x000052B8, 0x000052C4
+ .word 0x000052C4, 0x000052D0
+ .word 0x000052D0, 0x000052DC
+ .word 0x000052DC, 0x000052E8
+ .word 0x000052E8, 0x000052F4
+ .word 0x000052F4, 0x000052F8
+ .word 0x000052F8, 0x000052FC
+ .word 0x000052FC, 0x00005300
+ .word 0x00005300, 0x00005304
+ .word 0x00005304, 0x00005308
+ .word 0x00005308, 0x0000530C
+ .word 0x0000530C, 0x00005310
+ .word 0x00005310, 0x00005318
+ .word 0x00005318, 0x00005320
+ .word 0x00005320, 0x00005324
+ .word 0x00005324, 0x00005328
+ .word 0x00005328, 0x0000532C
+ .word 0x0000532C, 0x00005330
+ .word 0x00005330, 0x00005334
+ .word 0x00005334, 0x00005338
+ .word 0x00005338, 0x0000535C
+ .word 0x0000535C, 0x00005380
+ .word 0x00005380, 0x00005388
+ .word 0x00005388, 0x00005390
+ .word 0x00005390, 0x00005394
+ .word 0x00005394, 0x00005398
+ .word 0x00005398, 0x0000539C
+ .word 0x0000539C, 0x000053A0
+ .word 0x000053A0, 0x000053A4
+ .word 0x000053A4, 0x000053A8
+ .word 0x000053A8, 0x000053AC
+ .word 0x000053AC, 0x000053B0
+ .word 0x000053B0, 0x000053B4
+ .word 0x000053B4, 0x000053B8
+ .word 0x000053B8, 0x000053BC
+ .word 0x000053BC, 0x000053C0
+ .word 0x000053C0, 0x000053C4
+ .word 0x000053C4, 0x000053C8
+ .word 0x000053C8, 0x000053CC
+ .word 0x000053CC, 0x000053D0
+ .word 0x000053D0, 0x000053D4
+ .word 0x000053D4, 0x000053D8
+ .word 0x000053D8, 0x000053DC
+ .word 0x000053DC, 0x000053E0
+ .word 0x000053E0, 0x000053E4
+ .word 0x000053E4, 0x000053E8
+ .word 0x000053E8, 0x000053EC
+ .word 0x000053EC, 0x000053F8
+ .word 0x000053F8, 0x000053FC
+ .word 0x000053FC, 0x00005400
+ .word 0x00005400, 0x00005408
+ .word 0x00005408, 0x00005414
+ .word 0x00005414, 0x00005418
+ .word 0x00005418, 0x0000541C
+ .word 0x0000541C, 0x00005420
+ .word 0x00005420, 0x00005424
+ .word 0x00005424, 0x00005428
+ .word 0x00005428, 0x0000542C
+ .word 0x0000542C, 0x00005430
+ .word 0x00005430, 0x00005434
+ .word 0x00005434, 0x00005438
+ .word 0x00005438, 0x0000543C
+ .word 0x0000543C, 0x00005440
+ .word 0x00005440, 0x00005444
+ .word 0x00005444, 0x00005448
+ .word 0x00005448, 0x0000544C
+ .word 0x0000544C, 0x00005450
+ .word 0x00005450, 0x00005454
+ .word 0x00005454, 0x00005458
+ .word 0x00005458, 0x0000545C
+ .word 0x0000545C, 0x00005460
+ .word 0x00005460, 0x00005464
+ .word 0x00005464, 0x00005468
+ .word 0x00005468, 0x0000546C
+ .word 0x0000546C, 0x00005470
+ .word 0x00005470, 0x00005474
+ .word 0x00005474, 0x00005478
+ .word 0x00005478, 0x00005498
+ .word 0x00005498, 0x000054A8
+ .word 0x000054A8, 0x000054AC
+ .word 0x000054AC, 0x000054D8
+ .word 0x000054D8, 0x000054F0
+ .word 0x000054F0, 0x000054F4
+ .word 0x000054F4, 0x00005514
+ .word 0x00005514, 0x0000552C
+ .word 0x0000552C, 0x00005534
+ .word 0x00005534, 0x00005538
+ .word 0x00005538, 0x00005548
+ .word 0x00005548, 0x0000554C
+ .word 0x0000554C, 0x00005550
+ .word 0x00005550, 0x00005554
+ .word 0x00005554, 0x00005558
+ .word 0x00005558, 0x0000555C
+ .word 0x0000555C, 0x00005560
+ .word 0x00005560, 0x00005564
+ .word 0x00005564, 0x00005568
+ .word 0x00005568, 0x0000556C
+ .word 0x0000556C, 0x00005570
+ .word 0x00005570, 0x00005584
+ .word 0x00005584, 0x0000559C
+ .word 0x0000559C, 0x000055BC
+ .word 0x000055BC, 0x000055C0
+ .word 0x000055C0, 0x000055C4
+ .word 0x000055C4, 0x000055E8
+ .word 0x000055E8, 0x00005604
+ .word 0x00005604, 0x00005608
+ .word 0x00005608, 0x0000560C
+ .word 0x0000560C, 0x00005610
+ .word 0x00005610, 0x00005614
+ .word 0x00005614, 0x00005618
+ .word 0x00005618, 0x0000561C
+ .word 0x0000561C, 0x00005620
+ .word 0x00005620, 0x00005624
+ .word 0x00005624, 0x00005628
+ .word 0x00005628, 0x00005634
+ .word 0x00005634, 0x00005644
+ .word 0x00005644, 0x00005650
+ .word 0x00005650, 0x00005658
+ .word 0x00005658, 0x0000565C
+ .word 0x0000565C, 0x00005660
+ .word 0x00005660, 0x0000566C
+ .word 0x0000566C, 0x00005670
+ .word 0x00005670, 0x0000567C
+ .word 0x0000567C, 0x00005680
+ .word 0x00005680, 0x00005684
+ .word 0x00005684, 0x00005688
+ .word 0x00005688, 0x0000568C
+ .word 0x0000568C, 0x00005690
+ .word 0x00005690, 0x00005694
+ .word 0x00005694, 0x00005698
+ .word 0x00005698, 0x0000569C
+ .word 0x0000569C, 0x000056A4
+ .word 0x000056A4, 0x000056A8
+ .word 0x000056A8, 0x000056AC
+ .word 0x000056AC, 0x000056B0
+ .word 0x000056B0, 0x000056B4
+ .word 0x000056B4, 0x000056B8
+ .word 0x000056B8, 0x000056E0
+ .word 0x000056E0, 0x00005708
+ .word 0x00005708, 0x00005714
+ .word 0x00005714, 0x00005724
+ .word 0x00005724, 0x00005728
+ .word 0x00005728, 0x0000572C
+ .word 0x0000572C, 0x00005730
+ .word 0x00005730, 0x00005734
+ .word 0x00005734, 0x00005738
+ .word 0x00005738, 0x0000573C
+ .word 0x0000573C, 0x00005740
+ .word 0x00005740, 0x00005744
+ .word 0x00005744, 0x00005748
+ .word 0x00005748, 0x0000574C
+ .word 0x0000574C, 0x00005750
+ .word 0x00005750, 0x00005754
+ .word 0x00005754, 0x00005758
+ .word 0x00005758, 0x0000575C
+ .word 0x0000575C, 0x00005760
+ .word 0x00005760, 0x00005764
+ .word 0x00005764, 0x00005768
+ .word 0x00005768, 0x0000576C
+ .word 0x0000576C, 0x00005770
+ .word 0x00005770, 0x00005774
+ .word 0x00005774, 0x00005778
+ .word 0x00005778, 0x0000577C
+ .word 0x0000577C, 0x00005780
+ .word 0x00005780, 0x00005784
+ .word 0x00005784, 0x00005788
+ .word 0x00005788, 0x0000578C
+ .word 0x0000578C, 0x00005790
+ .word 0x00005790, 0x00005794
+ .word 0x00005794, 0x00005798
+ .word 0x00005798, 0x0000579C
+ .word 0x0000579C, 0x000057A0
+ .word 0x000057A0, 0x000057A4
+ .word 0x000057A4, 0x000057A8
+ .word 0x000057A8, 0x000057AC
+ .word 0x000057AC, 0x000057B0
+ .word 0x000057B0, 0x00005818
+ .word 0x00005818, 0x0000581C
+ .word 0x0000581C, 0x00005820
+ .word 0x00005820, 0x00005824
+ .word 0x00005824, 0x00005828
+ .word 0x00005828, 0x0000582C
+ .word 0x0000582C, 0x00005830
+ .word 0x00005830, 0x00005834
+ .word 0x00005834, 0x00005838
+ .word 0x00005838, 0x0000583C
+ .word 0x0000583C, 0x00005840
+ .word 0x00005840, 0x00005844
+ .word 0x00005844, 0x00005848
+ .word 0x00005848, 0x0000584C
+ .word 0x0000584C, 0x00005850
+ .word 0x00005850, 0x00005854
+ .word 0x00005854, 0x00005858
+ .word 0x00005858, 0x0000585C
+ .word 0x0000585C, 0x00005860
+ .word 0x00005860, 0x0000586C
+ .word 0x0000586C, 0x00005878
+ .word 0x00005878, 0x00005884
+ .word 0x00005884, 0x00005898
+ .word 0x00005898, 0x0000589C
+ .word 0x0000589C, 0x000058A0
+ .word 0x000058A0, 0x000058A4
+ .word 0x000058A4, 0x000058A8
+ .word 0x000058A8, 0x000058AC
+ .word 0x000058AC, 0x000058B0
+ .word 0x000058B0, 0x000058B4
+ .word 0x000058B4, 0x000058B8
+ .word 0x000058B8, 0x000058BC
+ .word 0x000058BC, 0x000058C0
+ .word 0x000058C0, 0x000058C4
+ .word 0x000058C4, 0x000058C8
+ .word 0x000058C8, 0x000058CC
+ .word 0x000058CC, 0x000058D0
+ .word 0x000058D0, 0x000058D4
+ .word 0x000058D4, 0x000058D8
+ .word 0x000058D8, 0x000058DC
+ .word 0x000058DC, 0x000058E0
+ .word 0x000058E0, 0x00005914
+ .word 0x00005914, 0x00005920
+ .word 0x00005920, 0x0000592C
+ .word 0x0000592C, 0x0000593C
+ .word 0x0000593C, 0x00005940
+ .word 0x00005940, 0x00005944
+ .word 0x00005944, 0x00005948
+ .word 0x00005948, 0x0000594C
+ .word 0x0000594C, 0x00005950
+ .word 0x00005950, 0x00005958
+ .word 0x00005958, 0x00005960
+ .word 0x00005960, 0x00005964
+ .word 0x00005964, 0x00005968
+ .word 0x00005968, 0x0000599C
+ .word 0x0000599C, 0x000059E0
+ .word 0x000059E0, 0x000059E4
+ .word 0x000059E4, 0x000059E8
+ .word 0x000059E8, 0x000059EC
+ .word 0x000059EC, 0x000059F0
+ .word 0x000059F0, 0x00005A00
+ .word 0x00005A00, 0x00005A10
+ .word 0x00005A10, 0x00005A14
+ .word 0x00005A14, 0x00005A20
+ .word 0x00005A20, 0x00005A28
+ .word 0x00005A28, 0x00005A2C
+ .word 0x00005A2C, 0x00005A3C
+ .word 0x00005A3C, 0x00005A5C
+ .word 0x00005A5C, 0x00005A60
+ .word 0x00005A60, 0x00005A6C
+ .word 0x00005A6C, 0x00005A7C
+ .word 0x00005A7C, 0x00005A80
+ .word 0x00005A80, 0x00005AB4
+ .word 0x00005AB4, 0x00005B00
+ .word 0x00005B00, 0x00005B20
+ .word 0x00005B20, 0x00005B3C
+ .word 0x00005B3C, 0x00005B40
+ .word 0x00005B40, 0x00005B5C
+ .word 0x00005B5C, 0x00005B60
+ .word 0x00005B60, 0x00005B64
+ .word 0x00005B64, 0x00005B68
+ .word 0x00005B68, 0x00005B6C
+ .word 0x00005B6C, 0x00005B70
+ .word 0x00005B70, 0x00005B74
+ .word 0x00005B74, 0x00005B78
+ .word 0x00005B78, 0x00005B7C
+ .word 0x00005B7C, 0x00005B88
+ .word 0x00005B88, 0x00005B94
+ .word 0x00005B94, 0x00005B98
+ .word 0x00005B98, 0x00005B9C
+ .word 0x00005B9C, 0x00005BAC
+ .word 0x00005BAC, 0x00005BB0
+ .word 0x00005BB0, 0x00005BB8
+ .word 0x00005BB8, 0x00005BBC
+ .word 0x00005BBC, 0x00005BC0
+ .word 0x00005BC0, 0x00005BC4
+ .word 0x00005BC4, 0x00005BC8
+ .word 0x00005BC8, 0x00005BCC
+ .word 0x00005BCC, 0x00005BD0
+ .word 0x00005BD0, 0x00005BD4
+ .word 0x00005BD4, 0x00005BD8
+ .word 0x00005BD8, 0x00005BDC
+ .word 0x00005BDC, 0x00005BE0
+ .word 0x00005BE0, 0x00005BE4
+ .word 0x00005BE4, 0x00005BE8
+ .word 0x00005BE8, 0x00005BEC
+ .word 0x00005BEC, 0x00005BF0
+ .word 0x00005BF0, 0x00005BF4
+ .word 0x00005BF4, 0x00005BF8
+ .word 0x00005BF8, 0x00005BFC
+ .word 0x00005BFC, 0x00005C08
+ .word 0x00005C08, 0x00005C14
+ .word 0x00005C14, 0x00005C24
+ .word 0x00005C24, 0x00005C30
+ .word 0x00005C30, 0x00005C34
+ .word 0x00005C34, 0x00005C38
+ .word 0x00005C38, 0x00005C40
+ .word 0x00005C40, 0x00005C48
+ .word 0x00005C48, 0x00005C6C
+ .word 0x00005C6C, 0x00005C90
+ .word 0x00005C90, 0x00005C9C
+ .word 0x00005C9C, 0x00005CA0
+ .word 0x00005CA0, 0x00005CAC
+ .word 0x00005CAC, 0x00005CB4
+ .word 0x00005CB4, 0x00005CB8
+ .word 0x00005CB8, 0x00005CBC
+ .word 0x00005CBC, 0x00005CC0
+ .word 0x00005CC0, 0x00005CC4
+ .word 0x00005CC4, 0x00005CC8
+ .word 0x00005CC8, 0x00005D5C
+ .word 0x00005D5C, 0x00005DF0
+ .word 0x00005DF0, 0x00005DF4
+ .word 0x00005DF4, 0x00005DF8
+ .word 0x00005DF8, 0x00005DFC
+ .word 0x00005DFC, 0x00005E00
+ .word 0x00005E00, 0x00005E04
+ .word 0x00005E04, 0x00005E08
+ .word 0x00005E08, 0x00005E0C
+ .word 0x00005E0C, 0x00005E10
+ .word 0x00005E10, 0x00005E14
+ .word 0x00005E14, 0x00005E18
+ .word 0x00005E18, 0x00005E1C
+ .word 0x00005E1C, 0x00005E20
+ .word 0x00005E20, 0x00005E24
+ .word 0x00005E24, 0x00005E28
+ .word 0x00005E28, 0x00005E2C
+ .word 0x00005E2C, 0x00005E30
+ .word 0x00005E30, 0x00005E34
+ .word 0x00005E34, 0x00005E38
+ .word 0x00005E38, 0x00005E3C
+ .word 0x00005E3C, 0x00005E40
+ .word 0x00005E40, 0x00005E44
+ .word 0x00005E44, 0x00005E48
+ .word 0x00005E48, 0x00005E4C
+ .word 0x00005E4C, 0x00005E50
+ .word 0x00005E50, 0x00005E54
+ .word 0x00005E54, 0x00005E58
+ .word 0x00005E58, 0x00005E5C
+ .word 0x00005E5C, 0x00005E60
+ .word 0x00005E60, 0x00005E64
+ .word 0x00005E64, 0x00005E68
+ .word 0x00005E68, 0x00005E6C
+ .word 0x00005E6C, 0x00005E70
+ .word 0x00005E70, 0x00005E7C
+ .word 0x00005E7C, 0x00005E94
+ .word 0x00005E94, 0x00005E98
+ .word 0x00005E98, 0x00005E9C
+ .word 0x00005E9C, 0x00005EA0
+ .word 0x00005EA0, 0x00005EA8
+ .word 0x00005EA8, 0x00005EAC
+ .word 0x00005EAC, 0x00005EB4
+ .word 0x00005EB4, 0x00005EBC
+ .word 0x00005EBC, 0x00005EC0
+ .word 0x00005EC0, 0x00005EC4
+ .word 0x00005EC4, 0x00005EC8
+ .word 0x00005EC8, 0x00005ECC
+ .word 0x00005ECC, 0x00005ED0
+ .word 0x00005ED0, 0x00005ED4
+ .word 0x00005ED4, 0x00005ED8
+ .word 0x00005ED8, 0x00005EDC
+ .word 0x00005EDC, 0x00005EE0
+ .word 0x00005EE0, 0x00005EE4
+ .word 0x00005EE4, 0x00005EE8
+ .word 0x00005EE8, 0x00005EEC
+ .word 0x00005EEC, 0x00005EF0
+ .word 0x00005EF0, 0x00005EF4
+ .word 0x00005EF4, 0x00005EF8
+ .word 0x00005EF8, 0x00005EFC
+ .word 0x00005EFC, 0x00005F00
+ .word 0x00005F00, 0x00005F04
+ .word 0x00005F04, 0x00005F08
+ .word 0x00005F08, 0x00005F0C
+ .word 0x00005F0C, 0x00005F10
+ .word 0x00005F10, 0x00005F14
+ .word 0x00005F14, 0x00005F1C
+ .word 0x00005F1C, 0x00005F24
+ .word 0x00005F24, 0x00005F28
+ .word 0x00005F28, 0x00005F2C
+ .word 0x00005F2C, 0x00005F30
+ .word 0x00005F30, 0x00005F34
+ .word 0x00005F34, 0x00005F38
+ .word 0x00005F38, 0x00005F3C
+ .word 0x00005F3C, 0x00005F40
+ .word 0x00005F40, 0x00005F4C
+ .word 0x00005F4C, 0x00005F50
+ .word 0x00005F50, 0x00005F54
+ .word 0x00005F54, 0x00005F58
+ .word 0x00005F58, 0x00005F5C
+ .word 0x00005F5C, 0x00005F60
+ .word 0x00005F60, 0x00005F64
+ .word 0x00005F64, 0x00005F68
+ .word 0x00005F68, 0x00005F70
+ .word 0x00005F70, 0x00005F74
+ .word 0x00005F74, 0x00005F78
+ .word 0x00005F78, 0x00005F7C
+ .word 0x00005F7C, 0x00005F8C
+ .word 0x00005F8C, 0x00005F90
+ .word 0x00005F90, 0x00005F94
+ .word 0x00005F94, 0x00005F98
+ .word 0x00005F98, 0x00005F9C
+ .word 0x00005F9C, 0x00005FA0
+ .word 0x00005FA0, 0x00005FA4
+ .word 0x00005FA4, 0x00005FA8
+ .word 0x00005FA8, 0x00005FCC
+ .word 0x00005FCC, 0x00005FF0
+ .word 0x00005FF0, 0x00005FF4
+ .word 0x00005FF4, 0x00005FF8
+ .word 0x00005FF8, 0x00006004
+ .word 0x00006004, 0x00006008
+ .word 0x00006008, 0x0000600C
+ .word 0x0000600C, 0x00006010
+ .word 0x00006010, 0x00006014
+ .word 0x00006014, 0x00006018
+ .word 0x00006018, 0x0000601C
+ .word 0x0000601C, 0x00006020
+ .word 0x00006020, 0x00006024
+ .word 0x00006024, 0x00006028
+ .word 0x00006028, 0x0000602C
+ .word 0x0000602C, 0x00006030
+ .word 0x00006030, 0x00006034
+ .word 0x00006034, 0x00006038
+ .word 0x00006038, 0x0000603C
+ .word 0x0000603C, 0x00006040
+ .word 0x00006040, 0x00006044
+ .word 0x00006044, 0x00006048
+ .word 0x00006048, 0x0000604C
+ .word 0x0000604C, 0x00006050
+ .word 0x00006050, 0x00006054
+ .word 0x00006054, 0x00006058
+ .word 0x00006058, 0x0000605C
+ .word 0x0000605C, 0x00006060
+ .word 0x00006060, 0x00006064
+ .word 0x00006064, 0x00006068
+ .word 0x00006068, 0x0000606C
+ .word 0x0000606C, 0x00006070
+ .word 0x00006070, 0x00006074
+ .word 0x00006074, 0x00006078
+ .word 0x00006078, 0x0000607C
+ .word 0x0000607C, 0x00006080
+ .word 0x00006080, 0x00006084
+ .word 0x00006084, 0x00006088
+ .word 0x00006088, 0x0000608C
+ .word 0x0000608C, 0x00006090
+ .word 0x00006090, 0x00006094
+ .word 0x00006094, 0x00006098
+ .word 0x00006098, 0x0000609C
+ .word 0x0000609C, 0x000060A0
+ .word 0x000060A0, 0x000060AC
+ .word 0x000060AC, 0x000060B0
+ .word 0x000060B0, 0x000060B4
+ .word 0x000060B4, 0x000060B8
+ .word 0x000060B8, 0x000060BC
+ .word 0x000060BC, 0x000060C0
+ .word 0x000060C0, 0x000060C4
+ .word 0x000060C4, 0x000060C8
+ .word 0x000060C8, 0x000060CC
+ .word 0x000060CC, 0x000060D0
+ .word 0x000060D0, 0x000060D4
+ .word 0x000060D4, 0x0000610C
+ .word 0x0000610C, 0x0000615C
+ .word 0x0000615C, 0x00006160
+ .word 0x00006160, 0x00006164
+ .word 0x00006164, 0x00006168
+ .word 0x00006168, 0x0000616C
+ .word 0x0000616C, 0x00006170
+ .word 0x00006170, 0x00006174
+ .word 0x00006174, 0x00006178
+ .word 0x00006178, 0x0000617C
+ .word 0x0000617C, 0x00006180
+ .word 0x00006180, 0x00006184
+ .word 0x00006184, 0x00006188
+ .word 0x00006188, 0x0000618C
+ .word 0x0000618C, 0x00006190
+ .word 0x00006190, 0x00006194
+ .word 0x00006194, 0x00006198
+ .word 0x00006198, 0x0000619C
+ .word 0x0000619C, 0x000061A0
+ .word 0x000061A0, 0x000061A4
+ .word 0x000061A4, 0x000061A8
+ .word 0x000061A8, 0x000061AC
+ .word 0x000061AC, 0x000061B0
+ .word 0x000061B0, 0x000061B4
+ .word 0x000061B4, 0x000061B8
+ .word 0x000061B8, 0x000061BC
+ .word 0x000061BC, 0x000061C0
+ .word 0x000061C0, 0x000061C4
+ .word 0x000061C4, 0x000061C8
+ .word 0x000061C8, 0x000061E0
+ .word 0x000061E0, 0x000061EC
+ .word 0x000061EC, 0x000061F0
+ .word 0x000061F0, 0x000061F4
+ .word 0x000061F4, 0x000061F8
+ .word 0x000061F8, 0x000061FC
+ .word 0x000061FC, 0x00006204
+ .word 0x00006204, 0x0000620C
+ .word 0x0000620C, 0x00006228
+ .word 0x00006228, 0x0000622C
+ .word 0x0000622C, 0x00006230
+ .word 0x00006230, 0x00006234
+ .word 0x00006234, 0x00006240
+ .word 0x00006240, 0x0000624C
+ .word 0x0000624C, 0x00006258
+ .word 0x00006258, 0x00006264
+ .word 0x00006264, 0x00006270
+ .word 0x00006270, 0x00006274
+ .word 0x00006274, 0x00006278
+ .word 0x00006278, 0x0000627C
+ .word 0x0000627C, 0x00006280
+ .word 0x00006280, 0x00006284
+ .word 0x00006284, 0x00006288
+ .word 0x00006288, 0x0000628C
+ .word 0x0000628C, 0x00006294
+ .word 0x00006294, 0x0000629C
+ .word 0x0000629C, 0x000062A0
+ .word 0x000062A0, 0x000062A4
+ .word 0x000062A4, 0x000062A8
+ .word 0x000062A8, 0x000062AC
+ .word 0x000062AC, 0x000062B0
+ .word 0x000062B0, 0x000062B4
+ .word 0x000062B4, 0x000062D8
+ .word 0x000062D8, 0x000062FC
+ .word 0x000062FC, 0x00006304
+ .word 0x00006304, 0x0000630C
+ .word 0x0000630C, 0x00006310
+ .word 0x00006310, 0x00006314
+ .word 0x00006314, 0x00006318
+ .word 0x00006318, 0x0000631C
+ .word 0x0000631C, 0x00006320
+ .word 0x00006320, 0x00006324
+ .word 0x00006324, 0x00006328
+ .word 0x00006328, 0x0000632C
+ .word 0x0000632C, 0x00006330
+ .word 0x00006330, 0x00006334
+ .word 0x00006334, 0x00006338
+ .word 0x00006338, 0x0000634C
+ .word 0x0000634C, 0x00006350
+ .word 0x00006350, 0x00006354
+ .word 0x00006354, 0x00006358
+ .word 0x00006358, 0x0000635C
+ .word 0x0000635C, 0x00006360
+ .word 0x00006360, 0x00006364
+ .word 0x00006364, 0x00006368
+ .word 0x00006368, 0x0000636C
+ .word 0x0000636C, 0x00006370
+ .word 0x00006370, 0x00006374
+ .word 0x00006374, 0x00006378
+ .word 0x00006378, 0x00006384
+ .word 0x00006384, 0x00006388
+ .word 0x00006388, 0x0000638C
+ .word 0x0000638C, 0x00006394
+ .word 0x00006394, 0x000063A0
+ .word 0x000063A0, 0x000063A4
+ .word 0x000063A4, 0x000063A8
+ .word 0x000063A8, 0x000063AC
+ .word 0x000063AC, 0x000063B0
+ .word 0x000063B0, 0x000063B4
+ .word 0x000063B4, 0x000063B8
+ .word 0x000063B8, 0x000063BC
+ .word 0x000063BC, 0x000063C0
+ .word 0x000063C0, 0x000063C4
+ .word 0x000063C4, 0x000063C8
+ .word 0x000063C8, 0x000063CC
+ .word 0x000063CC, 0x000063D0
+ .word 0x000063D0, 0x000063D4
+ .word 0x000063D4, 0x000063D8
+ .word 0x000063D8, 0x000063DC
+ .word 0x000063DC, 0x000063E0
+ .word 0x000063E0, 0x000063E4
+ .word 0x000063E4, 0x000063E8
+ .word 0x000063E8, 0x000063EC
+ .word 0x000063EC, 0x000063F0
+ .word 0x000063F0, 0x000063F4
+ .word 0x000063F4, 0x000063F8
+ .word 0x000063F8, 0x000063FC
+ .word 0x000063FC, 0x00006400
+ .word 0x00006400, 0x00006404
+ .word 0x00006404, 0x00006424
+ .word 0x00006424, 0x00006434
+ .word 0x00006434, 0x00006438
+ .word 0x00006438, 0x00006464
+ .word 0x00006464, 0x0000647C
+ .word 0x0000647C, 0x00006494
+ .word 0x00006494, 0x000064B4
+ .word 0x000064B4, 0x000064CC
+ .word 0x000064CC, 0x000064D4
+ .word 0x000064D4, 0x000064D8
+ .word 0x000064D8, 0x000064E8
+ .word 0x000064E8, 0x000064EC
+ .word 0x000064EC, 0x000064F0
+ .word 0x000064F0, 0x000064F4
+ .word 0x000064F4, 0x000064F8
+ .word 0x000064F8, 0x000064FC
+ .word 0x000064FC, 0x00006500
+ .word 0x00006500, 0x00006504
+ .word 0x00006504, 0x00006508
+ .word 0x00006508, 0x0000650C
+ .word 0x0000650C, 0x00006510
+ .word 0x00006510, 0x00006524
+ .word 0x00006524, 0x0000653C
+ .word 0x0000653C, 0x0000655C
+ .word 0x0000655C, 0x00006560
+ .word 0x00006560, 0x00006564
+ .word 0x00006564, 0x00006588
+ .word 0x00006588, 0x000065A4
+ .word 0x000065A4, 0x000065A8
+ .word 0x000065A8, 0x000065AC
+ .word 0x000065AC, 0x000065B0
+ .word 0x000065B0, 0x000065B4
+ .word 0x000065B4, 0x000065B8
+ .word 0x000065B8, 0x000065BC
+ .word 0x000065BC, 0x000065C0
+ .word 0x000065C0, 0x000065C4
+ .word 0x000065C4, 0x000065C8
+ .word 0x000065C8, 0x000065D4
+ .word 0x000065D4, 0x000065E4
+ .word 0x000065E4, 0x000065F0
+ .word 0x000065F0, 0x000065F8
+ .word 0x000065F8, 0x000065FC
+ .word 0x000065FC, 0x00006600
+ .word 0x00006600, 0x0000660C
+ .word 0x0000660C, 0x00006610
+ .word 0x00006610, 0x00006614
+ .word 0x00006614, 0x00006618
+ .word 0x00006618, 0x0000661C
+ .word 0x0000661C, 0x00006620
+ .word 0x00006620, 0x00006624
+ .word 0x00006624, 0x00006628
+ .word 0x00006628, 0x0000662C
+ .word 0x0000662C, 0x00006630
+ .word 0x00006630, 0x00006634
+ .word 0x00006634, 0x0000663C
+ .word 0x0000663C, 0x00006640
+ .word 0x00006640, 0x00006644
+ .word 0x00006644, 0x00006648
+ .word 0x00006648, 0x0000664C
+ .word 0x0000664C, 0x00006650
+ .word 0x00006650, 0x00006678
+ .word 0x00006678, 0x000066A0
+ .word 0x000066A0, 0x000066AC
+ .word 0x000066AC, 0x000066BC
+ .word 0x000066BC, 0x000066C0
+ .word 0x000066C0, 0x000066C4
+ .word 0x000066C4, 0x000066C8
+ .word 0x000066C8, 0x000066CC
+ .word 0x000066CC, 0x000066D0
+ .word 0x000066D0, 0x000066D4
+ .word 0x000066D4, 0x000066D8
+ .word 0x000066D8, 0x000066DC
+ .word 0x000066DC, 0x000066E0
+ .word 0x000066E0, 0x000066E4
+ .word 0x000066E4, 0x000066E8
+ .word 0x000066E8, 0x000066EC
+ .word 0x000066EC, 0x000066F0
+ .word 0x000066F0, 0x000066F4
+ .word 0x000066F4, 0x000066F8
+ .word 0x000066F8, 0x000066FC
+ .word 0x000066FC, 0x00006700
+ .word 0x00006700, 0x00006704
+ .word 0x00006704, 0x00006708
+ .word 0x00006708, 0x0000670C
+ .word 0x0000670C, 0x00006710
+ .word 0x00006710, 0x00006714
+ .word 0x00006714, 0x00006718
+ .word 0x00006718, 0x0000671C
+ .word 0x0000671C, 0x00006720
+ .word 0x00006720, 0x00006724
+ .word 0x00006724, 0x00006728
+ .word 0x00006728, 0x0000672C
+ .word 0x0000672C, 0x00006730
+ .word 0x00006730, 0x00006734
+ .word 0x00006734, 0x00006738
+ .word 0x00006738, 0x0000673C
+ .word 0x0000673C, 0x00006740
+ .word 0x00006740, 0x00006744
+ .word 0x00006744, 0x00006748
+ .word 0x00006748, 0x00006810
+ .word 0x00006810, 0x00006814
+ .word 0x00006814, 0x00006818
+ .word 0x00006818, 0x0000681C
+ .word 0x0000681C, 0x00006820
+ .word 0x00006820, 0x00006824
+ .word 0x00006824, 0x00006828
+ .word 0x00006828, 0x0000682C
+ .word 0x0000682C, 0x00006830
+ .word 0x00006830, 0x00006834
+ .word 0x00006834, 0x00006838
+ .word 0x00006838, 0x0000683C
+ .word 0x0000683C, 0x00006840
+ .word 0x00006840, 0x00006844
+ .word 0x00006844, 0x00006848
+ .word 0x00006848, 0x0000684C
+ .word 0x0000684C, 0x00006850
+ .word 0x00006850, 0x00006854
+ .word 0x00006854, 0x00006858
+ .word 0x00006858, 0x0000685C
+ .word 0x0000685C, 0x00006860
+ .word 0x00006860, 0x00006864
+ .word 0x00006864, 0x00006868
+ .word 0x00006868, 0x0000686C
+ .word 0x0000686C, 0x00006870
+ .word 0x00006870, 0x00006874
+ .word 0x00006874, 0x00006878
+ .word 0x00006878, 0x0000687C
+ .word 0x0000687C, 0x00006880
+ .word 0x00006880, 0x00006884
+ .word 0x00006884, 0x00006888
+ .word 0x00006888, 0x0000688C
+ .word 0x0000688C, 0x00006890
+ .word 0x00006890, 0x00006894
+ .word 0x00006894, 0x00006898
+ .word 0x00006898, 0x0000689C
+ .word 0x0000689C, 0x000068A0
+ .word 0x000068A0, 0x000068A4
+ .word 0x000068A4, 0x000068A8
+ .word 0x000068A8, 0x000068AC
+ .word 0x000068AC, 0x000068B0
+ .word 0x000068B0, 0x000068B4
+ .word 0x000068B4, 0x000068B8
+ .word 0x000068B8, 0x000068BC
+ .word 0x000068BC, 0x000068C0
+ .word 0x000068C0, 0x000068C4
+ .word 0x000068C4, 0x000068C8
+ .word 0x000068C8, 0x000068CC
+ .word 0x000068CC, 0x000068D0
+ .word 0x000068D0, 0x000068D4
+ .word 0x000068D4, 0x000068D8
+ .word 0x000068D8, 0x000068DC
+ .word 0x000068DC, 0x000068E0
+ .word 0x000068E0, 0x000068E4
+ .word 0x000068E4, 0x000068E8
+ .word 0x000068E8, 0x000068EC
+ .word 0x000068EC, 0x000068F0
+ .word 0x000068F0, 0x000068F4
+ .word 0x000068F4, 0x000068F8
+ .word 0x000068F8, 0x000068FC
+ .word 0x000068FC, 0x00006900
+ .word 0x00006900, 0x00006904
+ .word 0x00006904, 0x00006908
+ .word 0x00006908, 0x0000690C
+ .word 0x0000690C, 0x00006910
+ .word 0x00006910, 0x00006914
+ .word 0x00006914, 0x00006918
+ .word 0x00006918, 0x0000691C
+ .word 0x0000691C, 0x00006920
+ .word 0x00006920, 0x00006924
+ .word 0x00006924, 0x00006928
+ .word 0x00006928, 0x0000692C
+ .word 0x0000692C, 0x00006930
+ .word 0x00006930, 0x00006934
+ .word 0x00006934, 0x00006938
+ .word 0x00006938, 0x0000693C
+ .word 0x0000693C, 0x00006940
+ .word 0x00006940, 0x00006944
+ .word 0x00006944, 0x00006948
+ .word 0x00006948, 0x0000694C
+ .word 0x0000694C, 0x00006950
+ .word 0x00006950, 0x00006954
+ .word 0x00006954, 0x00006958
+ .word 0x00006958, 0x0000695C
+ .word 0x0000695C, 0x00006960
+ .word 0x00006960, 0x00006964
+ .word 0x00006964, 0x00006968
+ .word 0x00006968, 0x0000696C
+ .word 0x0000696C, 0x00006970
+ .word 0x00006970, 0x00006974
+ .word 0x00006974, 0x00006978
+ .word 0x00006978, 0x0000697C
+ .word 0x0000697C, 0x00006980
+ .word 0x00006980, 0x00006984
+ .word 0x00006984, 0x00006988
+ .word 0x00006988, 0x0000698C
+ .word 0x0000698C, 0x00006990
+ .word 0x00006990, 0x00006994
+ .word 0x00006994, 0x00006998
+ .word 0x00006998, 0x0000699C
+ .word 0x0000699C, 0x000069A0
+ .word 0x000069A0, 0x000069A4
+ .word 0x000069A4, 0x000069A8
+ .word 0x000069A8, 0x000069AC
+ .word 0x000069AC, 0x000069B0
+ .word 0x000069B0, 0x000069B4
+ .word 0x000069B4, 0x000069B8
+ .word 0x000069B8, 0x000069BC
+ .word 0x000069BC, 0x000069C0
+ .word 0x000069C0, 0x000069C4
+ .word 0x000069C4, 0x000069C8
+ .word 0x000069C8, 0x000069CC
+ .word 0x000069CC, 0x000069D0
+ .word 0x000069D0, 0x000069D4
+ .word 0x000069D4, 0x000069D8
+ .word 0x000069D8, 0x000069DC
+ .word 0x000069DC, 0x000069E0
+ .word 0x000069E0, 0x000069E4
+ .word 0x000069E4, 0x000069E8
+ .word 0x000069E8, 0x000069EC
+ .word 0x000069EC, 0x000069F0
+ .word 0x000069F0, 0x000069F4
+ .word 0x000069F4, 0x000069F8
+ .word 0x000069F8, 0x000069FC
+ .word 0x000069FC, 0x00006A00
+ .word 0x00006A00, 0x00006A04
+ .word 0x00006A04, 0x00006A08
+ .word 0x00006A08, 0x00006A0C
+ .word 0x00006A0C, 0x00006A10
+ .word 0x00006A10, 0x00006A14
+ .word 0x00006A14, 0x00006A18
+ .word 0x00006A18, 0x00006A1C
+ .word 0x00006A1C, 0x00006A20
+ .word 0x00006A20, 0x00006A24
+ .word 0x00006A24, 0x00006A28
+ .word 0x00006A28, 0x00006A2C
+ .word 0x00006A2C, 0x00006A30
+ .word 0x00006A30, 0x00006A34
+ .word 0x00006A34, 0x00006A38
+ .word 0x00006A38, 0x00006A3C
+ .word 0x00006A3C, 0x00006A40
+ .word 0x00006A40, 0x00006A44
+ .word 0x00006A44, 0x00006A48
+ .word 0x00006A48, 0x00006A4C
+ .word 0x00006A4C, 0x00006A50
+ .word 0x00006A50, 0x00006A54
+ .word 0x00006A54, 0x00006A58
+ .word 0x00006A58, 0x00006A5C
+ .word 0x00006A5C, 0x00006A60
+ .word 0x00006A60, 0x00006A64
+ .word 0x00006A64, 0x00006A68
+ .word 0x00006A68, 0x00006A6C
+ .word 0x00006A6C, 0x00006A70
+ .word 0x00006A70, 0x00006A74
+ .word 0x00006A74, 0x00006A78
+ .word 0x00006A78, 0x00006A7C
+ .word 0x00006A7C, 0x00006A80
+ .word 0x00006A80, 0x00006A84
+ .word 0x00006A84, 0x00006A88
+ .word 0x00006A88, 0x00006A8C
+ .word 0x00006A8C, 0x00006A90
+ .word 0x00006A90, 0x00006A94
+ .word 0x00006A94, 0x00006A98
+ .word 0x00006A98, 0x00006A9C
+ .word 0x00006A9C, 0x00006AA0
+ .word 0x00006AA0, 0x00006AA4
+ .word 0x00006AA4, 0x00006AA8
+ .word 0x00006AA8, 0x00006AAC
+ .word 0x00006AAC, 0x00006AB0
+ .word 0x00006AB0, 0x00006AB4
+ .word 0x00006AB4, 0x00006AB8
+ .word 0x00006AB8, 0x00006ABC
+ .word 0x00006ABC, 0x00006AC0
+ .word 0x00006AC0, 0x00006AC4
+ .word 0x00006AC4, 0x00006AC8
+ .word 0x00006AC8, 0x00006ACC
+ .word 0x00006ACC, 0x00006AD0
+ .word 0x00006AD0, 0x00006AD4
+ .word 0x00006AD4, 0x00006AD8
+ .word 0x00006AD8, 0x00006ADC
+ .word 0x00006ADC, 0x00006AE0
+ .word 0x00006AE0, 0x00006AE4
+ .word 0x00006AE4, 0x00006AE8
+ .word 0x00006AE8, 0x00006AEC
+ .word 0x00006AEC, 0x00006AF0
+ .word 0x00006AF0, 0x00006AF4
+ .word 0x00006AF4, 0x00006AF8
+ .word 0x00006AF8, 0x00006AFC
+ .word 0x00006AFC, 0x00006B00
+ .word 0x00006B00, 0x00006B04
+ .word 0x00006B04, 0x00006B58
+ .word 0x00006B58, 0x00006B5C
+ .word 0x00006B5C, 0x00006B60
+ .word 0x00006B60, 0x00006B64
+ .word 0x00006B64, 0x00006B68
+ .word 0x00006B68, 0x00006B6C
+ .word 0x00006B6C, 0x00006B70
+ .word 0x00006B70, 0x00006B74
+ .word 0x00006B74, 0x00006B78
+ .word 0x00006B78, 0x00006B7C
+ .word 0x00006B7C, 0x00006B80
+ .word 0x00006B80, 0x00006B84
+ .word 0x00006B84, 0x00006B88
+ .word 0x00006B88, 0x00006B8C
+ .word 0x00006B8C, 0x00006B90
+ .word 0x00006B90, 0x00006B94
+ .word 0x00006B94, 0x00006B98
+ .word 0x00006B98, 0x00006B9C
+ .word 0x00006B9C, 0x00006BA0
+ .word 0x00006BA0, 0x00006BA4
+ .word 0x00006BA4, 0x00006BA8
+ .word 0x00006BA8, 0x00006BAC
+ .word 0x00006BAC, 0x00006BB0
+ .word 0x00006BB0, 0x00006BB4
+ .word 0x00006BB4, 0x00006C08
+ .word 0x00006C08, 0x00006C0C
+ .word 0x00006C0C, 0x00006C10
+ .word 0x00006C10, 0x00006C14
+ .word 0x00006C14, 0x00006C18
+ .word 0x00006C18, 0x00006C1C
+ .word 0x00006C1C, 0x00006C20
+ .word 0x00006C20, 0x00006C24
+ .word 0x00006C24, 0x00006C28
+ .word 0x00006C28, 0x00006C2C
+ .word 0x00006C2C, 0x00006C30
+ .word 0x00006C30, 0x00006C34
+ .word 0x00006C34, 0x00006C38
+ .word 0x00006C38, 0x00006C3C
+ .word 0x00006C3C, 0x00006C40
+ .word 0x00006C40, 0x00006C44
+ .word 0x00006C44, 0x00006C48
+ .word 0x00006C48, 0x00006C4C
+ .word 0x00006C4C, 0x00006C50
+ .word 0x00006C50, 0x00006C54
+ .word 0x00006C54, 0x00006C58
+ .word 0x00006C58, 0x00006C5C
+ .word 0x00006C5C, 0x00006C60
+ .word 0x00006C60, 0x00006C64
+ .word 0x00006C64, 0x00006C68
+ .word 0x00006C68, 0x00006C6C
+ .word 0x00006C6C, 0x00006C70
+ .word 0x00006C70, 0x00006C74
+ .word 0x00006C74, 0x00006C78
+ .word 0x00006C78, 0x00006C7C
+ .word 0x00006C7C, 0x00006C80
+ .word 0x00006C80, 0x00006C84
+ .word 0x00006C84, 0x00006C88
+ .word 0x00006C88, 0x00006C8C
+ .word 0x00006C8C, 0x00006C90
+ .word 0x00006C90, 0x00006C94
+ .word 0x00006C94, 0x00006C98
+ .word 0x00006C98, 0x00006C9C
+ .word 0x00006C9C, 0x00006CA0
+ .word 0x00006CA0, 0x00006CA4
+ .word 0x00006CA4, 0x00006CA8
+ .word 0x00006CA8, 0x00006CAC
+ .word 0x00006CAC, 0x00006CB0
+ .word 0x00006CB0, 0x00006CB4
+ .word 0x00006CB4, 0x00006CB8
+ .word 0x00006CB8, 0x00006CBC
+ .word 0x00006CBC, 0x00006CC0
+ .word 0x00006CC0, 0x00006CC4
+ .word 0x00006CC4, 0x00006CC8
+ .word 0x00006CC8, 0x00006CCC
+ .word 0x00006CCC, 0x00006CD0
+ .word 0x00006CD0, 0x00006D24
+ .word 0x00006D24, 0x00006D78
+ .word 0x00006D78, 0x00006D7C
+ .word 0x00006D7C, 0x00006D80
+ .word 0x00006D80, 0x00006D84
+ .word 0x00006D84, 0x00006D88
+ .word 0x00006D88, 0x00006D8C
+ .word 0x00006D8C, 0x00006D90
+ .word 0x00006D90, 0x00006D94
+ .word 0x00006D94, 0x00006D98
+ .word 0x00006D98, 0x00006D9C
+ .word 0x00006D9C, 0x00006DA0
+ .word 0x00006DA0, 0x00006DA4
+ .word 0x00006DA4, 0x00006DA8
+ .word 0x00006DA8, 0x00006DAC
+ .word 0x00006DAC, 0x00006DB0
+ .word 0x00006DB0, 0x00006DB4
+ .word 0x00006DB4, 0x00006DB8
+ .word 0x00006DB8, 0x00006DBC
+ .word 0x00006DBC, 0x00006DC0
+ .word 0x00006DC0, 0x00006DC4
+ .word 0x00006DC4, 0x00006DC8
+ .word 0x00006DC8, 0x00006DCC
+ .word 0x00006DCC, 0x00006DD0
+ .word 0x00006DD0, 0x00006DD4
+ .word 0x00006DD4, 0x00006DD8
+ .word 0x00006DD8, 0x00006DDC
+ .word 0x00006DDC, 0x00006DE0
+ .word 0x00006DE0, 0x00006DE4
+ .word 0x00006DE4, 0x00006DE8
+ .word 0x00006DE8, 0x00006DEC
+ .word 0x00006DEC, 0x00006DF0
+ .word 0x00006DF0, 0x00006DF4
+ .word 0x00006DF4, 0x00006DF8
+ .word 0x00006DF8, 0x00006DFC
+ .word 0x00006DFC, 0x00006E00
+ .word 0x00006E00, 0x00006E04
+ .word 0x00006E04, 0x00006E08
+ .word 0x00006E08, 0x00006E0C
+ .word 0x00006E0C, 0x00006E10
+ .word 0x00006E10, 0x00006E14
+ .word 0x00006E14, 0x00006E18
+ .word 0x00006E18, 0x00006E1C
+ .word 0x00006E1C, 0x00006E20
+ .word 0x00006E20, 0x00006E24
+ .word 0x00006E24, 0x00006E28
+ .word 0x00006E28, 0x00006E2C
+ .word 0x00006E2C, 0x00006E30
+ .word 0x00006E30, 0x00006E34
+ .word 0x00006E34, 0x00006E38
+ .word 0x00006E38, 0x00006E3C
+ .word 0x00006E3C, 0x00006E40
+ .word 0x00006E40, 0x00006E44
+ .word 0x00006E44, 0x00006E48
+ .word 0x00006E48, 0x00006E4C
+ .word 0x00006E4C, 0x00006E50
+ .word 0x00006E50, 0x00006E54
+ .word 0x00006E54, 0x00006E58
+ .word 0x00006E58, 0x00006E5C
+ .word 0x00006E5C, 0x00006E60
+ .word 0x00006E60, 0x00006E64
+ .word 0x00006E64, 0x00006E68
+ .word 0x00006E68, 0x00006E6C
+ .word 0x00006E6C, 0x00006E70
+ .word 0x00006E70, 0x00006E74
+ .word 0x00006E74, 0x00006E78
+ .word 0x00006E78, 0x00006E7C
+ .word 0x00006E7C, 0x00006E80
+ .word 0x00006E80, 0x00006E84
+ .word 0x00006E84, 0x00006E88
+ .word 0x00006E88, 0x00006E8C
+ .word 0x00006E8C, 0x00006E90
+ .word 0x00006E90, 0x00006E94
+ .word 0x00006E94, 0x00006E98
+ .word 0x00006E98, 0x00006E9C
+ .word 0x00006E9C, 0x00006EA0
+ .word 0x00006EA0, 0x00006EA4
+ .word 0x00006EA4, 0x00006EA8
+ .word 0x00006EA8, 0x00006EAC
+ .word 0x00006EAC, 0x00006EB0
+ .word 0x00006EB0, 0x00006EB4
+ .word 0x00006EB4, 0x00006EB8
+ .word 0x00006EB8, 0x00006EBC
+ .word 0x00006EBC, 0x00006EC0
+ .word 0x00006EC0, 0x00006EC4
+ .word 0x00006EC4, 0x00006EC8
+ .word 0x00006EC8, 0x00006ECC
+ .word 0x00006ECC, 0x00006ED0
+ .word 0x00006ED0, 0x00006ED4
+ .word 0x00006ED4, 0x00006ED8
+ .word 0x00006ED8, 0x00006EDC
+ .word 0x00006EDC, 0x00006EE0
+ .word 0x00006EE0, 0x00006EE4
+ .word 0x00006EE4, 0x00006EE8
+ .word 0x00006EE8, 0x00006EEC
+ .word 0x00006EEC, 0x00006EF0
+ .word 0x00006EF0, 0x00006EF4
+ .word 0x00006EF4, 0x00006EF8
+ .word 0x00006EF8, 0x00006EFC
+ .word 0x00006EFC, 0x00006F00
+ .word 0x00006F00, 0x00006F04
+ .word 0x00006F04, 0x00006F08
+ .word 0x00006F08, 0x00006F0C
+ .word 0x00006F0C, 0x00006F10
+ .word 0x00006F10, 0x00006F14
+ .word 0x00006F14, 0x00006F18
+ .word 0x00006F18, 0x00006F1C
+ .word 0x00006F1C, 0x00006F20
+ .word 0x00006F20, 0x00006F24
+ .word 0x00006F24, 0x00006F28
+ .word 0x00006F28, 0x00006F2C
+ .word 0x00006F2C, 0x00006F30
+ .word 0x00006F30, 0x00006F34
+ .word 0x00006F34, 0x00006F38
+ .word 0x00006F38, 0x00006F3C
+ .word 0x00006F3C, 0x00006F40
+ .word 0x00006F40, 0x00006F44
+ .word 0x00006F44, 0x00006F48
+ .word 0x00006F48, 0x00006F4C
+ .word 0x00006F4C, 0x00006F50
+ .word 0x00006F50, 0x00006F54
+ .word 0x00006F54, 0x00006F58
+ .word 0x00006F58, 0x00006F5C
+ .word 0x00006F5C, 0x00006F60
+ .word 0x00006F60, 0x00006F64
+ .word 0x00006F64, 0x00006F68
+ .word 0x00006F68, 0x00006F6C
+ .word 0x00006F6C, 0x00006F70
+ .word 0x00006F70, 0x00006F74
+ .word 0x00006F74, 0x00006F78
+ .word 0x00006F78, 0x00006F7C
+ .word 0x00006F7C, 0x00006F80
+ .word 0x00006F80, 0x00006F84
+ .word 0x00006F84, 0x00006F88
+ .word 0x00006F88, 0x00006F8C
+ .word 0x00006F8C, 0x00006F90
+ .word 0x00006F90, 0x00006F94
+ .word 0x00006F94, 0x00006F98
+ .word 0x00006F98, 0x00006F9C
+ .word 0x00006F9C, 0x00006FA0
+ .word 0x00006FA0, 0x00006FA4
+ .word 0x00006FA4, 0x00006FA8
+ .word 0x00006FA8, 0x00006FAC
+ .word 0x00006FAC, 0x00006FB0
+ .word 0x00006FB0, 0x00006FB4
+ .word 0x00006FB4, 0x00006FB8
+ .word 0x00006FB8, 0x00006FBC
+ .word 0x00006FBC, 0x00007010
+ .word 0x00007010, 0x00007014
+ .word 0x00007014, 0x00007018
+ .word 0x00007018, 0x0000706C
+ .word 0x0000706C, 0x00007070
+ .word 0x00007070, 0x00007074
+ .word 0x00007074, 0x00007078
+ .word 0x00007078, 0x0000707C
+ .word 0x0000707C, 0x000070D0
+ .word 0x000070D0, 0x000070D4
+ .word 0x000070D4, 0x000070D8
+ .word 0x000070D8, 0x000070DC
+ .word 0x000070DC, 0x000070E0
+ .word 0x000070E0, 0x000070E4
+ .word 0x000070E4, 0x000070E8
+ .word 0x000070E8, 0x000070EC
+ .word 0x000070EC, 0x000070F0
+ .word 0x000070F0, 0x000070F4
+ .word 0x000070F4, 0x000070F8
+ .word 0x000070F8, 0x000070FC
+ .word 0x000070FC, 0x00007100
+ .word 0x00007100, 0x00007104
+ .word 0x00007104, 0x00007108
+ .word 0x00007108, 0x0000710C
+ .word 0x0000710C, 0x00007110
+ .word 0x00007110, 0x00007114
+ .word 0x00007114, 0x00007118
+ .word 0x00007118, 0x0000711C
+ .word 0x0000711C, 0x00007120
+ .word 0x00007120, 0x00007124
+ .word 0x00007124, 0x00007128
+ .word 0x00007128, 0x0000712C
+ .word 0x0000712C, 0x00007130
+ .word 0x00007130, 0x00007134
+ .word 0x00007134, 0x00007138
+ .word 0x00007138, 0x0000713C
+ .word 0x0000713C, 0x00007140
+ .word 0x00007140, 0x00007144
+ .word 0x00007144, 0x00007148
+ .word 0x00007148, 0x0000714C
+ .word 0x0000714C, 0x00007150
+ .word 0x00007150, 0x00007154
+ .word 0x00007154, 0x00007158
+ .word 0x00007158, 0x0000715C
+ .word 0x0000715C, 0x00007160
+ .word 0x00007160, 0x00007164
+ .word 0x00007164, 0x00007168
+ .word 0x00007168, 0x0000716C
+ .word 0x0000716C, 0x00007170
+ .word 0x00007170, 0x00007174
+ .word 0x00007174, 0x00007178
+ .word 0x00007178, 0x0000717C
+ .word 0x0000717C, 0x00007180
+ .word 0x00007180, 0x00007184
+ .word 0x00007184, 0x00007188
+ .word 0x00007188, 0x0000718C
+ .word 0x0000718C, 0x00007190
+ .word 0x00007190, 0x00007194
+ .word 0x00007194, 0x00007198
+ .word 0x00007198, 0x0000719C
+ .word 0x0000719C, 0x000071A0
+ .word 0x000071A0, 0x000071A4
+ .word 0x000071A4, 0x000071A8
+ .word 0x000071A8, 0x000071AC
+ .word 0x000071AC, 0x000071B0
+ .word 0x000071B0, 0x000071B4
+ .word 0x000071B4, 0x000071B8
+ .word 0x000071B8, 0x000071BC
+ .word 0x000071BC, 0x000071C0
+ .word 0x000071C0, 0x000071C4
+ .word 0x000071C4, 0x000071C8
+ .word 0x000071C8, 0x000071CC
+ .word 0x000071CC, 0x000071D0
+ .word 0x000071D0, 0x000071D4
+ .word 0x000071D4, 0x000071D8
+ .word 0x000071D8, 0x000071DC
+ .word 0x000071DC, 0x000071E0
+ .word 0x000071E0, 0x000071E4
+ .word 0x000071E4, 0x000071E8
+ .word 0x000071E8, 0x000071EC
+ .word 0x000071EC, 0x000071F0
+ .word 0x000071F0, 0x000071F4
+ .word 0x000071F4, 0x000071F8
+ .word 0x000071F8, 0x0000722C
+ .word 0x0000722C, 0x00007230
+ .word 0x00007230, 0x00007234
+ .word 0x00007234, 0x00007238
+ .word 0x00007238, 0x0000723C
+ .word 0x0000723C, 0x00007240
+ .word 0x00007240, 0x00007244
+ .word 0x00007244, 0x00007248
+ .word 0x00007248, 0x0000724C
+ .word 0x0000724C, 0x00007250
+ .word 0x00007250, 0x00007254
+ .word 0x00007254, 0x00007258
+ .word 0x00007258, 0x0000725C
+ .word 0x0000725C, 0x00007260
+ .word 0x00007260, 0x00007264
+ .word 0x00007264, 0x00007268
+ .word 0x00007268, 0x0000726C
+ .word 0x0000726C, 0x00007270
+ .word 0x00007270, 0x00007274
+ .word 0x00007274, 0x00007278
+ .word 0x00007278, 0x0000727C
+ .word 0x0000727C, 0x00007280
+ .word 0x00007280, 0x00007284
+ .word 0x00007284, 0x00007288
+ .word 0x00007288, 0x0000728C
+ .word 0x0000728C, 0x00007290
+ .word 0x00007290, 0x00007294
+ .word 0x00007294, 0x00007298
+ .word 0x00007298, 0x0000729C
+ .word 0x0000729C, 0x000072A4
+ .word 0x000072A4, 0x000072B0
+ .word 0x000072B0, 0x000072B4
+ .word 0x000072B4, 0x000072BC
+ .word 0x000072BC, 0x000072C8
+ .word 0x000072C8, 0x000072CC
+ .word 0x000072CC, 0x000072D0
+ .word 0x000072D0, 0x000072D4
+ .word 0x000072D4, 0x000072D8
+ .word 0x000072D8, 0x000072DC
+ .word 0x000072DC, 0x000072E0
+ .word 0x000072E0, 0x000072E4
+ .word 0x000072E4, 0x000072E8
+ .word 0x000072E8, 0x000072EC
+ .word 0x000072EC, 0x000072F0
+ .word 0x000072F0, 0x000072F4
+ .word 0x000072F4, 0x000072F8
+ .word 0x000072F8, 0x000072FC
+ .word 0x000072FC, 0x00007300
+ .word 0x00007300, 0x00007308
+ .word 0x00007308, 0x00007310
+ .word 0x00007310, 0x00007314
+ .word 0x00007314, 0x00007318
+ .word 0x00007318, 0x0000731C
+ .word 0x0000731C, 0x00007320
+ .word 0x00007320, 0x00007324
+ .word 0x00007324, 0x00007328
+ .word 0x00007328, 0x00007334
+ .word 0x00007334, 0x00007340
+ .word 0x00007340, 0x00007344
+ .word 0x00007344, 0x00007348
+ .word 0x00007348, 0x0000734C
+ .word 0x0000734C, 0x00007350
+ .word 0x00007350, 0x00007354
+ .word 0x00007354, 0x00007358
+ .word 0x00007358, 0x0000735C
+ .word 0x0000735C, 0x00007360
+ .word 0x00007360, 0x00007364
+ .word 0x00007364, 0x00007368
+ .word 0x00007368, 0x0000736C
+ .word 0x0000736C, 0x00007370
+ .word 0x00007370, 0x00007374
+ .word 0x00007374, 0x00007378
+ .word 0x00007378, 0x0000737C
+ .word 0x0000737C, 0x00007380
+ .word 0x00007380, 0x00007384
+ .word 0x00007384, 0x00007388
+ .word 0x00007388, 0x0000738C
+ .word 0x0000738C, 0x00007390
+ .word 0x00007390, 0x00007394
+ .word 0x00007394, 0x00007398
+ .word 0x00007398, 0x0000739C
+ .word 0x0000739C, 0x000073A0
+ .word 0x000073A0, 0x000073A4
+ .word 0x000073A4, 0x000073A8
+ .word 0x000073A8, 0x000073AC
+ .word 0x000073AC, 0x000073B0
+ .word 0x000073B0, 0x000073B4
+ .word 0x000073B4, 0x000073B8
+ .word 0x000073B8, 0x000073C0
+ .word 0x000073C0, 0x000073C4
+ .word 0x000073C4, 0x000073C8
+ .word 0x000073C8, 0x000073CC
+ .word 0x000073CC, 0x000073D0
+ .word 0x000073D0, 0x000073D4
+ .word 0x000073D4, 0x000073D8
+ .word 0x000073D8, 0x000073DC
+ .word 0x000073DC, 0x000073E0
+ .word 0x000073E0, 0x000073E4
+ .word 0x000073E4, 0x000073E8
+ .word 0x000073E8, 0x000073EC
+ .word 0x000073EC, 0x000073F0
+ .word 0x000073F0, 0x000073F4
+ .word 0x000073F4, 0x000073F8
+ .word 0x000073F8, 0x000073FC
+ .word 0x000073FC, 0x00007400
+ .word 0x00007400, 0x00007404
+ .word 0x00007404, 0x00007408
+ .word 0x00007408, 0x0000740C
+ .word 0x0000740C, 0x00007410
+ .word 0x00007410, 0x00007414
+ .word 0x00007414, 0x00007418
+ .word 0x00007418, 0x0000741C
+ .word 0x0000741C, 0x00007420
+ .word 0x00007420, 0x00007424
+ .word 0x00007424, 0x00007428
+ .word 0x00007428, 0x0000742C
+ .word 0x0000742C, 0x00007430
+ .word 0x00007430, 0x00007434
+ .word 0x00007434, 0x00007438
+ .word 0x00007438, 0x0000743C
+ .word 0x0000743C, 0x00007440
+ .word 0x00007440, 0x00007444
+ .word 0x00007444, 0x00007448
+ .word 0x00007448, 0x0000744C
+ .word 0x0000744C, 0x00007450
+ .word 0x00007450, 0x00007454
+ .word 0x00007454, 0x00007458
+ .word 0x00007458, 0x0000745C
+ .word 0x0000745C, 0x00007468
+ .word 0x00007468, 0x0000746C
+ .word 0x0000746C, 0x00007470
+ .word 0x00007470, 0x00007474
+ .word 0x00007474, 0x0000747C
+ .word 0x0000747C, 0x00007480
+ .word 0x00007480, 0x00007484
+ .word 0x00007484, 0x00007488
+ .word 0x00007488, 0x0000748C
+ .word 0x0000748C, 0x00007490
+ .word 0x00007490, 0x00007494
+ .word 0x00007494, 0x00007498
+ .word 0x00007498, 0x0000749C
+ .word 0x0000749C, 0x000074A0
+ .word 0x000074A0, 0x000074A4
+ .word 0x000074A4, 0x000074A8
+ .word 0x000074A8, 0x000074AC
+ .word 0x000074AC, 0x000074B0
+ .word 0x000074B0, 0x000074B4
+ .word 0x000074B4, 0x000074B8
+ .word 0x000074B8, 0x000074BC
+ .word 0x000074BC, 0x000074C0
+ .word 0x000074C0, 0x000074C4
+ .word 0x000074C4, 0x000074C8
+ .word 0x000074C8, 0x000074CC
+ .word 0x000074CC, 0x000074D0
+ .word 0x000074D0, 0x000074D4
+ .word 0x000074D4, 0x000074D8
+ .word 0x000074D8, 0x000074DC
+ .word 0x000074DC, 0x000074E0
+ .word 0x000074E0, 0x000074E4
+ .word 0x000074E4, 0x000074E8
+ .word 0x000074E8, 0x000074EC
+ .word 0x000074EC, 0x000074F4
+ .word 0x000074F4, 0x000074F8
+ .word 0x000074F8, 0x000074FC
+ .word 0x000074FC, 0x00007500
+ .word 0x00007500, 0x00007504
+ .word 0x00007504, 0x00007508
+ .word 0x00007508, 0x0000750C
+ .word 0x0000750C, 0x00007510
+ .word 0x00007510, 0x00007514
+ .word 0x00007514, 0x00007518
+ .word 0x00007518, 0x0000751C
+ .word 0x0000751C, 0x00007520
+ .word 0x00007520, 0x00007524
+ .word 0x00007524, 0x00007528
+ .word 0x00007528, 0x00007530
+ .word 0x00007530, 0x00007534
+ .word 0x00007534, 0x00007538
+ .word 0x00007538, 0x0000753C
+ .word 0x0000753C, 0x00007544
+ .word 0x00007544, 0x0000754C
+ .word 0x0000754C, 0x00007550
+ .word 0x00007550, 0x00007554
+ .word 0x00007554, 0x00007558
+ .word 0x00007558, 0x0000755C
+ .word 0x0000755C, 0x00007560
+ .word 0x00007560, 0x00007564
+ .word 0x00007564, 0x00007570
+ .word 0x00007570, 0x00007578
+ .word 0x00007578, 0x0000757C
+ .word 0x0000757C, 0x000075D0
+ .word 0x000075D0, 0x000075D8
+ .word 0x000075D8, 0x000075DC
+ .word 0x000075DC, 0x000075E0
+ .word 0x000075E0, 0x000075E4
+ .word 0x000075E4, 0x000075E8
+ .word 0x000075E8, 0x000075EC
+ .word 0x000075EC, 0x000075F0
+ .word 0x000075F0, 0x000075F4
+ .word 0x000075F4, 0x000075F8
+ .word 0x000075F8, 0x000075FC
+ .word 0x000075FC, 0x00007600
+ .word 0x00007600, 0x00007604
+ .word 0x00007604, 0x00007608
+ .word 0x00007608, 0x0000760C
+ .word 0x0000760C, 0x00007610
+ .word 0x00007610, 0x00007614
+ .word 0x00007614, 0x00007618
+ .word 0x00007618, 0x0000761C
+ .word 0x0000761C, 0x00007620
+ .word 0x00007620, 0x00007624
+ .word 0x00007624, 0x00007628
+ .word 0x00007628, 0x0000762C
+ .word 0x0000762C, 0x00007630
+ .word 0x00007630, 0x00007684
+ .word 0x00007684, 0x00007688
+ .word 0x00007688, 0x0000768C
+ .word 0x0000768C, 0x00007690
+ .word 0x00007690, 0x00007694
+ .word 0x00007694, 0x00007698
+ .word 0x00007698, 0x0000769C
+ .word 0x0000769C, 0x000076A0
+ .word 0x000076A0, 0x000076A4
+ .word 0x000076A4, 0x000076A8
+ .word 0x000076A8, 0x000076AC
+ .word 0x000076AC, 0x000076B0
+ .word 0x000076B0, 0x000076B4
+ .word 0x000076B4, 0x000076B8
+ .word 0x000076B8, 0x000076BC
+ .word 0x000076BC, 0x000076C0
+ .word 0x000076C0, 0x000076C4
+ .word 0x000076C4, 0x000076C8
+ .word 0x000076C8, 0x000076CC
+ .word 0x000076CC, 0x000076D0
+ .word 0x000076D0, 0x000076D4
+ .word 0x000076D4, 0x000076DC
+ .word 0x000076DC, 0x000076E8
+ .word 0x000076E8, 0x000076EC
+ .word 0x000076EC, 0x000076F0
+ .word 0x000076F0, 0x000076F4
+ .word 0x000076F4, 0x000076F8
+ .word 0x000076F8, 0x00007704
+ .word 0x00007704, 0x00007708
+ .word 0x00007708, 0x0000770C
+ .word 0x0000770C, 0x00007710
+ .word 0x00007710, 0x00007714
+ .word 0x00007714, 0x0000771C
+ .word 0x0000771C, 0x00007720
+ .word 0x00007720, 0x00007724
+ .word 0x00007724, 0x00007728
+ .word 0x00007728, 0x0000772C
+ .word 0x0000772C, 0x00007730
+ .word 0x00007730, 0x00007734
+ .word 0x00007734, 0x00007738
+ .word 0x00007738, 0x0000773C
+ .word 0x0000773C, 0x00007740
+ .word 0x00007740, 0x00007744
+ .word 0x00007744, 0x00007748
+ .word 0x00007748, 0x0000774C
+ .word 0x0000774C, 0x00007750
+ .word 0x00007750, 0x00007754
+ .word 0x00007754, 0x00007758
+ .word 0x00007758, 0x00007764
+ .word 0x00007764, 0x00007768
+ .word 0x00007768, 0x0000776C
+ .word 0x0000776C, 0x000077C0
+ .word 0x000077C0, 0x00007814
+ .word 0x00007814, 0x00007818
+ .word 0x00007818, 0x0000781C
+ .word 0x0000781C, 0x00007820
+ .word 0x00007820, 0x00007824
+ .word 0x00007824, 0x00007828
+ .word 0x00007828, 0x0000782C
+ .word 0x0000782C, 0x00007830
+ .word 0x00007830, 0x00007834
+ .word 0x00007834, 0x00007838
+ .word 0x00007838, 0x0000783C
+ .word 0x0000783C, 0x00007844
+ .word 0x00007844, 0x00007848
+ .word 0x00007848, 0x0000784C
+ .word 0x0000784C, 0x00007858
+ .word 0x00007858, 0x00007864
+ .word 0x00007864, 0x00007868
+ .word 0x00007868, 0x0000786C
+ .word 0x0000786C, 0x00007870
+ .word 0x00007870, 0x00007874
+ .word 0x00007874, 0x00007878
+ .word 0x00007878, 0x0000787C
+ .word 0x0000787C, 0x00007880
+ .word 0x00007880, 0x00007884
+ .word 0x00007884, 0x00007888
+ .word 0x00007888, 0x0000788C
+ .word 0x0000788C, 0x00007890
+ .word 0x00007890, 0x00007894
+ .word 0x00007894, 0x00007898
+ .word 0x00007898, 0x0000789C
+ .word 0x0000789C, 0x000078A0
+ .word 0x000078A0, 0x000078A4
+ .word 0x000078A4, 0x000078A8
+ .word 0x000078A8, 0x000078AC
+ .word 0x000078AC, 0x000078B0
+ .word 0x000078B0, 0x000078B4
+ .word 0x000078B4, 0x000078B8
+ .word 0x000078B8, 0x000078BC
+ .word 0x000078BC, 0x000078C4
+ .word 0x000078C4, 0x000078C8
+ .word 0x000078C8, 0x000078CC
+ .word 0x000078CC, 0x000078D0
+ .word 0x000078D0, 0x000078D4
+ .word 0x000078D4, 0x000078D8
+ .word 0x000078D8, 0x000078DC
+ .word 0x000078DC, 0x000078E0
+ .word 0x000078E0, 0x000078E4
+ .word 0x000078E4, 0x000078E8
+ .word 0x000078E8, 0x000078EC
+ .word 0x000078EC, 0x000078F0
+ .word 0x000078F0, 0x000078F4
+ .word 0x000078F4, 0x000078F8
+ .word 0x000078F8, 0x000078FC
+ .word 0x000078FC, 0x00007900
+ .word 0x00007900, 0x00007904
+ .word 0x00007904, 0x00007908
+ .word 0x00007908, 0x0000790C
+ .word 0x0000790C, 0x00007910
+ .word 0x00007910, 0x0000791C
+ .word 0x0000791C, 0x00007920
+ .word 0x00007920, 0x00007924
+ .word 0x00007924, 0x00007928
+ .word 0x00007928, 0x00007930
+ .word 0x00007930, 0x00007938
+ .word 0x00007938, 0x0000793C
+ .word 0x0000793C, 0x00007940
+ .word 0x00007940, 0x00007944
+ .word 0x00007944, 0x0000794C
+ .word 0x0000794C, 0x00007950
+ .word 0x00007950, 0x00007954
+ .word 0x00007954, 0x00007958
+ .word 0x00007958, 0x0000795C
+ .word 0x0000795C, 0x00007960
+ .word 0x00007960, 0x00007964
+ .word 0x00007964, 0x00007968
+ .word 0x00007968, 0x0000796C
+ .word 0x0000796C, 0x00007970
+ .word 0x00007970, 0x00007978
+ .word 0x00007978, 0x0000797C
+ .word 0x0000797C, 0x00007980
+ .word 0x00007980, 0x00007984
+ .word 0x00007984, 0x00007988
+ .word 0x00007988, 0x0000798C
+ .word 0x0000798C, 0x00007990
+ .word 0x00007990, 0x00007994
+ .word 0x00007994, 0x00007998
+ .word 0x00007998, 0x000079A0
+ .word 0x000079A0, 0x000079A4
+ .word 0x000079A4, 0x000079A8
+ .word 0x000079A8, 0x000079B0
+ .word 0x000079B0, 0x000079B8
+ .word 0x000079B8, 0x000079BC
+ .word 0x000079BC, 0x000079C0
+ .word 0x000079C0, 0x000079C4
+ .word 0x000079C4, 0x000079C8
+ .word 0x000079C8, 0x000079D8
+ .word 0x000079D8, 0x000079DC
+ .word 0x000079DC, 0x000079E0
+ .word 0x000079E0, 0x000079E4
+ .word 0x000079E4, 0x000079E8
+ .word 0x000079E8, 0x000079EC
+ .word 0x000079EC, 0x000079F0
+ .word 0x000079F0, 0x000079F4
+ .word 0x000079F4, 0x000079F8
+ .word 0x000079F8, 0x000079FC
+ .word 0x000079FC, 0x00007A00
+ .word 0x00007A00, 0x00007A04
+ .word 0x00007A04, 0x00007A08
+ .word 0x00007A08, 0x00007A0C
+ .word 0x00007A0C, 0x00007A10
+ .word 0x00007A10, 0x00007A14
+ .word 0x00007A14, 0x00007A18
+ .word 0x00007A18, 0x00007A1C
+ .word 0x00007A1C, 0x00007A20
+ .word 0x00007A20, 0x00007A24
+ .word 0x00007A24, 0x00007A28
+ .word 0x00007A28, 0x00007A2C
+ .word 0x00007A2C, 0x00007A30
+ .word 0x00007A30, 0x00007A34
+ .word 0x00007A34, 0x00007A38
+ .word 0x00007A38, 0x00007A3C
+ .word 0x00007A3C, 0x00007A40
+ .word 0x00007A40, 0x00007A44
+ .word 0x00007A44, 0x00007A48
+ .word 0x00007A48, 0x00007A4C
+ .word 0x00007A4C, 0x00007A50
+ .word 0x00007A50, 0x00007A54
+ .word 0x00007A54, 0x00007A58
+ .word 0x00007A58, 0x00007A5C
+ .word 0x00007A5C, 0x00007A60
+ .word 0x00007A60, 0x00007A64
+ .word 0x00007A64, 0x00007A68
+ .word 0x00007A68, 0x00007A6C
+ .word 0x00007A6C, 0x00007A70
+ .word 0x00007A70, 0x00007A74
+ .word 0x00007A74, 0x00007A78
+ .word 0x00007A78, 0x00007A7C
+ .word 0x00007A7C, 0x00007A80
+ .word 0x00007A80, 0x00007A84
+ .word 0x00007A84, 0x00007A88
+ .word 0x00007A88, 0x00007A8C
+ .word 0x00007A8C, 0x00007A90
+ .word 0x00007A90, 0x00007A94
+ .word 0x00007A94, 0x00007A98
+ .word 0x00007A98, 0x00007A9C
+ .word 0x00007A9C, 0x00007AA0
+ .word 0x00007AA0, 0x00007AF4
+ .word 0x00007AF4, 0x00007AF8
+ .word 0x00007AF8, 0x00007AFC
+ .word 0x00007AFC, 0x00007B50
+ .word 0x00007B50, 0x00007B54
+ .word 0x00007B54, 0x00007B58
+ .word 0x00007B58, 0x00007B5C
+ .word 0x00007B5C, 0x00007B60
+ .word 0x00007B60, 0x00007BB4
+ .word 0x00007BB4, 0x00007BB8
+ .word 0x00007BB8, 0x00007BBC
+ .word 0x00007BBC, 0x00007BC0
+ .word 0x00007BC0, 0x00007BC4
+ .word 0x00007BC4, 0x00007BC8
+ .word 0x00007BC8, 0x00007BCC
+ .word 0x00007BCC, 0x00007BD0
+ .word 0x00007BD0, 0x00007BD4
+ .word 0x00007BD4, 0x00007BD8
+ .word 0x00007BD8, 0x00007BDC
+ .word 0x00007BDC, 0x00007BE0
+ .word 0x00007BE0, 0x00007BE4
+ .word 0x00007BE4, 0x00007BE8
+ .word 0x00007BE8, 0x00007BEC
+ .word 0x00007BEC, 0x00007BF0
+ .word 0x00007BF0, 0x00007BF4
+ .word 0x00007BF4, 0x00007BF8
+ .word 0x00007BF8, 0x00007BFC
+ .word 0x00007BFC, 0x00007C00
+ .word 0x00007C00, 0x00007C04
+ .word 0x00007C04, 0x00007C08
+ .word 0x00007C08, 0x00007C0C
+ .word 0x00007C0C, 0x00007C10
+ .word 0x00007C10, 0x00007C14
+ .word 0x00007C14, 0x00007C18
+ .word 0x00007C18, 0x00007C1C
+ .word 0x00007C1C, 0x00007C20
+ .word 0x00007C20, 0x00007C24
+ .word 0x00007C24, 0x00007C28
+ .word 0x00007C28, 0x00007C2C
+ .word 0x00007C2C, 0x00007C30
+ .word 0x00007C30, 0x00007C34
+ .word 0x00007C34, 0x00007C38
+ .word 0x00007C38, 0x00007C3C
+ .word 0x00007C3C, 0x00007C40
+ .word 0x00007C40, 0x00007C44
+ .word 0x00007C44, 0x00007C48
+ .word 0x00007C48, 0x00007C4C
+ .word 0x00007C4C, 0x00007C50
+ .word 0x00007C50, 0x00007C54
+ .word 0x00007C54, 0x00007C58
+ .word 0x00007C58, 0x00007C5C
+ .word 0x00007C5C, 0x00007C60
+ .word 0x00007C60, 0x00007C64
+ .word 0x00007C64, 0x00007C68
+ .word 0x00007C68, 0x00007C6C
+ .word 0x00007C6C, 0x00007C70
+ .word 0x00007C70, 0x00007C74
+ .word 0x00007C74, 0x00007C78
+ .word 0x00007C78, 0x00007C7C
+ .word 0x00007C7C, 0x00007C80
+ .word 0x00007C80, 0x00007C84
+ .word 0x00007C84, 0x00007C88
+ .word 0x00007C88, 0x00007C8C
+ .word 0x00007C8C, 0x00007C90
+ .word 0x00007C90, 0x00007C94
+ .word 0x00007C94, 0x00007C98
+ .word 0x00007C98, 0x00007C9C
+ .word 0x00007C9C, 0x00007CA0
+ .word 0x00007CA0, 0x00007CA4
+ .word 0x00007CA4, 0x00007CA8
+ .word 0x00007CA8, 0x00007CAC
+ .word 0x00007CAC, 0x00007CB0
+ .word 0x00007CB0, 0x00007CB4
+ .word 0x00007CB4, 0x00007CB8
+ .word 0x00007CB8, 0x00007CBC
+ .word 0x00007CBC, 0x00007CC0
+ .word 0x00007CC0, 0x00007CC4
+ .word 0x00007CC4, 0x00007CC8
+ .word 0x00007CC8, 0x00007CCC
+ .word 0x00007CCC, 0x00007CD0
+ .word 0x00007CD0, 0x00007CD4
+ .word 0x00007CD4, 0x00007CD8
+ .word 0x00007CD8, 0x00007CDC
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00007CE4 ; chunk size
+ .incbin "baserom.nds", 0x3941B04, 0x7CDC
+ .balign 512, 255
diff --git a/files/FILE_3949800_zukan_enc_pearl.narc.s b/files/FILE_3949800_zukan_enc_pearl.narc.s
new file mode 100644
index 00000000..6514c80e
--- /dev/null
+++ b/files/FILE_3949800_zukan_enc_pearl.narc.s
@@ -0,0 +1,4982 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x000117C8 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00009ADC ; chunk size
+ .short 4954 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000058
+ .word 0x00000058, 0x000000B0
+ .word 0x000000B0, 0x000007DC
+ .word 0x000007DC, 0x000008A8
+ .word 0x000008A8, 0x000008EC
+ .word 0x000008EC, 0x000008F0
+ .word 0x000008F0, 0x000008F4
+ .word 0x000008F4, 0x000008F8
+ .word 0x000008F8, 0x000008FC
+ .word 0x000008FC, 0x00000900
+ .word 0x00000900, 0x00000904
+ .word 0x00000904, 0x00000908
+ .word 0x00000908, 0x0000090C
+ .word 0x0000090C, 0x00000910
+ .word 0x00000910, 0x00000914
+ .word 0x00000914, 0x00000918
+ .word 0x00000918, 0x0000091C
+ .word 0x0000091C, 0x00000920
+ .word 0x00000920, 0x00000924
+ .word 0x00000924, 0x00000928
+ .word 0x00000928, 0x0000092C
+ .word 0x0000092C, 0x00000930
+ .word 0x00000930, 0x00000934
+ .word 0x00000934, 0x00000938
+ .word 0x00000938, 0x0000093C
+ .word 0x0000093C, 0x00000940
+ .word 0x00000940, 0x00000944
+ .word 0x00000944, 0x00000948
+ .word 0x00000948, 0x0000094C
+ .word 0x0000094C, 0x00000954
+ .word 0x00000954, 0x00000958
+ .word 0x00000958, 0x0000095C
+ .word 0x0000095C, 0x00000960
+ .word 0x00000960, 0x00000964
+ .word 0x00000964, 0x00000968
+ .word 0x00000968, 0x0000096C
+ .word 0x0000096C, 0x00000970
+ .word 0x00000970, 0x00000974
+ .word 0x00000974, 0x00000978
+ .word 0x00000978, 0x00000980
+ .word 0x00000980, 0x00000984
+ .word 0x00000984, 0x00000988
+ .word 0x00000988, 0x0000098C
+ .word 0x0000098C, 0x00000990
+ .word 0x00000990, 0x00000994
+ .word 0x00000994, 0x000009B4
+ .word 0x000009B4, 0x000009DC
+ .word 0x000009DC, 0x000009E0
+ .word 0x000009E0, 0x000009E4
+ .word 0x000009E4, 0x000009E8
+ .word 0x000009E8, 0x000009EC
+ .word 0x000009EC, 0x000009F0
+ .word 0x000009F0, 0x000009F4
+ .word 0x000009F4, 0x000009F8
+ .word 0x000009F8, 0x000009FC
+ .word 0x000009FC, 0x00000A00
+ .word 0x00000A00, 0x00000A04
+ .word 0x00000A04, 0x00000A08
+ .word 0x00000A08, 0x00000A24
+ .word 0x00000A24, 0x00000A40
+ .word 0x00000A40, 0x00000A44
+ .word 0x00000A44, 0x00000A48
+ .word 0x00000A48, 0x00000A4C
+ .word 0x00000A4C, 0x00000A50
+ .word 0x00000A50, 0x00000A54
+ .word 0x00000A54, 0x00000A58
+ .word 0x00000A58, 0x00000A5C
+ .word 0x00000A5C, 0x00000A60
+ .word 0x00000A60, 0x00000A68
+ .word 0x00000A68, 0x00000A6C
+ .word 0x00000A6C, 0x00000A74
+ .word 0x00000A74, 0x00000A84
+ .word 0x00000A84, 0x00000A88
+ .word 0x00000A88, 0x00000A8C
+ .word 0x00000A8C, 0x00000A90
+ .word 0x00000A90, 0x00000A94
+ .word 0x00000A94, 0x00000A98
+ .word 0x00000A98, 0x00000A9C
+ .word 0x00000A9C, 0x00000AC0
+ .word 0x00000AC0, 0x00000AD8
+ .word 0x00000AD8, 0x00000ADC
+ .word 0x00000ADC, 0x00000AE0
+ .word 0x00000AE0, 0x00000AE4
+ .word 0x00000AE4, 0x00000AE8
+ .word 0x00000AE8, 0x00000AEC
+ .word 0x00000AEC, 0x00000AF0
+ .word 0x00000AF0, 0x00000AF4
+ .word 0x00000AF4, 0x00000AF8
+ .word 0x00000AF8, 0x00000AFC
+ .word 0x00000AFC, 0x00000B00
+ .word 0x00000B00, 0x00000B04
+ .word 0x00000B04, 0x00000B08
+ .word 0x00000B08, 0x00000B0C
+ .word 0x00000B0C, 0x00000B10
+ .word 0x00000B10, 0x00000B14
+ .word 0x00000B14, 0x00000B18
+ .word 0x00000B18, 0x00000B24
+ .word 0x00000B24, 0x00000B2C
+ .word 0x00000B2C, 0x00000B30
+ .word 0x00000B30, 0x00000B48
+ .word 0x00000B48, 0x00000B4C
+ .word 0x00000B4C, 0x00000B50
+ .word 0x00000B50, 0x00000B54
+ .word 0x00000B54, 0x00000B58
+ .word 0x00000B58, 0x00000B5C
+ .word 0x00000B5C, 0x00000B60
+ .word 0x00000B60, 0x00000B64
+ .word 0x00000B64, 0x00000B68
+ .word 0x00000B68, 0x00000B6C
+ .word 0x00000B6C, 0x00000B70
+ .word 0x00000B70, 0x00000B74
+ .word 0x00000B74, 0x00000B78
+ .word 0x00000B78, 0x00000B7C
+ .word 0x00000B7C, 0x00000B80
+ .word 0x00000B80, 0x00000B88
+ .word 0x00000B88, 0x00000B8C
+ .word 0x00000B8C, 0x00000B90
+ .word 0x00000B90, 0x00000B94
+ .word 0x00000B94, 0x00000B98
+ .word 0x00000B98, 0x00000B9C
+ .word 0x00000B9C, 0x00000BA0
+ .word 0x00000BA0, 0x00000BA4
+ .word 0x00000BA4, 0x00000BB8
+ .word 0x00000BB8, 0x00000BCC
+ .word 0x00000BCC, 0x00000BD0
+ .word 0x00000BD0, 0x00000BD4
+ .word 0x00000BD4, 0x00000BD8
+ .word 0x00000BD8, 0x00000BDC
+ .word 0x00000BDC, 0x00000BE0
+ .word 0x00000BE0, 0x00000BE4
+ .word 0x00000BE4, 0x00000BE8
+ .word 0x00000BE8, 0x00000BEC
+ .word 0x00000BEC, 0x00000BF0
+ .word 0x00000BF0, 0x00000C18
+ .word 0x00000C18, 0x00000C40
+ .word 0x00000C40, 0x00000C48
+ .word 0x00000C48, 0x00000C4C
+ .word 0x00000C4C, 0x00000C50
+ .word 0x00000C50, 0x00000C54
+ .word 0x00000C54, 0x00000C58
+ .word 0x00000C58, 0x00000C5C
+ .word 0x00000C5C, 0x00000C60
+ .word 0x00000C60, 0x00000C64
+ .word 0x00000C64, 0x00000C68
+ .word 0x00000C68, 0x00000C6C
+ .word 0x00000C6C, 0x00000C70
+ .word 0x00000C70, 0x00000C74
+ .word 0x00000C74, 0x00000C78
+ .word 0x00000C78, 0x00000C7C
+ .word 0x00000C7C, 0x00000C80
+ .word 0x00000C80, 0x00000C84
+ .word 0x00000C84, 0x00000C8C
+ .word 0x00000C8C, 0x00000C94
+ .word 0x00000C94, 0x00000C98
+ .word 0x00000C98, 0x00000C9C
+ .word 0x00000C9C, 0x00000CA0
+ .word 0x00000CA0, 0x00000CA4
+ .word 0x00000CA4, 0x00000CA8
+ .word 0x00000CA8, 0x00000CAC
+ .word 0x00000CAC, 0x00000CB0
+ .word 0x00000CB0, 0x00000CB4
+ .word 0x00000CB4, 0x00000CB8
+ .word 0x00000CB8, 0x00000CBC
+ .word 0x00000CBC, 0x00000CC0
+ .word 0x00000CC0, 0x00000CC4
+ .word 0x00000CC4, 0x00000CC8
+ .word 0x00000CC8, 0x00000CCC
+ .word 0x00000CCC, 0x00000CD0
+ .word 0x00000CD0, 0x00000CD4
+ .word 0x00000CD4, 0x00000CD8
+ .word 0x00000CD8, 0x00000CDC
+ .word 0x00000CDC, 0x00000CE0
+ .word 0x00000CE0, 0x00000CE4
+ .word 0x00000CE4, 0x00000CE8
+ .word 0x00000CE8, 0x00000CEC
+ .word 0x00000CEC, 0x00000CF0
+ .word 0x00000CF0, 0x00000CF8
+ .word 0x00000CF8, 0x00000D00
+ .word 0x00000D00, 0x00000D04
+ .word 0x00000D04, 0x00000D08
+ .word 0x00000D08, 0x00000D0C
+ .word 0x00000D0C, 0x00000D10
+ .word 0x00000D10, 0x00000D14
+ .word 0x00000D14, 0x00000D18
+ .word 0x00000D18, 0x00000D1C
+ .word 0x00000D1C, 0x00000D20
+ .word 0x00000D20, 0x00000D24
+ .word 0x00000D24, 0x00000D2C
+ .word 0x00000D2C, 0x00000D30
+ .word 0x00000D30, 0x00000D34
+ .word 0x00000D34, 0x00000D38
+ .word 0x00000D38, 0x00000D3C
+ .word 0x00000D3C, 0x00000D40
+ .word 0x00000D40, 0x00000D44
+ .word 0x00000D44, 0x00000D48
+ .word 0x00000D48, 0x00000D4C
+ .word 0x00000D4C, 0x00000D50
+ .word 0x00000D50, 0x00000D54
+ .word 0x00000D54, 0x00000D5C
+ .word 0x00000D5C, 0x00000D64
+ .word 0x00000D64, 0x00000D68
+ .word 0x00000D68, 0x00000D6C
+ .word 0x00000D6C, 0x00000D70
+ .word 0x00000D70, 0x00000D74
+ .word 0x00000D74, 0x00000D78
+ .word 0x00000D78, 0x00000D80
+ .word 0x00000D80, 0x00000D84
+ .word 0x00000D84, 0x00000D88
+ .word 0x00000D88, 0x00000D8C
+ .word 0x00000D8C, 0x00000D90
+ .word 0x00000D90, 0x00000D94
+ .word 0x00000D94, 0x00000D98
+ .word 0x00000D98, 0x00000DA8
+ .word 0x00000DA8, 0x00000DAC
+ .word 0x00000DAC, 0x00000DB0
+ .word 0x00000DB0, 0x00000DB4
+ .word 0x00000DB4, 0x00000DB8
+ .word 0x00000DB8, 0x00000DBC
+ .word 0x00000DBC, 0x00000DC0
+ .word 0x00000DC0, 0x00000DCC
+ .word 0x00000DCC, 0x00000DD0
+ .word 0x00000DD0, 0x00000DD4
+ .word 0x00000DD4, 0x00000DDC
+ .word 0x00000DDC, 0x00000DE4
+ .word 0x00000DE4, 0x00000DE8
+ .word 0x00000DE8, 0x00000DEC
+ .word 0x00000DEC, 0x00000DF0
+ .word 0x00000DF0, 0x00000DF4
+ .word 0x00000DF4, 0x00000DF8
+ .word 0x00000DF8, 0x00000DFC
+ .word 0x00000DFC, 0x00000E00
+ .word 0x00000E00, 0x00000E04
+ .word 0x00000E04, 0x00000E08
+ .word 0x00000E08, 0x00000E0C
+ .word 0x00000E0C, 0x00000E10
+ .word 0x00000E10, 0x00000E14
+ .word 0x00000E14, 0x00000E18
+ .word 0x00000E18, 0x00000E1C
+ .word 0x00000E1C, 0x00000E20
+ .word 0x00000E20, 0x00000E24
+ .word 0x00000E24, 0x00000E28
+ .word 0x00000E28, 0x00000E2C
+ .word 0x00000E2C, 0x00000E30
+ .word 0x00000E30, 0x00000E34
+ .word 0x00000E34, 0x00000E38
+ .word 0x00000E38, 0x00000E3C
+ .word 0x00000E3C, 0x00000E40
+ .word 0x00000E40, 0x00000E44
+ .word 0x00000E44, 0x00000E48
+ .word 0x00000E48, 0x00000E4C
+ .word 0x00000E4C, 0x00000E50
+ .word 0x00000E50, 0x00000E54
+ .word 0x00000E54, 0x00000E58
+ .word 0x00000E58, 0x00000E5C
+ .word 0x00000E5C, 0x00000E60
+ .word 0x00000E60, 0x00000E64
+ .word 0x00000E64, 0x00000E68
+ .word 0x00000E68, 0x00000E6C
+ .word 0x00000E6C, 0x00000E70
+ .word 0x00000E70, 0x00000E74
+ .word 0x00000E74, 0x00000E78
+ .word 0x00000E78, 0x00000E7C
+ .word 0x00000E7C, 0x00000E80
+ .word 0x00000E80, 0x00000E84
+ .word 0x00000E84, 0x00000E88
+ .word 0x00000E88, 0x00000E8C
+ .word 0x00000E8C, 0x00000E90
+ .word 0x00000E90, 0x00000E94
+ .word 0x00000E94, 0x00000E98
+ .word 0x00000E98, 0x00000EA0
+ .word 0x00000EA0, 0x00000EA4
+ .word 0x00000EA4, 0x00000EA8
+ .word 0x00000EA8, 0x00000EB0
+ .word 0x00000EB0, 0x00000EB8
+ .word 0x00000EB8, 0x00000EBC
+ .word 0x00000EBC, 0x00000EC0
+ .word 0x00000EC0, 0x00000EC4
+ .word 0x00000EC4, 0x00000EC8
+ .word 0x00000EC8, 0x00000ECC
+ .word 0x00000ECC, 0x00000ED0
+ .word 0x00000ED0, 0x00000ED4
+ .word 0x00000ED4, 0x00000ED8
+ .word 0x00000ED8, 0x00000EDC
+ .word 0x00000EDC, 0x00000EE0
+ .word 0x00000EE0, 0x00000EE4
+ .word 0x00000EE4, 0x00000EE8
+ .word 0x00000EE8, 0x00000EEC
+ .word 0x00000EEC, 0x00000EF0
+ .word 0x00000EF0, 0x00000EF4
+ .word 0x00000EF4, 0x00000EF8
+ .word 0x00000EF8, 0x00000EFC
+ .word 0x00000EFC, 0x00000F00
+ .word 0x00000F00, 0x00000F04
+ .word 0x00000F04, 0x00000F08
+ .word 0x00000F08, 0x00000F0C
+ .word 0x00000F0C, 0x00000F10
+ .word 0x00000F10, 0x00000F14
+ .word 0x00000F14, 0x00000F18
+ .word 0x00000F18, 0x00000F1C
+ .word 0x00000F1C, 0x00000F20
+ .word 0x00000F20, 0x00000F24
+ .word 0x00000F24, 0x00000F28
+ .word 0x00000F28, 0x00000F30
+ .word 0x00000F30, 0x00000F34
+ .word 0x00000F34, 0x00000F38
+ .word 0x00000F38, 0x00000F3C
+ .word 0x00000F3C, 0x00000F40
+ .word 0x00000F40, 0x00000F44
+ .word 0x00000F44, 0x00000F48
+ .word 0x00000F48, 0x00000F4C
+ .word 0x00000F4C, 0x00000F50
+ .word 0x00000F50, 0x00000F58
+ .word 0x00000F58, 0x00000F64
+ .word 0x00000F64, 0x00000F68
+ .word 0x00000F68, 0x00000F6C
+ .word 0x00000F6C, 0x00000F70
+ .word 0x00000F70, 0x00000F74
+ .word 0x00000F74, 0x00000F78
+ .word 0x00000F78, 0x00000F7C
+ .word 0x00000F7C, 0x00000F84
+ .word 0x00000F84, 0x00000F88
+ .word 0x00000F88, 0x00000F8C
+ .word 0x00000F8C, 0x00000F94
+ .word 0x00000F94, 0x00000F98
+ .word 0x00000F98, 0x00000F9C
+ .word 0x00000F9C, 0x00000FA0
+ .word 0x00000FA0, 0x00000FA4
+ .word 0x00000FA4, 0x00000FAC
+ .word 0x00000FAC, 0x00000FB0
+ .word 0x00000FB0, 0x00000FB4
+ .word 0x00000FB4, 0x00000FB8
+ .word 0x00000FB8, 0x00000FBC
+ .word 0x00000FBC, 0x00000FC0
+ .word 0x00000FC0, 0x00000FC4
+ .word 0x00000FC4, 0x00000FC8
+ .word 0x00000FC8, 0x00000FCC
+ .word 0x00000FCC, 0x00000FD0
+ .word 0x00000FD0, 0x00000FD4
+ .word 0x00000FD4, 0x00000FD8
+ .word 0x00000FD8, 0x00000FDC
+ .word 0x00000FDC, 0x00000FE0
+ .word 0x00000FE0, 0x00000FE4
+ .word 0x00000FE4, 0x00000FE8
+ .word 0x00000FE8, 0x00000FFC
+ .word 0x00000FFC, 0x00001010
+ .word 0x00001010, 0x00001014
+ .word 0x00001014, 0x00001018
+ .word 0x00001018, 0x0000101C
+ .word 0x0000101C, 0x00001020
+ .word 0x00001020, 0x00001024
+ .word 0x00001024, 0x00001028
+ .word 0x00001028, 0x0000102C
+ .word 0x0000102C, 0x00001030
+ .word 0x00001030, 0x00001034
+ .word 0x00001034, 0x00001038
+ .word 0x00001038, 0x0000103C
+ .word 0x0000103C, 0x00001040
+ .word 0x00001040, 0x00001044
+ .word 0x00001044, 0x00001048
+ .word 0x00001048, 0x0000104C
+ .word 0x0000104C, 0x00001050
+ .word 0x00001050, 0x00001054
+ .word 0x00001054, 0x00001060
+ .word 0x00001060, 0x00001064
+ .word 0x00001064, 0x00001068
+ .word 0x00001068, 0x0000106C
+ .word 0x0000106C, 0x00001070
+ .word 0x00001070, 0x00001074
+ .word 0x00001074, 0x00001078
+ .word 0x00001078, 0x0000107C
+ .word 0x0000107C, 0x00001080
+ .word 0x00001080, 0x00001084
+ .word 0x00001084, 0x00001088
+ .word 0x00001088, 0x0000108C
+ .word 0x0000108C, 0x00001090
+ .word 0x00001090, 0x00001094
+ .word 0x00001094, 0x00001098
+ .word 0x00001098, 0x0000109C
+ .word 0x0000109C, 0x000010A0
+ .word 0x000010A0, 0x000010A4
+ .word 0x000010A4, 0x000010A8
+ .word 0x000010A8, 0x000010AC
+ .word 0x000010AC, 0x000010B0
+ .word 0x000010B0, 0x000010B4
+ .word 0x000010B4, 0x000010B8
+ .word 0x000010B8, 0x000010BC
+ .word 0x000010BC, 0x000010C0
+ .word 0x000010C0, 0x000010C4
+ .word 0x000010C4, 0x000010C8
+ .word 0x000010C8, 0x000010CC
+ .word 0x000010CC, 0x000010D0
+ .word 0x000010D0, 0x000010D4
+ .word 0x000010D4, 0x000010D8
+ .word 0x000010D8, 0x000010DC
+ .word 0x000010DC, 0x000010E0
+ .word 0x000010E0, 0x000010E4
+ .word 0x000010E4, 0x000010E8
+ .word 0x000010E8, 0x000010EC
+ .word 0x000010EC, 0x000010F0
+ .word 0x000010F0, 0x000010F4
+ .word 0x000010F4, 0x00001100
+ .word 0x00001100, 0x00001110
+ .word 0x00001110, 0x00001114
+ .word 0x00001114, 0x00001120
+ .word 0x00001120, 0x00001134
+ .word 0x00001134, 0x00001138
+ .word 0x00001138, 0x00001140
+ .word 0x00001140, 0x00001144
+ .word 0x00001144, 0x00001148
+ .word 0x00001148, 0x0000114C
+ .word 0x0000114C, 0x00001158
+ .word 0x00001158, 0x0000115C
+ .word 0x0000115C, 0x00001160
+ .word 0x00001160, 0x00001164
+ .word 0x00001164, 0x00001168
+ .word 0x00001168, 0x0000116C
+ .word 0x0000116C, 0x00001170
+ .word 0x00001170, 0x00001174
+ .word 0x00001174, 0x00001178
+ .word 0x00001178, 0x0000117C
+ .word 0x0000117C, 0x00001180
+ .word 0x00001180, 0x00001184
+ .word 0x00001184, 0x00001188
+ .word 0x00001188, 0x00001190
+ .word 0x00001190, 0x00001194
+ .word 0x00001194, 0x00001198
+ .word 0x00001198, 0x0000119C
+ .word 0x0000119C, 0x000011A0
+ .word 0x000011A0, 0x000011A4
+ .word 0x000011A4, 0x000011A8
+ .word 0x000011A8, 0x000011AC
+ .word 0x000011AC, 0x000011B4
+ .word 0x000011B4, 0x000011B8
+ .word 0x000011B8, 0x000011BC
+ .word 0x000011BC, 0x000011C0
+ .word 0x000011C0, 0x000011C4
+ .word 0x000011C4, 0x000011C8
+ .word 0x000011C8, 0x000011D8
+ .word 0x000011D8, 0x000011DC
+ .word 0x000011DC, 0x000011E0
+ .word 0x000011E0, 0x000011F0
+ .word 0x000011F0, 0x000011FC
+ .word 0x000011FC, 0x00001200
+ .word 0x00001200, 0x00001204
+ .word 0x00001204, 0x00001208
+ .word 0x00001208, 0x0000120C
+ .word 0x0000120C, 0x00001210
+ .word 0x00001210, 0x00001218
+ .word 0x00001218, 0x0000121C
+ .word 0x0000121C, 0x00001220
+ .word 0x00001220, 0x00001224
+ .word 0x00001224, 0x00001228
+ .word 0x00001228, 0x0000122C
+ .word 0x0000122C, 0x00001234
+ .word 0x00001234, 0x00001238
+ .word 0x00001238, 0x0000123C
+ .word 0x0000123C, 0x00001240
+ .word 0x00001240, 0x00001244
+ .word 0x00001244, 0x00001248
+ .word 0x00001248, 0x0000124C
+ .word 0x0000124C, 0x00001250
+ .word 0x00001250, 0x00001254
+ .word 0x00001254, 0x00001258
+ .word 0x00001258, 0x00001260
+ .word 0x00001260, 0x00001268
+ .word 0x00001268, 0x0000126C
+ .word 0x0000126C, 0x00001270
+ .word 0x00001270, 0x00001274
+ .word 0x00001274, 0x00001278
+ .word 0x00001278, 0x0000127C
+ .word 0x0000127C, 0x00001280
+ .word 0x00001280, 0x00001284
+ .word 0x00001284, 0x00001288
+ .word 0x00001288, 0x0000128C
+ .word 0x0000128C, 0x00001290
+ .word 0x00001290, 0x00001294
+ .word 0x00001294, 0x00001298
+ .word 0x00001298, 0x0000129C
+ .word 0x0000129C, 0x000012A0
+ .word 0x000012A0, 0x000012A4
+ .word 0x000012A4, 0x000012A8
+ .word 0x000012A8, 0x000012AC
+ .word 0x000012AC, 0x000012B0
+ .word 0x000012B0, 0x000012B4
+ .word 0x000012B4, 0x000012B8
+ .word 0x000012B8, 0x000012BC
+ .word 0x000012BC, 0x000012C0
+ .word 0x000012C0, 0x000012C4
+ .word 0x000012C4, 0x000012C8
+ .word 0x000012C8, 0x000012CC
+ .word 0x000012CC, 0x000012D0
+ .word 0x000012D0, 0x000012D4
+ .word 0x000012D4, 0x000012D8
+ .word 0x000012D8, 0x000012DC
+ .word 0x000012DC, 0x000012E0
+ .word 0x000012E0, 0x000012E4
+ .word 0x000012E4, 0x000012E8
+ .word 0x000012E8, 0x000012EC
+ .word 0x000012EC, 0x000012F0
+ .word 0x000012F0, 0x00001334
+ .word 0x00001334, 0x00001338
+ .word 0x00001338, 0x0000133C
+ .word 0x0000133C, 0x00001340
+ .word 0x00001340, 0x00001344
+ .word 0x00001344, 0x00001348
+ .word 0x00001348, 0x0000134C
+ .word 0x0000134C, 0x00001350
+ .word 0x00001350, 0x00001354
+ .word 0x00001354, 0x00001358
+ .word 0x00001358, 0x0000135C
+ .word 0x0000135C, 0x00001360
+ .word 0x00001360, 0x00001364
+ .word 0x00001364, 0x00001368
+ .word 0x00001368, 0x0000136C
+ .word 0x0000136C, 0x00001370
+ .word 0x00001370, 0x00001374
+ .word 0x00001374, 0x00001378
+ .word 0x00001378, 0x0000137C
+ .word 0x0000137C, 0x00001380
+ .word 0x00001380, 0x00001384
+ .word 0x00001384, 0x00001388
+ .word 0x00001388, 0x0000138C
+ .word 0x0000138C, 0x00001390
+ .word 0x00001390, 0x00001394
+ .word 0x00001394, 0x0000139C
+ .word 0x0000139C, 0x000013A0
+ .word 0x000013A0, 0x000013A4
+ .word 0x000013A4, 0x000013A8
+ .word 0x000013A8, 0x000013AC
+ .word 0x000013AC, 0x000013B0
+ .word 0x000013B0, 0x000013B4
+ .word 0x000013B4, 0x000013B8
+ .word 0x000013B8, 0x000013BC
+ .word 0x000013BC, 0x000013C0
+ .word 0x000013C0, 0x000013C8
+ .word 0x000013C8, 0x000013CC
+ .word 0x000013CC, 0x000013D0
+ .word 0x000013D0, 0x000013D4
+ .word 0x000013D4, 0x000013D8
+ .word 0x000013D8, 0x000013DC
+ .word 0x000013DC, 0x000013FC
+ .word 0x000013FC, 0x00001424
+ .word 0x00001424, 0x00001428
+ .word 0x00001428, 0x0000142C
+ .word 0x0000142C, 0x00001430
+ .word 0x00001430, 0x00001434
+ .word 0x00001434, 0x00001438
+ .word 0x00001438, 0x0000143C
+ .word 0x0000143C, 0x00001440
+ .word 0x00001440, 0x00001444
+ .word 0x00001444, 0x00001448
+ .word 0x00001448, 0x0000144C
+ .word 0x0000144C, 0x00001450
+ .word 0x00001450, 0x0000146C
+ .word 0x0000146C, 0x00001488
+ .word 0x00001488, 0x0000148C
+ .word 0x0000148C, 0x00001490
+ .word 0x00001490, 0x00001494
+ .word 0x00001494, 0x00001498
+ .word 0x00001498, 0x0000149C
+ .word 0x0000149C, 0x000014A0
+ .word 0x000014A0, 0x000014A4
+ .word 0x000014A4, 0x000014A8
+ .word 0x000014A8, 0x000014B0
+ .word 0x000014B0, 0x000014B4
+ .word 0x000014B4, 0x000014BC
+ .word 0x000014BC, 0x000014CC
+ .word 0x000014CC, 0x000014D0
+ .word 0x000014D0, 0x000014D4
+ .word 0x000014D4, 0x000014D8
+ .word 0x000014D8, 0x000014DC
+ .word 0x000014DC, 0x000014E0
+ .word 0x000014E0, 0x000014E4
+ .word 0x000014E4, 0x00001508
+ .word 0x00001508, 0x00001520
+ .word 0x00001520, 0x00001524
+ .word 0x00001524, 0x00001528
+ .word 0x00001528, 0x0000152C
+ .word 0x0000152C, 0x00001530
+ .word 0x00001530, 0x00001534
+ .word 0x00001534, 0x00001538
+ .word 0x00001538, 0x0000153C
+ .word 0x0000153C, 0x00001540
+ .word 0x00001540, 0x00001544
+ .word 0x00001544, 0x00001548
+ .word 0x00001548, 0x0000154C
+ .word 0x0000154C, 0x00001550
+ .word 0x00001550, 0x00001554
+ .word 0x00001554, 0x00001558
+ .word 0x00001558, 0x0000155C
+ .word 0x0000155C, 0x00001560
+ .word 0x00001560, 0x0000156C
+ .word 0x0000156C, 0x00001574
+ .word 0x00001574, 0x00001578
+ .word 0x00001578, 0x00001590
+ .word 0x00001590, 0x00001594
+ .word 0x00001594, 0x00001598
+ .word 0x00001598, 0x0000159C
+ .word 0x0000159C, 0x000015A0
+ .word 0x000015A0, 0x000015A4
+ .word 0x000015A4, 0x000015A8
+ .word 0x000015A8, 0x000015AC
+ .word 0x000015AC, 0x000015B0
+ .word 0x000015B0, 0x000015B4
+ .word 0x000015B4, 0x000015B8
+ .word 0x000015B8, 0x000015BC
+ .word 0x000015BC, 0x000015C0
+ .word 0x000015C0, 0x000015C4
+ .word 0x000015C4, 0x000015C8
+ .word 0x000015C8, 0x000015D0
+ .word 0x000015D0, 0x000015D4
+ .word 0x000015D4, 0x000015D8
+ .word 0x000015D8, 0x000015DC
+ .word 0x000015DC, 0x000015E0
+ .word 0x000015E0, 0x000015E4
+ .word 0x000015E4, 0x000015E8
+ .word 0x000015E8, 0x000015EC
+ .word 0x000015EC, 0x00001600
+ .word 0x00001600, 0x00001614
+ .word 0x00001614, 0x00001618
+ .word 0x00001618, 0x0000161C
+ .word 0x0000161C, 0x00001620
+ .word 0x00001620, 0x00001624
+ .word 0x00001624, 0x00001628
+ .word 0x00001628, 0x0000162C
+ .word 0x0000162C, 0x00001630
+ .word 0x00001630, 0x00001634
+ .word 0x00001634, 0x00001638
+ .word 0x00001638, 0x00001660
+ .word 0x00001660, 0x00001688
+ .word 0x00001688, 0x00001690
+ .word 0x00001690, 0x00001694
+ .word 0x00001694, 0x00001698
+ .word 0x00001698, 0x0000169C
+ .word 0x0000169C, 0x000016A0
+ .word 0x000016A0, 0x000016A4
+ .word 0x000016A4, 0x000016A8
+ .word 0x000016A8, 0x000016AC
+ .word 0x000016AC, 0x000016B0
+ .word 0x000016B0, 0x000016B4
+ .word 0x000016B4, 0x000016B8
+ .word 0x000016B8, 0x000016BC
+ .word 0x000016BC, 0x000016C0
+ .word 0x000016C0, 0x000016C4
+ .word 0x000016C4, 0x000016C8
+ .word 0x000016C8, 0x000016CC
+ .word 0x000016CC, 0x000016D4
+ .word 0x000016D4, 0x000016DC
+ .word 0x000016DC, 0x000016E0
+ .word 0x000016E0, 0x000016E4
+ .word 0x000016E4, 0x000016E8
+ .word 0x000016E8, 0x000016EC
+ .word 0x000016EC, 0x000016F0
+ .word 0x000016F0, 0x000016F4
+ .word 0x000016F4, 0x000016F8
+ .word 0x000016F8, 0x000016FC
+ .word 0x000016FC, 0x00001700
+ .word 0x00001700, 0x00001704
+ .word 0x00001704, 0x00001708
+ .word 0x00001708, 0x0000170C
+ .word 0x0000170C, 0x00001710
+ .word 0x00001710, 0x00001714
+ .word 0x00001714, 0x00001718
+ .word 0x00001718, 0x0000171C
+ .word 0x0000171C, 0x00001720
+ .word 0x00001720, 0x00001724
+ .word 0x00001724, 0x00001728
+ .word 0x00001728, 0x0000172C
+ .word 0x0000172C, 0x00001730
+ .word 0x00001730, 0x00001734
+ .word 0x00001734, 0x00001738
+ .word 0x00001738, 0x00001740
+ .word 0x00001740, 0x00001748
+ .word 0x00001748, 0x0000174C
+ .word 0x0000174C, 0x00001750
+ .word 0x00001750, 0x00001754
+ .word 0x00001754, 0x00001758
+ .word 0x00001758, 0x0000175C
+ .word 0x0000175C, 0x00001760
+ .word 0x00001760, 0x00001764
+ .word 0x00001764, 0x00001768
+ .word 0x00001768, 0x0000176C
+ .word 0x0000176C, 0x00001774
+ .word 0x00001774, 0x00001778
+ .word 0x00001778, 0x0000177C
+ .word 0x0000177C, 0x00001780
+ .word 0x00001780, 0x00001784
+ .word 0x00001784, 0x00001788
+ .word 0x00001788, 0x0000178C
+ .word 0x0000178C, 0x00001790
+ .word 0x00001790, 0x00001794
+ .word 0x00001794, 0x00001798
+ .word 0x00001798, 0x0000179C
+ .word 0x0000179C, 0x000017A4
+ .word 0x000017A4, 0x000017AC
+ .word 0x000017AC, 0x000017B0
+ .word 0x000017B0, 0x000017B4
+ .word 0x000017B4, 0x000017B8
+ .word 0x000017B8, 0x000017BC
+ .word 0x000017BC, 0x000017C0
+ .word 0x000017C0, 0x000017C8
+ .word 0x000017C8, 0x000017CC
+ .word 0x000017CC, 0x000017D0
+ .word 0x000017D0, 0x000017D4
+ .word 0x000017D4, 0x000017D8
+ .word 0x000017D8, 0x000017DC
+ .word 0x000017DC, 0x000017E0
+ .word 0x000017E0, 0x000017F0
+ .word 0x000017F0, 0x000017F4
+ .word 0x000017F4, 0x000017F8
+ .word 0x000017F8, 0x000017FC
+ .word 0x000017FC, 0x00001800
+ .word 0x00001800, 0x00001804
+ .word 0x00001804, 0x00001808
+ .word 0x00001808, 0x00001814
+ .word 0x00001814, 0x00001818
+ .word 0x00001818, 0x0000181C
+ .word 0x0000181C, 0x00001824
+ .word 0x00001824, 0x0000182C
+ .word 0x0000182C, 0x00001830
+ .word 0x00001830, 0x00001834
+ .word 0x00001834, 0x00001838
+ .word 0x00001838, 0x0000183C
+ .word 0x0000183C, 0x00001840
+ .word 0x00001840, 0x00001844
+ .word 0x00001844, 0x00001848
+ .word 0x00001848, 0x0000184C
+ .word 0x0000184C, 0x00001850
+ .word 0x00001850, 0x00001854
+ .word 0x00001854, 0x00001858
+ .word 0x00001858, 0x0000185C
+ .word 0x0000185C, 0x00001860
+ .word 0x00001860, 0x00001864
+ .word 0x00001864, 0x00001868
+ .word 0x00001868, 0x0000186C
+ .word 0x0000186C, 0x00001870
+ .word 0x00001870, 0x00001874
+ .word 0x00001874, 0x00001878
+ .word 0x00001878, 0x0000187C
+ .word 0x0000187C, 0x00001880
+ .word 0x00001880, 0x00001884
+ .word 0x00001884, 0x00001888
+ .word 0x00001888, 0x0000188C
+ .word 0x0000188C, 0x00001890
+ .word 0x00001890, 0x00001894
+ .word 0x00001894, 0x00001898
+ .word 0x00001898, 0x0000189C
+ .word 0x0000189C, 0x000018A0
+ .word 0x000018A0, 0x000018A4
+ .word 0x000018A4, 0x000018A8
+ .word 0x000018A8, 0x000018AC
+ .word 0x000018AC, 0x000018B0
+ .word 0x000018B0, 0x000018B4
+ .word 0x000018B4, 0x000018B8
+ .word 0x000018B8, 0x000018BC
+ .word 0x000018BC, 0x000018C0
+ .word 0x000018C0, 0x000018C4
+ .word 0x000018C4, 0x000018C8
+ .word 0x000018C8, 0x000018CC
+ .word 0x000018CC, 0x000018D0
+ .word 0x000018D0, 0x000018D4
+ .word 0x000018D4, 0x000018D8
+ .word 0x000018D8, 0x000018DC
+ .word 0x000018DC, 0x000018E0
+ .word 0x000018E0, 0x000018E8
+ .word 0x000018E8, 0x000018EC
+ .word 0x000018EC, 0x000018F0
+ .word 0x000018F0, 0x000018F8
+ .word 0x000018F8, 0x00001900
+ .word 0x00001900, 0x00001904
+ .word 0x00001904, 0x00001908
+ .word 0x00001908, 0x0000190C
+ .word 0x0000190C, 0x00001910
+ .word 0x00001910, 0x00001914
+ .word 0x00001914, 0x00001918
+ .word 0x00001918, 0x0000191C
+ .word 0x0000191C, 0x00001920
+ .word 0x00001920, 0x00001924
+ .word 0x00001924, 0x00001928
+ .word 0x00001928, 0x0000192C
+ .word 0x0000192C, 0x00001930
+ .word 0x00001930, 0x00001934
+ .word 0x00001934, 0x00001938
+ .word 0x00001938, 0x0000193C
+ .word 0x0000193C, 0x00001940
+ .word 0x00001940, 0x00001944
+ .word 0x00001944, 0x00001948
+ .word 0x00001948, 0x0000194C
+ .word 0x0000194C, 0x00001950
+ .word 0x00001950, 0x00001954
+ .word 0x00001954, 0x00001958
+ .word 0x00001958, 0x0000195C
+ .word 0x0000195C, 0x00001960
+ .word 0x00001960, 0x00001964
+ .word 0x00001964, 0x00001968
+ .word 0x00001968, 0x0000196C
+ .word 0x0000196C, 0x00001970
+ .word 0x00001970, 0x00001978
+ .word 0x00001978, 0x0000197C
+ .word 0x0000197C, 0x00001980
+ .word 0x00001980, 0x00001984
+ .word 0x00001984, 0x00001988
+ .word 0x00001988, 0x0000198C
+ .word 0x0000198C, 0x00001990
+ .word 0x00001990, 0x00001994
+ .word 0x00001994, 0x00001998
+ .word 0x00001998, 0x000019A0
+ .word 0x000019A0, 0x000019AC
+ .word 0x000019AC, 0x000019B0
+ .word 0x000019B0, 0x000019B4
+ .word 0x000019B4, 0x000019B8
+ .word 0x000019B8, 0x000019BC
+ .word 0x000019BC, 0x000019C0
+ .word 0x000019C0, 0x000019C4
+ .word 0x000019C4, 0x000019CC
+ .word 0x000019CC, 0x000019D0
+ .word 0x000019D0, 0x000019D4
+ .word 0x000019D4, 0x000019DC
+ .word 0x000019DC, 0x000019E0
+ .word 0x000019E0, 0x000019E4
+ .word 0x000019E4, 0x000019E8
+ .word 0x000019E8, 0x000019EC
+ .word 0x000019EC, 0x000019F4
+ .word 0x000019F4, 0x000019F8
+ .word 0x000019F8, 0x000019FC
+ .word 0x000019FC, 0x00001A00
+ .word 0x00001A00, 0x00001A04
+ .word 0x00001A04, 0x00001A08
+ .word 0x00001A08, 0x00001A0C
+ .word 0x00001A0C, 0x00001A10
+ .word 0x00001A10, 0x00001A14
+ .word 0x00001A14, 0x00001A18
+ .word 0x00001A18, 0x00001A1C
+ .word 0x00001A1C, 0x00001A20
+ .word 0x00001A20, 0x00001A24
+ .word 0x00001A24, 0x00001A28
+ .word 0x00001A28, 0x00001A2C
+ .word 0x00001A2C, 0x00001A30
+ .word 0x00001A30, 0x00001A44
+ .word 0x00001A44, 0x00001A58
+ .word 0x00001A58, 0x00001A5C
+ .word 0x00001A5C, 0x00001A60
+ .word 0x00001A60, 0x00001A64
+ .word 0x00001A64, 0x00001A68
+ .word 0x00001A68, 0x00001A6C
+ .word 0x00001A6C, 0x00001A70
+ .word 0x00001A70, 0x00001A74
+ .word 0x00001A74, 0x00001A78
+ .word 0x00001A78, 0x00001A7C
+ .word 0x00001A7C, 0x00001A80
+ .word 0x00001A80, 0x00001A84
+ .word 0x00001A84, 0x00001A88
+ .word 0x00001A88, 0x00001A8C
+ .word 0x00001A8C, 0x00001A90
+ .word 0x00001A90, 0x00001A94
+ .word 0x00001A94, 0x00001A98
+ .word 0x00001A98, 0x00001A9C
+ .word 0x00001A9C, 0x00001AA8
+ .word 0x00001AA8, 0x00001AAC
+ .word 0x00001AAC, 0x00001AB0
+ .word 0x00001AB0, 0x00001AB4
+ .word 0x00001AB4, 0x00001AB8
+ .word 0x00001AB8, 0x00001ABC
+ .word 0x00001ABC, 0x00001AC0
+ .word 0x00001AC0, 0x00001AC4
+ .word 0x00001AC4, 0x00001AC8
+ .word 0x00001AC8, 0x00001ACC
+ .word 0x00001ACC, 0x00001AD0
+ .word 0x00001AD0, 0x00001AD4
+ .word 0x00001AD4, 0x00001AD8
+ .word 0x00001AD8, 0x00001ADC
+ .word 0x00001ADC, 0x00001AE0
+ .word 0x00001AE0, 0x00001AE4
+ .word 0x00001AE4, 0x00001AE8
+ .word 0x00001AE8, 0x00001AEC
+ .word 0x00001AEC, 0x00001AF0
+ .word 0x00001AF0, 0x00001AF4
+ .word 0x00001AF4, 0x00001AF8
+ .word 0x00001AF8, 0x00001AFC
+ .word 0x00001AFC, 0x00001B00
+ .word 0x00001B00, 0x00001B04
+ .word 0x00001B04, 0x00001B08
+ .word 0x00001B08, 0x00001B0C
+ .word 0x00001B0C, 0x00001B10
+ .word 0x00001B10, 0x00001B14
+ .word 0x00001B14, 0x00001B18
+ .word 0x00001B18, 0x00001B1C
+ .word 0x00001B1C, 0x00001B20
+ .word 0x00001B20, 0x00001B24
+ .word 0x00001B24, 0x00001B28
+ .word 0x00001B28, 0x00001B2C
+ .word 0x00001B2C, 0x00001B30
+ .word 0x00001B30, 0x00001B34
+ .word 0x00001B34, 0x00001B38
+ .word 0x00001B38, 0x00001B3C
+ .word 0x00001B3C, 0x00001B48
+ .word 0x00001B48, 0x00001B58
+ .word 0x00001B58, 0x00001B5C
+ .word 0x00001B5C, 0x00001B68
+ .word 0x00001B68, 0x00001B7C
+ .word 0x00001B7C, 0x00001B80
+ .word 0x00001B80, 0x00001B88
+ .word 0x00001B88, 0x00001B8C
+ .word 0x00001B8C, 0x00001B90
+ .word 0x00001B90, 0x00001B94
+ .word 0x00001B94, 0x00001BA0
+ .word 0x00001BA0, 0x00001BA4
+ .word 0x00001BA4, 0x00001BA8
+ .word 0x00001BA8, 0x00001BAC
+ .word 0x00001BAC, 0x00001BB0
+ .word 0x00001BB0, 0x00001BB4
+ .word 0x00001BB4, 0x00001BB8
+ .word 0x00001BB8, 0x00001BBC
+ .word 0x00001BBC, 0x00001BC0
+ .word 0x00001BC0, 0x00001BC4
+ .word 0x00001BC4, 0x00001BC8
+ .word 0x00001BC8, 0x00001BCC
+ .word 0x00001BCC, 0x00001BD0
+ .word 0x00001BD0, 0x00001BD8
+ .word 0x00001BD8, 0x00001BDC
+ .word 0x00001BDC, 0x00001BE0
+ .word 0x00001BE0, 0x00001BE4
+ .word 0x00001BE4, 0x00001BE8
+ .word 0x00001BE8, 0x00001BEC
+ .word 0x00001BEC, 0x00001BF0
+ .word 0x00001BF0, 0x00001BF4
+ .word 0x00001BF4, 0x00001BFC
+ .word 0x00001BFC, 0x00001C00
+ .word 0x00001C00, 0x00001C04
+ .word 0x00001C04, 0x00001C08
+ .word 0x00001C08, 0x00001C0C
+ .word 0x00001C0C, 0x00001C10
+ .word 0x00001C10, 0x00001C20
+ .word 0x00001C20, 0x00001C24
+ .word 0x00001C24, 0x00001C28
+ .word 0x00001C28, 0x00001C38
+ .word 0x00001C38, 0x00001C44
+ .word 0x00001C44, 0x00001C48
+ .word 0x00001C48, 0x00001C4C
+ .word 0x00001C4C, 0x00001C50
+ .word 0x00001C50, 0x00001C54
+ .word 0x00001C54, 0x00001C58
+ .word 0x00001C58, 0x00001C60
+ .word 0x00001C60, 0x00001C64
+ .word 0x00001C64, 0x00001C68
+ .word 0x00001C68, 0x00001C6C
+ .word 0x00001C6C, 0x00001C70
+ .word 0x00001C70, 0x00001C74
+ .word 0x00001C74, 0x00001C7C
+ .word 0x00001C7C, 0x00001C80
+ .word 0x00001C80, 0x00001C84
+ .word 0x00001C84, 0x00001C88
+ .word 0x00001C88, 0x00001C8C
+ .word 0x00001C8C, 0x00001C90
+ .word 0x00001C90, 0x00001C94
+ .word 0x00001C94, 0x00001C98
+ .word 0x00001C98, 0x00001C9C
+ .word 0x00001C9C, 0x00001CA0
+ .word 0x00001CA0, 0x00001CA8
+ .word 0x00001CA8, 0x00001CB0
+ .word 0x00001CB0, 0x00001CB4
+ .word 0x00001CB4, 0x00001CB8
+ .word 0x00001CB8, 0x00001CBC
+ .word 0x00001CBC, 0x00001CC0
+ .word 0x00001CC0, 0x00001CC4
+ .word 0x00001CC4, 0x00001CC8
+ .word 0x00001CC8, 0x00001CCC
+ .word 0x00001CCC, 0x00001CD0
+ .word 0x00001CD0, 0x00001CD4
+ .word 0x00001CD4, 0x00001CD8
+ .word 0x00001CD8, 0x00001CDC
+ .word 0x00001CDC, 0x00001CE0
+ .word 0x00001CE0, 0x00001CE4
+ .word 0x00001CE4, 0x00001CE8
+ .word 0x00001CE8, 0x00001CEC
+ .word 0x00001CEC, 0x00001CF0
+ .word 0x00001CF0, 0x00001CF4
+ .word 0x00001CF4, 0x00001CF8
+ .word 0x00001CF8, 0x00001CFC
+ .word 0x00001CFC, 0x00001D00
+ .word 0x00001D00, 0x00001D04
+ .word 0x00001D04, 0x00001D08
+ .word 0x00001D08, 0x00001D0C
+ .word 0x00001D0C, 0x00001D10
+ .word 0x00001D10, 0x00001D14
+ .word 0x00001D14, 0x00001D18
+ .word 0x00001D18, 0x00001D1C
+ .word 0x00001D1C, 0x00001D20
+ .word 0x00001D20, 0x00001D24
+ .word 0x00001D24, 0x00001D28
+ .word 0x00001D28, 0x00001D2C
+ .word 0x00001D2C, 0x00001D30
+ .word 0x00001D30, 0x00001D34
+ .word 0x00001D34, 0x00001D38
+ .word 0x00001D38, 0x00001D7C
+ .word 0x00001D7C, 0x00001D80
+ .word 0x00001D80, 0x00001D84
+ .word 0x00001D84, 0x00001D88
+ .word 0x00001D88, 0x00001D8C
+ .word 0x00001D8C, 0x00001D90
+ .word 0x00001D90, 0x00001D94
+ .word 0x00001D94, 0x00001D98
+ .word 0x00001D98, 0x00001D9C
+ .word 0x00001D9C, 0x00001DA0
+ .word 0x00001DA0, 0x00001DA4
+ .word 0x00001DA4, 0x00001DA8
+ .word 0x00001DA8, 0x00001DAC
+ .word 0x00001DAC, 0x00001DB0
+ .word 0x00001DB0, 0x00001DB4
+ .word 0x00001DB4, 0x00001DB8
+ .word 0x00001DB8, 0x00001DBC
+ .word 0x00001DBC, 0x00001DC0
+ .word 0x00001DC0, 0x00001DC4
+ .word 0x00001DC4, 0x00001DC8
+ .word 0x00001DC8, 0x00001DCC
+ .word 0x00001DCC, 0x00001DD0
+ .word 0x00001DD0, 0x00001DD4
+ .word 0x00001DD4, 0x00001DD8
+ .word 0x00001DD8, 0x00001DDC
+ .word 0x00001DDC, 0x00001DE4
+ .word 0x00001DE4, 0x00001DE8
+ .word 0x00001DE8, 0x00001DEC
+ .word 0x00001DEC, 0x00001DF0
+ .word 0x00001DF0, 0x00001DF4
+ .word 0x00001DF4, 0x00001DF8
+ .word 0x00001DF8, 0x00001DFC
+ .word 0x00001DFC, 0x00001E00
+ .word 0x00001E00, 0x00001E04
+ .word 0x00001E04, 0x00001E08
+ .word 0x00001E08, 0x00001E10
+ .word 0x00001E10, 0x00001E14
+ .word 0x00001E14, 0x00001E18
+ .word 0x00001E18, 0x00001E1C
+ .word 0x00001E1C, 0x00001E20
+ .word 0x00001E20, 0x00001E24
+ .word 0x00001E24, 0x00001E44
+ .word 0x00001E44, 0x00001E6C
+ .word 0x00001E6C, 0x00001E70
+ .word 0x00001E70, 0x00001E74
+ .word 0x00001E74, 0x00001E78
+ .word 0x00001E78, 0x00001E7C
+ .word 0x00001E7C, 0x00001E80
+ .word 0x00001E80, 0x00001E84
+ .word 0x00001E84, 0x00001E88
+ .word 0x00001E88, 0x00001E8C
+ .word 0x00001E8C, 0x00001E90
+ .word 0x00001E90, 0x00001E94
+ .word 0x00001E94, 0x00001E98
+ .word 0x00001E98, 0x00001EB4
+ .word 0x00001EB4, 0x00001ED0
+ .word 0x00001ED0, 0x00001ED4
+ .word 0x00001ED4, 0x00001ED8
+ .word 0x00001ED8, 0x00001EDC
+ .word 0x00001EDC, 0x00001EE0
+ .word 0x00001EE0, 0x00001EE4
+ .word 0x00001EE4, 0x00001EE8
+ .word 0x00001EE8, 0x00001EEC
+ .word 0x00001EEC, 0x00001EF0
+ .word 0x00001EF0, 0x00001EF8
+ .word 0x00001EF8, 0x00001EFC
+ .word 0x00001EFC, 0x00001F04
+ .word 0x00001F04, 0x00001F14
+ .word 0x00001F14, 0x00001F18
+ .word 0x00001F18, 0x00001F1C
+ .word 0x00001F1C, 0x00001F20
+ .word 0x00001F20, 0x00001F24
+ .word 0x00001F24, 0x00001F28
+ .word 0x00001F28, 0x00001F2C
+ .word 0x00001F2C, 0x00001F50
+ .word 0x00001F50, 0x00001F68
+ .word 0x00001F68, 0x00001F6C
+ .word 0x00001F6C, 0x00001F70
+ .word 0x00001F70, 0x00001F74
+ .word 0x00001F74, 0x00001F78
+ .word 0x00001F78, 0x00001F7C
+ .word 0x00001F7C, 0x00001F80
+ .word 0x00001F80, 0x00001F84
+ .word 0x00001F84, 0x00001F88
+ .word 0x00001F88, 0x00001F8C
+ .word 0x00001F8C, 0x00001F90
+ .word 0x00001F90, 0x00001F94
+ .word 0x00001F94, 0x00001F98
+ .word 0x00001F98, 0x00001F9C
+ .word 0x00001F9C, 0x00001FA0
+ .word 0x00001FA0, 0x00001FA4
+ .word 0x00001FA4, 0x00001FA8
+ .word 0x00001FA8, 0x00001FB4
+ .word 0x00001FB4, 0x00001FBC
+ .word 0x00001FBC, 0x00001FC0
+ .word 0x00001FC0, 0x00001FD8
+ .word 0x00001FD8, 0x00001FDC
+ .word 0x00001FDC, 0x00001FE0
+ .word 0x00001FE0, 0x00001FE4
+ .word 0x00001FE4, 0x00001FE8
+ .word 0x00001FE8, 0x00001FEC
+ .word 0x00001FEC, 0x00001FF0
+ .word 0x00001FF0, 0x00001FF4
+ .word 0x00001FF4, 0x00001FF8
+ .word 0x00001FF8, 0x00001FFC
+ .word 0x00001FFC, 0x00002000
+ .word 0x00002000, 0x00002004
+ .word 0x00002004, 0x00002008
+ .word 0x00002008, 0x0000200C
+ .word 0x0000200C, 0x00002010
+ .word 0x00002010, 0x00002018
+ .word 0x00002018, 0x0000201C
+ .word 0x0000201C, 0x00002020
+ .word 0x00002020, 0x00002024
+ .word 0x00002024, 0x00002028
+ .word 0x00002028, 0x0000202C
+ .word 0x0000202C, 0x00002030
+ .word 0x00002030, 0x00002034
+ .word 0x00002034, 0x00002048
+ .word 0x00002048, 0x0000205C
+ .word 0x0000205C, 0x00002060
+ .word 0x00002060, 0x00002064
+ .word 0x00002064, 0x00002068
+ .word 0x00002068, 0x0000206C
+ .word 0x0000206C, 0x00002070
+ .word 0x00002070, 0x00002074
+ .word 0x00002074, 0x00002078
+ .word 0x00002078, 0x0000207C
+ .word 0x0000207C, 0x00002080
+ .word 0x00002080, 0x000020A8
+ .word 0x000020A8, 0x000020D0
+ .word 0x000020D0, 0x000020D8
+ .word 0x000020D8, 0x000020DC
+ .word 0x000020DC, 0x000020E0
+ .word 0x000020E0, 0x000020E4
+ .word 0x000020E4, 0x000020E8
+ .word 0x000020E8, 0x000020EC
+ .word 0x000020EC, 0x000020F0
+ .word 0x000020F0, 0x000020F4
+ .word 0x000020F4, 0x000020F8
+ .word 0x000020F8, 0x000020FC
+ .word 0x000020FC, 0x00002100
+ .word 0x00002100, 0x00002104
+ .word 0x00002104, 0x00002108
+ .word 0x00002108, 0x0000210C
+ .word 0x0000210C, 0x00002110
+ .word 0x00002110, 0x00002114
+ .word 0x00002114, 0x0000211C
+ .word 0x0000211C, 0x00002124
+ .word 0x00002124, 0x00002128
+ .word 0x00002128, 0x0000212C
+ .word 0x0000212C, 0x00002130
+ .word 0x00002130, 0x00002134
+ .word 0x00002134, 0x00002138
+ .word 0x00002138, 0x0000213C
+ .word 0x0000213C, 0x00002140
+ .word 0x00002140, 0x00002144
+ .word 0x00002144, 0x00002148
+ .word 0x00002148, 0x0000214C
+ .word 0x0000214C, 0x00002150
+ .word 0x00002150, 0x00002154
+ .word 0x00002154, 0x00002158
+ .word 0x00002158, 0x0000215C
+ .word 0x0000215C, 0x00002164
+ .word 0x00002164, 0x0000217C
+ .word 0x0000217C, 0x00002180
+ .word 0x00002180, 0x00002184
+ .word 0x00002184, 0x00002188
+ .word 0x00002188, 0x0000218C
+ .word 0x0000218C, 0x00002190
+ .word 0x00002190, 0x00002194
+ .word 0x00002194, 0x00002198
+ .word 0x00002198, 0x000021A0
+ .word 0x000021A0, 0x000021A8
+ .word 0x000021A8, 0x000021AC
+ .word 0x000021AC, 0x000021B0
+ .word 0x000021B0, 0x000021B4
+ .word 0x000021B4, 0x000021B8
+ .word 0x000021B8, 0x000021BC
+ .word 0x000021BC, 0x000021C0
+ .word 0x000021C0, 0x000021C4
+ .word 0x000021C4, 0x000021C8
+ .word 0x000021C8, 0x000021CC
+ .word 0x000021CC, 0x000021D4
+ .word 0x000021D4, 0x000021D8
+ .word 0x000021D8, 0x000021DC
+ .word 0x000021DC, 0x000021E0
+ .word 0x000021E0, 0x000021E4
+ .word 0x000021E4, 0x000021E8
+ .word 0x000021E8, 0x000021EC
+ .word 0x000021EC, 0x000021F0
+ .word 0x000021F0, 0x000021F4
+ .word 0x000021F4, 0x000021F8
+ .word 0x000021F8, 0x000021FC
+ .word 0x000021FC, 0x00002204
+ .word 0x00002204, 0x0000220C
+ .word 0x0000220C, 0x00002210
+ .word 0x00002210, 0x00002214
+ .word 0x00002214, 0x00002218
+ .word 0x00002218, 0x0000221C
+ .word 0x0000221C, 0x00002228
+ .word 0x00002228, 0x00002230
+ .word 0x00002230, 0x00002234
+ .word 0x00002234, 0x00002238
+ .word 0x00002238, 0x0000223C
+ .word 0x0000223C, 0x00002240
+ .word 0x00002240, 0x00002244
+ .word 0x00002244, 0x00002248
+ .word 0x00002248, 0x00002258
+ .word 0x00002258, 0x0000225C
+ .word 0x0000225C, 0x00002260
+ .word 0x00002260, 0x00002264
+ .word 0x00002264, 0x00002268
+ .word 0x00002268, 0x0000226C
+ .word 0x0000226C, 0x00002270
+ .word 0x00002270, 0x0000227C
+ .word 0x0000227C, 0x00002280
+ .word 0x00002280, 0x00002284
+ .word 0x00002284, 0x0000228C
+ .word 0x0000228C, 0x00002294
+ .word 0x00002294, 0x00002298
+ .word 0x00002298, 0x0000229C
+ .word 0x0000229C, 0x000022A0
+ .word 0x000022A0, 0x000022A4
+ .word 0x000022A4, 0x000022A8
+ .word 0x000022A8, 0x000022AC
+ .word 0x000022AC, 0x000022B0
+ .word 0x000022B0, 0x000022B4
+ .word 0x000022B4, 0x000022B8
+ .word 0x000022B8, 0x000022BC
+ .word 0x000022BC, 0x000022C0
+ .word 0x000022C0, 0x000022C4
+ .word 0x000022C4, 0x000022C8
+ .word 0x000022C8, 0x000022CC
+ .word 0x000022CC, 0x000022D0
+ .word 0x000022D0, 0x000022D4
+ .word 0x000022D4, 0x000022D8
+ .word 0x000022D8, 0x000022DC
+ .word 0x000022DC, 0x000022E0
+ .word 0x000022E0, 0x000022E4
+ .word 0x000022E4, 0x000022E8
+ .word 0x000022E8, 0x000022EC
+ .word 0x000022EC, 0x000022F0
+ .word 0x000022F0, 0x000022F4
+ .word 0x000022F4, 0x000022F8
+ .word 0x000022F8, 0x000022FC
+ .word 0x000022FC, 0x00002300
+ .word 0x00002300, 0x00002304
+ .word 0x00002304, 0x00002308
+ .word 0x00002308, 0x0000230C
+ .word 0x0000230C, 0x00002310
+ .word 0x00002310, 0x00002314
+ .word 0x00002314, 0x00002318
+ .word 0x00002318, 0x0000231C
+ .word 0x0000231C, 0x00002320
+ .word 0x00002320, 0x00002324
+ .word 0x00002324, 0x00002328
+ .word 0x00002328, 0x0000232C
+ .word 0x0000232C, 0x00002330
+ .word 0x00002330, 0x00002334
+ .word 0x00002334, 0x00002338
+ .word 0x00002338, 0x0000233C
+ .word 0x0000233C, 0x00002340
+ .word 0x00002340, 0x00002344
+ .word 0x00002344, 0x00002348
+ .word 0x00002348, 0x00002350
+ .word 0x00002350, 0x00002354
+ .word 0x00002354, 0x00002358
+ .word 0x00002358, 0x00002360
+ .word 0x00002360, 0x00002368
+ .word 0x00002368, 0x0000236C
+ .word 0x0000236C, 0x00002370
+ .word 0x00002370, 0x00002374
+ .word 0x00002374, 0x00002378
+ .word 0x00002378, 0x0000237C
+ .word 0x0000237C, 0x00002380
+ .word 0x00002380, 0x00002384
+ .word 0x00002384, 0x00002388
+ .word 0x00002388, 0x0000238C
+ .word 0x0000238C, 0x00002390
+ .word 0x00002390, 0x00002394
+ .word 0x00002394, 0x00002398
+ .word 0x00002398, 0x0000239C
+ .word 0x0000239C, 0x000023A0
+ .word 0x000023A0, 0x000023A4
+ .word 0x000023A4, 0x000023A8
+ .word 0x000023A8, 0x000023AC
+ .word 0x000023AC, 0x000023B0
+ .word 0x000023B0, 0x000023B4
+ .word 0x000023B4, 0x000023B8
+ .word 0x000023B8, 0x000023BC
+ .word 0x000023BC, 0x000023C0
+ .word 0x000023C0, 0x000023C4
+ .word 0x000023C4, 0x000023C8
+ .word 0x000023C8, 0x000023CC
+ .word 0x000023CC, 0x000023D0
+ .word 0x000023D0, 0x000023D4
+ .word 0x000023D4, 0x000023D8
+ .word 0x000023D8, 0x000023E0
+ .word 0x000023E0, 0x000023E4
+ .word 0x000023E4, 0x000023E8
+ .word 0x000023E8, 0x000023EC
+ .word 0x000023EC, 0x000023F0
+ .word 0x000023F0, 0x000023F4
+ .word 0x000023F4, 0x000023F8
+ .word 0x000023F8, 0x000023FC
+ .word 0x000023FC, 0x00002400
+ .word 0x00002400, 0x00002408
+ .word 0x00002408, 0x00002414
+ .word 0x00002414, 0x00002418
+ .word 0x00002418, 0x0000241C
+ .word 0x0000241C, 0x00002420
+ .word 0x00002420, 0x00002424
+ .word 0x00002424, 0x00002428
+ .word 0x00002428, 0x0000242C
+ .word 0x0000242C, 0x00002434
+ .word 0x00002434, 0x00002438
+ .word 0x00002438, 0x0000243C
+ .word 0x0000243C, 0x00002444
+ .word 0x00002444, 0x00002448
+ .word 0x00002448, 0x0000244C
+ .word 0x0000244C, 0x00002450
+ .word 0x00002450, 0x00002454
+ .word 0x00002454, 0x0000245C
+ .word 0x0000245C, 0x00002460
+ .word 0x00002460, 0x00002464
+ .word 0x00002464, 0x00002468
+ .word 0x00002468, 0x0000246C
+ .word 0x0000246C, 0x00002470
+ .word 0x00002470, 0x00002474
+ .word 0x00002474, 0x00002478
+ .word 0x00002478, 0x0000247C
+ .word 0x0000247C, 0x00002480
+ .word 0x00002480, 0x00002484
+ .word 0x00002484, 0x00002488
+ .word 0x00002488, 0x0000248C
+ .word 0x0000248C, 0x00002490
+ .word 0x00002490, 0x00002494
+ .word 0x00002494, 0x00002498
+ .word 0x00002498, 0x000024AC
+ .word 0x000024AC, 0x000024C0
+ .word 0x000024C0, 0x000024C4
+ .word 0x000024C4, 0x000024C8
+ .word 0x000024C8, 0x000024CC
+ .word 0x000024CC, 0x000024D0
+ .word 0x000024D0, 0x000024D4
+ .word 0x000024D4, 0x000024D8
+ .word 0x000024D8, 0x000024DC
+ .word 0x000024DC, 0x000024E0
+ .word 0x000024E0, 0x000024E4
+ .word 0x000024E4, 0x000024E8
+ .word 0x000024E8, 0x000024EC
+ .word 0x000024EC, 0x000024F0
+ .word 0x000024F0, 0x000024F4
+ .word 0x000024F4, 0x000024F8
+ .word 0x000024F8, 0x000024FC
+ .word 0x000024FC, 0x00002500
+ .word 0x00002500, 0x00002504
+ .word 0x00002504, 0x00002510
+ .word 0x00002510, 0x00002514
+ .word 0x00002514, 0x00002518
+ .word 0x00002518, 0x0000251C
+ .word 0x0000251C, 0x00002520
+ .word 0x00002520, 0x00002524
+ .word 0x00002524, 0x00002528
+ .word 0x00002528, 0x0000252C
+ .word 0x0000252C, 0x00002530
+ .word 0x00002530, 0x00002534
+ .word 0x00002534, 0x00002538
+ .word 0x00002538, 0x0000253C
+ .word 0x0000253C, 0x00002540
+ .word 0x00002540, 0x00002544
+ .word 0x00002544, 0x00002548
+ .word 0x00002548, 0x0000254C
+ .word 0x0000254C, 0x00002550
+ .word 0x00002550, 0x00002554
+ .word 0x00002554, 0x00002558
+ .word 0x00002558, 0x0000255C
+ .word 0x0000255C, 0x00002560
+ .word 0x00002560, 0x00002564
+ .word 0x00002564, 0x00002568
+ .word 0x00002568, 0x0000256C
+ .word 0x0000256C, 0x00002570
+ .word 0x00002570, 0x00002574
+ .word 0x00002574, 0x00002578
+ .word 0x00002578, 0x0000257C
+ .word 0x0000257C, 0x00002580
+ .word 0x00002580, 0x00002584
+ .word 0x00002584, 0x00002588
+ .word 0x00002588, 0x0000258C
+ .word 0x0000258C, 0x00002590
+ .word 0x00002590, 0x00002594
+ .word 0x00002594, 0x00002598
+ .word 0x00002598, 0x0000259C
+ .word 0x0000259C, 0x000025A0
+ .word 0x000025A0, 0x000025A4
+ .word 0x000025A4, 0x000025AC
+ .word 0x000025AC, 0x000025BC
+ .word 0x000025BC, 0x000025C0
+ .word 0x000025C0, 0x000025CC
+ .word 0x000025CC, 0x000025E0
+ .word 0x000025E0, 0x000025E4
+ .word 0x000025E4, 0x000025EC
+ .word 0x000025EC, 0x000025F0
+ .word 0x000025F0, 0x000025F4
+ .word 0x000025F4, 0x000025F8
+ .word 0x000025F8, 0x00002600
+ .word 0x00002600, 0x00002604
+ .word 0x00002604, 0x00002608
+ .word 0x00002608, 0x0000260C
+ .word 0x0000260C, 0x00002610
+ .word 0x00002610, 0x00002614
+ .word 0x00002614, 0x00002618
+ .word 0x00002618, 0x0000261C
+ .word 0x0000261C, 0x00002620
+ .word 0x00002620, 0x00002624
+ .word 0x00002624, 0x00002628
+ .word 0x00002628, 0x0000262C
+ .word 0x0000262C, 0x00002630
+ .word 0x00002630, 0x00002638
+ .word 0x00002638, 0x0000263C
+ .word 0x0000263C, 0x00002640
+ .word 0x00002640, 0x00002644
+ .word 0x00002644, 0x00002648
+ .word 0x00002648, 0x0000264C
+ .word 0x0000264C, 0x00002650
+ .word 0x00002650, 0x00002654
+ .word 0x00002654, 0x0000265C
+ .word 0x0000265C, 0x00002660
+ .word 0x00002660, 0x00002664
+ .word 0x00002664, 0x00002668
+ .word 0x00002668, 0x0000266C
+ .word 0x0000266C, 0x00002670
+ .word 0x00002670, 0x00002680
+ .word 0x00002680, 0x00002684
+ .word 0x00002684, 0x00002688
+ .word 0x00002688, 0x00002698
+ .word 0x00002698, 0x000026A4
+ .word 0x000026A4, 0x000026A8
+ .word 0x000026A8, 0x000026AC
+ .word 0x000026AC, 0x000026B0
+ .word 0x000026B0, 0x000026B4
+ .word 0x000026B4, 0x000026B8
+ .word 0x000026B8, 0x000026C0
+ .word 0x000026C0, 0x000026C4
+ .word 0x000026C4, 0x000026C8
+ .word 0x000026C8, 0x000026CC
+ .word 0x000026CC, 0x000026D0
+ .word 0x000026D0, 0x000026D4
+ .word 0x000026D4, 0x000026DC
+ .word 0x000026DC, 0x000026E0
+ .word 0x000026E0, 0x000026E4
+ .word 0x000026E4, 0x000026E8
+ .word 0x000026E8, 0x000026EC
+ .word 0x000026EC, 0x000026F0
+ .word 0x000026F0, 0x000026F4
+ .word 0x000026F4, 0x000026F8
+ .word 0x000026F8, 0x000026FC
+ .word 0x000026FC, 0x00002700
+ .word 0x00002700, 0x00002708
+ .word 0x00002708, 0x00002710
+ .word 0x00002710, 0x00002714
+ .word 0x00002714, 0x00002718
+ .word 0x00002718, 0x0000271C
+ .word 0x0000271C, 0x00002720
+ .word 0x00002720, 0x00002724
+ .word 0x00002724, 0x00002728
+ .word 0x00002728, 0x0000272C
+ .word 0x0000272C, 0x00002730
+ .word 0x00002730, 0x00002734
+ .word 0x00002734, 0x00002738
+ .word 0x00002738, 0x0000273C
+ .word 0x0000273C, 0x00002740
+ .word 0x00002740, 0x00002744
+ .word 0x00002744, 0x00002748
+ .word 0x00002748, 0x0000274C
+ .word 0x0000274C, 0x00002750
+ .word 0x00002750, 0x00002754
+ .word 0x00002754, 0x00002758
+ .word 0x00002758, 0x0000275C
+ .word 0x0000275C, 0x00002760
+ .word 0x00002760, 0x00002764
+ .word 0x00002764, 0x00002768
+ .word 0x00002768, 0x0000276C
+ .word 0x0000276C, 0x00002770
+ .word 0x00002770, 0x00002774
+ .word 0x00002774, 0x00002778
+ .word 0x00002778, 0x0000277C
+ .word 0x0000277C, 0x00002780
+ .word 0x00002780, 0x00002784
+ .word 0x00002784, 0x00002788
+ .word 0x00002788, 0x0000278C
+ .word 0x0000278C, 0x00002790
+ .word 0x00002790, 0x00002794
+ .word 0x00002794, 0x00002798
+ .word 0x00002798, 0x000027EC
+ .word 0x000027EC, 0x000027F0
+ .word 0x000027F0, 0x000027F4
+ .word 0x000027F4, 0x000027F8
+ .word 0x000027F8, 0x000027FC
+ .word 0x000027FC, 0x00002800
+ .word 0x00002800, 0x00002804
+ .word 0x00002804, 0x00002808
+ .word 0x00002808, 0x0000280C
+ .word 0x0000280C, 0x00002810
+ .word 0x00002810, 0x00002814
+ .word 0x00002814, 0x00002818
+ .word 0x00002818, 0x0000281C
+ .word 0x0000281C, 0x00002820
+ .word 0x00002820, 0x00002824
+ .word 0x00002824, 0x00002828
+ .word 0x00002828, 0x0000282C
+ .word 0x0000282C, 0x00002830
+ .word 0x00002830, 0x00002834
+ .word 0x00002834, 0x00002838
+ .word 0x00002838, 0x0000283C
+ .word 0x0000283C, 0x00002840
+ .word 0x00002840, 0x00002844
+ .word 0x00002844, 0x00002848
+ .word 0x00002848, 0x0000284C
+ .word 0x0000284C, 0x00002850
+ .word 0x00002850, 0x00002854
+ .word 0x00002854, 0x00002858
+ .word 0x00002858, 0x0000285C
+ .word 0x0000285C, 0x00002860
+ .word 0x00002860, 0x00002864
+ .word 0x00002864, 0x00002868
+ .word 0x00002868, 0x0000286C
+ .word 0x0000286C, 0x00002870
+ .word 0x00002870, 0x00002874
+ .word 0x00002874, 0x00002878
+ .word 0x00002878, 0x0000287C
+ .word 0x0000287C, 0x00002880
+ .word 0x00002880, 0x00002884
+ .word 0x00002884, 0x00002888
+ .word 0x00002888, 0x0000288C
+ .word 0x0000288C, 0x00002890
+ .word 0x00002890, 0x00002894
+ .word 0x00002894, 0x00002898
+ .word 0x00002898, 0x0000289C
+ .word 0x0000289C, 0x000028A0
+ .word 0x000028A0, 0x000028A4
+ .word 0x000028A4, 0x000028A8
+ .word 0x000028A8, 0x000028AC
+ .word 0x000028AC, 0x000028B0
+ .word 0x000028B0, 0x000028B4
+ .word 0x000028B4, 0x000028B8
+ .word 0x000028B8, 0x000028BC
+ .word 0x000028BC, 0x000028C0
+ .word 0x000028C0, 0x000028C4
+ .word 0x000028C4, 0x000028CC
+ .word 0x000028CC, 0x000028D0
+ .word 0x000028D0, 0x000028D4
+ .word 0x000028D4, 0x000028D8
+ .word 0x000028D8, 0x000028DC
+ .word 0x000028DC, 0x000028E0
+ .word 0x000028E0, 0x000028E4
+ .word 0x000028E4, 0x000028E8
+ .word 0x000028E8, 0x000028EC
+ .word 0x000028EC, 0x000028F0
+ .word 0x000028F0, 0x000028F4
+ .word 0x000028F4, 0x000028F8
+ .word 0x000028F8, 0x000028FC
+ .word 0x000028FC, 0x00002900
+ .word 0x00002900, 0x00002904
+ .word 0x00002904, 0x00002908
+ .word 0x00002908, 0x0000290C
+ .word 0x0000290C, 0x00002910
+ .word 0x00002910, 0x00002914
+ .word 0x00002914, 0x00002918
+ .word 0x00002918, 0x0000291C
+ .word 0x0000291C, 0x00002920
+ .word 0x00002920, 0x00002924
+ .word 0x00002924, 0x00002928
+ .word 0x00002928, 0x0000292C
+ .word 0x0000292C, 0x00002930
+ .word 0x00002930, 0x00002934
+ .word 0x00002934, 0x00002938
+ .word 0x00002938, 0x0000293C
+ .word 0x0000293C, 0x00002940
+ .word 0x00002940, 0x00002944
+ .word 0x00002944, 0x00002948
+ .word 0x00002948, 0x0000294C
+ .word 0x0000294C, 0x00002950
+ .word 0x00002950, 0x00002954
+ .word 0x00002954, 0x00002958
+ .word 0x00002958, 0x0000295C
+ .word 0x0000295C, 0x00002960
+ .word 0x00002960, 0x00002964
+ .word 0x00002964, 0x00002968
+ .word 0x00002968, 0x0000296C
+ .word 0x0000296C, 0x00002970
+ .word 0x00002970, 0x00002974
+ .word 0x00002974, 0x00002978
+ .word 0x00002978, 0x0000297C
+ .word 0x0000297C, 0x00002980
+ .word 0x00002980, 0x00002984
+ .word 0x00002984, 0x00002988
+ .word 0x00002988, 0x0000298C
+ .word 0x0000298C, 0x00002990
+ .word 0x00002990, 0x00002994
+ .word 0x00002994, 0x00002998
+ .word 0x00002998, 0x0000299C
+ .word 0x0000299C, 0x000029A0
+ .word 0x000029A0, 0x000029A4
+ .word 0x000029A4, 0x000029A8
+ .word 0x000029A8, 0x000029AC
+ .word 0x000029AC, 0x000029B0
+ .word 0x000029B0, 0x000029B4
+ .word 0x000029B4, 0x000029B8
+ .word 0x000029B8, 0x000029BC
+ .word 0x000029BC, 0x000029C0
+ .word 0x000029C0, 0x000029C4
+ .word 0x000029C4, 0x000029C8
+ .word 0x000029C8, 0x000029CC
+ .word 0x000029CC, 0x000029D0
+ .word 0x000029D0, 0x000029D4
+ .word 0x000029D4, 0x000029D8
+ .word 0x000029D8, 0x000029DC
+ .word 0x000029DC, 0x000029E0
+ .word 0x000029E0, 0x000029E4
+ .word 0x000029E4, 0x000029E8
+ .word 0x000029E8, 0x000029EC
+ .word 0x000029EC, 0x000029F0
+ .word 0x000029F0, 0x000029F4
+ .word 0x000029F4, 0x000029F8
+ .word 0x000029F8, 0x000029FC
+ .word 0x000029FC, 0x00002A00
+ .word 0x00002A00, 0x00002A04
+ .word 0x00002A04, 0x00002A08
+ .word 0x00002A08, 0x00002A0C
+ .word 0x00002A0C, 0x00002A10
+ .word 0x00002A10, 0x00002A14
+ .word 0x00002A14, 0x00002A18
+ .word 0x00002A18, 0x00002A1C
+ .word 0x00002A1C, 0x00002A20
+ .word 0x00002A20, 0x00002A24
+ .word 0x00002A24, 0x00002A28
+ .word 0x00002A28, 0x00002A2C
+ .word 0x00002A2C, 0x00002A30
+ .word 0x00002A30, 0x00002A34
+ .word 0x00002A34, 0x00002A38
+ .word 0x00002A38, 0x00002A3C
+ .word 0x00002A3C, 0x00002A40
+ .word 0x00002A40, 0x00002A44
+ .word 0x00002A44, 0x00002A48
+ .word 0x00002A48, 0x00002A4C
+ .word 0x00002A4C, 0x00002A50
+ .word 0x00002A50, 0x00002A54
+ .word 0x00002A54, 0x00002A58
+ .word 0x00002A58, 0x00002A5C
+ .word 0x00002A5C, 0x00002A60
+ .word 0x00002A60, 0x00002A64
+ .word 0x00002A64, 0x00002A68
+ .word 0x00002A68, 0x00002A6C
+ .word 0x00002A6C, 0x00002A70
+ .word 0x00002A70, 0x00002A74
+ .word 0x00002A74, 0x00002A78
+ .word 0x00002A78, 0x00002A7C
+ .word 0x00002A7C, 0x00002A80
+ .word 0x00002A80, 0x00002A84
+ .word 0x00002A84, 0x00002A88
+ .word 0x00002A88, 0x00002A8C
+ .word 0x00002A8C, 0x00002A90
+ .word 0x00002A90, 0x00002A94
+ .word 0x00002A94, 0x00002A98
+ .word 0x00002A98, 0x00002A9C
+ .word 0x00002A9C, 0x00002AA0
+ .word 0x00002AA0, 0x00002AA4
+ .word 0x00002AA4, 0x00002AA8
+ .word 0x00002AA8, 0x00002AAC
+ .word 0x00002AAC, 0x00002AB0
+ .word 0x00002AB0, 0x00002AB4
+ .word 0x00002AB4, 0x00002AB8
+ .word 0x00002AB8, 0x00002ABC
+ .word 0x00002ABC, 0x00002AC0
+ .word 0x00002AC0, 0x00002AC4
+ .word 0x00002AC4, 0x00002AC8
+ .word 0x00002AC8, 0x00002AD0
+ .word 0x00002AD0, 0x00002AD4
+ .word 0x00002AD4, 0x00002AD8
+ .word 0x00002AD8, 0x00002ADC
+ .word 0x00002ADC, 0x00002AE0
+ .word 0x00002AE0, 0x00002AE4
+ .word 0x00002AE4, 0x00002AE8
+ .word 0x00002AE8, 0x00002AF0
+ .word 0x00002AF0, 0x00002AF4
+ .word 0x00002AF4, 0x00002AF8
+ .word 0x00002AF8, 0x00002AFC
+ .word 0x00002AFC, 0x00002B04
+ .word 0x00002B04, 0x00002B0C
+ .word 0x00002B0C, 0x00002B10
+ .word 0x00002B10, 0x00002B14
+ .word 0x00002B14, 0x00002B18
+ .word 0x00002B18, 0x00002B1C
+ .word 0x00002B1C, 0x00002B20
+ .word 0x00002B20, 0x00002B24
+ .word 0x00002B24, 0x00002B28
+ .word 0x00002B28, 0x00002B2C
+ .word 0x00002B2C, 0x00002B30
+ .word 0x00002B30, 0x00002B34
+ .word 0x00002B34, 0x00002B38
+ .word 0x00002B38, 0x00002B3C
+ .word 0x00002B3C, 0x00002B40
+ .word 0x00002B40, 0x00002B44
+ .word 0x00002B44, 0x00002B48
+ .word 0x00002B48, 0x00002B4C
+ .word 0x00002B4C, 0x00002B50
+ .word 0x00002B50, 0x00002B54
+ .word 0x00002B54, 0x00002B5C
+ .word 0x00002B5C, 0x00002B60
+ .word 0x00002B60, 0x00002B64
+ .word 0x00002B64, 0x00002B68
+ .word 0x00002B68, 0x00002B6C
+ .word 0x00002B6C, 0x00002B70
+ .word 0x00002B70, 0x00002B74
+ .word 0x00002B74, 0x00002B78
+ .word 0x00002B78, 0x00002B7C
+ .word 0x00002B7C, 0x00002B80
+ .word 0x00002B80, 0x00002B84
+ .word 0x00002B84, 0x00002B88
+ .word 0x00002B88, 0x00002B8C
+ .word 0x00002B8C, 0x00002B90
+ .word 0x00002B90, 0x00002B94
+ .word 0x00002B94, 0x00002B98
+ .word 0x00002B98, 0x00002B9C
+ .word 0x00002B9C, 0x00002BA0
+ .word 0x00002BA0, 0x00002BA4
+ .word 0x00002BA4, 0x00002BA8
+ .word 0x00002BA8, 0x00002BAC
+ .word 0x00002BAC, 0x00002BB0
+ .word 0x00002BB0, 0x00002BB4
+ .word 0x00002BB4, 0x00002BB8
+ .word 0x00002BB8, 0x00002BBC
+ .word 0x00002BBC, 0x00002BC0
+ .word 0x00002BC0, 0x00002BC4
+ .word 0x00002BC4, 0x00002BC8
+ .word 0x00002BC8, 0x00002BCC
+ .word 0x00002BCC, 0x00002BD0
+ .word 0x00002BD0, 0x00002BD4
+ .word 0x00002BD4, 0x00002BD8
+ .word 0x00002BD8, 0x00002BDC
+ .word 0x00002BDC, 0x00002BE0
+ .word 0x00002BE0, 0x00002BE4
+ .word 0x00002BE4, 0x00002BE8
+ .word 0x00002BE8, 0x00002BEC
+ .word 0x00002BEC, 0x00002BF0
+ .word 0x00002BF0, 0x00002BF4
+ .word 0x00002BF4, 0x00002BF8
+ .word 0x00002BF8, 0x00002BFC
+ .word 0x00002BFC, 0x00002C00
+ .word 0x00002C00, 0x00002C04
+ .word 0x00002C04, 0x00002C08
+ .word 0x00002C08, 0x00002C0C
+ .word 0x00002C0C, 0x00002C10
+ .word 0x00002C10, 0x00002C14
+ .word 0x00002C14, 0x00002C18
+ .word 0x00002C18, 0x00002C1C
+ .word 0x00002C1C, 0x00002C20
+ .word 0x00002C20, 0x00002C24
+ .word 0x00002C24, 0x00002C2C
+ .word 0x00002C2C, 0x00002C30
+ .word 0x00002C30, 0x00002C34
+ .word 0x00002C34, 0x00002C3C
+ .word 0x00002C3C, 0x00002C40
+ .word 0x00002C40, 0x00002C44
+ .word 0x00002C44, 0x00002C48
+ .word 0x00002C48, 0x00002C4C
+ .word 0x00002C4C, 0x00002C50
+ .word 0x00002C50, 0x00002C54
+ .word 0x00002C54, 0x00002C58
+ .word 0x00002C58, 0x00002C5C
+ .word 0x00002C5C, 0x00002C60
+ .word 0x00002C60, 0x00002C64
+ .word 0x00002C64, 0x00002C68
+ .word 0x00002C68, 0x00002C6C
+ .word 0x00002C6C, 0x00002C70
+ .word 0x00002C70, 0x00002C74
+ .word 0x00002C74, 0x00002C78
+ .word 0x00002C78, 0x00002C7C
+ .word 0x00002C7C, 0x00002C80
+ .word 0x00002C80, 0x00002C84
+ .word 0x00002C84, 0x00002C88
+ .word 0x00002C88, 0x00002C8C
+ .word 0x00002C8C, 0x00002C90
+ .word 0x00002C90, 0x00002C94
+ .word 0x00002C94, 0x00002C98
+ .word 0x00002C98, 0x00002C9C
+ .word 0x00002C9C, 0x00002CA0
+ .word 0x00002CA0, 0x00002CA4
+ .word 0x00002CA4, 0x00002CA8
+ .word 0x00002CA8, 0x00002CAC
+ .word 0x00002CAC, 0x00002CB0
+ .word 0x00002CB0, 0x00002CB8
+ .word 0x00002CB8, 0x00002CBC
+ .word 0x00002CBC, 0x00002CC0
+ .word 0x00002CC0, 0x00002CC4
+ .word 0x00002CC4, 0x00002CC8
+ .word 0x00002CC8, 0x00002CCC
+ .word 0x00002CCC, 0x00002CD0
+ .word 0x00002CD0, 0x00002CD4
+ .word 0x00002CD4, 0x00002CD8
+ .word 0x00002CD8, 0x00002CDC
+ .word 0x00002CDC, 0x00002CE0
+ .word 0x00002CE0, 0x00002CE4
+ .word 0x00002CE4, 0x00002CE8
+ .word 0x00002CE8, 0x00002CEC
+ .word 0x00002CEC, 0x00002CF0
+ .word 0x00002CF0, 0x00002CF4
+ .word 0x00002CF4, 0x00002CF8
+ .word 0x00002CF8, 0x00002D00
+ .word 0x00002D00, 0x00002D04
+ .word 0x00002D04, 0x00002D08
+ .word 0x00002D08, 0x00002D0C
+ .word 0x00002D0C, 0x00002D10
+ .word 0x00002D10, 0x00002D14
+ .word 0x00002D14, 0x00002D18
+ .word 0x00002D18, 0x00002D1C
+ .word 0x00002D1C, 0x00002D20
+ .word 0x00002D20, 0x00002D24
+ .word 0x00002D24, 0x00002D28
+ .word 0x00002D28, 0x00002D2C
+ .word 0x00002D2C, 0x00002D30
+ .word 0x00002D30, 0x00002D34
+ .word 0x00002D34, 0x00002D38
+ .word 0x00002D38, 0x00002D3C
+ .word 0x00002D3C, 0x00002D40
+ .word 0x00002D40, 0x00002D44
+ .word 0x00002D44, 0x00002D48
+ .word 0x00002D48, 0x00002D4C
+ .word 0x00002D4C, 0x00002D50
+ .word 0x00002D50, 0x00002D54
+ .word 0x00002D54, 0x00002D58
+ .word 0x00002D58, 0x00002D5C
+ .word 0x00002D5C, 0x00002D60
+ .word 0x00002D60, 0x00002D64
+ .word 0x00002D64, 0x00002D68
+ .word 0x00002D68, 0x00002D6C
+ .word 0x00002D6C, 0x00002D70
+ .word 0x00002D70, 0x00002D74
+ .word 0x00002D74, 0x00002D78
+ .word 0x00002D78, 0x00002D7C
+ .word 0x00002D7C, 0x00002D80
+ .word 0x00002D80, 0x00002D84
+ .word 0x00002D84, 0x00002D8C
+ .word 0x00002D8C, 0x00002D90
+ .word 0x00002D90, 0x00002D94
+ .word 0x00002D94, 0x00002D98
+ .word 0x00002D98, 0x00002D9C
+ .word 0x00002D9C, 0x00002DA0
+ .word 0x00002DA0, 0x00002DA4
+ .word 0x00002DA4, 0x00002DA8
+ .word 0x00002DA8, 0x00002DAC
+ .word 0x00002DAC, 0x00002DB0
+ .word 0x00002DB0, 0x00002DB4
+ .word 0x00002DB4, 0x00002DB8
+ .word 0x00002DB8, 0x00002DBC
+ .word 0x00002DBC, 0x00002DC0
+ .word 0x00002DC0, 0x00002DC4
+ .word 0x00002DC4, 0x00002DC8
+ .word 0x00002DC8, 0x00002DCC
+ .word 0x00002DCC, 0x00002DD0
+ .word 0x00002DD0, 0x00002DD4
+ .word 0x00002DD4, 0x00002DD8
+ .word 0x00002DD8, 0x00002DDC
+ .word 0x00002DDC, 0x00002DE0
+ .word 0x00002DE0, 0x00002DE4
+ .word 0x00002DE4, 0x00002DE8
+ .word 0x00002DE8, 0x00002DEC
+ .word 0x00002DEC, 0x00002DF0
+ .word 0x00002DF0, 0x00002DF4
+ .word 0x00002DF4, 0x00002DF8
+ .word 0x00002DF8, 0x00002DFC
+ .word 0x00002DFC, 0x00002E00
+ .word 0x00002E00, 0x00002E04
+ .word 0x00002E04, 0x00002E08
+ .word 0x00002E08, 0x00002E0C
+ .word 0x00002E0C, 0x00002E10
+ .word 0x00002E10, 0x00002E14
+ .word 0x00002E14, 0x00002E18
+ .word 0x00002E18, 0x00002E1C
+ .word 0x00002E1C, 0x00002E20
+ .word 0x00002E20, 0x00002E24
+ .word 0x00002E24, 0x00002E28
+ .word 0x00002E28, 0x00002E2C
+ .word 0x00002E2C, 0x00002E30
+ .word 0x00002E30, 0x00002E34
+ .word 0x00002E34, 0x00002E38
+ .word 0x00002E38, 0x00002E3C
+ .word 0x00002E3C, 0x00002E40
+ .word 0x00002E40, 0x00002E44
+ .word 0x00002E44, 0x00002E48
+ .word 0x00002E48, 0x00002E50
+ .word 0x00002E50, 0x00002E54
+ .word 0x00002E54, 0x00002E5C
+ .word 0x00002E5C, 0x00002E64
+ .word 0x00002E64, 0x00002E68
+ .word 0x00002E68, 0x00002E6C
+ .word 0x00002E6C, 0x00002E70
+ .word 0x00002E70, 0x00002E74
+ .word 0x00002E74, 0x00002E78
+ .word 0x00002E78, 0x00002E7C
+ .word 0x00002E7C, 0x00002E80
+ .word 0x00002E80, 0x00002E84
+ .word 0x00002E84, 0x00002E88
+ .word 0x00002E88, 0x00002E8C
+ .word 0x00002E8C, 0x00002E90
+ .word 0x00002E90, 0x00002E98
+ .word 0x00002E98, 0x00002E9C
+ .word 0x00002E9C, 0x00002EA0
+ .word 0x00002EA0, 0x00002EA8
+ .word 0x00002EA8, 0x00002EAC
+ .word 0x00002EAC, 0x00002EB0
+ .word 0x00002EB0, 0x00002EB4
+ .word 0x00002EB4, 0x00002EB8
+ .word 0x00002EB8, 0x00002EC0
+ .word 0x00002EC0, 0x00002EC4
+ .word 0x00002EC4, 0x00002EC8
+ .word 0x00002EC8, 0x00002ECC
+ .word 0x00002ECC, 0x00002ED0
+ .word 0x00002ED0, 0x00002ED4
+ .word 0x00002ED4, 0x00002ED8
+ .word 0x00002ED8, 0x00002EDC
+ .word 0x00002EDC, 0x00002EE0
+ .word 0x00002EE0, 0x00002EE4
+ .word 0x00002EE4, 0x00002EE8
+ .word 0x00002EE8, 0x00002EEC
+ .word 0x00002EEC, 0x00002EF0
+ .word 0x00002EF0, 0x00002EF4
+ .word 0x00002EF4, 0x00002EF8
+ .word 0x00002EF8, 0x00002EFC
+ .word 0x00002EFC, 0x00002F00
+ .word 0x00002F00, 0x00002F04
+ .word 0x00002F04, 0x00002F08
+ .word 0x00002F08, 0x00002F0C
+ .word 0x00002F0C, 0x00002F10
+ .word 0x00002F10, 0x00002F14
+ .word 0x00002F14, 0x00002F18
+ .word 0x00002F18, 0x00002F1C
+ .word 0x00002F1C, 0x00002F20
+ .word 0x00002F20, 0x00002F24
+ .word 0x00002F24, 0x00002F28
+ .word 0x00002F28, 0x00002F2C
+ .word 0x00002F2C, 0x00002F30
+ .word 0x00002F30, 0x00002F34
+ .word 0x00002F34, 0x00002F38
+ .word 0x00002F38, 0x00002F40
+ .word 0x00002F40, 0x00002F44
+ .word 0x00002F44, 0x00002F4C
+ .word 0x00002F4C, 0x00002F50
+ .word 0x00002F50, 0x00002F58
+ .word 0x00002F58, 0x00002F5C
+ .word 0x00002F5C, 0x00002F60
+ .word 0x00002F60, 0x00002F64
+ .word 0x00002F64, 0x00002F68
+ .word 0x00002F68, 0x00002F6C
+ .word 0x00002F6C, 0x00002F70
+ .word 0x00002F70, 0x00002F74
+ .word 0x00002F74, 0x00002F78
+ .word 0x00002F78, 0x00002F7C
+ .word 0x00002F7C, 0x00002F80
+ .word 0x00002F80, 0x00002F84
+ .word 0x00002F84, 0x00002F88
+ .word 0x00002F88, 0x00002F8C
+ .word 0x00002F8C, 0x00002F90
+ .word 0x00002F90, 0x00002F94
+ .word 0x00002F94, 0x00002F98
+ .word 0x00002F98, 0x00002F9C
+ .word 0x00002F9C, 0x00002FA0
+ .word 0x00002FA0, 0x00002FA4
+ .word 0x00002FA4, 0x00002FA8
+ .word 0x00002FA8, 0x00002FAC
+ .word 0x00002FAC, 0x00002FB0
+ .word 0x00002FB0, 0x00002FB4
+ .word 0x00002FB4, 0x00002FB8
+ .word 0x00002FB8, 0x00002FBC
+ .word 0x00002FBC, 0x00002FC0
+ .word 0x00002FC0, 0x00002FC4
+ .word 0x00002FC4, 0x00002FC8
+ .word 0x00002FC8, 0x00002FCC
+ .word 0x00002FCC, 0x00002FD0
+ .word 0x00002FD0, 0x00002FD4
+ .word 0x00002FD4, 0x00002FD8
+ .word 0x00002FD8, 0x00002FDC
+ .word 0x00002FDC, 0x00002FE0
+ .word 0x00002FE0, 0x00002FE4
+ .word 0x00002FE4, 0x00002FE8
+ .word 0x00002FE8, 0x00002FEC
+ .word 0x00002FEC, 0x00002FF0
+ .word 0x00002FF0, 0x00002FF4
+ .word 0x00002FF4, 0x00002FF8
+ .word 0x00002FF8, 0x00002FFC
+ .word 0x00002FFC, 0x00003000
+ .word 0x00003000, 0x00003004
+ .word 0x00003004, 0x00003008
+ .word 0x00003008, 0x0000300C
+ .word 0x0000300C, 0x00003010
+ .word 0x00003010, 0x00003014
+ .word 0x00003014, 0x00003018
+ .word 0x00003018, 0x0000301C
+ .word 0x0000301C, 0x00003020
+ .word 0x00003020, 0x00003024
+ .word 0x00003024, 0x00003028
+ .word 0x00003028, 0x0000302C
+ .word 0x0000302C, 0x00003030
+ .word 0x00003030, 0x00003034
+ .word 0x00003034, 0x00003038
+ .word 0x00003038, 0x0000303C
+ .word 0x0000303C, 0x00003040
+ .word 0x00003040, 0x00003044
+ .word 0x00003044, 0x00003048
+ .word 0x00003048, 0x0000304C
+ .word 0x0000304C, 0x00003050
+ .word 0x00003050, 0x00003054
+ .word 0x00003054, 0x00003058
+ .word 0x00003058, 0x00003060
+ .word 0x00003060, 0x00003064
+ .word 0x00003064, 0x00003068
+ .word 0x00003068, 0x0000306C
+ .word 0x0000306C, 0x00003070
+ .word 0x00003070, 0x00003074
+ .word 0x00003074, 0x00003078
+ .word 0x00003078, 0x0000307C
+ .word 0x0000307C, 0x00003080
+ .word 0x00003080, 0x00003084
+ .word 0x00003084, 0x00003090
+ .word 0x00003090, 0x00003094
+ .word 0x00003094, 0x00003098
+ .word 0x00003098, 0x0000309C
+ .word 0x0000309C, 0x000030A4
+ .word 0x000030A4, 0x000030A8
+ .word 0x000030A8, 0x000030C0
+ .word 0x000030C0, 0x000030D0
+ .word 0x000030D0, 0x000030D4
+ .word 0x000030D4, 0x000030D8
+ .word 0x000030D8, 0x000030DC
+ .word 0x000030DC, 0x000030E4
+ .word 0x000030E4, 0x000030E8
+ .word 0x000030E8, 0x000030EC
+ .word 0x000030EC, 0x000030F0
+ .word 0x000030F0, 0x000030F4
+ .word 0x000030F4, 0x000030F8
+ .word 0x000030F8, 0x00003100
+ .word 0x00003100, 0x00003104
+ .word 0x00003104, 0x00003110
+ .word 0x00003110, 0x0000311C
+ .word 0x0000311C, 0x00003120
+ .word 0x00003120, 0x00003124
+ .word 0x00003124, 0x00003128
+ .word 0x00003128, 0x0000312C
+ .word 0x0000312C, 0x00003130
+ .word 0x00003130, 0x00003134
+ .word 0x00003134, 0x00003138
+ .word 0x00003138, 0x0000313C
+ .word 0x0000313C, 0x00003144
+ .word 0x00003144, 0x00003148
+ .word 0x00003148, 0x00003150
+ .word 0x00003150, 0x0000315C
+ .word 0x0000315C, 0x00003160
+ .word 0x00003160, 0x00003164
+ .word 0x00003164, 0x00003168
+ .word 0x00003168, 0x0000316C
+ .word 0x0000316C, 0x00003170
+ .word 0x00003170, 0x00003174
+ .word 0x00003174, 0x00003190
+ .word 0x00003190, 0x00003198
+ .word 0x00003198, 0x0000319C
+ .word 0x0000319C, 0x000031A0
+ .word 0x000031A0, 0x000031A4
+ .word 0x000031A4, 0x000031A8
+ .word 0x000031A8, 0x000031AC
+ .word 0x000031AC, 0x000031B0
+ .word 0x000031B0, 0x000031B4
+ .word 0x000031B4, 0x000031B8
+ .word 0x000031B8, 0x000031BC
+ .word 0x000031BC, 0x000031C0
+ .word 0x000031C0, 0x000031C4
+ .word 0x000031C4, 0x000031C8
+ .word 0x000031C8, 0x000031CC
+ .word 0x000031CC, 0x000031D0
+ .word 0x000031D0, 0x000031D4
+ .word 0x000031D4, 0x000031D8
+ .word 0x000031D8, 0x000031E4
+ .word 0x000031E4, 0x000031EC
+ .word 0x000031EC, 0x000031F0
+ .word 0x000031F0, 0x00003200
+ .word 0x00003200, 0x00003204
+ .word 0x00003204, 0x00003208
+ .word 0x00003208, 0x0000320C
+ .word 0x0000320C, 0x00003210
+ .word 0x00003210, 0x00003214
+ .word 0x00003214, 0x00003218
+ .word 0x00003218, 0x00003220
+ .word 0x00003220, 0x00003224
+ .word 0x00003224, 0x00003228
+ .word 0x00003228, 0x0000322C
+ .word 0x0000322C, 0x00003230
+ .word 0x00003230, 0x00003234
+ .word 0x00003234, 0x00003238
+ .word 0x00003238, 0x0000323C
+ .word 0x0000323C, 0x00003244
+ .word 0x00003244, 0x00003248
+ .word 0x00003248, 0x0000324C
+ .word 0x0000324C, 0x00003254
+ .word 0x00003254, 0x00003258
+ .word 0x00003258, 0x00003260
+ .word 0x00003260, 0x00003264
+ .word 0x00003264, 0x00003268
+ .word 0x00003268, 0x0000326C
+ .word 0x0000326C, 0x00003270
+ .word 0x00003270, 0x00003274
+ .word 0x00003274, 0x00003278
+ .word 0x00003278, 0x0000327C
+ .word 0x0000327C, 0x00003280
+ .word 0x00003280, 0x00003284
+ .word 0x00003284, 0x00003288
+ .word 0x00003288, 0x0000328C
+ .word 0x0000328C, 0x00003290
+ .word 0x00003290, 0x00003294
+ .word 0x00003294, 0x00003298
+ .word 0x00003298, 0x0000329C
+ .word 0x0000329C, 0x000032A0
+ .word 0x000032A0, 0x000032A4
+ .word 0x000032A4, 0x000032AC
+ .word 0x000032AC, 0x000032B0
+ .word 0x000032B0, 0x000032B4
+ .word 0x000032B4, 0x000032B8
+ .word 0x000032B8, 0x000032C0
+ .word 0x000032C0, 0x000032C4
+ .word 0x000032C4, 0x000032C8
+ .word 0x000032C8, 0x000032CC
+ .word 0x000032CC, 0x000032D0
+ .word 0x000032D0, 0x000032D4
+ .word 0x000032D4, 0x000032D8
+ .word 0x000032D8, 0x000032DC
+ .word 0x000032DC, 0x000032E0
+ .word 0x000032E0, 0x000032E4
+ .word 0x000032E4, 0x000032E8
+ .word 0x000032E8, 0x000032EC
+ .word 0x000032EC, 0x000032F0
+ .word 0x000032F0, 0x000032F4
+ .word 0x000032F4, 0x000032F8
+ .word 0x000032F8, 0x000032FC
+ .word 0x000032FC, 0x00003300
+ .word 0x00003300, 0x00003304
+ .word 0x00003304, 0x00003308
+ .word 0x00003308, 0x0000330C
+ .word 0x0000330C, 0x00003310
+ .word 0x00003310, 0x00003314
+ .word 0x00003314, 0x00003318
+ .word 0x00003318, 0x0000331C
+ .word 0x0000331C, 0x00003320
+ .word 0x00003320, 0x00003324
+ .word 0x00003324, 0x00003328
+ .word 0x00003328, 0x0000332C
+ .word 0x0000332C, 0x00003330
+ .word 0x00003330, 0x00003334
+ .word 0x00003334, 0x00003338
+ .word 0x00003338, 0x0000333C
+ .word 0x0000333C, 0x00003340
+ .word 0x00003340, 0x00003344
+ .word 0x00003344, 0x00003348
+ .word 0x00003348, 0x00003350
+ .word 0x00003350, 0x0000335C
+ .word 0x0000335C, 0x00003364
+ .word 0x00003364, 0x00003368
+ .word 0x00003368, 0x0000336C
+ .word 0x0000336C, 0x00003370
+ .word 0x00003370, 0x00003374
+ .word 0x00003374, 0x00003378
+ .word 0x00003378, 0x0000337C
+ .word 0x0000337C, 0x00003380
+ .word 0x00003380, 0x00003384
+ .word 0x00003384, 0x00003390
+ .word 0x00003390, 0x00003394
+ .word 0x00003394, 0x00003398
+ .word 0x00003398, 0x0000339C
+ .word 0x0000339C, 0x000033A0
+ .word 0x000033A0, 0x000033A4
+ .word 0x000033A4, 0x000033A8
+ .word 0x000033A8, 0x000033B0
+ .word 0x000033B0, 0x000033B4
+ .word 0x000033B4, 0x000033B8
+ .word 0x000033B8, 0x000033C0
+ .word 0x000033C0, 0x000033C4
+ .word 0x000033C4, 0x000033CC
+ .word 0x000033CC, 0x000033D0
+ .word 0x000033D0, 0x000033D4
+ .word 0x000033D4, 0x000033D8
+ .word 0x000033D8, 0x000033DC
+ .word 0x000033DC, 0x000033E0
+ .word 0x000033E0, 0x000033E8
+ .word 0x000033E8, 0x000033F8
+ .word 0x000033F8, 0x000033FC
+ .word 0x000033FC, 0x00003400
+ .word 0x00003400, 0x00003404
+ .word 0x00003404, 0x00003408
+ .word 0x00003408, 0x0000340C
+ .word 0x0000340C, 0x00003418
+ .word 0x00003418, 0x0000341C
+ .word 0x0000341C, 0x00003420
+ .word 0x00003420, 0x00003424
+ .word 0x00003424, 0x00003428
+ .word 0x00003428, 0x0000342C
+ .word 0x0000342C, 0x00003434
+ .word 0x00003434, 0x0000343C
+ .word 0x0000343C, 0x00003440
+ .word 0x00003440, 0x00003444
+ .word 0x00003444, 0x0000344C
+ .word 0x0000344C, 0x00003454
+ .word 0x00003454, 0x00003458
+ .word 0x00003458, 0x0000345C
+ .word 0x0000345C, 0x00003460
+ .word 0x00003460, 0x00003464
+ .word 0x00003464, 0x00003468
+ .word 0x00003468, 0x0000346C
+ .word 0x0000346C, 0x00003470
+ .word 0x00003470, 0x00003474
+ .word 0x00003474, 0x00003478
+ .word 0x00003478, 0x0000347C
+ .word 0x0000347C, 0x00003480
+ .word 0x00003480, 0x00003484
+ .word 0x00003484, 0x00003488
+ .word 0x00003488, 0x0000348C
+ .word 0x0000348C, 0x00003490
+ .word 0x00003490, 0x00003494
+ .word 0x00003494, 0x00003498
+ .word 0x00003498, 0x0000349C
+ .word 0x0000349C, 0x000034A0
+ .word 0x000034A0, 0x000034A4
+ .word 0x000034A4, 0x000034A8
+ .word 0x000034A8, 0x000034AC
+ .word 0x000034AC, 0x000034B0
+ .word 0x000034B0, 0x000034B4
+ .word 0x000034B4, 0x000034B8
+ .word 0x000034B8, 0x000034BC
+ .word 0x000034BC, 0x000034C0
+ .word 0x000034C0, 0x000034C4
+ .word 0x000034C4, 0x000034C8
+ .word 0x000034C8, 0x000034CC
+ .word 0x000034CC, 0x000034D0
+ .word 0x000034D0, 0x000034D4
+ .word 0x000034D4, 0x000034D8
+ .word 0x000034D8, 0x000034DC
+ .word 0x000034DC, 0x000034E0
+ .word 0x000034E0, 0x000034E4
+ .word 0x000034E4, 0x000034E8
+ .word 0x000034E8, 0x000034EC
+ .word 0x000034EC, 0x000034F0
+ .word 0x000034F0, 0x000034F4
+ .word 0x000034F4, 0x000034F8
+ .word 0x000034F8, 0x000034FC
+ .word 0x000034FC, 0x00003500
+ .word 0x00003500, 0x00003504
+ .word 0x00003504, 0x00003508
+ .word 0x00003508, 0x00003510
+ .word 0x00003510, 0x00003514
+ .word 0x00003514, 0x00003518
+ .word 0x00003518, 0x00003520
+ .word 0x00003520, 0x00003524
+ .word 0x00003524, 0x00003528
+ .word 0x00003528, 0x0000352C
+ .word 0x0000352C, 0x00003530
+ .word 0x00003530, 0x00003534
+ .word 0x00003534, 0x00003538
+ .word 0x00003538, 0x0000353C
+ .word 0x0000353C, 0x00003540
+ .word 0x00003540, 0x00003544
+ .word 0x00003544, 0x00003548
+ .word 0x00003548, 0x0000354C
+ .word 0x0000354C, 0x00003550
+ .word 0x00003550, 0x00003554
+ .word 0x00003554, 0x00003558
+ .word 0x00003558, 0x0000355C
+ .word 0x0000355C, 0x00003560
+ .word 0x00003560, 0x00003568
+ .word 0x00003568, 0x0000356C
+ .word 0x0000356C, 0x00003570
+ .word 0x00003570, 0x00003574
+ .word 0x00003574, 0x00003578
+ .word 0x00003578, 0x00003580
+ .word 0x00003580, 0x00003584
+ .word 0x00003584, 0x00003588
+ .word 0x00003588, 0x0000358C
+ .word 0x0000358C, 0x00003594
+ .word 0x00003594, 0x00003598
+ .word 0x00003598, 0x0000359C
+ .word 0x0000359C, 0x000035A0
+ .word 0x000035A0, 0x000035AC
+ .word 0x000035AC, 0x000035B0
+ .word 0x000035B0, 0x000035B4
+ .word 0x000035B4, 0x000035B8
+ .word 0x000035B8, 0x000035BC
+ .word 0x000035BC, 0x000035C0
+ .word 0x000035C0, 0x000035C4
+ .word 0x000035C4, 0x000035C8
+ .word 0x000035C8, 0x000035CC
+ .word 0x000035CC, 0x000035D4
+ .word 0x000035D4, 0x000035E0
+ .word 0x000035E0, 0x000035E4
+ .word 0x000035E4, 0x000035E8
+ .word 0x000035E8, 0x000035F0
+ .word 0x000035F0, 0x000035F8
+ .word 0x000035F8, 0x000035FC
+ .word 0x000035FC, 0x00003600
+ .word 0x00003600, 0x0000360C
+ .word 0x0000360C, 0x00003614
+ .word 0x00003614, 0x00003618
+ .word 0x00003618, 0x0000361C
+ .word 0x0000361C, 0x00003620
+ .word 0x00003620, 0x00003624
+ .word 0x00003624, 0x00003628
+ .word 0x00003628, 0x0000362C
+ .word 0x0000362C, 0x00003630
+ .word 0x00003630, 0x00003634
+ .word 0x00003634, 0x00003638
+ .word 0x00003638, 0x0000363C
+ .word 0x0000363C, 0x00003640
+ .word 0x00003640, 0x00003644
+ .word 0x00003644, 0x00003648
+ .word 0x00003648, 0x0000364C
+ .word 0x0000364C, 0x00003650
+ .word 0x00003650, 0x00003654
+ .word 0x00003654, 0x00003658
+ .word 0x00003658, 0x0000365C
+ .word 0x0000365C, 0x00003660
+ .word 0x00003660, 0x00003664
+ .word 0x00003664, 0x00003668
+ .word 0x00003668, 0x0000366C
+ .word 0x0000366C, 0x00003670
+ .word 0x00003670, 0x00003674
+ .word 0x00003674, 0x00003678
+ .word 0x00003678, 0x0000367C
+ .word 0x0000367C, 0x00003680
+ .word 0x00003680, 0x00003684
+ .word 0x00003684, 0x00003688
+ .word 0x00003688, 0x0000368C
+ .word 0x0000368C, 0x00003690
+ .word 0x00003690, 0x00003694
+ .word 0x00003694, 0x0000369C
+ .word 0x0000369C, 0x000036A0
+ .word 0x000036A0, 0x000036A8
+ .word 0x000036A8, 0x000036AC
+ .word 0x000036AC, 0x000036B0
+ .word 0x000036B0, 0x000036B4
+ .word 0x000036B4, 0x000036B8
+ .word 0x000036B8, 0x000036BC
+ .word 0x000036BC, 0x000036C0
+ .word 0x000036C0, 0x000036C4
+ .word 0x000036C4, 0x000036C8
+ .word 0x000036C8, 0x000036CC
+ .word 0x000036CC, 0x000036D0
+ .word 0x000036D0, 0x000036D4
+ .word 0x000036D4, 0x000036D8
+ .word 0x000036D8, 0x000036DC
+ .word 0x000036DC, 0x000036E0
+ .word 0x000036E0, 0x000036E4
+ .word 0x000036E4, 0x000036E8
+ .word 0x000036E8, 0x000036EC
+ .word 0x000036EC, 0x000036F0
+ .word 0x000036F0, 0x000036F4
+ .word 0x000036F4, 0x000036F8
+ .word 0x000036F8, 0x000036FC
+ .word 0x000036FC, 0x00003700
+ .word 0x00003700, 0x00003704
+ .word 0x00003704, 0x00003708
+ .word 0x00003708, 0x0000370C
+ .word 0x0000370C, 0x00003710
+ .word 0x00003710, 0x00003714
+ .word 0x00003714, 0x00003718
+ .word 0x00003718, 0x0000371C
+ .word 0x0000371C, 0x00003720
+ .word 0x00003720, 0x00003724
+ .word 0x00003724, 0x00003728
+ .word 0x00003728, 0x0000372C
+ .word 0x0000372C, 0x00003730
+ .word 0x00003730, 0x00003734
+ .word 0x00003734, 0x00003738
+ .word 0x00003738, 0x0000373C
+ .word 0x0000373C, 0x00003740
+ .word 0x00003740, 0x00003744
+ .word 0x00003744, 0x00003748
+ .word 0x00003748, 0x0000374C
+ .word 0x0000374C, 0x00003750
+ .word 0x00003750, 0x00003754
+ .word 0x00003754, 0x00003758
+ .word 0x00003758, 0x0000375C
+ .word 0x0000375C, 0x00003768
+ .word 0x00003768, 0x0000376C
+ .word 0x0000376C, 0x00003774
+ .word 0x00003774, 0x0000377C
+ .word 0x0000377C, 0x00003780
+ .word 0x00003780, 0x00003788
+ .word 0x00003788, 0x0000378C
+ .word 0x0000378C, 0x00003790
+ .word 0x00003790, 0x00003794
+ .word 0x00003794, 0x00003798
+ .word 0x00003798, 0x0000379C
+ .word 0x0000379C, 0x000037A0
+ .word 0x000037A0, 0x000037A4
+ .word 0x000037A4, 0x000037A8
+ .word 0x000037A8, 0x000037AC
+ .word 0x000037AC, 0x000037B4
+ .word 0x000037B4, 0x000037B8
+ .word 0x000037B8, 0x000037BC
+ .word 0x000037BC, 0x000037C4
+ .word 0x000037C4, 0x000037C8
+ .word 0x000037C8, 0x000037CC
+ .word 0x000037CC, 0x000037D0
+ .word 0x000037D0, 0x000037D8
+ .word 0x000037D8, 0x000037E0
+ .word 0x000037E0, 0x000037E4
+ .word 0x000037E4, 0x000037E8
+ .word 0x000037E8, 0x000037EC
+ .word 0x000037EC, 0x000037F0
+ .word 0x000037F0, 0x000037F4
+ .word 0x000037F4, 0x000037F8
+ .word 0x000037F8, 0x000037FC
+ .word 0x000037FC, 0x00003800
+ .word 0x00003800, 0x00003804
+ .word 0x00003804, 0x00003808
+ .word 0x00003808, 0x0000380C
+ .word 0x0000380C, 0x00003810
+ .word 0x00003810, 0x00003814
+ .word 0x00003814, 0x00003818
+ .word 0x00003818, 0x0000381C
+ .word 0x0000381C, 0x0000382C
+ .word 0x0000382C, 0x00003838
+ .word 0x00003838, 0x00003840
+ .word 0x00003840, 0x00003848
+ .word 0x00003848, 0x00003850
+ .word 0x00003850, 0x00003854
+ .word 0x00003854, 0x00003858
+ .word 0x00003858, 0x00003860
+ .word 0x00003860, 0x00003864
+ .word 0x00003864, 0x00003868
+ .word 0x00003868, 0x0000386C
+ .word 0x0000386C, 0x00003870
+ .word 0x00003870, 0x00003874
+ .word 0x00003874, 0x0000387C
+ .word 0x0000387C, 0x00003880
+ .word 0x00003880, 0x00003888
+ .word 0x00003888, 0x00003890
+ .word 0x00003890, 0x00003898
+ .word 0x00003898, 0x000038A0
+ .word 0x000038A0, 0x000038A8
+ .word 0x000038A8, 0x000038AC
+ .word 0x000038AC, 0x000038B0
+ .word 0x000038B0, 0x000038B4
+ .word 0x000038B4, 0x000038B8
+ .word 0x000038B8, 0x000038BC
+ .word 0x000038BC, 0x000038C0
+ .word 0x000038C0, 0x000038C4
+ .word 0x000038C4, 0x000038C8
+ .word 0x000038C8, 0x000038CC
+ .word 0x000038CC, 0x000038D0
+ .word 0x000038D0, 0x000038D4
+ .word 0x000038D4, 0x000038D8
+ .word 0x000038D8, 0x000038DC
+ .word 0x000038DC, 0x000038E0
+ .word 0x000038E0, 0x000038E4
+ .word 0x000038E4, 0x000038E8
+ .word 0x000038E8, 0x000038EC
+ .word 0x000038EC, 0x000038F0
+ .word 0x000038F0, 0x000038F4
+ .word 0x000038F4, 0x000038F8
+ .word 0x000038F8, 0x000038FC
+ .word 0x000038FC, 0x00003900
+ .word 0x00003900, 0x00003904
+ .word 0x00003904, 0x00003908
+ .word 0x00003908, 0x0000390C
+ .word 0x0000390C, 0x00003910
+ .word 0x00003910, 0x00003914
+ .word 0x00003914, 0x00003918
+ .word 0x00003918, 0x0000391C
+ .word 0x0000391C, 0x00003920
+ .word 0x00003920, 0x00003924
+ .word 0x00003924, 0x00003928
+ .word 0x00003928, 0x0000392C
+ .word 0x0000392C, 0x00003930
+ .word 0x00003930, 0x00003934
+ .word 0x00003934, 0x00003938
+ .word 0x00003938, 0x0000393C
+ .word 0x0000393C, 0x00003940
+ .word 0x00003940, 0x00003944
+ .word 0x00003944, 0x000039AC
+ .word 0x000039AC, 0x000039B0
+ .word 0x000039B0, 0x000039B4
+ .word 0x000039B4, 0x000039B8
+ .word 0x000039B8, 0x000039BC
+ .word 0x000039BC, 0x000039C0
+ .word 0x000039C0, 0x000039C4
+ .word 0x000039C4, 0x000039C8
+ .word 0x000039C8, 0x000039CC
+ .word 0x000039CC, 0x000039D0
+ .word 0x000039D0, 0x000039D4
+ .word 0x000039D4, 0x000039D8
+ .word 0x000039D8, 0x000039DC
+ .word 0x000039DC, 0x000039E0
+ .word 0x000039E0, 0x000039E4
+ .word 0x000039E4, 0x000039E8
+ .word 0x000039E8, 0x000039EC
+ .word 0x000039EC, 0x000039F0
+ .word 0x000039F0, 0x000039F4
+ .word 0x000039F4, 0x00003A00
+ .word 0x00003A00, 0x00003A0C
+ .word 0x00003A0C, 0x00003A18
+ .word 0x00003A18, 0x00003A2C
+ .word 0x00003A2C, 0x00003A30
+ .word 0x00003A30, 0x00003A34
+ .word 0x00003A34, 0x00003A38
+ .word 0x00003A38, 0x00003A3C
+ .word 0x00003A3C, 0x00003A40
+ .word 0x00003A40, 0x00003A44
+ .word 0x00003A44, 0x00003A48
+ .word 0x00003A48, 0x00003A4C
+ .word 0x00003A4C, 0x00003A50
+ .word 0x00003A50, 0x00003A54
+ .word 0x00003A54, 0x00003A58
+ .word 0x00003A58, 0x00003A5C
+ .word 0x00003A5C, 0x00003A60
+ .word 0x00003A60, 0x00003A64
+ .word 0x00003A64, 0x00003A68
+ .word 0x00003A68, 0x00003A6C
+ .word 0x00003A6C, 0x00003A70
+ .word 0x00003A70, 0x00003A74
+ .word 0x00003A74, 0x00003A78
+ .word 0x00003A78, 0x00003A7C
+ .word 0x00003A7C, 0x00003A88
+ .word 0x00003A88, 0x00003A98
+ .word 0x00003A98, 0x00003A9C
+ .word 0x00003A9C, 0x00003AA0
+ .word 0x00003AA0, 0x00003AA4
+ .word 0x00003AA4, 0x00003AA8
+ .word 0x00003AA8, 0x00003AAC
+ .word 0x00003AAC, 0x00003AB4
+ .word 0x00003AB4, 0x00003ABC
+ .word 0x00003ABC, 0x00003AC0
+ .word 0x00003AC0, 0x00003AC4
+ .word 0x00003AC4, 0x00003AF8
+ .word 0x00003AF8, 0x00003B3C
+ .word 0x00003B3C, 0x00003B40
+ .word 0x00003B40, 0x00003B44
+ .word 0x00003B44, 0x00003B48
+ .word 0x00003B48, 0x00003B4C
+ .word 0x00003B4C, 0x00003B5C
+ .word 0x00003B5C, 0x00003B6C
+ .word 0x00003B6C, 0x00003B70
+ .word 0x00003B70, 0x00003B7C
+ .word 0x00003B7C, 0x00003B84
+ .word 0x00003B84, 0x00003B88
+ .word 0x00003B88, 0x00003B98
+ .word 0x00003B98, 0x00003BB8
+ .word 0x00003BB8, 0x00003BBC
+ .word 0x00003BBC, 0x00003BC8
+ .word 0x00003BC8, 0x00003BD8
+ .word 0x00003BD8, 0x00003BDC
+ .word 0x00003BDC, 0x00003C10
+ .word 0x00003C10, 0x00003C5C
+ .word 0x00003C5C, 0x00003C7C
+ .word 0x00003C7C, 0x00003C98
+ .word 0x00003C98, 0x00003C9C
+ .word 0x00003C9C, 0x00003CB8
+ .word 0x00003CB8, 0x00003CBC
+ .word 0x00003CBC, 0x00003CC0
+ .word 0x00003CC0, 0x00003CC4
+ .word 0x00003CC4, 0x00003CC8
+ .word 0x00003CC8, 0x00003CCC
+ .word 0x00003CCC, 0x00003CD0
+ .word 0x00003CD0, 0x00003CD4
+ .word 0x00003CD4, 0x00003CD8
+ .word 0x00003CD8, 0x00003CDC
+ .word 0x00003CDC, 0x00003CE0
+ .word 0x00003CE0, 0x00003CE4
+ .word 0x00003CE4, 0x00003CE8
+ .word 0x00003CE8, 0x00003CF8
+ .word 0x00003CF8, 0x00003CFC
+ .word 0x00003CFC, 0x00003D00
+ .word 0x00003D00, 0x00003D04
+ .word 0x00003D04, 0x00003D08
+ .word 0x00003D08, 0x00003D0C
+ .word 0x00003D0C, 0x00003D10
+ .word 0x00003D10, 0x00003D14
+ .word 0x00003D14, 0x00003D18
+ .word 0x00003D18, 0x00003D1C
+ .word 0x00003D1C, 0x00003D20
+ .word 0x00003D20, 0x00003D24
+ .word 0x00003D24, 0x00003D28
+ .word 0x00003D28, 0x00003D2C
+ .word 0x00003D2C, 0x00003D30
+ .word 0x00003D30, 0x00003D34
+ .word 0x00003D34, 0x00003D38
+ .word 0x00003D38, 0x00003D3C
+ .word 0x00003D3C, 0x00003D40
+ .word 0x00003D40, 0x00003D44
+ .word 0x00003D44, 0x00003D50
+ .word 0x00003D50, 0x00003D5C
+ .word 0x00003D5C, 0x00003D6C
+ .word 0x00003D6C, 0x00003D78
+ .word 0x00003D78, 0x00003D7C
+ .word 0x00003D7C, 0x00003D80
+ .word 0x00003D80, 0x00003D88
+ .word 0x00003D88, 0x00003D90
+ .word 0x00003D90, 0x00003DB4
+ .word 0x00003DB4, 0x00003DD8
+ .word 0x00003DD8, 0x00003DE4
+ .word 0x00003DE4, 0x00003DE8
+ .word 0x00003DE8, 0x00003DEC
+ .word 0x00003DEC, 0x00003DF0
+ .word 0x00003DF0, 0x00003DF4
+ .word 0x00003DF4, 0x00003DF8
+ .word 0x00003DF8, 0x00003DFC
+ .word 0x00003DFC, 0x00003E04
+ .word 0x00003E04, 0x00003E08
+ .word 0x00003E08, 0x00003E9C
+ .word 0x00003E9C, 0x00003F30
+ .word 0x00003F30, 0x00003F34
+ .word 0x00003F34, 0x00003F38
+ .word 0x00003F38, 0x00003F3C
+ .word 0x00003F3C, 0x00003F40
+ .word 0x00003F40, 0x00003F44
+ .word 0x00003F44, 0x00003F48
+ .word 0x00003F48, 0x00003F4C
+ .word 0x00003F4C, 0x00003F50
+ .word 0x00003F50, 0x00003F54
+ .word 0x00003F54, 0x00003F58
+ .word 0x00003F58, 0x00003F5C
+ .word 0x00003F5C, 0x00003F60
+ .word 0x00003F60, 0x00003F64
+ .word 0x00003F64, 0x00003F68
+ .word 0x00003F68, 0x00003F6C
+ .word 0x00003F6C, 0x00003F70
+ .word 0x00003F70, 0x00003F74
+ .word 0x00003F74, 0x00003F78
+ .word 0x00003F78, 0x00003F7C
+ .word 0x00003F7C, 0x00003F80
+ .word 0x00003F80, 0x00003F84
+ .word 0x00003F84, 0x00003F88
+ .word 0x00003F88, 0x00003F8C
+ .word 0x00003F8C, 0x00003F90
+ .word 0x00003F90, 0x00003F94
+ .word 0x00003F94, 0x00003F98
+ .word 0x00003F98, 0x00003F9C
+ .word 0x00003F9C, 0x00003FA0
+ .word 0x00003FA0, 0x00003FA4
+ .word 0x00003FA4, 0x00003FA8
+ .word 0x00003FA8, 0x00003FAC
+ .word 0x00003FAC, 0x00003FB0
+ .word 0x00003FB0, 0x00003FB4
+ .word 0x00003FB4, 0x00003FB8
+ .word 0x00003FB8, 0x00003FBC
+ .word 0x00003FBC, 0x00003FC4
+ .word 0x00003FC4, 0x00003FC8
+ .word 0x00003FC8, 0x00003FCC
+ .word 0x00003FCC, 0x00003FD0
+ .word 0x00003FD0, 0x00003FD8
+ .word 0x00003FD8, 0x00003FE0
+ .word 0x00003FE0, 0x00003FE4
+ .word 0x00003FE4, 0x00003FE8
+ .word 0x00003FE8, 0x00003FEC
+ .word 0x00003FEC, 0x00003FF0
+ .word 0x00003FF0, 0x00003FF4
+ .word 0x00003FF4, 0x00003FF8
+ .word 0x00003FF8, 0x00003FFC
+ .word 0x00003FFC, 0x00004000
+ .word 0x00004000, 0x00004004
+ .word 0x00004004, 0x00004008
+ .word 0x00004008, 0x0000400C
+ .word 0x0000400C, 0x00004010
+ .word 0x00004010, 0x00004014
+ .word 0x00004014, 0x00004020
+ .word 0x00004020, 0x00004024
+ .word 0x00004024, 0x00004028
+ .word 0x00004028, 0x0000402C
+ .word 0x0000402C, 0x00004030
+ .word 0x00004030, 0x00004034
+ .word 0x00004034, 0x00004038
+ .word 0x00004038, 0x0000403C
+ .word 0x0000403C, 0x00004040
+ .word 0x00004040, 0x00004048
+ .word 0x00004048, 0x00004050
+ .word 0x00004050, 0x00004054
+ .word 0x00004054, 0x00004058
+ .word 0x00004058, 0x0000405C
+ .word 0x0000405C, 0x00004060
+ .word 0x00004060, 0x00004064
+ .word 0x00004064, 0x00004068
+ .word 0x00004068, 0x0000406C
+ .word 0x0000406C, 0x00004078
+ .word 0x00004078, 0x0000407C
+ .word 0x0000407C, 0x00004080
+ .word 0x00004080, 0x00004084
+ .word 0x00004084, 0x00004088
+ .word 0x00004088, 0x0000408C
+ .word 0x0000408C, 0x00004090
+ .word 0x00004090, 0x00004094
+ .word 0x00004094, 0x0000409C
+ .word 0x0000409C, 0x000040A0
+ .word 0x000040A0, 0x000040A4
+ .word 0x000040A4, 0x000040A8
+ .word 0x000040A8, 0x000040B8
+ .word 0x000040B8, 0x000040BC
+ .word 0x000040BC, 0x000040C0
+ .word 0x000040C0, 0x000040C4
+ .word 0x000040C4, 0x000040C8
+ .word 0x000040C8, 0x000040CC
+ .word 0x000040CC, 0x000040D0
+ .word 0x000040D0, 0x000040D4
+ .word 0x000040D4, 0x000040F8
+ .word 0x000040F8, 0x0000411C
+ .word 0x0000411C, 0x00004120
+ .word 0x00004120, 0x00004124
+ .word 0x00004124, 0x00004130
+ .word 0x00004130, 0x00004134
+ .word 0x00004134, 0x00004138
+ .word 0x00004138, 0x0000413C
+ .word 0x0000413C, 0x00004140
+ .word 0x00004140, 0x00004144
+ .word 0x00004144, 0x00004148
+ .word 0x00004148, 0x0000414C
+ .word 0x0000414C, 0x00004150
+ .word 0x00004150, 0x00004154
+ .word 0x00004154, 0x00004158
+ .word 0x00004158, 0x0000415C
+ .word 0x0000415C, 0x00004160
+ .word 0x00004160, 0x00004164
+ .word 0x00004164, 0x00004168
+ .word 0x00004168, 0x0000416C
+ .word 0x0000416C, 0x00004170
+ .word 0x00004170, 0x00004174
+ .word 0x00004174, 0x00004178
+ .word 0x00004178, 0x0000417C
+ .word 0x0000417C, 0x00004180
+ .word 0x00004180, 0x00004184
+ .word 0x00004184, 0x00004188
+ .word 0x00004188, 0x0000418C
+ .word 0x0000418C, 0x00004190
+ .word 0x00004190, 0x00004194
+ .word 0x00004194, 0x00004198
+ .word 0x00004198, 0x0000419C
+ .word 0x0000419C, 0x000041A0
+ .word 0x000041A0, 0x000041A4
+ .word 0x000041A4, 0x000041A8
+ .word 0x000041A8, 0x000041AC
+ .word 0x000041AC, 0x000041B0
+ .word 0x000041B0, 0x000041B4
+ .word 0x000041B4, 0x000041B8
+ .word 0x000041B8, 0x000041BC
+ .word 0x000041BC, 0x000041C0
+ .word 0x000041C0, 0x000041C4
+ .word 0x000041C4, 0x000041C8
+ .word 0x000041C8, 0x000041CC
+ .word 0x000041CC, 0x000041D4
+ .word 0x000041D4, 0x000041D8
+ .word 0x000041D8, 0x000041E0
+ .word 0x000041E0, 0x000041E4
+ .word 0x000041E4, 0x000041E8
+ .word 0x000041E8, 0x000041EC
+ .word 0x000041EC, 0x000041F0
+ .word 0x000041F0, 0x000041F4
+ .word 0x000041F4, 0x000041F8
+ .word 0x000041F8, 0x000041FC
+ .word 0x000041FC, 0x00004200
+ .word 0x00004200, 0x00004238
+ .word 0x00004238, 0x00004288
+ .word 0x00004288, 0x0000428C
+ .word 0x0000428C, 0x00004290
+ .word 0x00004290, 0x00004294
+ .word 0x00004294, 0x00004298
+ .word 0x00004298, 0x0000429C
+ .word 0x0000429C, 0x000042A0
+ .word 0x000042A0, 0x000042A4
+ .word 0x000042A4, 0x000042A8
+ .word 0x000042A8, 0x000042AC
+ .word 0x000042AC, 0x000042B0
+ .word 0x000042B0, 0x000042B4
+ .word 0x000042B4, 0x000042B8
+ .word 0x000042B8, 0x000042BC
+ .word 0x000042BC, 0x000042C0
+ .word 0x000042C0, 0x000042C4
+ .word 0x000042C4, 0x000042C8
+ .word 0x000042C8, 0x000042CC
+ .word 0x000042CC, 0x000042D0
+ .word 0x000042D0, 0x000042D4
+ .word 0x000042D4, 0x000042D8
+ .word 0x000042D8, 0x000042DC
+ .word 0x000042DC, 0x000042E0
+ .word 0x000042E0, 0x000042E4
+ .word 0x000042E4, 0x000042E8
+ .word 0x000042E8, 0x000042EC
+ .word 0x000042EC, 0x000042F0
+ .word 0x000042F0, 0x000042F4
+ .word 0x000042F4, 0x00004314
+ .word 0x00004314, 0x00004320
+ .word 0x00004320, 0x00004324
+ .word 0x00004324, 0x00004328
+ .word 0x00004328, 0x0000432C
+ .word 0x0000432C, 0x00004330
+ .word 0x00004330, 0x00004338
+ .word 0x00004338, 0x00004340
+ .word 0x00004340, 0x00004358
+ .word 0x00004358, 0x0000435C
+ .word 0x0000435C, 0x00004360
+ .word 0x00004360, 0x00004364
+ .word 0x00004364, 0x00004370
+ .word 0x00004370, 0x0000437C
+ .word 0x0000437C, 0x00004388
+ .word 0x00004388, 0x00004394
+ .word 0x00004394, 0x000043A0
+ .word 0x000043A0, 0x000043A4
+ .word 0x000043A4, 0x000043A8
+ .word 0x000043A8, 0x000043AC
+ .word 0x000043AC, 0x000043B0
+ .word 0x000043B0, 0x000043B4
+ .word 0x000043B4, 0x000043B8
+ .word 0x000043B8, 0x000043BC
+ .word 0x000043BC, 0x000043C4
+ .word 0x000043C4, 0x000043CC
+ .word 0x000043CC, 0x000043D0
+ .word 0x000043D0, 0x000043D4
+ .word 0x000043D4, 0x000043D8
+ .word 0x000043D8, 0x000043DC
+ .word 0x000043DC, 0x000043E0
+ .word 0x000043E0, 0x000043E4
+ .word 0x000043E4, 0x00004408
+ .word 0x00004408, 0x0000442C
+ .word 0x0000442C, 0x00004434
+ .word 0x00004434, 0x0000443C
+ .word 0x0000443C, 0x00004440
+ .word 0x00004440, 0x00004444
+ .word 0x00004444, 0x00004448
+ .word 0x00004448, 0x0000444C
+ .word 0x0000444C, 0x00004450
+ .word 0x00004450, 0x00004454
+ .word 0x00004454, 0x00004458
+ .word 0x00004458, 0x0000445C
+ .word 0x0000445C, 0x00004460
+ .word 0x00004460, 0x00004464
+ .word 0x00004464, 0x00004468
+ .word 0x00004468, 0x0000446C
+ .word 0x0000446C, 0x00004470
+ .word 0x00004470, 0x00004474
+ .word 0x00004474, 0x00004478
+ .word 0x00004478, 0x0000447C
+ .word 0x0000447C, 0x00004480
+ .word 0x00004480, 0x00004484
+ .word 0x00004484, 0x00004488
+ .word 0x00004488, 0x0000448C
+ .word 0x0000448C, 0x00004498
+ .word 0x00004498, 0x000044A4
+ .word 0x000044A4, 0x000044A8
+ .word 0x000044A8, 0x000044B4
+ .word 0x000044B4, 0x000044B8
+ .word 0x000044B8, 0x000044BC
+ .word 0x000044BC, 0x000044C4
+ .word 0x000044C4, 0x000044D0
+ .word 0x000044D0, 0x000044D4
+ .word 0x000044D4, 0x000044D8
+ .word 0x000044D8, 0x000044DC
+ .word 0x000044DC, 0x000044E0
+ .word 0x000044E0, 0x000044E4
+ .word 0x000044E4, 0x000044E8
+ .word 0x000044E8, 0x000044EC
+ .word 0x000044EC, 0x000044F0
+ .word 0x000044F0, 0x000044F4
+ .word 0x000044F4, 0x000044F8
+ .word 0x000044F8, 0x000044FC
+ .word 0x000044FC, 0x00004500
+ .word 0x00004500, 0x00004504
+ .word 0x00004504, 0x00004508
+ .word 0x00004508, 0x0000450C
+ .word 0x0000450C, 0x00004510
+ .word 0x00004510, 0x00004514
+ .word 0x00004514, 0x00004518
+ .word 0x00004518, 0x0000451C
+ .word 0x0000451C, 0x00004520
+ .word 0x00004520, 0x00004524
+ .word 0x00004524, 0x00004528
+ .word 0x00004528, 0x0000452C
+ .word 0x0000452C, 0x00004530
+ .word 0x00004530, 0x00004534
+ .word 0x00004534, 0x00004554
+ .word 0x00004554, 0x00004564
+ .word 0x00004564, 0x00004568
+ .word 0x00004568, 0x00004594
+ .word 0x00004594, 0x000045AC
+ .word 0x000045AC, 0x000045C8
+ .word 0x000045C8, 0x000045E8
+ .word 0x000045E8, 0x00004600
+ .word 0x00004600, 0x00004608
+ .word 0x00004608, 0x0000460C
+ .word 0x0000460C, 0x0000461C
+ .word 0x0000461C, 0x00004620
+ .word 0x00004620, 0x00004624
+ .word 0x00004624, 0x00004628
+ .word 0x00004628, 0x0000462C
+ .word 0x0000462C, 0x00004630
+ .word 0x00004630, 0x00004634
+ .word 0x00004634, 0x00004638
+ .word 0x00004638, 0x0000463C
+ .word 0x0000463C, 0x00004640
+ .word 0x00004640, 0x00004644
+ .word 0x00004644, 0x00004658
+ .word 0x00004658, 0x00004670
+ .word 0x00004670, 0x00004690
+ .word 0x00004690, 0x00004694
+ .word 0x00004694, 0x00004698
+ .word 0x00004698, 0x000046BC
+ .word 0x000046BC, 0x000046D8
+ .word 0x000046D8, 0x000046DC
+ .word 0x000046DC, 0x000046E0
+ .word 0x000046E0, 0x000046E4
+ .word 0x000046E4, 0x000046E8
+ .word 0x000046E8, 0x000046EC
+ .word 0x000046EC, 0x000046F0
+ .word 0x000046F0, 0x000046F4
+ .word 0x000046F4, 0x00004700
+ .word 0x00004700, 0x0000470C
+ .word 0x0000470C, 0x00004718
+ .word 0x00004718, 0x0000471C
+ .word 0x0000471C, 0x00004720
+ .word 0x00004720, 0x00004728
+ .word 0x00004728, 0x0000472C
+ .word 0x0000472C, 0x00004738
+ .word 0x00004738, 0x0000473C
+ .word 0x0000473C, 0x00004740
+ .word 0x00004740, 0x0000474C
+ .word 0x0000474C, 0x00004750
+ .word 0x00004750, 0x00004754
+ .word 0x00004754, 0x00004758
+ .word 0x00004758, 0x0000475C
+ .word 0x0000475C, 0x00004760
+ .word 0x00004760, 0x00004764
+ .word 0x00004764, 0x00004768
+ .word 0x00004768, 0x0000476C
+ .word 0x0000476C, 0x00004774
+ .word 0x00004774, 0x00004778
+ .word 0x00004778, 0x0000477C
+ .word 0x0000477C, 0x00004780
+ .word 0x00004780, 0x00004784
+ .word 0x00004784, 0x00004788
+ .word 0x00004788, 0x000047B0
+ .word 0x000047B0, 0x000047D8
+ .word 0x000047D8, 0x000047E4
+ .word 0x000047E4, 0x000047F4
+ .word 0x000047F4, 0x000047F8
+ .word 0x000047F8, 0x000047FC
+ .word 0x000047FC, 0x00004800
+ .word 0x00004800, 0x00004804
+ .word 0x00004804, 0x00004808
+ .word 0x00004808, 0x0000480C
+ .word 0x0000480C, 0x00004810
+ .word 0x00004810, 0x00004814
+ .word 0x00004814, 0x00004818
+ .word 0x00004818, 0x0000481C
+ .word 0x0000481C, 0x00004820
+ .word 0x00004820, 0x00004824
+ .word 0x00004824, 0x00004828
+ .word 0x00004828, 0x0000482C
+ .word 0x0000482C, 0x00004830
+ .word 0x00004830, 0x00004834
+ .word 0x00004834, 0x00004838
+ .word 0x00004838, 0x0000483C
+ .word 0x0000483C, 0x00004840
+ .word 0x00004840, 0x00004844
+ .word 0x00004844, 0x00004848
+ .word 0x00004848, 0x0000484C
+ .word 0x0000484C, 0x00004850
+ .word 0x00004850, 0x00004854
+ .word 0x00004854, 0x00004858
+ .word 0x00004858, 0x0000485C
+ .word 0x0000485C, 0x00004860
+ .word 0x00004860, 0x00004864
+ .word 0x00004864, 0x00004868
+ .word 0x00004868, 0x0000486C
+ .word 0x0000486C, 0x00004870
+ .word 0x00004870, 0x00004874
+ .word 0x00004874, 0x00004878
+ .word 0x00004878, 0x0000487C
+ .word 0x0000487C, 0x00004880
+ .word 0x00004880, 0x000048E8
+ .word 0x000048E8, 0x000048EC
+ .word 0x000048EC, 0x000048F0
+ .word 0x000048F0, 0x000048F4
+ .word 0x000048F4, 0x000048F8
+ .word 0x000048F8, 0x000048FC
+ .word 0x000048FC, 0x00004900
+ .word 0x00004900, 0x00004904
+ .word 0x00004904, 0x00004908
+ .word 0x00004908, 0x0000490C
+ .word 0x0000490C, 0x00004910
+ .word 0x00004910, 0x00004914
+ .word 0x00004914, 0x00004918
+ .word 0x00004918, 0x0000491C
+ .word 0x0000491C, 0x00004920
+ .word 0x00004920, 0x00004924
+ .word 0x00004924, 0x00004928
+ .word 0x00004928, 0x0000492C
+ .word 0x0000492C, 0x00004930
+ .word 0x00004930, 0x0000493C
+ .word 0x0000493C, 0x00004948
+ .word 0x00004948, 0x00004954
+ .word 0x00004954, 0x00004968
+ .word 0x00004968, 0x0000496C
+ .word 0x0000496C, 0x00004970
+ .word 0x00004970, 0x00004974
+ .word 0x00004974, 0x00004978
+ .word 0x00004978, 0x0000497C
+ .word 0x0000497C, 0x00004980
+ .word 0x00004980, 0x00004984
+ .word 0x00004984, 0x00004988
+ .word 0x00004988, 0x0000498C
+ .word 0x0000498C, 0x00004990
+ .word 0x00004990, 0x00004994
+ .word 0x00004994, 0x00004998
+ .word 0x00004998, 0x0000499C
+ .word 0x0000499C, 0x000049A0
+ .word 0x000049A0, 0x000049A4
+ .word 0x000049A4, 0x000049A8
+ .word 0x000049A8, 0x000049AC
+ .word 0x000049AC, 0x000049B0
+ .word 0x000049B0, 0x000049B4
+ .word 0x000049B4, 0x000049B8
+ .word 0x000049B8, 0x000049C4
+ .word 0x000049C4, 0x000049D4
+ .word 0x000049D4, 0x000049D8
+ .word 0x000049D8, 0x000049DC
+ .word 0x000049DC, 0x000049E0
+ .word 0x000049E0, 0x000049E4
+ .word 0x000049E4, 0x000049E8
+ .word 0x000049E8, 0x000049F0
+ .word 0x000049F0, 0x000049F8
+ .word 0x000049F8, 0x000049FC
+ .word 0x000049FC, 0x00004A00
+ .word 0x00004A00, 0x00004A34
+ .word 0x00004A34, 0x00004A78
+ .word 0x00004A78, 0x00004A7C
+ .word 0x00004A7C, 0x00004A80
+ .word 0x00004A80, 0x00004A84
+ .word 0x00004A84, 0x00004A88
+ .word 0x00004A88, 0x00004A98
+ .word 0x00004A98, 0x00004AA8
+ .word 0x00004AA8, 0x00004AAC
+ .word 0x00004AAC, 0x00004AB8
+ .word 0x00004AB8, 0x00004AC0
+ .word 0x00004AC0, 0x00004AC4
+ .word 0x00004AC4, 0x00004AD4
+ .word 0x00004AD4, 0x00004AF4
+ .word 0x00004AF4, 0x00004AF8
+ .word 0x00004AF8, 0x00004B04
+ .word 0x00004B04, 0x00004B14
+ .word 0x00004B14, 0x00004B18
+ .word 0x00004B18, 0x00004B4C
+ .word 0x00004B4C, 0x00004B98
+ .word 0x00004B98, 0x00004BB8
+ .word 0x00004BB8, 0x00004BD4
+ .word 0x00004BD4, 0x00004BD8
+ .word 0x00004BD8, 0x00004BF4
+ .word 0x00004BF4, 0x00004BF8
+ .word 0x00004BF8, 0x00004BFC
+ .word 0x00004BFC, 0x00004C00
+ .word 0x00004C00, 0x00004C04
+ .word 0x00004C04, 0x00004C08
+ .word 0x00004C08, 0x00004C0C
+ .word 0x00004C0C, 0x00004C10
+ .word 0x00004C10, 0x00004C14
+ .word 0x00004C14, 0x00004C18
+ .word 0x00004C18, 0x00004C1C
+ .word 0x00004C1C, 0x00004C20
+ .word 0x00004C20, 0x00004C24
+ .word 0x00004C24, 0x00004C34
+ .word 0x00004C34, 0x00004C38
+ .word 0x00004C38, 0x00004C3C
+ .word 0x00004C3C, 0x00004C40
+ .word 0x00004C40, 0x00004C44
+ .word 0x00004C44, 0x00004C48
+ .word 0x00004C48, 0x00004C4C
+ .word 0x00004C4C, 0x00004C50
+ .word 0x00004C50, 0x00004C54
+ .word 0x00004C54, 0x00004C58
+ .word 0x00004C58, 0x00004C5C
+ .word 0x00004C5C, 0x00004C60
+ .word 0x00004C60, 0x00004C64
+ .word 0x00004C64, 0x00004C68
+ .word 0x00004C68, 0x00004C6C
+ .word 0x00004C6C, 0x00004C70
+ .word 0x00004C70, 0x00004C74
+ .word 0x00004C74, 0x00004C78
+ .word 0x00004C78, 0x00004C7C
+ .word 0x00004C7C, 0x00004C80
+ .word 0x00004C80, 0x00004C8C
+ .word 0x00004C8C, 0x00004C98
+ .word 0x00004C98, 0x00004CA8
+ .word 0x00004CA8, 0x00004CB4
+ .word 0x00004CB4, 0x00004CB8
+ .word 0x00004CB8, 0x00004CBC
+ .word 0x00004CBC, 0x00004CC4
+ .word 0x00004CC4, 0x00004CCC
+ .word 0x00004CCC, 0x00004CF0
+ .word 0x00004CF0, 0x00004D14
+ .word 0x00004D14, 0x00004D20
+ .word 0x00004D20, 0x00004D24
+ .word 0x00004D24, 0x00004D28
+ .word 0x00004D28, 0x00004D2C
+ .word 0x00004D2C, 0x00004D30
+ .word 0x00004D30, 0x00004D34
+ .word 0x00004D34, 0x00004D38
+ .word 0x00004D38, 0x00004D40
+ .word 0x00004D40, 0x00004D44
+ .word 0x00004D44, 0x00004DD8
+ .word 0x00004DD8, 0x00004E6C
+ .word 0x00004E6C, 0x00004E70
+ .word 0x00004E70, 0x00004E74
+ .word 0x00004E74, 0x00004E78
+ .word 0x00004E78, 0x00004E7C
+ .word 0x00004E7C, 0x00004E80
+ .word 0x00004E80, 0x00004E84
+ .word 0x00004E84, 0x00004E88
+ .word 0x00004E88, 0x00004E8C
+ .word 0x00004E8C, 0x00004E90
+ .word 0x00004E90, 0x00004E94
+ .word 0x00004E94, 0x00004E98
+ .word 0x00004E98, 0x00004E9C
+ .word 0x00004E9C, 0x00004EA0
+ .word 0x00004EA0, 0x00004EA4
+ .word 0x00004EA4, 0x00004EA8
+ .word 0x00004EA8, 0x00004EAC
+ .word 0x00004EAC, 0x00004EB0
+ .word 0x00004EB0, 0x00004EB4
+ .word 0x00004EB4, 0x00004EB8
+ .word 0x00004EB8, 0x00004EBC
+ .word 0x00004EBC, 0x00004EC0
+ .word 0x00004EC0, 0x00004EC4
+ .word 0x00004EC4, 0x00004EC8
+ .word 0x00004EC8, 0x00004ECC
+ .word 0x00004ECC, 0x00004ED0
+ .word 0x00004ED0, 0x00004ED4
+ .word 0x00004ED4, 0x00004ED8
+ .word 0x00004ED8, 0x00004EDC
+ .word 0x00004EDC, 0x00004EE0
+ .word 0x00004EE0, 0x00004EE4
+ .word 0x00004EE4, 0x00004EE8
+ .word 0x00004EE8, 0x00004EEC
+ .word 0x00004EEC, 0x00004EF0
+ .word 0x00004EF0, 0x00004EF4
+ .word 0x00004EF4, 0x00004EF8
+ .word 0x00004EF8, 0x00004EFC
+ .word 0x00004EFC, 0x00004F00
+ .word 0x00004F00, 0x00004F04
+ .word 0x00004F04, 0x00004F08
+ .word 0x00004F08, 0x00004F10
+ .word 0x00004F10, 0x00004F18
+ .word 0x00004F18, 0x00004F1C
+ .word 0x00004F1C, 0x00004F20
+ .word 0x00004F20, 0x00004F24
+ .word 0x00004F24, 0x00004F28
+ .word 0x00004F28, 0x00004F2C
+ .word 0x00004F2C, 0x00004F30
+ .word 0x00004F30, 0x00004F34
+ .word 0x00004F34, 0x00004F38
+ .word 0x00004F38, 0x00004F3C
+ .word 0x00004F3C, 0x00004F40
+ .word 0x00004F40, 0x00004F44
+ .word 0x00004F44, 0x00004F48
+ .word 0x00004F48, 0x00004F4C
+ .word 0x00004F4C, 0x00004F58
+ .word 0x00004F58, 0x00004F5C
+ .word 0x00004F5C, 0x00004F60
+ .word 0x00004F60, 0x00004F64
+ .word 0x00004F64, 0x00004F68
+ .word 0x00004F68, 0x00004F6C
+ .word 0x00004F6C, 0x00004F70
+ .word 0x00004F70, 0x00004F74
+ .word 0x00004F74, 0x00004F78
+ .word 0x00004F78, 0x00004F80
+ .word 0x00004F80, 0x00004F88
+ .word 0x00004F88, 0x00004F8C
+ .word 0x00004F8C, 0x00004F90
+ .word 0x00004F90, 0x00004F94
+ .word 0x00004F94, 0x00004F98
+ .word 0x00004F98, 0x00004F9C
+ .word 0x00004F9C, 0x00004FA0
+ .word 0x00004FA0, 0x00004FA4
+ .word 0x00004FA4, 0x00004FB0
+ .word 0x00004FB0, 0x00004FB4
+ .word 0x00004FB4, 0x00004FB8
+ .word 0x00004FB8, 0x00004FBC
+ .word 0x00004FBC, 0x00004FC0
+ .word 0x00004FC0, 0x00004FC4
+ .word 0x00004FC4, 0x00004FC8
+ .word 0x00004FC8, 0x00004FCC
+ .word 0x00004FCC, 0x00004FD4
+ .word 0x00004FD4, 0x00004FD8
+ .word 0x00004FD8, 0x00004FDC
+ .word 0x00004FDC, 0x00004FE0
+ .word 0x00004FE0, 0x00004FF0
+ .word 0x00004FF0, 0x00004FF4
+ .word 0x00004FF4, 0x00004FF8
+ .word 0x00004FF8, 0x00004FFC
+ .word 0x00004FFC, 0x00005000
+ .word 0x00005000, 0x00005004
+ .word 0x00005004, 0x00005008
+ .word 0x00005008, 0x0000500C
+ .word 0x0000500C, 0x00005030
+ .word 0x00005030, 0x00005054
+ .word 0x00005054, 0x00005058
+ .word 0x00005058, 0x0000505C
+ .word 0x0000505C, 0x00005068
+ .word 0x00005068, 0x0000506C
+ .word 0x0000506C, 0x00005070
+ .word 0x00005070, 0x00005074
+ .word 0x00005074, 0x00005078
+ .word 0x00005078, 0x0000507C
+ .word 0x0000507C, 0x00005080
+ .word 0x00005080, 0x00005084
+ .word 0x00005084, 0x00005088
+ .word 0x00005088, 0x0000508C
+ .word 0x0000508C, 0x00005090
+ .word 0x00005090, 0x00005094
+ .word 0x00005094, 0x00005098
+ .word 0x00005098, 0x0000509C
+ .word 0x0000509C, 0x000050A0
+ .word 0x000050A0, 0x000050A4
+ .word 0x000050A4, 0x000050A8
+ .word 0x000050A8, 0x000050AC
+ .word 0x000050AC, 0x000050B0
+ .word 0x000050B0, 0x000050B4
+ .word 0x000050B4, 0x000050B8
+ .word 0x000050B8, 0x000050BC
+ .word 0x000050BC, 0x000050C0
+ .word 0x000050C0, 0x000050C4
+ .word 0x000050C4, 0x000050C8
+ .word 0x000050C8, 0x000050CC
+ .word 0x000050CC, 0x000050D0
+ .word 0x000050D0, 0x000050D4
+ .word 0x000050D4, 0x000050D8
+ .word 0x000050D8, 0x000050DC
+ .word 0x000050DC, 0x000050E0
+ .word 0x000050E0, 0x000050E4
+ .word 0x000050E4, 0x000050E8
+ .word 0x000050E8, 0x000050EC
+ .word 0x000050EC, 0x000050F0
+ .word 0x000050F0, 0x000050F4
+ .word 0x000050F4, 0x000050F8
+ .word 0x000050F8, 0x000050FC
+ .word 0x000050FC, 0x00005100
+ .word 0x00005100, 0x00005104
+ .word 0x00005104, 0x0000510C
+ .word 0x0000510C, 0x00005110
+ .word 0x00005110, 0x00005118
+ .word 0x00005118, 0x0000511C
+ .word 0x0000511C, 0x00005120
+ .word 0x00005120, 0x00005124
+ .word 0x00005124, 0x00005128
+ .word 0x00005128, 0x0000512C
+ .word 0x0000512C, 0x00005130
+ .word 0x00005130, 0x00005134
+ .word 0x00005134, 0x00005138
+ .word 0x00005138, 0x00005170
+ .word 0x00005170, 0x000051C0
+ .word 0x000051C0, 0x000051C4
+ .word 0x000051C4, 0x000051C8
+ .word 0x000051C8, 0x000051CC
+ .word 0x000051CC, 0x000051D0
+ .word 0x000051D0, 0x000051D4
+ .word 0x000051D4, 0x000051D8
+ .word 0x000051D8, 0x000051DC
+ .word 0x000051DC, 0x000051E0
+ .word 0x000051E0, 0x000051E4
+ .word 0x000051E4, 0x000051E8
+ .word 0x000051E8, 0x000051EC
+ .word 0x000051EC, 0x000051F0
+ .word 0x000051F0, 0x000051F4
+ .word 0x000051F4, 0x000051F8
+ .word 0x000051F8, 0x000051FC
+ .word 0x000051FC, 0x00005200
+ .word 0x00005200, 0x00005204
+ .word 0x00005204, 0x00005208
+ .word 0x00005208, 0x0000520C
+ .word 0x0000520C, 0x00005210
+ .word 0x00005210, 0x00005214
+ .word 0x00005214, 0x00005218
+ .word 0x00005218, 0x0000521C
+ .word 0x0000521C, 0x00005220
+ .word 0x00005220, 0x00005224
+ .word 0x00005224, 0x00005228
+ .word 0x00005228, 0x0000522C
+ .word 0x0000522C, 0x0000524C
+ .word 0x0000524C, 0x00005258
+ .word 0x00005258, 0x0000525C
+ .word 0x0000525C, 0x00005260
+ .word 0x00005260, 0x00005264
+ .word 0x00005264, 0x00005268
+ .word 0x00005268, 0x00005270
+ .word 0x00005270, 0x00005278
+ .word 0x00005278, 0x00005290
+ .word 0x00005290, 0x00005294
+ .word 0x00005294, 0x00005298
+ .word 0x00005298, 0x0000529C
+ .word 0x0000529C, 0x000052A8
+ .word 0x000052A8, 0x000052B4
+ .word 0x000052B4, 0x000052C0
+ .word 0x000052C0, 0x000052CC
+ .word 0x000052CC, 0x000052D8
+ .word 0x000052D8, 0x000052DC
+ .word 0x000052DC, 0x000052E0
+ .word 0x000052E0, 0x000052E4
+ .word 0x000052E4, 0x000052E8
+ .word 0x000052E8, 0x000052EC
+ .word 0x000052EC, 0x000052F0
+ .word 0x000052F0, 0x000052F4
+ .word 0x000052F4, 0x000052FC
+ .word 0x000052FC, 0x00005304
+ .word 0x00005304, 0x00005308
+ .word 0x00005308, 0x0000530C
+ .word 0x0000530C, 0x00005310
+ .word 0x00005310, 0x00005314
+ .word 0x00005314, 0x00005318
+ .word 0x00005318, 0x0000531C
+ .word 0x0000531C, 0x00005340
+ .word 0x00005340, 0x00005364
+ .word 0x00005364, 0x0000536C
+ .word 0x0000536C, 0x00005374
+ .word 0x00005374, 0x00005378
+ .word 0x00005378, 0x0000537C
+ .word 0x0000537C, 0x00005380
+ .word 0x00005380, 0x00005384
+ .word 0x00005384, 0x00005388
+ .word 0x00005388, 0x0000538C
+ .word 0x0000538C, 0x00005390
+ .word 0x00005390, 0x00005394
+ .word 0x00005394, 0x00005398
+ .word 0x00005398, 0x0000539C
+ .word 0x0000539C, 0x000053A0
+ .word 0x000053A0, 0x000053A4
+ .word 0x000053A4, 0x000053A8
+ .word 0x000053A8, 0x000053AC
+ .word 0x000053AC, 0x000053B0
+ .word 0x000053B0, 0x000053B4
+ .word 0x000053B4, 0x000053B8
+ .word 0x000053B8, 0x000053BC
+ .word 0x000053BC, 0x000053C0
+ .word 0x000053C0, 0x000053C4
+ .word 0x000053C4, 0x000053D0
+ .word 0x000053D0, 0x000053DC
+ .word 0x000053DC, 0x000053E0
+ .word 0x000053E0, 0x000053EC
+ .word 0x000053EC, 0x000053F0
+ .word 0x000053F0, 0x000053F4
+ .word 0x000053F4, 0x000053FC
+ .word 0x000053FC, 0x00005408
+ .word 0x00005408, 0x0000540C
+ .word 0x0000540C, 0x00005410
+ .word 0x00005410, 0x00005414
+ .word 0x00005414, 0x00005418
+ .word 0x00005418, 0x0000541C
+ .word 0x0000541C, 0x00005420
+ .word 0x00005420, 0x00005424
+ .word 0x00005424, 0x00005428
+ .word 0x00005428, 0x0000542C
+ .word 0x0000542C, 0x00005430
+ .word 0x00005430, 0x00005434
+ .word 0x00005434, 0x00005438
+ .word 0x00005438, 0x0000543C
+ .word 0x0000543C, 0x00005440
+ .word 0x00005440, 0x00005444
+ .word 0x00005444, 0x00005448
+ .word 0x00005448, 0x0000544C
+ .word 0x0000544C, 0x00005450
+ .word 0x00005450, 0x00005454
+ .word 0x00005454, 0x00005458
+ .word 0x00005458, 0x0000545C
+ .word 0x0000545C, 0x00005460
+ .word 0x00005460, 0x00005464
+ .word 0x00005464, 0x00005468
+ .word 0x00005468, 0x0000546C
+ .word 0x0000546C, 0x0000548C
+ .word 0x0000548C, 0x0000549C
+ .word 0x0000549C, 0x000054A0
+ .word 0x000054A0, 0x000054CC
+ .word 0x000054CC, 0x000054E4
+ .word 0x000054E4, 0x000054E8
+ .word 0x000054E8, 0x00005508
+ .word 0x00005508, 0x00005520
+ .word 0x00005520, 0x00005528
+ .word 0x00005528, 0x0000552C
+ .word 0x0000552C, 0x0000553C
+ .word 0x0000553C, 0x00005540
+ .word 0x00005540, 0x00005544
+ .word 0x00005544, 0x00005548
+ .word 0x00005548, 0x0000554C
+ .word 0x0000554C, 0x00005550
+ .word 0x00005550, 0x00005554
+ .word 0x00005554, 0x00005558
+ .word 0x00005558, 0x0000555C
+ .word 0x0000555C, 0x00005560
+ .word 0x00005560, 0x00005564
+ .word 0x00005564, 0x00005578
+ .word 0x00005578, 0x00005590
+ .word 0x00005590, 0x000055B0
+ .word 0x000055B0, 0x000055B4
+ .word 0x000055B4, 0x000055B8
+ .word 0x000055B8, 0x000055DC
+ .word 0x000055DC, 0x000055F8
+ .word 0x000055F8, 0x000055FC
+ .word 0x000055FC, 0x00005600
+ .word 0x00005600, 0x00005604
+ .word 0x00005604, 0x00005608
+ .word 0x00005608, 0x0000560C
+ .word 0x0000560C, 0x00005610
+ .word 0x00005610, 0x00005614
+ .word 0x00005614, 0x00005620
+ .word 0x00005620, 0x0000562C
+ .word 0x0000562C, 0x00005638
+ .word 0x00005638, 0x0000563C
+ .word 0x0000563C, 0x00005640
+ .word 0x00005640, 0x00005648
+ .word 0x00005648, 0x0000564C
+ .word 0x0000564C, 0x00005658
+ .word 0x00005658, 0x0000565C
+ .word 0x0000565C, 0x00005660
+ .word 0x00005660, 0x0000566C
+ .word 0x0000566C, 0x00005670
+ .word 0x00005670, 0x00005674
+ .word 0x00005674, 0x00005678
+ .word 0x00005678, 0x0000567C
+ .word 0x0000567C, 0x00005680
+ .word 0x00005680, 0x00005684
+ .word 0x00005684, 0x00005688
+ .word 0x00005688, 0x0000568C
+ .word 0x0000568C, 0x00005694
+ .word 0x00005694, 0x00005698
+ .word 0x00005698, 0x0000569C
+ .word 0x0000569C, 0x000056A0
+ .word 0x000056A0, 0x000056A4
+ .word 0x000056A4, 0x000056A8
+ .word 0x000056A8, 0x000056D0
+ .word 0x000056D0, 0x000056F8
+ .word 0x000056F8, 0x00005704
+ .word 0x00005704, 0x00005714
+ .word 0x00005714, 0x00005718
+ .word 0x00005718, 0x0000571C
+ .word 0x0000571C, 0x00005720
+ .word 0x00005720, 0x00005724
+ .word 0x00005724, 0x00005728
+ .word 0x00005728, 0x0000572C
+ .word 0x0000572C, 0x00005730
+ .word 0x00005730, 0x00005734
+ .word 0x00005734, 0x00005738
+ .word 0x00005738, 0x0000573C
+ .word 0x0000573C, 0x00005740
+ .word 0x00005740, 0x00005744
+ .word 0x00005744, 0x00005748
+ .word 0x00005748, 0x0000574C
+ .word 0x0000574C, 0x00005750
+ .word 0x00005750, 0x00005754
+ .word 0x00005754, 0x00005758
+ .word 0x00005758, 0x0000575C
+ .word 0x0000575C, 0x00005760
+ .word 0x00005760, 0x00005764
+ .word 0x00005764, 0x00005768
+ .word 0x00005768, 0x0000576C
+ .word 0x0000576C, 0x00005770
+ .word 0x00005770, 0x00005774
+ .word 0x00005774, 0x00005778
+ .word 0x00005778, 0x0000577C
+ .word 0x0000577C, 0x00005780
+ .word 0x00005780, 0x00005784
+ .word 0x00005784, 0x00005788
+ .word 0x00005788, 0x0000578C
+ .word 0x0000578C, 0x00005790
+ .word 0x00005790, 0x00005794
+ .word 0x00005794, 0x00005798
+ .word 0x00005798, 0x0000579C
+ .word 0x0000579C, 0x000057A0
+ .word 0x000057A0, 0x00005808
+ .word 0x00005808, 0x0000580C
+ .word 0x0000580C, 0x00005810
+ .word 0x00005810, 0x00005814
+ .word 0x00005814, 0x00005818
+ .word 0x00005818, 0x0000581C
+ .word 0x0000581C, 0x00005820
+ .word 0x00005820, 0x00005824
+ .word 0x00005824, 0x00005828
+ .word 0x00005828, 0x0000582C
+ .word 0x0000582C, 0x00005830
+ .word 0x00005830, 0x00005834
+ .word 0x00005834, 0x00005838
+ .word 0x00005838, 0x0000583C
+ .word 0x0000583C, 0x00005840
+ .word 0x00005840, 0x00005844
+ .word 0x00005844, 0x00005848
+ .word 0x00005848, 0x0000584C
+ .word 0x0000584C, 0x00005850
+ .word 0x00005850, 0x0000585C
+ .word 0x0000585C, 0x00005868
+ .word 0x00005868, 0x00005874
+ .word 0x00005874, 0x00005888
+ .word 0x00005888, 0x0000588C
+ .word 0x0000588C, 0x00005890
+ .word 0x00005890, 0x00005894
+ .word 0x00005894, 0x00005898
+ .word 0x00005898, 0x0000589C
+ .word 0x0000589C, 0x000058A0
+ .word 0x000058A0, 0x000058A4
+ .word 0x000058A4, 0x000058A8
+ .word 0x000058A8, 0x000058AC
+ .word 0x000058AC, 0x000058B0
+ .word 0x000058B0, 0x000058B4
+ .word 0x000058B4, 0x000058B8
+ .word 0x000058B8, 0x000058BC
+ .word 0x000058BC, 0x000058C0
+ .word 0x000058C0, 0x000058C4
+ .word 0x000058C4, 0x000058C8
+ .word 0x000058C8, 0x000058CC
+ .word 0x000058CC, 0x000058D0
+ .word 0x000058D0, 0x00005904
+ .word 0x00005904, 0x00005910
+ .word 0x00005910, 0x0000591C
+ .word 0x0000591C, 0x0000592C
+ .word 0x0000592C, 0x00005930
+ .word 0x00005930, 0x00005934
+ .word 0x00005934, 0x00005938
+ .word 0x00005938, 0x0000593C
+ .word 0x0000593C, 0x00005940
+ .word 0x00005940, 0x00005948
+ .word 0x00005948, 0x00005950
+ .word 0x00005950, 0x00005954
+ .word 0x00005954, 0x00005958
+ .word 0x00005958, 0x0000598C
+ .word 0x0000598C, 0x000059D0
+ .word 0x000059D0, 0x000059D4
+ .word 0x000059D4, 0x000059D8
+ .word 0x000059D8, 0x000059DC
+ .word 0x000059DC, 0x000059E0
+ .word 0x000059E0, 0x000059F0
+ .word 0x000059F0, 0x00005A00
+ .word 0x00005A00, 0x00005A04
+ .word 0x00005A04, 0x00005A10
+ .word 0x00005A10, 0x00005A18
+ .word 0x00005A18, 0x00005A1C
+ .word 0x00005A1C, 0x00005A2C
+ .word 0x00005A2C, 0x00005A4C
+ .word 0x00005A4C, 0x00005A50
+ .word 0x00005A50, 0x00005A5C
+ .word 0x00005A5C, 0x00005A6C
+ .word 0x00005A6C, 0x00005A70
+ .word 0x00005A70, 0x00005AA4
+ .word 0x00005AA4, 0x00005AF0
+ .word 0x00005AF0, 0x00005B10
+ .word 0x00005B10, 0x00005B2C
+ .word 0x00005B2C, 0x00005B30
+ .word 0x00005B30, 0x00005B4C
+ .word 0x00005B4C, 0x00005B50
+ .word 0x00005B50, 0x00005B54
+ .word 0x00005B54, 0x00005B58
+ .word 0x00005B58, 0x00005B5C
+ .word 0x00005B5C, 0x00005B60
+ .word 0x00005B60, 0x00005B64
+ .word 0x00005B64, 0x00005B68
+ .word 0x00005B68, 0x00005B6C
+ .word 0x00005B6C, 0x00005B70
+ .word 0x00005B70, 0x00005B74
+ .word 0x00005B74, 0x00005B78
+ .word 0x00005B78, 0x00005B7C
+ .word 0x00005B7C, 0x00005B8C
+ .word 0x00005B8C, 0x00005B90
+ .word 0x00005B90, 0x00005B98
+ .word 0x00005B98, 0x00005B9C
+ .word 0x00005B9C, 0x00005BA0
+ .word 0x00005BA0, 0x00005BA4
+ .word 0x00005BA4, 0x00005BA8
+ .word 0x00005BA8, 0x00005BAC
+ .word 0x00005BAC, 0x00005BB0
+ .word 0x00005BB0, 0x00005BB4
+ .word 0x00005BB4, 0x00005BB8
+ .word 0x00005BB8, 0x00005BBC
+ .word 0x00005BBC, 0x00005BC0
+ .word 0x00005BC0, 0x00005BC4
+ .word 0x00005BC4, 0x00005BC8
+ .word 0x00005BC8, 0x00005BCC
+ .word 0x00005BCC, 0x00005BD0
+ .word 0x00005BD0, 0x00005BD4
+ .word 0x00005BD4, 0x00005BD8
+ .word 0x00005BD8, 0x00005BDC
+ .word 0x00005BDC, 0x00005BE8
+ .word 0x00005BE8, 0x00005BF4
+ .word 0x00005BF4, 0x00005C04
+ .word 0x00005C04, 0x00005C10
+ .word 0x00005C10, 0x00005C14
+ .word 0x00005C14, 0x00005C18
+ .word 0x00005C18, 0x00005C20
+ .word 0x00005C20, 0x00005C28
+ .word 0x00005C28, 0x00005C4C
+ .word 0x00005C4C, 0x00005C70
+ .word 0x00005C70, 0x00005C7C
+ .word 0x00005C7C, 0x00005C80
+ .word 0x00005C80, 0x00005C84
+ .word 0x00005C84, 0x00005C88
+ .word 0x00005C88, 0x00005C8C
+ .word 0x00005C8C, 0x00005C90
+ .word 0x00005C90, 0x00005C94
+ .word 0x00005C94, 0x00005C9C
+ .word 0x00005C9C, 0x00005CA0
+ .word 0x00005CA0, 0x00005D34
+ .word 0x00005D34, 0x00005DC8
+ .word 0x00005DC8, 0x00005DCC
+ .word 0x00005DCC, 0x00005DD0
+ .word 0x00005DD0, 0x00005DD4
+ .word 0x00005DD4, 0x00005DD8
+ .word 0x00005DD8, 0x00005DDC
+ .word 0x00005DDC, 0x00005DE0
+ .word 0x00005DE0, 0x00005DE4
+ .word 0x00005DE4, 0x00005DE8
+ .word 0x00005DE8, 0x00005DEC
+ .word 0x00005DEC, 0x00005DF0
+ .word 0x00005DF0, 0x00005DF4
+ .word 0x00005DF4, 0x00005DF8
+ .word 0x00005DF8, 0x00005DFC
+ .word 0x00005DFC, 0x00005E00
+ .word 0x00005E00, 0x00005E04
+ .word 0x00005E04, 0x00005E08
+ .word 0x00005E08, 0x00005E0C
+ .word 0x00005E0C, 0x00005E10
+ .word 0x00005E10, 0x00005E14
+ .word 0x00005E14, 0x00005E18
+ .word 0x00005E18, 0x00005E1C
+ .word 0x00005E1C, 0x00005E20
+ .word 0x00005E20, 0x00005E24
+ .word 0x00005E24, 0x00005E28
+ .word 0x00005E28, 0x00005E2C
+ .word 0x00005E2C, 0x00005E30
+ .word 0x00005E30, 0x00005E34
+ .word 0x00005E34, 0x00005E38
+ .word 0x00005E38, 0x00005E3C
+ .word 0x00005E3C, 0x00005E40
+ .word 0x00005E40, 0x00005E44
+ .word 0x00005E44, 0x00005E48
+ .word 0x00005E48, 0x00005E54
+ .word 0x00005E54, 0x00005E6C
+ .word 0x00005E6C, 0x00005E70
+ .word 0x00005E70, 0x00005E74
+ .word 0x00005E74, 0x00005E78
+ .word 0x00005E78, 0x00005E80
+ .word 0x00005E80, 0x00005E84
+ .word 0x00005E84, 0x00005E8C
+ .word 0x00005E8C, 0x00005E94
+ .word 0x00005E94, 0x00005E98
+ .word 0x00005E98, 0x00005E9C
+ .word 0x00005E9C, 0x00005EA0
+ .word 0x00005EA0, 0x00005EA4
+ .word 0x00005EA4, 0x00005EA8
+ .word 0x00005EA8, 0x00005EAC
+ .word 0x00005EAC, 0x00005EB0
+ .word 0x00005EB0, 0x00005EB4
+ .word 0x00005EB4, 0x00005EB8
+ .word 0x00005EB8, 0x00005EBC
+ .word 0x00005EBC, 0x00005EC0
+ .word 0x00005EC0, 0x00005EC4
+ .word 0x00005EC4, 0x00005EC8
+ .word 0x00005EC8, 0x00005ED4
+ .word 0x00005ED4, 0x00005ED8
+ .word 0x00005ED8, 0x00005EDC
+ .word 0x00005EDC, 0x00005EE0
+ .word 0x00005EE0, 0x00005EE4
+ .word 0x00005EE4, 0x00005EE8
+ .word 0x00005EE8, 0x00005EEC
+ .word 0x00005EEC, 0x00005EF0
+ .word 0x00005EF0, 0x00005EF4
+ .word 0x00005EF4, 0x00005EFC
+ .word 0x00005EFC, 0x00005F04
+ .word 0x00005F04, 0x00005F08
+ .word 0x00005F08, 0x00005F0C
+ .word 0x00005F0C, 0x00005F10
+ .word 0x00005F10, 0x00005F14
+ .word 0x00005F14, 0x00005F18
+ .word 0x00005F18, 0x00005F1C
+ .word 0x00005F1C, 0x00005F20
+ .word 0x00005F20, 0x00005F2C
+ .word 0x00005F2C, 0x00005F30
+ .word 0x00005F30, 0x00005F34
+ .word 0x00005F34, 0x00005F38
+ .word 0x00005F38, 0x00005F3C
+ .word 0x00005F3C, 0x00005F40
+ .word 0x00005F40, 0x00005F44
+ .word 0x00005F44, 0x00005F48
+ .word 0x00005F48, 0x00005F50
+ .word 0x00005F50, 0x00005F54
+ .word 0x00005F54, 0x00005F58
+ .word 0x00005F58, 0x00005F5C
+ .word 0x00005F5C, 0x00005F6C
+ .word 0x00005F6C, 0x00005F70
+ .word 0x00005F70, 0x00005F74
+ .word 0x00005F74, 0x00005F78
+ .word 0x00005F78, 0x00005F7C
+ .word 0x00005F7C, 0x00005F80
+ .word 0x00005F80, 0x00005F84
+ .word 0x00005F84, 0x00005F88
+ .word 0x00005F88, 0x00005FAC
+ .word 0x00005FAC, 0x00005FD0
+ .word 0x00005FD0, 0x00005FD4
+ .word 0x00005FD4, 0x00005FD8
+ .word 0x00005FD8, 0x00005FE4
+ .word 0x00005FE4, 0x00005FE8
+ .word 0x00005FE8, 0x00005FEC
+ .word 0x00005FEC, 0x00005FF0
+ .word 0x00005FF0, 0x00005FF4
+ .word 0x00005FF4, 0x00005FF8
+ .word 0x00005FF8, 0x00005FFC
+ .word 0x00005FFC, 0x00006000
+ .word 0x00006000, 0x00006004
+ .word 0x00006004, 0x00006008
+ .word 0x00006008, 0x0000600C
+ .word 0x0000600C, 0x00006010
+ .word 0x00006010, 0x00006014
+ .word 0x00006014, 0x00006018
+ .word 0x00006018, 0x0000601C
+ .word 0x0000601C, 0x00006020
+ .word 0x00006020, 0x00006024
+ .word 0x00006024, 0x00006028
+ .word 0x00006028, 0x0000602C
+ .word 0x0000602C, 0x00006030
+ .word 0x00006030, 0x00006034
+ .word 0x00006034, 0x00006038
+ .word 0x00006038, 0x0000603C
+ .word 0x0000603C, 0x00006040
+ .word 0x00006040, 0x00006044
+ .word 0x00006044, 0x00006048
+ .word 0x00006048, 0x0000604C
+ .word 0x0000604C, 0x00006050
+ .word 0x00006050, 0x00006054
+ .word 0x00006054, 0x00006058
+ .word 0x00006058, 0x0000605C
+ .word 0x0000605C, 0x00006060
+ .word 0x00006060, 0x00006064
+ .word 0x00006064, 0x00006068
+ .word 0x00006068, 0x0000606C
+ .word 0x0000606C, 0x00006070
+ .word 0x00006070, 0x00006074
+ .word 0x00006074, 0x00006078
+ .word 0x00006078, 0x0000607C
+ .word 0x0000607C, 0x00006080
+ .word 0x00006080, 0x00006088
+ .word 0x00006088, 0x0000608C
+ .word 0x0000608C, 0x00006094
+ .word 0x00006094, 0x00006098
+ .word 0x00006098, 0x0000609C
+ .word 0x0000609C, 0x000060A0
+ .word 0x000060A0, 0x000060A4
+ .word 0x000060A4, 0x000060A8
+ .word 0x000060A8, 0x000060AC
+ .word 0x000060AC, 0x000060B0
+ .word 0x000060B0, 0x000060B4
+ .word 0x000060B4, 0x000060EC
+ .word 0x000060EC, 0x0000613C
+ .word 0x0000613C, 0x00006140
+ .word 0x00006140, 0x00006144
+ .word 0x00006144, 0x00006148
+ .word 0x00006148, 0x0000614C
+ .word 0x0000614C, 0x00006150
+ .word 0x00006150, 0x00006154
+ .word 0x00006154, 0x00006158
+ .word 0x00006158, 0x0000615C
+ .word 0x0000615C, 0x00006160
+ .word 0x00006160, 0x00006164
+ .word 0x00006164, 0x00006168
+ .word 0x00006168, 0x0000616C
+ .word 0x0000616C, 0x00006170
+ .word 0x00006170, 0x00006174
+ .word 0x00006174, 0x00006178
+ .word 0x00006178, 0x0000617C
+ .word 0x0000617C, 0x00006180
+ .word 0x00006180, 0x00006184
+ .word 0x00006184, 0x00006188
+ .word 0x00006188, 0x0000618C
+ .word 0x0000618C, 0x00006190
+ .word 0x00006190, 0x00006194
+ .word 0x00006194, 0x00006198
+ .word 0x00006198, 0x0000619C
+ .word 0x0000619C, 0x000061A0
+ .word 0x000061A0, 0x000061A4
+ .word 0x000061A4, 0x000061A8
+ .word 0x000061A8, 0x000061C0
+ .word 0x000061C0, 0x000061CC
+ .word 0x000061CC, 0x000061D0
+ .word 0x000061D0, 0x000061D4
+ .word 0x000061D4, 0x000061D8
+ .word 0x000061D8, 0x000061DC
+ .word 0x000061DC, 0x000061E4
+ .word 0x000061E4, 0x000061EC
+ .word 0x000061EC, 0x00006204
+ .word 0x00006204, 0x00006208
+ .word 0x00006208, 0x0000620C
+ .word 0x0000620C, 0x00006210
+ .word 0x00006210, 0x0000621C
+ .word 0x0000621C, 0x00006228
+ .word 0x00006228, 0x00006234
+ .word 0x00006234, 0x00006240
+ .word 0x00006240, 0x0000624C
+ .word 0x0000624C, 0x00006250
+ .word 0x00006250, 0x00006254
+ .word 0x00006254, 0x00006258
+ .word 0x00006258, 0x0000625C
+ .word 0x0000625C, 0x00006260
+ .word 0x00006260, 0x00006264
+ .word 0x00006264, 0x00006268
+ .word 0x00006268, 0x00006270
+ .word 0x00006270, 0x00006278
+ .word 0x00006278, 0x0000627C
+ .word 0x0000627C, 0x00006280
+ .word 0x00006280, 0x00006284
+ .word 0x00006284, 0x00006288
+ .word 0x00006288, 0x0000628C
+ .word 0x0000628C, 0x00006290
+ .word 0x00006290, 0x000062B4
+ .word 0x000062B4, 0x000062D8
+ .word 0x000062D8, 0x000062E0
+ .word 0x000062E0, 0x000062E8
+ .word 0x000062E8, 0x000062EC
+ .word 0x000062EC, 0x000062F0
+ .word 0x000062F0, 0x000062F4
+ .word 0x000062F4, 0x000062F8
+ .word 0x000062F8, 0x000062FC
+ .word 0x000062FC, 0x00006300
+ .word 0x00006300, 0x00006304
+ .word 0x00006304, 0x00006308
+ .word 0x00006308, 0x0000630C
+ .word 0x0000630C, 0x00006310
+ .word 0x00006310, 0x00006314
+ .word 0x00006314, 0x00006328
+ .word 0x00006328, 0x0000632C
+ .word 0x0000632C, 0x00006330
+ .word 0x00006330, 0x00006334
+ .word 0x00006334, 0x00006338
+ .word 0x00006338, 0x0000633C
+ .word 0x0000633C, 0x00006340
+ .word 0x00006340, 0x00006344
+ .word 0x00006344, 0x00006348
+ .word 0x00006348, 0x00006354
+ .word 0x00006354, 0x00006360
+ .word 0x00006360, 0x00006364
+ .word 0x00006364, 0x00006370
+ .word 0x00006370, 0x00006374
+ .word 0x00006374, 0x00006378
+ .word 0x00006378, 0x00006380
+ .word 0x00006380, 0x0000638C
+ .word 0x0000638C, 0x00006390
+ .word 0x00006390, 0x00006394
+ .word 0x00006394, 0x00006398
+ .word 0x00006398, 0x0000639C
+ .word 0x0000639C, 0x000063A0
+ .word 0x000063A0, 0x000063A4
+ .word 0x000063A4, 0x000063A8
+ .word 0x000063A8, 0x000063AC
+ .word 0x000063AC, 0x000063B0
+ .word 0x000063B0, 0x000063B4
+ .word 0x000063B4, 0x000063B8
+ .word 0x000063B8, 0x000063BC
+ .word 0x000063BC, 0x000063C0
+ .word 0x000063C0, 0x000063C4
+ .word 0x000063C4, 0x000063C8
+ .word 0x000063C8, 0x000063CC
+ .word 0x000063CC, 0x000063D0
+ .word 0x000063D0, 0x000063D4
+ .word 0x000063D4, 0x000063D8
+ .word 0x000063D8, 0x000063DC
+ .word 0x000063DC, 0x000063E0
+ .word 0x000063E0, 0x000063E4
+ .word 0x000063E4, 0x000063E8
+ .word 0x000063E8, 0x000063EC
+ .word 0x000063EC, 0x000063F0
+ .word 0x000063F0, 0x00006410
+ .word 0x00006410, 0x00006420
+ .word 0x00006420, 0x00006424
+ .word 0x00006424, 0x00006450
+ .word 0x00006450, 0x00006468
+ .word 0x00006468, 0x00006480
+ .word 0x00006480, 0x000064A0
+ .word 0x000064A0, 0x000064B8
+ .word 0x000064B8, 0x000064C0
+ .word 0x000064C0, 0x000064C4
+ .word 0x000064C4, 0x000064D4
+ .word 0x000064D4, 0x000064D8
+ .word 0x000064D8, 0x000064DC
+ .word 0x000064DC, 0x000064E0
+ .word 0x000064E0, 0x000064E4
+ .word 0x000064E4, 0x000064E8
+ .word 0x000064E8, 0x000064EC
+ .word 0x000064EC, 0x000064F0
+ .word 0x000064F0, 0x000064F4
+ .word 0x000064F4, 0x000064F8
+ .word 0x000064F8, 0x000064FC
+ .word 0x000064FC, 0x00006510
+ .word 0x00006510, 0x00006528
+ .word 0x00006528, 0x00006548
+ .word 0x00006548, 0x0000654C
+ .word 0x0000654C, 0x00006550
+ .word 0x00006550, 0x00006574
+ .word 0x00006574, 0x00006590
+ .word 0x00006590, 0x00006594
+ .word 0x00006594, 0x00006598
+ .word 0x00006598, 0x0000659C
+ .word 0x0000659C, 0x000065A0
+ .word 0x000065A0, 0x000065A4
+ .word 0x000065A4, 0x000065A8
+ .word 0x000065A8, 0x000065AC
+ .word 0x000065AC, 0x000065B8
+ .word 0x000065B8, 0x000065C4
+ .word 0x000065C4, 0x000065D0
+ .word 0x000065D0, 0x000065D4
+ .word 0x000065D4, 0x000065D8
+ .word 0x000065D8, 0x000065E0
+ .word 0x000065E0, 0x000065E4
+ .word 0x000065E4, 0x000065F0
+ .word 0x000065F0, 0x000065F4
+ .word 0x000065F4, 0x000065F8
+ .word 0x000065F8, 0x000065FC
+ .word 0x000065FC, 0x00006600
+ .word 0x00006600, 0x00006604
+ .word 0x00006604, 0x00006608
+ .word 0x00006608, 0x0000660C
+ .word 0x0000660C, 0x00006610
+ .word 0x00006610, 0x00006614
+ .word 0x00006614, 0x00006618
+ .word 0x00006618, 0x0000661C
+ .word 0x0000661C, 0x00006624
+ .word 0x00006624, 0x00006628
+ .word 0x00006628, 0x0000662C
+ .word 0x0000662C, 0x00006630
+ .word 0x00006630, 0x00006634
+ .word 0x00006634, 0x00006638
+ .word 0x00006638, 0x00006660
+ .word 0x00006660, 0x00006688
+ .word 0x00006688, 0x00006694
+ .word 0x00006694, 0x000066A4
+ .word 0x000066A4, 0x000066A8
+ .word 0x000066A8, 0x000066AC
+ .word 0x000066AC, 0x000066B0
+ .word 0x000066B0, 0x000066B4
+ .word 0x000066B4, 0x000066B8
+ .word 0x000066B8, 0x000066BC
+ .word 0x000066BC, 0x000066C0
+ .word 0x000066C0, 0x000066C4
+ .word 0x000066C4, 0x000066C8
+ .word 0x000066C8, 0x000066CC
+ .word 0x000066CC, 0x000066D0
+ .word 0x000066D0, 0x000066D4
+ .word 0x000066D4, 0x000066D8
+ .word 0x000066D8, 0x000066DC
+ .word 0x000066DC, 0x000066E0
+ .word 0x000066E0, 0x000066E4
+ .word 0x000066E4, 0x000066E8
+ .word 0x000066E8, 0x000066EC
+ .word 0x000066EC, 0x000066F0
+ .word 0x000066F0, 0x000066F4
+ .word 0x000066F4, 0x000066F8
+ .word 0x000066F8, 0x000066FC
+ .word 0x000066FC, 0x00006700
+ .word 0x00006700, 0x00006704
+ .word 0x00006704, 0x00006708
+ .word 0x00006708, 0x0000670C
+ .word 0x0000670C, 0x00006710
+ .word 0x00006710, 0x00006714
+ .word 0x00006714, 0x00006718
+ .word 0x00006718, 0x0000671C
+ .word 0x0000671C, 0x00006720
+ .word 0x00006720, 0x00006724
+ .word 0x00006724, 0x00006728
+ .word 0x00006728, 0x0000672C
+ .word 0x0000672C, 0x00006730
+ .word 0x00006730, 0x000067F8
+ .word 0x000067F8, 0x000067FC
+ .word 0x000067FC, 0x00006800
+ .word 0x00006800, 0x00006804
+ .word 0x00006804, 0x00006808
+ .word 0x00006808, 0x0000680C
+ .word 0x0000680C, 0x00006810
+ .word 0x00006810, 0x00006814
+ .word 0x00006814, 0x00006818
+ .word 0x00006818, 0x0000681C
+ .word 0x0000681C, 0x00006820
+ .word 0x00006820, 0x00006824
+ .word 0x00006824, 0x00006828
+ .word 0x00006828, 0x0000682C
+ .word 0x0000682C, 0x00006830
+ .word 0x00006830, 0x00006834
+ .word 0x00006834, 0x00006838
+ .word 0x00006838, 0x0000683C
+ .word 0x0000683C, 0x00006840
+ .word 0x00006840, 0x00006844
+ .word 0x00006844, 0x00006848
+ .word 0x00006848, 0x0000684C
+ .word 0x0000684C, 0x00006850
+ .word 0x00006850, 0x00006854
+ .word 0x00006854, 0x00006858
+ .word 0x00006858, 0x0000685C
+ .word 0x0000685C, 0x00006860
+ .word 0x00006860, 0x00006864
+ .word 0x00006864, 0x00006868
+ .word 0x00006868, 0x0000686C
+ .word 0x0000686C, 0x00006870
+ .word 0x00006870, 0x00006874
+ .word 0x00006874, 0x00006878
+ .word 0x00006878, 0x0000687C
+ .word 0x0000687C, 0x00006880
+ .word 0x00006880, 0x00006884
+ .word 0x00006884, 0x00006888
+ .word 0x00006888, 0x0000688C
+ .word 0x0000688C, 0x00006890
+ .word 0x00006890, 0x00006894
+ .word 0x00006894, 0x00006898
+ .word 0x00006898, 0x0000689C
+ .word 0x0000689C, 0x000068A0
+ .word 0x000068A0, 0x000068A4
+ .word 0x000068A4, 0x000068A8
+ .word 0x000068A8, 0x000068AC
+ .word 0x000068AC, 0x000068B0
+ .word 0x000068B0, 0x000068B4
+ .word 0x000068B4, 0x000068B8
+ .word 0x000068B8, 0x000068BC
+ .word 0x000068BC, 0x000068C0
+ .word 0x000068C0, 0x000068C4
+ .word 0x000068C4, 0x000068C8
+ .word 0x000068C8, 0x000068CC
+ .word 0x000068CC, 0x000068D0
+ .word 0x000068D0, 0x000068D4
+ .word 0x000068D4, 0x000068D8
+ .word 0x000068D8, 0x000068DC
+ .word 0x000068DC, 0x000068E0
+ .word 0x000068E0, 0x000068E4
+ .word 0x000068E4, 0x000068E8
+ .word 0x000068E8, 0x000068EC
+ .word 0x000068EC, 0x000068F0
+ .word 0x000068F0, 0x000068F4
+ .word 0x000068F4, 0x000068F8
+ .word 0x000068F8, 0x000068FC
+ .word 0x000068FC, 0x00006900
+ .word 0x00006900, 0x00006904
+ .word 0x00006904, 0x00006908
+ .word 0x00006908, 0x0000690C
+ .word 0x0000690C, 0x00006910
+ .word 0x00006910, 0x00006914
+ .word 0x00006914, 0x00006918
+ .word 0x00006918, 0x0000691C
+ .word 0x0000691C, 0x00006920
+ .word 0x00006920, 0x00006924
+ .word 0x00006924, 0x00006928
+ .word 0x00006928, 0x0000692C
+ .word 0x0000692C, 0x00006930
+ .word 0x00006930, 0x00006934
+ .word 0x00006934, 0x00006938
+ .word 0x00006938, 0x0000693C
+ .word 0x0000693C, 0x00006940
+ .word 0x00006940, 0x00006944
+ .word 0x00006944, 0x00006948
+ .word 0x00006948, 0x0000694C
+ .word 0x0000694C, 0x00006950
+ .word 0x00006950, 0x00006954
+ .word 0x00006954, 0x00006958
+ .word 0x00006958, 0x0000695C
+ .word 0x0000695C, 0x00006960
+ .word 0x00006960, 0x00006964
+ .word 0x00006964, 0x00006968
+ .word 0x00006968, 0x0000696C
+ .word 0x0000696C, 0x00006970
+ .word 0x00006970, 0x00006974
+ .word 0x00006974, 0x00006978
+ .word 0x00006978, 0x0000697C
+ .word 0x0000697C, 0x00006980
+ .word 0x00006980, 0x00006984
+ .word 0x00006984, 0x00006988
+ .word 0x00006988, 0x0000698C
+ .word 0x0000698C, 0x00006990
+ .word 0x00006990, 0x00006994
+ .word 0x00006994, 0x00006998
+ .word 0x00006998, 0x0000699C
+ .word 0x0000699C, 0x000069A0
+ .word 0x000069A0, 0x000069A4
+ .word 0x000069A4, 0x000069A8
+ .word 0x000069A8, 0x000069AC
+ .word 0x000069AC, 0x000069B0
+ .word 0x000069B0, 0x000069B4
+ .word 0x000069B4, 0x000069B8
+ .word 0x000069B8, 0x000069BC
+ .word 0x000069BC, 0x000069C0
+ .word 0x000069C0, 0x000069C4
+ .word 0x000069C4, 0x000069C8
+ .word 0x000069C8, 0x000069CC
+ .word 0x000069CC, 0x000069D0
+ .word 0x000069D0, 0x000069D4
+ .word 0x000069D4, 0x000069D8
+ .word 0x000069D8, 0x000069DC
+ .word 0x000069DC, 0x000069E0
+ .word 0x000069E0, 0x000069E4
+ .word 0x000069E4, 0x000069E8
+ .word 0x000069E8, 0x000069EC
+ .word 0x000069EC, 0x000069F0
+ .word 0x000069F0, 0x000069F4
+ .word 0x000069F4, 0x000069F8
+ .word 0x000069F8, 0x000069FC
+ .word 0x000069FC, 0x00006A00
+ .word 0x00006A00, 0x00006A04
+ .word 0x00006A04, 0x00006A08
+ .word 0x00006A08, 0x00006A0C
+ .word 0x00006A0C, 0x00006A10
+ .word 0x00006A10, 0x00006A14
+ .word 0x00006A14, 0x00006A18
+ .word 0x00006A18, 0x00006A1C
+ .word 0x00006A1C, 0x00006A20
+ .word 0x00006A20, 0x00006A24
+ .word 0x00006A24, 0x00006A28
+ .word 0x00006A28, 0x00006A2C
+ .word 0x00006A2C, 0x00006A30
+ .word 0x00006A30, 0x00006A34
+ .word 0x00006A34, 0x00006A38
+ .word 0x00006A38, 0x00006A3C
+ .word 0x00006A3C, 0x00006A40
+ .word 0x00006A40, 0x00006A44
+ .word 0x00006A44, 0x00006A48
+ .word 0x00006A48, 0x00006A4C
+ .word 0x00006A4C, 0x00006A50
+ .word 0x00006A50, 0x00006A54
+ .word 0x00006A54, 0x00006A58
+ .word 0x00006A58, 0x00006A5C
+ .word 0x00006A5C, 0x00006A60
+ .word 0x00006A60, 0x00006A64
+ .word 0x00006A64, 0x00006A68
+ .word 0x00006A68, 0x00006A6C
+ .word 0x00006A6C, 0x00006A70
+ .word 0x00006A70, 0x00006A74
+ .word 0x00006A74, 0x00006A78
+ .word 0x00006A78, 0x00006A7C
+ .word 0x00006A7C, 0x00006A80
+ .word 0x00006A80, 0x00006A84
+ .word 0x00006A84, 0x00006A88
+ .word 0x00006A88, 0x00006A8C
+ .word 0x00006A8C, 0x00006A90
+ .word 0x00006A90, 0x00006A94
+ .word 0x00006A94, 0x00006A98
+ .word 0x00006A98, 0x00006A9C
+ .word 0x00006A9C, 0x00006AA0
+ .word 0x00006AA0, 0x00006AA4
+ .word 0x00006AA4, 0x00006AA8
+ .word 0x00006AA8, 0x00006AAC
+ .word 0x00006AAC, 0x00006AB0
+ .word 0x00006AB0, 0x00006AB4
+ .word 0x00006AB4, 0x00006AB8
+ .word 0x00006AB8, 0x00006ABC
+ .word 0x00006ABC, 0x00006AC0
+ .word 0x00006AC0, 0x00006AC4
+ .word 0x00006AC4, 0x00006AC8
+ .word 0x00006AC8, 0x00006ACC
+ .word 0x00006ACC, 0x00006AD0
+ .word 0x00006AD0, 0x00006AD4
+ .word 0x00006AD4, 0x00006AD8
+ .word 0x00006AD8, 0x00006ADC
+ .word 0x00006ADC, 0x00006AE0
+ .word 0x00006AE0, 0x00006AE4
+ .word 0x00006AE4, 0x00006AE8
+ .word 0x00006AE8, 0x00006AEC
+ .word 0x00006AEC, 0x00006B40
+ .word 0x00006B40, 0x00006B44
+ .word 0x00006B44, 0x00006B48
+ .word 0x00006B48, 0x00006B4C
+ .word 0x00006B4C, 0x00006B50
+ .word 0x00006B50, 0x00006B54
+ .word 0x00006B54, 0x00006B58
+ .word 0x00006B58, 0x00006B5C
+ .word 0x00006B5C, 0x00006B60
+ .word 0x00006B60, 0x00006B64
+ .word 0x00006B64, 0x00006B68
+ .word 0x00006B68, 0x00006B6C
+ .word 0x00006B6C, 0x00006B70
+ .word 0x00006B70, 0x00006B74
+ .word 0x00006B74, 0x00006B78
+ .word 0x00006B78, 0x00006B7C
+ .word 0x00006B7C, 0x00006B80
+ .word 0x00006B80, 0x00006B84
+ .word 0x00006B84, 0x00006B88
+ .word 0x00006B88, 0x00006B8C
+ .word 0x00006B8C, 0x00006B90
+ .word 0x00006B90, 0x00006B94
+ .word 0x00006B94, 0x00006B98
+ .word 0x00006B98, 0x00006B9C
+ .word 0x00006B9C, 0x00006BF0
+ .word 0x00006BF0, 0x00006BF4
+ .word 0x00006BF4, 0x00006BF8
+ .word 0x00006BF8, 0x00006BFC
+ .word 0x00006BFC, 0x00006C00
+ .word 0x00006C00, 0x00006C04
+ .word 0x00006C04, 0x00006C08
+ .word 0x00006C08, 0x00006C0C
+ .word 0x00006C0C, 0x00006C10
+ .word 0x00006C10, 0x00006C14
+ .word 0x00006C14, 0x00006C18
+ .word 0x00006C18, 0x00006C1C
+ .word 0x00006C1C, 0x00006C20
+ .word 0x00006C20, 0x00006C24
+ .word 0x00006C24, 0x00006C28
+ .word 0x00006C28, 0x00006C2C
+ .word 0x00006C2C, 0x00006C30
+ .word 0x00006C30, 0x00006C34
+ .word 0x00006C34, 0x00006C38
+ .word 0x00006C38, 0x00006C3C
+ .word 0x00006C3C, 0x00006C40
+ .word 0x00006C40, 0x00006C44
+ .word 0x00006C44, 0x00006C48
+ .word 0x00006C48, 0x00006C4C
+ .word 0x00006C4C, 0x00006C50
+ .word 0x00006C50, 0x00006C54
+ .word 0x00006C54, 0x00006C58
+ .word 0x00006C58, 0x00006C5C
+ .word 0x00006C5C, 0x00006C60
+ .word 0x00006C60, 0x00006C64
+ .word 0x00006C64, 0x00006C68
+ .word 0x00006C68, 0x00006C6C
+ .word 0x00006C6C, 0x00006C70
+ .word 0x00006C70, 0x00006C74
+ .word 0x00006C74, 0x00006C78
+ .word 0x00006C78, 0x00006C7C
+ .word 0x00006C7C, 0x00006C80
+ .word 0x00006C80, 0x00006C84
+ .word 0x00006C84, 0x00006C88
+ .word 0x00006C88, 0x00006C8C
+ .word 0x00006C8C, 0x00006C90
+ .word 0x00006C90, 0x00006C94
+ .word 0x00006C94, 0x00006C98
+ .word 0x00006C98, 0x00006C9C
+ .word 0x00006C9C, 0x00006CA0
+ .word 0x00006CA0, 0x00006CA4
+ .word 0x00006CA4, 0x00006CA8
+ .word 0x00006CA8, 0x00006CAC
+ .word 0x00006CAC, 0x00006CB0
+ .word 0x00006CB0, 0x00006CB4
+ .word 0x00006CB4, 0x00006CB8
+ .word 0x00006CB8, 0x00006D0C
+ .word 0x00006D0C, 0x00006D10
+ .word 0x00006D10, 0x00006D14
+ .word 0x00006D14, 0x00006D68
+ .word 0x00006D68, 0x00006D6C
+ .word 0x00006D6C, 0x00006D70
+ .word 0x00006D70, 0x00006D74
+ .word 0x00006D74, 0x00006D78
+ .word 0x00006D78, 0x00006D7C
+ .word 0x00006D7C, 0x00006D80
+ .word 0x00006D80, 0x00006D84
+ .word 0x00006D84, 0x00006D88
+ .word 0x00006D88, 0x00006D8C
+ .word 0x00006D8C, 0x00006D90
+ .word 0x00006D90, 0x00006D94
+ .word 0x00006D94, 0x00006D98
+ .word 0x00006D98, 0x00006D9C
+ .word 0x00006D9C, 0x00006DA0
+ .word 0x00006DA0, 0x00006DA4
+ .word 0x00006DA4, 0x00006DA8
+ .word 0x00006DA8, 0x00006DAC
+ .word 0x00006DAC, 0x00006DB0
+ .word 0x00006DB0, 0x00006DB4
+ .word 0x00006DB4, 0x00006DB8
+ .word 0x00006DB8, 0x00006DBC
+ .word 0x00006DBC, 0x00006DC0
+ .word 0x00006DC0, 0x00006DC4
+ .word 0x00006DC4, 0x00006DC8
+ .word 0x00006DC8, 0x00006DCC
+ .word 0x00006DCC, 0x00006DD0
+ .word 0x00006DD0, 0x00006DD4
+ .word 0x00006DD4, 0x00006DD8
+ .word 0x00006DD8, 0x00006DDC
+ .word 0x00006DDC, 0x00006DE0
+ .word 0x00006DE0, 0x00006DE4
+ .word 0x00006DE4, 0x00006DE8
+ .word 0x00006DE8, 0x00006DEC
+ .word 0x00006DEC, 0x00006DF0
+ .word 0x00006DF0, 0x00006DF4
+ .word 0x00006DF4, 0x00006DF8
+ .word 0x00006DF8, 0x00006DFC
+ .word 0x00006DFC, 0x00006E00
+ .word 0x00006E00, 0x00006E04
+ .word 0x00006E04, 0x00006E08
+ .word 0x00006E08, 0x00006E0C
+ .word 0x00006E0C, 0x00006E10
+ .word 0x00006E10, 0x00006E14
+ .word 0x00006E14, 0x00006E18
+ .word 0x00006E18, 0x00006E1C
+ .word 0x00006E1C, 0x00006E20
+ .word 0x00006E20, 0x00006E24
+ .word 0x00006E24, 0x00006E28
+ .word 0x00006E28, 0x00006E2C
+ .word 0x00006E2C, 0x00006E30
+ .word 0x00006E30, 0x00006E34
+ .word 0x00006E34, 0x00006E38
+ .word 0x00006E38, 0x00006E3C
+ .word 0x00006E3C, 0x00006E40
+ .word 0x00006E40, 0x00006E44
+ .word 0x00006E44, 0x00006E48
+ .word 0x00006E48, 0x00006E4C
+ .word 0x00006E4C, 0x00006E50
+ .word 0x00006E50, 0x00006E54
+ .word 0x00006E54, 0x00006E58
+ .word 0x00006E58, 0x00006E5C
+ .word 0x00006E5C, 0x00006E60
+ .word 0x00006E60, 0x00006E64
+ .word 0x00006E64, 0x00006E68
+ .word 0x00006E68, 0x00006E6C
+ .word 0x00006E6C, 0x00006E70
+ .word 0x00006E70, 0x00006E74
+ .word 0x00006E74, 0x00006E78
+ .word 0x00006E78, 0x00006E7C
+ .word 0x00006E7C, 0x00006E80
+ .word 0x00006E80, 0x00006E84
+ .word 0x00006E84, 0x00006E88
+ .word 0x00006E88, 0x00006E8C
+ .word 0x00006E8C, 0x00006E90
+ .word 0x00006E90, 0x00006E94
+ .word 0x00006E94, 0x00006E98
+ .word 0x00006E98, 0x00006E9C
+ .word 0x00006E9C, 0x00006EA0
+ .word 0x00006EA0, 0x00006EA4
+ .word 0x00006EA4, 0x00006EA8
+ .word 0x00006EA8, 0x00006EAC
+ .word 0x00006EAC, 0x00006EB0
+ .word 0x00006EB0, 0x00006EB4
+ .word 0x00006EB4, 0x00006EB8
+ .word 0x00006EB8, 0x00006EBC
+ .word 0x00006EBC, 0x00006EC0
+ .word 0x00006EC0, 0x00006EC4
+ .word 0x00006EC4, 0x00006EC8
+ .word 0x00006EC8, 0x00006ECC
+ .word 0x00006ECC, 0x00006ED0
+ .word 0x00006ED0, 0x00006ED4
+ .word 0x00006ED4, 0x00006ED8
+ .word 0x00006ED8, 0x00006EDC
+ .word 0x00006EDC, 0x00006EE0
+ .word 0x00006EE0, 0x00006EE4
+ .word 0x00006EE4, 0x00006EE8
+ .word 0x00006EE8, 0x00006EEC
+ .word 0x00006EEC, 0x00006EF0
+ .word 0x00006EF0, 0x00006EF4
+ .word 0x00006EF4, 0x00006EF8
+ .word 0x00006EF8, 0x00006EFC
+ .word 0x00006EFC, 0x00006F00
+ .word 0x00006F00, 0x00006F04
+ .word 0x00006F04, 0x00006F08
+ .word 0x00006F08, 0x00006F0C
+ .word 0x00006F0C, 0x00006F10
+ .word 0x00006F10, 0x00006F14
+ .word 0x00006F14, 0x00006F18
+ .word 0x00006F18, 0x00006F1C
+ .word 0x00006F1C, 0x00006F20
+ .word 0x00006F20, 0x00006F24
+ .word 0x00006F24, 0x00006F28
+ .word 0x00006F28, 0x00006F2C
+ .word 0x00006F2C, 0x00006F30
+ .word 0x00006F30, 0x00006F34
+ .word 0x00006F34, 0x00006F38
+ .word 0x00006F38, 0x00006F3C
+ .word 0x00006F3C, 0x00006F40
+ .word 0x00006F40, 0x00006F44
+ .word 0x00006F44, 0x00006F48
+ .word 0x00006F48, 0x00006F4C
+ .word 0x00006F4C, 0x00006F50
+ .word 0x00006F50, 0x00006F54
+ .word 0x00006F54, 0x00006F58
+ .word 0x00006F58, 0x00006F5C
+ .word 0x00006F5C, 0x00006F60
+ .word 0x00006F60, 0x00006F64
+ .word 0x00006F64, 0x00006F68
+ .word 0x00006F68, 0x00006F6C
+ .word 0x00006F6C, 0x00006F70
+ .word 0x00006F70, 0x00006F74
+ .word 0x00006F74, 0x00006F78
+ .word 0x00006F78, 0x00006F7C
+ .word 0x00006F7C, 0x00006F80
+ .word 0x00006F80, 0x00006F84
+ .word 0x00006F84, 0x00006F88
+ .word 0x00006F88, 0x00006F8C
+ .word 0x00006F8C, 0x00006F90
+ .word 0x00006F90, 0x00006F94
+ .word 0x00006F94, 0x00006F98
+ .word 0x00006F98, 0x00006F9C
+ .word 0x00006F9C, 0x00006FA0
+ .word 0x00006FA0, 0x00006FA4
+ .word 0x00006FA4, 0x00006FF8
+ .word 0x00006FF8, 0x00006FFC
+ .word 0x00006FFC, 0x00007000
+ .word 0x00007000, 0x00007054
+ .word 0x00007054, 0x00007058
+ .word 0x00007058, 0x0000705C
+ .word 0x0000705C, 0x00007060
+ .word 0x00007060, 0x00007064
+ .word 0x00007064, 0x000070B8
+ .word 0x000070B8, 0x000070BC
+ .word 0x000070BC, 0x000070C0
+ .word 0x000070C0, 0x000070C4
+ .word 0x000070C4, 0x000070C8
+ .word 0x000070C8, 0x000070CC
+ .word 0x000070CC, 0x000070D0
+ .word 0x000070D0, 0x000070D4
+ .word 0x000070D4, 0x000070D8
+ .word 0x000070D8, 0x000070DC
+ .word 0x000070DC, 0x000070E0
+ .word 0x000070E0, 0x000070E4
+ .word 0x000070E4, 0x000070E8
+ .word 0x000070E8, 0x000070EC
+ .word 0x000070EC, 0x000070F0
+ .word 0x000070F0, 0x000070F4
+ .word 0x000070F4, 0x000070F8
+ .word 0x000070F8, 0x000070FC
+ .word 0x000070FC, 0x00007100
+ .word 0x00007100, 0x00007104
+ .word 0x00007104, 0x00007108
+ .word 0x00007108, 0x0000710C
+ .word 0x0000710C, 0x00007110
+ .word 0x00007110, 0x00007114
+ .word 0x00007114, 0x00007118
+ .word 0x00007118, 0x0000711C
+ .word 0x0000711C, 0x00007120
+ .word 0x00007120, 0x00007124
+ .word 0x00007124, 0x00007128
+ .word 0x00007128, 0x0000712C
+ .word 0x0000712C, 0x00007130
+ .word 0x00007130, 0x00007134
+ .word 0x00007134, 0x00007138
+ .word 0x00007138, 0x0000713C
+ .word 0x0000713C, 0x00007140
+ .word 0x00007140, 0x00007144
+ .word 0x00007144, 0x00007148
+ .word 0x00007148, 0x0000714C
+ .word 0x0000714C, 0x00007150
+ .word 0x00007150, 0x00007154
+ .word 0x00007154, 0x00007158
+ .word 0x00007158, 0x0000715C
+ .word 0x0000715C, 0x00007160
+ .word 0x00007160, 0x00007164
+ .word 0x00007164, 0x00007168
+ .word 0x00007168, 0x0000716C
+ .word 0x0000716C, 0x00007170
+ .word 0x00007170, 0x00007174
+ .word 0x00007174, 0x00007178
+ .word 0x00007178, 0x0000717C
+ .word 0x0000717C, 0x00007180
+ .word 0x00007180, 0x00007184
+ .word 0x00007184, 0x00007188
+ .word 0x00007188, 0x0000718C
+ .word 0x0000718C, 0x00007190
+ .word 0x00007190, 0x00007194
+ .word 0x00007194, 0x00007198
+ .word 0x00007198, 0x0000719C
+ .word 0x0000719C, 0x000071A0
+ .word 0x000071A0, 0x000071A4
+ .word 0x000071A4, 0x000071A8
+ .word 0x000071A8, 0x000071AC
+ .word 0x000071AC, 0x000071B0
+ .word 0x000071B0, 0x000071B4
+ .word 0x000071B4, 0x000071B8
+ .word 0x000071B8, 0x000071BC
+ .word 0x000071BC, 0x000071C0
+ .word 0x000071C0, 0x000071C4
+ .word 0x000071C4, 0x000071C8
+ .word 0x000071C8, 0x000071CC
+ .word 0x000071CC, 0x000071D0
+ .word 0x000071D0, 0x000071D4
+ .word 0x000071D4, 0x000071D8
+ .word 0x000071D8, 0x000071DC
+ .word 0x000071DC, 0x000071E0
+ .word 0x000071E0, 0x00007214
+ .word 0x00007214, 0x00007218
+ .word 0x00007218, 0x0000721C
+ .word 0x0000721C, 0x00007220
+ .word 0x00007220, 0x00007224
+ .word 0x00007224, 0x00007228
+ .word 0x00007228, 0x0000722C
+ .word 0x0000722C, 0x00007230
+ .word 0x00007230, 0x00007234
+ .word 0x00007234, 0x00007238
+ .word 0x00007238, 0x0000723C
+ .word 0x0000723C, 0x00007240
+ .word 0x00007240, 0x00007244
+ .word 0x00007244, 0x00007248
+ .word 0x00007248, 0x0000724C
+ .word 0x0000724C, 0x00007250
+ .word 0x00007250, 0x00007254
+ .word 0x00007254, 0x00007258
+ .word 0x00007258, 0x0000725C
+ .word 0x0000725C, 0x00007260
+ .word 0x00007260, 0x00007264
+ .word 0x00007264, 0x00007268
+ .word 0x00007268, 0x0000726C
+ .word 0x0000726C, 0x00007270
+ .word 0x00007270, 0x00007274
+ .word 0x00007274, 0x00007278
+ .word 0x00007278, 0x0000727C
+ .word 0x0000727C, 0x00007280
+ .word 0x00007280, 0x00007284
+ .word 0x00007284, 0x0000728C
+ .word 0x0000728C, 0x00007298
+ .word 0x00007298, 0x0000729C
+ .word 0x0000729C, 0x000072A4
+ .word 0x000072A4, 0x000072B0
+ .word 0x000072B0, 0x000072B4
+ .word 0x000072B4, 0x000072B8
+ .word 0x000072B8, 0x000072BC
+ .word 0x000072BC, 0x000072C0
+ .word 0x000072C0, 0x000072C4
+ .word 0x000072C4, 0x000072C8
+ .word 0x000072C8, 0x000072CC
+ .word 0x000072CC, 0x000072D0
+ .word 0x000072D0, 0x000072D4
+ .word 0x000072D4, 0x000072D8
+ .word 0x000072D8, 0x000072DC
+ .word 0x000072DC, 0x000072E0
+ .word 0x000072E0, 0x000072E4
+ .word 0x000072E4, 0x000072E8
+ .word 0x000072E8, 0x000072F0
+ .word 0x000072F0, 0x000072F8
+ .word 0x000072F8, 0x000072FC
+ .word 0x000072FC, 0x00007300
+ .word 0x00007300, 0x00007304
+ .word 0x00007304, 0x00007308
+ .word 0x00007308, 0x0000730C
+ .word 0x0000730C, 0x00007310
+ .word 0x00007310, 0x0000731C
+ .word 0x0000731C, 0x00007328
+ .word 0x00007328, 0x0000732C
+ .word 0x0000732C, 0x00007330
+ .word 0x00007330, 0x00007334
+ .word 0x00007334, 0x00007338
+ .word 0x00007338, 0x0000733C
+ .word 0x0000733C, 0x00007340
+ .word 0x00007340, 0x00007344
+ .word 0x00007344, 0x00007348
+ .word 0x00007348, 0x0000734C
+ .word 0x0000734C, 0x00007350
+ .word 0x00007350, 0x00007354
+ .word 0x00007354, 0x00007358
+ .word 0x00007358, 0x0000735C
+ .word 0x0000735C, 0x00007360
+ .word 0x00007360, 0x00007364
+ .word 0x00007364, 0x00007368
+ .word 0x00007368, 0x0000736C
+ .word 0x0000736C, 0x00007370
+ .word 0x00007370, 0x00007374
+ .word 0x00007374, 0x00007378
+ .word 0x00007378, 0x0000737C
+ .word 0x0000737C, 0x00007384
+ .word 0x00007384, 0x00007388
+ .word 0x00007388, 0x0000738C
+ .word 0x0000738C, 0x00007390
+ .word 0x00007390, 0x00007394
+ .word 0x00007394, 0x00007398
+ .word 0x00007398, 0x0000739C
+ .word 0x0000739C, 0x000073A0
+ .word 0x000073A0, 0x000073A4
+ .word 0x000073A4, 0x000073AC
+ .word 0x000073AC, 0x000073B0
+ .word 0x000073B0, 0x000073B4
+ .word 0x000073B4, 0x000073B8
+ .word 0x000073B8, 0x000073BC
+ .word 0x000073BC, 0x000073C0
+ .word 0x000073C0, 0x000073C4
+ .word 0x000073C4, 0x000073C8
+ .word 0x000073C8, 0x000073CC
+ .word 0x000073CC, 0x000073D0
+ .word 0x000073D0, 0x000073D4
+ .word 0x000073D4, 0x000073D8
+ .word 0x000073D8, 0x000073DC
+ .word 0x000073DC, 0x000073E0
+ .word 0x000073E0, 0x000073E4
+ .word 0x000073E4, 0x000073E8
+ .word 0x000073E8, 0x000073EC
+ .word 0x000073EC, 0x000073F0
+ .word 0x000073F0, 0x000073F4
+ .word 0x000073F4, 0x000073F8
+ .word 0x000073F8, 0x000073FC
+ .word 0x000073FC, 0x00007400
+ .word 0x00007400, 0x00007404
+ .word 0x00007404, 0x00007408
+ .word 0x00007408, 0x0000740C
+ .word 0x0000740C, 0x00007410
+ .word 0x00007410, 0x00007414
+ .word 0x00007414, 0x00007418
+ .word 0x00007418, 0x0000741C
+ .word 0x0000741C, 0x00007420
+ .word 0x00007420, 0x00007424
+ .word 0x00007424, 0x00007428
+ .word 0x00007428, 0x0000742C
+ .word 0x0000742C, 0x00007430
+ .word 0x00007430, 0x00007434
+ .word 0x00007434, 0x00007438
+ .word 0x00007438, 0x0000743C
+ .word 0x0000743C, 0x00007440
+ .word 0x00007440, 0x00007444
+ .word 0x00007444, 0x00007448
+ .word 0x00007448, 0x00007454
+ .word 0x00007454, 0x00007458
+ .word 0x00007458, 0x0000745C
+ .word 0x0000745C, 0x00007460
+ .word 0x00007460, 0x00007468
+ .word 0x00007468, 0x0000746C
+ .word 0x0000746C, 0x00007470
+ .word 0x00007470, 0x00007474
+ .word 0x00007474, 0x00007478
+ .word 0x00007478, 0x0000747C
+ .word 0x0000747C, 0x00007480
+ .word 0x00007480, 0x00007484
+ .word 0x00007484, 0x00007488
+ .word 0x00007488, 0x0000748C
+ .word 0x0000748C, 0x00007490
+ .word 0x00007490, 0x00007494
+ .word 0x00007494, 0x00007498
+ .word 0x00007498, 0x0000749C
+ .word 0x0000749C, 0x000074A0
+ .word 0x000074A0, 0x000074A4
+ .word 0x000074A4, 0x000074A8
+ .word 0x000074A8, 0x000074AC
+ .word 0x000074AC, 0x000074B0
+ .word 0x000074B0, 0x000074B4
+ .word 0x000074B4, 0x000074B8
+ .word 0x000074B8, 0x000074BC
+ .word 0x000074BC, 0x000074C0
+ .word 0x000074C0, 0x000074C4
+ .word 0x000074C4, 0x000074C8
+ .word 0x000074C8, 0x000074CC
+ .word 0x000074CC, 0x000074D0
+ .word 0x000074D0, 0x000074D4
+ .word 0x000074D4, 0x000074D8
+ .word 0x000074D8, 0x000074E0
+ .word 0x000074E0, 0x000074E4
+ .word 0x000074E4, 0x000074E8
+ .word 0x000074E8, 0x000074EC
+ .word 0x000074EC, 0x000074F0
+ .word 0x000074F0, 0x000074F4
+ .word 0x000074F4, 0x000074F8
+ .word 0x000074F8, 0x000074FC
+ .word 0x000074FC, 0x00007500
+ .word 0x00007500, 0x00007504
+ .word 0x00007504, 0x00007508
+ .word 0x00007508, 0x0000750C
+ .word 0x0000750C, 0x00007510
+ .word 0x00007510, 0x00007514
+ .word 0x00007514, 0x0000751C
+ .word 0x0000751C, 0x00007520
+ .word 0x00007520, 0x00007524
+ .word 0x00007524, 0x00007528
+ .word 0x00007528, 0x00007530
+ .word 0x00007530, 0x00007538
+ .word 0x00007538, 0x0000753C
+ .word 0x0000753C, 0x00007540
+ .word 0x00007540, 0x00007544
+ .word 0x00007544, 0x00007548
+ .word 0x00007548, 0x0000754C
+ .word 0x0000754C, 0x00007550
+ .word 0x00007550, 0x0000755C
+ .word 0x0000755C, 0x00007564
+ .word 0x00007564, 0x00007568
+ .word 0x00007568, 0x000075BC
+ .word 0x000075BC, 0x000075C4
+ .word 0x000075C4, 0x000075C8
+ .word 0x000075C8, 0x000075CC
+ .word 0x000075CC, 0x000075D0
+ .word 0x000075D0, 0x000075D4
+ .word 0x000075D4, 0x000075D8
+ .word 0x000075D8, 0x000075DC
+ .word 0x000075DC, 0x000075E0
+ .word 0x000075E0, 0x000075E4
+ .word 0x000075E4, 0x000075E8
+ .word 0x000075E8, 0x000075EC
+ .word 0x000075EC, 0x000075F0
+ .word 0x000075F0, 0x000075F4
+ .word 0x000075F4, 0x000075F8
+ .word 0x000075F8, 0x000075FC
+ .word 0x000075FC, 0x00007600
+ .word 0x00007600, 0x00007604
+ .word 0x00007604, 0x00007608
+ .word 0x00007608, 0x0000760C
+ .word 0x0000760C, 0x00007610
+ .word 0x00007610, 0x00007614
+ .word 0x00007614, 0x00007618
+ .word 0x00007618, 0x0000761C
+ .word 0x0000761C, 0x00007670
+ .word 0x00007670, 0x00007674
+ .word 0x00007674, 0x00007678
+ .word 0x00007678, 0x0000767C
+ .word 0x0000767C, 0x00007680
+ .word 0x00007680, 0x00007684
+ .word 0x00007684, 0x00007688
+ .word 0x00007688, 0x0000768C
+ .word 0x0000768C, 0x00007690
+ .word 0x00007690, 0x00007694
+ .word 0x00007694, 0x00007698
+ .word 0x00007698, 0x0000769C
+ .word 0x0000769C, 0x000076A0
+ .word 0x000076A0, 0x000076A4
+ .word 0x000076A4, 0x000076A8
+ .word 0x000076A8, 0x000076B4
+ .word 0x000076B4, 0x000076B8
+ .word 0x000076B8, 0x000076BC
+ .word 0x000076BC, 0x000076C0
+ .word 0x000076C0, 0x000076C4
+ .word 0x000076C4, 0x000076CC
+ .word 0x000076CC, 0x000076D4
+ .word 0x000076D4, 0x000076E0
+ .word 0x000076E0, 0x000076E4
+ .word 0x000076E4, 0x000076E8
+ .word 0x000076E8, 0x000076EC
+ .word 0x000076EC, 0x000076F0
+ .word 0x000076F0, 0x000076FC
+ .word 0x000076FC, 0x00007700
+ .word 0x00007700, 0x00007704
+ .word 0x00007704, 0x00007708
+ .word 0x00007708, 0x0000770C
+ .word 0x0000770C, 0x00007710
+ .word 0x00007710, 0x00007714
+ .word 0x00007714, 0x00007718
+ .word 0x00007718, 0x0000771C
+ .word 0x0000771C, 0x00007720
+ .word 0x00007720, 0x00007724
+ .word 0x00007724, 0x00007728
+ .word 0x00007728, 0x0000772C
+ .word 0x0000772C, 0x00007730
+ .word 0x00007730, 0x00007734
+ .word 0x00007734, 0x00007738
+ .word 0x00007738, 0x0000773C
+ .word 0x0000773C, 0x00007740
+ .word 0x00007740, 0x00007744
+ .word 0x00007744, 0x00007748
+ .word 0x00007748, 0x0000774C
+ .word 0x0000774C, 0x00007750
+ .word 0x00007750, 0x00007754
+ .word 0x00007754, 0x00007758
+ .word 0x00007758, 0x000077AC
+ .word 0x000077AC, 0x000077B0
+ .word 0x000077B0, 0x000077B4
+ .word 0x000077B4, 0x00007808
+ .word 0x00007808, 0x0000780C
+ .word 0x0000780C, 0x00007810
+ .word 0x00007810, 0x00007814
+ .word 0x00007814, 0x00007818
+ .word 0x00007818, 0x0000781C
+ .word 0x0000781C, 0x00007820
+ .word 0x00007820, 0x00007824
+ .word 0x00007824, 0x00007828
+ .word 0x00007828, 0x00007830
+ .word 0x00007830, 0x00007834
+ .word 0x00007834, 0x00007838
+ .word 0x00007838, 0x00007844
+ .word 0x00007844, 0x00007850
+ .word 0x00007850, 0x00007854
+ .word 0x00007854, 0x00007858
+ .word 0x00007858, 0x0000785C
+ .word 0x0000785C, 0x00007860
+ .word 0x00007860, 0x00007864
+ .word 0x00007864, 0x00007868
+ .word 0x00007868, 0x0000786C
+ .word 0x0000786C, 0x00007870
+ .word 0x00007870, 0x00007874
+ .word 0x00007874, 0x00007878
+ .word 0x00007878, 0x0000787C
+ .word 0x0000787C, 0x00007880
+ .word 0x00007880, 0x00007884
+ .word 0x00007884, 0x00007888
+ .word 0x00007888, 0x0000788C
+ .word 0x0000788C, 0x00007890
+ .word 0x00007890, 0x00007894
+ .word 0x00007894, 0x00007898
+ .word 0x00007898, 0x0000789C
+ .word 0x0000789C, 0x000078A0
+ .word 0x000078A0, 0x000078A4
+ .word 0x000078A4, 0x000078A8
+ .word 0x000078A8, 0x000078AC
+ .word 0x000078AC, 0x000078B0
+ .word 0x000078B0, 0x000078B4
+ .word 0x000078B4, 0x000078B8
+ .word 0x000078B8, 0x000078BC
+ .word 0x000078BC, 0x000078C0
+ .word 0x000078C0, 0x000078C4
+ .word 0x000078C4, 0x000078C8
+ .word 0x000078C8, 0x000078CC
+ .word 0x000078CC, 0x000078D0
+ .word 0x000078D0, 0x000078D4
+ .word 0x000078D4, 0x000078D8
+ .word 0x000078D8, 0x000078DC
+ .word 0x000078DC, 0x000078E0
+ .word 0x000078E0, 0x000078E4
+ .word 0x000078E4, 0x000078E8
+ .word 0x000078E8, 0x000078EC
+ .word 0x000078EC, 0x000078F0
+ .word 0x000078F0, 0x000078F4
+ .word 0x000078F4, 0x000078F8
+ .word 0x000078F8, 0x00007904
+ .word 0x00007904, 0x00007908
+ .word 0x00007908, 0x0000790C
+ .word 0x0000790C, 0x00007910
+ .word 0x00007910, 0x00007918
+ .word 0x00007918, 0x00007920
+ .word 0x00007920, 0x00007924
+ .word 0x00007924, 0x00007928
+ .word 0x00007928, 0x0000792C
+ .word 0x0000792C, 0x00007934
+ .word 0x00007934, 0x00007938
+ .word 0x00007938, 0x0000793C
+ .word 0x0000793C, 0x00007940
+ .word 0x00007940, 0x00007944
+ .word 0x00007944, 0x00007948
+ .word 0x00007948, 0x0000794C
+ .word 0x0000794C, 0x00007950
+ .word 0x00007950, 0x00007954
+ .word 0x00007954, 0x00007958
+ .word 0x00007958, 0x00007960
+ .word 0x00007960, 0x00007964
+ .word 0x00007964, 0x00007968
+ .word 0x00007968, 0x0000796C
+ .word 0x0000796C, 0x00007970
+ .word 0x00007970, 0x00007974
+ .word 0x00007974, 0x00007978
+ .word 0x00007978, 0x0000797C
+ .word 0x0000797C, 0x00007980
+ .word 0x00007980, 0x00007984
+ .word 0x00007984, 0x00007988
+ .word 0x00007988, 0x0000798C
+ .word 0x0000798C, 0x00007994
+ .word 0x00007994, 0x0000799C
+ .word 0x0000799C, 0x000079A0
+ .word 0x000079A0, 0x000079A4
+ .word 0x000079A4, 0x000079A8
+ .word 0x000079A8, 0x000079AC
+ .word 0x000079AC, 0x000079BC
+ .word 0x000079BC, 0x000079C0
+ .word 0x000079C0, 0x000079C4
+ .word 0x000079C4, 0x000079C8
+ .word 0x000079C8, 0x000079CC
+ .word 0x000079CC, 0x000079D0
+ .word 0x000079D0, 0x000079D4
+ .word 0x000079D4, 0x000079D8
+ .word 0x000079D8, 0x000079DC
+ .word 0x000079DC, 0x000079E0
+ .word 0x000079E0, 0x000079E8
+ .word 0x000079E8, 0x000079EC
+ .word 0x000079EC, 0x000079F0
+ .word 0x000079F0, 0x000079F4
+ .word 0x000079F4, 0x000079F8
+ .word 0x000079F8, 0x000079FC
+ .word 0x000079FC, 0x00007A00
+ .word 0x00007A00, 0x00007A04
+ .word 0x00007A04, 0x00007A08
+ .word 0x00007A08, 0x00007A0C
+ .word 0x00007A0C, 0x00007A10
+ .word 0x00007A10, 0x00007A14
+ .word 0x00007A14, 0x00007A18
+ .word 0x00007A18, 0x00007A1C
+ .word 0x00007A1C, 0x00007A20
+ .word 0x00007A20, 0x00007A24
+ .word 0x00007A24, 0x00007A28
+ .word 0x00007A28, 0x00007A2C
+ .word 0x00007A2C, 0x00007A30
+ .word 0x00007A30, 0x00007A34
+ .word 0x00007A34, 0x00007A38
+ .word 0x00007A38, 0x00007A3C
+ .word 0x00007A3C, 0x00007A40
+ .word 0x00007A40, 0x00007A44
+ .word 0x00007A44, 0x00007A48
+ .word 0x00007A48, 0x00007A4C
+ .word 0x00007A4C, 0x00007A50
+ .word 0x00007A50, 0x00007A54
+ .word 0x00007A54, 0x00007A58
+ .word 0x00007A58, 0x00007A5C
+ .word 0x00007A5C, 0x00007A60
+ .word 0x00007A60, 0x00007A64
+ .word 0x00007A64, 0x00007A68
+ .word 0x00007A68, 0x00007A6C
+ .word 0x00007A6C, 0x00007A70
+ .word 0x00007A70, 0x00007A74
+ .word 0x00007A74, 0x00007A78
+ .word 0x00007A78, 0x00007A7C
+ .word 0x00007A7C, 0x00007A80
+ .word 0x00007A80, 0x00007A84
+ .word 0x00007A84, 0x00007A88
+ .word 0x00007A88, 0x00007ADC
+ .word 0x00007ADC, 0x00007AE0
+ .word 0x00007AE0, 0x00007AE4
+ .word 0x00007AE4, 0x00007B38
+ .word 0x00007B38, 0x00007B3C
+ .word 0x00007B3C, 0x00007B40
+ .word 0x00007B40, 0x00007B44
+ .word 0x00007B44, 0x00007B48
+ .word 0x00007B48, 0x00007B9C
+ .word 0x00007B9C, 0x00007BA0
+ .word 0x00007BA0, 0x00007BA4
+ .word 0x00007BA4, 0x00007BA8
+ .word 0x00007BA8, 0x00007BAC
+ .word 0x00007BAC, 0x00007BB0
+ .word 0x00007BB0, 0x00007BB4
+ .word 0x00007BB4, 0x00007BB8
+ .word 0x00007BB8, 0x00007BBC
+ .word 0x00007BBC, 0x00007BC0
+ .word 0x00007BC0, 0x00007BC4
+ .word 0x00007BC4, 0x00007BC8
+ .word 0x00007BC8, 0x00007BCC
+ .word 0x00007BCC, 0x00007BD0
+ .word 0x00007BD0, 0x00007BD4
+ .word 0x00007BD4, 0x00007BD8
+ .word 0x00007BD8, 0x00007BDC
+ .word 0x00007BDC, 0x00007BE0
+ .word 0x00007BE0, 0x00007BE4
+ .word 0x00007BE4, 0x00007BE8
+ .word 0x00007BE8, 0x00007BEC
+ .word 0x00007BEC, 0x00007BF0
+ .word 0x00007BF0, 0x00007BF4
+ .word 0x00007BF4, 0x00007BF8
+ .word 0x00007BF8, 0x00007BFC
+ .word 0x00007BFC, 0x00007C00
+ .word 0x00007C00, 0x00007C04
+ .word 0x00007C04, 0x00007C08
+ .word 0x00007C08, 0x00007C0C
+ .word 0x00007C0C, 0x00007C10
+ .word 0x00007C10, 0x00007C14
+ .word 0x00007C14, 0x00007C18
+ .word 0x00007C18, 0x00007C1C
+ .word 0x00007C1C, 0x00007C20
+ .word 0x00007C20, 0x00007C24
+ .word 0x00007C24, 0x00007C28
+ .word 0x00007C28, 0x00007C2C
+ .word 0x00007C2C, 0x00007C30
+ .word 0x00007C30, 0x00007C34
+ .word 0x00007C34, 0x00007C38
+ .word 0x00007C38, 0x00007C3C
+ .word 0x00007C3C, 0x00007C40
+ .word 0x00007C40, 0x00007C44
+ .word 0x00007C44, 0x00007C48
+ .word 0x00007C48, 0x00007C4C
+ .word 0x00007C4C, 0x00007C50
+ .word 0x00007C50, 0x00007C54
+ .word 0x00007C54, 0x00007C58
+ .word 0x00007C58, 0x00007C5C
+ .word 0x00007C5C, 0x00007C60
+ .word 0x00007C60, 0x00007C64
+ .word 0x00007C64, 0x00007C68
+ .word 0x00007C68, 0x00007C6C
+ .word 0x00007C6C, 0x00007C70
+ .word 0x00007C70, 0x00007C74
+ .word 0x00007C74, 0x00007C78
+ .word 0x00007C78, 0x00007C7C
+ .word 0x00007C7C, 0x00007C80
+ .word 0x00007C80, 0x00007C84
+ .word 0x00007C84, 0x00007C88
+ .word 0x00007C88, 0x00007C8C
+ .word 0x00007C8C, 0x00007C90
+ .word 0x00007C90, 0x00007C94
+ .word 0x00007C94, 0x00007C98
+ .word 0x00007C98, 0x00007C9C
+ .word 0x00007C9C, 0x00007CA0
+ .word 0x00007CA0, 0x00007CA4
+ .word 0x00007CA4, 0x00007CA8
+ .word 0x00007CA8, 0x00007CAC
+ .word 0x00007CAC, 0x00007CB0
+ .word 0x00007CB0, 0x00007CB4
+ .word 0x00007CB4, 0x00007CB8
+ .word 0x00007CB8, 0x00007CBC
+ .word 0x00007CBC, 0x00007CC0
+ .word 0x00007CC0, 0x00007CC4
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00007CCC ; chunk size
+ .incbin "baserom.nds", 0x3953304, 0x7CC4
+ .balign 512, 255
diff --git a/files/FILE_395B000_trial.narc.s b/files/FILE_395B000_trial.narc.s
new file mode 100644
index 00000000..af01b222
--- /dev/null
+++ b/files/FILE_395B000_trial.narc.s
@@ -0,0 +1,36 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x0000DBE4 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x0000004C ; chunk size
+ .short 8 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000228
+ .word 0x00000228, 0x00006268
+ .word 0x00006268, 0x00006A8C
+ .word 0x00006A8C, 0x00006CB4
+ .word 0x00006CB4, 0x0000CCF4
+ .word 0x0000CCF4, 0x0000D518
+ .word 0x0000D518, 0x0000D740
+ .word 0x0000D740, 0x0000DB70
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x0000DB78 ; chunk size
+ .incbin "baserom.nds", 0x395B074, 0xDB70
+ .balign 512, 255
diff --git a/files/FILE_3968C00_zukan.narc.s b/files/FILE_3968C00_zukan.narc.s
new file mode 100644
index 00000000..b3013a6b
--- /dev/null
+++ b/files/FILE_3968C00_zukan.narc.s
@@ -0,0 +1,158 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00011D1C ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x0000041C ; chunk size
+ .short 130 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000228
+ .word 0x00000228, 0x00000450
+ .word 0x00000450, 0x00000678
+ .word 0x00000678, 0x000008A0
+ .word 0x000008A0, 0x00000AC8
+ .word 0x00000AC8, 0x00000CF0
+ .word 0x00000CF0, 0x00000F18
+ .word 0x00000F18, 0x00001140
+ .word 0x00001140, 0x00001368
+ .word 0x00001368, 0x00001590
+ .word 0x00001590, 0x000017B8
+ .word 0x000017B8, 0x000019E0
+ .word 0x000019E0, 0x00001C08
+ .word 0x00001C08, 0x00001E30
+ .word 0x00001E30, 0x00002058
+ .word 0x00002058, 0x00002280
+ .word 0x00002280, 0x000024A8
+ .word 0x000024A8, 0x000026D0
+ .word 0x000026D0, 0x000028F8
+ .word 0x000028F8, 0x00002B20
+ .word 0x00002B20, 0x00002D48
+ .word 0x00002D48, 0x00002F70
+ .word 0x00002F70, 0x00003198
+ .word 0x00003198, 0x000033C0
+ .word 0x000033C0, 0x000035E8
+ .word 0x000035E8, 0x00003810
+ .word 0x00003810, 0x00003A38
+ .word 0x00003A38, 0x00003CFC
+ .word 0x00003CFC, 0x00004597
+ .word 0x00004598, 0x000048F5
+ .word 0x000048F8, 0x00004A35
+ .word 0x00004A38, 0x00004B75
+ .word 0x00004B78, 0x00004C3D
+ .word 0x00004C40, 0x000061BB
+ .word 0x000061BC, 0x0000744B
+ .word 0x0000744C, 0x00007829
+ .word 0x0000782C, 0x0000791A
+ .word 0x0000791C, 0x00007A16
+ .word 0x00007A18, 0x00007B0D
+ .word 0x00007B10, 0x00007B98
+ .word 0x00007B98, 0x00007D42
+ .word 0x00007D44, 0x00007ED9
+ .word 0x00007EDC, 0x00008089
+ .word 0x0000808C, 0x0000820E
+ .word 0x00008210, 0x00008272
+ .word 0x00008274, 0x000082E1
+ .word 0x000082E4, 0x0000835E
+ .word 0x00008360, 0x000083DB
+ .word 0x000083DC, 0x00008422
+ .word 0x00008424, 0x00008525
+ .word 0x00008528, 0x00008613
+ .word 0x00008614, 0x00008697
+ .word 0x00008698, 0x00008708
+ .word 0x00008708, 0x0000879E
+ .word 0x000087A0, 0x0000882A
+ .word 0x0000882C, 0x000088B5
+ .word 0x000088B8, 0x0000894B
+ .word 0x0000894C, 0x00008A3F
+ .word 0x00008A40, 0x00008B75
+ .word 0x00008B78, 0x00008C5C
+ .word 0x00008C5C, 0x00008CCC
+ .word 0x00008CCC, 0x00008E24
+ .word 0x00008E24, 0x00008F0B
+ .word 0x00008F0C, 0x00008F7C
+ .word 0x00008F7C, 0x00009305
+ .word 0x00009308, 0x00009337
+ .word 0x00009338, 0x00009380
+ .word 0x00009380, 0x000093AF
+ .word 0x000093B0, 0x000093E3
+ .word 0x000093E4, 0x0000960C
+ .word 0x0000960C, 0x00009717
+ .word 0x00009718, 0x00009B10
+ .word 0x00009B10, 0x00009C42
+ .word 0x00009C44, 0x00009D99
+ .word 0x00009D9C, 0x00009EF1
+ .word 0x00009EF4, 0x00009FED
+ .word 0x00009FF0, 0x0000A071
+ .word 0x0000A074, 0x0000A0DE
+ .word 0x0000A0E0, 0x0000A2E4
+ .word 0x0000A2E4, 0x0000A456
+ .word 0x0000A458, 0x0000A5CF
+ .word 0x0000A5D0, 0x0000AED3
+ .word 0x0000AED4, 0x0000B21E
+ .word 0x0000B220, 0x0000B31D
+ .word 0x0000B320, 0x0000BB91
+ .word 0x0000BB94, 0x0000BBF0
+ .word 0x0000BBF0, 0x0000BC4B
+ .word 0x0000BC4C, 0x0000BCB0
+ .word 0x0000BCB0, 0x0000BE64
+ .word 0x0000BE64, 0x0000BFDB
+ .word 0x0000BFDC, 0x0000CAE4
+ .word 0x0000CAE4, 0x0000CBDD
+ .word 0x0000CBE0, 0x0000CC9F
+ .word 0x0000CCA0, 0x0000D40A
+ .word 0x0000D40C, 0x0000D56A
+ .word 0x0000D56C, 0x0000D673
+ .word 0x0000D674, 0x0000DA37
+ .word 0x0000DA38, 0x0000DB68
+ .word 0x0000DB68, 0x0000DCDB
+ .word 0x0000DCDC, 0x0000DF08
+ .word 0x0000DF08, 0x0000E099
+ .word 0x0000E09C, 0x0000E140
+ .word 0x0000E140, 0x0000E5B5
+ .word 0x0000E5B8, 0x0000E632
+ .word 0x0000E634, 0x0000E6AF
+ .word 0x0000E6B0, 0x0000ED97
+ .word 0x0000ED98, 0x0000EE6C
+ .word 0x0000EE6C, 0x0000EF1D
+ .word 0x0000EF20, 0x0000EFD6
+ .word 0x0000EFD8, 0x0000F034
+ .word 0x0000F034, 0x0000F08D
+ .word 0x0000F090, 0x0000F34A
+ .word 0x0000F34C, 0x0000F491
+ .word 0x0000F494, 0x0000FEA5
+ .word 0x0000FEA8, 0x00010036
+ .word 0x00010038, 0x000100A2
+ .word 0x000100A4, 0x00010112
+ .word 0x00010114, 0x00010172
+ .word 0x00010174, 0x0001024F
+ .word 0x00010250, 0x000102AB
+ .word 0x000102AC, 0x00010335
+ .word 0x00010338, 0x000103CC
+ .word 0x000103CC, 0x000107AE
+ .word 0x000107B0, 0x0001085D
+ .word 0x00010860, 0x0001097D
+ .word 0x00010980, 0x00010D64
+ .word 0x00010D64, 0x00010F63
+ .word 0x00010F64, 0x0001116A
+ .word 0x0001116C, 0x000114CE
+ .word 0x000114D0, 0x000118D5
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x000118E0 ; chunk size
+ .incbin "baserom.nds", 0x3969044, 0x118D8
+ .balign 512, 255
diff --git a/files/FILE_397AA00_utility.bin.s b/files/FILE_397AA00_utility.bin.s
new file mode 100644
index 00000000..4fb3fac0
--- /dev/null
+++ b/files/FILE_397AA00_utility.bin.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x397AA00, 0xDB4C0
+ .balign 512, 255
diff --git a/files/FILE_3B3000_dp_areawindow.NCGR.s b/files/FILE_3B3000_dp_areawindow.NCGR.s
new file mode 100644
index 00000000..8dea4f2d
--- /dev/null
+++ b/files/FILE_3B3000_dp_areawindow.NCGR.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x3B3000, 0x170
+ .balign 512, 255
diff --git a/files/FILE_3B3200_dp_areawindow.NCLR.s b/files/FILE_3B3200_dp_areawindow.NCLR.s
new file mode 100644
index 00000000..fd3ed204
--- /dev/null
+++ b/files/FILE_3B3200_dp_areawindow.NCLR.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x3B3200, 0x228
+ .balign 512, 255
diff --git a/files/FILE_3B3600_dt_test_celact.txt b/files/FILE_3B3600_dt_test_celact.txt
new file mode 100644
index 00000000..6802e0ed
--- /dev/null
+++ b/files/FILE_3B3600_dt_test_celact.txt
@@ -0,0 +1,2 @@
+0,0,0,0,n,n,0,0, Rg܂
+e,e,e,e,e,e,e,e,
diff --git a/files/FILE_3B3600_dt_test_celact.txt.s b/files/FILE_3B3600_dt_test_celact.txt.s
new file mode 100644
index 00000000..2d964dd0
--- /dev/null
+++ b/files/FILE_3B3600_dt_test_celact.txt.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "files/FILE_3B3600_dt_test_celact.txt"
+ .balign 512, 255
diff --git a/files/FILE_3B3800_dt_test_res_cell.txt b/files/FILE_3B3800_dt_test_res_cell.txt
new file mode 100644
index 00000000..b23c8226
--- /dev/null
+++ b/files/FILE_3B3800_dt_test_res_cell.txt
@@ -0,0 +1,3 @@
+2,0,
+data/ug_hero.NCER,0,
+e,e,e,e,
diff --git a/files/FILE_3B3800_dt_test_res_cell.txt.s b/files/FILE_3B3800_dt_test_res_cell.txt.s
new file mode 100644
index 00000000..4d137245
--- /dev/null
+++ b/files/FILE_3B3800_dt_test_res_cell.txt.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "files/FILE_3B3800_dt_test_res_cell.txt"
+ .balign 512, 255
diff --git a/files/FILE_3B3A00_dt_test_res_cellanm.txt b/files/FILE_3B3A00_dt_test_res_cellanm.txt
new file mode 100644
index 00000000..c80a0e2c
--- /dev/null
+++ b/files/FILE_3B3A00_dt_test_res_cellanm.txt
@@ -0,0 +1,3 @@
+3,0,
+data/ug_hero.NANR,0,
+e,e,e,e,
diff --git a/files/FILE_3B3A00_dt_test_res_cellanm.txt.s b/files/FILE_3B3A00_dt_test_res_cellanm.txt.s
new file mode 100644
index 00000000..aa7fb06b
--- /dev/null
+++ b/files/FILE_3B3A00_dt_test_res_cellanm.txt.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "files/FILE_3B3A00_dt_test_res_cellanm.txt"
+ .balign 512, 255
diff --git a/files/FILE_3B3C00_dt_test_res_char.txt b/files/FILE_3B3C00_dt_test_res_char.txt
new file mode 100644
index 00000000..5af4589b
--- /dev/null
+++ b/files/FILE_3B3C00_dt_test_res_char.txt
@@ -0,0 +1,3 @@
+0,0,
+data/ug_boygirl.NCGR,0,3,
+e,e,e,e,
diff --git a/files/FILE_3B3C00_dt_test_res_char.txt.s b/files/FILE_3B3C00_dt_test_res_char.txt.s
new file mode 100644
index 00000000..c6f5b327
--- /dev/null
+++ b/files/FILE_3B3C00_dt_test_res_char.txt.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "files/FILE_3B3C00_dt_test_res_char.txt"
+ .balign 512, 255
diff --git a/files/FILE_3B3E00_dt_test_res_multi.txt b/files/FILE_3B3E00_dt_test_res_multi.txt
new file mode 100644
index 00000000..94493646
--- /dev/null
+++ b/files/FILE_3B3E00_dt_test_res_multi.txt
@@ -0,0 +1,2 @@
+4,0,
+e,e,e,e,
diff --git a/files/FILE_3B3E00_dt_test_res_multi.txt.s b/files/FILE_3B3E00_dt_test_res_multi.txt.s
new file mode 100644
index 00000000..7b2f4188
--- /dev/null
+++ b/files/FILE_3B3E00_dt_test_res_multi.txt.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "files/FILE_3B3E00_dt_test_res_multi.txt"
+ .balign 512, 255
diff --git a/files/FILE_3B4000_dt_test_res_multianm.txt b/files/FILE_3B4000_dt_test_res_multianm.txt
new file mode 100644
index 00000000..da4150b4
--- /dev/null
+++ b/files/FILE_3B4000_dt_test_res_multianm.txt
@@ -0,0 +1,2 @@
+5,0,
+e,e,e,e,
diff --git a/files/FILE_3B4000_dt_test_res_multianm.txt.s b/files/FILE_3B4000_dt_test_res_multianm.txt.s
new file mode 100644
index 00000000..457294da
--- /dev/null
+++ b/files/FILE_3B4000_dt_test_res_multianm.txt.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "files/FILE_3B4000_dt_test_res_multianm.txt"
+ .balign 512, 255
diff --git a/files/FILE_3B4200_dt_test_res_pltt.txt b/files/FILE_3B4200_dt_test_res_pltt.txt
new file mode 100644
index 00000000..f7849d4a
--- /dev/null
+++ b/files/FILE_3B4200_dt_test_res_pltt.txt
@@ -0,0 +1,3 @@
+1,0,
+data/ug_boygirl.NCLR,0,3,1,
+e,e,e,e,
diff --git a/files/FILE_3B4200_dt_test_res_pltt.txt.s b/files/FILE_3B4200_dt_test_res_pltt.txt.s
new file mode 100644
index 00000000..a5561d6b
--- /dev/null
+++ b/files/FILE_3B4200_dt_test_res_pltt.txt.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "files/FILE_3B4200_dt_test_res_pltt.txt"
+ .balign 512, 255
diff --git a/files/FILE_3B4400_dun_sea.nsbtx.s b/files/FILE_3B4400_dun_sea.nsbtx.s
new file mode 100644
index 00000000..09fae4e6
--- /dev/null
+++ b/files/FILE_3B4400_dun_sea.nsbtx.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x3B4400, 0x578
+ .balign 512, 255
diff --git a/files/FILE_3B4A00_eoo.dat.s b/files/FILE_3B4A00_eoo.dat.s
new file mode 100644
index 00000000..e1acd422
--- /dev/null
+++ b/files/FILE_3B4A00_eoo.dat.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x3B4A00, 0x46000
+ .balign 512, 255
diff --git a/files/FILE_3FAA00_exdata.dat.s b/files/FILE_3FAA00_exdata.dat.s
new file mode 100644
index 00000000..915ee755
--- /dev/null
+++ b/files/FILE_3FAA00_exdata.dat.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x3FAA00, 0x124
+ .balign 512, 255
diff --git a/files/FILE_3FAC00_field_cutin.narc.s b/files/FILE_3FAC00_field_cutin.narc.s
new file mode 100644
index 00000000..cf6425ca
--- /dev/null
+++ b/files/FILE_3FAC00_field_cutin.narc.s
@@ -0,0 +1,47 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x0000D220 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x000000A4 ; chunk size
+ .short 19 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00008040
+ .word 0x00008040, 0x00008864
+ .word 0x00008864, 0x00008A8C
+ .word 0x00008A8C, 0x00008CB4
+ .word 0x00008CB4, 0x00008EDC
+ .word 0x00008EDC, 0x00009B8C
+ .word 0x00009B8C, 0x00009C0B
+ .word 0x00009C0C, 0x0000A03C
+ .word 0x0000A03C, 0x0000A09F
+ .word 0x0000A0A0, 0x0000A10F
+ .word 0x0000A110, 0x0000A240
+ .word 0x0000A240, 0x0000A2BE
+ .word 0x0000A2C0, 0x0000A35A
+ .word 0x0000A35C, 0x0000B78C
+ .word 0x0000B78C, 0x0000B8C5
+ .word 0x0000B8C8, 0x0000BA55
+ .word 0x0000BA58, 0x0000CE88
+ .word 0x0000CE88, 0x0000CFC1
+ .word 0x0000CFC4, 0x0000D151
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x0000D15C ; chunk size
+ .incbin "baserom.nds", 0x3FACCC, 0xD154
+ .balign 512, 255
diff --git a/files/FILE_408000_fld_anime0.bin.s b/files/FILE_408000_fld_anime0.bin.s
new file mode 100644
index 00000000..8f9342ed
--- /dev/null
+++ b/files/FILE_408000_fld_anime0.bin.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x408000, 0x48
+ .balign 512, 255
diff --git a/files/FILE_408200_fld_anime1.bin.s b/files/FILE_408200_fld_anime1.bin.s
new file mode 100644
index 00000000..e06ce16d
--- /dev/null
+++ b/files/FILE_408200_fld_anime1.bin.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x408200, 0x48
+ .balign 512, 255
diff --git a/files/FILE_408400_fld_anime10.bin.s b/files/FILE_408400_fld_anime10.bin.s
new file mode 100644
index 00000000..48856ecf
--- /dev/null
+++ b/files/FILE_408400_fld_anime10.bin.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x408400, 0x48
+ .balign 512, 255
diff --git a/files/FILE_408600_fld_anime2.bin.s b/files/FILE_408600_fld_anime2.bin.s
new file mode 100644
index 00000000..9c96be9f
--- /dev/null
+++ b/files/FILE_408600_fld_anime2.bin.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x408600, 0x48
+ .balign 512, 255
diff --git a/files/FILE_408800_fld_anime3.bin.s b/files/FILE_408800_fld_anime3.bin.s
new file mode 100644
index 00000000..ff05c45d
--- /dev/null
+++ b/files/FILE_408800_fld_anime3.bin.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x408800, 0x48
+ .balign 512, 255
diff --git a/files/FILE_408A00_fld_anime4.bin.s b/files/FILE_408A00_fld_anime4.bin.s
new file mode 100644
index 00000000..8de311cb
--- /dev/null
+++ b/files/FILE_408A00_fld_anime4.bin.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x408A00, 0x48
+ .balign 512, 255
diff --git a/files/FILE_408C00_fld_anime5.bin.s b/files/FILE_408C00_fld_anime5.bin.s
new file mode 100644
index 00000000..2b79d005
--- /dev/null
+++ b/files/FILE_408C00_fld_anime5.bin.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x408C00, 0x48
+ .balign 512, 255
diff --git a/files/FILE_408E00_fld_anime6.bin.s b/files/FILE_408E00_fld_anime6.bin.s
new file mode 100644
index 00000000..d0e21416
--- /dev/null
+++ b/files/FILE_408E00_fld_anime6.bin.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x408E00, 0x48
+ .balign 512, 255
diff --git a/files/FILE_409000_fld_anime7.bin.s b/files/FILE_409000_fld_anime7.bin.s
new file mode 100644
index 00000000..65de7b11
--- /dev/null
+++ b/files/FILE_409000_fld_anime7.bin.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x409000, 0x48
+ .balign 512, 255
diff --git a/files/FILE_409200_fld_anime8.bin.s b/files/FILE_409200_fld_anime8.bin.s
new file mode 100644
index 00000000..16763fc0
--- /dev/null
+++ b/files/FILE_409200_fld_anime8.bin.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x409200, 0x48
+ .balign 512, 255
diff --git a/files/FILE_409400_fld_anime9.bin.s b/files/FILE_409400_fld_anime9.bin.s
new file mode 100644
index 00000000..a9f4a232
--- /dev/null
+++ b/files/FILE_409400_fld_anime9.bin.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x409400, 0x48
+ .balign 512, 255
diff --git a/files/FILE_409600_fs_kanban.nsbca.s b/files/FILE_409600_fs_kanban.nsbca.s
new file mode 100644
index 00000000..6bf0fb8e
--- /dev/null
+++ b/files/FILE_409600_fs_kanban.nsbca.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x409600, 0x7F4
+ .balign 512, 255
diff --git a/files/FILE_409E00_ground0.NCGR.s b/files/FILE_409E00_ground0.NCGR.s
new file mode 100644
index 00000000..5ea93acd
--- /dev/null
+++ b/files/FILE_409E00_ground0.NCGR.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x409E00, 0x8030
+ .balign 512, 255
diff --git a/files/FILE_412000_ground0.NCLR.s b/files/FILE_412000_ground0.NCLR.s
new file mode 100644
index 00000000..3005a462
--- /dev/null
+++ b/files/FILE_412000_ground0.NCLR.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x412000, 0x228
+ .balign 512, 255
diff --git a/files/FILE_412400_ground0.NSCR.s b/files/FILE_412400_ground0.NSCR.s
new file mode 100644
index 00000000..9b2c5b20
--- /dev/null
+++ b/files/FILE_412400_ground0.NSCR.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x412400, 0x824
+ .balign 512, 255
diff --git a/files/FILE_412E00_kemu_itpconv.dat.s b/files/FILE_412E00_kemu_itpconv.dat.s
new file mode 100644
index 00000000..3828f9a5
--- /dev/null
+++ b/files/FILE_412E00_kemu_itpconv.dat.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x412E00, 0x14
+ .balign 512, 255
diff --git a/files/FILE_413000_lake_anim.nsbtx.s b/files/FILE_413000_lake_anim.nsbtx.s
new file mode 100644
index 00000000..7950a6ee
--- /dev/null
+++ b/files/FILE_413000_lake_anim.nsbtx.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x413000, 0x1150
+ .balign 512, 255
diff --git a/files/FILE_414200_miniasahamabe.nsbtx.s b/files/FILE_414200_miniasahamabe.nsbtx.s
new file mode 100644
index 00000000..a38928c4
--- /dev/null
+++ b/files/FILE_414200_miniasahamabe.nsbtx.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x414200, 0x1188
+ .balign 512, 255
diff --git a/files/FILE_415400_miniasasea.nsbtx.s b/files/FILE_415400_miniasasea.nsbtx.s
new file mode 100644
index 00000000..66f478a8
--- /dev/null
+++ b/files/FILE_415400_miniasasea.nsbtx.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x415400, 0x578
+ .balign 512, 255
diff --git a/files/FILE_415A00_minihamabe.nsbtx.s b/files/FILE_415A00_minihamabe.nsbtx.s
new file mode 100644
index 00000000..a3ed5509
--- /dev/null
+++ b/files/FILE_415A00_minihamabe.nsbtx.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x415A00, 0x1188
+ .balign 512, 255
diff --git a/files/FILE_416C00_minimum.nsbtx.s b/files/FILE_416C00_minimum.nsbtx.s
new file mode 100644
index 00000000..b8c74dbf
--- /dev/null
+++ b/files/FILE_416C00_minimum.nsbtx.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x416C00, 0x578
+ .balign 512, 255
diff --git a/files/FILE_417200_minirhana.nsbtx.s b/files/FILE_417200_minirhana.nsbtx.s
new file mode 100644
index 00000000..fec8e2bc
--- /dev/null
+++ b/files/FILE_417200_minirhana.nsbtx.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x417200, 0x2C8
+ .balign 512, 255
diff --git a/files/FILE_417600_namein.narc.s b/files/FILE_417600_namein.narc.s
new file mode 100644
index 00000000..a36727c1
--- /dev/null
+++ b/files/FILE_417600_namein.narc.s
@@ -0,0 +1,47 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00003F58 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x000000A4 ; chunk size
+ .short 19 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000228
+ .word 0x00000228, 0x00000450
+ .word 0x00000450, 0x00000B29
+ .word 0x00000B2C, 0x00000D83
+ .word 0x00000D84, 0x00000EA2
+ .word 0x00000EA4, 0x00000FE1
+ .word 0x00000FE4, 0x000010B3
+ .word 0x000010B4, 0x00001184
+ .word 0x00001184, 0x00001254
+ .word 0x00001254, 0x00001324
+ .word 0x00001324, 0x00002D15
+ .word 0x00002D18, 0x00002F9A
+ .word 0x00002F9C, 0x00003401
+ .word 0x00003404, 0x0000354B
+ .word 0x0000354C, 0x00003A74
+ .word 0x00003A74, 0x00003B13
+ .word 0x00003B14, 0x00003C1F
+ .word 0x00003C20, 0x00003D4F
+ .word 0x00003D50, 0x00003E8A
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00003E94 ; chunk size
+ .incbin "baserom.nds", 0x4176CC, 0x3E8C
+ .balign 512, 255
diff --git a/files/FILE_41B600_nfont.NCGR.s b/files/FILE_41B600_nfont.NCGR.s
new file mode 100644
index 00000000..87741cad
--- /dev/null
+++ b/files/FILE_41B600_nfont.NCGR.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x41B600, 0x8030
+ .balign 512, 255
diff --git a/files/FILE_423800_nfont.NCLR.s b/files/FILE_423800_nfont.NCLR.s
new file mode 100644
index 00000000..1f668e48
--- /dev/null
+++ b/files/FILE_423800_nfont.NCLR.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x423800, 0x228
+ .balign 512, 255
diff --git a/files/FILE_423C00_pc.nsbca.s b/files/FILE_423C00_pc.nsbca.s
new file mode 100644
index 00000000..a3fadec8
--- /dev/null
+++ b/files/FILE_423C00_pc.nsbca.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x423C00, 0x18C
+ .balign 512, 255
diff --git a/files/FILE_423E00_plist_canm.resdat.s b/files/FILE_423E00_plist_canm.resdat.s
new file mode 100644
index 00000000..3e4631fd
--- /dev/null
+++ b/files/FILE_423E00_plist_canm.resdat.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x423E00, 0xC4
+ .balign 512, 255
diff --git a/files/FILE_424000_plist_cell.resdat.s b/files/FILE_424000_plist_cell.resdat.s
new file mode 100644
index 00000000..8d73ee6a
--- /dev/null
+++ b/files/FILE_424000_plist_cell.resdat.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x424000, 0xC4
+ .balign 512, 255
diff --git a/files/FILE_424200_plist_chr.resdat.s b/files/FILE_424200_plist_chr.resdat.s
new file mode 100644
index 00000000..67cb7045
--- /dev/null
+++ b/files/FILE_424200_plist_chr.resdat.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x424200, 0x13C
+ .balign 512, 255
diff --git a/files/FILE_424400_plist_h.cldat.s b/files/FILE_424400_plist_h.cldat.s
new file mode 100644
index 00000000..2e163ba7
--- /dev/null
+++ b/files/FILE_424400_plist_h.cldat.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x424400, 0x1A0
+ .balign 512, 255
diff --git a/files/FILE_424600_plist_pal.resdat.s b/files/FILE_424600_plist_pal.resdat.s
new file mode 100644
index 00000000..794b107c
--- /dev/null
+++ b/files/FILE_424600_plist_pal.resdat.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x424600, 0x94
+ .balign 512, 255
diff --git a/files/FILE_424800_porucase_canm.resdat.s b/files/FILE_424800_porucase_canm.resdat.s
new file mode 100644
index 00000000..5fb8558e
--- /dev/null
+++ b/files/FILE_424800_porucase_canm.resdat.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x424800, 0x4C
+ .balign 512, 255
diff --git a/files/FILE_424A00_porucase_celact.cldat.s b/files/FILE_424A00_porucase_celact.cldat.s
new file mode 100644
index 00000000..cc8b6f74
--- /dev/null
+++ b/files/FILE_424A00_porucase_celact.cldat.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x424A00, 0x60
+ .balign 512, 255
diff --git a/files/FILE_424C00_porucase_cell.resdat.s b/files/FILE_424C00_porucase_cell.resdat.s
new file mode 100644
index 00000000..32c01cc9
--- /dev/null
+++ b/files/FILE_424C00_porucase_cell.resdat.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x424C00, 0x4C
+ .balign 512, 255
diff --git a/files/FILE_424E00_porucase_chr.resdat.s b/files/FILE_424E00_porucase_chr.resdat.s
new file mode 100644
index 00000000..aa4dd60e
--- /dev/null
+++ b/files/FILE_424E00_porucase_chr.resdat.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x424E00, 0x4C
+ .balign 512, 255
diff --git a/files/FILE_425000_porucase_pal.resdat.s b/files/FILE_425000_porucase_pal.resdat.s
new file mode 100644
index 00000000..f573d330
--- /dev/null
+++ b/files/FILE_425000_porucase_pal.resdat.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x425000, 0x34
+ .balign 512, 255
diff --git a/files/FILE_425200_pst_canm.resdat.s b/files/FILE_425200_pst_canm.resdat.s
new file mode 100644
index 00000000..eaff3772
--- /dev/null
+++ b/files/FILE_425200_pst_canm.resdat.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x425200, 0x1B4
+ .balign 512, 255
diff --git a/files/FILE_425400_pst_cell.resdat.s b/files/FILE_425400_pst_cell.resdat.s
new file mode 100644
index 00000000..f554a45a
--- /dev/null
+++ b/files/FILE_425400_pst_cell.resdat.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x425400, 0x1B4
+ .balign 512, 255
diff --git a/files/FILE_425600_pst_chr.resdat.s b/files/FILE_425600_pst_chr.resdat.s
new file mode 100644
index 00000000..a694a18e
--- /dev/null
+++ b/files/FILE_425600_pst_chr.resdat.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x425600, 0x424
+ .balign 512, 255
diff --git a/files/FILE_425C00_pst_h.cldat.s b/files/FILE_425C00_pst_h.cldat.s
new file mode 100644
index 00000000..5df13ddc
--- /dev/null
+++ b/files/FILE_425C00_pst_h.cldat.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x425C00, 0x580
+ .balign 512, 255
diff --git a/files/FILE_426200_pst_pal.resdat.s b/files/FILE_426200_pst_pal.resdat.s
new file mode 100644
index 00000000..6f4092ae
--- /dev/null
+++ b/files/FILE_426200_pst_pal.resdat.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x426200, 0xAC
+ .balign 512, 255
diff --git a/files/FILE_426400_shop_canm.resdat.s b/files/FILE_426400_shop_canm.resdat.s
new file mode 100644
index 00000000..4c87b70e
--- /dev/null
+++ b/files/FILE_426400_shop_canm.resdat.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x426400, 0x64
+ .balign 512, 255
diff --git a/files/FILE_426600_shop_cell.resdat.s b/files/FILE_426600_shop_cell.resdat.s
new file mode 100644
index 00000000..9468b158
--- /dev/null
+++ b/files/FILE_426600_shop_cell.resdat.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x426600, 0x64
+ .balign 512, 255
diff --git a/files/FILE_426800_shop_chr.resdat.s b/files/FILE_426800_shop_chr.resdat.s
new file mode 100644
index 00000000..1ebae636
--- /dev/null
+++ b/files/FILE_426800_shop_chr.resdat.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x426800, 0x64
+ .balign 512, 255
diff --git a/files/FILE_426A00_shop_h.cldat.s b/files/FILE_426A00_shop_h.cldat.s
new file mode 100644
index 00000000..3b0eebef
--- /dev/null
+++ b/files/FILE_426A00_shop_h.cldat.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x426A00, 0x80
+ .balign 512, 255
diff --git a/files/FILE_426C00_shop_pal.resdat.s b/files/FILE_426C00_shop_pal.resdat.s
new file mode 100644
index 00000000..5758e1a6
--- /dev/null
+++ b/files/FILE_426C00_shop_pal.resdat.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x426C00, 0x4C
+ .balign 512, 255
diff --git a/files/FILE_426E00_slot.narc.s b/files/FILE_426E00_slot.narc.s
new file mode 100644
index 00000000..69df3aa0
--- /dev/null
+++ b/files/FILE_426E00_slot.narc.s
@@ -0,0 +1,105 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00015944 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000274 ; chunk size
+ .short 77 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00001840
+ .word 0x00001840, 0x00002064
+ .word 0x00002064, 0x000035E4
+ .word 0x000035E4, 0x0000380C
+ .word 0x0000380C, 0x00004030
+ .word 0x00004030, 0x00004258
+ .word 0x00004258, 0x00004480
+ .word 0x00004480, 0x000046A8
+ .word 0x000046A8, 0x000047E8
+ .word 0x000047E8, 0x0000500C
+ .word 0x0000500C, 0x00005234
+ .word 0x00005234, 0x00006A64
+ .word 0x00006A64, 0x00006B56
+ .word 0x00006B58, 0x00006C9E
+ .word 0x00006CA0, 0x000070D0
+ .word 0x000070D0, 0x00007133
+ .word 0x00007134, 0x000071A3
+ .word 0x000071A4, 0x000075D4
+ .word 0x000075D4, 0x00007637
+ .word 0x00007638, 0x000076A7
+ .word 0x000076A8, 0x000078D0
+ .word 0x000078D0, 0x00007E00
+ .word 0x00007E00, 0x00007F66
+ .word 0x00007F68, 0x0000815A
+ .word 0x0000815C, 0x0000870C
+ .word 0x0000870C, 0x00008887
+ .word 0x00008888, 0x00008A4F
+ .word 0x00008A50, 0x00008C78
+ .word 0x00008C78, 0x00009228
+ .word 0x00009228, 0x000093A3
+ .word 0x000093A4, 0x0000956B
+ .word 0x0000956C, 0x00009794
+ .word 0x00009794, 0x00009D44
+ .word 0x00009D44, 0x00009EBF
+ .word 0x00009EC0, 0x0000A087
+ .word 0x0000A088, 0x0000A2B0
+ .word 0x0000A2B0, 0x0000A860
+ .word 0x0000A860, 0x0000A9DB
+ .word 0x0000A9DC, 0x0000ABA3
+ .word 0x0000ABA4, 0x0000ADCC
+ .word 0x0000ADCC, 0x0000B37C
+ .word 0x0000B37C, 0x0000B4F7
+ .word 0x0000B4F8, 0x0000B6BF
+ .word 0x0000B6C0, 0x0000B8E8
+ .word 0x0000B8E8, 0x0000C918
+ .word 0x0000C918, 0x0000C99F
+ .word 0x0000C9A0, 0x0000CA17
+ .word 0x0000CA18, 0x0000CC40
+ .word 0x0000CC40, 0x0000F470
+ .word 0x0000F470, 0x0000F586
+ .word 0x0000F588, 0x0000F6F6
+ .word 0x0000F6F8, 0x0000F920
+ .word 0x0000F920, 0x00012150
+ .word 0x00012150, 0x00012266
+ .word 0x00012268, 0x000123D6
+ .word 0x000123D8, 0x00012600
+ .word 0x00012600, 0x00012E30
+ .word 0x00012E30, 0x00012EA3
+ .word 0x00012EA4, 0x00012F13
+ .word 0x00012F14, 0x0001313C
+ .word 0x0001313C, 0x00013B6C
+ .word 0x00013B6C, 0x00013CD2
+ .word 0x00013CD4, 0x00013EC6
+ .word 0x00013EC8, 0x000140F0
+ .word 0x000140F0, 0x00014620
+ .word 0x00014620, 0x00014786
+ .word 0x00014788, 0x0001497A
+ .word 0x0001497C, 0x00014BA4
+ .word 0x00014BA4, 0x00014D54
+ .word 0x00014D54, 0x00014DBB
+ .word 0x00014DBC, 0x00014E2B
+ .word 0x00014E2C, 0x00014F5C
+ .word 0x00014F5C, 0x00014FBF
+ .word 0x00014FC0, 0x0001502F
+ .word 0x00015030, 0x00015258
+ .word 0x00015258, 0x00015480
+ .word 0x00015480, 0x000156A8
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x000156B0 ; chunk size
+ .incbin "baserom.nds", 0x42709C, 0x156A8
+ .balign 512, 255
diff --git a/files/FILE_43C800_smptm_koori.NANR.s b/files/FILE_43C800_smptm_koori.NANR.s
new file mode 100644
index 00000000..5c8c3d3a
--- /dev/null
+++ b/files/FILE_43C800_smptm_koori.NANR.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x43C800, 0xA3
+ .balign 512, 255
diff --git a/files/FILE_43CA00_smptm_koori.NCER.s b/files/FILE_43CA00_smptm_koori.NCER.s
new file mode 100644
index 00000000..0dd93c86
--- /dev/null
+++ b/files/FILE_43CA00_smptm_koori.NCER.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x43CA00, 0xD7
+ .balign 512, 255
diff --git a/files/FILE_43CC00_smptm_koori.NCGR.s b/files/FILE_43CC00_smptm_koori.NCGR.s
new file mode 100644
index 00000000..7c3c39c4
--- /dev/null
+++ b/files/FILE_43CC00_smptm_koori.NCGR.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x43CC00, 0xCB0
+ .balign 512, 255
diff --git a/files/FILE_43DA00_smptm_koori.NCLR.s b/files/FILE_43DA00_smptm_koori.NCLR.s
new file mode 100644
index 00000000..60fb05d7
--- /dev/null
+++ b/files/FILE_43DA00_smptm_koori.NCLR.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x43DA00, 0x228
+ .balign 512, 255
diff --git a/files/FILE_43DE00_smptm_nemuri.NANR.s b/files/FILE_43DE00_smptm_nemuri.NANR.s
new file mode 100644
index 00000000..3fd59e27
--- /dev/null
+++ b/files/FILE_43DE00_smptm_nemuri.NANR.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x43DE00, 0x6F
+ .balign 512, 255
diff --git a/files/FILE_43E000_smptm_nemuri.NCER.s b/files/FILE_43E000_smptm_nemuri.NCER.s
new file mode 100644
index 00000000..6a733bb4
--- /dev/null
+++ b/files/FILE_43E000_smptm_nemuri.NCER.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x43E000, 0x63
+ .balign 512, 255
diff --git a/files/FILE_43E200_smptm_nemuri.NCGR.s b/files/FILE_43E200_smptm_nemuri.NCGR.s
new file mode 100644
index 00000000..642fd427
--- /dev/null
+++ b/files/FILE_43E200_smptm_nemuri.NCGR.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x43E200, 0x230
+ .balign 512, 255
diff --git a/files/FILE_43E600_smptm_nemuri.NCLR.s b/files/FILE_43E600_smptm_nemuri.NCLR.s
new file mode 100644
index 00000000..178aa359
--- /dev/null
+++ b/files/FILE_43E600_smptm_nemuri.NCLR.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x43E600, 0x228
+ .balign 512, 255
diff --git a/files/FILE_43EA00_t3_fl_b.nsbtx.s b/files/FILE_43EA00_t3_fl_b.nsbtx.s
new file mode 100644
index 00000000..febba0ca
--- /dev/null
+++ b/files/FILE_43EA00_t3_fl_b.nsbtx.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x43EA00, 0x250
+ .balign 512, 255
diff --git a/files/FILE_43EE00_t3_fl_p.nsbtx.s b/files/FILE_43EE00_t3_fl_p.nsbtx.s
new file mode 100644
index 00000000..f35a9627
--- /dev/null
+++ b/files/FILE_43EE00_t3_fl_p.nsbtx.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x43EE00, 0x250
+ .balign 512, 255
diff --git a/files/FILE_43F200_t3_fl_r.nsbtx.s b/files/FILE_43F200_t3_fl_r.nsbtx.s
new file mode 100644
index 00000000..d22e3ceb
--- /dev/null
+++ b/files/FILE_43F200_t3_fl_r.nsbtx.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x43F200, 0x250
+ .balign 512, 255
diff --git a/files/FILE_43F600_t3_fl_y.nsbtx.s b/files/FILE_43F600_t3_fl_y.nsbtx.s
new file mode 100644
index 00000000..35f002d5
--- /dev/null
+++ b/files/FILE_43F600_t3_fl_y.nsbtx.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x43F600, 0x250
+ .balign 512, 255
diff --git a/files/FILE_43FA00_test.atr.s b/files/FILE_43FA00_test.atr.s
new file mode 100644
index 00000000..3bac3b89
--- /dev/null
+++ b/files/FILE_43FA00_test.atr.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x43FA00, 0x800
+ .balign 512, 255
diff --git a/files/FILE_440200_tmap_block.dat.s b/files/FILE_440200_tmap_block.dat.s
new file mode 100644
index 00000000..98536dbc
--- /dev/null
+++ b/files/FILE_440200_tmap_block.dat.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x440200, 0x1114
+ .balign 512, 255
diff --git a/files/FILE_441400_tmap_flags.dat.s b/files/FILE_441400_tmap_flags.dat.s
new file mode 100644
index 00000000..601db5ff
--- /dev/null
+++ b/files/FILE_441400_tmap_flags.dat.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x441400, 0x2DC
+ .balign 512, 255
diff --git a/files/FILE_441800_tmapn_canm.resdat.s b/files/FILE_441800_tmapn_canm.resdat.s
new file mode 100644
index 00000000..f5a4904e
--- /dev/null
+++ b/files/FILE_441800_tmapn_canm.resdat.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x441800, 0x94
+ .balign 512, 255
diff --git a/files/FILE_441A00_tmapn_celact.cldat.s b/files/FILE_441A00_tmapn_celact.cldat.s
new file mode 100644
index 00000000..e3b25824
--- /dev/null
+++ b/files/FILE_441A00_tmapn_celact.cldat.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x441A00, 0xC0
+ .balign 512, 255
diff --git a/files/FILE_441C00_tmapn_celact.txt b/files/FILE_441C00_tmapn_celact.txt
new file mode 100644
index 00000000..a9c7d20a
--- /dev/null
+++ b/files/FILE_441C00_tmapn_celact.txt
@@ -0,0 +1,8 @@
+0,1,0,0,n,n,0,0, <-Tu{^Z
+1,0,1,1,n,n,0,2, <-CJ[\Z
+2,0,2,2,n,n,0,2, <-C@Z
+3,0,3,3,n,n,0,2, <-CՃZ
+4,0,4,4,n,n,0,2, <-CXZ
+e,e,e,e,e,e,e,e,
+
+charID,palID,celID,celAnmID,McelID,McelAnmID,vramTransferF,BGPriority
diff --git a/files/FILE_441C00_tmapn_celact.txt.s b/files/FILE_441C00_tmapn_celact.txt.s
new file mode 100644
index 00000000..311447a4
--- /dev/null
+++ b/files/FILE_441C00_tmapn_celact.txt.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "files/FILE_441C00_tmapn_celact.txt"
+ .balign 512, 255
diff --git a/files/FILE_441E00_tmapn_cell.resdat.s b/files/FILE_441E00_tmapn_cell.resdat.s
new file mode 100644
index 00000000..53cd5d48
--- /dev/null
+++ b/files/FILE_441E00_tmapn_cell.resdat.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x441E00, 0x94
+ .balign 512, 255
diff --git a/files/FILE_442000_tmapn_chr.resdat.s b/files/FILE_442000_tmapn_chr.resdat.s
new file mode 100644
index 00000000..94f2cf40
--- /dev/null
+++ b/files/FILE_442000_tmapn_chr.resdat.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x442000, 0x94
+ .balign 512, 255
diff --git a/files/FILE_442200_tmapn_pal.resdat.s b/files/FILE_442200_tmapn_pal.resdat.s
new file mode 100644
index 00000000..b5e5d54f
--- /dev/null
+++ b/files/FILE_442200_tmapn_pal.resdat.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x442200, 0x4C
+ .balign 512, 255
diff --git a/files/FILE_442400_tmapn_res_canm.txt b/files/FILE_442400_tmapn_res_canm.txt
new file mode 100644
index 00000000..0f33864a
--- /dev/null
+++ b/files/FILE_442400_tmapn_res_canm.txt
@@ -0,0 +1,9 @@
+3,1,
+17,6,0,0, <-Tu{^
+17,9,0,1, <-CJ[\
+17,12,0,2, <-C@
+17,15,0,3, <-C
+17,18,0,4, <-CX
+e,e,e,e,
+
+arcFidx,arcDidx,cmpF,myID
diff --git a/files/FILE_442400_tmapn_res_canm.txt.s b/files/FILE_442400_tmapn_res_canm.txt.s
new file mode 100644
index 00000000..0f06c8c3
--- /dev/null
+++ b/files/FILE_442400_tmapn_res_canm.txt.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "files/FILE_442400_tmapn_res_canm.txt"
+ .balign 512, 255
diff --git a/files/FILE_442600_tmapn_res_cell.txt b/files/FILE_442600_tmapn_res_cell.txt
new file mode 100644
index 00000000..93f58403
--- /dev/null
+++ b/files/FILE_442600_tmapn_res_cell.txt
@@ -0,0 +1,10 @@
+2,1,
+17,5,0,0, <-Tuʃ{^GtFNg
+17,8,0,1, <-CJ[\
+17,11,0,2, <-C@
+17,14,0,3, <-C
+17,17,0,4, <-CX
+e,e,e,e,
+
+arcFidx,arcDidx,cmpF,myID
+
diff --git a/files/FILE_442600_tmapn_res_cell.txt.s b/files/FILE_442600_tmapn_res_cell.txt.s
new file mode 100644
index 00000000..72d4c2da
--- /dev/null
+++ b/files/FILE_442600_tmapn_res_cell.txt.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "files/FILE_442600_tmapn_res_cell.txt"
+ .balign 512, 255
diff --git a/files/FILE_442800_tmapn_res_chr.txt b/files/FILE_442800_tmapn_res_chr.txt
new file mode 100644
index 00000000..8489deb3
--- /dev/null
+++ b/files/FILE_442800_tmapn_res_chr.txt
@@ -0,0 +1,9 @@
+0,1,
+17,4,0,0,2, <-Tu{^
+17,7,0,1,1, <-CJ[\
+17,10,0,2,1, <-C@
+17,13,0,3,1, <-C
+17,16,0,4,1, <-CXACR
+e,e,e,e,e,
+
+arcFidx,arcDidx,cmpF,myID,vramType(1:main,2:sub,3:both)
diff --git a/files/FILE_442800_tmapn_res_chr.txt.s b/files/FILE_442800_tmapn_res_chr.txt.s
new file mode 100644
index 00000000..c0b6ce34
--- /dev/null
+++ b/files/FILE_442800_tmapn_res_chr.txt.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "files/FILE_442800_tmapn_res_chr.txt"
+ .balign 512, 255
diff --git a/files/FILE_442A00_tmapn_res_pal.txt b/files/FILE_442A00_tmapn_res_pal.txt
new file mode 100644
index 00000000..531916c2
--- /dev/null
+++ b/files/FILE_442A00_tmapn_res_pal.txt
@@ -0,0 +1,6 @@
+1,1,
+17,2,0,0,1,16, <-Cpbg
+17,3,0,1,2,1, <-Tupbg
+e,e,e,e,e,e,
+
+arcFidx,ardDidx,cmpF,myID,vramType(1:main,2:sub,3:both),palNum
diff --git a/files/FILE_442A00_tmapn_res_pal.txt.s b/files/FILE_442A00_tmapn_res_pal.txt.s
new file mode 100644
index 00000000..3ca5cd83
--- /dev/null
+++ b/files/FILE_442A00_tmapn_res_pal.txt.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "files/FILE_442A00_tmapn_res_pal.txt"
+ .balign 512, 255
diff --git a/files/FILE_442C00_tradelist.narc.s b/files/FILE_442C00_tradelist.narc.s
new file mode 100644
index 00000000..5aea85a7
--- /dev/null
+++ b/files/FILE_442C00_tradelist.narc.s
@@ -0,0 +1,41 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00002A74 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000074 ; chunk size
+ .short 13 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000228
+ .word 0x00000228, 0x00000575
+ .word 0x00000578, 0x000007BA
+ .word 0x000007BC, 0x00000AFE
+ .word 0x00000B00, 0x00000C21
+ .word 0x00000C24, 0x00000E22
+ .word 0x00000E24, 0x00000F44
+ .word 0x00000F44, 0x000017B4
+ .word 0x000017B4, 0x0000197E
+ .word 0x00001980, 0x00001B46
+ .word 0x00001B48, 0x000024EC
+ .word 0x000024EC, 0x000027B9
+ .word 0x000027BC, 0x000029D7
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x000029E0 ; chunk size
+ .incbin "baserom.nds", 0x442C9C, 0x29D8
+ .balign 512, 255
diff --git a/files/FILE_445800_trapmark.narc.s b/files/FILE_445800_trapmark.narc.s
new file mode 100644
index 00000000..7a5a9a79
--- /dev/null
+++ b/files/FILE_445800_trapmark.narc.s
@@ -0,0 +1,29 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00000264 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000014 ; chunk size
+ .short 1 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000228
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00000230 ; chunk size
+ .incbin "baserom.nds", 0x44583C, 0x228
+ .balign 512, 255
diff --git a/files/FILE_445C00_ug_anim.narc.s b/files/FILE_445C00_ug_anim.narc.s
new file mode 100644
index 00000000..33146404
--- /dev/null
+++ b/files/FILE_445C00_ug_anim.narc.s
@@ -0,0 +1,36 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00005C80 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x0000004C ; chunk size
+ .short 8 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000228
+ .word 0x00000228, 0x00000381
+ .word 0x00000384, 0x00000455
+ .word 0x00000458, 0x00001088
+ .word 0x00001088, 0x000013F9
+ .word 0x000013FC, 0x00001631
+ .word 0x00001634, 0x000059E4
+ .word 0x000059E4, 0x00005C0C
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00005C14 ; chunk size
+ .incbin "baserom.nds", 0x445C74, 0x5C0C
+ .balign 512, 255
diff --git a/files/FILE_44BA00_ug_base_cur.nsbmd.s b/files/FILE_44BA00_ug_base_cur.nsbmd.s
new file mode 100644
index 00000000..b8a7a462
--- /dev/null
+++ b/files/FILE_44BA00_ug_base_cur.nsbmd.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x44BA00, 0x694
+ .balign 512, 255
diff --git a/files/FILE_44C200_ug_boygirl.NCGR.s b/files/FILE_44C200_ug_boygirl.NCGR.s
new file mode 100644
index 00000000..64b547fa
--- /dev/null
+++ b/files/FILE_44C200_ug_boygirl.NCGR.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x44C200, 0x1230
+ .balign 512, 255
diff --git a/files/FILE_44D600_ug_boygirl.NCLR.s b/files/FILE_44D600_ug_boygirl.NCLR.s
new file mode 100644
index 00000000..42cb0b77
--- /dev/null
+++ b/files/FILE_44D600_ug_boygirl.NCLR.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x44D600, 0x228
+ .balign 512, 255
diff --git a/files/FILE_44DA00_ug_fossil.narc.s b/files/FILE_44DA00_ug_fossil.narc.s
new file mode 100644
index 00000000..e9d8458d
--- /dev/null
+++ b/files/FILE_44DA00_ug_fossil.narc.s
@@ -0,0 +1,31 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00003ED8 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000024 ; chunk size
+ .short 3 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00003640
+ .word 0x00003640, 0x00003868
+ .word 0x00003868, 0x00003E8C
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00003E94 ; chunk size
+ .incbin "baserom.nds", 0x44DA4C, 0x3E8C
+ .balign 512, 255
diff --git a/files/FILE_451A00_ug_hero.NANR.s b/files/FILE_451A00_ug_hero.NANR.s
new file mode 100644
index 00000000..18d614c3
--- /dev/null
+++ b/files/FILE_451A00_ug_hero.NANR.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x451A00, 0xF9
+ .balign 512, 255
diff --git a/files/FILE_451C00_ug_hero.NCER.s b/files/FILE_451C00_ug_hero.NCER.s
new file mode 100644
index 00000000..2e3544bb
--- /dev/null
+++ b/files/FILE_451C00_ug_hero.NCER.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x451C00, 0x109
+ .balign 512, 255
diff --git a/files/FILE_451E00_ug_hole.NANR.s b/files/FILE_451E00_ug_hole.NANR.s
new file mode 100644
index 00000000..6d0ffb57
--- /dev/null
+++ b/files/FILE_451E00_ug_hole.NANR.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x451E00, 0xD6
+ .balign 512, 255
diff --git a/files/FILE_452000_ug_hole.NCER.s b/files/FILE_452000_ug_hole.NCER.s
new file mode 100644
index 00000000..9d97706d
--- /dev/null
+++ b/files/FILE_452000_ug_hole.NCER.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x452000, 0xA2
+ .balign 512, 255
diff --git a/files/FILE_452200_ug_hole.NCGR.s b/files/FILE_452200_ug_hole.NCGR.s
new file mode 100644
index 00000000..efe2a8f7
--- /dev/null
+++ b/files/FILE_452200_ug_hole.NCGR.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x452200, 0x530
+ .balign 512, 255
diff --git a/files/FILE_452800_ug_parts.narc.s b/files/FILE_452800_ug_parts.narc.s
new file mode 100644
index 00000000..3d14c906
--- /dev/null
+++ b/files/FILE_452800_ug_parts.narc.s
@@ -0,0 +1,144 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x0002079C ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x000003AC ; chunk size
+ .short 116 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000228
+ .word 0x00000228, 0x000006E8
+ .word 0x000006E8, 0x00000928
+ .word 0x00000928, 0x00000B50
+ .word 0x00000B50, 0x00001010
+ .word 0x00001010, 0x00001250
+ .word 0x00001250, 0x00001710
+ .word 0x00001710, 0x00001938
+ .word 0x00001938, 0x00001B60
+ .word 0x00001B60, 0x00001FA0
+ .word 0x00001FA0, 0x000028E0
+ .word 0x000028E0, 0x00002B08
+ .word 0x00002B08, 0x00003448
+ .word 0x00003448, 0x00003C88
+ .word 0x00003C88, 0x00003EB0
+ .word 0x00003EB0, 0x000040D8
+ .word 0x000040D8, 0x00004598
+ .word 0x00004598, 0x00004A58
+ .word 0x00004A58, 0x00004C98
+ .word 0x00004C98, 0x00004EC0
+ .word 0x00004EC0, 0x00005100
+ .word 0x00005100, 0x00005328
+ .word 0x00005328, 0x00005968
+ .word 0x00005968, 0x00005B90
+ .word 0x00005B90, 0x00006050
+ .word 0x00006050, 0x00006278
+ .word 0x00006278, 0x000064A0
+ .word 0x000064A0, 0x000066E0
+ .word 0x000066E0, 0x00006920
+ .word 0x00006920, 0x00006B60
+ .word 0x00006B60, 0x00006EA0
+ .word 0x00006EA0, 0x000071E0
+ .word 0x000071E0, 0x00007520
+ .word 0x00007520, 0x00007860
+ .word 0x00007860, 0x00007BA0
+ .word 0x00007BA0, 0x00007EE0
+ .word 0x00007EE0, 0x00008220
+ .word 0x00008220, 0x00008560
+ .word 0x00008560, 0x00008A20
+ .word 0x00008A20, 0x00008E60
+ .word 0x00008E60, 0x000092A0
+ .word 0x000092A0, 0x00009AE0
+ .word 0x00009AE0, 0x0000A320
+ .word 0x0000A320, 0x0000AB60
+ .word 0x0000AB60, 0x0000B3A0
+ .word 0x0000B3A0, 0x0000B860
+ .word 0x0000B860, 0x0000BA88
+ .word 0x0000BA88, 0x0000C2C8
+ .word 0x0000C2C8, 0x0000C4F0
+ .word 0x0000C4F0, 0x0000C718
+ .word 0x0000C718, 0x0000CB58
+ .word 0x0000CB58, 0x0000CD80
+ .word 0x0000CD80, 0x0000D5C0
+ .word 0x0000D5C0, 0x0000D7E8
+ .word 0x0000D7E8, 0x0000E028
+ .word 0x0000E028, 0x0000E250
+ .word 0x0000E250, 0x0000E710
+ .word 0x0000E710, 0x0000E950
+ .word 0x0000E950, 0x0000F390
+ .word 0x0000F390, 0x0000F850
+ .word 0x0000F850, 0x0000FA78
+ .word 0x0000FA78, 0x0000FCA0
+ .word 0x0000FCA0, 0x00010160
+ .word 0x00010160, 0x000103A0
+ .word 0x000103A0, 0x00010860
+ .word 0x00010860, 0x00010A88
+ .word 0x00010A88, 0x00010EC8
+ .word 0x00010EC8, 0x000110F0
+ .word 0x000110F0, 0x00011530
+ .word 0x00011530, 0x000121F0
+ .word 0x000121F0, 0x00012EB0
+ .word 0x00012EB0, 0x00013B70
+ .word 0x00013B70, 0x00014830
+ .word 0x00014830, 0x00015070
+ .word 0x00015070, 0x00015298
+ .word 0x00015298, 0x00015758
+ .word 0x00015758, 0x00015980
+ .word 0x00015980, 0x00015BA8
+ .word 0x00015BA8, 0x00015DD0
+ .word 0x00015DD0, 0x00015FF8
+ .word 0x00015FF8, 0x00016220
+ .word 0x00016220, 0x00016860
+ .word 0x00016860, 0x00016A88
+ .word 0x00016A88, 0x00016CB0
+ .word 0x00016CB0, 0x00016ED8
+ .word 0x00016ED8, 0x00017100
+ .word 0x00017100, 0x00017740
+ .word 0x00017740, 0x00017968
+ .word 0x00017968, 0x00017E28
+ .word 0x00017E28, 0x00018050
+ .word 0x00018050, 0x00018278
+ .word 0x00018278, 0x000184A0
+ .word 0x000184A0, 0x000186C8
+ .word 0x000186C8, 0x000188F0
+ .word 0x000188F0, 0x00018B18
+ .word 0x00018B18, 0x00019158
+ .word 0x00019158, 0x00019798
+ .word 0x00019798, 0x000199C0
+ .word 0x000199C0, 0x0001A000
+ .word 0x0001A000, 0x0001A840
+ .word 0x0001A840, 0x0001AA68
+ .word 0x0001AA68, 0x0001AC90
+ .word 0x0001AC90, 0x0001B150
+ .word 0x0001B150, 0x0001B390
+ .word 0x0001B390, 0x0001B850
+ .word 0x0001B850, 0x0001BA78
+ .word 0x0001BA78, 0x0001BF38
+ .word 0x0001BF38, 0x0001C160
+ .word 0x0001C160, 0x0001CBA0
+ .word 0x0001CBA0, 0x0001D5E0
+ .word 0x0001D5E0, 0x0001E020
+ .word 0x0001E020, 0x0001EA60
+ .word 0x0001EA60, 0x0001F4A0
+ .word 0x0001F4A0, 0x0001F960
+ .word 0x0001F960, 0x0001FB88
+ .word 0x0001FB88, 0x000203C8
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x000203D0 ; chunk size
+ .incbin "baserom.nds", 0x452BD4, 0x203C8
+ .balign 512, 255
diff --git a/files/FILE_473000_ug_radar.narc.s b/files/FILE_473000_ug_radar.narc.s
new file mode 100644
index 00000000..3d969275
--- /dev/null
+++ b/files/FILE_473000_ug_radar.narc.s
@@ -0,0 +1,35 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00003868 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000044 ; chunk size
+ .short 7 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000228
+ .word 0x00000228, 0x00000450
+ .word 0x00000450, 0x00002890
+ .word 0x00002890, 0x00002DC0
+ .word 0x00002DC0, 0x000035E4
+ .word 0x000035E4, 0x0000370E
+ .word 0x00003710, 0x000037FA
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00003804 ; chunk size
+ .incbin "baserom.nds", 0x47306C, 0x37FC
+ .balign 512, 255
diff --git a/files/FILE_476A00_ug_trap.narc.s b/files/FILE_476A00_ug_trap.narc.s
new file mode 100644
index 00000000..15e92dae
--- /dev/null
+++ b/files/FILE_476A00_ug_trap.narc.s
@@ -0,0 +1,81 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x0001DBAC ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x000001B4 ; chunk size
+ .short 53 ; number of files
+ .balign 4
+ .word 0x00000000, 0x0000006F
+ .word 0x00000070, 0x000000EF
+ .word 0x000000F0, 0x000002A0
+ .word 0x000002A0, 0x000004C8
+ .word 0x000004C8, 0x00000626
+ .word 0x00000628, 0x00000756
+ .word 0x00000758, 0x00002908
+ .word 0x00002908, 0x00002B30
+ .word 0x00002B30, 0x00003154
+ .word 0x00003154, 0x0000B194
+ .word 0x0000B194, 0x0000B3BC
+ .word 0x0000B3BC, 0x0000BBE0
+ .word 0x0000BBE0, 0x0000C204
+ .word 0x0000C204, 0x0000C828
+ .word 0x0000C828, 0x0000CE4C
+ .word 0x0000CE4C, 0x0000CF39
+ .word 0x0000CF3C, 0x0000D011
+ .word 0x0000D014, 0x0000D904
+ .word 0x0000D904, 0x0000DB2C
+ .word 0x0000DB2C, 0x0000DD54
+ .word 0x0000DD54, 0x0000DE16
+ .word 0x0000DE18, 0x0000DECE
+ .word 0x0000DED0, 0x00010F00
+ .word 0x00010F00, 0x00010FC2
+ .word 0x00010FC4, 0x0001107A
+ .word 0x0001107C, 0x00011CAC
+ .word 0x00011CAC, 0x00011D1B
+ .word 0x00011D1C, 0x00011D7F
+ .word 0x00011D80, 0x00011E30
+ .word 0x00011E30, 0x00012058
+ .word 0x00012058, 0x000122D7
+ .word 0x000122D8, 0x00012937
+ .word 0x00012938, 0x00013C08
+ .word 0x00013C08, 0x00013CF8
+ .word 0x00013CF8, 0x000142CC
+ .word 0x000142CC, 0x0001559C
+ .word 0x0001559C, 0x0001568C
+ .word 0x0001568C, 0x00015C60
+ .word 0x00015C60, 0x00016F30
+ .word 0x00016F30, 0x00017020
+ .word 0x00017020, 0x000175F4
+ .word 0x000175F4, 0x000188C4
+ .word 0x000188C4, 0x000189B4
+ .word 0x000189B4, 0x00018F88
+ .word 0x00018F88, 0x0001A258
+ .word 0x0001A258, 0x0001A348
+ .word 0x0001A348, 0x0001A91C
+ .word 0x0001A91C, 0x0001BBEC
+ .word 0x0001BBEC, 0x0001BCDC
+ .word 0x0001BCDC, 0x0001C2B0
+ .word 0x0001C2B0, 0x0001D580
+ .word 0x0001D580, 0x0001D7A8
+ .word 0x0001D7A8, 0x0001D9D0
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x0001D9D8 ; chunk size
+ .incbin "baserom.nds", 0x476BDC, 0x1D9D0
+ .balign 512, 255
diff --git a/files/FILE_494600_ugeffect_obj_graphic.narc.s b/files/FILE_494600_ugeffect_obj_graphic.narc.s
new file mode 100644
index 00000000..3455e819
--- /dev/null
+++ b/files/FILE_494600_ugeffect_obj_graphic.narc.s
@@ -0,0 +1,37 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00004D68 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000054 ; chunk size
+ .short 9 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00001230
+ .word 0x00001230, 0x00001458
+ .word 0x00001458, 0x00002688
+ .word 0x00002688, 0x000028B0
+ .word 0x000028B0, 0x000029A9
+ .word 0x000029AC, 0x00002B15
+ .word 0x00002B18, 0x00002BEE
+ .word 0x00002BF0, 0x00002CBA
+ .word 0x00002CBC, 0x00004CEC
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00004CF4 ; chunk size
+ .incbin "baserom.nds", 0x49467C, 0x4CEC
+ .balign 512, 255
diff --git a/files/FILE_499400_uground_cell.resdat.s b/files/FILE_499400_uground_cell.resdat.s
new file mode 100644
index 00000000..1bcd3095
--- /dev/null
+++ b/files/FILE_499400_uground_cell.resdat.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x499400, 0x4C
+ .balign 512, 255
diff --git a/files/FILE_499600_uground_cellanm.resdat.s b/files/FILE_499600_uground_cellanm.resdat.s
new file mode 100644
index 00000000..21fbb431
--- /dev/null
+++ b/files/FILE_499600_uground_cellanm.resdat.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x499600, 0x4C
+ .balign 512, 255
diff --git a/files/FILE_499800_uground_char.resdat.s b/files/FILE_499800_uground_char.resdat.s
new file mode 100644
index 00000000..122f5a92
--- /dev/null
+++ b/files/FILE_499800_uground_char.resdat.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x499800, 0x4C
+ .balign 512, 255
diff --git a/files/FILE_499A00_uground_char2.resdat.s b/files/FILE_499A00_uground_char2.resdat.s
new file mode 100644
index 00000000..6cd7298d
--- /dev/null
+++ b/files/FILE_499A00_uground_char2.resdat.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x499A00, 0x4C
+ .balign 512, 255
diff --git a/files/FILE_499C00_uground_clact.cldat.s b/files/FILE_499C00_uground_clact.cldat.s
new file mode 100644
index 00000000..79d7f960
--- /dev/null
+++ b/files/FILE_499C00_uground_clact.cldat.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x499C00, 0x60
+ .balign 512, 255
diff --git a/files/FILE_499E00_uground_pltt.resdat.s b/files/FILE_499E00_uground_pltt.resdat.s
new file mode 100644
index 00000000..d81f847a
--- /dev/null
+++ b/files/FILE_499E00_uground_pltt.resdat.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x499E00, 0x34
+ .balign 512, 255
diff --git a/files/FILE_49A000_uground_pltt2.resdat.s b/files/FILE_49A000_uground_pltt2.resdat.s
new file mode 100644
index 00000000..81782bd8
--- /dev/null
+++ b/files/FILE_49A000_uground_pltt2.resdat.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x49A000, 0x34
+ .balign 512, 255
diff --git a/files/FILE_49A200_underg_radar.narc.s b/files/FILE_49A200_underg_radar.narc.s
new file mode 100644
index 00000000..dc01a7d2
--- /dev/null
+++ b/files/FILE_49A200_underg_radar.narc.s
@@ -0,0 +1,35 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x0000A234 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000044 ; chunk size
+ .short 7 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000228
+ .word 0x00000228, 0x00008268
+ .word 0x00008268, 0x00008A8C
+ .word 0x00008A8C, 0x00008CB4
+ .word 0x00008CB4, 0x00009904
+ .word 0x00009904, 0x00009D86
+ .word 0x00009D88, 0x0000A1C6
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x0000A1D0 ; chunk size
+ .incbin "baserom.nds", 0x49A26C, 0xA1C8
+ .balign 512, 255
diff --git a/files/FILE_4A4600_utility.bin.s b/files/FILE_4A4600_utility.bin.s
new file mode 100644
index 00000000..acbbf403
--- /dev/null
+++ b/files/FILE_4A4600_utility.bin.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x4A4600, 0xDB4C0
+ .balign 512, 255
diff --git a/files/FILE_57FC00_weather_sys.narc.s b/files/FILE_57FC00_weather_sys.narc.s
new file mode 100644
index 00000000..56997d89
--- /dev/null
+++ b/files/FILE_57FC00_weather_sys.narc.s
@@ -0,0 +1,87 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x0000F8A8 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x000001E4 ; chunk size
+ .short 59 ; number of files
+ .balign 4
+ .word 0x00000000, 0x000000EF
+ .word 0x000000F0, 0x00000207
+ .word 0x00000208, 0x00000938
+ .word 0x00000938, 0x00000B60
+ .word 0x00000B60, 0x00000BEB
+ .word 0x00000BEC, 0x00000C83
+ .word 0x00000C84, 0x00000E94
+ .word 0x00000E94, 0x000010BC
+ .word 0x000010BC, 0x000050FC
+ .word 0x000050FC, 0x00005324
+ .word 0x00005324, 0x00005B48
+ .word 0x00005B48, 0x00005BD3
+ .word 0x00005BD4, 0x00005C7F
+ .word 0x00005C80, 0x000062F0
+ .word 0x000062F0, 0x0000637B
+ .word 0x0000637C, 0x00006407
+ .word 0x00006408, 0x00006638
+ .word 0x00006638, 0x00006860
+ .word 0x00006860, 0x000068EB
+ .word 0x000068EC, 0x00006977
+ .word 0x00006978, 0x00006A28
+ .word 0x00006A28, 0x00006C50
+ .word 0x00006C50, 0x00006DA3
+ .word 0x00006DA4, 0x00006F47
+ .word 0x00006F48, 0x00007278
+ .word 0x00007278, 0x000074A0
+ .word 0x000074A0, 0x0000752B
+ .word 0x0000752C, 0x000075B7
+ .word 0x000075B8, 0x00007668
+ .word 0x00007668, 0x000076C8
+ .word 0x000076C8, 0x000078F0
+ .word 0x000078F0, 0x00008114
+ .word 0x00008114, 0x000081AB
+ .word 0x000081AC, 0x00008247
+ .word 0x00008248, 0x00008378
+ .word 0x00008378, 0x000085A0
+ .word 0x000085A0, 0x0000A5E0
+ .word 0x0000A5E0, 0x0000A808
+ .word 0x0000A808, 0x0000B02C
+ .word 0x0000B02C, 0x0000B0B7
+ .word 0x0000B0B8, 0x0000B143
+ .word 0x0000B144, 0x0000B1F4
+ .word 0x0000B1F4, 0x0000B41C
+ .word 0x0000B41C, 0x0000BC40
+ .word 0x0000BC40, 0x0000C480
+ .word 0x0000C480, 0x0000C4E0
+ .word 0x0000C4E0, 0x0000C708
+ .word 0x0000C708, 0x0000CF2C
+ .word 0x0000CF2C, 0x0000D76C
+ .word 0x0000D76C, 0x0000D994
+ .word 0x0000D994, 0x0000E1B8
+ .word 0x0000E1B8, 0x0000E3E0
+ .word 0x0000E3E0, 0x0000E608
+ .word 0x0000E608, 0x0000EA48
+ .word 0x0000EA48, 0x0000F26C
+ .word 0x0000F26C, 0x0000F378
+ .word 0x0000F378, 0x0000F484
+ .word 0x0000F484, 0x0000F590
+ .word 0x0000F590, 0x0000F69C
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x0000F6A4 ; chunk size
+ .incbin "baserom.nds", 0x57FE0C, 0xF69C
+ .balign 512, 255
diff --git a/files/FILE_58F600_wifi.ncgr.s b/files/FILE_58F600_wifi.ncgr.s
new file mode 100644
index 00000000..6ce418e9
--- /dev/null
+++ b/files/FILE_58F600_wifi.ncgr.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x58F600, 0x240
+ .balign 512, 255
diff --git a/files/FILE_58FA00_wifinote.narc.s b/files/FILE_58FA00_wifinote.narc.s
new file mode 100644
index 00000000..9a41e6a2
--- /dev/null
+++ b/files/FILE_58FA00_wifinote.narc.s
@@ -0,0 +1,40 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x0000394C ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x0000006C ; chunk size
+ .short 12 ; number of files
+ .balign 4
+ .word 0x00000000, 0x0000009F
+ .word 0x000000A0, 0x00000147
+ .word 0x00000148, 0x00000D88
+ .word 0x00000D88, 0x00000FB0
+ .word 0x00000FB0, 0x000015D4
+ .word 0x000015D4, 0x00001BF8
+ .word 0x00001BF8, 0x0000221C
+ .word 0x0000221C, 0x00002840
+ .word 0x00002840, 0x00002E64
+ .word 0x00002E64, 0x00002ED4
+ .word 0x00002ED4, 0x00003294
+ .word 0x00003294, 0x000038B8
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x000038C0 ; chunk size
+ .incbin "baserom.nds", 0x58FA94, 0x38B8
+ .balign 512, 255
diff --git a/files/FILE_593400_wifip2pmatch.narc.s b/files/FILE_593400_wifip2pmatch.narc.s
new file mode 100644
index 00000000..7947eb3d
--- /dev/null
+++ b/files/FILE_593400_wifip2pmatch.narc.s
@@ -0,0 +1,39 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00003E14 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00000064 ; chunk size
+ .short 11 ; number of files
+ .balign 4
+ .word 0x00000000, 0x0000013A
+ .word 0x0000013C, 0x00000236
+ .word 0x00000238, 0x00000DB8
+ .word 0x00000DB8, 0x00000FE0
+ .word 0x00000FE0, 0x00001604
+ .word 0x00001604, 0x00001C28
+ .word 0x00001C28, 0x0000224C
+ .word 0x0000224C, 0x000024FC
+ .word 0x000024FC, 0x00002724
+ .word 0x00002724, 0x00003764
+ .word 0x00003764, 0x00003D88
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00003D90 ; chunk size
+ .incbin "baserom.nds", 0x59348C, 0x3D88
+ .balign 512, 255
diff --git a/files/FILE_597400_wm.ncgr.s b/files/FILE_597400_wm.ncgr.s
new file mode 100644
index 00000000..2bc9abdf
--- /dev/null
+++ b/files/FILE_597400_wm.ncgr.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x597400, 0x240
+ .balign 512, 255
diff --git a/files/FILE_597800_wm.nclr.s b/files/FILE_597800_wm.nclr.s
new file mode 100644
index 00000000..75830ff4
--- /dev/null
+++ b/files/FILE_597800_wm.nclr.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x597800, 0x228
+ .balign 512, 255
diff --git a/files/FILE_597C00_sound_data.sdat.s b/files/FILE_597C00_sound_data.sdat.s
new file mode 100644
index 00000000..c1134756
--- /dev/null
+++ b/files/FILE_597C00_sound_data.sdat.s
@@ -0,0 +1,4 @@
+ .include "asm/macros.inc"
+ .text
+ .incbin "baserom.nds", 0x597C00, 0x723560
+ .balign 512, 255
diff --git a/files/FILE_CBB200_msg.narc.s b/files/FILE_CBB200_msg.narc.s
new file mode 100644
index 00000000..4d89d15f
--- /dev/null
+++ b/files/FILE_CBB200_msg.narc.s
@@ -0,0 +1,652 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00292010 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x0000138C ; chunk size
+ .short 624 ; number of files
+ .balign 4
+ .word 0x00000000, 0x000157D6
+ .word 0x000157D8, 0x000159A2
+ .word 0x000159A4, 0x00016106
+ .word 0x00016108, 0x00016C56
+ .word 0x00016C58, 0x00016DAE
+ .word 0x00016DB0, 0x00016F3A
+ .word 0x00016F3C, 0x00017124
+ .word 0x00017124, 0x0001825E
+ .word 0x00018260, 0x00018544
+ .word 0x00018544, 0x00018DB6
+ .word 0x00018DB8, 0x000196EA
+ .word 0x000196EC, 0x0001A0BE
+ .word 0x0001A0C0, 0x0001A90A
+ .word 0x0001A90C, 0x0001AC66
+ .word 0x0001AC68, 0x0001B342
+ .word 0x0001B344, 0x0001BA92
+ .word 0x0001BA94, 0x0001D3DA
+ .word 0x0001D3DC, 0x0001D84E
+ .word 0x0001D850, 0x00021EB8
+ .word 0x00021EB8, 0x0002204E
+ .word 0x00022050, 0x000220AE
+ .word 0x000220B0, 0x000224C6
+ .word 0x000224C8, 0x000231B8
+ .word 0x000231B8, 0x00023452
+ .word 0x00023454, 0x00025320
+ .word 0x00025320, 0x000274A4
+ .word 0x000274A4, 0x000276B6
+ .word 0x000276B8, 0x000281F2
+ .word 0x000281F4, 0x00028382
+ .word 0x00028384, 0x00029196
+ .word 0x00029198, 0x0002951E
+ .word 0x00029520, 0x0002974A
+ .word 0x0002974C, 0x0002997A
+ .word 0x0002997C, 0x00029BFE
+ .word 0x00029C00, 0x00029DA6
+ .word 0x00029DA8, 0x00029E82
+ .word 0x00029E84, 0x00029ED2
+ .word 0x00029ED4, 0x0002A2CE
+ .word 0x0002A2D0, 0x0002A630
+ .word 0x0002A630, 0x0002A7B6
+ .word 0x0002A7B8, 0x0002A9CE
+ .word 0x0002A9D0, 0x0002BA0C
+ .word 0x0002BA0C, 0x0002D660
+ .word 0x0002D660, 0x0002D8EC
+ .word 0x0002D8EC, 0x0002DC3A
+ .word 0x0002DC3C, 0x0002DCCC
+ .word 0x0002DCCC, 0x0002DD7C
+ .word 0x0002DD7C, 0x0002FBB4
+ .word 0x0002FBB4, 0x0002FD02
+ .word 0x0002FD04, 0x00030942
+ .word 0x00030944, 0x00030BF4
+ .word 0x00030BF4, 0x00031104
+ .word 0x00031104, 0x000313EA
+ .word 0x000313EC, 0x00034DF4
+ .word 0x00034DF4, 0x000351BE
+ .word 0x000351C0, 0x00035634
+ .word 0x00035634, 0x0003578A
+ .word 0x0003578C, 0x000360C8
+ .word 0x000360C8, 0x000378D8
+ .word 0x000378D8, 0x00037B06
+ .word 0x00037B08, 0x00038A70
+ .word 0x00038A70, 0x0003900A
+ .word 0x0003900C, 0x00039188
+ .word 0x00039188, 0x00039412
+ .word 0x00039414, 0x0003974E
+ .word 0x00039750, 0x00039912
+ .word 0x00039914, 0x00039A36
+ .word 0x00039A38, 0x00039E92
+ .word 0x00039E94, 0x0003A3AC
+ .word 0x0003A3AC, 0x0003A592
+ .word 0x0003A594, 0x0003A740
+ .word 0x0003A740, 0x0003A8FC
+ .word 0x0003A8FC, 0x0003B9A2
+ .word 0x0003B9A4, 0x0003BC6C
+ .word 0x0003BC6C, 0x0003BE58
+ .word 0x0003BE58, 0x0003C268
+ .word 0x0003C268, 0x0003C3BC
+ .word 0x0003C3BC, 0x0003C4EA
+ .word 0x0003C4EC, 0x0003E0B0
+ .word 0x0003E0B0, 0x0003E25C
+ .word 0x0003E25C, 0x0003E9C8
+ .word 0x0003E9C8, 0x0003F6B0
+ .word 0x0003F6B0, 0x0003FDF4
+ .word 0x0003FDF4, 0x0003FF0A
+ .word 0x0003FF0C, 0x0004061C
+ .word 0x0004061C, 0x00040838
+ .word 0x00040838, 0x000409D6
+ .word 0x000409D8, 0x00040AEE
+ .word 0x00040AF0, 0x000412F8
+ .word 0x000412F8, 0x00041E80
+ .word 0x00041E80, 0x00042198
+ .word 0x00042198, 0x000424C8
+ .word 0x000424C8, 0x00042704
+ .word 0x00042704, 0x00043142
+ .word 0x00043144, 0x00043382
+ .word 0x00043384, 0x000436CE
+ .word 0x000436D0, 0x000438FC
+ .word 0x000438FC, 0x000489DA
+ .word 0x000489DC, 0x0004C2F4
+ .word 0x0004C2F4, 0x0004C492
+ .word 0x0004C494, 0x0004CE16
+ .word 0x0004CE18, 0x0004CEF2
+ .word 0x0004CEF4, 0x0004CFCE
+ .word 0x0004CFD0, 0x0004D0BC
+ .word 0x0004D0BC, 0x0004D8B8
+ .word 0x0004D8B8, 0x0004DD2E
+ .word 0x0004DD30, 0x0004DF18
+ .word 0x0004DF18, 0x0004E0F6
+ .word 0x0004E0F8, 0x0004E13E
+ .word 0x0004E140, 0x0004ECDE
+ .word 0x0004ECE0, 0x0004EEA0
+ .word 0x0004EEA0, 0x0004F004
+ .word 0x0004F004, 0x0004F1EE
+ .word 0x0004F1F0, 0x0004F2AC
+ .word 0x0004F2AC, 0x0004F624
+ .word 0x0004F624, 0x0004FBE0
+ .word 0x0004FBE0, 0x0004FFB2
+ .word 0x0004FFB4, 0x0004FFFA
+ .word 0x0004FFFC, 0x000509EA
+ .word 0x000509EC, 0x00050E4A
+ .word 0x00050E4C, 0x00052696
+ .word 0x00052698, 0x00052BF0
+ .word 0x00052BF0, 0x00053304
+ .word 0x00053304, 0x00055074
+ .word 0x00055074, 0x00055354
+ .word 0x00055354, 0x00055FD6
+ .word 0x00055FD8, 0x00056244
+ .word 0x00056244, 0x0005634E
+ .word 0x00056350, 0x00056DEC
+ .word 0x00056DEC, 0x00057286
+ .word 0x00057288, 0x00057566
+ .word 0x00057568, 0x00057A4A
+ .word 0x00057A4C, 0x000582AE
+ .word 0x000582B0, 0x000583D8
+ .word 0x000583D8, 0x00058E34
+ .word 0x00058E34, 0x0005BEEC
+ .word 0x0005BEEC, 0x0005CA3A
+ .word 0x0005CA3C, 0x0005CBFE
+ .word 0x0005CC00, 0x0005CC9C
+ .word 0x0005CC9C, 0x0005E0B6
+ .word 0x0005E0B8, 0x0005E51C
+ .word 0x0005E51C, 0x0005EC96
+ .word 0x0005EC98, 0x0005F2F0
+ .word 0x0005F2F0, 0x0005F886
+ .word 0x0005F888, 0x0005FE8C
+ .word 0x0005FE8C, 0x000602DC
+ .word 0x000602DC, 0x00060BEC
+ .word 0x00060BEC, 0x00060F7A
+ .word 0x00060F7C, 0x000612DC
+ .word 0x000612DC, 0x000614C4
+ .word 0x000614C4, 0x000615E8
+ .word 0x000615E8, 0x00061BCE
+ .word 0x00061BD0, 0x00061D7E
+ .word 0x00061D80, 0x0006363A
+ .word 0x0006363C, 0x000638CA
+ .word 0x000638CC, 0x00064048
+ .word 0x00064048, 0x00064AE4
+ .word 0x00064AE4, 0x00064F4C
+ .word 0x00064F4C, 0x00065610
+ .word 0x00065610, 0x00066CB2
+ .word 0x00066CB4, 0x0006736A
+ .word 0x0006736C, 0x000675F6
+ .word 0x000675F8, 0x00067B00
+ .word 0x00067B00, 0x00067E8C
+ .word 0x00067E8C, 0x000685FC
+ .word 0x000685FC, 0x00068E54
+ .word 0x00068E54, 0x000695C0
+ .word 0x000695C0, 0x0006A192
+ .word 0x0006A194, 0x0006A418
+ .word 0x0006A418, 0x0006AFE0
+ .word 0x0006AFE0, 0x0006B190
+ .word 0x0006B190, 0x0006B650
+ .word 0x0006B650, 0x0006B944
+ .word 0x0006B944, 0x0006BA06
+ .word 0x0006BA08, 0x0006BAF0
+ .word 0x0006BAF0, 0x0006C4C8
+ .word 0x0006C4C8, 0x0006CB00
+ .word 0x0006CB00, 0x0006CF70
+ .word 0x0006CF70, 0x0006D678
+ .word 0x0006D678, 0x0006DC9E
+ .word 0x0006DCA0, 0x0006E8C8
+ .word 0x0006E8C8, 0x0006EDBC
+ .word 0x0006EDBC, 0x0006F470
+ .word 0x0006F470, 0x00070D72
+ .word 0x00070D74, 0x00070FBE
+ .word 0x00070FC0, 0x000711D2
+ .word 0x000711D4, 0x00072B7A
+ .word 0x00072B7C, 0x00072C88
+ .word 0x00072C88, 0x00072E4E
+ .word 0x00072E50, 0x0007319A
+ .word 0x0007319C, 0x000733AC
+ .word 0x000733AC, 0x00074D60
+ .word 0x00074D60, 0x00075D22
+ .word 0x00075D24, 0x0007675C
+ .word 0x0007675C, 0x00076860
+ .word 0x00076860, 0x00076AC8
+ .word 0x00076AC8, 0x000771C2
+ .word 0x000771C4, 0x000781B0
+ .word 0x000781B0, 0x00078FFC
+ .word 0x00078FFC, 0x0007D3D8
+ .word 0x0007D3D8, 0x0007DA52
+ .word 0x0007DA54, 0x0007DA72
+ .word 0x0007DA74, 0x0007DC76
+ .word 0x0007DC78, 0x0008435E
+ .word 0x00084360, 0x0008470E
+ .word 0x00084710, 0x000847BE
+ .word 0x000847C0, 0x00084B9C
+ .word 0x00084B9C, 0x00087FA0
+ .word 0x00087FA0, 0x00088128
+ .word 0x00088128, 0x000884C6
+ .word 0x000884C8, 0x00088A6C
+ .word 0x00088A6C, 0x00089902
+ .word 0x00089904, 0x00089B70
+ .word 0x00089B70, 0x0008A848
+ .word 0x0008A848, 0x0008A8A6
+ .word 0x0008A8A8, 0x0008ABD8
+ .word 0x0008ABD8, 0x0008B0D0
+ .word 0x0008B0D0, 0x0008B154
+ .word 0x0008B154, 0x0008B20C
+ .word 0x0008B20C, 0x0008B38C
+ .word 0x0008B38C, 0x0008EADA
+ .word 0x0008EADC, 0x0008EB4C
+ .word 0x0008EB4C, 0x0008EC22
+ .word 0x0008EC24, 0x0008EDB2
+ .word 0x0008EDB4, 0x0008EE64
+ .word 0x0008EE64, 0x0008F0BA
+ .word 0x0008F0BC, 0x0008F20C
+ .word 0x0008F20C, 0x0008F394
+ .word 0x0008F394, 0x0008F594
+ .word 0x0008F594, 0x0008F5A6
+ .word 0x0008F5A8, 0x0008F62C
+ .word 0x0008F62C, 0x0008F75C
+ .word 0x0008F75C, 0x0008F7FC
+ .word 0x0008F7FC, 0x0008FC56
+ .word 0x0008FC58, 0x000901C2
+ .word 0x000901C4, 0x00090690
+ .word 0x00090690, 0x000918F8
+ .word 0x000918F8, 0x00091A00
+ .word 0x00091A00, 0x000925D0
+ .word 0x000925D0, 0x00092854
+ .word 0x00092854, 0x00092D74
+ .word 0x00092D74, 0x00092E2E
+ .word 0x00092E30, 0x00093104
+ .word 0x00093104, 0x000931CA
+ .word 0x000931CC, 0x00093214
+ .word 0x00093214, 0x0009374C
+ .word 0x0009374C, 0x000941F8
+ .word 0x000941F8, 0x000946C2
+ .word 0x000946C4, 0x00094800
+ .word 0x00094800, 0x00094820
+ .word 0x00094820, 0x00094956
+ .word 0x00094958, 0x000949D6
+ .word 0x000949D8, 0x00094D70
+ .word 0x00094D70, 0x0009541A
+ .word 0x0009541C, 0x000959CE
+ .word 0x000959D0, 0x00095F16
+ .word 0x00095F18, 0x00095FFC
+ .word 0x00095FFC, 0x0009610C
+ .word 0x0009610C, 0x0009755E
+ .word 0x00097560, 0x00097918
+ .word 0x00097918, 0x0009796E
+ .word 0x00097970, 0x00097B82
+ .word 0x00097B84, 0x00098A1E
+ .word 0x00098A20, 0x000990B4
+ .word 0x000990B4, 0x000993E0
+ .word 0x000993E0, 0x0009AEF4
+ .word 0x0009AEF4, 0x0009B04A
+ .word 0x0009B04C, 0x0009B2EA
+ .word 0x0009B2EC, 0x0009BEAE
+ .word 0x0009BEB0, 0x0009C08A
+ .word 0x0009C08C, 0x0009E0A6
+ .word 0x0009E0A8, 0x0009F66A
+ .word 0x0009F66C, 0x0009FE24
+ .word 0x0009FE24, 0x000A025E
+ .word 0x000A0260, 0x000A0994
+ .word 0x000A0994, 0x000A0FFC
+ .word 0x000A0FFC, 0x000A13AC
+ .word 0x000A13AC, 0x000A1AEC
+ .word 0x000A1AEC, 0x000A1B68
+ .word 0x000A1B68, 0x000A1C78
+ .word 0x000A1C78, 0x000A1CFE
+ .word 0x000A1D00, 0x000A2ACE
+ .word 0x000A2AD0, 0x000A342E
+ .word 0x000A3430, 0x000AA1EC
+ .word 0x000AA1EC, 0x000AB172
+ .word 0x000AB174, 0x000AB4E6
+ .word 0x000AB4E8, 0x000AC05E
+ .word 0x000AC060, 0x000AC5D6
+ .word 0x000AC5D8, 0x000AD656
+ .word 0x000AD658, 0x000ADA12
+ .word 0x000ADA14, 0x000AE604
+ .word 0x000AE604, 0x000AEE5A
+ .word 0x000AEE5C, 0x000AF07E
+ .word 0x000AF080, 0x000B0402
+ .word 0x000B0404, 0x000B069C
+ .word 0x000B069C, 0x000B06BE
+ .word 0x000B06C0, 0x000B095C
+ .word 0x000B095C, 0x000B0C64
+ .word 0x000B0C64, 0x000B18E4
+ .word 0x000B18E4, 0x000B2056
+ .word 0x000B2058, 0x000B2D2C
+ .word 0x000B2D2C, 0x000B3466
+ .word 0x000B3468, 0x000B3598
+ .word 0x000B3598, 0x000B3AFA
+ .word 0x000B3AFC, 0x000B3D4A
+ .word 0x000B3D4C, 0x000B3FBA
+ .word 0x000B3FBC, 0x000B41A4
+ .word 0x000B41A4, 0x000B54EC
+ .word 0x000B54EC, 0x000B584A
+ .word 0x000B584C, 0x000B5AC4
+ .word 0x000B5AC4, 0x000B5FC4
+ .word 0x000B5FC4, 0x000B6104
+ .word 0x000B6104, 0x000B6400
+ .word 0x000B6400, 0x000B64C4
+ .word 0x000B64C4, 0x000B85FE
+ .word 0x000B8600, 0x000B9556
+ .word 0x000B9558, 0x000B9BD8
+ .word 0x000B9BD8, 0x000B9C10
+ .word 0x000B9C10, 0x000BA1A8
+ .word 0x000BA1A8, 0x000BA276
+ .word 0x000BA278, 0x000BA586
+ .word 0x000BA588, 0x000BC650
+ .word 0x000BC650, 0x000BD748
+ .word 0x000BD748, 0x000BD862
+ .word 0x000BD864, 0x000D5B96
+ .word 0x000D5B98, 0x000D5E32
+ .word 0x000D5E34, 0x000D5EE4
+ .word 0x000D5EE4, 0x000D5F60
+ .word 0x000D5F60, 0x000D63BC
+ .word 0x000D63BC, 0x000D6F6A
+ .word 0x000D6F6C, 0x000D7D2A
+ .word 0x000D7D2C, 0x000D7E44
+ .word 0x000D7E44, 0x000D87A6
+ .word 0x000D87A8, 0x000D8A62
+ .word 0x000D8A64, 0x000D9512
+ .word 0x000D9514, 0x000DBA66
+ .word 0x000DBA68, 0x000DBAE4
+ .word 0x000DBAE4, 0x000DCEA2
+ .word 0x000DCEA4, 0x000DDB52
+ .word 0x000DDB54, 0x000DEFD2
+ .word 0x000DEFD4, 0x000DF1E4
+ .word 0x000DF1E4, 0x000E0A46
+ .word 0x000E0A48, 0x000E2DF4
+ .word 0x000E2DF4, 0x000F7C70
+ .word 0x000F7C70, 0x000FAD86
+ .word 0x000FAD88, 0x000FDEA0
+ .word 0x000FDEA0, 0x00103298
+ .word 0x00103298, 0x001067BA
+ .word 0x001067BC, 0x00106890
+ .word 0x00106890, 0x001069F4
+ .word 0x001069F4, 0x00107296
+ .word 0x00107298, 0x00107400
+ .word 0x00107400, 0x001076D2
+ .word 0x001076D4, 0x00107720
+ .word 0x00107720, 0x00108BDE
+ .word 0x00108BE0, 0x0011242C
+ .word 0x0011242C, 0x00112564
+ .word 0x00112564, 0x00112D22
+ .word 0x00112D24, 0x001130B4
+ .word 0x001130B4, 0x001131C4
+ .word 0x001131C4, 0x0011349A
+ .word 0x0011349C, 0x00113558
+ .word 0x00113558, 0x001164EC
+ .word 0x001164EC, 0x0011BB82
+ .word 0x0011BB84, 0x0011BC5E
+ .word 0x0011BC60, 0x00125336
+ .word 0x00125338, 0x0012DB8A
+ .word 0x0012DB8C, 0x0012FA8A
+ .word 0x0012FA8C, 0x001379E2
+ .word 0x001379E4, 0x00137F06
+ .word 0x00137F08, 0x0013954E
+ .word 0x00139550, 0x001396C2
+ .word 0x001396C4, 0x0013CAEC
+ .word 0x0013CAEC, 0x0013D018
+ .word 0x0013D018, 0x0013D37E
+ .word 0x0013D380, 0x0013E108
+ .word 0x0013E108, 0x0013E830
+ .word 0x0013E830, 0x0013ECFC
+ .word 0x0013ECFC, 0x0014136E
+ .word 0x00141370, 0x00141F94
+ .word 0x00141F94, 0x001421EA
+ .word 0x001421EC, 0x00142C3C
+ .word 0x00142C3C, 0x00143AE4
+ .word 0x00143AE4, 0x00144630
+ .word 0x00144630, 0x00144762
+ .word 0x00144764, 0x001448B4
+ .word 0x001448B4, 0x00144B76
+ .word 0x00144B78, 0x00144BAA
+ .word 0x00144BAC, 0x00144F1A
+ .word 0x00144F1C, 0x00145204
+ .word 0x00145204, 0x00145B3E
+ .word 0x00145B40, 0x00146480
+ .word 0x00146480, 0x0014690C
+ .word 0x0014690C, 0x00146C84
+ .word 0x00146C84, 0x00146ED8
+ .word 0x00146ED8, 0x001473C6
+ .word 0x001473C8, 0x001477BC
+ .word 0x001477BC, 0x00147BA2
+ .word 0x00147BA4, 0x0014803A
+ .word 0x0014803C, 0x0014846C
+ .word 0x0014846C, 0x00149424
+ .word 0x00149424, 0x001496BC
+ .word 0x001496BC, 0x0014B984
+ .word 0x0014B984, 0x0014CE6C
+ .word 0x0014CE6C, 0x0014F4A2
+ .word 0x0014F4A4, 0x0014F5BA
+ .word 0x0014F5BC, 0x0014F908
+ .word 0x0014F908, 0x0014F936
+ .word 0x0014F938, 0x0014F954
+ .word 0x0014F954, 0x001501F0
+ .word 0x001501F0, 0x00150414
+ .word 0x00150414, 0x001504DC
+ .word 0x001504DC, 0x0015077A
+ .word 0x0015077C, 0x00150C4E
+ .word 0x00150C50, 0x001510FA
+ .word 0x001510FC, 0x0015242E
+ .word 0x00152430, 0x001536A4
+ .word 0x001536A4, 0x00153DA0
+ .word 0x00153DA0, 0x00153EF6
+ .word 0x00153EF8, 0x001544E2
+ .word 0x001544E4, 0x00154E2C
+ .word 0x00154E2C, 0x00154FF8
+ .word 0x00154FF8, 0x001550DC
+ .word 0x001550DC, 0x001552E4
+ .word 0x001552E4, 0x00155664
+ .word 0x00155664, 0x0015572C
+ .word 0x0015572C, 0x0015671C
+ .word 0x0015671C, 0x00156A70
+ .word 0x00156A70, 0x0015737E
+ .word 0x00157380, 0x001581A8
+ .word 0x001581A8, 0x0015823E
+ .word 0x00158240, 0x001587C4
+ .word 0x001587C4, 0x001592DE
+ .word 0x001592E0, 0x0015993A
+ .word 0x0015993C, 0x00159AA6
+ .word 0x00159AA8, 0x0015A548
+ .word 0x0015A548, 0x0015A652
+ .word 0x0015A654, 0x0015AC22
+ .word 0x0015AC24, 0x0015B0D2
+ .word 0x0015B0D4, 0x0015B3B4
+ .word 0x0015B3B4, 0x0015B602
+ .word 0x0015B604, 0x0015CCA0
+ .word 0x0015CCA0, 0x0015D1E8
+ .word 0x0015D1E8, 0x0015D83E
+ .word 0x0015D840, 0x0015DF66
+ .word 0x0015DF68, 0x0015E0CA
+ .word 0x0015E0CC, 0x00161F7A
+ .word 0x00161F7C, 0x00162200
+ .word 0x00162200, 0x0016268C
+ .word 0x0016268C, 0x00162FFC
+ .word 0x00162FFC, 0x001633A8
+ .word 0x001633A8, 0x00163410
+ .word 0x00163410, 0x001636F6
+ .word 0x001636F8, 0x00163C7C
+ .word 0x00163C7C, 0x00163D94
+ .word 0x00163D94, 0x0016404C
+ .word 0x0016404C, 0x001641F8
+ .word 0x001641F8, 0x0016475A
+ .word 0x0016475C, 0x001648AC
+ .word 0x001648AC, 0x00164918
+ .word 0x00164918, 0x00164E9A
+ .word 0x00164E9C, 0x001657AA
+ .word 0x001657AC, 0x001657E4
+ .word 0x001657E4, 0x00165926
+ .word 0x00165928, 0x00169C68
+ .word 0x00169C68, 0x0016A2C4
+ .word 0x0016A2C4, 0x0016A8CC
+ .word 0x0016A8CC, 0x0016AA4E
+ .word 0x0016AA50, 0x0016B190
+ .word 0x0016B190, 0x0016B356
+ .word 0x0016B358, 0x0016BE42
+ .word 0x0016BE44, 0x0016BEAA
+ .word 0x0016BEAC, 0x0016BFF2
+ .word 0x0016BFF4, 0x0016C02C
+ .word 0x0016C02C, 0x0016CA28
+ .word 0x0016CA28, 0x0016CD36
+ .word 0x0016CD38, 0x0016CD8C
+ .word 0x0016CD8C, 0x0016CF68
+ .word 0x0016CF68, 0x0016DA82
+ .word 0x0016DA84, 0x0016DD9A
+ .word 0x0016DD9C, 0x0016DFFE
+ .word 0x0016E000, 0x0016E960
+ .word 0x0016E960, 0x0016EF84
+ .word 0x0016EF84, 0x0016F05A
+ .word 0x0016F05C, 0x001783F8
+ .word 0x001783F8, 0x0017868A
+ .word 0x0017868C, 0x001788A8
+ .word 0x001788A8, 0x00179DDA
+ .word 0x00179DDC, 0x0017A384
+ .word 0x0017A384, 0x0017A4C8
+ .word 0x0017A4C8, 0x001805F2
+ .word 0x001805F4, 0x001806DC
+ .word 0x001806DC, 0x00181A42
+ .word 0x00181A44, 0x00184346
+ .word 0x00184348, 0x001845F8
+ .word 0x001845F8, 0x001846CE
+ .word 0x001846D0, 0x00186228
+ .word 0x00186228, 0x00186252
+ .word 0x00186254, 0x00186BC6
+ .word 0x00186BC8, 0x001872F8
+ .word 0x001872F8, 0x00187604
+ .word 0x00187604, 0x00189C7A
+ .word 0x00189C7C, 0x0018A15A
+ .word 0x0018A15C, 0x0018A2DE
+ .word 0x0018A2E0, 0x0018A5B6
+ .word 0x0018A5B8, 0x0018BD26
+ .word 0x0018BD28, 0x0018BEE6
+ .word 0x0018BEE8, 0x0018C1CC
+ .word 0x0018C1CC, 0x0018C22A
+ .word 0x0018C22C, 0x0018FB80
+ .word 0x0018FB80, 0x00190502
+ .word 0x00190504, 0x00190696
+ .word 0x00190698, 0x0019089E
+ .word 0x001908A0, 0x00191908
+ .word 0x00191908, 0x00191AD4
+ .word 0x00191AD4, 0x00191DCC
+ .word 0x00191DCC, 0x001925AA
+ .word 0x001925AC, 0x0019272A
+ .word 0x0019272C, 0x00192C10
+ .word 0x00192C10, 0x00193556
+ .word 0x00193558, 0x001936C2
+ .word 0x001936C4, 0x00193834
+ .word 0x00193834, 0x00193C46
+ .word 0x00193C48, 0x00193DFA
+ .word 0x00193DFC, 0x001952B8
+ .word 0x001952B8, 0x001954EE
+ .word 0x001954F0, 0x00195B90
+ .word 0x00195B90, 0x00197110
+ .word 0x00197110, 0x00197602
+ .word 0x00197604, 0x001982F6
+ .word 0x001982F8, 0x001988D2
+ .word 0x001988D4, 0x00198A46
+ .word 0x00198A48, 0x00198C68
+ .word 0x00198C68, 0x00199596
+ .word 0x00199598, 0x00199FA8
+ .word 0x00199FA8, 0x0019A118
+ .word 0x0019A118, 0x0019A504
+ .word 0x0019A504, 0x0019ABD2
+ .word 0x0019ABD4, 0x0019AE0A
+ .word 0x0019AE0C, 0x0019AF18
+ .word 0x0019AF18, 0x0019B3CA
+ .word 0x0019B3CC, 0x0019B3FE
+ .word 0x0019B400, 0x0019B63C
+ .word 0x0019B63C, 0x0019C954
+ .word 0x0019C954, 0x0019D0C4
+ .word 0x0019D0C4, 0x0019D260
+ .word 0x0019D260, 0x0019D702
+ .word 0x0019D704, 0x0019DA20
+ .word 0x0019DA20, 0x0019DAAC
+ .word 0x0019DAAC, 0x0019DC36
+ .word 0x0019DC38, 0x0019DCAE
+ .word 0x0019DCB0, 0x0019DCD4
+ .word 0x0019DCD4, 0x0019EA8C
+ .word 0x0019EA8C, 0x0019F844
+ .word 0x0019F844, 0x001A248C
+ .word 0x001A248C, 0x001B4F66
+ .word 0x001B4F68, 0x001BAC90
+ .word 0x001BAC90, 0x001BAEAC
+ .word 0x001BAEAC, 0x0020361E
+ .word 0x00203620, 0x002078B6
+ .word 0x002078B8, 0x002082F8
+ .word 0x002082F8, 0x00208EDE
+ .word 0x00208EE0, 0x00209B38
+ .word 0x00209B38, 0x0020D220
+ .word 0x0020D220, 0x0020E7B4
+ .word 0x0020E7B4, 0x0020E928
+ .word 0x0020E928, 0x0020EB6A
+ .word 0x0020EB6C, 0x002130A2
+ .word 0x002130A4, 0x00214BC0
+ .word 0x00214BC0, 0x00217286
+ .word 0x00217288, 0x00217E92
+ .word 0x00217E94, 0x002193C2
+ .word 0x002193C4, 0x00219A78
+ .word 0x00219A78, 0x00219FD4
+ .word 0x00219FD4, 0x0021A1BE
+ .word 0x0021A1C0, 0x0021D726
+ .word 0x0021D728, 0x00223618
+ .word 0x00223618, 0x00224F4A
+ .word 0x00224F4C, 0x0022562C
+ .word 0x0022562C, 0x00225F6A
+ .word 0x00225F6C, 0x00226F0E
+ .word 0x00226F10, 0x00227BD8
+ .word 0x00227BD8, 0x00227D76
+ .word 0x00227D78, 0x00227DD8
+ .word 0x00227DD8, 0x00228B54
+ .word 0x00228B54, 0x00228EA0
+ .word 0x00228EA0, 0x002298A0
+ .word 0x002298A0, 0x0023E902
+ .word 0x0023E904, 0x00241C66
+ .word 0x00241C68, 0x00244FCA
+ .word 0x00244FCC, 0x00245652
+ .word 0x00245654, 0x00246F5A
+ .word 0x00246F5C, 0x00248126
+ .word 0x00248128, 0x002489BA
+ .word 0x002489BC, 0x00248C90
+ .word 0x00248C90, 0x00248D88
+ .word 0x00248D88, 0x002490A8
+ .word 0x002490A8, 0x00249290
+ .word 0x00249290, 0x00249586
+ .word 0x00249588, 0x002497C2
+ .word 0x002497C4, 0x002499E4
+ .word 0x002499E4, 0x00249AB2
+ .word 0x00249AB4, 0x00249D84
+ .word 0x00249D84, 0x00249F7A
+ .word 0x00249F7C, 0x0024A3C8
+ .word 0x0024A3C8, 0x0024A610
+ .word 0x0024A610, 0x0024AAFC
+ .word 0x0024AAFC, 0x0024AD42
+ .word 0x0024AD44, 0x0024AF6C
+ .word 0x0024AF6C, 0x0024B12C
+ .word 0x0024B12C, 0x0024B400
+ .word 0x0024B400, 0x0024B97E
+ .word 0x0024B980, 0x0024D500
+ .word 0x0024D500, 0x0024EF66
+ .word 0x0024EF68, 0x0024FB04
+ .word 0x0024FB04, 0x002672CA
+ .word 0x002672CC, 0x0027EB90
+ .word 0x0027EB90, 0x00282870
+ .word 0x00282870, 0x00283B94
+ .word 0x00283B94, 0x00287958
+ .word 0x00287958, 0x0028A7AC
+ .word 0x0028A7AC, 0x0028F5C8
+ .word 0x0028F5C8, 0x002900DE
+ .word 0x002900E0, 0x00290C5C
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00290C64 ; chunk size
+ .incbin "baserom.nds", 0xCBC5B4, 0x290C5C
+ .balign 512, 255
diff --git a/files/FILE_F4D400_scr_msg.narc.s b/files/FILE_F4D400_scr_msg.narc.s
new file mode 100644
index 00000000..62a75c80
--- /dev/null
+++ b/files/FILE_F4D400_scr_msg.narc.s
@@ -0,0 +1,44 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00001A5C ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x0000008C ; chunk size
+ .short 16 ; number of files
+ .balign 4
+ .word 0x00000000, 0x000008A0
+ .word 0x000008A0, 0x00000A52
+ .word 0x00000A54, 0x00000AB0
+ .word 0x00000AB0, 0x00000D0C
+ .word 0x00000D0C, 0x00000E14
+ .word 0x00000E14, 0x00000EF6
+ .word 0x00000EF8, 0x00000F86
+ .word 0x00000F88, 0x00001016
+ .word 0x00001018, 0x000010AE
+ .word 0x000010B0, 0x00001148
+ .word 0x00001148, 0x0000129C
+ .word 0x0000129C, 0x00001326
+ .word 0x00001328, 0x000013D8
+ .word 0x000013D8, 0x00001408
+ .word 0x00001408, 0x000014E4
+ .word 0x000014E4, 0x000019A8
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x000019B0 ; chunk size
+ .incbin "baserom.nds", 0xF4D4B4, 0x19A8
+ .balign 512, 255
diff --git a/files/FILE_F4F000_height.narc.s b/files/FILE_F4F000_height.narc.s
new file mode 100644
index 00000000..8b56a3f8
--- /dev/null
+++ b/files/FILE_F4F000_height.narc.s
@@ -0,0 +1,2004 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00005A44 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x00003DCC ; chunk size
+ .short 1976 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000001
+ .word 0x00000004, 0x00000005
+ .word 0x00000008, 0x00000009
+ .word 0x0000000C, 0x0000000D
+ .word 0x00000010, 0x00000011
+ .word 0x00000014, 0x00000015
+ .word 0x00000018, 0x00000019
+ .word 0x0000001C, 0x0000001D
+ .word 0x00000020, 0x00000021
+ .word 0x00000024, 0x00000025
+ .word 0x00000028, 0x00000029
+ .word 0x0000002C, 0x0000002D
+ .word 0x00000030, 0x00000031
+ .word 0x00000034, 0x00000035
+ .word 0x00000038, 0x00000039
+ .word 0x0000003C, 0x0000003D
+ .word 0x00000040, 0x00000041
+ .word 0x00000044, 0x00000045
+ .word 0x00000048, 0x00000049
+ .word 0x0000004C, 0x0000004D
+ .word 0x00000050, 0x00000051
+ .word 0x00000054, 0x00000055
+ .word 0x00000058, 0x00000059
+ .word 0x0000005C, 0x0000005D
+ .word 0x00000060, 0x00000061
+ .word 0x00000064, 0x00000065
+ .word 0x00000068, 0x00000069
+ .word 0x0000006C, 0x0000006D
+ .word 0x00000070, 0x00000071
+ .word 0x00000074, 0x00000075
+ .word 0x00000078, 0x00000079
+ .word 0x0000007C, 0x0000007D
+ .word 0x00000080, 0x00000081
+ .word 0x00000084, 0x00000085
+ .word 0x00000088, 0x00000089
+ .word 0x0000008C, 0x0000008D
+ .word 0x00000090, 0x00000091
+ .word 0x00000094, 0x00000095
+ .word 0x00000098, 0x00000099
+ .word 0x0000009C, 0x0000009D
+ .word 0x000000A0, 0x000000A1
+ .word 0x000000A4, 0x000000A5
+ .word 0x000000A8, 0x000000A9
+ .word 0x000000AC, 0x000000AD
+ .word 0x000000B0, 0x000000B1
+ .word 0x000000B4, 0x000000B5
+ .word 0x000000B8, 0x000000B9
+ .word 0x000000BC, 0x000000BD
+ .word 0x000000C0, 0x000000C1
+ .word 0x000000C4, 0x000000C5
+ .word 0x000000C8, 0x000000C9
+ .word 0x000000CC, 0x000000CD
+ .word 0x000000D0, 0x000000D1
+ .word 0x000000D4, 0x000000D5
+ .word 0x000000D8, 0x000000D9
+ .word 0x000000DC, 0x000000DD
+ .word 0x000000E0, 0x000000E1
+ .word 0x000000E4, 0x000000E5
+ .word 0x000000E8, 0x000000E9
+ .word 0x000000EC, 0x000000ED
+ .word 0x000000F0, 0x000000F1
+ .word 0x000000F4, 0x000000F5
+ .word 0x000000F8, 0x000000F9
+ .word 0x000000FC, 0x000000FD
+ .word 0x00000100, 0x00000101
+ .word 0x00000104, 0x00000105
+ .word 0x00000108, 0x00000109
+ .word 0x0000010C, 0x0000010D
+ .word 0x00000110, 0x00000111
+ .word 0x00000114, 0x00000115
+ .word 0x00000118, 0x00000119
+ .word 0x0000011C, 0x0000011D
+ .word 0x00000120, 0x00000121
+ .word 0x00000124, 0x00000125
+ .word 0x00000128, 0x00000129
+ .word 0x0000012C, 0x0000012D
+ .word 0x00000130, 0x00000131
+ .word 0x00000134, 0x00000135
+ .word 0x00000138, 0x00000139
+ .word 0x0000013C, 0x0000013D
+ .word 0x00000140, 0x00000141
+ .word 0x00000144, 0x00000145
+ .word 0x00000148, 0x00000149
+ .word 0x0000014C, 0x0000014D
+ .word 0x00000150, 0x00000151
+ .word 0x00000154, 0x00000155
+ .word 0x00000158, 0x00000159
+ .word 0x0000015C, 0x0000015D
+ .word 0x00000160, 0x00000161
+ .word 0x00000164, 0x00000165
+ .word 0x00000168, 0x00000169
+ .word 0x0000016C, 0x0000016D
+ .word 0x00000170, 0x00000171
+ .word 0x00000174, 0x00000175
+ .word 0x00000178, 0x00000179
+ .word 0x0000017C, 0x0000017D
+ .word 0x00000180, 0x00000181
+ .word 0x00000184, 0x00000185
+ .word 0x00000188, 0x00000189
+ .word 0x0000018C, 0x0000018D
+ .word 0x00000190, 0x00000191
+ .word 0x00000194, 0x00000195
+ .word 0x00000198, 0x00000199
+ .word 0x0000019C, 0x0000019D
+ .word 0x000001A0, 0x000001A1
+ .word 0x000001A4, 0x000001A5
+ .word 0x000001A8, 0x000001A9
+ .word 0x000001AC, 0x000001AD
+ .word 0x000001B0, 0x000001B1
+ .word 0x000001B4, 0x000001B5
+ .word 0x000001B8, 0x000001B9
+ .word 0x000001BC, 0x000001BD
+ .word 0x000001C0, 0x000001C1
+ .word 0x000001C4, 0x000001C5
+ .word 0x000001C8, 0x000001C9
+ .word 0x000001CC, 0x000001CD
+ .word 0x000001D0, 0x000001D1
+ .word 0x000001D4, 0x000001D4
+ .word 0x000001D4, 0x000001D5
+ .word 0x000001D8, 0x000001D8
+ .word 0x000001D8, 0x000001D9
+ .word 0x000001DC, 0x000001DC
+ .word 0x000001DC, 0x000001DD
+ .word 0x000001E0, 0x000001E0
+ .word 0x000001E0, 0x000001E1
+ .word 0x000001E4, 0x000001E4
+ .word 0x000001E4, 0x000001E5
+ .word 0x000001E8, 0x000001E8
+ .word 0x000001E8, 0x000001E8
+ .word 0x000001E8, 0x000001E9
+ .word 0x000001EC, 0x000001EC
+ .word 0x000001EC, 0x000001ED
+ .word 0x000001F0, 0x000001F0
+ .word 0x000001F0, 0x000001F1
+ .word 0x000001F4, 0x000001F4
+ .word 0x000001F4, 0x000001F5
+ .word 0x000001F8, 0x000001F8
+ .word 0x000001F8, 0x000001F9
+ .word 0x000001FC, 0x000001FC
+ .word 0x000001FC, 0x000001FD
+ .word 0x00000200, 0x00000201
+ .word 0x00000204, 0x00000205
+ .word 0x00000208, 0x00000209
+ .word 0x0000020C, 0x0000020D
+ .word 0x00000210, 0x00000211
+ .word 0x00000214, 0x00000215
+ .word 0x00000218, 0x00000219
+ .word 0x0000021C, 0x0000021D
+ .word 0x00000220, 0x00000221
+ .word 0x00000224, 0x00000225
+ .word 0x00000228, 0x00000229
+ .word 0x0000022C, 0x0000022D
+ .word 0x00000230, 0x00000231
+ .word 0x00000234, 0x00000235
+ .word 0x00000238, 0x00000239
+ .word 0x0000023C, 0x0000023D
+ .word 0x00000240, 0x00000241
+ .word 0x00000244, 0x00000245
+ .word 0x00000248, 0x00000249
+ .word 0x0000024C, 0x0000024D
+ .word 0x00000250, 0x00000251
+ .word 0x00000254, 0x00000255
+ .word 0x00000258, 0x00000259
+ .word 0x0000025C, 0x0000025D
+ .word 0x00000260, 0x00000261
+ .word 0x00000264, 0x00000265
+ .word 0x00000268, 0x00000269
+ .word 0x0000026C, 0x0000026D
+ .word 0x00000270, 0x00000271
+ .word 0x00000274, 0x00000275
+ .word 0x00000278, 0x00000279
+ .word 0x0000027C, 0x0000027D
+ .word 0x00000280, 0x00000281
+ .word 0x00000284, 0x00000285
+ .word 0x00000288, 0x00000289
+ .word 0x0000028C, 0x0000028D
+ .word 0x00000290, 0x00000291
+ .word 0x00000294, 0x00000295
+ .word 0x00000298, 0x00000299
+ .word 0x0000029C, 0x0000029D
+ .word 0x000002A0, 0x000002A1
+ .word 0x000002A4, 0x000002A5
+ .word 0x000002A8, 0x000002A9
+ .word 0x000002AC, 0x000002AD
+ .word 0x000002B0, 0x000002B1
+ .word 0x000002B4, 0x000002B5
+ .word 0x000002B8, 0x000002B9
+ .word 0x000002BC, 0x000002BD
+ .word 0x000002C0, 0x000002C1
+ .word 0x000002C4, 0x000002C5
+ .word 0x000002C8, 0x000002C9
+ .word 0x000002CC, 0x000002CD
+ .word 0x000002D0, 0x000002D1
+ .word 0x000002D4, 0x000002D5
+ .word 0x000002D8, 0x000002D9
+ .word 0x000002DC, 0x000002DD
+ .word 0x000002E0, 0x000002E1
+ .word 0x000002E4, 0x000002E5
+ .word 0x000002E8, 0x000002E9
+ .word 0x000002EC, 0x000002ED
+ .word 0x000002F0, 0x000002F1
+ .word 0x000002F4, 0x000002F5
+ .word 0x000002F8, 0x000002F9
+ .word 0x000002FC, 0x000002FD
+ .word 0x00000300, 0x00000301
+ .word 0x00000304, 0x00000305
+ .word 0x00000308, 0x00000309
+ .word 0x0000030C, 0x0000030D
+ .word 0x00000310, 0x00000311
+ .word 0x00000314, 0x00000315
+ .word 0x00000318, 0x00000319
+ .word 0x0000031C, 0x0000031D
+ .word 0x00000320, 0x00000321
+ .word 0x00000324, 0x00000325
+ .word 0x00000328, 0x00000329
+ .word 0x0000032C, 0x0000032D
+ .word 0x00000330, 0x00000331
+ .word 0x00000334, 0x00000335
+ .word 0x00000338, 0x00000339
+ .word 0x0000033C, 0x0000033D
+ .word 0x00000340, 0x00000341
+ .word 0x00000344, 0x00000345
+ .word 0x00000348, 0x00000349
+ .word 0x0000034C, 0x0000034D
+ .word 0x00000350, 0x00000351
+ .word 0x00000354, 0x00000355
+ .word 0x00000358, 0x00000359
+ .word 0x0000035C, 0x0000035D
+ .word 0x00000360, 0x00000361
+ .word 0x00000364, 0x00000365
+ .word 0x00000368, 0x00000369
+ .word 0x0000036C, 0x0000036D
+ .word 0x00000370, 0x00000371
+ .word 0x00000374, 0x00000375
+ .word 0x00000378, 0x00000379
+ .word 0x0000037C, 0x0000037D
+ .word 0x00000380, 0x00000381
+ .word 0x00000384, 0x00000385
+ .word 0x00000388, 0x00000389
+ .word 0x0000038C, 0x0000038D
+ .word 0x00000390, 0x00000391
+ .word 0x00000394, 0x00000395
+ .word 0x00000398, 0x00000399
+ .word 0x0000039C, 0x0000039D
+ .word 0x000003A0, 0x000003A1
+ .word 0x000003A4, 0x000003A5
+ .word 0x000003A8, 0x000003A9
+ .word 0x000003AC, 0x000003AD
+ .word 0x000003B0, 0x000003B1
+ .word 0x000003B4, 0x000003B5
+ .word 0x000003B8, 0x000003B9
+ .word 0x000003BC, 0x000003BD
+ .word 0x000003C0, 0x000003C1
+ .word 0x000003C4, 0x000003C5
+ .word 0x000003C8, 0x000003C9
+ .word 0x000003CC, 0x000003CD
+ .word 0x000003D0, 0x000003D1
+ .word 0x000003D4, 0x000003D5
+ .word 0x000003D8, 0x000003D9
+ .word 0x000003DC, 0x000003DD
+ .word 0x000003E0, 0x000003E1
+ .word 0x000003E4, 0x000003E5
+ .word 0x000003E8, 0x000003E9
+ .word 0x000003EC, 0x000003ED
+ .word 0x000003F0, 0x000003F1
+ .word 0x000003F4, 0x000003F5
+ .word 0x000003F8, 0x000003F9
+ .word 0x000003FC, 0x000003FD
+ .word 0x00000400, 0x00000401
+ .word 0x00000404, 0x00000405
+ .word 0x00000408, 0x00000409
+ .word 0x0000040C, 0x0000040D
+ .word 0x00000410, 0x00000411
+ .word 0x00000414, 0x00000415
+ .word 0x00000418, 0x00000419
+ .word 0x0000041C, 0x0000041D
+ .word 0x00000420, 0x00000421
+ .word 0x00000424, 0x00000425
+ .word 0x00000428, 0x00000429
+ .word 0x0000042C, 0x0000042D
+ .word 0x00000430, 0x00000431
+ .word 0x00000434, 0x00000435
+ .word 0x00000438, 0x00000439
+ .word 0x0000043C, 0x0000043D
+ .word 0x00000440, 0x00000441
+ .word 0x00000444, 0x00000445
+ .word 0x00000448, 0x00000449
+ .word 0x0000044C, 0x0000044D
+ .word 0x00000450, 0x00000451
+ .word 0x00000454, 0x00000455
+ .word 0x00000458, 0x00000459
+ .word 0x0000045C, 0x0000045D
+ .word 0x00000460, 0x00000461
+ .word 0x00000464, 0x00000465
+ .word 0x00000468, 0x00000469
+ .word 0x0000046C, 0x0000046D
+ .word 0x00000470, 0x00000471
+ .word 0x00000474, 0x00000475
+ .word 0x00000478, 0x00000479
+ .word 0x0000047C, 0x0000047D
+ .word 0x00000480, 0x00000481
+ .word 0x00000484, 0x00000485
+ .word 0x00000488, 0x00000489
+ .word 0x0000048C, 0x0000048D
+ .word 0x00000490, 0x00000491
+ .word 0x00000494, 0x00000495
+ .word 0x00000498, 0x00000499
+ .word 0x0000049C, 0x0000049D
+ .word 0x000004A0, 0x000004A1
+ .word 0x000004A4, 0x000004A5
+ .word 0x000004A8, 0x000004A9
+ .word 0x000004AC, 0x000004AD
+ .word 0x000004B0, 0x000004B1
+ .word 0x000004B4, 0x000004B5
+ .word 0x000004B8, 0x000004B9
+ .word 0x000004BC, 0x000004BD
+ .word 0x000004C0, 0x000004C1
+ .word 0x000004C4, 0x000004C5
+ .word 0x000004C8, 0x000004C9
+ .word 0x000004CC, 0x000004CD
+ .word 0x000004D0, 0x000004D1
+ .word 0x000004D4, 0x000004D5
+ .word 0x000004D8, 0x000004D9
+ .word 0x000004DC, 0x000004DD
+ .word 0x000004E0, 0x000004E0
+ .word 0x000004E0, 0x000004E1
+ .word 0x000004E4, 0x000004E4
+ .word 0x000004E4, 0x000004E5
+ .word 0x000004E8, 0x000004E8
+ .word 0x000004E8, 0x000004E9
+ .word 0x000004EC, 0x000004EC
+ .word 0x000004EC, 0x000004ED
+ .word 0x000004F0, 0x000004F1
+ .word 0x000004F4, 0x000004F5
+ .word 0x000004F8, 0x000004F9
+ .word 0x000004FC, 0x000004FD
+ .word 0x00000500, 0x00000501
+ .word 0x00000504, 0x00000505
+ .word 0x00000508, 0x00000509
+ .word 0x0000050C, 0x0000050D
+ .word 0x00000510, 0x00000511
+ .word 0x00000514, 0x00000515
+ .word 0x00000518, 0x00000519
+ .word 0x0000051C, 0x0000051D
+ .word 0x00000520, 0x00000521
+ .word 0x00000524, 0x00000525
+ .word 0x00000528, 0x00000529
+ .word 0x0000052C, 0x0000052D
+ .word 0x00000530, 0x00000531
+ .word 0x00000534, 0x00000535
+ .word 0x00000538, 0x00000539
+ .word 0x0000053C, 0x0000053D
+ .word 0x00000540, 0x00000541
+ .word 0x00000544, 0x00000545
+ .word 0x00000548, 0x00000549
+ .word 0x0000054C, 0x0000054D
+ .word 0x00000550, 0x00000551
+ .word 0x00000554, 0x00000555
+ .word 0x00000558, 0x00000559
+ .word 0x0000055C, 0x0000055D
+ .word 0x00000560, 0x00000561
+ .word 0x00000564, 0x00000565
+ .word 0x00000568, 0x00000569
+ .word 0x0000056C, 0x0000056D
+ .word 0x00000570, 0x00000571
+ .word 0x00000574, 0x00000575
+ .word 0x00000578, 0x00000579
+ .word 0x0000057C, 0x0000057D
+ .word 0x00000580, 0x00000581
+ .word 0x00000584, 0x00000585
+ .word 0x00000588, 0x00000589
+ .word 0x0000058C, 0x0000058D
+ .word 0x00000590, 0x00000591
+ .word 0x00000594, 0x00000595
+ .word 0x00000598, 0x00000599
+ .word 0x0000059C, 0x0000059D
+ .word 0x000005A0, 0x000005A1
+ .word 0x000005A4, 0x000005A5
+ .word 0x000005A8, 0x000005A9
+ .word 0x000005AC, 0x000005AD
+ .word 0x000005B0, 0x000005B1
+ .word 0x000005B4, 0x000005B5
+ .word 0x000005B8, 0x000005B9
+ .word 0x000005BC, 0x000005BD
+ .word 0x000005C0, 0x000005C1
+ .word 0x000005C4, 0x000005C5
+ .word 0x000005C8, 0x000005C9
+ .word 0x000005CC, 0x000005CD
+ .word 0x000005D0, 0x000005D1
+ .word 0x000005D4, 0x000005D5
+ .word 0x000005D8, 0x000005D9
+ .word 0x000005DC, 0x000005DD
+ .word 0x000005E0, 0x000005E1
+ .word 0x000005E4, 0x000005E5
+ .word 0x000005E8, 0x000005E9
+ .word 0x000005EC, 0x000005ED
+ .word 0x000005F0, 0x000005F1
+ .word 0x000005F4, 0x000005F5
+ .word 0x000005F8, 0x000005F9
+ .word 0x000005FC, 0x000005FD
+ .word 0x00000600, 0x00000600
+ .word 0x00000600, 0x00000601
+ .word 0x00000604, 0x00000604
+ .word 0x00000604, 0x00000605
+ .word 0x00000608, 0x00000608
+ .word 0x00000608, 0x00000609
+ .word 0x0000060C, 0x0000060C
+ .word 0x0000060C, 0x0000060D
+ .word 0x00000610, 0x00000611
+ .word 0x00000614, 0x00000615
+ .word 0x00000618, 0x00000619
+ .word 0x0000061C, 0x0000061D
+ .word 0x00000620, 0x00000621
+ .word 0x00000624, 0x00000625
+ .word 0x00000628, 0x00000629
+ .word 0x0000062C, 0x0000062D
+ .word 0x00000630, 0x00000631
+ .word 0x00000634, 0x00000635
+ .word 0x00000638, 0x00000639
+ .word 0x0000063C, 0x0000063D
+ .word 0x00000640, 0x00000641
+ .word 0x00000644, 0x00000645
+ .word 0x00000648, 0x00000649
+ .word 0x0000064C, 0x0000064D
+ .word 0x00000650, 0x00000650
+ .word 0x00000650, 0x00000651
+ .word 0x00000654, 0x00000654
+ .word 0x00000654, 0x00000655
+ .word 0x00000658, 0x00000658
+ .word 0x00000658, 0x00000659
+ .word 0x0000065C, 0x0000065C
+ .word 0x0000065C, 0x0000065D
+ .word 0x00000660, 0x00000661
+ .word 0x00000664, 0x00000665
+ .word 0x00000668, 0x00000669
+ .word 0x0000066C, 0x0000066D
+ .word 0x00000670, 0x00000671
+ .word 0x00000674, 0x00000675
+ .word 0x00000678, 0x00000679
+ .word 0x0000067C, 0x0000067D
+ .word 0x00000680, 0x00000681
+ .word 0x00000684, 0x00000685
+ .word 0x00000688, 0x00000689
+ .word 0x0000068C, 0x0000068D
+ .word 0x00000690, 0x00000691
+ .word 0x00000694, 0x00000695
+ .word 0x00000698, 0x00000699
+ .word 0x0000069C, 0x0000069D
+ .word 0x000006A0, 0x000006A1
+ .word 0x000006A4, 0x000006A5
+ .word 0x000006A8, 0x000006A9
+ .word 0x000006AC, 0x000006AD
+ .word 0x000006B0, 0x000006B1
+ .word 0x000006B4, 0x000006B4
+ .word 0x000006B4, 0x000006B5
+ .word 0x000006B8, 0x000006B8
+ .word 0x000006B8, 0x000006B9
+ .word 0x000006BC, 0x000006BD
+ .word 0x000006C0, 0x000006C1
+ .word 0x000006C4, 0x000006C5
+ .word 0x000006C8, 0x000006C9
+ .word 0x000006CC, 0x000006CC
+ .word 0x000006CC, 0x000006CD
+ .word 0x000006D0, 0x000006D0
+ .word 0x000006D0, 0x000006D1
+ .word 0x000006D4, 0x000006D5
+ .word 0x000006D8, 0x000006D9
+ .word 0x000006DC, 0x000006DD
+ .word 0x000006E0, 0x000006E1
+ .word 0x000006E4, 0x000006E5
+ .word 0x000006E8, 0x000006E9
+ .word 0x000006EC, 0x000006ED
+ .word 0x000006F0, 0x000006F1
+ .word 0x000006F4, 0x000006F5
+ .word 0x000006F8, 0x000006F9
+ .word 0x000006FC, 0x000006FD
+ .word 0x00000700, 0x00000701
+ .word 0x00000704, 0x00000705
+ .word 0x00000708, 0x00000709
+ .word 0x0000070C, 0x0000070D
+ .word 0x00000710, 0x00000710
+ .word 0x00000710, 0x00000711
+ .word 0x00000714, 0x00000714
+ .word 0x00000714, 0x00000715
+ .word 0x00000718, 0x00000718
+ .word 0x00000718, 0x00000719
+ .word 0x0000071C, 0x0000071C
+ .word 0x0000071C, 0x0000071D
+ .word 0x00000720, 0x00000721
+ .word 0x00000724, 0x00000725
+ .word 0x00000728, 0x00000729
+ .word 0x0000072C, 0x0000072D
+ .word 0x00000730, 0x00000731
+ .word 0x00000734, 0x00000735
+ .word 0x00000738, 0x00000739
+ .word 0x0000073C, 0x0000073D
+ .word 0x00000740, 0x00000741
+ .word 0x00000744, 0x00000744
+ .word 0x00000744, 0x00000745
+ .word 0x00000748, 0x00000748
+ .word 0x00000748, 0x00000749
+ .word 0x0000074C, 0x0000074D
+ .word 0x00000750, 0x00000751
+ .word 0x00000754, 0x00000755
+ .word 0x00000758, 0x00000759
+ .word 0x0000075C, 0x0000075D
+ .word 0x00000760, 0x00000761
+ .word 0x00000764, 0x00000765
+ .word 0x00000768, 0x00000769
+ .word 0x0000076C, 0x0000076D
+ .word 0x00000770, 0x00000771
+ .word 0x00000774, 0x00000775
+ .word 0x00000778, 0x00000778
+ .word 0x00000778, 0x00000779
+ .word 0x0000077C, 0x0000077C
+ .word 0x0000077C, 0x0000077D
+ .word 0x00000780, 0x00000781
+ .word 0x00000784, 0x00000785
+ .word 0x00000788, 0x00000789
+ .word 0x0000078C, 0x0000078D
+ .word 0x00000790, 0x00000791
+ .word 0x00000794, 0x00000795
+ .word 0x00000798, 0x00000799
+ .word 0x0000079C, 0x0000079D
+ .word 0x000007A0, 0x000007A1
+ .word 0x000007A4, 0x000007A5
+ .word 0x000007A8, 0x000007A9
+ .word 0x000007AC, 0x000007AD
+ .word 0x000007B0, 0x000007B0
+ .word 0x000007B0, 0x000007B1
+ .word 0x000007B4, 0x000007B4
+ .word 0x000007B4, 0x000007B5
+ .word 0x000007B8, 0x000007B9
+ .word 0x000007BC, 0x000007BD
+ .word 0x000007C0, 0x000007C1
+ .word 0x000007C4, 0x000007C5
+ .word 0x000007C8, 0x000007C9
+ .word 0x000007CC, 0x000007CD
+ .word 0x000007D0, 0x000007D1
+ .word 0x000007D4, 0x000007D5
+ .word 0x000007D8, 0x000007D9
+ .word 0x000007DC, 0x000007DD
+ .word 0x000007E0, 0x000007E1
+ .word 0x000007E4, 0x000007E5
+ .word 0x000007E8, 0x000007E9
+ .word 0x000007EC, 0x000007ED
+ .word 0x000007F0, 0x000007F1
+ .word 0x000007F4, 0x000007F5
+ .word 0x000007F8, 0x000007F8
+ .word 0x000007F8, 0x000007F9
+ .word 0x000007FC, 0x000007FC
+ .word 0x000007FC, 0x000007FD
+ .word 0x00000800, 0x00000801
+ .word 0x00000804, 0x00000805
+ .word 0x00000808, 0x00000809
+ .word 0x0000080C, 0x0000080D
+ .word 0x00000810, 0x00000811
+ .word 0x00000814, 0x00000815
+ .word 0x00000818, 0x00000819
+ .word 0x0000081C, 0x0000081D
+ .word 0x00000820, 0x00000821
+ .word 0x00000824, 0x00000825
+ .word 0x00000828, 0x00000829
+ .word 0x0000082C, 0x0000082D
+ .word 0x00000830, 0x00000831
+ .word 0x00000834, 0x00000835
+ .word 0x00000838, 0x00000839
+ .word 0x0000083C, 0x0000083D
+ .word 0x00000840, 0x00000841
+ .word 0x00000844, 0x00000845
+ .word 0x00000848, 0x00000849
+ .word 0x0000084C, 0x0000084D
+ .word 0x00000850, 0x00000851
+ .word 0x00000854, 0x00000855
+ .word 0x00000858, 0x00000859
+ .word 0x0000085C, 0x0000085D
+ .word 0x00000860, 0x00000860
+ .word 0x00000860, 0x00000861
+ .word 0x00000864, 0x00000864
+ .word 0x00000864, 0x00000865
+ .word 0x00000868, 0x00000868
+ .word 0x00000868, 0x00000869
+ .word 0x0000086C, 0x0000086C
+ .word 0x0000086C, 0x0000086D
+ .word 0x00000870, 0x00000870
+ .word 0x00000870, 0x00000871
+ .word 0x00000874, 0x00000874
+ .word 0x00000874, 0x00000875
+ .word 0x00000878, 0x00000879
+ .word 0x0000087C, 0x0000087D
+ .word 0x00000880, 0x00000881
+ .word 0x00000884, 0x00000885
+ .word 0x00000888, 0x00000889
+ .word 0x0000088C, 0x0000088D
+ .word 0x00000890, 0x00000891
+ .word 0x00000894, 0x00000895
+ .word 0x00000898, 0x00000899
+ .word 0x0000089C, 0x0000089D
+ .word 0x000008A0, 0x000008A1
+ .word 0x000008A4, 0x000008A5
+ .word 0x000008A8, 0x000008A8
+ .word 0x000008A8, 0x000008A9
+ .word 0x000008AC, 0x000008AC
+ .word 0x000008AC, 0x000008AD
+ .word 0x000008B0, 0x000008B0
+ .word 0x000008B0, 0x000008B1
+ .word 0x000008B4, 0x000008B4
+ .word 0x000008B4, 0x000008B5
+ .word 0x000008B8, 0x000008B9
+ .word 0x000008BC, 0x000008BD
+ .word 0x000008C0, 0x000008C1
+ .word 0x000008C4, 0x000008C5
+ .word 0x000008C8, 0x000008C9
+ .word 0x000008CC, 0x000008CD
+ .word 0x000008D0, 0x000008D1
+ .word 0x000008D4, 0x000008D5
+ .word 0x000008D8, 0x000008D9
+ .word 0x000008DC, 0x000008DD
+ .word 0x000008E0, 0x000008E1
+ .word 0x000008E4, 0x000008E5
+ .word 0x000008E8, 0x000008E9
+ .word 0x000008EC, 0x000008ED
+ .word 0x000008F0, 0x000008F1
+ .word 0x000008F4, 0x000008F5
+ .word 0x000008F8, 0x000008F9
+ .word 0x000008FC, 0x000008FD
+ .word 0x00000900, 0x00000901
+ .word 0x00000904, 0x00000905
+ .word 0x00000908, 0x00000909
+ .word 0x0000090C, 0x0000090D
+ .word 0x00000910, 0x00000911
+ .word 0x00000914, 0x00000915
+ .word 0x00000918, 0x00000919
+ .word 0x0000091C, 0x0000091D
+ .word 0x00000920, 0x00000921
+ .word 0x00000924, 0x00000925
+ .word 0x00000928, 0x00000929
+ .word 0x0000092C, 0x0000092D
+ .word 0x00000930, 0x00000931
+ .word 0x00000934, 0x00000935
+ .word 0x00000938, 0x00000939
+ .word 0x0000093C, 0x0000093D
+ .word 0x00000940, 0x00000941
+ .word 0x00000944, 0x00000945
+ .word 0x00000948, 0x00000949
+ .word 0x0000094C, 0x0000094D
+ .word 0x00000950, 0x00000951
+ .word 0x00000954, 0x00000955
+ .word 0x00000958, 0x00000959
+ .word 0x0000095C, 0x0000095D
+ .word 0x00000960, 0x00000961
+ .word 0x00000964, 0x00000965
+ .word 0x00000968, 0x00000969
+ .word 0x0000096C, 0x0000096D
+ .word 0x00000970, 0x00000971
+ .word 0x00000974, 0x00000975
+ .word 0x00000978, 0x00000979
+ .word 0x0000097C, 0x0000097D
+ .word 0x00000980, 0x00000981
+ .word 0x00000984, 0x00000985
+ .word 0x00000988, 0x00000989
+ .word 0x0000098C, 0x0000098D
+ .word 0x00000990, 0x00000991
+ .word 0x00000994, 0x00000995
+ .word 0x00000998, 0x00000999
+ .word 0x0000099C, 0x0000099D
+ .word 0x000009A0, 0x000009A1
+ .word 0x000009A4, 0x000009A5
+ .word 0x000009A8, 0x000009A9
+ .word 0x000009AC, 0x000009AD
+ .word 0x000009B0, 0x000009B1
+ .word 0x000009B4, 0x000009B5
+ .word 0x000009B8, 0x000009B9
+ .word 0x000009BC, 0x000009BD
+ .word 0x000009C0, 0x000009C1
+ .word 0x000009C4, 0x000009C5
+ .word 0x000009C8, 0x000009C9
+ .word 0x000009CC, 0x000009CD
+ .word 0x000009D0, 0x000009D1
+ .word 0x000009D4, 0x000009D5
+ .word 0x000009D8, 0x000009D9
+ .word 0x000009DC, 0x000009DD
+ .word 0x000009E0, 0x000009E1
+ .word 0x000009E4, 0x000009E5
+ .word 0x000009E8, 0x000009E9
+ .word 0x000009EC, 0x000009ED
+ .word 0x000009F0, 0x000009F1
+ .word 0x000009F4, 0x000009F5
+ .word 0x000009F8, 0x000009F9
+ .word 0x000009FC, 0x000009FD
+ .word 0x00000A00, 0x00000A01
+ .word 0x00000A04, 0x00000A05
+ .word 0x00000A08, 0x00000A09
+ .word 0x00000A0C, 0x00000A0D
+ .word 0x00000A10, 0x00000A11
+ .word 0x00000A14, 0x00000A15
+ .word 0x00000A18, 0x00000A19
+ .word 0x00000A1C, 0x00000A1D
+ .word 0x00000A20, 0x00000A21
+ .word 0x00000A24, 0x00000A25
+ .word 0x00000A28, 0x00000A29
+ .word 0x00000A2C, 0x00000A2D
+ .word 0x00000A30, 0x00000A31
+ .word 0x00000A34, 0x00000A35
+ .word 0x00000A38, 0x00000A39
+ .word 0x00000A3C, 0x00000A3D
+ .word 0x00000A40, 0x00000A41
+ .word 0x00000A44, 0x00000A45
+ .word 0x00000A48, 0x00000A49
+ .word 0x00000A4C, 0x00000A4D
+ .word 0x00000A50, 0x00000A51
+ .word 0x00000A54, 0x00000A55
+ .word 0x00000A58, 0x00000A59
+ .word 0x00000A5C, 0x00000A5D
+ .word 0x00000A60, 0x00000A61
+ .word 0x00000A64, 0x00000A65
+ .word 0x00000A68, 0x00000A69
+ .word 0x00000A6C, 0x00000A6D
+ .word 0x00000A70, 0x00000A71
+ .word 0x00000A74, 0x00000A75
+ .word 0x00000A78, 0x00000A79
+ .word 0x00000A7C, 0x00000A7D
+ .word 0x00000A80, 0x00000A81
+ .word 0x00000A84, 0x00000A85
+ .word 0x00000A88, 0x00000A89
+ .word 0x00000A8C, 0x00000A8D
+ .word 0x00000A90, 0x00000A91
+ .word 0x00000A94, 0x00000A95
+ .word 0x00000A98, 0x00000A99
+ .word 0x00000A9C, 0x00000A9D
+ .word 0x00000AA0, 0x00000AA1
+ .word 0x00000AA4, 0x00000AA5
+ .word 0x00000AA8, 0x00000AA9
+ .word 0x00000AAC, 0x00000AAD
+ .word 0x00000AB0, 0x00000AB1
+ .word 0x00000AB4, 0x00000AB5
+ .word 0x00000AB8, 0x00000AB9
+ .word 0x00000ABC, 0x00000ABD
+ .word 0x00000AC0, 0x00000AC1
+ .word 0x00000AC4, 0x00000AC5
+ .word 0x00000AC8, 0x00000AC9
+ .word 0x00000ACC, 0x00000ACD
+ .word 0x00000AD0, 0x00000AD1
+ .word 0x00000AD4, 0x00000AD5
+ .word 0x00000AD8, 0x00000AD9
+ .word 0x00000ADC, 0x00000ADD
+ .word 0x00000AE0, 0x00000AE1
+ .word 0x00000AE4, 0x00000AE5
+ .word 0x00000AE8, 0x00000AE9
+ .word 0x00000AEC, 0x00000AED
+ .word 0x00000AF0, 0x00000AF1
+ .word 0x00000AF4, 0x00000AF5
+ .word 0x00000AF8, 0x00000AF9
+ .word 0x00000AFC, 0x00000AFD
+ .word 0x00000B00, 0x00000B01
+ .word 0x00000B04, 0x00000B05
+ .word 0x00000B08, 0x00000B09
+ .word 0x00000B0C, 0x00000B0D
+ .word 0x00000B10, 0x00000B11
+ .word 0x00000B14, 0x00000B15
+ .word 0x00000B18, 0x00000B19
+ .word 0x00000B1C, 0x00000B1D
+ .word 0x00000B20, 0x00000B21
+ .word 0x00000B24, 0x00000B25
+ .word 0x00000B28, 0x00000B29
+ .word 0x00000B2C, 0x00000B2D
+ .word 0x00000B30, 0x00000B31
+ .word 0x00000B34, 0x00000B35
+ .word 0x00000B38, 0x00000B39
+ .word 0x00000B3C, 0x00000B3D
+ .word 0x00000B40, 0x00000B41
+ .word 0x00000B44, 0x00000B45
+ .word 0x00000B48, 0x00000B49
+ .word 0x00000B4C, 0x00000B4D
+ .word 0x00000B50, 0x00000B51
+ .word 0x00000B54, 0x00000B55
+ .word 0x00000B58, 0x00000B59
+ .word 0x00000B5C, 0x00000B5D
+ .word 0x00000B60, 0x00000B61
+ .word 0x00000B64, 0x00000B65
+ .word 0x00000B68, 0x00000B69
+ .word 0x00000B6C, 0x00000B6D
+ .word 0x00000B70, 0x00000B71
+ .word 0x00000B74, 0x00000B75
+ .word 0x00000B78, 0x00000B79
+ .word 0x00000B7C, 0x00000B7D
+ .word 0x00000B80, 0x00000B81
+ .word 0x00000B84, 0x00000B85
+ .word 0x00000B88, 0x00000B89
+ .word 0x00000B8C, 0x00000B8D
+ .word 0x00000B90, 0x00000B91
+ .word 0x00000B94, 0x00000B95
+ .word 0x00000B98, 0x00000B99
+ .word 0x00000B9C, 0x00000B9D
+ .word 0x00000BA0, 0x00000BA1
+ .word 0x00000BA4, 0x00000BA5
+ .word 0x00000BA8, 0x00000BA9
+ .word 0x00000BAC, 0x00000BAD
+ .word 0x00000BB0, 0x00000BB1
+ .word 0x00000BB4, 0x00000BB5
+ .word 0x00000BB8, 0x00000BB9
+ .word 0x00000BBC, 0x00000BBD
+ .word 0x00000BC0, 0x00000BC1
+ .word 0x00000BC4, 0x00000BC5
+ .word 0x00000BC8, 0x00000BC8
+ .word 0x00000BC8, 0x00000BC9
+ .word 0x00000BCC, 0x00000BCC
+ .word 0x00000BCC, 0x00000BCD
+ .word 0x00000BD0, 0x00000BD1
+ .word 0x00000BD4, 0x00000BD5
+ .word 0x00000BD8, 0x00000BD9
+ .word 0x00000BDC, 0x00000BDD
+ .word 0x00000BE0, 0x00000BE1
+ .word 0x00000BE4, 0x00000BE5
+ .word 0x00000BE8, 0x00000BE9
+ .word 0x00000BEC, 0x00000BED
+ .word 0x00000BF0, 0x00000BF1
+ .word 0x00000BF4, 0x00000BF5
+ .word 0x00000BF8, 0x00000BF9
+ .word 0x00000BFC, 0x00000BFD
+ .word 0x00000C00, 0x00000C01
+ .word 0x00000C04, 0x00000C05
+ .word 0x00000C08, 0x00000C09
+ .word 0x00000C0C, 0x00000C0D
+ .word 0x00000C10, 0x00000C11
+ .word 0x00000C14, 0x00000C15
+ .word 0x00000C18, 0x00000C19
+ .word 0x00000C1C, 0x00000C1D
+ .word 0x00000C20, 0x00000C21
+ .word 0x00000C24, 0x00000C25
+ .word 0x00000C28, 0x00000C29
+ .word 0x00000C2C, 0x00000C2D
+ .word 0x00000C30, 0x00000C31
+ .word 0x00000C34, 0x00000C35
+ .word 0x00000C38, 0x00000C39
+ .word 0x00000C3C, 0x00000C3D
+ .word 0x00000C40, 0x00000C41
+ .word 0x00000C44, 0x00000C45
+ .word 0x00000C48, 0x00000C49
+ .word 0x00000C4C, 0x00000C4D
+ .word 0x00000C50, 0x00000C51
+ .word 0x00000C54, 0x00000C55
+ .word 0x00000C58, 0x00000C59
+ .word 0x00000C5C, 0x00000C5D
+ .word 0x00000C60, 0x00000C61
+ .word 0x00000C64, 0x00000C65
+ .word 0x00000C68, 0x00000C69
+ .word 0x00000C6C, 0x00000C6D
+ .word 0x00000C70, 0x00000C71
+ .word 0x00000C74, 0x00000C75
+ .word 0x00000C78, 0x00000C79
+ .word 0x00000C7C, 0x00000C7D
+ .word 0x00000C80, 0x00000C81
+ .word 0x00000C84, 0x00000C85
+ .word 0x00000C88, 0x00000C89
+ .word 0x00000C8C, 0x00000C8D
+ .word 0x00000C90, 0x00000C91
+ .word 0x00000C94, 0x00000C95
+ .word 0x00000C98, 0x00000C99
+ .word 0x00000C9C, 0x00000C9D
+ .word 0x00000CA0, 0x00000CA1
+ .word 0x00000CA4, 0x00000CA5
+ .word 0x00000CA8, 0x00000CA9
+ .word 0x00000CAC, 0x00000CAD
+ .word 0x00000CB0, 0x00000CB1
+ .word 0x00000CB4, 0x00000CB5
+ .word 0x00000CB8, 0x00000CB9
+ .word 0x00000CBC, 0x00000CBD
+ .word 0x00000CC0, 0x00000CC1
+ .word 0x00000CC4, 0x00000CC5
+ .word 0x00000CC8, 0x00000CC9
+ .word 0x00000CCC, 0x00000CCD
+ .word 0x00000CD0, 0x00000CD1
+ .word 0x00000CD4, 0x00000CD5
+ .word 0x00000CD8, 0x00000CD9
+ .word 0x00000CDC, 0x00000CDD
+ .word 0x00000CE0, 0x00000CE1
+ .word 0x00000CE4, 0x00000CE5
+ .word 0x00000CE8, 0x00000CE9
+ .word 0x00000CEC, 0x00000CED
+ .word 0x00000CF0, 0x00000CF1
+ .word 0x00000CF4, 0x00000CF5
+ .word 0x00000CF8, 0x00000CF9
+ .word 0x00000CFC, 0x00000CFD
+ .word 0x00000D00, 0x00000D01
+ .word 0x00000D04, 0x00000D05
+ .word 0x00000D08, 0x00000D09
+ .word 0x00000D0C, 0x00000D0D
+ .word 0x00000D10, 0x00000D11
+ .word 0x00000D14, 0x00000D15
+ .word 0x00000D18, 0x00000D19
+ .word 0x00000D1C, 0x00000D1D
+ .word 0x00000D20, 0x00000D21
+ .word 0x00000D24, 0x00000D25
+ .word 0x00000D28, 0x00000D29
+ .word 0x00000D2C, 0x00000D2D
+ .word 0x00000D30, 0x00000D31
+ .word 0x00000D34, 0x00000D35
+ .word 0x00000D38, 0x00000D39
+ .word 0x00000D3C, 0x00000D3D
+ .word 0x00000D40, 0x00000D41
+ .word 0x00000D44, 0x00000D45
+ .word 0x00000D48, 0x00000D49
+ .word 0x00000D4C, 0x00000D4D
+ .word 0x00000D50, 0x00000D51
+ .word 0x00000D54, 0x00000D55
+ .word 0x00000D58, 0x00000D59
+ .word 0x00000D5C, 0x00000D5D
+ .word 0x00000D60, 0x00000D61
+ .word 0x00000D64, 0x00000D65
+ .word 0x00000D68, 0x00000D69
+ .word 0x00000D6C, 0x00000D6D
+ .word 0x00000D70, 0x00000D71
+ .word 0x00000D74, 0x00000D75
+ .word 0x00000D78, 0x00000D79
+ .word 0x00000D7C, 0x00000D7D
+ .word 0x00000D80, 0x00000D81
+ .word 0x00000D84, 0x00000D85
+ .word 0x00000D88, 0x00000D89
+ .word 0x00000D8C, 0x00000D8D
+ .word 0x00000D90, 0x00000D91
+ .word 0x00000D94, 0x00000D95
+ .word 0x00000D98, 0x00000D99
+ .word 0x00000D9C, 0x00000D9D
+ .word 0x00000DA0, 0x00000DA1
+ .word 0x00000DA4, 0x00000DA5
+ .word 0x00000DA8, 0x00000DA9
+ .word 0x00000DAC, 0x00000DAD
+ .word 0x00000DB0, 0x00000DB1
+ .word 0x00000DB4, 0x00000DB5
+ .word 0x00000DB8, 0x00000DB9
+ .word 0x00000DBC, 0x00000DBD
+ .word 0x00000DC0, 0x00000DC0
+ .word 0x00000DC0, 0x00000DC1
+ .word 0x00000DC4, 0x00000DC4
+ .word 0x00000DC4, 0x00000DC5
+ .word 0x00000DC8, 0x00000DC9
+ .word 0x00000DCC, 0x00000DCD
+ .word 0x00000DD0, 0x00000DD1
+ .word 0x00000DD4, 0x00000DD5
+ .word 0x00000DD8, 0x00000DD9
+ .word 0x00000DDC, 0x00000DDD
+ .word 0x00000DE0, 0x00000DE1
+ .word 0x00000DE4, 0x00000DE5
+ .word 0x00000DE8, 0x00000DE8
+ .word 0x00000DE8, 0x00000DE9
+ .word 0x00000DEC, 0x00000DEC
+ .word 0x00000DEC, 0x00000DED
+ .word 0x00000DF0, 0x00000DF0
+ .word 0x00000DF0, 0x00000DF1
+ .word 0x00000DF4, 0x00000DF4
+ .word 0x00000DF4, 0x00000DF5
+ .word 0x00000DF8, 0x00000DF9
+ .word 0x00000DFC, 0x00000DFC
+ .word 0x00000DFC, 0x00000DFD
+ .word 0x00000E00, 0x00000E00
+ .word 0x00000E00, 0x00000E01
+ .word 0x00000E04, 0x00000E05
+ .word 0x00000E08, 0x00000E09
+ .word 0x00000E0C, 0x00000E0D
+ .word 0x00000E10, 0x00000E11
+ .word 0x00000E14, 0x00000E15
+ .word 0x00000E18, 0x00000E19
+ .word 0x00000E1C, 0x00000E1D
+ .word 0x00000E20, 0x00000E21
+ .word 0x00000E24, 0x00000E24
+ .word 0x00000E24, 0x00000E25
+ .word 0x00000E28, 0x00000E28
+ .word 0x00000E28, 0x00000E29
+ .word 0x00000E2C, 0x00000E2C
+ .word 0x00000E2C, 0x00000E2D
+ .word 0x00000E30, 0x00000E30
+ .word 0x00000E30, 0x00000E30
+ .word 0x00000E30, 0x00000E31
+ .word 0x00000E34, 0x00000E34
+ .word 0x00000E34, 0x00000E35
+ .word 0x00000E38, 0x00000E38
+ .word 0x00000E38, 0x00000E39
+ .word 0x00000E3C, 0x00000E3C
+ .word 0x00000E3C, 0x00000E3D
+ .word 0x00000E40, 0x00000E40
+ .word 0x00000E40, 0x00000E41
+ .word 0x00000E44, 0x00000E44
+ .word 0x00000E44, 0x00000E45
+ .word 0x00000E48, 0x00000E49
+ .word 0x00000E4C, 0x00000E4D
+ .word 0x00000E50, 0x00000E51
+ .word 0x00000E54, 0x00000E55
+ .word 0x00000E58, 0x00000E59
+ .word 0x00000E5C, 0x00000E5D
+ .word 0x00000E60, 0x00000E61
+ .word 0x00000E64, 0x00000E65
+ .word 0x00000E68, 0x00000E69
+ .word 0x00000E6C, 0x00000E6D
+ .word 0x00000E70, 0x00000E71
+ .word 0x00000E74, 0x00000E75
+ .word 0x00000E78, 0x00000E78
+ .word 0x00000E78, 0x00000E79
+ .word 0x00000E7C, 0x00000E7C
+ .word 0x00000E7C, 0x00000E7D
+ .word 0x00000E80, 0x00000E80
+ .word 0x00000E80, 0x00000E81
+ .word 0x00000E84, 0x00000E84
+ .word 0x00000E84, 0x00000E85
+ .word 0x00000E88, 0x00000E88
+ .word 0x00000E88, 0x00000E89
+ .word 0x00000E8C, 0x00000E8C
+ .word 0x00000E8C, 0x00000E8D
+ .word 0x00000E90, 0x00000E91
+ .word 0x00000E94, 0x00000E95
+ .word 0x00000E98, 0x00000E99
+ .word 0x00000E9C, 0x00000E9D
+ .word 0x00000EA0, 0x00000EA1
+ .word 0x00000EA4, 0x00000EA5
+ .word 0x00000EA8, 0x00000EA9
+ .word 0x00000EAC, 0x00000EAD
+ .word 0x00000EB0, 0x00000EB1
+ .word 0x00000EB4, 0x00000EB5
+ .word 0x00000EB8, 0x00000EB9
+ .word 0x00000EBC, 0x00000EBD
+ .word 0x00000EC0, 0x00000EC1
+ .word 0x00000EC4, 0x00000EC5
+ .word 0x00000EC8, 0x00000EC9
+ .word 0x00000ECC, 0x00000ECD
+ .word 0x00000ED0, 0x00000ED1
+ .word 0x00000ED4, 0x00000ED5
+ .word 0x00000ED8, 0x00000ED9
+ .word 0x00000EDC, 0x00000EDD
+ .word 0x00000EE0, 0x00000EE1
+ .word 0x00000EE4, 0x00000EE5
+ .word 0x00000EE8, 0x00000EE9
+ .word 0x00000EEC, 0x00000EED
+ .word 0x00000EF0, 0x00000EF1
+ .word 0x00000EF4, 0x00000EF5
+ .word 0x00000EF8, 0x00000EF9
+ .word 0x00000EFC, 0x00000EFD
+ .word 0x00000F00, 0x00000F01
+ .word 0x00000F04, 0x00000F05
+ .word 0x00000F08, 0x00000F09
+ .word 0x00000F0C, 0x00000F0D
+ .word 0x00000F10, 0x00000F11
+ .word 0x00000F14, 0x00000F15
+ .word 0x00000F18, 0x00000F19
+ .word 0x00000F1C, 0x00000F1D
+ .word 0x00000F20, 0x00000F21
+ .word 0x00000F24, 0x00000F25
+ .word 0x00000F28, 0x00000F29
+ .word 0x00000F2C, 0x00000F2D
+ .word 0x00000F30, 0x00000F31
+ .word 0x00000F34, 0x00000F35
+ .word 0x00000F38, 0x00000F39
+ .word 0x00000F3C, 0x00000F3D
+ .word 0x00000F40, 0x00000F41
+ .word 0x00000F44, 0x00000F45
+ .word 0x00000F48, 0x00000F49
+ .word 0x00000F4C, 0x00000F4D
+ .word 0x00000F50, 0x00000F51
+ .word 0x00000F54, 0x00000F55
+ .word 0x00000F58, 0x00000F59
+ .word 0x00000F5C, 0x00000F5D
+ .word 0x00000F60, 0x00000F61
+ .word 0x00000F64, 0x00000F65
+ .word 0x00000F68, 0x00000F69
+ .word 0x00000F6C, 0x00000F6D
+ .word 0x00000F70, 0x00000F71
+ .word 0x00000F74, 0x00000F75
+ .word 0x00000F78, 0x00000F79
+ .word 0x00000F7C, 0x00000F7D
+ .word 0x00000F80, 0x00000F81
+ .word 0x00000F84, 0x00000F85
+ .word 0x00000F88, 0x00000F89
+ .word 0x00000F8C, 0x00000F8D
+ .word 0x00000F90, 0x00000F91
+ .word 0x00000F94, 0x00000F95
+ .word 0x00000F98, 0x00000F99
+ .word 0x00000F9C, 0x00000F9D
+ .word 0x00000FA0, 0x00000FA1
+ .word 0x00000FA4, 0x00000FA5
+ .word 0x00000FA8, 0x00000FA9
+ .word 0x00000FAC, 0x00000FAD
+ .word 0x00000FB0, 0x00000FB1
+ .word 0x00000FB4, 0x00000FB5
+ .word 0x00000FB8, 0x00000FB9
+ .word 0x00000FBC, 0x00000FBD
+ .word 0x00000FC0, 0x00000FC1
+ .word 0x00000FC4, 0x00000FC5
+ .word 0x00000FC8, 0x00000FC9
+ .word 0x00000FCC, 0x00000FCD
+ .word 0x00000FD0, 0x00000FD1
+ .word 0x00000FD4, 0x00000FD5
+ .word 0x00000FD8, 0x00000FD9
+ .word 0x00000FDC, 0x00000FDD
+ .word 0x00000FE0, 0x00000FE1
+ .word 0x00000FE4, 0x00000FE5
+ .word 0x00000FE8, 0x00000FE9
+ .word 0x00000FEC, 0x00000FED
+ .word 0x00000FF0, 0x00000FF1
+ .word 0x00000FF4, 0x00000FF5
+ .word 0x00000FF8, 0x00000FF9
+ .word 0x00000FFC, 0x00000FFD
+ .word 0x00001000, 0x00001001
+ .word 0x00001004, 0x00001005
+ .word 0x00001008, 0x00001009
+ .word 0x0000100C, 0x0000100D
+ .word 0x00001010, 0x00001011
+ .word 0x00001014, 0x00001015
+ .word 0x00001018, 0x00001019
+ .word 0x0000101C, 0x0000101D
+ .word 0x00001020, 0x00001021
+ .word 0x00001024, 0x00001025
+ .word 0x00001028, 0x00001029
+ .word 0x0000102C, 0x0000102D
+ .word 0x00001030, 0x00001031
+ .word 0x00001034, 0x00001035
+ .word 0x00001038, 0x00001039
+ .word 0x0000103C, 0x0000103D
+ .word 0x00001040, 0x00001041
+ .word 0x00001044, 0x00001045
+ .word 0x00001048, 0x00001049
+ .word 0x0000104C, 0x0000104D
+ .word 0x00001050, 0x00001051
+ .word 0x00001054, 0x00001055
+ .word 0x00001058, 0x00001059
+ .word 0x0000105C, 0x0000105D
+ .word 0x00001060, 0x00001061
+ .word 0x00001064, 0x00001065
+ .word 0x00001068, 0x00001069
+ .word 0x0000106C, 0x0000106D
+ .word 0x00001070, 0x00001071
+ .word 0x00001074, 0x00001075
+ .word 0x00001078, 0x00001079
+ .word 0x0000107C, 0x0000107D
+ .word 0x00001080, 0x00001081
+ .word 0x00001084, 0x00001085
+ .word 0x00001088, 0x00001089
+ .word 0x0000108C, 0x0000108D
+ .word 0x00001090, 0x00001091
+ .word 0x00001094, 0x00001095
+ .word 0x00001098, 0x00001099
+ .word 0x0000109C, 0x0000109D
+ .word 0x000010A0, 0x000010A1
+ .word 0x000010A4, 0x000010A5
+ .word 0x000010A8, 0x000010A9
+ .word 0x000010AC, 0x000010AD
+ .word 0x000010B0, 0x000010B1
+ .word 0x000010B4, 0x000010B5
+ .word 0x000010B8, 0x000010B9
+ .word 0x000010BC, 0x000010BD
+ .word 0x000010C0, 0x000010C1
+ .word 0x000010C4, 0x000010C5
+ .word 0x000010C8, 0x000010C9
+ .word 0x000010CC, 0x000010CD
+ .word 0x000010D0, 0x000010D1
+ .word 0x000010D4, 0x000010D5
+ .word 0x000010D8, 0x000010D9
+ .word 0x000010DC, 0x000010DD
+ .word 0x000010E0, 0x000010E1
+ .word 0x000010E4, 0x000010E5
+ .word 0x000010E8, 0x000010E9
+ .word 0x000010EC, 0x000010ED
+ .word 0x000010F0, 0x000010F1
+ .word 0x000010F4, 0x000010F5
+ .word 0x000010F8, 0x000010F9
+ .word 0x000010FC, 0x000010FD
+ .word 0x00001100, 0x00001101
+ .word 0x00001104, 0x00001105
+ .word 0x00001108, 0x00001109
+ .word 0x0000110C, 0x0000110D
+ .word 0x00001110, 0x00001110
+ .word 0x00001110, 0x00001111
+ .word 0x00001114, 0x00001114
+ .word 0x00001114, 0x00001115
+ .word 0x00001118, 0x00001119
+ .word 0x0000111C, 0x0000111D
+ .word 0x00001120, 0x00001121
+ .word 0x00001124, 0x00001125
+ .word 0x00001128, 0x00001129
+ .word 0x0000112C, 0x0000112D
+ .word 0x00001130, 0x00001131
+ .word 0x00001134, 0x00001135
+ .word 0x00001138, 0x00001139
+ .word 0x0000113C, 0x0000113D
+ .word 0x00001140, 0x00001141
+ .word 0x00001144, 0x00001145
+ .word 0x00001148, 0x00001149
+ .word 0x0000114C, 0x0000114D
+ .word 0x00001150, 0x00001151
+ .word 0x00001154, 0x00001155
+ .word 0x00001158, 0x00001159
+ .word 0x0000115C, 0x0000115D
+ .word 0x00001160, 0x00001161
+ .word 0x00001164, 0x00001165
+ .word 0x00001168, 0x00001169
+ .word 0x0000116C, 0x0000116D
+ .word 0x00001170, 0x00001171
+ .word 0x00001174, 0x00001175
+ .word 0x00001178, 0x00001179
+ .word 0x0000117C, 0x0000117D
+ .word 0x00001180, 0x00001181
+ .word 0x00001184, 0x00001185
+ .word 0x00001188, 0x00001189
+ .word 0x0000118C, 0x0000118D
+ .word 0x00001190, 0x00001191
+ .word 0x00001194, 0x00001195
+ .word 0x00001198, 0x00001199
+ .word 0x0000119C, 0x0000119D
+ .word 0x000011A0, 0x000011A1
+ .word 0x000011A4, 0x000011A5
+ .word 0x000011A8, 0x000011A9
+ .word 0x000011AC, 0x000011AD
+ .word 0x000011B0, 0x000011B1
+ .word 0x000011B4, 0x000011B5
+ .word 0x000011B8, 0x000011B9
+ .word 0x000011BC, 0x000011BD
+ .word 0x000011C0, 0x000011C1
+ .word 0x000011C4, 0x000011C5
+ .word 0x000011C8, 0x000011C9
+ .word 0x000011CC, 0x000011CD
+ .word 0x000011D0, 0x000011D1
+ .word 0x000011D4, 0x000011D5
+ .word 0x000011D8, 0x000011D9
+ .word 0x000011DC, 0x000011DD
+ .word 0x000011E0, 0x000011E1
+ .word 0x000011E4, 0x000011E5
+ .word 0x000011E8, 0x000011E9
+ .word 0x000011EC, 0x000011ED
+ .word 0x000011F0, 0x000011F1
+ .word 0x000011F4, 0x000011F5
+ .word 0x000011F8, 0x000011F9
+ .word 0x000011FC, 0x000011FD
+ .word 0x00001200, 0x00001201
+ .word 0x00001204, 0x00001205
+ .word 0x00001208, 0x00001209
+ .word 0x0000120C, 0x0000120D
+ .word 0x00001210, 0x00001211
+ .word 0x00001214, 0x00001215
+ .word 0x00001218, 0x00001219
+ .word 0x0000121C, 0x0000121D
+ .word 0x00001220, 0x00001221
+ .word 0x00001224, 0x00001225
+ .word 0x00001228, 0x00001229
+ .word 0x0000122C, 0x0000122D
+ .word 0x00001230, 0x00001231
+ .word 0x00001234, 0x00001235
+ .word 0x00001238, 0x00001239
+ .word 0x0000123C, 0x0000123D
+ .word 0x00001240, 0x00001241
+ .word 0x00001244, 0x00001245
+ .word 0x00001248, 0x00001249
+ .word 0x0000124C, 0x0000124D
+ .word 0x00001250, 0x00001251
+ .word 0x00001254, 0x00001255
+ .word 0x00001258, 0x00001258
+ .word 0x00001258, 0x00001259
+ .word 0x0000125C, 0x0000125C
+ .word 0x0000125C, 0x0000125D
+ .word 0x00001260, 0x00001261
+ .word 0x00001264, 0x00001264
+ .word 0x00001264, 0x00001265
+ .word 0x00001268, 0x00001268
+ .word 0x00001268, 0x00001269
+ .word 0x0000126C, 0x0000126D
+ .word 0x00001270, 0x00001271
+ .word 0x00001274, 0x00001275
+ .word 0x00001278, 0x00001279
+ .word 0x0000127C, 0x0000127D
+ .word 0x00001280, 0x00001281
+ .word 0x00001284, 0x00001285
+ .word 0x00001288, 0x00001289
+ .word 0x0000128C, 0x0000128D
+ .word 0x00001290, 0x00001291
+ .word 0x00001294, 0x00001295
+ .word 0x00001298, 0x00001299
+ .word 0x0000129C, 0x0000129D
+ .word 0x000012A0, 0x000012A1
+ .word 0x000012A4, 0x000012A5
+ .word 0x000012A8, 0x000012A9
+ .word 0x000012AC, 0x000012AD
+ .word 0x000012B0, 0x000012B1
+ .word 0x000012B4, 0x000012B5
+ .word 0x000012B8, 0x000012B9
+ .word 0x000012BC, 0x000012BD
+ .word 0x000012C0, 0x000012C1
+ .word 0x000012C4, 0x000012C5
+ .word 0x000012C8, 0x000012C9
+ .word 0x000012CC, 0x000012CD
+ .word 0x000012D0, 0x000012D1
+ .word 0x000012D4, 0x000012D5
+ .word 0x000012D8, 0x000012D9
+ .word 0x000012DC, 0x000012DD
+ .word 0x000012E0, 0x000012E1
+ .word 0x000012E4, 0x000012E5
+ .word 0x000012E8, 0x000012E9
+ .word 0x000012EC, 0x000012ED
+ .word 0x000012F0, 0x000012F1
+ .word 0x000012F4, 0x000012F5
+ .word 0x000012F8, 0x000012F9
+ .word 0x000012FC, 0x000012FD
+ .word 0x00001300, 0x00001301
+ .word 0x00001304, 0x00001305
+ .word 0x00001308, 0x00001309
+ .word 0x0000130C, 0x0000130D
+ .word 0x00001310, 0x00001311
+ .word 0x00001314, 0x00001315
+ .word 0x00001318, 0x00001319
+ .word 0x0000131C, 0x0000131D
+ .word 0x00001320, 0x00001321
+ .word 0x00001324, 0x00001325
+ .word 0x00001328, 0x00001329
+ .word 0x0000132C, 0x0000132D
+ .word 0x00001330, 0x00001331
+ .word 0x00001334, 0x00001335
+ .word 0x00001338, 0x00001339
+ .word 0x0000133C, 0x0000133D
+ .word 0x00001340, 0x00001341
+ .word 0x00001344, 0x00001345
+ .word 0x00001348, 0x00001349
+ .word 0x0000134C, 0x0000134D
+ .word 0x00001350, 0x00001351
+ .word 0x00001354, 0x00001355
+ .word 0x00001358, 0x00001359
+ .word 0x0000135C, 0x0000135D
+ .word 0x00001360, 0x00001361
+ .word 0x00001364, 0x00001365
+ .word 0x00001368, 0x00001369
+ .word 0x0000136C, 0x0000136D
+ .word 0x00001370, 0x00001371
+ .word 0x00001374, 0x00001375
+ .word 0x00001378, 0x00001379
+ .word 0x0000137C, 0x0000137D
+ .word 0x00001380, 0x00001381
+ .word 0x00001384, 0x00001385
+ .word 0x00001388, 0x00001389
+ .word 0x0000138C, 0x0000138D
+ .word 0x00001390, 0x00001391
+ .word 0x00001394, 0x00001395
+ .word 0x00001398, 0x00001399
+ .word 0x0000139C, 0x0000139D
+ .word 0x000013A0, 0x000013A1
+ .word 0x000013A4, 0x000013A5
+ .word 0x000013A8, 0x000013A9
+ .word 0x000013AC, 0x000013AD
+ .word 0x000013B0, 0x000013B1
+ .word 0x000013B4, 0x000013B5
+ .word 0x000013B8, 0x000013B9
+ .word 0x000013BC, 0x000013BD
+ .word 0x000013C0, 0x000013C1
+ .word 0x000013C4, 0x000013C5
+ .word 0x000013C8, 0x000013C8
+ .word 0x000013C8, 0x000013C9
+ .word 0x000013CC, 0x000013CC
+ .word 0x000013CC, 0x000013CD
+ .word 0x000013D0, 0x000013D0
+ .word 0x000013D0, 0x000013D1
+ .word 0x000013D4, 0x000013D4
+ .word 0x000013D4, 0x000013D5
+ .word 0x000013D8, 0x000013D9
+ .word 0x000013DC, 0x000013DD
+ .word 0x000013E0, 0x000013E1
+ .word 0x000013E4, 0x000013E5
+ .word 0x000013E8, 0x000013E9
+ .word 0x000013EC, 0x000013ED
+ .word 0x000013F0, 0x000013F1
+ .word 0x000013F4, 0x000013F5
+ .word 0x000013F8, 0x000013F9
+ .word 0x000013FC, 0x000013FD
+ .word 0x00001400, 0x00001401
+ .word 0x00001404, 0x00001405
+ .word 0x00001408, 0x00001409
+ .word 0x0000140C, 0x0000140D
+ .word 0x00001410, 0x00001411
+ .word 0x00001414, 0x00001415
+ .word 0x00001418, 0x00001418
+ .word 0x00001418, 0x00001419
+ .word 0x0000141C, 0x0000141C
+ .word 0x0000141C, 0x0000141D
+ .word 0x00001420, 0x00001420
+ .word 0x00001420, 0x00001421
+ .word 0x00001424, 0x00001424
+ .word 0x00001424, 0x00001425
+ .word 0x00001428, 0x00001429
+ .word 0x0000142C, 0x0000142D
+ .word 0x00001430, 0x00001431
+ .word 0x00001434, 0x00001435
+ .word 0x00001438, 0x00001439
+ .word 0x0000143C, 0x0000143D
+ .word 0x00001440, 0x00001441
+ .word 0x00001444, 0x00001445
+ .word 0x00001448, 0x00001449
+ .word 0x0000144C, 0x0000144D
+ .word 0x00001450, 0x00001451
+ .word 0x00001454, 0x00001455
+ .word 0x00001458, 0x00001459
+ .word 0x0000145C, 0x0000145D
+ .word 0x00001460, 0x00001461
+ .word 0x00001464, 0x00001465
+ .word 0x00001468, 0x00001469
+ .word 0x0000146C, 0x0000146D
+ .word 0x00001470, 0x00001471
+ .word 0x00001474, 0x00001475
+ .word 0x00001478, 0x00001479
+ .word 0x0000147C, 0x0000147D
+ .word 0x00001480, 0x00001481
+ .word 0x00001484, 0x00001485
+ .word 0x00001488, 0x00001489
+ .word 0x0000148C, 0x0000148D
+ .word 0x00001490, 0x00001491
+ .word 0x00001494, 0x00001495
+ .word 0x00001498, 0x00001499
+ .word 0x0000149C, 0x0000149D
+ .word 0x000014A0, 0x000014A1
+ .word 0x000014A4, 0x000014A5
+ .word 0x000014A8, 0x000014A9
+ .word 0x000014AC, 0x000014AD
+ .word 0x000014B0, 0x000014B1
+ .word 0x000014B4, 0x000014B5
+ .word 0x000014B8, 0x000014B9
+ .word 0x000014BC, 0x000014BD
+ .word 0x000014C0, 0x000014C1
+ .word 0x000014C4, 0x000014C5
+ .word 0x000014C8, 0x000014C9
+ .word 0x000014CC, 0x000014CD
+ .word 0x000014D0, 0x000014D1
+ .word 0x000014D4, 0x000014D5
+ .word 0x000014D8, 0x000014D9
+ .word 0x000014DC, 0x000014DD
+ .word 0x000014E0, 0x000014E1
+ .word 0x000014E4, 0x000014E5
+ .word 0x000014E8, 0x000014E9
+ .word 0x000014EC, 0x000014ED
+ .word 0x000014F0, 0x000014F1
+ .word 0x000014F4, 0x000014F5
+ .word 0x000014F8, 0x000014F9
+ .word 0x000014FC, 0x000014FD
+ .word 0x00001500, 0x00001501
+ .word 0x00001504, 0x00001505
+ .word 0x00001508, 0x00001509
+ .word 0x0000150C, 0x0000150D
+ .word 0x00001510, 0x00001511
+ .word 0x00001514, 0x00001515
+ .word 0x00001518, 0x00001519
+ .word 0x0000151C, 0x0000151D
+ .word 0x00001520, 0x00001521
+ .word 0x00001524, 0x00001525
+ .word 0x00001528, 0x00001529
+ .word 0x0000152C, 0x0000152D
+ .word 0x00001530, 0x00001531
+ .word 0x00001534, 0x00001535
+ .word 0x00001538, 0x00001539
+ .word 0x0000153C, 0x0000153D
+ .word 0x00001540, 0x00001541
+ .word 0x00001544, 0x00001545
+ .word 0x00001548, 0x00001549
+ .word 0x0000154C, 0x0000154D
+ .word 0x00001550, 0x00001551
+ .word 0x00001554, 0x00001555
+ .word 0x00001558, 0x00001559
+ .word 0x0000155C, 0x0000155D
+ .word 0x00001560, 0x00001561
+ .word 0x00001564, 0x00001565
+ .word 0x00001568, 0x00001569
+ .word 0x0000156C, 0x0000156D
+ .word 0x00001570, 0x00001571
+ .word 0x00001574, 0x00001575
+ .word 0x00001578, 0x00001579
+ .word 0x0000157C, 0x0000157D
+ .word 0x00001580, 0x00001581
+ .word 0x00001584, 0x00001585
+ .word 0x00001588, 0x00001589
+ .word 0x0000158C, 0x0000158D
+ .word 0x00001590, 0x00001591
+ .word 0x00001594, 0x00001595
+ .word 0x00001598, 0x00001599
+ .word 0x0000159C, 0x0000159D
+ .word 0x000015A0, 0x000015A1
+ .word 0x000015A4, 0x000015A5
+ .word 0x000015A8, 0x000015A9
+ .word 0x000015AC, 0x000015AD
+ .word 0x000015B0, 0x000015B1
+ .word 0x000015B4, 0x000015B5
+ .word 0x000015B8, 0x000015B9
+ .word 0x000015BC, 0x000015BD
+ .word 0x000015C0, 0x000015C1
+ .word 0x000015C4, 0x000015C5
+ .word 0x000015C8, 0x000015C9
+ .word 0x000015CC, 0x000015CD
+ .word 0x000015D0, 0x000015D1
+ .word 0x000015D4, 0x000015D5
+ .word 0x000015D8, 0x000015D9
+ .word 0x000015DC, 0x000015DD
+ .word 0x000015E0, 0x000015E1
+ .word 0x000015E4, 0x000015E5
+ .word 0x000015E8, 0x000015E9
+ .word 0x000015EC, 0x000015ED
+ .word 0x000015F0, 0x000015F1
+ .word 0x000015F4, 0x000015F5
+ .word 0x000015F8, 0x000015F8
+ .word 0x000015F8, 0x000015F9
+ .word 0x000015FC, 0x000015FC
+ .word 0x000015FC, 0x000015FD
+ .word 0x00001600, 0x00001600
+ .word 0x00001600, 0x00001601
+ .word 0x00001604, 0x00001604
+ .word 0x00001604, 0x00001605
+ .word 0x00001608, 0x00001608
+ .word 0x00001608, 0x00001609
+ .word 0x0000160C, 0x0000160C
+ .word 0x0000160C, 0x0000160D
+ .word 0x00001610, 0x00001610
+ .word 0x00001610, 0x00001611
+ .word 0x00001614, 0x00001614
+ .word 0x00001614, 0x00001615
+ .word 0x00001618, 0x00001618
+ .word 0x00001618, 0x00001619
+ .word 0x0000161C, 0x0000161C
+ .word 0x0000161C, 0x0000161D
+ .word 0x00001620, 0x00001620
+ .word 0x00001620, 0x00001621
+ .word 0x00001624, 0x00001624
+ .word 0x00001624, 0x00001625
+ .word 0x00001628, 0x00001629
+ .word 0x0000162C, 0x0000162C
+ .word 0x0000162C, 0x0000162D
+ .word 0x00001630, 0x00001630
+ .word 0x00001630, 0x00001630
+ .word 0x00001630, 0x00001631
+ .word 0x00001634, 0x00001634
+ .word 0x00001634, 0x00001635
+ .word 0x00001638, 0x00001638
+ .word 0x00001638, 0x00001639
+ .word 0x0000163C, 0x0000163C
+ .word 0x0000163C, 0x0000163D
+ .word 0x00001640, 0x00001640
+ .word 0x00001640, 0x00001641
+ .word 0x00001644, 0x00001644
+ .word 0x00001644, 0x00001645
+ .word 0x00001648, 0x00001648
+ .word 0x00001648, 0x00001649
+ .word 0x0000164C, 0x0000164C
+ .word 0x0000164C, 0x0000164D
+ .word 0x00001650, 0x00001650
+ .word 0x00001650, 0x00001651
+ .word 0x00001654, 0x00001654
+ .word 0x00001654, 0x00001655
+ .word 0x00001658, 0x00001658
+ .word 0x00001658, 0x00001659
+ .word 0x0000165C, 0x0000165C
+ .word 0x0000165C, 0x0000165D
+ .word 0x00001660, 0x00001661
+ .word 0x00001664, 0x00001665
+ .word 0x00001668, 0x00001669
+ .word 0x0000166C, 0x0000166D
+ .word 0x00001670, 0x00001671
+ .word 0x00001674, 0x00001675
+ .word 0x00001678, 0x00001679
+ .word 0x0000167C, 0x0000167D
+ .word 0x00001680, 0x00001681
+ .word 0x00001684, 0x00001685
+ .word 0x00001688, 0x00001689
+ .word 0x0000168C, 0x0000168D
+ .word 0x00001690, 0x00001691
+ .word 0x00001694, 0x00001695
+ .word 0x00001698, 0x00001699
+ .word 0x0000169C, 0x0000169D
+ .word 0x000016A0, 0x000016A1
+ .word 0x000016A4, 0x000016A5
+ .word 0x000016A8, 0x000016A9
+ .word 0x000016AC, 0x000016AD
+ .word 0x000016B0, 0x000016B1
+ .word 0x000016B4, 0x000016B5
+ .word 0x000016B8, 0x000016B9
+ .word 0x000016BC, 0x000016BD
+ .word 0x000016C0, 0x000016C1
+ .word 0x000016C4, 0x000016C5
+ .word 0x000016C8, 0x000016C9
+ .word 0x000016CC, 0x000016CD
+ .word 0x000016D0, 0x000016D1
+ .word 0x000016D4, 0x000016D5
+ .word 0x000016D8, 0x000016D9
+ .word 0x000016DC, 0x000016DD
+ .word 0x000016E0, 0x000016E1
+ .word 0x000016E4, 0x000016E5
+ .word 0x000016E8, 0x000016E9
+ .word 0x000016EC, 0x000016ED
+ .word 0x000016F0, 0x000016F1
+ .word 0x000016F4, 0x000016F5
+ .word 0x000016F8, 0x000016F9
+ .word 0x000016FC, 0x000016FD
+ .word 0x00001700, 0x00001701
+ .word 0x00001704, 0x00001705
+ .word 0x00001708, 0x00001709
+ .word 0x0000170C, 0x0000170D
+ .word 0x00001710, 0x00001711
+ .word 0x00001714, 0x00001715
+ .word 0x00001718, 0x00001719
+ .word 0x0000171C, 0x0000171D
+ .word 0x00001720, 0x00001721
+ .word 0x00001724, 0x00001725
+ .word 0x00001728, 0x00001729
+ .word 0x0000172C, 0x0000172D
+ .word 0x00001730, 0x00001731
+ .word 0x00001734, 0x00001735
+ .word 0x00001738, 0x00001739
+ .word 0x0000173C, 0x0000173D
+ .word 0x00001740, 0x00001741
+ .word 0x00001744, 0x00001745
+ .word 0x00001748, 0x00001749
+ .word 0x0000174C, 0x0000174D
+ .word 0x00001750, 0x00001751
+ .word 0x00001754, 0x00001755
+ .word 0x00001758, 0x00001759
+ .word 0x0000175C, 0x0000175D
+ .word 0x00001760, 0x00001761
+ .word 0x00001764, 0x00001765
+ .word 0x00001768, 0x00001769
+ .word 0x0000176C, 0x0000176D
+ .word 0x00001770, 0x00001771
+ .word 0x00001774, 0x00001775
+ .word 0x00001778, 0x00001779
+ .word 0x0000177C, 0x0000177D
+ .word 0x00001780, 0x00001781
+ .word 0x00001784, 0x00001785
+ .word 0x00001788, 0x00001789
+ .word 0x0000178C, 0x0000178D
+ .word 0x00001790, 0x00001791
+ .word 0x00001794, 0x00001795
+ .word 0x00001798, 0x00001799
+ .word 0x0000179C, 0x0000179D
+ .word 0x000017A0, 0x000017A1
+ .word 0x000017A4, 0x000017A5
+ .word 0x000017A8, 0x000017A9
+ .word 0x000017AC, 0x000017AD
+ .word 0x000017B0, 0x000017B1
+ .word 0x000017B4, 0x000017B5
+ .word 0x000017B8, 0x000017B9
+ .word 0x000017BC, 0x000017BD
+ .word 0x000017C0, 0x000017C1
+ .word 0x000017C4, 0x000017C5
+ .word 0x000017C8, 0x000017C9
+ .word 0x000017CC, 0x000017CD
+ .word 0x000017D0, 0x000017D1
+ .word 0x000017D4, 0x000017D5
+ .word 0x000017D8, 0x000017D9
+ .word 0x000017DC, 0x000017DD
+ .word 0x000017E0, 0x000017E1
+ .word 0x000017E4, 0x000017E5
+ .word 0x000017E8, 0x000017E9
+ .word 0x000017EC, 0x000017ED
+ .word 0x000017F0, 0x000017F1
+ .word 0x000017F4, 0x000017F5
+ .word 0x000017F8, 0x000017F9
+ .word 0x000017FC, 0x000017FD
+ .word 0x00001800, 0x00001801
+ .word 0x00001804, 0x00001804
+ .word 0x00001804, 0x00001805
+ .word 0x00001808, 0x00001808
+ .word 0x00001808, 0x00001808
+ .word 0x00001808, 0x00001809
+ .word 0x0000180C, 0x0000180C
+ .word 0x0000180C, 0x0000180D
+ .word 0x00001810, 0x00001811
+ .word 0x00001814, 0x00001815
+ .word 0x00001818, 0x00001819
+ .word 0x0000181C, 0x0000181D
+ .word 0x00001820, 0x00001821
+ .word 0x00001824, 0x00001824
+ .word 0x00001824, 0x00001825
+ .word 0x00001828, 0x00001828
+ .word 0x00001828, 0x00001829
+ .word 0x0000182C, 0x0000182D
+ .word 0x00001830, 0x00001831
+ .word 0x00001834, 0x00001835
+ .word 0x00001838, 0x00001839
+ .word 0x0000183C, 0x0000183D
+ .word 0x00001840, 0x00001841
+ .word 0x00001844, 0x00001845
+ .word 0x00001848, 0x00001849
+ .word 0x0000184C, 0x0000184D
+ .word 0x00001850, 0x00001851
+ .word 0x00001854, 0x00001855
+ .word 0x00001858, 0x00001859
+ .word 0x0000185C, 0x0000185D
+ .word 0x00001860, 0x00001861
+ .word 0x00001864, 0x00001865
+ .word 0x00001868, 0x00001869
+ .word 0x0000186C, 0x0000186D
+ .word 0x00001870, 0x00001871
+ .word 0x00001874, 0x00001875
+ .word 0x00001878, 0x00001879
+ .word 0x0000187C, 0x0000187D
+ .word 0x00001880, 0x00001881
+ .word 0x00001884, 0x00001885
+ .word 0x00001888, 0x00001889
+ .word 0x0000188C, 0x0000188D
+ .word 0x00001890, 0x00001891
+ .word 0x00001894, 0x00001895
+ .word 0x00001898, 0x00001899
+ .word 0x0000189C, 0x0000189D
+ .word 0x000018A0, 0x000018A1
+ .word 0x000018A4, 0x000018A5
+ .word 0x000018A8, 0x000018A9
+ .word 0x000018AC, 0x000018AD
+ .word 0x000018B0, 0x000018B1
+ .word 0x000018B4, 0x000018B5
+ .word 0x000018B8, 0x000018B9
+ .word 0x000018BC, 0x000018BD
+ .word 0x000018C0, 0x000018C1
+ .word 0x000018C4, 0x000018C5
+ .word 0x000018C8, 0x000018C9
+ .word 0x000018CC, 0x000018CD
+ .word 0x000018D0, 0x000018D1
+ .word 0x000018D4, 0x000018D5
+ .word 0x000018D8, 0x000018D9
+ .word 0x000018DC, 0x000018DD
+ .word 0x000018E0, 0x000018E1
+ .word 0x000018E4, 0x000018E5
+ .word 0x000018E8, 0x000018E9
+ .word 0x000018EC, 0x000018ED
+ .word 0x000018F0, 0x000018F1
+ .word 0x000018F4, 0x000018F5
+ .word 0x000018F8, 0x000018F9
+ .word 0x000018FC, 0x000018FD
+ .word 0x00001900, 0x00001901
+ .word 0x00001904, 0x00001905
+ .word 0x00001908, 0x00001909
+ .word 0x0000190C, 0x0000190D
+ .word 0x00001910, 0x00001911
+ .word 0x00001914, 0x00001915
+ .word 0x00001918, 0x00001919
+ .word 0x0000191C, 0x0000191D
+ .word 0x00001920, 0x00001921
+ .word 0x00001924, 0x00001925
+ .word 0x00001928, 0x00001929
+ .word 0x0000192C, 0x0000192D
+ .word 0x00001930, 0x00001931
+ .word 0x00001934, 0x00001935
+ .word 0x00001938, 0x00001939
+ .word 0x0000193C, 0x0000193D
+ .word 0x00001940, 0x00001941
+ .word 0x00001944, 0x00001945
+ .word 0x00001948, 0x00001949
+ .word 0x0000194C, 0x0000194D
+ .word 0x00001950, 0x00001951
+ .word 0x00001954, 0x00001955
+ .word 0x00001958, 0x00001958
+ .word 0x00001958, 0x00001959
+ .word 0x0000195C, 0x0000195C
+ .word 0x0000195C, 0x0000195D
+ .word 0x00001960, 0x00001960
+ .word 0x00001960, 0x00001961
+ .word 0x00001964, 0x00001964
+ .word 0x00001964, 0x00001965
+ .word 0x00001968, 0x00001969
+ .word 0x0000196C, 0x0000196D
+ .word 0x00001970, 0x00001971
+ .word 0x00001974, 0x00001975
+ .word 0x00001978, 0x00001979
+ .word 0x0000197C, 0x0000197D
+ .word 0x00001980, 0x00001981
+ .word 0x00001984, 0x00001985
+ .word 0x00001988, 0x00001989
+ .word 0x0000198C, 0x0000198C
+ .word 0x0000198C, 0x0000198D
+ .word 0x00001990, 0x00001990
+ .word 0x00001990, 0x00001991
+ .word 0x00001994, 0x00001995
+ .word 0x00001998, 0x00001999
+ .word 0x0000199C, 0x0000199D
+ .word 0x000019A0, 0x000019A1
+ .word 0x000019A4, 0x000019A5
+ .word 0x000019A8, 0x000019A9
+ .word 0x000019AC, 0x000019AD
+ .word 0x000019B0, 0x000019B1
+ .word 0x000019B4, 0x000019B5
+ .word 0x000019B8, 0x000019B9
+ .word 0x000019BC, 0x000019BD
+ .word 0x000019C0, 0x000019C1
+ .word 0x000019C4, 0x000019C5
+ .word 0x000019C8, 0x000019C9
+ .word 0x000019CC, 0x000019CD
+ .word 0x000019D0, 0x000019D1
+ .word 0x000019D4, 0x000019D5
+ .word 0x000019D8, 0x000019D9
+ .word 0x000019DC, 0x000019DD
+ .word 0x000019E0, 0x000019E1
+ .word 0x000019E4, 0x000019E5
+ .word 0x000019E8, 0x000019E9
+ .word 0x000019EC, 0x000019ED
+ .word 0x000019F0, 0x000019F1
+ .word 0x000019F4, 0x000019F5
+ .word 0x000019F8, 0x000019F9
+ .word 0x000019FC, 0x000019FD
+ .word 0x00001A00, 0x00001A01
+ .word 0x00001A04, 0x00001A05
+ .word 0x00001A08, 0x00001A09
+ .word 0x00001A0C, 0x00001A0D
+ .word 0x00001A10, 0x00001A11
+ .word 0x00001A14, 0x00001A15
+ .word 0x00001A18, 0x00001A19
+ .word 0x00001A1C, 0x00001A1D
+ .word 0x00001A20, 0x00001A21
+ .word 0x00001A24, 0x00001A25
+ .word 0x00001A28, 0x00001A29
+ .word 0x00001A2C, 0x00001A2D
+ .word 0x00001A30, 0x00001A31
+ .word 0x00001A34, 0x00001A35
+ .word 0x00001A38, 0x00001A39
+ .word 0x00001A3C, 0x00001A3D
+ .word 0x00001A40, 0x00001A41
+ .word 0x00001A44, 0x00001A45
+ .word 0x00001A48, 0x00001A49
+ .word 0x00001A4C, 0x00001A4D
+ .word 0x00001A50, 0x00001A51
+ .word 0x00001A54, 0x00001A55
+ .word 0x00001A58, 0x00001A59
+ .word 0x00001A5C, 0x00001A5D
+ .word 0x00001A60, 0x00001A61
+ .word 0x00001A64, 0x00001A65
+ .word 0x00001A68, 0x00001A69
+ .word 0x00001A6C, 0x00001A6D
+ .word 0x00001A70, 0x00001A71
+ .word 0x00001A74, 0x00001A75
+ .word 0x00001A78, 0x00001A79
+ .word 0x00001A7C, 0x00001A7D
+ .word 0x00001A80, 0x00001A81
+ .word 0x00001A84, 0x00001A85
+ .word 0x00001A88, 0x00001A89
+ .word 0x00001A8C, 0x00001A8D
+ .word 0x00001A90, 0x00001A91
+ .word 0x00001A94, 0x00001A95
+ .word 0x00001A98, 0x00001A99
+ .word 0x00001A9C, 0x00001A9D
+ .word 0x00001AA0, 0x00001AA1
+ .word 0x00001AA4, 0x00001AA5
+ .word 0x00001AA8, 0x00001AA9
+ .word 0x00001AAC, 0x00001AAD
+ .word 0x00001AB0, 0x00001AB1
+ .word 0x00001AB4, 0x00001AB5
+ .word 0x00001AB8, 0x00001AB9
+ .word 0x00001ABC, 0x00001ABD
+ .word 0x00001AC0, 0x00001AC1
+ .word 0x00001AC4, 0x00001AC5
+ .word 0x00001AC8, 0x00001AC9
+ .word 0x00001ACC, 0x00001ACD
+ .word 0x00001AD0, 0x00001AD1
+ .word 0x00001AD4, 0x00001AD5
+ .word 0x00001AD8, 0x00001AD9
+ .word 0x00001ADC, 0x00001ADD
+ .word 0x00001AE0, 0x00001AE0
+ .word 0x00001AE0, 0x00001AE1
+ .word 0x00001AE4, 0x00001AE4
+ .word 0x00001AE4, 0x00001AE5
+ .word 0x00001AE8, 0x00001AE9
+ .word 0x00001AEC, 0x00001AED
+ .word 0x00001AF0, 0x00001AF1
+ .word 0x00001AF4, 0x00001AF5
+ .word 0x00001AF8, 0x00001AF9
+ .word 0x00001AFC, 0x00001AFD
+ .word 0x00001B00, 0x00001B01
+ .word 0x00001B04, 0x00001B05
+ .word 0x00001B08, 0x00001B09
+ .word 0x00001B0C, 0x00001B0D
+ .word 0x00001B10, 0x00001B11
+ .word 0x00001B14, 0x00001B15
+ .word 0x00001B18, 0x00001B19
+ .word 0x00001B1C, 0x00001B1D
+ .word 0x00001B20, 0x00001B21
+ .word 0x00001B24, 0x00001B25
+ .word 0x00001B28, 0x00001B29
+ .word 0x00001B2C, 0x00001B2D
+ .word 0x00001B30, 0x00001B31
+ .word 0x00001B34, 0x00001B35
+ .word 0x00001B38, 0x00001B39
+ .word 0x00001B3C, 0x00001B3D
+ .word 0x00001B40, 0x00001B41
+ .word 0x00001B44, 0x00001B45
+ .word 0x00001B48, 0x00001B49
+ .word 0x00001B4C, 0x00001B4D
+ .word 0x00001B50, 0x00001B51
+ .word 0x00001B54, 0x00001B55
+ .word 0x00001B58, 0x00001B59
+ .word 0x00001B5C, 0x00001B5D
+ .word 0x00001B60, 0x00001B61
+ .word 0x00001B64, 0x00001B65
+ .word 0x00001B68, 0x00001B69
+ .word 0x00001B6C, 0x00001B6D
+ .word 0x00001B70, 0x00001B71
+ .word 0x00001B74, 0x00001B75
+ .word 0x00001B78, 0x00001B79
+ .word 0x00001B7C, 0x00001B7D
+ .word 0x00001B80, 0x00001B81
+ .word 0x00001B84, 0x00001B85
+ .word 0x00001B88, 0x00001B89
+ .word 0x00001B8C, 0x00001B8D
+ .word 0x00001B90, 0x00001B91
+ .word 0x00001B94, 0x00001B95
+ .word 0x00001B98, 0x00001B98
+ .word 0x00001B98, 0x00001B99
+ .word 0x00001B9C, 0x00001B9C
+ .word 0x00001B9C, 0x00001B9D
+ .word 0x00001BA0, 0x00001BA0
+ .word 0x00001BA0, 0x00001BA1
+ .word 0x00001BA4, 0x00001BA4
+ .word 0x00001BA4, 0x00001BA5
+ .word 0x00001BA8, 0x00001BA9
+ .word 0x00001BAC, 0x00001BAD
+ .word 0x00001BB0, 0x00001BB1
+ .word 0x00001BB4, 0x00001BB5
+ .word 0x00001BB8, 0x00001BB9
+ .word 0x00001BBC, 0x00001BBD
+ .word 0x00001BC0, 0x00001BC1
+ .word 0x00001BC4, 0x00001BC5
+ .word 0x00001BC8, 0x00001BC9
+ .word 0x00001BCC, 0x00001BCC
+ .word 0x00001BCC, 0x00001BCD
+ .word 0x00001BD0, 0x00001BD0
+ .word 0x00001BD0, 0x00001BD0
+ .word 0x00001BD0, 0x00001BD1
+ .word 0x00001BD4, 0x00001BD4
+ .word 0x00001BD4, 0x00001BD5
+ .word 0x00001BD8, 0x00001BD8
+ .word 0x00001BD8, 0x00001BD9
+ .word 0x00001BDC, 0x00001BDC
+ .word 0x00001BDC, 0x00001BDD
+ .word 0x00001BE0, 0x00001BE0
+ .word 0x00001BE0, 0x00001BE1
+ .word 0x00001BE4, 0x00001BE4
+ .word 0x00001BE4, 0x00001BE5
+ .word 0x00001BE8, 0x00001BE8
+ .word 0x00001BE8, 0x00001BE9
+ .word 0x00001BEC, 0x00001BEC
+ .word 0x00001BEC, 0x00001BED
+ .word 0x00001BF0, 0x00001BF0
+ .word 0x00001BF0, 0x00001BF1
+ .word 0x00001BF4, 0x00001BF4
+ .word 0x00001BF4, 0x00001BF5
+ .word 0x00001BF8, 0x00001BF8
+ .word 0x00001BF8, 0x00001BF9
+ .word 0x00001BFC, 0x00001BFC
+ .word 0x00001BFC, 0x00001BFD
+ .word 0x00001C00, 0x00001C01
+ .word 0x00001C04, 0x00001C05
+ .word 0x00001C08, 0x00001C09
+ .word 0x00001C0C, 0x00001C0D
+ .word 0x00001C10, 0x00001C10
+ .word 0x00001C10, 0x00001C11
+ .word 0x00001C14, 0x00001C14
+ .word 0x00001C14, 0x00001C15
+ .word 0x00001C18, 0x00001C18
+ .word 0x00001C18, 0x00001C19
+ .word 0x00001C1C, 0x00001C1C
+ .word 0x00001C1C, 0x00001C1D
+ .word 0x00001C20, 0x00001C21
+ .word 0x00001C24, 0x00001C24
+ .word 0x00001C24, 0x00001C25
+ .word 0x00001C28, 0x00001C28
+ .word 0x00001C28, 0x00001C28
+ .word 0x00001C28, 0x00001C29
+ .word 0x00001C2C, 0x00001C2C
+ .word 0x00001C2C, 0x00001C2D
+ .word 0x00001C30, 0x00001C30
+ .word 0x00001C30, 0x00001C31
+ .word 0x00001C34, 0x00001C34
+ .word 0x00001C34, 0x00001C35
+ .word 0x00001C38, 0x00001C38
+ .word 0x00001C38, 0x00001C39
+ .word 0x00001C3C, 0x00001C3C
+ .word 0x00001C3C, 0x00001C3D
+ .word 0x00001C40, 0x00001C40
+ .word 0x00001C40, 0x00001C41
+ .word 0x00001C44, 0x00001C44
+ .word 0x00001C44, 0x00001C45
+ .word 0x00001C48, 0x00001C48
+ .word 0x00001C48, 0x00001C49
+ .word 0x00001C4C, 0x00001C4C
+ .word 0x00001C4C, 0x00001C4D
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00001C58 ; chunk size
+ .incbin "baserom.nds", 0xF52DF4, 0x1C50
+ .balign 512, 255
diff --git a/files/FILE_F54C00_height_o.narc.s b/files/FILE_F54C00_height_o.narc.s
new file mode 100644
index 00000000..fdbb9c7f
--- /dev/null
+++ b/files/FILE_F54C00_height_o.narc.s
@@ -0,0 +1,164 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x00000694 ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x0000044C ; chunk size
+ .short 136 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00000001
+ .word 0x00000004, 0x00000005
+ .word 0x00000008, 0x00000009
+ .word 0x0000000C, 0x0000000D
+ .word 0x00000010, 0x00000011
+ .word 0x00000014, 0x00000015
+ .word 0x00000018, 0x00000019
+ .word 0x0000001C, 0x0000001D
+ .word 0x00000020, 0x00000021
+ .word 0x00000024, 0x00000025
+ .word 0x00000028, 0x00000029
+ .word 0x0000002C, 0x0000002D
+ .word 0x00000030, 0x00000031
+ .word 0x00000034, 0x00000035
+ .word 0x00000038, 0x00000039
+ .word 0x0000003C, 0x0000003D
+ .word 0x00000040, 0x00000041
+ .word 0x00000044, 0x00000045
+ .word 0x00000048, 0x00000049
+ .word 0x0000004C, 0x0000004D
+ .word 0x00000050, 0x00000051
+ .word 0x00000054, 0x00000055
+ .word 0x00000058, 0x00000059
+ .word 0x0000005C, 0x0000005D
+ .word 0x00000060, 0x00000061
+ .word 0x00000064, 0x00000065
+ .word 0x00000068, 0x00000069
+ .word 0x0000006C, 0x0000006D
+ .word 0x00000070, 0x00000071
+ .word 0x00000074, 0x00000075
+ .word 0x00000078, 0x00000079
+ .word 0x0000007C, 0x0000007D
+ .word 0x00000080, 0x00000081
+ .word 0x00000084, 0x00000085
+ .word 0x00000088, 0x00000089
+ .word 0x0000008C, 0x0000008D
+ .word 0x00000090, 0x00000091
+ .word 0x00000094, 0x00000095
+ .word 0x00000098, 0x00000099
+ .word 0x0000009C, 0x0000009D
+ .word 0x000000A0, 0x000000A1
+ .word 0x000000A4, 0x000000A5
+ .word 0x000000A8, 0x000000A9
+ .word 0x000000AC, 0x000000AD
+ .word 0x000000B0, 0x000000B1
+ .word 0x000000B4, 0x000000B5
+ .word 0x000000B8, 0x000000B9
+ .word 0x000000BC, 0x000000BD
+ .word 0x000000C0, 0x000000C1
+ .word 0x000000C4, 0x000000C5
+ .word 0x000000C8, 0x000000C9
+ .word 0x000000CC, 0x000000CD
+ .word 0x000000D0, 0x000000D1
+ .word 0x000000D4, 0x000000D5
+ .word 0x000000D8, 0x000000D9
+ .word 0x000000DC, 0x000000DD
+ .word 0x000000E0, 0x000000E1
+ .word 0x000000E4, 0x000000E5
+ .word 0x000000E8, 0x000000E9
+ .word 0x000000EC, 0x000000ED
+ .word 0x000000F0, 0x000000F1
+ .word 0x000000F4, 0x000000F5
+ .word 0x000000F8, 0x000000F9
+ .word 0x000000FC, 0x000000FD
+ .word 0x00000100, 0x00000101
+ .word 0x00000104, 0x00000105
+ .word 0x00000108, 0x00000109
+ .word 0x0000010C, 0x0000010D
+ .word 0x00000110, 0x00000111
+ .word 0x00000114, 0x00000115
+ .word 0x00000118, 0x00000119
+ .word 0x0000011C, 0x0000011D
+ .word 0x00000120, 0x00000121
+ .word 0x00000124, 0x00000125
+ .word 0x00000128, 0x00000129
+ .word 0x0000012C, 0x0000012D
+ .word 0x00000130, 0x00000131
+ .word 0x00000134, 0x00000135
+ .word 0x00000138, 0x00000139
+ .word 0x0000013C, 0x0000013D
+ .word 0x00000140, 0x00000141
+ .word 0x00000144, 0x00000145
+ .word 0x00000148, 0x00000149
+ .word 0x0000014C, 0x0000014D
+ .word 0x00000150, 0x00000151
+ .word 0x00000154, 0x00000155
+ .word 0x00000158, 0x00000159
+ .word 0x0000015C, 0x0000015D
+ .word 0x00000160, 0x00000161
+ .word 0x00000164, 0x00000165
+ .word 0x00000168, 0x00000169
+ .word 0x0000016C, 0x0000016D
+ .word 0x00000170, 0x00000171
+ .word 0x00000174, 0x00000175
+ .word 0x00000178, 0x00000179
+ .word 0x0000017C, 0x0000017D
+ .word 0x00000180, 0x00000181
+ .word 0x00000184, 0x00000185
+ .word 0x00000188, 0x00000189
+ .word 0x0000018C, 0x0000018D
+ .word 0x00000190, 0x00000191
+ .word 0x00000194, 0x00000195
+ .word 0x00000198, 0x00000199
+ .word 0x0000019C, 0x0000019D
+ .word 0x000001A0, 0x000001A1
+ .word 0x000001A4, 0x000001A5
+ .word 0x000001A8, 0x000001A9
+ .word 0x000001AC, 0x000001AD
+ .word 0x000001B0, 0x000001B1
+ .word 0x000001B4, 0x000001B5
+ .word 0x000001B8, 0x000001B9
+ .word 0x000001BC, 0x000001BD
+ .word 0x000001C0, 0x000001C1
+ .word 0x000001C4, 0x000001C5
+ .word 0x000001C8, 0x000001C9
+ .word 0x000001CC, 0x000001CD
+ .word 0x000001D0, 0x000001D1
+ .word 0x000001D4, 0x000001D5
+ .word 0x000001D8, 0x000001D9
+ .word 0x000001DC, 0x000001DD
+ .word 0x000001E0, 0x000001E1
+ .word 0x000001E4, 0x000001E5
+ .word 0x000001E8, 0x000001E9
+ .word 0x000001EC, 0x000001ED
+ .word 0x000001F0, 0x000001F1
+ .word 0x000001F4, 0x000001F5
+ .word 0x000001F8, 0x000001F9
+ .word 0x000001FC, 0x000001FD
+ .word 0x00000200, 0x00000201
+ .word 0x00000204, 0x00000205
+ .word 0x00000208, 0x00000209
+ .word 0x0000020C, 0x0000020D
+ .word 0x00000210, 0x00000211
+ .word 0x00000214, 0x00000215
+ .word 0x00000218, 0x00000219
+ .word 0x0000021C, 0x0000021D
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x00000228 ; chunk size
+ .incbin "baserom.nds", 0xF55074, 0x220
+ .balign 512, 255
diff --git a/files/FILE_F55400_otherpoke.narc.s b/files/FILE_F55400_otherpoke.narc.s
new file mode 100644
index 00000000..102a42bb
--- /dev/null
+++ b/files/FILE_F55400_otherpoke.narc.s
@@ -0,0 +1,241 @@
+ .include "asm/macros.inc"
+ .text
+ ; NARC header
+ .ascii "NARC"
+ .short 0xFFFE ; byte order
+ .short 0x0100 ; version
+ .word 0x000D96EC ; size
+ .short 0x0010 ; chunk size
+ .short 3 ; number following chunks
+
+ ; BTAF header
+ .ascii "BTAF"
+ .word 0x000006B4 ; chunk size
+ .short 213 ; number of files
+ .balign 4
+ .word 0x00000000, 0x00001930
+ .word 0x00001930, 0x00003260
+ .word 0x00003260, 0x00004B90
+ .word 0x00004B90, 0x000064C0
+ .word 0x000064C0, 0x00007DF0
+ .word 0x00007DF0, 0x00009720
+ .word 0x00009720, 0x0000B050
+ .word 0x0000B050, 0x0000C980
+ .word 0x0000C980, 0x0000E2B0
+ .word 0x0000E2B0, 0x0000FBE0
+ .word 0x0000FBE0, 0x00011510
+ .word 0x00011510, 0x00012E40
+ .word 0x00012E40, 0x00014770
+ .word 0x00014770, 0x000160A0
+ .word 0x000160A0, 0x000179D0
+ .word 0x000179D0, 0x00019300
+ .word 0x00019300, 0x0001AC30
+ .word 0x0001AC30, 0x0001C560
+ .word 0x0001C560, 0x0001DE90
+ .word 0x0001DE90, 0x0001F7C0
+ .word 0x0001F7C0, 0x000210F0
+ .word 0x000210F0, 0x00022A20
+ .word 0x00022A20, 0x00024350
+ .word 0x00024350, 0x00025C80
+ .word 0x00025C80, 0x000275B0
+ .word 0x000275B0, 0x00028EE0
+ .word 0x00028EE0, 0x0002A810
+ .word 0x0002A810, 0x0002C140
+ .word 0x0002C140, 0x0002DA70
+ .word 0x0002DA70, 0x0002F3A0
+ .word 0x0002F3A0, 0x00030CD0
+ .word 0x00030CD0, 0x00032600
+ .word 0x00032600, 0x00033F30
+ .word 0x00033F30, 0x00035860
+ .word 0x00035860, 0x00037190
+ .word 0x00037190, 0x00038AC0
+ .word 0x00038AC0, 0x0003A3F0
+ .word 0x0003A3F0, 0x0003BD20
+ .word 0x0003BD20, 0x0003D650
+ .word 0x0003D650, 0x0003EF80
+ .word 0x0003EF80, 0x000408B0
+ .word 0x000408B0, 0x000421E0
+ .word 0x000421E0, 0x00043B10
+ .word 0x00043B10, 0x00045440
+ .word 0x00045440, 0x00046D70
+ .word 0x00046D70, 0x000486A0
+ .word 0x000486A0, 0x00049FD0
+ .word 0x00049FD0, 0x0004B900
+ .word 0x0004B900, 0x0004D230
+ .word 0x0004D230, 0x0004EB60
+ .word 0x0004EB60, 0x00050490
+ .word 0x00050490, 0x00051DC0
+ .word 0x00051DC0, 0x000536F0
+ .word 0x000536F0, 0x00055020
+ .word 0x00055020, 0x00056950
+ .word 0x00056950, 0x00058280
+ .word 0x00058280, 0x00059BB0
+ .word 0x00059BB0, 0x0005B4E0
+ .word 0x0005B4E0, 0x0005CE10
+ .word 0x0005CE10, 0x0005E740
+ .word 0x0005E740, 0x00060070
+ .word 0x00060070, 0x000619A0
+ .word 0x000619A0, 0x000632D0
+ .word 0x000632D0, 0x00064C00
+ .word 0x00064C00, 0x00066530
+ .word 0x00066530, 0x00067E60
+ .word 0x00067E60, 0x00069790
+ .word 0x00069790, 0x0006B0C0
+ .word 0x0006B0C0, 0x0006C9F0
+ .word 0x0006C9F0, 0x0006E320
+ .word 0x0006E320, 0x0006FC50
+ .word 0x0006FC50, 0x00071580
+ .word 0x00071580, 0x00072EB0
+ .word 0x00072EB0, 0x000747E0
+ .word 0x000747E0, 0x00076110
+ .word 0x00076110, 0x00077A40
+ .word 0x00077A40, 0x00079370
+ .word 0x00079370, 0x0007ACA0
+ .word 0x0007ACA0, 0x0007C5D0
+ .word 0x0007C5D0, 0x0007DF00
+ .word 0x0007DF00, 0x0007F830
+ .word 0x0007F830, 0x00081160
+ .word 0x00081160, 0x00082A90
+ .word 0x00082A90, 0x000843C0
+ .word 0x000843C0, 0x00085CF0
+ .word 0x00085CF0, 0x00087620
+ .word 0x00087620, 0x00088F50
+ .word 0x00088F50, 0x0008A880
+ .word 0x0008A880, 0x0008C1B0
+ .word 0x0008C1B0, 0x0008DAE0
+ .word 0x0008DAE0, 0x0008F410
+ .word 0x0008F410, 0x00090D40
+ .word 0x00090D40, 0x00092670
+ .word 0x00092670, 0x00093FA0
+ .word 0x00093FA0, 0x000958D0
+ .word 0x000958D0, 0x00097200
+ .word 0x00097200, 0x00098B30
+ .word 0x00098B30, 0x0009A460
+ .word 0x0009A460, 0x0009BD90
+ .word 0x0009BD90, 0x0009D6C0
+ .word 0x0009D6C0, 0x0009EFF0
+ .word 0x0009EFF0, 0x000A0920
+ .word 0x000A0920, 0x000A2250
+ .word 0x000A2250, 0x000A3B80
+ .word 0x000A3B80, 0x000A54B0
+ .word 0x000A54B0, 0x000A6DE0
+ .word 0x000A6DE0, 0x000A8710
+ .word 0x000A8710, 0x000AA040
+ .word 0x000AA040, 0x000AB970
+ .word 0x000AB970, 0x000AD2A0
+ .word 0x000AD2A0, 0x000AEBD0
+ .word 0x000AEBD0, 0x000B0500
+ .word 0x000B0500, 0x000B1E30
+ .word 0x000B1E30, 0x000B3760
+ .word 0x000B3760, 0x000B5090
+ .word 0x000B5090, 0x000B69C0
+ .word 0x000B69C0, 0x000B82F0
+ .word 0x000B82F0, 0x000B9C20
+ .word 0x000B9C20, 0x000BB550
+ .word 0x000BB550, 0x000BCE80
+ .word 0x000BCE80, 0x000BE7B0
+ .word 0x000BE7B0, 0x000C00E0
+ .word 0x000C00E0, 0x000C1A10
+ .word 0x000C1A10, 0x000C3340
+ .word 0x000C3340, 0x000C4C70
+ .word 0x000C4C70, 0x000C65A0
+ .word 0x000C65A0, 0x000C7ED0
+ .word 0x000C7ED0, 0x000C9800
+ .word 0x000C9800, 0x000CB130
+ .word 0x000CB130, 0x000CCA60
+ .word 0x000CCA60, 0x000CE390
+ .word 0x000CE390, 0x000CFCC0
+ .word 0x000CFCC0, 0x000D15F0
+ .word 0x000D15F0, 0x000D2F20
+ .word 0x000D2F20, 0x000D2F68
+ .word 0x000D2F68, 0x000D2FB0
+ .word 0x000D2FB0, 0x000D2FF8
+ .word 0x000D2FF8, 0x000D3040
+ .word 0x000D3040, 0x000D3088
+ .word 0x000D3088, 0x000D30D0
+ .word 0x000D30D0, 0x000D3118
+ .word 0x000D3118, 0x000D3160
+ .word 0x000D3160, 0x000D31A8
+ .word 0x000D31A8, 0x000D31F0
+ .word 0x000D31F0, 0x000D3238
+ .word 0x000D3238, 0x000D3280
+ .word 0x000D3280, 0x000D32C8
+ .word 0x000D32C8, 0x000D3310
+ .word 0x000D3310, 0x000D3358
+ .word 0x000D3358, 0x000D33A0
+ .word 0x000D33A0, 0x000D33E8
+ .word 0x000D33E8, 0x000D3430
+ .word 0x000D3430, 0x000D3478
+ .word 0x000D3478, 0x000D34C0
+ .word 0x000D34C0, 0x000D3508
+ .word 0x000D3508, 0x000D3550
+ .word 0x000D3550, 0x000D3598
+ .word 0x000D3598, 0x000D35E0
+ .word 0x000D35E0, 0x000D3628
+ .word 0x000D3628, 0x000D3670
+ .word 0x000D3670, 0x000D36B8
+ .word 0x000D36B8, 0x000D3700
+ .word 0x000D3700, 0x000D3748
+ .word 0x000D3748, 0x000D3790
+ .word 0x000D3790, 0x000D37D8
+ .word 0x000D37D8, 0x000D3820
+ .word 0x000D3820, 0x000D3868
+ .word 0x000D3868, 0x000D38B0
+ .word 0x000D38B0, 0x000D38F8
+ .word 0x000D38F8, 0x000D3940
+ .word 0x000D3940, 0x000D3988
+ .word 0x000D3988, 0x000D39D0
+ .word 0x000D39D0, 0x000D3A18
+ .word 0x000D3A18, 0x000D3A60
+ .word 0x000D3A60, 0x000D3AA8
+ .word 0x000D3AA8, 0x000D3AF0
+ .word 0x000D3AF0, 0x000D3B38
+ .word 0x000D3B38, 0x000D3B80
+ .word 0x000D3B80, 0x000D3BC8
+ .word 0x000D3BC8, 0x000D3C10
+ .word 0x000D3C10, 0x000D3C58
+ .word 0x000D3C58, 0x000D3CA0
+ .word 0x000D3CA0, 0x000D3CE8
+ .word 0x000D3CE8, 0x000D3D30
+ .word 0x000D3D30, 0x000D3D78
+ .word 0x000D3D78, 0x000D3DC0
+ .word 0x000D3DC0, 0x000D3E08
+ .word 0x000D3E08, 0x000D3E50
+ .word 0x000D3E50, 0x000D3E98
+ .word 0x000D3E98, 0x000D3EE0
+ .word 0x000D3EE0, 0x000D3F28
+ .word 0x000D3F28, 0x000D3F70
+ .word 0x000D3F70, 0x000D3FB8
+ .word 0x000D3FB8, 0x000D4000
+ .word 0x000D4000, 0x000D4048
+ .word 0x000D4048, 0x000D4090
+ .word 0x000D4090, 0x000D40D8
+ .word 0x000D40D8, 0x000D4120
+ .word 0x000D4120, 0x000D4168
+ .word 0x000D4168, 0x000D41B0
+ .word 0x000D41B0, 0x000D41F8
+ .word 0x000D41F8, 0x000D4240
+ .word 0x000D4240, 0x000D4288
+ .word 0x000D4288, 0x000D42D0
+ .word 0x000D42D0, 0x000D4318
+ .word 0x000D4318, 0x000D4360
+ .word 0x000D4360, 0x000D43A8
+ .word 0x000D43A8, 0x000D43F0
+ .word 0x000D43F0, 0x000D5D20
+ .word 0x000D5D20, 0x000D7650
+ .word 0x000D7650, 0x000D7698
+ .word 0x000D7698, 0x000D8FC8
+ .word 0x000D8FC8, 0x000D9010
+
+ ; BTNF header
+ .ascii "BTNF"
+ .word 0x00000010 ; chunk size
+ .word 0x00000004 ; offset to first dir
+ .short 0 ; first file
+ .short 1 ; number of directories
+
+ ; GMIF header
+ .ascii "GMIF"
+ .word 0x000D9018 ; chunk size
+ .incbin "baserom.nds", 0xF55ADC, 0xD9010
+ .balign 512, 255
diff --git a/global.inc b/global.inc
new file mode 100644
index 00000000..a6ff40d0
--- /dev/null
+++ b/global.inc
@@ -0,0 +1,3245 @@
+.extern FUN_0200019E
+.extern FUN_02000DF4
+.extern StringCopy
+.extern FUN_02000E7C
+.extern FUN_02000EE8
+.extern FUN_02000F18
+.extern FUN_02000FA4
+.extern FUN_02000FE8
+.extern FUN_02002C14
+.extern FUN_02002C50
+.extern FUN_02003B98
+.extern FUN_02003C10
+.extern FUN_0200A2AC
+.extern FUN_0200A318
+.extern FUN_0200E2D8
+.extern FUN_0201259C
+.extern FUN_020125D4
+.extern FUN_02015E30
+.extern FUN_02015E60
+.extern InitSystemForTheGame
+.extern InitGraphicMemory
+.extern FUN_020163BC
+.extern FUN_02016438
+.extern FUN_02016464
+.extern FUN_0201B5CC
+.extern FUN_02020AFC
+.extern ErrorHandling
+.extern FUN_02022294
+.extern FUN_020222C4
+.extern FUN_0202254C
+.extern FUN_020227FC
+.extern LoadPlayerDataAddress
+.extern FUN_02029EF8
+.extern FUN_0202FB80
+.extern FUN_020337E8
+.extern FUN_02034188
+.extern FUN_02089D90
+.extern FUN_0208ACEC
+.extern FUN_0208AD80
+.extern FUN_0208AF80
+.extern FUN_0208AF94
+.extern FUN_0208AFA8
+.extern FUN_0208B05C
+.extern FUN_0208B128
+.extern FUN_0208B4A0
+.extern FUN_02090CC8
+.extern FUN_02090DB8
+.extern FUN_02096B14
+.extern FUN_02096B78
+.extern FUN_02096CCC
+.extern FUN_02096D2C
+.extern FUN_02096DA0
+.extern FUN_02096E90
+.extern FUN_02096F18
+.extern FUN_02096F80
+.extern FUN_02096FB0
+.extern FUN_02096FF4
+.extern FUN_0209700C
+.extern FUN_020973B4
+.extern FUN_020ADDC0
+.extern FUN_020ADDC8
+.extern FUN_020ADDF0
+.extern FUN_020ADE2C
+.extern FUN_020ADFA0
+.extern FUN_020ADFDC
+.extern FUN_020ADFE8
+.extern FUN_020AE82C
+.extern FUN_020AE8CC
+.extern FUN_020AE918
+.extern FUN_020AEB70
+.extern FUN_020AEC7C
+.extern FUN_020AEC98
+.extern FUN_020AEE40
+.extern FUN_020AEEB8
+.extern FUN_020AEF1C
+.extern FUN_020AF894
+.extern FUN_020AF9C4
+.extern FUN_020AFA28
+.extern FUN_020AFA80
+.extern FUN_020AFBA8
+.extern FUN_020AFBFC
+.extern FUN_020AFC04
+.extern FUN_020AFD88
+.extern FUN_020AFD94
+.extern FUN_020AFEB8
+.extern FUN_020AFFD8
+.extern FUN_020B0030
+.extern FUN_020B0088
+.extern FUN_020B00F0
+.extern FUN_020B0138
+.extern FUN_020B0180
+.extern FUN_020B0250
+.extern FUN_020B02C8
+.extern FUN_020B0448
+.extern FUN_020B0870
+.extern FUN_020B0BB0
+.extern FUN_020B0C7C
+.extern FUN_020B0E34
+.extern FUN_020B0FC0
+.extern FUN_020B10E8
+.extern FUN_020B1240
+.extern FUN_020B1340
+.extern FUN_020B1528
+.extern FUN_020B1768
+.extern FUN_020B19C4
+.extern FUN_020B19DC
+.extern FUN_020B1A14
+.extern FUN_020B1A24
+.extern FUN_020B1EA4
+.extern FUN_020B1EC4
+.extern FUN_020B1EE4
+.extern FUN_020B1EFC
+.extern FUN_020B1F80
+.extern FUN_020B20C8
+.extern FUN_020B2194
+.extern FUN_020B224C
+.extern FUN_020B23D8
+.extern FUN_020B242C
+.extern FUN_020B2780
+.extern FUN_020B2794
+.extern FUN_020B28B4
+.extern FUN_020B2A08
+.extern FUN_020B2B08
+.extern FUN_020B2B58
+.extern FUN_020B2D9C
+.extern FUN_020B317C
+.extern FUN_020B31F0
+.extern FUN_020B326C
+.extern FUN_020B3334
+.extern FUN_020B3390
+.extern FUN_020B33A0
+.extern FUN_020B4358
+.extern FUN_020B43A4
+.extern FUN_020B442C
+.extern FUN_020B4568
+.extern FUN_020B4F38
+.extern FUN_020B502C
+.extern FUN_020B772C
+.extern FUN_020B7790
+.extern FUN_020B7C58
+.extern FUN_020B7C78
+.extern FUN_020B7CDC
+.extern FUN_020B7CE4
+.extern FUN_020B7CF0
+.extern FUN_020B7D28
+.extern FUN_020B7DFC
+.extern FUN_020B7E10
+.extern FUN_020B7E1C
+.extern FUN_020B80B4
+.extern FUN_020B844C
+.extern FUN_020B8474
+.extern FUN_020B849C
+.extern FUN_020BAC98
+.extern FUN_020BAFB8
+.extern FUN_020BB1C0
+.extern FUN_020BB394
+.extern FUN_020BB59C
+.extern FUN_020BB7F4
+.extern FUN_020BC0FC
+.extern FUN_020BC13C
+.extern FUN_020BC2A0
+.extern FUN_020C0174
+.extern FUN_020C01A0
+.extern FUN_020C01D0
+.extern FUN_020C03B8
+.extern FUN_020C041C
+.extern FUN_020C044C
+.extern FUN_020C04DC
+.extern FUN_020C0510
+.extern FUN_020C054C
+.extern FUN_020C0670
+.extern FUN_020C0688
+.extern FUN_020C0DD4
+.extern FUN_020C0E14
+.extern FUN_020C0E7C
+.extern FUN_020C0EA4
+.extern FUN_020C0EF4
+.extern FUN_020C0F30
+.extern FUN_020C0F50
+.extern FUN_020C0F68
+.extern FUN_020C0F80
+.extern FUN_020C0F8C
+.extern FUN_020C0F9C
+.extern FUN_020C0FDC
+.extern FUN_020C1040
+.extern FUN_020C10A4
+.extern FUN_020C1148
+.extern FUN_020C1180
+.extern FUN_020C1E58
+.extern FUN_020C1E68
+.extern FUN_020C1EA4
+.extern FUN_020C1F54
+.extern FUN_020C1FA4
+.extern FUN_020C1FF0
+.extern FUN_020C20DC
+.extern FUN_020C2104
+.extern FUN_020C217C
+.extern FUN_020C226C
+.extern FUN_020C22D0
+.extern FUN_020C23FC
+.extern FUN_020C26F8
+.extern FUN_020C2828
+.extern FUN_020C290C
+.extern FUN_020C2A94
+.extern FUN_020C35E0
+.extern FUN_020C360C
+.extern FUN_020C3640
+.extern FUN_020C3674
+.extern FUN_020C36A8
+.extern FUN_020C3910
+.extern FUN_020C3980
+.extern FUN_020C39CC
+.extern FUN_020C3EA4
+.extern FUN_020C3EB0
+.extern FUN_020C3F14
+.extern FUN_020C3F38
+.extern FUN_020C3F54
+.extern FUN_020C3F70
+.extern FUN_020C400C
+.extern FUN_020C504C
+.extern FUN_020C50B8
+.extern FUN_020C5288
+.extern FUN_020C53C8
+.extern FUN_020C5588
+.extern FUN_020C5600
+.extern FUN_020C5634
+.extern FUN_020C5668
+.extern FUN_020C5974
+.extern FUN_020C5978
+.extern FUN_020C59A4
+.extern FUN_020C59C0
+.extern FUN_020C5A34
+.extern FUN_020C5A80
+.extern FUN_020C5AC8
+.extern FUN_020C5AF8
+.extern FUN_020C5B28
+.extern FUN_020C5D2C
+.extern FUN_020C5D4C
+.extern FUN_020C5D9C
+.extern FUN_020C5DBC
+.extern FUN_020C5E54
+.extern FUN_020C600C
+.extern FUN_020C6034
+.extern FUN_020C605C
+.extern FUN_020C6070
+.extern FUN_020C6098
+.extern FUN_020C60AC
+.extern FUN_020C60C0
+.extern FUN_020C60E4
+.extern FUN_020C6108
+.extern FUN_020C611C
+.extern FUN_020C6168
+.extern FUN_020C61F4
+.extern FUN_020C6280
+.extern FUN_020C62FC
+.extern FUN_020C63A8
+.extern FUN_020C65C0
+.extern FUN_020C66B4
+.extern FUN_020C68B8
+.extern FUN_020C6970
+.extern FUN_020C6A84
+.extern FUN_020C6BF0
+.extern FUN_020C6F60
+.extern FUN_020C6FB0
+.extern FUN_020C7010
+.extern FUN_020C7058
+.extern FUN_020C70B0
+.extern FUN_020C70D0
+.extern FUN_020C7104
+.extern FUN_020C7124
+.extern FUN_020C74B8
+.extern FUN_020C74DC
+.extern FUN_020C74F8
+.extern FUN_020C7A14
+.extern FUN_020C7B3C
+.extern FUN_020C7C28
+.extern FUN_020C7D28
+.extern FUN_020C7E0C
+.extern FUN_020C7E94
+.extern FUN_020C7FF0
+.extern FUN_020C802C
+.extern FUN_020C8068
+.extern FUN_020C80A4
+.extern FUN_020C823C
+.extern FUN_020C8538
+.extern FUN_020C8728
+.extern FUN_020C8774
+.extern FUN_020C87E8
+.extern FUN_020C880C
+.extern FUN_020C8858
+.extern FUN_020C88CC
+.extern FUN_020C88F0
+.extern FUN_020C8948
+.extern FUN_020C89BC
+.extern FUN_020C8A2C
+.extern FUN_020C8A90
+.extern FUN_020C8B10
+.extern FUN_020C8C14
+.extern FUN_020C8C7C
+.extern FUN_020C8CE4
+.extern FUN_020C8D4C
+.extern FUN_020C8DB4
+.extern FUN_020C8E1C
+.extern FUN_020C8E84
+.extern FUN_020C8EEC
+.extern FUN_020C8F54
+.extern FUN_020C8FBC
+.extern FUN_020C9024
+.extern FUN_020C908C
+.extern FUN_020C90F4
+.extern FUN_020C915C
+.extern FUN_020C91C4
+.extern FUN_020C922C
+.extern FUN_020C9294
+.extern FUN_020C92F4
+.extern FUN_020C9354
+.extern FUN_020C93BC
+.extern FUN_020C9418
+.extern FUN_020C9480
+.extern FUN_020C94E8
+.extern FUN_020C9550
+.extern OS_WaitIrq
+.extern OS_DisableIrqMask
+.extern OS_EnableIrqMask
+.extern OS_SetIrqFunction
+.extern OS_GetLockID
+.extern OS_ReleaseLockID
+.extern DC_InvalidateRange
+.extern DC_FlushRange
+.extern DC_WaitWriteBufferEmpty
+.extern OS_Init
+.extern OS_AllocFromArenaHi
+.extern OS_AllocFromArenaLo
+.extern OS_SetArenaLo
+.extern OS_SetArenaHi
+.extern OS_GetInitArenaLo
+.extern OS_GetInitArenaHi
+.extern OS_GetTick
+.extern OS_InitTick
+.extern OS_DisableInterrupts
+.extern OS_RestoreInterrupts
+.extern OS_GetProcMode
+.extern OS_ResetSystem
+.extern OS_GetOwnerRtcOffset
+.extern OS_GetOwnerInfo
+.extern OS_GetMacAddress
+.extern OS_GetLowEntropyData
+.extern OS_Terminate
+.extern MI_StopDma
+.extern MI_WaitDma
+.extern MI_HBlankDmaCopy16
+.extern MI_HBlankDmaCopy32
+.extern MIi_CpuClear16
+.extern MIi_CpuCopy16
+.extern MIi_CpuClear32
+.extern MIi_CpuCopy32
+.extern MIi_CpuClearFast
+.extern MIi_CpuCopyFast
+.extern MI_Copy36B
+.extern MI_CpuFill8
+.extern MI_CpuCopy8
+.extern MI_UncompressLZ8
+.extern SND_GetWaveDataAddress
+.extern FS_FindArchive
+.extern FS_SeekFile
+.extern FS_ReadFile
+.extern FS_WaitAsync
+.extern FS_CloseFile
+.extern FS_OpenFile
+.extern FS_InitFile
+.extern FS_IsAvailable
+.extern FS_Init
+.extern FS_TryLoadTable
+.extern FS_SetDefaultDMA
+.extern FS_UnloadOverlay
+.extern FS_LoadOverlay
+.extern FS_StartOverlay
+.extern FS_LoadOverlayImage
+.extern FS_LoadOverlayImageAsync
+.extern FS_LoadOverlayInfo
+.extern TP_CheckError
+.extern TP_WaitBusy
+.extern TP_GetCalibratedPoint
+.extern TP_GetLatestIndexInAuto
+.extern TP_GetLatestRawPointInAuto
+.extern TP_RequestAutoSamplingStopAsync
+.extern TP_RequestAutoSamplingStartAsync
+.extern TP_WaitRawResult
+.extern TP_RequestSamplingAsync
+.extern TP_SetCalibrateParam
+.extern TP_GetUserInfo
+.extern TP_Init
+.extern MIC_StopAutoSampling
+.extern MIC_StartAutoSampling
+.extern MIC_DoSamplingAsync
+.extern MIC_Init
+.extern PM_GoSleepMode
+.extern PM_GetBackLight
+.extern FUN_020D5150
+.extern FUN_020D5168
+.extern FUN_020D5180
+.extern FUN_020D526C
+.extern FUN_020D5F40
+.extern FUN_020D614C
+.extern FUN_020D6320
+.extern FUN_020D6578
+.extern FUN_020D660C
+.extern FUN_020D66A0
+.extern FUN_020D66B0
+.extern FUN_020D6700
+.extern FUN_020D6D7C
+.extern FUN_020D6DAC
+.extern FUN_020D6DB8
+.extern FUN_020D6DC4
+.extern FUN_020D6F20
+.extern CARD_Init
+.extern CARD_IsPulledOut
+.extern FUN_020D7E9C
+.extern FUN_020D8A4C
+.extern FUN_020D8AF0
+.extern FUN_020D8B94
+.extern FUN_020D8C3C
+.extern FUN_020D8F34
+.extern FUN_020D9014
+.extern FUN_020D9060
+.extern FUN_020D9168
+.extern FUN_020D9244
+.extern FUN_020D940C
+.extern FUN_020D950C
+.extern FUN_020D9554
+.extern FUN_020D9624
+.extern FUN_020D972C
+.extern FUN_020D9774
+.extern FUN_020D97B4
+.extern FUN_020D9960
+.extern FUN_020D99EC
+.extern FUN_020D9B48
+.extern FUN_020DAD74
+.extern FUN_020DADD4
+.extern FUN_020DAF30
+.extern FUN_020DB7A8
+.extern FUN_020DDC5C
+.extern FUN_020DDCE4
+.extern FUN_020DDD28
+.extern FUN_020DDD60
+.extern FUN_020DDE44
+.extern FUN_020DDF60
+.extern FUN_020DE3F0
+.extern FUN_020DF438
+.extern FUN_020DF4A4
+.extern FUN_020DF510
+.extern FUN_020E2EAC
+.extern FUN_020E2EC8
+.extern FUN_020EA980
+.extern FUN_020EAEF0
+.extern FUN_020EB010
+.extern FUN_020EB084
+.extern FUN_020EB4C0
+.extern FUN_020EB4F4
+.extern FUN_020EB534
+.extern FUN_020EB57C
+.extern FUN_020EB5C4
+.extern FUN_020EB7B0
+.extern FUN_020EBA38
+.extern _ll_udiv
+.extern _ll_mul
+.extern _ll_shl
+.extern _s32_div_f
+.extern _u32_div_f
+.extern _fp_init
+.extern __call_static_initializers
+.extern FUN_021D74E0
+.extern FUN_021D76AC
+.extern FUN_021D77C4
+.extern FUN_021D7800
+.extern FUN_021D78FC
+.extern FUN_021D79B4
+.extern FUN_021D7CA4
+.extern FUN_021D7F8C
+.extern FUN_021D8018
+.extern FUN_021D8164
+.extern FUN_021D82BC
+.extern FUN_021D8320
+.extern FUN_021D836C
+.extern FUN_021D83A8
+.extern FUN_021D83C0
+.extern FUN_021D844C
+.extern FUN_021D8494
+.extern FUN_021D85FC
+.extern FUN_021D8624
+.extern FUN_021D865C
+.extern FUN_021D8758
+.extern FUN_021D8820
+.extern FUN_021D88E4
+.extern FUN_021D89CC
+.extern FUN_021D8B64
+.extern FUN_021D8C24
+.extern FUN_021D917C
+.extern FUN_021D959C
+.extern FUN_021D967C
+.extern FUN_021D96F4
+.extern FUN_021D9708
+.extern FUN_021D971C
+.extern FUN_021D9820
+.extern FUN_021D99F8
+.extern FUN_021DA464
+.extern FUN_021DA4EC
+.extern FUN_021DA54C
+.extern FUN_021DA58C
+.extern FUN_021DA5B8
+.extern FUN_021DA5C8
+.extern FUN_021DA5D0
+.extern FUN_021DA5D8
+.extern FUN_021DA7B4
+.extern FUN_021DAAA4
+.extern FUN_021DAC70
+.extern FUN_021DAE40
+.extern FUN_021DAED4
+.extern FUN_021DAF28
+.extern FUN_021DAF78
+.extern FUN_021DAF98
+.extern FUN_021DB030
+.extern FUN_021DB7E8
+.extern FUN_021DB858
+.extern FUN_021DC174
+.extern FUN_021DD6F0
+.extern FUN_021DD718
+.extern FUN_021DDB08
+.extern FUN_021E1374
+.extern FUN_021E1858
+.extern FUN_021E1994
+.extern FUN_021E1BF8
+.extern FUN_021E1C4C
+.extern FUN_021E1C54
+.extern FUN_021E1ECC
+.extern FUN_021E1F34
+.extern FUN_021E1F58
+.extern FUN_021E1F60
+.extern FUN_021E2464
+.extern FUN_021E2608
+.extern FUN_021E26CC
+.extern FUN_021E27E8
+.extern FUN_021E288C
+.extern FUN_021E28A0
+.extern FUN_021E2950
+.extern FUN_021E29B4
+.extern FUN_021E29C8
+.extern FUN_021E2A70
+.extern FUN_021E2AD4
+.extern FUN_021E2B80
+.extern FUN_021E2B9C
+.extern FUN_021E2BB8
+.extern FUN_021E2BD0
+.extern FUN_021E2C24
+.extern FUN_021E2C58
+.extern FUN_021E2CBC
+.extern FUN_021E32F0
+.extern FUN_021E331C
+.extern FUN_021E3424
+.extern FUN_021E3444
+.extern FUN_021E495C
+.extern FUN_021E4C54
+.extern FUN_021E4C60
+.extern FUN_021E4DE4
+.extern FUN_021E5614
+.extern FUN_021E57D4
+.extern FUN_021E5970
+.extern FUN_021E5B30
+.extern FUN_021E5FD8
+.extern FUN_021E5FE0
+.extern FUN_021E6410
+.extern FUN_021E643C
+.extern FUN_021E6990
+.extern FUN_021E69BC
+.extern FUN_021E6BF4
+.extern FUN_021E7030
+.extern FUN_021E70F0
+.extern FUN_021E7138
+.extern FUN_021E7184
+.extern FUN_021E71E8
+.extern FUN_021E7750
+.extern FUN_021E799C
+.extern FUN_021E7AC0
+.extern FUN_021E7EA0
+.extern FUN_021E7EB0
+.extern FUN_021E7EC4
+.extern FUN_021E7EC8
+.extern FUN_021E7ED0
+.extern FUN_021E7ED8
+.extern FUN_021E7FBC
+.extern FUN_021E8128
+.extern FUN_021E8130
+.extern FUN_021E8140
+.extern FUN_021E8144
+.extern FUN_021E8148
+.extern FUN_021E8158
+.extern FUN_021E81BC
+.extern FUN_021E84F4
+.extern FUN_021E856C
+.extern FUN_021E8588
+.extern FUN_021E85E4
+.extern FUN_021E85FC
+.extern FUN_021EC57C
+.extern FUN_021EC71C
+.extern FUN_021EC854
+.extern FUN_021EC864
+.extern FUN_021ECD64
+.extern FUN_021ECF14
+.extern FUN_021ED0CC
+.extern FUN_021ED49C
+.extern FUN_021ED4E0
+.extern FUN_021ED52C
+.extern FUN_021ED5C4
+.extern FUN_021ED5EC
+.extern FUN_021ED644
+.extern FUN_021ED940
+.extern FUN_021EDA48
+.extern FUN_021EDBC8
+.extern FUN_021EF5E0
+.extern FUN_021EF604
+.extern FUN_021EF620
+.extern FUN_021EF654
+.extern FUN_021EF824
+.extern FUN_021EF844
+.extern FUN_021EF8C8
+.extern FUN_021EF8DC
+.extern FUN_021EFA9C
+.extern FUN_021F02C4
+.extern FUN_021F1D8C
+.extern FUN_021F1DC8
+.extern FUN_021F1DFC
+.extern FUN_021F1EC0
+.extern FUN_021F1F78
+.extern FUN_021F2094
+.extern FUN_021F20D8
+.extern FUN_021F20F8
+.extern FUN_021F2AF4
+.extern FUN_021F2E0C
+.extern FUN_021F2E28
+.extern FUN_021F2F48
+.extern FUN_021F2F6C
+.extern FUN_021F3A18
+.extern FUN_021F3AB4
+.extern FUN_021F3B4C
+.extern FUN_021F3B7C
+.extern FUN_021F3DA4
+.extern FUN_021F44D8
+.extern FUN_021F4520
+.extern FUN_021F4568
+.extern FUN_021F4594
+.extern FUN_021F45E8
+.extern FUN_021F4608
+.extern FUN_021F4BD0
+.extern FUN_021F4C88
+.extern FUN_021F4D80
+.extern FUN_021F4DC8
+.extern FUN_021F4E7C
+.extern FUN_021F57EC
+.extern FUN_021F5C44
+.extern FUN_021F61DC
+.extern FUN_021F61E8
+.extern FUN_02211E60
+.extern FUN_0222D5C0
+.extern FUN_0222DAEC
+.extern FUN_0222DD1C
+.extern FUN_0222DD38
+.extern FUN_0222E2BC
+.extern FUN_0222E360
+.extern FUN_0222E3A0
+.extern FUN_0222E7E8
+.extern FUN_0222E874
+.extern FUN_0222ED34
+.extern FUN_0222EDBC
+.extern FUN_0222F440
+.extern FUN_0222F480
+.extern FUN_0222F7E0
+.extern FUN_0222F990
+.extern FUN_022300D4
+.extern FUN_022300DC
+.extern FUN_022300E4
+.extern FUN_022300E8
+.extern FUN_022300F4
+.extern FUN_02230100
+.extern FUN_0223010C
+.extern FUN_02230118
+.extern FUN_02230124
+.extern FUN_02230F3C
+.extern FUN_02230F70
+.extern FUN_02230F80
+.extern FUN_02231344
+.extern FUN_02231350
+.extern FUN_0223135C
+.extern FUN_02231368
+.extern FUN_02231374
+.extern FUN_02239944
+.extern FUN_02239AAC
+.extern FUN_0223CACC
+.extern FUN_0223CB08
+.extern FUN_0223CCDC
+.extern FUN_0223CD7C
+.extern FUN_0223D3D0
+.extern FUN_0223D638
+.extern FUN_0223D648
+.extern FUN_0223DFB4
+.extern FUN_0223E060
+.extern FUN_0223E118
+.extern FUN_0223E154
+.extern FUN_0223E1A4
+.extern FUN_0223E1E0
+.extern FUN_0223E2AC
+.extern FUN_0223E4A8
+.extern FUN_0223E4D4
+.extern FUN_0223E554
+.extern FUN_0223E6B8
+.extern FUN_0223E734
+.extern FUN_0223E7FC
+.extern FUN_0223EB8C
+.extern FUN_0223EF7C
+.extern FUN_0223F4D8
+.extern FUN_0223F4F4
+.extern FUN_0223F8D8
+.extern FUN_0223FCE8
+.extern FUN_02240790
+.extern FUN_022407CC
+.extern FUN_022407DC
+.extern FUN_022407F8
+.extern FUN_02240834
+.extern FUN_02240844
+.extern FUN_0224089C
+.extern FUN_022408FC
+.extern FUN_022411F4
+.extern FUN_02241230
+.extern FUN_02241914
+.extern FUN_02242A38
+.extern FUN_02242BE0
+.extern FUN_0224312C
+.extern FUN_022432E4
+.extern FUN_0224339C
+.extern FUN_022433A8
+.extern FUN_022433B0
+.extern FUN_022433B8
+.extern FUN_022433F8
+.extern FUN_02243408
+.extern FUN_02243428
+.extern FUN_02243448
+.extern FUN_0224345C
+.extern FUN_022434AC
+.extern FUN_022434BC
+.extern FUN_022434D0
+.extern FUN_02243694
+.extern FUN_022436C8
+.extern FUN_022436E8
+.extern FUN_02243780
+.extern FUN_02243838
+.extern FUN_022438DC
+.extern FUN_022438E0
+.extern FUN_022438FC
+.extern FUN_02243920
+.extern FUN_022439F8
+.extern FUN_02243AD8
+.extern FUN_02243BA8
+.extern FUN_02243C5C
+.extern FUN_02243D3C
+.extern FUN_02243DA0
+.extern FUN_02243DB8
+.extern FUN_02243DC0
+.extern FUN_02243DC4
+.extern FUN_02243DD8
+.extern FUN_02243DE0
+.extern FUN_02243E34
+.extern FUN_02243E74
+.extern FUN_02243F18
+.extern FUN_02243F50
+.extern FUN_02243F9C
+.extern FUN_02244210
+.extern FUN_02244558
+.extern FUN_02244660
+.extern FUN_022446BC
+.extern FUN_022446E0
+.extern FUN_022446FC
+.extern FUN_02244758
+.extern FUN_02244770
+.extern FUN_02244824
+.extern FUN_0224484C
+.extern FUN_02244D1C
+.extern FUN_02244D20
+.extern FUN_02244D3C
+.extern FUN_02244D40
+.extern FUN_02244D58
+.extern FUN_02244D98
+.extern FUN_02244DA0
+.extern FUN_02244DB0
+.extern FUN_02244DBC
+.extern FUN_02244DC4
+.extern FUN_02244EF8
+.extern FUN_02244F18
+.extern FUN_02244F24
+.extern FUN_02244F2C
+.extern FUN_02245088
+.extern FUN_02245114
+.extern FUN_02245190
+.extern FUN_02245198
+.extern FUN_022451F0
+.extern FUN_0224525C
+.extern FUN_022452A4
+.extern FUN_02245324
+.extern FUN_02245340
+.extern FUN_02245358
+.extern FUN_0224566C
+.extern FUN_022456E8
+.extern FUN_02245844
+.extern FUN_02245910
+.extern FUN_02245F1C
+.extern FUN_02245F4C
+.extern FUN_02245FA0
+.extern FUN_022461A4
+.extern FUN_022461B8
+.extern FUN_0224666C
+.extern FUN_022466A0
+.extern FUN_022466AC
+.extern FUN_02246F1C
+.extern FUN_02247294
+.extern FUN_022472AC
+.extern FUN_02247544
+.extern FUN_02247614
+.extern FUN_02247728
+.extern FUN_02247808
+.extern FUN_02247970
+.extern FUN_02247A34
+.extern FUN_022483BC
+.extern FUN_022483E0
+.extern FUN_022483EC
+.extern FUN_02248724
+.extern FUN_0224884C
+.extern FUN_022488CC
+.extern FUN_022488EC
+.extern FUN_022488F4
+.extern FUN_022488FC
+.extern FUN_0224891C
+.extern FUN_02248B54
+.extern FUN_02248B58
+.extern FUN_02248B5C
+.extern FUN_02248B60
+.extern FUN_02248B6C
+.extern FUN_02248CC0
+.extern FUN_02248CD0
+.extern FUN_02248DF8
+.extern FUN_02248F70
+.extern FUN_02248FE0
+.extern FUN_02249038
+.extern FUN_022490A0
+.extern FUN_022491FC
+.extern FUN_022494C8
+.extern FUN_02249508
+.extern FUN_02249668
+.extern FUN_022497E8
+.extern FUN_02249E6C
+.extern FUN_02249E78
+.extern FUN_02249E84
+.extern FUN_02249E90
+.extern FUN_0224A310
+.extern FUN_0224A528
+.extern FUN_0224A7C8
+.extern FUN_0224ABAC
+.extern FUN_0224B124
+.extern FUN_0224B2C4
+.extern FUN_0224B568
+.extern FUN_0224B818
+.extern FUN_0224B86C
+.extern FUN_0224B9E0
+.extern FUN_0224BBEC
+.extern FUN_0224BD90
+.extern FUN_0224C038
+.extern FUN_0224C27C
+.extern FUN_0224C520
+.extern FUN_0224C678
+.extern FUN_0224C6E8
+.extern FUN_0224C6F4
+.extern FUN_0224C700
+.extern FUN_0224C8C8
+.extern FUN_0224CA2C
+.extern FUN_0224CA54
+.extern FUN_0224CA58
+.extern FUN_0224CA88
+.extern FUN_0224CA94
+.extern FUN_0224CAA0
+.extern FUN_0224CAB4
+.extern FUN_0224CB30
+.extern FUN_0224CBB0
+.extern FUN_0224CC24
+.extern FUN_0224CECC
+.extern FUN_0224D14C
+.extern FUN_0224D2E0
+.extern FUN_0224D3E8
+.extern FUN_0224D70C
+.extern FUN_0224D76C
+.extern FUN_0224D79C
+.extern FUN_0224DCB8
+.extern FUN_0224DD94
+.extern FUN_0224DDB8
+.extern FUN_0224E554
+.extern FUN_0224E764
+.extern FUN_0224E7C4
+.extern FUN_0224F12C
+.extern FUN_02252534
+.extern FUN_02252538
+.extern FUN_022567E0
+.extern NitroMain
+
+.extern FUN_020005F2
+.extern CTRDG_Init
+.extern PM_Init
+.extern CARD_LockRom
+.extern CARD_UnlockRom
+.extern CARDi_ReadRom
+.extern MIi_UncompressBackward
+.extern PMi_SetLED
+.extern OS_SpinWait
+.extern PMi_Lock
+.extern PMi_SetLEDAsync
+.extern PMi_ReadRegister
+.extern PMi_WaitBusy
+.extern CTRDG_IsExisting
+.extern PMi_SendSleepStart
+.extern FUN_01FF857C
+.extern FUN_01FF84E4
+.extern FUN_01FF85F0
+.extern FUN_01FF84A4
+.extern FUN_01FF8544
+
+.extern FUN_020010A8
+.extern FUN_02001204
+.extern FUN_02001300
+.extern FUN_020013E8
+.extern FUN_02001448
+.extern FUN_02001470
+.extern FUN_02001B8C
+.extern FUN_02001C14
+.extern FUN_02001C5C
+.extern FUN_02001C78
+.extern FUN_02001D2C
+.extern FUN_02001E5C
+.extern FUN_020020EC
+.extern FUN_02002198
+.extern FUN_020021AC
+.extern StringCopy
+.extern StringCopyN
+.extern StringLength
+.extern StringNotEqual
+.extern StringNotEqualN
+.extern StringFillEOS
+.extern ConvertUIntToDecimalString
+
+.extern FUN_02002E14
+.extern FUN_02002E4C
+.extern FUN_020054C8
+.extern FUN_02005F60
+.extern FUN_02005FDC
+.extern FUN_02006234
+.extern FUN_02006260
+.extern FUN_02006290
+.extern FUN_0200A86C
+.extern FUN_0200A8B8
+.extern FUN_0200CCA4
+.extern FUN_0200CCF8
+.extern FUN_0200E3A0
+.extern FUN_0201265C
+.extern FUN_02012838
+.extern FUN_02012870
+.extern FUN_02012880
+.extern FUN_02013690
+.extern FUN_020136C0
+.extern FUN_020136E0
+.extern FUN_020136F8
+.extern FUN_02016998
+.extern FUN_02016A8C
+.extern FUN_02018FF4
+.extern FUN_02019150
+.extern FUN_02019178
+.extern FUN_020191D0
+.extern FUN_02019620
+.extern FUN_02019658
+.extern FUN_020196F4
+.extern FUN_0201A8C8
+.extern FUN_0201AB0C
+.extern FUN_0201AB10
+.extern FUN_0201B9E0
+.extern FUN_0201BA1C
+.extern FUN_0201BD84
+.extern FUN_0201BE3C
+.extern FUN_0201CDD0
+.extern FUN_0201CE04
+.extern FUN_020225F8
+.extern FUN_0202287C
+.extern FUN_02032DAC
+.extern FUN_020335B8
+.extern FUN_02033678
+.extern FUN_02033F70
+.extern FUN_02006930
+.extern FUN_02006C08
+.extern FUN_0200CA44
+.extern FUN_0200CAB4
+.extern FUN_02016A18
+.extern FUN_02017CD0
+.extern FUN_02018540
+.extern FUN_0201974C
+.extern FUN_0201AB08
+.extern FUN_0201AB14
+.extern FUN_0201AB18
+.extern FUN_0201B6C8
+.extern FUN_0201B8B8
+.extern FUN_0201B8E0
+.extern FUN_0201B914
+.extern FUN_0201B9EC
+.extern FUN_0201BCBC
+.extern FUN_0201C05C
+.extern FUN_0201C1EC
+.extern FUN_02021590
+.extern FUN_020215C8
+.extern FUN_020215E0
+.extern FUN_02021750
+.extern FUN_020218D8
+.extern FUN_02021934
+.extern FUN_0202199C
+.extern FUN_02021F2C
+.extern FUN_020222E8
+.extern FUN_020222F8
+.extern FUN_02022308
+.extern FUN_02022310
+.extern FUN_02029F04
+.extern FUN_02029F10
+.extern FUN_02029F14
+.extern FUN_02029F4C
+.extern FUN_020313EC
+.extern FUN_020169D8
+.extern FUN_02002840
+.extern FUN_02002B60
+.extern FUN_02002B7C
+.extern FUN_02002BB8
+.extern FUN_02002C84
+.extern FUN_02002CC0
+.extern FUN_02002CF8
+.extern FUN_02002DB0
+.extern FUN_02002DE0
+.extern FUN_02002ED0
+.extern FUN_02002EEC
+.extern FUN_02002F08
+.extern FUN_02002FD0
+.extern FUN_02002FEC
+.extern FUN_02003008
+.extern FUN_02003038
+.extern FUN_02003054
+.extern FUN_020030E8
+.extern FUN_02003108
+.extern FUN_020031FC
+.extern FUN_02003210
+.extern FUN_0200372C
+.extern FUN_020038E4
+.extern FUN_020038F0
+.extern FUN_02003974
+.extern FUN_020040F4
+.extern FUN_02004104
+.extern FUN_02004124
+.extern FUN_0200414C
+.extern FUN_0200415C
+.extern FUN_0200433C
+.extern FUN_02004724
+.extern FUN_020047C8
+.extern FUN_02004810
+.extern FUN_0200488C
+.extern FUN_02004DCC
+.extern FUN_02004E08
+.extern FUN_0200516C
+.extern FUN_020051F4
+.extern FUN_0200521C
+.extern FUN_02005308
+.extern FUN_02005350
+.extern FUN_0200538C
+.extern FUN_020053CC
+.extern FUN_02005404
+.extern FUN_02005410
+.extern FUN_0200541C
+.extern FUN_020054F0
+.extern FUN_02005508
+.extern FUN_02005514
+.extern FUN_02005578
+.extern FUN_02005670
+.extern FUN_020056AC
+.extern FUN_02005C28
+.extern FUN_02005CBC
+.extern FUN_02005D20
+.extern FUN_02005E28
+.extern FUN_02005E64
+.extern FUN_02005E6C
+.extern FUN_02005E80
+.extern FUN_02005E90
+.extern FUN_02005F14
+.extern FUN_020061E8
+.extern FUN_0200621C
+.extern FUN_02006268
+.extern FUN_02006278
+.extern FUN_0200627C
+.extern FUN_0200628C
+.extern LoadFromNARC
+.extern LoadFromNarc_2
+.extern FUN_02006528
+.extern FUN_02006548
+.extern FUN_02006564
+.extern LoadFromNARC_7
+.extern FUN_02006670
+.extern FUN_020066F4
+.extern FUN_02006704
+.extern FUN_02006774
+.extern FUN_02006814
+.extern gScriptCmdTable
+.extern FUN_020399A0
+.extern FUN_020399A4
+.extern FUN_020399A8
+.extern FUN_020399B4
+.extern FUN_02039A28
+.extern FUN_02039A40
+.extern FUN_02039A5C
+.extern FUN_02039A78
+.extern FUN_02039A90
+.extern FUN_02039AAC
+.extern FUN_02039ACC
+.extern FUN_02039AF8
+.extern FUN_02039B28
+.extern FUN_02039B50
+.extern FUN_02039B78
+.extern FUN_02039BA0
+.extern FUN_02039BBC
+.extern FUN_02039BDC
+.extern FUN_02039C08
+.extern FUN_02039C40
+.extern FUN_02039C78
+.extern FUN_02039CE4
+.extern FUN_02039CF8
+.extern FUN_02039D10
+.extern FUN_02039D48
+.extern FUN_02039D78
+.extern FUN_02039DAC
+.extern FUN_02039DC4
+.extern FUN_02039DD0
+.extern FUN_02039E04
+.extern FUN_02039E38
+.extern FUN_02039E50
+.extern FUN_02039E68
+.extern FUN_02039E84
+.extern FUN_02039EC0
+.extern FUN_02039EE8
+.extern FUN_02039F0C
+.extern FUN_02039F30
+.extern FUN_02039F58
+.extern FUN_02039F88
+.extern FUN_02039FB8
+.extern FUN_02039FDC
+.extern FUN_0203A00C
+.extern FUN_0203A038
+.extern FUN_0203A2C4
+.extern FUN_0203A304
+.extern FUN_0203A388
+.extern FUN_0203A400
+.extern FUN_0203A45C
+.extern FUN_0203A4D0
+.extern FUN_0203A560
+.extern FUN_0203A590
+.extern FUN_0203A5D8
+.extern FUN_0203A608
+.extern FUN_0203A780
+.extern FUN_0203A830
+.extern FUN_0203A85C
+.extern FUN_0203A878
+.extern FUN_0203A8B8
+.extern FUN_0203A9F0
+.extern FUN_0203AA90
+.extern FUN_0203A630
+.extern FUN_0203AAA0
+.extern FUN_0203DEA8
+.extern FUN_0203AB8C
+.extern FUN_0203AC14
+.extern FUN_0203AC9C
+.extern FUN_0203AD08
+.extern FUN_0203ADC4
+.extern FUN_0203AE4C
+.extern FUN_0203AED4
+.extern FUN_0203AF34
+.extern FUN_0203AF58
+.extern FUN_020414E0
+.extern FUN_020414FC
+.extern FUN_02041518
+.extern FUN_02041558
+.extern FUN_02041588
+.extern FUN_020415AC
+.extern FUN_020415BC
+.extern FUN_020413E8
+.extern FUN_020413F8
+.extern FUN_0204140C
+.extern FUN_02041424
+.extern FUN_0204143C
+.extern FUN_02041478
+.extern FUN_0204149C
+.extern FUN_020414B8
+.extern FUN_020414CC
+.extern FUN_020415E0
+.extern FUN_02041618
+.extern FUN_02041644
+.extern FUN_02041650
+.extern FUN_02041664
+.extern FUN_0203AFC4
+.extern FUN_0203B148
+.extern FUN_0203B1F0
+.extern FUN_0203B3B0
+.extern FUN_0203B3C0
+.extern FUN_0203B3DC
+.extern FUN_0203B3F8
+.extern FUN_0203B440
+.extern FUN_0203B468
+.extern FUN_0203B500
+.extern FUN_0203B544
+.extern FUN_0203B574
+.extern FUN_0203B5B8
+.extern FUN_0203B640
+.extern FUN_0203B724
+.extern FUN_0203B758
+.extern FUN_0203B7D8
+.extern FUN_02043C6C
+.extern FUN_02043C90
+.extern FUN_02043CE4
+.extern FUN_02043D78
+.extern FUN_02043DC8
+.extern FUN_02043DE0
+.extern FUN_02043A44
+.extern FUN_02043A94
+.extern FUN_02043AAC
+.extern FUN_02043ACC
+.extern FUN_02043AFC
+.extern FUN_02043B28
+.extern FUN_02045784
+.extern FUN_020457DC
+.extern FUN_02045834
+.extern FUN_0204588C
+.extern FUN_020458E4
+.extern FUN_02045918
+.extern FUN_02045950
+.extern FUN_02045954
+.extern FUN_02045958
+.extern FUN_020459AC
+.extern FUN_020459E8
+.extern FUN_02045A3C
+.extern FUN_02045A78
+.extern FUN_02045ACC
+.extern FUN_02045B08
+.extern FUN_02045B44
+.extern FUN_02045B80
+.extern FUN_02045BC8
+.extern FUN_02045C04
+.extern FUN_02045C40
+.extern FUN_02045C7C
+.extern FUN_02045CD4
+.extern FUN_02045D10
+.extern FUN_02045D4C
+.extern FUN_0203B81C
+.extern FUN_0203B85C
+.extern FUN_0203B8A0
+.extern FUN_020442BC
+.extern FUN_02044414
+.extern FUN_0204449C
+.extern FUN_020444F4
+.extern FUN_02044598
+.extern FUN_0203BB34
+.extern FUN_0203BB80
+.extern FUN_0203BB84
+.extern FUN_0203BB88
+.extern FUN_0203BB8C
+.extern FUN_02045264
+.extern FUN_0203BC1C
+.extern FUN_0203BCBC
+.extern FUN_0203BCCC
+.extern FUN_0203BCD8
+.extern FUN_0203BF20
+.extern FUN_0203BF2C
+.extern FUN_0203BF84
+.extern FUN_0203BFEC
+.extern FUN_0203C118
+.extern FUN_0203C12C
+.extern FUN_0203C278
+.extern FUN_0203C2C4
+.extern FUN_0203C2E0
+.extern FUN_0203C2F0
+.extern FUN_0203C300
+.extern FUN_0203C32C
+.extern FUN_0203C33C
+.extern FUN_0203C368
+.extern FUN_0203C3C8
+.extern FUN_0203C3E8
+.extern FUN_0203C430
+.extern FUN_020416A8
+.extern FUN_02041770
+.extern FUN_020417E0
+.extern FUN_02041808
+.extern FUN_0203C4F0
+.extern FUN_0203C520
+.extern FUN_0203C6C4
+.extern FUN_0203C70C
+.extern FUN_0203C730
+.extern FUN_0203C844
+.extern FUN_0203C874
+.extern FUN_0203C8B4
+.extern FUN_0203C8E4
+.extern FUN_0203C930
+.extern FUN_0203C960
+.extern FUN_0203C990
+.extern FUN_0203CA20
+.extern FUN_0203CA2C
+.extern FUN_0203CA5C
+.extern FUN_0203CB08
+.extern FUN_0203CB20
+.extern FUN_0203CB48
+.extern FUN_0203CB60
+.extern FUN_020406CC
+.extern FUN_02040700
+.extern FUN_02040724
+.extern FUN_02040748
+.extern FUN_02040790
+.extern FUN_020407C8
+.extern FUN_02040800
+.extern FUN_0204083C
+.extern FUN_02040874
+.extern FUN_0204091C
+.extern FUN_020409C0
+.extern FUN_020409F8
+.extern FUN_02040A30
+.extern FUN_02040A7C
+.extern FUN_02040B0C
+.extern FUN_02040B5C
+.extern FUN_02040BAC
+.extern FUN_0203CBBC
+.extern FUN_02040BFC
+.extern FUN_02040C34
+.extern FUN_02040C6C
+.extern FUN_02040CA4
+.extern FUN_0203CB70
+.extern FUN_0204185C
+.extern FUN_0204188C
+.extern FUN_0203CBE8
+.extern FUN_02041970
+.extern FUN_020419F8
+.extern FUN_02041A80
+.extern FUN_02041AB4
+.extern FUN_02041AD4
+.extern FUN_02041AE0
+.extern FUN_02041B10
+.extern FUN_02041B70
+.extern FUN_02041B9C
+.extern FUN_02041BC4
+.extern FUN_02041BF0
+.extern FUN_0203CC88
+.extern FUN_0203CD20
+.extern FUN_0203CDB8
+.extern FUN_0203CDC4
+.extern FUN_0203CDD0
+.extern FUN_0203CE00
+.extern FUN_0203FE90
+.extern FUN_0203FEC0
+.extern FUN_0203FF10
+.extern FUN_02040028
+.extern FUN_02040074
+.extern FUN_020400C8
+.extern FUN_0204011C
+.extern FUN_02040170
+.extern FUN_020401CC
+.extern FUN_02040204
+.extern FUN_02040220
+.extern FUN_0204025C
+.extern FUN_02040298
+.extern FUN_020402D4
+.extern FUN_02040304
+.extern FUN_02040340
+.extern FUN_02040370
+.extern FUN_020403A0
+.extern FUN_020403D0
+.extern FUN_02040414
+.extern FUN_02040458
+.extern FUN_020404FC
+.extern FUN_0204052C
+.extern FUN_0204056C
+.extern FUN_02040488
+.extern FUN_020405CC
+.extern FUN_020405F8
+.extern FUN_02040638
+.extern FUN_0204064C
+.extern FUN_02040660
+.extern FUN_020406C0
+.extern FUN_0204059C
+.extern FUN_020405B4
+.extern FUN_02044CE0
+.extern FUN_02044D44
+.extern FUN_0203CE0C
+.extern FUN_0203CE8C
+.extern FUN_0203CEBC
+.extern FUN_0203CF04
+.extern FUN_0203CF34
+.extern FUN_0203CF64
+.extern FUN_0203CF94
+.extern FUN_0203CFC4
+.extern FUN_0203CFC8
+.extern FUN_0203D050
+.extern FUN_0203D0F8
+.extern FUN_0203D134
+.extern FUN_0203D140
+.extern FUN_0203D150
+.extern FUN_0203D178
+.extern FUN_0203D194
+.extern FUN_0203D1A4
+.extern FUN_0203D1C0
+.extern FUN_0203D214
+.extern FUN_0203C054
+.extern FUN_0203C090
+.extern FUN_0203C0CC
+.extern FUN_0203D23C
+.extern FUN_0203D248
+.extern FUN_0203D278
+.extern FUN_0203D2A4
+.extern FUN_0203D2E4
+.extern FUN_0203D330
+.extern FUN_0203D33C
+.extern FUN_0203D36C
+.extern FUN_0203D3A4
+.extern FUN_0203D60C
+.extern FUN_0203D61C
+.extern FUN_0203D3DC
+.extern FUN_0203D448
+.extern FUN_0203D458
+.extern FUN_0203D490
+.extern FUN_0203D528
+.extern FUN_0203D5B0
+.extern FUN_0203D5F8
+.extern FUN_0203D630
+.extern FUN_0203D66C
+.extern FUN_0203D6C4
+.extern FUN_0203D560
+.extern FUN_0203FCF4
+.extern FUN_0203FDBC
+.extern FUN_0203FE08
+.extern FUN_0203FE48
+.extern FUN_0203D868
+.extern FUN_0203D874
+.extern FUN_0203D8A0
+.extern FUN_0203D8D0
+.extern FUN_0203D8E8
+.extern FUN_0203D8EC
+.extern FUN_0203D938
+.extern FUN_0203D948
+.extern FUN_0203D728
+.extern FUN_0203D738
+.extern FUN_0203D774
+.extern FUN_0203D834
+.extern FUN_020453F4
+.extern FUN_02045424
+.extern FUN_02045438
+.extern FUN_02045468
+.extern FUN_02045484
+.extern FUN_020454CC
+.extern FUN_0204552C
+.extern FUN_02045500
+.extern FUN_0204557C
+.extern FUN_02045590
+.extern FUN_020455BC
+.extern FUN_020455D0
+.extern FUN_020455E4
+.extern FUN_02045610
+.extern FUN_02045624
+.extern FUN_02045638
+.extern FUN_02045664
+.extern FUN_0203DC00
+.extern FUN_0203DC58
+.extern FUN_0203DC70
+.extern FUN_0203DC88
+.extern FUN_0203DCA0
+.extern FUN_02043E00
+.extern FUN_02043E20
+.extern FUN_0203DCB8
+.extern FUN_0203DCC8
+.extern FUN_0203DCD8
+.extern FUN_0203DCE8
+.extern FUN_0203DCF8
+.extern FUN_0203DD08
+.extern FUN_0203DD18
+.extern FUN_0203DD34
+.extern FUN_02044B00
+.extern FUN_0203C460
+.extern FUN_0203C4B0
+.extern FUN_0203D958
+.extern FUN_02040D04
+.extern FUN_02040D7C
+.extern FUN_02042B0C
+.extern FUN_02042B40
+.extern FUN_02042B74
+.extern FUN_02042BA8
+.extern FUN_02042BDC
+.extern FUN_02042C10
+.extern FUN_02042C44
+.extern FUN_02042C8C
+.extern FUN_02042CBC
+.extern FUN_0203D998
+.extern FUN_0203D9E8
+.extern FUN_0203DA78
+.extern FUN_0203DAB0
+.extern FUN_0203DAE8
+.extern FUN_0203DB38
+.extern FUN_0203DB88
+.extern FUN_0203AB44
+.extern FUN_0203AB74
+.extern FUN_0203DBD4
+.extern FUN_0203A484
+.extern FUN_0203B8E4
+.extern FUN_0203B944
+.extern FUN_0203B968
+.extern FUN_0203B9B4
+.extern FUN_0203BA3C
+.extern FUN_0203BAB0
+.extern FUN_0203BAF4
+.extern FUN_0204434C
+.extern FUN_020443A8
+.extern FUN_02044B2C
+.extern FUN_02044B84
+.extern FUN_02044C0C
+.extern FUN_02044C88
+.extern FUN_0203DD60
+.extern FUN_0203DE00
+.extern FUN_0203DE4C
+.extern FUN_0203DE58
+.extern FUN_0203DE80
+.extern FUN_02043CB4
+.extern FUN_02043E9C
+.extern FUN_02044120
+.extern FUN_02044138
+.extern FUN_0204413C
+.extern FUN_02043E50
+.extern FUN_02043E68
+.extern FUN_02043EFC
+.extern FUN_02043D28
+.extern FUN_0203DD50
+.extern FUN_02044140
+.extern FUN_02043F50
+.extern FUN_02043FA0
+.extern FUN_02043FF4
+.extern FUN_0203DEC4
+.extern FUN_0203DEF8
+.extern FUN_0203DF2C
+.extern FUN_0203DF38
+.extern FUN_0203DF64
+.extern FUN_0203DF84
+.extern FUN_0203DFA8
+.extern FUN_0203DFE0
+.extern FUN_0204488C
+.extern FUN_020448D4
+.extern FUN_020449A4
+.extern FUN_02044034
+.extern FUN_0203B618
+.extern FUN_020440C0
+.extern FUN_020440F0
+.extern FUN_02044F58
+.extern FUN_0203E018
+.extern FUN_0203E054
+.extern FUN_0203E078
+.extern FUN_0203E0CC
+.extern FUN_0203E120
+.extern FUN_02045D88
+.extern FUN_02045DD0
+.extern FUN_02044D8C
+.extern FUN_02044E34
+.extern FUN_02044E78
+.extern FUN_02040E4C
+.extern FUN_0203E138
+.extern FUN_0203E168
+.extern FUN_0203E254
+.extern FUN_02045678
+.extern FUN_020456D4
+.extern FUN_0204572C
+.extern FUN_0203E258
+.extern FUN_0203E29C
+.extern FUN_0203E2F8
+.extern FUN_0203E35C
+.extern FUN_0203E38C
+.extern FUN_0203C174
+.extern FUN_0203C1AC
+.extern FUN_0203C200
+.extern FUN_02042354
+.extern FUN_02042364
+.extern FUN_02042394
+.extern FUN_020423B0
+.extern FUN_02042700
+.extern FUN_02042780
+.extern FUN_020427A8
+.extern FUN_020427D0
+.extern FUN_02042864
+.extern FUN_02042894
+.extern FUN_020428E0
+.extern FUN_0203E4F0
+.extern FUN_0203E510
+.extern FUN_0203E568
+.extern FUN_0203E3D0
+.extern FUN_0203E408
+.extern FUN_0203E440
+.extern FUN_0203E470
+.extern FUN_0203E4A0
+.extern FUN_0203E4B0
+.extern FUN_02044ED8
+.extern FUN_0203E4D8
+.extern FUN_02044F20
+.extern FUN_02045268
+.extern FUN_02045398
+.extern FUN_0204539C
+.extern FUN_020452B4
+.extern FUN_02045308
+.extern FUN_0204469C
+.extern FUN_02044658
+.extern FUN_0203BC2C
+.extern FUN_02039A10
+.extern FUN_0203A04C
+.extern FUN_0203A098
+.extern FUN_0203A0FC
+.extern FUN_0203A13C
+.extern FUN_0203A188
+.extern FUN_0203A210
+.extern FUN_0203C7F4
+.extern FUN_0203C820
+.extern FUN_0203E5DC
+.extern FUN_0203C788
+.extern FUN_0203C7E4
+.extern FUN_0203C0FC
+.extern FUN_0203E674
+.extern FUN_0203BD08
+.extern FUN_0203BD28
+.extern FUN_0203BE50
+.extern FUN_0203BECC
+.extern FUN_0203BF00
+.extern FUN_0203A3C4
+.extern FUN_0203E684
+.extern FUN_0203E6B4
+.extern FUN_0203E6C4
+.extern FUN_0203E6FC
+.extern FUN_0203E72C
+.extern FUN_0204478C
+.extern FUN_02044800
+.extern FUN_0203E744
+.extern FUN_02044158
+.extern FUN_0204416C
+.extern FUN_02044198
+.extern FUN_0203E774
+.extern FUN_0203E7F0
+.extern FUN_0203E81C
+.extern FUN_0203E848
+.extern FUN_0203E858
+.extern FUN_02041C38
+.extern FUN_02045E1C
+.extern FUN_02045E20
+.extern FUN_02045EE0
+.extern FUN_02045EE4
+.extern FUN_02045F84
+.extern FUN_02045F88
+.extern FUN_02045F24
+.extern FUN_02045FCC
+.extern FUN_0203E870
+.extern FUN_0203E894
+.extern FUN_0203E8C4
+.extern FUN_0203E8F4
+.extern FUN_0203E928
+.extern FUN_0203E940
+.extern FUN_0203E954
+.extern FUN_0203E968
+.extern FUN_02044FE8
+.extern FUN_0204505C
+.extern FUN_02045104
+.extern FUN_02045170
+.extern FUN_02040EB4
+.extern FUN_0203E9CC
+.extern FUN_0203EA68
+.extern FUN_02041E40
+.extern FUN_02041FDC
+.extern FUN_02042038
+.extern FUN_02042110
+.extern FUN_0203EA90
+.extern FUN_0203EAB0
+.extern FUN_0203EB20
+.extern FUN_0203EB48
+.extern FUN_0203EB88
+.extern FUN_02042D1C
+.extern FUN_02046010
+.extern FUN_0204601C
+.extern FUN_02046028
+.extern FUN_0204602C
+.extern FUN_0203C5BC
+.extern FUN_0203C614
+.extern FUN_0203C680
+.extern FUN_0203EBC8
+.extern FUN_02044A6C
+.extern FUN_02044A94
+.extern FUN_0203EBE4
+.extern FUN_0203ECAC
+.extern FUN_0203ECD8
+.extern FUN_0203ECF4
+.extern FUN_0203ED10
+.extern FUN_02041194
+.extern FUN_020411C4
+.extern FUN_02041340
+.extern FUN_02040964
+.extern FUN_0203ED70
+.extern FUN_0204387C
+.extern FUN_020438D0
+.extern FUN_02043918
+.extern FUN_020439B4
+.extern FUN_0203FE80
+.extern FUN_0203EDA4
+.extern FUN_0203EDC8
+.extern FUN_0203EDE0
+.extern FUN_0203EE08
+.extern FUN_0203EE18
+.extern FUN_0203EE28
+.extern FUN_0203EE58
+.extern FUN_0203EE68
+.extern FUN_0203EE78
+.extern FUN_02040DB4
+.extern FUN_0203EE98
+.extern FUN_0203EED8
+.extern FUN_0203EF58
+.extern FUN_0203F00C
+.extern FUN_0203F020
+.extern FUN_0203F034
+.extern FUN_0203F058
+.extern FUN_0203F07C
+.extern FUN_0203F110
+.extern FUN_0203F174
+.extern FUN_0203F19C
+.extern FUN_0203A288
+.extern FUN_0203F234
+.extern FUN_0203F254
+.extern FUN_0203F26C
+.extern FUN_0203C58C
+.extern FUN_02040DEC
+.extern FUN_0203F2AC
+.extern FUN_02043B84
+.extern FUN_0203F2E4
+.extern FUN_02043C28
+.extern FUN_0203F31C
+.extern FUN_02044730
+.extern FUN_0203F348
+.extern FUN_0203F38C
+.extern FUN_0203F39C
+.extern FUN_0204214C
+.extern FUN_0203F3AC
+.extern FUN_0203F44C
+.extern FUN_0203F418
+.extern FUN_020408BC
+.extern FUN_02044A0C
+.extern FUN_0203F484
+.extern FUN_02041674
+.extern FUN_0203F4D8
+.extern FUN_0203F508
+.extern FUN_0203F5D4
+.extern FUN_0203F604
+.extern FUN_0203F634
+.extern FUN_0203F664
+.extern FUN_0203F6E4
+.extern FUN_0203F720
+.extern FUN_0203BDB8
+.extern FUN_0203BE68
+.extern FUN_0203BE80
+.extern FUN_0203F760
+.extern FUN_0203F7C8
+.extern FUN_0203F80C
+.extern FUN_0203F880
+.extern FUN_0203F924
+.extern FUN_02042950
+.extern FUN_02042980
+.extern FUN_02042998
+.extern FUN_020429B8
+.extern FUN_020429E8
+.extern FUN_02042A18
+.extern FUN_02042A48
+.extern FUN_02042A98
+.extern FUN_0203D7DC
+.extern FUN_0203ACC4
+.extern FUN_0203F8C0
+.extern FUN_0203F954
+.extern FUN_0204190C
+.extern FUN_0203B024
+.extern FUN_0203F9DC
+.extern FUN_0203F988
+.extern FUN_0203F9B0
+.extern FUN_0203B914
+.extern FUN_020453A0
+.extern FUN_0203FA14
+.extern FUN_02043B54
+.extern FUN_02043BD0
+.extern FUN_0203FA58
+.extern FUN_0203B7F0
+.extern FUN_0203FB4C
+.extern FUN_0203B790
+.extern FUN_020413C0
+.extern FUN_0203FB64
+.extern FUN_0203FB94
+.extern FUN_0203FBA0
+.extern FUN_0203FBAC
+.extern FUN_02040EF8
+.extern FUN_0203B2E0
+.extern FUN_0203FBBC
+.extern FUN_0203FC1C
+.extern FUN_020451D0
+.extern FUN_02042000
+.extern FUN_0203AD54
+.extern FUN_0203D4E8
+.extern FUN_0203D920
+.extern FUN_02041B40
+.extern FUN_0203D0A4
+.extern FUN_0203FC58
+.extern FUN_0203CAE8
+.extern FUN_0203A340
+.extern FUN_0203FC80
+.extern FUN_0203FCB0
+.extern FUN_0203FCDC
+.extern FUN_02040F34
+.extern FUN_02040F6C
+.extern FUN_02040FA4
+.extern FUN_02040FDC
+.extern FUN_02041014
+.extern FUN_0204104C
+.extern FUN_02041094
+.extern FUN_020410C8
+.extern FUN_02041100
+.extern FUN_02041138
+.extern FUN_02041174
+.extern FUN_0203AF84
+.extern FUN_0203AFA4
+.extern FUN_02038CD8
+.extern FUN_02038D10
+.extern FUN_020394F0
+.extern FUN_02039528
+.extern FUN_02039694
+.extern FUN_020462AC
+.extern FUN_020463CC
+.extern FUN_020463EC
+.extern FUN_0204640C
+.extern FUN_02046420
+.extern FUN_0204646C
+.extern FUN_0204647C
+.extern FUN_0204649C
+.extern FUN_020464A4
+.extern FUN_02046500
+.extern FUN_02046528
+.extern FUN_0204652C
+.extern FUN_02046530
+.extern FUN_02048D90
+.extern FUN_02048EC8
+.extern FUN_02048FC8
+.extern FUN_0204A6E0
+.extern FUN_0204AB58
+.extern FUN_0204ADBC
+.extern FUN_0204ADE0
+.extern FUN_0204AF3C
+.extern FUN_0204AF84
+.extern FUN_0204B2A4
+.extern FUN_0204B33C
+.extern FUN_0204BAB0
+.extern FUN_0204C104
+.extern FUN_0204C1A8
+.extern FUN_0204D6C0
+.extern FUN_0204E2FC
+.extern FUN_020527D8
+.extern FUN_02052B74
+.extern FUN_02052CD8
+.extern FUN_02052DE8
+.extern FUN_02052F74
+.extern FUN_020547A4
+.extern FUN_020552F8
+.extern FUN_02055320
+.extern FUN_0205532C
+.extern FUN_020553A0
+.extern FUN_020553C4
+.extern FUN_02055468
+.extern FUN_020557F4
+.extern FUN_02055A38
+.extern FUN_02055B14
+.extern FUN_02055B30
+.extern FUN_02055B8C
+.extern FUN_02057800
+.extern FUN_0205785C
+.extern FUN_02057BAC
+.extern FUN_02058458
+.extern FUN_02058780
+.extern FUN_020587B0
+.extern FUN_020588D4
+.extern FUN_02058BE4
+.extern FUN_02058D74
+.extern FUN_0205CE48
+.extern FUN_0205CE80
+.extern FUN_0205DD18
+.extern FUN_0205DD38
+.extern FUN_0205DD40
+.extern FUN_0205ECE0
+.extern FUN_0205F214
+.extern FUN_0205F244
+.extern FUN_0205F2E4
+.extern FUN_0205F388
+.extern FUN_0205F524
+.extern FUN_0205F6C8
+.extern FUN_0205F6D8
+.extern FUN_0205F7A0
+.extern FUN_02060144
+.extern FUN_020613CC
+.extern FUN_02061A8C
+.extern FUN_02063888
+.extern FUN_02063948
+.extern FUN_02063964
+.extern FUN_02064E90
+.extern FUN_02065054
+.extern FUN_02065070
+.extern FUN_02065314
+.extern FUN_02066978
+.extern FUN_020669A0
+.extern FUN_020669D4
+.extern FUN_02066A20
+.extern FUN_02066ACC
+.extern FUN_020671BC
+.extern FUN_020672BC
+.extern FUN_02067830
+.extern FUN_02068678
+.extern FUN_020689E0
+.extern FUN_02068B68
+.extern FUN_02068C00
+.extern FUN_02068E14
+.extern FUN_020690C4
+.extern FUN_020690CC
+.extern FUN_020690E4
+.extern FUN_02069168
+.extern FUN_02069B40
+.extern FUN_02069B88
+.extern FUN_0206B484
+.extern FUN_0206B6C8
+.extern FUN_0206B7BC
+.extern FUN_0206B9AC
+.extern FUN_0206B9B0
+.extern FUN_0206BB1C
+.extern FUN_0206BB28
+.extern FUN_0206C700
+.extern FUN_0206C91C
+.extern FUN_0206C92C
+.extern FUN_0206E2F0
+.extern FUN_0206E308
+.extern FUN_0206E314
+.extern FUN_0206E340
+.extern FUN_0206E354
+.extern FUN_0206E358
+.extern FUN_0206E360
+.extern FUN_0206E37C
+.extern FUN_0206E384
+.extern FUN_0206E38C
+.extern FUN_0206E7B8
+.extern FUN_0206EA98
+.extern FUN_0206EAB8
+.extern FUN_0206EB1C
+.extern FUN_0206EE50
+.extern FUN_0206EFEC
+.extern FUN_0206F158
+.extern FUN_0206F164
+.extern FUN_0206F17C
+.extern FUN_0206F190
+.extern FUN_02077A84
+.extern FUN_02077AC4
+.extern FUN_02079C70
+.extern FUN_0207B000
+.extern FUN_0207C2A4
+.extern FUN_020851B8
+.extern FUN_020851DC
+.extern FUN_020851F8
+.extern FUN_0208524C
+.extern FUN_02085258
+.extern FUN_02085264
+.extern FUN_0208526C
+.extern FUN_02085290
+.extern FUN_02085338
+.extern FUN_020853A8
+.extern FUN_020853B0
+.extern FUN_020853B4
+.extern FUN_020853BC
+.extern FUN_020853E4
+.extern FUN_020853E8
+.extern FUN_020853EC
+.extern FUN_020853F0
+.extern FUN_020853FC
+.extern FUN_020854E0
+.extern FUN_02085538
+.extern FUN_02085578
+.extern FUN_020855B0
+.extern FUN_020855E4
+.extern FUN_0208560C
+.extern FUN_0208562C
+.extern FUN_020863DC
+.extern FUN_02087A1C
+.extern FUN_02087A50
+.extern FUN_02087D00
+.extern FUN_02087E14
+.extern FUN_02088D40
+.extern FUN_0208A0B8
+.extern FUN_0208A300
+.extern FUN_0208A320
+.extern FUN_0208A9B8
+.extern FUN_02069A64
+.extern FUN_020638BC
+.extern FUN_0200687C
+.extern FUN_020068C8
+.extern FUN_02006BB0
+.extern FUN_02006C98
+.extern FUN_02006D98
+.extern FUN_02006ED4
+.extern FUN_020072E8
+.extern FUN_02007314
+.extern FUN_0200737C
+.extern FUN_02007390
+.extern FUN_020073A0
+.extern FUN_02007558
+.extern FUN_0200782C
+.extern FUN_020079E0
+.extern FUN_02007E68
+.extern FUN_02007E98
+.extern FUN_02007F20
+.extern FUN_020080D0
+.extern FUN_020081C4
+.extern FUN_02008AA4
+.extern FUN_02008BE0
+.extern FUN_02008C80
+.extern FUN_02008C9C
+.extern FUN_02008D24
+.extern FUN_02008DEC
+.extern FUN_02008E2C
+.extern FUN_02008F34
+.extern FUN_02008FEC
+.extern FUN_020090AC
+.extern FUN_02009168
+.extern FUN_020093A8
+.extern FUN_02009424
+.extern FUN_02009448
+.extern FUN_02009630
+.extern FUN_0200965C
+.extern FUN_02009668
+.extern FUN_020096B4
+.extern FUN_020096CC
+.extern FUN_02009A50
+.extern FUN_02009B04
+.extern FUN_02009B44
+.extern FUN_02009B78
+.extern FUN_02009C0C
+.extern FUN_02009C30
+.extern FUN_02009CF0
+.extern FUN_02009DAC
+.extern FUN_02009DE0
+.extern FUN_02009E04
+.extern FUN_02009E28
+.extern FUN_02009E88
+.extern FUN_02009EAC
+.extern FUN_02009F80
+.extern FUN_02009FA0
+.extern FUN_0200A208
+.extern FUN_0200A274
+.extern FUN_0200A344
+.extern FUN_0200A648
+.extern FUN_0200A738
+.extern FUN_0200A8E0
+.extern FUN_0200A914
+.extern FUN_0200A968
+.extern FUN_0200A99C
+.extern FUN_0200A9C4
+.extern FUN_0200AA50
+.extern FUN_0200AA80
+.extern FUN_0200AA90
+.extern FUN_0200AB18
+.extern FUN_0200ABB4
+.extern FUN_0200ABC0
+.extern FUN_0200ABE4
+.extern FUN_0200AC0C
+.extern FUN_0200AC60
+.extern FUN_0200ACA4
+.extern FUN_0200ACC0
+.extern FUN_0200ACF8
+.extern FUN_0200AD18
+.extern FUN_0200AD38
+.extern FUN_0200AD5C
+.extern FUN_0200AD94
+.extern FUN_0200ADCC
+.extern FUN_0200AE04
+.extern FUN_0200AE38
+.extern FUN_0200AE70
+.extern FUN_0200AEA8
+.extern FUN_0200AEE0
+.extern FUN_0200AF18
+.extern FUN_0200AF50
+.extern FUN_0200AFF4
+.extern FUN_0200B02C
+.extern FUN_0200B064
+.extern FUN_0200B09C
+.extern FUN_0200B164
+.extern FUN_0200B19C
+.extern FUN_0200B1D4
+.extern FUN_0200B20C
+.extern FUN_0200B244
+.extern FUN_0200B278
+.extern FUN_0200B2AC
+.extern FUN_0200B350
+.extern FUN_0200B388
+.extern FUN_0200B410
+.extern FUN_0200B4A0
+.extern FUN_0200B4D8
+.extern FUN_0200B518
+.extern FUN_0200B534
+.extern FUN_0200B568
+.extern FUN_0200B59C
+.extern FUN_0200B628
+.extern FUN_0200B660
+.extern FUN_0200B698
+.extern FUN_0200B6D0
+.extern FUN_0200B708
+.extern FUN_0200B764
+.extern FUN_0200B7A8
+.extern FUN_0200B7B8
+.extern FUN_0200B870
+.extern FUN_0200B990
+.extern FUN_0200B9A8
+.extern FUN_0200B9EC
+.extern FUN_0200BA78
+.extern FUN_0200BB14
+.extern FUN_0200BB34
+.extern FUN_0200BB68
+.extern FUN_0200BB6C
+.extern FUN_0200BBF0
+.extern FUN_0200BC1C
+.extern FUN_0200BC30
+.extern FUN_0200BCE0
+.extern FUN_0200BD04
+.extern FUN_0200BD20
+.extern FUN_0200BE38
+.extern FUN_0200BF60
+.extern FUN_0200C00C
+.extern FUN_0200C06C
+.extern FUN_0200C0DC
+.extern FUN_0200C124
+.extern FUN_0200C13C
+.extern FUN_0200C154
+.extern FUN_0200C378
+.extern FUN_0200C388
+.extern FUN_0200C398
+.extern FUN_0200C3DC
+.extern FUN_0200C5A8
+.extern FUN_0200C61C
+.extern FUN_0200C63C
+.extern FUN_0200C644
+.extern FUN_0200C664
+.extern FUN_0200C66C
+.extern FUN_0200C6E4
+.extern FUN_0200C714
+.extern FUN_0200C75C
+.extern FUN_0200C7A0
+.extern FUN_0200C82C
+.extern FUN_0200C840
+.extern FUN_0200C884
+.extern FUN_0200C9D8
+.extern FUN_0200CA0C
+.extern FUN_0200CABC
+.extern FUN_0200CAFC
+.extern FUN_0200CB00
+.extern FUN_0200CD64
+.extern FUN_0200CD68
+.extern FUN_0200D0BC
+.extern FUN_0200D0E0
+.extern FUN_0200D274
+.extern FUN_0200D300
+.extern FUN_0200D6F8
+.extern FUN_0200D858
+.extern FUN_0200DBFC
+.extern FUN_0200DC4C
+.extern FUN_0200DCA4
+.extern FUN_0200E1D0
+.extern FUN_0200E308
+.extern FUN_0200E388
+.extern FUN_0200E394
+.extern FUN_0200E3BC
+.extern FUN_02011B20
+.extern FUN_02012420
+.extern FUN_020126B4
+.extern FUN_020126D8
+.extern FUN_020126FC
+.extern FUN_0201277C
+.extern FUN_020127A8
+.extern FUN_020127C0
+.extern FUN_020128A0
+.extern FUN_02012CC8
+.extern FUN_02012CDC
+.extern FUN_02012DE4
+.extern FUN_0201318C
+.extern FUN_02013194
+.extern FUN_0201327C
+.extern FUN_020132BC
+.extern FUN_02013364
+.extern FUN_02013388
+.extern FUN_020133AC
+.extern FUN_020133C8
+.extern FUN_020133E8
+.extern FUN_0201343C
+.extern FUN_02013440
+.extern FUN_0201373C
+.extern FUN_02013754
+.extern FUN_0201385C
+.extern FUN_02013918
+.extern FUN_02013920
+.extern FUN_02013924
+.extern FUN_02013928
+.extern FUN_02013960
+.extern FUN_020139D8
+.extern FUN_02013A10
+.extern FUN_02013A30
+.extern FUN_02013A9C
+.extern FUN_02013B5C
+.extern FUN_02013B68
+.extern FUN_02013B74
+.extern FUN_02013BC8
+.extern FUN_02013BE4
+.extern FUN_02013C0C
+.extern FUN_02013C18
+.extern FUN_020142EC
+.extern FUN_020143A8
+.extern FUN_020143D0
+.extern FUN_02014BF4
+.extern FUN_02014C28
+.extern FUN_02014C3C
+.extern FUN_02014C54
+.extern FUN_02014D7C
+.extern FUN_02014D9C
+.extern FUN_02015CF8
+.extern FUN_02015EF4
+.extern FUN_02015F10
+.extern FUN_02015F1C
+.extern FUN_02015F34
+.extern FUN_020161A4
+.extern FUN_0201669C
+.extern FUN_020166C8
+.extern FUN_0201681C
+.extern FUN_02016828
+.extern FUN_020168D0
+.extern FUN_02016AF8
+.extern FUN_02016B94
+.extern FUN_02016BBC
+.extern FUN_02016C18
+.extern FUN_020178A0
+.extern FUN_020178BC
+.extern FUN_0201797C
+.extern FUN_020179E0
+.extern FUN_02017B48
+.extern FUN_02017B54
+.extern FUN_02017CE8
+.extern FUN_02017DFC
+.extern FUN_02017E14
+.extern FUN_02017F18
+.extern FUN_02017FB4
+.extern FUN_02017FE4
+.extern FUN_02018148
+.extern FUN_02018170
+.extern FUN_020186B4
+.extern FUN_02018744
+.extern FUN_0201886C
+.extern FUN_02018884
+.extern FUN_0201901C
+.extern FUN_02019048
+.extern FUN_02019064
+.extern FUN_020191A4
+.extern FUN_02019220
+.extern FUN_02019548
+.extern FUN_02019570
+.extern FUN_0201958C
+.extern FUN_0201AB60
+.extern FUN_0201AC68
+.extern FUN_0201AEE4
+.extern FUN_0201AFBC
+.extern FUN_0201B234
+.extern FUN_0201B6C4
+.extern FUN_0201B6D0
+.extern FUN_0201B76C
+.extern FUN_0201B7DC
+.extern FUN_0201B93C
+.extern FUN_0201B970
+.extern FUN_0201B9D4
+.extern FUN_0201BA10
+.extern FUN_0201BA60
+.extern FUN_0201BD5C
+.extern FUN_0201BD70
+.extern FUN_0201BD7C
+.extern FUN_0201BDE0
+.extern FUN_0201C24C
+.extern FUN_0201C29C
+.extern FUN_0201C30C
+.extern FUN_0201C620
+.extern FUN_0201C638
+.extern FUN_0201CC08
+.extern FUN_0201CC24
+.extern FUN_0201CD04
+.extern FUN_0201D040
+.extern FUN_0201D12C
+.extern FUN_0201D168
+.extern FUN_0201E00C
+.extern FUN_0201E08C
+.extern FUN_0201E0BC
+.extern FUN_0201E28C
+.extern FUN_0201E66C
+.extern FUN_0201E6D8
+.extern FUN_0201E6E4
+.extern FUN_0201E740
+.extern FUN_0201E74C
+.extern FUN_0201E788
+.extern FUN_0201E7A0
+.extern FUN_0201EB64
+.extern FUN_0201EB70
+.extern FUN_0201EB8C
+.extern FUN_0201EBA4
+.extern FUN_0201EC68
+.extern FUN_0201EC88
+.extern FUN_0201EC94
+.extern FUN_0201ED10
+.extern FUN_0201EEF0
+.extern FUN_0201EF70
+.extern FUN_0201EF90
+.extern FUN_0201EFE0
+.extern FUN_0201EFEC
+.extern FUN_0201F04C
+.extern FUN_0201F854
+.extern FUN_0201FD58
+.extern FUN_0201FDEC
+.extern FUN_0201FE94
+.extern FUN_0201FFC8
+.extern FUN_02020044
+.extern FUN_020200A0
+.extern FUN_020200BC
+.extern FUN_02020100
+.extern FUN_0202011C
+.extern FUN_02020128
+.extern FUN_02020130
+.extern FUN_020201DC
+.extern FUN_020201E4
+.extern FUN_02020208
+.extern FUN_0202022C
+.extern FUN_02020248
+.extern FUN_02020310
+.extern FUN_02020354
+.extern FUN_02020388
+.extern FUN_02020398
+.extern FUN_02020968
+.extern FUN_02020988
+.extern FUN_020219F4
+.extern FUN_02021A20
+.extern FUN_02021A4C
+.extern FUN_02021A74
+.extern FUN_02021CE0
+.extern FUN_02021D3C
+.extern FUN_02021E28
+.extern FUN_02021EF0
+.extern FUN_0202212C
+.extern FUN_020222AC
+.extern FUN_020222B4
+.extern FUN_020222F0
+.extern FUN_02022300
+.extern FUN_02022318
+.extern FUN_020223BC
+.extern FUN_02022504
+.extern FUN_02022510
+.extern FUN_02022528
+.extern FUN_02022534
+.extern FUN_02022540
+.extern FUN_02022610
+.extern FUN_0202263C
+.extern FUN_02022720
+.extern FUN_02022800
+.extern FUN_02022804
+.extern FUN_0202280C
+.extern FUN_0202282C
+.extern FUN_02022830
+.extern FUN_02023788
+.extern FUN_02023794
+.extern FUN_02023818
+.extern FUN_0202381C
+.extern FUN_02023828
+.extern FUN_02023874
+.extern FUN_02023884
+.extern FUN_020238F4
+.extern FUN_0202390C
+.extern FUN_02023918
+.extern FUN_02023924
+.extern FUN_02023928
+.extern FUN_0202393C
+.extern FUN_0202395C
+.extern FUN_0202397C
+.extern FUN_0202398C
+.extern FUN_02023990
+.extern FUN_020239A0
+.extern FUN_020239BC
+.extern FUN_020239C0
+.extern FUN_020239C8
+.extern FUN_020239CC
+.extern FUN_020239D0
+.extern FUN_020239E4
+.extern FUN_02023A10
+.extern FUN_02023A28
+.extern FUN_02023A2C
+.extern FUN_02023A30
+.extern FUN_02023A54
+.extern FUN_02023A68
+.extern FUN_02023A70
+.extern FUN_02023A78
+.extern FUN_02023A88
+.extern FUN_02023A90
+.extern FUN_02023A9C
+.extern FUN_02023AA4
+.extern FUN_02023AF4
+.extern FUN_02023B0C
+.extern FUN_02023BD4
+.extern FUN_02023C90
+.extern FUN_02023D58
+.extern FUN_02023D6C
+.extern FUN_02023D80
+.extern FUN_020243C8
+.extern FUN_02024404
+.extern FUN_02024440
+.extern FUN_0202445C
+.extern FUN_020244A4
+.extern FUN_020244EC
+.extern FUN_02024504
+.extern FUN_02024518
+.extern FUN_02024550
+.extern FUN_020245F0
+.extern FUN_0202471C
+.extern FUN_0202498C
+.extern FUN_02024AF0
+.extern FUN_02024C84
+.extern FUN_02024CA4
+.extern FUN_02024CE0
+.extern FUN_02024D4C
+.extern FUN_02024D64
+.extern FUN_02024D80
+.extern FUN_02024DA0
+.extern FUN_02024EB4
+.extern FUN_02024EC0
+.extern FUN_02024ECC
+.extern FUN_02024ED8
+.extern FUN_02024EE8
+.extern FUN_02024F0C
+.extern FUN_02024F30
+.extern FUN_02024F44
+.extern FUN_02024FF4
+.extern FUN_02025084
+.extern FUN_02025128
+.extern FUN_02025238
+.extern FUN_02025244
+.extern FUN_0202524C
+.extern FUN_02025268
+.extern FUN_02025274
+.extern FUN_020252AC
+.extern FUN_020252C4
+.extern FUN_020252D0
+.extern FUN_020252DC
+.extern FUN_020252E8
+.extern FUN_020252F4
+.extern FUN_020253E0
+.extern FUN_02025484
+.extern FUN_02025490
+.extern FUN_020254A0
+.extern FUN_020254B4
+.extern FUN_020254C0
+.extern FUN_02025520
+.extern FUN_02025614
+.extern FUN_02025658
+.extern FUN_020256AC
+.extern FUN_020256BC
+.extern FUN_020256D0
+.extern FUN_020256DC
+.extern FUN_020257C0
+.extern FUN_020257C4
+.extern FUN_020257C8
+.extern FUN_020257CC
+.extern FUN_020257D0
+.extern FUN_020257D8
+.extern FUN_020257DC
+.extern FUN_020257E0
+.extern FUN_02025814
+.extern FUN_02025824
+.extern FUN_02025838
+.extern FUN_02025864
+.extern FUN_02025878
+.extern FUN_02025888
+.extern FUN_0202589C
+.extern FUN_020258B0
+.extern FUN_020258D4
+.extern FUN_02025A60
+.extern FUN_02025B60
+.extern FUN_02025B94
+.extern FUN_02025BE8
+.extern FUN_02025C30
+.extern FUN_02025C40
+.extern FUN_02025D6C
+.extern FUN_02025D94
+.extern FUN_02025DB0
+.extern FUN_020260C4
+.extern FUN_02026298
+.extern FUN_020266B0
+.extern FUN_020266C8
+.extern FUN_020268D4
+.extern FUN_02026908
+.extern FUN_02026970
+.extern FUN_020269A0
+.extern FUN_020269CC
+.extern FUN_020269D4
+.extern FUN_02026BC8
+.extern FUN_02026C00
+.extern FUN_02026CB4
+.extern FUN_02026CC4
+.extern FUN_02026FE4
+.extern FUN_02026FE8
+.extern FUN_02027008
+.extern FUN_02027044
+.extern FUN_0202708C
+.extern FUN_02027098
+.extern FUN_020270B4
+.extern FUN_020270D8
+.extern FUN_02027100
+.extern FUN_02027114
+.extern FUN_02027168
+.extern FUN_02027184
+.extern FUN_020271A4
+.extern FUN_02027210
+.extern FUN_02027264
+.extern FUN_02027478
+.extern FUN_020275D8
+.extern FUN_02027608
+.extern FUN_0202763C
+.extern FUN_0202769C
+.extern FUN_020276A8
+.extern FUN_02027710
+.extern FUN_02027740
+.extern FUN_0202787C
+.extern FUN_020278AC
+.extern FUN_020278DC
+.extern FUN_02027914
+.extern FUN_02027964
+.extern FUN_02027E24
+.extern FUN_02027E34
+.extern FUN_02027E5C
+.extern FUN_02027F04
+.extern FUN_02027FBC
+.extern FUN_02027FDC
+.extern FUN_02028048
+.extern FUN_02028074
+.extern FUN_02028094
+.extern FUN_020280B8
+.extern FUN_020280F4
+.extern FUN_02028174
+.extern FUN_02028190
+.extern FUN_020281B8
+.extern FUN_02028448
+.extern FUN_020286EC
+.extern FUN_02028700
+.extern FUN_02028754
+.extern FUN_02028788
+.extern FUN_020287A4
+.extern FUN_020287A8
+.extern FUN_020287C0
+.extern FUN_020287EC
+.extern FUN_02028810
+.extern FUN_0202881C
+.extern FUN_02028828
+.extern FUN_02028840
+.extern FUN_02028930
+.extern FUN_02028934
+.extern FUN_02028954
+.extern FUN_0202896C
+.extern FUN_020289A4
+.extern FUN_020289B0
+.extern FUN_02028A20
+.extern FUN_02028AD4
+.extern FUN_02028FA4
+.extern FUN_02029048
+.extern FUN_02029120
+.extern FUN_0202912C
+.extern FUN_02029138
+.extern FUN_0202914C
+.extern FUN_0202918C
+.extern FUN_0202920C
+.extern FUN_0202942C
+.extern FUN_02029500
+.extern FUN_02029880
+.extern FUN_020299C0
+.extern FUN_020299DC
+.extern FUN_02029ABC
+.extern FUN_02029AC8
+.extern FUN_02029ACC
+.extern FUN_02029AD0
+.extern FUN_02029AD8
+.extern FUN_02029AFC
+.extern FUN_02029B38
+.extern FUN_02029B3C
+.extern FUN_02029C08
+.extern FUN_02029C74
+.extern FUN_02029C80
+.extern FUN_02029C8C
+.extern FUN_02029CC8
+.extern FUN_02029CE0
+.extern FUN_02029CEC
+.extern FUN_02029D44
+.extern FUN_02029DD4
+.extern FUN_02029E0C
+.extern FUN_02029E2C
+.extern FUN_02029EBC
+.extern FUN_02029EC0
+.extern FUN_02029EC4
+.extern FUN_02029EE4
+.extern FUN_02029F9C
+.extern FUN_02029FC8
+.extern FUN_0202A07C
+.extern FUN_0202A0A8
+.extern FUN_0202A0E8
+.extern FUN_0202A11C
+.extern FUN_0202A150
+.extern FUN_0202A170
+.extern FUN_0202A1B8
+.extern FUN_0202A240
+.extern FUN_0202A2C4
+.extern FUN_0202A3B4
+.extern FUN_0202A498
+.extern FUN_0202A520
+.extern FUN_0202A538
+.extern FUN_0202A578
+.extern FUN_0202A5CC
+.extern FUN_0202A5D0
+.extern FUN_0202A5D4
+.extern FUN_0202A5F4
+.extern FUN_0202A74C
+.extern FUN_0202A864
+.extern FUN_0202A8CC
+.extern FUN_0202A8D8
+.extern FUN_0202A8E4
+.extern FUN_0202A918
+.extern FUN_0202A988
+.extern FUN_0202A990
+.extern FUN_0202A9AC
+.extern FUN_0202A9B0
+.extern FUN_0202A9D0
+.extern FUN_0202AA00
+.extern FUN_0202AA14
+.extern FUN_0202AA20
+.extern FUN_0202AA38
+.extern FUN_0202AA40
+.extern FUN_0202AA58
+.extern FUN_0202AA74
+.extern FUN_0202AAA0
+.extern FUN_0202AAFC
+.extern FUN_0202AB40
+.extern FUN_0202AB68
+.extern FUN_0202AF70
+.extern FUN_0202AF88
+.extern FUN_0202AF9C
+.extern FUN_0202AFC0
+.extern FUN_0202AFFC
+.extern FUN_0202B020
+.extern FUN_0202B03C
+.extern FUN_0202B050
+.extern FUN_0202B21C
+.extern FUN_0202B3C4
+.extern FUN_0202B4B0
+.extern FUN_0202B710
+.extern FUN_0202B838
+.extern FUN_0202B844
+.extern FUN_0202B850
+.extern FUN_0202B85C
+.extern FUN_0202B868
+.extern FUN_0202B870
+.extern FUN_0202B87C
+.extern FUN_0202B8E4
+.extern FUN_0202B8F0
+.extern FUN_0202BD6C
+.extern FUN_0202BDF0
+.extern FUN_0202BE6C
+.extern FUN_0202BEDC
+.extern FUN_0202BFD8
+.extern FUN_0202C000
+.extern FUN_0202C108
+.extern FUN_0202C144
+.extern FUN_0202CB8C
+.extern FUN_0202D8B0
+.extern FUN_0202D8D0
+.extern FUN_0202DBE0
+.extern FUN_0202DCF8
+.extern FUN_0202DDE8
+.extern FUN_0202DE78
+.extern FUN_0202DFA4
+.extern FUN_0202E020
+.extern FUN_0202E044
+.extern FUN_0202E25C
+.extern FUN_0202E4C8
+.extern FUN_0202EDD8
+.extern FUN_0202EDF8
+.extern FUN_0202EE0C
+.extern FUN_0202EE24
+.extern FUN_0202EE44
+.extern FUN_0202EF18
+.extern FUN_0202EF84
+.extern FUN_0202F078
+.extern FUN_0202F094
+.extern FUN_0202F0B8
+.extern FUN_0202FA10
+.extern FUN_0202FA1C
+.extern FUN_0202FA48
+.extern FUN_02030A78
+.extern FUN_02030ADC
+.extern FUN_02030B3C
+.extern FUN_02030BC4
+.extern FUN_02030C4C
+.extern FUN_02030C58
+.extern FUN_02030E7C
+.extern FUN_02030F20
+.extern FUN_02030F40
+.extern FUN_02030F74
+.extern FUN_02030F88
+.extern FUN_02030FA8
+.extern FUN_02030FC8
+.extern FUN_02030FE0
+.extern FUN_02031190
+.extern FUN_020311D0
+.extern FUN_020311DC
+.extern FUN_020311E8
+.extern FUN_020311F0
+.extern FUN_02031248
+.extern FUN_02031280
+.extern FUN_020312BC
+.extern FUN_020313B4
+.extern FUN_02031400
+.extern FUN_02031438
+.extern FUN_02031588
+.extern FUN_020315D8
+.extern FUN_020315FC
+.extern FUN_0203168C
+.extern FUN_020316AC
+.extern FUN_020316E0
+.extern FUN_02031810
+.extern FUN_02031824
+.extern FUN_02031860
+.extern FUN_02031880
+.extern FUN_020318B4
+.extern FUN_020318C4
+.extern FUN_02031914
+.extern FUN_02031924
+.extern FUN_02031934
+.extern FUN_02031948
+.extern FUN_02031990
+.extern FUN_020319D8
+.extern FUN_020319F4
+.extern FUN_02031A08
+.extern FUN_02031A2C
+.extern FUN_02031A7C
+.extern FUN_02031AC8
+.extern FUN_02031AF4
+.extern FUN_02031B2C
+.extern FUN_02031B50
+.extern FUN_02031BD0
+.extern FUN_02031BF4
+.extern FUN_02031C2C
+.extern FUN_02031C54
+.extern FUN_02031C64
+.extern FUN_02032888
+.extern FUN_020328C0
+.extern FUN_020328F4
+.extern FUN_02032B6C
+.extern FUN_020334E8
+.extern FUN_02033534
+.extern FUN_02033564
+.extern FUN_02033578
+.extern FUN_020335F0
+.extern FUN_0203384C
+.extern FUN_02033E74
+.extern FUN_02033ED0
+.extern FUN_02033F20
+.extern FUN_020344AC
+.extern FUN_020344D8
+.extern FUN_020344FC
+.extern FUN_0203450C
+.extern FUN_0203451C
+.extern FUN_02034678
+.extern FUN_020346CC
+.extern FUN_02034788
+.extern FUN_020347B0
+.extern FUN_020347C4
+.extern FUN_02034824
+.extern FUN_0203484C
+.extern FUN_02034860
+.extern FUN_0203487C
+.extern FUN_02034898
+.extern FUN_020348B4
+.extern FUN_020348E4
+.extern FUN_02034908
+.extern FUN_02034930
+.extern FUN_02034944
+.extern FUN_02034964
+.extern FUN_02034998
+.extern FUN_020349D8
+.extern FUN_020349E4
+.extern FUN_02034A04
+.extern FUN_02034A60
+.extern FUN_02034AC8
+.extern FUN_02034AF0
+.extern FUN_02034AF8
+.extern FUN_02034B00
+.extern FUN_02034B64
+.extern FUN_02034B6C
+.extern FUN_02034B74
+.extern FUN_02034BAC
+.extern FUN_02034BDC
+.extern FUN_02034C0C
+.extern FUN_02034C24
+.extern FUN_02034C34
+.extern FUN_02034D2C
+.extern FUN_02034D44
+.extern FUN_02034DC4
+.extern FUN_02034DC8
+.extern FUN_02034DCC
+.extern FUN_02034DD0
+.extern FUN_02034DD4
+.extern FUN_02034DE8
+.extern FUN_02034DEC
+.extern FUN_02034DF4
+.extern FUN_02034DFC
+.extern FUN_02034E04
+.extern FUN_02034E0C
+.extern FUN_02034E10
+.extern FUN_02034E18
+.extern FUN_02034E20
+.extern FUN_02034E24
+.extern FUN_02034E28
+.extern FUN_02034E30
+.extern FUN_02034E48
+.extern FUN_02034E60
+.extern FUN_02034E8C
+.extern FUN_02034E90
+.extern FUN_02034EC4
+.extern FUN_02034EF8
+.extern FUN_02034F1C
+.extern FUN_02034F40
+.extern FUN_02034F88
+.extern FUN_02034FC0
+.extern FUN_02034FE4
+.extern FUN_02035068
+.extern FUN_02035D04
+.extern FUN_02036BC4
+.extern FUN_02037024
+.extern FUN_02037394
+.extern FUN_0203739C
+.extern FUN_020373AC
+.extern FUN_020373C4
+.extern FUN_020373D4
+.extern FUN_02037760
+.extern FUN_02037778
+.extern FUN_020377A8
+.extern FUN_020377AC
+.extern FUN_020377B0
+.extern FUN_020377C8
+.extern FUN_0203780C
+.extern FUN_0203789C
+.extern FUN_020378FC
+.extern FUN_02037944
+.extern FUN_020379F8
+.extern FUN_02037A1C
+.extern FUN_02037A40
+.extern FUN_02037A48
+.extern FUN_02037A70
+.extern FUN_02037A78
+.extern FUN_02037B44
+.extern FUN_02037BB0
+.extern FUN_02037C00
+.extern FUN_02037CF0
+.extern FUN_02037D5C
+.extern FUN_02037D60
+.extern FUN_02037E18
+.extern FUN_02037E80
+.extern FUN_02037E90
+.extern FUN_02037EB8
+.extern FUN_02037F2C
+.extern FUN_02037F58
+.extern FUN_02037FC4
+.extern FUN_02037FE4
+.extern FUN_020380CC
+.extern FUN_02038130
+.extern FUN_020383D8
+.extern FUN_020383F8
+.extern FUN_0203842C
+.extern FUN_0203846C
+.extern FUN_020385CC
+.extern FUN_02038680
+.extern FUN_020386A4
+.extern FUN_020386B4
+.extern FUN_020386E0
+.extern FUN_02038790
+.extern FUN_02038804
+.extern FUN_02038814
+.extern FUN_02038824
+.extern FUN_02038854
+.extern FUN_02038864
+.extern FUN_0203888C
+.extern FUN_020388B4
+.extern FUN_020389CC
+.extern FUN_02038AD0
+.extern FUN_02038AF4
+.extern SetupBytecodeScript
+.extern SetupNativeScript
+.extern StopScript
+.extern FUN_02038B6C
+.extern ScriptJump
+.extern ScriptCall
+.extern ScriptReturn
+.extern ScriptReadHalfword
+.extern ScriptReadWord
+.extern FUN_02007534
+.extern FUN_0200C358
+.extern FUN_0200C368
+.extern FUN_02030F60
+.extern FUN_02034774
+.extern FUN_020351A0
+.extern FUN_02035E50
+.extern FUN_02036A78
+.extern FUN_02036AB8
+.extern FUN_02036B90
+.extern FUN_02036BDC
+.extern FUN_02036D94
+.extern FUN_02036DD4
+.extern FUN_02037350
+.extern RunScriptCommand
+.extern InitScriptContext
+.extern FUN_02038EB0
+.extern FUN_02039438
+.extern FUN_02039460
+.extern FUN_020394B8
+.extern FUN_0203953C
+.extern FUN_02039550
+.extern FUN_020395F4
+.extern FUN_02039618
+.extern FUN_0203962C
+.extern FUN_02039640
+.extern FUN_0203965C
+.extern FUN_02039678
+.extern FUN_02046030
+.extern FUN_02046534
+.extern FUN_02046DB4
+.extern FUN_02046E18
+.extern FUN_02046FA0
+.extern FUN_020470AC
+.extern FUN_020470E8
+.extern FUN_02047174
+.extern FUN_020480B8
+.extern FUN_020480C8
+.extern FUN_020480D8
+.extern FUN_02048498
+.extern FUN_02048694
+.extern FUN_02048C58
+.extern FUN_02049240
+.extern FUN_02049274
+.extern FUN_02049EA4
+.extern FUN_02049F98
+.extern FUN_02049FFC
+.extern FUN_0204A048
+.extern FUN_0204A0C8
+.extern FUN_0204A120
+.extern FUN_0204A20C
+.extern FUN_0204A248
+.extern FUN_0204A32C
+.extern FUN_0204AB20
+.extern FUN_0204ABA8
+.extern FUN_0204ABDC
+.extern FUN_0204AD0C
+.extern FUN_0204B2B4
+.extern FUN_0204B2C0
+.extern FUN_0204B2D8
+.extern FUN_0204B4FC
+.extern FUN_0204B57C
+.extern FUN_0204B5A8
+.extern FUN_0204B5FC
+.extern FUN_0204B63C
+.extern FUN_0204B660
+.extern FUN_0204B684
+.extern FUN_0204B6A4
+.extern FUN_0204B9A0
+.extern FUN_0204B9CC
+.extern FUN_0204B9EC
+.extern FUN_0204BA1C
+.extern FUN_0204BAC4
+.extern FUN_0204BAD4
+.extern FUN_0204BAE4
+.extern FUN_0204BEC8
+.extern FUN_0204BED0
+.extern FUN_0204BED8
+.extern FUN_0204F6DC
+.extern FUN_0204FF5C
+.extern FUN_02050024
+.extern FUN_02050048
+.extern FUN_020524CC
+.extern FUN_02052544
+.extern FUN_02052604
+.extern FUN_02052608
+.extern FUN_02052648
+.extern FUN_0205265C
+.extern FUN_02052714
+.extern FUN_02052718
+.extern FUN_020527A8
+.extern FUN_0205296C
+.extern FUN_02052A10
+.extern FUN_02052C0C
+.extern FUN_02052D08
+.extern FUN_02052E10
+.extern FUN_020534DC
+.extern FUN_0205363C
+.extern FUN_02053678
+.extern FUN_020536D0
+.extern FUN_020545B8
+.extern FUN_02054608
+.extern FUN_02054658
+.extern FUN_020546C8
+.extern FUN_02054C14
+.extern FUN_02054CB0
+.extern FUN_02054CC8
+.extern FUN_02054D1C
+.extern FUN_02054DEC
+.extern FUN_02054E30
+.extern FUN_02054F50
+.extern FUN_0205502C
+.extern FUN_02055304
+.extern FUN_020553D4
+.extern FUN_020553E8
+.extern FUN_02055474
+.extern FUN_02055488
+.extern FUN_02055560
+.extern FUN_02055720
+.extern FUN_0205753C
+.extern FUN_020575D4
+.extern FUN_02057654
+.extern FUN_02057688
+.extern FUN_02058060
+.extern FUN_020580B4
+.extern FUN_02058448
+.extern FUN_02058480
+.extern FUN_02058488
+.extern FUN_02058510
+.extern FUN_02058738
+.extern FUN_02058854
+.extern FUN_0205889C
+.extern FUN_020588B8
+.extern FUN_02058908
+.extern FUN_02058914
+.extern FUN_02058994
+.extern FUN_02058B2C
+.extern FUN_02058B4C
+.extern FUN_02058B7C
+.extern FUN_02058BB4
+.extern FUN_02058E28
+.extern FUN_02058E90
+.extern FUN_02058EB0
+.extern FUN_02059D1C
+.extern FUN_02059E74
+.extern FUN_0205AE28
+.extern FUN_0205AEA4
+.extern FUN_0205AEF0
+.extern FUN_0205AEFC
+.extern FUN_0205CA4C
+.extern FUN_0205CA64
+.extern FUN_0205CA78
+.extern FUN_0205E7C4
+.extern FUN_0205ECD4
+.extern FUN_0205ECFC
+.extern FUN_0205ED0C
+.extern FUN_0205ED1C
+.extern FUN_0205ED2C
+.extern FUN_0205ED3C
+.extern FUN_0205ED4C
+.extern FUN_0205ED5C
+.extern FUN_0205ED6C
+.extern FUN_0205F1C4
+.extern FUN_0205F1D4
+.extern FUN_0205F1F4
+.extern FUN_0205F204
+.extern FUN_0205F224
+.extern FUN_0205F234
+.extern FUN_0205F264
+.extern FUN_0205F274
+.extern FUN_0205F284
+.extern FUN_0205F294
+.extern FUN_0205F2A4
+.extern FUN_0205F2B4
+.extern FUN_0205F2C4
+.extern FUN_0205F2D4
+.extern FUN_0205F368
+.extern FUN_0205F378
+.extern FUN_0205F398
+.extern FUN_0205F3C0
+.extern FUN_0205F3F8
+.extern FUN_0205F478
+.extern FUN_0205F4A0
+.extern FUN_0205F4E4
+.extern FUN_0205F50C
+.extern FUN_0205F54C
+.extern FUN_0205F55C
+.extern FUN_0205F594
+.extern FUN_0205F5A4
+.extern FUN_0205F5D8
+.extern FUN_0205F5FC
+.extern FUN_0205F648
+.extern FUN_0205F668
+.extern FUN_0205F688
+.extern FUN_0205F698
+.extern FUN_0205F6A8
+.extern FUN_0205F710
+.extern FUN_0205F720
+.extern FUN_0205F740
+.extern FUN_0205F760
+.extern FUN_0205FD38
+.extern FUN_0205FDDC
+.extern FUN_0205FE10
+.extern FUN_0205FF5C
+.extern FUN_0206015C
+.extern FUN_02060490
+.extern FUN_02060790
+.extern FUN_020607D4
+.extern FUN_02060F3C
+.extern FUN_02060F88
+.extern FUN_02060F9C
+.extern FUN_02060FD0
+.extern FUN_020612EC
+.extern FUN_020612F8
+.extern FUN_02061374
+.extern FUN_02061460
+.extern FUN_02061574
+.extern FUN_02063650
+.extern FUN_0206367C
+.extern FUN_0206486C
+.extern FUN_020649B0
+.extern FUN_020649D4
+.extern FUN_02064CA8
+.extern FUN_02064CC8
+.extern FUN_02064D10
+.extern FUN_02064D4C
+.extern FUN_02064D88
+.extern FUN_02064E20
+.extern FUN_02064E60
+.extern FUN_02065078
+.extern FUN_02065344
+.extern FUN_02066818
+.extern FUN_020669C0
+.extern FUN_02066ED8
+.extern FUN_02068854
+.extern FUN_02068AAC
+.extern FUN_020699A4
+.extern FUN_0206A23C
+.extern FUN_0206AD4C
+.extern FUN_0206B20C
+.extern FUN_0206B3E4
+.extern FUN_0206B57C
+.extern FUN_0206B5E4
+.extern FUN_0206B620
+.extern FUN_0206B644
+.extern FUN_0206B900
+.extern FUN_0206BAE4
+.extern FUN_0206EA30
+.extern FUN_0206ED24
+.extern FUN_0206ED38
+.extern FUN_0206EDD4
+.extern FUN_0206EE64
+.extern FUN_0206EEF8
+.extern FUN_0206F3B8
+.extern FUN_0206F3D8
+.extern FUN_0207FC5C
+.extern FUN_0207FCE0
+.extern FUN_0208089C
+.extern FUN_02080C38
+.extern FUN_02080E0C
+.extern FUN_02081214
+.extern FUN_020814E8
+.extern FUN_02081DC4
+.extern FUN_02081EB8
+.extern FUN_0208201C
+.extern FUN_02082034
+.extern FUN_0208206C
+.extern FUN_02082090
+.extern FUN_020820B8
+.extern FUN_020820DC
+.extern FUN_0208210C
+.extern FUN_0208213C
+.extern FUN_02082140
+.extern FUN_02082158
+.extern FUN_0208217C
+.extern FUN_02082190
+.extern FUN_020821B4
+.extern FUN_020821C4
+.extern FUN_020821DC
+.extern FUN_020821F0
+.extern FUN_02082214
+.extern FUN_0208223C
+.extern FUN_0208224C
+.extern FUN_02082254
+.extern FUN_02082284
+.extern FUN_020822F0
+.extern FUN_02082444
+.extern FUN_02082508
+.extern FUN_020825A0
+.extern FUN_02082630
+.extern FUN_02085140
+.extern FUN_020852E8
+.extern FUN_02085F48
+.extern FUN_0208881C
+.extern FUN_02088960
+.extern FUN_02088DD8
+.extern FUN_02088DF0
+.extern FUN_02088DF8
+.extern FUN_02088EF8
+.extern FUN_0208A338
+.extern FUN_02038C78
+.extern FUN_02038CA8
+.extern FUN_02039504
+.extern FUN_02039564
+.extern FUN_0203959C
+.extern FUN_020395BC
+.extern FUN_02039874
+.extern FUN_0203989C
+.extern FUN_020462B8
+.extern FUN_020462E4
+.extern FUN_0204630C
+.extern FUN_02046338
+.extern FUN_02046380
+.extern FUN_0206AC74
+.extern SDK_AUTOLOAD_DTCM_START
+.extern SDK_AUTOLOAD_LIST
+.extern SDK_AUTOLOAD_LIST_END
+.extern SDK_AUTOLOAD_START
+.extern SDK_STATIC_BSS_START
+.extern SDK_STATIC_BSS_END
+.extern OS_IrqHandler
diff --git a/graphics/icon.png b/graphics/icon.png
new file mode 100644
index 00000000..ecf9a4dc
--- /dev/null
+++ b/graphics/icon.png
Binary files differ
diff --git a/include/global.h b/include/global.h
new file mode 100644
index 00000000..33880ca1
--- /dev/null
+++ b/include/global.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_GLOBAL_H
+#define GUARD_GLOBAL_H
+
+#include "nitro/nitro.h"
+
+#endif //GUARD_GLOBAL_H
diff --git a/include/main.h b/include/main.h
new file mode 100644
index 00000000..0df94795
--- /dev/null
+++ b/include/main.h
@@ -0,0 +1,40 @@
+#ifndef GUARD_MAIN_H
+#define GUARD_MAIN_H
+
+struct Unk2106FA0
+{
+ s32 unk0;
+ s32 unk4;
+ s32 unk8;
+ s32 unkC;
+ s32 unk10;
+ s32 unk14;
+ s32 unk18;
+ s32 unk1C;
+ s32 unk20;
+};
+
+struct Unk21C48B8
+{
+ void (*unk0)(s32);
+ s32 unk4;
+ s32 unk8;
+ s32 unkC;
+ s32 unk10;
+ s32 unk14;
+ s32 unk18;
+ s32 unk1C;
+ s32 unk20;
+ s32 unk24;
+ s32 unk28;
+ s32 unk2C;
+ s32 unk30;
+ s32 unk34;
+ s32 unk38;
+ u8 filler3C[0xC];
+ s32 unk48;
+ u8 filler4C[0x20];
+ s32 unk6C;
+};
+
+#endif //GUARD_MAIN_H
diff --git a/structs/map.h b/include/map.h
index 18b8c1d1..18b8c1d1 100644
--- a/structs/map.h
+++ b/include/map.h
diff --git a/nitro/consts.h b/include/nitro/consts.h
index 3592500a..3592500a 100644
--- a/nitro/consts.h
+++ b/include/nitro/consts.h
diff --git a/nitro/mmap.h b/include/nitro/mmap.h
index 4c781d5f..4c781d5f 100644
--- a/nitro/mmap.h
+++ b/include/nitro/mmap.h
diff --git a/nitro/nitro.h b/include/nitro/nitro.h
index 8cf603f5..8cf603f5 100644
--- a/nitro/nitro.h
+++ b/include/nitro/nitro.h
diff --git a/nitro/os.c b/include/nitro/os.c
index 3ecffb34..3ecffb34 100644
--- a/nitro/os.c
+++ b/include/nitro/os.c
diff --git a/nitro/os.h b/include/nitro/os.h
index 84425631..84425631 100644
--- a/nitro/os.h
+++ b/include/nitro/os.h
diff --git a/nitro/types.h b/include/nitro/types.h
index 5ad2c75e..5ad2c75e 100644
--- a/nitro/types.h
+++ b/include/nitro/types.h
diff --git a/structs/pokemon.h b/include/pokemon.h
index b466a11c..b466a11c 100644
--- a/structs/pokemon.h
+++ b/include/pokemon.h
diff --git a/include/script.h b/include/script.h
new file mode 100644
index 00000000..2ecc8e28
--- /dev/null
+++ b/include/script.h
@@ -0,0 +1,27 @@
+#ifndef _SCRIPT_H_
+#define _SCRIPT_H_
+
+struct ScriptContext;
+
+typedef u8 (*ScrCmdFunc)(struct ScriptContext *);
+typedef u8 Script[];
+
+struct ScriptContext
+{
+ u8 stackDepth;
+ u8 mode;
+ u8 comparisonResult;
+ u8 (*nativePtr)(struct ScriptContext *);
+ const u8 *scriptPtr;
+ const u8 *stack[20];
+ ScrCmdFunc *cmdTable;
+ ScrCmdFunc *cmdTableEnd;
+ u32 data[4];
+ u32 unk74;
+};
+
+#define ScriptReadByte(ctx) (*(ctx->scriptPtr++))
+
+u16 ScriptReadHalfword(struct ScriptContext *ctx);
+
+#endif // _SCRIPT_H_
diff --git a/structs/structs.h b/include/structs.h
index 8a34d299..8a34d299 100644
--- a/structs/structs.h
+++ b/include/structs.h
diff --git a/ld_script.txt b/ld_script.txt
index 4d20c18e..d7f1135a 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -13,13 +13,17 @@
SECTIONS {
__romPos = 0;
+ BEGIN_SEG(ARM7Overlay, 0)
+ {
+ }
+ END_SEG(ARM7Overlay)
+
BEGIN_SEG(header, 0x0)
{
build/asm/rom_header.o(.text);
- }
+ . = 0x4000;
+ } =0
END_SEG(header)
-
- __romPos += 0x3E00;
BEGIN_SEG(arm9, 0x2000000)
{
@@ -27,38 +31,68 @@ SECTIONS {
build/asm/entry.o(.text);
build/asm/main.o(.text);
build/src/sub_02000DF4.o(.text);
+ build/asm/arm9_thumb.o(.text);
build/asm/rom2.o(.text);
}
END_SEG(arm9)
-
- BEGIN_SEG(rom3, 0x2000000 + SIZEOF(arm9))
+
+ garbage :
{
- build/asm/rom3.o(.text);
+ build/asm/unk_10b724.o(.text);
+ }=0
+
+ . = 0x10B800;__romPos = .;
+ BEGIN_SEG(ARM9Overlay, 0)
+ {
+ build/asm/arm9overlay.o(.text);
}
- END_SEG(rom3)
+ END_SEG(ARM9Overlay)
- BEGIN_SEG(gap1, 0x2000000 + SIZEOF(rom3) + SIZEOF(arm9))
+ . = 0x10C400;__romPos = .;
+ BEGIN_SEG(rom3, 0) /* shrug */
{
- build/asm/gap1.o(.text);
+ build/asm/rom3.o(.text);
}
- END_SEG(gap1)
+ END_SEG(rom3)
+ . = 0x30D000;__romPos = .;
BEGIN_SEG(arm7, 0x02380000)
{
build/asm/arm7_rom.o(.text);
}
END_SEG(arm7)
- BEGIN_SEG(gap2, 0x02380000 + SIZEOF(arm7))
+ . = 0x336400;__romPos = .;
+ BEGIN_SEG(FileNameTable, 0)
{
- build/asm/gap2.o(.text)
+ build/asm/filenametable.o(.text);
}
- END_SEG(gap2)
+ END_SEG(FileNameTable)
- . = 0x336400;
- BEGIN_SEG(FileNameTable, 0x02400000)
+ . = 0x337A00;__romPos = .;
+ BEGIN_SEG(FileAllocationTable, 0)
{
- build/asm/filenametable.o(.text);
+ build/asm/fat.o(.text);
}
- END_SEG(FileNameTable)
+ END_SEG(FileAllocationTable)
+
+ . = 0x338600;__romPos = .;
+ BEGIN_SEG(Icon, __romPos)
+ {
+ build/asm/icon.o(.text);
+ build/asm/title.o(.text);
+ }
+ END_SEG(Icon)
+
+ . = 0x339000;__romPos = .;
+ BEGIN_SEG(NARC, 0)
+ {
+ build/asm/narc.o(.text);
+ }
+ END_SEG(NARC)
+
+ /DISCARD/ :
+ {
+ *(*);
+ }
}
diff --git a/main.c b/main.c
deleted file mode 100644
index 17e69b3d..00000000
--- a/main.c
+++ /dev/null
@@ -1,7 +0,0 @@
-// Just includes for now so CLion sees the files
-#include "structs/structs.h"
-#include "nitro/nitro.h"
-
-void main() {
- int x = NULL;
-}
diff --git a/pokediamond.lcf b/pokediamond.lcf
new file mode 100644
index 00000000..f8c76abf
--- /dev/null
+++ b/pokediamond.lcf
@@ -0,0 +1,1493 @@
+/* TEST */
+MEMORY {
+ header (RWX) : ORIGIN=0, LENGTH=0
+ arm9 (RWX) : ORIGIN=0x2000000, LENGTH=0
+ unk_10b724 (RWX) : ORIGIN=0, LENGTH=0
+ arm9overlay (RWX) : ORIGIN=0, LENGTH=0
+ arm7 (RWX) : ORIGIN=0x2380000, LENGTH=0
+ filenametable (RWX) : ORIGIN=0, LENGTH=0
+ fileallocationtable (RWX) : ORIGIN=0, LENGTH=0
+ icon_title (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_10C400 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_10C600 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_10C800 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_10CA00 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_10CC00 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_145400 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_16B600 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_184400 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_187800 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_1A3000 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_1AD200 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_1AD400 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_1DFE00 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_1F9200 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_227E00 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_237400 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_23BC00 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_264200 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_26B200 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_283000 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_283200 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_285600 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_285C00 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_286C00 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_288600 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_289000 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_289600 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_289E00 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_28AA00 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_28C200 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_28CC00 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_28D200 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_28D800 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_28DE00 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_28E200 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_28E800 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_28F200 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_290000 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_290600 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_291200 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_292000 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_292E00 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_294000 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_294A00 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_295400 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_295A00 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_296400 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_296800 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_297600 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_298000 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_298600 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_298A00 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_299A00 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_299E00 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_29C400 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_29E800 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_2A1A00 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_2A6200 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_2A8800 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_2A9E00 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_2ACC00 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_2ADA00 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_2AEC00 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_2B2A00 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_2B7600 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_2B9400 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_2BC400 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_2BEC00 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_2C1200 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_2C2800 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_2C4C00 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_2C5C00 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_2C9C00 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_2C9E00 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_2CEA00 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_2CFE00 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_2D5C00 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_2D7C00 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_2D9800 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_2D9E00 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_2DF200 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_2E9A00 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_2EF000 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_2F1600 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_2FFA00 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_303400 (RWX) : ORIGIN=0, LENGTH=0
+ rom3.FILE_30C600 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_339000 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_339200 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_339C00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_33A400 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_33AE00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_33B800 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_33BA00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_33BC00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_33BE00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_33C000 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_33C200 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_33E400 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_33E800 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_33EA00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_33F800 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_3B3000 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_3B3200 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_3B3600 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_3B3800 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_3B3A00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_3B3C00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_3B3E00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_3B4000 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_3B4200 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_3B4400 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_3B4A00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_3FAA00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_3FAC00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_408000 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_408200 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_408400 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_408600 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_408800 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_408A00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_408C00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_408E00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_409000 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_409200 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_409400 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_409600 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_409E00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_412000 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_412400 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_412E00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_413000 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_414200 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_415400 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_415A00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_416C00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_417200 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_417600 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_41B600 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_423800 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_423C00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_423E00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_424000 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_424200 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_424400 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_424600 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_424800 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_424A00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_424C00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_424E00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_425000 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_425200 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_425400 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_425600 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_425C00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_426200 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_426400 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_426600 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_426800 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_426A00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_426C00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_426E00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_43C800 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_43CA00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_43CC00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_43DA00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_43DE00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_43E000 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_43E200 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_43E600 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_43EA00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_43EE00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_43F200 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_43F600 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_43FA00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_440200 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_441400 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_441800 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_441A00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_441C00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_441E00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_442000 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_442200 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_442400 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_442600 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_442800 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_442A00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_442C00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_445800 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_445C00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_44BA00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_44C200 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_44D600 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_44DA00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_451A00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_451C00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_451E00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_452000 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_452200 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_452800 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_473000 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_476A00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_494600 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_499400 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_499600 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_499800 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_499A00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_499C00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_499E00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_49A000 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_49A200 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_4A4600 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_57FC00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_58F600 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_58FA00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_593400 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_597400 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_597800 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_597C00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_CBB200 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_F4D400 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_F4F000 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_F54C00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_F55400 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_102EC00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_102F000 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_102F400 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_102F800 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1B6B400 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1B78200 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1C14A00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1C1B000 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1C21600 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1C22400 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1C22800 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1C27200 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1C2D000 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1C32600 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1C34C00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1C35400 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1C3A400 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1C4C800 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1CE8E00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1D09200 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1D0E400 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1D4C600 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1D4F800 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1D53A00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1D60200 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1D61C00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1D63200 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1D64600 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1D6C800 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1D6DA00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1D70800 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1DA6200 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1DC0000 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1DDBC00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1DDFE00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1DE0200 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1DE7E00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1DE8600 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1DE8A00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1E3A200 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1E5C800 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1E5F200 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1E69C00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1E73400 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1E73800 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1E94800 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1E94E00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1E9CE00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1EDB600 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1EF5800 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1EFA400 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1EFB600 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1F03000 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1F30000 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1F5C400 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1F5DA00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1F64600 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1F6E400 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1F71600 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1F7FC00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1F86600 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1F87C00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1F8A000 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1FA9200 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1FAA800 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1FB0200 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1FB2A00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1FC7A00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_1FC8400 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_2000000 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_2001400 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_2004400 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_200CE00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_2018600 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_201D400 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_207DE00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_207E400 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_210B600 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_2119C00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_2242200 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_225E200 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_22ACC00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_24F2600 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_24F3200 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_2515600 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_2528C00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_253C200 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_2710800 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_2712000 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_2715000 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_2715400 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_2716800 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_283BE00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_296EC00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_296F200 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_3787200 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_379AE00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_37A0C00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_37A4400 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_37ACA00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_37B2400 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_37D7800 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_37D8600 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_3810200 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_381F000 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_3821C00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_3824200 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_3824600 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_382AA00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_3835000 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_383E200 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_3841E00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_3842600 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_3843200 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_385A600 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_385AA00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_385CE00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_385D400 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_385D600 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_3860E00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_3861000 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_3863600 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_387EA00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_388CA00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_3923C00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_392A200 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_392FC00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_3938000 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_3949800 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_395B000 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_3968C00 (RWX) : ORIGIN=0, LENGTH=0
+ narc.FILE_397AA00 (RWX) : ORIGIN=0, LENGTH=0
+}
+
+SECTIONS {
+#include "undefined_syms.txt"
+ .header: {
+ rom_header.o (.text)
+ . = 0x4000;
+ } > header
+
+ .arm9 : AT (0x4000) {
+ secure.o (.text)
+ crt0.o (.text)
+ main.o (.text)
+ FUN_02000DF4.o (.text)
+ unk_02000E0C.o (.text)
+ string_util.o (.text)
+ unk_020023C0.o (.text)
+ filesystem.o (.text)
+ unk_02006864.o (.text)
+ script.o (.text)
+ unk_02038C78.o (.text)
+ scrcmd.o (.text)
+ unk_02046030.o (.text)
+ rom1.5.o (.text)
+ FUN_020C9C0C.o (.text)
+ rom2.o (.text)
+ /* rodata */
+ rom2.o (.data)
+ string_util.o (.data)
+ rom2_2.o (.data)
+ } > arm9
+
+ .unk_10b724 : AT (0x10B724) {
+ unk_10b724.o (.text)
+ } > unk_10b724
+
+ .arm9overlay : AT (0x10B800) {
+ arm9overlay.o (.text)
+ } > arm9overlay
+
+ .FILE_10C400 : AT (0x10C400) {
+ FILE_10C400.o (.text) /* 0x10C400 */
+ } > rom3.FILE_10C400
+ .FILE_10C600 : AT (0x10C600) {
+ FILE_10C600.o (.text) /* 0x10C600 */
+ } > rom3.FILE_10C600
+ .FILE_10C800 : AT (0x10C800) {
+ FILE_10C800.o (.text) /* 0x10C800 */
+ } > rom3.FILE_10C800
+ .FILE_10CA00 : AT (0x10CA00) {
+ FILE_10CA00.o (.text) /* 0x10CA00 */
+ } > rom3.FILE_10CA00
+ .FILE_10CC00 : AT (0x10CC00) {
+ FILE_10CC00.o (.text) /* 0x10CC00 */
+ } > rom3.FILE_10CC00
+ .FILE_145400 : AT (0x145400) {
+ FILE_145400.o (.text) /* 0x145400 */
+ } > rom3.FILE_145400
+ .FILE_16B600 : AT (0x16B600) {
+ FILE_16B600.o (.text) /* 0x16B600 */
+ } > rom3.FILE_16B600
+ .FILE_184400 : AT (0x184400) {
+ FILE_184400.o (.text) /* 0x184400 */
+ } > rom3.FILE_184400
+ .FILE_187800 : AT (0x187800) {
+ FILE_187800.o (.text) /* 0x187800 */
+ } > rom3.FILE_187800
+ .FILE_1A3000 : AT (0x1A3000) {
+ FILE_1A3000.o (.text) /* 0x1A3000 */
+ } > rom3.FILE_1A3000
+ .FILE_1AD200 : AT (0x1AD200) {
+ FILE_1AD200.o (.text) /* 0x1AD200 */
+ } > rom3.FILE_1AD200
+ .FILE_1AD400 : AT (0x1AD400) {
+ FILE_1AD400.o (.text) /* 0x1AD400 */
+ } > rom3.FILE_1AD400
+ .FILE_1DFE00 : AT (0x1DFE00) {
+ FILE_1DFE00.o (.text) /* 0x1DFE00 */
+ } > rom3.FILE_1DFE00
+ .FILE_1F9200 : AT (0x1F9200) {
+ FILE_1F9200.o (.text) /* 0x1F9200 */
+ } > rom3.FILE_1F9200
+ .FILE_227E00 : AT (0x227E00) {
+ FILE_227E00.o (.text) /* 0x227E00 */
+ } > rom3.FILE_227E00
+ .FILE_237400 : AT (0x237400) {
+ FILE_237400.o (.text) /* 0x237400 */
+ } > rom3.FILE_237400
+ .FILE_23BC00 : AT (0x23BC00) {
+ FILE_23BC00.o (.text) /* 0x23BC00 */
+ } > rom3.FILE_23BC00
+ .FILE_264200 : AT (0x264200) {
+ FILE_264200.o (.text) /* 0x264200 */
+ } > rom3.FILE_264200
+ .FILE_26B200 : AT (0x26B200) {
+ FILE_26B200.o (.text) /* 0x26B200 */
+ } > rom3.FILE_26B200
+ .FILE_283000 : AT (0x283000) {
+ FILE_283000.o (.text) /* 0x283000 */
+ } > rom3.FILE_283000
+ .FILE_283200 : AT (0x283200) {
+ FILE_283200.o (.text) /* 0x283200 */
+ } > rom3.FILE_283200
+ .FILE_285600 : AT (0x285600) {
+ FILE_285600.o (.text) /* 0x285600 */
+ } > rom3.FILE_285600
+ .FILE_285C00 : AT (0x285C00) {
+ FILE_285C00.o (.text) /* 0x285C00 */
+ } > rom3.FILE_285C00
+ .FILE_286C00 : AT (0x286C00) {
+ FILE_286C00.o (.text) /* 0x286C00 */
+ } > rom3.FILE_286C00
+ .FILE_288600 : AT (0x288600) {
+ FILE_288600.o (.text) /* 0x288600 */
+ } > rom3.FILE_288600
+ .FILE_289000 : AT (0x289000) {
+ FILE_289000.o (.text) /* 0x289000 */
+ } > rom3.FILE_289000
+ .FILE_289600 : AT (0x289600) {
+ FILE_289600.o (.text) /* 0x289600 */
+ } > rom3.FILE_289600
+ .FILE_289E00 : AT (0x289E00) {
+ FILE_289E00.o (.text) /* 0x289E00 */
+ } > rom3.FILE_289E00
+ .FILE_28AA00 : AT (0x28AA00) {
+ FILE_28AA00.o (.text) /* 0x28AA00 */
+ } > rom3.FILE_28AA00
+ .FILE_28C200 : AT (0x28C200) {
+ FILE_28C200.o (.text) /* 0x28C200 */
+ } > rom3.FILE_28C200
+ .FILE_28CC00 : AT (0x28CC00) {
+ FILE_28CC00.o (.text) /* 0x28CC00 */
+ } > rom3.FILE_28CC00
+ .FILE_28D200 : AT (0x28D200) {
+ FILE_28D200.o (.text) /* 0x28D200 */
+ } > rom3.FILE_28D200
+ .FILE_28D800 : AT (0x28D800) {
+ FILE_28D800.o (.text) /* 0x28D800 */
+ } > rom3.FILE_28D800
+ .FILE_28DE00 : AT (0x28DE00) {
+ FILE_28DE00.o (.text) /* 0x28DE00 */
+ } > rom3.FILE_28DE00
+ .FILE_28E200 : AT (0x28E200) {
+ FILE_28E200.o (.text) /* 0x28E200 */
+ } > rom3.FILE_28E200
+ .FILE_28E800 : AT (0x28E800) {
+ FILE_28E800.o (.text) /* 0x28E800 */
+ } > rom3.FILE_28E800
+ .FILE_28F200 : AT (0x28F200) {
+ FILE_28F200.o (.text) /* 0x28F200 */
+ } > rom3.FILE_28F200
+ .FILE_290000 : AT (0x290000) {
+ FILE_290000.o (.text) /* 0x290000 */
+ } > rom3.FILE_290000
+ .FILE_290600 : AT (0x290600) {
+ FILE_290600.o (.text) /* 0x290600 */
+ } > rom3.FILE_290600
+ .FILE_291200 : AT (0x291200) {
+ FILE_291200.o (.text) /* 0x291200 */
+ } > rom3.FILE_291200
+ .FILE_292000 : AT (0x292000) {
+ FILE_292000.o (.text) /* 0x292000 */
+ } > rom3.FILE_292000
+ .FILE_292E00 : AT (0x292E00) {
+ FILE_292E00.o (.text) /* 0x292E00 */
+ } > rom3.FILE_292E00
+ .FILE_294000 : AT (0x294000) {
+ FILE_294000.o (.text) /* 0x294000 */
+ } > rom3.FILE_294000
+ .FILE_294A00 : AT (0x294A00) {
+ FILE_294A00.o (.text) /* 0x294A00 */
+ } > rom3.FILE_294A00
+ .FILE_295400 : AT (0x295400) {
+ FILE_295400.o (.text) /* 0x295400 */
+ } > rom3.FILE_295400
+ .FILE_295A00 : AT (0x295A00) {
+ FILE_295A00.o (.text) /* 0x295A00 */
+ } > rom3.FILE_295A00
+ .FILE_296400 : AT (0x296400) {
+ FILE_296400.o (.text) /* 0x296400 */
+ } > rom3.FILE_296400
+ .FILE_296800 : AT (0x296800) {
+ FILE_296800.o (.text) /* 0x296800 */
+ } > rom3.FILE_296800
+ .FILE_297600 : AT (0x297600) {
+ FILE_297600.o (.text) /* 0x297600 */
+ } > rom3.FILE_297600
+ .FILE_298000 : AT (0x298000) {
+ FILE_298000.o (.text) /* 0x298000 */
+ } > rom3.FILE_298000
+ .FILE_298600 : AT (0x298600) {
+ FILE_298600.o (.text) /* 0x298600 */
+ } > rom3.FILE_298600
+ .FILE_298A00 : AT (0x298A00) {
+ FILE_298A00.o (.text) /* 0x298A00 */
+ } > rom3.FILE_298A00
+ .FILE_299A00 : AT (0x299A00) {
+ FILE_299A00.o (.text) /* 0x299A00 */
+ } > rom3.FILE_299A00
+ .FILE_299E00 : AT (0x299E00) {
+ FILE_299E00.o (.text) /* 0x299E00 */
+ } > rom3.FILE_299E00
+ .FILE_29C400 : AT (0x29C400) {
+ FILE_29C400.o (.text) /* 0x29C400 */
+ } > rom3.FILE_29C400
+ .FILE_29E800 : AT (0x29E800) {
+ FILE_29E800.o (.text) /* 0x29E800 */
+ } > rom3.FILE_29E800
+ .FILE_2A1A00 : AT (0x2A1A00) {
+ FILE_2A1A00.o (.text) /* 0x2A1A00 */
+ } > rom3.FILE_2A1A00
+ .FILE_2A6200 : AT (0x2A6200) {
+ FILE_2A6200.o (.text) /* 0x2A6200 */
+ } > rom3.FILE_2A6200
+ .FILE_2A8800 : AT (0x2A8800) {
+ FILE_2A8800.o (.text) /* 0x2A8800 */
+ } > rom3.FILE_2A8800
+ .FILE_2A9E00 : AT (0x2A9E00) {
+ FILE_2A9E00.o (.text) /* 0x2A9E00 */
+ } > rom3.FILE_2A9E00
+ .FILE_2ACC00 : AT (0x2ACC00) {
+ FILE_2ACC00.o (.text) /* 0x2ACC00 */
+ } > rom3.FILE_2ACC00
+ .FILE_2ADA00 : AT (0x2ADA00) {
+ FILE_2ADA00.o (.text) /* 0x2ADA00 */
+ } > rom3.FILE_2ADA00
+ .FILE_2AEC00 : AT (0x2AEC00) {
+ FILE_2AEC00.o (.text) /* 0x2AEC00 */
+ } > rom3.FILE_2AEC00
+ .FILE_2B2A00 : AT (0x2B2A00) {
+ FILE_2B2A00.o (.text) /* 0x2B2A00 */
+ } > rom3.FILE_2B2A00
+ .FILE_2B7600 : AT (0x2B7600) {
+ FILE_2B7600.o (.text) /* 0x2B7600 */
+ } > rom3.FILE_2B7600
+ .FILE_2B9400 : AT (0x2B9400) {
+ FILE_2B9400.o (.text) /* 0x2B9400 */
+ } > rom3.FILE_2B9400
+ .FILE_2BC400 : AT (0x2BC400) {
+ FILE_2BC400.o (.text) /* 0x2BC400 */
+ } > rom3.FILE_2BC400
+ .FILE_2BEC00 : AT (0x2BEC00) {
+ FILE_2BEC00.o (.text) /* 0x2BEC00 */
+ } > rom3.FILE_2BEC00
+ .FILE_2C1200 : AT (0x2C1200) {
+ FILE_2C1200.o (.text) /* 0x2C1200 */
+ } > rom3.FILE_2C1200
+ .FILE_2C2800 : AT (0x2C2800) {
+ FILE_2C2800.o (.text) /* 0x2C2800 */
+ } > rom3.FILE_2C2800
+ .FILE_2C4C00 : AT (0x2C4C00) {
+ FILE_2C4C00.o (.text) /* 0x2C4C00 */
+ } > rom3.FILE_2C4C00
+ .FILE_2C5C00 : AT (0x2C5C00) {
+ FILE_2C5C00.o (.text) /* 0x2C5C00 */
+ } > rom3.FILE_2C5C00
+ .FILE_2C9C00 : AT (0x2C9C00) {
+ FILE_2C9C00.o (.text) /* 0x2C9C00 */
+ } > rom3.FILE_2C9C00
+ .FILE_2C9E00 : AT (0x2C9E00) {
+ FILE_2C9E00.o (.text) /* 0x2C9E00 */
+ } > rom3.FILE_2C9E00
+ .FILE_2CEA00 : AT (0x2CEA00) {
+ FILE_2CEA00.o (.text) /* 0x2CEA00 */
+ } > rom3.FILE_2CEA00
+ .FILE_2CFE00 : AT (0x2CFE00) {
+ FILE_2CFE00.o (.text) /* 0x2CFE00 */
+ } > rom3.FILE_2CFE00
+ .FILE_2D5C00 : AT (0x2D5C00) {
+ FILE_2D5C00.o (.text) /* 0x2D5C00 */
+ } > rom3.FILE_2D5C00
+ .FILE_2D7C00 : AT (0x2D7C00) {
+ FILE_2D7C00.o (.text) /* 0x2D7C00 */
+ } > rom3.FILE_2D7C00
+ .FILE_2D9800 : AT (0x2D9800) {
+ FILE_2D9800.o (.text) /* 0x2D9800 */
+ } > rom3.FILE_2D9800
+ .FILE_2D9E00 : AT (0x2D9E00) {
+ FILE_2D9E00.o (.text) /* 0x2D9E00 */
+ } > rom3.FILE_2D9E00
+ .FILE_2DF200 : AT (0x2DF200) {
+ FILE_2DF200.o (.text) /* 0x2DF200 */
+ } > rom3.FILE_2DF200
+ .FILE_2E9A00 : AT (0x2E9A00) {
+ FILE_2E9A00.o (.text) /* 0x2E9A00 */
+ } > rom3.FILE_2E9A00
+ .FILE_2EF000 : AT (0x2EF000) {
+ FILE_2EF000.o (.text) /* 0x2EF000 */
+ } > rom3.FILE_2EF000
+ .FILE_2F1600 : AT (0x2F1600) {
+ FILE_2F1600.o (.text) /* 0x2F1600 */
+ } > rom3.FILE_2F1600
+ .FILE_2FFA00 : AT (0x2FFA00) {
+ FILE_2FFA00.o (.text) /* 0x2FFA00 */
+ } > rom3.FILE_2FFA00
+ .FILE_303400 : AT (0x303400) {
+ FILE_303400.o (.text) /* 0x303400 */
+ } > rom3.FILE_303400
+ .FILE_30C600 : AT (0x30C600) {
+ FILE_30C600.o (.text) /* 0x30C600 */
+ } > rom3.FILE_30C600
+
+ .arm7 : AT(0x30D000) {
+ arm7_rom.o(.text)
+ } > arm7
+
+ .filenametable : AT(0x336400) {
+ filenametable.o(.text)
+ } > filenametable
+
+ .fileallocationtable : AT(0x337A00) {
+ fat.o(.text)
+ } > fileallocationtable
+
+ .icon_title : AT(0x338600) {
+ icon.o(.text)
+ title.o(.text)
+ } > icon_title
+
+ .FILE_339000 : AT (0x339000) {
+ FILE_339000_UTF16.dat.o (.text) /* 0x339000 */
+ } > narc.FILE_339000
+ .FILE_339200 : AT (0x339200) {
+ FILE_339200_area00light.txt.o (.text) /* 0x339200 */
+ } > narc.FILE_339200
+ .FILE_339C00 : AT (0x339C00) {
+ FILE_339C00_area01light.txt.o (.text) /* 0x339C00 */
+ } > narc.FILE_339C00
+ .FILE_33A400 : AT (0x33A400) {
+ FILE_33A400_area02light.txt.o (.text) /* 0x33A400 */
+ } > narc.FILE_33A400
+ .FILE_33AE00 : AT (0x33AE00) {
+ FILE_33AE00_battle_win.NSCR.o (.text) /* 0x33AE00 */
+ } > narc.FILE_33AE00
+ .FILE_33B800 : AT (0x33B800) {
+ FILE_33B800_btower_canm.resdat.o (.text) /* 0x33B800 */
+ } > narc.FILE_33B800
+ .FILE_33BA00 : AT (0x33BA00) {
+ FILE_33BA00_btower_celact.cldat.o (.text) /* 0x33BA00 */
+ } > narc.FILE_33BA00
+ .FILE_33BC00 : AT (0x33BC00) {
+ FILE_33BC00_btower_cell.resdat.o (.text) /* 0x33BC00 */
+ } > narc.FILE_33BC00
+ .FILE_33BE00 : AT (0x33BE00) {
+ FILE_33BE00_btower_chr.resdat.o (.text) /* 0x33BE00 */
+ } > narc.FILE_33BE00
+ .FILE_33C000 : AT (0x33C000) {
+ FILE_33C000_btower_pal.resdat.o (.text) /* 0x33C000 */
+ } > narc.FILE_33C000
+ .FILE_33C200 : AT (0x33C200) {
+ FILE_33C200_cell0.NCGR.o (.text) /* 0x33C200 */
+ } > narc.FILE_33C200
+ .FILE_33E400 : AT (0x33E400) {
+ FILE_33E400_cell0.NCLR.o (.text) /* 0x33E400 */
+ } > narc.FILE_33E400
+ .FILE_33E800 : AT (0x33E800) {
+ FILE_33E800_clact_default.NANR.o (.text) /* 0x33E800 */
+ } > narc.FILE_33E800
+ .FILE_33EA00 : AT (0x33EA00) {
+ FILE_33EA00_crystal.nsbmd.o (.text) /* 0x33EA00 */
+ } > narc.FILE_33EA00
+ .FILE_33F800 : AT (0x33F800) {
+ FILE_33F800_demo_climax.narc.o (.text) /* 0x33F800 */
+ } > narc.FILE_33F800
+ .FILE_3B3000 : AT (0x3B3000) {
+ FILE_3B3000_dp_areawindow.NCGR.o (.text) /* 0x3B3000 */
+ } > narc.FILE_3B3000
+ .FILE_3B3200 : AT (0x3B3200) {
+ FILE_3B3200_dp_areawindow.NCLR.o (.text) /* 0x3B3200 */
+ } > narc.FILE_3B3200
+ .FILE_3B3600 : AT (0x3B3600) {
+ FILE_3B3600_dt_test_celact.txt.o (.text) /* 0x3B3600 */
+ } > narc.FILE_3B3600
+ .FILE_3B3800 : AT (0x3B3800) {
+ FILE_3B3800_dt_test_res_cell.txt.o (.text) /* 0x3B3800 */
+ } > narc.FILE_3B3800
+ .FILE_3B3A00 : AT (0x3B3A00) {
+ FILE_3B3A00_dt_test_res_cellanm.txt.o (.text) /* 0x3B3A00 */
+ } > narc.FILE_3B3A00
+ .FILE_3B3C00 : AT (0x3B3C00) {
+ FILE_3B3C00_dt_test_res_char.txt.o (.text) /* 0x3B3C00 */
+ } > narc.FILE_3B3C00
+ .FILE_3B3E00 : AT (0x3B3E00) {
+ FILE_3B3E00_dt_test_res_multi.txt.o (.text) /* 0x3B3E00 */
+ } > narc.FILE_3B3E00
+ .FILE_3B4000 : AT (0x3B4000) {
+ FILE_3B4000_dt_test_res_multianm.txt.o (.text) /* 0x3B4000 */
+ } > narc.FILE_3B4000
+ .FILE_3B4200 : AT (0x3B4200) {
+ FILE_3B4200_dt_test_res_pltt.txt.o (.text) /* 0x3B4200 */
+ } > narc.FILE_3B4200
+ .FILE_3B4400 : AT (0x3B4400) {
+ FILE_3B4400_dun_sea.nsbtx.o (.text) /* 0x3B4400 */
+ } > narc.FILE_3B4400
+ .FILE_3B4A00 : AT (0x3B4A00) {
+ FILE_3B4A00_eoo.dat.o (.text) /* 0x3B4A00 */
+ } > narc.FILE_3B4A00
+ .FILE_3FAA00 : AT (0x3FAA00) {
+ FILE_3FAA00_exdata.dat.o (.text) /* 0x3FAA00 */
+ } > narc.FILE_3FAA00
+ .FILE_3FAC00 : AT (0x3FAC00) {
+ FILE_3FAC00_field_cutin.narc.o (.text) /* 0x3FAC00 */
+ } > narc.FILE_3FAC00
+ .FILE_408000 : AT (0x408000) {
+ FILE_408000_fld_anime0.bin.o (.text) /* 0x408000 */
+ } > narc.FILE_408000
+ .FILE_408200 : AT (0x408200) {
+ FILE_408200_fld_anime1.bin.o (.text) /* 0x408200 */
+ } > narc.FILE_408200
+ .FILE_408400 : AT (0x408400) {
+ FILE_408400_fld_anime10.bin.o (.text) /* 0x408400 */
+ } > narc.FILE_408400
+ .FILE_408600 : AT (0x408600) {
+ FILE_408600_fld_anime2.bin.o (.text) /* 0x408600 */
+ } > narc.FILE_408600
+ .FILE_408800 : AT (0x408800) {
+ FILE_408800_fld_anime3.bin.o (.text) /* 0x408800 */
+ } > narc.FILE_408800
+ .FILE_408A00 : AT (0x408A00) {
+ FILE_408A00_fld_anime4.bin.o (.text) /* 0x408A00 */
+ } > narc.FILE_408A00
+ .FILE_408C00 : AT (0x408C00) {
+ FILE_408C00_fld_anime5.bin.o (.text) /* 0x408C00 */
+ } > narc.FILE_408C00
+ .FILE_408E00 : AT (0x408E00) {
+ FILE_408E00_fld_anime6.bin.o (.text) /* 0x408E00 */
+ } > narc.FILE_408E00
+ .FILE_409000 : AT (0x409000) {
+ FILE_409000_fld_anime7.bin.o (.text) /* 0x409000 */
+ } > narc.FILE_409000
+ .FILE_409200 : AT (0x409200) {
+ FILE_409200_fld_anime8.bin.o (.text) /* 0x409200 */
+ } > narc.FILE_409200
+ .FILE_409400 : AT (0x409400) {
+ FILE_409400_fld_anime9.bin.o (.text) /* 0x409400 */
+ } > narc.FILE_409400
+ .FILE_409600 : AT (0x409600) {
+ FILE_409600_fs_kanban.nsbca.o (.text) /* 0x409600 */
+ } > narc.FILE_409600
+ .FILE_409E00 : AT (0x409E00) {
+ FILE_409E00_ground0.NCGR.o (.text) /* 0x409E00 */
+ } > narc.FILE_409E00
+ .FILE_412000 : AT (0x412000) {
+ FILE_412000_ground0.NCLR.o (.text) /* 0x412000 */
+ } > narc.FILE_412000
+ .FILE_412400 : AT (0x412400) {
+ FILE_412400_ground0.NSCR.o (.text) /* 0x412400 */
+ } > narc.FILE_412400
+ .FILE_412E00 : AT (0x412E00) {
+ FILE_412E00_kemu_itpconv.dat.o (.text) /* 0x412E00 */
+ } > narc.FILE_412E00
+ .FILE_413000 : AT (0x413000) {
+ FILE_413000_lake_anim.nsbtx.o (.text) /* 0x413000 */
+ } > narc.FILE_413000
+ .FILE_414200 : AT (0x414200) {
+ FILE_414200_miniasahamabe.nsbtx.o (.text) /* 0x414200 */
+ } > narc.FILE_414200
+ .FILE_415400 : AT (0x415400) {
+ FILE_415400_miniasasea.nsbtx.o (.text) /* 0x415400 */
+ } > narc.FILE_415400
+ .FILE_415A00 : AT (0x415A00) {
+ FILE_415A00_minihamabe.nsbtx.o (.text) /* 0x415A00 */
+ } > narc.FILE_415A00
+ .FILE_416C00 : AT (0x416C00) {
+ FILE_416C00_minimum.nsbtx.o (.text) /* 0x416C00 */
+ } > narc.FILE_416C00
+ .FILE_417200 : AT (0x417200) {
+ FILE_417200_minirhana.nsbtx.o (.text) /* 0x417200 */
+ } > narc.FILE_417200
+ .FILE_417600 : AT (0x417600) {
+ FILE_417600_namein.narc.o (.text) /* 0x417600 */
+ } > narc.FILE_417600
+ .FILE_41B600 : AT (0x41B600) {
+ FILE_41B600_nfont.NCGR.o (.text) /* 0x41B600 */
+ } > narc.FILE_41B600
+ .FILE_423800 : AT (0x423800) {
+ FILE_423800_nfont.NCLR.o (.text) /* 0x423800 */
+ } > narc.FILE_423800
+ .FILE_423C00 : AT (0x423C00) {
+ FILE_423C00_pc.nsbca.o (.text) /* 0x423C00 */
+ } > narc.FILE_423C00
+ .FILE_423E00 : AT (0x423E00) {
+ FILE_423E00_plist_canm.resdat.o (.text) /* 0x423E00 */
+ } > narc.FILE_423E00
+ .FILE_424000 : AT (0x424000) {
+ FILE_424000_plist_cell.resdat.o (.text) /* 0x424000 */
+ } > narc.FILE_424000
+ .FILE_424200 : AT (0x424200) {
+ FILE_424200_plist_chr.resdat.o (.text) /* 0x424200 */
+ } > narc.FILE_424200
+ .FILE_424400 : AT (0x424400) {
+ FILE_424400_plist_h.cldat.o (.text) /* 0x424400 */
+ } > narc.FILE_424400
+ .FILE_424600 : AT (0x424600) {
+ FILE_424600_plist_pal.resdat.o (.text) /* 0x424600 */
+ } > narc.FILE_424600
+ .FILE_424800 : AT (0x424800) {
+ FILE_424800_porucase_canm.resdat.o (.text) /* 0x424800 */
+ } > narc.FILE_424800
+ .FILE_424A00 : AT (0x424A00) {
+ FILE_424A00_porucase_celact.cldat.o (.text) /* 0x424A00 */
+ } > narc.FILE_424A00
+ .FILE_424C00 : AT (0x424C00) {
+ FILE_424C00_porucase_cell.resdat.o (.text) /* 0x424C00 */
+ } > narc.FILE_424C00
+ .FILE_424E00 : AT (0x424E00) {
+ FILE_424E00_porucase_chr.resdat.o (.text) /* 0x424E00 */
+ } > narc.FILE_424E00
+ .FILE_425000 : AT (0x425000) {
+ FILE_425000_porucase_pal.resdat.o (.text) /* 0x425000 */
+ } > narc.FILE_425000
+ .FILE_425200 : AT (0x425200) {
+ FILE_425200_pst_canm.resdat.o (.text) /* 0x425200 */
+ } > narc.FILE_425200
+ .FILE_425400 : AT (0x425400) {
+ FILE_425400_pst_cell.resdat.o (.text) /* 0x425400 */
+ } > narc.FILE_425400
+ .FILE_425600 : AT (0x425600) {
+ FILE_425600_pst_chr.resdat.o (.text) /* 0x425600 */
+ } > narc.FILE_425600
+ .FILE_425C00 : AT (0x425C00) {
+ FILE_425C00_pst_h.cldat.o (.text) /* 0x425C00 */
+ } > narc.FILE_425C00
+ .FILE_426200 : AT (0x426200) {
+ FILE_426200_pst_pal.resdat.o (.text) /* 0x426200 */
+ } > narc.FILE_426200
+ .FILE_426400 : AT (0x426400) {
+ FILE_426400_shop_canm.resdat.o (.text) /* 0x426400 */
+ } > narc.FILE_426400
+ .FILE_426600 : AT (0x426600) {
+ FILE_426600_shop_cell.resdat.o (.text) /* 0x426600 */
+ } > narc.FILE_426600
+ .FILE_426800 : AT (0x426800) {
+ FILE_426800_shop_chr.resdat.o (.text) /* 0x426800 */
+ } > narc.FILE_426800
+ .FILE_426A00 : AT (0x426A00) {
+ FILE_426A00_shop_h.cldat.o (.text) /* 0x426A00 */
+ } > narc.FILE_426A00
+ .FILE_426C00 : AT (0x426C00) {
+ FILE_426C00_shop_pal.resdat.o (.text) /* 0x426C00 */
+ } > narc.FILE_426C00
+ .FILE_426E00 : AT (0x426E00) {
+ FILE_426E00_slot.narc.o (.text) /* 0x426E00 */
+ } > narc.FILE_426E00
+ .FILE_43C800 : AT (0x43C800) {
+ FILE_43C800_smptm_koori.NANR.o (.text) /* 0x43C800 */
+ } > narc.FILE_43C800
+ .FILE_43CA00 : AT (0x43CA00) {
+ FILE_43CA00_smptm_koori.NCER.o (.text) /* 0x43CA00 */
+ } > narc.FILE_43CA00
+ .FILE_43CC00 : AT (0x43CC00) {
+ FILE_43CC00_smptm_koori.NCGR.o (.text) /* 0x43CC00 */
+ } > narc.FILE_43CC00
+ .FILE_43DA00 : AT (0x43DA00) {
+ FILE_43DA00_smptm_koori.NCLR.o (.text) /* 0x43DA00 */
+ } > narc.FILE_43DA00
+ .FILE_43DE00 : AT (0x43DE00) {
+ FILE_43DE00_smptm_nemuri.NANR.o (.text) /* 0x43DE00 */
+ } > narc.FILE_43DE00
+ .FILE_43E000 : AT (0x43E000) {
+ FILE_43E000_smptm_nemuri.NCER.o (.text) /* 0x43E000 */
+ } > narc.FILE_43E000
+ .FILE_43E200 : AT (0x43E200) {
+ FILE_43E200_smptm_nemuri.NCGR.o (.text) /* 0x43E200 */
+ } > narc.FILE_43E200
+ .FILE_43E600 : AT (0x43E600) {
+ FILE_43E600_smptm_nemuri.NCLR.o (.text) /* 0x43E600 */
+ } > narc.FILE_43E600
+ .FILE_43EA00 : AT (0x43EA00) {
+ FILE_43EA00_t3_fl_b.nsbtx.o (.text) /* 0x43EA00 */
+ } > narc.FILE_43EA00
+ .FILE_43EE00 : AT (0x43EE00) {
+ FILE_43EE00_t3_fl_p.nsbtx.o (.text) /* 0x43EE00 */
+ } > narc.FILE_43EE00
+ .FILE_43F200 : AT (0x43F200) {
+ FILE_43F200_t3_fl_r.nsbtx.o (.text) /* 0x43F200 */
+ } > narc.FILE_43F200
+ .FILE_43F600 : AT (0x43F600) {
+ FILE_43F600_t3_fl_y.nsbtx.o (.text) /* 0x43F600 */
+ } > narc.FILE_43F600
+ .FILE_43FA00 : AT (0x43FA00) {
+ FILE_43FA00_test.atr.o (.text) /* 0x43FA00 */
+ } > narc.FILE_43FA00
+ .FILE_440200 : AT (0x440200) {
+ FILE_440200_tmap_block.dat.o (.text) /* 0x440200 */
+ } > narc.FILE_440200
+ .FILE_441400 : AT (0x441400) {
+ FILE_441400_tmap_flags.dat.o (.text) /* 0x441400 */
+ } > narc.FILE_441400
+ .FILE_441800 : AT (0x441800) {
+ FILE_441800_tmapn_canm.resdat.o (.text) /* 0x441800 */
+ } > narc.FILE_441800
+ .FILE_441A00 : AT (0x441A00) {
+ FILE_441A00_tmapn_celact.cldat.o (.text) /* 0x441A00 */
+ } > narc.FILE_441A00
+ .FILE_441C00 : AT (0x441C00) {
+ FILE_441C00_tmapn_celact.txt.o (.text) /* 0x441C00 */
+ } > narc.FILE_441C00
+ .FILE_441E00 : AT (0x441E00) {
+ FILE_441E00_tmapn_cell.resdat.o (.text) /* 0x441E00 */
+ } > narc.FILE_441E00
+ .FILE_442000 : AT (0x442000) {
+ FILE_442000_tmapn_chr.resdat.o (.text) /* 0x442000 */
+ } > narc.FILE_442000
+ .FILE_442200 : AT (0x442200) {
+ FILE_442200_tmapn_pal.resdat.o (.text) /* 0x442200 */
+ } > narc.FILE_442200
+ .FILE_442400 : AT (0x442400) {
+ FILE_442400_tmapn_res_canm.txt.o (.text) /* 0x442400 */
+ } > narc.FILE_442400
+ .FILE_442600 : AT (0x442600) {
+ FILE_442600_tmapn_res_cell.txt.o (.text) /* 0x442600 */
+ } > narc.FILE_442600
+ .FILE_442800 : AT (0x442800) {
+ FILE_442800_tmapn_res_chr.txt.o (.text) /* 0x442800 */
+ } > narc.FILE_442800
+ .FILE_442A00 : AT (0x442A00) {
+ FILE_442A00_tmapn_res_pal.txt.o (.text) /* 0x442A00 */
+ } > narc.FILE_442A00
+ .FILE_442C00 : AT (0x442C00) {
+ FILE_442C00_tradelist.narc.o (.text) /* 0x442C00 */
+ } > narc.FILE_442C00
+ .FILE_445800 : AT (0x445800) {
+ FILE_445800_trapmark.narc.o (.text) /* 0x445800 */
+ } > narc.FILE_445800
+ .FILE_445C00 : AT (0x445C00) {
+ FILE_445C00_ug_anim.narc.o (.text) /* 0x445C00 */
+ } > narc.FILE_445C00
+ .FILE_44BA00 : AT (0x44BA00) {
+ FILE_44BA00_ug_base_cur.nsbmd.o (.text) /* 0x44BA00 */
+ } > narc.FILE_44BA00
+ .FILE_44C200 : AT (0x44C200) {
+ FILE_44C200_ug_boygirl.NCGR.o (.text) /* 0x44C200 */
+ } > narc.FILE_44C200
+ .FILE_44D600 : AT (0x44D600) {
+ FILE_44D600_ug_boygirl.NCLR.o (.text) /* 0x44D600 */
+ } > narc.FILE_44D600
+ .FILE_44DA00 : AT (0x44DA00) {
+ FILE_44DA00_ug_fossil.narc.o (.text) /* 0x44DA00 */
+ } > narc.FILE_44DA00
+ .FILE_451A00 : AT (0x451A00) {
+ FILE_451A00_ug_hero.NANR.o (.text) /* 0x451A00 */
+ } > narc.FILE_451A00
+ .FILE_451C00 : AT (0x451C00) {
+ FILE_451C00_ug_hero.NCER.o (.text) /* 0x451C00 */
+ } > narc.FILE_451C00
+ .FILE_451E00 : AT (0x451E00) {
+ FILE_451E00_ug_hole.NANR.o (.text) /* 0x451E00 */
+ } > narc.FILE_451E00
+ .FILE_452000 : AT (0x452000) {
+ FILE_452000_ug_hole.NCER.o (.text) /* 0x452000 */
+ } > narc.FILE_452000
+ .FILE_452200 : AT (0x452200) {
+ FILE_452200_ug_hole.NCGR.o (.text) /* 0x452200 */
+ } > narc.FILE_452200
+ .FILE_452800 : AT (0x452800) {
+ FILE_452800_ug_parts.narc.o (.text) /* 0x452800 */
+ } > narc.FILE_452800
+ .FILE_473000 : AT (0x473000) {
+ FILE_473000_ug_radar.narc.o (.text) /* 0x473000 */
+ } > narc.FILE_473000
+ .FILE_476A00 : AT (0x476A00) {
+ FILE_476A00_ug_trap.narc.o (.text) /* 0x476A00 */
+ } > narc.FILE_476A00
+ .FILE_494600 : AT (0x494600) {
+ FILE_494600_ugeffect_obj_graphic.narc.o (.text) /* 0x494600 */
+ } > narc.FILE_494600
+ .FILE_499400 : AT (0x499400) {
+ FILE_499400_uground_cell.resdat.o (.text) /* 0x499400 */
+ } > narc.FILE_499400
+ .FILE_499600 : AT (0x499600) {
+ FILE_499600_uground_cellanm.resdat.o (.text) /* 0x499600 */
+ } > narc.FILE_499600
+ .FILE_499800 : AT (0x499800) {
+ FILE_499800_uground_char.resdat.o (.text) /* 0x499800 */
+ } > narc.FILE_499800
+ .FILE_499A00 : AT (0x499A00) {
+ FILE_499A00_uground_char2.resdat.o (.text) /* 0x499A00 */
+ } > narc.FILE_499A00
+ .FILE_499C00 : AT (0x499C00) {
+ FILE_499C00_uground_clact.cldat.o (.text) /* 0x499C00 */
+ } > narc.FILE_499C00
+ .FILE_499E00 : AT (0x499E00) {
+ FILE_499E00_uground_pltt.resdat.o (.text) /* 0x499E00 */
+ } > narc.FILE_499E00
+ .FILE_49A000 : AT (0x49A000) {
+ FILE_49A000_uground_pltt2.resdat.o (.text) /* 0x49A000 */
+ } > narc.FILE_49A000
+ .FILE_49A200 : AT (0x49A200) {
+ FILE_49A200_underg_radar.narc.o (.text) /* 0x49A200 */
+ } > narc.FILE_49A200
+ .FILE_4A4600 : AT (0x4A4600) {
+ FILE_4A4600_utility.bin.o (.text) /* 0x4A4600 */
+ } > narc.FILE_4A4600
+ .FILE_57FC00 : AT (0x57FC00) {
+ FILE_57FC00_weather_sys.narc.o (.text) /* 0x57FC00 */
+ } > narc.FILE_57FC00
+ .FILE_58F600 : AT (0x58F600) {
+ FILE_58F600_wifi.ncgr.o (.text) /* 0x58F600 */
+ } > narc.FILE_58F600
+ .FILE_58FA00 : AT (0x58FA00) {
+ FILE_58FA00_wifinote.narc.o (.text) /* 0x58FA00 */
+ } > narc.FILE_58FA00
+ .FILE_593400 : AT (0x593400) {
+ FILE_593400_wifip2pmatch.narc.o (.text) /* 0x593400 */
+ } > narc.FILE_593400
+ .FILE_597400 : AT (0x597400) {
+ FILE_597400_wm.ncgr.o (.text) /* 0x597400 */
+ } > narc.FILE_597400
+ .FILE_597800 : AT (0x597800) {
+ FILE_597800_wm.nclr.o (.text) /* 0x597800 */
+ } > narc.FILE_597800
+ .FILE_597C00 : AT (0x597C00) {
+ FILE_597C00_sound_data.sdat.o (.text) /* 0x597C00 */
+ } > narc.FILE_597C00
+ .FILE_CBB200 : AT (0xCBB200) {
+ FILE_CBB200_msg.narc.o (.text) /* 0xCBB200 */
+ } > narc.FILE_CBB200
+ .FILE_F4D400 : AT (0xF4D400) {
+ FILE_F4D400_scr_msg.narc.o (.text) /* 0xF4D400 */
+ } > narc.FILE_F4D400
+ .FILE_F4F000 : AT (0xF4F000) {
+ FILE_F4F000_height.narc.o (.text) /* 0xF4F000 */
+ } > narc.FILE_F4F000
+ .FILE_F54C00 : AT (0xF54C00) {
+ FILE_F54C00_height_o.narc.o (.text) /* 0xF54C00 */
+ } > narc.FILE_F54C00
+ .FILE_F55400 : AT (0xF55400) {
+ FILE_F55400_otherpoke.narc.o (.text) /* 0xF55400 */
+ } > narc.FILE_F55400
+ .FILE_102EC00 : AT (0x102EC00) {
+ FILE_102EC00_poke_shadow.narc.o (.text) /* 0x102EC00 */
+ } > narc.FILE_102EC00
+ .FILE_102F000 : AT (0x102F000) {
+ FILE_102F000_poke_shadow_ofx.narc.o (.text) /* 0x102F000 */
+ } > narc.FILE_102F000
+ .FILE_102F400 : AT (0x102F400) {
+ FILE_102F400_poke_yofs.narc.o (.text) /* 0x102F400 */
+ } > narc.FILE_102F400
+ .FILE_102F800 : AT (0x102F800) {
+ FILE_102F800_pokegra.narc.o (.text) /* 0x102F800 */
+ } > narc.FILE_102F800
+ .FILE_1B6B400 : AT (0x1B6B400) {
+ FILE_1B6B400_trbgra.narc.o (.text) /* 0x1B6B400 */
+ } > narc.FILE_1B6B400
+ .FILE_1B78200 : AT (0x1B78200) {
+ FILE_1B78200_trfgra.narc.o (.text) /* 0x1B78200 */
+ } > narc.FILE_1B78200
+ .FILE_1C14A00 : AT (0x1C14A00) {
+ FILE_1C14A00_personal.narc.o (.text) /* 0x1C14A00 */
+ } > narc.FILE_1C14A00
+ .FILE_1C1B000 : AT (0x1C1B000) {
+ FILE_1C1B000_evo.narc.o (.text) /* 0x1C1B000 */
+ } > narc.FILE_1C1B000
+ .FILE_1C21600 : AT (0x1C21600) {
+ FILE_1C21600_growtbl.narc.o (.text) /* 0x1C21600 */
+ } > narc.FILE_1C21600
+ .FILE_1C22400 : AT (0x1C22400) {
+ FILE_1C22400_pms.narc.o (.text) /* 0x1C22400 */
+ } > narc.FILE_1C22400
+ .FILE_1C22800 : AT (0x1C22800) {
+ FILE_1C22800_wotbl.narc.o (.text) /* 0x1C22800 */
+ } > narc.FILE_1C22800
+ .FILE_1C27200 : AT (0x1C27200) {
+ FILE_1C27200_trdata.narc.o (.text) /* 0x1C27200 */
+ } > narc.FILE_1C27200
+ .FILE_1C2D000 : AT (0x1C2D000) {
+ FILE_1C2D000_trpoke.narc.o (.text) /* 0x1C2D000 */
+ } > narc.FILE_1C2D000
+ .FILE_1C32600 : AT (0x1C32600) {
+ FILE_1C32600_trtbl.narc.o (.text) /* 0x1C32600 */
+ } > narc.FILE_1C32600
+ .FILE_1C34C00 : AT (0x1C34C00) {
+ FILE_1C34C00_trtblofs.narc.o (.text) /* 0x1C34C00 */
+ } > narc.FILE_1C34C00
+ .FILE_1C35400 : AT (0x1C35400) {
+ FILE_1C35400_b_bag_gra.narc.o (.text) /* 0x1C35400 */
+ } > narc.FILE_1C35400
+ .FILE_1C3A400 : AT (0x1C3A400) {
+ FILE_1C3A400_b_plist_gra.narc.o (.text) /* 0x1C3A400 */
+ } > narc.FILE_1C3A400
+ .FILE_1C4C800 : AT (0x1C4C800) {
+ FILE_1C4C800_batt_bg.narc.o (.text) /* 0x1C4C800 */
+ } > narc.FILE_1C4C800
+ .FILE_1CE8E00 : AT (0x1CE8E00) {
+ FILE_1CE8E00_batt_obj.narc.o (.text) /* 0x1CE8E00 */
+ } > narc.FILE_1CE8E00
+ .FILE_1D09200 : AT (0x1D09200) {
+ FILE_1D09200_vs_demo_gra.narc.o (.text) /* 0x1D09200 */
+ } > narc.FILE_1D09200
+ .FILE_1D0E400 : AT (0x1D0E400) {
+ FILE_1D0E400_we.arc.o (.text) /* 0x1D0E400 */
+ } > narc.FILE_1D0E400
+ .FILE_1D4C600 : AT (0x1D4C600) {
+ FILE_1D4C600_we_sub.narc.o (.text) /* 0x1D4C600 */
+ } > narc.FILE_1D4C600
+ .FILE_1D4F800 : AT (0x1D4F800) {
+ FILE_1D4F800_be_seq.narc.o (.text) /* 0x1D4F800 */
+ } > narc.FILE_1D4F800
+ .FILE_1D53A00 : AT (0x1D53A00) {
+ FILE_1D53A00_sub_seq.narc.o (.text) /* 0x1D53A00 */
+ } > narc.FILE_1D53A00
+ .FILE_1D60200 : AT (0x1D60200) {
+ FILE_1D60200_waza_seq.narc.o (.text) /* 0x1D60200 */
+ } > narc.FILE_1D60200
+ .FILE_1D61C00 : AT (0x1D61C00) {
+ FILE_1D61C00_wecell.narc.o (.text) /* 0x1D61C00 */
+ } > narc.FILE_1D61C00
+ .FILE_1D63200 : AT (0x1D63200) {
+ FILE_1D63200_wecellanm.narc.o (.text) /* 0x1D63200 */
+ } > narc.FILE_1D63200
+ .FILE_1D64600 : AT (0x1D64600) {
+ FILE_1D64600_wechar.narc.o (.text) /* 0x1D64600 */
+ } > narc.FILE_1D64600
+ .FILE_1D6C800 : AT (0x1D6C800) {
+ FILE_1D6C800_wepltt.narc.o (.text) /* 0x1D6C800 */
+ } > narc.FILE_1D6C800
+ .FILE_1D6DA00 : AT (0x1D6DA00) {
+ FILE_1D6DA00_waza_tbl.narc.o (.text) /* 0x1D6DA00 */
+ } > narc.FILE_1D6DA00
+ .FILE_1D70800 : AT (0x1D70800) {
+ FILE_1D70800_scr_seq_release.narc.o (.text) /* 0x1D70800 */
+ } > narc.FILE_1D70800
+ .FILE_1DA6200 : AT (0x1DA6200) {
+ FILE_1DA6200_bag_gra.narc.o (.text) /* 0x1DA6200 */
+ } > narc.FILE_1DA6200
+ .FILE_1DC0000 : AT (0x1DC0000) {
+ FILE_1DC0000_box.narc.o (.text) /* 0x1DC0000 */
+ } > narc.FILE_1DC0000
+ .FILE_1DDBC00 : AT (0x1DDBC00) {
+ FILE_1DDBC00_btower.narc.o (.text) /* 0x1DDBC00 */
+ } > narc.FILE_1DDBC00
+ .FILE_1DDFE00 : AT (0x1DDFE00) {
+ FILE_1DDFE00_config_gra.narc.o (.text) /* 0x1DDFE00 */
+ } > narc.FILE_1DDFE00
+ .FILE_1DE0200 : AT (0x1DE0200) {
+ FILE_1DE0200_demo_trade.narc.o (.text) /* 0x1DE0200 */
+ } > narc.FILE_1DE0200
+ .FILE_1DE7E00 : AT (0x1DE7E00) {
+ FILE_1DE7E00_dendou_demo.narc.o (.text) /* 0x1DE7E00 */
+ } > narc.FILE_1DE7E00
+ .FILE_1DE8600 : AT (0x1DE8600) {
+ FILE_1DE8600_dendou_pc.narc.o (.text) /* 0x1DE8600 */
+ } > narc.FILE_1DE8600
+ .FILE_1DE8A00 : AT (0x1DE8A00) {
+ FILE_1DE8A00_ending.narc.o (.text) /* 0x1DE8A00 */
+ } > narc.FILE_1DE8A00
+ .FILE_1E3A200 : AT (0x1E3A200) {
+ FILE_1E3A200_ev_pokeselect.narc.o (.text) /* 0x1E3A200 */
+ } > narc.FILE_1E3A200
+ .FILE_1E5C800 : AT (0x1E5C800) {
+ FILE_1E5C800_f_note_gra.narc.o (.text) /* 0x1E5C800 */
+ } > narc.FILE_1E5C800
+ .FILE_1E5F200 : AT (0x1E5F200) {
+ FILE_1E5F200_field_board.narc.o (.text) /* 0x1E5F200 */
+ } > narc.FILE_1E5F200
+ .FILE_1E69C00 : AT (0x1E69C00) {
+ FILE_1E69C00_field_encounteffect.narc.o (.text) /* 0x1E69C00 */
+ } > narc.FILE_1E69C00
+ .FILE_1E73400 : AT (0x1E73400) {
+ FILE_1E73400_fld_comact.narc.o (.text) /* 0x1E73400 */
+ } > narc.FILE_1E73400
+ .FILE_1E73800 : AT (0x1E73800) {
+ FILE_1E73800_font.narc.o (.text) /* 0x1E73800 */
+ } > narc.FILE_1E73800
+ .FILE_1E94800 : AT (0x1E94800) {
+ FILE_1E94800_fontoam.narc.o (.text) /* 0x1E94800 */
+ } > narc.FILE_1E94800
+ .FILE_1E94E00 : AT (0x1E94E00) {
+ FILE_1E94E00_hiden_effect.narc.o (.text) /* 0x1E94E00 */
+ } > narc.FILE_1E94E00
+ .FILE_1E9CE00 : AT (0x1E9CE00) {
+ FILE_1E9CE00_imageclip.narc.o (.text) /* 0x1E9CE00 */
+ } > narc.FILE_1E9CE00
+ .FILE_1EDB600 : AT (0x1EDB600) {
+ FILE_1EDB600_mail_gra.narc.o (.text) /* 0x1EDB600 */
+ } > narc.FILE_1EDB600
+ .FILE_1EF5800 : AT (0x1EF5800) {
+ FILE_1EF5800_menu_gra.narc.o (.text) /* 0x1EF5800 */
+ } > narc.FILE_1EF5800
+ .FILE_1EFA400 : AT (0x1EFA400) {
+ FILE_1EFA400_mysign.narc.o (.text) /* 0x1EFA400 */
+ } > narc.FILE_1EFA400
+ .FILE_1EFB600 : AT (0x1EFB600) {
+ FILE_1EFB600_mystery.narc.o (.text) /* 0x1EFB600 */
+ } > narc.FILE_1EFB600
+ .FILE_1F03000 : AT (0x1F03000) {
+ FILE_1F03000_ntag_gra.narc.o (.text) /* 0x1F03000 */
+ } > narc.FILE_1F03000
+ .FILE_1F30000 : AT (0x1F30000) {
+ FILE_1F30000_nutmixer.narc.o (.text) /* 0x1F30000 */
+ } > narc.FILE_1F30000
+ .FILE_1F5C400 : AT (0x1F5C400) {
+ FILE_1F5C400_oekaki.narc.o (.text) /* 0x1F5C400 */
+ } > narc.FILE_1F5C400
+ .FILE_1F5DA00 : AT (0x1F5DA00) {
+ FILE_1F5DA00_opening.narc.o (.text) /* 0x1F5DA00 */
+ } > narc.FILE_1F5DA00
+ .FILE_1F64600 : AT (0x1F64600) {
+ FILE_1F64600_plist_gra.narc.o (.text) /* 0x1F64600 */
+ } > narc.FILE_1F64600
+ .FILE_1F6E400 : AT (0x1F6E400) {
+ FILE_1F6E400_pmsi.narc.o (.text) /* 0x1F6E400 */
+ } > narc.FILE_1F6E400
+ .FILE_1F71600 : AT (0x1F71600) {
+ FILE_1F71600_poketch.narc.o (.text) /* 0x1F71600 */
+ } > narc.FILE_1F71600
+ .FILE_1F7FC00 : AT (0x1F7FC00) {
+ FILE_1F7FC00_poru_gra.narc.o (.text) /* 0x1F7FC00 */
+ } > narc.FILE_1F7FC00
+ .FILE_1F86600 : AT (0x1F86600) {
+ FILE_1F86600_poruact.narc.o (.text) /* 0x1F86600 */
+ } > narc.FILE_1F86600
+ .FILE_1F87C00 : AT (0x1F87C00) {
+ FILE_1F87C00_porudemo.narc.o (.text) /* 0x1F87C00 */
+ } > narc.FILE_1F87C00
+ .FILE_1F8A000 : AT (0x1F8A000) {
+ FILE_1F8A000_pst_gra.narc.o (.text) /* 0x1F8A000 */
+ } > narc.FILE_1F8A000
+ .FILE_1FA9200 : AT (0x1FA9200) {
+ FILE_1FA9200_ranking.narc.o (.text) /* 0x1FA9200 */
+ } > narc.FILE_1FA9200
+ .FILE_1FAA800 : AT (0x1FAA800) {
+ FILE_1FAA800_record.narc.o (.text) /* 0x1FAA800 */
+ } > narc.FILE_1FAA800
+ .FILE_1FB0200 : AT (0x1FB0200) {
+ FILE_1FB0200_shop_gra.narc.o (.text) /* 0x1FB0200 */
+ } > narc.FILE_1FB0200
+ .FILE_1FB2A00 : AT (0x1FB2A00) {
+ FILE_1FB2A00_tmap_gra.narc.o (.text) /* 0x1FB2A00 */
+ } > narc.FILE_1FB2A00
+ .FILE_1FC7A00 : AT (0x1FC7A00) {
+ FILE_1FC7A00_touch_subwindow.narc.o (.text) /* 0x1FC7A00 */
+ } > narc.FILE_1FC7A00
+ .FILE_1FC8400 : AT (0x1FC8400) {
+ FILE_1FC8400_trainer_case.narc.o (.text) /* 0x1FC8400 */
+ } > narc.FILE_1FC8400
+ .FILE_2000000 : AT (0x2000000) {
+ FILE_2000000_unionroom.narc.o (.text) /* 0x2000000 */
+ } > narc.FILE_2000000
+ .FILE_2001400 : AT (0x2001400) {
+ FILE_2001400_waza_oshie_gra.narc.o (.text) /* 0x2001400 */
+ } > narc.FILE_2001400
+ .FILE_2004400 : AT (0x2004400) {
+ FILE_2004400_winframe.narc.o (.text) /* 0x2004400 */
+ } > narc.FILE_2004400
+ .FILE_200CE00 : AT (0x200CE00) {
+ FILE_200CE00_worldtrade.narc.o (.text) /* 0x200CE00 */
+ } > narc.FILE_200CE00
+ .FILE_2018600 : AT (0x2018600) {
+ FILE_2018600_item_data.narc.o (.text) /* 0x2018600 */
+ } > narc.FILE_2018600
+ .FILE_201D400 : AT (0x201D400) {
+ FILE_201D400_item_icon.narc.o (.text) /* 0x201D400 */
+ } > narc.FILE_201D400
+ .FILE_207DE00 : AT (0x207DE00) {
+ FILE_207DE00_nuts_data.narc.o (.text) /* 0x207DE00 */
+ } > narc.FILE_207DE00
+ .FILE_207E400 : AT (0x207E400) {
+ FILE_207E400_poke_icon.narc.o (.text) /* 0x207E400 */
+ } > narc.FILE_207E400
+ .FILE_210B600 : AT (0x210B600) {
+ FILE_210B600_pokefoot.narc.o (.text) /* 0x210B600 */
+ } > narc.FILE_210B600
+ .FILE_2119C00 : AT (0x2119C00) {
+ FILE_2119C00_mmodel.narc.o (.text) /* 0x2119C00 */
+ } > narc.FILE_2119C00
+ .FILE_2242200 : AT (0x2242200) {
+ FILE_2242200_fldeff.narc.o (.text) /* 0x2242200 */
+ } > narc.FILE_2242200
+ .FILE_225E200 : AT (0x225E200) {
+ FILE_225E200_ball_particle.narc.o (.text) /* 0x225E200 */
+ } > narc.FILE_225E200
+ .FILE_22ACC00 : AT (0x22ACC00) {
+ FILE_22ACC00_waza_particle.narc.o (.text) /* 0x22ACC00 */
+ } > narc.FILE_22ACC00
+ .FILE_24F2600 : AT (0x24F2600) {
+ FILE_24F2600_debug_particle.narc.o (.text) /* 0x24F2600 */
+ } > narc.FILE_24F2600
+ .FILE_24F3200 : AT (0x24F3200) {
+ FILE_24F3200_zone_event_release.narc.o (.text) /* 0x24F3200 */
+ } > narc.FILE_24F3200
+ .FILE_2515600 : AT (0x2515600) {
+ FILE_2515600_d_enc_data.narc.o (.text) /* 0x2515600 */
+ } > narc.FILE_2515600
+ .FILE_2528C00 : AT (0x2528C00) {
+ FILE_2528C00_p_enc_data.narc.o (.text) /* 0x2528C00 */
+ } > narc.FILE_2528C00
+ .FILE_253C200 : AT (0x253C200) {
+ FILE_253C200_build_model.narc.o (.text) /* 0x253C200 */
+ } > narc.FILE_253C200
+ .FILE_2710800 : AT (0x2710800) {
+ FILE_2710800_build_model_matshp.dat.o (.text) /* 0x2710800 */
+ } > narc.FILE_2710800
+ .FILE_2712000 : AT (0x2712000) {
+ FILE_2712000_map_matrix.narc.o (.text) /* 0x2712000 */
+ } > narc.FILE_2712000
+ .FILE_2715000 : AT (0x2715000) {
+ FILE_2715000_area_data.narc.o (.text) /* 0x2715000 */
+ } > narc.FILE_2715000
+ .FILE_2715400 : AT (0x2715400) {
+ FILE_2715400_area_build.narc.o (.text) /* 0x2715400 */
+ } > narc.FILE_2715400
+ .FILE_2716800 : AT (0x2716800) {
+ FILE_2716800_areabm_texset.narc.o (.text) /* 0x2716800 */
+ } > narc.FILE_2716800
+ .FILE_283BE00 : AT (0x283BE00) {
+ FILE_283BE00_map_tex_set.narc.o (.text) /* 0x283BE00 */
+ } > narc.FILE_283BE00
+ .FILE_296EC00 : AT (0x296EC00) {
+ FILE_296EC00_move_model_list.narc.o (.text) /* 0x296EC00 */
+ } > narc.FILE_296EC00
+ .FILE_296F200 : AT (0x296F200) {
+ FILE_296F200_land_data_release.narc.o (.text) /* 0x296F200 */
+ } > narc.FILE_296F200
+ .FILE_3787200 : AT (0x3787200) {
+ FILE_3787200_contest_bg.narc.o (.text) /* 0x3787200 */
+ } > narc.FILE_3787200
+ .FILE_379AE00 : AT (0x379AE00) {
+ FILE_379AE00_contest_obj.narc.o (.text) /* 0x379AE00 */
+ } > narc.FILE_379AE00
+ .FILE_37A0C00 : AT (0x37A0C00) {
+ FILE_37A0C00_contest_data.narc.o (.text) /* 0x37A0C00 */
+ } > narc.FILE_37A0C00
+ .FILE_37A4400 : AT (0x37A4400) {
+ FILE_37A4400_particledata.narc.o (.text) /* 0x37A4400 */
+ } > narc.FILE_37A4400
+ .FILE_37ACA00 : AT (0x37ACA00) {
+ FILE_37ACA00_zukan_data.narc.o (.text) /* 0x37ACA00 */
+ } > narc.FILE_37ACA00
+ .FILE_37B2400 : AT (0x37B2400) {
+ FILE_37B2400_wifi_earth.narc.o (.text) /* 0x37B2400 */
+ } > narc.FILE_37B2400
+ .FILE_37D7800 : AT (0x37D7800) {
+ FILE_37D7800_wifi_earth_place.narc.o (.text) /* 0x37D7800 */
+ } > narc.FILE_37D7800
+ .FILE_37D8600 : AT (0x37D8600) {
+ FILE_37D8600_titledemo.narc.o (.text) /* 0x37D8600 */
+ } > narc.FILE_37D8600
+ .FILE_3810200 : AT (0x3810200) {
+ FILE_3810200_cb_data.narc.o (.text) /* 0x3810200 */
+ } > narc.FILE_3810200
+ .FILE_381F000 : AT (0x381F000) {
+ FILE_381F000_egg_data.narc.o (.text) /* 0x381F000 */
+ } > narc.FILE_381F000
+ .FILE_3821C00 : AT (0x3821C00) {
+ FILE_3821C00_egg_demo_particle.narc.o (.text) /* 0x3821C00 */
+ } > narc.FILE_3821C00
+ .FILE_3824200 : AT (0x3824200) {
+ FILE_3824200_move_model_list.narc.o (.text) /* 0x3824200 */
+ } > narc.FILE_3824200
+ .FILE_3824600 : AT (0x3824600) {
+ FILE_3824600_poke_anm.narc.o (.text) /* 0x3824600 */
+ } > narc.FILE_3824600
+ .FILE_382AA00 : AT (0x382AA00) {
+ FILE_382AA00_tr_ai_seq.narc.o (.text) /* 0x382AA00 */
+ } > narc.FILE_382AA00
+ .FILE_3835000 : AT (0x3835000) {
+ FILE_3835000_bm_anime.narc.o (.text) /* 0x3835000 */
+ } > narc.FILE_3835000
+ .FILE_383E200 : AT (0x383E200) {
+ FILE_383E200_bm_anime_list.narc.o (.text) /* 0x383E200 */
+ } > narc.FILE_383E200
+ .FILE_3841E00 : AT (0x3841E00) {
+ FILE_3841E00_encdata_ex.narc.o (.text) /* 0x3841E00 */
+ } > narc.FILE_3841E00
+ .FILE_3842600 : AT (0x3842600) {
+ FILE_3842600_ppark.narc.o (.text) /* 0x3842600 */
+ } > narc.FILE_3842600
+ .FILE_3843200 : AT (0x3843200) {
+ FILE_3843200_ship_demo.narc.o (.text) /* 0x3843200 */
+ } > narc.FILE_3843200
+ .FILE_385A600 : AT (0x385A600) {
+ FILE_385A600_tv.narc.o (.text) /* 0x385A600 */
+ } > narc.FILE_385A600
+ .FILE_385AA00 : AT (0x385AA00) {
+ FILE_385AA00_mapname.bin.o (.text) /* 0x385AA00 */
+ } > narc.FILE_385AA00
+ .FILE_385CE00 : AT (0x385CE00) {
+ FILE_385CE00_pokezukan.narc.o (.text) /* 0x385CE00 */
+ } > narc.FILE_385CE00
+ .FILE_385D400 : AT (0x385D400) {
+ FILE_385D400_shinzukan.narc.o (.text) /* 0x385D400 */
+ } > narc.FILE_385D400
+ .FILE_385D600 : AT (0x385D600) {
+ FILE_385D600_pokeanm.narc.o (.text) /* 0x385D600 */
+ } > narc.FILE_385D600
+ .FILE_3860E00 : AT (0x3860E00) {
+ FILE_3860E00_fld_trade.narc.o (.text) /* 0x3860E00 */
+ } > narc.FILE_3860E00
+ .FILE_3861000 : AT (0x3861000) {
+ FILE_3861000_shinka_demo_particle.narc.o (.text) /* 0x3861000 */
+ } > narc.FILE_3861000
+ .FILE_3863600 : AT (0x3863600) {
+ FILE_3863600_intro.narc.o (.text) /* 0x3863600 */
+ } > narc.FILE_3863600
+ .FILE_387EA00 : AT (0x387EA00) {
+ FILE_387EA00_intro_tv.narc.o (.text) /* 0x387EA00 */
+ } > narc.FILE_387EA00
+ .FILE_388CA00 : AT (0x388CA00) {
+ FILE_388CA00_op_demo.narc.o (.text) /* 0x388CA00 */
+ } > narc.FILE_388CA00
+ .FILE_3923C00 : AT (0x3923C00) {
+ FILE_3923C00_syoujyou.narc.o (.text) /* 0x3923C00 */
+ } > narc.FILE_3923C00
+ .FILE_392A200 : AT (0x392A200) {
+ FILE_392A200_btdpm.narc.o (.text) /* 0x392A200 */
+ } > narc.FILE_392A200
+ .FILE_392FC00 : AT (0x392FC00) {
+ FILE_392FC00_btdtr.narc.o (.text) /* 0x392FC00 */
+ } > narc.FILE_392FC00
+ .FILE_3938000 : AT (0x3938000) {
+ FILE_3938000_zukan_enc_diamond.narc.o (.text) /* 0x3938000 */
+ } > narc.FILE_3938000
+ .FILE_3949800 : AT (0x3949800) {
+ FILE_3949800_zukan_enc_pearl.narc.o (.text) /* 0x3949800 */
+ } > narc.FILE_3949800
+ .FILE_395B000 : AT (0x395B000) {
+ FILE_395B000_trial.narc.o (.text) /* 0x395B000 */
+ } > narc.FILE_395B000
+ .FILE_3968C00 : AT (0x3968C00) {
+ FILE_3968C00_zukan.narc.o (.text) /* 0x3968C00 */
+ } > narc.FILE_3968C00
+ .FILE_397AA00 : AT (0x397AA00) {
+ FILE_397AA00_utility.bin.o (.text) /* 0x397AA00 */
+ } > narc.FILE_397AA00
+}
diff --git a/src/FUN_02000DF4.c b/src/FUN_02000DF4.c
new file mode 100644
index 00000000..0099480c
--- /dev/null
+++ b/src/FUN_02000DF4.c
@@ -0,0 +1,12 @@
+#include "global.h"
+#include "main.h"
+
+extern struct Unk2106FA0 gBacklightTop;
+
+void FUN_02000DF4(void)
+{
+ gBacklightTop.unk8 = -1;
+ gBacklightTop.unkC = 0;
+ gBacklightTop.unk10 = -1;
+ gBacklightTop.unk14 = 0;
+}
diff --git a/src/main.c b/src/main.c
new file mode 100644
index 00000000..bfd6c82e
--- /dev/null
+++ b/src/main.c
@@ -0,0 +1,110 @@
+#include "global.h"
+#include "main.h"
+
+extern struct Unk2106FA0 gBacklightTop;
+extern struct Unk2106FA0 gBacklightTop_2; // same as the first one, it's referenced twice in the constant pool...
+extern struct Unk2106FA0 gUnknown2106FB8;
+extern struct Unk21C48B8 gUnknown21C48B8;
+
+extern s32 gUnk027FFC20;
+extern struct {
+ s32 unk0;
+ s32 unk4;
+ u8 unk8;
+} gUnk021C4918;
+
+extern void PM_GetBackLight();
+extern void OS_WaitIrq();
+extern void FUN_02016438(s32);
+
+extern const s32 CONST_3F; // 0x0000003F
+extern const s32 CONST_34; // 0x00000034
+
+extern struct Unk21DBE18 gUnk021DBE18;
+extern struct Unk21DBE18 gUnk021D76C8;
+
+
+void NitroMain(void)
+{
+ InitSystemForTheGame();
+ InitGraphicMemory();
+ FUN_020163BC();
+ FUN_02016438(0);
+
+ PM_GetBackLight(&gBacklightTop_2, 0);
+
+ FUN_02022294();
+ FUN_0201259C();
+ FUN_02000DF4();
+ FUN_02002C14();
+ FUN_02002C50(0, 3);
+ FUN_02002C50(1, 3);
+ FUN_02002C50(3, 3);
+ gBacklightTop.unk18 = -1;
+ gBacklightTop.unk20 = FUN_0202254C();
+ FUN_02003B98(FUN_02029EF8(gBacklightTop.unk20), LoadPlayerDataAddress(gBacklightTop.unk20));
+ FUN_02020AFC();
+ if (FUN_020337E8(3) == 3)
+ FUN_02034188(3, 0);
+ if (FUN_020227FC(gBacklightTop.unk20) == 0)
+ {
+ FUN_02089D90(0);
+ }
+ else
+ {
+ switch (gUnk027FFC20)
+ {
+ case 0:
+ gBacklightTop.unk1C = 0;
+ FUN_02000E7C(&CONST_3F, &gUnk021DBE18);
+ break;
+ case 1:
+ gBacklightTop.unk1C = 1;
+ FUN_02000E7C(&CONST_34, &gUnk021D76C8);
+ break;
+ default:
+ ErrorHandling();
+ break;
+ }
+ }
+ gUnknown21C48B8.unk6C = 1;
+ gUnknown21C48B8.unk30 = 0;
+ FUN_02000FA4();
+ FUN_0200A2AC();
+ FUN_02015E30();
+ gBacklightTop.unk4 = 0;
+ for (;;)
+ {
+ FUN_02000EE8();
+ FUN_02000FE8();
+ FUN_02016464();
+ if ((gUnknown21C48B8.unk38 & 0x30C) == 0x30C && !gUnk021C4918.unk8) // soft reset?
+ {
+ FUN_02000F18(0); // soft reset?
+ }
+ if (FUN_0202FB80())
+ {
+ FUN_02000E0C();
+ FUN_0201B5CC(gUnknown21C48B8.unk18);
+ FUN_0201B5CC(gUnknown21C48B8.unk24);
+ if (!gUnknown21C48B8.unk30)
+ {
+ OS_WaitIrq(1, 1);
+ gUnknown21C48B8.unk2C++;
+ }
+ }
+ FUN_020125D4();
+ FUN_02015E60();
+ FUN_020222C4();
+ FUN_0201B5CC(gUnknown21C48B8.unk24);
+ OS_WaitIrq(1, 1);
+ gUnknown21C48B8.unk2C++;
+ gUnknown21C48B8.unk30 = 0;
+ FUN_0200A318();
+ FUN_0200E2D8();
+ if (gUnknown21C48B8.unk0)
+ gUnknown21C48B8.unk0(gUnknown21C48B8.unk4);
+ FUN_02003C10();
+ FUN_0201B5CC(gUnknown21C48B8.unk20);
+ }
+} \ No newline at end of file
diff --git a/src/script.c b/src/script.c
new file mode 100644
index 00000000..7a7ae894
--- /dev/null
+++ b/src/script.c
@@ -0,0 +1,163 @@
+#include "global.h"
+#include "script.h"
+
+u16 ScriptReadHalfword(struct ScriptContext *ctx);
+
+void InitScriptContext(struct ScriptContext *ctx, void *cmdTable, void *cmdTableEnd)
+{
+ u32 i;
+
+ ctx->mode = 0;
+ ctx->scriptPtr = 0;
+ ctx->stackDepth = 0;
+ ctx->nativePtr = 0;
+ ctx->cmdTable = cmdTable;
+ ctx->cmdTableEnd = cmdTableEnd;
+
+ for (i = 0; i < 4; i++)
+ ctx->data[i] = 0;
+
+ for (i = 0; i < 20; i++)
+ ctx->stack[i] = 0;
+
+ ctx->unk74 = 0;
+}
+
+u8 SetupBytecodeScript(struct ScriptContext *ctx, const u8 *ptr)
+{
+ ctx->scriptPtr = ptr;
+ ctx->mode = 1;
+ return 1;
+}
+
+void SetupNativeScript(struct ScriptContext *ctx, u8 (*ptr)(struct ScriptContext *))
+{
+ ctx->mode = 2;
+ ctx->nativePtr = ptr;
+}
+
+void StopScript(struct ScriptContext *ctx)
+{
+ ctx->mode = 0;
+ ctx->scriptPtr = 0;
+}
+
+void FUN_02038B6C(struct ScriptContext *ctx, int r1)
+{
+ ctx->unk74 = r1;
+}
+
+extern void ErrorHandling(void);
+
+u8 RunScriptCommand(struct ScriptContext *ctx)
+{
+ if (ctx->mode == 0)
+ return FALSE;
+
+ switch (ctx->mode)
+ {
+ case 0:
+ return FALSE;
+ case 2:
+ if (ctx->nativePtr)
+ {
+ if (ctx->nativePtr(ctx) == TRUE)
+ ctx->mode = 1;
+ return TRUE;
+ }
+ ctx->mode = 1;
+ case 1:
+ while (1)
+ {
+ u16 cmdCode;
+ ScrCmdFunc *func;
+
+ if (!ctx->scriptPtr)
+ {
+ ctx->mode = 0;
+ return FALSE;
+ }
+
+ cmdCode = ScriptReadHalfword(ctx);
+ u32 cmdTableEnd = (u32)ctx->cmdTableEnd;
+ if (cmdCode >= cmdTableEnd)
+ {
+ ErrorHandling();
+ ctx->mode = 0;
+ return FALSE;
+ }
+
+ func = &ctx->cmdTable[cmdCode];
+
+ if ((*func)(ctx) == 1)
+ break;
+ }
+ }
+
+ return TRUE;
+}
+
+u8 ScriptPush(struct ScriptContext *ctx, const u8 *ptr)
+{
+ if (ctx->stackDepth + 1 >= 20)
+ {
+ return 1;
+ }
+ else
+ {
+ ctx->stack[ctx->stackDepth] = ptr;
+ ctx->stackDepth++;
+ return 0;
+ }
+}
+
+const u8 *ScriptPop(struct ScriptContext *ctx)
+{
+ if (ctx->stackDepth == 0)
+ return NULL;
+
+ ctx->stackDepth--;
+ return ctx->stack[ctx->stackDepth];
+}
+
+void ScriptJump(struct ScriptContext *ctx, const u8 *ptr)
+{
+ ctx->scriptPtr = ptr;
+}
+
+u8 ScriptCall(struct ScriptContext *ctx, const u8 *ptr)
+{
+ u8 ret = ScriptPush(ctx, ctx->scriptPtr);
+ ctx->scriptPtr = ptr;
+ return ret;
+}
+
+void ScriptReturn(struct ScriptContext *ctx)
+{
+ ctx->scriptPtr = ScriptPop(ctx);
+}
+
+u16 ScriptReadHalfword(struct ScriptContext *ctx)
+{
+ u16 value = *(ctx->scriptPtr++);
+ value += *(ctx->scriptPtr++) << 8;
+ return value;
+}
+
+u32 ScriptReadWord(struct ScriptContext *ctx)
+{
+ u32 value0 = *(ctx->scriptPtr++);
+ u32 value1 = *(ctx->scriptPtr++);
+ u32 value2 = *(ctx->scriptPtr++);
+ u32 value3 = *(ctx->scriptPtr++);
+ u32 retVal = 0;
+
+ retVal += value3;
+ retVal <<= 8;
+ retVal += value2;
+ retVal <<= 8;
+ retVal += value1;
+ retVal <<= 8;
+ retVal += value0;
+ return retVal;
+}
diff --git a/src/string_util.c b/src/string_util.c
new file mode 100644
index 00000000..8f9c96ff
--- /dev/null
+++ b/src/string_util.c
@@ -0,0 +1,153 @@
+#include "global.h"
+
+u16 gDigitTable[] = {
+ 0xA2,
+ 0xA3,
+ 0xA4,
+ 0xA5,
+ 0xA6,
+ 0xA7,
+ 0xA8,
+ 0xA9,
+ 0xAA,
+ 0xAB,
+ 0xAC,
+ 0xAD,
+ 0xAE,
+ 0xAF,
+ 0xB0,
+ 0xB1
+};
+
+s32 gPowersOfTen[] = {
+ 1,
+ 10,
+ 100,
+ 1000,
+ 10000,
+ 100000,
+ 1000000,
+ 10000000,
+ 100000000,
+ 1000000000,
+};
+
+static const u16 EOS = 0xFFFF;
+
+void StringCopy(u16 *dest, const u16 *src)
+{
+ u16 c = *src;
+ while (c != EOS) {
+ src++;
+ *dest = c;
+ c = *src;
+ dest++;
+ }
+ *dest = EOS;
+}
+
+u16 *StringCopyN(u16 *dest, const u16 *src, u32 num)
+{
+ u32 copied = 0;
+ if (num > copied) {
+ u16 *p = dest;
+ do {
+ u16 c = *src;
+ copied++;
+ src++;
+ *p = c;
+ p++;
+ } while (num > copied);
+ }
+ return dest + num;
+}
+
+u32 StringLength(const u16 *s)
+{
+ u16 c = *s;
+ u32 len = 0;
+ while (c != EOS) {
+ s++;
+ c = *s;
+ len++;
+ }
+ return len;
+}
+
+BOOL StringNotEqual(const u16 *s1, const u16 *s2)
+{
+ for (; *s1 == *s2; s1++, s2++) {
+ if (*s1 == EOS)
+ return FALSE;
+ }
+ return TRUE;
+}
+
+BOOL StringNotEqualN(const u16 *s1, const u16 *s2, u32 num)
+{
+ u16 c1, c2;
+ c2 = *s2;
+ c1 = *s1;
+ while (c1 == c2) {
+ if (num == 0) {
+ return FALSE;
+ }
+ if (*s1 == EOS && *s2 == EOS) {
+ return FALSE;
+ }
+ s1++;
+ s2++;
+ c2 = *s2;
+ c1 = *s1;
+ num--;
+ }
+ return TRUE;
+}
+
+u16 *StringFill(u16 *dest, u16 value, u32 num)
+{
+ u32 copied = 0;
+ if (num > copied) {
+ u16 *p = dest;
+ do {
+ copied++;
+ *p = value;
+ p++;
+ } while (copied < num);
+ }
+ return dest + copied;
+}
+
+u16 *StringFillEOS(u16 *dest, u32 num)
+{
+ return StringFill(dest, EOS, num);
+}
+
+enum PrintingMode {
+ NORMAL,
+ PAD_SPACE,
+ PAD_ZEROES
+};
+
+const u16 NON_DIGIT = 0xE2;
+
+u16 *ConvertUIntToDecimalString(u16 *dest, u32 value, enum PrintingMode mode, u32 n)
+{
+ for (u32 x = gPowersOfTen[n - 1]; x != 0; x = x / 10) {
+ u16 res = value / x;
+ value = value - x * res;
+ if (mode == PAD_ZEROES) {
+ *dest = res >= 10 ? NON_DIGIT : gDigitTable[res];
+ dest++;
+ } else if (res != 0 || x == 1) {
+ mode = PAD_ZEROES;
+ *dest = res >= 10 ? NON_DIGIT : gDigitTable[res];
+ dest++;
+ } else if (mode == PAD_SPACE) {
+ *dest = 1;
+ dest++;
+ }
+ }
+ *dest = EOS;
+ return dest;
+}
diff --git a/src/sub_02000DF4.c b/src/sub_02000DF4.c
deleted file mode 100644
index a0c58183..00000000
--- a/src/sub_02000DF4.c
+++ /dev/null
@@ -1,24 +0,0 @@
-typedef unsigned char u8;
-typedef unsigned short u16;
-typedef unsigned long u32;
-typedef signed char s8;
-typedef signed short s16;
-typedef signed long s32;
-
-struct Unk2106FA0 {
- u8 filler0[0x8];
- s32 unk8;
- s32 unkC;
- s32 unk10;
- s32 unk14;
-};
-
-extern struct Unk2106FA0 gUnknown2106FA0;
-
-void sub_02000DF4(void)
-{
- gUnknown2106FA0.unk8 = -1;
- gUnknown2106FA0.unkC = 0;
- gUnknown2106FA0.unk10 = -1;
- gUnknown2106FA0.unk14 = 0;
-}
diff --git a/tools/jsonproc/.gitignore b/tools/jsonproc/.gitignore
new file mode 100644
index 00000000..a613cf2d
--- /dev/null
+++ b/tools/jsonproc/.gitignore
@@ -0,0 +1 @@
+jsonproc
diff --git a/tools/jsonproc/Makefile b/tools/jsonproc/Makefile
new file mode 100644
index 00000000..721da102
--- /dev/null
+++ b/tools/jsonproc/Makefile
@@ -0,0 +1,20 @@
+CXX := g++
+
+CXXFLAGS := -Wall -std=c++11 -O2
+
+INCLUDES := -I .
+
+SRCS := jsonproc.cpp
+
+HEADERS := jsonproc.h inja.hpp nlohmann/json.hpp
+
+.PHONY: all clean
+
+all: jsonproc
+ @:
+
+jsonproc: $(SRCS) $(HEADERS)
+ $(CXX) $(CXXFLAGS) $(INCLUDES) $(SRCS) -o $@ $(LDFLAGS)
+
+clean:
+ $(RM) jsonproc jsonproc.exe
diff --git a/tools/jsonproc/inja.hpp b/tools/jsonproc/inja.hpp
new file mode 100644
index 00000000..d5bf5bcb
--- /dev/null
+++ b/tools/jsonproc/inja.hpp
@@ -0,0 +1,3529 @@
+// MIT License
+
+// Copyright (c) 2018 lbersch
+
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+
+// The above copyright notice and this permission notice shall be included in all
+// copies or substantial portions of the Software.
+
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+// SOFTWARE.
+
+
+// ---
+
+
+// Copyright (c) 2009-2018 FIRST
+// All rights reserved.
+
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above copyright
+// notice, this list of conditions and the following disclaimer in the
+// documentation and/or other materials provided with the distribution.
+// * Neither the name of the FIRST nor the
+// names of its contributors may be used to endorse or promote products
+// derived from this software without specific prior written permission.
+
+// THIS SOFTWARE IS PROVIDED BY FIRST AND CONTRIBUTORS``AS IS'' AND ANY
+// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+// WARRANTIES OF MERCHANTABILITY NONINFRINGEMENT AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL FIRST OR CONTRIBUTORS BE LIABLE FOR
+// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef PANTOR_INJA_HPP
+#define PANTOR_INJA_HPP
+
+#include <functional>
+#include <iostream>
+#include <map>
+#include <memory>
+#include <sstream>
+#include <string>
+#include <vector>
+
+#include <nlohmann/json.hpp>
+
+// #include "environment.hpp"
+#ifndef PANTOR_INJA_ENVIRONMENT_HPP
+#define PANTOR_INJA_ENVIRONMENT_HPP
+
+#include <memory>
+#include <fstream>
+#include <sstream>
+#include <string>
+
+#include <nlohmann/json.hpp>
+
+// #include "config.hpp"
+#ifndef PANTOR_INJA_CONFIG_HPP
+#define PANTOR_INJA_CONFIG_HPP
+
+#include <functional>
+#include <string>
+
+// #include "string_view.hpp"
+// Copyright 2017-2019 by Martin Moene
+//
+// string-view lite, a C++17-like string_view for C++98 and later.
+// For more information see https://github.com/martinmoene/string-view-lite
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+
+#ifndef NONSTD_SV_LITE_H_INCLUDED
+#define NONSTD_SV_LITE_H_INCLUDED
+
+#define string_view_lite_MAJOR 1
+#define string_view_lite_MINOR 1
+#define string_view_lite_PATCH 0
+
+#define string_view_lite_VERSION nssv_STRINGIFY(string_view_lite_MAJOR) "." nssv_STRINGIFY(string_view_lite_MINOR) "." nssv_STRINGIFY(string_view_lite_PATCH)
+
+#define nssv_STRINGIFY( x ) nssv_STRINGIFY_( x )
+#define nssv_STRINGIFY_( x ) #x
+
+// string-view lite configuration:
+
+#define nssv_STRING_VIEW_DEFAULT 0
+#define nssv_STRING_VIEW_NONSTD 1
+#define nssv_STRING_VIEW_STD 2
+
+#if !defined( nssv_CONFIG_SELECT_STRING_VIEW )
+# define nssv_CONFIG_SELECT_STRING_VIEW ( nssv_HAVE_STD_STRING_VIEW ? nssv_STRING_VIEW_STD : nssv_STRING_VIEW_NONSTD )
+#endif
+
+#if defined( nssv_CONFIG_SELECT_STD_STRING_VIEW ) || defined( nssv_CONFIG_SELECT_NONSTD_STRING_VIEW )
+# error nssv_CONFIG_SELECT_STD_STRING_VIEW and nssv_CONFIG_SELECT_NONSTD_STRING_VIEW are deprecated and removed, please use nssv_CONFIG_SELECT_STRING_VIEW=nssv_STRING_VIEW_...
+#endif
+
+#ifndef nssv_CONFIG_STD_SV_OPERATOR
+# define nssv_CONFIG_STD_SV_OPERATOR 0
+#endif
+
+#ifndef nssv_CONFIG_USR_SV_OPERATOR
+# define nssv_CONFIG_USR_SV_OPERATOR 1
+#endif
+
+#ifdef nssv_CONFIG_CONVERSION_STD_STRING
+# define nssv_CONFIG_CONVERSION_STD_STRING_CLASS_METHODS nssv_CONFIG_CONVERSION_STD_STRING
+# define nssv_CONFIG_CONVERSION_STD_STRING_FREE_FUNCTIONS nssv_CONFIG_CONVERSION_STD_STRING
+#endif
+
+#ifndef nssv_CONFIG_CONVERSION_STD_STRING_CLASS_METHODS
+# define nssv_CONFIG_CONVERSION_STD_STRING_CLASS_METHODS 1
+#endif
+
+#ifndef nssv_CONFIG_CONVERSION_STD_STRING_FREE_FUNCTIONS
+# define nssv_CONFIG_CONVERSION_STD_STRING_FREE_FUNCTIONS 1
+#endif
+
+// Control presence of exception handling (try and auto discover):
+
+#ifndef nssv_CONFIG_NO_EXCEPTIONS
+# if defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND)
+# define nssv_CONFIG_NO_EXCEPTIONS 0
+# else
+# define nssv_CONFIG_NO_EXCEPTIONS 1
+# endif
+#endif
+
+// C++ language version detection (C++20 is speculative):
+// Note: VC14.0/1900 (VS2015) lacks too much from C++14.
+
+#ifndef nssv_CPLUSPLUS
+# if defined(_MSVC_LANG ) && !defined(__clang__)
+# define nssv_CPLUSPLUS (_MSC_VER == 1900 ? 201103L : _MSVC_LANG )
+# else
+# define nssv_CPLUSPLUS __cplusplus
+# endif
+#endif
+
+#define nssv_CPP98_OR_GREATER ( nssv_CPLUSPLUS >= 199711L )
+#define nssv_CPP11_OR_GREATER ( nssv_CPLUSPLUS >= 201103L )
+#define nssv_CPP11_OR_GREATER_ ( nssv_CPLUSPLUS >= 201103L )
+#define nssv_CPP14_OR_GREATER ( nssv_CPLUSPLUS >= 201402L )
+#define nssv_CPP17_OR_GREATER ( nssv_CPLUSPLUS >= 201703L )
+#define nssv_CPP20_OR_GREATER ( nssv_CPLUSPLUS >= 202000L )
+
+// use C++17 std::string_view if available and requested:
+
+#if nssv_CPP17_OR_GREATER && defined(__has_include )
+# if __has_include( <string_view> )
+# define nssv_HAVE_STD_STRING_VIEW 1
+# else
+# define nssv_HAVE_STD_STRING_VIEW 0
+# endif
+#else
+# define nssv_HAVE_STD_STRING_VIEW 0
+#endif
+
+#define nssv_USES_STD_STRING_VIEW ( (nssv_CONFIG_SELECT_STRING_VIEW == nssv_STRING_VIEW_STD) || ((nssv_CONFIG_SELECT_STRING_VIEW == nssv_STRING_VIEW_DEFAULT) && nssv_HAVE_STD_STRING_VIEW) )
+
+#define nssv_HAVE_STARTS_WITH ( nssv_CPP20_OR_GREATER || !nssv_USES_STD_STRING_VIEW )
+#define nssv_HAVE_ENDS_WITH nssv_HAVE_STARTS_WITH
+
+//
+// Use C++17 std::string_view:
+//
+
+#if nssv_USES_STD_STRING_VIEW
+
+#include <string_view>
+
+// Extensions for std::string:
+
+#if nssv_CONFIG_CONVERSION_STD_STRING_FREE_FUNCTIONS
+
+namespace nonstd {
+
+template< class CharT, class Traits, class Allocator = std::allocator<CharT> >
+std::basic_string<CharT, Traits, Allocator>
+to_string( std::basic_string_view<CharT, Traits> v, Allocator const & a = Allocator() )
+{
+ return std::basic_string<CharT,Traits, Allocator>( v.begin(), v.end(), a );
+}
+
+template< class CharT, class Traits, class Allocator >
+std::basic_string_view<CharT, Traits>
+to_string_view( std::basic_string<CharT, Traits, Allocator> const & s )
+{
+ return std::basic_string_view<CharT, Traits>( s.data(), s.size() );
+}
+
+// Literal operators sv and _sv:
+
+#if nssv_CONFIG_STD_SV_OPERATOR
+
+using namespace std::literals::string_view_literals;
+
+#endif
+
+#if nssv_CONFIG_USR_SV_OPERATOR
+
+inline namespace literals {
+inline namespace string_view_literals {
+
+
+constexpr std::string_view operator "" _sv( const char* str, size_t len ) noexcept // (1)
+{
+ return std::string_view{ str, len };
+}
+
+constexpr std::u16string_view operator "" _sv( const char16_t* str, size_t len ) noexcept // (2)
+{
+ return std::u16string_view{ str, len };
+}
+
+constexpr std::u32string_view operator "" _sv( const char32_t* str, size_t len ) noexcept // (3)
+{
+ return std::u32string_view{ str, len };
+}
+
+constexpr std::wstring_view operator "" _sv( const wchar_t* str, size_t len ) noexcept // (4)
+{
+ return std::wstring_view{ str, len };
+}
+
+}} // namespace literals::string_view_literals
+
+#endif // nssv_CONFIG_USR_SV_OPERATOR
+
+} // namespace nonstd
+
+#endif // nssv_CONFIG_CONVERSION_STD_STRING_FREE_FUNCTIONS
+
+namespace nonstd {
+
+using std::string_view;
+using std::wstring_view;
+using std::u16string_view;
+using std::u32string_view;
+using std::basic_string_view;
+
+// literal "sv" and "_sv", see above
+
+using std::operator==;
+using std::operator!=;
+using std::operator<;
+using std::operator<=;
+using std::operator>;
+using std::operator>=;
+
+using std::operator<<;
+
+} // namespace nonstd
+
+#else // nssv_HAVE_STD_STRING_VIEW
+
+//
+// Before C++17: use string_view lite:
+//
+
+// Compiler versions:
+//
+// MSVC++ 6.0 _MSC_VER == 1200 (Visual Studio 6.0)
+// MSVC++ 7.0 _MSC_VER == 1300 (Visual Studio .NET 2002)
+// MSVC++ 7.1 _MSC_VER == 1310 (Visual Studio .NET 2003)
+// MSVC++ 8.0 _MSC_VER == 1400 (Visual Studio 2005)
+// MSVC++ 9.0 _MSC_VER == 1500 (Visual Studio 2008)
+// MSVC++ 10.0 _MSC_VER == 1600 (Visual Studio 2010)
+// MSVC++ 11.0 _MSC_VER == 1700 (Visual Studio 2012)
+// MSVC++ 12.0 _MSC_VER == 1800 (Visual Studio 2013)
+// MSVC++ 14.0 _MSC_VER == 1900 (Visual Studio 2015)
+// MSVC++ 14.1 _MSC_VER >= 1910 (Visual Studio 2017)
+
+#if defined(_MSC_VER ) && !defined(__clang__)
+# define nssv_COMPILER_MSVC_VER (_MSC_VER )
+# define nssv_COMPILER_MSVC_VERSION (_MSC_VER / 10 - 10 * ( 5 + (_MSC_VER < 1900 ) ) )
+#else
+# define nssv_COMPILER_MSVC_VER 0
+# define nssv_COMPILER_MSVC_VERSION 0
+#endif
+
+#define nssv_COMPILER_VERSION( major, minor, patch ) (10 * ( 10 * major + minor) + patch)
+
+#if defined(__clang__)
+# define nssv_COMPILER_CLANG_VERSION nssv_COMPILER_VERSION(__clang_major__, __clang_minor__, __clang_patchlevel__)
+#else
+# define nssv_COMPILER_CLANG_VERSION 0
+#endif
+
+#if defined(__GNUC__) && !defined(__clang__)
+# define nssv_COMPILER_GNUC_VERSION nssv_COMPILER_VERSION(__GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__)
+#else
+# define nssv_COMPILER_GNUC_VERSION 0
+#endif
+
+// half-open range [lo..hi):
+#define nssv_BETWEEN( v, lo, hi ) ( (lo) <= (v) && (v) < (hi) )
+
+// Presence of language and library features:
+
+#ifdef _HAS_CPP0X
+# define nssv_HAS_CPP0X _HAS_CPP0X
+#else
+# define nssv_HAS_CPP0X 0
+#endif
+
+// Unless defined otherwise below, consider VC14 as C++11 for variant-lite:
+
+#if nssv_COMPILER_MSVC_VER >= 1900
+# undef nssv_CPP11_OR_GREATER
+# define nssv_CPP11_OR_GREATER 1
+#endif
+
+#define nssv_CPP11_90 (nssv_CPP11_OR_GREATER_ || nssv_COMPILER_MSVC_VER >= 1500)
+#define nssv_CPP11_100 (nssv_CPP11_OR_GREATER_ || nssv_COMPILER_MSVC_VER >= 1600)
+#define nssv_CPP11_110 (nssv_CPP11_OR_GREATER_ || nssv_COMPILER_MSVC_VER >= 1700)
+#define nssv_CPP11_120 (nssv_CPP11_OR_GREATER_ || nssv_COMPILER_MSVC_VER >= 1800)
+#define nssv_CPP11_140 (nssv_CPP11_OR_GREATER_ || nssv_COMPILER_MSVC_VER >= 1900)
+#define nssv_CPP11_141 (nssv_CPP11_OR_GREATER_ || nssv_COMPILER_MSVC_VER >= 1910)
+
+#define nssv_CPP14_000 (nssv_CPP14_OR_GREATER)
+#define nssv_CPP17_000 (nssv_CPP17_OR_GREATER)
+
+// Presence of C++11 language features:
+
+#define nssv_HAVE_CONSTEXPR_11 nssv_CPP11_140
+#define nssv_HAVE_EXPLICIT_CONVERSION nssv_CPP11_140
+#define nssv_HAVE_INLINE_NAMESPACE nssv_CPP11_140
+#define nssv_HAVE_NOEXCEPT nssv_CPP11_140
+#define nssv_HAVE_NULLPTR nssv_CPP11_100
+#define nssv_HAVE_REF_QUALIFIER nssv_CPP11_140
+#define nssv_HAVE_UNICODE_LITERALS nssv_CPP11_140
+#define nssv_HAVE_USER_DEFINED_LITERALS nssv_CPP11_140
+#define nssv_HAVE_WCHAR16_T nssv_CPP11_100
+#define nssv_HAVE_WCHAR32_T nssv_CPP11_100
+
+#if ! ( ( nssv_CPP11 && nssv_COMPILER_CLANG_VERSION ) || nssv_BETWEEN( nssv_COMPILER_CLANG_VERSION, 300, 400 ) )
+# define nssv_HAVE_STD_DEFINED_LITERALS nssv_CPP11_140
+#endif
+
+// Presence of C++14 language features:
+
+#define nssv_HAVE_CONSTEXPR_14 nssv_CPP14_000
+
+// Presence of C++17 language features:
+
+#define nssv_HAVE_NODISCARD nssv_CPP17_000
+
+// Presence of C++ library features:
+
+#define nssv_HAVE_STD_HASH nssv_CPP11_120
+
+// C++ feature usage:
+
+#if nssv_HAVE_CONSTEXPR_11
+# define nssv_constexpr constexpr
+#else
+# define nssv_constexpr /*constexpr*/
+#endif
+
+#if nssv_HAVE_CONSTEXPR_14
+# define nssv_constexpr14 constexpr
+#else
+# define nssv_constexpr14 /*constexpr*/
+#endif
+
+#if nssv_HAVE_EXPLICIT_CONVERSION
+# define nssv_explicit explicit
+#else
+# define nssv_explicit /*explicit*/
+#endif
+
+#if nssv_HAVE_INLINE_NAMESPACE
+# define nssv_inline_ns inline
+#else
+# define nssv_inline_ns /*inline*/
+#endif
+
+#if nssv_HAVE_NOEXCEPT
+# define nssv_noexcept noexcept
+#else
+# define nssv_noexcept /*noexcept*/
+#endif
+
+//#if nssv_HAVE_REF_QUALIFIER
+//# define nssv_ref_qual &
+//# define nssv_refref_qual &&
+//#else
+//# define nssv_ref_qual /*&*/
+//# define nssv_refref_qual /*&&*/
+//#endif
+
+#if nssv_HAVE_NULLPTR
+# define nssv_nullptr nullptr
+#else
+# define nssv_nullptr NULL
+#endif
+
+#if nssv_HAVE_NODISCARD
+# define nssv_nodiscard [[nodiscard]]
+#else
+# define nssv_nodiscard /*[[nodiscard]]*/
+#endif
+
+// Additional includes:
+
+#include <algorithm>
+#include <cassert>
+#include <iterator>
+#include <limits>
+#include <ostream>
+#include <string> // std::char_traits<>
+
+#if ! nssv_CONFIG_NO_EXCEPTIONS
+# include <stdexcept>
+#endif
+
+#if nssv_CPP11_OR_GREATER
+# include <type_traits>
+#endif
+
+// Clang, GNUC, MSVC warning suppression macros:
+
+#if defined(__clang__)
+# pragma clang diagnostic ignored "-Wreserved-user-defined-literal"
+# pragma clang diagnostic push
+# pragma clang diagnostic ignored "-Wuser-defined-literals"
+#elif defined(__GNUC__)
+# pragma GCC diagnostic push
+# pragma GCC diagnostic ignored "-Wliteral-suffix"
+#endif // __clang__
+
+#if nssv_COMPILER_MSVC_VERSION >= 140
+# define nssv_SUPPRESS_MSGSL_WARNING(expr) [[gsl::suppress(expr)]]
+# define nssv_SUPPRESS_MSVC_WARNING(code, descr) __pragma(warning(suppress: code) )
+# define nssv_DISABLE_MSVC_WARNINGS(codes) __pragma(warning(push)) __pragma(warning(disable: codes))
+#else
+# define nssv_SUPPRESS_MSGSL_WARNING(expr)
+# define nssv_SUPPRESS_MSVC_WARNING(code, descr)
+# define nssv_DISABLE_MSVC_WARNINGS(codes)
+#endif
+
+#if defined(__clang__)
+# define nssv_RESTORE_WARNINGS() _Pragma("clang diagnostic pop")
+#elif defined(__GNUC__)
+# define nssv_RESTORE_WARNINGS() _Pragma("GCC diagnostic pop")
+#elif nssv_COMPILER_MSVC_VERSION >= 140
+# define nssv_RESTORE_WARNINGS() __pragma(warning(pop ))
+#else
+# define nssv_RESTORE_WARNINGS()
+#endif
+
+// Suppress the following MSVC (GSL) warnings:
+// - C4455, non-gsl : 'operator ""sv': literal suffix identifiers that do not
+// start with an underscore are reserved
+// - C26472, gsl::t.1 : don't use a static_cast for arithmetic conversions;
+// use brace initialization, gsl::narrow_cast or gsl::narow
+// - C26481: gsl::b.1 : don't use pointer arithmetic. Use span instead
+
+nssv_DISABLE_MSVC_WARNINGS( 4455 26481 26472 )
+//nssv_DISABLE_CLANG_WARNINGS( "-Wuser-defined-literals" )
+//nssv_DISABLE_GNUC_WARNINGS( -Wliteral-suffix )
+
+namespace nonstd { namespace sv_lite {
+
+template
+<
+ class CharT,
+ class Traits = std::char_traits<CharT>
+>
+class basic_string_view;
+
+//
+// basic_string_view:
+//
+
+template
+<
+ class CharT,
+ class Traits /* = std::char_traits<CharT> */
+>
+class basic_string_view
+{
+public:
+ // Member types:
+
+ typedef Traits traits_type;
+ typedef CharT value_type;
+
+ typedef CharT * pointer;
+ typedef CharT const * const_pointer;
+ typedef CharT & reference;
+ typedef CharT const & const_reference;
+
+ typedef const_pointer iterator;
+ typedef const_pointer const_iterator;
+ typedef std::reverse_iterator< const_iterator > reverse_iterator;
+ typedef std::reverse_iterator< const_iterator > const_reverse_iterator;
+
+ typedef std::size_t size_type;
+ typedef std::ptrdiff_t difference_type;
+
+ // 24.4.2.1 Construction and assignment:
+
+ nssv_constexpr basic_string_view() nssv_noexcept
+ : data_( nssv_nullptr )
+ , size_( 0 )
+ {}
+
+#if nssv_CPP11_OR_GREATER
+ nssv_constexpr basic_string_view( basic_string_view const & other ) nssv_noexcept = default;
+#else
+ nssv_constexpr basic_string_view( basic_string_view const & other ) nssv_noexcept
+ : data_( other.data_)
+ , size_( other.size_)
+ {}
+#endif
+
+ nssv_constexpr basic_string_view( CharT const * s, size_type count )
+ : data_( s )
+ , size_( count )
+ {}
+
+ nssv_constexpr basic_string_view( CharT const * s)
+ : data_( s )
+ , size_( Traits::length(s) )
+ {}
+
+ // Assignment:
+
+#if nssv_CPP11_OR_GREATER
+ nssv_constexpr14 basic_string_view & operator=( basic_string_view const & other ) nssv_noexcept = default;
+#else
+ nssv_constexpr14 basic_string_view & operator=( basic_string_view const & other ) nssv_noexcept
+ {
+ data_ = other.data_;
+ size_ = other.size_;
+ return *this;
+ }
+#endif
+
+ // 24.4.2.2 Iterator support:
+
+ nssv_constexpr const_iterator begin() const nssv_noexcept { return data_; }
+ nssv_constexpr const_iterator end() const nssv_noexcept { return data_ + size_; }
+
+ nssv_constexpr const_iterator cbegin() const nssv_noexcept { return begin(); }
+ nssv_constexpr const_iterator cend() const nssv_noexcept { return end(); }
+
+ nssv_constexpr const_reverse_iterator rbegin() const nssv_noexcept { return const_reverse_iterator( end() ); }
+ nssv_constexpr const_reverse_iterator rend() const nssv_noexcept { return const_reverse_iterator( begin() ); }
+
+ nssv_constexpr const_reverse_iterator crbegin() const nssv_noexcept { return rbegin(); }
+ nssv_constexpr const_reverse_iterator crend() const nssv_noexcept { return rend(); }
+
+ // 24.4.2.3 Capacity:
+
+ nssv_constexpr size_type size() const nssv_noexcept { return size_; }
+ nssv_constexpr size_type length() const nssv_noexcept { return size_; }
+ nssv_constexpr size_type max_size() const nssv_noexcept { return (std::numeric_limits< size_type >::max)(); }
+
+ // since C++20
+ nssv_nodiscard nssv_constexpr bool empty() const nssv_noexcept
+ {
+ return 0 == size_;
+ }
+
+ // 24.4.2.4 Element access:
+
+ nssv_constexpr const_reference operator[]( size_type pos ) const
+ {
+ return data_at( pos );
+ }
+
+ nssv_constexpr14 const_reference at( size_type pos ) const
+ {
+#if nssv_CONFIG_NO_EXCEPTIONS
+ assert( pos < size() );
+#else
+ if ( pos >= size() )
+ {
+ throw std::out_of_range("nonst::string_view::at()");
+ }
+#endif
+ return data_at( pos );
+ }
+
+ nssv_constexpr const_reference front() const { return data_at( 0 ); }
+ nssv_constexpr const_reference back() const { return data_at( size() - 1 ); }
+
+ nssv_constexpr const_pointer data() const nssv_noexcept { return data_; }
+
+ // 24.4.2.5 Modifiers:
+
+ nssv_constexpr14 void remove_prefix( size_type n )
+ {
+ assert( n <= size() );
+ data_ += n;
+ size_ -= n;
+ }
+
+ nssv_constexpr14 void remove_suffix( size_type n )
+ {
+ assert( n <= size() );
+ size_ -= n;
+ }
+
+ nssv_constexpr14 void swap( basic_string_view & other ) nssv_noexcept
+ {
+ using std::swap;
+ swap( data_, other.data_ );
+ swap( size_, other.size_ );
+ }
+
+ // 24.4.2.6 String operations:
+
+ size_type copy( CharT * dest, size_type n, size_type pos = 0 ) const
+ {
+#if nssv_CONFIG_NO_EXCEPTIONS
+ assert( pos <= size() );
+#else
+ if ( pos > size() )
+ {
+ throw std::out_of_range("nonst::string_view::copy()");
+ }
+#endif
+ const size_type rlen = (std::min)( n, size() - pos );
+
+ (void) Traits::copy( dest, data() + pos, rlen );
+
+ return rlen;
+ }
+
+ nssv_constexpr14 basic_string_view substr( size_type pos = 0, size_type n = npos ) const
+ {
+#if nssv_CONFIG_NO_EXCEPTIONS
+ assert( pos <= size() );
+#else
+ if ( pos > size() )
+ {
+ throw std::out_of_range("nonst::string_view::substr()");
+ }
+#endif
+ return basic_string_view( data() + pos, (std::min)( n, size() - pos ) );
+ }
+
+ // compare(), 6x:
+
+ nssv_constexpr14 int compare( basic_string_view other ) const nssv_noexcept // (1)
+ {
+ if ( const int result = Traits::compare( data(), other.data(), (std::min)( size(), other.size() ) ) )
+ return result;
+
+ return size() == other.size() ? 0 : size() < other.size() ? -1 : 1;
+ }
+
+ nssv_constexpr int compare( size_type pos1, size_type n1, basic_string_view other ) const // (2)
+ {
+ return substr( pos1, n1 ).compare( other );
+ }
+
+ nssv_constexpr int compare( size_type pos1, size_type n1, basic_string_view other, size_type pos2, size_type n2 ) const // (3)
+ {
+ return substr( pos1, n1 ).compare( other.substr( pos2, n2 ) );
+ }
+
+ nssv_constexpr int compare( CharT const * s ) const // (4)
+ {
+ return compare( basic_string_view( s ) );
+ }
+
+ nssv_constexpr int compare( size_type pos1, size_type n1, CharT const * s ) const // (5)
+ {
+ return substr( pos1, n1 ).compare( basic_string_view( s ) );
+ }
+
+ nssv_constexpr int compare( size_type pos1, size_type n1, CharT const * s, size_type n2 ) const // (6)
+ {
+ return substr( pos1, n1 ).compare( basic_string_view( s, n2 ) );
+ }
+
+ // 24.4.2.7 Searching:
+
+ // starts_with(), 3x, since C++20:
+
+ nssv_constexpr bool starts_with( basic_string_view v ) const nssv_noexcept // (1)
+ {
+ return size() >= v.size() && compare( 0, v.size(), v ) == 0;
+ }
+
+ nssv_constexpr bool starts_with( CharT c ) const nssv_noexcept // (2)
+ {
+ return starts_with( basic_string_view( &c, 1 ) );
+ }
+
+ nssv_constexpr bool starts_with( CharT const * s ) const // (3)
+ {
+ return starts_with( basic_string_view( s ) );
+ }
+
+ // ends_with(), 3x, since C++20:
+
+ nssv_constexpr bool ends_with( basic_string_view v ) const nssv_noexcept // (1)
+ {
+ return size() >= v.size() && compare( size() - v.size(), npos, v ) == 0;
+ }
+
+ nssv_constexpr bool ends_with( CharT c ) const nssv_noexcept // (2)
+ {
+ return ends_with( basic_string_view( &c, 1 ) );
+ }
+
+ nssv_constexpr bool ends_with( CharT const * s ) const // (3)
+ {
+ return ends_with( basic_string_view( s ) );
+ }
+
+ // find(), 4x:
+
+ nssv_constexpr14 size_type find( basic_string_view v, size_type pos = 0 ) const nssv_noexcept // (1)
+ {
+ return assert( v.size() == 0 || v.data() != nssv_nullptr )
+ , pos >= size()
+ ? npos
+ : to_pos( std::search( cbegin() + pos, cend(), v.cbegin(), v.cend(), Traits::eq ) );
+ }
+
+ nssv_constexpr14 size_type find( CharT c, size_type pos = 0 ) const nssv_noexcept // (2)
+ {
+ return find( basic_string_view( &c, 1 ), pos );
+ }
+
+ nssv_constexpr14 size_type find( CharT const * s, size_type pos, size_type n ) const // (3)
+ {
+ return find( basic_string_view( s, n ), pos );
+ }
+
+ nssv_constexpr14 size_type find( CharT const * s, size_type pos = 0 ) const // (4)
+ {
+ return find( basic_string_view( s ), pos );
+ }
+
+ // rfind(), 4x:
+
+ nssv_constexpr14 size_type rfind( basic_string_view v, size_type pos = npos ) const nssv_noexcept // (1)
+ {
+ if ( size() < v.size() )
+ return npos;
+
+ if ( v.empty() )
+ return (std::min)( size(), pos );
+
+ const_iterator last = cbegin() + (std::min)( size() - v.size(), pos ) + v.size();
+ const_iterator result = std::find_end( cbegin(), last, v.cbegin(), v.cend(), Traits::eq );
+
+ return result != last ? size_type( result - cbegin() ) : npos;
+ }
+
+ nssv_constexpr14 size_type rfind( CharT c, size_type pos = npos ) const nssv_noexcept // (2)
+ {
+ return rfind( basic_string_view( &c, 1 ), pos );
+ }
+
+ nssv_constexpr14 size_type rfind( CharT const * s, size_type pos, size_type n ) const // (3)
+ {
+ return rfind( basic_string_view( s, n ), pos );
+ }
+
+ nssv_constexpr14 size_type rfind( CharT const * s, size_type pos = npos ) const // (4)
+ {
+ return rfind( basic_string_view( s ), pos );
+ }
+
+ // find_first_of(), 4x:
+
+ nssv_constexpr size_type find_first_of( basic_string_view v, size_type pos = 0 ) const nssv_noexcept // (1)
+ {
+ return pos >= size()
+ ? npos
+ : to_pos( std::find_first_of( cbegin() + pos, cend(), v.cbegin(), v.cend(), Traits::eq ) );
+ }
+
+ nssv_constexpr size_type find_first_of( CharT c, size_type pos = 0 ) const nssv_noexcept // (2)
+ {
+ return find_first_of( basic_string_view( &c, 1 ), pos );
+ }
+
+ nssv_constexpr size_type find_first_of( CharT const * s, size_type pos, size_type n ) const // (3)
+ {
+ return find_first_of( basic_string_view( s, n ), pos );
+ }
+
+ nssv_constexpr size_type find_first_of( CharT const * s, size_type pos = 0 ) const // (4)
+ {
+ return find_first_of( basic_string_view( s ), pos );
+ }
+
+ // find_last_of(), 4x:
+
+ nssv_constexpr size_type find_last_of( basic_string_view v, size_type pos = npos ) const nssv_noexcept // (1)
+ {
+ return empty()
+ ? npos
+ : pos >= size()
+ ? find_last_of( v, size() - 1 )
+ : to_pos( std::find_first_of( const_reverse_iterator( cbegin() + pos + 1 ), crend(), v.cbegin(), v.cend(), Traits::eq ) );
+ }
+
+ nssv_constexpr size_type find_last_of( CharT c, size_type pos = npos ) const nssv_noexcept // (2)
+ {
+ return find_last_of( basic_string_view( &c, 1 ), pos );
+ }
+
+ nssv_constexpr size_type find_last_of( CharT const * s, size_type pos, size_type count ) const // (3)
+ {
+ return find_last_of( basic_string_view( s, count ), pos );
+ }
+
+ nssv_constexpr size_type find_last_of( CharT const * s, size_type pos = npos ) const // (4)
+ {
+ return find_last_of( basic_string_view( s ), pos );
+ }
+
+ // find_first_not_of(), 4x:
+
+ nssv_constexpr size_type find_first_not_of( basic_string_view v, size_type pos = 0 ) const nssv_noexcept // (1)
+ {
+ return pos >= size()
+ ? npos
+ : to_pos( std::find_if( cbegin() + pos, cend(), not_in_view( v ) ) );
+ }
+
+ nssv_constexpr size_type find_first_not_of( CharT c, size_type pos = 0 ) const nssv_noexcept // (2)
+ {
+ return find_first_not_of( basic_string_view( &c, 1 ), pos );
+ }
+
+ nssv_constexpr size_type find_first_not_of( CharT const * s, size_type pos, size_type count ) const // (3)
+ {
+ return find_first_not_of( basic_string_view( s, count ), pos );
+ }
+
+ nssv_constexpr size_type find_first_not_of( CharT const * s, size_type pos = 0 ) const // (4)
+ {
+ return find_first_not_of( basic_string_view( s ), pos );
+ }
+
+ // find_last_not_of(), 4x:
+
+ nssv_constexpr size_type find_last_not_of( basic_string_view v, size_type pos = npos ) const nssv_noexcept // (1)
+ {
+ return empty()
+ ? npos
+ : pos >= size()
+ ? find_last_not_of( v, size() - 1 )
+ : to_pos( std::find_if( const_reverse_iterator( cbegin() + pos + 1 ), crend(), not_in_view( v ) ) );
+ }
+
+ nssv_constexpr size_type find_last_not_of( CharT c, size_type pos = npos ) const nssv_noexcept // (2)
+ {
+ return find_last_not_of( basic_string_view( &c, 1 ), pos );
+ }
+
+ nssv_constexpr size_type find_last_not_of( CharT const * s, size_type pos, size_type count ) const // (3)
+ {
+ return find_last_not_of( basic_string_view( s, count ), pos );
+ }
+
+ nssv_constexpr size_type find_last_not_of( CharT const * s, size_type pos = npos ) const // (4)
+ {
+ return find_last_not_of( basic_string_view( s ), pos );
+ }
+
+ // Constants:
+
+#if nssv_CPP17_OR_GREATER
+ static nssv_constexpr size_type npos = size_type(-1);
+#elif nssv_CPP11_OR_GREATER
+ enum : size_type { npos = size_type(-1) };
+#else
+ enum { npos = size_type(-1) };
+#endif
+
+private:
+ struct not_in_view
+ {
+ const basic_string_view v;
+
+ nssv_constexpr not_in_view( basic_string_view v ) : v( v ) {}
+
+ nssv_constexpr bool operator()( CharT c ) const
+ {
+ return npos == v.find_first_of( c );
+ }
+ };
+
+ nssv_constexpr size_type to_pos( const_iterator it ) const
+ {
+ return it == cend() ? npos : size_type( it - cbegin() );
+ }
+
+ nssv_constexpr size_type to_pos( const_reverse_iterator it ) const
+ {
+ return it == crend() ? npos : size_type( crend() - it - 1 );
+ }
+
+ nssv_constexpr const_reference data_at( size_type pos ) const
+ {
+#if nssv_BETWEEN( nssv_COMPILER_GNUC_VERSION, 1, 500 )
+ return data_[pos];
+#else
+ return assert( pos < size() ), data_[pos];
+#endif
+ }
+
+private:
+ const_pointer data_;
+ size_type size_;
+
+public:
+#if nssv_CONFIG_CONVERSION_STD_STRING_CLASS_METHODS
+
+ template< class Allocator >
+ basic_string_view( std::basic_string<CharT, Traits, Allocator> const & s ) nssv_noexcept
+ : data_( s.data() )
+ , size_( s.size() )
+ {}
+
+#if nssv_HAVE_EXPLICIT_CONVERSION
+
+ template< class Allocator >
+ explicit operator std::basic_string<CharT, Traits, Allocator>() const
+ {
+ return to_string( Allocator() );
+ }
+
+#endif // nssv_HAVE_EXPLICIT_CONVERSION
+
+#if nssv_CPP11_OR_GREATER
+
+ template< class Allocator = std::allocator<CharT> >
+ std::basic_string<CharT, Traits, Allocator>
+ to_string( Allocator const & a = Allocator() ) const
+ {
+ return std::basic_string<CharT, Traits, Allocator>( begin(), end(), a );
+ }
+
+#else
+
+ std::basic_string<CharT, Traits>
+ to_string() const
+ {
+ return std::basic_string<CharT, Traits>( begin(), end() );
+ }
+
+ template< class Allocator >
+ std::basic_string<CharT, Traits, Allocator>
+ to_string( Allocator const & a ) const
+ {
+ return std::basic_string<CharT, Traits, Allocator>( begin(), end(), a );
+ }
+
+#endif // nssv_CPP11_OR_GREATER
+
+#endif // nssv_CONFIG_CONVERSION_STD_STRING_CLASS_METHODS
+};
+
+//
+// Non-member functions:
+//
+
+// 24.4.3 Non-member comparison functions:
+// lexicographically compare two string views (function template):
+
+template< class CharT, class Traits >
+nssv_constexpr bool operator== (
+ basic_string_view <CharT, Traits> lhs,
+ basic_string_view <CharT, Traits> rhs ) nssv_noexcept
+{ return lhs.compare( rhs ) == 0 ; }
+
+template< class CharT, class Traits >
+nssv_constexpr bool operator!= (
+ basic_string_view <CharT, Traits> lhs,
+ basic_string_view <CharT, Traits> rhs ) nssv_noexcept
+{ return lhs.compare( rhs ) != 0 ; }
+
+template< class CharT, class Traits >
+nssv_constexpr bool operator< (
+ basic_string_view <CharT, Traits> lhs,
+ basic_string_view <CharT, Traits> rhs ) nssv_noexcept
+{ return lhs.compare( rhs ) < 0 ; }
+
+template< class CharT, class Traits >
+nssv_constexpr bool operator<= (
+ basic_string_view <CharT, Traits> lhs,
+ basic_string_view <CharT, Traits> rhs ) nssv_noexcept
+{ return lhs.compare( rhs ) <= 0 ; }
+
+template< class CharT, class Traits >
+nssv_constexpr bool operator> (
+ basic_string_view <CharT, Traits> lhs,
+ basic_string_view <CharT, Traits> rhs ) nssv_noexcept
+{ return lhs.compare( rhs ) > 0 ; }
+
+template< class CharT, class Traits >
+nssv_constexpr bool operator>= (
+ basic_string_view <CharT, Traits> lhs,
+ basic_string_view <CharT, Traits> rhs ) nssv_noexcept
+{ return lhs.compare( rhs ) >= 0 ; }
+
+// Let S be basic_string_view<CharT, Traits>, and sv be an instance of S.
+// Implementations shall provide sufficient additional overloads marked
+// constexpr and noexcept so that an object t with an implicit conversion
+// to S can be compared according to Table 67.
+
+#if nssv_CPP11_OR_GREATER && ! nssv_BETWEEN( nssv_COMPILER_MSVC_VERSION, 100, 141 )
+
+#define nssv_BASIC_STRING_VIEW_I(T,U) typename std::decay< basic_string_view<T,U> >::type
+
+#if nssv_BETWEEN( nssv_COMPILER_MSVC_VERSION, 140, 150 )
+# define nssv_MSVC_ORDER(x) , int=x
+#else
+# define nssv_MSVC_ORDER(x) /*, int=x*/
+#endif
+
+// ==
+
+template< class CharT, class Traits nssv_MSVC_ORDER(1) >
+nssv_constexpr bool operator==(
+ basic_string_view <CharT, Traits> lhs,
+ nssv_BASIC_STRING_VIEW_I(CharT, Traits) rhs ) nssv_noexcept
+{ return lhs.compare( rhs ) == 0; }
+
+template< class CharT, class Traits nssv_MSVC_ORDER(2) >
+nssv_constexpr bool operator==(
+ nssv_BASIC_STRING_VIEW_I(CharT, Traits) lhs,
+ basic_string_view <CharT, Traits> rhs ) nssv_noexcept
+{ return lhs.size() == rhs.size() && lhs.compare( rhs ) == 0; }
+
+// !=
+
+template< class CharT, class Traits nssv_MSVC_ORDER(1) >
+nssv_constexpr bool operator!= (
+ basic_string_view < CharT, Traits > lhs,
+ nssv_BASIC_STRING_VIEW_I( CharT, Traits ) rhs ) nssv_noexcept
+{ return lhs.size() != rhs.size() || lhs.compare( rhs ) != 0 ; }
+
+template< class CharT, class Traits nssv_MSVC_ORDER(2) >
+nssv_constexpr bool operator!= (
+ nssv_BASIC_STRING_VIEW_I( CharT, Traits ) lhs,
+ basic_string_view < CharT, Traits > rhs ) nssv_noexcept
+{ return lhs.compare( rhs ) != 0 ; }
+
+// <
+
+template< class CharT, class Traits nssv_MSVC_ORDER(1) >
+nssv_constexpr bool operator< (
+ basic_string_view < CharT, Traits > lhs,
+ nssv_BASIC_STRING_VIEW_I( CharT, Traits ) rhs ) nssv_noexcept
+{ return lhs.compare( rhs ) < 0 ; }
+
+template< class CharT, class Traits nssv_MSVC_ORDER(2) >
+nssv_constexpr bool operator< (
+ nssv_BASIC_STRING_VIEW_I( CharT, Traits ) lhs,
+ basic_string_view < CharT, Traits > rhs ) nssv_noexcept
+{ return lhs.compare( rhs ) < 0 ; }
+
+// <=
+
+template< class CharT, class Traits nssv_MSVC_ORDER(1) >
+nssv_constexpr bool operator<= (
+ basic_string_view < CharT, Traits > lhs,
+ nssv_BASIC_STRING_VIEW_I( CharT, Traits ) rhs ) nssv_noexcept
+{ return lhs.compare( rhs ) <= 0 ; }
+
+template< class CharT, class Traits nssv_MSVC_ORDER(2) >
+nssv_constexpr bool operator<= (
+ nssv_BASIC_STRING_VIEW_I( CharT, Traits ) lhs,
+ basic_string_view < CharT, Traits > rhs ) nssv_noexcept
+{ return lhs.compare( rhs ) <= 0 ; }
+
+// >
+
+template< class CharT, class Traits nssv_MSVC_ORDER(1) >
+nssv_constexpr bool operator> (
+ basic_string_view < CharT, Traits > lhs,
+ nssv_BASIC_STRING_VIEW_I( CharT, Traits ) rhs ) nssv_noexcept
+{ return lhs.compare( rhs ) > 0 ; }
+
+template< class CharT, class Traits nssv_MSVC_ORDER(2) >
+nssv_constexpr bool operator> (
+ nssv_BASIC_STRING_VIEW_I( CharT, Traits ) lhs,
+ basic_string_view < CharT, Traits > rhs ) nssv_noexcept
+{ return lhs.compare( rhs ) > 0 ; }
+
+// >=
+
+template< class CharT, class Traits nssv_MSVC_ORDER(1) >
+nssv_constexpr bool operator>= (
+ basic_string_view < CharT, Traits > lhs,
+ nssv_BASIC_STRING_VIEW_I( CharT, Traits ) rhs ) nssv_noexcept
+{ return lhs.compare( rhs ) >= 0 ; }
+
+template< class CharT, class Traits nssv_MSVC_ORDER(2) >
+nssv_constexpr bool operator>= (
+ nssv_BASIC_STRING_VIEW_I( CharT, Traits ) lhs,
+ basic_string_view < CharT, Traits > rhs ) nssv_noexcept
+{ return lhs.compare( rhs ) >= 0 ; }
+
+#undef nssv_MSVC_ORDER
+#undef nssv_BASIC_STRING_VIEW_I
+
+#endif // nssv_CPP11_OR_GREATER
+
+// 24.4.4 Inserters and extractors:
+
+namespace detail {
+
+template< class Stream >
+void write_padding( Stream & os, std::streamsize n )
+{
+ for ( std::streamsize i = 0; i < n; ++i )
+ os.rdbuf()->sputc( os.fill() );
+}
+
+template< class Stream, class View >
+Stream & write_to_stream( Stream & os, View const & sv )
+{
+ typename Stream::sentry sentry( os );
+
+ if ( !os )
+ return os;
+
+ const std::streamsize length = static_cast<std::streamsize>( sv.length() );
+
+ // Whether, and how, to pad:
+ const bool pad = ( length < os.width() );
+ const bool left_pad = pad && ( os.flags() & std::ios_base::adjustfield ) == std::ios_base::right;
+
+ if ( left_pad )
+ write_padding( os, os.width() - length );
+
+ // Write span characters:
+ os.rdbuf()->sputn( sv.begin(), length );
+
+ if ( pad && !left_pad )
+ write_padding( os, os.width() - length );
+
+ // Reset output stream width:
+ os.width( 0 );
+
+ return os;
+}
+
+} // namespace detail
+
+template< class CharT, class Traits >
+std::basic_ostream<CharT, Traits> &
+operator<<(
+ std::basic_ostream<CharT, Traits>& os,
+ basic_string_view <CharT, Traits> sv )
+{
+ return detail::write_to_stream( os, sv );
+}
+
+// Several typedefs for common character types are provided:
+
+typedef basic_string_view<char> string_view;
+typedef basic_string_view<wchar_t> wstring_view;
+#if nssv_HAVE_WCHAR16_T
+typedef basic_string_view<char16_t> u16string_view;
+typedef basic_string_view<char32_t> u32string_view;
+#endif
+
+}} // namespace nonstd::sv_lite
+
+//
+// 24.4.6 Suffix for basic_string_view literals:
+//
+
+#if nssv_HAVE_USER_DEFINED_LITERALS
+
+namespace nonstd {
+nssv_inline_ns namespace literals {
+nssv_inline_ns namespace string_view_literals {
+
+#if nssv_CONFIG_STD_SV_OPERATOR && nssv_HAVE_STD_DEFINED_LITERALS
+
+nssv_constexpr nonstd::sv_lite::string_view operator "" sv( const char* str, size_t len ) nssv_noexcept // (1)
+{
+ return nonstd::sv_lite::string_view{ str, len };
+}
+
+nssv_constexpr nonstd::sv_lite::u16string_view operator "" sv( const char16_t* str, size_t len ) nssv_noexcept // (2)
+{
+ return nonstd::sv_lite::u16string_view{ str, len };
+}
+
+nssv_constexpr nonstd::sv_lite::u32string_view operator "" sv( const char32_t* str, size_t len ) nssv_noexcept // (3)
+{
+ return nonstd::sv_lite::u32string_view{ str, len };
+}
+
+nssv_constexpr nonstd::sv_lite::wstring_view operator "" sv( const wchar_t* str, size_t len ) nssv_noexcept // (4)
+{
+ return nonstd::sv_lite::wstring_view{ str, len };
+}
+
+#endif // nssv_CONFIG_STD_SV_OPERATOR && nssv_HAVE_STD_DEFINED_LITERALS
+
+#if nssv_CONFIG_USR_SV_OPERATOR
+
+nssv_constexpr nonstd::sv_lite::string_view operator "" _sv( const char* str, size_t len ) nssv_noexcept // (1)
+{
+ return nonstd::sv_lite::string_view{ str, len };
+}
+
+nssv_constexpr nonstd::sv_lite::u16string_view operator "" _sv( const char16_t* str, size_t len ) nssv_noexcept // (2)
+{
+ return nonstd::sv_lite::u16string_view{ str, len };
+}
+
+nssv_constexpr nonstd::sv_lite::u32string_view operator "" _sv( const char32_t* str, size_t len ) nssv_noexcept // (3)
+{
+ return nonstd::sv_lite::u32string_view{ str, len };
+}
+
+nssv_constexpr nonstd::sv_lite::wstring_view operator "" _sv( const wchar_t* str, size_t len ) nssv_noexcept // (4)
+{
+ return nonstd::sv_lite::wstring_view{ str, len };
+}
+
+#endif // nssv_CONFIG_USR_SV_OPERATOR
+
+}}} // namespace nonstd::literals::string_view_literals
+
+#endif
+
+//
+// Extensions for std::string:
+//
+
+#if nssv_CONFIG_CONVERSION_STD_STRING_FREE_FUNCTIONS
+
+namespace nonstd {
+namespace sv_lite {
+
+// Exclude MSVC 14 (19.00): it yields ambiguous to_string():
+
+#if nssv_CPP11_OR_GREATER && nssv_COMPILER_MSVC_VERSION != 140
+
+template< class CharT, class Traits, class Allocator = std::allocator<CharT> >
+std::basic_string<CharT, Traits, Allocator>
+to_string( basic_string_view<CharT, Traits> v, Allocator const & a = Allocator() )
+{
+ return std::basic_string<CharT,Traits, Allocator>( v.begin(), v.end(), a );
+}
+
+#else
+
+template< class CharT, class Traits >
+std::basic_string<CharT, Traits>
+to_string( basic_string_view<CharT, Traits> v )
+{
+ return std::basic_string<CharT, Traits>( v.begin(), v.end() );
+}
+
+template< class CharT, class Traits, class Allocator >
+std::basic_string<CharT, Traits, Allocator>
+to_string( basic_string_view<CharT, Traits> v, Allocator const & a )
+{
+ return std::basic_string<CharT, Traits, Allocator>( v.begin(), v.end(), a );
+}
+
+#endif // nssv_CPP11_OR_GREATER
+
+template< class CharT, class Traits, class Allocator >
+basic_string_view<CharT, Traits>
+to_string_view( std::basic_string<CharT, Traits, Allocator> const & s )
+{
+ return basic_string_view<CharT, Traits>( s.data(), s.size() );
+}
+
+}} // namespace nonstd::sv_lite
+
+#endif // nssv_CONFIG_CONVERSION_STD_STRING_FREE_FUNCTIONS
+
+//
+// make types and algorithms available in namespace nonstd:
+//
+
+namespace nonstd {
+
+using sv_lite::basic_string_view;
+using sv_lite::string_view;
+using sv_lite::wstring_view;
+
+#if nssv_HAVE_WCHAR16_T
+using sv_lite::u16string_view;
+#endif
+#if nssv_HAVE_WCHAR32_T
+using sv_lite::u32string_view;
+#endif
+
+// literal "sv"
+
+using sv_lite::operator==;
+using sv_lite::operator!=;
+using sv_lite::operator<;
+using sv_lite::operator<=;
+using sv_lite::operator>;
+using sv_lite::operator>=;
+
+using sv_lite::operator<<;
+
+#if nssv_CONFIG_CONVERSION_STD_STRING_FREE_FUNCTIONS
+using sv_lite::to_string;
+using sv_lite::to_string_view;
+#endif
+
+} // namespace nonstd
+
+// 24.4.5 Hash support (C++11):
+
+// Note: The hash value of a string view object is equal to the hash value of
+// the corresponding string object.
+
+#if nssv_HAVE_STD_HASH
+
+#include <functional>
+
+namespace std {
+
+template<>
+struct hash< nonstd::string_view >
+{
+public:
+ std::size_t operator()( nonstd::string_view v ) const nssv_noexcept
+ {
+ return std::hash<std::string>()( std::string( v.data(), v.size() ) );
+ }
+};
+
+template<>
+struct hash< nonstd::wstring_view >
+{
+public:
+ std::size_t operator()( nonstd::wstring_view v ) const nssv_noexcept
+ {
+ return std::hash<std::wstring>()( std::wstring( v.data(), v.size() ) );
+ }
+};
+
+template<>
+struct hash< nonstd::u16string_view >
+{
+public:
+ std::size_t operator()( nonstd::u16string_view v ) const nssv_noexcept
+ {
+ return std::hash<std::u16string>()( std::u16string( v.data(), v.size() ) );
+ }
+};
+
+template<>
+struct hash< nonstd::u32string_view >
+{
+public:
+ std::size_t operator()( nonstd::u32string_view v ) const nssv_noexcept
+ {
+ return std::hash<std::u32string>()( std::u32string( v.data(), v.size() ) );
+ }
+};
+
+} // namespace std
+
+#endif // nssv_HAVE_STD_HASH
+
+nssv_RESTORE_WARNINGS()
+
+#endif // nssv_HAVE_STD_STRING_VIEW
+#endif // NONSTD_SV_LITE_H_INCLUDED
+
+
+
+namespace inja {
+
+enum class ElementNotation {
+ Dot,
+ Pointer
+};
+
+/*!
+ * \brief Class for lexer configuration.
+ */
+struct LexerConfig {
+ std::string statement_open {"{%"};
+ std::string statement_close {"%}"};
+ std::string line_statement {"##"};
+ std::string expression_open {"{{"};
+ std::string expression_close {"}}"};
+ std::string comment_open {"{#"};
+ std::string comment_close {"#}"};
+ std::string open_chars {"#{"};
+
+ bool trim_blocks {false};
+ bool lstrip_blocks {false};
+
+ void update_open_chars() {
+ open_chars = "";
+ if (open_chars.find(line_statement[0]) == std::string::npos) {
+ open_chars += line_statement[0];
+ }
+ if (open_chars.find(statement_open[0]) == std::string::npos) {
+ open_chars += statement_open[0];
+ }
+ if (open_chars.find(expression_open[0]) == std::string::npos) {
+ open_chars += expression_open[0];
+ }
+ if (open_chars.find(comment_open[0]) == std::string::npos) {
+ open_chars += comment_open[0];
+ }
+ }
+};
+
+/*!
+ * \brief Class for parser configuration.
+ */
+struct ParserConfig {
+ ElementNotation notation {ElementNotation::Dot};
+};
+
+}
+
+#endif // PANTOR_INJA_CONFIG_HPP
+
+// #include "function_storage.hpp"
+#ifndef PANTOR_INJA_FUNCTION_STORAGE_HPP
+#define PANTOR_INJA_FUNCTION_STORAGE_HPP
+
+#include <vector>
+
+// #include "bytecode.hpp"
+#ifndef PANTOR_INJA_BYTECODE_HPP
+#define PANTOR_INJA_BYTECODE_HPP
+
+#include <string>
+#include <utility>
+
+#include <nlohmann/json.hpp>
+
+// #include "string_view.hpp"
+
+
+
+namespace inja {
+
+using json = nlohmann::json;
+
+
+struct Bytecode {
+ enum class Op : uint8_t {
+ Nop,
+ // print StringRef (always immediate)
+ PrintText,
+ // print value
+ PrintValue,
+ // push value onto stack (always immediate)
+ Push,
+
+ // builtin functions
+ // result is pushed to stack
+ // args specify number of arguments
+ // all functions can take their "last" argument either immediate
+ // or popped off stack (e.g. if immediate, it's like the immediate was
+ // just pushed to the stack)
+ Not,
+ And,
+ Or,
+ In,
+ Equal,
+ Greater,
+ GreaterEqual,
+ Less,
+ LessEqual,
+ At,
+ Different,
+ DivisibleBy,
+ Even,
+ First,
+ Float,
+ Int,
+ Last,
+ Length,
+ Lower,
+ Max,
+ Min,
+ Odd,
+ Range,
+ Result,
+ Round,
+ Sort,
+ Upper,
+ Exists,
+ ExistsInObject,
+ IsBoolean,
+ IsNumber,
+ IsInteger,
+ IsFloat,
+ IsObject,
+ IsArray,
+ IsString,
+ Default,
+
+ // include another template
+ // value is the template name
+ Include,
+
+ // callback function
+ // str is the function name (this means it cannot be a lookup)
+ // args specify number of arguments
+ // as with builtin functions, "last" argument can be immediate
+ Callback,
+
+ // unconditional jump
+ // args is the index of the bytecode to jump to.
+ Jump,
+
+ // conditional jump
+ // value popped off stack is checked for truthyness
+ // if false, args is the index of the bytecode to jump to.
+ // if true, no action is taken (falls through)
+ ConditionalJump,
+
+ // start loop
+ // value popped off stack is what is iterated over
+ // args is index of bytecode after end loop (jumped to if iterable is
+ // empty)
+ // immediate value is key name (for maps)
+ // str is value name
+ StartLoop,
+
+ // end a loop
+ // args is index of the first bytecode in the loop body
+ EndLoop,
+ };
+
+ enum Flag {
+ // location of value for value-taking ops (mask)
+ ValueMask = 0x03,
+ // pop value off stack
+ ValuePop = 0x00,
+ // value is immediate rather than on stack
+ ValueImmediate = 0x01,
+ // lookup immediate str (dot notation)
+ ValueLookupDot = 0x02,
+ // lookup immediate str (json pointer notation)
+ ValueLookupPointer = 0x03,
+ };
+
+ Op op {Op::Nop};
+ uint32_t args: 30;
+ uint32_t flags: 2;
+
+ json value;
+ std::string str;
+
+ Bytecode(): args(0), flags(0) {}
+ explicit Bytecode(Op op, unsigned int args = 0): op(op), args(args), flags(0) {}
+ explicit Bytecode(Op op, nonstd::string_view str, unsigned int flags): op(op), args(0), flags(flags), str(str) {}
+ explicit Bytecode(Op op, json&& value, unsigned int flags): op(op), args(0), flags(flags), value(std::move(value)) {}
+};
+
+} // namespace inja
+
+#endif // PANTOR_INJA_BYTECODE_HPP
+
+// #include "string_view.hpp"
+
+
+
+namespace inja {
+
+using namespace nlohmann;
+
+using Arguments = std::vector<const json*>;
+using CallbackFunction = std::function<json(Arguments& args)>;
+
+/*!
+ * \brief Class for builtin functions and user-defined callbacks.
+ */
+class FunctionStorage {
+ public:
+ void add_builtin(nonstd::string_view name, unsigned int num_args, Bytecode::Op op) {
+ auto& data = get_or_new(name, num_args);
+ data.op = op;
+ }
+
+ void add_callback(nonstd::string_view name, unsigned int num_args, const CallbackFunction& function) {
+ auto& data = get_or_new(name, num_args);
+ data.function = function;
+ }
+
+ Bytecode::Op find_builtin(nonstd::string_view name, unsigned int num_args) const {
+ if (auto ptr = get(name, num_args)) {
+ return ptr->op;
+ }
+ return Bytecode::Op::Nop;
+ }
+
+ CallbackFunction find_callback(nonstd::string_view name, unsigned int num_args) const {
+ if (auto ptr = get(name, num_args)) {
+ return ptr->function;
+ }
+ return nullptr;
+ }
+
+ private:
+ struct FunctionData {
+ unsigned int num_args {0};
+ Bytecode::Op op {Bytecode::Op::Nop}; // for builtins
+ CallbackFunction function; // for callbacks
+ };
+
+ FunctionData& get_or_new(nonstd::string_view name, unsigned int num_args) {
+ auto &vec = m_map[static_cast<std::string>(name)];
+ for (auto &i: vec) {
+ if (i.num_args == num_args) return i;
+ }
+ vec.emplace_back();
+ vec.back().num_args = num_args;
+ return vec.back();
+ }
+
+ const FunctionData* get(nonstd::string_view name, unsigned int num_args) const {
+ auto it = m_map.find(static_cast<std::string>(name));
+ if (it == m_map.end()) return nullptr;
+ for (auto &&i: it->second) {
+ if (i.num_args == num_args) return &i;
+ }
+ return nullptr;
+ }
+
+ std::map<std::string, std::vector<FunctionData>> m_map;
+};
+
+}
+
+#endif // PANTOR_INJA_FUNCTION_STORAGE_HPP
+
+// #include "parser.hpp"
+#ifndef PANTOR_INJA_PARSER_HPP
+#define PANTOR_INJA_PARSER_HPP
+
+#include <limits>
+#include <string>
+#include <utility>
+#include <vector>
+
+// #include "bytecode.hpp"
+
+// #include "config.hpp"
+
+// #include "function_storage.hpp"
+
+// #include "lexer.hpp"
+#ifndef PANTOR_INJA_LEXER_HPP
+#define PANTOR_INJA_LEXER_HPP
+
+#include <cctype>
+#include <locale>
+
+// #include "config.hpp"
+
+// #include "token.hpp"
+#ifndef PANTOR_INJA_TOKEN_HPP
+#define PANTOR_INJA_TOKEN_HPP
+
+#include <string>
+
+// #include "string_view.hpp"
+
+
+
+namespace inja {
+
+/*!
+ * \brief Helper-class for the inja Parser.
+ */
+struct Token {
+ enum class Kind {
+ Text,
+ ExpressionOpen, // {{
+ ExpressionClose, // }}
+ LineStatementOpen, // ##
+ LineStatementClose, // \n
+ StatementOpen, // {%
+ StatementClose, // %}
+ CommentOpen, // {#
+ CommentClose, // #}
+ Id, // this, this.foo
+ Number, // 1, 2, -1, 5.2, -5.3
+ String, // "this"
+ Comma, // ,
+ Colon, // :
+ LeftParen, // (
+ RightParen, // )
+ LeftBracket, // [
+ RightBracket, // ]
+ LeftBrace, // {
+ RightBrace, // }
+ Equal, // ==
+ GreaterThan, // >
+ GreaterEqual, // >=
+ LessThan, // <
+ LessEqual, // <=
+ NotEqual, // !=
+ Unknown,
+ Eof
+ } kind {Kind::Unknown};
+
+ nonstd::string_view text;
+
+ constexpr Token() = default;
+ constexpr Token(Kind kind, nonstd::string_view text): kind(kind), text(text) {}
+
+ std::string describe() const {
+ switch (kind) {
+ case Kind::Text:
+ return "<text>";
+ case Kind::LineStatementClose:
+ return "<eol>";
+ case Kind::Eof:
+ return "<eof>";
+ default:
+ return static_cast<std::string>(text);
+ }
+ }
+};
+
+}
+
+#endif // PANTOR_INJA_TOKEN_HPP
+
+// #include "utils.hpp"
+#ifndef PANTOR_INJA_UTILS_HPP
+#define PANTOR_INJA_UTILS_HPP
+
+#include <algorithm>
+#include <fstream>
+#include <stdexcept>
+#include <string>
+#include <utility>
+
+// #include "string_view.hpp"
+
+
+
+namespace inja {
+
+inline void inja_throw(const std::string& type, const std::string& message) {
+ throw std::runtime_error("[inja.exception." + type + "] " + message);
+}
+
+inline std::ifstream open_file_or_throw(const std::string& path) {
+ std::ifstream file;
+ file.exceptions(std::ifstream::failbit | std::ifstream::badbit);
+ try {
+ file.open(path);
+ } catch(const std::ios_base::failure& e) {
+ inja_throw("file_error", "failed accessing file at '" + path + "'");
+ }
+ return file;
+}
+
+namespace string_view {
+ inline nonstd::string_view slice(nonstd::string_view view, size_t start, size_t end) {
+ start = std::min(start, view.size());
+ end = std::min(std::max(start, end), view.size());
+ return view.substr(start, end - start); // StringRef(Data + Start, End - Start);
+ }
+
+ inline std::pair<nonstd::string_view, nonstd::string_view> split(nonstd::string_view view, char Separator) {
+ size_t idx = view.find(Separator);
+ if (idx == nonstd::string_view::npos) {
+ return std::make_pair(view, nonstd::string_view());
+ }
+ return std::make_pair(slice(view, 0, idx), slice(view, idx + 1, nonstd::string_view::npos));
+ }
+
+ inline bool starts_with(nonstd::string_view view, nonstd::string_view prefix) {
+ return (view.size() >= prefix.size() && view.compare(0, prefix.size(), prefix) == 0);
+ }
+} // namespace string
+
+} // namespace inja
+
+#endif // PANTOR_INJA_UTILS_HPP
+
+
+
+namespace inja {
+
+/*!
+ * \brief Class for lexing an inja Template.
+ */
+class Lexer {
+ enum class State {
+ Text,
+ ExpressionStart,
+ ExpressionBody,
+ LineStart,
+ LineBody,
+ StatementStart,
+ StatementBody,
+ CommentStart,
+ CommentBody
+ } m_state;
+
+ const LexerConfig& m_config;
+ nonstd::string_view m_in;
+ size_t m_tok_start;
+ size_t m_pos;
+
+ public:
+ explicit Lexer(const LexerConfig& config) : m_config(config) {}
+
+ void start(nonstd::string_view in) {
+ m_in = in;
+ m_tok_start = 0;
+ m_pos = 0;
+ m_state = State::Text;
+ }
+
+ Token scan() {
+ m_tok_start = m_pos;
+
+ again:
+ if (m_tok_start >= m_in.size()) return make_token(Token::Kind::Eof);
+
+ switch (m_state) {
+ default:
+ case State::Text: {
+ // fast-scan to first open character
+ size_t open_start = m_in.substr(m_pos).find_first_of(m_config.open_chars);
+ if (open_start == nonstd::string_view::npos) {
+ // didn't find open, return remaining text as text token
+ m_pos = m_in.size();
+ return make_token(Token::Kind::Text);
+ }
+ m_pos += open_start;
+
+ // try to match one of the opening sequences, and get the close
+ nonstd::string_view open_str = m_in.substr(m_pos);
+ bool must_lstrip = false;
+ if (inja::string_view::starts_with(open_str, m_config.expression_open)) {
+ m_state = State::ExpressionStart;
+ } else if (inja::string_view::starts_with(open_str, m_config.statement_open)) {
+ m_state = State::StatementStart;
+ must_lstrip = m_config.lstrip_blocks;
+ } else if (inja::string_view::starts_with(open_str, m_config.comment_open)) {
+ m_state = State::CommentStart;
+ must_lstrip = m_config.lstrip_blocks;
+ } else if ((m_pos == 0 || m_in[m_pos - 1] == '\n') &&
+ inja::string_view::starts_with(open_str, m_config.line_statement)) {
+ m_state = State::LineStart;
+ } else {
+ m_pos += 1; // wasn't actually an opening sequence
+ goto again;
+ }
+
+ nonstd::string_view text = string_view::slice(m_in, m_tok_start, m_pos);
+ if (must_lstrip)
+ text = clear_final_line_if_whitespace(text);
+
+ if (text.empty()) goto again; // don't generate empty token
+ return Token(Token::Kind::Text, text);
+ }
+ case State::ExpressionStart: {
+ m_state = State::ExpressionBody;
+ m_pos += m_config.expression_open.size();
+ return make_token(Token::Kind::ExpressionOpen);
+ }
+ case State::LineStart: {
+ m_state = State::LineBody;
+ m_pos += m_config.line_statement.size();
+ return make_token(Token::Kind::LineStatementOpen);
+ }
+ case State::StatementStart: {
+ m_state = State::StatementBody;
+ m_pos += m_config.statement_open.size();
+ return make_token(Token::Kind::StatementOpen);
+ }
+ case State::CommentStart: {
+ m_state = State::CommentBody;
+ m_pos += m_config.comment_open.size();
+ return make_token(Token::Kind::CommentOpen);
+ }
+ case State::ExpressionBody:
+ return scan_body(m_config.expression_close, Token::Kind::ExpressionClose);
+ case State::LineBody:
+ return scan_body("\n", Token::Kind::LineStatementClose);
+ case State::StatementBody:
+ return scan_body(m_config.statement_close, Token::Kind::StatementClose, m_config.trim_blocks);
+ case State::CommentBody: {
+ // fast-scan to comment close
+ size_t end = m_in.substr(m_pos).find(m_config.comment_close);
+ if (end == nonstd::string_view::npos) {
+ m_pos = m_in.size();
+ return make_token(Token::Kind::Eof);
+ }
+ // return the entire comment in the close token
+ m_state = State::Text;
+ m_pos += end + m_config.comment_close.size();
+ Token tok = make_token(Token::Kind::CommentClose);
+ if (m_config.trim_blocks)
+ skip_newline();
+ return tok;
+ }
+ }
+ }
+
+ const LexerConfig& get_config() const { return m_config; }
+
+ private:
+ Token scan_body(nonstd::string_view close, Token::Kind closeKind, bool trim = false) {
+ again:
+ // skip whitespace (except for \n as it might be a close)
+ if (m_tok_start >= m_in.size()) return make_token(Token::Kind::Eof);
+ char ch = m_in[m_tok_start];
+ if (ch == ' ' || ch == '\t' || ch == '\r') {
+ m_tok_start += 1;
+ goto again;
+ }
+
+ // check for close
+ if (inja::string_view::starts_with(m_in.substr(m_tok_start), close)) {
+ m_state = State::Text;
+ m_pos = m_tok_start + close.size();
+ Token tok = make_token(closeKind);
+ if (trim)
+ skip_newline();
+ return tok;
+ }
+
+ // skip \n
+ if (ch == '\n') {
+ m_tok_start += 1;
+ goto again;
+ }
+
+ m_pos = m_tok_start + 1;
+ if (std::isalpha(ch)) return scan_id();
+ switch (ch) {
+ case ',':
+ return make_token(Token::Kind::Comma);
+ case ':':
+ return make_token(Token::Kind::Colon);
+ case '(':
+ return make_token(Token::Kind::LeftParen);
+ case ')':
+ return make_token(Token::Kind::RightParen);
+ case '[':
+ return make_token(Token::Kind::LeftBracket);
+ case ']':
+ return make_token(Token::Kind::RightBracket);
+ case '{':
+ return make_token(Token::Kind::LeftBrace);
+ case '}':
+ return make_token(Token::Kind::RightBrace);
+ case '>':
+ if (m_pos < m_in.size() && m_in[m_pos] == '=') {
+ m_pos += 1;
+ return make_token(Token::Kind::GreaterEqual);
+ }
+ return make_token(Token::Kind::GreaterThan);
+ case '<':
+ if (m_pos < m_in.size() && m_in[m_pos] == '=') {
+ m_pos += 1;
+ return make_token(Token::Kind::LessEqual);
+ }
+ return make_token(Token::Kind::LessThan);
+ case '=':
+ if (m_pos < m_in.size() && m_in[m_pos] == '=') {
+ m_pos += 1;
+ return make_token(Token::Kind::Equal);
+ }
+ return make_token(Token::Kind::Unknown);
+ case '!':
+ if (m_pos < m_in.size() && m_in[m_pos] == '=') {
+ m_pos += 1;
+ return make_token(Token::Kind::NotEqual);
+ }
+ return make_token(Token::Kind::Unknown);
+ case '\"':
+ return scan_string();
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case '-':
+ return scan_number();
+ case '_':
+ return scan_id();
+ default:
+ return make_token(Token::Kind::Unknown);
+ }
+ }
+
+ Token scan_id() {
+ for (;;) {
+ if (m_pos >= m_in.size()) {
+ break;
+ }
+ char ch = m_in[m_pos];
+ if (!std::isalnum(ch) && ch != '.' && ch != '/' && ch != '_' && ch != '-') {
+ break;
+ }
+ m_pos += 1;
+ }
+ return make_token(Token::Kind::Id);
+ }
+
+ Token scan_number() {
+ for (;;) {
+ if (m_pos >= m_in.size()) {
+ break;
+ }
+ char ch = m_in[m_pos];
+ // be very permissive in lexer (we'll catch errors when conversion happens)
+ if (!std::isdigit(ch) && ch != '.' && ch != 'e' && ch != 'E' && ch != '+' && ch != '-') {
+ break;
+ }
+ m_pos += 1;
+ }
+ return make_token(Token::Kind::Number);
+ }
+
+ Token scan_string() {
+ bool escape {false};
+ for (;;) {
+ if (m_pos >= m_in.size()) break;
+ char ch = m_in[m_pos++];
+ if (ch == '\\') {
+ escape = true;
+ } else if (!escape && ch == m_in[m_tok_start]) {
+ break;
+ } else {
+ escape = false;
+ }
+ }
+ return make_token(Token::Kind::String);
+ }
+
+ Token make_token(Token::Kind kind) const {
+ return Token(kind, string_view::slice(m_in, m_tok_start, m_pos));
+ }
+
+ void skip_newline() {
+ if (m_pos < m_in.size()) {
+ char ch = m_in[m_pos];
+ if (ch == '\n')
+ m_pos += 1;
+ else if (ch == '\r') {
+ m_pos += 1;
+ if (m_pos < m_in.size() && m_in[m_pos] == '\n')
+ m_pos += 1;
+ }
+ }
+ }
+
+ static nonstd::string_view clear_final_line_if_whitespace(nonstd::string_view text)
+ {
+ nonstd::string_view result = text;
+ while (!result.empty()) {
+ char ch = result.back();
+ if (ch == ' ' || ch == '\t')
+ result.remove_suffix(1);
+ else if (ch == '\n' || ch == '\r')
+ break;
+ else
+ return text;
+ }
+ return result;
+ }
+};
+
+}
+
+#endif // PANTOR_INJA_LEXER_HPP
+
+// #include "template.hpp"
+#ifndef PANTOR_INJA_TEMPLATE_HPP
+#define PANTOR_INJA_TEMPLATE_HPP
+
+#include <map>
+#include <string>
+#include <vector>
+
+// #include "bytecode.hpp"
+
+
+
+namespace inja {
+
+/*!
+ * \brief The main inja Template.
+ */
+struct Template {
+ std::vector<Bytecode> bytecodes;
+ std::string content;
+};
+
+using TemplateStorage = std::map<std::string, Template>;
+
+}
+
+#endif // PANTOR_INJA_TEMPLATE_HPP
+
+// #include "token.hpp"
+
+// #include "utils.hpp"
+
+
+#include <nlohmann/json.hpp>
+
+
+namespace inja {
+
+class ParserStatic {
+ ParserStatic() {
+ functions.add_builtin("at", 2, Bytecode::Op::At);
+ functions.add_builtin("default", 2, Bytecode::Op::Default);
+ functions.add_builtin("divisibleBy", 2, Bytecode::Op::DivisibleBy);
+ functions.add_builtin("even", 1, Bytecode::Op::Even);
+ functions.add_builtin("first", 1, Bytecode::Op::First);
+ functions.add_builtin("float", 1, Bytecode::Op::Float);
+ functions.add_builtin("int", 1, Bytecode::Op::Int);
+ functions.add_builtin("last", 1, Bytecode::Op::Last);
+ functions.add_builtin("length", 1, Bytecode::Op::Length);
+ functions.add_builtin("lower", 1, Bytecode::Op::Lower);
+ functions.add_builtin("max", 1, Bytecode::Op::Max);
+ functions.add_builtin("min", 1, Bytecode::Op::Min);
+ functions.add_builtin("odd", 1, Bytecode::Op::Odd);
+ functions.add_builtin("range", 1, Bytecode::Op::Range);
+ functions.add_builtin("round", 2, Bytecode::Op::Round);
+ functions.add_builtin("sort", 1, Bytecode::Op::Sort);
+ functions.add_builtin("upper", 1, Bytecode::Op::Upper);
+ functions.add_builtin("exists", 1, Bytecode::Op::Exists);
+ functions.add_builtin("existsIn", 2, Bytecode::Op::ExistsInObject);
+ functions.add_builtin("isBoolean", 1, Bytecode::Op::IsBoolean);
+ functions.add_builtin("isNumber", 1, Bytecode::Op::IsNumber);
+ functions.add_builtin("isInteger", 1, Bytecode::Op::IsInteger);
+ functions.add_builtin("isFloat", 1, Bytecode::Op::IsFloat);
+ functions.add_builtin("isObject", 1, Bytecode::Op::IsObject);
+ functions.add_builtin("isArray", 1, Bytecode::Op::IsArray);
+ functions.add_builtin("isString", 1, Bytecode::Op::IsString);
+ }
+
+ public:
+ ParserStatic(const ParserStatic&) = delete;
+ ParserStatic& operator=(const ParserStatic&) = delete;
+
+ static const ParserStatic& get_instance() {
+ static ParserStatic inst;
+ return inst;
+ }
+
+ FunctionStorage functions;
+};
+
+/*!
+ * \brief Class for parsing an inja Template.
+ */
+class Parser {
+ public:
+ explicit Parser(const ParserConfig& parser_config, const LexerConfig& lexer_config, TemplateStorage& included_templates): m_config(parser_config), m_lexer(lexer_config), m_included_templates(included_templates), m_static(ParserStatic::get_instance()) { }
+
+ bool parse_expression(Template& tmpl) {
+ if (!parse_expression_and(tmpl)) return false;
+ if (m_tok.kind != Token::Kind::Id || m_tok.text != static_cast<decltype(m_tok.text)>("or")) return true;
+ get_next_token();
+ if (!parse_expression_and(tmpl)) return false;
+ append_function(tmpl, Bytecode::Op::Or, 2);
+ return true;
+ }
+
+ bool parse_expression_and(Template& tmpl) {
+ if (!parse_expression_not(tmpl)) return false;
+ if (m_tok.kind != Token::Kind::Id || m_tok.text != static_cast<decltype(m_tok.text)>("and")) return true;
+ get_next_token();
+ if (!parse_expression_not(tmpl)) return false;
+ append_function(tmpl, Bytecode::Op::And, 2);
+ return true;
+ }
+
+ bool parse_expression_not(Template& tmpl) {
+ if (m_tok.kind == Token::Kind::Id && m_tok.text == static_cast<decltype(m_tok.text)>("not")) {
+ get_next_token();
+ if (!parse_expression_not(tmpl)) return false;
+ append_function(tmpl, Bytecode::Op::Not, 1);
+ return true;
+ } else {
+ return parse_expression_comparison(tmpl);
+ }
+ }
+
+ bool parse_expression_comparison(Template& tmpl) {
+ if (!parse_expression_datum(tmpl)) return false;
+ Bytecode::Op op;
+ switch (m_tok.kind) {
+ case Token::Kind::Id:
+ if (m_tok.text == static_cast<decltype(m_tok.text)>("in"))
+ op = Bytecode::Op::In;
+ else
+ return true;
+ break;
+ case Token::Kind::Equal:
+ op = Bytecode::Op::Equal;
+ break;
+ case Token::Kind::GreaterThan:
+ op = Bytecode::Op::Greater;
+ break;
+ case Token::Kind::LessThan:
+ op = Bytecode::Op::Less;
+ break;
+ case Token::Kind::LessEqual:
+ op = Bytecode::Op::LessEqual;
+ break;
+ case Token::Kind::GreaterEqual:
+ op = Bytecode::Op::GreaterEqual;
+ break;
+ case Token::Kind::NotEqual:
+ op = Bytecode::Op::Different;
+ break;
+ default:
+ return true;
+ }
+ get_next_token();
+ if (!parse_expression_datum(tmpl)) return false;
+ append_function(tmpl, op, 2);
+ return true;
+ }
+
+ bool parse_expression_datum(Template& tmpl) {
+ nonstd::string_view json_first;
+ size_t bracket_level = 0;
+ size_t brace_level = 0;
+
+ for (;;) {
+ switch (m_tok.kind) {
+ case Token::Kind::LeftParen: {
+ get_next_token();
+ if (!parse_expression(tmpl)) return false;
+ if (m_tok.kind != Token::Kind::RightParen) {
+ inja_throw("parser_error", "unmatched '('");
+ }
+ get_next_token();
+ return true;
+ }
+ case Token::Kind::Id:
+ get_peek_token();
+ if (m_peek_tok.kind == Token::Kind::LeftParen) {
+ // function call, parse arguments
+ Token func_token = m_tok;
+ get_next_token(); // id
+ get_next_token(); // leftParen
+ unsigned int num_args = 0;
+ if (m_tok.kind == Token::Kind::RightParen) {
+ // no args
+ get_next_token();
+ } else {
+ for (;;) {
+ if (!parse_expression(tmpl)) {
+ inja_throw("parser_error", "expected expression, got '" + m_tok.describe() + "'");
+ }
+ num_args += 1;
+ if (m_tok.kind == Token::Kind::RightParen) {
+ get_next_token();
+ break;
+ }
+ if (m_tok.kind != Token::Kind::Comma) {
+ inja_throw("parser_error", "expected ')' or ',', got '" + m_tok.describe() + "'");
+ }
+ get_next_token();
+ }
+ }
+
+ auto op = m_static.functions.find_builtin(func_token.text, num_args);
+
+ if (op != Bytecode::Op::Nop) {
+ // swap arguments for default(); see comment in RenderTo()
+ if (op == Bytecode::Op::Default)
+ std::swap(tmpl.bytecodes.back(), *(tmpl.bytecodes.rbegin() + 1));
+ append_function(tmpl, op, num_args);
+ return true;
+ } else {
+ append_callback(tmpl, func_token.text, num_args);
+ return true;
+ }
+ } else if (m_tok.text == static_cast<decltype(m_tok.text)>("true") ||
+ m_tok.text == static_cast<decltype(m_tok.text)>("false") ||
+ m_tok.text == static_cast<decltype(m_tok.text)>("null")) {
+ // true, false, null are json literals
+ if (brace_level == 0 && bracket_level == 0) {
+ json_first = m_tok.text;
+ goto returnJson;
+ }
+ break;
+ } else {
+ // normal literal (json read)
+ tmpl.bytecodes.emplace_back(
+ Bytecode::Op::Push, m_tok.text,
+ m_config.notation == ElementNotation::Pointer ? Bytecode::Flag::ValueLookupPointer : Bytecode::Flag::ValueLookupDot);
+ get_next_token();
+ return true;
+ }
+ // json passthrough
+ case Token::Kind::Number:
+ case Token::Kind::String:
+ if (brace_level == 0 && bracket_level == 0) {
+ json_first = m_tok.text;
+ goto returnJson;
+ }
+ break;
+ case Token::Kind::Comma:
+ case Token::Kind::Colon:
+ if (brace_level == 0 && bracket_level == 0) {
+ inja_throw("parser_error", "unexpected token '" + m_tok.describe() + "'");
+ }
+ break;
+ case Token::Kind::LeftBracket:
+ if (brace_level == 0 && bracket_level == 0) {
+ json_first = m_tok.text;
+ }
+ bracket_level += 1;
+ break;
+ case Token::Kind::LeftBrace:
+ if (brace_level == 0 && bracket_level == 0) {
+ json_first = m_tok.text;
+ }
+ brace_level += 1;
+ break;
+ case Token::Kind::RightBracket:
+ if (bracket_level == 0) {
+ inja_throw("parser_error", "unexpected ']'");
+ }
+ --bracket_level;
+ if (brace_level == 0 && bracket_level == 0) goto returnJson;
+ break;
+ case Token::Kind::RightBrace:
+ if (brace_level == 0) {
+ inja_throw("parser_error", "unexpected '}'");
+ }
+ --brace_level;
+ if (brace_level == 0 && bracket_level == 0) goto returnJson;
+ break;
+ default:
+ if (brace_level != 0) {
+ inja_throw("parser_error", "unmatched '{'");
+ }
+ if (bracket_level != 0) {
+ inja_throw("parser_error", "unmatched '['");
+ }
+ return false;
+ }
+
+ get_next_token();
+ }
+
+ returnJson:
+ // bridge across all intermediate tokens
+ nonstd::string_view json_text(json_first.data(), m_tok.text.data() - json_first.data() + m_tok.text.size());
+ tmpl.bytecodes.emplace_back(Bytecode::Op::Push, json::parse(json_text), Bytecode::Flag::ValueImmediate);
+ get_next_token();
+ return true;
+ }
+
+ bool parse_statement(Template& tmpl, nonstd::string_view path) {
+ if (m_tok.kind != Token::Kind::Id) return false;
+
+ if (m_tok.text == static_cast<decltype(m_tok.text)>("if")) {
+ get_next_token();
+
+ // evaluate expression
+ if (!parse_expression(tmpl)) return false;
+
+ // start a new if block on if stack
+ m_if_stack.emplace_back(tmpl.bytecodes.size());
+
+ // conditional jump; destination will be filled in by else or endif
+ tmpl.bytecodes.emplace_back(Bytecode::Op::ConditionalJump);
+ } else if (m_tok.text == static_cast<decltype(m_tok.text)>("endif")) {
+ if (m_if_stack.empty()) {
+ inja_throw("parser_error", "endif without matching if");
+ }
+ auto& if_data = m_if_stack.back();
+ get_next_token();
+
+ // previous conditional jump jumps here
+ if (if_data.prev_cond_jump != std::numeric_limits<unsigned int>::max()) {
+ tmpl.bytecodes[if_data.prev_cond_jump].args = tmpl.bytecodes.size();
+ }
+
+ // update all previous unconditional jumps to here
+ for (unsigned int i: if_data.uncond_jumps) {
+ tmpl.bytecodes[i].args = tmpl.bytecodes.size();
+ }
+
+ // pop if stack
+ m_if_stack.pop_back();
+ } else if (m_tok.text == static_cast<decltype(m_tok.text)>("else")) {
+ if (m_if_stack.empty())
+ inja_throw("parser_error", "else without matching if");
+ auto& if_data = m_if_stack.back();
+ get_next_token();
+
+ // end previous block with unconditional jump to endif; destination will be
+ // filled in by endif
+ if_data.uncond_jumps.push_back(tmpl.bytecodes.size());
+ tmpl.bytecodes.emplace_back(Bytecode::Op::Jump);
+
+ // previous conditional jump jumps here
+ tmpl.bytecodes[if_data.prev_cond_jump].args = tmpl.bytecodes.size();
+ if_data.prev_cond_jump = std::numeric_limits<unsigned int>::max();
+
+ // chained else if
+ if (m_tok.kind == Token::Kind::Id && m_tok.text == static_cast<decltype(m_tok.text)>("if")) {
+ get_next_token();
+
+ // evaluate expression
+ if (!parse_expression(tmpl)) return false;
+
+ // update "previous jump"
+ if_data.prev_cond_jump = tmpl.bytecodes.size();
+
+ // conditional jump; destination will be filled in by else or endif
+ tmpl.bytecodes.emplace_back(Bytecode::Op::ConditionalJump);
+ }
+ } else if (m_tok.text == static_cast<decltype(m_tok.text)>("for")) {
+ get_next_token();
+
+ // options: for a in arr; for a, b in obj
+ if (m_tok.kind != Token::Kind::Id)
+ inja_throw("parser_error", "expected id, got '" + m_tok.describe() + "'");
+ Token value_token = m_tok;
+ get_next_token();
+
+ Token key_token;
+ if (m_tok.kind == Token::Kind::Comma) {
+ get_next_token();
+ if (m_tok.kind != Token::Kind::Id)
+ inja_throw("parser_error", "expected id, got '" + m_tok.describe() + "'");
+ key_token = std::move(value_token);
+ value_token = m_tok;
+ get_next_token();
+ }
+
+ if (m_tok.kind != Token::Kind::Id || m_tok.text != static_cast<decltype(m_tok.text)>("in"))
+ inja_throw("parser_error",
+ "expected 'in', got '" + m_tok.describe() + "'");
+ get_next_token();
+
+ if (!parse_expression(tmpl)) return false;
+
+ m_loop_stack.push_back(tmpl.bytecodes.size());
+
+ tmpl.bytecodes.emplace_back(Bytecode::Op::StartLoop);
+ if (!key_token.text.empty()) {
+ tmpl.bytecodes.back().value = key_token.text;
+ }
+ tmpl.bytecodes.back().str = static_cast<std::string>(value_token.text);
+ } else if (m_tok.text == static_cast<decltype(m_tok.text)>("endfor")) {
+ get_next_token();
+ if (m_loop_stack.empty()) {
+ inja_throw("parser_error", "endfor without matching for");
+ }
+
+ // update loop with EndLoop index (for empty case)
+ tmpl.bytecodes[m_loop_stack.back()].args = tmpl.bytecodes.size();
+
+ tmpl.bytecodes.emplace_back(Bytecode::Op::EndLoop);
+ tmpl.bytecodes.back().args = m_loop_stack.back() + 1; // loop body
+ m_loop_stack.pop_back();
+ } else if (m_tok.text == static_cast<decltype(m_tok.text)>("include")) {
+ get_next_token();
+
+ if (m_tok.kind != Token::Kind::String) {
+ inja_throw("parser_error", "expected string, got '" + m_tok.describe() + "'");
+ }
+
+ // build the relative path
+ json json_name = json::parse(m_tok.text);
+ std::string pathname = static_cast<std::string>(path);
+ pathname += json_name.get_ref<const std::string&>();
+ if (pathname.compare(0, 2, "./") == 0) {
+ pathname.erase(0, 2);
+ }
+ // sys::path::remove_dots(pathname, true, sys::path::Style::posix);
+
+ if (m_included_templates.find(pathname) == m_included_templates.end()) {
+ Template include_template = parse_template(pathname);
+ m_included_templates.emplace(pathname, include_template);
+ }
+
+ // generate a reference bytecode
+ tmpl.bytecodes.emplace_back(Bytecode::Op::Include, json(pathname), Bytecode::Flag::ValueImmediate);
+
+ get_next_token();
+ } else {
+ return false;
+ }
+ return true;
+ }
+
+ void append_function(Template& tmpl, Bytecode::Op op, unsigned int num_args) {
+ // we can merge with back-to-back push
+ if (!tmpl.bytecodes.empty()) {
+ Bytecode& last = tmpl.bytecodes.back();
+ if (last.op == Bytecode::Op::Push) {
+ last.op = op;
+ last.args = num_args;
+ return;
+ }
+ }
+
+ // otherwise just add it to the end
+ tmpl.bytecodes.emplace_back(op, num_args);
+ }
+
+ void append_callback(Template& tmpl, nonstd::string_view name, unsigned int num_args) {
+ // we can merge with back-to-back push value (not lookup)
+ if (!tmpl.bytecodes.empty()) {
+ Bytecode& last = tmpl.bytecodes.back();
+ if (last.op == Bytecode::Op::Push &&
+ (last.flags & Bytecode::Flag::ValueMask) == Bytecode::Flag::ValueImmediate) {
+ last.op = Bytecode::Op::Callback;
+ last.args = num_args;
+ last.str = static_cast<std::string>(name);
+ return;
+ }
+ }
+
+ // otherwise just add it to the end
+ tmpl.bytecodes.emplace_back(Bytecode::Op::Callback, num_args);
+ tmpl.bytecodes.back().str = static_cast<std::string>(name);
+ }
+
+ void parse_into(Template& tmpl, nonstd::string_view path) {
+ m_lexer.start(tmpl.content);
+
+ for (;;) {
+ get_next_token();
+ switch (m_tok.kind) {
+ case Token::Kind::Eof:
+ if (!m_if_stack.empty()) inja_throw("parser_error", "unmatched if");
+ if (!m_loop_stack.empty()) inja_throw("parser_error", "unmatched for");
+ return;
+ case Token::Kind::Text:
+ tmpl.bytecodes.emplace_back(Bytecode::Op::PrintText, m_tok.text, 0u);
+ break;
+ case Token::Kind::StatementOpen:
+ get_next_token();
+ if (!parse_statement(tmpl, path)) {
+ inja_throw("parser_error", "expected statement, got '" + m_tok.describe() + "'");
+ }
+ if (m_tok.kind != Token::Kind::StatementClose) {
+ inja_throw("parser_error", "expected statement close, got '" + m_tok.describe() + "'");
+ }
+ break;
+ case Token::Kind::LineStatementOpen:
+ get_next_token();
+ parse_statement(tmpl, path);
+ if (m_tok.kind != Token::Kind::LineStatementClose &&
+ m_tok.kind != Token::Kind::Eof) {
+ inja_throw("parser_error", "expected line statement close, got '" + m_tok.describe() + "'");
+ }
+ break;
+ case Token::Kind::ExpressionOpen:
+ get_next_token();
+ if (!parse_expression(tmpl)) {
+ inja_throw("parser_error", "expected expression, got '" + m_tok.describe() + "'");
+ }
+ append_function(tmpl, Bytecode::Op::PrintValue, 1);
+ if (m_tok.kind != Token::Kind::ExpressionClose) {
+ inja_throw("parser_error", "expected expression close, got '" + m_tok.describe() + "'");
+ }
+ break;
+ case Token::Kind::CommentOpen:
+ get_next_token();
+ if (m_tok.kind != Token::Kind::CommentClose) {
+ inja_throw("parser_error", "expected comment close, got '" + m_tok.describe() + "'");
+ }
+ break;
+ default:
+ inja_throw("parser_error", "unexpected token '" + m_tok.describe() + "'");
+ break;
+ }
+ }
+ }
+
+ Template parse(nonstd::string_view input, nonstd::string_view path) {
+ Template result;
+ result.content = static_cast<std::string>(input);
+ parse_into(result, path);
+ return result;
+ }
+
+ Template parse(nonstd::string_view input) {
+ return parse(input, "./");
+ }
+
+ Template parse_template(nonstd::string_view filename) {
+ Template result;
+ result.content = load_file(filename);
+
+ nonstd::string_view path = filename.substr(0, filename.find_last_of("/\\") + 1);
+ // StringRef path = sys::path::parent_path(filename);
+ Parser(m_config, m_lexer.get_config(), m_included_templates).parse_into(result, path);
+ return result;
+ }
+
+ std::string load_file(nonstd::string_view filename) {
+ std::ifstream file = open_file_or_throw(static_cast<std::string>(filename));
+ std::string text((std::istreambuf_iterator<char>(file)), std::istreambuf_iterator<char>());
+ return text;
+ }
+
+ private:
+ const ParserConfig& m_config;
+ Lexer m_lexer;
+ Token m_tok;
+ Token m_peek_tok;
+ bool m_have_peek_tok {false};
+ TemplateStorage& m_included_templates;
+ const ParserStatic& m_static;
+
+ struct IfData {
+ unsigned int prev_cond_jump;
+ std::vector<unsigned int> uncond_jumps;
+
+ explicit IfData(unsigned int condJump): prev_cond_jump(condJump) {}
+ };
+
+ std::vector<IfData> m_if_stack;
+ std::vector<unsigned int> m_loop_stack;
+
+ void get_next_token() {
+ if (m_have_peek_tok) {
+ m_tok = m_peek_tok;
+ m_have_peek_tok = false;
+ } else {
+ m_tok = m_lexer.scan();
+ }
+ }
+
+ void get_peek_token() {
+ if (!m_have_peek_tok) {
+ m_peek_tok = m_lexer.scan();
+ m_have_peek_tok = true;
+ }
+ }
+};
+
+} // namespace inja
+
+#endif // PANTOR_INJA_PARSER_HPP
+
+// #include "polyfill.hpp"
+#ifndef PANTOR_INJA_POLYFILL_HPP
+#define PANTOR_INJA_POLYFILL_HPP
+
+
+#if __cplusplus < 201402L
+
+#include <cstddef>
+#include <memory>
+#include <type_traits>
+#include <utility>
+
+
+namespace stdinja {
+ template<class T> struct _Unique_if {
+ typedef std::unique_ptr<T> _Single_object;
+ };
+
+ template<class T> struct _Unique_if<T[]> {
+ typedef std::unique_ptr<T[]> _Unknown_bound;
+ };
+
+ template<class T, size_t N> struct _Unique_if<T[N]> {
+ typedef void _Known_bound;
+ };
+
+ template<class T, class... Args>
+ typename _Unique_if<T>::_Single_object
+ make_unique(Args&&... args) {
+ return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
+ }
+
+ template<class T>
+ typename _Unique_if<T>::_Unknown_bound
+ make_unique(size_t n) {
+ typedef typename std::remove_extent<T>::type U;
+ return std::unique_ptr<T>(new U[n]());
+ }
+
+ template<class T, class... Args>
+ typename _Unique_if<T>::_Known_bound
+ make_unique(Args&&...) = delete;
+}
+
+#else
+
+namespace stdinja = std;
+
+#endif // memory */
+
+
+#endif // PANTOR_INJA_POLYFILL_HPP
+
+// #include "renderer.hpp"
+#ifndef PANTOR_INJA_RENDERER_HPP
+#define PANTOR_INJA_RENDERER_HPP
+
+#include <algorithm>
+#include <numeric>
+#include <string>
+#include <utility>
+#include <vector>
+
+#include <nlohmann/json.hpp>
+
+// #include "bytecode.hpp"
+
+// #include "template.hpp"
+
+// #include "utils.hpp"
+
+
+
+namespace inja {
+
+inline nonstd::string_view convert_dot_to_json_pointer(nonstd::string_view dot, std::string& out) {
+ out.clear();
+ do {
+ nonstd::string_view part;
+ std::tie(part, dot) = string_view::split(dot, '.');
+ out.push_back('/');
+ out.append(part.begin(), part.end());
+ } while (!dot.empty());
+ return nonstd::string_view(out.data(), out.size());
+}
+
+/*!
+ * \brief Class for rendering a Template with data.
+ */
+class Renderer {
+ std::vector<const json*>& get_args(const Bytecode& bc) {
+ m_tmp_args.clear();
+
+ bool has_imm = ((bc.flags & Bytecode::Flag::ValueMask) != Bytecode::Flag::ValuePop);
+
+ // get args from stack
+ unsigned int pop_args = bc.args;
+ if (has_imm) {
+ pop_args -= 1;
+ }
+
+ for (auto i = std::prev(m_stack.end(), pop_args); i != m_stack.end(); i++) {
+ m_tmp_args.push_back(&(*i));
+ }
+
+ // get immediate arg
+ if (has_imm) {
+ m_tmp_args.push_back(get_imm(bc));
+ }
+
+ return m_tmp_args;
+ }
+
+ void pop_args(const Bytecode& bc) {
+ unsigned int popArgs = bc.args;
+ if ((bc.flags & Bytecode::Flag::ValueMask) != Bytecode::Flag::ValuePop) {
+ popArgs -= 1;
+ }
+ for (unsigned int i = 0; i < popArgs; ++i) {
+ m_stack.pop_back();
+ }
+ }
+
+ const json* get_imm(const Bytecode& bc) {
+ std::string ptr_buffer;
+ nonstd::string_view ptr;
+ switch (bc.flags & Bytecode::Flag::ValueMask) {
+ case Bytecode::Flag::ValuePop:
+ return nullptr;
+ case Bytecode::Flag::ValueImmediate:
+ return &bc.value;
+ case Bytecode::Flag::ValueLookupDot:
+ ptr = convert_dot_to_json_pointer(bc.str, ptr_buffer);
+ break;
+ case Bytecode::Flag::ValueLookupPointer:
+ ptr_buffer += '/';
+ ptr_buffer += bc.str;
+ ptr = ptr_buffer;
+ break;
+ }
+ try {
+ return &m_data->at(json::json_pointer(ptr.data()));
+ } catch (std::exception&) {
+ // try to evaluate as a no-argument callback
+ if (auto callback = m_callbacks.find_callback(bc.str, 0)) {
+ std::vector<const json*> arguments {};
+ m_tmp_val = callback(arguments);
+ return &m_tmp_val;
+ }
+ inja_throw("render_error", "variable '" + static_cast<std::string>(bc.str) + "' not found");
+ return nullptr;
+ }
+ }
+
+ bool truthy(const json& var) const {
+ if (var.empty()) {
+ return false;
+ } else if (var.is_number()) {
+ return (var != 0);
+ } else if (var.is_string()) {
+ return !var.empty();
+ }
+
+ try {
+ return var.get<bool>();
+ } catch (json::type_error& e) {
+ inja_throw("json_error", e.what());
+ throw;
+ }
+ }
+
+ void update_loop_data() {
+ LoopLevel& level = m_loop_stack.back();
+
+ if (level.loop_type == LoopLevel::Type::Array) {
+ level.data[static_cast<std::string>(level.value_name)] = level.values.at(level.index); // *level.it;
+ auto& loopData = level.data["loop"];
+ loopData["index"] = level.index;
+ loopData["index1"] = level.index + 1;
+ loopData["is_first"] = (level.index == 0);
+ loopData["is_last"] = (level.index == level.size - 1);
+ } else {
+ level.data[static_cast<std::string>(level.key_name)] = level.map_it->first;
+ level.data[static_cast<std::string>(level.value_name)] = *level.map_it->second;
+ }
+ }
+
+ const TemplateStorage& m_included_templates;
+ const FunctionStorage& m_callbacks;
+
+ std::vector<json> m_stack;
+
+
+ struct LoopLevel {
+ enum class Type { Map, Array };
+
+ Type loop_type;
+ nonstd::string_view key_name; // variable name for keys
+ nonstd::string_view value_name; // variable name for values
+ json data; // data with loop info added
+
+ json values; // values to iterate over
+
+ // loop over list
+ size_t index; // current list index
+ size_t size; // length of list
+
+ // loop over map
+ using KeyValue = std::pair<nonstd::string_view, json*>;
+ using MapValues = std::vector<KeyValue>;
+ MapValues map_values; // values to iterate over
+ MapValues::iterator map_it; // iterator over values
+
+ };
+
+ std::vector<LoopLevel> m_loop_stack;
+ const json* m_data;
+
+ std::vector<const json*> m_tmp_args;
+ json m_tmp_val;
+
+
+ public:
+ Renderer(const TemplateStorage& included_templates, const FunctionStorage& callbacks): m_included_templates(included_templates), m_callbacks(callbacks) {
+ m_stack.reserve(16);
+ m_tmp_args.reserve(4);
+ m_loop_stack.reserve(16);
+ }
+
+ void render_to(std::ostream& os, const Template& tmpl, const json& data) {
+ m_data = &data;
+
+ for (size_t i = 0; i < tmpl.bytecodes.size(); ++i) {
+ const auto& bc = tmpl.bytecodes[i];
+
+ switch (bc.op) {
+ case Bytecode::Op::Nop: {
+ break;
+ }
+ case Bytecode::Op::PrintText: {
+ os << bc.str;
+ break;
+ }
+ case Bytecode::Op::PrintValue: {
+ const json& val = *get_args(bc)[0];
+ if (val.is_string()) {
+ os << val.get_ref<const std::string&>();
+ } else {
+ os << val.dump();
+ }
+ pop_args(bc);
+ break;
+ }
+ case Bytecode::Op::Push: {
+ m_stack.emplace_back(*get_imm(bc));
+ break;
+ }
+ case Bytecode::Op::Upper: {
+ auto result = get_args(bc)[0]->get<std::string>();
+ std::transform(result.begin(), result.end(), result.begin(), ::toupper);
+ pop_args(bc);
+ m_stack.emplace_back(std::move(result));
+ break;
+ }
+ case Bytecode::Op::Lower: {
+ auto result = get_args(bc)[0]->get<std::string>();
+ std::transform(result.begin(), result.end(), result.begin(), ::tolower);
+ pop_args(bc);
+ m_stack.emplace_back(std::move(result));
+ break;
+ }
+ case Bytecode::Op::Range: {
+ int number = get_args(bc)[0]->get<int>();
+ std::vector<int> result(number);
+ std::iota(std::begin(result), std::end(result), 0);
+ pop_args(bc);
+ m_stack.emplace_back(std::move(result));
+ break;
+ }
+ case Bytecode::Op::Length: {
+ const json& val = *get_args(bc)[0];
+
+ int result;
+ if (val.is_string()) {
+ result = val.get_ref<const std::string&>().length();
+ } else {
+ result = val.size();
+ }
+
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::Sort: {
+ auto result = get_args(bc)[0]->get<std::vector<json>>();
+ std::sort(result.begin(), result.end());
+ pop_args(bc);
+ m_stack.emplace_back(std::move(result));
+ break;
+ }
+ case Bytecode::Op::At: {
+ auto args = get_args(bc);
+ auto result = args[0]->at(args[1]->get<int>());
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::First: {
+ auto result = get_args(bc)[0]->front();
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::Last: {
+ auto result = get_args(bc)[0]->back();
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::Round: {
+ auto args = get_args(bc);
+ double number = args[0]->get<double>();
+ int precision = args[1]->get<int>();
+ pop_args(bc);
+ m_stack.emplace_back(std::round(number * std::pow(10.0, precision)) / std::pow(10.0, precision));
+ break;
+ }
+ case Bytecode::Op::DivisibleBy: {
+ auto args = get_args(bc);
+ int number = args[0]->get<int>();
+ int divisor = args[1]->get<int>();
+ pop_args(bc);
+ m_stack.emplace_back((divisor != 0) && (number % divisor == 0));
+ break;
+ }
+ case Bytecode::Op::Odd: {
+ int number = get_args(bc)[0]->get<int>();
+ pop_args(bc);
+ m_stack.emplace_back(number % 2 != 0);
+ break;
+ }
+ case Bytecode::Op::Even: {
+ int number = get_args(bc)[0]->get<int>();
+ pop_args(bc);
+ m_stack.emplace_back(number % 2 == 0);
+ break;
+ }
+ case Bytecode::Op::Max: {
+ auto args = get_args(bc);
+ auto result = *std::max_element(args[0]->begin(), args[0]->end());
+ pop_args(bc);
+ m_stack.emplace_back(std::move(result));
+ break;
+ }
+ case Bytecode::Op::Min: {
+ auto args = get_args(bc);
+ auto result = *std::min_element(args[0]->begin(), args[0]->end());
+ pop_args(bc);
+ m_stack.emplace_back(std::move(result));
+ break;
+ }
+ case Bytecode::Op::Not: {
+ bool result = !truthy(*get_args(bc)[0]);
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::And: {
+ auto args = get_args(bc);
+ bool result = truthy(*args[0]) && truthy(*args[1]);
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::Or: {
+ auto args = get_args(bc);
+ bool result = truthy(*args[0]) || truthy(*args[1]);
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::In: {
+ auto args = get_args(bc);
+ bool result = std::find(args[1]->begin(), args[1]->end(), *args[0]) !=
+ args[1]->end();
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::Equal: {
+ auto args = get_args(bc);
+ bool result = (*args[0] == *args[1]);
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::Greater: {
+ auto args = get_args(bc);
+ bool result = (*args[0] > *args[1]);
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::Less: {
+ auto args = get_args(bc);
+ bool result = (*args[0] < *args[1]);
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::GreaterEqual: {
+ auto args = get_args(bc);
+ bool result = (*args[0] >= *args[1]);
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::LessEqual: {
+ auto args = get_args(bc);
+ bool result = (*args[0] <= *args[1]);
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::Different: {
+ auto args = get_args(bc);
+ bool result = (*args[0] != *args[1]);
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::Float: {
+ double result =
+ std::stod(get_args(bc)[0]->get_ref<const std::string&>());
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::Int: {
+ int result = std::stoi(get_args(bc)[0]->get_ref<const std::string&>());
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::Exists: {
+ auto&& name = get_args(bc)[0]->get_ref<const std::string&>();
+ bool result = (data.find(name) != data.end());
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::ExistsInObject: {
+ auto args = get_args(bc);
+ auto&& name = args[1]->get_ref<const std::string&>();
+ bool result = (args[0]->find(name) != args[0]->end());
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::IsBoolean: {
+ bool result = get_args(bc)[0]->is_boolean();
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::IsNumber: {
+ bool result = get_args(bc)[0]->is_number();
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::IsInteger: {
+ bool result = get_args(bc)[0]->is_number_integer();
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::IsFloat: {
+ bool result = get_args(bc)[0]->is_number_float();
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::IsObject: {
+ bool result = get_args(bc)[0]->is_object();
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::IsArray: {
+ bool result = get_args(bc)[0]->is_array();
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::IsString: {
+ bool result = get_args(bc)[0]->is_string();
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::Default: {
+ // default needs to be a bit "magic"; we can't evaluate the first
+ // argument during the push operation, so we swap the arguments during
+ // the parse phase so the second argument is pushed on the stack and
+ // the first argument is in the immediate
+ try {
+ const json* imm = get_imm(bc);
+ // if no exception was raised, replace the stack value with it
+ m_stack.back() = *imm;
+ } catch (std::exception&) {
+ // couldn't read immediate, just leave the stack as is
+ }
+ break;
+ }
+ case Bytecode::Op::Include:
+ Renderer(m_included_templates, m_callbacks).render_to(os, m_included_templates.find(get_imm(bc)->get_ref<const std::string&>())->second, *m_data);
+ break;
+ case Bytecode::Op::Callback: {
+ auto callback = m_callbacks.find_callback(bc.str, bc.args);
+ if (!callback) {
+ inja_throw("render_error", "function '" + static_cast<std::string>(bc.str) + "' (" + std::to_string(static_cast<unsigned int>(bc.args)) + ") not found");
+ }
+ json result = callback(get_args(bc));
+ pop_args(bc);
+ m_stack.emplace_back(std::move(result));
+ break;
+ }
+ case Bytecode::Op::Jump: {
+ i = bc.args - 1; // -1 due to ++i in loop
+ break;
+ }
+ case Bytecode::Op::ConditionalJump: {
+ if (!truthy(m_stack.back())) {
+ i = bc.args - 1; // -1 due to ++i in loop
+ }
+ m_stack.pop_back();
+ break;
+ }
+ case Bytecode::Op::StartLoop: {
+ // jump past loop body if empty
+ if (m_stack.back().empty()) {
+ m_stack.pop_back();
+ i = bc.args; // ++i in loop will take it past EndLoop
+ break;
+ }
+
+ m_loop_stack.emplace_back();
+ LoopLevel& level = m_loop_stack.back();
+ level.value_name = bc.str;
+ level.values = std::move(m_stack.back());
+ level.data = (*m_data);
+ m_stack.pop_back();
+
+ if (bc.value.is_string()) {
+ // map iterator
+ if (!level.values.is_object()) {
+ m_loop_stack.pop_back();
+ inja_throw("render_error", "for key, value requires object");
+ }
+ level.loop_type = LoopLevel::Type::Map;
+ level.key_name = bc.value.get_ref<const std::string&>();
+
+ // sort by key
+ for (auto it = level.values.begin(), end = level.values.end(); it != end; ++it) {
+ level.map_values.emplace_back(it.key(), &it.value());
+ }
+ std::sort(level.map_values.begin(), level.map_values.end(), [](const LoopLevel::KeyValue& a, const LoopLevel::KeyValue& b) { return a.first < b.first; });
+ level.map_it = level.map_values.begin();
+ } else {
+ if (!level.values.is_array()) {
+ m_loop_stack.pop_back();
+ inja_throw("render_error", "type must be array");
+ }
+
+ // list iterator
+ level.loop_type = LoopLevel::Type::Array;
+ level.index = 0;
+ level.size = level.values.size();
+ }
+
+ // provide parent access in nested loop
+ auto parent_loop_it = level.data.find("loop");
+ if (parent_loop_it != level.data.end()) {
+ json loop_copy = *parent_loop_it;
+ (*parent_loop_it)["parent"] = std::move(loop_copy);
+ }
+
+ // set "current" data to loop data
+ m_data = &level.data;
+ update_loop_data();
+ break;
+ }
+ case Bytecode::Op::EndLoop: {
+ if (m_loop_stack.empty()) {
+ inja_throw("render_error", "unexpected state in renderer");
+ }
+ LoopLevel& level = m_loop_stack.back();
+
+ bool done;
+ if (level.loop_type == LoopLevel::Type::Array) {
+ level.index += 1;
+ done = (level.index == level.values.size());
+ } else {
+ level.map_it += 1;
+ done = (level.map_it == level.map_values.end());
+ }
+
+ if (done) {
+ m_loop_stack.pop_back();
+ // set "current" data to outer loop data or main data as appropriate
+ if (!m_loop_stack.empty()) {
+ m_data = &m_loop_stack.back().data;
+ } else {
+ m_data = &data;
+ }
+ break;
+ }
+
+ update_loop_data();
+
+ // jump back to start of loop
+ i = bc.args - 1; // -1 due to ++i in loop
+ break;
+ }
+ default: {
+ inja_throw("render_error", "unknown op in renderer: " + std::to_string(static_cast<unsigned int>(bc.op)));
+ }
+ }
+ }
+ }
+};
+
+} // namespace inja
+
+#endif // PANTOR_INJA_RENDERER_HPP
+
+// #include "string_view.hpp"
+
+// #include "template.hpp"
+
+// #include "utils.hpp"
+
+
+
+namespace inja {
+
+using namespace nlohmann;
+
+/*!
+ * \brief Class for changing the configuration.
+ */
+class Environment {
+ class Impl {
+ public:
+ std::string input_path;
+ std::string output_path;
+
+ LexerConfig lexer_config;
+ ParserConfig parser_config;
+
+ FunctionStorage callbacks;
+ TemplateStorage included_templates;
+ };
+
+ std::unique_ptr<Impl> m_impl;
+
+ public:
+ Environment(): Environment("") { }
+
+ explicit Environment(const std::string& global_path): m_impl(stdinja::make_unique<Impl>()) {
+ m_impl->input_path = global_path;
+ m_impl->output_path = global_path;
+ }
+
+ explicit Environment(const std::string& input_path, const std::string& output_path): m_impl(stdinja::make_unique<Impl>()) {
+ m_impl->input_path = input_path;
+ m_impl->output_path = output_path;
+ }
+
+ /// Sets the opener and closer for template statements
+ void set_statement(const std::string& open, const std::string& close) {
+ m_impl->lexer_config.statement_open = open;
+ m_impl->lexer_config.statement_close = close;
+ m_impl->lexer_config.update_open_chars();
+ }
+
+ /// Sets the opener for template line statements
+ void set_line_statement(const std::string& open) {
+ m_impl->lexer_config.line_statement = open;
+ m_impl->lexer_config.update_open_chars();
+ }
+
+ /// Sets the opener and closer for template expressions
+ void set_expression(const std::string& open, const std::string& close) {
+ m_impl->lexer_config.expression_open = open;
+ m_impl->lexer_config.expression_close = close;
+ m_impl->lexer_config.update_open_chars();
+ }
+
+ /// Sets the opener and closer for template comments
+ void set_comment(const std::string& open, const std::string& close) {
+ m_impl->lexer_config.comment_open = open;
+ m_impl->lexer_config.comment_close = close;
+ m_impl->lexer_config.update_open_chars();
+ }
+
+ /// Sets whether to remove the first newline after a block
+ void set_trim_blocks(bool trim_blocks) {
+ m_impl->lexer_config.trim_blocks = trim_blocks;
+ }
+
+ /// Sets whether to strip the spaces and tabs from the start of a line to a block
+ void set_lstrip_blocks(bool lstrip_blocks) {
+ m_impl->lexer_config.lstrip_blocks = lstrip_blocks;
+ }
+
+ /// Sets the element notation syntax
+ void set_element_notation(ElementNotation notation) {
+ m_impl->parser_config.notation = notation;
+ }
+
+
+ Template parse(nonstd::string_view input) {
+ Parser parser(m_impl->parser_config, m_impl->lexer_config, m_impl->included_templates);
+ return parser.parse(input);
+ }
+
+ Template parse_template(const std::string& filename) {
+ Parser parser(m_impl->parser_config, m_impl->lexer_config, m_impl->included_templates);
+ return parser.parse_template(m_impl->input_path + static_cast<std::string>(filename));
+ }
+
+ std::string render(nonstd::string_view input, const json& data) {
+ return render(parse(input), data);
+ }
+
+ std::string render(const Template& tmpl, const json& data) {
+ std::stringstream os;
+ render_to(os, tmpl, data);
+ return os.str();
+ }
+
+ std::string render_file(const std::string& filename, const json& data) {
+ return render(parse_template(filename), data);
+ }
+
+ std::string render_file_with_json_file(const std::string& filename, const std::string& filename_data) {
+ const json data = load_json(filename_data);
+ return render_file(filename, data);
+ }
+
+ void write(const std::string& filename, const json& data, const std::string& filename_out) {
+ std::ofstream file(m_impl->output_path + filename_out);
+ file << render_file(filename, data);
+ file.close();
+ }
+
+ void write(const Template& temp, const json& data, const std::string& filename_out) {
+ std::ofstream file(m_impl->output_path + filename_out);
+ file << render(temp, data);
+ file.close();
+ }
+
+ void write_with_json_file(const std::string& filename, const std::string& filename_data, const std::string& filename_out) {
+ const json data = load_json(filename_data);
+ write(filename, data, filename_out);
+ }
+
+ void write_with_json_file(const Template& temp, const std::string& filename_data, const std::string& filename_out) {
+ const json data = load_json(filename_data);
+ write(temp, data, filename_out);
+ }
+
+ std::ostream& render_to(std::ostream& os, const Template& tmpl, const json& data) {
+ Renderer(m_impl->included_templates, m_impl->callbacks).render_to(os, tmpl, data);
+ return os;
+ }
+
+ std::string load_file(const std::string& filename) {
+ Parser parser(m_impl->parser_config, m_impl->lexer_config, m_impl->included_templates);
+ return parser.load_file(m_impl->input_path + filename);
+ }
+
+ json load_json(const std::string& filename) {
+ std::ifstream file = open_file_or_throw(m_impl->input_path + filename);
+ json j;
+ file >> j;
+ return j;
+ }
+
+ void add_callback(const std::string& name, unsigned int numArgs, const CallbackFunction& callback) {
+ m_impl->callbacks.add_callback(name, numArgs, callback);
+ }
+
+ /** Includes a template with a given name into the environment.
+ * Then, a template can be rendered in another template using the
+ * include "<name>" syntax.
+ */
+ void include_template(const std::string& name, const Template& tmpl) {
+ m_impl->included_templates[name] = tmpl;
+ }
+};
+
+/*!
+@brief render with default settings to a string
+*/
+inline std::string render(nonstd::string_view input, const json& data) {
+ return Environment().render(input, data);
+}
+
+/*!
+@brief render with default settings to the given output stream
+*/
+inline void render_to(std::ostream& os, nonstd::string_view input, const json& data) {
+ Environment env;
+ env.render_to(os, env.parse(input), data);
+}
+
+}
+
+#endif // PANTOR_INJA_ENVIRONMENT_HPP
+
+// #include "string_view.hpp"
+
+// #include "template.hpp"
+
+// #include "parser.hpp"
+
+// #include "renderer.hpp"
+
+
+
+#endif // PANTOR_INJA_HPP
diff --git a/tools/jsonproc/jsonproc.cpp b/tools/jsonproc/jsonproc.cpp
new file mode 100644
index 00000000..f70c9131
--- /dev/null
+++ b/tools/jsonproc/jsonproc.cpp
@@ -0,0 +1,116 @@
+// jsonproc.cpp
+
+#include "jsonproc.h"
+
+#include <map>
+
+#include <string>
+using std::string; using std::to_string;
+
+#include <inja.hpp>
+using namespace inja;
+using json = nlohmann::json;
+
+std::map<string, string> customVars;
+
+void set_custom_var(string key, string value)
+{
+ customVars[key] = value;
+}
+
+string get_custom_var(string key)
+{
+ return customVars[key];
+}
+
+int main(int argc, char *argv[])
+{
+ if (argc != 4)
+ FATAL_ERROR("USAGE: jsonproc <json-filepath> <template-filepath> <output-filepath>\n");
+
+ string jsonfilepath = argv[1];
+ string templateFilepath = argv[2];
+ string outputFilepath = argv[3];
+
+ Environment env;
+
+ // Add custom command callbacks.
+ env.add_callback("doNotModifyHeader", 0, [jsonfilepath, templateFilepath](Arguments& args) {
+ return "//\n// DO NOT MODIFY THIS FILE! It is auto-generated from " + jsonfilepath +" and Inja template " + templateFilepath + "\n//\n";
+ });
+
+ env.add_callback("contains", 2, [](Arguments& args) {
+ string word = args.at(0)->get<string>();
+ string check = args.at(1)->get<string>();
+
+ return word.find(check) != std::string::npos;
+ });
+
+ env.add_callback("subtract", 2, [](Arguments& args) {
+ int minuend = args.at(0)->get<int>();
+ int subtrahend = args.at(1)->get<int>();
+
+ return minuend - subtrahend;
+ });
+
+ env.add_callback("setVar", 2, [=](Arguments& args) {
+ string key = args.at(0)->get<string>();
+ string value = args.at(1)->get<string>();
+ set_custom_var(key, value);
+ return "";
+ });
+
+ env.add_callback("setVarInt", 2, [=](Arguments& args) {
+ string key = args.at(0)->get<string>();
+ string value = to_string(args.at(1)->get<int>());
+ set_custom_var(key, value);
+ return "";
+ });
+
+ env.add_callback("getVar", 1, [=](Arguments& args) {
+ string key = args.at(0)->get<string>();
+ return get_custom_var(key);
+ });
+
+ env.add_callback("concat", 2, [](Arguments& args) {
+ string first = args.at(0)->get<string>();
+ string second = args.at(1)->get<string>();
+ return first + second;
+ });
+
+ env.add_callback("removePrefix", 2, [](Arguments& args) {
+ string rawValue = args.at(0)->get<string>();
+ string prefix = args.at(1)->get<string>();
+ string::size_type i = rawValue.find(prefix);
+ if (i != 0)
+ return rawValue;
+
+ return rawValue.erase(0, prefix.length());
+ });
+
+ env.add_callback("removeSuffix", 2, [](Arguments& args) {
+ string rawValue = args.at(0)->get<string>();
+ string suffix = args.at(1)->get<string>();
+ string::size_type i = rawValue.rfind(suffix);
+ if (i == string::npos)
+ return rawValue;
+
+ return rawValue.substr(0, i);
+ });
+
+ // single argument is a json object
+ env.add_callback("isEmpty", 1, [](Arguments& args) {
+ return args.at(0)->empty();
+ });
+
+ try
+ {
+ env.write_with_json_file(templateFilepath, jsonfilepath, outputFilepath);
+ }
+ catch (const std::exception& e)
+ {
+ FATAL_ERROR("JSONPROC_ERROR: %s\n", e.what());
+ }
+
+ return 0;
+}
diff --git a/tools/jsonproc/jsonproc.h b/tools/jsonproc/jsonproc.h
new file mode 100644
index 00000000..575fb375
--- /dev/null
+++ b/tools/jsonproc/jsonproc.h
@@ -0,0 +1,32 @@
+// jsonproc.h
+
+#ifndef JSONPROC_H
+#define JSONPROC_H
+
+#include <cstdlib>
+#include <cstdio>
+using std::fprintf; using std::exit;
+
+#include <cstdlib>
+
+#ifdef _MSC_VER
+
+#define FATAL_ERROR(format, ...) \
+do \
+{ \
+ fprintf(stderr, format, __VA_ARGS__); \
+ exit(1); \
+} while (0)
+
+#else
+
+#define FATAL_ERROR(format, ...) \
+do \
+{ \
+ fprintf(stderr, format, ##__VA_ARGS__); \
+ exit(1); \
+} while (0)
+
+#endif // _MSC_VER
+
+#endif // JSONPROC_H
diff --git a/tools/jsonproc/nlohmann/json.hpp b/tools/jsonproc/nlohmann/json.hpp
new file mode 100644
index 00000000..5003a4fa
--- /dev/null
+++ b/tools/jsonproc/nlohmann/json.hpp
@@ -0,0 +1,20842 @@
+/*
+ __ _____ _____ _____
+ __| | __| | | | JSON for Modern C++
+| | |__ | | | | | | version 3.6.1
+|_____|_____|_____|_|___| https://github.com/nlohmann/json
+
+Licensed under the MIT License <http://opensource.org/licenses/MIT>.
+SPDX-License-Identifier: MIT
+Copyright (c) 2013-2019 Niels Lohmann <http://nlohmann.me>.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+*/
+
+#ifndef INCLUDE_NLOHMANN_JSON_HPP_
+#define INCLUDE_NLOHMANN_JSON_HPP_
+
+#define NLOHMANN_JSON_VERSION_MAJOR 3
+#define NLOHMANN_JSON_VERSION_MINOR 6
+#define NLOHMANN_JSON_VERSION_PATCH 1
+
+#include <algorithm> // all_of, find, for_each
+#include <cassert> // assert
+#include <ciso646> // and, not, or
+#include <cstddef> // nullptr_t, ptrdiff_t, size_t
+#include <functional> // hash, less
+#include <initializer_list> // initializer_list
+#include <iosfwd> // istream, ostream
+#include <iterator> // random_access_iterator_tag
+#include <memory> // unique_ptr
+#include <numeric> // accumulate
+#include <string> // string, stoi, to_string
+#include <utility> // declval, forward, move, pair, swap
+#include <vector> // vector
+
+// #include <nlohmann/adl_serializer.hpp>
+
+
+#include <utility>
+
+// #include <nlohmann/detail/conversions/from_json.hpp>
+
+
+#include <algorithm> // transform
+#include <array> // array
+#include <ciso646> // and, not
+#include <forward_list> // forward_list
+#include <iterator> // inserter, front_inserter, end
+#include <map> // map
+#include <string> // string
+#include <tuple> // tuple, make_tuple
+#include <type_traits> // is_arithmetic, is_same, is_enum, underlying_type, is_convertible
+#include <unordered_map> // unordered_map
+#include <utility> // pair, declval
+#include <valarray> // valarray
+
+// #include <nlohmann/detail/exceptions.hpp>
+
+
+#include <exception> // exception
+#include <stdexcept> // runtime_error
+#include <string> // to_string
+
+// #include <nlohmann/detail/input/position_t.hpp>
+
+
+#include <cstddef> // size_t
+
+namespace nlohmann
+{
+namespace detail
+{
+/// struct to capture the start position of the current token
+struct position_t
+{
+ /// the total number of characters read
+ std::size_t chars_read_total = 0;
+ /// the number of characters read in the current line
+ std::size_t chars_read_current_line = 0;
+ /// the number of lines read
+ std::size_t lines_read = 0;
+
+ /// conversion to size_t to preserve SAX interface
+ constexpr operator size_t() const
+ {
+ return chars_read_total;
+ }
+};
+
+} // namespace detail
+} // namespace nlohmann
+
+
+namespace nlohmann
+{
+namespace detail
+{
+////////////////
+// exceptions //
+////////////////
+
+/*!
+@brief general exception of the @ref basic_json class
+
+This class is an extension of `std::exception` objects with a member @a id for
+exception ids. It is used as the base class for all exceptions thrown by the
+@ref basic_json class. This class can hence be used as "wildcard" to catch
+exceptions.
+
+Subclasses:
+- @ref parse_error for exceptions indicating a parse error
+- @ref invalid_iterator for exceptions indicating errors with iterators
+- @ref type_error for exceptions indicating executing a member function with
+ a wrong type
+- @ref out_of_range for exceptions indicating access out of the defined range
+- @ref other_error for exceptions indicating other library errors
+
+@internal
+@note To have nothrow-copy-constructible exceptions, we internally use
+ `std::runtime_error` which can cope with arbitrary-length error messages.
+ Intermediate strings are built with static functions and then passed to
+ the actual constructor.
+@endinternal
+
+@liveexample{The following code shows how arbitrary library exceptions can be
+caught.,exception}
+
+@since version 3.0.0
+*/
+class exception : public std::exception
+{
+ public:
+ /// returns the explanatory string
+ const char* what() const noexcept override
+ {
+ return m.what();
+ }
+
+ /// the id of the exception
+ const int id;
+
+ protected:
+ exception(int id_, const char* what_arg) : id(id_), m(what_arg) {}
+
+ static std::string name(const std::string& ename, int id_)
+ {
+ return "[json.exception." + ename + "." + std::to_string(id_) + "] ";
+ }
+
+ private:
+ /// an exception object as storage for error messages
+ std::runtime_error m;
+};
+
+/*!
+@brief exception indicating a parse error
+
+This exception is thrown by the library when a parse error occurs. Parse errors
+can occur during the deserialization of JSON text, CBOR, MessagePack, as well
+as when using JSON Patch.
+
+Member @a byte holds the byte index of the last read character in the input
+file.
+
+Exceptions have ids 1xx.
+
+name / id | example message | description
+------------------------------ | --------------- | -------------------------
+json.exception.parse_error.101 | parse error at 2: unexpected end of input; expected string literal | This error indicates a syntax error while deserializing a JSON text. The error message describes that an unexpected token (character) was encountered, and the member @a byte indicates the error position.
+json.exception.parse_error.102 | parse error at 14: missing or wrong low surrogate | JSON uses the `\uxxxx` format to describe Unicode characters. Code points above above 0xFFFF are split into two `\uxxxx` entries ("surrogate pairs"). This error indicates that the surrogate pair is incomplete or contains an invalid code point.
+json.exception.parse_error.103 | parse error: code points above 0x10FFFF are invalid | Unicode supports code points up to 0x10FFFF. Code points above 0x10FFFF are invalid.
+json.exception.parse_error.104 | parse error: JSON patch must be an array of objects | [RFC 6902](https://tools.ietf.org/html/rfc6902) requires a JSON Patch document to be a JSON document that represents an array of objects.
+json.exception.parse_error.105 | parse error: operation must have string member 'op' | An operation of a JSON Patch document must contain exactly one "op" member, whose value indicates the operation to perform. Its value must be one of "add", "remove", "replace", "move", "copy", or "test"; other values are errors.
+json.exception.parse_error.106 | parse error: array index '01' must not begin with '0' | An array index in a JSON Pointer ([RFC 6901](https://tools.ietf.org/html/rfc6901)) may be `0` or any number without a leading `0`.
+json.exception.parse_error.107 | parse error: JSON pointer must be empty or begin with '/' - was: 'foo' | A JSON Pointer must be a Unicode string containing a sequence of zero or more reference tokens, each prefixed by a `/` character.
+json.exception.parse_error.108 | parse error: escape character '~' must be followed with '0' or '1' | In a JSON Pointer, only `~0` and `~1` are valid escape sequences.
+json.exception.parse_error.109 | parse error: array index 'one' is not a number | A JSON Pointer array index must be a number.
+json.exception.parse_error.110 | parse error at 1: cannot read 2 bytes from vector | When parsing CBOR or MessagePack, the byte vector ends before the complete value has been read.
+json.exception.parse_error.112 | parse error at 1: error reading CBOR; last byte: 0xF8 | Not all types of CBOR or MessagePack are supported. This exception occurs if an unsupported byte was read.
+json.exception.parse_error.113 | parse error at 2: expected a CBOR string; last byte: 0x98 | While parsing a map key, a value that is not a string has been read.
+json.exception.parse_error.114 | parse error: Unsupported BSON record type 0x0F | The parsing of the corresponding BSON record type is not implemented (yet).
+
+@note For an input with n bytes, 1 is the index of the first character and n+1
+ is the index of the terminating null byte or the end of file. This also
+ holds true when reading a byte vector (CBOR or MessagePack).
+
+@liveexample{The following code shows how a `parse_error` exception can be
+caught.,parse_error}
+
+@sa - @ref exception for the base class of the library exceptions
+@sa - @ref invalid_iterator for exceptions indicating errors with iterators
+@sa - @ref type_error for exceptions indicating executing a member function with
+ a wrong type
+@sa - @ref out_of_range for exceptions indicating access out of the defined range
+@sa - @ref other_error for exceptions indicating other library errors
+
+@since version 3.0.0
+*/
+class parse_error : public exception
+{
+ public:
+ /*!
+ @brief create a parse error exception
+ @param[in] id_ the id of the exception
+ @param[in] pos the position where the error occurred (or with
+ chars_read_total=0 if the position cannot be
+ determined)
+ @param[in] what_arg the explanatory string
+ @return parse_error object
+ */
+ static parse_error create(int id_, const position_t& pos, const std::string& what_arg)
+ {
+ std::string w = exception::name("parse_error", id_) + "parse error" +
+ position_string(pos) + ": " + what_arg;
+ return parse_error(id_, pos.chars_read_total, w.c_str());
+ }
+
+ static parse_error create(int id_, std::size_t byte_, const std::string& what_arg)
+ {
+ std::string w = exception::name("parse_error", id_) + "parse error" +
+ (byte_ != 0 ? (" at byte " + std::to_string(byte_)) : "") +
+ ": " + what_arg;
+ return parse_error(id_, byte_, w.c_str());
+ }
+
+ /*!
+ @brief byte index of the parse error
+
+ The byte index of the last read character in the input file.
+
+ @note For an input with n bytes, 1 is the index of the first character and
+ n+1 is the index of the terminating null byte or the end of file.
+ This also holds true when reading a byte vector (CBOR or MessagePack).
+ */
+ const std::size_t byte;
+
+ private:
+ parse_error(int id_, std::size_t byte_, const char* what_arg)
+ : exception(id_, what_arg), byte(byte_) {}
+
+ static std::string position_string(const position_t& pos)
+ {
+ return " at line " + std::to_string(pos.lines_read + 1) +
+ ", column " + std::to_string(pos.chars_read_current_line);
+ }
+};
+
+/*!
+@brief exception indicating errors with iterators
+
+This exception is thrown if iterators passed to a library function do not match
+the expected semantics.
+
+Exceptions have ids 2xx.
+
+name / id | example message | description
+----------------------------------- | --------------- | -------------------------
+json.exception.invalid_iterator.201 | iterators are not compatible | The iterators passed to constructor @ref basic_json(InputIT first, InputIT last) are not compatible, meaning they do not belong to the same container. Therefore, the range (@a first, @a last) is invalid.
+json.exception.invalid_iterator.202 | iterator does not fit current value | In an erase or insert function, the passed iterator @a pos does not belong to the JSON value for which the function was called. It hence does not define a valid position for the deletion/insertion.
+json.exception.invalid_iterator.203 | iterators do not fit current value | Either iterator passed to function @ref erase(IteratorType first, IteratorType last) does not belong to the JSON value from which values shall be erased. It hence does not define a valid range to delete values from.
+json.exception.invalid_iterator.204 | iterators out of range | When an iterator range for a primitive type (number, boolean, or string) is passed to a constructor or an erase function, this range has to be exactly (@ref begin(), @ref end()), because this is the only way the single stored value is expressed. All other ranges are invalid.
+json.exception.invalid_iterator.205 | iterator out of range | When an iterator for a primitive type (number, boolean, or string) is passed to an erase function, the iterator has to be the @ref begin() iterator, because it is the only way to address the stored value. All other iterators are invalid.
+json.exception.invalid_iterator.206 | cannot construct with iterators from null | The iterators passed to constructor @ref basic_json(InputIT first, InputIT last) belong to a JSON null value and hence to not define a valid range.
+json.exception.invalid_iterator.207 | cannot use key() for non-object iterators | The key() member function can only be used on iterators belonging to a JSON object, because other types do not have a concept of a key.
+json.exception.invalid_iterator.208 | cannot use operator[] for object iterators | The operator[] to specify a concrete offset cannot be used on iterators belonging to a JSON object, because JSON objects are unordered.
+json.exception.invalid_iterator.209 | cannot use offsets with object iterators | The offset operators (+, -, +=, -=) cannot be used on iterators belonging to a JSON object, because JSON objects are unordered.
+json.exception.invalid_iterator.210 | iterators do not fit | The iterator range passed to the insert function are not compatible, meaning they do not belong to the same container. Therefore, the range (@a first, @a last) is invalid.
+json.exception.invalid_iterator.211 | passed iterators may not belong to container | The iterator range passed to the insert function must not be a subrange of the container to insert to.
+json.exception.invalid_iterator.212 | cannot compare iterators of different containers | When two iterators are compared, they must belong to the same container.
+json.exception.invalid_iterator.213 | cannot compare order of object iterators | The order of object iterators cannot be compared, because JSON objects are unordered.
+json.exception.invalid_iterator.214 | cannot get value | Cannot get value for iterator: Either the iterator belongs to a null value or it is an iterator to a primitive type (number, boolean, or string), but the iterator is different to @ref begin().
+
+@liveexample{The following code shows how an `invalid_iterator` exception can be
+caught.,invalid_iterator}
+
+@sa - @ref exception for the base class of the library exceptions
+@sa - @ref parse_error for exceptions indicating a parse error
+@sa - @ref type_error for exceptions indicating executing a member function with
+ a wrong type
+@sa - @ref out_of_range for exceptions indicating access out of the defined range
+@sa - @ref other_error for exceptions indicating other library errors
+
+@since version 3.0.0
+*/
+class invalid_iterator : public exception
+{
+ public:
+ static invalid_iterator create(int id_, const std::string& what_arg)
+ {
+ std::string w = exception::name("invalid_iterator", id_) + what_arg;
+ return invalid_iterator(id_, w.c_str());
+ }
+
+ private:
+ invalid_iterator(int id_, const char* what_arg)
+ : exception(id_, what_arg) {}
+};
+
+/*!
+@brief exception indicating executing a member function with a wrong type
+
+This exception is thrown in case of a type error; that is, a library function is
+executed on a JSON value whose type does not match the expected semantics.
+
+Exceptions have ids 3xx.
+
+name / id | example message | description
+----------------------------- | --------------- | -------------------------
+json.exception.type_error.301 | cannot create object from initializer list | To create an object from an initializer list, the initializer list must consist only of a list of pairs whose first element is a string. When this constraint is violated, an array is created instead.
+json.exception.type_error.302 | type must be object, but is array | During implicit or explicit value conversion, the JSON type must be compatible to the target type. For instance, a JSON string can only be converted into string types, but not into numbers or boolean types.
+json.exception.type_error.303 | incompatible ReferenceType for get_ref, actual type is object | To retrieve a reference to a value stored in a @ref basic_json object with @ref get_ref, the type of the reference must match the value type. For instance, for a JSON array, the @a ReferenceType must be @ref array_t &.
+json.exception.type_error.304 | cannot use at() with string | The @ref at() member functions can only be executed for certain JSON types.
+json.exception.type_error.305 | cannot use operator[] with string | The @ref operator[] member functions can only be executed for certain JSON types.
+json.exception.type_error.306 | cannot use value() with string | The @ref value() member functions can only be executed for certain JSON types.
+json.exception.type_error.307 | cannot use erase() with string | The @ref erase() member functions can only be executed for certain JSON types.
+json.exception.type_error.308 | cannot use push_back() with string | The @ref push_back() and @ref operator+= member functions can only be executed for certain JSON types.
+json.exception.type_error.309 | cannot use insert() with | The @ref insert() member functions can only be executed for certain JSON types.
+json.exception.type_error.310 | cannot use swap() with number | The @ref swap() member functions can only be executed for certain JSON types.
+json.exception.type_error.311 | cannot use emplace_back() with string | The @ref emplace_back() member function can only be executed for certain JSON types.
+json.exception.type_error.312 | cannot use update() with string | The @ref update() member functions can only be executed for certain JSON types.
+json.exception.type_error.313 | invalid value to unflatten | The @ref unflatten function converts an object whose keys are JSON Pointers back into an arbitrary nested JSON value. The JSON Pointers must not overlap, because then the resulting value would not be well defined.
+json.exception.type_error.314 | only objects can be unflattened | The @ref unflatten function only works for an object whose keys are JSON Pointers.
+json.exception.type_error.315 | values in object must be primitive | The @ref unflatten function only works for an object whose keys are JSON Pointers and whose values are primitive.
+json.exception.type_error.316 | invalid UTF-8 byte at index 10: 0x7E | The @ref dump function only works with UTF-8 encoded strings; that is, if you assign a `std::string` to a JSON value, make sure it is UTF-8 encoded. |
+json.exception.type_error.317 | JSON value cannot be serialized to requested format | The dynamic type of the object cannot be represented in the requested serialization format (e.g. a raw `true` or `null` JSON object cannot be serialized to BSON) |
+
+@liveexample{The following code shows how a `type_error` exception can be
+caught.,type_error}
+
+@sa - @ref exception for the base class of the library exceptions
+@sa - @ref parse_error for exceptions indicating a parse error
+@sa - @ref invalid_iterator for exceptions indicating errors with iterators
+@sa - @ref out_of_range for exceptions indicating access out of the defined range
+@sa - @ref other_error for exceptions indicating other library errors
+
+@since version 3.0.0
+*/
+class type_error : public exception
+{
+ public:
+ static type_error create(int id_, const std::string& what_arg)
+ {
+ std::string w = exception::name("type_error", id_) + what_arg;
+ return type_error(id_, w.c_str());
+ }
+
+ private:
+ type_error(int id_, const char* what_arg) : exception(id_, what_arg) {}
+};
+
+/*!
+@brief exception indicating access out of the defined range
+
+This exception is thrown in case a library function is called on an input
+parameter that exceeds the expected range, for instance in case of array
+indices or nonexisting object keys.
+
+Exceptions have ids 4xx.
+
+name / id | example message | description
+------------------------------- | --------------- | -------------------------
+json.exception.out_of_range.401 | array index 3 is out of range | The provided array index @a i is larger than @a size-1.
+json.exception.out_of_range.402 | array index '-' (3) is out of range | The special array index `-` in a JSON Pointer never describes a valid element of the array, but the index past the end. That is, it can only be used to add elements at this position, but not to read it.
+json.exception.out_of_range.403 | key 'foo' not found | The provided key was not found in the JSON object.
+json.exception.out_of_range.404 | unresolved reference token 'foo' | A reference token in a JSON Pointer could not be resolved.
+json.exception.out_of_range.405 | JSON pointer has no parent | The JSON Patch operations 'remove' and 'add' can not be applied to the root element of the JSON value.
+json.exception.out_of_range.406 | number overflow parsing '10E1000' | A parsed number could not be stored as without changing it to NaN or INF.
+json.exception.out_of_range.407 | number overflow serializing '9223372036854775808' | UBJSON and BSON only support integer numbers up to 9223372036854775807. |
+json.exception.out_of_range.408 | excessive array size: 8658170730974374167 | The size (following `#`) of an UBJSON array or object exceeds the maximal capacity. |
+json.exception.out_of_range.409 | BSON key cannot contain code point U+0000 (at byte 2) | Key identifiers to be serialized to BSON cannot contain code point U+0000, since the key is stored as zero-terminated c-string |
+
+@liveexample{The following code shows how an `out_of_range` exception can be
+caught.,out_of_range}
+
+@sa - @ref exception for the base class of the library exceptions
+@sa - @ref parse_error for exceptions indicating a parse error
+@sa - @ref invalid_iterator for exceptions indicating errors with iterators
+@sa - @ref type_error for exceptions indicating executing a member function with
+ a wrong type
+@sa - @ref other_error for exceptions indicating other library errors
+
+@since version 3.0.0
+*/
+class out_of_range : public exception
+{
+ public:
+ static out_of_range create(int id_, const std::string& what_arg)
+ {
+ std::string w = exception::name("out_of_range", id_) + what_arg;
+ return out_of_range(id_, w.c_str());
+ }
+
+ private:
+ out_of_range(int id_, const char* what_arg) : exception(id_, what_arg) {}
+};
+
+/*!
+@brief exception indicating other library errors
+
+This exception is thrown in case of errors that cannot be classified with the
+other exception types.
+
+Exceptions have ids 5xx.
+
+name / id | example message | description
+------------------------------ | --------------- | -------------------------
+json.exception.other_error.501 | unsuccessful: {"op":"test","path":"/baz", "value":"bar"} | A JSON Patch operation 'test' failed. The unsuccessful operation is also printed.
+
+@sa - @ref exception for the base class of the library exceptions
+@sa - @ref parse_error for exceptions indicating a parse error
+@sa - @ref invalid_iterator for exceptions indicating errors with iterators
+@sa - @ref type_error for exceptions indicating executing a member function with
+ a wrong type
+@sa - @ref out_of_range for exceptions indicating access out of the defined range
+
+@liveexample{The following code shows how an `other_error` exception can be
+caught.,other_error}
+
+@since version 3.0.0
+*/
+class other_error : public exception
+{
+ public:
+ static other_error create(int id_, const std::string& what_arg)
+ {
+ std::string w = exception::name("other_error", id_) + what_arg;
+ return other_error(id_, w.c_str());
+ }
+
+ private:
+ other_error(int id_, const char* what_arg) : exception(id_, what_arg) {}
+};
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/detail/macro_scope.hpp>
+
+
+#include <utility> // pair
+
+// This file contains all internal macro definitions
+// You MUST include macro_unscope.hpp at the end of json.hpp to undef all of them
+
+// exclude unsupported compilers
+#if !defined(JSON_SKIP_UNSUPPORTED_COMPILER_CHECK)
+ #if defined(__clang__)
+ #if (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__) < 30400
+ #error "unsupported Clang version - see https://github.com/nlohmann/json#supported-compilers"
+ #endif
+ #elif defined(__GNUC__) && !(defined(__ICC) || defined(__INTEL_COMPILER))
+ #if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) < 40800
+ #error "unsupported GCC version - see https://github.com/nlohmann/json#supported-compilers"
+ #endif
+ #endif
+#endif
+
+// disable float-equal warnings on GCC/clang
+#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__)
+ #pragma GCC diagnostic push
+ #pragma GCC diagnostic ignored "-Wfloat-equal"
+#endif
+
+// disable documentation warnings on clang
+#if defined(__clang__)
+ #pragma GCC diagnostic push
+ #pragma GCC diagnostic ignored "-Wdocumentation"
+#endif
+
+// allow for portable deprecation warnings
+#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__)
+ #define JSON_DEPRECATED __attribute__((deprecated))
+#elif defined(_MSC_VER)
+ #define JSON_DEPRECATED __declspec(deprecated)
+#else
+ #define JSON_DEPRECATED
+#endif
+
+// allow for portable nodiscard warnings
+#if defined(__has_cpp_attribute)
+ #if __has_cpp_attribute(nodiscard)
+ #define JSON_NODISCARD [[nodiscard]]
+ #elif __has_cpp_attribute(gnu::warn_unused_result)
+ #define JSON_NODISCARD [[gnu::warn_unused_result]]
+ #else
+ #define JSON_NODISCARD
+ #endif
+#else
+ #define JSON_NODISCARD
+#endif
+
+// allow to disable exceptions
+#if (defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND)) && !defined(JSON_NOEXCEPTION)
+ #define JSON_THROW(exception) throw exception
+ #define JSON_TRY try
+ #define JSON_CATCH(exception) catch(exception)
+ #define JSON_INTERNAL_CATCH(exception) catch(exception)
+#else
+ #include <cstdlib>
+ #define JSON_THROW(exception) std::abort()
+ #define JSON_TRY if(true)
+ #define JSON_CATCH(exception) if(false)
+ #define JSON_INTERNAL_CATCH(exception) if(false)
+#endif
+
+// override exception macros
+#if defined(JSON_THROW_USER)
+ #undef JSON_THROW
+ #define JSON_THROW JSON_THROW_USER
+#endif
+#if defined(JSON_TRY_USER)
+ #undef JSON_TRY
+ #define JSON_TRY JSON_TRY_USER
+#endif
+#if defined(JSON_CATCH_USER)
+ #undef JSON_CATCH
+ #define JSON_CATCH JSON_CATCH_USER
+ #undef JSON_INTERNAL_CATCH
+ #define JSON_INTERNAL_CATCH JSON_CATCH_USER
+#endif
+#if defined(JSON_INTERNAL_CATCH_USER)
+ #undef JSON_INTERNAL_CATCH
+ #define JSON_INTERNAL_CATCH JSON_INTERNAL_CATCH_USER
+#endif
+
+// manual branch prediction
+#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__)
+ #define JSON_LIKELY(x) __builtin_expect(x, 1)
+ #define JSON_UNLIKELY(x) __builtin_expect(x, 0)
+#else
+ #define JSON_LIKELY(x) x
+ #define JSON_UNLIKELY(x) x
+#endif
+
+// C++ language standard detection
+#if (defined(__cplusplus) && __cplusplus >= 201703L) || (defined(_HAS_CXX17) && _HAS_CXX17 == 1) // fix for issue #464
+ #define JSON_HAS_CPP_17
+ #define JSON_HAS_CPP_14
+#elif (defined(__cplusplus) && __cplusplus >= 201402L) || (defined(_HAS_CXX14) && _HAS_CXX14 == 1)
+ #define JSON_HAS_CPP_14
+#endif
+
+/*!
+@brief macro to briefly define a mapping between an enum and JSON
+@def NLOHMANN_JSON_SERIALIZE_ENUM
+@since version 3.4.0
+*/
+#define NLOHMANN_JSON_SERIALIZE_ENUM(ENUM_TYPE, ...) \
+ template<typename BasicJsonType> \
+ inline void to_json(BasicJsonType& j, const ENUM_TYPE& e) \
+ { \
+ static_assert(std::is_enum<ENUM_TYPE>::value, #ENUM_TYPE " must be an enum!"); \
+ static const std::pair<ENUM_TYPE, BasicJsonType> m[] = __VA_ARGS__; \
+ auto it = std::find_if(std::begin(m), std::end(m), \
+ [e](const std::pair<ENUM_TYPE, BasicJsonType>& ej_pair) -> bool \
+ { \
+ return ej_pair.first == e; \
+ }); \
+ j = ((it != std::end(m)) ? it : std::begin(m))->second; \
+ } \
+ template<typename BasicJsonType> \
+ inline void from_json(const BasicJsonType& j, ENUM_TYPE& e) \
+ { \
+ static_assert(std::is_enum<ENUM_TYPE>::value, #ENUM_TYPE " must be an enum!"); \
+ static const std::pair<ENUM_TYPE, BasicJsonType> m[] = __VA_ARGS__; \
+ auto it = std::find_if(std::begin(m), std::end(m), \
+ [j](const std::pair<ENUM_TYPE, BasicJsonType>& ej_pair) -> bool \
+ { \
+ return ej_pair.second == j; \
+ }); \
+ e = ((it != std::end(m)) ? it : std::begin(m))->first; \
+ }
+
+// Ugly macros to avoid uglier copy-paste when specializing basic_json. They
+// may be removed in the future once the class is split.
+
+#define NLOHMANN_BASIC_JSON_TPL_DECLARATION \
+ template<template<typename, typename, typename...> class ObjectType, \
+ template<typename, typename...> class ArrayType, \
+ class StringType, class BooleanType, class NumberIntegerType, \
+ class NumberUnsignedType, class NumberFloatType, \
+ template<typename> class AllocatorType, \
+ template<typename, typename = void> class JSONSerializer>
+
+#define NLOHMANN_BASIC_JSON_TPL \
+ basic_json<ObjectType, ArrayType, StringType, BooleanType, \
+ NumberIntegerType, NumberUnsignedType, NumberFloatType, \
+ AllocatorType, JSONSerializer>
+
+// #include <nlohmann/detail/meta/cpp_future.hpp>
+
+
+#include <ciso646> // not
+#include <cstddef> // size_t
+#include <type_traits> // conditional, enable_if, false_type, integral_constant, is_constructible, is_integral, is_same, remove_cv, remove_reference, true_type
+
+namespace nlohmann
+{
+namespace detail
+{
+// alias templates to reduce boilerplate
+template<bool B, typename T = void>
+using enable_if_t = typename std::enable_if<B, T>::type;
+
+template<typename T>
+using uncvref_t = typename std::remove_cv<typename std::remove_reference<T>::type>::type;
+
+// implementation of C++14 index_sequence and affiliates
+// source: https://stackoverflow.com/a/32223343
+template<std::size_t... Ints>
+struct index_sequence
+{
+ using type = index_sequence;
+ using value_type = std::size_t;
+ static constexpr std::size_t size() noexcept
+ {
+ return sizeof...(Ints);
+ }
+};
+
+template<class Sequence1, class Sequence2>
+struct merge_and_renumber;
+
+template<std::size_t... I1, std::size_t... I2>
+struct merge_and_renumber<index_sequence<I1...>, index_sequence<I2...>>
+ : index_sequence < I1..., (sizeof...(I1) + I2)... > {};
+
+template<std::size_t N>
+struct make_index_sequence
+ : merge_and_renumber < typename make_index_sequence < N / 2 >::type,
+ typename make_index_sequence < N - N / 2 >::type > {};
+
+template<> struct make_index_sequence<0> : index_sequence<> {};
+template<> struct make_index_sequence<1> : index_sequence<0> {};
+
+template<typename... Ts>
+using index_sequence_for = make_index_sequence<sizeof...(Ts)>;
+
+// dispatch utility (taken from ranges-v3)
+template<unsigned N> struct priority_tag : priority_tag < N - 1 > {};
+template<> struct priority_tag<0> {};
+
+// taken from ranges-v3
+template<typename T>
+struct static_const
+{
+ static constexpr T value{};
+};
+
+template<typename T>
+constexpr T static_const<T>::value;
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/detail/meta/type_traits.hpp>
+
+
+#include <ciso646> // not
+#include <limits> // numeric_limits
+#include <type_traits> // false_type, is_constructible, is_integral, is_same, true_type
+#include <utility> // declval
+
+// #include <nlohmann/detail/iterators/iterator_traits.hpp>
+
+
+#include <iterator> // random_access_iterator_tag
+
+// #include <nlohmann/detail/meta/void_t.hpp>
+
+
+namespace nlohmann
+{
+namespace detail
+{
+template <typename ...Ts> struct make_void
+{
+ using type = void;
+};
+template <typename ...Ts> using void_t = typename make_void<Ts...>::type;
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/detail/meta/cpp_future.hpp>
+
+
+namespace nlohmann
+{
+namespace detail
+{
+template <typename It, typename = void>
+struct iterator_types {};
+
+template <typename It>
+struct iterator_types <
+ It,
+ void_t<typename It::difference_type, typename It::value_type, typename It::pointer,
+ typename It::reference, typename It::iterator_category >>
+{
+ using difference_type = typename It::difference_type;
+ using value_type = typename It::value_type;
+ using pointer = typename It::pointer;
+ using reference = typename It::reference;
+ using iterator_category = typename It::iterator_category;
+};
+
+// This is required as some compilers implement std::iterator_traits in a way that
+// doesn't work with SFINAE. See https://github.com/nlohmann/json/issues/1341.
+template <typename T, typename = void>
+struct iterator_traits
+{
+};
+
+template <typename T>
+struct iterator_traits < T, enable_if_t < !std::is_pointer<T>::value >>
+ : iterator_types<T>
+{
+};
+
+template <typename T>
+struct iterator_traits<T*, enable_if_t<std::is_object<T>::value>>
+{
+ using iterator_category = std::random_access_iterator_tag;
+ using value_type = T;
+ using difference_type = ptrdiff_t;
+ using pointer = T*;
+ using reference = T&;
+};
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/detail/macro_scope.hpp>
+
+// #include <nlohmann/detail/meta/cpp_future.hpp>
+
+// #include <nlohmann/detail/meta/detected.hpp>
+
+
+#include <type_traits>
+
+// #include <nlohmann/detail/meta/void_t.hpp>
+
+
+// http://en.cppreference.com/w/cpp/experimental/is_detected
+namespace nlohmann
+{
+namespace detail
+{
+struct nonesuch
+{
+ nonesuch() = delete;
+ ~nonesuch() = delete;
+ nonesuch(nonesuch const&) = delete;
+ nonesuch(nonesuch const&&) = delete;
+ void operator=(nonesuch const&) = delete;
+ void operator=(nonesuch&&) = delete;
+};
+
+template <class Default,
+ class AlwaysVoid,
+ template <class...> class Op,
+ class... Args>
+struct detector
+{
+ using value_t = std::false_type;
+ using type = Default;
+};
+
+template <class Default, template <class...> class Op, class... Args>
+struct detector<Default, void_t<Op<Args...>>, Op, Args...>
+{
+ using value_t = std::true_type;
+ using type = Op<Args...>;
+};
+
+template <template <class...> class Op, class... Args>
+using is_detected = typename detector<nonesuch, void, Op, Args...>::value_t;
+
+template <template <class...> class Op, class... Args>
+using detected_t = typename detector<nonesuch, void, Op, Args...>::type;
+
+template <class Default, template <class...> class Op, class... Args>
+using detected_or = detector<Default, void, Op, Args...>;
+
+template <class Default, template <class...> class Op, class... Args>
+using detected_or_t = typename detected_or<Default, Op, Args...>::type;
+
+template <class Expected, template <class...> class Op, class... Args>
+using is_detected_exact = std::is_same<Expected, detected_t<Op, Args...>>;
+
+template <class To, template <class...> class Op, class... Args>
+using is_detected_convertible =
+ std::is_convertible<detected_t<Op, Args...>, To>;
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/json_fwd.hpp>
+#ifndef INCLUDE_NLOHMANN_JSON_FWD_HPP_
+#define INCLUDE_NLOHMANN_JSON_FWD_HPP_
+
+#include <cstdint> // int64_t, uint64_t
+#include <map> // map
+#include <memory> // allocator
+#include <string> // string
+#include <vector> // vector
+
+/*!
+@brief namespace for Niels Lohmann
+@see https://github.com/nlohmann
+@since version 1.0.0
+*/
+namespace nlohmann
+{
+/*!
+@brief default JSONSerializer template argument
+
+This serializer ignores the template arguments and uses ADL
+([argument-dependent lookup](https://en.cppreference.com/w/cpp/language/adl))
+for serialization.
+*/
+template<typename T = void, typename SFINAE = void>
+struct adl_serializer;
+
+template<template<typename U, typename V, typename... Args> class ObjectType =
+ std::map,
+ template<typename U, typename... Args> class ArrayType = std::vector,
+ class StringType = std::string, class BooleanType = bool,
+ class NumberIntegerType = std::int64_t,
+ class NumberUnsignedType = std::uint64_t,
+ class NumberFloatType = double,
+ template<typename U> class AllocatorType = std::allocator,
+ template<typename T, typename SFINAE = void> class JSONSerializer =
+ adl_serializer>
+class basic_json;
+
+/*!
+@brief JSON Pointer
+
+A JSON pointer defines a string syntax for identifying a specific value
+within a JSON document. It can be used with functions `at` and
+`operator[]`. Furthermore, JSON pointers are the base for JSON patches.
+
+@sa [RFC 6901](https://tools.ietf.org/html/rfc6901)
+
+@since version 2.0.0
+*/
+template<typename BasicJsonType>
+class json_pointer;
+
+/*!
+@brief default JSON class
+
+This type is the default specialization of the @ref basic_json class which
+uses the standard template types.
+
+@since version 1.0.0
+*/
+using json = basic_json<>;
+} // namespace nlohmann
+
+#endif // INCLUDE_NLOHMANN_JSON_FWD_HPP_
+
+
+namespace nlohmann
+{
+/*!
+@brief detail namespace with internal helper functions
+
+This namespace collects functions that should not be exposed,
+implementations of some @ref basic_json methods, and meta-programming helpers.
+
+@since version 2.1.0
+*/
+namespace detail
+{
+/////////////
+// helpers //
+/////////////
+
+// Note to maintainers:
+//
+// Every trait in this file expects a non CV-qualified type.
+// The only exceptions are in the 'aliases for detected' section
+// (i.e. those of the form: decltype(T::member_function(std::declval<T>())))
+//
+// In this case, T has to be properly CV-qualified to constraint the function arguments
+// (e.g. to_json(BasicJsonType&, const T&))
+
+template<typename> struct is_basic_json : std::false_type {};
+
+NLOHMANN_BASIC_JSON_TPL_DECLARATION
+struct is_basic_json<NLOHMANN_BASIC_JSON_TPL> : std::true_type {};
+
+//////////////////////////
+// aliases for detected //
+//////////////////////////
+
+template <typename T>
+using mapped_type_t = typename T::mapped_type;
+
+template <typename T>
+using key_type_t = typename T::key_type;
+
+template <typename T>
+using value_type_t = typename T::value_type;
+
+template <typename T>
+using difference_type_t = typename T::difference_type;
+
+template <typename T>
+using pointer_t = typename T::pointer;
+
+template <typename T>
+using reference_t = typename T::reference;
+
+template <typename T>
+using iterator_category_t = typename T::iterator_category;
+
+template <typename T>
+using iterator_t = typename T::iterator;
+
+template <typename T, typename... Args>
+using to_json_function = decltype(T::to_json(std::declval<Args>()...));
+
+template <typename T, typename... Args>
+using from_json_function = decltype(T::from_json(std::declval<Args>()...));
+
+template <typename T, typename U>
+using get_template_function = decltype(std::declval<T>().template get<U>());
+
+// trait checking if JSONSerializer<T>::from_json(json const&, udt&) exists
+template <typename BasicJsonType, typename T, typename = void>
+struct has_from_json : std::false_type {};
+
+template <typename BasicJsonType, typename T>
+struct has_from_json<BasicJsonType, T,
+ enable_if_t<not is_basic_json<T>::value>>
+{
+ using serializer = typename BasicJsonType::template json_serializer<T, void>;
+
+ static constexpr bool value =
+ is_detected_exact<void, from_json_function, serializer,
+ const BasicJsonType&, T&>::value;
+};
+
+// This trait checks if JSONSerializer<T>::from_json(json const&) exists
+// this overload is used for non-default-constructible user-defined-types
+template <typename BasicJsonType, typename T, typename = void>
+struct has_non_default_from_json : std::false_type {};
+
+template<typename BasicJsonType, typename T>
+struct has_non_default_from_json<BasicJsonType, T, enable_if_t<not is_basic_json<T>::value>>
+{
+ using serializer = typename BasicJsonType::template json_serializer<T, void>;
+
+ static constexpr bool value =
+ is_detected_exact<T, from_json_function, serializer,
+ const BasicJsonType&>::value;
+};
+
+// This trait checks if BasicJsonType::json_serializer<T>::to_json exists
+// Do not evaluate the trait when T is a basic_json type, to avoid template instantiation infinite recursion.
+template <typename BasicJsonType, typename T, typename = void>
+struct has_to_json : std::false_type {};
+
+template <typename BasicJsonType, typename T>
+struct has_to_json<BasicJsonType, T, enable_if_t<not is_basic_json<T>::value>>
+{
+ using serializer = typename BasicJsonType::template json_serializer<T, void>;
+
+ static constexpr bool value =
+ is_detected_exact<void, to_json_function, serializer, BasicJsonType&,
+ T>::value;
+};
+
+
+///////////////////
+// is_ functions //
+///////////////////
+
+template <typename T, typename = void>
+struct is_iterator_traits : std::false_type {};
+
+template <typename T>
+struct is_iterator_traits<iterator_traits<T>>
+{
+ private:
+ using traits = iterator_traits<T>;
+
+ public:
+ static constexpr auto value =
+ is_detected<value_type_t, traits>::value &&
+ is_detected<difference_type_t, traits>::value &&
+ is_detected<pointer_t, traits>::value &&
+ is_detected<iterator_category_t, traits>::value &&
+ is_detected<reference_t, traits>::value;
+};
+
+// source: https://stackoverflow.com/a/37193089/4116453
+
+template <typename T, typename = void>
+struct is_complete_type : std::false_type {};
+
+template <typename T>
+struct is_complete_type<T, decltype(void(sizeof(T)))> : std::true_type {};
+
+template <typename BasicJsonType, typename CompatibleObjectType,
+ typename = void>
+struct is_compatible_object_type_impl : std::false_type {};
+
+template <typename BasicJsonType, typename CompatibleObjectType>
+struct is_compatible_object_type_impl <
+ BasicJsonType, CompatibleObjectType,
+ enable_if_t<is_detected<mapped_type_t, CompatibleObjectType>::value and
+ is_detected<key_type_t, CompatibleObjectType>::value >>
+{
+
+ using object_t = typename BasicJsonType::object_t;
+
+ // macOS's is_constructible does not play well with nonesuch...
+ static constexpr bool value =
+ std::is_constructible<typename object_t::key_type,
+ typename CompatibleObjectType::key_type>::value and
+ std::is_constructible<typename object_t::mapped_type,
+ typename CompatibleObjectType::mapped_type>::value;
+};
+
+template <typename BasicJsonType, typename CompatibleObjectType>
+struct is_compatible_object_type
+ : is_compatible_object_type_impl<BasicJsonType, CompatibleObjectType> {};
+
+template <typename BasicJsonType, typename ConstructibleObjectType,
+ typename = void>
+struct is_constructible_object_type_impl : std::false_type {};
+
+template <typename BasicJsonType, typename ConstructibleObjectType>
+struct is_constructible_object_type_impl <
+ BasicJsonType, ConstructibleObjectType,
+ enable_if_t<is_detected<mapped_type_t, ConstructibleObjectType>::value and
+ is_detected<key_type_t, ConstructibleObjectType>::value >>
+{
+ using object_t = typename BasicJsonType::object_t;
+
+ static constexpr bool value =
+ (std::is_constructible<typename ConstructibleObjectType::key_type, typename object_t::key_type>::value and
+ std::is_same<typename object_t::mapped_type, typename ConstructibleObjectType::mapped_type>::value) or
+ (has_from_json<BasicJsonType, typename ConstructibleObjectType::mapped_type>::value or
+ has_non_default_from_json<BasicJsonType, typename ConstructibleObjectType::mapped_type >::value);
+};
+
+template <typename BasicJsonType, typename ConstructibleObjectType>
+struct is_constructible_object_type
+ : is_constructible_object_type_impl<BasicJsonType,
+ ConstructibleObjectType> {};
+
+template <typename BasicJsonType, typename CompatibleStringType,
+ typename = void>
+struct is_compatible_string_type_impl : std::false_type {};
+
+template <typename BasicJsonType, typename CompatibleStringType>
+struct is_compatible_string_type_impl <
+ BasicJsonType, CompatibleStringType,
+ enable_if_t<is_detected_exact<typename BasicJsonType::string_t::value_type,
+ value_type_t, CompatibleStringType>::value >>
+{
+ static constexpr auto value =
+ std::is_constructible<typename BasicJsonType::string_t, CompatibleStringType>::value;
+};
+
+template <typename BasicJsonType, typename ConstructibleStringType>
+struct is_compatible_string_type
+ : is_compatible_string_type_impl<BasicJsonType, ConstructibleStringType> {};
+
+template <typename BasicJsonType, typename ConstructibleStringType,
+ typename = void>
+struct is_constructible_string_type_impl : std::false_type {};
+
+template <typename BasicJsonType, typename ConstructibleStringType>
+struct is_constructible_string_type_impl <
+ BasicJsonType, ConstructibleStringType,
+ enable_if_t<is_detected_exact<typename BasicJsonType::string_t::value_type,
+ value_type_t, ConstructibleStringType>::value >>
+{
+ static constexpr auto value =
+ std::is_constructible<ConstructibleStringType,
+ typename BasicJsonType::string_t>::value;
+};
+
+template <typename BasicJsonType, typename ConstructibleStringType>
+struct is_constructible_string_type
+ : is_constructible_string_type_impl<BasicJsonType, ConstructibleStringType> {};
+
+template <typename BasicJsonType, typename CompatibleArrayType, typename = void>
+struct is_compatible_array_type_impl : std::false_type {};
+
+template <typename BasicJsonType, typename CompatibleArrayType>
+struct is_compatible_array_type_impl <
+ BasicJsonType, CompatibleArrayType,
+ enable_if_t<is_detected<value_type_t, CompatibleArrayType>::value and
+ is_detected<iterator_t, CompatibleArrayType>::value and
+// This is needed because json_reverse_iterator has a ::iterator type...
+// Therefore it is detected as a CompatibleArrayType.
+// The real fix would be to have an Iterable concept.
+ not is_iterator_traits<
+ iterator_traits<CompatibleArrayType>>::value >>
+{
+ static constexpr bool value =
+ std::is_constructible<BasicJsonType,
+ typename CompatibleArrayType::value_type>::value;
+};
+
+template <typename BasicJsonType, typename CompatibleArrayType>
+struct is_compatible_array_type
+ : is_compatible_array_type_impl<BasicJsonType, CompatibleArrayType> {};
+
+template <typename BasicJsonType, typename ConstructibleArrayType, typename = void>
+struct is_constructible_array_type_impl : std::false_type {};
+
+template <typename BasicJsonType, typename ConstructibleArrayType>
+struct is_constructible_array_type_impl <
+ BasicJsonType, ConstructibleArrayType,
+ enable_if_t<std::is_same<ConstructibleArrayType,
+ typename BasicJsonType::value_type>::value >>
+ : std::true_type {};
+
+template <typename BasicJsonType, typename ConstructibleArrayType>
+struct is_constructible_array_type_impl <
+ BasicJsonType, ConstructibleArrayType,
+ enable_if_t<not std::is_same<ConstructibleArrayType,
+ typename BasicJsonType::value_type>::value and
+ is_detected<value_type_t, ConstructibleArrayType>::value and
+ is_detected<iterator_t, ConstructibleArrayType>::value and
+ is_complete_type<
+ detected_t<value_type_t, ConstructibleArrayType>>::value >>
+{
+ static constexpr bool value =
+ // This is needed because json_reverse_iterator has a ::iterator type,
+ // furthermore, std::back_insert_iterator (and other iterators) have a base class `iterator`...
+ // Therefore it is detected as a ConstructibleArrayType.
+ // The real fix would be to have an Iterable concept.
+ not is_iterator_traits <
+ iterator_traits<ConstructibleArrayType >>::value and
+
+ (std::is_same<typename ConstructibleArrayType::value_type, typename BasicJsonType::array_t::value_type>::value or
+ has_from_json<BasicJsonType,
+ typename ConstructibleArrayType::value_type>::value or
+ has_non_default_from_json <
+ BasicJsonType, typename ConstructibleArrayType::value_type >::value);
+};
+
+template <typename BasicJsonType, typename ConstructibleArrayType>
+struct is_constructible_array_type
+ : is_constructible_array_type_impl<BasicJsonType, ConstructibleArrayType> {};
+
+template <typename RealIntegerType, typename CompatibleNumberIntegerType,
+ typename = void>
+struct is_compatible_integer_type_impl : std::false_type {};
+
+template <typename RealIntegerType, typename CompatibleNumberIntegerType>
+struct is_compatible_integer_type_impl <
+ RealIntegerType, CompatibleNumberIntegerType,
+ enable_if_t<std::is_integral<RealIntegerType>::value and
+ std::is_integral<CompatibleNumberIntegerType>::value and
+ not std::is_same<bool, CompatibleNumberIntegerType>::value >>
+{
+ // is there an assert somewhere on overflows?
+ using RealLimits = std::numeric_limits<RealIntegerType>;
+ using CompatibleLimits = std::numeric_limits<CompatibleNumberIntegerType>;
+
+ static constexpr auto value =
+ std::is_constructible<RealIntegerType,
+ CompatibleNumberIntegerType>::value and
+ CompatibleLimits::is_integer and
+ RealLimits::is_signed == CompatibleLimits::is_signed;
+};
+
+template <typename RealIntegerType, typename CompatibleNumberIntegerType>
+struct is_compatible_integer_type
+ : is_compatible_integer_type_impl<RealIntegerType,
+ CompatibleNumberIntegerType> {};
+
+template <typename BasicJsonType, typename CompatibleType, typename = void>
+struct is_compatible_type_impl: std::false_type {};
+
+template <typename BasicJsonType, typename CompatibleType>
+struct is_compatible_type_impl <
+ BasicJsonType, CompatibleType,
+ enable_if_t<is_complete_type<CompatibleType>::value >>
+{
+ static constexpr bool value =
+ has_to_json<BasicJsonType, CompatibleType>::value;
+};
+
+template <typename BasicJsonType, typename CompatibleType>
+struct is_compatible_type
+ : is_compatible_type_impl<BasicJsonType, CompatibleType> {};
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/detail/value_t.hpp>
+
+
+#include <array> // array
+#include <ciso646> // and
+#include <cstddef> // size_t
+#include <cstdint> // uint8_t
+#include <string> // string
+
+namespace nlohmann
+{
+namespace detail
+{
+///////////////////////////
+// JSON type enumeration //
+///////////////////////////
+
+/*!
+@brief the JSON type enumeration
+
+This enumeration collects the different JSON types. It is internally used to
+distinguish the stored values, and the functions @ref basic_json::is_null(),
+@ref basic_json::is_object(), @ref basic_json::is_array(),
+@ref basic_json::is_string(), @ref basic_json::is_boolean(),
+@ref basic_json::is_number() (with @ref basic_json::is_number_integer(),
+@ref basic_json::is_number_unsigned(), and @ref basic_json::is_number_float()),
+@ref basic_json::is_discarded(), @ref basic_json::is_primitive(), and
+@ref basic_json::is_structured() rely on it.
+
+@note There are three enumeration entries (number_integer, number_unsigned, and
+number_float), because the library distinguishes these three types for numbers:
+@ref basic_json::number_unsigned_t is used for unsigned integers,
+@ref basic_json::number_integer_t is used for signed integers, and
+@ref basic_json::number_float_t is used for floating-point numbers or to
+approximate integers which do not fit in the limits of their respective type.
+
+@sa @ref basic_json::basic_json(const value_t value_type) -- create a JSON
+value with the default value for a given type
+
+@since version 1.0.0
+*/
+enum class value_t : std::uint8_t
+{
+ null, ///< null value
+ object, ///< object (unordered set of name/value pairs)
+ array, ///< array (ordered collection of values)
+ string, ///< string value
+ boolean, ///< boolean value
+ number_integer, ///< number value (signed integer)
+ number_unsigned, ///< number value (unsigned integer)
+ number_float, ///< number value (floating-point)
+ discarded ///< discarded by the the parser callback function
+};
+
+/*!
+@brief comparison operator for JSON types
+
+Returns an ordering that is similar to Python:
+- order: null < boolean < number < object < array < string
+- furthermore, each type is not smaller than itself
+- discarded values are not comparable
+
+@since version 1.0.0
+*/
+inline bool operator<(const value_t lhs, const value_t rhs) noexcept
+{
+ static constexpr std::array<std::uint8_t, 8> order = {{
+ 0 /* null */, 3 /* object */, 4 /* array */, 5 /* string */,
+ 1 /* boolean */, 2 /* integer */, 2 /* unsigned */, 2 /* float */
+ }
+ };
+
+ const auto l_index = static_cast<std::size_t>(lhs);
+ const auto r_index = static_cast<std::size_t>(rhs);
+ return l_index < order.size() and r_index < order.size() and order[l_index] < order[r_index];
+}
+} // namespace detail
+} // namespace nlohmann
+
+
+namespace nlohmann
+{
+namespace detail
+{
+template<typename BasicJsonType>
+void from_json(const BasicJsonType& j, typename std::nullptr_t& n)
+{
+ if (JSON_UNLIKELY(not j.is_null()))
+ {
+ JSON_THROW(type_error::create(302, "type must be null, but is " + std::string(j.type_name())));
+ }
+ n = nullptr;
+}
+
+// overloads for basic_json template parameters
+template<typename BasicJsonType, typename ArithmeticType,
+ enable_if_t<std::is_arithmetic<ArithmeticType>::value and
+ not std::is_same<ArithmeticType, typename BasicJsonType::boolean_t>::value,
+ int> = 0>
+void get_arithmetic_value(const BasicJsonType& j, ArithmeticType& val)
+{
+ switch (static_cast<value_t>(j))
+ {
+ case value_t::number_unsigned:
+ {
+ val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_unsigned_t*>());
+ break;
+ }
+ case value_t::number_integer:
+ {
+ val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_integer_t*>());
+ break;
+ }
+ case value_t::number_float:
+ {
+ val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_float_t*>());
+ break;
+ }
+
+ default:
+ JSON_THROW(type_error::create(302, "type must be number, but is " + std::string(j.type_name())));
+ }
+}
+
+template<typename BasicJsonType>
+void from_json(const BasicJsonType& j, typename BasicJsonType::boolean_t& b)
+{
+ if (JSON_UNLIKELY(not j.is_boolean()))
+ {
+ JSON_THROW(type_error::create(302, "type must be boolean, but is " + std::string(j.type_name())));
+ }
+ b = *j.template get_ptr<const typename BasicJsonType::boolean_t*>();
+}
+
+template<typename BasicJsonType>
+void from_json(const BasicJsonType& j, typename BasicJsonType::string_t& s)
+{
+ if (JSON_UNLIKELY(not j.is_string()))
+ {
+ JSON_THROW(type_error::create(302, "type must be string, but is " + std::string(j.type_name())));
+ }
+ s = *j.template get_ptr<const typename BasicJsonType::string_t*>();
+}
+
+template <
+ typename BasicJsonType, typename ConstructibleStringType,
+ enable_if_t <
+ is_constructible_string_type<BasicJsonType, ConstructibleStringType>::value and
+ not std::is_same<typename BasicJsonType::string_t,
+ ConstructibleStringType>::value,
+ int > = 0 >
+void from_json(const BasicJsonType& j, ConstructibleStringType& s)
+{
+ if (JSON_UNLIKELY(not j.is_string()))
+ {
+ JSON_THROW(type_error::create(302, "type must be string, but is " + std::string(j.type_name())));
+ }
+
+ s = *j.template get_ptr<const typename BasicJsonType::string_t*>();
+}
+
+template<typename BasicJsonType>
+void from_json(const BasicJsonType& j, typename BasicJsonType::number_float_t& val)
+{
+ get_arithmetic_value(j, val);
+}
+
+template<typename BasicJsonType>
+void from_json(const BasicJsonType& j, typename BasicJsonType::number_unsigned_t& val)
+{
+ get_arithmetic_value(j, val);
+}
+
+template<typename BasicJsonType>
+void from_json(const BasicJsonType& j, typename BasicJsonType::number_integer_t& val)
+{
+ get_arithmetic_value(j, val);
+}
+
+template<typename BasicJsonType, typename EnumType,
+ enable_if_t<std::is_enum<EnumType>::value, int> = 0>
+void from_json(const BasicJsonType& j, EnumType& e)
+{
+ typename std::underlying_type<EnumType>::type val;
+ get_arithmetic_value(j, val);
+ e = static_cast<EnumType>(val);
+}
+
+// forward_list doesn't have an insert method
+template<typename BasicJsonType, typename T, typename Allocator,
+ enable_if_t<std::is_convertible<BasicJsonType, T>::value, int> = 0>
+void from_json(const BasicJsonType& j, std::forward_list<T, Allocator>& l)
+{
+ if (JSON_UNLIKELY(not j.is_array()))
+ {
+ JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name())));
+ }
+ std::transform(j.rbegin(), j.rend(),
+ std::front_inserter(l), [](const BasicJsonType & i)
+ {
+ return i.template get<T>();
+ });
+}
+
+// valarray doesn't have an insert method
+template<typename BasicJsonType, typename T,
+ enable_if_t<std::is_convertible<BasicJsonType, T>::value, int> = 0>
+void from_json(const BasicJsonType& j, std::valarray<T>& l)
+{
+ if (JSON_UNLIKELY(not j.is_array()))
+ {
+ JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name())));
+ }
+ l.resize(j.size());
+ std::copy(j.m_value.array->begin(), j.m_value.array->end(), std::begin(l));
+}
+
+template<typename BasicJsonType>
+void from_json_array_impl(const BasicJsonType& j, typename BasicJsonType::array_t& arr, priority_tag<3> /*unused*/)
+{
+ arr = *j.template get_ptr<const typename BasicJsonType::array_t*>();
+}
+
+template <typename BasicJsonType, typename T, std::size_t N>
+auto from_json_array_impl(const BasicJsonType& j, std::array<T, N>& arr,
+ priority_tag<2> /*unused*/)
+-> decltype(j.template get<T>(), void())
+{
+ for (std::size_t i = 0; i < N; ++i)
+ {
+ arr[i] = j.at(i).template get<T>();
+ }
+}
+
+template<typename BasicJsonType, typename ConstructibleArrayType>
+auto from_json_array_impl(const BasicJsonType& j, ConstructibleArrayType& arr, priority_tag<1> /*unused*/)
+-> decltype(
+ arr.reserve(std::declval<typename ConstructibleArrayType::size_type>()),
+ j.template get<typename ConstructibleArrayType::value_type>(),
+ void())
+{
+ using std::end;
+
+ arr.reserve(j.size());
+ std::transform(j.begin(), j.end(),
+ std::inserter(arr, end(arr)), [](const BasicJsonType & i)
+ {
+ // get<BasicJsonType>() returns *this, this won't call a from_json
+ // method when value_type is BasicJsonType
+ return i.template get<typename ConstructibleArrayType::value_type>();
+ });
+}
+
+template <typename BasicJsonType, typename ConstructibleArrayType>
+void from_json_array_impl(const BasicJsonType& j, ConstructibleArrayType& arr,
+ priority_tag<0> /*unused*/)
+{
+ using std::end;
+
+ std::transform(
+ j.begin(), j.end(), std::inserter(arr, end(arr)),
+ [](const BasicJsonType & i)
+ {
+ // get<BasicJsonType>() returns *this, this won't call a from_json
+ // method when value_type is BasicJsonType
+ return i.template get<typename ConstructibleArrayType::value_type>();
+ });
+}
+
+template <typename BasicJsonType, typename ConstructibleArrayType,
+ enable_if_t <
+ is_constructible_array_type<BasicJsonType, ConstructibleArrayType>::value and
+ not is_constructible_object_type<BasicJsonType, ConstructibleArrayType>::value and
+ not is_constructible_string_type<BasicJsonType, ConstructibleArrayType>::value and
+ not is_basic_json<ConstructibleArrayType>::value,
+ int > = 0 >
+
+auto from_json(const BasicJsonType& j, ConstructibleArrayType& arr)
+-> decltype(from_json_array_impl(j, arr, priority_tag<3> {}),
+j.template get<typename ConstructibleArrayType::value_type>(),
+void())
+{
+ if (JSON_UNLIKELY(not j.is_array()))
+ {
+ JSON_THROW(type_error::create(302, "type must be array, but is " +
+ std::string(j.type_name())));
+ }
+
+ from_json_array_impl(j, arr, priority_tag<3> {});
+}
+
+template<typename BasicJsonType, typename ConstructibleObjectType,
+ enable_if_t<is_constructible_object_type<BasicJsonType, ConstructibleObjectType>::value, int> = 0>
+void from_json(const BasicJsonType& j, ConstructibleObjectType& obj)
+{
+ if (JSON_UNLIKELY(not j.is_object()))
+ {
+ JSON_THROW(type_error::create(302, "type must be object, but is " + std::string(j.type_name())));
+ }
+
+ auto inner_object = j.template get_ptr<const typename BasicJsonType::object_t*>();
+ using value_type = typename ConstructibleObjectType::value_type;
+ std::transform(
+ inner_object->begin(), inner_object->end(),
+ std::inserter(obj, obj.begin()),
+ [](typename BasicJsonType::object_t::value_type const & p)
+ {
+ return value_type(p.first, p.second.template get<typename ConstructibleObjectType::mapped_type>());
+ });
+}
+
+// overload for arithmetic types, not chosen for basic_json template arguments
+// (BooleanType, etc..); note: Is it really necessary to provide explicit
+// overloads for boolean_t etc. in case of a custom BooleanType which is not
+// an arithmetic type?
+template<typename BasicJsonType, typename ArithmeticType,
+ enable_if_t <
+ std::is_arithmetic<ArithmeticType>::value and
+ not std::is_same<ArithmeticType, typename BasicJsonType::number_unsigned_t>::value and
+ not std::is_same<ArithmeticType, typename BasicJsonType::number_integer_t>::value and
+ not std::is_same<ArithmeticType, typename BasicJsonType::number_float_t>::value and
+ not std::is_same<ArithmeticType, typename BasicJsonType::boolean_t>::value,
+ int> = 0>
+void from_json(const BasicJsonType& j, ArithmeticType& val)
+{
+ switch (static_cast<value_t>(j))
+ {
+ case value_t::number_unsigned:
+ {
+ val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_unsigned_t*>());
+ break;
+ }
+ case value_t::number_integer:
+ {
+ val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_integer_t*>());
+ break;
+ }
+ case value_t::number_float:
+ {
+ val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_float_t*>());
+ break;
+ }
+ case value_t::boolean:
+ {
+ val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::boolean_t*>());
+ break;
+ }
+
+ default:
+ JSON_THROW(type_error::create(302, "type must be number, but is " + std::string(j.type_name())));
+ }
+}
+
+template<typename BasicJsonType, typename A1, typename A2>
+void from_json(const BasicJsonType& j, std::pair<A1, A2>& p)
+{
+ p = {j.at(0).template get<A1>(), j.at(1).template get<A2>()};
+}
+
+template<typename BasicJsonType, typename Tuple, std::size_t... Idx>
+void from_json_tuple_impl(const BasicJsonType& j, Tuple& t, index_sequence<Idx...> /*unused*/)
+{
+ t = std::make_tuple(j.at(Idx).template get<typename std::tuple_element<Idx, Tuple>::type>()...);
+}
+
+template<typename BasicJsonType, typename... Args>
+void from_json(const BasicJsonType& j, std::tuple<Args...>& t)
+{
+ from_json_tuple_impl(j, t, index_sequence_for<Args...> {});
+}
+
+template <typename BasicJsonType, typename Key, typename Value, typename Compare, typename Allocator,
+ typename = enable_if_t<not std::is_constructible<
+ typename BasicJsonType::string_t, Key>::value>>
+void from_json(const BasicJsonType& j, std::map<Key, Value, Compare, Allocator>& m)
+{
+ if (JSON_UNLIKELY(not j.is_array()))
+ {
+ JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name())));
+ }
+ for (const auto& p : j)
+ {
+ if (JSON_UNLIKELY(not p.is_array()))
+ {
+ JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(p.type_name())));
+ }
+ m.emplace(p.at(0).template get<Key>(), p.at(1).template get<Value>());
+ }
+}
+
+template <typename BasicJsonType, typename Key, typename Value, typename Hash, typename KeyEqual, typename Allocator,
+ typename = enable_if_t<not std::is_constructible<
+ typename BasicJsonType::string_t, Key>::value>>
+void from_json(const BasicJsonType& j, std::unordered_map<Key, Value, Hash, KeyEqual, Allocator>& m)
+{
+ if (JSON_UNLIKELY(not j.is_array()))
+ {
+ JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name())));
+ }
+ for (const auto& p : j)
+ {
+ if (JSON_UNLIKELY(not p.is_array()))
+ {
+ JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(p.type_name())));
+ }
+ m.emplace(p.at(0).template get<Key>(), p.at(1).template get<Value>());
+ }
+}
+
+struct from_json_fn
+{
+ template<typename BasicJsonType, typename T>
+ auto operator()(const BasicJsonType& j, T& val) const
+ noexcept(noexcept(from_json(j, val)))
+ -> decltype(from_json(j, val), void())
+ {
+ return from_json(j, val);
+ }
+};
+} // namespace detail
+
+/// namespace to hold default `from_json` function
+/// to see why this is required:
+/// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4381.html
+namespace
+{
+constexpr const auto& from_json = detail::static_const<detail::from_json_fn>::value;
+} // namespace
+} // namespace nlohmann
+
+// #include <nlohmann/detail/conversions/to_json.hpp>
+
+
+#include <algorithm> // copy
+#include <ciso646> // or, and, not
+#include <iterator> // begin, end
+#include <string> // string
+#include <tuple> // tuple, get
+#include <type_traits> // is_same, is_constructible, is_floating_point, is_enum, underlying_type
+#include <utility> // move, forward, declval, pair
+#include <valarray> // valarray
+#include <vector> // vector
+
+// #include <nlohmann/detail/iterators/iteration_proxy.hpp>
+
+
+#include <cstddef> // size_t
+#include <iterator> // input_iterator_tag
+#include <string> // string, to_string
+#include <tuple> // tuple_size, get, tuple_element
+
+// #include <nlohmann/detail/meta/type_traits.hpp>
+
+// #include <nlohmann/detail/value_t.hpp>
+
+
+namespace nlohmann
+{
+namespace detail
+{
+template <typename IteratorType> class iteration_proxy_value
+{
+ public:
+ using difference_type = std::ptrdiff_t;
+ using value_type = iteration_proxy_value;
+ using pointer = value_type * ;
+ using reference = value_type & ;
+ using iterator_category = std::input_iterator_tag;
+
+ private:
+ /// the iterator
+ IteratorType anchor;
+ /// an index for arrays (used to create key names)
+ std::size_t array_index = 0;
+ /// last stringified array index
+ mutable std::size_t array_index_last = 0;
+ /// a string representation of the array index
+ mutable std::string array_index_str = "0";
+ /// an empty string (to return a reference for primitive values)
+ const std::string empty_str = "";
+
+ public:
+ explicit iteration_proxy_value(IteratorType it) noexcept : anchor(it) {}
+
+ /// dereference operator (needed for range-based for)
+ iteration_proxy_value& operator*()
+ {
+ return *this;
+ }
+
+ /// increment operator (needed for range-based for)
+ iteration_proxy_value& operator++()
+ {
+ ++anchor;
+ ++array_index;
+
+ return *this;
+ }
+
+ /// equality operator (needed for InputIterator)
+ bool operator==(const iteration_proxy_value& o) const
+ {
+ return anchor == o.anchor;
+ }
+
+ /// inequality operator (needed for range-based for)
+ bool operator!=(const iteration_proxy_value& o) const
+ {
+ return anchor != o.anchor;
+ }
+
+ /// return key of the iterator
+ const std::string& key() const
+ {
+ assert(anchor.m_object != nullptr);
+
+ switch (anchor.m_object->type())
+ {
+ // use integer array index as key
+ case value_t::array:
+ {
+ if (array_index != array_index_last)
+ {
+ array_index_str = std::to_string(array_index);
+ array_index_last = array_index;
+ }
+ return array_index_str;
+ }
+
+ // use key from the object
+ case value_t::object:
+ return anchor.key();
+
+ // use an empty key for all primitive types
+ default:
+ return empty_str;
+ }
+ }
+
+ /// return value of the iterator
+ typename IteratorType::reference value() const
+ {
+ return anchor.value();
+ }
+};
+
+/// proxy class for the items() function
+template<typename IteratorType> class iteration_proxy
+{
+ private:
+ /// the container to iterate
+ typename IteratorType::reference container;
+
+ public:
+ /// construct iteration proxy from a container
+ explicit iteration_proxy(typename IteratorType::reference cont) noexcept
+ : container(cont) {}
+
+ /// return iterator begin (needed for range-based for)
+ iteration_proxy_value<IteratorType> begin() noexcept
+ {
+ return iteration_proxy_value<IteratorType>(container.begin());
+ }
+
+ /// return iterator end (needed for range-based for)
+ iteration_proxy_value<IteratorType> end() noexcept
+ {
+ return iteration_proxy_value<IteratorType>(container.end());
+ }
+};
+// Structured Bindings Support
+// For further reference see https://blog.tartanllama.xyz/structured-bindings/
+// And see https://github.com/nlohmann/json/pull/1391
+template <std::size_t N, typename IteratorType, enable_if_t<N == 0, int> = 0>
+auto get(const nlohmann::detail::iteration_proxy_value<IteratorType>& i) -> decltype(i.key())
+{
+ return i.key();
+}
+// Structured Bindings Support
+// For further reference see https://blog.tartanllama.xyz/structured-bindings/
+// And see https://github.com/nlohmann/json/pull/1391
+template <std::size_t N, typename IteratorType, enable_if_t<N == 1, int> = 0>
+auto get(const nlohmann::detail::iteration_proxy_value<IteratorType>& i) -> decltype(i.value())
+{
+ return i.value();
+}
+} // namespace detail
+} // namespace nlohmann
+
+// The Addition to the STD Namespace is required to add
+// Structured Bindings Support to the iteration_proxy_value class
+// For further reference see https://blog.tartanllama.xyz/structured-bindings/
+// And see https://github.com/nlohmann/json/pull/1391
+namespace std
+{
+#if defined(__clang__)
+ // Fix: https://github.com/nlohmann/json/issues/1401
+ #pragma clang diagnostic push
+ #pragma clang diagnostic ignored "-Wmismatched-tags"
+#endif
+template <typename IteratorType>
+class tuple_size<::nlohmann::detail::iteration_proxy_value<IteratorType>>
+ : public std::integral_constant<std::size_t, 2> {};
+
+template <std::size_t N, typename IteratorType>
+class tuple_element<N, ::nlohmann::detail::iteration_proxy_value<IteratorType >>
+{
+ public:
+ using type = decltype(
+ get<N>(std::declval <
+ ::nlohmann::detail::iteration_proxy_value<IteratorType >> ()));
+};
+#if defined(__clang__)
+ #pragma clang diagnostic pop
+#endif
+} // namespace std
+
+// #include <nlohmann/detail/meta/cpp_future.hpp>
+
+// #include <nlohmann/detail/meta/type_traits.hpp>
+
+// #include <nlohmann/detail/value_t.hpp>
+
+
+namespace nlohmann
+{
+namespace detail
+{
+//////////////////
+// constructors //
+//////////////////
+
+template<value_t> struct external_constructor;
+
+template<>
+struct external_constructor<value_t::boolean>
+{
+ template<typename BasicJsonType>
+ static void construct(BasicJsonType& j, typename BasicJsonType::boolean_t b) noexcept
+ {
+ j.m_type = value_t::boolean;
+ j.m_value = b;
+ j.assert_invariant();
+ }
+};
+
+template<>
+struct external_constructor<value_t::string>
+{
+ template<typename BasicJsonType>
+ static void construct(BasicJsonType& j, const typename BasicJsonType::string_t& s)
+ {
+ j.m_type = value_t::string;
+ j.m_value = s;
+ j.assert_invariant();
+ }
+
+ template<typename BasicJsonType>
+ static void construct(BasicJsonType& j, typename BasicJsonType::string_t&& s)
+ {
+ j.m_type = value_t::string;
+ j.m_value = std::move(s);
+ j.assert_invariant();
+ }
+
+ template<typename BasicJsonType, typename CompatibleStringType,
+ enable_if_t<not std::is_same<CompatibleStringType, typename BasicJsonType::string_t>::value,
+ int> = 0>
+ static void construct(BasicJsonType& j, const CompatibleStringType& str)
+ {
+ j.m_type = value_t::string;
+ j.m_value.string = j.template create<typename BasicJsonType::string_t>(str);
+ j.assert_invariant();
+ }
+};
+
+template<>
+struct external_constructor<value_t::number_float>
+{
+ template<typename BasicJsonType>
+ static void construct(BasicJsonType& j, typename BasicJsonType::number_float_t val) noexcept
+ {
+ j.m_type = value_t::number_float;
+ j.m_value = val;
+ j.assert_invariant();
+ }
+};
+
+template<>
+struct external_constructor<value_t::number_unsigned>
+{
+ template<typename BasicJsonType>
+ static void construct(BasicJsonType& j, typename BasicJsonType::number_unsigned_t val) noexcept
+ {
+ j.m_type = value_t::number_unsigned;
+ j.m_value = val;
+ j.assert_invariant();
+ }
+};
+
+template<>
+struct external_constructor<value_t::number_integer>
+{
+ template<typename BasicJsonType>
+ static void construct(BasicJsonType& j, typename BasicJsonType::number_integer_t val) noexcept
+ {
+ j.m_type = value_t::number_integer;
+ j.m_value = val;
+ j.assert_invariant();
+ }
+};
+
+template<>
+struct external_constructor<value_t::array>
+{
+ template<typename BasicJsonType>
+ static void construct(BasicJsonType& j, const typename BasicJsonType::array_t& arr)
+ {
+ j.m_type = value_t::array;
+ j.m_value = arr;
+ j.assert_invariant();
+ }
+
+ template<typename BasicJsonType>
+ static void construct(BasicJsonType& j, typename BasicJsonType::array_t&& arr)
+ {
+ j.m_type = value_t::array;
+ j.m_value = std::move(arr);
+ j.assert_invariant();
+ }
+
+ template<typename BasicJsonType, typename CompatibleArrayType,
+ enable_if_t<not std::is_same<CompatibleArrayType, typename BasicJsonType::array_t>::value,
+ int> = 0>
+ static void construct(BasicJsonType& j, const CompatibleArrayType& arr)
+ {
+ using std::begin;
+ using std::end;
+ j.m_type = value_t::array;
+ j.m_value.array = j.template create<typename BasicJsonType::array_t>(begin(arr), end(arr));
+ j.assert_invariant();
+ }
+
+ template<typename BasicJsonType>
+ static void construct(BasicJsonType& j, const std::vector<bool>& arr)
+ {
+ j.m_type = value_t::array;
+ j.m_value = value_t::array;
+ j.m_value.array->reserve(arr.size());
+ for (const bool x : arr)
+ {
+ j.m_value.array->push_back(x);
+ }
+ j.assert_invariant();
+ }
+
+ template<typename BasicJsonType, typename T,
+ enable_if_t<std::is_convertible<T, BasicJsonType>::value, int> = 0>
+ static void construct(BasicJsonType& j, const std::valarray<T>& arr)
+ {
+ j.m_type = value_t::array;
+ j.m_value = value_t::array;
+ j.m_value.array->resize(arr.size());
+ std::copy(std::begin(arr), std::end(arr), j.m_value.array->begin());
+ j.assert_invariant();
+ }
+};
+
+template<>
+struct external_constructor<value_t::object>
+{
+ template<typename BasicJsonType>
+ static void construct(BasicJsonType& j, const typename BasicJsonType::object_t& obj)
+ {
+ j.m_type = value_t::object;
+ j.m_value = obj;
+ j.assert_invariant();
+ }
+
+ template<typename BasicJsonType>
+ static void construct(BasicJsonType& j, typename BasicJsonType::object_t&& obj)
+ {
+ j.m_type = value_t::object;
+ j.m_value = std::move(obj);
+ j.assert_invariant();
+ }
+
+ template<typename BasicJsonType, typename CompatibleObjectType,
+ enable_if_t<not std::is_same<CompatibleObjectType, typename BasicJsonType::object_t>::value, int> = 0>
+ static void construct(BasicJsonType& j, const CompatibleObjectType& obj)
+ {
+ using std::begin;
+ using std::end;
+
+ j.m_type = value_t::object;
+ j.m_value.object = j.template create<typename BasicJsonType::object_t>(begin(obj), end(obj));
+ j.assert_invariant();
+ }
+};
+
+/////////////
+// to_json //
+/////////////
+
+template<typename BasicJsonType, typename T,
+ enable_if_t<std::is_same<T, typename BasicJsonType::boolean_t>::value, int> = 0>
+void to_json(BasicJsonType& j, T b) noexcept
+{
+ external_constructor<value_t::boolean>::construct(j, b);
+}
+
+template<typename BasicJsonType, typename CompatibleString,
+ enable_if_t<std::is_constructible<typename BasicJsonType::string_t, CompatibleString>::value, int> = 0>
+void to_json(BasicJsonType& j, const CompatibleString& s)
+{
+ external_constructor<value_t::string>::construct(j, s);
+}
+
+template<typename BasicJsonType>
+void to_json(BasicJsonType& j, typename BasicJsonType::string_t&& s)
+{
+ external_constructor<value_t::string>::construct(j, std::move(s));
+}
+
+template<typename BasicJsonType, typename FloatType,
+ enable_if_t<std::is_floating_point<FloatType>::value, int> = 0>
+void to_json(BasicJsonType& j, FloatType val) noexcept
+{
+ external_constructor<value_t::number_float>::construct(j, static_cast<typename BasicJsonType::number_float_t>(val));
+}
+
+template<typename BasicJsonType, typename CompatibleNumberUnsignedType,
+ enable_if_t<is_compatible_integer_type<typename BasicJsonType::number_unsigned_t, CompatibleNumberUnsignedType>::value, int> = 0>
+void to_json(BasicJsonType& j, CompatibleNumberUnsignedType val) noexcept
+{
+ external_constructor<value_t::number_unsigned>::construct(j, static_cast<typename BasicJsonType::number_unsigned_t>(val));
+}
+
+template<typename BasicJsonType, typename CompatibleNumberIntegerType,
+ enable_if_t<is_compatible_integer_type<typename BasicJsonType::number_integer_t, CompatibleNumberIntegerType>::value, int> = 0>
+void to_json(BasicJsonType& j, CompatibleNumberIntegerType val) noexcept
+{
+ external_constructor<value_t::number_integer>::construct(j, static_cast<typename BasicJsonType::number_integer_t>(val));
+}
+
+template<typename BasicJsonType, typename EnumType,
+ enable_if_t<std::is_enum<EnumType>::value, int> = 0>
+void to_json(BasicJsonType& j, EnumType e) noexcept
+{
+ using underlying_type = typename std::underlying_type<EnumType>::type;
+ external_constructor<value_t::number_integer>::construct(j, static_cast<underlying_type>(e));
+}
+
+template<typename BasicJsonType>
+void to_json(BasicJsonType& j, const std::vector<bool>& e)
+{
+ external_constructor<value_t::array>::construct(j, e);
+}
+
+template <typename BasicJsonType, typename CompatibleArrayType,
+ enable_if_t<is_compatible_array_type<BasicJsonType,
+ CompatibleArrayType>::value and
+ not is_compatible_object_type<
+ BasicJsonType, CompatibleArrayType>::value and
+ not is_compatible_string_type<BasicJsonType, CompatibleArrayType>::value and
+ not is_basic_json<CompatibleArrayType>::value,
+ int> = 0>
+void to_json(BasicJsonType& j, const CompatibleArrayType& arr)
+{
+ external_constructor<value_t::array>::construct(j, arr);
+}
+
+template<typename BasicJsonType, typename T,
+ enable_if_t<std::is_convertible<T, BasicJsonType>::value, int> = 0>
+void to_json(BasicJsonType& j, const std::valarray<T>& arr)
+{
+ external_constructor<value_t::array>::construct(j, std::move(arr));
+}
+
+template<typename BasicJsonType>
+void to_json(BasicJsonType& j, typename BasicJsonType::array_t&& arr)
+{
+ external_constructor<value_t::array>::construct(j, std::move(arr));
+}
+
+template<typename BasicJsonType, typename CompatibleObjectType,
+ enable_if_t<is_compatible_object_type<BasicJsonType, CompatibleObjectType>::value and not is_basic_json<CompatibleObjectType>::value, int> = 0>
+void to_json(BasicJsonType& j, const CompatibleObjectType& obj)
+{
+ external_constructor<value_t::object>::construct(j, obj);
+}
+
+template<typename BasicJsonType>
+void to_json(BasicJsonType& j, typename BasicJsonType::object_t&& obj)
+{
+ external_constructor<value_t::object>::construct(j, std::move(obj));
+}
+
+template <
+ typename BasicJsonType, typename T, std::size_t N,
+ enable_if_t<not std::is_constructible<typename BasicJsonType::string_t,
+ const T(&)[N]>::value,
+ int> = 0 >
+void to_json(BasicJsonType& j, const T(&arr)[N])
+{
+ external_constructor<value_t::array>::construct(j, arr);
+}
+
+template<typename BasicJsonType, typename... Args>
+void to_json(BasicJsonType& j, const std::pair<Args...>& p)
+{
+ j = { p.first, p.second };
+}
+
+// for https://github.com/nlohmann/json/pull/1134
+template < typename BasicJsonType, typename T,
+ enable_if_t<std::is_same<T, iteration_proxy_value<typename BasicJsonType::iterator>>::value, int> = 0>
+void to_json(BasicJsonType& j, const T& b)
+{
+ j = { {b.key(), b.value()} };
+}
+
+template<typename BasicJsonType, typename Tuple, std::size_t... Idx>
+void to_json_tuple_impl(BasicJsonType& j, const Tuple& t, index_sequence<Idx...> /*unused*/)
+{
+ j = { std::get<Idx>(t)... };
+}
+
+template<typename BasicJsonType, typename... Args>
+void to_json(BasicJsonType& j, const std::tuple<Args...>& t)
+{
+ to_json_tuple_impl(j, t, index_sequence_for<Args...> {});
+}
+
+struct to_json_fn
+{
+ template<typename BasicJsonType, typename T>
+ auto operator()(BasicJsonType& j, T&& val) const noexcept(noexcept(to_json(j, std::forward<T>(val))))
+ -> decltype(to_json(j, std::forward<T>(val)), void())
+ {
+ return to_json(j, std::forward<T>(val));
+ }
+};
+} // namespace detail
+
+/// namespace to hold default `to_json` function
+namespace
+{
+constexpr const auto& to_json = detail::static_const<detail::to_json_fn>::value;
+} // namespace
+} // namespace nlohmann
+
+
+namespace nlohmann
+{
+
+template<typename, typename>
+struct adl_serializer
+{
+ /*!
+ @brief convert a JSON value to any value type
+
+ This function is usually called by the `get()` function of the
+ @ref basic_json class (either explicit or via conversion operators).
+
+ @param[in] j JSON value to read from
+ @param[in,out] val value to write to
+ */
+ template<typename BasicJsonType, typename ValueType>
+ static auto from_json(BasicJsonType&& j, ValueType& val) noexcept(
+ noexcept(::nlohmann::from_json(std::forward<BasicJsonType>(j), val)))
+ -> decltype(::nlohmann::from_json(std::forward<BasicJsonType>(j), val), void())
+ {
+ ::nlohmann::from_json(std::forward<BasicJsonType>(j), val);
+ }
+
+ /*!
+ @brief convert any value type to a JSON value
+
+ This function is usually called by the constructors of the @ref basic_json
+ class.
+
+ @param[in,out] j JSON value to write to
+ @param[in] val value to read from
+ */
+ template <typename BasicJsonType, typename ValueType>
+ static auto to_json(BasicJsonType& j, ValueType&& val) noexcept(
+ noexcept(::nlohmann::to_json(j, std::forward<ValueType>(val))))
+ -> decltype(::nlohmann::to_json(j, std::forward<ValueType>(val)), void())
+ {
+ ::nlohmann::to_json(j, std::forward<ValueType>(val));
+ }
+};
+
+} // namespace nlohmann
+
+// #include <nlohmann/detail/conversions/from_json.hpp>
+
+// #include <nlohmann/detail/conversions/to_json.hpp>
+
+// #include <nlohmann/detail/exceptions.hpp>
+
+// #include <nlohmann/detail/input/binary_reader.hpp>
+
+
+#include <algorithm> // generate_n
+#include <array> // array
+#include <cassert> // assert
+#include <cmath> // ldexp
+#include <cstddef> // size_t
+#include <cstdint> // uint8_t, uint16_t, uint32_t, uint64_t
+#include <cstdio> // snprintf
+#include <cstring> // memcpy
+#include <iterator> // back_inserter
+#include <limits> // numeric_limits
+#include <string> // char_traits, string
+#include <utility> // make_pair, move
+
+// #include <nlohmann/detail/exceptions.hpp>
+
+// #include <nlohmann/detail/input/input_adapters.hpp>
+
+
+#include <array> // array
+#include <cassert> // assert
+#include <cstddef> // size_t
+#include <cstdio> //FILE *
+#include <cstring> // strlen
+#include <istream> // istream
+#include <iterator> // begin, end, iterator_traits, random_access_iterator_tag, distance, next
+#include <memory> // shared_ptr, make_shared, addressof
+#include <numeric> // accumulate
+#include <string> // string, char_traits
+#include <type_traits> // enable_if, is_base_of, is_pointer, is_integral, remove_pointer
+#include <utility> // pair, declval
+
+// #include <nlohmann/detail/iterators/iterator_traits.hpp>
+
+// #include <nlohmann/detail/macro_scope.hpp>
+
+
+namespace nlohmann
+{
+namespace detail
+{
+/// the supported input formats
+enum class input_format_t { json, cbor, msgpack, ubjson, bson };
+
+////////////////////
+// input adapters //
+////////////////////
+
+/*!
+@brief abstract input adapter interface
+
+Produces a stream of std::char_traits<char>::int_type characters from a
+std::istream, a buffer, or some other input type. Accepts the return of
+exactly one non-EOF character for future input. The int_type characters
+returned consist of all valid char values as positive values (typically
+unsigned char), plus an EOF value outside that range, specified by the value
+of the function std::char_traits<char>::eof(). This value is typically -1, but
+could be any arbitrary value which is not a valid char value.
+*/
+struct input_adapter_protocol
+{
+ /// get a character [0,255] or std::char_traits<char>::eof().
+ virtual std::char_traits<char>::int_type get_character() = 0;
+ virtual ~input_adapter_protocol() = default;
+};
+
+/// a type to simplify interfaces
+using input_adapter_t = std::shared_ptr<input_adapter_protocol>;
+
+/*!
+Input adapter for stdio file access. This adapter read only 1 byte and do not use any
+ buffer. This adapter is a very low level adapter.
+*/
+class file_input_adapter : public input_adapter_protocol
+{
+ public:
+ explicit file_input_adapter(std::FILE* f) noexcept
+ : m_file(f)
+ {}
+
+ // make class move-only
+ file_input_adapter(const file_input_adapter&) = delete;
+ file_input_adapter(file_input_adapter&&) = default;
+ file_input_adapter& operator=(const file_input_adapter&) = delete;
+ file_input_adapter& operator=(file_input_adapter&&) = default;
+ ~file_input_adapter() override = default;
+
+ std::char_traits<char>::int_type get_character() noexcept override
+ {
+ return std::fgetc(m_file);
+ }
+
+ private:
+ /// the file pointer to read from
+ std::FILE* m_file;
+};
+
+
+/*!
+Input adapter for a (caching) istream. Ignores a UFT Byte Order Mark at
+beginning of input. Does not support changing the underlying std::streambuf
+in mid-input. Maintains underlying std::istream and std::streambuf to support
+subsequent use of standard std::istream operations to process any input
+characters following those used in parsing the JSON input. Clears the
+std::istream flags; any input errors (e.g., EOF) will be detected by the first
+subsequent call for input from the std::istream.
+*/
+class input_stream_adapter : public input_adapter_protocol
+{
+ public:
+ ~input_stream_adapter() override
+ {
+ // clear stream flags; we use underlying streambuf I/O, do not
+ // maintain ifstream flags, except eof
+ is.clear(is.rdstate() & std::ios::eofbit);
+ }
+
+ explicit input_stream_adapter(std::istream& i)
+ : is(i), sb(*i.rdbuf())
+ {}
+
+ // delete because of pointer members
+ input_stream_adapter(const input_stream_adapter&) = delete;
+ input_stream_adapter& operator=(input_stream_adapter&) = delete;
+ input_stream_adapter(input_stream_adapter&&) = delete;
+ input_stream_adapter& operator=(input_stream_adapter&&) = delete;
+
+ // std::istream/std::streambuf use std::char_traits<char>::to_int_type, to
+ // ensure that std::char_traits<char>::eof() and the character 0xFF do not
+ // end up as the same value, eg. 0xFFFFFFFF.
+ std::char_traits<char>::int_type get_character() override
+ {
+ auto res = sb.sbumpc();
+ // set eof manually, as we don't use the istream interface.
+ if (res == EOF)
+ {
+ is.clear(is.rdstate() | std::ios::eofbit);
+ }
+ return res;
+ }
+
+ private:
+ /// the associated input stream
+ std::istream& is;
+ std::streambuf& sb;
+};
+
+/// input adapter for buffer input
+class input_buffer_adapter : public input_adapter_protocol
+{
+ public:
+ input_buffer_adapter(const char* b, const std::size_t l) noexcept
+ : cursor(b), limit(b + l)
+ {}
+
+ // delete because of pointer members
+ input_buffer_adapter(const input_buffer_adapter&) = delete;
+ input_buffer_adapter& operator=(input_buffer_adapter&) = delete;
+ input_buffer_adapter(input_buffer_adapter&&) = delete;
+ input_buffer_adapter& operator=(input_buffer_adapter&&) = delete;
+ ~input_buffer_adapter() override = default;
+
+ std::char_traits<char>::int_type get_character() noexcept override
+ {
+ if (JSON_LIKELY(cursor < limit))
+ {
+ return std::char_traits<char>::to_int_type(*(cursor++));
+ }
+
+ return std::char_traits<char>::eof();
+ }
+
+ private:
+ /// pointer to the current character
+ const char* cursor;
+ /// pointer past the last character
+ const char* const limit;
+};
+
+template<typename WideStringType, size_t T>
+struct wide_string_input_helper
+{
+ // UTF-32
+ static void fill_buffer(const WideStringType& str,
+ size_t& current_wchar,
+ std::array<std::char_traits<char>::int_type, 4>& utf8_bytes,
+ size_t& utf8_bytes_index,
+ size_t& utf8_bytes_filled)
+ {
+ utf8_bytes_index = 0;
+
+ if (current_wchar == str.size())
+ {
+ utf8_bytes[0] = std::char_traits<char>::eof();
+ utf8_bytes_filled = 1;
+ }
+ else
+ {
+ // get the current character
+ const auto wc = static_cast<unsigned int>(str[current_wchar++]);
+
+ // UTF-32 to UTF-8 encoding
+ if (wc < 0x80)
+ {
+ utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(wc);
+ utf8_bytes_filled = 1;
+ }
+ else if (wc <= 0x7FF)
+ {
+ utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xC0u | ((wc >> 6u) & 0x1Fu));
+ utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | (wc & 0x3Fu));
+ utf8_bytes_filled = 2;
+ }
+ else if (wc <= 0xFFFF)
+ {
+ utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xE0u | ((wc >> 12u) & 0x0Fu));
+ utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | ((wc >> 6u) & 0x3Fu));
+ utf8_bytes[2] = static_cast<std::char_traits<char>::int_type>(0x80u | (wc & 0x3Fu));
+ utf8_bytes_filled = 3;
+ }
+ else if (wc <= 0x10FFFF)
+ {
+ utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xF0u | ((wc >> 18u) & 0x07u));
+ utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | ((wc >> 12u) & 0x3Fu));
+ utf8_bytes[2] = static_cast<std::char_traits<char>::int_type>(0x80u | ((wc >> 6u) & 0x3Fu));
+ utf8_bytes[3] = static_cast<std::char_traits<char>::int_type>(0x80u | (wc & 0x3Fu));
+ utf8_bytes_filled = 4;
+ }
+ else
+ {
+ // unknown character
+ utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(wc);
+ utf8_bytes_filled = 1;
+ }
+ }
+ }
+};
+
+template<typename WideStringType>
+struct wide_string_input_helper<WideStringType, 2>
+{
+ // UTF-16
+ static void fill_buffer(const WideStringType& str,
+ size_t& current_wchar,
+ std::array<std::char_traits<char>::int_type, 4>& utf8_bytes,
+ size_t& utf8_bytes_index,
+ size_t& utf8_bytes_filled)
+ {
+ utf8_bytes_index = 0;
+
+ if (current_wchar == str.size())
+ {
+ utf8_bytes[0] = std::char_traits<char>::eof();
+ utf8_bytes_filled = 1;
+ }
+ else
+ {
+ // get the current character
+ const auto wc = static_cast<unsigned int>(str[current_wchar++]);
+
+ // UTF-16 to UTF-8 encoding
+ if (wc < 0x80)
+ {
+ utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(wc);
+ utf8_bytes_filled = 1;
+ }
+ else if (wc <= 0x7FF)
+ {
+ utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xC0u | ((wc >> 6u)));
+ utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | (wc & 0x3Fu));
+ utf8_bytes_filled = 2;
+ }
+ else if (0xD800 > wc or wc >= 0xE000)
+ {
+ utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xE0u | ((wc >> 12u)));
+ utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | ((wc >> 6u) & 0x3Fu));
+ utf8_bytes[2] = static_cast<std::char_traits<char>::int_type>(0x80u | (wc & 0x3Fu));
+ utf8_bytes_filled = 3;
+ }
+ else
+ {
+ if (current_wchar < str.size())
+ {
+ const auto wc2 = static_cast<unsigned int>(str[current_wchar++]);
+ const auto charcode = 0x10000u + (((wc & 0x3FFu) << 10u) | (wc2 & 0x3FFu));
+ utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xF0u | (charcode >> 18u));
+ utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | ((charcode >> 12u) & 0x3Fu));
+ utf8_bytes[2] = static_cast<std::char_traits<char>::int_type>(0x80u | ((charcode >> 6u) & 0x3Fu));
+ utf8_bytes[3] = static_cast<std::char_traits<char>::int_type>(0x80u | (charcode & 0x3Fu));
+ utf8_bytes_filled = 4;
+ }
+ else
+ {
+ // unknown character
+ ++current_wchar;
+ utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(wc);
+ utf8_bytes_filled = 1;
+ }
+ }
+ }
+ }
+};
+
+template<typename WideStringType>
+class wide_string_input_adapter : public input_adapter_protocol
+{
+ public:
+ explicit wide_string_input_adapter(const WideStringType& w) noexcept
+ : str(w)
+ {}
+
+ std::char_traits<char>::int_type get_character() noexcept override
+ {
+ // check if buffer needs to be filled
+ if (utf8_bytes_index == utf8_bytes_filled)
+ {
+ fill_buffer<sizeof(typename WideStringType::value_type)>();
+
+ assert(utf8_bytes_filled > 0);
+ assert(utf8_bytes_index == 0);
+ }
+
+ // use buffer
+ assert(utf8_bytes_filled > 0);
+ assert(utf8_bytes_index < utf8_bytes_filled);
+ return utf8_bytes[utf8_bytes_index++];
+ }
+
+ private:
+ template<size_t T>
+ void fill_buffer()
+ {
+ wide_string_input_helper<WideStringType, T>::fill_buffer(str, current_wchar, utf8_bytes, utf8_bytes_index, utf8_bytes_filled);
+ }
+
+ /// the wstring to process
+ const WideStringType& str;
+
+ /// index of the current wchar in str
+ std::size_t current_wchar = 0;
+
+ /// a buffer for UTF-8 bytes
+ std::array<std::char_traits<char>::int_type, 4> utf8_bytes = {{0, 0, 0, 0}};
+
+ /// index to the utf8_codes array for the next valid byte
+ std::size_t utf8_bytes_index = 0;
+ /// number of valid bytes in the utf8_codes array
+ std::size_t utf8_bytes_filled = 0;
+};
+
+class input_adapter
+{
+ public:
+ // native support
+ input_adapter(std::FILE* file)
+ : ia(std::make_shared<file_input_adapter>(file)) {}
+ /// input adapter for input stream
+ input_adapter(std::istream& i)
+ : ia(std::make_shared<input_stream_adapter>(i)) {}
+
+ /// input adapter for input stream
+ input_adapter(std::istream&& i)
+ : ia(std::make_shared<input_stream_adapter>(i)) {}
+
+ input_adapter(const std::wstring& ws)
+ : ia(std::make_shared<wide_string_input_adapter<std::wstring>>(ws)) {}
+
+ input_adapter(const std::u16string& ws)
+ : ia(std::make_shared<wide_string_input_adapter<std::u16string>>(ws)) {}
+
+ input_adapter(const std::u32string& ws)
+ : ia(std::make_shared<wide_string_input_adapter<std::u32string>>(ws)) {}
+
+ /// input adapter for buffer
+ template<typename CharT,
+ typename std::enable_if<
+ std::is_pointer<CharT>::value and
+ std::is_integral<typename std::remove_pointer<CharT>::type>::value and
+ sizeof(typename std::remove_pointer<CharT>::type) == 1,
+ int>::type = 0>
+ input_adapter(CharT b, std::size_t l)
+ : ia(std::make_shared<input_buffer_adapter>(reinterpret_cast<const char*>(b), l)) {}
+
+ // derived support
+
+ /// input adapter for string literal
+ template<typename CharT,
+ typename std::enable_if<
+ std::is_pointer<CharT>::value and
+ std::is_integral<typename std::remove_pointer<CharT>::type>::value and
+ sizeof(typename std::remove_pointer<CharT>::type) == 1,
+ int>::type = 0>
+ input_adapter(CharT b)
+ : input_adapter(reinterpret_cast<const char*>(b),
+ std::strlen(reinterpret_cast<const char*>(b))) {}
+
+ /// input adapter for iterator range with contiguous storage
+ template<class IteratorType,
+ typename std::enable_if<
+ std::is_same<typename iterator_traits<IteratorType>::iterator_category, std::random_access_iterator_tag>::value,
+ int>::type = 0>
+ input_adapter(IteratorType first, IteratorType last)
+ {
+#ifndef NDEBUG
+ // assertion to check that the iterator range is indeed contiguous,
+ // see http://stackoverflow.com/a/35008842/266378 for more discussion
+ const auto is_contiguous = std::accumulate(
+ first, last, std::pair<bool, int>(true, 0),
+ [&first](std::pair<bool, int> res, decltype(*first) val)
+ {
+ res.first &= (val == *(std::next(std::addressof(*first), res.second++)));
+ return res;
+ }).first;
+ assert(is_contiguous);
+#endif
+
+ // assertion to check that each element is 1 byte long
+ static_assert(
+ sizeof(typename iterator_traits<IteratorType>::value_type) == 1,
+ "each element in the iterator range must have the size of 1 byte");
+
+ const auto len = static_cast<size_t>(std::distance(first, last));
+ if (JSON_LIKELY(len > 0))
+ {
+ // there is at least one element: use the address of first
+ ia = std::make_shared<input_buffer_adapter>(reinterpret_cast<const char*>(&(*first)), len);
+ }
+ else
+ {
+ // the address of first cannot be used: use nullptr
+ ia = std::make_shared<input_buffer_adapter>(nullptr, len);
+ }
+ }
+
+ /// input adapter for array
+ template<class T, std::size_t N>
+ input_adapter(T (&array)[N])
+ : input_adapter(std::begin(array), std::end(array)) {}
+
+ /// input adapter for contiguous container
+ template<class ContiguousContainer, typename
+ std::enable_if<not std::is_pointer<ContiguousContainer>::value and
+ std::is_base_of<std::random_access_iterator_tag, typename iterator_traits<decltype(std::begin(std::declval<ContiguousContainer const>()))>::iterator_category>::value,
+ int>::type = 0>
+ input_adapter(const ContiguousContainer& c)
+ : input_adapter(std::begin(c), std::end(c)) {}
+
+ operator input_adapter_t()
+ {
+ return ia;
+ }
+
+ private:
+ /// the actual adapter
+ input_adapter_t ia = nullptr;
+};
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/detail/input/json_sax.hpp>
+
+
+#include <cassert> // assert
+#include <cstddef>
+#include <string> // string
+#include <utility> // move
+#include <vector> // vector
+
+// #include <nlohmann/detail/exceptions.hpp>
+
+// #include <nlohmann/detail/macro_scope.hpp>
+
+
+namespace nlohmann
+{
+
+/*!
+@brief SAX interface
+
+This class describes the SAX interface used by @ref nlohmann::json::sax_parse.
+Each function is called in different situations while the input is parsed. The
+boolean return value informs the parser whether to continue processing the
+input.
+*/
+template<typename BasicJsonType>
+struct json_sax
+{
+ /// type for (signed) integers
+ using number_integer_t = typename BasicJsonType::number_integer_t;
+ /// type for unsigned integers
+ using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
+ /// type for floating-point numbers
+ using number_float_t = typename BasicJsonType::number_float_t;
+ /// type for strings
+ using string_t = typename BasicJsonType::string_t;
+
+ /*!
+ @brief a null value was read
+ @return whether parsing should proceed
+ */
+ virtual bool null() = 0;
+
+ /*!
+ @brief a boolean value was read
+ @param[in] val boolean value
+ @return whether parsing should proceed
+ */
+ virtual bool boolean(bool val) = 0;
+
+ /*!
+ @brief an integer number was read
+ @param[in] val integer value
+ @return whether parsing should proceed
+ */
+ virtual bool number_integer(number_integer_t val) = 0;
+
+ /*!
+ @brief an unsigned integer number was read
+ @param[in] val unsigned integer value
+ @return whether parsing should proceed
+ */
+ virtual bool number_unsigned(number_unsigned_t val) = 0;
+
+ /*!
+ @brief an floating-point number was read
+ @param[in] val floating-point value
+ @param[in] s raw token value
+ @return whether parsing should proceed
+ */
+ virtual bool number_float(number_float_t val, const string_t& s) = 0;
+
+ /*!
+ @brief a string was read
+ @param[in] val string value
+ @return whether parsing should proceed
+ @note It is safe to move the passed string.
+ */
+ virtual bool string(string_t& val) = 0;
+
+ /*!
+ @brief the beginning of an object was read
+ @param[in] elements number of object elements or -1 if unknown
+ @return whether parsing should proceed
+ @note binary formats may report the number of elements
+ */
+ virtual bool start_object(std::size_t elements) = 0;
+
+ /*!
+ @brief an object key was read
+ @param[in] val object key
+ @return whether parsing should proceed
+ @note It is safe to move the passed string.
+ */
+ virtual bool key(string_t& val) = 0;
+
+ /*!
+ @brief the end of an object was read
+ @return whether parsing should proceed
+ */
+ virtual bool end_object() = 0;
+
+ /*!
+ @brief the beginning of an array was read
+ @param[in] elements number of array elements or -1 if unknown
+ @return whether parsing should proceed
+ @note binary formats may report the number of elements
+ */
+ virtual bool start_array(std::size_t elements) = 0;
+
+ /*!
+ @brief the end of an array was read
+ @return whether parsing should proceed
+ */
+ virtual bool end_array() = 0;
+
+ /*!
+ @brief a parse error occurred
+ @param[in] position the position in the input where the error occurs
+ @param[in] last_token the last read token
+ @param[in] ex an exception object describing the error
+ @return whether parsing should proceed (must return false)
+ */
+ virtual bool parse_error(std::size_t position,
+ const std::string& last_token,
+ const detail::exception& ex) = 0;
+
+ virtual ~json_sax() = default;
+};
+
+
+namespace detail
+{
+/*!
+@brief SAX implementation to create a JSON value from SAX events
+
+This class implements the @ref json_sax interface and processes the SAX events
+to create a JSON value which makes it basically a DOM parser. The structure or
+hierarchy of the JSON value is managed by the stack `ref_stack` which contains
+a pointer to the respective array or object for each recursion depth.
+
+After successful parsing, the value that is passed by reference to the
+constructor contains the parsed value.
+
+@tparam BasicJsonType the JSON type
+*/
+template<typename BasicJsonType>
+class json_sax_dom_parser
+{
+ public:
+ using number_integer_t = typename BasicJsonType::number_integer_t;
+ using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
+ using number_float_t = typename BasicJsonType::number_float_t;
+ using string_t = typename BasicJsonType::string_t;
+
+ /*!
+ @param[in, out] r reference to a JSON value that is manipulated while
+ parsing
+ @param[in] allow_exceptions_ whether parse errors yield exceptions
+ */
+ explicit json_sax_dom_parser(BasicJsonType& r, const bool allow_exceptions_ = true)
+ : root(r), allow_exceptions(allow_exceptions_)
+ {}
+
+ // make class move-only
+ json_sax_dom_parser(const json_sax_dom_parser&) = delete;
+ json_sax_dom_parser(json_sax_dom_parser&&) = default;
+ json_sax_dom_parser& operator=(const json_sax_dom_parser&) = delete;
+ json_sax_dom_parser& operator=(json_sax_dom_parser&&) = default;
+ ~json_sax_dom_parser() = default;
+
+ bool null()
+ {
+ handle_value(nullptr);
+ return true;
+ }
+
+ bool boolean(bool val)
+ {
+ handle_value(val);
+ return true;
+ }
+
+ bool number_integer(number_integer_t val)
+ {
+ handle_value(val);
+ return true;
+ }
+
+ bool number_unsigned(number_unsigned_t val)
+ {
+ handle_value(val);
+ return true;
+ }
+
+ bool number_float(number_float_t val, const string_t& /*unused*/)
+ {
+ handle_value(val);
+ return true;
+ }
+
+ bool string(string_t& val)
+ {
+ handle_value(val);
+ return true;
+ }
+
+ bool start_object(std::size_t len)
+ {
+ ref_stack.push_back(handle_value(BasicJsonType::value_t::object));
+
+ if (JSON_UNLIKELY(len != std::size_t(-1) and len > ref_stack.back()->max_size()))
+ {
+ JSON_THROW(out_of_range::create(408,
+ "excessive object size: " + std::to_string(len)));
+ }
+
+ return true;
+ }
+
+ bool key(string_t& val)
+ {
+ // add null at given key and store the reference for later
+ object_element = &(ref_stack.back()->m_value.object->operator[](val));
+ return true;
+ }
+
+ bool end_object()
+ {
+ ref_stack.pop_back();
+ return true;
+ }
+
+ bool start_array(std::size_t len)
+ {
+ ref_stack.push_back(handle_value(BasicJsonType::value_t::array));
+
+ if (JSON_UNLIKELY(len != std::size_t(-1) and len > ref_stack.back()->max_size()))
+ {
+ JSON_THROW(out_of_range::create(408,
+ "excessive array size: " + std::to_string(len)));
+ }
+
+ return true;
+ }
+
+ bool end_array()
+ {
+ ref_stack.pop_back();
+ return true;
+ }
+
+ bool parse_error(std::size_t /*unused*/, const std::string& /*unused*/,
+ const detail::exception& ex)
+ {
+ errored = true;
+ if (allow_exceptions)
+ {
+ // determine the proper exception type from the id
+ switch ((ex.id / 100) % 100)
+ {
+ case 1:
+ JSON_THROW(*static_cast<const detail::parse_error*>(&ex));
+ case 4:
+ JSON_THROW(*static_cast<const detail::out_of_range*>(&ex));
+ // LCOV_EXCL_START
+ case 2:
+ JSON_THROW(*static_cast<const detail::invalid_iterator*>(&ex));
+ case 3:
+ JSON_THROW(*static_cast<const detail::type_error*>(&ex));
+ case 5:
+ JSON_THROW(*static_cast<const detail::other_error*>(&ex));
+ default:
+ assert(false);
+ // LCOV_EXCL_STOP
+ }
+ }
+ return false;
+ }
+
+ constexpr bool is_errored() const
+ {
+ return errored;
+ }
+
+ private:
+ /*!
+ @invariant If the ref stack is empty, then the passed value will be the new
+ root.
+ @invariant If the ref stack contains a value, then it is an array or an
+ object to which we can add elements
+ */
+ template<typename Value>
+ BasicJsonType* handle_value(Value&& v)
+ {
+ if (ref_stack.empty())
+ {
+ root = BasicJsonType(std::forward<Value>(v));
+ return &root;
+ }
+
+ assert(ref_stack.back()->is_array() or ref_stack.back()->is_object());
+
+ if (ref_stack.back()->is_array())
+ {
+ ref_stack.back()->m_value.array->emplace_back(std::forward<Value>(v));
+ return &(ref_stack.back()->m_value.array->back());
+ }
+
+ assert(ref_stack.back()->is_object());
+ assert(object_element);
+ *object_element = BasicJsonType(std::forward<Value>(v));
+ return object_element;
+ }
+
+ /// the parsed JSON value
+ BasicJsonType& root;
+ /// stack to model hierarchy of values
+ std::vector<BasicJsonType*> ref_stack {};
+ /// helper to hold the reference for the next object element
+ BasicJsonType* object_element = nullptr;
+ /// whether a syntax error occurred
+ bool errored = false;
+ /// whether to throw exceptions in case of errors
+ const bool allow_exceptions = true;
+};
+
+template<typename BasicJsonType>
+class json_sax_dom_callback_parser
+{
+ public:
+ using number_integer_t = typename BasicJsonType::number_integer_t;
+ using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
+ using number_float_t = typename BasicJsonType::number_float_t;
+ using string_t = typename BasicJsonType::string_t;
+ using parser_callback_t = typename BasicJsonType::parser_callback_t;
+ using parse_event_t = typename BasicJsonType::parse_event_t;
+
+ json_sax_dom_callback_parser(BasicJsonType& r,
+ const parser_callback_t cb,
+ const bool allow_exceptions_ = true)
+ : root(r), callback(cb), allow_exceptions(allow_exceptions_)
+ {
+ keep_stack.push_back(true);
+ }
+
+ // make class move-only
+ json_sax_dom_callback_parser(const json_sax_dom_callback_parser&) = delete;
+ json_sax_dom_callback_parser(json_sax_dom_callback_parser&&) = default;
+ json_sax_dom_callback_parser& operator=(const json_sax_dom_callback_parser&) = delete;
+ json_sax_dom_callback_parser& operator=(json_sax_dom_callback_parser&&) = default;
+ ~json_sax_dom_callback_parser() = default;
+
+ bool null()
+ {
+ handle_value(nullptr);
+ return true;
+ }
+
+ bool boolean(bool val)
+ {
+ handle_value(val);
+ return true;
+ }
+
+ bool number_integer(number_integer_t val)
+ {
+ handle_value(val);
+ return true;
+ }
+
+ bool number_unsigned(number_unsigned_t val)
+ {
+ handle_value(val);
+ return true;
+ }
+
+ bool number_float(number_float_t val, const string_t& /*unused*/)
+ {
+ handle_value(val);
+ return true;
+ }
+
+ bool string(string_t& val)
+ {
+ handle_value(val);
+ return true;
+ }
+
+ bool start_object(std::size_t len)
+ {
+ // check callback for object start
+ const bool keep = callback(static_cast<int>(ref_stack.size()), parse_event_t::object_start, discarded);
+ keep_stack.push_back(keep);
+
+ auto val = handle_value(BasicJsonType::value_t::object, true);
+ ref_stack.push_back(val.second);
+
+ // check object limit
+ if (ref_stack.back() and JSON_UNLIKELY(len != std::size_t(-1) and len > ref_stack.back()->max_size()))
+ {
+ JSON_THROW(out_of_range::create(408, "excessive object size: " + std::to_string(len)));
+ }
+
+ return true;
+ }
+
+ bool key(string_t& val)
+ {
+ BasicJsonType k = BasicJsonType(val);
+
+ // check callback for key
+ const bool keep = callback(static_cast<int>(ref_stack.size()), parse_event_t::key, k);
+ key_keep_stack.push_back(keep);
+
+ // add discarded value at given key and store the reference for later
+ if (keep and ref_stack.back())
+ {
+ object_element = &(ref_stack.back()->m_value.object->operator[](val) = discarded);
+ }
+
+ return true;
+ }
+
+ bool end_object()
+ {
+ if (ref_stack.back() and not callback(static_cast<int>(ref_stack.size()) - 1, parse_event_t::object_end, *ref_stack.back()))
+ {
+ // discard object
+ *ref_stack.back() = discarded;
+ }
+
+ assert(not ref_stack.empty());
+ assert(not keep_stack.empty());
+ ref_stack.pop_back();
+ keep_stack.pop_back();
+
+ if (not ref_stack.empty() and ref_stack.back() and ref_stack.back()->is_object())
+ {
+ // remove discarded value
+ for (auto it = ref_stack.back()->begin(); it != ref_stack.back()->end(); ++it)
+ {
+ if (it->is_discarded())
+ {
+ ref_stack.back()->erase(it);
+ break;
+ }
+ }
+ }
+
+ return true;
+ }
+
+ bool start_array(std::size_t len)
+ {
+ const bool keep = callback(static_cast<int>(ref_stack.size()), parse_event_t::array_start, discarded);
+ keep_stack.push_back(keep);
+
+ auto val = handle_value(BasicJsonType::value_t::array, true);
+ ref_stack.push_back(val.second);
+
+ // check array limit
+ if (ref_stack.back() and JSON_UNLIKELY(len != std::size_t(-1) and len > ref_stack.back()->max_size()))
+ {
+ JSON_THROW(out_of_range::create(408, "excessive array size: " + std::to_string(len)));
+ }
+
+ return true;
+ }
+
+ bool end_array()
+ {
+ bool keep = true;
+
+ if (ref_stack.back())
+ {
+ keep = callback(static_cast<int>(ref_stack.size()) - 1, parse_event_t::array_end, *ref_stack.back());
+ if (not keep)
+ {
+ // discard array
+ *ref_stack.back() = discarded;
+ }
+ }
+
+ assert(not ref_stack.empty());
+ assert(not keep_stack.empty());
+ ref_stack.pop_back();
+ keep_stack.pop_back();
+
+ // remove discarded value
+ if (not keep and not ref_stack.empty() and ref_stack.back()->is_array())
+ {
+ ref_stack.back()->m_value.array->pop_back();
+ }
+
+ return true;
+ }
+
+ bool parse_error(std::size_t /*unused*/, const std::string& /*unused*/,
+ const detail::exception& ex)
+ {
+ errored = true;
+ if (allow_exceptions)
+ {
+ // determine the proper exception type from the id
+ switch ((ex.id / 100) % 100)
+ {
+ case 1:
+ JSON_THROW(*static_cast<const detail::parse_error*>(&ex));
+ case 4:
+ JSON_THROW(*static_cast<const detail::out_of_range*>(&ex));
+ // LCOV_EXCL_START
+ case 2:
+ JSON_THROW(*static_cast<const detail::invalid_iterator*>(&ex));
+ case 3:
+ JSON_THROW(*static_cast<const detail::type_error*>(&ex));
+ case 5:
+ JSON_THROW(*static_cast<const detail::other_error*>(&ex));
+ default:
+ assert(false);
+ // LCOV_EXCL_STOP
+ }
+ }
+ return false;
+ }
+
+ constexpr bool is_errored() const
+ {
+ return errored;
+ }
+
+ private:
+ /*!
+ @param[in] v value to add to the JSON value we build during parsing
+ @param[in] skip_callback whether we should skip calling the callback
+ function; this is required after start_array() and
+ start_object() SAX events, because otherwise we would call the
+ callback function with an empty array or object, respectively.
+
+ @invariant If the ref stack is empty, then the passed value will be the new
+ root.
+ @invariant If the ref stack contains a value, then it is an array or an
+ object to which we can add elements
+
+ @return pair of boolean (whether value should be kept) and pointer (to the
+ passed value in the ref_stack hierarchy; nullptr if not kept)
+ */
+ template<typename Value>
+ std::pair<bool, BasicJsonType*> handle_value(Value&& v, const bool skip_callback = false)
+ {
+ assert(not keep_stack.empty());
+
+ // do not handle this value if we know it would be added to a discarded
+ // container
+ if (not keep_stack.back())
+ {
+ return {false, nullptr};
+ }
+
+ // create value
+ auto value = BasicJsonType(std::forward<Value>(v));
+
+ // check callback
+ const bool keep = skip_callback or callback(static_cast<int>(ref_stack.size()), parse_event_t::value, value);
+
+ // do not handle this value if we just learnt it shall be discarded
+ if (not keep)
+ {
+ return {false, nullptr};
+ }
+
+ if (ref_stack.empty())
+ {
+ root = std::move(value);
+ return {true, &root};
+ }
+
+ // skip this value if we already decided to skip the parent
+ // (https://github.com/nlohmann/json/issues/971#issuecomment-413678360)
+ if (not ref_stack.back())
+ {
+ return {false, nullptr};
+ }
+
+ // we now only expect arrays and objects
+ assert(ref_stack.back()->is_array() or ref_stack.back()->is_object());
+
+ // array
+ if (ref_stack.back()->is_array())
+ {
+ ref_stack.back()->m_value.array->push_back(std::move(value));
+ return {true, &(ref_stack.back()->m_value.array->back())};
+ }
+
+ // object
+ assert(ref_stack.back()->is_object());
+ // check if we should store an element for the current key
+ assert(not key_keep_stack.empty());
+ const bool store_element = key_keep_stack.back();
+ key_keep_stack.pop_back();
+
+ if (not store_element)
+ {
+ return {false, nullptr};
+ }
+
+ assert(object_element);
+ *object_element = std::move(value);
+ return {true, object_element};
+ }
+
+ /// the parsed JSON value
+ BasicJsonType& root;
+ /// stack to model hierarchy of values
+ std::vector<BasicJsonType*> ref_stack {};
+ /// stack to manage which values to keep
+ std::vector<bool> keep_stack {};
+ /// stack to manage which object keys to keep
+ std::vector<bool> key_keep_stack {};
+ /// helper to hold the reference for the next object element
+ BasicJsonType* object_element = nullptr;
+ /// whether a syntax error occurred
+ bool errored = false;
+ /// callback function
+ const parser_callback_t callback = nullptr;
+ /// whether to throw exceptions in case of errors
+ const bool allow_exceptions = true;
+ /// a discarded value for the callback
+ BasicJsonType discarded = BasicJsonType::value_t::discarded;
+};
+
+template<typename BasicJsonType>
+class json_sax_acceptor
+{
+ public:
+ using number_integer_t = typename BasicJsonType::number_integer_t;
+ using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
+ using number_float_t = typename BasicJsonType::number_float_t;
+ using string_t = typename BasicJsonType::string_t;
+
+ bool null()
+ {
+ return true;
+ }
+
+ bool boolean(bool /*unused*/)
+ {
+ return true;
+ }
+
+ bool number_integer(number_integer_t /*unused*/)
+ {
+ return true;
+ }
+
+ bool number_unsigned(number_unsigned_t /*unused*/)
+ {
+ return true;
+ }
+
+ bool number_float(number_float_t /*unused*/, const string_t& /*unused*/)
+ {
+ return true;
+ }
+
+ bool string(string_t& /*unused*/)
+ {
+ return true;
+ }
+
+ bool start_object(std::size_t /*unused*/ = std::size_t(-1))
+ {
+ return true;
+ }
+
+ bool key(string_t& /*unused*/)
+ {
+ return true;
+ }
+
+ bool end_object()
+ {
+ return true;
+ }
+
+ bool start_array(std::size_t /*unused*/ = std::size_t(-1))
+ {
+ return true;
+ }
+
+ bool end_array()
+ {
+ return true;
+ }
+
+ bool parse_error(std::size_t /*unused*/, const std::string& /*unused*/, const detail::exception& /*unused*/)
+ {
+ return false;
+ }
+};
+} // namespace detail
+
+} // namespace nlohmann
+
+// #include <nlohmann/detail/macro_scope.hpp>
+
+// #include <nlohmann/detail/meta/is_sax.hpp>
+
+
+#include <cstdint> // size_t
+#include <utility> // declval
+#include <string> // string
+
+// #include <nlohmann/detail/meta/detected.hpp>
+
+// #include <nlohmann/detail/meta/type_traits.hpp>
+
+
+namespace nlohmann
+{
+namespace detail
+{
+template <typename T>
+using null_function_t = decltype(std::declval<T&>().null());
+
+template <typename T>
+using boolean_function_t =
+ decltype(std::declval<T&>().boolean(std::declval<bool>()));
+
+template <typename T, typename Integer>
+using number_integer_function_t =
+ decltype(std::declval<T&>().number_integer(std::declval<Integer>()));
+
+template <typename T, typename Unsigned>
+using number_unsigned_function_t =
+ decltype(std::declval<T&>().number_unsigned(std::declval<Unsigned>()));
+
+template <typename T, typename Float, typename String>
+using number_float_function_t = decltype(std::declval<T&>().number_float(
+ std::declval<Float>(), std::declval<const String&>()));
+
+template <typename T, typename String>
+using string_function_t =
+ decltype(std::declval<T&>().string(std::declval<String&>()));
+
+template <typename T>
+using start_object_function_t =
+ decltype(std::declval<T&>().start_object(std::declval<std::size_t>()));
+
+template <typename T, typename String>
+using key_function_t =
+ decltype(std::declval<T&>().key(std::declval<String&>()));
+
+template <typename T>
+using end_object_function_t = decltype(std::declval<T&>().end_object());
+
+template <typename T>
+using start_array_function_t =
+ decltype(std::declval<T&>().start_array(std::declval<std::size_t>()));
+
+template <typename T>
+using end_array_function_t = decltype(std::declval<T&>().end_array());
+
+template <typename T, typename Exception>
+using parse_error_function_t = decltype(std::declval<T&>().parse_error(
+ std::declval<std::size_t>(), std::declval<const std::string&>(),
+ std::declval<const Exception&>()));
+
+template <typename SAX, typename BasicJsonType>
+struct is_sax
+{
+ private:
+ static_assert(is_basic_json<BasicJsonType>::value,
+ "BasicJsonType must be of type basic_json<...>");
+
+ using number_integer_t = typename BasicJsonType::number_integer_t;
+ using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
+ using number_float_t = typename BasicJsonType::number_float_t;
+ using string_t = typename BasicJsonType::string_t;
+ using exception_t = typename BasicJsonType::exception;
+
+ public:
+ static constexpr bool value =
+ is_detected_exact<bool, null_function_t, SAX>::value &&
+ is_detected_exact<bool, boolean_function_t, SAX>::value &&
+ is_detected_exact<bool, number_integer_function_t, SAX,
+ number_integer_t>::value &&
+ is_detected_exact<bool, number_unsigned_function_t, SAX,
+ number_unsigned_t>::value &&
+ is_detected_exact<bool, number_float_function_t, SAX, number_float_t,
+ string_t>::value &&
+ is_detected_exact<bool, string_function_t, SAX, string_t>::value &&
+ is_detected_exact<bool, start_object_function_t, SAX>::value &&
+ is_detected_exact<bool, key_function_t, SAX, string_t>::value &&
+ is_detected_exact<bool, end_object_function_t, SAX>::value &&
+ is_detected_exact<bool, start_array_function_t, SAX>::value &&
+ is_detected_exact<bool, end_array_function_t, SAX>::value &&
+ is_detected_exact<bool, parse_error_function_t, SAX, exception_t>::value;
+};
+
+template <typename SAX, typename BasicJsonType>
+struct is_sax_static_asserts
+{
+ private:
+ static_assert(is_basic_json<BasicJsonType>::value,
+ "BasicJsonType must be of type basic_json<...>");
+
+ using number_integer_t = typename BasicJsonType::number_integer_t;
+ using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
+ using number_float_t = typename BasicJsonType::number_float_t;
+ using string_t = typename BasicJsonType::string_t;
+ using exception_t = typename BasicJsonType::exception;
+
+ public:
+ static_assert(is_detected_exact<bool, null_function_t, SAX>::value,
+ "Missing/invalid function: bool null()");
+ static_assert(is_detected_exact<bool, boolean_function_t, SAX>::value,
+ "Missing/invalid function: bool boolean(bool)");
+ static_assert(is_detected_exact<bool, boolean_function_t, SAX>::value,
+ "Missing/invalid function: bool boolean(bool)");
+ static_assert(
+ is_detected_exact<bool, number_integer_function_t, SAX,
+ number_integer_t>::value,
+ "Missing/invalid function: bool number_integer(number_integer_t)");
+ static_assert(
+ is_detected_exact<bool, number_unsigned_function_t, SAX,
+ number_unsigned_t>::value,
+ "Missing/invalid function: bool number_unsigned(number_unsigned_t)");
+ static_assert(is_detected_exact<bool, number_float_function_t, SAX,
+ number_float_t, string_t>::value,
+ "Missing/invalid function: bool number_float(number_float_t, const string_t&)");
+ static_assert(
+ is_detected_exact<bool, string_function_t, SAX, string_t>::value,
+ "Missing/invalid function: bool string(string_t&)");
+ static_assert(is_detected_exact<bool, start_object_function_t, SAX>::value,
+ "Missing/invalid function: bool start_object(std::size_t)");
+ static_assert(is_detected_exact<bool, key_function_t, SAX, string_t>::value,
+ "Missing/invalid function: bool key(string_t&)");
+ static_assert(is_detected_exact<bool, end_object_function_t, SAX>::value,
+ "Missing/invalid function: bool end_object()");
+ static_assert(is_detected_exact<bool, start_array_function_t, SAX>::value,
+ "Missing/invalid function: bool start_array(std::size_t)");
+ static_assert(is_detected_exact<bool, end_array_function_t, SAX>::value,
+ "Missing/invalid function: bool end_array()");
+ static_assert(
+ is_detected_exact<bool, parse_error_function_t, SAX, exception_t>::value,
+ "Missing/invalid function: bool parse_error(std::size_t, const "
+ "std::string&, const exception&)");
+};
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/detail/value_t.hpp>
+
+
+namespace nlohmann
+{
+namespace detail
+{
+///////////////////
+// binary reader //
+///////////////////
+
+/*!
+@brief deserialization of CBOR, MessagePack, and UBJSON values
+*/
+template<typename BasicJsonType, typename SAX = json_sax_dom_parser<BasicJsonType>>
+class binary_reader
+{
+ using number_integer_t = typename BasicJsonType::number_integer_t;
+ using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
+ using number_float_t = typename BasicJsonType::number_float_t;
+ using string_t = typename BasicJsonType::string_t;
+ using json_sax_t = SAX;
+
+ public:
+ /*!
+ @brief create a binary reader
+
+ @param[in] adapter input adapter to read from
+ */
+ explicit binary_reader(input_adapter_t adapter) : ia(std::move(adapter))
+ {
+ (void)detail::is_sax_static_asserts<SAX, BasicJsonType> {};
+ assert(ia);
+ }
+
+ // make class move-only
+ binary_reader(const binary_reader&) = delete;
+ binary_reader(binary_reader&&) = default;
+ binary_reader& operator=(const binary_reader&) = delete;
+ binary_reader& operator=(binary_reader&&) = default;
+ ~binary_reader() = default;
+
+ /*!
+ @param[in] format the binary format to parse
+ @param[in] sax_ a SAX event processor
+ @param[in] strict whether to expect the input to be consumed completed
+
+ @return
+ */
+ bool sax_parse(const input_format_t format,
+ json_sax_t* sax_,
+ const bool strict = true)
+ {
+ sax = sax_;
+ bool result = false;
+
+ switch (format)
+ {
+ case input_format_t::bson:
+ result = parse_bson_internal();
+ break;
+
+ case input_format_t::cbor:
+ result = parse_cbor_internal();
+ break;
+
+ case input_format_t::msgpack:
+ result = parse_msgpack_internal();
+ break;
+
+ case input_format_t::ubjson:
+ result = parse_ubjson_internal();
+ break;
+
+ default: // LCOV_EXCL_LINE
+ assert(false); // LCOV_EXCL_LINE
+ }
+
+ // strict mode: next byte must be EOF
+ if (result and strict)
+ {
+ if (format == input_format_t::ubjson)
+ {
+ get_ignore_noop();
+ }
+ else
+ {
+ get();
+ }
+
+ if (JSON_UNLIKELY(current != std::char_traits<char>::eof()))
+ {
+ return sax->parse_error(chars_read, get_token_string(),
+ parse_error::create(110, chars_read, exception_message(format, "expected end of input; last byte: 0x" + get_token_string(), "value")));
+ }
+ }
+
+ return result;
+ }
+
+ /*!
+ @brief determine system byte order
+
+ @return true if and only if system's byte order is little endian
+
+ @note from http://stackoverflow.com/a/1001328/266378
+ */
+ static constexpr bool little_endianess(int num = 1) noexcept
+ {
+ return *reinterpret_cast<char*>(&num) == 1;
+ }
+
+ private:
+ //////////
+ // BSON //
+ //////////
+
+ /*!
+ @brief Reads in a BSON-object and passes it to the SAX-parser.
+ @return whether a valid BSON-value was passed to the SAX parser
+ */
+ bool parse_bson_internal()
+ {
+ std::int32_t document_size;
+ get_number<std::int32_t, true>(input_format_t::bson, document_size);
+
+ if (JSON_UNLIKELY(not sax->start_object(std::size_t(-1))))
+ {
+ return false;
+ }
+
+ if (JSON_UNLIKELY(not parse_bson_element_list(/*is_array*/false)))
+ {
+ return false;
+ }
+
+ return sax->end_object();
+ }
+
+ /*!
+ @brief Parses a C-style string from the BSON input.
+ @param[in, out] result A reference to the string variable where the read
+ string is to be stored.
+ @return `true` if the \x00-byte indicating the end of the string was
+ encountered before the EOF; false` indicates an unexpected EOF.
+ */
+ bool get_bson_cstr(string_t& result)
+ {
+ auto out = std::back_inserter(result);
+ while (true)
+ {
+ get();
+ if (JSON_UNLIKELY(not unexpect_eof(input_format_t::bson, "cstring")))
+ {
+ return false;
+ }
+ if (current == 0x00)
+ {
+ return true;
+ }
+ *out++ = static_cast<char>(current);
+ }
+
+ return true;
+ }
+
+ /*!
+ @brief Parses a zero-terminated string of length @a len from the BSON
+ input.
+ @param[in] len The length (including the zero-byte at the end) of the
+ string to be read.
+ @param[in, out] result A reference to the string variable where the read
+ string is to be stored.
+ @tparam NumberType The type of the length @a len
+ @pre len >= 1
+ @return `true` if the string was successfully parsed
+ */
+ template<typename NumberType>
+ bool get_bson_string(const NumberType len, string_t& result)
+ {
+ if (JSON_UNLIKELY(len < 1))
+ {
+ auto last_token = get_token_string();
+ return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::bson, "string length must be at least 1, is " + std::to_string(len), "string")));
+ }
+
+ return get_string(input_format_t::bson, len - static_cast<NumberType>(1), result) and get() != std::char_traits<char>::eof();
+ }
+
+ /*!
+ @brief Read a BSON document element of the given @a element_type.
+ @param[in] element_type The BSON element type, c.f. http://bsonspec.org/spec.html
+ @param[in] element_type_parse_position The position in the input stream,
+ where the `element_type` was read.
+ @warning Not all BSON element types are supported yet. An unsupported
+ @a element_type will give rise to a parse_error.114:
+ Unsupported BSON record type 0x...
+ @return whether a valid BSON-object/array was passed to the SAX parser
+ */
+ bool parse_bson_element_internal(const int element_type,
+ const std::size_t element_type_parse_position)
+ {
+ switch (element_type)
+ {
+ case 0x01: // double
+ {
+ double number;
+ return get_number<double, true>(input_format_t::bson, number) and sax->number_float(static_cast<number_float_t>(number), "");
+ }
+
+ case 0x02: // string
+ {
+ std::int32_t len;
+ string_t value;
+ return get_number<std::int32_t, true>(input_format_t::bson, len) and get_bson_string(len, value) and sax->string(value);
+ }
+
+ case 0x03: // object
+ {
+ return parse_bson_internal();
+ }
+
+ case 0x04: // array
+ {
+ return parse_bson_array();
+ }
+
+ case 0x08: // boolean
+ {
+ return sax->boolean(get() != 0);
+ }
+
+ case 0x0A: // null
+ {
+ return sax->null();
+ }
+
+ case 0x10: // int32
+ {
+ std::int32_t value;
+ return get_number<std::int32_t, true>(input_format_t::bson, value) and sax->number_integer(value);
+ }
+
+ case 0x12: // int64
+ {
+ std::int64_t value;
+ return get_number<std::int64_t, true>(input_format_t::bson, value) and sax->number_integer(value);
+ }
+
+ default: // anything else not supported (yet)
+ {
+ std::array<char, 3> cr{{}};
+ (std::snprintf)(cr.data(), cr.size(), "%.2hhX", static_cast<unsigned char>(element_type));
+ return sax->parse_error(element_type_parse_position, std::string(cr.data()), parse_error::create(114, element_type_parse_position, "Unsupported BSON record type 0x" + std::string(cr.data())));
+ }
+ }
+ }
+
+ /*!
+ @brief Read a BSON element list (as specified in the BSON-spec)
+
+ The same binary layout is used for objects and arrays, hence it must be
+ indicated with the argument @a is_array which one is expected
+ (true --> array, false --> object).
+
+ @param[in] is_array Determines if the element list being read is to be
+ treated as an object (@a is_array == false), or as an
+ array (@a is_array == true).
+ @return whether a valid BSON-object/array was passed to the SAX parser
+ */
+ bool parse_bson_element_list(const bool is_array)
+ {
+ string_t key;
+ while (int element_type = get())
+ {
+ if (JSON_UNLIKELY(not unexpect_eof(input_format_t::bson, "element list")))
+ {
+ return false;
+ }
+
+ const std::size_t element_type_parse_position = chars_read;
+ if (JSON_UNLIKELY(not get_bson_cstr(key)))
+ {
+ return false;
+ }
+
+ if (not is_array and not sax->key(key))
+ {
+ return false;
+ }
+
+ if (JSON_UNLIKELY(not parse_bson_element_internal(element_type, element_type_parse_position)))
+ {
+ return false;
+ }
+
+ // get_bson_cstr only appends
+ key.clear();
+ }
+
+ return true;
+ }
+
+ /*!
+ @brief Reads an array from the BSON input and passes it to the SAX-parser.
+ @return whether a valid BSON-array was passed to the SAX parser
+ */
+ bool parse_bson_array()
+ {
+ std::int32_t document_size;
+ get_number<std::int32_t, true>(input_format_t::bson, document_size);
+
+ if (JSON_UNLIKELY(not sax->start_array(std::size_t(-1))))
+ {
+ return false;
+ }
+
+ if (JSON_UNLIKELY(not parse_bson_element_list(/*is_array*/true)))
+ {
+ return false;
+ }
+
+ return sax->end_array();
+ }
+
+ //////////
+ // CBOR //
+ //////////
+
+ /*!
+ @param[in] get_char whether a new character should be retrieved from the
+ input (true, default) or whether the last read
+ character should be considered instead
+
+ @return whether a valid CBOR value was passed to the SAX parser
+ */
+ bool parse_cbor_internal(const bool get_char = true)
+ {
+ switch (get_char ? get() : current)
+ {
+ // EOF
+ case std::char_traits<char>::eof():
+ return unexpect_eof(input_format_t::cbor, "value");
+
+ // Integer 0x00..0x17 (0..23)
+ case 0x00:
+ case 0x01:
+ case 0x02:
+ case 0x03:
+ case 0x04:
+ case 0x05:
+ case 0x06:
+ case 0x07:
+ case 0x08:
+ case 0x09:
+ case 0x0A:
+ case 0x0B:
+ case 0x0C:
+ case 0x0D:
+ case 0x0E:
+ case 0x0F:
+ case 0x10:
+ case 0x11:
+ case 0x12:
+ case 0x13:
+ case 0x14:
+ case 0x15:
+ case 0x16:
+ case 0x17:
+ return sax->number_unsigned(static_cast<number_unsigned_t>(current));
+
+ case 0x18: // Unsigned integer (one-byte uint8_t follows)
+ {
+ std::uint8_t number;
+ return get_number(input_format_t::cbor, number) and sax->number_unsigned(number);
+ }
+
+ case 0x19: // Unsigned integer (two-byte uint16_t follows)
+ {
+ std::uint16_t number;
+ return get_number(input_format_t::cbor, number) and sax->number_unsigned(number);
+ }
+
+ case 0x1A: // Unsigned integer (four-byte uint32_t follows)
+ {
+ std::uint32_t number;
+ return get_number(input_format_t::cbor, number) and sax->number_unsigned(number);
+ }
+
+ case 0x1B: // Unsigned integer (eight-byte uint64_t follows)
+ {
+ std::uint64_t number;
+ return get_number(input_format_t::cbor, number) and sax->number_unsigned(number);
+ }
+
+ // Negative integer -1-0x00..-1-0x17 (-1..-24)
+ case 0x20:
+ case 0x21:
+ case 0x22:
+ case 0x23:
+ case 0x24:
+ case 0x25:
+ case 0x26:
+ case 0x27:
+ case 0x28:
+ case 0x29:
+ case 0x2A:
+ case 0x2B:
+ case 0x2C:
+ case 0x2D:
+ case 0x2E:
+ case 0x2F:
+ case 0x30:
+ case 0x31:
+ case 0x32:
+ case 0x33:
+ case 0x34:
+ case 0x35:
+ case 0x36:
+ case 0x37:
+ return sax->number_integer(static_cast<std::int8_t>(0x20 - 1 - current));
+
+ case 0x38: // Negative integer (one-byte uint8_t follows)
+ {
+ std::uint8_t number;
+ return get_number(input_format_t::cbor, number) and sax->number_integer(static_cast<number_integer_t>(-1) - number);
+ }
+
+ case 0x39: // Negative integer -1-n (two-byte uint16_t follows)
+ {
+ std::uint16_t number;
+ return get_number(input_format_t::cbor, number) and sax->number_integer(static_cast<number_integer_t>(-1) - number);
+ }
+
+ case 0x3A: // Negative integer -1-n (four-byte uint32_t follows)
+ {
+ std::uint32_t number;
+ return get_number(input_format_t::cbor, number) and sax->number_integer(static_cast<number_integer_t>(-1) - number);
+ }
+
+ case 0x3B: // Negative integer -1-n (eight-byte uint64_t follows)
+ {
+ std::uint64_t number;
+ return get_number(input_format_t::cbor, number) and sax->number_integer(static_cast<number_integer_t>(-1)
+ - static_cast<number_integer_t>(number));
+ }
+
+ // UTF-8 string (0x00..0x17 bytes follow)
+ case 0x60:
+ case 0x61:
+ case 0x62:
+ case 0x63:
+ case 0x64:
+ case 0x65:
+ case 0x66:
+ case 0x67:
+ case 0x68:
+ case 0x69:
+ case 0x6A:
+ case 0x6B:
+ case 0x6C:
+ case 0x6D:
+ case 0x6E:
+ case 0x6F:
+ case 0x70:
+ case 0x71:
+ case 0x72:
+ case 0x73:
+ case 0x74:
+ case 0x75:
+ case 0x76:
+ case 0x77:
+ case 0x78: // UTF-8 string (one-byte uint8_t for n follows)
+ case 0x79: // UTF-8 string (two-byte uint16_t for n follow)
+ case 0x7A: // UTF-8 string (four-byte uint32_t for n follow)
+ case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow)
+ case 0x7F: // UTF-8 string (indefinite length)
+ {
+ string_t s;
+ return get_cbor_string(s) and sax->string(s);
+ }
+
+ // array (0x00..0x17 data items follow)
+ case 0x80:
+ case 0x81:
+ case 0x82:
+ case 0x83:
+ case 0x84:
+ case 0x85:
+ case 0x86:
+ case 0x87:
+ case 0x88:
+ case 0x89:
+ case 0x8A:
+ case 0x8B:
+ case 0x8C:
+ case 0x8D:
+ case 0x8E:
+ case 0x8F:
+ case 0x90:
+ case 0x91:
+ case 0x92:
+ case 0x93:
+ case 0x94:
+ case 0x95:
+ case 0x96:
+ case 0x97:
+ return get_cbor_array(static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x1Fu));
+
+ case 0x98: // array (one-byte uint8_t for n follows)
+ {
+ std::uint8_t len;
+ return get_number(input_format_t::cbor, len) and get_cbor_array(static_cast<std::size_t>(len));
+ }
+
+ case 0x99: // array (two-byte uint16_t for n follow)
+ {
+ std::uint16_t len;
+ return get_number(input_format_t::cbor, len) and get_cbor_array(static_cast<std::size_t>(len));
+ }
+
+ case 0x9A: // array (four-byte uint32_t for n follow)
+ {
+ std::uint32_t len;
+ return get_number(input_format_t::cbor, len) and get_cbor_array(static_cast<std::size_t>(len));
+ }
+
+ case 0x9B: // array (eight-byte uint64_t for n follow)
+ {
+ std::uint64_t len;
+ return get_number(input_format_t::cbor, len) and get_cbor_array(static_cast<std::size_t>(len));
+ }
+
+ case 0x9F: // array (indefinite length)
+ return get_cbor_array(std::size_t(-1));
+
+ // map (0x00..0x17 pairs of data items follow)
+ case 0xA0:
+ case 0xA1:
+ case 0xA2:
+ case 0xA3:
+ case 0xA4:
+ case 0xA5:
+ case 0xA6:
+ case 0xA7:
+ case 0xA8:
+ case 0xA9:
+ case 0xAA:
+ case 0xAB:
+ case 0xAC:
+ case 0xAD:
+ case 0xAE:
+ case 0xAF:
+ case 0xB0:
+ case 0xB1:
+ case 0xB2:
+ case 0xB3:
+ case 0xB4:
+ case 0xB5:
+ case 0xB6:
+ case 0xB7:
+ return get_cbor_object(static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x1Fu));
+
+ case 0xB8: // map (one-byte uint8_t for n follows)
+ {
+ std::uint8_t len;
+ return get_number(input_format_t::cbor, len) and get_cbor_object(static_cast<std::size_t>(len));
+ }
+
+ case 0xB9: // map (two-byte uint16_t for n follow)
+ {
+ std::uint16_t len;
+ return get_number(input_format_t::cbor, len) and get_cbor_object(static_cast<std::size_t>(len));
+ }
+
+ case 0xBA: // map (four-byte uint32_t for n follow)
+ {
+ std::uint32_t len;
+ return get_number(input_format_t::cbor, len) and get_cbor_object(static_cast<std::size_t>(len));
+ }
+
+ case 0xBB: // map (eight-byte uint64_t for n follow)
+ {
+ std::uint64_t len;
+ return get_number(input_format_t::cbor, len) and get_cbor_object(static_cast<std::size_t>(len));
+ }
+
+ case 0xBF: // map (indefinite length)
+ return get_cbor_object(std::size_t(-1));
+
+ case 0xF4: // false
+ return sax->boolean(false);
+
+ case 0xF5: // true
+ return sax->boolean(true);
+
+ case 0xF6: // null
+ return sax->null();
+
+ case 0xF9: // Half-Precision Float (two-byte IEEE 754)
+ {
+ const int byte1_raw = get();
+ if (JSON_UNLIKELY(not unexpect_eof(input_format_t::cbor, "number")))
+ {
+ return false;
+ }
+ const int byte2_raw = get();
+ if (JSON_UNLIKELY(not unexpect_eof(input_format_t::cbor, "number")))
+ {
+ return false;
+ }
+
+ const auto byte1 = static_cast<unsigned char>(byte1_raw);
+ const auto byte2 = static_cast<unsigned char>(byte2_raw);
+
+ // code from RFC 7049, Appendix D, Figure 3:
+ // As half-precision floating-point numbers were only added
+ // to IEEE 754 in 2008, today's programming platforms often
+ // still only have limited support for them. It is very
+ // easy to include at least decoding support for them even
+ // without such support. An example of a small decoder for
+ // half-precision floating-point numbers in the C language
+ // is shown in Fig. 3.
+ const auto half = static_cast<unsigned int>((byte1 << 8u) + byte2);
+ const double val = [&half]
+ {
+ const int exp = (half >> 10u) & 0x1Fu;
+ const unsigned int mant = half & 0x3FFu;
+ assert(0 <= exp and exp <= 32);
+ assert(0 <= mant and mant <= 1024);
+ switch (exp)
+ {
+ case 0:
+ return std::ldexp(mant, -24);
+ case 31:
+ return (mant == 0)
+ ? std::numeric_limits<double>::infinity()
+ : std::numeric_limits<double>::quiet_NaN();
+ default:
+ return std::ldexp(mant + 1024, exp - 25);
+ }
+ }();
+ return sax->number_float((half & 0x8000u) != 0
+ ? static_cast<number_float_t>(-val)
+ : static_cast<number_float_t>(val), "");
+ }
+
+ case 0xFA: // Single-Precision Float (four-byte IEEE 754)
+ {
+ float number;
+ return get_number(input_format_t::cbor, number) and sax->number_float(static_cast<number_float_t>(number), "");
+ }
+
+ case 0xFB: // Double-Precision Float (eight-byte IEEE 754)
+ {
+ double number;
+ return get_number(input_format_t::cbor, number) and sax->number_float(static_cast<number_float_t>(number), "");
+ }
+
+ default: // anything else (0xFF is handled inside the other types)
+ {
+ auto last_token = get_token_string();
+ return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::cbor, "invalid byte: 0x" + last_token, "value")));
+ }
+ }
+ }
+
+ /*!
+ @brief reads a CBOR string
+
+ This function first reads starting bytes to determine the expected
+ string length and then copies this number of bytes into a string.
+ Additionally, CBOR's strings with indefinite lengths are supported.
+
+ @param[out] result created string
+
+ @return whether string creation completed
+ */
+ bool get_cbor_string(string_t& result)
+ {
+ if (JSON_UNLIKELY(not unexpect_eof(input_format_t::cbor, "string")))
+ {
+ return false;
+ }
+
+ switch (current)
+ {
+ // UTF-8 string (0x00..0x17 bytes follow)
+ case 0x60:
+ case 0x61:
+ case 0x62:
+ case 0x63:
+ case 0x64:
+ case 0x65:
+ case 0x66:
+ case 0x67:
+ case 0x68:
+ case 0x69:
+ case 0x6A:
+ case 0x6B:
+ case 0x6C:
+ case 0x6D:
+ case 0x6E:
+ case 0x6F:
+ case 0x70:
+ case 0x71:
+ case 0x72:
+ case 0x73:
+ case 0x74:
+ case 0x75:
+ case 0x76:
+ case 0x77:
+ {
+ return get_string(input_format_t::cbor, static_cast<unsigned int>(current) & 0x1Fu, result);
+ }
+
+ case 0x78: // UTF-8 string (one-byte uint8_t for n follows)
+ {
+ std::uint8_t len;
+ return get_number(input_format_t::cbor, len) and get_string(input_format_t::cbor, len, result);
+ }
+
+ case 0x79: // UTF-8 string (two-byte uint16_t for n follow)
+ {
+ std::uint16_t len;
+ return get_number(input_format_t::cbor, len) and get_string(input_format_t::cbor, len, result);
+ }
+
+ case 0x7A: // UTF-8 string (four-byte uint32_t for n follow)
+ {
+ std::uint32_t len;
+ return get_number(input_format_t::cbor, len) and get_string(input_format_t::cbor, len, result);
+ }
+
+ case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow)
+ {
+ std::uint64_t len;
+ return get_number(input_format_t::cbor, len) and get_string(input_format_t::cbor, len, result);
+ }
+
+ case 0x7F: // UTF-8 string (indefinite length)
+ {
+ while (get() != 0xFF)
+ {
+ string_t chunk;
+ if (not get_cbor_string(chunk))
+ {
+ return false;
+ }
+ result.append(chunk);
+ }
+ return true;
+ }
+
+ default:
+ {
+ auto last_token = get_token_string();
+ return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::cbor, "expected length specification (0x60-0x7B) or indefinite string type (0x7F); last byte: 0x" + last_token, "string")));
+ }
+ }
+ }
+
+ /*!
+ @param[in] len the length of the array or std::size_t(-1) for an
+ array of indefinite size
+ @return whether array creation completed
+ */
+ bool get_cbor_array(const std::size_t len)
+ {
+ if (JSON_UNLIKELY(not sax->start_array(len)))
+ {
+ return false;
+ }
+
+ if (len != std::size_t(-1))
+ {
+ for (std::size_t i = 0; i < len; ++i)
+ {
+ if (JSON_UNLIKELY(not parse_cbor_internal()))
+ {
+ return false;
+ }
+ }
+ }
+ else
+ {
+ while (get() != 0xFF)
+ {
+ if (JSON_UNLIKELY(not parse_cbor_internal(false)))
+ {
+ return false;
+ }
+ }
+ }
+
+ return sax->end_array();
+ }
+
+ /*!
+ @param[in] len the length of the object or std::size_t(-1) for an
+ object of indefinite size
+ @return whether object creation completed
+ */
+ bool get_cbor_object(const std::size_t len)
+ {
+ if (JSON_UNLIKELY(not sax->start_object(len)))
+ {
+ return false;
+ }
+
+ string_t key;
+ if (len != std::size_t(-1))
+ {
+ for (std::size_t i = 0; i < len; ++i)
+ {
+ get();
+ if (JSON_UNLIKELY(not get_cbor_string(key) or not sax->key(key)))
+ {
+ return false;
+ }
+
+ if (JSON_UNLIKELY(not parse_cbor_internal()))
+ {
+ return false;
+ }
+ key.clear();
+ }
+ }
+ else
+ {
+ while (get() != 0xFF)
+ {
+ if (JSON_UNLIKELY(not get_cbor_string(key) or not sax->key(key)))
+ {
+ return false;
+ }
+
+ if (JSON_UNLIKELY(not parse_cbor_internal()))
+ {
+ return false;
+ }
+ key.clear();
+ }
+ }
+
+ return sax->end_object();
+ }
+
+ /////////////
+ // MsgPack //
+ /////////////
+
+ /*!
+ @return whether a valid MessagePack value was passed to the SAX parser
+ */
+ bool parse_msgpack_internal()
+ {
+ switch (get())
+ {
+ // EOF
+ case std::char_traits<char>::eof():
+ return unexpect_eof(input_format_t::msgpack, "value");
+
+ // positive fixint
+ case 0x00:
+ case 0x01:
+ case 0x02:
+ case 0x03:
+ case 0x04:
+ case 0x05:
+ case 0x06:
+ case 0x07:
+ case 0x08:
+ case 0x09:
+ case 0x0A:
+ case 0x0B:
+ case 0x0C:
+ case 0x0D:
+ case 0x0E:
+ case 0x0F:
+ case 0x10:
+ case 0x11:
+ case 0x12:
+ case 0x13:
+ case 0x14:
+ case 0x15:
+ case 0x16:
+ case 0x17:
+ case 0x18:
+ case 0x19:
+ case 0x1A:
+ case 0x1B:
+ case 0x1C:
+ case 0x1D:
+ case 0x1E:
+ case 0x1F:
+ case 0x20:
+ case 0x21:
+ case 0x22:
+ case 0x23:
+ case 0x24:
+ case 0x25:
+ case 0x26:
+ case 0x27:
+ case 0x28:
+ case 0x29:
+ case 0x2A:
+ case 0x2B:
+ case 0x2C:
+ case 0x2D:
+ case 0x2E:
+ case 0x2F:
+ case 0x30:
+ case 0x31:
+ case 0x32:
+ case 0x33:
+ case 0x34:
+ case 0x35:
+ case 0x36:
+ case 0x37:
+ case 0x38:
+ case 0x39:
+ case 0x3A:
+ case 0x3B:
+ case 0x3C:
+ case 0x3D:
+ case 0x3E:
+ case 0x3F:
+ case 0x40:
+ case 0x41:
+ case 0x42:
+ case 0x43:
+ case 0x44:
+ case 0x45:
+ case 0x46:
+ case 0x47:
+ case 0x48:
+ case 0x49:
+ case 0x4A:
+ case 0x4B:
+ case 0x4C:
+ case 0x4D:
+ case 0x4E:
+ case 0x4F:
+ case 0x50:
+ case 0x51:
+ case 0x52:
+ case 0x53:
+ case 0x54:
+ case 0x55:
+ case 0x56:
+ case 0x57:
+ case 0x58:
+ case 0x59:
+ case 0x5A:
+ case 0x5B:
+ case 0x5C:
+ case 0x5D:
+ case 0x5E:
+ case 0x5F:
+ case 0x60:
+ case 0x61:
+ case 0x62:
+ case 0x63:
+ case 0x64:
+ case 0x65:
+ case 0x66:
+ case 0x67:
+ case 0x68:
+ case 0x69:
+ case 0x6A:
+ case 0x6B:
+ case 0x6C:
+ case 0x6D:
+ case 0x6E:
+ case 0x6F:
+ case 0x70:
+ case 0x71:
+ case 0x72:
+ case 0x73:
+ case 0x74:
+ case 0x75:
+ case 0x76:
+ case 0x77:
+ case 0x78:
+ case 0x79:
+ case 0x7A:
+ case 0x7B:
+ case 0x7C:
+ case 0x7D:
+ case 0x7E:
+ case 0x7F:
+ return sax->number_unsigned(static_cast<number_unsigned_t>(current));
+
+ // fixmap
+ case 0x80:
+ case 0x81:
+ case 0x82:
+ case 0x83:
+ case 0x84:
+ case 0x85:
+ case 0x86:
+ case 0x87:
+ case 0x88:
+ case 0x89:
+ case 0x8A:
+ case 0x8B:
+ case 0x8C:
+ case 0x8D:
+ case 0x8E:
+ case 0x8F:
+ return get_msgpack_object(static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x0Fu));
+
+ // fixarray
+ case 0x90:
+ case 0x91:
+ case 0x92:
+ case 0x93:
+ case 0x94:
+ case 0x95:
+ case 0x96:
+ case 0x97:
+ case 0x98:
+ case 0x99:
+ case 0x9A:
+ case 0x9B:
+ case 0x9C:
+ case 0x9D:
+ case 0x9E:
+ case 0x9F:
+ return get_msgpack_array(static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x0Fu));
+
+ // fixstr
+ case 0xA0:
+ case 0xA1:
+ case 0xA2:
+ case 0xA3:
+ case 0xA4:
+ case 0xA5:
+ case 0xA6:
+ case 0xA7:
+ case 0xA8:
+ case 0xA9:
+ case 0xAA:
+ case 0xAB:
+ case 0xAC:
+ case 0xAD:
+ case 0xAE:
+ case 0xAF:
+ case 0xB0:
+ case 0xB1:
+ case 0xB2:
+ case 0xB3:
+ case 0xB4:
+ case 0xB5:
+ case 0xB6:
+ case 0xB7:
+ case 0xB8:
+ case 0xB9:
+ case 0xBA:
+ case 0xBB:
+ case 0xBC:
+ case 0xBD:
+ case 0xBE:
+ case 0xBF:
+ {
+ string_t s;
+ return get_msgpack_string(s) and sax->string(s);
+ }
+
+ case 0xC0: // nil
+ return sax->null();
+
+ case 0xC2: // false
+ return sax->boolean(false);
+
+ case 0xC3: // true
+ return sax->boolean(true);
+
+ case 0xCA: // float 32
+ {
+ float number;
+ return get_number(input_format_t::msgpack, number) and sax->number_float(static_cast<number_float_t>(number), "");
+ }
+
+ case 0xCB: // float 64
+ {
+ double number;
+ return get_number(input_format_t::msgpack, number) and sax->number_float(static_cast<number_float_t>(number), "");
+ }
+
+ case 0xCC: // uint 8
+ {
+ std::uint8_t number;
+ return get_number(input_format_t::msgpack, number) and sax->number_unsigned(number);
+ }
+
+ case 0xCD: // uint 16
+ {
+ std::uint16_t number;
+ return get_number(input_format_t::msgpack, number) and sax->number_unsigned(number);
+ }
+
+ case 0xCE: // uint 32
+ {
+ std::uint32_t number;
+ return get_number(input_format_t::msgpack, number) and sax->number_unsigned(number);
+ }
+
+ case 0xCF: // uint 64
+ {
+ std::uint64_t number;
+ return get_number(input_format_t::msgpack, number) and sax->number_unsigned(number);
+ }
+
+ case 0xD0: // int 8
+ {
+ std::int8_t number;
+ return get_number(input_format_t::msgpack, number) and sax->number_integer(number);
+ }
+
+ case 0xD1: // int 16
+ {
+ std::int16_t number;
+ return get_number(input_format_t::msgpack, number) and sax->number_integer(number);
+ }
+
+ case 0xD2: // int 32
+ {
+ std::int32_t number;
+ return get_number(input_format_t::msgpack, number) and sax->number_integer(number);
+ }
+
+ case 0xD3: // int 64
+ {
+ std::int64_t number;
+ return get_number(input_format_t::msgpack, number) and sax->number_integer(number);
+ }
+
+ case 0xD9: // str 8
+ case 0xDA: // str 16
+ case 0xDB: // str 32
+ {
+ string_t s;
+ return get_msgpack_string(s) and sax->string(s);
+ }
+
+ case 0xDC: // array 16
+ {
+ std::uint16_t len;
+ return get_number(input_format_t::msgpack, len) and get_msgpack_array(static_cast<std::size_t>(len));
+ }
+
+ case 0xDD: // array 32
+ {
+ std::uint32_t len;
+ return get_number(input_format_t::msgpack, len) and get_msgpack_array(static_cast<std::size_t>(len));
+ }
+
+ case 0xDE: // map 16
+ {
+ std::uint16_t len;
+ return get_number(input_format_t::msgpack, len) and get_msgpack_object(static_cast<std::size_t>(len));
+ }
+
+ case 0xDF: // map 32
+ {
+ std::uint32_t len;
+ return get_number(input_format_t::msgpack, len) and get_msgpack_object(static_cast<std::size_t>(len));
+ }
+
+ // negative fixint
+ case 0xE0:
+ case 0xE1:
+ case 0xE2:
+ case 0xE3:
+ case 0xE4:
+ case 0xE5:
+ case 0xE6:
+ case 0xE7:
+ case 0xE8:
+ case 0xE9:
+ case 0xEA:
+ case 0xEB:
+ case 0xEC:
+ case 0xED:
+ case 0xEE:
+ case 0xEF:
+ case 0xF0:
+ case 0xF1:
+ case 0xF2:
+ case 0xF3:
+ case 0xF4:
+ case 0xF5:
+ case 0xF6:
+ case 0xF7:
+ case 0xF8:
+ case 0xF9:
+ case 0xFA:
+ case 0xFB:
+ case 0xFC:
+ case 0xFD:
+ case 0xFE:
+ case 0xFF:
+ return sax->number_integer(static_cast<std::int8_t>(current));
+
+ default: // anything else
+ {
+ auto last_token = get_token_string();
+ return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::msgpack, "invalid byte: 0x" + last_token, "value")));
+ }
+ }
+ }
+
+ /*!
+ @brief reads a MessagePack string
+
+ This function first reads starting bytes to determine the expected
+ string length and then copies this number of bytes into a string.
+
+ @param[out] result created string
+
+ @return whether string creation completed
+ */
+ bool get_msgpack_string(string_t& result)
+ {
+ if (JSON_UNLIKELY(not unexpect_eof(input_format_t::msgpack, "string")))
+ {
+ return false;
+ }
+
+ switch (current)
+ {
+ // fixstr
+ case 0xA0:
+ case 0xA1:
+ case 0xA2:
+ case 0xA3:
+ case 0xA4:
+ case 0xA5:
+ case 0xA6:
+ case 0xA7:
+ case 0xA8:
+ case 0xA9:
+ case 0xAA:
+ case 0xAB:
+ case 0xAC:
+ case 0xAD:
+ case 0xAE:
+ case 0xAF:
+ case 0xB0:
+ case 0xB1:
+ case 0xB2:
+ case 0xB3:
+ case 0xB4:
+ case 0xB5:
+ case 0xB6:
+ case 0xB7:
+ case 0xB8:
+ case 0xB9:
+ case 0xBA:
+ case 0xBB:
+ case 0xBC:
+ case 0xBD:
+ case 0xBE:
+ case 0xBF:
+ {
+ return get_string(input_format_t::msgpack, static_cast<unsigned int>(current) & 0x1Fu, result);
+ }
+
+ case 0xD9: // str 8
+ {
+ std::uint8_t len;
+ return get_number(input_format_t::msgpack, len) and get_string(input_format_t::msgpack, len, result);
+ }
+
+ case 0xDA: // str 16
+ {
+ std::uint16_t len;
+ return get_number(input_format_t::msgpack, len) and get_string(input_format_t::msgpack, len, result);
+ }
+
+ case 0xDB: // str 32
+ {
+ std::uint32_t len;
+ return get_number(input_format_t::msgpack, len) and get_string(input_format_t::msgpack, len, result);
+ }
+
+ default:
+ {
+ auto last_token = get_token_string();
+ return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::msgpack, "expected length specification (0xA0-0xBF, 0xD9-0xDB); last byte: 0x" + last_token, "string")));
+ }
+ }
+ }
+
+ /*!
+ @param[in] len the length of the array
+ @return whether array creation completed
+ */
+ bool get_msgpack_array(const std::size_t len)
+ {
+ if (JSON_UNLIKELY(not sax->start_array(len)))
+ {
+ return false;
+ }
+
+ for (std::size_t i = 0; i < len; ++i)
+ {
+ if (JSON_UNLIKELY(not parse_msgpack_internal()))
+ {
+ return false;
+ }
+ }
+
+ return sax->end_array();
+ }
+
+ /*!
+ @param[in] len the length of the object
+ @return whether object creation completed
+ */
+ bool get_msgpack_object(const std::size_t len)
+ {
+ if (JSON_UNLIKELY(not sax->start_object(len)))
+ {
+ return false;
+ }
+
+ string_t key;
+ for (std::size_t i = 0; i < len; ++i)
+ {
+ get();
+ if (JSON_UNLIKELY(not get_msgpack_string(key) or not sax->key(key)))
+ {
+ return false;
+ }
+
+ if (JSON_UNLIKELY(not parse_msgpack_internal()))
+ {
+ return false;
+ }
+ key.clear();
+ }
+
+ return sax->end_object();
+ }
+
+ ////////////
+ // UBJSON //
+ ////////////
+
+ /*!
+ @param[in] get_char whether a new character should be retrieved from the
+ input (true, default) or whether the last read
+ character should be considered instead
+
+ @return whether a valid UBJSON value was passed to the SAX parser
+ */
+ bool parse_ubjson_internal(const bool get_char = true)
+ {
+ return get_ubjson_value(get_char ? get_ignore_noop() : current);
+ }
+
+ /*!
+ @brief reads a UBJSON string
+
+ This function is either called after reading the 'S' byte explicitly
+ indicating a string, or in case of an object key where the 'S' byte can be
+ left out.
+
+ @param[out] result created string
+ @param[in] get_char whether a new character should be retrieved from the
+ input (true, default) or whether the last read
+ character should be considered instead
+
+ @return whether string creation completed
+ */
+ bool get_ubjson_string(string_t& result, const bool get_char = true)
+ {
+ if (get_char)
+ {
+ get(); // TODO(niels): may we ignore N here?
+ }
+
+ if (JSON_UNLIKELY(not unexpect_eof(input_format_t::ubjson, "value")))
+ {
+ return false;
+ }
+
+ switch (current)
+ {
+ case 'U':
+ {
+ std::uint8_t len;
+ return get_number(input_format_t::ubjson, len) and get_string(input_format_t::ubjson, len, result);
+ }
+
+ case 'i':
+ {
+ std::int8_t len;
+ return get_number(input_format_t::ubjson, len) and get_string(input_format_t::ubjson, len, result);
+ }
+
+ case 'I':
+ {
+ std::int16_t len;
+ return get_number(input_format_t::ubjson, len) and get_string(input_format_t::ubjson, len, result);
+ }
+
+ case 'l':
+ {
+ std::int32_t len;
+ return get_number(input_format_t::ubjson, len) and get_string(input_format_t::ubjson, len, result);
+ }
+
+ case 'L':
+ {
+ std::int64_t len;
+ return get_number(input_format_t::ubjson, len) and get_string(input_format_t::ubjson, len, result);
+ }
+
+ default:
+ auto last_token = get_token_string();
+ return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::ubjson, "expected length type specification (U, i, I, l, L); last byte: 0x" + last_token, "string")));
+ }
+ }
+
+ /*!
+ @param[out] result determined size
+ @return whether size determination completed
+ */
+ bool get_ubjson_size_value(std::size_t& result)
+ {
+ switch (get_ignore_noop())
+ {
+ case 'U':
+ {
+ std::uint8_t number;
+ if (JSON_UNLIKELY(not get_number(input_format_t::ubjson, number)))
+ {
+ return false;
+ }
+ result = static_cast<std::size_t>(number);
+ return true;
+ }
+
+ case 'i':
+ {
+ std::int8_t number;
+ if (JSON_UNLIKELY(not get_number(input_format_t::ubjson, number)))
+ {
+ return false;
+ }
+ result = static_cast<std::size_t>(number);
+ return true;
+ }
+
+ case 'I':
+ {
+ std::int16_t number;
+ if (JSON_UNLIKELY(not get_number(input_format_t::ubjson, number)))
+ {
+ return false;
+ }
+ result = static_cast<std::size_t>(number);
+ return true;
+ }
+
+ case 'l':
+ {
+ std::int32_t number;
+ if (JSON_UNLIKELY(not get_number(input_format_t::ubjson, number)))
+ {
+ return false;
+ }
+ result = static_cast<std::size_t>(number);
+ return true;
+ }
+
+ case 'L':
+ {
+ std::int64_t number;
+ if (JSON_UNLIKELY(not get_number(input_format_t::ubjson, number)))
+ {
+ return false;
+ }
+ result = static_cast<std::size_t>(number);
+ return true;
+ }
+
+ default:
+ {
+ auto last_token = get_token_string();
+ return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::ubjson, "expected length type specification (U, i, I, l, L) after '#'; last byte: 0x" + last_token, "size")));
+ }
+ }
+ }
+
+ /*!
+ @brief determine the type and size for a container
+
+ In the optimized UBJSON format, a type and a size can be provided to allow
+ for a more compact representation.
+
+ @param[out] result pair of the size and the type
+
+ @return whether pair creation completed
+ */
+ bool get_ubjson_size_type(std::pair<std::size_t, int>& result)
+ {
+ result.first = string_t::npos; // size
+ result.second = 0; // type
+
+ get_ignore_noop();
+
+ if (current == '$')
+ {
+ result.second = get(); // must not ignore 'N', because 'N' maybe the type
+ if (JSON_UNLIKELY(not unexpect_eof(input_format_t::ubjson, "type")))
+ {
+ return false;
+ }
+
+ get_ignore_noop();
+ if (JSON_UNLIKELY(current != '#'))
+ {
+ if (JSON_UNLIKELY(not unexpect_eof(input_format_t::ubjson, "value")))
+ {
+ return false;
+ }
+ auto last_token = get_token_string();
+ return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::ubjson, "expected '#' after type information; last byte: 0x" + last_token, "size")));
+ }
+
+ return get_ubjson_size_value(result.first);
+ }
+
+ if (current == '#')
+ {
+ return get_ubjson_size_value(result.first);
+ }
+
+ return true;
+ }
+
+ /*!
+ @param prefix the previously read or set type prefix
+ @return whether value creation completed
+ */
+ bool get_ubjson_value(const int prefix)
+ {
+ switch (prefix)
+ {
+ case std::char_traits<char>::eof(): // EOF
+ return unexpect_eof(input_format_t::ubjson, "value");
+
+ case 'T': // true
+ return sax->boolean(true);
+ case 'F': // false
+ return sax->boolean(false);
+
+ case 'Z': // null
+ return sax->null();
+
+ case 'U':
+ {
+ std::uint8_t number;
+ return get_number(input_format_t::ubjson, number) and sax->number_unsigned(number);
+ }
+
+ case 'i':
+ {
+ std::int8_t number;
+ return get_number(input_format_t::ubjson, number) and sax->number_integer(number);
+ }
+
+ case 'I':
+ {
+ std::int16_t number;
+ return get_number(input_format_t::ubjson, number) and sax->number_integer(number);
+ }
+
+ case 'l':
+ {
+ std::int32_t number;
+ return get_number(input_format_t::ubjson, number) and sax->number_integer(number);
+ }
+
+ case 'L':
+ {
+ std::int64_t number;
+ return get_number(input_format_t::ubjson, number) and sax->number_integer(number);
+ }
+
+ case 'd':
+ {
+ float number;
+ return get_number(input_format_t::ubjson, number) and sax->number_float(static_cast<number_float_t>(number), "");
+ }
+
+ case 'D':
+ {
+ double number;
+ return get_number(input_format_t::ubjson, number) and sax->number_float(static_cast<number_float_t>(number), "");
+ }
+
+ case 'C': // char
+ {
+ get();
+ if (JSON_UNLIKELY(not unexpect_eof(input_format_t::ubjson, "char")))
+ {
+ return false;
+ }
+ if (JSON_UNLIKELY(current > 127))
+ {
+ auto last_token = get_token_string();
+ return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::ubjson, "byte after 'C' must be in range 0x00..0x7F; last byte: 0x" + last_token, "char")));
+ }
+ string_t s(1, static_cast<char>(current));
+ return sax->string(s);
+ }
+
+ case 'S': // string
+ {
+ string_t s;
+ return get_ubjson_string(s) and sax->string(s);
+ }
+
+ case '[': // array
+ return get_ubjson_array();
+
+ case '{': // object
+ return get_ubjson_object();
+
+ default: // anything else
+ {
+ auto last_token = get_token_string();
+ return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::ubjson, "invalid byte: 0x" + last_token, "value")));
+ }
+ }
+ }
+
+ /*!
+ @return whether array creation completed
+ */
+ bool get_ubjson_array()
+ {
+ std::pair<std::size_t, int> size_and_type;
+ if (JSON_UNLIKELY(not get_ubjson_size_type(size_and_type)))
+ {
+ return false;
+ }
+
+ if (size_and_type.first != string_t::npos)
+ {
+ if (JSON_UNLIKELY(not sax->start_array(size_and_type.first)))
+ {
+ return false;
+ }
+
+ if (size_and_type.second != 0)
+ {
+ if (size_and_type.second != 'N')
+ {
+ for (std::size_t i = 0; i < size_and_type.first; ++i)
+ {
+ if (JSON_UNLIKELY(not get_ubjson_value(size_and_type.second)))
+ {
+ return false;
+ }
+ }
+ }
+ }
+ else
+ {
+ for (std::size_t i = 0; i < size_and_type.first; ++i)
+ {
+ if (JSON_UNLIKELY(not parse_ubjson_internal()))
+ {
+ return false;
+ }
+ }
+ }
+ }
+ else
+ {
+ if (JSON_UNLIKELY(not sax->start_array(std::size_t(-1))))
+ {
+ return false;
+ }
+
+ while (current != ']')
+ {
+ if (JSON_UNLIKELY(not parse_ubjson_internal(false)))
+ {
+ return false;
+ }
+ get_ignore_noop();
+ }
+ }
+
+ return sax->end_array();
+ }
+
+ /*!
+ @return whether object creation completed
+ */
+ bool get_ubjson_object()
+ {
+ std::pair<std::size_t, int> size_and_type;
+ if (JSON_UNLIKELY(not get_ubjson_size_type(size_and_type)))
+ {
+ return false;
+ }
+
+ string_t key;
+ if (size_and_type.first != string_t::npos)
+ {
+ if (JSON_UNLIKELY(not sax->start_object(size_and_type.first)))
+ {
+ return false;
+ }
+
+ if (size_and_type.second != 0)
+ {
+ for (std::size_t i = 0; i < size_and_type.first; ++i)
+ {
+ if (JSON_UNLIKELY(not get_ubjson_string(key) or not sax->key(key)))
+ {
+ return false;
+ }
+ if (JSON_UNLIKELY(not get_ubjson_value(size_and_type.second)))
+ {
+ return false;
+ }
+ key.clear();
+ }
+ }
+ else
+ {
+ for (std::size_t i = 0; i < size_and_type.first; ++i)
+ {
+ if (JSON_UNLIKELY(not get_ubjson_string(key) or not sax->key(key)))
+ {
+ return false;
+ }
+ if (JSON_UNLIKELY(not parse_ubjson_internal()))
+ {
+ return false;
+ }
+ key.clear();
+ }
+ }
+ }
+ else
+ {
+ if (JSON_UNLIKELY(not sax->start_object(std::size_t(-1))))
+ {
+ return false;
+ }
+
+ while (current != '}')
+ {
+ if (JSON_UNLIKELY(not get_ubjson_string(key, false) or not sax->key(key)))
+ {
+ return false;
+ }
+ if (JSON_UNLIKELY(not parse_ubjson_internal()))
+ {
+ return false;
+ }
+ get_ignore_noop();
+ key.clear();
+ }
+ }
+
+ return sax->end_object();
+ }
+
+ ///////////////////////
+ // Utility functions //
+ ///////////////////////
+
+ /*!
+ @brief get next character from the input
+
+ This function provides the interface to the used input adapter. It does
+ not throw in case the input reached EOF, but returns a -'ve valued
+ `std::char_traits<char>::eof()` in that case.
+
+ @return character read from the input
+ */
+ int get()
+ {
+ ++chars_read;
+ return current = ia->get_character();
+ }
+
+ /*!
+ @return character read from the input after ignoring all 'N' entries
+ */
+ int get_ignore_noop()
+ {
+ do
+ {
+ get();
+ }
+ while (current == 'N');
+
+ return current;
+ }
+
+ /*
+ @brief read a number from the input
+
+ @tparam NumberType the type of the number
+ @param[in] format the current format (for diagnostics)
+ @param[out] result number of type @a NumberType
+
+ @return whether conversion completed
+
+ @note This function needs to respect the system's endianess, because
+ bytes in CBOR, MessagePack, and UBJSON are stored in network order
+ (big endian) and therefore need reordering on little endian systems.
+ */
+ template<typename NumberType, bool InputIsLittleEndian = false>
+ bool get_number(const input_format_t format, NumberType& result)
+ {
+ // step 1: read input into array with system's byte order
+ std::array<std::uint8_t, sizeof(NumberType)> vec;
+ for (std::size_t i = 0; i < sizeof(NumberType); ++i)
+ {
+ get();
+ if (JSON_UNLIKELY(not unexpect_eof(format, "number")))
+ {
+ return false;
+ }
+
+ // reverse byte order prior to conversion if necessary
+ if (is_little_endian != InputIsLittleEndian)
+ {
+ vec[sizeof(NumberType) - i - 1] = static_cast<std::uint8_t>(current);
+ }
+ else
+ {
+ vec[i] = static_cast<std::uint8_t>(current); // LCOV_EXCL_LINE
+ }
+ }
+
+ // step 2: convert array into number of type T and return
+ std::memcpy(&result, vec.data(), sizeof(NumberType));
+ return true;
+ }
+
+ /*!
+ @brief create a string by reading characters from the input
+
+ @tparam NumberType the type of the number
+ @param[in] format the current format (for diagnostics)
+ @param[in] len number of characters to read
+ @param[out] result string created by reading @a len bytes
+
+ @return whether string creation completed
+
+ @note We can not reserve @a len bytes for the result, because @a len
+ may be too large. Usually, @ref unexpect_eof() detects the end of
+ the input before we run out of string memory.
+ */
+ template<typename NumberType>
+ bool get_string(const input_format_t format,
+ const NumberType len,
+ string_t& result)
+ {
+ bool success = true;
+ std::generate_n(std::back_inserter(result), len, [this, &success, &format]()
+ {
+ get();
+ if (JSON_UNLIKELY(not unexpect_eof(format, "string")))
+ {
+ success = false;
+ }
+ return static_cast<char>(current);
+ });
+ return success;
+ }
+
+ /*!
+ @param[in] format the current format (for diagnostics)
+ @param[in] context further context information (for diagnostics)
+ @return whether the last read character is not EOF
+ */
+ bool unexpect_eof(const input_format_t format, const char* context) const
+ {
+ if (JSON_UNLIKELY(current == std::char_traits<char>::eof()))
+ {
+ return sax->parse_error(chars_read, "<end of file>",
+ parse_error::create(110, chars_read, exception_message(format, "unexpected end of input", context)));
+ }
+ return true;
+ }
+
+ /*!
+ @return a string representation of the last read byte
+ */
+ std::string get_token_string() const
+ {
+ std::array<char, 3> cr{{}};
+ (std::snprintf)(cr.data(), cr.size(), "%.2hhX", static_cast<unsigned char>(current));
+ return std::string{cr.data()};
+ }
+
+ /*!
+ @param[in] format the current format
+ @param[in] detail a detailed error message
+ @param[in] context further contect information
+ @return a message string to use in the parse_error exceptions
+ */
+ std::string exception_message(const input_format_t format,
+ const std::string& detail,
+ const std::string& context) const
+ {
+ std::string error_msg = "syntax error while parsing ";
+
+ switch (format)
+ {
+ case input_format_t::cbor:
+ error_msg += "CBOR";
+ break;
+
+ case input_format_t::msgpack:
+ error_msg += "MessagePack";
+ break;
+
+ case input_format_t::ubjson:
+ error_msg += "UBJSON";
+ break;
+
+ case input_format_t::bson:
+ error_msg += "BSON";
+ break;
+
+ default: // LCOV_EXCL_LINE
+ assert(false); // LCOV_EXCL_LINE
+ }
+
+ return error_msg + " " + context + ": " + detail;
+ }
+
+ private:
+ /// input adapter
+ input_adapter_t ia = nullptr;
+
+ /// the current character
+ int current = std::char_traits<char>::eof();
+
+ /// the number of characters read
+ std::size_t chars_read = 0;
+
+ /// whether we can assume little endianess
+ const bool is_little_endian = little_endianess();
+
+ /// the SAX parser
+ json_sax_t* sax = nullptr;
+};
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/detail/input/input_adapters.hpp>
+
+// #include <nlohmann/detail/input/lexer.hpp>
+
+
+#include <array> // array
+#include <clocale> // localeconv
+#include <cstddef> // size_t
+#include <cstdio> // snprintf
+#include <cstdlib> // strtof, strtod, strtold, strtoll, strtoull
+#include <initializer_list> // initializer_list
+#include <string> // char_traits, string
+#include <utility> // move
+#include <vector> // vector
+
+// #include <nlohmann/detail/input/input_adapters.hpp>
+
+// #include <nlohmann/detail/input/position_t.hpp>
+
+// #include <nlohmann/detail/macro_scope.hpp>
+
+
+namespace nlohmann
+{
+namespace detail
+{
+///////////
+// lexer //
+///////////
+
+/*!
+@brief lexical analysis
+
+This class organizes the lexical analysis during JSON deserialization.
+*/
+template<typename BasicJsonType>
+class lexer
+{
+ using number_integer_t = typename BasicJsonType::number_integer_t;
+ using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
+ using number_float_t = typename BasicJsonType::number_float_t;
+ using string_t = typename BasicJsonType::string_t;
+
+ public:
+ /// token types for the parser
+ enum class token_type
+ {
+ uninitialized, ///< indicating the scanner is uninitialized
+ literal_true, ///< the `true` literal
+ literal_false, ///< the `false` literal
+ literal_null, ///< the `null` literal
+ value_string, ///< a string -- use get_string() for actual value
+ value_unsigned, ///< an unsigned integer -- use get_number_unsigned() for actual value
+ value_integer, ///< a signed integer -- use get_number_integer() for actual value
+ value_float, ///< an floating point number -- use get_number_float() for actual value
+ begin_array, ///< the character for array begin `[`
+ begin_object, ///< the character for object begin `{`
+ end_array, ///< the character for array end `]`
+ end_object, ///< the character for object end `}`
+ name_separator, ///< the name separator `:`
+ value_separator, ///< the value separator `,`
+ parse_error, ///< indicating a parse error
+ end_of_input, ///< indicating the end of the input buffer
+ literal_or_value ///< a literal or the begin of a value (only for diagnostics)
+ };
+
+ /// return name of values of type token_type (only used for errors)
+ static const char* token_type_name(const token_type t) noexcept
+ {
+ switch (t)
+ {
+ case token_type::uninitialized:
+ return "<uninitialized>";
+ case token_type::literal_true:
+ return "true literal";
+ case token_type::literal_false:
+ return "false literal";
+ case token_type::literal_null:
+ return "null literal";
+ case token_type::value_string:
+ return "string literal";
+ case lexer::token_type::value_unsigned:
+ case lexer::token_type::value_integer:
+ case lexer::token_type::value_float:
+ return "number literal";
+ case token_type::begin_array:
+ return "'['";
+ case token_type::begin_object:
+ return "'{'";
+ case token_type::end_array:
+ return "']'";
+ case token_type::end_object:
+ return "'}'";
+ case token_type::name_separator:
+ return "':'";
+ case token_type::value_separator:
+ return "','";
+ case token_type::parse_error:
+ return "<parse error>";
+ case token_type::end_of_input:
+ return "end of input";
+ case token_type::literal_or_value:
+ return "'[', '{', or a literal";
+ // LCOV_EXCL_START
+ default: // catch non-enum values
+ return "unknown token";
+ // LCOV_EXCL_STOP
+ }
+ }
+
+ explicit lexer(detail::input_adapter_t&& adapter)
+ : ia(std::move(adapter)), decimal_point_char(get_decimal_point()) {}
+
+ // delete because of pointer members
+ lexer(const lexer&) = delete;
+ lexer(lexer&&) = delete;
+ lexer& operator=(lexer&) = delete;
+ lexer& operator=(lexer&&) = delete;
+ ~lexer() = default;
+
+ private:
+ /////////////////////
+ // locales
+ /////////////////////
+
+ /// return the locale-dependent decimal point
+ static char get_decimal_point() noexcept
+ {
+ const auto loc = localeconv();
+ assert(loc != nullptr);
+ return (loc->decimal_point == nullptr) ? '.' : *(loc->decimal_point);
+ }
+
+ /////////////////////
+ // scan functions
+ /////////////////////
+
+ /*!
+ @brief get codepoint from 4 hex characters following `\u`
+
+ For input "\u c1 c2 c3 c4" the codepoint is:
+ (c1 * 0x1000) + (c2 * 0x0100) + (c3 * 0x0010) + c4
+ = (c1 << 12) + (c2 << 8) + (c3 << 4) + (c4 << 0)
+
+ Furthermore, the possible characters '0'..'9', 'A'..'F', and 'a'..'f'
+ must be converted to the integers 0x0..0x9, 0xA..0xF, 0xA..0xF, resp. The
+ conversion is done by subtracting the offset (0x30, 0x37, and 0x57)
+ between the ASCII value of the character and the desired integer value.
+
+ @return codepoint (0x0000..0xFFFF) or -1 in case of an error (e.g. EOF or
+ non-hex character)
+ */
+ int get_codepoint()
+ {
+ // this function only makes sense after reading `\u`
+ assert(current == 'u');
+ int codepoint = 0;
+
+ const auto factors = { 12u, 8u, 4u, 0u };
+ for (const auto factor : factors)
+ {
+ get();
+
+ if (current >= '0' and current <= '9')
+ {
+ codepoint += static_cast<int>((static_cast<unsigned int>(current) - 0x30u) << factor);
+ }
+ else if (current >= 'A' and current <= 'F')
+ {
+ codepoint += static_cast<int>((static_cast<unsigned int>(current) - 0x37u) << factor);
+ }
+ else if (current >= 'a' and current <= 'f')
+ {
+ codepoint += static_cast<int>((static_cast<unsigned int>(current) - 0x57u) << factor);
+ }
+ else
+ {
+ return -1;
+ }
+ }
+
+ assert(0x0000 <= codepoint and codepoint <= 0xFFFF);
+ return codepoint;
+ }
+
+ /*!
+ @brief check if the next byte(s) are inside a given range
+
+ Adds the current byte and, for each passed range, reads a new byte and
+ checks if it is inside the range. If a violation was detected, set up an
+ error message and return false. Otherwise, return true.
+
+ @param[in] ranges list of integers; interpreted as list of pairs of
+ inclusive lower and upper bound, respectively
+
+ @pre The passed list @a ranges must have 2, 4, or 6 elements; that is,
+ 1, 2, or 3 pairs. This precondition is enforced by an assertion.
+
+ @return true if and only if no range violation was detected
+ */
+ bool next_byte_in_range(std::initializer_list<int> ranges)
+ {
+ assert(ranges.size() == 2 or ranges.size() == 4 or ranges.size() == 6);
+ add(current);
+
+ for (auto range = ranges.begin(); range != ranges.end(); ++range)
+ {
+ get();
+ if (JSON_LIKELY(*range <= current and current <= *(++range)))
+ {
+ add(current);
+ }
+ else
+ {
+ error_message = "invalid string: ill-formed UTF-8 byte";
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ /*!
+ @brief scan a string literal
+
+ This function scans a string according to Sect. 7 of RFC 7159. While
+ scanning, bytes are escaped and copied into buffer token_buffer. Then the
+ function returns successfully, token_buffer is *not* null-terminated (as it
+ may contain \0 bytes), and token_buffer.size() is the number of bytes in the
+ string.
+
+ @return token_type::value_string if string could be successfully scanned,
+ token_type::parse_error otherwise
+
+ @note In case of errors, variable error_message contains a textual
+ description.
+ */
+ token_type scan_string()
+ {
+ // reset token_buffer (ignore opening quote)
+ reset();
+
+ // we entered the function by reading an open quote
+ assert(current == '\"');
+
+ while (true)
+ {
+ // get next character
+ switch (get())
+ {
+ // end of file while parsing string
+ case std::char_traits<char>::eof():
+ {
+ error_message = "invalid string: missing closing quote";
+ return token_type::parse_error;
+ }
+
+ // closing quote
+ case '\"':
+ {
+ return token_type::value_string;
+ }
+
+ // escapes
+ case '\\':
+ {
+ switch (get())
+ {
+ // quotation mark
+ case '\"':
+ add('\"');
+ break;
+ // reverse solidus
+ case '\\':
+ add('\\');
+ break;
+ // solidus
+ case '/':
+ add('/');
+ break;
+ // backspace
+ case 'b':
+ add('\b');
+ break;
+ // form feed
+ case 'f':
+ add('\f');
+ break;
+ // line feed
+ case 'n':
+ add('\n');
+ break;
+ // carriage return
+ case 'r':
+ add('\r');
+ break;
+ // tab
+ case 't':
+ add('\t');
+ break;
+
+ // unicode escapes
+ case 'u':
+ {
+ const int codepoint1 = get_codepoint();
+ int codepoint = codepoint1; // start with codepoint1
+
+ if (JSON_UNLIKELY(codepoint1 == -1))
+ {
+ error_message = "invalid string: '\\u' must be followed by 4 hex digits";
+ return token_type::parse_error;
+ }
+
+ // check if code point is a high surrogate
+ if (0xD800 <= codepoint1 and codepoint1 <= 0xDBFF)
+ {
+ // expect next \uxxxx entry
+ if (JSON_LIKELY(get() == '\\' and get() == 'u'))
+ {
+ const int codepoint2 = get_codepoint();
+
+ if (JSON_UNLIKELY(codepoint2 == -1))
+ {
+ error_message = "invalid string: '\\u' must be followed by 4 hex digits";
+ return token_type::parse_error;
+ }
+
+ // check if codepoint2 is a low surrogate
+ if (JSON_LIKELY(0xDC00 <= codepoint2 and codepoint2 <= 0xDFFF))
+ {
+ // overwrite codepoint
+ codepoint = static_cast<int>(
+ // high surrogate occupies the most significant 22 bits
+ (static_cast<unsigned int>(codepoint1) << 10u)
+ // low surrogate occupies the least significant 15 bits
+ + static_cast<unsigned int>(codepoint2)
+ // there is still the 0xD800, 0xDC00 and 0x10000 noise
+ // in the result so we have to subtract with:
+ // (0xD800 << 10) + DC00 - 0x10000 = 0x35FDC00
+ - 0x35FDC00u);
+ }
+ else
+ {
+ error_message = "invalid string: surrogate U+DC00..U+DFFF must be followed by U+DC00..U+DFFF";
+ return token_type::parse_error;
+ }
+ }
+ else
+ {
+ error_message = "invalid string: surrogate U+DC00..U+DFFF must be followed by U+DC00..U+DFFF";
+ return token_type::parse_error;
+ }
+ }
+ else
+ {
+ if (JSON_UNLIKELY(0xDC00 <= codepoint1 and codepoint1 <= 0xDFFF))
+ {
+ error_message = "invalid string: surrogate U+DC00..U+DFFF must follow U+D800..U+DBFF";
+ return token_type::parse_error;
+ }
+ }
+
+ // result of the above calculation yields a proper codepoint
+ assert(0x00 <= codepoint and codepoint <= 0x10FFFF);
+
+ // translate codepoint into bytes
+ if (codepoint < 0x80)
+ {
+ // 1-byte characters: 0xxxxxxx (ASCII)
+ add(codepoint);
+ }
+ else if (codepoint <= 0x7FF)
+ {
+ // 2-byte characters: 110xxxxx 10xxxxxx
+ add(static_cast<int>(0xC0u | (static_cast<unsigned int>(codepoint) >> 6u)));
+ add(static_cast<int>(0x80u | (static_cast<unsigned int>(codepoint) & 0x3Fu)));
+ }
+ else if (codepoint <= 0xFFFF)
+ {
+ // 3-byte characters: 1110xxxx 10xxxxxx 10xxxxxx
+ add(static_cast<int>(0xE0u | (static_cast<unsigned int>(codepoint) >> 12u)));
+ add(static_cast<int>(0x80u | ((static_cast<unsigned int>(codepoint) >> 6u) & 0x3Fu)));
+ add(static_cast<int>(0x80u | (static_cast<unsigned int>(codepoint) & 0x3Fu)));
+ }
+ else
+ {
+ // 4-byte characters: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
+ add(static_cast<int>(0xF0u | (static_cast<unsigned int>(codepoint) >> 18u)));
+ add(static_cast<int>(0x80u | ((static_cast<unsigned int>(codepoint) >> 12u) & 0x3Fu)));
+ add(static_cast<int>(0x80u | ((static_cast<unsigned int>(codepoint) >> 6u) & 0x3Fu)));
+ add(static_cast<int>(0x80u | (static_cast<unsigned int>(codepoint) & 0x3Fu)));
+ }
+
+ break;
+ }
+
+ // other characters after escape
+ default:
+ error_message = "invalid string: forbidden character after backslash";
+ return token_type::parse_error;
+ }
+
+ break;
+ }
+
+ // invalid control characters
+ case 0x00:
+ {
+ error_message = "invalid string: control character U+0000 (NUL) must be escaped to \\u0000";
+ return token_type::parse_error;
+ }
+
+ case 0x01:
+ {
+ error_message = "invalid string: control character U+0001 (SOH) must be escaped to \\u0001";
+ return token_type::parse_error;
+ }
+
+ case 0x02:
+ {
+ error_message = "invalid string: control character U+0002 (STX) must be escaped to \\u0002";
+ return token_type::parse_error;
+ }
+
+ case 0x03:
+ {
+ error_message = "invalid string: control character U+0003 (ETX) must be escaped to \\u0003";
+ return token_type::parse_error;
+ }
+
+ case 0x04:
+ {
+ error_message = "invalid string: control character U+0004 (EOT) must be escaped to \\u0004";
+ return token_type::parse_error;
+ }
+
+ case 0x05:
+ {
+ error_message = "invalid string: control character U+0005 (ENQ) must be escaped to \\u0005";
+ return token_type::parse_error;
+ }
+
+ case 0x06:
+ {
+ error_message = "invalid string: control character U+0006 (ACK) must be escaped to \\u0006";
+ return token_type::parse_error;
+ }
+
+ case 0x07:
+ {
+ error_message = "invalid string: control character U+0007 (BEL) must be escaped to \\u0007";
+ return token_type::parse_error;
+ }
+
+ case 0x08:
+ {
+ error_message = "invalid string: control character U+0008 (BS) must be escaped to \\u0008 or \\b";
+ return token_type::parse_error;
+ }
+
+ case 0x09:
+ {
+ error_message = "invalid string: control character U+0009 (HT) must be escaped to \\u0009 or \\t";
+ return token_type::parse_error;
+ }
+
+ case 0x0A:
+ {
+ error_message = "invalid string: control character U+000A (LF) must be escaped to \\u000A or \\n";
+ return token_type::parse_error;
+ }
+
+ case 0x0B:
+ {
+ error_message = "invalid string: control character U+000B (VT) must be escaped to \\u000B";
+ return token_type::parse_error;
+ }
+
+ case 0x0C:
+ {
+ error_message = "invalid string: control character U+000C (FF) must be escaped to \\u000C or \\f";
+ return token_type::parse_error;
+ }
+
+ case 0x0D:
+ {
+ error_message = "invalid string: control character U+000D (CR) must be escaped to \\u000D or \\r";
+ return token_type::parse_error;
+ }
+
+ case 0x0E:
+ {
+ error_message = "invalid string: control character U+000E (SO) must be escaped to \\u000E";
+ return token_type::parse_error;
+ }
+
+ case 0x0F:
+ {
+ error_message = "invalid string: control character U+000F (SI) must be escaped to \\u000F";
+ return token_type::parse_error;
+ }
+
+ case 0x10:
+ {
+ error_message = "invalid string: control character U+0010 (DLE) must be escaped to \\u0010";
+ return token_type::parse_error;
+ }
+
+ case 0x11:
+ {
+ error_message = "invalid string: control character U+0011 (DC1) must be escaped to \\u0011";
+ return token_type::parse_error;
+ }
+
+ case 0x12:
+ {
+ error_message = "invalid string: control character U+0012 (DC2) must be escaped to \\u0012";
+ return token_type::parse_error;
+ }
+
+ case 0x13:
+ {
+ error_message = "invalid string: control character U+0013 (DC3) must be escaped to \\u0013";
+ return token_type::parse_error;
+ }
+
+ case 0x14:
+ {
+ error_message = "invalid string: control character U+0014 (DC4) must be escaped to \\u0014";
+ return token_type::parse_error;
+ }
+
+ case 0x15:
+ {
+ error_message = "invalid string: control character U+0015 (NAK) must be escaped to \\u0015";
+ return token_type::parse_error;
+ }
+
+ case 0x16:
+ {
+ error_message = "invalid string: control character U+0016 (SYN) must be escaped to \\u0016";
+ return token_type::parse_error;
+ }
+
+ case 0x17:
+ {
+ error_message = "invalid string: control character U+0017 (ETB) must be escaped to \\u0017";
+ return token_type::parse_error;
+ }
+
+ case 0x18:
+ {
+ error_message = "invalid string: control character U+0018 (CAN) must be escaped to \\u0018";
+ return token_type::parse_error;
+ }
+
+ case 0x19:
+ {
+ error_message = "invalid string: control character U+0019 (EM) must be escaped to \\u0019";
+ return token_type::parse_error;
+ }
+
+ case 0x1A:
+ {
+ error_message = "invalid string: control character U+001A (SUB) must be escaped to \\u001A";
+ return token_type::parse_error;
+ }
+
+ case 0x1B:
+ {
+ error_message = "invalid string: control character U+001B (ESC) must be escaped to \\u001B";
+ return token_type::parse_error;
+ }
+
+ case 0x1C:
+ {
+ error_message = "invalid string: control character U+001C (FS) must be escaped to \\u001C";
+ return token_type::parse_error;
+ }
+
+ case 0x1D:
+ {
+ error_message = "invalid string: control character U+001D (GS) must be escaped to \\u001D";
+ return token_type::parse_error;
+ }
+
+ case 0x1E:
+ {
+ error_message = "invalid string: control character U+001E (RS) must be escaped to \\u001E";
+ return token_type::parse_error;
+ }
+
+ case 0x1F:
+ {
+ error_message = "invalid string: control character U+001F (US) must be escaped to \\u001F";
+ return token_type::parse_error;
+ }
+
+ // U+0020..U+007F (except U+0022 (quote) and U+005C (backspace))
+ case 0x20:
+ case 0x21:
+ case 0x23:
+ case 0x24:
+ case 0x25:
+ case 0x26:
+ case 0x27:
+ case 0x28:
+ case 0x29:
+ case 0x2A:
+ case 0x2B:
+ case 0x2C:
+ case 0x2D:
+ case 0x2E:
+ case 0x2F:
+ case 0x30:
+ case 0x31:
+ case 0x32:
+ case 0x33:
+ case 0x34:
+ case 0x35:
+ case 0x36:
+ case 0x37:
+ case 0x38:
+ case 0x39:
+ case 0x3A:
+ case 0x3B:
+ case 0x3C:
+ case 0x3D:
+ case 0x3E:
+ case 0x3F:
+ case 0x40:
+ case 0x41:
+ case 0x42:
+ case 0x43:
+ case 0x44:
+ case 0x45:
+ case 0x46:
+ case 0x47:
+ case 0x48:
+ case 0x49:
+ case 0x4A:
+ case 0x4B:
+ case 0x4C:
+ case 0x4D:
+ case 0x4E:
+ case 0x4F:
+ case 0x50:
+ case 0x51:
+ case 0x52:
+ case 0x53:
+ case 0x54:
+ case 0x55:
+ case 0x56:
+ case 0x57:
+ case 0x58:
+ case 0x59:
+ case 0x5A:
+ case 0x5B:
+ case 0x5D:
+ case 0x5E:
+ case 0x5F:
+ case 0x60:
+ case 0x61:
+ case 0x62:
+ case 0x63:
+ case 0x64:
+ case 0x65:
+ case 0x66:
+ case 0x67:
+ case 0x68:
+ case 0x69:
+ case 0x6A:
+ case 0x6B:
+ case 0x6C:
+ case 0x6D:
+ case 0x6E:
+ case 0x6F:
+ case 0x70:
+ case 0x71:
+ case 0x72:
+ case 0x73:
+ case 0x74:
+ case 0x75:
+ case 0x76:
+ case 0x77:
+ case 0x78:
+ case 0x79:
+ case 0x7A:
+ case 0x7B:
+ case 0x7C:
+ case 0x7D:
+ case 0x7E:
+ case 0x7F:
+ {
+ add(current);
+ break;
+ }
+
+ // U+0080..U+07FF: bytes C2..DF 80..BF
+ case 0xC2:
+ case 0xC3:
+ case 0xC4:
+ case 0xC5:
+ case 0xC6:
+ case 0xC7:
+ case 0xC8:
+ case 0xC9:
+ case 0xCA:
+ case 0xCB:
+ case 0xCC:
+ case 0xCD:
+ case 0xCE:
+ case 0xCF:
+ case 0xD0:
+ case 0xD1:
+ case 0xD2:
+ case 0xD3:
+ case 0xD4:
+ case 0xD5:
+ case 0xD6:
+ case 0xD7:
+ case 0xD8:
+ case 0xD9:
+ case 0xDA:
+ case 0xDB:
+ case 0xDC:
+ case 0xDD:
+ case 0xDE:
+ case 0xDF:
+ {
+ if (JSON_UNLIKELY(not next_byte_in_range({0x80, 0xBF})))
+ {
+ return token_type::parse_error;
+ }
+ break;
+ }
+
+ // U+0800..U+0FFF: bytes E0 A0..BF 80..BF
+ case 0xE0:
+ {
+ if (JSON_UNLIKELY(not (next_byte_in_range({0xA0, 0xBF, 0x80, 0xBF}))))
+ {
+ return token_type::parse_error;
+ }
+ break;
+ }
+
+ // U+1000..U+CFFF: bytes E1..EC 80..BF 80..BF
+ // U+E000..U+FFFF: bytes EE..EF 80..BF 80..BF
+ case 0xE1:
+ case 0xE2:
+ case 0xE3:
+ case 0xE4:
+ case 0xE5:
+ case 0xE6:
+ case 0xE7:
+ case 0xE8:
+ case 0xE9:
+ case 0xEA:
+ case 0xEB:
+ case 0xEC:
+ case 0xEE:
+ case 0xEF:
+ {
+ if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0xBF, 0x80, 0xBF}))))
+ {
+ return token_type::parse_error;
+ }
+ break;
+ }
+
+ // U+D000..U+D7FF: bytes ED 80..9F 80..BF
+ case 0xED:
+ {
+ if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0x9F, 0x80, 0xBF}))))
+ {
+ return token_type::parse_error;
+ }
+ break;
+ }
+
+ // U+10000..U+3FFFF F0 90..BF 80..BF 80..BF
+ case 0xF0:
+ {
+ if (JSON_UNLIKELY(not (next_byte_in_range({0x90, 0xBF, 0x80, 0xBF, 0x80, 0xBF}))))
+ {
+ return token_type::parse_error;
+ }
+ break;
+ }
+
+ // U+40000..U+FFFFF F1..F3 80..BF 80..BF 80..BF
+ case 0xF1:
+ case 0xF2:
+ case 0xF3:
+ {
+ if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0xBF, 0x80, 0xBF, 0x80, 0xBF}))))
+ {
+ return token_type::parse_error;
+ }
+ break;
+ }
+
+ // U+100000..U+10FFFF F4 80..8F 80..BF 80..BF
+ case 0xF4:
+ {
+ if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0x8F, 0x80, 0xBF, 0x80, 0xBF}))))
+ {
+ return token_type::parse_error;
+ }
+ break;
+ }
+
+ // remaining bytes (80..C1 and F5..FF) are ill-formed
+ default:
+ {
+ error_message = "invalid string: ill-formed UTF-8 byte";
+ return token_type::parse_error;
+ }
+ }
+ }
+ }
+
+ static void strtof(float& f, const char* str, char** endptr) noexcept
+ {
+ f = std::strtof(str, endptr);
+ }
+
+ static void strtof(double& f, const char* str, char** endptr) noexcept
+ {
+ f = std::strtod(str, endptr);
+ }
+
+ static void strtof(long double& f, const char* str, char** endptr) noexcept
+ {
+ f = std::strtold(str, endptr);
+ }
+
+ /*!
+ @brief scan a number literal
+
+ This function scans a string according to Sect. 6 of RFC 7159.
+
+ The function is realized with a deterministic finite state machine derived
+ from the grammar described in RFC 7159. Starting in state "init", the
+ input is read and used to determined the next state. Only state "done"
+ accepts the number. State "error" is a trap state to model errors. In the
+ table below, "anything" means any character but the ones listed before.
+
+ state | 0 | 1-9 | e E | + | - | . | anything
+ ---------|----------|----------|----------|---------|---------|----------|-----------
+ init | zero | any1 | [error] | [error] | minus | [error] | [error]
+ minus | zero | any1 | [error] | [error] | [error] | [error] | [error]
+ zero | done | done | exponent | done | done | decimal1 | done
+ any1 | any1 | any1 | exponent | done | done | decimal1 | done
+ decimal1 | decimal2 | [error] | [error] | [error] | [error] | [error] | [error]
+ decimal2 | decimal2 | decimal2 | exponent | done | done | done | done
+ exponent | any2 | any2 | [error] | sign | sign | [error] | [error]
+ sign | any2 | any2 | [error] | [error] | [error] | [error] | [error]
+ any2 | any2 | any2 | done | done | done | done | done
+
+ The state machine is realized with one label per state (prefixed with
+ "scan_number_") and `goto` statements between them. The state machine
+ contains cycles, but any cycle can be left when EOF is read. Therefore,
+ the function is guaranteed to terminate.
+
+ During scanning, the read bytes are stored in token_buffer. This string is
+ then converted to a signed integer, an unsigned integer, or a
+ floating-point number.
+
+ @return token_type::value_unsigned, token_type::value_integer, or
+ token_type::value_float if number could be successfully scanned,
+ token_type::parse_error otherwise
+
+ @note The scanner is independent of the current locale. Internally, the
+ locale's decimal point is used instead of `.` to work with the
+ locale-dependent converters.
+ */
+ token_type scan_number() // lgtm [cpp/use-of-goto]
+ {
+ // reset token_buffer to store the number's bytes
+ reset();
+
+ // the type of the parsed number; initially set to unsigned; will be
+ // changed if minus sign, decimal point or exponent is read
+ token_type number_type = token_type::value_unsigned;
+
+ // state (init): we just found out we need to scan a number
+ switch (current)
+ {
+ case '-':
+ {
+ add(current);
+ goto scan_number_minus;
+ }
+
+ case '0':
+ {
+ add(current);
+ goto scan_number_zero;
+ }
+
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ {
+ add(current);
+ goto scan_number_any1;
+ }
+
+ // all other characters are rejected outside scan_number()
+ default: // LCOV_EXCL_LINE
+ assert(false); // LCOV_EXCL_LINE
+ }
+
+scan_number_minus:
+ // state: we just parsed a leading minus sign
+ number_type = token_type::value_integer;
+ switch (get())
+ {
+ case '0':
+ {
+ add(current);
+ goto scan_number_zero;
+ }
+
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ {
+ add(current);
+ goto scan_number_any1;
+ }
+
+ default:
+ {
+ error_message = "invalid number; expected digit after '-'";
+ return token_type::parse_error;
+ }
+ }
+
+scan_number_zero:
+ // state: we just parse a zero (maybe with a leading minus sign)
+ switch (get())
+ {
+ case '.':
+ {
+ add(decimal_point_char);
+ goto scan_number_decimal1;
+ }
+
+ case 'e':
+ case 'E':
+ {
+ add(current);
+ goto scan_number_exponent;
+ }
+
+ default:
+ goto scan_number_done;
+ }
+
+scan_number_any1:
+ // state: we just parsed a number 0-9 (maybe with a leading minus sign)
+ switch (get())
+ {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ {
+ add(current);
+ goto scan_number_any1;
+ }
+
+ case '.':
+ {
+ add(decimal_point_char);
+ goto scan_number_decimal1;
+ }
+
+ case 'e':
+ case 'E':
+ {
+ add(current);
+ goto scan_number_exponent;
+ }
+
+ default:
+ goto scan_number_done;
+ }
+
+scan_number_decimal1:
+ // state: we just parsed a decimal point
+ number_type = token_type::value_float;
+ switch (get())
+ {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ {
+ add(current);
+ goto scan_number_decimal2;
+ }
+
+ default:
+ {
+ error_message = "invalid number; expected digit after '.'";
+ return token_type::parse_error;
+ }
+ }
+
+scan_number_decimal2:
+ // we just parsed at least one number after a decimal point
+ switch (get())
+ {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ {
+ add(current);
+ goto scan_number_decimal2;
+ }
+
+ case 'e':
+ case 'E':
+ {
+ add(current);
+ goto scan_number_exponent;
+ }
+
+ default:
+ goto scan_number_done;
+ }
+
+scan_number_exponent:
+ // we just parsed an exponent
+ number_type = token_type::value_float;
+ switch (get())
+ {
+ case '+':
+ case '-':
+ {
+ add(current);
+ goto scan_number_sign;
+ }
+
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ {
+ add(current);
+ goto scan_number_any2;
+ }
+
+ default:
+ {
+ error_message =
+ "invalid number; expected '+', '-', or digit after exponent";
+ return token_type::parse_error;
+ }
+ }
+
+scan_number_sign:
+ // we just parsed an exponent sign
+ switch (get())
+ {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ {
+ add(current);
+ goto scan_number_any2;
+ }
+
+ default:
+ {
+ error_message = "invalid number; expected digit after exponent sign";
+ return token_type::parse_error;
+ }
+ }
+
+scan_number_any2:
+ // we just parsed a number after the exponent or exponent sign
+ switch (get())
+ {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ {
+ add(current);
+ goto scan_number_any2;
+ }
+
+ default:
+ goto scan_number_done;
+ }
+
+scan_number_done:
+ // unget the character after the number (we only read it to know that
+ // we are done scanning a number)
+ unget();
+
+ char* endptr = nullptr;
+ errno = 0;
+
+ // try to parse integers first and fall back to floats
+ if (number_type == token_type::value_unsigned)
+ {
+ const auto x = std::strtoull(token_buffer.data(), &endptr, 10);
+
+ // we checked the number format before
+ assert(endptr == token_buffer.data() + token_buffer.size());
+
+ if (errno == 0)
+ {
+ value_unsigned = static_cast<number_unsigned_t>(x);
+ if (value_unsigned == x)
+ {
+ return token_type::value_unsigned;
+ }
+ }
+ }
+ else if (number_type == token_type::value_integer)
+ {
+ const auto x = std::strtoll(token_buffer.data(), &endptr, 10);
+
+ // we checked the number format before
+ assert(endptr == token_buffer.data() + token_buffer.size());
+
+ if (errno == 0)
+ {
+ value_integer = static_cast<number_integer_t>(x);
+ if (value_integer == x)
+ {
+ return token_type::value_integer;
+ }
+ }
+ }
+
+ // this code is reached if we parse a floating-point number or if an
+ // integer conversion above failed
+ strtof(value_float, token_buffer.data(), &endptr);
+
+ // we checked the number format before
+ assert(endptr == token_buffer.data() + token_buffer.size());
+
+ return token_type::value_float;
+ }
+
+ /*!
+ @param[in] literal_text the literal text to expect
+ @param[in] length the length of the passed literal text
+ @param[in] return_type the token type to return on success
+ */
+ token_type scan_literal(const char* literal_text, const std::size_t length,
+ token_type return_type)
+ {
+ assert(current == literal_text[0]);
+ for (std::size_t i = 1; i < length; ++i)
+ {
+ if (JSON_UNLIKELY(get() != literal_text[i]))
+ {
+ error_message = "invalid literal";
+ return token_type::parse_error;
+ }
+ }
+ return return_type;
+ }
+
+ /////////////////////
+ // input management
+ /////////////////////
+
+ /// reset token_buffer; current character is beginning of token
+ void reset() noexcept
+ {
+ token_buffer.clear();
+ token_string.clear();
+ token_string.push_back(std::char_traits<char>::to_char_type(current));
+ }
+
+ /*
+ @brief get next character from the input
+
+ This function provides the interface to the used input adapter. It does
+ not throw in case the input reached EOF, but returns a
+ `std::char_traits<char>::eof()` in that case. Stores the scanned characters
+ for use in error messages.
+
+ @return character read from the input
+ */
+ std::char_traits<char>::int_type get()
+ {
+ ++position.chars_read_total;
+ ++position.chars_read_current_line;
+
+ if (next_unget)
+ {
+ // just reset the next_unget variable and work with current
+ next_unget = false;
+ }
+ else
+ {
+ current = ia->get_character();
+ }
+
+ if (JSON_LIKELY(current != std::char_traits<char>::eof()))
+ {
+ token_string.push_back(std::char_traits<char>::to_char_type(current));
+ }
+
+ if (current == '\n')
+ {
+ ++position.lines_read;
+ position.chars_read_current_line = 0;
+ }
+
+ return current;
+ }
+
+ /*!
+ @brief unget current character (read it again on next get)
+
+ We implement unget by setting variable next_unget to true. The input is not
+ changed - we just simulate ungetting by modifying chars_read_total,
+ chars_read_current_line, and token_string. The next call to get() will
+ behave as if the unget character is read again.
+ */
+ void unget()
+ {
+ next_unget = true;
+
+ --position.chars_read_total;
+
+ // in case we "unget" a newline, we have to also decrement the lines_read
+ if (position.chars_read_current_line == 0)
+ {
+ if (position.lines_read > 0)
+ {
+ --position.lines_read;
+ }
+ }
+ else
+ {
+ --position.chars_read_current_line;
+ }
+
+ if (JSON_LIKELY(current != std::char_traits<char>::eof()))
+ {
+ assert(not token_string.empty());
+ token_string.pop_back();
+ }
+ }
+
+ /// add a character to token_buffer
+ void add(int c)
+ {
+ token_buffer.push_back(std::char_traits<char>::to_char_type(c));
+ }
+
+ public:
+ /////////////////////
+ // value getters
+ /////////////////////
+
+ /// return integer value
+ constexpr number_integer_t get_number_integer() const noexcept
+ {
+ return value_integer;
+ }
+
+ /// return unsigned integer value
+ constexpr number_unsigned_t get_number_unsigned() const noexcept
+ {
+ return value_unsigned;
+ }
+
+ /// return floating-point value
+ constexpr number_float_t get_number_float() const noexcept
+ {
+ return value_float;
+ }
+
+ /// return current string value (implicitly resets the token; useful only once)
+ string_t& get_string()
+ {
+ return token_buffer;
+ }
+
+ /////////////////////
+ // diagnostics
+ /////////////////////
+
+ /// return position of last read token
+ constexpr position_t get_position() const noexcept
+ {
+ return position;
+ }
+
+ /// return the last read token (for errors only). Will never contain EOF
+ /// (an arbitrary value that is not a valid char value, often -1), because
+ /// 255 may legitimately occur. May contain NUL, which should be escaped.
+ std::string get_token_string() const
+ {
+ // escape control characters
+ std::string result;
+ for (const auto c : token_string)
+ {
+ if ('\x00' <= c and c <= '\x1F')
+ {
+ // escape control characters
+ std::array<char, 9> cs{{}};
+ (std::snprintf)(cs.data(), cs.size(), "<U+%.4X>", static_cast<unsigned char>(c));
+ result += cs.data();
+ }
+ else
+ {
+ // add character as is
+ result.push_back(c);
+ }
+ }
+
+ return result;
+ }
+
+ /// return syntax error message
+ constexpr const char* get_error_message() const noexcept
+ {
+ return error_message;
+ }
+
+ /////////////////////
+ // actual scanner
+ /////////////////////
+
+ /*!
+ @brief skip the UTF-8 byte order mark
+ @return true iff there is no BOM or the correct BOM has been skipped
+ */
+ bool skip_bom()
+ {
+ if (get() == 0xEF)
+ {
+ // check if we completely parse the BOM
+ return get() == 0xBB and get() == 0xBF;
+ }
+
+ // the first character is not the beginning of the BOM; unget it to
+ // process is later
+ unget();
+ return true;
+ }
+
+ token_type scan()
+ {
+ // initially, skip the BOM
+ if (position.chars_read_total == 0 and not skip_bom())
+ {
+ error_message = "invalid BOM; must be 0xEF 0xBB 0xBF if given";
+ return token_type::parse_error;
+ }
+
+ // read next character and ignore whitespace
+ do
+ {
+ get();
+ }
+ while (current == ' ' or current == '\t' or current == '\n' or current == '\r');
+
+ switch (current)
+ {
+ // structural characters
+ case '[':
+ return token_type::begin_array;
+ case ']':
+ return token_type::end_array;
+ case '{':
+ return token_type::begin_object;
+ case '}':
+ return token_type::end_object;
+ case ':':
+ return token_type::name_separator;
+ case ',':
+ return token_type::value_separator;
+
+ // literals
+ case 't':
+ return scan_literal("true", 4, token_type::literal_true);
+ case 'f':
+ return scan_literal("false", 5, token_type::literal_false);
+ case 'n':
+ return scan_literal("null", 4, token_type::literal_null);
+
+ // string
+ case '\"':
+ return scan_string();
+
+ // number
+ case '-':
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ return scan_number();
+
+ // end of input (the null byte is needed when parsing from
+ // string literals)
+ case '\0':
+ case std::char_traits<char>::eof():
+ return token_type::end_of_input;
+
+ // error
+ default:
+ error_message = "invalid literal";
+ return token_type::parse_error;
+ }
+ }
+
+ private:
+ /// input adapter
+ detail::input_adapter_t ia = nullptr;
+
+ /// the current character
+ std::char_traits<char>::int_type current = std::char_traits<char>::eof();
+
+ /// whether the next get() call should just return current
+ bool next_unget = false;
+
+ /// the start position of the current token
+ position_t position {};
+
+ /// raw input token string (for error messages)
+ std::vector<char> token_string {};
+
+ /// buffer for variable-length tokens (numbers, strings)
+ string_t token_buffer {};
+
+ /// a description of occurred lexer errors
+ const char* error_message = "";
+
+ // number values
+ number_integer_t value_integer = 0;
+ number_unsigned_t value_unsigned = 0;
+ number_float_t value_float = 0;
+
+ /// the decimal point
+ const char decimal_point_char = '.';
+};
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/detail/input/parser.hpp>
+
+
+#include <cassert> // assert
+#include <cmath> // isfinite
+#include <cstdint> // uint8_t
+#include <functional> // function
+#include <string> // string
+#include <utility> // move
+#include <vector> // vector
+
+// #include <nlohmann/detail/exceptions.hpp>
+
+// #include <nlohmann/detail/input/input_adapters.hpp>
+
+// #include <nlohmann/detail/input/json_sax.hpp>
+
+// #include <nlohmann/detail/input/lexer.hpp>
+
+// #include <nlohmann/detail/macro_scope.hpp>
+
+// #include <nlohmann/detail/meta/is_sax.hpp>
+
+// #include <nlohmann/detail/value_t.hpp>
+
+
+namespace nlohmann
+{
+namespace detail
+{
+////////////
+// parser //
+////////////
+
+/*!
+@brief syntax analysis
+
+This class implements a recursive decent parser.
+*/
+template<typename BasicJsonType>
+class parser
+{
+ using number_integer_t = typename BasicJsonType::number_integer_t;
+ using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
+ using number_float_t = typename BasicJsonType::number_float_t;
+ using string_t = typename BasicJsonType::string_t;
+ using lexer_t = lexer<BasicJsonType>;
+ using token_type = typename lexer_t::token_type;
+
+ public:
+ enum class parse_event_t : uint8_t
+ {
+ /// the parser read `{` and started to process a JSON object
+ object_start,
+ /// the parser read `}` and finished processing a JSON object
+ object_end,
+ /// the parser read `[` and started to process a JSON array
+ array_start,
+ /// the parser read `]` and finished processing a JSON array
+ array_end,
+ /// the parser read a key of a value in an object
+ key,
+ /// the parser finished reading a JSON value
+ value
+ };
+
+ using parser_callback_t =
+ std::function<bool(int depth, parse_event_t event, BasicJsonType& parsed)>;
+
+ /// a parser reading from an input adapter
+ explicit parser(detail::input_adapter_t&& adapter,
+ const parser_callback_t cb = nullptr,
+ const bool allow_exceptions_ = true)
+ : callback(cb), m_lexer(std::move(adapter)), allow_exceptions(allow_exceptions_)
+ {
+ // read first token
+ get_token();
+ }
+
+ /*!
+ @brief public parser interface
+
+ @param[in] strict whether to expect the last token to be EOF
+ @param[in,out] result parsed JSON value
+
+ @throw parse_error.101 in case of an unexpected token
+ @throw parse_error.102 if to_unicode fails or surrogate error
+ @throw parse_error.103 if to_unicode fails
+ */
+ void parse(const bool strict, BasicJsonType& result)
+ {
+ if (callback)
+ {
+ json_sax_dom_callback_parser<BasicJsonType> sdp(result, callback, allow_exceptions);
+ sax_parse_internal(&sdp);
+ result.assert_invariant();
+
+ // in strict mode, input must be completely read
+ if (strict and (get_token() != token_type::end_of_input))
+ {
+ sdp.parse_error(m_lexer.get_position(),
+ m_lexer.get_token_string(),
+ parse_error::create(101, m_lexer.get_position(),
+ exception_message(token_type::end_of_input, "value")));
+ }
+
+ // in case of an error, return discarded value
+ if (sdp.is_errored())
+ {
+ result = value_t::discarded;
+ return;
+ }
+
+ // set top-level value to null if it was discarded by the callback
+ // function
+ if (result.is_discarded())
+ {
+ result = nullptr;
+ }
+ }
+ else
+ {
+ json_sax_dom_parser<BasicJsonType> sdp(result, allow_exceptions);
+ sax_parse_internal(&sdp);
+ result.assert_invariant();
+
+ // in strict mode, input must be completely read
+ if (strict and (get_token() != token_type::end_of_input))
+ {
+ sdp.parse_error(m_lexer.get_position(),
+ m_lexer.get_token_string(),
+ parse_error::create(101, m_lexer.get_position(),
+ exception_message(token_type::end_of_input, "value")));
+ }
+
+ // in case of an error, return discarded value
+ if (sdp.is_errored())
+ {
+ result = value_t::discarded;
+ return;
+ }
+ }
+ }
+
+ /*!
+ @brief public accept interface
+
+ @param[in] strict whether to expect the last token to be EOF
+ @return whether the input is a proper JSON text
+ */
+ bool accept(const bool strict = true)
+ {
+ json_sax_acceptor<BasicJsonType> sax_acceptor;
+ return sax_parse(&sax_acceptor, strict);
+ }
+
+ template <typename SAX>
+ bool sax_parse(SAX* sax, const bool strict = true)
+ {
+ (void)detail::is_sax_static_asserts<SAX, BasicJsonType> {};
+ const bool result = sax_parse_internal(sax);
+
+ // strict mode: next byte must be EOF
+ if (result and strict and (get_token() != token_type::end_of_input))
+ {
+ return sax->parse_error(m_lexer.get_position(),
+ m_lexer.get_token_string(),
+ parse_error::create(101, m_lexer.get_position(),
+ exception_message(token_type::end_of_input, "value")));
+ }
+
+ return result;
+ }
+
+ private:
+ template <typename SAX>
+ bool sax_parse_internal(SAX* sax)
+ {
+ // stack to remember the hierarchy of structured values we are parsing
+ // true = array; false = object
+ std::vector<bool> states;
+ // value to avoid a goto (see comment where set to true)
+ bool skip_to_state_evaluation = false;
+
+ while (true)
+ {
+ if (not skip_to_state_evaluation)
+ {
+ // invariant: get_token() was called before each iteration
+ switch (last_token)
+ {
+ case token_type::begin_object:
+ {
+ if (JSON_UNLIKELY(not sax->start_object(std::size_t(-1))))
+ {
+ return false;
+ }
+
+ // closing } -> we are done
+ if (get_token() == token_type::end_object)
+ {
+ if (JSON_UNLIKELY(not sax->end_object()))
+ {
+ return false;
+ }
+ break;
+ }
+
+ // parse key
+ if (JSON_UNLIKELY(last_token != token_type::value_string))
+ {
+ return sax->parse_error(m_lexer.get_position(),
+ m_lexer.get_token_string(),
+ parse_error::create(101, m_lexer.get_position(),
+ exception_message(token_type::value_string, "object key")));
+ }
+ if (JSON_UNLIKELY(not sax->key(m_lexer.get_string())))
+ {
+ return false;
+ }
+
+ // parse separator (:)
+ if (JSON_UNLIKELY(get_token() != token_type::name_separator))
+ {
+ return sax->parse_error(m_lexer.get_position(),
+ m_lexer.get_token_string(),
+ parse_error::create(101, m_lexer.get_position(),
+ exception_message(token_type::name_separator, "object separator")));
+ }
+
+ // remember we are now inside an object
+ states.push_back(false);
+
+ // parse values
+ get_token();
+ continue;
+ }
+
+ case token_type::begin_array:
+ {
+ if (JSON_UNLIKELY(not sax->start_array(std::size_t(-1))))
+ {
+ return false;
+ }
+
+ // closing ] -> we are done
+ if (get_token() == token_type::end_array)
+ {
+ if (JSON_UNLIKELY(not sax->end_array()))
+ {
+ return false;
+ }
+ break;
+ }
+
+ // remember we are now inside an array
+ states.push_back(true);
+
+ // parse values (no need to call get_token)
+ continue;
+ }
+
+ case token_type::value_float:
+ {
+ const auto res = m_lexer.get_number_float();
+
+ if (JSON_UNLIKELY(not std::isfinite(res)))
+ {
+ return sax->parse_error(m_lexer.get_position(),
+ m_lexer.get_token_string(),
+ out_of_range::create(406, "number overflow parsing '" + m_lexer.get_token_string() + "'"));
+ }
+
+ if (JSON_UNLIKELY(not sax->number_float(res, m_lexer.get_string())))
+ {
+ return false;
+ }
+
+ break;
+ }
+
+ case token_type::literal_false:
+ {
+ if (JSON_UNLIKELY(not sax->boolean(false)))
+ {
+ return false;
+ }
+ break;
+ }
+
+ case token_type::literal_null:
+ {
+ if (JSON_UNLIKELY(not sax->null()))
+ {
+ return false;
+ }
+ break;
+ }
+
+ case token_type::literal_true:
+ {
+ if (JSON_UNLIKELY(not sax->boolean(true)))
+ {
+ return false;
+ }
+ break;
+ }
+
+ case token_type::value_integer:
+ {
+ if (JSON_UNLIKELY(not sax->number_integer(m_lexer.get_number_integer())))
+ {
+ return false;
+ }
+ break;
+ }
+
+ case token_type::value_string:
+ {
+ if (JSON_UNLIKELY(not sax->string(m_lexer.get_string())))
+ {
+ return false;
+ }
+ break;
+ }
+
+ case token_type::value_unsigned:
+ {
+ if (JSON_UNLIKELY(not sax->number_unsigned(m_lexer.get_number_unsigned())))
+ {
+ return false;
+ }
+ break;
+ }
+
+ case token_type::parse_error:
+ {
+ // using "uninitialized" to avoid "expected" message
+ return sax->parse_error(m_lexer.get_position(),
+ m_lexer.get_token_string(),
+ parse_error::create(101, m_lexer.get_position(),
+ exception_message(token_type::uninitialized, "value")));
+ }
+
+ default: // the last token was unexpected
+ {
+ return sax->parse_error(m_lexer.get_position(),
+ m_lexer.get_token_string(),
+ parse_error::create(101, m_lexer.get_position(),
+ exception_message(token_type::literal_or_value, "value")));
+ }
+ }
+ }
+ else
+ {
+ skip_to_state_evaluation = false;
+ }
+
+ // we reached this line after we successfully parsed a value
+ if (states.empty())
+ {
+ // empty stack: we reached the end of the hierarchy: done
+ return true;
+ }
+
+ if (states.back()) // array
+ {
+ // comma -> next value
+ if (get_token() == token_type::value_separator)
+ {
+ // parse a new value
+ get_token();
+ continue;
+ }
+
+ // closing ]
+ if (JSON_LIKELY(last_token == token_type::end_array))
+ {
+ if (JSON_UNLIKELY(not sax->end_array()))
+ {
+ return false;
+ }
+
+ // We are done with this array. Before we can parse a
+ // new value, we need to evaluate the new state first.
+ // By setting skip_to_state_evaluation to false, we
+ // are effectively jumping to the beginning of this if.
+ assert(not states.empty());
+ states.pop_back();
+ skip_to_state_evaluation = true;
+ continue;
+ }
+
+ return sax->parse_error(m_lexer.get_position(),
+ m_lexer.get_token_string(),
+ parse_error::create(101, m_lexer.get_position(),
+ exception_message(token_type::end_array, "array")));
+ }
+ else // object
+ {
+ // comma -> next value
+ if (get_token() == token_type::value_separator)
+ {
+ // parse key
+ if (JSON_UNLIKELY(get_token() != token_type::value_string))
+ {
+ return sax->parse_error(m_lexer.get_position(),
+ m_lexer.get_token_string(),
+ parse_error::create(101, m_lexer.get_position(),
+ exception_message(token_type::value_string, "object key")));
+ }
+
+ if (JSON_UNLIKELY(not sax->key(m_lexer.get_string())))
+ {
+ return false;
+ }
+
+ // parse separator (:)
+ if (JSON_UNLIKELY(get_token() != token_type::name_separator))
+ {
+ return sax->parse_error(m_lexer.get_position(),
+ m_lexer.get_token_string(),
+ parse_error::create(101, m_lexer.get_position(),
+ exception_message(token_type::name_separator, "object separator")));
+ }
+
+ // parse values
+ get_token();
+ continue;
+ }
+
+ // closing }
+ if (JSON_LIKELY(last_token == token_type::end_object))
+ {
+ if (JSON_UNLIKELY(not sax->end_object()))
+ {
+ return false;
+ }
+
+ // We are done with this object. Before we can parse a
+ // new value, we need to evaluate the new state first.
+ // By setting skip_to_state_evaluation to false, we
+ // are effectively jumping to the beginning of this if.
+ assert(not states.empty());
+ states.pop_back();
+ skip_to_state_evaluation = true;
+ continue;
+ }
+
+ return sax->parse_error(m_lexer.get_position(),
+ m_lexer.get_token_string(),
+ parse_error::create(101, m_lexer.get_position(),
+ exception_message(token_type::end_object, "object")));
+ }
+ }
+ }
+
+ /// get next token from lexer
+ token_type get_token()
+ {
+ return last_token = m_lexer.scan();
+ }
+
+ std::string exception_message(const token_type expected, const std::string& context)
+ {
+ std::string error_msg = "syntax error ";
+
+ if (not context.empty())
+ {
+ error_msg += "while parsing " + context + " ";
+ }
+
+ error_msg += "- ";
+
+ if (last_token == token_type::parse_error)
+ {
+ error_msg += std::string(m_lexer.get_error_message()) + "; last read: '" +
+ m_lexer.get_token_string() + "'";
+ }
+ else
+ {
+ error_msg += "unexpected " + std::string(lexer_t::token_type_name(last_token));
+ }
+
+ if (expected != token_type::uninitialized)
+ {
+ error_msg += "; expected " + std::string(lexer_t::token_type_name(expected));
+ }
+
+ return error_msg;
+ }
+
+ private:
+ /// callback function
+ const parser_callback_t callback = nullptr;
+ /// the type of the last read token
+ token_type last_token = token_type::uninitialized;
+ /// the lexer
+ lexer_t m_lexer;
+ /// whether to throw exceptions in case of errors
+ const bool allow_exceptions = true;
+};
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/detail/iterators/internal_iterator.hpp>
+
+
+// #include <nlohmann/detail/iterators/primitive_iterator.hpp>
+
+
+#include <cstddef> // ptrdiff_t
+#include <limits> // numeric_limits
+
+namespace nlohmann
+{
+namespace detail
+{
+/*
+@brief an iterator for primitive JSON types
+
+This class models an iterator for primitive JSON types (boolean, number,
+string). It's only purpose is to allow the iterator/const_iterator classes
+to "iterate" over primitive values. Internally, the iterator is modeled by
+a `difference_type` variable. Value begin_value (`0`) models the begin,
+end_value (`1`) models past the end.
+*/
+class primitive_iterator_t
+{
+ private:
+ using difference_type = std::ptrdiff_t;
+ static constexpr difference_type begin_value = 0;
+ static constexpr difference_type end_value = begin_value + 1;
+
+ /// iterator as signed integer type
+ difference_type m_it = (std::numeric_limits<std::ptrdiff_t>::min)();
+
+ public:
+ constexpr difference_type get_value() const noexcept
+ {
+ return m_it;
+ }
+
+ /// set iterator to a defined beginning
+ void set_begin() noexcept
+ {
+ m_it = begin_value;
+ }
+
+ /// set iterator to a defined past the end
+ void set_end() noexcept
+ {
+ m_it = end_value;
+ }
+
+ /// return whether the iterator can be dereferenced
+ constexpr bool is_begin() const noexcept
+ {
+ return m_it == begin_value;
+ }
+
+ /// return whether the iterator is at end
+ constexpr bool is_end() const noexcept
+ {
+ return m_it == end_value;
+ }
+
+ friend constexpr bool operator==(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept
+ {
+ return lhs.m_it == rhs.m_it;
+ }
+
+ friend constexpr bool operator<(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept
+ {
+ return lhs.m_it < rhs.m_it;
+ }
+
+ primitive_iterator_t operator+(difference_type n) noexcept
+ {
+ auto result = *this;
+ result += n;
+ return result;
+ }
+
+ friend constexpr difference_type operator-(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept
+ {
+ return lhs.m_it - rhs.m_it;
+ }
+
+ primitive_iterator_t& operator++() noexcept
+ {
+ ++m_it;
+ return *this;
+ }
+
+ primitive_iterator_t const operator++(int) noexcept
+ {
+ auto result = *this;
+ ++m_it;
+ return result;
+ }
+
+ primitive_iterator_t& operator--() noexcept
+ {
+ --m_it;
+ return *this;
+ }
+
+ primitive_iterator_t const operator--(int) noexcept
+ {
+ auto result = *this;
+ --m_it;
+ return result;
+ }
+
+ primitive_iterator_t& operator+=(difference_type n) noexcept
+ {
+ m_it += n;
+ return *this;
+ }
+
+ primitive_iterator_t& operator-=(difference_type n) noexcept
+ {
+ m_it -= n;
+ return *this;
+ }
+};
+} // namespace detail
+} // namespace nlohmann
+
+
+namespace nlohmann
+{
+namespace detail
+{
+/*!
+@brief an iterator value
+
+@note This structure could easily be a union, but MSVC currently does not allow
+unions members with complex constructors, see https://github.com/nlohmann/json/pull/105.
+*/
+template<typename BasicJsonType> struct internal_iterator
+{
+ /// iterator for JSON objects
+ typename BasicJsonType::object_t::iterator object_iterator {};
+ /// iterator for JSON arrays
+ typename BasicJsonType::array_t::iterator array_iterator {};
+ /// generic iterator for all other types
+ primitive_iterator_t primitive_iterator {};
+};
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/detail/iterators/iter_impl.hpp>
+
+
+#include <ciso646> // not
+#include <iterator> // iterator, random_access_iterator_tag, bidirectional_iterator_tag, advance, next
+#include <type_traits> // conditional, is_const, remove_const
+
+// #include <nlohmann/detail/exceptions.hpp>
+
+// #include <nlohmann/detail/iterators/internal_iterator.hpp>
+
+// #include <nlohmann/detail/iterators/primitive_iterator.hpp>
+
+// #include <nlohmann/detail/macro_scope.hpp>
+
+// #include <nlohmann/detail/meta/cpp_future.hpp>
+
+// #include <nlohmann/detail/meta/type_traits.hpp>
+
+// #include <nlohmann/detail/value_t.hpp>
+
+
+namespace nlohmann
+{
+namespace detail
+{
+// forward declare, to be able to friend it later on
+template<typename IteratorType> class iteration_proxy;
+template<typename IteratorType> class iteration_proxy_value;
+
+/*!
+@brief a template for a bidirectional iterator for the @ref basic_json class
+This class implements a both iterators (iterator and const_iterator) for the
+@ref basic_json class.
+@note An iterator is called *initialized* when a pointer to a JSON value has
+ been set (e.g., by a constructor or a copy assignment). If the iterator is
+ default-constructed, it is *uninitialized* and most methods are undefined.
+ **The library uses assertions to detect calls on uninitialized iterators.**
+@requirement The class satisfies the following concept requirements:
+-
+[BidirectionalIterator](https://en.cppreference.com/w/cpp/named_req/BidirectionalIterator):
+ The iterator that can be moved can be moved in both directions (i.e.
+ incremented and decremented).
+@since version 1.0.0, simplified in version 2.0.9, change to bidirectional
+ iterators in version 3.0.0 (see https://github.com/nlohmann/json/issues/593)
+*/
+template<typename BasicJsonType>
+class iter_impl
+{
+ /// allow basic_json to access private members
+ friend iter_impl<typename std::conditional<std::is_const<BasicJsonType>::value, typename std::remove_const<BasicJsonType>::type, const BasicJsonType>::type>;
+ friend BasicJsonType;
+ friend iteration_proxy<iter_impl>;
+ friend iteration_proxy_value<iter_impl>;
+
+ using object_t = typename BasicJsonType::object_t;
+ using array_t = typename BasicJsonType::array_t;
+ // make sure BasicJsonType is basic_json or const basic_json
+ static_assert(is_basic_json<typename std::remove_const<BasicJsonType>::type>::value,
+ "iter_impl only accepts (const) basic_json");
+
+ public:
+
+ /// The std::iterator class template (used as a base class to provide typedefs) is deprecated in C++17.
+ /// The C++ Standard has never required user-defined iterators to derive from std::iterator.
+ /// A user-defined iterator should provide publicly accessible typedefs named
+ /// iterator_category, value_type, difference_type, pointer, and reference.
+ /// Note that value_type is required to be non-const, even for constant iterators.
+ using iterator_category = std::bidirectional_iterator_tag;
+
+ /// the type of the values when the iterator is dereferenced
+ using value_type = typename BasicJsonType::value_type;
+ /// a type to represent differences between iterators
+ using difference_type = typename BasicJsonType::difference_type;
+ /// defines a pointer to the type iterated over (value_type)
+ using pointer = typename std::conditional<std::is_const<BasicJsonType>::value,
+ typename BasicJsonType::const_pointer,
+ typename BasicJsonType::pointer>::type;
+ /// defines a reference to the type iterated over (value_type)
+ using reference =
+ typename std::conditional<std::is_const<BasicJsonType>::value,
+ typename BasicJsonType::const_reference,
+ typename BasicJsonType::reference>::type;
+
+ /// default constructor
+ iter_impl() = default;
+
+ /*!
+ @brief constructor for a given JSON instance
+ @param[in] object pointer to a JSON object for this iterator
+ @pre object != nullptr
+ @post The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ explicit iter_impl(pointer object) noexcept : m_object(object)
+ {
+ assert(m_object != nullptr);
+
+ switch (m_object->m_type)
+ {
+ case value_t::object:
+ {
+ m_it.object_iterator = typename object_t::iterator();
+ break;
+ }
+
+ case value_t::array:
+ {
+ m_it.array_iterator = typename array_t::iterator();
+ break;
+ }
+
+ default:
+ {
+ m_it.primitive_iterator = primitive_iterator_t();
+ break;
+ }
+ }
+ }
+
+ /*!
+ @note The conventional copy constructor and copy assignment are implicitly
+ defined. Combined with the following converting constructor and
+ assignment, they support: (1) copy from iterator to iterator, (2)
+ copy from const iterator to const iterator, and (3) conversion from
+ iterator to const iterator. However conversion from const iterator
+ to iterator is not defined.
+ */
+
+ /*!
+ @brief converting constructor
+ @param[in] other non-const iterator to copy from
+ @note It is not checked whether @a other is initialized.
+ */
+ iter_impl(const iter_impl<typename std::remove_const<BasicJsonType>::type>& other) noexcept
+ : m_object(other.m_object), m_it(other.m_it) {}
+
+ /*!
+ @brief converting assignment
+ @param[in,out] other non-const iterator to copy from
+ @return const/non-const iterator
+ @note It is not checked whether @a other is initialized.
+ */
+ iter_impl& operator=(const iter_impl<typename std::remove_const<BasicJsonType>::type>& other) noexcept
+ {
+ m_object = other.m_object;
+ m_it = other.m_it;
+ return *this;
+ }
+
+ private:
+ /*!
+ @brief set the iterator to the first value
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ void set_begin() noexcept
+ {
+ assert(m_object != nullptr);
+
+ switch (m_object->m_type)
+ {
+ case value_t::object:
+ {
+ m_it.object_iterator = m_object->m_value.object->begin();
+ break;
+ }
+
+ case value_t::array:
+ {
+ m_it.array_iterator = m_object->m_value.array->begin();
+ break;
+ }
+
+ case value_t::null:
+ {
+ // set to end so begin()==end() is true: null is empty
+ m_it.primitive_iterator.set_end();
+ break;
+ }
+
+ default:
+ {
+ m_it.primitive_iterator.set_begin();
+ break;
+ }
+ }
+ }
+
+ /*!
+ @brief set the iterator past the last value
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ void set_end() noexcept
+ {
+ assert(m_object != nullptr);
+
+ switch (m_object->m_type)
+ {
+ case value_t::object:
+ {
+ m_it.object_iterator = m_object->m_value.object->end();
+ break;
+ }
+
+ case value_t::array:
+ {
+ m_it.array_iterator = m_object->m_value.array->end();
+ break;
+ }
+
+ default:
+ {
+ m_it.primitive_iterator.set_end();
+ break;
+ }
+ }
+ }
+
+ public:
+ /*!
+ @brief return a reference to the value pointed to by the iterator
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ reference operator*() const
+ {
+ assert(m_object != nullptr);
+
+ switch (m_object->m_type)
+ {
+ case value_t::object:
+ {
+ assert(m_it.object_iterator != m_object->m_value.object->end());
+ return m_it.object_iterator->second;
+ }
+
+ case value_t::array:
+ {
+ assert(m_it.array_iterator != m_object->m_value.array->end());
+ return *m_it.array_iterator;
+ }
+
+ case value_t::null:
+ JSON_THROW(invalid_iterator::create(214, "cannot get value"));
+
+ default:
+ {
+ if (JSON_LIKELY(m_it.primitive_iterator.is_begin()))
+ {
+ return *m_object;
+ }
+
+ JSON_THROW(invalid_iterator::create(214, "cannot get value"));
+ }
+ }
+ }
+
+ /*!
+ @brief dereference the iterator
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ pointer operator->() const
+ {
+ assert(m_object != nullptr);
+
+ switch (m_object->m_type)
+ {
+ case value_t::object:
+ {
+ assert(m_it.object_iterator != m_object->m_value.object->end());
+ return &(m_it.object_iterator->second);
+ }
+
+ case value_t::array:
+ {
+ assert(m_it.array_iterator != m_object->m_value.array->end());
+ return &*m_it.array_iterator;
+ }
+
+ default:
+ {
+ if (JSON_LIKELY(m_it.primitive_iterator.is_begin()))
+ {
+ return m_object;
+ }
+
+ JSON_THROW(invalid_iterator::create(214, "cannot get value"));
+ }
+ }
+ }
+
+ /*!
+ @brief post-increment (it++)
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ iter_impl const operator++(int)
+ {
+ auto result = *this;
+ ++(*this);
+ return result;
+ }
+
+ /*!
+ @brief pre-increment (++it)
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ iter_impl& operator++()
+ {
+ assert(m_object != nullptr);
+
+ switch (m_object->m_type)
+ {
+ case value_t::object:
+ {
+ std::advance(m_it.object_iterator, 1);
+ break;
+ }
+
+ case value_t::array:
+ {
+ std::advance(m_it.array_iterator, 1);
+ break;
+ }
+
+ default:
+ {
+ ++m_it.primitive_iterator;
+ break;
+ }
+ }
+
+ return *this;
+ }
+
+ /*!
+ @brief post-decrement (it--)
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ iter_impl const operator--(int)
+ {
+ auto result = *this;
+ --(*this);
+ return result;
+ }
+
+ /*!
+ @brief pre-decrement (--it)
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ iter_impl& operator--()
+ {
+ assert(m_object != nullptr);
+
+ switch (m_object->m_type)
+ {
+ case value_t::object:
+ {
+ std::advance(m_it.object_iterator, -1);
+ break;
+ }
+
+ case value_t::array:
+ {
+ std::advance(m_it.array_iterator, -1);
+ break;
+ }
+
+ default:
+ {
+ --m_it.primitive_iterator;
+ break;
+ }
+ }
+
+ return *this;
+ }
+
+ /*!
+ @brief comparison: equal
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ bool operator==(const iter_impl& other) const
+ {
+ // if objects are not the same, the comparison is undefined
+ if (JSON_UNLIKELY(m_object != other.m_object))
+ {
+ JSON_THROW(invalid_iterator::create(212, "cannot compare iterators of different containers"));
+ }
+
+ assert(m_object != nullptr);
+
+ switch (m_object->m_type)
+ {
+ case value_t::object:
+ return (m_it.object_iterator == other.m_it.object_iterator);
+
+ case value_t::array:
+ return (m_it.array_iterator == other.m_it.array_iterator);
+
+ default:
+ return (m_it.primitive_iterator == other.m_it.primitive_iterator);
+ }
+ }
+
+ /*!
+ @brief comparison: not equal
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ bool operator!=(const iter_impl& other) const
+ {
+ return not operator==(other);
+ }
+
+ /*!
+ @brief comparison: smaller
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ bool operator<(const iter_impl& other) const
+ {
+ // if objects are not the same, the comparison is undefined
+ if (JSON_UNLIKELY(m_object != other.m_object))
+ {
+ JSON_THROW(invalid_iterator::create(212, "cannot compare iterators of different containers"));
+ }
+
+ assert(m_object != nullptr);
+
+ switch (m_object->m_type)
+ {
+ case value_t::object:
+ JSON_THROW(invalid_iterator::create(213, "cannot compare order of object iterators"));
+
+ case value_t::array:
+ return (m_it.array_iterator < other.m_it.array_iterator);
+
+ default:
+ return (m_it.primitive_iterator < other.m_it.primitive_iterator);
+ }
+ }
+
+ /*!
+ @brief comparison: less than or equal
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ bool operator<=(const iter_impl& other) const
+ {
+ return not other.operator < (*this);
+ }
+
+ /*!
+ @brief comparison: greater than
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ bool operator>(const iter_impl& other) const
+ {
+ return not operator<=(other);
+ }
+
+ /*!
+ @brief comparison: greater than or equal
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ bool operator>=(const iter_impl& other) const
+ {
+ return not operator<(other);
+ }
+
+ /*!
+ @brief add to iterator
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ iter_impl& operator+=(difference_type i)
+ {
+ assert(m_object != nullptr);
+
+ switch (m_object->m_type)
+ {
+ case value_t::object:
+ JSON_THROW(invalid_iterator::create(209, "cannot use offsets with object iterators"));
+
+ case value_t::array:
+ {
+ std::advance(m_it.array_iterator, i);
+ break;
+ }
+
+ default:
+ {
+ m_it.primitive_iterator += i;
+ break;
+ }
+ }
+
+ return *this;
+ }
+
+ /*!
+ @brief subtract from iterator
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ iter_impl& operator-=(difference_type i)
+ {
+ return operator+=(-i);
+ }
+
+ /*!
+ @brief add to iterator
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ iter_impl operator+(difference_type i) const
+ {
+ auto result = *this;
+ result += i;
+ return result;
+ }
+
+ /*!
+ @brief addition of distance and iterator
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ friend iter_impl operator+(difference_type i, const iter_impl& it)
+ {
+ auto result = it;
+ result += i;
+ return result;
+ }
+
+ /*!
+ @brief subtract from iterator
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ iter_impl operator-(difference_type i) const
+ {
+ auto result = *this;
+ result -= i;
+ return result;
+ }
+
+ /*!
+ @brief return difference
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ difference_type operator-(const iter_impl& other) const
+ {
+ assert(m_object != nullptr);
+
+ switch (m_object->m_type)
+ {
+ case value_t::object:
+ JSON_THROW(invalid_iterator::create(209, "cannot use offsets with object iterators"));
+
+ case value_t::array:
+ return m_it.array_iterator - other.m_it.array_iterator;
+
+ default:
+ return m_it.primitive_iterator - other.m_it.primitive_iterator;
+ }
+ }
+
+ /*!
+ @brief access to successor
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ reference operator[](difference_type n) const
+ {
+ assert(m_object != nullptr);
+
+ switch (m_object->m_type)
+ {
+ case value_t::object:
+ JSON_THROW(invalid_iterator::create(208, "cannot use operator[] for object iterators"));
+
+ case value_t::array:
+ return *std::next(m_it.array_iterator, n);
+
+ case value_t::null:
+ JSON_THROW(invalid_iterator::create(214, "cannot get value"));
+
+ default:
+ {
+ if (JSON_LIKELY(m_it.primitive_iterator.get_value() == -n))
+ {
+ return *m_object;
+ }
+
+ JSON_THROW(invalid_iterator::create(214, "cannot get value"));
+ }
+ }
+ }
+
+ /*!
+ @brief return the key of an object iterator
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ const typename object_t::key_type& key() const
+ {
+ assert(m_object != nullptr);
+
+ if (JSON_LIKELY(m_object->is_object()))
+ {
+ return m_it.object_iterator->first;
+ }
+
+ JSON_THROW(invalid_iterator::create(207, "cannot use key() for non-object iterators"));
+ }
+
+ /*!
+ @brief return the value of an iterator
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ reference value() const
+ {
+ return operator*();
+ }
+
+ private:
+ /// associated JSON instance
+ pointer m_object = nullptr;
+ /// the actual iterator of the associated instance
+ internal_iterator<typename std::remove_const<BasicJsonType>::type> m_it {};
+};
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/detail/iterators/iteration_proxy.hpp>
+
+// #include <nlohmann/detail/iterators/json_reverse_iterator.hpp>
+
+
+#include <cstddef> // ptrdiff_t
+#include <iterator> // reverse_iterator
+#include <utility> // declval
+
+namespace nlohmann
+{
+namespace detail
+{
+//////////////////////
+// reverse_iterator //
+//////////////////////
+
+/*!
+@brief a template for a reverse iterator class
+
+@tparam Base the base iterator type to reverse. Valid types are @ref
+iterator (to create @ref reverse_iterator) and @ref const_iterator (to
+create @ref const_reverse_iterator).
+
+@requirement The class satisfies the following concept requirements:
+-
+[BidirectionalIterator](https://en.cppreference.com/w/cpp/named_req/BidirectionalIterator):
+ The iterator that can be moved can be moved in both directions (i.e.
+ incremented and decremented).
+- [OutputIterator](https://en.cppreference.com/w/cpp/named_req/OutputIterator):
+ It is possible to write to the pointed-to element (only if @a Base is
+ @ref iterator).
+
+@since version 1.0.0
+*/
+template<typename Base>
+class json_reverse_iterator : public std::reverse_iterator<Base>
+{
+ public:
+ using difference_type = std::ptrdiff_t;
+ /// shortcut to the reverse iterator adapter
+ using base_iterator = std::reverse_iterator<Base>;
+ /// the reference type for the pointed-to element
+ using reference = typename Base::reference;
+
+ /// create reverse iterator from iterator
+ explicit json_reverse_iterator(const typename base_iterator::iterator_type& it) noexcept
+ : base_iterator(it) {}
+
+ /// create reverse iterator from base class
+ explicit json_reverse_iterator(const base_iterator& it) noexcept : base_iterator(it) {}
+
+ /// post-increment (it++)
+ json_reverse_iterator const operator++(int)
+ {
+ return static_cast<json_reverse_iterator>(base_iterator::operator++(1));
+ }
+
+ /// pre-increment (++it)
+ json_reverse_iterator& operator++()
+ {
+ return static_cast<json_reverse_iterator&>(base_iterator::operator++());
+ }
+
+ /// post-decrement (it--)
+ json_reverse_iterator const operator--(int)
+ {
+ return static_cast<json_reverse_iterator>(base_iterator::operator--(1));
+ }
+
+ /// pre-decrement (--it)
+ json_reverse_iterator& operator--()
+ {
+ return static_cast<json_reverse_iterator&>(base_iterator::operator--());
+ }
+
+ /// add to iterator
+ json_reverse_iterator& operator+=(difference_type i)
+ {
+ return static_cast<json_reverse_iterator&>(base_iterator::operator+=(i));
+ }
+
+ /// add to iterator
+ json_reverse_iterator operator+(difference_type i) const
+ {
+ return static_cast<json_reverse_iterator>(base_iterator::operator+(i));
+ }
+
+ /// subtract from iterator
+ json_reverse_iterator operator-(difference_type i) const
+ {
+ return static_cast<json_reverse_iterator>(base_iterator::operator-(i));
+ }
+
+ /// return difference
+ difference_type operator-(const json_reverse_iterator& other) const
+ {
+ return base_iterator(*this) - base_iterator(other);
+ }
+
+ /// access to successor
+ reference operator[](difference_type n) const
+ {
+ return *(this->operator+(n));
+ }
+
+ /// return the key of an object iterator
+ auto key() const -> decltype(std::declval<Base>().key())
+ {
+ auto it = --this->base();
+ return it.key();
+ }
+
+ /// return the value of an iterator
+ reference value() const
+ {
+ auto it = --this->base();
+ return it.operator * ();
+ }
+};
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/detail/iterators/primitive_iterator.hpp>
+
+// #include <nlohmann/detail/json_pointer.hpp>
+
+
+#include <algorithm> // all_of
+#include <cassert> // assert
+#include <numeric> // accumulate
+#include <string> // string
+#include <utility> // move
+#include <vector> // vector
+
+// #include <nlohmann/detail/exceptions.hpp>
+
+// #include <nlohmann/detail/macro_scope.hpp>
+
+// #include <nlohmann/detail/value_t.hpp>
+
+
+namespace nlohmann
+{
+template<typename BasicJsonType>
+class json_pointer
+{
+ // allow basic_json to access private members
+ NLOHMANN_BASIC_JSON_TPL_DECLARATION
+ friend class basic_json;
+
+ public:
+ /*!
+ @brief create JSON pointer
+
+ Create a JSON pointer according to the syntax described in
+ [Section 3 of RFC6901](https://tools.ietf.org/html/rfc6901#section-3).
+
+ @param[in] s string representing the JSON pointer; if omitted, the empty
+ string is assumed which references the whole JSON value
+
+ @throw parse_error.107 if the given JSON pointer @a s is nonempty and does
+ not begin with a slash (`/`); see example below
+
+ @throw parse_error.108 if a tilde (`~`) in the given JSON pointer @a s is
+ not followed by `0` (representing `~`) or `1` (representing `/`); see
+ example below
+
+ @liveexample{The example shows the construction several valid JSON pointers
+ as well as the exceptional behavior.,json_pointer}
+
+ @since version 2.0.0
+ */
+ explicit json_pointer(const std::string& s = "")
+ : reference_tokens(split(s))
+ {}
+
+ /*!
+ @brief return a string representation of the JSON pointer
+
+ @invariant For each JSON pointer `ptr`, it holds:
+ @code {.cpp}
+ ptr == json_pointer(ptr.to_string());
+ @endcode
+
+ @return a string representation of the JSON pointer
+
+ @liveexample{The example shows the result of `to_string`.,json_pointer__to_string}
+
+ @since version 2.0.0
+ */
+ std::string to_string() const
+ {
+ return std::accumulate(reference_tokens.begin(), reference_tokens.end(),
+ std::string{},
+ [](const std::string & a, const std::string & b)
+ {
+ return a + "/" + escape(b);
+ });
+ }
+
+ /// @copydoc to_string()
+ operator std::string() const
+ {
+ return to_string();
+ }
+
+ /*!
+ @brief append another JSON pointer at the end of this JSON pointer
+
+ @param[in] ptr JSON pointer to append
+ @return JSON pointer with @a ptr appended
+
+ @liveexample{The example shows the usage of `operator/=`.,json_pointer__operator_add}
+
+ @complexity Linear in the length of @a ptr.
+
+ @sa @ref operator/=(std::string) to append a reference token
+ @sa @ref operator/=(std::size_t) to append an array index
+ @sa @ref operator/(const json_pointer&, const json_pointer&) for a binary operator
+
+ @since version 3.6.0
+ */
+ json_pointer& operator/=(const json_pointer& ptr)
+ {
+ reference_tokens.insert(reference_tokens.end(),
+ ptr.reference_tokens.begin(),
+ ptr.reference_tokens.end());
+ return *this;
+ }
+
+ /*!
+ @brief append an unescaped reference token at the end of this JSON pointer
+
+ @param[in] token reference token to append
+ @return JSON pointer with @a token appended without escaping @a token
+
+ @liveexample{The example shows the usage of `operator/=`.,json_pointer__operator_add}
+
+ @complexity Amortized constant.
+
+ @sa @ref operator/=(const json_pointer&) to append a JSON pointer
+ @sa @ref operator/=(std::size_t) to append an array index
+ @sa @ref operator/(const json_pointer&, std::size_t) for a binary operator
+
+ @since version 3.6.0
+ */
+ json_pointer& operator/=(std::string token)
+ {
+ push_back(std::move(token));
+ return *this;
+ }
+
+ /*!
+ @brief append an array index at the end of this JSON pointer
+
+ @param[in] array_index array index ot append
+ @return JSON pointer with @a array_index appended
+
+ @liveexample{The example shows the usage of `operator/=`.,json_pointer__operator_add}
+
+ @complexity Amortized constant.
+
+ @sa @ref operator/=(const json_pointer&) to append a JSON pointer
+ @sa @ref operator/=(std::string) to append a reference token
+ @sa @ref operator/(const json_pointer&, std::string) for a binary operator
+
+ @since version 3.6.0
+ */
+ json_pointer& operator/=(std::size_t array_index)
+ {
+ return *this /= std::to_string(array_index);
+ }
+
+ /*!
+ @brief create a new JSON pointer by appending the right JSON pointer at the end of the left JSON pointer
+
+ @param[in] lhs JSON pointer
+ @param[in] rhs JSON pointer
+ @return a new JSON pointer with @a rhs appended to @a lhs
+
+ @liveexample{The example shows the usage of `operator/`.,json_pointer__operator_add_binary}
+
+ @complexity Linear in the length of @a lhs and @a rhs.
+
+ @sa @ref operator/=(const json_pointer&) to append a JSON pointer
+
+ @since version 3.6.0
+ */
+ friend json_pointer operator/(const json_pointer& lhs,
+ const json_pointer& rhs)
+ {
+ return json_pointer(lhs) /= rhs;
+ }
+
+ /*!
+ @brief create a new JSON pointer by appending the unescaped token at the end of the JSON pointer
+
+ @param[in] ptr JSON pointer
+ @param[in] token reference token
+ @return a new JSON pointer with unescaped @a token appended to @a ptr
+
+ @liveexample{The example shows the usage of `operator/`.,json_pointer__operator_add_binary}
+
+ @complexity Linear in the length of @a ptr.
+
+ @sa @ref operator/=(std::string) to append a reference token
+
+ @since version 3.6.0
+ */
+ friend json_pointer operator/(const json_pointer& ptr, std::string token)
+ {
+ return json_pointer(ptr) /= std::move(token);
+ }
+
+ /*!
+ @brief create a new JSON pointer by appending the array-index-token at the end of the JSON pointer
+
+ @param[in] ptr JSON pointer
+ @param[in] array_index array index
+ @return a new JSON pointer with @a array_index appended to @a ptr
+
+ @liveexample{The example shows the usage of `operator/`.,json_pointer__operator_add_binary}
+
+ @complexity Linear in the length of @a ptr.
+
+ @sa @ref operator/=(std::size_t) to append an array index
+
+ @since version 3.6.0
+ */
+ friend json_pointer operator/(const json_pointer& ptr, std::size_t array_index)
+ {
+ return json_pointer(ptr) /= array_index;
+ }
+
+ /*!
+ @brief returns the parent of this JSON pointer
+
+ @return parent of this JSON pointer; in case this JSON pointer is the root,
+ the root itself is returned
+
+ @complexity Linear in the length of the JSON pointer.
+
+ @liveexample{The example shows the result of `parent_pointer` for different
+ JSON Pointers.,json_pointer__parent_pointer}
+
+ @since version 3.6.0
+ */
+ json_pointer parent_pointer() const
+ {
+ if (empty())
+ {
+ return *this;
+ }
+
+ json_pointer res = *this;
+ res.pop_back();
+ return res;
+ }
+
+ /*!
+ @brief remove last reference token
+
+ @pre not `empty()`
+
+ @liveexample{The example shows the usage of `pop_back`.,json_pointer__pop_back}
+
+ @complexity Constant.
+
+ @throw out_of_range.405 if JSON pointer has no parent
+
+ @since version 3.6.0
+ */
+ void pop_back()
+ {
+ if (JSON_UNLIKELY(empty()))
+ {
+ JSON_THROW(detail::out_of_range::create(405, "JSON pointer has no parent"));
+ }
+
+ reference_tokens.pop_back();
+ }
+
+ /*!
+ @brief return last reference token
+
+ @pre not `empty()`
+ @return last reference token
+
+ @liveexample{The example shows the usage of `back`.,json_pointer__back}
+
+ @complexity Constant.
+
+ @throw out_of_range.405 if JSON pointer has no parent
+
+ @since version 3.6.0
+ */
+ const std::string& back()
+ {
+ if (JSON_UNLIKELY(empty()))
+ {
+ JSON_THROW(detail::out_of_range::create(405, "JSON pointer has no parent"));
+ }
+
+ return reference_tokens.back();
+ }
+
+ /*!
+ @brief append an unescaped token at the end of the reference pointer
+
+ @param[in] token token to add
+
+ @complexity Amortized constant.
+
+ @liveexample{The example shows the result of `push_back` for different
+ JSON Pointers.,json_pointer__push_back}
+
+ @since version 3.6.0
+ */
+ void push_back(const std::string& token)
+ {
+ reference_tokens.push_back(token);
+ }
+
+ /// @copydoc push_back(const std::string&)
+ void push_back(std::string&& token)
+ {
+ reference_tokens.push_back(std::move(token));
+ }
+
+ /*!
+ @brief return whether pointer points to the root document
+
+ @return true iff the JSON pointer points to the root document
+
+ @complexity Constant.
+
+ @exceptionsafety No-throw guarantee: this function never throws exceptions.
+
+ @liveexample{The example shows the result of `empty` for different JSON
+ Pointers.,json_pointer__empty}
+
+ @since version 3.6.0
+ */
+ bool empty() const noexcept
+ {
+ return reference_tokens.empty();
+ }
+
+ private:
+ /*!
+ @param[in] s reference token to be converted into an array index
+
+ @return integer representation of @a s
+
+ @throw out_of_range.404 if string @a s could not be converted to an integer
+ */
+ static int array_index(const std::string& s)
+ {
+ std::size_t processed_chars = 0;
+ const int res = std::stoi(s, &processed_chars);
+
+ // check if the string was completely read
+ if (JSON_UNLIKELY(processed_chars != s.size()))
+ {
+ JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + s + "'"));
+ }
+
+ return res;
+ }
+
+ json_pointer top() const
+ {
+ if (JSON_UNLIKELY(empty()))
+ {
+ JSON_THROW(detail::out_of_range::create(405, "JSON pointer has no parent"));
+ }
+
+ json_pointer result = *this;
+ result.reference_tokens = {reference_tokens[0]};
+ return result;
+ }
+
+ /*!
+ @brief create and return a reference to the pointed to value
+
+ @complexity Linear in the number of reference tokens.
+
+ @throw parse_error.109 if array index is not a number
+ @throw type_error.313 if value cannot be unflattened
+ */
+ BasicJsonType& get_and_create(BasicJsonType& j) const
+ {
+ using size_type = typename BasicJsonType::size_type;
+ auto result = &j;
+
+ // in case no reference tokens exist, return a reference to the JSON value
+ // j which will be overwritten by a primitive value
+ for (const auto& reference_token : reference_tokens)
+ {
+ switch (result->m_type)
+ {
+ case detail::value_t::null:
+ {
+ if (reference_token == "0")
+ {
+ // start a new array if reference token is 0
+ result = &result->operator[](0);
+ }
+ else
+ {
+ // start a new object otherwise
+ result = &result->operator[](reference_token);
+ }
+ break;
+ }
+
+ case detail::value_t::object:
+ {
+ // create an entry in the object
+ result = &result->operator[](reference_token);
+ break;
+ }
+
+ case detail::value_t::array:
+ {
+ // create an entry in the array
+ JSON_TRY
+ {
+ result = &result->operator[](static_cast<size_type>(array_index(reference_token)));
+ }
+ JSON_CATCH(std::invalid_argument&)
+ {
+ JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number"));
+ }
+ break;
+ }
+
+ /*
+ The following code is only reached if there exists a reference
+ token _and_ the current value is primitive. In this case, we have
+ an error situation, because primitive values may only occur as
+ single value; that is, with an empty list of reference tokens.
+ */
+ default:
+ JSON_THROW(detail::type_error::create(313, "invalid value to unflatten"));
+ }
+ }
+
+ return *result;
+ }
+
+ /*!
+ @brief return a reference to the pointed to value
+
+ @note This version does not throw if a value is not present, but tries to
+ create nested values instead. For instance, calling this function
+ with pointer `"/this/that"` on a null value is equivalent to calling
+ `operator[]("this").operator[]("that")` on that value, effectively
+ changing the null value to an object.
+
+ @param[in] ptr a JSON value
+
+ @return reference to the JSON value pointed to by the JSON pointer
+
+ @complexity Linear in the length of the JSON pointer.
+
+ @throw parse_error.106 if an array index begins with '0'
+ @throw parse_error.109 if an array index was not a number
+ @throw out_of_range.404 if the JSON pointer can not be resolved
+ */
+ BasicJsonType& get_unchecked(BasicJsonType* ptr) const
+ {
+ using size_type = typename BasicJsonType::size_type;
+ for (const auto& reference_token : reference_tokens)
+ {
+ // convert null values to arrays or objects before continuing
+ if (ptr->m_type == detail::value_t::null)
+ {
+ // check if reference token is a number
+ const bool nums =
+ std::all_of(reference_token.begin(), reference_token.end(),
+ [](const char x)
+ {
+ return x >= '0' and x <= '9';
+ });
+
+ // change value to array for numbers or "-" or to object otherwise
+ *ptr = (nums or reference_token == "-")
+ ? detail::value_t::array
+ : detail::value_t::object;
+ }
+
+ switch (ptr->m_type)
+ {
+ case detail::value_t::object:
+ {
+ // use unchecked object access
+ ptr = &ptr->operator[](reference_token);
+ break;
+ }
+
+ case detail::value_t::array:
+ {
+ // error condition (cf. RFC 6901, Sect. 4)
+ if (JSON_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0'))
+ {
+ JSON_THROW(detail::parse_error::create(106, 0,
+ "array index '" + reference_token +
+ "' must not begin with '0'"));
+ }
+
+ if (reference_token == "-")
+ {
+ // explicitly treat "-" as index beyond the end
+ ptr = &ptr->operator[](ptr->m_value.array->size());
+ }
+ else
+ {
+ // convert array index to number; unchecked access
+ JSON_TRY
+ {
+ ptr = &ptr->operator[](
+ static_cast<size_type>(array_index(reference_token)));
+ }
+ JSON_CATCH(std::invalid_argument&)
+ {
+ JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number"));
+ }
+ }
+ break;
+ }
+
+ default:
+ JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'"));
+ }
+ }
+
+ return *ptr;
+ }
+
+ /*!
+ @throw parse_error.106 if an array index begins with '0'
+ @throw parse_error.109 if an array index was not a number
+ @throw out_of_range.402 if the array index '-' is used
+ @throw out_of_range.404 if the JSON pointer can not be resolved
+ */
+ BasicJsonType& get_checked(BasicJsonType* ptr) const
+ {
+ using size_type = typename BasicJsonType::size_type;
+ for (const auto& reference_token : reference_tokens)
+ {
+ switch (ptr->m_type)
+ {
+ case detail::value_t::object:
+ {
+ // note: at performs range check
+ ptr = &ptr->at(reference_token);
+ break;
+ }
+
+ case detail::value_t::array:
+ {
+ if (JSON_UNLIKELY(reference_token == "-"))
+ {
+ // "-" always fails the range check
+ JSON_THROW(detail::out_of_range::create(402,
+ "array index '-' (" + std::to_string(ptr->m_value.array->size()) +
+ ") is out of range"));
+ }
+
+ // error condition (cf. RFC 6901, Sect. 4)
+ if (JSON_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0'))
+ {
+ JSON_THROW(detail::parse_error::create(106, 0,
+ "array index '" + reference_token +
+ "' must not begin with '0'"));
+ }
+
+ // note: at performs range check
+ JSON_TRY
+ {
+ ptr = &ptr->at(static_cast<size_type>(array_index(reference_token)));
+ }
+ JSON_CATCH(std::invalid_argument&)
+ {
+ JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number"));
+ }
+ break;
+ }
+
+ default:
+ JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'"));
+ }
+ }
+
+ return *ptr;
+ }
+
+ /*!
+ @brief return a const reference to the pointed to value
+
+ @param[in] ptr a JSON value
+
+ @return const reference to the JSON value pointed to by the JSON
+ pointer
+
+ @throw parse_error.106 if an array index begins with '0'
+ @throw parse_error.109 if an array index was not a number
+ @throw out_of_range.402 if the array index '-' is used
+ @throw out_of_range.404 if the JSON pointer can not be resolved
+ */
+ const BasicJsonType& get_unchecked(const BasicJsonType* ptr) const
+ {
+ using size_type = typename BasicJsonType::size_type;
+ for (const auto& reference_token : reference_tokens)
+ {
+ switch (ptr->m_type)
+ {
+ case detail::value_t::object:
+ {
+ // use unchecked object access
+ ptr = &ptr->operator[](reference_token);
+ break;
+ }
+
+ case detail::value_t::array:
+ {
+ if (JSON_UNLIKELY(reference_token == "-"))
+ {
+ // "-" cannot be used for const access
+ JSON_THROW(detail::out_of_range::create(402,
+ "array index '-' (" + std::to_string(ptr->m_value.array->size()) +
+ ") is out of range"));
+ }
+
+ // error condition (cf. RFC 6901, Sect. 4)
+ if (JSON_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0'))
+ {
+ JSON_THROW(detail::parse_error::create(106, 0,
+ "array index '" + reference_token +
+ "' must not begin with '0'"));
+ }
+
+ // use unchecked array access
+ JSON_TRY
+ {
+ ptr = &ptr->operator[](
+ static_cast<size_type>(array_index(reference_token)));
+ }
+ JSON_CATCH(std::invalid_argument&)
+ {
+ JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number"));
+ }
+ break;
+ }
+
+ default:
+ JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'"));
+ }
+ }
+
+ return *ptr;
+ }
+
+ /*!
+ @throw parse_error.106 if an array index begins with '0'
+ @throw parse_error.109 if an array index was not a number
+ @throw out_of_range.402 if the array index '-' is used
+ @throw out_of_range.404 if the JSON pointer can not be resolved
+ */
+ const BasicJsonType& get_checked(const BasicJsonType* ptr) const
+ {
+ using size_type = typename BasicJsonType::size_type;
+ for (const auto& reference_token : reference_tokens)
+ {
+ switch (ptr->m_type)
+ {
+ case detail::value_t::object:
+ {
+ // note: at performs range check
+ ptr = &ptr->at(reference_token);
+ break;
+ }
+
+ case detail::value_t::array:
+ {
+ if (JSON_UNLIKELY(reference_token == "-"))
+ {
+ // "-" always fails the range check
+ JSON_THROW(detail::out_of_range::create(402,
+ "array index '-' (" + std::to_string(ptr->m_value.array->size()) +
+ ") is out of range"));
+ }
+
+ // error condition (cf. RFC 6901, Sect. 4)
+ if (JSON_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0'))
+ {
+ JSON_THROW(detail::parse_error::create(106, 0,
+ "array index '" + reference_token +
+ "' must not begin with '0'"));
+ }
+
+ // note: at performs range check
+ JSON_TRY
+ {
+ ptr = &ptr->at(static_cast<size_type>(array_index(reference_token)));
+ }
+ JSON_CATCH(std::invalid_argument&)
+ {
+ JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number"));
+ }
+ break;
+ }
+
+ default:
+ JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'"));
+ }
+ }
+
+ return *ptr;
+ }
+
+ /*!
+ @brief split the string input to reference tokens
+
+ @note This function is only called by the json_pointer constructor.
+ All exceptions below are documented there.
+
+ @throw parse_error.107 if the pointer is not empty or begins with '/'
+ @throw parse_error.108 if character '~' is not followed by '0' or '1'
+ */
+ static std::vector<std::string> split(const std::string& reference_string)
+ {
+ std::vector<std::string> result;
+
+ // special case: empty reference string -> no reference tokens
+ if (reference_string.empty())
+ {
+ return result;
+ }
+
+ // check if nonempty reference string begins with slash
+ if (JSON_UNLIKELY(reference_string[0] != '/'))
+ {
+ JSON_THROW(detail::parse_error::create(107, 1,
+ "JSON pointer must be empty or begin with '/' - was: '" +
+ reference_string + "'"));
+ }
+
+ // extract the reference tokens:
+ // - slash: position of the last read slash (or end of string)
+ // - start: position after the previous slash
+ for (
+ // search for the first slash after the first character
+ std::size_t slash = reference_string.find_first_of('/', 1),
+ // set the beginning of the first reference token
+ start = 1;
+ // we can stop if start == 0 (if slash == std::string::npos)
+ start != 0;
+ // set the beginning of the next reference token
+ // (will eventually be 0 if slash == std::string::npos)
+ start = (slash == std::string::npos) ? 0 : slash + 1,
+ // find next slash
+ slash = reference_string.find_first_of('/', start))
+ {
+ // use the text between the beginning of the reference token
+ // (start) and the last slash (slash).
+ auto reference_token = reference_string.substr(start, slash - start);
+
+ // check reference tokens are properly escaped
+ for (std::size_t pos = reference_token.find_first_of('~');
+ pos != std::string::npos;
+ pos = reference_token.find_first_of('~', pos + 1))
+ {
+ assert(reference_token[pos] == '~');
+
+ // ~ must be followed by 0 or 1
+ if (JSON_UNLIKELY(pos == reference_token.size() - 1 or
+ (reference_token[pos + 1] != '0' and
+ reference_token[pos + 1] != '1')))
+ {
+ JSON_THROW(detail::parse_error::create(108, 0, "escape character '~' must be followed with '0' or '1'"));
+ }
+ }
+
+ // finally, store the reference token
+ unescape(reference_token);
+ result.push_back(reference_token);
+ }
+
+ return result;
+ }
+
+ /*!
+ @brief replace all occurrences of a substring by another string
+
+ @param[in,out] s the string to manipulate; changed so that all
+ occurrences of @a f are replaced with @a t
+ @param[in] f the substring to replace with @a t
+ @param[in] t the string to replace @a f
+
+ @pre The search string @a f must not be empty. **This precondition is
+ enforced with an assertion.**
+
+ @since version 2.0.0
+ */
+ static void replace_substring(std::string& s, const std::string& f,
+ const std::string& t)
+ {
+ assert(not f.empty());
+ for (auto pos = s.find(f); // find first occurrence of f
+ pos != std::string::npos; // make sure f was found
+ s.replace(pos, f.size(), t), // replace with t, and
+ pos = s.find(f, pos + t.size())) // find next occurrence of f
+ {}
+ }
+
+ /// escape "~" to "~0" and "/" to "~1"
+ static std::string escape(std::string s)
+ {
+ replace_substring(s, "~", "~0");
+ replace_substring(s, "/", "~1");
+ return s;
+ }
+
+ /// unescape "~1" to tilde and "~0" to slash (order is important!)
+ static void unescape(std::string& s)
+ {
+ replace_substring(s, "~1", "/");
+ replace_substring(s, "~0", "~");
+ }
+
+ /*!
+ @param[in] reference_string the reference string to the current value
+ @param[in] value the value to consider
+ @param[in,out] result the result object to insert values to
+
+ @note Empty objects or arrays are flattened to `null`.
+ */
+ static void flatten(const std::string& reference_string,
+ const BasicJsonType& value,
+ BasicJsonType& result)
+ {
+ switch (value.m_type)
+ {
+ case detail::value_t::array:
+ {
+ if (value.m_value.array->empty())
+ {
+ // flatten empty array as null
+ result[reference_string] = nullptr;
+ }
+ else
+ {
+ // iterate array and use index as reference string
+ for (std::size_t i = 0; i < value.m_value.array->size(); ++i)
+ {
+ flatten(reference_string + "/" + std::to_string(i),
+ value.m_value.array->operator[](i), result);
+ }
+ }
+ break;
+ }
+
+ case detail::value_t::object:
+ {
+ if (value.m_value.object->empty())
+ {
+ // flatten empty object as null
+ result[reference_string] = nullptr;
+ }
+ else
+ {
+ // iterate object and use keys as reference string
+ for (const auto& element : *value.m_value.object)
+ {
+ flatten(reference_string + "/" + escape(element.first), element.second, result);
+ }
+ }
+ break;
+ }
+
+ default:
+ {
+ // add primitive value with its reference string
+ result[reference_string] = value;
+ break;
+ }
+ }
+ }
+
+ /*!
+ @param[in] value flattened JSON
+
+ @return unflattened JSON
+
+ @throw parse_error.109 if array index is not a number
+ @throw type_error.314 if value is not an object
+ @throw type_error.315 if object values are not primitive
+ @throw type_error.313 if value cannot be unflattened
+ */
+ static BasicJsonType
+ unflatten(const BasicJsonType& value)
+ {
+ if (JSON_UNLIKELY(not value.is_object()))
+ {
+ JSON_THROW(detail::type_error::create(314, "only objects can be unflattened"));
+ }
+
+ BasicJsonType result;
+
+ // iterate the JSON object values
+ for (const auto& element : *value.m_value.object)
+ {
+ if (JSON_UNLIKELY(not element.second.is_primitive()))
+ {
+ JSON_THROW(detail::type_error::create(315, "values in object must be primitive"));
+ }
+
+ // assign value to reference pointed to by JSON pointer; Note that if
+ // the JSON pointer is "" (i.e., points to the whole value), function
+ // get_and_create returns a reference to result itself. An assignment
+ // will then create a primitive value.
+ json_pointer(element.first).get_and_create(result) = element.second;
+ }
+
+ return result;
+ }
+
+ /*!
+ @brief compares two JSON pointers for equality
+
+ @param[in] lhs JSON pointer to compare
+ @param[in] rhs JSON pointer to compare
+ @return whether @a lhs is equal to @a rhs
+
+ @complexity Linear in the length of the JSON pointer
+
+ @exceptionsafety No-throw guarantee: this function never throws exceptions.
+ */
+ friend bool operator==(json_pointer const& lhs,
+ json_pointer const& rhs) noexcept
+ {
+ return lhs.reference_tokens == rhs.reference_tokens;
+ }
+
+ /*!
+ @brief compares two JSON pointers for inequality
+
+ @param[in] lhs JSON pointer to compare
+ @param[in] rhs JSON pointer to compare
+ @return whether @a lhs is not equal @a rhs
+
+ @complexity Linear in the length of the JSON pointer
+
+ @exceptionsafety No-throw guarantee: this function never throws exceptions.
+ */
+ friend bool operator!=(json_pointer const& lhs,
+ json_pointer const& rhs) noexcept
+ {
+ return not (lhs == rhs);
+ }
+
+ /// the reference tokens
+ std::vector<std::string> reference_tokens;
+};
+} // namespace nlohmann
+
+// #include <nlohmann/detail/json_ref.hpp>
+
+
+#include <initializer_list>
+#include <utility>
+
+// #include <nlohmann/detail/meta/type_traits.hpp>
+
+
+namespace nlohmann
+{
+namespace detail
+{
+template<typename BasicJsonType>
+class json_ref
+{
+ public:
+ using value_type = BasicJsonType;
+
+ json_ref(value_type&& value)
+ : owned_value(std::move(value)), value_ref(&owned_value), is_rvalue(true)
+ {}
+
+ json_ref(const value_type& value)
+ : value_ref(const_cast<value_type*>(&value)), is_rvalue(false)
+ {}
+
+ json_ref(std::initializer_list<json_ref> init)
+ : owned_value(init), value_ref(&owned_value), is_rvalue(true)
+ {}
+
+ template <
+ class... Args,
+ enable_if_t<std::is_constructible<value_type, Args...>::value, int> = 0 >
+ json_ref(Args && ... args)
+ : owned_value(std::forward<Args>(args)...), value_ref(&owned_value),
+ is_rvalue(true) {}
+
+ // class should be movable only
+ json_ref(json_ref&&) = default;
+ json_ref(const json_ref&) = delete;
+ json_ref& operator=(const json_ref&) = delete;
+ json_ref& operator=(json_ref&&) = delete;
+ ~json_ref() = default;
+
+ value_type moved_or_copied() const
+ {
+ if (is_rvalue)
+ {
+ return std::move(*value_ref);
+ }
+ return *value_ref;
+ }
+
+ value_type const& operator*() const
+ {
+ return *static_cast<value_type const*>(value_ref);
+ }
+
+ value_type const* operator->() const
+ {
+ return static_cast<value_type const*>(value_ref);
+ }
+
+ private:
+ mutable value_type owned_value = nullptr;
+ value_type* value_ref = nullptr;
+ const bool is_rvalue;
+};
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/detail/macro_scope.hpp>
+
+// #include <nlohmann/detail/meta/cpp_future.hpp>
+
+// #include <nlohmann/detail/meta/type_traits.hpp>
+
+// #include <nlohmann/detail/output/binary_writer.hpp>
+
+
+#include <algorithm> // reverse
+#include <array> // array
+#include <cstdint> // uint8_t, uint16_t, uint32_t, uint64_t
+#include <cstring> // memcpy
+#include <limits> // numeric_limits
+#include <string> // string
+
+// #include <nlohmann/detail/input/binary_reader.hpp>
+
+// #include <nlohmann/detail/output/output_adapters.hpp>
+
+
+#include <algorithm> // copy
+#include <cstddef> // size_t
+#include <ios> // streamsize
+#include <iterator> // back_inserter
+#include <memory> // shared_ptr, make_shared
+#include <ostream> // basic_ostream
+#include <string> // basic_string
+#include <vector> // vector
+
+namespace nlohmann
+{
+namespace detail
+{
+/// abstract output adapter interface
+template<typename CharType> struct output_adapter_protocol
+{
+ virtual void write_character(CharType c) = 0;
+ virtual void write_characters(const CharType* s, std::size_t length) = 0;
+ virtual ~output_adapter_protocol() = default;
+};
+
+/// a type to simplify interfaces
+template<typename CharType>
+using output_adapter_t = std::shared_ptr<output_adapter_protocol<CharType>>;
+
+/// output adapter for byte vectors
+template<typename CharType>
+class output_vector_adapter : public output_adapter_protocol<CharType>
+{
+ public:
+ explicit output_vector_adapter(std::vector<CharType>& vec) noexcept
+ : v(vec)
+ {}
+
+ void write_character(CharType c) override
+ {
+ v.push_back(c);
+ }
+
+ void write_characters(const CharType* s, std::size_t length) override
+ {
+ std::copy(s, s + length, std::back_inserter(v));
+ }
+
+ private:
+ std::vector<CharType>& v;
+};
+
+/// output adapter for output streams
+template<typename CharType>
+class output_stream_adapter : public output_adapter_protocol<CharType>
+{
+ public:
+ explicit output_stream_adapter(std::basic_ostream<CharType>& s) noexcept
+ : stream(s)
+ {}
+
+ void write_character(CharType c) override
+ {
+ stream.put(c);
+ }
+
+ void write_characters(const CharType* s, std::size_t length) override
+ {
+ stream.write(s, static_cast<std::streamsize>(length));
+ }
+
+ private:
+ std::basic_ostream<CharType>& stream;
+};
+
+/// output adapter for basic_string
+template<typename CharType, typename StringType = std::basic_string<CharType>>
+class output_string_adapter : public output_adapter_protocol<CharType>
+{
+ public:
+ explicit output_string_adapter(StringType& s) noexcept
+ : str(s)
+ {}
+
+ void write_character(CharType c) override
+ {
+ str.push_back(c);
+ }
+
+ void write_characters(const CharType* s, std::size_t length) override
+ {
+ str.append(s, length);
+ }
+
+ private:
+ StringType& str;
+};
+
+template<typename CharType, typename StringType = std::basic_string<CharType>>
+class output_adapter
+{
+ public:
+ output_adapter(std::vector<CharType>& vec)
+ : oa(std::make_shared<output_vector_adapter<CharType>>(vec)) {}
+
+ output_adapter(std::basic_ostream<CharType>& s)
+ : oa(std::make_shared<output_stream_adapter<CharType>>(s)) {}
+
+ output_adapter(StringType& s)
+ : oa(std::make_shared<output_string_adapter<CharType, StringType>>(s)) {}
+
+ operator output_adapter_t<CharType>()
+ {
+ return oa;
+ }
+
+ private:
+ output_adapter_t<CharType> oa = nullptr;
+};
+} // namespace detail
+} // namespace nlohmann
+
+
+namespace nlohmann
+{
+namespace detail
+{
+///////////////////
+// binary writer //
+///////////////////
+
+/*!
+@brief serialization to CBOR and MessagePack values
+*/
+template<typename BasicJsonType, typename CharType>
+class binary_writer
+{
+ using string_t = typename BasicJsonType::string_t;
+
+ public:
+ /*!
+ @brief create a binary writer
+
+ @param[in] adapter output adapter to write to
+ */
+ explicit binary_writer(output_adapter_t<CharType> adapter) : oa(adapter)
+ {
+ assert(oa);
+ }
+
+ /*!
+ @param[in] j JSON value to serialize
+ @pre j.type() == value_t::object
+ */
+ void write_bson(const BasicJsonType& j)
+ {
+ switch (j.type())
+ {
+ case value_t::object:
+ {
+ write_bson_object(*j.m_value.object);
+ break;
+ }
+
+ default:
+ {
+ JSON_THROW(type_error::create(317, "to serialize to BSON, top-level type must be object, but is " + std::string(j.type_name())));
+ }
+ }
+ }
+
+ /*!
+ @param[in] j JSON value to serialize
+ */
+ void write_cbor(const BasicJsonType& j)
+ {
+ switch (j.type())
+ {
+ case value_t::null:
+ {
+ oa->write_character(to_char_type(0xF6));
+ break;
+ }
+
+ case value_t::boolean:
+ {
+ oa->write_character(j.m_value.boolean
+ ? to_char_type(0xF5)
+ : to_char_type(0xF4));
+ break;
+ }
+
+ case value_t::number_integer:
+ {
+ if (j.m_value.number_integer >= 0)
+ {
+ // CBOR does not differentiate between positive signed
+ // integers and unsigned integers. Therefore, we used the
+ // code from the value_t::number_unsigned case here.
+ if (j.m_value.number_integer <= 0x17)
+ {
+ write_number(static_cast<std::uint8_t>(j.m_value.number_integer));
+ }
+ else if (j.m_value.number_integer <= (std::numeric_limits<std::uint8_t>::max)())
+ {
+ oa->write_character(to_char_type(0x18));
+ write_number(static_cast<std::uint8_t>(j.m_value.number_integer));
+ }
+ else if (j.m_value.number_integer <= (std::numeric_limits<std::uint16_t>::max)())
+ {
+ oa->write_character(to_char_type(0x19));
+ write_number(static_cast<std::uint16_t>(j.m_value.number_integer));
+ }
+ else if (j.m_value.number_integer <= (std::numeric_limits<std::uint32_t>::max)())
+ {
+ oa->write_character(to_char_type(0x1A));
+ write_number(static_cast<std::uint32_t>(j.m_value.number_integer));
+ }
+ else
+ {
+ oa->write_character(to_char_type(0x1B));
+ write_number(static_cast<std::uint64_t>(j.m_value.number_integer));
+ }
+ }
+ else
+ {
+ // The conversions below encode the sign in the first
+ // byte, and the value is converted to a positive number.
+ const auto positive_number = -1 - j.m_value.number_integer;
+ if (j.m_value.number_integer >= -24)
+ {
+ write_number(static_cast<std::uint8_t>(0x20 + positive_number));
+ }
+ else if (positive_number <= (std::numeric_limits<std::uint8_t>::max)())
+ {
+ oa->write_character(to_char_type(0x38));
+ write_number(static_cast<std::uint8_t>(positive_number));
+ }
+ else if (positive_number <= (std::numeric_limits<std::uint16_t>::max)())
+ {
+ oa->write_character(to_char_type(0x39));
+ write_number(static_cast<std::uint16_t>(positive_number));
+ }
+ else if (positive_number <= (std::numeric_limits<std::uint32_t>::max)())
+ {
+ oa->write_character(to_char_type(0x3A));
+ write_number(static_cast<std::uint32_t>(positive_number));
+ }
+ else
+ {
+ oa->write_character(to_char_type(0x3B));
+ write_number(static_cast<std::uint64_t>(positive_number));
+ }
+ }
+ break;
+ }
+
+ case value_t::number_unsigned:
+ {
+ if (j.m_value.number_unsigned <= 0x17)
+ {
+ write_number(static_cast<std::uint8_t>(j.m_value.number_unsigned));
+ }
+ else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint8_t>::max)())
+ {
+ oa->write_character(to_char_type(0x18));
+ write_number(static_cast<std::uint8_t>(j.m_value.number_unsigned));
+ }
+ else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint16_t>::max)())
+ {
+ oa->write_character(to_char_type(0x19));
+ write_number(static_cast<std::uint16_t>(j.m_value.number_unsigned));
+ }
+ else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint32_t>::max)())
+ {
+ oa->write_character(to_char_type(0x1A));
+ write_number(static_cast<std::uint32_t>(j.m_value.number_unsigned));
+ }
+ else
+ {
+ oa->write_character(to_char_type(0x1B));
+ write_number(static_cast<std::uint64_t>(j.m_value.number_unsigned));
+ }
+ break;
+ }
+
+ case value_t::number_float:
+ {
+ oa->write_character(get_cbor_float_prefix(j.m_value.number_float));
+ write_number(j.m_value.number_float);
+ break;
+ }
+
+ case value_t::string:
+ {
+ // step 1: write control byte and the string length
+ const auto N = j.m_value.string->size();
+ if (N <= 0x17)
+ {
+ write_number(static_cast<std::uint8_t>(0x60 + N));
+ }
+ else if (N <= (std::numeric_limits<std::uint8_t>::max)())
+ {
+ oa->write_character(to_char_type(0x78));
+ write_number(static_cast<std::uint8_t>(N));
+ }
+ else if (N <= (std::numeric_limits<std::uint16_t>::max)())
+ {
+ oa->write_character(to_char_type(0x79));
+ write_number(static_cast<std::uint16_t>(N));
+ }
+ else if (N <= (std::numeric_limits<std::uint32_t>::max)())
+ {
+ oa->write_character(to_char_type(0x7A));
+ write_number(static_cast<std::uint32_t>(N));
+ }
+ // LCOV_EXCL_START
+ else if (N <= (std::numeric_limits<std::uint64_t>::max)())
+ {
+ oa->write_character(to_char_type(0x7B));
+ write_number(static_cast<std::uint64_t>(N));
+ }
+ // LCOV_EXCL_STOP
+
+ // step 2: write the string
+ oa->write_characters(
+ reinterpret_cast<const CharType*>(j.m_value.string->c_str()),
+ j.m_value.string->size());
+ break;
+ }
+
+ case value_t::array:
+ {
+ // step 1: write control byte and the array size
+ const auto N = j.m_value.array->size();
+ if (N <= 0x17)
+ {
+ write_number(static_cast<std::uint8_t>(0x80 + N));
+ }
+ else if (N <= (std::numeric_limits<std::uint8_t>::max)())
+ {
+ oa->write_character(to_char_type(0x98));
+ write_number(static_cast<std::uint8_t>(N));
+ }
+ else if (N <= (std::numeric_limits<std::uint16_t>::max)())
+ {
+ oa->write_character(to_char_type(0x99));
+ write_number(static_cast<std::uint16_t>(N));
+ }
+ else if (N <= (std::numeric_limits<std::uint32_t>::max)())
+ {
+ oa->write_character(to_char_type(0x9A));
+ write_number(static_cast<std::uint32_t>(N));
+ }
+ // LCOV_EXCL_START
+ else if (N <= (std::numeric_limits<std::uint64_t>::max)())
+ {
+ oa->write_character(to_char_type(0x9B));
+ write_number(static_cast<std::uint64_t>(N));
+ }
+ // LCOV_EXCL_STOP
+
+ // step 2: write each element
+ for (const auto& el : *j.m_value.array)
+ {
+ write_cbor(el);
+ }
+ break;
+ }
+
+ case value_t::object:
+ {
+ // step 1: write control byte and the object size
+ const auto N = j.m_value.object->size();
+ if (N <= 0x17)
+ {
+ write_number(static_cast<std::uint8_t>(0xA0 + N));
+ }
+ else if (N <= (std::numeric_limits<std::uint8_t>::max)())
+ {
+ oa->write_character(to_char_type(0xB8));
+ write_number(static_cast<std::uint8_t>(N));
+ }
+ else if (N <= (std::numeric_limits<std::uint16_t>::max)())
+ {
+ oa->write_character(to_char_type(0xB9));
+ write_number(static_cast<std::uint16_t>(N));
+ }
+ else if (N <= (std::numeric_limits<std::uint32_t>::max)())
+ {
+ oa->write_character(to_char_type(0xBA));
+ write_number(static_cast<std::uint32_t>(N));
+ }
+ // LCOV_EXCL_START
+ else if (N <= (std::numeric_limits<std::uint64_t>::max)())
+ {
+ oa->write_character(to_char_type(0xBB));
+ write_number(static_cast<std::uint64_t>(N));
+ }
+ // LCOV_EXCL_STOP
+
+ // step 2: write each element
+ for (const auto& el : *j.m_value.object)
+ {
+ write_cbor(el.first);
+ write_cbor(el.second);
+ }
+ break;
+ }
+
+ default:
+ break;
+ }
+ }
+
+ /*!
+ @param[in] j JSON value to serialize
+ */
+ void write_msgpack(const BasicJsonType& j)
+ {
+ switch (j.type())
+ {
+ case value_t::null: // nil
+ {
+ oa->write_character(to_char_type(0xC0));
+ break;
+ }
+
+ case value_t::boolean: // true and false
+ {
+ oa->write_character(j.m_value.boolean
+ ? to_char_type(0xC3)
+ : to_char_type(0xC2));
+ break;
+ }
+
+ case value_t::number_integer:
+ {
+ if (j.m_value.number_integer >= 0)
+ {
+ // MessagePack does not differentiate between positive
+ // signed integers and unsigned integers. Therefore, we used
+ // the code from the value_t::number_unsigned case here.
+ if (j.m_value.number_unsigned < 128)
+ {
+ // positive fixnum
+ write_number(static_cast<std::uint8_t>(j.m_value.number_integer));
+ }
+ else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint8_t>::max)())
+ {
+ // uint 8
+ oa->write_character(to_char_type(0xCC));
+ write_number(static_cast<std::uint8_t>(j.m_value.number_integer));
+ }
+ else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint16_t>::max)())
+ {
+ // uint 16
+ oa->write_character(to_char_type(0xCD));
+ write_number(static_cast<std::uint16_t>(j.m_value.number_integer));
+ }
+ else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint32_t>::max)())
+ {
+ // uint 32
+ oa->write_character(to_char_type(0xCE));
+ write_number(static_cast<std::uint32_t>(j.m_value.number_integer));
+ }
+ else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint64_t>::max)())
+ {
+ // uint 64
+ oa->write_character(to_char_type(0xCF));
+ write_number(static_cast<std::uint64_t>(j.m_value.number_integer));
+ }
+ }
+ else
+ {
+ if (j.m_value.number_integer >= -32)
+ {
+ // negative fixnum
+ write_number(static_cast<std::int8_t>(j.m_value.number_integer));
+ }
+ else if (j.m_value.number_integer >= (std::numeric_limits<std::int8_t>::min)() and
+ j.m_value.number_integer <= (std::numeric_limits<std::int8_t>::max)())
+ {
+ // int 8
+ oa->write_character(to_char_type(0xD0));
+ write_number(static_cast<std::int8_t>(j.m_value.number_integer));
+ }
+ else if (j.m_value.number_integer >= (std::numeric_limits<std::int16_t>::min)() and
+ j.m_value.number_integer <= (std::numeric_limits<std::int16_t>::max)())
+ {
+ // int 16
+ oa->write_character(to_char_type(0xD1));
+ write_number(static_cast<std::int16_t>(j.m_value.number_integer));
+ }
+ else if (j.m_value.number_integer >= (std::numeric_limits<std::int32_t>::min)() and
+ j.m_value.number_integer <= (std::numeric_limits<std::int32_t>::max)())
+ {
+ // int 32
+ oa->write_character(to_char_type(0xD2));
+ write_number(static_cast<std::int32_t>(j.m_value.number_integer));
+ }
+ else if (j.m_value.number_integer >= (std::numeric_limits<std::int64_t>::min)() and
+ j.m_value.number_integer <= (std::numeric_limits<std::int64_t>::max)())
+ {
+ // int 64
+ oa->write_character(to_char_type(0xD3));
+ write_number(static_cast<std::int64_t>(j.m_value.number_integer));
+ }
+ }
+ break;
+ }
+
+ case value_t::number_unsigned:
+ {
+ if (j.m_value.number_unsigned < 128)
+ {
+ // positive fixnum
+ write_number(static_cast<std::uint8_t>(j.m_value.number_integer));
+ }
+ else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint8_t>::max)())
+ {
+ // uint 8
+ oa->write_character(to_char_type(0xCC));
+ write_number(static_cast<std::uint8_t>(j.m_value.number_integer));
+ }
+ else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint16_t>::max)())
+ {
+ // uint 16
+ oa->write_character(to_char_type(0xCD));
+ write_number(static_cast<std::uint16_t>(j.m_value.number_integer));
+ }
+ else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint32_t>::max)())
+ {
+ // uint 32
+ oa->write_character(to_char_type(0xCE));
+ write_number(static_cast<std::uint32_t>(j.m_value.number_integer));
+ }
+ else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint64_t>::max)())
+ {
+ // uint 64
+ oa->write_character(to_char_type(0xCF));
+ write_number(static_cast<std::uint64_t>(j.m_value.number_integer));
+ }
+ break;
+ }
+
+ case value_t::number_float:
+ {
+ oa->write_character(get_msgpack_float_prefix(j.m_value.number_float));
+ write_number(j.m_value.number_float);
+ break;
+ }
+
+ case value_t::string:
+ {
+ // step 1: write control byte and the string length
+ const auto N = j.m_value.string->size();
+ if (N <= 31)
+ {
+ // fixstr
+ write_number(static_cast<std::uint8_t>(0xA0 | N));
+ }
+ else if (N <= (std::numeric_limits<std::uint8_t>::max)())
+ {
+ // str 8
+ oa->write_character(to_char_type(0xD9));
+ write_number(static_cast<std::uint8_t>(N));
+ }
+ else if (N <= (std::numeric_limits<std::uint16_t>::max)())
+ {
+ // str 16
+ oa->write_character(to_char_type(0xDA));
+ write_number(static_cast<std::uint16_t>(N));
+ }
+ else if (N <= (std::numeric_limits<std::uint32_t>::max)())
+ {
+ // str 32
+ oa->write_character(to_char_type(0xDB));
+ write_number(static_cast<std::uint32_t>(N));
+ }
+
+ // step 2: write the string
+ oa->write_characters(
+ reinterpret_cast<const CharType*>(j.m_value.string->c_str()),
+ j.m_value.string->size());
+ break;
+ }
+
+ case value_t::array:
+ {
+ // step 1: write control byte and the array size
+ const auto N = j.m_value.array->size();
+ if (N <= 15)
+ {
+ // fixarray
+ write_number(static_cast<std::uint8_t>(0x90 | N));
+ }
+ else if (N <= (std::numeric_limits<std::uint16_t>::max)())
+ {
+ // array 16
+ oa->write_character(to_char_type(0xDC));
+ write_number(static_cast<std::uint16_t>(N));
+ }
+ else if (N <= (std::numeric_limits<std::uint32_t>::max)())
+ {
+ // array 32
+ oa->write_character(to_char_type(0xDD));
+ write_number(static_cast<std::uint32_t>(N));
+ }
+
+ // step 2: write each element
+ for (const auto& el : *j.m_value.array)
+ {
+ write_msgpack(el);
+ }
+ break;
+ }
+
+ case value_t::object:
+ {
+ // step 1: write control byte and the object size
+ const auto N = j.m_value.object->size();
+ if (N <= 15)
+ {
+ // fixmap
+ write_number(static_cast<std::uint8_t>(0x80 | (N & 0xF)));
+ }
+ else if (N <= (std::numeric_limits<std::uint16_t>::max)())
+ {
+ // map 16
+ oa->write_character(to_char_type(0xDE));
+ write_number(static_cast<std::uint16_t>(N));
+ }
+ else if (N <= (std::numeric_limits<std::uint32_t>::max)())
+ {
+ // map 32
+ oa->write_character(to_char_type(0xDF));
+ write_number(static_cast<std::uint32_t>(N));
+ }
+
+ // step 2: write each element
+ for (const auto& el : *j.m_value.object)
+ {
+ write_msgpack(el.first);
+ write_msgpack(el.second);
+ }
+ break;
+ }
+
+ default:
+ break;
+ }
+ }
+
+ /*!
+ @param[in] j JSON value to serialize
+ @param[in] use_count whether to use '#' prefixes (optimized format)
+ @param[in] use_type whether to use '$' prefixes (optimized format)
+ @param[in] add_prefix whether prefixes need to be used for this value
+ */
+ void write_ubjson(const BasicJsonType& j, const bool use_count,
+ const bool use_type, const bool add_prefix = true)
+ {
+ switch (j.type())
+ {
+ case value_t::null:
+ {
+ if (add_prefix)
+ {
+ oa->write_character(to_char_type('Z'));
+ }
+ break;
+ }
+
+ case value_t::boolean:
+ {
+ if (add_prefix)
+ {
+ oa->write_character(j.m_value.boolean
+ ? to_char_type('T')
+ : to_char_type('F'));
+ }
+ break;
+ }
+
+ case value_t::number_integer:
+ {
+ write_number_with_ubjson_prefix(j.m_value.number_integer, add_prefix);
+ break;
+ }
+
+ case value_t::number_unsigned:
+ {
+ write_number_with_ubjson_prefix(j.m_value.number_unsigned, add_prefix);
+ break;
+ }
+
+ case value_t::number_float:
+ {
+ write_number_with_ubjson_prefix(j.m_value.number_float, add_prefix);
+ break;
+ }
+
+ case value_t::string:
+ {
+ if (add_prefix)
+ {
+ oa->write_character(to_char_type('S'));
+ }
+ write_number_with_ubjson_prefix(j.m_value.string->size(), true);
+ oa->write_characters(
+ reinterpret_cast<const CharType*>(j.m_value.string->c_str()),
+ j.m_value.string->size());
+ break;
+ }
+
+ case value_t::array:
+ {
+ if (add_prefix)
+ {
+ oa->write_character(to_char_type('['));
+ }
+
+ bool prefix_required = true;
+ if (use_type and not j.m_value.array->empty())
+ {
+ assert(use_count);
+ const CharType first_prefix = ubjson_prefix(j.front());
+ const bool same_prefix = std::all_of(j.begin() + 1, j.end(),
+ [this, first_prefix](const BasicJsonType & v)
+ {
+ return ubjson_prefix(v) == first_prefix;
+ });
+
+ if (same_prefix)
+ {
+ prefix_required = false;
+ oa->write_character(to_char_type('$'));
+ oa->write_character(first_prefix);
+ }
+ }
+
+ if (use_count)
+ {
+ oa->write_character(to_char_type('#'));
+ write_number_with_ubjson_prefix(j.m_value.array->size(), true);
+ }
+
+ for (const auto& el : *j.m_value.array)
+ {
+ write_ubjson(el, use_count, use_type, prefix_required);
+ }
+
+ if (not use_count)
+ {
+ oa->write_character(to_char_type(']'));
+ }
+
+ break;
+ }
+
+ case value_t::object:
+ {
+ if (add_prefix)
+ {
+ oa->write_character(to_char_type('{'));
+ }
+
+ bool prefix_required = true;
+ if (use_type and not j.m_value.object->empty())
+ {
+ assert(use_count);
+ const CharType first_prefix = ubjson_prefix(j.front());
+ const bool same_prefix = std::all_of(j.begin(), j.end(),
+ [this, first_prefix](const BasicJsonType & v)
+ {
+ return ubjson_prefix(v) == first_prefix;
+ });
+
+ if (same_prefix)
+ {
+ prefix_required = false;
+ oa->write_character(to_char_type('$'));
+ oa->write_character(first_prefix);
+ }
+ }
+
+ if (use_count)
+ {
+ oa->write_character(to_char_type('#'));
+ write_number_with_ubjson_prefix(j.m_value.object->size(), true);
+ }
+
+ for (const auto& el : *j.m_value.object)
+ {
+ write_number_with_ubjson_prefix(el.first.size(), true);
+ oa->write_characters(
+ reinterpret_cast<const CharType*>(el.first.c_str()),
+ el.first.size());
+ write_ubjson(el.second, use_count, use_type, prefix_required);
+ }
+
+ if (not use_count)
+ {
+ oa->write_character(to_char_type('}'));
+ }
+
+ break;
+ }
+
+ default:
+ break;
+ }
+ }
+
+ private:
+ //////////
+ // BSON //
+ //////////
+
+ /*!
+ @return The size of a BSON document entry header, including the id marker
+ and the entry name size (and its null-terminator).
+ */
+ static std::size_t calc_bson_entry_header_size(const string_t& name)
+ {
+ const auto it = name.find(static_cast<typename string_t::value_type>(0));
+ if (JSON_UNLIKELY(it != BasicJsonType::string_t::npos))
+ {
+ JSON_THROW(out_of_range::create(409,
+ "BSON key cannot contain code point U+0000 (at byte " + std::to_string(it) + ")"));
+ }
+
+ return /*id*/ 1ul + name.size() + /*zero-terminator*/1u;
+ }
+
+ /*!
+ @brief Writes the given @a element_type and @a name to the output adapter
+ */
+ void write_bson_entry_header(const string_t& name,
+ const std::uint8_t element_type)
+ {
+ oa->write_character(to_char_type(element_type)); // boolean
+ oa->write_characters(
+ reinterpret_cast<const CharType*>(name.c_str()),
+ name.size() + 1u);
+ }
+
+ /*!
+ @brief Writes a BSON element with key @a name and boolean value @a value
+ */
+ void write_bson_boolean(const string_t& name,
+ const bool value)
+ {
+ write_bson_entry_header(name, 0x08);
+ oa->write_character(value ? to_char_type(0x01) : to_char_type(0x00));
+ }
+
+ /*!
+ @brief Writes a BSON element with key @a name and double value @a value
+ */
+ void write_bson_double(const string_t& name,
+ const double value)
+ {
+ write_bson_entry_header(name, 0x01);
+ write_number<double, true>(value);
+ }
+
+ /*!
+ @return The size of the BSON-encoded string in @a value
+ */
+ static std::size_t calc_bson_string_size(const string_t& value)
+ {
+ return sizeof(std::int32_t) + value.size() + 1ul;
+ }
+
+ /*!
+ @brief Writes a BSON element with key @a name and string value @a value
+ */
+ void write_bson_string(const string_t& name,
+ const string_t& value)
+ {
+ write_bson_entry_header(name, 0x02);
+
+ write_number<std::int32_t, true>(static_cast<std::int32_t>(value.size() + 1ul));
+ oa->write_characters(
+ reinterpret_cast<const CharType*>(value.c_str()),
+ value.size() + 1);
+ }
+
+ /*!
+ @brief Writes a BSON element with key @a name and null value
+ */
+ void write_bson_null(const string_t& name)
+ {
+ write_bson_entry_header(name, 0x0A);
+ }
+
+ /*!
+ @return The size of the BSON-encoded integer @a value
+ */
+ static std::size_t calc_bson_integer_size(const std::int64_t value)
+ {
+ return (std::numeric_limits<std::int32_t>::min)() <= value and value <= (std::numeric_limits<std::int32_t>::max)()
+ ? sizeof(std::int32_t)
+ : sizeof(std::int64_t);
+ }
+
+ /*!
+ @brief Writes a BSON element with key @a name and integer @a value
+ */
+ void write_bson_integer(const string_t& name,
+ const std::int64_t value)
+ {
+ if ((std::numeric_limits<std::int32_t>::min)() <= value and value <= (std::numeric_limits<std::int32_t>::max)())
+ {
+ write_bson_entry_header(name, 0x10); // int32
+ write_number<std::int32_t, true>(static_cast<std::int32_t>(value));
+ }
+ else
+ {
+ write_bson_entry_header(name, 0x12); // int64
+ write_number<std::int64_t, true>(static_cast<std::int64_t>(value));
+ }
+ }
+
+ /*!
+ @return The size of the BSON-encoded unsigned integer in @a j
+ */
+ static constexpr std::size_t calc_bson_unsigned_size(const std::uint64_t value) noexcept
+ {
+ return (value <= static_cast<std::uint64_t>((std::numeric_limits<std::int32_t>::max)()))
+ ? sizeof(std::int32_t)
+ : sizeof(std::int64_t);
+ }
+
+ /*!
+ @brief Writes a BSON element with key @a name and unsigned @a value
+ */
+ void write_bson_unsigned(const string_t& name,
+ const std::uint64_t value)
+ {
+ if (value <= static_cast<std::uint64_t>((std::numeric_limits<std::int32_t>::max)()))
+ {
+ write_bson_entry_header(name, 0x10 /* int32 */);
+ write_number<std::int32_t, true>(static_cast<std::int32_t>(value));
+ }
+ else if (value <= static_cast<std::uint64_t>((std::numeric_limits<std::int64_t>::max)()))
+ {
+ write_bson_entry_header(name, 0x12 /* int64 */);
+ write_number<std::int64_t, true>(static_cast<std::int64_t>(value));
+ }
+ else
+ {
+ JSON_THROW(out_of_range::create(407, "integer number " + std::to_string(value) + " cannot be represented by BSON as it does not fit int64"));
+ }
+ }
+
+ /*!
+ @brief Writes a BSON element with key @a name and object @a value
+ */
+ void write_bson_object_entry(const string_t& name,
+ const typename BasicJsonType::object_t& value)
+ {
+ write_bson_entry_header(name, 0x03); // object
+ write_bson_object(value);
+ }
+
+ /*!
+ @return The size of the BSON-encoded array @a value
+ */
+ static std::size_t calc_bson_array_size(const typename BasicJsonType::array_t& value)
+ {
+ std::size_t embedded_document_size = 0ul;
+ std::size_t array_index = 0ul;
+
+ for (const auto& el : value)
+ {
+ embedded_document_size += calc_bson_element_size(std::to_string(array_index++), el);
+ }
+
+ return sizeof(std::int32_t) + embedded_document_size + 1ul;
+ }
+
+ /*!
+ @brief Writes a BSON element with key @a name and array @a value
+ */
+ void write_bson_array(const string_t& name,
+ const typename BasicJsonType::array_t& value)
+ {
+ write_bson_entry_header(name, 0x04); // array
+ write_number<std::int32_t, true>(static_cast<std::int32_t>(calc_bson_array_size(value)));
+
+ std::size_t array_index = 0ul;
+
+ for (const auto& el : value)
+ {
+ write_bson_element(std::to_string(array_index++), el);
+ }
+
+ oa->write_character(to_char_type(0x00));
+ }
+
+ /*!
+ @brief Calculates the size necessary to serialize the JSON value @a j with its @a name
+ @return The calculated size for the BSON document entry for @a j with the given @a name.
+ */
+ static std::size_t calc_bson_element_size(const string_t& name,
+ const BasicJsonType& j)
+ {
+ const auto header_size = calc_bson_entry_header_size(name);
+ switch (j.type())
+ {
+ case value_t::object:
+ return header_size + calc_bson_object_size(*j.m_value.object);
+
+ case value_t::array:
+ return header_size + calc_bson_array_size(*j.m_value.array);
+
+ case value_t::boolean:
+ return header_size + 1ul;
+
+ case value_t::number_float:
+ return header_size + 8ul;
+
+ case value_t::number_integer:
+ return header_size + calc_bson_integer_size(j.m_value.number_integer);
+
+ case value_t::number_unsigned:
+ return header_size + calc_bson_unsigned_size(j.m_value.number_unsigned);
+
+ case value_t::string:
+ return header_size + calc_bson_string_size(*j.m_value.string);
+
+ case value_t::null:
+ return header_size + 0ul;
+
+ // LCOV_EXCL_START
+ default:
+ assert(false);
+ return 0ul;
+ // LCOV_EXCL_STOP
+ }
+ }
+
+ /*!
+ @brief Serializes the JSON value @a j to BSON and associates it with the
+ key @a name.
+ @param name The name to associate with the JSON entity @a j within the
+ current BSON document
+ @return The size of the BSON entry
+ */
+ void write_bson_element(const string_t& name,
+ const BasicJsonType& j)
+ {
+ switch (j.type())
+ {
+ case value_t::object:
+ return write_bson_object_entry(name, *j.m_value.object);
+
+ case value_t::array:
+ return write_bson_array(name, *j.m_value.array);
+
+ case value_t::boolean:
+ return write_bson_boolean(name, j.m_value.boolean);
+
+ case value_t::number_float:
+ return write_bson_double(name, j.m_value.number_float);
+
+ case value_t::number_integer:
+ return write_bson_integer(name, j.m_value.number_integer);
+
+ case value_t::number_unsigned:
+ return write_bson_unsigned(name, j.m_value.number_unsigned);
+
+ case value_t::string:
+ return write_bson_string(name, *j.m_value.string);
+
+ case value_t::null:
+ return write_bson_null(name);
+
+ // LCOV_EXCL_START
+ default:
+ assert(false);
+ return;
+ // LCOV_EXCL_STOP
+ }
+ }
+
+ /*!
+ @brief Calculates the size of the BSON serialization of the given
+ JSON-object @a j.
+ @param[in] j JSON value to serialize
+ @pre j.type() == value_t::object
+ */
+ static std::size_t calc_bson_object_size(const typename BasicJsonType::object_t& value)
+ {
+ std::size_t document_size = std::accumulate(value.begin(), value.end(), 0ul,
+ [](size_t result, const typename BasicJsonType::object_t::value_type & el)
+ {
+ return result += calc_bson_element_size(el.first, el.second);
+ });
+
+ return sizeof(std::int32_t) + document_size + 1ul;
+ }
+
+ /*!
+ @param[in] j JSON value to serialize
+ @pre j.type() == value_t::object
+ */
+ void write_bson_object(const typename BasicJsonType::object_t& value)
+ {
+ write_number<std::int32_t, true>(static_cast<std::int32_t>(calc_bson_object_size(value)));
+
+ for (const auto& el : value)
+ {
+ write_bson_element(el.first, el.second);
+ }
+
+ oa->write_character(to_char_type(0x00));
+ }
+
+ //////////
+ // CBOR //
+ //////////
+
+ static constexpr CharType get_cbor_float_prefix(float /*unused*/)
+ {
+ return to_char_type(0xFA); // Single-Precision Float
+ }
+
+ static constexpr CharType get_cbor_float_prefix(double /*unused*/)
+ {
+ return to_char_type(0xFB); // Double-Precision Float
+ }
+
+ /////////////
+ // MsgPack //
+ /////////////
+
+ static constexpr CharType get_msgpack_float_prefix(float /*unused*/)
+ {
+ return to_char_type(0xCA); // float 32
+ }
+
+ static constexpr CharType get_msgpack_float_prefix(double /*unused*/)
+ {
+ return to_char_type(0xCB); // float 64
+ }
+
+ ////////////
+ // UBJSON //
+ ////////////
+
+ // UBJSON: write number (floating point)
+ template<typename NumberType, typename std::enable_if<
+ std::is_floating_point<NumberType>::value, int>::type = 0>
+ void write_number_with_ubjson_prefix(const NumberType n,
+ const bool add_prefix)
+ {
+ if (add_prefix)
+ {
+ oa->write_character(get_ubjson_float_prefix(n));
+ }
+ write_number(n);
+ }
+
+ // UBJSON: write number (unsigned integer)
+ template<typename NumberType, typename std::enable_if<
+ std::is_unsigned<NumberType>::value, int>::type = 0>
+ void write_number_with_ubjson_prefix(const NumberType n,
+ const bool add_prefix)
+ {
+ if (n <= static_cast<std::uint64_t>((std::numeric_limits<std::int8_t>::max)()))
+ {
+ if (add_prefix)
+ {
+ oa->write_character(to_char_type('i')); // int8
+ }
+ write_number(static_cast<std::uint8_t>(n));
+ }
+ else if (n <= (std::numeric_limits<std::uint8_t>::max)())
+ {
+ if (add_prefix)
+ {
+ oa->write_character(to_char_type('U')); // uint8
+ }
+ write_number(static_cast<std::uint8_t>(n));
+ }
+ else if (n <= static_cast<std::uint64_t>((std::numeric_limits<std::int16_t>::max)()))
+ {
+ if (add_prefix)
+ {
+ oa->write_character(to_char_type('I')); // int16
+ }
+ write_number(static_cast<std::int16_t>(n));
+ }
+ else if (n <= static_cast<std::uint64_t>((std::numeric_limits<std::int32_t>::max)()))
+ {
+ if (add_prefix)
+ {
+ oa->write_character(to_char_type('l')); // int32
+ }
+ write_number(static_cast<std::int32_t>(n));
+ }
+ else if (n <= static_cast<std::uint64_t>((std::numeric_limits<std::int64_t>::max)()))
+ {
+ if (add_prefix)
+ {
+ oa->write_character(to_char_type('L')); // int64
+ }
+ write_number(static_cast<std::int64_t>(n));
+ }
+ else
+ {
+ JSON_THROW(out_of_range::create(407, "integer number " + std::to_string(n) + " cannot be represented by UBJSON as it does not fit int64"));
+ }
+ }
+
+ // UBJSON: write number (signed integer)
+ template<typename NumberType, typename std::enable_if<
+ std::is_signed<NumberType>::value and
+ not std::is_floating_point<NumberType>::value, int>::type = 0>
+ void write_number_with_ubjson_prefix(const NumberType n,
+ const bool add_prefix)
+ {
+ if ((std::numeric_limits<std::int8_t>::min)() <= n and n <= (std::numeric_limits<std::int8_t>::max)())
+ {
+ if (add_prefix)
+ {
+ oa->write_character(to_char_type('i')); // int8
+ }
+ write_number(static_cast<std::int8_t>(n));
+ }
+ else if (static_cast<std::int64_t>((std::numeric_limits<std::uint8_t>::min)()) <= n and n <= static_cast<std::int64_t>((std::numeric_limits<std::uint8_t>::max)()))
+ {
+ if (add_prefix)
+ {
+ oa->write_character(to_char_type('U')); // uint8
+ }
+ write_number(static_cast<std::uint8_t>(n));
+ }
+ else if ((std::numeric_limits<std::int16_t>::min)() <= n and n <= (std::numeric_limits<std::int16_t>::max)())
+ {
+ if (add_prefix)
+ {
+ oa->write_character(to_char_type('I')); // int16
+ }
+ write_number(static_cast<std::int16_t>(n));
+ }
+ else if ((std::numeric_limits<std::int32_t>::min)() <= n and n <= (std::numeric_limits<std::int32_t>::max)())
+ {
+ if (add_prefix)
+ {
+ oa->write_character(to_char_type('l')); // int32
+ }
+ write_number(static_cast<std::int32_t>(n));
+ }
+ else if ((std::numeric_limits<std::int64_t>::min)() <= n and n <= (std::numeric_limits<std::int64_t>::max)())
+ {
+ if (add_prefix)
+ {
+ oa->write_character(to_char_type('L')); // int64
+ }
+ write_number(static_cast<std::int64_t>(n));
+ }
+ // LCOV_EXCL_START
+ else
+ {
+ JSON_THROW(out_of_range::create(407, "integer number " + std::to_string(n) + " cannot be represented by UBJSON as it does not fit int64"));
+ }
+ // LCOV_EXCL_STOP
+ }
+
+ /*!
+ @brief determine the type prefix of container values
+
+ @note This function does not need to be 100% accurate when it comes to
+ integer limits. In case a number exceeds the limits of int64_t,
+ this will be detected by a later call to function
+ write_number_with_ubjson_prefix. Therefore, we return 'L' for any
+ value that does not fit the previous limits.
+ */
+ CharType ubjson_prefix(const BasicJsonType& j) const noexcept
+ {
+ switch (j.type())
+ {
+ case value_t::null:
+ return 'Z';
+
+ case value_t::boolean:
+ return j.m_value.boolean ? 'T' : 'F';
+
+ case value_t::number_integer:
+ {
+ if ((std::numeric_limits<std::int8_t>::min)() <= j.m_value.number_integer and j.m_value.number_integer <= (std::numeric_limits<std::int8_t>::max)())
+ {
+ return 'i';
+ }
+ if ((std::numeric_limits<std::uint8_t>::min)() <= j.m_value.number_integer and j.m_value.number_integer <= (std::numeric_limits<std::uint8_t>::max)())
+ {
+ return 'U';
+ }
+ if ((std::numeric_limits<std::int16_t>::min)() <= j.m_value.number_integer and j.m_value.number_integer <= (std::numeric_limits<std::int16_t>::max)())
+ {
+ return 'I';
+ }
+ if ((std::numeric_limits<std::int32_t>::min)() <= j.m_value.number_integer and j.m_value.number_integer <= (std::numeric_limits<std::int32_t>::max)())
+ {
+ return 'l';
+ }
+ // no check and assume int64_t (see note above)
+ return 'L';
+ }
+
+ case value_t::number_unsigned:
+ {
+ if (j.m_value.number_unsigned <= (std::numeric_limits<std::int8_t>::max)())
+ {
+ return 'i';
+ }
+ if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint8_t>::max)())
+ {
+ return 'U';
+ }
+ if (j.m_value.number_unsigned <= (std::numeric_limits<std::int16_t>::max)())
+ {
+ return 'I';
+ }
+ if (j.m_value.number_unsigned <= (std::numeric_limits<std::int32_t>::max)())
+ {
+ return 'l';
+ }
+ // no check and assume int64_t (see note above)
+ return 'L';
+ }
+
+ case value_t::number_float:
+ return get_ubjson_float_prefix(j.m_value.number_float);
+
+ case value_t::string:
+ return 'S';
+
+ case value_t::array:
+ return '[';
+
+ case value_t::object:
+ return '{';
+
+ default: // discarded values
+ return 'N';
+ }
+ }
+
+ static constexpr CharType get_ubjson_float_prefix(float /*unused*/)
+ {
+ return 'd'; // float 32
+ }
+
+ static constexpr CharType get_ubjson_float_prefix(double /*unused*/)
+ {
+ return 'D'; // float 64
+ }
+
+ ///////////////////////
+ // Utility functions //
+ ///////////////////////
+
+ /*
+ @brief write a number to output input
+ @param[in] n number of type @a NumberType
+ @tparam NumberType the type of the number
+ @tparam OutputIsLittleEndian Set to true if output data is
+ required to be little endian
+
+ @note This function needs to respect the system's endianess, because bytes
+ in CBOR, MessagePack, and UBJSON are stored in network order (big
+ endian) and therefore need reordering on little endian systems.
+ */
+ template<typename NumberType, bool OutputIsLittleEndian = false>
+ void write_number(const NumberType n)
+ {
+ // step 1: write number to array of length NumberType
+ std::array<CharType, sizeof(NumberType)> vec;
+ std::memcpy(vec.data(), &n, sizeof(NumberType));
+
+ // step 2: write array to output (with possible reordering)
+ if (is_little_endian != OutputIsLittleEndian)
+ {
+ // reverse byte order prior to conversion if necessary
+ std::reverse(vec.begin(), vec.end());
+ }
+
+ oa->write_characters(vec.data(), sizeof(NumberType));
+ }
+
+ public:
+ // The following to_char_type functions are implement the conversion
+ // between uint8_t and CharType. In case CharType is not unsigned,
+ // such a conversion is required to allow values greater than 128.
+ // See <https://github.com/nlohmann/json/issues/1286> for a discussion.
+ template < typename C = CharType,
+ enable_if_t < std::is_signed<C>::value and std::is_signed<char>::value > * = nullptr >
+ static constexpr CharType to_char_type(std::uint8_t x) noexcept
+ {
+ return *reinterpret_cast<char*>(&x);
+ }
+
+ template < typename C = CharType,
+ enable_if_t < std::is_signed<C>::value and std::is_unsigned<char>::value > * = nullptr >
+ static CharType to_char_type(std::uint8_t x) noexcept
+ {
+ static_assert(sizeof(std::uint8_t) == sizeof(CharType), "size of CharType must be equal to std::uint8_t");
+ static_assert(std::is_pod<CharType>::value, "CharType must be POD");
+ CharType result;
+ std::memcpy(&result, &x, sizeof(x));
+ return result;
+ }
+
+ template<typename C = CharType,
+ enable_if_t<std::is_unsigned<C>::value>* = nullptr>
+ static constexpr CharType to_char_type(std::uint8_t x) noexcept
+ {
+ return x;
+ }
+
+ template < typename InputCharType, typename C = CharType,
+ enable_if_t <
+ std::is_signed<C>::value and
+ std::is_signed<char>::value and
+ std::is_same<char, typename std::remove_cv<InputCharType>::type>::value
+ > * = nullptr >
+ static constexpr CharType to_char_type(InputCharType x) noexcept
+ {
+ return x;
+ }
+
+ private:
+ /// whether we can assume little endianess
+ const bool is_little_endian = binary_reader<BasicJsonType>::little_endianess();
+
+ /// the output
+ output_adapter_t<CharType> oa = nullptr;
+};
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/detail/output/output_adapters.hpp>
+
+// #include <nlohmann/detail/output/serializer.hpp>
+
+
+#include <algorithm> // reverse, remove, fill, find, none_of
+#include <array> // array
+#include <cassert> // assert
+#include <ciso646> // and, or
+#include <clocale> // localeconv, lconv
+#include <cmath> // labs, isfinite, isnan, signbit
+#include <cstddef> // size_t, ptrdiff_t
+#include <cstdint> // uint8_t
+#include <cstdio> // snprintf
+#include <limits> // numeric_limits
+#include <string> // string
+#include <type_traits> // is_same
+#include <utility> // move
+
+// #include <nlohmann/detail/conversions/to_chars.hpp>
+
+
+#include <array> // array
+#include <cassert> // assert
+#include <ciso646> // or, and, not
+#include <cmath> // signbit, isfinite
+#include <cstdint> // intN_t, uintN_t
+#include <cstring> // memcpy, memmove
+#include <limits> // numeric_limits
+#include <type_traits> // conditional
+
+namespace nlohmann
+{
+namespace detail
+{
+
+/*!
+@brief implements the Grisu2 algorithm for binary to decimal floating-point
+conversion.
+
+This implementation is a slightly modified version of the reference
+implementation which may be obtained from
+http://florian.loitsch.com/publications (bench.tar.gz).
+
+The code is distributed under the MIT license, Copyright (c) 2009 Florian Loitsch.
+
+For a detailed description of the algorithm see:
+
+[1] Loitsch, "Printing Floating-Point Numbers Quickly and Accurately with
+ Integers", Proceedings of the ACM SIGPLAN 2010 Conference on Programming
+ Language Design and Implementation, PLDI 2010
+[2] Burger, Dybvig, "Printing Floating-Point Numbers Quickly and Accurately",
+ Proceedings of the ACM SIGPLAN 1996 Conference on Programming Language
+ Design and Implementation, PLDI 1996
+*/
+namespace dtoa_impl
+{
+
+template <typename Target, typename Source>
+Target reinterpret_bits(const Source source)
+{
+ static_assert(sizeof(Target) == sizeof(Source), "size mismatch");
+
+ Target target;
+ std::memcpy(&target, &source, sizeof(Source));
+ return target;
+}
+
+struct diyfp // f * 2^e
+{
+ static constexpr int kPrecision = 64; // = q
+
+ std::uint64_t f = 0;
+ int e = 0;
+
+ constexpr diyfp(std::uint64_t f_, int e_) noexcept : f(f_), e(e_) {}
+
+ /*!
+ @brief returns x - y
+ @pre x.e == y.e and x.f >= y.f
+ */
+ static diyfp sub(const diyfp& x, const diyfp& y) noexcept
+ {
+ assert(x.e == y.e);
+ assert(x.f >= y.f);
+
+ return {x.f - y.f, x.e};
+ }
+
+ /*!
+ @brief returns x * y
+ @note The result is rounded. (Only the upper q bits are returned.)
+ */
+ static diyfp mul(const diyfp& x, const diyfp& y) noexcept
+ {
+ static_assert(kPrecision == 64, "internal error");
+
+ // Computes:
+ // f = round((x.f * y.f) / 2^q)
+ // e = x.e + y.e + q
+
+ // Emulate the 64-bit * 64-bit multiplication:
+ //
+ // p = u * v
+ // = (u_lo + 2^32 u_hi) (v_lo + 2^32 v_hi)
+ // = (u_lo v_lo ) + 2^32 ((u_lo v_hi ) + (u_hi v_lo )) + 2^64 (u_hi v_hi )
+ // = (p0 ) + 2^32 ((p1 ) + (p2 )) + 2^64 (p3 )
+ // = (p0_lo + 2^32 p0_hi) + 2^32 ((p1_lo + 2^32 p1_hi) + (p2_lo + 2^32 p2_hi)) + 2^64 (p3 )
+ // = (p0_lo ) + 2^32 (p0_hi + p1_lo + p2_lo ) + 2^64 (p1_hi + p2_hi + p3)
+ // = (p0_lo ) + 2^32 (Q ) + 2^64 (H )
+ // = (p0_lo ) + 2^32 (Q_lo + 2^32 Q_hi ) + 2^64 (H )
+ //
+ // (Since Q might be larger than 2^32 - 1)
+ //
+ // = (p0_lo + 2^32 Q_lo) + 2^64 (Q_hi + H)
+ //
+ // (Q_hi + H does not overflow a 64-bit int)
+ //
+ // = p_lo + 2^64 p_hi
+
+ const std::uint64_t u_lo = x.f & 0xFFFFFFFFu;
+ const std::uint64_t u_hi = x.f >> 32u;
+ const std::uint64_t v_lo = y.f & 0xFFFFFFFFu;
+ const std::uint64_t v_hi = y.f >> 32u;
+
+ const std::uint64_t p0 = u_lo * v_lo;
+ const std::uint64_t p1 = u_lo * v_hi;
+ const std::uint64_t p2 = u_hi * v_lo;
+ const std::uint64_t p3 = u_hi * v_hi;
+
+ const std::uint64_t p0_hi = p0 >> 32u;
+ const std::uint64_t p1_lo = p1 & 0xFFFFFFFFu;
+ const std::uint64_t p1_hi = p1 >> 32u;
+ const std::uint64_t p2_lo = p2 & 0xFFFFFFFFu;
+ const std::uint64_t p2_hi = p2 >> 32u;
+
+ std::uint64_t Q = p0_hi + p1_lo + p2_lo;
+
+ // The full product might now be computed as
+ //
+ // p_hi = p3 + p2_hi + p1_hi + (Q >> 32)
+ // p_lo = p0_lo + (Q << 32)
+ //
+ // But in this particular case here, the full p_lo is not required.
+ // Effectively we only need to add the highest bit in p_lo to p_hi (and
+ // Q_hi + 1 does not overflow).
+
+ Q += std::uint64_t{1} << (64u - 32u - 1u); // round, ties up
+
+ const std::uint64_t h = p3 + p2_hi + p1_hi + (Q >> 32u);
+
+ return {h, x.e + y.e + 64};
+ }
+
+ /*!
+ @brief normalize x such that the significand is >= 2^(q-1)
+ @pre x.f != 0
+ */
+ static diyfp normalize(diyfp x) noexcept
+ {
+ assert(x.f != 0);
+
+ while ((x.f >> 63u) == 0)
+ {
+ x.f <<= 1u;
+ x.e--;
+ }
+
+ return x;
+ }
+
+ /*!
+ @brief normalize x such that the result has the exponent E
+ @pre e >= x.e and the upper e - x.e bits of x.f must be zero.
+ */
+ static diyfp normalize_to(const diyfp& x, const int target_exponent) noexcept
+ {
+ const int delta = x.e - target_exponent;
+
+ assert(delta >= 0);
+ assert(((x.f << delta) >> delta) == x.f);
+
+ return {x.f << delta, target_exponent};
+ }
+};
+
+struct boundaries
+{
+ diyfp w;
+ diyfp minus;
+ diyfp plus;
+};
+
+/*!
+Compute the (normalized) diyfp representing the input number 'value' and its
+boundaries.
+
+@pre value must be finite and positive
+*/
+template <typename FloatType>
+boundaries compute_boundaries(FloatType value)
+{
+ assert(std::isfinite(value));
+ assert(value > 0);
+
+ // Convert the IEEE representation into a diyfp.
+ //
+ // If v is denormal:
+ // value = 0.F * 2^(1 - bias) = ( F) * 2^(1 - bias - (p-1))
+ // If v is normalized:
+ // value = 1.F * 2^(E - bias) = (2^(p-1) + F) * 2^(E - bias - (p-1))
+
+ static_assert(std::numeric_limits<FloatType>::is_iec559,
+ "internal error: dtoa_short requires an IEEE-754 floating-point implementation");
+
+ constexpr int kPrecision = std::numeric_limits<FloatType>::digits; // = p (includes the hidden bit)
+ constexpr int kBias = std::numeric_limits<FloatType>::max_exponent - 1 + (kPrecision - 1);
+ constexpr int kMinExp = 1 - kBias;
+ constexpr std::uint64_t kHiddenBit = std::uint64_t{1} << (kPrecision - 1); // = 2^(p-1)
+
+ using bits_type = typename std::conditional<kPrecision == 24, std::uint32_t, std::uint64_t >::type;
+
+ const std::uint64_t bits = reinterpret_bits<bits_type>(value);
+ const std::uint64_t E = bits >> (kPrecision - 1);
+ const std::uint64_t F = bits & (kHiddenBit - 1);
+
+ const bool is_denormal = E == 0;
+ const diyfp v = is_denormal
+ ? diyfp(F, kMinExp)
+ : diyfp(F + kHiddenBit, static_cast<int>(E) - kBias);
+
+ // Compute the boundaries m- and m+ of the floating-point value
+ // v = f * 2^e.
+ //
+ // Determine v- and v+, the floating-point predecessor and successor if v,
+ // respectively.
+ //
+ // v- = v - 2^e if f != 2^(p-1) or e == e_min (A)
+ // = v - 2^(e-1) if f == 2^(p-1) and e > e_min (B)
+ //
+ // v+ = v + 2^e
+ //
+ // Let m- = (v- + v) / 2 and m+ = (v + v+) / 2. All real numbers _strictly_
+ // between m- and m+ round to v, regardless of how the input rounding
+ // algorithm breaks ties.
+ //
+ // ---+-------------+-------------+-------------+-------------+--- (A)
+ // v- m- v m+ v+
+ //
+ // -----------------+------+------+-------------+-------------+--- (B)
+ // v- m- v m+ v+
+
+ const bool lower_boundary_is_closer = F == 0 and E > 1;
+ const diyfp m_plus = diyfp(2 * v.f + 1, v.e - 1);
+ const diyfp m_minus = lower_boundary_is_closer
+ ? diyfp(4 * v.f - 1, v.e - 2) // (B)
+ : diyfp(2 * v.f - 1, v.e - 1); // (A)
+
+ // Determine the normalized w+ = m+.
+ const diyfp w_plus = diyfp::normalize(m_plus);
+
+ // Determine w- = m- such that e_(w-) = e_(w+).
+ const diyfp w_minus = diyfp::normalize_to(m_minus, w_plus.e);
+
+ return {diyfp::normalize(v), w_minus, w_plus};
+}
+
+// Given normalized diyfp w, Grisu needs to find a (normalized) cached
+// power-of-ten c, such that the exponent of the product c * w = f * 2^e lies
+// within a certain range [alpha, gamma] (Definition 3.2 from [1])
+//
+// alpha <= e = e_c + e_w + q <= gamma
+//
+// or
+//
+// f_c * f_w * 2^alpha <= f_c 2^(e_c) * f_w 2^(e_w) * 2^q
+// <= f_c * f_w * 2^gamma
+//
+// Since c and w are normalized, i.e. 2^(q-1) <= f < 2^q, this implies
+//
+// 2^(q-1) * 2^(q-1) * 2^alpha <= c * w * 2^q < 2^q * 2^q * 2^gamma
+//
+// or
+//
+// 2^(q - 2 + alpha) <= c * w < 2^(q + gamma)
+//
+// The choice of (alpha,gamma) determines the size of the table and the form of
+// the digit generation procedure. Using (alpha,gamma)=(-60,-32) works out well
+// in practice:
+//
+// The idea is to cut the number c * w = f * 2^e into two parts, which can be
+// processed independently: An integral part p1, and a fractional part p2:
+//
+// f * 2^e = ( (f div 2^-e) * 2^-e + (f mod 2^-e) ) * 2^e
+// = (f div 2^-e) + (f mod 2^-e) * 2^e
+// = p1 + p2 * 2^e
+//
+// The conversion of p1 into decimal form requires a series of divisions and
+// modulos by (a power of) 10. These operations are faster for 32-bit than for
+// 64-bit integers, so p1 should ideally fit into a 32-bit integer. This can be
+// achieved by choosing
+//
+// -e >= 32 or e <= -32 := gamma
+//
+// In order to convert the fractional part
+//
+// p2 * 2^e = p2 / 2^-e = d[-1] / 10^1 + d[-2] / 10^2 + ...
+//
+// into decimal form, the fraction is repeatedly multiplied by 10 and the digits
+// d[-i] are extracted in order:
+//
+// (10 * p2) div 2^-e = d[-1]
+// (10 * p2) mod 2^-e = d[-2] / 10^1 + ...
+//
+// The multiplication by 10 must not overflow. It is sufficient to choose
+//
+// 10 * p2 < 16 * p2 = 2^4 * p2 <= 2^64.
+//
+// Since p2 = f mod 2^-e < 2^-e,
+//
+// -e <= 60 or e >= -60 := alpha
+
+constexpr int kAlpha = -60;
+constexpr int kGamma = -32;
+
+struct cached_power // c = f * 2^e ~= 10^k
+{
+ std::uint64_t f;
+ int e;
+ int k;
+};
+
+/*!
+For a normalized diyfp w = f * 2^e, this function returns a (normalized) cached
+power-of-ten c = f_c * 2^e_c, such that the exponent of the product w * c
+satisfies (Definition 3.2 from [1])
+
+ alpha <= e_c + e + q <= gamma.
+*/
+inline cached_power get_cached_power_for_binary_exponent(int e)
+{
+ // Now
+ //
+ // alpha <= e_c + e + q <= gamma (1)
+ // ==> f_c * 2^alpha <= c * 2^e * 2^q
+ //
+ // and since the c's are normalized, 2^(q-1) <= f_c,
+ //
+ // ==> 2^(q - 1 + alpha) <= c * 2^(e + q)
+ // ==> 2^(alpha - e - 1) <= c
+ //
+ // If c were an exakt power of ten, i.e. c = 10^k, one may determine k as
+ //
+ // k = ceil( log_10( 2^(alpha - e - 1) ) )
+ // = ceil( (alpha - e - 1) * log_10(2) )
+ //
+ // From the paper:
+ // "In theory the result of the procedure could be wrong since c is rounded,
+ // and the computation itself is approximated [...]. In practice, however,
+ // this simple function is sufficient."
+ //
+ // For IEEE double precision floating-point numbers converted into
+ // normalized diyfp's w = f * 2^e, with q = 64,
+ //
+ // e >= -1022 (min IEEE exponent)
+ // -52 (p - 1)
+ // -52 (p - 1, possibly normalize denormal IEEE numbers)
+ // -11 (normalize the diyfp)
+ // = -1137
+ //
+ // and
+ //
+ // e <= +1023 (max IEEE exponent)
+ // -52 (p - 1)
+ // -11 (normalize the diyfp)
+ // = 960
+ //
+ // This binary exponent range [-1137,960] results in a decimal exponent
+ // range [-307,324]. One does not need to store a cached power for each
+ // k in this range. For each such k it suffices to find a cached power
+ // such that the exponent of the product lies in [alpha,gamma].
+ // This implies that the difference of the decimal exponents of adjacent
+ // table entries must be less than or equal to
+ //
+ // floor( (gamma - alpha) * log_10(2) ) = 8.
+ //
+ // (A smaller distance gamma-alpha would require a larger table.)
+
+ // NB:
+ // Actually this function returns c, such that -60 <= e_c + e + 64 <= -34.
+
+ constexpr int kCachedPowersMinDecExp = -300;
+ constexpr int kCachedPowersDecStep = 8;
+
+ static constexpr std::array<cached_power, 79> kCachedPowers =
+ {
+ {
+ { 0xAB70FE17C79AC6CA, -1060, -300 },
+ { 0xFF77B1FCBEBCDC4F, -1034, -292 },
+ { 0xBE5691EF416BD60C, -1007, -284 },
+ { 0x8DD01FAD907FFC3C, -980, -276 },
+ { 0xD3515C2831559A83, -954, -268 },
+ { 0x9D71AC8FADA6C9B5, -927, -260 },
+ { 0xEA9C227723EE8BCB, -901, -252 },
+ { 0xAECC49914078536D, -874, -244 },
+ { 0x823C12795DB6CE57, -847, -236 },
+ { 0xC21094364DFB5637, -821, -228 },
+ { 0x9096EA6F3848984F, -794, -220 },
+ { 0xD77485CB25823AC7, -768, -212 },
+ { 0xA086CFCD97BF97F4, -741, -204 },
+ { 0xEF340A98172AACE5, -715, -196 },
+ { 0xB23867FB2A35B28E, -688, -188 },
+ { 0x84C8D4DFD2C63F3B, -661, -180 },
+ { 0xC5DD44271AD3CDBA, -635, -172 },
+ { 0x936B9FCEBB25C996, -608, -164 },
+ { 0xDBAC6C247D62A584, -582, -156 },
+ { 0xA3AB66580D5FDAF6, -555, -148 },
+ { 0xF3E2F893DEC3F126, -529, -140 },
+ { 0xB5B5ADA8AAFF80B8, -502, -132 },
+ { 0x87625F056C7C4A8B, -475, -124 },
+ { 0xC9BCFF6034C13053, -449, -116 },
+ { 0x964E858C91BA2655, -422, -108 },
+ { 0xDFF9772470297EBD, -396, -100 },
+ { 0xA6DFBD9FB8E5B88F, -369, -92 },
+ { 0xF8A95FCF88747D94, -343, -84 },
+ { 0xB94470938FA89BCF, -316, -76 },
+ { 0x8A08F0F8BF0F156B, -289, -68 },
+ { 0xCDB02555653131B6, -263, -60 },
+ { 0x993FE2C6D07B7FAC, -236, -52 },
+ { 0xE45C10C42A2B3B06, -210, -44 },
+ { 0xAA242499697392D3, -183, -36 },
+ { 0xFD87B5F28300CA0E, -157, -28 },
+ { 0xBCE5086492111AEB, -130, -20 },
+ { 0x8CBCCC096F5088CC, -103, -12 },
+ { 0xD1B71758E219652C, -77, -4 },
+ { 0x9C40000000000000, -50, 4 },
+ { 0xE8D4A51000000000, -24, 12 },
+ { 0xAD78EBC5AC620000, 3, 20 },
+ { 0x813F3978F8940984, 30, 28 },
+ { 0xC097CE7BC90715B3, 56, 36 },
+ { 0x8F7E32CE7BEA5C70, 83, 44 },
+ { 0xD5D238A4ABE98068, 109, 52 },
+ { 0x9F4F2726179A2245, 136, 60 },
+ { 0xED63A231D4C4FB27, 162, 68 },
+ { 0xB0DE65388CC8ADA8, 189, 76 },
+ { 0x83C7088E1AAB65DB, 216, 84 },
+ { 0xC45D1DF942711D9A, 242, 92 },
+ { 0x924D692CA61BE758, 269, 100 },
+ { 0xDA01EE641A708DEA, 295, 108 },
+ { 0xA26DA3999AEF774A, 322, 116 },
+ { 0xF209787BB47D6B85, 348, 124 },
+ { 0xB454E4A179DD1877, 375, 132 },
+ { 0x865B86925B9BC5C2, 402, 140 },
+ { 0xC83553C5C8965D3D, 428, 148 },
+ { 0x952AB45CFA97A0B3, 455, 156 },
+ { 0xDE469FBD99A05FE3, 481, 164 },
+ { 0xA59BC234DB398C25, 508, 172 },
+ { 0xF6C69A72A3989F5C, 534, 180 },
+ { 0xB7DCBF5354E9BECE, 561, 188 },
+ { 0x88FCF317F22241E2, 588, 196 },
+ { 0xCC20CE9BD35C78A5, 614, 204 },
+ { 0x98165AF37B2153DF, 641, 212 },
+ { 0xE2A0B5DC971F303A, 667, 220 },
+ { 0xA8D9D1535CE3B396, 694, 228 },
+ { 0xFB9B7CD9A4A7443C, 720, 236 },
+ { 0xBB764C4CA7A44410, 747, 244 },
+ { 0x8BAB8EEFB6409C1A, 774, 252 },
+ { 0xD01FEF10A657842C, 800, 260 },
+ { 0x9B10A4E5E9913129, 827, 268 },
+ { 0xE7109BFBA19C0C9D, 853, 276 },
+ { 0xAC2820D9623BF429, 880, 284 },
+ { 0x80444B5E7AA7CF85, 907, 292 },
+ { 0xBF21E44003ACDD2D, 933, 300 },
+ { 0x8E679C2F5E44FF8F, 960, 308 },
+ { 0xD433179D9C8CB841, 986, 316 },
+ { 0x9E19DB92B4E31BA9, 1013, 324 },
+ }
+ };
+
+ // This computation gives exactly the same results for k as
+ // k = ceil((kAlpha - e - 1) * 0.30102999566398114)
+ // for |e| <= 1500, but doesn't require floating-point operations.
+ // NB: log_10(2) ~= 78913 / 2^18
+ assert(e >= -1500);
+ assert(e <= 1500);
+ const int f = kAlpha - e - 1;
+ const int k = (f * 78913) / (1 << 18) + static_cast<int>(f > 0);
+
+ const int index = (-kCachedPowersMinDecExp + k + (kCachedPowersDecStep - 1)) / kCachedPowersDecStep;
+ assert(index >= 0);
+ assert(static_cast<std::size_t>(index) < kCachedPowers.size());
+
+ const cached_power cached = kCachedPowers[static_cast<std::size_t>(index)];
+ assert(kAlpha <= cached.e + e + 64);
+ assert(kGamma >= cached.e + e + 64);
+
+ return cached;
+}
+
+/*!
+For n != 0, returns k, such that pow10 := 10^(k-1) <= n < 10^k.
+For n == 0, returns 1 and sets pow10 := 1.
+*/
+inline int find_largest_pow10(const std::uint32_t n, std::uint32_t& pow10)
+{
+ // LCOV_EXCL_START
+ if (n >= 1000000000)
+ {
+ pow10 = 1000000000;
+ return 10;
+ }
+ // LCOV_EXCL_STOP
+ else if (n >= 100000000)
+ {
+ pow10 = 100000000;
+ return 9;
+ }
+ else if (n >= 10000000)
+ {
+ pow10 = 10000000;
+ return 8;
+ }
+ else if (n >= 1000000)
+ {
+ pow10 = 1000000;
+ return 7;
+ }
+ else if (n >= 100000)
+ {
+ pow10 = 100000;
+ return 6;
+ }
+ else if (n >= 10000)
+ {
+ pow10 = 10000;
+ return 5;
+ }
+ else if (n >= 1000)
+ {
+ pow10 = 1000;
+ return 4;
+ }
+ else if (n >= 100)
+ {
+ pow10 = 100;
+ return 3;
+ }
+ else if (n >= 10)
+ {
+ pow10 = 10;
+ return 2;
+ }
+ else
+ {
+ pow10 = 1;
+ return 1;
+ }
+}
+
+inline void grisu2_round(char* buf, int len, std::uint64_t dist, std::uint64_t delta,
+ std::uint64_t rest, std::uint64_t ten_k)
+{
+ assert(len >= 1);
+ assert(dist <= delta);
+ assert(rest <= delta);
+ assert(ten_k > 0);
+
+ // <--------------------------- delta ---->
+ // <---- dist --------->
+ // --------------[------------------+-------------------]--------------
+ // M- w M+
+ //
+ // ten_k
+ // <------>
+ // <---- rest ---->
+ // --------------[------------------+----+--------------]--------------
+ // w V
+ // = buf * 10^k
+ //
+ // ten_k represents a unit-in-the-last-place in the decimal representation
+ // stored in buf.
+ // Decrement buf by ten_k while this takes buf closer to w.
+
+ // The tests are written in this order to avoid overflow in unsigned
+ // integer arithmetic.
+
+ while (rest < dist
+ and delta - rest >= ten_k
+ and (rest + ten_k < dist or dist - rest > rest + ten_k - dist))
+ {
+ assert(buf[len - 1] != '0');
+ buf[len - 1]--;
+ rest += ten_k;
+ }
+}
+
+/*!
+Generates V = buffer * 10^decimal_exponent, such that M- <= V <= M+.
+M- and M+ must be normalized and share the same exponent -60 <= e <= -32.
+*/
+inline void grisu2_digit_gen(char* buffer, int& length, int& decimal_exponent,
+ diyfp M_minus, diyfp w, diyfp M_plus)
+{
+ static_assert(kAlpha >= -60, "internal error");
+ static_assert(kGamma <= -32, "internal error");
+
+ // Generates the digits (and the exponent) of a decimal floating-point
+ // number V = buffer * 10^decimal_exponent in the range [M-, M+]. The diyfp's
+ // w, M- and M+ share the same exponent e, which satisfies alpha <= e <= gamma.
+ //
+ // <--------------------------- delta ---->
+ // <---- dist --------->
+ // --------------[------------------+-------------------]--------------
+ // M- w M+
+ //
+ // Grisu2 generates the digits of M+ from left to right and stops as soon as
+ // V is in [M-,M+].
+
+ assert(M_plus.e >= kAlpha);
+ assert(M_plus.e <= kGamma);
+
+ std::uint64_t delta = diyfp::sub(M_plus, M_minus).f; // (significand of (M+ - M-), implicit exponent is e)
+ std::uint64_t dist = diyfp::sub(M_plus, w ).f; // (significand of (M+ - w ), implicit exponent is e)
+
+ // Split M+ = f * 2^e into two parts p1 and p2 (note: e < 0):
+ //
+ // M+ = f * 2^e
+ // = ((f div 2^-e) * 2^-e + (f mod 2^-e)) * 2^e
+ // = ((p1 ) * 2^-e + (p2 )) * 2^e
+ // = p1 + p2 * 2^e
+
+ const diyfp one(std::uint64_t{1} << -M_plus.e, M_plus.e);
+
+ auto p1 = static_cast<std::uint32_t>(M_plus.f >> -one.e); // p1 = f div 2^-e (Since -e >= 32, p1 fits into a 32-bit int.)
+ std::uint64_t p2 = M_plus.f & (one.f - 1); // p2 = f mod 2^-e
+
+ // 1)
+ //
+ // Generate the digits of the integral part p1 = d[n-1]...d[1]d[0]
+
+ assert(p1 > 0);
+
+ std::uint32_t pow10;
+ const int k = find_largest_pow10(p1, pow10);
+
+ // 10^(k-1) <= p1 < 10^k, pow10 = 10^(k-1)
+ //
+ // p1 = (p1 div 10^(k-1)) * 10^(k-1) + (p1 mod 10^(k-1))
+ // = (d[k-1] ) * 10^(k-1) + (p1 mod 10^(k-1))
+ //
+ // M+ = p1 + p2 * 2^e
+ // = d[k-1] * 10^(k-1) + (p1 mod 10^(k-1)) + p2 * 2^e
+ // = d[k-1] * 10^(k-1) + ((p1 mod 10^(k-1)) * 2^-e + p2) * 2^e
+ // = d[k-1] * 10^(k-1) + ( rest) * 2^e
+ //
+ // Now generate the digits d[n] of p1 from left to right (n = k-1,...,0)
+ //
+ // p1 = d[k-1]...d[n] * 10^n + d[n-1]...d[0]
+ //
+ // but stop as soon as
+ //
+ // rest * 2^e = (d[n-1]...d[0] * 2^-e + p2) * 2^e <= delta * 2^e
+
+ int n = k;
+ while (n > 0)
+ {
+ // Invariants:
+ // M+ = buffer * 10^n + (p1 + p2 * 2^e) (buffer = 0 for n = k)
+ // pow10 = 10^(n-1) <= p1 < 10^n
+ //
+ const std::uint32_t d = p1 / pow10; // d = p1 div 10^(n-1)
+ const std::uint32_t r = p1 % pow10; // r = p1 mod 10^(n-1)
+ //
+ // M+ = buffer * 10^n + (d * 10^(n-1) + r) + p2 * 2^e
+ // = (buffer * 10 + d) * 10^(n-1) + (r + p2 * 2^e)
+ //
+ assert(d <= 9);
+ buffer[length++] = static_cast<char>('0' + d); // buffer := buffer * 10 + d
+ //
+ // M+ = buffer * 10^(n-1) + (r + p2 * 2^e)
+ //
+ p1 = r;
+ n--;
+ //
+ // M+ = buffer * 10^n + (p1 + p2 * 2^e)
+ // pow10 = 10^n
+ //
+
+ // Now check if enough digits have been generated.
+ // Compute
+ //
+ // p1 + p2 * 2^e = (p1 * 2^-e + p2) * 2^e = rest * 2^e
+ //
+ // Note:
+ // Since rest and delta share the same exponent e, it suffices to
+ // compare the significands.
+ const std::uint64_t rest = (std::uint64_t{p1} << -one.e) + p2;
+ if (rest <= delta)
+ {
+ // V = buffer * 10^n, with M- <= V <= M+.
+
+ decimal_exponent += n;
+
+ // We may now just stop. But instead look if the buffer could be
+ // decremented to bring V closer to w.
+ //
+ // pow10 = 10^n is now 1 ulp in the decimal representation V.
+ // The rounding procedure works with diyfp's with an implicit
+ // exponent of e.
+ //
+ // 10^n = (10^n * 2^-e) * 2^e = ulp * 2^e
+ //
+ const std::uint64_t ten_n = std::uint64_t{pow10} << -one.e;
+ grisu2_round(buffer, length, dist, delta, rest, ten_n);
+
+ return;
+ }
+
+ pow10 /= 10;
+ //
+ // pow10 = 10^(n-1) <= p1 < 10^n
+ // Invariants restored.
+ }
+
+ // 2)
+ //
+ // The digits of the integral part have been generated:
+ //
+ // M+ = d[k-1]...d[1]d[0] + p2 * 2^e
+ // = buffer + p2 * 2^e
+ //
+ // Now generate the digits of the fractional part p2 * 2^e.
+ //
+ // Note:
+ // No decimal point is generated: the exponent is adjusted instead.
+ //
+ // p2 actually represents the fraction
+ //
+ // p2 * 2^e
+ // = p2 / 2^-e
+ // = d[-1] / 10^1 + d[-2] / 10^2 + ...
+ //
+ // Now generate the digits d[-m] of p1 from left to right (m = 1,2,...)
+ //
+ // p2 * 2^e = d[-1]d[-2]...d[-m] * 10^-m
+ // + 10^-m * (d[-m-1] / 10^1 + d[-m-2] / 10^2 + ...)
+ //
+ // using
+ //
+ // 10^m * p2 = ((10^m * p2) div 2^-e) * 2^-e + ((10^m * p2) mod 2^-e)
+ // = ( d) * 2^-e + ( r)
+ //
+ // or
+ // 10^m * p2 * 2^e = d + r * 2^e
+ //
+ // i.e.
+ //
+ // M+ = buffer + p2 * 2^e
+ // = buffer + 10^-m * (d + r * 2^e)
+ // = (buffer * 10^m + d) * 10^-m + 10^-m * r * 2^e
+ //
+ // and stop as soon as 10^-m * r * 2^e <= delta * 2^e
+
+ assert(p2 > delta);
+
+ int m = 0;
+ for (;;)
+ {
+ // Invariant:
+ // M+ = buffer * 10^-m + 10^-m * (d[-m-1] / 10 + d[-m-2] / 10^2 + ...) * 2^e
+ // = buffer * 10^-m + 10^-m * (p2 ) * 2^e
+ // = buffer * 10^-m + 10^-m * (1/10 * (10 * p2) ) * 2^e
+ // = buffer * 10^-m + 10^-m * (1/10 * ((10*p2 div 2^-e) * 2^-e + (10*p2 mod 2^-e)) * 2^e
+ //
+ assert(p2 <= (std::numeric_limits<std::uint64_t>::max)() / 10);
+ p2 *= 10;
+ const std::uint64_t d = p2 >> -one.e; // d = (10 * p2) div 2^-e
+ const std::uint64_t r = p2 & (one.f - 1); // r = (10 * p2) mod 2^-e
+ //
+ // M+ = buffer * 10^-m + 10^-m * (1/10 * (d * 2^-e + r) * 2^e
+ // = buffer * 10^-m + 10^-m * (1/10 * (d + r * 2^e))
+ // = (buffer * 10 + d) * 10^(-m-1) + 10^(-m-1) * r * 2^e
+ //
+ assert(d <= 9);
+ buffer[length++] = static_cast<char>('0' + d); // buffer := buffer * 10 + d
+ //
+ // M+ = buffer * 10^(-m-1) + 10^(-m-1) * r * 2^e
+ //
+ p2 = r;
+ m++;
+ //
+ // M+ = buffer * 10^-m + 10^-m * p2 * 2^e
+ // Invariant restored.
+
+ // Check if enough digits have been generated.
+ //
+ // 10^-m * p2 * 2^e <= delta * 2^e
+ // p2 * 2^e <= 10^m * delta * 2^e
+ // p2 <= 10^m * delta
+ delta *= 10;
+ dist *= 10;
+ if (p2 <= delta)
+ {
+ break;
+ }
+ }
+
+ // V = buffer * 10^-m, with M- <= V <= M+.
+
+ decimal_exponent -= m;
+
+ // 1 ulp in the decimal representation is now 10^-m.
+ // Since delta and dist are now scaled by 10^m, we need to do the
+ // same with ulp in order to keep the units in sync.
+ //
+ // 10^m * 10^-m = 1 = 2^-e * 2^e = ten_m * 2^e
+ //
+ const std::uint64_t ten_m = one.f;
+ grisu2_round(buffer, length, dist, delta, p2, ten_m);
+
+ // By construction this algorithm generates the shortest possible decimal
+ // number (Loitsch, Theorem 6.2) which rounds back to w.
+ // For an input number of precision p, at least
+ //
+ // N = 1 + ceil(p * log_10(2))
+ //
+ // decimal digits are sufficient to identify all binary floating-point
+ // numbers (Matula, "In-and-Out conversions").
+ // This implies that the algorithm does not produce more than N decimal
+ // digits.
+ //
+ // N = 17 for p = 53 (IEEE double precision)
+ // N = 9 for p = 24 (IEEE single precision)
+}
+
+/*!
+v = buf * 10^decimal_exponent
+len is the length of the buffer (number of decimal digits)
+The buffer must be large enough, i.e. >= max_digits10.
+*/
+inline void grisu2(char* buf, int& len, int& decimal_exponent,
+ diyfp m_minus, diyfp v, diyfp m_plus)
+{
+ assert(m_plus.e == m_minus.e);
+ assert(m_plus.e == v.e);
+
+ // --------(-----------------------+-----------------------)-------- (A)
+ // m- v m+
+ //
+ // --------------------(-----------+-----------------------)-------- (B)
+ // m- v m+
+ //
+ // First scale v (and m- and m+) such that the exponent is in the range
+ // [alpha, gamma].
+
+ const cached_power cached = get_cached_power_for_binary_exponent(m_plus.e);
+
+ const diyfp c_minus_k(cached.f, cached.e); // = c ~= 10^-k
+
+ // The exponent of the products is = v.e + c_minus_k.e + q and is in the range [alpha,gamma]
+ const diyfp w = diyfp::mul(v, c_minus_k);
+ const diyfp w_minus = diyfp::mul(m_minus, c_minus_k);
+ const diyfp w_plus = diyfp::mul(m_plus, c_minus_k);
+
+ // ----(---+---)---------------(---+---)---------------(---+---)----
+ // w- w w+
+ // = c*m- = c*v = c*m+
+ //
+ // diyfp::mul rounds its result and c_minus_k is approximated too. w, w- and
+ // w+ are now off by a small amount.
+ // In fact:
+ //
+ // w - v * 10^k < 1 ulp
+ //
+ // To account for this inaccuracy, add resp. subtract 1 ulp.
+ //
+ // --------+---[---------------(---+---)---------------]---+--------
+ // w- M- w M+ w+
+ //
+ // Now any number in [M-, M+] (bounds included) will round to w when input,
+ // regardless of how the input rounding algorithm breaks ties.
+ //
+ // And digit_gen generates the shortest possible such number in [M-, M+].
+ // Note that this does not mean that Grisu2 always generates the shortest
+ // possible number in the interval (m-, m+).
+ const diyfp M_minus(w_minus.f + 1, w_minus.e);
+ const diyfp M_plus (w_plus.f - 1, w_plus.e );
+
+ decimal_exponent = -cached.k; // = -(-k) = k
+
+ grisu2_digit_gen(buf, len, decimal_exponent, M_minus, w, M_plus);
+}
+
+/*!
+v = buf * 10^decimal_exponent
+len is the length of the buffer (number of decimal digits)
+The buffer must be large enough, i.e. >= max_digits10.
+*/
+template <typename FloatType>
+void grisu2(char* buf, int& len, int& decimal_exponent, FloatType value)
+{
+ static_assert(diyfp::kPrecision >= std::numeric_limits<FloatType>::digits + 3,
+ "internal error: not enough precision");
+
+ assert(std::isfinite(value));
+ assert(value > 0);
+
+ // If the neighbors (and boundaries) of 'value' are always computed for double-precision
+ // numbers, all float's can be recovered using strtod (and strtof). However, the resulting
+ // decimal representations are not exactly "short".
+ //
+ // The documentation for 'std::to_chars' (https://en.cppreference.com/w/cpp/utility/to_chars)
+ // says "value is converted to a string as if by std::sprintf in the default ("C") locale"
+ // and since sprintf promotes float's to double's, I think this is exactly what 'std::to_chars'
+ // does.
+ // On the other hand, the documentation for 'std::to_chars' requires that "parsing the
+ // representation using the corresponding std::from_chars function recovers value exactly". That
+ // indicates that single precision floating-point numbers should be recovered using
+ // 'std::strtof'.
+ //
+ // NB: If the neighbors are computed for single-precision numbers, there is a single float
+ // (7.0385307e-26f) which can't be recovered using strtod. The resulting double precision
+ // value is off by 1 ulp.
+#if 0
+ const boundaries w = compute_boundaries(static_cast<double>(value));
+#else
+ const boundaries w = compute_boundaries(value);
+#endif
+
+ grisu2(buf, len, decimal_exponent, w.minus, w.w, w.plus);
+}
+
+/*!
+@brief appends a decimal representation of e to buf
+@return a pointer to the element following the exponent.
+@pre -1000 < e < 1000
+*/
+inline char* append_exponent(char* buf, int e)
+{
+ assert(e > -1000);
+ assert(e < 1000);
+
+ if (e < 0)
+ {
+ e = -e;
+ *buf++ = '-';
+ }
+ else
+ {
+ *buf++ = '+';
+ }
+
+ auto k = static_cast<std::uint32_t>(e);
+ if (k < 10)
+ {
+ // Always print at least two digits in the exponent.
+ // This is for compatibility with printf("%g").
+ *buf++ = '0';
+ *buf++ = static_cast<char>('0' + k);
+ }
+ else if (k < 100)
+ {
+ *buf++ = static_cast<char>('0' + k / 10);
+ k %= 10;
+ *buf++ = static_cast<char>('0' + k);
+ }
+ else
+ {
+ *buf++ = static_cast<char>('0' + k / 100);
+ k %= 100;
+ *buf++ = static_cast<char>('0' + k / 10);
+ k %= 10;
+ *buf++ = static_cast<char>('0' + k);
+ }
+
+ return buf;
+}
+
+/*!
+@brief prettify v = buf * 10^decimal_exponent
+
+If v is in the range [10^min_exp, 10^max_exp) it will be printed in fixed-point
+notation. Otherwise it will be printed in exponential notation.
+
+@pre min_exp < 0
+@pre max_exp > 0
+*/
+inline char* format_buffer(char* buf, int len, int decimal_exponent,
+ int min_exp, int max_exp)
+{
+ assert(min_exp < 0);
+ assert(max_exp > 0);
+
+ const int k = len;
+ const int n = len + decimal_exponent;
+
+ // v = buf * 10^(n-k)
+ // k is the length of the buffer (number of decimal digits)
+ // n is the position of the decimal point relative to the start of the buffer.
+
+ if (k <= n and n <= max_exp)
+ {
+ // digits[000]
+ // len <= max_exp + 2
+
+ std::memset(buf + k, '0', static_cast<size_t>(n - k));
+ // Make it look like a floating-point number (#362, #378)
+ buf[n + 0] = '.';
+ buf[n + 1] = '0';
+ return buf + (n + 2);
+ }
+
+ if (0 < n and n <= max_exp)
+ {
+ // dig.its
+ // len <= max_digits10 + 1
+
+ assert(k > n);
+
+ std::memmove(buf + (n + 1), buf + n, static_cast<size_t>(k - n));
+ buf[n] = '.';
+ return buf + (k + 1);
+ }
+
+ if (min_exp < n and n <= 0)
+ {
+ // 0.[000]digits
+ // len <= 2 + (-min_exp - 1) + max_digits10
+
+ std::memmove(buf + (2 + -n), buf, static_cast<size_t>(k));
+ buf[0] = '0';
+ buf[1] = '.';
+ std::memset(buf + 2, '0', static_cast<size_t>(-n));
+ return buf + (2 + (-n) + k);
+ }
+
+ if (k == 1)
+ {
+ // dE+123
+ // len <= 1 + 5
+
+ buf += 1;
+ }
+ else
+ {
+ // d.igitsE+123
+ // len <= max_digits10 + 1 + 5
+
+ std::memmove(buf + 2, buf + 1, static_cast<size_t>(k - 1));
+ buf[1] = '.';
+ buf += 1 + k;
+ }
+
+ *buf++ = 'e';
+ return append_exponent(buf, n - 1);
+}
+
+} // namespace dtoa_impl
+
+/*!
+@brief generates a decimal representation of the floating-point number value in [first, last).
+
+The format of the resulting decimal representation is similar to printf's %g
+format. Returns an iterator pointing past-the-end of the decimal representation.
+
+@note The input number must be finite, i.e. NaN's and Inf's are not supported.
+@note The buffer must be large enough.
+@note The result is NOT null-terminated.
+*/
+template <typename FloatType>
+char* to_chars(char* first, const char* last, FloatType value)
+{
+ static_cast<void>(last); // maybe unused - fix warning
+ assert(std::isfinite(value));
+
+ // Use signbit(value) instead of (value < 0) since signbit works for -0.
+ if (std::signbit(value))
+ {
+ value = -value;
+ *first++ = '-';
+ }
+
+ if (value == 0) // +-0
+ {
+ *first++ = '0';
+ // Make it look like a floating-point number (#362, #378)
+ *first++ = '.';
+ *first++ = '0';
+ return first;
+ }
+
+ assert(last - first >= std::numeric_limits<FloatType>::max_digits10);
+
+ // Compute v = buffer * 10^decimal_exponent.
+ // The decimal digits are stored in the buffer, which needs to be interpreted
+ // as an unsigned decimal integer.
+ // len is the length of the buffer, i.e. the number of decimal digits.
+ int len = 0;
+ int decimal_exponent = 0;
+ dtoa_impl::grisu2(first, len, decimal_exponent, value);
+
+ assert(len <= std::numeric_limits<FloatType>::max_digits10);
+
+ // Format the buffer like printf("%.*g", prec, value)
+ constexpr int kMinExp = -4;
+ // Use digits10 here to increase compatibility with version 2.
+ constexpr int kMaxExp = std::numeric_limits<FloatType>::digits10;
+
+ assert(last - first >= kMaxExp + 2);
+ assert(last - first >= 2 + (-kMinExp - 1) + std::numeric_limits<FloatType>::max_digits10);
+ assert(last - first >= std::numeric_limits<FloatType>::max_digits10 + 6);
+
+ return dtoa_impl::format_buffer(first, len, decimal_exponent, kMinExp, kMaxExp);
+}
+
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/detail/exceptions.hpp>
+
+// #include <nlohmann/detail/macro_scope.hpp>
+
+// #include <nlohmann/detail/meta/cpp_future.hpp>
+
+// #include <nlohmann/detail/output/binary_writer.hpp>
+
+// #include <nlohmann/detail/output/output_adapters.hpp>
+
+// #include <nlohmann/detail/value_t.hpp>
+
+
+namespace nlohmann
+{
+namespace detail
+{
+///////////////////
+// serialization //
+///////////////////
+
+/// how to treat decoding errors
+enum class error_handler_t
+{
+ strict, ///< throw a type_error exception in case of invalid UTF-8
+ replace, ///< replace invalid UTF-8 sequences with U+FFFD
+ ignore ///< ignore invalid UTF-8 sequences
+};
+
+template<typename BasicJsonType>
+class serializer
+{
+ using string_t = typename BasicJsonType::string_t;
+ using number_float_t = typename BasicJsonType::number_float_t;
+ using number_integer_t = typename BasicJsonType::number_integer_t;
+ using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
+ static constexpr std::uint8_t UTF8_ACCEPT = 0;
+ static constexpr std::uint8_t UTF8_REJECT = 1;
+
+ public:
+ /*!
+ @param[in] s output stream to serialize to
+ @param[in] ichar indentation character to use
+ @param[in] error_handler_ how to react on decoding errors
+ */
+ serializer(output_adapter_t<char> s, const char ichar,
+ error_handler_t error_handler_ = error_handler_t::strict)
+ : o(std::move(s))
+ , loc(std::localeconv())
+ , thousands_sep(loc->thousands_sep == nullptr ? '\0' : * (loc->thousands_sep))
+ , decimal_point(loc->decimal_point == nullptr ? '\0' : * (loc->decimal_point))
+ , indent_char(ichar)
+ , indent_string(512, indent_char)
+ , error_handler(error_handler_)
+ {}
+
+ // delete because of pointer members
+ serializer(const serializer&) = delete;
+ serializer& operator=(const serializer&) = delete;
+ serializer(serializer&&) = delete;
+ serializer& operator=(serializer&&) = delete;
+ ~serializer() = default;
+
+ /*!
+ @brief internal implementation of the serialization function
+
+ This function is called by the public member function dump and organizes
+ the serialization internally. The indentation level is propagated as
+ additional parameter. In case of arrays and objects, the function is
+ called recursively.
+
+ - strings and object keys are escaped using `escape_string()`
+ - integer numbers are converted implicitly via `operator<<`
+ - floating-point numbers are converted to a string using `"%g"` format
+
+ @param[in] val value to serialize
+ @param[in] pretty_print whether the output shall be pretty-printed
+ @param[in] indent_step the indent level
+ @param[in] current_indent the current indent level (only used internally)
+ */
+ void dump(const BasicJsonType& val, const bool pretty_print,
+ const bool ensure_ascii,
+ const unsigned int indent_step,
+ const unsigned int current_indent = 0)
+ {
+ switch (val.m_type)
+ {
+ case value_t::object:
+ {
+ if (val.m_value.object->empty())
+ {
+ o->write_characters("{}", 2);
+ return;
+ }
+
+ if (pretty_print)
+ {
+ o->write_characters("{\n", 2);
+
+ // variable to hold indentation for recursive calls
+ const auto new_indent = current_indent + indent_step;
+ if (JSON_UNLIKELY(indent_string.size() < new_indent))
+ {
+ indent_string.resize(indent_string.size() * 2, ' ');
+ }
+
+ // first n-1 elements
+ auto i = val.m_value.object->cbegin();
+ for (std::size_t cnt = 0; cnt < val.m_value.object->size() - 1; ++cnt, ++i)
+ {
+ o->write_characters(indent_string.c_str(), new_indent);
+ o->write_character('\"');
+ dump_escaped(i->first, ensure_ascii);
+ o->write_characters("\": ", 3);
+ dump(i->second, true, ensure_ascii, indent_step, new_indent);
+ o->write_characters(",\n", 2);
+ }
+
+ // last element
+ assert(i != val.m_value.object->cend());
+ assert(std::next(i) == val.m_value.object->cend());
+ o->write_characters(indent_string.c_str(), new_indent);
+ o->write_character('\"');
+ dump_escaped(i->first, ensure_ascii);
+ o->write_characters("\": ", 3);
+ dump(i->second, true, ensure_ascii, indent_step, new_indent);
+
+ o->write_character('\n');
+ o->write_characters(indent_string.c_str(), current_indent);
+ o->write_character('}');
+ }
+ else
+ {
+ o->write_character('{');
+
+ // first n-1 elements
+ auto i = val.m_value.object->cbegin();
+ for (std::size_t cnt = 0; cnt < val.m_value.object->size() - 1; ++cnt, ++i)
+ {
+ o->write_character('\"');
+ dump_escaped(i->first, ensure_ascii);
+ o->write_characters("\":", 2);
+ dump(i->second, false, ensure_ascii, indent_step, current_indent);
+ o->write_character(',');
+ }
+
+ // last element
+ assert(i != val.m_value.object->cend());
+ assert(std::next(i) == val.m_value.object->cend());
+ o->write_character('\"');
+ dump_escaped(i->first, ensure_ascii);
+ o->write_characters("\":", 2);
+ dump(i->second, false, ensure_ascii, indent_step, current_indent);
+
+ o->write_character('}');
+ }
+
+ return;
+ }
+
+ case value_t::array:
+ {
+ if (val.m_value.array->empty())
+ {
+ o->write_characters("[]", 2);
+ return;
+ }
+
+ if (pretty_print)
+ {
+ o->write_characters("[\n", 2);
+
+ // variable to hold indentation for recursive calls
+ const auto new_indent = current_indent + indent_step;
+ if (JSON_UNLIKELY(indent_string.size() < new_indent))
+ {
+ indent_string.resize(indent_string.size() * 2, ' ');
+ }
+
+ // first n-1 elements
+ for (auto i = val.m_value.array->cbegin();
+ i != val.m_value.array->cend() - 1; ++i)
+ {
+ o->write_characters(indent_string.c_str(), new_indent);
+ dump(*i, true, ensure_ascii, indent_step, new_indent);
+ o->write_characters(",\n", 2);
+ }
+
+ // last element
+ assert(not val.m_value.array->empty());
+ o->write_characters(indent_string.c_str(), new_indent);
+ dump(val.m_value.array->back(), true, ensure_ascii, indent_step, new_indent);
+
+ o->write_character('\n');
+ o->write_characters(indent_string.c_str(), current_indent);
+ o->write_character(']');
+ }
+ else
+ {
+ o->write_character('[');
+
+ // first n-1 elements
+ for (auto i = val.m_value.array->cbegin();
+ i != val.m_value.array->cend() - 1; ++i)
+ {
+ dump(*i, false, ensure_ascii, indent_step, current_indent);
+ o->write_character(',');
+ }
+
+ // last element
+ assert(not val.m_value.array->empty());
+ dump(val.m_value.array->back(), false, ensure_ascii, indent_step, current_indent);
+
+ o->write_character(']');
+ }
+
+ return;
+ }
+
+ case value_t::string:
+ {
+ o->write_character('\"');
+ dump_escaped(*val.m_value.string, ensure_ascii);
+ o->write_character('\"');
+ return;
+ }
+
+ case value_t::boolean:
+ {
+ if (val.m_value.boolean)
+ {
+ o->write_characters("true", 4);
+ }
+ else
+ {
+ o->write_characters("false", 5);
+ }
+ return;
+ }
+
+ case value_t::number_integer:
+ {
+ dump_integer(val.m_value.number_integer);
+ return;
+ }
+
+ case value_t::number_unsigned:
+ {
+ dump_integer(val.m_value.number_unsigned);
+ return;
+ }
+
+ case value_t::number_float:
+ {
+ dump_float(val.m_value.number_float);
+ return;
+ }
+
+ case value_t::discarded:
+ {
+ o->write_characters("<discarded>", 11);
+ return;
+ }
+
+ case value_t::null:
+ {
+ o->write_characters("null", 4);
+ return;
+ }
+
+ default: // LCOV_EXCL_LINE
+ assert(false); // LCOV_EXCL_LINE
+ }
+ }
+
+ private:
+ /*!
+ @brief dump escaped string
+
+ Escape a string by replacing certain special characters by a sequence of an
+ escape character (backslash) and another character and other control
+ characters by a sequence of "\u" followed by a four-digit hex
+ representation. The escaped string is written to output stream @a o.
+
+ @param[in] s the string to escape
+ @param[in] ensure_ascii whether to escape non-ASCII characters with
+ \uXXXX sequences
+
+ @complexity Linear in the length of string @a s.
+ */
+ void dump_escaped(const string_t& s, const bool ensure_ascii)
+ {
+ std::uint32_t codepoint;
+ std::uint8_t state = UTF8_ACCEPT;
+ std::size_t bytes = 0; // number of bytes written to string_buffer
+
+ // number of bytes written at the point of the last valid byte
+ std::size_t bytes_after_last_accept = 0;
+ std::size_t undumped_chars = 0;
+
+ for (std::size_t i = 0; i < s.size(); ++i)
+ {
+ const auto byte = static_cast<uint8_t>(s[i]);
+
+ switch (decode(state, codepoint, byte))
+ {
+ case UTF8_ACCEPT: // decode found a new code point
+ {
+ switch (codepoint)
+ {
+ case 0x08: // backspace
+ {
+ string_buffer[bytes++] = '\\';
+ string_buffer[bytes++] = 'b';
+ break;
+ }
+
+ case 0x09: // horizontal tab
+ {
+ string_buffer[bytes++] = '\\';
+ string_buffer[bytes++] = 't';
+ break;
+ }
+
+ case 0x0A: // newline
+ {
+ string_buffer[bytes++] = '\\';
+ string_buffer[bytes++] = 'n';
+ break;
+ }
+
+ case 0x0C: // formfeed
+ {
+ string_buffer[bytes++] = '\\';
+ string_buffer[bytes++] = 'f';
+ break;
+ }
+
+ case 0x0D: // carriage return
+ {
+ string_buffer[bytes++] = '\\';
+ string_buffer[bytes++] = 'r';
+ break;
+ }
+
+ case 0x22: // quotation mark
+ {
+ string_buffer[bytes++] = '\\';
+ string_buffer[bytes++] = '\"';
+ break;
+ }
+
+ case 0x5C: // reverse solidus
+ {
+ string_buffer[bytes++] = '\\';
+ string_buffer[bytes++] = '\\';
+ break;
+ }
+
+ default:
+ {
+ // escape control characters (0x00..0x1F) or, if
+ // ensure_ascii parameter is used, non-ASCII characters
+ if ((codepoint <= 0x1F) or (ensure_ascii and (codepoint >= 0x7F)))
+ {
+ if (codepoint <= 0xFFFF)
+ {
+ (std::snprintf)(string_buffer.data() + bytes, 7, "\\u%04x",
+ static_cast<std::uint16_t>(codepoint));
+ bytes += 6;
+ }
+ else
+ {
+ (std::snprintf)(string_buffer.data() + bytes, 13, "\\u%04x\\u%04x",
+ static_cast<std::uint16_t>(0xD7C0u + (codepoint >> 10u)),
+ static_cast<std::uint16_t>(0xDC00u + (codepoint & 0x3FFu)));
+ bytes += 12;
+ }
+ }
+ else
+ {
+ // copy byte to buffer (all previous bytes
+ // been copied have in default case above)
+ string_buffer[bytes++] = s[i];
+ }
+ break;
+ }
+ }
+
+ // write buffer and reset index; there must be 13 bytes
+ // left, as this is the maximal number of bytes to be
+ // written ("\uxxxx\uxxxx\0") for one code point
+ if (string_buffer.size() - bytes < 13)
+ {
+ o->write_characters(string_buffer.data(), bytes);
+ bytes = 0;
+ }
+
+ // remember the byte position of this accept
+ bytes_after_last_accept = bytes;
+ undumped_chars = 0;
+ break;
+ }
+
+ case UTF8_REJECT: // decode found invalid UTF-8 byte
+ {
+ switch (error_handler)
+ {
+ case error_handler_t::strict:
+ {
+ std::string sn(3, '\0');
+ (std::snprintf)(&sn[0], sn.size(), "%.2X", byte);
+ JSON_THROW(type_error::create(316, "invalid UTF-8 byte at index " + std::to_string(i) + ": 0x" + sn));
+ }
+
+ case error_handler_t::ignore:
+ case error_handler_t::replace:
+ {
+ // in case we saw this character the first time, we
+ // would like to read it again, because the byte
+ // may be OK for itself, but just not OK for the
+ // previous sequence
+ if (undumped_chars > 0)
+ {
+ --i;
+ }
+
+ // reset length buffer to the last accepted index;
+ // thus removing/ignoring the invalid characters
+ bytes = bytes_after_last_accept;
+
+ if (error_handler == error_handler_t::replace)
+ {
+ // add a replacement character
+ if (ensure_ascii)
+ {
+ string_buffer[bytes++] = '\\';
+ string_buffer[bytes++] = 'u';
+ string_buffer[bytes++] = 'f';
+ string_buffer[bytes++] = 'f';
+ string_buffer[bytes++] = 'f';
+ string_buffer[bytes++] = 'd';
+ }
+ else
+ {
+ string_buffer[bytes++] = detail::binary_writer<BasicJsonType, char>::to_char_type('\xEF');
+ string_buffer[bytes++] = detail::binary_writer<BasicJsonType, char>::to_char_type('\xBF');
+ string_buffer[bytes++] = detail::binary_writer<BasicJsonType, char>::to_char_type('\xBD');
+ }
+
+ // write buffer and reset index; there must be 13 bytes
+ // left, as this is the maximal number of bytes to be
+ // written ("\uxxxx\uxxxx\0") for one code point
+ if (string_buffer.size() - bytes < 13)
+ {
+ o->write_characters(string_buffer.data(), bytes);
+ bytes = 0;
+ }
+
+ bytes_after_last_accept = bytes;
+ }
+
+ undumped_chars = 0;
+
+ // continue processing the string
+ state = UTF8_ACCEPT;
+ break;
+ }
+
+ default: // LCOV_EXCL_LINE
+ assert(false); // LCOV_EXCL_LINE
+ }
+ break;
+ }
+
+ default: // decode found yet incomplete multi-byte code point
+ {
+ if (not ensure_ascii)
+ {
+ // code point will not be escaped - copy byte to buffer
+ string_buffer[bytes++] = s[i];
+ }
+ ++undumped_chars;
+ break;
+ }
+ }
+ }
+
+ // we finished processing the string
+ if (JSON_LIKELY(state == UTF8_ACCEPT))
+ {
+ // write buffer
+ if (bytes > 0)
+ {
+ o->write_characters(string_buffer.data(), bytes);
+ }
+ }
+ else
+ {
+ // we finish reading, but do not accept: string was incomplete
+ switch (error_handler)
+ {
+ case error_handler_t::strict:
+ {
+ std::string sn(3, '\0');
+ (std::snprintf)(&sn[0], sn.size(), "%.2X", static_cast<std::uint8_t>(s.back()));
+ JSON_THROW(type_error::create(316, "incomplete UTF-8 string; last byte: 0x" + sn));
+ }
+
+ case error_handler_t::ignore:
+ {
+ // write all accepted bytes
+ o->write_characters(string_buffer.data(), bytes_after_last_accept);
+ break;
+ }
+
+ case error_handler_t::replace:
+ {
+ // write all accepted bytes
+ o->write_characters(string_buffer.data(), bytes_after_last_accept);
+ // add a replacement character
+ if (ensure_ascii)
+ {
+ o->write_characters("\\ufffd", 6);
+ }
+ else
+ {
+ o->write_characters("\xEF\xBF\xBD", 3);
+ }
+ break;
+ }
+
+ default: // LCOV_EXCL_LINE
+ assert(false); // LCOV_EXCL_LINE
+ }
+ }
+ }
+
+ /*!
+ @brief count digits
+
+ Count the number of decimal (base 10) digits for an input unsigned integer.
+
+ @param[in] x unsigned integer number to count its digits
+ @return number of decimal digits
+ */
+ inline unsigned int count_digits(number_unsigned_t x) noexcept
+ {
+ unsigned int n_digits = 1;
+ for (;;)
+ {
+ if (x < 10)
+ {
+ return n_digits;
+ }
+ if (x < 100)
+ {
+ return n_digits + 1;
+ }
+ if (x < 1000)
+ {
+ return n_digits + 2;
+ }
+ if (x < 10000)
+ {
+ return n_digits + 3;
+ }
+ x = x / 10000u;
+ n_digits += 4;
+ }
+ }
+
+ /*!
+ @brief dump an integer
+
+ Dump a given integer to output stream @a o. Works internally with
+ @a number_buffer.
+
+ @param[in] x integer number (signed or unsigned) to dump
+ @tparam NumberType either @a number_integer_t or @a number_unsigned_t
+ */
+ template<typename NumberType, detail::enable_if_t<
+ std::is_same<NumberType, number_unsigned_t>::value or
+ std::is_same<NumberType, number_integer_t>::value,
+ int> = 0>
+ void dump_integer(NumberType x)
+ {
+ static constexpr std::array<std::array<char, 2>, 100> digits_to_99
+ {
+ {
+ {{'0', '0'}}, {{'0', '1'}}, {{'0', '2'}}, {{'0', '3'}}, {{'0', '4'}}, {{'0', '5'}}, {{'0', '6'}}, {{'0', '7'}}, {{'0', '8'}}, {{'0', '9'}},
+ {{'1', '0'}}, {{'1', '1'}}, {{'1', '2'}}, {{'1', '3'}}, {{'1', '4'}}, {{'1', '5'}}, {{'1', '6'}}, {{'1', '7'}}, {{'1', '8'}}, {{'1', '9'}},
+ {{'2', '0'}}, {{'2', '1'}}, {{'2', '2'}}, {{'2', '3'}}, {{'2', '4'}}, {{'2', '5'}}, {{'2', '6'}}, {{'2', '7'}}, {{'2', '8'}}, {{'2', '9'}},
+ {{'3', '0'}}, {{'3', '1'}}, {{'3', '2'}}, {{'3', '3'}}, {{'3', '4'}}, {{'3', '5'}}, {{'3', '6'}}, {{'3', '7'}}, {{'3', '8'}}, {{'3', '9'}},
+ {{'4', '0'}}, {{'4', '1'}}, {{'4', '2'}}, {{'4', '3'}}, {{'4', '4'}}, {{'4', '5'}}, {{'4', '6'}}, {{'4', '7'}}, {{'4', '8'}}, {{'4', '9'}},
+ {{'5', '0'}}, {{'5', '1'}}, {{'5', '2'}}, {{'5', '3'}}, {{'5', '4'}}, {{'5', '5'}}, {{'5', '6'}}, {{'5', '7'}}, {{'5', '8'}}, {{'5', '9'}},
+ {{'6', '0'}}, {{'6', '1'}}, {{'6', '2'}}, {{'6', '3'}}, {{'6', '4'}}, {{'6', '5'}}, {{'6', '6'}}, {{'6', '7'}}, {{'6', '8'}}, {{'6', '9'}},
+ {{'7', '0'}}, {{'7', '1'}}, {{'7', '2'}}, {{'7', '3'}}, {{'7', '4'}}, {{'7', '5'}}, {{'7', '6'}}, {{'7', '7'}}, {{'7', '8'}}, {{'7', '9'}},
+ {{'8', '0'}}, {{'8', '1'}}, {{'8', '2'}}, {{'8', '3'}}, {{'8', '4'}}, {{'8', '5'}}, {{'8', '6'}}, {{'8', '7'}}, {{'8', '8'}}, {{'8', '9'}},
+ {{'9', '0'}}, {{'9', '1'}}, {{'9', '2'}}, {{'9', '3'}}, {{'9', '4'}}, {{'9', '5'}}, {{'9', '6'}}, {{'9', '7'}}, {{'9', '8'}}, {{'9', '9'}},
+ }
+ };
+
+ // special case for "0"
+ if (x == 0)
+ {
+ o->write_character('0');
+ return;
+ }
+
+ // use a pointer to fill the buffer
+ auto buffer_ptr = number_buffer.begin();
+
+ const bool is_negative = std::is_same<NumberType, number_integer_t>::value and not(x >= 0); // see issue #755
+ number_unsigned_t abs_value;
+
+ unsigned int n_chars;
+
+ if (is_negative)
+ {
+ *buffer_ptr = '-';
+ abs_value = static_cast<number_unsigned_t>(std::abs(static_cast<std::intmax_t>(x)));
+
+ // account one more byte for the minus sign
+ n_chars = 1 + count_digits(abs_value);
+ }
+ else
+ {
+ abs_value = static_cast<number_unsigned_t>(x);
+ n_chars = count_digits(abs_value);
+ }
+
+ // spare 1 byte for '\0'
+ assert(n_chars < number_buffer.size() - 1);
+
+ // jump to the end to generate the string from backward
+ // so we later avoid reversing the result
+ buffer_ptr += n_chars;
+
+ // Fast int2ascii implementation inspired by "Fastware" talk by Andrei Alexandrescu
+ // See: https://www.youtube.com/watch?v=o4-CwDo2zpg
+ while (abs_value >= 100)
+ {
+ const auto digits_index = static_cast<unsigned>((abs_value % 100));
+ abs_value /= 100;
+ *(--buffer_ptr) = digits_to_99[digits_index][1];
+ *(--buffer_ptr) = digits_to_99[digits_index][0];
+ }
+
+ if (abs_value >= 10)
+ {
+ const auto digits_index = static_cast<unsigned>(abs_value);
+ *(--buffer_ptr) = digits_to_99[digits_index][1];
+ *(--buffer_ptr) = digits_to_99[digits_index][0];
+ }
+ else
+ {
+ *(--buffer_ptr) = static_cast<char>('0' + abs_value);
+ }
+
+ o->write_characters(number_buffer.data(), n_chars);
+ }
+
+ /*!
+ @brief dump a floating-point number
+
+ Dump a given floating-point number to output stream @a o. Works internally
+ with @a number_buffer.
+
+ @param[in] x floating-point number to dump
+ */
+ void dump_float(number_float_t x)
+ {
+ // NaN / inf
+ if (not std::isfinite(x))
+ {
+ o->write_characters("null", 4);
+ return;
+ }
+
+ // If number_float_t is an IEEE-754 single or double precision number,
+ // use the Grisu2 algorithm to produce short numbers which are
+ // guaranteed to round-trip, using strtof and strtod, resp.
+ //
+ // NB: The test below works if <long double> == <double>.
+ static constexpr bool is_ieee_single_or_double
+ = (std::numeric_limits<number_float_t>::is_iec559 and std::numeric_limits<number_float_t>::digits == 24 and std::numeric_limits<number_float_t>::max_exponent == 128) or
+ (std::numeric_limits<number_float_t>::is_iec559 and std::numeric_limits<number_float_t>::digits == 53 and std::numeric_limits<number_float_t>::max_exponent == 1024);
+
+ dump_float(x, std::integral_constant<bool, is_ieee_single_or_double>());
+ }
+
+ void dump_float(number_float_t x, std::true_type /*is_ieee_single_or_double*/)
+ {
+ char* begin = number_buffer.data();
+ char* end = ::nlohmann::detail::to_chars(begin, begin + number_buffer.size(), x);
+
+ o->write_characters(begin, static_cast<size_t>(end - begin));
+ }
+
+ void dump_float(number_float_t x, std::false_type /*is_ieee_single_or_double*/)
+ {
+ // get number of digits for a float -> text -> float round-trip
+ static constexpr auto d = std::numeric_limits<number_float_t>::max_digits10;
+
+ // the actual conversion
+ std::ptrdiff_t len = (std::snprintf)(number_buffer.data(), number_buffer.size(), "%.*g", d, x);
+
+ // negative value indicates an error
+ assert(len > 0);
+ // check if buffer was large enough
+ assert(static_cast<std::size_t>(len) < number_buffer.size());
+
+ // erase thousands separator
+ if (thousands_sep != '\0')
+ {
+ const auto end = std::remove(number_buffer.begin(),
+ number_buffer.begin() + len, thousands_sep);
+ std::fill(end, number_buffer.end(), '\0');
+ assert((end - number_buffer.begin()) <= len);
+ len = (end - number_buffer.begin());
+ }
+
+ // convert decimal point to '.'
+ if (decimal_point != '\0' and decimal_point != '.')
+ {
+ const auto dec_pos = std::find(number_buffer.begin(), number_buffer.end(), decimal_point);
+ if (dec_pos != number_buffer.end())
+ {
+ *dec_pos = '.';
+ }
+ }
+
+ o->write_characters(number_buffer.data(), static_cast<std::size_t>(len));
+
+ // determine if need to append ".0"
+ const bool value_is_int_like =
+ std::none_of(number_buffer.begin(), number_buffer.begin() + len + 1,
+ [](char c)
+ {
+ return c == '.' or c == 'e';
+ });
+
+ if (value_is_int_like)
+ {
+ o->write_characters(".0", 2);
+ }
+ }
+
+ /*!
+ @brief check whether a string is UTF-8 encoded
+
+ The function checks each byte of a string whether it is UTF-8 encoded. The
+ result of the check is stored in the @a state parameter. The function must
+ be called initially with state 0 (accept). State 1 means the string must
+ be rejected, because the current byte is not allowed. If the string is
+ completely processed, but the state is non-zero, the string ended
+ prematurely; that is, the last byte indicated more bytes should have
+ followed.
+
+ @param[in,out] state the state of the decoding
+ @param[in,out] codep codepoint (valid only if resulting state is UTF8_ACCEPT)
+ @param[in] byte next byte to decode
+ @return new state
+
+ @note The function has been edited: a std::array is used.
+
+ @copyright Copyright (c) 2008-2009 Bjoern Hoehrmann <bjoern@hoehrmann.de>
+ @sa http://bjoern.hoehrmann.de/utf-8/decoder/dfa/
+ */
+ static std::uint8_t decode(std::uint8_t& state, std::uint32_t& codep, const std::uint8_t byte) noexcept
+ {
+ static const std::array<std::uint8_t, 400> utf8d =
+ {
+ {
+ 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
+ 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
+ 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
+ 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
+ 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
+ 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
+ 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
+ 0xA, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, // E0..EF
+ 0xB, 0x6, 0x6, 0x6, 0x5, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, // F0..FF
+ 0x0, 0x1, 0x2, 0x3, 0x5, 0x8, 0x7, 0x1, 0x1, 0x1, 0x4, 0x6, 0x1, 0x1, 0x1, 0x1, // s0..s0
+ 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
+ 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
+ 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
+ 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
+ }
+ };
+
+ const std::uint8_t type = utf8d[byte];
+
+ codep = (state != UTF8_ACCEPT)
+ ? (byte & 0x3fu) | (codep << 6u)
+ : (0xFFu >> type) & (byte);
+
+ state = utf8d[256u + state * 16u + type];
+ return state;
+ }
+
+ private:
+ /// the output of the serializer
+ output_adapter_t<char> o = nullptr;
+
+ /// a (hopefully) large enough character buffer
+ std::array<char, 64> number_buffer{{}};
+
+ /// the locale
+ const std::lconv* loc = nullptr;
+ /// the locale's thousand separator character
+ const char thousands_sep = '\0';
+ /// the locale's decimal point character
+ const char decimal_point = '\0';
+
+ /// string buffer
+ std::array<char, 512> string_buffer{{}};
+
+ /// the indentation character
+ const char indent_char;
+ /// the indentation string
+ string_t indent_string;
+
+ /// error_handler how to react on decoding errors
+ const error_handler_t error_handler;
+};
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/detail/value_t.hpp>
+
+// #include <nlohmann/json_fwd.hpp>
+
+
+/*!
+@brief namespace for Niels Lohmann
+@see https://github.com/nlohmann
+@since version 1.0.0
+*/
+namespace nlohmann
+{
+
+/*!
+@brief a class to store JSON values
+
+@tparam ObjectType type for JSON objects (`std::map` by default; will be used
+in @ref object_t)
+@tparam ArrayType type for JSON arrays (`std::vector` by default; will be used
+in @ref array_t)
+@tparam StringType type for JSON strings and object keys (`std::string` by
+default; will be used in @ref string_t)
+@tparam BooleanType type for JSON booleans (`bool` by default; will be used
+in @ref boolean_t)
+@tparam NumberIntegerType type for JSON integer numbers (`int64_t` by
+default; will be used in @ref number_integer_t)
+@tparam NumberUnsignedType type for JSON unsigned integer numbers (@c
+`uint64_t` by default; will be used in @ref number_unsigned_t)
+@tparam NumberFloatType type for JSON floating-point numbers (`double` by
+default; will be used in @ref number_float_t)
+@tparam AllocatorType type of the allocator to use (`std::allocator` by
+default)
+@tparam JSONSerializer the serializer to resolve internal calls to `to_json()`
+and `from_json()` (@ref adl_serializer by default)
+
+@requirement The class satisfies the following concept requirements:
+- Basic
+ - [DefaultConstructible](https://en.cppreference.com/w/cpp/named_req/DefaultConstructible):
+ JSON values can be default constructed. The result will be a JSON null
+ value.
+ - [MoveConstructible](https://en.cppreference.com/w/cpp/named_req/MoveConstructible):
+ A JSON value can be constructed from an rvalue argument.
+ - [CopyConstructible](https://en.cppreference.com/w/cpp/named_req/CopyConstructible):
+ A JSON value can be copy-constructed from an lvalue expression.
+ - [MoveAssignable](https://en.cppreference.com/w/cpp/named_req/MoveAssignable):
+ A JSON value van be assigned from an rvalue argument.
+ - [CopyAssignable](https://en.cppreference.com/w/cpp/named_req/CopyAssignable):
+ A JSON value can be copy-assigned from an lvalue expression.
+ - [Destructible](https://en.cppreference.com/w/cpp/named_req/Destructible):
+ JSON values can be destructed.
+- Layout
+ - [StandardLayoutType](https://en.cppreference.com/w/cpp/named_req/StandardLayoutType):
+ JSON values have
+ [standard layout](https://en.cppreference.com/w/cpp/language/data_members#Standard_layout):
+ All non-static data members are private and standard layout types, the
+ class has no virtual functions or (virtual) base classes.
+- Library-wide
+ - [EqualityComparable](https://en.cppreference.com/w/cpp/named_req/EqualityComparable):
+ JSON values can be compared with `==`, see @ref
+ operator==(const_reference,const_reference).
+ - [LessThanComparable](https://en.cppreference.com/w/cpp/named_req/LessThanComparable):
+ JSON values can be compared with `<`, see @ref
+ operator<(const_reference,const_reference).
+ - [Swappable](https://en.cppreference.com/w/cpp/named_req/Swappable):
+ Any JSON lvalue or rvalue of can be swapped with any lvalue or rvalue of
+ other compatible types, using unqualified function call @ref swap().
+ - [NullablePointer](https://en.cppreference.com/w/cpp/named_req/NullablePointer):
+ JSON values can be compared against `std::nullptr_t` objects which are used
+ to model the `null` value.
+- Container
+ - [Container](https://en.cppreference.com/w/cpp/named_req/Container):
+ JSON values can be used like STL containers and provide iterator access.
+ - [ReversibleContainer](https://en.cppreference.com/w/cpp/named_req/ReversibleContainer);
+ JSON values can be used like STL containers and provide reverse iterator
+ access.
+
+@invariant The member variables @a m_value and @a m_type have the following
+relationship:
+- If `m_type == value_t::object`, then `m_value.object != nullptr`.
+- If `m_type == value_t::array`, then `m_value.array != nullptr`.
+- If `m_type == value_t::string`, then `m_value.string != nullptr`.
+The invariants are checked by member function assert_invariant().
+
+@internal
+@note ObjectType trick from http://stackoverflow.com/a/9860911
+@endinternal
+
+@see [RFC 7159: The JavaScript Object Notation (JSON) Data Interchange
+Format](http://rfc7159.net/rfc7159)
+
+@since version 1.0.0
+
+@nosubgrouping
+*/
+NLOHMANN_BASIC_JSON_TPL_DECLARATION
+class basic_json
+{
+ private:
+ template<detail::value_t> friend struct detail::external_constructor;
+ friend ::nlohmann::json_pointer<basic_json>;
+ friend ::nlohmann::detail::parser<basic_json>;
+ friend ::nlohmann::detail::serializer<basic_json>;
+ template<typename BasicJsonType>
+ friend class ::nlohmann::detail::iter_impl;
+ template<typename BasicJsonType, typename CharType>
+ friend class ::nlohmann::detail::binary_writer;
+ template<typename BasicJsonType, typename SAX>
+ friend class ::nlohmann::detail::binary_reader;
+ template<typename BasicJsonType>
+ friend class ::nlohmann::detail::json_sax_dom_parser;
+ template<typename BasicJsonType>
+ friend class ::nlohmann::detail::json_sax_dom_callback_parser;
+
+ /// workaround type for MSVC
+ using basic_json_t = NLOHMANN_BASIC_JSON_TPL;
+
+ // convenience aliases for types residing in namespace detail;
+ using lexer = ::nlohmann::detail::lexer<basic_json>;
+ using parser = ::nlohmann::detail::parser<basic_json>;
+
+ using primitive_iterator_t = ::nlohmann::detail::primitive_iterator_t;
+ template<typename BasicJsonType>
+ using internal_iterator = ::nlohmann::detail::internal_iterator<BasicJsonType>;
+ template<typename BasicJsonType>
+ using iter_impl = ::nlohmann::detail::iter_impl<BasicJsonType>;
+ template<typename Iterator>
+ using iteration_proxy = ::nlohmann::detail::iteration_proxy<Iterator>;
+ template<typename Base> using json_reverse_iterator = ::nlohmann::detail::json_reverse_iterator<Base>;
+
+ template<typename CharType>
+ using output_adapter_t = ::nlohmann::detail::output_adapter_t<CharType>;
+
+ using binary_reader = ::nlohmann::detail::binary_reader<basic_json>;
+ template<typename CharType> using binary_writer = ::nlohmann::detail::binary_writer<basic_json, CharType>;
+
+ using serializer = ::nlohmann::detail::serializer<basic_json>;
+
+ public:
+ using value_t = detail::value_t;
+ /// JSON Pointer, see @ref nlohmann::json_pointer
+ using json_pointer = ::nlohmann::json_pointer<basic_json>;
+ template<typename T, typename SFINAE>
+ using json_serializer = JSONSerializer<T, SFINAE>;
+ /// how to treat decoding errors
+ using error_handler_t = detail::error_handler_t;
+ /// helper type for initializer lists of basic_json values
+ using initializer_list_t = std::initializer_list<detail::json_ref<basic_json>>;
+
+ using input_format_t = detail::input_format_t;
+ /// SAX interface type, see @ref nlohmann::json_sax
+ using json_sax_t = json_sax<basic_json>;
+
+ ////////////////
+ // exceptions //
+ ////////////////
+
+ /// @name exceptions
+ /// Classes to implement user-defined exceptions.
+ /// @{
+
+ /// @copydoc detail::exception
+ using exception = detail::exception;
+ /// @copydoc detail::parse_error
+ using parse_error = detail::parse_error;
+ /// @copydoc detail::invalid_iterator
+ using invalid_iterator = detail::invalid_iterator;
+ /// @copydoc detail::type_error
+ using type_error = detail::type_error;
+ /// @copydoc detail::out_of_range
+ using out_of_range = detail::out_of_range;
+ /// @copydoc detail::other_error
+ using other_error = detail::other_error;
+
+ /// @}
+
+
+ /////////////////////
+ // container types //
+ /////////////////////
+
+ /// @name container types
+ /// The canonic container types to use @ref basic_json like any other STL
+ /// container.
+ /// @{
+
+ /// the type of elements in a basic_json container
+ using value_type = basic_json;
+
+ /// the type of an element reference
+ using reference = value_type&;
+ /// the type of an element const reference
+ using const_reference = const value_type&;
+
+ /// a type to represent differences between iterators
+ using difference_type = std::ptrdiff_t;
+ /// a type to represent container sizes
+ using size_type = std::size_t;
+
+ /// the allocator type
+ using allocator_type = AllocatorType<basic_json>;
+
+ /// the type of an element pointer
+ using pointer = typename std::allocator_traits<allocator_type>::pointer;
+ /// the type of an element const pointer
+ using const_pointer = typename std::allocator_traits<allocator_type>::const_pointer;
+
+ /// an iterator for a basic_json container
+ using iterator = iter_impl<basic_json>;
+ /// a const iterator for a basic_json container
+ using const_iterator = iter_impl<const basic_json>;
+ /// a reverse iterator for a basic_json container
+ using reverse_iterator = json_reverse_iterator<typename basic_json::iterator>;
+ /// a const reverse iterator for a basic_json container
+ using const_reverse_iterator = json_reverse_iterator<typename basic_json::const_iterator>;
+
+ /// @}
+
+
+ /*!
+ @brief returns the allocator associated with the container
+ */
+ static allocator_type get_allocator()
+ {
+ return allocator_type();
+ }
+
+ /*!
+ @brief returns version information on the library
+
+ This function returns a JSON object with information about the library,
+ including the version number and information on the platform and compiler.
+
+ @return JSON object holding version information
+ key | description
+ ----------- | ---------------
+ `compiler` | Information on the used compiler. It is an object with the following keys: `c++` (the used C++ standard), `family` (the compiler family; possible values are `clang`, `icc`, `gcc`, `ilecpp`, `msvc`, `pgcpp`, `sunpro`, and `unknown`), and `version` (the compiler version).
+ `copyright` | The copyright line for the library as string.
+ `name` | The name of the library as string.
+ `platform` | The used platform as string. Possible values are `win32`, `linux`, `apple`, `unix`, and `unknown`.
+ `url` | The URL of the project as string.
+ `version` | The version of the library. It is an object with the following keys: `major`, `minor`, and `patch` as defined by [Semantic Versioning](http://semver.org), and `string` (the version string).
+
+ @liveexample{The following code shows an example output of the `meta()`
+ function.,meta}
+
+ @exceptionsafety Strong guarantee: if an exception is thrown, there are no
+ changes to any JSON value.
+
+ @complexity Constant.
+
+ @since 2.1.0
+ */
+ JSON_NODISCARD
+ static basic_json meta()
+ {
+ basic_json result;
+
+ result["copyright"] = "(C) 2013-2017 Niels Lohmann";
+ result["name"] = "JSON for Modern C++";
+ result["url"] = "https://github.com/nlohmann/json";
+ result["version"]["string"] =
+ std::to_string(NLOHMANN_JSON_VERSION_MAJOR) + "." +
+ std::to_string(NLOHMANN_JSON_VERSION_MINOR) + "." +
+ std::to_string(NLOHMANN_JSON_VERSION_PATCH);
+ result["version"]["major"] = NLOHMANN_JSON_VERSION_MAJOR;
+ result["version"]["minor"] = NLOHMANN_JSON_VERSION_MINOR;
+ result["version"]["patch"] = NLOHMANN_JSON_VERSION_PATCH;
+
+#ifdef _WIN32
+ result["platform"] = "win32";
+#elif defined __linux__
+ result["platform"] = "linux";
+#elif defined __APPLE__
+ result["platform"] = "apple";
+#elif defined __unix__
+ result["platform"] = "unix";
+#else
+ result["platform"] = "unknown";
+#endif
+
+#if defined(__ICC) || defined(__INTEL_COMPILER)
+ result["compiler"] = {{"family", "icc"}, {"version", __INTEL_COMPILER}};
+#elif defined(__clang__)
+ result["compiler"] = {{"family", "clang"}, {"version", __clang_version__}};
+#elif defined(__GNUC__) || defined(__GNUG__)
+ result["compiler"] = {{"family", "gcc"}, {"version", std::to_string(__GNUC__) + "." + std::to_string(__GNUC_MINOR__) + "." + std::to_string(__GNUC_PATCHLEVEL__)}};
+#elif defined(__HP_cc) || defined(__HP_aCC)
+ result["compiler"] = "hp"
+#elif defined(__IBMCPP__)
+ result["compiler"] = {{"family", "ilecpp"}, {"version", __IBMCPP__}};
+#elif defined(_MSC_VER)
+ result["compiler"] = {{"family", "msvc"}, {"version", _MSC_VER}};
+#elif defined(__PGI)
+ result["compiler"] = {{"family", "pgcpp"}, {"version", __PGI}};
+#elif defined(__SUNPRO_CC)
+ result["compiler"] = {{"family", "sunpro"}, {"version", __SUNPRO_CC}};
+#else
+ result["compiler"] = {{"family", "unknown"}, {"version", "unknown"}};
+#endif
+
+#ifdef __cplusplus
+ result["compiler"]["c++"] = std::to_string(__cplusplus);
+#else
+ result["compiler"]["c++"] = "unknown";
+#endif
+ return result;
+ }
+
+
+ ///////////////////////////
+ // JSON value data types //
+ ///////////////////////////
+
+ /// @name JSON value data types
+ /// The data types to store a JSON value. These types are derived from
+ /// the template arguments passed to class @ref basic_json.
+ /// @{
+
+#if defined(JSON_HAS_CPP_14)
+ // Use transparent comparator if possible, combined with perfect forwarding
+ // on find() and count() calls prevents unnecessary string construction.
+ using object_comparator_t = std::less<>;
+#else
+ using object_comparator_t = std::less<StringType>;
+#endif
+
+ /*!
+ @brief a type for an object
+
+ [RFC 7159](http://rfc7159.net/rfc7159) describes JSON objects as follows:
+ > An object is an unordered collection of zero or more name/value pairs,
+ > where a name is a string and a value is a string, number, boolean, null,
+ > object, or array.
+
+ To store objects in C++, a type is defined by the template parameters
+ described below.
+
+ @tparam ObjectType the container to store objects (e.g., `std::map` or
+ `std::unordered_map`)
+ @tparam StringType the type of the keys or names (e.g., `std::string`).
+ The comparison function `std::less<StringType>` is used to order elements
+ inside the container.
+ @tparam AllocatorType the allocator to use for objects (e.g.,
+ `std::allocator`)
+
+ #### Default type
+
+ With the default values for @a ObjectType (`std::map`), @a StringType
+ (`std::string`), and @a AllocatorType (`std::allocator`), the default
+ value for @a object_t is:
+
+ @code {.cpp}
+ std::map<
+ std::string, // key_type
+ basic_json, // value_type
+ std::less<std::string>, // key_compare
+ std::allocator<std::pair<const std::string, basic_json>> // allocator_type
+ >
+ @endcode
+
+ #### Behavior
+
+ The choice of @a object_t influences the behavior of the JSON class. With
+ the default type, objects have the following behavior:
+
+ - When all names are unique, objects will be interoperable in the sense
+ that all software implementations receiving that object will agree on
+ the name-value mappings.
+ - When the names within an object are not unique, it is unspecified which
+ one of the values for a given key will be chosen. For instance,
+ `{"key": 2, "key": 1}` could be equal to either `{"key": 1}` or
+ `{"key": 2}`.
+ - Internally, name/value pairs are stored in lexicographical order of the
+ names. Objects will also be serialized (see @ref dump) in this order.
+ For instance, `{"b": 1, "a": 2}` and `{"a": 2, "b": 1}` will be stored
+ and serialized as `{"a": 2, "b": 1}`.
+ - When comparing objects, the order of the name/value pairs is irrelevant.
+ This makes objects interoperable in the sense that they will not be
+ affected by these differences. For instance, `{"b": 1, "a": 2}` and
+ `{"a": 2, "b": 1}` will be treated as equal.
+
+ #### Limits
+
+ [RFC 7159](http://rfc7159.net/rfc7159) specifies:
+ > An implementation may set limits on the maximum depth of nesting.
+
+ In this class, the object's limit of nesting is not explicitly constrained.
+ However, a maximum depth of nesting may be introduced by the compiler or
+ runtime environment. A theoretical limit can be queried by calling the
+ @ref max_size function of a JSON object.
+
+ #### Storage
+
+ Objects are stored as pointers in a @ref basic_json type. That is, for any
+ access to object values, a pointer of type `object_t*` must be
+ dereferenced.
+
+ @sa @ref array_t -- type for an array value
+
+ @since version 1.0.0
+
+ @note The order name/value pairs are added to the object is *not*
+ preserved by the library. Therefore, iterating an object may return
+ name/value pairs in a different order than they were originally stored. In
+ fact, keys will be traversed in alphabetical order as `std::map` with
+ `std::less` is used by default. Please note this behavior conforms to [RFC
+ 7159](http://rfc7159.net/rfc7159), because any order implements the
+ specified "unordered" nature of JSON objects.
+ */
+ using object_t = ObjectType<StringType,
+ basic_json,
+ object_comparator_t,
+ AllocatorType<std::pair<const StringType,
+ basic_json>>>;
+
+ /*!
+ @brief a type for an array
+
+ [RFC 7159](http://rfc7159.net/rfc7159) describes JSON arrays as follows:
+ > An array is an ordered sequence of zero or more values.
+
+ To store objects in C++, a type is defined by the template parameters
+ explained below.
+
+ @tparam ArrayType container type to store arrays (e.g., `std::vector` or
+ `std::list`)
+ @tparam AllocatorType allocator to use for arrays (e.g., `std::allocator`)
+
+ #### Default type
+
+ With the default values for @a ArrayType (`std::vector`) and @a
+ AllocatorType (`std::allocator`), the default value for @a array_t is:
+
+ @code {.cpp}
+ std::vector<
+ basic_json, // value_type
+ std::allocator<basic_json> // allocator_type
+ >
+ @endcode
+
+ #### Limits
+
+ [RFC 7159](http://rfc7159.net/rfc7159) specifies:
+ > An implementation may set limits on the maximum depth of nesting.
+
+ In this class, the array's limit of nesting is not explicitly constrained.
+ However, a maximum depth of nesting may be introduced by the compiler or
+ runtime environment. A theoretical limit can be queried by calling the
+ @ref max_size function of a JSON array.
+
+ #### Storage
+
+ Arrays are stored as pointers in a @ref basic_json type. That is, for any
+ access to array values, a pointer of type `array_t*` must be dereferenced.
+
+ @sa @ref object_t -- type for an object value
+
+ @since version 1.0.0
+ */
+ using array_t = ArrayType<basic_json, AllocatorType<basic_json>>;
+
+ /*!
+ @brief a type for a string
+
+ [RFC 7159](http://rfc7159.net/rfc7159) describes JSON strings as follows:
+ > A string is a sequence of zero or more Unicode characters.
+
+ To store objects in C++, a type is defined by the template parameter
+ described below. Unicode values are split by the JSON class into
+ byte-sized characters during deserialization.
+
+ @tparam StringType the container to store strings (e.g., `std::string`).
+ Note this container is used for keys/names in objects, see @ref object_t.
+
+ #### Default type
+
+ With the default values for @a StringType (`std::string`), the default
+ value for @a string_t is:
+
+ @code {.cpp}
+ std::string
+ @endcode
+
+ #### Encoding
+
+ Strings are stored in UTF-8 encoding. Therefore, functions like
+ `std::string::size()` or `std::string::length()` return the number of
+ bytes in the string rather than the number of characters or glyphs.
+
+ #### String comparison
+
+ [RFC 7159](http://rfc7159.net/rfc7159) states:
+ > Software implementations are typically required to test names of object
+ > members for equality. Implementations that transform the textual
+ > representation into sequences of Unicode code units and then perform the
+ > comparison numerically, code unit by code unit, are interoperable in the
+ > sense that implementations will agree in all cases on equality or
+ > inequality of two strings. For example, implementations that compare
+ > strings with escaped characters unconverted may incorrectly find that
+ > `"a\\b"` and `"a\u005Cb"` are not equal.
+
+ This implementation is interoperable as it does compare strings code unit
+ by code unit.
+
+ #### Storage
+
+ String values are stored as pointers in a @ref basic_json type. That is,
+ for any access to string values, a pointer of type `string_t*` must be
+ dereferenced.
+
+ @since version 1.0.0
+ */
+ using string_t = StringType;
+
+ /*!
+ @brief a type for a boolean
+
+ [RFC 7159](http://rfc7159.net/rfc7159) implicitly describes a boolean as a
+ type which differentiates the two literals `true` and `false`.
+
+ To store objects in C++, a type is defined by the template parameter @a
+ BooleanType which chooses the type to use.
+
+ #### Default type
+
+ With the default values for @a BooleanType (`bool`), the default value for
+ @a boolean_t is:
+
+ @code {.cpp}
+ bool
+ @endcode
+
+ #### Storage
+
+ Boolean values are stored directly inside a @ref basic_json type.
+
+ @since version 1.0.0
+ */
+ using boolean_t = BooleanType;
+
+ /*!
+ @brief a type for a number (integer)
+
+ [RFC 7159](http://rfc7159.net/rfc7159) describes numbers as follows:
+ > The representation of numbers is similar to that used in most
+ > programming languages. A number is represented in base 10 using decimal
+ > digits. It contains an integer component that may be prefixed with an
+ > optional minus sign, which may be followed by a fraction part and/or an
+ > exponent part. Leading zeros are not allowed. (...) Numeric values that
+ > cannot be represented in the grammar below (such as Infinity and NaN)
+ > are not permitted.
+
+ This description includes both integer and floating-point numbers.
+ However, C++ allows more precise storage if it is known whether the number
+ is a signed integer, an unsigned integer or a floating-point number.
+ Therefore, three different types, @ref number_integer_t, @ref
+ number_unsigned_t and @ref number_float_t are used.
+
+ To store integer numbers in C++, a type is defined by the template
+ parameter @a NumberIntegerType which chooses the type to use.
+
+ #### Default type
+
+ With the default values for @a NumberIntegerType (`int64_t`), the default
+ value for @a number_integer_t is:
+
+ @code {.cpp}
+ int64_t
+ @endcode
+
+ #### Default behavior
+
+ - The restrictions about leading zeros is not enforced in C++. Instead,
+ leading zeros in integer literals lead to an interpretation as octal
+ number. Internally, the value will be stored as decimal number. For
+ instance, the C++ integer literal `010` will be serialized to `8`.
+ During deserialization, leading zeros yield an error.
+ - Not-a-number (NaN) values will be serialized to `null`.
+
+ #### Limits
+
+ [RFC 7159](http://rfc7159.net/rfc7159) specifies:
+ > An implementation may set limits on the range and precision of numbers.
+
+ When the default type is used, the maximal integer number that can be
+ stored is `9223372036854775807` (INT64_MAX) and the minimal integer number
+ that can be stored is `-9223372036854775808` (INT64_MIN). Integer numbers
+ that are out of range will yield over/underflow when used in a
+ constructor. During deserialization, too large or small integer numbers
+ will be automatically be stored as @ref number_unsigned_t or @ref
+ number_float_t.
+
+ [RFC 7159](http://rfc7159.net/rfc7159) further states:
+ > Note that when such software is used, numbers that are integers and are
+ > in the range \f$[-2^{53}+1, 2^{53}-1]\f$ are interoperable in the sense
+ > that implementations will agree exactly on their numeric values.
+
+ As this range is a subrange of the exactly supported range [INT64_MIN,
+ INT64_MAX], this class's integer type is interoperable.
+
+ #### Storage
+
+ Integer number values are stored directly inside a @ref basic_json type.
+
+ @sa @ref number_float_t -- type for number values (floating-point)
+
+ @sa @ref number_unsigned_t -- type for number values (unsigned integer)
+
+ @since version 1.0.0
+ */
+ using number_integer_t = NumberIntegerType;
+
+ /*!
+ @brief a type for a number (unsigned)
+
+ [RFC 7159](http://rfc7159.net/rfc7159) describes numbers as follows:
+ > The representation of numbers is similar to that used in most
+ > programming languages. A number is represented in base 10 using decimal
+ > digits. It contains an integer component that may be prefixed with an
+ > optional minus sign, which may be followed by a fraction part and/or an
+ > exponent part. Leading zeros are not allowed. (...) Numeric values that
+ > cannot be represented in the grammar below (such as Infinity and NaN)
+ > are not permitted.
+
+ This description includes both integer and floating-point numbers.
+ However, C++ allows more precise storage if it is known whether the number
+ is a signed integer, an unsigned integer or a floating-point number.
+ Therefore, three different types, @ref number_integer_t, @ref
+ number_unsigned_t and @ref number_float_t are used.
+
+ To store unsigned integer numbers in C++, a type is defined by the
+ template parameter @a NumberUnsignedType which chooses the type to use.
+
+ #### Default type
+
+ With the default values for @a NumberUnsignedType (`uint64_t`), the
+ default value for @a number_unsigned_t is:
+
+ @code {.cpp}
+ uint64_t
+ @endcode
+
+ #### Default behavior
+
+ - The restrictions about leading zeros is not enforced in C++. Instead,
+ leading zeros in integer literals lead to an interpretation as octal
+ number. Internally, the value will be stored as decimal number. For
+ instance, the C++ integer literal `010` will be serialized to `8`.
+ During deserialization, leading zeros yield an error.
+ - Not-a-number (NaN) values will be serialized to `null`.
+
+ #### Limits
+
+ [RFC 7159](http://rfc7159.net/rfc7159) specifies:
+ > An implementation may set limits on the range and precision of numbers.
+
+ When the default type is used, the maximal integer number that can be
+ stored is `18446744073709551615` (UINT64_MAX) and the minimal integer
+ number that can be stored is `0`. Integer numbers that are out of range
+ will yield over/underflow when used in a constructor. During
+ deserialization, too large or small integer numbers will be automatically
+ be stored as @ref number_integer_t or @ref number_float_t.
+
+ [RFC 7159](http://rfc7159.net/rfc7159) further states:
+ > Note that when such software is used, numbers that are integers and are
+ > in the range \f$[-2^{53}+1, 2^{53}-1]\f$ are interoperable in the sense
+ > that implementations will agree exactly on their numeric values.
+
+ As this range is a subrange (when considered in conjunction with the
+ number_integer_t type) of the exactly supported range [0, UINT64_MAX],
+ this class's integer type is interoperable.
+
+ #### Storage
+
+ Integer number values are stored directly inside a @ref basic_json type.
+
+ @sa @ref number_float_t -- type for number values (floating-point)
+ @sa @ref number_integer_t -- type for number values (integer)
+
+ @since version 2.0.0
+ */
+ using number_unsigned_t = NumberUnsignedType;
+
+ /*!
+ @brief a type for a number (floating-point)
+
+ [RFC 7159](http://rfc7159.net/rfc7159) describes numbers as follows:
+ > The representation of numbers is similar to that used in most
+ > programming languages. A number is represented in base 10 using decimal
+ > digits. It contains an integer component that may be prefixed with an
+ > optional minus sign, which may be followed by a fraction part and/or an
+ > exponent part. Leading zeros are not allowed. (...) Numeric values that
+ > cannot be represented in the grammar below (such as Infinity and NaN)
+ > are not permitted.
+
+ This description includes both integer and floating-point numbers.
+ However, C++ allows more precise storage if it is known whether the number
+ is a signed integer, an unsigned integer or a floating-point number.
+ Therefore, three different types, @ref number_integer_t, @ref
+ number_unsigned_t and @ref number_float_t are used.
+
+ To store floating-point numbers in C++, a type is defined by the template
+ parameter @a NumberFloatType which chooses the type to use.
+
+ #### Default type
+
+ With the default values for @a NumberFloatType (`double`), the default
+ value for @a number_float_t is:
+
+ @code {.cpp}
+ double
+ @endcode
+
+ #### Default behavior
+
+ - The restrictions about leading zeros is not enforced in C++. Instead,
+ leading zeros in floating-point literals will be ignored. Internally,
+ the value will be stored as decimal number. For instance, the C++
+ floating-point literal `01.2` will be serialized to `1.2`. During
+ deserialization, leading zeros yield an error.
+ - Not-a-number (NaN) values will be serialized to `null`.
+
+ #### Limits
+
+ [RFC 7159](http://rfc7159.net/rfc7159) states:
+ > This specification allows implementations to set limits on the range and
+ > precision of numbers accepted. Since software that implements IEEE
+ > 754-2008 binary64 (double precision) numbers is generally available and
+ > widely used, good interoperability can be achieved by implementations
+ > that expect no more precision or range than these provide, in the sense
+ > that implementations will approximate JSON numbers within the expected
+ > precision.
+
+ This implementation does exactly follow this approach, as it uses double
+ precision floating-point numbers. Note values smaller than
+ `-1.79769313486232e+308` and values greater than `1.79769313486232e+308`
+ will be stored as NaN internally and be serialized to `null`.
+
+ #### Storage
+
+ Floating-point number values are stored directly inside a @ref basic_json
+ type.
+
+ @sa @ref number_integer_t -- type for number values (integer)
+
+ @sa @ref number_unsigned_t -- type for number values (unsigned integer)
+
+ @since version 1.0.0
+ */
+ using number_float_t = NumberFloatType;
+
+ /// @}
+
+ private:
+
+ /// helper for exception-safe object creation
+ template<typename T, typename... Args>
+ static T* create(Args&& ... args)
+ {
+ AllocatorType<T> alloc;
+ using AllocatorTraits = std::allocator_traits<AllocatorType<T>>;
+
+ auto deleter = [&](T * object)
+ {
+ AllocatorTraits::deallocate(alloc, object, 1);
+ };
+ std::unique_ptr<T, decltype(deleter)> object(AllocatorTraits::allocate(alloc, 1), deleter);
+ AllocatorTraits::construct(alloc, object.get(), std::forward<Args>(args)...);
+ assert(object != nullptr);
+ return object.release();
+ }
+
+ ////////////////////////
+ // JSON value storage //
+ ////////////////////////
+
+ /*!
+ @brief a JSON value
+
+ The actual storage for a JSON value of the @ref basic_json class. This
+ union combines the different storage types for the JSON value types
+ defined in @ref value_t.
+
+ JSON type | value_t type | used type
+ --------- | --------------- | ------------------------
+ object | object | pointer to @ref object_t
+ array | array | pointer to @ref array_t
+ string | string | pointer to @ref string_t
+ boolean | boolean | @ref boolean_t
+ number | number_integer | @ref number_integer_t
+ number | number_unsigned | @ref number_unsigned_t
+ number | number_float | @ref number_float_t
+ null | null | *no value is stored*
+
+ @note Variable-length types (objects, arrays, and strings) are stored as
+ pointers. The size of the union should not exceed 64 bits if the default
+ value types are used.
+
+ @since version 1.0.0
+ */
+ union json_value
+ {
+ /// object (stored with pointer to save storage)
+ object_t* object;
+ /// array (stored with pointer to save storage)
+ array_t* array;
+ /// string (stored with pointer to save storage)
+ string_t* string;
+ /// boolean
+ boolean_t boolean;
+ /// number (integer)
+ number_integer_t number_integer;
+ /// number (unsigned integer)
+ number_unsigned_t number_unsigned;
+ /// number (floating-point)
+ number_float_t number_float;
+
+ /// default constructor (for null values)
+ json_value() = default;
+ /// constructor for booleans
+ json_value(boolean_t v) noexcept : boolean(v) {}
+ /// constructor for numbers (integer)
+ json_value(number_integer_t v) noexcept : number_integer(v) {}
+ /// constructor for numbers (unsigned)
+ json_value(number_unsigned_t v) noexcept : number_unsigned(v) {}
+ /// constructor for numbers (floating-point)
+ json_value(number_float_t v) noexcept : number_float(v) {}
+ /// constructor for empty values of a given type
+ json_value(value_t t)
+ {
+ switch (t)
+ {
+ case value_t::object:
+ {
+ object = create<object_t>();
+ break;
+ }
+
+ case value_t::array:
+ {
+ array = create<array_t>();
+ break;
+ }
+
+ case value_t::string:
+ {
+ string = create<string_t>("");
+ break;
+ }
+
+ case value_t::boolean:
+ {
+ boolean = boolean_t(false);
+ break;
+ }
+
+ case value_t::number_integer:
+ {
+ number_integer = number_integer_t(0);
+ break;
+ }
+
+ case value_t::number_unsigned:
+ {
+ number_unsigned = number_unsigned_t(0);
+ break;
+ }
+
+ case value_t::number_float:
+ {
+ number_float = number_float_t(0.0);
+ break;
+ }
+
+ case value_t::null:
+ {
+ object = nullptr; // silence warning, see #821
+ break;
+ }
+
+ default:
+ {
+ object = nullptr; // silence warning, see #821
+ if (JSON_UNLIKELY(t == value_t::null))
+ {
+ JSON_THROW(other_error::create(500, "961c151d2e87f2686a955a9be24d316f1362bf21 3.6.1")); // LCOV_EXCL_LINE
+ }
+ break;
+ }
+ }
+ }
+
+ /// constructor for strings
+ json_value(const string_t& value)
+ {
+ string = create<string_t>(value);
+ }
+
+ /// constructor for rvalue strings
+ json_value(string_t&& value)
+ {
+ string = create<string_t>(std::move(value));
+ }
+
+ /// constructor for objects
+ json_value(const object_t& value)
+ {
+ object = create<object_t>(value);
+ }
+
+ /// constructor for rvalue objects
+ json_value(object_t&& value)
+ {
+ object = create<object_t>(std::move(value));
+ }
+
+ /// constructor for arrays
+ json_value(const array_t& value)
+ {
+ array = create<array_t>(value);
+ }
+
+ /// constructor for rvalue arrays
+ json_value(array_t&& value)
+ {
+ array = create<array_t>(std::move(value));
+ }
+
+ void destroy(value_t t) noexcept
+ {
+ switch (t)
+ {
+ case value_t::object:
+ {
+ AllocatorType<object_t> alloc;
+ std::allocator_traits<decltype(alloc)>::destroy(alloc, object);
+ std::allocator_traits<decltype(alloc)>::deallocate(alloc, object, 1);
+ break;
+ }
+
+ case value_t::array:
+ {
+ AllocatorType<array_t> alloc;
+ std::allocator_traits<decltype(alloc)>::destroy(alloc, array);
+ std::allocator_traits<decltype(alloc)>::deallocate(alloc, array, 1);
+ break;
+ }
+
+ case value_t::string:
+ {
+ AllocatorType<string_t> alloc;
+ std::allocator_traits<decltype(alloc)>::destroy(alloc, string);
+ std::allocator_traits<decltype(alloc)>::deallocate(alloc, string, 1);
+ break;
+ }
+
+ default:
+ {
+ break;
+ }
+ }
+ }
+ };
+
+ /*!
+ @brief checks the class invariants
+
+ This function asserts the class invariants. It needs to be called at the
+ end of every constructor to make sure that created objects respect the
+ invariant. Furthermore, it has to be called each time the type of a JSON
+ value is changed, because the invariant expresses a relationship between
+ @a m_type and @a m_value.
+ */
+ void assert_invariant() const noexcept
+ {
+ assert(m_type != value_t::object or m_value.object != nullptr);
+ assert(m_type != value_t::array or m_value.array != nullptr);
+ assert(m_type != value_t::string or m_value.string != nullptr);
+ }
+
+ public:
+ //////////////////////////
+ // JSON parser callback //
+ //////////////////////////
+
+ /*!
+ @brief parser event types
+
+ The parser callback distinguishes the following events:
+ - `object_start`: the parser read `{` and started to process a JSON object
+ - `key`: the parser read a key of a value in an object
+ - `object_end`: the parser read `}` and finished processing a JSON object
+ - `array_start`: the parser read `[` and started to process a JSON array
+ - `array_end`: the parser read `]` and finished processing a JSON array
+ - `value`: the parser finished reading a JSON value
+
+ @image html callback_events.png "Example when certain parse events are triggered"
+
+ @sa @ref parser_callback_t for more information and examples
+ */
+ using parse_event_t = typename parser::parse_event_t;
+
+ /*!
+ @brief per-element parser callback type
+
+ With a parser callback function, the result of parsing a JSON text can be
+ influenced. When passed to @ref parse, it is called on certain events
+ (passed as @ref parse_event_t via parameter @a event) with a set recursion
+ depth @a depth and context JSON value @a parsed. The return value of the
+ callback function is a boolean indicating whether the element that emitted
+ the callback shall be kept or not.
+
+ We distinguish six scenarios (determined by the event type) in which the
+ callback function can be called. The following table describes the values
+ of the parameters @a depth, @a event, and @a parsed.
+
+ parameter @a event | description | parameter @a depth | parameter @a parsed
+ ------------------ | ----------- | ------------------ | -------------------
+ parse_event_t::object_start | the parser read `{` and started to process a JSON object | depth of the parent of the JSON object | a JSON value with type discarded
+ parse_event_t::key | the parser read a key of a value in an object | depth of the currently parsed JSON object | a JSON string containing the key
+ parse_event_t::object_end | the parser read `}` and finished processing a JSON object | depth of the parent of the JSON object | the parsed JSON object
+ parse_event_t::array_start | the parser read `[` and started to process a JSON array | depth of the parent of the JSON array | a JSON value with type discarded
+ parse_event_t::array_end | the parser read `]` and finished processing a JSON array | depth of the parent of the JSON array | the parsed JSON array
+ parse_event_t::value | the parser finished reading a JSON value | depth of the value | the parsed JSON value
+
+ @image html callback_events.png "Example when certain parse events are triggered"
+
+ Discarding a value (i.e., returning `false`) has different effects
+ depending on the context in which function was called:
+
+ - Discarded values in structured types are skipped. That is, the parser
+ will behave as if the discarded value was never read.
+ - In case a value outside a structured type is skipped, it is replaced
+ with `null`. This case happens if the top-level element is skipped.
+
+ @param[in] depth the depth of the recursion during parsing
+
+ @param[in] event an event of type parse_event_t indicating the context in
+ the callback function has been called
+
+ @param[in,out] parsed the current intermediate parse result; note that
+ writing to this value has no effect for parse_event_t::key events
+
+ @return Whether the JSON value which called the function during parsing
+ should be kept (`true`) or not (`false`). In the latter case, it is either
+ skipped completely or replaced by an empty discarded object.
+
+ @sa @ref parse for examples
+
+ @since version 1.0.0
+ */
+ using parser_callback_t = typename parser::parser_callback_t;
+
+ //////////////////
+ // constructors //
+ //////////////////
+
+ /// @name constructors and destructors
+ /// Constructors of class @ref basic_json, copy/move constructor, copy
+ /// assignment, static functions creating objects, and the destructor.
+ /// @{
+
+ /*!
+ @brief create an empty value with a given type
+
+ Create an empty JSON value with a given type. The value will be default
+ initialized with an empty value which depends on the type:
+
+ Value type | initial value
+ ----------- | -------------
+ null | `null`
+ boolean | `false`
+ string | `""`
+ number | `0`
+ object | `{}`
+ array | `[]`
+
+ @param[in] v the type of the value to create
+
+ @complexity Constant.
+
+ @exceptionsafety Strong guarantee: if an exception is thrown, there are no
+ changes to any JSON value.
+
+ @liveexample{The following code shows the constructor for different @ref
+ value_t values,basic_json__value_t}
+
+ @sa @ref clear() -- restores the postcondition of this constructor
+
+ @since version 1.0.0
+ */
+ basic_json(const value_t v)
+ : m_type(v), m_value(v)
+ {
+ assert_invariant();
+ }
+
+ /*!
+ @brief create a null object
+
+ Create a `null` JSON value. It either takes a null pointer as parameter
+ (explicitly creating `null`) or no parameter (implicitly creating `null`).
+ The passed null pointer itself is not read -- it is only used to choose
+ the right constructor.
+
+ @complexity Constant.
+
+ @exceptionsafety No-throw guarantee: this constructor never throws
+ exceptions.
+
+ @liveexample{The following code shows the constructor with and without a
+ null pointer parameter.,basic_json__nullptr_t}
+
+ @since version 1.0.0
+ */
+ basic_json(std::nullptr_t = nullptr) noexcept
+ : basic_json(value_t::null)
+ {
+ assert_invariant();
+ }
+
+ /*!
+ @brief create a JSON value
+
+ This is a "catch all" constructor for all compatible JSON types; that is,
+ types for which a `to_json()` method exists. The constructor forwards the
+ parameter @a val to that method (to `json_serializer<U>::to_json` method
+ with `U = uncvref_t<CompatibleType>`, to be exact).
+
+ Template type @a CompatibleType includes, but is not limited to, the
+ following types:
+ - **arrays**: @ref array_t and all kinds of compatible containers such as
+ `std::vector`, `std::deque`, `std::list`, `std::forward_list`,
+ `std::array`, `std::valarray`, `std::set`, `std::unordered_set`,
+ `std::multiset`, and `std::unordered_multiset` with a `value_type` from
+ which a @ref basic_json value can be constructed.
+ - **objects**: @ref object_t and all kinds of compatible associative
+ containers such as `std::map`, `std::unordered_map`, `std::multimap`,
+ and `std::unordered_multimap` with a `key_type` compatible to
+ @ref string_t and a `value_type` from which a @ref basic_json value can
+ be constructed.
+ - **strings**: @ref string_t, string literals, and all compatible string
+ containers can be used.
+ - **numbers**: @ref number_integer_t, @ref number_unsigned_t,
+ @ref number_float_t, and all convertible number types such as `int`,
+ `size_t`, `int64_t`, `float` or `double` can be used.
+ - **boolean**: @ref boolean_t / `bool` can be used.
+
+ See the examples below.
+
+ @tparam CompatibleType a type such that:
+ - @a CompatibleType is not derived from `std::istream`,
+ - @a CompatibleType is not @ref basic_json (to avoid hijacking copy/move
+ constructors),
+ - @a CompatibleType is not a different @ref basic_json type (i.e. with different template arguments)
+ - @a CompatibleType is not a @ref basic_json nested type (e.g.,
+ @ref json_pointer, @ref iterator, etc ...)
+ - @ref @ref json_serializer<U> has a
+ `to_json(basic_json_t&, CompatibleType&&)` method
+
+ @tparam U = `uncvref_t<CompatibleType>`
+
+ @param[in] val the value to be forwarded to the respective constructor
+
+ @complexity Usually linear in the size of the passed @a val, also
+ depending on the implementation of the called `to_json()`
+ method.
+
+ @exceptionsafety Depends on the called constructor. For types directly
+ supported by the library (i.e., all types for which no `to_json()` function
+ was provided), strong guarantee holds: if an exception is thrown, there are
+ no changes to any JSON value.
+
+ @liveexample{The following code shows the constructor with several
+ compatible types.,basic_json__CompatibleType}
+
+ @since version 2.1.0
+ */
+ template <typename CompatibleType,
+ typename U = detail::uncvref_t<CompatibleType>,
+ detail::enable_if_t<
+ not detail::is_basic_json<U>::value and detail::is_compatible_type<basic_json_t, U>::value, int> = 0>
+ basic_json(CompatibleType && val) noexcept(noexcept(
+ JSONSerializer<U>::to_json(std::declval<basic_json_t&>(),
+ std::forward<CompatibleType>(val))))
+ {
+ JSONSerializer<U>::to_json(*this, std::forward<CompatibleType>(val));
+ assert_invariant();
+ }
+
+ /*!
+ @brief create a JSON value from an existing one
+
+ This is a constructor for existing @ref basic_json types.
+ It does not hijack copy/move constructors, since the parameter has different
+ template arguments than the current ones.
+
+ The constructor tries to convert the internal @ref m_value of the parameter.
+
+ @tparam BasicJsonType a type such that:
+ - @a BasicJsonType is a @ref basic_json type.
+ - @a BasicJsonType has different template arguments than @ref basic_json_t.
+
+ @param[in] val the @ref basic_json value to be converted.
+
+ @complexity Usually linear in the size of the passed @a val, also
+ depending on the implementation of the called `to_json()`
+ method.
+
+ @exceptionsafety Depends on the called constructor. For types directly
+ supported by the library (i.e., all types for which no `to_json()` function
+ was provided), strong guarantee holds: if an exception is thrown, there are
+ no changes to any JSON value.
+
+ @since version 3.2.0
+ */
+ template <typename BasicJsonType,
+ detail::enable_if_t<
+ detail::is_basic_json<BasicJsonType>::value and not std::is_same<basic_json, BasicJsonType>::value, int> = 0>
+ basic_json(const BasicJsonType& val)
+ {
+ using other_boolean_t = typename BasicJsonType::boolean_t;
+ using other_number_float_t = typename BasicJsonType::number_float_t;
+ using other_number_integer_t = typename BasicJsonType::number_integer_t;
+ using other_number_unsigned_t = typename BasicJsonType::number_unsigned_t;
+ using other_string_t = typename BasicJsonType::string_t;
+ using other_object_t = typename BasicJsonType::object_t;
+ using other_array_t = typename BasicJsonType::array_t;
+
+ switch (val.type())
+ {
+ case value_t::boolean:
+ JSONSerializer<other_boolean_t>::to_json(*this, val.template get<other_boolean_t>());
+ break;
+ case value_t::number_float:
+ JSONSerializer<other_number_float_t>::to_json(*this, val.template get<other_number_float_t>());
+ break;
+ case value_t::number_integer:
+ JSONSerializer<other_number_integer_t>::to_json(*this, val.template get<other_number_integer_t>());
+ break;
+ case value_t::number_unsigned:
+ JSONSerializer<other_number_unsigned_t>::to_json(*this, val.template get<other_number_unsigned_t>());
+ break;
+ case value_t::string:
+ JSONSerializer<other_string_t>::to_json(*this, val.template get_ref<const other_string_t&>());
+ break;
+ case value_t::object:
+ JSONSerializer<other_object_t>::to_json(*this, val.template get_ref<const other_object_t&>());
+ break;
+ case value_t::array:
+ JSONSerializer<other_array_t>::to_json(*this, val.template get_ref<const other_array_t&>());
+ break;
+ case value_t::null:
+ *this = nullptr;
+ break;
+ case value_t::discarded:
+ m_type = value_t::discarded;
+ break;
+ default: // LCOV_EXCL_LINE
+ assert(false); // LCOV_EXCL_LINE
+ }
+ assert_invariant();
+ }
+
+ /*!
+ @brief create a container (array or object) from an initializer list
+
+ Creates a JSON value of type array or object from the passed initializer
+ list @a init. In case @a type_deduction is `true` (default), the type of
+ the JSON value to be created is deducted from the initializer list @a init
+ according to the following rules:
+
+ 1. If the list is empty, an empty JSON object value `{}` is created.
+ 2. If the list consists of pairs whose first element is a string, a JSON
+ object value is created where the first elements of the pairs are
+ treated as keys and the second elements are as values.
+ 3. In all other cases, an array is created.
+
+ The rules aim to create the best fit between a C++ initializer list and
+ JSON values. The rationale is as follows:
+
+ 1. The empty initializer list is written as `{}` which is exactly an empty
+ JSON object.
+ 2. C++ has no way of describing mapped types other than to list a list of
+ pairs. As JSON requires that keys must be of type string, rule 2 is the
+ weakest constraint one can pose on initializer lists to interpret them
+ as an object.
+ 3. In all other cases, the initializer list could not be interpreted as
+ JSON object type, so interpreting it as JSON array type is safe.
+
+ With the rules described above, the following JSON values cannot be
+ expressed by an initializer list:
+
+ - the empty array (`[]`): use @ref array(initializer_list_t)
+ with an empty initializer list in this case
+ - arrays whose elements satisfy rule 2: use @ref
+ array(initializer_list_t) with the same initializer list
+ in this case
+
+ @note When used without parentheses around an empty initializer list, @ref
+ basic_json() is called instead of this function, yielding the JSON null
+ value.
+
+ @param[in] init initializer list with JSON values
+
+ @param[in] type_deduction internal parameter; when set to `true`, the type
+ of the JSON value is deducted from the initializer list @a init; when set
+ to `false`, the type provided via @a manual_type is forced. This mode is
+ used by the functions @ref array(initializer_list_t) and
+ @ref object(initializer_list_t).
+
+ @param[in] manual_type internal parameter; when @a type_deduction is set
+ to `false`, the created JSON value will use the provided type (only @ref
+ value_t::array and @ref value_t::object are valid); when @a type_deduction
+ is set to `true`, this parameter has no effect
+
+ @throw type_error.301 if @a type_deduction is `false`, @a manual_type is
+ `value_t::object`, but @a init contains an element which is not a pair
+ whose first element is a string. In this case, the constructor could not
+ create an object. If @a type_deduction would have be `true`, an array
+ would have been created. See @ref object(initializer_list_t)
+ for an example.
+
+ @complexity Linear in the size of the initializer list @a init.
+
+ @exceptionsafety Strong guarantee: if an exception is thrown, there are no
+ changes to any JSON value.
+
+ @liveexample{The example below shows how JSON values are created from
+ initializer lists.,basic_json__list_init_t}
+
+ @sa @ref array(initializer_list_t) -- create a JSON array
+ value from an initializer list
+ @sa @ref object(initializer_list_t) -- create a JSON object
+ value from an initializer list
+
+ @since version 1.0.0
+ */
+ basic_json(initializer_list_t init,
+ bool type_deduction = true,
+ value_t manual_type = value_t::array)
+ {
+ // check if each element is an array with two elements whose first
+ // element is a string
+ bool is_an_object = std::all_of(init.begin(), init.end(),
+ [](const detail::json_ref<basic_json>& element_ref)
+ {
+ return element_ref->is_array() and element_ref->size() == 2 and (*element_ref)[0].is_string();
+ });
+
+ // adjust type if type deduction is not wanted
+ if (not type_deduction)
+ {
+ // if array is wanted, do not create an object though possible
+ if (manual_type == value_t::array)
+ {
+ is_an_object = false;
+ }
+
+ // if object is wanted but impossible, throw an exception
+ if (JSON_UNLIKELY(manual_type == value_t::object and not is_an_object))
+ {
+ JSON_THROW(type_error::create(301, "cannot create object from initializer list"));
+ }
+ }
+
+ if (is_an_object)
+ {
+ // the initializer list is a list of pairs -> create object
+ m_type = value_t::object;
+ m_value = value_t::object;
+
+ std::for_each(init.begin(), init.end(), [this](const detail::json_ref<basic_json>& element_ref)
+ {
+ auto element = element_ref.moved_or_copied();
+ m_value.object->emplace(
+ std::move(*((*element.m_value.array)[0].m_value.string)),
+ std::move((*element.m_value.array)[1]));
+ });
+ }
+ else
+ {
+ // the initializer list describes an array -> create array
+ m_type = value_t::array;
+ m_value.array = create<array_t>(init.begin(), init.end());
+ }
+
+ assert_invariant();
+ }
+
+ /*!
+ @brief explicitly create an array from an initializer list
+
+ Creates a JSON array value from a given initializer list. That is, given a
+ list of values `a, b, c`, creates the JSON value `[a, b, c]`. If the
+ initializer list is empty, the empty array `[]` is created.
+
+ @note This function is only needed to express two edge cases that cannot
+ be realized with the initializer list constructor (@ref
+ basic_json(initializer_list_t, bool, value_t)). These cases
+ are:
+ 1. creating an array whose elements are all pairs whose first element is a
+ string -- in this case, the initializer list constructor would create an
+ object, taking the first elements as keys
+ 2. creating an empty array -- passing the empty initializer list to the
+ initializer list constructor yields an empty object
+
+ @param[in] init initializer list with JSON values to create an array from
+ (optional)
+
+ @return JSON array value
+
+ @complexity Linear in the size of @a init.
+
+ @exceptionsafety Strong guarantee: if an exception is thrown, there are no
+ changes to any JSON value.
+
+ @liveexample{The following code shows an example for the `array`
+ function.,array}
+
+ @sa @ref basic_json(initializer_list_t, bool, value_t) --
+ create a JSON value from an initializer list
+ @sa @ref object(initializer_list_t) -- create a JSON object
+ value from an initializer list
+
+ @since version 1.0.0
+ */
+ JSON_NODISCARD
+ static basic_json array(initializer_list_t init = {})
+ {
+ return basic_json(init, false, value_t::array);
+ }
+
+ /*!
+ @brief explicitly create an object from an initializer list
+
+ Creates a JSON object value from a given initializer list. The initializer
+ lists elements must be pairs, and their first elements must be strings. If
+ the initializer list is empty, the empty object `{}` is created.
+
+ @note This function is only added for symmetry reasons. In contrast to the
+ related function @ref array(initializer_list_t), there are
+ no cases which can only be expressed by this function. That is, any
+ initializer list @a init can also be passed to the initializer list
+ constructor @ref basic_json(initializer_list_t, bool, value_t).
+
+ @param[in] init initializer list to create an object from (optional)
+
+ @return JSON object value
+
+ @throw type_error.301 if @a init is not a list of pairs whose first
+ elements are strings. In this case, no object can be created. When such a
+ value is passed to @ref basic_json(initializer_list_t, bool, value_t),
+ an array would have been created from the passed initializer list @a init.
+ See example below.
+
+ @complexity Linear in the size of @a init.
+
+ @exceptionsafety Strong guarantee: if an exception is thrown, there are no
+ changes to any JSON value.
+
+ @liveexample{The following code shows an example for the `object`
+ function.,object}
+
+ @sa @ref basic_json(initializer_list_t, bool, value_t) --
+ create a JSON value from an initializer list
+ @sa @ref array(initializer_list_t) -- create a JSON array
+ value from an initializer list
+
+ @since version 1.0.0
+ */
+ JSON_NODISCARD
+ static basic_json object(initializer_list_t init = {})
+ {
+ return basic_json(init, false, value_t::object);
+ }
+
+ /*!
+ @brief construct an array with count copies of given value
+
+ Constructs a JSON array value by creating @a cnt copies of a passed value.
+ In case @a cnt is `0`, an empty array is created.
+
+ @param[in] cnt the number of JSON copies of @a val to create
+ @param[in] val the JSON value to copy
+
+ @post `std::distance(begin(),end()) == cnt` holds.
+
+ @complexity Linear in @a cnt.
+
+ @exceptionsafety Strong guarantee: if an exception is thrown, there are no
+ changes to any JSON value.
+
+ @liveexample{The following code shows examples for the @ref
+ basic_json(size_type\, const basic_json&)
+ constructor.,basic_json__size_type_basic_json}
+
+ @since version 1.0.0
+ */
+ basic_json(size_type cnt, const basic_json& val)
+ : m_type(value_t::array)
+ {
+ m_value.array = create<array_t>(cnt, val);
+ assert_invariant();
+ }
+
+ /*!
+ @brief construct a JSON container given an iterator range
+
+ Constructs the JSON value with the contents of the range `[first, last)`.
+ The semantics depends on the different types a JSON value can have:
+ - In case of a null type, invalid_iterator.206 is thrown.
+ - In case of other primitive types (number, boolean, or string), @a first
+ must be `begin()` and @a last must be `end()`. In this case, the value is
+ copied. Otherwise, invalid_iterator.204 is thrown.
+ - In case of structured types (array, object), the constructor behaves as
+ similar versions for `std::vector` or `std::map`; that is, a JSON array
+ or object is constructed from the values in the range.
+
+ @tparam InputIT an input iterator type (@ref iterator or @ref
+ const_iterator)
+
+ @param[in] first begin of the range to copy from (included)
+ @param[in] last end of the range to copy from (excluded)
+
+ @pre Iterators @a first and @a last must be initialized. **This
+ precondition is enforced with an assertion (see warning).** If
+ assertions are switched off, a violation of this precondition yields
+ undefined behavior.
+
+ @pre Range `[first, last)` is valid. Usually, this precondition cannot be
+ checked efficiently. Only certain edge cases are detected; see the
+ description of the exceptions below. A violation of this precondition
+ yields undefined behavior.
+
+ @warning A precondition is enforced with a runtime assertion that will
+ result in calling `std::abort` if this precondition is not met.
+ Assertions can be disabled by defining `NDEBUG` at compile time.
+ See https://en.cppreference.com/w/cpp/error/assert for more
+ information.
+
+ @throw invalid_iterator.201 if iterators @a first and @a last are not
+ compatible (i.e., do not belong to the same JSON value). In this case,
+ the range `[first, last)` is undefined.
+ @throw invalid_iterator.204 if iterators @a first and @a last belong to a
+ primitive type (number, boolean, or string), but @a first does not point
+ to the first element any more. In this case, the range `[first, last)` is
+ undefined. See example code below.
+ @throw invalid_iterator.206 if iterators @a first and @a last belong to a
+ null value. In this case, the range `[first, last)` is undefined.
+
+ @complexity Linear in distance between @a first and @a last.
+
+ @exceptionsafety Strong guarantee: if an exception is thrown, there are no
+ changes to any JSON value.
+
+ @liveexample{The example below shows several ways to create JSON values by
+ specifying a subrange with iterators.,basic_json__InputIt_InputIt}
+
+ @since version 1.0.0
+ */
+ template<class InputIT, typename std::enable_if<
+ std::is_same<InputIT, typename basic_json_t::iterator>::value or
+ std::is_same<InputIT, typename basic_json_t::const_iterator>::value, int>::type = 0>
+ basic_json(InputIT first, InputIT last)
+ {
+ assert(first.m_object != nullptr);
+ assert(last.m_object != nullptr);
+
+ // make sure iterator fits the current value
+ if (JSON_UNLIKELY(first.m_object != last.m_object))
+ {
+ JSON_THROW(invalid_iterator::create(201, "iterators are not compatible"));
+ }
+
+ // copy type from first iterator
+ m_type = first.m_object->m_type;
+
+ // check if iterator range is complete for primitive values
+ switch (m_type)
+ {
+ case value_t::boolean:
+ case value_t::number_float:
+ case value_t::number_integer:
+ case value_t::number_unsigned:
+ case value_t::string:
+ {
+ if (JSON_UNLIKELY(not first.m_it.primitive_iterator.is_begin()
+ or not last.m_it.primitive_iterator.is_end()))
+ {
+ JSON_THROW(invalid_iterator::create(204, "iterators out of range"));
+ }
+ break;
+ }
+
+ default:
+ break;
+ }
+
+ switch (m_type)
+ {
+ case value_t::number_integer:
+ {
+ m_value.number_integer = first.m_object->m_value.number_integer;
+ break;
+ }
+
+ case value_t::number_unsigned:
+ {
+ m_value.number_unsigned = first.m_object->m_value.number_unsigned;
+ break;
+ }
+
+ case value_t::number_float:
+ {
+ m_value.number_float = first.m_object->m_value.number_float;
+ break;
+ }
+
+ case value_t::boolean:
+ {
+ m_value.boolean = first.m_object->m_value.boolean;
+ break;
+ }
+
+ case value_t::string:
+ {
+ m_value = *first.m_object->m_value.string;
+ break;
+ }
+
+ case value_t::object:
+ {
+ m_value.object = create<object_t>(first.m_it.object_iterator,
+ last.m_it.object_iterator);
+ break;
+ }
+
+ case value_t::array:
+ {
+ m_value.array = create<array_t>(first.m_it.array_iterator,
+ last.m_it.array_iterator);
+ break;
+ }
+
+ default:
+ JSON_THROW(invalid_iterator::create(206, "cannot construct with iterators from " +
+ std::string(first.m_object->type_name())));
+ }
+
+ assert_invariant();
+ }
+
+
+ ///////////////////////////////////////
+ // other constructors and destructor //
+ ///////////////////////////////////////
+
+ /// @private
+ basic_json(const detail::json_ref<basic_json>& ref)
+ : basic_json(ref.moved_or_copied())
+ {}
+
+ /*!
+ @brief copy constructor
+
+ Creates a copy of a given JSON value.
+
+ @param[in] other the JSON value to copy
+
+ @post `*this == other`
+
+ @complexity Linear in the size of @a other.
+
+ @exceptionsafety Strong guarantee: if an exception is thrown, there are no
+ changes to any JSON value.
+
+ @requirement This function helps `basic_json` satisfying the
+ [Container](https://en.cppreference.com/w/cpp/named_req/Container)
+ requirements:
+ - The complexity is linear.
+ - As postcondition, it holds: `other == basic_json(other)`.
+
+ @liveexample{The following code shows an example for the copy
+ constructor.,basic_json__basic_json}
+
+ @since version 1.0.0
+ */
+ basic_json(const basic_json& other)
+ : m_type(other.m_type)
+ {
+ // check of passed value is valid
+ other.assert_invariant();
+
+ switch (m_type)
+ {
+ case value_t::object:
+ {
+ m_value = *other.m_value.object;
+ break;
+ }
+
+ case value_t::array:
+ {
+ m_value = *other.m_value.array;
+ break;
+ }
+
+ case value_t::string:
+ {
+ m_value = *other.m_value.string;
+ break;
+ }
+
+ case value_t::boolean:
+ {
+ m_value = other.m_value.boolean;
+ break;
+ }
+
+ case value_t::number_integer:
+ {
+ m_value = other.m_value.number_integer;
+ break;
+ }
+
+ case value_t::number_unsigned:
+ {
+ m_value = other.m_value.number_unsigned;
+ break;
+ }
+
+ case value_t::number_float:
+ {
+ m_value = other.m_value.number_float;
+ break;
+ }
+
+ default:
+ break;
+ }
+
+ assert_invariant();
+ }
+
+ /*!
+ @brief move constructor
+
+ Move constructor. Constructs a JSON value with the contents of the given
+ value @a other using move semantics. It "steals" the resources from @a
+ other and leaves it as JSON null value.
+
+ @param[in,out] other value to move to this object
+
+ @post `*this` has the same value as @a other before the call.
+ @post @a other is a JSON null value.
+
+ @complexity Constant.
+
+ @exceptionsafety No-throw guarantee: this constructor never throws
+ exceptions.
+
+ @requirement This function helps `basic_json` satisfying the
+ [MoveConstructible](https://en.cppreference.com/w/cpp/named_req/MoveConstructible)
+ requirements.
+
+ @liveexample{The code below shows the move constructor explicitly called
+ via std::move.,basic_json__moveconstructor}
+
+ @since version 1.0.0
+ */
+ basic_json(basic_json&& other) noexcept
+ : m_type(std::move(other.m_type)),
+ m_value(std::move(other.m_value))
+ {
+ // check that passed value is valid
+ other.assert_invariant();
+
+ // invalidate payload
+ other.m_type = value_t::null;
+ other.m_value = {};
+
+ assert_invariant();
+ }
+
+ /*!
+ @brief copy assignment
+
+ Copy assignment operator. Copies a JSON value via the "copy and swap"
+ strategy: It is expressed in terms of the copy constructor, destructor,
+ and the `swap()` member function.
+
+ @param[in] other value to copy from
+
+ @complexity Linear.
+
+ @requirement This function helps `basic_json` satisfying the
+ [Container](https://en.cppreference.com/w/cpp/named_req/Container)
+ requirements:
+ - The complexity is linear.
+
+ @liveexample{The code below shows and example for the copy assignment. It
+ creates a copy of value `a` which is then swapped with `b`. Finally\, the
+ copy of `a` (which is the null value after the swap) is
+ destroyed.,basic_json__copyassignment}
+
+ @since version 1.0.0
+ */
+ basic_json& operator=(basic_json other) noexcept (
+ std::is_nothrow_move_constructible<value_t>::value and
+ std::is_nothrow_move_assignable<value_t>::value and
+ std::is_nothrow_move_constructible<json_value>::value and
+ std::is_nothrow_move_assignable<json_value>::value
+ )
+ {
+ // check that passed value is valid
+ other.assert_invariant();
+
+ using std::swap;
+ swap(m_type, other.m_type);
+ swap(m_value, other.m_value);
+
+ assert_invariant();
+ return *this;
+ }
+
+ /*!
+ @brief destructor
+
+ Destroys the JSON value and frees all allocated memory.
+
+ @complexity Linear.
+
+ @requirement This function helps `basic_json` satisfying the
+ [Container](https://en.cppreference.com/w/cpp/named_req/Container)
+ requirements:
+ - The complexity is linear.
+ - All stored elements are destroyed and all memory is freed.
+
+ @since version 1.0.0
+ */
+ ~basic_json() noexcept
+ {
+ assert_invariant();
+ m_value.destroy(m_type);
+ }
+
+ /// @}
+
+ public:
+ ///////////////////////
+ // object inspection //
+ ///////////////////////
+
+ /// @name object inspection
+ /// Functions to inspect the type of a JSON value.
+ /// @{
+
+ /*!
+ @brief serialization
+
+ Serialization function for JSON values. The function tries to mimic
+ Python's `json.dumps()` function, and currently supports its @a indent
+ and @a ensure_ascii parameters.
+
+ @param[in] indent If indent is nonnegative, then array elements and object
+ members will be pretty-printed with that indent level. An indent level of
+ `0` will only insert newlines. `-1` (the default) selects the most compact
+ representation.
+ @param[in] indent_char The character to use for indentation if @a indent is
+ greater than `0`. The default is ` ` (space).
+ @param[in] ensure_ascii If @a ensure_ascii is true, all non-ASCII characters
+ in the output are escaped with `\uXXXX` sequences, and the result consists
+ of ASCII characters only.
+ @param[in] error_handler how to react on decoding errors; there are three
+ possible values: `strict` (throws and exception in case a decoding error
+ occurs; default), `replace` (replace invalid UTF-8 sequences with U+FFFD),
+ and `ignore` (ignore invalid UTF-8 sequences during serialization).
+
+ @return string containing the serialization of the JSON value
+
+ @throw type_error.316 if a string stored inside the JSON value is not
+ UTF-8 encoded
+
+ @complexity Linear.
+
+ @exceptionsafety Strong guarantee: if an exception is thrown, there are no
+ changes in the JSON value.
+
+ @liveexample{The following example shows the effect of different @a indent\,
+ @a indent_char\, and @a ensure_ascii parameters to the result of the
+ serialization.,dump}
+
+ @see https://docs.python.org/2/library/json.html#json.dump
+
+ @since version 1.0.0; indentation character @a indent_char, option
+ @a ensure_ascii and exceptions added in version 3.0.0; error
+ handlers added in version 3.4.0.
+ */
+ string_t dump(const int indent = -1,
+ const char indent_char = ' ',
+ const bool ensure_ascii = false,
+ const error_handler_t error_handler = error_handler_t::strict) const
+ {
+ string_t result;
+ serializer s(detail::output_adapter<char, string_t>(result), indent_char, error_handler);
+
+ if (indent >= 0)
+ {
+ s.dump(*this, true, ensure_ascii, static_cast<unsigned int>(indent));
+ }
+ else
+ {
+ s.dump(*this, false, ensure_ascii, 0);
+ }
+
+ return result;
+ }
+
+ /*!
+ @brief return the type of the JSON value (explicit)
+
+ Return the type of the JSON value as a value from the @ref value_t
+ enumeration.
+
+ @return the type of the JSON value
+ Value type | return value
+ ------------------------- | -------------------------
+ null | value_t::null
+ boolean | value_t::boolean
+ string | value_t::string
+ number (integer) | value_t::number_integer
+ number (unsigned integer) | value_t::number_unsigned
+ number (floating-point) | value_t::number_float
+ object | value_t::object
+ array | value_t::array
+ discarded | value_t::discarded
+
+ @complexity Constant.
+
+ @exceptionsafety No-throw guarantee: this member function never throws
+ exceptions.
+
+ @liveexample{The following code exemplifies `type()` for all JSON
+ types.,type}
+
+ @sa @ref operator value_t() -- return the type of the JSON value (implicit)
+ @sa @ref type_name() -- return the type as string
+
+ @since version 1.0.0
+ */
+ constexpr value_t type() const noexcept
+ {
+ return m_type;
+ }
+
+ /*!
+ @brief return whether type is primitive
+
+ This function returns true if and only if the JSON type is primitive
+ (string, number, boolean, or null).
+
+ @return `true` if type is primitive (string, number, boolean, or null),
+ `false` otherwise.
+
+ @complexity Constant.
+
+ @exceptionsafety No-throw guarantee: this member function never throws
+ exceptions.
+
+ @liveexample{The following code exemplifies `is_primitive()` for all JSON
+ types.,is_primitive}
+
+ @sa @ref is_structured() -- returns whether JSON value is structured
+ @sa @ref is_null() -- returns whether JSON value is `null`
+ @sa @ref is_string() -- returns whether JSON value is a string
+ @sa @ref is_boolean() -- returns whether JSON value is a boolean
+ @sa @ref is_number() -- returns whether JSON value is a number
+
+ @since version 1.0.0
+ */
+ constexpr bool is_primitive() const noexcept
+ {
+ return is_null() or is_string() or is_boolean() or is_number();
+ }
+
+ /*!
+ @brief return whether type is structured
+
+ This function returns true if and only if the JSON type is structured
+ (array or object).
+
+ @return `true` if type is structured (array or object), `false` otherwise.
+
+ @complexity Constant.
+
+ @exceptionsafety No-throw guarantee: this member function never throws
+ exceptions.
+
+ @liveexample{The following code exemplifies `is_structured()` for all JSON
+ types.,is_structured}
+
+ @sa @ref is_primitive() -- returns whether value is primitive
+ @sa @ref is_array() -- returns whether value is an array
+ @sa @ref is_object() -- returns whether value is an object
+
+ @since version 1.0.0
+ */
+ constexpr bool is_structured() const noexcept
+ {
+ return is_array() or is_object();
+ }
+
+ /*!
+ @brief return whether value is null
+
+ This function returns true if and only if the JSON value is null.
+
+ @return `true` if type is null, `false` otherwise.
+
+ @complexity Constant.
+
+ @exceptionsafety No-throw guarantee: this member function never throws
+ exceptions.
+
+ @liveexample{The following code exemplifies `is_null()` for all JSON
+ types.,is_null}
+
+ @since version 1.0.0
+ */
+ constexpr bool is_null() const noexcept
+ {
+ return m_type == value_t::null;
+ }
+
+ /*!
+ @brief return whether value is a boolean
+
+ This function returns true if and only if the JSON value is a boolean.
+
+ @return `true` if type is boolean, `false` otherwise.
+
+ @complexity Constant.
+
+ @exceptionsafety No-throw guarantee: this member function never throws
+ exceptions.
+
+ @liveexample{The following code exemplifies `is_boolean()` for all JSON
+ types.,is_boolean}
+
+ @since version 1.0.0
+ */
+ constexpr bool is_boolean() const noexcept
+ {
+ return m_type == value_t::boolean;
+ }
+
+ /*!
+ @brief return whether value is a number
+
+ This function returns true if and only if the JSON value is a number. This
+ includes both integer (signed and unsigned) and floating-point values.
+
+ @return `true` if type is number (regardless whether integer, unsigned
+ integer or floating-type), `false` otherwise.
+
+ @complexity Constant.
+
+ @exceptionsafety No-throw guarantee: this member function never throws
+ exceptions.
+
+ @liveexample{The following code exemplifies `is_number()` for all JSON
+ types.,is_number}
+
+ @sa @ref is_number_integer() -- check if value is an integer or unsigned
+ integer number
+ @sa @ref is_number_unsigned() -- check if value is an unsigned integer
+ number
+ @sa @ref is_number_float() -- check if value is a floating-point number
+
+ @since version 1.0.0
+ */
+ constexpr bool is_number() const noexcept
+ {
+ return is_number_integer() or is_number_float();
+ }
+
+ /*!
+ @brief return whether value is an integer number
+
+ This function returns true if and only if the JSON value is a signed or
+ unsigned integer number. This excludes floating-point values.
+
+ @return `true` if type is an integer or unsigned integer number, `false`
+ otherwise.
+
+ @complexity Constant.
+
+ @exceptionsafety No-throw guarantee: this member function never throws
+ exceptions.
+
+ @liveexample{The following code exemplifies `is_number_integer()` for all
+ JSON types.,is_number_integer}
+
+ @sa @ref is_number() -- check if value is a number
+ @sa @ref is_number_unsigned() -- check if value is an unsigned integer
+ number
+ @sa @ref is_number_float() -- check if value is a floating-point number
+
+ @since version 1.0.0
+ */
+ constexpr bool is_number_integer() const noexcept
+ {
+ return m_type == value_t::number_integer or m_type == value_t::number_unsigned;
+ }
+
+ /*!
+ @brief return whether value is an unsigned integer number
+
+ This function returns true if and only if the JSON value is an unsigned
+ integer number. This excludes floating-point and signed integer values.
+
+ @return `true` if type is an unsigned integer number, `false` otherwise.
+
+ @complexity Constant.
+
+ @exceptionsafety No-throw guarantee: this member function never throws
+ exceptions.
+
+ @liveexample{The following code exemplifies `is_number_unsigned()` for all
+ JSON types.,is_number_unsigned}
+
+ @sa @ref is_number() -- check if value is a number
+ @sa @ref is_number_integer() -- check if value is an integer or unsigned
+ integer number
+ @sa @ref is_number_float() -- check if value is a floating-point number
+
+ @since version 2.0.0
+ */
+ constexpr bool is_number_unsigned() const noexcept
+ {
+ return m_type == value_t::number_unsigned;
+ }
+
+ /*!
+ @brief return whether value is a floating-point number
+
+ This function returns true if and only if the JSON value is a
+ floating-point number. This excludes signed and unsigned integer values.
+
+ @return `true` if type is a floating-point number, `false` otherwise.
+
+ @complexity Constant.
+
+ @exceptionsafety No-throw guarantee: this member function never throws
+ exceptions.
+
+ @liveexample{The following code exemplifies `is_number_float()` for all
+ JSON types.,is_number_float}
+
+ @sa @ref is_number() -- check if value is number
+ @sa @ref is_number_integer() -- check if value is an integer number
+ @sa @ref is_number_unsigned() -- check if value is an unsigned integer
+ number
+
+ @since version 1.0.0
+ */
+ constexpr bool is_number_float() const noexcept
+ {
+ return m_type == value_t::number_float;
+ }
+
+ /*!
+ @brief return whether value is an object
+
+ This function returns true if and only if the JSON value is an object.
+
+ @return `true` if type is object, `false` otherwise.
+
+ @complexity Constant.
+
+ @exceptionsafety No-throw guarantee: this member function never throws
+ exceptions.
+
+ @liveexample{The following code exemplifies `is_object()` for all JSON
+ types.,is_object}
+
+ @since version 1.0.0
+ */
+ constexpr bool is_object() const noexcept
+ {
+ return m_type == value_t::object;
+ }
+
+ /*!
+ @brief return whether value is an array
+
+ This function returns true if and only if the JSON value is an array.
+
+ @return `true` if type is array, `false` otherwise.
+
+ @complexity Constant.
+
+ @exceptionsafety No-throw guarantee: this member function never throws
+ exceptions.
+
+ @liveexample{The following code exemplifies `is_array()` for all JSON
+ types.,is_array}
+
+ @since version 1.0.0
+ */
+ constexpr bool is_array() const noexcept
+ {
+ return m_type == value_t::array;
+ }
+
+ /*!
+ @brief return whether value is a string
+
+ This function returns true if and only if the JSON value is a string.
+
+ @return `true` if type is string, `false` otherwise.
+
+ @complexity Constant.
+
+ @exceptionsafety No-throw guarantee: this member function never throws
+ exceptions.
+
+ @liveexample{The following code exemplifies `is_string()` for all JSON
+ types.,is_string}
+
+ @since version 1.0.0
+ */
+ constexpr bool is_string() const noexcept
+ {
+ return m_type == value_t::string;
+ }
+
+ /*!
+ @brief return whether value is discarded
+
+ This function returns true if and only if the JSON value was discarded
+ during parsing with a callback function (see @ref parser_callback_t).
+
+ @note This function will always be `false` for JSON values after parsing.
+ That is, discarded values can only occur during parsing, but will be
+ removed when inside a structured value or replaced by null in other cases.
+
+ @return `true` if type is discarded, `false` otherwise.
+
+ @complexity Constant.
+
+ @exceptionsafety No-throw guarantee: this member function never throws
+ exceptions.
+
+ @liveexample{The following code exemplifies `is_discarded()` for all JSON
+ types.,is_discarded}
+
+ @since version 1.0.0
+ */
+ constexpr bool is_discarded() const noexcept
+ {
+ return m_type == value_t::discarded;
+ }
+
+ /*!
+ @brief return the type of the JSON value (implicit)
+
+ Implicitly return the type of the JSON value as a value from the @ref
+ value_t enumeration.
+
+ @return the type of the JSON value
+
+ @complexity Constant.
+
+ @exceptionsafety No-throw guarantee: this member function never throws
+ exceptions.
+
+ @liveexample{The following code exemplifies the @ref value_t operator for
+ all JSON types.,operator__value_t}
+
+ @sa @ref type() -- return the type of the JSON value (explicit)
+ @sa @ref type_name() -- return the type as string
+
+ @since version 1.0.0
+ */
+ constexpr operator value_t() const noexcept
+ {
+ return m_type;
+ }
+
+ /// @}
+
+ private:
+ //////////////////
+ // value access //
+ //////////////////
+
+ /// get a boolean (explicit)
+ boolean_t get_impl(boolean_t* /*unused*/) const
+ {
+ if (JSON_LIKELY(is_boolean()))
+ {
+ return m_value.boolean;
+ }
+
+ JSON_THROW(type_error::create(302, "type must be boolean, but is " + std::string(type_name())));
+ }
+
+ /// get a pointer to the value (object)
+ object_t* get_impl_ptr(object_t* /*unused*/) noexcept
+ {
+ return is_object() ? m_value.object : nullptr;
+ }
+
+ /// get a pointer to the value (object)
+ constexpr const object_t* get_impl_ptr(const object_t* /*unused*/) const noexcept
+ {
+ return is_object() ? m_value.object : nullptr;
+ }
+
+ /// get a pointer to the value (array)
+ array_t* get_impl_ptr(array_t* /*unused*/) noexcept
+ {
+ return is_array() ? m_value.array : nullptr;
+ }
+
+ /// get a pointer to the value (array)
+ constexpr const array_t* get_impl_ptr(const array_t* /*unused*/) const noexcept
+ {
+ return is_array() ? m_value.array : nullptr;
+ }
+
+ /// get a pointer to the value (string)
+ string_t* get_impl_ptr(string_t* /*unused*/) noexcept
+ {
+ return is_string() ? m_value.string : nullptr;
+ }
+
+ /// get a pointer to the value (string)
+ constexpr const string_t* get_impl_ptr(const string_t* /*unused*/) const noexcept
+ {
+ return is_string() ? m_value.string : nullptr;
+ }
+
+ /// get a pointer to the value (boolean)
+ boolean_t* get_impl_ptr(boolean_t* /*unused*/) noexcept
+ {
+ return is_boolean() ? &m_value.boolean : nullptr;
+ }
+
+ /// get a pointer to the value (boolean)
+ constexpr const boolean_t* get_impl_ptr(const boolean_t* /*unused*/) const noexcept
+ {
+ return is_boolean() ? &m_value.boolean : nullptr;
+ }
+
+ /// get a pointer to the value (integer number)
+ number_integer_t* get_impl_ptr(number_integer_t* /*unused*/) noexcept
+ {
+ return is_number_integer() ? &m_value.number_integer : nullptr;
+ }
+
+ /// get a pointer to the value (integer number)
+ constexpr const number_integer_t* get_impl_ptr(const number_integer_t* /*unused*/) const noexcept
+ {
+ return is_number_integer() ? &m_value.number_integer : nullptr;
+ }
+
+ /// get a pointer to the value (unsigned number)
+ number_unsigned_t* get_impl_ptr(number_unsigned_t* /*unused*/) noexcept
+ {
+ return is_number_unsigned() ? &m_value.number_unsigned : nullptr;
+ }
+
+ /// get a pointer to the value (unsigned number)
+ constexpr const number_unsigned_t* get_impl_ptr(const number_unsigned_t* /*unused*/) const noexcept
+ {
+ return is_number_unsigned() ? &m_value.number_unsigned : nullptr;
+ }
+
+ /// get a pointer to the value (floating-point number)
+ number_float_t* get_impl_ptr(number_float_t* /*unused*/) noexcept
+ {
+ return is_number_float() ? &m_value.number_float : nullptr;
+ }
+
+ /// get a pointer to the value (floating-point number)
+ constexpr const number_float_t* get_impl_ptr(const number_float_t* /*unused*/) const noexcept
+ {
+ return is_number_float() ? &m_value.number_float : nullptr;
+ }
+
+ /*!
+ @brief helper function to implement get_ref()
+
+ This function helps to implement get_ref() without code duplication for
+ const and non-const overloads
+
+ @tparam ThisType will be deduced as `basic_json` or `const basic_json`
+
+ @throw type_error.303 if ReferenceType does not match underlying value
+ type of the current JSON
+ */
+ template<typename ReferenceType, typename ThisType>
+ static ReferenceType get_ref_impl(ThisType& obj)
+ {
+ // delegate the call to get_ptr<>()
+ auto ptr = obj.template get_ptr<typename std::add_pointer<ReferenceType>::type>();
+
+ if (JSON_LIKELY(ptr != nullptr))
+ {
+ return *ptr;
+ }
+
+ JSON_THROW(type_error::create(303, "incompatible ReferenceType for get_ref, actual type is " + std::string(obj.type_name())));
+ }
+
+ public:
+ /// @name value access
+ /// Direct access to the stored value of a JSON value.
+ /// @{
+
+ /*!
+ @brief get special-case overload
+
+ This overloads avoids a lot of template boilerplate, it can be seen as the
+ identity method
+
+ @tparam BasicJsonType == @ref basic_json
+
+ @return a copy of *this
+
+ @complexity Constant.
+
+ @since version 2.1.0
+ */
+ template<typename BasicJsonType, detail::enable_if_t<
+ std::is_same<typename std::remove_const<BasicJsonType>::type, basic_json_t>::value,
+ int> = 0>
+ basic_json get() const
+ {
+ return *this;
+ }
+
+ /*!
+ @brief get special-case overload
+
+ This overloads converts the current @ref basic_json in a different
+ @ref basic_json type
+
+ @tparam BasicJsonType == @ref basic_json
+
+ @return a copy of *this, converted into @tparam BasicJsonType
+
+ @complexity Depending on the implementation of the called `from_json()`
+ method.
+
+ @since version 3.2.0
+ */
+ template<typename BasicJsonType, detail::enable_if_t<
+ not std::is_same<BasicJsonType, basic_json>::value and
+ detail::is_basic_json<BasicJsonType>::value, int> = 0>
+ BasicJsonType get() const
+ {
+ return *this;
+ }
+
+ /*!
+ @brief get a value (explicit)
+
+ Explicit type conversion between the JSON value and a compatible value
+ which is [CopyConstructible](https://en.cppreference.com/w/cpp/named_req/CopyConstructible)
+ and [DefaultConstructible](https://en.cppreference.com/w/cpp/named_req/DefaultConstructible).
+ The value is converted by calling the @ref json_serializer<ValueType>
+ `from_json()` method.
+
+ The function is equivalent to executing
+ @code {.cpp}
+ ValueType ret;
+ JSONSerializer<ValueType>::from_json(*this, ret);
+ return ret;
+ @endcode
+
+ This overloads is chosen if:
+ - @a ValueType is not @ref basic_json,
+ - @ref json_serializer<ValueType> has a `from_json()` method of the form
+ `void from_json(const basic_json&, ValueType&)`, and
+ - @ref json_serializer<ValueType> does not have a `from_json()` method of
+ the form `ValueType from_json(const basic_json&)`
+
+ @tparam ValueTypeCV the provided value type
+ @tparam ValueType the returned value type
+
+ @return copy of the JSON value, converted to @a ValueType
+
+ @throw what @ref json_serializer<ValueType> `from_json()` method throws
+
+ @liveexample{The example below shows several conversions from JSON values
+ to other types. There a few things to note: (1) Floating-point numbers can
+ be converted to integers\, (2) A JSON array can be converted to a standard
+ `std::vector<short>`\, (3) A JSON object can be converted to C++
+ associative containers such as `std::unordered_map<std::string\,
+ json>`.,get__ValueType_const}
+
+ @since version 2.1.0
+ */
+ template<typename ValueTypeCV, typename ValueType = detail::uncvref_t<ValueTypeCV>,
+ detail::enable_if_t <
+ not detail::is_basic_json<ValueType>::value and
+ detail::has_from_json<basic_json_t, ValueType>::value and
+ not detail::has_non_default_from_json<basic_json_t, ValueType>::value,
+ int> = 0>
+ ValueType get() const noexcept(noexcept(
+ JSONSerializer<ValueType>::from_json(std::declval<const basic_json_t&>(), std::declval<ValueType&>())))
+ {
+ // we cannot static_assert on ValueTypeCV being non-const, because
+ // there is support for get<const basic_json_t>(), which is why we
+ // still need the uncvref
+ static_assert(not std::is_reference<ValueTypeCV>::value,
+ "get() cannot be used with reference types, you might want to use get_ref()");
+ static_assert(std::is_default_constructible<ValueType>::value,
+ "types must be DefaultConstructible when used with get()");
+
+ ValueType ret;
+ JSONSerializer<ValueType>::from_json(*this, ret);
+ return ret;
+ }
+
+ /*!
+ @brief get a value (explicit); special case
+
+ Explicit type conversion between the JSON value and a compatible value
+ which is **not** [CopyConstructible](https://en.cppreference.com/w/cpp/named_req/CopyConstructible)
+ and **not** [DefaultConstructible](https://en.cppreference.com/w/cpp/named_req/DefaultConstructible).
+ The value is converted by calling the @ref json_serializer<ValueType>
+ `from_json()` method.
+
+ The function is equivalent to executing
+ @code {.cpp}
+ return JSONSerializer<ValueTypeCV>::from_json(*this);
+ @endcode
+
+ This overloads is chosen if:
+ - @a ValueType is not @ref basic_json and
+ - @ref json_serializer<ValueType> has a `from_json()` method of the form
+ `ValueType from_json(const basic_json&)`
+
+ @note If @ref json_serializer<ValueType> has both overloads of
+ `from_json()`, this one is chosen.
+
+ @tparam ValueTypeCV the provided value type
+ @tparam ValueType the returned value type
+
+ @return copy of the JSON value, converted to @a ValueType
+
+ @throw what @ref json_serializer<ValueType> `from_json()` method throws
+
+ @since version 2.1.0
+ */
+ template<typename ValueTypeCV, typename ValueType = detail::uncvref_t<ValueTypeCV>,
+ detail::enable_if_t<not std::is_same<basic_json_t, ValueType>::value and
+ detail::has_non_default_from_json<basic_json_t, ValueType>::value,
+ int> = 0>
+ ValueType get() const noexcept(noexcept(
+ JSONSerializer<ValueTypeCV>::from_json(std::declval<const basic_json_t&>())))
+ {
+ static_assert(not std::is_reference<ValueTypeCV>::value,
+ "get() cannot be used with reference types, you might want to use get_ref()");
+ return JSONSerializer<ValueTypeCV>::from_json(*this);
+ }
+
+ /*!
+ @brief get a value (explicit)
+
+ Explicit type conversion between the JSON value and a compatible value.
+ The value is filled into the input parameter by calling the @ref json_serializer<ValueType>
+ `from_json()` method.
+
+ The function is equivalent to executing
+ @code {.cpp}
+ ValueType v;
+ JSONSerializer<ValueType>::from_json(*this, v);
+ @endcode
+
+ This overloads is chosen if:
+ - @a ValueType is not @ref basic_json,
+ - @ref json_serializer<ValueType> has a `from_json()` method of the form
+ `void from_json(const basic_json&, ValueType&)`, and
+
+ @tparam ValueType the input parameter type.
+
+ @return the input parameter, allowing chaining calls.
+
+ @throw what @ref json_serializer<ValueType> `from_json()` method throws
+
+ @liveexample{The example below shows several conversions from JSON values
+ to other types. There a few things to note: (1) Floating-point numbers can
+ be converted to integers\, (2) A JSON array can be converted to a standard
+ `std::vector<short>`\, (3) A JSON object can be converted to C++
+ associative containers such as `std::unordered_map<std::string\,
+ json>`.,get_to}
+
+ @since version 3.3.0
+ */
+ template<typename ValueType,
+ detail::enable_if_t <
+ not detail::is_basic_json<ValueType>::value and
+ detail::has_from_json<basic_json_t, ValueType>::value,
+ int> = 0>
+ ValueType & get_to(ValueType& v) const noexcept(noexcept(
+ JSONSerializer<ValueType>::from_json(std::declval<const basic_json_t&>(), v)))
+ {
+ JSONSerializer<ValueType>::from_json(*this, v);
+ return v;
+ }
+
+
+ /*!
+ @brief get a pointer value (implicit)
+
+ Implicit pointer access to the internally stored JSON value. No copies are
+ made.
+
+ @warning Writing data to the pointee of the result yields an undefined
+ state.
+
+ @tparam PointerType pointer type; must be a pointer to @ref array_t, @ref
+ object_t, @ref string_t, @ref boolean_t, @ref number_integer_t,
+ @ref number_unsigned_t, or @ref number_float_t. Enforced by a static
+ assertion.
+
+ @return pointer to the internally stored JSON value if the requested
+ pointer type @a PointerType fits to the JSON value; `nullptr` otherwise
+
+ @complexity Constant.
+
+ @liveexample{The example below shows how pointers to internal values of a
+ JSON value can be requested. Note that no type conversions are made and a
+ `nullptr` is returned if the value and the requested pointer type does not
+ match.,get_ptr}
+
+ @since version 1.0.0
+ */
+ template<typename PointerType, typename std::enable_if<
+ std::is_pointer<PointerType>::value, int>::type = 0>
+ auto get_ptr() noexcept -> decltype(std::declval<basic_json_t&>().get_impl_ptr(std::declval<PointerType>()))
+ {
+ // delegate the call to get_impl_ptr<>()
+ return get_impl_ptr(static_cast<PointerType>(nullptr));
+ }
+
+ /*!
+ @brief get a pointer value (implicit)
+ @copydoc get_ptr()
+ */
+ template<typename PointerType, typename std::enable_if<
+ std::is_pointer<PointerType>::value and
+ std::is_const<typename std::remove_pointer<PointerType>::type>::value, int>::type = 0>
+ constexpr auto get_ptr() const noexcept -> decltype(std::declval<const basic_json_t&>().get_impl_ptr(std::declval<PointerType>()))
+ {
+ // delegate the call to get_impl_ptr<>() const
+ return get_impl_ptr(static_cast<PointerType>(nullptr));
+ }
+
+ /*!
+ @brief get a pointer value (explicit)
+
+ Explicit pointer access to the internally stored JSON value. No copies are
+ made.
+
+ @warning The pointer becomes invalid if the underlying JSON object
+ changes.
+
+ @tparam PointerType pointer type; must be a pointer to @ref array_t, @ref
+ object_t, @ref string_t, @ref boolean_t, @ref number_integer_t,
+ @ref number_unsigned_t, or @ref number_float_t.
+
+ @return pointer to the internally stored JSON value if the requested
+ pointer type @a PointerType fits to the JSON value; `nullptr` otherwise
+
+ @complexity Constant.
+
+ @liveexample{The example below shows how pointers to internal values of a
+ JSON value can be requested. Note that no type conversions are made and a
+ `nullptr` is returned if the value and the requested pointer type does not
+ match.,get__PointerType}
+
+ @sa @ref get_ptr() for explicit pointer-member access
+
+ @since version 1.0.0
+ */
+ template<typename PointerType, typename std::enable_if<
+ std::is_pointer<PointerType>::value, int>::type = 0>
+ auto get() noexcept -> decltype(std::declval<basic_json_t&>().template get_ptr<PointerType>())
+ {
+ // delegate the call to get_ptr
+ return get_ptr<PointerType>();
+ }
+
+ /*!
+ @brief get a pointer value (explicit)
+ @copydoc get()
+ */
+ template<typename PointerType, typename std::enable_if<
+ std::is_pointer<PointerType>::value, int>::type = 0>
+ constexpr auto get() const noexcept -> decltype(std::declval<const basic_json_t&>().template get_ptr<PointerType>())
+ {
+ // delegate the call to get_ptr
+ return get_ptr<PointerType>();
+ }
+
+ /*!
+ @brief get a reference value (implicit)
+
+ Implicit reference access to the internally stored JSON value. No copies
+ are made.
+
+ @warning Writing data to the referee of the result yields an undefined
+ state.
+
+ @tparam ReferenceType reference type; must be a reference to @ref array_t,
+ @ref object_t, @ref string_t, @ref boolean_t, @ref number_integer_t, or
+ @ref number_float_t. Enforced by static assertion.
+
+ @return reference to the internally stored JSON value if the requested
+ reference type @a ReferenceType fits to the JSON value; throws
+ type_error.303 otherwise
+
+ @throw type_error.303 in case passed type @a ReferenceType is incompatible
+ with the stored JSON value; see example below
+
+ @complexity Constant.
+
+ @liveexample{The example shows several calls to `get_ref()`.,get_ref}
+
+ @since version 1.1.0
+ */
+ template<typename ReferenceType, typename std::enable_if<
+ std::is_reference<ReferenceType>::value, int>::type = 0>
+ ReferenceType get_ref()
+ {
+ // delegate call to get_ref_impl
+ return get_ref_impl<ReferenceType>(*this);
+ }
+
+ /*!
+ @brief get a reference value (implicit)
+ @copydoc get_ref()
+ */
+ template<typename ReferenceType, typename std::enable_if<
+ std::is_reference<ReferenceType>::value and
+ std::is_const<typename std::remove_reference<ReferenceType>::type>::value, int>::type = 0>
+ ReferenceType get_ref() const
+ {
+ // delegate call to get_ref_impl
+ return get_ref_impl<ReferenceType>(*this);
+ }
+
+ /*!
+ @brief get a value (implicit)
+
+ Implicit type conversion between the JSON value and a compatible value.
+ The call is realized by calling @ref get() const.
+
+ @tparam ValueType non-pointer type compatible to the JSON value, for
+ instance `int` for JSON integer numbers, `bool` for JSON booleans, or
+ `std::vector` types for JSON arrays. The character type of @ref string_t
+ as well as an initializer list of this type is excluded to avoid
+ ambiguities as these types implicitly convert to `std::string`.
+
+ @return copy of the JSON value, converted to type @a ValueType
+
+ @throw type_error.302 in case passed type @a ValueType is incompatible
+ to the JSON value type (e.g., the JSON value is of type boolean, but a
+ string is requested); see example below
+
+ @complexity Linear in the size of the JSON value.
+
+ @liveexample{The example below shows several conversions from JSON values
+ to other types. There a few things to note: (1) Floating-point numbers can
+ be converted to integers\, (2) A JSON array can be converted to a standard
+ `std::vector<short>`\, (3) A JSON object can be converted to C++
+ associative containers such as `std::unordered_map<std::string\,
+ json>`.,operator__ValueType}
+
+ @since version 1.0.0
+ */
+ template < typename ValueType, typename std::enable_if <
+ not std::is_pointer<ValueType>::value and
+ not std::is_same<ValueType, detail::json_ref<basic_json>>::value and
+ not std::is_same<ValueType, typename string_t::value_type>::value and
+ not detail::is_basic_json<ValueType>::value
+
+#ifndef _MSC_VER // fix for issue #167 operator<< ambiguity under VS2015
+ and not std::is_same<ValueType, std::initializer_list<typename string_t::value_type>>::value
+#if defined(JSON_HAS_CPP_17) && (defined(__GNUC__) || (defined(_MSC_VER) and _MSC_VER <= 1914))
+ and not std::is_same<ValueType, typename std::string_view>::value
+#endif
+#endif
+ and detail::is_detected<detail::get_template_function, const basic_json_t&, ValueType>::value
+ , int >::type = 0 >
+ operator ValueType() const
+ {
+ // delegate the call to get<>() const
+ return get<ValueType>();
+ }
+
+ /// @}
+
+
+ ////////////////////
+ // element access //
+ ////////////////////
+
+ /// @name element access
+ /// Access to the JSON value.
+ /// @{
+
+ /*!
+ @brief access specified array element with bounds checking
+
+ Returns a reference to the element at specified location @a idx, with
+ bounds checking.
+
+ @param[in] idx index of the element to access
+
+ @return reference to the element at index @a idx
+
+ @throw type_error.304 if the JSON value is not an array; in this case,
+ calling `at` with an index makes no sense. See example below.
+ @throw out_of_range.401 if the index @a idx is out of range of the array;
+ that is, `idx >= size()`. See example below.
+
+ @exceptionsafety Strong guarantee: if an exception is thrown, there are no
+ changes in the JSON value.
+
+ @complexity Constant.
+
+ @since version 1.0.0
+
+ @liveexample{The example below shows how array elements can be read and
+ written using `at()`. It also demonstrates the different exceptions that
+ can be thrown.,at__size_type}
+ */
+ reference at(size_type idx)
+ {
+ // at only works for arrays
+ if (JSON_LIKELY(is_array()))
+ {
+ JSON_TRY
+ {
+ return m_value.array->at(idx);
+ }
+ JSON_CATCH (std::out_of_range&)
+ {
+ // create better exception explanation
+ JSON_THROW(out_of_range::create(401, "array index " + std::to_string(idx) + " is out of range"));
+ }
+ }
+ else
+ {
+ JSON_THROW(type_error::create(304, "cannot use at() with " + std::string(type_name())));
+ }
+ }
+
+ /*!
+ @brief access specified array element with bounds checking
+
+ Returns a const reference to the element at specified location @a idx,
+ with bounds checking.
+
+ @param[in] idx index of the element to access
+
+ @return const reference to the element at index @a idx
+
+ @throw type_error.304 if the JSON value is not an array; in this case,
+ calling `at` with an index makes no sense. See example below.
+ @throw out_of_range.401 if the index @a idx is out of range of the array;
+ that is, `idx >= size()`. See example below.
+
+ @exceptionsafety Strong guarantee: if an exception is thrown, there are no
+ changes in the JSON value.
+
+ @complexity Constant.
+
+ @since version 1.0.0
+
+ @liveexample{The example below shows how array elements can be read using
+ `at()`. It also demonstrates the different exceptions that can be thrown.,
+ at__size_type_const}
+ */
+ const_reference at(size_type idx) const
+ {
+ // at only works for arrays
+ if (JSON_LIKELY(is_array()))
+ {
+ JSON_TRY
+ {
+ return m_value.array->at(idx);
+ }
+ JSON_CATCH (std::out_of_range&)
+ {
+ // create better exception explanation
+ JSON_THROW(out_of_range::create(401, "array index " + std::to_string(idx) + " is out of range"));
+ }
+ }
+ else
+ {
+ JSON_THROW(type_error::create(304, "cannot use at() with " + std::string(type_name())));
+ }
+ }
+
+ /*!
+ @brief access specified object element with bounds checking
+
+ Returns a reference to the element at with specified key @a key, with
+ bounds checking.
+
+ @param[in] key key of the element to access
+
+ @return reference to the element at key @a key
+
+ @throw type_error.304 if the JSON value is not an object; in this case,
+ calling `at` with a key makes no sense. See example below.
+ @throw out_of_range.403 if the key @a key is is not stored in the object;
+ that is, `find(key) == end()`. See example below.
+
+ @exceptionsafety Strong guarantee: if an exception is thrown, there are no
+ changes in the JSON value.
+
+ @complexity Logarithmic in the size of the container.
+
+ @sa @ref operator[](const typename object_t::key_type&) for unchecked
+ access by reference
+ @sa @ref value() for access by value with a default value
+
+ @since version 1.0.0
+
+ @liveexample{The example below shows how object elements can be read and
+ written using `at()`. It also demonstrates the different exceptions that
+ can be thrown.,at__object_t_key_type}
+ */
+ reference at(const typename object_t::key_type& key)
+ {
+ // at only works for objects
+ if (JSON_LIKELY(is_object()))
+ {
+ JSON_TRY
+ {
+ return m_value.object->at(key);
+ }
+ JSON_CATCH (std::out_of_range&)
+ {
+ // create better exception explanation
+ JSON_THROW(out_of_range::create(403, "key '" + key + "' not found"));
+ }
+ }
+ else
+ {
+ JSON_THROW(type_error::create(304, "cannot use at() with " + std::string(type_name())));
+ }
+ }
+
+ /*!
+ @brief access specified object element with bounds checking
+
+ Returns a const reference to the element at with specified key @a key,
+ with bounds checking.
+
+ @param[in] key key of the element to access
+
+ @return const reference to the element at key @a key
+
+ @throw type_error.304 if the JSON value is not an object; in this case,
+ calling `at` with a key makes no sense. See example below.
+ @throw out_of_range.403 if the key @a key is is not stored in the object;
+ that is, `find(key) == end()`. See example below.
+
+ @exceptionsafety Strong guarantee: if an exception is thrown, there are no
+ changes in the JSON value.
+
+ @complexity Logarithmic in the size of the container.
+
+ @sa @ref operator[](const typename object_t::key_type&) for unchecked
+ access by reference
+ @sa @ref value() for access by value with a default value
+
+ @since version 1.0.0
+
+ @liveexample{The example below shows how object elements can be read using
+ `at()`. It also demonstrates the different exceptions that can be thrown.,
+ at__object_t_key_type_const}
+ */
+ const_reference at(const typename object_t::key_type& key) const
+ {
+ // at only works for objects
+ if (JSON_LIKELY(is_object()))
+ {
+ JSON_TRY
+ {
+ return m_value.object->at(key);
+ }
+ JSON_CATCH (std::out_of_range&)
+ {
+ // create better exception explanation
+ JSON_THROW(out_of_range::create(403, "key '" + key + "' not found"));
+ }
+ }
+ else
+ {
+ JSON_THROW(type_error::create(304, "cannot use at() with " + std::string(type_name())));
+ }
+ }
+
+ /*!
+ @brief access specified array element
+
+ Returns a reference to the element at specified location @a idx.
+
+ @note If @a idx is beyond the range of the array (i.e., `idx >= size()`),
+ then the array is silently filled up with `null` values to make `idx` a
+ valid reference to the last stored element.
+
+ @param[in] idx index of the element to access
+
+ @return reference to the element at index @a idx
+
+ @throw type_error.305 if the JSON value is not an array or null; in that
+ cases, using the [] operator with an index makes no sense.
+
+ @complexity Constant if @a idx is in the range of the array. Otherwise
+ linear in `idx - size()`.
+
+ @liveexample{The example below shows how array elements can be read and
+ written using `[]` operator. Note the addition of `null`
+ values.,operatorarray__size_type}
+
+ @since version 1.0.0
+ */
+ reference operator[](size_type idx)
+ {
+ // implicitly convert null value to an empty array
+ if (is_null())
+ {
+ m_type = value_t::array;
+ m_value.array = create<array_t>();
+ assert_invariant();
+ }
+
+ // operator[] only works for arrays
+ if (JSON_LIKELY(is_array()))
+ {
+ // fill up array with null values if given idx is outside range
+ if (idx >= m_value.array->size())
+ {
+ m_value.array->insert(m_value.array->end(),
+ idx - m_value.array->size() + 1,
+ basic_json());
+ }
+
+ return m_value.array->operator[](idx);
+ }
+
+ JSON_THROW(type_error::create(305, "cannot use operator[] with a numeric argument with " + std::string(type_name())));
+ }
+
+ /*!
+ @brief access specified array element
+
+ Returns a const reference to the element at specified location @a idx.
+
+ @param[in] idx index of the element to access
+
+ @return const reference to the element at index @a idx
+
+ @throw type_error.305 if the JSON value is not an array; in that case,
+ using the [] operator with an index makes no sense.
+
+ @complexity Constant.
+
+ @liveexample{The example below shows how array elements can be read using
+ the `[]` operator.,operatorarray__size_type_const}
+
+ @since version 1.0.0
+ */
+ const_reference operator[](size_type idx) const
+ {
+ // const operator[] only works for arrays
+ if (JSON_LIKELY(is_array()))
+ {
+ return m_value.array->operator[](idx);
+ }
+
+ JSON_THROW(type_error::create(305, "cannot use operator[] with a numeric argument with " + std::string(type_name())));
+ }
+
+ /*!
+ @brief access specified object element
+
+ Returns a reference to the element at with specified key @a key.
+
+ @note If @a key is not found in the object, then it is silently added to
+ the object and filled with a `null` value to make `key` a valid reference.
+ In case the value was `null` before, it is converted to an object.
+
+ @param[in] key key of the element to access
+
+ @return reference to the element at key @a key
+
+ @throw type_error.305 if the JSON value is not an object or null; in that
+ cases, using the [] operator with a key makes no sense.
+
+ @complexity Logarithmic in the size of the container.
+
+ @liveexample{The example below shows how object elements can be read and
+ written using the `[]` operator.,operatorarray__key_type}
+
+ @sa @ref at(const typename object_t::key_type&) for access by reference
+ with range checking
+ @sa @ref value() for access by value with a default value
+
+ @since version 1.0.0
+ */
+ reference operator[](const typename object_t::key_type& key)
+ {
+ // implicitly convert null value to an empty object
+ if (is_null())
+ {
+ m_type = value_t::object;
+ m_value.object = create<object_t>();
+ assert_invariant();
+ }
+
+ // operator[] only works for objects
+ if (JSON_LIKELY(is_object()))
+ {
+ return m_value.object->operator[](key);
+ }
+
+ JSON_THROW(type_error::create(305, "cannot use operator[] with a string argument with " + std::string(type_name())));
+ }
+
+ /*!
+ @brief read-only access specified object element
+
+ Returns a const reference to the element at with specified key @a key. No
+ bounds checking is performed.
+
+ @warning If the element with key @a key does not exist, the behavior is
+ undefined.
+
+ @param[in] key key of the element to access
+
+ @return const reference to the element at key @a key
+
+ @pre The element with key @a key must exist. **This precondition is
+ enforced with an assertion.**
+
+ @throw type_error.305 if the JSON value is not an object; in that case,
+ using the [] operator with a key makes no sense.
+
+ @complexity Logarithmic in the size of the container.
+
+ @liveexample{The example below shows how object elements can be read using
+ the `[]` operator.,operatorarray__key_type_const}
+
+ @sa @ref at(const typename object_t::key_type&) for access by reference
+ with range checking
+ @sa @ref value() for access by value with a default value
+
+ @since version 1.0.0
+ */
+ const_reference operator[](const typename object_t::key_type& key) const
+ {
+ // const operator[] only works for objects
+ if (JSON_LIKELY(is_object()))
+ {
+ assert(m_value.object->find(key) != m_value.object->end());
+ return m_value.object->find(key)->second;
+ }
+
+ JSON_THROW(type_error::create(305, "cannot use operator[] with a string argument with " + std::string(type_name())));
+ }
+
+ /*!
+ @brief access specified object element
+
+ Returns a reference to the element at with specified key @a key.
+
+ @note If @a key is not found in the object, then it is silently added to
+ the object and filled with a `null` value to make `key` a valid reference.
+ In case the value was `null` before, it is converted to an object.
+
+ @param[in] key key of the element to access
+
+ @return reference to the element at key @a key
+
+ @throw type_error.305 if the JSON value is not an object or null; in that
+ cases, using the [] operator with a key makes no sense.
+
+ @complexity Logarithmic in the size of the container.
+
+ @liveexample{The example below shows how object elements can be read and
+ written using the `[]` operator.,operatorarray__key_type}
+
+ @sa @ref at(const typename object_t::key_type&) for access by reference
+ with range checking
+ @sa @ref value() for access by value with a default value
+
+ @since version 1.1.0
+ */
+ template<typename T>
+ reference operator[](T* key)
+ {
+ // implicitly convert null to object
+ if (is_null())
+ {
+ m_type = value_t::object;
+ m_value = value_t::object;
+ assert_invariant();
+ }
+
+ // at only works for objects
+ if (JSON_LIKELY(is_object()))
+ {
+ return m_value.object->operator[](key);
+ }
+
+ JSON_THROW(type_error::create(305, "cannot use operator[] with a string argument with " + std::string(type_name())));
+ }
+
+ /*!
+ @brief read-only access specified object element
+
+ Returns a const reference to the element at with specified key @a key. No
+ bounds checking is performed.
+
+ @warning If the element with key @a key does not exist, the behavior is
+ undefined.
+
+ @param[in] key key of the element to access
+
+ @return const reference to the element at key @a key
+
+ @pre The element with key @a key must exist. **This precondition is
+ enforced with an assertion.**
+
+ @throw type_error.305 if the JSON value is not an object; in that case,
+ using the [] operator with a key makes no sense.
+
+ @complexity Logarithmic in the size of the container.
+
+ @liveexample{The example below shows how object elements can be read using
+ the `[]` operator.,operatorarray__key_type_const}
+
+ @sa @ref at(const typename object_t::key_type&) for access by reference
+ with range checking
+ @sa @ref value() for access by value with a default value
+
+ @since version 1.1.0
+ */
+ template<typename T>
+ const_reference operator[](T* key) const
+ {
+ // at only works for objects
+ if (JSON_LIKELY(is_object()))
+ {
+ assert(m_value.object->find(key) != m_value.object->end());
+ return m_value.object->find(key)->second;
+ }
+
+ JSON_THROW(type_error::create(305, "cannot use operator[] with a string argument with " + std::string(type_name())));
+ }
+
+ /*!
+ @brief access specified object element with default value
+
+ Returns either a copy of an object's element at the specified key @a key
+ or a given default value if no element with key @a key exists.
+
+ The function is basically equivalent to executing
+ @code {.cpp}
+ try {
+ return at(key);
+ } catch(out_of_range) {
+ return default_value;
+ }
+ @endcode
+
+ @note Unlike @ref at(const typename object_t::key_type&), this function
+ does not throw if the given key @a key was not found.
+
+ @note Unlike @ref operator[](const typename object_t::key_type& key), this
+ function does not implicitly add an element to the position defined by @a
+ key. This function is furthermore also applicable to const objects.
+
+ @param[in] key key of the element to access
+ @param[in] default_value the value to return if @a key is not found
+
+ @tparam ValueType type compatible to JSON values, for instance `int` for
+ JSON integer numbers, `bool` for JSON booleans, or `std::vector` types for
+ JSON arrays. Note the type of the expected value at @a key and the default
+ value @a default_value must be compatible.
+
+ @return copy of the element at key @a key or @a default_value if @a key
+ is not found
+
+ @throw type_error.306 if the JSON value is not an object; in that case,
+ using `value()` with a key makes no sense.
+
+ @complexity Logarithmic in the size of the container.
+
+ @liveexample{The example below shows how object elements can be queried
+ with a default value.,basic_json__value}
+
+ @sa @ref at(const typename object_t::key_type&) for access by reference
+ with range checking
+ @sa @ref operator[](const typename object_t::key_type&) for unchecked
+ access by reference
+
+ @since version 1.0.0
+ */
+ template<class ValueType, typename std::enable_if<
+ std::is_convertible<basic_json_t, ValueType>::value, int>::type = 0>
+ ValueType value(const typename object_t::key_type& key, const ValueType& default_value) const
+ {
+ // at only works for objects
+ if (JSON_LIKELY(is_object()))
+ {
+ // if key is found, return value and given default value otherwise
+ const auto it = find(key);
+ if (it != end())
+ {
+ return *it;
+ }
+
+ return default_value;
+ }
+
+ JSON_THROW(type_error::create(306, "cannot use value() with " + std::string(type_name())));
+ }
+
+ /*!
+ @brief overload for a default value of type const char*
+ @copydoc basic_json::value(const typename object_t::key_type&, const ValueType&) const
+ */
+ string_t value(const typename object_t::key_type& key, const char* default_value) const
+ {
+ return value(key, string_t(default_value));
+ }
+
+ /*!
+ @brief access specified object element via JSON Pointer with default value
+
+ Returns either a copy of an object's element at the specified key @a key
+ or a given default value if no element with key @a key exists.
+
+ The function is basically equivalent to executing
+ @code {.cpp}
+ try {
+ return at(ptr);
+ } catch(out_of_range) {
+ return default_value;
+ }
+ @endcode
+
+ @note Unlike @ref at(const json_pointer&), this function does not throw
+ if the given key @a key was not found.
+
+ @param[in] ptr a JSON pointer to the element to access
+ @param[in] default_value the value to return if @a ptr found no value
+
+ @tparam ValueType type compatible to JSON values, for instance `int` for
+ JSON integer numbers, `bool` for JSON booleans, or `std::vector` types for
+ JSON arrays. Note the type of the expected value at @a key and the default
+ value @a default_value must be compatible.
+
+ @return copy of the element at key @a key or @a default_value if @a key
+ is not found
+
+ @throw type_error.306 if the JSON value is not an object; in that case,
+ using `value()` with a key makes no sense.
+
+ @complexity Logarithmic in the size of the container.
+
+ @liveexample{The example below shows how object elements can be queried
+ with a default value.,basic_json__value_ptr}
+
+ @sa @ref operator[](const json_pointer&) for unchecked access by reference
+
+ @since version 2.0.2
+ */
+ template<class ValueType, typename std::enable_if<
+ std::is_convertible<basic_json_t, ValueType>::value, int>::type = 0>
+ ValueType value(const json_pointer& ptr, const ValueType& default_value) const
+ {
+ // at only works for objects
+ if (JSON_LIKELY(is_object()))
+ {
+ // if pointer resolves a value, return it or use default value
+ JSON_TRY
+ {
+ return ptr.get_checked(this);
+ }
+ JSON_INTERNAL_CATCH (out_of_range&)
+ {
+ return default_value;
+ }
+ }
+
+ JSON_THROW(type_error::create(306, "cannot use value() with " + std::string(type_name())));
+ }
+
+ /*!
+ @brief overload for a default value of type const char*
+ @copydoc basic_json::value(const json_pointer&, ValueType) const
+ */
+ string_t value(const json_pointer& ptr, const char* default_value) const
+ {
+ return value(ptr, string_t(default_value));
+ }
+
+ /*!
+ @brief access the first element
+
+ Returns a reference to the first element in the container. For a JSON
+ container `c`, the expression `c.front()` is equivalent to `*c.begin()`.
+
+ @return In case of a structured type (array or object), a reference to the
+ first element is returned. In case of number, string, or boolean values, a
+ reference to the value is returned.
+
+ @complexity Constant.
+
+ @pre The JSON value must not be `null` (would throw `std::out_of_range`)
+ or an empty array or object (undefined behavior, **guarded by
+ assertions**).
+ @post The JSON value remains unchanged.
+
+ @throw invalid_iterator.214 when called on `null` value
+
+ @liveexample{The following code shows an example for `front()`.,front}
+
+ @sa @ref back() -- access the last element
+
+ @since version 1.0.0
+ */
+ reference front()
+ {
+ return *begin();
+ }
+
+ /*!
+ @copydoc basic_json::front()
+ */
+ const_reference front() const
+ {
+ return *cbegin();
+ }
+
+ /*!
+ @brief access the last element
+
+ Returns a reference to the last element in the container. For a JSON
+ container `c`, the expression `c.back()` is equivalent to
+ @code {.cpp}
+ auto tmp = c.end();
+ --tmp;
+ return *tmp;
+ @endcode
+
+ @return In case of a structured type (array or object), a reference to the
+ last element is returned. In case of number, string, or boolean values, a
+ reference to the value is returned.
+
+ @complexity Constant.
+
+ @pre The JSON value must not be `null` (would throw `std::out_of_range`)
+ or an empty array or object (undefined behavior, **guarded by
+ assertions**).
+ @post The JSON value remains unchanged.
+
+ @throw invalid_iterator.214 when called on a `null` value. See example
+ below.
+
+ @liveexample{The following code shows an example for `back()`.,back}
+
+ @sa @ref front() -- access the first element
+
+ @since version 1.0.0
+ */
+ reference back()
+ {
+ auto tmp = end();
+ --tmp;
+ return *tmp;
+ }
+
+ /*!
+ @copydoc basic_json::back()
+ */
+ const_reference back() const
+ {
+ auto tmp = cend();
+ --tmp;
+ return *tmp;
+ }
+
+ /*!
+ @brief remove element given an iterator
+
+ Removes the element specified by iterator @a pos. The iterator @a pos must
+ be valid and dereferenceable. Thus the `end()` iterator (which is valid,
+ but is not dereferenceable) cannot be used as a value for @a pos.
+
+ If called on a primitive type other than `null`, the resulting JSON value
+ will be `null`.
+
+ @param[in] pos iterator to the element to remove
+ @return Iterator following the last removed element. If the iterator @a
+ pos refers to the last element, the `end()` iterator is returned.
+
+ @tparam IteratorType an @ref iterator or @ref const_iterator
+
+ @post Invalidates iterators and references at or after the point of the
+ erase, including the `end()` iterator.
+
+ @throw type_error.307 if called on a `null` value; example: `"cannot use
+ erase() with null"`
+ @throw invalid_iterator.202 if called on an iterator which does not belong
+ to the current JSON value; example: `"iterator does not fit current
+ value"`
+ @throw invalid_iterator.205 if called on a primitive type with invalid
+ iterator (i.e., any iterator which is not `begin()`); example: `"iterator
+ out of range"`
+
+ @complexity The complexity depends on the type:
+ - objects: amortized constant
+ - arrays: linear in distance between @a pos and the end of the container
+ - strings: linear in the length of the string
+ - other types: constant
+
+ @liveexample{The example shows the result of `erase()` for different JSON
+ types.,erase__IteratorType}
+
+ @sa @ref erase(IteratorType, IteratorType) -- removes the elements in
+ the given range
+ @sa @ref erase(const typename object_t::key_type&) -- removes the element
+ from an object at the given key
+ @sa @ref erase(const size_type) -- removes the element from an array at
+ the given index
+
+ @since version 1.0.0
+ */
+ template<class IteratorType, typename std::enable_if<
+ std::is_same<IteratorType, typename basic_json_t::iterator>::value or
+ std::is_same<IteratorType, typename basic_json_t::const_iterator>::value, int>::type
+ = 0>
+ IteratorType erase(IteratorType pos)
+ {
+ // make sure iterator fits the current value
+ if (JSON_UNLIKELY(this != pos.m_object))
+ {
+ JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value"));
+ }
+
+ IteratorType result = end();
+
+ switch (m_type)
+ {
+ case value_t::boolean:
+ case value_t::number_float:
+ case value_t::number_integer:
+ case value_t::number_unsigned:
+ case value_t::string:
+ {
+ if (JSON_UNLIKELY(not pos.m_it.primitive_iterator.is_begin()))
+ {
+ JSON_THROW(invalid_iterator::create(205, "iterator out of range"));
+ }
+
+ if (is_string())
+ {
+ AllocatorType<string_t> alloc;
+ std::allocator_traits<decltype(alloc)>::destroy(alloc, m_value.string);
+ std::allocator_traits<decltype(alloc)>::deallocate(alloc, m_value.string, 1);
+ m_value.string = nullptr;
+ }
+
+ m_type = value_t::null;
+ assert_invariant();
+ break;
+ }
+
+ case value_t::object:
+ {
+ result.m_it.object_iterator = m_value.object->erase(pos.m_it.object_iterator);
+ break;
+ }
+
+ case value_t::array:
+ {
+ result.m_it.array_iterator = m_value.array->erase(pos.m_it.array_iterator);
+ break;
+ }
+
+ default:
+ JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name())));
+ }
+
+ return result;
+ }
+
+ /*!
+ @brief remove elements given an iterator range
+
+ Removes the element specified by the range `[first; last)`. The iterator
+ @a first does not need to be dereferenceable if `first == last`: erasing
+ an empty range is a no-op.
+
+ If called on a primitive type other than `null`, the resulting JSON value
+ will be `null`.
+
+ @param[in] first iterator to the beginning of the range to remove
+ @param[in] last iterator past the end of the range to remove
+ @return Iterator following the last removed element. If the iterator @a
+ second refers to the last element, the `end()` iterator is returned.
+
+ @tparam IteratorType an @ref iterator or @ref const_iterator
+
+ @post Invalidates iterators and references at or after the point of the
+ erase, including the `end()` iterator.
+
+ @throw type_error.307 if called on a `null` value; example: `"cannot use
+ erase() with null"`
+ @throw invalid_iterator.203 if called on iterators which does not belong
+ to the current JSON value; example: `"iterators do not fit current value"`
+ @throw invalid_iterator.204 if called on a primitive type with invalid
+ iterators (i.e., if `first != begin()` and `last != end()`); example:
+ `"iterators out of range"`
+
+ @complexity The complexity depends on the type:
+ - objects: `log(size()) + std::distance(first, last)`
+ - arrays: linear in the distance between @a first and @a last, plus linear
+ in the distance between @a last and end of the container
+ - strings: linear in the length of the string
+ - other types: constant
+
+ @liveexample{The example shows the result of `erase()` for different JSON
+ types.,erase__IteratorType_IteratorType}
+
+ @sa @ref erase(IteratorType) -- removes the element at a given position
+ @sa @ref erase(const typename object_t::key_type&) -- removes the element
+ from an object at the given key
+ @sa @ref erase(const size_type) -- removes the element from an array at
+ the given index
+
+ @since version 1.0.0
+ */
+ template<class IteratorType, typename std::enable_if<
+ std::is_same<IteratorType, typename basic_json_t::iterator>::value or
+ std::is_same<IteratorType, typename basic_json_t::const_iterator>::value, int>::type
+ = 0>
+ IteratorType erase(IteratorType first, IteratorType last)
+ {
+ // make sure iterator fits the current value
+ if (JSON_UNLIKELY(this != first.m_object or this != last.m_object))
+ {
+ JSON_THROW(invalid_iterator::create(203, "iterators do not fit current value"));
+ }
+
+ IteratorType result = end();
+
+ switch (m_type)
+ {
+ case value_t::boolean:
+ case value_t::number_float:
+ case value_t::number_integer:
+ case value_t::number_unsigned:
+ case value_t::string:
+ {
+ if (JSON_LIKELY(not first.m_it.primitive_iterator.is_begin()
+ or not last.m_it.primitive_iterator.is_end()))
+ {
+ JSON_THROW(invalid_iterator::create(204, "iterators out of range"));
+ }
+
+ if (is_string())
+ {
+ AllocatorType<string_t> alloc;
+ std::allocator_traits<decltype(alloc)>::destroy(alloc, m_value.string);
+ std::allocator_traits<decltype(alloc)>::deallocate(alloc, m_value.string, 1);
+ m_value.string = nullptr;
+ }
+
+ m_type = value_t::null;
+ assert_invariant();
+ break;
+ }
+
+ case value_t::object:
+ {
+ result.m_it.object_iterator = m_value.object->erase(first.m_it.object_iterator,
+ last.m_it.object_iterator);
+ break;
+ }
+
+ case value_t::array:
+ {
+ result.m_it.array_iterator = m_value.array->erase(first.m_it.array_iterator,
+ last.m_it.array_iterator);
+ break;
+ }
+
+ default:
+ JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name())));
+ }
+
+ return result;
+ }
+
+ /*!
+ @brief remove element from a JSON object given a key
+
+ Removes elements from a JSON object with the key value @a key.
+
+ @param[in] key value of the elements to remove
+
+ @return Number of elements removed. If @a ObjectType is the default
+ `std::map` type, the return value will always be `0` (@a key was not
+ found) or `1` (@a key was found).
+
+ @post References and iterators to the erased elements are invalidated.
+ Other references and iterators are not affected.
+
+ @throw type_error.307 when called on a type other than JSON object;
+ example: `"cannot use erase() with null"`
+
+ @complexity `log(size()) + count(key)`
+
+ @liveexample{The example shows the effect of `erase()`.,erase__key_type}
+
+ @sa @ref erase(IteratorType) -- removes the element at a given position
+ @sa @ref erase(IteratorType, IteratorType) -- removes the elements in
+ the given range
+ @sa @ref erase(const size_type) -- removes the element from an array at
+ the given index
+
+ @since version 1.0.0
+ */
+ size_type erase(const typename object_t::key_type& key)
+ {
+ // this erase only works for objects
+ if (JSON_LIKELY(is_object()))
+ {
+ return m_value.object->erase(key);
+ }
+
+ JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name())));
+ }
+
+ /*!
+ @brief remove element from a JSON array given an index
+
+ Removes element from a JSON array at the index @a idx.
+
+ @param[in] idx index of the element to remove
+
+ @throw type_error.307 when called on a type other than JSON object;
+ example: `"cannot use erase() with null"`
+ @throw out_of_range.401 when `idx >= size()`; example: `"array index 17
+ is out of range"`
+
+ @complexity Linear in distance between @a idx and the end of the container.
+
+ @liveexample{The example shows the effect of `erase()`.,erase__size_type}
+
+ @sa @ref erase(IteratorType) -- removes the element at a given position
+ @sa @ref erase(IteratorType, IteratorType) -- removes the elements in
+ the given range
+ @sa @ref erase(const typename object_t::key_type&) -- removes the element
+ from an object at the given key
+
+ @since version 1.0.0
+ */
+ void erase(const size_type idx)
+ {
+ // this erase only works for arrays
+ if (JSON_LIKELY(is_array()))
+ {
+ if (JSON_UNLIKELY(idx >= size()))
+ {
+ JSON_THROW(out_of_range::create(401, "array index " + std::to_string(idx) + " is out of range"));
+ }
+
+ m_value.array->erase(m_value.array->begin() + static_cast<difference_type>(idx));
+ }
+ else
+ {
+ JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name())));
+ }
+ }
+
+ /// @}
+
+
+ ////////////
+ // lookup //
+ ////////////
+
+ /// @name lookup
+ /// @{
+
+ /*!
+ @brief find an element in a JSON object
+
+ Finds an element in a JSON object with key equivalent to @a key. If the
+ element is not found or the JSON value is not an object, end() is
+ returned.
+
+ @note This method always returns @ref end() when executed on a JSON type
+ that is not an object.
+
+ @param[in] key key value of the element to search for.
+
+ @return Iterator to an element with key equivalent to @a key. If no such
+ element is found or the JSON value is not an object, past-the-end (see
+ @ref end()) iterator is returned.
+
+ @complexity Logarithmic in the size of the JSON object.
+
+ @liveexample{The example shows how `find()` is used.,find__key_type}
+
+ @sa @ref contains(KeyT&&) const -- checks whether a key exists
+
+ @since version 1.0.0
+ */
+ template<typename KeyT>
+ iterator find(KeyT&& key)
+ {
+ auto result = end();
+
+ if (is_object())
+ {
+ result.m_it.object_iterator = m_value.object->find(std::forward<KeyT>(key));
+ }
+
+ return result;
+ }
+
+ /*!
+ @brief find an element in a JSON object
+ @copydoc find(KeyT&&)
+ */
+ template<typename KeyT>
+ const_iterator find(KeyT&& key) const
+ {
+ auto result = cend();
+
+ if (is_object())
+ {
+ result.m_it.object_iterator = m_value.object->find(std::forward<KeyT>(key));
+ }
+
+ return result;
+ }
+
+ /*!
+ @brief returns the number of occurrences of a key in a JSON object
+
+ Returns the number of elements with key @a key. If ObjectType is the
+ default `std::map` type, the return value will always be `0` (@a key was
+ not found) or `1` (@a key was found).
+
+ @note This method always returns `0` when executed on a JSON type that is
+ not an object.
+
+ @param[in] key key value of the element to count
+
+ @return Number of elements with key @a key. If the JSON value is not an
+ object, the return value will be `0`.
+
+ @complexity Logarithmic in the size of the JSON object.
+
+ @liveexample{The example shows how `count()` is used.,count}
+
+ @since version 1.0.0
+ */
+ template<typename KeyT>
+ size_type count(KeyT&& key) const
+ {
+ // return 0 for all nonobject types
+ return is_object() ? m_value.object->count(std::forward<KeyT>(key)) : 0;
+ }
+
+ /*!
+ @brief check the existence of an element in a JSON object
+
+ Check whether an element exists in a JSON object with key equivalent to
+ @a key. If the element is not found or the JSON value is not an object,
+ false is returned.
+
+ @note This method always returns false when executed on a JSON type
+ that is not an object.
+
+ @param[in] key key value to check its existence.
+
+ @return true if an element with specified @a key exists. If no such
+ element with such key is found or the JSON value is not an object,
+ false is returned.
+
+ @complexity Logarithmic in the size of the JSON object.
+
+ @liveexample{The following code shows an example for `contains()`.,contains}
+
+ @sa @ref find(KeyT&&) -- returns an iterator to an object element
+
+ @since version 3.6.0
+ */
+ template<typename KeyT>
+ bool contains(KeyT&& key) const
+ {
+ return is_object() and m_value.object->find(std::forward<KeyT>(key)) != m_value.object->end();
+ }
+
+ /// @}
+
+
+ ///////////////
+ // iterators //
+ ///////////////
+
+ /// @name iterators
+ /// @{
+
+ /*!
+ @brief returns an iterator to the first element
+
+ Returns an iterator to the first element.
+
+ @image html range-begin-end.svg "Illustration from cppreference.com"
+
+ @return iterator to the first element
+
+ @complexity Constant.
+
+ @requirement This function helps `basic_json` satisfying the
+ [Container](https://en.cppreference.com/w/cpp/named_req/Container)
+ requirements:
+ - The complexity is constant.
+
+ @liveexample{The following code shows an example for `begin()`.,begin}
+
+ @sa @ref cbegin() -- returns a const iterator to the beginning
+ @sa @ref end() -- returns an iterator to the end
+ @sa @ref cend() -- returns a const iterator to the end
+
+ @since version 1.0.0
+ */
+ iterator begin() noexcept
+ {
+ iterator result(this);
+ result.set_begin();
+ return result;
+ }
+
+ /*!
+ @copydoc basic_json::cbegin()
+ */
+ const_iterator begin() const noexcept
+ {
+ return cbegin();
+ }
+
+ /*!
+ @brief returns a const iterator to the first element
+
+ Returns a const iterator to the first element.
+
+ @image html range-begin-end.svg "Illustration from cppreference.com"
+
+ @return const iterator to the first element
+
+ @complexity Constant.
+
+ @requirement This function helps `basic_json` satisfying the
+ [Container](https://en.cppreference.com/w/cpp/named_req/Container)
+ requirements:
+ - The complexity is constant.
+ - Has the semantics of `const_cast<const basic_json&>(*this).begin()`.
+
+ @liveexample{The following code shows an example for `cbegin()`.,cbegin}
+
+ @sa @ref begin() -- returns an iterator to the beginning
+ @sa @ref end() -- returns an iterator to the end
+ @sa @ref cend() -- returns a const iterator to the end
+
+ @since version 1.0.0
+ */
+ const_iterator cbegin() const noexcept
+ {
+ const_iterator result(this);
+ result.set_begin();
+ return result;
+ }
+
+ /*!
+ @brief returns an iterator to one past the last element
+
+ Returns an iterator to one past the last element.
+
+ @image html range-begin-end.svg "Illustration from cppreference.com"
+
+ @return iterator one past the last element
+
+ @complexity Constant.
+
+ @requirement This function helps `basic_json` satisfying the
+ [Container](https://en.cppreference.com/w/cpp/named_req/Container)
+ requirements:
+ - The complexity is constant.
+
+ @liveexample{The following code shows an example for `end()`.,end}
+
+ @sa @ref cend() -- returns a const iterator to the end
+ @sa @ref begin() -- returns an iterator to the beginning
+ @sa @ref cbegin() -- returns a const iterator to the beginning
+
+ @since version 1.0.0
+ */
+ iterator end() noexcept
+ {
+ iterator result(this);
+ result.set_end();
+ return result;
+ }
+
+ /*!
+ @copydoc basic_json::cend()
+ */
+ const_iterator end() const noexcept
+ {
+ return cend();
+ }
+
+ /*!
+ @brief returns a const iterator to one past the last element
+
+ Returns a const iterator to one past the last element.
+
+ @image html range-begin-end.svg "Illustration from cppreference.com"
+
+ @return const iterator one past the last element
+
+ @complexity Constant.
+
+ @requirement This function helps `basic_json` satisfying the
+ [Container](https://en.cppreference.com/w/cpp/named_req/Container)
+ requirements:
+ - The complexity is constant.
+ - Has the semantics of `const_cast<const basic_json&>(*this).end()`.
+
+ @liveexample{The following code shows an example for `cend()`.,cend}
+
+ @sa @ref end() -- returns an iterator to the end
+ @sa @ref begin() -- returns an iterator to the beginning
+ @sa @ref cbegin() -- returns a const iterator to the beginning
+
+ @since version 1.0.0
+ */
+ const_iterator cend() const noexcept
+ {
+ const_iterator result(this);
+ result.set_end();
+ return result;
+ }
+
+ /*!
+ @brief returns an iterator to the reverse-beginning
+
+ Returns an iterator to the reverse-beginning; that is, the last element.
+
+ @image html range-rbegin-rend.svg "Illustration from cppreference.com"
+
+ @complexity Constant.
+
+ @requirement This function helps `basic_json` satisfying the
+ [ReversibleContainer](https://en.cppreference.com/w/cpp/named_req/ReversibleContainer)
+ requirements:
+ - The complexity is constant.
+ - Has the semantics of `reverse_iterator(end())`.
+
+ @liveexample{The following code shows an example for `rbegin()`.,rbegin}
+
+ @sa @ref crbegin() -- returns a const reverse iterator to the beginning
+ @sa @ref rend() -- returns a reverse iterator to the end
+ @sa @ref crend() -- returns a const reverse iterator to the end
+
+ @since version 1.0.0
+ */
+ reverse_iterator rbegin() noexcept
+ {
+ return reverse_iterator(end());
+ }
+
+ /*!
+ @copydoc basic_json::crbegin()
+ */
+ const_reverse_iterator rbegin() const noexcept
+ {
+ return crbegin();
+ }
+
+ /*!
+ @brief returns an iterator to the reverse-end
+
+ Returns an iterator to the reverse-end; that is, one before the first
+ element.
+
+ @image html range-rbegin-rend.svg "Illustration from cppreference.com"
+
+ @complexity Constant.
+
+ @requirement This function helps `basic_json` satisfying the
+ [ReversibleContainer](https://en.cppreference.com/w/cpp/named_req/ReversibleContainer)
+ requirements:
+ - The complexity is constant.
+ - Has the semantics of `reverse_iterator(begin())`.
+
+ @liveexample{The following code shows an example for `rend()`.,rend}
+
+ @sa @ref crend() -- returns a const reverse iterator to the end
+ @sa @ref rbegin() -- returns a reverse iterator to the beginning
+ @sa @ref crbegin() -- returns a const reverse iterator to the beginning
+
+ @since version 1.0.0
+ */
+ reverse_iterator rend() noexcept
+ {
+ return reverse_iterator(begin());
+ }
+
+ /*!
+ @copydoc basic_json::crend()
+ */
+ const_reverse_iterator rend() const noexcept
+ {
+ return crend();
+ }
+
+ /*!
+ @brief returns a const reverse iterator to the last element
+
+ Returns a const iterator to the reverse-beginning; that is, the last
+ element.
+
+ @image html range-rbegin-rend.svg "Illustration from cppreference.com"
+
+ @complexity Constant.
+
+ @requirement This function helps `basic_json` satisfying the
+ [ReversibleContainer](https://en.cppreference.com/w/cpp/named_req/ReversibleContainer)
+ requirements:
+ - The complexity is constant.
+ - Has the semantics of `const_cast<const basic_json&>(*this).rbegin()`.
+
+ @liveexample{The following code shows an example for `crbegin()`.,crbegin}
+
+ @sa @ref rbegin() -- returns a reverse iterator to the beginning
+ @sa @ref rend() -- returns a reverse iterator to the end
+ @sa @ref crend() -- returns a const reverse iterator to the end
+
+ @since version 1.0.0
+ */
+ const_reverse_iterator crbegin() const noexcept
+ {
+ return const_reverse_iterator(cend());
+ }
+
+ /*!
+ @brief returns a const reverse iterator to one before the first
+
+ Returns a const reverse iterator to the reverse-end; that is, one before
+ the first element.
+
+ @image html range-rbegin-rend.svg "Illustration from cppreference.com"
+
+ @complexity Constant.
+
+ @requirement This function helps `basic_json` satisfying the
+ [ReversibleContainer](https://en.cppreference.com/w/cpp/named_req/ReversibleContainer)
+ requirements:
+ - The complexity is constant.
+ - Has the semantics of `const_cast<const basic_json&>(*this).rend()`.
+
+ @liveexample{The following code shows an example for `crend()`.,crend}
+
+ @sa @ref rend() -- returns a reverse iterator to the end
+ @sa @ref rbegin() -- returns a reverse iterator to the beginning
+ @sa @ref crbegin() -- returns a const reverse iterator to the beginning
+
+ @since version 1.0.0
+ */
+ const_reverse_iterator crend() const noexcept
+ {
+ return const_reverse_iterator(cbegin());
+ }
+
+ public:
+ /*!
+ @brief wrapper to access iterator member functions in range-based for
+
+ This function allows to access @ref iterator::key() and @ref
+ iterator::value() during range-based for loops. In these loops, a
+ reference to the JSON values is returned, so there is no access to the
+ underlying iterator.
+
+ For loop without iterator_wrapper:
+
+ @code{cpp}
+ for (auto it = j_object.begin(); it != j_object.end(); ++it)
+ {
+ std::cout << "key: " << it.key() << ", value:" << it.value() << '\n';
+ }
+ @endcode
+
+ Range-based for loop without iterator proxy:
+
+ @code{cpp}
+ for (auto it : j_object)
+ {
+ // "it" is of type json::reference and has no key() member
+ std::cout << "value: " << it << '\n';
+ }
+ @endcode
+
+ Range-based for loop with iterator proxy:
+
+ @code{cpp}
+ for (auto it : json::iterator_wrapper(j_object))
+ {
+ std::cout << "key: " << it.key() << ", value:" << it.value() << '\n';
+ }
+ @endcode
+
+ @note When iterating over an array, `key()` will return the index of the
+ element as string (see example).
+
+ @param[in] ref reference to a JSON value
+ @return iteration proxy object wrapping @a ref with an interface to use in
+ range-based for loops
+
+ @liveexample{The following code shows how the wrapper is used,iterator_wrapper}
+
+ @exceptionsafety Strong guarantee: if an exception is thrown, there are no
+ changes in the JSON value.
+
+ @complexity Constant.
+
+ @note The name of this function is not yet final and may change in the
+ future.
+
+ @deprecated This stream operator is deprecated and will be removed in
+ future 4.0.0 of the library. Please use @ref items() instead;
+ that is, replace `json::iterator_wrapper(j)` with `j.items()`.
+ */
+ JSON_DEPRECATED
+ static iteration_proxy<iterator> iterator_wrapper(reference ref) noexcept
+ {
+ return ref.items();
+ }
+
+ /*!
+ @copydoc iterator_wrapper(reference)
+ */
+ JSON_DEPRECATED
+ static iteration_proxy<const_iterator> iterator_wrapper(const_reference ref) noexcept
+ {
+ return ref.items();
+ }
+
+ /*!
+ @brief helper to access iterator member functions in range-based for
+
+ This function allows to access @ref iterator::key() and @ref
+ iterator::value() during range-based for loops. In these loops, a
+ reference to the JSON values is returned, so there is no access to the
+ underlying iterator.
+
+ For loop without `items()` function:
+
+ @code{cpp}
+ for (auto it = j_object.begin(); it != j_object.end(); ++it)
+ {
+ std::cout << "key: " << it.key() << ", value:" << it.value() << '\n';
+ }
+ @endcode
+
+ Range-based for loop without `items()` function:
+
+ @code{cpp}
+ for (auto it : j_object)
+ {
+ // "it" is of type json::reference and has no key() member
+ std::cout << "value: " << it << '\n';
+ }
+ @endcode
+
+ Range-based for loop with `items()` function:
+
+ @code{cpp}
+ for (auto& el : j_object.items())
+ {
+ std::cout << "key: " << el.key() << ", value:" << el.value() << '\n';
+ }
+ @endcode
+
+ The `items()` function also allows to use
+ [structured bindings](https://en.cppreference.com/w/cpp/language/structured_binding)
+ (C++17):
+
+ @code{cpp}
+ for (auto& [key, val] : j_object.items())
+ {
+ std::cout << "key: " << key << ", value:" << val << '\n';
+ }
+ @endcode
+
+ @note When iterating over an array, `key()` will return the index of the
+ element as string (see example). For primitive types (e.g., numbers),
+ `key()` returns an empty string.
+
+ @return iteration proxy object wrapping @a ref with an interface to use in
+ range-based for loops
+
+ @liveexample{The following code shows how the function is used.,items}
+
+ @exceptionsafety Strong guarantee: if an exception is thrown, there are no
+ changes in the JSON value.
+
+ @complexity Constant.
+
+ @since version 3.1.0, structured bindings support since 3.5.0.
+ */
+ iteration_proxy<iterator> items() noexcept
+ {
+ return iteration_proxy<iterator>(*this);
+ }
+
+ /*!
+ @copydoc items()
+ */
+ iteration_proxy<const_iterator> items() const noexcept
+ {
+ return iteration_proxy<const_iterator>(*this);
+ }
+
+ /// @}
+
+
+ //////////////
+ // capacity //
+ //////////////
+
+ /// @name capacity
+ /// @{
+
+ /*!
+ @brief checks whether the container is empty.
+
+ Checks if a JSON value has no elements (i.e. whether its @ref size is `0`).
+
+ @return The return value depends on the different types and is
+ defined as follows:
+ Value type | return value
+ ----------- | -------------
+ null | `true`
+ boolean | `false`
+ string | `false`
+ number | `false`
+ object | result of function `object_t::empty()`
+ array | result of function `array_t::empty()`
+
+ @liveexample{The following code uses `empty()` to check if a JSON
+ object contains any elements.,empty}
+
+ @complexity Constant, as long as @ref array_t and @ref object_t satisfy
+ the Container concept; that is, their `empty()` functions have constant
+ complexity.
+
+ @iterators No changes.
+
+ @exceptionsafety No-throw guarantee: this function never throws exceptions.
+
+ @note This function does not return whether a string stored as JSON value
+ is empty - it returns whether the JSON container itself is empty which is
+ false in the case of a string.
+
+ @requirement This function helps `basic_json` satisfying the
+ [Container](https://en.cppreference.com/w/cpp/named_req/Container)
+ requirements:
+ - The complexity is constant.
+ - Has the semantics of `begin() == end()`.
+
+ @sa @ref size() -- returns the number of elements
+
+ @since version 1.0.0
+ */
+ bool empty() const noexcept
+ {
+ switch (m_type)
+ {
+ case value_t::null:
+ {
+ // null values are empty
+ return true;
+ }
+
+ case value_t::array:
+ {
+ // delegate call to array_t::empty()
+ return m_value.array->empty();
+ }
+
+ case value_t::object:
+ {
+ // delegate call to object_t::empty()
+ return m_value.object->empty();
+ }
+
+ default:
+ {
+ // all other types are nonempty
+ return false;
+ }
+ }
+ }
+
+ /*!
+ @brief returns the number of elements
+
+ Returns the number of elements in a JSON value.
+
+ @return The return value depends on the different types and is
+ defined as follows:
+ Value type | return value
+ ----------- | -------------
+ null | `0`
+ boolean | `1`
+ string | `1`
+ number | `1`
+ object | result of function object_t::size()
+ array | result of function array_t::size()
+
+ @liveexample{The following code calls `size()` on the different value
+ types.,size}
+
+ @complexity Constant, as long as @ref array_t and @ref object_t satisfy
+ the Container concept; that is, their size() functions have constant
+ complexity.
+
+ @iterators No changes.
+
+ @exceptionsafety No-throw guarantee: this function never throws exceptions.
+
+ @note This function does not return the length of a string stored as JSON
+ value - it returns the number of elements in the JSON value which is 1 in
+ the case of a string.
+
+ @requirement This function helps `basic_json` satisfying the
+ [Container](https://en.cppreference.com/w/cpp/named_req/Container)
+ requirements:
+ - The complexity is constant.
+ - Has the semantics of `std::distance(begin(), end())`.
+
+ @sa @ref empty() -- checks whether the container is empty
+ @sa @ref max_size() -- returns the maximal number of elements
+
+ @since version 1.0.0
+ */
+ size_type size() const noexcept
+ {
+ switch (m_type)
+ {
+ case value_t::null:
+ {
+ // null values are empty
+ return 0;
+ }
+
+ case value_t::array:
+ {
+ // delegate call to array_t::size()
+ return m_value.array->size();
+ }
+
+ case value_t::object:
+ {
+ // delegate call to object_t::size()
+ return m_value.object->size();
+ }
+
+ default:
+ {
+ // all other types have size 1
+ return 1;
+ }
+ }
+ }
+
+ /*!
+ @brief returns the maximum possible number of elements
+
+ Returns the maximum number of elements a JSON value is able to hold due to
+ system or library implementation limitations, i.e. `std::distance(begin(),
+ end())` for the JSON value.
+
+ @return The return value depends on the different types and is
+ defined as follows:
+ Value type | return value
+ ----------- | -------------
+ null | `0` (same as `size()`)
+ boolean | `1` (same as `size()`)
+ string | `1` (same as `size()`)
+ number | `1` (same as `size()`)
+ object | result of function `object_t::max_size()`
+ array | result of function `array_t::max_size()`
+
+ @liveexample{The following code calls `max_size()` on the different value
+ types. Note the output is implementation specific.,max_size}
+
+ @complexity Constant, as long as @ref array_t and @ref object_t satisfy
+ the Container concept; that is, their `max_size()` functions have constant
+ complexity.
+
+ @iterators No changes.
+
+ @exceptionsafety No-throw guarantee: this function never throws exceptions.
+
+ @requirement This function helps `basic_json` satisfying the
+ [Container](https://en.cppreference.com/w/cpp/named_req/Container)
+ requirements:
+ - The complexity is constant.
+ - Has the semantics of returning `b.size()` where `b` is the largest
+ possible JSON value.
+
+ @sa @ref size() -- returns the number of elements
+
+ @since version 1.0.0
+ */
+ size_type max_size() const noexcept
+ {
+ switch (m_type)
+ {
+ case value_t::array:
+ {
+ // delegate call to array_t::max_size()
+ return m_value.array->max_size();
+ }
+
+ case value_t::object:
+ {
+ // delegate call to object_t::max_size()
+ return m_value.object->max_size();
+ }
+
+ default:
+ {
+ // all other types have max_size() == size()
+ return size();
+ }
+ }
+ }
+
+ /// @}
+
+
+ ///////////////
+ // modifiers //
+ ///////////////
+
+ /// @name modifiers
+ /// @{
+
+ /*!
+ @brief clears the contents
+
+ Clears the content of a JSON value and resets it to the default value as
+ if @ref basic_json(value_t) would have been called with the current value
+ type from @ref type():
+
+ Value type | initial value
+ ----------- | -------------
+ null | `null`
+ boolean | `false`
+ string | `""`
+ number | `0`
+ object | `{}`
+ array | `[]`
+
+ @post Has the same effect as calling
+ @code {.cpp}
+ *this = basic_json(type());
+ @endcode
+
+ @liveexample{The example below shows the effect of `clear()` to different
+ JSON types.,clear}
+
+ @complexity Linear in the size of the JSON value.
+
+ @iterators All iterators, pointers and references related to this container
+ are invalidated.
+
+ @exceptionsafety No-throw guarantee: this function never throws exceptions.
+
+ @sa @ref basic_json(value_t) -- constructor that creates an object with the
+ same value than calling `clear()`
+
+ @since version 1.0.0
+ */
+ void clear() noexcept
+ {
+ switch (m_type)
+ {
+ case value_t::number_integer:
+ {
+ m_value.number_integer = 0;
+ break;
+ }
+
+ case value_t::number_unsigned:
+ {
+ m_value.number_unsigned = 0;
+ break;
+ }
+
+ case value_t::number_float:
+ {
+ m_value.number_float = 0.0;
+ break;
+ }
+
+ case value_t::boolean:
+ {
+ m_value.boolean = false;
+ break;
+ }
+
+ case value_t::string:
+ {
+ m_value.string->clear();
+ break;
+ }
+
+ case value_t::array:
+ {
+ m_value.array->clear();
+ break;
+ }
+
+ case value_t::object:
+ {
+ m_value.object->clear();
+ break;
+ }
+
+ default:
+ break;
+ }
+ }
+
+ /*!
+ @brief add an object to an array
+
+ Appends the given element @a val to the end of the JSON value. If the
+ function is called on a JSON null value, an empty array is created before
+ appending @a val.
+
+ @param[in] val the value to add to the JSON array
+
+ @throw type_error.308 when called on a type other than JSON array or
+ null; example: `"cannot use push_back() with number"`
+
+ @complexity Amortized constant.
+
+ @liveexample{The example shows how `push_back()` and `+=` can be used to
+ add elements to a JSON array. Note how the `null` value was silently
+ converted to a JSON array.,push_back}
+
+ @since version 1.0.0
+ */
+ void push_back(basic_json&& val)
+ {
+ // push_back only works for null objects or arrays
+ if (JSON_UNLIKELY(not(is_null() or is_array())))
+ {
+ JSON_THROW(type_error::create(308, "cannot use push_back() with " + std::string(type_name())));
+ }
+
+ // transform null object into an array
+ if (is_null())
+ {
+ m_type = value_t::array;
+ m_value = value_t::array;
+ assert_invariant();
+ }
+
+ // add element to array (move semantics)
+ m_value.array->push_back(std::move(val));
+ // invalidate object: mark it null so we do not call the destructor
+ // cppcheck-suppress accessMoved
+ val.m_type = value_t::null;
+ }
+
+ /*!
+ @brief add an object to an array
+ @copydoc push_back(basic_json&&)
+ */
+ reference operator+=(basic_json&& val)
+ {
+ push_back(std::move(val));
+ return *this;
+ }
+
+ /*!
+ @brief add an object to an array
+ @copydoc push_back(basic_json&&)
+ */
+ void push_back(const basic_json& val)
+ {
+ // push_back only works for null objects or arrays
+ if (JSON_UNLIKELY(not(is_null() or is_array())))
+ {
+ JSON_THROW(type_error::create(308, "cannot use push_back() with " + std::string(type_name())));
+ }
+
+ // transform null object into an array
+ if (is_null())
+ {
+ m_type = value_t::array;
+ m_value = value_t::array;
+ assert_invariant();
+ }
+
+ // add element to array
+ m_value.array->push_back(val);
+ }
+
+ /*!
+ @brief add an object to an array
+ @copydoc push_back(basic_json&&)
+ */
+ reference operator+=(const basic_json& val)
+ {
+ push_back(val);
+ return *this;
+ }
+
+ /*!
+ @brief add an object to an object
+
+ Inserts the given element @a val to the JSON object. If the function is
+ called on a JSON null value, an empty object is created before inserting
+ @a val.
+
+ @param[in] val the value to add to the JSON object
+
+ @throw type_error.308 when called on a type other than JSON object or
+ null; example: `"cannot use push_back() with number"`
+
+ @complexity Logarithmic in the size of the container, O(log(`size()`)).
+
+ @liveexample{The example shows how `push_back()` and `+=` can be used to
+ add elements to a JSON object. Note how the `null` value was silently
+ converted to a JSON object.,push_back__object_t__value}
+
+ @since version 1.0.0
+ */
+ void push_back(const typename object_t::value_type& val)
+ {
+ // push_back only works for null objects or objects
+ if (JSON_UNLIKELY(not(is_null() or is_object())))
+ {
+ JSON_THROW(type_error::create(308, "cannot use push_back() with " + std::string(type_name())));
+ }
+
+ // transform null object into an object
+ if (is_null())
+ {
+ m_type = value_t::object;
+ m_value = value_t::object;
+ assert_invariant();
+ }
+
+ // add element to array
+ m_value.object->insert(val);
+ }
+
+ /*!
+ @brief add an object to an object
+ @copydoc push_back(const typename object_t::value_type&)
+ */
+ reference operator+=(const typename object_t::value_type& val)
+ {
+ push_back(val);
+ return *this;
+ }
+
+ /*!
+ @brief add an object to an object
+
+ This function allows to use `push_back` with an initializer list. In case
+
+ 1. the current value is an object,
+ 2. the initializer list @a init contains only two elements, and
+ 3. the first element of @a init is a string,
+
+ @a init is converted into an object element and added using
+ @ref push_back(const typename object_t::value_type&). Otherwise, @a init
+ is converted to a JSON value and added using @ref push_back(basic_json&&).
+
+ @param[in] init an initializer list
+
+ @complexity Linear in the size of the initializer list @a init.
+
+ @note This function is required to resolve an ambiguous overload error,
+ because pairs like `{"key", "value"}` can be both interpreted as
+ `object_t::value_type` or `std::initializer_list<basic_json>`, see
+ https://github.com/nlohmann/json/issues/235 for more information.
+
+ @liveexample{The example shows how initializer lists are treated as
+ objects when possible.,push_back__initializer_list}
+ */
+ void push_back(initializer_list_t init)
+ {
+ if (is_object() and init.size() == 2 and (*init.begin())->is_string())
+ {
+ basic_json&& key = init.begin()->moved_or_copied();
+ push_back(typename object_t::value_type(
+ std::move(key.get_ref<string_t&>()), (init.begin() + 1)->moved_or_copied()));
+ }
+ else
+ {
+ push_back(basic_json(init));
+ }
+ }
+
+ /*!
+ @brief add an object to an object
+ @copydoc push_back(initializer_list_t)
+ */
+ reference operator+=(initializer_list_t init)
+ {
+ push_back(init);
+ return *this;
+ }
+
+ /*!
+ @brief add an object to an array
+
+ Creates a JSON value from the passed parameters @a args to the end of the
+ JSON value. If the function is called on a JSON null value, an empty array
+ is created before appending the value created from @a args.
+
+ @param[in] args arguments to forward to a constructor of @ref basic_json
+ @tparam Args compatible types to create a @ref basic_json object
+
+ @throw type_error.311 when called on a type other than JSON array or
+ null; example: `"cannot use emplace_back() with number"`
+
+ @complexity Amortized constant.
+
+ @liveexample{The example shows how `push_back()` can be used to add
+ elements to a JSON array. Note how the `null` value was silently converted
+ to a JSON array.,emplace_back}
+
+ @since version 2.0.8
+ */
+ template<class... Args>
+ void emplace_back(Args&& ... args)
+ {
+ // emplace_back only works for null objects or arrays
+ if (JSON_UNLIKELY(not(is_null() or is_array())))
+ {
+ JSON_THROW(type_error::create(311, "cannot use emplace_back() with " + std::string(type_name())));
+ }
+
+ // transform null object into an array
+ if (is_null())
+ {
+ m_type = value_t::array;
+ m_value = value_t::array;
+ assert_invariant();
+ }
+
+ // add element to array (perfect forwarding)
+ m_value.array->emplace_back(std::forward<Args>(args)...);
+ }
+
+ /*!
+ @brief add an object to an object if key does not exist
+
+ Inserts a new element into a JSON object constructed in-place with the
+ given @a args if there is no element with the key in the container. If the
+ function is called on a JSON null value, an empty object is created before
+ appending the value created from @a args.
+
+ @param[in] args arguments to forward to a constructor of @ref basic_json
+ @tparam Args compatible types to create a @ref basic_json object
+
+ @return a pair consisting of an iterator to the inserted element, or the
+ already-existing element if no insertion happened, and a bool
+ denoting whether the insertion took place.
+
+ @throw type_error.311 when called on a type other than JSON object or
+ null; example: `"cannot use emplace() with number"`
+
+ @complexity Logarithmic in the size of the container, O(log(`size()`)).
+
+ @liveexample{The example shows how `emplace()` can be used to add elements
+ to a JSON object. Note how the `null` value was silently converted to a
+ JSON object. Further note how no value is added if there was already one
+ value stored with the same key.,emplace}
+
+ @since version 2.0.8
+ */
+ template<class... Args>
+ std::pair<iterator, bool> emplace(Args&& ... args)
+ {
+ // emplace only works for null objects or arrays
+ if (JSON_UNLIKELY(not(is_null() or is_object())))
+ {
+ JSON_THROW(type_error::create(311, "cannot use emplace() with " + std::string(type_name())));
+ }
+
+ // transform null object into an object
+ if (is_null())
+ {
+ m_type = value_t::object;
+ m_value = value_t::object;
+ assert_invariant();
+ }
+
+ // add element to array (perfect forwarding)
+ auto res = m_value.object->emplace(std::forward<Args>(args)...);
+ // create result iterator and set iterator to the result of emplace
+ auto it = begin();
+ it.m_it.object_iterator = res.first;
+
+ // return pair of iterator and boolean
+ return {it, res.second};
+ }
+
+ /// Helper for insertion of an iterator
+ /// @note: This uses std::distance to support GCC 4.8,
+ /// see https://github.com/nlohmann/json/pull/1257
+ template<typename... Args>
+ iterator insert_iterator(const_iterator pos, Args&& ... args)
+ {
+ iterator result(this);
+ assert(m_value.array != nullptr);
+
+ auto insert_pos = std::distance(m_value.array->begin(), pos.m_it.array_iterator);
+ m_value.array->insert(pos.m_it.array_iterator, std::forward<Args>(args)...);
+ result.m_it.array_iterator = m_value.array->begin() + insert_pos;
+
+ // This could have been written as:
+ // result.m_it.array_iterator = m_value.array->insert(pos.m_it.array_iterator, cnt, val);
+ // but the return value of insert is missing in GCC 4.8, so it is written this way instead.
+
+ return result;
+ }
+
+ /*!
+ @brief inserts element
+
+ Inserts element @a val before iterator @a pos.
+
+ @param[in] pos iterator before which the content will be inserted; may be
+ the end() iterator
+ @param[in] val element to insert
+ @return iterator pointing to the inserted @a val.
+
+ @throw type_error.309 if called on JSON values other than arrays;
+ example: `"cannot use insert() with string"`
+ @throw invalid_iterator.202 if @a pos is not an iterator of *this;
+ example: `"iterator does not fit current value"`
+
+ @complexity Constant plus linear in the distance between @a pos and end of
+ the container.
+
+ @liveexample{The example shows how `insert()` is used.,insert}
+
+ @since version 1.0.0
+ */
+ iterator insert(const_iterator pos, const basic_json& val)
+ {
+ // insert only works for arrays
+ if (JSON_LIKELY(is_array()))
+ {
+ // check if iterator pos fits to this JSON value
+ if (JSON_UNLIKELY(pos.m_object != this))
+ {
+ JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value"));
+ }
+
+ // insert to array and return iterator
+ return insert_iterator(pos, val);
+ }
+
+ JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name())));
+ }
+
+ /*!
+ @brief inserts element
+ @copydoc insert(const_iterator, const basic_json&)
+ */
+ iterator insert(const_iterator pos, basic_json&& val)
+ {
+ return insert(pos, val);
+ }
+
+ /*!
+ @brief inserts elements
+
+ Inserts @a cnt copies of @a val before iterator @a pos.
+
+ @param[in] pos iterator before which the content will be inserted; may be
+ the end() iterator
+ @param[in] cnt number of copies of @a val to insert
+ @param[in] val element to insert
+ @return iterator pointing to the first element inserted, or @a pos if
+ `cnt==0`
+
+ @throw type_error.309 if called on JSON values other than arrays; example:
+ `"cannot use insert() with string"`
+ @throw invalid_iterator.202 if @a pos is not an iterator of *this;
+ example: `"iterator does not fit current value"`
+
+ @complexity Linear in @a cnt plus linear in the distance between @a pos
+ and end of the container.
+
+ @liveexample{The example shows how `insert()` is used.,insert__count}
+
+ @since version 1.0.0
+ */
+ iterator insert(const_iterator pos, size_type cnt, const basic_json& val)
+ {
+ // insert only works for arrays
+ if (JSON_LIKELY(is_array()))
+ {
+ // check if iterator pos fits to this JSON value
+ if (JSON_UNLIKELY(pos.m_object != this))
+ {
+ JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value"));
+ }
+
+ // insert to array and return iterator
+ return insert_iterator(pos, cnt, val);
+ }
+
+ JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name())));
+ }
+
+ /*!
+ @brief inserts elements
+
+ Inserts elements from range `[first, last)` before iterator @a pos.
+
+ @param[in] pos iterator before which the content will be inserted; may be
+ the end() iterator
+ @param[in] first begin of the range of elements to insert
+ @param[in] last end of the range of elements to insert
+
+ @throw type_error.309 if called on JSON values other than arrays; example:
+ `"cannot use insert() with string"`
+ @throw invalid_iterator.202 if @a pos is not an iterator of *this;
+ example: `"iterator does not fit current value"`
+ @throw invalid_iterator.210 if @a first and @a last do not belong to the
+ same JSON value; example: `"iterators do not fit"`
+ @throw invalid_iterator.211 if @a first or @a last are iterators into
+ container for which insert is called; example: `"passed iterators may not
+ belong to container"`
+
+ @return iterator pointing to the first element inserted, or @a pos if
+ `first==last`
+
+ @complexity Linear in `std::distance(first, last)` plus linear in the
+ distance between @a pos and end of the container.
+
+ @liveexample{The example shows how `insert()` is used.,insert__range}
+
+ @since version 1.0.0
+ */
+ iterator insert(const_iterator pos, const_iterator first, const_iterator last)
+ {
+ // insert only works for arrays
+ if (JSON_UNLIKELY(not is_array()))
+ {
+ JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name())));
+ }
+
+ // check if iterator pos fits to this JSON value
+ if (JSON_UNLIKELY(pos.m_object != this))
+ {
+ JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value"));
+ }
+
+ // check if range iterators belong to the same JSON object
+ if (JSON_UNLIKELY(first.m_object != last.m_object))
+ {
+ JSON_THROW(invalid_iterator::create(210, "iterators do not fit"));
+ }
+
+ if (JSON_UNLIKELY(first.m_object == this))
+ {
+ JSON_THROW(invalid_iterator::create(211, "passed iterators may not belong to container"));
+ }
+
+ // insert to array and return iterator
+ return insert_iterator(pos, first.m_it.array_iterator, last.m_it.array_iterator);
+ }
+
+ /*!
+ @brief inserts elements
+
+ Inserts elements from initializer list @a ilist before iterator @a pos.
+
+ @param[in] pos iterator before which the content will be inserted; may be
+ the end() iterator
+ @param[in] ilist initializer list to insert the values from
+
+ @throw type_error.309 if called on JSON values other than arrays; example:
+ `"cannot use insert() with string"`
+ @throw invalid_iterator.202 if @a pos is not an iterator of *this;
+ example: `"iterator does not fit current value"`
+
+ @return iterator pointing to the first element inserted, or @a pos if
+ `ilist` is empty
+
+ @complexity Linear in `ilist.size()` plus linear in the distance between
+ @a pos and end of the container.
+
+ @liveexample{The example shows how `insert()` is used.,insert__ilist}
+
+ @since version 1.0.0
+ */
+ iterator insert(const_iterator pos, initializer_list_t ilist)
+ {
+ // insert only works for arrays
+ if (JSON_UNLIKELY(not is_array()))
+ {
+ JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name())));
+ }
+
+ // check if iterator pos fits to this JSON value
+ if (JSON_UNLIKELY(pos.m_object != this))
+ {
+ JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value"));
+ }
+
+ // insert to array and return iterator
+ return insert_iterator(pos, ilist.begin(), ilist.end());
+ }
+
+ /*!
+ @brief inserts elements
+
+ Inserts elements from range `[first, last)`.
+
+ @param[in] first begin of the range of elements to insert
+ @param[in] last end of the range of elements to insert
+
+ @throw type_error.309 if called on JSON values other than objects; example:
+ `"cannot use insert() with string"`
+ @throw invalid_iterator.202 if iterator @a first or @a last does does not
+ point to an object; example: `"iterators first and last must point to
+ objects"`
+ @throw invalid_iterator.210 if @a first and @a last do not belong to the
+ same JSON value; example: `"iterators do not fit"`
+
+ @complexity Logarithmic: `O(N*log(size() + N))`, where `N` is the number
+ of elements to insert.
+
+ @liveexample{The example shows how `insert()` is used.,insert__range_object}
+
+ @since version 3.0.0
+ */
+ void insert(const_iterator first, const_iterator last)
+ {
+ // insert only works for objects
+ if (JSON_UNLIKELY(not is_object()))
+ {
+ JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name())));
+ }
+
+ // check if range iterators belong to the same JSON object
+ if (JSON_UNLIKELY(first.m_object != last.m_object))
+ {
+ JSON_THROW(invalid_iterator::create(210, "iterators do not fit"));
+ }
+
+ // passed iterators must belong to objects
+ if (JSON_UNLIKELY(not first.m_object->is_object()))
+ {
+ JSON_THROW(invalid_iterator::create(202, "iterators first and last must point to objects"));
+ }
+
+ m_value.object->insert(first.m_it.object_iterator, last.m_it.object_iterator);
+ }
+
+ /*!
+ @brief updates a JSON object from another object, overwriting existing keys
+
+ Inserts all values from JSON object @a j and overwrites existing keys.
+
+ @param[in] j JSON object to read values from
+
+ @throw type_error.312 if called on JSON values other than objects; example:
+ `"cannot use update() with string"`
+
+ @complexity O(N*log(size() + N)), where N is the number of elements to
+ insert.
+
+ @liveexample{The example shows how `update()` is used.,update}
+
+ @sa https://docs.python.org/3.6/library/stdtypes.html#dict.update
+
+ @since version 3.0.0
+ */
+ void update(const_reference j)
+ {
+ // implicitly convert null value to an empty object
+ if (is_null())
+ {
+ m_type = value_t::object;
+ m_value.object = create<object_t>();
+ assert_invariant();
+ }
+
+ if (JSON_UNLIKELY(not is_object()))
+ {
+ JSON_THROW(type_error::create(312, "cannot use update() with " + std::string(type_name())));
+ }
+ if (JSON_UNLIKELY(not j.is_object()))
+ {
+ JSON_THROW(type_error::create(312, "cannot use update() with " + std::string(j.type_name())));
+ }
+
+ for (auto it = j.cbegin(); it != j.cend(); ++it)
+ {
+ m_value.object->operator[](it.key()) = it.value();
+ }
+ }
+
+ /*!
+ @brief updates a JSON object from another object, overwriting existing keys
+
+ Inserts all values from from range `[first, last)` and overwrites existing
+ keys.
+
+ @param[in] first begin of the range of elements to insert
+ @param[in] last end of the range of elements to insert
+
+ @throw type_error.312 if called on JSON values other than objects; example:
+ `"cannot use update() with string"`
+ @throw invalid_iterator.202 if iterator @a first or @a last does does not
+ point to an object; example: `"iterators first and last must point to
+ objects"`
+ @throw invalid_iterator.210 if @a first and @a last do not belong to the
+ same JSON value; example: `"iterators do not fit"`
+
+ @complexity O(N*log(size() + N)), where N is the number of elements to
+ insert.
+
+ @liveexample{The example shows how `update()` is used__range.,update}
+
+ @sa https://docs.python.org/3.6/library/stdtypes.html#dict.update
+
+ @since version 3.0.0
+ */
+ void update(const_iterator first, const_iterator last)
+ {
+ // implicitly convert null value to an empty object
+ if (is_null())
+ {
+ m_type = value_t::object;
+ m_value.object = create<object_t>();
+ assert_invariant();
+ }
+
+ if (JSON_UNLIKELY(not is_object()))
+ {
+ JSON_THROW(type_error::create(312, "cannot use update() with " + std::string(type_name())));
+ }
+
+ // check if range iterators belong to the same JSON object
+ if (JSON_UNLIKELY(first.m_object != last.m_object))
+ {
+ JSON_THROW(invalid_iterator::create(210, "iterators do not fit"));
+ }
+
+ // passed iterators must belong to objects
+ if (JSON_UNLIKELY(not first.m_object->is_object()
+ or not last.m_object->is_object()))
+ {
+ JSON_THROW(invalid_iterator::create(202, "iterators first and last must point to objects"));
+ }
+
+ for (auto it = first; it != last; ++it)
+ {
+ m_value.object->operator[](it.key()) = it.value();
+ }
+ }
+
+ /*!
+ @brief exchanges the values
+
+ Exchanges the contents of the JSON value with those of @a other. Does not
+ invoke any move, copy, or swap operations on individual elements. All
+ iterators and references remain valid. The past-the-end iterator is
+ invalidated.
+
+ @param[in,out] other JSON value to exchange the contents with
+
+ @complexity Constant.
+
+ @liveexample{The example below shows how JSON values can be swapped with
+ `swap()`.,swap__reference}
+
+ @since version 1.0.0
+ */
+ void swap(reference other) noexcept (
+ std::is_nothrow_move_constructible<value_t>::value and
+ std::is_nothrow_move_assignable<value_t>::value and
+ std::is_nothrow_move_constructible<json_value>::value and
+ std::is_nothrow_move_assignable<json_value>::value
+ )
+ {
+ std::swap(m_type, other.m_type);
+ std::swap(m_value, other.m_value);
+ assert_invariant();
+ }
+
+ /*!
+ @brief exchanges the values
+
+ Exchanges the contents of a JSON array with those of @a other. Does not
+ invoke any move, copy, or swap operations on individual elements. All
+ iterators and references remain valid. The past-the-end iterator is
+ invalidated.
+
+ @param[in,out] other array to exchange the contents with
+
+ @throw type_error.310 when JSON value is not an array; example: `"cannot
+ use swap() with string"`
+
+ @complexity Constant.
+
+ @liveexample{The example below shows how arrays can be swapped with
+ `swap()`.,swap__array_t}
+
+ @since version 1.0.0
+ */
+ void swap(array_t& other)
+ {
+ // swap only works for arrays
+ if (JSON_LIKELY(is_array()))
+ {
+ std::swap(*(m_value.array), other);
+ }
+ else
+ {
+ JSON_THROW(type_error::create(310, "cannot use swap() with " + std::string(type_name())));
+ }
+ }
+
+ /*!
+ @brief exchanges the values
+
+ Exchanges the contents of a JSON object with those of @a other. Does not
+ invoke any move, copy, or swap operations on individual elements. All
+ iterators and references remain valid. The past-the-end iterator is
+ invalidated.
+
+ @param[in,out] other object to exchange the contents with
+
+ @throw type_error.310 when JSON value is not an object; example:
+ `"cannot use swap() with string"`
+
+ @complexity Constant.
+
+ @liveexample{The example below shows how objects can be swapped with
+ `swap()`.,swap__object_t}
+
+ @since version 1.0.0
+ */
+ void swap(object_t& other)
+ {
+ // swap only works for objects
+ if (JSON_LIKELY(is_object()))
+ {
+ std::swap(*(m_value.object), other);
+ }
+ else
+ {
+ JSON_THROW(type_error::create(310, "cannot use swap() with " + std::string(type_name())));
+ }
+ }
+
+ /*!
+ @brief exchanges the values
+
+ Exchanges the contents of a JSON string with those of @a other. Does not
+ invoke any move, copy, or swap operations on individual elements. All
+ iterators and references remain valid. The past-the-end iterator is
+ invalidated.
+
+ @param[in,out] other string to exchange the contents with
+
+ @throw type_error.310 when JSON value is not a string; example: `"cannot
+ use swap() with boolean"`
+
+ @complexity Constant.
+
+ @liveexample{The example below shows how strings can be swapped with
+ `swap()`.,swap__string_t}
+
+ @since version 1.0.0
+ */
+ void swap(string_t& other)
+ {
+ // swap only works for strings
+ if (JSON_LIKELY(is_string()))
+ {
+ std::swap(*(m_value.string), other);
+ }
+ else
+ {
+ JSON_THROW(type_error::create(310, "cannot use swap() with " + std::string(type_name())));
+ }
+ }
+
+ /// @}
+
+ public:
+ //////////////////////////////////////////
+ // lexicographical comparison operators //
+ //////////////////////////////////////////
+
+ /// @name lexicographical comparison operators
+ /// @{
+
+ /*!
+ @brief comparison: equal
+
+ Compares two JSON values for equality according to the following rules:
+ - Two JSON values are equal if (1) they are from the same type and (2)
+ their stored values are the same according to their respective
+ `operator==`.
+ - Integer and floating-point numbers are automatically converted before
+ comparison. Note than two NaN values are always treated as unequal.
+ - Two JSON null values are equal.
+
+ @note Floating-point inside JSON values numbers are compared with
+ `json::number_float_t::operator==` which is `double::operator==` by
+ default. To compare floating-point while respecting an epsilon, an alternative
+ [comparison function](https://github.com/mariokonrad/marnav/blob/master/src/marnav/math/floatingpoint.hpp#L34-#L39)
+ could be used, for instance
+ @code {.cpp}
+ template<typename T, typename = typename std::enable_if<std::is_floating_point<T>::value, T>::type>
+ inline bool is_same(T a, T b, T epsilon = std::numeric_limits<T>::epsilon()) noexcept
+ {
+ return std::abs(a - b) <= epsilon;
+ }
+ @endcode
+
+ @note NaN values never compare equal to themselves or to other NaN values.
+
+ @param[in] lhs first JSON value to consider
+ @param[in] rhs second JSON value to consider
+ @return whether the values @a lhs and @a rhs are equal
+
+ @exceptionsafety No-throw guarantee: this function never throws exceptions.
+
+ @complexity Linear.
+
+ @liveexample{The example demonstrates comparing several JSON
+ types.,operator__equal}
+
+ @since version 1.0.0
+ */
+ friend bool operator==(const_reference lhs, const_reference rhs) noexcept
+ {
+ const auto lhs_type = lhs.type();
+ const auto rhs_type = rhs.type();
+
+ if (lhs_type == rhs_type)
+ {
+ switch (lhs_type)
+ {
+ case value_t::array:
+ return *lhs.m_value.array == *rhs.m_value.array;
+
+ case value_t::object:
+ return *lhs.m_value.object == *rhs.m_value.object;
+
+ case value_t::null:
+ return true;
+
+ case value_t::string:
+ return *lhs.m_value.string == *rhs.m_value.string;
+
+ case value_t::boolean:
+ return lhs.m_value.boolean == rhs.m_value.boolean;
+
+ case value_t::number_integer:
+ return lhs.m_value.number_integer == rhs.m_value.number_integer;
+
+ case value_t::number_unsigned:
+ return lhs.m_value.number_unsigned == rhs.m_value.number_unsigned;
+
+ case value_t::number_float:
+ return lhs.m_value.number_float == rhs.m_value.number_float;
+
+ default:
+ return false;
+ }
+ }
+ else if (lhs_type == value_t::number_integer and rhs_type == value_t::number_float)
+ {
+ return static_cast<number_float_t>(lhs.m_value.number_integer) == rhs.m_value.number_float;
+ }
+ else if (lhs_type == value_t::number_float and rhs_type == value_t::number_integer)
+ {
+ return lhs.m_value.number_float == static_cast<number_float_t>(rhs.m_value.number_integer);
+ }
+ else if (lhs_type == value_t::number_unsigned and rhs_type == value_t::number_float)
+ {
+ return static_cast<number_float_t>(lhs.m_value.number_unsigned) == rhs.m_value.number_float;
+ }
+ else if (lhs_type == value_t::number_float and rhs_type == value_t::number_unsigned)
+ {
+ return lhs.m_value.number_float == static_cast<number_float_t>(rhs.m_value.number_unsigned);
+ }
+ else if (lhs_type == value_t::number_unsigned and rhs_type == value_t::number_integer)
+ {
+ return static_cast<number_integer_t>(lhs.m_value.number_unsigned) == rhs.m_value.number_integer;
+ }
+ else if (lhs_type == value_t::number_integer and rhs_type == value_t::number_unsigned)
+ {
+ return lhs.m_value.number_integer == static_cast<number_integer_t>(rhs.m_value.number_unsigned);
+ }
+
+ return false;
+ }
+
+ /*!
+ @brief comparison: equal
+ @copydoc operator==(const_reference, const_reference)
+ */
+ template<typename ScalarType, typename std::enable_if<
+ std::is_scalar<ScalarType>::value, int>::type = 0>
+ friend bool operator==(const_reference lhs, const ScalarType rhs) noexcept
+ {
+ return lhs == basic_json(rhs);
+ }
+
+ /*!
+ @brief comparison: equal
+ @copydoc operator==(const_reference, const_reference)
+ */
+ template<typename ScalarType, typename std::enable_if<
+ std::is_scalar<ScalarType>::value, int>::type = 0>
+ friend bool operator==(const ScalarType lhs, const_reference rhs) noexcept
+ {
+ return basic_json(lhs) == rhs;
+ }
+
+ /*!
+ @brief comparison: not equal
+
+ Compares two JSON values for inequality by calculating `not (lhs == rhs)`.
+
+ @param[in] lhs first JSON value to consider
+ @param[in] rhs second JSON value to consider
+ @return whether the values @a lhs and @a rhs are not equal
+
+ @complexity Linear.
+
+ @exceptionsafety No-throw guarantee: this function never throws exceptions.
+
+ @liveexample{The example demonstrates comparing several JSON
+ types.,operator__notequal}
+
+ @since version 1.0.0
+ */
+ friend bool operator!=(const_reference lhs, const_reference rhs) noexcept
+ {
+ return not (lhs == rhs);
+ }
+
+ /*!
+ @brief comparison: not equal
+ @copydoc operator!=(const_reference, const_reference)
+ */
+ template<typename ScalarType, typename std::enable_if<
+ std::is_scalar<ScalarType>::value, int>::type = 0>
+ friend bool operator!=(const_reference lhs, const ScalarType rhs) noexcept
+ {
+ return lhs != basic_json(rhs);
+ }
+
+ /*!
+ @brief comparison: not equal
+ @copydoc operator!=(const_reference, const_reference)
+ */
+ template<typename ScalarType, typename std::enable_if<
+ std::is_scalar<ScalarType>::value, int>::type = 0>
+ friend bool operator!=(const ScalarType lhs, const_reference rhs) noexcept
+ {
+ return basic_json(lhs) != rhs;
+ }
+
+ /*!
+ @brief comparison: less than
+
+ Compares whether one JSON value @a lhs is less than another JSON value @a
+ rhs according to the following rules:
+ - If @a lhs and @a rhs have the same type, the values are compared using
+ the default `<` operator.
+ - Integer and floating-point numbers are automatically converted before
+ comparison
+ - In case @a lhs and @a rhs have different types, the values are ignored
+ and the order of the types is considered, see
+ @ref operator<(const value_t, const value_t).
+
+ @param[in] lhs first JSON value to consider
+ @param[in] rhs second JSON value to consider
+ @return whether @a lhs is less than @a rhs
+
+ @complexity Linear.
+
+ @exceptionsafety No-throw guarantee: this function never throws exceptions.
+
+ @liveexample{The example demonstrates comparing several JSON
+ types.,operator__less}
+
+ @since version 1.0.0
+ */
+ friend bool operator<(const_reference lhs, const_reference rhs) noexcept
+ {
+ const auto lhs_type = lhs.type();
+ const auto rhs_type = rhs.type();
+
+ if (lhs_type == rhs_type)
+ {
+ switch (lhs_type)
+ {
+ case value_t::array:
+ // note parentheses are necessary, see
+ // https://github.com/nlohmann/json/issues/1530
+ return (*lhs.m_value.array) < (*rhs.m_value.array);
+
+ case value_t::object:
+ return *lhs.m_value.object < *rhs.m_value.object;
+
+ case value_t::null:
+ return false;
+
+ case value_t::string:
+ return *lhs.m_value.string < *rhs.m_value.string;
+
+ case value_t::boolean:
+ return lhs.m_value.boolean < rhs.m_value.boolean;
+
+ case value_t::number_integer:
+ return lhs.m_value.number_integer < rhs.m_value.number_integer;
+
+ case value_t::number_unsigned:
+ return lhs.m_value.number_unsigned < rhs.m_value.number_unsigned;
+
+ case value_t::number_float:
+ return lhs.m_value.number_float < rhs.m_value.number_float;
+
+ default:
+ return false;
+ }
+ }
+ else if (lhs_type == value_t::number_integer and rhs_type == value_t::number_float)
+ {
+ return static_cast<number_float_t>(lhs.m_value.number_integer) < rhs.m_value.number_float;
+ }
+ else if (lhs_type == value_t::number_float and rhs_type == value_t::number_integer)
+ {
+ return lhs.m_value.number_float < static_cast<number_float_t>(rhs.m_value.number_integer);
+ }
+ else if (lhs_type == value_t::number_unsigned and rhs_type == value_t::number_float)
+ {
+ return static_cast<number_float_t>(lhs.m_value.number_unsigned) < rhs.m_value.number_float;
+ }
+ else if (lhs_type == value_t::number_float and rhs_type == value_t::number_unsigned)
+ {
+ return lhs.m_value.number_float < static_cast<number_float_t>(rhs.m_value.number_unsigned);
+ }
+ else if (lhs_type == value_t::number_integer and rhs_type == value_t::number_unsigned)
+ {
+ return lhs.m_value.number_integer < static_cast<number_integer_t>(rhs.m_value.number_unsigned);
+ }
+ else if (lhs_type == value_t::number_unsigned and rhs_type == value_t::number_integer)
+ {
+ return static_cast<number_integer_t>(lhs.m_value.number_unsigned) < rhs.m_value.number_integer;
+ }
+
+ // We only reach this line if we cannot compare values. In that case,
+ // we compare types. Note we have to call the operator explicitly,
+ // because MSVC has problems otherwise.
+ return operator<(lhs_type, rhs_type);
+ }
+
+ /*!
+ @brief comparison: less than
+ @copydoc operator<(const_reference, const_reference)
+ */
+ template<typename ScalarType, typename std::enable_if<
+ std::is_scalar<ScalarType>::value, int>::type = 0>
+ friend bool operator<(const_reference lhs, const ScalarType rhs) noexcept
+ {
+ return lhs < basic_json(rhs);
+ }
+
+ /*!
+ @brief comparison: less than
+ @copydoc operator<(const_reference, const_reference)
+ */
+ template<typename ScalarType, typename std::enable_if<
+ std::is_scalar<ScalarType>::value, int>::type = 0>
+ friend bool operator<(const ScalarType lhs, const_reference rhs) noexcept
+ {
+ return basic_json(lhs) < rhs;
+ }
+
+ /*!
+ @brief comparison: less than or equal
+
+ Compares whether one JSON value @a lhs is less than or equal to another
+ JSON value by calculating `not (rhs < lhs)`.
+
+ @param[in] lhs first JSON value to consider
+ @param[in] rhs second JSON value to consider
+ @return whether @a lhs is less than or equal to @a rhs
+
+ @complexity Linear.
+
+ @exceptionsafety No-throw guarantee: this function never throws exceptions.
+
+ @liveexample{The example demonstrates comparing several JSON
+ types.,operator__greater}
+
+ @since version 1.0.0
+ */
+ friend bool operator<=(const_reference lhs, const_reference rhs) noexcept
+ {
+ return not (rhs < lhs);
+ }
+
+ /*!
+ @brief comparison: less than or equal
+ @copydoc operator<=(const_reference, const_reference)
+ */
+ template<typename ScalarType, typename std::enable_if<
+ std::is_scalar<ScalarType>::value, int>::type = 0>
+ friend bool operator<=(const_reference lhs, const ScalarType rhs) noexcept
+ {
+ return lhs <= basic_json(rhs);
+ }
+
+ /*!
+ @brief comparison: less than or equal
+ @copydoc operator<=(const_reference, const_reference)
+ */
+ template<typename ScalarType, typename std::enable_if<
+ std::is_scalar<ScalarType>::value, int>::type = 0>
+ friend bool operator<=(const ScalarType lhs, const_reference rhs) noexcept
+ {
+ return basic_json(lhs) <= rhs;
+ }
+
+ /*!
+ @brief comparison: greater than
+
+ Compares whether one JSON value @a lhs is greater than another
+ JSON value by calculating `not (lhs <= rhs)`.
+
+ @param[in] lhs first JSON value to consider
+ @param[in] rhs second JSON value to consider
+ @return whether @a lhs is greater than to @a rhs
+
+ @complexity Linear.
+
+ @exceptionsafety No-throw guarantee: this function never throws exceptions.
+
+ @liveexample{The example demonstrates comparing several JSON
+ types.,operator__lessequal}
+
+ @since version 1.0.0
+ */
+ friend bool operator>(const_reference lhs, const_reference rhs) noexcept
+ {
+ return not (lhs <= rhs);
+ }
+
+ /*!
+ @brief comparison: greater than
+ @copydoc operator>(const_reference, const_reference)
+ */
+ template<typename ScalarType, typename std::enable_if<
+ std::is_scalar<ScalarType>::value, int>::type = 0>
+ friend bool operator>(const_reference lhs, const ScalarType rhs) noexcept
+ {
+ return lhs > basic_json(rhs);
+ }
+
+ /*!
+ @brief comparison: greater than
+ @copydoc operator>(const_reference, const_reference)
+ */
+ template<typename ScalarType, typename std::enable_if<
+ std::is_scalar<ScalarType>::value, int>::type = 0>
+ friend bool operator>(const ScalarType lhs, const_reference rhs) noexcept
+ {
+ return basic_json(lhs) > rhs;
+ }
+
+ /*!
+ @brief comparison: greater than or equal
+
+ Compares whether one JSON value @a lhs is greater than or equal to another
+ JSON value by calculating `not (lhs < rhs)`.
+
+ @param[in] lhs first JSON value to consider
+ @param[in] rhs second JSON value to consider
+ @return whether @a lhs is greater than or equal to @a rhs
+
+ @complexity Linear.
+
+ @exceptionsafety No-throw guarantee: this function never throws exceptions.
+
+ @liveexample{The example demonstrates comparing several JSON
+ types.,operator__greaterequal}
+
+ @since version 1.0.0
+ */
+ friend bool operator>=(const_reference lhs, const_reference rhs) noexcept
+ {
+ return not (lhs < rhs);
+ }
+
+ /*!
+ @brief comparison: greater than or equal
+ @copydoc operator>=(const_reference, const_reference)
+ */
+ template<typename ScalarType, typename std::enable_if<
+ std::is_scalar<ScalarType>::value, int>::type = 0>
+ friend bool operator>=(const_reference lhs, const ScalarType rhs) noexcept
+ {
+ return lhs >= basic_json(rhs);
+ }
+
+ /*!
+ @brief comparison: greater than or equal
+ @copydoc operator>=(const_reference, const_reference)
+ */
+ template<typename ScalarType, typename std::enable_if<
+ std::is_scalar<ScalarType>::value, int>::type = 0>
+ friend bool operator>=(const ScalarType lhs, const_reference rhs) noexcept
+ {
+ return basic_json(lhs) >= rhs;
+ }
+
+ /// @}
+
+ ///////////////////
+ // serialization //
+ ///////////////////
+
+ /// @name serialization
+ /// @{
+
+ /*!
+ @brief serialize to stream
+
+ Serialize the given JSON value @a j to the output stream @a o. The JSON
+ value will be serialized using the @ref dump member function.
+
+ - The indentation of the output can be controlled with the member variable
+ `width` of the output stream @a o. For instance, using the manipulator
+ `std::setw(4)` on @a o sets the indentation level to `4` and the
+ serialization result is the same as calling `dump(4)`.
+
+ - The indentation character can be controlled with the member variable
+ `fill` of the output stream @a o. For instance, the manipulator
+ `std::setfill('\\t')` sets indentation to use a tab character rather than
+ the default space character.
+
+ @param[in,out] o stream to serialize to
+ @param[in] j JSON value to serialize
+
+ @return the stream @a o
+
+ @throw type_error.316 if a string stored inside the JSON value is not
+ UTF-8 encoded
+
+ @complexity Linear.
+
+ @liveexample{The example below shows the serialization with different
+ parameters to `width` to adjust the indentation level.,operator_serialize}
+
+ @since version 1.0.0; indentation character added in version 3.0.0
+ */
+ friend std::ostream& operator<<(std::ostream& o, const basic_json& j)
+ {
+ // read width member and use it as indentation parameter if nonzero
+ const bool pretty_print = o.width() > 0;
+ const auto indentation = pretty_print ? o.width() : 0;
+
+ // reset width to 0 for subsequent calls to this stream
+ o.width(0);
+
+ // do the actual serialization
+ serializer s(detail::output_adapter<char>(o), o.fill());
+ s.dump(j, pretty_print, false, static_cast<unsigned int>(indentation));
+ return o;
+ }
+
+ /*!
+ @brief serialize to stream
+ @deprecated This stream operator is deprecated and will be removed in
+ future 4.0.0 of the library. Please use
+ @ref operator<<(std::ostream&, const basic_json&)
+ instead; that is, replace calls like `j >> o;` with `o << j;`.
+ @since version 1.0.0; deprecated since version 3.0.0
+ */
+ JSON_DEPRECATED
+ friend std::ostream& operator>>(const basic_json& j, std::ostream& o)
+ {
+ return o << j;
+ }
+
+ /// @}
+
+
+ /////////////////////
+ // deserialization //
+ /////////////////////
+
+ /// @name deserialization
+ /// @{
+
+ /*!
+ @brief deserialize from a compatible input
+
+ This function reads from a compatible input. Examples are:
+ - an array of 1-byte values
+ - strings with character/literal type with size of 1 byte
+ - input streams
+ - container with contiguous storage of 1-byte values. Compatible container
+ types include `std::vector`, `std::string`, `std::array`,
+ `std::valarray`, and `std::initializer_list`. Furthermore, C-style
+ arrays can be used with `std::begin()`/`std::end()`. User-defined
+ containers can be used as long as they implement random-access iterators
+ and a contiguous storage.
+
+ @pre Each element of the container has a size of 1 byte. Violating this
+ precondition yields undefined behavior. **This precondition is enforced
+ with a static assertion.**
+
+ @pre The container storage is contiguous. Violating this precondition
+ yields undefined behavior. **This precondition is enforced with an
+ assertion.**
+
+ @warning There is no way to enforce all preconditions at compile-time. If
+ the function is called with a noncompliant container and with
+ assertions switched off, the behavior is undefined and will most
+ likely yield segmentation violation.
+
+ @param[in] i input to read from
+ @param[in] cb a parser callback function of type @ref parser_callback_t
+ which is used to control the deserialization by filtering unwanted values
+ (optional)
+ @param[in] allow_exceptions whether to throw exceptions in case of a
+ parse error (optional, true by default)
+
+ @return deserialized JSON value; in case of a parse error and
+ @a allow_exceptions set to `false`, the return value will be
+ value_t::discarded.
+
+ @throw parse_error.101 if a parse error occurs; example: `""unexpected end
+ of input; expected string literal""`
+ @throw parse_error.102 if to_unicode fails or surrogate error
+ @throw parse_error.103 if to_unicode fails
+
+ @complexity Linear in the length of the input. The parser is a predictive
+ LL(1) parser. The complexity can be higher if the parser callback function
+ @a cb has a super-linear complexity.
+
+ @note A UTF-8 byte order mark is silently ignored.
+
+ @liveexample{The example below demonstrates the `parse()` function reading
+ from an array.,parse__array__parser_callback_t}
+
+ @liveexample{The example below demonstrates the `parse()` function with
+ and without callback function.,parse__string__parser_callback_t}
+
+ @liveexample{The example below demonstrates the `parse()` function with
+ and without callback function.,parse__istream__parser_callback_t}
+
+ @liveexample{The example below demonstrates the `parse()` function reading
+ from a contiguous container.,parse__contiguouscontainer__parser_callback_t}
+
+ @since version 2.0.3 (contiguous containers)
+ */
+ JSON_NODISCARD
+ static basic_json parse(detail::input_adapter&& i,
+ const parser_callback_t cb = nullptr,
+ const bool allow_exceptions = true)
+ {
+ basic_json result;
+ parser(i, cb, allow_exceptions).parse(true, result);
+ return result;
+ }
+
+ static bool accept(detail::input_adapter&& i)
+ {
+ return parser(i).accept(true);
+ }
+
+ /*!
+ @brief generate SAX events
+
+ The SAX event lister must follow the interface of @ref json_sax.
+
+ This function reads from a compatible input. Examples are:
+ - an array of 1-byte values
+ - strings with character/literal type with size of 1 byte
+ - input streams
+ - container with contiguous storage of 1-byte values. Compatible container
+ types include `std::vector`, `std::string`, `std::array`,
+ `std::valarray`, and `std::initializer_list`. Furthermore, C-style
+ arrays can be used with `std::begin()`/`std::end()`. User-defined
+ containers can be used as long as they implement random-access iterators
+ and a contiguous storage.
+
+ @pre Each element of the container has a size of 1 byte. Violating this
+ precondition yields undefined behavior. **This precondition is enforced
+ with a static assertion.**
+
+ @pre The container storage is contiguous. Violating this precondition
+ yields undefined behavior. **This precondition is enforced with an
+ assertion.**
+
+ @warning There is no way to enforce all preconditions at compile-time. If
+ the function is called with a noncompliant container and with
+ assertions switched off, the behavior is undefined and will most
+ likely yield segmentation violation.
+
+ @param[in] i input to read from
+ @param[in,out] sax SAX event listener
+ @param[in] format the format to parse (JSON, CBOR, MessagePack, or UBJSON)
+ @param[in] strict whether the input has to be consumed completely
+
+ @return return value of the last processed SAX event
+
+ @throw parse_error.101 if a parse error occurs; example: `""unexpected end
+ of input; expected string literal""`
+ @throw parse_error.102 if to_unicode fails or surrogate error
+ @throw parse_error.103 if to_unicode fails
+
+ @complexity Linear in the length of the input. The parser is a predictive
+ LL(1) parser. The complexity can be higher if the SAX consumer @a sax has
+ a super-linear complexity.
+
+ @note A UTF-8 byte order mark is silently ignored.
+
+ @liveexample{The example below demonstrates the `sax_parse()` function
+ reading from string and processing the events with a user-defined SAX
+ event consumer.,sax_parse}
+
+ @since version 3.2.0
+ */
+ template <typename SAX>
+ static bool sax_parse(detail::input_adapter&& i, SAX* sax,
+ input_format_t format = input_format_t::json,
+ const bool strict = true)
+ {
+ assert(sax);
+ return format == input_format_t::json
+ ? parser(std::move(i)).sax_parse(sax, strict)
+ : detail::binary_reader<basic_json, SAX>(std::move(i)).sax_parse(format, sax, strict);
+ }
+
+ /*!
+ @brief deserialize from an iterator range with contiguous storage
+
+ This function reads from an iterator range of a container with contiguous
+ storage of 1-byte values. Compatible container types include
+ `std::vector`, `std::string`, `std::array`, `std::valarray`, and
+ `std::initializer_list`. Furthermore, C-style arrays can be used with
+ `std::begin()`/`std::end()`. User-defined containers can be used as long
+ as they implement random-access iterators and a contiguous storage.
+
+ @pre The iterator range is contiguous. Violating this precondition yields
+ undefined behavior. **This precondition is enforced with an assertion.**
+ @pre Each element in the range has a size of 1 byte. Violating this
+ precondition yields undefined behavior. **This precondition is enforced
+ with a static assertion.**
+
+ @warning There is no way to enforce all preconditions at compile-time. If
+ the function is called with noncompliant iterators and with
+ assertions switched off, the behavior is undefined and will most
+ likely yield segmentation violation.
+
+ @tparam IteratorType iterator of container with contiguous storage
+ @param[in] first begin of the range to parse (included)
+ @param[in] last end of the range to parse (excluded)
+ @param[in] cb a parser callback function of type @ref parser_callback_t
+ which is used to control the deserialization by filtering unwanted values
+ (optional)
+ @param[in] allow_exceptions whether to throw exceptions in case of a
+ parse error (optional, true by default)
+
+ @return deserialized JSON value; in case of a parse error and
+ @a allow_exceptions set to `false`, the return value will be
+ value_t::discarded.
+
+ @throw parse_error.101 in case of an unexpected token
+ @throw parse_error.102 if to_unicode fails or surrogate error
+ @throw parse_error.103 if to_unicode fails
+
+ @complexity Linear in the length of the input. The parser is a predictive
+ LL(1) parser. The complexity can be higher if the parser callback function
+ @a cb has a super-linear complexity.
+
+ @note A UTF-8 byte order mark is silently ignored.
+
+ @liveexample{The example below demonstrates the `parse()` function reading
+ from an iterator range.,parse__iteratortype__parser_callback_t}
+
+ @since version 2.0.3
+ */
+ template<class IteratorType, typename std::enable_if<
+ std::is_base_of<
+ std::random_access_iterator_tag,
+ typename std::iterator_traits<IteratorType>::iterator_category>::value, int>::type = 0>
+ static basic_json parse(IteratorType first, IteratorType last,
+ const parser_callback_t cb = nullptr,
+ const bool allow_exceptions = true)
+ {
+ basic_json result;
+ parser(detail::input_adapter(first, last), cb, allow_exceptions).parse(true, result);
+ return result;
+ }
+
+ template<class IteratorType, typename std::enable_if<
+ std::is_base_of<
+ std::random_access_iterator_tag,
+ typename std::iterator_traits<IteratorType>::iterator_category>::value, int>::type = 0>
+ static bool accept(IteratorType first, IteratorType last)
+ {
+ return parser(detail::input_adapter(first, last)).accept(true);
+ }
+
+ template<class IteratorType, class SAX, typename std::enable_if<
+ std::is_base_of<
+ std::random_access_iterator_tag,
+ typename std::iterator_traits<IteratorType>::iterator_category>::value, int>::type = 0>
+ static bool sax_parse(IteratorType first, IteratorType last, SAX* sax)
+ {
+ return parser(detail::input_adapter(first, last)).sax_parse(sax);
+ }
+
+ /*!
+ @brief deserialize from stream
+ @deprecated This stream operator is deprecated and will be removed in
+ version 4.0.0 of the library. Please use
+ @ref operator>>(std::istream&, basic_json&)
+ instead; that is, replace calls like `j << i;` with `i >> j;`.
+ @since version 1.0.0; deprecated since version 3.0.0
+ */
+ JSON_DEPRECATED
+ friend std::istream& operator<<(basic_json& j, std::istream& i)
+ {
+ return operator>>(i, j);
+ }
+
+ /*!
+ @brief deserialize from stream
+
+ Deserializes an input stream to a JSON value.
+
+ @param[in,out] i input stream to read a serialized JSON value from
+ @param[in,out] j JSON value to write the deserialized input to
+
+ @throw parse_error.101 in case of an unexpected token
+ @throw parse_error.102 if to_unicode fails or surrogate error
+ @throw parse_error.103 if to_unicode fails
+
+ @complexity Linear in the length of the input. The parser is a predictive
+ LL(1) parser.
+
+ @note A UTF-8 byte order mark is silently ignored.
+
+ @liveexample{The example below shows how a JSON value is constructed by
+ reading a serialization from a stream.,operator_deserialize}
+
+ @sa parse(std::istream&, const parser_callback_t) for a variant with a
+ parser callback function to filter values while parsing
+
+ @since version 1.0.0
+ */
+ friend std::istream& operator>>(std::istream& i, basic_json& j)
+ {
+ parser(detail::input_adapter(i)).parse(false, j);
+ return i;
+ }
+
+ /// @}
+
+ ///////////////////////////
+ // convenience functions //
+ ///////////////////////////
+
+ /*!
+ @brief return the type as string
+
+ Returns the type name as string to be used in error messages - usually to
+ indicate that a function was called on a wrong JSON type.
+
+ @return a string representation of a the @a m_type member:
+ Value type | return value
+ ----------- | -------------
+ null | `"null"`
+ boolean | `"boolean"`
+ string | `"string"`
+ number | `"number"` (for all number types)
+ object | `"object"`
+ array | `"array"`
+ discarded | `"discarded"`
+
+ @exceptionsafety No-throw guarantee: this function never throws exceptions.
+
+ @complexity Constant.
+
+ @liveexample{The following code exemplifies `type_name()` for all JSON
+ types.,type_name}
+
+ @sa @ref type() -- return the type of the JSON value
+ @sa @ref operator value_t() -- return the type of the JSON value (implicit)
+
+ @since version 1.0.0, public since 2.1.0, `const char*` and `noexcept`
+ since 3.0.0
+ */
+ const char* type_name() const noexcept
+ {
+ {
+ switch (m_type)
+ {
+ case value_t::null:
+ return "null";
+ case value_t::object:
+ return "object";
+ case value_t::array:
+ return "array";
+ case value_t::string:
+ return "string";
+ case value_t::boolean:
+ return "boolean";
+ case value_t::discarded:
+ return "discarded";
+ default:
+ return "number";
+ }
+ }
+ }
+
+
+ private:
+ //////////////////////
+ // member variables //
+ //////////////////////
+
+ /// the type of the current element
+ value_t m_type = value_t::null;
+
+ /// the value of the current element
+ json_value m_value = {};
+
+ //////////////////////////////////////////
+ // binary serialization/deserialization //
+ //////////////////////////////////////////
+
+ /// @name binary serialization/deserialization support
+ /// @{
+
+ public:
+ /*!
+ @brief create a CBOR serialization of a given JSON value
+
+ Serializes a given JSON value @a j to a byte vector using the CBOR (Concise
+ Binary Object Representation) serialization format. CBOR is a binary
+ serialization format which aims to be more compact than JSON itself, yet
+ more efficient to parse.
+
+ The library uses the following mapping from JSON values types to
+ CBOR types according to the CBOR specification (RFC 7049):
+
+ JSON value type | value/range | CBOR type | first byte
+ --------------- | ------------------------------------------ | ---------------------------------- | ---------------
+ null | `null` | Null | 0xF6
+ boolean | `true` | True | 0xF5
+ boolean | `false` | False | 0xF4
+ number_integer | -9223372036854775808..-2147483649 | Negative integer (8 bytes follow) | 0x3B
+ number_integer | -2147483648..-32769 | Negative integer (4 bytes follow) | 0x3A
+ number_integer | -32768..-129 | Negative integer (2 bytes follow) | 0x39
+ number_integer | -128..-25 | Negative integer (1 byte follow) | 0x38
+ number_integer | -24..-1 | Negative integer | 0x20..0x37
+ number_integer | 0..23 | Integer | 0x00..0x17
+ number_integer | 24..255 | Unsigned integer (1 byte follow) | 0x18
+ number_integer | 256..65535 | Unsigned integer (2 bytes follow) | 0x19
+ number_integer | 65536..4294967295 | Unsigned integer (4 bytes follow) | 0x1A
+ number_integer | 4294967296..18446744073709551615 | Unsigned integer (8 bytes follow) | 0x1B
+ number_unsigned | 0..23 | Integer | 0x00..0x17
+ number_unsigned | 24..255 | Unsigned integer (1 byte follow) | 0x18
+ number_unsigned | 256..65535 | Unsigned integer (2 bytes follow) | 0x19
+ number_unsigned | 65536..4294967295 | Unsigned integer (4 bytes follow) | 0x1A
+ number_unsigned | 4294967296..18446744073709551615 | Unsigned integer (8 bytes follow) | 0x1B
+ number_float | *any value* | Double-Precision Float | 0xFB
+ string | *length*: 0..23 | UTF-8 string | 0x60..0x77
+ string | *length*: 23..255 | UTF-8 string (1 byte follow) | 0x78
+ string | *length*: 256..65535 | UTF-8 string (2 bytes follow) | 0x79
+ string | *length*: 65536..4294967295 | UTF-8 string (4 bytes follow) | 0x7A
+ string | *length*: 4294967296..18446744073709551615 | UTF-8 string (8 bytes follow) | 0x7B
+ array | *size*: 0..23 | array | 0x80..0x97
+ array | *size*: 23..255 | array (1 byte follow) | 0x98
+ array | *size*: 256..65535 | array (2 bytes follow) | 0x99
+ array | *size*: 65536..4294967295 | array (4 bytes follow) | 0x9A
+ array | *size*: 4294967296..18446744073709551615 | array (8 bytes follow) | 0x9B
+ object | *size*: 0..23 | map | 0xA0..0xB7
+ object | *size*: 23..255 | map (1 byte follow) | 0xB8
+ object | *size*: 256..65535 | map (2 bytes follow) | 0xB9
+ object | *size*: 65536..4294967295 | map (4 bytes follow) | 0xBA
+ object | *size*: 4294967296..18446744073709551615 | map (8 bytes follow) | 0xBB
+
+ @note The mapping is **complete** in the sense that any JSON value type
+ can be converted to a CBOR value.
+
+ @note If NaN or Infinity are stored inside a JSON number, they are
+ serialized properly. This behavior differs from the @ref dump()
+ function which serializes NaN or Infinity to `null`.
+
+ @note The following CBOR types are not used in the conversion:
+ - byte strings (0x40..0x5F)
+ - UTF-8 strings terminated by "break" (0x7F)
+ - arrays terminated by "break" (0x9F)
+ - maps terminated by "break" (0xBF)
+ - date/time (0xC0..0xC1)
+ - bignum (0xC2..0xC3)
+ - decimal fraction (0xC4)
+ - bigfloat (0xC5)
+ - tagged items (0xC6..0xD4, 0xD8..0xDB)
+ - expected conversions (0xD5..0xD7)
+ - simple values (0xE0..0xF3, 0xF8)
+ - undefined (0xF7)
+ - half and single-precision floats (0xF9-0xFA)
+ - break (0xFF)
+
+ @param[in] j JSON value to serialize
+ @return MessagePack serialization as byte vector
+
+ @complexity Linear in the size of the JSON value @a j.
+
+ @liveexample{The example shows the serialization of a JSON value to a byte
+ vector in CBOR format.,to_cbor}
+
+ @sa http://cbor.io
+ @sa @ref from_cbor(detail::input_adapter&&, const bool, const bool) for the
+ analogous deserialization
+ @sa @ref to_msgpack(const basic_json&) for the related MessagePack format
+ @sa @ref to_ubjson(const basic_json&, const bool, const bool) for the
+ related UBJSON format
+
+ @since version 2.0.9
+ */
+ static std::vector<uint8_t> to_cbor(const basic_json& j)
+ {
+ std::vector<uint8_t> result;
+ to_cbor(j, result);
+ return result;
+ }
+
+ static void to_cbor(const basic_json& j, detail::output_adapter<uint8_t> o)
+ {
+ binary_writer<uint8_t>(o).write_cbor(j);
+ }
+
+ static void to_cbor(const basic_json& j, detail::output_adapter<char> o)
+ {
+ binary_writer<char>(o).write_cbor(j);
+ }
+
+ /*!
+ @brief create a MessagePack serialization of a given JSON value
+
+ Serializes a given JSON value @a j to a byte vector using the MessagePack
+ serialization format. MessagePack is a binary serialization format which
+ aims to be more compact than JSON itself, yet more efficient to parse.
+
+ The library uses the following mapping from JSON values types to
+ MessagePack types according to the MessagePack specification:
+
+ JSON value type | value/range | MessagePack type | first byte
+ --------------- | --------------------------------- | ---------------- | ----------
+ null | `null` | nil | 0xC0
+ boolean | `true` | true | 0xC3
+ boolean | `false` | false | 0xC2
+ number_integer | -9223372036854775808..-2147483649 | int64 | 0xD3
+ number_integer | -2147483648..-32769 | int32 | 0xD2
+ number_integer | -32768..-129 | int16 | 0xD1
+ number_integer | -128..-33 | int8 | 0xD0
+ number_integer | -32..-1 | negative fixint | 0xE0..0xFF
+ number_integer | 0..127 | positive fixint | 0x00..0x7F
+ number_integer | 128..255 | uint 8 | 0xCC
+ number_integer | 256..65535 | uint 16 | 0xCD
+ number_integer | 65536..4294967295 | uint 32 | 0xCE
+ number_integer | 4294967296..18446744073709551615 | uint 64 | 0xCF
+ number_unsigned | 0..127 | positive fixint | 0x00..0x7F
+ number_unsigned | 128..255 | uint 8 | 0xCC
+ number_unsigned | 256..65535 | uint 16 | 0xCD
+ number_unsigned | 65536..4294967295 | uint 32 | 0xCE
+ number_unsigned | 4294967296..18446744073709551615 | uint 64 | 0xCF
+ number_float | *any value* | float 64 | 0xCB
+ string | *length*: 0..31 | fixstr | 0xA0..0xBF
+ string | *length*: 32..255 | str 8 | 0xD9
+ string | *length*: 256..65535 | str 16 | 0xDA
+ string | *length*: 65536..4294967295 | str 32 | 0xDB
+ array | *size*: 0..15 | fixarray | 0x90..0x9F
+ array | *size*: 16..65535 | array 16 | 0xDC
+ array | *size*: 65536..4294967295 | array 32 | 0xDD
+ object | *size*: 0..15 | fix map | 0x80..0x8F
+ object | *size*: 16..65535 | map 16 | 0xDE
+ object | *size*: 65536..4294967295 | map 32 | 0xDF
+
+ @note The mapping is **complete** in the sense that any JSON value type
+ can be converted to a MessagePack value.
+
+ @note The following values can **not** be converted to a MessagePack value:
+ - strings with more than 4294967295 bytes
+ - arrays with more than 4294967295 elements
+ - objects with more than 4294967295 elements
+
+ @note The following MessagePack types are not used in the conversion:
+ - bin 8 - bin 32 (0xC4..0xC6)
+ - ext 8 - ext 32 (0xC7..0xC9)
+ - float 32 (0xCA)
+ - fixext 1 - fixext 16 (0xD4..0xD8)
+
+ @note Any MessagePack output created @ref to_msgpack can be successfully
+ parsed by @ref from_msgpack.
+
+ @note If NaN or Infinity are stored inside a JSON number, they are
+ serialized properly. This behavior differs from the @ref dump()
+ function which serializes NaN or Infinity to `null`.
+
+ @param[in] j JSON value to serialize
+ @return MessagePack serialization as byte vector
+
+ @complexity Linear in the size of the JSON value @a j.
+
+ @liveexample{The example shows the serialization of a JSON value to a byte
+ vector in MessagePack format.,to_msgpack}
+
+ @sa http://msgpack.org
+ @sa @ref from_msgpack for the analogous deserialization
+ @sa @ref to_cbor(const basic_json& for the related CBOR format
+ @sa @ref to_ubjson(const basic_json&, const bool, const bool) for the
+ related UBJSON format
+
+ @since version 2.0.9
+ */
+ static std::vector<uint8_t> to_msgpack(const basic_json& j)
+ {
+ std::vector<uint8_t> result;
+ to_msgpack(j, result);
+ return result;
+ }
+
+ static void to_msgpack(const basic_json& j, detail::output_adapter<uint8_t> o)
+ {
+ binary_writer<uint8_t>(o).write_msgpack(j);
+ }
+
+ static void to_msgpack(const basic_json& j, detail::output_adapter<char> o)
+ {
+ binary_writer<char>(o).write_msgpack(j);
+ }
+
+ /*!
+ @brief create a UBJSON serialization of a given JSON value
+
+ Serializes a given JSON value @a j to a byte vector using the UBJSON
+ (Universal Binary JSON) serialization format. UBJSON aims to be more compact
+ than JSON itself, yet more efficient to parse.
+
+ The library uses the following mapping from JSON values types to
+ UBJSON types according to the UBJSON specification:
+
+ JSON value type | value/range | UBJSON type | marker
+ --------------- | --------------------------------- | ----------- | ------
+ null | `null` | null | `Z`
+ boolean | `true` | true | `T`
+ boolean | `false` | false | `F`
+ number_integer | -9223372036854775808..-2147483649 | int64 | `L`
+ number_integer | -2147483648..-32769 | int32 | `l`
+ number_integer | -32768..-129 | int16 | `I`
+ number_integer | -128..127 | int8 | `i`
+ number_integer | 128..255 | uint8 | `U`
+ number_integer | 256..32767 | int16 | `I`
+ number_integer | 32768..2147483647 | int32 | `l`
+ number_integer | 2147483648..9223372036854775807 | int64 | `L`
+ number_unsigned | 0..127 | int8 | `i`
+ number_unsigned | 128..255 | uint8 | `U`
+ number_unsigned | 256..32767 | int16 | `I`
+ number_unsigned | 32768..2147483647 | int32 | `l`
+ number_unsigned | 2147483648..9223372036854775807 | int64 | `L`
+ number_float | *any value* | float64 | `D`
+ string | *with shortest length indicator* | string | `S`
+ array | *see notes on optimized format* | array | `[`
+ object | *see notes on optimized format* | map | `{`
+
+ @note The mapping is **complete** in the sense that any JSON value type
+ can be converted to a UBJSON value.
+
+ @note The following values can **not** be converted to a UBJSON value:
+ - strings with more than 9223372036854775807 bytes (theoretical)
+ - unsigned integer numbers above 9223372036854775807
+
+ @note The following markers are not used in the conversion:
+ - `Z`: no-op values are not created.
+ - `C`: single-byte strings are serialized with `S` markers.
+
+ @note Any UBJSON output created @ref to_ubjson can be successfully parsed
+ by @ref from_ubjson.
+
+ @note If NaN or Infinity are stored inside a JSON number, they are
+ serialized properly. This behavior differs from the @ref dump()
+ function which serializes NaN or Infinity to `null`.
+
+ @note The optimized formats for containers are supported: Parameter
+ @a use_size adds size information to the beginning of a container and
+ removes the closing marker. Parameter @a use_type further checks
+ whether all elements of a container have the same type and adds the
+ type marker to the beginning of the container. The @a use_type
+ parameter must only be used together with @a use_size = true. Note
+ that @a use_size = true alone may result in larger representations -
+ the benefit of this parameter is that the receiving side is
+ immediately informed on the number of elements of the container.
+
+ @param[in] j JSON value to serialize
+ @param[in] use_size whether to add size annotations to container types
+ @param[in] use_type whether to add type annotations to container types
+ (must be combined with @a use_size = true)
+ @return UBJSON serialization as byte vector
+
+ @complexity Linear in the size of the JSON value @a j.
+
+ @liveexample{The example shows the serialization of a JSON value to a byte
+ vector in UBJSON format.,to_ubjson}
+
+ @sa http://ubjson.org
+ @sa @ref from_ubjson(detail::input_adapter&&, const bool, const bool) for the
+ analogous deserialization
+ @sa @ref to_cbor(const basic_json& for the related CBOR format
+ @sa @ref to_msgpack(const basic_json&) for the related MessagePack format
+
+ @since version 3.1.0
+ */
+ static std::vector<uint8_t> to_ubjson(const basic_json& j,
+ const bool use_size = false,
+ const bool use_type = false)
+ {
+ std::vector<uint8_t> result;
+ to_ubjson(j, result, use_size, use_type);
+ return result;
+ }
+
+ static void to_ubjson(const basic_json& j, detail::output_adapter<uint8_t> o,
+ const bool use_size = false, const bool use_type = false)
+ {
+ binary_writer<uint8_t>(o).write_ubjson(j, use_size, use_type);
+ }
+
+ static void to_ubjson(const basic_json& j, detail::output_adapter<char> o,
+ const bool use_size = false, const bool use_type = false)
+ {
+ binary_writer<char>(o).write_ubjson(j, use_size, use_type);
+ }
+
+
+ /*!
+ @brief Serializes the given JSON object `j` to BSON and returns a vector
+ containing the corresponding BSON-representation.
+
+ BSON (Binary JSON) is a binary format in which zero or more ordered key/value pairs are
+ stored as a single entity (a so-called document).
+
+ The library uses the following mapping from JSON values types to BSON types:
+
+ JSON value type | value/range | BSON type | marker
+ --------------- | --------------------------------- | ----------- | ------
+ null | `null` | null | 0x0A
+ boolean | `true`, `false` | boolean | 0x08
+ number_integer | -9223372036854775808..-2147483649 | int64 | 0x12
+ number_integer | -2147483648..2147483647 | int32 | 0x10
+ number_integer | 2147483648..9223372036854775807 | int64 | 0x12
+ number_unsigned | 0..2147483647 | int32 | 0x10
+ number_unsigned | 2147483648..9223372036854775807 | int64 | 0x12
+ number_unsigned | 9223372036854775808..18446744073709551615| -- | --
+ number_float | *any value* | double | 0x01
+ string | *any value* | string | 0x02
+ array | *any value* | document | 0x04
+ object | *any value* | document | 0x03
+
+ @warning The mapping is **incomplete**, since only JSON-objects (and things
+ contained therein) can be serialized to BSON.
+ Also, integers larger than 9223372036854775807 cannot be serialized to BSON,
+ and the keys may not contain U+0000, since they are serialized a
+ zero-terminated c-strings.
+
+ @throw out_of_range.407 if `j.is_number_unsigned() && j.get<std::uint64_t>() > 9223372036854775807`
+ @throw out_of_range.409 if a key in `j` contains a NULL (U+0000)
+ @throw type_error.317 if `!j.is_object()`
+
+ @pre The input `j` is required to be an object: `j.is_object() == true`.
+
+ @note Any BSON output created via @ref to_bson can be successfully parsed
+ by @ref from_bson.
+
+ @param[in] j JSON value to serialize
+ @return BSON serialization as byte vector
+
+ @complexity Linear in the size of the JSON value @a j.
+
+ @liveexample{The example shows the serialization of a JSON value to a byte
+ vector in BSON format.,to_bson}
+
+ @sa http://bsonspec.org/spec.html
+ @sa @ref from_bson(detail::input_adapter&&, const bool strict) for the
+ analogous deserialization
+ @sa @ref to_ubjson(const basic_json&, const bool, const bool) for the
+ related UBJSON format
+ @sa @ref to_cbor(const basic_json&) for the related CBOR format
+ @sa @ref to_msgpack(const basic_json&) for the related MessagePack format
+ */
+ static std::vector<uint8_t> to_bson(const basic_json& j)
+ {
+ std::vector<uint8_t> result;
+ to_bson(j, result);
+ return result;
+ }
+
+ /*!
+ @brief Serializes the given JSON object `j` to BSON and forwards the
+ corresponding BSON-representation to the given output_adapter `o`.
+ @param j The JSON object to convert to BSON.
+ @param o The output adapter that receives the binary BSON representation.
+ @pre The input `j` shall be an object: `j.is_object() == true`
+ @sa @ref to_bson(const basic_json&)
+ */
+ static void to_bson(const basic_json& j, detail::output_adapter<uint8_t> o)
+ {
+ binary_writer<uint8_t>(o).write_bson(j);
+ }
+
+ /*!
+ @copydoc to_bson(const basic_json&, detail::output_adapter<uint8_t>)
+ */
+ static void to_bson(const basic_json& j, detail::output_adapter<char> o)
+ {
+ binary_writer<char>(o).write_bson(j);
+ }
+
+
+ /*!
+ @brief create a JSON value from an input in CBOR format
+
+ Deserializes a given input @a i to a JSON value using the CBOR (Concise
+ Binary Object Representation) serialization format.
+
+ The library maps CBOR types to JSON value types as follows:
+
+ CBOR type | JSON value type | first byte
+ ---------------------- | --------------- | ----------
+ Integer | number_unsigned | 0x00..0x17
+ Unsigned integer | number_unsigned | 0x18
+ Unsigned integer | number_unsigned | 0x19
+ Unsigned integer | number_unsigned | 0x1A
+ Unsigned integer | number_unsigned | 0x1B
+ Negative integer | number_integer | 0x20..0x37
+ Negative integer | number_integer | 0x38
+ Negative integer | number_integer | 0x39
+ Negative integer | number_integer | 0x3A
+ Negative integer | number_integer | 0x3B
+ Negative integer | number_integer | 0x40..0x57
+ UTF-8 string | string | 0x60..0x77
+ UTF-8 string | string | 0x78
+ UTF-8 string | string | 0x79
+ UTF-8 string | string | 0x7A
+ UTF-8 string | string | 0x7B
+ UTF-8 string | string | 0x7F
+ array | array | 0x80..0x97
+ array | array | 0x98
+ array | array | 0x99
+ array | array | 0x9A
+ array | array | 0x9B
+ array | array | 0x9F
+ map | object | 0xA0..0xB7
+ map | object | 0xB8
+ map | object | 0xB9
+ map | object | 0xBA
+ map | object | 0xBB
+ map | object | 0xBF
+ False | `false` | 0xF4
+ True | `true` | 0xF5
+ Null | `null` | 0xF6
+ Half-Precision Float | number_float | 0xF9
+ Single-Precision Float | number_float | 0xFA
+ Double-Precision Float | number_float | 0xFB
+
+ @warning The mapping is **incomplete** in the sense that not all CBOR
+ types can be converted to a JSON value. The following CBOR types
+ are not supported and will yield parse errors (parse_error.112):
+ - byte strings (0x40..0x5F)
+ - date/time (0xC0..0xC1)
+ - bignum (0xC2..0xC3)
+ - decimal fraction (0xC4)
+ - bigfloat (0xC5)
+ - tagged items (0xC6..0xD4, 0xD8..0xDB)
+ - expected conversions (0xD5..0xD7)
+ - simple values (0xE0..0xF3, 0xF8)
+ - undefined (0xF7)
+
+ @warning CBOR allows map keys of any type, whereas JSON only allows
+ strings as keys in object values. Therefore, CBOR maps with keys
+ other than UTF-8 strings are rejected (parse_error.113).
+
+ @note Any CBOR output created @ref to_cbor can be successfully parsed by
+ @ref from_cbor.
+
+ @param[in] i an input in CBOR format convertible to an input adapter
+ @param[in] strict whether to expect the input to be consumed until EOF
+ (true by default)
+ @param[in] allow_exceptions whether to throw exceptions in case of a
+ parse error (optional, true by default)
+
+ @return deserialized JSON value; in case of a parse error and
+ @a allow_exceptions set to `false`, the return value will be
+ value_t::discarded.
+
+ @throw parse_error.110 if the given input ends prematurely or the end of
+ file was not reached when @a strict was set to true
+ @throw parse_error.112 if unsupported features from CBOR were
+ used in the given input @a v or if the input is not valid CBOR
+ @throw parse_error.113 if a string was expected as map key, but not found
+
+ @complexity Linear in the size of the input @a i.
+
+ @liveexample{The example shows the deserialization of a byte vector in CBOR
+ format to a JSON value.,from_cbor}
+
+ @sa http://cbor.io
+ @sa @ref to_cbor(const basic_json&) for the analogous serialization
+ @sa @ref from_msgpack(detail::input_adapter&&, const bool, const bool) for the
+ related MessagePack format
+ @sa @ref from_ubjson(detail::input_adapter&&, const bool, const bool) for the
+ related UBJSON format
+
+ @since version 2.0.9; parameter @a start_index since 2.1.1; changed to
+ consume input adapters, removed start_index parameter, and added
+ @a strict parameter since 3.0.0; added @a allow_exceptions parameter
+ since 3.2.0
+ */
+ JSON_NODISCARD
+ static basic_json from_cbor(detail::input_adapter&& i,
+ const bool strict = true,
+ const bool allow_exceptions = true)
+ {
+ basic_json result;
+ detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions);
+ const bool res = binary_reader(detail::input_adapter(i)).sax_parse(input_format_t::cbor, &sdp, strict);
+ return res ? result : basic_json(value_t::discarded);
+ }
+
+ /*!
+ @copydoc from_cbor(detail::input_adapter&&, const bool, const bool)
+ */
+ template<typename A1, typename A2,
+ detail::enable_if_t<std::is_constructible<detail::input_adapter, A1, A2>::value, int> = 0>
+ JSON_NODISCARD
+ static basic_json from_cbor(A1 && a1, A2 && a2,
+ const bool strict = true,
+ const bool allow_exceptions = true)
+ {
+ basic_json result;
+ detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions);
+ const bool res = binary_reader(detail::input_adapter(std::forward<A1>(a1), std::forward<A2>(a2))).sax_parse(input_format_t::cbor, &sdp, strict);
+ return res ? result : basic_json(value_t::discarded);
+ }
+
+ /*!
+ @brief create a JSON value from an input in MessagePack format
+
+ Deserializes a given input @a i to a JSON value using the MessagePack
+ serialization format.
+
+ The library maps MessagePack types to JSON value types as follows:
+
+ MessagePack type | JSON value type | first byte
+ ---------------- | --------------- | ----------
+ positive fixint | number_unsigned | 0x00..0x7F
+ fixmap | object | 0x80..0x8F
+ fixarray | array | 0x90..0x9F
+ fixstr | string | 0xA0..0xBF
+ nil | `null` | 0xC0
+ false | `false` | 0xC2
+ true | `true` | 0xC3
+ float 32 | number_float | 0xCA
+ float 64 | number_float | 0xCB
+ uint 8 | number_unsigned | 0xCC
+ uint 16 | number_unsigned | 0xCD
+ uint 32 | number_unsigned | 0xCE
+ uint 64 | number_unsigned | 0xCF
+ int 8 | number_integer | 0xD0
+ int 16 | number_integer | 0xD1
+ int 32 | number_integer | 0xD2
+ int 64 | number_integer | 0xD3
+ str 8 | string | 0xD9
+ str 16 | string | 0xDA
+ str 32 | string | 0xDB
+ array 16 | array | 0xDC
+ array 32 | array | 0xDD
+ map 16 | object | 0xDE
+ map 32 | object | 0xDF
+ negative fixint | number_integer | 0xE0-0xFF
+
+ @warning The mapping is **incomplete** in the sense that not all
+ MessagePack types can be converted to a JSON value. The following
+ MessagePack types are not supported and will yield parse errors:
+ - bin 8 - bin 32 (0xC4..0xC6)
+ - ext 8 - ext 32 (0xC7..0xC9)
+ - fixext 1 - fixext 16 (0xD4..0xD8)
+
+ @note Any MessagePack output created @ref to_msgpack can be successfully
+ parsed by @ref from_msgpack.
+
+ @param[in] i an input in MessagePack format convertible to an input
+ adapter
+ @param[in] strict whether to expect the input to be consumed until EOF
+ (true by default)
+ @param[in] allow_exceptions whether to throw exceptions in case of a
+ parse error (optional, true by default)
+
+ @return deserialized JSON value; in case of a parse error and
+ @a allow_exceptions set to `false`, the return value will be
+ value_t::discarded.
+
+ @throw parse_error.110 if the given input ends prematurely or the end of
+ file was not reached when @a strict was set to true
+ @throw parse_error.112 if unsupported features from MessagePack were
+ used in the given input @a i or if the input is not valid MessagePack
+ @throw parse_error.113 if a string was expected as map key, but not found
+
+ @complexity Linear in the size of the input @a i.
+
+ @liveexample{The example shows the deserialization of a byte vector in
+ MessagePack format to a JSON value.,from_msgpack}
+
+ @sa http://msgpack.org
+ @sa @ref to_msgpack(const basic_json&) for the analogous serialization
+ @sa @ref from_cbor(detail::input_adapter&&, const bool, const bool) for the
+ related CBOR format
+ @sa @ref from_ubjson(detail::input_adapter&&, const bool, const bool) for
+ the related UBJSON format
+ @sa @ref from_bson(detail::input_adapter&&, const bool, const bool) for
+ the related BSON format
+
+ @since version 2.0.9; parameter @a start_index since 2.1.1; changed to
+ consume input adapters, removed start_index parameter, and added
+ @a strict parameter since 3.0.0; added @a allow_exceptions parameter
+ since 3.2.0
+ */
+ JSON_NODISCARD
+ static basic_json from_msgpack(detail::input_adapter&& i,
+ const bool strict = true,
+ const bool allow_exceptions = true)
+ {
+ basic_json result;
+ detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions);
+ const bool res = binary_reader(detail::input_adapter(i)).sax_parse(input_format_t::msgpack, &sdp, strict);
+ return res ? result : basic_json(value_t::discarded);
+ }
+
+ /*!
+ @copydoc from_msgpack(detail::input_adapter&&, const bool, const bool)
+ */
+ template<typename A1, typename A2,
+ detail::enable_if_t<std::is_constructible<detail::input_adapter, A1, A2>::value, int> = 0>
+ JSON_NODISCARD
+ static basic_json from_msgpack(A1 && a1, A2 && a2,
+ const bool strict = true,
+ const bool allow_exceptions = true)
+ {
+ basic_json result;
+ detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions);
+ const bool res = binary_reader(detail::input_adapter(std::forward<A1>(a1), std::forward<A2>(a2))).sax_parse(input_format_t::msgpack, &sdp, strict);
+ return res ? result : basic_json(value_t::discarded);
+ }
+
+ /*!
+ @brief create a JSON value from an input in UBJSON format
+
+ Deserializes a given input @a i to a JSON value using the UBJSON (Universal
+ Binary JSON) serialization format.
+
+ The library maps UBJSON types to JSON value types as follows:
+
+ UBJSON type | JSON value type | marker
+ ----------- | --------------------------------------- | ------
+ no-op | *no value, next value is read* | `N`
+ null | `null` | `Z`
+ false | `false` | `F`
+ true | `true` | `T`
+ float32 | number_float | `d`
+ float64 | number_float | `D`
+ uint8 | number_unsigned | `U`
+ int8 | number_integer | `i`
+ int16 | number_integer | `I`
+ int32 | number_integer | `l`
+ int64 | number_integer | `L`
+ string | string | `S`
+ char | string | `C`
+ array | array (optimized values are supported) | `[`
+ object | object (optimized values are supported) | `{`
+
+ @note The mapping is **complete** in the sense that any UBJSON value can
+ be converted to a JSON value.
+
+ @param[in] i an input in UBJSON format convertible to an input adapter
+ @param[in] strict whether to expect the input to be consumed until EOF
+ (true by default)
+ @param[in] allow_exceptions whether to throw exceptions in case of a
+ parse error (optional, true by default)
+
+ @return deserialized JSON value; in case of a parse error and
+ @a allow_exceptions set to `false`, the return value will be
+ value_t::discarded.
+
+ @throw parse_error.110 if the given input ends prematurely or the end of
+ file was not reached when @a strict was set to true
+ @throw parse_error.112 if a parse error occurs
+ @throw parse_error.113 if a string could not be parsed successfully
+
+ @complexity Linear in the size of the input @a i.
+
+ @liveexample{The example shows the deserialization of a byte vector in
+ UBJSON format to a JSON value.,from_ubjson}
+
+ @sa http://ubjson.org
+ @sa @ref to_ubjson(const basic_json&, const bool, const bool) for the
+ analogous serialization
+ @sa @ref from_cbor(detail::input_adapter&&, const bool, const bool) for the
+ related CBOR format
+ @sa @ref from_msgpack(detail::input_adapter&&, const bool, const bool) for
+ the related MessagePack format
+ @sa @ref from_bson(detail::input_adapter&&, const bool, const bool) for
+ the related BSON format
+
+ @since version 3.1.0; added @a allow_exceptions parameter since 3.2.0
+ */
+ JSON_NODISCARD
+ static basic_json from_ubjson(detail::input_adapter&& i,
+ const bool strict = true,
+ const bool allow_exceptions = true)
+ {
+ basic_json result;
+ detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions);
+ const bool res = binary_reader(detail::input_adapter(i)).sax_parse(input_format_t::ubjson, &sdp, strict);
+ return res ? result : basic_json(value_t::discarded);
+ }
+
+ /*!
+ @copydoc from_ubjson(detail::input_adapter&&, const bool, const bool)
+ */
+ template<typename A1, typename A2,
+ detail::enable_if_t<std::is_constructible<detail::input_adapter, A1, A2>::value, int> = 0>
+ JSON_NODISCARD
+ static basic_json from_ubjson(A1 && a1, A2 && a2,
+ const bool strict = true,
+ const bool allow_exceptions = true)
+ {
+ basic_json result;
+ detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions);
+ const bool res = binary_reader(detail::input_adapter(std::forward<A1>(a1), std::forward<A2>(a2))).sax_parse(input_format_t::ubjson, &sdp, strict);
+ return res ? result : basic_json(value_t::discarded);
+ }
+
+ /*!
+ @brief Create a JSON value from an input in BSON format
+
+ Deserializes a given input @a i to a JSON value using the BSON (Binary JSON)
+ serialization format.
+
+ The library maps BSON record types to JSON value types as follows:
+
+ BSON type | BSON marker byte | JSON value type
+ --------------- | ---------------- | ---------------------------
+ double | 0x01 | number_float
+ string | 0x02 | string
+ document | 0x03 | object
+ array | 0x04 | array
+ binary | 0x05 | still unsupported
+ undefined | 0x06 | still unsupported
+ ObjectId | 0x07 | still unsupported
+ boolean | 0x08 | boolean
+ UTC Date-Time | 0x09 | still unsupported
+ null | 0x0A | null
+ Regular Expr. | 0x0B | still unsupported
+ DB Pointer | 0x0C | still unsupported
+ JavaScript Code | 0x0D | still unsupported
+ Symbol | 0x0E | still unsupported
+ JavaScript Code | 0x0F | still unsupported
+ int32 | 0x10 | number_integer
+ Timestamp | 0x11 | still unsupported
+ 128-bit decimal float | 0x13 | still unsupported
+ Max Key | 0x7F | still unsupported
+ Min Key | 0xFF | still unsupported
+
+ @warning The mapping is **incomplete**. The unsupported mappings
+ are indicated in the table above.
+
+ @param[in] i an input in BSON format convertible to an input adapter
+ @param[in] strict whether to expect the input to be consumed until EOF
+ (true by default)
+ @param[in] allow_exceptions whether to throw exceptions in case of a
+ parse error (optional, true by default)
+
+ @return deserialized JSON value; in case of a parse error and
+ @a allow_exceptions set to `false`, the return value will be
+ value_t::discarded.
+
+ @throw parse_error.114 if an unsupported BSON record type is encountered
+
+ @complexity Linear in the size of the input @a i.
+
+ @liveexample{The example shows the deserialization of a byte vector in
+ BSON format to a JSON value.,from_bson}
+
+ @sa http://bsonspec.org/spec.html
+ @sa @ref to_bson(const basic_json&) for the analogous serialization
+ @sa @ref from_cbor(detail::input_adapter&&, const bool, const bool) for the
+ related CBOR format
+ @sa @ref from_msgpack(detail::input_adapter&&, const bool, const bool) for
+ the related MessagePack format
+ @sa @ref from_ubjson(detail::input_adapter&&, const bool, const bool) for the
+ related UBJSON format
+ */
+ JSON_NODISCARD
+ static basic_json from_bson(detail::input_adapter&& i,
+ const bool strict = true,
+ const bool allow_exceptions = true)
+ {
+ basic_json result;
+ detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions);
+ const bool res = binary_reader(detail::input_adapter(i)).sax_parse(input_format_t::bson, &sdp, strict);
+ return res ? result : basic_json(value_t::discarded);
+ }
+
+ /*!
+ @copydoc from_bson(detail::input_adapter&&, const bool, const bool)
+ */
+ template<typename A1, typename A2,
+ detail::enable_if_t<std::is_constructible<detail::input_adapter, A1, A2>::value, int> = 0>
+ JSON_NODISCARD
+ static basic_json from_bson(A1 && a1, A2 && a2,
+ const bool strict = true,
+ const bool allow_exceptions = true)
+ {
+ basic_json result;
+ detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions);
+ const bool res = binary_reader(detail::input_adapter(std::forward<A1>(a1), std::forward<A2>(a2))).sax_parse(input_format_t::bson, &sdp, strict);
+ return res ? result : basic_json(value_t::discarded);
+ }
+
+
+
+ /// @}
+
+ //////////////////////////
+ // JSON Pointer support //
+ //////////////////////////
+
+ /// @name JSON Pointer functions
+ /// @{
+
+ /*!
+ @brief access specified element via JSON Pointer
+
+ Uses a JSON pointer to retrieve a reference to the respective JSON value.
+ No bound checking is performed. Similar to @ref operator[](const typename
+ object_t::key_type&), `null` values are created in arrays and objects if
+ necessary.
+
+ In particular:
+ - If the JSON pointer points to an object key that does not exist, it
+ is created an filled with a `null` value before a reference to it
+ is returned.
+ - If the JSON pointer points to an array index that does not exist, it
+ is created an filled with a `null` value before a reference to it
+ is returned. All indices between the current maximum and the given
+ index are also filled with `null`.
+ - The special value `-` is treated as a synonym for the index past the
+ end.
+
+ @param[in] ptr a JSON pointer
+
+ @return reference to the element pointed to by @a ptr
+
+ @complexity Constant.
+
+ @throw parse_error.106 if an array index begins with '0'
+ @throw parse_error.109 if an array index was not a number
+ @throw out_of_range.404 if the JSON pointer can not be resolved
+
+ @liveexample{The behavior is shown in the example.,operatorjson_pointer}
+
+ @since version 2.0.0
+ */
+ reference operator[](const json_pointer& ptr)
+ {
+ return ptr.get_unchecked(this);
+ }
+
+ /*!
+ @brief access specified element via JSON Pointer
+
+ Uses a JSON pointer to retrieve a reference to the respective JSON value.
+ No bound checking is performed. The function does not change the JSON
+ value; no `null` values are created. In particular, the the special value
+ `-` yields an exception.
+
+ @param[in] ptr JSON pointer to the desired element
+
+ @return const reference to the element pointed to by @a ptr
+
+ @complexity Constant.
+
+ @throw parse_error.106 if an array index begins with '0'
+ @throw parse_error.109 if an array index was not a number
+ @throw out_of_range.402 if the array index '-' is used
+ @throw out_of_range.404 if the JSON pointer can not be resolved
+
+ @liveexample{The behavior is shown in the example.,operatorjson_pointer_const}
+
+ @since version 2.0.0
+ */
+ const_reference operator[](const json_pointer& ptr) const
+ {
+ return ptr.get_unchecked(this);
+ }
+
+ /*!
+ @brief access specified element via JSON Pointer
+
+ Returns a reference to the element at with specified JSON pointer @a ptr,
+ with bounds checking.
+
+ @param[in] ptr JSON pointer to the desired element
+
+ @return reference to the element pointed to by @a ptr
+
+ @throw parse_error.106 if an array index in the passed JSON pointer @a ptr
+ begins with '0'. See example below.
+
+ @throw parse_error.109 if an array index in the passed JSON pointer @a ptr
+ is not a number. See example below.
+
+ @throw out_of_range.401 if an array index in the passed JSON pointer @a ptr
+ is out of range. See example below.
+
+ @throw out_of_range.402 if the array index '-' is used in the passed JSON
+ pointer @a ptr. As `at` provides checked access (and no elements are
+ implicitly inserted), the index '-' is always invalid. See example below.
+
+ @throw out_of_range.403 if the JSON pointer describes a key of an object
+ which cannot be found. See example below.
+
+ @throw out_of_range.404 if the JSON pointer @a ptr can not be resolved.
+ See example below.
+
+ @exceptionsafety Strong guarantee: if an exception is thrown, there are no
+ changes in the JSON value.
+
+ @complexity Constant.
+
+ @since version 2.0.0
+
+ @liveexample{The behavior is shown in the example.,at_json_pointer}
+ */
+ reference at(const json_pointer& ptr)
+ {
+ return ptr.get_checked(this);
+ }
+
+ /*!
+ @brief access specified element via JSON Pointer
+
+ Returns a const reference to the element at with specified JSON pointer @a
+ ptr, with bounds checking.
+
+ @param[in] ptr JSON pointer to the desired element
+
+ @return reference to the element pointed to by @a ptr
+
+ @throw parse_error.106 if an array index in the passed JSON pointer @a ptr
+ begins with '0'. See example below.
+
+ @throw parse_error.109 if an array index in the passed JSON pointer @a ptr
+ is not a number. See example below.
+
+ @throw out_of_range.401 if an array index in the passed JSON pointer @a ptr
+ is out of range. See example below.
+
+ @throw out_of_range.402 if the array index '-' is used in the passed JSON
+ pointer @a ptr. As `at` provides checked access (and no elements are
+ implicitly inserted), the index '-' is always invalid. See example below.
+
+ @throw out_of_range.403 if the JSON pointer describes a key of an object
+ which cannot be found. See example below.
+
+ @throw out_of_range.404 if the JSON pointer @a ptr can not be resolved.
+ See example below.
+
+ @exceptionsafety Strong guarantee: if an exception is thrown, there are no
+ changes in the JSON value.
+
+ @complexity Constant.
+
+ @since version 2.0.0
+
+ @liveexample{The behavior is shown in the example.,at_json_pointer_const}
+ */
+ const_reference at(const json_pointer& ptr) const
+ {
+ return ptr.get_checked(this);
+ }
+
+ /*!
+ @brief return flattened JSON value
+
+ The function creates a JSON object whose keys are JSON pointers (see [RFC
+ 6901](https://tools.ietf.org/html/rfc6901)) and whose values are all
+ primitive. The original JSON value can be restored using the @ref
+ unflatten() function.
+
+ @return an object that maps JSON pointers to primitive values
+
+ @note Empty objects and arrays are flattened to `null` and will not be
+ reconstructed correctly by the @ref unflatten() function.
+
+ @complexity Linear in the size the JSON value.
+
+ @liveexample{The following code shows how a JSON object is flattened to an
+ object whose keys consist of JSON pointers.,flatten}
+
+ @sa @ref unflatten() for the reverse function
+
+ @since version 2.0.0
+ */
+ basic_json flatten() const
+ {
+ basic_json result(value_t::object);
+ json_pointer::flatten("", *this, result);
+ return result;
+ }
+
+ /*!
+ @brief unflatten a previously flattened JSON value
+
+ The function restores the arbitrary nesting of a JSON value that has been
+ flattened before using the @ref flatten() function. The JSON value must
+ meet certain constraints:
+ 1. The value must be an object.
+ 2. The keys must be JSON pointers (see
+ [RFC 6901](https://tools.ietf.org/html/rfc6901))
+ 3. The mapped values must be primitive JSON types.
+
+ @return the original JSON from a flattened version
+
+ @note Empty objects and arrays are flattened by @ref flatten() to `null`
+ values and can not unflattened to their original type. Apart from
+ this example, for a JSON value `j`, the following is always true:
+ `j == j.flatten().unflatten()`.
+
+ @complexity Linear in the size the JSON value.
+
+ @throw type_error.314 if value is not an object
+ @throw type_error.315 if object values are not primitive
+
+ @liveexample{The following code shows how a flattened JSON object is
+ unflattened into the original nested JSON object.,unflatten}
+
+ @sa @ref flatten() for the reverse function
+
+ @since version 2.0.0
+ */
+ basic_json unflatten() const
+ {
+ return json_pointer::unflatten(*this);
+ }
+
+ /// @}
+
+ //////////////////////////
+ // JSON Patch functions //
+ //////////////////////////
+
+ /// @name JSON Patch functions
+ /// @{
+
+ /*!
+ @brief applies a JSON patch
+
+ [JSON Patch](http://jsonpatch.com) defines a JSON document structure for
+ expressing a sequence of operations to apply to a JSON) document. With
+ this function, a JSON Patch is applied to the current JSON value by
+ executing all operations from the patch.
+
+ @param[in] json_patch JSON patch document
+ @return patched document
+
+ @note The application of a patch is atomic: Either all operations succeed
+ and the patched document is returned or an exception is thrown. In
+ any case, the original value is not changed: the patch is applied
+ to a copy of the value.
+
+ @throw parse_error.104 if the JSON patch does not consist of an array of
+ objects
+
+ @throw parse_error.105 if the JSON patch is malformed (e.g., mandatory
+ attributes are missing); example: `"operation add must have member path"`
+
+ @throw out_of_range.401 if an array index is out of range.
+
+ @throw out_of_range.403 if a JSON pointer inside the patch could not be
+ resolved successfully in the current JSON value; example: `"key baz not
+ found"`
+
+ @throw out_of_range.405 if JSON pointer has no parent ("add", "remove",
+ "move")
+
+ @throw other_error.501 if "test" operation was unsuccessful
+
+ @complexity Linear in the size of the JSON value and the length of the
+ JSON patch. As usually only a fraction of the JSON value is affected by
+ the patch, the complexity can usually be neglected.
+
+ @liveexample{The following code shows how a JSON patch is applied to a
+ value.,patch}
+
+ @sa @ref diff -- create a JSON patch by comparing two JSON values
+
+ @sa [RFC 6902 (JSON Patch)](https://tools.ietf.org/html/rfc6902)
+ @sa [RFC 6901 (JSON Pointer)](https://tools.ietf.org/html/rfc6901)
+
+ @since version 2.0.0
+ */
+ basic_json patch(const basic_json& json_patch) const
+ {
+ // make a working copy to apply the patch to
+ basic_json result = *this;
+
+ // the valid JSON Patch operations
+ enum class patch_operations {add, remove, replace, move, copy, test, invalid};
+
+ const auto get_op = [](const std::string & op)
+ {
+ if (op == "add")
+ {
+ return patch_operations::add;
+ }
+ if (op == "remove")
+ {
+ return patch_operations::remove;
+ }
+ if (op == "replace")
+ {
+ return patch_operations::replace;
+ }
+ if (op == "move")
+ {
+ return patch_operations::move;
+ }
+ if (op == "copy")
+ {
+ return patch_operations::copy;
+ }
+ if (op == "test")
+ {
+ return patch_operations::test;
+ }
+
+ return patch_operations::invalid;
+ };
+
+ // wrapper for "add" operation; add value at ptr
+ const auto operation_add = [&result](json_pointer & ptr, basic_json val)
+ {
+ // adding to the root of the target document means replacing it
+ if (ptr.empty())
+ {
+ result = val;
+ return;
+ }
+
+ // make sure the top element of the pointer exists
+ json_pointer top_pointer = ptr.top();
+ if (top_pointer != ptr)
+ {
+ result.at(top_pointer);
+ }
+
+ // get reference to parent of JSON pointer ptr
+ const auto last_path = ptr.back();
+ ptr.pop_back();
+ basic_json& parent = result[ptr];
+
+ switch (parent.m_type)
+ {
+ case value_t::null:
+ case value_t::object:
+ {
+ // use operator[] to add value
+ parent[last_path] = val;
+ break;
+ }
+
+ case value_t::array:
+ {
+ if (last_path == "-")
+ {
+ // special case: append to back
+ parent.push_back(val);
+ }
+ else
+ {
+ const auto idx = json_pointer::array_index(last_path);
+ if (JSON_UNLIKELY(static_cast<size_type>(idx) > parent.size()))
+ {
+ // avoid undefined behavior
+ JSON_THROW(out_of_range::create(401, "array index " + std::to_string(idx) + " is out of range"));
+ }
+
+ // default case: insert add offset
+ parent.insert(parent.begin() + static_cast<difference_type>(idx), val);
+ }
+ break;
+ }
+
+ // if there exists a parent it cannot be primitive
+ default: // LCOV_EXCL_LINE
+ assert(false); // LCOV_EXCL_LINE
+ }
+ };
+
+ // wrapper for "remove" operation; remove value at ptr
+ const auto operation_remove = [&result](json_pointer & ptr)
+ {
+ // get reference to parent of JSON pointer ptr
+ const auto last_path = ptr.back();
+ ptr.pop_back();
+ basic_json& parent = result.at(ptr);
+
+ // remove child
+ if (parent.is_object())
+ {
+ // perform range check
+ auto it = parent.find(last_path);
+ if (JSON_LIKELY(it != parent.end()))
+ {
+ parent.erase(it);
+ }
+ else
+ {
+ JSON_THROW(out_of_range::create(403, "key '" + last_path + "' not found"));
+ }
+ }
+ else if (parent.is_array())
+ {
+ // note erase performs range check
+ parent.erase(static_cast<size_type>(json_pointer::array_index(last_path)));
+ }
+ };
+
+ // type check: top level value must be an array
+ if (JSON_UNLIKELY(not json_patch.is_array()))
+ {
+ JSON_THROW(parse_error::create(104, 0, "JSON patch must be an array of objects"));
+ }
+
+ // iterate and apply the operations
+ for (const auto& val : json_patch)
+ {
+ // wrapper to get a value for an operation
+ const auto get_value = [&val](const std::string & op,
+ const std::string & member,
+ bool string_type) -> basic_json &
+ {
+ // find value
+ auto it = val.m_value.object->find(member);
+
+ // context-sensitive error message
+ const auto error_msg = (op == "op") ? "operation" : "operation '" + op + "'";
+
+ // check if desired value is present
+ if (JSON_UNLIKELY(it == val.m_value.object->end()))
+ {
+ JSON_THROW(parse_error::create(105, 0, error_msg + " must have member '" + member + "'"));
+ }
+
+ // check if result is of type string
+ if (JSON_UNLIKELY(string_type and not it->second.is_string()))
+ {
+ JSON_THROW(parse_error::create(105, 0, error_msg + " must have string member '" + member + "'"));
+ }
+
+ // no error: return value
+ return it->second;
+ };
+
+ // type check: every element of the array must be an object
+ if (JSON_UNLIKELY(not val.is_object()))
+ {
+ JSON_THROW(parse_error::create(104, 0, "JSON patch must be an array of objects"));
+ }
+
+ // collect mandatory members
+ const std::string op = get_value("op", "op", true);
+ const std::string path = get_value(op, "path", true);
+ json_pointer ptr(path);
+
+ switch (get_op(op))
+ {
+ case patch_operations::add:
+ {
+ operation_add(ptr, get_value("add", "value", false));
+ break;
+ }
+
+ case patch_operations::remove:
+ {
+ operation_remove(ptr);
+ break;
+ }
+
+ case patch_operations::replace:
+ {
+ // the "path" location must exist - use at()
+ result.at(ptr) = get_value("replace", "value", false);
+ break;
+ }
+
+ case patch_operations::move:
+ {
+ const std::string from_path = get_value("move", "from", true);
+ json_pointer from_ptr(from_path);
+
+ // the "from" location must exist - use at()
+ basic_json v = result.at(from_ptr);
+
+ // The move operation is functionally identical to a
+ // "remove" operation on the "from" location, followed
+ // immediately by an "add" operation at the target
+ // location with the value that was just removed.
+ operation_remove(from_ptr);
+ operation_add(ptr, v);
+ break;
+ }
+
+ case patch_operations::copy:
+ {
+ const std::string from_path = get_value("copy", "from", true);
+ const json_pointer from_ptr(from_path);
+
+ // the "from" location must exist - use at()
+ basic_json v = result.at(from_ptr);
+
+ // The copy is functionally identical to an "add"
+ // operation at the target location using the value
+ // specified in the "from" member.
+ operation_add(ptr, v);
+ break;
+ }
+
+ case patch_operations::test:
+ {
+ bool success = false;
+ JSON_TRY
+ {
+ // check if "value" matches the one at "path"
+ // the "path" location must exist - use at()
+ success = (result.at(ptr) == get_value("test", "value", false));
+ }
+ JSON_INTERNAL_CATCH (out_of_range&)
+ {
+ // ignore out of range errors: success remains false
+ }
+
+ // throw an exception if test fails
+ if (JSON_UNLIKELY(not success))
+ {
+ JSON_THROW(other_error::create(501, "unsuccessful: " + val.dump()));
+ }
+
+ break;
+ }
+
+ default:
+ {
+ // op must be "add", "remove", "replace", "move", "copy", or
+ // "test"
+ JSON_THROW(parse_error::create(105, 0, "operation value '" + op + "' is invalid"));
+ }
+ }
+ }
+
+ return result;
+ }
+
+ /*!
+ @brief creates a diff as a JSON patch
+
+ Creates a [JSON Patch](http://jsonpatch.com) so that value @a source can
+ be changed into the value @a target by calling @ref patch function.
+
+ @invariant For two JSON values @a source and @a target, the following code
+ yields always `true`:
+ @code {.cpp}
+ source.patch(diff(source, target)) == target;
+ @endcode
+
+ @note Currently, only `remove`, `add`, and `replace` operations are
+ generated.
+
+ @param[in] source JSON value to compare from
+ @param[in] target JSON value to compare against
+ @param[in] path helper value to create JSON pointers
+
+ @return a JSON patch to convert the @a source to @a target
+
+ @complexity Linear in the lengths of @a source and @a target.
+
+ @liveexample{The following code shows how a JSON patch is created as a
+ diff for two JSON values.,diff}
+
+ @sa @ref patch -- apply a JSON patch
+ @sa @ref merge_patch -- apply a JSON Merge Patch
+
+ @sa [RFC 6902 (JSON Patch)](https://tools.ietf.org/html/rfc6902)
+
+ @since version 2.0.0
+ */
+ JSON_NODISCARD
+ static basic_json diff(const basic_json& source, const basic_json& target,
+ const std::string& path = "")
+ {
+ // the patch
+ basic_json result(value_t::array);
+
+ // if the values are the same, return empty patch
+ if (source == target)
+ {
+ return result;
+ }
+
+ if (source.type() != target.type())
+ {
+ // different types: replace value
+ result.push_back(
+ {
+ {"op", "replace"}, {"path", path}, {"value", target}
+ });
+ return result;
+ }
+
+ switch (source.type())
+ {
+ case value_t::array:
+ {
+ // first pass: traverse common elements
+ std::size_t i = 0;
+ while (i < source.size() and i < target.size())
+ {
+ // recursive call to compare array values at index i
+ auto temp_diff = diff(source[i], target[i], path + "/" + std::to_string(i));
+ result.insert(result.end(), temp_diff.begin(), temp_diff.end());
+ ++i;
+ }
+
+ // i now reached the end of at least one array
+ // in a second pass, traverse the remaining elements
+
+ // remove my remaining elements
+ const auto end_index = static_cast<difference_type>(result.size());
+ while (i < source.size())
+ {
+ // add operations in reverse order to avoid invalid
+ // indices
+ result.insert(result.begin() + end_index, object(
+ {
+ {"op", "remove"},
+ {"path", path + "/" + std::to_string(i)}
+ }));
+ ++i;
+ }
+
+ // add other remaining elements
+ while (i < target.size())
+ {
+ result.push_back(
+ {
+ {"op", "add"},
+ {"path", path + "/" + std::to_string(i)},
+ {"value", target[i]}
+ });
+ ++i;
+ }
+
+ break;
+ }
+
+ case value_t::object:
+ {
+ // first pass: traverse this object's elements
+ for (auto it = source.cbegin(); it != source.cend(); ++it)
+ {
+ // escape the key name to be used in a JSON patch
+ const auto key = json_pointer::escape(it.key());
+
+ if (target.find(it.key()) != target.end())
+ {
+ // recursive call to compare object values at key it
+ auto temp_diff = diff(it.value(), target[it.key()], path + "/" + key);
+ result.insert(result.end(), temp_diff.begin(), temp_diff.end());
+ }
+ else
+ {
+ // found a key that is not in o -> remove it
+ result.push_back(object(
+ {
+ {"op", "remove"}, {"path", path + "/" + key}
+ }));
+ }
+ }
+
+ // second pass: traverse other object's elements
+ for (auto it = target.cbegin(); it != target.cend(); ++it)
+ {
+ if (source.find(it.key()) == source.end())
+ {
+ // found a key that is not in this -> add it
+ const auto key = json_pointer::escape(it.key());
+ result.push_back(
+ {
+ {"op", "add"}, {"path", path + "/" + key},
+ {"value", it.value()}
+ });
+ }
+ }
+
+ break;
+ }
+
+ default:
+ {
+ // both primitive type: replace value
+ result.push_back(
+ {
+ {"op", "replace"}, {"path", path}, {"value", target}
+ });
+ break;
+ }
+ }
+
+ return result;
+ }
+
+ /// @}
+
+ ////////////////////////////////
+ // JSON Merge Patch functions //
+ ////////////////////////////////
+
+ /// @name JSON Merge Patch functions
+ /// @{
+
+ /*!
+ @brief applies a JSON Merge Patch
+
+ The merge patch format is primarily intended for use with the HTTP PATCH
+ method as a means of describing a set of modifications to a target
+ resource's content. This function applies a merge patch to the current
+ JSON value.
+
+ The function implements the following algorithm from Section 2 of
+ [RFC 7396 (JSON Merge Patch)](https://tools.ietf.org/html/rfc7396):
+
+ ```
+ define MergePatch(Target, Patch):
+ if Patch is an Object:
+ if Target is not an Object:
+ Target = {} // Ignore the contents and set it to an empty Object
+ for each Name/Value pair in Patch:
+ if Value is null:
+ if Name exists in Target:
+ remove the Name/Value pair from Target
+ else:
+ Target[Name] = MergePatch(Target[Name], Value)
+ return Target
+ else:
+ return Patch
+ ```
+
+ Thereby, `Target` is the current object; that is, the patch is applied to
+ the current value.
+
+ @param[in] apply_patch the patch to apply
+
+ @complexity Linear in the lengths of @a patch.
+
+ @liveexample{The following code shows how a JSON Merge Patch is applied to
+ a JSON document.,merge_patch}
+
+ @sa @ref patch -- apply a JSON patch
+ @sa [RFC 7396 (JSON Merge Patch)](https://tools.ietf.org/html/rfc7396)
+
+ @since version 3.0.0
+ */
+ void merge_patch(const basic_json& apply_patch)
+ {
+ if (apply_patch.is_object())
+ {
+ if (not is_object())
+ {
+ *this = object();
+ }
+ for (auto it = apply_patch.begin(); it != apply_patch.end(); ++it)
+ {
+ if (it.value().is_null())
+ {
+ erase(it.key());
+ }
+ else
+ {
+ operator[](it.key()).merge_patch(it.value());
+ }
+ }
+ }
+ else
+ {
+ *this = apply_patch;
+ }
+ }
+
+ /// @}
+};
+} // namespace nlohmann
+
+///////////////////////
+// nonmember support //
+///////////////////////
+
+// specialization of std::swap, and std::hash
+namespace std
+{
+
+/// hash value for JSON objects
+template<>
+struct hash<nlohmann::json>
+{
+ /*!
+ @brief return a hash value for a JSON object
+
+ @since version 1.0.0
+ */
+ std::size_t operator()(const nlohmann::json& j) const
+ {
+ // a naive hashing via the string representation
+ const auto& h = hash<nlohmann::json::string_t>();
+ return h(j.dump());
+ }
+};
+
+/// specialization for std::less<value_t>
+/// @note: do not remove the space after '<',
+/// see https://github.com/nlohmann/json/pull/679
+template<>
+struct less< ::nlohmann::detail::value_t>
+{
+ /*!
+ @brief compare two value_t enum values
+ @since version 3.0.0
+ */
+ bool operator()(nlohmann::detail::value_t lhs,
+ nlohmann::detail::value_t rhs) const noexcept
+ {
+ return nlohmann::detail::operator<(lhs, rhs);
+ }
+};
+
+/*!
+@brief exchanges the values of two JSON objects
+
+@since version 1.0.0
+*/
+template<>
+inline void swap<nlohmann::json>(nlohmann::json& j1, nlohmann::json& j2) noexcept(
+ is_nothrow_move_constructible<nlohmann::json>::value and
+ is_nothrow_move_assignable<nlohmann::json>::value
+)
+{
+ j1.swap(j2);
+}
+
+} // namespace std
+
+/*!
+@brief user-defined string literal for JSON values
+
+This operator implements a user-defined string literal for JSON objects. It
+can be used by adding `"_json"` to a string literal and returns a JSON object
+if no parse error occurred.
+
+@param[in] s a string representation of a JSON object
+@param[in] n the length of string @a s
+@return a JSON object
+
+@since version 1.0.0
+*/
+inline nlohmann::json operator "" _json(const char* s, std::size_t n)
+{
+ return nlohmann::json::parse(s, s + n);
+}
+
+/*!
+@brief user-defined string literal for JSON pointer
+
+This operator implements a user-defined string literal for JSON Pointers. It
+can be used by adding `"_json_pointer"` to a string literal and returns a JSON pointer
+object if no parse error occurred.
+
+@param[in] s a string representation of a JSON Pointer
+@param[in] n the length of string @a s
+@return a JSON pointer object
+
+@since version 2.0.0
+*/
+inline nlohmann::json::json_pointer operator "" _json_pointer(const char* s, std::size_t n)
+{
+ return nlohmann::json::json_pointer(std::string(s, n));
+}
+
+// #include <nlohmann/detail/macro_unscope.hpp>
+
+
+// restore GCC/clang diagnostic settings
+#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__)
+ #pragma GCC diagnostic pop
+#endif
+#if defined(__clang__)
+ #pragma GCC diagnostic pop
+#endif
+
+// clean up
+#undef JSON_INTERNAL_CATCH
+#undef JSON_CATCH
+#undef JSON_THROW
+#undef JSON_TRY
+#undef JSON_LIKELY
+#undef JSON_UNLIKELY
+#undef JSON_DEPRECATED
+#undef JSON_NODISCARD
+#undef JSON_HAS_CPP_14
+#undef JSON_HAS_CPP_17
+#undef NLOHMANN_BASIC_JSON_TPL_DECLARATION
+#undef NLOHMANN_BASIC_JSON_TPL
+
+
+#endif // INCLUDE_NLOHMANN_JSON_HPP_
diff --git a/tools/mwasmarm_patcher/.gitignore b/tools/mwasmarm_patcher/.gitignore
new file mode 100644
index 00000000..f03366b2
--- /dev/null
+++ b/tools/mwasmarm_patcher/.gitignore
@@ -0,0 +1 @@
+mwasmarm_patcher
diff --git a/tools/mwasmarm_patcher/Makefile b/tools/mwasmarm_patcher/Makefile
new file mode 100644
index 00000000..1e89832e
--- /dev/null
+++ b/tools/mwasmarm_patcher/Makefile
@@ -0,0 +1,14 @@
+.PHONY: all clean
+
+CC := gcc
+CFLAGS := -O3
+
+.PHONY: all clean
+
+all: mwasmarm_patcher
+ @
+
+clean: ; $(RM) mwasmarm_patcher$(EXE)
+
+mwasmarm_patcher: mwasmarm_patcher.c
+ $(CC) $(CFLAGS) -o $@ $<
diff --git a/tools/mwasmarm_patcher/mwasmarm_patcher.c b/tools/mwasmarm_patcher/mwasmarm_patcher.c
new file mode 100644
index 00000000..2b887503
--- /dev/null
+++ b/tools/mwasmarm_patcher/mwasmarm_patcher.c
@@ -0,0 +1,224 @@
+#include <stdint.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdarg.h>
+#include <stdlib.h>
+
+// mwasmarm patcher v1.2
+// Patches the Metrowerk C compiler assembler to stop the line ending bug and the 0x400 incbin bug.
+
+// Changelog:
+// v1.1: Added patch definitions and looped over them to find the matching
+// definition as well as the version.
+// v1.2: Switched to array system for applying multiple patches for compiler
+// versions and added 0x400 incbin fix for each version.
+
+struct PatchPair {
+ int offsetPatch;
+ int newByte;
+};
+
+struct PatchDef {
+ char *version;
+ char *sha1before;
+ char *sha1after;
+ struct PatchPair *patches;
+};
+
+// Patch definitions for each of the respective assembler versions.
+struct PatchPair g12BasePatches[] = {
+ { 0x57614, 0x5 },
+ { 0xD47, 0x8D },
+ {0}
+};
+
+struct PatchPair g20BasePatches[] = {
+ { 0x57644, 0x5 },
+ { 0xD47, 0x8D },
+ {0}
+};
+
+struct PatchPair g20sp2p4Patches[] = {
+ { 0x57834, 0x5 },
+ { 0xD47, 0x8D },
+ {0}
+};
+
+// Table of definitions for each assembler version
+struct PatchDef gPatchDefs[] = {
+ // mwasmarm 1.2/base definition
+ {
+ "mwasmarm 1.2/base",
+ "87f942cc0a0e90e73550d8d6f3fffcdeb5f69fa5",
+ "3395ac5decf49135d892e93a3e6dd38676025983",
+ g12BasePatches
+ },
+ // mwasmarm 2.0/base definition
+ {
+ "mwasmarm 2.0/base",
+ "9d63877c776245129b4727b41d3e9e63cfc9cd28",
+ "ef75c3fb9f8d90cb4881386c41d8dc3ab4de7153",
+ g20BasePatches
+ },
+ // mwasmarm 2.0/sp2p4 definition
+ {
+ "mwasmarm 2.0/sp2p4",
+ "448cb0c7f1ace4393e9a9562f819f7a9f049be83",
+ "caa84dd90b1987ab7b42749bd5c9dcfdcfef59f3",
+ g20sp2p4Patches
+ },
+ {0}
+};
+
+// ---------------------------------------------------------
+// Credit to ax6 for implementation of sha1 hash functions
+// ---------------------------------------------------------
+
+void sha1_process_block (const unsigned char * block, uint32_t * state);
+
+unsigned char * calculate_sha1 (const void * data, unsigned length) {
+ uint32_t state[5] = {0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0};
+ const char * current;
+ unsigned remaining;
+ for (current = data, remaining = length; remaining >= 64; current += 64, remaining -= 64) sha1_process_block(current, state);
+ // technically only {0} is necessary, but better safe than sorry
+ unsigned char last_block[64] = {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,
+ 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};
+ memcpy(last_block, current, remaining);
+ last_block[remaining] = 0x80;
+ if (remaining >= 56) {
+ sha1_process_block(last_block, state);
+ memset(last_block, 0, 64);
+ }
+ unsigned long long bit_length = ((unsigned long long) length) << 3;
+ for (remaining = 5; remaining; remaining --) {
+ last_block[58 + remaining] = bit_length;
+ bit_length >>= 8;
+ }
+ sha1_process_block(last_block, state);
+ unsigned char * result = malloc(20);
+ for (remaining = 0; remaining < 20; remaining ++) result[remaining] = state[remaining >> 2] >> ((~remaining & 3) << 3);
+ return result;
+}
+
+static inline unsigned sha1_rotate (unsigned value, unsigned count) {
+ return (value << count) | (value >> (32 - count));
+}
+
+void sha1_process_block (const unsigned char * block, uint32_t * state) {
+ uint32_t words[80];
+ unsigned pos, temp, count, a, b, c, d, e;
+ // constants used by SHA-1; they are actually simply the square roots of 2, 3, 5 and 10 as a fixed-point number (2.30 format)
+ const uint32_t hash_constants[4] = {0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6};
+ memset(words, 0, 16 * sizeof(uint32_t));
+ for (pos = 0; pos < 64; pos ++) words[pos >> 2] = (words[pos >> 2] << 8) | block[pos];
+ for (pos = 16; pos < 80; pos ++) words[pos] = sha1_rotate(words[pos - 3] ^ words[pos - 8] ^ words[pos - 14] ^ words[pos - 16], 1);
+ a = *state;
+ b = state[1];
+ c = state[2];
+ d = state[3];
+ e = state[4];
+ for (pos = 0; pos < 4; pos ++) for (count = 0; count < 20; count ++) {
+ temp = sha1_rotate(a, 5) + e + words[pos * 20 + count] + hash_constants[pos];
+ switch (pos) {
+ case 0:
+ temp += (b & c) | (~b & d);
+ break;
+ case 2:
+ temp += (b & c) | (b & d) | (c & d);
+ break;
+ default:
+ temp += b ^ c ^ d;
+ }
+ e = d;
+ d = c;
+ c = sha1_rotate(b, 30);
+ b = a;
+ a = temp;
+ }
+ *state += a;
+ state[1] += b;
+ state[2] += c;
+ state[3] += d;
+ state[4] += e;
+}
+
+// ---------------------------------------------------------
+// ax6 code end
+// ---------------------------------------------------------
+
+void fatal_printf(char *str, ...) {
+ va_list args;
+ va_start(args, str);
+ vprintf(str, args);
+ va_end(args);
+ exit(1);
+}
+
+// return size in bytes
+int get_file_size (FILE * fp) {
+ int curpos = ftell(fp);
+ fseek(fp, 0, SEEK_END);
+ int result = ftell(fp);
+ fseek(fp, curpos, SEEK_SET);
+ return result;
+}
+
+#define SHA_DIGEST_LENGTH 20
+
+void print_help(void) {
+ printf("mwasmarm patcher usage: input (example: mwasmarm_patcher mwasmarm.exe)\n");
+}
+
+int main(int argc, char *argv[]) {
+ if (argc != 2) {
+ print_help();
+ return 1;
+ } else {
+ // Open the file and read it's sha1 hash.
+ FILE *f = fopen(argv[1], "rb+");
+ if (f == NULL) {
+ fatal_printf("ERROR: No file detected\n");
+ }
+ int fsize = get_file_size(f);
+ unsigned char *string = malloc(fsize + 1);
+ if (string == NULL) {
+ fatal_printf("ERROR: Failed to allocate string variable\n");
+ }
+ int readvar = fread(string, 1, fsize, f); // var to surpress warning
+
+ // Check if sha1 matches either known assembler hashes.
+ unsigned char *sha1 = calculate_sha1(string, fsize);
+ if (sha1 == NULL) {
+ fatal_printf("ERROR: Failed to retrieve sha1 hash\n");
+ }
+ free(string);
+
+ unsigned char buf[SHA_DIGEST_LENGTH*2];
+ for (int i=0; i < SHA_DIGEST_LENGTH; i++) {
+ sprintf((unsigned char*)&(buf[i*2]), "%02x", sha1[i]);
+ }
+ free(sha1);
+
+ // loop over each patch definition to attempt to locate a supported version and, if
+ // needed, apply the patch definitions.
+ for (int i = 0; gPatchDefs[i].sha1before != NULL; i++) {
+ // check if already patched for the current loop.
+ if (!strcmp(buf, gPatchDefs[i].sha1after)) {
+ printf("Supported patched version detected (%s): no action needed\n", gPatchDefs[i].version);
+ return 0;
+ } else if(!strcmp(buf, gPatchDefs[i].sha1before)) {
+ // we found an unpatched version: apply the patches.
+ for (int j = 0; gPatchDefs[i].patches[j].offsetPatch != 0; j++) {
+ fseek(f, gPatchDefs[i].patches[j].offsetPatch, SEEK_SET);
+ fputc(gPatchDefs[i].patches[j].newByte, f);
+ }
+ printf("Supported unpatched version detected (%s): assembler patched\n", gPatchDefs[i].version);
+ return 0;
+ }
+ }
+ // Unable to locate supported version, quitting
+ fatal_printf("ERROR: Unsupported mwasmarm.exe version\n");
+ }
+ return 0;
+}
diff --git a/tools/nitrogfx/.gitignore b/tools/nitrogfx/.gitignore
new file mode 100644
index 00000000..4379fab8
--- /dev/null
+++ b/tools/nitrogfx/.gitignore
@@ -0,0 +1 @@
+nitrogfx
diff --git a/tools/nitrogfx/LICENSE b/tools/nitrogfx/LICENSE
new file mode 100644
index 00000000..b66bf81c
--- /dev/null
+++ b/tools/nitrogfx/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2015 YamaArashi
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/tools/nitrogfx/Makefile b/tools/nitrogfx/Makefile
new file mode 100644
index 00000000..5b75d652
--- /dev/null
+++ b/tools/nitrogfx/Makefile
@@ -0,0 +1,21 @@
+CC = gcc
+
+CFLAGS = -Wall -Wextra -Werror -Wno-sign-compare -std=c11 -O2 -DPNG_SKIP_SETJMP_CHECK
+
+LIBS = -lpng -lz
+
+SRCS = main.c convert_png.c gfx.c jasc_pal.c lz.c rl.c util.c font.c huff.c
+
+.PHONY: all clean
+
+all: nitrogfx
+ @:
+
+nitrogfx-debug: $(SRCS) convert_png.h gfx.h global.h jasc_pal.h lz.h rl.h util.h font.h
+ $(CC) $(CFLAGS) -DDEBUG $(SRCS) -o $@ $(LDFLAGS) $(LIBS)
+
+nitrogfx: $(SRCS) convert_png.h gfx.h global.h jasc_pal.h lz.h rl.h util.h font.h
+ $(CC) $(CFLAGS) $(SRCS) -o $@ $(LDFLAGS) $(LIBS)
+
+clean:
+ $(RM) nitrogfx nitrogfx.exe
diff --git a/tools/nitrogfx/convert_png.c b/tools/nitrogfx/convert_png.c
new file mode 100644
index 00000000..cdfa39a7
--- /dev/null
+++ b/tools/nitrogfx/convert_png.c
@@ -0,0 +1,254 @@
+// Copyright (c) 2015 YamaArashi
+
+#include <stdio.h>
+#include <setjmp.h>
+#include <png.h>
+#include "global.h"
+#include "convert_png.h"
+#include "gfx.h"
+
+static FILE *PngReadOpen(char *path, png_structp *pngStruct, png_infop *pngInfo)
+{
+ FILE *fp = fopen(path, "rb");
+
+ if (fp == NULL)
+ FATAL_ERROR("Failed to open \"%s\" for reading.\n", path);
+
+ unsigned char sig[8];
+
+ if (fread(sig, 8, 1, fp) != 1)
+ FATAL_ERROR("Failed to read PNG signature from \"%s\".\n", path);
+
+ if (png_sig_cmp(sig, 0, 8))
+ FATAL_ERROR("\"%s\" does not have a valid PNG signature.\n", path);
+
+ png_structp png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
+
+ if (!png_ptr)
+ FATAL_ERROR("Failed to create PNG read struct.\n");
+
+ png_infop info_ptr = png_create_info_struct(png_ptr);
+
+ if (!info_ptr)
+ FATAL_ERROR("Failed to create PNG info struct.\n");
+
+ if (setjmp(png_jmpbuf(png_ptr)))
+ FATAL_ERROR("Failed to init I/O for reading \"%s\".\n", path);
+
+ png_init_io(png_ptr, fp);
+ png_set_sig_bytes(png_ptr, 8);
+ png_read_info(png_ptr, info_ptr);
+
+ *pngStruct = png_ptr;
+ *pngInfo = info_ptr;
+
+ return fp;
+}
+
+static unsigned char *ConvertBitDepth(unsigned char *src, int srcBitDepth, int destBitDepth, int numPixels)
+{
+ // Round the number of bits up to the next 8 and divide by 8 to get the number of bytes.
+ int srcSize = ((numPixels * srcBitDepth + 7) & ~7) / 8;
+ int destSize = ((numPixels * destBitDepth + 7) & ~7) / 8;
+ unsigned char *output = calloc(destSize, 1);
+ unsigned char *dest = output;
+ int i;
+ int j;
+ int destBit = 8 - destBitDepth;
+
+ for (i = 0; i < srcSize; i++)
+ {
+ unsigned char srcByte = src[i];
+
+ for (j = 8 - srcBitDepth; j >= 0; j -= srcBitDepth)
+ {
+ unsigned char pixel = (srcByte >> j) % (1 << srcBitDepth);
+
+ if (pixel >= (1 << destBitDepth))
+ FATAL_ERROR("Image exceeds the maximum color value for a %ibpp image.\n", destBitDepth);
+ *dest |= pixel << destBit;
+ destBit -= destBitDepth;
+ if (destBit < 0)
+ {
+ dest++;
+ destBit = 8 - destBitDepth;
+ }
+ }
+ }
+
+ return output;
+}
+
+void ReadPng(char *path, struct Image *image)
+{
+ png_structp png_ptr;
+ png_infop info_ptr;
+
+ FILE *fp = PngReadOpen(path, &png_ptr, &info_ptr);
+
+ int bit_depth = png_get_bit_depth(png_ptr, info_ptr);
+
+ int color_type = png_get_color_type(png_ptr, info_ptr);
+
+ if (color_type != PNG_COLOR_TYPE_GRAY && color_type != PNG_COLOR_TYPE_PALETTE)
+ FATAL_ERROR("\"%s\" has an unsupported color type.\n", path);
+
+ // Check if the image has a palette so that we can tell if the colors need to be inverted later.
+ // Don't read the palette because it's not needed for now.
+ image->hasPalette = (color_type == PNG_COLOR_TYPE_PALETTE);
+
+ image->width = png_get_image_width(png_ptr, info_ptr);
+ image->height = png_get_image_height(png_ptr, info_ptr);
+
+ int rowbytes = png_get_rowbytes(png_ptr, info_ptr);
+
+ image->pixels = malloc(image->height * rowbytes);
+
+ if (image->pixels == NULL)
+ FATAL_ERROR("Failed to allocate pixel buffer.\n");
+
+ png_bytepp row_pointers = malloc(image->height * sizeof(png_bytep));
+
+ if (row_pointers == NULL)
+ FATAL_ERROR("Failed to allocate row pointers.\n");
+
+ for (int i = 0; i < image->height; i++)
+ row_pointers[i] = (png_bytep)(image->pixels + (i * rowbytes));
+
+ if (setjmp(png_jmpbuf(png_ptr)))
+ FATAL_ERROR("Error reading from \"%s\".\n", path);
+
+ png_read_image(png_ptr, row_pointers);
+
+ png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
+
+ free(row_pointers);
+ fclose(fp);
+
+ if (bit_depth != image->bitDepth)
+ {
+ unsigned char *src = image->pixels;
+
+ if (bit_depth != 1 && bit_depth != 2 && bit_depth != 4 && bit_depth != 8)
+ FATAL_ERROR("Bit depth of image must be 1, 2, 4, or 8.\n");
+ image->pixels = ConvertBitDepth(image->pixels, bit_depth, image->bitDepth, image->width * image->height);
+ free(src);
+ image->bitDepth = bit_depth;
+ }
+}
+
+void ReadPngPalette(char *path, struct Palette *palette)
+{
+ png_structp png_ptr;
+ png_infop info_ptr;
+ png_colorp colors;
+ int numColors;
+
+ FILE *fp = PngReadOpen(path, &png_ptr, &info_ptr);
+
+ if (png_get_color_type(png_ptr, info_ptr) != PNG_COLOR_TYPE_PALETTE)
+ FATAL_ERROR("The image \"%s\" does not contain a palette.\n", path);
+
+ if (png_get_PLTE(png_ptr, info_ptr, &colors, &numColors) != PNG_INFO_PLTE)
+ FATAL_ERROR("Failed to retrieve palette from \"%s\".\n", path);
+
+ if (numColors > 256)
+ FATAL_ERROR("Images with more than 256 colors are not supported.\n");
+
+ palette->numColors = numColors;
+ for (int i = 0; i < numColors; i++) {
+ palette->colors[i].red = colors[i].red;
+ palette->colors[i].green = colors[i].green;
+ palette->colors[i].blue = colors[i].blue;
+ }
+
+ png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
+
+ fclose(fp);
+}
+
+void SetPngPalette(png_structp png_ptr, png_infop info_ptr, struct Palette *palette)
+{
+ png_colorp colors = malloc(palette->numColors * sizeof(png_color));
+
+ if (colors == NULL)
+ FATAL_ERROR("Failed to allocate PNG palette.\n");
+
+ for (int i = 0; i < palette->numColors; i++) {
+ colors[i].red = palette->colors[i].red;
+ colors[i].green = palette->colors[i].green;
+ colors[i].blue = palette->colors[i].blue;
+ }
+
+ png_set_PLTE(png_ptr, info_ptr, colors, palette->numColors);
+
+ free(colors);
+}
+
+void WritePng(char *path, struct Image *image)
+{
+ FILE *fp = fopen(path, "wb");
+
+ if (fp == NULL)
+ FATAL_ERROR("Failed to open \"%s\" for writing.\n", path);
+
+ png_structp png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
+
+ if (!png_ptr)
+ FATAL_ERROR("Failed to create PNG write struct.\n");
+
+ png_infop info_ptr = png_create_info_struct(png_ptr);
+
+ if (!info_ptr)
+ FATAL_ERROR("Failed to create PNG info struct.\n");
+
+ if (setjmp(png_jmpbuf(png_ptr)))
+ FATAL_ERROR("Failed to init I/O for writing \"%s\".\n", path);
+
+ png_init_io(png_ptr, fp);
+
+ if (setjmp(png_jmpbuf(png_ptr)))
+ FATAL_ERROR("Error writing header for \"%s\".\n", path);
+
+ int color_type = image->hasPalette ? PNG_COLOR_TYPE_PALETTE : PNG_COLOR_TYPE_GRAY;
+
+ png_set_IHDR(png_ptr, info_ptr, image->width, image->height,
+ image->bitDepth, color_type, PNG_INTERLACE_NONE,
+ PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE);
+
+ if (image->hasPalette) {
+ SetPngPalette(png_ptr, info_ptr, &image->palette);
+
+ if (image->hasTransparency) {
+ png_byte trans = 0;
+ png_set_tRNS(png_ptr, info_ptr, &trans, 1, 0);
+ }
+ }
+
+ png_write_info(png_ptr, info_ptr);
+
+ png_bytepp row_pointers = malloc(image->height * sizeof(png_bytep));
+
+ if (row_pointers == NULL)
+ FATAL_ERROR("Failed to allocate row pointers.\n");
+
+ int rowbytes = png_get_rowbytes(png_ptr, info_ptr);
+
+ for (int i = 0; i < image->height; i++)
+ row_pointers[i] = (png_bytep)(image->pixels + (i * rowbytes));
+
+ if (setjmp(png_jmpbuf(png_ptr)))
+ FATAL_ERROR("Error writing \"%s\".\n", path);
+
+ png_write_image(png_ptr, row_pointers);
+
+ if (setjmp(png_jmpbuf(png_ptr)))
+ FATAL_ERROR("Error ending write of \"%s\".\n", path);
+
+ png_write_end(png_ptr, NULL);
+
+ fclose(fp);
+
+ png_destroy_write_struct(&png_ptr, &info_ptr);
+ free(row_pointers);
+}
diff --git a/tools/nitrogfx/convert_png.h b/tools/nitrogfx/convert_png.h
new file mode 100644
index 00000000..caf081b7
--- /dev/null
+++ b/tools/nitrogfx/convert_png.h
@@ -0,0 +1,12 @@
+// Copyright (c) 2015 YamaArashi
+
+#ifndef CONVERT_PNG_H
+#define CONVERT_PNG_H
+
+#include "gfx.h"
+
+void ReadPng(char *path, struct Image *image);
+void WritePng(char *path, struct Image *image);
+void ReadPngPalette(char *path, struct Palette *palette);
+
+#endif // CONVERT_PNG_H
diff --git a/tools/nitrogfx/font.c b/tools/nitrogfx/font.c
new file mode 100644
index 00000000..0dd6fbc3
--- /dev/null
+++ b/tools/nitrogfx/font.c
@@ -0,0 +1,326 @@
+// Copyright (c) 2015 YamaArashi
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <stdbool.h>
+#include "global.h"
+#include "font.h"
+#include "gfx.h"
+#include "util.h"
+
+unsigned char gFontPalette[][3] = {
+ {0x90, 0xC8, 0xFF}, // bg (saturated blue that contrasts well with the shadow color)
+ {0x38, 0x38, 0x38}, // fg (dark grey)
+ {0xD8, 0xD8, 0xD8}, // shadow (light grey)
+ {0xFF, 0xFF, 0xFF} // box (white)
+};
+
+static void ConvertFromLatinFont(unsigned char *src, unsigned char *dest, unsigned int numRows)
+{
+ unsigned int srcPixelsOffset = 0;
+
+ for (unsigned int row = 0; row < numRows; row++) {
+ for (unsigned int column = 0; column < 16; column++) {
+ for (unsigned int glyphTile = 0; glyphTile < 4; glyphTile++) {
+ unsigned int pixelsX = (column * 16) + ((glyphTile & 1) * 8);
+
+ for (unsigned int i = 0; i < 8; i++) {
+ unsigned int pixelsY = (row * 16) + ((glyphTile >> 1) * 8) + i;
+ unsigned int destPixelsOffset = (pixelsY * 64) + (pixelsX / 4);
+
+ dest[destPixelsOffset] = src[srcPixelsOffset + 1];
+ dest[destPixelsOffset + 1] = src[srcPixelsOffset];
+
+ srcPixelsOffset += 2;
+ }
+ }
+ }
+ }
+}
+
+static void ConvertToLatinFont(unsigned char *src, unsigned char *dest, unsigned int numRows)
+{
+ unsigned int destPixelsOffset = 0;
+
+ for (unsigned int row = 0; row < numRows; row++) {
+ for (unsigned int column = 0; column < 16; column++) {
+ for (unsigned int glyphTile = 0; glyphTile < 4; glyphTile++) {
+ unsigned int pixelsX = (column * 16) + ((glyphTile & 1) * 8);
+
+ for (unsigned int i = 0; i < 8; i++) {
+ unsigned int pixelsY = (row * 16) + ((glyphTile >> 1) * 8) + i;
+ unsigned int srcPixelsOffset = (pixelsY * 64) + (pixelsX / 4);
+
+ dest[destPixelsOffset] = src[srcPixelsOffset + 1];
+ dest[destPixelsOffset + 1] = src[srcPixelsOffset];
+
+ destPixelsOffset += 2;
+ }
+ }
+ }
+ }
+}
+
+static void ConvertFromHalfwidthJapaneseFont(unsigned char *src, unsigned char *dest, unsigned int numRows)
+{
+ for (unsigned int row = 0; row < numRows; row++) {
+ for (unsigned int column = 0; column < 16; column++) {
+ unsigned int glyphIndex = (row * 16) + column;
+
+ for (unsigned int glyphTile = 0; glyphTile < 2; glyphTile++) {
+ unsigned int pixelsX = column * 8;
+ unsigned int srcPixelsOffset = 512 * (glyphIndex >> 4) + 16 * (glyphIndex & 0xF) + 256 * glyphTile;
+
+ for (unsigned int i = 0; i < 8; i++) {
+ unsigned int pixelsY = (row * 16) + (glyphTile * 8) + i;
+ unsigned int destPixelsOffset = (pixelsY * 32) + (pixelsX / 4);
+
+ dest[destPixelsOffset] = src[srcPixelsOffset + 1];
+ dest[destPixelsOffset + 1] = src[srcPixelsOffset];
+
+ srcPixelsOffset += 2;
+ }
+ }
+ }
+ }
+}
+
+static void ConvertToHalfwidthJapaneseFont(unsigned char *src, unsigned char *dest, unsigned int numRows)
+{
+ for (unsigned int row = 0; row < numRows; row++) {
+ for (unsigned int column = 0; column < 16; column++) {
+ unsigned int glyphIndex = (row * 16) + column;
+
+ for (unsigned int glyphTile = 0; glyphTile < 2; glyphTile++) {
+ unsigned int pixelsX = column * 8;
+ unsigned int destPixelsOffset = 512 * (glyphIndex >> 4) + 16 * (glyphIndex & 0xF) + 256 * glyphTile;
+
+ for (unsigned int i = 0; i < 8; i++) {
+ unsigned int pixelsY = (row * 16) + (glyphTile * 8) + i;
+ unsigned int srcPixelsOffset = (pixelsY * 32) + (pixelsX / 4);
+
+ dest[destPixelsOffset] = src[srcPixelsOffset + 1];
+ dest[destPixelsOffset + 1] = src[srcPixelsOffset];
+
+ destPixelsOffset += 2;
+ }
+ }
+ }
+ }
+}
+
+static void ConvertFromFullwidthJapaneseFont(unsigned char *src, unsigned char *dest, unsigned int numRows)
+{
+ for (unsigned int row = 0; row < numRows; row++) {
+ for (unsigned int column = 0; column < 16; column++) {
+ unsigned int glyphIndex = (row * 16) + column;
+
+ for (unsigned int glyphTile = 0; glyphTile < 4; glyphTile++) {
+ unsigned int pixelsX = (column * 16) + ((glyphTile & 1) * 8);
+ unsigned int srcPixelsOffset = 512 * (glyphIndex >> 3) + 32 * (glyphIndex & 7) + 256 * (glyphTile >> 1) + 16 * (glyphTile & 1);
+
+ for (unsigned int i = 0; i < 8; i++) {
+ unsigned int pixelsY = (row * 16) + ((glyphTile >> 1) * 8) + i;
+ unsigned int destPixelsOffset = (pixelsY * 64) + (pixelsX / 4);
+
+ dest[destPixelsOffset] = src[srcPixelsOffset + 1];
+ dest[destPixelsOffset + 1] = src[srcPixelsOffset];
+
+ srcPixelsOffset += 2;
+ }
+ }
+ }
+ }
+}
+
+static void ConvertToFullwidthJapaneseFont(unsigned char *src, unsigned char *dest, unsigned int numRows)
+{
+ for (unsigned int row = 0; row < numRows; row++) {
+ for (unsigned int column = 0; column < 16; column++) {
+ unsigned int glyphIndex = (row * 16) + column;
+
+ for (unsigned int glyphTile = 0; glyphTile < 4; glyphTile++) {
+ unsigned int pixelsX = (column * 16) + ((glyphTile & 1) * 8);
+ unsigned int destPixelsOffset = 512 * (glyphIndex >> 3) + 32 * (glyphIndex & 7) + 256 * (glyphTile >> 1) + 16 * (glyphTile & 1);
+
+ for (unsigned int i = 0; i < 8; i++) {
+ unsigned int pixelsY = (row * 16) + ((glyphTile >> 1) * 8) + i;
+ unsigned int srcPixelsOffset = (pixelsY * 64) + (pixelsX / 4);
+
+ dest[destPixelsOffset] = src[srcPixelsOffset + 1];
+ dest[destPixelsOffset + 1] = src[srcPixelsOffset];
+
+ destPixelsOffset += 2;
+ }
+ }
+ }
+ }
+}
+
+static void SetFontPalette(struct Image *image)
+{
+ image->hasPalette = true;
+
+ image->palette.numColors = 4;
+
+ for (int i = 0; i < image->palette.numColors; i++) {
+ image->palette.colors[i].red = gFontPalette[i][0];
+ image->palette.colors[i].green = gFontPalette[i][1];
+ image->palette.colors[i].blue = gFontPalette[i][2];
+ }
+
+ image->hasTransparency = false;
+}
+
+void ReadLatinFont(char *path, struct Image *image)
+{
+ int fileSize;
+ unsigned char *buffer = ReadWholeFile(path, &fileSize);
+
+ int numGlyphs = fileSize / 64;
+
+ if (numGlyphs % 16 != 0)
+ FATAL_ERROR("The number of glyphs (%d) is not a multiple of 16.\n", numGlyphs);
+
+ int numRows = numGlyphs / 16;
+
+ image->width = 256;
+ image->height = numRows * 16;
+ image->bitDepth = 2;
+ image->pixels = malloc(fileSize);
+
+ if (image->pixels == NULL)
+ FATAL_ERROR("Failed to allocate memory for font.\n");
+
+ ConvertFromLatinFont(buffer, image->pixels, numRows);
+
+ free(buffer);
+
+ SetFontPalette(image);
+}
+
+void WriteLatinFont(char *path, struct Image *image)
+{
+ if (image->width != 256)
+ FATAL_ERROR("The width of the font image (%d) is not 256.\n", image->width);
+
+ if (image->height % 16 != 0)
+ FATAL_ERROR("The height of the font image (%d) is not a multiple of 16.\n", image->height);
+
+ int numRows = image->height / 16;
+ int bufferSize = numRows * 16 * 64;
+ unsigned char *buffer = malloc(bufferSize);
+
+ if (buffer == NULL)
+ FATAL_ERROR("Failed to allocate memory for font.\n");
+
+ ConvertToLatinFont(image->pixels, buffer, numRows);
+
+ WriteWholeFile(path, buffer, bufferSize);
+
+ free(buffer);
+}
+
+void ReadHalfwidthJapaneseFont(char *path, struct Image *image)
+{
+ int fileSize;
+ unsigned char *buffer = ReadWholeFile(path, &fileSize);
+
+ int glyphSize = 32;
+
+ if (fileSize % glyphSize != 0)
+ FATAL_ERROR("The file size (%d) is not a multiple of %d.\n", fileSize, glyphSize);
+
+ int numGlyphs = fileSize / glyphSize;
+
+ if (numGlyphs % 16 != 0)
+ FATAL_ERROR("The number of glyphs (%d) is not a multiple of 16.\n", numGlyphs);
+
+ int numRows = numGlyphs / 16;
+
+ image->width = 128;
+ image->height = numRows * 16;
+ image->bitDepth = 2;
+ image->pixels = malloc(fileSize);
+
+ if (image->pixels == NULL)
+ FATAL_ERROR("Failed to allocate memory for font.\n");
+
+ ConvertFromHalfwidthJapaneseFont(buffer, image->pixels, numRows);
+
+ free(buffer);
+
+ SetFontPalette(image);
+}
+
+void WriteHalfwidthJapaneseFont(char *path, struct Image *image)
+{
+ if (image->width != 128)
+ FATAL_ERROR("The width of the font image (%d) is not 128.\n", image->width);
+
+ if (image->height % 16 != 0)
+ FATAL_ERROR("The height of the font image (%d) is not a multiple of 16.\n", image->height);
+
+ int numRows = image->height / 16;
+ int bufferSize = numRows * 16 * 32;
+ unsigned char *buffer = malloc(bufferSize);
+
+ if (buffer == NULL)
+ FATAL_ERROR("Failed to allocate memory for font.\n");
+
+ ConvertToHalfwidthJapaneseFont(image->pixels, buffer, numRows);
+
+ WriteWholeFile(path, buffer, bufferSize);
+
+ free(buffer);
+}
+
+void ReadFullwidthJapaneseFont(char *path, struct Image *image)
+{
+ int fileSize;
+ unsigned char *buffer = ReadWholeFile(path, &fileSize);
+
+ int numGlyphs = fileSize / 64;
+
+ if (numGlyphs % 16 != 0)
+ FATAL_ERROR("The number of glyphs (%d) is not a multiple of 16.\n", numGlyphs);
+
+ int numRows = numGlyphs / 16;
+
+ image->width = 256;
+ image->height = numRows * 16;
+ image->bitDepth = 2;
+ image->pixels = malloc(fileSize);
+
+ if (image->pixels == NULL)
+ FATAL_ERROR("Failed to allocate memory for font.\n");
+
+ ConvertFromFullwidthJapaneseFont(buffer, image->pixels, numRows);
+
+ free(buffer);
+
+ SetFontPalette(image);
+}
+
+void WriteFullwidthJapaneseFont(char *path, struct Image *image)
+{
+ if (image->width != 256)
+ FATAL_ERROR("The width of the font image (%d) is not 256.\n", image->width);
+
+ if (image->height % 16 != 0)
+ FATAL_ERROR("The height of the font image (%d) is not a multiple of 16.\n", image->height);
+
+ int numRows = image->height / 16;
+ int bufferSize = numRows * 16 * 64;
+ unsigned char *buffer = malloc(bufferSize);
+
+ if (buffer == NULL)
+ FATAL_ERROR("Failed to allocate memory for font.\n");
+
+ ConvertToFullwidthJapaneseFont(image->pixels, buffer, numRows);
+
+ WriteWholeFile(path, buffer, bufferSize);
+
+ free(buffer);
+}
diff --git a/tools/nitrogfx/font.h b/tools/nitrogfx/font.h
new file mode 100644
index 00000000..45086d02
--- /dev/null
+++ b/tools/nitrogfx/font.h
@@ -0,0 +1,16 @@
+// Copyright (c) 2015 YamaArashi
+
+#ifndef FONT_H
+#define FONT_H
+
+#include <stdbool.h>
+#include "gfx.h"
+
+void ReadLatinFont(char *path, struct Image *image);
+void WriteLatinFont(char *path, struct Image *image);
+void ReadHalfwidthJapaneseFont(char *path, struct Image *image);
+void WriteHalfwidthJapaneseFont(char *path, struct Image *image);
+void ReadFullwidthJapaneseFont(char *path, struct Image *image);
+void WriteFullwidthJapaneseFont(char *path, struct Image *image);
+
+#endif // FONT_H
diff --git a/tools/nitrogfx/gfx.c b/tools/nitrogfx/gfx.c
new file mode 100644
index 00000000..f927deed
--- /dev/null
+++ b/tools/nitrogfx/gfx.c
@@ -0,0 +1,344 @@
+// Copyright (c) 2015 YamaArashi
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <stdbool.h>
+#include "global.h"
+#include "gfx.h"
+#include "util.h"
+
+#define GET_GBA_PAL_RED(x) (((x) >> 0) & 0x1F)
+#define GET_GBA_PAL_GREEN(x) (((x) >> 5) & 0x1F)
+#define GET_GBA_PAL_BLUE(x) (((x) >> 10) & 0x1F)
+
+#define SET_GBA_PAL(r, g, b) (((b) << 10) | ((g) << 5) | (r))
+
+#define UPCONVERT_BIT_DEPTH(x) (((x) * 255) / 31)
+
+#define DOWNCONVERT_BIT_DEPTH(x) ((x) / 8)
+
+static void AdvanceMetatilePosition(int *subTileX, int *subTileY, int *metatileX, int *metatileY, int metatilesWide, int metatileWidth, int metatileHeight)
+{
+ (*subTileX)++;
+ if (*subTileX == metatileWidth) {
+ *subTileX = 0;
+ (*subTileY)++;
+ if (*subTileY == metatileHeight) {
+ *subTileY = 0;
+ (*metatileX)++;
+ if (*metatileX == metatilesWide) {
+ *metatileX = 0;
+ (*metatileY)++;
+ }
+ }
+ }
+}
+
+static void ConvertFromTiles1Bpp(unsigned char *src, unsigned char *dest, int numTiles, int metatilesWide, int metatileWidth, int metatileHeight, bool invertColors)
+{
+ int subTileX = 0;
+ int subTileY = 0;
+ int metatileX = 0;
+ int metatileY = 0;
+ int pitch = metatilesWide * metatileWidth;
+
+ for (int i = 0; i < numTiles; i++) {
+ for (int j = 0; j < 8; j++) {
+ int destY = (metatileY * metatileHeight + subTileY) * 8 + j;
+ int destX = metatileX * metatileWidth + subTileX;
+ unsigned char srcPixelOctet = *src++;
+ unsigned char *destPixelOctet = &dest[destY * pitch + destX];
+
+ for (int k = 0; k < 8; k++) {
+ *destPixelOctet <<= 1;
+ *destPixelOctet |= (srcPixelOctet & 1) ^ invertColors;
+ srcPixelOctet >>= 1;
+ }
+ }
+
+ AdvanceMetatilePosition(&subTileX, &subTileY, &metatileX, &metatileY, metatilesWide, metatileWidth, metatileHeight);
+ }
+}
+
+static void ConvertFromTiles4Bpp(unsigned char *src, unsigned char *dest, int numTiles, int metatilesWide, int metatileWidth, int metatileHeight, bool invertColors)
+{
+ int subTileX = 0;
+ int subTileY = 0;
+ int metatileX = 0;
+ int metatileY = 0;
+ int pitch = (metatilesWide * metatileWidth) * 4;
+
+ for (int i = 0; i < numTiles; i++) {
+ for (int j = 0; j < 8; j++) {
+ int destY = (metatileY * metatileHeight + subTileY) * 8 + j;
+
+ for (int k = 0; k < 4; k++) {
+ int destX = (metatileX * metatileWidth + subTileX) * 4 + k;
+ unsigned char srcPixelPair = *src++;
+ unsigned char leftPixel = srcPixelPair & 0xF;
+ unsigned char rightPixel = srcPixelPair >> 4;
+
+ if (invertColors) {
+ leftPixel = 15 - leftPixel;
+ rightPixel = 15 - rightPixel;
+ }
+
+ dest[destY * pitch + destX] = (leftPixel << 4) | rightPixel;
+ }
+ }
+
+ AdvanceMetatilePosition(&subTileX, &subTileY, &metatileX, &metatileY, metatilesWide, metatileWidth, metatileHeight);
+ }
+}
+
+static void ConvertFromTiles8Bpp(unsigned char *src, unsigned char *dest, int numTiles, int metatilesWide, int metatileWidth, int metatileHeight, bool invertColors)
+{
+ int subTileX = 0;
+ int subTileY = 0;
+ int metatileX = 0;
+ int metatileY = 0;
+ int pitch = (metatilesWide * metatileWidth) * 8;
+
+ for (int i = 0; i < numTiles; i++) {
+ for (int j = 0; j < 8; j++) {
+ int destY = (metatileY * metatileHeight + subTileY) * 8 + j;
+
+ for (int k = 0; k < 8; k++) {
+ int destX = (metatileX * metatileWidth + subTileX) * 8 + k;
+ unsigned char srcPixel = *src++;
+
+ if (invertColors)
+ srcPixel = 255 - srcPixel;
+
+ dest[destY * pitch + destX] = srcPixel;
+ }
+ }
+
+ AdvanceMetatilePosition(&subTileX, &subTileY, &metatileX, &metatileY, metatilesWide, metatileWidth, metatileHeight);
+ }
+}
+
+static void ConvertToTiles1Bpp(unsigned char *src, unsigned char *dest, int numTiles, int metatilesWide, int metatileWidth, int metatileHeight, bool invertColors)
+{
+ int subTileX = 0;
+ int subTileY = 0;
+ int metatileX = 0;
+ int metatileY = 0;
+ int pitch = metatilesWide * metatileWidth;
+
+ for (int i = 0; i < numTiles; i++) {
+ for (int j = 0; j < 8; j++) {
+ int srcY = (metatileY * metatileHeight + subTileY) * 8 + j;
+ int srcX = metatileX * metatileWidth + subTileX;
+ unsigned char srcPixelOctet = src[srcY * pitch + srcX];
+ unsigned char *destPixelOctet = dest++;
+
+ for (int k = 0; k < 8; k++) {
+ *destPixelOctet <<= 1;
+ *destPixelOctet |= (srcPixelOctet & 1) ^ invertColors;
+ srcPixelOctet >>= 1;
+ }
+ }
+
+ AdvanceMetatilePosition(&subTileX, &subTileY, &metatileX, &metatileY, metatilesWide, metatileWidth, metatileHeight);
+ }
+}
+
+static void ConvertToTiles4Bpp(unsigned char *src, unsigned char *dest, int numTiles, int metatilesWide, int metatileWidth, int metatileHeight, bool invertColors)
+{
+ int subTileX = 0;
+ int subTileY = 0;
+ int metatileX = 0;
+ int metatileY = 0;
+ int pitch = (metatilesWide * metatileWidth) * 4;
+
+ for (int i = 0; i < numTiles; i++) {
+ for (int j = 0; j < 8; j++) {
+ int srcY = (metatileY * metatileHeight + subTileY) * 8 + j;
+
+ for (int k = 0; k < 4; k++) {
+ int srcX = (metatileX * metatileWidth + subTileX) * 4 + k;
+ unsigned char srcPixelPair = src[srcY * pitch + srcX];
+ unsigned char leftPixel = srcPixelPair >> 4;
+ unsigned char rightPixel = srcPixelPair & 0xF;
+
+ if (invertColors) {
+ leftPixel = 15 - leftPixel;
+ rightPixel = 15 - rightPixel;
+ }
+
+ *dest++ = (rightPixel << 4) | leftPixel;
+ }
+ }
+
+ AdvanceMetatilePosition(&subTileX, &subTileY, &metatileX, &metatileY, metatilesWide, metatileWidth, metatileHeight);
+ }
+}
+
+static void ConvertToTiles8Bpp(unsigned char *src, unsigned char *dest, int numTiles, int metatilesWide, int metatileWidth, int metatileHeight, bool invertColors)
+{
+ int subTileX = 0;
+ int subTileY = 0;
+ int metatileX = 0;
+ int metatileY = 0;
+ int pitch = (metatilesWide * metatileWidth) * 8;
+
+ for (int i = 0; i < numTiles; i++) {
+ for (int j = 0; j < 8; j++) {
+ int srcY = (metatileY * metatileHeight + subTileY) * 8 + j;
+
+ for (int k = 0; k < 8; k++) {
+ int srcX = (metatileX * metatileWidth + subTileX) * 8 + k;
+ unsigned char srcPixel = src[srcY * pitch + srcX];
+
+ if (invertColors)
+ srcPixel = 255 - srcPixel;
+
+ *dest++ = srcPixel;
+ }
+ }
+
+ AdvanceMetatilePosition(&subTileX, &subTileY, &metatileX, &metatileY, metatilesWide, metatileWidth, metatileHeight);
+ }
+}
+
+void ReadImage(char *path, int tilesWidth, int bitDepth, int metatileWidth, int metatileHeight, struct Image *image, bool invertColors)
+{
+ int tileSize = bitDepth * 8;
+
+ int fileSize;
+ unsigned char *buffer = ReadWholeFile(path, &fileSize);
+
+ int numTiles = fileSize / tileSize;
+
+ int tilesHeight = (numTiles + tilesWidth - 1) / tilesWidth;
+
+ if (tilesWidth % metatileWidth != 0)
+ FATAL_ERROR("The width in tiles (%d) isn't a multiple of the specified metatile width (%d)", tilesWidth, metatileWidth);
+
+ if (tilesHeight % metatileHeight != 0)
+ FATAL_ERROR("The height in tiles (%d) isn't a multiple of the specified metatile height (%d)", tilesHeight, metatileHeight);
+
+ image->width = tilesWidth * 8;
+ image->height = tilesHeight * 8;
+ image->bitDepth = bitDepth;
+ image->pixels = calloc(tilesWidth * tilesHeight, tileSize);
+
+ if (image->pixels == NULL)
+ FATAL_ERROR("Failed to allocate memory for pixels.\n");
+
+ int metatilesWide = tilesWidth / metatileWidth;
+
+ switch (bitDepth) {
+ case 1:
+ ConvertFromTiles1Bpp(buffer, image->pixels, numTiles, metatilesWide, metatileWidth, metatileHeight, invertColors);
+ break;
+ case 4:
+ ConvertFromTiles4Bpp(buffer, image->pixels, numTiles, metatilesWide, metatileWidth, metatileHeight, invertColors);
+ break;
+ case 8:
+ ConvertFromTiles8Bpp(buffer, image->pixels, numTiles, metatilesWide, metatileWidth, metatileHeight, invertColors);
+ break;
+ }
+
+ free(buffer);
+}
+
+void WriteImage(char *path, int numTiles, int bitDepth, int metatileWidth, int metatileHeight, struct Image *image, bool invertColors)
+{
+ int tileSize = bitDepth * 8;
+
+ if (image->width % 8 != 0)
+ FATAL_ERROR("The width in pixels (%d) isn't a multiple of 8.\n", image->width);
+
+ if (image->height % 8 != 0)
+ FATAL_ERROR("The height in pixels (%d) isn't a multiple of 8.\n", image->height);
+
+ int tilesWidth = image->width / 8;
+ int tilesHeight = image->height / 8;
+
+ if (tilesWidth % metatileWidth != 0)
+ FATAL_ERROR("The width in tiles (%d) isn't a multiple of the specified metatile width (%d)", tilesWidth, metatileWidth);
+
+ if (tilesHeight % metatileHeight != 0)
+ FATAL_ERROR("The height in tiles (%d) isn't a multiple of the specified metatile height (%d)", tilesHeight, metatileHeight);
+
+ int maxNumTiles = tilesWidth * tilesHeight;
+
+ if (numTiles == 0)
+ numTiles = maxNumTiles;
+ else if (numTiles > maxNumTiles)
+ FATAL_ERROR("The specified number of tiles (%d) is greater than the maximum possible value (%d).\n", numTiles, maxNumTiles);
+
+ int bufferSize = numTiles * tileSize;
+ unsigned char *buffer = malloc(bufferSize);
+
+ if (buffer == NULL)
+ FATAL_ERROR("Failed to allocate memory for pixels.\n");
+
+ int metatilesWide = tilesWidth / metatileWidth;
+
+ switch (bitDepth) {
+ case 1:
+ ConvertToTiles1Bpp(image->pixels, buffer, numTiles, metatilesWide, metatileWidth, metatileHeight, invertColors);
+ break;
+ case 4:
+ ConvertToTiles4Bpp(image->pixels, buffer, numTiles, metatilesWide, metatileWidth, metatileHeight, invertColors);
+ break;
+ case 8:
+ ConvertToTiles8Bpp(image->pixels, buffer, numTiles, metatilesWide, metatileWidth, metatileHeight, invertColors);
+ break;
+ }
+
+ WriteWholeFile(path, buffer, bufferSize);
+
+ free(buffer);
+}
+
+void FreeImage(struct Image *image)
+{
+ free(image->pixels);
+ image->pixels = NULL;
+}
+
+void ReadGbaPalette(char *path, struct Palette *palette)
+{
+ int fileSize;
+ unsigned char *data = ReadWholeFile(path, &fileSize);
+
+ if (fileSize % 2 != 0)
+ FATAL_ERROR("The file size (%d) is not a multiple of 2.\n", fileSize);
+
+ palette->numColors = fileSize / 2;
+
+ for (int i = 0; i < palette->numColors; i++) {
+ uint16_t paletteEntry = (data[i * 2 + 1] << 8) | data[i * 2];
+ palette->colors[i].red = UPCONVERT_BIT_DEPTH(GET_GBA_PAL_RED(paletteEntry));
+ palette->colors[i].green = UPCONVERT_BIT_DEPTH(GET_GBA_PAL_GREEN(paletteEntry));
+ palette->colors[i].blue = UPCONVERT_BIT_DEPTH(GET_GBA_PAL_BLUE(paletteEntry));
+ }
+
+ free(data);
+}
+
+void WriteGbaPalette(char *path, struct Palette *palette)
+{
+ FILE *fp = fopen(path, "wb");
+
+ if (fp == NULL)
+ FATAL_ERROR("Failed to open \"%s\" for writing.\n", path);
+
+ for (int i = 0; i < palette->numColors; i++) {
+ unsigned char red = DOWNCONVERT_BIT_DEPTH(palette->colors[i].red);
+ unsigned char green = DOWNCONVERT_BIT_DEPTH(palette->colors[i].green);
+ unsigned char blue = DOWNCONVERT_BIT_DEPTH(palette->colors[i].blue);
+
+ uint16_t paletteEntry = SET_GBA_PAL(red, green, blue);
+
+ fputc(paletteEntry & 0xFF, fp);
+ fputc(paletteEntry >> 8, fp);
+ }
+
+ fclose(fp);
+}
diff --git a/tools/nitrogfx/gfx.h b/tools/nitrogfx/gfx.h
new file mode 100644
index 00000000..5355ced8
--- /dev/null
+++ b/tools/nitrogfx/gfx.h
@@ -0,0 +1,36 @@
+// Copyright (c) 2015 YamaArashi
+
+#ifndef GFX_H
+#define GFX_H
+
+#include <stdint.h>
+#include <stdbool.h>
+
+struct Color {
+ unsigned char red;
+ unsigned char green;
+ unsigned char blue;
+};
+
+struct Palette {
+ struct Color colors[256];
+ int numColors;
+};
+
+struct Image {
+ int width;
+ int height;
+ int bitDepth;
+ unsigned char *pixels;
+ bool hasPalette;
+ struct Palette palette;
+ bool hasTransparency;
+};
+
+void ReadImage(char *path, int tilesWidth, int bitDepth, int metatileWidth, int metatileHeight, struct Image *image, bool invertColors);
+void WriteImage(char *path, int numTiles, int bitDepth, int metatileWidth, int metatileHeight, struct Image *image, bool invertColors);
+void FreeImage(struct Image *image);
+void ReadGbaPalette(char *path, struct Palette *palette);
+void WriteGbaPalette(char *path, struct Palette *palette);
+
+#endif // GFX_H
diff --git a/tools/nitrogfx/global.h b/tools/nitrogfx/global.h
new file mode 100644
index 00000000..65dd351d
--- /dev/null
+++ b/tools/nitrogfx/global.h
@@ -0,0 +1,31 @@
+// Copyright (c) 2015 YamaArashi
+
+#ifndef GLOBAL_H
+#define GLOBAL_H
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#ifdef _MSC_VER
+
+#define FATAL_ERROR(format, ...) \
+do { \
+ fprintf(stderr, format, __VA_ARGS__); \
+ exit(1); \
+} while (0)
+
+#define UNUSED
+
+#else
+
+#define FATAL_ERROR(format, ...) \
+do { \
+ fprintf(stderr, format, ##__VA_ARGS__); \
+ exit(1); \
+} while (0)
+
+#define UNUSED __attribute__((__unused__))
+
+#endif // _MSC_VER
+
+#endif // GLOBAL_H
diff --git a/tools/nitrogfx/huff.c b/tools/nitrogfx/huff.c
new file mode 100644
index 00000000..143ed79b
--- /dev/null
+++ b/tools/nitrogfx/huff.c
@@ -0,0 +1,398 @@
+#include <stdbool.h>
+#include <string.h>
+#include <assert.h>
+#include <stdio.h>
+#include <stdint.h>
+#include "global.h"
+#include "huff.h"
+
+static int cmp_tree(const void * a0, const void * b0) {
+ return ((struct HuffData *)a0)->value - ((struct HuffData *)b0)->value;
+}
+
+typedef int (*cmpfun)(const void *, const void *);
+
+int msort_r(void * data, size_t count, size_t size, cmpfun cmp, void * buffer) {
+ /*
+ * Out-of-place mergesort (stable sort)
+ * Returns 1 on success, 0 on failure
+ */
+ void * leftPtr;
+ void * rightPtr;
+ void * leftEnd;
+ void * rightEnd;
+ int i;
+
+ switch (count) {
+ case 0:
+ // Should never be here
+ return 0;
+
+ case 1:
+ // Nothing to do here
+ break;
+
+ case 2:
+ // Swap the two entries if the right one compares higher.
+ if (cmp(data, data + size) > 0) {
+ memcpy(buffer, data, size);
+ memcpy(data, data + size, size);
+ memcpy(data + size, buffer, size);
+ }
+ break;
+ default:
+ // Merge sort out-of-place.
+ leftPtr = data;
+ leftEnd = rightPtr = data + count / 2 * size;
+ rightEnd = data + count * size;
+
+ // Sort the left half
+ if (!msort_r(leftPtr, count / 2, size, cmp, buffer))
+ return 0;
+
+ // Sort the right half
+ if (!msort_r(rightPtr, count / 2 + (count & 1), size, cmp, buffer))
+ return 0;
+
+ // Merge the sorted halves out of place
+ i = 0;
+ do {
+ if (cmp(leftPtr, rightPtr) <= 0) {
+ memcpy(buffer + i * size, leftPtr, size);
+ leftPtr += size;
+ } else {
+ memcpy(buffer + i * size, rightPtr, size);
+ rightPtr += size;
+ }
+
+ } while (++i < count && leftPtr < leftEnd && rightPtr < rightEnd);
+
+ // Copy the remainder
+ if (i < count) {
+ if (leftPtr < leftEnd) {
+ memcpy(buffer + i * size, leftPtr, leftEnd - leftPtr);
+ }
+ else {
+ memcpy(buffer + i * size, rightPtr, rightEnd - rightPtr);
+ }
+ }
+
+ // Copy the merged data back
+ memcpy(data, buffer, count * size);
+ break;
+ }
+
+ return 1;
+}
+
+int msort(void * data, size_t count, size_t size, cmpfun cmp) {
+ void * buffer = malloc(count * size);
+ if (buffer == NULL) return 0;
+ int result = msort_r(data, count, size, cmp, buffer);
+ free(buffer);
+ return result;
+}
+
+static void write_tree(unsigned char * dest, HuffNode_t * tree, int nitems, struct BitEncoding * encoding) {
+ /*
+ * The example used to guide this function encodes the tree in a
+ * breadth-first manner. We attempt to emulate that here.
+ */
+
+ int i, j, k;
+
+ // There are (2 * nitems - 1) nodes in the binary tree. Allocate that.
+ HuffNode_t * traversal = calloc(2 * nitems - 1, sizeof(HuffNode_t));
+ if (traversal == NULL)
+ FATAL_ERROR("Fatal error while compressing Huff file.\n");
+
+ // The first node is the root of the tree.
+ traversal[0] = *tree;
+ i = 1;
+
+ // Copy the tree into a breadth-first ordering using brute force.
+ for (int depth = 1; i < 2 * nitems - 1; depth++) {
+ // Consider every possible path up to the current depth.
+ for (j = 0; i < 2 * nitems - 1 && j < 1 << depth; j++) {
+ // The index of the path is used to encode the path itself.
+ // Start from the most significant relevant bit and work our way down.
+ // Keep track of the current and previous nodes.
+ HuffNode_t * currNode = traversal;
+ HuffNode_t * parent = NULL;
+ for (k = 0; k < depth; k++) {
+ if (currNode->header.isLeaf)
+ break;
+ parent = currNode;
+ if ((j >> (depth - k - 1)) & 1)
+ currNode = currNode->branch.right;
+ else
+ currNode = currNode->branch.left;
+ }
+ // Check that the length of the current path equals the current depth.
+ if (k == depth) {
+ // Make sure we can encode the current branch.
+ // Bail here if we cannot.
+ // This is only applicable for 8-bit encodings.
+ if (traversal + i - parent > 128)
+ FATAL_ERROR("Fatal error while compressing Huff file: unable to encode binary tree.\n");
+ // Copy the current node, and update its parent.
+ traversal[i] = *currNode;
+ if (parent != NULL) {
+ if ((j & 1) == 1)
+ parent->branch.right = traversal + i;
+ else
+ parent->branch.left = traversal + i;
+ }
+ // Encode the path through the tree in the lookup table
+ if (traversal[i].header.isLeaf) {
+ encoding[traversal[i].leaf.key].nbits = depth;
+ encoding[traversal[i].leaf.key].bitstring = j;
+ }
+ i++;
+ }
+ }
+ }
+
+ // Encode the size of the tree.
+ // This is used by the decompressor to skip the tree.
+ dest[4] = nitems - 1;
+
+ // Encode each node in the tree.
+ for (i = 0; i < 2 * nitems - 1; i++) {
+ HuffNode_t * currNode = traversal + i;
+ if (currNode->header.isLeaf) {
+ dest[5 + i] = traversal[i].leaf.key;
+ } else {
+ dest[5 + i] = (((currNode->branch.right - traversal - i) / 2) - 1);
+ if (currNode->branch.left->header.isLeaf)
+ dest[5 + i] |= 0x80;
+ if (currNode->branch.right->header.isLeaf)
+ dest[5 + i] |= 0x40;
+ }
+ }
+
+ free(traversal);
+}
+
+static inline void write_32_le(unsigned char * dest, int * destPos, uint32_t * buff, int * buffPos) {
+ dest[*destPos] = *buff;
+ dest[*destPos + 1] = *buff >> 8;
+ dest[*destPos + 2] = *buff >> 16;
+ dest[*destPos + 3] = *buff >> 24;
+ *destPos += 4;
+ *buff = 0;
+ *buffPos = 0;
+}
+
+static inline void read_32_le(unsigned char * src, int * srcPos, uint32_t * buff) {
+ uint32_t tmp = src[*srcPos];
+ tmp |= src[*srcPos + 1] << 8;
+ tmp |= src[*srcPos + 2] << 16;
+ tmp |= src[*srcPos + 3] << 24;
+ *srcPos += 4;
+ *buff = tmp;
+}
+
+static void write_bits(unsigned char * dest, int * destPos, struct BitEncoding * encoding, int value, uint32_t * buff, int * buffBits) {
+ int nbits = encoding[value].nbits;
+ uint32_t bitstring = encoding[value].bitstring;
+
+ if (*buffBits + nbits >= 32) {
+ int diff = *buffBits + nbits - 32;
+ *buff <<= nbits - diff;
+ *buff |= bitstring >> diff;
+ bitstring &= ~(1 << diff);
+ nbits = diff;
+ write_32_le(dest, destPos, buff, buffBits);
+ }
+ if (nbits != 0) {
+ *buff <<= nbits;
+ *buff |= bitstring;
+ *buffBits += nbits;
+ }
+}
+
+/*
+=======================================
+MAIN COMPRESSION/DECOMPRESSION ROUTINES
+=======================================
+ */
+
+unsigned char * HuffCompress(unsigned char * src, int srcSize, int * compressedSize_p, int bitDepth) {
+ if (srcSize <= 0)
+ goto fail;
+
+ int worstCaseDestSize = 4 + (2 << bitDepth) + srcSize * 3;
+
+ unsigned char *dest = malloc(worstCaseDestSize);
+ if (dest == NULL)
+ goto fail;
+
+ int nitems = 1 << bitDepth;
+
+ HuffNode_t * freqs = calloc(nitems, sizeof(HuffNode_t));
+ if (freqs == NULL)
+ goto fail;
+
+ struct BitEncoding * encoding = calloc(nitems, sizeof(struct BitEncoding));
+ if (encoding == NULL)
+ goto fail;
+
+ // Set up the frequencies table. This will inform the tree.
+ for (int i = 0; i < nitems; i++) {
+ freqs[i].header.isLeaf = 1;
+ freqs[i].header.value = 0;
+ freqs[i].leaf.key = i;
+ }
+
+ // Count each nybble or byte.
+ for (int i = 0; i < srcSize; i++) {
+ if (bitDepth == 8) {
+ freqs[src[i]].header.value++;
+ } else {
+ freqs[src[i] >> 4].header.value++;
+ freqs[src[i] & 0xF].header.value++;
+ }
+ }
+
+#ifdef DEBUG
+ for (int i = 0; i < nitems; i++) {
+ fprintf(stderr, "%d: %d\n", i, freqs[i].header.value);
+ }
+#endif // DEBUG
+
+ // Sort the frequency table.
+ if (!msort(freqs, nitems, sizeof(HuffNode_t), cmp_tree))
+ goto fail;
+
+ // Prune zero-frequency values.
+ for (int i = 0; i < nitems; i++) {
+ if (freqs[i].header.value != 0) {
+ if (i > 0) {
+ for (int j = i; j < nitems; j++) {
+ freqs[j - i] = freqs[j];
+ }
+ nitems -= i;
+ }
+ break;
+ }
+ // This should never happen:
+ if (i == nitems - 1)
+ goto fail;
+ }
+
+ HuffNode_t * tree = calloc(nitems * 2 - 1, sizeof(HuffNode_t));
+ if (tree == NULL)
+ goto fail;
+
+ // Iteratively collapse the two least frequent nodes.
+ HuffNode_t * endptr = freqs + nitems - 2;
+
+ for (int i = 0; i < nitems - 1; i++) {
+ HuffNode_t * left = freqs;
+ HuffNode_t * right = freqs + 1;
+ tree[i * 2] = *right;
+ tree[i * 2 + 1] = *left;
+ for (int j = 0; j < nitems - i - 2; j++)
+ freqs[j] = freqs[j + 2];
+ endptr->header.isLeaf = 0;
+ endptr->header.value = tree[i * 2].header.value + tree[i * 2 + 1].header.value;
+ endptr->branch.left = tree + i * 2;
+ endptr->branch.right = tree + i * 2 + 1;
+ endptr--;
+ if (i < nitems - 2 && !msort(freqs, nitems - i - 1, sizeof(HuffNode_t), cmp_tree))
+ goto fail;
+ }
+
+ // Write the tree breadth-first, and create the path lookup table.
+ write_tree(dest, freqs, nitems, encoding);
+
+ free(tree);
+ free(freqs);
+
+ // Encode the data itself.
+ int destPos = 4 + nitems * 2;
+ uint32_t destBuf = 0;
+ uint32_t srcBuf = 0;
+ int destBitPos = 0;
+
+ for (int srcPos = 0; srcPos < srcSize;) {
+ read_32_le(src, &srcPos, &srcBuf);
+ for (int i = 0; i < 32 / bitDepth; i++) {
+ write_bits(dest, &destPos, encoding, srcBuf & (0xFF >> (8 - bitDepth)), &destBuf, &destBitPos);
+ srcBuf >>= bitDepth;
+ }
+ }
+
+ if (destBitPos != 0) {
+ write_32_le(dest, &destPos, &destBuf, &destBitPos);
+ }
+
+ free(encoding);
+
+ // Write the header.
+ dest[0] = bitDepth | 0x20;
+ dest[1] = srcSize;
+ dest[2] = srcSize >> 8;
+ dest[3] = srcSize >> 16;
+ *compressedSize_p = (destPos + 3) & ~3;
+ return dest;
+
+fail:
+ FATAL_ERROR("Fatal error while compressing Huff file.\n");
+}
+
+unsigned char * HuffDecompress(unsigned char * src, int srcSize, int * uncompressedSize_p) {
+ if (srcSize < 4)
+ goto fail;
+
+ int bitDepth = *src & 15;
+ if (bitDepth != 4 && bitDepth != 8)
+ goto fail;
+
+ int destSize = (src[3] << 16) | (src[2] << 8) | src[1];
+
+ unsigned char *dest = malloc(destSize);
+
+ if (dest == NULL)
+ goto fail;
+
+ int treePos = 5;
+ int treeSize = (src[4] + 1) * 2;
+ int srcPos = 4 + treeSize;
+ int destPos = 0;
+ int curValPos = 0;
+ uint32_t destTmp = 0;
+ uint32_t window;
+
+ for (;;)
+ {
+ if (srcPos >= srcSize)
+ goto fail;
+ read_32_le(src, &srcPos, &window);
+ for (int i = 0; i < 32; i++) {
+ int curBit = (window >> 31) & 1;
+ unsigned char treeView = src[treePos];
+ bool isLeaf = ((treeView << curBit) & 0x80) != 0;
+ treePos &= ~1; // align
+ treePos += ((treeView & 0x3F) + 1) * 2 + curBit;
+ if (isLeaf) {
+ destTmp >>= bitDepth;
+ destTmp |= (src[treePos] << (32 - bitDepth));
+ curValPos++;
+ if (curValPos == 32 / bitDepth) {
+ write_32_le(dest, &destPos, &destTmp, &curValPos);
+ if (destPos == destSize) {
+ *uncompressedSize_p = destSize;
+ return dest;
+ }
+ }
+ treePos = 5;
+ }
+ window <<= 1;
+ }
+ }
+
+fail:
+ FATAL_ERROR("Fatal error while decompressing Huff file.\n");
+}
diff --git a/tools/nitrogfx/huff.h b/tools/nitrogfx/huff.h
new file mode 100644
index 00000000..6002fe95
--- /dev/null
+++ b/tools/nitrogfx/huff.h
@@ -0,0 +1,38 @@
+#ifndef HUFF_H
+#define HUFF_H
+
+union HuffNode;
+
+struct HuffData {
+ unsigned value:31;
+ unsigned isLeaf:1;
+};
+
+struct HuffLeaf {
+ struct HuffData header;
+ unsigned char key;
+};
+
+struct HuffBranch {
+ struct HuffData header;
+ union HuffNode * left;
+ union HuffNode * right;
+};
+
+union HuffNode {
+ struct HuffData header;
+ struct HuffLeaf leaf;
+ struct HuffBranch branch;
+};
+
+typedef union HuffNode HuffNode_t;
+
+struct BitEncoding {
+ unsigned long long nbits:6;
+ unsigned long long bitstring:58;
+};
+
+unsigned char * HuffCompress(unsigned char * buffer, int srcSize, int * compressedSize_p, int bitDepth);
+unsigned char * HuffDecompress(unsigned char * buffer, int srcSize, int * uncompressedSize_p);
+
+#endif //HUFF_H
diff --git a/tools/nitrogfx/jasc_pal.c b/tools/nitrogfx/jasc_pal.c
new file mode 100644
index 00000000..e5ba9c3c
--- /dev/null
+++ b/tools/nitrogfx/jasc_pal.c
@@ -0,0 +1,172 @@
+// Copyright (c) 2015 YamaArashi
+
+#include <stdio.h>
+#include <string.h>
+#include "global.h"
+#include "gfx.h"
+#include "util.h"
+
+// Read/write Paint Shop Pro palette files.
+
+// Format of a Paint Shop Pro palette file, line by line:
+// "JASC-PAL\r\n" (signature)
+// "0100\r\n" (version; seems to always be "0100")
+// "<NUMBER_OF_COLORS>\r\n" (number of colors in decimal)
+//
+// <NUMBER_OF_COLORS> times:
+// "<RED> <GREEN> <BLUE>\r\n" (color entry)
+//
+// Each color component is a decimal number from 0 to 255.
+// Examples:
+// Black - "0 0 0\r\n"
+// Blue - "0 0 255\r\n"
+// Brown - "150 75 0\r\n"
+
+#define MAX_LINE_LENGTH 11
+
+void ReadJascPaletteLine(FILE *fp, char *line)
+{
+ int c;
+ int length = 0;
+
+ for (;;)
+ {
+ c = fgetc(fp);
+
+ if (c == '\r')
+ {
+ c = fgetc(fp);
+
+ if (c != '\n')
+ FATAL_ERROR("CR line endings aren't supported.\n");
+
+ line[length] = 0;
+
+ return;
+ }
+
+ if (c == '\n')
+ FATAL_ERROR("LF line endings aren't supported.\n");
+
+ if (c == EOF)
+ FATAL_ERROR("Unexpected EOF. No CRLF at end of file.\n");
+
+ if (c == 0)
+ FATAL_ERROR("NUL character in file.\n");
+
+ if (length == MAX_LINE_LENGTH)
+ {
+ line[length] = 0;
+ FATAL_ERROR("The line \"%s\" is too long.\n", line);
+ }
+
+ line[length++] = c;
+ }
+}
+
+void ReadJascPalette(char *path, struct Palette *palette)
+{
+ char line[MAX_LINE_LENGTH + 1];
+
+ FILE *fp = fopen(path, "rb");
+
+ if (fp == NULL)
+ FATAL_ERROR("Failed to open JASC-PAL file \"%s\" for reading.\n", path);
+
+ ReadJascPaletteLine(fp, line);
+
+ if (strcmp(line, "JASC-PAL") != 0)
+ FATAL_ERROR("Invalid JASC-PAL signature.\n");
+
+ ReadJascPaletteLine(fp, line);
+
+ if (strcmp(line, "0100") != 0)
+ FATAL_ERROR("Unsuported JASC-PAL version.\n");
+
+ ReadJascPaletteLine(fp, line);
+
+ if (!ParseNumber(line, NULL, 10, &palette->numColors))
+ FATAL_ERROR("Failed to parse number of colors.\n");
+
+ if (palette->numColors < 1 || palette->numColors > 256)
+ FATAL_ERROR("%d is an invalid number of colors. The number of colors must be in the range [1, 256].\n", palette->numColors);
+
+ for (int i = 0; i < palette->numColors; i++)
+ {
+ ReadJascPaletteLine(fp, line);
+
+ char *s = line;
+ char *end;
+
+ int red;
+ int green;
+ int blue;
+
+ if (!ParseNumber(s, &end, 10, &red))
+ FATAL_ERROR("Failed to parse red color component.\n");
+
+ s = end;
+
+ if (*s != ' ')
+ FATAL_ERROR("Expected a space after red color component.\n");
+
+ s++;
+
+ if (*s < '0' || *s > '9')
+ FATAL_ERROR("Expected only a space between red and green color components.\n");
+
+ if (!ParseNumber(s, &end, 10, &green))
+ FATAL_ERROR("Failed to parse green color component.\n");
+
+ s = end;
+
+ if (*s != ' ')
+ FATAL_ERROR("Expected a space after green color component.\n");
+
+ s++;
+
+ if (*s < '0' || *s > '9')
+ FATAL_ERROR("Expected only a space between green and blue color components.\n");
+
+ if (!ParseNumber(s, &end, 10, &blue))
+ FATAL_ERROR("Failed to parse blue color component.\n");
+
+ if (*end != 0)
+ FATAL_ERROR("Garbage after blue color component.\n");
+
+ if (red < 0 || red > 255)
+ FATAL_ERROR("Red color component (%d) is outside the range [0, 255].\n", red);
+
+ if (green < 0 || green > 255)
+ FATAL_ERROR("Green color component (%d) is outside the range [0, 255].\n", green);
+
+ if (blue < 0 || blue > 255)
+ FATAL_ERROR("Blue color component (%d) is outside the range [0, 255].\n", blue);
+
+ palette->colors[i].red = red;
+ palette->colors[i].green = green;
+ palette->colors[i].blue = blue;
+ }
+
+ if (fgetc(fp) != EOF)
+ FATAL_ERROR("Garbage after color data.\n");
+
+ fclose(fp);
+}
+
+void WriteJascPalette(char *path, struct Palette *palette)
+{
+ FILE *fp = fopen(path, "wb");
+
+ fputs("JASC-PAL\r\n", fp);
+ fputs("0100\r\n", fp);
+ fprintf(fp, "%d\r\n", palette->numColors);
+
+ for (int i = 0; i < palette->numColors; i++)
+ {
+ struct Color *color = &palette->colors[i];
+ fprintf(fp, "%d %d %d\r\n", color->red, color->green, color->blue);
+ }
+
+ fclose(fp);
+}
diff --git a/tools/nitrogfx/jasc_pal.h b/tools/nitrogfx/jasc_pal.h
new file mode 100644
index 00000000..b60b31fc
--- /dev/null
+++ b/tools/nitrogfx/jasc_pal.h
@@ -0,0 +1,9 @@
+// Copyright (c) 2015 YamaArashi
+
+#ifndef JASC_PAL_H
+#define JASC_PAL_H
+
+void ReadJascPalette(char *path, struct Palette *palette);
+void WriteJascPalette(char *path, struct Palette *palette);
+
+#endif // JASC_PAL_H
diff --git a/tools/nitrogfx/lz.c b/tools/nitrogfx/lz.c
new file mode 100644
index 00000000..97434ce5
--- /dev/null
+++ b/tools/nitrogfx/lz.c
@@ -0,0 +1,153 @@
+// Copyright (c) 2015 YamaArashi
+
+#include <stdlib.h>
+#include <stdbool.h>
+#include "global.h"
+#include "lz.h"
+
+unsigned char *LZDecompress(unsigned char *src, int srcSize, int *uncompressedSize)
+{
+ if (srcSize < 4)
+ goto fail;
+
+ int destSize = (src[3] << 16) | (src[2] << 8) | src[1];
+
+ unsigned char *dest = malloc(destSize);
+
+ if (dest == NULL)
+ goto fail;
+
+ int srcPos = 4;
+ int destPos = 0;
+
+ for (;;) {
+ if (srcPos >= srcSize)
+ goto fail;
+
+ unsigned char flags = src[srcPos++];
+
+ for (int i = 0; i < 8; i++) {
+ if (flags & 0x80) {
+ if (srcPos + 1 >= srcSize)
+ goto fail;
+
+ int blockSize = (src[srcPos] >> 4) + 3;
+ int blockDistance = (((src[srcPos] & 0xF) << 8) | src[srcPos + 1]) + 1;
+
+ srcPos += 2;
+
+ int blockPos = destPos - blockDistance;
+
+ // Some Ruby/Sapphire tilesets overflow.
+ if (destPos + blockSize > destSize) {
+ blockSize = destSize - destPos;
+ fprintf(stderr, "Destination buffer overflow.\n");
+ }
+
+ if (blockPos < 0)
+ goto fail;
+
+ for (int j = 0; j < blockSize; j++)
+ dest[destPos++] = dest[blockPos + j];
+ } else {
+ if (srcPos >= srcSize || destPos >= destSize)
+ goto fail;
+
+ dest[destPos++] = src[srcPos++];
+ }
+
+ if (destPos == destSize) {
+ *uncompressedSize = destSize;
+ return dest;
+ }
+
+ flags <<= 1;
+ }
+ }
+
+fail:
+ FATAL_ERROR("Fatal error while decompressing LZ file.\n");
+}
+
+unsigned char *LZCompress(unsigned char *src, int srcSize, int *compressedSize, const int minDistance)
+{
+ if (srcSize <= 0)
+ goto fail;
+
+ int worstCaseDestSize = 4 + srcSize + ((srcSize + 7) / 8);
+
+ // Round up to the next multiple of four.
+ worstCaseDestSize = (worstCaseDestSize + 3) & ~3;
+
+ unsigned char *dest = malloc(worstCaseDestSize);
+
+ if (dest == NULL)
+ goto fail;
+
+ // header
+ dest[0] = 0x10; // LZ compression type
+ dest[1] = (unsigned char)srcSize;
+ dest[2] = (unsigned char)(srcSize >> 8);
+ dest[3] = (unsigned char)(srcSize >> 16);
+
+ int srcPos = 0;
+ int destPos = 4;
+
+ for (;;) {
+ unsigned char *flags = &dest[destPos++];
+ *flags = 0;
+
+ for (int i = 0; i < 8; i++) {
+ int bestBlockDistance = 0;
+ int bestBlockSize = 0;
+ int blockDistance = minDistance;
+
+ while (blockDistance <= srcPos && blockDistance <= 0x1000) {
+ int blockStart = srcPos - blockDistance;
+ int blockSize = 0;
+
+ while (blockSize < 18
+ && srcPos + blockSize < srcSize
+ && src[blockStart + blockSize] == src[srcPos + blockSize])
+ blockSize++;
+
+ if (blockSize > bestBlockSize) {
+ bestBlockDistance = blockDistance;
+ bestBlockSize = blockSize;
+
+ if (blockSize == 18)
+ break;
+ }
+
+ blockDistance++;
+ }
+
+ if (bestBlockSize >= 3) {
+ *flags |= (0x80 >> i);
+ srcPos += bestBlockSize;
+ bestBlockSize -= 3;
+ bestBlockDistance--;
+ dest[destPos++] = (bestBlockSize << 4) | ((unsigned int)bestBlockDistance >> 8);
+ dest[destPos++] = (unsigned char)bestBlockDistance;
+ } else {
+ dest[destPos++] = src[srcPos++];
+ }
+
+ if (srcPos == srcSize) {
+ // Pad to multiple of 4 bytes.
+ int remainder = destPos % 4;
+
+ if (remainder != 0) {
+ for (int i = 0; i < 4 - remainder; i++)
+ dest[destPos++] = 0;
+ }
+
+ *compressedSize = destPos;
+ return dest;
+ }
+ }
+ }
+
+fail:
+ FATAL_ERROR("Fatal error while compressing LZ file.\n");
+}
diff --git a/tools/nitrogfx/lz.h b/tools/nitrogfx/lz.h
new file mode 100644
index 00000000..90f56b64
--- /dev/null
+++ b/tools/nitrogfx/lz.h
@@ -0,0 +1,9 @@
+// Copyright (c) 2015 YamaArashi
+
+#ifndef LZ_H
+#define LZ_H
+
+unsigned char *LZDecompress(unsigned char *src, int srcSize, int *uncompressedSize);
+unsigned char *LZCompress(unsigned char *src, int srcSize, int *compressedSize, const int minDistance);
+
+#endif // LZ_H
diff --git a/tools/nitrogfx/main.c b/tools/nitrogfx/main.c
new file mode 100644
index 00000000..b9f4272c
--- /dev/null
+++ b/tools/nitrogfx/main.c
@@ -0,0 +1,537 @@
+// Copyright (c) 2015 YamaArashi
+
+#include <stdio.h>
+#include <string.h>
+#include <stdbool.h>
+#include "global.h"
+#include "util.h"
+#include "options.h"
+#include "gfx.h"
+#include "convert_png.h"
+#include "jasc_pal.h"
+#include "lz.h"
+#include "rl.h"
+#include "font.h"
+#include "huff.h"
+
+struct CommandHandler
+{
+ const char *inputFileExtension;
+ const char *outputFileExtension;
+ void(*function)(char *inputPath, char *outputPath, int argc, char **argv);
+};
+
+void ConvertGbaToPng(char *inputPath, char *outputPath, struct GbaToPngOptions *options)
+{
+ struct Image image;
+
+ if (options->paletteFilePath != NULL)
+ {
+ ReadGbaPalette(options->paletteFilePath, &image.palette);
+ image.hasPalette = true;
+ }
+ else
+ {
+ image.hasPalette = false;
+ }
+
+ ReadImage(inputPath, options->width, options->bitDepth, options->metatileWidth, options->metatileHeight, &image, !image.hasPalette);
+
+ image.hasTransparency = options->hasTransparency;
+
+ WritePng(outputPath, &image);
+
+ FreeImage(&image);
+}
+
+void ConvertPngToGba(char *inputPath, char *outputPath, struct PngToGbaOptions *options)
+{
+ struct Image image;
+
+ image.bitDepth = options->bitDepth;
+
+ ReadPng(inputPath, &image);
+
+ WriteImage(outputPath, options->numTiles, options->bitDepth, options->metatileWidth, options->metatileHeight, &image, !image.hasPalette);
+
+ FreeImage(&image);
+}
+
+void HandleGbaToPngCommand(char *inputPath, char *outputPath, int argc, char **argv)
+{
+ char *inputFileExtension = GetFileExtension(inputPath);
+ struct GbaToPngOptions options;
+ options.paletteFilePath = NULL;
+ options.bitDepth = inputFileExtension[0] - '0';
+ options.hasTransparency = false;
+ options.width = 1;
+ options.metatileWidth = 1;
+ options.metatileHeight = 1;
+
+ for (int i = 3; i < argc; i++)
+ {
+ char *option = argv[i];
+
+ if (strcmp(option, "-palette") == 0)
+ {
+ if (i + 1 >= argc)
+ FATAL_ERROR("No palette file path following \"-palette\".\n");
+
+ i++;
+
+ options.paletteFilePath = argv[i];
+ }
+ else if (strcmp(option, "-object") == 0)
+ {
+ options.hasTransparency = true;
+ }
+ else if (strcmp(option, "-width") == 0)
+ {
+ if (i + 1 >= argc)
+ FATAL_ERROR("No width following \"-width\".\n");
+
+ i++;
+
+ if (!ParseNumber(argv[i], NULL, 10, &options.width))
+ FATAL_ERROR("Failed to parse width.\n");
+
+ if (options.width < 1)
+ FATAL_ERROR("Width must be positive.\n");
+ }
+ else if (strcmp(option, "-mwidth") == 0)
+ {
+ if (i + 1 >= argc)
+ FATAL_ERROR("No metatile width value following \"-mwidth\".\n");
+
+ i++;
+
+ if (!ParseNumber(argv[i], NULL, 10, &options.metatileWidth))
+ FATAL_ERROR("Failed to parse metatile width.\n");
+
+ if (options.metatileWidth < 1)
+ FATAL_ERROR("metatile width must be positive.\n");
+ }
+ else if (strcmp(option, "-mheight") == 0)
+ {
+ if (i + 1 >= argc)
+ FATAL_ERROR("No metatile height value following \"-mheight\".\n");
+
+ i++;
+
+ if (!ParseNumber(argv[i], NULL, 10, &options.metatileHeight))
+ FATAL_ERROR("Failed to parse metatile height.\n");
+
+ if (options.metatileHeight < 1)
+ FATAL_ERROR("metatile height must be positive.\n");
+ }
+ else
+ {
+ FATAL_ERROR("Unrecognized option \"%s\".\n", option);
+ }
+ }
+
+ if (options.metatileWidth > options.width)
+ options.width = options.metatileWidth;
+
+ ConvertGbaToPng(inputPath, outputPath, &options);
+}
+
+void HandlePngToGbaCommand(char *inputPath, char *outputPath, int argc, char **argv)
+{
+ char *outputFileExtension = GetFileExtension(outputPath);
+ int bitDepth = outputFileExtension[0] - '0';
+ struct PngToGbaOptions options;
+ options.numTiles = 0;
+ options.bitDepth = bitDepth;
+ options.metatileWidth = 1;
+ options.metatileHeight = 1;
+
+ for (int i = 3; i < argc; i++)
+ {
+ char *option = argv[i];
+
+ if (strcmp(option, "-num_tiles") == 0)
+ {
+ if (i + 1 >= argc)
+ FATAL_ERROR("No number of tiles following \"-num_tiles\".\n");
+
+ i++;
+
+ if (!ParseNumber(argv[i], NULL, 10, &options.numTiles))
+ FATAL_ERROR("Failed to parse number of tiles.\n");
+
+ if (options.numTiles < 1)
+ FATAL_ERROR("Number of tiles must be positive.\n");
+ }
+ else if (strcmp(option, "-mwidth") == 0)
+ {
+ if (i + 1 >= argc)
+ FATAL_ERROR("No metatile width value following \"-mwidth\".\n");
+
+ i++;
+
+ if (!ParseNumber(argv[i], NULL, 10, &options.metatileWidth))
+ FATAL_ERROR("Failed to parse metatile width.\n");
+
+ if (options.metatileWidth < 1)
+ FATAL_ERROR("metatile width must be positive.\n");
+ }
+ else if (strcmp(option, "-mheight") == 0)
+ {
+ if (i + 1 >= argc)
+ FATAL_ERROR("No metatile height value following \"-mheight\".\n");
+
+ i++;
+
+ if (!ParseNumber(argv[i], NULL, 10, &options.metatileHeight))
+ FATAL_ERROR("Failed to parse metatile height.\n");
+
+ if (options.metatileHeight < 1)
+ FATAL_ERROR("metatile height must be positive.\n");
+ }
+ else
+ {
+ FATAL_ERROR("Unrecognized option \"%s\".\n", option);
+ }
+ }
+
+ ConvertPngToGba(inputPath, outputPath, &options);
+}
+
+void HandlePngToGbaPaletteCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED)
+{
+ struct Palette palette;
+
+ ReadPngPalette(inputPath, &palette);
+ WriteGbaPalette(outputPath, &palette);
+}
+
+void HandleGbaToJascPaletteCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED)
+{
+ struct Palette palette;
+
+ ReadGbaPalette(inputPath, &palette);
+ WriteJascPalette(outputPath, &palette);
+}
+
+void HandleJascToGbaPaletteCommand(char *inputPath, char *outputPath, int argc, char **argv)
+{
+ int numColors = 0;
+
+ for (int i = 3; i < argc; i++)
+ {
+ char *option = argv[i];
+
+ if (strcmp(option, "-num_colors") == 0)
+ {
+ if (i + 1 >= argc)
+ FATAL_ERROR("No number of colors following \"-num_colors\".\n");
+
+ i++;
+
+ if (!ParseNumber(argv[i], NULL, 10, &numColors))
+ FATAL_ERROR("Failed to parse number of colors.\n");
+
+ if (numColors < 1)
+ FATAL_ERROR("Number of colors must be positive.\n");
+ }
+ else
+ {
+ FATAL_ERROR("Unrecognized option \"%s\".\n", option);
+ }
+ }
+
+ struct Palette palette;
+
+ ReadJascPalette(inputPath, &palette);
+
+ if (numColors != 0)
+ palette.numColors = numColors;
+
+ WriteGbaPalette(outputPath, &palette);
+}
+
+void HandleLatinFontToPngCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED)
+{
+ struct Image image;
+
+ ReadLatinFont(inputPath, &image);
+ WritePng(outputPath, &image);
+
+ FreeImage(&image);
+}
+
+void HandlePngToLatinFontCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED)
+{
+ struct Image image;
+
+ image.bitDepth = 2;
+
+ ReadPng(inputPath, &image);
+ WriteLatinFont(outputPath, &image);
+
+ FreeImage(&image);
+}
+
+void HandleHalfwidthJapaneseFontToPngCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED)
+{
+ struct Image image;
+
+ ReadHalfwidthJapaneseFont(inputPath, &image);
+ WritePng(outputPath, &image);
+
+ FreeImage(&image);
+}
+
+void HandlePngToHalfwidthJapaneseFontCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED)
+{
+ struct Image image;
+
+ image.bitDepth = 2;
+
+ ReadPng(inputPath, &image);
+ WriteHalfwidthJapaneseFont(outputPath, &image);
+
+ FreeImage(&image);
+}
+
+void HandleFullwidthJapaneseFontToPngCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED)
+{
+ struct Image image;
+
+ ReadFullwidthJapaneseFont(inputPath, &image);
+ WritePng(outputPath, &image);
+
+ FreeImage(&image);
+}
+
+void HandlePngToFullwidthJapaneseFontCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED)
+{
+ struct Image image;
+
+ image.bitDepth = 2;
+
+ ReadPng(inputPath, &image);
+ WriteFullwidthJapaneseFont(outputPath, &image);
+
+ FreeImage(&image);
+}
+
+void HandleLZCompressCommand(char *inputPath, char *outputPath, int argc, char **argv)
+{
+ int overflowSize = 0;
+ int minDistance = 2; // default, for compatibility with LZ77UnCompVram()
+
+ for (int i = 3; i < argc; i++)
+ {
+ char *option = argv[i];
+
+ if (strcmp(option, "-overflow") == 0)
+ {
+ if (i + 1 >= argc)
+ FATAL_ERROR("No size following \"-overflow\".\n");
+
+ i++;
+
+ if (!ParseNumber(argv[i], NULL, 10, &overflowSize))
+ FATAL_ERROR("Failed to parse overflow size.\n");
+
+ if (overflowSize < 1)
+ FATAL_ERROR("Overflow size must be positive.\n");
+ }
+ else if (strcmp(option, "-search") == 0)
+ {
+ if (i + 1 >= argc)
+ FATAL_ERROR("No size following \"-overflow\".\n");
+
+ i++;
+
+ if (!ParseNumber(argv[i], NULL, 10, &minDistance))
+ FATAL_ERROR("Failed to parse LZ min search distance.\n");
+
+ if (minDistance < 1)
+ FATAL_ERROR("LZ min search distance must be positive.\n");
+ }
+ else
+ {
+ FATAL_ERROR("Unrecognized option \"%s\".\n", option);
+ }
+ }
+
+ // The overflow option allows a quirk in some of Ruby/Sapphire's tilesets
+ // to be reproduced. It works by appending a number of zeros to the data
+ // before compressing it and then amending the LZ header's size field to
+ // reflect the expected size. This will cause an overflow when decompressing
+ // the data.
+
+ int fileSize;
+ unsigned char *buffer = ReadWholeFileZeroPadded(inputPath, &fileSize, overflowSize);
+
+ int compressedSize;
+ unsigned char *compressedData = LZCompress(buffer, fileSize + overflowSize, &compressedSize, minDistance);
+
+ compressedData[1] = (unsigned char)fileSize;
+ compressedData[2] = (unsigned char)(fileSize >> 8);
+ compressedData[3] = (unsigned char)(fileSize >> 16);
+
+ free(buffer);
+
+ WriteWholeFile(outputPath, compressedData, compressedSize);
+
+ free(compressedData);
+}
+
+void HandleLZDecompressCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED)
+{
+ int fileSize;
+ unsigned char *buffer = ReadWholeFile(inputPath, &fileSize);
+
+ int uncompressedSize;
+ unsigned char *uncompressedData = LZDecompress(buffer, fileSize, &uncompressedSize);
+
+ free(buffer);
+
+ WriteWholeFile(outputPath, uncompressedData, uncompressedSize);
+
+ free(uncompressedData);
+}
+
+void HandleRLCompressCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED)
+{
+ int fileSize;
+ unsigned char *buffer = ReadWholeFile(inputPath, &fileSize);
+
+ int compressedSize;
+ unsigned char *compressedData = RLCompress(buffer, fileSize, &compressedSize);
+
+ free(buffer);
+
+ WriteWholeFile(outputPath, compressedData, compressedSize);
+
+ free(compressedData);
+}
+
+void HandleRLDecompressCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED)
+{
+ int fileSize;
+ unsigned char *buffer = ReadWholeFile(inputPath, &fileSize);
+
+ int uncompressedSize;
+ unsigned char *uncompressedData = RLDecompress(buffer, fileSize, &uncompressedSize);
+
+ free(buffer);
+
+ WriteWholeFile(outputPath, uncompressedData, uncompressedSize);
+
+ free(uncompressedData);
+}
+
+void HandleHuffCompressCommand(char *inputPath, char *outputPath, int argc, char **argv)
+{
+ int fileSize;
+ int bitDepth = 4;
+
+ for (int i = 3; i < argc; i++)
+ {
+ char *option = argv[i];
+
+ if (strcmp(option, "-depth") == 0)
+ {
+ if (i + 1 >= argc)
+ FATAL_ERROR("No size following \"-depth\".\n");
+
+ i++;
+
+ if (!ParseNumber(argv[i], NULL, 10, &bitDepth))
+ FATAL_ERROR("Failed to parse bit depth.\n");
+
+ if (bitDepth != 4 && bitDepth != 8)
+ FATAL_ERROR("GBA only supports bit depth of 4 or 8.\n");
+ }
+ else
+ {
+ FATAL_ERROR("Unrecognized option \"%s\".\n", option);
+ }
+ }
+
+ unsigned char *buffer = ReadWholeFile(inputPath, &fileSize);
+
+ int compressedSize;
+ unsigned char *compressedData = HuffCompress(buffer, fileSize, &compressedSize, bitDepth);
+
+ free(buffer);
+
+ WriteWholeFile(outputPath, compressedData, compressedSize);
+
+ free(compressedData);
+}
+
+void HandleHuffDecompressCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED)
+{
+ int fileSize;
+ unsigned char *buffer = ReadWholeFile(inputPath, &fileSize);
+
+ int uncompressedSize;
+ unsigned char *uncompressedData = HuffDecompress(buffer, fileSize, &uncompressedSize);
+
+ free(buffer);
+
+ WriteWholeFile(outputPath, uncompressedData, uncompressedSize);
+
+ free(uncompressedData);
+}
+
+int main(int argc, char **argv)
+{
+ if (argc < 3)
+ FATAL_ERROR("Usage: nitrogfx INPUT_PATH OUTPUT_PATH [options...]\n");
+
+ struct CommandHandler handlers[] =
+ {
+ { "1bpp", "png", HandleGbaToPngCommand },
+ { "4bpp", "png", HandleGbaToPngCommand },
+ { "8bpp", "png", HandleGbaToPngCommand },
+ { "png", "1bpp", HandlePngToGbaCommand },
+ { "png", "4bpp", HandlePngToGbaCommand },
+ { "png", "8bpp", HandlePngToGbaCommand },
+ { "png", "gbapal", HandlePngToGbaPaletteCommand },
+ { "gbapal", "pal", HandleGbaToJascPaletteCommand },
+ { "pal", "gbapal", HandleJascToGbaPaletteCommand },
+ { "latfont", "png", HandleLatinFontToPngCommand },
+ { "png", "latfont", HandlePngToLatinFontCommand },
+ { "hwjpnfont", "png", HandleHalfwidthJapaneseFontToPngCommand },
+ { "png", "hwjpnfont", HandlePngToHalfwidthJapaneseFontCommand },
+ { "fwjpnfont", "png", HandleFullwidthJapaneseFontToPngCommand },
+ { "png", "fwjpnfont", HandlePngToFullwidthJapaneseFontCommand },
+ { NULL, "huff", HandleHuffCompressCommand },
+ { NULL, "lz", HandleLZCompressCommand },
+ { "huff", NULL, HandleHuffDecompressCommand },
+ { "lz", NULL, HandleLZDecompressCommand },
+ { NULL, "rl", HandleRLCompressCommand },
+ { "rl", NULL, HandleRLDecompressCommand },
+ { NULL, NULL, NULL }
+ };
+
+ char *inputPath = argv[1];
+ char *outputPath = argv[2];
+ char *inputFileExtension = GetFileExtension(inputPath);
+ char *outputFileExtension = GetFileExtension(outputPath);
+
+ if (inputFileExtension == NULL)
+ FATAL_ERROR("Input file \"%s\" has no extension.\n", inputPath);
+
+ if (outputFileExtension == NULL)
+ FATAL_ERROR("Output file \"%s\" has no extension.\n", outputPath);
+
+ for (int i = 0; handlers[i].function != NULL; i++)
+ {
+ if ((handlers[i].inputFileExtension == NULL || strcmp(handlers[i].inputFileExtension, inputFileExtension) == 0)
+ && (handlers[i].outputFileExtension == NULL || strcmp(handlers[i].outputFileExtension, outputFileExtension) == 0))
+ {
+ handlers[i].function(inputPath, outputPath, argc, argv);
+ return 0;
+ }
+ }
+
+ FATAL_ERROR("Don't know how to convert \"%s\" to \"%s\".\n", inputPath, outputPath);
+}
diff --git a/tools/nitrogfx/options.h b/tools/nitrogfx/options.h
new file mode 100644
index 00000000..2ff3967a
--- /dev/null
+++ b/tools/nitrogfx/options.h
@@ -0,0 +1,24 @@
+// Copyright (c) 2018 huderlem
+
+#ifndef OPTIONS_H
+#define OPTIONS_H
+
+#include <stdbool.h>
+
+struct GbaToPngOptions {
+ char *paletteFilePath;
+ int bitDepth;
+ bool hasTransparency;
+ int width;
+ int metatileWidth;
+ int metatileHeight;
+};
+
+struct PngToGbaOptions {
+ int numTiles;
+ int bitDepth;
+ int metatileWidth;
+ int metatileHeight;
+};
+
+#endif // OPTIONS_H
diff --git a/tools/nitrogfx/rl.c b/tools/nitrogfx/rl.c
new file mode 100644
index 00000000..968c9347
--- /dev/null
+++ b/tools/nitrogfx/rl.c
@@ -0,0 +1,149 @@
+// Copyright (c) 2016 YamaArashi
+
+#include <stdlib.h>
+#include <stdbool.h>
+#include "global.h"
+#include "rl.h"
+
+unsigned char *RLDecompress(unsigned char *src, int srcSize, int *uncompressedSize)
+{
+ if (srcSize < 4)
+ goto fail;
+
+ int destSize = (src[3] << 16) | (src[2] << 8) | src[1];
+
+ unsigned char *dest = malloc(destSize);
+
+ if (dest == NULL)
+ goto fail;
+
+ int srcPos = 4;
+ int destPos = 0;
+
+ for (;;)
+ {
+ if (srcPos >= srcSize)
+ goto fail;
+
+ unsigned char flags = src[srcPos++];
+ bool compressed = ((flags & 0x80) != 0);
+
+ if (compressed)
+ {
+ int length = (flags & 0x7F) + 3;
+ unsigned char data = src[srcPos++];
+
+ if (destPos + length > destSize)
+ goto fail;
+
+ for (int i = 0; i < length; i++)
+ dest[destPos++] = data;
+ }
+ else
+ {
+ int length = (flags & 0x7F) + 1;
+
+ if (destPos + length > destSize)
+ goto fail;
+
+ for (int i = 0; i < length; i++)
+ dest[destPos++] = src[srcPos++];
+ }
+
+ if (destPos == destSize)
+ {
+ *uncompressedSize = destSize;
+ return dest;
+ }
+ }
+
+fail:
+ FATAL_ERROR("Fatal error while decompressing RL file.\n");
+}
+
+unsigned char *RLCompress(unsigned char *src, int srcSize, int *compressedSize)
+{
+ if (srcSize <= 0)
+ goto fail;
+
+ int worstCaseDestSize = 4 + srcSize * 2;
+
+ // Round up to the next multiple of four.
+ worstCaseDestSize = (worstCaseDestSize + 3) & ~3;
+
+ unsigned char *dest = malloc(worstCaseDestSize);
+
+ if (dest == NULL)
+ goto fail;
+
+ // header
+ dest[0] = 0x30; // RL compression type
+ dest[1] = (unsigned char)srcSize;
+ dest[2] = (unsigned char)(srcSize >> 8);
+ dest[3] = (unsigned char)(srcSize >> 16);
+
+ int srcPos = 0;
+ int destPos = 4;
+
+ for (;;)
+ {
+ bool compress = false;
+ int uncompressedStart = srcPos;
+ int uncompressedLength = 0;
+
+ while (srcPos < srcSize && uncompressedLength < (0x7F + 1))
+ {
+ compress = (srcPos + 2 < srcSize && src[srcPos] == src[srcPos + 1] && src[srcPos] == src[srcPos + 2]);
+
+ if (compress)
+ break;
+
+ srcPos++;
+ uncompressedLength++;
+ }
+
+ if (uncompressedLength > 0)
+ {
+ dest[destPos++] = uncompressedLength - 1;
+
+ for (int i = 0; i < uncompressedLength; i++)
+ dest[destPos++] = src[uncompressedStart + i];
+ }
+
+ if (compress)
+ {
+ unsigned char data = src[srcPos];
+ int compressedLength = 0;
+
+ while (compressedLength < (0x7F + 3)
+ && srcPos + compressedLength < srcSize
+ && src[srcPos + compressedLength] == data)
+ {
+ compressedLength++;
+ }
+
+ dest[destPos++] = 0x80 | (compressedLength - 3);
+ dest[destPos++] = data;
+
+ srcPos += compressedLength;
+ }
+
+ if (srcPos == srcSize)
+ {
+ // Pad to multiple of 4 bytes.
+ int remainder = destPos % 4;
+
+ if (remainder != 0)
+ {
+ for (int i = 0; i < 4 - remainder; i++)
+ dest[destPos++] = 0;
+ }
+
+ *compressedSize = destPos;
+ return dest;
+ }
+ }
+
+fail:
+ FATAL_ERROR("Fatal error while compressing RL file.\n");
+}
diff --git a/tools/nitrogfx/rl.h b/tools/nitrogfx/rl.h
new file mode 100644
index 00000000..02ad8d6d
--- /dev/null
+++ b/tools/nitrogfx/rl.h
@@ -0,0 +1,9 @@
+// Copyright (c) 2016 YamaArashi
+
+#ifndef RL_H
+#define RL_H
+
+unsigned char *RLDecompress(unsigned char *src, int srcSize, int *uncompressedSize);
+unsigned char *RLCompress(unsigned char *src, int srcSize, int *compressedSize);
+
+#endif // RL_H
diff --git a/tools/nitrogfx/util.c b/tools/nitrogfx/util.c
new file mode 100644
index 00000000..87abeb31
--- /dev/null
+++ b/tools/nitrogfx/util.c
@@ -0,0 +1,124 @@
+// Copyright (c) 2015 YamaArashi
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdbool.h>
+#include <errno.h>
+#include <limits.h>
+#include "global.h"
+#include "util.h"
+
+bool ParseNumber(char *s, char **end, int radix, int *intValue)
+{
+ char *localEnd;
+
+ if (end == NULL)
+ end = &localEnd;
+
+ errno = 0;
+
+ const long longValue = strtol(s, end, radix);
+
+ if (*end == s)
+ return false; // not a number
+
+ if ((longValue == LONG_MIN || longValue == LONG_MAX) && errno == ERANGE)
+ return false;
+
+ if (longValue > INT_MAX)
+ return false;
+
+ if (longValue < INT_MIN)
+ return false;
+
+ *intValue = (int)longValue;
+
+ return true;
+}
+
+char *GetFileExtension(char *path)
+{
+ char *extension = path;
+
+ while (*extension != 0)
+ extension++;
+
+ while (extension > path && *extension != '.')
+ extension--;
+
+ if (extension == path)
+ return NULL;
+
+ extension++;
+
+ if (*extension == 0)
+ return NULL;
+
+ return extension;
+}
+
+unsigned char *ReadWholeFile(char *path, int *size)
+{
+ FILE *fp = fopen(path, "rb");
+
+ if (fp == NULL)
+ FATAL_ERROR("Failed to open \"%s\" for reading.\n", path);
+
+ fseek(fp, 0, SEEK_END);
+
+ *size = ftell(fp);
+
+ unsigned char *buffer = malloc(*size);
+
+ if (buffer == NULL)
+ FATAL_ERROR("Failed to allocate memory for reading \"%s\".\n", path);
+
+ rewind(fp);
+
+ if (fread(buffer, *size, 1, fp) != 1)
+ FATAL_ERROR("Failed to read \"%s\".\n", path);
+
+ fclose(fp);
+
+ return buffer;
+}
+
+unsigned char *ReadWholeFileZeroPadded(char *path, int *size, int padAmount)
+{
+ FILE *fp = fopen(path, "rb");
+
+ if (fp == NULL)
+ FATAL_ERROR("Failed to open \"%s\" for reading.\n", path);
+
+ fseek(fp, 0, SEEK_END);
+
+ *size = ftell(fp);
+
+ unsigned char *buffer = calloc(*size + padAmount, 1);
+
+ if (buffer == NULL)
+ FATAL_ERROR("Failed to allocate memory for reading \"%s\".\n", path);
+
+ rewind(fp);
+
+ if (fread(buffer, *size, 1, fp) != 1)
+ FATAL_ERROR("Failed to read \"%s\".\n", path);
+
+ fclose(fp);
+
+ return buffer;
+}
+
+void WriteWholeFile(char *path, void *buffer, int bufferSize)
+{
+ FILE *fp = fopen(path, "wb");
+
+ if (fp == NULL)
+ FATAL_ERROR("Failed to open \"%s\" for writing.\n", path);
+
+ if (fwrite(buffer, bufferSize, 1, fp) != 1)
+ FATAL_ERROR("Failed to write to \"%s\".\n", path);
+
+ fclose(fp);
+}
diff --git a/tools/nitrogfx/util.h b/tools/nitrogfx/util.h
new file mode 100644
index 00000000..6d7a9c21
--- /dev/null
+++ b/tools/nitrogfx/util.h
@@ -0,0 +1,14 @@
+// Copyright (c) 2015 YamaArashi
+
+#ifndef UTIL_H
+#define UTIL_H
+
+#include <stdbool.h>
+
+bool ParseNumber(char *s, char **end, int radix, int *intValue);
+char *GetFileExtension(char *path);
+unsigned char *ReadWholeFile(char *path, int *size);
+unsigned char *ReadWholeFileZeroPadded(char *path, int *size, int padAmount);
+void WriteWholeFile(char *path, void *buffer, int bufferSize);
+
+#endif // UTIL_H
diff --git a/undefined_syms.txt b/undefined_syms.txt
index 3fff5366..09a3ce29 100644
--- a/undefined_syms.txt
+++ b/undefined_syms.txt
@@ -1 +1,818 @@
-gUnknown2106FA0 = 0x2106FA0;
+CONST_34 = 0x00000034;
+CONST_3F = 0x0000003F;
+OS_IrqHandler = 0x01FF8000;
+FUN_01FF84A4 = 0x01FF84A4;
+FUN_01FF84E4 = 0x01FF84E4;
+FUN_01FF8544 = 0x01FF8544;
+FUN_01FF857C = 0x01FF857C;
+FUN_01FF85F0 = 0x01FF85F0;
+FUN_0208ACEC = 0x0208ACEC;
+FUN_0208AD80 = 0x0208AD80;
+FUN_0208AF80 = 0x0208AF80;
+FUN_0208AF94 = 0x0208AF94;
+FUN_0208AFA8 = 0x0208AFA8;
+FUN_0208B05C = 0x0208B05C;
+FUN_0208B128 = 0x0208B128;
+FUN_0208B4A0 = 0x0208B4A0;
+FUN_02090CC8 = 0x02090CC8;
+FUN_02090DB8 = 0x02090DB8;
+FUN_02096B14 = 0x02096B14;
+FUN_02096B78 = 0x02096B78;
+FUN_02096CCC = 0x02096CCC;
+FUN_02096D2C = 0x02096D2C;
+FUN_02096DA0 = 0x02096DA0;
+FUN_02096E90 = 0x02096E90;
+FUN_02096F18 = 0x02096F18;
+FUN_02096F80 = 0x02096F80;
+FUN_02096FB0 = 0x02096FB0;
+FUN_02096FF4 = 0x02096FF4;
+FUN_0209700C = 0x0209700C;
+FUN_020973B4 = 0x020973B4;
+FUN_020ADDC0 = 0x020ADDC0;
+FUN_020ADDC8 = 0x020ADDC8;
+FUN_020ADDF0 = 0x020ADDF0;
+FUN_020ADE2C = 0x020ADE2C;
+FUN_020ADFA0 = 0x020ADFA0;
+FUN_020ADFDC = 0x020ADFDC;
+FUN_020ADFE8 = 0x020ADFE8;
+FUN_020AE82C = 0x020AE82C;
+FUN_020AE8CC = 0x020AE8CC;
+FUN_020AE918 = 0x020AE918;
+FUN_020AEB70 = 0x020AEB70;
+FUN_020AEC7C = 0x020AEC7C;
+FUN_020AEC98 = 0x020AEC98;
+FUN_020AEE40 = 0x020AEE40;
+FUN_020AEEB8 = 0x020AEEB8;
+FUN_020AEF1C = 0x020AEF1C;
+FUN_020AF894 = 0x020AF894;
+FUN_020AF9C4 = 0x020AF9C4;
+FUN_020AFA28 = 0x020AFA28;
+FUN_020AFA80 = 0x020AFA80;
+FUN_020AFBA8 = 0x020AFBA8;
+FUN_020AFBFC = 0x020AFBFC;
+FUN_020AFC04 = 0x020AFC04;
+FUN_020AFD88 = 0x020AFD88;
+FUN_020AFD94 = 0x020AFD94;
+FUN_020AFEB8 = 0x020AFEB8;
+FUN_020AFFD8 = 0x020AFFD8;
+FUN_020B0030 = 0x020B0030;
+FUN_020B0088 = 0x020B0088;
+FUN_020B00F0 = 0x020B00F0;
+FUN_020B0138 = 0x020B0138;
+FUN_020B0180 = 0x020B0180;
+FUN_020B0250 = 0x020B0250;
+FUN_020B02C8 = 0x020B02C8;
+FUN_020B0448 = 0x020B0448;
+FUN_020B0870 = 0x020B0870;
+FUN_020B0BB0 = 0x020B0BB0;
+FUN_020B0C7C = 0x020B0C7C;
+FUN_020B0E34 = 0x020B0E34;
+FUN_020B0FC0 = 0x020B0FC0;
+FUN_020B10E8 = 0x020B10E8;
+FUN_020B1240 = 0x020B1240;
+FUN_020B1340 = 0x020B1340;
+FUN_020B1528 = 0x020B1528;
+FUN_020B1768 = 0x020B1768;
+FUN_020B19C4 = 0x020B19C4;
+FUN_020B19DC = 0x020B19DC;
+FUN_020B1A14 = 0x020B1A14;
+FUN_020B1A24 = 0x020B1A24;
+FUN_020B1EA4 = 0x020B1EA4;
+FUN_020B1EC4 = 0x020B1EC4;
+FUN_020B1EE4 = 0x020B1EE4;
+FUN_020B1EFC = 0x020B1EFC;
+FUN_020B1F80 = 0x020B1F80;
+FUN_020B20C8 = 0x020B20C8;
+FUN_020B2194 = 0x020B2194;
+FUN_020B224C = 0x020B224C;
+FUN_020B23D8 = 0x020B23D8;
+FUN_020B242C = 0x020B242C;
+FUN_020B2780 = 0x020B2780;
+FUN_020B2794 = 0x020B2794;
+FUN_020B28B4 = 0x020B28B4;
+FUN_020B2A08 = 0x020B2A08;
+FUN_020B2B08 = 0x020B2B08;
+FUN_020B2B58 = 0x020B2B58;
+FUN_020B2D9C = 0x020B2D9C;
+FUN_020B317C = 0x020B317C;
+FUN_020B31F0 = 0x020B31F0;
+FUN_020B326C = 0x020B326C;
+FUN_020B3334 = 0x020B3334;
+FUN_020B3390 = 0x020B3390;
+FUN_020B33A0 = 0x020B33A0;
+FUN_020B4358 = 0x020B4358;
+FUN_020B43A4 = 0x020B43A4;
+FUN_020B442C = 0x020B442C;
+FUN_020B4568 = 0x020B4568;
+FUN_020B4F38 = 0x020B4F38;
+FUN_020B502C = 0x020B502C;
+FUN_020B772C = 0x020B772C;
+FUN_020B7790 = 0x020B7790;
+FUN_020B7C58 = 0x020B7C58;
+FUN_020B7C78 = 0x020B7C78;
+FUN_020B7CDC = 0x020B7CDC;
+FUN_020B7CE4 = 0x020B7CE4;
+FUN_020B7CF0 = 0x020B7CF0;
+FUN_020B7D28 = 0x020B7D28;
+FUN_020B7DFC = 0x020B7DFC;
+FUN_020B7E10 = 0x020B7E10;
+FUN_020B7E1C = 0x020B7E1C;
+FUN_020B80B4 = 0x020B80B4;
+FUN_020B844C = 0x020B844C;
+FUN_020B8474 = 0x020B8474;
+FUN_020B849C = 0x020B849C;
+FUN_020BAC98 = 0x020BAC98;
+FUN_020BAFB8 = 0x020BAFB8;
+FUN_020BB1C0 = 0x020BB1C0;
+FUN_020BB394 = 0x020BB394;
+FUN_020BB59C = 0x020BB59C;
+FUN_020BB7F4 = 0x020BB7F4;
+FUN_020BC0FC = 0x020BC0FC;
+FUN_020BC13C = 0x020BC13C;
+FUN_020BC2A0 = 0x020BC2A0;
+FUN_020C0174 = 0x020C0174;
+FUN_020C01A0 = 0x020C01A0;
+FUN_020C01D0 = 0x020C01D0;
+FUN_020C03B8 = 0x020C03B8;
+FUN_020C041C = 0x020C041C;
+FUN_020C044C = 0x020C044C;
+FUN_020C04DC = 0x020C04DC;
+FUN_020C0510 = 0x020C0510;
+FUN_020C054C = 0x020C054C;
+FUN_020C0670 = 0x020C0670;
+FUN_020C0688 = 0x020C0688;
+FUN_020C0DD4 = 0x020C0DD4;
+FUN_020C0E14 = 0x020C0E14;
+FUN_020C0E7C = 0x020C0E7C;
+FUN_020C0EA4 = 0x020C0EA4;
+FUN_020C0EF4 = 0x020C0EF4;
+FUN_020C0F30 = 0x020C0F30;
+FUN_020C0F50 = 0x020C0F50;
+FUN_020C0F68 = 0x020C0F68;
+FUN_020C0F80 = 0x020C0F80;
+FUN_020C0F8C = 0x020C0F8C;
+FUN_020C0F9C = 0x020C0F9C;
+FUN_020C0FDC = 0x020C0FDC;
+FUN_020C1040 = 0x020C1040;
+FUN_020C10A4 = 0x020C10A4;
+FUN_020C1148 = 0x020C1148;
+FUN_020C1180 = 0x020C1180;
+FUN_020C1E58 = 0x020C1E58;
+FUN_020C1E68 = 0x020C1E68;
+FUN_020C1EA4 = 0x020C1EA4;
+FUN_020C1F54 = 0x020C1F54;
+FUN_020C1FA4 = 0x020C1FA4;
+FUN_020C1FF0 = 0x020C1FF0;
+FUN_020C20DC = 0x020C20DC;
+FUN_020C2104 = 0x020C2104;
+FUN_020C217C = 0x020C217C;
+FUN_020C226C = 0x020C226C;
+FUN_020C22D0 = 0x020C22D0;
+FUN_020C23FC = 0x020C23FC;
+FUN_020C26F8 = 0x020C26F8;
+FUN_020C2828 = 0x020C2828;
+FUN_020C290C = 0x020C290C;
+FUN_020C2A94 = 0x020C2A94;
+FUN_020C35E0 = 0x020C35E0;
+FUN_020C360C = 0x020C360C;
+FUN_020C3640 = 0x020C3640;
+FUN_020C3674 = 0x020C3674;
+FUN_020C36A8 = 0x020C36A8;
+FUN_020C3910 = 0x020C3910;
+FUN_020C3980 = 0x020C3980;
+FUN_020C39CC = 0x020C39CC;
+FUN_020C3EA4 = 0x020C3EA4;
+FUN_020C3EB0 = 0x020C3EB0;
+FUN_020C3F14 = 0x020C3F14;
+FUN_020C3F38 = 0x020C3F38;
+FUN_020C3F54 = 0x020C3F54;
+FUN_020C3F70 = 0x020C3F70;
+FUN_020C400C = 0x020C400C;
+FUN_020C504C = 0x020C504C;
+FUN_020C50B8 = 0x020C50B8;
+FUN_020C5288 = 0x020C5288;
+FUN_020C53C8 = 0x020C53C8;
+FUN_020C5588 = 0x020C5588;
+FUN_020C5600 = 0x020C5600;
+FUN_020C5634 = 0x020C5634;
+FUN_020C5668 = 0x020C5668;
+FUN_020C5974 = 0x020C5974;
+FUN_020C5978 = 0x020C5978;
+FUN_020C59A4 = 0x020C59A4;
+FUN_020C59C0 = 0x020C59C0;
+FUN_020C5A34 = 0x020C5A34;
+FUN_020C5A80 = 0x020C5A80;
+FUN_020C5AC8 = 0x020C5AC8;
+FUN_020C5AF8 = 0x020C5AF8;
+FUN_020C5B28 = 0x020C5B28;
+FUN_020C5D2C = 0x020C5D2C;
+FUN_020C5D4C = 0x020C5D4C;
+FUN_020C5D9C = 0x020C5D9C;
+FUN_020C5DBC = 0x020C5DBC;
+FUN_020C5E54 = 0x020C5E54;
+FUN_020C600C = 0x020C600C;
+FUN_020C6034 = 0x020C6034;
+FUN_020C605C = 0x020C605C;
+FUN_020C6070 = 0x020C6070;
+FUN_020C6098 = 0x020C6098;
+FUN_020C60AC = 0x020C60AC;
+FUN_020C60C0 = 0x020C60C0;
+FUN_020C60E4 = 0x020C60E4;
+FUN_020C6108 = 0x020C6108;
+FUN_020C611C = 0x020C611C;
+FUN_020C6168 = 0x020C6168;
+FUN_020C61F4 = 0x020C61F4;
+FUN_020C6280 = 0x020C6280;
+FUN_020C62FC = 0x020C62FC;
+FUN_020C63A8 = 0x020C63A8;
+FUN_020C65C0 = 0x020C65C0;
+FUN_020C66B4 = 0x020C66B4;
+FUN_020C68B8 = 0x020C68B8;
+FUN_020C6970 = 0x020C6970;
+FUN_020C6A84 = 0x020C6A84;
+FUN_020C6BF0 = 0x020C6BF0;
+FUN_020C6F60 = 0x020C6F60;
+FUN_020C6FB0 = 0x020C6FB0;
+FUN_020C7010 = 0x020C7010;
+FUN_020C7058 = 0x020C7058;
+FUN_020C70B0 = 0x020C70B0;
+FUN_020C70D0 = 0x020C70D0;
+FUN_020C7104 = 0x020C7104;
+FUN_020C7124 = 0x020C7124;
+FUN_020C74B8 = 0x020C74B8;
+FUN_020C74DC = 0x020C74DC;
+FUN_020C74F8 = 0x020C74F8;
+FUN_020C7A14 = 0x020C7A14;
+FUN_020C7B3C = 0x020C7B3C;
+FUN_020C7C28 = 0x020C7C28;
+FUN_020C7D28 = 0x020C7D28;
+FUN_020C7E0C = 0x020C7E0C;
+FUN_020C7E94 = 0x020C7E94;
+FUN_020C7FF0 = 0x020C7FF0;
+FUN_020C802C = 0x020C802C;
+FUN_020C8068 = 0x020C8068;
+FUN_020C80A4 = 0x020C80A4;
+FUN_020C823C = 0x020C823C;
+FUN_020C8538 = 0x020C8538;
+FUN_020C8728 = 0x020C8728;
+FUN_020C8774 = 0x020C8774;
+FUN_020C87E8 = 0x020C87E8;
+FUN_020C880C = 0x020C880C;
+FUN_020C8858 = 0x020C8858;
+FUN_020C88CC = 0x020C88CC;
+FUN_020C88F0 = 0x020C88F0;
+FUN_020C8948 = 0x020C8948;
+FUN_020C89BC = 0x020C89BC;
+FUN_020C8A2C = 0x020C8A2C;
+FUN_020C8A90 = 0x020C8A90;
+FUN_020C8B10 = 0x020C8B10;
+FUN_020C8C14 = 0x020C8C14;
+FUN_020C8C7C = 0x020C8C7C;
+FUN_020C8CE4 = 0x020C8CE4;
+FUN_020C8D4C = 0x020C8D4C;
+FUN_020C8DB4 = 0x020C8DB4;
+FUN_020C8E1C = 0x020C8E1C;
+FUN_020C8E84 = 0x020C8E84;
+FUN_020C8EEC = 0x020C8EEC;
+FUN_020C8F54 = 0x020C8F54;
+FUN_020C8FBC = 0x020C8FBC;
+FUN_020C9024 = 0x020C9024;
+FUN_020C908C = 0x020C908C;
+FUN_020C90F4 = 0x020C90F4;
+FUN_020C915C = 0x020C915C;
+FUN_020C91C4 = 0x020C91C4;
+FUN_020C922C = 0x020C922C;
+FUN_020C9294 = 0x020C9294;
+FUN_020C92F4 = 0x020C92F4;
+FUN_020C9354 = 0x020C9354;
+FUN_020C93BC = 0x020C93BC;
+FUN_020C9418 = 0x020C9418;
+FUN_020C9480 = 0x020C9480;
+FUN_020C94E8 = 0x020C94E8;
+FUN_020C9550 = 0x020C9550;
+OS_SpinWait = 0x020CD380;
+FUN_020D5150 = 0x020D5150;
+FUN_020D5168 = 0x020D5168;
+FUN_020D5180 = 0x020D5180;
+FUN_020D526C = 0x020D526C;
+PMi_SetLED = 0x020D5338;
+PMi_SetLEDAsync = 0x020D5374;
+PMi_ReadRegister = 0x020D5498;
+PMi_SendSleepStart = 0x020D55C0;
+PM_Init = 0x020D5764;
+PMi_WaitBusy = 0x020D5884;
+PMi_Lock = 0x020D58C4;
+FUN_020D5F40 = 0x020D5F40;
+FUN_020D614C = 0x020D614C;
+FUN_020D6320 = 0x020D6320;
+FUN_020D6578 = 0x020D6578;
+FUN_020D660C = 0x020D660C;
+FUN_020D66A0 = 0x020D66A0;
+FUN_020D66B0 = 0x020D66B0;
+CARD_UnlockRom = 0x020D66C0;
+CARD_LockRom = 0x020D66E0;
+FUN_020D6700 = 0x020D6700;
+FUN_020D6D7C = 0x020D6D7C;
+FUN_020D6DAC = 0x020D6DAC;
+FUN_020D6DB8 = 0x020D6DB8;
+FUN_020D6DC4 = 0x020D6DC4;
+FUN_020D6F20 = 0x020D6F20;
+CARD_Init = 0x020D7228;
+CARDi_ReadRom = 0x020D72AC;
+CARD_IsPulledOut = 0x020D7D18;
+FUN_020D7E9C = 0x020D7E9C;
+FUN_020D8A4C = 0x020D8A4C;
+FUN_020D8AF0 = 0x020D8AF0;
+FUN_020D8B94 = 0x020D8B94;
+FUN_020D8C3C = 0x020D8C3C;
+FUN_020D8F34 = 0x020D8F34;
+FUN_020D9014 = 0x020D9014;
+FUN_020D9060 = 0x020D9060;
+FUN_020D9168 = 0x020D9168;
+FUN_020D9244 = 0x020D9244;
+FUN_020D940C = 0x020D940C;
+FUN_020D950C = 0x020D950C;
+FUN_020D9554 = 0x020D9554;
+FUN_020D9624 = 0x020D9624;
+FUN_020D972C = 0x020D972C;
+FUN_020D9774 = 0x020D9774;
+FUN_020D97B4 = 0x020D97B4;
+FUN_020D9960 = 0x020D9960;
+FUN_020D99EC = 0x020D99EC;
+FUN_020D9B48 = 0x020D9B48;
+FUN_020DAD74 = 0x020DAD74;
+FUN_020DADD4 = 0x020DADD4;
+FUN_020DAF30 = 0x020DAF30;
+CTRDG_IsExisting = 0x020DB68C;
+FUN_020DB7A8 = 0x020DB7A8;
+CTRDG_Init = 0x020DBC80;
+FUN_020DDC5C = 0x020DDC5C;
+FUN_020DDCE4 = 0x020DDCE4;
+FUN_020DDD28 = 0x020DDD28;
+FUN_020DDD60 = 0x020DDD60;
+FUN_020DDE44 = 0x020DDE44;
+FUN_020DDF60 = 0x020DDF60;
+FUN_020DE3F0 = 0x020DE3F0;
+FUN_020DF438 = 0x020DF438;
+FUN_020DF4A4 = 0x020DF4A4;
+FUN_020DF510 = 0x020DF510;
+FUN_020E2EAC = 0x020E2EAC;
+FUN_020E2EC8 = 0x020E2EC8;
+FUN_020EA980 = 0x020EA980;
+FUN_020EAEF0 = 0x020EAEF0;
+FUN_020EB010 = 0x020EB010;
+FUN_020EB084 = 0x020EB084;
+FUN_020EB4C0 = 0x020EB4C0;
+FUN_020EB4F4 = 0x020EB4F4;
+FUN_020EB534 = 0x020EB534;
+FUN_020EB57C = 0x020EB57C;
+FUN_020EB5C4 = 0x020EB5C4;
+FUN_020EB7B0 = 0x020EB7B0;
+FUN_020EBA38 = 0x020EBA38;
+_ll_udiv = 0x020EBBE8;
+gBacklightTop = 0x02106FA0;
+gBacklightTop_2 = 0x02106FA0;
+gUnknown2106FB8 = 0x02106FB8;
+gUnknown21C48B8 = 0x021C48B8;
+gUnk021C4918 = 0x021C4918;
+FUN_021D74E0 = 0x021D74E0;
+FUN_021D76AC = 0x021D76AC;
+gUnk021D76C8 = 0x021D76C8;
+FUN_021D77C4 = 0x021D77C4;
+FUN_021D7800 = 0x021D7800;
+FUN_021D78FC = 0x021D78FC;
+FUN_021D79B4 = 0x021D79B4;
+FUN_021D7CA4 = 0x021D7CA4;
+FUN_021D7F8C = 0x021D7F8C;
+FUN_021D8018 = 0x021D8018;
+FUN_021D8164 = 0x021D8164;
+FUN_021D82BC = 0x021D82BC;
+FUN_021D8320 = 0x021D8320;
+FUN_021D836C = 0x021D836C;
+FUN_021D83A8 = 0x021D83A8;
+FUN_021D83C0 = 0x021D83C0;
+FUN_021D844C = 0x021D844C;
+FUN_021D8494 = 0x021D8494;
+FUN_021D85FC = 0x021D85FC;
+FUN_021D8624 = 0x021D8624;
+FUN_021D865C = 0x021D865C;
+FUN_021D8758 = 0x021D8758;
+FUN_021D8820 = 0x021D8820;
+FUN_021D88E4 = 0x021D88E4;
+FUN_021D89CC = 0x021D89CC;
+FUN_021D8B64 = 0x021D8B64;
+FUN_021D8C24 = 0x021D8C24;
+FUN_021D917C = 0x021D917C;
+FUN_021D959C = 0x021D959C;
+FUN_021D967C = 0x021D967C;
+FUN_021D96F4 = 0x021D96F4;
+FUN_021D9708 = 0x021D9708;
+FUN_021D971C = 0x021D971C;
+FUN_021D9820 = 0x021D9820;
+FUN_021D99F8 = 0x021D99F8;
+FUN_021DA464 = 0x021DA464;
+FUN_021DA4EC = 0x021DA4EC;
+FUN_021DA54C = 0x021DA54C;
+FUN_021DA58C = 0x021DA58C;
+FUN_021DA5B8 = 0x021DA5B8;
+FUN_021DA5C8 = 0x021DA5C8;
+FUN_021DA5D0 = 0x021DA5D0;
+FUN_021DA5D8 = 0x021DA5D8;
+FUN_021DA7B4 = 0x021DA7B4;
+FUN_021DAAA4 = 0x021DAAA4;
+FUN_021DAC70 = 0x021DAC70;
+FUN_021DAE40 = 0x021DAE40;
+FUN_021DAED4 = 0x021DAED4;
+FUN_021DAF28 = 0x021DAF28;
+FUN_021DAF78 = 0x021DAF78;
+FUN_021DAF98 = 0x021DAF98;
+FUN_021DB030 = 0x021DB030;
+FUN_021DB7E8 = 0x021DB7E8;
+FUN_021DB858 = 0x021DB858;
+gUnk021DBE18 = 0x021DBE18;
+FUN_021DC174 = 0x021DC174;
+FUN_021DD6F0 = 0x021DD6F0;
+FUN_021DD718 = 0x021DD718;
+FUN_021DDB08 = 0x021DDB08;
+FUN_021E1374 = 0x021E1374;
+FUN_021E1858 = 0x021E1858;
+FUN_021E1994 = 0x021E1994;
+FUN_021E1BF8 = 0x021E1BF8;
+FUN_021E1C4C = 0x021E1C4C;
+FUN_021E1C54 = 0x021E1C54;
+FUN_021E1ECC = 0x021E1ECC;
+FUN_021E1F34 = 0x021E1F34;
+FUN_021E1F58 = 0x021E1F58;
+FUN_021E1F60 = 0x021E1F60;
+FUN_021E2464 = 0x021E2464;
+FUN_021E2608 = 0x021E2608;
+FUN_021E26CC = 0x021E26CC;
+FUN_021E27E8 = 0x021E27E8;
+FUN_021E288C = 0x021E288C;
+FUN_021E28A0 = 0x021E28A0;
+FUN_021E2950 = 0x021E2950;
+FUN_021E29B4 = 0x021E29B4;
+FUN_021E29C8 = 0x021E29C8;
+FUN_021E2A70 = 0x021E2A70;
+FUN_021E2AD4 = 0x021E2AD4;
+FUN_021E2B80 = 0x021E2B80;
+FUN_021E2B9C = 0x021E2B9C;
+FUN_021E2BB8 = 0x021E2BB8;
+FUN_021E2BD0 = 0x021E2BD0;
+FUN_021E2C24 = 0x021E2C24;
+FUN_021E2C58 = 0x021E2C58;
+FUN_021E2CBC = 0x021E2CBC;
+FUN_021E32F0 = 0x021E32F0;
+FUN_021E331C = 0x021E331C;
+FUN_021E3424 = 0x021E3424;
+FUN_021E3444 = 0x021E3444;
+FUN_021E495C = 0x021E495C;
+FUN_021E4C54 = 0x021E4C54;
+FUN_021E4C60 = 0x021E4C60;
+FUN_021E4DE4 = 0x021E4DE4;
+FUN_021E5614 = 0x021E5614;
+FUN_021E57D4 = 0x021E57D4;
+FUN_021E5970 = 0x021E5970;
+FUN_021E5B30 = 0x021E5B30;
+FUN_021E5FD8 = 0x021E5FD8;
+FUN_021E5FE0 = 0x021E5FE0;
+FUN_021E6410 = 0x021E6410;
+FUN_021E643C = 0x021E643C;
+FUN_021E6990 = 0x021E6990;
+FUN_021E69BC = 0x021E69BC;
+FUN_021E6BF4 = 0x021E6BF4;
+FUN_021E7030 = 0x021E7030;
+FUN_021E70F0 = 0x021E70F0;
+FUN_021E7138 = 0x021E7138;
+FUN_021E7184 = 0x021E7184;
+FUN_021E71E8 = 0x021E71E8;
+FUN_021E7750 = 0x021E7750;
+FUN_021E799C = 0x021E799C;
+FUN_021E7AC0 = 0x021E7AC0;
+FUN_021E7EA0 = 0x021E7EA0;
+FUN_021E7EB0 = 0x021E7EB0;
+FUN_021E7EC4 = 0x021E7EC4;
+FUN_021E7EC8 = 0x021E7EC8;
+FUN_021E7ED0 = 0x021E7ED0;
+FUN_021E7ED8 = 0x021E7ED8;
+FUN_021E7FBC = 0x021E7FBC;
+FUN_021E8128 = 0x021E8128;
+FUN_021E8130 = 0x021E8130;
+FUN_021E8140 = 0x021E8140;
+FUN_021E8144 = 0x021E8144;
+FUN_021E8148 = 0x021E8148;
+FUN_021E8158 = 0x021E8158;
+FUN_021E81BC = 0x021E81BC;
+FUN_021E84F4 = 0x021E84F4;
+FUN_021E856C = 0x021E856C;
+FUN_021E8588 = 0x021E8588;
+FUN_021E85E4 = 0x021E85E4;
+FUN_021E85FC = 0x021E85FC;
+FUN_021EC57C = 0x021EC57C;
+FUN_021EC71C = 0x021EC71C;
+FUN_021EC854 = 0x021EC854;
+FUN_021EC864 = 0x021EC864;
+FUN_021ECD64 = 0x021ECD64;
+FUN_021ECF14 = 0x021ECF14;
+FUN_021ED0CC = 0x021ED0CC;
+FUN_021ED49C = 0x021ED49C;
+FUN_021ED4E0 = 0x021ED4E0;
+FUN_021ED52C = 0x021ED52C;
+FUN_021ED5C4 = 0x021ED5C4;
+FUN_021ED5EC = 0x021ED5EC;
+FUN_021ED644 = 0x021ED644;
+FUN_021ED940 = 0x021ED940;
+FUN_021EDA48 = 0x021EDA48;
+FUN_021EDBC8 = 0x021EDBC8;
+FUN_021EF5E0 = 0x021EF5E0;
+FUN_021EF604 = 0x021EF604;
+FUN_021EF620 = 0x021EF620;
+FUN_021EF654 = 0x021EF654;
+FUN_021EF824 = 0x021EF824;
+FUN_021EF844 = 0x021EF844;
+FUN_021EF8C8 = 0x021EF8C8;
+FUN_021EF8DC = 0x021EF8DC;
+FUN_021EFA9C = 0x021EFA9C;
+FUN_021F02C4 = 0x021F02C4;
+FUN_021F1D8C = 0x021F1D8C;
+FUN_021F1DC8 = 0x021F1DC8;
+FUN_021F1DFC = 0x021F1DFC;
+FUN_021F1EC0 = 0x021F1EC0;
+FUN_021F1F78 = 0x021F1F78;
+FUN_021F2094 = 0x021F2094;
+FUN_021F20D8 = 0x021F20D8;
+FUN_021F20F8 = 0x021F20F8;
+FUN_021F2AF4 = 0x021F2AF4;
+FUN_021F2E0C = 0x021F2E0C;
+FUN_021F2E28 = 0x021F2E28;
+FUN_021F2F48 = 0x021F2F48;
+FUN_021F2F6C = 0x021F2F6C;
+FUN_021F3A18 = 0x021F3A18;
+FUN_021F3AB4 = 0x021F3AB4;
+FUN_021F3B4C = 0x021F3B4C;
+FUN_021F3B7C = 0x021F3B7C;
+FUN_021F3DA4 = 0x021F3DA4;
+FUN_021F44D8 = 0x021F44D8;
+FUN_021F4520 = 0x021F4520;
+FUN_021F4568 = 0x021F4568;
+FUN_021F4594 = 0x021F4594;
+FUN_021F45E8 = 0x021F45E8;
+FUN_021F4608 = 0x021F4608;
+FUN_021F4BD0 = 0x021F4BD0;
+FUN_021F4C88 = 0x021F4C88;
+FUN_021F4D80 = 0x021F4D80;
+FUN_021F4DC8 = 0x021F4DC8;
+FUN_021F4E7C = 0x021F4E7C;
+FUN_021F57EC = 0x021F57EC;
+FUN_021F5C44 = 0x021F5C44;
+FUN_021F61DC = 0x021F61DC;
+FUN_021F61E8 = 0x021F61E8;
+FUN_02211E60 = 0x02211E60;
+FUN_0222D5C0 = 0x0222D5C0;
+FUN_0222DAEC = 0x0222DAEC;
+FUN_0222DD1C = 0x0222DD1C;
+FUN_0222DD38 = 0x0222DD38;
+FUN_0222E2BC = 0x0222E2BC;
+FUN_0222E360 = 0x0222E360;
+FUN_0222E3A0 = 0x0222E3A0;
+FUN_0222E7E8 = 0x0222E7E8;
+FUN_0222E874 = 0x0222E874;
+FUN_0222ED34 = 0x0222ED34;
+FUN_0222EDBC = 0x0222EDBC;
+FUN_0222F440 = 0x0222F440;
+FUN_0222F480 = 0x0222F480;
+FUN_0222F7E0 = 0x0222F7E0;
+FUN_0222F990 = 0x0222F990;
+FUN_022300D4 = 0x022300D4;
+FUN_022300DC = 0x022300DC;
+FUN_022300E4 = 0x022300E4;
+FUN_022300E8 = 0x022300E8;
+FUN_022300F4 = 0x022300F4;
+FUN_02230100 = 0x02230100;
+FUN_0223010C = 0x0223010C;
+FUN_02230118 = 0x02230118;
+FUN_02230124 = 0x02230124;
+FUN_02230F3C = 0x02230F3C;
+FUN_02230F70 = 0x02230F70;
+FUN_02230F80 = 0x02230F80;
+FUN_02231344 = 0x02231344;
+FUN_02231350 = 0x02231350;
+FUN_0223135C = 0x0223135C;
+FUN_02231368 = 0x02231368;
+FUN_02231374 = 0x02231374;
+FUN_02239944 = 0x02239944;
+FUN_02239AAC = 0x02239AAC;
+FUN_0223CACC = 0x0223CACC;
+FUN_0223CB08 = 0x0223CB08;
+FUN_0223CCDC = 0x0223CCDC;
+FUN_0223CD7C = 0x0223CD7C;
+FUN_0223D3D0 = 0x0223D3D0;
+FUN_0223D638 = 0x0223D638;
+FUN_0223D648 = 0x0223D648;
+FUN_0223DFB4 = 0x0223DFB4;
+FUN_0223E060 = 0x0223E060;
+FUN_0223E118 = 0x0223E118;
+FUN_0223E154 = 0x0223E154;
+FUN_0223E1A4 = 0x0223E1A4;
+FUN_0223E1E0 = 0x0223E1E0;
+FUN_0223E2AC = 0x0223E2AC;
+FUN_0223E4A8 = 0x0223E4A8;
+FUN_0223E4D4 = 0x0223E4D4;
+FUN_0223E554 = 0x0223E554;
+FUN_0223E6B8 = 0x0223E6B8;
+FUN_0223E734 = 0x0223E734;
+FUN_0223E7FC = 0x0223E7FC;
+FUN_0223EB8C = 0x0223EB8C;
+FUN_0223EF7C = 0x0223EF7C;
+FUN_0223F4D8 = 0x0223F4D8;
+FUN_0223F4F4 = 0x0223F4F4;
+FUN_0223F8D8 = 0x0223F8D8;
+FUN_0223FCE8 = 0x0223FCE8;
+FUN_02240790 = 0x02240790;
+FUN_022407CC = 0x022407CC;
+FUN_022407DC = 0x022407DC;
+FUN_022407F8 = 0x022407F8;
+FUN_02240834 = 0x02240834;
+FUN_02240844 = 0x02240844;
+FUN_0224089C = 0x0224089C;
+FUN_022408FC = 0x022408FC;
+FUN_022411F4 = 0x022411F4;
+FUN_02241230 = 0x02241230;
+FUN_02241914 = 0x02241914;
+FUN_02242A38 = 0x02242A38;
+FUN_02242BE0 = 0x02242BE0;
+FUN_0224312C = 0x0224312C;
+FUN_022432E4 = 0x022432E4;
+FUN_0224339C = 0x0224339C;
+FUN_022433A8 = 0x022433A8;
+FUN_022433B0 = 0x022433B0;
+FUN_022433B8 = 0x022433B8;
+FUN_022433F8 = 0x022433F8;
+FUN_02243408 = 0x02243408;
+FUN_02243428 = 0x02243428;
+FUN_02243448 = 0x02243448;
+FUN_0224345C = 0x0224345C;
+FUN_022434AC = 0x022434AC;
+FUN_022434BC = 0x022434BC;
+FUN_022434D0 = 0x022434D0;
+FUN_02243694 = 0x02243694;
+FUN_022436C8 = 0x022436C8;
+FUN_022436E8 = 0x022436E8;
+FUN_02243780 = 0x02243780;
+FUN_02243838 = 0x02243838;
+FUN_022438DC = 0x022438DC;
+FUN_022438E0 = 0x022438E0;
+FUN_022438FC = 0x022438FC;
+FUN_02243920 = 0x02243920;
+FUN_022439F8 = 0x022439F8;
+FUN_02243AD8 = 0x02243AD8;
+FUN_02243BA8 = 0x02243BA8;
+FUN_02243C5C = 0x02243C5C;
+FUN_02243D3C = 0x02243D3C;
+FUN_02243DA0 = 0x02243DA0;
+FUN_02243DB8 = 0x02243DB8;
+FUN_02243DC0 = 0x02243DC0;
+FUN_02243DC4 = 0x02243DC4;
+FUN_02243DD8 = 0x02243DD8;
+FUN_02243DE0 = 0x02243DE0;
+FUN_02243E34 = 0x02243E34;
+FUN_02243E74 = 0x02243E74;
+FUN_02243F18 = 0x02243F18;
+FUN_02243F50 = 0x02243F50;
+FUN_02243F9C = 0x02243F9C;
+FUN_02244210 = 0x02244210;
+FUN_02244558 = 0x02244558;
+FUN_02244660 = 0x02244660;
+FUN_022446BC = 0x022446BC;
+FUN_022446E0 = 0x022446E0;
+FUN_022446FC = 0x022446FC;
+FUN_02244758 = 0x02244758;
+FUN_02244770 = 0x02244770;
+FUN_02244824 = 0x02244824;
+FUN_0224484C = 0x0224484C;
+FUN_02244D1C = 0x02244D1C;
+FUN_02244D20 = 0x02244D20;
+FUN_02244D3C = 0x02244D3C;
+FUN_02244D40 = 0x02244D40;
+FUN_02244D58 = 0x02244D58;
+FUN_02244D98 = 0x02244D98;
+FUN_02244DA0 = 0x02244DA0;
+FUN_02244DB0 = 0x02244DB0;
+FUN_02244DBC = 0x02244DBC;
+FUN_02244DC4 = 0x02244DC4;
+FUN_02244EF8 = 0x02244EF8;
+FUN_02244F18 = 0x02244F18;
+FUN_02244F24 = 0x02244F24;
+FUN_02244F2C = 0x02244F2C;
+FUN_02245088 = 0x02245088;
+FUN_02245114 = 0x02245114;
+FUN_02245190 = 0x02245190;
+FUN_02245198 = 0x02245198;
+FUN_022451F0 = 0x022451F0;
+FUN_0224525C = 0x0224525C;
+FUN_022452A4 = 0x022452A4;
+FUN_02245324 = 0x02245324;
+FUN_02245340 = 0x02245340;
+FUN_02245358 = 0x02245358;
+FUN_0224566C = 0x0224566C;
+FUN_022456E8 = 0x022456E8;
+FUN_02245844 = 0x02245844;
+FUN_02245910 = 0x02245910;
+FUN_02245F1C = 0x02245F1C;
+FUN_02245F4C = 0x02245F4C;
+FUN_02245FA0 = 0x02245FA0;
+FUN_022461A4 = 0x022461A4;
+FUN_022461B8 = 0x022461B8;
+FUN_0224666C = 0x0224666C;
+FUN_022466A0 = 0x022466A0;
+FUN_022466AC = 0x022466AC;
+FUN_02246F1C = 0x02246F1C;
+FUN_02247294 = 0x02247294;
+FUN_022472AC = 0x022472AC;
+FUN_02247544 = 0x02247544;
+FUN_02247614 = 0x02247614;
+FUN_02247728 = 0x02247728;
+FUN_02247808 = 0x02247808;
+FUN_02247970 = 0x02247970;
+FUN_02247A34 = 0x02247A34;
+FUN_022483BC = 0x022483BC;
+FUN_022483E0 = 0x022483E0;
+FUN_022483EC = 0x022483EC;
+FUN_02248724 = 0x02248724;
+FUN_0224884C = 0x0224884C;
+FUN_022488CC = 0x022488CC;
+FUN_022488EC = 0x022488EC;
+FUN_022488F4 = 0x022488F4;
+FUN_022488FC = 0x022488FC;
+FUN_0224891C = 0x0224891C;
+FUN_02248B54 = 0x02248B54;
+FUN_02248B58 = 0x02248B58;
+FUN_02248B5C = 0x02248B5C;
+FUN_02248B60 = 0x02248B60;
+FUN_02248B6C = 0x02248B6C;
+FUN_02248CC0 = 0x02248CC0;
+FUN_02248CD0 = 0x02248CD0;
+FUN_02248DF8 = 0x02248DF8;
+FUN_02248F70 = 0x02248F70;
+FUN_02248FE0 = 0x02248FE0;
+FUN_02249038 = 0x02249038;
+FUN_022490A0 = 0x022490A0;
+FUN_022491FC = 0x022491FC;
+FUN_022494C8 = 0x022494C8;
+FUN_02249508 = 0x02249508;
+FUN_02249668 = 0x02249668;
+FUN_022497E8 = 0x022497E8;
+FUN_02249E6C = 0x02249E6C;
+FUN_02249E78 = 0x02249E78;
+FUN_02249E84 = 0x02249E84;
+FUN_02249E90 = 0x02249E90;
+FUN_0224A310 = 0x0224A310;
+FUN_0224A528 = 0x0224A528;
+FUN_0224A7C8 = 0x0224A7C8;
+FUN_0224ABAC = 0x0224ABAC;
+FUN_0224B124 = 0x0224B124;
+FUN_0224B2C4 = 0x0224B2C4;
+FUN_0224B568 = 0x0224B568;
+FUN_0224B818 = 0x0224B818;
+FUN_0224B86C = 0x0224B86C;
+FUN_0224B9E0 = 0x0224B9E0;
+FUN_0224BBEC = 0x0224BBEC;
+FUN_0224BD90 = 0x0224BD90;
+FUN_0224C038 = 0x0224C038;
+FUN_0224C27C = 0x0224C27C;
+FUN_0224C520 = 0x0224C520;
+FUN_0224C678 = 0x0224C678;
+FUN_0224C6E8 = 0x0224C6E8;
+FUN_0224C6F4 = 0x0224C6F4;
+FUN_0224C700 = 0x0224C700;
+FUN_0224C8C8 = 0x0224C8C8;
+FUN_0224CA2C = 0x0224CA2C;
+FUN_0224CA54 = 0x0224CA54;
+FUN_0224CA58 = 0x0224CA58;
+FUN_0224CA88 = 0x0224CA88;
+FUN_0224CA94 = 0x0224CA94;
+FUN_0224CAA0 = 0x0224CAA0;
+FUN_0224CAB4 = 0x0224CAB4;
+FUN_0224CB30 = 0x0224CB30;
+FUN_0224CBB0 = 0x0224CBB0;
+FUN_0224CC24 = 0x0224CC24;
+FUN_0224CECC = 0x0224CECC;
+FUN_0224D14C = 0x0224D14C;
+FUN_0224D2E0 = 0x0224D2E0;
+FUN_0224D3E8 = 0x0224D3E8;
+FUN_0224D70C = 0x0224D70C;
+FUN_0224D76C = 0x0224D76C;
+FUN_0224D79C = 0x0224D79C;
+FUN_0224DCB8 = 0x0224DCB8;
+FUN_0224DD94 = 0x0224DD94;
+FUN_0224DDB8 = 0x0224DDB8;
+FUN_0224E554 = 0x0224E554;
+FUN_0224E764 = 0x0224E764;
+FUN_0224E7C4 = 0x0224E7C4;
+FUN_0224F12C = 0x0224F12C;
+FUN_02252534 = 0x02252534;
+FUN_02252538 = 0x02252538;
+FUN_022567E0 = 0x022567E0;
+SDK_AUTOLOAD_DTCM_START = 0x027E0000;
+SDK_STATIC_BSS_END = 0x021D74E0;
+gUnk027FFC20 = 0x027FFC20;